Справочник - Материнские платы и процессоры

Способы увеличения производительности процессора


Гонка тактовых частот, продолжавшаяся на протяжении многих лет, похоже, окончательно ушла в прошлое. За эти годы в умах пользователей укоренилось мнение, что именно тактовая частота процессора является показателем его производительности, однако планы компании 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), что, разумеется, увеличивает общую производительность.

Содержание раздела