8 как называется ячейка быстродействующей памяти расположенная внутри процессора
Перейти к содержимому

8 как называется ячейка быстродействующей памяти расположенная внутри процессора

  • автор:

Как работает кэш СPU и что такое кэш L1, L2 и L3? Коротко

Как работает кэш СPU и что такое кэш L1, L2 и L3? Коротко

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

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

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

Итак, насколько важна кэш-память процессора и как она работает?

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

Проще говоря, кэш-память процессора – это просто очень быстрый тип памяти. На заре развития вычислительной техники скорость процессора и скорость памяти были низкими. Однако в 1980-х годах скорость процессоров начала стремительно расти. Системная память того времени (ОЗУ) не могла справиться с растущими скоростями процессора или соответствовать им, поэтому появился новый тип сверхбыстрой памяти: кэш-память процессора.

Сейчас в компьютере имеется несколько типов памяти.

Как работает кэш СPU и что такое кэш L1, L2 и L3? Коротко

Первичная память, например, жесткий диск или SSD, хранит основную часть данных – операционную систему и программы.

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

9 терминов, которые необходимо знать при покупке оперативной памяти компьютера

Наконец, процессор имеет внутри себя еще более быстрые блоки памяти, известные как кэш-память процессора.

Компьютерная память имеет иерархию, основанную на скорости работы. Кэш-память процессора находится на вершине этой иерархии, являясь самой быстрой. Она также находится ближе всего к месту централизованной обработки данных, являясь частью самого процессора. Согласно Tech Target, «кэш-память работает в 10-100 раз быстрее, чем оперативная память, и требует всего несколько наносекунд для ответа на запрос процессора».

Компьютерная память также бывает разных типов.

Кэш-память является разновидностью статической оперативной памяти (SRAM), в то время как обычная системная оперативная память известна как динамическая оперативная память (DRAM). Статическая оперативная память может хранить данные без необходимости постоянного обновления, в отличие от DRAM, что делает SRAM идеальной кэш-памятью.

Как работает кэш процессора?

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

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

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

Затем кэш-память осуществляет обмен данными внутри процессора. Иерархия памяти существует и в кэше процессора.

Уровни кэш-памяти процессора: L1, L2 и L3

Как работает кэш СPU и что такое кэш L1, L2 и L3? Коротко

Кэш-память процессора делится на три «уровня»: L1, L2 и L3. Иерархия памяти зависит от скорости и, соответственно, от размера кэша.

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

Кэш L1

Кэш-память L1 (Level 1) – это самая быстрая память, которая присутствует в компьютерной системе. С точки зрения приоритета доступа, кэш L1 содержит данные, которые с наибольшей вероятностью понадобятся процессору при выполнении определенной задачи.

Размер кэш-памяти L1 зависит от процессора. Некоторые потребительские процессоры высшего класса сейчас имеют кэш L1 объемом 1 МБ, как, например, Intel i9-9980XE, но они стоят огромных денег и все еще мало распространены. Некоторые серверные чипсеты, например, линейка Intel Xeon, также оснащены кэш-памятью L1 объемом 1-2 МБ.

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

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

Следует ли обновлять BIOS? Коротко

Кэш-память L2

Кэш-память L2 (уровень 2) работает медленнее, чем кэш-память L1, но имеет больший размер. Если кэш L1 может измеряться в килобайтах, то современные кэши памяти L2 измеряются в мегабайтах. Например, высоко оцененный Ryzen 5 5600X от AMD имеет 384 КБ кэша L1 и 3 МБ кэша L2 (плюс 32 МБ кэша L3).

Размер кэша L2 варьируется в зависимости от процессора, но обычно его размер составляет от 256 КБ до 32 МБ. Большинство современных процессоров имеют кэш L2 более 256 КБ, и этот размер сейчас считается небольшим. Более того, некоторые из самых мощных современных процессоров имеют больший объем кэш-памяти L2, значительно превышающий 8 МБ. Например,

Как работает кэш СPU и что такое кэш L1, L2 и L3? Коротко

Что касается скорости, кэш-память L2 отстает от кэша L1, но все равно намного быстрее, чем ваша системная оперативная память. Кэш-память L1 обычно в 100 раз быстрее, чем оперативная память, в то время как кэш-память L2 примерно в 25 раз быстрее.

Кэш-память L3

Переходим к кэшу L3 (уровень 3). В ранние времена кэш-память L3 находилась на материнской плате. Это было очень давно, когда большинство CPU были одноядерными процессорами. Сейчас кэш-память L3 в вашем процессоре может быть огромной: в топовых потребительских процессорах кэш-память L3 достигает 32 МБ, а революционные процессоры AMD Ryzen 7 5800X3D оснащены кэшем L3 объемом 96 МБ. В некоторых серверных CPU кэш L3 может превышать этот показатель, достигая 128 МБ.

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

На следующих изображениях показаны уровни кэш-памяти процессора Intel Core i5-3570K, выпущенного в 2012 году, и процессора AMD Ryzen 5800X, выпущенного восемь лет спустя, в 2020 году. Данные кэш-памяти процессора находятся в правом нижнем углу второго изображения.

Как работает кэш СPU и что такое кэш L1, L2 и L3? КороткоКак работает кэш СPU и что такое кэш L1, L2 и L3? Коротко

Обратите внимание, как кэш L1 разделен на две части, в то время как кэш L2 и L3 больше, соответственно, на обоих процессорах? Однако у AMD Ryzen 5800X кэш L3 более чем в пять раз больше, чем у Intel i5-3570K.

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

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

Дизайн кэш-памяти постоянно развивается, особенно по мере того, как память становится все дешевле, быстрее и плотнее. Например, одними из последних инноваций AMD являются Smart Access Memory и Infinity Cache, обе из которых повышают производительность.

Как данные перемещаются между кэш-памятью процессора?

В самых основных терминах, данные поступают из оперативной памяти в кэш L3, затем в L2 и, наконец, в L1. Когда процессор ищет данные для выполнения операции, он сначала пытается найти их в кэш-памяти L1. Если процессор находит его, это состояние называется попаданием в кэш. Затем он переходит к поиску данных в L2, а затем в L3.

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

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

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

Латентность продолжает уменьшаться по мере того, как компьютеры становятся быстрее и эффективнее. Оперативная память DDR4 и DDR5 с низкой задержкой и сверхбыстрые твердотельные накопители снижают задержку, делая всю вашу систему быстрее, чем когда-либо. При этом скорость системной памяти также важна.

5 лучших недорогих SSD в 2020-2023

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

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

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

КомпьютерИзнутри.ppt

КомпьютерИзнутри.ppt

Определения Компьютер (computer) – это программируемое электронное устройство для обработки данных

Определения Компьютер (computer) – это программируемое электронное устройство для обработки данных

Компьютер (computer) – это программируемое электронное устройство для обработки данных.
аналоговые компьютеры – складывают и умножают аналоговые (непрерывные) сигналы
цифровые компьютеры – работают с цифровыми (дискретными) данными.
Hardware – аппаратное обеспечение, «железо».
Software – программное обеспечение, «софт».

Программа – это последовательность команд, которые должен выполнить компьютер.
Команда – это описание операции:
код операции
операнды – исходные данные (числа) или их адреса
результат (куда записать).

Процессор Регистр – ячейка быстродействующей оперативной памяти, расположенная внутри процессора

Процессор Регистр – ячейка быстродействующей оперативной памяти, расположенная внутри процессора

Регистр – ячейка быстродействующей оперативной памяти, расположенная внутри процессора.

Процессор – микросхема, которая обрабатывает информацию и управляет всеми устройствами компьютера.

АЛУ – арифметико-логическое устройство
УУ – устройство управления

Структура памяти Память состоит из нумерованных ячеек

Структура памяти Память состоит из нумерованных ячеек

Память состоит из нумерованных ячеек.
Линейная структура (адрес ячейки – одно число).
Байт – это наименьшая ячейка памяти, имеющая собственный адрес (4, 6, 7, 8, 12 бит).
На современных компьютерах 1 байт = 8 бит.

Слово = 2 байта

Двойное слово = 4 байта

Архитектура компьютера Архитектура – принципы действия и взаимосвязи основных устройств компьютера (процессора,

Архитектура компьютера Архитектура – принципы действия и взаимосвязи основных устройств компьютера (процессора,

Архитектура – принципы действия и взаимосвязи основных устройств компьютера (процессора, ОЗУ, внешних устройств).
Принстонская архитектура (фон Неймана):

ОЗУ (программа и данные)

прямой доступ к памяти

Гарвардская архитектура – программы и данные хранятся в разных областях памяти.

прямой доступ к памяти

скорость (одновременно читаем команду и данные)

нужно больше контактов у процессора

Принципы фон Неймана А. Беркс,

Принципы фон Неймана А. Беркс,

Принципы фон Неймана

А. Беркс, Х. Голдстайн, Д. Нейман «Предварительный доклад о машине EDVAC» (1945)
Принцип двоичного кодирования: вся информация кодируется в двоичном виде.
Принцип программного управления: программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности.
Принцип однородности памяти: программы и данные хранятся в одной и той же памяти.
Принцип адресности: память состоит из пронумерованных ячеек; процессору в любой момент времени доступна любая ячейка.

Выполнение программы Счетчик команд (

Выполнение программы Счетчик команд (

Счетчик команд (IP = Instruction Pointer) – регистр, в котором хранится адрес следующей команды.
IP
Команда, расположенная по этому адресу, передается в УУ. Если это не команда перехода, регистр IP увеличивается на длину команды.
УУ расшифровывает адреса операндов.
Операнды загружаются в АЛУ.
УУ дает команду АЛУ на выполнение операции.
Результат записывается по нужному адресу.
Шаги 1-5 повторяются до получения команды «стоп».

по адресу AB3D16

Архитектуры компьютеров фон Неймана многомашинная ( независимые задачи) многопроцессорная ( части одной задачи, по разным программам) параллельные процессоры ( части одной задачи, по одной программе)

Архитектуры компьютеров фон Неймана многомашинная ( независимые задачи) многопроцессорная ( части одной задачи, по разным программам) параллельные процессоры ( части одной задачи, по одной программе)

многомашинная (независимые задачи)

многопроцессорная (части одной задачи, по разным программам)

параллельные процессоры (части одной задачи, по одной программе)

Компьютер изнутри Тема 2. Персональный компьютер

Компьютер изнутри Тема 2. Персональный компьютер

Тема 2. Персональный компьютер

Персональный компьютер (ПК) ПК – это компьютер, предназначенный для личного использования (доступная цена, размеры, характеристики)

Персональный компьютер (ПК) ПК – это компьютер, предназначенный для личного использования (доступная цена, размеры, характеристики)

Персональный компьютер (ПК)

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

1981 IBM PC
(personal computer)

Принцип открытой архитектуры (IBM) на материнской плате расположены только узлы, которые обрабатывают информацию (процессор и вспомогательные микросхемы, память) схемы, управляющие другими устройствами (монитором и т

Принцип открытой архитектуры (IBM) на материнской плате расположены только узлы, которые обрабатывают информацию (процессор и вспомогательные микросхемы, память) схемы, управляющие другими устройствами (монитором и т

Принцип открытой архитектуры (IBM)

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

конкуренция, удешевление устройств
производители могут изготавливать новые совместимые устройства
пользователь может собирать ПК «из кубиков»

Зачем процессорам нужен кэш и чем отличаются уровни L1, L2, L3

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

Наверно, он важен, иначе зачем бы его устанавливать? Но что же делает кэш, и для чего ему разные уровни? И что означает «12-канальный ассоциативный кэш» (12-way set associative)?

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

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

Однако мы, разумеется, можем узнать о кэше гораздо больше…

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

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

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

Великий Т’Фон хранения данных

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

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

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

Увы, но это Великий А’Туин хранения данных

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

Ну, у нас уже есть такая система, и она называется ОЗУ (RAM); она присутствует в каждом компьютере и выполняет именно эту задачу.

Почти все такие хранилища имеют тип DRAM (dynamic random access memory); они способны передавать данные гораздо быстрее, чем любой накопитель.

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

Одни из самых крупных чипов памяти DDR4, разработанных Micron, хранят 32 Гбит, или 4 ГБ данных; самые крупные жёсткие диски хранят в 4 000 раз больше.

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

DRAM могут изготавливаться в корпусе чипа (это называется встроенной (embedded) DRAM). Однако процессоры довольно малы, поэтому в них не удастся поместить много памяти.

10 МБ DRAM слева от графического процессора Xbox 360. Источник: CPU Grave Yard

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

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

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

Разумеется, у SRAM есть недостаток, и он опять-таки связан с пространством.

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

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

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

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

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

На приведённом выше изображении процессор (CPU) обозначен прямоугольником с пунктирной границей. Слева расположены ALU (arithmetic logic units, арифметико-логические устройства); это структуры, выполняющие математические операции. Хотя строго говоря, они не являются кэшем, ближайший к ALU уровень памяти — это регистры (они упорядочены в регистровый файл).

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

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

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

Одно ядро процессора Intel Skylake. Источник: Wikichip

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

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

Ещё одним белым прямоугольником справа показан кэш инструкций первого уровня (Level 1 Instruction cache), тоже имеющий размер 32 КБ. Как понятно из названия, в нём хранятся различные команды, готовые к разбиению на более мелкие микрооперации (обычно обозначаемые μops), которые должны выполнять ALU. Для них тоже существует кэш, который можно классифицировать как Level 0, потому что он меньше (содержит всего 1 500 операций) и ближе, чем кэши L1.

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

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

Кэш L2 процессора Skylake: 256 КБ SRAM

Но если бы это был единственный кэш внутри процессора, то его производительность наткнулась бы на неожиданное препятствие. Именно поэтому в ядра встраивается еще один уровень памяти: кэш Level 2. Это обобщённый блок хранения, содержащий инструкции и данные.

Он всегда больше, чем Level 1: в процессорах AMD Zen 2 он занимает до 512 КБ, чтобы кэши нижнего уровня обеспечивались достаточным объёмом данных. Однако большой размер требует жертв — для поиска и передачи данных из этого кэша требуется примерно в два раза больше времени по сравнению с Level 1.

Во времена первого Intel Pentium кэш Level 2 был отдельным чипом, или устанавливаемым на отдельной небольшой плате (как ОЗУ DIMM), или встроенным в основную материнскую плату. Постепенно он перебрался в корпус самого процессора, и, наконец, полностью интегрировался в кристалл чипа; это произошло в эпоху таких процессоров, как Pentium III и AMD K6-III.

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

Чип Intel Kaby Lake. Источник: Wikichip

На этом изображении чипа Intel Kaby Lake в левой части показаны четыре ядра (интегрированный GPU занимает почти половину кристалла и находится справа). Каждое ядро имеет свой «личный» набор кэшей Level 1 и 2 (выделены белыми и жёлтым прямоугольниками), но у них также есть и третий комплект блоков SRAM.

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

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

Увеличенный снимок одного ядра процессора AMD Zen 2. Источник: Fritzchens Fritz

Но постойте: как 32 КБ могут занимать больше физического пространства чем 512 КБ? Если Level 1 хранит так мало данных, почему он непропорционально велик по сравнению с кэшами L2 и L3?

Не только числа

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

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

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

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

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

Представленная выше информация кэша относится к Intel Core i7-9700K. Каждый из его кэшей Level 1 разделён на 64 небольших блока, называемые sets, и каждый из этих блоков ещё разбит на строки кэша (cache lines) (размером 64 байта). «Set associative» означает, что блок данных из системы привязывается к строкам кэша в одном конкретном сете, и не может свободно привязываться к какому-то другому месту.

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

Инклюзивный кэш L1+L2, victim cache L3, политики write-back, есть даже ECC. Источник: Fritzchens Fritz

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

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

Существуют и другие политики для кэша, например, при которых данные записываются и в кэш, и основную системную память. Они называются политиками записи (write policies); большинство современных процессоров использует кэши write-back — это означает, что когда данные записываются на уровень кэшей, происходит задержка перед записью их копии в системную память. Чаще всего эта пауза длится в течение того времени, пока данные остаются в кэше — ОЗУ получает эту информацию только при «выталкивании» из кэша.

Графический процессор Nvidia GA100, имеющий 20 МБ кэша L1 и 40 МБ кэша L2

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

Самый нижний уровень кэшей в современных процессорах за последнее десятилетие практически не изменился. Однако кэш Level 3 продолжает расти в размерах. Если бы десять лет назад у вас было 999 долларов на Intel i7-980X, то вы могли бы получить кэш размером 12 МБ. Сегодня за половину этой суммы можно приобрести 64 МБ.

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

Был ли у вас компьютер с кэшем L2 на материнской плате? Как насчёт слотовых Pentium II и Celeron (например, 300a) на дочерних платах? Помните свой первый процессор с общим L3?

На правах рекламы

Наша компания предлагает в аренду серверы с процессорами от Intel и AMD. В последнем случае — это эпичные серверы! VDS с AMD EPYC, частота ядра CPU до 3.4 GHz. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.

Что такое кэш в процессоре и зачем он нужен

Что такое кэш в процессоре и зачем он нужен

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

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

Предпосылки создания кэш-памяти

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

Каждый раз при запуске программы из постоянной памяти, ее наиболее часто используемые данные или вся программа целиком «подгружаются» в оперативную память. Это делается для ускорения обработки данных процессором. Считывать и обрабатывать данные из оперативной памяти процессор будет значительно быстрей, а, следовательно, и система будет работать значительно быстрее в сравнении с тем, если бы массивы данных поступали напрямую из не очень быстрых (по меркам процессорных вычислений) накопителей.

Если бы не было «оперативки», то процесс считывания напрямую с накопителя занимал бы непозволительно огромное, по меркам вычислительной мощности процессора, время.

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

Производительность процессора в любом компьютере всегда ограничена скоростью считывания из оперативной памяти.

Процессоры развиваются так же быстро, как память, поэтому несоответствие в их производительности и скорости сохраняется. Производство полупроводниковых изделий постоянно совершенствуется, поэтому на пластину процессора, которая сохраняет те же размеры, что и 10 лет назад, теперь можно поместить намного больше транзисторов. Как следствие, вычислительная мощность за это время увеличилась. Впрочем, не все производители используют новые технологии для увеличения именно вычислительной мощности. К примеру, производители оперативной памяти ставят во главу угла увеличение ее емкости: ведь потребитель намного больше ценит объем, нежели ее быстродействие. Когда на компьютере запущена программа и процессор обращается к ОЗУ, то с момента запроса до получения данных из оперативной памяти проходит несколько циклов процессора. А это неправильно — вычислительная мощность процессора простаивает, и относительно медленная «оперативка» тормозит его работу.

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

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

Как работает кэш-память

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

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

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

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

Речь идет именно об анализе потока данных и предугадывании команд, которые могут понадобиться в скором будущем (попадании в кэш). Это так называемый идеальный кэш, способный предсказать ближайшие команды и заблаговременно выгрузить их из ОЗУ в ячейки сверхбыстрой памяти. В идеале их надо выбирать таким образом, чтобы конечный результат имел нулевой процент «промахов».

Но как процессор это делает? Процессор что, следит за пользователем? В некоторой степени да. Он выгружает данные из оперативной памяти в кэш-память для того, чтобы иметь к ним мгновенный доступ, и делает это на основе предыдущих данных, которые ранее были помещены в кэш в этом сеансе работы. Существует несколько способов, увеличивающих число «попаданий» (угадываний), а точнее, уменьшающих число «промахов». Это временная и пространственная локальность — два главных принципа кэш-памяти, благодаря которым процессор выбирает, какие данные нужно поместить из оперативной памяти в кэш.

Временная локальность

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

Пространственная локальность

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

Набор таких адресов называется строкой (блоком) кэша, а количество считанных данных — длиной кэша.

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

Иерархия кэш-памяти

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

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

Так же организована и работа быстрых ячеек кэша. Ячейки памяти первого уровня (L1) располагаются на кристалле в непосредственной близости от вычислительного ядра. Эта память — самая быстрая, но и самая малая по объему. В нее помещаются наиболее востребованные данные и команды. Для передачи данных оттуда потребуется всего около 5 тактовых циклов. Как правило, кэш-память первого уровня состоит из двух блоков, каждый из которых имеет размер 32 КБ. Один из них — кэш данных первого уровня, второй — кэш инструкций первого уровня. Они отвечают за работу с блоками данных и молниеносное обращение к командам.

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

Кэш L2, который также содержит команды и данные, занимает уже до 512 КБ, чтобы обеспечить необходимый объем данных кэшу нижнего уровня. Но на обработку запросов уходит в два раза больше времени. Кэш третьего уровня имеет размеры уже от 2 до 32 МБ (и постоянно увеличивается вслед за развитием технологий), но и его скорость заметно ниже. Она превышает 30 тактовых циклов.

Процессор запрашивает команды и данные, обрабатывая их, что называется, параллельными курсами. За счет этого и достигается потрясающая скорость работы. В качестве примера рассмотрим процессоры Intel. Принцип работы таков: в кэше хранятся данные и их адрес (тэг кэша). Сначала процессор ищет их в L1. Если информация не найдена (возник промах кэша), то в L1 будет создан новый тэг, а поиск данных продолжится на других уровнях. Для того, чтобы освободить место под новый тэг, информация, не используемая в данный момент, переносится на уровень L2. В результате данные постоянно перемещаются с одного уровня на другой.

С кэшем связан термин «сет ассоциативности». В L1 блок данных привязан к строкам кэша в определенном сете (блоке кэша). Так, например, 8-way (8 уровень ассоциативности) означает, что один блок может быть привязан к 8 строкам кэша. Чем выше уровень, тем выше шанс на попадание кэша (процессор нашел требуемую информацию). Есть и недостатки. Главные — усложнение процесса и соответствующее снижение производительности.

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

В некоторых политиках записи информация хранится в кэше и основной системной памяти. Современные процессоры работают следующим образом: когда данные пишутся в кэш, происходит задержка перед тем, как эта информация будет записана в системную память. Во время задержки данные остаются в кэше, после чего их «вытесняет» в ОЗУ.

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

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

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