Двухъядерные процессоры Intel: выбираем лучший. Доля первая
Способы увеличения производительности процессора
Гонка тактовых частот, продолжавшаяся на протяжении многих лет, похоже, бесповоротно ушла в прошлое. За эти годы в умах пользователей укоренилось мнение, что как раз тактовая частота процессора является показателем его производительности, при всем при том планы компании Intel по наращиванию тактовых частот так и остались планами, и, скорее всего, заприметить процессор с тактовой частотой 10 ГГц нам предстоит сильно не скоро. По всей видимости, масштабирование процессоров по тактовой частоте оказалось не до того элементарный задачей, как предполагалось, и в силу того что при сегодняшних технологических нормах производства процессоров и малоэффективных воздушных системах охлаждения достигнуть линейного масштабирования тактовой частоты процессоров не удаётся. Осознав, что повышение прежними темпами тактовых частот процессоров не представляется невозможным, нужно было разыскивать принципиально иные технологии увеличения производительности процессоров. В то же время с этим необходимо было (по маркетинговым соображениям) уговорить пользователей в том, что производительность процессора определяется не только и не столь его тактовой частотой. И первым шагом на пути к такому "перевоспитанию" пользователей стал отказ компании Intel от указания в названии процессора его тактовой частоты - на смену процессорам Intel Pentium 4 3,0 ГГц пришли загадочные обозначения словно бы Intel Pentium 4 560 и т.п.
Давайте разберемся, от чего же в реальности зависит производительность процессора. Общепринято отождествлять производительность процессора со скоростью выполнения им инструкций программного кода. Производительность (Performance) - это касательство общего числа выполненных инструкций программного кода ко времени их выполнения:
|
|
В этом смысле производительность процессора отождествляется с количеством инструкций, выполняемых за секунду (Instructions rate). А потому как одной из важных характеристик процессора является его тактовая частота, то желательно аккурат с ней связать производительность процессора. Это разрешено сделать, если численность инструкций, выполняемых за единицу времени, анализировать как произведение количества инструкций, выполняемых за единственный такт процессора (Instruction Per Clock, IPC), на число тактов процессора в единицу времени (тактовая частота процессора):
|
|
Количество тактов процессора в единицу времени - это и есть его тактовая частота (Frequency). Таким образом, производительность процессора зависит в равной степени и от его тактовой частоты, и от количества инструкций, выполняемых за такт (IPC):
|
|
Последняя формула, по сути, определяет два разных подхода к увеличению производительности процессора, начальный из которых связан с увеличением тактовой частоты процессора, а второй - с увеличением количества инструкций программного кода, выполняемых за один такт процессора. Совершенно очевидно, что увеличение тактовой частоты не может быть бесконечным и определяется технологией изготовления процессора. При этом подъем производительности не является прямо пропорциональным росту тактовой частоты, то есть наблюдается тенденция насыщаемости, когда дальнейшее увеличение тактовой частоты становится нерентабельным. Количество инструкций, выполняемых за момент одного такта, зависит от микроархитектуры процессора: от количества исполняемых блоков, от длины конвейера и эффективности его заполнения, от блока предвыборки и т.д., а помимо того, естественно, от оптимизации программного кода к данной микроархитектуре процессора. Итак, в общих чертах мы выяснили, зачем целиком корректным является соотнесение производительности процессоров на основании их тактовой частоты в пределах одной и той же микроархитектуры (при одинаковом значении IPC процессоров) и отчего некорректно сопоставление производительности процессоров с различной микроархитектурой только на основе тактовой частоты. К примеру, основываясь на тактовой частоте, некорректно сравнивать производительность процессоров с разным размером L2-кэша или производительность процессоров, поддерживающих и не поддерживающих технологию Hyper-Threading.
Другим подходом к увеличению производительности процессорной подсистемы, типичным для серверных решений, является употребление многопроцессорных SMP-конфигураций. В этом случае достигается параллельное (Thread Level Parallelism, TLP) и в какой-то мере независимое вывод нескольких разных задач или нескольких потоков одной задачи на нескольких процессорах, что, естественно, сопровождается приростом общей производительности вычислительной подсистемы сервера. Впрочем, ждать адекватного количеству процессоров роста производительности и в данном случае не приходится - многое зависит от типа решаемых задач, от реализации в серверной операционной системе поддержки SMP. Вечно разрешается выискать такое приложение, которое в двухпроцессорной конфигурации будет являть результаты ниже, чем в однопроцессорной, и вследствие того что каждый "талантливый" программист полностью сможет слить на нет все преимущества многопроцессорной архитектуры.
Между тем, кроме перечисленных способов увеличения общей производительности процессорной подсистемы, существуют технологии, позволяющие реализовать параллельное выполнение нескольких задач на одном процессоре. Такая многозадачность реализована в том или ином виде во всех современных процессорах. Отход от последовательного исполнения команд и применение нескольких исполняющих блоков в одном процессоре позволяют вместе с тем обрабатывать немного процессорных микрокоманд, то есть организовывать параллелизм на уровне инструкций (Instruction Level Parallelism, ILP), что, разумеется, увеличивает общую производительность.
Технология Hyper-Threading - основополагающий шаг к многоядерности
Анонсированная в 2002 году компанией Intel методика Hyper-Threading - образец многопоточной обработки команд. Данная технология является чем-то средним между многопоточной обработкой, реализованной в мультипроцессорных системах, и параллелизмом на уровне инструкций, реализованном в однопроцессорных системах. По сути дела технология Hyper-Threading позволяет сформировать два логических процессора в одном физическом. Таким образом, с точки зрения операционной системы и запущенного приложения в системе существует два процессора, что даёт вероятность распределять загрузку задач между ними верно так же, как при SMP-мультипроцессорной конфигурации.
Посредством реализованного в технологии Hyper-Threading принципа параллельности не возбраняется обрабатывать инструкции в параллельном (а не в последовательном) режиме, то есть для обработки все инструкции разделяются на два параллельных потока. Это позволяет одновременно обрабатывать два различных приложения или два различных потока одного приложения и тем самым усилить IPC процессора, что сказывается на росте его производительности.
В конструктивном плане процессор с поддержкой технологии Hyper-Threading состоит из двух логических процессоров, всякий из которых имеет свои регистры и контроллер прерываний (Architecture State, AS), а значит, две параллельно исполняемые задачи работают со своими собственными независимыми регистрами и прерываниями, но при этом используют одни и те же ресурсы процессора для выполнения своих задач. Потом активации произвольный из логических процессоров может независимо и автономно от другого процессора осуществлять свою задачу, обрабатывать прерывания либо блокироваться. Таким образом, от реальной двухпроцессорной конфигурации новая технология отличается только тем, что оба логических процессора используют одни и те же исполняющие ресурсы, одну и ту же разделяемую между двумя потоками кэш-память и одну и ту же системную шину. Использование двух логических процессоров позволяет усилить ход параллелизма на уровне потока, реализованный в современных операционных системах и высокоэффективных приложениях. Команды от обоих исполняемых параллельно потоков одновременно посылаются для обработки ядру процессора. Используя технологию out-of-order (исполнение командных инструкций не в порядке их поступления), ядро процессора также способно параллельно обрабатывать оба потока за счёт использования нескольких исполнительных модулей.
Идея технологии Hyper-Threading узко связана с микроархитектурой NetBurst процессора Pentium 4 и является в каком-то смысле её логическим продолжением. Микроархитектура Intel NetBurst позволяет принять предельный выигрыш в производительности при выполнении одиночного потока инструкций, то есть при выполнении одной задачи. И все-таки более того в случае специальной оптимизации программы не все исполнительные модули процессора оказываются задействованными на протяжении каждого тактового цикла. В среднем при выполнении кода, типичного для набора команд IA-32, реально употребляется только 35% исполнительных ресурсов процессора, а 65% исполнительных ресурсов процессора простаивают, что означает неэффективное использование возможностей процессора. Было бы вполне логично реализовать работу процессора таким образом, чтобы в каждом тактовом цикле максимально применять его возможности. Именно эту идею и реализует технология Hyper-Threading, подключая незадействованные ресурсы процессора к выполнению параллельной задачи.
Поясним всё вышесказанное на примере. Представьте себе гипотетический процессор, в котором имеется четыре исполнительных блока: два блока для работы с целыми числами (арифметико-логическое устройство, ALU), блок для работы с числами с плавающей точкой (FPU) и блок для записи и чтения данных из памяти (Store/Load, S/L). Пусть, кроме того, каждая операция осуществляется за один такт процессора. Дальше предположим, что выполняется программа, состоящая из трёх инструкций: первые две - арифметические действия с целыми числами, а последняя - сохранение результата. В этом случае вся программа будет выполнена за два такта процессора: в первом такте задействуются два блока ALU процессора (красный квадрат на рис. 1), во втором - блок записи и чтения данных из памяти S/L.
|
|
|
Реализация параллелизма на уровне инструкций (Instruction Level Parallelism, ILP) |
В современных приложениях в всякий миг времени, как правило, выполняется не одна, а несколько задач или несколько потоков (threads) одной задачи, называемых ещё нитями. Давайте посмотрим, как будет новости себя свой гипотетический процессор при выполнении двух разных потоков задач (рис. 2). Красные квадраты соответствуют использованию исполнительных блоков процессора одного потока, а синие квадраты - другого. Если бы оба потока исполнялись изолированно, то для выполнения первого и второго потока потребовалось бы по пять тактов процессора. При одновременном исполнении обоих потоков процессор будет всю дорогу переключаться между обоими потоками, следовательно, за один такт процессора выполняются только инструкции какого-либо одного из потоков. Для исполнения обоих потоков всего понадобится десять процессорных тактов.
|
|
|
Выполнение двух потоков на процессоре без реализации и с реализацией технологии Hyper-Threading |
Теперь давайте подумаем над тем, как позволительно повысить прыть выполнения задачи в рассмотренном примере. Как видно из рис. 2, на каждом такте процессора используются в отдалении не все исполнительные блоки процессора, вследствие этого имеется возможность частично совместить выполнение инструкций отдельных потоков на каждом такте процессора. В нашем примере выполнение двух арифметических операций с целыми числами первого потока можно совместить с загрузкой данных из памяти второго потока и претворить в жизнь все три операции за один такт процессора. Аналогично на втором такте процессора можно совместить операцию сохранения результатов первого потока с двумя операциями второго потока и т.д. Собственно, в таком параллельном выполнении двух потоков и содержится основная мысль технологии Hyper-Threading.
Конечно, описанная обстановка является достаточно идеализированной, и на практике выигрыш от использования технологии Hyper-Threading куда больше скромен. Занятие в том, что возможность одновременного выполнения на одном такте процессора инструкций от разных потоков ограничивается тем, что эти инструкции могут задействовать одни и те же исполнительные блоки процессора.
Рассмотрим ещё один обыкновенный пример работы нашего гипотетического процессора. Нехай имеется два потока команд, любой из которых по отдельности выполняется за пять тактов процессора. Без использования технологии Hyper-Threading для выполнения обоих потоков потребовалось бы десять тактов процессора. А сейчас выясним, что произойдет при использовании технологии Hyper-Threading (рис. 3). На первом такте процессора каждый из потоков задействует различные блоки процессора, потому выполнение инструкций несложно совместить. Аналогичное положение вещей наличествует и на втором такте, а вот на третьем такте инструкции обоих потоков пытаются задействовать один и тот же исполнительный блок процессора, а именно блок S/L. В результате возникает конфликтная ситуация, и один из потоков должен поджидать освобождения требуемого ресурса процессора. То же самое происходит и на пятом такте. В итоге оба потока выполняются не за пять тактов (как в идеале), а за семь.
|
|
|
Возникновение конфликтных ситуаций при использовании технологии Hyper-Threading |
Многоядерность - следующий период развития
Избежать конфликтных ситуаций, возникающих при использовании технологии Hyper-Threading, можно в том случае, если изолировать в пределах одного процессора выполнение различных потоков инструкций. Фактически для этого потребуется использовать не одно, а два и более ядер процессора. Тогда в идеальном варианте каждый поток инструкций утилизирует отведённое ему ядро процессора (и исполнительные блоки), что позволяет избежать конфликтных ситуаций и повысить производительность процессора за счёт параллельного выполнения потоков инструкций.
В рассмотренном примере возникновения конфликтных ситуаций при использовании технологии Hyper-Threading употребление двух независимых ядер для выполнения двух потоков инструкций позволило бы реализовать весь программный код не за семь (как в случае процессора с технологией Hyper-Threading), а за пять тактов (рис. 4).
|
|
|
Преимущество двухъядерной архитектуры процессора |
Конечно, произносить о том, что двухъядерные процессоры в два раза производительнее одноядерных, не приходится. Причина заключается в том, что для реализации параллельного выполнения двух потоков необходимо, чтобы эти потоки были целиком или частично независимы приятель от друга, а кроме того, чтобы операционная организация и само приложение поддерживали на программном уровне возможность распараллеливания задач. И в связи с этим стоит подчеркнуть, что ныне вдали не все приложения удовлетворяют этим требованиям и потому как не смогут заполучить выигрыша от использования двухъядерных процессоров. Пройдет ещё несть числа времени до тех пор, в то время как написание параллельного кода приложений ни войдет в привычку у программистов, однако первостепеннный и самый-самый величавый булыжник в фундамент параллельных вычислений уже заложен. Впрочем, уже в эти дни существует полно приложений, которые оптимизированы для выполнения в многопроцессорной среде, и такие приложения, несомненно, позволят использовать преимущества двухъядерного процессора. Кроме того, двухъядерная архитектура процессора позволяет выявить преимущества при одновременной работе с несколькими приложениями, что является типичной ситуацией на нынешний день.
Модельный строй двухъядерных процессоров Intel
Модельный ряд двухъядерных процессоров Intel на сегодняшний день включает в себя 4 модели: процессор Intel Pentium Processor Extreme Edition 840 и три процессора семейства Intel Pentium D.
Процессор Intel Pentium Processor Extreme Edition 840 - флагман линейки десктопных двухъядерных процессоров Intel. Итак, процессор Intel Pentium Extreme Edition 840 - это процессор с двумя ядрами на одном кристалле и корпусировкой LGA775. Тактовая частота процессора составляет 3,2 Ггц.
Каждое ядро процессора имеет микроархитектуру NetBurst. Отметим, что посреди семейства всех двухъядерных процессоров Intel процессор Intel Pentium Processor Extreme Edition 840 - единственный, тот, что поддерживает технологию Hyper-Threading, что в совокупности обеспечивает обработку до четырёх потоков. Оттого один таковой материальный процессор с точки зрения операционной системы определяется как четыре логических процессора.
Каждое ядро процессора имеет свой кэш второго уровня L2 объёмом 1 Мбайт, соответственно, корпоративный объём кэша L2 составляет 2 Мбайта. Процессор производится по 90-нанометровому технологическому процессу, при этом габарит самого кристалла процессора составляет 206 мм2, а количество транзисторов внутри процессора - 230 млн. Казалось бы, таковый здоровый двухядерный процессор будет выделять чрезмерно навалом тепла и потребует эффективной системы охлаждения. Однако, процессор Intel Pentium Extreme Edition 840 поглощает всего 130 Вт, а максимальная температура поверхности кристалла не превосходит 70 градусов Цельсия. Натуга питания ядра процессора составляет от 1,25 В до 1,388 В, а наибольший ток - 125 А
Кроме того, отметим, что данный процессор поддерживает технологии Intel Extended Memory 64 Technology, Execute Disable Bit, а кроме того технологии тепловой защиты Thermal Monitor и Thermal Monitor 2. В то же время, данный процессор не поддерживает технологию энергосбережения Enhanced Intel SpeedStep.
Данный процессор ориентирован на использование в компьютерах и рабочих станциях, критичных к ресурсоёмким приложениям с многопоточной обработкой данных. Выигрыш от использования двухъядерного процессора получают не все приложения. К примеру, нецелесообразным является использование данного процессора в игровых компьютерах. Выигрыш же от использования двухъядерных процессоров получают такие задачи, как рендеринг трёхмерных сцен, обработка (конвертация) видео- и аудиоданных, а также одновременная служба с несколькими программами на ПК. Поэтому оптимальным является использование данного процессора в графических станциях (для работы с 3D-графикой), а также в универсальных домашних компьютерах (но не игровых) для работы с офисными приложениями, приложениями создания контента, приложениями по обработке цифровых фотографий и т.д.
Если изъясняться о доступности этого процессора в розничной сети, то стоит отметить, что фактически это какой-то бумажный "процессор". Вряд ли вам удастся его купить, поскольку, хотя он и объявлен официально, реально в продажу не поступает.
Семейство двухъядерных моделей процессоров Intel Pentium D (табл. 1) на сегодняшний день представлено тремя моделями: Intel Pentium D 840, 830 и 820.
Как и процессор Intel Pentium Processor Extreme Edition 840, процессоры Intel Pentium D ориентированы на использование в графических станциях (для работы с 3D-графикой), а также в универсальных домашних компьютерах (но не игровых) для работы с офисными приложениями, приложениями создания контента, приложениями по обработке цифровых фотографий и т.д.
Фактически, процессоры серии Intel Pentium D 8хх ничем не отличаются от процессора Intel Pentium Processor Extreme Edition 840, за одним исключением - они не поддерживают технологию Hyper-Threading (возможность её использования заблокирована на аппаратном уровне) и поддерживают (кроме процессора Intel Pentium D 820) технологию энергосбережения Enhanced Intel SpeepStep. Во всём остальном (кроме тактовых частот), процессоры процессора Intel Pentium Processor Extreme Edition 840 и Intel Pentium D 8хх идентичны товарищ другу и, более того, кристаллы этих процессоров нарезаются из одних и тех же пластин.
Разница между самими процессорами серии Intel Pentium D 8хх заключается только в тактовой частоте. Так, процессору Intel Pentium D 840 соответствует частота 3,2 ГГц, процессору Intel Pentium D 830 - 3,0 ГГц, а процессору Intel Pentium D 820 - 2,8 ГГц. Кроме того, процессор Intel Pentium D 820 не поддерживает технологию Enhanced Intel SpeepStep (как, впрочем, и любой процессор с тактовой частотой ниже или равной 2,8 ГГц).
Если же калякать о таких характеристиках, как тепловая рассеиваемая мощность и температура процессора, то для процессоров Intel Pentium D 840 и 830 они составляют сообразно 130 Вт и 69,8 C, а для процессора Intel Pentium D 820 - 95 Вт и 64,1 C
Модельный ряд двухъядерных процессоров Intel:
Вторую количество обзора читайте здесь.






