1.11k likes | 1.34k Views
嵌入式系统讲义 第 2 章 ARM9 体系结构. 周国运 2007.3. 第 2 章 ARM9 体系结构. 主要内容 2.1 ARM 处理器简介 2.2 ARM9 结构 2.3 ARM 数据类型和存储格式 2.4 处理器状态和工作模式 2.5 ARM 寄存器 2.6 ARM 异常 2.7 ARM 调试接口. 2.1 ARM 处理器简介. 2.1.1 ARM 公司简介 ARM 是 Advance RISC Machine 的缩写, 既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。
E N D
嵌入式系统讲义第2章 ARM9体系结构 周国运 2007.3
第2章 ARM9体系结构 主要内容 2.1 ARM处理器简介 2.2 ARM9结构 2.3 ARM数据类型和存储格式 2.4 处理器状态和工作模式 2.5 ARM寄存器 2.6 ARM异常 2.7 ARM调试接口
2.1 ARM处理器简介 2.1.1 ARM公司简介 ARM是Advance RISC Machine 的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 • ARM公司于1990年11月在英国剑桥成立,前身为Acorn计算机公司。 • ARM公司是全球领先的16/32位嵌入式RISC微处理器解决方案供应商。 • ARM公司是知识产权(IP)公司,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。 目前,全世界有几十家著名的半导体公司都使用ARM公司的授权,其中包括MOTOROLA、IBM、Intel、 LG、 SONY、NEC、ATMEL等,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM处理器核的设计可以很快投入市场。ARM公司已成为移动通信、手持设备、多媒体数字消费嵌入式解决方案的RISC标准。
2.1.2 ARM体系结构的特点 • 总体思想:在不牺牲性能的同时,尽量简化处理器。同时从体系结构的层面上灵活支持处理器扩展。这种简化和开放的思路使得ARM处理器采用了很简单的结构来实现。 • ARM处理器是最先进的:目前,ARM32位体系结构被公认为业界领先的32位嵌入式RISC微处理器核,所有ARM处理器都共享这一体系结构。
2.1.2 ARM体系结构的特点(2) 一、RISC型处理器结构 ARM采用RISC结构,在简化处理器结构,减少复杂功能指令的同时,提高了处理器的速度。 考虑到处理器与存储器打交道的指令执行时间远远大于在寄存器内操作的指令执行时间,RISC型处理器采用了Load/Store(加载/存储)结构,即只有Load/Store指令可与存储器打交道,其余指令都不允许进行存储器操作。 同时,为了进一步提高指令和数据的存取速度,RISC型处理器增加了指令高速缓冲I-Cache和数据高速缓冲D-Cache及多处理器结构,使指令的操作尽可能在寄存器之间进行。
只能对寄存器执行算术和逻辑 操作,Load/Store体系结构 2.1.2 ARM体系结构的特点(3)
2.1.2 ARM体系结构的特点(4) 二、Thumb指令集 虽然ARM处理器本身是32位设计,但考虑到RISC型处理器的指令功能相对较弱,新型的ARM体系结构中定义了16位的Thumb指令集。 Thumb指令集比通常的8/16位CISC/RISC处理器有更好的代码密度,而芯片面积只增加6%,却可以使程序存储器更小。 三、多处理器状态模式 ARM体系结构定义了7种处理器模式:用户、 快中断、中断、管理、终止、未定义和系统模式,大大提高了ARM处理器的效率。 四、两种处理器工作状态(执行32位ARM指令) ARM状态和Thumb状态。(执行16位Thumb指令)
2.1.2 ARM体系结构的特点(5) 五、嵌入式在线仿真调试 ARM体系结构的处理器芯片都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试芯片,省去了价格昂贵的在线仿真器。 六、灵活方便的接口 ARM体系结构具有协处理器接口,允许接16个协处理器。既可以使基本的ARM处理器内核尽可能小,方便地扩充ARM指令集,也可以通过未定义指令来支持协处理器的软件仿真。 七、低电压功耗的设计 考虑到ARM处理器主要用于手持式嵌入式系统中,在设计中就十分注意功耗的设计。
2.1.3 ARM指令系统版本 ARM公司从最初的开发到现在,ARM指令集结构有了巨大的改进,并在不断完善和发展。为了清楚地表达每个ARM内核所使用的指令集,ARM公司定义了一系列的指令集体系结构版本,以vx表示某种版本。下面对版本v1~v5做一介绍。 一、版本1(v1) v1在ARM1中使用,但从未商业化。 26位寻址空间,其指令主要有: • 基本的数据处理指令(无乘法指令) • 字、字节和半字存储器访问指令 • 分支指令(包括带链接的分支指令) • 软件中断指令
2.1.3 ARM指令系统版本(2) 二、版本2(v2) 仍是26位寻址空间,在v1的基础上增加的内容有: • 乘法和乘法加指令 • 支持协处理器 • 快速中断模式中的分组寄存器 • 交换式加载/存储指令。 三、版本3(v3) 将寻址范围扩展到32位,但兼容26位寻址。在v2的基础上增加的内容有: • 设置了专用的当前程序状态寄存器CPSR、增加了程序状态保存寄存器 • 增加了中止异常和未定义指令异常两种处理器模式 • 增加了访问CPSR、SPSR的指令MRS和MSR • 修改了异常返回指令的功能
2.1.3 ARM指令系统版本(3) 四、版本4(v4) 32位寻址方式,但不再兼容26位寻址,在v3的基础上增加的内容有: • 半字加载/存储指令 • 在T变量中转换到Thumb状态的指令 • 增加了在使用用户模式寄存器的特权处理器模式 五、版本5(v5) 对v4指令做了必要的修改和扩展,并且增加了指令,具体变化为: • 改进在T变量中ARM/Thumb状态之间的切换效率 • 对于T和非T变量使用相同的代码生成技术 • 增加了计数前导零指令 • 增加了软件断点指令 • 对乘法指令设置标志做了严格定义。 • 将流水线的级数从3级(如ARM7TDMI使用的)增加到5级; • 并改变存储器接口来使用分开的指令与数据存储器。
2.1.3 ARM指令系统版本(4) 六、版本6 (v6) 对v5指令做了必要的修改和扩展,并且增加了指令, 2001年发布,首先在ARM11处理器中使用(2002年春季发布),具体变化为: • ARM体系版本6的新架构在降低耗电量的同时,还强化了图形处理性能。 • 增加了多媒体处理功能:通过追加有效进行多媒体处理的SIMD功能,将语音及图像的处理功能提高到了原机型的4倍。 • V6版本还支持多微处理器内核。
2.1.4 ARM 体系结构的演变 一、Thumb指令集(T变种) • 支持Thumb指令的ARM体系版本,一般加字符T来表示(如V4T)。 • 目前Thumb指令集有以下两个版本:Thumb 指令集版本1,此版本作为ARM体系版本4的T变种;Thumb指令集版本2,此版本作为ARM体系版本5的T变种。 与版本1相比,Thumb指令集的版本2具有以下特点: • 通过增加新的指令和对已有指令的修改,来提高ARM指令和Thumb指令混合使用时的效率。 • 增加了软件断点(BKPT)指令和更严格地定义了Thumb乘法指令对条件码标志位的影响。
2.1.4 ARM 体系结构的演变(2) 二、长乘指令(M变种) M变种增加了两条这样的长乘指令: • 其中一条指令完成32位整数乘以32位整数,生成64位整数的长乘操作; • 另一条指令完成32位整数乘以32位整数,然后在加上一个32位整数,生成64位整数的长乘加操作。这种长乘的应用场合M变种很适合。
2.1.4 ARM 体系结构的演变(3) 三、增强型DSP指令(E变种) • E变种的ARM体系增加了一些增强处理器对典型DSP算法处理能力的附加指令 : • 几条新的完成16位数据乘法和乘加操作的指令; • 实现饱和的带符号数的加减法操作的指令。 • Cache预取指令PLD; • E变种首先在ARM体系版本5T中使用,用字符E表示。 • 在早期的一些E变种中,未包含双字读取指令LDRD,双字写入指令STRD,协处理器的寄存器传输指令MCRR/MRRC以及Cache预取指令PLD。这种E变种记作ExP,其中x表示缺少,P代表上述的几种指令
2.1.4 ARM 体系结构的演变(4) 四、Java加速器Jazelle(J变种) • ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物。 • Jazelle技术使得Java代码的运行速度比普通的Java虚拟机提高了8倍,这是因为Jazelle技术提供了Java加速功能,大幅的提高了机器的运行性能,而功耗反而降低了80%。 • Jazelle技术使得在一个单独的处理器上同时运行Java应用程序、已经建立好的操作系统和中间件以及其他的应用程序成为可能。 • Jazelle技术的诞生使得一些必须用到协处理器和双处理器的场合可以用单处理器代替,这样,既保证了机器的性能,又降低了功耗和成本。 • ARM体系版本4TEJ是最早包含了J变种。用字符J表示J变种
2.1.4 ARM 体系结构的演变(5) 五、ARM媒体功能扩展(SIMD变种) • ARM的SIMD媒体功能扩展为这些应用系统提供了解决方案。它为包括音频/视频处理在内的应用系统提供了优化功能。其主要特点如下: • 使处理器的音频/视频处理的性能提高了2~4倍。 • 可同时进行两个16位操作数或者4个8位操作数的运算。 • 用户可以自定义饱和运算的模式。 • 可进行两个16位操作数的乘加/乘减运算及32位乘以32位的小数乘加运算。 • 同时8位/16位选择操作。
2.1.4 ARM系列处理器简介 ARM有以下系列处理器: ARM7系列 ARM9系列 ARM9E系列 ARM10系列 ARM11系列 SecurCore系列 Inter的StrongARM和Xscale系列 其中,ARM7、ARM9、ARM9E、ARM10和ARM11为5个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。
2.1.4 ARM系列处理器简介(2) 一、ARM7系列 • ARM7采用冯·诺依曼(Von-Neumann)结构,数据存储器和程序存储器使用同一存储空间,用相同的指令访问 。此结构也被大多数计算机所采用。 • ARM7为三级流水线结构(取指,译码,执行),平均功耗为0.6mW/MHz,时钟速度为66MHz,每条指令平均执行1.9个时钟周期。 • ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、 ARM720T、ARM7EJ。 • ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义为(对其它系列也适用): T: 支持16为压缩指令集Thumb,称为T变种 D: 支持片上Debug,称为D变种 M:内嵌硬件乘法器 Multiplier,称为M变种 I: 嵌入式ICE,支持片上断点和调试,称为I变种
2.1.4 ARM系列处理器简介(3) 表2-1 ARM7系列产品
2.1.4 ARM系列处理器简介(4) 二、ARM9系列 • ARM7采用的Neumann结构,取指令和取操作数都是通过一条总线分时进行,这样,在高速运算时,不但不能同时取指令和取操作数,而且还会造成传输通道上的瓶颈现象。 • ARM9采用哈佛(Harvard)结构,程序存储器与数据存储器分开,提供了较大的存储器带宽。同时,大多数DSP都采用此结构。 • ARM9为五级流水(取指,译码,执行,缓冲/数据,回写),平均功耗为0.7mW/MHz。时钟速度为120MHz-200MHz,每条指令平均执行1.5个时钟周期。 • ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,主要应用在手持产品、视频电话、PDA、数字消费产品、机顶盒、家用网关等方面。
2.1.4 ARM系列处理器简介(5) 表2-2 ARM9系列产品
2.1.4 ARM系列处理器简介(6) 三、ARM9E系列 • ARM9E系列微处理器包括如下4种类型的核:ARM926EJ-S、ARM946E-S和ARM966E-S,见表2-3。 • ARM9E系列是一种包含有微控制器、DSP、Java功能的综合处理器,强化了数字信号处理能力,适用于需要DSP和微控制器结合使用的情况,并且把Thumb技术和DSP都扩展到了ARM指令中,并且具有EmbededICE-RT逻辑,更好地适应了实时系统开发的需要。同时ARM9E使用了Jazelle增强技术,该技术支持一种新的Java操作状态,在硬件中执行Java字节码。
2.1.4 ARM系列处理器简介(7) 表2-3 ARM9E系列产品
2.1.4 ARM系列处理器简介(8) 四、ARM10系列 • ARM10系列微处理器包括:ARM1020E和ARM1022E等型号,见表2-4。 • ARM10系列采用了新的体系结构,其核心为使用了向量浮点单元,有强大的浮点运算能力,并且增加了Cache容量和总线宽度,并且具有低功耗的特点。 ARM10系列微处理器主要应用于下一代无线设备、视频消费品等。 表2-4 ARM10系列产品
2.1.4 ARM系列处理器简介(9) 五、ARMStrong/Xscale系列 • StrongARM是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Intrl公司的设计技术,以及ARM体系结构的电源效率,其体系结构在软件上兼容ARMv4,同时又具有Intel技术优点。 StrongARM是Intrl公司为手持消费类电子和移动计算与通信设备生产的嵌入式处理器。采用StrongARM架构的处理器有:SA-1、SA-110、SA-1100、SA1110和IXP1200。 • Xscale是基于ARMv5体系结构的解决方案,是一款性能全、性价比高、功耗低的处理器,支持16位的Thumb和DSP指令集,主要应用于数字移动电话、个人数字助理和网络产品等。 Xscale架构的处理器有:PXA250、PXA255和PXA270等。
2.1.4 ARM系列处理器简介(10) 六、ARM微处理器应用 1、工业控制领域:作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。 2、无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术, ARM以其高性能和低成本,在该领域的地位日益巩固。 3、网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。ADSL(非对称数字用户线路) 4、消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。 5、成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。
ARM 926EJ-S Family number 7: ARM7 9: ARM9 10: ARM10 11: ARM11 Synthesizable Extensions E: DSP extension J: Jazelle extension T: Thumb support … Memory system 2: Cache, MMU, Process ID 4: Cache, MPU 6: Write buffer, no cache Memory size 0: Cache size (4-128KB) 2: Reduced cache size 6: TCM ARM系列产品命名规则
2.2 ARM9体系结构 2.2.1 ARM9体系结构框图 对于ARM9系列,其基本内核是ARM9TDMI,下页图给出了ARM9TDMI结构框图。主要有7部分构成。 比较最常用的是ARM920T内核,后页图给出了ARM920T结构框图。 ARM920T结构主要部分有:ARM9TDMI内核CPU、MMU、Cache、协处理器接口、运行跟踪信息接口(ETM)、JTAG调试接口、总线接口等7部分构成。
指令接口 JTAG 接口 数据接口 ARM9TDMI CPU 指令地址接口 跟踪接口 数据地址接口 ARM9TDMI结构框图 一、ARM9TDMI体系结构框图
ARM9TDMI核性能 0.25微米的ARM9TDMI核在执行32位ARM代码时的特性综述于下表3。核的版图示于下页图。
2.2.2 ARM流水线结构 一、流水线技术概述 • 流水线方式:是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。 由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。 • 处理器按照一系列步骤来执行每一条指令。典型的步骤为: • 1)从存储器读取指令(fetch) • 2)译码以鉴别它是哪一类指令(dec) • 3)从寄存器组取得所需的操作数(reg) • 4)将操作数进行组合以得到结果或存储器地址(exe) • 5)如果需要,则访问存储器存取数据(mem) • 6)将结果回写到寄存器组(res)
2.2.2 ARM流水线结构(2) 二、ARM7的三级流水线 • 1取指:从程序存储器中取指令,放入指令流水线。(占用存储器访问操作) • 2译码:指令译码。(占用译码逻辑) • 3执行:执行指令/读写REG。(占用ALU及数据路径)
2.2.2 ARM流水线结构(3) 下图为3个单周期指令在流水线上的情况。一条指令有3个时钟周期的执行时间,但吞吐量是每个周期1条指令。 1 2 3 t ARM单周期指令的3级流水线操作 PC值如何计算? • PC 指向处于读取级的指令地址,而不是处于执行级的指令地址 • PC=当前执行指令地址+8
ADD SUB MOV AND ORR EOR CMP RSB 2.2.2 ARM流水线结构(4) 优秀的流水线结构 Cycle 1 2 3 4 5 6 • 本例中 6 个时钟周期内一共完成了 ? 条指令 • 全部对寄存器进行操作 (单周期执行) • 指令周期数 (CPI) = 1 Operation Decode Execute Fetch Fetch Decode Execute Execute Fetch Decode Execute Fetch Decode Decode Execute Fetch Fetch Decode Execute Decode Fetch Fetch
2.2.2 ARM流水线结构(5) 1 ADD 多周期指令的3级流水线操作 2 STB 3 ADD 4 ADD 5 ADD 1 2 3 4 5 6 7 8 指令流水线出现了中断
2.2.2 ARM流水线结构(6) • T4周期: ①指令2地址计算产生下一周期数据路 • 径需要的控制信号。 • ②指令3译码产生下一周期数据路径需要 • 的控制信号。 • 二者都产生下一周期数据路径控制信号,数据路径控制冲突,因此断流。 • T5周期:①指令2 STB访问数据存储器 • ②指令5取指访问程序存储器 • 二者都访问存储器,造成访问存储器冲突,在此断流。 • ①指令3译码 • ②指令4的译码则不得不推迟一个周期。
2.2.2 ARM流水线结构(7) 三、ARM9TDMI的五级流水线 ARM7TDMI与ARM9TDMI流水线比较
2.2.2 ARM流水线结构(8) 四、ARM7和ARM9流水线比较 • 5级流水线的ARM9内核是哈佛架构,拥有独立的指令和数据总线;指令和数据的读取可以在同一周期进行; • 3级流水的ARM7内核是指令和数据总线复用的冯.诺依曼架构,指令和数据的读取不能在同一周期进行; • 5级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中, 每一级流水的操作简洁,提升了处理器的主频。
2.2.2 ARM流水线结构(9) • 随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了处理器的性能; • 负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流水线; • 流水线级数的增加也意味着在某些段之间会产生数据相关。
2.2.2ARM流水线结构(10) ARM处理器性能比较
2.2.3 ARM总线结构 ARM微控制器使用的是AMBA总线体系结构 AMBA(Advanced Microcontroller Bus Architecture)是ARM公司公布的总线标准,先进的AMBA规范定义了三种总线: • AHB总线(Advanced High-performance Bus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序 参考同一个时钟沿。 • ASB总线(Advanced System Bus):用于连接高性能系统模块,它支持突发数据传输模式。 • APB总线(Advance Peripheral Bus):是一个简单接口支持低性能的外围接口。
2.3 ARM存储结构 本节主要内容 1、数据类型 2、存储器组织 3、存储器层次
2.3 ARM存储结构 2.3.1 ARM存储数据类型 • ARM处理器支持以下6种数据类型: • 8位有符号和无符号字节(Byte)。 • 16位有符号和无符号半字(Halfword) • 它们必须以两字节的边界对齐(半字对齐)。 • 32位有符号和无符号字(word) • 它们必须以4字节的边界对齐(字对齐)。 • 字对齐:字单元地址的低两位 A1A0=0b00。即地址末位为0x0, 0x4, 0x8, 0xc。 • 半字对齐:半字单元地址的最低位 A0=0b0 (地址末位为0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe)。
2.3 ARM存储结构(2) • 对于指令,ARM指令系统分为32位ARM指令集和16位的Thumb指令集,在存储时分别以32位和16位的两种不同长度存储。 • 对于数据,ARM支持对32位字数据,16位半字数据,8位字节数据操作。因此数据存储器可以存储32位,16位,8位三种不同长度数据。 • 在ARM内部,所有操作都面向32位的操作数,只有数据传送指令支持较短的字节和半字的数据类型。当从存储器读入一个字节或半字时,根据其数据类型将其扩展到32位。