1 / 87

第 5 章 ARM 及 XScale 介绍

第 5 章 ARM 及 XScale 介绍. ARM 微处理器概述. ARM(Advanced RISC Machines) ,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

geri
Download Presentation

第 5 章 ARM 及 XScale 介绍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第5章 ARM及XScale介绍

  2. ARM微处理器概述

  3. ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM 技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。

  4. ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。 目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,从而使产品更容易进入市场被消费者所接受,更具有竞争力。

  5. ARM处理器系列 下面所列的是ARM微处理器的几个系列,以及其他厂商基于ARM体系结构的处理器,这些处理器除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。 ◆ ARM7系列 ◆ ARM9系列 ◆ ARM9E系列 ◆ ARMl0E系列 ◆ SecurCore系列 ◆ Intel的Xscale ◆ Intel的StrongARM

  6. Xscale处理器 • Xscale处理器是基于ARMv5TE体系结构的解决方案,是一款性能全、性价比高、功耗低的处理器。 • 它支持16位的Thumb指令和DSP指令集,已使用在数字移动电话、个人数字助理和网络产品等场合。 • Xscale处理器是Intel目前主要推广的一款ARM微处理器。

  7. RISC体系结构 ARM处理器实现加载/存储(load/store)体系结构是典型的RISC处理器。只有加载和存储指令可以访问存储器。数据处理指令只对寄存器的内容进行操作。

  8. 精简指令集计算机RISC(Reduced Instruction Set Computer)结构的产生是相对于传统的复杂指令集计算机CISC (Complex Instruction Set Computer)结构而言的。 传统的CISC计算机的指令集随着计算机的发展而引入了各种各样的复杂指令,使得指令集和为此要实现这些指令的计算机体系结构越来越复杂,已经不堪重负。

  9. 经过大量的研究和分析,发现在CISC的指令集中,各种指令的使用频度相差悬殊。经过大量的研究和分析,发现在CISC的指令集中,各种指令的使用频度相差悬殊。 大概有20%的指令被反复使用,使用量约占整个程序的80%;而有80%左右的指令则很少使用,其使用量约占整个程序的20%。这就是所谓的20%—80%定律。

  10. RISC特点如下: • 指令规整、对称、简单。指令小于100条,基本寻址方式有2~3种。 • 单周期指令。 • 指令字长度一致,单拍完成,便于流水操作; • ARM7 三级流水线:取指、译码、执行; • ARM9 五级流水线; • ARMl0 六级流水线。 • 大量的寄存器。寄存器不少于32个。数据处理器的指令只对寄存器的内容操作。只有加载/存储指令可以访问存储器。

  11. 几种常用的调试方法 • 指令集模拟器 一种利用PC机端的仿真开发软件模拟调试的方法。 • 驻留监控软件 驻留监控程序运行在目标板上,PC机端调试软件可通过并口、串口、网口与之交互,以完成程序执行、存储器及寄存器读写、断点设置等任务 • JTAG仿真器 通过ARM芯片的JTAG边界扫描口与ARM核进行通信,不占用目标板的资源,是目前使用最广泛的调试手段 • 在线仿真器 使用仿真头代替目标板上的CPU,可以完全仿真ARM芯片的行为。但结构较复杂,价格昂贵,通常用于ARM硬件开发中

  12. 什么是JTAG? • JTAG是Joint Test Action Group的缩写是IEEE1149.1标准 • JTAG的建立使得集成电路固定在PCB上,只通过边界扫描便可以被测试 • 在ARM7TDMI处理器中,可以通过JTAG直接控制ARM的内部总线,IO口等信息,从而达到调试的目的

  13. ARM的JTAG调试结构

  14. Debug主控端 运行ARM公司或第三方 提供的调试软件的PC机 协议转换器 负责转换Debug主控端发出的 高级ARM调试指令为 底层的和ARM内核通信的 处理器的开发系统 调试目标机 ARM的JTAG调试接口 1、ARM的JTAG调试结构 一个典型的ARM基于JTAG调试结构如图所示。

  15. Debug主控(Host)通常是运行有ARM公司或者第三方提供的调式软件的PC,通常用的调试软件有ARM Debug for Window(ADW),Linux下的arm-elf-gdb等。通过这些调试软件,可以发送高级的ARM指令,比如:设置断点,读写存储器,单步跟踪,全速运行等。

  16. 协议转换器(Protocol converter)负责转换Debug主控端发出的高级ARM调式命令为底层的和ARM内核通信的JTAG命令。 Debug主控端和协议转换器之间的介质可以有很多种,比如:以太网,USB,RS-232,并口等。主控端和协议转换器之间的通信协议最典型的就是ARM公司提供的Angle标准,也可以是第三方厂家自己定义的标准。 关于Angle的协议,请参考ARM SDT和ADS,ajj公司的OpenICE32,EPI公司的Jeeni等。 Debug目标板就是指系统的调试对象。

  17. JTAG的典型信号 • TMS: 测试模式选择(Test Mode Select),通过TMS信号控制JTAG状态机的状态 • TCK :JTAG的时钟信号 • TDI:数据输入信号 • TDO :数据输出信号 • nTRST:JTAG复位信号,复位JTAG的状态机和内部的宏单元(Macrocell)

  18. JTAG与Angel • JTAG调试:协议转换器解释上位机传送过来的命令,通过JTAG控制ARM执行。 • Angel调试:协议转换器可以直接做为目标板的Firmware的一部分。直接执行从宿主机传送过来的调试命令;并回送相应的数据。 • Angel可以节省专门的JTAG仿真器,但是,它需要软件,或者是嵌入式操作系统的支持,做不到完全的实时仿真。而JTAG仿真是通过硬件和控制ARM的EmbeddedICE实现的,可以做到实时仿真。

  19. ARM微处理器的体系结构

  20. 数据和指令类型 • ARM采用的是32位架构。 • ARM约定: • Byte: 8 bit • Halfword: 16 bits(2 bytes) • Word: 32 bits(4 bytes) • 大部分ARM core提供: • ARM指令集(32-bit) • Thumb指令集(16-bit)

  21. 数据类型 • 字(Word) 字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位,请注意区分。 • 半字(Half-Word) 半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。 • 字节(Byte) 各种处理器体系结构中,字节的长度均为8位。

  22. ARM微处理器的工作状态 • 从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换: • ARM状态,此时处理器执行32位的字对齐的ARM指令; • Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。

  23. ARM处理器在两种工作状态之间可以切换: • 进入Thumb状态。 当操作数寄存器的状态位(地址的最低位,即位[0])为1时,执行BX指令进入Thumb状态。如果处理器在Thumb状态进入异常,则当异常处理(IRQ、FIQ、Undef、Abort 和 SWI)返回时,自动转换到Thumb状态。 • 进入ARM状态。 当操作数寄存器的状态位(位[0])为0时,执行BX指令进入ARM状态。处理器进行异常处理(IRQ、FIQ、Reset、Undef、Abort 和 SWI ARM状态执行)。在此情况下,把PC 放人异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM状态。

  24. 处理器工作模式 ARM微处理器支持7个基本工作模式,分别为: • 用户模式(User):非特权模式,大部分任务执行在这种模式,ARM处理器正常的程序执行状态。 • 快速中断模式(FIQ):当一个高优先级(fast)中断产生时将会进入这种模式,用于高速数据传输或通道处理。 • 外部中断模式(IRQ):当一个低优先级(normal)中断产生时将会进入这种模式,用于通用的中断处理。 • 管理模式(Supervisor):当复位或软中断指令执行时将会进入这种模式,操作系统使用的保护模式,系统复位后的缺省模式。

  25. 中止模式(Abort):当存取异常时将会进入这种模式。中止模式(Abort):当存取异常时将会进入这种模式。 • 1.指令中止模式:指令预取终止时进入该模式。 • 2.数据访问中止模式:当数据访问终止时进入该模式,可用于虚拟存储及存储保护。 • 指令未定义模式(Undef):当执行未定义指令时会进入这种模式,支持硬件协处理器指令的软件仿真。 • 系统模式(System):使用和User模式相同寄存器集的特权模式,运行具有特权的操作系统任务。

  26. ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。 大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。 除用户模式以外,其余的所有6种模式称为非用户模式或特权模式(Privileged Modes); 其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

  27. 处理器启动时的模式转换图 多种特权模式变化 用户程序的运行模式 超级模式 (Supervisor) 复位后的缺省模式 一般为用户模式 User 主要完成各模式的堆栈设置,注意不要进入用户模式 处理器模式

  28. 寄存器 • ARM 的中央寄存器集是16 个用户寄存器R0 – R15。这些寄存器均是32 位宽度,R0 – R12没有其他特殊功能,寄存器R13 – R15在CPU中有特殊功能。 • R13被用作堆栈指针(stack pointer,SP),保存当前处理器模式的堆栈的栈顶。 • R14被称为链接寄存器(link register,LR),保存调用子函数的返回地址。 • R15是程序计数器(program counter,PC)。其内容是处理器要取的下一条指令的地址。

  29. ARM状态下的寄存器组织 • 程序状态寄存器: • CPSR • (current program status register) • 当前的程序状态寄存器 • SPSR • (saved program status register) • 备份的程序状态寄存器

  30. ARM微处理器共有37个32位寄存器。 • 1个用作PC • 1个用作CPSR • 5个用作SPSR • 30个为通用寄存器 • 当前处理器的模式决定着哪组寄存器可操作,任何模式都可以存取: • 相应的R0 – R12子集 • 相应的R13(SP),R14(LR) • 相应的R15(PC) • 相应的CPSR • 特权模式(除system模式)还可存取: • 相应的SPSR 6个状态寄存器

  31. ARM和Thumb寄存器组织图解

  32. Thumb状态下和ARM状态下的R0~R7是相同的 • Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的 • Thumb状态下的SP对应于ARM状态下的R13 • Thumb状态下的LR对应于ARM状态下的R14 • Thumb状态下的程序计数器对应于ARM状态下的R15 (1) Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系

  33. (2) 访问THUMB状态下的高位寄存器(Hi-registers) 在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序有限制地访问这些寄存器,将其用作快速的暂存器. 使用带特殊变量的 MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送,高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。

  34. (3) 程序状态寄存器 ARM体系结构包含一个当前程序状态寄存器(CPSR)和5个备份的程序状态寄存器 (SPSRs)。 备份的程序状态寄存器用来进行异常处理,其功能包括: • 保存ALU中的当前操作信息。 • 控制允许和禁止中断。 • 设置处理器的运行模式。 程序状态寄存器每一位的安排如图所示.

  35. 程序状态寄存器的格式

  36. ① 条件码标志(Condition Code Flags) N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。 在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下.仅有分支指令是有条件执行的。

  37. 运行模式位M[4:0]:M0、M1 、 M2、M3、M4是模式位。这些位决定了处理器的运行模式。具体含义如下。 由表可知,并不是所有的运行模式位的组合都是有效的,其他的组合结果会导致处理器进入一个不可恢复的状态。

  38. 异常 异常(exception)由内部或外部源产生以引起处理器处理一个事件,即当正常的程序执行流程发生暂时的停止时。例如,外部中断或试图执行未定义指令都会引起异常。在处理异常之前,处理器状态必须保留,以便在异常处理程序完成后,原来的程序能够重新执行。 处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。 ARM支持7种类型的异常。列出了异常的类型以及处理这些异常的处理器模式。异常出现后,强制从异常类型对应的固定存储器地址开始执行程序。这些固定的地址称为异常向量(Exception Vectors)。

  39. ARM体系结构所支持的异常类型

  40. 异常向量表(Exception Vectors)

  41. 异常优先级(Exception Priorities)

  42. 高端向量 一些ARM实现允许异常向量的定位由32位地址空间低端的正常地址范围Ox00000000~Ox000000lC,移到接近于地址空间高端的另一地址范围0xFFFF0000~0xFFFF00lC。 这些改变后的地址位置称为高端向量。

  43. 异常的进入和退出 只要正常的程序流程被暂时停止,则异常发生,例如服务外部的中断。 在异常被处理之前,必须保存当前的处理器状态,以便当处理程序完成后,原来的程序能重新开始。 如果几种异常同时发生,则对它们按固定的次序处理,可参考异常优先级。

  44. 当异常产生时,ARM core: • 拷贝CPSR到SPSR_<mode> • 设置适当的CPSR位: • 改变处理器状态进入ARM态 • 改变处理器模式进入相应的异常模式 • 设置中断禁止位禁止相应中断(如果需要) • 保存返回地址到LR_<mode> • 设置PC为相应的异常向量

  45. 返回时,异常处理需要: • 从SPSR_<mode>恢复CPSR • 从LR_<mode>恢复PC • Note:这些操作只能在ARM态执行

  46. Xscale系统结构PXA255处理器结构与特性XSBase255开发平台介绍Xscale系统结构PXA255处理器结构与特性XSBase255开发平台介绍

  47. Xscale系统结构

  48. Xscale系统结构----Xscale超级流水线 • PXA255拥有7级超级流水线,主要由主流水线、MAC流水线和内存访问流水线组成。

  49. Xscale系统结构----Xscale超级流水线 • 主流水线 • F1/F2指令读取(给下一级的指令译码级提交下一条要执行的指令。是许多重要功能单元所处之地。) • ID指令译码 (接收IFU中的指令字节和发送到RF寄存器文件/移位级的译码寄存器信息) • RF寄存器文件/移位级(主要对寄存器文件单元或者RFU进行读写,为ALU操作、MAC操作、内存数据Cache的读取和协处理器接口提供相关数据) • X1执行级 (执行ALU计算、条件指令执行和分支目标确定) • X2执行级 (包含程序状态寄存器PSRs 并选择哪些需要在XWB级写入RFU中。) • XWB写回级(当 一条指令到达写回级时将写回寄存器文件单元RFU)

More Related