Микрооперации в ЦП, что это такое и как они работают

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

A ЦП сегодня может выполнять большое количество различных инструкций, и делает это на частотах, которые в 5,000 раз выше, чем у первых персональных компьютеров. Мы склонны думать, и совершенно ошибочно, что большее количество МГц или ГГц связано с новыми производителями. Реальность совершенно иная, и именно здесь вступают в действие микрооперации, которые являются ключом к достижению огромной вычислительной мощности современных микропроцессоров.

Микрооперации в процессоре

Что такое микрооперации?

Одним из сравнений с реальностью, которые обычно используются для объяснения того, что такое программа, является сравнение с кулинарным рецептом. В котором мы можем видеть назначенный глаголом ряд действий, которые мы должны выполнить. Например, я могу вставить рецепт, что вы обжариваете кусок мяса на сковороде, но для вас получится, что придется искать сковороду, то же самое делать с маслом, класть последнее на сковороду, ждать чтобы он был горячим и положите в него кусок мяса. Как видите, мы преобразовали то, что в принципе определяется одним глаголом, в серию действий.

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

Что ж, инструкции процессора можно разбить на более мелкие, которые мы называем микрооперациями. А почему не микроинструкции? Ну, из-за того, что инструкция, просто разбив ее на несколько тактов для своего выполнения, занимает несколько тактов на разрешение. С другой стороны, микрооперация занимает один такт.

Инструкции Tiempo Pipeline

Один из способов получить максимальное количество МГц или ГГц — это конвейерная обработка, при которой каждая инструкция выполняется в несколько этапов, каждый из которых длится один такт. Поскольку частота обратно пропорциональна времени, чтобы получить большую частоту, мы должны сократить время. Проблема в том, что достигается точка, в которой инструкция больше не может быть разложена, количество этапов в конвейере становится коротким, и, следовательно, тактовая частота, которую можно достичь, низка.

На самом деле они родились с появлением внеочередного исполнения архитектуры Intel P6 и производных от нее процессоров, таких как Pentium II и III. Причина этого в том, что сегментация P5 или Pentium позволила им достичь лишь немногим более 200 МГц. С помощью микроопераций, еще больше удлинив количество этапов каждой инструкции, они преодолели гигагерцовый барьер с Pentium 3 и смогли иметь тактовую частоту в 16 раз выше с Pentium 4. С тех пор они используются во всех процессорах с внеочередное исполнение, вне зависимости от марки и регистра и набора команд.

Ваши ЦП ни x86, ни RISC-V, ни ARM

В современных ЦП, когда инструкции поступают в блок управления ЦП для декодирования и назначения блоку управления, они сначала разбиваются на несколько различных микроопераций. Это означает, что каждая инструкция, которую выполняет процессор, состоит из ряда основных микроопераций, и набор их в упорядоченном потоке называется микрокодом.

Микропроцессорный процессор

Разложение инструкций на микрооперации и преобразование хранящихся в них программ. Оперативная память в микрокод встречается сегодня во всех процессорах. Итак, когда ISA вашего телефона ARM ЦП или ЦП x86 вашего ПК выполняет программы, его исполнительные блоки не разрешают инструкции с этими наборами регистров и инструкций.

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

Что такое кэш микроопераций?

Другим важным элементом для достижения максимально возможной производительности является кэш микроопераций, который находится позже микроопераций и, следовательно, ближе по времени. Его происхождение можно найти в кеше трассировки, реализованном Intel в Pentium 4. Это расширение кеша первого уровня для инструкций, в котором хранится корреляция между различными инструкциями и микрооперациями, в которых они были предварительно разобраны блоком управления. .

Кэш Microscopio

Однако у x86 ISA всегда была проблема с типом RISC, в то время как последние имеют фиксированную длину инструкции в коде, в случае с x86 каждая из них может измерять от 1 до 15 байт. Мы должны помнить, что каждая инструкция извлекается и декодируется в несколько микроопераций. Для этого уже сегодня необходим сверхсложный блок управления, способный потреблять до трети своей энергетической мощности без необходимых оптимизаций.

Кэш микроопераций, таким образом, представляет собой эволюцию кеша трассировки, но он не является частью кеша инструкций, это аппаратно-независимая сущность. В кэше микроопераций размер каждой из них фиксирован в пересчете на количество байт, что позволяет, например, ЦП с ISA x86 работать максимально близко к RISC-типу и снизить сложность блока управления и с ним потребление. Отличие от кэша графиков Pentium 4 состоит в том, что текущий кэш микроопераций хранит все микрооперации, принадлежащие инструкции, в одной строке.

Как это работает?

Что делает кеш микроопераций, так это избегает работы по декодированию инструкций, поэтому, когда декодер только что выполнил указанную задачу, он сохраняет результат своей работы в указанном кеше. Таким образом, когда необходимо декодировать следующую инструкцию, выполняется поиск, находятся ли формирующие ее микрооперации в указанном кэше. Мотивацией для этого является не что иное, как тот факт, что обращение к указанному кешу занимает меньше времени, чем не разлагать сложную инструкцию.

кэширование микроопераций как функция

Однако он работает как кэш, и его содержимое со временем меняется по мере поступления новых инструкций. Когда в кэше инструкций первого уровня появляется новая инструкция, выполняется поиск в кэше микроопераций, если она уже декодирована. Если нет, то действуйте как обычно.

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