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].

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

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

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