一种CPU新型寄存器体系结构及其中断处理方法
技术领域
本发明涉及一种CPU新型寄存器体系结构及CPU新型寄存器体系结构的中断处理方法。
背景技术
寄存器是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问,只是为内部电路实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。
在计算机领域,寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制寄存器。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量。
寄存器分:1、数据寄存器-用来储存整数数字;2、地址寄存器-持有存储器地址,用来访问存储器;3、通用目的寄存器,可以保存数据、地址,也就是说它们是结合数据/地址寄存器的功用;4、浮点寄存器,用来储存浮点数字;5、常数寄存器,用来持有只读的数值(例如0、1、圆周率等等);6、向量寄存器,用来储存由向量处理器运行SIMD(Single Instruction,Multiple Data)指令所得到的数据;7、特殊目的寄存器-储存CPU内部的数据,像是程序计数器(或称为指令指针)、堆栈寄存器以及状态寄存器(或称微处理器状态字组);8、指令寄存器(instruction register),储存现在正在被运行的指令;9、索引寄存器(indexregister),是在程序运行时用来更改运算对象地址之用。
CPU中断为这样一个过程:在特定的事件(中断源,也称中断请求信号)触发下引起CPU暂停正在运行的程序(主程序),转而先去处理一段为特定事件而编写的处理程序(中断处理程序),等中断处理程序处理完成后,再回到主程序被打断的地方继续运行。当CPU接受中断时,只需暂停一个或几个周期而不执行处理程序的中断,称为简单中断。中断又可分为屏蔽中断和非屏蔽中断两类,可由程序控制其屏蔽的中断称为屏蔽中断或可屏蔽中断,屏蔽时,处理机将不接受中断,反之,不能由程序控制其屏蔽,处理机一定要立即处理的中断称为非屏蔽中断或不可屏蔽中断,非屏蔽中断主要用于断电、电源故障等必须立即处理的情况。处理机响应中断时,不需执行查询程序,由被响应中断源向CPU发向量地址的中断称为向量中断,反之为非向量中断,向量中断可以提高中断响应速度。
一方面,有了中断功能,计算机系统就可以使CPU和外设同时工作,使系统可以及时地响应外部事件;而且有了中断功能,CPU可允许多个外设同时工作,这样就大大提高了CPU的利用率,也提高了数据输入、输出的速度。另一方面,有了中断功能,就可以使CPU及时处理各种软硬件故障;计算机在运行过程中,往往会出现事先预料不到的情况或出现一些故障,如电源掉电、存储出错,运算溢出等等,计算机可以利用中断系统自行处理,而不必停机或报告工作人员。
根据中断源的不同,中断常分为两大类:硬件中断和软件中断。按照事件发生的顺序,中断过程包括:①中断源发出中断请求;②判断当前处理机是否允许中断和该中断源是否被屏蔽;③优先权排队;④处理机执行完当前指令或当前指令无法执行完,则立即停止当前程序,保护断点地址和处理机当前状态,转入相应的中断服务程序;⑤执行中断服务程序;⑥恢复被保护的状态,执行“中断返回”指令回到被中断的程序或转入其他程序。上述过程中前四项操作是由硬件完成的,后两项是由软件完成的。
发明内容
为了提高CPU响应中断的速度,本发明旨在提供一种CPU新型寄存器体系结构及其中断处理方法,其所采用的技术方案是:
一种CPU新型寄存器体系结构,包括寄存器阵列、初值备份寄存器阵列。所述新型寄存器体系结构由寄存器组成,所述寄存器分专用寄存器和通用寄存器,所述专用寄存器包括程序计数器(PC)、栈指针寄存器、堆指针寄存器以及状态寄存器。所述寄存器组由若干寄存器组成。所述寄存器阵列包括由地址选通信号选通的寄存器组,所述寄存器组包括一组基础寄存器组、N组中断寄存器组。所述初值备份寄存器阵列包括由地址选通信号选通的初值备份寄存器组,所述初值备份寄存器组包括一组基础寄存器组、N组中断寄存器组。所述选通的寄存器阵列中的寄存器组内的寄存器由不同的有关寄存器的指令选中。读写电路完成对寄存器的访问。所述初值备份寄存器阵列可以自动将本身的内容赋予寄存器阵列中相应的寄存器。
一种CPU新型寄存器体系结构的中断处理方法:
将中断优先级作为地址译码器的输入,形成地址选通信号,寄存器阵列由地址选通信号选通某一寄存器组,由不同的有关寄存器的指令选中此寄存器组中的某些寄存器,由读写电路对寄存器进行访问,从而实现对某些寄存器数据的读写;与此同时,此地址选通信号选中初值备份寄存器阵列中相应的初值备份寄存器组,初值备份寄存器阵列的内容在中断处理过程不能修改。
当有中断响应时,根据中断优先级访问相应的寄存器组,程序执行相应的中断服务程序;当从中断服务程序返回时,初值备份寄存器阵列相应的中断寄存器组自动地将本身的内容赋予寄存器阵列中中断寄存器组,同时返回使用本中断服务程序执行前所使用的寄存器组。
本发明提供的CPU新型寄存器体系结构及其中断处理方法法避免了中断时需要保存现场以及返回时需恢现场的操作,从而加快中断处理过程。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例寄存器阵列体系结构示意图;
图2为本发明实施例初值备份寄存器阵列体系结构示意图;
图3中断优先级控制输入电路逻辑(1);
图4中断优先级控制输入电路逻辑(2);
图5中断优先级控制输入电路逻辑(3);
图6中断优先级控制输入电路逻辑(4);
图7中断优先级控制输入电路逻辑(5);
图8中断优先级控制输入电路逻辑(6)。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
CPU新型寄存器体系结构,包括寄存器阵列、初值备份寄存器阵列;
如图1所示,所述寄存器阵列包括由地址选通信号选通的寄存器组,所述寄存器组包括一组基础寄存器组、N组中断寄存器组;所述基础寄存器组由M个专用寄存器和P个通用寄存器构成,所述专用寄存器包括PC寄存器、堆指针寄存器、栈指针寄存器以及一些其他的专用寄存器。将中断优先级作为地址译码器的输入,形成地址选通信号,寄存器阵列由地址选通信号选通某一寄存器组,由不同的有关寄存器的指令选中此寄存器组中的某些寄存器,或者通过CPU局部地址总线的方式选通某一寄存器组实现对某个寄存器的访问,由读写电路对寄存器进行访问,从而实现对某个寄存器的访问。
如图2所示,所述初值备份寄存器阵列包括由地址选通信号选通的初值备份寄存器组,所述初值备份寄存器组包括一组基础寄存器、N组中断寄存器组。同样将中断优先级作为地址译码器的输入,选通某一寄存器组,或者通过CPU局部地址总线的方式选通某一寄存器组实现对某个寄存器的访问。初值备份寄存器阵列中的中断寄存器组可以自动地将本身的内容赋予寄存器阵列中相应的中断寄存器组。
CPU新型寄存器体系结构的中断处理方法,步骤如下:
⑴在非中断的场景下,可以初始化寄存器阵列中的基础寄存器中的数据;同时初始化一段映像内存,通过将映像内存中的数据读入寄存器阵列中中断寄存器组的任意寄存器和相应的初值备份寄存器阵列中中断寄存器组的任意寄存器的方法,初始化中断寄存器组。更改这些中断寄存器组的内容一定在非中断的场景下进行。可以按照需要对基础寄存器组的PC寄存器、堆指针寄存器、栈指针寄存器、中断屏蔽寄存器和中断优先级控制器进行初始化,控制器更改这些寄存器的内容一定在非中断的场景下进行。
⑵每执行一条指令,控制器在第一个机器周期的第一个时钟脉冲送出一个取反信号,并将此取反信号延时半个PLL时钟周期(因为PLL时钟周期比CPU时钟周期快,延时半个PLL时钟周期而不是延时半个CPU时钟周期是为了让控制输出的信号在一个CPU时钟周期内稳定下来,以下都是基于同样的考虑),两个信号相或,得到一个向上的脉冲,此脉冲叫前端脉冲;控制器在每执行一条指令的最后一个机器周期的最后一个时钟脉冲送出一个取反信号,并将此取反信号延时半个PLL时钟周期,两个信号相或,得到一个向上的脉冲,此脉冲叫后端脉冲;控制器在每执行RETI(中断返回)指令的最后一个机器周期的最后一个时钟脉冲送出一个取反信号,并将将此取反信号延时半个PLL时钟周期,两个信号相或,得到一个向上的脉冲,此脉冲叫RETI脉冲。
⑶无中断时,控制器通过控制线只选择使用基础寄存器组中的寄存器。
⑷有中断时,中断请求信号经过中断屏蔽寄存器处理,形成中断请求输入信号,中断信号经过中断优先级选择,形成中断输入信号,中断输入信号在前端脉冲的上升沿输出,变成中断信号,输出规则是如果哪位有中断请求,则相应位的中断输入信号就输出,其余位保持不变,以此形成中断信号;中断信号经过中断优先级判定,形成中断输出信号:a、只有一个中断时,则只有相应优先级的中断信号有变化;b、有多个中断请求时,则只有优先级最高的中断信号有变化。然后此中断输出信号在后端脉冲的上升沿输出,形成中断优先级地址选通信号。
⑸由中断优先级形成的地址选通信号选择和中断优先级相应的寄存器组,相应的中断服务程序使用此寄存器组中的寄存器。
⑹当中断服务程序返回时,首先自动地将初值备份寄存器组中相应的中断寄存器组的内容赋予相应的中断寄存器组中,然后形成RETI脉冲,在此脉冲的上升沿中断优先级地址选通信号中和此中断服务程序相对应的那位寻址信号取反,完成中断服务程序返回。
如图3~图8所示,下面介绍本发明的一个实施例:
⑴如图中断优先级控制输入电路逻辑(4)所示的U41为17组寄存器,由这些寄存器组构成寄存器阵列,每组寄存器分专用寄存器和通用寄存器,专用寄存器包括程序计数器(PC)、栈指针寄存器和堆指针寄存器等;寄存器组分1组基础寄存器组和16组中断寄存器组,由Col_Addr_Register0到Col_Addr_Register15作为地址输入,由地址选通信号选通寄存器阵列和初值备份寄存器阵列某一寄存器组,由不同的有关寄存器的指令选中这些寄存器组中的某些寄存器,并通过读写电路完成寄存器数据的访问。在上电开始时在非中断的场景下,用户程序或微程序通过初始化一段映像内存,通过将映像内存中的数据读入寄存器阵列中中断寄存器组的任意寄存器和相应的初值备份寄存器阵列中中断寄存器组的任意寄存器的方法,初始化中断寄存器组。用户程序或微程序也可以按照需要对基础寄存器组的PC寄存器、堆指针寄存器、栈指针寄存器、中断屏蔽寄存器和中断优先级控制器进行初始化,更改这些寄存器的内容一定在非中断的场景下进行。
⑵如中断优先级控制输入电路逻辑(6)所示,U61形成初值备份寄存器阵列,由Col_Addr_Register0到Col_Addr_Register15作为地址输入,通过地址译码电路对某一寄存器组选通,由不同的有关寄存器的指令选中此寄存器组中的某些寄存器,并通过读写电路完成寄存器数据的访问。在上电开始时由微程序初始化各组的PC值及堆/栈的初始值,然后锁定,并根据需要由程序对PC寄存器、堆指针寄存器、栈指针寄存器、中断屏蔽寄存器和中断优先级控制器进行初始化。如要更改上诉内容必须在非中断状态下进行。
⑶如中断优先级控制输入电路逻辑(5)所示,初始化程序对U47进行初始化处理,形成中断屏蔽控制。
⑷初始化程序对U49进行初始化处理,该电路能够对输入的中断信号进行优先级安排,从而使中断信号有了优先级的属性;输出的中断00_IN的优先级最高,中断15_IN的优先级最低。
⑸ALU每执行一条指令,控制器在第一个机器周期的第一个时钟脉冲送出一个取反信号,另外将此取反信号延时半个PLL时钟周期,两个信号相或,得到一个向上的脉冲,此脉冲叫前端脉冲;ALU在每执行一条指令的最后一个机器周期的最后一个时钟脉冲送出一个取反信号,另外将此取反信号延时半个PLL时钟周期,两个信号相或,得到一个向上的脉冲,此脉冲叫后端脉冲。这些脉冲的形成原理可以参考中断优先级控制输入电路逻辑(4)所示.
⑹无中断时,Col_Addr_Register_BASE为1,控制器选用基础寄存器组。
⑺有中断时,比如外部中断11有中断请求,进过中断优先级控制输入电路逻辑(5)的U47的允许,再经过U49赋予中断优先级,假如此时对应中断11_IN为1,其余为0(可以选择其他的优先级,比如也可以是中断22_IN为1,其余为0),这时中断00_IN-中断15F_IN为0100000000000000,从中断优先级控制输入电路逻辑(1)所示的U1的B口在前端脉冲的上升沿传输到中断0-中断15,由于此时只有中断11_IN为1(高电平),所以中断0-中断15为0100000000000000,经过中断优先级控制输入电路逻辑(2)、(3)所示的电路,得到中断0_out-中断15_out为0100000000000000,U12的中断输出为1,在后端脉冲的上升沿经过中断优先级控制输入电路逻辑(4)的U38,形成Col_Addr_Register0-Col_Addr_Register15为0100000000000000,同时Col_Addr_Register_BASE为1,此时选择第1组中断寄存器组,并且开始执行中断服务程序。
⑻如果在整个中断服务程序执行过程,无其他中断请求或者虽有中断请求但优先级相比之下比较低,这时CPU一直执行此中断服务程序,一直到中断返回,在执行RETI指令时,中断优先级控制输入电路逻辑(6)的U61第1组寄存器组的内容赋予中断优先级控制输入电路逻辑(4)的U41中第1组中断寄存器组的相应寄存器中;在RETI脉冲的上升沿,Col_Addr_Register1为1(高电平),所以Col_Addr_Register1取反,由1变成0,中断0-中断15变成0000000000000000,Col_Addr_Register_BASE为0,这时CPU开始使用基础寄存器组。
⑼如果这时外部中断00有中断请求,并经过中断优先级控制输入电路逻辑(5)的U47的允许,再经过U49赋予中断优先级,假如此时对应中断00_IN为1,这时中断00_IN-中断15F_IN为1100000000000000,在前端脉冲来临后,由于只有中断00_IN和中断11_IN为1(高电平),所以中断0-中断15为1100000000000000,但根据中断优先级控制输入电路逻辑(3)的电路,中断0_out-中断15_out只能是为1000000000000000,Col_Addr_Register0-Col_Addr_Register15也只能是为1000000000000000,Col_Addr_Register_BASE为1,CPU开始使用第0组寄存器组,并且此时开始执行优先级为0的中断服务程序,在执行优先级为0的中断服务程序的RETI指令时,中断优先级控制输入电路逻辑(6)的U61第0组寄存器组的内容赋予中断优先级控制输入电路逻辑(4)的U41中第0组中断寄存器组的相应寄存器中,在RETI脉冲作用下,中断0-中断15又变成0100000000000000,中断优先级控制输入电路逻辑(2)中的中断输出为1,中断0_out-中断15_out又为0100000000000000,在后端脉冲的上升沿来临时Col_Addr_Register0-Col_Addr_Register15为0100000000000000,从而又开始执行优先级为1的中断服务程序。
⑽如果在执行优先级为1的中断服务程序时,再无其他中断请求或者虽有中断请求但优先级相比之下比较低,则执行完此中断服务程序后,转入⑻;否则又可以执行其他的高优先级中断。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。