Files
2025-06-20 12:48:16 +03:00

31 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#### Кэш прямого отображения(Direct mapped cache). Поля строки/блока кэша. Проецирующая функция.
**Кэш прямого отображения** - стратегия размещения блока основной памяти в кэше, где блок размещается в одном строго определенном месте, определяемом функцией размещения.
Существует три стратегии размещения или проецирования блока основной памяти в кэш:
1. **Direct mapped cache**
Строго в одно определенное место, определяемое функцией проецирования: index = (адрес блока) MOD (число блоков в кэше)
2. **Fully associative cache**
В любом месте (нет проецирующей функции).
3. **Set associative cache:**
В ограниченном наборе мест. Набор - группа блоков в кэше. Блок проецируется строго на один набор, но он может размещен в любом месте набора. Функция проецирования:
index = (адрес блока) MOD (число блоков в кэше)
Кэш, имеющий n блоков в наборе называется $n$-канальным наборно-ассоциативным ($n$-way set-associative).
**Функция проецирования** - функция, определяющая место размещения данных из основной памяти в кэше.
Для любой строки кэша нужно хранить:
1. Кэшированные данные.
2. Адрес оперативной памяти, из которой данные кэшированы. Если адрес совпадает с адресом, к которому мы обратились, значит там наши данные. В противном случае надо читать данные из памяти.
3. Бит валидности - признак того, что содержимое записи кэша актуально, т.е строка действительно содержит закэшированные данные.
32-битный адрес разбивается на следующие поля:
1. Последние 2 бита - биты смещения.
Относятся к адресации внутри кэш-блока, т.е это внутри блока байты с номерами 0,1,2,3.
2. Предыдущие 3 бита - биты, которые были получены от операции:
(адрес блока) MOD (число блоков в кэше)
3. Все остальное - тег.
Возможные адреса блоков, которые могут храниться в конкретной записи в кэше. Если тэг из кэша равен тэгу из адреса, по которому обратились, и бит валидности установлен, то диагностируем попадание и берем данные из кэша.