Обзор архитектуры процессоров Intel

Процессор Pentium – P54. Выпущен в 1993 г.
Разрядность шины адреса – 32 бита, таким образом, максимальный размер адресуемой
памяти равен 4 Гб. Разрядность шины данных – 64 бита. – два параллельно работающих
конвейера обработки позволяют одновременно обрабатывать до двух инструкций за
такт. Конвейеры носят названия 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,
названный по определяемым им состояниям: – строка присутствует только в одном кэше и она
модифицирована. Доступ к этой строке возможен без регенерации внешнего цикла (по
отношению к локальной шине). - строка присутствует только в
одном кэше, но она не модифицирована. Доступ к этой строке возможен без
регенерации внешнего цикла. При записи в неё она перейдёт в состояние
"M". – строка может присутствовать в нескольких кэшах. Её
чтение возможно без регенерации внешнего цикла, а запись в неё должна
сопровождаться сквозной записью в ОЗУ, что повлечёт за собой аннулирование
соответствующих строк в других кэшах. – строка отсутствуует в
кэше, её чтение может привести к генерации цикла заполнения строки. Запись в неё
будет сквозной и выйдет на внешнюю шину. Процессор имеет встроенный
усовершенствованный блок вычисления с плавающей точкой. Быстрые алгоритмы
полностью переработанного со времён 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, который может обрабатываться как прерывание. При
построении многопроцессорной системы можно использовать поцессоры разного
степпинга, но частоты ядра должны совпадать (шина синхронизируется общим
сигналом). Ниже
приведена диаграмма мультипроцессорной системы: Процессор Pentium MMX – P55C. В 1996 году Intel
разработала процессор с новым расширением, ориентированным на применение в
мультимедиа, 2D и 3D графику. Итак, P55C это: Расширенная CMOS (E-CMOS) технология позволила
расположить на кристалле 4.5 миллионов транзисторов. Улучшен способ предсказания ветвлений (он был
позаимствован у Pentium PRO). Для мультипроцессорной системы реализован только режим SMP, FRC
исключён. И, наконец, самое интересное! На кристалле расположен новый блок –
блок MMX (Multi Media Extention), который позволяет обрабатывать целочисленные
данные (определённого типа – нового) методом SIMD (Single Instruction Multiple
Data) – одна инструкция параллельно обрабатывает несколько данных. Для
реализации блока MMX были введены: четыре новых целочисленных типа данных. Регистры MMX могут
содержать упакованные 64-битные типы данных – упакованные байты, упакованные
слова, упакованные даойные слова и квадро-слова (смотри рисунок). 57
новых инструкций для одновременной обработки нескольких единиц данных
одновременно. На самом деле, регистры MMX физически расположены в стеке
регистров FPU, так что новых регистров этот процессор не предоставляет, и
чередование использования программой инструкций FPU и MMX приводит к снижению
эффективности работы, связанному с необходимостью пересылок данных из стека в
память и обратно. В принципе, эффективность MMX вызывает некоторые сомнения, так
как те функции, для которых они целесообразны, с неоспоримо большим успехом
выполняются графическими акселераторами, которые уже стали обыденными . К тому же для использования новых команд
необходима перекомпиляция ПО. Можно предположить, что введение MMX является
первой ступенью в маниакальном стремлении Intel перенести всю работу в ПК на
плечи центрального процессора, получившем дальнейшее распространение в Katmai
(Pentium III) в виде новых KNI (SSE)-команд (вспомним рекламу: Pentium III –
новые возможности Internet, хе-хе). Революционная
вещь в своём роде. Выпущен где-то в районе 1995 года. Первые экземпляры были
выполнены по 0.6 мкм BiCMOS-технологии. Тройная суперскалярная архитектура
(конвейер имеет 12 уровней и поддерживает динамическое выполнение инструкций) –
возможно выполнение 3-х команд за такт. расширена до 36
разрядов, соответственно максимальный размер адресуемой памяти составляет 64 Гб.
Разрядность шины данных – 64 бита. Кэши. Кэш L1 состоит, как и в предыдущих
процессорах, из кэша команд + кэша данных, оба по 8К. На кристалле (!)
интегрирован синхронный кэш второго уровня L2 объёмом 256К, 512К либо 1024К. В
поздних версиях его размер достигает 2М. Кэш L2 подключен к внутренней шине и
работает на частоте ядра. , т.е. внутри процессора инструкции могут
выполняться не в том порядке, который предполагает программный код. При этом
команды, не зависящие от результатов предыдущих операций, могут быть выполнены в
изменённом порядке, но последовательность выгрузки результатов в память и порты
будет соответствовать исходному программному коду. ( Почему это тем не менее
машина фон-Неймана ? А потому, что подтверждения выставляются в том порядке,
который предполагает программный код). Динамическое исполнение включает в
себя: , который позволяет декодировать
инструкции за пределами ветвлений, чтобы поддерживать конвейер в максимально
полном состоянии (не давать ему простаивать). Этим занимается модуль
Динамический анализ потока данных может одновременно проверить несколько инструкций
и выполнить их в том порядке, который наиболее оптимален. Он выполняет все
доступные инструкции, записывает их в пул инструкций, и сохраняет результаты во
временных регистрах; после чего устройство просматривает
пул инструкций с целью выделить те из них, результат выполнения которых уже не
зависит от выполнения других инструкций. Когда такие завершённые инструкции
обнаруживаются, Retire Unit отправляет результаты выполнения этих инструкций в
память и/или в регитры общего назначения и регистры данных FPU, в порядке
следования, предписанным программой. . Это
свойство выражается в возможности процессора выполнять команды опережая
программный счётчик, но в то же время позволяет получать результаты,
соответствующие выполнению команд в исходной последовательности. В Pentium PRO применена – служит
для общения ядра с основной памятью и интерфейсными устройствами, другая –
– предназначена исключительно для обмена со вторичным
кэшем. Применение динамического исполнения резко повышает частоту запросов
процессорного ядра к шине за данными памяти и инструкциями, поскольку ядро
одновременно обрабатывает нескольео инструкций. Для обхода узкого места –
внешней шины – кристалл процессорного ядра и использует технологию двойной
независимой шины. Значительный объём вторичного кэша позволяет удовлетворять
большинство запросов к памяти сугубо локально, при этом коэффициент загрузки
шины достигает 90% (необходимо заметить, что обмен данными по внутренней шине
происходит значительно быстрее, чем по внешней, так как кэш L2 работает на
частоте ядра, то есть порядка 200 МГц). Вторая шина процессорного кристалла
выходит на внешние выводы микросхемы, она и является системной шиной процессора
Pentium PRO. Эта шина работает на внешней частоте (66,6 МГц) независимо от
внутренней шины. Загрузка процессором внешней шины для обычных рядовых
применений составляет порядка 10% от её пропускной способности, а для серверных
применений может достигать 60% при четырёхпроцессорной конфигурации. Таким
образом, ограниченная пропускная способность внешней шины (533 Мбайт/с в пике
пакетной передачи) перестаёт сильно сдерживать производительность процессора.
Снижение нагрузки на внешнюю шину позволяет эффективно использовать
многопроцессорную архитектуру. В систему команд введены инструкции условной
пересылки данных, позволяющие сократить количество условных переходов. При этом
повышается предсказуемость кода, отсюда и эффективность использования
конвейера. Интерфейс системной шины рассчитан на объединение до четырёх
процессоров в симметричнцю мультипроцессорную систему (SMP). В заключении можно заметить, что Pentium PRO
всегда был достаточно дорогим процессором из-за низкого процента полезного
выхода кристаллов с пластины, так как чаще всего кристалл отбраковывался из-за
плохого качества кэша L2, к качеству большого объёма которого предъявляются
очень жёсткие требования. Фактически Pentium
II является продолжением линейки Pentium PRO с новыми усовершенствованиями а
также упрощениями, введёнными для удешевления себестоимости процессора. Эта
модель появилась в 1997 году. Основные отличия (рассматриваем самые ранние PII
на ядре Klamath/Deschutes) от PRO: Увеличен
размер L1-кэша. Теперь это 16К+16К под команды и данные соответственно. Кэш
второго уровня убран с кристалла и расположен в виде двух микросхем на
процессорной плате, размер – 512К . Работает на половинной частоте ядра. Имеется блок для выполненияMMX –
инструкций (чего не было в PRO, так как он вышел ещё до P55C – Pentium
MMX). Конструктивно выполнен иначе. Сам процессор
расположен на процессорной плате с (картридж
S.E.C.C.), на ней же располагаются две микросхемы кэша L2. Разъём для картриджа
– Slot1 (Slot2 для Xeon, SlotM для Merced...).