Cache高速缓存的基本概念

来源:互联网 发布:java数组逆序存放 编辑:程序博客网 时间:2024/04/27 17:51

(1) 在高速缓存的设计中,要考虑的重要一点是用一个标记确定多少数据。例如,独立地标记高速缓存中的每一个字节代价太大。因此,来自主存储器的一个或者更多连续的字被组织到一起形成了个高速缓存行(Cache Line),并且给每一行关联一个标记。所以一个完整的高速缓存行是由一个标记和一段数据组成的,但是高速缓存行的大小一般是指数据部分的字节数(不包括标记)。标记部分一般包括:地址、控制信息(如有效位、修改位等等)。

(2) 写入策略

写命中:写直通、写回

写缺失:写分配(在高速缓存中分配空间)、写不分配(写入主存,高速缓存不变)

(3) 替换策略

直接映射:如果发生Cache行冲突,则必须替换,没什么策略可言,因为唯一的候选替换行就是散列算法索引的那一行。

组相联映射:主要是指在一个组内不同Cache的替换问题。一般有LRU策略,伪LRU策略,随机策略等。对于多路组相联的高速缓存,它能同时缓存产生相同索引的多个不同地址的数据。相同索引有时也称为具有相同的颜色。

每组两行以上的高速缓存往往并不使用严格的LRU替换,因为这样做需要的状态信息太多,常常代之使用历史信息有限的LRU算法

(4) 组内的行数问题

一般为2的幂。但是因为在组内并没有索引机制,所以也不要求组内的行数是2的幂。例如,在TI SuperSPARC的指令高速缓存中,它是5路组相联

(5) N路组相联高速缓存总结

从直接映射到全相联的所有高速缓存组织结构都遵循相同的规则——每一种组织结构都有一种用于选择搜索行的算法(Block Identification);每一种组织结构都有一种替换算法(Block Replacement);每一种结构都可以使用写直通或者写回策略(Write Strategy)。它们的主要区别在于每一组内行数的不同

原创粉丝点击