Микрооперация
В компьютерных процессорах центральных микрооперации (также известные как микрооперации или микроопс , исторически также называемые микрооперациями) [ 2 ] ) — это подробные инструкции низкого уровня, используемые в некоторых проектах для реализации сложных машинных инструкций (иногда называемые макроинструкциями ). в этом контексте [ 3 ] : 8–9
Обычно микрооперации выполняют базовые операции над данными, хранящимися в одном или нескольких регистрах , включая передачу данных между регистрами или между регистрами и внешними шинами центрального процессора (ЦП), а также выполнение арифметических или логических операций над регистрами. В типичном цикле выборки-декодирования-выполнения каждый шаг макроинструкции разлагается во время ее выполнения, поэтому ЦП определяет и выполняет серию микроопераций. Выполнение микроопераций выполняется под контролем блока управления ЦП , который принимает решение об их выполнении при выполнении различных оптимизаций, таких как переупорядочение, объединение и кэширование. [ 1 ]
Оптимизации
[ редактировать ]Различные формы микроопераций уже давно стали основой традиционных процедур микрокода, используемых для упрощения реализации конкретной конструкции ЦП или, возможно, просто для упорядочивания определенных многошаговых операций или режимов адресации. Совсем недавно µops стали использовать другим способом, чтобы позволить современным CISC- процессорам легче обрабатывать асинхронное параллельное и спекулятивное выполнение: как и в случае с традиционным микрокодом, выполняется один или несколько поисков по таблице (или эквивалентных) для нахождения подходящего µops. последовательность, основанную на кодировании и семантике машинной инструкции (этап декодирования или трансляции), однако вместо жестких последовательностей µop, управляющих ЦП непосредственно из ПЗУ микрокода , здесь используются µops. динамически буферизуется для перепланирования перед выполнением. [ 4 ] : 6–7, 9–11
Эта буферизация означает, что этапы выборки и декодирования могут быть более отделены от исполнительных блоков, чем это возможно в более традиционной микрокодированной (или жесткой) конструкции. Поскольку это обеспечивает определенную степень свободы в отношении порядка выполнения, это делает возможным некоторое извлечение параллелизма на уровне команд из обычной однопоточной программы (при условии, что зависимости проверяются и т. д.). Он открыт для дополнительного анализа и, следовательно, для изменения порядка последовательностей кода с целью динамической оптимизации отображения и планирования микроопераций на машинные ресурсы (такие как ALU , блоки загрузки/сохранения и т. д.). Поскольку это происходит на уровне µop, подоперации различных машинных (макро) инструкций могут часто смешиваться в определенной последовательности µop, образуя частично переупорядоченные машинные инструкции как прямое следствие неупорядоченной отправки микроинструкций из нескольких команд. макрокоманды. Однако это не то же самое, что слияние микроопераций , целью которого является то, что более сложная микроинструкция может заменить несколько более простых микроинструкций в определенных случаях, обычно для того, чтобы минимизировать изменения состояния и использование очереди и переупорядочить буферное пространство, тем самым снижая энергопотребление. Слияние микроопераций используется в некоторых современных конструкциях процессоров. [ 3 ] : 89–91, 105–106 [ 4 ] : 6–7, 9–15
Оптимизация выполнения пошла еще дальше; процессоры не только преобразуют множество машинных инструкций в последовательность микроопераций, но и делают обратное, когда это необходимо; они объединяют определенные последовательности машинных инструкций (например, сравнение с последующим условным переходом) в более сложную микрооперацию, которая лучше соответствует модели выполнения и, следовательно, может выполняться быстрее или с меньшими затратами машинных ресурсов. Это также известно как слияние макроопераций . [ 3 ] : 106–107 [ 4 ] : 12–13
Другой способ попытаться повысить производительность — кэшировать декодированные микрооперации в кэше микроопераций , чтобы в случае повторного выполнения той же макроинструкции процессор мог напрямую обращаться к декодированным микрооперациям из кэша вместо их декодирования. снова. Кэш трассировки выполнения , обнаруженный в микроархитектуре Intel NetBurst ( Pentium 4 ), является широко распространенным примером этого метода. [ 5 ] Размер этого кэша можно выразить в терминах того, сколько тысяч (или строго кратно 1024) микроопераций он может хранить: Kμops . [ 6 ]
Ссылки
[ редактировать ]- ^ Jump up to: а б «Организация и архитектура компьютера, Глава 15. Работа блока управления» (PDF) . umcs.maine.edu . 16 марта 2010 г. Проверено 29 декабря 2014 г.
- ^ Микросхемный компьютер FM1600B Ferranti Digital Systems (PDF) . Брэкнелл, Беркшир, Великобритания: Ferranti Limited , отдел цифровых систем. Октябрь 1968 г. [сентябрь 1968 г.]. Список ДСД 68/6. Архивировано (PDF) из оригинала 19 мая 2020 г. Проверено 19 мая 2020 г.
- ^ Jump up to: а б с Агнер Фог (19 февраля 2014 г.). «Микроархитектура процессоров Intel, AMD и VIA: руководство по оптимизации для программистов-сборщиков и производителей компиляторов» (PDF) . agner.org . Проверено 21 марта 2014 г.
- ^ Jump up to: а б с Майкл Э. Томадакис (17 марта 2011 г.). «Архитектура процессора Nehalem и платформ Nehalem-EP SMP» (PDF) . Техасский университет A&M. Архивировано из оригинала (PDF) 11 августа 2014 г. Проверено 21 марта 2014 г.
- ^ «Intel Pentium 4 1,4 ГГц и 1,5 ГГц» . АнандТех. 20 ноября 2000 г. Проверено 6 октября 2013 г.
- ^ Барух Соломон; Ави Мендельсон; Дорон Оренштейн; Йоав Альмог; Ронни Ронен (август 2001 г.). «Кэш микроопераций: интерфейс с поддержкой энергопотребления для ISA с переменной длиной инструкций» (PDF) . ISLPED'01: Материалы Международного симпозиума по маломощной электронике и дизайну 2001 г. (каталожный номер IEEE 01TH8581) . Интел . стр. 4–9. дои : 10.1109/LPE.2001.945363 . ISBN 1-58113-371-5 . S2CID 10934861 . Проверено 21 марта 2014 г.