CN118012509A - 清空流水线的方法、处理器、芯片及电子设备 - Google Patents
清空流水线的方法、处理器、芯片及电子设备 Download PDFInfo
- Publication number
- CN118012509A CN118012509A CN202410152986.8A CN202410152986A CN118012509A CN 118012509 A CN118012509 A CN 118012509A CN 202410152986 A CN202410152986 A CN 202410152986A CN 118012509 A CN118012509 A CN 118012509A
- Authority
- CN
- China
- Prior art keywords
- pipeline operation
- flush
- flushing
- pipeline
- time
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000011010 flushing procedure Methods 0.000 claims abstract description 310
- 238000006243 chemical reaction Methods 0.000 claims abstract description 55
- 238000013507 mapping Methods 0.000 claims description 26
- 230000008859 change Effects 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 description 32
- 230000008569 process Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 11
- 230000010076 replication Effects 0.000 description 8
- 238000011084 recovery Methods 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Advance Control (AREA)
Abstract
本申请实施例提供一种清空流水线的方法、处理器、芯片及电子设备,其中方法包括:在处理器需要清空流水线时,初始确定清空流水线操作的类型;所述清空流水线操作的类型分为:用于在第一异常情况清空流水线的第一清空流水线操作,以及用于在第二异常情况清空流水线的第二清空流水线操作;如果初始确定的清空流水线操作的类型为第一清空流水线操作,根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换;若判断进行清空流水线操作的类型转换,将第二清空流水线操作,作为最终确定的清空流水线操作,使用第二清空流水线操作清空流水线。本申请实施例可以提高处理器清空流水线的效率。
Description
技术领域
本申请实施例涉及处理器技术领域,具体涉及一种清空流水线的方法、处理器、芯片及电子设备。
背景技术
处理器可以利用流水线(pipeline)技术提高处理器处理指令的性能,例如,流水线技术允许处理器将指令的处理过程划分为多个阶段,并允许处理器同时处理多条指令,以提高处理器的指令吞吐量。
处理器在利用流水线处理指令的过程中可能会发生异常情况,因此需要通过清空流水线操作,来清除流水线中尚未处理完的指令,并使得处理器恢复到正确的状态,以重新开始处理指令。可见,清空流水线是处理器处理异常情况的一种机制,能够保障处理器的指令处理正确性。在此背景下,如何提高处理器清空流水线的效率,成为了本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本申请实施例提供一种清空流水线的方法、处理器、芯片及电子设备,以提高处理器清空流水线的效率。
为实现上述目的,本申请实施例提供如下技术方案。
第一方面,本申请实施例提供一种清空流水线的方法,包括:
在处理器需要清空流水线时,初始确定清空流水线操作的类型;所述清空流水线操作的类型分为:用于在第一异常情况清空流水线的第一清空流水线操作,以及用于在第二异常情况清空流水线的第二清空流水线操作;
如果初始确定的清空流水线操作的类型为第一清空流水线操作,根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换;
若判断进行清空流水线操作的类型转换,将第二清空流水线操作,作为最终确定的清空流水线操作,使用第二清空流水线操作清空流水线。
第二方面,本申请实施例提供一种处理器,包括:初始判定电路、最终判定电路、第一清空流水线操作控制电路、和第二清空流水线操作控制电路;
初始判定电路,用于在处理器需要清空流水线时,初始确定清空流水线操作的类型;所述清空流水线操作的类型分为:用于在第一异常情况清空流水线的第一清空流水线操作,以及用于在第二异常情况清空流水线的第二清空流水线操作;
最终判定电路,用于如果初始判定电路初始确定的清空流水线操作的类型为第一清空流水线操作,则根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换;若判断进行清空流水线操作的类型转换,则将第二清空流水线操作,作为最终确定的清空流水线操作;
其中,最终判定电路在最终确定的清空流水线操作为第二清空流水线操作时,使能第二清空流水线操作控制电路执行第二清空流水线操作,以清空流水线;最终判定电路在最终确定的清空流水线操作为第一清空流水线操作时,使能第一清空流水线操作控制电路执行第一清空流水线操作,以清空流水线;
第一清空流水线操作控制电路为执行第一清空流水线操作的电路,第二清空流水线操作控制电路为执行第二清空流水线操作的电路。
第三方面,本申请实施例提供一种芯片,包括:如上述第二方面所述的处理器。
第四方面,本申请实施例提供一种电子设备,包括:如上述第三方面所述的芯片,或者,如上述第二方面所述的处理器。
本申请实施例提供的处理器清空流水线的方案可以在处理器需要清空流水线时,初始确定清空流水线操作的类型;其中,清空流水线操作的类型分为:用于在第一异常情况清空流水线的第一清空流水线操作,以及用于在第二异常情况清空流水线的第二清空流水线操作。如果初始确定的清空流水线操作的类型为第一清空流水线操作,则说明此时发生第一异常情况,但是区别于在发生第一异常情况时直接使用适应的第一清空流水线操作的方式,本申请实施例可以进一步根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换;从而在判断进行清空流水线操作的类型转换时,将初始确定的第一清空流水线操作变更为第二清空流水线操作,将第二清空流水线操作,作为最终确定的清空流水线操作,从而使用第二清空流水线操作清空流水线。
也就是说,在发生第一异常情况,初始确定第一清空流水线操作时,本申请实施例可以进一步考虑第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,以选择是否将第一清空流水线操作变更为第二清空流水线操作;从而在考虑第一清空流水线操作和第二清空流水操作的完成时间的情况下,如果进行清空流水线操作的类型转换,则意味着转换后的第二清空流水线操作相比于转换前的第一清空流水线操作,能够提升清空流水线的效率。可见,本申请实施例提供的清空流水线的方案,可以在考虑第一清空流水线操作和第二清空流水操作的完成时间的情况下,将在第一异常情况适用的第一清空流水线操作,变更为在第二异常情况适用的第二清空流水线操作,从而在第一异常情况下使用第二清空流水线操作来加速清空流水线,提升清空流水线的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的流水线的多个阶段的示例图。
图2为本申请实施例提供的处理器的流水线结构示例图。
图3为本申请实施例提供的提交队列的示例图。
图4为本申请实施例提供的清空流水线的方法流程图。
图5为本申请实施例提供的第一清空流水线操作在各个时钟周期的操作示例图。
图6为本申请实施例提供的第二清空流水线操作在各个时钟周期的操作示例图。
图7为本申请实施例提供的清空流水线的另一方法流程图。
图8为本申请实施例提供的处理器用于清空流水线的结构示例图。
图9为本申请实施例提供的处理器用于清空流水线的另一结构示例图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)等处理器(具体可以是处理器的核心)可以使用流水线技术实现多条指令的并行处理,并结合使用分支预测、乱序执行等技术提升流水线的执行效率。流水线可以将处理器处理指令的过程划分为多个阶段,作为一个示例,图1示例性的示出了本申请实施例提供的流水线的多个阶段的示例图,如图1所示,该多个阶段可以包括:取指阶段101、译码阶段102、执行阶段103、访存阶段104和写回阶段105。
其中,取指阶段101,用于从缓存中获取指令。需要说明的是,如果缓存中未存储处理器需要获取的指令,则可以将内存中处理器需要获取的指令替换到缓存中,并从缓存中获取指令。
译码阶段102,用于对指令进行译码处理,得到译码后的指令。译码后的指令可以是可由处理器执行的操作信息,例如操作码、操作数和控制字段所形成的微指令。
执行阶段103,用于对译码后的指令执行运算,产生指令的执行结果。指令的执行结果可与指令功能相对应,指令功能可以涉及访存(访问内存)、逻辑运算、指令跳转等。
访存阶段104,用于在指令功能涉及访存时,执行访存操作,例如将数据写入内存或者从内存读取数据。
写回阶段105,用于将指令的执行结果写回到寄存器或内存。
为便于理解处理器的流水线过程,图2示例性的本申请实施例提供的处理器的流水线结构示例图,如图2所示,处理器的流水线结构可以包括:取指单元201、译码单元202、发射单元203、寄存器重命名单元204、执行单元205、提交队列206、访存单元207、以及写回单元208。需要说明的是,处理器的上述结构可以视为是集成在处理器内部的逻辑电路单元。
结合图1和图2所示,取指单元201可用于在取指阶段从缓存中获取指令,取指单元201获取的指令可以送入译码单元202。
译码单元202可用于在译码阶段对指令进行译码处理,得到译码后的指令。译码单元可以是译码器,例如多个译码器形成的译码器组,处理器可以设置一个或多个译码器组用于译码阶段的指令译码。
译码单元202在译码阶段译码后的指令可以发射到执行单元205,以便执行单元205在执行阶段对译码后的指令执行运算。基于此,译码单元202译码后的指令可以送入发射单元203,从而通过发射单元203将译码后的指令发射到执行单元205。
同时,为解决数据相关性的问题,以允许指令能够在执行阶段并行执行,处理器可以通过寄存器重命名单元204对进入发射的指令进行寄存器重命名;为便于说明,进入发射单元203等待发射到执行单元205的指令可以称为进入发射的指令;也就是说,译码后的指令在发射到执行阶段之前可以进入发射(即进入到发射单元203等待发射)。
寄存器重命名单元204对进入发射的指令进行寄存器重命名是指:将指令的逻辑寄存器映射到物理寄存器,从而通过为每个指令分配新物理寄存器,以避免数据相关性引起的流水线停滞问题。
需要说明的是,数据相关性是指一个指令需要等待之前指令的执行结果才能继续执行的情况,通过对进入发射的指令进行寄存器重命名,可以避免数据相关性带来的流水线停滞;即每个指令的逻辑寄存器可以被分配新物理寄存器,即使多个指令使用相同逻辑寄存器,仍然可以因为多个指令分配的物理寄存器不同而实现多个指令的并行执行。
其中,逻辑寄存器是面向程序员的寄存器,是在处理器的体系结构层次上定义的用于程序员编程使用的寄存器,因此逻辑寄存器是一种虚拟的概念(逻辑寄存器也称为虚拟寄存器);处理器中的逻辑寄存器的数量和命名可由处理器的体系结构定义,而与底层的寄存器硬件实现无关。物理寄存器是处理器内部的实际硬件寄存器,用于存储数据和执行指令;与逻辑寄存器不同,处理器中的物理寄存器的数量是有限的,且由处理器的物理设计决定。基于此,处理器可以通过寄存器重命名的手段,将逻辑寄存器映射到物理寄存器,以便在处理器的流水线中更灵活地处理数据相关性的问题,提高指令的并行性;另外,通过逻辑寄存器和物理寄存器之间的映射关系可以使得逻辑寄存器的数量大于物理寄存器的数量,以允许处理器有效地执行指令。
寄存器重命名单元204在对进入发射的指令进行寄存器重命名后,指令的逻辑寄存器和物理寄存器的映射关系可以记录于猜测寄存器映射表。也就是说,猜测寄存器映射表可以在进入发射的指令进行寄存器重命名后,记录指令的逻辑寄存器和物理寄存器的映射关系。需要说明的是,对于进入发射的指令而言,由于指令的实际执行结果还未确定,因此寄存器重命名单元204在对进入发射的指令进行寄存器重命名时,为指令的逻辑寄存器所映射的物理寄存器是属于猜测的物理寄存器,相应的映射表称为猜测寄存器映射表。
执行单元205可在执行阶段对发射的指令执行运算,产生指令的执行结果。执行单元205可以支持乱序执行指令,即执行单元205执行指令的顺序可以不按照程序编写时的指令顺序,而是在执行阶段可以对指令进行重新排序和调度,从而尽可能的利用处理器的资源,提高指令的执行并行性。
执行单元205在执行指令时允许乱序执行,但是执行单元205执行完成的指令需要按照程序编写时的指令顺序进行提交,以保持程序的语义正确性,这一过程可称为乱序执行但按顺序提交。基于此,处理器中可以设置提交队列206,用于保存执行完成但未提交的指令的指令信息,即提交队列206可以视为是处理器中设置的存储单元,用于存储执行完成但未提交的指令的指令信息;从而,处理器可以将提交队列206所指示的未提交的指令按顺序进行提交,并将已提交的指令的指令信息从提交队列206中删除,以保障指令在乱序执行后能够按顺序提交。需要说明的是,提交是指在写回阶段等后续阶段,将指令的执行结果写回到寄存器或内存。
在一个示例中,图3示例性的示出了本申请实施例提供的提交队列的示例图,如图3所示,提交队列可以包括多个提交队列记录项,一个提交队列记录项可以记录执行完成但未提交的一个指令的指令信息。提交队列记录项记录的指令的指令信息可以包括:指令的目的逻辑寄存器,以及目的逻辑寄存器对应的旧物理寄存器和新物理寄存器。其中,指令的目的逻辑寄存器是指令执行完成后,指令的执行结果所写入的逻辑寄存器。指令的目的逻辑寄存器对应的旧物理寄存器是在指令进入发射时,指令的目的逻辑寄存器原先映射的物理寄存器;也就是说,在指令进入发射时,还未通过寄存器重命名为指令的目的逻辑寄存器分配新物理寄存器的情况下,指令的目的逻辑寄存器原先映射的物理寄存器为旧物理寄存器。指令的目的逻辑寄存器对应的新物理寄存器是在指令进入发射时,为指令的目的逻辑寄存器新分配的物理寄存器;也就是说,在指令进入发射时,通过寄存器重命名为指令的目的逻辑寄存器分配的新物理寄存器。
访存单元207可用于在访存阶段执行访存操作,实现数据在内存的写入或读取。
写回单元208可用于在写回阶段将指令的执行结果写回到寄存器或内存;写回单元208在写回阶段完成将指令的执行结果写回到寄存器或内存,可视为完成指令的提交。
在指令执行完成且提交时,处理器可以更新提交寄存器映射表,通过提交寄存器映射表记录提交的指令的逻辑寄存器和物理寄存器的映射关系,使得处理器在异常情况或其他需要回滚的情况下,能够通过提交寄存器映射表中记录的映射关系,恢复正确状态。需要说明的是,如果指令执行完成,且寄存器重命名单元在指令发射时所猜测的物理寄存器是正确的(即寄存器重命名单元在指令发射时为指令分配的新物理寄存器是正确的),则在指令提交时,处理器可以通过将猜测寄存器映射表中记录的指令的映射关系,提交到提交寄存器映射表中,以实现更新提交寄存器映射表。
上述介绍了处理器的流水线过程(即处理器利用流水线处理指令的过程),处理器在流水线过程中可能会发生异常情况而需要清空流水线,进而在清空流水线后使得处理器回滚到发生异常情况之前的状态,以重新处理指令。
其中,清空流水线可以是指将流水线中还未提交的指令进行清除,涉及将猜测寄存器映射表恢复到正确状态、回收还未提交的指令的物理寄存器等过程。
也就是说,在流水线过程发生异常情况时,为保障处理器不会继续执行可能引发错误或不一致状态的指令,处理器可以将还未提交的指令从流水线中清除;从而,在清空流水线后,可以将处理器的状态回滚到发生异常情况之前的一个稳定且正确的状态,以便重新处理指令。
可以看出,清空流水线是处理器处理异常情况的一种机制,通过提高处理器清空流水线的效率能够减少处理器由于清空流水线而产生的性能开销。也就是说,当处理器需要清空流水线时,处理器需要将流水线中还未提交的指令进行清除,并回滚到一个正确状态,以重新处理指令,这会导致处理器产生一定的性能损失,因此提高处理器清空流水线的效率,能够减少处理器由于清空流水线而产生的性能开销,从而可以提高处理器的整体性能。
基于此,本申请实施例提供处理器清空流水线的方案,以提高处理器清空流水线的效率,进而提高处理器的整体性能。作为可选实现,图4示例性的示出了本申请实施例提供的清空流水线的可选方法流程图,该方法流程可应用于处理器,参照图4,该方法流程可以包括如下步骤。
在步骤S410中,在处理器需要清空流水线时,初始确定清空流水线操作的类型。
处理器在流水线过程发生异常情况时,可以通过清空流水线操作来清空流水线。清空流水线操作具有不同的类型,适用于不同的异常情况;也就是说,不同类型的清空流水线操作可以用于在不同的异常情况下清空流水线。不同类型的清空流水线操作清空流水线的方式不同,即不同类型的清空流水线操作可以通过不同的方式,将流水线中还未提交的指令进行清除。
作为可选实现,清空流水线操作的类型可以分为:适用于第一异常情况的第一清空流水线操作,以及适用于第二异常情况的第二清空流水线操作。也就是说,第一清空流水线操作可以用于在流水线过程发生第一异常情况时,清空流水线;第二清空流水线操作可以用于在流水线过程发生第二异常情况时,清空流水线。从而,本申请实施例可以在发生第一异常情况时,初始确定清空流水线操作的类型为第一清空流水线操作,在发生第二异常情况时,初始确定清空流水线操作的类型为第二清空流水线操作。
需要说明的是,第一清空流水线操作和第二清空流水线操作清空流水线的方式可以不同。例如,第一清空流水线操作可以在流水线过程发生第一异常情况时,使用第一清空流水线操作对应的方式清空流水线;第二清空流水线操作可以在流水线过程发生第二异常情况时,使用第二清空流水线操作对应的方式清空流水线;第一清空流水线操作对应的方式不同于第二清空流水线操作对应的方式。
在步骤S411中,如果初始确定的清空流水线操作的类型为第一清空流水线操作,根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换;若否,执行步骤S412,若是,执行步骤S413。
在初始确定的清空流水线操作的类型为第一清空流水线操作时,本申请实施例可以进一步判断是否进行清空流水线操作的类型转换,如果判断进行清空流水线操作的类型转换,则意味着最终不使用第一清空流水线来清空流水线,而是转换为使用第二清空流水线来清空流水线。
作为可选实现,出于进行清空流水线操作的类型转换的目的是为了加速清空清空流水线的效率,本申请实施例可以根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,来判断是否进行清空流水线操作的类型转换。可选的,本申请实施例可以通过判断第二清空流水线操作的完成时间,是否小于第一清空流水线操作的完成时间,以实现根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,来判断是否进行清空流水线操作的类型转换。
其中,如果第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间,则说明使用第二清空流水线操作能够加速清空流水线,从而本申请实施例可以判断进行清空流水线操作的类型转换,将初始确定的第一清空流水线操作转换为第二清空流水线操作,并将第二清空流水线操作作为最终确定的清空流水线操作,使用第二清空流水线操作来清空流水线。
如果第二清空流水线操作的完成时间不小于第一清空流水线操作的完成时间,则说明使用第二清空流水操作不能够加速清空流水线,从而本申请实施例可以判断不进行清空流水线操作的类型转换,而保持使用初始确定的第一清空流水线操作来清空流水线。
在步骤S412中,将初始确定的第一清空流水线操作,作为最终确定的清空流水线操作,使用第一清空流水线操作清空流水线。
在步骤S413中,将第二清空流水线操作,作为最终确定的清空流水线操作,使用第二清空流水线操作清空流水线。
本申请实施例提供的处理器清空流水线的方案可以在处理器需要清空流水线时,初始确定清空流水线操作的类型;其中,清空流水线操作的类型分为:用于在第一异常情况清空流水线的第一清空流水线操作,以及用于在第二异常情况清空流水线的第二清空流水线操作。如果初始确定的清空流水线操作的类型为第一清空流水线操作,则说明此时发生第一异常情况,但是区别于在发生第一异常情况时直接使用适应的第一清空流水线操作的方式,本申请实施例可以进一步根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换;从而在判断进行清空流水线操作的类型转换时,将初始确定的第一清空流水线操作变更为第二清空流水线操作,将第二清空流水线操作,作为最终确定的清空流水线操作,从而使用第二清空流水线操作清空流水线。
也就是说,在发生第一异常情况,初始确定第一清空流水线操作时,本申请实施例可以进一步考虑第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,以选择是否将第一清空流水线操作变更为第二清空流水线操作;从而在考虑第一清空流水线操作和第二清空流水操作的完成时间的情况下,如果进行清空流水线操作的类型转换,则意味着转换后的第二清空流水线操作相比于转换前的第一清空流水线操作,能够提升清空流水线的效率。可见,本申请实施例提供的清空流水线的方案,可以在考虑第一清空流水线操作和第二清空流水操作的完成时间的情况下,将在第一异常情况适用的第一清空流水线操作,变更为在第二异常情况适用的第二清空流水线操作,从而在第一异常情况下使用第二清空流水线操作来加速清空流水线,提升清空流水线的效率。
作为可选实现,处理器可以在流水线过程发生以下异常情况时,需要清空流水线:
指令执行异常,指令执行异常是指处理器在利用流水线执行指令的过程中发生的计算异常(比如除零错误、访问非法内存等异常);在出现指令执行异常时,处理器需要清空流水线,进而跳转到异常处理程序,以确保指令执行异常能够被异常处理程序处理;
分支预测失败,分支预测失败是指处理器在利用流水线执行分支指令时,分支指令的分支方向发生预测错误;在分支指令的分支方向预测错误时,处理器需要清空流水线,从而回滚到分支方向预测错误之前的状态(即此时回滚的目标是将处理器状态还原到分支预测错误之前的状态),以使得处理器能够恢复到正确的分支方向上来重新处理指令。
需要说明的是,在程序执行过程中,分支指令(例如条件分支、循环分支等)会导致程序流向发生改变。为了在分支指令执行前,能够预测分支指令的分支方向,处理器可以使用分支预测技术。例如,处理器可以在译码阶段进行指令译码时,使用分支预测技术预测分支指令的分支方向;又例如,处理器可以在取指阶段之前设置分支预测阶段,从而使用分支预测技术预测分支指令的分支方向,并基于预测的分支方向产生取指阶段用于获取指令的取指请求。也就是说,分支预测的目的是在执行分支指令之前预测分支方向(比如,分支方向是跳转还是继续执行),从而处理器可以在分支方向预测正确时继续预取指令并执行后续指令;然而在执行分支指令时,如果分支方向预测错误,则需要清空流水线,将处理器回滚到分支方向预测错误之前的状态,以重新处理指令。
以流水线过程发生的异常情况分为指令执行异常(比如除零错误、访问非法内存等异常)、以及分支预测失败为例,流水线过程发生的第一异常情况可以包括指令执行异常,流水线过程发生的第二异常情况可以包括分支预测失败。从而,第一清空流水线操作可以用于流水线过程在发生指令执行异常时,清空流水线;第二清空流水线操作可以用于流水线过程在发生分支预测失败时,清空流水线。
作为可选实现,针对适用于指令执行异常的第一清空流水线操作,处理器需等待到下一个提交的指令为执行异常的指令时,使用第一清空流水线操作来清空流水线。需要说明的是,在指令执行异常的情况下,处理器并不能立刻清空流水线,而是需要等待执行异常的指令之前的指令均执行完成并提交后,才能清空流水线;也就是说,在指令执行异常的情况下,处理器需等待到下一个提交的指令为执行异常的指令时(即等待到执行异常的指令之前的指令均执行完成并提交时),才发起第一清空流水线操作来清空流水线。这是因为在指令执行异常的情况下,处理器清空流水线之后,需要通过异常处理程序来处理指令执行异常,而异常处理程序需要获得流水线发生指令执行异常之前的状态,因此需要等待执行异常的指令之前的指令均执行完成并提交后,才能使用第一清空流水线操作来清空流水线。
在一个实现示例中,处理器在提交指令时,可以使用提交指针指示下一个提交的指令,例如提交指针可以表示下一个提交的指令的位置;处理器在使用清空流水线操作时,可以通过清空流水线操作指针指示需要清除的指令,例如清空流水线操作指针可以表示需要清除的指令的位置(例如异常情况的指令的位置);从而,处理器可以在提交指针移动到清空流水线操作指针指示的位置时(即提交指针等于清空流水线操作指针时),发起适用于指令执行异常的第一清空流水线操作,从而通过第一清空流水线操作对应的方式清空流水线。
在可选实现中,第一清空流水线操作可以通过将提交寄存器映射表记录的逻辑寄存器复制到猜测寄存器映射表,并同时读取提交队列中需要清除的指令的新物理寄存器,作为回收的物理寄存器(即回收提交队列中需要清除的指令的新物理寄存器),以实现清空流水线。
提交队列中需要清除的指令可以视为是提交队列中当前发射的指令至异常情况的指令之间的指令、以及当前发射的指令和异常情况的指令;也就是说,当前发射的指令至异常情况的指令之间的指令、当前发射的指令、以及异常情况的指令需要被清除。
需要说明的是,提交队列中需要清除的指令的新物理寄存器不会被使用,因此需要将提交队列中需要清除的指令的新物理寄存器进行回收。
需要进一步说明的是,将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表是为了保证猜测寄存器映射表的正确性,例如发射指令时会更新猜测寄存器映射表中物理寄存器和逻辑寄存器的映射关系,如果指令执行错误,则需要将猜测寄存器回滚到正确的状态,此时可将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表,以使得猜测寄存器映射表回滚到指令执行错误之前的正确状态。
可以看出,第一清空流水线操作涉及将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表的操作,以及同时读取提交队列中需要清除的指令的新物理寄存器,以进行回收的操作。因此第一清空流水线操作的完成时间为:将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表的复制时间,以及读取提交队列中需要清除的指令的读取时间中的最长时间。为便于说明,本申请实施例可将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表的所用时间称为复制时间,将读取提交队列中需要清除的指令的所用时间称为读取时间,从而第一清空流水线操作的完成时间为复制时间和读取时间中的最长时间。也就是说,如果复制时间大于读取时间,则第一清空流水线操作的完成时间为复制时间;反之,如果复制时间小于读取时间,则第一清空流水线操作的完成时间为读取时间。
作为可选实现,本申请实施例可以将提交寄存器映射表记录的逻辑寄存器的数量,除以单位时钟周期所复制的逻辑寄存器的数量,得到复制时间。
在可选实现中,提交队列可以包括多个提交队列记录项,并且一个提交队列记录项可以记录执行完成但未提交的一个指令的指令信息,因此提交队列中需要清除的指令所对应的提交队列记录项的数量,可以视为是提交队列中需要清除的指令的数量,从而读取时间(读取提交队列中需要清除的指令的所用时间)可以视为是读取提交队列中需要清除的提交队列记录项的所用时间。提交队列中需要清除的提交队列记录项可以是当前发射的指令至异常情况的指令之间的指令所对应的提交队列记录项、当前发射的指令对应的提交队列记录项、以及异常情况的指令对应的提交队列记录项。从而,本申请实施例可以将提交队列中需要清除的提交队列记录项的数量,除以单位时钟周期所读取的提交队列记录项的数量,得到读取时间。
在一个示例中,图5示例性的示出了本申请实施例提供的第一清空流水线操作在各个时钟周期的操作示例图。结合图5所示,设时钟周期为T,T0为开始进行流水线操作的时钟周期,T1为之后的第一个时钟周期(即开始进行流水线操作的时钟周期之后的第一个时钟周期),T2为之后的第二时钟周期(即开始进行流水线操作的时钟周期之后的第二个时钟周期),以此类推。
假设单位时钟周期所复制的逻辑寄存器的数量为8(即在每个时钟周期能够复制8个逻辑寄存器),提交寄存器映射表中记录有80个逻辑寄存器,则第一清空流水线操作可以通过10个时钟周期,完成将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表;即第一清空流水线操作可以在T0至T9的10个时钟周期,完成将提交寄存器映射表记录的逻辑寄存器复制到猜测寄存器映射表,以完成恢复猜测寄存器映射表;相应的,复制时间的一种示例为10个时钟周期。
假设单位时钟周期所读取的提交队列记录项的数量为8(即在每个时钟周期能够读取8个提交队列记录项),提交队列中具有16个需要清除的提交队列记录项,则第一清空流水线操作可以通过2个时钟周期完成读取提交队列中需要清除的提交队列记录项,从而实现将提交队列中需要清除的提交队列记录项所记录的新物理寄存器进行回收;即第一清空流水线操作可以在T0至T1的两个时钟周期,完成读取提交队列中需要清除的指令的新物理寄存器,以实现回收新物理寄存器;相应的,读取时间的一种示例为2个时钟周期。
由于第一清空流水线操作的完成时间为复制时间和读取时间这两个时间中的最长时间,因此在图5示例中第一清空流水线操作的完成时间为复制时间,例如,第一清空流水线操作的完成时间为10个时钟周期。
上述对适用于指令执行异常(第一异常情况的一种示例)的第一清空流水线操作进行了示例介绍,下面针对适用于分支预测失败(第二异常情况的一种示例)的第二清空流水线操作进行示例介绍。
作为可选实现,针对适用于分支预测失败的第二清空流水线操作,处理器可以一边使用第二清空流水线操作清空流水线,一边继续执行未执行的指令,因此区别于第一清空流水线操作,处理器在流水线过程发生分支预测失败时,不需等待异常情况的指令之前的指令均执行完成并提交后,才使用第二清空流水线操作来清空流水线,而是可以在流水线过程发生分支预测失败时,立刻发起第二清空流水线操作,此时,下一个提交的指令可以不为异常情况的指令。也就是说,在处理器发起适用于分支预测失败的第二清空流水线操作时,提交指针可以未移动到清空流水线操作指针指示的位置(即提交指针可以不等于清空流水线操作指针)。
作为可选实现,区别于第一清空流水线操作清空流水线的方式(将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表,并同时读取提交队列中需要清除的指令的新物理寄存器进行回收),由于第二清空流水操作在执行时,处理器可以继续执行未执行的指令,此时提交寄存器映射表还处于更新状态,因此第二清空流水操作并不通过复制提交寄存器映射表来恢复猜测寄存器映射表,而是通过读取提交队列中需要清除的指令的旧物理寄存器进行恢复猜测寄存器映射表,并同时读取提交队列中需要清除的指令的新物理寄存器进行物理寄存器回收。
也就是说,第二清空流水线操作可以通过读取提交队列,一边使用提交队列中需要清除的指令的旧物理寄存器来恢复猜测寄存器映射表,一边回收提交队列中需要清除的指令的新物理寄存器,即恢复猜测寄存器映射表和回收新物理寄存器可基于读取提交队列同时实现,因此第二清空流水线操作的完成时间为读取提交队列中需要清除的指令的所用时间,例如,读取提交队列中需要清除的提交队列记录项的所用时间。也就是说,第二清空流水线操作的完成时间可以视为是读取时间;从而,本申请实施例可以将提交队列中需要清除的提交队列记录项的数量,除以单位时钟周期所读取的提交队列记录项的数量,得到第二清空流水线操作的完成时间。
在一个示例中,图6示例性的示出了本申请实施例提供的第二清空流水线操作在各个时钟周期的操作示例图。结合图6所示,假设单位时钟周期所读取的提交队列记录项的数量为8(即在每个时钟周期能够读取8个提交队列记录项),提交队列中具有16个需要清除的提交队列记录项,则第二清空流水线操作可以通过2个时钟周期完成读取提交队列中需要清除的提交队列记录项。从而,第二清空流水线操作可以在T0至T1的两个时钟周期,完成读取提交队列中需要清除的指令的旧物理寄存器进行恢复猜测寄存器映射表,以及在T0至T1的两个时钟周期,完成读取提交队列中需要清除的指令的新物理寄存器进行回收。
可见,第一清空流水线操作的完成时间为复制时间和读取时间中的最长时间,第二清空流水线操作的完成时间为读取时间,因此第二清空流水线操作的完成时间存在小于第一清空流水线操作的完成时间的情况。也就是说,如果读取时间小于复制时间,则第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间,因此在初始确定清空流水线操作的类型为第一清空流水线操作时,如果能够进一步确定第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间,则本申请实施例可以将第一清空流水线操作转换为第二清空流水线操作,来加速清空流水线的效率。
作为可选实现,基于本申请实施例提供的清空流水线的思路,本申请实施例可以在初始确定采用第一清空流水线操作进行清空流水线时(例如,在指令执行异常的异常情况下,初始确定采用第一清空流水线操作进行清空流水线),进一步判断是否进行清空流水线操作的类型转换;从而在判断进行清空流水线操作的类型转换时,视为采用第二清空流水线操作能够加速清空流水线,进而将第一清空流水线操作转换为适用于分支预测失败的第二清空流水线操作,以在指令执行异常的异常情况下使用第二清空流水线操作来清空流水线,加速清空流水线的效率。作为可选实现,图7示例性的示出了本申请实施例提供的清空流水线的另一可选方法流程图,该方法流程可应用于处理器,参照图7,该方法流程可以包括如下步骤。
在步骤S710中,判断提交指针是否等于清空流水线操作指针;若否,执行步骤S711,若是,执行步骤S713。
在步骤S711中,初始确定清空流水线操作的类型为第二清空流水线操作。
在步骤S712中,将初始确定的第二清空流水线操作,作为最终确定的清空流水线操作,使用第二清空流水线操作清空流水线。
在流水线过程发生异常情况时,处理器可以产生清空流水线操作指针,以指示需要清除的指令的位置。
如果流水线过程发生的异常情况为分支预测失败,由于不需等待异常情况的指令之前的指令均执行完成并提交后才清空流水线,因此此时下一个提交的指令不为需要清除的指令(即提交指针不等于清空流水线操作指针),处理器可发起第二清空流水线操作;从而,本申请实施例可以在判断提交指针不等于清空流水线操作指针时,初始确定清空流水线操作的类型为第二清空流水线操作,例如此时流水线过程发生分支预测失败,初始确定使用第二清空流水线操作来清空流水线。
在初始确定的清空流水线操作的类型为第二清空流水线操作时,由于第二清空流水操作在执行时,处理器可以继续执行未执行的指令,此时指令还没有提交完成,提交寄存器映射表还处于更新状态,因此本申请实施例不能进行清空流水线操作的类型转换(即不能将第二清空流水线操作转换为第一清空流水线操作),而是将初始确定的第二清空流水线操作,作为最终确定的清空流水线操作,从而使用第二清空流水线操作清空流水线。例如,在判断提交指针不等于清空流水线操作指针时,初始确定第二清空流水线操作,并将初始确定的第二清空流水线操作,作为最终确定的清空流水线操作,以读取提交队列中需要清除的提交队列记录项的旧物理寄存器,来恢复猜测寄存器映射表,以及,读取提交队列中需要清除的提交队列记录项的新物理寄存器,来回收新物理寄存器。
在步骤S713中,初始确定清空流水线操作的类型为第一清空流水线操作。
如果流水线过程发生的异常情况为指令执行异常,则需要等待执行异常的指令之前的指令均执行完成并提交后,才能清空流水线,因此在下一个提交的指令为需要清除的指令时(即提交指针等于清空流水线操作指针时),处理器才发起第一清空流水线操作;从而,本申请实施例可以在判断提交指针等于清空流水线操作指针时,初始确定清空流水线操作的类型为第一清空流水线操作,例如此时流水线过程发生指令执行异常,初始确定使用第一清空流水线操作来清空流水线。
在初始确定的清空流水线操作的类型为第一清空流水线操作时,本申请实施例并不直接使用第一清空流水线操作来清空流水线,而是进一步判断是否可以进行清空流水线操作的类型转换,以在能够进行清空流水线操作的类型转换时,将第一清空流水线操作转换为第二清空流水线操作,从而加速清空流水线的效率。
在步骤S714中,判断读取提交队列需要清除的指令的读取时间,是否小于将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表的复制时间;若否,执行步骤S715,若是,执行步骤S716。
基于第一清空流水线操作的完成时间为复制时间和读取时间中的最长时间,第二清空流水线操作的完成时间为读取时间,因此本申请实施例可以在初始确定的清空流水线操作的类型为第一清空流水线操作时,进一步判断读取时间是否小于复制时间,以实现判断是否进行清空流水线操作的类型转换;即如果读取时间小于复制时间,则说明使用第二清空流水线操作能够加速清空流水线,可以判断进行清空流水线操作的类型转换,以将第一清空流水线操作转换为第二清空流水线操作;如果读取时间不小于复制时间,则说明使用第二清空流水线操作不能加速清空流水线,可以判断不进行清空流水线操作的类型转换,保持使用第一清空流水线操作来清空流水线。
作为可选实现,读取时间为:提交队列中需要清除的提交队列记录项的数量,除以单位时钟周期所读取的提交队列记录项的数量;复制时间为:提交寄存器映射表记录的逻辑寄存器的数量,除以单位时钟周期所复制的逻辑寄存器的数量。基于此,本申请实施例可以获取多个参数信息,以便于步骤S714的判断。
在可选实现中,本申请实施例可以获取如下多个参数信息:
复制时间(例如提交寄存器映射表记录的逻辑寄存器复制到猜测寄存器映射表的时钟周期数),复制时间可设为t;
单位时钟周期读取提交队列记录项的数量,设为a,在不同的处理器架构中,单位时钟周期读取提交队列记录项的数量是不同的,可以视指令集和处理器架构的情况获取单位时钟周期读取提交队列记录项的数量;其中,同一指令集可以有不同的处理器架构;
提交队列中需要清除的提交队列记录项的数量,设为b,在不同的异常情况下、不同的处理器架构情况下,提交队列中需要清除的提交队列记录项的数量可能是不同的;本申请实施例可以将提交队列中当前发射指针(指示处理器当前发射的指令的位置)和清空流水线操作指针之间的提交队列记录项、以及当前发射指针和清空流水线操作指针分别指向的提交队列记录项,作为需要清除的提交队列记录项,对应提交队列中需要清除的指令。
需要说明的是,在不同的处理器架构中,提交寄存器映射表的逻辑寄存器数量是不同的,而在指令集和处理器架构确定的情况下,提交寄存器映射表的逻辑寄存器数量是可确定的;同时,在不同的处理器架构中,单位时钟周期复制逻辑寄存器的数量是不同的,而在指令集和处理器架构确定的情况下,单位时钟周期复制逻辑寄存器的数量是可确定的。因此在指令集和处理器架构确定的情况下,复制时间是可确定的(即提交寄存器映射表记录的逻辑寄存器的数量,除以单位时钟周期所复制的逻辑寄存器的数量是可确定的),从而在指令集和处理器架构确定的情况下,复制时间可以作为一个常数参数来提供。示例的,设提交寄存器映射表记录的逻辑寄存器的数量为n,单位时钟周期复制逻辑寄存器的数量为m,则复制时间t为n/m,在指令集和处理器架构确定的情况下,复制时间t可被确定,从而作为常数参数来获取。
基于上述获取的多个参数信息,本申请实施例可以判断读取时间是否小于复制时间;例如,本申请实施例可以将读取时间设为c,c可以表示为b/a;进而,在c<t(即读取时间小于复制时间)时,本申请实施例可以判断进行清空流水线操作的类型转换,以加速清空流水线;在c≥t(读取时间不小于复制时间)时,本申请实施例可以判断不进行清空流水线操作的类型转换。
需要说明的是,步骤S714是通过读取时间c和复制时间t的大小判断,来实现判断是否进行清空流水线操作的类型转换。在进一步的可选实现中,本申请实施例也可以将读取时间c和复制时间t的大小判断,转换为提交队列中需要清除的提交队列记录项的数量判断。例如,本申请实施例可以根据复制时间t、单位时钟周期读取提交队列记录项的数量a,确定数量阈值;从而将提交队列中需要清除的提交队列记录项的数量b,与数量阈值进行比对;如果提交队列中需要清除的提交队列记录项的数量b,小于数量阈值,则视为读取时间c小于复制时间t,从而判断进行清空流水线操作的类型转换,以加速清空流水线,即此时需要清除的提交队列记录项的数量较少,可以使用第二清空流水线操作来加速清空流水线;如果提交队列中需要清除的提交队列记录项的数量b,不小于数量阈值,则视为读取时间c不小于复制时间t,从而判断不进行清空流水线操作的类型转换。
在一个实现示例中,上述数量阈值可以定义为:t×a,即(n×a)/m;从而,如果b<t×a,则等同于c<t(读取时间小于复制时间);如果b≥t×a,则等同于c≥t(读取时间不小于复制时间)。
在步骤S715中,将初始确定的第一清空流水线操作,作为最终确定的清空流水线操作,使用第一清空流水线操作清空流水线。
读取时间不小于复制时间则使用第二清空流水线操作不能加速清空流水线,可以不进行清空流水线操作的类型转换,从而将初始确定的第一清空流水线操作,作为最终确定的清空流水线操作,使用第一清空流水线操作清空流水线。例如,在判断提交指针等于清空流水线操作指针时,初始确定第一清空流水线操作,并且如果进一步判断读取时间不小于复制时间,则不进行清空流水线操作的类型转换,将初始确定的第一清空流水线操作,作为最终确定的清空流水线操作来清空流水线。
在步骤S716中,将第二清空流水线操作,作为最终确定的清空流水线操作,使用第二清空流水线操作清空流水线。
读取时间小于复制时间则使用第二清空流水线操作能够加速清空流水线,可以进行清空流水线操作的类型转换,从而将初始确定的第一清空流水线操作转换为第二清空流水线操作,进而将第二清空流水线操作,作为最终确定的清空流水线操作,使用第二清空流水线操作清空流水线。例如,在判断提交指针等于清空流水线操作指针时,初始确定第一清空流水线操作,并且如果进一步判断读取时间小于复制时间,则进行清空流水线操作的类型转换,将初始确定的第一清空流水线操作转换为第二清空流水线操作,从而将第二清空流水线操作,作为最终确定的清空流水线操作来清空流水线。
可以看出,本申请实施例可以在初始确定第一清空流水操作的情况下,比对判断第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,在第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间时,将初始确定的第一清空流水操作转换为第二清空流水线操作,从而使用完成时间更快的第二清空流水线操作来加速清空流水线,提升清空流水线的效率。本申请实施例提供的清空流水线的方案可以适用于任意架构,任意指令集的处理器,从而对处理器清空流水线的效率进行提升。另外,如果某些处理器的清空流水线操作只有第一清空流水线操作,并没有第二清空流水线操作,本申请实施例也可以通过在处理器中增加第二清空流水线操作,从而在初始确定的第一清空流水线操作能够进行类型转换时,将初始确定的第一清空流水线操作转换为第二清空流水线操作,以提升清空流水线的效率。
基于本申请实施例提供的清空流水线的方案,图8示例性的示出了本申请实施例提供的处理器用于清空流水线的可选结构示例图,图8所示结构可以视为是处理器为实现本申请实施例提供的清空流水线的方法所设置的逻辑电路单元。如图8所示,处理器用于清空流水线的逻辑电路单元可以包括:初始判定电路810、最终判定电路820、第一清空流水线操作控制电路830、第二清空流水线操作控制电路840。
其中,初始判定电路810,用于在处理器需要清空流水线时,初始确定清空流水线操作的类型;所述清空流水线操作的类型分为:用于在第一异常情况清空流水线的第一清空流水线操作,以及用于在第二异常情况清空流水线的第二清空流水线操作;
最终判定电路820,用于如果初始判定电路初始确定的清空流水线操作的类型为第一清空流水线操作,根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换;若判断进行清空流水线操作的类型转换,将第二清空流水线操作,作为最终确定的清空流水线操作;
其中,第一清空流水线操作控制电路830可以视为是执行第一清空流水线操作的电路,第二清空流水线操作控制电路840可以视为是执行第二清空流水线操作的电路。
最终判定电路820在最终确定的清空流水线操作为第二清空流水线操作时,可以使能第二清空流水线操作控制电路840执行第二清空流水线操作,以清空流水线;例如,最终判定电路820在最终确定的清空流水线操作为第二清空流水线操作时,可以向第二清空流水线操作控制电路840发送启动使能信号,以使能第二清空流水线操作控制电路840执行第二清空流水线操作。
最终判定电路820在最终确定的清空流水线操作为第一清空流水线操作时,可以使能第一清空流水线操作控制电路830执行第一清空流水线操作,以清空流水线。例如,最终判定电路820在最终确定的清空流水线操作为第一清空流水线操作时,可以向第一清空流水线操作控制电路830发送启动使能信号,以使能第一清空流水线操作控制电路830执行第一清空流水线操作。
在可选实现中,最终判定电路820,用于根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换,可以包括:
判断第二清空流水线操作的完成时间,是否小于第一清空流水线操作的完成时间;
如果第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间,则判断进行清空流水线操作的类型转换,以将初始确定的第一清空流水线操作变更为第二清空流水线操作;
如果第二清空流水线操作的完成时间不小于第一清空流水线操作的完成时间,则判断不进行清空流水线操作的类型转换,以保持初始确定的第一清空流水线操作。
在可选实现中,第一异常情况包括指令执行异常,第二异常情况包括分支预测失败;第一清空流水线操作包括:将提交寄存器映射表记录的逻辑寄存器复制到猜测寄存器映射表,并且,读取提交队列中需要清除的指令的新物理寄存器,以回收物理寄存器;第二清空流水线操作包括:读取提交队列中需要清除的指令的旧物理寄存器,以恢复猜测寄存器映射表,并且,读取提交队列中需要清除的指令的新物理寄存器,以回收物理寄存器。
在可选实现中,第一清空流水线操作的完成时间为:将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表的复制时间,以及读取提交队列中需要清除的指令的读取时间中的最长时间;
第二清空流水线操作的完成时间包括:读取提交队列中需要清除的指令的读取时间。
在可选实现中,最终判定电路820,用于判断第二清空流水线操作的完成时间,是否小于第一清空流水线操作的完成时间,可以包括:
判断读取时间是否小于复制时间;
其中,如果读取时间小于复制时间,则判断第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间;如果读取时间不小于复制时间,则判断第二清空流水线操作的完成时间不小于第一清空流水线操作的完成时间。
在可选实现中,最终判定电路820,用于判断读取时间是否小于复制时间,可以包括:
获取多个参数信息,所述多个参数信息包括:复制时间、单位时钟周期读取提交队列记录项的数量、以及提交队列中需要清除的提交队列记录项的数量;
根据所述多个参数信息,判断读取时间是否小于复制时间。
在可选实现中,最终判定电路820,用于根据所述多个参数信息,判断读取时间是否小于复制时间,可以包括:
根据复制时间和单位时钟周期读取提交队列记录项的数量,确定数量阈值;
将提交队列中需要清除的提交队列记录项的数量,与数量阈值进行比对;
如果提交队列中需要清除的提交队列记录项的数量小于数量阈值,则判断读取时间小于复制时间;
如果提交队列中需要清除的提交队列记录项的数量不小于数量阈值,则判断读取时间不小于复制时间。
在可选实现中,图9示例性的示出了本申请实施例提供的处理器用于清空流水线的另一可选结构示例图,结合图8和图9所示,最终判定电路820的输入可以是初始判定电路810初始确定的清空流水线操作的类型、复制时间t(即提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表的时钟周期数)、单位时钟周期读取提交队列记录项的数量a、以及提交队列中需要清除的提交队列记录项的数量b。
从而,最终判定电路820可以基于输入,在初始确定的清空流水线操作的类型为第一清空流水线操作时,通过复制时间t、单位时钟周期读取提交队列记录项的数量a、以及提交队列中需要清除的提交队列记录项的数量b,判断读取时间是否小于复制时间;
最终判定电路820在判断读取时间小于复制时间时,可判断进行清空流水线操作的类型转换,将初始确定的第一清空流水线操作变更为第二清空流水线操作,将第二清空流水线操作作为最终确定的清空流水线操作;从而最终判定电路820可以向第二清空流水线操作控制电路840发送启动使能信号,以使能第二清空流水线操作控制电路840执行第二清空流水线操作;第二清空流水线操作控制电路840在执行第二清空流水线操作时,可以与处理器中的提交队列交互信号;
最终判定电路820在判断读取时间不小于复制时间时,可判断不进行清空流水线操作的类型转换,将初始确定的第一清空流水线操作作为最终确定的清空流水线操作;从而最终判定电路820可以向第一清空流水线操作控制电路830发送启动使能信号,以使能第一清空流水线操作控制电路830执行第一清空流水线操作;第一清空流水线操作控制电路830在执行第一清空流水线操作时,可以与处理器中的提交队列交互信号。
在可选实现中,提交队列中需要清除的提交队列记录项可以包括:提交队列中当前发射指针和清空流水线操作指针之间的提交队列记录项、以及当前发射指针和清空流水线操作指针分别指向的提交队列记录项。相应的,作为可选实现,图9所示的处理器用于清空流水线的逻辑电路单元可以进一步包括:需清除提交队列记录项的数量判定电路850,用于根据当前发射指针和清空流水线操作指针,确定提交队列中需要清除的提交队列记录项的数量,并提供给最终判定电路。
在一个示例中,结合图9所示,需清除提交队列记录项的数量判定电路850的输入可以是当前发射指针和清空流水线操作指针;从而,需清除提交队列记录项的数量判定电路850可以将提交队列中当前发射指针和清空流水线操作指针之间的提交队列记录项、以及当前发射指针和清空流水线操作指针分别指向的提交队列记录项,作为提交队列中需要清除的提交队列记录项,以得到需要清除的提交队列记录项的数量b。需清除提交队列记录项的数量判定电路850可以将需要清除的提交队列记录项的数量b,提供给最终判定电路820,以便最终判定电路820判断读取时间是否小于复制时间。
在可选实现中,初始判定电路810,用于初始确定清空流水线操作的类型,可以包括:
判断提交指针是否等于清空流水线操作指针;如果提交指针等于清空流水线操作指针,则初始确定清空流水线操作的类型为第一清空流水线操作;如果提交指针不等于清空流水线操作指针,则初始确定清空流水线操作的类型为第二清空流水线操作。
在一个实现示例中,结合图9所示,初始判定电路810的输入可以是提交指针和清空流水线操作指针;如果提交指针等于清空流水线操作指针,则初始判定电路810输出初始确定的清空流水线操作的类型为第一清空流水线操作,并提供给最终判定电路820;如果提交指针不等于清空流水线操作指针,则初始判定电路810输出初始确定的清空流水线操作的类型为第二清空流水线操作,并提供给最终判定电路820。
在进一步的可选实现中,如果初始判定电路810提供的初始确定的清空流水线操作的类型为第二清空流水线操作,则最终判定电路820可将初始确定的第二清空流水线操作,作为最终确定的清空流水线操作,从而使能第二清空流水线操作控制电路840执行第二清空流水线操作,以清空流水线。
在进一步的可选实现中,如果最终判定电路820在初始确定的清空流水线操作的类型为第一清空流水线操作的情况下,判断不进行清空流水线操作的类型转换,则可将初始确定的第一清空流水线操作,作为最终确定的清空流水线操作,从而使能第一清空流水线操作控制电路830执行第一清空流水线操作,以清空流水线。
本申请实施例还提供一种芯片,例如片上系统芯片,该芯片可以包括本申请实施例提供的处理器。
本申请实施例还提供一种电子设备,例如终端设备或者服务器设备,该电子设备可以包括本申请实施例提供的芯片,或者,本申请实施例提供的处理器。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (19)
1.一种清空流水线的方法,其特征在于,包括:
在处理器需要清空流水线时,初始确定清空流水线操作的类型;所述清空流水线操作的类型分为:用于在第一异常情况清空流水线的第一清空流水线操作,以及用于在第二异常情况清空流水线的第二清空流水线操作;
如果初始确定的清空流水线操作的类型为第一清空流水线操作,根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换;
若判断进行清空流水线操作的类型转换,将第二清空流水线操作,作为最终确定的清空流水线操作,使用第二清空流水线操作清空流水线。
2.根据权利要求1所述的方法,其特征在于,所述根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换包括:
判断第二清空流水线操作的完成时间,是否小于第一清空流水线操作的完成时间;
如果第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间,则判断进行清空流水线操作的类型转换,以将初始确定的第一清空流水线操作变更为第二清空流水线操作;
如果第二清空流水线操作的完成时间不小于第一清空流水线操作的完成时间,则判断不进行清空流水线操作的类型转换,以保持初始确定的第一清空流水线操作。
3.根据权利要求2所述的方法,其特征在于,所述第一异常情况包括指令执行异常,所述第二异常情况包括分支预测失败;
所述第一清空流水线操作包括:将提交寄存器映射表记录的逻辑寄存器复制到猜测寄存器映射表,并且,读取提交队列中需要清除的指令的新物理寄存器,以回收物理寄存器;
所述第二清空流水线操作包括:读取提交队列中需要清除的指令的旧物理寄存器,以恢复猜测寄存器映射表,并且,读取提交队列中需要清除的指令的新物理寄存器,以回收物理寄存器。
4.根据权利要求3所述的方法,其特征在于,所述第一清空流水线操作的完成时间为:将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表的复制时间,以及读取提交队列中需要清除的指令的读取时间中的最长时间;
所述第二清空流水线操作的完成时间为:读取提交队列中需要清除的指令的读取时间;
所述判断第二清空流水线操作的完成时间,是否小于第一清空流水线操作的完成时间包括:
判断读取时间是否小于复制时间;
其中,如果读取时间小于复制时间,则判断第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间;如果读取时间不小于复制时间,则判断第二清空流水线操作的完成时间不小于第一清空流水线操作的完成时间。
5.根据权利要求4所述的方法,其特征在于,所述判断读取时间是否小于复制时间包括:
获取多个参数信息,所述多个参数信息包括:复制时间、单位时钟周期读取提交队列记录项的数量、以及提交队列中需要清除的提交队列记录项的数量;
根据所述多个参数信息,判断读取时间是否小于复制时间。
6.根据权利要求5所述的方法,其特征在于,所述根据所述多个参数信息,判断读取时间是否小于复制时间包括:
根据复制时间和单位时钟周期读取提交队列记录项的数量,确定数量阈值;
将提交队列中需要清除的提交队列记录项的数量,与数量阈值进行比对;
如果提交队列中需要清除的提交队列记录项的数量小于数量阈值,则判断读取时间小于复制时间;
如果提交队列中需要清除的提交队列记录项的数量不小于数量阈值,则判断读取时间不小于复制时间。
7.根据权利要求5所述的方法,其特征在于,所述提交队列中需要清除的提交队列记录项包括:提交队列中当前发射指针和清空流水线操作指针之间的提交队列记录项、以及当前发射指针和清空流水线操作指针分别指向的提交队列记录项。
8.根据权利要求3所述的方法,其特征在于,所述初始确定清空流水线操作的类型包括:
判断提交指针是否等于清空流水线操作指针;
如果提交指针等于清空流水线操作指针,则初始确定清空流水线操作的类型为第一清空流水线操作;
如果提交指针不等于清空流水线操作指针,则初始确定清空流水线操作的类型为第二清空流水线操作。
9.根据权利要求1-8任一项所述的方法,其特征在于,还包括:
如果初始确定的清空流水线操作的类型为第二清空流水线操作,则将初始确定的第二清空流水线操作,作为最终确定的清空流水线操作,使用第二清空流水线操作清空流水线;
或者,
若判断不进行清空流水线操作的类型转换,将初始确定的第一清空流水线操作,作为最终确定的清空流水线操作,使用第一清空流水线操作清空流水线。
10.一种处理器,其特征在于,包括:初始判定电路、最终判定电路、第一清空流水线操作控制电路、和第二清空流水线操作控制电路;
初始判定电路,用于在处理器需要清空流水线时,初始确定清空流水线操作的类型;所述清空流水线操作的类型分为:用于在第一异常情况清空流水线的第一清空流水线操作,以及用于在第二异常情况清空流水线的第二清空流水线操作;
最终判定电路,用于如果初始判定电路初始确定的清空流水线操作的类型为第一清空流水线操作,则根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换;若判断进行清空流水线操作的类型转换,则将第二清空流水线操作,作为最终确定的清空流水线操作;
其中,最终判定电路在最终确定的清空流水线操作为第二清空流水线操作时,使能第二清空流水线操作控制电路执行第二清空流水线操作,以清空流水线;最终判定电路在最终确定的清空流水线操作为第一清空流水线操作时,使能第一清空流水线操作控制电路执行第一清空流水线操作,以清空流水线;
第一清空流水线操作控制电路为执行第一清空流水线操作的电路,第二清空流水线操作控制电路为执行第二清空流水线操作的电路。
11.根据权利要求10所述的处理器,其特征在于,所述最终判定电路,用于根据第一清空流水线操作的完成时间和第二清空流水线操作的完成时间,判断是否进行清空流水线操作的类型转换,包括:
判断第二清空流水线操作的完成时间,是否小于第一清空流水线操作的完成时间;
如果第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间,则判断进行清空流水线操作的类型转换,以将初始确定的第一清空流水线操作变更为第二清空流水线操作;
如果第二清空流水线操作的完成时间不小于第一清空流水线操作的完成时间,则判断不进行清空流水线操作的类型转换,以保持初始确定的第一清空流水线操作。
12.根据权利要求11所述的处理器,其特征在于,所述第一异常情况包括指令执行异常,所述第二异常情况包括分支预测失败;
所述第一清空流水线操作包括:将提交寄存器映射表记录的逻辑寄存器复制到猜测寄存器映射表,并且,读取提交队列中需要清除的指令的新物理寄存器,以回收物理寄存器;
所述第二清空流水线操作包括:读取提交队列中需要清除的指令的旧物理寄存器,以恢复猜测寄存器映射表,并且,读取提交队列中需要清除的指令的新物理寄存器,以回收物理寄存器。
13.根据权利要求12所述的处理器,其特征在于,所述第一清空流水线操作的完成时间为:将提交寄存器映射表的逻辑寄存器复制到猜测寄存器映射表的复制时间,以及读取提交队列中需要清除的指令的读取时间中的最长时间;
所述第二清空流水线操作的完成时间为:读取提交队列中需要清除的指令的读取时间;
所述最终判定电路,用于判断第二清空流水线操作的完成时间,是否小于第一清空流水线操作的完成时间,包括:
判断读取时间是否小于复制时间;
其中,如果读取时间小于复制时间,则判断第二清空流水线操作的完成时间小于第一清空流水线操作的完成时间;如果读取时间不小于复制时间,则判断第二清空流水线操作的完成时间不小于第一清空流水线操作的完成时间。
14.根据权利要求13所述的处理器,其特征在于,所述最终判定电路,用于判断读取时间是否小于复制时间,包括:
获取多个参数信息,所述多个参数信息包括:复制时间、单位时钟周期读取提交队列记录项的数量、以及提交队列中需要清除的提交队列记录项的数量;
根据所述多个参数信息,判断读取时间是否小于复制时间。
15.根据权利要求14所述的处理器,其特征在于,所述处理器还包括:
需清除提交队列记录项的数量判定电路,用于根据当前发射指针和清空流水线操作指针,确定提交队列中需要清除的提交队列记录项的数量,并提供给所述最终判定电路;
其中,所述提交队列中需要清除的提交队列记录项包括:提交队列中当前发射指针和清空流水线操作指针之间的提交队列记录项、以及当前发射指针和清空流水线操作指针分别指向的提交队列记录项。
16.根据权利要求12所述的处理器,其特征在于,所述初始判定电路,用于初始确定清空流水线操作的类型,包括:
判断提交指针是否等于清空流水线操作指针;
如果提交指针等于清空流水线操作指针,则初始确定清空流水线操作的类型为第一清空流水线操作;
如果提交指针不等于清空流水线操作指针,则初始确定清空流水线操作的类型为第二清空流水线操作。
17.根据权利要求10-16任一项所述的处理器,其特征在于,所述最终判定电路,还用于:
如果初始判定电路初始确定的清空流水线操作的类型为第二清空流水线操作,则将初始确定的第二清空流水线操作,作为最终确定的清空流水线操作,使能第二清空流水线操作控制电路执行第二清空流水线操作,以清空流水线;
或者,
若判断不进行清空流水线操作的类型转换,将初始确定的第一清空流水线操作,作为最终确定的清空流水线操作,使能第一清空流水线操作控制电路执行第一清空流水线操作,以清空流水线。
18.一种芯片,其特征在于,包括:如权利要求10-17任一项所述的处理器。
19.一种电子设备,其特征在于,包括:如权利要求18所述的芯片,或者,如权利要求10-17任一项所述的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410152986.8A CN118012509A (zh) | 2024-02-02 | 2024-02-02 | 清空流水线的方法、处理器、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410152986.8A CN118012509A (zh) | 2024-02-02 | 2024-02-02 | 清空流水线的方法、处理器、芯片及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118012509A true CN118012509A (zh) | 2024-05-10 |
Family
ID=90947930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410152986.8A Pending CN118012509A (zh) | 2024-02-02 | 2024-02-02 | 清空流水线的方法、处理器、芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118012509A (zh) |
-
2024
- 2024-02-02 CN CN202410152986.8A patent/CN118012509A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7870369B1 (en) | Abort prioritization in a trace-based processor | |
US6721874B1 (en) | Method and system for dynamically shared completion table supporting multiple threads in a processing system | |
US8074060B2 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
US20070043934A1 (en) | Early misprediction recovery through periodic checkpoints | |
US20040128448A1 (en) | Apparatus for memory communication during runahead execution | |
US5974524A (en) | Method and apparatus for reducing the number of rename registers in a processor supporting out-of-order execution | |
US9710280B2 (en) | Overlapping atomic regions in a processor | |
JP2000029699A (ja) | プロセサア―キテクチャ | |
JP2004145903A (ja) | スーパースケーラマイクロプロセサ | |
JP2001175473A (ja) | コンピュータ処理システムにおいて実行述語を実現する方法及び装置 | |
KR100472346B1 (ko) | 명령어 리플레이를 포함하는 프로세서 파이프라인 | |
KR100242403B1 (ko) | 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템 | |
US9535744B2 (en) | Method and apparatus for continued retirement during commit of a speculative region of code | |
US7711932B2 (en) | Scalable rename map table recovery | |
JP2001209535A (ja) | プロセッサの命令スケジューリング装置 | |
KR20150129327A (ko) | 파이프라이닝된 소프트웨어의 동적 최적화 | |
US10545765B2 (en) | Multi-level history buffer for transaction memory in a microprocessor | |
JP3800533B2 (ja) | プログラムカウンタ制御方法及びプロセッサ | |
KR20230016631A (ko) | 다른 레지스터 매핑 상태의 스냅샷을 사용하고 프로세서의 재정렬 버퍼(rob) 엔트리를 순회하는 플러시된 명령어의 레지스터 매핑 상태 복구 | |
JP3683439B2 (ja) | 分岐予測を抑止する情報処理装置および方法 | |
US10255071B2 (en) | Method and apparatus for managing a speculative transaction in a processing unit | |
JP3779012B2 (ja) | 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 | |
CN102163139B (zh) | 微处理器融合载入算术/逻辑运算及跳跃宏指令 | |
CN114341804A (zh) | 最小化用于处理器中的中断指令恢复的寄存器重命名映射表(rmt)状态恢复的处理器重排序缓冲器(rob)的遍历 | |
CN118012509A (zh) | 清空流水线的方法、处理器、芯片及电子设备 |
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 |