Что такое машинная инструкция?
Программа пользователя в оперативной памяти состоит из машинных инструкций и данных. Напротив, управляющая память содержит фиксированную микропрограмму, которую случайный пользователь не может изменить. Микропрограмма состоит из микрокоманд, задающих различные внутренние управляющие сигналы для выполнения микроопераций регистра. Каждая машинная инструкция инициирует серию микроинструкций в памяти управления. Эти микроинструкции генерируют микрооперации для получения инструкции для основной памяти; оценить эффективный адрес, выполнить операцию, указанную в инструкции, и вернуть управление фазой выборки, чтобы повторить цикл для следующей инструкции
Я не совсем понимаю здесь разницу между машинной инструкцией, микроинструкцией и микропирами. я конечно понимаю, что микроинструкции по приведенному абзацу - это промежуточный уровень инструкций, но какая из двух других более близка к машинному языку. Являются ли CLA, ADD, STA, BUN, BSA и т. д. машинными инструкциями или микрооперациями?
2 ответа
Центральный процессор представляет себя снаружи как устройство, способное выполнять машинные инструкции . Например,
mov (%esi,%ebx,4), %edx
машинная инструкция , которая перемещает 4 байта данных по адресу ESI+4*EBX в регистр EDX. Машинные инструкции общедоступны — они публикуются производителем процессора в руководстве пользователя. Компиляторы, такие как gcc, будут выводить файлы, содержащие машинные инструкции, и обычно они заканчиваются файлами EXE/DLL.
Если вы внимательно посмотрите на приведенную выше инструкцию, то увидите, что это довольно сложная операция. Он включает в себя некоторые арифметические действия (умножение и сложение) для получения адреса памяти, а затем перемещение данных с этого адреса в регистр. С точки зрения ЦП также имеет смысл использовать уже существующую арифметическую единицу. Поэтому имеет смысл разбить эту инструкцию на микроинструкции . По сути,
mov
инструкция реализуется внутри ЦП как микропрограмма, записанная в микроинструкциях. Это, однако, деталь реализации ЦП. Микроинструкции являются внутренними для ЦП и невидимы для всех, кроме производителя ЦП.
Микроинструкции имеют ряд преимуществ:
- они упрощают внутреннюю архитектуру ЦП, дизайн и тестирование, тем самым снижая стоимость на единицу
- они позволяют легко создавать богатые и мощные наборы машинных инструкций (вам просто нужно комбинировать микроинструкции по-разному)
- они обеспечивают согласованный машинный язык для разных процессоров (например, Xeon и Pentium оба реализуют базовый набор инструкций x86_64, хотя они сильно различаются по аппаратному обеспечению)
- создавать оптимизации (т.е. одна и та же инструкция на одном процессоре может быть реализована аппаратно, другая может эмулироваться в микроинструкциях)
- исправить ошибки (например, вы можете исправить уязвимость Spectre во время работы машины, не покупая новый процессор и не открывая сервер)
Для получения дополнительной информации см. https://en.wikipedia.org/wiki/Micro-operation .
Думаю, ответ на ваш вопрос содержится в этих трех предложениях:
- Программа пользователя в оперативной памяти состоит из машинных инструкций и данных.
- Каждая машинная инструкция инициирует серию микрокоманд в памяти управления.
- Эти микроинструкции генерируют микрооперации.
Так:
- Пользователь вводит машинные инструкции
- Они переводятся в микроинструкции
- Они переводятся в микрооперации
Упомянутая вами мнемоника - это то, что пользователь может использовать для записи или чтения списка машинных инструкций (фактические инструкции - это просто шаблоны битов, понятные процессору). «Случайный пользователь» (т. е. всем, кроме разработчика микросхемы) никогда не приходится иметь дело непосредственно с микроинструкциями или микрооперациями, поэтому он никогда не узнает их индивидуальных имен.