ARM处理器当前有6个产品系列:ARM7、ARM9、ARM9E、ARM10E、ARM11和SecurCore,其中ARM11为最近推出的产品。进一步的产品来自于合作伙伴,例如Intel Xscale ARM7、ARM9、ARM9E、ARM10E是4个通用处理器系列。每个系列提供一套特定的性能来满足设计者对功耗、性能、体积的需求。
表1.3显示了ARM7、ARM9、ARM10及ARM11内核之间属性的比较。有些属性依赖于生产过程和工艺,具体芯片需参阅其芯片手册。
并不是所有的指令都需要上述每一个步骤,但是,多数指令需要其中的多个步骤。这些步骤往往使用不同的硬件功能,例如,ALU可能只在第4步中用到。因此,如果一条指令不是在前一条指令结束之前就开始,那么在每一步骤内处理器只有少部分的硬件在使用。
ARM7系列处理器主要应用于下面一些场合:个人音频设备(MP3播放器、WMA播放器、AAC播放器); 接入级的无线设备;喷墨打印机;数码照相机
ARM内核采用精简指令集结构(RISC,Reduced Instruction Set Computer)体系结构。RISC技术产生于上世纪70年代。其目标是设计出一套能在高时钟频率下单周期执行、简单而有效的指令集,RISC的设计重点在于降低硬件执行指令的复杂度,这是因为软件比硬件容易提供更大的灵活性和更高的智能。
根据内存访问指令的分类,内存访问指令的寻址方式可以分为以下几种。 ① 字及无符号字节的Load/Store指令的寻址方式。 ② 杂类Load/Store指令的寻址方式。 ③ 批量Load/Store指令的寻址方式。 ④ 协处理器Load/Store指令的寻址方式。
ARM处理器内核广泛应用于嵌入式系统和其他行业应用中。为了适应不同系统的需要,ARM采用了灵活多样的存储管理体系。从平板式内存映射到灵活方便的MMU内存管理单元,用户可以根据自己的需要使用不同的存储管理策略。
ARM系统完成I/O功能的标准方法是使用存储器映射I/O。这种方法使用特定的存储器地址。当从这些地址加载或向这些地址存储时,它们提供I/O功能。某些ARM系统也可能有直接存储器访问(DMA,Direct Memory Access)硬件。
Load/Store内存访问指令在ARM寄存器和存储器之间传送数据。ARM指令中有3种基本的数据传送指令。
异常或中断是用户程序中最基本的一种执行流程和形态。这部分主要对ARM架构下的异常中断做详细说明。
用户选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成开发环境(IDE)一般来说是必不可少的,如ARM公司的RealView开发环境。
ARM采用的是32位架构,ARM的基本数据类型有以下3种。 Byte:字节,8bit。Halfword:半字,16bit。 Word:字,32bit。
数据处理指令是在算术逻辑单元ALU中完成。ARM处理器一个显著特征就是可以在操作数进入ALU之前,对操作数进行指定位数的左移或右移操作。这种功能明显增强了数据处理操作的灵活性。
大多数的用户程序运行在用户模式下。当处理器工作在用户模式时,应用程序不能够访问受操作系统保护的一些系统资源,应用程序也不能直接进行处理器模式切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器模式切换。这种体系结构可以使操作系统控制整个系统资源的使用。
ARM处理器共有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。表3.2显示了ARM的寄存器组织概要。
多寄存器Load/Store内存访问指令也叫批量加载/存储指令,它可以实现在一组寄存器和一块连续的内存单元之间传送数据。LDM用于加载多个寄存器,STM用于存储多个寄存器。多寄存器Load/Store内存访问指令允许一条指令传送16个寄存器的任何子集或所有寄存器。
MOV指令是最简单的ARM指令,执行的结果就是把一个数N送到目标寄存器Rd,其中N可以是寄存器,也可以是立即数。
MVN是反相传送(Move Negative)指令。它将操作数的反码传送到目的寄存器。MVN指令多用于向寄存器传送一个负数或生成位掩码。
交换指令是load/store指令的一种特例,它把一个寄存器单元的内容与寄存器内容交换。交换指令是一个原子操作(atomic operation),也就是说,在连续的总线操作中读/写一个存储单元,在操作期间阻止其他任何指令对该存储单元的读/写。
ARM指令集提供了两条指令,可直接控制程序状态寄存器(PSR,Program State Register)。MRS指令用于把CPSR或SPSR的值传送到一个寄存器;MSR与之相反,把一个寄存器的内容传送到CPSR或SPSR。这两条指令结合,可用于对CPSR和SPSR进行读/写操作。