Обзор архитектуры и особенностей нового Intel Pentium 4 с ядром Prescott

Вступление

Итак, несколько раз переносившийся официальный анонс нового процессора фирмы Intel, носящего кодовое имя Prescott, наконец-то произошёл. Теперь можно определённо говорить о различных нововведениях, улучшениях и решениях, примененных в этом процессоре. Что в первую очередь интересно было бы узнать из разбора архитектурных изменений, случившихся в процессорном ядре? Для начала мы составим примерное представление о производительности нового процессора, тем более, что процессоры на ядре Prescott получили наименование Pentium 4E. Intel ограничилась всего лишь добавлением суффикса, как было, например, с процессорами Northwood на шине 800 МГц с технологией HT.

Интересно прикинуть, будет ли новый процессор требовать для эффективной работы новое программное обеспечение. Сразу ли можно будет использовать его на полную мощность, или, как в случае с Pentium 4, надо будет ждать некоторое время, пока появятся написанные с учётом его особенностей приложения. Тогда для многих старых приложений, не перекомпилированных для Pentium4, довольно долго оптимальным оставалось использование Pentium III.

Действительно, тогда многие были напуганы плохой производительностью первых Pentium 4 в большом количестве приложений, казалось, что новый процессор медленнее старого. Однако новая архитектура Pentium4 разрабатывалась с целью достижения больших частот и  по мере их роста всё вставало на свои места.  А ведь некоторые тогда требовали от Intel дальнейшего развития «нормальной» архитектуры Pentium III, которая якобы искусственно затормаживалась, поскольку Pentium III не получил быстрой шины, появившейся в Pentium4 и поначалу его спасавшей.

Однако, если попытаться найти некоторую логику в развитии линейки процессоров Intel, то можно настроиться на более оптимистичный лад. Действительно, рассмотрим линейку процессоров Pentium – PentiumMMX – PentiumII - PentiumIII. Тогда первый Pentium получил принципиально новый пятистадийный конвейер, а последовавший Pentium MMX – первый набор SIMD-расширений. В начале этот конвейер требовал для параллельной обработки специальной ручной оптимизации программ, так называемого U-V спаривания. Оно заключалось в том, что ассемблерные инструкции, могущие быть обработанными параллельно, одна на U, другая на V конвейере, вручную расставлялись в коде программы вместе, «спаривались». Это позволяло достичь двухкратного прироста производительности.

Тогда в компьютерных играх ещё использовался software-рендеринг, и основная небольшая процедура растеризации треугольника могла быть хорошо оптимизирована под U-V конвейер. Это обеспечивало процессорам Intel большое преимущество в трёхмерных играх. А процессоры AMD тогда были лучше во всяких офисных программах, там никакого трудоёмкого U-V спаривания не могло быть. В Pentium II конвейерная обработка улучшилась, образно говоря, процессор сам стал «спаривать» инструкции для параллельной обработки, выполняя их вне порядка, установленного в программе, по мере готовности операндов и наличия свободных функциональных устройств. Это позволило очень серьёзно улучшить производительность.

Посмотрим, насколько история повторится в этот раз, поскольку оптимизация приложений под SSE2, крайне желательная для процессоров Pentium 4, не очень проста, и требует некоторых программистских усилий.


Анонс

Итак, 2 февраля произошёл массовый анонс целого ряда процессоров. Были анонсированы Pentium4 2800E, 3000E, 3200E, и 3400E, а также новая версия Pentium4 Extreme Edition с частотой 3400 МГц, и ещё зачем-то Pentium 4 Northwood с частотой 3400МГц. Был представлен также процессор Pentium4 2800A, процессор с ядром Prescott, но на пониженной частоте шины и без поддержки технологии Hyper-Threading. Этот процессор появился якобы из-за того, что процессоры Prescott долгое время не хотели работать на 800МГц шине, анонс и задерживался. Накопленные запасы «старых» кристаллов скопились в большом количестве на складах, и их решено было тоже пристроить.

Процессор

Ядро

Шина

Технология
Hyper-Threading

КЭШ третьего уровня

Разъём

Pentium4EE 3400

Northwood*

800

Да

2MB

s478

Pentium4C 3400

Northwood

800

Да

Нет

s478

Pentium4E 3400

Prescott

800

Да

Нет

s478

Pentium4E 3200

Prescott

800

Да

Нет

s478

Pentium4E 3000

Prescott

800

Да

Нет

s478

Pentium4E 2800

Prescott

800

Да

Нет

s478

Pentium4A 2800

Prescott

533

Нет

Нет

s478

Из таблицы видно, что процессоры с ядром Prescott идут вперемежку с предыдущими моделями. На текущий момент Intel не планирует более продлевать жизнь Socket 478, ограничившись моделями с частотой 3400 МГц. По слухам, некоторая кутерьма со списком плат, поддерживающих новый процессор Prescott, была вызвана именно специальными требованиями к энергопотреблению старших моделей. В итоге, низкочастотные модели не имеют особых требований к материнским платам, и должны работать практически на всех платах, поддерживающих шину 800 МГц и технологию HT. Модель 3600E, скорее всего, будет иметь уже другой конструктив, призванный обеспечить лучшее охлаждение процессоров и обслужить новые параметры энергопотребления. Таким образом, некоторые вопросы по поддержке старыми платами может вызвать только модель Pentium3400E. С другой стороны, всё равно найдётся мало желающих апгрейдить свой, например, Pentium 4 2800C на Pentium 4 3200E, потому что прирост производительности вряд ли будет очень большим.

Среди анонсированных процессоров бросается в глаза наличие обычного Pentium 4 с увеличенной до 3400 МГц частотой. Зачем он нужен, если уже есть процессор Prescott той же частоты? И тут мы подходим ко второй возможной причине переносов времени анонса. Дело в том, что производство Pentium 4E 3400 Мгц ещё не налажено так же хорошо, как производство младших моделей Prescott. И первое время обеспечить достаточно крупные поставки этих процессоров Intel, возможно, будет не в состоянии. Да что там массовые поставки – сейчас даже достаточно крупные тестовые лаборатории затрудняются эти процессоры получить. Pentium 4EE тоже совсем не массовый и, к тому же жутко дорогой, так что противостоять AMD Athlon64 3400+, получается, кроме старого проверенного бойца Pentium 4С  просто некому.   Однако Intel планирует перейти на производство Pentium4 Prescott в рекордно короткие сроки, и уже ко второму полугодию большинство процессоров должно будет производиться на этом ядре.

А сейчас перейдём к рассмотрению непосредственно нового ядра.


Prescott

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

Core.jpg

Фотография обнажённой модели. Отсутствует четкая компоновка блоков - яркий пример усовершенствованной автоматической разводки внутри кристалла. Любители процессорной «клубнички» могут найти ещё много высококачественных фотографий здесь.

Как достигается такое тонкое 90-нанометровое совершенство? Какие имеются отличия старого и нового технологического процесса?

130 нанометров

90 нанометров

6 слоёв медных соединений

7 слоёв медных соединений

Диэлектрик SIOF с низким диэлектрическим коэффициентом

Диэлектрик CDO с низким диэлектрическим коэффициентом

Силицид кобальта

Силицид никеля

Ячейка памяти SRAM площадью 2 кв. мкм

Ячейка памяти SRAM площадью 1,15 кв. мкм

248-нанометровая литография

193-нанометровая литография

Обычный кремний

Растянутый кремний

Применение нового технологического процесса позволило, несмотря на увеличение количества транзисторов в кристалле, всё равно получать большее количество ядер с одной пластины, тем более что Intel переходит с 200-миллиметровых на 300-миллиметровые подложки. Однако без знания процента выхода годных кристаллов это ни о чем не говорит. А процент этот, конечно, держится в секрете.

Technology_.jpg

Параметры нового техпроцесса.

Понятно, почему именно Intel заинтересовалась растянутым кремнием. Она делает ставку на рост частот, значит, каждый такт процессора должен становиться всё короче и короче по времени. Он может становиться настолько коротким, что электрический сигнал просто не сможет успеть дойти от одного блока процессора к другому, что будет порождать постоянные задержки в несколько тактов. Например, Pentium4 складывает содержимое двух регистров с такой же скоростью, как и копирует их. Действительно, что есть копирование одного регистра в другой? Это зануление одного и сложение.

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

Prescott якобы должен был стать некоторой промежуточной моделью между Pentium 4 Northwood и процессорным ядром Tejas, которое планировалось на вторую половину этого года, и должно было быть весьма навороченным: 64 бита и много чего еще. Так что жизненный цикл Prescott должен был быть ещё более коротким, чем период Willamette. Однако известно ведь, что нет ничего более постоянного, чем временное. Так что вполне вероятно, что новое ядро надолго задержится в производстве.

Итак, настала пора посмотреть, какие изменения претерпела архитектура Netburst в новом процессоре.


Архитектура

Глянем сначала в целом на сравнительную таблицу характеристик Northwood и Prescott.

Параметр

Northwood

Prescott

Кэш-память первого уровня

8 Кбайт

16 Кбайт

Латентность кэша L1

2 такта

>2

Ассоциативность L1

4

8

Trace cache

12Kmops

12Kmops

Trace cache delivery rate

3mops

3mops

Кэш-память второго уровня

512KB

1024KB

Латентность кэша L2

~7 тактов

~18 тактов

Ассоциативность L2

8

8

Сбрасываемая длина конвейера

20

31

Расширение набора инструкций

SSE2

SSE3

Дополнительные улучшения Prescott

Улучшенная предвыборка данных

Улучшенное предсказание ветвлений

Дополнительные буферы комбинированной отложенной записи в память

Ускорение некоторых операций с целыми числами, в том числе, умножение

Первое, что бросается в глаза - увеличившийся размер кэшей первого и второго уровня и поддержка нового набора инструкций SSE3. Размер кэшей, особенно, кэша второго уровня, очень любят указывать в прайс-листах для удовлетворения слегка продвинутых покупателей, чтобы они могли отличать различные модификации процессоров. Люди покупают не только мегагерцы, но и килобайты кэша, особенно после того, как они получили возможность сравнить производительность Pentium 4 и P4 Celeron.

Однако производительность процессора, как мы знаем, зависит от множества показателей. Вот, например, объём кэшей увеличился, но латентность-то возросла, что может быть более важным. Давайте этот момент обсудим более плотно.


Prescott и иерархия кэшей

Так как размер кэшей увеличился в два раза, можно примерно представить, почему латентность кэша второго уровня серьёзно возросла.

Размер-то блоков памяти увеличился вдвое, однако расстояние до них тоже несколько возросло, и возросло время поиска данных в внутри блока из-за увеличившегося размера Какой из факторов должен перевесить – объем или время поиска? В общем случае сказать сложно, но есть несколько крайних случаев.

Если приложение работает с большим объёмом данных, много большим, чем размер кэш-памяти, и очень часто происходит случайный доступ к памяти, то увеличение кэша L2 в два раза не сильно увеличит процент попаданий в этот кэш, а возросшая латентность не сильно повлияет на производительность. В этом случае особых изменений в производительности не будет, так как она и так сильно ограничена эффективностью чтения из памяти. Но если объём используемых приложением данных сравним с объёмом кэша L2, то увеличение его объема вдвое сильно снизит процент «промахов» и сильно повысит производительность, несмотря на возросшую латентность, так как она всё равно значительно меньше латентности «обычной» оперативной памяти.

Однако, если объём используемых данных меньше размера КЭШа, данные хорошо локализуются и располагаются в памяти последовательно, то увеличение латентности приведёт к заметному падению производительности.

Таким образом, можно ожидать все три варианта изменения производительности из-за изменений характеристик кэша L2. Все зависит от приложений.

В некоторой степени похожа на ситуацию с КЭШем L2 ситуация с изменением параметров L1 КЭШа. Но если промахи в кэш второго уровня всё-таки достаточно редки, процент попаданий даже для самых «плохих» программ приближается к 99%, то объем «наличной» памяти первого уровня очень невелик, и промахи случаются регулярно, намного чаще, чем в L2: попаданий может быть всего около 75%. Так что увеличение объема L1 должно благотворно сказаться на производительности, так как его латентность всё равно меньше, чем латентность кэша L2. А 16 Кбайт существенно ближе к объёму современных структур данных, чем 8KB. Так что увеличение L1, не смотря на слегка увеличившуюся латентность, занесём скорее в плюс. Хотя и тут может быть некоторый отрицательный эффект в отдельных случаях.

Но помимо увеличения размера, возросла также ассоциативность L1 КЭШа с 4 до 8. Это усложняет КЭШ, но позволяет в некоторых случаях более оптимально его заполнить. Дело в том, что КЭШ не может содержать произвольный регион памяти, и дело здесь не в размере, а в его устройстве. Возвращаясь к нашей аналогии, представьте себе, что ранее ларёк мог содержать не более 4 продуктов одного типа, но разных производителей, а теперь целых 8.

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

 

Prescott и удлинившийся конвейер

С целью дальнейшего наращивания частоты конвейер также был «несколько» удлинён – более чем в полтора раза, с 20 до 31 ступени.

Думаю, понятно, чем плохо удлинение конвейера - при неудачно предсказанном ветвлении конвейер приходиться сбрасывать, так как он выполнял не ту работу, и чем больше стадий, тем больше штрафных тактов мы имеем в итоге. Но в Prescott обещают улучшенный блок предсказания ветвлений. Можно попробовать прикинуть, сможет ли он компенсировать «штрафы» за неправильно предсказанные ветвления. Процент предсказания естественно колеблется от программы к программе, но 90% и даже более являются типичным значением. Таким образом, если «штраф» увеличился меньше, чем на треть, то процент неправильно предсказанных ветвлений должен уменьшиться с 10 до 7,5 процентов. То есть, процент предсказания ветвлений должен возрасти с 90% до 92.5%. Казалось бы, всего ничего, он и так во многих случаях достигает 95%.

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

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

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


Prescott и технология Hyper-Threading

По заявлениям Intel, технология HT претерпела заметные улучшения в новых процессорах. Есть несколько предпосылок для этого. Первое, но не самое важное - увеличение количества эксклюзивных ресурсов процессора для каждой нити. Например, возросло количество разнообразных буферов записи в память, в том числе, буферов комбинированной записи в некэшируемые области памяти, например, в видеопамять. Суть их состоит в том, что данные перед отправкой по, например, AGP, сначала накапливаются в специальных буферах, а потом передаются одной транзакцией, вместо нескольких, работающих с небольшими кусками данных. Это обещает небольшое увеличение производительности многонитевого приложения при работе, например, с видео.

Другое очевидное, вероятно, более важное улучшение состоит в увеличении размеров кэш-памяти всех уровней, которые призваны обеспечивать нити данными. Две нити более прожорливы, чем одна, и требуют больше данных. Так что, в некоторых случаях прирост от использования HT может быть больше на Prescott, чем на аналогичном Northwood, именно по этой причине.

Улучшилась поддержка HT и с точки зрения набора процессорных инструкций. Появились две новые инструкции, monitor и mwait. Они делают оптимизацию программ и компонентов операционной системы под технологию HT более легкой. Собственно, применение этих инструкций позволяет эффективно организовать «засыпание» лишних потоков, чтобы они сами не задействовали один из логических процессоров для постоянной проверки флага пробуждения. Процессор эффективным образом делает это за них, отслеживая запись в указанный район памяти и пробуждая по необходимости поток.

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

Другая причина называть новую версию технологию HT «улучшенной» состоит в том, что прирост от HT в Prescott может быть больше, чем в Northwood, за счёт  уменьшения быстродействия однопоточного варианта, например, из-за увеличившейся латентности кэша. А HT будет  нивелировать это, так как во время ожидания данных инструкциями одной нити инструкции другой нити, данные для которых уже есть в регистрах или в L1, могут успешно выполняться.

Таким образом, для оптимизированных под Hyper-Threading приложений можно ожидать серьезный рост производительности.

 

Prescott и trace cache

Многие надеялись на подтверждение слухов об увеличении размера кэша инструкций (trace cache) с 12 Kmops до 16 Kmops в Prescott. Этот кэш содержит уже декодированные в микрооперации обычные инструкции x86, а поскольку одна микрооперация занимает несколько байт, физический размер кэша данных на 12 тысяч инструкций получается куда большим, чем 12 Кбайт. Истинный размер trace cache держится в большом секрете.

Инструкции в trace cache содержатся не в порядке их расположения в памяти, а в порядке их расположения в программе с учетом условных переходов, которые специально предсказываются. Такая организация позволяет непрерывно снабжать процессор потоком инструкций. То есть, это кэш получается умнее обычного кэша инструкций первого уровня. Представьте себе, например, что у вас в кошельке монеты уже расположены в том порядке, в котором вы будете платить за покупку.

Processor_.gif

Блок-схема процессора. Видно, что новых исполнительных устройств не прибавилось.

Trace cache умеет доставлять в процессорное ядро 3 инструкции за такт, там они помещаются в пул инструкций и выполняются по мере готовности функциональных устройств. Ходили слухи, что кэш инструкций Prescott будет вмещать 16 тыс. операций и уметь доставлять 4 инструкции за такт, что могло поднять производительность. Однако, так как количество функциональных устройств всякого умножения-сложения и т.п. не увеличилось, то и необходимости в увеличении скорости выдачи микроопераций особой нет - их просто некому будет обрабатывать.


Hosted by uCoz