Intel Pentium 4 — одноядерный x86-совместимый микропроцессор компании Intel, представленный 20 ноября 2000 года, ставший первым микропроцессором, в основе которого лежала принципиально новая по сравнению с предшественниками архитектура седьмого поколения (по классификации Intel) — NetBurst. Помимо различных вариантов Pentium 4, к процессорам архитектуры NetBurst относятся двухъядерные процессоры Pentium D, а также некоторые процессоры Xeon, предназначенные для серверов. Кроме того, часть процессоров Celeron для систем нижнего ценового уровня, представляет собой Pentium 4 с частично отключённым кэшем второго уровня.
Производство процессоров Pentium 4 было начато в 2000 году. С середины 2005 года началось их постепенное вытеснение в нижнюю ценовую категорию двухъядерными процессорами Pentium D. 27 июля 2006 года появились первые процессоры семейства Core 2 Duo, пришедшие на смену процессорам архитектуры NetBurst, а 8 августа 2007 года компания Intel объявила о запуске программы по снятию с производства всех процессоров архитектуры NetBurst[1].
Процессоры Pentium 4 для настольных компьютеров («настольные»), а также часть процессоров для ноутбуков(«мобильные»), выпускались в трёх различных типах корпусов.
Корпус ранних процессоров на ядре Willamette, выпускавшихся с конца 2000 по начало 2002 года[2] и предназначенных для установки в разъём Socket 423, представлял собой подложку (англ. substrate) из органического материала с закрытой теплораспределительной крышкой (англ. integrated heat spreader) кристаллом, установленную на плату-переходник (англ. interposer) с 423 штырьковыми контактами (размеры корпуса — 53,3×53,3 мм)[3]. Между контактами на обратной стороне платы-переходника установлены SMD-элементы.
Поздние процессоры на ядре Willamette, процессоры Pentium 4 на ядре Northwood, часть процессоров Pentium 4 Extreme Edition на ядре Gallatin и ранние процессоры на ядре Prescott с 2001 по 2005 год[4] выпускались в корпусе типа FC-mPGA2, представлявшем собой подложку из органического материала с закрытым теплораспределительной крышкой кристаллом с лицевой стороны и 478 штырьковыми контактами, а также SMD-элементами, с обратной (размеры корпуса — 35×35 мм).
Часть процессоров Pentium 4 Extreme Edition на ядре Gallatin, поздние процессоры на ядре Prescott, процессоры на ядрах Prescott-2M и Cedar Mill c весны 2004[5] по осень 2007 года выпускались в корпусе типа FC-LGA4, представлявшем собой подложку из органического материала с закрытым теплораспределительной крышкой кристаллом с лицевой стороны и 775 контактными площадками с обратной (размеры корпуса — 37,5×37,5 мм). Как и в двух предыдущих типах корпусов, между контактами установлены SMD-элементы.
Часть мобильных процессоров на ядре Northwood выпускалась в корпусе типа FC-mPGA. Основным отличием этого типа корпуса от FC-mPGA2 является отсутствие теплораспределительной крышки.
Маркировка процессоров, имеющих теплораспределительную крышку, нанесена на её поверхность, а у остальных процессоров маркировка нанесена на две наклейки, расположенные на подложке с двух сторон от кристалла.
Архитектура NetBurst (рабочее наименование — P68), лежащая в основе процессоров Pentium 4, разрабатывалась компанией Intel, в первую очередь, с целью достижения высоких тактовых частот процессоров. NetBurst не является развитием архитектуры P6, использовавшейся в процессорах Pentium III, а представляет собой принципиально новую по сравнению с предшественниками архитектуру. Характерными особенностями архитектуры NetBurst являются гиперконвейеризация и применение кэша последовательностей микроопераций вместо традиционного кэша инструкций. АЛУ процессоров архитектуры NetBurst также имеет существенные отличия от АЛУ процессоров других архитектур.[6]
Гиперконвейеризация (англ. Hyper Pipelining).
Процессоры Pentium 4 на ядрах Willamette и Northwood имеют конвейер глубиной 20 стадий, а процессоры на ядрах Prescott и Cedar Mill — 31 стадию (без учёта стадий декодирования инструкций: в связи с применением кэша последовательностей микроопераций, декодер вынесен за пределы конвейера). Это позволяет процессорам Pentium 4 достигать более высоких тактовых частот по сравнению с процессорами, имеющими более короткий конвейер при одинаковой технологии производства. Так, например, максимальная тактовая частота процессоров Pentium III на ядре Coppermine (180 нм технология) составляет 1333 МГц, а процессоры Pentium 4 на ядре Willamette способны работать на частоте, превышающей 2000 МГц.[6]
Основными недостатками длинного конвейера являются уменьшение удельной производительности по сравнению с коротким конвейером (за один такт выполняется меньшее количество инструкций), а также серьёзные потери производительности при некорректном выполнении инструкций (например, при неверно предсказанном условном переходе или кэш-промахе).[6][7]
Для минимизации влияния неверно предсказанных переходов, в процессорах архитектуры NetBurst используются увеличенный по сравнению с предшественниками буфер предсказания ветвлений (англ. branch target buffer) и новый алгоритм предсказания ветвлений, что позволило достичь высокой точности предсказания (около 94 %) в процессорах на ядре Willamette. В последующих ядрах механизм предсказания ветвлений подвергался модернизациям, повышавшим точность предсказания.[6][8]
Кэш последовательностей микроопераций (англ. Execution Trace Cache)
Процессоры архитектуры NetBurst, как и большинство современных x86-совместимых процессоров, являются CISC-процессорами с RISC-ядром: перед исполнением сложные инструкции x86 преобразуются в более простой набор внутренних инструкций (микроопераций), что позволяет повысить скорость обработки команд. Однако, вследствие того, что инструкции x86 имеют переменную длину и не имеют фиксированного формата, их декодирование связано с существенными временными затратами.[9]
В связи с этим, при разработке архитектуры NetBurst было принято решение отказаться от традиционной кэш-памяти инструкций первого уровня, хранящей команды x86, в пользу кэша последовательностей микроопераций, хранящего последовательности микроопераций в соответствии с предполагаемым порядком их исполнения. Такая организация кэш-памяти позволила также снизить временные затраты на выполнение условных переходов и на выборку инструкций.
АЛУ и механизм ускоренного выполнения целочисленных операций (англ. Rapid Execution Engine)
Так как основной целью разработки архитектуры NetBurst было повышение производительности за счёт достижения высоких тактовых частот, возникла необходимость увеличения темпа выполнения основных целочисленных операций. Для достижения этой цели АЛУ процессоров архитектуры NetBurst разделено на несколько блоков: «медленное АЛУ», способное выполнять большое количество целочисленных операций, и два «быстрых АЛУ», выполняющих только простейшие целочисленные операции (например, сложение). Выполнение операций на «быстрых АЛУ» происходит последовательно в три этапа: сначала вычисляются младшие разряды результата, затем старшие, после чего могут быть получены флаги.
«Быстрые АЛУ», обслуживающие их планировщики, а также регистровый файл синхронизируются по половине такта процессора, таким образом, эффективная частота их работы вдвое превышает частоту ядра. Эти блоки образуют механизм ускоренного выполнения целочисленных операций.
В процессорах на ядрах Willamette и Northwood «быстрые АЛУ» способны выполнять лишь те операции, которые обрабатывают операнды в направлении от младших разрядов к старшим. При этом результат вычисления младших разрядов может быть получен через половину такта. Таким образом, эффективная задержка составляет половину такта. В процессорах на ядрах Willamette и Northwood отсутствуют блоки целочисленного умножения и сдвига, а данные операции выполняются другими блоками (в частности, блоком инструкций MMX).
В процессорах на ядрах Prescott и Cedar Mill присутствует блок целочисленного умножения, а «быстрые АЛУ» способны выполнять операции сдвига. Эффективная задержка операций, исполняемых «быстрыми АЛУ», возросла по сравнению с процессорами на ядре Northwood и составляет один такт.[10]
Система повторного исполнения микроопераций (англ. Replay System)[7]
Основной задачей планировщиков микроопераций является определение готовности микроопераций к исполнению и передача их на конвейер. Вследствие большого числа стадий конвейера, планировщики вынуждены отправлять микрооперации на исполнительные блоки до того, как завершится выполнение предыдущих микроопераций. Это обеспечивает оптимальную загрузку исполнительных блоков процессора и позволяет избежать потери производительности в том случае, если данные, необходимые для выполнения микрооперации, находятся в кэш-памяти первого уровня, регистровом файле, или могут быть переданы минуя регистровый файл.
При определении готовности новых микроопераций к передаче на исполнительные блоки, планировщику необходимо определить время выполнения тех предыдущих микроопераций, результатом которых являются данные, необходимые для выполнения новых микроопераций. В том случае, если время выполнения заранее не определено, планировщик для его определения использует наименьшее время её выполнения.
Если оценка времени, необходимого для получения данных, оказалась верной, микрооперация выполняется успешно. В том случае, если данные не были получены вовремя, проверка корректности результата заканчивается неудачей. При этом микрооперация, результат выполнения которой оказался некорректен, ставится в специальную очередь (англ. replay queue), а затем вновь направляется планировщиком на исполнение.
Несмотря на то, что повторное исполнение микроопераций приводит к значительным потерям производительности, применение данного механизма позволяет в случае ошибочного исполнения микроопераций избежать останова и сброса конвейера, который приводил бы к более серьёзным потерям.
|