cache索引格式与页着色

cache索引结构和页着色问题

cache 结构

Cache的特征 :

Cache的内容是主存储器内容的一个子集 ,Cache没有程序上的意义,只是为了降低访存延迟 ,处理器访问Cache和访问存储器使用相同的地址。由于cache是子集而且cache和内存不一样不能天然的寻址,所以cache索引里面需要保留地址。

Cache的结构特点 :

  • 同时存储数据和地址
  • 通过地址的比较判断相应数据是否在Cache中
  • 需要考虑所需要的数据不在Cache中的情况
    • 替换机制,写策略等
cache结构

全相联

全相连中内存单元可以映射到任意块中,offset是块内偏移。这种连接方法命中率高,但是需要遍历所有的tag来搜索复杂度较高

全相连结构

直接相连

直接相连

组相联

组相联介于直接相连和全相联之间

组相连

以二路组相联为例,每个内存块可以放到任意一路cache中。

cache索引

物理地址,实tag

索引结构

此时访问的流程是这一的:虚地址先通过TLB转换为物理地址,再访问cache找到对应的内存

地址转换访问cache

此时offset是块内偏移。例如cache的块大小如果为32B那么offset就是5位

index指的是cache块在cache里面的索引。如果cache的大小是64KB.cache的块大小如果为32B。对应全相联的cache,index是0位。

对于直接相连的cache index是11位。对于二路组相联的index是10位,对于四路组相联的index是9位。

tag的位数是物理地址位数-index位数-offset位数。这里的tag是用于索时物理地址与存在cache块里面的tag进行比对,判断是否命中。

所以cache里面存的tag就是物理地址的高几位(和tag位数一致)

虚地址,虚tag

offset和index的计量和上面物理地址的一致,不同的是tag是虚地址位数+进程号位数-index-offset。

虚tag的物理意义:

虚地址,实tag与页着色