Системы команд компьютеров

Команда – это упорядоченная совокупность битов, представляющая наименование операции, инициируемой командой, и адреса операндов, участвующих в выполнении операции. Основная характеристика команды – адресность, определяемая количеством адресов в команде. В зависимости от адресности команды подразделяются на 0-адресные (нульадресные), 1-адресные (одноадресные) и т. д. Длина команды в битах, количество полей, используемых для кодирования элементов команды (операций, адресов и признаков), и расположение полей в команде определяет формат команды. Форматы команд изображаются в виде (1.7). Выбор формата команд и, в частности, адресности зависит от большого числа факторов, важнейшими из которых являются: тип машинных элементов информации (слова и биты); длина слов; наличие регистровой памяти процессора; класс алгоритмов, для реализации которого предназначается компьютер; способы адресации, необходимые для эффективной обработки данных.

Эффективность системы команд. Эффективность системы команд, используемых в компьютере, определяется двумя основными показателями: затратами оборудования на хранения и обработку команд и затратами времени на реализацию программ. Основная доля затрат оборудования приходиться на память, используемую для хранения программ. Поэтому для минимизации затрат оборудования необходимо, в первую очередь, минимизировать количество информации, составляющей программу, т.е. выбрать такие форматы команд, которые позволяют закодировать алгоритм минимальным числом бит информации. Формат команд, используемых в компьютере, существенно сказывается на числе обращений к памяти в процессе вычислений и влияет на время выполнения программ.

В предыдущем разделе было сказано, что к 90-м годам XX века сокращенная система команд компьютеров RISC оказалась наиболее согласованной с уровнем технологии производства компьютеров общего применения. За счет микропрограммирования и программ операционной системы система команд процессора может быть сколь угодно расширена в любом желаемом направлении. В связи с этим рассмотрим только систему команд RISC.

Сокращенная система команд. В связи с большим различием в быстродействии процессора и быстродействия основной памяти в компьютерах общего применения стремятся по возможности уменьшить длину команд за счет сокращения числа битов, используемых для представления кодов операций, и числа битов в адресной части команд. Наиболее радикальный способ сокращения длины команд – ориентация большинства команд на обработку данных, хранимых в регистрах общего назначения процессора, и организация обмена данными между процессором и основной памятью с помощью небольшого числа команд. Итак, будем ориентироваться на каноническую структуру компьютера (см. рис. 1.2), в процессоре которого имеются N регистров общего назначения R0, R1, …, RN-1 и все команды программ и все данные размещены в памяти компьютера. Количество регистров ограничено и, как правило, равно 8, 16, 32, 64 и возможно более. Время чтения – записи слова из регистра составляет малую долю наносекунды, поскольку все регистры входят в состав сверхбольшой интегральной схемы процессора. Время обращения к памяти значительно больше и составляет как минимум 5 – 10 нс.

Минимальное количество команд, обеспечивающих загрузку слова в регистр из памяти и запись слова из регистра в память, равно двум:

LOAD A, Ri

и

STORE B, Rj ,

где LOAD – операция ЗАГРУЗИТЬ и STORE – операция ЗАПИСАТЬ, A и B – загружаемый в регистр Ri и записываемый в память по адресу Rj операнд соответственно и Ri и Rj –адреса регистров общего назначения. Для адресации памяти могут использоваться любые способы, но чаще всего адрес ячейки памяти является относительным и модифицируемым. Естественно, что можно расширить список команд загрузки за счет передачи между регистром и памятью байта, слов разной длины, чисел с плавающей запятой, чисел с обратным знаком и т. д. При этом увеличивается эффективность системы посылочных операций, но одновременно с этим увеличивается длина кода операции и, как следствие, длина команд.

Арифметические и логические операции выполняются исключительно над операндами, хранимыми в регистрах общего назначения. В компьютерах общего применения наиболее широко используется трехадресная система команд следующего вида:

ADD Ri, Rj, Rk ,

где ADD – операция сложения, Ri и Rjадреса операндов и Rk – адрес результата. В компьютерах могут использоваться двухадресные и одноадресные команды.

При использовании двухадресной системы команд и выполнении операций только над содержимым регистров задача вычисления значения C=A+B выполняется следующей последовательностью команд:

LOAD A, R1
LOAD B, R2
ADD R1, R2
STORE C, R2 ,

где операция сложения выполняется в виде R2:= R1 + R2 . Операции безусловного и условного переходов происходят, как правило, в одноадресном режиме, когда при наличии признаков перехода выполняется переход по заданному адресу, который и определяет адрес следующей команды программы, а при отсутствии признаков перехода будет выполнен переход к следующей команде программы.

Одноадресная система команд строится аналогично двухадресной. Однако для выполнения операций, в которых участвуют два операнда, необходимо располагать регистром общего назначения, в котором хранится один из операндов. В качестве такого регистра может использоваться регистр R0 , который называется итоговым регистром процессора и служит для размещения результатов всех операций. Естественно, что каждая арифметическая и логическая операция выполняются в следующем виде: R0 := R0 * Ri , где * – знак операции.

При использовании в компьютерах стекой адресации арифметические и логические операции становятся нульадрсными и состоят только из кода операции.

В компьютерах, производимых различными фирмами, используются слова разной длины, как правило, длиной 8, 16, 32 и 64 бита, различные способы адресации данных и систем кодирования операций. По этим причинам сокращенные системы команд оказываются крайне разнообразными.