CN113722243A - 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 - Google Patents
用于直接跳转的超前预测的方法及分支指令追踪高速缓存 Download PDFInfo
- Publication number
- CN113722243A CN113722243A CN202111033727.6A CN202111033727A CN113722243A CN 113722243 A CN113722243 A CN 113722243A CN 202111033727 A CN202111033727 A CN 202111033727A CN 113722243 A CN113722243 A CN 113722243A
- Authority
- CN
- China
- Prior art keywords
- instruction
- branch
- cache
- jump
- prediction table
- 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 23
- 239000000126 substance Substances 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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 or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明公开一种用于直接跳转的超前预测的方法及分支指令追踪高速缓存,其中分支指令追踪高速缓存包括:基于分支历史信息的预测表,用于实现两次跳转预测,其中,基于分支历史信息的预测表包括当前分支预测表和超前分支指令追踪高速缓存器预测表;分支目标指令追踪高速缓存器,其包括多个条目,每个条目存储多条连续指令,多条连续指令包含分支指令,其中,每个条目作为分支目标指令追踪高速缓存项包括:分支指令的目标指令、分支指令的目标指令的顺序地址、分支指令的目标指令的跳转地址及标签;以及系统缓存。
Description
技术领域
本发明涉及高速缓存处理器的技术领域,具体而言,涉及一种用于直接跳转的超前预测的方法及分支指令追踪高速缓存。
背景技术
图1为连续跳转的指令流,如图1所示,由于条件分支指令(Instr_0和Instr_x)的存在,取指令在处理器处出现两次连续的跳转,分别为第一次跳转和第二次跳转。图2为现有处理器遇到连续分支指令(Instr_0、Instr_x和Instr_t)后的时序图,如图2所示,现有技术中分支指令(Instr_0、Instr_x和Instr_t)会给处理器的流水线引入气泡,即流水线气泡(也就是处理器暂停的时间),其中,所引入的流水线气泡由两部分组成,分别为跳转预测引入的气泡和地址重定向引入的气泡,引入的这两部分流水线气泡会降低处理器的性能和缓存使用效率。
目前,本领域通常采用传统的BTC(Branch Trace Cache,分支目标指令追踪高速缓存器)的方式缓解流水线气泡,用以提高处理器的性能。图3为使用传统BTC后处理器遇到连续连续分支指令后的时序图,如图3所示,传统的分支目标指令追踪高速缓存器(BTC)将分支跳转的目标指令放到高速缓存中,当条件分支指令(Instr_0)命中分支目标指令追踪高速缓存器(BTC)后,能够快速地从分支目标指令追踪高速缓存器(BTC)中读取所需指令,因此,采用传统的BTC的方式能够缓解地址重定向引入的流水线气泡。但是,目前的这种设计中并不能实现对分支目标指令追踪高速缓存器(BTC)中出现的分支指令进行超前预测,不能消除分支指令引入的流水线气泡,因此,传统的BTC的方式还是不能很好的处理连续跳转的指令流,对处理器性能的提高能力有限。
发明内容
为了解决上述问题,本发明提供一种用于直接跳转的超前预测的方法及分支指令追踪高速缓存,通过使用超前预测的分支指令追踪高速缓存器(APBTC)存储直接跳转的目标指令,用以实现当超前预测的分支指令追踪高速缓存器(APBTC)命中时,可以迅速取出所需指令,从而消除分支指令引入的流水线气泡。另外,本发明提供的超前的分支预测机制可以对超前预测的分支指令追踪高速缓存器(APBTC)表项内部的分支指令进行预测,从而降低连续跳转所带来的流水线气泡,提高处理器性能和使用效率,降低功耗。
为达到上述目的,本发明提供了一种用于直接跳转的超前预测的方法,其包括以下步骤:
步骤1:在第一级流水线阶段访问基于分支历史信息的预测表和分支目标指令追踪高速缓存器,其中,基于分支历史信息的预测表包括当前分支预测表和超前分支指令追踪高速缓存器预测表;
并在第二级流水线阶段获取超前分支指令追踪高速缓存器预测表和分支目标指令追踪高速缓存器的内容及系统缓存中的指令;
步骤2:判断从系统缓存中取出的指令是否为分支指令,
如果不是分支指令,则按顺序依次取出指令;
如果是分支指令,则进入步骤3;
步骤3:判断获取的该分支指令是否命中分支目标指令追踪高速缓存器,
如果没有命中,则将该分支指令的跳转地址作为下次取指地址,并建立对应的超前预测的分支指令追踪高速缓存项;
如果命中,则进入步骤4;
步骤4:直接从分支目标指令追踪高速缓存器中获取下一次需要执行的指令,并根据超前分支指令追踪高速缓存器预测表预测下一次需要执行的指令的跳转情况,
如果下一次需要执行的指令是分支指令并且预测跳转,则将分支目标指令追踪高速缓存器中存储的分支指令的目标指令的跳转地址作为下次取指地址;
否则,将分支目标指令追踪高速缓存器中存储的分支指令的目标指令的顺序地址作为下次取指地址。
在本发明一实施例中,其中,步骤3中判断分支目标指令是否命中分支指令追踪高速缓存器具体为:
判断分支指令与分支目标指令追踪高速缓存器中对应的标签是否匹配,如果匹配则为命中分支目标指令追踪高速缓存器,否则为没有命中分支目标指令追踪高速缓存器。
为达到上述目的,本发明还提供了一种用于直接跳转的超前预测的分支指令追踪高速缓存,其包括:
基于分支历史信息的预测表,用于实现两次跳转预测,其中,基于分支历史信息的预测表包括当前分支预测表和超前分支指令追踪高速缓存器预测表;
分支目标指令追踪高速缓存器,其包括多个条目,每个条目存储多条连续指令,多条连续指令包含分支指令,其中,每个条目作为分支目标指令追踪高速缓存项包括:分支指令的目标指令、分支指令的目标指令的顺序地址、分支指令的目标指令的跳转地址及标签;以及
系统缓存;其中,
在第一级流水线时,系统通过当前指令地址同时访问所述分支目标指令追踪高速缓存器、所述当前分支预测表和所述超前分支指令追踪高速缓存器预测表,若所述当前分支预测表预测指令不跳转,则处理器在第二级流水顺序取指令;
若所述当前分支预测表预测指令跳转并且所述分支目标指令追踪高速缓存器命中,则处理器在第二级流水从所述分支目标指令追踪高速缓存器中获取下次需要执行的指令,同时由所述超前分支指令追踪高速缓存器预测表对所述分支目标指令追踪高速缓存器存放的指令进行预测,若预测发生跳转则下次取指来源为所述分支指令的目标指令的跳转地址;否则取指来源为所述分支指令的目标指令的顺序地址。
与现有技术相比,本发明的超前预测的分支指令追踪高速缓存器(APBTC),用于存储直接跳转的目标指令,当超前预测的分支指令追踪高速缓存器(APBTC)命中时,可以迅速取出所需指令,从而消除分支指令引入的流水线气泡;除此之外,本发明提出基于分支历史信息的超前预测方法能够预测分支目标指令追踪高速缓存器(BTC)中的指令是否发生跳转,从而填补指令跳转预测所引入的气泡。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为连续跳转的指令流;
图2为现有处理器遇到连续分支指令后的时序图;
图3为使用传统BTC后处理器遇到连续连续分支指令后的时序图;
图4为本发明一实施例超前预测的方法流程图;
图5为采用本发明实施例方法处理后的时序图;
图6为本发明一实施例超前预测的分支指令追踪高速缓存的架构图。
附图标记说明:10-基于分支历史信息的预测表;101-当前分支预测表;102-超前分支指令追踪高速缓存器预测表;20-分支目标指令追踪高速缓存器;201-分支指令的目标指令的顺序地址;202-分支指令的目标指令的跳转地址;203-分支指令的目标指令;204-标签;30-系统缓存;L1-第一级流水;L2-第二级流水。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图4为本发明一实施例超前预测的方法流程图,如图4所示,本实施例提供一种用于直接跳转的超前预测的方法,其包括以下步骤:
步骤1:在第一级流水线(F1)阶段访问基于分支历史信息的预测表和分支目标指令追踪高速缓存器(BTC),其中,基于分支历史信息的预测表包括当前分支预测表和超前分支指令追踪高速缓存器预测表(ahead branch trace cache prediction table,简称ABTCPT);
并在第二级流水线(F2)阶段获取超前分支指令追踪高速缓存器预测表(ABTCPT)和分支目标指令追踪高速缓存器(BTC)的内容及系统缓存(ICache)中的指令;
步骤2:判断从系统缓存(ICache)中取出的指令是否为分支指令,
如果不是分支指令,则按顺序依次取出指令,无需处理超前分支指令追踪高速缓存器预测表(ABTCPT)和分支目标指令追踪高速缓存器(BTC)的内容;
如果是分支指令,则进入步骤3;
步骤3:判断获取的该分支指令是否命中分支目标指令追踪高速缓存器(BTC),
如果没有命中,则将该分支指令的跳转地址作为下次取指地址,并建立对应的超前预测的分支指令追踪高速缓存(APBTC)项;
如果命中,则进入步骤4;
在本实施例中,其中,步骤3中判断分支指令是否命中分支目标指令追踪高速缓存器(BTC)具体为:
判断分支指令与分支目标指令追踪高速缓存器(BTC)中对应的标签(Tag)是否匹配,如果匹配则为命中分支目标指令追踪高速缓存器(BTC),否则为没有命中分支目标指令追踪高速缓存器(BTC)。
步骤4:直接从分支目标指令追踪高速缓存器(BTC)中获取下一次需要执行的指令,并根据超前分支指令追踪高速缓存器预测表(ABTCPT)预测下一次需要执行的指令的跳转情况,
如果下一次需要执行的指令是分支指令并且预测跳转,则将分支目标指令追踪高速缓存器(BTC)中存储的分支指令的目标指令的跳转地址作为下次取指地址;
否则,将分支目标指令追踪高速缓存器(BTC)中存储的分支指令的目标指令的顺序地址作为下次取指地址。
本实施例的用于直接跳转的超前预测的方法是一种处理分支历史信息的方法,其能够同时预测直接跳转指令是否发生跳转,以及预测BTC中的指令是否会出现跳转。之所以在第一级流水线访问超前分支指令追踪高速缓存器预测表(ABTCPT)和分支目标指令追踪高速缓存器(BTC),是因为:1)从分支目标指令追踪高速缓存器(BTC)中得到直接跳转指令后序的指令;2)分支目标指令追踪高速缓存器(BTC)中包括了分支目标指令追踪高速缓存器(BTC)的指令的跳转地址;3)可以预测到分支目标指令追踪高速缓存器(BTC)中指令是否会跳转,因此,本实施例的方法能够有效解决指令连续跳转产生的气泡。
图5为采用本发明实施例方法处理后的时序图,如图5所示,本实施例的方法首先可以与传统BTC一样,可以填补由地址重定向引入的气泡,也就是当前分支预测表可以预测的部分;在出现跳转指令时,如第一次跳转指令(Instr_0),会出现跳转预测引入的气泡,但本实施的方法(APBTC)可以实现超前预测,可以预测下一次是否是跳转指令,如果是跳转指令(Instr_x),则可以直接取指其跳转地址,因此,可以填补由跳转预测引入的气泡,相当于实现了两级预测(+2预测)。
实施例二
图6为本发明一实施例超前预测的分支指令追踪高速缓存的架构图,如图6所示,本实施例提供了一种用于直接跳转的超前预测的分支指令追踪高速缓存(AheadPredictable Branch Trace Cache,简称APBTC),用于执行实施例一的方法,其包括:
基于分支历史信息的预测表(10),用于实现两次跳转预测,其中,基于分支历史信息的预测表(10)包括当前分支预测表(101)和超前分支指令追踪高速缓存器预测表(ABTCPT)(102);其中,当前分支预测表(101)用于预测下一次的指令是否为跳转指令,超前分支指令追踪高速缓存器预测表(ABTCPT)(102)用于预测下两次的指令是否为跳转指令。
分支目标指令追踪高速缓存器(BTC)(20),其包括多个条目,每个条目存储多条连续指令,多条连续指令包含分支指令,其中,每个条目作为分支目标指令追踪高速缓存项包括:分支指令的目标指令(203)、分支指令的目标指令的顺序地址(201)、分支指令的目标指令的跳转地址(202)及标签(Tag)(204);
其中,如图6所示,假设分支目标指令追踪高速缓存器(BTC)(20)每个条目包括N条指令,与现有技术中的BTC一样,在一个条目内可以存储N条指令的顺序地址,但是通常的设计中,BTC的N条指令中不能包含分支指令,如果遇到分支就会被截断。在本实施例中,由于可以对N进行超前预测,因此,允许包含分支指令,即如果N条指令包含跳转指令则还需要存储该分支的跳转地址。
以及系统缓存(L0&L1 Cache)(30);其中,系统缓存(L0&L1 Cache)(30)为处理器通用缓存,在此不再赘述。
其中,在第一级流水线(L1)时,系统通过当前指令地址同时访问分支目标指令追踪高速缓存器(BTC)(20)、当前分支预测表(101)和超前分支指令追踪高速缓存器预测表(ABTCPT)(102),若当前分支预测表(101)预测指令不跳转,则处理器在第二级流水(L2)顺序取指令(如图6中的a),即按指令顺序取指令;
若当前分支预测表(101)预测指令跳转并且分支目标指令追踪高速缓存器(BTC)(20)命中,则处理器在第二级流水(L2)从分支目标指令追踪高速缓存器(BTC)(20)中获取下次需要执行的指令,同时,由超前分支指令追踪高速缓存器预测表(ABTCPT)(102)对分支目标指令追踪高速缓存器(BTC)(20)存放的指令进行预测,若预测发生跳转,则下次取指来源为分支指令的目标指令的跳转地址(202)(如图6中的c);否则,取指来源为分支指令的目标指令的顺序地址(201)(如图6中的b),从而实现超前预测(+2预测)。
实施例三
再请参考图1和图6将超前预测的分支指令追踪高速缓存(APBTC)的两级预测(+2预测)说明如下:
通常的分支预测器在第一次跳转前,通过Va_0进行索引,可以得到Instr_0的预测结果;
本实施例的超前预测的分支指令追踪高速缓存(APBTC)在第一次跳转前,通过Va_0索引,可以同时得到第一次跳转的条件分支指令Instr_0和第二次跳转的条件分支指令Instr_x的预测结果,即当前分支预测表提供Instr_0,ABTCPT提供Instr_x,从而实现超前预测,用以缩减当前分支重定向引入的气泡并缩减第二条分支跳转预测引入的气泡,因此,本实施例的超前预测的分支指令追踪高速缓存(APBTC)能够为处理器提供更高的性能。
本发明的超前预测的分支指令追踪高速缓存器(APBTC),用于存储直接跳转的目标指令,当超前预测的分支指令追踪高速缓存器(APBTC)命中时,可以迅速取出所需指令,从而消除分支指令引入的流水线气泡;除此之外,本发明提出基于分支历史信息的超前预测方法能够预测分支目标指令追踪高速缓存器(BTC)中的指令是否发生跳转,从而填补指令跳转预测所引入的气泡。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
Claims (3)
1.一种用于直接跳转的超前预测的方法,其特征在于,包括以下步骤:
步骤1:在第一级流水线阶段访问基于分支历史信息的预测表和分支目标指令追踪高速缓存器,其中,基于分支历史信息的预测表包括当前分支预测表和超前分支指令追踪高速缓存器预测表;
并在第二级流水线阶段获取超前分支指令追踪高速缓存器预测表和分支目标指令追踪高速缓存器的内容及系统缓存中的指令;
步骤2:判断从系统缓存中取出的指令是否为分支指令,
如果不是分支指令,则按顺序依次取出指令;
如果是分支指令,则进入步骤3;
步骤3:判断获取的该分支指令是否命中分支目标指令追踪高速缓存器,
如果没有命中,则将该分支指令的跳转地址作为下次取指地址,并建立对应的超前预测的分支指令追踪高速缓存项;
如果命中,则进入步骤4;
步骤4:直接从分支目标指令追踪高速缓存器中获取下一次需要执行的指令,并根据超前分支指令追踪高速缓存器预测表预测下一次需要执行的指令的跳转情况,
如果下一次需要执行的指令是分支指令并且预测跳转,则将分支目标指令追踪高速缓存器中存储的分支指令的目标指令的跳转地址作为下次取指地址;
否则,将分支目标指令追踪高速缓存器中存储的分支指令的目标指令的顺序地址作为下次取指地址。
2.根据权利要求1所述的方法,其特征在于,步骤3中判断分支目标指令是否命中分支指令追踪高速缓存器具体为:
判断分支指令与分支目标指令追踪高速缓存器中对应的标签是否匹配,如果匹配则为命中分支目标指令追踪高速缓存器,否则为没有命中分支目标指令追踪高速缓存器。
3.一种用于直接跳转的超前预测的分支指令追踪高速缓存,其特征在于,包括:
基于分支历史信息的预测表,用于实现两次跳转预测,其中,基于分支历史信息的预测表包括当前分支预测表和超前分支指令追踪高速缓存器预测表;
分支目标指令追踪高速缓存器,其包括多个条目,每个条目存储多条连续指令,多条连续指令包含分支指令,其中,每个条目作为分支目标指令追踪高速缓存项包括:分支指令的目标指令、分支指令的目标指令的顺序地址、分支指令的目标指令的跳转地址及标签;以及
系统缓存;其中,
在第一级流水线时,系统通过当前指令地址同时访问所述分支目标指令追踪高速缓存器、所述当前分支预测表和所述超前分支指令追踪高速缓存器预测表,若所述当前分支预测表预测指令不跳转,则处理器在第二级流水顺序取指令;
若所述当前分支预测表预测指令跳转并且所述分支目标指令追踪高速缓存器命中,则处理器在第二级流水从所述分支目标指令追踪高速缓存器中获取下次需要执行的指令,同时由所述超前分支指令追踪高速缓存器预测表对所述分支目标指令追踪高速缓存器存放的指令进行预测,若预测发生跳转则下次取指来源为所述分支指令的目标指令的跳转地址;否则取指来源为所述分支指令的目标指令的顺序地址。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111033727.6A CN113722243A (zh) | 2021-09-03 | 2021-09-03 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
PCT/CN2022/111398 WO2023029912A1 (zh) | 2021-09-03 | 2022-08-10 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
US18/565,198 US20240118895A1 (en) | 2021-09-03 | 2022-08-10 | Ahead prediction method and branch trace cache for direct jumping |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111033727.6A CN113722243A (zh) | 2021-09-03 | 2021-09-03 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113722243A true CN113722243A (zh) | 2021-11-30 |
Family
ID=78681649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111033727.6A Pending CN113722243A (zh) | 2021-09-03 | 2021-09-03 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240118895A1 (zh) |
CN (1) | CN113722243A (zh) |
WO (1) | WO2023029912A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023029912A1 (zh) * | 2021-09-03 | 2023-03-09 | 苏州睿芯集成电路科技有限公司 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
CN117008979A (zh) * | 2023-10-07 | 2023-11-07 | 北京数渡信息科技有限公司 | 一种分支预测器 |
WO2023216443A1 (zh) * | 2022-05-10 | 2023-11-16 | 苏州睿芯集成电路科技有限公司 | 一种多层级混合算法过滤式分支预测方法及预测系统 |
CN117389629A (zh) * | 2023-11-02 | 2024-01-12 | 北京市合芯数字科技有限公司 | 分支预测方法、装置、电子设备及介质 |
CN117472798A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 高速缓存的路预测方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306093A (zh) * | 2011-08-04 | 2012-01-04 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
CN109783143A (zh) * | 2019-01-25 | 2019-05-21 | 贵州华芯通半导体技术有限公司 | 用于流水线指令流的控制方法和控制设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104423929B (zh) * | 2013-08-21 | 2017-07-14 | 华为技术有限公司 | 一种分支预测方法及相关装置 |
CN104793921B (zh) * | 2015-04-29 | 2018-07-31 | 深圳芯邦科技股份有限公司 | 一种指令分支预测方法与系统 |
US10747540B2 (en) * | 2016-11-01 | 2020-08-18 | Oracle International Corporation | Hybrid lookahead branch target cache |
CN113722243A (zh) * | 2021-09-03 | 2021-11-30 | 苏州睿芯集成电路科技有限公司 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
-
2021
- 2021-09-03 CN CN202111033727.6A patent/CN113722243A/zh active Pending
-
2022
- 2022-08-10 WO PCT/CN2022/111398 patent/WO2023029912A1/zh active Application Filing
- 2022-08-10 US US18/565,198 patent/US20240118895A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306093A (zh) * | 2011-08-04 | 2012-01-04 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
CN109783143A (zh) * | 2019-01-25 | 2019-05-21 | 贵州华芯通半导体技术有限公司 | 用于流水线指令流的控制方法和控制设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023029912A1 (zh) * | 2021-09-03 | 2023-03-09 | 苏州睿芯集成电路科技有限公司 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
WO2023216443A1 (zh) * | 2022-05-10 | 2023-11-16 | 苏州睿芯集成电路科技有限公司 | 一种多层级混合算法过滤式分支预测方法及预测系统 |
CN117008979A (zh) * | 2023-10-07 | 2023-11-07 | 北京数渡信息科技有限公司 | 一种分支预测器 |
CN117008979B (zh) * | 2023-10-07 | 2023-12-26 | 北京数渡信息科技有限公司 | 一种分支预测器 |
CN117389629A (zh) * | 2023-11-02 | 2024-01-12 | 北京市合芯数字科技有限公司 | 分支预测方法、装置、电子设备及介质 |
CN117389629B (zh) * | 2023-11-02 | 2024-06-04 | 北京市合芯数字科技有限公司 | 分支预测方法、装置、电子设备及介质 |
CN117472798A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 高速缓存的路预测方法、装置、电子设备及存储介质 |
CN117472798B (zh) * | 2023-12-28 | 2024-04-09 | 北京微核芯科技有限公司 | 高速缓存的路预测方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023029912A1 (zh) | 2023-03-09 |
US20240118895A1 (en) | 2024-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113722243A (zh) | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 | |
KR100411529B1 (ko) | 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치 | |
US7237098B2 (en) | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence | |
US20150186293A1 (en) | High-performance cache system and method | |
US9170817B2 (en) | Reducing branch checking for non control flow instructions | |
JP2018063684A (ja) | 分岐予測器 | |
US5774710A (en) | Cache line branch prediction scheme that shares among sets of a set associative cache | |
US7266676B2 (en) | Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays | |
KR20140014070A (ko) | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 | |
KR19990087940A (ko) | 단일클럭사이클내에불연속명령을페치하기위한방법및시스템 | |
JP2006134331A (ja) | ブランチ目的アドレスを利用してキャッシュウェイを予測するプロセッサ及びその方法 | |
CN112579175B (zh) | 分支预测方法、分支预测装置和处理器核 | |
US9753855B2 (en) | High-performance instruction cache system and method | |
US9753732B2 (en) | Embedded branch prediction unit | |
US20120284489A1 (en) | Methods and Apparatus for Constant Extension in a Processor | |
US11099850B2 (en) | Branch prediction circuitry comprising a return address prediction structure and a branch target buffer structure | |
US20040139301A1 (en) | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor | |
CN101501635B (zh) | 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 | |
JPH08320788A (ja) | パイプライン方式プロセッサ | |
CN111913745B (zh) | 一种嵌入式多指令集处理器设计方法 | |
CN114265623A (zh) | 一种嵌入式处理器的分支预测器 | |
CN111190645B (zh) | 分离式指令cache结构 | |
US11947461B2 (en) | Prefetch unit filter for microprocessor | |
US11960893B2 (en) | Multi-table instruction prefetch unit for microprocessor | |
CN114003292B (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 | ||
CB02 | Change of applicant information |
Address after: 215125 11-303, creative industrial park, No. 328, Xinghu street, Suzhou Industrial Park, Suzhou City, Jiangsu Province Applicant after: Suzhou Ruixin integrated circuit technology Co.,Ltd. Address before: 215125 station 6-9f-203, creative industrial park, No. 328, Xinghu street, Suzhou Industrial Park, China (Jiangsu) pilot Free Trade Zone, Suzhou, Jiangsu (cluster registration) Applicant before: Suzhou Ruixin integrated circuit technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211130 |
|
RJ01 | Rejection of invention patent application after publication |