- •Мп и их роль в современных компьютерах, cisc, risc и epic мп:
- •Поэтому, для risc – процессоров характерно:
- •К преимуществам мп с risc – архитектурой можно отнести:
- •Краткая история развития мп семейства х86:
- •4. Перспективы развития микропроцессорной техники.
- •Основные причины и результаты усовершенствования мп семейства х86:
- •Системные регистры мп семейства х86:
- •Дескрипторные таблицы Дескрипторные таблицы
- •Назначение и структура дескрипторов кода и данных:
- •Назначение и структура системных дескрипторов:
- •Назначение и структура дескрипторов шлюзов:
- •Теневые регистры и их назначение:
- •Регистр флагов и назначение его отдельных битов:
- •Принцип формирования линейных адресов в реальном режиме работы мп семейства х86:
- •Принцип формирования линейных адресов в защищенном режиме работы мп в семействе х86:
- •Страничное преобразование адресов, ее назначение и принцип реализации:
- •Источники и разновидности запросов прерываний процессора:
- •Организация системы прерываний в реальном режиме работы процессоров семейства х86:
- •Организация системы прерываний в защищенном режиме работы процессоров семейства х86:
- •Организация общей (базовой) защиты в мп х86:
- •Защита по привилегиям сегментов и ее организация:
- •Защита по привилегиям команд:
- •Принципы организации многозадачного режима работы:
- •Сегмент состояния задачи, его структура и назначение:
- •Принципы, лежащие в основе использования кэш-памяти, и организация кэш-памяти прямого отображения:
- •Принципы организации полностью ассоциативной и множественно-ассоциативной кэш-памятей:
- •Принципы организации целостности данных в подсистеме памяти с кэшированием:
- •Описание блок-схем алгоритмов обслуживания запросов в подсистеме памяти с кэшированием:
- •4. Двухуровневое кэширование.
- •Принципы организации конвейерной обработки сигналов в мп х86:
- •Циклы шины и режимы работы мп х86:
- •2. Реальный режим (r86)
- •3. Защищенный режим (p – режим)
- •4. Виртуальный режим (v86)
- •5. Режим smm
- •Принципы организации пакетного режима обмена информацией:
- •Основные особенности микроархитектуры Intel Sandy Bridge и ее структурная схема:
- •Сущность принципа «динамического исполнения команд»:
- •Структурная схема ядер мп Sandy Bridge и их функционирование:
- •Необходимость и общие принципы функционирования блока предсказаний ветвлений:
- •Необходимость предварительного и основного декодирования инструкций х86 в мп микроархитектуры Sandy Bridge:
- •Функционирование системы обнаружения программных циклов и суть работы блока pcu в мп микроархитектуры Sandy Bridge:
- •Сущность технологий макро- и микрослияний инструкций и микрокоманд в мп микроархитектуры Sandy Bridge:
Функционирование системы обнаружения программных циклов и суть работы блока pcu в мп микроархитектуры Sandy Bridge:
При проведении выборки программных инструкций необходимо отметить использование усовершенствованного блока обнаружения программных циклов LSD (Loop Stream Detector), емкость которого по сравнению с процессорами Intel Core, увеличилась с 18 до 28 записей, что дает возможность отслеживать и распознавать циклы, содержащие до 28 инструкций. Суть его работы заключается в том, что, обнаружив цикл небольшой длины (до 28 микрокоманд, а таковых циклов большинство), он сохраняет, входящие в его состав микрокоманды в специальном буфере, откуда они и выбираются, если цикл выполняется многократно. Технология LSD позволяет избежать повторов в выполнении таких операций как предсказание ветвлений (Branch Prediction), выборка (Fetch), а при архитектурах Nehalem и Sandy Bridge, также и декодирования (Decode). Дело в том, что сам этот блок (буфер) в процессорах Nehalem и Sandy Bridge располагается после декодера, что увеличивает эффективность работы LSD. Эффективность его работы, при этом, увеличивается именно за счет того, что он имеет дело не с инструкциями из кэш памяти в своем первозданном виде, а с микрокомандами после декодера.
Рис. XII.5 Расположение модуля Loop Stream Detector в процессоре
c микроархитектурой Sandy Bridge
Таким образом, при обнаружении программного цикла инструкций в цикле пропускают фазы предсказания ветвлений в программе (Branch Prediction), выборки (Fetch) и декодирования (Decode), а сами команды генерируются и поступают на дальнейшие ступени конвейера непосредственно из Loop Stream Detector (рис XII.5). С одной стороны, это позволяет снизить энергопотребление ядра процессора, а с другой – обойти фазу выборки команд и детектирования.
Если же в цикле насчитывается более 28 инструкций, то инструкции будут каждый раз проходить все стандартные шаги.
Кэш L0
Одним из наиболее важных нововведений микроархитектуры Sandy Bridge является вновь введенный кэш декодированных микроопераций (Decoded μop Cache), или кэш L0. Он может хранить 1536 микрокоманд (что эквивалентно примерно 6-килобайтному КЭШу Х86 инструкций), с возможностью параллельного ввода и вывода одновременно шести микрокоманд. Кэш L0 кэширует на выходе декодеров все предварительно декодированные микрокоманды. Как только поступает на обработку новая инструкция, блок упреждающей выборки первым делом производит сверку с кэш L0, и в случае обнаружения совпадений, загрузка конвейера четырьмя микрокомандами за такт в обход декодеров осуществляется уже из кэш L0. Таким образом, в этом случае нет необходимости снова проводить выборку и декодирование.
Естественно, что эффективность использования кэш L0 во многом зависит от эффективности работы блока предсказания ветвлений (Branch Prediction Unit, BPU). Незадействованные и простаивающие устройства декодеров, достаточно сложные и поэтому потребляющие довольно много энергии в это время автоматически отключаются от источника питания. Если же кэш декодированных микрокоманд оказывается невостребованным, он переводится в режим экономии энергии, а декодеры продолжают обычную работу по выборке и декодированию инструкций. Кэш L0 в какой-то мере можно считать частью кэш L1, в который он, кстати, интегрирован, но отдельной и очень быстрой его частью. По словам представителей фирмы Intel, при работе с большинством приложений, вероятность удачного попадания в кэш декодированных микрокоманд весьма велика и может достигать 80%.
Блок переименования и распределения дополнительных регистров.
Сформированный поток микрокоманд поступает в блок переименования, распределения и переупорядочения (Rename/Allocate/Retirement), а конкретно в так называемый буфер декодированных, но еще не выполненных команд – Reservation Station (RS), который включает в себя 54 дополнительных регистра, которые не определены архитектурой набора команд. Там же содержится специальный физический регистровый файл, PRF (Physical Register File), который состоит из совокупности регистров, для хранения целочисленных данных, емкостью 160 отдельных 64-битных записей и совокупности регистров для хранения векторно-вещественных данных с плавающей запятой, емкостью 144 256-битных записей, т.е. регистров YMM c новыми векторными командами AVX (х86-64) целиком. В этом регистровом файле фиксируются результаты отслеживания и переименования микроопераций.
Кроме того, этот блок включает в себя буфер переупорядочения ROB (Re-Order Buffer), который служит для реализации алгоритма последовательности исполнения микрокоманд не в порядке их поступления, а таким образом, чтобы впоследствии можно было реализовать их наиболее эффективное выполнение в исполнительных блоках. После чего его задачей является последующее восстановлением их последовательности, которая задана программой. Буфер переупорядочения способен обрабатывать до 168 микроопераций одновременно.
Идея переименования и распределения дополнительных регистров, которые не определены архитектурой набора команд регистров, заключается в следующем. В архитектуре Х86 количество регистров общего назначения сравнительно невелико: доступно восемь регистров в 32-битном режиме, и 16 – в 64 битном. Представим, что исполняемая микрокоманда дожидается загрузки значений операндов в регистр из памяти. Это долгая операция, и хорошо бы на это время разрешить использовать этот регистр для другой команды, операнды которой находятся ближе (например, в кэш-памяти L1). Для этого временно переименовывается «ждущий» регистр и отслеживается история переименования. А «готовому к работе» регистру присваивается стандартное имя, чтобы снабженную операндами команду исполнить прямо сейчас. Когда придут данные из памяти, обращаются к истории переименования и возвращают изначальному регистру его законное, архитектурное, имя. Переименование регистров позволяет добиться исполнения команд вне очереди. Таким образом, техника переименования регистров позволяет сократить простои, а ведение истории переименования применяется для нивелирования конфликтов.
В микроархитектуре Sandy Bridge кластер Allocate/Rename/Retirement (Out-of-Order Cluster) , был изменён существенно. В микропроцессорах предыдущей микроархитектуры Nehalem физические регистровые файлы PRF не применялись и каждая микрооперация имела копию операнда или операндов, которые ей требуются. Фактически это означает, что блоки кластера внеочередного исполнения команд должны быть достаточно большого размера, поскольку должны вмещать микрооперации вместе с необходимыми для них операндами. В микроархитектуре Nehalem операнды могли иметь размер 128 бит, но с введением расширения AVX (Advanced Vector Extension) размер операнда может составлять 256 бит, что требует увеличить в два раза размеры всех блоков кластера внеочередного исполнения команд.
Поэтому вместо этого в микроархитектуре Sandy Bridge используется физический регистровый файл (Physical Register File – PRF), в котором хранятся операнды микроопераций (Рис XI.5).
Sandy Bridge Out-of-Order (OOO) Claster
Рис. XI.5 Использование физических регистровых файлов
в микроархитектуре Sandy Bridge
Это даёт возможность самим микрооперациям сохранять лишь указатели на операнды, но не сами операнды. С одной стороны, такой подход позволяет снизить энергопотребление процессора, поскольку перемещение по конвейеру микроопераций вместе с их операндами требует существенных затрат энергопотребления. С другой стороны, применение физического регистрового файла помогает сэкономить место на кристалле, а высвободившееся пространство использовать для увеличения буферов кластера внеочередного исполнения команд (Load Buffers, Store Buffers, Reoder Buffers). В микроархитектуре Sandy Bridge физический регистровый файл для целочисленных операндов (PRF Integer) рассчитан на 160 записей, а для операндов с плавающей запятой (PRF Float Point) – на 144 записи.
В целом, компоненты блока, в котором формируется информация для наиболее эффективной ее обработки, не в порядке ее поступления в соответствие с программой (Out-of-Order), представлены в табл. X.3.
Табл.X.3
№ п/п |
Наименование компонентов модуля Out-of-Order обработки |
Емкость компонента |
|
|
|
1 |
Буфер переупорядочения – ROB (Re-Order Buffer) |
168 μops |
2 |
Физический регистровый файл – PRF (Physical Register File), Integer |
160×64 bit |
3 |
Физический регистровый файл – PRF (Physical Register File), FP/Vector |
144×256 bit |
4 |
Буфер декодированных, но еще не выполненных микрокоманд – RS (Reservation Station) |
54 μops |
5 |
Буферы записи – Load Buffers |
64×32 bit |
6 |
Буферы чтения – Save Buffers |
36×16 bit |
Загрузка микрокоманд всех типов SIMD, и целочисленных и с плавающей запятой, осуществляется по одинаковому сценарию, единым унифицированным планировщиком-распределителем (Scheduler), динамически распределенным между всеми потоками. Исполнительный модуль (Execution Cluster) включает в себя три вычислительных порта, определенным образом специализированных (Port 0, Port 1 и Port 5), два порта загрузки данных (Port 2, Port3), и порт сохранения (выдачи) данных (Port 4).
Управление адресами загрузки и сохранения данных осуществляется контроллером памяти (Memory Control). Кэш L1 данных представляет собой, четырехканальную (четырехвходовую) множественно-ассоциативную память, емкостью 32 Кбайт, с длиной строки также 16 байт. Таким образом, обмен информацией между памятью кэш L1 данных и исполнительным модулем осуществляется с быстродействием 48 байт за такт (два запроса на чтение по 16 байт и один запрос на запись до 16 байт данных).
Кэш L2 каждого ядра представляет собой также восьмиканальную множественно-ассоциативную память, но емкостью 256 Кбайт каждая, причём компания Intel называет кэш L2 – промежуточным (Midlle Level Cache, MLC).
В заключении рассмотрим наиболее важные технологии, которые используются в микропроцессорах архитектуры Sandy Bridge.
Технология Simultaneous Multi-Threading (SMT)
Технология SMT – это, по сути, новое название технологии HT (Hyper-Threading), которая широко использовалась в процессорах Pentium 4 с микроархитектурой NetBurst. По непонятной причине при переходе к микроархитектуре Intel Core, она была сначала упразднена, но снова появилась в мобильных микропроцессорах Intel Atom, затем, в МП архитектуры Nehalem, а теперь и в Sandy Bridge. Эта технология позволяет одному вычислительному ядру параллельно исполнять два потока команд за счет использования тех элементов ядра, которые простаивают при выполнении одного из потоков. При этом некоторые, особенно часто используемые элементы дублируются. Следовательно, с точки зрения операционной системы, четырехъядерный процессор Sandy Bridge, использующий эту технологию, будет рассматриваться как восьмиядерный. Конечно, в общем случае при этом производительность не будет удваиваться, поскольку эти восемь логических процессоров вынуждены делить между собой общий набор исполнительных модулей вычислительного ядра, однако суммарная производительность оказывается выше, по некоторым данным на 20 – 25%.
Поддержка режима Turbo Mode.
Сутью режима Turbo Mode (или Turbo Boost) является динамическая подстройка тактовых частот ядер процессора и их напряжения питания, в зависимости от уровня их загрузки и температуры процессора. Реализация этой функции возложена на специальный функциональный блок PCU (Power Control Unit), который входит в «System agent» и отслеживает уровень загрузки ядер процессора, температуру процессора, а также отвечает за энергопитание каждого ядра и регулирование его тактовой частоты. Этот блок PCU состоит из более миллиона транзисторов и имеет даже свой микроконтроллер. Если какие-то ядра процессора оказываются незагруженными, они попросту отключаются от линии питания и их энергопотребление становится равным нулю. При этом, тактовая частота и напряжение питания остальных ядер динамически увеличивается, но таким образом, чтобы общее энергопотребление процессора не превышало его TDP (Thermal Designer Power) – проектной мощности тепловыделения.
Более того, режим Turbo Mode в процессорах Intel Core i7 реализуется и в том случае, когда изначально загружаются все ядра процессора, но при этом его энергопотребление не превышает значения TDP. При этом частота каждого ядра может динамически увеличиваться, но так, чтобы энергопотребление процессора не превышало этого, заданного в BIOS значения.
