510 likes | 682 Views
节目预告 (4~15 周 ) 第一阶段:设计者. 第二阶段:学生(复习) 第三阶段:工程师(案例) 最后:考试(开卷) or PAPER. 学生教程. ARM 体系结构 ARM 指令系统 XScale 微架构的系统结构. 一个 Strong ARM 板卡. DATA ADDR control. LCD port. GPIO. Memory control. USB Port. Memory sheet. NaNo PCI. LCD port. 以太网,串口. 几个问题?. 有了开发板,我们能作什么? 我们成功的仿制出来,我们成功了吗?
E N D
节目预告(4~15周)第一阶段:设计者 第二阶段:学生(复习) 第三阶段:工程师(案例) 最后:考试(开卷)or PAPER
学生教程 • ARM体系结构 • ARM指令系统 • XScale 微架构的系统结构
DATA ADDR control LCD port GPIO Memory control USB Port
NaNo PCI LCD port
几个问题? • 有了开发板,我们能作什么? • 我们成功的仿制出来,我们成功了吗? • 我们是真正的设计者吗?
预备知识 • 计算机体系结构分类 -冯·诺依曼结构 -哈佛体系结构 -精简指令系统计算机(RISC)
ARM体系结构 ARM公司是把ARM作为知识产权IP推向嵌入式处理器市场,目前,已占有75%左右的市场。因此,ARM架构在市场出现也有多种形式,既有处理器内核(如ARM7TDMI)形式,也有处理器核(如ARM720T)形式。半导体厂商或片上系统SOC设计应用厂商采用ARM架构生产相应的MCU/MPU(如ATMEL公司的AT91单片机MCU)或SOC芯片。
关于ARM • ARM=Advanced RISC Machine • RISC 的典型代表 • 32位处理器技术 • 嵌入式领域的主力军 • ARM的产品 • ARM处理器内核,以IP的形式提供给IC生产厂家 • 硬核 • 软核 • ARM开发工具、SOC开发工具、评估板等 • ARM公司不生产芯片
2.1 ARM的特点(1) ARM微处理器的主要特点 • 系列化:ARM7, ARM9, ARM10, … • 独特的指令系统 • 32位架构,定长。 • 32位ARM指令 • 16位Thumb指令 • 大部分为单周期指令 • 条件执行 • Load/Store • 流水线结构 • ARM7:3级流水线 • ARM9:5级流水线 • 高性能、低功耗
ARM的特点(2) ARM微处理器的主要特点 • 支持JTAG调试 • 7种工作模式 • User : 用户模式,非特权 • FIQ : 快速中断 • IRQ : 普通中断 • Supervisor管理模式 • Abort : 存取异常模式 • Undef : 未定义指令模式 • System : 系统模式 • 2种工作状态 • ARM • Thumb 支持ARM/Thumb的交互工作
Thumb指令集 • Thumb 是16-bit 指令集 • 代码密度优化 (总代码大小约为ARM指令的65%) • 使用窄总线存储器时可以大大提高性能。 • 是 ARM 指令集的一个子集。 • 核存在一个执行状态 – Thumb状态 • ARM和Thumb之间切换使用BX 指令
ARM7TDMI 处理器内核 • ARM7TDMI 是基于 ARM7 内核 • 3 级流水线---0.9MIPS/MHz • 冯.诺依曼架构 • CPI(Cycle Per Instruction) 约为1.9 • T - Thumb 架构扩展, 提供两个独立的指令集: • ARM 指令,均为 32位 • Thumb指令,均为 16位 • 两种运行状态,用来选择哪个指令集被执行 • D - 内核具有Debug扩展结构 • M - 增强乘法器 (32x8) 支持64位结果. • I - EmbeddedICE-RT逻辑---提供片上断点和调试点支持
ARM7TDMI 内核信号 nM[4:0] MCLK nMREQ 时钟 nWAIT SEQ LOCK A[31:0] ISYNC D[31:0] BUSEN 存储器接口 配置 BIGEND DIN[31:0] ARM7TDMI 内核 DOUT[31:0] nENOUT nIRQ nRW 中断 nFIQ MAS[1:0] nRESET nTRANS 存储器管理 APE ABORT 总线控制 DBE nOPC nCPI VDD 协处理器接口 CPA 电源 VSS CPB
控制信号 地址总线 A[31:0] DOUT[31:0] BUS Splitter ARM7TDM 内核 DIN[31:0] 数据总线 D[31:0] Embedded ICE 逻辑 TAP 控制器 JTAG 接口 ARM7TDMI 方框图
ABE A[31:0] 地址 自增器 Incrementer 地址寄存器 P C BIGEND MCLK 寄存器 nWAIT PC Update nRW 指令 解码 MAS[1:0] A L U B u s 解码站 ISYNC A B u s B B u s 指令 解码 nIRQ 乘法器 nFIQ nRESET 及 ABORT nTRANS 读数据 寄存器 nMREQ 桶形 移位器 SEQ 控制 逻辑 LOCK nM[4:0] 写数据 寄存器 nOPC nCPI 32 位 ALU CPA CPB DBE D[31:0] ARM7TDMI 内核
PC[31:2] ARM State PC[31:1] Thumb State ALU[31:0] 地址 寄存器 A[31:0] 0x1C 向量 0x00 INC 自增器 外部地址产生
2.3 ARM处理器模式 处理器模式分为用户和系统模式,系统模式包括了: 快中断请求FIQ(Fast Interrupt Request) 中断请求IRQ(Interrupt Request) 管理SVC(Supervisor) 中止Abort 未定义Undefined等几种模式。
r0-r15为32位通用寄存器,其中,r15常用作程序计数器PC、r14常用作链接寄存器LR、r13常用作堆栈指针SP r0-r15为32位通用寄存器,其中,r15常用作程序计数器PC、r14常用作链接寄存器LR、r13常用作堆栈指针SP • 当前程序状态寄存器CPSR(Current Program Status Register)
CPSR 1、条件码标识 N:负数标识 Z:结果为零标识 C:进位位标识 V:溢出标识 *Q:DSP的溢出/饱和(选用) 2、控制位 I:IRQ中断禁止位 F:FIQ快中断禁止位 T:Thumb位 Mode:处理器工作模式 保护程序状态寄存器SPSR(Saved Program Status Register)是处理器系统模式下保存当前程序状态寄存器CPSR的内容。
2.4 Thumb状态 Thumb状态下的寄存器是ARM状态下寄存器组的一部份:r0-r7、r13(SP)、r14(LR)、r15(PC)和CPSR
2.5 异常处理模式 异常(Exception)是由内部或外部源产生以引起处理器处理一个事件,在处理异常之前,处理器状态必须保留;以便在异常处理程序完成后,原来的程序能够重新执行。同一时刻有可能出现多个异常。
2.5.1 复位 处理器上一旦有复位输入,处理器立即停止执行当前指令。复位完成下列操作: r14_svc=UNPREDICTABLE Value SPSR_svc=UNPREDICTABLE Value CPSR[4:0]=0b10011 /*进入管理模式*/ CPSR[5]=0 /*在ARM状态执行*/ CPSR[6]=1 /*禁止快速中断*/ CPSR[7]=1 /*禁止正常中断*/ PC=0x00000000
2.5.2 未定义指令异常 当ARM处理器执行协处理器指令时,它必须等待协处理器应答后,才能其正执行该指令;若协处理器没有应答,则会出现未定义指令异常 r14_und=address of next instruction after undefined instruction SPSR_und=CPSR CPSR[4:0]=0b11011 /*进入未定义模式*/ CPSR[5]=0 /*在ARM状态执行*/ /*CPSR[6]不变*/ CPSR[7]=1 /*禁止正常中断*/ PC=0×00000004 在仿真未定义指令后,通过下面指令: MOVS PC, r14 恢复PC(从r14_und)和CPSR(从SPSR_und),并返回该未定义指令的下一条指令
2.5.3 软件中断SWI 软件中断SWI指令进入管理模式,该指令常用于调用操作系统,故常称为“管理调用”(supervisor call) r14_svc=addre of next instruntion after the SWI instruction SPSR_SVC=CPSR /*进入管理模式*/ CPSR[4:0]=0b10011 /*在ARM状态执行*/ CPST[5]=0 /*CPST[6]不变*/ CPSR[7]=1 /*禁止下常中断*/ PC=0×00000008 完成软件中断SWI操作后,MOV PC,r14指令恢复PC(从r14_svc)和CPSR(从SPSR_SVC),并返回到SWI指令后的下一条指令
2.5.4 预取中止(取指令存储器中止) • 取指令无效时,存储器发生存储器中止信号;若试用执行无效指令,则产生预取中止异常;若该指令未指到(如指仅在流水线中发生了转移),则不发生预取中止。 • R14_abt=address of the aborted instruction+4 • SPSRabt=CPSR • CPSR[4:0]=0b10111 /*进入中止模式*/ • CPSR[5]=0 /*在ARM状态执行*/ • /*CPSR[6]不变*/ • PC=0×0000000C • 确定中止原因后,即可通过SUBS PC, r14,#4指令从中止模式返回,恢复了PC及CPSR值。
2.5.5 数据中止(数据访问存储器中止) • 当存储器数据访问无效时,存储器系统发出存储器中止信号。 • r14_abt=address of the aborted instruction+8 • SPSR_abt=CPSR • CPSR[4:0]=0b10111 /*进入中止模式*/ • CPSR[5]=0 /*在ARM状态执行*/ • /*CPSR[6]不变*/ • CPSR[7]=1 /*禁止正常中断*/ • PC=0×00000010 • 确定中止原因后,通过SUBS PC, r14,#8从中止模式返回,并恢复PC和CPSR的值。若中止的指令不需要重新执行,则通过SUBS PC,r14,#4来返回。
2.5.6 中断请求IRQ • 通过IRQ输入引脚,产生外部中断请求。当CPSR的I位为2时,则禁止IRQ中断;若该I位为0时,且检测到有IRQ输入时,执行下列操作: • r14_ir8=address of next instruction to be executed+4 • SPSR_irg=CPSR • CPSR[4:0]=0b10010 /*进入中断IRQ模式*/ • CPSR[5]=0 /*在ARM状态执行*/ • /*CPSR[6]不变*/ • CPSR[7]=1 /*禁止正常中断*/ • PC=0×00000018 • 可通过SUBS PC,R14,#4指令从中断服务返回,并恢复PC和CPSR的值,并继续执行被中断的程序。
2.5.7 快速中断请求FIQ • 通过FIQ输入引脚,产生外部快速中断请求。快速中断请求FIQ优先级高于中断请求IRQ,当进入快速中断请求FIQ时,会屏蔽IRQ中断请求。快速中断请求FIQ用来支持数据传送和通道处理,并有足够私有寄存器,可减少上下文切换的开销。 • 当CPSR的F位为1时,禁止快速中断请求;若该F位为0时,且检测到FIQ引脚有输入时,则执行下列操作: • r14_fig=address of next instruction to be executed+4 • SPSR_fiq=CPSR • CPSR[4:0]=0b10001 /*进入快速中断请求FIQ模式*/ • CPSR[5]=0 /*在ARM状态执行*/ • CPSR[6]=1 /*禁止快速中断请求*/ • PC=0×0000001C • 通过指令SUBS PC,r14,#4 从中断服务返回,并恢复PC 和CPSR的值,再继续执行被中断的程序。
2.6 ARM的流水线结构 计算机中的一条指令的执行可以分若干个阶段: 1.取指,从存储器中取出指令(fetch) 2.译码,指令译码(dec) 3.取操作数,假定操作数从寄存器组中取(reg) 4.执行运算(ALU) 5.存储器访问,操作数与存储器有关(mem) 6.结果写回寄存器(res) 而各个阶段的操作相对都是独立的。因此,可以采用流水线的重叠技术,可以大大提高系统的性能
ARM Thumb PC PC 从存储器中读取指令 Fetch 解码指令 PC - 4 PC-2 Decode 寄存器读(从寄存器Bank) 移位及ALU操作 寄存器写(到寄存器Bank ) PC - 8 PC - 4 Execute 2.6.1 指令流水线 为增加处理器指令流的速度,ARM7 系列使用3级流水线. • 允许多个操作同时处理,比逐条指令执行要快。 PC指向正被取指的指令,而非正在执行的指令
ADD 周期 1 2 3 4 5 6 SUB MOV AND 操作 ORR Decode Execute Fetch EOR CMP Fetch Decode Execute RSB Execute Fetch Decode Fetch Decode Execute Decode Execute Fetch Fetch Decode Execute Fetch Decode Fetch • 该例中用6个时钟周期执行了6条指令 • 所有的操作都在寄存器中(单周期执行) • 指令周期数 (CPI) = 1 2.6.2 最佳流水线
ADD SUB LDR MOV AND ORR 周期 1 2 3 4 5 6 操作 Fetch Decode Execute Fetch Decode Execute Fetch Decode Execute Data Writeback Fetch Decode Execute Fetch Decode Fetch 2.6.3 LDR 流水线举例 • 该例中,用6周期执行了4条指令 • 指令周期数 (CPI) = 1.5
2.6.4 ARM的流水线设计 • 流水线的结构相关 — 某些指令在流水线中重叠执行时,产生资源冲突 • 流水线的数据相关 — 当一条指令需要前面指令的执行结果,而这些指令均在流水线中重叠执行时,就可能引起流水线的数据相关 • 流水线的控制相关 —当流水线遇到分支指令和其他会改变PC值的指令时就会发生控制相关。一旦流水线检测某条指令是分支指令,就暂停分支指令之后的所有指令,直到分支指令确定了新的PC值为止
避免结构相关 ARM架构采用了资源重复的方法: • 采用分离式指令Cache和数据Cache。使取指和存储器的数据访问不再发生冲突。同时也解决了相应的数据通路问题。 • ALU中采用单独加法器来完成地址计算。使执行周期的运算不再产生资源冲突。
数据相关 • 定向(也称为旁路或短路)技术。 • 流水线互锁(Pipeline Interlock)技术。 • 编译器的“流水线调度”(或“指令调度”)技术
控制相关 • 指令预测 • 尽早计算出分支转移成功时的PC值(即分支的目标地址)