Введение
Инструкции низкого уровня, используемые в некоторых конструкциях для реализации сложных машинных инструкций В центральных процессорах компьютеров микрооперации (также известные как микроопции или мопсы, исторически также как микродействия) Обычно микрооперации выполняют основные операции с данными, хранящимися в одном или нескольких регистрах, включая передачу данных между регистрами или между регистрами и внешними шинами центрального процессора (ЦПУ), а также выполнение арифметических или логических операций с регистрами. В типичном цикле выполнения декодирования fetch каждый шаг инструкции макроса расщепляется во время его выполнения, поэтому процессор определяет и проходит серию микроопераций. Выполнение микроопераций осуществляется под контролем блока управления процессором, который принимает решение о их выполнении при выполнении различных оптимизаций, таких как переустройство, слияние и кэширование.
In computer central processing units, micro operations (also known as micro ops or μops, historically also as micro actions
Usually, micro operations perform basic operations on data stored in one or more registers, including transferring data between registers or between registers and external buses of the central processing unit (CPU), and performing arithmetic or logical operations on registers. In a typical fetch decode execute cycle, each step of a macro instruction is decomposed during its execution so the CPU determines and steps through a series of micro operations. The execution of micro operations is performed under control of the CPU's control unit, which decides on their execution while performing various optimizations such as reordering, fusion and caching.
Оптимизация
Различные формы мьопс давно стали основой для традиционных микрокодных процедур, используемых для упрощения реализации конкретной конструкции процессора или, возможно, просто секвенирования определенных многоступенчатых операций или режимов адресации. В последнее время μops также используются по-другому, чтобы современные процессоры CISC легче обрабатывали асинхронное параллельное и спекулятивное выполнение: как и в традиционном микрокоде, один или несколько табличных поисков (или эквивалент) выполняются для определения подходящей последовательности μop на основе кодирования и семантики машинной инструкции (этап декодирования или перевода), однако вместо того, чтобы иметь жесткие последовательности μop, управляющие процессором непосредственно из микрокода ROM, здесь μops динамически буферируются для перепланирования перед выполнением. Это буферирование означает, что этапы извлечения и декодирования могут быть более отделены от блоков исполнения, чем это возможно в более традиционной микрокодированной (или жестко проводной) конструкции. Поскольку это позволяет получить некоторую степень свободы в отношении порядка выполнения, это делает возможным некоторое извлечение параллелизма уровня инструкции из обычной однопоточной программы (при условии, что проверяются зависимости и т. Д.). Он открывает путь для дальнейшего анализа и, следовательно, для переустройства последовательностей кода с целью динамической оптимизации отображения и планирования мопс на ресурсы машины (такие как ALU, блоки загрузки / хранения и т. Д.). Поскольку это происходит на уровне μop, субоперации различных машинных (макро) инструкций могут часто смешиваться в определенной последовательности μop, образуя частично перестроенные машинные инструкции в качестве прямого следствия неисправного отправления микроинструкций из нескольких макроинструкций. Однако это не то же самое, что микрооптическое слияние, цель которого заключается в том, что более сложная микроинструкция может заменить несколько более простых микроинструкций в определенных случаях, как правило, для минимизации изменений состояния и использования пространства буфера очереди и переустройства, тем самым уменьшая потребление энергии. Микрооптическое слияние используется в некоторых современных конструкциях процессоров. Размер этого кэша может быть определен в терминах, сколько тысяч (или строго множественных 1024) микроопераций он может хранить: Kμops.