Способы увеличения производительности процессора
Гонка тактовых частот, продолжавшаяся на протяжении многих лет, похоже, окончательно ушла в прошлое. За эти годы в умах пользователей укоренилось мнение, что именно тактовая частота процессора является показателем его производительности, однако планы компании Intel по наращиванию тактовых частот так и остались планами, и, скорее всего, увидеть процессор с тактовой частотой 10 ГГц нам предстоит весьма не скоро. По всей видимости, масштабирование процессоров по тактовой частоте оказалось не столь простой задачей, как предполагалось, и потому при сегодняшних технологических нормах производства процессоров и малоэффективных воздушных системах охлаждения добиться линейного масштабирования тактовой частоты процессоров не удаётся. Осознав, что увеличение прежними темпами тактовых частот процессоров не представляется невозможным, нужно было искать принципиально иные технологии увеличения производительности процессоров. Одновременно с этим необходимо было (по маркетинговым соображениям) убедить пользователей в том, что производительность процессора определяется не только и не столько его тактовой частотой. И первым шагом на пути к такому «перевоспитанию» пользователей стал отказ компании Intel от указания в названии процессора его тактовой частоты — на смену процессорам Intel Pentium 4 3,0 ГГц пришли загадочные обозначения вроде Intel Pentium 4 560 и т.п.
Давайте разберемся, от чего же в действительности зависит производительность процессора. Общепринято отождествлять производительность процессора со скоростью выполнения им инструкций программного кода. Производительность (Performance) — это отношение общего числа выполненных инструкций программного кода ко времени их выполнения:
В этом смысле производительность процессора отождествляется с количеством инструкций, выполняемых за секунду (Instructions rate). А поскольку одной из важных характеристик процессора является его тактовая частота, то желательно именно с ней связать производительность процессора. Это можно сделать, если количество инструкций, выполняемых за единицу времени, рассматривать как произведение количества инструкций, выполняемых за один такт процессора (Instruction Per Clock, IPC), на количество тактов процессора в единицу времени (тактовая частота процессора):
Количество тактов процессора в единицу времени – это и есть его тактовая частота (Frequency).
Таким образом, производительность процессора зависит в равной степени и от его тактовой частоты, и от количества инструкций, выполняемых за такт (IPC):
Впрочем, ожидать адекватного количеству процессоров роста производительности и в данном случае не приходится — многое зависит от типа решаемых задач, от реализации в серверной операционной системе поддержки SMP. Всегда можно найти такое приложение, которое в двухпроцессорной конфигурации будет показывать результаты ниже, чем в однопроцессорной, и потому любой «талантливый» программист вполне сможет свести на нет все преимущества многопроцессорной архитектуры. Между тем, кроме перечисленных способов увеличения общей производительности процессорной подсистемы, существуют технологии, позволяющие реализовать параллельное выполнение нескольких задач на одном процессоре. Такая многозадачность реализована в том или ином виде во всех современных процессорах. Отход от последовательного исполнения команд и использование нескольких исполняющих блоков в одном процессоре позволяют одновременно обрабатывать несколько процессорных микрокоманд, то есть организовывать параллелизм на уровне инструкций (Instruction Level Parallelism, ILP), что, разумеется, увеличивает общую производительность.