Многоуровневый кэш

Число портов кэш

Ни один кэш (как и вообще ни одна система памяти) не может обеспечить возможность выполнения одновременно любого произвольного числа операций чтения/записи. Но большинство систем кэш памяти таки обеспечивают возможность одновременного выполнения нескольких операций. То, сколько именно операций чтения\записи в кэш одновременно возможны, характеризует такой параметр памяти как "число портов". Число портов влияет на эффективность использования памяти, так и другие уже ранее упоминавшиеся параметры реализации (латентность кэш, размер кэш, степень ассоциативности, эффективность алгоритма предварительной интеллектуальной загрузки…).

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

П
Контроллер кэш
ОЗУ
Кеш 2
Кеш 1
Кеш 3


На рисунке:

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

Кеш 2 (кэш среднего уровня) – занимает промежуточное положение между кэшем 1 и кэшем 3. Число уровней кэширования может быть любым.

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

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

П2
К1.2
К2.1
П1
К1.1
К2.1
Пn
К1.n
К2.n
К3
ОЗУ


П1-Пn – процессоры;

К1.1 – кэш первого уровня первого процессора;

К2.1 – кэш второго уровня первого процессора (меньший по скорости но больший по объёму чем К1.1);

Далее, соответственно:

К1.2 – кэш первого уровня второго процессор;

К2.2 – кэш второго уровня второго процессора;

и.т.д. для всех n процессоров

К3 – кеш третьего уровня, общий кэш для всех процессоров;

По способу реализации, системы многоуровневого кэширования делятся на:

а) Эксклюзивной организации (эксклюзивные кэш)

б) Инклюзивной организации (инклюзивные кэш)

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

Инклюзивное кэширование – когда новая строка заносится в кэш, то она, как правило заносится сразу во все кэш этого процессора всех уровней, и если есть общий с другими процессорами кэш, то и в этот общий кэш также (могут быть и некоторые исключения, и если они есть, то такой кэш иногда называют уже не "инклюзивным" а "не инклюзивным"). Размещение новых строк одновременно во всех кэш приводит к неэкономному использованию кэш памяти (из за того одни и те же строки хранятся во множестве экземпляров), но зато когда дело доходит до удаления этой строки, её не нужно будет переписывать в кэш более верхнего уровня а можно просто удалить (поскольку в кэш более высокого уровня содержится её копия). Суммарный объём кэшируемой информации в данном случае будет не столь велик как при эксклюзивной организации, он будет не более чем объём кэш наиболее высокого уровня. Но зато организация системы кэширования проще, и какие-то из операций по занесению новых строк в кэш и вытеснению старых могут выполняться и чуть быстрее.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: