CPU CACHE学习

来源:互联网 发布:java的replace方法 编辑:程序博客网 时间:2024/06/06 18:45

点击打开链接

wiki

1,CPU CACHE的概念

cache的最小操作单位称为 cache line, 一般为2的n次方字节。Cache的每一行有tag和intex来寻址。缓存块(Cache Block\Cache Line每个缓存块存储具有连续内存地址的若干个存储单元。在32位计算机上这通常是一个字(word),即四个字节对应每个cache line,都有这样一个结构,

data bolck存放的是缓存行中所保存的就是从主存取过来的数据,tag表示的是数据块在主存中的地址(并不是完整的地址)flag bits是一些在操作过程中涉及到的标志位。对于主存中的每个地址单元,我们都可以按下图的结构进行解析。

一个cache line对应的是主存中连续的几个字,那么这些字的低位对于映射一个cache line是没用的,比如说在一个32位系统中,一个cache line的大小是16个字,也就是64个字节,那么其低6位在映射一个cache时是没有用的,其作用是用来指定该内存单元在对应cache line中的偏移。Cache Set则指明了该内存单元位于哪一个cache set(一个cache set 可以包含一个或多个cache line,这与cache和内存之间的映射关系有关).




2,CPU写回数据到内存的方式

Write Through – 每次将资料写回 cache 时,同时也写到 main memory
Write Back – 只有当 Cache Line 要被 Flush 时,才写回 main memory



3,CPU CACHE命中VIPT的概念






4,cpu cache的具体组织方式(假设cache line为64bytes,cache一共32kb)


在cache中的数据是以缓存线(line)为单位组织的,一条缓存线对应于内存中一个连续的字节块。这个cache使用了64字节的缓存线。这些线被保存在cache bank中,也叫路(way)。每一路都有一个专门的目录(directory)用来保存一些登记信息。你可以把每一路连同它的目录想象成电子表格中的一列,而表的一行构成了cache的一组(set)
。列中的每一个单元(cell)都含有一条缓存线,由与之对应的目录单元跟踪管理。图中的cache有64 组、每组8路,因此有512个含有缓存线的单元,合计32KB的存储空间。

在cache眼中,物理内存被分割成了许多4KB大小的物理内存页(page)。每一页都含有4KB / 64 bytes == 64条缓存线。在一个4KB的页中,第0到63字节是第一条缓存线,第64到127字节是第二条缓存线,以此类推。每一页都重复着这种划分,所以第0页第3条缓存线与第1页第3条缓存线是不同的。
 

0 0
原创粉丝点击