您好,欢迎访问三七文档
ARM体系结构预备知识电平:就是指电路中两点或几点在相同阻抗下电量的相对比值。这里的电量自然指“电功率”、“电压”、“电流”并将倍数化为对数,用“分贝”表示,记作“dB”。分别记作:10lg(P2/P1)、20lg(U2/U1)、20lg(I2/I1)上式中P、U、I分别是电功率、电压、电流。cpu要进行数据的读写,必须和外部器件(标准说法是芯片)进行下面3类信息的交互:1.存储单元的地址(地址信息)2.器件的选择,读或写的命令(控制信息)3.读或写的数据(数据信息)在ARM体系结构的数据存储格式中,将4字节定义为一个字(Word),2字节定义为半字。例如从0地址开始存放字数据,0号字节到3号字节放置第一个字数据,从第4号字节到第7字节放置第二个字数据。当ARM处理器向以字节为单位编址的线性地址空间写入字数据(或半字数据)时,就存在一个字(或半字)中,高位字节和低位字节与存储器连续的4个字节单元(或2个)字节对应的问题,即到底是字数据中的低字节对应4个字节存储空间的低地址单元、高字节对应存储空间的高地址单元,还是字数据中的低字节对应4个字节存储空间的高地址单元、高字节对应存储空间的低地址单元。这两种存储格式,前者称为小端格式,后者称为大端格式。连接cpu和其他芯片的导线,称为总线,总线就是一根根导线的集合,分为地址总线、控制总线、数据总线:1.地址总线:假设一个cpu有10根地址总线。在计算机中,一根导线可以传送的稳定状态只有两种,高电平和低电平。用二进制表示就是1和0,10根导线可以传送10位二进制数据。而10位二进制数可以表示2的10次方个不同的数据,最小数为0,最大数为1023一个cpu有N根地址线,则可以说这个cpu的地址总线宽度为N,可以寻找2的N次方个内存单元2.数据总线:数据总线的宽度决定了cpu和外界的数据传送速度。8根数据总线一次可传送一个8位二进制数据(即一个字节)3.控制总线:控制总线是个总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着cpu提供了对外部器件多少种控制,所以总线的宽度决定了cpu对外部器件的控制能力汇编指令是机器指令的助记符,同机器指令一一对应每一种cpu都有自己的汇编指令集cpu可以直接使用的信息在存储器中存放在存储器中指令和数据没有任何区别,都是二进制信息一个存储单元可以存储8个bit,即8位二进制数每一个cpu芯片都有许多管脚,这些管脚和总线相连,也可以说,这些管脚引出总线内存地址空间:一个cpu的地址总线宽度为10,那么可以寻址1024个内存单元,这1024个可寻到的内存单元就构成了这个cpu的内存地址空间RAM:随机存储器;ROM:只读存储器获得高、低电平的基本方法:利用半导体开关元件的导通、截止(即开、关)两种工作状态计算机系统=硬件系统(hardware)+软件系统(software)计算机硬件组成:1.输入设备2.输出设备3.存储器(cache、主存储器、辅助存储器ARM9以上完全符合,以下不一定)4.运算器5.控制器6.计算机的总线结构ARM支持类型:byte、halfword、word、doubleword(Cortex-A开始支持)MIPS即MillionInstructionPerSecond的简写--计算机每秒钟执行的百万指令数。是衡量计算机速度的指标。MHZ是兆赫兹,即每秒百万个时钟脉冲机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码,通常由操作码和操作数两部分组成,CPU完成一个机器指令通常需要4个时钟周期,也就是一个指令周期(指令周期并不一定为4个时钟周期)CPU的主频是指每秒内的时钟周期数,也就是说一个时钟周期等于主频分之一,一个指令周期就为主频分之四。这样它们的对应关系也就出来了。1Mips=4MHzARM体系采用了一些特别的技术,在保证高性能的同时尽量减小芯片体积,降低芯片的功耗。这些技术包括:1.在同一条数据处理指令中包含算术逻辑处理单元处理和移位处理2.使用地址自动增加/减少来优化程序中循环处理3.load/store指令可以批量传输数据,从而提高数据传输的效率4.所有指令都可以根据前面指令执行结果,决定是否执行,以提高指令执行的效率中断中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。中断屏蔽:所谓中断屏幕蔽是指通过设置相应的中断屏蔽位,禁止响应某个中断。这样做的目的,是保证在执行一些重要的程序中不响应中断,以免造成迟缓而引起错误DMA(DirectMemoryAccess):计算机与外设之间的联系一般通过两种方法:一是通过CPU控制来进行数据的传送;二是在专门的芯片控制下进行数据的传送。我们所说的DMA,就是不用CPU控制,外设同内存之间相互传送数据的通道,在这种方式下,外设利用DMA通道直接将数据写入存储器或将数据从存储器中读出,而不用CPU参与,系统的速度会大大增加。中断的处理过程为:关中断(在此中断处理完成前,不处理其它中断)、保护现场、执行中断服务程序、恢复现场、开中断。ARM8个基本工作模式、3种状态基本工作模式:1.User:非特权模式,大部分任务执行在这种模式2.FIQ:快速中断模式,当一个高优先级(fast)中断产生时将会进入这种模式,用于高速数据传输和通道处理3.IRQ:外部中断模式,当一个低优先级(normal)中断产生时将会进入这种模式,用于通常的中断处理4.Supervisor:管理模式(特权模式),当复位或软中断指令执行时将会进入这种模式,供操作系统使用的一种保护模式5.Abort:数据访问中止模式,当存取异常时将会进入这种模式用于虚拟存储及存储保护6.Undef:未定义指令中止模式,当执行未定义指令时会进入这种模式,用于支持通过软件方针硬件的协处理器7.System:系统模式,使用和User模式相同寄存器集的特权模式,用于运行特权级的操作系统任务8.Cortex特有模式:Monitor:是为了安全而扩展出的用于执行安全监控代码的模式;也是一种特权模式注:1)中断一定是异常,但异常不一定是中断。除user、system、monitor全是异常模式2)复位:上电复位、人为复位、欠压/过压复位、看门狗3)FIQ和IRQ是硬件引起的中断4)user和system使用的寄存器最少5)除用户模式外,其他处理器模式称为特权模式(monitor不清楚),在这些模式下,程序可以访问所有系统资源,也可以任意地进行处理器模式的切换。6)处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下。这时,应用程序不能够访问一些受操作系统保护的系统资源。应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器模式的切换。当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就保证在进入异常模式时,用户模式下的寄存器不被破坏。7)系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是它属于特权模式。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏8)在复位后,ARM处理器处于管理模式(supervisor)、ARM状态三种状态:1.ARM状态2.Thumb状态3.ThumbEE状态(16位和32位)ARM寄存器ARM有37个32位长的寄存器1个用作PC(programcounter)(存放指令地址)(也属于通用寄存器)1个用作CPSR(currentprogramstatusregister)5个用作SPSR(savedprogramstatusregisters)30个通用寄存器Cortex有40个32位长的寄存器多出3个寄存器,monitor模式r13_mon、r14_mon、spsr_mon注:1.通用寄存器分类:1)未分组寄存器,包括R0~R7。对于每一个未备份寄存器,在所有的处理器模式下指的都是同一个物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式使用相同的物理寄存器,可能造成寄存器中的数据被破坏2)分组寄存器,包括R8~R14:对于R8~R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。采用以下的记号来区分不同的物理寄存器:R13_modeR14_mode其中,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und对于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行R14也称作子程序连接寄存器(SubroutineLinkRegister)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值R14被称为连接寄存器,有两种特殊的作用:A.每一种处理器模式自己的物理R14中存放着当前子程序的返回地址,当通过BL调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器PC中时,子程序即返回,可通过下面两种方式实现这种子程序的返回操作:a)执行下面任何一条指令:MOVPC,LRBXLRb)在子程序入口使用下面的指令将PC保存在栈中:STMFDSP!,{registers,LR}相应地,下面的指令可以实现子程序的返回:LDMFDSP!,{registers,PC}B.当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。具体返回方式与子程序返回方式基本相同3)程序计数器PC,即R15:寄存器R15用作程序计数器(PC)。在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,位[31:1]用于保存PC;虽然可以用作通用寄存器,但是有一些指令在使用R15时有一些特殊限制,若不注意,执行的结果将是不可预料的。在ARM状态下,PC的0和1位是0,在Thumb状态下,PC的0位是0。R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节2.程序状态寄存器:CPSR可以在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器模式下都有一个专用的物理状态寄存器,称为S
本文标题:ARM体系结构笔记
链接地址:https://www.777doc.com/doc-1466446 .html