您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 不同CPU中断技术对比专题研究
1不同CPU中断技术对比专题研究下面是本小组对不同CPU中断技术的研究列表。CPU类型包括:ARM,8051和x86。比较的方向包括:中断源中断申请方式、中断优先级管理方式、中断的处理过程、中断向量等。ARM8051x86中断源中断申请方式(1)中断的状态有3种:Inactive(不激活):没有被激活或挂起的中断Pending(挂起):这个中断可以被硬件识别或是由软件产生的,正处于等待处理器处理。Active(激活):这个中断被处理器从通用中断控制器中的中断源中识别了出来,并且正在处理这个中断,且没有处理完成。Activeandpending(激活和挂起):处理器正在处理某个中断,且通用中断控制器有一个挂起的中断,这两个中断是属于同一个中断源的。(2)内部中断寄存器中断控制器中有5个中断控制寄存器。各个中断控制寄存器及其每一位的具体用法,限于篇幅,不在表格里阐述,详见附录1。(3)外部中断寄存器a.外部中断控制寄存器(EXTINTn)arm920t有24个外部中断有几种中断触发方式,EXTINTn配置外部中断的触发类型是电平触发、边沿触发及触发的极性。8个外部中断可以由多种信号触发8051有5个中断源:2个外部中断INT0、INT1;3个内部中断T0、T1、串行口。以及2个优先级:高级中断和低级中断,由用户定义。中断源入口地址INT00003HT0000BHINT10013HT1001BH串行口0023H(1)中断请求:每一个中断设置一个中断请求触发器,记录中断源的请求标志。当中断源有请求时,该触发器置“1”;CPU响应中断请求后,该触发器清除。(2)中断识别:不同的计算机系统中,中断源的识别方式不同。例如:在Intel80X86CPU系统中,采用向量中断的方式来识别中断源。中断事件在提出中断请求的同时,通过硬件向CPU提供中断向量(即中断服务程序的入口地址)。每个2中断源中断申请方式续方式所请求。EXTINT寄存器为外部中断配制信号触发方式为电平触发或边沿触发,同时还配制信号触发极性。为了确认电平中断,由于噪声滤波必须保持EXTINTn引脚上有效逻辑电平至少40ns。b.外部中断屏蔽寄存器(EINTMASK)EXTMASK[23:4]分别对应外部中断23~4,等于1,对应的中断被屏蔽;等于0,允许外部中断。EXTMASK[3:0]保留。c.外部中断挂起寄存器(EINTPEND)中断挂起寄存器INTPND共有32位,前4位保留(因为EINT0—EINT3对应的挂起位在寄存器INTPND中),4~23位对应着一个中断源,当中断请求被响应的时候,相应的位会被设置为1。在中断服务子程序中可以通过判断EINTPND来判断哪个中断在提起申请。外设都预先指定一个中断向量号,当CPU识别出某个设备请求中断并予以响应时,中断控制逻辑就将请求设备的中断向量号送给CPU,由中断向量号自动地引导到中断服务程序。中断优先级管理ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(DataAbort)、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(PrefetchAbort)、软件中断(SWI)、未定义指令异常(Undefinedinstruction)。关于各种异常的具体介绍,详见附录2。1.低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。2.如果一个中断请求已被响应,则同级的其他中断响应将被禁止。3.如果同级的多个请求同时出现,则按CPU查询次序确定哪个中断请求被响应。当CPU接收到中断请求信号后,执行判优查询程序,逐个检测外设的中断请求标志位状态,检测的顺序是按优先级的大小排列的,最先检测到的中断源具有最高的优先级。3方式其查询次序为:外部中断0;定时中断0;外部中断1;定时中断1;串行中断。中断的处理过程当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。在进入异常中断处理程序时,要保存被中断的程序的执行现场。从异常中断处理程序退出时,要恢复被中断的程序的执行现场。ARM体系中通常在存储地址的低端固化了一个32字节的硬件中断向量表,用来指定各异常中断及其处理程序的对应关系。当一个异常出现以后,ARM微处理器会执行以下几步操作:1)保存处理器当前状态、中断屏蔽位以及各条件标志位;2)设置当前程序状态寄存器CPSR中相应的位;3)将寄存器lr_mode设置成返回地址;4)将程序计数器(PC)值设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序处执行。在接收到中断请求以后,ARM处理器内核会自动执行以上四步,程序计数器PC总是跳转到相应的固定地址。从异常中断处理程序中返回包括下面两个基本操作:1.中断源提出申请,并建立相应的中断标志(由硬件置位标志位);2.CPU结束当前指令,响应该中断申请,同时把主程序断点处地址(程序计数器PC当前值)压入堆栈,即保护断点;3.保护现场。把断点处的有关信息(如工作寄存器、累加器、标志位的内容),压入堆栈;执行中断服务程序;4.恢复现场。把保存的现场内容从堆栈弹出,以恢复寄存器和存储单元的原有内容;5.返回主程序(或调用程序),执行中断返回指令,把断点处地址通常由中断申请、中断响应、中断处理、中断返回四个过程完成。1.中断申请:当外设需要中断服务时,由硬件产生一个中断请求信号INTR发送给CPU;CPU在当前指令结束时检测INTR引脚,判断是否有中断请求。2.中断响应当检测到有中断请求且IF=1时,总线周期信号M/IOD/CW/R为000,通过总线控制逻4中断的处理过程续1)恢复被屏蔽的程序的处理器状态;2)返回到发生异常中断的指令的下一条指令处继续执行。当异常中断发生时,程序计数器PC所指的位置对于各种不同的异常中断是不同的,同样,返回地址对于各种不同的异常中断也是不同的。例外的是,复位异常中断处理程序不需要返回,因为整个应用系统是从复位异常中断处理程序开始执行的。从栈顶弹出,从断点处继续执行主程序(或调用程序)。然而,中断响应后,如果不及时清除中断请求标志,会引起中断的混乱。下面按中断请求的类型说明中断请求的撤除方法。(1)定时中断由硬件自动撤除定时中断响应后,硬件自动把标志位(TFx)清零。(2)外部中断的自动与强制撤除若外部中断以脉冲方式触发,则由硬件自动地把标志位(IEx)清零。若以电平方式触发,则需由外部电路和软件配合撤除。(3)串行中断软件撤除串行中断的标志位是TI和RI,但对这两个中断标志位不进行自动清零。因为在中断响应后,还需测试这两个标志位的状态,以判定是接收操作还是发送操作,然辑发中断响应信号INTA给中断请求设备表示应答;中断请求设备将中断号送上数据总线;系统自动进入中断响应周期,由硬件完成关中断、保存断点、取中断服务的入口地址(N*4)等一系列操作,而后转向中断服务程序执行中断处理。3.中断处理执行中断服务程序中规定的操作。4.中断返回将压栈的断点从堆栈中弹出,开中断,CPU转向被中断的主程序继续执行。5后才能清除。所以串行中断请求的撤除应使用软件方法。即:CLRTI;TI0CLRRI;RI0中断向量复位异常FFFF000000000000未定义指令异常FFFF000400000004软件中断FFFF000800000008预取异常FFFF000C0000000C数据异常FFFF001000000010外部中断异常FFFF001800000018快速中断异常FFFF001C0000001C与中断控制有关的寄存器有4个:TCON:定时控制寄存器SCON:串行口控制寄存器IE:中断允许寄存器IP:中断优先级寄存器限于表格篇幅,有关8051中断控制相关寄存器的详细说明,详见附录3。有关8051中断管理主程序,详见附录4。中断矢量表是存放中断服务程序入口地址的存储空间。实模式下,存放于存储器的低端000H--3FFH,共1K字节,每一个中断号占据4字节的空间,低2字节存放对应中断入口子程序的偏移地址,高2字节存放对应中断入口子程序的段基址。保护模式下,除了2字节的段描述符,偏移量用4字节表示,因此中断向量表中的表项由8字节组成,中断向量表也称中断描述符表,可存放于存储器的任意位置,由中断描述符表寄存器IDTR标识其在物理存储器中的位置。6附录1ARM内部中断寄存器详解中断控制器中有5个中断控制寄存器。各个中断控制寄存器及其每一位的具体用法,限于篇幅,不在表格里阐述,详见附录1。a.源挂起寄存器,SOURCEPENDING(SRCPND)REGISTER中断控制寄存器INTCON共有32位,每一位对应着一个中断源,当中断源发出中断请求的时候,就会置位源挂起寄存器的相应位。反之,中断的挂起寄存器的值为0。该寄存器中的每一位对应特定的中断源,当该位的值为:0,表示这个中断源中没有中断被请求;1,表示该中断源中有中断被请求。b.中断模式寄存器,INTERRUPTMODE(INTMOD)REGISTER中断模式寄存器INTMOD共有32位,每一位对应着一个中断源,当中断源的模式位设置为1时,对应的中断会由ARM920T内核以FIQ模式来处理。相反,当模式位设置为0时,中断会以IRQ模式来处理。默认为IRQ模式。(注意:如果中断模式为FIQ模式,INTPND和INTOFFSET寄存器是无效的,也就是说,这两个寄存器只在IRQ模式下有效。)该寄存器中的每一位对应特定的中断源。当该位的值为:0,表示这个中断源中的中断为IRQ模式;1,表示该中断源中的中断为FIQ模式。c.中断屏蔽寄存器,INTERRUPTMASK(INTMSK)REGISTER这个寄存器有32位,分别对应一个中断源。当中断源的屏蔽位设置为1时,CPU不响应该中断源的中断请求,反之,等于0时CPU能响应该中断源的中断请求。该寄存器中的每一位对应特定的中断源,当该位的值为:0,表示这个中断源没有被屏蔽,其中的中断可以被响应;1,表示该中断源被屏蔽,该中断源中的中断不可以被响应。d.中断优先权寄存器,PRIORITYREGISTER(PRIORITY)下面以CPUarm920t为例,其优先级判断分为两级。①ARBITER6所控制的REQ0,1,2,3,4,5实际上对应ARBITER0,1,2,3,4,5②REQ0在任何情况下具有最高优先级,REQ5具有最低优先级;对ARBITER1-4的仲裁组来说(仲裁组组中的不同的中断),在任何情况下:对应的仲裁组中的中断REQ0具有最高优先级,中断REQ5具有最低优先级,而ARBITER0,ARBITER5仲裁组中并没有中REQ0,REQ5。对ARBITER6仲裁组来说(不同的中断仲裁组),在任何情况下:ARBITER0具有最高优先级,即仲裁组中的中断优先级是最高的,比别的仲裁组中的中断优先级都要高。ARBITER5具有最低优先级,同理。e.中断挂起寄存器,INTERRUPTPENDING(INTPND)REGISTER中断挂起寄存器INTPND共有32位,每一位对应着一个中断源,当中断请7求被响应的时候,相应的位会被设置为1。在某一时刻只有一个位能为1,因此在中断服务子程序中可以通过判断INTPND来判断哪个中断正在被响应,在中断处理函数退出前,需要清除源挂起寄存器中对应的位,以及中断挂起寄存器中对应的位。附录2ARM处理器的中断异常详解1.复位异常当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面两种情况下。*系统上电。*系统复位。复位异常中断处理程序的主要功能:*设置异常中断向量表。*初始化数据栈和寄存器。*初始化存储系统,如系统中的MMU等。*初始化关键的I/O设备。*使能中断。*处理器切换到合适的模式。*初始化C变量,跳转到应用程序执行。2.未定义指令异常当ARM处理器执行协处理器指令时,它必须等待一个外部协
本文标题:不同CPU中断技术对比专题研究
链接地址:https://www.777doc.com/doc-7203920 .html