第 2 章 arm/thumb 微处理器结构及指令系统
DESCRIPTION
第 2 章 ARM/THUMB 微处理器结构及指令系统. 本章简要介绍了 ARM/THUMB 微处理器的一些基本概念、应用领域及特点,以引导读者进入 ARM/THUMB 的殿堂。 本章主要内容有: ◆ ARM/THUMB 及相关技术简介 ◆ ARM/THUMB 微处理器系列 ◆ ARM/THUMB 微处理器的结构 ◆ ARM/THUMB 指令系统. 2.1 ARM 微处理器概述. ARM(Advanced RISC Machines) ,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 - PowerPoint PPT PresentationTRANSCRIPT
第第 22 章章 ARM/THUMBARM/THUMB 微处理器结微处理器结构及指令系统构及指令系统
本章简要介绍了 ARM/THUMB 微处理器的一些基本概念、应用领域及特点,以引导读者进入 ARM/THUMB 的殿堂。本章主要内容有: ◆ ARM/THUMB 及相关技术简介 ◆ ARM/THUMB 微处理器系列 ◆ ARM/THUMB 微处理器的结构 ◆ ARM/THUMB 指令系统
2.1 ARM2.1 ARM 微处理器概述 微处理器概述 ARM(Advanced RISC Machines) ,既可
以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。
1991 年 ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用 ARM 技术知识产权 (IP) 核的微处理器,即我们通常所说的 ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于 ARM 技术的微处理器应用约占据了 32 位 RISC 微处理器 75% 以上的市场份额,ARM 技术正在逐步渗入到我们生活的各个方面。
ARM 公司是专门从事基于 RISC 技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从 ARM 公司购买其设计的 ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的 ARM 微处理器芯片进入市场。
目前,全世界有几十家大的半导体公司都使用 ARM 公司的授权,因此既使得 ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,从而使产品更容易进入市场被消费者所接受,更具有竞争力。
2.1.1 ARM2.1.1 ARM 处理器系列 处理器系列 下面所列的是 ARM 微处理器的几个
系列,以及其他厂商基于 ARM 体系结构的处理器,这些处理器除了具有 ARM 体系结构的共同特点以外,每一个系列的 ARM 微处理器都有各自的特点和应用领域。
◆ ARM7 系列 ◆ ARM9 系列 ◆ ARM9E 系列 ◆ ARMl0E 系列 ◆ SecurCore 系列 ◆ Intel 的 Xscal
e
◆ Intel 的 StrongARM
1. ARM71. ARM7 微处理器系列微处理器系列ARM7 系列微处理器为低功耗的 32 位 RISC 处理器,
最适合用于对价位和功耗要求较高的消费类应用。 ARM7 微处理器系列具有如下特点 :
具有嵌入式 ICE ( In-Circuit Emulator ) — RT 逻辑,调试开发方便。
极低的功耗,适合对功耗要求较高的应用,如便携式产品。
能够提供 0.9MIPS/MHz 的三级流水线结构。代码密度高并兼容 16 位的 Thumb 指令集。对操作系统的支持广泛,包括Windows CE 、 Linux 、
Palm OS 等。指令系统与 ARM9 系列、 ARM9E 系列和 ARMl0E 系
列兼容,便于产品升级换代。主频最高可达 130MIPS ,高速的运算处理能力能胜任
绝大多数的复杂应用。
ARM 的 JTAG 调试接口1 。 ARM 的 JTAG 调试结构一个典型的 ARM基于JTAG调试结构如图所示。Debug 主控( Host )通常是运行有 ARM 公司或者第
三方提供的调式软件的 PC ,通常用的调试软件有 ARM Debug for Window(ADW),Linux 下的 arm-elf-gdb 等。 通过这些调试软件,可以发送高级的 ARM 指令,比如:设置簖点,读写存储器,单步跟踪,全速运行等。
协议转换器( Protrocol converter )负责转换 Debug主控端发出的高级 ARM 调式命令为底层的和 ARM 内核通信的 JTAG命令。 Debug 主控端和协议转换器之间的介质可以有很多种,比如:以太网, USB , RS-232 ,并口等。主控端和协议转换器之间的通信协议最典型的就是 ARM 公司提供的 Angle标准,也可以是第三方厂家自己定义的标准。
关于 Angle 的协议,请参考 ARM SDT 和 ADS , ajj 公司的 OpenICE32,EPI 公司的 Jeeni 等。
协议转换器( Protrocol converter )负责转换 Debug 主控端发出的高级 ARM 调式命令为底层的和 ARM 内核通信的 JTAG命令。
Debug 主控端和协议转换器之间的介质可以有很多种,比如:以太网, USB , RS-232 ,并口等。主控端和协议转换器之间的通信协议最典型的就是 ARM 公司提供的 Angle标准,也可以是第三方厂家自己定义的标准。
关于 Angle 的协议,请参考 ARM SDT 和ADS , ajj 公司的 OpenICE32,EPI 公司的 Jeeni 等。
Debug 目标板就是指系统的调试对象.以一个典型的 ARM7TDMI 处理器内核为例 , 说明 ARM7TDMI内核的JTAG调试结构.
ARMJTAG 的 JTAG宏单元( Macricell )主要包括 3条 JTAG扫描链( Scan Chain )和一个JTAG 的控制 TAP状态机。
2. JTAG与 AngelJTAG 调试:协议转换器解释上位机传送来的命令,通过 JT
AG 控制 ARM执行。Angle 调试:协议转换器可以直接做为目标板
Firmware 的一部分 . 直接执行从宿主机转送过来的调试指令;并回送相应数据。
Angel 可以节省专门的 JTAG仿真器,但是,它需要软件,或者是嵌入式操作系统的支持,做不到完全的实时仿真。而 JTAG仿真是通过硬件和控制 ARM 的 EmbeddedICE实现的可以做到实时仿真。
JTAG的基本知识1.什么是 JTAGJTAG是 Joint Test Action Group的缩写:是IEEE1149.1标准。2.使用 JTAG的优点JTAG的建立使得集成电路固定在 PCB上,只通过边扫描便可以通过测试。在 ARM7TDMI处理器中,可以通过 JTAG直接控制 ARM的内部总线, I/O口等信息,从而达到调试的目的。
3. JTAG 的典型信号TMS :测试模式选择( Test Mode Select ) ,通过 TMS 信号控制 JTAG状态机的状态。TCK : JTAG 的时钟信号。TDI :数据输入信号。TDO :数据输出信号。nTRST : JTAG复位信号,复位 JTAG 的状态机和内部的宏单元( Macrocell )。4. JTAG状态机5. JTAG链的组成
ARM7TDMI 内核的 JTAG扫描链结构
ARM7TDMI内核的JTAG扫描链结构. 主要包括3条扫描链: Scan chain0, Scan chain1 Scan chain2.
Scan Chain0: 有 113 个扫描单元 , 包括 ARM核的所有 I/O,地址数据总线和输入输出控制信号 . 这条链上的信号复杂 , 不易控制 ,但是 , 包含的信息丰富 , 可以通过这条链得到 ARM7TDMI 所有的内核信息。
Scan Chain1 :有 33 个扫描单元,包括 ARM 核的数据总线和一个断点控制信号。这是一条很有用地链,通过控制这条链,可以控制 ARM 核执行指定的指令,从而实现对 ARM 的内部寄存器,协处理器以及外部存储器的读写操作。Scan Chain2 :有 38 个扫描单元,通过控制 EmbeddedICE宏单元,实现对 ARM执行指令的断点,观察点控制。 EmbeddedICE 是集成在 ARM 内核的中的嵌入式 ICE防真器。其结构如图所示。通过对 EmbeddedICE 的控制,对 EmbeddedICE中寄存器的读取,可以获得 ARM 内核的状态,为程序设置断点以及读取Debug 通信通道。
ARM7 系列微处理器的主要应用领域为:工业控制、 Internet 设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。ARM7 系列微处理器包括如下几种类型的核:ARM7TDMI 、 ARM7TDMI-S 、 ARM720T 、 ARM7EJ 。其中, ARM7TDMI 是目前使用最广泛的 32 位嵌入式 RISC 处理器,属低端 ARM 处理器核。
TDMI 的基本含义为:T :支持 16 位压缩指令集 Thumb;D :支持片上 Debug;M :内嵌硬件乘法器 (Multiplier);I :嵌入式 ICE ,支持片上断点和调试点。本书所介绍的 Samsung 公司的 S3C44b0X 即属于该系列的处理器。
2. ARM92. ARM9 微处理器系列微处理器系列 ARM9 系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点:5 级整数流水线,指令执行效率更高。 提供 1.1MIPS/MHz 的哈佛结构。支持 32 位 ARM 指令集和 16 位 Thumb 指令集。支持 32 位的高速 AMBA总线接口。全性能的 MMU ,支持 Windows CE 、 Linux 、Palm OS 等多种主流嵌入式操作系统。
MPU 支持实时操作系统。支持数据 Cache 和指令 Cache ,具有更高的指令和数据处理能力。
ARM9 系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。
ARM9 系列微处理器包含 ARM920T 、 ARM922T 和 ARM940T 三种类型,以适用于不同的应用场合。
3. ARM9E3. ARM9E 微处理器系列 微处理器系列
ARM9E 系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、 DSP 、 Java 应用系统的解决方案,极大地减少了芯片的面积和系统的复杂程度。
ARM9E 系列微处理器提供了增强的 DSP 处理能力,很适合于那些需要同时使用 DSP 和微控制器的应用场合。
ARM9E 系列微处理器的主要特点如下 :支持 DSP 指令集 , 适合于需要高速数
字信号处理的场合。5 级整数流水线 , 指令执行效率更高 .支持 32 位 ARM 指令集和 16 位 Thu
mb 指令集 .支持 32 位的高速 AMBA(先进的微控
制器总线体系结构 )总线接口 .支持 VFP9浮点处理协处理器 .
全性能 MMU, 支持 Windows CE 、 Linux 、 Palm OS 等多种主流嵌入式操作系统。
MPU 支持实时操作系统。支持数据 Cache 和指令 Cache ,
具有更高的指令和数据处理能力。主频最高可达 300MIPS 。
ARM9 系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。
ARM9E 系列微处理器包含 ARM926EJ-S 、 ARM946E-S 和 ARM966E-S 3 种类型,以适用于不同的应用场合。
4. ARMl0E4. ARMl0E 微处理器系列 微处理器系列
ARMl0E 系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的 ARM9 器件相比较,在同样的时钟频率下,性能提高了近 50%, 同时 ,ARMl0E系列微处理器采用了两种先进的节能方式 , 使其功耗极低。
ARMl0EARMl0E 系列微处理器的系列微处理器的主要特点主要特点如下:如下:支持 DSP 指令集,适合于需要高速数
字信号处理的场合。6 级整数流水线,指令执行效率更高。支持 32 位 ARM 指令集和 16 位 Thum
b 指令集。支持 32 位的高速 AMBA总线接口。
支持 VFPl0浮点处理协处理器。全性能 MMU ,支持 Windows CE 、Linux 、 Palm OS 等多种主流嵌入式操作系统。支持数据 Cache 和指令 Cache ,具有更高的指 令和数据处理能力。主频最高可达 400MIPS 。内嵌并行读写操作部件。
ARMl0E 系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。
ARMl0E 系列微处理器包含 ARMl020E,ARMl022E 和 ARMl026EJ-S 3 种类型,以适用于不同的应用场合。
5. SecurCore5. SecurCore 微处理器系列微处理器系列SecurCore 系列微处理器专为安全需要而设计,提供了完善的 32 位 RISC 技术的安全解决方案,因此, SecurCore 系列微处理器除了具有 ARM 体系结构的低功耗、高性能的特点外,还具有独特的优势,即提供了对安全解决方案的支持。
SecurCore 系列微处理器除了具有 ARM 体系结构各种主要特点外,还在系统安全方面具有如下的特点:带有灵活的保护单元,以确保操作系统和应用数据的安全。采用软内核技术 ,防止外部对其进行扫描探测。可集成用户自己的安全特性和其他协处理器。
SecurCore 系列微处理器主要应用于一些对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。
SecurCore 系列微处理器包含: SecurCore SCl00 、 SecurCore SCll0 、SecurCore SC200 和 SecurCoreSC210 4 种类型,以适用于不同的应用场合。
6. StrongARM6. StrongARM 微处理器系列 微处理器系列 Intel StrongARM SA-1100 处理器是采
用 ARM 体系结构高度集成的 32 位 RISC 微处理器。
它融合了 Intel 公司的设计和处理技术,以及 ARM 体系结构的电源效率,采用在软件上兼容 ARMv4 体系结构、同时采用具有 Intel 技术优点的体系结构。
Intel StrongARM 处理器是便携式通信产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品。
7. Xscale7. Xscale 处理器 处理器 Xscale 处理器是基于 ARMv5TE 体系结
构的解决方案,是一款性能全、性价比高、功耗低的处理器。
它支持 16 位的 Thumb 指令和 DSP 指令集 , 已使用在数字移动电话、个人数字助理和网络产品等场合。
Xscale 处理器是 Intel 目前主要推广的一款 ARM 微处理器
2.1.2 RISC2.1.2 RISC 体系结构体系结构
ARM 处理器实现加载/存储 (load/store) 体系结构是典型的 RISC处理器。只有加载和存储指令可以访问存储器。数据处理指令只对寄存器的内容进行操作。
精简指令集计算机 RISC (Reduced Instruction Set Computer) 结构的产生是相对于传统的复杂指令集计算机 CISC (Complex Instruction Set Computer) 结构而言的。尽管在 1979 年美国加州大学伯克利分
校的帕特逊等人即提出了这个名字 ,但不同的看法使得目前尚未有对 RISC 的严格定义。比较普遍的认为是 ,RISC 应该是一种计算机设计的基本原则 , 它的出现标志着计算机体系结构发展上的一个重要里程碑。
传统的 CISC 计算机的指令集随着计算机的发展而引入了各种各样的复杂指令 , 使得指令集和为此要实现这些指令的计算机体系结构越来越复杂 , 已经不堪重负。
经过大量的研究和分析 , 发现在 CISC 的指令集中 , 各种指令的使用频度相差悬殊。
大概有 20% 的指令被反复使用 , 使用量约占整个程序的 80%; 而有 80%左右的指令则很少使用 , 其使用量约占整个程序的 20% 。这就是所谓的 20%—80%20%—80%定律定律。
RISC 特点如下:指令规整、对称、简单。指令小于 100
条,基本寻址方式有 2~3 种。单周期指令。指令字长度一致,单拍完成,便于流水
操作 ;ARM7 三级流水线:取指、译码、执行;ARM9 五级流水线;ARMl0 六级流水线。大量的寄存器。寄存器不少于 32 个。数
据处理器的指令只对寄存器的内容操作。只有加载/存储指令可以访问存储器。
ARM 指令体系结构使用了加载/存储体系结构、固定长32 位指令和 3地址指令格式的RISC 特性;舍弃了寄存器窗口、延迟转移和所有指令单周期的RISC 特性。
2.1.3 ARM2.1.3 ARM 和和 ThumbThumb 状态状态ARM 体系结构 v4T 及以上版本定义了称
为 ThumbThumb 指令集的指令集的 1616 位指令集位指令集。Thumb 指令集的功能功能是 32 位 ARM 指令
集的功能子集。 Thumb 在性能和代码大小之间提供了出色的折中。
正在执行 Thumb 指令集的处理器是工作在 Thumb状态下。
正在执行 ARM 指令集的处理器是工作在ARM状态下。
在 ARM状态下的处理器不能执行 Thumb指令 , 在 Thumb状态下的处理器也不能执行 ARM 指令。必须确保处理器不接受对当前状态来说为错误指令集的指令。每个指令集都包括切换处理器状态的指令。ARM 处理器总是在 ARM状态下开始执行代码。ARM 处理器支持 7 种处理器模式,取决于体系结构版本。
2.1.4. 2.1.4. 寄存器 寄存器 ARM 处理器有 37 个寄存器。寄存器被安排成部分重叠的组 (overla
p--ping bank) 。每种处理器模式都有不同的寄存器组。分组的寄存器在处理处理器异常和特权
操作时可得到快速的上下文切换。通常寄存器 R13 用做堆栈指针。在用户模式下, R14 用做链接寄存器
(LR) ,在子程序调用时用来保存返回地址。若返回地址保存在通信堆栈中,则它也可用做通用寄存器。
在异常处理模式下 ,R14 用来保存异常的返回地址。程序计数器用 R15(或 PC)访问。在 AR
M状态下每条指令加 1 个字 (4 个字节 ) ,或在 Thumb状态下每条指令加 2 个字节。分支指令把目的地址加载到程序计数器中。也可以使用数据操作指令直接加载程序计数器。
在执行时, R15 不包含当前执行指令的地址。典型情况下,当前正在执行指令的地址对于 ARM状态是 PC—8 ,或对于 Thumb状态是 PC—4 。
2.1.5 ARM2.1.5 ARM 指令集概述指令集概述所有 ARM 指令是 32 位长度。指令以字对准保存,这样 ARM
状态指令地址的最低 2 位总是零。一些指令使用最低有效位判定
代码是转向 Thumb 代码还是 ARM代码。具有字节 (8 位 ) 、半字 (16位 ) 、字 (32 位 )带符号或无符号数传送能力。
2.1.6 Thumb2.1.6 Thumb 指令集概述 指令集概述
所有 Thumb 指令是 16 位长度 , 在存储器中半字对准保存。因此 , 指令的最低有效位在Thumb状态下总是为零。
对于所有 Thumb数据处理指令有:操作寄存器中全部为 32 位值;数据访问和取指使用全 32 位地址。条件分支指令是依据 CPSR中 ALU 的状
态标志有条件执行的唯一的 Thumb 指令。
在 Thumb状态下,大多数指令只能访问R0~ R7 。寄存器 R8~R15 是被限制访问的寄存器。在 Thumb状态下它们用高寄存器表示。
Thumb状态只在分立操作时使用桶式移位,具有 LSI 、 LSR 、 ASR或 ROR 指令。
Thumb 体系结构的扩充使得在 8/16 位系统价格下可得到 32 位性能,即
•最小化系统存储器大小和价格下出色的代码密度;
•在低系统价格的 8或 16 位总线上由 16位存储器得到 32 位性能。
Thumb 是 32 位体系结构的扩充。Thumb 指令集是大多数常用的 32 位 ARM 指令
的子集,压缩成 16 位宽操作码。
在执行时, 16 位指令透明地实时解压缩成全 32 位 ARM 指令且没有性能损失。设计者可以使用 16位 Thumb 和 32 位 ARM 指令集。
在于程序级可根据应用需求,灵活地强调性能或代码大小。
Thumb比通常的 8 和 16 位 CISC/RISC 控制器有更好的代码密度,是传统 32 位体系结构代码大小的一部分。这意味着程序存储器可以更小,因而降低了成本。
3 AMBA 总线 先进的微控制器总线体系结构 AMBA规范定义
了三种总线: 1.AHB ( Advanced High-performance Bu
s ):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿;
2.ASB ( Advanced System Bus ):用于连接高性能系统模块,它支持突发数据传输模式;
3.APB ( Advance Peripheral Bus ):是一个简单接口支持低性能的外围接口。
一个典型的基于 AMBA 的微控制器同时集成 AHB (或 ASB )和APB 接口,如图所示。
ASB总线是旧版的系统的总线,而新版的 AHB总线增强了对性能、综合及时序验证的支持。
APB总线通常用作的局部的第二总线,作为 AHB或 ASB 上的单个从属模块。
根据 AMBA 的规范 ,连接 AHB/ASB 和APB 的 APB 桥的唯一功能是提供更简单的接口。任何由低性能外围设备产生的延迟会由
连接高性能 (AHB/ASP)总线的桥反映出来。桥本身仿佛是一个简单 APB总线的主设
备,它访问与之相连的从设备,并且通过高性能总线上控制信号的子集控制它们。
下面给出 AHB 、 ASB 和 APB 的主要特征 .
3.1 AHB3.1 AHB
AHB 是先进的系统总线。它主要的目的就是连接共性能、高吞吐率的设备,例如 CPU 、 DMA 和 DSP 。它的主要特性 :高性能新一代总线; 多控制器; 分段传输; 单周期总线控制权移交;没有三态实现方式;
32~ 128 位总线宽; 包含一种访问保护机制,用来区别特
权访问和无特权访问模式,或指令和数据提取等;
突发传输模式最大为 16节;访问空间限制在 32 位;提供为较慢设备使用而扼制数据流的机制;
支持仲裁、 REQ 、 GNT 和 LOCK;支持字节、半字和字传输。
AHB总线和 ASB总线有下列不同的特点:
AHB总线支持分开处理。有很长响应延迟的从机在准备传输的数据时让出总线从事其它传送操作;
使用单一时钟沿控制所有操作,有利于综合和设计验证(通过使用静态时序分析和其他相似工具);
使用中心多路器总线方案而不是三态驱动的双向总线;
支持更宽的 64 位或 128 位数据总线配置。
3.2 ASB3.2 ASB ASB 是通用系统总线,是一种微处理器和系统
外设的高性能互连,主要特征如下: 多控制器; 突发数据传输方式; 流水线传送; 32-128 位总线宽度; 包含一种访问保护机制,用来区别特权访问和
无特权访问模式,或指令和数据提取等; 双向数据总线; 提供为较慢设备使用而扼制数据流的机制; 仲裁支持 REQ 、 GNT 和 LOCK 。
3.3 APB3.3 APB
APB 是外围互联总线,重点是最小功耗和易于使用,主要特征如下:
低性能、低功率外围总线; 单控制器; 非常简单,只有 4 个控制信号(加上时
钟和复位); 32 位地址空间; 多达 32 位数据总线; 分开读和写数据总线。
High PerformanceCPU core
APB Bridge
UART
High PerformanceMemory
High PerformanceDMA core
Keyboard
Arbiter
TimerPIO
APB
AHB/ASP
AMBA总线逻辑结构返回