本发明专利技术的实施方式涉及用于可乱序执行指令的处理器的流水线排空。具体地,指令流水线的一个实施方式包括第一部分和第二部分。第一部分可操作用于提供有序的第一指令和第二指令;并且第二部分可操作用于响应于第二指令而从数据存储位置读取第一数据,可操作用于响应于第一指令而在读取第一数据之后向该数据存储位置写入第二数据,以及可操作用于响应于在读取第一数据之后写入第二数据而致使流水线的某些但非全部的排空。这种指令流水线可以通过仅排空部分流水线而非排空整个流水线来降低由流水线排空引起的处理时间损失和消耗的能量。
【技术实现步骤摘要】
本专利技术的实施方式总体上涉及计算机技术,并且更具体地,涉及用于可乱序执行指令的处理器的流水线排空(flush)的方法和系统。
技术实现思路
提供“
技术实现思路
”是为了以简化形式介绍下文将在“具体实施方式”中详述的概念选择。本“
技术实现思路
”并非意在标识要求保护主题的关键特征或者必要特征,也非意在限制要求保护主题的范围。指令流水线的一个实施方式包括第一部分和第二部分。第一部分可操作用于提供有序的第一指令和第二指令;并且第二部分可操作用于响应于第二指令而从数据存储位置读取第一数据,可操作用于响应于第一指令而在读取第一数据之后向该数据存储位置写入第二数据,以及可操作用于响应于在读取第一数据之后写入第二数据而致使流水线的某些但非全部的排空。在一个实施方式中,这种指令流水线可以通过仅排空部分流水线而非排空整个流水线来降低由流水线排空引起的处理时间损失和消耗的能量。例如,超标量处理器可以响应于错误推测(mis-speculative)装载指令而执行这种部分流水线排空,其中错误推测装载指令是在相对于某存储器位置的存储指令的执行之前相对于同一存储器位置而执行的装载指令,其中在指令顺序中,存储指令在装载指令之前到来。处理器可以这样来执行这种部分流水线排空从重排序缓冲区重新装载指令发布队列,使得流水线的取指-译码部分无需刷新并因此不进行刷新。附图说明图1是具有指令流水线的超标量处理器的实施方式的框图。图2是图1的指令流水线的一个实施方式的框图,其中详细示出了存储-装载流水线分支的一个实施方式。图3是相对于同一存储器位置的存储和装载指令的按序执行的流程图。图4是相对于同一存储器位置的存储和装载指令的乱序执行的流程图。图5是在其间或之前执行相对于存储器位置的装载指令的操作状态期间的、图2 的指令流水线的实施方式的框图。图6是图5的操作状态之后的、在其间发布相对于同一存储器位置的存储指令的操作状态期间的、图2的指令流水线的实施方式的框图。图7是图6的操作状态之后的、在其间由于错误推测而标记先前执行的装载指令的操作状态期间的、图2的指令流水线的实施方式的框图。图8是图7的操作状态之后的、在其间排空流水线的部分而非全部的操作状态期间的、图2的指令流水线的实施方式的框图。图9是图8的操作状态之后的、在其间利用重排序缓冲区中存储的指令重新填入指令发布队列的操作状态期间的、图2的指令流水线的实施方式的框图。图10是图9的操作状态之后的、在其间指令流水线的操作返回正常的操作状态期间的、图2的指令流水线的实施方式的框图。图11是包括具有图2的指令流水线的实施方式的超标量处理器的实施方式的计算机系统的实施方式的框图。具体实施例方式超标量处理器可以包括指令流水线,其可操作用于同时乱序执行多个(例如,4 个)程序指令,其中“乱序”是指按照不同于指令在程序中所排次序的顺序。通过同时乱序执行多个指令,超标量处理器能够比只能按序执行指令或者每次只能执行一条指令的处理器更快地执行软件或固件程序。图1是具有指令流水线10的超标量处理器8的实施方式的框图。如下文所述,与传统指令流水线相比,通过响应于引致排空的事件而仅仅排空流水线的部分,指令流水线 10可以降低流水线排空延迟和能耗。指令流水线10包括取指-译码部分12、指令队列部分14、指令发布部分16以及指令执行部分18。取指-译码部分12包括指令取回(IF)级20、指令译码(ID)级22以及寄存器映射(RM)级对。IF级20按照程序顺序从程序存储器(图1中未示出)取回程序指令,其中程序顺序可以是指令存储在存储器中的顺序(在执行分支指令时会出现例外),并且IF级20按照取回指令的顺序将这些指令提供给ID级22。例如,程序计数器(图1中未示出)存储程序存储器的地址,并且在每个时钟周期期间递增(或者递减)该地址,使得IF级20从顺序的地址取回程序指令。被执行的分支可能导致以非顺序地址装载程序计数器;但是一旦重新装载,程序计数器再次在每个时钟周期期间递增(或者递减)地址,使得IF级20再次从顺序地址(即,按照程序顺序)取回指令,直到下一被执行的分支。ID级22按照接收自IF级20的顺序来译码取回的指令。RM级M通过如下方式来防止潜在的物理存储器冲突如果一个指令附近的(例如,10条指令之内)先前指令调用了至少一个相同的物理寄存器,则重新映射该指令所调用的处理器物理寄存器(图1中未示出)。例如,假设“加”指令调用物理寄存器R0,并且按照程序顺序在该“加”指令之前5条的“减”指令也调用R0。如果确保这些指令按照程序顺序执行,则不会发生寄存器冲突。但是,因为超标量处理器8可能乱序执行这些指令,并且甚至可能同时执行这些指令,因此RM级22将“加”指令重新映射到未被任何其他附近的先前指令调用的另一物理寄存器Ι η(例如,R23)。指令队列部分14包括指令进入队列(EQ)级沈,其包括下文结合图2进一步讨论的一个或多个指令队列。指令发布部分16包括指令发布(1 级观,其将来自EQ级沈的指令发布至指令执行部分18。IS级观可以同时发布多条指令,并且如果指令在按照程序顺序的先前指令之前准备好被执行,还可以乱序发布指令。例如,“加”指令可将两个目前可用的值加在一起,但是先前的“减”指令可将一个值从尚不可用的另一个值中减去。因此,为了加速指令执行,IS级洲并非在发布任何后续指令之前等待另一减法值变为可用,而是可以在向指令执行部分发布“减”指令之前向指令执行部分18发布“加”指令,即使按照程序顺序“减”指令在“加”指令之前。指令执行部分18包括一个或多个指令执行分支3(^-3(^其每一个能够与其他分支并行地执行各自的指令,并且能够并行地引退(retire)指令。例如,如果流水线10能够同时执行四个指令,则流水线可以包括四个或更多指令执行分支30。此外,每个分支30可以专用于特定类型的指令。例如,分支30可以专用于执行调用将对数据执行的数学运算的指令(例如,加、减、乘、除),另一分支30可以专用于执行调用访问高速缓存或其他存储器的指令(例如,数据装载、数据存储)。此外,每个分支30可以在按照程序顺序位于已执行指令之前的所有执行也被引退或者准备好被引退之后,引退该已执行指令。作为引退指令的一部分,分支30从EQ级沈中的所有队列中移除指令。仍然参考图1,描述了流水线10的一个操作模式。在流水线10的第一周期期间,IF级20按照程序顺序从程序指令存储器(图1中未示出)取回一个或多个指令。在流水线10周期的下一周期期间,ID级22对接收自IF级20的一个或多个指令进行译码。在流水线10周期的下一周期期间,RM级M适当地对接收自ID级22的一个或多个已译码指令的物理寄存器进行重映射。在流水线10的下一周期期间,EQ级沈从RM级M接收一个或多个经重映射的指令,并将其存储在一个或多个队列中。在流水线10的下一周期期间,IS级观向一个或多个相应的指令执行分支30发布来自EQ级沈的一个或多个指令。在流水线10的下一周期期间,从IS级观接收相应指令的每个指令执行分支30 执行该指令。继而,在流水线10的后续周期期间,执行相应指令的每个分支30引退该指令。上述序列通常是重复的,直到处理器8例如停止运行程序、执行分支或者遇到流水线排空条件。图2是图1的指令流本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:孙红霞,吴永强,王凯峰,朱鹏飞,
申请(专利权)人:世意法北京半导体研发有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。