1.94k likes | 2.3k Views
第3章 ARM 体系结构. 主要内容. 1. ARM 体系结构概述. 2. 编程模型. ARM 基本寻址方式. 3. ARM 指令集. 4. 5. ARM9 与 ARM7 的比较. 6. ARM9TDMI 内核. 7. ARM920T 核. 3.1.1 ARM 体系结构的特点. ARM 即 Advanced RISC Machines 的缩写。 ARM 公司1990年成立,是设计公司。 ARM 是知识产权( IP) 供应商 ,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。 ARM 处理器的3大特点是:
E N D
主要内容 1 ARM体系结构概述 2 编程模型 ARM基本寻址方式 3 ARM指令集 4 5 ARM9与ARM7的比较 6 ARM9TDMI内核 7 ARM920T核
3.1.1 ARM体系结构的特点 • ARM即Advanced RISC Machines的缩写。ARM公司1990年成立,是设计公司。ARM是知识产权(IP)供应商,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。 • ARM处理器的3大特点是: • 耗电少、成本低、功能强; • 16位/32位双指令集; • 全球众多合作伙伴保证供应。
大的、统一的寄存器文件; • 装载/保存结构,数据处理 操作只针对寄存器的内容,而不直接对存储器进行操作; • 简单的寻址模式; • 统一和固定长度的指令域,简化了指令的译码,便于指令流水线设计。 3.1.1 ARM体系结构的特点 ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典RISC的特点:
3.1.1 ARM体系结构的特点 ARM体系结构的特点: • RISC型处理器结构 • ARM/Thumb指令集 • 多处理器状态模式 • 嵌入式在线仿真调试 • 灵活和方便的接口 • ARM体系结构具有协处理器接口 • ARM处理器核还具有片上总线AMBA(AHB/ASB/APB) • 低电压低功耗的设计
3.1.1 ARM体系结构的特点 ARM目前的产品系列: • ARM7 • ARM9 • ARM9E • ARM10 • SecurCore 通用处理器系列 专门为安全设备设计的处理器系列
3.1.2 ARM处理器结构 1 ARM的体系结构 2 ARM的流水线结构 ARM存储器结构 3 ARM I/O结构 4 5 ARM协处理器接口 6 ARM AMBA接口 7 ARM JTAG 调试接口
1.ARM的体系机构 由32位ALU、31个32位通用寄存器及6位状态寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器组成。
ALU ALU的逻辑结构 由两个操作数锁存器、加法器、逻辑功能、结果及零检测逻辑构成。
ALU ALU的数据通路时序 • 每一时钟周期由双相时钟组成。ALU的最小数据通路周期由以下组成: • 寄存器读时间; • 移位器延迟; • ALU延迟; • 寄存器写建立时间; • 双相时钟间非重叠时间。
桶形移位寄存器 为了减少移位的延迟时间,ARM采用了32×32位的桶形移位寄存器。这样,可以使左移/右移n位、环移n位和算术右移n位等都可以一次完成。
高速乘法器 ARM为了提高运算速度,采用两位乘法的方法。两位乘法根据乘数的2位来实现“加-移位”运算。 乘数An-1An: 00--原部分积S右移2位; 01--原部分积S加被乘数后右移2位; 10--原部分积S加2倍被乘数后,右移2位; 11--原部分积S加3倍被乘数后,右移2位。 • 2倍被乘数可通过将被乘数左乘1位来实现; • 3倍可看作4-1(11=100-1),故先减1倍被乘数,再加4倍被乘数来实现。 • 4倍被乘数的操作实际上是在该2位乘数11的高1位乘数加“1”,且此“1”可暂存在Cout进位触发器中。
高速乘法器 ARM的高速乘法器采用32×8位的结构,内部结构如下:
浮点部件 浮点部件是作为选件为ARM体系结构选用,FPA10浮点加速器以协处理器方式与ARM相连,并通过协处理器指令的解释来执行。
控制器 ARM的控制器采用硬接线的可编程逻辑阵列PLA。输入端14根,输出40根,分散控制Load/Store多路、乘法器、协处理器以及地址、寄存器、ALU和移位器的控制。
寄存器 • ARM内含37个寄存器,其中: • 31个通用32位寄存器 • 6个状态寄存器
3.1.2 ARM处理器结构 1 ARM的体系结构 2 ARM的流水线结构 ARM存储器结构 3 ARM I/O结构 4 5 ARM协处理器接口 6 ARM AMBA接口 7 ARM JTAG 调试接口
指令执行的阶段 计算机中的1条指令的执行可以分若干个阶段: ① 取指,从存储器中取出指令(fetch); ② 译码,指令译码(dec): ③ 取操作数,假定操作数从寄存器组中取(reg); ④ 执行运算(ALU); ⑤ 存储器访问,操作数与存储器有关(mem); ⑥ 结果写回寄存器(res)。
指令执行的阶段 流水线的停顿 相邻指令执行的数据相关性会产生指令执行的停顿。
指令执行的阶段 碰到分支类指令,则会使后面紧接该条指令的几条指令的执行都无效。 遇到分支指令
ARM体系结构的3级流水线 ARM7体系结构采用了3级流水线,分为取指,译码和执行。下图是单周期3级流水线的操作示意图。
ARM体系结构的3级流水线 由于取指的存储器访问和执行的数据通路占用都是不可同时共享的资源,因此对多周期指令来说,会产生流水线阻塞。如图3-12所示下图的影印框周期都是与存储器访问有关的。因此在流水线设计中不允许重叠 。
ARM体系结构的5级流水线 5级流水线把存储器的取指与数据存取分开,增加了I-Cache和D-Cache以提高存储器存取的效率,增加了数据写回的专门通路和寄存器,以减少数据通路冲突。 这样,5级流水线分为:取指、指令译码、执行、数据缓存和写回。
3.1.2 ARM处理器结构 1 ARM的体系结构 2 ARM的流水线结构 ARM存储器结构 3 ARM I/O结构 4 5 ARM协处理器接口 6 ARM AMBA接口 7 ARM JTAG 调试接口
ARM存储器结构 ARM架构的处理器,有的带有指令Cache和数据Cache,但片内不带有片内RAM和片内ROM,系统所需的RAM和ROM须通过总线外接,如下图。
3.1.2 ARM处理器结构 1 ARM的体系结构 2 ARM的流水线结构 ARM存储器结构 3 ARM I/O结构 4 5 ARM协处理器接口 6 ARM AMBA接口 7 ARM JTAG 调试接口
ARMI/O结构 ARM架构中的处理器核和处理器内核一般都没有I/O的部件和模块,构成ARM架构的处理器中的I/O可通过AMBA总线来扩充。 (1)存储器映像I/O ARM采用存储器映像I/O的方式,即把I/O端口地址作为特殊的存储器地址。不过I/O的输入/输出与真正的存储器读/写仍然有所不同:存储器的单元重复读多次的值是一致的;而I/O设备的连续2次输入,其输入值可能会有所不同。 (2)直接存储器存取DMA 在I/O的数据流量比较大,中断处理比较频繁的场合,会明显影响系统的性能。因此,许多系统就采用了直接存储器存取DMA,这样,I/O的数据块传送至存储器的缓冲器区域就不需要处理器介入。而中断也仅仅出现在出现出错时或缓冲器满时。 (3)中断IRQ和快速中断FIQ 一般的ARM没有DMA的功能,为了提高I/O处理的能力,对于一些要求I/O处理速率比较高的事件,系统安排快速中断FIQ(Fast Interrupt),而对其余的I/O源仍安排一般中断IRQ。
3.1.2 ARM处理器结构 1 ARM的体系结构 2 ARM的流水线结构 ARM存储器结构 3 ARM I/O结构 4 5 ARM协处理器接口 6 ARM AMBA接口 7 ARM JTAG 调试接口
协处理器号 功 能 15 系统控制 14 调试控制器 13~8 保留 7~4 用户 3~0 保留 • ARM协处理器接口 ARM为了便于片上系统SOC的设计,处理器内核尽可能精简,要增加系统的功能,可以通过协处理器来实现。在逻辑上,ARM可以扩展16个协处理器,每个协处理器可有16个寄存器。 例如,MMU和保护单元的系统控制都采用CP15协处理器; JTAG调试中的协处理器为CP14,即调试通信通道DCC(Debug Communication Channel) 。
3.1.2 ARM处理器结构 1 ARM的体系结构 2 ARM的流水线结构 ARM存储器结构 3 ARM I/O结构 4 5 ARM协处理器接口 6 ARM AMBA接口 7 ARM JTAG 调试接口
ARM AMBA接口 ARM处理器也可以通过先进微控制器总线架构AMBA(Advanced Microcontroller Bus Architecture)来扩展不同体系架构的宏单元及I/O部件。AMBA事实上已成为片上总线OCB(On Chip Bus)标准。 • AMBA包括以下三类总线: • 先进高性能总线AHB • 先进系统总线ASB • 先进外围总线APB
3.1.2 ARM处理器结构 1 ARM的体系结构 2 ARM的流水线结构 ARM存储器结构 3 ARM I/O结构 4 5 ARM协处理器接口 6 ARM AMBA接口 7 ARM JTAG 调试接口
JTAG调试接口的结构 由测试访问端口TAP(Test Access Port)控制器、旁路(Bypass)寄存器、指令寄存器、数据寄存器以及与JTAG接口兼容的ARM架构处理器组成。
JTAG的控制寄存器 • ①测试访问端口TAP控制器 • 对嵌入在ARM处理器核内部的测试功能电路进行访问控制,是一个同步状态机。通过测试模式选择TMS和时钟信号TCK来控制其状态机。 • ②指令寄存器 • 是串行移位寄存器,通过它可以串行输入执行各种操作的指令。 • ③数据寄存器组 • 是一组串行移位寄存器。操作指令被串行装入由当前指令所选择的数据寄存器,随着操作的进行,测试结果被串行移出。其中: • 器件ID寄存器:读出在芯片内固化的ID号。 • 旁路寄存器:1位移位寄存器,用1个时钟的延迟把TDI连至TDO,使测试者在同一电路板测试循环内访问其他器件。 • 边界扫描寄存器(扫描链):截取ARM处理器核与芯片引脚之间所有信号,组成专用的寄存器位。
JTAG测试信号 • TRST:测试复位输入信号,测试接口初始化。 • TCK:测试时钟,在TCK时钟的同步作用下,通过TDI和TDO引脚串行移入/移出数据或指令,同时也为测试访问端口TAP控制器的状态机提供时钟。 • TMS:测试模式选择信号,控制测试接口状态机的操作。 • TDI,测试数据输入线,其串行输入数据送至边界扫描寄存器或指令寄存器(由TAP控制器的当前状态及已保存在指令寄存器中的指令来控制)。 • TDO:测试数据输出线,把从边界扫描链采样的数据传播至串行测试电路中的下一个芯片。
TAP状态机 测试访问端口TAP控制器是一个16状态的有限状态机,为JTAG提供控制逻辑。状态转移图如右图:
JTAG接口控制指令 • 控制指令用于控制JTAG接口各种操作,控制指令包括公用(Public)指令和私有(Private)指令。最基本的公用指令有: • BYPASS:旁路片上系统逻辑指令,用于未被测试的芯片,即把TDI与TPO旁路(1个时钟延迟)。 • EXTEST:片外电路测试指令,用于测试电路板上芯片之间的互连。 • IDCODE:读芯片ID码指令,用于识别电路板上的芯片。此时,ID寄存器在TDI与TDO引脚之间,在capture DR状态中,芯片的ID复制至该寄存器,然后在shift DR状态中移出。 • INTEST:片内测试指令,边界扫描寄存器位于TDI与TDO引脚之间,处理器核逻辑输入和输出状态被该寄存器捕获和控制。
3.1.3 ARM处理器内核 ARM体系结构的处理器内核有:ARM7TDMI、ARM8、ARM9TDMI、ARM10TDMI及ARM11TDMI等。
ARM7TDMI • ARM7TDMI名字原义如下: • ARM7 ARM6 32位整数核的3V兼容的版本; • T 16位压缩指令集Thumb; • D 在片调试(Debug)支持,允许处理器响应调 试请求暂停; • M 增强型乘法器(Multiplier),与以前处理器 相比性能更高,产生全64位结果; • I 嵌入式ICE硬件提供片上断点和调试点支持。
ARM7TDMI 体系结构图
ARM7TDMI 引脚图
ARM7TDMI 主要特点 • 采用了3级流水线结构,指令执行分为取指、译码和执行等3个阶段; • 运算器能实现32位整数运算; • 采用了高效的乘法器,用32×8位乘法器实现32×32位乘法(结果为64位)。 • 采用v4T版指令,支持16位Thumb指令集; • 嵌入式ICE(Embedded-ICE)模块为ARM7TDMI提供了片内调试功能。同时通过JTAG接口可以很方便地用PC主机对ARM7TDMI进行开发和调试。 • 还提供了存储器接口、MMU接口、协处理器接口和调试接口,以及时钟与总线等控制信号。
ARM7TDMI 主要性能指标 • 工艺:0.35μm(新近采用0.25μm); • 金属布线:3层; • 电压:3.3V(新近采用1.2V、0.9V); • 管子数:74209只; • 内核芯片面积:2.1mm2; • 时钟:0~66MHz; • MIPS:66; • 功耗:87mW; • MIPS/W:690(采用0.25μm工艺,0.9V电压,可达1 200MIPS/W)。
ARM9TDMI 主要性能指标 • 工艺:025µm(0.18µm); • 金属布线:3层; • 电压:2.5V(1.2V); • 管子数:11 100只; • 核芯片面积:2.1mm2; • 时钟:0~200MHz; • MIPS:220; • 功耗:150mW; • MIPS/W:1 500。
ARM9TDMI 流水线结构 ARM9TDMI处理器内核采用了5级流水线。
ARM9TDMI 主要特点 • 采用指令和数据分离访问的方式,即采用了指令Cache和数据Cache。 • 用专门硬件来直接完成ARM与Thumb指令的译码。 • ARM9TDMI也有协处理器接口,允许在芯片增加浮点、数字信号处理或其他专用的协处理器。ARM9TDMI也提供相应的软核。ARM9E-S是具有DSP功能的能执行v5TE版ARM指令的ARM9TDMI软核,当然其芯片面积要增加30%。 • 在ARM9流水线设计中,增加专用流水段用于存储器访问和将结果写回到寄存器组。而且,寄存器读也移到译码段。这些改变通过减少在单一时钟周期内操作最大的逻辑数目,允许更高的时钟频率。
ARM10TDMI ARM10TDMI在系统结构上主要采用增加时钟速率和减少每条指令平均时钟周期数CPI(Clock Per Instruction)两大措施,以同样的工艺,同样的芯片面积,在性能上2倍于ARM9TDMI。 ARM10TDMI采用提高时钟速率、6级流水线、分支预测逻辑、64位存储器和无阻塞的存/取逻辑等措施,使ARM10TDMI的性能得到很大提高,是目前高档ARM体系结构的处理器内核。 流水线结构
3.1.4 ARM处理器核 • 在最基本的ARM处理器内核基础上,可增加Cache、存储器管理单元MMU、协处理器CP15、AMBA接口以及EMT宏单元等,构成ARM处理器核。 • 以ARM7TDMI处理器内核为基础的有: • ARM720T处理器核 • ARM740T处理器核 • 以ARM9TDMI处理器内核为基础的有: • ARM920T处理器核 • ARM940T处理器核
ARM720T ARM720T处理器核是在ARM7TDMI处理器内核基础上,增加8KB的数据与指令Cache,支持段式和页式存储的MMU、写缓冲器及AMBA接口构成。
ARM740T ARM740T处理器核与ARM720T处理器核相比,结构基本相同,但ARM740处理器核没有存储器管理单元MMU,不支持虚拟存储器寻址;而是用存储器保护单元来提供基本保护和Cache的控制。这为低价格低功耗的嵌入式应用提供了合适的处理器核。由于在嵌入式应用中运行固定软件,也不需要进行地址变换,所以可以省去地址变换后备缓冲器TLB。