Технологии архитектуры Intel Core i (Nehalem)

Опубликовано ноября 10, 2010 в Компоненты ПК, Процессоры

Intel Wide Dynamic Execution

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

Технологии архитектуры Intel Core i (Nehalem)

style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">

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

Микропроцессорам семейства Core 2 досталась уже довольно «взрослая» система, где вместо эпитета Advanced появился другой — Wide. Этим маркетологи компании Intel захотели показать, что новые процессоры могут за один такт выполнять больше операций.

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

Технологии архитектуры Intel Core i (Nehalem)

Intel Wide Dynamic Execution



style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">

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

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

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

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

Intel Intelligent Power Capability


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">

Принципиальным моментом технологии управления питанием является то, что вычислительные блоки изначально находятся в пассивном (выключенном) состоя­нии и подключаются по мере необходимости. Специальные логические схемы анализируют потоки данных и принимают решение о запуске или остановке опре­деленной подсистемы. Такая возможность появилась благодаря новому принципу управления питанием процессора.

Технологии архитектуры Intel Core i (Nehalem)

Intel Intelligent Power Capability

Блоки системной логики физически разделены и запитываются по отдельным каналам. Это позволяет понижать энергопотребление при обработке некоторых видов данных.

Ключевой особенностью является то, что переход в активное состояние той или иной подсистемы не ведет к задержкам, связанным с «пробуждением».

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

Чтобы избежать подобной ситуации, в процессоры Core 2 встроено несколько температурных датчиков в местах, подверженных наибольшему перегреву. Инфор­мация с них поступает на специальный DTS-сенсор, который анализирует данные. В качестве процессорной температуры принимается максимальное из всех пред­ставленных показаний.

Intel Advanced Smart Cache


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">

В нынешней линейке семейства Core 2 процессоры имеют Ь2-кэш объемом 2 или 4 Мбайт. Общий доступ к нему позволяет избежать простоев, как это могло бы случиться при использовании раздельных кэшей L2.

Технологии архитектуры Intel Core i (Nehalem)

Intel Advanced Smart Cache

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

Более того, в Core 2 предусмотрена возможность одновременной работы ядер с од­ними и теми же данными, которые не дублируются в памяти, а хранятся единожды. Это позволяет использовать имеющийся объем L2 более рационально. Также от­падает необходимость контроля когерентности (соответствия) кэшей в случае, когда ядра работают с одной и той же информацией.

Intel Smart Memory Access

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

Вычислительному ядру быстрее всего обмениваться информацией с кэшами L1 (64 Кбайт) и L2 (2 или 4 Мбайт). Поэтому, чтобы не возникало простоев, данные должны быть заблаговременно в них загружены. За это отвечают алгоритмы пред­варительной выборки, над которыми инженерные умы из Intel работают уже мно­го лет и добились хороших результатов.

Реализованные в архитектуре Core модули отслеживают потоки информации и на основании собранной статистики пытаются предсказать, какие данные потребуют­ся вычислительным блокам в следующий момент.


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">

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

В дополнение к этому при работе с памятью применяется технология Memory Disambiguation, что в переводе с английского означает «устранение про­тиворечий». Противоречия, как правило, возникают в процессе работы алгоритмов внеочередного исполнения инструкций, когда доступ (чтение) запрещен до тех пор, пока не будет выполнена процедура записи. Хотя во многих случаях читаемые и со­храняемые данные никак между собой не связаны. Поиском таких участков кода и занимается система Memory Disambiguation.

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

Intel Advanced Digital Media Boost

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


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">


Технологии архитектуры Intel Core i (Nehalem)

Intel Advanced Digital Media Boost

Поэтому при проектировании Core произошла существенная переработка версии SSE2. Новый набор пополнился восьмью инструкциями и получил название SSE3. В этой реализации SSE команды по-прежнему 128-битные, однако выполняются они не за два такта (по 64 бита за такт), как это было в предыдущей версии, а за один.

Это особенно актуально в свете популяризации HDV (видео высокого разрешения), для конвертации RAW-файлов, создаваемых современными цифровыми фотоап­паратами, а также в других ресурсоемких приложениях.

Если учесть, что за счет этого оптимизируется работа с огромными массивами данных, то нетрудно догадаться, какой выигрыш в плане энергоэффективности дает технология Advanced Digital Media Boost.

Логическая схема процессора

Разобравшись с тем, какие технологии обеспечивают повышение производитель­ности процессоров Intel Core 2, можно переходить к знакомству со структурной схемой, на которой отображены логические особенности обработки данных.

Технологии архитектуры Intel Core i (Nehalem)

Логическая схема процессора

На первом этапе работы процессора, построенного на базе микроархитектуры Intel Core, программные инструкции выбираются из кэша L2 (Instruction Fetch), транс­лируются в команды х86 и подлежат предварительному декодированию (Predecode). Далее команды поступают в кэш инструкций (32 Кбайт в L1), где из них органи­зуется очередь (Instruction Queue), а затем из кэша передаются в декодер. При де­кодировании (Decode) команды преобразуются в машинные микрооперации (Micro-Ops).


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">

Архитектура Intel Core предусматривает симметричный декодер 4-4-4-4, то есть каждый из четырех каналов декодера может декодировать инструкции, порожда­ющие до четырех микроопераций.

Большинство команд при декодировании разбивается на две-три микрооперации, однако встречаются и такие команды, для декодирования которых потребовались бы десятки и дажехотни микроопераций. Для этих целей используется специаль­ная ROM-память (uCode ROM), в которой сохраняются программы, состоящие из
последовательности микроопераций, причем каждая такая программа соответ­ствует одной декодированной инструкции.

После процесса декодирования команд начинается этап их исполнения. Первона­чально происходит переименование и распределение дополнительных регистров процессора (Allocate & Rename), которые не определены архитектурой набора команд. Переименование регистров позволяет добиться их бесконфликтного су­ществования.

На следующем этапе (Retirement Unit (ReOrder Buffer)) происходит переупоря­дочение микроопераций не в порядке их поступления (out of order) с тем, чтобы впоследствии можно было реализовать их параллельное выполнение на исполни­тельных блоках.

Далее происходит планирование и распределение микроопераций по исполнитель­ным блокам. Планировщик (Scheduler) формирует очереди микроопераций, в ре­зультате чего микрооперации попадают на один из пяти портов функциональных устройств (dispatch ports). Этот процесс называется диспетчеризацией (Dispatch), а сами порты выполняют функцию шлюза к функциональным устройствам.

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

В архитектуре Intel Core имеются три порта ALU для операций с плавающей за­пятой (Float Point) (FMUL/FPMove, FADD/FPMove, Branch/FPMove), а также по одному порту для записи (Store) и выгрузки (Load) данных из памяти.

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

Логически данные устройства связаны с устройствами вычисления адресов чтения/записи (AGU). Устройства загрузки и выгрузки конвейеризированы и мо­гут одновременно обслуживать большое количество запросов. Они также осуще­ствляют предварительную выборку из оперативной памяти (копирование в кэши тех данных, использование которых ожидается в ближайшее время).


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">

Процесс непосредственного выполнения микроопераций в исполнительных устройствах происходит на последующих ступенях конвейера. Напомним, что эффективная длина конвейера в микроархитектуре Intel Core составляет 14 сту­пеней.

Под эффективной длиной обычно понимается длина конвейера в случае выполнения непредсказанного перехода. К примеру, у процессора Pentium М она составляет 12 ступеней, а у Pentium 4 — от 20 до 30, в зависимости от модели. Как видим, данный процессор относится к классу «короткоконвейерных».

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

Эта технология является самой знаковой за последние 40 лет развития полупро­водниковой промышленности.

Справедливости ради необходимо отметить, что аналогичным техпроцессом овла­дела и IBM, тесно сотрудничающая с AMD. Поэтому скоро нам представится возможность оценить, какие дивиденды из этого смогут извлечь обе компании.

Технология Hyper-Threading в микроархитектуре Nehalem

Как известно, технология Hyper-Threading используется для того, чтобы наиболее эффективно загрузить все имеющиеся исполнительные блоки процессора и тем самым избежать появления пустых циклов. Hyper-Threading была анонсирована компанией Intel еще в 2002 году и по сути является технологией многопоточной обработки команд. Фактически Hyper-Threading позволяет организовать два ло­гических процессора в одном физическом.

Технологии архитектуры Intel Core i (Nehalem)

Технология Hyper-Threading в микроархитектуре Nehalem

Поскольку технология Hyper-Threading, которая реализована в микроархитектуре Nehalem, практически ничем не отличается от технологии Hyper-Threading, применяемой в микроархитетуре Intel Burst.

Иерархия кэш-памяти в архитектуре Nehalem


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">

Одна из главных особенностей новой микроархи­тектуры — это изменение структуры кэш-памяти процессора. Собственно, кэш-память первого уровня (L1) практически не претерпела изменений. Изменился лишь размер TLB-буфера и ассоциативность кэша инструкций.

Если ранее кэш L1 делился на 32-килобайтный кэш данных и 32-килобайтный кэш инструкций и оба кэша являлись восьмиканальными, а размер строки кэша составлял 64 байта, то теперь кэш L1 делится на восьмиканальный 32-килобайтный кэш данных и четырехканальный 32-килобайтный кэш инструк­ций.

К каждому ядру процессора теперь добавлены унифицированный (единый для инструкций и данных) кэш второго уровня (L2) размером 256 Кбайт и разделяемый между всеми ядрами процессора кэш третьего уровня (L3).

Кэш L2 также является восьмиканальным, а размер строки кэша составляет 64 байта. Кэш L3 является 16-канальным. Размер разделяемого кэша L3 может быть различ­ным и зависит от количества ядер процессора. В частности, для четырехъядерного процессора Bloomfield размер ЬЗ-кэша составляет 8 Мбайт.

Кэш L3 является инклюзивным (inclusive) по своей архитектуре по отношению к кэшам L1 и L2, то есть в кэше L3 всегда дублируется содержимое кэшей L1 и L2. Отметим, что кэши L1 и L2 не являются ни инклюзивными, ни эксклюзивными по отношению друг к другу. Использование именно инклюзивного ЬЗ-кэша имеет свои преимущества по сравнению с эксклюзивной архитектурой. Рассмотрим не­сколько характерных примеров чтения данных из кэша L3.

Предположим сначала, что ядро процессора Core 0, обнаружив, что требуемых ему данных нет ни в кэше L1, ни в кэше L2, обращается к кэшу L3 .

Если требуемых данных нет и в кэше L3, то в случае эксклюзивной архитектуры кэша L3 потребовалось бы также проверить наличие требуемых данных в кэшах L1 и L2 каждого из ядер — Core 1, Core 2 и Core 3

В случае инклюзивной архитектуры кэша L3 необходимость в подобной проверке отпадает, поскольку такая архитектура гарантирует, что при отсутствии данных в кэ­ше L3 они будут отсутствовать и в кэшах L1 и L2. Если же требуемые ядру Core О данные обнаруживаются в кэше L3, то при эксклюзивной архитектуре кэша более не требуется предпринимать каких-либо действий, поскольку она гарантирует отсут­ствие таких данных в кэшах L1 и L2 ядер Core 1, Core 2 и Core 3.

При инклюзивной архитектуре кэша L3 наличие требуемых данных в нем означа­ет, что эти данные также содержатся и в каком-то из кэшей ядра Core 1, Core 2 или Core 3. Однако в архитектуре Nehalem в этом случае не требуется дополнительной проверки кэшей L1 и L2 всех остальных ядер.

Достигается это тем, что в тег-поле кэш-строки ЬЗ-кэша записывается, какому из ядер принадлежат данные, поэтому достаточно лишь прочитать содержимое этого тега.


style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-6007240224880862"
data-ad-slot="2494244833">

Необходимо отметить, что новые процессоры Nehalem несовместимы с чипсетами Intel четвертой серии.

Более того, для них придется использовать кулеры с новой системой крепления. Одновременно с выходом процессора Bloomfield — первого четырехъядерного на базе микроархитектуры Nehalem — появились и первые материнские платы на чипсете Intel Х58 Express, имеющем кодовое название Tylersburg.