Advertisement

cache相关(持续更新中)

阅读量:

使用cache原因

调解CPU与主存之间速度差异,提高效率

CPU访问SDRAM之间的数据访问流程

CPU内部有L1Cache,CPU首先到L1Cahce中取数据,若Cache miss,则触发burst,通过总线到L2Cache上取数据,同样先到L2Cache中取数据,若Cache miss,则过EH2H桥,到SDRAM中取数据
CPU访问SDRAM之间的数据访问流程
还有其他的结构,每个core内一般都有各自的L1和L2 cache,其中L1 cache分为指令cache和数据cache,L2 cache可以缓存指令和数据。所有的core公用一个L3 cache,L3 cache也可以缓存指令和数据。L3 cache通过总线访问主存。

cache line

Cache line:cache访问主存的最小单位,数据在主存和缓存之间以固定大小的”块(block)”为单位传递,也就是每次从main memory读取的最小数据的单元。每个cache line除了包含数据,还包含TAG(地址信息)和状态信息。

cache associativity

Cache的替换策略决定了主存中的数据块会拷贝到cache中的哪个位置,如果对于一块数据(大小为一个cache line ),只有一个cache line与之对应,我们称之为”直接映射 (Direct map)”;如果该数据块可以和cache中的任意一个cache line对应,则称之为”全相联(Full-Associative)”而目前更多的实现方式是采用”N路组相连(N Way Set-Associative)”的方式,即内存中的某一块数据可能在cache中的N个位置出现,N可能是2,4,8,12,或其他值。
cache关联方式
为了便于理解,下面是二路组相联的另一个示意图
一个2组2路相联的如上图所示,cache分成s组,每组包含两个cache line,也称为两路(2 ways),主存中的每个数据块只能位于s个set中的某一个,但可以在指定set中的任意一个cache line中。

AMD Athlon的L1 cache所采用的就是这种2路组相联的映射方式。
二路组相联

主存和cache的关联方式的选择,是多种因素互相妥协的结果。比如某种替换策略使得一个主存数据块可以有10个cache line与之相对应时,处理器就必须想办法查找这10个位置,看看是否在其中某一个命中。越多的查找,意味着需要越大的功耗,越大的芯片面积,以及越长的时间;而从另一个角度来看则是,越多的对应项可已有越低的miss,也就需要花费更少的时间来等待数据从低速主存获取。
L1-TLB的设计侧重于使Hit time小一些,其目标就是尽可能快;而L2则需要进一步考虑命中率问题,通常比较大,而且是采用N路组相联的方式。

参考文献

https://www.jianshu.com/p/2b51b981fcaf

全部评论 (0)

还没有任何评论哟~