Для чего нужен кэш 3 уровня в процессоре

Кэш память процессора

Выбирая процессор, рядовой покупатель в первую очередь смотрит на такие характеристики, как количество ядер и тактовую частоту. Но есть и ещё один важный параметр, который следует учитывать при покупке — объем кэш памяти.

Итак, насколько важна эта характеристика и как влияет на скорость вычислений?

Зачем нужна кэш память

В компьютере используется несколько типов памяти. Всем известны HDD/SSD для долгосрочного хранения информации и ОЗУ (RAM), которая при потере питания сбрасывает всё содержимое. Важное различие между ними — это скорость доступа к данным.

Для общего понимания следует знать, что программы состоят из набора команд. При запуске, они копируются с жесткого диска в оперативную память, а процессору указывается адрес ячейки, где находится стартовая команда. Выполнив её, результат записывается опять в оперативную память. Именно так всё работает, если отбросить важную деталь.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре

Процессоры давно способны выполнять такое количество команд в секунду, что их доставка из ОЗУ тормозит ход работы. Чтобы минимизировать эти задержки, задействуется сверхбыстрая кэш память и специальный контроллер внутри самого процессора. Контроллер по сложным алгоритмам предугадывает, какие данные в ближайшее время могут понадобиться и копирует их в кэш. Но на этом всё не заканчивается. Поступившие данные распределяются по уровням.

Уровни кэша: L1, L2 и L3

Кэш процессора разделен на три основных уровня: L1, L2 и L3. Отличаются они скоростью доступа и размером.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре

Когда процессор ищет данные для выполнения операции, он последовательно начинает просматривать все уровни, начиная с L1 и заканчивая L3. Если поиск завершился неудачей, то приходиться обращаться к оперативной памяти, а это вызывает задержку в работе. Поэтому, чем объемней кэш, тем больше вероятность нахождения в нем нужных данных, а значит меньше задержек.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре

Влияние на скорость работы

Размер кэш памяти влияет на скорость работы программ, но почти всегда этот прирост незначителен за счет массы других факторов. Например, если производитель вдруг увеличит у конкретной модели процессора кэш L3 с 4 МБ до 8 МБ, то в лучшем случае, при выполнении некоторых приложений, получим прирост производительности на 10%. А при обычной работе это будет всего около 2%.

Таким образом, можно сделать вывод, что ориентироваться на объем кэш памяти при покупке процессора стоит в последнюю очередь. Хотя прогресс не стоит на месте и появляются новые идеи в устранении задержек при работе с данными. Например, компания Intel уже провела ряд экспериментов по внедрению кэша 4 уровня и останавливаться на этом не собирается.

Пример объема L3 буфера разных процессоров и их средняя цена:

Intel Celeron G49502 МБ5 000 руб.
Intel Celeron G45003 МБ4 500 руб.
AMD Ryzen 3 3200G4 МБ6 500 руб.
Intel Core i3-9100F6 МБ6 500 руб.
AMD Ryzen 5 14008 МБ6 000 руб.
Intel Core i5-9400F8 МБ9 000 руб.
Intel Xeon E5-2623 v410 МБ35 000 руб.
Intel Core i7-9700F12 МБ23 000 руб.
AMD Ryzen 7 270016 МБ14 000 руб.
Intel Core i9-990016 МБ35 000 руб.
Intel Xeon E5-2609 v420 МБ22 000 руб.
Intel Xeon E5-2650 v430 МБ80 000 руб.
AMD Ryzen 9 3900X62 МБ50 000 руб.

Источник

Что такое кэш? L1 vs L2 vs L3

В любом процессоре любого компьютера – от дешевого ноутбука до сервера в миллион долларов – есть то, что называется кэшем. И чаще всего он ещё и многоуровневый.

Должно быть, это что-то важное, иначе зачем бы это было? Но что оно делает, и зачем там несколько уровней? И что, вообще, значат всякие там множественно-ассоциативные 12-канальности?

Что же такое кэш?

Это небольшая, но очень быстрая память, которая находится рядом с логическими блоками процессора.

Но, конечно, такого определения нам недостаточно.

Представим себе идеальную волшебную систему хранения данных: бесконечно быструю, с бесконечным числом одновременных операций, и при этом обеспечивая абсолютную сохранность данных. Ничего подобного в реальности не существует, но если бы существовало, то устройство процессора было бы существенно проще.

Процессору было бы достаточно иметь только логические блоки для выполнения арифметических операций и систему для контроля передачи данных. Потому, что наша воображаемая система хранения мгновенно отправляет и получает все необходимые значения; ни один из логических блоков не задерживается в ожидании выполнения транзакции данных.

Но мы такими магическими технологиями хранения не обладаем. У нас есть лишь жесткие или твердотельные накопители, и даже лучшие из них не способны справиться с обработкой всех транзакций, необходимых для типичного процессора.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре
«Слон Мироздания» в мире хранения данных. Источник: techspot.com

Причина в том, что современные процессоры невероятно быстры – им требуется всего один такт, чтобы сложить два 64-битных целых числа, а для процессора, работающего на частоте 4 ГГц, это занимает всего 0,00000000025 секунды (четверть наносекунды).

В то время как вращающимся жестким дискам требуются тысячи наносекунд только для того, чтобы найти данные на внутренних дисках, не говоря уже об их передаче. Твердотельные накопители работают быстрее, но и им требуются десятки или сотни наносекунд.

Понятно, что такие накопители нельзя встроить внутрь процессора, а это означает, что между ними будет физическое разделение и, следовательно, понадобится больше времени на перемещение данных, что еще больше усугубляет ситуацию.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре
К сожалению, мир хранения данных стоит скорее на «Великой Черепахе». Источник: techspot.com

Итак, нам нужна еще одна система хранения данных, которая находилась бы между процессором и основным хранилищем. Она должна быть быстрее, чем диск, уметь обрабатывать большое количество транзакций одновременно и быть в непосредственной близости к процессору.

Что ж, у нас уже есть такая штука, и она называется RAM. Во всех компьютерах она используется как раз для этой цели.

Почти всегда это – DRAM (динамическая память с произвольным доступом), и она способна совершать обмен данными намного быстрее любого диска.

Однако, значительно превосходя в скорости, DRAM столь же значительно уступает в объёме хранимых данных.

Самые большие на сегодня чипы DDR4 (производства Micron, одного из немногих производителей DRAM) уступают самым большим по объёму жестким дискам примерно в 4000 раз.

Поэтому, увеличив скорость обмена данными, встала другая задача: с помощью аппаратных и программных решений определить, какие данные следует поместить в ограниченный объём DRAM, для оперативного пользования процессором.

Но по крайней мере, DRAM можно встроить в корпус процессора (встраиваемая DRAM, eDRAM). Однако процессоры относительно небольшие, поэтому особо внутри них не развернёшься.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре
10 Мб DRAM чип слева от графического процессора Xbox 360. Источник: CPU Grave Yard

Подавляющее большинство модулей DRAM располагается на материнской плате рядом с процессором, и это всегда ближайший к процессору компонент в компьютерной системе. И всё равно это недостаточно быстро.

Опять же, для поиска данных DRAM требуется время около 100 наносекунд, но по крайней мере она может передавать миллиарды бит данных в секунду. Похоже, нам понадобится еще одна промежуточная память, между блоками процессора и DRAM.

Встречайте: SRAM (статическая память с произвольным доступом). В то время как DRAM использует микроскопические конденсаторы для хранения данных в виде электрического заряда, SRAM для той же цели использует транзисторы, работающие почти с той же скоростью, что и логические блоки в процессоре (примерно в 10 раз быстрее, чем DRAM).

Конечно, у SRAM есть недостаток, и опять же, речь об объёме.

Транзисторная память занимает намного больше физического места, чем DRAM: чип SRAM размером с чип DDR4 4 Гб будет иметь объём менее 100 Мб. Но поскольку технологически SRAM основана на том же процессе, что и процессор, то её можно встроить прямо внутрь него, в непосредственной близости к его логическим блокам.

Каждая такая дополнительная система памяти на пути к сверхбыстрым узлам процессора отличается повышенной скоростью в ущерб её объёму. Можно добавить больше таких систем, каждая из которых будет быстрее, но меньше.

И вот теперь мы можем дать более внятное определение, что такое кэш: это несколько модулей SRAM, расположенных внутри процессора. Они обеспечивают максимальную загрузку логических блоков, выполняя обмен данными на сверхвысоких скоростях. Этого достаточно? Отлично, потому что с этого момента все станет намного сложнее!

Кэш – это как многоуровневая парковка

Как мы выяснили, кэш необходим, потому что системы хранения данных неидеальны и не способны удовлетворить соответствующие требования логических блоков в процессоре. Современные CPU и GPU содержат массив блоков SRAM, которые внутренне организованы в иерархию – последовательность кэшей, упорядоченных следующим образом:

На этой схеме область процессора выделена черным пунктирным прямоугольником. Блоки ALU (арифметико-логическое устройство) находятся в крайнем левом углу; это те самые структуры, которые и делают процессор – процессором, выполняя математические вычисления. Ближайшим к ALU уровнем памяти являются регистры (они сгруппированы в файл регистров) – но технически они кэшем не являются.

Каждый из них содержит одно число, например 64-битное целое; само значение может быть фрагментом каких-то данных, кодом определенной инструкции, либо же ссылкой на адрес других данных.

Файл регистров в процессоре настольного компьютера довольно мал – например, в Intel Core i9-9900KF их на каждое ядро по два банка: один для целых чисел, содержащий 180 64-битных регистров, другой – для векторов (небольших массивов чисел), имеющий 168 256-битных регистров. Таким образом, общий файл регистров для каждого ядра чуть меньше 7 Кб. Для сравнения, размер файла регистров в потоковых мультипроцессорах (графических эквивалентах ядер CPU) в NVIDIA GeForce RTX 2080 Ti равен 256 Кб.

Регистры – это SRAM-память, как и кэш, но работающие на той же скорости, что и обслуживаемые ими ALU, вводя и выводя данные за один такт. Но они не предназначены для хранения большого количества данных (а только одного их фрагмента), поэтому поблизости всегда есть несколько блоков памяти побольше: это кэш уровня 1, L1 (Level 1).

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре
Процессор Intel Skylake, увеличенное изображение одного из ядер. Источник: Wikichip

На фото крупным планом показано ядро процессора Intel Skylake для PC.

Зелёным прямоугольником слева выделены ALU и файлы регистров. В центре вверху белым прямоугольником показан кэш данных 1 уровня (L1 D cache). Его объём небольшой, всего 32 Кб, но, как и регистры, он находится очень близко к логическим блокам и работает с той же скоростью, что и они.

Второй белый прямоугольник – это кэш инструкций 1 уровня (L1 Ins cache), также размером 32 Кб. Как следует из названия, здесь хранятся различные команды, готовые к разделению на более мелкие – так называемые микрооперации (обычно обозначаемые как μops) для выполнения ALU. Для них также есть свой кэш – так сказать, кэш нулевого уровня (L0 cache), поскольку он меньше (всего на 1500 операций) и ближе, чем кэши L1.

Вы можете спросить: а почему эти блоки SRAM такие маленькие? Почему бы не увеличить их размер до мегабайта хотя бы? Во-первых, основные логические блоки процессора занимают в чипе такое же пространство, как и кэши данных и инструкций вместе взятые, поэтому увеличение размеров последних приведет и к существенному увеличению общего размера кристалла.

А во-вторых (и в-главных), причина, по которой они хранят всего несколько килобайт, заключается в том, что время, необходимое для поиска и извлечения данных, увеличивается по мере увеличения объёма памяти. Кэш L1 должен быть очень быстрым, поэтому необходим компромисс между размером и скоростью – в лучшем случае требуется около 5 тактовых циклов (чуть больше для значений с плавающей точкой), чтобы предоставить данные из этого кэша, готовые к использованию.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре
Кэш L2 в Skylake: 256 Кбайт удовольствия SRAM

Но если бы это был единственный кэш внутри процессора, то производительность последнего резко упала бы. Вот почему все процессоры имеют другой уровень памяти, встроенный в ядра: кэш 2 уровня, L2 (Level 2 cache). Это общее хранилище для инструкций и данных.

Его размер всегда несколько больше, чем L1: к примеру, в процессорах AMD Zen 2 устанавливается до 512 Кб памяти L2, поэтому кэши более низкого уровня обеспечиваются должным образом. Но за этот дополнительный размер приходится платить: на поиск и передачу данных из этого кэша уходит примерно вдвое больше времени по сравнению с L1.

Возвращаясь в прошлое, во времена оригинального Intel Pentium, кэш-память 2 уровня представляла собой отдельную микросхему – либо на небольшой съёмной плате расширения по подобию RAM DIMM, либо встроенную в материнскую плату. Затем кэш L2 переехал в сам корпус процессора, и в конечном итоге был интегрирован в кристалл, что стало причиной появления Pentium III и AMD K6-III.

За этим развитием вскоре последовал другой уровень кэш-памяти, предназначенный для поддержки более низких уровней, и это было связано с появлением многоядерных чипов.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре
Intel Kaby Lake. Источник: Wikichip

На этой макрофотографии чипа Intel Kaby Lake мы видим его 4 ядра слева от центра (интегрированный GPU почти полностью занимает половину кристалла справа от центра). Каждое

ядро имеет свой собственный «личный» набор кэшей L1 и L2 (белые и желтый прямоугольники), но кроме этого имеет ещё и третий банк блоков SRAM (выделены красным).

Несмотря на то, что кэш 3 уровня (Level 3 cache) непосредственно окружает каждое ядро, он является общим для всех ядер – любое из ядер может свободно получать доступ к содержимому L3 другого ядра. Этот кэш-уровень намного больше (от 2 до 32 Мб), но и намного медленнее – в среднем на 30 циклов, особенно если ядру необходимо использовать данные, которые находятся в дальнем блоке кэша.

Ниже мы видим строение ядра в архитектуре AMD Zen 2: кэши данных и инструкций L1 (белым) объемом 32 Кб, L2 (жёлтым) – 512 Кб, и огромный блок кэша L3 (красным) размером 4 Мб.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре
Увеличенное изображение ядра процессора AMD Zen 2. Источник: Fritzchens Fritz

Постойте! Как 32 Кб могут занимать больше физического пространства, чем 512 Кб? Если L1 хранит так мало данных, почему он пропорционально значительно больше, чем кэши L2 и L3?

Больше, чем просто число

Кэш повышает производительность за счет ускорения передачи данных в логические блоки и хранения наготове часто используемых инструкций и данных. Информация, хранящаяся в кэше, делится на две части: сами данные и информация о том, где они изначально находились (в системной памяти или на носителе) – этот адрес называется тегом кэша.

Когда процессор выполняет операцию, которая собирается прочитать/записать данные из/в память, он начинает с проверки тегов в кэше L1. Если затребованные данные там присутствуют (cache hit, «кэш-попадание»), к ним можно сразу получить доступ напрямую. «Кэш-промах» (cache miss) происходит, когда кэш самого низкого уровня не содержит запрашиваемый тег.

В последнем случае, в кэше L1 создается новый тег, и соответствующие узлы архитектуры процессора начинают перебирать другие уровни кэша (вплоть до основного накопителя, если нужно), чтобы найти данные для затребованного тега. Но чтобы освободить место в кэше L1 для этого нового тега, нужно что-то оттуда выгрузить в L2.

В результате данные почти постоянно перемещаются и перемешиваются за считанные такты. Единственный способ управлять этим всем – оснастить сложной структурой обслуживания SRAM. Иными словами: если бы в ядре процессора был бы только один ALU, то кэш L1 был бы намного проще, но поскольку их десятки (многие из которых жонглируют двумя потоками инструкций), кэшу требуется сразу несколько подключений для поддержания кэшированных данных в движении.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре

С помощью бесплатных утилит типа CPU-Z можно получить информацию о кэше в вашем процессоре. Что же мы там видим? Важным элементом является параметр ассоциативности (set associative) – он определяет, как именно блоки данных из системной памяти копируются в кэш.

В приведенном выше примере представлена информация о кэше процессора Intel Core i7-9700KF. Каждый из кэшей L1 разделен на 64 маленьких блока, называемых сэтами (set, “набор”), и каждый из них далее делится на кэш-линии (cache lines), размером 64 байта. «Set associative»

(множественно- или наборно-ассоциативный) означает, что блок данных из RAM отображается на кэш-линии одного конкретного сэта, а не где угодно.

«8-way» – означает 8-канальный, то есть каждый один блок может быть ассоциирован с восемью кэш-линиями в сэте. Чем выше уровень ассоциативности (т.е. чем больше каналов), тем выше количество кэш-попаданий при поиске процессором данных, и ниже негативный эффект от кэш-промахов. Недостатком является то, что это усложняет систему, увеличивает энергопотребление, а также может снизить производительность, поскольку обрабатывается больше кэш-линий на каждый блок данных.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре
Инклюзивный кэш L1+L2, жертвенный кэш L3, политика отложенной записи (write-back policies), ECC (корректор ошибок). Источник: Fritzchens Fritz

Ещё одним аспектом организации кэша является то, как именно данные распределяются по разным уровням. Соответствующие правила устанавливаются так называемой политикой инклюзивности (inclusion policy). Например, процессоры Intel Core имеют полностью инклюзивный кэш L1+L3. Это означает, что одни и те же данные, например, в L1, могут находиться и в L3. Может показаться, что это лишь трата столь ценного пространства кэша, но преимущество состоит в том, что если процессор получает кэш-промах при поиске тега в низком уровне, ему не нужно искать его в более высоком уровне.

В тех же процессорах кэш L2 является не-инклюзивным: любые хранящиеся в нем данные не копируются на какой-либо другой уровень. Это экономит место, но приводит к тому, что системе памяти чипа приходится выполнять поиск по L3 (который всегда намного больше), чтобы найти требуемый тег. Подобным образом устроены и жертвенные кэши (victim cache), но они используются для хранения информации, вытесняемой с более низкого уровня – например, процессоры AMD Zen 2 используют L3 в качестве кэша жертв, который просто хранит данные, вытесненные из L2.

Существуют и другие политики для организации кеширования, например, регламентирующие запись данных в кэш и RAM. Это так называемые политики записи (write policies), и большинство современных процессоров используют кэши с отложенной записью (write-back); это означает, что когда данные записываются на уровень кэша, происходит задержка перед тем, как копия этих данных отправляется в RAM. По большей части эта пауза длится до тех пор, пока данные в кэше не будут замещены новыми данными – и только тогда происходит запись вытесняемых данных в RAM.

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре
Видеокарта Nvidia GA100, оснащенная 20 Мб кэш-памяти L1 и 40 Мб L2.

При выборе объема, типа и политик кэш-памяти, разработчики процессоров стараются найти оптимальный баланс между повышением производительности процессора и увеличением необходимой площади кристалла с неминуемым усложнением системы. Если бы было возможно просто взять и сделать 1000-канальные полностью ассоциативные 20-мегабайтные кэши L1, и при этом их размер не был бы размером с Манхэттэн (и не потребляли бы такую же мощность), то у нас всех уже были бы компьютеры с такими процессорами!

За последние десять лет кэш L1 претерпел мало изменений, в то время как L3 продолжает увеличиваться. Десять лет назад, покупая Intel i7-980X за 999 долларов, вы получали 12 Мб L3. Сегодня же кэшем L3 объёмом 64 Мб снабжены процессоры стоимостью вдвое дешевле.

Итак, кэш – это абсолютно необходимые и совершенно потрясающие технологии. В данной статье мы не рассматривали другие типы кэшей в CPU и GPU (например, буфер ассоциативной трансляции – TLB, или текстурные кэши), но поскольку все они следуют той же логике и структуре уровней, как мы описали здесь, то вам, скорее всего, уже будет не так сложно разобраться с ними.

Источник

Кэш-память процессора

Кэш-память играет важную роль. Без нее от высокой тактовой частоты процессора не было бы никакого проку. Кэш позволяет использовать в компьютере любую, даже самую «медленную» оперативную память, без ощутимого ущерба для его производительности.

О том, что такое кэш-память процессора, как она работает и какое влияние оказывает на быстродействие компьютера, читатель узнает из этой статьи.

Содержание статьи

Что такое кэш-память процессора

Решая любую задачу, процессор компьютера получает из оперативной памяти необходимые блоки информации. Обработав их, он записывает в память результаты вычислений и получает для обработки следующие блоки. Это продолжается, пока задача не будет выполнена.

Все упомянутые операции производятся на очень высокой скорости. Однако, даже самая быстрая оперативная память работает медленнее любого «неторопливого» процессора. Каждое считывание из нее информации и обратная ее запись отнимают много времени. В среднем, скорость работы оперативной памяти в 16 – 17 раз ниже скорости процессора.

Не смотря на такой дисбаланс, процессор не простаивает и не ожидает каждый раз, когда оперативная память «выдает» или «принимает» данные. Он почти всегда работает на максимальной скорости. И все благодаря наличию у него кэш-памяти.

Кэш-память процессора – это небольшая, но очень быстрая память. Она встроена в процессор и является своеобразным буфером, сглаживающим перебои в обмене данными с более медленной оперативной памятью. Кэш-память часто называют сверхоперативной памятью.

Кэш нужен не только для выравнивания дисбаланса скорости. Процессор обрабатывает данные более мелкими порциями, чем те, в которых они хранятся в оперативной памяти. Поэтому кэш-память играет еще и роль своеобразного места для «перепаковки» и временного хранения информации перед ее передачей процессору, а также возвращением результатов обработки в оперативную память.

Устройство кэш-памяти процессора

Контроллер кэш памяти

Контроллер кэш памяти – это устройство, управляющее содержанием кэша, получением необходимой информации из оперативной памяти, передачей ее процессору, а также возвращением в оперативную память результатов вычислений.

Когда ядро процессора обращается к контроллеру за какими-то данными, тот проверяет, есть ли эти данные в кэш-памяти. Если это так, ядру моментально отдается информация из кэша (происходит так называемое кэш-попадание).

В противном случае ядру приходится ожидать поступления данных из медленной оперативной памяти. Ситуация, когда в кэше не оказывается нужных данных, называется кэш-промахом.

Задача контроллера – сделать так, чтобы кэш-промахи происходили как можно реже, а в идеале – чтобы их не было вообще.

Размер кэша процессора по сравнению с размером оперативной памяти несоизмеримо мал. В нем может находиться лишь копия крошечной части данных, хранимых в оперативной памяти. Но, не смотря на это, контроллер допускает кэш-промахи не часто. Эффективность его работы определяется несколькими факторами:

• размером и структурой кэш-памяти (чем больше ресурсов имеет в своем распоряжении контроллер, тем ниже вероятность кэш-промаха);

• эффективностью алгоритмов, по которым контроллер определяет, какая именно информация понадобится процессору в следующий момент времени;

• сложностью и количеством задач, одновременно решаемых процессором. Чем сложнее задачи и чем их больше, тем чаще «ошибается» контроллер.

Кэш-память процессора

Однако, эта скорость зависит также от объема конкретной микросхемы. Чем значительней объем микросхемы, тем сложнее обеспечить высокую скорость ее работы.

Учитывая указанную особенность, кэш-память процессора изготовляют в виде нескольких небольших блоков, называемых уровнями. В большинстве процессоров используется трехуровневая система кэша:

Количество микросхем памяти L1 в процессоре, как правило, равно количеству его ядер. Каждое ядро имеет доступ только к своей микросхеме L1.

Кэш-память второго уровня (L2) немного медленнее кэш-памяти L1, но и объем ее более существенный (несколько сотен килобайт). Служит она для временного хранения важной информации, вероятность запроса которой ниже, чем у информации, находящейся в L1.

Кэш-память третьего уровня (L3) – еще более объемная, но и более медленная схема памяти. Тем не менее, она значительно быстрее оперативной памяти. Ее размер может достигать нескольких десятков мегабайт. В отличие от L1 и L2, она является общей для всех ядер процессора.

Уровень L3 служит для временного хранения важных данных с относительно низкой вероятностью запроса, а также для обеспечения взаимодействия ядер процессора между собой.

Встречаются также процессоры с двухуровневой кэш-памятью. В них L2 совмещает в себе функции L2 и L3.

Влияние кэш-памяти процессора на быстродействие компьютера

Указанные показатели касаются простых задач. С повышением нагрузки на процессор число кэш-промахов увеличивается.

Эффективность кэш-памяти процессора сводит к минимуму влияние скорости оперативной памяти на быстродействие компьютера. Например, компьютер одинаково хорошо будет работать с оперативной памятью 1066 МГц и 2400 МГц. При прочих равных условиях разница производительности в большинстве приложений не превысит 5%.

Пытаясь оценить эффективность кэш-памяти, пользователи чаще всего ищут ответы на следующие вопросы:

Какая структура кэш-памяти лучше: двух- или трехуровневая?

Трехуровневая кэш-память более эффективна.

Чтобы определить, как сильно L3 влияет на работу процессора, сайтом Tom’s Hardware был проведен эксперимент. Заключался он в замере производительности процессоров Athlon II X4 и Phenom II X4. Оба процессора оснащены одинаковыми ядрами. Первый отличается от второго лишь отсутствием кэш-памяти L3 и более низкой тактовой частотой.

Приведя частоты обеих процессоров к одинаковому показателю, было установлено, что наличие кэш-памяти L3 повышает производительность процессора Phenom на 5,8 %. Но это средний показатель. В одних приложениях он был почти равен нулю (офисные программы), в других – достигал 8% и даже больше (компьютерные 3D игры, архиваторы и др.).

Как влияет размер кэша на производительность процессора?

Оценивая размер кэш-памяти, нужно учитывать характеристики процессора и круг решаемых им задач.

Кэш-память двуядерного процессора редко превышает 3 MB. Тем более, если его тактовая частота ниже 3 Ггц. Производители прекрасно понимают, что дальнейшее увеличение размера кэша такого процессора не принесет прироста производительности, зато существенно повысит его стоимость.

Другое дело высокочастотные 4-, 6- или даже 8-миядерные процессоры. Некоторые из них (например, Intel Core i7) поддерживают технологию Hyper Threading, обеспечивающую одновременное выполнение каждым ядром двух задач. Естественно, что потенциал таких процессоров не может быть раскрыт с маленьким кэшем. Поэтому его увеличение до 15 или даже 20 MB вполне оправдано.

В процессорах Intel алгоритм наполнения кэш-памяти построен по так называемой инклюзивной схеме, когда содержимое кэшей верхнего уровня (L1, L2) полностью или частично дублируется в кэше нижнего уровня (L3). Это в определенной степени уменьшает полезный объем его пространства. С другой стороны, инклюзивная схема позитивно сказывается на взаимодействии ядер процессора между собой.

В целом же, эксперименты свидетельствуют, что в среднестатистическом «домашнем» процессоре влияние размера кэша на производительность находится в пределах 10 %, и его вполне можно компенсировать, например, высокой частотой.

Эффект от большого кэша наиболее ощутим при использовании архиваторов, в 3D играх, во время кодирования видео. В «не тяжелых» же приложениях разница стремится к нулю (офисные программы, интернет-серфинг, работа с фотографиями, прослушивание музыки и др.).

Многоядерные процессоры с большим кэшем необходимы на компьютерах, предназначенных для выполнения многопоточных приложений, одновременного решения нескольких сложных задач.

Особенно актуально это для серверов с высокой посещаемостью. В некоторых высоконагружаемых серверах и суперкомпьютерах предусмотрена даже установка кэш-памяти четвертого уровня (L4). Изготавливается она в виде отдельных микросхем, подключаемых к материнской плате.

Как узнать размер кэш-памяти процессора?

Для чего нужен кэш 3 уровня в процессоре. Смотреть фото Для чего нужен кэш 3 уровня в процессоре. Смотреть картинку Для чего нужен кэш 3 уровня в процессоре. Картинка про Для чего нужен кэш 3 уровня в процессоре. Фото Для чего нужен кэш 3 уровня в процессоре

Существуют специальные программы, предоставляющие подробную информацию о процессоре компьютера, в том числе и о его кэш-памяти. Одной из них является программа CPU-Z.

Программа не требует установки. После ее запуска нужно перейти на вкладку «Caches» (см. изображение).

На примере видно, что проверяемый процессор оснащен трехуровневой кэш-памятью. Размер кэша L3 у него составляет 3 MB, L2 – 512 KB (256×2), L1 – 128 KB (32×2+32×2).

Можно ли как-то увеличить кэш-память процессора?

Как уже было сказано в одном из предыдущих пунктов, возможность увеличения кэш-памяти процессора предусмотрена в некоторых серверах и суперкомпьютерах, путем ее подключения к материнской плате.

В домашних же или офисных компьютерах такая возможность отсутствует. Кэш-память является внутренней неотъемлемой частью процессора, имеет очень маленькие физические размеры и не подлежит замене. А на обычных материнских платах нет разъемов для подключения дополнительной кэш-памяти.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *