Я пытаюсь понять, как работает кэш ЦП. Допустим, у нас есть эта конфигурация (в качестве примера).
- Размер кэша 1024 байта
- Линия кэша 32 байта
- 1024/32 = 32 строки кэша вместе.
- Строка кэша Singel может хранить 32/4 = 8 ints.
1) Согласно этой конфигурации длина тега должна быть 32-5 = 27 бит, а размер индекса 5 бит (2 ^ 5 = 32 адреса для каждого байта в строке кэша).
Если общий размер кеша составляет 1024 и есть 32 строки кэша, где хранятся теги + индексы? (Существует еще 4 * 32 = 128 байт.) Означает ли это, что фактический размер кеша составляет 1024 + 128 = 1152?
2) Если в этом примере строка кэша составляет 32 байта, это означает, что 32 байта, которые копируются в кеш, когда требуется, чтобы центральный процессор получал новый байт из ОЗУ. Правильно ли предположить, что позиция строки кэша запрошенного байта будет определяться его адресом?
Это то, что я имею в виду: если запрошенный байтом CPU в [FF FF 00 08]
, то доступная строка кэша будет заполняться байтами от [FF FF 00 00]
до [FF FF 00 1F]
. И наш запрошенный один байт будет находиться в позиции [08]
.
3) Если предыдущий оператор верен, означает ли это, что 5 бит, которые используются для индекса, технически не нужны, поскольку все 32 байта в строке кэша в любом случае?
Пожалуйста, дайте мне знать, если у меня что-то не так. Благодаря