Форматы команд процессора: Форматы команд эвм

Содержание

Форматы команд процессора UltraSPARC III

Архитектура команд процессора UltraSPARC III состоит из 32-разрядных команд, выровненных в памяти. Команды очень просты. Каждая из них выполняет только одно действие. Типичная команда задает два регистра, в которых находятся исходные операнды, и один выходной регистр. Вместо одного из регистров команда может использовать константу со знаком. При выполнении команды LOAD два регистра (или один регистр и 13-разрядная константа) складываются вместе для определения считываемого адреса памяти. Данные оттуда записываются в другой указанный в команде регистр.

Изначально машина SPARC имела ограниченное число форматов команд (рис. 5.11). Со временем добавлялись новые форматы. Когда писалась эта книга, количество форматов уже было равно 31, и в планах было увеличение (долго ли осталось ждать того дня, когда появится реклама «самого сложного в мире RISC-процессора»?). Большинство новых вариантов были получены за счет отъема нескольких битов у какого-нибудь поля. Например, изначально для команд перехода использовался вариант 3 формата (с 22-разрядным смещением). Когда были добавлены команды прогнозируемых ветвлений, из 22 бит было изъято 3: один из них стал использоваться для прогнозирования (совершать или не совершать переход), а два оставшихся определяли, какой набор битов условного кода нужно использовать. В результате получилось 19-разрядное смещение. Приведем другой пример. Существует много команд преобразования типов данных (целых чисел — в числа с плавающей точкой и т. д.). Для большинства этих команд используется вариант lb формата, в котором поле непосредственной константы разбито на 5-разрядное поле, указывающее входной регистр, и 8-разрядное поле, предоставляющее дополнительные биты кода операции. Однако в большинстве команд все еще используются форматы, показанные на рисунке.

Первые 2 бита каждой команды помогают определить формат команды и сообщают аппаратному обеспечению, где найти оставшуюся часть кода операции, если она есть. В варианте 1а формата оба источника операндов представляют собой регистры; в варианте lb один источник — регистр, второй — константа в промежутке от -4096 до +4095. Бит 13 определяет один из этих двух форматов. (Биты нумеруются с 0.) В обоих случаях местом сохранения результатов всегда является регистр. Достаточный объем пространства имеется для 64 команд, некоторые из которых зарезервированы на будущее.

Поскольку все команды 32-разрядные, включить в команду 32-разрядную константу невозможно. Команда SETHI устанавливает 22 бита, оставляя пространство для другой команды, чтобы установить оставшиеся 10 бит. Это единственная команда такого необычного формата.

Рис. 5.11. Исходные форматы команд процессора SPARC

Для непрогнозируемых условных переходов используется вариант 3 формата, в котором поле условия определяет, что проверяется. Бит А нужен для того, чтобы избегать пустых операций при определенных условиях. Формат команд прогнозируемых ветвлений тот же, только с 19-разрядным смещением, как было сказано ранее.

Последний формат используется для команды вызова процедуры CALL. Эта команда особая, поскольку только в ней для определения адреса требуется 30 бит. В данной архитектуре существует один 2-разрядный код операции. Требуемый адрес — это целевой адрес, разделенный на четыре. Таким образом, относительно текущей команды диапазон составляет примерно 231 байт.

⇐Форматы команд процессора Pentium 4 || Оглавление || Форматы команд 8051⇒

Структура и форматы машинных команд : машинная операция


 

Машинная команда представляет собой код, определяющий операцию вычислительной машины и данные, участвующие в операции. Команда должна содержать в явной или неявной форме информацию об адресе результата операции, и об адресе следующей команды.

Машинная операция – это действия машины по преобразованию информации, выполняемые под воздействием одной команды.

Программа – последовательность команд, отображающих все действия, необходимые для решения задачи по некоторому алгоритму.

Машинный такт – период тактовой частоты работы процессора.
Машинный цикл­­ –­ количество машинных тактов, требуемых для выполнения одной команды.

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

  • арифметические операции над числами с фиксированной или плавающей точкой;
  • команды двоично-десятичной арифметики;
  • логические (поразрядные) операции;
  • пересылка операндов;
  • операции ввода-вывода;
  • передача управления;
  • управление работой центрального процессора.

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


Операционная часть содержит код, задающий вид операции (сложение, умножение, передача и т.д.).
Адресная часть содержит информацию об адресах операндов, результата операции и следующей команды.
Структура команды определяется составом, назначением и расположением полей в команде.

Формат команды – это структура команды с разметкой номеров разрядов, определяющих границы отдельных полей команды.

 

Возможные структуры машинных команд

Четырехадресная структура

содержит наиболее полную информацию о выполняемой операции, включает поле кода операции и четыре адреса для указания ячеек памяти двух операндов, ячейки результата операции, и ячейки, содержащей адрес следующей команды. Такой порядок выборки команд называется принудительным. Он использовался в первых моделях вычислительных машин, имеющих небольшое число команд и очень незначительный объем ОП, поскольку длина такой команды зависит от разрядности адресов операндов и результата.

Трехадресная структура

используется в вычислительных машинах, построенных так, что после выполнения команды по адресу K (команда занимает L ячеек памяти) выполняется команда по адресу K+L. Такой порядок выборки команд называется естественным. Он нарушается только специальными командами передачи управления. При естественном порядке выборки адрес следующей команды формируется в устройстве, называемом счетчик адреса команд. В этом случае команда становится трехадресной.

Двухадресная структура

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

Одноадресная структура

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

Безадресная структура фиксирует адреса обоих операндов и результата операции, например при работе со стековой памятью.

Обычно в вычислительной машине используется несколько форматов команд разной длины (чаще всего безадресные, одноадресные и двухадресные).


Назад: Представление данных и архитектура ЭВМ

1.6 Адресация в микропроцессорном вычислителе

Тема 1.6 Адресация в микропроцессорном вычислителе. Понятие адресного пространства. Методы полной и частичной дешифрации адресов

 

План:

1 Форматы команд

2 Способы адресации операндов

 

1 Форматы команд

Основная функция любого процессора – это выполнение команд. Типовая команда, в общем случае, должна указывать:

—     подлежащую выполнению операцию;

Рекомендуемые файлы

—     адреса исходных данных (операндов), над которыми выполняется операция;

—     адрес, по которому должен быть помещен результат операции.

В соответствии с этим команда состоит из двух частей: операционной и адрес ной (Рисунок 19).

 

 

Рисунок 19 — Структура команды

 

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

Длина команды. Это важнейшее обстоятельство, влияющее на организацию и емкость памяти, структуру шин, сложность и быстродействие ЦП. С одной стороны, удобно иметь в распоряжении мощный набор команд, то есть как можно больше кодов операций, операндов, способов адресации, и максимальное адресное пространство. Однако все это требует выделения большего количества разрядов под каждое поле команды, что приводит к увеличению ее длины. Вместе с тем, для ускорения выборки из памяти желательно, чтобы команда была как можно короче, а ее длина была равна или кратна ширине шины данных. Для упрощения аппаратуры и повышения быстродействия ЭВМ длину команды обычно выбирают кратной байту, поскольку в большинстве ЭВМ основная память организована в виде 8-битовых ячеек. В рамках системы команд одной ВМ могут использоваться разные форматы команд. Обычно это связано с применением различных способов адресации. В таком случае в состав кода команды вводится поле для задания способа адресации (СА), и обобщенный формат команды приобретает вид, показанный на рисунке 20. В большинстве ВМ одновременно уживаются несколько различных форматов команд.

 

 

Рисунок 20 — Обобщенный формат команды

 

Разрядность поля кода операции. Количество двоичных разрядов, отводимых под код операции, выбирается так, чтобы можно было представить любую из операций. При заданной длине кода команды приходится искать компромисс между разрядностью поля кода операции и адресного поля. Большее количество возможных операций предполагает длинное поле кода операции, что ведет к сокращению адресного поля, то есть к сужению адресного пространства. Для устранения этого противоречия иногда длину поля кода операции варьируют. Изначально под код операции отводится некое фиксированное число разрядов, однако для отдельных команд это поле расширяется за счет нескольких битов, отнимаемых у адресного поля.

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

Количество адресов в команде. Для определения количества адресов, включаемых в адресную часть, используют термин адресность. В «максимальном» варианте необходимо указать три компонента: адрес первого операнда, адрес второго операнда и адрес ячейки, куда заносится результат операции. В принципе может быть добавлен еще один адрес, указывающий место хранения следующей инструкции. В итоге имеет место четырехадресный формат команды (Рисунок 21).

 

 

 

 

Рисунок 21 — Четырехадресный формат команды

 

В фон-Неймановских ЭВМ необходимость в четвертом адресе отпадает, поскольку команды располагаются в памяти в порядке их выполнения, и адрес очередной команды может быть получен за счет простого увеличения адреса текущей команды в счетчике команд. Это позволяет перейти к трехадресному формату команд (Рисунок 22). Требуется только добавить в систему команд ЭВМ команды, способные изменять порядок вычислений.

 

 

 

 

Рисунок 22 — Трехадресный формат команды

 

К сожалению, и в трехадресном формате длина команды может оказаться весьма большой. Так, если адрес ячейки основной памяти имеет длину 32 бита, а длина кода операции — 8 бит, то длина команды составит 104 бита (13 байт).

Если по умолчанию взять в качестве адреса результата адрес одного из операндов (обычно второго), то можно обойтись без третьего адреса, и в итоге получаем двухадресный формат команды (Рисунок 23). Естественно, что в этом случае соответствующий операнд после выполнения операции теряется.

 

 

 

 

 

Рисунок 23 — Двухадресный формат команды

 

Команду можно еще более сократить, перейдя к одноадресному формату (Рисунок 24), что возможно при выделении определенного стандартного места для хранения первого операнда и результата. Обычно для этой цели используется специальный регистр центрального процессора (ЦП), известный под названием аккумулятора, поскольку здесь аккумулируется результат.

 

Рисунок 24 — Одноадресный формат команды

 

Применение единственного регистра для хранения одного из операндов и результата является ограничивающим фактором, поэтому помимо аккумулятора часто используют и другие регистры ЦП. Так как число регистров в ЦП невелико, для указания одного из них в команде достаточно иметь сравнительно короткое адресное поле. Соответствующий формат носит название полутораадресного или регистрового формата (Рисунок 25).

 

 

 

 

 

Рисунок 25- Полутораадресный формат команды

 

Наконец, если для обоих операндов указать четко заданное местоположение, а также в случае команд, не требующих операнда, можно получить нулъадресный формат команды (Рисунок 26).

 

 

Рисунок 26 — Нульадресный формат команды

 

В таком варианте адресная часть команды вообще отсутствует или не задействуется.

Выбор адресности команд. При выборе количества адресов в адресной части команды обычно руководствуются следующими критериями:

— емкостью запоминающего устройства, требуемой для хранения програм-мы;

— временем выполнения программы;

— эффективностью использования ячеек памяти при хранении программы.

­                     Адресность и емкость запоминающего устройства

Емкость запоминающего устройства для хранения программы ЕАможно оценить из соотношения:

 

,

 

где    NA — количество программ в программе;

RKразрядность команды,

А — индекс, указывающий адресность команд программы.

При выборе количества адресов по критерию «емкость ЗУ» предпочтение следует отдавать одноадресным командам.

Адресность и время выполнения программы. Время выполнения одной команды складывается из времени выполнения операции и времени обращения к памяти.

Для трехадресной команды последнее суммируется из четырех составляющих времени:

— выборки команды;

— выборки первого операнда;

— выборки второго операнда;

— записи в память результата.

Одноадресная команда требует двух обращений к памяти:

— выборки команды;

— выборки операнда.

Как видно, на выполнение одноадресной команды затрачивается меньше времени, чем на обработку трехадресной команды, однако для реализации одной трехадресной команды, как правило, нужно три одноадресных. Этих соображений тем не менее не достаточно, чтобы однозначно отдать предпочтение тому или иному варианту адресности. Определяющим при выборе является тип алгоритмов, на преимущественную реализацию которых ориентирована конкретная ЭВМ.

Возможные типы алгоритмов условно разделим на три группы:

—     последовательные;

—      параллельные;

—      комбинированные.

Двухадресные команды в плане времени реализации алгоритмов занимают промежуточное положение между одноадресными и трехадресными. Несколько лучшие показатели дают полуторадресные команды, в которых, с одной стороны, сохраняются преимущества одноадресных команд для последовательных алгоритмов, а с другой — повышается эффективность реализации параллельных и комбинированных алгоритмов.

 

­                     2 Способы адресации операндов

Приступая к рассмотрению способов адресации, вначале определим понятия «исполнительный» и «адресный код».

Исполнительным адресом операнда (Аисп) называется двоичный код номера ячейки памяти, служащей источником или приемником операнда. Этот код подается на адресные входы запоминающего устройства (ЗУ), и по нему происходит фактическое обращение к указанной ячейке. Если операнд хранится не в основной памяти, а в регистре процессора, его исполнительным адресом будет номер регистра.

Адресный код команды (Ак) — это двоичный код в адресном поле команды, из которого необходимо сформировать исполнительный адрес операнда.

В современных ЭВМ исполнительный адрес и адресный код, как правило, не совпадают, и для доступа к данным требуется соответствующее преобразование. Способ адресации — это способ формирования исполнительного адреса операнда по адресному коду команды. Способ адресации существенно влияет на параметры процесса обработки информации. Чтобы устройство управления вычислительной машины могло определить, какой именно способ адресации принят в данной команде, в разных ВМ используются различные приемы. Часто разным способам адресации соответствуют и разные коды операции. Другой подход — это добавление в состав команды специального поля способа адресации, содержимое которого определяет, какой из способов адресации должен быть применен. Иногда в команде имеется нескольких полей — по одному на каждый адрес. Отметим, что возможен также вариант, когда в команде вообще отсутствует адресная информация, то есть имеет место неявная адресация. При неявной адресации адресного поля либо просто нет, либо оно содержит не все необходимые адреса — отсутствующий адрес подразумевается кодом операции. Так, при исключении из команды адреса результата подразумевается, что результат помещается на место второго операнда. Неявная адресация применяется достаточно широко, поскольку позволяет сократить длину команды.

Выбор способов адресации является одним из важнейших вопросов разработки системы команд и всей ВМ в целом.

Непосредственная адресация. При непосредственной адресации (НА) в адресном поле команды вместо адреса содержится непосредственно сам операнд (Рисунок 27). Этот способ может применяться при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры.

 

Рисунок 27 — Непосредственная адресация

 

Когда операндом является число, оно обычно представляется в дополнительном коде. При записи в регистр, имеющий разрядность, превышающую длину непосредственного операнда, операнд размещается в младшей части регистра, а оставшиеся свободными позиции заполняются значением знакового бита операнда.

Помимо того, что в адресном поле могут быть указаны только константы, еще одним недостатком данного способа адресации является то, что размер непосредственного операнда ограничен длиной адресного поля команды, которое в большинстве случаев меньше длины машинного слова.

Прямая адресация. При прямой или абсолютной адресации (ПА) адресный код прямо указывает номер ячейки памяти, к которой производится обращение (Рисунок 28), то есть адресный код совпадает с исполнительным адресом.

 

­                      

­          

­          

­          

­          

­         Рисунок 28 — Прямая адресация

 

При всей простоте использования способ имеет существенный недостаток — ограниченный размер адресного пространства, так как для адресации к памяти большой емкости нужно «длинное» адресное поле. Однако более существенным несовершенством можно считать то, что адрес, указанный в команде, не может быть изменен в процессе вычислений (во всяком случае, такое изменение не рекомендуется). Это ограничивает возможности по произвольному размещению программы в памяти.

Косвенная адресация. Одним из путей преодоления проблем, свойственных прямой адресации, может служить прием, когда с помощью ограниченного адресного поля команды указывается адрес ячейки, в свою очередь, содержащей полноразрядный адрес операнда (Рисунок 29). Этот способ известен как косвенная адресация (КА). Запись (Ак) означает содержимое ячейки, адрес которой указан в скобках.

При косвенной адресации содержимое адресного поля команды остается неизменным, в то время как косвенный адрес в процессе выполнения программы можно изменять. Это позволяет проводить вычисления, когда адреса операндов заранее неизвестны и появляются лишь в процессе решения задачи. Дополнительно такой прием упрощает обработку массивов и списков, а также передачу параметров подпрограммам.

 

­          

­         Рисунок 29 — Косвенная адресация

 

Недостатком косвенной адресации является необходимость в двухкратном обращении к памяти: сначала для извлечения адреса операнда, а затем для обращения к операнду (ТКА = 2t3y). Сверх того задействуется лишняя ячейка памяти для хранения исполнительного адреса операнда.

Регистровая адресация. Регистровая адресация (РА) напоминает прямую адресацию. Различие состоит в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр процессора (Рисунок 30). Идентификатор регистра в дальнейшем будем обозначать буквой R. Обычно размер адресного поля в данном случае составляет три или четыре бита, что позволяет указать соответственно на один из 8 или 16 регистров общего назначения (РОН).

Двумя основными преимуществами регистровой адресации являются: короткое адресное поле в команде и исключение обращений к памяти. Малое число РОН позволяет сократить длину адресного поля команды, то есть СРА << СПА. Кроме того,

 

 

 

 

 

 

Рисунок 30 — Регистровая адресация

 

ТРА = tР0Н, где tРОН — время выборки операнда из регистра общего назначения, при чем tРОН << 2t3у. К сожалению, возможности по использованию регистровой адресации ограничены малым числом РОН в составе процессора.

Косвенная регистровая адресация. Косвенная регистровая адресация (КРА) представляет собой косвенную адресацию, где исполнительный адрес операнда хранится не в ячейке основной памяти, а в регистре процессора. Соответственно, адресное поле команды указывает не на ячейку памяти, а на регистр (Рисунок 31).

 

 

Рисунок 31 — Косвенная регистровая адресация

 

Достоинства и ограничения косвенной регистровой адресации те же, что и у обычной косвенной адресации, но благодаря тому, что косвенный адрес хранится не в памяти, а в регистре, для доступа к операнду требуется на одно обращение к памяти меньше.

Адресация со смещением. При адресации со смещением исполнительный адрес формируется в результате суммирования содержимого адресного поля команды с содержимым одного или нескольких регистров процессора (Рисунок 32). Адресация со смещением предполагает, что адресная часть команды включает в себя как минимум одно поле к). В нем содержится константа, смысл которой в разных вариантах адресации со смещением может меняться. Константа может представлять собой некий базовый адрес, к которому добавляется хранящееся в регистре смещение. Допустим и прямо противоположный подход: базовый адрес находится в регистре процессора, а в поле Ак указывается смещение относительно этого адреса. В некоторых процессорах для реализации определенных вариантов адресации со смещением предусмотрены специальные регистры, например базовый или индексный. Использование таких регистров

 

­                      

­         Рисунок 32 — Адресация со смещением

 

предполагается по умолчанию, поэтому адресная часть команды содержит только поле Ак. Если же составляющая адреса может располагаться в произвольном регистре общего назначения, то для указания конкретного регистра в команду включается дополнительное поле R (при составлении адреса более чем из двух составляющих в команде будет несколько таких полей). Еще одно поле R может появиться в командах, где смещение перед вычислением исполнительного адреса умножается на масштабный коэффициент. Такой коэффициент заносится в один из РОН, на который и указывает это дополнительное поле. В наиболее общем случае адресация со смещением подразумевает наличие двух адресных полей: Аки R.

В рамках адресации со смещением имеется еще один вариант, при котором исполнительный адрес вычисляется не суммированием, а конкатенацией (присоединением) составляющих адреса. Здесь одна составляющая представляет собой старшую часть исполнительного адреса, а вторая — младшую.

Ниже рассматриваются основные способы адресации со смещением, каждый из которых, впрочем, имеет собственное название.

Относительная адресация. При относительной адресации (ОА) для получения исполнительного адреса операнда содержимое подполя Лккоманды складывается с содержимым счетчика команд (Рисунок 33). Таким образом, адресный код в команде представляет собой смещение относительно адреса текущей команды. Следует отметить, что в момент вычисления исполнительного адреса операнда в счетчике команд может уже быть сформирован адрес следующей команды, что нужно учитывать при выборе величины смещения. Обычно подполе Актрактуется как двоичное число в дополнительном коде.

Адресация относительно счетчика команд базируется на свойстве локальности, выражающемся в том, что большая часть обращений происходит к ячейкам, расположенным в непосредственной близости от выполняемой команды. Это позволяет сэкономить на длине адресной части команды, поскольку разрядность подполя Лкможет быть небольшой. Главное достоинство данного способа адресации состоит в том, что он делает программу перемещаемой в памяти:

 

­          

­         Рисунок 33 — Относительная адресация

 

Независимо от текущего расположения программы в адресном пространстве взаимное положение команды и операнда остается неизменным, поэтому адресация операнда остается корректной.

Базовая регистровая адресация. В случае базовой регистровой адресации (БРА) регистр, называемый базовым, содержит полноразрядный адрес, а подполе Ассмещение относительно этого адреса. Ссылка на базовый регистр может быть явной или неявной. В некоторых ЭВМ имеется специальный базовый регистр и его использование является неявным, то есть подполе R в команде отсутствует (рисунок 34).

 

 

Рисунок 34 — Базовая регистровая адресация с базовым регистром

 

Более типичен случай, когда в роли базового регистра выступает один из регистров общего назначения (РОН), тогда его номер явно указывается в подполе R команды (Рисунок 35).

Базовую регистровую адресацию обычно используют для доступа к элементам массива, положение которого в памяти в процессе вычислений может меняться. В базовый регистр заносится начальный адрес массива, а адрес элемента массива указывается в подполе Ас команды в виде смещения относительно начального адреса массива. Достоинство данного способа адресации в том, что смещение имеет меньшую длину, чем полный адрес, и это позволяет сократить длину адресного поля команды. Короткое смещение расширяется до полной длины исполнительного адреса путем добавления слева битов, совпадающих со значением знакового разряда смещения.

 

 

       Рисунок 35 — Базовая регистровая адресация

  с использованием одного из РОН

 

Индексная адресация. При индексной адресации (ИА) подполе Ассодержит адрес ячейки памяти, а регистр (указанный явно или неявно) — смещение относительно этого адреса. Как видно, этот способ адресации похож на базовую регистровую адресацию. Поскольку при индексной адресации в поле Аснаходится полноразрядный адрес ячейки памяти, играющий роль базы, длина этого поля больше, чем при базовой регистровой адресации. Тем не менее, вычисление исполнительного адреса операнда производится идентично (Рисунок 36, 37).

 

 

 

 

 

 

Рисунок 36 — Индексная адресация с индексным регистром

 

­          

­          

­          

­          

­          

­         Рисунок 37 — Индексная адресация с использованием одного из РОН

 

Индексная адресация предоставляет удобный механизм для организации итеративных вычислений. Пусть, например, имеется массив чисел, расположенных в памяти последовательно, начиная с адреса N, и мы хотим увеличить на единицу все элементы данного массива. Для этого требуется извлечь каждое число из памяти, прибавить к нему 1 и вернуть обратно, а последовательность исполнительных адресов будет следующей: N, NI, N + 2 и т.д., вплоть до последней ячейки, занимаемой рассматриваемым массивом. Значение N берется из подполя Аскоманды, а в выбранный регистр, называемый индексным регистром, сначала заносится 0. После каждой операции содержимое индексного регистра увеличивается на 1.

Следует особо отметить, что система команд многих ВМ предоставляет возможность различным образом сочетать базовую и индексную адресации в качестве дополнительных способов адресации.

Страничная адресация. Страничная адресация (СТА) предполагает разбиение адресного пространства на страницы. Страница определяется своим начальным адресом, выступающим в качестве базы. Старшая часть этого адреса хранится в специальном регистре регистре адреса страницы (РАС). В адресном коде команды указывается смещение внутри страницы, рассматриваемое как младшая часть исполнительного адреса. Исполнительный адрес образуется конкатенацией (присоединением) Аск содержимому РАС, как показано на рисунке 38. На рисунке символ || обозначает операцию конкатенации.

 

 

Рисунок 38 — Страничная адресация

 

Блочная адресация. Блочная адресация используется в командах, для которых единицей обработки служит блок данных, расположенных в последовательных ячейках памяти. Этот способ очень удобен при работе с внешними запоминающими устройствами и в операциях с векторами. Для описания блока обычно берется адрес ячейки, где хранится первый или последний элемент блока, и общее количество элементов блока, заданное числом байтов или ячеек. Вместо длины блока может использоваться специальный признак «конец блока», помещаемый за последним элементом блока.

Стековая адресация. Данный вид адресации был рассмотрен при описании общей схемы микропроцессора в теме 1.3.

 

Вывод:

Таким образом, любая типовая команда, в общем случае, должна указывать подлежащую выполнению операцию; адреса исходных данных (операндов), над которыми выполняется операция; адрес, по которому должен быть помещен результат операции. В соответствии с этим команда состоит из двух частей: операционной и адрес ной. Формат команды определяет ее структуру, то есть количество двоичных разрядов, отводимых под всю команду, а также количество и расположение отдельных полей команды.

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

 

­                     Контрольные вопросы:

1       Что такое формат команды?

2       Что указывается в команде процессора?

Лекция «Введение в дисциплину» также может быть Вам полезна.

3       Перечислите форматы команд процессора.

4       Объяснить этапы выполнения трехадресной команды.

5       Перечислить способы адресации в командах.

6       Пояснить относительную и базовую регистровую адресацию.

 

 

Адресация в МП (Лекция) | МПС

МПС

 

ПЛАН ЛЕКЦИИ

1. Форматы команд

2. Способы адресации операндов

 

1. Форматы команд

Основная функция любого процессора – это выполнение команд. Типовая команда, в общем случае, должна указывать:

—     подлежащую выполнению операцию;

—     адреса исходных данных (операндов), над которыми выполняется операция;

—     адрес, по которому должен быть помещен результат операции.

В соответствии с этим команда состоит из двух частей: операционной и адресной.

 

Операционная часть

Адресная часть

Рис. 1. Структура команды

 

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

Длина команды. Это важнейшее обстоятельство, влияющее на организацию и емкость памяти, структуру шин, сложность и быстродействие ЦП. С одной стороны, удобно иметь в распоряжении мощный набор команд, то есть как можно больше кодов операций, операндов, способов адресации, и максимальное адресное пространство. Однако все это требует выделения большего количества разрядов под каждое поле команды, что приводит к увеличению ее длины. Вместе с тем, для ускорения выборки из памяти желательно, чтобы команда была как можно короче, а ее длина была равна или кратна ширине шины данных. Для упрощения аппаратуры и повышения быстродействия ЭВМ длину команды обычно выбирают кратной байту, поскольку в большинстве ЭВМ основная память организована в виде 8-битовых ячеек. В рамках системы команд одной ВМ могут использоваться разные форматы команд. Обычно это связано с применением различных способов адресации. В таком случае в состав кода команды вводится поле для задания способа адресации (СА), и обобщенный формат команды приобретает вид, показанный на рисунке 20. В большинстве ВМ одновременно уживаются несколько различных форматов команд.

 

КОп

СА

Адресная часть

Рис. 2. Обобщенный формат команды

 

Разрядность поля кода операции. Количество двоичных разрядов, отводимых под код операции, выбирается так, чтобы можно было представить любую из операций. При заданной длине кода команды приходится искать компромисс между разрядностью поля кода операции и адресного поля. Большее количество возможных операций предполагает длинное поле кода операции, что ведет к сокращению адресного поля, то есть к сужению адресного пространства. Для устранения этого противоречия иногда длину поля кода операции варьируют. Изначально под код операции отводится некое фиксированное число разрядов, однако для отдельных команд это поле расширяется за счет нескольких битов, отнимаемых у адресного поля.

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

Количество адресов в команде. Для определения количества адресов, включаемых в адресную часть, используют термин адресность. В «максимальном» варианте необходимо указать три компонента: адрес первого операнда, адрес второго операнда и адрес ячейки, куда заносится результат операции. В принципе может быть добавлен еще один адрес, указывающий место хранения следующей инструкции. В итоге имеет место четырехадресный формат команды.

 

Операция

Адреса

Код операции

1-й операнд

2-й операнд

Результат

Следующая

команда

Рис. 3. Четырехадресный формат команды

 

В Фон-Неймановских ЭВМ необходимость в четвертом адресе отпадает, поскольку команды располагаются в памяти в порядке их выполнения, и адрес очередной команды может быть получен за счет простого увеличения адреса текущей команды в счетчике команд. Это позволяет перейти к трехадресному формату команд. Требуется только добавить в систему команд ЭВМ команды, способные изменять порядок вычислений.

 

Операция

Адреса

 

Код операции

1-й операнд

2-й операнд

Результат

Рис. 4. Трехадресный формат команды

 

К сожалению, и в трехадресном формате длина команды может оказаться весьма большой. Так, если адрес ячейки основной памяти имеет длину 32 бита, а длина кода операции — 8 бит, то длина команды составит 104 бита (13 байт).

Если по умолчанию взять в качестве адреса результата адрес одного из операндов (обычно второго), то можно обойтись без третьего адреса, и в итоге получаем двухадресный формат команды. Естественно, что в этом случае соответствующий операнд после выполнения операции теряется.

 

Операция

Адреса

Код операции

1-й операнд

2-й операнд/ Результат

Рис. 5. Двухадресный формат команды

 

Команду можно еще более сократить, перейдя к одноадресному формату (Рисунок 24), что возможно при выделении определенного стандартного места для хранения первого операнда и результата. Обычно для этой цели используется специальный регистр центрального процессора (ЦП), известный под названием аккумулятора, поскольку здесь аккумулируется результат.

 

 

Операция

Адреса

Код операции

1-й или 2-й операнд

Рис. 6. Одноадресный формат команды

 

Применение единственного регистра для хранения одного из операндов и результата является ограничивающим фактором, поэтому помимо аккумулятора часто используют и другие регистры ЦП. Так как число регистров в ЦП невелико, для указания одного из них в команде достаточно иметь сравнительно короткое адресное поле. Соответствующий формат носит название полутораадресного или регистрового формата.

 

Операция

Адреса

Код операции

Регистр

2-й операнд

 

Рис. 7. Полутораадресный формат команды

 

Наконец, если для обоих операндов указать четко заданное местоположение, а также в случае команд, не требующих операнда, можно получить нулъадресный формат команды.

 

 

Операция

Код операции

Рис. 8. Нульадресный формат команды

 

В таком варианте адресная часть команды вообще отсутствует или не задействуется.

Выбор адресности команд. При выборе количества адресов в адресной части команды обычно руководствуются следующими критериями:

— емкостью запоминающего устройства, требуемой для хранения программы;

— временем выполнения программы;

— эффективностью использования ячеек памяти при хранении программы.

Адресность и емкость запоминающего устройства

Емкость запоминающего устройства для хранения программы ЕАможно оценить из соотношения:

 

,

 

где       NA - количество программ в программе;

RK - разрядность команды,

А — индекс, указывающий адресность команд программы.

При выборе количества адресов по критерию «емкость ЗУ» предпочтение следует отдавать одноадресным командам.

Адресность и время выполнения программы. Время выполнения одной команды складывается из времени выполнения операции и времени обращения к памяти.

Для трехадресной команды последнее суммируется из четырех составляющих времени:

— выборки команды;

— выборки первого операнда;

— выборки второго операнда;

— записи в память результата.

Одноадресная команда требует двух обращений к памяти:

— выборки команды;

— выборки операнда.

Как видно, на выполнение одноадресной команды затрачивается меньше времени, чем на обработку трехадресной команды, однако для реализации одной трехадресной команды, как правило, нужно три одноадресных. Этих соображений тем не менее не достаточно, чтобы однозначно отдать предпочтение тому или иному варианту адресности. Определяющим при выборе является тип алгоритмов, на преимущественную реализацию которых ориентирована конкретная ЭВМ.

Возможные типы алгоритмов условно разделим на три группы:

—     последовательные;

—      параллельные;

—      комбинированные.

Двухадресные команды в плане времени реализации алгоритмов занимают промежуточное положение между одноадресными и трехадресными. Несколько лучшие показатели дают полуторадресные команды, в которых, с одной стороны, сохраняются преимущества одноадресных команд для последовательных алгоритмов, а с другой — повышается эффективность реализации параллельных и комбинированных алгоритмов.

 

2. Способы адресации операндов

Приступая к рассмотрению способов адресации, вначале определим понятия «исполнительный» и «адресный код».

Исполнительным адресом операнда (Аисп) называется двоичный код номера ячейки памяти, служащей источником или приемником операнда. Этот код подается на адресные входы запоминающего устройства (ЗУ), и по нему происходит фактическое обращение к указанной ячейке. Если операнд хранится не в основной памяти, а в регистре процессора, его исполнительным адресом будет номер регистра.

Адресный код команды (Ак) — это двоичный код в адресном поле команды, из которого необходимо сформировать исполнительный адрес операнда.

В современных ЭВМ исполнительный адрес и адресный код, как правило, не совпадают, и для доступа к данным требуется соответствующее преобразование. Способ адресации — это способ формирования исполнительного адреса операнда по адресному коду команды. Способ адресации существенно влияет на параметры процесса обработки информации. Чтобы устройство управления вычислительной машины могло определить, какой именно способ адресации принят в данной команде, в разных ВМ используются различные приемы. Часто разным способам адресации соответствуют и разные коды операции. Другой подход — это добавление в состав команды специального поля способа адресации, содержимое которого определяет, какой из способов адресации должен быть применен. Иногда в команде имеется нескольких полей — по одному на каждый адрес. Отметим, что возможен также вариант, когда в команде вообще отсутствует адресная информация, то есть имеет место неявная адресация. При неявной адресации адресного поля либо просто нет, либо оно содержит не все необходимые адреса — отсутствующий адрес подразумевается кодом операции. Так, при исключении из команды адреса результата подразумевается, что результат помещается на место второго операнда. Неявная адресация применяется достаточно широко, поскольку позволяет сократить длину команды.

Выбор способов адресации является одним из важнейших вопросов разработки системы команд и всей ВМ в целом.

Непосредственная адресация. При непосредственной адресации (НА) в адресном поле команды вместо адреса содержится непосредственно сам операнд. Этот способ может применяться при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры.

 

КОп

СА

Непосредственный операнд

Рис. 9. Непосредственная адресация

 

Когда операндом является число, оно обычно представляется в дополнительном коде. При записи в регистр, имеющий разрядность, превышающую длину непосредственного операнда, операнд размещается в младшей части регистра, а оставшиеся свободными позиции заполняются значением знакового бита операнда.

Помимо того, что в адресном поле могут быть указаны только константы, еще одним недостатком данного способа адресации является то, что размер непосредственного операнда ограничен длиной адресного поля команды, которое в большинстве случаев меньше длины машинного слова.

Прямая адресация. При прямой или абсолютной адресации (ПА) адресный код прямо указывает номер ячейки памяти, к которой производится обращение (Рис. 10), то есть адресный код совпадает с исполнительным адресом.

 

Рис. 10. Прямая адресация

 

При всей простоте использования способ имеет существенный недостаток — ограниченный размер адресного пространства, так как для адресации к памяти большой емкости нужно «длинное» адресное поле. Однако более существенным несовершенством можно считать то, что адрес, указанный в команде, не может быть изменен в процессе вычислений (во всяком случае, такое изменение не рекомендуется). Это ограничивает возможности по произвольному размещению программы в памяти.

Косвенная адресация. Одним из путей преодоления проблем, свойственных прямой адресации, может служить прием, когда с помощью ограниченного адресного поля команды указывается адрес ячейки, в свою очередь, содержащей полноразрядный адрес операнда (Рис. 11). Этот способ известен как косвенная адресация (КА). Запись (Ак) означает содержимое ячейки, адрес которой указан в скобках.

При косвенной адресации содержимое адресного поля команды остается неизменным, в то время как косвенный адрес в процессе выполнения программы можно изменять. Это позволяет проводить вычисления, когда адреса операндов заранее неизвестны и появляются лишь в процессе решения задачи. Дополнительно такой прием упрощает обработку массивов и списков, а также передачу параметров подпрограммам.

 

Рис. 11. Косвенная адресация

 

Недостатком косвенной адресации является необходимость в двукратном обращении к памяти: сначала для извлечения адреса операнда, а затем для обращения к операнду (ТКА = 2t3y). Сверх того задействуется лишняя ячейка памяти для хранения исполнительного адреса операнда.

Регистровая адресация. Регистровая адресация (РА) напоминает прямую адресацию. Различие состоит в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр процессора (Рис. 12). Идентификатор регистра в дальнейшем будем обозначать буквой R. Обычно размер адресного поля в данном случае составляет три или четыре бита, что позволяет указать соответственно на один из 8 или 16 регистров общего назначения (РОН).

Двумя основными преимуществами регистровой адресации являются: короткое адресное поле в команде и исключение обращений к памяти. Малое число РОН позволяет сократить длину адресного поля команды, то есть СРА << СПА. Кроме того,

 

Рис. 12. Регистровая адресация

 

ТРА = tР0Н, где tРОН — время выборки операнда из регистра общего назначения, при чем tРОН << 2t3у. К сожалению, возможности по использованию регистровой адресации ограничены малым числом РОН в составе процессора.

Косвенная регистровая адресация. Косвенная регистровая адресация (КРА) представляет собой косвенную адресацию, где исполнительный адрес операнда хранится не в ячейке основной памяти, а в регистре процессора. Соответственно, адресное поле команды указывает не на ячейку памяти, а на регистр.

 

Рис. 13. Косвенная регистровая адресация

 

Достоинства и ограничения косвенной регистровой адресации те же, что и у обычной косвенной адресации, но благодаря тому, что косвенный адрес хранится не в памяти, а в регистре, для доступа к операнду требуется на одно обращение к памяти меньше.

Адресация со смещением. При адресации со смещением исполнительный адрес формируется в результате суммирования содержимого адресного поля команды с содержимым одного или нескольких регистров процессора (Рис. 14). Адресация со смещением предполагает, что адресная часть команды включает в себя как минимум одно поле к). В нем содержится константа, смысл которой в разных вариантах адресации со смещением может меняться. Константа может представлять собой некий базовый адрес, к которому добавляется хранящееся в регистре смещение. Допустим и прямо противоположный подход: базовый адрес находится в регистре процессора, а в поле Ак указывается смещение относительно этого адреса. В некоторых процессорах для реализации определенных вариантов адресации со смещением предусмотрены специальные регистры, например базовый или индексный.

Рис. 14. Адресация со смещением

 

Использование таких регистров предполагается по умолчанию, поэтому адресная часть команды содержит только поле Ак. Если же составляющая адреса может располагаться в произвольном регистре общего назначения, то для указания конкретного регистра в команду включается дополнительное поле R (при составлении адреса более чем из двух составляющих в команде будет несколько таких полей). Еще одно поле R может появиться в командах, где смещение перед вычислением исполнительного адреса умножается на масштабный коэффициент. Такой коэффициент заносится в один из РОН, на который и указывает это дополнительное поле. В наиболее общем случае адресация со смещением подразумевает наличие двух адресных полей: Аки R.

В рамках адресации со смещением имеется еще один вариант, при котором исполнительный адрес вычисляется не суммированием, а конкатенацией (присоединением) составляющих адреса. Здесь одна составляющая представляет собой старшую часть исполнительного адреса, а вторая — младшую.

Ниже рассматриваются основные способы адресации со смещением, каждый из которых, впрочем, имеет собственное название.

Относительная адресация. При относительной адресации (ОА) для получения исполнительного адреса операнда содержимое подполя Лккоманды складывается с содержимым счетчика команд. Таким образом, адресный код в команде представляет собой смещение относительно адреса текущей команды. Следует отметить, что в момент вычисления исполнительного адреса операнда в счетчике команд может уже быть сформирован адрес следующей команды, что нужно учитывать при выборе величины смещения. Обычно подполе Актрактуется как двоичное число в дополнительном коде.

Адресация относительно счетчика команд базируется на свойстве локальности, выражающемся в том, что большая часть обращений происходит к ячейкам, расположенным в непосредственной близости от выполняемой команды. Это позволяет сэкономить на длине адресной части команды, поскольку разрядность подполя Лкможет быть небольшой. Главное достоинство данного способа адресации состоит в том, что он делает программу перемещаемой в памяти:

Рис. 15. Относительная адресация

 

Независимо от текущего расположения программы в адресном пространстве взаимное положение команды и операнда остается неизменным, поэтому адресация операнда остается корректной.

Базовая регистровая адресация. В случае базовой регистровой адресации (БРА) регистр, называемый базовым, содержит полноразрядный адрес, а подполе Ассмещение относительно этого адреса. Ссылка на базовый регистр может быть явной или неявной. В некоторых ЭВМ имеется специальный базовый регистр и его использование является неявным, то есть подполе R в команде отсутствует.

 

Рис. 16. Базовая регистровая адресация с базовым регистром

 

Более типичен случай, когда в роли базового регистра выступает один из регистров общего назначения (РОН), тогда его номер явно указывается в подполе R команды.

Базовую регистровую адресацию обычно используют для доступа к элементам массива, положение которого в памяти в процессе вычислений может меняться. В базовый регистр заносится начальный адрес массива, а адрес элемента массива указывается в подполе Ас команды в виде смещения относительно начального адреса массива. Достоинство данного способа адресации в том, что смещение имеет меньшую длину, чем полный адрес, и это позволяет сократить длину адресного поля команды. Короткое смещение расширяется до полной длины исполнительного адреса путем добавления слева битов, совпадающих со значением знакового разряда смещения.

 

 

       Рис. 17. Базовая регистровая адресация

  с использованием одного из РОН

 

Индексная адресация. При индексной адресации (ИА) подполе Ассодержит адрес ячейки памяти, а регистр (указанный явно или неявно) — смещение относительно этого адреса. Как видно, этот способ адресации похож на базовую регистровую адресацию. Поскольку при индексной адресации в поле Аснаходится полноразрядный адрес ячейки памяти, играющий роль базы, длина этого поля больше, чем при базовой регистровой адресации. Тем не менее, вычисление исполнительного адреса операнда производится идентично.

Рис. 18. Индексная адресация с индексным регистром

Рис. 19. Индексная адресация с использованием одного из РОН

 

Индексная адресация предоставляет удобный механизм для организации итеративных вычислений. Пусть, например, имеется массив чисел, расположенных в памяти последовательно, начиная с адреса N, и мы хотим увеличить на единицу все элементы данного массива. Для этого требуется извлечь каждое число из памяти, прибавить к нему 1 и вернуть обратно, а последовательность исполнительных адресов будет следующей: N, N +  I, N + 2 и т.д., вплоть до последней ячейки, занимаемой рассматриваемым массивом. Значение N берется из подполя Аскоманды, а в выбранный регистр, называемый индексным регистром, сначала заносится 0. После каждой операции содержимое индексного регистра увеличивается на 1.

Следует особо отметить, что система команд многих ВМ предоставляет возможность различным образом сочетать базовую и индексную адресации в качестве дополнительных способов адресации.

Страничная адресация. Страничная адресация (СТА) предполагает разбиение адресного пространства на страницы. Страница определяется своим начальным адресом, выступающим в качестве базы. Старшая часть этого адреса хранится в специальном регистре регистре адреса страницы (РАС). В адресном коде команды указывается смещение внутри страницы, рассматриваемое как младшая часть исполнительного адреса. Исполнительный адрес образуется конкатенацией (присоединением) Аск содержимому РАС, как показано далее. На рисунке символ || обозначает операцию конкатенации.

 

Рис. 20. Страничная адресация

 

Блочная адресация. Блочная адресация используется в командах, для которых единицей обработки служит блок данных, расположенных в последовательных ячейках памяти. Этот способ очень удобен при работе с внешними запоминающими устройствами и в операциях с векторами. Для описания блока обычно берется адрес ячейки, где хранится первый или последний элемент блока, и общее количество элементов блока, заданное числом байтов или ячеек. Вместо длины блока может использоваться специальный признак «конец блока», помещаемый за последним элементом блока.

Стековая адресация. Данный вид адресации был рассмотрен при описании общей схемы микропроцессора.

Иллюстрированный самоучитель по теории операционных систем › Машинные языки › Форматы команд машинного языка [страница — 32] | Самоучители по программированию

Форматы команд машинного языка

Команда центрального процессора состоит из кода операции и одного или нескольких операндов (объектов, над которыми совершается операция). В зависимости от числа операндов, команды делятся на безадресные (не имеющие операндов или имеющие неявно указанные), одноадресные (производящие операцию над одним объектом или одним явно и одним или несколькими неявно указанными), двух- и трехадресные. Встречаются архитектуры, в которых есть команды и с большим числом операндов, но это экзотика.

Примеры безадресных команд без операнда:

  • NOP – No OPeration, отсутствие операции.
  • HALT – Остановка процессора

Примеры безадресных команд с неявно указанными операндами:

  • RETURN – Возврат из подпрограммы. Выталкивает из стека адрес возврата и помещает его в счетчик команд.
  • WDR – WatchDog Reset, сброс сторожевого таймера микроконтроллера.
  • ADD – Вытолкнуть из стека два значения, сложить их и протолкнуть результат в стек.
  • SCS – Skip if Carry Set, пропустить следующую команду, если бит переноса в слове состояния установлен.

Примеры одноадресных команд с одним операндом:

  • INC x – INCrement, добавить к операнду 1 и сохранить результат по тому же адресу.
  • TST х TeST – Установить в слове состояния флаги знака и равенства нулю в соответствии со значением операнда.

Примеры одноадресных команд с неявным операндом:

  • ADD x [, Асс] – Сложить операнд с аккумулятором и сохранить результат в аккумуляторе.
  • PUSH х – Протолкнуть значение операнда в стек.
  • CALL x – Вызов подпрограммы, сохраняет адрес следующей команды в стеке и передает управление по указанному адресу.
  • BNEQ х – Передает управление по указанному адресу, если в слове состояния установлен флаг равенства нулю.

Примеры двух- и трехадресных команд:

  • MOVE x, у – Присвоить значение объекта х объекту у.
  • ADD x, у – Сложить х и у, поместить результат в у.
  • ADD x, у, z – Сложить х и у и поместить результат в z.

Четырехадресная команда:

DIV х, у, z, w – выполняет деление х на у, помещает частное в z, а остаток – в w.

Шестиадресная команда:

INDEX b, I, h, s, i, a – Вычисляет адрес элемента массива, расположенного по адресу b, с нижней и верхней границами индекса I и b соответственно и размером элемента s.

Операнд i – индекс элемента, а – место, куда следует поместить вычисленный адрес.

Количество адресов иногда используют и для общей характеристики системы команд. Двухадресной называют систему команд, в которой команды имеют максимум два операнда, трехадресной – максимум три. Нередко, впрочем, вместо максимального количества операндов, адресность системы команд определяют по количеству операндов у наиболее «ходовых» команд – сложения и вычитания. Таким образом, VAX, из системы команд которого взяты примеры четырех – и шестиадресных команд, часто относят к трехадресным архитектурам.

Одноадресные системы команд обычно используют в качестве неявно заданного операнда выделенный регистр, так называемый аккумулятор, или стек. Такие архитектуры называют, соответственно, аккумуляторными и стековыми.

Одноадресную аккумуляторную архитектуру имеют микроконтроллеры семейства PIC фирмы Microchip. Большинство современных процессоров имеют двух – и трехадресные системы команд.

На примере стековой команды ADD мы видели, что многие из команд стековой архитектуры могут обойтись вообще без явно указанных операндов, однако команды проталкивания значений переменных в стек и выталкивания их оттуда все-таки необходимы, поэтому все стековые архитектуры одно-, а не безадресные.

Стеки привлекательны, во-первых, тем, что не нуждающиеся в операндах команды могут иметь очень короткий код операции (как правило, достаточно одного байта) и, во-вторых, тем, что работающая с ними программа представляет собой арифметическое выражение, записанное в обратной польской нотации – когда мы сначала пишем операнды, а потом знак операции. Например, операция а+b в этой записи выглядит как ab+ (в программе – push a; push b; add;).

Задача преобразования привычных нам арифметических выражений в обратную польскую запись легко формализуется, поэтому стековые процессоры долгое время позиционировались как «ориентированные на языки высокого уровня». Позже, впрочем, выяснилось, что более сложная логика разбора арифметических выражений позволяет проводить разного рода оптимизации (сокращать введенные лишь для удобства записи переменные, заменять выражения, которые всегда дают одно и то же значение, на константы, выносить повторяющиеся вычисления из тела цикла и т. д.).

Аппаратно реализованные стековые архитектуры – в наше время редкость. Из относительно современных процессоров, имевших коммерческий успех, можно назвать Transputer фирмы Inmos (в настоящее время эти микропроцессоры выпускаются фирмой SGC-Thomson).

Шире всего стековая архитектура распространена в байт-кодах или, как это еще называют, системах команд виртуальных машин. Байт-код – это промежуточное представление программы, используемое интерпретатором, чтобы избежать лексического и синтаксического анализа программы на этапе исполнения. Исполнение байт-кода осуществляется не процессором, а программой-интерпретатором. Таким образом, реализуются многие современные языки программирования – многочисленные диалекты языка BASIC, Lisp, SmallTalk, Fort (этот язык любопытен тем, что сам имеет стековый синтаксис), наконец Java.

Некоторые реализации интерпретаторов этих языков используют так называемую JIT-компиляцию (Just In Time, точно в момент исполнения), когда перед исполнением байт-код компилируется в систему команд физического процессора. Такая технология позволяет достичь для «интерпретируемых» программ производительности, не уступающей производительности компилированного кода.

Первым промышленным применением JIT-компиляции была система AS/400 фирмы IBM. В настоящее время JIT широко используется в реализациях Java. JIT-компиляция привлекательна тем, что позволяет исполнять один и тот же код на разнообразных процессорах без потерь (или почти без потерь) скорости.

Лекция 17. Форматы команд процессора — презентация на Slide-Share.ru 🎓

1

Первый слайд презентации: Лекция 17. Форматы команд процессора

1 Лекция 17. Форматы команд процессора Формат команды — это структура кода команды, понимаемая процессором. Рассмотрим принципы построения кода команд на примере системы команд х86 для 16-разрядных процессоров 8086 (для простоты). Это базовая система команд для всех процессоров Форматы команд можно разделить на 4 группы: форматы команд без операндов (или операнды по умолчанию ), форматы команд с операндами форматы команд прямых переходов и вызовов специфические форматы

Изображение слайда

2

Слайд 2: Обозначения полей в байтах команды

2 Обозначения полей в байтах команды cop — фиксированный код операции mod — используется при адресации операнда в памяти reg — код регистра ( sr — для сегментного регистра) r / m — код регистра или способа адресации памяти disp — поле для размещения числовой величины при указании внутрисегментного адреса операнда: disp — h – ст.байт поля, disp — l – младший байт data — непосредственный операнд: data — h — ст.байт, data — l -мл. байт — обязательные байты в формате команды — возможные байты

Изображение слайда

3

Слайд 3: Формат команд без операндов ( или операнды по умолчанию)

3 Формат команд без операндов ( или операнды по умолчанию)

Изображение слайда

4

Слайд 4: Форматы команд с одним операндом

4 Форматы команд с одним операндом

Изображение слайда

5

Слайд 5: Форматы команд с двумя операндами

5 Форматы команд с двумя операндами

Изображение слайда

6

Слайд 6: 1-й байт команды : содержит код операции ( COP )

6 1-й байт команды : содержит код операции ( COP ) Фиксированный код, который определяет саму команду. Байт COP может еще содержать битовые признаки для процессора: w – бит разрядности операндов: 0 – байты, 1 — слова d – местонахождение результата: 0 — в памяти;1 — в регистре. s – говорит процессору о необходимости расширить со знаком однобайтный непосредственный операнд до формата слова: 0 — расширение не нужно, 1 — расширение нужно Пример : какими будут биты w, d, s в машинном коде команд? add bx, ds:adres ; w= 1, d= 1 add ds:adres, bl ; w= 0, d= 0 add dx, 3 ; w =1, s = 1 add dl, 3 ; w= 0, s= 0 add dx, 3f1h ; w = 1, s= 0

Изображение слайда

7

Слайд 7: 2-й байт : байт режима адресации

Имеет два возможных формата: 1) в 2-операндных командах типа: регистр–регистр, регистр–память или память – регистр 2) в командах с одним операндом (регистр/память) и в командах с непосредственным операндом Поле reg за «ненадобностью» заполнено фиксированным кодом, который называют «вторичный СОР»

Изображение слайда

8

Слайд 8: Поле Mod

Дает процессору информацию о месте размещения операндов в команде. mod = 11 : операнда в памяти нет В этом случае поля reg, sr, r / m содержат коды регистров, где размещены операнды: при w = 0 — это коды 8- разрядных регистров при w = 1 — это коды 16- разрядных регистров

Изображение слайда

9

Слайд 9

mod  11 : означает, что есть операнд в памяти. Тогда, поле r / m содержит код способа внутрисегментной адресации этого операнда. Коды способов адресации в памяти !! Внимание: Код r / m =110 кодирует два способа адресации. Для их отличия используется mod: при r / m =110 и mod =00 – это «прямая адресация» и прямой адрес всегда занимает 2-х байтное поле disp (т.к. 16-разрядная внутрисегм.адресация ) при r / m =110 и mod =01 или 1 0 – это косвенная адресация вида [ BP + disp ]

Изображение слайда

10

Слайд 10: Поле Disp

10 Поле Disp При прямой адресации: поле disp содержит 16- разрядный прямой внутрисегментный адрес. То есть поле всегда двухбайтное. При косвенной адресации: поле disp используется для размещения числового значения смещения при задании косвенного адреса. Например: [bx -1 ], [si+bx +23Fh ] Конкретную длину поля disp в команде в этом случае процессор определяет по значению битов поля mod : mod = 0 0 — disp в команде отсутствует mod = 0 1 — disp занимает 1 байт mod = 1 0 — disp занимает 2 байта

Изображение слайда

11

Слайд 11: Адресация операнда в памяти: «префикс сегмента»

11 Адресация операнда в памяти: «префикс сегмента» Если при задании адреса операнда используется указатель сегмента, отличный от DS, в формате команды перед байтом СОР должен находиться байт «префикс сегмента». Например: add bl, es : [ si ] Формат байта «префикса сегмента»: sr – код сегментного регистра 0 0 1 sr 1 1 0

Изображение слайда

12

Слайд 12: Пример. Создать машинный код команды ADD AX, ds: [ SI -2 ]. Дать подробные пояснения

12 Пример. Создать машинный код команды ADD AX, ds: [ SI -2 ]. Дать подробные пояснения 1. Определимся с форматом команды. Команда с операндами «регистр – память». Следовательно, ее формат может быть такой (от 2 до 4 байтов): 2. Смысл и значения битов в необходимых полях машинного кода: с op — код операции. К од ADD = 000000 (из Таблицы кодов операций) бит d — кто первый операнд в команде. Р егистр. Следовательно =1 бит w – разрядность операндов. С лова. Следовательно =1 mod (2 бита) – есть ли операнд в памяти и нужно ли поле disp. О перанд в памяти есть, его адрес задается косвенно с числовым смещением -2 10. Для размещения -2 10 в команде достаточно 1-байта поля disp. Следовательно = 0 1 reg (3 бита) – код регистра. К од АХ=000 (из Таблицы кодов регистров) r / m (3 бита) — код способа адресации операнда в памяти. К освенная адресация вида [ SI + disp ], ее код =100 (из Таблицы кодов способов адресации) disp — l – байт для размещения – 2 10. Значения битов =11111110 3. Итог. Машинный код 3-байтной команды: В bin : 00000011 01000100 11111110 В hex : 03 44 FE

Изображение слайда

13

Слайд 13

Занесем машинный код команды 03 44 FE в кодовый сегмент «руками» в Отладчике побайтно через нижнее окно отображения памяти, начиная с адреса CS:010E. Если наш машинный код правильный, Отладчик правильно покажет эту команду в символическом виде в окне кодового сегмента

Изображение слайда

14

Последний слайд презентации: Лекция 17. Форматы команд процессора

Создать машинный код команды : sub bx, -4 1. Определимся с форматом команды. Команда с операндами «регистр – непосред c твенный операнд». Следовательно, ее формат может быть такой (от 2 до 4 байтов): 2. Смысл и значения битов в необходимых полях машинного кода: с op — код операции. Код команды sub = 100000 (из Таблицы кодов операций) бит s — надо ли расширять непоср.операнд ? Надо, следовательно =1 бит w – разрядность операндов. Слова. Следовательно =1 mod (2 бита) – есть ли операнд в памяти и нужно ли поле disp ?. Операнда в памяти в команде НЕТ, disp не нужен. Следовательно mod= 11 cop (3 бита) – вторичный коп = 10 1 (см. Таблицу кодов операций) r / m (3 бита) – код регистра. Код BX =0 11 (из Таблицы кодов регистров) date — l – непосредственный операнд (-4). Значения битов =11111100 3. Итог. Машинный код 3-байтной команды: В bin : 100000 11 111 01 011 11111100 В hex : 83 EB FC

Изображение слайда

Форматы команд микропроцессора INTEL.

Компьютеры Форматы команд микропроцессора INTEL.

просмотров — 405

Регистры общего назначения (РОНы) разбиты на две группы:

1. группа HL, состоящая из регистров AX, BX, CX, DX, которые предназначены для хранения данных и допускают раздельную адресацию их старших Н и младших L половин.

2. группа PI, содержащая указательные регистры BP, SP и индексные регистры SI, DI, в которых обычно храниться адресная информация.

РОНы

15 8 7 0
AH AL АХ — аккумулятор
CH CL СХ
DH DL DX
DH BL ВХ
SP Адресный регистр
BP Адресный регистр
SI Адресный регистр
DI Адресный регистр

Команды могут адресовать один или два операнда. В двухоперандных командах один из операндов должен обязательно располагаться в регистре, поскольку имеются команды типа регистр-регистр, регистр-память, память регистр, но команда типа память-память отсутствует, за исключением команд пересылки цепочки байт ил слов.

Формат двухоперандной (двуядерной) команды имеет следующий вид:

Cop dw md reg r/m Disp L Disp H

1 2 3 4

Первый байт команды содержит Cop – код операции и два однобитовых поля: d- бит направления передачи и w- длина операнда.

При d=1, то осуществляется передача операнда или результата операции в регистр, номер которого задается полем reg второго байта команды.

При d=0, то осуществляется передача операнда или результата из адресуемого полем reg регистра.

Поле W идентифицирует тип(разрядность) операндов:

В случае если w=1, то команда оперирует с 2-хбайтным словом.

w=0, команда оперирует с 1 байтом.

2-ой байт – постбайт, определяет участвующие в операции регистры или регистр и ячейку памяти. постбайт состоит из 3-х полей:

md – режим, показывающий как интерпретируется поле r/m для нахождения первого операнда.

Reg – регистр, используется в 2 –х операндных командах.

R/m – регистр/память

Поле reg определяет операнд, который обязательно находится в регистре микропроцессора и считается вторым операндом. Поле r/m определяет операнд, который может находится в регистре или памяти и условно считается первым. Поле reg используется только для указания регистра в двухоперандных командах. В случае если в команде один операнд, то он идентифицируется полем R/m, а поле reg отсутствует. Вместо поля reg в этом случае используется расширение кода операции.

Поле md(модальность) показывает, как интерпретируется поле R/m для нахождения первого операнда:

В случае если md=11, то операнд находится в регистре,номер которого задан полем R/m. При других значениях md операнд находится в памяти.

Когда адресуется память, то поле md определяет вариант использования смещения disp, находящегося в 3 и 4 байте.

Disp – смещение в команде, интерпретируемое как целое число со знаком.

md=00 смещение disp отсутствует.

md=01 disp =disp L, команда содержит 8 бит , смещение D8.

md=10 disp= dispH dispL, команда содержит 16 бит, смещение D16.

Режимы адресации (вычисление эффективного адреса ЕА)

Поле md
  R/m md=00 disp=0 md=01 dispH=dispL=D8 md=10 disp=dispH dispL
W=1 W=0
BX+SI BX+SI+D8 BX+SI+D16 AX AL
BX+DI BX+DI+D8 BX+DI+D16 CX CL
BP+SI BP+SI+D8 BP+SI+D16 DX DL
BP+DI BP+DI+D8 BP+DI+D16 BX BL
SI SI+D8 SI+D16 SP AH
DI DI+D8 DI+D16 BP CH
DI6 BP+D8 BP+D16 SI DH
BX BX+D8 BX+D16 DI BH

Приведенные в таблице правила имеют одно исключение, позволяющее реализовать прямую(абсолютную) адресацию: если md=D16=dispH dispL.

Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, имеется три варианта интерпретации поля md и восœемь вариантов интерпретации поля r/m , что дает 24 варианта вычисления эффективного адреса ЕА.

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

— регистровая адресация. Операнд находится в одном из РОНов или сегментном регистре. Регистр может быть определœен в байте кода операции или постбайте (3-битными полями) reg и r/m при условии md=11. Команды, оперирующие содержимым регистров, короткие и быстрые, так как не требуют вычисления эффективного адреса ЕА, и обращения к памяти.

— Непосредственная адресация. Непосредственные операнды — ϶ᴛᴏ const длиной 8 или 16 бит, которые размещаются в последних байтах команды.

Cop sw md cop r/m Disp L Disp H Data L Data H

Так как 2-ой операнд размещается в команде, то поле reg отсутствует, но вместо него используется расширение кода операции cop. Отсутствует бит направления d, так как результат операции можно поместить только на место первого операнда. Место этого бита d занимает бит S, который является признаком использования одного байта для задания непосредственного операнда при работе со словами.

Поля S и W интерпретируются следующим образом:

SW=Х0, один байт данных Data L

SW=01, один байт данных Data H Data L

SW=11, один байт данных, который автоматически расширяется со знаком до 16 бит.

— прямая адресация. Эффективным адресом ЕА является содержание байта в смещении disp команды. Реализуется при использовании постбайта с полями md=00 и r/m=10.

— Косвенно-регистровая адресация. Эффективный адрес ЕА равен содержимому одного из регистров SI, DI, BX при md=00 и r/m=100, 101, 111.

— Базовая адресация ЕА вычисляется суммированием содержимого регистров BX и BP со смещением disp при md=01 и 10, r/m=100 и 111.

— Индексная адресация ЕА вычисляется суммированием индексных регистров SI и DI и смещения disp при md=01 и 10 при r/m=100, 101.

— Базовая индексная адресация. ЕА равно сумме содержимого базовых регистров BX или BP, индексного регистра SI или DI и смещения disp. Реализуется при md не равного 11 и r/m=000, 001, 010, 011.


Читайте также


  • — Программируемый контроллер прерываний фирмы Intel .

    Программируемый контроллер прерываний обеспечивает управление восьми уровневыми векторными приоритетными прерываниями, то есть один контроллер прерываний обеспечивает приемную обработку до восьми сигналов прерывания. Структурная схема контроллера прерываний имеет… [читать подробенее]


  • — Intel i486, Pentium, P6

    Архітектура і система команд мікропроцесорів WhileCh in [ ‘ + ‘, ‘-‘] do begin Begin Begin Else End Else If Ch in [‘а’, ‘b’, ‘с’] then Begin Else End Else If Ch in [ ‘a’, ‘b’ , ‘c’] then Begin Begin While Ch in [‘ + ‘, ‘-‘] do begin Begin Т;NextCh; T; end; end; Далее записываем распознаватель… [читать подробенее]


  • — ОСНОВНЫЕ НАПРАВЛЕНИЯ РАБОТЫ ФИРМЫ INTEL ПО РАЗРАБОТКЕ МПС

    Кроме разработок в области создания центральных процессоров фир­ма Intel ведет большую работу по созданию процессоров, ориентирован­ных на решение специализированных задач и ряда задач, требующих реального времени, что предъявляет дополнительные требования к… [читать подробенее]


  • — Разработка приложений на платформе Intel Atom

    Что общего в разработке приложений для разных мобильных устройств, на что надо особо обратить внимание? Это — ограниченияпо производительности и энергопотреблению, беспроводное взаимодействие, малые размеры и формы. С какой основной проблемой сталкиваются сегодня… [читать подробенее]


  • — Компьютерный континуум Intel и процессор Intel-Atom

    Введение Лекция 1Основу курса составили лекции, прочитанные авторами летом и осенью 2012 года для слушателей Летней и Осенней школы Лаборатория СПРИНТ (Системного ПРограммирования и ИНформационных Технологий) СПбГУ, созданной и финансируемой при поддержке… [читать подробенее]


  • — Структура команд процессора INTEL 80х86

    Дизассемблирование основано на знании формата инструкций процессора и правил их интерпретации процессором. Формат инструкций архитектуры Intel приведен на рис.1. Префикс Опкод ModR / M SIB Смещение Непосред-     Mod Reg / Opcode R/ M Scale Index Base   … [читать подробенее]


  • — МПК на основе Intel 80×86

    Карта памяти управляющей программы Рассмотрим примерные карты памяти управляющей программы, т.е. расположение ее отдельных частей в адресном пространстве МПК. Вариант карты памяти для МПК на основе Intel 80×86 представлен на рис. 11. Таблица векторов прерываний… [читать подробенее]


  • — INTELLECTUAL PROPERTY INFRINGEMENTS

    Text A UNIT 8 Glossary account (n) счет activity (n) деятельность advantage (n) преимущество, выгода, польза assets (n) активы, имущество bulk(n) большое количество cash (n) наличные (деньги) criminal (n) преступник, уголовник criminal (adj) преступный, уголовный … [читать подробенее]


  • — Unit 2 Contract Civil Law and Intellectual Property

    Unit 1 Civil Law Part V Private Law Unit 5 Punishment Unit 4 Criminal Justice Unit 3 Crime Investigation Unit 2 Crimes and Criminals Unit 1 Law of Crimes Part IV Criminal Law and Criminal Proceedings Unit 5 Review on Law-Enforcement Agencies in the UK and USA Unit 4 Review on Law-Enforcing in Ukraine Unit 3 Lawyer Unit 2 Judiciary in the UK and in the USA Unit 1 Judiciary in Ukraine Part III Judicial Systems and Law… [читать подробенее]


  • — Speak on the types of intellectual property.

    III. PRACTICE AND EXPERIENCE Translate the text into Ukrainian. Write a list of measures that a legislator should take to protect intellectual property in the Internet. Speak on types of intellectual property laws and their functions. Fill in the table with the words from text C) History of the intellectual property laws. Match the titles to each paragraph II. DEVELOPMENTa) The definition of the intellectual property; b) A balance… [читать подробенее]


  • Компьютерная организация | Форматы команд (команда с нулевым, одним, двумя и тремя адресами)

    Компьютер выполняет задачу на основе предоставленной инструкции. Обучение на компьютере состоит из групп, называемых полями. Эти поля содержат разную информацию, так как для компьютеров все находится в 0 и 1, поэтому каждое поле имеет разное значение, в зависимости от того, что ЦП решает, что выполнять. Наиболее распространенные поля:

    • Поле Operation определяет операцию, которая должна выполняться как сложение.
    • Адресное поле, которое содержит расположение операнда, т. Е. Регистр или ячейку памяти.
    • Поле режима, которое определяет, как должен быть основан операнд.

    Инструкция имеет переменную длину в зависимости от количества адресов, которые она содержит. Как правило, организация ЦП бывает трех типов в зависимости от количества полей адреса:

    1. Организация с единым накопителем
    2. Организация общего регистра
    3. Организация стека

    В первой организации операция выполняется с использованием специального регистра, называемого аккумулятор.Во-вторых, несколько регистров используются для целей вычислений. В третьей организации работа на основе стека, в связи с чем он не содержит никакого адресного поля. Необязательно применять только одну организацию, мы обычно видим смесь различных организаций.

    В зависимости от номера адреса инструкции классифицируются как:


    Обратите внимание, что мы будем использовать выражение X = (A + B) * (C + D), чтобы продемонстрировать процедуру.

    1. Инструкции нулевого адреса —

    Компьютер на основе стека не использует поле адреса в инструкции.Чтобы сначала оценить выражение, оно преобразуется в обратную польскую нотацию, то есть в постфиксную нотацию.

     Выражение: X = (A + B) * (C + D)
    Постфиксный: X = AB + CD + *
    TOP означает вершину стека
    M [X] - любая ячейка памяти 

    PUSH A TOP = A
    PUSH B TOP = B
    ADD TOP = A + B
    PUSH C TOP = C
    PUSH D TOP = D
    ADD TOP = C + D
    MUL TOP = (C + D) * (A + B)
    POP X M [X] = TOP

    2.Инструкции с одним адресом —
    Здесь используется подразумеваемый регистр АККУМУЛЯТОРА для обработки данных. Один операнд находится в аккумуляторе, а другой — в регистре или ячейке памяти. Подразумевается, что ЦП уже знает, что один операнд находится в аккумуляторе, поэтому указывать его нет необходимости.

     Выражение: X = (A + B) * (C + D)
    AC аккумуляторный
    M [] - любая ячейка памяти
    M [T] - временное местоположение 
    НАГРУЗКА A AC = M [A]
    ADD B AC = AC + M [B]
    STORE T M [T] = AC
    НАГРУЗКА C AC = M [C]
    ADD D AC = AC + M [D]
    MUL T AC = AC * M [T]
    STORE X M [X] = AC

    3.Две инструкции адреса —
    Это обычное дело в коммерческих компьютерах. Здесь в инструкции можно указать два адреса. В отличие от ранее в одной адресной инструкции, результат сохранялся в аккумуляторе, здесь результат может храниться в разных местах, а не только в аккумуляторах, но для представления адреса требуется большее количество битов.

    Здесь адрес назначения также может содержать операнд.

     Выражение: X = (A + B) * (C + D)
    R1, R2 - регистры
    M [] - любая ячейка памяти 
    MOV R1, A R1 = M [A]
    ADD R1, B R1 = R1 + M [B]
    MOV R2, C R2 = C
    ADD R2, D R2 = R2 + D
    MUL R1, R2 R1 = R1 * R2
    MOV X, R1 M [X] = R1

    4.Три адресные инструкции —
    Здесь есть три адресных поля для указания регистра или ячейки памяти. Создаваемые программы намного короче по размеру, но количество битов на инструкцию увеличивается. Эти инструкции значительно упрощают создание программы, но это не означает, что программа будет работать намного быстрее, потому что теперь инструкции содержат только больше информации, а каждая микрооперация (изменение содержимого регистра, загрузка адреса в адресной шине и т. Д.) Будет выполняться за один цикл. Только.

     Выражение: X = (A + B) * (C + D)
    R1, R2 - регистры
    M [] - любая ячейка памяти 
    ADD R1, A, B R1 = M [A] + M [B]
    ADD R2, C, D R2 = M [C] + M [D]
    MUL X, R1, R2 M [X] = R1 * R2

    Организация по информатике | Формат инструкции

    Домой » Организация компьютерных наук

    В этой статье мы узнаем о концепциях формата инструкций в компьютерной организации .В зависимости от наличия операндов ALU в этой статье также прописываются типы организации CPU.
    (Отправлено Абхишеком Катарией 5 июля 2018 г.)

    Формат команды

    1. Формат команды описывает внутреннюю структуру (схему компоновки) битов инструкции в терминах ее составных частей.
    2. Формат команды должен включать код операции, а адрес зависит от доступности конкретных операндов.
    3. Формат может быть неявным или явным, что указывает режим адресации для каждого операнда.
    4. Разработка формата команд очень сложна. Как мы знаем, компьютер использует множество инструкций. Есть много проблем проектирования, которые влияют на учебный план, некоторые из них приведены ниже:
      • Длина инструкции: Это самая основная проблема дизайна формата. Чем длиннее будет инструкция, тем больше времени потребуется для ее получения.
      • Размер памяти: Если требуется адресовать больший диапазон памяти, то в поле адреса потребуется больше битов.
      • Организация памяти: Если система поддерживает виртуальную память, то диапазон памяти, который должен быть адресован инструкцией, больше, чем физическая память.
      • Длина передачи в память: Длина инструкции должна быть равна длине шины данных или быть кратной ей.
    5. Форматы команд подразделяются на 5 типов в зависимости от типа организации ЦП.Организация ЦП делится на три типа в зависимости от наличия операндов ALU, которые здесь следующие:

    1) СТЕК ЦП

    В этой организации операнды ALU выполняются только для данных стека. Это означает, что в стеке всегда требуются обе операции ALU. Тот же самый стек также используется в качестве места назначения. В стеке мы можем выполнять операции вставки и удаления только на одном конце, который называется вершиной стека. Таким образом, в этом формате нет необходимости в адресе, потому что в этом TOS становится местоположением по умолчанию.

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


    2) ЦП аккумулятора

    В этой организации один из операндов ALU всегда присутствует в аккумуляторе. Тот же аккумулятор также используется в качестве пункта назначения. Другой операнд ALU присутствует либо в регистре, либо в памяти.В конструкции процессора присутствует только один аккумулятор, поэтому он становится местоположением по умолчанию.

    Вычислимый формат команд ЦП накопителя — Одноадресный формат команд .

    3) Общий регистр ЦП

    В зависимости от количества возможных регистров в процессорах, архитектура делится на два типа:

    1. Ссылки регистр-память CPU
    2. Ссылки регистров ЦП

    i) Ссылка на регистр-память ЦП

    В этой архитектуре процессоры поддерживают меньшее количество регистров.Поэтому размер файла реестра невелик. В этой организации всегда требуется первый операнд ALU в регистре. Тот же регистр также может использоваться как место назначения. Второй операнд ALU присутствует либо в регистре, либо в памяти. Вычислимым форматом команд регистра для обращения к памяти ЦП является Двухадресный формат команд .

    ii) Ссылка регистр-регистр ЦП

    В этой архитектуре процессоры поддерживают количество регистров, поэтому размер файла регистров большой.В этой организации операнды ALU выполняются только для данных регистров, что означает, что в регистре требуются оба операнда ALU. Из-за того, что в ЦП присутствует большее количество регистров, для хранения результата используется отдельный регистр. Вычислимым форматом команд ЦП регистр-регистр является трехадресный формат команд.

    Формат четырехадресной инструкции

    Этот формат содержит 4 разных адресных поля с кодом операции. Поскольку ПК используется в качестве обязательного регистра в конструкции ЦП, который используется для хранения адреса следующей инструкции.Таким образом, четырехкомпонентный формат не используется.

    ОБЪЯВЛЕНИЕ

    Самые популярные проблемы / задачи по кодированию интервью!


    ОБЪЯВЛЕНИЕ


    Формат инструкции

    | Encyclopedia.com

    формат инструкции Инструкция обычно состоит из комбинации кода операции и некоторого способа определения операнда, чаще всего по его местоположению или адресу в памяти, хотя могут существовать инструкции, не относящиеся к памяти. Некоторые коды операций имеют дело с более чем одним операндом; расположение этих операндов может быть указано с использованием любой из множества схем адресации.

    Классически количество адресных ссылок использовалось, чтобы указать что-то об архитектуре конкретного компьютера. В некоторых форматах команд и архитектурах компьютеров количество ссылок на операнды может быть фиксированным; в других число варьируется. В первом случае описания форматов включают одноадресный , двухадресный , трехадресный и (теперь редко) четырехадресный . Пример (символически) одноадресной инструкции:

    add x i.е.

    добавить содержимое адреса x

    к содержимому аккумулятора;

    Сумма

    остается в аккумуляторе.

    Пример трехадресной инструкции:

    добавить x, y, z, т.е.

    добавить содержимое адреса x

    к содержимому адреса y;

    Сумма

    размещается в ячейке z.

    В некоторых случаях последний адрес является адресом следующей инструкции, которая должна быть выполнена. Возможность указать этот адрес была важна, когда были заметны вращающиеся (барабанные) основные запоминающие устройства.Таким образом, двухадресная инструкция, такая как

    добавляет x, y, т.е.

    добавляет содержимое адреса x

    к содержимому адреса y;

    сумма помещается по адресу y,

    может стать

    добавить x, y, z т.е.

    добавить содержимое адреса x

    к содержимому адреса y;

    Сумма

    размещается по адресу y;

    следующая инструкция берется

    с адреса z.

    Последняя может называться либо трехадресной инструкцией, либо инструкцией с двумя плюс одним адресом .Аналогичным образом термин адрес один плюс один адрес инструкция представляет одноадресную инструкцию вместе с адресом, по которому должна быть найдена следующая инструкция. В этих двух случаях инструкции не поступают с последовательных адресов; счетчик команд, если он присутствует, игнорируется.

    На рисунке показаны три примера возможных / типичных форматов команд.

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

    По мере того, как регистры стали обычным явлением, для обозначения местоположений регистров стали использоваться отдельные коды операций; эти местоположения могли быть указаны в намного меньшем количестве бит, чем обычные адреса, и были разработаны форматы команд переменной длины.См. Также обработка стека, инструкция с нулевым адресом.

    Компьютерная организация | Форматы команд (нулевые, одно-, двух- и трехадресные инструкции)

    Компьютер выполняет задание на основании предоставленной инструкции. Инструкция на компьютере состоит из групп, называемых полями. Это поле содержит различную информацию, поскольку для компьютеров все значения находятся в 0 и 1, поэтому каждое поле имеет разное значение, в зависимости от того, что ЦП решает, что делать. Наиболее распространенные поля:

    • Поле «Операция», в котором указывается операция, которая должна выполняться как сложение.
    • Адресное поле, которое содержит расположение операнда, т. Е. Регистр или ячейку памяти.
    • Поле режима, которое определяет, как должен быть основан операнд.

    Инструкция имеет различную длину в зависимости от количества содержащихся в ней адресов. Обычно ЦП делятся на три типа по количеству адресных полей:

    1. Единая аккумуляторная организация
    2. Генеральный регистр организации
    3. Организация стека

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

    На основании номера адресной инструкции классифицируются как:

    Обратите внимание, что мы будем использовать выражение X = (A + B) * (C + D), чтобы продемонстрировать процедуру.

    1. Инструкции нулевого адреса —

      Компьютер на базе стека не использует поле адреса в инструкции.Чтобы сначала оценить выражение, оно преобразуется в польскую нотацию, то есть в нотацию после исправления ошибок.

       Выражение: X = (A + B) * (C + D)
      Постфиксный: X = AB + CD + *
      TOP означает вершину стека
      M [X] - любая ячейка памяти 
      НАЖАТЬ А TOP = A
      НАЖАТЬ B TOP = B
      ДОБАВИТЬ ТОП = A + B
      НАЖАТЬ С TOP = C
      НАЖАТЬ D TOP = D
      ДОБАВИТЬ ТОП = C + D
      МУЛ ВЕРХ = (C + D) * (A + B)
      ПОП х M [X] = TOP
    2. Инструкции с одним адресом —
      Здесь используется подразумеваемый регистр АККУМУЛЯТОРА для обработки данных.Один операнд находится в аккумуляторе, а другой — в регистре или в ячейке памяти. Подразумевается, что ЦП уже знает, что один операнд находится в аккумуляторе, поэтому нет необходимости указывать его.

       Выражение: X = (A + B) * (C + D)
      AC аккумуляторный
      M [] - любая ячейка памяти
      M [T] - временное местонахождение 
      НАГРУЗКА А AC = M [A]
      ДОБАВИТЬ B AC = AC + M [B]
      МАГАЗИН т M [T] = AC
      НАГРУЗКА С AC = M [C]
      ДОБАВИТЬ D AC = AC + M [D]
      МУЛ т AC = AC * M [T]
      МАГАЗИН х M [X] = AC
    3. Двухадресные инструкции —
      Это часто встречается в коммерческих компьютерах.Здесь в инструкции могут быть указаны два адреса. В отличие от ранее в одной адресной инструкции результат сохранялся в аккумуляторе, здесь результат может храниться в другом месте, а не только в аккумуляторе, но для представления адреса требуется большее количество битов.


      Здесь адрес назначения также может содержать операнд.

       Выражение: X = (A + B) * (C + D)
      R1, R2 - регистры
      M [] - любая ячейка памяти 
      MOV R1, А R1 = M [A]
      ДОБАВИТЬ R1, В R1 = R1 + M [B]
      MOV R2, С R2 = С
      ДОБАВИТЬ R2, D R2 = R2 + D
      МУЛ R1, R2 R1 = R1 * R2
      MOV X, R1 M [X] = R1
    4. Три адресные инструкции —
      Здесь есть три адресных поля для указания регистра или ячейки памяти.Создаваемые программы намного короче по размеру, но количество битов на инструкцию увеличивается. Эти инструкции значительно упрощают создание программы, но это не означает, что программа будет работать намного быстрее, потому что теперь инструкции содержат только больше информации, а каждая микрооперация (изменение содержимого регистра, загрузка адреса в адресной шине и т. Д.) Будет выполняться за один цикл. Только.

       Выражение: X = (A + B) * (C + D)
      R1, R2 - регистры
      M [] - любая ячейка памяти 
      ДОБАВИТЬ R1, А, В R1 = M [A] + M [B]
      ДОБАВИТЬ R2, C, D R2 = M [C] + M [D]
      МУЛ X, R1, R2 M [X] = R1 * R2

    Формат команд, набор команд и цикл команд


    Ан инструкция — это команда, отданная процессору компьютера компьютером программа.На самом низком уровне каждая инструкция представляет собой последовательность нулей и единиц, которые описывает физическую операцию, которую должен выполнить компьютер (например, «Добавить») и, в зависимости от конкретного типа инструкции, спецификация специальных областей хранения, называемых регистрами, которые могут содержать данные для использования при выполнении инструкции, или место в памяти компьютера данных.

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

    Формат команды

    Формат команды определяет различные компоненты инструкции. Основные компоненты команда — это код операции (какая инструкция должна быть выполнена) и операнды (данные о том, какую инструкцию выполнять).

    Код операции: код операции (код операции) представляет действие, которое должен выполнить процессор. Это сообщает процессору, какие основные операции нужно выполнять.

    Операнды: Код операнда определяет параметры действия и зависит от операции. Он определяет расположение данных или операнда, на котором выполняется операция. быть исполненным. Это могут быть данные или адрес памяти.

    Код операции

    Код операнда

    Рис: Формат инструкции

    E.г. ADD B // Добавить содержимое регистра B к содержимому аккумулятора.

    MOV C, A // Скопируйте содержимое аккумулятора в регистр C.

    Инструкция Комплект

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

    Инструкция Цикл

    • Цикл команд (также известный как цикл Fetch – Decode – Execute или цикл выборки – выполнения), основной рабочий процесс компьютерной системы.
    • Время, затраченное на выполнение инструкции известно как цикл инструкций.
    • Это процесс, посредством которого компьютер извлекает программную инструкцию из своей памяти, определяет, что действия, которые инструкция описывает, а затем выполняет эти действия.
    • Этот цикл повторяется непрерывно центральным процессором (ЦП) компьютера, от загрузки до компьютер выключился

    Командный цикл включает четыре шага:

    Рис. Цикл команд

    1.Получение: Процессор считывает инструкция по памяти. Полученная инструкция помещается в Регистр инструкций. Программный счетчик содержит адрес следующей инструкции для быть извлеченным и увеличивается после каждой выборки.

    2. Расшифровка: Инструкция, которая выбирается, разбивается на части или декодируется. Инструкция переведена в команды, чтобы они соответствовали таковым в наборе команд ЦП. Архитектура набора команд ЦП определяет способ, которым инструкция расшифрована.

    3. Выполнение: Расшифрованное инструкция или команда выполняется. CPU выполняет операцию, подразумеваемую инструкция по программе. Например, если это инструкция ADD, сложение будет выполненный.

    4. Сохранение: ЦП записывает обратно результаты выполнения в память компьютера.


    Справочное руководство программиста 80386 — Раздел 2.4

    Справочное руководство программиста 80386 — Раздел 2.4 вверх: Глава 2 — Модель базового программирования
    предыдущая: 2.3 Регистры
    следующая: 2.5 Выбор операнда
    Информация, закодированная в инструкции 80386, включает спецификацию выполняемая операция, тип операндов, которыми нужно управлять, и расположение этих операндов. Если операнд находится в памяти, инструкция также должна выбрать, явно или неявно, какой из В настоящее время адресуемые сегменты содержат операнд.

    Инструкции 80386 состоят из различных элементов и имеют различные форматы. Точный формат инструкций показан в Приложении B; в элементы инструкций описаны ниже. Из этих элементов инструкции всегда присутствует только один — код операции. Другие элементы могут или не могут присутствовать, в зависимости от конкретной операции и от расположение и тип операндов. Элементы инструкции по порядку встречаемости следующие:

    • Префиксы — один или несколько байтов, предшествующих инструкции, изменяющей действие инструкции.Следующие типы префиксов могут быть используются прикладными программами:
      1. Переопределение сегмента — явно указывает, какой сегментный регистр инструкция должна использовать, тем самым отменяя значение по умолчанию выбор регистра сегмента, используемого 80386 для этой инструкции.
      2. Размер адреса — переключение между 32-битным и 16-битным адресом поколение.
      3. Размер операнда — переключение между 32-битным и 16-битным операндом.
      4. Repeat — используется со строковой инструкцией, чтобы вызвать инструкцию воздействовать на каждый элемент строки.
    • Код операции — определяет операцию, выполняемую инструкцией. Немного операции имеют несколько разных кодов операций, каждый из которых указывает свой вариант операции.
    • Спецификатор регистра — инструкция может указывать один или два регистра операнды. Спецификаторы регистров могут находиться в том же байте, что и код операции или в том же байте, что и спецификатор режима адресации.
    • Спецификатор режима адресации — если присутствует, указывает, является ли операнд это регистр или ячейка памяти; если в памяти, указывает, смещение, базовый регистр, индексный регистр и масштабирование должны быть использовал.
    • Байт SIB (масштаб, индекс, основание) — когда спецификатор режима адресации указывает, что индексный регистр будет использоваться для вычисления адреса операнд, байт SIB включен в инструкцию для кодирования базовый регистр, индексный регистр и коэффициент масштабирования.
    • Смещение — когда спецификатор режима адресации указывает, что смещение будет использоваться для вычисления адреса операнда, смещение закодировано в инструкции. Смещение — это подписанный целое число из 32, 16 или восьми битов.Восьмибитная форма используется в Обычный случай, когда смещение достаточно мало. Процессор расширяет восьмибитное смещение до 16 или 32 бит, принимая во внимание учтите знак.
    • Непосредственный операнд — если присутствует, напрямую предоставляет значение операнд инструкции. Непосредственные операнды могут быть 8-, 16- или 32-битными. широкий. В случаях, когда восьмибитовый непосредственный операнд объединяется в некоторые с помощью 16- или 32-битного операнда процессор автоматически расширяет размер восьмибитного операнда с учетом знака.

    вверх: Глава 2 — Модель базового программирования
    предыдущая: 2.3 Регистры
    следующая: 2.5 Выбор операнда

    Архитектура набора команд: инструкции и форматы

    Классификация набора команд

    Набор команд любого процессора в целом попадает в категории, показанные на рисунке 4.3 вместе с примерами. Первые пять категорий являются обязательными, а следующие четыре, как правило, доступны для процессоров продвинутого поколения или нового поколения.Набор инструкций является частью архитектуры набора инструкций (ISA). Таким образом, путь к данным, регистры, интерфейс памяти и набор инструкций в совокупности обеспечивают конструкцию ЦП и его наилучшее использование. Количество инструкций для процессора может составлять от менее 100 до нескольких сотен плюс. Примечательно, что большое количество инструкций не означает, что процессор мощный. Чаще, чтобы обеспечить обратную совместимость в семействе процессоров, варианты каждой инструкции добавляются к списку, увеличивая набор.Я уверен, что вы знаете, что программы, созданные в процессоре 8086, выполняются в современных процессорах Intel.

    Рисунок 4.3 Общая классификация набора команд

    Давайте посмотрим на назначение каждого класса инструкций. Для облегчения понимания примеры написаны в мнемоническом коде. R относится к регистру в CPU, любое имя относится к переменной. Первая часть — мнемоника инструкции. Примеры инструкций не относятся к какому-либо конкретному процессору.

    Инструкции по перемещению данных : Они поддерживают перемещение данных между регистрами, регистры в память, память в регистр.Немногие ЦП также поддерживают перемещение данных из памяти в память. Инструкции по перемещению данных называются командами «Переместить» или «Загрузить / сохранить». Эта категория чаще всего используется ЦП при выполнении программного кода. Например:

    Перемещение R1, Итого
    Всего ходов, R1
    Нагрузка R1, всего
    Магазин R1, Всего
    

    Арифметические и логические команды : Эта категория команд выполняет вычисления. Минимум в этой категории — ADD, SUB, AND, OR, XOR, SHIFT.Умножение и деление всегда можно эмулировать, используя последовательное сложение или вычитание. Так было в очень ранних системах. Однако MULTIPLY и DIV являются частью набора команд, поскольку аппаратное выполнение более эффективно, чем эмуляция. Некоторые процессоры имеют инструкцию CMP (сравнение).

    Логические инструкции требуются для реализации проверки условий «Для циклов, циклов пока, ЕСЛИ и т. Д.».

    В конце выполнения арифметических и логических инструкций, в зависимости от результата в Accumulator, устанавливаются коды условий (ноль, знак, переполнение, перенос — ZSOC), подразумевающие результат выполнения инструкции.Как правило, эти флаги полезны для управления ходом программы. Например:

    ДОБАВИТЬ R1, ИТОГО
    ДОБАВИТЬ R1, R2, R3
    XOR R4, ВСЕГО
    MUL R4, ЗНАКИ
    

    Команды передачи или управления : Эта категория команд облегчает изменение потока программы, описываемого управляющими структурами на языке высокого уровня. Инструкции BRANCH или JMP вместе с флагами кода состояния соответствуют требованию. Подпрограммы ЗВОНКИ, ВОЗВРАТЫ сгруппированы здесь. Например:

    JMP LABLE1 Перейти
    JNZ LABLE1 Перейти на Not Zero
    BZ LABLE2 Ветвь по нулю
    BNE LABLE3 Ветвь на Не равно
    

    Инструкции ввода / вывода : Есть два способа выполнения операций ввода / вывода.Семейство Intel использует инструкции ввода и вывода для регистров ввода-вывода для связи или передачи данных с устройствами ввода-вывода. Эти регистры ввода-вывода пронумерованы как порты. В семействе Motorola используются инструкции по перемещению данных, назначающие адреса памяти регистрам ввода-вывода. Первый называется вводом-выводом с отображением ввода-вывода, тогда как второй называется вводом-выводом с отображением памяти. Например:

    IN порт # 232
    ВЫХОДНОЙ порт # 234
    Двигайся R1, #FFEEEE
    

    Прочие инструкции : NOP (No Operation) — известная фиктивная инструкция, но очень полезная в этой категории.Некоторые процессоры допускают прерывание, определяемое пользователем. Эти прерывания можно активировать с помощью инструкций. HALT — еще одна очень важная инструкция, которая останавливает систему при «Завершении работы». Управление системой либо сгруппировано здесь, либо как инструкции по управлению. Например:

    HALT
    NOP
    INT
    

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

    FLD FP Нагрузка
    Магазин FST FP
    FADD FP ДОБАВИТЬ
    FSUB FP Вычесть
    FMUL FP Умножение
    

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

    Векторные инструкции : Эта группа предназначена для отображения.Графические операции, такие как масштабирование, изменение размера, отражение и т. Д., Требуют сложных вычислений на основе векторов. Матричные операции используют векторные инструкции.

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

    Архитектура ЦП кардинально отличается в зависимости от размера набора команд. Соответственно, существует две категории, а именно Компьютер с сокращенным набором команд (RISC) и Компьютер со сложным набором команд (CISC) .Как следует из названия, RISC имеет меньше инструкций в наборе, а CISC имеет большое количество инструкций.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *