Количество адресов в команде
В «максимальном» варианте в команде необходимо указать 4 компонента: адрес первого операнда, адрес второго операнда, адрес результата операции и адрес следующей команды. В итоге имеет место четырехадресный формат команды (рис. 2).
Код операции | Адрес первого операнда | Адрес второго операнда | Адрес результата | Адрес следующей команды |
Рис. 16.1. Четырехадресный формат команды
В фон-неймановских архитектурах необходимость в четвертом адресе отпадает, поскольку команды располагаются в оперативной памяти в порядке их выполнения, и адрес очередной команды может быть получен простым увеличением адреса текущей команды в счетчике команд. Это позволяет перейти к трехадресному формату команды (рис. 16.2). Требуется только добавить в систему команд архитектуры команды, способные изменять порядок вычислений.
Код операции | Адрес первого операнда | Адрес второго операнда | Адрес результата |
Рис. 16.2. Трехадресный формат команды
К сожалению, и в трехадресном формате длина команды может оказаться весьма большой. Так, если адрес ячейки оперативной памяти 32- разрядный, а длина кода операции — 8 разрядов, то длина команды составит 104 разряда (13 байт).
Если по умолчанию взять в качестве адреса результата адрес одного из операндов (обычно второго), то можно обойтись без третьего адреса, и в итоге получится двухадресный формат команды (рис. 16.3). Естественно, что в этом случае соответствующий операнд после выполнения операции теряется.
Код операции | Адрес первого операнда | Адрес второго операнда и результата |
Рис. 16.3. Двухадресный формат команды
Команду можно еще более сократить, перейдя к одноадресному формату (рис. 16.4), что возможно при выделении определенного стандартного места для хранения первого операнда и результата. Обычно для этой цели используется специальный регистр процессора, известный под названием аккумулятора, поскольку здесь аккумулируется результат.
Код операции | Адрес операнда |
Рис. 16.4. Одноадресный формат команды
Применение единственного регистра для хранения одного из операндов и результата является ограничивающим фактором, поэтому помимо аккумулятора часто используют и другие регистры процессора. Так как число регистров в процессоре невелико, для указания одного из них в команде достаточно иметь сравнительно короткое адресное поле. Соответствующий формат носит название полутораадресного или регистрового формата (рис. 16.5).
Код операции | Регистр | Адрес второго операнда |
Рис. 16.5. Полутораадресный формат команды
Наконец, если для обоих операндов указать четко заданное местоположение, а также в случае команд, не требующих операнда, можно получить нуль-адресный формат команды.
В современных архитектурах процессоров преобладают два подхода к выбору формата команд, а именно, формат команд переменной длины и формат команд фиксированной длины.
В архитектуре процессоров IA-32/64 был принят формат с переменной длиной команд. Это объяснялось обстоятельствами того времени, когда эта архитектура разрабатывалась. В изменившихся условиях, когда оперативная память (очень дорогостоящий ресурс компьютера во времена разработки архитектуры IA-32/64) существенно подешевела, такой подход стал тормозом при разработке структур процессоров.
В архитектурах процессоров, которые разрабатывались в новых условиях (когда оперативная память перестала быть определяющим фактором стоимости компьютера) был принят формат с фиксированной длиной команд.
Контрольные вопросы
1. Назовите основные типы команд
2. Охарактеризуйте SIMD-команды
3. Назовите основные типы команд управления ходом выполнения программы
4. Назовите основные составляющие формата команды
5. Как различают команды по числу адресов?
Дата добавления: 2015-09-28; просмотров: 1334;