Что такое кэш процессора? В чем разница кэша L1, L2 и L3?
- TryHarder
- 24-янв-2024, 12:57
Кэш процессора - это небольшая временная память, которая находится непосредственно на процессоре. В ней хранятся заранее выбранные данные, которые, вероятно, понадобятся процессору для быстрого доступа. Это необходимо, чтобы оперативная память не стала узким местом для процессора.
Современные процессоры обычно имеют 3 уровня кэша - L1, L2 и L3. Они играют важную роль в определении производительности процессора (особенно для определенных задач, таких как игры).
Итак, давайте рассмотрим, как работает кэш процессора, почему это важно и какой объем кэша процессора вам понадобится для ваших задач.
Программы, которые вы запускаете, сначала загружаются в оперативную память. Затем центральный процессор извлекает, декодирует и выполняет инструкции из основной памяти.
Однако современные процессоры очень мощные и способны выполнять миллиарды инструкций в секунду. Например, AMD Ryzen 9 3950X имеет базовую тактовую частоту 3,5 ГГц (3,5 миллиарда циклов в секунду) и может выполнять более сотни инструкций за один такт.
Однако доступ к данным из оперативной памяти может занимать много циклов, что приводит к потере времени для процессора. Постоянное обращение к данным из оперативной памяти создало бы узкое место и снизило производительность системы. Вот тут и вступает в игру кэш процессора.
Центральный процессор анализирует шаблоны доступа, чтобы предсказать, какие данные и инструкции ему потребуются в следующий раз. Затем эти данные и инструкции перемещаются из оперативной памяти в кэш процессора до того, как они действительно понадобятся (это называется предварительной выборкой).
Доступ к данным из кэша процессора может быть более чем в сто раз быстрее, чем из оперативной памяти. Это значительно сокращает задержку процессора.
Современные процессоры имеют 3 уровня кэша для достижения максимальной производительности. Это позволяет им оптимально балансировать размер кэша, задержку и частоту обращений.
Вы можете получить точные характеристики вашего процессора онлайн или с помощью системных профилировщиков, таких как CPU-Z и HWiNFO.
На моем процессоре Ryzen 7 5700G есть два уровня кэша: L1 для данных и L1 для инструкций. Оба кэша объемом 32 КБ встроены в каждое из 8 ядер. Таким образом, общий объем кэша L1 составляет 512 КБ.
Кэш L1 является самым быстрым и маленьким уровнем памяти. Процессор сначала проверяет, находятся ли требуемые данные в кэше L1. Если данные есть, они мгновенно считываются или записываются. Это называется попаданием в кэш.
Иногда требуемых данных нет в кэше L1. В этом случае процессор проверяет следующий по быстродействию уровень кэша - L2.
Кэш L2 объемом больше, но работает медленнее, чем L1. Он может быть реализован для каждого ядра или использовать общий пул. В случае процессора 5700G он разделен на 8 частей (512 КБ на каждое ядро), что общим объемом составляет 4 МБ.
Если происходит ошибка кэша L2, процессор проверяет L3. Это самый большой уровень кэша, но имеет также самую большую задержку. Например, процессор 5700G имеет общий пул кэша L3 объемом 16 МБ.
Если ошибка кэша возникает снова, центральный процессор обращается к оперативной памяти, а затем к накопителю.
Прежде чем продолжить, давайте рассмотрим, как уровни кэша процессора выглядят на реальной матрице, чтобы лучше понять ситуацию.
Если вы разобьете процессор и удалите нижний слой матрицы процессора, вы сможете увидеть саму процессорную схему.
Например, нижний слой матрицы процессора i9-13900K будет выглядеть приблизительно так: Сравните его с этой интерпретацией кадра и вы увидите, как различные уровни кэша реализованы.
Используя данные системного профилирования, вы сможете получить более детальное представление о распределении кэша процессора.
В случае с i9-13900K, вы сможете наблюдать, как кэши L1 и L2 распределены между P-ядрами и E-ядрами.