logo
Методичка

10.1.1 Intel Wide Dynamic Execution

Wide Dynamic Execution – одна из технологий, которая перекочевала из Pentium Pro в Pentium II, III и благополучно обосновалась в Core 2. На заре своего появления она носила имя Dynamic Execution и на тот момент представляла совершенно новую суперскалярную архитектуру Р6, нацеленную на анализ программного кода и обладающую возможностями спекулятивного (упреждающего) и внеочередного исполнения команд.

В усовершенствованном виде эта технология нашла применение и в процессорах архитектуры NetBrust, в связи с чем стала называться Advanced Dynamic Execution. Изменения коснулись глубины анализа программного кода и алгоритмов предсказания переходов, которые были значительно улучшены.

Микропроцессорам семейства Core 2 досталась уже довольно «взрослая» система, где вместо эпитета Advanced появился другой – Wide. Этим маркетологи компании Intel захотели показать, что новые процессоры могут выполнять за один такт больше операций (рис. 10.1). В дополнение к тому был в очередной раз улучшен блок предсказания переходов и увеличены буферы микрокоманд, которые используются на различных этапах работы с программным кодом. Таким образом, ядро каждого процессора сможет декодировать и исполнить за один такт четыре команды х86.

ИнженерыIntel на этом не остановились и пошли дальше. Алгоритмы анализа и предсказаний дополнила технология Macro-Fusion. Она также направлена на увеличение количества исполняемых за такт команд за счет того, что связанные между собой по данным последовательные инструкции представляются одной макрокомандой. Ее суть поясняет рис. 10.2.

В очереди находятся пять команд, две из них, сравнение и условный переход (cmp еах, [mem2] и jne targ), можно объединить в одну – cmpjne eax, [mem2], targ. Здесь следует уточнить, что за один такт может исполняться не более одной макрокоманды. Таким образом, получается, что при самом удачном раскладе процессор способен выполнить пять х86-инструкций за один такт.

Кроме того, из Pentium M в процессоры семейства Core перекочевала и технология Micro-Ops Fusion, позволяющая увеличить количество обрабатываемых команд за такт. Это технология слияния микроопераций, суть которой сводится к тому, что в ряде случаев две микрооперации сливаются в одну, содержащую два элементарных действия. В дальнейшем две такие слитые микрооперации обрабатываются как одна, что в результате позволяет снизить количество обрабатываемых микроопераций и тем самым увеличить общее число исполняемых процессором инструкций за один такт. В частности, как показывают расчеты, технология Micro-Ops Fusion дает возможность снизить общее количество микроопераций на 10 %.