资源描述
本讲内容本讲内容一、一、ARM9ARM9体系结构体系结构二、二、ARMARM流水线结构流水线结构三、三、ARMARM存储结构存储结构四、四、ARM9ARM9寄存器寄存器五、五、ARMARM异常异常六、六、ARM9ARM9系列芯片系列芯片S3C2410XS3C2410X介绍介绍一、一、ARM9体系结构体系结构本节内容本节内容1、ARM系列处理器简介系列处理器简介2、ARM9体系结构体系结构1、ARM系列处理器简介系列处理器简介ARM9系列简介系列简介ARM7采用的采用的Neumann结构,取指令和取操作数都是通过结构,取指令和取操作数都是通过一条总线分时进行,这样,在高速运算时,不但不能同时一条总线分时进行,这样,在高速运算时,不但不能同时取指令和取操作数,而且还会造成传输通道上的瓶颈现象。取指令和取操作数,而且还会造成传输通道上的瓶颈现象。ARM9采用哈佛(采用哈佛(Harvard)结构,程序存储器与数据存储结构,程序存储器与数据存储器分开,提供了较大的存储器带宽。同时,大多数器分开,提供了较大的存储器带宽。同时,大多数DSP都都采用此结构。采用此结构。ARM9为五级流水(取指,译码,执行,缓冲为五级流水(取指,译码,执行,缓冲/数据,回写)数据,回写),平均功耗为,平均功耗为0.7mW/MHz。时钟速度为。时钟速度为120MHz-200MHz,每条指令平均执行,每条指令平均执行1.5个时钟周期。个时钟周期。ARM9系列微处理器包含系列微处理器包含ARM920T、ARM922T和和ARM940T三种类型,主要应用在手持产品、视频电话、三种类型,主要应用在手持产品、视频电话、PDA、数字消费产品、机顶盒、家用网关等方面。、数字消费产品、机顶盒、家用网关等方面。ARM9系列处理器简介系列处理器简介ARM9系列产品系列产品 项目项目 型号型号Cache(Ins/Data)MMBusThumbDSPJazelle指令指令版本版本ARM920T16KB/16KBMMUASBYesNoNov4TARM922T8KB/8KBMMUASBYesNoNov4TARM940T4KB/4KBMMUASBYesNoNov4TARM9系列处理器简介系列处理器简介ARM9E系列系列ARM9E系列微处理器包括如下系列微处理器包括如下4种类型的核:种类型的核:ARM926EJ-S、ARM946E-S和和ARM966E-SARM9E系列是一种包含有微控制器、系列是一种包含有微控制器、DSP、Java功能的综合处理器,强化了数字信号处理能力,适功能的综合处理器,强化了数字信号处理能力,适用于需要用于需要DSP和微控制器结合使用的情况,并且把和微控制器结合使用的情况,并且把Thumb技术和技术和DSP都扩展到了都扩展到了ARM指令中,并且指令中,并且具有具有EmbededICE-RT逻辑,更好地适应了实时系逻辑,更好地适应了实时系统开发的需要。同时统开发的需要。同时ARM9E使用了使用了Jazelle增强技增强技术,该技术支持一种新的术,该技术支持一种新的Java操作状态,在硬件中操作状态,在硬件中执行执行Java字节码。字节码。ARM9系列处理器简介系列处理器简介 ARM9E系列产品系列产品 项目项目 型号型号Cache(Ins/Data)MMBusThumb DSP Jazelle指令指令版本版本ARM926EJ-S可变MMU2*AHBYesYesYesv5TEJARM946E-S可变MPUAHBYesYesNov5TEARM966E-S无-AHBYesYesNov5TEARM968E-S无DMAAHBYesYesNov5TEARM10系列处理器简介系列处理器简介ARM10系列系列 ARM10系列微处理器包括:系列微处理器包括:ARM1020E和和ARM1022E等型号等型号 ARM10系列采用了新的体系结构,其核心为使用了向量系列采用了新的体系结构,其核心为使用了向量浮点单元,有强大的浮点运算能力,并且增加了浮点单元,有强大的浮点运算能力,并且增加了Cache容容量和总线宽度,并且具有低功耗的特点。量和总线宽度,并且具有低功耗的特点。ARM10系列微处系列微处理器主要应用于下一代无线设备、视频消费品等。理器主要应用于下一代无线设备、视频消费品等。ARM10系列产品系列产品 项目项目 型号型号Cache(Ins/Data)MMBusThumbDSP Jazelle指令指令版本版本ARM1020E32KB/32KBMMU2*AHBYesYesNov5TEARM1022E16KB/16KBMMU2*AHBYesYesNov5TEARM1022E可变MPUMMU2*AHBYesYesYesv5TEJARM其它系列处理器简介其它系列处理器简介ARMStrong/Xscale系列系列 StrongARM是采用是采用ARM体系结构高度集成的体系结构高度集成的32位位RISC微处理器。它融合了微处理器。它融合了Intrl公司的设计技术,公司的设计技术,以及以及ARM体系结构的电源效率,其体系结构在软件体系结构的电源效率,其体系结构在软件上兼容上兼容ARMv4,同时又具有,同时又具有Intel技术优点。技术优点。StrongARM是是Intrl公司为手持消费类电子和移公司为手持消费类电子和移动计算与通信设备生产的嵌入式处理器。采用动计算与通信设备生产的嵌入式处理器。采用StrongARM架构的处理器有:架构的处理器有:SA-1、SA-110、SA-1100、SA1110和和IXP1200。Xscale是基于是基于ARMv5体系结构的解决方案,是体系结构的解决方案,是一款性能全、性价比高、功耗低的处理器,支持一款性能全、性价比高、功耗低的处理器,支持16位的位的Thumb和和DSP指令集,主要应用于数字移动电指令集,主要应用于数字移动电话、个人数字助理和网络产品等。话、个人数字助理和网络产品等。Xscale架构的处架构的处理器有:理器有:PXA250、PXA255和和PXA270等。等。ARM系列处理器简介系列处理器简介ARM微处理器应用微处理器应用1、工业控制领域:、工业控制领域:作为作为32的的RISC架构,基于架构,基于ARM核核的微控制器芯片不但占据了高端微控制器市场的大部分市的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的微控制器的低功耗、高性价比,向传统的8位位/16位微控制位微控制器提出了挑战。器提出了挑战。2、无线通讯领域:、无线通讯领域:目前已有超过目前已有超过85%的无线通讯设备的无线通讯设备采用了采用了ARM技术,技术,ARM以其高性能和低成本,在该领域以其高性能和低成本,在该领域的地位日益巩固。的地位日益巩固。3、网络应用:、网络应用:随着宽带技术的推广,采用随着宽带技术的推广,采用ARM技术的技术的ADSL芯片正逐步获得竞争优势。此外,芯片正逐步获得竞争优势。此外,ARM在语音及视在语音及视频处理上进行了优化,并获得广泛支持,也对频处理上进行了优化,并获得广泛支持,也对DSP的应用的应用领域提出了挑战。领域提出了挑战。ADSL(非对称数字用户线路非对称数字用户线路)4、消费类电子产品:、消费类电子产品:ARM技术在目前流行的数字音频技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。播放器、数字机顶盒和游戏机中得到广泛采用。5、成像和安全产品:、成像和安全产品:现在流行的数码相机和打印机中现在流行的数码相机和打印机中绝大部分采用绝大部分采用ARM技术。手机中的技术。手机中的32位位SIM智能卡也采用智能卡也采用了了ARM技术。技术。ARM系列产品命名规则系列产品命名规则ARM 926EJ-SARM 926EJ-SFamily number 7:ARM7 9:ARM910:ARM1011:ARM11Memory system 2:Cache,MMU,Process ID 4:Cache,MPU 6:Write buffer,no cacheMemory size 0:Cache size(4-128KB)2:Reduced cache size 6:TCMSynthesizableExtensions E:DSP extension J:Jazelle extension T:Thumb support2、ARM9体系结构体系结构ARM9体系结构框图体系结构框图对于对于ARM9系列,其基本内核是系列,其基本内核是ARM9TDMI,下页图给出了下页图给出了ARM9TDMI结构框图。主要有结构框图。主要有7部分部分构成。构成。比较最常用的是比较最常用的是ARM920T内核,后页图给出了内核,后页图给出了ARM920T结构框图。结构框图。ARM920T结构主要部分有:结构主要部分有:ARM9TDMI内核内核CPU、MMU、Cache、协处理器接口、运行跟踪、协处理器接口、运行跟踪信息接口信息接口(ETM)、JTAG调试接口、总线接口等调试接口、总线接口等7部部分构成。分构成。ARM9TDMI体系结构框图体系结构框图ARM9TDMI CPU指令接口指令接口数据地址接口数据地址接口跟踪接口跟踪接口数据接口数据接口JTAG指令地址接口指令地址接口ARM9TDMI结构框图结构框图ARM920T体系结构框图体系结构框图ARM920T体系结构框图体系结构框图二、二、ARM流水线结构流水线结构本节内容本节内容1、ARM流水线结构流水线结构2、ARM总线结构总线结构1、ARM流水线结构流水线结构流水线技术概述流水线技术概述 流水线方式:流水线方式:是把一个重复的过程分解为若干个是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。子过程,每个子过程可以与其他子过程同时进行。由于这种工作方式与工厂中的生产流水线十分相似,由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。因此,把它称为流水线工作方式。处理器按照一系列步骤来执行每一条指令。典型处理器按照一系列步骤来执行每一条指令。典型的步骤为:的步骤为:1)从存储器读取指令()从存储器读取指令(fetch)2)译码以鉴别它是哪一类指令()译码以鉴别它是哪一类指令(dec)3)从寄存器组取得所需的操作数()从寄存器组取得所需的操作数(reg)4)将操作数进行组合以得到结果或存储器地址()将操作数进行组合以得到结果或存储器地址(exe)5)如果需要,则访问存储器存取数据()如果需要,则访问存储器存取数据(mem)6)将结果回写到寄存器组()将结果回写到寄存器组(res)ARM7的三级流水线1取指:取指:从程序存储器中取指令,放入指令流水线。从程序存储器中取指令,放入指令流水线。(占用存储器访问操作占用存储器访问操作)2译码:译码:指令译码。指令译码。(占用译码逻辑占用译码逻辑)3执行:执行:执行指令执行指令/读写读写REG。(占用占用ALU及数据路径及数据路径)1、ARM流水线结构流水线结构 下图为下图为3个单周期指令在流水线上的情况。一条指令有个单周期指令在流水线上的情况。一条指令有3个个时钟周期的执行时间,但吞吐量是每个周期时钟周期的执行时间,但吞吐量是每个周期1条指令。条指令。取指取指译码译码执行执行取指取指译码译码执行执行取指取指译码译码执行执行t123PC值如何计算?值如何计算?PC 指向处于读取级的指令地址,而不是处于执行级的指令地址指向处于读取级的指令地址,而不是处于执行级的指令地址PC=当前执行指令地址当前执行指令地址+8ARM单周期指令的单周期指令的3级流水线操作级流水线操作ARM流水线结构流水线结构 优秀的流水线结构优秀的流水线结构 OperationCycle 1 2 3 45 6 ADD SUB MOV AND ORR EOR CMP RSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetch本例中本例中 6 个时钟周期内一共完成了个时钟周期内一共完成了?条指令条指令全部对寄存器进行操作全部对寄存器进行操作 (单周期执行)(单周期执行)指令周期数指令周期数(CPI)=1ARM流水线结构流水线结构多周期指令的多周期指令的3级流水线操作级流水线操作取指取指译码译码执行执行取指取指译码译码地址地址计算计算数据数据传送传送取指取指 取指取指译码译码执行执行译码译码执行执行取指取指 译码译码 执行执行 1 2 3 4 5 6 7 81 ADD2 STB3 ADD4 ADD5 ADD指令流水线出现了中断指令流水线出现了中断 ARM流水线结构流水线结构T4周期周期:指令指令2地址计算产生地址计算产生下一周期数据路下一周期数据路 径需要的径需要的控制信号控制信号。指令指令3译码产生译码产生下一周期数据路径需下一周期数据路径需要要 的的控制信号控制信号。二者都产生二者都产生下一周期数据路径控制信号,数据路径控制下一周期数据路径控制信号,数据路径控制冲突,因此断流冲突,因此断流。T5周期周期:指令指令2 STB访问数据访问数据存储器存储器 指令指令5取指访问程序取指访问程序存储器存储器 二者都二者都访问存储器,造成访问存储器访问存储器,造成访问存储器冲突,在此断流。冲突,在此断流。指令指令3译码译码 指令指令4的译码则不得不推迟一个周期。的译码则不得不推迟一个周期。ARM流水线结构流水线结构ARM9TDMI的五级流水线的五级流水线ARM7TDMI与与ARM9TDMI流水线比较流水线比较ARM流水线结构流水线结构ARM7和和ARM9流水线比较流水线比较 5级流水线的级流水线的ARM9内核是内核是哈佛架构哈佛架构,拥有,拥有独立的指令和数据总线;指令和数据的读取独立的指令和数据总线;指令和数据的读取可以在同一周期进行;可以在同一周期进行;3级流水的级流水的ARM7内核是指令和数据总线复内核是指令和数据总线复用的用的冯冯.诺依曼架构诺依曼架构,指令和数据的读取不能,指令和数据的读取不能在同一周期进行;在同一周期进行;5级流水线设计把寄存器读取、逻辑运算、级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中,结果回写分散在不同的流水当中,每一级流每一级流水的操作简洁,提升了处理器的主频。水的操作简洁,提升了处理器的主频。ARM流水线结构流水线结构ARM流水线结构流水线结构 随着流水线深度(级数)的增加,每一段随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了处理器的性能;在更高的频率,同时改进了处理器的性能;负面作用是增加了系统的延时,即内核在负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流执行一条指令前,需要更多的周期来填充流水线;水线;流水线级数的增加也意味着在某些段之间流水线级数的增加也意味着在某些段之间会产生数据相关。会产生数据相关。ARM流水线结构流水线结构ARM处理器性能比较处理器性能比较2、ARM总线结构总线结构ARM微控制器使用的是微控制器使用的是AMBA总线体系结构总线体系结构AMBA(Advanced Microcontroller Bus Architecture)是)是ARM公司公布的总线标准,先公司公布的总线标准,先进的进的AMBA规范定义了三种总线:规范定义了三种总线:AHB总线总线(Advanced High-performance Bus):):用于连接高性能系统模块。它支持突发数用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序据传输方式及单个数据传输方式,所有时序 参考参考同一个时钟沿。同一个时钟沿。ASB总线总线(Advanced System Bus):):用于连用于连接高性能系统模块,它支持突发数据传输模式。接高性能系统模块,它支持突发数据传输模式。APB总线总线(Advance Peripheral Bus):):是一是一个简单接口支持低性能的外围接口。个简单接口支持低性能的外围接口。本节内容本节内容1、ARM存储数据类型存储数据类型2、ARM存储器组织存储器组织3、ARM存储器层次存储器层次 三、三、ARM存储结构存储结构 ARM存储数据类型存储数据类型ARM处理器支持以下处理器支持以下6种数据类型:种数据类型:8位位有符号和无符号字节有符号和无符号字节(Byte)。16位位有符号和无符号半字有符号和无符号半字(Halfword)它们必须以两字节的边界对齐它们必须以两字节的边界对齐(半字对齐半字对齐)。32位位有符号和无符号字有符号和无符号字(word)它们必须以它们必须以4字节的边界对齐字节的边界对齐(字对齐字对齐)。字对齐字对齐:字单元地址的低两位:字单元地址的低两位 A1A0=0b00。即。即地址末位为地址末位为0 x0,0 x4,0 x8,0 xc。半字对齐半字对齐:半字单元地址的最低位:半字单元地址的最低位 A0=0b0(地地址末位为址末位为0 x0,0 x2,0 x4,0 x6,0 x8,0 xa,0 xc,0 xe)。1、ARM存储数据类型存储数据类型 对对于于指指令令,ARM指指令令系系统统分分为为32位位ARM指指令令集集和和16位位的的Thumb指指令令集集,在在存存储储时时分分别别以以32位位和和16位的两种不同长度存储。位的两种不同长度存储。对对于于数数据据,ARM支支持持对对32位位字字数数据据,16位位半半字字数数据据,8位位字字节节数数据据操操作作。因因此此数数据据存存储储器器可可以以存存储储32位,位,16位,位,8位三种不同长度数据。位三种不同长度数据。在在ARM内内部部,所所有有操操作作都都面面向向32位位的的操操作作数数,只只有有数数据据传传送送指指令令支支持持较较短短的的字字节节和和半半字字的的数数据据类类型型。当当从从存存储储器器读读入入一一个个字字节节或或半半字字时时,根根据据其其数数据据类类型将其扩展到型将其扩展到32位。位。ARM存储数据类型存储数据类型ARM存储器组织存储器组织 ARM存储器以存储器以8位为一个单元存储数据位为一个单元存储数据(一个字节一个字节),每个,每个存储单元分配一个存储地址。存储单元分配一个存储地址。ARM将存储器看作是从零地址开始的字节的线性组合。将存储器看作是从零地址开始的字节的线性组合。作为作为32位的微处理器,位的微处理器,ARM体系结构所支持的最大寻址空体系结构所支持的最大寻址空间为间为4GB(232字节)。字节)。从零字节到三字节放置第一个存储的从零字节到三字节放置第一个存储的字字数据,从第四个数据,从第四个字节到第七个字节放置第二个存储的字节到第七个字节放置第二个存储的字字数据,依次排列。数据,依次排列。32位的字数据要使用位的字数据要使用4个地址单元,个地址单元,16位半数据要使用位半数据要使用2个个地址单元。地址单元。这样,就存在一个所存储的字或半字数据的排列顺序问这样,就存在一个所存储的字或半字数据的排列顺序问题。题。ARM体系结构可以用两种方法存储字数据,称为体系结构可以用两种方法存储字数据,称为大端格大端格式式和和小端格式小端格式。2、ARM存储器组织存储器组织ARM存储器组织存储器组织 大端格式大端格式(big-endian):字数据的高字节存储在低地址字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。中,而字数据的低字节则存放在高地址中。小端格式小端格式(low-endian):与大端存储格式相反。低地址与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高中存放的是字数据的低字节,高地址存放的是字数据的高字节。字节。缺省设置为小端格式。缺省设置为小端格式。ARM存储器层次存储器层次 微处理器希望微处理器希望存储器容量大、速度快。但容量存储器容量大、速度快。但容量大者速度慢;速度快者容量小。解决方法是大者速度慢;速度快者容量小。解决方法是构建一构建一个由多级存储器组成的复合存储器系统。个由多级存储器组成的复合存储器系统。两级存储器方案两级存储器方案一般包括:一般包括:一个容量小但速度快的一个容量小但速度快的从存储器从存储器一个容量大但速度慢的一个容量大但速度慢的主存储器主存储器宏观上看这个存储器系统像一个即大又快的存储宏观上看这个存储器系统像一个即大又快的存储器。这个容量小但速度快的元件是器。这个容量小但速度快的元件是Cache,它自动,它自动地保存处理器经常用到的指令和数据的拷贝。地保存处理器经常用到的指令和数据的拷贝。3、ARM存储器层次存储器层次多级存储器系统多级存储器系统寄存器组寄存器组 访问时间约为几个访问时间约为几个ns。片上片上RAM 与片外与片外RAM比速度快、功耗小、比速度快、功耗小、容量小。读写时间约为几个容量小。读写时间约为几个ns。片上片上Cache 832KB,访问时间约为十几个访问时间约为十几个ns。主存储器主存储器 一般为几兆字节一般为几兆字节1GB 的动态存的动态存 储器,访问时间约储器,访问时间约 50ns。ARM存储器层次存储器层次CPU寄存器组寄存器组片上片上RAM片上片上Cache主存储器主存储器硬盘硬盘四、四、ARM9寄存器寄存器本节内容本节内容1、ARM寄存器概述寄存器概述2、ARM通用寄存器通用寄存器3、ARM状态寄存器状态寄存器1、ARM寄存器概述寄存器概述ARM寄存器概述寄存器概述ARM处理器处理器v4及以上版本有及以上版本有37个个32位的寄存器位的寄存器 其中其中31个为通用寄存器;个为通用寄存器;6个为状态寄存器。个为状态寄存器。31个通用寄存器个通用寄存器R0R15;R13_svc、R14_svc;R13_abt、R14_abt;R13_und、R14_und;R13_irq、R14_irq;R8_fiq-R14_fiq 6 个状态寄存器个状态寄存器CPSRSPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和和SPSR_fiqARM9寄存器概述寄存器概述 每一类处理器模每一类处理器模式都有一组相应的式都有一组相应的寄存器组;寄存器组;在任意的处理器在任意的处理器模式下,可见的寄模式下,可见的寄存器包括存器包括1515个通用个通用寄存器(寄存器(R0R0R14R14)、)、1 1个或个或2 2个个状态寄存器和程序状态寄存器和程序寄存器。寄存器。带灰色底纹的单带灰色底纹的单元格表示,用户模元格表示,用户模式或系统模式使用式或系统模式使用的一般寄存器,已的一般寄存器,已被异常模式特定的被异常模式特定的另一寄存器所替代。另一寄存器所替代。ARM9寄存器概述寄存器概述User/sysFIQSvcAbtIRQUnd2、ARM通用寄存器通用寄存器ARM的通用寄存器的通用寄存器 通用寄存器包括通用寄存器包括R0R15,可以分为三类:,可以分为三类:未分组寄存器未分组寄存器R0R7 分组寄存器分组寄存器R8R14 程序计数器程序计数器PC(R15)一、未分组寄存器一、未分组寄存器R0R7在所有的运行模式下,未分组寄存器都指向同一个物在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,理寄存器,他们未被系统用作特殊的用途,是真正的通用是真正的通用寄存器寄存器。因此,在中断或异常处理进行运行模式转换时,由于因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。起注意。ARM的通用寄存器的通用寄存器二、分组的寄存器二、分组的寄存器R8R14 对于对于R8R12,每一次所访问的物理寄存器,与处理,每一次所访问的物理寄存器,与处理器当前的工作模式有关。器当前的工作模式有关。1、R8R12当处理器工作于当处理器工作于fiq模式时,访问的寄存器为模式时,访问的寄存器为R8_fiqR12_fiq;除除fiq模式以外的其他模式,访问的寄存器为模式以外的其他模式,访问的寄存器为R8_usrR12_usr。2、R13和和R14:每个寄存器对应每个寄存器对应6个不同的物理寄存器,其中的一个是用户个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外模式与系统模式共用,另外5个物理寄存器,对应于其他个物理寄存器,对应于其他5种不种不同的异常模式。同的异常模式。采用以下的记号来区分不同的物理寄存器:采用以下的记号来区分不同的物理寄存器:R13_ R14_ 其中,其中,mode为以下几种模式之一:为以下几种模式之一:usr、fiq、irq、svc、abt、und。ARM的通用寄存器的通用寄存器 R13:寄存器寄存器R13在在ARM指令中指令中常用作堆栈指针常用作堆栈指针SP。但这只是一种习惯用法,用户也可使用其他的寄存器但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在作为堆栈指针。而在Thumb指令集中,某些指令强制性的指令集中,某些指令强制性的要求使用要求使用R13作为堆栈指针。作为堆栈指针。R14:寄存器寄存器R14也称作子程序链接寄存器也称作子程序链接寄存器(Subroutine Link Register)或)或链接寄存器链接寄存器LR。当执行当执行BL子程序调用指令时,子程序调用指令时,R14中得到中得到R15(程序(程序计数器计数器PC)的备份。其他情况下,)的备份。其他情况下,R14用作通用寄存器。用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和和R14_und用来用来保存保存R15的返回值。的返回值。ARM的通用寄存器的通用寄存器三、程序计数器三、程序计数器PC(R15)寄存器寄存器R15用作程序计数器(用作程序计数器(PC)。在在ARM状态下,位状态下,位1:0为为0,位,位31:2用于保存用于保存PC;在在Thumb状态下,位状态下,位0为为0,位,位31:1用于保存用于保存PC;使用使用R15时注意:时注意:虽然虽然R15可以用作通用寄存器,可以用作通用寄存器,但是有一些指令在使用但是有一些指令在使用R15时有一些特殊限制,若时有一些特殊限制,若不注意,执行的结果将是不可预料的。所以,一般不注意,执行的结果将是不可预料的。所以,一般不这么使用。不这么使用。关于关于PC的值:的值:由于由于ARM采用多级流水线技术,采用多级流水线技术,所以所以PC总是指向正在取指的指令,而不是正在执总是指向正在取指的指令,而不是正在执行的指令。也即行的指令。也即PC总是指向当前指令的下两条指总是指向当前指令的下两条指令的地址。因此,对于令的地址。因此,对于ARM指令集而言,指令集而言,PC的值的值为当前指令的地址值加为当前指令的地址值加8个字节。个字节。3、ARM状态寄存器状态寄存器ARM的状态寄存器的状态寄存器一、两种程序状态寄存器一、两种程序状态寄存器在在ARM微处理器中,有微处理器中,有CPSR和和SPSR两种程序状态寄存器两种程序状态寄存器。1、当前程序状态寄存器、当前程序状态寄存器 CPSR(Current Program Status Register)用来保存当前程序状态的寄存器。用来保存当前程序状态的寄存器。所有处理器模式下都可以访问当前程序状态寄存器所有处理器模式下都可以访问当前程序状态寄存器CPSR。仅一个。仅一个CPSR。2、保存程序状态寄存器、保存程序状态寄存器SPSR_mode(Saved Program Status Register)SPSR_mode用来进行异常处理,其功能包括:用来进行异常处理,其功能包括:保存保存ALU中的当前操作信息中的当前操作信息当异常发生时当异常发生时,用来保存用来保存CPSR的值,从异常返回时,将的值,从异常返回时,将 SPSR_mode复制到复制到CPSR中,恢复中,恢复CPSR的值。的值。控制允许和禁止中断控制允许和禁止中断修改修改SPSR的值的值 设置处理器的运行模式设置处理器的运行模式修改修改SPSR的值的值问题:问题:一共有多少个一共有多少个SPSR?为什么?为什么?ARM的状态寄存器的状态寄存器二、二、ARM状态寄存器的格式状态寄存器的格式1、条件码标志位、条件码标志位(保存(保存ALU中的当前操作信息)中的当前操作信息)N:正负号:正负号/大小大小 标志位标志位0表示:正数表示:正数/大于;大于;1表示:负数表示:负数/小于小于Z:零标志位:零标志位0表示:结果不为零;表示:结果不为零;1表示:结果为零表示:结果为零C:进位:进位/借位借位/移出位移出位0表示:未进位表示:未进位/借位借位/移出移出0;1表示:进位表示:进位/未借位未借位/移出移出1V:溢出标志位:溢出标志位0表示:结果未溢出;表示:结果未溢出;1表示:结果溢出表示:结果溢出31 30 29 28 27 876543210NZCV(保留)(保留)IFT M4 M3 M2 M1 M0ARM的状态寄存器的状态寄存器2、控制位、控制位I、F中断控制位中断控制位控制允许和禁止中断控制允许和禁止中断I1 禁止禁止IRQ中断中断I0 允许允许IRQ中断中断F1 禁止禁止FIQ中断中断F0 允许允许FIQ中断中断T控制控制(标志标志)位位反映处理器的运行状态反映处理器的运行状态T=1时,程序运行于时,程序运行于Thumb状态状态T=0时,程序运行于时,程序运行于ARM状态状态M控制位控制位决定了处理器的运行模式决定了处理器的运行模式当发生异常时这些位被改变。当发生异常时这些位被改变。如果处理器运行在特权模式,这些位也可以由如果处理器运行在特权模式,这些位也可以由程序修改。程序修改。M4:010000100011001010011101111101111111模式模式用户用户快中断快中断中断中断管理管理中止中止未定义未定义系统系统ARM的状态寄存器的状态寄存器3、保留位、保留位 CPSR中的其余位为保留位,当改变中的其余位为保留位,当改变CPSR中中的条件码标志位或者控制位时,保留位不要改变,的条件码标志位或者控制位时,保留位不要改变,在程序中也不要使用保留位来存储数据。保留位将在程序中也不要使用保留位来存储数据。保留位将用于用于ARM版本的扩展。版本的扩展。Thumb状态下的寄存器组织状态下的寄存器组织Thumb状态下的寄存器集是状态下的寄存器集是ARM状态下寄存状态下寄存器集的子集。程序员可以直接访问器集的子集。程序员可以直接访问8个通用的寄存个通用的寄存器(器(R0R7),程序计数器),程序计数器PC、堆栈指针、堆栈指针SP、链、链接寄存器接寄存器LR和当前状态寄存器和当前状态寄存器CPSP。本节内容本节内容1、中断和异常的概念、中断和异常的概念2、ARM的异常的异常3、ARM的异常中断响应的异常中断响应4、中断向量和中断优先级、中断向量和中断优先级 五、五、ARM异常异常 1、中断和异常的概念、中断和异常的概念 中断和异常的概念中断和异常的概念 1、中断、中断 当当CPU正在执行程序时,系统发生了一件急正在执行程序时,系统发生了一件急需处理的事件,需处理的事件,CPU暂时停下正在执行的程序,转去处理相暂时停下正在执行的程序,转去处理相应的事件,事件处理完后,应的事件,事件处理完后,CPU再返回执行原来的程序,这再返回执行原来的程序,这种情况称为中断。这是中断的本来意义。种情况称为中断。这是中断的本来意义。中断事件:中断事件:引起引起CPU产生中断、并且与产生中断、并且与CPU当前所执行当前所执行的程序无关的、由外部硬件产生的事件,也叫中断源。中断的程序无关的、由外部硬件产生的事件,也叫中断源。中断事件也常称为事件也常称为外中断外中断。常说的中断:常说的中断:有时指的是中断的本意,有时指的是外部中有时指的是中断的本意,有时指的是外部中断事件,即外中断。断事件,即外中断。中断是计算机系统基本的功能中断是计算机系统基本的功能 利用中断,外设可以与利用中断,外设可以与CPU并行工作,当外设需要传输数据或控制时,向并行工作,当外设需要传输数据或控制时,向CPU发发出中断请求信号。出中断请求信号。CPU响应其请求进行处理。因此,使用中响应其请求进行处理。因此,使用中断既可以实现断既可以实现CPU与外设并行工作,又可以实时处理各种紧与外设并行工作,又可以实时处理各种紧急事件。急事件。中断和异常的概念中断和异常的概念 2、异常、异常 是指是指CPU在执行指令时出现的错误,即不正常的在执行指令时出现的错误,即不正常的情况。异常是与当前所执行的程序有关的。如存取情况。异常是与当前所执行的程序有关的。如存取数据或指令错误、计算结果溢出等。数据或指令错误、计算结果溢出等。异常的处理:异常的处理:也用中断的方式进行处理。也用中断的方式进行处理。计算机通常是用中断来处理外中断和异常,因此计算机通常是用中断来处理外中断和异常,因此下面将二者均称为异常。下面将二者均称为异常。3、ARM程序的三种执行流程程序的三种执行流程 顺序流程:顺序流程:每执行一条每执行一条ARM指令,程序计数器指令,程序计数器(PC)的值加)的值加4;每执行一条;每执行一条Thumb指令,程序计指令,程序计数器寄存器(数器寄存器(PC)的值加)的值加2,整个过程是按顺序执,整个过程是按顺序执行。行。对异常的说明对异常的说明当系统运行时,异常可能会随时发生,为当系统运行时,异常可能会随时发生,为保证在保证在ARMARM处理器发生异常时不至于处于未知处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理定位置放置一条跳转指令,跳转到异常处理程序,当程序,当ARMARM处理器发生异常时,程序计数器处理器发生异常时,程序计数器PCPC会被强制设置为对应的异常向量,从而跳会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。返回到主程序继续执行。我们需要处理所有的异常,尽管我们可以我们需要处理所有的异常,尽管我们可以简单的在某些异常处理程序处放置死循环。简单的在某些异常处理程序处放置死循环。2、ARM的异常的异常ARM的异常的异常 跳转流程:跳转流程:程序执行了跳转指令,则要跳转到特程序执行了跳转指令,则要跳转到特定的地址标号处执行,包括跳转到子程序。例如,定的地址标号处执行,包括跳转到子程序。例如,跳转指令,跳转指令,B、BL、BLX和和BX。中断流程:中断流程:当异常中断发生时,系统执行完当前当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。指令后,将跳转到相应的异常中断处理程序处执行。在当异常中断处理程序执行完成后,程序返回到发在当异常中断处理程序执行完成后,程序返回到发生中断的指令的下条指令处执行。生中断的指令的下条指令处执行。在进行异常中断处理程序时,要保存被中断的程序的执行在进行异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程序现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。的执行现场。中断处理与子程序调用的区别:中断处理与子程序调用的区别:中断是随机的,并且与中断是随机的,并且与正在执行的程序无关;子程序调用是程序的主动行为,并且正在执行的程序无关;子程序调用是程序的主动行为,并且与正在执行的程序密切相关。与正
展开阅读全文