6

В типичном цикле команд выборка, декодирование, выполнение вместе образуют один цикл. Мой вопрос о шаге декодирования: какая часть декодируется, это код операции инструкции? Если так, то почему это закодировано тогда?

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

4 ответа4

7

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

Декодирование - это цикл, который интерпретирует код операции и эти другие битовые поля, чтобы определить, над чем команда будет работать, или иным образом.

Резюме: он определяет необязательные детали инструкции

Пример:0x90 (двоичный код 10010000) обычно считается NOP , без операции, для набора команд 8086.

Но есть инструкция XCHG представленный в виде двоичного 10010reg (REG = 3 бита), (0x90 + рег) , который является 16 - битный регистр обмена с инструкцией AX 3 бита, обозначенные как «reg», определяют, с каким регистром обмениваться.

«reg» двоичного числа 000 означает «с регистром AX ». Таким образом, 0x90 декодируется как «обмен AX с AX », что мало что делает, AKA No Operation NOP

6

Инструкции и режимы адреса - это то, что декодируется. Инструкции + режимы адресации состоят из кода операции и любых непосредственных данных (операндов), следующих за кодом операции.

Если так, то почему это закодировано тогда?

Потому что мы используем значения в оперативной памяти, чтобы "стоять" за инструкциями и режимами адресации. Должна существовать схема, в которой X = любая инструкция + любой режим адресации. Подобно тому, как ASCII/Unicode - это схема, которая "обозначает" цифры, буквы и управляющие коды терминала.

Шаг декодирования не был бы необходим, если бы у вас был компьютер, на котором было 1 переключатель для каждой возможной инструкции. "Эквивалент RAM" этого будет 1 инструкция на бит в 8-битном (или другом) байте, и если включено несколько битов, все инструкции (и да, вы были бы ограничены 8 из них) будут "запускаться" в этот шаг. Я полагаю, что сборка PDP с конца 60-х - начала 70-х не слишком далека от этого.

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

Нет, это больше похоже на декодирование данных MPEG в необработанные видеоданные - необработанные данные MPEG нельзя нарисовать непосредственно на экране, их нужно обработать и "распаковать", чтобы точно определить, что это означает.

3

Расшифровка означает анализ инструкции для определения ее значения.

Типичная инструкция состоит из кода операции и (обычно) одного или нескольких аргументов. Эти аргументы могут ссылаться на конкретные регистры или адреса памяти или могут быть непосредственными значениями, которые будут использоваться непосредственно во время выполнения. Кроме того, некоторые инструкции могут иметь префиксы (например, LOCK в x86) или функциональные коды (например, поле funct для некоторых инструкций MIPS), которые изменяют их функциональность.

Во время декодирования процессору необходимо:

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

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

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

0

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

Вы можете найти видео на YouTube для создания процессора "с нуля".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .