伟德体育:PowerPC E500 MMU详解

发布时间:2022-10-06 09:28:29 来源:伟德体育平台 作者:伟德体育投注

  。MMU是负责处理器(CPU)的内存访问请求的计算机硬件,其功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、缓存cache的控制等。

  MMU是一个与软件密切相关的硬件部件,也是运行linux等依赖MMU内存管理单元操作系统内核机制的最大部件之一。如果处理器没有MMU,CPU内部执行单元产生的内存地址信号将直接通过地址总线发送到芯片引脚,被内存芯片接收,这就是物理地址(physical address),简称PA。英文physical代表物理的接触,所以PA就是与内存芯片physically connected的总线上的信号。

  如果MMU存在且启用,CPU执行单元产生的地址信号在发送到内存芯片之前将被MMU截获,这个地址信号称为虚拟地址(virtual address),简称VA,MMU会负责把VA翻译成另一个地址,然后发到内存芯片地址引脚上,即VA映射成PA。

  PowerPC芯片凭借其出色的性能和高度整合和技术先进特性在网络通信应用,工业控制应用,家用数字化,网络存储领域,军工领域,电力系统控制等都具有非常广泛的应用。

  PowerPC E500 核心(后简称“E500”)采用了两级内存管理单元(MMU)体系结构。L1-MMU、L2-MMU为该结构中的两个硬件单元。E500通过L1-MMU和L2-MMU,以及一些辅助寄存器和指令来实现虚实地址的转换。E500v1核心是把32位有效地址转换为32位物理地址(使用41位临时虚拟地址);E500v2核心是把32位有效地址转换为36位物理地址。

  3. L1 MMU访问与L1缓存访问(地址转换/L1缓存)并行访问可以完全流水线化,这样每个时钟都可以完成一个加载/存储。

  5. 所有L1 TLB条目都是驻留在L2 MMU中的TLB条目的一个适当子集。

  1. 16个条目,完全关联的统一的L2 TLB数组(用于指令和数据访问)TLB1支持9种(E500v1)或11种(E500v2)页面大小,即TLB1,用于段式映射。

  5. 执行由当前核心tlbivax指令产生的TLB1和TLB0失效。支持TLB1和TLB0由其他核心执行的tlbivax指令导致的失效操作。

  6. TLB1中实现的IPROT位防止了无效,从而保护关键表项(通过设置IPROT位来指定)不会失效。

  因为E500最小页的大小是4 Kbytes,所以低12位通常被用做4K页内的索引并且不需要进行翻译。首先检查L1 MMU(指令或数据)是否命中地址翻译。如果没有,翻译请求将被转发到(指令和数据)L2 MMU中进行处理。

  在TLB中,数据都是按行存放的,一行称之为一个entry。一个entry包含了若干bit位下面是MMU entry的bit位含义描述:

  V:用来表示当前entry是否有效。为0时表示无效,为1时表示有效。在系统reset之后,所有entry的V位都设为0。

  TID[0:7]:上面地址空间中的PID。TID为0时,忽略PID的比较。在Linux中,全为0。

  PERMIS[0:5]:用于描述当前entry的访问控制位。分别是UR,SR,UW,SW,UX,SX。分别表示用户态和内核态的读/写/执行权限。

  WIMGE[0:4]:W表示当前entry是write through还是write back。I表示当前entry是否忽略Cache。M表示对此数据区的访问需要进行存储一致性处理。G表示对相应存储区域进运行保护。E表示当前entry是小端还是大端。

  IPROT:当IPROT为1时,表示当前entry被保护。不能使用tlbivax指令无效该entry。只能用tlbwe指令清除。在E500中只有TLB1支持该位,在TLB0中,该位一直为0。

  PID0-2寄存器:用于保存当前进程的PID,该寄存器只有54-63位有效。

  MMUCFG寄存器:用来保存当前MMU的配置信息,包括PID寄存器数量,大小,TLB的数量等。

  TLB0CFG和TLB1CFG寄存器:用于描述TLB0和TLB1的配置信息,包括entry数量,页表大小等信息。

  MAS0寄存器:决定写哪个TLB的哪个entry。TLBSEL字段用于选择要操作的TLB,0表示TLB0,1表示TLB1。ESEL字段用于选择TLB的entry。当使用TLB1 时,ESEL字段中低4位有效,用于选择TLB1中的entry。当使用TLB0时,ESEL中只有最低位有效,因为TLB0是两路组相连。NV位用于确定如何替换TLB0中的entry。

  该寄存器主要用于存放当TLB miss异常发生时,对MAS0-3寄存器自动加载而使用的默认值,也就是说MAS4寄存器的内容是硬件写入的。为了提高TLB miss异常的效率,在异常出现时,E500会用MAS4寄存器中的值,自动填写MAS0-2寄存器中的一部分内容:

  MAS6寄存器:用于对TLB进行检索,MAS6寄存器提供SPID0和SAS,也就是PID和AS字段。

  MAS7寄存器(只E500v2支持):包含实现的RPN的高阶地址位支持超过32位的物理地址。

  SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。SkyEye支持PowerPC架构E500处理器的指令集仿真,为了支持运行包含MMU单元的操作系统(例如VxWorks、Linux等),需要实现对MMU的仿真功能,其中包含TLB(Translation Lookaside Buffer,转换检测缓冲区)相关的指令实现和MMU虚实翻译过程。

  根据有效地址EA的Bit61位决定是否是无效全部的entry,如果不是,计算出相对应的entry,然后设置entry-v = 0用于使表项失效。

  复位后,L1和L2 MMU中的TLB表项全部失效,TLB1的第一个entry需要初始化赋值,如下所示:

上一篇:没有上一篇了 下一篇:电脑cpu处理器排名(cpu天梯图2019)