Что быстрее кэш или регистры

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

Что быстрее? Кэш или регистры процессора?

Вот те источники, которые я нашел, что смущает меня:

2 для кеша | 1 для регистров

Кэш быстрее.

ОТВЕТЫ

Ответ 1

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

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

Итак, что нужно, так это то, что регистр ЦП всегда быстрее, чем кэш L1. Он ближе всего. Разница примерно в 3 раза.

Ответ 2

В частности, архитектура x86:

Чтение из регистра может иметь 1-часовую задержку на процессорах Intel Core 2 (и более ранних моделях) из-за его дизайна: если достаточно одновременных команд-инструкций считываются из разных регистров, банк регистров ЦП не сможет обслуживать все запросов за один цикл. Это ограничение дизайна отсутствует в любом чипе x86, который был поставлен на потребительский рынок с 2010 года (но он присутствует в некоторых чипах Xeon, выпущенных в 2010/11 годах).

Задержки кэша L1 фиксированы для каждой модели, но, как вы возвращаетесь во времени, к более старым моделям, они становятся медленнее. Однако имейте в виду три вещи:

Процессоры x86 в эти дни имеют кэш обратной записи с задержкой 0 циклов. Когда вы храните значение в память, оно попадает в этот кеш, и инструкция может уйти в отставку за один цикл. Задержка латентности становится видимой только тогда, когда вы выдаете достаточную последовательную запись для заполнения кэша обратной записи. Кэши обратной записи были заметны в дизайне настольных чипов с 2001 года, но до недавнего времени они широко отсутствовали на рынке мобильных чипов на базе ARM.

Чипы x86 в эти дни имеют переадресацию магазина из кэша обратной записи. Если вы храните адрес в кэш-памяти WB, а затем читаете один и тот же адрес несколько инструкций позже, CPU будет извлекать значение из кэша WB вместо доступа к памяти L1 для него. Это уменьшает видимую задержку на том, что кажется запросом L1 для 1 цикла. Но на самом деле, L1 в этом случае вообще не ссылается. У пересылки также есть некоторые другие правила, чтобы он работал правильно, что также сильно варьируется в зависимости от различных доступных сегодня на рынке процессоров (обычно требуется 128-битное выравнивание адресов и размер совпадающих операндов).

Функция пересылки в хранилище может генерировать ложные срабатывания, когда ЦП считает, что адрес находится в буфере обратной записи на основе быстрой проверки частичных бит (обычно 10-14 бит, в зависимости от чипа). Он использует дополнительный цикл для проверки с полной проверкой. Если это не удастся, ЦП должен перенаправить в качестве обычного запроса на память. Эта пропущенность может добавить дополнительную задержку в 1-2 цикла для получения доступа к кэшу L1. В моих измерениях, например, на AMD Bulldozer часто случаются пропуски при пересылке, например; достаточно, чтобы время задержки латентного кэша L1 было на 10-15% выше, чем его документированные 3-циклы. Это почти не фактор для серии Intel Core.

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

Источник

Русские Блоги

Различия и связи между памятью, регистрами и кешем

3. Регистр является компонентом внутри ЦПУ, он имеет очень высокую скорость чтения и записи, поэтому передача данных между регистрами очень быстрая.
4. CacheКеш-памятьЭто небольшая, но высокоскоростная память, расположенная между процессором и основной памятью, Поскольку скорость ЦП намного выше, чем у основной памяти, ЦП в течение определенного периода времени ожидает прямого доступа к данным из памяти.Кэш содержит часть данных, которые процессор только что использовал или переработалКогда ЦП снова использует часть данных, их можно напрямую вызывать из кэша, что сокращает время ожидания ЦП и повышает эффективность системы.Кэш-память делится на кэш первого уровня (кэш-память первого уровня) и кэш-память второго уровня (кэш-память второго уровня), кэш-память первого уровня встроена в центральный процессор., L2 Cache обычно паялся на материнской плате в первые дни,Теперь также все встроено в процессорОбщая емкость кэш-памяти L2 составляет 256 КБ или 512 КБ.

Сначала посмотрите на пирамиду иерархии памяти компьютера

Что быстрее кэш или регистры. Смотреть фото Что быстрее кэш или регистры. Смотреть картинку Что быстрее кэш или регистры. Картинка про Что быстрее кэш или регистры. Фото Что быстрее кэш или регистры

Далее мы рассмотрим систему хранения компьютера

Что быстрее кэш или регистры. Смотреть фото Что быстрее кэш или регистры. Смотреть картинку Что быстрее кэш или регистры. Картинка про Что быстрее кэш или регистры. Фото Что быстрее кэш или регистры

Register

Регистр является внутренним компонентным блоком ЦПУ, и это место, где ЦП извлекает инструкции и данные во время работы. Скорость очень высокая. Регистр может использоваться для временного хранения инструкций, данных и адресов. В CPU обычно имеются общие регистры, такие как регистр команд IR, регистры специальных функций, такие как счетчик программ PC, sp и т. Д.

Cache

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

ЦП регистр кэш память

Рабочий метод регистра очень прост, есть только два шага: (1) найти соответствующие биты, (2) прочитать эти биты.

Работа памяти намного сложнее:

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

(2) Отправить указатель наБлок управления памятью(MMU), адрес виртуальной памяти преобразуется MMU в фактический физический адрес.

(3) Отправить физический адрес контроллеру памяти (memory controller), Контроллер памяти выясняет, в каком слоте памяти (банке) находится адрес.

(4) Определите, в каком блоке памяти находятся данные, и прочитайте данные из блока.

(5) Данные сначала отправляются обратно в контроллер памяти, затем обратно в ЦП, а затем начинают использоваться.

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

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

RAM-memory

HardDisk

Автор: Страна беременна
Ссылка: http://www.zhihu.com/question/20075426/answer/16354329
Источник: Жиху
Авторские права принадлежат автору, пожалуйста, свяжитесь с автором для авторизации.

Процесс выполнения инструкции по сборкеНе абсолютно, разные платформы имеют различия):

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

Давайте упомянем концепцию частоты процессора: во-первых, частота определенно не равна количеству команд, которые могут быть выполнены за одну секунду. Стоимость выполнения каждой инструкции различна. Например, инструкция по сборке INC на платформе x86 быстрее, чем ADD. Цикл каждой инструкции может ссылаться на руководство Intel.

Зачем упоминать основную частоту? Поскольку в описанном выше процессе выполнения каждая операция должна занимать один тактовый цикл, для добавления оперативной памяти требуется 5 тактовых циклов, другими словами, частота процессора 500 МГц, не более 100 МГц инструкций.

Внимательно следите за тем, чтобы вышеуказанные шаги не включали операции с регистрами. Процессору не требуется время для чтения / записи регистров или если он предназначен только для работы с регистрами (такими как операции типа mov BX, AX), а затем выполняется за одну секунду Количество инструкций в теории равно основной частоте, потому что регистр является частью процессора.

Затем регистр является кешем на всех уровнях, есть кэш L1, L2, даже L3 и TLB (TLB также можно рассматривать как кэш), а затем это память. Ранее регистр говорил, что регистр быстрый, а теперь почему он медленный:

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

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

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

Чтобы дать более понятный пример:

Процессору нужен только один шаг, чтобы получить значение регистра AX: принесите мне AX, и AX получит его.
Чтобы получить определенное значение кэша L1, ЦП требуется 1-3 шага (или больше): заблокировать строку кэша, взять определенные данные и разблокировать их. Если он не заблокирован, он будет работать медленно.
ЦП должен принять определенное значение кеша L2, он должен сначала перейти в кеш L1, сказал L1, нет, в L2 L2 начинает блокировку, после блокировки копирует данные из L2 в L1, а затем выполняет чтение L1 Процесс, описанный выше 3 шага, затем разблокировать.
То же самое относится и к процессору, который принимает кэш L3, за исключением того, что он копируется из L3 в L2, из L2 в L1 и из L1 в CPU.
Извлечение памяти из ЦП является наиболее сложным: уведомить контроллер памяти о том, что он занимает полосу пропускания шины, уведомить о блокировке памяти, инициировать запрос чтения из памяти, дождаться ответа, сохранить данные ответа в L3 (если нет, перейти в L2), а затем из L3 / 2 в L1, а затем От L1 до CPU, затем отпустите блокировку шины.

Разница между дисковым кешем и кешем памяти

Кеш памяти

Cache (английский: кеш, английское произношение: / kæʃ / kash [1] [2] [3], называемый кешем), его первоначальное значение относится к виду оперативной памяти с более высокой скоростью доступа, чем общая оперативная память (RAM), Обычно он не использует технологию DRAM, такую ​​как системная память, но использует дорогую, но более быструю технологию SRAM.

принцип
Термин Cache взят из статьи 1967 года в электронном инженерном журнале. Автор дал французскому слову «кеш» значение «безопасного хранения» и использовал его в области компьютерной техники.

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

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

Зеркальное отображение и преобразование адресов
Основная статья: CPU cache # Group Ассоциации
Поскольку объем основной памяти намного больше, чем объем кэша ЦП, между ними должно быть соответствующее правило. Зеркальное отображение адресов относится к загрузке блока основной памяти в кеш согласно определенному правилу. Преобразование адреса относится к тому, как преобразовывать физический адрес (физический адрес) или виртуальный адрес (виртуальный адрес) основной памяти в адрес кэша ЦП каждый раз, когда блок основной памяти загружается в кэш согласно определенному способу зеркального отображения. Для доступа к данным.

Дисковый кеш

Жесткий диск с буфером 16 МБ
Дисковый кеш (Disk Buffer) или дисковый кеш (Disk Cache) фактически предназначен для сохранения загруженных данных в пространстве памяти, выделенном системой для программного обеспечения (это пространство памяти называется «пул памяти»), при сохранении в Когда данные в пуле памяти достигают определенного уровня, данные сохраняются на жесткий диск. Это может уменьшить фактические операции с диском и эффективно защитить диск от повреждения, вызванного повторными операциями чтения и записи.

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

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

размер
Текущие диски обычно имеют кэш 32 МБ или 64 МБ. Старые жесткие диски 8 МБ или 16 МБ.

Источник

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

Что быстрее? Кэш или регистры CPU?

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

Вот источники, которые я нашел, которые меня смущают:

2 для кэша | 1 для регистров

Кэш работает быстрее.

Так что же это на самом деле?

2 ответа

Несколько CPU регистры и кэш-CPU-другому?

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

CPU регистр всегда быстрее, чем кэш L1. Это самое близкое. Разница примерно в 3 раза.

Пытаясь сделать это как можно более интуитивно понятным, не теряясь в физике, лежащей в основе вопроса: в электронике существует простая корреляция между скоростью и расстоянием. Чем дальше вы перемещаете сигнал, тем сложнее передать его на другой конец провода без повреждения сигнала. Это «there is no free lunch» принцип электронного дизайна.

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

Файл регистра в процессоре невелик и находится физически близко к механизму выполнения. Наиболее удаленным от процессора является RAM. Вы можете открыть футляр и действительно увидеть провода между ними. Между ними находятся тайники, предназначенные для преодоления драматического разрыва между скоростью этих двух противоположностей. Каждый процессор имеет кэш L1, относительно небольшой (обычно 32 KB) и расположенный ближе всего к ядру. Ниже находится кэш L2, относительно большой (обычно 4 MB) и расположенный дальше от ядра. Более дорогие процессоры также имеют кэш L3, больше и дальше.

В частности, на архитектуре x86:

Чтение из регистра может иметь задержку в 1 цикл на Intel Core 2 CPUs (и более ранних моделях) из-за его конструкции: если достаточное количество одновременно выполняемых инструкций считывается из разных регистров, банк регистров CPU не сможет обслуживать все запросы за один цикл. Это ограничение дизайна отсутствует ни в одном чипе x86, который был представлен на потребительском рынке с 2010 года (но оно присутствует в некоторых чипах 2010/11-released Xeon).

Задержки кэша L1 фиксируются для каждой модели, но, как правило, становятся медленнее, когда вы возвращаетесь во времени к старым моделям. Однако имейте в виду три вещи:

x86 чипы в наши дни имеют кэш обратной записи с задержкой 0 циклов. Когда вы сохраняете значение в памяти, оно попадает в этот кэш, и инструкция может удалиться за один цикл. Задержка в памяти становится видимой только в том случае, если вы выполняете достаточно последовательных операций записи, чтобы заполнить кэш обратной записи. Кэш обратной записи был заметен в дизайне настольных чипов примерно с 2001 года, но до недавнего времени он отсутствовал на рынках мобильных чипов на базе ARM.

x86 чипы в наши дни имеют переадресацию хранилища из кэша обратной записи. Если вы сохраняете адрес в кэше WB, а затем считываете тот же адрес несколькими инструкциями позже, CPU будет извлекать значение из кэша WB вместо доступа к памяти L1 для него. Это уменьшает видимую задержку на том, что кажется запросом L1, до 1 цикла. Но на самом деле в этом случае на L1 вообще нельзя ссылаться. Переадресация хранилища также имеет некоторые другие правила для правильной работы, которые также сильно различаются в различных CPUs, доступных сегодня на рынке (как правило, требуется 128-битное выравнивание адресов и соответствующий размер операнда).

А затем вручную отобразите информацию из этого с таблицами по архитектурам, моделям и датам выпуска из различных списков CPUs страниц в Википедии.

Теоретически, на современном CPUs который быстрее: получение NOT результата из таблицы или вычислить его по операции

(в C)? Предположим, что вся таблица помещается в кэш L1. Побитовое нет: uint8_t bitwise_not(uint8_t arg) < return

arg; > Стол не: // precalculcating table (once) uint8_t.

Почему версия 1 быстрее, чем версия 2 при компиляции с MSVC++? Версия 1: for (int i = 0; i

Похожие вопросы:

Я знаю, что это очень простой вопрос, но я не мог найти на него ответа. Являются ли регистры в x86 assembly (eax, ebx edx и т. д.) подписанными или неподписанными? Если они подписаны по умолчанию.

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

Регистровые переменные-это хорошо известный способ получить быстрый доступ ( register int i ). но почему регистры находятся на вершине иерархии (регистры, кэш, основная память, вторичная память).

Несколько CPU регистры и кэш-CPU-другому?

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

Теоретически, на современном CPUs который быстрее: получение NOT результата из таблицы или вычислить его по операции

(в C)? Предположим, что вся таблица помещается в кэш L1. Побитовое нет: uint8_t.

Источник

Зачем процессорам нужен кэш и чем отличаются уровни 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.

Источник

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

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