原创 SH2A系列Cache的原理与应用

2011-2-25 14:15 1249 2 2 分类: MCU/ 嵌入式
来源:瑞萨单片机论坛

Cache种类
instruction cache/operand cache
Cache工作方式
write-back/write-through
Cache的查找算法
least-recently-used(LRU) algorithm

Cache的描述(SH2A)
Cache is composed of four ways(banks), each of which is divided into an address section and a data section.
Each of the address and data sections is divided into 128 entries. The data section of the entry is called a line. Each line consists of 16 bytes(4 bytes * 4). The data capacity per way is 2KB(16bytes * 128 entries), with a total of 8KB in the cache as a whole(4 ways).. The instruction cache structure is the same as the operand cache structure except for not having the U bit.
我们可以看到,Cache分为address section和data section两个部分. 它们实际上就是CPU中的一小块RAM,这一小块RAM位于某一地址空间,使用特殊的指令,例如MOV指令,就可以访问这一空间,也就是Cache的内容。例如:
The instruction cache address array is mapped onto address H'F0000000 to H'F07FFFFF, and the data array onto addresses H'F1000000 to H'F17FFFFF. The operand cache address array is mapped onto addresses H'F0800000 to H'F0FFFFFF, and the data array onto addresses H'F1800000 to H'F1FFFFFF.

Cache的有效空间(valid space)
Cache的有效空间是指Cache的工作范围,假设Cache的有效空间为H'00000000 to H'1FFFFFFF,那么在这一范围内的所有数据都可以被Cache访问,如果用户的程序位于有效空间之内,CPU的运算速度就可以大大提高。因此,更改Cache寄存器或者访问Cache内容的代码,要放在Cache有效空间之外,否则程序很容易出错!

Cache工作方式的讨论
Cache的每个入口entry包含address array和data array。
address array包含了一些标志,地址和算法位。例如SH2A里面有V,U两个标志位,共占2位。V用来表示该入口数据是否有效,U用来表示该入口数据是否被写回。算法一般指LRU,占6位,用于指示该入口数据是否被最近最少访问过。地址(tag address)占21位,存储着主存中的某个地址。
data array则存放着address array里面的地址对应着的存储器的内容。
当CPU访问存储器时,以存储器地址作为行索引,寻址到cache的某个entry,同时检测该entry的tag address和V位,如果tag address符合并且V=1(数据有效),则发生cache hit。如果数据不匹配或者V=0,则发生cache miss.
当发生cache hit后,data array里面的数据被送到CPU,同时刷新LRU。
当发生cache miss后,CPU发出外部总线信号寻址外部存储器,同时刷新该entry。找到相关的数据后,会同时把数据写入到CPU和cache。当写入到cache后,V标志置1,同时更新LRU。如果是operand cache,U位通常被清除为0.

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /3 下一条