Прямое отображение
При прямом отображении адрес строки i кэш-памяти, на которую может быть отображен блок j из ОП, однозначно определяется выражением:
i = j mod m,
где m – число строк в кэш-памяти.
В нашем примере i = j mod 128,
где i может принимать значения от 0 до 127, а адрес блока j – от 0 до 16383.
Пояснение найдем на рис. 2.
ОП условно представлена в виде двухмерного массива блоков (рис. 2). Количество рядов (строк) равно числу строк в кэш-памяти. В каждом ряду последовательно перечислены блоки, переадресуемые на одну и ту же строку кэш-памяти.
При реализации такого отображения 14-разрядный адрес блока ОП условно разбит на два поля. Логика кэш-памяти интерпретирует эти 14 бит как 7-разрядный тег и 7-разрядное поле строки. Поле строки указывает одну из 128 строк кэш-памяти, а именно ту, куда может быть произведено отображение блока с заданным адресом. Поле тега определяет, какой именно из списка блоков, закрепленных за данной строкой, будет отображен.
Когда блок фактически заносится в память данных КЭШа, в память тегов необходимо записать тег этого блока. Тегом служат 7 старших разрядов адреса блока.
Прямое отображении – простой и недорогой в реализации способ отображения. Основной его недостаток – жесткое закрепление за определенными блоками ОП одной и той же строки в КЭШе. Поэтому, если программа поочередно обращается к словам из двух различных блоков, отображаемых на одну и ту же строку КЭШа, постоянно станет происходить обновление данной строки и попадания будет низкой.
Полностью ассоциативное отображение
Полностью ассоциативное отображение позволяет преодолеть недостаток прямого, разрешая загрузку любого блока ОП в любую строку кэш-памяти.
Логика управления кэш-памяти выделяет в адресе ОП два поля: поле тега и поле слова.
Поле тега совпадает с адресом блока основной памяти. Для проверки наличия копии блока в кэш-памяти логика управления КЭШа должна одновременно проверить теги всех строк на совпадение с полем тега адреса. В строке «Адрес блока в КЭШе» памяти тегов указан адрес положения блока в памяти данных кэш-памяти. Этому требованию наилучшим образом отвечает ассоциативная память, то есть тег должен храниться в ассоциативной памяти тегов КЭШа. Логика работы такой кэш-памяти иллюстрируется на рисунке 3.
Блок 2 находится во второй строке памяти данных КЭШа. Тег этого блока в памяти тегов = 2 (столбце «Тег»), а рядом в столбце «Адрес блоков в КЭШе» запоминается номер строки, где расположен этот блок в памяти данных.
Полностью ассоциативное отображение
Полностью ассоциативное отображение позволяет преодолеть недостаток прямого, разрешая загрузку любого блока ОП в любую строку кэш-памяти.
Логика управления кэш-памяти выделяет в адресе ОП два поля: поле тега и поле слова.
Поле тега совпадает с адресом блока основной памяти. Для проверки наличия копии блока в кэш-памяти логика управления КЭШа должна одновременно проверить теги всех строк на совпадение с полем тега адреса. В строке «Адрес блока в КЭШе» памяти тегов указан адрес положения блока в памяти данных кэш-памяти. Этому требованию наилучшим образом отвечает ассоциативная память, то есть тег должен храниться в ассоциативной памяти тегов КЭШа. Логика работы такой кэш-памяти иллюстрируется на рисунке 3.
Блок 2 находится во второй строке памяти данных КЭШа. Тег этого блока в памяти тегов = 2 (столбце «Тег»), а рядом в столбце «Адрес блоков в КЭШе» запоминается номер строки, где расположен этот блок в памяти данных.
|
|
ПАМЯТЬ |
|
|
|
|
|
|
Тег Строка |
|
Строка |
|
тегов |
данных |
|
0 |
1 |
2 |
|
127 |
|
0 |
|
0 |
Блок 0 |
|
Блок 0 |
Блок 128 |
Блок 256 |
|
|
0 |
1 |
|
2 |
Б лок 2 57 |
|
Блок 1 |
Блок 129 |
Блок 257 |
|
|
1 |
2 |
|
1 |
Блок 130 |
|
Блок 2 |
Блок 130 |
Блок 258 |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
127 |
|
127 |
Блок 16383 |
|
Блок 127 |
Блок 255 |
Блок 383 |
|
Блок 16383 |
127 |