Эта статья входит в число хороших статей

Intel P6

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

P6 — суперскалярная суперконвейерная архитектура, разработанная компанией Intel и лежащая в основе микропроцессоров Pentium Pro, Pentium II, Pentium III, Celeron и Xeon. В отличие от x86-совместимых процессоров предыдущих поколений с CISC-ядром, процессоры архитектуры P6 имеют RISC-ядро, исполняющее сложные инструкции x86 не напрямую, а предварительно декодируя их в простые внутренние микрооперации.

Первым процессором архитектуры P6 стал анонсированный 1 ноября 1995 года процессор Pentium Pro, нацеленный на рынок рабочих станций и серверов. Процессоры Pentium Pro выпускались параллельно с процессорами архитектуры P5 (Pentium и Pentium MMX), предназначенными для персональных компьютеров. 7 мая 1997 года компанией Intel был анонсирован процессор Pentium II, пришедший на смену процессорам архитектуры P5.[1]

В 2000 году на смену архитектуре P6 на рынке настольных и серверных процессоров пришла архитектура NetBurst, однако архитектура P6 получила своё развитие в мобильных процессорах Pentium M и Core. В 2006 году на смену процессорам архитектуры NetBurst пришли процессоры семейства Core 2 Duo, архитектура которых также представляет собой развитие архитектуры P6.[2][3]

Функциональные устройства[править | править вики-текст]

Функциональная схема процессора Pentium III на ядре Coppermine

Процессоры архитектуры P6 состоят из четырёх основных подсистем:

  • Подсистема упорядоченной предварительной обработки (англ. In-Order Front End, IOFE) — отвечает за выборку и декодирование инструкций в порядке, предусмотренном программой, и предсказывает переходы.
  • Ядро исполнения с изменением последовательности (англ. Out-of-Order Core, O2C) — отвечает за исполнение микроопераций в оптимальном порядке и организует взаимодействие исполнительных устройств.
  • Подсистема упорядоченного завершения (англ. In-Order Retirement, IOR) — выдаёт результаты исполнения в порядке, предусмотренном программой.
  • Подсистема памяти (англ. memory subsystem) — обеспечивает взаимодействие процессора с оперативной памятью.
Подсистема упорядоченной предварительной обработки

К устройствам этой подсистемы относятся:

  • Модуль и буфер предсказания переходов (Branch Target Buffer, BTB) — предсказывают переходы и хранят таблицу истории переходов. Для предсказания используются как динамический, так и статический методы. Последний используется в том случае, если динамическое предсказание невозможно (в таблице переходов отсутствует необходимая информация).
  • Декодер инструкций (Instruction Decoder) — преобразует CISC-инструкции x86 в последовательность RISC-микроопераций, исполняемых процессором. Включает два декодера простых инструкций (Simple), обрабатывающих команды, которые могут быть выполнены одной микрооперацией, и декодер сложных инструкций (Complex), обрабатывающего команды, для которых нужно несколько (до четырёх) микроопераций.
  • Планировщик последовательностей микроопераций (Microcode sequencer) — хранит последовательности микроопераций, используемые при декодировании сложных инструкций x86, требующих более четырёх микроопераций.
  • Блок вычисления адреса следующей инструкции (Next IP Unit) — вычисляет адрес инструкции (англ. instruction pointer, IP), которая должна быть обработана следующей, на основании информации о прерываниях и таблицы переходов.
  • Блок выборки инструкций (Instruction Fetch Unit, IFU) — осуществляет выборку инструкций из памяти по адресам, подготовленным блоком вычисления адреса следующей инструкции.

Процессоры на ядре Tualatin дополнительно содержат блок предвыборки инструкций (Prefetcher), который осуществляет предварительную выборку инструкций на основании таблицы переходов.

Ядро исполнения с изменением последовательности

Исполнение с изменением последовательности, при котором меняется очерёдность исполнения инструкций, так, чтобы это не приводило к изменению результата, позволяет ускорить работу за счёт более оптимального распределения запросов к вспомогательным блокам и минимизации их простоев. К устройствам организации исполнения с изменением последовательности относятся:

  • Таблица назначения регистров (Register Alias Table) — задаёт соответствие между регистрами архитектуры x86/IA32 (Intel Architecture 32-bit) и внутренними регистрами, используемыми при исполнении микроопераций.
  • Буфер переупорядочивания микроопераций (Reorder Buffer) — обеспечивает выполнение микроопераций в оптимальной с точки зрения производительности последовательности.
  • Станция-резервуар (Reservation Station) — содержит инструкции, отправляемые на исполнительные устройства.

К исполнительным устройствам ядра относятся:

  • Арифметическо-логические устройства, АЛУ (Arithmetic Logic Unit, ALU) — выполняют целочисленные операции.
  • Блок арифметики с плавающей запятой (Floating Point Unit, FPU) — выполняет операции над числами с плавающей точкой. Процессоры Pentium III и выше имеют также блок, осуществляющий исполнение инструкций SSE (SIMD FPU).
  • Блок генерации адресов (Address Generation Unit, AGU) — вычисляет адреса данных, используемых инструкциями, и формирует запросы к кешу для загрузки/выгрузки этих данных.
Подсистема упорядоченного завершения
  • Регистровый файл (Register File) — хранит результаты операций (состояние регистров IA32 для исполняемых инструкций).
  • Буфер переупорядочивания памяти (Memory Reorder Buffer) — управляет порядком записи данных в память для предотвращения записи неверных данных из-за изменения порядка выполнения инструкций.
  • Блок завершения (Retirement Unit) — выдаёт результаты исполнения инструкций в той последовательности, в которой они поступили на исполнение.
Подсистема памяти
Объём L2 процессоров архитектуры P6
Объём (Кб) Процессоры
0 Celeron Covington
128 Celeron (Mendocino, Coppermine-128), Pentium III (Coppermine для приставки Xbox[4])
256 Pentium Pro, Pentium III (Coppermine, Tualatin-256), Xeon (Cascades)
512 Pentium Pro, Pentium II, Pentium III (Katmai, Tualatin), Xeon (Drake, Tanner)
1024 Pentium Pro, Xeon (Drake, Tanner)
2048 Xeon (Drake, Tanner, Cascades 2MB)

Подсистема памяти осуществляет взаимодействие с оперативной памятью. К этой подсистеме относятся:

  • Кэш первого уровня для данных (Level 1 Data Cache, L1D) — память с малым временем доступа объёмом 8 (для Pentium Pro) или 16 (для более новых процессоров) килобайт, предназначенная для хранения данных.
  • Кэш первого уровня для инструкций (Level 1 Instruction Cache, L1I) — память с малым временем доступа объёмом 8 (Pentium Pro) или 16 килобайт, предназначенная для хранения инструкций.
  • Кэш второго уровня (Level 2 Cache, L2). Память с малым временем доступа объёмом 128, 256, 512, 1024 или 2048 килобайт. Ширина шины L2 составляет 64 или 256 (для процессоров на ядре Coppermine и выше) бит. Процессоры Celeron на ядре Covington кэша второго уровня не имеют.
  • Блок шинного интерфейса (Bus Interface Unit) — управляет системной шиной.

Исполнение инструкции[править | править вики-текст]

Конвейер процессора Pentium Pro

Конвейер состоит из 12 стадий[5]:

  • IOFE(1—4) — определение адреса инструкции и её выборка.
  • IOFE(4—6) — декодирование.
  • IOFE7 — переименование регистров.
  • IOFE8 — запись микроопераций в станцию-резервуар.
  • O2C1 — передача микроопераций из станции-резервуара к исполнительным блокам.
  • O2C2 — исполнение микроопераций (один или несколько тактов).
  • IOR(1—2) — завершение инструкции: запись результатов в регистры.

Исполнение инструкции начинается с её выборки и декодирования. Для этого из кэш-памяти инструкций первого уровня по адресу из буфера предсказания переходов выбирается 64 байта (две строки). Из них 16 байт, начиная с адреса из блока вычисления адреса следующей инструкции, выравниваются и передаются в декодер инструкций, преобразующий инструкции x86 в микрооперации. Если инструкции соответствует одна микрооперация, декодирование проводит один из декодеров простых инструкций. Если инструкции соответствует две, три или четыре микрооперации, декодирование проводит декодер сложных инструкций. Если же инструкции соответствует большее число микроопераций, то они формируются планировщиком последовательностей микроопераций.

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

По результатам исполнения микроопераций определяется их готовность к отставке (англ. retirement). В случае готовности происходит их отставка в порядке, предусмотренном программой, во время которой осуществляется обновление состояния логических регистров, а также отложенное сохранение результатов в памяти (управление порядком записи данных осуществляет буфер переупорядочивания памяти)[1].

Особенности архитектуры[править | править вики-текст]

Первые процессоры архитектуры P6 в момент выхода значительно отличались от существующих процессоров. Процессор Pentium Pro отличало применение технологии динамического исполнения (изменения порядка исполнения инструкций), а также архитектура двойной независимой шины (англ. Dual Independent Bus), благодаря чему были сняты многие ограничения на пропускную способность памяти, характерные для предшественников и конкурентов. Тактовая частота первого процессора архитектуры P6 составляла 150 МГц, а последние представители этой архитектуры имели тактовую частоту 1,4 ГГц. Процессоры архитектуры P6 имели 36-разрядную шину адреса, что позволило им адресовать до 64 ГБ памяти (при этом линейное адресное пространство процесса ограничено 4 ГБ, см PAE).

Суперскалярный механизм исполнения инструкций с изменением их последовательности

Принципиальным отличием архитектуры P6 от предшественников является RISC-ядро, работающее не с инструкциями x86, а с простыми внутренними микрооперациями. Это позволяет снять множество ограничений набора команд x86, таких как нерегулярное кодирование команд, переменная длина операндов и операции целочисленных пересылок регистр-память[1]. Кроме того, микрооперации исполняются не в той последовательности, которая предусмотрена программой, а в оптимальной с точки зрения производительности, а применение трёхконвейерной обработки позволяет исполнять несколько инструкций за один такт[6].

Суперконвейеризация

Процессоры архитектуры P6 имеют конвейер глубиной 12 стадий. Это позволяет достигать более высоких тактовых частот по сравнению с процессорами, имеющими более короткий конвейер при одинаковой технологии производства. Так, например, максимальная тактовая частота процессоров AMD K6 на ядре (глубина конвейера — 6 стадий, 180 нм. технология) составляет 550 МГц, а процессоры Pentium III на ядре Coppermine способны работать на частоте, превышающей 1000 МГц.

Для того, чтобы предотвратить ситуацию ожидания исполнения инструкции (и, следовательно, простоя конвейера), от результатов которого зависит выполнение или невыполнение условного перехода, в процессорах архитектуры P6 используется предсказание ветвлений. Для этого в процессорах архитектуры P6 используется сочетание статического и динамического предсказания: двухуровневый адаптивный исторический алгоритм (англ. Bimodal branch prediction) применяется в том случае, если буфер предсказания ветвлений содержит историю переходов, в противном случае применяется статический алгоритм[6][7].

Двойная независимая шина

С целью увеличения пропускной способности подсистемы памяти, в процессорах архитектуры P6 применяется двойная независимая шина. В отличие от предшествующих процессоров, системная шина которых была общей для нескольких устройств, процессоры архитектуры P6 имеют две раздельные шины: Back side bus, соединяющую процессор с кэш-памятью второго уровня, и Front side bus, соединяющую процессор с северным мостом набора микросхем[6].

Достоинства[править | править вики-текст]

Процессоры архитектуры P6 имели конвейеризованный математический сопроцессор (FPU), позволивший достичь превосходства над предшественниками и конкурентами в скорости вещественночисленных вычислений[8]. FPU процессоров архитектуры P6 оставался лучшим среди конкурентов до появления в 1999 году процессора AMD Athlon[9].

Кроме того, процессоры архитектуры P6 имели превосходство над конкурентами и в скорости работы с кэш-памятью второго уровня. Pentium Pro и Pentium II имели двойную независимую шину, в то время как конкурирующие процессоры (AMD K5, K6, Cyrix 6x86, M-II) — традиционную системную шину к которой подключался, в том числе, и кэш второго уровня[10]. С появлением процессоров Athlon, также использующих архитектуру с двойной независимой шиной, разрыв в производительности сократился, но 256-разрядная BSB процессоров Pentium III (начиная с ядра Coppermine) позволяла удерживать преимущество в скорости работы с кэш-памятью второго уровня над процессорами архитектуры K7, имевшими 64-разрядную BSB. Однако, устаревшая на тот момент системная шина процессоров архитектуры P6 в сочетании с большим объёмом кэш-памяти первого уровня у процессоров архитектуры K7 не позволяла получить преимущество в пропускной способности памяти[11].

Недостатки[править | править вики-текст]

Основным недостатком первых процессоров архитектуры P6 (Pentium Pro) была низкая производительность при работе с широко распространённым в то время 16-разрядным программным обеспечением. Это было связано с тем, что при работе с такими приложениями внеочередное исполнение инструкций было затруднено (так, например, процессор Pentium Pro не мог выполнить чтение из 32-битного регистра, если до этого была выполнена запись в его 16-битную младшую часть, а команда, выполнившая запись, не была отставлена[12]). В процессоре Pentium II этот недостаток был исправлен, что привело к увеличению производительности при работе с 16-разрядными программами более чем на треть[13].

Процессоры архитектуры P6 поддерживали работу в многопроцессорных системах, однако при этом использовалась разделяемая системная шина, что позволяло упростить трассировку системных плат, однако отрицательно сказывалось на производительности подсистемы процессор—память и ограничивало максимальное количество процессоров в системе[9][14].

Процессоры архитектуры P6[править | править вики-текст]

Процессор Ядро Технология производства Годы выпуска
Pentium Pro P6 КМОП/БиКМОП, 500—350 нм 19951998
Pentium II Klamath, Deschutes КМОП, 350—250 нм 19971999
Pentium III Katmai, Coppermine, Tualatin-256 КМОП, 250—130 нм 1999—2002
Pentium III-S Tualatin КМОП, 130 нм 2001—2002
Celeron Covington, Mendocino, Coppermine-128, Tualatin-256 КМОП, 250—130 нм 1998—2002
Pentium II Xeon Drake КМОП, 250 нм 1998—1999
Pentium III Xeon Tanner, Cascades, Cascades 2MB КМОП, 250—180 нм 1999—2001
 
Pentium Pro (P6) Pentium II (Deschutes) Pentium III (Coppermine) Pentium IIIS (Tualatin)
Pentium Pro (P6) Pentium II (Deschutes) Pentium III (Coppermine) Pentium IIIS (Tualatin)
Pentium III Mobile Celeron (Mendocino) Celeron (Mendocino) Celeron (Coppermine-128)
Pentium III Mobile Celeron (Mendocino) Celeron (Mendocino) Celeron (Coppermine-128)

Схема развития архитектур Intel[править | править вики-текст]

Intel processor roadmap
Развитие микроархитектур процессоров Intel, начиная с NetBurst и Intel P6 до Skylake

Примечания[править | править вики-текст]

  1. 1 2 3 В ожидании Willamette — история архитектуры IA-32 и как работают процессоры семейства P6
  2. Pentium M: хороший «десктопный» CPU… которого у нас не будет. IXBT.com (26 июля 2005). Проверено 16 августа 2008. Архивировано из первоисточника 25 августа 2011.
  3. Новое вино в старые мехи. Conroe: внук процессора Pentium III, племянник архитектуры NetBurst?. IXBT.com (9 сентября 2005). Проверено 16 августа 2008. Архивировано из первоисточника 29 января 2012.
  4. В отличие от процессора Celeron на ядре Coppermine-128, имеющего 4-канальный ассоциативный кэш второго уровня, у этого процессора кэш 8-канальный. См.: «Мир игровых консолей. Часть пятая», журнал Upgrade, 2007, № 28 (325), стр. 24
  5. Jon Stokes. The Pentium: An Architectural History of the World’s Most Famous Desktop Processor (Part I) (англ.). Ars Technica (11 июля 2004). Проверено 19 августа 2008. Архивировано из первоисточника 29 января 2012.
  6. 1 2 3 X86 архитектуры бывают разные…
  7. http://www.pcmag.ru/issues/sub_detail.php?ID=10105&SUB_PAGE=8 — Наследие RISC: Предсказание переходов.
  8. Сравнение систем на базе Super Socket-7 и Slot-1
  9. 1 2 Обзор процессора AMD Athlon 600 МГц
  10. Шина PCI (Peripheral Component Interconnect bus) — см. схему
  11. Процессоры с частотой 1000 МГц
  12. Максим Лень: «АРХИТЕКТУРА Р6: НАСЛЕДИЕ ПОКОЛЕНИЙ» (опубликована на сайте fcenter.ru 22 ноября 2000 года) — сохранённая копия
  13. http://www.pcmag.ru/issues/sub_detail.php?ID=9935&SUB_PAGE=3 — Pentium: история продолжается.
  14. Двухпроцессорные Socket A системы на базе чипсета AMD 760MP

Ссылки[править | править вики-текст]

Официальная информация

Характеристики процессоров архитектуры P6

Обзоры процессоров