Микрооперация - Micro-operation

Высокоуровневый рисунок, показывающий разложение машинных инструкций на микрооперации, выполняемые во время типичного циклы выборки-декодирования-выполнения.[1]:1

В компьютер центральные процессоры, микрооперации (также известный как микрооперации или же μops, исторически также как микродействия[2]) представляют собой подробные инструкции низкого уровня, используемые в некоторых проектах для реализации сложных машинных инструкций (иногда называемых макро-инструкции в контексте).[3]:8–9

Обычно микрооперации выполняют базовые операции с данными, хранящимися в одном или нескольких регистры, включая передачу данных между регистрами или между регистрами и внешними автобусов из центральное процессорное устройство (CPU) и выполнение арифметических или логических операций над регистрами. В типичном цикл выборки-декодирования-выполнения, каждый шаг макроса раскладывается во время выполнения, поэтому ЦП определяет и выполняет серию микроопераций. Выполнение микроопераций осуществляется под контролем центрального процессора. устройство управления, который определяет их выполнение при выполнении различных оптимизаций, таких как переупорядочение, слияние и кэширование.[1]

Оптимизация

Различные формы μops уже давно стали основой традиционных микрокод подпрограммы, используемые для упрощения реализации определенного Дизайн процессора или, возможно, просто последовательность определенных многоэтапных операций или режимов адресации. В последнее время μops также стали использоваться по-другому, чтобы позволить современным CISC Процессоры легче справляются с асинхронным параллельным и спекулятивным выполнением: как и в случае с традиционным микрокодом, выполняется один или несколько поисков в таблице (или эквивалент), чтобы найти соответствующую последовательность μOP на основе кодирования и семантики машинной инструкции (этап декодирования или трансляции) однако вместо жестких последовательностей μop-последовательностей, управляющих процессором непосредственно из микрокода,ПЗУ, μops здесь динамически буферизуются для изменения расписания перед выполнением.[4]:6–7, 9–11

Эта буферизация означает, что этапы выборки и декодирования могут быть в большей степени отделены от исполнительных блоков, чем это возможно в более традиционной микрокодированной (или жесткой) схеме. Поскольку это дает некоторую свободу в отношении порядка выполнения, это позволяет извлечь некоторую параллелизм на уровне инструкций из обычной однопоточной программы возможно (при условии, что зависимости проверены и т. д.). Он открывает возможности для дополнительного анализа и, следовательно, для переупорядочивания кодовых последовательностей, чтобы динамически оптимизировать отображение и планирование μOPS на машинные ресурсы (например, ALU, загрузите / сохраните единицы и т. д.). Поскольку это происходит на уровне μop-уровня, подоперации различных машинных (макро) инструкций могут часто смешиваться в определенной μop-последовательности, образуя частично переупорядоченные машинные инструкции как прямое следствие неупорядоченной отправки микрокоманд из нескольких инструкции макроса. Однако это не то же самое, что микрооперационный синтез, который нацелен на то, что более сложная микрокоманда может заменить несколько более простых микрокоманд в определенных случаях, как правило, для минимизации изменений состояния и использования очереди и переупорядочить буфер пространство, что снижает энергопотребление. Micro-op fusion используется в некоторых современных процессорах.[3]:89–91, 105–106[4]:6–7, 9–15

Оптимизация исполнения пошла еще дальше; процессоры не только преобразуют множество машинных инструкций в серию микропроцессоров, но и при необходимости делают наоборот; они объединяют определенные последовательности машинных инструкций (например, сравнение с последующим условным переходом) в более сложную μop, которая лучше соответствует модели выполнения и, таким образом, может выполняться быстрее или с меньшими затратами машинных ресурсов. Это также известно как макрооперационный синтез.[3]:106–107[4]:12–13

Другой способ повысить производительность - кэшировать декодированные микрооперации, чтобы при повторном выполнении той же макрокоманды процессор мог напрямую обращаться к декодированным микрооперациям из специального кэша вместо их повторного декодирования. В Кэш трассировки выполнения нашел в Intel Микроархитектура NetBurst (Pentium 4 ) является распространенным примером этой техники.[5] Размер этого кеша может быть указан с точки зрения того, сколько тысяч микроопераций он может хранить: kμops.[6]

Смотрите также

Рекомендации

  1. ^ а б «Организация и архитектура компьютера, Глава 15. Работа блока управления» (PDF). umcs.maine.edu. 2010-03-16. Получено 2014-12-29.
  2. ^ Микросхема компьютера FM1600B Ferranti Digital Systems (PDF). Брэкнелл, Беркшир, Великобритания: Ферранти Лимитед, Департамент цифровых систем. Октябрь 1968 года [сентябрь 1968 года]. Перечислите DSD 68/6. В архиве (PDF) из оригинала на 2020-05-19. Получено 2020-05-19.
  3. ^ а б c Агнер Туман (2014-02-19). «Микроархитектура процессоров Intel, AMD и VIA: руководство по оптимизации для программистов сборки и производителей компиляторов» (PDF). agner.org. Получено 2014-03-21.
  4. ^ а б c Майкл Э. Томадакис (17 марта 2011 г.). «Архитектура процессора Nehalem и платформ SMP Nehalem-EP» (PDF). Техасский университет A&M. Архивировано из оригинал (PDF) на 2014-08-11. Получено 2014-03-21.
  5. ^ «Intel Pentium 4 1,4 ГГц и 1,5 ГГц». AnandTech. 2000-11-20. Получено 2013-10-06.
  6. ^ Варух Соломон; Ави Мендельсон; Дорон Оренштейн; Йоав Альмог; Ронни Ронен (август 2001 г.). "Кэш микроопераций: мощный интерфейс для ISA переменной длины" (PDF). Intel. Дои:10.1109 / LPE.2001.945363. Получено 2014-03-21.