Если вы изучали производительность 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 ГГц».
Чтобы понять разницу, можно провести следующую аналогию:
Представьте, что двум парням поручено заполнить большую яму гравием. Они могут работать с одинаковой скоростью — одна лопата в секунду.
В этой аналогии IPC представляет собой лопату, а тактовая частота — скорость, с которой каждый из них сгребает гравий.
Если оба парня используют одну и ту же лопату, они закончат свои задачи одновременно.
Но если вы дадите одному из них большую лопату, а другой продолжит работать с прежней скоростью, кто, по вашему мнению, закончит работу первым? Конечно, тот, у кого лопата больше, справится с задачей быстрее!
То же самое касается и процессоров. Не имеет смысла сравнивать только скорость их работы, если их показатели IPC могут сильно различаться.
Можно ли измерить IPC процессора?
Так как тактовая частота — это относительно простой способ оценить производительность процессора, многие люди, вполне естественно, ожидают, что и для IPC будет существовать аналогичная метрика.
К сожалению, не существует простого способа измерить IPC, поскольку не все инструкции одинаковы, и их количество может сильно различаться в зависимости от рабочей нагрузки.
Даже относительно простая задача разбивается на машинный код, который может быть обработан вашим процессором. Поскольку существует множество различных рабочих нагрузок, приложений и процессов, с которыми может справиться центральный процессор настольного компьютера, определить количество инструкций, выполняемых за один такт, в виде понятной числовой метрики практически невозможно.
Тем не менее, вы можете получить приблизительную оценку относительного прироста IPC.
Установите одинаковую тактовую частоту и множитель для двух процессоров и запустите однопоточный тест, например, Cinebench R20. Вы увидите, что разница в производительности будет очень близка к разнице в IPC (количество инструкций, выполняемых за один такт).