CN115380273A - 处理器流水线中的间接跳转的提取级处置 - Google Patents
处理器流水线中的间接跳转的提取级处置 Download PDFInfo
- Publication number
- CN115380273A CN115380273A CN202180023802.2A CN202180023802A CN115380273A CN 115380273 A CN115380273 A CN 115380273A CN 202180023802 A CN202180023802 A CN 202180023802A CN 115380273 A CN115380273 A CN 115380273A
- Authority
- CN
- China
- Prior art keywords
- instruction
- indirect jump
- circuit
- instructions
- target
- 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
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/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
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch 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
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
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)
- Executing Machine-Instructions (AREA)
Abstract
公开了用于处理器流水线中的间接跳转的提取级处置的系统和方法。例如,一种方法包括:检测由处理器核提取的指令序列,其中,指令序列包括第一指令随后是作为间接跳转指令的第二指令,该第一指令具有取决于第一指令的立即数字段和程序计数器值的结果;响应于检测到指令序列,防止间接跳转目标预测器电路生成第二指令的目标地址预测;以及响应于检测到指令序列,在将第一指令发布到处理器核的流水线的执行级之前确定第二指令的目标地址。
Description
技术领域
本发明涉及处理器流水线(pipeline)中的间接跳转的提取级处置。
背景技术
为了提高性能,流水线化的处理器可以包括间接跳转目标预测器,该间接跳转目标预测器生成间接跳转指令的目标地址的预测,该预测可以取决于直到间接跳转指令到达处理器流水线的后一级才可能变得可用的数据。目标地址预测可用于提取即将到来的指令,同时等待间接跳转指令通过流水线并被引退。目标地址的错误预测可能导致问题,包括间接跳转目标预测器的状态的性能惩罚和污染。
附图说明
当结合附图阅读时,最好从以下详细描述中理解本公开。要强调的是,根据惯例,附图的各种特征不是按比例的。相反,为了清楚起见,各种特征的尺寸被任意地扩大或缩小。
图1是用于使用处理器流水线中的间接跳转的提取级处置来执行指令的集成电路的示例的框图。
图2是用于使用间接跳转的提取级处置来执行指令的处理器流水线的一部分的示例的框图。
图3是指令序列的示例的存储器映射,所述指令序列包括具有取决于第一指令的立即数字段以及程序计数器值的结果的第一指令,随后是作为间接跳转指令的第二指令。
图4是用于间接跳转的提取级处置的过程的示例的流程图。
图5是用于确定间接跳转指令的目标地址的过程的示例的流程图,该间接跳转指令取决于程序计数器和指令序列的一个或多个立即数。
图6是用于在没有间接跳转的情况下选择性地禁用间接跳转目标预测器电路的过程的示例的流程图。
具体实施方式
概述
本文描述了用于处理器流水线中的间接跳转的提取级处置的系统和方法。在一些处理器架构中,可以使用包括间接跳转指令的指令序列来指定大虚拟地址空间中的目标地址。序列中的较早指令可以将立即数值添加到程序计数器值。然后可以将结果添加到包括在间接跳转指令中的第二立即数(immediate),并移位以允许相对于程序计数器值的大范围的跳转。该指令序列形成立即跳转,可以基于立即数及程序计数器值来确定对该立即中转的目标地址,所述程序计数器值为将在处理器流水线的提取级中可用的信息。例如,在RISC-V指令集中,包括AUIPC指令和随后的JALR指令的指令序列形成立即跳转。然而,间接跳转目标预测器电路可以为指令序列的间接跳转指令生成目标地址预测。这可能浪费间接跳转目标预测器电路中的功率,并且还可能导致目标地址的偶然误预测,这导致性能惩罚和/或污染间接跳转目标预测器电路的预测器状态。
一些实施方式通过将电路添加到处理器核以检测形成立即跳转的这些指令序列且确定处理器流水线的提取级中的指令序列的间接跳转的目标地址来解决或减轻这些问题。例如,所确定的目标地址可以被插入提取目标队列中且用于代替来自处理器核的间接跳转目标预测器电路的目标地址预测。在一些实施方式中,当正在提取指令序列的间接跳转指令时,可以禁用间接跳转目标预测器电路,以防止间接跳转目标预测器电路浪费生成间接跳转指令的目标地址预测的功率。例如,可以在具有多个提取级的流水线的较早级中检测指令序列,诸如当将指令的高速缓存行S被加载到L1指令高速缓存中时。该早期检测可以允许生成立即跳转提示,所述立即跳转提示将足够早地可用以在从L1指令高速缓存读出指令序列时控制间接跳转目标预测器电路的启用输入且禁用间接跳转目标预测器电路。
用于降低间接跳转目标预测器电路中的功耗的另一技术是在高速缓存行被加载到L1指令高速缓存中时检测高速缓存行中间接跳转指令的存在或不存在,以生成间接跳转提示,该间接跳转提示可以在处理器流水线的后面的提取级中使用以启用或禁用间接跳转目标预测器电路。也就是说,如果在高速缓存行中没有检测到间接跳转指令,则当从高速缓存行读出指令时禁用间接跳转目标预测器电路。该技术可以与上文和本文其他地方描述的立即跳转处置组合。例如,如果间接跳转提示指示不存在间接跳转指令或者立即跳转提示指示存在形成立即跳转的指令序列,则可以将间接跳转目标预测器电路的启用输入设置为不活动电平。
在一些实施方式中,用于处理器流水线中的间接跳转的提取级处置的技术可用于实现优于常规处理器的一个或多个优点。例如,本文描述的结构和技术可以降低处理器核中的功耗,降低间接跳转目标预测器电路的预测器状态的污染,和/或改善处理器核的性能。
如本文所使用的,术语“电路”是指被构造为实现一个或多个功能的电子组件(例如,晶体管、电阻器、电容器和/或电感器)的装置。例如,电路可以包括互连以形成共同实现逻辑功能的逻辑门的一个或多个晶体管。
细节
图1是用于使用处理器流水线中的间接跳转的提取级处置来执行指令的集成电路110的示例的框图。集成电路110包括处理器核120。处理器核120包括处理器流水线130,所述处理器流水线包括间接跳转目标预测器电路132,所述间接跳转目标预测器电路被配置为生成对所提取的间接跳转指令的目标地址的预测。处理器核120包括一个或多个寄存器堆(register file)140,其包括程序计数器142。处理器核120包括L1指令高速缓存150和L1数据高速缓存152。集成电路110包括外部存储器系统160,其可以包括存储指令和数据的存储器和/或提供对集成电路外部的存储指令和/或数据的存储器162的访问。处理器核120包括立即跳转处置器电路170,其可以被配置为检测包括间接跳转指令的指令序列,所述间接跳转指令具有可以基于流水线130的提取级中可用的信息确定的目标地址,并且在流水线的提取级中确定该目标地址以代替目标地址的预测而使用。处理器核120包括间接跳转检测器电路180,其可以被配置为在间接中转指令被加载到L1指令高速缓存150中时检查高速缓存行中的间接跳转指令,并且在从L1指令高速缓存150读取无间接跳转的高速缓存行时禁用间接跳转目标预测器电路132以省电。集成电路110可以提供优于常规处理器架构的优点,诸如例如避免目标地址的误预测和间接跳转预测器的所得污染和性能降级,和/或功耗节省。例如,集成电路110可以实现图4的过程400。例如,集成电路110可以实现图6的过程600。
集成电路110包括处理器核120,处理器核120包括被配置为执行指令的处理器流水线130。流水线130包括被配置为从集成电路110的存储器系统检索指令的一个或多个提取级。例如,流水线130可以经由L1指令高速缓存150提取指令。例如,流水线130可以包括图2的处理器流水线200。流水线130可以包括附加级,诸如解码级、重命名级、分派级、发布级、执行级、存储器访问级和回写级。例如,处理器核120可以包括被配置为执行RISC V指令集的指令的流水线130。
集成电路110包括流水线130的提取级中的间接跳转目标预测器电路132,其被配置为生成对所提取间接跳转指令的目标地址的预测。例如,间接跳转目标预测器电路132可以是图2的间接跳转目标预测器电路220。例如,间接跳转目标预测器电路132可以将预测输出到提取目标队列。
间接跳转目标预测器电路132是用于预测间接跳转指令(例如,RISC-V JALR指令)的目标的结构。例如,间接跳转目标预测器电路132可以是ITTAGE式预测器,其在设计上类似于分支方向预测器(BDP)。然而,与预测分支方向相反,间接跳转目标预测器电路132提供目标地址。例如,间接跳转目标预测器电路132可以是基于SRAM的,并且为了更加面积有效,可以被设计为使用单端口存储器。在一些实施方式中,在间接跳转目标预测器电路132上的预测和更新之间不存在结构危险。
集成电路110包括一个或多个寄存器堆140,其包括用于处理器核120的程序计数器142。例如,程序计数器142可以被存储在寄存器中。例如,可以使用程序计数器映射表来存储程序计数器142,程序计数器映射表用于跟踪重排序缓冲器窗口中的指令的程序计数器。
集成电路110包括用于处理器核120的L1指令高速缓存150。L1指令高速缓存150可以是用于指令存储器的组关联高速缓存。为了避免串行读取标签阵列和数据阵列的长等待时间以及并行读取阵列的高功率,可以使用通路预测器。可以在早期提取级(例如,图2的处理器流水线200的F1级204)中访问通路预测器,并且可以将命中通路编码到数据阵列的读索引中。标签阵列可以在后面的提取级(例如,图2的处理器流水线200的F2级206)中被访问且仅用于验证通路预测器。
集成电路110包括用于处理器核120的L1数据高速缓存152。例如,L1数据高速缓存152可以是组关联VIPT高速缓存,这意味着它纯粹用虚拟地址位VA[set]索引并且完全用所有转换物理地址位PA[msb:12]标记。为了低功耗,可以串行查找标签和数据阵列,使得最多访问单个数据SRAM通路。例如,L1数据高速缓存152的行大小可以是64字节,并且节拍大小可以是16字节。
集成电路110包括外部存储器系统160,其可以包括存储指令和数据的存储器和/或提供对集成电路外部的存储指令和/或数据的存储器162的访问。例如,外部存储器系统160可以包括L2高速缓存,其可以被配置为实现高速缓存一致性协议/策略以维持跨多个L1高速缓存的高速缓存一致性。尽管在图1中未示出,但是在一些实施方式中,集成电路110可以包括多个处理器核。例如,外部存储器系统160可以包括多个层。
集成电路110包括立即跳转处置器电路170。立即跳转处置器电路170可以被配置为检测由处理器核120提取的指令序列,其中,指令序列包括具有取决于第一指令的立即数字段和程序计数器值的结果的第一指令,随后是作为间接跳转指令的第二指令。在一些实施方式中,处理器核120被配置为执行RISC V指令集的指令,并且第一指令是AUIPC指令,且第二指令是JALR指令。立即跳转处置器电路170可以被配置为响应于检测到指令序列而防止间接跳转目标预测器电路生成用于第二指令的目标地址预测。立即跳转处置器电路170可以被配置为响应于检测到指令序列而在将第一指令发布到流水线的执行级之前确定第二指令的目标地址。立即跳转处置器电路170可以被配置为将目标地址写入提取目标队列,该提取目标队列被配置为从间接跳转目标预测器电路132接收预测。例如,可以在第一指令到达处理器流水线130的解码级之前确定第二指令的目标地址。例如,立即跳转处置器电路170可以包括图2的立即跳转扫描电路230和立即跳转确定电路232。
例如,立即跳转处置器电路170可以在指令序列进入包括间接跳转目标预测器电路132的提取级之前检测指令序列。在一些实施方式中,处理器流水线130包括多个提取级,立即跳转处置器电路170在指令序列通过在处理器流水线130中比包括间接跳转目标预测器电路132的提取级更早的早期提取级时检测指令序列。立即跳转处置器电路170可以被配置为响应于检测到指令序列而禁用间接跳转目标预测器电路132。例如,立即跳转处置器电路170可以被配置为更新指令高速缓存标签中的状态位,这使得当第二指令进入包括间接跳转目标预测器电路132的流水线的提取级时禁用间接跳转目标预测器电路132。例如,立即跳转处置器电路170可以被配置为更新指令高速缓存通路预测器中的状态位,这使得当第二指令进入包括间接跳转目标预测器电路132的流水线的提取级时禁用间接跳转目标预测器电路132。
例如,立即跳转处置器电路170可以被配置为通过扫描存储在L1指令高速缓存150的高速缓存行中的值来检测指令序列。在一些实施方式中,立即跳转处置器电路170被配置为当指令经由存储器总线被输入到L1指令高速缓存150时,通过扫描出现在存储器总线上的值来检测指令序列。
在一些实施方式中,立即跳转处置器电路170被配置为:检测由处理器核120提取的指令序列,其中,指令序列包括AUIPC指令,随后是JALR指令;响应于检测到指令序列,禁用间接跳转目标预测器电路132以防止间接跳转目标预测器电路132生成JALR指令的目标地址预测;响应于检测到指令序列,在AUIPC指令被发布到流水线130的执行级之前确定JALR指令的目标地址;以及将目标地址写入到对应于JALR指令的条目中的提取目标队列。
集成电路110包括间接跳转检测器电路180,其被配置为:当高速缓存行经由存储器总线被输入到指令高速缓存时,通过扫描出现在存储器总线上的值来检查用于间接跳转指令的高速缓存行;基于该检查,更新与高速缓存行相关联的提示位,以指示在高速缓存行中不存在间接跳转指令;以及,基于提示位,禁用间接跳转目标预测器电路132,以防止间接跳转目标预测器电路132在高速缓存行的指令进入流水线的包括间接跳转目标预测器电路132的级时生成目标地址预测。例如,间接跳转指令可以是RISC V指令集的JALR指令。例如,提示位可以被存储在指令高速缓存通路预测器中(例如,L1指令高速缓存150中)。例如,提示位可以被存储在指令高速缓存标签中(例如,L1指令高速缓存150中)。间接跳转检测器电路180可以用于通过在没有提取间接跳转指令时禁用间接跳转目标预测器电路132来节省功耗。例如,间接跳转检测器电路180可以被配置为实现图6的过程600。
图2是用于使用间接跳转的提取级处置来执行指令的处理器流水线200的一部分的示例的框图。处理器流水线200包括多个提取级:F0级202、F1级204、F2级206和F3级208。处理器流水线200包括在提取级202至208之后的解码级210。尽管在图2中未示出,但是处理器流水线200可以包括附加级,诸如重命名级、分派级、发布级、执行级、存储器访问级和回写级。
处理器流水线200包括流水线200的F3级208中的间接跳转目标预测器电路220,其被配置为生成对所提取的间接跳转指令的目标地址的预测。处理器流水线200包括提取目标队列222,用于存储来自间接跳转目标预测器电路220的目标地址预测以供流水线200的后面的级使用。间接跳转目标预测器电路220是用于预测间接跳转指令(例如,RISC-V JALR指令)的目标的结构。间接跳转指令的源寄存器和目的地寄存器字段的编码可以提供关于将间接跳转指令用作函数调用或返回的提示。在一些实施方式中,间接跳转目标预测器电路220不预测函数返回的目标,而是使用返回地址栈(RAS)。例如,间接跳转目标预测器电路220可以是ITTAGE式预测器,其在设计上类似于分支方向预测器(BDP)。然而,与预测分支方向相反,间接跳转目标预测器电路220提供目标地址。例如,间接跳转目标预测器电路220可以是基于SRAM的,并且为了更多面积有效,可以被设计为使用单端口存储器。在一些实施方式中,在间接跳转目标预测器电路220上的预测和更新之间不存在结构危险。
作为面积优化,可以观察到,间接跳转目标预测器电路220可能将仅需要在给定时间窗口内参考少量存储器范围。间接跳转目标预测器电路220可以使用间接的层来压缩上目标虚拟地址位的存储。在一些实施方式中,因此间接跳转目标预测器电路220中的每个条目可以仅保持一定数量的低位和对包含高位的表的引用。该表被称为高阵列。
例如,间接跳转目标预测器电路220可以维护具有相应条目的表,相应条目包括:到高阵列中的索引,其存储上目标位;目标程序计数器(PC)的低位;以及标签,其可以是散列标签。间接跳转目标预测器电路220中的每个条目还可以具有计数器(例如,1位或2位),其用于指示每个条目的有用性并影响替换策略。这些计数器位被存储在触发器阵列中。
为了避免需要将每个间接跳转指令(例如,JALR)的解析目标存储在分支解析队列中,可以在分支单元解析跳转之后而不是在引退时直接更新间接跳转目标预测器电路220。当间接跳转目标预测器电路220跳转发布到分支单元时,分支解析队列索引被发送回分支解析队列,并且从分支解析队列中读出间接跳转目标预测器电路220预测信息(例如,计数器位和提供者表索引)。当间接跳转指令处于回写级时,可以将更新请求发送到间接跳转目标预测器电路220。例如,更新流水线因此可以如下:在发布级,分支单元将分支解析队列索引发送回分支解析队列;在寄存器读取级,从分支解析队列读取间接跳转目标预测器电路220预测信息;在执行级,间接跳转目标预测器电路220更新请求被构造并被翻转为回写;并且在回写级,将更新请求连同误预测指示一起发送到间接跳转目标预测器电路220。间接跳转目标预测器电路220可以使用上目标位重新计算表索引和标签以及CAM高阵列。
如果间接跳转目标预测器电路220获得正确预测的跳转的更新,则它可以设置用于提供者条目的计数器位。如果目标被误预测,则间接跳转目标预测器电路220可以在计数器位为零的情况下更新提供者条目,或者如果计数器位不为零,则递减计数器位。间接跳转目标预测器电路220还可以尝试分配到比提供者表更高的表中。例如,从下一个最高索引表开始,可以扫描计数器位。如果表具有为零的计数器,则间接跳转目标预测器电路220可以分配到该表中。如果设置了所有计数器位,则可以用信号通知失败的分配。饱和计数器可以在失败的分配时递增,并且在成功的分配时递减。计数器的饱和指示由于长寿命条目而将新条目安装到间接跳转目标预测器电路220中的故障。如果发生饱和,则可以闪存清除间接跳转目标预测器电路220的所有条目的计数器位阵列,使得可以安装新的有用条目。在一些实施方式中,间接跳转目标预测器电路220的每个条目仅存储目标地址的一部分。当分配到间接跳转目标预测器电路220中时,高阵列可以是具有经解析的目标的高位的CAM。如果找到匹配条目,则可以将该条目的索引写入跳转目标预测器电路220中的条目的hiIdx字段。如果没有找到匹配条目,则根据伪LRU替换策略分配高阵列的条目,并将该索引写入hiIdx字段。
处理器流水线200包括立即跳转处置器电路,包括立即跳转扫描电路230和立即跳转确定电路232。立即跳转扫描电路230可以被配置为检测形成具有可以基于提取级中可用的信息确定的目标地址的间接跳转的指令的序列。指令序列包括第一指令,其结果取决于第一指令的立即数字段和程序计数器值,随后是作为间接跳转指令的第二指令。例如,在RISC-V处理器核中,指令序列可以包括AUIPC指令,其后是JALR指令。立即跳转扫描电路230被配置为当指令经由存储器总线被输入到L1指令高速缓存250时,通过扫描从存储器总线接口240出现在存储器总线上的值来检测指令序列。在检测到指令序列后,立即跳转扫描电路230可以更新指令高速缓存通路预测器252中的状态位以指示与状态位相关联的高速缓存行包括指令序列。当第二指令进入包括间接跳转目标预测器电路220的流水线200的F3级208时,更新状态位可以使间接跳转目标预测器电路被禁用。
当后面在F2级206中从L1指令高速缓存250读出该高速缓存行时,该状态位的值可以作为立即跳转提示经由流水线寄存器传递以使得间接跳转目标预测器电路220的输入将在时间上可用以在F3级208处使用,这可通过防止间接跳转目标预测器电路220运行以生成用于指令序列的间接跳转指令的目标地址预测来节省功率。因此,立即跳转扫描电路230在指令序列进入包括间接跳转目标预测器电路220的F3级208之前检测指令序列。立即跳转扫描电路230被配置为响应于检测到指令序列,当从L1指令高速缓存250读出对应的高速缓存行时,通过传递存储在指令高速缓存通路预测器252的状态位中的立即跳转提示来禁用间接跳转预测器,以用在间接跳转目标预测器电路220的启用输入中。
在从L1指令高速缓存250读出高速缓存行之后,可以在F3级208中旋转高速缓存行以访问相关指令,相关指令可以被输入到保存用于解码的指令的指令队列260,且还被输入到立即跳转确定电路232。立即跳转确定电路232被配置为检测指令序列且基于指令序列的立即数和程序计数器值确定指令序列的间接跳转指令的目标地址。处理器流水线200包括复用器270,其用于选择由立即跳转确定电路232确定的目标地址,并将目标地址写入提取目标队列222,以代替来自间接跳转目标预测器电路220的用于指令序列的间接跳转指令的目标地址预测。
图3是指令序列300的示例的存储器映射,指令序列包括具有取决于第一指令的立即数字段和程序计数器值的结果的第一指令310,随后是作为间接跳转指令的第二指令320。第一指令310包括操作码312、识别将用于存储第一指令310的结果的架构寄存器的目的地寄存器字段314,以及将与程序计数器值组合(例如,相加)以确定第一指令的结果的立即数316。第二指令320包括操作码322、识别待访问的架构寄存器的源寄存器字段324,以及将与存储在源寄存器324中的值组合(相加)以确定第二指令的目标地址的立即数326。例如,在RISC-V处理器核中,第一指令可以是AUIPC指令,第二指令可以是JALR指令。
在一些实施方式中,第一指令310在存储器中邻近于第二指令320,且因此第二指令320紧接在第一指令310之后。在一些实施方式中,可以存在存储于第一指令310与第二指令320之间的存储器位置中的一个或多个附加中介指令,且因此第二指令320在第一指令310之后,但不紧跟在第一指令310之后。在一个或多个中介指令在其作为源寄存器324被访问之前不写入到目的地寄存器314的情况下,指令序列300仍可以充当立即跳转,可在处理器流水线(例如,处理器流水线130)的提取级期间针对立即跳转确定目标地址。
图4是用于间接跳转的提取级处置的过程400的示例的流程图。过程400包括检测450由处理器核提取的指令序列,指令序列包括第一指令,其结果取决于第一指令的立即数字段和程序计数器值,随后是作为间接跳转指令的第二指令;响应于检测到指令序列,防止420间接跳转目标预测器电路生成用于第二指令的目标地址预测;响应于检测到指令序列,在发布第一指令之前确定用于第二指令的目标地址;以及将目标地址写入440提取目标队列。过程400可以提供优于常规技术的优点,诸如例如避免目标地址的误预测和间接跳转预测器的所导致的污染和性能降级,和/或功耗的节省。例如,过程400可以使用图1的集成电路110来实现。例如,可以使用图2的处理器流水线200来实现过程400。
过程400包括检测410由处理器核(例如,处理器核120)提取的指令序列。指令序列包括第一指令,其结果取决于第一指令的立即数字段和程序计数器值,随后是作为间接跳转指令的第二指令。例如,处理器核可从被配置为执行RISC V指令集的指令,且第一指令是AUIPC指令,而第二指令是JALR指令。在一些实施方式中,检测410由处理器核提取的指令序列包括:当指令经由存储器总线被输入到指令高速缓存(例如,L1指令高速缓存250)时,通过扫描出现在存储器总线上的值来检测指令序列。在一些实施方式中,检测410由处理器核提取的指令序列包括通过扫描存储在指令高速缓存的高速缓存行中的值来检测指令序列。例如,可在指令序列进入包括间接跳转目标预测器电路(例如,间接跳转目标预测器电路220)的提取级(例如,处理器流水线200的F3级208)之前检测410指令序列。在一些实施方式中,流水线包括多个提取级,指令序列在通过在流水线中比包括间接跳转目标预测器电路的提取级(例如,处理器流水线200的F3级208)更早的早期提取级(例如,处理器流水线200的F0级202)时被检测到。
过程400包括响应于检测到410指令序列,防止420间接跳转目标预测器电路(例如间接跳转目标预测器电路132)生成用于第二指令的目标地址预测。例如,防止420间接跳转目标预测器电路生成用于第二指令的目标地址预测可以包括响应于检测到410指令序列,禁用间接跳转预测器。在一些实施方式中,防止420间接跳转目标预测器电路生成用于第二指令的目标地址预测包括更新指令高速缓存标签中的状态位,这使得当第二指令进入流水线的包括间接跳转预测器电路的级(例如,处理器流水线200的F3级208)时,禁用间接跳转目标预测器电路。在一些实施方式中,防止420间接跳转目标预测器电路生成用于第二指令的目标地址预测包括更新指令高速缓存通路预测器(例如,指令高速缓存通路预测器252)中的状态位,这使得当第二指令进入流水线的包括间接跳转目标预测器电路的级时,禁用间接跳转目标预测器电路。
过程400包括响应于检测到410指令序列,在将第一指令发布到处理器核的流水线的执行级之前确定430用于第二指令的目标地址。例如,在第一指令到达流水线(例如,处理器流水线130)的解码级之前可以确定430用于第二指令的目标地址(430)。
过程400包括将目标地址写入到440提取目标队列(例如,提取目标队列222),提取目标队列被配置为从间接跳转目标预测器电路接收预测。例如,复用器(例如,复用器270)可以被用来选择从间接跳转目标预测器电路而不是目标地址预测确定430的目标地址)。
尽管图4中未示出,但是过程400可以与图6的过程600组合使用,以进一步降低间接跳转目标预测器电路中的功耗。例如,过程400可以进一步包括:当高速缓存行经由存储器总线被输入到指令高速缓存时,通过扫描出现在存储器总线上的值来检查610用于间接跳转指令的高速缓存行;基于该检查,更新630与高速缓存行相关联的提示位以指示在高速缓存行中不存在间接跳转指令;以及基于提示位,禁用660间接跳转目标预测器电路,以防止间接跳转目标预测器电路在高速缓存行的指令进入流水线的包括间接跳转目标预测器电路的级时生成目标地址预测。
图5是用于确定间接跳转指令的目标地址的过程500的示例的流程图,该间接跳转指令取决于程序计数器和指令序列的一个或多个立即数。过程500包括:左移位510第一指令(例如,第一指令310)的立即数(例如,立即数316);将第一指令的经移位立即数添加到520第二指令(例如,第二指令320)的立即数(例如,立即数326);以及将即时值的总和与程序计数器值相加530以获得目标地址。例如,第一指令可以是RISC V AUIPC指令,从及第二指令可以是RISC-V JALR指令。例如,第一指令的立即数可以左移510等于第二指令的立即数的大小的位数。在一些实施方式中,第一指令的立即数的位数和第二指令的立即数的位数一起等于实现过程500的处理器核的架构寄存器的位数。过程500可以由访问第一指令和第二指令的提取级的逻辑电路实现,如他们被存储在缓冲器中。过程500的步骤可以以各种顺序或同时执行。例如,可以在将第二指令的立即数添加到结果之前将第一指令的经移位无符号立即数添加到程序计数器值以获得目标地址。在一些实施方式中(图5中未示出),第二指令的立即数而不是第一指令的立即数在被加入之前被左移。例如,过程500可以使用图1的集成电路110来实现。例如,可以使用图2的处理器流水线200来实现过程500。
图6是用于在没有间接跳转的情况下选择性地禁用间接跳转目标预测器电路的过程600的示例的流程图。过程600包括:当经由存储器总线将高速缓存行输入到指令高速缓存时,针对间接跳转指令检查610高速缓存行;如果检查在高速缓存行中检测到间接跳转指令,则基于该检查,更新620与高速缓存行相关联的提示位以指示在高速缓存行中存在间接跳转指令;如果检查未检测到高速缓存行中的间接跳转指令,则基于该检查更新630与高速缓存行相关联的提示位以指示高速缓存行中不存在间接跳转指令;在后面的某个时间,将高速缓存行从高速缓存读取到640处理器流水线的提取级中;如果提示位指示在高速缓存行中存在间接跳转指令,则基于提示位,启用650间接跳转目标预测器电路以允许间接跳转目标预测器电路在高速缓存行的指令进入流水线的包括间接跳转目标预测器电路的级时生成目标地址预测;以及如果提示位指示高速缓存行中不存在间接跳转指令,则基于提示位,禁用660间接跳转目标预测器电路以防止间接跳转目标预测器电路在高速缓存行的指令进入流水线的包括间接跳转目标预测器电路的级时生成目标地址预测。例如,过程600可以使用图1的集成电路110来实现。
过程600包括当高速缓存行经由存储器总线被输入到指令高速缓存(例如,L1指令高速缓存150)时,通过扫描出现在存储器总线上的值来检查610用于间接跳转指令的高速缓存行。例如,间接跳转指令是RISC V指令集的JALR指令。在一些情况下,间接跳转指令完全出现在单个高速缓存行内,并且检查610高速缓存行包括在高速缓存行中的完整间接跳转指令被传送到高速缓存中时检测该完整间接跳转指令。例如,JALR指令可以通过检测指令的较低16位内的操作码来识别。在一些情况下,间接跳转指令可以跨越高速缓存行边界。例如,指令的较低部分可以在第一高速缓存行中,并且指令的较高部分可以在第二高速缓存行中。可能无法保证在高速缓存中接收这两个高速缓存行的顺序,这可能进一步使检查610高速缓存行中间接跳转指令的存在复杂化。可以采用特殊逻辑来尝试检查610间接跳转指令(例如,JALR)是否在被加载到高速缓存中的高速缓存行中结束。
例如,当支持RISC-V指令集的C扩展时,32位JALR指令有可能跨越高速缓存行。作为功率优化,通路预测器可以存储指示JALR指令可能在该高速缓存行中结束的提示位。在提取时,间接跳转目标预测器电路(例如,间接跳转目标预测器电路132)可以仅在提示位被设置以指示在高速缓存行中存在正被提取的JALR指令的情况下被访问。为了生成该提示位,高速缓存(例如,L1指令高速缓存150)的未命中队列可以具有一些额外的逻辑来扫描传入的填充数据并检测何时JALR指令可以在该高速缓存行中结束。例如,parentValid,parentFilled,parent(例如,指向父高速缓存行的未命中队列条目的指针)和jalrCross条目字段可以用于此目的。常见的情况是提取单元将生成高速缓存未命中,然后几个顺序预提取。当分配了未命中队列条目时,未命中队列将检查以查看先前分配的条目是否仍然有效。如果是,则parentValid字段被设置为1,并且parent字段被设置为先前分配的条目的索引。先前分配的条目被称为“父”条目。如果父条目首先填充,则将parentFilled字段设置为1,并且如果父填充数据的最后16位看起来像32位JALR的较低16位,则将jalrCross字段设置为1。当条目的填充数据返回时,也扫描填充数据的每个节拍以寻找潜在的JALR指令。当支持C扩展时这是棘手的,因为可能无法知道高速缓存块的前16位是否对应于32位指令的第二半部分。因此,可以假设这两种情况。当条目填充时,如果以下任何情况为真,则设置提示位:(1)当做出未命中请求时,获取流水线已经具有RVI指令的前16位,并且它看起来像JALR。(2)父条目是有效的并且首先被填充,并且设置jalrCross位。(3)当扫描该条目的填充数据时,可能具有完整的JALR指令。
如果(在步骤615)已经检测到在高速缓存行中结束的间接跳转指令,则过程600包括基于该检查610,更新620与高速缓存行相关联的提示位以指示在高速缓存行中存在间接跳转指令。如果(在步骤615)未检测到在高速缓存行中结束的间接跳转指令,则过程600包括基于该检查610,更新630与高速缓存行相关联的提示位以指示在高速缓存行中不存在间接跳转指令。在一些实施方式中,提示位被存储在指令高速缓存通路预测器(例如,指令高速缓存通路预测器252)中。在一些实施方式中,提示位被存储在指令高速缓存标签(例如,L1指令高速缓存250中)中。
过程600包括将高速缓存行从高速缓存读取到640处理器流水线(例如,处理器流水线130)的提取级中。例如,在将高速缓存行的指令放置在指令队列(例如,指令队列260)中以用于解码之前,可以根据需要从高速缓存中读取640高速缓存行并旋转高速缓存行。
如果(在步骤645)提示位指示在高速缓存行中结束的间接跳转指令的存在,则过程600包括基于提示位,启用650间接跳转目标预测器电路(例如,间接跳转目标预测器电路132)以允许间接跳转目标预测器电路在高速缓存行的指令进入流水线的包括间接跳转目标预测器电路的级时生成目标地址预测。如果(在步骤645)提示位指示不存在高速缓存行中结束的间接跳转指令,则过程600包括基于提示位禁用660间接跳转目标预测器电路,以防止间接跳转目标预测器电路在高速缓存行的指令进入流水线的包括间接跳转目标预测器电路的级时生成目标地址预测。
可能发生IJTP提示位中的误预测或错误,并且可能需要校正。例如,当在RISC-V处理器中支持C扩展时,可能无法精确地确定在填充时高速缓存块何时以JALR指令的第二半部分开始。在多个未命中未完成的情况下,填充可能乱序返回。如果在处理器流水线的后面的提取级(例如,处理器流水线200的F3级208)中搜索分支及跳转时提取流水线检测到JALR指令,但从通路预测器读出的提示位指示无JALR指令,则存在误预测。在这种情况下,间接跳转目标预测器电路被禁用并且不被访问,并且没有针对该提取组的有效预测。在一些实施方式中,通过将此视为通路预测器误预测、(例如,在通路预测器中)校正IJTP提示位和重新提取来处理该误预测。例如,将丢失的间接跳转指令处置为通路预测器误预测可能导致性能惩罚(例如,4周期惩罚),但预期这种情况很罕见。
在第一方面,本说明书中描述的主题可以体现在一种用于执行指令的集成电路中,该集成电路包括:处理器核,所述处理器核包括被配置为执行指令的流水线;在所述流水线的提取级中的间接跳转目标预测器电路,所述间接跳转目标预测器电路被配置为生成对所提取的间接跳转指令的目标地址的预测;以及立即跳转处置器电路,所述立即跳转处置器电路被配置为:检测由所述处理器核提取的指令序列,其中,所述指令序列包括第一指令随后是作为间接跳转指令的第二指令,所述第一指令具有取决于所述第一指令的立即数字段和程序计数器值的结果;响应于检测到所述指令序列,防止所述间接跳转目标预测器电路生成对所述第二指令的目标地址预测;以及响应于检测到所述指令序列,在将所述第一指令发布到所述流水线的执行级之前确定所述第二指令的目标地址。
在第二方面,本说明书中描述的主题可以体现在方法中,所述方法包括:检测由所述处理器核提取的指令序列,其中,所述指令序列包括第一指令,所述第一指令具有取决于所述第一指令的立即数字段和程序计数器值的结果,随后是作为间接跳转指令的第二指令;响应于检测到所述指令序列,防止间接跳转目标预测器电路生成对所述第二指令的目标地址预测;以及响应于检测到所述指令序列,在将所述第一指令发布到流水线的执行级之前确定所述第二指令的目标地址。
在第三方面,本说明书中描述的主题可以体现在用于执行指令的集成电路中,该集成电路包括处理器核,所述处理器核包括被配置为执行RISC V指令集的指令的流水线;在所述流水线的提取级中的间接跳转目标预测器电路,所述间接跳转目标预测器电路被配置为生成对所提取的间接跳转指令的目标地址的预测并且将所述预测输出到提取目标队列;以及立即跳转处置器电路,所述立即跳转处置器电路被配置为:检测由所述处理器核提取的指令序列,其中,所述指令序列包括AUIPC指令,接着是JALR指令;响应于检测到所述指令序列,禁用所述间接跳转目标预测器电路以防止所述间接跳转目标预测器电路生成对所述JALR指令的目标地址预测;响应于检测到所述指令序列,在将所述AUIPC指令发布到所述流水线的执行级之前确定所述JALR指令的目标地址;以及将所述目标地址写入对应于所述JALR指令的条目中的所述提取目标队列。
在第四方面,本说明书中描述的主题可以体现在方法中,所述方法包括:当高速缓存行经由存储器总线被输入到指令高速缓存时,通过扫描出现在所述存储器总线上的值来检查用于间接跳转指令的高速缓存行;基于所述检查,更新与所述高速缓存行相关联的提示位,以指示在所述高速缓存行中不存在所述间接跳转指令;以及基于所述提示位,禁用间接跳转目标预测器电路,以防止所述间接跳转目标预测器电路在所述高速缓存行的指令进入包括所述间接跳转目标预测器电路的处理器流水线的级时生成目标地址预测。
在第五方面,本说明书中描述的主题可以体现在用于执行指令的集成电路中,该集成电路包括处理器核,所述处理器核包括被配置为执行指令的流水线;在所述流水线的提取级中的间接跳转目标预测器电路,所述间接跳转目标预测器电路被配置为生成对所提取间接跳转指令的目标地址的预测;以及间接跳转检测器电路,所述间接跳转检测器电路被配置为:当高速缓存行经由存储器总线被输入到指令高速缓存时,通过扫描出现在所述存储器总线上的值来检查用于间接跳转指令的高速缓存行;基于所述检查,更新与所述高速缓存行相关联的提示位,以指示在所述高速缓存行中不存在所述间接跳转指令;以及基于所述提示位,禁用间接跳转目标预测器电路,以防止所述间接跳转目标预测器电路在所述高速缓存行的指令进入包括所述间接跳转目标预测器电路的流水线的级时生成目标地址预测。
虽然已经结合某些实施例描述了本公开,但是应当理解,本公开不限于所公开的实施例,而是相反,本公开旨在覆盖包括在所附权利要求的范围内的各种修改和等同布置,所附权利要求的范围应被赋予最广泛的解释,以便包括所有这些修改和等同结构。
Claims (31)
1.一种用于执行指令的集成电路,包括:
处理器核,所述处理器核包括被配置为执行指令的流水线;
所述流水线的提取级中的间接跳转目标预测器电路,所述间接跳转目标预测器电路被配置为生成对所提取的间接跳转指令的目标地址的预测;以及
立即跳转处置器电路,所述立即跳转处置器电路被配置为:
检测由所述处理器核提取的指令序列,其中,所述指令序列包括第一指令随后是作为间接跳转指令的第二指令,所述第一指令具有取决于所述第一指令的立即数字段和程序计数器值的结果;
响应于检测到所述指令序列,防止所述间接跳转目标预测器电路生成对所述第二指令的目标地址预测;以及
响应于检测到所述指令序列,在将所述第一指令发布到所述流水线的执行级之前确定所述第二指令的目标地址。
2.根据权利要求1所述的集成电路,其中,所述立即跳转处置器电路在所述指令序列进入包括所述间接跳转目标预测器电路的所述提取级之前检测所述指令序列,以及所述立即跳转处置器电路被配置为:
响应于检测到所述指令序列,禁用所述间接跳转预测器电路。
3.根据权利要求1所述的集成电路,其中,所述流水线包括多个提取级,所述立即跳转处置器电路在所述指令序列通过在所述流水线中比包括所述间接跳转目标预测器电路的提取级更早的早期提取级时检测所述指令序列,并且所述立即跳转处置器电路被配置为:
响应于检测到所述指令序列,禁用所述间接跳转预测器电路。
4.根据权利要求1至3中的任一项所述的集成电路,其中,所述立即跳转处置器电路被配置为更新指令高速缓存标签中的状态位,这使得当所述第二指令进入包括所述间接跳转目标预测器电路的所述流水线的所述提取级时所述间接跳转目标预测器电路被禁用。
5.根据权利要求1至3中的任一项所述的集成电路,其中,所述立即跳转处置器电路被配置为更新指令高速缓存通路预测器中的状态位,这使得当所述第二指令进入包括所述间接跳转目标预测器电路的所述流水线的所述提取级时所述间接跳转目标预测器电路被禁用。
6.根据权利要求1至5中的任一项所述的集成电路,其中,所述立即跳转处置器电路被配置为当指令经由存储器总线被输入到指令高速缓存时,通过扫描出现在所述存储器总线上的值来检测所述指令序列。
7.根据权利要求1至5中的任一项所述的集成电路,其中,所述立即跳转处置器电路被配置为通过扫描存储在指令高速缓存的高速缓存行中的值来检测所述指令序列。
8.根据权利要求1至7中的任一项所述的集成电路,其中,所述立即跳转处置器电路被配置为将所述目标地址写入提取目标队列,所述提取目标队列被配置为从所述间接跳转目标预测器电路接收预测。
9.根据权利要求1至8中的任一项所述的集成电路,其中,在所述第一指令到达所述流水线的解码级之前确定所述第二指令的所述目标地址。
10.根据权利要求1至9中的任一项所述的集成电路,其中,所述处理器核被配置为执行RISC V指令集的指令,并且所述第一指令是AUIPC指令,而所述第二指令是JALR指令。
11.一种方法,包括:
检测由所述处理器核提取的指令序列,其中,所述指令序列包括第一指令随后是作为间接跳转指令的第二指令,所述第一指令具有取决于所述第一指令的立即数字段和程序计数器值的结果;
响应于检测到所述指令序列,防止间接跳转目标预测器电路生成对所述第二指令的目标地址预测;以及
响应于检测到所述指令序列,在将所述第一指令发布到所述处理器核的流水线的执行级之前确定所述第二指令的目标地址。
12.根据权利要求11所述的方法,其中,在所述指令序列进入包括所述间接跳转目标预测器电路的所述提取级之前检测所述指令序列,并且其中,防止所述间接跳转目标预测器电路生成所述第二指令的目标地址预测包括:
响应于检测到所述指令序列,禁用所述间接跳转预测器电路。
13.根据权利要求11所述的方法,其中,所述流水线包括多个提取级,在所述指令序列通过在所述流水线中比包括所述间接跳转目标预测器电路的提取级更早的早期提取级时检测所述指令序列,并且其中,防止所述间接跳转目标预测器电路生成所述第二指令的目标地址预测包括:
响应于检测到所述指令序列,禁用所述间接跳转预测器电路。
14.根据权利要求11至13中的任一项所述的方法,其中,防止所述间接跳转目标预测器电路生成所述第二指令的目标地址预测包括:
更新指令高速缓存标签中的状态位,这使得当所述第二指令进入包括所述间接跳转目标预测器电路的所述流水线的级时所述间接跳转目标预测器电路被禁用。
15.根据权利要求11至13中的任一项所述的方法,其中,防止所述间接跳转目标预测器电路生成所述第二指令的目标地址预测包括:
更新指令高速缓存通路预测器中的状态位,这使得当所述第二指令进入包括所述间接跳转目标预测器电路的所述流水线的级时所述间接跳转目标预测器电路被禁用。
16.根据权利要求11至15中的任一项所述的方法,其中,检测由所述处理器核提取的所述指令序列包括:
当指令经由存储器总线被输入到指令高速缓存时,通过扫描出现在所述存储器总线上的值来检测所述指令序列。
17.根据权利要求11至15中的任一项所述的方法,其中,检测由所述处理器核提取的所述指令序列包括:
通过扫描存储在指令高速缓存的高速缓存行中的值来检测所述指令序列。
18.根据权利要求11所述的方法,包括:
当所述高速缓存行经由存储器总线被输入到指令高速缓存时,通过扫描出现在所述存储器总线上的值来检查用于所述间接跳转指令的高速缓存行;
基于所述检查,更新与所述高速缓存行相关联的提示位,以指示在所述高速缓存行中不存在所述间接跳转指令;以及
基于所述提示位,禁用间接跳转目标预测器电路,以防止所述间接跳转目标预测器电路在所述高速缓存行的指令进入包括所述间接跳转目标预测器电路的所述流水线的级时生成目标地址预测。
19.根据权利要求11至18中的任一项所述的方法,包括:
将所述目标地址写入提取目标队列,所述提取目标队列被配置为从所述间接跳转目标预测器电路接收预测。
20.根据权利要求11至19中的任一项所述的方法,其中,在所述第一指令到达所述流水线的解码级之前确定所述第二指令的所述目标地址。
21.根据权利要求11至20中的任一项所述的方法,其中,所述处理器核被配置为执行RISC V指令集的指令,并且所述第一指令是AUIPC指令,而所述第二指令是JALR指令。
22.一种用于执行指令的集成电路,包括:
处理器核,所述处理器核包括被配置为执行RISC V指令集的指令的流水线;
所述流水线的提取级中的间接跳转目标预测器电路,所述间接跳转目标预测器电路被配置为生成对所提取的间接跳转指令的目标地址的预测并且将所述预测输出到提取目标队列;以及
立即跳转处置器电路,所述立即跳转处置器电路被配置为:
检测由所述处理器核提取的指令序列,其中,所述指令序列包括AUIPC指令随后是JALR指令;
响应于检测到所述指令序列,禁用所述间接跳转目标预测器电路以防止所述间接跳转目标预测器电路生成对所述JALR指令的目标地址预测;
响应于检测到所述指令序列,在将所述AUIPC指令发布到所述流水线的执行级之前确定所述JALR指令的目标地址;以及
将所述目标地址写入对应于所述JALR指令的条目中的所述提取目标队列。
23.根据权利要求19所述的集成电路,其中,所述立即跳转处置器电路被配置为更新指令高速缓存通路预测器中的状态位,这使得当所述JALR指令进入包括所述间接跳转目标预测器电路的所述流水线的所述提取级时所述间接跳转目标预测器电路被禁用。
24.一种方法,包括:
当高速缓存行经由存储器总线被输入到指令高速缓存时,通过扫描出现在所述存储器总线上的值来检查用于间接跳转指令的高速缓存行;
基于所述检查,更新与所述高速缓存行相关联的提示位,以指示在所述高速缓存行中不存在所述间接跳转指令;以及
基于所述提示位,禁用间接跳转目标预测器电路,以防止所述间接跳转目标预测器电路在所述高速缓存行的指令进入包括所述间接跳转目标预测器电路的处理器流水线的级时生成目标地址预测。
25.根据权利要求24所述的方法,其中,所述提示位被存储在指令高速缓存通路预测器中。
26.根据权利要求24所述的方法,其中,所述提示位被存储在指令高速缓存标签中。
27.根据权利要求24至26中的任一项所述的方法,其中,所述间接跳转指令是RISC V指令集的JALR指令。
28.一种用于执行指令的集成电路,包括:
处理器核,所述处理器核包括被配置为执行指令的流水线;
所述流水线的提取级中的间接跳转目标预测器电路,所述间接跳转目标预测器电路被配置为生成对所提取间接跳转指令的目标地址的预测;以及
间接跳转检测器电路,所述间接跳转检测器电路被配置为:
当高速缓存行经由存储器总线被输入到指令高速缓存时,通过扫描出现在所述存储器总线上的值来检查用于间接跳转指令的高速缓存行;
基于所述检查,更新与所述高速缓存行相关联的提示位,以指示在所述高速缓存行中不存在所述间接跳转指令;以及
基于所述提示位,禁用间接跳转目标预测器电路,以防止所述间接跳转目标预测器电路在所述高速缓存行的指令进入包括所述间接跳转目标预测器电路的流水线的级时生成目标地址预测。
29.根据权利要求28所述的集成电路,其中,所述提示位被存储在指令高速缓存通路预测器中。
30.根据权利要求28所述的集成电路,其中,所述提示位被存储在指令高速缓存标签中。
31.根据权利要求28至30中的任一项所述的集成电路,其中,所述间接跳转指令是RISCV指令集的JALR指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063002307P | 2020-03-30 | 2020-03-30 | |
US63/002,307 | 2020-03-30 | ||
PCT/US2021/024603 WO2021202350A1 (en) | 2020-03-30 | 2021-03-29 | Fetch stage handling of indirect jumps in a processor pipeline |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115380273A true CN115380273A (zh) | 2022-11-22 |
Family
ID=75478352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180023802.2A Pending CN115380273A (zh) | 2020-03-30 | 2021-03-29 | 处理器流水线中的间接跳转的提取级处置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11301251B2 (zh) |
EP (1) | EP4127917B1 (zh) |
KR (1) | KR20220154821A (zh) |
CN (1) | CN115380273A (zh) |
TW (1) | TW202147105A (zh) |
WO (1) | WO2021202350A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210342134A1 (en) * | 2020-04-29 | 2021-11-04 | Intel Corporation | Code prefetch instruction |
CN118642847B (zh) * | 2024-06-07 | 2025-02-07 | 北京开源芯片研究院 | 基于流水线处理请求的方法、电子设备及介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185676B1 (en) | 1997-09-30 | 2001-02-06 | Intel Corporation | Method and apparatus for performing early branch prediction in a microprocessor |
EP1405174A1 (en) | 2001-06-29 | 2004-04-07 | Koninklijke Philips Electronics N.V. | Method, apparatus and compiler for predicting indirect branch target addresses |
US9552032B2 (en) * | 2012-04-27 | 2017-01-24 | Nvidia Corporation | Branch prediction power reduction |
US9817666B2 (en) * | 2013-03-15 | 2017-11-14 | Intel Corporation | Method for a delayed branch implementation by using a front end track table |
GB2515076B (en) * | 2013-06-13 | 2020-07-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling retrieval of instructions from an instruction cache |
US11275590B2 (en) * | 2015-08-26 | 2022-03-15 | Huawei Technologies Co., Ltd. | Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory |
US20190155608A1 (en) * | 2017-11-17 | 2019-05-23 | Qualcomm Incorporated | Fast pipeline restart in processor with decoupled fetcher |
-
2020
- 2020-04-23 US US16/856,462 patent/US11301251B2/en active Active
-
2021
- 2021-03-17 TW TW110109552A patent/TW202147105A/zh unknown
- 2021-03-29 KR KR1020227037294A patent/KR20220154821A/ko active Pending
- 2021-03-29 WO PCT/US2021/024603 patent/WO2021202350A1/en unknown
- 2021-03-29 EP EP21718467.0A patent/EP4127917B1/en active Active
- 2021-03-29 CN CN202180023802.2A patent/CN115380273A/zh active Pending
-
2022
- 2022-04-11 US US17/718,258 patent/US11797308B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TW202147105A (zh) | 2021-12-16 |
KR20220154821A (ko) | 2022-11-22 |
WO2021202350A1 (en) | 2021-10-07 |
US11301251B2 (en) | 2022-04-12 |
EP4127917A1 (en) | 2023-02-08 |
EP4127917B1 (en) | 2023-10-04 |
US20210303300A1 (en) | 2021-09-30 |
US20220236993A1 (en) | 2022-07-28 |
US11797308B2 (en) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7958317B2 (en) | Cache directed sequential prefetch | |
US9116817B2 (en) | Pointer chasing prediction | |
US5944815A (en) | Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access | |
US6151662A (en) | Data transaction typing for improved caching and prefetching characteristics | |
US5918245A (en) | Microprocessor having a cache memory system using multi-level cache set prediction | |
US7376817B2 (en) | Partial load/store forward prediction | |
US9009445B2 (en) | Memory management unit speculative hardware table walk scheme | |
US11687343B2 (en) | Data processing apparatus and method for providing candidate prediction entries | |
US20040128448A1 (en) | Apparatus for memory communication during runahead execution | |
US9092346B2 (en) | Speculative cache modification | |
US20170091097A1 (en) | Hazard checking | |
WO2007019001A1 (en) | Call return stack way prediction repair | |
US11797308B2 (en) | Fetch stage handling of indirect jumps in a processor pipeline | |
US7711904B2 (en) | System, method and computer program product for executing a cache replacement algorithm | |
US11397685B1 (en) | Storing prediction entries and stream entries where each stream entry includes a stream identifier and a plurality of sequential way predictions | |
US11182293B2 (en) | Operating different processor cache levels | |
US10261909B2 (en) | Speculative cache modification | |
US11663130B1 (en) | Cache replacement mechanisms for speculative execution | |
US20250110882A1 (en) | Branch target buffer run-ahead |
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 |