MMU的存储访问过程
使能MMU时存储访问过程。
C控制位:Cachable,B控制位:Bufferable禁止MMU时存储访问过程。
先要确定芯片是否支持cache和write buffer。
如果芯片规定当禁止MMU时禁止cache和write buffer,则存储访问将不考虑C和B控制位。
如果芯片规定当禁止MMU时可以使能cache和write buffer,则数据访问时,C=0,B=0;指令读取时,如果使用分开的TLB,那么C=1,如果使用统一的TLB,那么C=0。
存储访问不进行权限控制,MMU也不会产生存储访问中止信号。
所有的物理地址和虚拟地址相等,即使用平板存储模式。
MMU中的地址变换过程
通过两级页表实现。
一级页表:包含以段为单位的地址变换条目,以及指向二级页表的指针。
一级页表实现的地址映射粒度较大。
以段为单位的地址变换过程只需要一级页表。
二级页表:包含以大页和小页为单位的地址变换条目。
以页为单位的地址变换过程需要二级页表。
ARM支持的存储块大小有4种:
(1)段(Section):大小为1MB的存储块。
(2)大页(Large Pages):大小为64KB的存储块。
(3)小页(Small Pages):大小为4KB的存储块。
(4)极小页(Tiny Pages):大小为1KB的存储块。
一级页表地址变换过程
CP15的寄存器C2中存放的是内存中页表的基地址。
形成一个32位的索引值,使用该32位索引值从页表中找出相应的地址变换条目。该条目或者包含一个一级描述符,或者包含一个指向二级页表的指针。 一级描述符
一级描述符:从页表中得到的相应地址变换条目。
它定义了与之相应的1M存储空间是如何映射的。
一级描述符类型: 4种格式的一级描述符,由位[1:0]定义。 粗粒度页表描述符
粗粒度页表描述符:一级描述符的位[1:0]为0b01(0b代表二进制),包含了粗粒度的二级页表的物理地址。 粗粒度页表描述符获取二级描述符过程
段描述符
段描述符:一级描述符的位[1:0]为0b10。
段的地址变换过程
细粒度页表描述符
细粒度页表描述符:一级描述符的位[1:0]为0b11,包含了细粒度的二级页表的物理地址。
细粒度页表描述符获取二级描述符过程 MMU中的存储访问权限控制
在MMU中,寄存器C1的R、S控制位和页表中地址转换条目中的访问权限控制位(A、P)联合作用控制存储访问的权限。
MMU存储访问权限控制的具体规则如下: MMU中的域(Domain)
域:一些段、大页或者小页的集合。
ARM支持最多16个域。
每个域的访问控制特性由CP15中的寄存器C3中的两位控制。
因此能很容易地将某个域的地址空间包含在虚拟存储空间中,或是排除在虚拟存储空间之外。
CP15中寄存器C3中的每两位控制一个域的访问控制特性,字段编码和含义如下: 快速上下文切换技术 快速上下文切换技术FCSE(Fast Context Switch Extension):通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射。
如果两个进程占用的虚拟地址空间有重叠,则系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射,包括重建TLB、清除Cache,整个工作需要巨大的系统开销,而快速上下文切换技术的引入避免了这种开销。
FCSE位于CPU和MMU之间,其功能就是将不同进程使用的相同虚拟地址映射为不同的虚拟空间,使得在上下文切换时无须重建TLB等。
存储器映射的输入/输出
在ARM系统中,I/O操作通常被映射成存储器操作,即输入/输出是通过存储器映射的可寻址外围寄存器和中断输入的组合来实现的。
在ARM中,I/O的输出操作可通过存储器写入操作实现;I/O的输入操作可通过存储器读取操作实现。这样I/O空间就被映射成存储空间。
但是,对于存储器映射的I/O空间的操作,不能使用Cache技术。 |