1.1.2.1 ARM 核子系统(ARMSS):ARM926EJ-S
ARM926EJ-S 处理器为ARM9系列中的一种,主要面向大存储管理,高性能,低功耗的多任务应用程序。ARM926EJ-S 处理器支持32位ARM和16位THUMB指令集, 方便客户达到高性能与高密代码密度统一。ARM926EJ-S处理器支持ARM调试架构。包括软件与硬件联合逻辑调试辅助功能. ARM926EJ-S processor 具有哈佛架构,提供完全高性能的系统: ARM926EJ-S integer core集成内核
Memory Management Unit (MMU) 存储器管理单元
AMBA AHB总线接口 TCM接口
ARM926EJ-S 处理器实现ARM Ver. 5TEJ架构。ARM926EJ-S新增扩展16位固定有号运算,通过在一个指令周期内完成32x16乘累加MAC运算。 通过一个仲裁,I-TCM与D-TCM接口可以访问ARM子系统内的16KB内部
RAM和 8KB的内部ROM。该仲裁为DM355 DMSoC其它部分提供了DMA从接口,此外,ARM有DMA和CFG总线主端口,挂在AHB总线接口上。
运行状态与模式
ARM运行的两种状态: ARM (32-bit) 模式 Thumb (16-bit) 模式.
用BX指令来进行模式切换
ARM工作的几种模式:
· 用户模式:非特权模式,用来运行大量的用户程序 · 快速中断模式Fast interrupt mode (FIQ): 快速中断处理 · 中断模式 Interrupt mode (IRQ): 一般中断事务处理
· 监管模式Supervisor mode (SVC): 用于操作系统,实现现场等保护处理 · 异常模式Abort mode (ABT): 数据异常或预取异常进入的异常模式 · 系统模式System mode (SYS): 用于操作系统特权模式
· 未定义模式Undefined mode (UND): 执行未定义指令等时,引起ARM进入未定义模式
可以从其他特权模式进入某一特权模式(系统模式与监管模式)。 通过软件中断SWI,从用户模式进入监管模式, 另外IRQ中断请求,可以使处理器进入中断模式, FIQ中断可以引起处理器进入快速中断模式, 不同的模式有不同的堆栈,当模式进行切换时,堆栈指针SP会自动改变到相应的模式SP。
处理器状态寄存器PSR
PSR状态寄存器用来控制中断的使能与禁止,以其处理器模式切换, PSR [7:0] 为控制部分, PSR [27:8]用于保留兼容, PSR [31:28]为状态位
PSR[7:0]定义如下:
· Bit 7 – I 位: 禁止 IRQ (I =1) 或使能 IRQ (I = 0) · Bit 6 - F 位: 禁止 FIQ (F = 1) 或使能 FIQ (F = 0)
· Bit 5 - T 位: 进入thumb 模式 (T = 1)或者ARM模式 (T = 0) · Bits 4:0 模式: 处理器模式控制位
– PSR [4:0] = 10000 : 用户模式User mode – PSR [4:0] = 10001 : 快速中断模式FIQ mode
– PSR [4:0] = 10010 : 外部中断IRQ mode
– PSR [4:0] = 10011 : 监管模式Supervisor mode – PSR [4:0] = 10111 : 异常模式Abort mode
– PSR [4:0] = 11011 : 未定义模式Undefined mode – PSR [4:0] = 11111 : 系统模式System mode
PSR[31:28]状态位反映最近的ALU运算结果,其定义如下: · Bit 31 - N bit: Negative or less than 运算结果为负数或小于 · Bit 30 - Z bit: Zero 运算结果全0
· Bit 29 - C bit: Carry or borrow进位或借位
· Bit 28 - V bit: Overflow or underflow溢出或下溢
异常与异常向量
当正常执行程序被中断,暂时挂起而引起异常发生。ARM系统引起异常类型包括如下几种:
· 复位中断Reset exception: processor reset处理复位 · 快速中断FIQ interrupt: fast interrupt快速中断处理 · IRQ 中断interrupt: normal interrupt 中断事件处理
· 异常Abort 中止: 当前存储空间无法访问时,引起abort异常, 或者访问指令时的预取中止Abort与数据运算时的Abort。 · SWI软件中断:在程序中通过SWI指令进入监管模式
· 未定义指令异常: 当处理器运行未定义指令时而进入此异常模式 异常处理按优先级从高到低排列:复位,数据Abort, FIQ, IRQ, 预取Abort, 未定义指令异常, SWI软件中断。 SWI软件中断与未定义指令异常优先级相同。异常中断向量表起始地址,根据VINTH的值或者协处理器CP15寄存器设置来决定:
0x00000000 (VINTH = 0) 或者 0xFFFF0000 (VINTH = 1)。 注意:此为ARM926EJ-S核的特征,因为DMSoC的存储地址0xFFFF0000不存在,因此不能对VINTH设置。 默认的异常中断向量表参考
Exception Vector Table for ARMARM异常中断向量表
16位/32位指令集BIS
16位指令集基于高度精简指令架构的思想, ARM926EJ-S支持两种指令集:
· ARM模式或标准的32位指令集 · Thumb模式或者16指令集
对比传统16位处理器(使用16位寄存器),16位长的16BIS能实现32BIS大部分高性能,代码密度提高接近2倍。而且16BIS的代码在32BIS模式下当作32位指令运行。 占32BIS代码65%的空间,性能却达到同等32BIS的处理器搭配16位的存储器的160%。
16-BIS/32-BIS 优势
16位操作指令配备标准的32位寄存器的配置,能够在32位与16位达到最佳性能, 每一条16位指令都有对应的32位指令。 32位架构对比16位架构的最大优势是一条指令完成32位整数运算,以及高效的处理大地址空间。
当处理32位数据, 16位架构至少需要两条指令来执行,而32位指令完成同样的任务一条即可。然而,并非所有的代码都是处理的数据都为32位数据(例如,代码,执行字符串处理),以及一些指令(如分支跳转指令)不处理任何数据。如果一个16位架构只有16位的指示,和一个 32位微控制器架构只有32位的指令,那么总体而言16位架构具有更好的代码密度,
并且优势超过32位架构一半。显然, 32位的性能牺牲了代码密度的成本。
Coprocessor 15 (CP15)
系统控制协处理器(CP15)是用于配置和控制指令和数据高速缓存器, 紧耦
合存储器Tightly-Coupled Memories (TCMs),内存管理单元(MMUs),许多系统功能。CP15寄存器是唯一被MRC和 MCR指令可访问的,但是必需在ARM的privileged mode下,如supervisor mode or system mode。
ARM926EJ-S地址
三种不同类型的地址存在在ARM926EJ - S系统中。它们如下:
Different Address Types in ARM System
内存管理单元
ARM926EJ - S的MMU提供虚拟内存功能, 适应操作系统的要求,如 Symbian操作系统, WindowsCE和Linux 。在主内存中的一套两级页存储表控制地址翻译,许可检查,和数据和指令访问的内存区域属性。MMU使用一个统一的Translation Lookaside Buffer (TLB)来匹配页表信息。
MMU的特点如下:
·标准的ARM架构,第4版和第5版的MMU映射大小,domains网域,访问保护方案。
·映射尺寸:1 MB (sections), 64 KB (large pages), 4 KB (small pages) and 1 KB (tiny pages)
·大型和小型页页面访问权限,可分别为页面每部分而不同。 · Hardware page table walks
· 无效入口TLB, 使用 CP15 寄存器 8
· 无效TLB入口, MVA来选择, 使用 CP15 寄存器 8 · 锁定TLB入口, 使用 CP15 寄存器10
Caches 和 Write Buffer ARM926EJ-S processor支持:
cache (Icache) 16KB cache (Dcache) 8KB 17字节
缓存caches具有以下特点:
Virtual index, virtual tag, 地址访问,使用Modified Virtual Address (MVA)。
Four-way set associative4路集联方式, cache缓存长度的8个字,每行