Обзор архитектуры и особенностей нового 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-нанометрового технологического процесса, что позволило существенно увеличить количество транзисторов в ядре. На что пошли эти транзисторы, мы скоро увидим, а пока что посмотрим фотографии процессорного ядра.
Как достигается такое тонкое 90-нанометровое совершенство? Какие имеются отличия старого и нового технологического процесса?
130 нанометров | 90 нанометров |
6 слоёв медных соединений | 7 слоёв медных соединений |
Диэлектрик SIOF с низким диэлектрическим коэффициентом | Диэлектрик CDO с низким диэлектрическим коэффициентом |
Силицид кобальта | Силицид никеля |
Ячейка памяти SRAM площадью 2 кв. мкм | Ячейка памяти SRAM площадью 1,15 кв. мкм |
248-нанометровая литография | 193-нанометровая литография |
Обычный кремний | Растянутый кремний |
Применение нового технологического процесса позволило, несмотря на увеличение количества транзисторов в кристалле, всё равно получать большее количество ядер с одной пластины, тем более что Intel переходит с 200-миллиметровых на 300-миллиметровые подложки. Однако без знания процента выхода годных кристаллов это ни о чем не говорит. А процент этот, конечно, держится в секрете.
Понятно, почему именно 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 содержатся не в порядке их расположения в памяти, а в порядке их расположения в программе с учетом условных переходов, которые специально предсказываются. Такая организация позволяет непрерывно снабжать процессор потоком инструкций. То есть, это кэш получается умнее обычного кэша инструкций первого уровня. Представьте себе, например, что у вас в кошельке монеты уже расположены в том порядке, в котором вы будете платить за покупку.
Trace cache умеет доставлять в процессорное ядро 3 инструкции за такт, там они помещаются в пул инструкций и выполняются по мере готовности функциональных устройств. Ходили слухи, что кэш инструкций Prescott будет вмещать 16 тыс. операций и уметь доставлять 4 инструкции за такт, что могло поднять производительность. Однако, так как количество функциональных устройств всякого умножения-сложения и т.п. не увеличилось, то и необходимости в увеличении скорости выдачи микроопераций особой нет - их просто некому будет обрабатывать.
Prescott и 64-битность
Ходит много слухов, о том, что в Prescott якобы уже включены и пока просто спрятаны 64-битные расширения, то ли нечто, совместимое с AMD x86-64, то ли свой собственный новый набор команд. Есть даже мнение, что Prescott якобы может понимать и исполнять в режиме некоторой эмуляции систему команд процессоров Itanium. Некоторым подтверждением этого слуха стали исследования на сайте www.chip-arhitect.com. Там исследовали фотографии процессорного ядра, и сумели углядеть в сравнении с ядром Northwood увеличение площади, занимаемой trace cache. С учётом того, что его объём «в микрооперациях» не увеличился, можно сделать вывод об увеличении размера микрооперации «в байтах», что и требуется для 64 битного режима.
А что, в принципе, требуется для внедрения поддержки 64 бит? На самом деле, совсем не так уж много, ведь даже на примере AMD видно, что часть, отвечающая за 64битность, занимает совсем немного общей площади процессорного ядра. У процессора и так есть целая уйма внутренних регистров, гораздо больше, чем количество имён, доступных программе. Дополнительные регистры используются при переименовании регистров, что бы избежать зависимостей в командах, когда несколько команд используют один и то же регистр, но на самом деле независимы и могут выполняться параллельно. Несложно сделать эти регистры 64-битными. Регистры SSE так вообще 128-битные. Остается 64-битное умножение и сложение. Умножение в Pentium 4 выполняется в блоке FPU, у которого и так битность больше 32, а 64-битное сложение легко разбивается на два 32-битных сложения. С учётом увеличения стадий конвейера, вероятно, легко добавить одну стадию для склеивания двух 32-битных половинок при сложении на самый крайний случай. Остаётся разрядность адресов, но процессор ведь как-то может адресовать больше 4 Гбайт памяти, так что слегка переделать блок адресации не должно быть очень трудно. Тем более, что сначала больше 4 Гбайт адресовать не требуется, Athlon 64 тоже физически не все 2^64 байт может адресовать.
Таким образом, ведение 64-битных расширений в Prescott - это скорее маркетинговый, нежели технологический вопрос. Очень вероятно, что такие возможности действительно уже заложены при проектировании Prescott, и могут быть легко активированы в новой ревизии. Так что 32-битный процессор может в принципе (только в принципе, прошу заметить!) элегантным движением превратиться в 64-битный.
Prescott и автоматический дизайн ядра
При проектировании этого процессора Intel впервые использовала средства автоматизированного расположения блоков на ядре. При расположении блоков на кристалле вручную проектировщик стремился располагать вместе отдельно от других блоков схемы, отвечающие за выполнение одной функции. Это облегчало с человеческой точки зрения процесс проектирования, но не всегда было оптимально с точки зрения работы процессора. При автоматическом расположении блоки различной функциональности не обязаны располагаться далеко друг от друга, и могут хитро переплетаться, так как компьютер всё равно легко будет их различать.
Но что это дало в плане изменений в производительности? Вот Pentium 4 выполнял довольно медленно умножение целых чисел, так как оно на самом деле производилось в отдельном блоке FPU. И вот теперь блоки как-то хитро переплелись, и вполне может быть, что умножение теперь выполняется быстрее.
Prescott и SSE3
Как уже упоминалось ранее, для достижения высокой производительности для процессора Pentium 4 требовалась оптимизация программ под SSE, SSE2 или Hyper-Threading. Часто бывало, что неоптимизированная версия программы выполнялась быстрее на процессорах AMD, а оптимизированная – на процессорах intel. В новых процессорах AMD появилась поддержка набора инструкций SSE2, а поддержка SSE существовала и в AthlonXP. Но, всё равно, эти инструкции не так эффективно выполняются на Athlon - Pentium4 делает это эффективнее.
И вот новый набор инструкций в процессорах Prescott, ранее имевший рабочее название Prescott New Instruction, и получивший в итоге не совсем верное с технической точки зрения название SSE3, призван облегчить оптимизацию программ под SSE и SSE2. Причём, в первую очередь, сделать более легкой полностью автоматическую оптимизацию программ средствами компилятора. То есть, для оптимизации необходимо будет просто перекомпилировать программу.
Почему же название SSE3 не совсем корректно? Для того, чтобы ответить на этот вопрос, необходимо понять, в чём суть всех SIMD-расширений. Они позволяют одной командой оперировать сразу несколькими парами операндов. Например, одной командой сложить 4 пары чисел, или умножить 4 пары чисел. И в SSE-регистрах данные хранятся параллельно, в одном - 4 первых элемента каждой пары чисел, в другом - 4 вторых элемента.
Часть 4 | Часть 3 | Часть 2 | Часть 1 | Регистр |
d1 | c1 | b1 | a1 | 1 |
d2 | c2 | b2 | a2 | 2 |
+ | ||||
d1+d2 | c1+c2 | b1+b2 | a1+a2 | 1 |
Но совсем не удобно тогда складывать пары чисел между собой. Например, покомпонентно сложить два четырёхмерных вектора удобно, а найти скалярное произведение – неудобно, так как необходимо будет складывать последовательно произведения пар компонентов, что не поддерживается удобным образом в SSE.
В SSE3 появились удобные команды горизонтального последовательного сложения и вычитания операндов, а также другие разнообразные вспомогательные команды, облегчающие работу с данными.
Рассмотрим потенциальные выгоды от SSE3 на примере нахождения квадрата модуля комплексного числа. Пусть все данные уже находятся в регистрах. Итак, |a+bi|2=a*a+b*b. Без использования SSE2 необходимо 3 операции, два умножения и сложение. При оптимизации под SSE2 можно удвоить производительность, вычисляя модуль сразу двух комплексных чисел одновременно.
Вторая половина регистра | Первая половина регистра | Регистр |
a2 | a1 | 1 |
b2 | b1 | 2 |
* | ||
a2*a2 | a1*a1 | 1 |
* | ||
b2*b2 | b1*b1 | 2 |
+ | ||
a2*a2+b2*b2 | a1*a1+b1*b1 | 1 |
Однако такая оптимизация не всегда возможна, так как не всегда приходится считать несколько модулей последовательно, часто требуется специально переписывать программу. Посмотрим, что будет при использовании SSE3.
Вторая половина регистра | Первая половина регистра | Регистр |
b | a | 1 |
* | ||
b*b | a*a | 1 |
горизонтальное сложение | ||
a*a+b*b | 1 |
Итак, можно обойтись всего двумя операциями, то есть, поднять производительность в полтора раза. Это меньше, чем при полной оптимизации под SSE2, но зато может быть легко осуществлено компилятором. Конечно, общий эффект по всей программе не будет таким большим, так как есть большое число других ограничивающих факторов. Но на неплохой прирост в расчётных задачах можно надеяться, при условии их перекомпиляции, конечно.
Занесём такое удобное дополнение набора SIMD-инструкций в несомненный плюс новых процессоров, который будет постепенно проявлять себя с появлением перекомпилированного программного обеспечения.
Более подробно с новыми инструкциями можно ознакомиться по этой ссылке.
Предварительные выводы
Какие можно сделать выводы на основании обзора архитектурных новшеств процессора Prescott? Достоин ли он названия Pentium 5, какое ему прочили? Изменений в нём, конечно, меньше, чем в Pentium 4 по сравнению с Pentium III, но можно считать, что был бы достоин, если бы сразу стартовал с высоких частот. А так как на низких частотах особенно не развернешься, многие нововведения, рассчитанные на высокие частоты, сейчас выглядят сомнительно, и улучшения могут компенсироваться некоторыми недостатками.
Однако, и на современных частотах новый процессор выглядит перспективнее, за счёт наличия нового удобного расширения набора инструкций и улучшенной поддержки HT. Но, вероятно, что в тех задачах, где Northwood был не очень силён, новый процессор может также показывать себя плохо. А уж в тех задачах, которые очень критичны к латентности кэша второго уровня, но не критичны к его объёму, все может быть еще хуже Зато в некоторых приложениях удвоенный объем кэша может серьёзно поднять производительность сам по себе.
Но без тестирования всё равно затруднительно будет сказать про изменения производительности в каждом отдельно взятом приложении. К рассмотрению результатов официального тестирования мы сейчас и переходим. Собственное же тестирование процессоров Prescott мы выложим в самое ближайшее время.
Внутренние тесты Intel
Процессоров Prescott с частотой 3400 МГц ещё совсем мало, процессоры же меньшей частоты желающих тестировать не очень много. Предлагаем вам результаты внутреннего тестирования Intel. Однако, известно, что производители процессоров – плохие тестеры, так что будет относиться к ним с известной долей настороженности.
Итак, для начала сравним начальные частоты трёх ядер, производящихся с использованием разных технологических процессов: 0,18; 0,13 и 0,9 мкм.
Это может быть интересно с точки зрения проверки масштабируемости семейства Pentium4 по частоте: получаем ли мы пропорциональный приросту частоты прирост производительности? Конфигурация тестов стандартна, только в тестовом стенде Pentium4 1500 использовалась видеокарта Geforce 4, тогда как у более новых – Radeon 9700 Pro, а также для разных процессоров использовались компиляторы разных версий. По крайней мере, с такими условиями масштабируемость по частоте более-менее соблюдается, что мы и увидим на следующей диаграмме.
Теперь перейдём к сравнению всех трёх процессоров Pentium 4 с частотой 3400 МГц: Pentium4 Northwood, Prescott и Extreme Edition. Последний добавили, чтобы проверить влияние увеличения объёма кэша на данный тест.
Итак, картина получается достаточно интересной. Первый тест оказывается не критичен к объёму КЭШа, все три процессора с различным объёмом КЭШа идут практически вровень. А Sysmark несколько более критичен и к объему кэша, и к его латентности, так что здесь опять равенство. 3DMark03 CPU хоть и сильно зависит от памяти, но видимо, действуют и другие негативные факторы, вроде той же латентности.
QuakeIII сильно выигрывает от увеличения объёма кэша, но, видимо, содержит, что характерно для игр, слишком много условных переходов, что всё-таки снижает производительность Prescott. Тесты Spec тоже очень любят большой кэш, так что тут Prescott хорошо себя проявляет. Но SpecInt оказывается более неудобен, так как содержит больше ветвлений, что, видимо, мешает предвыборке данных в кэш первого уровня и т.п.
Однако, в данном наборе нет приложений, не то что оптимизированных, но даже перекомпилированных под Prescott (и Spec тоже не полностью перекомпилирован), так что результаты только самые предварительные.
Итак, мы сделали первый обзор архитектуры нового ядра Pentium 4. Новый процессор получился более интересным, чем предыдущий. Архитектура NetBurst приобрела благодаря улучшению системы команд некоторую законченность. Эх, лучше бы Pentium4 сразу таким вышел. Может так случиться, что это семейство станет на длительное время основным в производстве Intel, и это будет неплохо, тем более что с ростом частот все недостатки нового процессора испарятся.
В ближайшее время, как мы уже обещали, мы сделаем собственное тестирование процессоров с ядром Prescott. Следите за анонсами!