|
http://www.arm7-arm9.com/arm/arm-8011.htm MMU 许多嵌入式微处理器都由于没有 MMU 而不支持虚拟内存。没有内存管理单元所带来的好处是简化了芯片设计,降低了产品成本。由于大多数的嵌入式设备没有磁盘或者只有很有限的内存空间,所以无需 复杂的内存管理机制。但是由于没有 MMU 的管理,操作系统对内存空间是没有保护的,所有程序访问的地址都是实际物理地址。 关于存储器管理单元的结构 MMU 存储器系统的结构允许对存储器系统的精细控制。大部分的控制细节由存在于存储器中的转换表提供。这些表的入口定义了从1KB 到1MB 的各种存储器区域的属性。这些属性包括: 虚拟地址到物理地址映射 ARM 处理器产生的地址叫虚拟地址,MMU 允许把这个虚拟地址映射到一个不同的物理地址去。这个物理地址表示了被访问的主存储器的位置。 它允许用很多方式管理物理存储器的位置,例如:它可以用具有潜在冲突的地址映射为不同的进程分配存储器,或允许具有不连 续地址的应用把它映射到连续的地址空间。 存储器访问权限(permissions) 这些控制对存储器区域的不可访问权限、只读权限、读写权限。当访问不可访问权限的存储器时,会有一个存储器异常通知 ARM处理器。 允许权限的级别也受程序运行在用户状态还是特权状态影响,还受是否使用了域有关。 高速缓存和缓冲位(Cachability and bufferability bits [C and B]) 系 统控制协处理器的寄存器允许对系统的高级控制,如转换表的位置。他们也用来为ARM 提供内存异常的状态信息。查找整个转换表的过程叫转换表遍历。它由硬件制动进行,并需要大量的执行时间(至少一个存储器访问,通常是两个)。为了减少存储 器访问的平均消耗, 转换表遍历结果被高速缓存在一个或多个叫作Translation Lookaside Buffers(TLBs)的结构中。通常在ARM 的实现中每个内存接口有一个TLB。 ・ 有一个存储器接口的系统通常有一个唯一的TLB ・ 指令和数据的内存接口分开的系统通常有分开的指令TLB 和数据TLB 如果系统有高速缓存, 高速缓存的数量也通常是由同样的方法确定的。所以在高速缓存的系统中,每个高速缓存一个TLB。 当存储器中的转换表被改变或选中了不同的转换表(通过写CP15 的寄存器2),先前高速缓存的转换表遍历结果将不再有效。MMU 结构提供了刷新TLB 的操作。 MMU 结构也允许特定的转换表遍历结果被锁定在一个TLB 中,这就保证了对相关的存储器区域的访问绝不会导致转换表遍历,这也对那些把指令和数据锁定在高速缓存中的实时代码有相同的好处。 |
