CN112181497B - 一种分支目标预测地址在流水线中的传递方法和装置 - Google Patents
一种分支目标预测地址在流水线中的传递方法和装置 Download PDFInfo
- Publication number
- CN112181497B CN112181497B CN202011043668.6A CN202011043668A CN112181497B CN 112181497 B CN112181497 B CN 112181497B CN 202011043668 A CN202011043668 A CN 202011043668A CN 112181497 B CN112181497 B CN 112181497B
- Authority
- CN
- China
- Prior art keywords
- branch
- queue
- instruction
- prediction result
- address
- 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
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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- 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/30098—Register arrangements
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
Abstract
本发明公开了一种分支目标预测地址在流水线中的传递方法及装置,本发明方法包括初始化预测地址队列的读写指针和队列空闲项数寄存器;在取指阶段,根据分支方向预测结果,将预测跳转的分支的目标预测地址写入预测地址队列,并更新队列写指针和队列空闲项数寄存器;将分支方向预测结果随流水线逐级传递;在分派阶段分派预测跳转的分支指令时,使用读指针读取预测地址队列获取该分支的目标预测地址,并更新读指针和队列空闲项数寄存器;在发生流水线的清除操作时,重置预测地址队列的读写指针和队列空闲项数寄存器为初始值。本发明具有逻辑实现简单、面积开销小的优点。
Description
技术领域
本发明涉及微处理器设计技术领域的乱序多发射微处理器设计技术,具体涉及一种分支目标预测地址在流水线中的传递方法和装置。
背景技术
微处理器设计时,通过分支预测技术预测分支指令是否跳转以及跳转到哪个地址,也就是进行分支方向预测和分支目标预测。虽然随着分支预测技术的不断发展,分支预测的精度越来越高,但是仍然会存在分支预测错误的情况。为了判断分支预测是否正确,需要将分支预测阶段得到的方向预测结果和目标预测结果随流水线传递到分支执行部件。方向预测结果只有一位,为1表示预测为跳转,为0表示预测为不跳转;目标预测结果需要的位数取决于微处理器支持的虚拟地址的宽度,现在大部分微处理器都达到了48位,甚至更多。
当前主流商用微处理器几乎都采用深流水的乱序多发射结构,从指令取出到进入发射队列,要经过译码、重命名和分派等流水站,译码和重命名通常要分成多站才能得到主频更高的设计,并且同时译码和重命名的指令通常达到4条甚至更多。分支预测结果要经过流水线的译码、重命名和分派阶段的逐级寄存才能进入分支执行部件,而且某些流水站之间还设置有一定项数的缓冲区,这些缓冲区每项都要设置分支预测结果字段,但只有分支执行部件执行分支指令时需要读取分支预测结果,在译码、重命名和分派阶段并不需要这些信息,逐级寄存的目的仅是为了传递分支预测结果。另外,指令在经过译码、重命名和分派阶段时,流水线间传递的信息是所有指令需要的信息的全集,虽然只有分支指令需要传递分支预测结果,但是在进入执行部件前,所有指令都是带着分支预测结果字段的。这些都导致流水线的设计复杂,面积开销大。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种逻辑实现简单、面积开销小的分支目标预测地址在流水线中的传递方法和装置。
为了解决上述技术问题,本发明采用的技术方案为:
一种分支目标预测地址在流水线中的传递方法,包括:
1)初始化预测地址队列的读写指针和队列空闲项数寄存器;
2)在取指阶段,根据分支方向预测结果,将预测跳转的分支的目标预测地址写入预测地址队列,并更新队列写指针和队列空闲项数寄存器;
3)将分支方向预测结果随流水线逐级传递;
4)在分派阶段分派预测跳转的分支指令时,使用读指针读取预测地址队列获取该分支的目标预测地址,并更新读指针和队列空闲项数寄存器;
5)在发生流水线的清除操作时,重置预测地址队列的读写指针和队列空闲项数寄存器为初始值。
可选地,步骤1)中初始化预测地址队列的读写指针和队列空闲项数寄存器时,预测地址队列的写指针、读指针都指向预测地址队列的第0项,且队列空闲项数寄存器的初始值为预测地址队列的总项数N,N小于取指但是还没进入执行部件的指令的总数。
可选地,步骤2)中在取指阶段中每取出一个指令的执行步骤包括:
2.1)判断取出的是否是预测为跳转的分支指令,如果是则跳转执行步骤2.2);否则跳转执行步骤3);
2.2)判断队列空闲项数寄存器的值是否非零,如果是非零则判定预测地址队列有空闲项,跳转执行步骤2.3),否则继续等待直到预测地址队列有空闲项后再跳转执行步骤2.3);
2.3)针对跳转的分支指令,将分支目标预测地址写入预测地址队列的写指针指向的项,然后跳转执行步骤2.4);
2.4)将预测地址队列的写指针前进一项,将队列空闲项数寄存器的值减1,跳转执行步骤3)。
可选地,步骤3)中分支方向预测结果随指令在流水线中逐级传递是指:分支方向预测结果随指令在流水线中逐级传递,对于预测为跳转的分支,传递的值为1,对于非分支指令和预测为不跳转的分支指令,传递的值为0,且分支目标预测地址仅写入预测地址队列、不随流水线传递。
可选地,步骤4)中在分派阶段分派预测跳转的分支指令的步骤包括:
4.1)判断要分派的是否是预测为跳转的分支指令,如果是则跳转执行步骤4.2);否则跳转执行步骤5);
4.2)如果指令的随流水线逐级传递的分支方向预测结果为1,表示是预测为跳转的分支指令,则读取预测地址队列的读指针指向的项,读出结果即为该分支指令的目标预测地址,将该地址和逐级传递的方向预测结果一同送往分支执行部件,然后读指针前进一项并将队列空闲项数寄存器的值加1,如果读指针要前进到的项数超过了N-1,对其进行N的取模,使其折回到队列头,即前进到第0项;如果指令的逐级传递的分支方向预测结果为0,表示非分支指令或者预测为不跳转的分支指令,不需要读取预测地址队列,也不更新读指针和队列空闲项数寄存器;跳转执行步骤5)。
此外,本发明还提供一种分支目标预测地址在流水线中的传递装置,包括:
预测地址队列,为包含N项的先进先出队列,每一项的字段包含分支目标预测地址,预测地址队列具有一个写指针和一个读指针,所述预测地址队列的输入为取指部件输出的分支方向预测结果pred_dir和分支目标预测地址pred_target,如果分支方向预测结果pred_dir为1,则将分支目标预测地址pred_target写入写指针指向的项;
写指针及更新模块,包含一个保存写指针的寄存器Regw和该寄存器Regw的输入数据生成逻辑,输入数据生成逻辑由一个加1模N模块和一个2选1选择器WSM2组成;2选1选择器WSM2的两个输入分别是寄存器Regw的值和该值加1模N后的值,选择信号为取指部件输出的分支方向预测结果pred_dir,如果分支方向预测结果pred_dir为1,表示是预测为跳转的分支指令,那么选择寄存器Regw的值加1模N后的值,使得写指针前进一项,如果分支方向预测结果pred_dir为0,表示是非分支指令或预测为不跳转的分支指令,选择寄存器Regw的值,使得写指针保持不变;
分支方向预测结果传递模块,包含多个用于将取指部件输出的分支方向预测结果pred_dir随流水线逐级传递的寄存器,寄存器的个数取决于取指部件和执行部件之间流水线级数,分支方向预测结果传递模块的输出为分派时指令的分支方向预测结果pred_dir_q,分支方向预测结果pred_dir_q为1表示是预测跳转的分支指令,分支方向预测结果pred_dir_q为0表示是非分支指令或预测为不跳转的分支指令;
队列空闲项数寄存器及其更新模块,包含一个保存空闲项数的寄存器Regfc和该寄存器Regfc的输入数据生成逻辑,输入数据生成逻辑由一个加1模块、一个减1模块和一个3选1的多路选择器SM3组成;3选1多路选择器SM3的三个输入分别是寄存器Regfc的值、该值加1后的值和该值减1后的值,3选1多路选择器SM3的选择信号有两个,分别是取指部件输出的分支方向预测结果pred_dir和经过流水线逐级传递的分支方向预测结果pred_dir_q;当分支方向预测结果pred_dir为1、分支方向预测结果pred_dir_q为0时,表示取指阶段要向预测地址队列写入一项、分派时不需要读预测结果队列,队列空闲项数减少一项,选择寄存器Regfc的值减1后的值;当分支方向预测结果pred_dir为0、分支方向预测结果pred_dir_q为1时,表示取指阶段不需要向预测地址队列写入、分派时需要读预测结果队列读指针指向的项,读取后该项将被释放变成空闲项,选择寄存器Regfc的值加1后的值;当分支方向预测结果pred_dir为0、分支方向预测结果pred_dir_q也为0时,表示取指阶段不需要向预测地址队列写入、分派时也不需要读预测结果队列,队列空闲项数保持不变,选择寄存器Regfc的值;当分支方向预测结果pred_dir为1、分支方向预测结果pred_dir_q也为1时,表示取指阶段要向预测地址队列写入一项、分派时需要读预测结果队列读指针指向的项,队列分配出去一项的同时有一项被释放出来,队列空闲项数保持不变,选择寄存器Regfc的值;
预测地址队列读指针及其更新模块,包含一个保存读指针的寄存器Regr和该寄存器Regr的输入数据生成逻辑,输入数据生成逻辑由一个加1模N模块和一个2选1选择器RSM2组成;2选1选择器RSM2的两个输入分别是寄存器Regr的值和该值加1模N后的值,选择信号为分支方向预测结果传递模块输出的分支方向预测结果pred_dir_q,如果分支方向预测结果pred_dir_q为1,表示分派的是预测为跳转的分支指令,那么选择寄存器Regr的值加1模N后的值,将读指针前进一项,如果分支方向预测结果pred_dir_q为0,表示分派的是非分支指令或预测为不跳转的分支指令,选择寄存器Regr的值,读指针保持不变;
分支目标预测地址读取模块,包含一个N选1的多路选择器SMN,所述多路选择器SMN的N个输入数据为预测地址队列的N项的数据,选择信号为读指针;读指针为n时,选择预测地址队列第n项的值,其中0≤n<N;分支目标预测地址读取模块的输出pred_target_q为分派时预测为跳转的分支指令的目标预测地址,该地址连同分支方向预测结果传递模块的输出分支方向预测结果pred_dir_q送给分支执行部件。
此外,本发明还提供一种分支目标预测地址在流水线中的传递装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述分支目标预测地址在流水线中的传递方法的步骤。
此外,本发明还提供一种计算机设备,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述分支目标预测地址在流水线中的传递方法的步骤。
此外,本发明还提供一种计算机设备,包括相互连接的微处理器和存储器,该存储器中存储有被编程或配置以执行所述分支目标预测地址在流水线中的传递方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述分支目标预测地址在流水线中的传递方法的计算机程序。
和现有技术相比,本发明分支目标预测地址在流水线中的传递方法具有下述优点:
1、逻辑实现简单。本发明在取指阶段将预测为跳转的分支指令的目标预测地址写入预测地址队列,在分派时读取该队列获取预测为跳转的分支的目标预测地址,不需要经过流水线逐级传递分支目标预测地址,逻辑实现简单。
2、面积开销小。本发明只需要实现一个预测地址队列和相关的读写逻辑,该队列的项数小于取指后还未进入执行部件的指令总数,也就是少于各级流水线为了传递分支目标预测地址而实现的寄存器的个数,同时也节省了传递分支目标预测地址所需要的控制逻辑,减小了面积开销。预测地址队列的项数越少,面积开销越小,但取指暂停的可能性也会越大,从而可能影响微处理器的性能,所以需要在设计时进行综合考虑。
本发明分支目标预测地址在流水线中的传递装置为与前所述分支目标预测地址在流水线中的传递方法相对应的结构部件,因此具有与前述分支目标预测地址在流水线中的传递方法相同的技术效果,在此不再赘述。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为应用本发明实施例装置的结构示意图。
图3为本发明实施例方法的详细实施流程示意图。
具体实施方式
如图1所示,本实施例分支目标预测地址在流水线中的传递方法包括:
1)初始化预测地址队列的读写指针和队列空闲项数寄存器;
2)在取指阶段,根据分支方向预测结果,将预测跳转的分支的目标预测地址写入预测地址队列,并更新队列写指针和队列空闲项数寄存器;
3)将分支方向预测结果随流水线逐级传递;
4)在分派阶段分派预测跳转的分支指令时,使用读指针读取预测地址队列获取该分支的目标预测地址,并更新读指针和队列空闲项数寄存器;
5)在发生流水线的清除操作时,重置预测地址队列的读写指针和队列空闲项数寄存器为初始值。
本实施例中,预测地址队列(记为pred_target_queue)项数设置为N,N小于取指但是还没进入执行部件的指令的总数;该队列的每项只有一个字段,即分支目标预测地址字段,该字段的宽度为微处理器虚拟地址的位数。
本实施例中,步骤1)中初始化预测地址队列的读写指针和队列空闲项数寄存器时,预测地址队列的写指针(记为wr_ptr)、读指针(记为rd_ptr)都指向预测地址队列的第0项,且队列空闲项数寄存器(记为free_cnt,用于保存预测地址队列空闲项的数目)的初始值为预测地址队列的总项数N,N小于取指但是还没进入执行部件的指令的总数。
在取指阶段,根据指令类型和分支预测结果决定如何更新预测地址队列和队列空闲项数寄存器。如果取出的指令包含分支指令,并且该分支指令预测为跳转,那么需要判断队列空闲项数寄存器的值是否为0,如果为0,表示当前预测地址队列已经没有空闲项,取指暂停,直到有空闲项为止;如果队列空闲项数寄存器的值不为0,则将分支目标预测地址写入预测地址队列中写指针指向的项,然后将写指针前进一项,并将队列空闲项数寄存器的值减1。如果写指针要前进到的项数超过了N-1,对其进行N的取模,使其折回到队列头,即前进到第0项。如果取出的指令都是非分支指令,或者包含的分支指令预测为不跳转,不需要更新预测地址队列和队列空闲项数寄存器;本实施例中,步骤2)中在取指阶段中每取出一个指令的执行步骤包括:
2.1)判断取出的是否是预测为跳转的分支指令,如果是则跳转执行步骤2.2);否则跳转执行步骤3);
2.2)判断队列空闲项数寄存器的值是否非零,如果是非零则判定预测地址队列有空闲项,跳转执行步骤2.3),否则继续等待直到预测地址队列有空闲项后再跳转执行步骤2.3);
2.3)针对跳转的分支指令,将分支目标预测地址写入预测地址队列的写指针指向的项,然后跳转执行步骤2.4);
2.4)将预测地址队列的写指针前进一项,将队列空闲项数寄存器的值减1,跳转执行步骤3)。
如图3所示,步骤3)中分支方向预测结果随指令在流水线中逐级传递是指:分支方向预测结果随指令在流水线中逐级传递,对于预测为跳转的分支,传递的值为1,对于非分支指令和预测为不跳转的分支指令,传递的值为0,且分支目标预测地址仅写入预测地址队列、不随流水线传递。
如图3所示,步骤4)中在分派阶段分派预测跳转的分支指令的步骤包括:
4.1)判断要分派的是否是预测为跳转的分支指令,如果是则跳转执行步骤4.2);否则跳转执行步骤5);
4.2)如果指令的随流水线逐级传递的分支方向预测结果为1,表示是预测为跳转的分支指令,则读取预测地址队列的读指针指向的项,读出结果即为该分支指令的目标预测地址,将该地址和逐级传递的方向预测结果一同送往分支执行部件,然后读指针前进一项并将队列空闲项数寄存器的值加1,如果读指针要前进到的项数超过了N-1,对其进行N的取模,使其折回到队列头,即前进到第0项;如果指令的逐级传递的分支方向预测结果为0,表示非分支指令或者预测为不跳转的分支指令,不需要读取预测地址队列,也不更新读指针和队列空闲项数寄存器;跳转执行步骤5)。
本实施例中,步骤5)中指令执行过程中发生了异常或者分支误预测需要清除流水线时,预测地址队列的写指针和读指针都回到第0项,队列空闲项数寄存器的值重置为预测地址队列的总项数N。
综上所述,本发明分支目标预测地址在流水线中的传递方法实现了一个项数小于取指后还未进入执行部件的指令总数的预测地址队列,取指阶段将预测为跳转的分支指令的目标预测地址写入该队列,在分派时读取该队列获取预测为跳转的分支的目标预测地址,不需要经过流水线逐级传递分支目标预测地址。本发明分支目标预测地址在流水线中的传递方法逻辑实现简单,面积开销小。
如图2所示,本发明还提供一种分支目标预测地址在流水线中的传递装置,包括:
预测地址队列1(pred_target_queue),为包含N项的先进先出队列,每一项的字段包含分支目标预测地址,预测地址队列1具有一个写指针和一个读指针,所述预测地址队列1的输入为取指部件输出的分支方向预测结果pred_dir和分支目标预测地址pred_target,如果分支方向预测结果pred_dir为1,则将分支目标预测地址pred_target写入写指针指向的项;
写指针及更新模块2,包含一个保存写指针的寄存器Regw和该寄存器Regw的输入数据生成逻辑,输入数据生成逻辑由一个加1模N模块和一个2选1选择器WSM2组成;2选1选择器WSM2的两个输入分别是寄存器Regw的值和该值加1模N后的值,选择信号为取指部件输出的分支方向预测结果pred_dir,如果分支方向预测结果pred_dir为1,表示是预测为跳转的分支指令,那么选择寄存器Regw的值加1模N后的值,使得写指针前进一项,如果分支方向预测结果pred_dir为0,表示是非分支指令或预测为不跳转的分支指令,选择寄存器Regw的值,使得写指针保持不变;
分支方向预测结果传递模块3,包含多个用于将取指部件输出的分支方向预测结果pred_dir随流水线逐级传递的寄存器,寄存器的个数取决于取指部件和执行部件之间流水线级数,分支方向预测结果传递模块3的输出为分派时指令的分支方向预测结果pred_dir_q,分支方向预测结果pred_dir_q为1表示是预测跳转的分支指令,分支方向预测结果pred_dir_q为0表示是非分支指令或预测为不跳转的分支指令;
队列空闲项数寄存器及其更新模块4,包含一个保存空闲项数的寄存器Regfc和该寄存器Regfc的输入数据生成逻辑,输入数据生成逻辑由一个加1模块、一个减1模块和一个3选1的多路选择器SM3组成;3选1多路选择器SM3的三个输入分别是寄存器Regfc的值、该值加1后的值和该值减1后的值,3选1多路选择器SM3的选择信号有两个,分别是取指部件输出的分支方向预测结果pred_dir和经过流水线逐级传递的分支方向预测结果pred_dir_q;当分支方向预测结果pred_dir为1、分支方向预测结果pred_dir_q为0时,表示取指阶段要向预测地址队列1写入一项、分派时不需要读预测结果队列,队列空闲项数减少一项,选择寄存器Regfc的值减1后的值;当分支方向预测结果pred_dir为0、分支方向预测结果pred_dir_q为1时,表示取指阶段不需要向预测地址队列1写入、分派时需要读预测结果队列读指针指向的项,读取后该项将被释放变成空闲项,选择寄存器Regfc的值加1后的值;当分支方向预测结果pred_dir为0、分支方向预测结果pred_dir_q也为0时,表示取指阶段不需要向预测地址队列1写入、分派时也不需要读预测结果队列,队列空闲项数保持不变,选择寄存器Regfc的值;当分支方向预测结果pred_dir为1、分支方向预测结果pred_dir_q也为1时,表示取指阶段要向预测地址队列1写入一项、分派时需要读预测结果队列读指针指向的项,队列分配出去一项的同时有一项被释放出来,队列空闲项数保持不变,选择寄存器Regfc的值;
预测地址队列读指针及其更新模块5,包含一个保存读指针的寄存器Regr和该寄存器Regr的输入数据生成逻辑,输入数据生成逻辑由一个加1模N模块和一个2选1选择器RSM2组成;2选1选择器RSM2的两个输入分别是寄存器Regr的值和该值加1模N后的值,选择信号为分支方向预测结果传递模块3输出的分支方向预测结果pred_dir_q,如果分支方向预测结果pred_dir_q为1,表示分派的是预测为跳转的分支指令,那么选择寄存器Regr的值加1模N后的值,将读指针前进一项,如果分支方向预测结果pred_dir_q为0,表示分派的是非分支指令或预测为不跳转的分支指令,选择寄存器Regr的值,读指针保持不变;
分支目标预测地址读取模块6,包含一个N选1的多路选择器SMN,所述多路选择器SMN的N个输入数据为预测地址队列1的N项的数据,选择信号为读指针;读指针为n时,选择预测地址队列1第n项的值,其中0≤n<N;分支目标预测地址读取模块的输出pred_target_q为分派时预测为跳转的分支指令的目标预测地址,该地址连同分支方向预测结果传递模块3的输出分支方向预测结果pred_dir_q送给分支执行部件。
此外,本实施例还提供一种分支目标预测地址在流水线中的传递装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述分支目标预测地址在流水线中的传递方法的步骤。
此外,本实施例还提供一种计算机设备,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述分支目标预测地址在流水线中的传递方法的步骤。
此外,本实施例还提供一种计算机设备,包括相互连接的微处理器和存储器,该存储器中存储有被编程或配置以执行所述分支目标预测地址在流水线中的传递方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述分支目标预测地址在流水线中的传递方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种分支目标预测地址在流水线中的传递方法,其特征在于,包括:
1)初始化预测地址队列的读写指针和队列空闲项数寄存器;
2)在取指阶段,根据分支方向预测结果,将预测跳转的分支的目标预测地址写入预测地址队列,并更新队列写指针和队列空闲项数寄存器;
3)将分支方向预测结果随流水线逐级传递;
4)在分派阶段分派预测跳转的分支指令时,使用读指针读取预测地址队列获取该分支的目标预测地址,并更新读指针和队列空闲项数寄存器;
5)在发生流水线的清除操作时,重置预测地址队列的读写指针和队列空闲项数寄存器为初始值;
步骤3)中分支方向预测结果随指令在流水线中逐级传递是指:分支方向预测结果随指令在流水线中逐级传递,对于预测为跳转的分支,传递的值为1,对于非分支指令和预测为不跳转的分支指令,传递的值为0,且分支目标预测地址仅写入预测地址队列、不随流水线传递。
2.根据权利要求1所述的分支目标预测地址在流水线中的传递方法,其特征在于,步骤1)中初始化预测地址队列的读写指针和队列空闲项数寄存器时,预测地址队列的写指针、读指针都指向预测地址队列的第0项,且队列空闲项数寄存器的初始值为预测地址队列的总项数N,N小于取指但是还没进入执行部件的指令的总数。
3.根据权利要求1所述的分支目标预测地址在流水线中的传递方法,其特征在于,步骤2)中在取指阶段中每取出一个指令的执行步骤包括:
2.1)判断取出的是否是预测为跳转的分支指令,如果是则跳转执行步骤2.2);否则跳转执行步骤3);
2.2)判断队列空闲项数寄存器的值是否非零,如果是非零则判定预测地址队列有空闲项,跳转执行步骤2.3),否则继续等待直到预测地址队列有空闲项后再跳转执行步骤2.3);
2.3)针对跳转的分支指令,将分支目标预测地址写入预测地址队列的写指针指向的项,然后跳转执行步骤2.4);
2.4)将预测地址队列的写指针前进一项,将队列空闲项数寄存器的值减1,跳转执行步骤3)。
4.根据权利要求1所述的分支目标预测地址在流水线中的传递方法,其特征在于,步骤4)中在分派阶段分派预测跳转的分支指令的步骤包括:
4.1)判断要分派的是否是预测为跳转的分支指令,如果是则跳转执行步骤4.2);否则跳转执行步骤5);
4.2)如果指令的随流水线逐级传递的分支方向预测结果为1,表示是预测为跳转的分支指令,则读取预测地址队列的读指针指向的项,读出结果即为该分支指令的目标预测地址,将该地址和逐级传递的方向预测结果一同送往分支执行部件,然后读指针前进一项并将队列空闲项数寄存器的值加1,如果读指针要前进到的项数超过了N-1,对其进行N的取模,使其折回到队列头,即前进到第0项;如果指令的逐级传递的分支方向预测结果为0,表示非分支指令或者预测为不跳转的分支指令,不需要读取预测地址队列,也不更新读指针和队列空闲项数寄存器;跳转执行步骤5)。
5.一种分支目标预测地址在流水线中的传递装置,其特征在于,包括:
预测地址队列,为包含N项的先进先出队列,每一项的字段包含分支目标预测地址,预测地址队列具有一个写指针和一个读指针,所述预测地址队列的输入为取指部件输出的分支方向预测结果pred_dir和分支目标预测地址pred_target,如果分支方向预测结果pred_dir为1,则将分支目标预测地址pred_target写入写指针指向的项;
写指针及更新模块,包含一个保存写指针的寄存器Regw和该寄存器Regw的输入数据生成逻辑,输入数据生成逻辑由一个加1模N模块和一个2选1选择器WSM2组成;2选1选择器WSM2的两个输入分别是寄存器Regw的值和该值加1模N后的值,选择信号为取指部件输出的分支方向预测结果pred_dir,如果分支方向预测结果pred_dir为1,表示是预测为跳转的分支指令,那么选择寄存器Regw的值加1模N后的值,使得写指针前进一项,如果分支方向预测结果pred_dir为0,表示是非分支指令或预测为不跳转的分支指令,选择寄存器Regw的值,使得写指针保持不变;
分支方向预测结果传递模块,包含多个用于将取指部件输出的分支方向预测结果pred_dir随流水线逐级传递的寄存器,寄存器的个数取决于取指部件和执行部件之间流水线级数,分支方向预测结果传递模块的输出为分派时指令的分支方向预测结果pred_dir_q,分支方向预测结果pred_dir_q为1表示是预测跳转的分支指令,分支方向预测结果pred_dir_q为0表示是非分支指令或预测为不跳转的分支指令;
队列空闲项数寄存器及其更新模块,包含一个保存空闲项数的寄存器Regfc和该寄存器Regfc的输入数据生成逻辑,输入数据生成逻辑由一个加1模块、一个减1模块和一个3选1的多路选择器SM3组成;3选1多路选择器SM3的三个输入分别是寄存器Regfc的值、该值加1后的值和该值减1后的值,3选1多路选择器SM3的选择信号有两个,分别是取指部件输出的分支方向预测结果pred_dir和经过流水线逐级传递的分支方向预测结果pred_dir_q;当分支方向预测结果pred_dir为1、分支方向预测结果pred_dir_q为0时,表示取指阶段要向预测地址队列写入一项、分派时不需要读预测结果队列,队列空闲项数减少一项,选择寄存器Regfc的值减1后的值;当分支方向预测结果pred_dir为0、分支方向预测结果pred_dir_q为1时,表示取指阶段不需要向预测地址队列写入、分派时需要读预测结果队列读指针指向的项,读取后该项将被释放变成空闲项,选择寄存器Regfc的值加1后的值;当分支方向预测结果pred_dir为0、分支方向预测结果pred_dir_q也为0时,表示取指阶段不需要向预测地址队列写入、分派时也不需要读预测结果队列,队列空闲项数保持不变,选择寄存器Regfc的值;当分支方向预测结果pred_dir为1、分支方向预测结果pred_dir_q也为1时,表示取指阶段要向预测地址队列写入一项、分派时需要读预测结果队列读指针指向的项,队列分配出去一项的同时有一项被释放出来,队列空闲项数保持不变,选择寄存器Regfc的值;
预测地址队列读指针及其更新模块,包含一个保存读指针的寄存器Regr和该寄存器Regr的输入数据生成逻辑,输入数据生成逻辑由一个加1模N模块和一个2选1选择器RSM2组成; 2选1选择器RSM2的两个输入分别是寄存器Regr的值和该值加1模N后的值,选择信号为分支方向预测结果传递模块输出的分支方向预测结果pred_dir_q,如果分支方向预测结果pred_dir_q为1,表示分派的是预测为跳转的分支指令,那么选择寄存器Regr的值加1模N后的值,将读指针前进一项,如果分支方向预测结果pred_dir_q为0,表示分派的是非分支指令或预测为不跳转的分支指令,选择寄存器Regr的值,读指针保持不变;
分支目标预测地址读取模块,包含一个N选1的多路选择器SMN,所述多路选择器SMN的N个输入数据为预测地址队列的N项的数据,选择信号为读指针;读指针为n时,选择预测地址队列第n项的值,其中0≤n<N;分支目标预测地址读取模块的输出pred_target_q为分派时预测为跳转的分支指令的目标预测地址,该地址连同分支方向预测结果传递模块的输出分支方向预测结果pred_dir_q送给分支执行部件。
6.一种分支目标预测地址在流水线中的传递装置,包括相互连接的微处理器和存储器,其特征在于,该微处理器被编程或配置以执行权利要求1~4中任意一项所述分支目标预测地址在流水线中的传递方法的步骤。
7.一种计算机设备,包括相互连接的微处理器和存储器,其特征在于,该微处理器被编程或配置以执行权利要求1~4中任意一项所述分支目标预测地址在流水线中的传递方法的步骤。
8.一种计算机设备,包括相互连接的微处理器和存储器,其特征在于,该存储器中存储有被编程或配置以执行权利要求1~4中任意一项所述分支目标预测地址在流水线中的传递方法的计算机程序。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~4中任意一项所述分支目标预测地址在流水线中的传递方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011043668.6A CN112181497B (zh) | 2020-09-28 | 2020-09-28 | 一种分支目标预测地址在流水线中的传递方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011043668.6A CN112181497B (zh) | 2020-09-28 | 2020-09-28 | 一种分支目标预测地址在流水线中的传递方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181497A CN112181497A (zh) | 2021-01-05 |
CN112181497B true CN112181497B (zh) | 2022-07-19 |
Family
ID=73947169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011043668.6A Active CN112181497B (zh) | 2020-09-28 | 2020-09-28 | 一种分支目标预测地址在流水线中的传递方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181497B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1542625A (zh) * | 2003-01-14 | 2004-11-03 | 智权第一公司 | 有效更新分支目标地址快取的装置与方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119222A (en) * | 1996-12-23 | 2000-09-12 | Texas Instruments Incorporated | Combined branch prediction and cache prefetch in a microprocessor |
US7552318B2 (en) * | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
US10564976B2 (en) * | 2017-11-30 | 2020-02-18 | International Business Machines Corporation | Scalable dependency matrix with multiple summary bits in an out-of-order processor |
CN110597556B (zh) * | 2019-09-09 | 2021-08-13 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
-
2020
- 2020-09-28 CN CN202011043668.6A patent/CN112181497B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1542625A (zh) * | 2003-01-14 | 2004-11-03 | 智权第一公司 | 有效更新分支目标地址快取的装置与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112181497A (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5790822A (en) | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor | |
US6898699B2 (en) | Return address stack including speculative return address buffer with back pointers | |
JP5512803B2 (ja) | ベクトル命令を取り扱うためのデータ処理装置および方法 | |
US8904153B2 (en) | Vector loads with multiple vector elements from a same cache line in a scattered load operation | |
US5604878A (en) | Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path | |
US9304774B2 (en) | Processor with a coprocessor having early access to not-yet issued instructions | |
US20140089636A1 (en) | Caching optimized internal instructions in loop buffer | |
CN102508635A (zh) | 一种处理器装置及其循环处理方法 | |
CN101884025B (zh) | 用于使过程返回序列加速的方法和系统 | |
US10303399B2 (en) | Data processing apparatus and method for controlling vector memory accesses | |
CN105005463A (zh) | 具有世代重命名的计算机处理器 | |
EP1974254B1 (en) | Early conditional selection of an operand | |
JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
JP2009524167A5 (zh) | ||
EP1354267A2 (en) | A superscalar processor having content addressable memory structures for determining dependencies | |
EP1220091B1 (en) | Circuit and method for instruction compression and dispersal in VLIW processors | |
US6295601B1 (en) | System and method using partial trap barrier instruction to provide trap barrier class-based selective stall of instruction processing pipeline | |
CN112181497B (zh) | 一种分支目标预测地址在流水线中的传递方法和装置 | |
CN110073332B (zh) | 数据处理装置和方法 | |
EP0496407A2 (en) | Parallel pipelined instruction processing system for very long instruction word | |
US5903918A (en) | Program counter age bits | |
JP4996945B2 (ja) | データ処理装置、データ処理方法 | |
US20080222392A1 (en) | Method and arrangements for pipeline processing of instructions | |
CN101042641B (zh) | 一种具有动态提交流水线功能的数字信号处理器 | |
CN113703841B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |