1第4章ARM体系结构•本章主要介绍以下内容:–ARM存储器组织–ARM的异常中断24.6ARM存储器组织•介绍以下内容:–数据类型和存储格式–ARM的存储体系–片上存储器的用法–协处理器CP15–存储器管理单元MMU–保护单元–快速上下文切换扩展–写缓存器(WriteBuffer)–ARM的异常中断向量表和异常中断处理与返回34.6.1数据类型和存储格式•ARM存储器中的数据类型有6种–有符号数•8位(字节)、16位(半字)、32位(字)–无符号数•8位(字节)、16位(半字)、32位(字)–缺省端序设置为小端序2008年6月21日44.6.2ARM的存储体系•参看下图,抽象成一个呈金字塔型的存储结构•注重研究第2层寄存器片内Cache,写缓存,TCM,片内SRAM板卡级SRAM,DRAM和SDRAMNOR型和NAND型闪速存储器硬盘驱动器、光盘驱动器速度加快容量增大2008年6月21日54.6.3片上存储器的用法•多数ARM处理器芯片内部集成了存储器–它们统称为片上存储器–用途有:片上Cache、片上SRAM、紧耦合存储器(TCM)、写缓存•片上存储器的存储空间可以通过指令进行配置,定义成片上Cache,或者片上SRAM,或者一部分片上Cache加一部分片上SRAM。•紧耦合存储器和写缓存均需要编程使能或者硬件接线使能•按照具体应用情况决定片上存储器配置方法2008年6月21日6片上存储器用作紧耦合存储器•紧耦合存储器的英文原文如下:–TightlyCoupledMemory,TCM•弥补Cache访问的不确定性而增加的片上存储器。•除了片上紧耦合存储器外,还有紧耦合存储器接口,它能够提供低延时的外存储器访问。•有的处理器含有分立的指令TCM和数据TCM。TCM包含在存储器地址映射空间中,可以作为快速存储器来访问。除了不得包含读敏感地址之外,对TCM接口上连接的存储器类型没有其他限制。TCM使用物理地址,对TCM的写访问受到MMU内部保护信息的控制。2008年6月21日7TCM在ARMv6处理器核的位置•ARMv6处理器包括:ARM1136J-S、ARM1156T2紧耦合存储器地址变换ARM核R0L1CacheL2CacheDRAMSRAMFlashROM虚拟地址CP15配置控制指令预取LoadStore物理地址附加处理器R15R1TCM2008年6月21日8片内TCM存储器举例•ARM926EJ-S核心内置32KB指令缓存、16KB数字缓存和8KB数据-TCM和8KB指令-TCM;2008年6月21日9Cortex-R4F方框图—含TCM接口•注意图的右侧含有一个TCM仲裁和接口模块2008年6月21日10ARM1136的TCM支持DMA传输•参看ARM1136的方框图InterruptVectorPortVFPCoprocessorInterfacePrefetchUnitARM11CoreLSUw/3-entrybufferD-TCMD-CacheI-CacheI-TCMDMAForTCMsI-ReadDMAD-ReadD-WritePeripheralQuad64-bit-wideAHB-liteports32-bitAHBbus2008年6月21日11ARM966E-S核的TCM地址映射2008年6月21日12ARM966E-S的TCM别名地址空间•物理存储块可以通过TCM接口映射在片内的TCM存储区2008年6月21日13ARM966E-S的TCM特点•TheARM966E-SprocessorsupportsbothinstructionanddataTCMs.YoucanusetheDTCMandITCMtostorereal-timeandperformance-criticalcode.TheTCMsareinstantiatedexternallytotheARM966E-Smacrocellprovidingforflexibilityinthedesignofthememorysubsystem.Thesystemdesignercanselectmemorytypeandoptimizethememorysubsystemforpowerorspeed.2008年6月21日14ARM966E-S的TCM接口特点(续1)ThefeaturesoftheTCMinterfaceinclude:◇independentITCMandDTCMsizesof0KBor1KB-64MBinpower-of-twoincrements◇softwarevisibilityandprogrammabilityofTCMsizeandenable◇bootcontrolforITCM◇dataaccesstotheITCMforliteralpoolaccessesincode◇simpleSRAM-styleinterfacesupportingbothreadsandwrites◇variableTCMwaitstatecontrolforITCMandDTCM◇abilitytoindicatesequentialandnonsequentialaccesses.2008年6月21日15ARM966E-S的TCM特点接口(续2)TheARM966E-SprocessorcontainsaTCMcontrollerthat:◇schedulesrequeststotheTCMinterface◇handshakeswiththeARM966E-Smemorysystemcontrollertoacknowledgewhenrequestshavebeenserviced◇returnsTCMreaddatabacktotheARM9E-Score.TheTCMsarelocatedintheTCMaddressspace.2008年6月21日16AT91SAM9261处理器的TCM•AT91SAM9261的独立指令和数据缓存能支持WinCE和Linux操作系统。•而其基于TCM构架的SRAM区块则是“确定过程式”实时操作系统的理想安排。•另一方面,160K字节的片上SRAM可划分成多个16K字节的区块,作为“指令TCM”、“数据TCM”或片上外设的缓冲,从而让编程人员灵活地优化系统的性能和功耗。2008年6月21日17TCM的使能操作•通过二种方式进行TCM的使能操作–使用处理器芯片的INITRAM引脚–使用CP15的c1控制寄存器2008年6月21日18S3C44B0X和S3C4510B的三种片上存储器的配置用法•S3C44B0X和S3C4510B都有8KB的片上存储器–它们有三种配置用法•8KB的SRAM•8KB的Cache•4KB的SRAM加上4KB的Cache•较多采用片内RAM配置而非片内Cache配置。2008年6月21日19ARM920T的片内存储器•注意:ARM920T核的内部没有TCM2008年6月21日20ARM720T的片内存储器•8KByteunifiedcache•MemoryManagementUnit(MMU)•writebuffer•Unified32-bitAHBbusinterfacecarriesbothinstructionsanddata•EmbeddedTraceMacrocell(ETM)interface2008年6月21日214.6.4协处理器CP15•CP15即所谓的系统控制协处理器–SystemControlCoprocessor–在基于ARM的嵌入式系统中,诸如MMU、Cache配置、紧耦合处理器、写缓存配置之类的存储系统管理工作由协处理器CP15完成。•CP15可以包含16个32位寄存器–编号为CP0~CP15。–实际运用中写为C0~C15。2008年6月21日22CP15寄存器的访问•用户只能够在特权模式下使用MRC和MCR指令来访问CP15寄存器。2008年6月21日234.6.5存储器管理单元MMU•ARM的MMU部件的用途:◇完成虚拟存储空间到物理存储空间的映射。◇管理方式:页式虚拟存储器。◇页的大小有两种:粗粒度和细粒度。◇存储器访问权限的控制。◇设置虚拟存储空间的缓冲特性。2008年6月21日244.6.6保护单元•保护单元–PU,ProtectionUnit•也称为:MPU,MemoryProtectionUnit•为了消除术语的二义性,我们统一使用术语PU–保护单元提供了一个相当简单的替代MMU的方法来管理存储器。–对于不需要PU的嵌入式系统而言,PU简化了硬件和软件,主要表现在不使用转换表,这样免去了硬件遍历转换表和软件建立与维护转换表。2008年6月21日25保护单元的工作原理和作用•ARM核的PU使用区域(region)来管理系统保护。区域是一个存储空间相关联的一组属性,处理器核将这些属性保存在协处理器CP15的一些寄存器里,并用0-7的号码标识每一个区域(它也是一个具有特定属性的逻辑存储空间)。•区域的存储边界通过两个属性进行配置:起始地址和大小。•区域的大小可以是4KB~4MB的任何2的乘幂。2008年6月21日26受保护区域的属性•操作系统可以为受保护区域分配更多的属性,包括:–访问权限、Cache和写缓存器策略•访问权限可以是:读/写、只读和不可访问–基于处理器模式的权限•管理模式、用户模式等–Cache写策略•写直达Cache操作、无Cache操作、无写缓存器操作。2008年6月21日27含PU的ARM处理器主存访问过程•当处理器访问主存的一个区域时,PU比较该区域的访问权限属性和当时的处理器模式。•如果请求符合区域访问标准,则PU允许内核读/写主存;如果存储器请求导致存储器访问违例,则PU产生一个异常信号。•异常信号被传到处理器核,处理器核判断是出异常是预取指令中止还是数据中止,然后跳转到对应的异常处理例程。2008年6月21日28区域属性•有关区域的属性如下:–区域可以相互重叠–每一个区域有一个优先级,该优先级与分配给区域的权限无关–当区域重叠时,具有最高优先权的区域的属性可以覆盖其他区域的属性,优先权仅作用于重叠部分的地址。–区域的起始地址必须是其大小的倍数。–区域的大小是2的乘幂,2的12次方到32次方。2008年6月21日29访问受保护区域时产生的异常•访问所定义区域外的存储器将产生异常。•如果是内核预取指令,则PU产生一个预取指令中止异常。•如果是存储器数据请求,则PU产生数据中止异常。2008年6月21日30带PU的ARM核概要•以下给出了四种带PU的ARM核概要属性ARM核区域数目指令区域和数据区域是否分离指令和数据区域配置是否分离ARM740T8否否ARM940T16是是ARM946E-S8否是ARM1026EJ-S8否是2008年6月21日31在带PU的ARM系统中创建区域•要实现一个受PU控制主存的嵌入式系统,需要对主存中的不同块定义若干区域。•一个区域可以被创建一次,然后一直用到嵌入式系统运行结束;•也可以临时创建一个区域来满足一个特殊操作的需要,用完之后就加以删除。2008年6月21日32含有PU的ARM核•含有8个受保护区域的ARM核–ARM740T–ARM946E-S–ARM1026EJ-S•含有16个受保护区域的ARM核–ARM940T2008年6月21日33初始化PU、Cache和写缓冲器•为了初始化PU、Cache和写缓冲器,控制系统必须定义在操作目标平台时所需要的保护区域。功能主存储器次存储器系统控制C1C0区域的cache属性C2C0区域的写缓冲器属性C3C0区域的访问权限属性C5C0区域的大小和位置C6C0~C72008年6月21日34带保护单元和MMU的系统框图C5寄存器C2,C3寄存器优先级编码器存储区地址比较器访问控制硬件访问允许控制位(AP控制位)ARMcoreCache和写缓存寄存器允许Cache控制位,允许缓存控制位(C,B控制位)中止选择的区域Ca