Обзор архитектуры процессоров Pentium, Pentium PRO, Pentium II фирмы Intel.
Процессор Pentium – P54.
Выпущен в 1993 г. Разрядность шины адреса – 32 бита, таким образом, максимальный
размер адресуемой памяти равен 4 Гб. Разрядность шины данных – 64 бита.
Процессоры P54 включают в себя:
Суперскалярная архитектура – два параллельно работающих конвейера обработки
позволяют одновременно обрабатывать до двух инструкций за такт. Конвейеры носят
названия U и V. U-конвейер (U-pipeline) – это АЛУ с полным набором инструкций,
он может исполнять все целочисленные инструкции и инструкции с плавающей точкой.
V-конвейер (V-pipeline) – АЛУ с ограниченным набором инструкций, может исполнять
только простые (выполняемые за один такт – MOV, INC, DEC и т.п.) инструкции –
черты RISC-архитектуры.
На кристалле интегрирован ассоциативный кэш первого уровня – L1 размером 16К,
который включает в себя раздельные кэши команд и данных (по 8К для команд и для
данных). Кэш может быть сконфигурирован как WT (write-trough) – со сквозной
записью либо с обратной записью –WB (write-back). Вкратце алгоритм работы WT и
WB выглядят так: при сквозной записи (write-through) каждая операция записи
одновременно выполняется и в строку кэша, и в ОЗУ. При этом, ЦП при каждой
операции записи вынужден ждать окончания относительно долгой записи в ОЗУ.
Алгоритм WB (обратная запись) позволяет уменьшить количество операций записи на
шине основной памяти. Если блок памяти, в который должна производиться запись
отображён и в кэше, то физическая запись сначала будет воспроизведена в эту
действительную строку кэша, и она будет отмечена как грязная (dirty) или
модифицированная, т.е. требующая выгрузки в ОЗУ. Только после этой выгрузки
строка станет чистой (clean) и её можно будет использвать для кэширования других
блоков без потери целостности данных. В ОЗУ данные переписываются только целой
строкой.
Каждый из кэшей включает в себя строки длиной 32 байта и содержит буфер TLB –
буфер преобразования линейных адресов в физические. Кэш поддерживает протокол
MESI, названный по определяемым им состояниям: Modified, Exclusive, Shared и
Invalid.
M-state – строка присутствует только в одном кэше и она модифицирована. Доступ к
этой строке возможен без регенерации внешнего цикла (по отношению к локальной
шине).
E-state - строка присутствует только в одном кэше, но она не модифицирована.
Доступ к этой строке возможен без регенерации внешнего цикла. При записи в неё
она перейдёт в состояние “M”.
S-state – строка может присутствовать в нескольких кэшах. Её чтение возможно без
регенерации внешнего цикла, а запись в неё должна сопровождаться сквозной
записью в ОЗУ, что повлечёт за собой аннулирование соответствующих строк в
других кэшах.
I-state – строка отсутствуует в кэше, её чтение может привести к генерации цикла
заполнения строки. Запись в неё будет сквозной и выйдет на внешнюю шину.
Процессор имеет встроенный усовершенствованный блок вычисления с плавающей
точкой. Быстрые алгоритмы полностью переработанного со времён 487-сопроцессоров
FPU обеспечивают более чем десятикратное увеличение скорости при работе с
основными операциями, включающими ADD, MUL, LOAD и т.п. по сравнению с 487.
Конвейерная организация позволяет обрабатывать две целочисленные операции и одну
(а при определённых условиях и две) операцию с плавающей точкой за такт.
Применена технология динамического предсказания ветвлений, для этого введены два
буфера предвыборки.
Введена возможность оперирования страницами размером 4 Мб в режиме страничной
переадресации.
Введено расширение архитектуры (относительно базовой архитектуры 32-х разрядных
МП) – добавлены новые регистры и команды. Сюда входит, например, инструкция
CPUID, позволяющая в любой момент времени получить сведения о классе, модели и
архитектурных особенностях данного ЦП. К расширению также относятся и регистры,
специфические для модели, их можно разделить на 3 группы:
тестовые регистры TR1...TR12. Они позволяют управлять большинством
функциональных узлов ЦП, обеспечивая возможность тестирования их
работоспособности: с помощью битов регистра TR12 можно запретить новые
архитектурные свойства (предскизиние и трассировку ветвлений, параллельное
выполнение инструкций), а также работу кэша L1.
средства мониторинга произволительности . Сюда входят таймер реального времени
(TSC) – 64 битный счётчик, работающий на инкремент с каждым тактом ядра ЦП,
для его чтения предназначена команда RDTSC; счётчики событий CTR0 и CTR1 – оба
разрядностью 40 бит, программируются на подсчёт событий различных классов,
связанных с шинными операциями, исполнением инструкций, работой конвейеров,
кэша и т.п.
регистры-фиксаторы адреса и данных цикла, вызвавшего срабатывание контроля
машинной ошибки.
Применено выявление ошибок внутренних устройств (внутренний контроль паритета) и
внешнего интерфейса шины, контроль паритета шины адреса.
В состав чипа введён APIC (Advanced Programmable Interrupt Controller) –
расширенный программируемый контроллер прерываний.
Реализована возможность построения многопроцессорных (максимальное количестно ЦП
– 2 штуки) систем двух типов: SMP – синхронная многопроцессорная обработка, и
FRC – функционально избыточная система.
Режим SMP (поддерживают процессоры Pentium начиная со второго поколения –
Pentium 75 и далее). Каждый ЦП выполняет свою задачу, порученную ему
операционной системой (Novell NetWare, OS/2, Windows NT, UNIX). При этом оба ЦП
разделяют общие ресурсы компьютера, включая память и внешние устройства. В
каждый момент времени шиной может управлять только один процессор из двух, по
определённым правилам они меняются ролями. Для обработки аппаратных прерываний
традиционные аппаратные средства становятся непригодными, так как пежняя схема
подачи запроса INTR и передачи вектора в цикле INTA# ориентирована на
единственность ЦП. Для решения этой задачи в структуру Pentium начиная со
второго поколения был включён APIC. Этот контроллер имеет внешние сигналы
локальных прерываний (LINT) и трёхпроводную интерфейсную шину, по которой оба
процессора связываются с контроллером перываний на системной плате. Запросы
локальных прерываний обслуживает процессор, на выводы которого поступают их
сигналы; общие (разделяемые) прерывания приходят к процессорам в виде сообщений
по интерфейсу APIC. Таким образом, контроллеры APIC каждого из процессоров и
контроллер прерываний на системной плате, связанные интерфейсом APIC выполняют
маршрутизацию прерываний.
В режиме FRC оба процессора (один – Master, второй – Checker) выступают как один
логический. Основной процессор (Master) работает в обычном однопроцессорном
режиме. Проверяющий (Checker) выполняет все те же операции вхолостую, не
управляя шиной, и сравнивает выходные сигналы основного с теми, которые
генерирует он сам. В случае обнаружения расхождения вырабатывается сигналл
ошибки IERR, который может обрабатываться как прерывание.
При построении многопроцессорной системы можно использовать поцессоры разного
степпинга, но частоты ядра должны совпадать (шина синхронизируется общим
сигналом).
Блок-диаграмма процессоров P54 расположена ниже:
Ниже приведена диаграмма мультипроцессорной системы:
Процессор Pentium MMX – P55C.
В 1996 году Intel разработала процессор с новым расширением, ориентированным на
применение в мультимедиа, 2D и 3D графику. Итак, P55C это:
Увеличенные кэши команд и данных – по 16К каждый.
Расширенная CMOS (E-CMOS) технология позволила расположить на кристалле 4.5
миллионов транзисторов.
Увеличено количество ступеней конвейера.
Улучшен способ предсказания ветвлений (он был позаимствован у Pentium PRO).
Количество буферов записи увеличено вдвое, их теперь четыре.
Для мультипроцессорной системы реализован только режим SMP, FRC исключён.
И, наконец, самое интересное! На кристалле расположен новый блок – блок MMX
(Multi Media Extention), который позволяет обрабатывать целочисленные данные
(определённого типа – нового) методом SIMD (Single Instruction Multiple Data) –
одна инструкция параллельно обрабатывает несколько данных. Для реализации блока
MMX были введены:
восемь дополнительных 64-битных регистра (ММ0...ММ7)
четыре новых целочисленных типа данных. Регистры MMX могут содержать упакованные
64-битные типы данных – упакованные байты, упакованные слова, упакованные
даойные слова и квадро-слова (смотри рисунок).
57 новых инструкций для одновременной обработки нескольких единиц данных
одновременно.
На самом деле, регистры MMX физически расположены в стеке регистров FPU, так что
новых регистров этот процессор не предоставляет, и чередование использования
программой инструкций FPU и MMX приводит к снижению эффективности работы,
связанному с необходимостью пересылок данных из стека в память и обратно. В
принципе, эффективность MMX вызывает некоторые сомнения, так как те функции, для
которых они целесообразны, с неоспоримо большим успехом выполняются графическими
акселераторами, которые уже стали обыденными J. К тому же для использования
новых команд необходима перекомпиляция ПО. Можно предположить, что введение MMX
является первой ступенью в маниакальном стремлении Intel перенести всю работу в
ПК на плечи центрального процессора, получившем дальнейшее распространение в
Katmai (Pentium III) в виде новых KNI (SSE)-команд (вспомним рекламу: Pentium
III – новые возможности Internet, хе-хе).
Блок-диаграмму процессора P55C можно увидеть здесь:
Процессор P6 – Pentium PRO.
Революционная вещь в своём роде. Выпущен где-то в районе 1995 года. Первые
экземпляры были выполнены по 0.6 мкм BiCMOS-технологии. Тройная суперскалярная
архитектура (конвейер имеет 12 уровней и поддерживает динамическое выполнение
инструкций) – возможно выполнение 3-х команд за такт.
Шина адреса расширена до 36 разрядов, соответственно максимальный размер
адресуемой памяти составляет 64 Гб. Разрядность шины данных – 64 бита.
Кэши. Кэш L1 состоит, как и в предыдущих процессорах, из кэша команд + кэша
данных, оба по 8К. На кристалле (!) интегрирован синхронный кэш второго уровня
L2 объёмом 256К, 512К либо 1024К. В поздних версиях его размер достигает 2М. Кэш
L2 подключен к внутренней шине и работает на частоте ядра.
В процессорах этой серии применяется технология динамического исполнения, т.е.
внутри процессора инструкции могут выполняться не в том порядке, который
предполагает программный код. При этом команды, не зависящие от результатов
предыдущих операций, могут быть выполнены в изменённом порядке, но
последовательность выгрузки результатов в память и порты будет соответствовать
исходному программному коду. ( Почему это тем не менее машина фон-Неймана ? А
потому, что подтверждения выставляются в том порядке, который предполагает
программный код). Динамическое исполнение включает в себя:
Глубокий прогноз ветвлений, который позволяет декодировать инструкции за
пределами ветвлений, чтобы поддерживать конвейер в максимально полном состоянии
(не давать ему простаивать). Этим занимается модуль Fetch/Decode (см. рисунок),
использующий оптимизированные алгоритмы прогноза.
Динамический анализ потока данных. Модуль Dispatch/Execute может одновременно
проверить несколько инструкций и выполнить их в том порядке, который наиболее
оптимален. Он выполняет все доступные инструкции, записывает их в пул
инструкций, и сохраняет результаты во временных регистрах; после чего устройство
Retire просматривает пул инструкций с целью выделить те из них, результат
выполнения которых уже не зависит от выполнения других инструкций. Когда такие
завершённые инструкции обнаруживаются, Retire Unit отправляет результаты
выполнения этих инструкций в память и/или в регитры общего назначения и регистры
данных FPU, в порядке следования, предписанным программой.
Интеллектуальное выполнение. Это свойство выражается в возможности процессора
выполнять команды опережая программный счётчик, но в то же время позволяет
получать результаты, соответствующие выполнению команд в исходной
последовательности.
В Pentium PRO применена архитектура двойной независимой шины (Dual Independent
Bus). Одна шина – системная – служит для общения ядра с основной памятью и
интерфейсными устройствами, другая – внутренняя – предназначена исключительно
для обмена со вторичным кэшем. Применение динамического исполнения резко
повышает частоту запросов процессорного ядра к шине за данными памяти и
инструкциями, поскольку ядро одновременно обрабатывает нескольео инструкций. Для
обхода узкого места – внешней шины – кристалл процессорного ядра и использует
технологию двойной независимой шины. Значительный объём вторичного кэша
позволяет удовлетворять большинство запросов к памяти сугубо локально, при этом
коэффициент загрузки шины достигает 90% (необходимо заметить, что обмен данными
по внутренней шине происходит значительно быстрее, чем по внешней, так как кэш
L2 работает на частоте ядра, то есть порядка 200 МГц). Вторая шина процессорного
кристалла выходит на внешние выводы микросхемы, она и является системной шиной
процессора Pentium PRO. Эта шина работает на внешней частоте (66,6 МГц)
независимо от внутренней шины. Загрузка процессором внешней шины для обычных
рядовых применений составляет порядка 10% от её пропускной способности, а для
серверных применений может достигать 60% при четырёхпроцессорной конфигурации.
Таким образом, ограниченная пропускная способность внешней шины (533 Мбайт/с в
пике пакетной передачи) перестаёт сильно сдерживать производительность
процессора. Снижение нагрузки на внешнюю шину позволяет эффективно использовать
многопроцессорную архитектуру.
В систему команд введены инструкции условной пересылки данных, позволяющие
сократить количество условных переходов. При этом повышается предсказуемость
кода, отсюда и эффективность использования конвейера.
Интерфейс системной шины рассчитан на объединение до четырёх процессоров в
симметричнцю мультипроцессорную систему (SMP).
Разъём для установки – ZIF Socket 8.
В заключении можно заметить, что Pentium PRO всегда был достаточно дорогим
процессором из-за низкого процента полезного выхода кристаллов с пластины, так
как чаще всего кристалл отбраковывался из-за плохого качества кэша L2, к
качеству большого объёма которого предъявляются очень жёсткие требования.
Процессор Pentium II.
Фактически Pentium II является продолжением линейки Pentium PRO с новыми
усовершенствованиями а также упрощениями, введёнными для удешевления
себестоимости процессора. Эта модель появилась в 1997 году. Основные отличия
(рассматриваем самые ранние PII на ядре Klamath/Deschutes) от PRO:
Разрядность шины адреса и шины данных как и у PRO – 36/64 бита.
Несколько усовершенствованный конвейер.
Увеличен размер L1-кэша. Теперь это 16К+16К под команды и данные соответственно.
Кэш второго уровня убран с кристалла и расположен в виде двух микросхем на
процессорной плате, размер – 512К . Работает на половинной частоте ядра.
Всё та же архитектура двойной независимой шины.
Имеется блок для выполненияMMX – инструкций (чего не было в PRO, так как он
вышел ещё до P55C – Pentium MMX).
Возможно объединение двух процессоров в многопроцессорную систему, работающую в
режиме SMP.
Конструктивно выполнен иначе. Сам процессор расположен на процессорной плате с
печатным краевым разъёмом (картридж S.E.C.C.), на ней же располагаются две
микросхемы кэша L2. Разъём для картриджа – Slot1 (Slot2 для Xeon, SlotM для
Merced...).