山东建筑大学信息与电气工程学院1第3章ARM体系结构主要内容1324ARM体系结构概述编程模型ARM基本寻址方式ARM指令集5ARM9TDMI内核6ARM9与ARM7的比较ARM920T核7山东建筑大学信息与电气工程学院2第3章ARM体系结构ARM920T功能框图ARM920T处理器是ARM9TDMI通用微处理器家族中的一员,主要用于把完全的存储器管理、高性能和低功耗都看得非常重要的多处理器应用领域。山东建筑大学信息与电气工程学院3第3章ARM体系结构3.7.1ARM920T编程模型ARM920T处理器的编程模型由ARM9TDMI内核的编程模型构成,并有如下增加和修改:ARM920T处理器加入了两个协处理器CP14,允许软件访问调试通信通道。系统控制协处理器CP15,提供了一些附加寄存器用于配置和控制Caches、MMU、保护系统、时钟模式和其他系统选项。ARM920T还特有一个外部协处理器接口,允许在同一个芯片上附加紧耦合的协处理器,例如一个浮点单元。对于取指令以及数据加载和存储操作产生的存储器访问可以被高速缓存或缓冲。贮存在主存中的MMU页表描述了虚拟地址到物理地址的映射、访问权限以及Cache和写缓冲的配置。MMU页表由操作系统创建,一旦某次访问引起TLB未命中则由ARM920TMMU硬件自动进行访问。ARM920T有一个跟踪接口,允许使用用于实时跟踪指令和数据的硬件及各种工具。山东建筑大学信息与电气工程学院4第3章ARM体系结构TLB:Translationlookasidebuffer旁路转换缓冲,或称为页表缓冲TLB里面存放的是一些页表文件(虚拟地址到物理地址的转换表)TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存.TLB是位于内存中的页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据.当CPU对数据进行读请求时,CPU根据虚拟地址高位到TLB中查找.TLB中保存着虚拟地址高位和页框号的对映关系,如果匹配到虚拟地址就可以迅速找到页框号,通过页框号与虚拟地址低位的偏移组合得到最终的物理地址.如果没在TLB中匹配到虚拟地址,就出现TLB丢失,需要到页表中查询页表项,如果不在页表中,说明要读取的内容不在内存,需要到磁盘读取.TLB是MMU中的一块高速缓存,也是一种Cache.TLB命中和TLB失败:如果TLB中正好存放着所需的页表,则称为TLB命中(TLBHit);如果TLB中没有所需的页表,则称为TLB失败(TLBMiss)。如果MMU发现在TLB中没有命中,它在常规的页表查找后,用找到的页表项替换TLB中的一个条目.山东建筑大学信息与电气工程学院5第3章ARM体系结构CP15寄存器映射寄存器读写0ID编码不可预知0Cache类型不可预知1控制控制2变换表基址变换表基址3域访问控制域访问控制4不可预知不可预知5故障状态故障状态6故障地址故障地址7不可预知Cache操作8不可预知TLB操作9Cache锁定Cache锁定10TLB锁定TLB锁定11和12不可预知不可预知13FCSEPIDFCSEPID14不可预知不可预知15测试配置测试配置山东建筑大学信息与电气工程学院6第3章ARM体系结构访问CP15寄存器只能在特权模式下对CP15寄存器使用MRC和MCR指令进行访问。MCR和MRC指令的位模式图如下。MRC{cond}coproc,opcode1,Rd,CRn,CRm{,opcode2}L用于区分MRC(L=1)和MCR(L=0)山东建筑大学信息与电气工程学院7第3章ARM体系结构寄存器0寄存器0可以提供对多个寄存器的访问,被访问的寄存器由Opcode_2字段的值决定。ID编码寄存器Cache类型寄存器该寄存器为只读寄存器,返回32位的设备ID编码。通过读CP15寄存器0并将opcode_2字段设置0可以访问ID编码寄存器。例如:MRCp15,0,Rd,c0,c0,0;返回ID寄存器该寄存器为只读寄存器,它包含ICache和DCache的大小以及体系结构的相关信息。通过读CP15寄存器0并将opcode_2字段设置为1可以访问Cache类型寄存器,例如:MRCp15,0,Rd,c0,c0,1;返回Cache的详细资料山东建筑大学信息与电气工程学院8第3章ARM体系结构寄存器1该寄存器包含ARM920T的控制位。所有保留位必须按要求写入0或1,或者使用“读-修改-写”进行写入。读保留位将得到不可预知的值。读写这个寄存器的指令如下:MRCp15,0,Rd,c1,c0,0;读控制寄存器MCRp15,0,Rd,c1,c0,0;写控制寄存器除了V位,所有已定义的控制位在复位时被设置为0。山东建筑大学信息与电气工程学院9第3章ARM体系结构山东建筑大学信息与电气工程学院10第3章ARM体系结构山东建筑大学信息与电气工程学院11第3章ARM体系结构寄存器2寄存器c2是变换表基址(TTB,TranslationTableBase)寄存器,用于保存当前活动的第一级变换表的基地址。从寄存器2读时,将返回位[31:14]中指向的当前活动的第一级变换表的指针。向寄存器2写时,使用写入值的[31:14]位的值来更新第一级变换表的指针。位[13:0]在写时应该是0,读时是不可预知的。使用如下指令可以访问TTB:MRCp15,0,Rd,c2,c0,0;读TTB寄存器MCRp15,0,Rd,c2,c0,0;写TTB寄存器山东建筑大学信息与电气工程学院12第3章ARM体系结构寄存器3寄存器3是可读写的域访问控制寄存器,包含16个两位字段。每一个两位字段分别定义了16个域(D15-D0)的访问权限。使用如下指令可以访问域访问控制寄存器:MRCp15,0,Rd,c3,c0,0;读域15:0访问权限MCRp15,0,Rd,c3,c0,0;写域15:0访问权限山东建筑大学信息与电气工程学院13第3章ARM体系结构寄存器5寄存器5是故障状态寄存器(FSR,FaultStatusRegister)。FSR保存最近一次发生数据故障的原因,即当产生数据中止时指示试图进行访问的域和类型。可以使用如下指令访问数据和预取FSR:MRCp15,0,Rd,c5,c0,0;读数据FSRMCRp15,0,Rd,c5,c0,0;写数据FSRMRCp15,0,Rd,c5,c0,1;读预取FSRMCRp15,0,Rd,c5,c0,1;写预取FSR山东建筑大学信息与电气工程学院14第3章ARM体系结构寄存器6寄存器6是故障地址寄存器(FAR,FaultAddressRegister)。FAR中包含最近一次出现故障时试图被访问的MVA(modifiedvirtualaddress)。FAR仅仅在出现数据中止时被更新,而出现预取故障时不会被更新(预取故障的地址保存在R14中)。可以使用如下指令访问FAR:MRCp15,0,Rd,c6,c0,0;读FAR数据MCRp15,0,Rd,c6,c0,0;写FAR数据山东建筑大学信息与电气工程学院15第3章ARM体系结构寄存器7寄存器7是一个只写寄存器,用于管理ICache和DCache。可以使用如下指令实现向寄存器7的写入:MCRp15,opcode_1,Rd,CRn,CRm,opcode_2山东建筑大学信息与电气工程学院16第3章ARM体系结构寄存器8寄存器8是一个只写寄存器,用于管理地址变换后备缓冲器(TranslationLookasideBuffer,TLB),包括指令TLB(ITLB)和数据TLB(DTLB)。执行TLB操作的指令如下:山东建筑大学信息与电气工程学院17第3章ARM体系结构寄存器9寄存器9是Cache锁定寄存器,复位时值为0x0。Cache锁定寄存器允许通过软件来单独控制ICache或DCache中的哪一行被加载以实现行填充,并且能够在行填充期间阻止ICache或DCache中的某些行被逐出,使其锁定在Cache中。opcode_2的值决定被访问的Cache寄存器:opcode_2=0x0访问DCache锁定寄存器。opcode_2=0x1访问ICache锁定寄存器。用于访问Cache锁定寄存器的指令:山东建筑大学信息与电气工程学院18第3章ARM体系结构寄存器10寄存器10是TLB锁定寄存器,复位时值为0x0。每个TLB都有一个TLB锁定寄存器,opcode_2的值用来决定哪一个TLB寄存器被访问:opcode_2=0x0访问DTLB寄存器。opcode_2=0x1访问ITLB寄存器。用来访问TLB锁定寄存器的指令:山东建筑大学信息与电气工程学院19第3章ARM体系结构寄存器13FCSE其功能就是将不同进程使用的相同虚拟地址映射为不同的虚拟空间,使得在上下文切换时无须重建TLB等。寄存器13是快速上下文切换扩展(FCSE)进程标识符(PID)寄存器。复位时FCSEPID寄存器值为0。使用如下指令可以访问寄存器13:•MRCp15,0,Rd,c13,c0,0;读FCSEPID•MCRp15,0,Rd,c13,c0,0;写FCSEPIDFCSEPID是一个7位字段,可以映射128×32MB个进程。0-32MB地址A变成A+(FCSEPID×32MB)。大于32MB的地址不再进行地址变换。山东建筑大学信息与电气工程学院20第3章ARM体系结构3.7.2存储器管理单元(MMU)1MMU简介2MMU编程可访问的寄存器3地址变换4MMU故障和CPU中止5故障地址和故障状态寄存器6域访问控制7故障检查顺序8外部中止9MMU和Cache的相互影响山东建筑大学信息与电气工程学院21第3章ARM体系结构1MMU简介ARM920T处理器实现了增强ARM体系结构v4MMU,为ARM9TDMI内核的指令和数据地址端口提供了变换和访问权限检查。MMU由存储在主存储器中的一组二级页表控制,该组页表由CP15寄存器1中的M位使能,提供了一种地址变换和保护方案。用户可以单独地锁定和刷新MMU中的指令和数据TLBs。(1)访问权限和域对于大页和小页,可以为每个子页(小页为1KB,大页为16KB)定义访问权限。区和极小页具有单独的一组访问权限。存储器的所有区域都有一个相关联的域。一个域是一个存储器区域的主要访问控制机制。它定义了发生一次访问需要的条件。总共有16个域,它们使用域访问控制寄存器来控制。(2)变换项每一个TLB缓存了64个变换项。在CPU存储器访问期间,TLB为访问控制逻辑提供保护信息。区1Mbyte,大页64Kbyte,小页4Kbyte,极小页1Kbyte山东建筑大学信息与电气工程学院22第3章ARM体系结构2MMU编程可访问的寄存器山东建筑大学信息与电气工程学院23第3章ARM体系结构CPU读内存的过程1CPU核发出VA请求读数据,TLB接收到该地址。如果TLB里缓存了当前VA的页表项则返回,否则去物理内存中读出页表项保存在TLB中(该物理内存的基地址保存在TTB中)。2页表项中不仅保存着物理页面的基地址,还保存着权限位和是否允许Cache的标志。MMU首先检查权限位,如果没有访问权限,就引发一个异常给CPU核。然后检查是否允许Cache,如果允许Cache就启用Cache和CPU核互操作。3如果不允许Cache,则直接发出PA从物理内存中读取数据到CPU核。4如果允许Cache,则以VA为索引到Cache中查找是否缓存了要读取的数据,如果Cache中已经缓存了该数据(称为CacheHit)则直接返回给CPU核,如果Cache中没有缓存该数据(称为CacheMiss),则发出PA从物理内存中读取数据并缓存到Cache中,同时返回给CPU核。然而Cache并不是只取CPU核所要的数据,而是把相邻的数据都取上来缓存,这称为一个CacheLine。ARM920T的CacheLine是32字节。山东建筑大学信息与电气工程学院24第3章ARM体系结构第一级取操作TTB寄存器的位[31:14]