ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 26.10.2023
Просмотров: 665
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
АРХИТЕКТУРЫ, ХАРАКТЕРИСТИКИ, КЛАССИФИКАЦИЯ ЭВМ
3. ФУНКЦИОНАЛЬНАЯ И СТРУКТУРНАЯ
4. ПРИНЦИПЫ ОРГАНИЗАЦИИ ПОДСИСТЕМЫ ПАМЯТИ ЭВМ И ВС
ОРГАНИЗАЦИЯ СИСТЕМНОГО ИНТЕРФЕЙСА И ВВОДА/ВЫВОДА ИНФОРМАЦИИ
МНОГОПРОЦЕССОРНЫЕ И МНОГОМАШИННЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ
манд. Если в потоке команд оказывается команда условного перехода (ветвление программы), то включается механизм предсказания ветвле- ния, который формирует адрес следующей выбираемой команды до то- го, как будет определено условие выполнения перехода. Если предска- зывается выполнение ветвления, то выбирается и загружается в конвей- ер команда, размещенная по предсказанному адресу.
В дополнение к уже имеющемуся в Intel Core блоку предсказания переходов был добавлен в Nehalem ещё один «предсказатель» второго уровня. Он работает медленнее, чем первый, но зато благодаря более вместительному буферу, накапливающему статистику переходов, обла- дает лучшей глубиной анализа.
Далее, разделенные х86 инструкции (Pre Decode) на простые и сложные организуются в виде очередей (Instruction Queues) на входах четырех декодеров. Декодеры преобразуют х86 команды в микрокоман- ды, под управлением которых в процессоре выполняются элементарные операции (микрооперации). Как в Intel Core, три декодера используются для обработки простых инструкций, один – для сложных. Каждая про- стая х86 инструкция преобразуется в 1–2 микрокоманды, а для сложной инструкции из памяти микрокода (u Code ROM) выбирается последова- тельность микрокоманд (микропрограмма), которая содержит более двух микрокоманд (технология micro-ops fusion). Используя технологию macro fusion, четыре декодера могут обработать одновременно пять х86 команд, преобразуя их в четыре микрокоманды.
В Nehalem увеличилось число пар x86 команд, декодируемых в рамках этой технологии «одним махом». Кроме того, технология macro fusion стала работать и в 64-битном режиме, в то время как в про- цессорах семейства Core 2 она могла активироваться лишь при работе процессора
с 32-битным кодом.
Следующее усовершенствование, связанное с повышением продук- тивности начальной части исполнительного конвейера, коснулось блока обнаружения циклов в программе Loop Stream Detector. Этот блок по- явился впервые в процессорах с микроархитектурой Core и предназна- чался для ускорения обработки циклов. Определяя в программе циклы небольшой длины, Loop Stream Detector (LSD) сохранял их в специаль- ном буфере, что давало возможность процессору обходиться без их многократной выборки из кэша и предсказания переходов внутри этих
циклов. В процессорах Nehalem блок LSD стал ещё более эффективен благодаря его переносу за стадию декодирования инструкций. Иными словами, теперь в буфере LSD сохраняются циклы в декодированном виде, из-за чего этот блок стал несколько похож на Trace Cache процес- соров Pentium 4. Однако Loop Stream Detector в Nehalem – это особен- ный кэш. Во-первых, он имеет очень небольшой размер, всего 28 мик- роопераций, во-вторых, в нём сохраняются исключительно циклы.
После декодирования производится переименование регистров, пе- реупорядочение (Retirement Unit) и сохранение до момента выполнения 128 микрокоманд в буфере (Reorder Buffer). Это количество микроко- манд на 33 % больше, чем в Intel Core (96 микрокоманд).
На следующем этапе планировщик (Scheduler) через станцию ре- зервирования (Reservation Station – RES) вместимостью до 36 инструк- ций (Intel Core – 32 инструкции) отправляет микрокоманды непосред- ственно на исполнительные устройства.
Также как Core 2, процессоры с микроархитектурой Nehalem спо- собны отправлять на выполнение до шести микроопераций одновре- менно. В каждом ядре процессора Intel Nehalem используются три уни- версальных порта (Port0, Port1, Port5) для связи с различными исполни- тельными устройствами, два порта (Port3, Port4) – для организации за- писи/загрузки (Store) адреса и данных в память и один (Port2) для орга- низации чтения/выгрузки (Load) данных из памяти. Универсальные порты осуществляют связь с тремя блоками – для обработки целочис-
ленных 64-битных данных (ALU), выполнения сдвигов (Shift) и опера- ций сравнения (LEA); с тремя блоками – для обработки чисел с плава- ющей точкой (FAdd, FMul, FPShuffes); с тремя 128-битными блоками для обработки потоковых данных (SSE); с одним блоком – для исполне- ния переходов (Branch); со специальными блоками Divide (деление), Complex Integer (сложные целочисленные операции).
В данном процессоре (ядре), как и в любом другом современном процессоре, реализована конвейерная технология обработки команд. Длина каждого из четырех конвейеров составляет 14 ступеней.
В микроархитектуре Nehalem Intel продолжила взятый ранее курс на увеличение числа поддерживаемых SIMD инструкций. Пополненный набор команд расширился за счет семи новых инструкций и получил название SSE4.2. В SSE4.2 добавлено пять инструкций, предназначенных для ускорения синтаксического анализа XML-файлов. Также с помощью этих же инструкций возможно увеличение скорости обработки строк и текстов. Ещё две новые инструкции из набора SSE4.2 нацелены на совер- шенно иные приложения. Первая из них аккумулирует контрольную сум- му, а вторая подсчитывает число ненулевых бит в источнике.
От двухуровневой структуры кэш-памяти в Intel Core с общим на каждые два ядра L2 кэшем в процессорах Nehalem остался только кэш первого уровня суммарным объёмом 64 Кб, который делится на две равные части для хранения инструкций и данных. Использование разде- ляемого L2 кэша оказалось весьма проблематичным при увеличении ко- личества ядер, и поэтому в микроархитектуре Nehalem, предполагаю- щей наличие в процессоре до 8 ядер, кэш второго уровня не является разделяемым. Каждое из ядер получило свой собственный L2 кэш со сравнительно небольшим объёмом – 256 Кбайт.
К двум уровням кэша в Nehalem добавился и L3 кэш, который объ- единяет ядра между собой и является разделяемым. В результате L2 кэш выступает буфером при обращениях процессорных ядер в раз- деляемую кэш-память, имеющую достаточно большой объём.
Кэш L3 в Nehalem работает на более высокой частоте, которая для первых представителей этого семейства установлена равной 2,66 ГГц. Разработчики Intel не стал отказываться от дублирования данных, хра- нящихся в кэшах первого и второго уровней, в L3 кэше, что обеспечи- вает в многоядерных процессорах более высокую скорость работы под- системы памяти.
Несмотря на кардинальный пересмотр системы кэширования, алго- ритмы работы блоков предварительной выборки не изменились, они в Nehalem целиком позаимствованы из Intel Core. Это означает, что упреждающая выборка данных и инструкций производится только в кэш-память первого и второго уровня. Даже при использовании старых алгоритмов, результативность работы блоков предварительной выборки улучшилась. Объясняется это тем, что L2 кэш в Nehalem индивидуален для каждого ядра, а при такой организации кэш-памяти гораздо легче
отслеживать шаблоны в обращениях. Благодаря появлению L3 кэша ра- бота блока предварительной выборки не наносит существенного ущерба пропускной способности шины памяти.
Кроме того, существенно увеличился размер TLB (Translation- Lookaside Buffer). TLB – это высокоскоростной буфер, который исполь- зуется для установления соответствия между виртуальными и физиче- скими адресами страниц. Увеличение размера TLB, таким образом, поз- воляет повысить число страниц памяти, которые могут быть одновре- менно использованы без дополнительных дорогостоящих преобразова- ний по таблицам трансляции адресов, находящимся в обычной памяти. Более того, TLB в процессорах Nehalem стал двухуровневым. Фактиче- ски к унаследованному от процессоров Core 2 TLB был добавлен ещё
один буфер второго уровня. При этом новый L2 TLB отличается не только высокой вместительностью, позволяющей сохранять до 512 за- писей, но и сравнительно низкой латентностью. Ещё одна особенность L2 TLB заключается в том, что он унифицирован и способен транслиро- вать адреса страниц любого размера. Изменения в системе TLB сделаны в первую очередь с прицелом на серверные приложения, активно опе- рирующие большими объёмами памяти. Однако и в «настольных» зада- чах увеличенное число вхождений TLB может оказать положительное влияние на быстродействие подсистемы памяти.
Возвращение в Nehalem технологии SMT – одно из самых суще- ственных нововведений, способных положительно повлиять на произ- водительность (в процессорах Pentium 4 эта же технология преподноси- лась под маркетинговым именем Hyper-Threading).
Внедрение SMT в Nehalem не потребовало существенного увели- чения сложности процессора. Продублированы в ядре фактически лишь процессорные регистры. Все остальные ресурсы при включении SMT разделяются в процессоре между потоками динамически
В дополнение к уже имеющемуся в Intel Core блоку предсказания переходов был добавлен в Nehalem ещё один «предсказатель» второго уровня. Он работает медленнее, чем первый, но зато благодаря более вместительному буферу, накапливающему статистику переходов, обла- дает лучшей глубиной анализа.
Далее, разделенные х86 инструкции (Pre Decode) на простые и сложные организуются в виде очередей (Instruction Queues) на входах четырех декодеров. Декодеры преобразуют х86 команды в микрокоман- ды, под управлением которых в процессоре выполняются элементарные операции (микрооперации). Как в Intel Core, три декодера используются для обработки простых инструкций, один – для сложных. Каждая про- стая х86 инструкция преобразуется в 1–2 микрокоманды, а для сложной инструкции из памяти микрокода (u Code ROM) выбирается последова- тельность микрокоманд (микропрограмма), которая содержит более двух микрокоманд (технология micro-ops fusion). Используя технологию macro fusion, четыре декодера могут обработать одновременно пять х86 команд, преобразуя их в четыре микрокоманды.
В Nehalem увеличилось число пар x86 команд, декодируемых в рамках этой технологии «одним махом». Кроме того, технология macro fusion стала работать и в 64-битном режиме, в то время как в про- цессорах семейства Core 2 она могла активироваться лишь при работе процессора
с 32-битным кодом.
Следующее усовершенствование, связанное с повышением продук- тивности начальной части исполнительного конвейера, коснулось блока обнаружения циклов в программе Loop Stream Detector. Этот блок по- явился впервые в процессорах с микроархитектурой Core и предназна- чался для ускорения обработки циклов. Определяя в программе циклы небольшой длины, Loop Stream Detector (LSD) сохранял их в специаль- ном буфере, что давало возможность процессору обходиться без их многократной выборки из кэша и предсказания переходов внутри этих
циклов. В процессорах Nehalem блок LSD стал ещё более эффективен благодаря его переносу за стадию декодирования инструкций. Иными словами, теперь в буфере LSD сохраняются циклы в декодированном виде, из-за чего этот блок стал несколько похож на Trace Cache процес- соров Pentium 4. Однако Loop Stream Detector в Nehalem – это особен- ный кэш. Во-первых, он имеет очень небольшой размер, всего 28 мик- роопераций, во-вторых, в нём сохраняются исключительно циклы.
После декодирования производится переименование регистров, пе- реупорядочение (Retirement Unit) и сохранение до момента выполнения 128 микрокоманд в буфере (Reorder Buffer). Это количество микроко- манд на 33 % больше, чем в Intel Core (96 микрокоманд).
На следующем этапе планировщик (Scheduler) через станцию ре- зервирования (Reservation Station – RES) вместимостью до 36 инструк- ций (Intel Core – 32 инструкции) отправляет микрокоманды непосред- ственно на исполнительные устройства.
Также как Core 2, процессоры с микроархитектурой Nehalem спо- собны отправлять на выполнение до шести микроопераций одновре- менно. В каждом ядре процессора Intel Nehalem используются три уни- версальных порта (Port0, Port1, Port5) для связи с различными исполни- тельными устройствами, два порта (Port3, Port4) – для организации за- писи/загрузки (Store) адреса и данных в память и один (Port2) для орга- низации чтения/выгрузки (Load) данных из памяти. Универсальные порты осуществляют связь с тремя блоками – для обработки целочис-
ленных 64-битных данных (ALU), выполнения сдвигов (Shift) и опера- ций сравнения (LEA); с тремя блоками – для обработки чисел с плава- ющей точкой (FAdd, FMul, FPShuffes); с тремя 128-битными блоками для обработки потоковых данных (SSE); с одним блоком – для исполне- ния переходов (Branch); со специальными блоками Divide (деление), Complex Integer (сложные целочисленные операции).
В данном процессоре (ядре), как и в любом другом современном процессоре, реализована конвейерная технология обработки команд. Длина каждого из четырех конвейеров составляет 14 ступеней.
В микроархитектуре Nehalem Intel продолжила взятый ранее курс на увеличение числа поддерживаемых SIMD инструкций. Пополненный набор команд расширился за счет семи новых инструкций и получил название SSE4.2. В SSE4.2 добавлено пять инструкций, предназначенных для ускорения синтаксического анализа XML-файлов. Также с помощью этих же инструкций возможно увеличение скорости обработки строк и текстов. Ещё две новые инструкции из набора SSE4.2 нацелены на совер- шенно иные приложения. Первая из них аккумулирует контрольную сум- му, а вторая подсчитывает число ненулевых бит в источнике.
Новая структура кэш-памяти
От двухуровневой структуры кэш-памяти в Intel Core с общим на каждые два ядра L2 кэшем в процессорах Nehalem остался только кэш первого уровня суммарным объёмом 64 Кб, который делится на две равные части для хранения инструкций и данных. Использование разде- ляемого L2 кэша оказалось весьма проблематичным при увеличении ко- личества ядер, и поэтому в микроархитектуре Nehalem, предполагаю- щей наличие в процессоре до 8 ядер, кэш второго уровня не является разделяемым. Каждое из ядер получило свой собственный L2 кэш со сравнительно небольшим объёмом – 256 Кбайт.
К двум уровням кэша в Nehalem добавился и L3 кэш, который объ- единяет ядра между собой и является разделяемым. В результате L2 кэш выступает буфером при обращениях процессорных ядер в раз- деляемую кэш-память, имеющую достаточно большой объём.
Кэш L3 в Nehalem работает на более высокой частоте, которая для первых представителей этого семейства установлена равной 2,66 ГГц. Разработчики Intel не стал отказываться от дублирования данных, хра- нящихся в кэшах первого и второго уровней, в L3 кэше, что обеспечи- вает в многоядерных процессорах более высокую скорость работы под- системы памяти.
Несмотря на кардинальный пересмотр системы кэширования, алго- ритмы работы блоков предварительной выборки не изменились, они в Nehalem целиком позаимствованы из Intel Core. Это означает, что упреждающая выборка данных и инструкций производится только в кэш-память первого и второго уровня. Даже при использовании старых алгоритмов, результативность работы блоков предварительной выборки улучшилась. Объясняется это тем, что L2 кэш в Nehalem индивидуален для каждого ядра, а при такой организации кэш-памяти гораздо легче
отслеживать шаблоны в обращениях. Благодаря появлению L3 кэша ра- бота блока предварительной выборки не наносит существенного ущерба пропускной способности шины памяти.
Кроме того, существенно увеличился размер TLB (Translation- Lookaside Buffer). TLB – это высокоскоростной буфер, который исполь- зуется для установления соответствия между виртуальными и физиче- скими адресами страниц. Увеличение размера TLB, таким образом, поз- воляет повысить число страниц памяти, которые могут быть одновре- менно использованы без дополнительных дорогостоящих преобразова- ний по таблицам трансляции адресов, находящимся в обычной памяти. Более того, TLB в процессорах Nehalem стал двухуровневым. Фактиче- ски к унаследованному от процессоров Core 2 TLB был добавлен ещё
один буфер второго уровня. При этом новый L2 TLB отличается не только высокой вместительностью, позволяющей сохранять до 512 за- писей, но и сравнительно низкой латентностью. Ещё одна особенность L2 TLB заключается в том, что он унифицирован и способен транслиро- вать адреса страниц любого размера. Изменения в системе TLB сделаны в первую очередь с прицелом на серверные приложения, активно опе- рирующие большими объёмами памяти. Однако и в «настольных» зада- чах увеличенное число вхождений TLB может оказать положительное влияние на быстродействие подсистемы памяти.
Реализация многопоточности
Возвращение в Nehalem технологии SMT – одно из самых суще- ственных нововведений, способных положительно повлиять на произ- водительность (в процессорах Pentium 4 эта же технология преподноси- лась под маркетинговым именем Hyper-Threading).
Внедрение SMT в Nehalem не потребовало существенного увели- чения сложности процессора. Продублированы в ядре фактически лишь процессорные регистры. Все остальные ресурсы при включении SMT разделяются в процессоре между потоками динамически