一种超标量的低功耗处理器中处理异常和中断的方法及装置与流程

文档序号:36998538发布日期:2024-02-09 12:41阅读:18来源:国知局
一种超标量的低功耗处理器中处理异常和中断的方法及装置与流程

本设计属于cpu设计领域,涉及一种超标量的低功耗处理器中处理异常和中断的方法。


背景技术:

1、为了提升cpu的指令执行效率,现代处理器较多采用超标量技术。超标量实现了单个核心内部的的多条指令并行执行,能在频率不变的情况下提升指令吞吐量。

2、异常和中断处理是超标量设计中比较重要的问题,因为异常和中断会打断当前的执行进程,影响执行效率;处理异常和中断的逻辑会增加设计的复杂度。

3、图1所示的是一种简单的超标量设计的处理器核心结构,以rob(re-orderbuffer,重排序缓冲)为界,分为取指与译码阶段、执行阶段。

4、图中rob的左侧为取指、译码两级流水线,分别负责从存储器取出指令、将指令进行识别和预处理。这两级流水线的执行过程是顺序的,与单流水线的cpu相同。

5、图中rob的右侧为执行阶段,分为单周期及乘法运算、除法运算、访存三条并行的流水线。

6、指令按原顺序来到rob之后,被存储在容量为8的fifo(first-in-first-out,先进先出)队列中,图2为rob使用的fifo队列的示意图。fifo队列有头指针(retire)和尾指针(join),分别对应着队列的头部和尾部,从retire到join,指令的年龄(在原程序中的顺序)由老到新。

7、每条rob右侧的流水线对应一个保留站,每个保留站可以存储两条指令。rob每拍选择没有被发射到保留站、没有相关性的指令中最老的一条指令,将其发射到保留站。

8、单周期及乘法运算、除法运算对应的保留站,选取有效的、操作数均准备好的指令中最老的一条进行发射到对应流水线;访存对应的保留站,等到最老的有效指令的操作数均准备好后,才将其发射到对应流水线。

9、指令的执行结果通过旁路网络送入rob的队列和保留站。

10、需要修改通用寄存器(general purpose register,gpr)或csr(control andstate register)的指令将在成为最老指令之后,将执行结果写入其中,并成为无效指令。此过程称为退休。每拍会有一条指令退休,此时retire指针会加一。

11、store类指令需要在自身成为最老指令时才可以真正执行,进行io或内存的写操作。写操作执行完后才可以退休。

12、现有技术中存在以下缺陷:

13、①处理方法复杂,难以实现,不适用低功耗设计。

14、②可能会造成过多指令被置无效,浪费已经产生的执行结果。


技术实现思路

1、本发明的目的在于克服现有技术中的不足,提供一种超标量的低功耗处理器中处理异常和中断的方法及装置,流程简单,适用于低功耗设计需求。

2、为达到上述目的,本发明是采用下述技术方案实现的:

3、第一方面,本发明提供了一种超标量的低功耗处理器中处理异常和中断的方法,包括以下步骤:

4、步骤1:获取异常信号及异常相关信息或中断信号,并进行优先级仲裁,得到优先级最高的异常或中断;

5、步骤2:仲裁出中断/异常后,获取是否存在未处理完的异常/中断,如果存在还未处理完成的更早的中断或异常,则进行嵌套判断;否则进入步骤3。

6、步骤3:获取当前指令执行的情况,基于优先级最高的异常或中断,判断哪条指令应当作为当前要处理的异常/中断的断点;

7、步骤4:确定断点之后,获取rob中指令的情况,按照规则清除指令。

8、步骤5:获取断点信息和步骤1得到的异常/中断信息,根据断点信息判断返回地址,将其存入异常/中断信息寄存器。

9、步骤6:断点指令退休。

10、进一步的,步骤1:获取异常信号及异常相关信息或中断信号,并进行优先级仲裁,得到优先级最高的异常或中断,包括:

11、步骤1.1:从中断上报线获取中断是否发生,如果发生,则获取中断信息后进入步骤2;如果没有,则进入步骤1.2。

12、步骤1.2:从译码部件、单周期及乘法运算部件、除法部件、访存部件获取是否产生异常以及异常信息。从异常信息中可以获得产生这些异常的指令的年龄,选取其中最老的指令产生的异常为要处理的异常,进入步骤2。如果没有异常发生,则退出流程。

13、进一步的,步骤2:仲裁出中断/异常后,获取是否存在未处理完的异常/中断,如果存在还未处理完成的更早的中断或异常,则进行嵌套判断;否则进入步骤3,包括:

14、嵌套判断。仲裁出中断/异常后,从异常/中断信息处理寄存器获取是否存在未处理完的异常/中断,如果从此刻有还未处理完成的更早的中断或异常,则需要进行嵌套判断;否则进入步骤3。

15、步骤2.1:从异常/中断信息处理寄存器获取是否存在未处理完的异常/中断,不存在则进入步骤3;存在未处理完的中断则进入步骤2.2;存在未处理完的异常则进入步骤2.3。

16、步骤2.2:退出流程,不处理步骤1得到的异常/中断。

17、步骤2.3:如果未处理完的异常被步骤1中获取的异常打断,将处理步骤1中获取的异常,放弃未处理完的异常。

18、进一步的,步骤3:获取当前指令执行的情况,基于优先级最高的异常或中断,判断哪条指令应当作为当前要处理的异常/中断的断点,包括:

19、步骤3.1:如果需要处理的是异常,进入步骤3.2;如果需要处理的是中断,进入步骤3.3。

20、步骤3.2:获取步骤2的异常信息,产生异常的指令定为异常的断点。

21、步骤3.3:如果需要处理的是中断,从rob中获取rob中的指令情况:

22、若rob中最老的指令为store指令,进入步骤3.4;

23、若rob中最老的指令为io读的load指令,进入步骤3.4;

24、若rob中最老的指令为halt指令,将其确定为中断断点。

25、步骤3.4:获取rob中年龄最老指令的信息:

26、如果这条指令尚未执行完成或发生异常,则等待直到它执行完成或发生异常;

27、如果这条指令执行完成,则中断断点定为此指令;

28、如果这条指令执行完成,则中断断点定为此指令,处理中断,不处理这个异常。

29、进一步的,确定中断断点的方法还包括:

30、当rob为空,等待一条指令进入rob,将其确定为中断断点;

31、最老指令有效但未执行完成或rob中只有一条有效指令,最老指令为中断断点;

32、从最老指令开始,连续k(k>1)条指令执行完成,这k条指令中最年轻的一条为中断断点。

33、进一步的,步骤4:确定断点之后,获取rob中指令的情况,按照规则清除指令,包括:

34、步骤4.1:获取步骤3确定的断点的信息:

35、若断点为异常断点,清除rob的fifo队列、所有保留站、所有流水线中比断点年轻的指令和断点本身。

36、若断点为中断断点,进入步骤4.2。

37、步骤4.2:获取中断断点信息:

38、如果中断断点是halt指令或已经正确执行完成的load指令或已经正确执行完成的io读的load指令:清除rob的fifo队列、所有保留站、所有流水线中比断点年轻的指令;

39、否则,清除rob的fifo队列、所有保留站、所有流水线中比断点年轻的指令和断点本身。

40、进一步的,步骤5:获取断点信息和步骤1得到的异常/中断信息,根据断点信息判断返回地址,将其存入异常/中断信息寄存器,包括:

41、步骤5.1:将异常/中断信息存入异常/中断信息寄存器,进入步骤5.2。

42、步骤5.2:获取断点信息:

43、若断点为异常断点,返回地址为断点本身的地址。

44、若断点为中断断点,进入步骤5.3。

45、步骤5.3:获取中断断点信息:

46、如果中断断点是halt指令或已经正确执行完成的load指令或已经正确执行完成的io读的load指令:返回地址为断点的顺序下一条指令的地址;

47、否则,返回地址为断点本身的地址。

48、步骤5.4:获取确定的返回地址,将其存入异常/中断信息寄存器。

49、进一步的,步骤6:断点指令退休,包括:

50、到断点指令退休时,异常/中断信息寄存器中的信息被更新到csr中。

51、此时rob已经被清空,异常和中断处理程序的第一条指令进入流水线入口。

52、如果断点是已经正确执行完成的io读的load指令,将其执行结果写入通用寄存器(gpr)。

53、第二方面,本发明提供一种超标量的低功耗处理器中处理异常和中断的装置,包括:

54、优先级模块:用于获取异常信号及异常相关信息或中断信号,并进行优先级仲裁,得到优先级最高的异常或中断;

55、嵌套判断模块:用于仲裁出中断/异常后,获取是否存在未处理完的异常/中断,如果存在还未处理完成的更早的中断或异常,则进行嵌套判断;否则进入断点模块;

56、断点模块:用于获取当前指令执行的情况,基于优先级最高的异常或中断,判断哪条指令应当作为当前要处理的异常/中断的断点;

57、指令清除模块:用于确定断点之后,获取rob中指令的情况,按照规则清除指令;

58、返回模块:用于获取断点信息和优先级模块得到的异常/中断信息,根据断点信息判断返回地址,将其存入异常/中断信息寄存器;

59、退休模块:用于断点指令退休。

60、第三方面,本发明提供一种超标量的低功耗处理器中处理异常和中断的装置,包括处理器及存储介质;

61、所述存储介质用于存储指令;

62、所述处理器用于根据所述指令进行操作以执行根据第一方面所述方法的步骤。

63、与现有技术相比,本发明所达到的有益效果:

64、1、本发明的流程简单,适用于低功耗设计需求。

65、2、本发明获取当前指令执行的情况,基于优先级最高的异常或中断,判断哪条指令应当作为当前要处理的异常/中断的断点,正确处理了超标量处理器出现中断异常的各种情况。

66、3、本发明尽可能保留断点之前已经执行完成的指令,避免了执行时间的浪费。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1