第三章_ARM9体系结构
ADD
SUB
CMP
ADD
SUB
ADD
ARM的三级流水线(例如ARM7TDMI)
ARM流水线的级数
• • • • ARM9 流水线增加到5级,增加了存储器访问段和回写段,使ARM9处理能力平均可达到1.1 Dhrystone,指令吞吐量增加了约13%。 随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频 率,同时改进了性能; 负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流水线; 流水线级数的增加也意味着在某些段之间会产生数据相关;
– 提高了最大时钟频率
ARM9TDMI数据通道 (1)
ARM9TDMI 数据通道 (2)
结果 DINFWD
MU 逻辑
B 寄存器 Bank Imm BDATA 移位器
A
乘法器
ALU
PSR
ADATA
锁存
锁存
ARM9TDMI 处理器结构示意图
第三节 ARM920T的体系结构简介
ARM9系列微处理器包含ARM920T、ARM922T和ARM940T几种类型,可以在 高性能和低功耗特性方面提供最佳的性能。采用5级整数流水线,指令执行 效率更高。提供1.1MIPS/MHz的哈佛结构。支持数据Cache和指令Cache,具 有更高的指令和数据处理能力。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口。全性能的MMU,支持Windows CE、Linux、 Palm OS等多种主流嵌入式操作系统。MPU支持实时操作系统。 ARM920T处理器核在ARM9TDMI处理器内核基础上,增加了分离式的指令 Cache和数据Cache,并带有相应的存储器管理单元I-MMU和D-MMU、写缓冲器 及AMBA接口等,如图3.1.2所示。
乘数 An-1An 00 01 进位Cin 0 0 操作 S->2, Cout=“0” S+B->2, Cout=“0”
10
11
0
0
S+2×B->2, Cout=“0”
S-B->2, Cout=“1”
00
01 10 11
1
1 1 1
S+B->2, Cout=“0”
S+2×B->2, Cout=“0” S-B->2, Cout=“1” S->2, Cout=“1”
这里S为低二位乘以被乘数的部分积、B为被乘数、Cin为低二位乘以被乘数时产生 的进位。Cout为当前二位乘以被乘数时产生的进位,在下二位乘以被乘数时,传递 给Cin。 被乘数(B) 10110110 乘数 10110101
右移3
in[0] in[1] in[2] in[3]
右移2
右移1
不移位
in[3] 左移1 左移2
图3.1.2
ARM920T内核结构
第四节 ARM9体系结构的重要特性
• • • • • • • • • 流水线技术 总线技术 Cache技术 协处理器 异常与中断 工作模式 寄存器组 ARM体系结构的命名规则 JTAG调试接口
3.4.1 ARM的流水线技术
取指
译码
执行
周期1 时 间 周期2
周期3
预取 译码 执行 (Fetch) (Decode) (Execute) 预取 译码 执行 访存 写入 (Fetch) (Decode) (Execute) (Memory) (Write) 预取 (Fetch) 预取 (Fetch) 发送 译码 执行 访存 写入 (Issue) (Decode) (Execute) (Memory) (Write) 预取 (Fetch) 发送 译码 (Issue) (Decode) 转换 执行 访存 写入 (Snny) (Execute) (Memory) (Write)
ARM7
ARM9
ARM10 ARM11
ARM9TDMI
Instruction Fetch
ARM or Thumb Inst Decode Reg Reg Decode Read
Shift + ALU
Memory Access
Reg Write
FETCH
DECODE
EXECUTE
MEMORY
WRITE
A操作数锁存
反相ALeabharlann B操作数锁存反相B
XOR门
XOR门
功能
逻辑功能运算器
加法器
C 输入 C 进位位 V 溢出
逻辑/算术
结果多路器 N 符号位 零检测
Z 为零标志
结果
ALU 逻辑框图
高速乘法器
下面我们以两位乘法器为例。所谓的两位乘法器是指把乘数每两位分成一段,根据该段 值,通过硬件实现被乘数与该段值的相乘。规则如下:
• 5 级流水线
• 实现了以下改进: – 改进 CPI(Cycles Per Instruction)
ARM9系列与ARM7TDMI的比较. ARM9TDMI上100条指令平均需176周期,CPI为1.760 。 ARM7TDMI上100条指令平均需224.1个周期,CPI为2.241。 因此在ARM9TDMI上花费的时间平均是ARM7TDMI上的79%,或者说在 同频率下,ARM9TDMI的性能是ARM7TDMI的127%
协处理器
• 协处理器的应答信号中: ● nCPI为ARM处理器至CPn协处理器信号,该信号低电压有效代表“协处理 器指令”,表示ARM处理器内核标识了1条协处理器指令,希望协处理器去执 行它。 ● CPA为协处理器至ARM处理器内核信号,表示协处理器不存在,目前协处 理器无能力执行指令。 ● CPB为协处理器至ARM处理器内核信号,表示协处理器忙,还不能够开始 执行指令。 协处理器也采用流水线结构,为了保证与ARM处理器内核中的流水线同步,在 每一个协处理器内需有1个流水线跟随器(Pipeline Follower),用来跟踪ARM 处理器内核流水线中的指令。由于ARM的Thumb指令集无协处理器指令,协 处理器还必须监视TBIT信号的状态,以确保不把Thumb指令误解为ARM指 令。 协处理器也采用Load/Store结构,用指令来执行寄存器的内部操作,从存储 器取数据至寄存器或把寄存器中的数保存至存储器中,以及实现与ARM处理 器内核中寄存器之间的数据传送。而这些指令都由协处理器指令来实现。
3.4.2 AMBA总线
• 高级微控制器总线协议(AMBA)是1996年提出的,被ARM处理器做为片上总线 结构; ARM处理器内核可以通过先进的微控制器总线架构AMBA(Advanced Microcontroller Bus Architecture)来扩展不同体系架构的宏单元及I/O部 件。AMBA已成为事实上的片上总线OCB(On Chip Bus)标准。 • 最初的AMBA总线包含ARM系统总线(ASB)和ARM外设总线(APB);AMBA有AHB (Advanced High-performance Bus,先进高性能总线)、ASB(Advanced System Bus,先进系统总线)和APB(Advanced Peripheral Bus,先进外围 总线)等三类总线。 • ARM高性能总线(AHB)是新的标准,可以支持64位和128位宽度的ARM总线; • ASB是目前ARM常用的系统总线,用来连接高性能系统模块,支持突发(Burst) 方式数据传送。 • AHB不但支持突发方式的数据传送,还支持分离式总线事务处理,以进一步提 高总线的利用效率。特别在高性能的ARM架构系统中,AHB有逐步取代ASB的趋 势,例如在ARM1020E处理器核中。 • APB为外围宏单元提供了简单的接口,也可以把APB看作ASB的余部。
ARM9嵌入式系统设计基础
—基于S3C2410A与μC/OS-II
第三章 ARM9体系结构
徐卓镛
1 ARM9体系结构简介
2 ARM9TDMI
3
ARM920T的体系结构简介
4 ARM9TDMI体系结构的重要特性
第一节 ARM9体系结构简介
• 一个典型的ARM体系结构方框图如图3.1.1所示, 包含有32位ALU、31个32位通用寄存器及6位状 态寄存器、32×8位乘法器、32×32位桶形移位 寄存器、指令译码及控制逻辑、指令流水线和数 据/地址寄存器等。
图2.7.1 一个基于AMBA的典型系统
3.4.3 Cache和紧耦合器
• 冯诺伊曼结构数据和指令共用一个缓存;哈佛体系结构 有独立的指令和数据缓存; • Cache改善了系统的整体性能,但也使程序的执行时间 变得不可预测,对实时系统而言,代码执行的确定性— —装载和存储指令或数据的时间必须是可预测的; • ARM采用紧耦合器TCM实现可预测,TCM紧靠内核,保证 取指或数据操作的时钟周期数。TCM位于存储器的地址 映射中,可作为快速存储器访问; • 结合Cache和TCM,ARM既能改善性能,又能够获得可预 测的实时响应;
AMBA总线
• AMBA通过测试接口控制器TIC(Test Interface Controller)提供了模块测 试的途径,允许外部测试者作为ASB总线的主设备来分别测试AMBA上的各个模 块。 • AMBA中的宏单元也可以通过JTAG方式进行测试。虽然AMBA的测试方式通用性 稍差些,但其通过并行口的测试比JTAG的测试代价也要低些。
3.4.4 协处理器
为了便于片上系统SoC的设计,ARM可以通过协处理器(CP)来支持 一个通用指令集的扩充,通过增加协处理器来增加系统的功能。
• 协处理器可以附属于ARM处理器,一个协处理器通过扩展指令或提供配臵寄 存器来扩展内核处理功能; • 协处理器可以通过一组专门的、提供load-store类型接口的ARM指令来访问。 如协处理器15(CP15),用于控制Cache、TCM和存储器管理;在逻辑上, ARM可以扩展16个(CP15~CP0)协处理器,其中:CP15作为系统控制, CP14作为调试控制器,CP7~4作为用户控制器,CP13~8和CP3~0保留。每 个协处理器可有16个寄存器。例如MMU和保护单元的系统控制都采用CP15协 处理器;JTAG调试中的协处理器为CP14,即调试通信通道DCC(Debug Communication Channel)。 • 协处理器也能通过提供一组专门的新指令来扩展指令集,如,处理向量浮点 运算的指令集; • 这些指令在ARM流水线的译码阶段被处理,如果在译码阶段发现是一条协处 理器指令,则把它送给相应的协处理器。如果该协处理器不存在,或不认识 该指令,则ARM认为发生未定义指令异常; • ARM处理器内核与协处理器接口有以下4类。 ① 时钟和时钟控制信号:MCLK、nWAIT、nRESET; ② 流水线跟随信号:nMREQ、SEQ、nTRANS、nOPC、TBIT; ③ 应答信号:nCPI、CPA、CPB; ④ 数据信号:D[31:0]、DIN[31:0]、DOUT[31:0]。