Last but not least Итак, мы наконец-то дождались выхода последнего представителя долгоиграющего семейства процессоров Pentium Pro — Pentium II — Pentium III — Pentium M, растянувшегося по времени более чем на десятилетие (с 1995 по 2006 гг.). Выходит он под странным и несолидным именем Intel Core Duo. Но это не меняет сути: перед нами по-прежнему Pentium M — правда, сильно модифицированный и исполненный в виде двухъядерного процессора с общим кэшем второго уровня. Чтобы не выбиваться из общего ряда имён процессоров архитектуры P6 и при этом подчеркнуть заметные микроархитектурные отличия нового процессора от своего непосредственного предшественника Pentium M (Dothan), будем называть его в тексте настоящей статьи «Pentium M2». Также будем для удобства использовать сокращённые названия для всех процессоров цепочки: PPro, P-II, P-III, P-M, P-M2. Но для начала договоримся о терминологии в связи с неоднозначностью понятий «двухъядерный» и «двухпроцессорный». С лёгкой руки компании Intel в популярной литературе устоялась следующая трактовка: всё, что размещено в одном корпусе (и вставляется в один разъём), называют процессором, а каждое из двух устройств, находящихся в этом корпусе (не обязательно на одном кристалле), не связанных микроархитектурно друг с другом и исполняющих независимые потоки инструкций, называют ядром. С другой стороны, каждое из этих ядер является полноценным процессором в самом строгом смысле слова. Компания IBM, например, использует только строгую терминологию: «two processors on one POWER4 chip» («два процессора на одном чипе POWER4»). Поэтому, чтобы избежать двусмысленностей и при этом не слишком отклоняться от нарождающейся терминологии, в необходимых случаях будем говорить «процессорное ядро», либо «CPU» для обозначения каждого такого «независимого процессора», и «процессорный чип», либо «разъём» (сокет) для обозначения собственно «двухъядерного процессора». В связи с этим систему, содержащую два процессорных разъёма, будет правильнее называть «двухсокетной», а не «двухпроцессорной» (вне зависимости от числа ядер на каждом процессорном чипе). В предыдущей статье про двухъядерные процессоры новой архитектуры этот терминологический момент был обозначен не совсем чётко, и это вызвало некоторые нарекания.  Основные характеристики двухъядерного процессора Yonah показаны на приведенном выше рисунке (на всякий случай уточним: по-русски это слово правильно произносится как «йона», а не «йонах», как это делают многие). На первый взгляд, новый процессор не содержит ничего особенного. Ожидаемый размер кристалла при переходе на технологические нормы 65 нм, ожидаемый общий кэш второго уровня размером 2 МБ, ожидаемое улучшение технологий энергопотребления. Тактовая частота тоже вполне ожидаемая — 2.16 ГГц сейчас и 2.33 во втором квартале. Однако если копнуть глубже, то можно увидеть, что Yonah имеет на удивление много важных микроархитектурных отличий от своего предшественника, процессора P-M на ядре Dothan. Информация о них появилась ещё на весеннем и осеннем форумах IDF-2005, но на фоне новостей о новой процессорной архитектуре Merom/Conroe она не была замечена и оценена по достоинству. Самое интересное, что ничто не предвещало таких изменений в микроархитектуре процессора для мобильных применений. Похоже, что компания Intel выбрала путь осторожного эволюционного развития существующей архитектуры P6+ (P-M), чтобы обкатать различные новшества перед внедрением их в процессоры следующего поколения Merom/Conroe. Вполне возможно, что эти новшества не внесут существенного вклада в увеличение производительности, поскольку они не затрагивают многие «слабые места» архитектуры процессоров P-III/P-M. Однако они касаются как раз тех подсистем процессора, которые представлялись «критическими» для будущей высокопроизводительной архитектуры и относительно которых делались различные предположения. В настоящей статье новый процессор будет рассматриваться в основном с микроархитектурной точки зрения — то есть, с точки зрения функционирования внутренних блоков процессора и эффективности исполнения программ пользователей. А такие его характеристики и новшества, как управление энергопотреблением (Power management) и технологии виртуализации (Virtualization Technology, VT), будут лишь кратко упомянуты. Что изменилось? Основные отличия нового процессора Основные микроархитектурные изменения в новом процессоре объединены под названием «Digital Media Boost» (что-то вроде «Мультимедийного разгона»). Изменения эти довольно разрозненные и практически не затрагивают функциональных устройств. В их число входит: - реализация слияния микроопераций (micro-ops fusion) для инструкций SSE всех типов (SSE/SSE2/SSE3);
- обработка инструкций SSE во всех трёх каналах декодера;
- добавление набора инструкций SSE3;
- ускорение исполнения некоторых инструкций SSE2, а также целочисленного деления;
- улучшение механизма предвыборки из памяти.
Наиболее радикальные изменения коснулись декодера инструкций в части обработки инструкций SSE. Как отмечалось в предыдущей статье, в процессоре P-M появился механизм слияния микроопераций (micro-ops fusion) при декодировании x86-инструкций, суть которого заключается в том, что в ряде случаев вместо двух микроопераций (МОПов) порождается одна (называемая иногда «макрооперацией»), содержащая два элементарных действия. В основном это относится к инструкциям загрузки из памяти с последующим исполнением (Load-Op), когда одна макрооперация замещает МОПы чтения из памяти и выполнения операции. Такая макрооперация расщепляется на два отдельных действия на более поздней стадии прохождения, непосредственно перед запуском на исполнение. Данный механизм похож на аналогичный в процессорах AMD K7/K8, где любой МОП может содержать в себе загрузку из памяти, либо выгрузку в память. Однако в процессоре P-M механизм слияния микроопераций не был реализован для инструкций SSE с загрузкой и исполнением (Load-Op). Такие инструкции по-прежнему расщеплялись на отдельные МОПы загрузки и исполнения. Помимо увеличения числа МОПов, это приводило к снижению пропускной способности декодера, поскольку такие инструкции могли обрабатываться только в первом, «сложном» канале декодера (остальные два «простых» канала способны порождать лишь по одной микрооперации). Кроме того, и обычные инструкции SSE, не содержащие в себе загрузку из памяти, могли обрабатываться только в первом канале декодера (начиная с процессора P-III). Причём это ограничение относилось не только к упакованным инструкциям SSE, для которых порождается два МОПа 64-битовых операций, но и к скалярным операциям SSE тоже. Вероятно, данное ограничение было связано с трудностями радикальной переделки декодера для поддержки операций SSE в процессоре P-III (кстати, одним из руководителей работы по созданию расширений SSE был наш соотечественник В. Пентковский). В процессоре P-M2 (Yonah) декодер инструкций был полностью переделан — и теперь он поддерживает слияние микроопераций для инструкций «Load-Op» всех типов (включая SSE), а также обработку инструкций SSE (как скалярных, так и упакованных) во всех трёх каналах декодера. Таким образом, предельная пропускная способность декодера увеличилась в три раза — с одной инструкции SSE за такт до трёх таких инструкций. На этом рисунке показан пример обработки самого сложного варианта инструкции SSE — упакованной (128-битной) инструкции с загрузкой из памяти и исполнением (Load-Op). В процессоре P-M (Dothan) такая инструкция расщеплялась на 4 МОПа. Согласно рисунку, в процессоре P-M2 (Yonah) образуется лишь один, «склеенный» МОП, содержащий 128-битную загрузку регистра XMM из памяти и 128-битную упакованную операцию. На основании рисунка трудно судить, действительно ли на выходе из декодера будет получена только одна комбинированная «128-битная» макрооперация, которая будет расщеплена на 4 отдельных действия на более поздней стадии, или всё же породятся две «64-битные» макрооперации (каждая с последующим расщеплением на 2 действия). Но в любом случае можно считать, что декодер нового процессора работает по схеме «4-2-2», так как каждый канал декодера теперь может обрабатывать упакованные 128-битные инструкции SSE, которые в функциональных устройствах рассматриваются как две 64-битные. Это усовершенствование роднит P-M2 (Yonah) с процессором AMD K8. Помимо изменений в декодере, в новом процессоре появился набор инструкций SSE3. Также были ускорены некоторые инструкции распаковки и упаковки из набора SSE2. К сожалению, из доступных документов ничего не известно о темпе выполнения операций 64-битного умножения с плавающей точкой SSE2 (скалярной «mulsd» и упакованной «mulpd»). В процессоре P-M такие операции выполняются в половинном темпе, выдавая один результат в 2 такта для скалярных операций, и один результат в 4 такта — для упакованных. Это вдвое ниже темпа выполнения операций 64-битного сложения SSE2, а также операций 32-битного умножения и сложения SSE. Выполнение 64-битного умножения в полном темпе является совершенно необходимым для процессора, претендующего на конкурентоспособность в приложениях, использующих плавающую арифметику. Судя по тому, что в рекламных материалах компании нет упоминания о таком усовершенствовании, можно считать, что эти операции выполняются по-прежнему медленно. С учётом этого предположения ситуация с производительностью нового процессора в плавающей арифметике напоминает ситуацию с процессором P-III на момент его появления: скорость 64-битной арифметики осталась невысокой из-за половинного темпа умножения (для P-III — в режиме x87, для P-M и P-M2 — x87 и SSE2), а весь упор сделан на повышение эффективности 32-битной арифметики (для P-III — через SSE, для P-M2 — также и через улучшение декодера, который перестал быть узким местом). Правда, следует отметить, что процессор P-III был многоцелевым, ориентированным на все сферы применения, а P-M2 (Yonah) — это процессор для мобильных применений. На этом рисунке показан пример улучшения операции целочисленного деления для случаев, когда число значащих цифр в делимом и делителе ограничено 16, либо 24 двоичными разрядами. Особенно интересен самый распространённый случай деления 24-разрядного числа на 16-разрядное — время выполнения такой операции становится вполне приемлемым и составляет всего 4 такта. Перейдём теперь от микроархитектурных изменений к функциональным, связанным с наличием двух процессорных ядер на одном кристалле. Главным элементом нового процессора, отличающим его как от одноядерного процессора P-M, так и от других двухъядерных процессоров архитектуры x86 (Intel Pentium D/XE и AMD Athlon 64 X2/FX-60), является общий кэш второго уровня. Реализация общего L2-кэша обеспечивает более высокий уровень интеграции процессорных ядер. Если в системах с раздельными кэшами обмен данными между ядрами осуществляется через коммуникационный интерфейс (шину, либо коммутатор), объединяющий эти ядра за пределами L2-кэшей, то в системе с общим кэшем такие данные доступны обоим процессорным ядрам непосредственно из него. Такая организация позволяет значительно уменьшить время доступа к «чужим» данным, а также снизить трафик шины (коммутатора). Однако этим преимущества общего кэша не исчерпываются. Процесс, исполняемый в одном CPU, может требовать больше места в L2-кэше для размещения своих данных, чем процесс в другом CPU, и общий кэш с адаптивной организацией позволяет обеспечить большую гибкость в их оптимальном размещении. Потребность процесса в пространстве кэша определяется свойством алгоритма, называемом локальностью. Если объём данных, которые требуются процессу в течение определённого периода времени (размер рабочего множества), превышает размер подмножества L2-кэша, выделенного ему в данный момент, то процесс стремится «захватить» больше места в кэше и «отнять» его у процесса с меньшими потребностями. Рассмотрим эффективность использования общего L2-кэша в сравнении с раздельными кэшами такого же суммарного размера для различных сочетаний процессов. - Исполняются два процесса с одинаковой локальностью — в этом случае каждому процессу достанется по половине кэша.
- Исполняется только один процесс — L2-кэш будет доступен этому процессу целиком.
- Исполняются два процесса с общими (пересекающимися) данными — в этом случае экономится место в кэше, так как исключается дублирование данных.
- Исполняются два процесса с различающейся локальностью — процессу с большими потребностями (худшей локальностью) достанется больше места в кэше.
Таким образом, в первом случае эффективность использования общего и раздельных кэшей не различается, а в остальных — общий кэш используется более эффективно. Лишь в ситуации, когда локальность одного процесса намного хуже, чем другого, первый процесс может вытеснить данные второго процесса из кэша практически полностью и тем самым существенно замедлить его выполнение. Подобные ситуации могут встречаться и в других системах с разделяемыми ресурсами. Например, в любом двухъядерном процессоре один из процессов может требовать намного больше обращений к оперативной памяти, чем другой, и также замедлять его исполнение. В целом, ситуации с сильно несимметричными процессами требуют дополнительного анализа с учётом различных критериев «справедливого» выделения ресурсов. Согласно первым результатам измерений процессора Yonah, время доступа к общему L2-кэшу увеличилось до 14 тактов — в сравнении с 10 тактами в одноядерном процессоре Dothan. Эти дополнительные такты являются платой за реализацию общего кэша, обеспечение доступа к нему из двух процессорных ядер и затрат на арбитраж. Увеличение времени доступа способно, разумеется, снизить производительность процессора в некоторых применениях (при прочих равных условиях). Однако опыт эксплуатации и измерений различных процессоров показывает, что влияние времени доступа к L2-кэшу обычно не очень велико. Например, в процессорах AMD K7 и K8 при большой нагрузке на L2-кэш эффективное время доступа достигает 20 и 16 тактов, соответственно. Такое увеличение времени доступа связано с эксклюзивной организацией кэша — но оно не сильно влияет на производительность. Полученные результаты измерений процессора Yonah потребуют подтверждения на других методиках. Также будет необходимо определить пропускную способность L2-кэша. Обеспечение общего доступа для двух процессорных ядер в идеале требует удвоения пропускной способности. Однако темп доступа к кэшу в 32 байта за такт, заявленный для одноядерных процессоров P-III и P-M, представляется несколько избыточным и обычно не подтверждается прямыми измерениями. Возможно, предельная пропускная способность кэша нового процессора не изменилась и по-прежнему составляет 32 байта за такт, а требуемые характеристики одновременного доступа двух CPU обеспечиваются более рациональной организацией и конвейеризацией обращений к кэшу. Таким образом, благодаря общему L2-кэшу, Yonah является первым высокоинтегрированным двухъядерным процессором архитектуры x86. В связи с начинающимся внедрением двухъядерных процессоров на массовый рынок требования к таким процессорам, а также к методам распараллеливания прикладных задач, должны повышаться. Появление процессоров с общим кэшем второго уровня должно привести к появлению новых методов программирования, обеспечивающих более высокую интеграцию выполняемых процессов и общее повышение скорости их исполнения. Что не изменилось? Оставшиеся в наследство слабые места К сожалению, в последнее время компания Intel не публикует подробных данных о микроархитектуре своих новых процессоров. Поэтому их характеристики приходится определять из кратких рекламных материалов и анонсов (где перечисляются лишь основные отличия от предыдущих моделей), а также средствами экспериментального исследования. Для мобильных процессоров проведение тестовых замеров также затрудняется тем обстоятельством, что такие процессоры не используются для построения серверов и не могут быть протестированы дистанционно — и в то же время они недостаточно распространены, чтобы исследователь мог найти процессор самостоятельно. Дополнительной причиной «сокрытия» информации о процессорах Pentium M компанией Intel является, по-видимому, желание представить эти процессоры как самостоятельное поколение, отличающееся от старого семейства P6 (PPro, P-II, P-III) — поскольку признание принадлежности процессоров P-M к семейству P6 могло бы выглядеть как шаг назад в сравнении с основной десктопной архитектурой NetBurst (Pentium 4). Действительно, процессор P-M сохраняет многие черты семейства P6, в том числе его слабые места. В новом процессоре P-M2 (Yonah) устранены очень важные ограничения архитектуры, связанные с декодером (они описываются в предыдущем разделе). Однако другие ограничения, унаследованные из процессоров P-III/P-M, остаются — и в первых результатах замеров это косвенно подтверждается тем фактом, что по производительности в однопоточных приложениях Yonah мало отличается от предшественника (Dothan), в одних случаях немного превосходя его, а в некоторых других — слегка уступая. Главным недостатком процессоров P-M и P-M2 следует считать слабость блока плавающей арифметики. Этот блок является 80-битным при выполнении операций x87, и 64-битным — для операций SSE. Последнее означает, что 128-битные упакованные операции SSE (4 по 32 бита) и SSE2 (2 по 64 бита) расщепляются на две 64-битные и исполняются последовательно, с вдвое меньшим темпом. Если бы все 64-битные операции могли выполняться в полном темпе, скорость работы FPU можно было бы считать приемлемой для процессоров такого класса. К сожалению, это требование не соблюдается для устройства умножения. Оно способно работать в полном темпе (выдавая один результат за такт) только в 32-битном скалярном режиме SSE. Также в оптимальном для этой архитектуры темпе устройство умножения работает в упакованном режиме SSE (выдавая четыре 32-битных результата каждые 2 такта). В режиме x87 и в 64-битном скалярном режиме SSE2 умножение выполняется в половинном темпе, а в упакованном режиме SSE2 — соответственно, ещё вдвое медленнее. Таким образом, несмотря на способность декодера процессора P-M2 порождать достаточное количество микроопераций SSE2 в каждом такте, и, несмотря на возможность запуска МОПов на исполнение в раздельные устройства умножения и сложения через два независимых порта, предельная скорость выполнения 64-битных операций с плавающей точкой снижается вдвое, с двух операций за такт до одной (при равном количестве операций умножения и сложения). Другой недостаток микроархитектуры процессоров P-III и P-M проявляется в невозможности достижения 100-процентной скорости выполнения даже при оптимальном потактовом планировании машинных инструкций программистом или транслятором. Это связано, вероятно, со схемой организации очереди (буфера) микроопераций, из которой МОПы выбираются для исполнения в функциональных устройствах внеочередным образом, по мере готовности операндов (такой буфер обычно называют «Reservation station»). В других современных процессорах (Intel Pentium 4, AMD K8, IBM PPC970) имеется несколько таких очередей (буферов), по одной очереди на группу близких функциональных устройств. Благодаря этому в каждом такте происходит поиск и выборка для исполнения только одного МОПа из каждой очереди (буфера). В процессоре P-III имеется единый буфер на 20 элементов, и в каждом такте из него извлекается до пяти МОПов. По-видимому, это действие является слишком сложным и не всегда выполняется оптимально, в необходимом темпе. Результаты замеров процессоров P-M (Banias, Dothan) показывают, что у них в этой части изменений не произошло. Предполагается, что организация этого буфера в процессоре P-M2 (Yonah) также не изменилась. Можно отметить также ряд количественных ограничений, связанных с внеочередным исполнением операций (Out-of-Order execution) — в частности, относительно малую длину упомянутой выше очереди (буфера), равную 20, и небольшой размер «окна» для выполняемых операций («Reorder Buffer»), равный 40. Правда, есть предположения, что в процессоре P-M оба этих буфера несколько увеличены в сравнении с P-III, однако ни документация, ни общедоступные рекламные материалы, на это явно не указывают. И, наконец, очень важным архитектурным недостатком процессора Yonah (как и его предшественников) является отсутствие поддержки 64-битного режима EM64T (x86-64). Введение такого режима потребовало бы значительной переделки функциональных устройств целочисленной и адресной арифметики, а также увеличения разрядности регистров и ширины внутрипроцессорных шин. Разумеется, в рамках эволюционного развития семейства P6+ такая переделка не могла быть проведена. Поэтому Yonah может в этой части рассматриваться лишь как временный, переходный по отношению к новому семейству универсальных процессоров Merom/Conroe/Woodcrest, в котором, помимо режима EM64T, будет внедрён целый комплекс мер по повышению производительности. Итоги эволюции семейства P6 Итак, рассмотрим напоследок эволюцию процессоров семейства P6 и подведём её итоги. Для этого выделим пять основных представителей семейства, демонстрирующих развитие процессорной микроархитектуры: PPro, P-II, P-III, P-M, P-M2. Pentium Pro Первый суперскалярный процессор архитектуры x86 с внеочередным исполнением операций (Out-of-Order execution). Имеет незначительные архитектурные расширения в сравнении с процессором предыдущего поколения Pentium: добавлены инструкции условной пересылки и новые инструкции сравнения. Исполнен в виде сборки с раздельными кристаллами процессора и L2-кэша. Использовался в основном для серверных применений, выпускался с кэшами различного размера вплоть до 1 МБ. Pentium II Добавлен набор инструкций MMX. Увеличены кэши первого уровня, улучшено исполнение 16-разрядных кодов. Исполнен в виде дочерней платы с отдельным кристаллом L2-кэша, работающего на половинной частоте. Выпускался также в следующих вариантах: OverDrive, совместимый с разъёмом процессора Pentium Pro; Celeron без L2-кэша; Celeron и Dixon с интегрированным L2-кэшем уменьшенного размера; Xeon с полночастотным внешним кэшем увеличенного размера. Pentium III Добавлен набор инструкций SSE и инструкции предвыборки из памяти. Первоначально исполнен в виде дочерней платы с отдельным кэшем, в последующих вариантах имеет встроенный полночастотный L2-кэш с 256-разрядной шиной. Выпускался также в следующих вариантах: Celeron с L2-кэшем уменьшенного размера; Xeon с полночастотным внешним кэшем увеличенного размера. Pentium M Добавлен набор инструкций SSE2. Реализован механизм слияния микроопераций (micro-ops fusion), увеличены кэши первого уровня, ускорена работа с аппаратным стеком, существенно улучшен механизм предсказания переходов. В связи с ориентацией на мобильные применения внедрены радикальные технологии энергосбережения. Введена новая процессорная шина, заимствованная у процессора Pentium 4. Произведён ряд микроархитектурных усовершенствований, операции плавающего умножения и сложения разнесены на два отдельных порта запуска. Во второй модели процессора P-M (Dothan) устранены задержки из-за «частичной записи в регистр» («Partial register stall»), удвоен темп выполнения инструкции сложения MMX. Pentium M2 (Core Duo) Добавлен набор инструкций SSE3. Существенно улучшен декодер с поддержкой механизма слияния микроопераций для инструкций SSE и обработкой упакованных инструкций SSE во всех каналах декодера. Ускорено выполнение некоторых инструкций, усовершенствован механизм предвыборки из памяти. Содержит на кристалле два процессорных ядра и общий L2-кэш. Поддерживает технологию виртуализации VT и усовершенствованные технологии энергосбережения. Развитие микропроцессоров семейства P6 сопровождалось совершенствованием электронных технологий и уменьшением технологических норм с одновременным увеличением размера L2-кэша. За счёт усовершенствования микроархитектуры, устранения узких мест, увеличения кэшей и повышения тактовой частоты производительность процессоров семейства выросла и по некоторым показателям приблизилась к производительности конкурирующих продуктов (AMD Athlon 64 и Intel Pentium 4). Ниже приведена сводная таблица основных процессоров семейства P6. | процессор | кодовое обозначение | нормы (мкм) | кэши L1 I/D | кэш L2 | исполнение | частота, ГГц | архитектурные расширения | микроархитектурные усовершенствования | | P Pro | P6 | 0.5 | 8/8 | 256 | сборка | 0.20 | +условн.опер | новая микроархитектура | | P-II | Deschutes | 0.25 | 16/16 | 512 | внешний L2 | 0.45 | +MMX | внешний L2, улучшенная 16бит | | P-III | Tualatin | 0.13 | 16/16 | 512 | | 1.40 | +SSE | быстрый L2, предвыборка | | P-M | Dothan | 0.09 | 32/32 | 2048 | | 2.26 | +SSE2 | µop fusion, улучшен предсказ. переходов | | P-M2 | Yonah | 0.065 | 32/32 | 2048 | 2 ядра | 2.33 | +SSE3 | SSE µop fusion, общий кэш L2 | Ещё один шаг по пути к Conroe Выше мы пришли к выводу, что процессор Yonah можно рассматривать как переходную модель, в которой обкатываются различные новшества перед внедрением их в процессоры следующего поколения Merom/Conroe. Посмотрим теперь, что уже реализовано из того, что должно быть сделано в будущем процессоре, и что ещё осталось сделать. Разумеется, речь идёт лишь о тех подсистемах, которые могли бы быть улучшены в процессорах старой архитектуры P6 и не потребовали бы радикально переработки структуры процессора. В свою очередь, такие принципиальные вещи, как увеличение числа декодируемых и обрабатываемых инструкций с трёх до четырёх, а также реализация поддержки 64-битного режима EM64T (x86-64), требуют значительной переделки многих подсистем и устройств, поэтому они не могли появиться в процессе эволюционного развития. В предыдущей статье о процессорах новой архитектуры мы рассмотрели различные подсистемы процессора с точки зрения необходимости их усовершенствования. Основной упор был сделан на необходимость переделки декодера с целью поддержки всех режимов слияния микроопераций и обеспечение необходимого темпа генерации микроопераций SSE. По результатам рассмотрения процессора Yonah можно заключить, что эта задача с успехом решена. Более того, она решена наиболее эффективным образом, с преобразованием самой сложной SSE-инструкции — упакованной (128-битной) типа Load-OP — всего в одну макрооперацию. Также реализован другой принципиальный элемент новой архитектуры — общий (для двух процессорных ядер) кэш второго уровня. Кроме того, улучшено управление энергопотреблением и введена поддержка технологии виртуализации VT. Что ещё должно быть изменено в процессорах новой архитектуры, чтобы обеспечить им необходимый уровень производительности и конкурентоспособности? Очевидно, это улучшение блока плавающей арифметики. Как минимум — реализация полночастотного выполнения 64-битного умножения. Исходя из того, что в процессоре Pentium 4, работающем на существенно более высокой тактовой частоте, подобное улучшение было сделано, не вызывает сомнения, что оно может быть легко сделано и в новой архитектуре. Однако в таком случае производительность на задачах с плавающей арифметикой будет уступать производительности процессоров старого семейства (Pentium 4). Поэтому можно предположить (и это подтверждается некоторыми источниками), что в процессорах Merom/Conroe будет реализована «128-битная» полночастотная плавающая арифметика SSE для всех типов операндов. В рамках этого предположения, увеличится ширина устройств умножения и сложения при сохранении их «полночастотности». То есть каждое из них будет способно выдавать один 128-битный результат за такт — точнее, два 64-битных (SSE2), либо четыре 32-битных (SSE) в упакованных операциях. Правда, в скалярном режиме будет по-прежнему исполняться одна операция каждого типа (умножения и сложения) за один такт. Таким образом, в скалярном режиме новый процессор всего лишь сравняется (по формальному темпу работы FPU) с процессором AMD K8 — но зато в упакованном превзойдёт его вдвое, с достижением пикового быстродействия, равного учетверённой тактовой частоте на 64-битной арифметике. Предполагаемое удвоение предельной производительности должно быть поддержано декодером инструкций — и, как мы уже видели выше, декодер способен обеспечить выдачу необходимого количества 128-битных МОПов (для достижения предельного темпа FPU нужно 2 таких МОПа в каждом такте при суммарной «ширине» трактов процессора, равной четырём). Также удвоенная производительность потребует увеличения темпа чтения данных из L1-кэша с обеспечением (как минимум) одного 16-байтного чтения за такт. Имеется информация о том, что в новых процессорах будет реализован дополнительный набор инструкций плавающей арифметики с предполагаемым названием SSE4. Как и предыдущее расширение SSE3, новое расширение, по всей видимости, будет представлять собой не самостоятельный набор инструкций (как SSE или SSE2), а некое добавление, позволяющее расшить определённые узкие места и обеспечить дополнительную гибкость в использовании существующих наборов. Например, представляют интерес средства улучшения работы с 64-битными «половинками» регистров XMM для их раздельной загрузки/выгрузки, перестановки и прочих преобразований, которые позволили бы использовать упакованные инструкции SSE2 для обработки групп массивов, не выровненных друг относительно друга с 16-байтной кратностью. Последнее ограничение является серьёзным препятствием для эффективного использования упакованных инструкций в вычислениях. Наконец, в процессорах новой архитектуры должны быть проведены серьёзные усовершенствования механизма внеочередного исполнения (Out-of-Order execution) вплоть до его полной переработки с учётом опыта создания процессора Pentium 4 и конкурирующих продуктов. В анонсе архитектуры говорится об увеличении размеров буферов. Это может предполагать также изменение структуры таких буферов. Например, представляется вероятным переход от системы с единой очередью (буфером) микроопераций к варианту с несколькими очередями, приписанными к соответствующим функциональным устройствам. Это позволило бы обеспечить предельный темп запуска операций на исполнения без усложнения структуры и удлинения такта процессора. С учётом увеличения «ширины» трактов процессора, должно быть увеличено число функциональных устройств некоторых типов (в первую очередь целой арифметики и логики), а также изменена структура портов запуска операций. И, напоследок, следует напомнить, что новые процессоры будут поддерживать режим EM64T (x86-64) — то есть содержать полный набор 64-битных устройств целой и адресной арифметики. Итак, можно заключить, что микроархитектура будущих процессоров Merom/Conroe/Woodcrest будет основываться на тех же фундаментальных принципах, что и архитектура семейства P6/P6+ — но при этом она будет переработана заново, с учётом многолетнего опыта развития конкурирующих продуктов, новых электронных технологий и изменившихся потребностей пользователей. Можно с уверенностью утверждать, что процессоры новой архитектуры будут отличаться от своих предшественников P-M/P-M2 сильнее, чем 64-битные процессоры AMD K8 отличаются от своих 32-битных предшественников K7. Заключение В заключение приведём характеристики некоторых моделей процессора Yonah. Напомним, что процессор получил новое название — «Core Duo» для двухъядерного варианта, и «Core Solo» — для одноядерного. Помимо этого, сменилась система обозначений моделей процессоров. Она теперь состоит из буквы, указывающей на предельный уровень энергопотребления (U — до 15 Вт, L — до 25 Вт, T — до 50 Вт, E — свыше 50 Вт), и четырёхзначного кода, начинающегося с цифры «1» или «2», которая означает число процессорных ядер. В настоящий момент самыми старшими представителями в каждой линейке являются процессоры с нормальным и сниженным потреблением T2600 (2.16 ГГц), T1300 (1.66 ГГц) и L2400 (1.66 ГГц) с шиной 667 МГц, а также модели со сверхнизким потреблением U2500 (1.06 ГГц) и U1400 (1.20 ГГц) с шиной 533 МГц. Во втором квартале будут выпущены более производительные модели T2700 (2.33 ГГц), T1400 (1.83 ГГц) и L2500 (1.83 ГГц). Про выпуск процессоров с индексом «E» пока ничего не известно. Также через некоторое время выйдет разновидность процессора под кодовым названием Sossaman для применения в серверах со сниженным потреблением и тепловыделением. Процессор поддерживает работу в двухсокетных конфигурациях (4 процессорных ядра на систему). В новом процессоре реализованы инструкции «monitor» и «mwait» для синхронизации процессов. Первые результаты замеров процессора Core Duo демонстрируют неплохой уровень производительности, в однопоточных приложениях сопоставимый с уровнем процессора P-M (Dothan), а в многопоточных — заметно превышающий его при близких уровнях энергопотребления и приближающийся к уровню десктопных процессоров. Например, показатели SPECint_rate_base2000 и SPECfp_rate_base2000, характеризующие скорость исполнения потоков задач в многопроцессорной (многоядерной) системе, для старшей модели T2600 (2.16 ГГц) составляют 34.9 и 27.4, соответственно. Для сравнения, у процессора Pentium XE 955 (3.46 ГГц) с кэшем 2 x 2 МБ они равны 41.1 и 36.6. Два других двухъядерных процессора с кэшами 2 x 1 Мбайт показывают меньшие результаты: Pentium XE 840 (3.2 ГГц) — 33.5 и 31.9, AMD Opteron 280 (2.4 ГГц) — 35.9 и 30.8 (в 32-битном режиме). С учётом того, что Yonah – это переходная модель по пути к новой процессорной архитектуре, можно заключить, что получился крепко сбитый мобильный процессор, который не хватает звёзд с неба, но вполне оправдывает возложенные на него ожидания. Выходит, что не зря создание таких процессоров поручили коллективу разработчиков из жаркой страны (Израиля). Будем надеяться, что и следующее семейство Merom/Conroe, которое создаётся той же командой, также оправдает наши ожидания. Список литературы - О. Бессонов. Новое вино в старые мехи. Conroe: внук процессора Pentium III, племянник архитектуры NetBurst? iXBT.com, 2005.
- M. Eden. Innovate & Invigorate. Intel Developer Forum, IDF Spring 2005.
- M. Eden. Taking Mobile Mainstream. Intel Centrino Mobile Technology. Intel Developer Forum, IDF Fall 2005.
- S.L. Smith, D. Perlmutter. Intel Next Generation Multi-core Platforms. Intel Developer Forum, IDF Fall 2005.
- IA-32 Intel Architecture Optimization Reference Manual. Intel, 2005.
- S. Gochman et al. The Intel Pentium M Processor: Microarchitecture and Performance. Intel Technology Journal, V.7, Issue 2, 2003.
- J. Keshava, V. Pentkovski. Pentium III Processor Implementation Tradeoffs. Intel Technology Journal, V.3, Q2, 1999.
- A. Fog. How to optimize for the Pentium family of microprocessors. 2004.
- H.H. Sean Lee. P6 & NetBurst Microarchitecture. School of ECE, Georgia Institute of Technology, 2003.
- S. Wasson. IDF Fall 2005 wrap. Intel aims for more performance per watt. The Tech Report, 2005.
- Samuel D. IDF Fall 2005 : Visite guidee. X86-secret, 2005.
- Anand Lal Shimpi. Intel's 90nm Pentium M 755: Dothan Investigated.AnandTech, 2004.
- Anand Lal Shimpi. Intel Yonah Performance Preview - Part I: The Exclusive First Look at Yonah. AnandTech, 2005.
Олег Бессонов 18.01.2006.
|