3Cache的基本结构
Cache的基本结构原理框图如图:
它主要由Cache存储体、地址映射变换机构、Cache替换机构几大模块组成。
(1)Cache存储体
Cache存储体以块为单位与主存交换信息,为加速Cache与主存之间的调动,主存大多采用多体结构,且Cache访存的优先级最高。
(2)地址映射变换机构
地址映射变换机构是将CPU送来的主存地址转换为Cache地址。由于主存和Cache的块大小相同,块内地址都是相对于块的起始地址的偏移量(即低位地址相同),因此地址变换主要是主存的块号(高位地址)与Cache块号间的转换。而地址变换又与主存地址以什么样的函数关系映射到Cache中(称为地址映射)有关。如果转换后的Cache块与CPU欲访问的主存块建立了对应关系,即命中,CPU直接访问Cache存储体。如果转换后Cache块与CPU欲访问的主存块未建立对应关系,即不命中,此时CPU访问主存时,不仅将该字从主存取出,同时将它所在主存块一并调入Cache。如CPU已装满,则采用替换策略。
(3)替换机构
当Cache内容已满,无法接受来自主存块的信息时,就由Cache的替换机构按一定的替换算法确定从Cache内移除哪个块返回主存,装入新的主存块。
Cache对用户是透明的,即用户编程时所用到的地址是主存地址,将主存块调入Cache的任务全由机器硬件自动完成。
(4)Cache的读写操作
读操作:
当CPU发出主存地址后,首先判断该存储字是否在Cache中。若命中,直接访问,将该字送至CPU中;若未命中,一方面要访问主存,将该字传送给CPU,与此同时,将该字所在主存块装入Cache,若此时已装满,则执行替换。
写操作:
写操作需要主存块与Cache块中信息完全一致。当需要进行写操作时,会出现如何使Cache与主存内容保持一致的问题。有以下几种方法
1、写直达法,也叫存直达法,写操作时数据既写入Cache又写入主存。它能随时保证主存和Cache的数据始终一致,但是增加了访存次数。
2、写回法,也叫拷回法,写操作时只写入Cache,当Cache数据被替换时才写回主存。可见Cache数据会与主存数据不一致。为了识别Cache中的数据与主存是否一致,Cache中每一块要增加一个标志位,有两个状态“清”“浊”。清是未修改过,与主存一致,浊是修改过,与主存不一致。在Cache替换时,”清”的Cache块不必写回内存,因为此时和内存一致。而写Cache时,要将该标志设置为“浊”,替换时此Cache块要写回内存,同时标志位改为“清”。
写直达法中,写时间就是访问主存的时间
写回法中,写时间就是访问Cache的时间
对于有多个处理器的系统,各自都有独立的Cache,且都共享主存。当一个缓存器中数据被修改时,不仅主存中相对应字无效,连同其他缓存中相对应得字也无效(恰好其他缓存有对应的字)。即使通过写直达改变了主存相应的字,其他缓存中数据仍然无效,这就是Cache一致性问题。