L3 кэш: Что такое кэш? L1 vs L2 vs L3 — i2HARD
L1, L2 и L3 кэш. Определение — Железо на DTF
16 599
просмотров
В любом процессоре компьютера, дешевого ноутбука или сервера за миллион долларов, везде есть кэш. И он имеет в себе несколько уровней.
Должно быть важный компонент, иначе зачем он там? Чем занимается кэш, и зачем ему несколько уровней? Что вообще означает 12-позиционная ассоциативность?
Что такое кэш?
Говоря кратко: Это небольшая, но очень быстрая память, которая располагается рядом с логическими блоками процессора.
Но, конечно, мы хотим узнать гораздо больше о кэше…
Представим себе воображаемую, волшебную систему хранения данных: она нереально быстрая, может обрабатывать бесконечное количество одновременно выполняемых операции, и всегда хранит данные в безопасности. Если бы, хоть что-то отдаленно похожее на это существовало, то конструкция процессоров была бы намного проще.
Процессору потребовались бы только логические модули для сложения, умножения и т.д., а также система для обработки передачи данных. Это связано с тем, что наша теоретическая система хранения данных может мгновенно посылать и получать все необходимые числа; ни один из логических блоков не будет пребывать в ожидании передачи данных.
Но, как мы все знаем, нет никакой магической технологии хранения данных. Вместо этого у нас есть жесткие (HDD) или твердотельные (SSD) диски, и даже самые лучшие из них не способны обрабатывать все передачи данных, необходимые для обычного процессора.
Великий слон хранения данных.
Причина, почему современные процессоры такие быстрые заключается в том, что им требуется всего один тактовый цикл, чтобы сложить вместе два 64-битных целочисленных значения. Для чипа с частотой в 4 Ггц этот процесс займет всего лишь 00000000025 секунд или четверть наносекунды.
Тем временем, жестким дискам требуется тысячи наносекунд, чтобы найти данные, не говоря о том, что их еще нужно перенести. А твердотельным накопителям — десятки или сотни наносекунд.
Диски такого рода не могут быть встроены в процессор, это понятно. Иначе они были бы физически разделены. Это в свою очередь, лишь увеличило бы время на передачу данных.
Второй великий слон хранения данных, к сожалению.
Поэтому нам нужна еще одна система хранения данных, которая находится между процессором и основным хранилищем. Она должна быть быстрее диска, а также способна обрабатывать большое количество данных одновременно и быть намного ближе к процессору.
Что ж, у нас уже есть такая система – оперативная память (RAM). И в этом её основная задача.
Практически все «оперативки» состоят из динамической памяти с произвольным доступом (DRAM). Она намного быстрей любого другого диска.
Несмотря на то, что что DRAM работает очень быстро, объем памяти оставляет желать лучшего.
Самые большие чипы памяти DDR4 от Micron, способны вмещать в себе 32 Гбит или 4 ГБ данных. В то же время, самые ёмкие жесткие диски обладают объемом в 4000 раз больше.
Таким образом, хоть мы и увеличили скорость передачи данных, нужно понять, что требуется для процессора в первую очередь, ведь память сильно ограничена. Этими решениями занимается аппаратное и программное обеспечение.
По крайней мере, DRAM может быть произведен в корпусе чипа (встроенный DRAM). Но процессоры довольно маленькие, поэтому возможности вставить много памяти нету.
10 Мб ОЗУ. Слева от ГП Xbox 360.
Подавляющее большинство DRAM располагается прямо рядом с процессором, который в свою очередь подключен к мат. плате. Самый близкий компонент к процессору, и тем не менее, еще недостаточно быстрый.
DRAM все еще тратит примерно 100 наносекунд чтобы найти данные, но передавать их, он способен на скорости миллиардов битов в секунду. Кажется, что нам требуется еще одно звено между процессором и DRAM.
На сцену выходит SRAM (статическая память с произвольным доступом). Там, где DRAM использует микроскопические конденсаторы для хранения данных в виде электрического заряда, SRAM использует транзисторы. И они могут работать почти так же быстро, как логические модули в процессоре (примерно в 10 раз быстрее, чем DRAM).
У SRAM есть недостаток, и дело опять в объёме.
Транзисторная память занимает намного больше места, чем DRAM. DDR4 с размером в 4Гб эквивалентен лишь 100Мб SRAM. Но, поскольку проектирование ЦП схоже с SRAM, его можно встроить в сам процессор, расположив максимально близко к логическим устройствам.
Каждый раз, увеличивая скорость, объем для хранения уменьшается. Мы могли бы продолжать добавлять больше разделов, каждый из которых был бы быстрее, но меньше.
Таким образом, мы пришли к более техническому определению того, что такое кэш: Это несколько блоков SRAM, которые расположены внутри процессора. Они используются для того, чтобы обеспечить максимальную загрузку логических блоков, отправляя и сохраняя данные на сверхбыстрой скорости. Довольны? Ну и хорошо. С этого момента всё становится намного сложнее!
Кэш: многоуровневая парковка
Как мы уже говорили, кэш необходим, так как в процессоре нет волшебной системы хранения данных, способной удовлетворить потребности логических модулей в данных. Современные ЦП и ГП содержат ряд блоков SRAM, которые организованы в иерархию — последовательность кэшей, которая упорядочена следующим образом:
На изображении выше процессор представлен черным пунктирным прямоугольником. ALU (арифметико-логическое устройство) находится слева. Эта структура питает процессор и обрабатывает математику. Технически это не кэш. Ближайшим уровнем памяти к ALU являются регистры (они сгруппированы в файл регистров).
Каждый из них содержит одно число, например, 64-битное целое. Его значение может быть частью данных о чём-то, кодом конкретной инструкции или адресом памяти каких-то других данных.
Файл регистра в десктопном процессоре весьма мал — например, в Intel Core i9-9900K их по два «банка» в каждом ядре. Одно для целых чисел, всего 180 64-битных регистров. Другой файл регистра для векторов (маленьких массивов чисел), 168 256-битных записей. Таким образом, общий файл регистра для каждого ядра — чуть меньше 7 кБ. Для сравнения, размер файла регистра в потоковом мультипроцессоре (эквивалент ядра GPU) Nvidia GeForce RTX 2080 Ti составляет 256 кБ.
Регистры — это SRAM, как и кэш, но они такие же быстрые, как и ALU, которую они обслуживают, перемещая данные за один тактовый цикл. Но они не предназначены для хранения очень большого количества данных (только одна часть), поэтому рядом всегда есть несколько больших блоков памяти: это кэш 1-го уровня.
Процессор Intel Skylake. Увеличенное изображение одного из ядер.
Приведенное выше изображение представляет собой увеличенный снимок одного из ядер процессора Intel Skylake.
ALU и файлы реестра видны слева. Они выделены зеленым цветом. В верхней части фото, посередине, белым цветом обозначен L1 кэш. В нем не так много информации, всего 32 кБ, но, как и в регистрах, он очень близок к логическим блокам и работает с той же скоростью, что и они.
Другой белый прямоугольник указывает на второй кэш инструкций 1-го уровня, тоже 32 кБ. Как следует из названия, в нем хранятся различные команды, которые будут разделены на более мелкие, так называемые микро операции (обычно помеченные как μops). Все они будут переданы в ALU. Для них тоже есть кэш, L0, так как он меньше (содержит только 1500 операций) и ближе, чем L1 кэш.
Возможно вы будете удивлены, почему эти блоки SRAM такие маленькие? Почему их размер не исчисляется в мегабайтах? Суммарно, кэши данных и инструкций занимают почти столько же места в чипе, сколько и основные логические блоки. Поэтому увеличение их объема, повысило бы общий размер матрицы.
Но основная причина, по которой они содержат в себе несколько кБ, заключается в том, что время, необходимое для поиска и извлечения данных, увеличивается по мере возрастания объема памяти. Кэш L1 должен быть действительно быстрым, и поэтому должен быть достигнут компромисс между размером и скоростью. В лучшем случае, требуется около 5 тактов (больше для значений с плавающей точкой), чтобы получить данные из этой кэш-памяти, которые готовы к использованию.
L2 кэш в Skylake.
Будь это единственным кэшом в процессоре, его производительность внезапно бы зашла в тупик. Поэтому у них есть другой уровень памяти, который встроен в ядро: L2 кэш. Это общий блок памяти, хранящий инструкции и данные.
Он всегда немного больше, чем 1-й уровень: процессоры AMD Zen 2, например, содержат до 512 кБ, так что кэши нижнего уровня находятся в хорошей кондиции. Однако дополнительный размер влечет за собой задержку на поиск и передачу данных из этого кэша. Уходит примерно вдвое больше времени, чем в L1.
Вспоминая Intel Pentium, тогда L2 кэш представлял собой отдельный чип, который находился на небольшой подключаемой плате (например, RAM DIMM), либо был встроен в материнскую плату. В конце концов, L2 таки попал в корпус процессора. Интеграция в процессорную матрицу, на чипах Pentium III и AMD K6-III.
Дальнейшая разработка повлекла за собой появление еще одного уровня, для поддержки других более низких, и это произошло в связи с ростом многоядерных процессоров.
Процессор Intel Kaby Lake.
На этом изображении Intel Kaby Lake, слева посередине показаны 4 ядра (встроенный GPU занимает почти половину матрицы, справа). Каждое ядро имеет свой собственный набор кэшей уровня 1 и 2 (выделены белым и желтым, соответственно), но у них также есть третий набор блоков SRAM.
L3 кэш хоть и окружает одно ядро, полностью отделен от других. Каждый из них может получить свободный доступ к содержимому чужого кэша 3го уровня. Он намного больше (от 2 до 32 MB), но также намного медленнее, в среднем 30 циклов, особенно если ядру необходимо использовать данные, которые находятся в блоке кэша, находящемся на некотором расстоянии.
Ниже мы видим одно из ядер AMD Zen 2: 32 кБ кэша 1го уровня (белый цвет), 512 кБ 2го уровня (желтый цвет) и огромный блок L3 кэша размером в 4 МБ (красный цвет).
AMD Zen 2. Одно из ядер.
Стоп. Как 32 кБ может физически занимать больше места, чем 512 кБ? Если L1 содержит так мало данных, почему он намного больше, чем L2 или L3 кэш?
Больше, чем просто число
Кэш повышает производительность компьютера за счет ускорения передачи данных в логические модули и хранения рядом с ними копии часто используемых инструкций и данных. Информация, хранящаяся в кэше, разделена на две части: сами данные и место, где они изначально находились в системной памяти/хранилище — этот адрес называется кэш-тегом.
Когда процессор выполняет операцию по чтению или записи данных из или в память, он начинает с проверки тегов в кэше 1-го уровня. Если нужный тег присутствует, то доступ к этим данным можно получить практически сразу. Несовпадения происходят тогда, когда требуемый тег не находится на самом низком уровне кэша.
Таким образом, в кэше L1 создается новый тег, а остальная часть процессора берет на себя поиск данных для этого тега, через другие уровни кэша (вплоть до основного накопителя, если это необходимо). Но чтобы освободить место в кэше L1 для этого нового тега, в L2 обязательно должно быть загружено что-то другое.
Это приводит к почти постоянному перетасовыванию данных, и все это достигается всего лишь за несколько тактовых циклов. Единственный способ достичь этого — иметь сложную структуру вокруг SRAM, для управления данными. Скажем иначе: если бы ядро процессора состояло всего из одного ALU, то кэш L1 был бы намного проще, но поскольку их десятки (многие из которых будут пропускать через себя два потока с инструкциями), то кэш требует множество соединений, чтобы продолжать работу.
Для проверки кэша в собственном процессоре, вы можете использовать бесплатные программы, такие как CPU-Z. Но что означает вся эта информация? Важным элементом является ассоциативный сет меток — это все о правилах, применяемых при копировании в кэш блоков данных из системной памяти.
Вышеуказанная информация c Intel Core i7-9700K. Его кэши 1-го уровня разбиты на 64 маленьких блока, называемых наборами, и каждый из них далее разбивается на строки кэша (размером 64 байта). Ассоциативный сет означает, что блок данных из системной памяти отображается на кэш-линии в одном конкретном наборе, а не где угодно.
«х8» говорит нам о том, что один блок может быть ассоциирован с 8 строками кэша в наборе. Чем выше уровень ассоциативности (т.е. больше «способов»), тем больше шансов получить попадание в кэш в то время, когда процессор занимается поиском данных, а также снижает количество ошибок, вызванных промахами в кэше. К недостаткам можно отнести: общую сложность, увеличенное энергопотребление, а также сниженную производительность, так как должны обрабатываться больше линии кэша для получения блока данных.
Кэш L1+L2 включительно. L3 кэш память жертвы. Политика обратной записи, даже ECC (память с коррекцией ошибок).
Victim cache или Victim buffer (дословно Кэш жертв) — это небольшой специализированный кэш, хранящий те кэш-линии, которые были недавно вытеснены из основного кэша микропроцессора при их замещении.
Другой аспект сложности кэша заключается в том, как данные хранятся на различных уровнях. Правила устанавливаются в так называемой политике включения. Например, процессоры Intel Core имеют полностью инклюзивный кэш L1+L3. Это означает, что одни и те же данные на первом уровне могут быть и на третьем. Может показаться, что это пустая трата ценной кэш-памяти, но есть главное преимущество: если процессор промахивается при поиске тега на более низком уровне, ему не нужно искать его на более высоком уровне.
В тех же процессорах кэш L2 не инклюзивный: любые данные, хранящиеся там, не копируются ни на какой другой уровень. Это экономит место, но приводит к тому, что системе памяти процессора приходится искать пропущенный тег в L3 (который всегда намного больше). Кэш жертв схож, но он используется для хранения информации, которая исходит с более низкого уровня — например, процессоры AMD Zen 2 используют кэш жертв L3, в котором просто хранятся данные из L2.
Существуют и другие политики кэширования, например, когда данные записываются в кэш и основную системную память. Это называется политикой записи, и большинство современных процессоров используют кэш с обратной записью: когда данные записываются в кэш-память, возникает задержка перед тем, как системная память будет обновлена копией этого кэша. По большей части эта пауза продолжается до тех пор, пока данные остаются в кэше — только после загрузки оперативная память получает информацию.
Графический процессор Nvidia GA100, оснащенный L1 кэшом (20 МБ) и L2 кэшом (40 МБ).
Для проектировщиков процессоров выбор объема, типа и политики кэширования это – поиск баланса между расширенными возможностями чипа и общей повышенной сложностью, а также требуемым пространством для матрицы. Если бы было возможным создать 20 МБ, 1000-сторонний полностью ассоциативный кэш 1-го уровня, и чтобы чип не стал размером с Манхэттен (и потреблял столько же энергии), то у всех стояли бы компьютеры с такими процессорами!
Самый низкий уровень кэширования в современных процессорах не сильно изменился за последнее десятилетие . Однако, L3 кэш продолжает расти в размерах. Десять лет назад, если вам посчастливилось быть владельцем Intel i7-980X за 999 долларов, вы могли получить 12 МБ кэша 3го уровня. За половину этой суммы сегодня вы получаете 64 МБ.
Кэш, в двух словах: безусловно нужная и удивительная технология. Мы не рассматривали другие типы кэшей в CPU и GPU (такие как буфер ассоциативной трансляции [TLB] или кэш текстур), но так как все они следуют простой структуре и шаблону уровней, вам уже не покажется сложным разобраться в них.
Был ли у вас компьютер с отдельным L2 кэшем на материнской плате? Как насчет тех процессоров Pentium II и Celeron (в частности 300a), которые поставлялись в качестве дочерних плат? Можете ли вы вспомнить свой первый процессор с общим L3? Расскажите нам об этом в комментариях.
3 MB vs 8 MB Cache, Страница 1. GECID.com
Отобразить одной страницейСтраница 1Страница 2
Приветствуем вас на сайте GECID.com! Хорошо известно, что тактовая частота и количество ядер процессора напрямую влияют на уровень производительности, особенно в оптимизированных под многопоточность проектах. Мы же решили проверить, какую роль в этом играет кэш-память уровня L3?
Для исследования этого вопроса нам был любезно предоставлен интернет-магазином pcshop.ua 2-ядерный процессор Intel Core i3-6100 с номинальной рабочей частотой 3,7 ГГц и 3 МБ кэш-памяти L3 с 12-ю каналами ассоциативности. В роли оппонента выступил 4-ядерный Intel Core i7-6700K, у которого были отключены два ядра и снижена тактовая частота до 3,7 ГГц. Объем же кэша L3 у него составляет 8 МБ, и он имеет 16 каналов ассоциативности. То есть ключевая разница между ними заключается именно в кэш-памяти последнего уровня: у Core i7 ее на 5 МБ больше.
Если это ощутимо повлияет на производительность, тогда можно будет провести еще один тест с представителем серии Core i5, у которых на борту 6 МБ кэша L3.
Но пока вернемся к текущему тесту. Помогать участникам будет видеокарта MSI GeForce GTX 1070 GAMING X 8G и 16 ГБ оперативной памяти DDR4-2400 МГц. Сравнивать эти системы будем в разрешении Full HD.
Для начала начнем с рассинхронизированных живых геймплев, в которых невозможно однозначно определить победителя. В Dying Light на максимальных настройках качества обе системы показывают комфортный уровень FPS, хотя загрузка процессора и видеокарты в среднем была выше именно в случае Intel Core i7.
Arma 3 имеет хорошо выраженную процессорозависимость, а значит больший объем кэш-памяти должен сыграть свою позитивную роль даже при ультравысоких настройках графики. Тем более что нагрузка на видеокарту в обоих случаях достигала максимум 60%.
Игра DOOM на ультравысоких настройках графики позволила синхронизировать лишь первые несколько кадров, где перевес Core i7 составляет около 10 FPS. Рассинхронизация дельнейшего геймплея не позволяет определить степень влияния кэша на скорость видеоряда. В любом случае частота держалась выше 120 кадров/с, поэтому особого влияния даже 10 FPS на комфортность прохождения не оказывают.
Завершает мини-серию живых геймплеев Evolve Stage 2. Здесь мы наверняка увидели бы разницу между системами, поскольку в обоих случаях видеокарта загружена ориентировочно на половину. Поэтому субъективно кажется, что уровень FPS в случае Core i7 выше, но однозначно сказать нельзя, поскольку сцены не идентичные.
Более информативную картину дают бенчмарки. Например, в GTA V можно увидеть, что за городом преимущество 8 МБ кэша достигает 5-6 кадров/с, а в городе – до 10 FPS благодаря более высокой загрузке видеокарты. При этом сам видеоускоритель в обоих случаях загружен далеко не на максимум, и все зависит именно от CPU.
Третий ведьмак мы запустили с запредельными настройками графики и высоким профилем постобработки. В одной из заскриптованных сцен преимущество Core i7 местами достигает 6-8 FPS при резкой смене ракурса и необходимости подгрузки новых данных. Когда же нагрузка на процессор и видеокарту опять достигают 100%, то разница уменьшается до 2-3 кадров.
Максимальный пресет графических настроек в XCOM 2 не стал серьезным испытанием для обеих систем, и частота кадров находилась в районе 100 FPS. Но и здесь больший объем кэш-памяти трансформировался в прибавку к скорости от 2 до 12 кадров/с. И хотя обоим процессорам не удалось по максимум загрузить видеокарту, вариант на 8 МБ и в этом вопросе местами преуспевал лучше.
Больше всего удивила игра Dirt Rally, которую мы запустили с пресетом очень высоко. В определенные моменты разница доходила до 25 кадров/с исключительно из-за большего объема кэш-памяти L3. Это позволяло на 10-15% лучше загружать видеокарту. Однако средние показатели бенчмарка показали более скромную победу Core i7 — всего 11 FPS.
Интересная ситуация получилась и с Rainbow Six Siege: на улице, в первых кадрах бенчмарка, преимущество Core i7 составляло 10-15 FPS. Внутри помещения загрузка процессоров и видеокарты в обоих случаях достигла 100%, поэтому разница уменьшилась до 3-6 FPS. Но в конце, когда камера вышла за пределы дома, отставание Core i3 опять местами превышало 10 кадров/с. Средний же показатель оказался на уровне 7 FPS в пользу 8 МБ кэша.
Социальные комментарии Cackle
На что влияет кэш процессора L1 L2 L3
Компьютерные процессоры сделали значительный рывок в развитии за последние несколько лет. Размер транзисторов с каждым годом уменьшается, а производительность растет. При этом закон Мура уже становится неактуальным. Что касается производительности процессоров, то следует учитывать, не только количество транзисторов и частоту, но и объем кэша.
Возможно, вы уже слышали о кэш памяти когда искали информацию о процессорах. Но, обычно, мы не обращаем много внимания на эти цифры, они даже не сильно выделяются в рекламе процессоров. Давайте разберемся на что влияет кэш процессора, какие виды кэша бывают и как все это работает.
Содержание статьи:
Что такое кэш процессора?
Если говорить простыми словами, то кэш процессора это просто очень быстрая память. Как вы уже знаете, у компьютера есть несколько видов памяти. Это постоянная память, которая используется для хранения данных, операционной системы и программ, например, SSD или жесткий диск. Также в компьютере используется оперативная память. Это память со случайным доступом, которая работает намного быстрее, по сравнению с постоянной. И наконец у процессора есть ещё более быстрые блоки памяти, которые вместе называются кэшем.
Если представить память компьютера в виде иерархии по её скорости, кэш будет на вершине этой иерархии. К тому же он ближе всего к вычислительным ядрам, так как является частью процессора.
Кэш память процессора представляет из себя статическую память (SRAM) и предназначен для ускорения работы с ОЗУ. В отличие от динамической оперативной памяти (DRAM), здесь можно хранить данные без постоянного обновления.
Как работает кэш процессора?
Как вы, возможно, уже знаете, программа — это набор инструкций, которые выполняет процессор. Когда вы запускаете программу, компьютеру надо перенести эти инструкции из постоянной памяти в процессору. И здесь вступает в силу иерархия памяти. Сначала данные загружаются в оперативную память, а потом передаются в процессор.
В наши дни процессор может обрабатывать огромное количество инструкций в секунду. Чтобы по максимуму использовать свои возможности, процессору необходима супер быстрая память. Поэтому был разработан кэш.
Контроллер памяти процессора выполняет работу по получению данных из ОЗУ и отправке их в кэш. В зависимости от процессора, используемого в вашей системе, этот контроллер может быть размещен в северном мосту материнской плате или в самом процессоре. Также кэш хранит результаты выполнения инструкций в процессоре. Кроме того, в самом кэше процессора тоже есть своя иерархия.
Уровни кэша процессора — L1, L2 и L3
Веся кэш память процессора разделена на три уровни: L1, L2 и L3. Эта иерархия тоже основана на скорости работы кэша, а также на его объеме.
- L1 Cache (кэш первого уровня) — это максимально быстрый тип кэша в процессоре. С точки зрения приоритета доступа, этот кэш содержит те данные, которые могут понадобиться программе для выполнения определенной инструкции;
- L2 Cache (кэш второго уровня процессора) — медленнее, по сравнению L1, но больше по размеру. Его объем может быть от 256 килобайт до восьми мегабайт. Кэш L2 содержит данные, которые, возможно, понадобятся процессору в будущем. В большинстве современных процессоров кэш L1 и L2 присутствуют на самих ядрах процессора, причём каждое ядро получает свой собственный кэш;
- L3 Cache (кэш третьего уровня) — это самый большой и самый медленный кэш. Его размер может быть в районе от 4 до 50 мегабайт. В современных CPU на кристалле выделяется отдельное место под кэш L3.
На данный момент это все уровни кэша процессора, компания Intel пыталась создать кэш уровня L4, однако, пока эта технология не прижилась.
Для чего нужен кэш в процессоре?
Пришло время ответить на главный вопрос этой статьи, на что влияет кэш процессора? Данные поступают из ОЗУ в кэш L3, затем в L2, а потом в L1. Когда процессору нужны данные для выполнения операции, он пытается их найти в кэше L1 и если находит, то такая ситуация называется попаданием в кэш. В противном случае поиск продолжается в кэше L2 и L3. Если и теперь данные найти не удалось, выполняется запрос к оперативной памяти.
Теперь мы знаем, что кэш разработан для ускорения передачи информации между оперативной памятью и процессором. Время, необходимое для того чтобы получить данные из памяти называется задержкой (Latency). Кэш L1 имеет самую низкую задержку, поэтому он самый быстрый, кэш L3 — самую высокую. Когда данных в кэше нет, мы сталкиваемся с еще более высокой задержкой, так как процессору надо обращаться к памяти.
Раньше, в конструкции процессоров кєши L2 и L3 были были вынесены за пределы процессора, что приводило к высоким задержкам. Однако уменьшение техпроцесса, по которому изготавливаются процессоры позволяет разместить миллиарды транизисторов в пространстве, намного меньшем, чем раньше. Как результат, освободилось место, чтобы разместить кэш как можно ближе к ядрам, что ещё больше уменьшает задержку.
Как кэш влияет на производительность?
Влияние кэша на произвоидтельность компьютера напрямую зависит от его эффективности и количества попаданий в кэш. Ситуации, когда данных в кэше не оказывается очень сильно снижают общую производительность.
Представьте, что процессор загружает данные из кэша L1 100 раз подряд. Если процент попаданий в кэш будет 100%, процессору понадобиться 100 наносекунд чтобы получить эти данные. Однако, как только процент попаданий уменьшится до 99%, процессору нужно будет извлечь данные из кэша L2, а там уже задержка 10 наносекунд. Получится 99 наносекунд на 99 запросов и 10 наносекунд на 1 запрос. Поэтому уменьшение процента попаданий в кэш на 1% снижает производительность процессора 10%.
В реальном времени процент попаданий в кэш находится между 95 и 97%. Но как вы понимаете, разница в производительности между этими показателями не в 2%, а в 14%. Имейте в виду, что в примере, мы предполагаем, что прощенные данные всегда есть в кэше уровня L2, в реальной жизни данные могут быть удалены из кэша, это означает, что их придется получать из оперативной памяти, у которой задержка 80-120 наносекунд. Здесь разница между 95 и 97 процентами ещё более значительная.
Низкая производительность кэша в процессорах AMD Bulldozer и Piledriver была одной из основных причин, почему они проигрывали процессорам Intel. В этих процессорах кэш L1 разделялся между несколькими ядрами, что делало его очень не эффективным. В современных процессорах Ryzen такой проблемы нет.
Можно сделать вывод, чем больше объем кэша, тем выше производительность, поскольку процессор сможет получить в большем количестве случаев нужные ему данные быстрее. Однако, стоит обращать внимание не только на объем кэша процессора, но и на его архитектуру.
Выводы
Теперь вы знаете за что отвечает кэш процессора и как он работает. Дизайн кэша постоянно развивается, а память становится быстрее и дешевле. Компании AMD и Intel уже провели множество экспериментов с кэшем, а в Intel даже пытались использовать кэш уровня L4. Рынок процессоров развивается куда быстрее, чем когда-либо. Архитектура кэша будет идти в ногу с постоянно растущей мощностью процессоров.
Кроме того, многое делается для устранения узких мест, которые есть у современных компьютеров. Уменьшение задержки работы с памятью одна из самых важных частей этой работы. Будущее выглядит очень многообещающе.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Что такое кэш память L3?
- Подробности
-
мая 23, 2017 -
Просмотров: 9806
Уровень 3 или кэш L3 специализированная память, которая работает рука об руку с кэшем L1 и L2 для улучшения производительности компьютера. L1, L2 и L3 кэш необходимы для блока компьютерной обработки (процессора), есть также и другие типы кэша в системе, такие как кэш жёсткого диска.
Процессорный кэш позволяет удовлетворять потребности микропроцессора, предвосхищая запросы о предоставлении данных, так что инструкции по обработке предоставляются без задержки. Кэш процессора работает быстрее, чем оперативная память (ОЗУ), и предназначен для предотвращения узких мест в потере производительности.
При запросе системы процессору требуется инструкция для выполнения этой просьбы. Процессор работает во много раз быстрее, чем оперативная память, поэтому, чтобы сократить задержки, кэш L1 хранит данные, и он ожидает, что они будут необходимы. L1 кэш очень маленький, что позволяет ему быть очень быстрым. Если инструкции нет в кэш-памяти L1, ЦП проверяет кэш L2, немного больший пул кэш, с немного большей задержкой. При каждом промахе кэша он смотрит на следующий уровень кэша. Кэш-память L3 может быть гораздо больше, чем L1 и L2, и хотя она и медленнее, но всё-таки много быстрее, чем извлечение данных из памяти.
Если нужны инструкции которые находятся в кэше L3, биты данных могут быть перемещены из кэша L1 в новые инструкции на случай, если они понадобятся снова. Кэш-память L3 может тогда удалить эту строку из инструкции, так как она сейчас находится в другой кэш-памяти (называется эксклюзивный кэш), или она может создать копии (именуемые инклюзивный кэш), в зависимости от конструкции процессора.
Например, в ноябре 2008 года компания AMD® выпустила четырехъядерный чип Шанхай. Каждое ядро имеет свой собственный L1 и L2 кэш, но ядра используют общий кэш L3. L3 сохраняет копии запрошенных элементов в случае если другие ядра делает последующий запрос.
Архитектура многоуровневого кэша продолжает развиваться. Кэш L1 используется, чтобы быть внешним для процессора, встроенный в материнскую плату, но теперь оба L1 и L2 кэш, обычно включены в матрицу процессора. Кэш-память L3, как правило, встроена в материнскую плату, но в некоторых моделях ЦП его уже включили как кэш-память L3. Преимущество иметь на борту кэш-память заключается в том, что это быстрее, эффективнее и дешевле, чем размещение отдельной кэш-памяти на материнской плате.
Выборки инструкций из кэша происходят быстрее, чем из системы оперативной памяти, и хорошая кэш-память существенно увеличивает производительность системы. Дизайн и стратегии кэша будут отличаться на различных материнских платах и процессорах, но при прочих равных, чем больше кэш L3, тем лучше.
Читайте также
AMD показала простой способ увеличения кеша для своих процессоров
В рамках выставки Computex 2021 компания AMD показала необычный Ryzen 9 5900X. Его отличие заключалось в том, что он содержал дополнительную микросхему SRAM объёмом 64 МБ, которая выступала в качестве дополнительной кеш-памяти L3.
В данном случае нам демонстрировали, конечно, не микросхему, а технологию, благодаря которой такой улучшенный процессор смог появиться. Речь о трёхмерной компоновке, позволившей добавить микросхему сверху процессорного чиплета, а также технологии гибридного соединения V-Cache, которая отвечает за объединение и ускорение суммарной кеш-памяти L3, которая получается при соединении внешней микросхемы с внутренним кешем процессора. К слову, общая пропускная способность кеш-памяти третьего уровня в таком случае повышается до 2 ТБ/с, что даже быстрее кеш-памяти первого уровня, хотя задержки будут выше.
Судя по всему, у серийных продуктов такой кеш будет лишь в случае топовых моделей. В частности, для CPU с 12 и 16 ядрами речь идёт о 64 МБ такой кеш-памяти для каждого чиплета, то есть суммарно о 192 МБ кеш-памяти третьего уровня (включая 64 МБ собственной памяти)!
Имеет ли это смысл? Если верить AMD, как минимум в играх это должно обеспечивать хороший прирост производительности.
Компания говорит в среднем о 15% прироста, но с разбросом от 4% до 25%. Как будут вести себя приложения, покажут тесты.
Самое важное, что речь идёт не просто о какой-то технологии, которая дебютирует когда-нибудь в будущем — AMD собирается запустить в производство соответствующие процессоры уже в конце текущего года. Но при этом такая дополнительная кеш-память будет лишь у топовых CPU как минимум из-за необходимости тратить на это немало кремния полупроводниковых пластин, который сейчас и так в большом дефиците.
AMD 3D Chiplet Technology: A packaging breakthrough for high-performance computing.
— AMD (@AMD) June 1, 2021
Также пока открыт вопрос того, в рамках какой линейки мы увидим такие CPU. Но слухи говорят о выходе осенью процессоров Ryzen 6000 с архитектурой Zen 3+, и они вполне подходят. К тому же, в этом случае обновлённые процессоры будут достаточно сильно отличаться от текущих.
Кэш-память L3 как зеркало производительности процессора AMD EPYC Rome
Оценивая быстродействие кэш-памяти третьего уровня, реализованной на кристалле процессора AMD EPYC 7452, мы столкнулись с ситуацией, требующей детального рассмотрения. Прежде чем, заняться ее анализом, изучим особенности организации L3-кэш у семейства процессоров EPYC Rome, разработанных с использованием архитектуры Zen 2.
Собственно, L3 не является составной частью архитектуры процессорного ядра Zen 2. Классический подход к разработке современных процессоров общего назначения ограничивает возможности ядра кэш-памятью первого и второго уровней. Но Zen 2 на третьем уровне для кэширования инструкций и данных формует сущность CCX (Compute Complex), в которую может быть погружено 4 процессорных ядра. Они совместно используют блок кэш-памяти L3 объемом 16 МБ. Пара таких комплексов составляет чиплет CCD — замечательное изобретение AMD. Всего может быть до 8 таких чиплетов, что дает основание говорить о наличии максимум 256 МБ кэш-памяти L3.
В случае 32-ядерного EPYC 7452, в основе которого лежат 4 чиплета CCD, кэш-память третьего уровня ограничена 128 мегабайтами.
Топологическая иерархия AMD Rome
Анализируем CPUID
Исходя из сказанного, чисто теоретически, в распоряжении одного ядра может находиться не более 16 МБ L3, а в условиях реальной эксплуатации — и того меньше. Проверим вышесказанное, с помощью утилиты Java CPUID.
Параметры комплекса CCX согласно результатам выполнения инструкции CPUID, функция 8000001Dh
CPUID функция 8000001Dh позволяет получить информацию о кэш-памяти одного комплекса CCX. Каждое его ядро оснащено L1-кэшем для инструкций и данных объемом по 32 килобайта каждый; объем кэш-памяти L2 составляет 512 килобайт. При этом L1 и L2 являются ресурсами приватными для каждого из ядер. Заметим, что места в L1-кэш для инструкций в процессорах второго поколения AMD EPYC выделено в два раза меньше, чем было в первом поколении этих серверных чипов.
Параметр Max. logical CPUs sharing this cache для L1 и L2 равен двум — это количество логических процессоров, совместно использующих L1 и L2, что с учетом технологии SMT означает: два логических CPU соответствуют одному ядру. Для L3-кэш этот параметр равен 8 — количество ядер, совместно использующих блок L3, равно 4.
Суммарный объем кэш-памяти L3 на одно процессорное гнездо (согласно CPUID функции 80000006h)
Чтобы определить полный объем L3 для процессора, воспользуемся CPUID функцией 80000006h. Эта величина составляет 128 MB — топология L3 представлена восемью кластерами по 16 MB. Данные CPUID функции 8000001Dh говорят о том, что ассоциативность L3 (Ways of associativity) равна 16. На скриншоте функции 80000006h значение L3 Unified Cache Associativity находится в состоянии Reserved, что следует из официальной документации.
Обратим также внимание на параметр L2 data TLB for 4KB pages number of entries, который равен 800h, что в десятичном представлении дает 2048; он нам понадобится позже.
До сих пор считалось, что 16-вариантной ассоциативности соответствует значение битового поля EDX.[15-12], равное 8. В нашем случае CPUID возвращает 9, что может означать или запаздывание в документации, или особое архитектурное решение.
Из маркетинговых материалов AMD следует, что латентность L3 в процессорах семейства EPYC 7002 обусловлена временем, соответствующим 40 процессорным тактам (для предыдущего семейства Naples это значение было несколько ниже — латентность L3-кэш составляла 35 тактов), что хорошо согласуется с данными, полученными в ходе эксперимента.
Измерение латентности в этом эксперименте основано на идее использования прочитанных данных в качестве адреса для следующего чтения. При этом подавляются спекулятивные способности CPU, поскольку невозможно опережающее выполнение следующего чтения, искажающее результат. Процесс связан с доступом к фрагментированным данным с рандомизацией адресов, поэтому каждая следующая операция с высокой вероятностью будет оперировать с новой страницей и потребует загрузки нового дескриптора в TLB. Метрики мы будем получать с помощью своего программного продукта, предназначенного для измерения производительности кэш и оперативной памяти — утилиты NUMA CPU and RAM Benchmark (сокращенно NCRB).
Про страницы, TLB и латентность L3-кэш
Как известно, механизм трансляции страниц (или paging) отображает виртуальное адресное пространство приложения на физическую память платформы. Каждая страница описывается дескриптором Page Table Entry (PTE). За кэширование таких дескрипторов отвечает блок Translation Lookaside Buffer (TLB).
Классическая схема, принятая еще во времена i386, гранулирует оперативную память четырех килобайтными страницами, что хотя и экономно, но связано с серьезными накладными расходами в современных условиях. Сегодня доступен и один из продвинутых способов — гранулярность «большими страницами», размером в 2 МБ. Выгоды от его использования очевидны: в большинстве приложений растет эффективность операций с ОЗУ.
Терминологическое уточнение
В нашем эксперименте ОС предоставляет, а бенчмарк NCRB использует большие страницы, формируемые путем пропуска одного подкаталога страниц (PTE), действующего на последней стадии трансляции линейного адреса в физический. Высвобождаемые при этом адресные биты становятся частью адреса байта внутри страницы. В процессорной архитектуре x64 (а также в IA32 + PAE) это увеличивает размер страницы до 2 MB, в IA32 это увеличивает размер страницы до 4 MB. Как сказано выше, стандартные страницы со времен процессора i386, всегда имеют размер 4 KB.
Буфер ассоциативной трансляции
И хотя польза от «больших страниц» иногда сомнительна, с переходом в режим Large Pages размер адресуемой области увеличивается с 4 KB (Normal Pages) до 2 MB (Large Pages), а количество выделенных для этого дескрипторов пропорционально уменьшается. В результате снижается нагрузка на TLB — один из важнейших уровней кэш-памяти, который смело можно назвать «серым кардиналом» производительности. Рассмотрим влияние буфера ассоциативной трансляции на латентность кэш-памяти L3-уровня в процессоре EPYC 7452.
TLB и латентность L3-кэш
Вернувшись к иллюстрации результатов функции CPUID 80000006h, приведенной в начале статьи, обратим внимание на L2 data TLB for 4KB pages number of entries. Согласно CPUID, объем буфера ассоциативной трансляции, кэширующего дескрипторы страниц, составляет 800h = 2048 элементов. Они позволяют адресовать «нормальными» 4 KB страницами диапазон памяти в 2048 * 4KB = 8192K = 8MB.
Размер кластера L3-кэша, обслуживающего 4 процессорных ядра CCX, вдвое превышает эту границу. Выполним однопоточное тестирование латентности L3, чтобы оценить зависимость этого параметра от способа трансляции страниц оперативной памяти.
На графиках латентности меньшие значения соответствуют бо́льшей производительности
Зависимость латентности однопоточного доступа от объема обрабатываемого блока в окрестности общего пространства L3 = 16MB одного кластера CCX в режиме Normal Pages
Логично предположить, что на графике латентности L3 в режиме 4KB страниц, точка перегиба при X = 8 MB вызвана исчерпанием L2 Data TLB, это приводит к TLB-промахам и необходимости читать дескрипторы из ОЗУ, что, очевидно, займет значительно больше тактов, чем получение их из TLB. Далее, в окрестности X = 16 MB происходит исчерпание объема кластера L3, что также сопровождается точкой перегиба.
Зависимость латентности однопоточного доступа от объема обрабатываемого блока в окрестности общего пространства L3 = 16MB одного кластера CCX в режиме Large Pages
В данном примере использование Large Pages почти нивелирует влияние фактора TLB на результат теста. Что и понятно: «большие страницы» позволяют адресовать диапазон памяти в 2048 * 2MB = 4096MB = 4GB, хотя при этом в исследуемом процессоре количество элементов L2 TLB для обычных и больших страниц совпадает.
В силу особенностей страничной трансляции, при расчетах объемов данных, вызывающих переполнение TLB, ключевое значение имеет не размер собственно дескриптора страницы, а размер диапазона памяти, доступ к которому обеспечивает один дескриптор.
Пропускная способность L3-кэш
В отличие от латентности пропускная способность измеряется на операциях с достаточно большими и непрерывными блокам данных. Здесь, один раз попав на страницу, бенчмарк гарантированно прочитает или запишет (в зависимости от типа теста) весь объем страницы, прежде чем перейти к следующей.
Сказанное означает, что частота промахов TLB в тестах пропускной способности должна быть ниже, чем в тестах латентности, значит, к фактору Large Pages измерения латентности должны быть более чувствительны, чем измерения пропускной способности.
На графиках пропускной способности бо́льшие значения соответствуют бо́льшей производительности
Зависимость однопоточной скорости чтения от объема обрабатываемого блока в окрестности общего пространства L3 = 16MB одного кластера CCX в режиме Normal Pages
Зависимость однопоточной скорости чтения от объема обрабатываемого блока в окрестности общего пространства L3 = 16MB одного кластера CCX в режиме Large Pages
Вместе с тем, опыт продемонстрировал, что оба показателя (латентность и пропускная способность) не лишены влияния фактора TLB. Заметим, что в силу специфики нашего примера читаемый блок помещается в кэш-память исследуемого уровня (объемом 16MB), а картирующий контекст, необходимый для обслуживания операции чтения в режиме 4KB страниц не помещается в TLB (объем которого позволяет адресовать диапазон размером 8MB).
Подводя итоги
В ситуации, когда процессорные ядра достигли частотного порога насыщения, а их количество напрямую не может определять производительность всего вычислительного комплекса, решающее значение имеет оснащение CPU умными алгоритмами, где не последнее место отводится алгоритмам кэширования. В процессорах семейства AMD Rome кроме приватных кэш-ресурсов L1 и L2 на первых ролях агрегирований L3-кэш. Его задача — обеспечить производительность CCX-кластера в частности и всего процессора в целом, а также снизить нагрузку на подсистему DRAM, обслуживаемую отдельным кристаллом I/O Hub.
Проведенный эксперимент продемонстрировал зависимость даже в однопоточном режиме пропускной способности и латентности L3 от механизма трансляции линейного адреса в физический. Стоит предполагать, что при мультипоточном использовании L3 задержки при доступе к этому разделяемому ресурсу быстродействующей памяти будут нарастать.
В основе обнаруженного феномена — зависимость от объема и организации буфера ассоциативной трансляции. Нетрудно заметить, что ситуация, при которой данные обрабатываемого блока помещаются в кэш-памяти, а картирующий контекст, необходимый для трансляции его страниц не помещается в TLB (в режиме 4K страниц), характерна для блоков, объем которых сравним с объемом L3. В этой ситуации роль TLB становится критически важной. Протестированный процессор AMD EPYC 7452 32-Core доказал это.
Как следует из графиков латентности, в режиме Large Pages имеет место полуторакратное снижение величины задержки при доступе к L3 при объеме блока X=16MB. Этот факт заслуживает внимания разработчиков коммерческого программного обеспечения, ответственно относящихся к оптимизации кода — сценарий нашего синтетического теста моделирует доступ к фрагментированным данным. Несмотря на все сложности внедрения «больших страниц», их использование в прикладных задачах (системы управления базами данных и т.п.) выглядит оправдано с точки зрения борьбы за каждую наносекунду процессорного времени.
Как работает CPU Cache и что такое L1, L2 и L3?
Компьютерные процессоры значительно продвинулись за последние несколько лет, размер транзисторов с каждым годом уменьшается, а достижения достигают точки, когда закон Мура быстро становится излишним.
Что касается процессоров, то учитываются не только транзисторы и частоты, но и кэш.
Возможно, вы слышали о кэш-памяти, когда обсуждаются процессоры (центральные процессоры). Тем не менее, мы не обращаем слишком много внимания на эти цифры, и при этом они не являются основной изюминкой этих процессоров.
Итак, насколько важен кэш процессора и как он работает?
Что такое кэш процессора?
Проще говоря, кеш — это просто очень быстрый тип памяти. Как вы, возможно, знаете, компьютер имеет несколько типов памяти. Существует основное хранилище, такое как жесткий диск или твердотельный накопитель, на котором хранится большая часть данных — операционная система и все программы.
Далее у нас есть оперативная память, обычно известная как RAM. Это намного быстрее, чем основное хранилище.
Наконец, процессор имеет даже более быстрые блоки памяти внутри себя, которые мы называем кешем.
Память в компьютере имеет иерархию, основанную на скорости, и кеш стоит на вершине этой иерархии, будучи самым быстрым. Он также ближе всего к центральному процессору, являясь частью самого ЦП.
Кэш-память — это статическая память (SRAM) по сравнению с системной памятью, которая является динамической памятью (DRAM). Статическая RAM — это та, которая может хранить данные без необходимости постоянного обновления, в отличие от DRAM, что делает SRAM идеальным для использования в кэш-памяти.
Как работает CPU Cache?
Как вы, возможно, уже знаете, программа разработана в виде набора инструкций для запуска процессором. Когда вы запускаете программу, эти инструкции должны пройти путь от основного хранилища до ЦП. Это где иерархия памяти вступает в игру.
Сначала данные загружаются в ОЗУ, а затем отправляются в ЦП. В наши дни процессоры способны выполнять огромное количество инструкций в секунду. Чтобы в полной мере использовать свою мощность, ЦПУ необходим доступ к сверхбыстрой памяти. Это где кеш приходит.
Контроллер памяти выполняет работу по извлечению данных из ОЗУ и отправке их в кэш. В зависимости от того, какой процессор находится в вашей системе, этот контроллер может быть либо на чипсете северного моста на материнской плате, либо внутри самого процессора.
Кеш затем выполняет перемотку данных внутри ЦП. Иерархия памяти существует и в кеше.
(Если вам интересно узнать, как работает сам ЦП, ознакомьтесь с нашей статьей, объясняющей основы работы ЦП.
.)
Уровни кэша: L1, L2 и L3
Кэш процессора разделен на три основных уровня: L1, L2 и L3. Иерархия здесь опять-таки в соответствии со скоростью и, следовательно, размером кэша.
Кэш-память L1 (уровня 1) — самая быстрая память, присутствующая в компьютерной системе. С точки зрения приоритета доступа, кэш L1 содержит данные, которые ЦПУ, скорее всего, понадобятся при выполнении определенной задачи.
Что касается размера, кэш L1 обычно занимает до 256 КБ. Тем не менее, некоторые действительно мощные процессоры теперь принимают его около 1 МБ. Некоторые серверные чипсеты (например, топовые процессоры Intel Xeon) теперь имеют где-то 1-2 МБ кэш-памяти первого уровня.
Кэш L1 также обычно разделяется двумя способами: на кэш команд и кэш данных. Кэш команд имеет дело с информацией об операции, которую должен выполнить ЦП, в то время как кэш данных содержит данные, над которыми должна быть выполнена операция.
Изображение предоставлено Intel
Кэш L2 (уровень 2) медленнее, чем кэш L1, но больше по размеру. Его размер обычно варьируется от 256 КБ до 8 МБ, хотя более новые и мощные процессоры, как правило, выходят за рамки этого. Кэш второго уровня содержит данные, которые, вероятно, будут доступны для ЦП в следующий раз. В большинстве современных процессоров кэши L1 и L2 присутствуют на самих ядрах процессора, причем каждое ядро получает свой собственный кэш.
Кэш-память третьего уровня (уровень 3) является самой большой кэш-памятью, а также самой медленной. Он может варьироваться от 4 до 50 МБ. Современные ЦП имеют выделенное пространство на кристалле ЦП для кеша L3, и оно занимает большую часть пространства.
Кэш Хит или Мисс и Латентность
Данные поступают из ОЗУ в кэш L3, затем в L2 и, наконец, в L1. Когда процессор ищет данные для выполнения операции, он сначала пытается найти их в кэше L1. Если процессор может его найти, условие называется попаданием в кэш. Затем он находит его в L2, а затем в L3.
Если он не находит данные, он пытается получить к ним доступ из основной памяти. Это называется пропуском кеша.
Теперь, как мы знаем, кэш предназначен для ускорения передачи информации между основной памятью и процессором. Время, необходимое для доступа к данным из памяти, называется задержкой. L1 имеет самую низкую задержку, будучи самой быстрой и ближайшей к ядру, а L3 имеет самую высокую. Задержка значительно возрастает при пропадании кэша. Это потому, что процессор должен получать данные из основной памяти.
Поскольку компьютеры становятся все быстрее и лучше, мы наблюдаем уменьшение задержки. Теперь у нас есть оперативная память DDR4 с низкой задержкой и сверхбыстрые твердотельные накопители с низким временем доступа в качестве основного хранилища, которые значительно сокращают общую задержку. Если вы хотите узнать больше о том, как работает RAM, вот наш быстрый и грязный путеводитель по RAM
,
Ранее в конструкциях кешей использовались кэши L2 и L3 вне ЦП, что отрицательно сказывалось на задержке.
Однако прогресс в процессах изготовления, связанных с транзисторами ЦП, позволил разместить миллиарды транзисторов в меньшем пространстве, чем раньше. В результате для кеша остается больше места, что позволяет кешу быть как можно ближе к ядру, значительно сокращая время ожидания.
Будущее Кеша
Дизайн кэша постоянно развивается, особенно когда память становится дешевле, быстрее и плотнее. Intel и AMD внесли свою долю экспериментов с дизайном кеша, а Intel даже экспериментировала с кешем L4. Рынок процессоров движется вперед быстрее, чем когда-либо.
При этом мы обязательно увидим, как дизайн кэша идет в ногу с постоянно растущей мощностью процессоров.
Кроме того, многое делается для устранения узких мест, которые есть у современных компьютеров. Уменьшение задержки памяти, пожалуй, самая большая ее часть. Отрасль работает над решениями для того же самого, и будущее выглядит действительно многообещающим.
Возможно, вы даже слышали о Intel Optane, который можно использовать как своего рода гибридный внешний кэш. Если вы этого не сделали, ознакомьтесь с нашей статьей, в которой рассматриваются потенциальные приложения Intel Optane.
,
Кэш
L2 и L3: в чем разница?
Этот сайт может получать партнерские комиссии за ссылки на этой странице. Условия эксплуатации.
У процессоров
есть несколько уровней кэширования. Мы обсуждали структуры кэша в целом в нашем объяснении L1 и L2, но мы не уделили так много времени обсуждению того, как работает L3 или чем он отличается от кеша L1 или L2.
На простейшем уровне кэш L3 — это просто более крупная, более медленная версия кеша L2. Раньше, когда большинство чипов были одноядерными, это в целом было правдой. Первые кэши L3 были фактически построены на самой материнской плате, подключенной к процессору через заднюю шину (в отличие от передней шины). Когда AMD выпустила семейство процессоров K6-III, многие существующие материнские платы K6 / K-2 могли также принять K6-III. Обычно на этих платах было от 512 КБ до 2 МБ кэш-памяти второго уровня — когда был вставлен K6-III со встроенным кешем второго уровня, эти более медленные кэши на базе материнских плат стали вместо этого кэш-памятью L3.
К началу века установка дополнительного кэша L3 на чипе стала простым способом повышения производительности — первым ориентированным на потребителя процессором Pentium 4 Extreme Edition от Intel был перепрофилированный Gallatin Xeon с 2 МБ L3 на кристалле. Добавление этого кэша было достаточным, чтобы купить Pentium 4 EE на 10-20 процентов прироста производительности по сравнению со стандартной линейкой Northwood.
Кэш и многоядерный Curveball
По мере того, как многоядерные процессоры стали более распространенными, кэш L3 стал чаще появляться на потребительском оборудовании.Эти чипы, такие как Intel Nehalem и AMD K10 (Barcelona), использовали L3 как нечто большее, чем просто более крупную и медленную опору для L2. В дополнение к этой функции, кэш L3 часто используется совместно всеми процессорами на одном кристалле. В этом отличие от кешей L1 и L2, которые, как правило, являются частными и предназначены для нужд каждого конкретного ядра. (Конструкция AMD Bulldozer является исключением — Bulldozer, Piledriver и Steamroller используют общий кэш инструкций L1 между двумя ядрами в каждом модуле).Процессоры AMD Ryzen, основанные на ядрах Zen, Zen + и Zen 2, имеют общий L3, но структура модулей AMD CCX оставила ЦП функционирующим так, как будто у него было 2 кэша L3 по 8 МБ, по одному для каждого кластера CCX, а не один большой , унифицированный кэш L3, как у стандартных процессоров Intel.
Изменения топологии Zen 2 — Zen 3. Этот слайд взят из презентации AMD Ryzen Mobile 5000, но сдвиг произошел и на настольных компьютерах.
Частные кэши L1 / L2 и общий L3 — вряд ли единственный способ разработать иерархию кешей, но это общий подход, принятый несколькими поставщиками.Предоставление каждому отдельному ядру выделенных L1 и L2 сокращает задержки доступа и снижает вероятность конфликта кешей — это означает, что два разных ядра не будут перезаписывать важные данные, которые другое размещает в одном месте, в пользу своей собственной рабочей нагрузки. Общий кэш L3 медленнее, но намного больше, что означает, что он может хранить данные для всех ядер одновременно. Сложные алгоритмы используются, чтобы гарантировать, что Core 0 стремится хранить информацию, ближайшую к себе, в то время как Core 7 через кристалл также помещает необходимые данные ближе к себе.
В отличие от L1 и L2, которые почти всегда ориентированы на ЦП и являются частными, L3 также может использоваться совместно с другими устройствами или возможностями. Процессоры Intel Sandy Bridge использовали кэш L3 объемом 8 МБ совместно с встроенным графическим ядром (Ivy Bridge предоставил графическому процессору собственный выделенный фрагмент кеша L3 вместо всех 8 МБ). В документации Intel Tiger Lake указано, что кэш встроенного процессора может также функционировать как LLC для графического процессора.
В отличие от кешей L1 и L2, оба из которых обычно являются фиксированными и различаются очень незначительно (и в основном для бюджетных компонентов), AMD и Intel предлагают разные чипы со значительно различающимся объемом L3.Intel обычно продает по крайней мере несколько процессоров Xeon с меньшим количеством ядер, более высокими частотами и более высоким соотношением кэш-памяти L3 на процессор. AMD Epyc 7F52 сочетает в себе полную кэш-память третьего уровня объемом 256 МБ всего с 16 ядрами и 32 потоками.
Сегодня L3 характеризуется как пул быстрой памяти, общей для всех процессоров на SoC. Он часто блокируется независимо от остального ядра ЦП и может быть динамически разделен для баланса скорости доступа, энергопотребления и емкости хранилища. Хотя он и не так быстр, как L1 или L2, он часто более гибкий и играет жизненно важную роль в управлении межъядерным взаимодействием.Также нередко можно увидеть, что кеш-память L3 используется как LLC, совместно используемая ЦП и графическим процессором, или даже появляется огромный кеш-память L3, всплывающая на графических картах, таких как архитектура AMD RDNA2.
Прочитано :
Как работает кэш ЦП? Что такое кэш L1, L2 и L3?
Компьютерные процессоры в последние годы значительно продвинулись вперед. Транзисторы становятся меньше с каждым годом, и достижения достигают точки, когда закон Мура становится излишним.
Когда дело доходит до процессоров, важны не только транзисторы и частоты, но и кэш.
Возможно, вы слышали о кэш-памяти, когда обсуждались процессоры (центральные процессоры).Однако мы не уделяем достаточно внимания этим номерам кэш-памяти ЦП, и они не являются основным моментом в рекламе ЦП.
Итак, насколько важен кеш ЦП и как он работает?
Что такое кэш-память процессора?
Проще говоря, кэш памяти ЦП — это просто действительно быстрый тип памяти.На заре вычислений скорость процессора и скорость памяти были низкими. Однако в 80-е годы скорость процессоров начала быстро расти. В то время системная память (ОЗУ) не могла справиться с растущими скоростями ЦП или соответствовать им, и поэтому родился новый тип сверхбыстрой памяти: кэш-память ЦП.
Теперь ваш компьютер имеет внутри несколько типов памяти.
Существует первичное хранилище, такое как жесткий диск или твердотельный накопитель, в котором хранится основная часть данных — операционная система и программы.
Затем у нас есть оперативная память, обычно известная как ОЗУ.Это намного быстрее, чем основное хранилище, но это только краткосрочный носитель. Ваш компьютер и программы на нем используют оперативную память для хранения часто используемых данных, помогая выполнять действия на вашем компьютере аккуратно и быстро.
Наконец, ЦП имеет внутри себя даже более быстрые блоки памяти, известные как кэш памяти ЦП.
Компьютерная память имеет иерархию, основанную на ее скорости работы.Кэш ЦП находится на вершине этой иерархии, будучи самым быстрым. Он также находится ближе всего к тому месту, где происходит центральная обработка, поскольку является частью самого ЦП.
Компьютерная память также бывает разных типов.
Кэш-память — это форма статической ОЗУ (SRAM), в то время как обычная системная оперативная память известна как динамическая оперативная память (DRAM).Статическая RAM может хранить данные без необходимости постоянного обновления, в отличие от DRAM, что делает SRAM идеальным для кэш-памяти.
Как работает кэш ЦП?
Программы и приложения на вашем компьютере представляют собой набор инструкций, которые процессор интерпретирует и выполняет.Когда вы запускаете программу, инструкции передаются из основного хранилища (вашего жесткого диска) в ЦП. Здесь в игру вступает иерархия памяти.
Данные сначала загружаются в ОЗУ, а затем отправляются в ЦП.В наши дни процессоры способны выполнять огромное количество инструкций в секунду. Чтобы в полной мере использовать свою мощность, ЦП необходим доступ к сверхбыстрой памяти, в которой задействован кеш ЦП.
Контроллер памяти берет данные из ОЗУ и отправляет их в кэш ЦП.В зависимости от вашего процессора, контроллер находится на процессоре или на чипсете северного моста на вашей материнской плате.
Затем кэш памяти выполняет обмен данными внутри ЦП.Иерархия памяти существует и в кеш-памяти ЦП.
По теме: что такое процессор и для чего он нужен?
Уровни кэш-памяти ЦП: L1, L2 и L3
Кэш-память ЦП разделена на три «уровня»: L1, L2 и L3.Иерархия памяти снова соответствует скорости и, следовательно, размеру кеша.
Итак, влияет ли размер кеш-памяти ЦП на производительность?
Кэш L1
Кэш L1 (уровень 1) — это самая быстрая память, которая присутствует в компьютерной системе.Что касается приоритета доступа, кэш L1 содержит данные, которые, скорее всего, потребуются ЦП при выполнении определенной задачи.
Размер кеша L1 зависит от процессора.Некоторые топовые потребительские процессоры теперь имеют кэш-память L1 объемом 1 МБ, например Intel i9-9980XE, но они стоят огромных денег и их все еще мало. Некоторые серверные чипсеты, такие как линейка Intel Xeon, также имеют кэш-память L1 объемом 1-2 МБ.
Не существует «стандартного» размера кеш-памяти L1, поэтому перед покупкой необходимо проверить спецификации ЦП, чтобы определить точный размер кеш-памяти L1.
Кэш L1 обычно делится на две части: кэш инструкций и кэш данных.Кэш инструкций имеет дело с информацией об операции, которую должен выполнить ЦП, в то время как кэш данных содержит данные, над которыми операция должна быть выполнена.
Кэш L2
Кэш L2 (уровень 2) медленнее, чем кеш L1, но больше по размеру.Если кэш L1 может измеряться в килобайтах, современные кеши памяти L2 измеряются в мегабайтах. Например, у AMD Ryzen 5 5600X с высоким рейтингом есть кэш L1 384 КБ и кэш L2 3 МБ (плюс кэш L3 32 МБ).
Размер кэша L2 зависит от процессора, но обычно его размер составляет от 256 КБ до 8 МБ.Большинство современных процессоров имеют кэш L2 размером более 256 КБ, и теперь этот размер считается небольшим. Кроме того, некоторые из самых мощных современных процессоров имеют больший объем кэш-памяти L2, превышающий 8 МБ.
Что касается скорости, кэш L2 отстает от кеша L1, но все же намного быстрее, чем ваша системная RAM.Кэш памяти L1 обычно в 100 раз быстрее, чем ваша оперативная память, а кэш L2 примерно в 25 раз быстрее.
Кэш L3
В кэш L3 (уровень 3).Раньше кеш-память L3 фактически находилась на материнской плате. Это было очень давно, когда большинство процессоров были одноядерными. Теперь кэш L3 в вашем процессоре может быть огромным, с топовыми потребительскими процессорами с кешами L3 до 32 МБ. Некоторые кэши L3 ЦП серверов могут превышать это значение, составляя до 64 МБ.
Кэш L3 является самым большим, но также и самым медленным блоком кэш-памяти.Современные процессоры включают кэш L3 на самом процессоре. Но в то время как кэш L1 и L2 существует для каждого ядра на самом чипе, кэш L3 больше похож на общий пул памяти, который может использовать весь чип.
На следующем изображении показаны уровни кэш-памяти ЦП для ЦП Intel Core i5-3570K:
Обратите внимание, как кэш L1 разделен на две части, а кеш L2 и L3 больше соответственно.
Сколько мне нужно кэш-памяти ЦП?
Хороший вопрос.Как и следовало ожидать, чем больше, тем лучше. Последние процессоры, естественно, будут включать в себя больше кэш-памяти ЦП, чем предыдущие поколения, а также потенциально более быструю кеш-память. Вы можете научиться эффективно сравнивать процессоры. Информации очень много, и изучение того, как сравнивать и сравнивать разные процессоры, может помочь вам принять правильное решение о покупке.
Как данные перемещаются между кешами памяти ЦП?
Большой вопрос: как работает кеш-память процессора?
Проще говоря, данные передаются из ОЗУ в кэш L3, затем в L2 и, наконец, в L1.Когда процессор ищет данные для выполнения операции, он сначала пытается найти их в кэше L1. Если ЦП находит это, состояние называется попаданием в кэш. Затем он переходит к поиску в L2, а затем в L3.
Если ЦП не находит данные ни в одном из кешей памяти, он пытается получить к ним доступ из системной памяти (ОЗУ).Когда это происходит, это называется промахом кеша.
Теперь, как мы знаем, кэш предназначен для ускорения обмена информацией между основной памятью и процессором.Время, необходимое для доступа к данным из памяти, называется «задержкой».
Кэш-память L1 имеет наименьшую задержку, будучи самой быстрой и ближайшей к ядру, а L3 имеет наибольшую задержку.Задержка кеш-памяти увеличивается, когда происходит промах кеш-памяти, поскольку ЦП должен получить данные из системной памяти.
Задержка продолжает уменьшаться по мере того, как компьютеры становятся быстрее и эффективнее.ОЗУ DDR4 с низкой задержкой и сверхбыстрые твердотельные накопители сокращают время задержки, делая всю вашу систему быстрее, чем когда-либо. При этом также важна скорость вашей системной памяти.
Будущее кэш-памяти ЦП
Дизайн кэш-памяти постоянно развивается, особенно по мере того, как память становится дешевле, быстрее и плотнее.Например, одним из последних нововведений AMD является память Smart Access и Infinity Cache, которые повышают производительность компьютера.
драм противIntel: какой игровой процессор лучший?
Если вы создаете игровой ПК и разрываетесь между процессорами AMD и Intel, самое время узнать, какой процессор лучше всего подходит для вашей игровой системы.
Читать далее
Об авторе
Гэвин Филлипс
(Опубликовано 879 статей)
Гэвин — младший редактор отдела Windows and Technology Explained, постоянный автор Really Useful Podcast и регулярный обозреватель продуктов.У него есть степень бакалавра (с отличием) в области современного письма с использованием методов цифрового искусства, разграбленных на холмах Девона, а также более десяти лет профессионального писательского опыта. Он любит много пить чая, настольные игры и футбол.
Более
От Гэвина Филлипса
Подпишитесь на нашу рассылку новостей
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.
Кэш — это король
Разрыв между производительностью процессоров в широком смысле и производительностью основной памяти DRAM, также в широком смысле, был проблемой в течение как минимум трех десятилетий, когда разрыв действительно начал открываться. И отдавая должное там, где это необходимо, инженеры по аппаратному и программному обеспечению, которые создали иерархию кеша, и программное обеспечение, которое могло бы использовать это в своих интересах, были не чем иным, как блестящими.Это одна из самых причудливых архитектурных построек, когда-либо созданных людьми.
Но поскольку мы находимся на пороге постоянно расширяющейся иерархии памяти, постоянная память, такая как Optane 3D XPoint (вариант памяти с фазовым переходом), приходит в форм-факторы DIMM и SSD и новые протоколы, такие как CXL, OpenCAPI, CCIX, NVLink и Представлены поколения Z для последовательного связывания памяти процессора и ускорителя (симметрично или асимметрично), и мы задумались: не пора ли еще добавить кеши уровня 4 на серверы? С таким количеством различных устройств, которые свисают с комплекса ЦП — некоторые относительно близко, а некоторые относительно далеки — логично задаться вопросом, потребуется ли еще один уровень кэша, чтобы замаскировать задержки этих других воспоминаний и повысить общую пропускную способность системы.
Чтобы понять, что может быть возможным, мы покопались в собственных воспоминаниях, а также обратились к архитекторам серверных микросхем в IBM, Intel, AMD и Marvell, чтобы узнать, что они думают об использовании кеш-памяти L4. память в серверах. Кэш L4 ни в коем случае не является новой разработкой, но он также не является обычным явлением в системных архитектурах.
Но прежде чем мы перейдем к этому, уместно немного предыстории.
Добавление кэшей уровня 1 к процессорам, у которых тогда было только одно ядро, в конце 1980-х привело к компромиссу между добавлением общей задержки к подсистеме памяти в обмен на абсолютное снижение общей средней задержки для запросов данных и инструкций со стороны процессоры.Кеши L1 изначально были внешними SRAM, которые монтировались на материнских платах и подключались к комплексу CPU-памяти. Этот кэш L1 располагался очень близко как по тактовому времени, так и по пространству материнской платы к процессору, и означал, что ЦП мог быть загружен более загруженным, чем это было бы возможно в противном случае. В конце концов, эти кеши уровня 1 были разделены, чтобы в них можно было хранить часто используемые данные в одном блоке, а популярные инструкции — в другом, что помогло немного повысить производительность. В какой-то момент, когда тактовая частота процессора увеличилась, а разрыв между скоростью процессора и скоростью DRAM увеличился, в смесь были добавлены более толстые, но более медленные и дешевые (в расчете на бит или пропускную способность) кеши L2, снова сначала за пределами Пакет ЦП, а затем интегрированный в него.И когда к ЦП добавлялось все больше и больше ядер, а также больше контроллеров памяти DRAM для их питания, в иерархию добавлялись еще большие блоки кеш-памяти L3, чтобы эти ЦП получали питание.
По большей части это сработало довольно хорошо. И есть некоторые эмпирические правила, которые мы видим в большинстве конструкций ЦП, которые отражают уровни иерархии кеша при обработке, поскольку мы рассматриваем возможный четвертый.
Крис Джанос, разработчик микросхем и архитектор в Intel, который руководил разработкой многих прошлых поколений процессоров Xeon, объяснил это следующим образом: «С каждым уровнем кэша обычно нам нужно увеличивать их на разумную величину по сравнению с предыдущими. level, чтобы иметь смысл, потому что вам нужен достаточно интересный показатель попаданий, чтобы действительно заметно повлиять на производительность вашей системы.Если вы попадаете в кеш только в нескольких процентах случаев, это, вероятно, будет трудно заметить. Все остальное снижает вашу производительность, и вы не слишком сильно двигали стрелку. Итак, вам нужны относительно большие кеши, а когда вы говорите о более высоких уровнях, вам нужны действительно большие . В наши дни наши L2 измеряются в мегабайтах, а наши L3 — в десятках или сотнях мегабайт. Итак, ясно, что если вы начнете думать о кеш-памяти L4, вы, вероятно, получите сотни мегабайт, если не гигабайты.И поскольку они большие, их стоимость определенно вызывает беспокойство. Вы должны выложить достаточно, чтобы сделать это интересным, и это будет недешево «.
Архитекторы AMD, которые не хотели, чтобы их приписывали напрямую, потому что во время этого разговора они не хотели быть неверно истолкованными с AMD, обещавшей добавить кэш L4 в линейку процессоров Epyc — и, чтобы быть ясным, AMD имеет ничего такого не сказал . Но он признал, что это следующая очевидная вещь, о которой стоит подумать, и, как и Intel, считает, что каждый архитектор думает о кэшах L4, и поделился некоторыми своими мыслями на фоне.По сути, AMD заявляет, что компромисс между количеством слоев кеша и задержкой был хорошо изучен в промышленности и академических кругах, и что с каждым новым уровнем кеша, который больше, медленнее и шире используется, существует необходимый компромисс, который увеличивает общий путь к DRAM, потому что большинство проектов не будут постоянно спекулятивно обращаться к слоям кэша ниже по иерархии параллельно с поиском тегов кэша на верхних уровнях. Это именно то, о чем Intel также говорит выше, когда Джанос говорит, что вам нужно найти баланс между частотой обращений и емкостью кеша — и L4 ничем не отличается.
IBM, конечно же, добавила кэш L4 в некоторые из своих наборов микросхем X86 еще в 2000-х, а в 2010 году добавила кэш L4 в наборы микросхем межсоединения NUMA на своих мэйнфреймах System z11. У процессора z11 было четыре ядра, каждое с 64 КБ инструкций L1 и 128 КБ кэша данных L1, плюс 1,5 МБ кеш-памяти L2 на каждое ядро и 24 МБ общей кэш-памяти L3 для этих четырех ядер. Чипсет NUMA для z10 имел два банка по 96 МБ кэш-памяти L4, всего 192 МБ. В z12 IBM сократила кэш данных до 98 КБ на ядро, но увеличила кэш L2 на ядро до 2 МБ, разделив его на части команд и данных, как кэш L1; кэш L3 был увеличен вдвое до 48 МБ по шести ядрам на кристалле, а емкость кеша L4 была увеличена до 384 МБ для пары микросхем, реализованных на чипсете NUMA.На всех поколениях процессоров System z все кеши росли, и с появлением процессора z15, анонсированного в сентябре прошлого года, пара кешей L1 весит 128 КБ каждый, пара кешей L2 весит 4 МБ каждый, а общие Кэш L3 на 12 ядрах на кристалле составляет 256 МБ. Кэш L4 в ящике двигателей мэйнфреймов z15 имеет 960 МБ кэша L4 в наборе микросхем NUMA и в общей сложности 4,68 ГБ в системе с пятью ящиками, масштабируемой до 190 ядер.
Как мы уже указывали ранее, у процессоров Power8 и Power9 была буферизованная память, и IBM добавила блок кэш-памяти L4 размером 16 МБ в каждый буфер «Centaur», получив в общей сложности 128 МБ кеш-памяти L4 на сокет из 32 модулей памяти палочки.С Power9 машины начального уровня не имеют буферизованной памяти и, следовательно, не имеют кеш-памяти L4. Архитекторы, которые делали проекты Power10 и делают проекты Power11, были в крайний срок на этой неделе и не могли сесть по телефону, но Уильям Старк, который руководил Power10, в любом случае сэкономил немного времени, чтобы добавить эту мысль в микс. :
«В целом, мы обнаружили, что большие кэши последнего уровня обеспечивают значительную производительность для корпоративных рабочих нагрузок», — объяснил Старк в интервью The Next Platform по электронной почте.(Мы говорили со Старком еще в августе 2019 года о повышении пропускной способности комплекса основной памяти с помощью микросхем Power9 и Power10. «Отдельно высокая задержка, связанная с технологиями постоянного хранения, такими как память с изменением фазы, как правило, вызывает острую потребность для кэширования — возможно, типа L4 — в иерархии памяти классов хранения ».
Именно так мы думали. И, кстати, мы не предполагаем, что кэш L4 обязательно будет располагаться рядом с буферизованной памятью на будущих модулях DDR5 DIMM.Возможно, он лучше подходит между кэш-памятью PCI-Express и L3 на процессоре, а может быть, еще лучше, в буферах памяти и между шиной PCI-Express и кешем L3. Это может означать установку его поверх микросхемы концентратора контроллера ввода-вывода и памяти в будущей архитектуре сервера на базе микросхем с чем-то похожим на технологию Intel Foveros.
Теперь, честно говоря, есть другой способ взглянуть на это, и он заключается в том, что у IBM был размер кристалла и транзисторы, с которыми можно было поиграть, и добавление кеша L4 в межсоединение System z NUMA или в микросхему буфера памяти Power8 и Power9 было не совсем цель сама по себе, но лучшее, что можно сделать с оставшимся бюджетом транзисторов, доступным на этих устройствах, после добавления других необходимых функций.Иногда мы думаем, что количество ядер в процессорах Intel X86 зависит от объема кеш-памяти третьего уровня, который может быть установлен. Иногда кажется, что Intel устанавливает бюджет кэша L3 на кристалл, а затем все становится на свои места для трех кристаллов Xeon разного размера — в последних поколениях, с 10, 18 или 28 ядрами, как оказывается на 14-нанометровых процессах.
Все это спорный вопрос, но это предполагает возможную мотивацию IBM и других производителей наборов микросхем для добавления кеш-памяти L4.Кому-то это могло не только помочь, но и попробовать было что-то очевидное. Мы думаем о таком монстре ввода-вывода, как мэйнфрейм System z, нет никаких сомнений в том, что у IBM есть кэш L4 именно там, где он работает лучше всего, и он приносит пользу клиентам, увеличивая пропускную способность этих машин и позволяя им работать на устойчивое использование ЦП от 98% до 99% , так как количество ядер процессора и масштаб NUMA в мэйнфреймах выросли.
Подумайте об этих процентах на секунду, когда в следующий раз услышите слово «мэйнфрейм» в научно-фантастическом шоу.(Я пью каждый раз, когда это делаю, и это забавная игра, если вы запойте смотреть подряд много разных научно-фантастических шоу. Никто никогда не говорит: «Система распределенных вычислений не работает …» Прошлое, настоящее , или будущее.)
Нет причин, по которым кэш L4 должен быть сделан из встроенной памяти DRAM (как IBM делает со своими чипами) или гораздо более дорогой SRAM, и Рабин Сугумар, архитектор микросхем в Cray Research, Sun Microsystems, Oracle, Broadcom, Cavium и Марвелл, напоминает нам об этом
«Наши L3 уже довольно большие, — говорит Сугумар.«Таким образом, кэш L4 должен быть выполнен по другой технологии для этого конкретного случая использования, о котором вы говорите. Может быть, eDRAM или даже HBM или DRAM. В этом контексте одна реализация кэша L4, которая кажется интересной, использует HBM в качестве кеша, и это не столько кеш задержки, сколько кеш полосы пропускания. Идея состоит в том, что, поскольку емкость HBM ограничена, а полоса пропускания высока, мы можем получить некоторый прирост производительности — и мы действительно видим значительный выигрыш в случаях использования с ограниченной полосой пропускания ». Сугумар добавляет, что для ряда приложений существует относительно большое количество промахов кеша.Но математика, которая должна быть сделана — как для производительности, так и для стоимости, — это то, стоит ли добавление еще одного слоя кеша.
(И еще раз, что Сугумар говорит с нами об этом , это не означает , что Marvell обязуется добавить кэш L4 в будущие процессоры ThunderX. Но на самом деле это означает, что архитекторы и инженеры всегда долго пробуют идеи — обычно с помощью симуляторов. прежде, чем они попадут в транзисторы.)
Еще один возможный вариант кэширования, подобный L4, говорит Сугумар, — это использование локальной DRAM в качестве кеша.«Этого нет в лаборатории разработки или чего-то подобного, но предположим, что у нас есть интерфейс с высокой пропускной способностью на нашем чипе, который переходит к разделяемой распределенной памяти где-то на другом конце провода, который находится на расстоянии от 500 наносекунд до микросекунды. Тогда одна из моделей использования будет заключаться в создании кэша, который перемещает эти данные из совместно используемой распределенной DRAM в локальную DRAM. Мы можем представить себе запуск аппаратного конечного автомата, который управляет памятью, поэтому большую часть времени это занимает локальная DRAM, и вы минимизируете количество раз, когда вы выходите на совместно используемую DRAM.”
Для нас это звучит как забавный вид NUMA. Между прочим, Сугумар работал над распределенной памятью для высокопроизводительных параллельных систем в Sun Microsystems, и это было до того, как стала доступна постоянная память. И одна проблема, связанная с наличием этих различных иерархий памяти, заключалась в том, что если одна из них теряется из-за сбоя сети или межсоединения, тогда вся машина выходит из строя — бум! «Вы должны справляться с сетевыми сбоями в системах с распределенной памятью более аккуратно, и это создает множество проблем при проектировании.”
Другое дело, что мы хотим, чтобы любой кэш более высокого уровня, даже если это не кэш L4, был реализован в максимально возможной степени аппаратно и с минимальной настройкой программного обеспечения и изменениями приложений. Ядрам операционной системы и системному программному обеспечению требуется время, чтобы догнать оборудование, будь то добавление ядер, кешей L3 или L4 или адресуемой постоянной памяти.
«На каком-то уровне неизбежен другой уровень кэша», — говорит Джанос. «У нас был первый уровень кеша, а со временем появился второй.И в итоге мы добавили третью. И в конце концов у нас будет четвертый. Это скорее вопрос , когда и , почему . И я думаю, что ваше наблюдение о том, что есть много возможностей, является хорошим. Но вы знаете, что Intel еще не определила, когда и почему мы готовы обнародовать это. Другие компании смотрят на это; было бы глупо не думать об этом. Рано или поздно это произойдет, но будет ли это в ближайшее время или в ближайшее время, мы должны увидеть.”
Что такое кэш-память? Кэш-память в компьютерах, объяснение
Кэш-память — это компонент компьютера на основе микросхемы, который делает получение данных из памяти компьютера более эффективным. Он действует как временная область хранения, из которой процессор компьютера может легко извлекать данные. Эта область временного хранения, известная как кэш, более доступна для процессора, чем основной источник памяти компьютера, обычно это какая-то форма DRAM.
Кэш-память иногда называют памятью ЦП (центрального процессора), потому что она обычно интегрируется непосредственно в микросхему ЦП или размещается на отдельной микросхеме, которая имеет отдельную шину, соединенную с ЦП.Следовательно, он более доступен для процессора и способен повысить эффективность, поскольку физически находится рядом с процессором.
Чтобы быть ближе к процессору, кэш-память должна быть намного меньше, чем основная память. Следовательно, у него меньше места для хранения. Кроме того, он дороже, чем основная память, поскольку представляет собой более сложный чип, обеспечивающий более высокую производительность.
Чем он жертвует в размере и цене, он компенсируется скоростью. Кэш-память работает от 10 до 100 раз быстрее, чем ОЗУ, и для ответа на запрос ЦП требуется всего несколько наносекунд.
Имя фактического оборудования, которое используется для кэш-памяти, — это высокоскоростная статическая оперативная память (SRAM). Имя оборудования, которое используется в основной памяти компьютера, — это динамическая память с произвольным доступом (DRAM).
Кэш-память не следует путать с более широким термином «кэш». Кеши — это временные хранилища данных, которые могут существовать как в аппаратном, так и в программном обеспечении. Кэш-память относится к определенному аппаратному компоненту, который позволяет компьютерам создавать кеши на различных уровнях сети.
Типы кеш-памяти
Кэш-память — это быстро и дорого. Традиционно его классифицируют как «уровни», которые описывают его близость и доступность для микропроцессора. Есть три общих уровня кеширования:
Кэш L1 , или первичный кэш, очень быстрый, но относительно небольшой и обычно встраивается в микросхему процессора в качестве кэша ЦП.
Кэш второго уровня , или вторичный кэш, часто бывает более емким, чем L1. Кэш L2 может быть встроен в ЦП, или он может быть на отдельном кристалле или сопроцессоре и иметь высокоскоростную альтернативную системную шину, соединяющую кэш и ЦП.Таким образом, трафик на основной системной шине не замедлит работу.
Кэш-память 3-го уровня (L3) — это специализированная память, разработанная для повышения производительности L1 и L2. L1 или L2 могут быть значительно быстрее, чем L3, хотя L3 обычно вдвое превышает скорость DRAM. В многоядерных процессорах каждое ядро может иметь выделенный кэш L1 и L2, но они могут совместно использовать кеш L3. Если кэш L3 ссылается на инструкцию, он обычно повышается до более высокого уровня кеша.
В прошлом кэши L1, L2 и L3 создавались с использованием комбинированных компонентов процессора и материнской платы.В последнее время наблюдается тенденция к консолидации всех трех уровней кэширования памяти на самом ЦП. Вот почему основной способ увеличения размера кэша стал переходить от приобретения конкретной материнской платы с различными наборами микросхем и архитектур шины к покупке ЦП с нужным количеством интегрированного кэша L1, L2 и L3.
Вопреки распространенному мнению, установка флэш-памяти или более динамического ОЗУ ( DRAM ) в системе не приведет к увеличению кэш-памяти. Это может сбивать с толку, поскольку термины кэширование памяти (буферизация жесткого диска) и кэш-память часто используются как взаимозаменяемые.Кэширование памяти с использованием DRAM или флэш-памяти для буферизации операций чтения с диска предназначено для улучшения операций ввода-вывода хранилища путем кэширования данных, которые часто используются в буфере, перед более медленным магнитным диском или лентой. Кэш-память, с другой стороны, обеспечивает буферизацию чтения для ЦП.
Схема архитектуры и потока данных типичного блока кэш-памяти.
Отображение кэш-памяти
Конфигурации кэширования продолжают развиваться, но кэш-память традиционно работает в трех различных конфигурациях:
- Кэш с прямым отображением имеет каждый блок, сопоставленный ровно с одной ячейкой кэш-памяти.Концептуально кэш с прямым отображением похож на строки в таблице с тремя столбцами: блок кеша, содержащий фактические данные, полученные и сохраненные, тег со всем или частью адреса данных, которые были получены, и бит флага, который показывает наличие в строке записи допустимого бита данных.
- Полностью ассоциативное отображение кэша аналогично прямому отображению по структуре, но позволяет отображать блок памяти в любую ячейку кеш-памяти, а не в заранее заданную ячейку кэш-памяти, как в случае с прямым отображением.
- Установить ассоциативное отображение кэша можно рассматривать как компромисс между прямым отображением и полностью ассоциативным отображением, в котором каждый блок отображается на подмножество ячеек кэша. Иногда его называют ассоциативным отображением N-way set, которое обеспечивает кэширование местоположения в основной памяти в любое из «N» ячеек в кэше L1.
Политики записи данных
Данные могут быть записаны в память различными способами, но два основных из них включают в себя кэш-память:
- Сквозная запись. Данные записываются как в кэш, так и в основную память одновременно.
- Обратная запись. Данные только изначально записываются в кэш. Затем данные могут быть записаны в основную память, но это не обязательно и не препятствует взаимодействию.
Способ записи данных в кэш влияет на согласованность и эффективность данных. Например, при использовании сквозной записи требуется больше операций записи, что приводит к задержке впереди. При использовании обратной записи операции могут быть более эффективными, но данные могут не согласовываться между основной и кэш-памятью.
Один из способов, которым компьютер определяет непротиворечивость данных, — это проверка грязного бита в памяти. Грязный бит — это дополнительный бит, включенный в блоки памяти, который указывает, была ли изменена информация. Если данные попадают в регистровый файл процессора с активным грязным битом, это означает, что он устарел и где-то есть более свежие версии. Этот сценарий более вероятен в сценарии обратной записи, поскольку данные записываются в две области хранения асинхронно.
Специализация и функционал
Помимо кэшей инструкций и данных, другие кэши предназначены для обеспечения специализированных системных функций. Согласно некоторым определениям, общий дизайн кэша L3 делает его специализированным кешем. В других определениях кэш инструкций и кэш данных разделены, и каждый из них называется специализированным кешем.
Буферы резервной трансляции (TLB) также являются специализированными кэшами памяти, функция которых заключается в записи виртуального адреса в преобразования физического адреса.
Другие кеши технически не являются кешами памяти. Дисковые кеши, например, могут использовать DRAM или флэш-память для обеспечения кэширования данных, аналогичного тому, что кеш-память выполняет с инструкциями ЦП. Если к данным часто обращаются с диска, они кэшируются в DRAM или кремниевой технологии хранения на основе флэш-памяти для более быстрого доступа и отклика.
Специализированные кэши также доступны для таких приложений, как веб-браузеры, базы данных, привязка сетевых адресов и поддержка протокола сетевой файловой системы на стороне клиента.Эти типы кэшей могут быть распределены между несколькими сетевыми узлами, чтобы обеспечить большую масштабируемость или производительность приложения, которое их использует.
Изображение иерархии памяти и того, как она функционирует
Населенный пункт
Способность кэш-памяти улучшать производительность компьютера основана на концепции локальности ссылок. Локальность описывает различные ситуации, которые делают систему более предсказуемой. Кэш-память использует эти ситуации для создания шаблона доступа к памяти, на который она может полагаться.
Есть несколько типов населенных пунктов. Два ключевых для кеша:
- Временное местонахождение. Это когда к одним и тем же ресурсам обращаются повторно за короткий промежуток времени.
- Пространственная местность. Это относится к доступу к различным данным или ресурсам, которые находятся рядом друг с другом.
Производительность
Кэш-память важна, поскольку повышает эффективность извлечения данных. В нем хранятся программные инструкции и данные, которые многократно используются в работе программ, или информация, которая может понадобиться ЦП в следующий раз.Процессор компьютера может быстрее получить доступ к этой информации из кеша, чем из основной памяти. Быстрый доступ к этим инструкциям увеличивает общую скорость работы программы.
Помимо своей основной функции повышения производительности, кэш-память является ценным ресурсом для , оценивающего общую производительность компьютера. Пользователи могут сделать это, посмотрев на коэффициент попадания в кеш-память. Попадания в кэш — это случаи, когда система успешно извлекает данные из кеша.Промах в кеше — это когда система ищет данные в кеше, не может их найти и вместо этого ищет в другом месте. В некоторых случаях пользователи могут улучшить коэффициент попаданий, регулируя размер блока кэш-памяти — размер хранимых единиц данных.
Повышение производительности и возможность мониторинга производительности — это не только повышение общего удобства для пользователя. По мере развития технологий и все более широкого использования в критически важных сценариях скорость и надежность становятся критически важными.Даже несколько миллисекунд задержки потенциально могут привести к огромным расходам в зависимости от ситуации.
Диаграмма сравнения кэш-памяти с другими типами памяти
Кэш и основная память
DRAM
служит основной памятью компьютера, выполняя вычисления с данными, полученными из хранилища. И DRAM, и кэш-память являются энергозависимыми запоминающими устройствами, которые теряют свое содержимое при отключении питания. DRAM устанавливается на материнской плате, и процессор обращается к ней через шинное соединение.
DRAM
обычно примерно вдвое меньше, чем кэш-память L1, L2 или L3, и намного дешевле. Он обеспечивает более быстрый доступ к данным, чем флэш-накопители, жесткие диски (HDD) и ленточные накопители. Он стал использоваться в последние несколько десятилетий, чтобы обеспечить место для хранения часто используемых дисковых данных для повышения производительности ввода-вывода.
DRAM необходимо обновлять каждые несколько миллисекунд. Кэш-память, которая также является типом оперативной памяти, не нуждается в обновлении. Он встроен непосредственно в ЦП, чтобы предоставить процессору максимально быстрый доступ к ячейкам памяти и обеспечивает время доступа со скоростью наносекунды к часто используемым инструкциям и данным.SRAM быстрее, чем DRAM, но, поскольку это более сложный чип, его производство также дороже.
Пример динамического ОЗУ.
Кэш и виртуальная память
Компьютер имеет ограниченный объем DRAM и еще меньше кэш-памяти. Когда выполняется большая программа или несколько программ, возможно полное использование памяти. Чтобы компенсировать нехватку физической памяти, операционная система (ОС) компьютера может создавать виртуальную память.
Для этого ОС временно переносит неактивные данные из DRAM в дисковое хранилище.Этот подход увеличивает виртуальное адресное пространство за счет использования активной памяти в DRAM и неактивной памяти на жестких дисках для формирования непрерывных адресов, содержащих как приложение, так и его данные. Виртуальная память позволяет компьютеру запускать более крупные программы или несколько программ одновременно, и каждая программа работает так, как если бы у нее неограниченный объем памяти.
Чтобы скопировать виртуальную память в физическую, ОС делит память на файлы подкачки или файлы подкачки, которые содержат определенное количество адресов. Эти страницы хранятся на диске, и, когда они необходимы, ОС копирует их с диска в основную память и переводит адрес виртуальной памяти в физический.Эти переводы обрабатываются блоком управления памятью (MMU).
Внедрение и история
В мэйнфреймах
использовалась ранняя версия кэш-памяти, но технология, известная сегодня, начала развиваться с появлением микрокомпьютеров. В ранних ПК производительность процессора росла намного быстрее, чем производительность памяти, а память стала узким местом, замедляющим работу систем.
В 1980-х годах появилась идея, что небольшое количество более дорогой и быстрой SRAM можно было бы использовать для повышения производительности менее дорогой и медленной основной памяти.Первоначально кэш памяти был отделен от системного процессора и не всегда входил в состав набора микросхем. Ранние ПК обычно имели от 16 до 128 КБ кэш-памяти.
С 486 процессорами Intel добавила 8 КБ памяти ЦП в качестве памяти уровня 1 (L1). В этих системах использовалось до 256 КБ внешней кэш-памяти уровня 2 (L2). В процессорах Pentium объем внешней кэш-памяти снова удвоился до 512 КБ на верхнем уровне. Они также разделяют внутреннюю кэш-память на два кэша: один для инструкций, а другой для данных.
Процессоры
на основе микроархитектуры Intel P6, представленной в 1995 году, были первыми, кто включил кэш-память второго уровня в ЦП и позволил всей кэш-памяти системы работать с той же тактовой частотой, что и процессор. До P6 память L2, внешняя по отношению к ЦП, использовалась на гораздо более низкой тактовой частоте, чем скорость, с которой работал процессор, и значительно снижала производительность системы.
Ранние контроллеры кэша памяти использовали архитектуру кэша со сквозной записью, при которой данные, записанные в кэш, также немедленно обновлялись в ОЗУ.Это позволило свести к минимуму потерю данных, но также замедлило работу. Для более поздних ПК на базе 486 была разработана архитектура кэш-памяти с обратной записью, при которой оперативная память обновляется не сразу. Вместо этого данные хранятся в кеше, а ОЗУ обновляется только через определенные промежутки времени или при определенных обстоятельствах, когда данные отсутствуют или устарели.
AMD представляет новые чиплеты Ryzen с трехмерным V-Cache, до 192 МБ кэш-памяти третьего уровня, улучшение игрового процесса на 15% (обновлено)
Обновление 1/6/2021 10:00 PT : AMD подтвердила Tom’s Hardware , что процессоры Zen 3 Ryzen с 3D V-Cache поступят в производство в конце этого года.В настоящее время технология состоит из одного слоя многоуровневого кеша L3, но лежащая в основе технология поддерживает наложение нескольких кристаллов. Технология также не требует какой-либо специальной оптимизации программного обеспечения и должна быть прозрачной с точки зрения задержки и термических характеристик (без значительных накладных расходов). Мы также получили дополнительные подробные сведения, следите за обновлениями.
Оригинальная статья:
AMD полностью изменила правила игры. На Computex 2021 AMD сделала ошеломляющее заявление — у компании есть чиплеты с трехмерным стеком, основанные на архитектуре Zen 3, производство которых начнется в этом году.Эти инновационные новые чиплеты имеют дополнительные 64 Мбайт 7-нм кэша SRAM (называемого 3D V-Cache), расположенного вертикально на матрице ядра (CCD), чтобы утроить объем кэша L3 для ядер ЦП. Этот метод может обеспечить до удивительных 192 МБ кэш-памяти L3 на чип Ryzen — значительное улучшение по сравнению с текущим пределом в 64 МБ.
Генеральный директор AMD Лиза Су также продемонстрировала прототип чипа Ryzen 9 5900X, который компания уже использует и предоставила довольно впечатляющую демонстрацию ускоренного игрового процесса благодаря новой архитектуре — прирост в играх 1080p составил в среднем 15%.Это тип выигрыша, который мы обычно связываем с новой микроархитектурой ЦП и / или технологическим узлом, но AMD добилась этого с тем же 7-нм узлом и архитектурой Zen 3, которые уже поставляются со стандартными моделями Ryzen 5000.
Изображение 1 из 3
(Изображение предоставлено AMD) Изображение 2 из 3
(Изображение предоставлено AMD) Изображение 3 из 3
(Изображение предоставлено AMD)
AMD прикрепляет кэш 3D к верхней части ПЗС Ryzen с TSV (через кремниевые переходные отверстия), которые обеспечивают пропускную способность до 2 ТБ / с между чипом и кешем.Этот метод основан на технологии 3DFabric TSMC, которую мы здесь рассмотрели. Вот анимация (разверните твит ниже):
Технология AMD 3D Chiplet: прорыв в упаковке для высокопроизводительных вычислений. 1 июня 2021 г.
Подробнее
AMD также утончает кристалл 3D-кэша и добавляет в него структурный кремний. чип, в результате чего получается последний процессор Ryzen, который выглядит идентично обычному чипу.
(Изображение предоставлено AMD)
Су продемонстрировал прототип Ryzen 9 5900X с уже внедренной технологией 3D-чиплетов.Вы можете увидеть гибридную SRAM 6 x 6 мм, прикрепленную к верхней части чиплета (левый чиплет на изображении выше). Готовые устройства будут иметь 96 МБ кэш-памяти на каждую ПЗС-матрицу, что в сумме составляет почти безумные 192 МБ кеш-памяти третьего уровня для 12- или 16-ядерного процессора Ryzen 5000.
(Изображение предоставлено AMD)
AMD использовала подход гибридного связывания с TSV, который обеспечивает более чем 200-кратную плотность межсоединений по сравнению с 2D-чиплетами, 15-кратное улучшение плотности межсоединений по сравнению с 3D-реализациями с микровыступами и 3-кратное повышение энергоэффективности межсоединений. .
Су сказал, что эти невероятные достижения стали возможными благодаря интерфейсу «кристалл-кристалл» без микровыступов, который использует прямую связь медь-медь для улучшения термических характеристик, плотности и шага межсоединений, а также обеспечивает невероятный рост энергии. Су сказал, что такая комбинация атрибутов делает этот подход самой передовой и гибкой технологией наложения кремниевых стекол «активный-активный» в мире.
(Изображение предоставлено AMD)
Su продемонстрировал прототип Ryzen 9 5900X с новым 3D V-Cache по сравнению со стандартным 5900X, при этом оба чипа заблокированы на 4.Тактовая частота 0 ГГц. 3D-прототип обеспечил 12% -ное увеличение рейтинга Gears 5.
(Изображение предоставлено AMD)
Чтобы довести дело до конца, Су продемонстрировал более широкий выбор игровых тестов, которые демонстрируют Ryzen 9 5900X с 3D V. -Технология кэширования, обеспечивающая в среднем на 15% большую производительность в широком спектре игр с разрешением 1080p. Сюда входят такие игры, как Dota 2, Monster Hunter World, League of Legends и Fortnite.
У нас есть миллион вопросов, например, имеет ли кеш-память более высокую задержку, чем «нормальный» кэш L3, для решения которой может потребоваться оптимизация программного обеспечения.Мы будем работать с AMD, чтобы получить более подробную информацию и более качественные изображения.
Су сообщил, что компания будет готова начать производство своих «продуктов высшего класса» с 3D-чиплетами в конце года. Это только первая реализация технологии стекирования — AMD может использовать ее и для других функций в будущем. Последствия этого как для клиента, так и для предприятия довольно серьезны, поэтому мы рассмотрим более подробную информацию. Следите за обновлениями.
Разница между кешем L1, L2 и L3: что такое кэш ЦП и взгляд на отображение памяти
Каждый современный процессор имеет небольшой объем кэш-памяти.За последние несколько десятилетий архитектуры кеш-памяти стали все более сложными: уровни кеш-памяти ЦП увеличились до трех: L1, L2 и L3, размер каждого блока увеличился, а ассоциативность кеша также претерпела несколько изменений. Но прежде чем мы углубимся в подробности, вы должны знать, что такое кеш-память и почему она важна? Кроме того, современные процессоры состоят из кеш-памяти L1, L2 и L3. В чем разница между этими уровнями кеша?
Кэш-память против системной памяти: SRAM против DRAM
Кэш-память основана на гораздо более быстрой (и дорогой) статической памяти, в то время как системная память использует более медленную DRAM (динамическую RAM).Основное различие между ними заключается в том, что первый сделан из КМОП-технологии и транзисторов (по шесть на каждый блок), а второй использует конденсаторы и транзисторы.
DRAM необходимо постоянно обновлять (из-за утечки платы), чтобы хранить данные в течение более длительных периодов. Из-за этого он потребляет значительно больше энергии, а также работает медленнее. SRAM не нужно обновлять, и он намного эффективнее. Однако более высокая цена помешала массовому внедрению, ограничивая его использование кеш-памятью процессора.
Важность кэш-памяти в процессорах?
Современные процессоры на световые годы опережают своих примитивных предков, которые были примерно в 80-х и начале 90-х годов. В наши дни топовые потребительские чипы работают на частоте более 4 ГГц, в то время как большинство модулей памяти DDR4 рассчитаны на частоту менее 1800 МГц. В результате системная память слишком медленная, чтобы напрямую работать с процессорами без серьезного замедления их работы. Здесь на помощь приходит кэш-память. Она действует как промежуточное звено между ними, храня небольшие фрагменты многократно используемых данных или, в некоторых случаях, адреса памяти этих файлов.
Кэш L1, L2 и L3: в чем разница?
В современных процессорах кэш-память разделена на три сегмента: кэш L1, L2 и L3, в порядке увеличения размера и уменьшения скорости. Кэш L3 является самым большим, а также самым медленным (процессоры Ryzen 3-го поколения имеют большой кэш L3 размером до 64 МБ). L2 и L1 намного меньше и быстрее, чем L3, и являются отдельными для каждого ядра. В старых процессорах не было кэша третьего уровня L3, а системная память напрямую взаимодействовала с кешем L2:
Кэш
L1 делится на две части: кэш данных L1 и кэш инструкций L1.Последний содержит инструкции, которые будут использоваться ядром ЦП, а первый используется для хранения данных, которые будут записаны обратно в основную память.
Кэш L1 не только работает как кэш инструкций, но также содержит данные предварительного декодирования и информацию о ветвлениях. Кроме того, в то время как кэш данных L1 часто действует как кэш вывода, кэш инструкций L1 ведет себя как кэш ввода. Это полезно, когда задействованы петли, так как необходимые инструкции находятся рядом с блоком выборки.
Современные процессоры включают до 512 КБ кэш-памяти L1 (64 КБ на ядро) для флагманских процессоров, в то время как серверные части имеют почти вдвое больше.
Кэш L2 намного больше, чем L1, но в то же время медленнее. Они варьируются от 4 до 8 МБ на флагманских процессорах (512 КБ на ядро). Каждое ядро имеет свой собственный кэш L1 и L2, в то время как последний уровень, кеш L3, используется всеми ядрами на кристалле.
Кэш
L3 — это кэш самого низкого уровня. Он варьируется от 10 МБ до 64 МБ. Серверные чипы имеют до 256 МБ кеш-памяти третьего уровня.Кроме того, процессоры AMD Ryzen имеют гораздо больший размер кеш-памяти по сравнению с конкурирующими чипами Intel. Это связано с дизайном MCM по сравнению с Monolithic на стороне Intel. Подробнее об этом читайте здесь.
Когда ЦП требуются данные, он сначала выполняет поиск в кэше L1 связанного ядра. Если он не найден, затем выполняется поиск кешей L2 и L3. Если необходимые данные найдены, это называется попаданием в кеш . С другой стороны, если данных нет в кеше, ЦП должен запросить их загрузку в кеш из основной памяти или хранилища.Это требует времени и отрицательно сказывается на производительности. Это называется промахом в кэше .
Как правило, частота попаданий в кэш повышается при увеличении размера кэша. Это особенно верно в случае игр и других рабочих нагрузок, чувствительных к задержкам.
Инклюзивный и монопольный кэш
Базовая конфигурация кэша бывает двух типов: включающая и монопольная. Если все блоки данных, присутствующие в кэше более высокого уровня, присутствуют в кэше более низкого уровня, то кэш низкого уровня известен как включающий кэш более высокого уровня.
С другой стороны, если кэш нижнего уровня содержит только блоки данных, которых нет в кэше более высокого уровня, то считается, что кэш не включает кэш верхнего уровня.
Включая кэш-память
Рассмотрим ЦП с двумя уровнями кэш-памяти. Теперь предположим, что запрошен блок X. Если блок находится в кэше L1, то данные считываются из кеша L1 и потребляются ядром ЦП. Однако, если блок не найден в кэше L1, но присутствует в L2, то он извлекается из кеша L2 и помещается в L1.
Если кэш L1 также заполнен, блок удаляется из L1, чтобы освободить место для более нового блока, в то время как кэш L2 остается неизменным. Однако, если блок данных не найден ни в L1, ни в L2, он извлекается из памяти и помещается на оба уровня кэш-памяти. В этом случае, если кэш L2 заполнен и блок вытесняется, чтобы освободить место для новых данных, кэш L2 отправляет запрос недействительности в кэш L1, поэтому вытесненный блок также удаляется оттуда. Из-за этой процедуры аннулирования инклюзивный кэш работает немного медленнее, чем неисключающий или монопольный.
Не включающий или исключительный кеш
Теперь давайте рассмотрим тот же пример с неисключающим или исключительным кешем. Предположим, что ядро ЦП отправляет запрос на блок X. Если найден блок X, то он считывается и потребляется ядром из этого места. Однако, если блок X не найден в L1, но присутствует в L2, он перемещается из L2 в L1. Если в L1 нет места, один блок удаляется из L1 и сохраняется в L2. Это единственный способ пополнения кэша L2, так как он действует как кэш жертвы.Если блок X не найден в L1 или L2, он извлекается из памяти и помещается только в L1.
Не включающее неисключительное (ДЕВЯТЬ)
Существует третья, менее часто используемая политика кеширования, называемая неисключительным неисключительным (ДЕВЯТЬ). Здесь блоки не включают и не исключают кэш более высокого уровня. Давайте в последний раз рассмотрим тот же пример. Есть запрос на блок X, и он находится в L1. Затем ядро ЦП будет читать и потреблять этот блок из кеша L1. Если блок не найден в L1, но присутствует в L2, то он выбирается из L2 в L1.Кэш L2 остается неизменным, подобно тому, как работает инклюзивный кеш.
Однако, если блок не найден ни на одном из уровней кэша, он извлекается из основной памяти и помещается как в L1, так и в L2. Однако, если это приводит к вытеснению блока из L2, в отличие от инклюзивного кеша, в кэше L1 нет обратной недействительности, чтобы удалить тот же блок оттуда.
Взгляд на отображение памяти
Покончив с основными объяснениями кеш-памяти, давайте поговорим о том, как системная память взаимодействует с кэш-памятью. Это называется отображением кэша или памяти . Кэш-память делится на блоки или наборы. Эти блоки в свою очередь делятся на n строк по 64 байта. Системная память делится на такое же количество блоков (наборов), что и кэш, и затем эти два блока связываются.
Если у вас 1 ГБ оперативной памяти, то кеш будет разделен на 8192 строки, а затем разделен на блоки. Это называется n-way ассоциативным кешем . При двухстороннем ассоциированном кэше каждый блок содержит по две строки, четырехсторонний включает четыре строки каждый, восемь строк для 8-полосного и шестнадцать строк для 16-полосного.Каждый блок в памяти будет размером 512 КБ, если общий размер ОЗУ составляет 1 ГБ.
Если у вас есть 512 КБ кэш-памяти с четырьмя линиями, ОЗУ будет разделено на 2048 блоков (8192/4 для 1 ГБ) и связано с таким же количеством блоков кэш-памяти с 4 строками.
Точно так же с 16-позиционным ассоциативным кешем кэш делится на 512 блоков, связанных с 512 (2048 КБ) блоками в памяти, каждый блок кеш-памяти содержит 16 строк. Когда в кэше заканчиваются блоки данных, контроллер кеша перезагружает новый набор блоков с необходимыми данными, чтобы продолжить выполнение процессора.
N-сторонний ассоциативный кэш — это наиболее часто используемый метод сопоставления. Есть еще два метода, известных как прямое сопоставление и полностью связанное сопоставление. В первом случае существует жесткая связь между строками кэша и памятью, тогда как во втором случае кэш может содержать любой адрес памяти. По сути, каждая строка может обращаться к любому блоку основной памяти. У этого метода самый высокий процент попаданий. Однако его реализация требует больших затрат, и поэтому производители микросхем в основном избегают его.
Полностью ассоциированное отображение
Какое отображение является лучшим?
Прямое сопоставление — самая простая для реализации конфигурация, но в то же время наименее эффективная.Например, если ЦП запрашивает заданный адрес памяти (в данном случае 1000), контроллер загрузит 64-байтовую строку из памяти и сохранит ее в кэше (от 1000 до 1063). В будущем, если ЦП потребует данные с тех же адресов или адресов сразу после этого (от 1000 до 1063), они уже будут в кеше.
Это становится проблемой, когда процессору требуются два адреса один за другим, которые находятся в блоке памяти, сопоставленном с одной и той же строкой кэша. Например, если ЦП сначала запрашивает адрес 1000, а затем адрес 2000, произойдет сбой в кэше, потому что эти два адреса находятся внутри одного и того же блока памяти (размер блока составляет 128 КБ).С другой стороны, сопоставленная ему строка кэша была строкой, начинающейся с адреса 1000–1063. Таким образом, контроллер кеша загрузит строку с адреса 2000–2063 в первую строку кэша, удаляя старые данные. По этой причине кэш прямого отображения является наименее эффективным методом отображения кэша, и от него в значительной степени отказались.
Полностью ассоциативное отображение в некоторой степени противоположно прямому отображению. Между строками кеш-памяти и ячейками оперативной памяти нет жесткой связи.Контроллер кеша может хранить любой адрес. Там вышеупомянутой проблемы не возникает. Этот метод сопоставления кэша является наиболее эффективным и дает самый высокий процент попаданий. Однако, как уже объяснялось, это сложнее и дороже всего реализовать.
В результате используется ассоциативно-множественное отображение, которое является гибридом между полностью ассоциативным и прямым отображением. Здесь каждый блок памяти связан с набором строк (в зависимости от типа сопоставления SA), и каждая строка может содержать данные с любого адреса в сопоставленном блоке памяти.В четырехстороннем ассоциативном кэш-памяти наборов каждый набор в кэше памяти может содержать до четырех строк из одного и того же блока памяти. При 16-позиционной конфигурации это число увеличивается до 16.
Когда все слоты в сопоставленном наборе израсходованы, контроллер удаляет содержимое одного из слотов и загружает другой набор данных из того же сопоставленного блока памяти. . Увеличивая количество способов, которыми кэш-память ассоциативной памяти может иметь, например, с 4-го на 8-сторонний, у вас появляется больше слотов кэша, доступных для каждого набора. Однако, если вы не увеличиваете объем кеш-памяти, объем памяти каждого связанного блока памяти увеличивается.По сути, увеличение количества доступных слотов в наборе кэш-памяти без увеличения общего размера кэша означает, что набор будет связан с большим блоком памяти, что эффективно снижает эффективность из-за увеличения количества сбросов.
С другой стороны, увеличение размера кеша означает, что у вас будет больше строк в каждом наборе (при условии, что размер набора также увеличивается). Это означает большее количество связанных строк кэша для каждого блока памяти. Как правило, это увеличивает процент попаданий, но есть предел того, насколько это может улучшить общий показатель.
cpu — Кэш-память L1, L2 и L3 процессоров все сделаны из SRAM?
Обычно все реализованы с использованием SRAM.
(микросхемы IBM POWER и zArchitecture используют память DRAM для L3. Это называется встроенной памятью DRAM, потому что она реализована в том же технологическом процессе, что и логика, что позволяет интегрировать быструю логику в тот же кристалл, что и DRAM. Для POWER4 отключение -чип L3 использовал eDRAM; POWER7 имеет L3 на том же чипе, что и ядра обработки.)
Хотя они используют SRAM, не все они используют ту же конструкцию SRAM.SRAM для L2 и L3 оптимизированы для размера (для увеличения емкости при ограниченном производимом размере чипа или для снижения стоимости данной емкости), в то время как SRAM для L1, скорее всего, будет оптимизирована по скорости.
Что еще более важно, время доступа связано с физическим размером хранилища. При двухмерной компоновке можно ожидать, что задержка физического доступа составит , примерно , пропорционально квадратному корню из емкости. (Неоднородная архитектура кеширования использует это для предоставления подмножества кеша с меньшей задержкой.Срезы L3 последних процессоров Intel имеют аналогичный эффект; попадание в локальный слайс имеет значительно меньшую задержку.) Этот эффект может сделать кэш DRAM быстрее, чем кэш SRAM при высокой емкости, потому что DRAM физически меньше.
Другой фактор заключается в том, что большинство кэшей L2 и L3 используют последовательный доступ к тегам и данным, тогда как большинство кешей L1 обращаются к тегам и данным параллельно. Это оптимизация энергопотребления (частота пропусков L2 выше, чем частота пропусков L1, поэтому доступ к данным с большей вероятностью будет потрачен впустую; доступ к данным L2 обычно требует больше энергии — в зависимости от емкости -; а кеши L2 обычно имеют более высокую ассоциативность что означает, что дополнительные записи данных должны быть прочитаны умозрительно).Очевидно, что необходимость ждать сопоставления тегов перед доступом к данным увеличивает время, необходимое для извлечения данных. (Доступ к L2 также обычно начинается только после подтверждения промаха L1, поэтому задержка обнаружения промаха L1 добавляется к общей задержке доступа L2.