Cache的工作原理
在Cache存储系统当中,把主存储器和Cache都划分成相同大小的块。
主存地址可以由块号M和块内地址N两部分组成。
同样,Cache的地址也由块号m和块内地址n组成。Cache地址映像和变换方式
1)直接映像
快,造价低。
但由于映射策略简单,所以有一定的局限性。
如果访问频繁的块正好被映射到同一个块,就不能充分利用高速缓存的好处。
(2)组相联映像
组相联映像由组的个数来标识,每个组被实现为一个直接映射高速缓存。
高速缓存请求同时广播到所有的组。如果某组中有这个单元,该高速缓存便报告命中。
比直接映射慢,命中率较高。
(3)全相联映像
主存中任意一个块都可以映射到Cache中的任意一个块的位置上。
不同的ARM有不同大小的高速缓存和组织结构。
Cache的替换算法
(1)轮转法
维护一个逻辑计数器,利用该计数器依次选择将要被替换出去的Cache块。
这种算法容易预测最坏情况下Cache的性能。
缺点:在程序发生很小的变化时,可能造成Cache平均性能急剧的变化。
(2)随机替换算法
通过一个伪随机数发生器产生一个伪随机数,用新块将编号为该伪随机数的Cache块替换掉。
算法简单,易于实现。
没有考虑程序的局部性特点,也没有利用以前块地址分布情况,因而效果较差。
不易预测最坏情况下Cache的性能。
存储管理单元MMU
存储管理单元在CPU和物理内存之间进行地址转换。
由于是将地址从逻辑空间映射到物理空间,因此这个转换过程一般称为内存映射。
在ARM系统中,存储管理单元MMU主要工作:
(1)虚拟存储空间到物理存储空间的映射。在ARM中采用了页式虚拟存储管理。
(2)存储器访问权限的控制。
(3)设置虚拟存储空间的缓冲的特性
MMU的页表
页表是实现上述功能的一个重要手段,它实际上是位于内存中的一个对照表。
为了实现不同层次的管理,系统提供了基于段或页的存储器访问方式
1. 段(section):由1MB的存储器块构成
2. 大页(large page):由64KB的存储器块构成
3. 小页(small page):由4KB的存储器块构成
4. 极小页(tiny page):由1KB的存储器块构成
MMU的页表续
地址变换条目:页表的每一行对应与虚拟地址空间的一个页,该行同时包含了该虚拟内存页对应的物理内存页的地址、该页的访问权限以及缓冲特性等。我们将页表中的一行称为地址变换条目。
页表:存放在内存中,系统通常有一个寄存器来保存页表的基地址。ARM系统中使用的就是CP15的寄存器C2。
快表:从虚拟地址到物理地址的转换实际上就是查询页表的过程。由于程序在执行过程中具有局部性,即在一段时间内只是局限在少数几个单元,为了加快页表的查询速度,在系统中通常使用一个容量更小、速度更快的存储器件来保存当前需要访问的地址变换条目,这个容量小的页表又称作快表(TLB)。
快表的使用
更新:当CPU需要访问内存时,首先在TLB中查找需要的地址变换条目。若不存在则在内存页表中查询,并把查询的结果添加到TLB中。
清除:当内存中页表的内容改变或者使用新的页表时,TLB中的内容需要清空。CP15的寄存器8用于完成该功能。
锁定:可以将一个地址变换条目锁定在TLB中,以加快访问速度,CP15的寄存器10用于完成该功能。
|