Блоки виртуальной памяти (размером 4kB (SS * A), обозначенные как B), отображаются
по модулоподобной манере. Другими словами, адреса 0x0: 0xFFFF
(индекс блока (BI) 0) отображаются в 0, 0x1000: 0x1FFF (BI 1) являются
отображается на 1 и т. д.
Transfer between L1 cache and the memory hierarchy:
the transfer unit between the L1 cache and the following level of the memory hierarchy is a block of line size (LS) bytes. That is, to your L1 cache, memory is structured in 64 bytes blocks (LS bytes).
Correspondence between memory blocks and cache entries:
consecutive memory blocks are mapped to cache lines of consecutive sets. Hence, block 0 (addresses 0x0000 : 0x003F
) is mapped to a cache line at set 0, block 1 (addresses 0x0040 : 0x007F
) is mapped to a cache line at set 1, and so forth.
Запрос на чтение/запись (не используются временные записи/чтения) a
для данного адреса A требуется найти его BI, а затем переместить его на
назначенный набор. Например, A = 0x4600A будет иметь BI = 70. Это BI
для отображения 6 (BI% S).
Правильная процедура поиска идентификатора блока (или индекса) и заданного индекса (SI) заключается в следующем:
BI = A >> LS = 0x4600A >> 6 = 0x1180
SI = BI & (S-1) = 0x1180 & 0x3F = 0x0000
(when S is a power of two, BI & (S-1) = BI mod S)
Для правильного (без смещения) r/w объект (O) -
кеш, требуется выравнивание LS.
Это не обязательно. O не обязательно должен быть выровнен по блоку.
Q1. Will the O be serially aligned in the cache or it can take (for
instance) free slots 0 & 4 & 5, instead of 0 & 1 & 2?
O
blocks will be stored in consecutive sets with cache line granularity (set k, k+1, …, S-1, 0, 1, …) .
<Р> Q2. Какова стоимость (штраф) за извлечение секционированного O из кеша?
Предположим, что O не разбивается на несколько B.
Q3. Тот же вопрос, что и выше, но в случае, когда O помещается в два B,
таким образом, используются два набора.
Я предполагаю, что вас интересует стоимость процессора, считывающего слова O
из кеша.
Предполагая, что O
указывается последовательно, количество обращений к кешу будет равно количеству ссылочных слов. Я думаю, что стоимость не зависит от того, какие блоки находятся в одном и том же или в разных наборах (по крайней мере, в многопортовом кеше).
<Р> Q4. Что произойдет, если размер O больше, чем SS (512B)? Будет
он перемещает данные в L2 и пошаговые данные перемещения в L1? Будет ли он использовать
другие наборы?
<Р> Q5. Что, если L2 (и L3, если на то пошло) слишком мала для всех данных?
Если блок должен быть выделен для набора без свободных строк кэша, необходимо выбрать блок для высылки (блок жертвы). Политика замены выбирает блок жертвы в соответствии с алгоритмом (LRU, pLRU, случайный).