Если вы изучали производительность CPU при покупке следующего процессора, вы наверняка встречали термин «IPC» здесь и там.
Вот слайд с недавнего мероприятия по запуску AMD Ryzen серии 7000, который рекламирует улучшение IPC:
В этой статье я объясню, что такое IPC (Instructions Per Clock/Cycle) и как это влияет на производительность процессора.
К сожалению, один из самых простых способов объяснить IPC всё ещё немного сложен: это количество инструкций, которые ЦП может обработать за один такт.
Но, если это определение ничего не значит для вас, не волнуйтесь. Вы не одиноки.
Что такое IPC
Тактовые циклы и тактовые частоты: погружение с головой в микроархитектуру центрального процессора.
Какой тактовый цикл?
Не этот.
Это, на самом деле, что-то вроде этого:
Теперь без шуток, позвольте мне объяснить.
Цифровые схемы полагаются на тактовые сигналы, чтобы знать, когда и как выполнять инструкции.
Вот почему большинство электронных устройств, включая процессоры, содержат внутренний осциллятор, поддерживающий стабильное «тиканье часов». Эти тактовые сигналы непрерывны и выглядят как простая прямоугольная волна с высоким и низким состоянием (как показано выше).
Один «цикл» CPU – это временной интервал между двумя этими импульсами, синхронизированными внутренним генератором. Это время, необходимое для перехода из низкого состояния в высокое и обратно в низкое.
Количество этих «циклов», которые он может обрабатывать в секунду, – это то, что мы называем «тактовой частотой» процессора.
Так как тактовая частота и тактовый цикл процессора могут быть разными для каждой архитектуры ЦП, мы никогда не сравниваем ЦП разных марок/поколений, используя только их тактовую частоту.
Определение IPC – на что влияет тактовая частота
Теперь, когда вы знаете, что такое тактовый цикл, определение IPC становится намного проще.
IPC (Instructions Per Clock) – это количество инструкций, которые ЦП может выполнить за один такт.
С другой стороны, тактовая частота процессора (указываемая в ГГц) – это количество тактов, которые он может выполнить за одну секунду. Таким образом, процессор с частотой 3 ГГц может выполнять целых 3 миллиарда циклов за одну секунду!
Даже в рамках одного и того же бренда IPC могут сильно различаться.
Вот один пример:
Просто взгляните на показатели производительности при запуске одноядерного теста Cinebench R20 на всех этих процессорах.
Поскольку все процессоры заблокированы на постоянной частоте 4 ГГц, единственным аспектом, который может варьироваться, является количество инструкций, которые эти процессоры могут обрабатывать за такт (их IPC).
Вы можете ясно видеть скачки производительности между поколениями с каждым новым Ryzen.
AMD поднялась с 404 (Ryzen 7 1800X) для одного ядра до 517 (Ryzen 7 5800X) на той же частоте 4 ГГц!
Часто задаваемые вопросы
Как улучшается IPC?
Каждое поколение ЦП улучшает предыдущее (за некоторыми заметными исключениями).
Хотя объяснение того, как вы можете улучшить IPC, перенесёт эту статью на территорию микроархитектуры ЦП, я могу дать вам краткий обзор того, что происходит за кулисами.
Давайте снова воспользуемся слайдами презентации AMD Ryzen 7000? Вот часть, где Марк Пейпермастер из AMD объясняет, как процессоры Zen 4 достигли 13-процентного увеличения IPC по сравнению с предыдущим поколением.
Как вы можете видеть здесь «участников» IPC, перечисленных справа, которые представляют собой некоторые аспекты современного процессора и которые можно улучшить, чтобы получить повысить IPC.
Давайте рассмотрим, что они из себя представляют?
- Кэш L2: банк памяти, построенный на микросхеме ЦП и более медленный, чем кеш L1. Его также называют вторичным кэшем.
- Механизм выполнения: обрабатывает целочисленные операции и операции с памятью, а также операции с плавающей запятой.
- Предсказание ветвления: ускоряет обработку инструкций ветвления с использованием конвейеров.
- Загрузка/сохранение: специализированный блок, отвечающий за выполнение всех инструкций по загрузке и сохранению.
- Внешний интерфейс: имеет дело с упорядоченными операциями, такими как выборка инструкций и декодирование.
Означает ли более высокая частота более быстрый процессор?
Только при сравнении процессоров одной марки и одного поколения.
Никогда не следует использовать тактовые частоты для сравнения производительности двух процессоров в любом другом сценарии.
У вас вполне могут быть «процессоры с частотой 4 ГГц» десятилетней давности, которые будут вытеснены современными процессорами с частотой «3 ГГц».
Вот аналогия, которая может помочь:
Допустим, каждому из двух парней поручено заполнить большую яму гравием, и они могут работать лопатой с постоянной скоростью – 1 лопата в секунду.
Думайте о IPC как о лопате, а о тактовой частоте – как о скорости, с которой кто-то сгребает гравий.
Если оба парня используют одну и ту же лопату, они закончат свои задачи точно в одно и то же время.
Но, если вы поменяете одну лопату на большую, и оба парня продолжат лопатить с одинаковой скоростью – как вы думаете, кто закончит свою работу первым? Конечно же, тот, у кого большая лопата, финиширует первым!
Та же идея с IPC и тактовой частотой процессора. Нет особого смысла сравнивать только скорость процессора, если их IPC могут сильно различаться.
Можно ли измерить IPC процессора?
Так как тактовая частота предлагает относительно простой способ оценить этот аспект производительности ЦП, некоторые по понятным причинам ожидают аналогичного показателя и для IPC.
К сожалению, нет никакого способа количественно оценить IPC, потому что не все инструкции равны, и эти инструкции будут сильно различаться в зависимости от рабочей нагрузки.
Даже относительно простая задача разбивается на машинный код, который может переварить ваш ЦП.
Поскольку существует много рабочих нагрузок / приложений / процессов, с которыми может справиться центральный процессор настольного компьютера, сжать количество этих инструкций, которые они могут выполнить за один такт, в осмысленное число / метрику практически невозможно.
Тем не менее, вы можете получить приблизительную оценку относительного прироста IPC.
Установите для двух ЦП одинаковые тактовую частоту и множитель и запустите одноядерный тест, такой как однопоточный Cinebench R20. Разница в производительности, которую вы увидите здесь, будет очень близка к разнице в IPC.