Кэш – память и принципы ее организации, страница 2

Заметим, что для увеличения скорости блочных пересылок между основной памятью и кэш-памятью желательно, чтобы с увеличением размера блоков росла и разрядность шины данных между ОП и кэш-памятью. (В этом, например, заключается основной смысл введения 64-разрядной шины данных в 32-разрядных процессорах семейства Pentium).

Исследованиями виднейших специалистов в области систем программирования (в частности Д.Кнутом) было установлено, что линейные участки программ (т.е. участки, в которых отсутствуют команды переходов) обычно не превышают 3…5 команд, а значит, и нет особого смысла в использовании блоков, размер которых превышает эту величину. Поэтому типичный размер применяемых в современных компьютерах блоков составляет 16, 64, 128 и 256 байт. В персональных компьютерах, создаваемых на микропроцессорах типа i486 информация загружалась в кэш блоками по 16 байт, а в процессорах линии Pentium - по 32 байта. В современных процессорах микроархитектуры Nehalem размер блока принят равным 64 байт.

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

Обращение к основной памяти может начинаться одновременно с поиском в кэш-памяти, а в случае попадания (cache hit) – прерываться. Такая технология носит название технологии Look aside. При ее использовании время доступа к требуемой информации сокращается, но зато увеличивается энергопотребление.

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

2. Организация и функционирование.

Поскольку кэш-память по объему значительно меньше основной оперативной памяти (на 2-3 порядка и более) то встает вопрос о способах отображения кэшируемой оперативной памяти в буферную кэш-память. В зависимости от способа этого отображения различают следующие разновидности кэш-памятей.

·  Кэш с прямым отображением (Direct-mappedcache).

·  Полностью ассоциативный кэш (Fully associative cache).

·  Наборно-ассоциативный  кэш (Set-associativecache), часто называемый множественно-ассоциативным.

Кэш-память с прямым отображением.

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

Предположим, что в компьютере используется 32-разрядный физический адрес. Размер блока пусть будет равным 16 байтам, а емкость кэш-памяти – 8 Кбайт. В этом случае для формирования адреса в кэш-памяти достаточно 13 разрядов, из которых 4 младших разряда определяют один из 16 байт в блоке, а 9 старших разрядов адресуют один из 512 блоков (строк) кэш-памяти. В соответствии с этим, физический адрес, выдаваемый процессором, можно разбить на 3 поля: старшие 19 разрядов – признак или тэг (Tag), средние 9 разрядов – индекс (Index) или номер строки и младшие 4 разряда – смещение или номер байта в строке.

Тэг – определяет как бы страницу адресного пространства оперативной памяти, где находится требуемый блок данных, т.е. некоторый массив соседних ячеек оперативной памяти. Таких страниц во всем адресном пространстве оперативной памяти в случае нашего примера может быть до 219 , а каждая страница содержит по 232 : 219 = 213 =8 Кбайт.

Для пояснения понятия страницы, на стр. 80, приведена таблица адресов, которая иллюстрирует возможные разбиения адресного пространства на страницы. В приведенном выше перечне адресов адресного пространства, объемом 288 байт, можно выделить, например, 16 страниц 4 битовых адресов, или 8 страниц 5 битовых адресов, или 4 страницы 6 битовых адресов и т.д.

   Рис.IV.2   Организация кэш-памяти объемом 8 Кбайт

                        с прямым отображением.

Индекс – определяет номер строки кэш-памяти, в которую заносится из оперативной памяти блок информации, размером 16 байт. Напомним, что размер блока в 16 байт характерен для процессоров типа i386 и i486. Размер блока в процессорах линии Pentium имеет значение 32 байта, а в современных процессорах микроархитектуры Nehalem размер блока принят равным 64 байт.

К понятию страниц в адресном пространстве памяти компьютера.

00000000        00110000        01100000        10010000        11000000            11110000

00000001        00110001        01100001        10010001        11000001            11110001

00000010        00110010        01100010        10010010        11000010            11110010

00000011        00110011        01100011        10010011        11000011            11110011

00000100        00110100        01100100        10010100        11000100            11110100

00000101        00110101        01100101        10010101        11000101            11110101

00000110        00110110        01100110        10010110        11000110            11110110

00000111        00110111        01100111        10010111        11000111            11110111