WIP: 09 - Принципы организации кэш-памяти #38
@ -0,0 +1,47 @@
|
||||
---
|
||||
tags:
|
||||
- служебное/в_процессе
|
||||
pun: Я отказался от хлеба, и теперь все мои проблемы... Крошечные!
|
||||
author: mrqiz
|
||||
revised:
|
||||
---
|
||||
# Кэш-память
|
||||
|
||||
> **Кэш-память** - промежуточный буфер, предназначенный для хранения информации, которая будет запрошена с наибольшей вероятностью.
|
||||
|
||||
## Основные принципы организации кэша
|
||||
|
||||
- **Принцип временной локальности** - имеется высокая вероятность многократного обращения к конкретным данным в памяти в рамках короткого промежутка времени.
|
||||
- **Принцип пространственной локальности** - имеется высокая вероятность обращения к нескольким рядом стоящим ячейкам памяти.
|
||||
|
||||
## Виды кэш-памяти и их принцип работы
|
||||
|
||||
### Полностью ассоциативная кэш-память (ПАКП)
|
||||
|
||||
Чтобы процессор мог прочитать данные из памяти - ему необходимо указать адрес из нескольких битов, в котором лежат эти данные. Для идентификации данных в ПАКП требуется взять 20 старших битов адреса.
|
||||
|
mrqiz marked this conversation as resolved
|
||||
|
||||
У каждой ячейки памяти есть свой "тег" - часть адреса, которая говорит о том, какие данные лежат в строке. При запросе данных из памяти происходит сравнение 20 старших битов данных с тегами всех строк в кеше.
|
||||
|
ElectronixTM
commented
Думаю, что не данных, а адреса И правильно ли я понимаю, что тег, это как раз и есть те самые первые 20 бит? > происходит сравнение 20 старших битов данных
Думаю, что не данных, а адреса
И правильно ли я понимаю, что тег, это как раз и есть те самые первые 20 бит?
mrqiz
commented
Да, данных Как понимаю, это тег Да, данных
Как понимаю, это тег
|
||||
|
||||
Собственно, есть понятия кэш-попадания и кэш-промаха. Первое говорит о том, что тег из адреса имеет совпадение с каким-то тегом из кэша, соответственно есть возможность получить данные из кэша (что будет быстрее, чем идти за ними в основную память). Кэш-промах же говорит о том, что таких данных в кэше нет и придется обратиться в память.
|
||||
|
||||
Минус ПАКП - необходимость использования большого количества тразнзисторов для сравнения адреса с тегами всех строк кэша.
|
||||
|
ElectronixTM
commented
Я могу конечно догадаться, что речь идет об аппаратном сравнении адреса в какой-то части кэш-памяти процессорв, но если в методичке написано, где именно, не мог бы ты это указать в примечаниях? Я могу конечно догадаться, что речь идет об аппаратном сравнении адреса в какой-то части кэш-памяти процессорв, но если в методичке написано, где именно, не мог бы ты это указать в примечаниях?
|
||||
|
||||
### Ассоциативная по множеству кэш-память (АпМКП)
|
||||
|
||||
В АпМКП адрес делится на тег, индекс и смещение. Индекс указывает, на какой кэш-строке находятся данные. А смещение определяет, какой именно байт или элемент данных нужно извлечь из строки кэша.
|
||||
|
||||
> [!comment]- От билетера: схема АпМКП
|
||||
> ![[Screenshot 2025-01-08 at 1.24.35 PM.png]]
|
||||
|
||||
### Кэш-память с прямым отображением
|
||||
|
||||
|
ElectronixTM
commented
Тут мне тоже чет больно, можно картинку какую-нибудь Тут мне тоже чет больно, можно картинку какую-нибудь
|
||||
Также как и в АпМКП - адрес в памяти делится на тег, индекс и смещение.
|
||||
|
||||
Индекс указывает на конкретную строку кэша, где могут находиться данные. Процессор использует индекс, чтобы обратиться к определенной строке кэша и извлечь данные из нее. Затем из этой строки берется тег, который соответствует старшим разрядам адреса, и происходит сравнение с тегом входного адреса.
|
||||
|
||||
|
ElectronixTM
commented
Возможно из-за того, что я не понял предыдущий абзац, я плохо понимаю и то, почему собственно блок данных может быть только в определенной ячейке Возможно из-за того, что я не понял предыдущий абзац, я плохо понимаю и то, почему собственно блок данных может быть только в определенной ячейке
|
||||
Если тег из адреса совпадает с тегом в строке кэша - мои поздравления, у вас кэш-попадание.
|
||||
|
||||
Недостаток прямого отображения - каждый блок данных может храниться только в одной определенной строке кэша, что увеличивает вероятность кэш-промахов, особенно если несколько блоков данных имеют одинаковый индекс.
|
||||
|
||||
> [!comment]- От билетера: схема прямого отображения
|
||||
> ![[Screenshot 2025-01-08 at 1.23.40 PM.png]]
|
||||
BIN
Приложения/Screenshot 2025-01-08 at 1.23.40 PM.png
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
Приложения/Screenshot 2025-01-08 at 1.24.35 PM.png
Normal file
|
After Width: | Height: | Size: 172 KiB |
Картинки бы это дело не испортили