1、MPU (Memory Protection Unit);
2、MMU(Memory Management Unit)。
MMU是比MPU提供了功能更强大的内存保护机制,MPU只提供了内存区域保护,而MMU是在此基础上提供了虚拟地址映射技术,而且在操作上,MMU要比MPU负责。
3、SMMU本质上就是一个MMU设备,它的内存转换逻辑与CPU的MMU采用相同的逻辑,都允许将物理上非连续的页虚拟为连续的内存页。SMMU和IOMMU可以交替使用。
----------------------------------------------------------------------------------------------------------------------------------------------
MPU
保护域(ProtectionRegions)
ARM处理器中的MPU使用“域(regions)”来对内存单元进行管理。域是与存储空间相关联的属性,处理器核将这些数据保存在协处理器CP15的一些寄存器中。
-
通常域的个数为8个,编号为从0~7。
-
域的大小和起始地址保存在CP15的寄存器c6中。大小可以是4KB~4GB的任何2的乘幂。
-
域的起始地址必须是其大小的倍数。比如,一个定义为4KB的域其起始地址可以是0x12345000,而一个大小定义为8KB的域起始地址只能是0x2000的倍数。
-
另外,操作系统可以为这些域分配更多的属性:访问权限、cache和写缓存。存储器基于当时的处理器模式(管理模式或用户模式)可以设定这些区域的访问权限为读/写、只读和不可访问。
当处理器访问主存的一个域时,MPU比较该域的访问权限属性和当时的处理器模式。如果请求符合域的访问标准,则MPU允许内核读/写主存;如果存储器请求不符号域的访问标准,将产生一个异常信号。
异常信号被送到处理器核。处理器核执行一个异常向量,然后跳转到异常处理程序,异常处理程序判断异常类型为预取指或数据中止,然后根据异常类型,跳转到相应的服务例程。
对于ARM处理器,存储空间的某一部分可以被分配给一个以上的区域。也就是说域可以重叠。在重叠的域内,可以设置域的优先级。在分配访问权限时重叠域比非重叠域有更大的灵活性。
内存访问顺序
当ARM处理器产生一个内存访问信号时,内存保护单位MPU将负责检查要访问的地址是否在被定义的域中。
-
如果地址不在任何域中,存储器产生异常。如果内核预取指令则MPU产生预取中止异常;如果是存储器数据请求,则产生数据中止异常。
-
如果地址在多个域内,由MPU判断域的有效级来决定存储区域的访问属性。访问属性可以在CP15的寄存器中设定,可设定的位为C(Cache)、B(Buffer)、AP(AccessPermission)。这些属性的具体定义为:
C和B可以控制Cache和写缓存属性的Cache策略。例如,可以设置一个域使用回写(write-back)策略访问存储器,而另一个域则以无Cache和无写缓存方式访问;
AP(accesspermission)决定域是否可以被访问。如果在当前处理器模式下,该域不能被访问,MPU将产生一个存储器访问异常。
使能MPU
通过对协处理器CP15的寄存器c1中的bit[0]置1,可以使能存储器保护单元MPU。在系统上电时,默认状态是该位清零,所有保护域无效。
在使能MPU之前,至少一个域要被设定,而且该域的属性和访问权限要预先设定好。
重叠域
域的定义在MPU的作用下可以重叠。当重叠的域被访问时,MPU会判断域的优先权,决定使用那个域的属性来操作重叠域。
域属性优先级的排列顺序为:域7的有效级最高,其次为域6,域0的优先级最低。
举个栗子:
假设将一个从0x3000起始的4KB地址空间定义为域2,其访问属性AP定义为0b10(AP=0b10,特权模式读/写访问,用户模式只读)。
将起始地址为0x0的16KB地址空间定义为域1,其访问属性AP定义为0b01(AP=0b01,特权模式只读)。
这样,当处理器在用户模式下执行Load指令,从0x3010地址取数据时,0x3010地址既在域1中也在域2中,因为域2的属性优先级高于域1,所有MPU执行域2的访问属性从0x3010地址取数据。域2是用户模式可读,所以不会发生数据异常。
在分配访问权限时重叠区域比非重叠区域有更大的灵活性,它可以使内存的某个特定联系内存单位在程序中担任背景的作用,用来给一块大存储空间分配相同的属性的低优先级域。其他具有较高优先级域的区域与该背景域某些部分重叠,用来改变已定义的背景域的较小子集的属性。这样,具有较高优先级的域可以改变背景域属性的子集。背景域可以用来保护一些睡眠状态的存储空间,使其不受非法访问,而此时由另一个不同域控制下的背景域的其他部分可以处于活跃状态。
----------------------------------------------------------------------------------------------------------------------------------------------