System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本设计属于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队列、所有保留站、所有流水线中比断点年轻本文档来自技高网...
【技术保护点】
1.一种超标量的低功耗处理器中处理异常和中断的方法及,其特征在于,包括以下步骤:
2.根据权利要求1所述的处理异常和中断的方法,其特征在于,步骤1:获取异常信号及异常相关信息或中断信号,并进行优先级仲裁,得到优先级最高的异常或中断,包括:
3.根据权利要求1所述的处理异常和中断的方法,其特征在于,步骤2:仲裁出中断/异常后,获取是否存在未处理完的异常/中断,如果存在还未处理完成的更早的中断或异常,则进行嵌套判断;否则进入步骤3,包括:
4.根据权利要求1所述的处理异常和中断的方法,其特征在于,步骤3:获取当前指令执行的情况,基于优先级最高的异常或中断,判断哪条指令应当作为当前要处理的异常/中断的断点,包括:
5.根据权利要求4所述的处理异常和中断的方法,其特征在于,确定中断断点的方法还包括:
6.根据权利要求1所述的处理异常和中断的方法,其特征在于,步骤4:确定断点之后,获取ROB中指令的情况,按照规则清除指令,包括:
7.根据权利要求1所述的处理异常和中断的方法,其特征在于,步骤5:获取断点信息和步骤1得到
8.根据权利要求1所述的处理异常和中断的方法,其特征在于,步骤6:断点指令退休,包括:
9.一种超标量的低功耗处理器中处理异常和中断的装置,其特征在于,包括:
10.一种超标量的低功耗处理器中处理异常和中断的装置,其特征在于,包括处理器及存储介质;
...【技术特征摘要】
1.一种超标量的低功耗处理器中处理异常和中断的方法及,其特征在于,包括以下步骤:
2.根据权利要求1所述的处理异常和中断的方法,其特征在于,步骤1:获取异常信号及异常相关信息或中断信号,并进行优先级仲裁,得到优先级最高的异常或中断,包括:
3.根据权利要求1所述的处理异常和中断的方法,其特征在于,步骤2:仲裁出中断/异常后,获取是否存在未处理完的异常/中断,如果存在还未处理完成的更早的中断或异常,则进行嵌套判断;否则进入步骤3,包括:
4.根据权利要求1所述的处理异常和中断的方法,其特征在于,步骤3:获取当前指令执行的情况,基于优先级最高的异常或中断,判断哪条指令应当作为当前要处理的异常/中断的断点,包括:
5.根据权利要求...
【专利技术属性】
技术研发人员:刘奔,乌绮,黄颢彦,汪争,韩文燕,张琦滨,
申请(专利权)人:无锡先进技术研究院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。