3

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

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

4 ответа4

11

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

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

Разница между кэшами L2 и L3 является компромиссной частью. Кэши сделаны из статической оперативной памяти или SRAM. Это отличается от динамического ОЗУ (DRAM), которое составляет вашу основную память. Динамическое ОЗУ необходимо периодически "обновлять", то есть со временем ячейки DRAM теряют свое значение, если они не считываются, а затем перезаписываются. Ваш контроллер памяти делает это автоматически, но каждый раз, когда контроллер памяти должен делать это (тысячи раз в секунду), он не может читать / записывать значения для процессора, пока это не будет сделано. Это замедляет DRAM. SRAM не имеет этого ограничения, SRAM будет сохранять свое значение в течение неопределенного времени, пока у него есть рабочая мощность, что делает его намного быстрее. Итак, ваши кеши (как L2, так и L3) сделаны из SRAM. Проблема в том, что SRAM очень дорог; в то время как 4 ГБ высокоскоростной DRAM немного дорогой, но доступный, 4 ГБ SRAM намного выше вашего ценового диапазона.

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

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

1

Многоуровневые кэши - это, прежде всего, компромисс между емкостью и стоимостью доступа (задержка / время и энергия).

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

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

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

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

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

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

0

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

Существует три уровня кэша процессора (два в одноядерном режиме), оперативной памяти (вторичной) и жестких дисков (третичной).

0

Процессоры имеют многоуровневый кеш, такой как l1, l2 и l3.

L1 - самый быстрый кеш, но также и самый дорогой. L2 приходит на втором месте и обсуждается больше всего. И после того L3, которые идут после L2.

Чем быстрее кеш, тем быстрее процессор считывает данные и записывает в них.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .