CN106843816A - 一种分支预测控制方法及装置 - Google Patents

一种分支预测控制方法及装置 Download PDF

Info

Publication number
CN106843816A
CN106843816A CN201710050368.2A CN201710050368A CN106843816A CN 106843816 A CN106843816 A CN 106843816A CN 201710050368 A CN201710050368 A CN 201710050368A CN 106843816 A CN106843816 A CN 106843816A
Authority
CN
China
Prior art keywords
branch
fetching
instruction
decoding
prediction
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.)
Granted
Application number
CN201710050368.2A
Other languages
English (en)
Other versions
CN106843816B (zh
Inventor
周沈刚
李任伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qingdao Special Integrated Circuit Design Engineering Technology Research Center
Original Assignee
Qingdao Longs Mdt Infotech Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qingdao Longs Mdt Infotech Ltd filed Critical Qingdao Longs Mdt Infotech Ltd
Priority to CN201710050368.2A priority Critical patent/CN106843816B/zh
Publication of CN106843816A publication Critical patent/CN106843816A/zh
Application granted granted Critical
Publication of CN106843816B publication Critical patent/CN106843816B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

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

本发明公开了一种分支预测控制方法及装置,取指时对分支指令进行分支预测,并对分支目标进行取指;译码时对分支指令再次进行分支预测;当需要由译码时的分支预测结果对取指时的分支预测结果进行修正时:记录当前取指PC至重新取指PC寄存器,对译码时分支预测的分支目标进行取指;当分支指令执行完分支判定时,根据分支判定结果判断修正是否正确;若是,则继续译码时分支预测的分支目标及其后续指令的取指操作,冲刷分支指令的后续指令;若否,则取消译码时分支预测的分支目标及其后续指令,按照重新取指PC寄存器中的PC进行取指;从而降低了译码时分支预测的误预测损失,提高了分支指令的执行效率。

Description

一种分支预测控制方法及装置
技术领域
本发明涉及处理器技术领域,尤其涉及一种分支预测控制方法及装置。
背景技术
程序中具有大量的分支指令,分支指令也称为转移指令、跳转指令。普通情况下,处理器按照指令地址顺序取指,比如当前取指PC是上一周期取指PC+4(假设每次取指取4字节)。但是分支指令在未执行之前,处理器无法确定下一条指令地址,甚至在指令未译码之前,无法确定指令是否是分支指令。如果取指单元无条件顺序取指,待分支指令执行分支之后,所取后续指令都需要冲刷,转而对分支目标进行取指,这就造成大量的冗余操作;如果取指单元等待分支指令确定是否分支以及分支目标之后再进行取指,则这种流水线阻塞操作将严重影响流水线的效率。为了应对上述问题,当前的处理器中通常使用分支预测技术对分支目标进行预测。
通常分支预测会在每一条分支指令执行后记录该指令的PC、是否进行转移及其分支目标,并在下一次对该指令进行取指时,使用PC查找记录,若在记录中有相应PC的条目,则说明该指令是一条分支指令,然后根据该条目的分支历史,预测其是否是转移指令及其分支目标,若预测转移,则将分支目标作为新的取指PC,否则,将顺序取指。
可用于记录分支指令历史信息的存储空间是有限的,而理论上分支指令的数量是无限的,使用有限的空间记录无限的信息的一般方法是使用类Cache的方法。所以,不仅仅在所有分支指令的首次执行时无法通过查询历史记录进行分支预测,即使属于再次执行,也有可能无法进行预测。而且,在取指时进行分支预测,只能通过PC进行预测,与指令译码之后进行分支预测相比,在合理的资源使用下,前者预测精确度较低。
现有技术中,通常有两种方法解决上述问题:
一种方法是:只在取指阶段进行分支预测,在流水线中后期对预测结果进行判定,若预测错误则进行修正,预测精度较低。
另一种方法是:在取指与译码处都进行预测,其中译码处预测主要针对在取指时未能进行预测的指令,以及可以修正预测的指令,最后在流水线中后期进行判定修正。当取指阶段未进行预测的分支指令发射并且译码时,已经对该分支指令后的大量顺序指令进行了预取;在现有技术中,译码阶段的分支预测结果若进行预测修正,会冲刷所有后续指令,包括预取指令,然后对预测分支目标进行取指;如果在分支指令的中后期判定预测失败,则需要再次对被冲刷的指令进行取指。采用这种方法,译码时分支预测的误预测损失较大,降低了分支指令的执行效率。
发明内容
本发明提供了一种分支预测控制方法,降低了译码时分支预测的误预测损失,提高了分支指令的执行效率。
为解决上述技术问题,本发明采用下述技术方案予以实现:
本发明提出了一种分支预测控制方法,所述方法包括:
取指时对分支指令进行分支预测,并对分支目标进行取指;
译码时对分支指令再次进行分支预测;
当需要由译码时的分支预测结果对取指时的分支预测结果进行修正时:
记录当前取指PC至重新取指PC寄存器,对译码时分支预测的分支目标进行取指;
当分支指令执行完分支判定时,根据分支判定结果判断修正是否正确;
若是,则继续译码时分支预测的分支目标及其后续指令的取指操作,冲刷分支指令的后续指令;
若否,则取消译码时分支预测的分支目标及其后续指令,按照重新取指PC寄存器中的PC进行取指。
进一步的,在对译码时分支预测的分支目标进行取指时,所述方法还包括:在流水线中取指时间n1小于分支判定时间n2时:将译码时分支预测的分支目标取指返回后的指令写入预取缓存单元中,且写在预取缓存单元中原指令的后面。
又进一步的,在对译码时分支预测的分支目标进行取指时,所述方法还包括:在流水线中取指时间n1小于分支判定时间n2时:将译码时分支预测的分支目标取指返回后的指令写入备用缓存单元。
又进一步的,在对译码时分支预测的分支目标进行取指时,所述方法还包括:在流水线中取指时间n1小于分支判定时间n2时:将预取缓存单元中的首条指令的PC保存至重新取指PC寄存器,清空预取缓存单元,将分支目标取指返回后的指令写入预取缓存单元。
更进一步的,在需要由译码时的分支预测结果对取指时的分支预测结果进行修正时,对译码时分支预测的分支目标及其后续指令进行流水级标记。
本发明还提出了一种分支预测控制装置,所述装置包括:取指单元,用于将取指PC输入取指时分支预测单元,并发送取指请求至流水线;取指时分支预测单元,用于根据取指单元的取指PC进行分支预测,给出预测分支目标;取指流水寄存器,用于记录取指请求的信息,并将取指返回后的指令写入预取缓存单元;预取缓存单元:用于保存取指返回后的指令;译码单元,用于对指令进行译码,译码后的指令发送至执行流水单元和译码时分支预测单元;执行流水单元,用于执行译码单元发送的指令;译码时分支预测单元,用于根据译码单元发送的指令进行分支预测,给出预测分支目标;当需要对取指时的分支预测结果进行修正时,将预测分支目标的取指PC发送至取指单元;重新取指PC寄存器,用于记录当前取指PC;分支判定单元,用于判定分支指令目标,并根据判定结果判断修正是否正确;若是,则申请流水线控制器冲刷分支指令的后续指令;若否,则申请流水线控制器取消译码时分支预测的分支目标及其后续指令,控制取指单元按照重新取指PC寄存器中的PC进行取指;流水线控制器,根据分支判定单元的申请,对流水线进行冲刷。
进一步的,所述装置还包括:备用缓存单元,用于在流水线中取指时间n1小于分支判定时间n2时,保存分支目标取指返回后的指令。
又进一步的,所述装置还包括:预测流水级标记单元,用于在需要由译码时的分支预测结果对取指时的分支预测结果进行修正时,对译码时分支预测的分支目标及其后续指令进行流水级标记。
与现有技术相比,本发明的优点和积极效果是:本发明的分支预测控制方法及装置,取指时对分支指令进行分支预测,并对分支目标进行取指;译码时对分支指令再次进行分支预测;当需要由译码时的分支预测结果对取指时的分支预测结果进行修正时:记录当前取指PC至重新取指PC寄存器,对译码时分支预测的分支目标进行取指;当分支指令执行完分支判定时,根据分支判定结果判断修正是否正确;若是,则继续译码时分支预测的分支目标及其后续指令的取指操作,冲刷分支指令的后续指令;若否,则取消译码时分支预测的分支目标及其后续指令,按照重新取指PC寄存器中的PC进行取指;降低了译码时分支预测的误预测损失,提高了分支指令的执行效率。
结合附图阅读本发明的具体实施方式后,本发明的其他特点和优点将变得更加清楚。
附图说明
图1是本发明提出的分支预测控制方法的一个实施例的流程图;
图2是本发明提出的分支预测控制装置的一个实施例的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下将结合附图和实施例,对本发明作进一步详细说明。
在现有技术中,如果译码时分支预测结果认为当前流水线上或缓存中所取指令不是该分支指令的目标指令,会将这些指令进行冲刷并重新取指,而一旦误预测,就导致原本正确的取指被强制重复操作,降低了处理器的性能。
针对上述问题,本发明提出了一种分支预测控制方法,在对译码时预测的分支目标进行取指的同时,并不对已经取指、发射的指令进行冲刷,而是让其继续执行,若最终分支指令判定结果证实译码时分支预测正确,才将这部分指令进行冲刷,对处理器性能没有影响;若最终分支指令判定结果证实译码时分支预测错误,由于这部分后续指令继续执行,所以基本没有误预测的性能损失,换言之,该方法将大大提高处理器对分支指令的执行效率,使得处理器性能具有较大提升。
下面,结合附图,对本实施例的分支预测控制方法进行详细说明。
本实施例的分支预测控制方法,具体包括下述步骤,参见图1所示。
步骤S1:取指时进行分支预测,并对分支目标进行取指。
在取指时,对指令进行分支预测,对分支目标进行取指,取指返回后的指令写入预取缓存单元。
步骤S2:译码时对分支指令再次进行分支预测。
在指令译码后,若指令是分支指令,则再次进行分支预测。
步骤S3:判断是否需要由译码时的分支预测结果对取指时的分支预测结果进行修正。
即判断译码时的分支预测结果与取指时的分支预测结果是否不同。
若否,即译码时的分支预测结果与取指时的分支预测结果相同,不需要进行修正,则执行步骤S4。
若是,即译码时的分支预测结果与取指时的分支预测结果不同,需要进行修正,则执行步骤S7。
步骤S4:随着流水线的前进,分支指令执行至分支判定。
步骤S5:当分支指令执行完分支判定时,根据分支判定结果判断取指时的分支预测是否正确。
若是,即取指时的分支预测正确,无需特殊操作,随着流水线前进即可。
若否,即取指时的分支预测错误,则执行步骤S6。
步骤S6:冲刷分支指令后续的所有指令,按照分支判定结果确定的分支目标进行取指,返回步骤S1。
步骤S7:在需要由译码时的分支预测结果对取指时的分支预测结果进行修正时,记录当前取指PC至重新取指PC寄存器,对译码时分支预测的分支目标进行取指。
为了便于区分哪些指令需要冲刷,对译码时分支预测的分支目标及其后续指令进行流水级标记。
步骤S8:分支指令及其后续指令、对分支目标的取指操作都随流水线前进,分支指令执行至分支判定。
步骤S9:当分支指令执行完分支判定时,根据分支判定结果判断修正是否正确。
若是,即修正正确,即译码时的分支预测正确,则执行步骤S10。
若否,即修正错误,即译码时的分支预测错误,则执行步骤S11。
步骤S10:当译码时的分支预测正确时,冲刷分支指令的后续指令,继续译码时分支预测的分支目标及其后续指令的取指操作。
即在冲刷分支指令的后续指令时,不影响译码时分支预测的分支目标及其后续指令的取指操作。也即,只冲刷不具有流水级标记的指令。
步骤S11:当译码时的分支预测错误时,不影响分支指令后续指令的执行,取消译码时分支预测的分支目标及其后续指令,按照重新取指PC寄存器中记录的PC进行取指。也即,只冲刷具有流水级标记的指令。
本实施例的分支预测控制方法,取指时对分支指令进行分支预测,并对分支目标进行取指;译码时对分支指令再次进行分支预测;当需要由译码时的分支预测结果对取指时的分支预测结果进行修正时:记录当前取指PC至重新取指PC寄存器,对译码时分支预测的分支目标进行取指;当分支指令执行完分支判定时,根据分支判定结果判断修正是否正确;若是,则继续译码时分支预测的分支目标及其后续指令的取指操作,冲刷分支指令的后续指令;若否,则取消译码时分支预测的分支目标及其后续指令,按照重新取指PC寄存器中的PC进行取指;降低了译码时分支预测的误预测损失,提高了分支指令的执行效率。
也就是说,在对译码时分支预测的分支目标进行取指的同时,并不对已经取指、发射的指令进行冲刷,而是让其继续执行,若最终分支指令判定结果证实译码时分支预测正确,才将这部分已经取指、发射的指令进行冲刷,对处理器性能没有影响;若最终分支指令判定结果证实译码时分支预测错误,由于这部分已经取指、发射的指令继续执行,所以基本没有误预测的性能损失,换言之,该方法将大大提高处理器对分支指令的执行效率,使得处理器性能具有较大提升。
在步骤S7中,在一些具有灵活周期的流水线中,在对译码时分支预测的分支目标进行取指时,还需要判断流水线中取指时间n1与分支判定时间n2的大小关系,根据n1与n2的大小关系确定分支目标取指返回后的指令存储方式。
分支判定时间n2,即分支指令执行完分支判定、确定分支判定结果的时间。
(1)若n1≥n2,则取指返回前已经确定分支判定的结果,无需特殊处理。
(2)若n1<n2,则增加备用缓存单元,深度为n2-n1,备用缓存单元中的指令优先发射,将译码时分支预测的分支目标取指返回后的指令写入备用缓存单元,以减小存储等待时间,避免拥堵,提高流水线效率。
当译码时的分支预测正确、需要冲刷分支指令的后续指令时,冲刷预取缓存单元、不冲刷备用缓存单元。当译码时的分支预测错误、需要取消译码时分支预测的分支目标及其后续指令时,冲刷备用缓存单元、不冲刷预取缓存单元。
(3)若n1<n2,还可以将译码时分支预测的分支目标取指返回后的指令写入预取缓存单元中,且写在预取缓存单元中原指令的后面。即取指时分支预测的分支目标取指返回后的指令写入预取缓存单元,译码时分支预测的分支目标取指返回后的指令也写入预取缓存单元,可通过流水级标记对两种指令进行区分。
(4)若n1<n2,将预取缓存单元中的首条指令的PC保存至重新取指PC寄存器,清空预取缓存单元,将分支目标取指返回后的指令写入预取缓存单元,分支目标将在下一周期正常发射。采用该种方案,当执行至步骤S11时,当译码时的分支预测错误时,不影响分支指令后续指令的执行,取消译码时分支预测的分支目标及其后续指令,按照重新取指PC寄存器中记录的PC进行取指。分支指令发射并执行至分支判断的这段时间内,必然存在多条指令已经发射,已经发射的指令在此处并不会被冲刷,因此不影响分支指令后续指令的执行。
具体来说:
如果n1大于等于n2,则在取指完成前或完成时,即可确定是否分支,所以在预取指令缓存单元中,译码时分支预测的分支目标取指返回后的指令与取指时分支预测的分支目标取指返回后的指令是互斥的。
如果n1小于n2,说明取指返回指令时,仍不能确定是否需要分支,此时根据实际需求,对译码时分支预测的分支目标取指返回后的指令以及当前处于预取缓存单元中的指令有两种处理方法:
第一种:预取缓存单元中的指令优先。在分支判定之前,优先发射预取缓存单元中的指令,译码时分支预测的分支目标取指返回的指令按顺序写入预取缓存单元中。当原处于预取缓存单元中的指令发射完毕时,才发射译码时分支预测的分支目标取指返回的指令。
第二种:译码时分支预测的分支目标优先。在分支判定前,优先发射译码时分支预测的分支目标取指返回的指令。在资源允许的情况下,可以增设备用缓存单元,译码时分支预测的分支目标取指返回的指令将通过备用缓存单元发射指令。原预取缓存单元中的指令暂时不发射,在分支判定后,再发射(修正失败)或者冲刷(修正成功)。可以发现,当n1与n2差值较小的情况下,增加较少的备用缓存单元即可达到较好的效果。若设计资源有限,不增设备用缓存单元,而是在译码时分支预测的分支目标取指返回的指令进入预取缓存单元的同时冲刷当前处于指令预取缓存单元中的指令,即译码时分支预测的分支目标取指返回的指令与取指时分支预测的分支目标取指返回的指令是互斥的。若指令预取缓存单元中原先存在指令,则取其即将发射的指令PC保存至重新取指PC寄存器中。
在一般情况下,译码时分支预测具有较高的预测准确度,所以以译码时分支预测的分支目标优先的方式进行设计更为合理。而在以译码时分支预测的分支目标优先的方式中,使用备用缓存单元可以达到最好的性能提高,不使用备用缓存可以在几乎不增加资源使用的情况下,适当的降低预测失败的损失。
在较多的系统中,n1由于Cache的原因,导致取指延时不确定,而n2也有可能根据不同的分支指令类型而不同。当运行时n1与n2之间的差值不确定的情况下,可根据实际情况选择指令缓冲的设计方式。
当一条指令在步骤S3处判断为需要进行修正,但是还未执行完S10(或S11)时,则视为该条指令占用了相关控制单元,后续指令无法使用相关控制单元,在这种情况下,若存在其他指令执行至S3时,则一律判断为不需要修正,向S4方向执行,避免造成流水线拥堵。
基于上述方法的设计,本实施例还提出了一种分支预测控制装置,所述装置包括取指单元201、取指时分支预测单元202、取指流水寄存器203、预取缓存单元204、指令发射单元205、译码单元206、译码时分支预测单元207、执行流水单元208、分支判定单元209、重新取指PC寄存器210、流水线控制器211、预测流水级标记单元212、备用缓存单元213等,参见图2所示。
取指单元201,用于将取指PC输入取指时分支预测单元202,并发送取指请求至流水线;取指请求随流水前进,由取指流水寄存器203记录相关信息。
取指时分支预测单元202,用于根据取指单元201的取指PC进行分支预测,若预测转移,则给出预测分支目标,由取指单元201在下一周期对分支目标进行取指。
取指流水寄存器203,用于记录取指请求的信息,取指请求在取指流水寄存器203上进行流水,取指返回后的指令由取指流水寄存器203的相关控制信号写入预取缓存单元204。
预取缓存单元204:用于保存取指返回后的指令。
指令发射单元205,用于从预取缓存单元204中取出指令后发射至译码单元206。
译码单元206,用于对指令进行译码,译码后的指令发送至执行流水单元208和译码时分支预测单元207。若指令是分支指令,则通过译码时分支预测单元207进行再次预测。
译码时分支预测单元207,用于根据译码单元206发送的指令进行分支预测,给出预测分支目标;当译码时分支预测单元207的预测结果与取指时分支预测单元202的预测结果不同时,需要对取指时的分支预测结果进行修正,将预测分支目标的取指PC发送至取指单元201,预测流水级标记单元212开始将对应操作的流水级进行标记,对译码时分支预测的分支目标及其后续指令进行流水级标记;同时通知重新取指PC寄存器210记录当前取指PC。
预测流水级标记单元212,用于在需要由译码时的分支预测结果对取指时的分支预测结果进行修正时,对译码时分支预测的分支目标及其后续指令进行流水级标记。
备用缓存单元213,在对译码时分支预测的分支目标进行取指时,如果流水线中取指时间n1小于分支判定时间n2时,分支目标取指返回后的指令由取指流水寄存器203写入备用缓存单元213。
执行流水单元208,用于执行译码单元206发送的指令。
重新取指PC寄存器210,用于记录当前取指PC。
分支判定单元209,用于判定分支指令目标,并根据判定结果判断修正是否正确;若是,则申请流水线控制器211冲刷分支指令的后续指令;若否,则申请流水线控制器211取消译码时分支预测的分支目标及其后续指令,控制取指单元201按照重新取指PC寄存器210中的PC进行取指。
分支判定单元209根据判定结果决定是否申请流水线控制器211进行流水级冲刷、进行何种方式的冲刷、以及是否进行重新取指,具体来说:
(a)若译码时分支预测进行修正成功,即修正正确,则冲刷分支指令的后续指令,但不影响对分支目标及其后续指令的取指。因此分支判定单元209向流水线控制器211发送信号01。
(b)若译码时分支预测进行修正失败,即修正错误,首先不影响分支指令后续指令的执行,取消译码时分支预测的分支目标及其后续指令,按照重新取指PC寄存器中记录的PC进行取指。因此分支判定单元209向流水线控制器211发送两位10。
(c)若取指时分支预测的结果与译码时分支预测的结果相同,且预测正确,即不需要进行修正且预测正确时,则分支判定后无需操作,随着流水线前进即可。因此分支判定单元209向流水线控制器211发送信号00。
(d)若取指时分支预测的结果与译码时分支预测的结果相同,则预测错误,即不需要进行修正且预测错误时,则分支判定后冲刷后续的所有指令,按照分支判定结果确定的分支目标进行取指。因此分支判定单元209向流水线控制器211发送信号11。
流水线控制器211根据分支判定单元209的发送的申请信号,对流水线进行冲刷。
如果流水线控制器211接收到分支判定单元209发送的信号00,则无请求,无需进行特殊操作。
如果流水线控制器211接收到分支判定单元209发送的信号01,则冲刷请求所在流水级之前没有预测流水级标记的流水级。
如果流水线控制器211接收到分支判定单元209发送的信号10,则冲刷请求所在流水级之前具有预测流水级标记的流水级。
如果流水线控制器211接收到分支判定单元209发送的信号11,则冲刷请求所在流水级之前所有流水级。
具体的分支预测控制装置的工作过程,已经在上述分支预测控制方法中详述,此处不予赘述。
本实施例的分支预测控制装置,取指时分支预测单元根据取指单元的取指PC进行分支预测,若预测转移则给出下一周期取指请求;取指请求在取指流水寄存器上进行流水,待指令返回之后将指令写入预取缓存单元;指令发射单元将预取缓存单元中的指令发射至译码单元;译码单元对指令进行译码,译码后的指令给至执行流水单元,若指令是分支指令,则通过译码时分支预测单元进行再次预测;当译码时分支预测单元的预测结果与取指时分支预测单元的预测结果不同时,需要对取指时的分支预测结果进行修正,将预测分支目标的取指PC发送至取指单元,预测流水级标记单元开始将对应操作的流水级进行标记,对译码时分支预测的分支目标及其后续指令进行流水级标记;同时通知重新取指PC寄存器记录当前取指PC。当指令执行至分支判定单元时,分支判定单元判定分支指令目标,根据判定结果向流水线控制器发送申请信号,流水线控制器根据分支判定单元的发送的申请信号,对流水线进行冲刷;因此,本实施例的控制装置降低了译码时分支预测的误预测损失,提高了分支指令的执行效率。
本实施例的分支预测控制方法及装置,适用于多种流水线结构,可普遍应用于不同的处理器设计中。
以上实施例仅用以说明本发明的技术方案,而非对其进行限制;尽管参照前述实施例对本发明进行了详细的说明,对于本领域的普通技术人员来说,依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明所要求保护的技术方案的精神和范围。

Claims (8)

1.一种分支预测控制方法,其特征在于:所述方法包括:
取指时对分支指令进行分支预测,并对分支目标进行取指;
译码时对分支指令再次进行分支预测;
当需要由译码时的分支预测结果对取指时的分支预测结果进行修正时:
记录当前取指PC至重新取指PC寄存器,对译码时分支预测的分支目标进行取指;
当分支指令执行完分支判定时,根据分支判定结果判断修正是否正确;
若是,则继续译码时分支预测的分支目标及其后续指令的取指操作,冲刷分支指令的后续指令;
若否,则取消译码时分支预测的分支目标及其后续指令,按照重新取指PC寄存器中的PC进行取指。
2.根据权利要求1所述的方法,其特征在于:在对译码时分支预测的分支目标进行取指时,所述方法还包括:
在流水线中取指时间n1小于分支判定时间n2时:将译码时分支预测的分支目标取指返回后的指令写入预取缓存单元中,且写在预取缓存单元中原指令的后面。
3.根据权利要求1所述的方法,其特征在于:在对译码时分支预测的分支目标进行取指时,所述方法还包括:
在流水线中取指时间n1小于分支判定时间n2时:将译码时分支预测的分支目标取指返回后的指令写入备用缓存单元。
4.根据权利要求1所述的方法,其特征在于:在对译码时分支预测的分支目标进行取指时,所述方法还包括:
在流水线中取指时间n1小于分支判定时间n2时:将预取缓存单元中的首条指令的PC保存至重新取指PC寄存器,清空预取缓存单元,将分支目标取指返回后的指令写入预取缓存单元。
5.根据权利要求1所述的方法,其特征在于:在需要由译码时的分支预测结果对取指时的分支预测结果进行修正时,对译码时分支预测的分支目标及其后续指令进行流水级标记。
6.一种分支预测控制装置,其特征在于:所述装置包括:
取指单元,用于将取指PC输入取指时分支预测单元,并发送取指请求至流水线;
取指时分支预测单元,用于根据取指单元的取指PC进行分支预测,给出预测分支目标;
取指流水寄存器,用于记录取指请求的信息,并将取指返回后的指令写入预取缓存单元;
预取缓存单元:用于保存取指返回后的指令;
译码单元,用于对指令进行译码,译码后的指令发送至执行流水单元和译码时分支预测单元;
执行流水单元,用于执行译码单元发送的指令;
译码时分支预测单元,用于根据译码单元发送的指令进行分支预测,给出预测分支目标;当需要对取指时的分支预测结果进行修正时,将预测分支目标的取指PC发送至取指单元;
重新取指PC寄存器,用于记录当前取指PC;
分支判定单元,用于判定分支指令目标,并根据判定结果判断修正是否正确;若是,则申请流水线控制器冲刷分支指令的后续指令;
若否,则申请流水线控制器取消译码时分支预测的分支目标及其后续指令,控制取指单元按照重新取指PC寄存器中的PC进行取指;
流水线控制器,根据分支判定单元的申请,对流水线进行冲刷。
7.根据权利要求6所述的装置,其特征在于:所述装置还包括:
备用缓存单元,用于在流水线中取指时间n1小于分支判定时间n2时,保存分支目标取指返回后的指令。
8.根据权利要求6所述的装置,其特征在于:所述装置还包括:
预测流水级标记单元,用于在需要由译码时的分支预测结果对取指时的分支预测结果进行修正时,对译码时分支预测的分支目标及其后续指令进行流水级标记。
CN201710050368.2A 2017-01-23 2017-01-23 一种分支预测控制方法及装置 Expired - Fee Related CN106843816B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710050368.2A CN106843816B (zh) 2017-01-23 2017-01-23 一种分支预测控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710050368.2A CN106843816B (zh) 2017-01-23 2017-01-23 一种分支预测控制方法及装置

Publications (2)

Publication Number Publication Date
CN106843816A true CN106843816A (zh) 2017-06-13
CN106843816B CN106843816B (zh) 2019-06-18

Family

ID=59119660

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710050368.2A Expired - Fee Related CN106843816B (zh) 2017-01-23 2017-01-23 一种分支预测控制方法及装置

Country Status (1)

Country Link
CN (1) CN106843816B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984392A (zh) * 2018-06-12 2018-12-11 珠海市杰理科技股份有限公司 单步调试方法和调试器
CN110688153A (zh) * 2019-09-04 2020-01-14 深圳芯英科技有限公司 一种指令分支执行控制方法及相关设备、指令结构
WO2021042596A1 (zh) * 2019-09-04 2021-03-11 苏州浪潮智能科技有限公司 一种指令流水线处理方法、系统、设备及计算机存储介质
CN116521577A (zh) * 2023-07-03 2023-08-01 太初(无锡)电子科技有限公司 对分支预测失败的指令缓存快速处理的芯片系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0394711A2 (en) * 1989-04-28 1990-10-31 Kabushiki Kaisha Toshiba Branch instruction control unit based on a pipeline method
CN1397880A (zh) * 2001-05-04 2003-02-19 智慧第一公司 附有第二预测装置的假想分支目标地址高速缓存
CN101866280A (zh) * 2009-05-29 2010-10-20 威盛电子股份有限公司 微处理器及其执行方法
CN105718241A (zh) * 2016-01-18 2016-06-29 北京时代民芯科技有限公司 一种基于sparc v8体系结构的分类式混合分支预测系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0394711A2 (en) * 1989-04-28 1990-10-31 Kabushiki Kaisha Toshiba Branch instruction control unit based on a pipeline method
CN1397880A (zh) * 2001-05-04 2003-02-19 智慧第一公司 附有第二预测装置的假想分支目标地址高速缓存
CN101866280A (zh) * 2009-05-29 2010-10-20 威盛电子股份有限公司 微处理器及其执行方法
CN105718241A (zh) * 2016-01-18 2016-06-29 北京时代民芯科技有限公司 一种基于sparc v8体系结构的分类式混合分支预测系统

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984392A (zh) * 2018-06-12 2018-12-11 珠海市杰理科技股份有限公司 单步调试方法和调试器
CN108984392B (zh) * 2018-06-12 2021-07-16 珠海市杰理科技股份有限公司 单步调试方法和调试器
CN110688153A (zh) * 2019-09-04 2020-01-14 深圳芯英科技有限公司 一种指令分支执行控制方法及相关设备、指令结构
CN110688153B (zh) * 2019-09-04 2020-08-11 深圳芯英科技有限公司 一种指令分支执行控制方法及相关设备、指令结构
WO2021042596A1 (zh) * 2019-09-04 2021-03-11 苏州浪潮智能科技有限公司 一种指令流水线处理方法、系统、设备及计算机存储介质
US11915006B2 (en) 2019-09-04 2024-02-27 Inspur Suzhou Intelligent Technology Co., Ltd. Method, system and device for improved efficiency of pipeline processing of instructions, and computer storage medium
CN116521577A (zh) * 2023-07-03 2023-08-01 太初(无锡)电子科技有限公司 对分支预测失败的指令缓存快速处理的芯片系统及方法
CN116521577B (zh) * 2023-07-03 2023-10-13 太初(无锡)电子科技有限公司 对分支预测失败的指令缓存快速处理的芯片系统及方法

Also Published As

Publication number Publication date
CN106843816B (zh) 2019-06-18

Similar Documents

Publication Publication Date Title
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
JP5927616B2 (ja) ヒステリシスを伴う次フェッチプレディクタトレーニング
US9021240B2 (en) System and method for Controlling restarting of instruction fetching using speculative address computations
CN106843816A (zh) 一种分支预测控制方法及装置
CN108427576A (zh) 一种免受Spectre攻击的高性能推测执行算法
JP2014222529A (ja) 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置
KR20120058555A (ko) 조건부 비-분기 명령들의 비-실행을 예측하기 위한 방법들 및 장치들
CN104461758B (zh) 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
CN102662640B (zh) 双重分支目标缓冲器和分支目标处理系统及处理方法
US10853076B2 (en) Performing at least two branch predictions for non-contiguous instruction blocks at the same time using a prediction mapping
CN101770358A (zh) 微处理器跳转指令分支预测处理系统和方法
US20200065111A1 (en) Apparatus and method for performing branch prediction
JP3977931B2 (ja) データプロセッサにおける条件分岐実行を制御するための方法および装置
US20040225870A1 (en) Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor
US8977837B2 (en) Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes
US11379239B2 (en) Apparatus and method for making predictions for instruction flow changing instructions
US9086888B2 (en) Using a plurality of tables for improving performance in predicting branches in processor instructions
CN107870780B (zh) 数据处理装置和方法
US20050216713A1 (en) Instruction text controlled selectively stated branches for prediction via a branch target buffer
US9778934B2 (en) Power efficient pattern history table fetch in branch predictor
JP7510253B2 (ja) 分岐予測器
KR102379886B1 (ko) 벡터 명령 처리
US20190004805A1 (en) Multi-tagged branch prediction table
CN104035811B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180104

Address after: Jimo City, Shandong province 266200 Qingdao City Economic Development Zone Xincheng District blue Hengye building four

Applicant after: Qingdao special integrated circuit design engineering technology research center

Address before: 266000 Shandong city in Qingdao Province, the provincial Economic Development Zone Jimo District Xincheng Hengye building 4 Blue

Applicant before: QINGDAO LOGIC-SMART INFORMATION TECH. LTD.

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190618

Termination date: 20220123