本文描述基于存储器管理单元的系统结构, 包含以下内容:
• 关于存储器管理单元的结构
• 访问权限
• 域
• 异常
• CP15寄存器
Page 2 of 2
3.1关于存储器管理单元的结构
MMU存储器系统的结构允许对存储器系统的精细控制。大部分的控制细节由存在存储器中的转换表提供。这些表的入口定义了从1KB到1MB的各种存储器区域的属性。这些属性包括:
pc anywhere虚拟地址到物理地址映射
ARM处理器产生的地址叫虚拟地址,MMU允许把这个虚拟地址映射到一个不同的物理地址去。这个物理地址表示了被访问的主存储器的位置。
泥鳅工厂化养殖技术
它允许用很多方式管理物理存储器的位置,例如:它可以用具有潜在冲突的地址映射为不同的进程分配存储器,或允许具有不连续地址的应用把它映射到连续的地址空间。
------注------
如果使用了快速上下文切换扩展(Fast Context Switch Extension),则在本文中的虚拟地址的意思应该是修改过的虚拟地址(Modified virtual
北美市场address)
---------------
存储器访问权限(permissions)
这些控制对存储器区域的不可访问权限、只读权限、读写权限。当访问不可访问权限的存储器时,会有一个存储器异常通知ARM处理器。
允许权限的级别也受程序运行在用户状态还是特权状态影响,还受是否使用了域有关。
高速缓存和缓冲位(Cachability and bufferability bits [C and B])
这些在高速缓存和缓冲一节讲
系统控制协处理器的寄存器允许对系统的高级控制,如转换表的位置。他们也用来为ARM提供内存异常的状态信息。
查整个转换表的过程叫转换表遍历。它由硬件制动进行,并需要大量的执行时间(至少一个存储器访问,通常是两个)。为了减少存储器访问的平均消耗, 转换表
Page 3 of 3
遍历结果被高速缓存在一个或多个叫作Translation Lookaside Buffers(TLBs)的结构中。通常在ARM的实现中每个内存接口有一个TLB。
• 有一个存储器接口的系统通常有一个唯一的TLB
• 指令和数据的内存接口分开的系统通常有分开的指令TLB和数据TLB
如果系统有高速缓存, 高速缓存的数量也通常是由同样的方法确定的。所以在高速缓存的系统中,每个高速缓存一个TLB。
当存储器中的转换表被改变或选中了不同的转换表(通过写CP15的寄存器2),先前高速缓存的转换表遍历结果将不再有效。MMU结构提供了刷新TLB的操作。
MMU结构也允许特定的转换表遍历结果被锁定在一个TLB中,这就保证了对相关的存储器区域的访问绝不会导致转换表遍历,这也对那些把指令和数据锁定在高速缓存中的实时代码有相同的好处。
3.2存储器访问的顺序
当ARM要访问存储器时,MMU先查TLB中的虚拟地址表,如果ARM的结构支持分开的地址TLB和指令TLB,那么它用:
• 取指令使用指令TLB
骅探网oej5
• 其它的所有访问类别用数据TLB
如果TLB中没有虚拟地址的入口,则转换表遍历硬件从存在主存储器中的转换表中获取转换和访问权限,一旦取到,这些信息将被放在TLB中,它会放在一个没有使用的入口处或覆盖一个已有的入口。关于转换表的信息和转换表遍历的实现参见转换过程一节。
一旦为存储器访问的TLB的入口被拿到,这些信息将被用于:
1. C(高速缓存)和B(缓冲)位被用来控制高速缓存和写缓冲,并决定是否高速缓存。(如果系统中没有高速缓存和写缓冲,则对应的位将被忽略)
2. 访问权限和域位用来控制访问是否被允许。如果不允许,则MMU将向ARM处理器发送一个存储器异常;否则访问将被允许进行。
访问权限、域和异常几节有详细描述。
Page 4 of 4
3. 对没有高速缓存的系统(包括在没有高速缓存系统中的所有存储器访问),物理地址将被用作主存储器访问的地址。
对有高速缓存的系统,在高速缓存没有选中的情况下,物理地址将被用行取(line fetch)的地址。如果选中了高速缓存,则物理地址将被忽略。
图3-1说明了这种高速缓存系统
图3-1 高速缓存的MMU存储器系统
Page 5 of 5
3.2.1 允许和禁止MMU
汽车下乡信息管理系统
通过写系统控制协处理器的寄存器1的第0位可以允许和禁止MMU。在复位后这位是0,MMU被禁止。
当MMU被禁止时,存储器访问将被按如下处理:
1. 由具体的实现确定当MMU被禁止时是否能够允许高速缓存和写缓冲。
• 当MMU被禁止时不能允许高速缓存和写缓冲时,C和B位不起作用。
• 当MMU被禁止时能允许高速缓存和写缓冲时:
俄亥俄
i. 访问数据时被认为没有高速缓存和写缓冲(C==0,B==0)
ii. 取指令时:
a) 当系统只有一个唯一的TLB时,认为是没有高速缓存。(C==0)
b) 当系统只有独立的指令TLB时,认为是有高速缓存。(C==1)
2. 没有存储器访问权限的检查,MMU也不产生异常信号。
3. 物理地址与虚拟地址相同(即所谓的平坦地址映射模式)。
在允许MMU之前,必须在内存中建立适当的转换表,并且所有相关的CP15寄存器要被初始化正确。
注:-------------------
允许和禁止MMU直接改变了虚拟地址到物理地址的映射(除非转换表被设定为平坦地址映射模式)。所以很可能在允许MMU时所有的高速缓存需要被刷新。
另外,如果允许MMU的指令的物理地址和虚拟地址不同,取指令将变得复杂化。所以,强烈建议允许MMU的指令具有相同的物理地址和虚拟地址。
--------------------------
Page 6 of 6