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 байт).
Форматы команд 99
Если по умолчанию взять в качестве адреса результата адрес одного из операн­дов (обычно второго), то можно обойтись без третьего адреса, и в итоге получаем двухадресный формат команды (рис. 2.41). Естественно, что в этом случае соот­ветствующий операнд после выполнения операции теряется.
Команду можно еще более сократить, перейдя к одноадресному формату (рис. 2.42), что возможно при выделении определенного стандартного места для хранения первого операнда и результата.' Обычно для этой цели используется спе­циальный регистр центрального процессора (ЦП), известный под названием ак­кумулятора, поскольку здесь аккумулируется результат.
Применение единственного регистра для хранения одного из операндов и ре­зультата является ограничивающим фактором, поэтому помимо аккумулятора ча­сто используют и другие регистры ЦП. Так как число регистров в ЦП невелико, для указания одного из них в команде достаточно иметь сравнительно короткое адресное поле. Соответствующий формат носит название полутораадресного или регистрового формата (рис. 2.43).
Наконец, если для обоих операндов указать четко заданное местоположение, а также в случае команд, не требующих операнда, можно получить нульадресный формат команды (рис. 2-44). ...........
Hosted by uCoz