Как работают кеши процессоров L1 и L2 и почему они являются неотъемлемой частью современных чипов

Как работают кеши процессоров L1 и L2 и почему они являются неотъемлемой частью современных чипов

Разработка кешей и кеширование - одно из самых значительных событий в истории вычислений. Практически каждый современный процессорный ядро ​​от микросхем с ультранизким энергопотреблением, таких как ARM Cortex-A5, к высокопроизводительному Intel Core i7 использует кеши. Даже более высокопроизводительные микроконтроллеры часто имеют небольшие кеши или предлагают их в качестве опций - преимущества в производительности слишком велики, чтобы игнорировать даже в проектах с ультранизким энергопотреблением.

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

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

Как работает кеширование

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

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

Как работают кеши процессоров L1 и L2 и почему они являются неотъемлемой частью современных чипов

На этой диаграмме показана взаимосвязь между кешем L1 с постоянным коэффициентом попадания, но большим кэшем L2. Обратите внимание, что общий коэффициент попадания резко возрастает по мере увеличения размера L2. Более крупный, более медленный, более дешевый L2 может обеспечить все преимущества большого L1 - но без ограничения размера и мощности потребления. Большинство современных коэффициентов кеширования L1 имеют более высокие показатели, чем теоретические 50%, показанные здесь. Intel и AMD, как правило, занимают отметки в кэше на уровне 95 процентов или выше.

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

На противоположном конце спектра у нас есть карты с прямым отображением. Кэш с прямым отображением - это кеш, в котором каждый блок кэша может содержать один и только один блок основной памяти. Этот тип кеша можно искать очень быстро, но поскольку он отображает 1: 1 в ячейки памяти, он имеет низкий коэффициент попадания. В промежутке между этими двумя крайностями используются n-way ассоциативные кэши. 2-сторонний ассоциативный кеш (Piledriver's L1 - 2-way) означает, что каждый блок основной памяти может отображать один из двух блоков кэша. 8-портовый ассоциативный кеш означает, что каждый блок основной памяти может находиться в одном из восьми блоков кэша.

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

Как работают кеши процессоров L1 и L2 и почему они являются неотъемлемой частью современных чипов

Почему кеши процессора продолжают увеличиваться

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

Как работают кеши процессоров L1 и L2 и почему они являются неотъемлемой частью современных чипов

Эта диаграмма из обзора Haswell от Anandtech полезна, потому что на самом деле это иллюстрирует влияние производительности на добавление огромного (128 МБ) кэша L4, а также обычных структур L1 / L2 / L3. Каждый шаг лестницы представляет собой новый уровень кеша. Красная линия - это чип с L4 - заметьте, что для больших размеров файлов он по-прежнему почти в два раза быстрее, чем два других чипа Intel.

Тогда может показаться логичным посвятить огромное количество ресурсов для уничтожения на кеш-памяти - но, оказывается, существует уменьшающийся маргинальный возврат к этому. Большие кеши являются более медленными и более дорогими. На шести транзисторах на бит SRAM (6T) кеш также дорогой (с точки зрения размера матрицы и, следовательно, долларовой стоимости). Прошлое некоторое время, имеет смысл потратить бюджет мощности микросхемы и количество транзисторов на большее количество исполнительных блоков, лучшее предсказание ветвления или дополнительные ядра. В верхней части истории вы можете увидеть изображение чипа Pentium M (Centrino / Dothan); вся левая часть матрицы предназначена для массивного кеша L2.

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

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

Представьте себе, что ЦП должен загружать данные из кеша L1 100 раз подряд. Кэш L1 имеет латентность доступа 1 нс и 100% -ную скорость атаки. Поэтому для выполнения этой операции требуется наш процессор 100 наносекунд.

Haswell-E die shot (нажмите, чтобы увеличить). Повторяющиеся структуры в середине чипа составляют 20 Мбайт общего кэша L3.
Haswell-E die shot (нажмите, чтобы увеличить). Повторяющиеся структуры в середине чипа составляют 20 Мбайт общего кэша L3.

Теперь предположим, что кеш имеет 99-процентный коэффициент попадания, но данные, которые действительно нужны ЦП для его 100-го доступа, находятся в L2 с 10-часовой задержкой доступа (10 нс). Это означает, что процессорные наносекунды процессора 99 выполняют первые 99 считываний и 10 наносекунд для выполнения 100-го. Снижение скорости атаки на 1 процент только замедлило снижение КПД на 10 процентов.

В реальном мире кеш L1 обычно имеет коэффициент попадания между 95 и 97 процентами, но влияние этих двух значений на нашем простом примере не составляет 2% - это 14%. Имейте в виду, мы предполагаем, что пропущенные данные всегда находятся в кэше L2. Если данные были выведены из кеша и находятся в основной памяти, с задержкой доступа 80-120ns, разница в производительности между 95 и 97 процентами попаданий может почти удвоить общее время, необходимое для выполнения кода.

Назад, когда семейство Bulldozer AMD сравнивалось с процессорами Intel, тема дизайна кеша и производительности повлияла на многое. Неясно, сколько из низкой производительности Bulldozer можно обвинить в относительно медленной кеш-подсистеме - помимо наличия относительно высоких задержек, семейство Bulldozer также страдает от большого количества конфликтов кеша. Каждый модуль Bulldozer / Piledriver / Steamroller поделился своим кэшем команд L1, как показано ниже:

Как работают кеши процессоров L1 и L2 и почему они являются неотъемлемой частью современных чипов

Кэш рассматривается, когда два разных потока записывают и перезаписывают данные в одном и том же пространстве памяти. Это ущемляет производительность обоих потоков - каждое ядро ​​вынуждено тратить время на запись своих предпочтительных данных в L1, только для другого ядра оперативно переписывать эту информацию. Проблема с AMD STDER Steamroller по-прежнему запуталась в этой проблеме, хотя AMD увеличила кеш-код L1 до 96 КБ и сделала его трехсторонней ассоциативной, а не двух. Позже Ryzen CPU не разделяют кеш таким образом и не страдают от этой проблемы.

Как работают кеши процессоров L1 и L2 и почему они являются неотъемлемой частью современных чипов

Этот график показывает, как скорость атаки Opteron 6276 (оригинальный процессор Bulldozer) упала, когда оба ядра были активны, по крайней мере, в некоторых тестах. Ясно, однако, что конкуренция с кешем - это не единственная проблема - 6276 исторически изо всех сил пыталась превзойти 6174, даже когда оба процессора имели одинаковые коэффициенты попадания.

Кэширование

Структура и дизайн кэша до сих пор точно настроены, поскольку исследователи ищут способы сжать более высокую производительность из меньших кешей. До сих пор производители, такие как Intel и AMD, не стали резко продвигаться к более крупным кэшам или к принятым проектам вплоть до L4. Есть некоторые процессоры Intel с встроенным EDRAM, у которых есть кеш L4, но этот подход необычен (поэтому мы использовали пример Haswell выше, хотя этот процессор старше на данный момент. Предположительно, преимущества кэша L4 еще не перевешивают издержки.

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

Ознакомьтесь с нашей серией wfoojjaec Explains для более глубокого освещения сегодняшних горячих тем.

Читать далее

Modder Wires Iconic 1970 TV Up для современного ПК, консольные игры

Моддеру удалось подключить JVC Videosphere до последних консолей от Sony, Microsoft и Nintendo.

Западная версия Yakuza Kiwami 2 обновляет классический PS2-Era для современной эпохи

Хотя этот римейк второй партии на PS2 поражает все те же удары, он действительно чувствует себя как настоящий современный релиз. Даже для тех из нас, кто уже был на поезде Якудза в поздних ботах, стоит изучить этот любовно обработанный римейк.