一 指令缓存(instruction cache)
Instruction Memory Control Register(IMEM_CONTROL)是用来管理L1 Instruction Memory配置的,详细的结构如下:
如果要使用LI Instruction Memory的cache功能,必须使ENICPLB bit和IMC bit置1,并配置好ILOC来确定cache的加锁功能。
在BF561中可以有16KB的Instrucion SRAM被配置成为4 way set-associate Cache,此时的16KB又被分成4个4KB的Sub-Bank。对于每个Sub-Bank内部的Cache结构如下图,每个Sub-Bank里面被分为32个set,每个set里面有4个Block,所以被称为4 way,每个Block的大小是32 BYTE(数据的大小4*64BIT)
BF561中Cache Line的组成如下图所示:
实际地址Bit12和Bit13用于确定该Cache Line位于哪个Sub-Bank里面;20位TAG由地址高18位加上地址的Bit10,Bit11两位组成,用来标志该Cache Line,也是用来确定对应的指令是否在Cache中;Bit5-Bit9确定该Cache Line应该在哪个Set中,Bit0-Bit4在确定的Cache Line中找到特定的字。详情见下图:
地址的匹配过程:
1 首先利用Address的A12-A13两位来确定特定的4KB的Sub-Bank
2 利用A5-A9来确定在该sub-bank的特定的一组,5位可表示32组(set)
3 将A10 A11以及A14-A31联合起来作为Address Tag来和该set里面的所有valid line的Address Tag进行比较,若比较成功则cache hit ,否则就是cache miss
4 比较成功以后用A0-A4来选择具体的位置
二 数据缓存(da
Da
在BF561中的Da
在Da
评论