NetBurst

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

NetBurst (рабочее название — P68) — суперскалярная гиперконвейерная микроархитектура, разработанная компанией Intel и лежавшая в основе микропроцессоров Pentium 4, Pentium D, Celeron и Xeon.

История[править | править вики-текст]

Архитектура NetBurst пришла на смену архитектуре P6 на рынке процессоров для настольных и серверных систем. Она не являлась развитием архитектуры P6, а представляла собой принципиально новую по сравнению со всеми предшественниками архитектуру.

Первые процессоры архитектуры NetBurst были анонсированы 20 ноября 2000 года. 8 августа 2007 года компания Intel объявила о начале действия программы по снятию с производства всех процессоров этой архитектуры.[1][2] На смену процессорам архитектуры NetBurst пришли процессоры семейства Core 2 Duo, архитектура которых представляет собой развитие архитектуры P6.

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

Архитектура NetBurst разрабатывалась, в первую очередь, с целью достижения высоких тактовых частот процессоров. Характерными особенностями архитектуры NetBurst являются гиперконвейеризация и применение кэша последовательностей микроопераций вместо традиционного кэша инструкций. АЛУ процессоров архитектуры NetBurst также имеет существенные отличия от АЛУ процессоров других архитектур. Также возможно применение технологии Hyper-threading.[1]

Гиперконвейеризация (англ. Hyper Pipelining).

Процессоры Pentium 4 на ядрах Willamette и Northwood имеют конвейер глубиной 20 стадий, а процессоры на ядрах Prescott и Cedar Mill — 31 стадию. При этом стадии декодирования инструкций не учитываются: в связи с применением кэша последовательностей микроопераций, декодер (англ. Instruction decoder) вынесен за пределы конвейера. Это позволяет процессорам Pentium 4 достигать более высоких тактовых частот по сравнению с процессорами, имеющими более короткий конвейер при одинаковой технологии производства. Так, например, максимальная тактовая частота процессоров Pentium III на ядре Coppermine (180 нм. технология) составляет 1333 МГц, а процессоры Pentium 4 на ядре Willamette способны работать на частоте, превышающей 2000 МГц.[1]

Для минимизации влияния неверно предсказанных переходов, в процессорах архитектуры NetBurst используются увеличенный по сравнению с предшественниками буфер предсказания ветвлений (BTB, англ. branch target buffer) и новый алгоритм предсказания ветвлений, что позволило достичь высокой точности предсказания (около 94%) в процессорах на ядре Willamette. В последующих ядрах механизм предсказания ветвлений подвергался модернизациям, повышавшим точность предсказания.[1][3]

Кэш последовательностей микроопераций (англ. Execution Trace Cache)

Процессоры архитектуры NetBurst, как и большинство современных x86-совместимых процессоров, являются CISC-процессорами с RISC-ядром: перед исполнением сложные инструкции x86 преобразуются в более простой набор внутренних инструкций (микроопераций), что позволяет повысить скорость обработки команд. Однако, вследствие того, что инструкции x86 имеют переменную длину и не имеют фиксированного формата, их декодирование связано с существенными временными затратами.[4]

В связи с этим, при разработке архитектуры NetBurst было принято решение отказаться от традиционной кэш-памяти инструкций первого уровня, хранящей команды x86, в пользу кэша последовательностей микроопераций, хранящего последовательности микроопераций в соответствии с предполагаемым порядком их исполнения. Емкость trace cache составляла около 12 тыс. микроопераций. Такая организация кэш-памяти позволила также снизить временные затраты на выполнение условных переходов и на выборку инструкций.

АЛУ и механизм ускоренного исполнения целочисленных операций (англ. Rapid Execution Engine)

Так как основной целью разработки архитектуры NetBurst было повышение производительности за счёт достижения высоких тактовых частот, возникла необходимость увеличения темпа выполнения основных целочисленных операций. Для достижения этой цели АЛУ процессоров архитектуры NetBurst разделено на несколько блоков: «медленное АЛУ» (англ. slow ALU), способное выполнять большое количество целочисленных операций, и два «быстрых АЛУ» (англ. 2X ALU), выполняющих только простейшие целочисленные операции (например, сложение). Выполнение операций на «быстрых АЛУ» происходит последовательно в три этапа: сначала вычисляются младшие разряды результата, затем старшие, после чего могут быть получены флаги.

«Быстрые АЛУ», обслуживающие их планировщики (англ. Fast scheduler), а также регистровый файл (англ. Integer register file) синхронизируются по половине такта процессора, таким образом, эффективная частота их работы вдвое превышает частоту ядра. Эти блоки образуют механизм ускоренного выполнения целочисленных операций.

В процессорах на ядрах Willamette и Norhtwood «быстрые АЛУ» способны выполнять лишь те операции, которые обрабатывают операнды в направлении от младших разрядов к старшим. При этом результат вычисления младших разрядов может быть получен через половину такта. Таким образом, эффективная задержка составляет половину такта. В процессорах на ядрах Willamette и Norhtwood отсутствуют блоки целочисленного умножения и сдвига, а данные операции выполняются другими блоками (в частности, блоком инструкций MMX).

В процессорах на ядре Prescott (а также более новых ядрах) присутствует блок целочисленного умножения, а «быстрые АЛУ» способны выполнять операции сдвига. Эффективная задержка операций, исполняемых «быстрыми АЛУ», возросла по сравнению с процессорами на ядре Norhtwood и составляет один такт.[5]

Система повторного исполнения микроопераций (англ. Replay System)[6]

Основной задачей планировщиков микроопераций является определение готовности микроопераций к исполнению и передача их на конвейер. Вследствие большого числа стадий конвейера, планировщики вынуждены отправлять микрооперации на исполнительные блоки до того, как завершится выполнение предыдущих микроопераций. Это обеспечивает оптимальную загрузку исполнительных блоков процессора и позволяет избежать потери производительности в том случае, если данные, необходимые для выполнения микрооперации, находятся в кэш-памяти первого уровня, регистровом файле, или могут быть переданы минуя регистровый файл.

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

Если оценка времени, необходимого для получения данных, оказалась верной, микрооперация выполняется успешно. В том случае, если данные не были получены вовремя, проверка корректности результата заканчивается неудачей. При этом микрооперация, результат выполнения которой оказался некорректен, ставится в специальную очередь (англ. replay queue), а затем вновь направляется планировщиком на исполнение.

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

Несмотря на то, что повторное исполнение микроопераций приводит к значительным потерям производительности, применение данного механизма позволяет в случае ошибочного исполнения микроопераций избежать останова и сброса конвейера, который приводил бы к более серьёзным потерям.

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

Основным достоинством процессоров архитектуры NetBurst является возможность работы на высоких тактовых частотах. Это позволяет достичь высокой производительности в оптимизированных задачах и компенсировать низкую удельную производительность. Кроме того, высокая тактовая частота даёт маркетинговые преимущества: потребители склонны выбирать процессоры с большей тактовой частотой («покупают мегагерцы»). К достоинствам процессоров архитектуры NetBurst можно также отнести высокую пропускную способность памяти.[7]

Поддержка технологии HyperThreading некоторыми процессорами архитектуры NetBurst позволяла поднять производительность в задачах, поддерживающих многопроцессорность, однако существуют некоторые задачи, при выполнении которых производительность может снижаться.[6][8]

Благодаря удачной маркетинговой и рекламной политике компании Intel, процессоры архитектуры NetBurst были популярны среди пользователей, что позволяло компании Intel удерживать значительную долю рынка микропроцессоров (больше 70%) и получать прибыль, в отличие от основного конкурента — компании AMD[9][10].

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

Основными недостатками длинного конвейера являются уменьшение удельной производительности по сравнению с коротким конвейером (за один такт выполняется меньшее количество инструкций), а также серьёзные потери производительности при некорректном выполнении инструкций (например, при неверно предсказанном условном переходе или кэш-промахе)[1][6]. Так, например, процессор Pentium 4 с частотой 1700 МГц в неоптимизированных под архитектуру NetBurst задачах уступал процессорам с частотой 1333 МГц[11].

Кроме того, работа процессоров на высоких частотах была связана с высоким тепловыделением. Несмотря на то, что процессоры на ядре Cedar Mill были способны работать на частотах, превышавших 7 ГГц, с использованием экстремального охлаждения (обычно использовался стакан с жидким азотом), максимальная тактовая частота серийных процессоров Pentium 4 составила 3800 МГц. При этом типичное тепловыделение превышало 100 Вт, а максимальное — 150 Вт[12][13][14].

Из-за невозможности дальнейшего наращивания тактовой частоты, компания Intel была вынуждена предложить иной способ повышения производительности. Этим способом стал переход от одноядерных процессоров к многоядерным.

Двухъядерные процессоры архитектуры NetBurst для настольных компьютеров (Pentium D) представляли собой два ядра Prescott (процессоры на ядре Smithfield), находящиеся на одном кристалле, или Cedar Mill (Presler), находящиеся в одном корпусе (по сути два отдельных процессора в одном корпусе). Так как процессоры архитектуры NetBurst изначально разрабатывались как одноядерные, обмен данными между ядрами осуществлялся через оперативную память, что приводило к потерям производительности (для сравнения, конкурирующие процессоры Athlon 64 X2 разрабатывались с расчётом на многоядерность, поэтому имеют специальный блок, позволяющий осуществлять обмен данными минуя оперативную память[15])[16].

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

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

Процессоры архитектуры NetBurst состоят из четырёх основных структурных блоков:

  • Исполнительные устройства (англ. execution unit), осуществляющие выполнение инструкций, а также устройства, обеспечивающие взаимодействие исполнительных устройств.
  • Входной блок (англ. front end), отвечающий за предвыборку данных, предсказание ветвлений и декодирование инструкций (преобразование сложных инструкций x86 в простые внутренние инструкции — микрооперации).
  • Устройства организации внеочередного исполнения (англ. out-of-order buffering logic), обеспечивающие оптимальный порядок исполнения микроопераций.
  • Интерфейс памяти (англ. memory subsystem), представляющий собой группу устройств, обеспечивающих взаимодействие процессора с подсистемой памяти.

Исполнительные устройства

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

  • Целочисленный регистровый файл и логика, обеспечивающая непосредственную передачу данных между блоками АЛУ (Integer Register File / Bypass Network). Регистровый файл обеспечивает хранение результатов операций, однако при этом данные могут передаваться между исполнительными блоками минуя регистровый файл.
  • Блоки генерации адреса чтения и записи (AGU). Предназначены для взаимодействия с кэшем данных. Формируют адреса, по которым производятся операции чтения и записи.
  • АЛУ (ALU). Осуществляют выполнение целочисленных операций.
  • Целочисленный регистровый файл и логика, обеспечивающая непосредственную передачу данных между блоком обработки чисел с плавающей запятой, обеспечивающем выполнение инструкций x87, MMX, SSE и SSE2 (FP Register / Bypass).
  • Блоки обработки чисел с плавающей запятой (FP / MMX / SSE / SSE2, FP Move). Осуществляют выполнение операций над вещественными числами, в том числе операции чтения и записи (блок FP Move).

В процессорах на ядре Prescott и более новых блок обработки чисел с плавающей запятой получил поддержку инструкций SSE3.

Устройства организации внеочередного исполнения

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

  • Диспетчер ресурсов (Allocator / Register Renamer). Осуществляет распределение вычислительных ресурсов, переименование регистров (установление соответствия между логическими регистрами x86 и некоторыми физическими регистрами, выделенными специально для выполняемой инструкции), а также отслеживает состояние всех микроопераций, находящихся в обработке.
  • Очереди микроопераций (Memory uop Queue и Integer/Floating Point uop Queue). Содержат микрооперации, которые необходимо выполнить. При этом микрооперации, осуществляющие взаимодействие с памятью (чтение и запись), отделены от всех остальных и размещаются в специальной очереди (Memory uop Queue).
  • Планировщики микроопераций (Memory Scheduler, Fast, Slow/General FP Scheduler, Simple FP). Определяют готовность микроопераций, находящихся в очередях, к исполнению и направляют их на выполнение в соответствующие исполнительные блоки.

Устройства входного блока

К устройствам входного блока относятся:

  • Модуль и буферы предсказания ветвлений (Front end BTB и Trace cache BTB). Осуществляют предсказание ветвлений и хранят таблицу истории переходов. Для предсказания ветвлений используется как динамический, так и статический методы. Последний используется в том случае, если динамическое предсказание невозможно (в буфере переходов отсутствует необходимая информация).
  • Кэш последовательностей микроопераций (Trace cache). Хранит последовательности микроопераций в соответствии с предполагаемым порядком их исполнения.
  • Декодер инструкций (Instruction decoder). Осуществляет преобразование CISC-инструкций x86 в последовательность RISC-микроопераций, исполняемых процессором.
  • Блок предвыборки инструкций (Prefetcher). Осуществляет предварительную выборку инструкций на основании таблиц предсказания ветвлений и преобразование программного адреса инструкции в физический с помощью таблицы трансляции адресов (I-TLB).
  • ПЗУ микрокода (Microcode ROM). Используется кэшэм последовательностей микроопераций при преобразовании сложных инструкций x86 в последовательность микроопераций.
  • Очередь микроопераций (uop Queue). Содержит микрооперации, поступающие на конвейер процессора.

Интерфейс памяти

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

  • Кэш-память данных первого уровня (L1 Data Cache). Память объёмом 8 (Willamette и Northwood) или 16 КБ с малым временем доступа (латентность составляет 2 такта для Northwood и 5 тактов для Prescott).
  • Кэш-память второго уровня (L2 Cache). Память объёмом 128 (Willamette-128, Northwood-128), 256 (Willamette, Prescott-256), 512 (Northwood), 1024 (Prescott) или 2048 КБ с малым временем доступа (латентность составляет 7 тактов для Northwood и 18 тактов для Prescott). Соединяется с кэшем первого уровня шиной шириной 256 бит.
  • Блок шинного интерфейса (Bus Interface Unit). Осуществляет управление системной шиной.

Некоторые процессоры содержали также кэш-память третьего уровня объёмом 2, 4 или 8 МБ.

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

Конвейер процессора на ядре Northwood

Конвейер процессоров на ядре Northwood Конвейер состоит из 20 стадий:

  • TC, NI (1, 2) — поиск микроопераций, на которые указывает последняя выполненная инструкция.
  • TR, F (3, 4) — выборка микроопераций.
  • D (5) — перемещение микроопераций.
  • AR (6 — 8) — резервирование ресурсов процессора, переименование регистров.
  • Q (9) — постановка микроопераций в очереди.
  • S (10 — 12) — изменение порядка исполнения.
  • D (13 — 14) — подготовка к исполнению, выборка операндов.
  • R (15 — 16) — чтение операндов из регистрового файла.
  • E (17) — исполнение.
  • F (18) — вычисление флагов.
  • BC, D (19, 20) — проверка корректности результата.

Выполнение инструкции начинается с её выборки и декодирования. В том случае, если соответствующая ей последовательность микроопераций отсутствует в кэше последовательностей микроопераций, инструкция считывается из кэш-памяти второго уровня и декодируется. Так как инструкции, хранящиеся в кэш-памяти, имеют физические адреса, для осуществления выборки блоком трансляции адресов производится преобразование виртуального адреса в физический.

Микрооперации, полученные в результате декодирования, помещаются в кэш последовательностей микроопераций. В том случае, если встречается инструкция условного перехода, последовательность микроопераций формируется на основании предсказания перехода, осуществляемого соответствующим блоком. Если инструкция не может быть преобразована в последовательность длиной до четырёх микроопераций, она заменяется на подпрограмму, хранящуюся в ПЗУ микрокода и формирующую такие последовательности. При этом в кэше последовательностей хранятся не сами микрооперации, а адрес этой подпрограммы. Микрооперации, хранящиеся в кэше последовательностей, помещаются в очередь микроопераций.

После подготовки процессора к выполнению микроопераций (резервирование ресурсов, переименование регистров), они помещаются в соответствующие их типам очереди: микрооперации, осуществляющие взаимодействие с памятью, помещаются в отдельную очередь длиной 16 микроопераций, а все остальные — в общую очередь (32 микрооперации). После определения порядка выполнения микроопераций (порядок может быть изменён в зависимости от готовности данных для выполнения микроопераций, от наличия переисполняемых инструкций, наличия свободных вычислительных ресурсов и т.п.), планировщики отправляют микрооперации на выполнение в соответствующие исполнительные блоки: микрооперации, взаимодействующие с памятью, отправляются в блоки генерации адреса, целочисленные операции — в блоки АЛУ, а вещественночисленные — в блоки обработки чисел с плавающей запятой. При этом операнды, необходимые для выполнения микроопераций либо считываются из регистрового файла, либо передаются как результат выполнения предыдущей микрооперации. После выполнения микроопераций происходит формирование флагов и проверка корректности результатов. В том случае, если результаты корректны, происходит отставка (англ. retirement) микроопераций, а результаты помещаются в регистровый файл. Если же результаты выполнения микрооперации некорректны (например, был неверно предсказан переход, или необходимые данные не были вовремя получены), эта микрооперация отправляется на повторное исполнение.[4][17]

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

Процессор Ядро Технология производства Годы выпуска
Pentium 4 Willamette, Northwood, Gallatin, Prescott, Cedar Mill КМОП, 180—65 нм 20002007
Pentium D Smithfield, Presler КМОП, 90—65 нм 2005—2007
Celeron Willamette-128, Northwood-128 КМОП, 180—130 нм 2001—2005
Celeron D Prescott-256, Cedar Mill-512 КМОП, 90—65 нм 2004—2007
Xeon Foster, Prestonia, Gallatin, Potomac, Cranford, Irwindale, Nocona, Paxville, Dempsey, Tulsa КМОП, 180—65 нм 2001—2007
 
Pentium 4 (Northwood) Pentium D (Smithfield) Celeron (Northwood-128) Celeron D (Prescott-256) Xeon DP (Foster)
Pentium 4 (Northwood) Pentium D (Smithfield) Celeron (Northwood-128) Celeron D (Prescott-256) Xeon DP (Foster)

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

  1. 1 2 3 4 5 Willamette - как будет работать новоиспеченный флагман от Intel…
  2. Intel снимает с производства последние Pentium 4 и Pentium D
  3. Intel Pentium 4 «Prescott»: полшага вперед
  4. 1 2 Pentium 4: Мистический и загадочный Trace-кэш
  5. Prescott: Последний из могикан? (Pentium 4: от Willamette до Prescott). Часть 2
  6. 1 2 3 Replay: неизвестные особенности функционирования ядра Netburst
  7. Pentium 4 Extreme Edition и Athlon 64 FX: битва двух рыцарей с участием оруженосцев
  8. Intel Pentium 4 3,06 ГГц с поддержкой технологии Hyper-Threading
  9. Сага о маркетинге в исполнении Intel
  10. IТоги года `2003
  11. Прогнозы, которые подтверждаются: Pentium 4 1.7 GHz и его производительность
  12. Pentium 4 670: теперь на частоте 7.3 ГГц и 18 секунд в Super PI
  13. IA-32 implementation: Intel P4 (incl. Celeron and Xeon) (англ.)
  14. Intel Pentium 4 570/570J 3.8 GHz - JM80547PG1121M (BX80547PG3800E) (англ.)
  15. Athlon 64 X2 4800+: самый быстрый двухъядерный x86 из существующих на данный момент
  16. Presler против Smithfield: новый раунд тестов
  17. Архитектура CPU Автор: Сергей Озеров Опубликовано в журнале "Компьютерра" №37 от 13 октября 2005 года

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

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

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

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