1.3k likes | 1.6k Views
第 2 讲 ARM 微处理器硬件结构. 内容提要. 计算机体系结构. ARM处理器结构 和技术特征. ARM 处理器模式及内部寄存器. ARM 存 储 系 统 机 制. 计算机体系结构. 计算机中,按内存的组成分两种典型的结构: 1.冯·诺依曼结构/普林斯顿结构. 冯 · 诺依曼体系结构. 结构特点:1、指令和数据存储在相同的内存空间,但存储地址不同。 2、处理器利用相同的总线处理内存中的指令和数据,指令和数据具有相同的数据宽度,指令与数据无法同时存取。. 存储器. 指令寄存器. 程序. 控制器. 指令 0. 指令 1. 指令 2. 指令 3.
E N D
内容提要 计算机体系结构 ARM处理器结构和技术特征 ARM处理器模式及内部寄存器 ARM存储 系 统 机 制
计算机体系结构 • 计算机中,按内存的组成分两种典型的结构: 1.冯·诺依曼结构/普林斯顿结构
冯·诺依曼体系结构 结构特点:1、指令和数据存储在相同的内存空间,但存储地址不同。 2、处理器利用相同的总线处理内存中的指令和数据,指令和数据具有相同的数据宽度,指令与数据无法同时存取。 存储器 指令寄存器 程序 控制器 指令0 指令1 指令2 指令3 指令4 数据通道 数据 输出 输入 中央处理器 数据0 数据1 数据2 ARM7嵌入式微处理器亦采用此结构
哈佛体系结构 程序存储器 地址 指令寄存器 结构特点: 1、指令存储和数据存储分开,指令和数据分别位于不同的存储空间。 2、指令与数据的存取采用不同总线,取指令和存取数据可同时进行,微处理器具有较高的执行效率。 指令0 控制器 指令1 指令 指令2 数据存储器 地址 数据通道 输出 输入 数据0 CPU 数据1 数据 数字信号处理器DSP通常采用哈佛结构 ,ARM9嵌入式微处理器亦采用此结构。 数据2
第2章 ARM微处理器硬件结构 1 计算机体系结构 2 ARM处理器结构和技术特征 3 ARM处理器模式及内部寄存器 4 ARM存储 系 统 机 制
ARM ARM公司简介ARM是Advanced RISCMachines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。 公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务
. . . ARM ARM公司简介 将技术授权给其它芯片厂商 形成各具特色的ARM芯片
Application Processor Embedded RT Controller Micro-controller Cortex A Cortex M Cortex R ARM1136J ARM1176JZ ARM1156T2 ARM1026E ARM1026E ARM920T/ARM922T ARM926EJ ARM966E ARM968E ARM946E ARM720T ARM7TDMI ARM7TDMI ARM Family ARM Architecture ARM Cortex ™ Family 1000 DMIPS ARM11™ Family 500 DMIPS ARM10™ Family 300 DMIPS ARM9™ Family 150DMIPS ARM7™ Family
微处理器 输入 输出 算术逻辑单元 控制单元 CU 寄存器组 存储器 ARM处理器内核 • 微处理器是整个系统的核心,通常由4部分组成:控制部件、算术逻辑部件、寄存器组和内部总线。
ARM体系结构版本 • 各ARM体系结构版本——V1 该版本的ARM体系结构,只有26位的寻址空间,没有商业化,其特点为: • 基本的数据处理指令(不包括乘法); • 字节、字和半字加载/存储指令; • 具有分支指令,包括在子程序调用中使用的分支和链接指令; • 在操作系统调用中使用的软件中断指令。
ARM体系结构版本 • 各ARM体系结构版本——V2 同样为26位寻址空间,现在已经废弃不再使用,它相对V1版本有以下改进: • 具有乘法和乘加指令; • 支持协处理器; • 快速中断模式中的两个以上的分组寄存器; • 具有原子性加载/存储指令SWP和SWPB。
ARM体系结构版本 • 各ARM体系结构版本——V3 寻址范围扩展到32位(目前已废弃),具有独立的程序: • 具有乘法和乘加指令; • 支持协处理器; • 快速中断模式中具有的两个以上的分组寄存器; • 具有原子性加载/存储指令SWP和SWPB。
ARM体系结构版本 • 各ARM体系结构版本——V4 不在为了与以前的版本兼容而支持26位体系结构,并明确了哪些指令会引起未定义指令异常发生,它相对V3版本作了以下的改进: • 半字加载/存储指令; • 字节和半字的加载和符号扩展指令; • 具有可以转换到Thumb状态的指令(BX); • 增加了用户模式寄存器的新的特权处理器模式。
ARM体系结构版本 • 各ARM体系结构版本——V5 在V4版本的基础上,对现在指令的定义进行了必要的修正,对V4版本的体系结构进行了扩展并并增加了指令,具体如下: • 改进了ARM/Thumb状态之间的切换效率; • E---增强型DSP指令集,包括全部算法操作和16位乘法操作; • J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能。
ARM体系结构版本 • 各ARM体系结构版本——V6 V6版架构是2001年发布的,首先在2002年春季发布的ARM11处理器中使用。此架构在V5版基础上增加了以下功能:改进了ARM/Thumb状态之间的切换效率; • THUMBTM:35%代码压缩; • DSP扩充:高性能定点DSP功能; • JazelleTM:Jova性能优化,可提高8倍; • Media扩充:音/视频性能优化,可提高4倍。
ARM体系结构版本 • 各ARM体系结构版本——V7 • ARMv7定义了3种不同的处理器配置(processor profiles): • Profile A是面向复杂、基于虚拟内存的OS和应用的 • Profile R是针对实时系统的; • Profile M是针对低成本应用的优化的微控制器的。 • 所有ARMv7 profiles实现Thumb-2技术,同时还包括了NEON™技术的扩展提高DSP和多媒体处理吞吐量400%,并提供浮点支持以满足下一代3D图形和游戏以及传统嵌入式控制应用的需要。
ARM处理器的分类 结构体系版本(Architecture) • ARM v4T • ARM v5TE • ARM v6 • ARM Cortex (v7) Processor Family • ARM7 • ARM9 • ARM10 • ARM11 • ARM Cortex
ARM各系列处理器 • ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是: ARM7 ARM9 ARM9E ARM10 ARM11 SecurCore Cortex Xscale
ARM7 • ARM7微处理器系列 特点: 冯诺伊曼体系结构; • ARMTDMI是目前应用最广的微处理器核; • ARM720T带有MMU和8KB的指令数据混合cache; • ARM7EJ-执行ARMv5TEJ指令,5级流水线,提供Java加速指令,没有存储器保护。
ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致; 支持Embeded-ICE观察硬件; 支持64位乘法; 支持片上调试; 支持高密度16位的Thumb指令集; ARM7 T D M I - S ARM7TDMI ARM7TDMI:整数处理核ARM7TDMI 处理器的可综合版本; ARM720T:带MMU的处理器核心,支持操作系统; ARM7EJ-S:带有DSP和Jazelle TM 技术,能够实现Java加速功能
ARM7TDMI JTAG 和非 AMBA 信号 控制 逻辑 CP15 ARM7TDMI 内核 地址 MMU AMBA 总线 接口 写 缓冲 AMBA接口 地址 数据 数据写 数据读 Cache ARM7xxT 带Cache的ARM7TDMI ARM720T 同ARM710T,但支持 WinCE ARM740T • 8K 统一的 cache • 内存管理单元 • 写缓冲 ARM710T • 8K 统一的 cache • 完整的内存管理单元(MMU),支持虚拟地址和存储器保护 • 写缓冲 返回
ARM9 • ARM9微处理器系列 特点: • 基于ARM9TDMI ,带16位的Thumb指令集,增强代码密度最多到35%; • 在0.13µm工艺下最高性能可达到300MIPS(Dhrystone 2.1测试标准); • 集成了数据和指令Chche; • 32位AMBA总线接口的MMU支持; • 可在0.18µm、 0.15µm和0.13µm工艺的硅芯片上实现。
ARM9TDMI ARM920T 2x 16K caches MMU 支持虚拟地址和内存保护 写缓冲 D Cache GLUE 外部 存储器 MMU ARM9TDMI ARM940T 2x 4K caches MPU 写缓冲 I Cache ARM9xxT 带Cache的ARM9TDMI 返回
ARM9E • ARM9E微处理器系列 特点: ARM9E是针对微控制器、DSP和Java的单处理器解决方案; • ARMJazelle技术提供 8倍的 Java 加速性能 (ARM926EJ-S) ; • 5-级整数流水线; • 在0.13µm工艺下最高性能可达到300MIPS(Dhrystone 2.1测试标准); • 可选择的向量浮点单元VFP9 协处理器指令优秀海浮点性能,对于3D图形加速和实时控制可达到215MFLOPS • 高性能的AHB总线,带MMU • 可在0.18µm, 0.15µm, 0.13µm工艺的硅芯片上实现。 返回
ARM10E • ARM10E微处理器系列 特点: 带分支预测的6级整数流水线; • 在0.13µm工艺下最高性能可达到430MIPS(Dhrystone 2.1测试标准); • 对于3D图形运算和实时控制采用VFP协处理器,浮点运算性能最高可达650MFLOPS; • 双64位AMBA总线接口和64位内部总路线接口; • 优化的缓存结构提高了处理器访问低速存储器的性能; • 可在0.18µm, 0.15µm, 0.13µm工艺的硅芯片上实现 返回
ARM11 • ARM11微处理器系列 特点: 增强的Thumb、Jazelle、DSP扩展支持; • 带片上和系统安全TrustZone 技术支持 ; • 在0.13µm工艺下最高可达到550MHz; • MPCore在0.13µm工艺下最高性能可达到740MIPS(Dhrystone 2.1测试标准); • 支持多媒体指令SIMD; • 采用三种电源模式:全速/待命/休眠 • 集成DMA的TCM • 低功耗、高性能 返回
ARM处理器工作状态 • ARM和Thumb状态 ARM指令系统(V4版以后具有Thumb指令集): • 32位ARM指令集:固定的32位指令,Load/Store RISC特征,3地址格式。 • 16位Thumb指令集:是ARM指令集的子集,按16位指令重新编码,固定的16位指令,Load/Store RISC特征,2地址格式。 注意:两个状态之间的切换并不影响处理器模式或寄存器内容。
处理器状态切换 使用BX指令将ARM7TDMI内核的操作状态在ARM状态和Thumb状态之间进行切换 ,程序如下所示。 跳转地址标号 ;从Arm状态切换到Thumb状态 LDR R0,=Lable+1 BX R0 ;从Thumb状态切换到ARM状态 LDR R0,=Lable BX R0 地址最低位为1,表示切换到Thumb状态 地址最低位为0,表示切换到ARM状态
流水线技术 • 流水线(Pipeline)技术:几个指令可以并行执行 • 提高了CPU的运行效率 • 内部信息流要求通畅流动 取指 译码 执行add 取指 译码 执行sub 取指 译码 执行cmp 时间
流水线技术 • 为增加处理器指令流的速度,ARM7 系列使用3级流水线 • 允许多个操作同时处理,比逐条指令执行要快。 • PC指向正被取指的指令,而非正在执行的指令 ARM Thumb PC PC 从存储器中读取指令 Fetch PC - 4 PC-2 Decode 解码指令 寄存器读(从寄存器Bank) 移位及ALU操作 寄存器写(到寄存器Bank ) PC - 8 PC - 4 Execute
在ARM7的3级流水线结构中流水线易出现阻塞或间断,这必然降低了流水线的效率,为了提高处理器的性能,必然要考虑如何优化处理器的组织结构。(1)缩短程序执行时间: 提高时钟频率fclk减少每条指令的平均时钟周期数CPI • 流水线技术 Tprog:程序执行时间 Ninst:指令条数 CPI:指令平均时钟周期数 FCLK:时钟频率
流水线技术 (2)解决流水线相关: • 结构相关 • 数据相关 • 控制相关 如果某些指令在流水线中重叠执行时,产生资源冲突,则称该流水线存在结构相关。 解决:资源重复(Cache 分离、ALU中单独的地址计算加法器) • 写后读”、“写后写” “读后写” • 解决:专用通路、流水线互锁技术 • 当流水线遇到分支指令和其他会改变PC值的指令时,取指取决于指令执行条件,可能需重新取指,致使流水线停顿。 • 解决:引入延时分支、尽早计算转移成功时的目标地址。
流水线技术 • 超标量(Superscalar)执行:超标量CPU采用多条流水线结构 指令 取指 取指 流水线2 流水线1 译码1 译码1 译码2 译码2 执行1 执行1 执行2 执行2 数据回写
流水线技术 注意: • 超标量处理器在执行的过程中必须动态地检查指令相关性,判断当前的指令组合是否能同时执行; • 如果代码中有分支指令,我们必须将分支被执行和分支不被执行这两种情况分开考虑,计算执行时间几乎是不可能的;
预取 (Fetch) 译码 (Decode) 执行 (Execute) ARM7 预取 (Fetch) 译码 (Decode) 执行 (Execute) 访存 (Memory) 写入 (Write) ARM9 预取 (Fetch) 发送 (Issue) 译码 (Decode) 执行 (Execute) 访存 (Memory) 写入 (Write) ARM10 预取 (Fetch) 预取 (Fetch) 发送 (Issue) 译码 (Decode) 转换 (Snny) 执行 (Execute) 访存 (Memory) 写入 (Write) ARM11 流水线技术 ARM各个系列的流水线:
第2章 ARM微处理器硬件结构 1 计算机体系结构 2 ARM处理器结构和技术特征 3 ARM处理器模式及内部寄存器 4 ARM存储 系 统 机 制
处理器模式 处理器7种模式
系统 (sys) 快中断 (fiq) 中断 (irq) 管理 (svc) 中止 (abt) 未定义 (und) 处理器模式 特权模式 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。
快中断 (fiq) 中断 (irq) 管理 (svc) 中止 (abt) 未定义 (und) 处理器模式 • 异常模式 这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。
用户 (usr) 系统 (sys) 处理器模式 • 用户和系统模式 这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
通用寄存器寄存器 • 简介 在ARM7TDMI处理器内部有37个用户可见的寄存器。 在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。
CPSR R0 R1 SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq R2 R3 R4 R5 R6 R7 R8 R8_fiq R9 R9_fiq R10 R10_fiq R11 R11_fiq R12 R12_fiq R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14 R14_svc R14_abt R14_und R14_irq R14_fiq R15 ARM状态各模式下的寄存器 • 所有的37个寄存器,分成两大类: • 31个通用32位寄存器; • 6个状态寄存器。
用户 系统 管理 中止 未定义 中断 快中断 R0 R0 R0 R0 R0 R0 R0 R1 R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R6 R7 R7 R7 R7 R7 R7 R7 R8 R8 R8 R8 R8 R8 R8_fiq R9 R9 R9 R9 R9 R9 R9_fiq R10 R10 R10 R10 R10 R10 R10_fiq R11 R11 R11 R11 R11 R11 R11_fiq R12 R12 R12 R12 R12 R12 R12_fiq R13 R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14 R14 R14_svc R14_abt R14_und R14_irq R14_fiq R15 R15 R15 R15 R15 R15 R15 CPSR CPSR CPSR CPSR CPSR CPSR CPSR 无 无 SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq ARM状态各模式下可以访问的寄存器
R0 R1 R2 R3 R4 R5 R6 R7 R8 R8_fiq R9 R9_fiq R10 R10_fiq R11 R11_fiq R12 R12_fiq R13 R13_svc R13_abt R13_und R13_irq R13_fiq 一般的通用寄存器 在汇编语言中寄存器R0~R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。
R0 R0 R1 R1 R2 R2 R3 R3 R4 R4 R5 R5 R6 R6 R7 R7 R8 R8_fiq R9 R9_fiq R10 R10_fiq R11 R11_fiq R12 R12_fiq R13 R13_svc R13_abt R13_und R13_irq R13_fiq 一般的通用寄存器 其中R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。
R8 R8_fiq R9 R9_fiq R10 R10_fiq R11 R11_fiq R12 R12_fiq R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14 R14_svc R14_abt R14_und R14_irq R14_fiq 一般的通用寄存器 寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器
R8 R8_fiq R9 R9_fiq R10 R10_fiq R11 R11_fiq R12 R12_fiq 一般的通用寄存器 寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。
R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14 R14_svc R14_abt R14_und R14_irq R14_fiq 一般的通用寄存器 寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。