先决条件 –缓存映射类型 – 直接映射、关联映射和集合关联映射
缓存:
添加在主存储器和处理器 (CPU) 之间以加快执行过程的一小部分 SRAM 存储器称为缓存存储器。它包括少量的 SRAM 和更多的 DRAM。它是一种高速且昂贵的内存。
缓存命中率:衡量缓存如何有效地满足获取内容的请求。
Cache hit ratio = No of cache hits/ (No of cache hits + No. of cache Miss)
如果在缓存中找到数据,则为缓存命中,否则为缓存未命中。
缓存映射:
将主存块的数据带入缓存块的过程/技术称为缓存映射。
映射技术可以分类为:
- 直接映射
- 联想
- 集合关联
1.直接映射:
在这种技术中,来自主存储器的每个块在缓存组织中只有一个可能的位置。
例如:主内存的每个块 i 都可以使用以下公式映射到缓存的块 j:
j = i modulo m
Where : i = main memory block number
j = cache block number
m = number of blocks in the cache
这里的地址分为 3 个字段:Tag、Block 和 Word。
将内存地址映射到缓存–
地址的 BLOCK 字段用于访问缓存的 BLOCK。然后,将地址中的标记位与块的标记进行比较。对于匹配,当在缓存中找到所需的词时会发生缓存命中。否则,会发生高速缓存未命中,并且必须将所需字从主存储器带入高速缓存。该词现在与新标签一起存储在缓存中(旧标签被替换)。
例子 –
如果我们有一个 8 KB 大小的完全关联映射缓存,块大小 = 128 字节,那么主内存的大小为 = 64 KB。 (假设字长 = 1 字节)然后:
物理地址的位数 = 16 位(因为内存大小 = 64 KB = 2 6 × 2 10 = 2 16)
WORD 的位数 = 7 位(作为块大小 = 128 字节 = 2 7 )
索引位数 = 13 位(因为缓存大小 = 8 KB = 2 3 × 2 10 = 2 13)
BLOCK 位数 = 索引位数 – WORD 位数 = 13 – 7 = 6bits
要么
(缓存块数 = 缓存大小/块大小 = 8 KB / 128 Bytes = 8×1024 Bytes/128 Bytes = 2 6个块 → 6bits)
标记位数 = 物理地址的位数 — 索引中的位数 = 16-13 = 3 位
2. 关联映射:
这里主存块的映射可以用任何一个缓存块来完成。内存地址在这里只有 2 个字段:字和标签。这种技术称为全关联缓存映射。
例子 –
如果我们有一个 8 KB 大小的完全关联映射缓存,块大小 = 128 字节,那么主内存的大小为 = 64 KB。然后 :
物理地址的位数 = 16 位(因为内存大小 = 64 KB = 2 6 × 2 10 = 2 16)
块偏移中的位数 = 7 位(因为块大小 = 128 字节 = 2 7 )
标签位数 = 物理地址的位数 – 块偏移中的位数 = 16-7 = 9 位
缓存块数 = 缓存大小/块大小 = 8 KB / 128 Bytes = 8×1024 Bytes/128 Bytes = 2 6个块。
3.设置-关联映射:
它结合了直接映射和关联映射的优点。
在这里,缓存由多个数字集组成,每个数字集由多个块组成。关系是:
n = w * L
i = j modulo w
where
i : cache set number
j : main memory block number
n : number of blocks in the cache
w : number of sets
L : number of lines in each set
这称为 L 路集关联映射。块 Bj 可以使用此映射转换为集合 j 中的任何块。
将内存地址映射到缓存 –
使用内存地址中的 set 字段,我们访问缓存的特定集合。然后,将地址中的标记位与该组中所有 L 块的标记进行比较。对于匹配,当在缓存中找到所需的词时会发生缓存命中。否则,会发生高速缓存未命中,并且必须将所需字从主存储器带入高速缓存。根据使用的替换策略,如果缓存已满则进行替换。
示例:如果我们有一个 8 KB 大小的完全关联映射缓存,块大小 = 128 字节,并且主存的大小为 = 64 KB,并且我们有“2 路”集合关联映射(假设每个单词都有8 位)。然后 :
物理地址的位数 = 16 位(因为内存大小 = 64 KB = 2 6 * 2 10 = 2 16)
缓存块数 = 缓存大小/块大小 = 8 KB / 128 字节 = 8×1024 字节/128 字节 = 2 6 个缓存块。
主内存块数 = MM 大小/块大小 = 64 KB / 128 字节 = 64×1024 字节/128 字节 = 2 9 MM 块。
大小为 2 的集合数 = 缓存块数/ L = 2 6 /2 = 2 5 个缓存集。(L = 2 因为它是 2 路集合关联映射)
直接映射、关联映射和集合关联映射之间的区别:
Direct-mapping | Associative Mapping | Set-Associative Mapping | |
1. | Needs only one comparison because of using direct formula to get the effective cache address. | Needs comparison with all tag bits, i.e., the cache control logic must examine every block’s tag for a match at the same time in order to determine that a block is in the cache/not. | Needs comparisons equal to number of blocks per set as the set can contain more than 1 blocks. |
2. | Main Memory Address is divided into 3 fields : TAG, BLOCK & WORD. The BLOCK & WORD together make an index. The least significant TAG bits identify a unique word within a block of main memory, the BLOCK bits specify one of the blocks and the Tag bits are the most significant bits. | Main Memory Address is divided into 1 fields : TAG & WORD. | Main Memory Address is divided into 3 fields : TAG, SET & WORD. |
3. | There is one possible location in the cache organization for each block from main memory because we have a fixed formula. | The mapping of the main memory block can be done with any of the cache block. | The mapping of the main memory block can be done with a particular cache block of any direct-mapped cache. |
4. | If the processor need to access same memory location from 2 different main memory pages frequently, cache hit ratio decreases. | If the processor need to access same memory location from 2 different main memory pages frequently, cache hit ratio has no effect. | In case of frequently accessing two different pages of the main memory if reduced, the cache hit ratio reduces. |
5. | Search time is less here because there is one possible location in the cache organization for each block from main memory. | Search time is more as the cache control logic examines every block’s tag for a match. | Search time increases with number of blocks per set. |