C H A P T E R 9 ARM处理器核
ARM处理器核是系统中的引擎 读指令并执行 在一个芯片中,可能集成了: 典型的ARM处理器核: CPU核: 处理器核和CPU核 ARM核与其它部件如RAM、 ROM、片内外设组合在一起 才能构成现实的芯片。 处理器核和CPU核 ARM处理器核是系统中的引擎 读指令并执行 在一个芯片中,可能集成了: 和处理器核密切相关的元件,如:Cache和存储器管理元件 与系统部件无关,如:信号处理硬件 可能还包含多个ARM处理器核 典型的ARM处理器核: ARM7TDMI、ARM9TDMI、ARM10TDMI等 CPU核: 微处理器核+Cache+存储器管理硬件 ARM710T/720T/740T,StrongARM、ARM920T/940T、ARM1020E等
Development of the ARM Architecture Improved ARM/Thumb Interworking CLZ 5TE 4 Jazelle Java bytecode execution 5TEJ Halfword and signed halfword / byte support System mode 1 SA-110 Saturated maths DSP multiply-accumulate instructions ARM9EJ-S ARM926EJ-S 2 SA-1110 ARM7EJ-S ARM1026EJ-S 3 6 ARM1020E SIMD Instructions Multi-processing V6 Memory architecture (VMSA) Unaligned data support Thumb instruction set 4T XScale Early ARM architectures ARM7TDMI ARM9TDMI ARM9E-S ARM720T ARM940T ARM966E-S ARM1136EJ-S
满足不同应用的ARM处理器 H Cortex-A9 MPCore Cortex-A8 ARM11 MPCore ARM1176J(F)-S ARM926EJ-S 2000+ DMIPS Multi-Proc 2000+ DMIPS Uni-proc 600+ DMIPS Multi-Proc 600+ DMIPS Uni-Proc 250+DMIPS Uni-Proc Applications Processor Market L H ARM1156T2(F)-S ARM946E-S ARM968E-S ARM7TDMI Cortex R4(F) 600+ DMIPS Uni-Proc 150+ DMIPS Uni-Proc 100+ DMIPS Uni-Proc Real-Time Embedded Market L H Microcontroller & FPGA Market ARM7TDMI Cortex-M3 Cortex-M1 L
ARM11 芯片已经面世 ARM11 300-700+ MHz SIMD 指令扩展支持更丰富的多媒体应用 40家授权芯片公司,一些已开始量产 FOMA N902i First ARM11 based phone OMAP2420 i.MX31/i.MX31L
ARM Cortex A8 Application Processor 目前最快的嵌入式处理器 ARM Cortex A8 Application Processor 最快的处理器提供超过2000 DMIPS 的性能 运行于 1GHz 频率 (90nm or 65nm 制造工艺) 功耗小于 300mW
Cortex-M3 实现 $1 ARM芯片 Luminary Micro的Stellaris系列MCU产品售价仅1美元 ARM Cortex Architecture Thumb-2 ISA 3 Stage Pipeline 1.22 DMIPS/MHz – 30% over ARM7TDMI 33K gates – 30% smaller than ARM7TDMI ARM Cortex-M3 微控制器内核,专门针对MCU应用领域而设计,突出低成本、低功耗和高效率。 Luminary Micro的Stellaris系列MCU产品售价仅1美元
ARM’s Ecosystem= Market Growth and Innovation 2007 1997 ARM and Partners Enabling Ecosystem Delivering Low Power Today Diverse Range of Products Rapidly Growing Markets Intel Platforms have only driven size and speed How much has your laptop changed over the years ? 2007年03月13日 ED-China(电子系统设计): 每天,全球各地所使用的移动电话中,有超过90%的是采用基于ARM的内核。据统计,仅在2006年,就有超过16亿颗的ARM处理器进入移动通信市场,加上其他消费电子设备的ARM处理器,2006年基于ARM的嵌入式处理器批运总数在20亿颗以上! 1 Strategy Analytics 2007 2 www.c-i-a.com
领先嵌入式处理器技术发展讨论 多处理器技术 单处理器技术的性能提升终有一天会遭遇瓶颈 对嵌入式系统而言,尤其要考虑付出的代价 把任务进行并行分解是理想的选择 ARM MPcore可以集成1-4个ARM11处理器 关键是要提供给软件开发者一个友好的编程界面 64位处理器? 哪儿是系统性能瓶颈? 是需要64位地址还是64位数据? 嵌入式系统比PC有更好的条件来解决系统性能和带宽问题 PC系统在主板上,扩展系统带宽需要扩大每个组件的接口带宽 SoC只需扩展片内总线,非常容易实现 AMBA支持8-1024位总线宽度 许多SoC设计以及ARM处理器内部已经使用64位数据总线
9.1 ARM7TDMI 简介 ARM7TDMI基于ARM体系结构V4版本,是目前低端的ARM核。具有广泛的应用,其最显著的应用为数字移动电话。
9.1 ARM7TDMI 简介 ARM7TDMI支持32位寻址范围,并弥补了ARM6不能在低于5V电源电压下工作的不足。ARM7TDMI的后缀意义为: ARM7 T D M I - S ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致; 支持Embeded-ICE观察硬件; 支持64位乘法; 支持片上调试; 支持高密度16位的Thumb指令集;
ARM7TDMI 简介 ARM7TDMI处理器是ARM通用32位微处理器家族的成员之一。它具有优异的性能,但功耗却很低,使用门的数量也很少。它属于精简指令集计算机(RISC),比复杂指令集计算机(CISC)要简单得多。这样的简化实现了: 高的指令吞吐量; 出色的实时中断响应; 小的、高性价比的处理器宏单元。
ARM7TDMI内核 地址 自增器 地址寄存器 寄存器 Bank 解码站 乘法器 读数据 寄存器 桶 移位器 写数据 寄存器 ABE A[31:0] 地址 自增器 地址寄存器 Incrementer P C BIGEND MCLK 寄存器 Bank nWAIT PC Update 指令 解码 nRW A L U B u s MAS[1:0] 解码站 A B u s B u s ISYNC 指令 解压缩 nIRQ 乘法器 nFIQ nRESET 及 ABORT nTRANS 读数据 寄存器 nMREQ 桶 移位器 SEQ 控制 逻辑 LOCK nM[4:0] 写数据 寄存器 nOPC nCPI 32 位 ALU CPA CPB DBE D[31:0]
ARM7TDMI 三级流水线 ARM7TDMI处理器使用流水线来增加处理器指令流的速度。这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。 ARM7TDMI的流水线分3级,分别为: 取指译码执行
为增加处理器指令流的速度,ARM7 系列使用3级流水线。 ARM7TDMI指令流水线 为增加处理器指令流的速度,ARM7 系列使用3级流水线。 允许多个操作同时处理,而非顺序执行。 PC指向正被取指的指令,而非正在执行的指令。 ARM Thumb Fetch PC PC 从存储器中读取指令 Decode PC - 4 PC-2 解码指令中用到的寄存器 寄存器读(从寄存器Bank) 移位及ALU操作 寄存器写(到寄存器Bank ) Execute PC - 8 PC - 4
ARM7TDMI指令流水线 周期 1 2 3 4 5 6 最佳流水线 操作 1 2 3 4 5 6 操作 Fetch Decode。 Fetch Execute Decode Fetch ADD SUB MOV AND ORR EOR CMP RSB Execute Decode Fetch Execute Decode Fetch Fetch Execute Decode Execute Decode Fetch Execute Decode Fetch 最佳流水线 该例中用6个时钟周期执行了6条指令 所有的操作都在寄存器中(单周期执行) 指令周期数 (CPI) = 1
LDR 流水线举例 该例中,用6周期执行了4条指令 指令周期数 (CPI) = 1.5 周期 1 2 3 4 5 6 操作 Fetch 1 2 3 4 5 6 操作 Fetch Decode Execute ADD SUB LDR MOV AND ORR Fetch Decode Execute Fetch Decode Execute Data Writeback Fetch Decode Execute Fetch Decode Fetch 该例中,用6周期执行了4条指令 指令周期数 (CPI) = 1.5
分支流水线举例 流水线被阻断 注意:内核运行在ARM状态 周期 1 2 3 4 5 地址 操作 0x8000 BL 0x8004 X 1 2 3 4 5 地址 操作 0x8000 BL 0x8004 X 0x8008 XX 0x8FEC ADD 0x8FF0 SUB 0x8FF4 MOV Fetch Decode Execute Linkret Adjust Fetch Decode Fetch Fetch Decode Execute Fetch Decode Execute Fetch Decode Fetch 流水线被阻断 注意:内核运行在ARM状态
ARM7TDMI 存储器访问 ARM7TDMI处理器使用了冯·诺依曼(Von Neumann)结构,指令和数据共用一条32位总线。只有装载、存储和交换指令可以对存储器中的数据进行访问。 数据可以是字节( 8位)、半字( 16位)或者字(32位)。
ARM7TDMI组织 控制信号 ARM7TDMI处理器内部由处理器核、用于边界扫描的TAP控制器和在线仿真器ICE组成。双向数据总线D[31:0]被分割成单向输入和输出总线,以便于与外部存储器兼容。 地址总线 BUS Splitter ARM7TDMI 内核 数据总线 Embedded ICE 逻辑 TAP 控制器 JTAG 接口
ARM7TDMI硬件接口 ARM7TDMI功能信号图
mclk:处理器所有的状态由存储器时钟mclk控制 \wait:访问低速设备时,使用\wait跳过时钟周期 ARM7TDMI时钟控制 mclk:处理器所有的状态由存储器时钟mclk控制 \wait:访问低速设备时,使用\wait跳过时钟周期 eclk:eclk时钟输出反映了处理器使用的时钟 注意: 由于内部时钟实际上正好是mclk和\wait的逻辑“与”,因此,只有当mclk为低时\wait才能变化 eclk在调试模式下反映的是调试时钟的行为
存储器接口 存储周期的基本类型: 空闲周期 非顺序周期 顺序周期 协处理器寄存器传送周期
存储器接口 ARM的总线接口信号分成4类(以ARM7TDMI为例说明): 时钟和时钟控制信号:MCLK、ECLK、nRESET、nWAIT。 地址类信号:A[31..0]、nRW、MAS[1..0]、nOPC、nTRANS、LOCK、TBIT。 存储器请求信号:nMREQ、SEQ。 数据时序信号:D[31..0]、DIN[31..0]、DOUT[31..0]、ABORT、BL[3..0]。
存储器接口 ARM的总线接口可以实现4种不同类型的总线周期。
ARM7TDMI核存储器和MMU接口时序
MMU接口 状态(State) 配置(Configuration) 中断(Interrupt) 初始化(Initialization) \trans (translation control), 0: user mode, 1: privileged mode \mode[4:0], bottom 5 bits of the CPSR (inverted) Abort, disallow access 状态(State) T bit, whether the processor is currently executing ARM or Thumb instructions 配置(Configuration) Bigend, big-endian or little-endian 中断(Interrupt) \fiq, fast interrupt request, higher priority \irq, normal interrupt request isync, allow the interrupt synchronizer to be passed 初始化(Initialization) \reset, starts the processor from a known state, executing from address 0000000016
总线控制 Debug支持 Debug接口 协处理器接口 电源 JTAG接口
ARM7TDMI 带Cache的ARM7TDMI ARM720T ARM710T 同ARM710T,但支持 WinCE JTAG 和非 AMBA 信号 CP15 控制 逻辑 ARM7TDMI 内核 地址 MMU 写 缓冲 AMBA 总线 接口 AMBA 接口 地址 数据 数据写 数据读 Cache ARM7xxT 带Cache的ARM7TDMI ARM720T 同ARM710T,但支持 WinCE ARM740T 8K 统一的 cache 内存管理单元 写缓冲 ARM710T 8K 统一的 cache 完整的内存管理单元(MMU),支持虚拟地址和存储器保护 写缓冲
ARM7TDMI characteristics
ARM实例Samsung S3C44B0X ARM体系结构的主要特征 大量的寄存器,都可用于多种用途; Load-Store体系结构 3地址指令(两个源操作数寄存器和结果寄存器独立设定) 每条指令都条件执行包含非常强大的多寄存器Load和Store指令 能在单时钟周期执行的单条指令内完成一项普通的移位操作和一项普通的ALU操作 能过协处理器指令集来扩展ARM指令集,包括在编程模式下增加了新的寄存器和数据类型 在Thumb体系结构中以高密度16位压缩形式表示指令集
Samsung S3C44B0X Samsung S3C44B0X微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案,它使用ARM7TDMI核,工作在66MHZ。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件: 8KB Cache、外部存储器控制器、LCD控制器、4个DMA通道、2通道UART、1个多主I2C总线控制器、1个IIS总线控制器,5通道PWM定时器及一个内部定时器、71个通用I/O口、8个外部中断源、实时时钟、8通道10位ADC等。
S3C44B0X 体系结构: 用于手持设备和通用嵌入式应用的完整系统; 16/32位RISC结构和带ARM7DMI CPU核的功能强大的指令集; Thumb协处理器在保证性能的前提下使代码密度最大; 片上ICE中断调试JTAG调试方式 328位硬件乘法器
系统管理: 支持大/小端模式 地址空间:每个Bank32MB(一共256MB); 每个Bank支持8/16/32位数据总线编程; 固定的Bank起始地址和7个可编程的Bank; 1个起始地址和尺寸可编程的Bank; 8个内存Bank::6个用于ROM、SRAM;2个用于ROM/SRAM/DRAM; 所有内存Bank的可编程寻址周期; 在能量低的情况下支持DRAM/SDRAM自动刷新模式; 支持DRAM的非对称/对称寻址; 缓冲内存和内部SRAM 4路带8K字节的联合缓存; 不使用缓存的0/4/8K内容SRAM 伪LRU(最近最少使用)的替代算法; 通过在主内存和缓冲区内容之间保持一致的方式写内存; 当缓冲区出错时,请求数据填充技术;
时钟可以通过软件选择性地反馈回每个功能块 能量模式: 时钟和能量管理 低能耗; 时钟可以通过软件选择性地反馈回每个功能块 能量模式: 正常模式:正常运行模式; 低能模式:不带PLL的底频时钟; 休眠模式:只使CPU的时钟停止; 停止模式:所有时钟都停止; 用EINT或RTC警告中断从停止模式唤醒
中断控制器 30个中断源(看门狗定时器,6个定时器,6个UART,8个外部中断,4个DMA,2个RTC,1个ADC,1个I2C,1个SIO; 矢量IRQ中断模式减少中断响应周期; 外部中断源的水平/边缘模式; 可编程的水平/边缘极性; 对紧急中断请求支持FIQ(快速中断请求);
带PWM的定时器 脉冲宽度调制 5个16位带PWM的定时器/1个16位基于DMA或基于中断的定时器; 可编程的工作循环,频率和极性 死区产生 支持外部时钟源
全时钟特点:毫秒、秒、分、小时、天、星期、月、年 实时时钟 全时钟特点:毫秒、秒、分、小时、天、星期、月、年 32.768KHz运行 CPU唤醒的警告中断 时钟记号中断
通用输入输出端口 8个外部中断端口 71个多路输入输出口; UART 2个带DMA和中断的UART; 支持5位,6位,7位,8位串行数据传送/接收; 当传送/接收时支持双向握手 可编程波特率; 支持IrDA1.0(115.2KBPS); 测试的循环返回模式; 每个通道有2个内部32位FIFO
DMA与A/D DMA控制器 A/D转换 2路通用无需要CPU干涉的DMA控制器; 2路桥式DMA控制器; 采用6种DMA请求的桥式DMA支持IO到内存,内存到IO,IO到IO:软件,4个内部功能块(UART,SIO,实时器,IIS),外部管脚; DMA之间可编程优先级次序; 突发传送模式提高到FPDRAM、EDODRAM和SDRAM的传送率; A/D转换 10位多路ADC; 最大500KSPS/10位;
LCD控制器 支持彩色/单色/灰度LCD; 支持单扫描和双扫描显示; 支持虚拟显示功能 l系统内存作为显示内存 专用DMA用于从系统内存中提取图象数据; 可编程屏幕尺寸; 灰度:16级 256色
看门狗定时器与I2C总线接口 16位看门狗定时器; 定时中断请求和系统复位; 1个带中断的多主机I2C总线; 串行,8位,双向数据传送器能够以100KB/S的标准模式和400KB/S的快速模式传送
支持MSB数据格式; SIO(同步串行I/O) 1个带DMA和中断的SIO 可编程波特率; 支持8位串行数据传送/接收操作 IIS总线接口 1个I带DMA的音频IS总线接口; 串行,每路8/16位数据传送器; 支持MSB数据格式; SIO(同步串行I/O) 1个带DMA和中断的SIO 可编程波特率; 支持8位串行数据传送/接收操作
操作电压范围 内核:2.5V;I/O:3.0V到3.6V; 运行频率 最高到75MHz; 封装 160LQFP/160FBGA;
S3C44B0X微处理器体系结构框图
S3C44B0X微处理器管脚定义图
基于ARM的嵌入式硬件平台体系结构
S3C44B0X试验箱上存储体的分配情况 存储体 Bank0 Bank1 Bank2 Bank3 Bank4 Bank5 Bank6 与存储体的接口 Bank0 BIOS 512K×2Flash Bank1 16M Flash 硬盘 Bank2 USB接口 Bank3 LCD显示模块 Bank4 保留 Bank5 Bank6 系统内存SDRAM Bank7
复位后的S3C44B0X的存储器映射表
S3C44B0X实验箱及实验指导书
ARM9TDMI Harvard架构 5 级流水线 实现了以下改进: 增加了可用的存储器宽度 可以实现对指令和数据存储器的同时访问 指令存储器接口 数据存储器接口 可以实现对指令和数据存储器的同时访问 5 级流水线 实现了以下改进: 改进 CPI 到 ~1.5 提高了最大时钟频率
ARM or Thumb Inst Decode ARM9TDMI ARM7TDMI ARM decode Instruction Fetch Thumb®ARM decompress Reg Read Reg Write Shift ALU Reg Select FETCH DECODE EXECUTE ARM9TDMI ARM or Thumb Inst Decode Instruction Fetch Memory Access Reg Write Shift + ALU Reg Decode Reg Read FETCH DECODE EXECUTE MEMORY WRITE 流水线
ARM9TDMI 带Cache的ARM9TDMI ARM9TDMI ARM9xxT ARM920T D Cache 外部 MMU 存储器 2x 16K caches MMU 支持虚拟地址和内存保护 写缓冲 D Cache GLUE 外部 存储器 ARM9TDMI MMU ARM940T 2x 4K caches MPU 写缓冲 I Cache ARM9xxT 带Cache的ARM9TDMI
ARM9E-S 系列概述 ARM9E 基于 ARM9TDMI 内核,有以下扩展和增强 ARM946E-S ARM966E-S 单周期 32x16 乘法器 EmbeddedICE 逻辑 RT 改进的 ARM/Thumb 交互操作 新的32x16和 16x16 乘法指令 新的计数到零指令 新的饱和算术指令 ARM946E-S ARM9E-S 内核 指令和数据cache, 大小可选择 指令和数据RAM,大小可选择 保护单元 AHB 总线接口 ARM966E-S 与 ARM946E-S相似, 但无 cache
Jazelle状态允许直接执行Java 8位码 ARM926EJ-S ARM9E-S 内核 可配置的cache和 TCM 内存管理单元 双重 32位 AHB 总线接口 (多层)
ARM10E 系列概述 ARM1020E ARM1022E v5TE架构 CPI 1.3 6 级流水线 静态分支预测 支持新的 VFPv1 结构 ARM1020E 每周期64 位的 LDM / STM操作 EmbeddedICE逻辑 - RT-II 32kB 指令cache和32kB数据cache 支持“Hit under miss” 非阻塞的执行单元 同ARM1020E,除了cache大小为16kB ARM1022E 对SUDL(single user design license )有效
ARM9 vs ARM10 流水线的对比
Intel® XScale™ 概述 V5TE 兼容架构 7-8级流水线带统计分支预测 32k的数据和指令 Cache, 外加2k的数据Minicache 8口写缓冲,4口填充和追加缓冲 完整的32位协处理器接口 调试和性能监控逻辑(通过CP14 ) 乘-加模块(作为CP0 ) 可配置的内核时钟速度100-733MHz ,来自 33-66MHz 输入时钟 异步输入总线时钟可到100 MHz (最大总线内核时钟的1/3 )