存储管理系统设计
一、Dcache设计
数据cache是一块只读的cache,主要负责缓存处理器操作所需要的数据。该cache选择4路组相连的方式,容量为32KB,行大小为8个字,采用lru替换算法。其结构同样分为存储体和控制器两部分。
访问地址位32位,其中
低5位表示行内偏移,
5~12位表示索引位,选择对应行,
高19位表示tag标志位。
数据cache的存储体设计为4块数据存储器和4块数据Tag存储器,并且各自拥有相同的结构,其中数据存储体每块大小为8KB,总共32KB。数据tag存储器每块分为256行,每行有19位。
控制器模块主要使用状态机完成,命中时读取数据只需一个时钟,该状态机有3个状态,具体如下所示:
IDLE:初始态,在该状态中进行cache读命中判断,如果命中,则将对应的命中数据下发,否则跳转至MISS状态。
MISS:读缺失态,在本状态中,更新替换算法,同时向上级请求读取数据,待总线应答后,跳转至REPL状态。
REPL:重装状态,该状态负责cache行的重新填装,将上级存储返回的数据写入cache数据存储体,并将处理器需要的数据
处理器发送给cache一个读请求信号和读地址,该地址包括cache组索引,数据Tag和数据偏移地址三部分;
1、首先根据组索引确认所需cache数据在存储体中的哪一组,然后将该组中对应4路的tag读出,同时根据数据偏移地址确定该数据在4路中的具体位置,并将对应的4个32位数据读出,通过比较读出的tag与解码出的tag确定是否命中以及命中的哪一路。
2、若命中,则将对应的数据送往处理器。若缺失,则需要通过总线访问上级存储,将上级存储中正确的数据送入处理器,紧接着替换cache line,更新相应的tag值。