关于cache的一些知识
内存管理单元MMU除了使用页表完成物理地址和虚拟地址的映射外,还包括对这些地址的管理。这些管理是通过设置内存属性完成的,比如是否过cache、cache属性、是否可读、可写、可执行、内存类型(normal 、device-GRE)、是否共享,共享范围等等… 这些属性都在页表项中定义,属性的有效范围至少是一个页面。
1)Cache的结构
现在Cache一般组相连方式的,比如sharkl3 L1Dcache是4路128组相连。简单说,就是先把cache分成相等的4块,每块叫做一个way;每个way中有若干行cache line(缓存行),缓存行的编号就是set(行索引)。
内存中的地址到cache的映射是按照一定的规则确定的,下面是这个规则的定义:
对于32bit的地址,分为三部分: Tag-----Set-----offset,offset(字节索引)和缓存行的大小相关,比如64Bytes的缓存行,[5:0]是offset;set(行索引)和cache的中每个way的缓存行的数目有关,32KB的cache除以4way,每个way是8KB,每个way中的缓存行size是64Bytes,那一个way中有128个缓存行,[12:6]是set,剩余的高地址成为Tag(页帧号ÿ