Микрооперация

редактировать

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

В компьютере центральных процессорах, микрооперации (также известные как micro-ops или μops, исторически также как micro-actions ) - это подробные низкоуровневые инструкции, используемые в некоторых проектах для реализации сложных машинных инструкций (иногда называемых макро-инструкции в данном контексте).

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

Оптимизация

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

Эта буферизация означает, что этапы выборки и декодирования могут быть более отделены от исполнительных блоков, чем это возможно в более традиционной микрокодированной (или жестко связанной) схеме. Поскольку это дает некоторую свободу в отношении порядка выполнения, это делает возможным некоторое извлечение параллелизма уровня инструкций из обычной однопоточной программы (при условии, что зависимости проверены и т. Д.). Он открывает возможности для дополнительного анализа и, следовательно, для переупорядочивания кодовых последовательностей, чтобы динамически оптимизировать отображение и планирование μOPS на машинные ресурсы (такие как ALU, блоки загрузки / сохранения и т. Д.). Так как это происходит на уровне μop-уровня, подоперации различных машинных (макро) инструкций могут часто смешиваться в конкретной μop-последовательности, образуя частично переупорядоченные машинные инструкции как прямое следствие неупорядоченной отправки микрокоманд из нескольких инструкции макроса. Однако это не то же самое, что объединение микроопераций, цель которого состоит в том, что более сложная микрокоманда может заменить несколько более простых микрокоманд в определенных случаях, как правило, для минимизации изменений состояния и использования очереди и переупорядочить буфер, тем самым уменьшив потребление энергии. Микрооперационное объединение используется в некоторых современных конструкциях ЦП.

Оптимизация выполнения пошла еще дальше; процессоры не только преобразуют множество машинных инструкций в серию микроконтроллеров, но и при необходимости делают наоборот; они объединяют определенные последовательности машинных инструкций (например, сравнение с последующим условным переходом) в более сложную μop, которая лучше соответствует модели выполнения и, таким образом, может выполняться быстрее или с меньшими затратами машинных ресурсов. Это также известно как объединение макроопераций.

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

См. Также

Ссылки

Последняя правка сделана 2021-05-30 09:57:29
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте