Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

Оптимизация [ править ]

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

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

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

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

См. Также [ править ]

Ссылки [ править ]

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