Pentium Pro — микропроцессор x86 шестого поколения, разработанный и произведенный Intel и представленный 1 ноября 1995 года. [1] : D-2 Он представил микроархитектуру P6 (иногда называемую i686) и изначально предназначался для замены оригинального Pentium в полном спектре приложений. Позже он был сведен к более узкой роли сервера и высокопроизводительного настольного процессора. Pentium Pro также использовался в суперкомпьютерах , в частности ASCI Red , который использовал два процессора Pentium Pro на каждом вычислительном узле и был первым компьютером, достигшим более одного терафлопса в 1996 году, удерживая первое место в списке TOP500 с 1997 по 2000 год. [2]
В то время как Pentium и Pentium MMX имели 3,1 и 4,5 миллиона транзисторов соответственно, Pentium Pro содержал 5,5 миллионов транзисторов. [3] : 12 Он был способен работать как в двух-, так и в четырехпроцессорной конфигурации и выпускался только в одном форм-факторе — относительно большом прямоугольном Socket 8. На смену Pentium Pro в 1998 году пришел Pentium II Xeon .
Ведущим архитектором Pentium Pro был Фред Поллак , который специализировался на суперскалярности и также работал ведущим инженером Intel iAPX 432. [ 4]
Pentium Pro включал новую микроархитектуру , отличную от микроархитектуры P5 Pentium . Он имел развязанную, 14-ступенчатую суперконвейерную архитектуру, которая использовала пул инструкций. Pentium Pro ( P6 ) реализовал множество радикальных архитектурных отличий, отражающих другие современные разработки x86, такие как NexGen Nx586 и Cyrix 6x86 . Конвейер Pentium Pro имел дополнительные стадии декодирования для динамического перевода инструкций IA-32 в буферизованные последовательности микроопераций , которые затем можно было анализировать, переупорядочивать и переименовывать для обнаружения параллелизуемых операций, которые могли быть выданы более чем одному исполнительному устройству одновременно. Таким образом, Pentium Pro имел внеочередное выполнение , включая спекулятивное выполнение посредством переименования регистров . Он также имел более широкую 36-битную адресную шину , используемую Physical Address Extension (PAE), что позволяло ему получать доступ к 64 ГБ памяти.
Pentium Pro имеет кэш инструкций объемом 8 КБ, из которого в каждом цикле извлекается до 16 байт и отправляется в декодеры инструкций . Имеется три декодера инструкций. Декодеры неравны по возможностям: только один может декодировать любую инструкцию x86, в то время как два других могут декодировать только простые инструкции x86. Это ограничивает способность Pentium Pro декодировать несколько инструкций одновременно, ограничивая суперскалярное выполнение. Инструкции x86 декодируются в 118-битные микрооперации (микрооперации). Микрооперации подобны компьютерам с сокращенным набором инструкций (RISC); то есть они кодируют операцию, два источника и назначение. Общий декодер может генерировать до четырех микроопераций за цикл, тогда как простые декодеры могут генерировать по одной микрооперации за цикл. Таким образом, инструкции x86, которые работают с памятью (например, добавить этот регистр в это место в памяти), могут быть обработаны только общим декодером, поскольку эта операция требует минимум трех микроопераций. Аналогично, простые декодеры ограничены инструкциями, которые могут быть транслированы в одну микрооперацию. Инструкции, которые требуют больше микроопераций, чем четыре, транслируются с помощью секвенсора, который генерирует требуемые микрооперации в течение нескольких тактов. Pentium Pro был первым процессором в семействе x86, который поддерживал обновляемый микрокод под управлением BIOS и/или операционной системы (ОС). [5]
Микрооперации выходят из буфера переупорядочения (ROB) и поступают на резервную станцию (RS), где они ожидают отправки в исполнительные блоки. В каждом такте до пяти микроопераций могут быть отправлены в пять исполнительных блоков. Pentium Pro имеет в общей сложности шесть исполнительных блоков: два целочисленных блока, один блок с плавающей точкой (FPU), блок загрузки, блок адреса хранения и блок данных хранения. [6] Один из целочисленных блоков использует те же порты, что и FPU, и поэтому Pentium Pro может отправлять только один целочисленный микрооператор и один микрооператор с плавающей точкой, или два целочисленных микрооператора за цикл, в дополнение к микрооперациям для трех других исполнительных блоков. Из двух целочисленных блоков только тот, который разделяет путь с FPU на порту 0, имеет полный набор функций, таких как сдвигатель баррелей , множитель, делитель и поддержка инструкций LEA. Второе целочисленное устройство, подключенное к порту 1, не имеет этих возможностей и ограничивается простыми операциями, такими как сложение, вычитание и вычисление целевых адресов ветвления. [6]
FPU выполняет операции с плавающей точкой. Сложение и умножение конвейеризованы и имеют задержку в три и пять циклов соответственно. Деление и извлечение квадратного корня не конвейеризованы и выполняются в отдельных блоках, которые совместно используют порты FPU. Деление и извлечение квадратного корня имеют задержку в 18-36 и 29-69 циклов соответственно. Наименьшее число относится к числам с плавающей точкой одинарной точности (32 бита), а наибольшее — к числам с расширенной точностью (80 бит). Деление и извлечение квадратного корня могут работать одновременно со сложениями и умножениями, что предотвращает их выполнение только тогда, когда результат должен быть сохранен в ROB.
После выпуска микропроцессора в блоке с плавающей точкой была обнаружена ошибка , обычно называемая «ошибкой Pentium Pro и Pentium II FPU», а Intel — «ошибкой флага». Ошибка возникает при некоторых обстоятельствах во время преобразования плавающей точки в целое число, когда число с плавающей точкой не помещается в меньший целочисленный формат, в результате чего FPU отклоняется от своего документированного поведения. Ошибка считается незначительной и возникает при таких особых обстоятельствах, что она затрагивает очень немногие программы, если вообще затрагивает.
Микроархитектура Pentium Pro P6 использовалась в той или иной форме компанией Intel более десятилетия. Конвейер масштабировался от своего первоначального старта в 150 МГц до 1,4 ГГц с Pentium III "Tualatin" . Различные черты дизайна продолжились после этого в производном ядре под названием " Banias " в Pentium M и Intel Core ( Yonah ), которое само по себе развилось в микроархитектуру Core ( процессор Core 2 ) в 2006 году и далее. [7]
Pentium Pro (P6) ввел новые инструкции в линейку Intel; инструкции CMOVxx («условное перемещение») могут перемещать значение, которое является либо содержимым регистра, либо ячейкой памяти, в другой регистр или нет, в соответствии с некоторым предикатным логическим условием xx в регистре флагов, где xx — это код предиката флагов, как указано в условии для инструкций условного перехода. Так, например, CMOVNE перемещает указанное значение в регистр или нет в зависимости от того, является ли условие NE (не равно) истинным в регистре флагов, т. е. флаг Z = 0. Это позволяет оценивать операции if-then-else и, например, операцию ? : в C. Эти инструкции повышают производительность, позволяя избегать дорогостоящих инструкций перехода и ветвления. Например, в CMOVxx destreg1, source_operand2 первый операнд — это целевой регистр, второй — исходный регистр или ячейка памяти. К сожалению, второй операнд не может быть непосредственным (встроенной константой) значением, и такую константу сначала пришлось бы поместить в регистр. Код предиката xx может принимать весь диапазон значений, разрешенных в условных переходах.
Вторым достижением стало документирование недопустимой инструкции UD2. Этот код операции зарезервирован и гарантированно вызывает исключение недопустимой инструкции на процессорах P6 и всех более поздних. Это позволяет разработчикам легко аварийно завершать текущую программу в будущем, когда программное обеспечение обнаруживает ошибку.
Несмотря на то, что архитектура переименования регистров вне очереди в Pentium Pro была передовой для своего времени, она имела проблемы с запуском 16-битного кода и смешанного кода ( 8-битного с 16-битным (8/16) или 16-битного с 32-битным (16/32), так как использование частичных регистров приводило к частой очистке конвейера. [8] Специальное использование частичных регистров тогда было обычной оптимизацией производительности, так как оно не приводило к снижению производительности на процессорах Intel до P6; кроме того, доминирующими операционными системами на момент выпуска Pentium Pro были 16-битный DOS и смешанные 16/32-битные Windows 3.1x и Windows 95 (хотя последняя требует как минимум 32-битного ЦП 80386 , большая часть ее кода по-прежнему является 16-битной из соображений производительности, например, 16-битная динамическая библиотека Windows USER , user.exe ). Это, наряду с высокой стоимостью систем Pentium Pro, привело к вялый спрос среди покупателей ПК в то время. Для полного использования микроархитектуры P6 Pentium Pro необходима полностью 32-разрядная операционная система, такая как Windows NT , Linux , Unix или OS/2 . Проблемы производительности в устаревшем коде были позже частично смягчены Intel с Pentium II.
По сравнению с микропроцессорами RISC, Pentium Pro, когда он был представлен, немного превзошел самые быстрые микропроцессоры RISC по целочисленной производительности при выполнении теста SPECint95 , [9] : 2, но производительность с плавающей точкой была значительно ниже, в два раза ниже, чем у некоторых микропроцессоров RISC. [9] : 3 Лидерство Pentium Pro по целочисленной производительности быстро исчезло, сначала его обогнал MIPS Technologies R10000 в январе 1996 года, а затем — вариант Alpha 21164 EV56 от Digital Equipment Corporation . [10]
Рецензенты быстро отметили очень медленную запись в видеопамять как слабое место платформы P6, производительность здесь составляла всего 10% от идентичной тактовой частоты системы Pentium в таких бенчмарках, как VIDSPEED. Методы обхода этого включали установку отрисовки VESA в системной памяти вместо видеопамяти в таких играх, как Quake , [11] а позже появились такие утилиты, как FASTVID, которые могли удвоить производительность в некоторых играх, включив функции объединения записи ЦП. [12] [13] Регистры диапазона типов памяти (MTRR) устанавливаются автоматически видеодрайверами Windows, начиная с 1997 года, и с тех пор улучшенная подсистема кэша/памяти и производительность FPU заставили его превзойти Pentium по тактовой частоте в появляющихся 3D-играх середины-конца 1990-х годов, особенно при использовании Windows NT 4.0 . Однако отсутствие реализации MMX снижает производительность в мультимедийных приложениях, которые использовали эти инструкции.
Вероятно, наиболее заметным дополнением Pentium Pro был его встроенный кэш L2 , который варьировался от 256 КБ на момент появления до 1 МБ в 1997 году. В то время технология производства не позволяла интегрировать большой кэш L2 в ядро процессора. Вместо этого Intel поместила кристалл(ы) L2 отдельно в корпус, что по-прежнему позволяло ему работать на той же тактовой частоте, что и ядро ЦП. Кроме того, в отличие от большинства схем кэширования на основе материнских плат, которые разделяли основную системную шину с ЦП, кэш Pentium Pro имел свою собственную заднюю шину (называемую Intel двойной независимой шиной ). Благодаря этому ЦП мог одновременно считывать основную память и кэш, что значительно уменьшало традиционное узкое место. [14] Кэш также был «неблокируемым», что означало, что процессор мог выдавать более одного запроса кэша за раз (до 4), что уменьшало штрафы за промахи кэша. (Это пример MLP, Memory Level Parallelism .) Эти свойства были объединены для создания кэша L2, который был намного быстрее, чем кэши на материнской плате старых процессоров. Этот кэш сам по себе давал ЦП преимущество в производительности ввода/вывода по сравнению со старыми процессорами x86 . В многопроцессорных конфигурациях интегрированный кэш Pentium Pro резко увеличил производительность по сравнению с архитектурами, в которых каждый ЦП использовал центральный кэш.
Однако этот гораздо более быстрый кэш L2 имел некоторые осложнения. Уникальность «накорпусной кэш-памяти» Pentium Pro заключалась в том, что она была уникальна. Процессор и кэш находились на отдельных кристаллах в одном корпусе и были тесно связаны полноскоростной шиной. Два или три кристалла приходилось соединять вместе на ранних этапах производственного процесса, прежде чем становилось возможным тестирование. Это означало, что один крошечный дефект в любом кристалле приводил к необходимости выбраковывать всю сборку, что было одной из причин относительно низкого выхода годных и высокой стоимости Pentium Pro. Все версии чипа были дорогими, особенно те, что имели 1024 КБ, поскольку для них требовались два кристалла кэша по 512 КБ, а также кристалл процессора.
Тактовые частоты Pentium Pro составляли 150, 166, 180 или 200 МГц с внешней шиной тактовой частоты 60 или 66 МГц . Прототип Pentium Pro 133 МГц был разработан на самых ранних стадиях разработки, но так и не был выпущен. Некоторые пользователи решили разогнать свои чипы Pentium Pro, при этом версия 200 МГц часто работала на частоте 233 МГц, версия 180 МГц часто работала на частоте 200 МГц, а версия 150 МГц часто работала на частоте 166 МГц. Чип был популярен в симметричных многопроцессорных конфигурациях, причем двух- и четырехпроцессорные SMP-серверы и рабочие станции были обычным явлением.
Intel отказалась от выпуска мобильной версии оригинального Pentium Pro из-за проблем с энергопотреблением и нагревом. [15] По крайней мере один поставщик продал портативный компьютер с Pentium Pro (6200TLP от Imperial Computer). [16]
В схеме Intel «Семейство/Модель/Степпинг» процессор Pentium Pro относится к семейству 6, модели 1, а его код продукта Intel — 80521.
Процесс изготовления кристалла процессора Pentium Pro и его отдельного кристалла кэш-памяти изменился, что привело к использованию комбинации процессов в одном корпусе:
Pentium Pro (кэш-память объемом до 512 КБ) упакован в керамический многокристальный модуль (MCM). MCM содержит две полости снизу, в которых находятся кристалл микропроцессора и его сопутствующий кристалл кэша. Кристаллы соединены с теплоотводом, открытая верхняя часть которого помогает теплу от кристаллов передаваться более непосредственно на охлаждающее устройство, такое как радиатор. Кристаллы соединены с корпусом с помощью обычного проволочного соединения. Полости закрыты керамической пластиной.
Pentium Pro с 1 МБ кэша использует пластиковый MCM. Вместо двух полостей есть только одна, в которой находятся три кристалла, прикрепленные к корпусу вместо теплоотвода. Полости заполнены эпоксидной смолой.
MCM имеет 387 контактов, из которых примерно половина расположена в решетке контактов (PGA), а половина — в решетке контактов (IPGA). Упаковка была разработана для Socket 8 .
В 1998 году был выпущен процессор Pentium II OverDrive 300/333 МГц для Socket 8. Основанный на некоторых технологиях, используемых в Deschutes Pentium II Xeon , он имел двойной L1 и 512 КБ полноскоростного кэша L2 с возможностями MMX и был выпущен Intel в качестве опции обновления для владельцев систем Pentium Pro. Однако он поддерживал только двухходовую бессвязную многопроцессорную обработку, а не четырехходовую или выше, что не делало его пригодным для обновления для четырехпроцессорных систем. Эти специально упакованные процессоры Pentium II OverDrive также использовались для модернизации суперкомпьютера ASCI Red в 1999 году. Это делает суперкомпьютер ASCI Red, первый компьютер, достигший отметки производительности в один терафлопс с двумя процессорами Pentium Pro в 1996 году, теперь первым компьютером в целом, преодолевшим отметку производительности в два терафлопса с модернизацией до двух процессоров Pentium II OverDrive в 1999 году. ASCI Red продолжал использовать два процессора Pentium II OverDrive до конца своего срока службы, прежде чем был выведен из эксплуатации в 2006 году.
Поскольку материнские платы Slot 1 стали преобладать, несколько производителей выпустили адаптеры slotket (или slocket), такие как Tyan M2020, Asus C-P6S1, Tekram P6SL1 и Abit KP6. Эти сокеты позволяли использовать процессоры Pentium Pro с материнскими платами Slot 1. Однако только несколько наборов микросхем поддерживали эти slotket, и поэтому не получили широкого распространения. Чипсет Intel 440FX явно поддерживал процессоры Pentium Pro и Pentium II, однако наборы микросхем Intel 440BX и более поздние Slot 1 явно не поддерживали Pentium Pro. Со временем Slotket снова обрели популярность в виде адаптеров Socket 370 - Slot 1, когда Intel представила процессоры Socket 370 Celeron и Pentium III в конце 1990-х годов. Такая форма слоткетов позволила снизить затраты для сборщиков компьютеров, особенно для двухпроцессорных машин, и дала материнским платам Slot 1 возможность продолжать получать обновления ЦП за пределами доступных на тот момент ЦП Slot 1.
Pentium Pro использовал сигнализацию GTL+ в своей передней шине. [21] Pentium Pro мог использоваться сам по себе в четырехпроцессорных конструкциях. Были также построены восьмипроцессорные компьютеры Pentium Pro, но они использовали несколько шин. [22]
На конструкцию шины Pentium Pro повлияли Futurebus , шина Intel iAPX 432 и элементы шины Intel i960 . [23] Futurebus была задумана как усовершенствованная шина для замены VMEbus, используемой в Motorola 68000 с конца 1970-х годов, но она застоялась в комитете по стандартизации более чем на десятилетие, если учесть все изгибы и повороты. [23] Инициатива Intel iAPX 432 также была коммерческой неудачей, но в процессе они узнали, как построить шину с раздельными транзакциями для поддержки многопроцессорной системы без кэша. i960 дополнительно развил шину с раздельными транзакциями iAPX 432, включив протокол когерентности кэша, в результате чего получился набор функций, очень напоминающий первоначальные амбиции Futurebus. [23]
Ведущим архитектором i960 был специалист по суперскалярности Фред Поллак, который также был ведущим инженером Intel iAPX 432 и ведущим архитектором чипа i686, Pentium Pro. Он, без сомнения, был близко знаком со всей этой историей. Pentium Pro был разработан с включением 4-канальной SMP-разделенной транзакционной кэш-когерентной шины в качестве обязательной функции каждого производимого чипа. [23] Это также служило для того, чтобы лишить конкурентов доступа к сокету для производства клонированных процессоров. [23]
Хотя Pentium Pro не имел успеха в качестве машины для масс из-за плохой поддержки 16-разрядной версии Windows 95 и многих других 16-разрядных и смешанных 16/32-разрядных операционных систем, он добился значительных успехов в области файловых серверов благодаря своей усовершенствованной конструкции интегрированной шины [23] , которая привнесла на рынок товаров широкого потребления множество расширенных функций, которые ранее были доступны только в сегменте дорогих рабочих станций.
корпорация Intel представила свой новый микропроцессор Pentium Pro. Но хотя производительность чипа выше, чем ожидалось, а его цена ниже, аналитики заявили, что его немедленное влияние вряд ли будет соответствовать влиянию его предшественника Pentium.
ASCI Red от Intel был первым компьютером с терафлоп/с, заняв первое место в 9-м списке TOP500 в июне 1997 г. с производительностью Linpack 1,068 терафлоп/с. [...] Это была сетчатая (38 X 32 X 2) MIMD-массивно-параллельная машина, изначально состоящая из 7264 вычислительных узлов, 1212 гигабайт общей распределенной памяти и 12,5 терабайт дискового хранилища. Первоначальное воплощение этой машины использовало процессоры Intel Pentium Pro, каждый с тактовой частотой 200 МГц. Позже они были обновлены до процессоров Pentium II OverDrive. Система была модернизирована до 9632 процессоров Pentium II Over-Drive, каждый из которых работал на частоте 333 МГц.
В этом чипе было много деталей, но сегодняшний Pentium Pro состоит из двух чипов и других необходимых вспомогательных чипов. Любопытно, что ведущим инженером 432 был суперзвездный дизайнер Фред Поллак, который стал ведущим архитектором Pentium Pro.
Вы можете использовать микрокод PPro для того, чтобы плата-BIOS выполняла функции прерывания в течение 15 часов после прерывания и загрузки (нажмите здесь, чтобы обновить список прерываний). Gedacht ist das für Patches, doch weiß, welch ungeahnte Möglichkeiten noch Darinstecken. Somit Hat man es beim PPro in Zukunft nicht nur mit zwei Masken-Versionen (für CPU und Cache), sondern auch noch mit der Update-Version des Microcode-BIOS zu tun (zum Beispiel beim aktuellen 200-MHz-'P6S' mit der Kennung SY013: CPU-Step A0, Cache-Step B1, BIOS: sA0C05).[Судя по всему, PPro имеет загружаемый микрокод, для которого в BIOS платы предусмотрены две функции в прерывании 15h для чтения и загрузки (подробнее в следующем обновлении списка прерываний). Это предназначено для патчей, но кто знает, какие невообразимые возможности еще есть. В будущем, таким образом, PPro придется иметь дело не только с двумя версиями масок (для ЦП и кэша), но и с версией обновления микрокод BIOS (например, с текущим 200 МГц «P6S» с идентификатором SY013: шаг ЦП A0, шаг кэша B1, BIOS: sA0C05).]
Линия P6 от Pentium Pro до Pentium M [...] Одной из самых отличительных особенностей линейки P6 является структура ее порта выпуска. (Intel называет их «портами диспетчеризации», но для обеспечения согласованности с остальной частью моей работы я буду использовать термины «диспетчеризация» и «выпуск» иначе, чем Intel.) Core использует похожую структуру в своем ядре выполнения, хотя есть некоторые существенные различия между комбинацией порта выпуска и RS Core и P6.
Целочисленные опережения, FP-задержки RISC-чипы