Форматы команд 97
чае в состав кода команды вводится поле для задания способа адресации (СА), и обобщенный формат команды приобретает вид, показанный на рис. 2.38.
КОл
СА
Адоесная часть
где I— количество адресов в команде; RAколичество разрядов для записи i-ro адреса; к — разрядность поля кода операции; Rqa~ разрядность поля способа адресации.
В большинстве ВМ одновременно уживаются несколько различных форматов команд.
Разрядность полей команды
Как уже говорилось, в любой команде можно выделить операционную и адресную части. Длины соответствующих полей определяются различными факторами, ко­торые целесообразно рассмотреть по отдельности.
Разрядность поля кода операции
Количество двоичных разрядов, отводимых под код операции, выбирается так, чтобы можно было представить любую из операций. Если система команд предпо­лагает Л'копразличных операций, то минимальная разрядность поля кода опера­ции КОп определяется следующим образом:
^KOn=int(log2ATKOn),                                      (2-2)
где int означает округление в большую сторону до целого числа.
При заданной длине кода команды приходится искать компромисс между раз­рядностью поля кода операции и адресного поля. Большее количество возможных операций предполагает длинное поле кода операции, что ведет к сокращению ад­ресного поля, то есть к сужению адресного пространства. Для устранения этого противоречия иногда длину поля кода операции варьируют. Изначально под код операции отводится некое фиксированное число разрядов, однако для отдельных команд это поле расширяется за счет нескольких битов, отнимаемых у адресного поля. Так, например, может быть увеличено число различных команд пересылки данных. Необходимо отметить, что «урезание» части адресного поля ведет к со­кращению возможностей адресации, и подобный прием рекомендуется только в тех командах, где подобное сокращение может быть оправданным.
Разрядность адресной части,
В адресной части команды содержится информация о местонахождении исход­ных данных и месте сохранения результата операции. Обычно местонахождение
4 Зис.470
98 Глава 2. Архитектура системы команд
каждого из операндов и результата задается в команде путем указания адреса со­ответствующей ячейки основной памяти или номера регистра процессора. Прин­ципы использования информации из адресной части команды определяет система адресации. Система адресации задает число адресов в команде команды и принятые способы адресации.
Разрядности полей /?* и RCA рассчитываются по формулам:
А: =int(log2^);                                        (2.3)
i*CA=int(log2WCA),                                       (2.4)
где М — количество ячеек памяти, к которому можно обратиться с помощью г-го адреса; са количество способов адресации (int означает округление в большую сторону до целого числа).
Количество адресов в команде
Для определения количества адресов, включаемых в адресную часть, будем исполь­зовать термин адресность. В «максимальном» варианте необходимо указать три компонента: адрес первого операнда, адрес второго операнда и адрес ячейки, куда заносится результат операции. В принципе может быть добавлен еще один адрес, указывающий место хранения следующей инструкции. В итоге имеет место четы­рехадресный формат команды (рис. 2.39). Такой формат поддерживался в ВМ EDVAC, разработанной в 1940-хгодах[116].
В фон-неймановских ВМ необходимость в четвертом адресе отпадает, поскольку команды располагаются в памяти в порядке их выполнения, и адрес очередной команды может быть получен за счет простого увеличения адреса текущей коман­ды в счетчике команд. Это позволяет перейти к трехадресному формату команды (рис. 2.40). Требуется только добавить в систему команд ВМ команды, способные изменять порядок вычислений.
К сожалению, и в трехадресном формате длина команды может оказаться весь­ма большой. Так, если адрес ячейки основной памяти имеет длину 32 бита, а длина кода операции — 8 бит, то длина команды составит 104 бита (13 байт).
Hosted by uCoz