CN109213529B - 流水线处理器调度指令的方法、装置及流水线处理器 - Google Patents
流水线处理器调度指令的方法、装置及流水线处理器 Download PDFInfo
- Publication number
- CN109213529B CN109213529B CN201710552512.2A CN201710552512A CN109213529B CN 109213529 B CN109213529 B CN 109213529B CN 201710552512 A CN201710552512 A CN 201710552512A CN 109213529 B CN109213529 B CN 109213529B
- Authority
- CN
- China
- Prior art keywords
- pipeline
- instruction
- execution
- stage
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000000903 blocking effect Effects 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 6
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明实施例提供一种流水线处理器调度指令的方法、装置及流水线处理器。流水线处理器采用的流水线包括前端流水级和后端流水级,后端流水级包括至少两条执行流水,每个执行流水至少包括提交级。通过将流水线的后端流水级分为至少两条执行流水,可越过执行流水为不会出现例外和中断的执行流水,进入可越过执行流水中的指令不会主动要求回滚,也就不会要求回滚后续指令,从而其余执行流水里的指令越过该执行流水先进行提交处理仍然可以确保精确例外,实现了当目标指令进入提交级时,若目标指令的阻塞指令都处于可越过执行流水中,则流水线处理器直接对目标指令进行提交处理,从而避免因有序提交导致流水线阻塞,提高了指令的执行效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种流水线处理器调度指令的方法、装置及流水线处理器。
背景技术
处理器流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。流水线处理器是指采用了处理器流水线技术的处理器。指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令,从而可以提高指令的执行效率。
目前,对于由多个不同流水线的指令混合在一起构成的混合执行流程序,无论是顺序执行还是乱序执行的流水线,为了确保精确例外,均要求指令有序提交,即在指令I到达提交级准备提交时,保证其前面的指令I-1等都已提交,因此,所有指令间存在提交结构相关。
在混合执行流程序的运行过程中,由于有些执行流水中规定指令执行延迟偏长,即使后续其余执行流水的指令已经运算完成等待提交了,也会由于有序提交原则而导致提交结构相关,进而造成流水线阻塞,使得混合执行流程序执行效率低下。
发明内容
本发明实施例提供一种流水线处理器调度指令的方法、装置及流水线处理器,以解决目前为了确保精确例外,均要求指令有序提交、所有指令间存在提交结构相关,造成流水线阻塞,进而导致混合执行流程序执行效率低下的问题。
本发明实施例的一个方面是提供一种流水线处理器调度指令的方法,包括:
所述流水线处理器采用的流水线包括前端流水级和后端流水级,所述后端流水级包括至少两条执行流水,每个所述执行流水至少包括提交级;
所述流水线处理器在监测到一个指令进入提交级后,将所述进入提交级的指令作为目标指令,确定是否存在所述目标指令的阻塞指令;
若存在所述目标指令的至少一个阻塞指令,并且所有所述阻塞指令均处于可越过执行流水中,则所述流水线处理器对所述目标指令进行提交处理。
本发明实施例的另一个方面是提供一种流水线处理器调度指令的装置,包括:
所述流水线处理器采用的流水线包括前端流水级和后端流水级,所述后端流水级包括至少两条执行流水,每个所述执行流水至少包括提交级;
确定模块,用于所述流水线处理器在监测到一个指令进入提交级后,将所述进入提交级的指令作为目标指令,确定是否存在所述目标指令的阻塞指令;
处理模块,用于若存在所述目标指令的至少一个阻塞指令,并且所有所述阻塞指令均处于可越过执行流水中,则所述流水线处理器对所述目标指令进行提交处理。
本发明实施例的另一个方面是提供一种流水线处理器,采用的流水线包括前端流水级和后端流水级,所述后端流水级包括至少两条执行流水,每个所述执行流水至少包括提交级;
所述流水线处理器用于运行存储于存储器上的计算机程序,
所述流水线处理器运行所述计算机程序时实现上述任一项所述的流水线处理器调度指令的方法。
本发明实施例提供的流水线处理器调度指令的方法、装置及流水线处理器,通过将流水线的后端流水级分为至少两条执行流水,处于不同执行流水中的指令之间不存在执行结构相关,由于可越过执行流水为不会出现例外和中断的执行流水,进入可越过执行流水中的指令不会主动要求回滚,也就不会要求回滚后续指令,从而其余执行流水里的指令越过该执行流水先进行提交处理仍然可以确保精确例外,实现了当目标指令进入提交级时,若目标指令的阻塞指令都处于可越过执行流水中,则流水线处理器直接对目标指令进行提交处理,从而避免因有序提交导致流水线阻塞,提高了指令的执行效率。
附图说明
图1为本发明实施例一提供的流水线处理器调度指令的方法流程图;
图2为本发明实施例二提供的流水线的结构示意图;
图3为本发明实施例二提供的流水线处理器调度指令的方法流程图;
图4为本发明实施例三提供的流水线处理器调度指令的装置的结构示意图;
图5为本发明实施例四提供的流水线处理器调度指令的装置的结构示意图。
具体实施方式
为使本发明的技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在实际应用中,导致指令的执行效率低的原因是某些执行流水中的指令会阻塞后续指令的执行或提交,造成流水线停顿。具体阻塞情况可以分为以下3种:(1)执行流水中的某一指令与后续指令有数据相关,比如无内部互锁流水级的微处理器(Microprocessorwithout interlocked piped stages,简称MIPS)架构中使用的DIV指令和MFHI指令;(2)后续指令依然是同一执行流水中的指令,则会争用该执行流水的部件,如果该执行流水的部件只有1个,则会产生执行结构相关;(3)后续指令不是同一条执行流水中的指令,也无数据相关,但根据有序提交原则,后续指令也不能越过其前面的指令提交,因而存在提交结构相关。
例如,MIPS架构的嵌入式处理器为流水线处理器,MIPS架构嵌入式处理器中采用经典的五级流水线,流水线包括以下五个流水级:取指级、译码级、执行级、访存级和写回级。其中在写回级完成指令提交。不同的执行流水中的指令在同一流水级中所做的操作可以不同,例如,乘除指令所在的乘除流水中,指令在访存级所做的操作为执行运算,因此其执行流水中的访存级记为执行2级。对于如下由编号为I至I+32的指令构成的程序代码的指令序列,记为第一指令序列(不区分大小写,如下面程序中指令I+1是一个MFHI指令):
I:div$1,$2
I+1:mfhi$12
I+2:addu$3,$4,$5
I+3:or$6,$7,$8
I+4:and$9,$10,$11
…
I+32:subu$11,$7,$10
其中,指令I为除法指令DIV,指令I+1为读出除法结果的MFHI指令,指令MFHI为与指令DIV有数据相关的非乘除指令;后续为与乘除指令无数据相关的一些非乘除指令。MIPS流水线中,乘除指令和非乘除指令属于不同的执行流水,乘除指令的执行流水记为乘除流水,非乘除指令的执行流水记为非乘除流水,显然第一程序段为混合执行流程序。
MIPS架构的嵌入式处理器中进行乘除运算的部件多数采用迭代的方法实现。假设指令DIV在时钟周期数为N时刚进入乘除流水的执行2级进行迭代运算,则指令MFHI最快会在N+1时进入非乘除流水的访存级,迭代除法需要1-32个时钟周期完成运算,在最糟糕的情况下,指令DIV会占用乘除流水的执行2级32个时钟周期来完成运算,在N+32时进入乘除流水的写回级,此时已运算完成。因此指令MFHI在N+1时处于非乘除流水的访存级后,会等到N+32时获得指令DIV的运算结果,在N+33时进入写回级。指令DIV与其有数据相关的后续指令MFHI最多会存在31个时钟周期的延迟。处理器通过编译器调度软件的调度,可以将这两条指令调度开的,即在指令DIV与指令MFHI中间***无数据相关也无执行结构相关的其余指令,无数据相关要求不是MFHI/MFLO指令,无执行结构相关要求不是乘除法指令。第一指令序列由处理器通过编译器调度软件的调度后得到如下的第二指令序列:
I:div$1,$2
I+1:addu$3,$4,$5
I+2:or$6,$7,$8
I+3:and$9,$10,$11
…
I+31:subu$11,$7,$10
I+32:mfhi$12
在第二指令序列中,根据有序提交原则,指令要按照指令序列中的先后顺序进行提交,指令DIV后续的指令需要等待DIV指令提交完成才能开始提交。也就是说DIV与后续任意指令都会存在提交结构相关,后续任意指令均无法越过DIV指令先行开始提交。即使通过编译器调度软件将DIV与MFHI指令调度开,在顺序提交的约束下,并没有提高指令提交的效率,处理器执行指令的效率依然低下,容易产生流水线阻塞。
本发明实施例中,例外指在计算机程序的运行过程中所发生的异常事件。中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。
实施例一
图1为本发明实施例一提供的流水线处理器调度指令的方法流程图。本发明实施例针对目前为了确保精确例外,均要求指令有序提交、所有指令间存在提交结构相关,造成流水线阻塞,进而导致混合执行流程序执行效率低下的问题,提供了流水线处理器调度指令的方法。
本发明实施例中,流水线处理器的流水线结构通常包括前端流水级和后端流水级,后端流水级包括至少两条执行流水,每个执行流水至少包括提交级,其中不同的执行流水的长度可以不同。
具体地,前端流水级可以包括取指级和译码级两个流水级。在流水线处理中,处理器在前端流水级完成从存储器中读取指令和指令译码,然后将解码后的指令传送到后端流水级执行指令。
后端流水级包括多条执行流水,每条执行流水线分为若干流水级,每个流水级执行某些必需的或期望的功能,从而在将指令传递到下一个级之前处理该指令。例如,一个级可以读取一个指令,下一个级可以解码该指令,再下一个级可以执行解码后的指令。通常每个级都向更接近完成的方向移动指令。流水线可以在这个方面带来好处:即在流水线的一个部分处理第一指令的同时,流水线的第二部分在处理第二指令。这样,每次能够处理不只一个指令,以提高处理指令的效率。
如图1所示,该方法具体步骤如下:
步骤S101、流水线处理器在监测到一个指令进入提交级后,将进入提交级的指令作为目标指令,确定是否存在目标指令的阻塞指令。
其中,目标指令的阻塞指令是指按照有序提交原则需在目标指令之前完成提交处理且尚未完成提交处理的指令。
在实际应用中,在目标指令进入提交级之前,流水线处理器通过编译器调度软件进行处理,可以使得目标指令与目标指令的阻塞指令之间无数据相关。另外,处于不同执行流水中的指令之间无执行结构相关。
本实施例中,当目标指令进入提交级后,可以确保目标指令与按照有序提交原则需在目标指令之前完成提交处理的指令之间无数据相关,也无执行结构相关。
步骤S102、若存在目标指令的至少一个阻塞指令,并且所有阻塞指令均处于可越过执行流水中,则流水线处理器对目标指令进行提交处理。
其中,可越过执行流水为不会出现例外和中断的执行流水,从而使得进入可越过执行流水中的指令不会主动要求回滚,也就不会要求回滚后续指令,而只会被之前的指令要求回滚,从而使得其余执行流水里的指令可以越过该副执行流水先进行提交处理。本实施例中,若确定目标指令的所有阻塞指令均处于可越过执行流水中,则流水线处理器可以直接对目标指令进行提交处理,而无需等待阻塞指令完成提交。
本发明实施例通过将流水线的后端流水级分为至少两条执行流水,处于不同执行流水中的指令之间不存在执行结构相关,由于可越过执行流水为不会出现例外和中断的执行流水,进入可越过执行流水中的指令不会主动要求回滚,也就不会要求回滚后续指令,从而其余执行流水里的指令越过该执行流水先进行提交处理仍然可以确保精确例外,实现了当目标指令进入提交级时,若目标指令的阻塞指令都处于可越过执行流水中,则流水线处理器直接对目标指令进行提交处理,从而避免因有序提交导致流水线阻塞,提高了指令的执行效率。
实施例二
图2为本发明实施例二提供的流水线的结构示意图;图3为本发明实施例二提供的流水线处理器调度指令的方法流程图。在上述实施例一的基础上,本实施例中,如图2所示,至少两条执行流水包括:一条主执行流水和至少一条副执行流水。其中,主执行流水中的所有指令的写回目标寄存器均为通用寄存器,任一副执行流水中的各指令的写回目标寄存器的类型均相同。
本实施例中,可越过执行流水为不会出现例外和中断的副执行流水。可选地,主执行流水可以包括执行级、访存级、写回级、提交级等,副执行流水可以包括执行级、写回级、提交级等。在多数情况下,写回级若具有提交的功能,可以将写回级与提交级合并,本发明实施例中,主执行流水和副执行流水至少包括可完成指令提交处理的提交级,具体划分成的流水级的数量以及划分成哪些流水级可以参照现有技术中对流水线的流水级的划分实现,本实施例对此不做具体限定。
在图2所示流水线结构的基础上,本发明实施例中,如图3所示,该方法具体步骤如下:
步骤S201、流水线处理器从流水线中获取已经结束前端流水级、且还未进入后端流水级的第一条指令。
可选地,前端流水级有一条流水线,包括取指级和译码级。
流水线处理器在前端流水级完成取指令和对指令的译码之后,会将指令分发到后端流水级的一条执行流水中,以执行指令完成其对应的功能。
步骤S202、流水线处理器判断第一条指令在前端流水级是否产生了例外。
若该步骤中流水线处理器判断第一条指令在前端流水级产生了例外,则执行步骤S203,将第一条指令直接分发到主执行流水中;若流水线处理器判断第一条指令在前端流水级没有产生了例外,则执行步骤S204,根据第一条指令的写回目标寄存器的类型,将第一条指令分发到主执行流水或者任意一条副执行流水中。
步骤S203、流水线处理器将第一条指令分发到主执行流水中。
本实施例中,可越过执行流水中的指令在执行过程中不会产生例外。
为了确保可越过执行流水中永远不会报出例外,在可越过执行流水中的指令在执行过程中不会产生例外的基础上,若流水线处理器获取到的已经结束前端流水级、且还未进入后端流水级的第一条指令在前端流水级产生了例外,则直接将第一条指令分发到主执行流水中。
步骤S204、流水线处理器根据第一条指令的写回目标寄存器的类型,将第一条指令分发到主执行流水或者任意一条副执行流水中。
本实施例中,后端流水级的执行流水按照指令写回寄存的类型不同进行划分,主执行流水中的所有指令的写回目标寄存器均为通用寄存器,任一副执行流水中的各指令的写回目标寄存器的类型均相同。
例如,浮点运算指令写浮点寄存器堆,因而可以将浮点运算指令分发到同一条副执行流水,称为浮点执行流水;乘除运算指令写专门为乘除运算设置的寄存器,则可以将乘除运算指令分发到同一条副执行流水,称为乘除执行流水。
该步骤中,流水线处理器根据第一条指令的写回目标寄存器的类型,将第一条指令分发到主执行流水或者任意一条副执行流水中。例如,若第一条指令写回通用寄存器,则将第一条指令分发到主执行流水中。
通过上述步骤S202-S204,若该流水线处理器判断第一条指令在前端流水级产生了例外,则执行步骤S203,将第一条指令直接分发到主执行流水中;若流水线处理器判断第一条指令在前端流水级没有产生了例外,则执行步骤S204,根据第一条指令的写回目标寄存器的类型,将第一条指令分发到主执行流水或者任意一条副执行流水中,可以确保可越过执行流水中永远不会报出例外。
步骤S205、流水线处理器在接收到中断请求时,将中断标识标记在主执行流水中的指令上。
为了防止可越过执行流水中的指令因报出中断主动要求回滚、或者要求回滚后续指令,流水线处理器在接收到中断请求时,将中断标识标记在主执行流水中的指令上,从而确保副执行流水里的指令永远不会报中断,从而可以确保可越过执行流水里的指令永远不会报中断。
该步骤S205与上述步骤S201-S204为两个相对独立的过程,流水线处理器可以并行处理这两个相对独立的过程。通过上述步骤S201-S205,可以确保可越过执行流水永远不会报出例外和中断,以使进入可越过执行流水中的指令不会主动要求回滚,也就不会要求回滚后续指令,而只会被之前的指令要求回滚,从而使得其余执行流水里的指令可以越过该副执行流水先进行提交处理。
上述步骤S201-S205与后续步骤S206-S207是两个相对独立的处理过程,可以由流水线处理器并行进行。
另外,本实施例中,由于主执行流水可能会报出中断或例外,副执行流水中的指令不能越过主执行流水中的指令先行进行提交处理。
步骤S206、流水线处理器在监测到一个指令进入提交级后,将进入提交级的指令作为目标指令,确定是否存在目标指令的阻塞指令。
其中,目标指令的阻塞指令是指按照有序提交原则需在目标指令之前完成提交处理且尚未完成提交处理的指令。
在实际应用中,在目标指令进入提交级之前,流水线处理器通过编译器调度软件进行处理,可以使得目标指令与目标指令的阻塞指令之间无数据相关。另外,处于不同执行流水中的指令之间无执行结构相关。
本实施例中,当目标指令进入提交级后,可以确保目标指令与按照有序提交原则需在目标指令之前完成提交处理的指令之间无数据相关,也无执行结构相关。
步骤S207、若存在目标指令的至少一个阻塞指令,并且所有阻塞指令均处于可越过执行流水中,则流水线处理器对目标指令进行提交处理。
其中,可越过执行流水为不会出现例外和中断的执行流水,从而使得进入可越过执行流水中的指令不会主动要求回滚,也就不会要求回滚后续指令,而只会被之前的指令要求回滚,从而使得其余执行流水里的指令可以越过该副执行流水先进行提交处理。本实施例中,若确定目标指令的所有阻塞指令均处于可越过执行流水中,则流水线处理器可以直接对目标指令进行提交处理,而无需等待阻塞指令完成提交。
例如,基于上述第二段指令序列:
I:div$1,$2
I+1:addu$3,$4,$5
I+2:or$6,$7,$8
I+3:and$9,$10,$11
…
I+31:subu$11,$7,$10
I+32:mfhi$12
在第二指令序列中,指令I为除法DIV指令,指令I+1为不相关的ADDU指令,指令I+2为不相关的OR指令,指令I+3为不相关的AND指令。
在现有技术中,根据有序提交原则,指令要按照指令序列中的先后顺序进行提交,该DIV指令后续的指令需要等待该DIV指令提交完成才能开始提交,因此指令I、指令I+1、指令I+2和指令I+3这四条指令必须有序提交,即使该ADDU指令已经达到写回级等待提交,却由于结构相关而无法越过该DIV指令提交,导致指令执行效率低下。
而在本实施例中,乘除指令和非乘除指令属于不同的执行流水,可以将上述指令DIV分发到副执行流水,并通过上述步骤S201-S205确保该副执行流水中永不会报出例外和中断,则该副执行流水为可越过执行流水;假设第二段指令序列中的其他指令的写回寄存器均为通用寄存器,可以全部加入到主执行流水。由于通过编译器调度软件的调度,已克服指令之间存在数据相关的问题,在本实施例中,主执行流水中的指令可以越过可越过执行流水中的指令先行进行提交处理,因此,DIV指令的后续指令I+2至I+31均可以在运算完成后直接提交。也即是,该DIV指令进入乘除-副执行流水后,就不会再发出回滚流水线的请求,其后续的ADDU指令不会被DIV指令要求回滚,也就可以越过该DIV指令先行提交。因而,DIV指令不会阻塞后续主执行流水指令的执行,大大提升了指令的执行效率。
再例如,对于第三段指令序列:指令I-1为访存指令LW,指令I为除法指令DIV,指令I+1为乘法指令MULT。本发明实施例中,当指令DIV已经执行完成执行级,等待写入目标寄存器进行提交,但其前一条指令LW由于访存数据未回来,还在访存级等待,此时LW指令是可能会报出例外或者中断的,一是其可能最后由于访存出错得到一个BUS Error的例外,二是可能其可能被标上中断。一旦LW指令报出了例外或者中断,则DIV指令会被要求回滚。因此,此时DIV指令不能提交。这种情况下,由于主执行流水会报出中断或例外,副执行流水不能越过主执行流水先提交。
本发明实施例通过将流水线的后端流水级分为一条主执行流水和至少一条副执行流水,主执行流水中的所有指令的写回目标寄存器均为通用寄存器,任一副执行流水中的各指令的写回目标寄存器的类型均相同,通过判断已经结束前端流水级、且还未进入后的流水级的第一条指令在前端流水级是否产生了例外,若产生了例外,将第一条指令直接分发到主执行流水中;若没有产生了例外,则根据第一条指令的写回目标寄存器的类型,将第一条指令分发到主执行流水或者任意一条副执行流水中,可以确保可越过执行流水中永远不会报出例外;同时,通过在接收到中断请求时,将中断标识标记在主执行流水中的指令上处于不同执行流水中,确保副执行流水里的指令永远不会报中断,使得可越过执行流水为不会出现例外和中断的执行流水,因此其余执行流水里的指令越过该执行流水先进行提交处理仍然可以确保精确例外,实现了当目标指令进入提交级时,若目标指令的阻塞指令都处于可越过执行流水中,则流水线处理器直接对目标指令进行提交处理,从而避免因有序提交导致流水线阻塞,提高了指令的执行效率。
实施例三
图4为本发明实施例三提供的流水线处理器调度指令的装置的结构示意图。本发明实施例提供的流水线处理器调度指令的装置可以执行流水线处理器调度指令的方法实施例提供的处理流程。流水线处理器采用的流水线包括前端流水级和后端流水级,后端流水级包括至少两条执行流水,每个执行流水至少包括提交级。如图4所示,该装置40包括:确定模块401和处理模块402。
具体地,确定模块401用于流水线处理器在监测到一个指令进入提交级后,将进入提交级的指令作为目标指令,确定是否存在目标指令的阻塞指令。
处理模块402用于若存在目标指令的至少一个阻塞指令,并且所有阻塞指令均处于可越过执行流水中,则流水线处理器对目标指令进行提交处理。
其中,目标指令的阻塞指令是指按照有序提交原则需在目标指令之前完成提交处理且尚未完成提交处理的指令,可越过执行流水为不会出现例外和中断的执行流水。
本发明实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过将流水线的后端流水级分为至少两条执行流水,处于不同执行流水中的指令之间不存在执行结构相关,由于可越过执行流水为不会出现例外和中断的执行流水,进入可越过执行流水中的指令不会主动要求回滚,也就不会要求回滚后续指令,从而其余执行流水里的指令越过该执行流水先进行提交处理仍然可以确保精确例外,实现了当目标指令进入提交级时,若目标指令的阻塞指令都处于可越过执行流水中,则流水线处理器直接对目标指令进行提交处理,从而避免因有序提交导致流水线阻塞,提高了指令的执行效率。
实施例四
图5为本发明实施例四提供的流水线处理器调度指令的装置的结构示意图。在上述实施例三的基础上,本实施例中,至少两条执行流水包括:一条主执行流水和至少一条副执行流水;主执行流水中的所有指令的写回目标寄存器均为通用寄存器;任一副执行流水中的各指令的写回目标寄存器的类型均相同;可越过执行流水为不会出现例外和中断的副执行流水。
如图5所示,该装置40还包括:获取模块403、指令分发模块404和中断标记模块405。
具体地,获取模块403用于流水线处理器从流水线中获取已经结束前端流水级、且还未进入后端流水级的第一条指令。
指令分发模块404用于根据第一条指令的写回目标寄存器的类型,将第一条指令分发到主执行流水或者任意一条副执行流水中。
本实施例中,可越过执行流水中的指令在执行过程中不会产生例外。
指令分发模块404还用于若第一条指令在前端流水级产生了例外,则流水线处理器将第一条指令分发到主执行流水中。
中断标记模块405用于流水线处理器在接收到中断请求时,将中断标识标记在主执行流水中的指令上。
本发明实施例提供的装置可以具体用于执行上述实施例二所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过将流水线的后端流水级分为一条主执行流水和至少一条副执行流水,主执行流水中的所有指令的写回目标寄存器均为通用寄存器,任一副执行流水中的各指令的写回目标寄存器的类型均相同,通过判断已经结束前端流水级、且还未进入后的流水级的第一条指令在前端流水级是否产生了例外,若产生了例外,将第一条指令直接分发到主执行流水中;若没有产生了例外,则根据第一条指令的写回目标寄存器的类型,将第一条指令分发到主执行流水或者任意一条副执行流水中,可以确保可越过执行流水中永远不会报出例外;同时,通过在接收到中断请求时,将中断标识标记在主执行流水中的指令上处于不同执行流水中,确保副执行流水里的指令永远不会报中断,使得可越过执行流水为不会出现例外和中断的执行流水,因此其余执行流水里的指令越过该执行流水先进行提交处理仍然可以确保精确例外,实现了当目标指令进入提交级时,若目标指令的阻塞指令都处于可越过执行流水中,则流水线处理器直接对目标指令进行提交处理,从而避免因有序提交导致流水线阻塞,提高了指令的执行效率。
实施例五
本发明实施例五提供一种流水线处理器。本发明实施例所提供的流水线处理器采用的流水线包括前端流水级和后端流水级,后端流水级包括至少两条执行流水,每个执行流水至少包括提交级。
流水线处理器用于执行存储于存储器上的计算机程序。
流水线处理器运行计算机程序时实现上实施例一或者实施例二所提供的流水线处理器调度指令的方法,本实施例此处不再赘述。
可选地,至少两条执行流水包括:一条主执行流水和至少一条副执行流水。
其中,主执行流水中的所有指令的写回目标寄存器均为通用寄存器,任一副执行流水中的各指令的写回目标寄存器的类型均相同。
本发明实施例中,可越过执行流水为不会出现例外和中断的副执行流水。
本发明实施例通过将流水线的后端流水级分为至少两条执行流水,处于不同执行流水中的指令之间不存在执行结构相关,由于可越过执行流水为不会出现例外和中断的执行流水,进入可越过执行流水中的指令不会主动要求回滚,也就不会要求回滚后续指令,从而其余执行流水里的指令越过该执行流水先进行提交处理仍然可以确保精确例外,实现了当目标指令进入提交级时,若目标指令的阻塞指令都处于可越过执行流水中,则流水线处理器直接对目标指令进行提交处理,从而避免因有序提交导致流水线阻塞,提高了指令的执行效率。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,已经结束前端流水级、且还未装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种流水线处理器调度指令的方法,其特征在于,包括:
所述流水线处理器采用的流水线包括前端流水级和后端流水级,所述后端流水级包括至少两条执行流水,每个所述执行流水至少包括提交级;
所述流水线处理器在监测到一个指令进入提交级后,将所述进入提交级的指令作为目标指令,确定是否存在所述目标指令的阻塞指令;
若存在所述目标指令的至少一个阻塞指令,并且所有所述阻塞指令均处于可越过执行流水中,则所述流水线处理器对所述目标指令进行提交处理,所述可越过执行流水为不会出现例外和中断的执行流水。
2.根据权利要求1所述的方法,其特征在于,所述至少两条执行流水包括:一条主执行流水和至少一条副执行流水;
所述主执行流水中的所有指令的写回目标寄存器均为通用寄存器;
任一所述副执行流水中的各指令的写回目标寄存器的类型均相同;
所述可越过执行流水为不会出现例外和中断的副执行流水。
3.根据权利要求2所述的方法,其特征在于,所述流水线处理器在监测到一个指令进入提交级时,将所述进入提交级的指令作为目标指令,确定是否存在所述目标指令的阻塞指令之前,还包括:
所述流水线处理器从所述流水线中获取已经结束前端流水级、且还未进入后端流水级的第一条指令;
根据所述第一条指令的写回目标寄存器的类型,将所述第一条指令分发到所述主执行流水或者任意一条所述副执行流水中。
4.根据权利要求3所述的方法,其特征在于,所述可越过执行流水中的指令在执行过程中不会产生例外;
所述流水线处理器从所述流水线中获取已经结束前端流水级、且还未进入后端流水级的第一条指令之后,还包括:
若所述第一条指令在所述前端流水级产生了例外,则所述流水线处理器将所述第一条指令分发到所述主执行流水中。
5.根据权利要求2-4任一项所述的方法,其特征在于,还包括:
所述流水线处理器在接收到中断请求时,将中断标识标记在所述主执行流水中的指令上。
6.一种流水线处理器调度指令的装置,其特征在于,包括:
所述流水线处理器采用的流水线包括前端流水级和后端流水级,所述后端流水级包括至少两条执行流水,每个所述执行流水至少包括提交级;
确定模块,用于所述流水线处理器在监测到一个指令进入提交级后,将所述进入提交级的指令作为目标指令,确定是否存在所述目标指令的阻塞指令;
处理模块,用于若存在所述目标指令的至少一个阻塞指令,并且所有所述阻塞指令均处于可越过执行流水中,则所述流水线处理器对所述目标指令进行提交处理,所述可越过执行流水为不会出现例外和中断的执行流水。
7.根据权利要求6所述的装置,其特征在于,所述至少两条执行流水包括:一条主执行流水和至少一条副执行流水;
所述主执行流水中的所有指令的写回目标寄存器均为通用寄存器;
任一所述副执行流水中的各指令的写回目标寄存器的类型均相同;
所述可越过执行流水为不会出现例外和中断的副执行流水。
8.根据权利要求7所述的装置,其特征在于,还包括:
获取模块,用于所述流水线处理器从所述流水线中获取已经结束前端流水级、且还未进入后端流水级的第一条指令;
指令分发模块,用于根据所述第一条指令的写回目标寄存器的类型,将所述第一条指令分发到所述主执行流水或者任意一条所述副执行流水中。
9.根据权利要求8所述的装置,其特征在于,所述可越过执行流水中的指令在执行过程中不会产生例外;
所述指令分发模块还用于若所述第一条指令在所述前端流水级产生了例外,则所述流水线处理器将所述第一条指令分发到所述主执行流水中。
10.根据权利要求7-9任一项所述的装置,其特征在于,还包括:
中断标记模块,用于所述流水线处理器在接收到中断请求时,将中断标识标记在所述主执行流水中的指令上。
11.一种流水线处理器,其特征在于,采用的流水线包括前端流水级和后端流水级,所述后端流水级包括至少两条执行流水,每个所述执行流水至少包括提交级;
所述流水线处理器用于运行存储于存储器上的计算机程序,
所述流水线处理器运行所述计算机程序时实现权利要求1-5任一项所述的流水线处理器调度指令的方法。
12.根据权利要求11所述的流水线处理器,其特征在于,
所述至少两条执行流水包括:一条主执行流水和至少一条副执行流水;
所述主执行流水中的所有指令的写回目标寄存器均为通用寄存器;
任一所述副执行流水中的各指令的写回目标寄存器的类型均相同;
所述可越过执行流水为不会出现例外和中断的副执行流水。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710552512.2A CN109213529B (zh) | 2017-07-07 | 2017-07-07 | 流水线处理器调度指令的方法、装置及流水线处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710552512.2A CN109213529B (zh) | 2017-07-07 | 2017-07-07 | 流水线处理器调度指令的方法、装置及流水线处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109213529A CN109213529A (zh) | 2019-01-15 |
CN109213529B true CN109213529B (zh) | 2021-09-28 |
Family
ID=64991427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710552512.2A Active CN109213529B (zh) | 2017-07-07 | 2017-07-07 | 流水线处理器调度指令的方法、装置及流水线处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109213529B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111008042B (zh) * | 2019-11-22 | 2022-07-05 | 中国科学院计算技术研究所 | 基于异构流水线的高效通用处理器执行方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1881176A (zh) * | 2005-06-16 | 2006-12-20 | 国际商业机器公司 | 用于阻塞线程的方法与装置 |
CN101493761A (zh) * | 2008-01-25 | 2009-07-29 | 国际商业机器公司 | 处理器流水线处理指令的方法及相应的处理器 |
CN104615413A (zh) * | 2015-02-13 | 2015-05-13 | 赛诺威盛科技(北京)有限公司 | 一种流水线任务自适应并行方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10331451B2 (en) * | 2013-06-26 | 2019-06-25 | Intel Corporation | Method and apparatus to process SHA-2 secure hashing algorithm |
US9785538B2 (en) * | 2015-09-01 | 2017-10-10 | Nxp Usa, Inc. | Arbitrary instruction execution from context memory |
-
2017
- 2017-07-07 CN CN201710552512.2A patent/CN109213529B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1881176A (zh) * | 2005-06-16 | 2006-12-20 | 国际商业机器公司 | 用于阻塞线程的方法与装置 |
CN101493761A (zh) * | 2008-01-25 | 2009-07-29 | 国际商业机器公司 | 处理器流水线处理指令的方法及相应的处理器 |
CN104615413A (zh) * | 2015-02-13 | 2015-05-13 | 赛诺威盛科技(北京)有限公司 | 一种流水线任务自适应并行方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109213529A (zh) | 2019-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102074961B1 (ko) | 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치 | |
US9672044B2 (en) | Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays | |
US6799268B1 (en) | Branch ordering buffer | |
EP2141586B1 (en) | Managing active thread dependencies in graphics processing | |
EP0813145B1 (en) | Pipelined instruction dispatch unit in a superscalar processor | |
JP2002508564A (ja) | 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ | |
TW201224919A (en) | Execute at commit state update instructions, apparatus, methods, and systems | |
US8028180B2 (en) | Method and system for power conservation in a hierarchical branch predictor | |
US10545763B2 (en) | Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme | |
US20230367597A1 (en) | Instruction handling for accumulation of register results in a microprocessor | |
US7711932B2 (en) | Scalable rename map table recovery | |
EP3767462A1 (en) | Detecting a dynamic control flow re-convergence point for conditional branches in hardware | |
US20220027162A1 (en) | Retire queue compression | |
CN100590592C (zh) | 处理器及其指令发布方法 | |
CN109213529B (zh) | 流水线处理器调度指令的方法、装置及流水线处理器 | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
US20210042123A1 (en) | Reducing Operations of Sum-Of-Multiply-Accumulate (SOMAC) Instructions | |
US20200142697A1 (en) | Instruction completion table with ready-to-complete vector | |
US11194577B2 (en) | Instruction issue according to in-order or out-of-order execution modes | |
US11157284B1 (en) | Predicting an outcome of an instruction following a flush | |
US20230122466A1 (en) | Cache coherence validation using delayed fulfillment of l2 requests | |
US20150046689A1 (en) | Arithmetic processing unit and method for controlling arithmetic processing unit | |
US20040128488A1 (en) | Strand switching algorithm to avoid strand starvation | |
CN117806706A (zh) | 存储顺序违例处理方法、装置、电子设备及介质 | |
US8516228B2 (en) | Supporting partial recycle in a pipelined microprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |