Микрооперация
В компьютерных процессорах центральных микрооперации (также известные как микрооперации или микроопс , исторически также называемые микрооперациями) [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]
Ссылки
[ редактировать ]- ^ Перейти обратно: а б «Организация и архитектура компьютера, Глава 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 г.
- ^ Перейти обратно: а б с Агнер Фог (19 февраля 2014 г.). «Микроархитектура процессоров Intel, AMD и VIA: руководство по оптимизации для программистов-сборщиков и производителей компиляторов» (PDF) . agner.org . Проверено 21 марта 2014 г.
- ^ Перейти обратно: а б с Майкл Э. Томадакис (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 г.