在ARM系统中,存储单元MMU的主要完成以下工作:
(1) 虚拟存储空间到物理存储空间的映射;ARM 采用页式虚拟存储管理,把虚拟空间分成固定大小的块,每一块称为一页;物理内存地址空间也分成同样大小的页;页的大小分为粗粒度和细粒度;MMU需要实现虚拟地址到物理地址的转换;
(2) 存储器访问权限的控制;
(3) 设置虚拟存储空间的缓冲的特性;
页表是实现MMU的重要手段,页表存储与内存中,表的每一行对应于虚拟空间的一个页,该行包含了虚拟内存页对应的物理内存页的地址;通过CP15协处理器的寄存器C2来保存页表的基地址;
TLB
(1)概念
在程序运行的一段时间内,对页表的访问只是局限在少数的几个单元中,可以采用一个容量更小,访问速度和通用寄存器相当的存储器来存放当前访问需要的地址变换条目;这个小容量的页表称为快表,也可以称为TLB(Translation Lookaside Buffer);
当CPU访问内存时,现在TLB中查找需要的地址变换条目。如果该条目不存在,CPU从位于内存的页表中查询,并把相应的结果添加到TLB中。这样,当CPU下一次又需要该地址变换条目时,可以从TLB中直接得到,从而使地址变换的速度大大加快。
当内存中的页表内容改变,或者通过修改CP15中的寄存器C2使用新的页表时,TLB的内容需要全部清除。MMU提供了相关的硬件支持这种操作。CP15中的寄存器C8用来 控制清除TLB内容的相关操作。
MMU可以将某些地址变换条目锁定在TLB中,从而使得进行与该地址变换条目相关的地址变换速度保持很快。在MMU中C10用于控制TLB内容的锁定。
注:TLB中存放的是地址变换条目,相当于一个小页表。
(2)TLB更新变化条目
a、使能MMU时的存储访问过程。
当ARM处理器请求存储访问时,首先在TLB中查找虚拟地址。如果系统中数据TLB和指令TLB是分开的,在取指令时,从指令TLB查找相应的虚拟地址,对于其他内存访问操作,从数据TLB中查找相应的虚拟地址。
如果虚拟地址对应的地址变换条目不在TLB中,CPU从位于内存的页表中查询,并把相应的结果添加到TLB中。如果TLB已经满了