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

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

Intel Wide Dynamic Execution

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

Intel Wide Dynamic Execution

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

Intel Wide Dynamic Execution

Intel Wide Dynamic Execution

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

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

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

Intel Intelligent Power Capability

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

Intel Intelligent Power Capability

Intel Intelligent Power Capability

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

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

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

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

Intel Advanced Smart Cache

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

Intel Advanced Smart Cache

Intel Advanced Smart Cache

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

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

Intel Smart Memory Access

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

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

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

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

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

Intel Advanced Digital Media Boost

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

Intel Advanced Digital Media Boost

Intel Advanced Digital Media Boost

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

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

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

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

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

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

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

Архитектура 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). Устройства загрузки и выгрузки конвейеризированы и мо­гут одновременно обслуживать большое количество запросов. Они также осуще­ствляют предварительную выборку из оперативной памяти (копирование в кэши тех данных, использование которых ожидается в ближайшее время).

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

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

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

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

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

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

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

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

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

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

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

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

К каждому ядру процессора теперь добавлены унифицированный (единый для инструкций и данных) кэш второго уровня (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 всех остальных ядер. Достигается это тем, что в тег-поле кэш-строки ЬЗ-кэша записывается, какому из ядер принадлежат данные, поэтому достаточно лишь прочитать содержимое этого тега. Перед тем как мы перейдем к архитектуре процессоров AMD, необходимо отметить, что новые процессоры Nehalem несовместимы с чипсетами Intel четвертой серии. Более того, для них придется использовать кулеры с новой системой крепления. Одновременно с выходом процессора Bloomfield — первого четырехъядерного на базе микроархитектуры Nehalem — появились и первые материнские платы на чипсете Intel Х58 Express, имеющем кодовое название Tylersburg.