CN115328552B - 一种低成本高效分支预测器实现方法 - Google Patents
一种低成本高效分支预测器实现方法Info
- Publication number
- CN115328552B CN115328552B CN202210917761.8A CN202210917761A CN115328552B CN 115328552 B CN115328552 B CN 115328552B CN 202210917761 A CN202210917761 A CN 202210917761A CN 115328552 B CN115328552 B CN 115328552B
- Authority
- CN
- China
- Prior art keywords
- branch
- instruction
- prediction
- conditional
- reduced
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种低成本高效分支预测器实现方法,本发明实现的分支预测器包括一条基本的条件分支预测通道,用于面向取值宽度内第一条分支指令的分支预测;n条缩减的条件分支预测通道,用于面向取值宽度内除第一条分支指令以外的其余各条分支指令的分支预测,任意第i条缩减的条件分支预测通道用于面向取值宽度内第i+1条分支指令的分支预测;门电路,用于在基本的条件分支预测通道和各条缩减的条件分支预测通道间选择预测结果输出。本发明能对取指宽度内的多条条件分支指令进行预测,缓解单分支预测器内条件分支指令冲突的情况,提高分支预测器的预测准确率,且具有存储开销小,设计逻辑简单、对传统的分支预测器的修改设计实现简单的优点。
Description
技术领域
本发明涉及微处理器设计领域,具体涉及一种低成本高效分支预测器实现方法。
背景技术
分支预测器是当今高性能微处理器中必不可少的组件,其通过预测分支指令的分支行为来解决控制相关的问题,因此分支预测器的预测准确率成为了提高微处理器性能的关键。在处理器内部,分支指令可以根据分支行为发生的条件被分为两大类,其一是非条件分支指令,只要该类指令生效,则必然会发生跳转行为。其二是条件分支指令,其跳转行为与具体的处理器状态有关,较难对该类分支指令进行预测,如今的条件分支预测器通常会记录历史的分支指令跳转信息,并通过历史信息来预测将来的分支指令行为。
在超标量处理器中,由于可以同时发射多条指令,因此必须要求前端每拍提供多条指令,较宽的取指宽度(Fetch Width,FW)下便会存在一次取出多条条件分支指令的情况,这便给分支预测器的性能造成了影响,如图1所示,在该取指宽度(256bits)内共存在两条条件分支指令,分别是br0和br1。在基于块预测的策略下,分支预测器每次只能对一条分支指令进行预测,这样的多分支指令的预测便会在分支预测器和分支目标缓存(BranchTarget Buffer,BTB)中造成冲突,分支预测器内存储了与分支指令历史分支行为信息,而分支目标缓存BTB内存储了分支指令的分支目标信息,这里的冲突能够影响分支预测器的预测性能。现如今比较常规的操作方式是将分支预测器以及分支目标缓存BTB按照取指宽度内的指令数量进行复制,让每一个单独的分支预测器以及分支目标缓存BTB只预测取指宽度内的一条指令的分支行为,通过资源消耗的代价进行基于指令的预测。这极大的缓解了由于取指宽度内存在多条分支指令时的冲突情况。但是与此同时带来的分支预测表以及分支目标缓存BTB的存储开销极大地消耗了硬件存储资源,相比于基于块预测的分支预测器,在取指宽度为N条指令的情况下,该种预测方式的存储开销是传统的N倍,在对处理器资源有限的场景,比如低成本嵌入式领域,这样的存储开销基本是不可接受的,因此在嵌入式超标量处理器内,需要一种资源开销不大,并且适用于多取指条件下的分支预测器。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种低成本高效分支预测器实现方法,本发明旨在解决超标量处理器中取指宽度内存在多条条件分支指令造成的分支指令在分支预测表和分支目标缓存的内冲突,进而影响分支预测准确率的问题,本发明能够对取指宽度内的多条条件分支指令进行预测,缓解单个分支预测器内条件分支指令冲突的情况,进而提高分支预测器的预测准确率,且具有存储开销小,设计逻辑简单、对传统的分支预测器的修改设计实现简单。
为了解决上述技术问题,本发明采用的技术方案为:
一种低成本高效分支预测器实现方法,所实现的分支预测器包括:
一条基本的条件分支预测通道,用于面向取值宽度内第一条分支指令的分支预测;
n条缩减的条件分支预测通道,用于面向取值宽度内除第一条分支指令以外的其余各条分支指令的分支预测,任意第i条缩减的条件分支预测通道用于面向取值宽度内第i+1条分支指令的分支预测,其中n为大于等于1的自然数,i的取值范围为[1,n];
门电路,用于在基本的条件分支预测通道和各条缩减的条件分支预测通道之间选择预测结果并输出,且仅在取值宽度内任意第i+1条分支指令的分支预测结果取决于前第i条分支指令的分支预测结果,只有前第i条分支指令的分支预测结果均为不跳转时才输出第i+1条分支指令的分支预测结果,若任意第i条分支指令的分支预测结果为跳转,则第i条分支指令以后的所有分支指令的分支预测结果均不输出。
可选地,所述基本的条件分支预测通道以及缩减的条件分支预测通道均包括分支预测器和分支目标缓存,所述分支预测器采用分支预测表存储与分支指令历史分支行为信息,所述分支目标缓存用于存储分支指令的分支目标信息,所述缩减的条件分支预测通道和基本的条件分支预测通道相比,分支预测表的历史长度比更短、表项数量更少,分支目标缓存的表项数量更少。
可选地,所述分支目标缓存中每一个表项的字段均包括分支指令的高位地址BA、分支偏移量BO、分支类型BY以及分支目标地址BT。
可选地,所述基本的条件分支预测通道包括基本的分支预测器TAGE和基本的分支目标缓存LBTB,所述缩减的条件分支预测通道包括缩减的分支预测器RTAGE和缩减的分支目标缓存RBTB,所述缩减的分支预测器RTAGE和基本的分支预测器TAGE相比结构相同但其分支预测表历史长度比更短、表项数量更少;所述基本的分支目标缓存LBTB和缩减的分支目标缓存RBTB相比结构相同但表项数量更少。
可选地,包括对条件分支指令执行预测操作的步骤:
S101,基于取指宽度FW对条件分支指令的指令地址进行裁剪,然后送入基本的条件分支预测通道以及缩减的条件分支预测通道;
S102,基本的条件分支预测通道以及缩减的条件分支预测通道分别对裁剪后的指令地址进行分支预测,并通过门电路在基本的条件分支预测通道和各条缩减的条件分支预测通道之间选择预测结果并输出,且仅在取值宽度内任意第i+1条分支指令的分支预测结果取决于前第i条分支指令的分支预测结果,只有前第i条分支指令的分支预测结果均为不跳转时才输出第i+1条分支指令的分支预测结果,若任意第i条分支指令的分支预测结果为跳转,则第i条分支指令以后的所有分支指令的分支预测结果均不输出。
可选地,步骤S101中进行裁剪是指将指令地址右移log2FW位,其中FW为取指宽度。
可选地,步骤S102中基本的条件分支预测通道以及缩减的条件分支预测通道分别对裁剪后的指令地址进行分支预测时,所述基本的条件分支预测通道进行分支预测以及缩减的条件分支预测通道进行预测操作的步骤包括:首先读取分支目标缓存的表项内容,若裁剪后的指令地址中的高位地址、表项内容中的分支指令的高位地址BA相同,则判定基本的条件分支预测通道命中,将裁剪后的指令地址左移log2FW位加上表项内容中的分支偏移量BO后作为分支地址,将表项内容中的分支目标地址BT作为分支目标地址,针对分支地址和分支目标地址执行分支预测并输出分支预测结果;否则,不输出任何分支跳转信息,结束当前的预测过程。
可选地,还包括分支预测器在收到分支指令执行完毕的反馈后针对该分支指令执行更新操作的步骤:检查该分支指令的指令类型和地址,若该分支指令的位置大于上一条执行更新操作的分支指令的位置,且该分支指令和上一条执行更新操作的分支指令的位置在同一个取指宽度FW内,则将上一条执行更新操作的分支指令信息写入基本的条件分支预测通道的分支预测表和分支目标缓存中,将该分支指令的分支指令信息写入缩减的条件分支预测通道的分支预测表和分支目标缓存中以使得执行预测操作时使用相同的历史信息同时访问基本的条件分支预测通道和缩减的条件分支预测通道。
此外,本发明还提供一种超标量处理器,包括相互连接的取指部件和分支预测器,所述分支预测器为所述低成本高效分支预测器实现方法实现的分支预测器。
此外,本发明还提供一种计算机设备,包括相互连接的微处理器和存储器,所述微处理器为所述的超标量处理器。
和现有技术相比,本发明主要具有下述优点:
1、本发明能够对取指宽度内的多条条件分支指令进行预测,缓解单个分支预测器内条件分支指令冲突的情况,进而提高分支预测器的预测准确率。
2、本发明存储开销小,相比于传统的分支预测器,存储开销将大幅度下降。
3、本发明设计逻辑简单,该种分支预测器与传统的分支预测器预测原理基本相同,因此修改的逻辑设计较为简单。
附图说明
图1为现有技术一次取出多条条件分支指令的示意图。
图2为本发明实施例中分支预测器的结构示意图。
图3为本发明实施例中n=1时的分支预测器的结构示例。
图4为本发明实施例中分支目标缓存中每一个表项的字段结构图。
具体实施方式
如图2所示,本实施例提供一种低成本高效分支预测器实现方法,本实施例方法所实现的分支预测器包括:
一条基本的条件分支预测通道,用于面向取值宽度内第一条分支指令的分支预测;
n条缩减的条件分支预测通道(记为缩减的条件分支预测通道1~缩减的条件分支预测通道n),用于面向取值宽度内除第一条分支指令以外的其余各条分支指令的分支预测,任意第i条缩减的条件分支预测通道用于面向取值宽度内第i+1条分支指令的分支预测,其中n为大于等于1的自然数,i的取值范围为[1,n];
门电路,用于在基本的条件分支预测通道和各条缩减的条件分支预测通道之间选择预测结果并输出,且仅在取值宽度内任意第i+1条分支指令的分支预测结果取决于前第i条分支指令的分支预测结果,只有前第i条分支指令的分支预测结果均为不跳转时才输出第i+1条分支指令的分支预测结果,若任意第i条分支指令的分支预测结果为跳转,则第i条分支指令以后的所有分支指令的分支预测结果均不输出。
如图3所示为n=1时本实施例用于超标量处理器的分支预测器的结构示例,即在一条基本的条件分支预测通道的基础上,增加了一条缩减的条件分支预测通道,从而可面向同一取指宽度内存在两条条件分支指令的情况进行预测。
本实施例中,基本的条件分支预测通道以及缩减的条件分支预测通道均包括分支预测器和分支目标缓存,所述分支预测器采用分支预测表存储与分支指令历史分支行为信息,所述分支目标缓存用于存储分支指令的分支目标信息,所述缩减的条件分支预测通道和基本的条件分支预测通道相比,分支预测表的历史长度比更短、表项数量更少,分支目标缓存的表项数量更少。
如图3所示,本实施例中基本的条件分支预测通道包括基本的分支预测器TAGE和基本的分支目标缓存LBTB(Local BTB),所述缩减的条件分支预测通道包括缩减的分支预测器RTAGE(Reduced TAGE)和缩减的分支目标缓存RBTB(Reduced Branch TargetBuffer),所述缩减的分支预测器RTAGE和基本的分支预测器TAGE相比结构相同但其分支预测表历史长度比更短、表项数量更少;所述基本的分支目标缓存LBTB和缩减的分支目标缓存RBTB相比结构相同但表项数量更少。其中,缩减的分支目标缓存RBTB与缩减的分支预测器RTAGE成对增设,可通过增设n对缩减的分支目标缓存RBTB与缩减的分支预测器RTAGE,用以支持取指宽度内的n+1条分支指令的预测。
如图4所示,所述分支目标缓存中每一个表项的字段均包括分支指令的高位地址BA、分支偏移量BO、分支类型BY以及分支目标地址BT。
基本的条件分支预测通路主要面向取指宽度内所遇到的第一条条件分支指令,而缩减的条件分支预测通路则面向取指宽度内所遇到的第二条条件分支指令,这两条条件分支指令被同时从存储器中取出,因此第二条条件分支指令的预测行为输出与否取决于第一条分支指令的预测行为,倘若第一条条件分支指令预测跳转,则第二条条件分支指令的预测结果不输出,倘若第一条条件分支指令的预测不跳转,则第二条条件分支指令的预测结果输出。该预测原理可以拓展到n+1条分支指令的情况。在当分支预测器更新时,默认将当前分支指令的更新信息写入基本的分支预测器TAGE和基本的分支目标缓存LBTB之中,但分支预测器内部会保留连续两条分支指令的更新信息,倘若这连续的两条分支指令均在同一个取值宽度FW内,且当前分支指令的指令位置大于前一条分支指令的指令位置,则会将当前分支指令的更新信息写入缩减的分支目标缓存RBTB与缩减的分支预测器RTAGE之中。该更新原理也可以拓展到n+1条分支指令的情况。
本实施例分支预测器在现有的条件分支预测通道(基本的条件分支预测通道)的基础上,增加了n条缩减的条件分支预测通道,且通过门电路在基本的条件分支预测通道和各条缩减的条件分支预测通道之间选择预测结果并输出,且仅在取值宽度内任意第i+1条分支指令的分支预测结果取决于前第i条分支指令的分支预测结果,只有前第i条分支指令的分支预测结果均为不跳转时才输出第i+1条分支指令的分支预测结果,若任意第i条分支指令的分支预测结果为跳转,则第i条分支指令以后的所有分支指令的分支预测结果均不输出,从而能够有效解决超标量处理器中取指宽度内存在多条条件分支指令造成的分支指令在分支预测表和分支目标缓存的内冲突,进而影响分支预测准确率的问题,面向同一取指宽度内存在n+1条条件分支指令的情况进行预测,可有效提升分支预测器的分支预测准确率,可适用于各类超标量微处理器,能够对取指宽度内的两条条件分支指令进行预测,缓解单个分支预测器内条件分支指令冲突的情况,进而提高分支预测器的预测准确率。而且,本实施例存储开销小,相比于传统的分支预测器,存储开销将大幅度下降。而且,本实施例设计逻辑简单,该种分支预测器与传统的分支预测器预测原理基本相同,因此修改的逻辑设计较为简单。
以如图3所示的支持2条分支指令的分支预测器的结构为例,该部件的实际运行主要包括预测操作和更新操作,现分别就这两个操作进行介绍。(1)预测操作:由于该分支预测器针对的是多取指宽度的处理器,因此在分支预测器对条件分支指令进行预测时,首先会对指令的地址进行裁剪,利用裁剪后的地址的低位地址对分支目标缓存BTB进行访问,裁剪的方式为指令地址右移log2FW,在读出分支目标缓存BTB对应的表项后,会对表项内容进行检测,倘若该条指令裁剪后的地址的高位地址和表项中的高位地址相同,则说明分支目标缓存命中,代表当前预测的指令为一条分支指令。基本的分支预测器TAGE和缩减的分支预测器RTAGE的预测使用相同的裁剪后的地址以及历史信息进行预测。当基本的分支目标缓存LBTB和缩减的分支目标缓存RBTB之中均存在条件分支指令命中的情况时,则会进行如下操作:1)第一条条件分支指令的分支地址为裁剪后的地址左移log2FW位后加上分支偏移。2)第一条条件分支指令的分支目标地址为缩减的分支目标缓存RBTB表项中的分支目标地址BT。3)当基本的分支预测器TAGE分支预测器预测不跳转时,则继续4)操作,否则输出第一条条件分支指令的跳转预测信息,并结束当前预测过程。4)当基本的分支预测器TAGE分支预测表预测不跳转时,则不输出任何分支预测跳转信息,并结束当前预测过程,否则输出第二条条件分支指令的跳转预测信息。5)第二条条件分支指令的跳转预测信息存储在缩减的分支目标缓存RBTB之中,第二条条件分支指令的分支地址为裁剪后的地址左移log2FW位后加上缩减的分支目标缓存RBTB表项中的分支偏移量BO。6)第二条条件分支指令的分支目标地址为缩减的分支目标缓存RBTB表项中的分支目标地址BT。当基本的分支目标缓存LBTB没有命中时,则不输出任何分支预测跳转信息,并结束当前预测过程。当基本的分支目标缓存LBTB命中,而缩减的分支目标缓存RBTB没有命中时,则根据基本的分支预测器TAGE分支预测器的预测行为决定是否输出基本的分支目标缓存LBTB之中的分支预测跳转信息。(2)更新操作:分支指令在处理器中执行后会反馈给分支预测器以更新分支预测表和BTB,分支预测器内部则会保留连续两条分支指令的更新信息,首先会对分支指令的类型和地址进行检查,倘若当前的分支更新指令位置大于前一条分支更新指令位置,且两条分支更新指令的位置在同一个FW内,则会将前一条分支更新指令的更新信息写入基本的分支预测器TAGE和基本的分支目标缓存LBTB之中,将当前分支更新指令的更新信息写入缩减的分支目标缓存RBTB与缩减的分支预测器RTAGE之中。值得注意的是,在写入缩减的分支预测器RTAGE时,写入的历史信息是前一条分支指令的历史信息,这样在才能够在预测时使用相同的历史信息对基本的分支预测器TAGE和缩减的分支预测器RTAGE进行访问。通过预测操作和更新操作,即可在遇到取指宽度内存在两条条件分支指令,且在第一条条件分支指令没有发生跳转时将历史分支信息写入分支预测器之中,并且在下一次预测时会根据第一条条件分支指令的预测行为决定是否对第二条条件分支指令的行为进行预测输出。
此外,本实施例还包括对条件分支指令执行预测操作的步骤:
S101,基于取指宽度FW对条件分支指令的指令地址进行裁剪,然后送入基本的条件分支预测通道以及缩减的条件分支预测通道;
S102,基本的条件分支预测通道以及缩减的条件分支预测通道分别对裁剪后的指令地址进行分支预测,并通过门电路在基本的条件分支预测通道和各条缩减的条件分支预测通道之间选择预测结果并输出,且仅在取值宽度内任意第i+1条分支指令的分支预测结果取决于前第i条分支指令的分支预测结果,只有前第i条分支指令的分支预测结果均为不跳转时才输出第i+1条分支指令的分支预测结果,若任意第i条分支指令的分支预测结果为跳转,则第i条分支指令以后的所有分支指令的分支预测结果均不输出。
本实施例步骤S101中进行裁剪是指将指令地址右移log2FW位,其中FW为取指宽度。
本实施例步骤S102中基本的条件分支预测通道以及缩减的条件分支预测通道分别对裁剪后的指令地址进行分支预测时,所述基本的条件分支预测通道进行分支预测以及缩减的条件分支预测通道进行预测操作的步骤包括:首先读取分支目标缓存的表项内容,若裁剪后的指令地址中的高位地址、表项内容中的分支指令的高位地址BA相同,则判定基本的条件分支预测通道命中,将裁剪后的指令地址左移log2FW位加上表项内容中的分支偏移量BO后作为分支地址,将表项内容中的分支目标地址BT作为分支目标地址,针对分支地址和分支目标地址执行分支预测并输出分支预测结果;否则,不输出任何分支跳转信息,结束当前的预测过程。
此外,本实施例还包括分支预测器在收到分支指令执行完毕的反馈后针对该分支指令执行更新操作的步骤:检查该分支指令的指令类型和地址,若该分支指令的位置大于上一条执行更新操作的分支指令的位置,且该分支指令和上一条执行更新操作的分支指令的位置在同一个取指宽度FW内,则将上一条执行更新操作的分支指令信息写入基本的条件分支预测通道的分支预测表和分支目标缓存中,将该分支指令的分支指令信息写入缩减的条件分支预测通道的分支预测表和分支目标缓存中以使得执行预测操作时使用相同的历史信息同时访问基本的条件分支预测通道和缩减的条件分支预测通道。
总而言之,针对多指令取指宽度的情况下对于分支指令的预测存在冲突的情况,本实施例低成本高效分支预测器实现方法基于原有的分支预测器,在其基础上通过增设分支预测表和分支目标缓存表的方式将同一取指宽度内的多条分支指令的分支信息分开存放,不同分支指令的分支信息隔离使得分支预测器的预测更为准确,而于此同时增加的存储开销也比较小,是一种性价比较高的分支预测器实现方式。
此外,本实施例还提供一种超标量处理器,包括相互连接的取指部件和分支预测器,所述分支预测器为所述低成本高效分支预测器实现方法实现的分支预测器。
此外,本实施例还提供一种计算机设备,包括相互连接的微处理器和存储器,所述微处理器为所述的超标量处理器。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种低成本高效分支预测器实现方法,其特征在于,所实现的分支预测器包括:
一条基本的条件分支预测通道,用于面向取值宽度内第一条分支指令的分支预测;
n条缩减的条件分支预测通道,用于面向取值宽度内除第一条分支指令以外的其余各条分支指令的分支预测,任意第i条缩减的条件分支预测通道用于面向取值宽度内第i+1条分支指令的分支预测,其中n为大于等于1的自然数,i的取值范围为[1,n];
门电路,用于在基本的条件分支预测通道和各条缩减的条件分支预测通道之间选择预测结果并输出,且仅在取值宽度内任意第i+1条分支指令的分支预测结果取决于前第i条分支指令的分支预测结果,只有前第i条分支指令的分支预测结果均为不跳转时才输出第i+1条分支指令的分支预测结果,若任意第i条分支指令的分支预测结果为跳转,则第i条分支指令以后的所有分支指令的分支预测结果均不输出;
所述基本的条件分支预测通道包括基本的分支预测器TAGE和基本的分支目标缓存LBTB,所述缩减的条件分支预测通道包括缩减的分支预测器RTAGE和缩减的分支目标缓存RBTB,所述缩减的分支预测器RTAGE和基本的分支预测器TAGE相比结构相同但其分支预测表历史长度比更短、表项数量更少;所述基本的分支目标缓存LBTB和缩减的分支目标缓存RBTB相比结构相同但表项数量更少;
包括对条件分支指令执行预测操作的步骤:
S101,基于取指宽度FW对条件分支指令的指令地址进行裁剪,然后送入基本的条件分支预测通道以及缩减的条件分支预测通道;
S102,基本的条件分支预测通道以及缩减的条件分支预测通道分别对裁剪后的指令地址进行分支预测,并通过门电路在基本的条件分支预测通道和各条缩减的条件分支预测通道之间选择预测结果并输出,且仅在取值宽度内任意第i+1条分支指令的分支预测结果取决于前第i条分支指令的分支预测结果,只有前第i条分支指令的分支预测结果均为不跳转时才输出第i+1条分支指令的分支预测结果,若任意第i条分支指令的分支预测结果为跳转,则第i条分支指令以后的所有分支指令的分支预测结果均不输出。
2.根据权利要求1所述的低成本高效分支预测器实现方法,其特征在于,所述基本的条件分支预测通道以及缩减的条件分支预测通道均包括分支预测器和分支目标缓存,所述分支预测器采用分支预测表存储与分支指令历史分支行为信息,所述分支目标缓存用于存储分支指令的分支目标信息,所述缩减的条件分支预测通道和基本的条件分支预测通道相比,分支预测表的历史长度比更短、表项数量更少,分支目标缓存的表项数量更少。
3.根据权利要求2所述的低成本高效分支预测器实现方法,其特征在于,所述分支目标缓存中每一个表项的字段均包括分支指令的高位地址BA、分支偏移量BO、分支类型BY以及分支目标地址BT。
4.根据权利要求1所述的低成本高效分支预测器实现方法,其特征在于,步骤S101中进行裁剪是指将指令地址右移log2 FW位,其中FW为取指宽度。
5.根据权利要求4所述的低成本高效分支预测器实现方法,其特征在于,步骤S102中基本的条件分支预测通道以及缩减的条件分支预测通道分别对裁剪后的指令地址进行分支预测时,所述基本的条件分支预测通道进行分支预测以及缩减的条件分支预测通道进行预测操作的步骤包括:首先读取分支目标缓存的表项内容,若裁剪后的指令地址中的高位地址、表项内容中的分支指令的高位地址BA相同,则判定基本的条件分支预测通道命中,将裁剪后的指令地址左移log2 FW位加上表项内容中的分支偏移量BO后作为分支地址,将表项内容中的分支目标地址BT作为分支目标地址,针对分支地址和分支目标地址执行分支预测并输出分支预测结果;否则,不输出任何分支跳转信息,结束当前的预测过程。
6.根据权利要求5所述的低成本高效分支预测器实现方法,其特征在于,还包括分支预测器在收到分支指令执行完毕的反馈后针对该分支指令执行更新操作的步骤:检查该分支指令的指令类型和地址,若该分支指令的位置大于上一条执行更新操作的分支指令的位置,且该分支指令和上一条执行更新操作的分支指令的位置在同一个取指宽度FW内,则将上一条执行更新操作的分支指令信息写入基本的条件分支预测通道的分支预测表和分支目标缓存中,将该分支指令的分支指令信息写入缩减的条件分支预测通道的分支预测表和分支目标缓存中以使得执行预测操作时使用相同的历史信息同时访问基本的条件分支预测通道和缩减的条件分支预测通道。
7.一种超标量处理器,包括相互连接的取指部件和分支预测器,其特征在于,所述分支预测器为权利要求1~6中任意一项所述低成本高效分支预测器实现方法实现的分支预测器。
8.一种计算机设备,包括相互连接的微处理器和存储器,其特征在于,所述微处理器为权利要求7所述的超标量处理器。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210917761.8A CN115328552B (zh) | 2022-08-01 | 2022-08-01 | 一种低成本高效分支预测器实现方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210917761.8A CN115328552B (zh) | 2022-08-01 | 2022-08-01 | 一种低成本高效分支预测器实现方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN115328552A CN115328552A (zh) | 2022-11-11 |
| CN115328552B true CN115328552B (zh) | 2026-02-13 |
Family
ID=83919921
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202210917761.8A Active CN115328552B (zh) | 2022-08-01 | 2022-08-01 | 一种低成本高效分支预测器实现方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN115328552B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115934171B (zh) * | 2023-01-16 | 2023-05-16 | 北京微核芯科技有限公司 | 为多指令调度分支预测器的方法及装置 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021108007A1 (en) * | 2020-05-30 | 2021-06-03 | Futurewei Technologies, Inc. | Apparatus and method for dual branch prediction |
| CN114020334A (zh) * | 2021-11-04 | 2022-02-08 | 中国电子科技集团公司第五十八研究所 | 多周期取指分支预测机制及分支别名、抖动优化方案 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10817298B2 (en) * | 2016-10-27 | 2020-10-27 | Arm Limited | Shortcut path for a branch target buffer |
-
2022
- 2022-08-01 CN CN202210917761.8A patent/CN115328552B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021108007A1 (en) * | 2020-05-30 | 2021-06-03 | Futurewei Technologies, Inc. | Apparatus and method for dual branch prediction |
| CN114020334A (zh) * | 2021-11-04 | 2022-02-08 | 中国电子科技集团公司第五十八研究所 | 多周期取指分支预测机制及分支别名、抖动优化方案 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN115328552A (zh) | 2022-11-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6178498B1 (en) | Storing predicted branch target address in different storage according to importance hint in branch prediction instruction | |
| JP2875909B2 (ja) | 並列演算処理装置 | |
| JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
| US8943300B2 (en) | Method and apparatus for generating return address predictions for implicit and explicit subroutine calls using predecode information | |
| US20150186293A1 (en) | High-performance cache system and method | |
| US8572358B2 (en) | Meta predictor restoration upon detecting misprediction | |
| KR20210011060A (ko) | 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행 | |
| US9753855B2 (en) | High-performance instruction cache system and method | |
| US7017030B2 (en) | Prediction of instructions in a data processing apparatus | |
| JP5301554B2 (ja) | プロシージャリターンシーケンスを加速するための方法およびシステム | |
| EP0093430B1 (en) | Pipeline data processing system | |
| CN115328552B (zh) | 一种低成本高效分支预测器实现方法 | |
| JP2596712B2 (ja) | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 | |
| CN117311814A (zh) | 取指单元、指令读取方法及芯片 | |
| US20040225866A1 (en) | Branch prediction in a data processing system | |
| JP3811140B2 (ja) | 情報処理装置 | |
| US20150193348A1 (en) | High-performance data cache system and method | |
| US7346737B2 (en) | Cache system having branch target address cache | |
| JP2004038338A (ja) | 分岐予測機構を有する情報処理装置 | |
| CN116661872A (zh) | 支持同时预测连续跳转的两条非条件分支指令的预测方法及装置 | |
| JP4247132B2 (ja) | 情報処理装置 | |
| CN108399146B (zh) | Flash控制器、取指令方法及计算机可读存储介质 | |
| JP2943772B2 (ja) | 分岐予測方式 | |
| US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
| JP4002288B2 (ja) | 情報処理装置 |
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 |