CN101118486B - 多执行线程的分区流水线执行的方法和设备 - Google Patents

多执行线程的分区流水线执行的方法和设备 Download PDF

Info

Publication number
CN101118486B
CN101118486B CN2007101279638A CN200710127963A CN101118486B CN 101118486 B CN101118486 B CN 101118486B CN 2007101279638 A CN2007101279638 A CN 2007101279638A CN 200710127963 A CN200710127963 A CN 200710127963A CN 101118486 B CN101118486 B CN 101118486B
Authority
CN
China
Prior art keywords
branch prediction
execution thread
thread
output queue
storage
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.)
Expired - Fee Related
Application number
CN2007101279638A
Other languages
English (en)
Other versions
CN101118486A (zh
Inventor
S·茹尔当
R·欣顿
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN101118486A publication Critical patent/CN101118486A/zh
Application granted granted Critical
Publication of CN101118486B publication Critical patent/CN101118486B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

用于将微处理器流水线分区以便支持多执行线程的流水线分支预测和指令提取的方法和设备。线程选择阶段从多个执行线程中选择线程。在一个实施例中,在一个分支预测阶段中,把分支预测输出队列中的存储预分配给线程的一部分,以便防止分支预测流水线中后续阶段的停止。在另一个实施例中,指令提取阶段在提取地址处提取与选定线程的一部分对应的指令。若有足够的存储可用,那么,另一个指令提取阶段把所述指令数据存入指令提取输出队列中。否则,使与选定的线程对应的指令提取阶段无效并且重新提取,以避免使指令提取流水线中前面的阶段停止,这可以是另一个线程的提取指令。

Description

多执行线程的分区流水线执行的方法和设备
技术领域
本公开一般涉及微处理器领域。具体地说,本公开涉及将微处理器流水线分区以便支持多执行线程的流水线作业。
背景技术
计算系统和微处理器往往支持多道处理,例如以下形式的多道处理:多个处理器,或处理器内的多个核,或运行在处理器核上的多个软件处理或线程(历史上涉及协同例程),或上述各项的不同组合。
在现代微处理器中,许多技术用来提高性能。流水线作业是利用具有类似执行阶段的不同指令之间的并行操作的技术。例如,这些阶段一般被认为是取指令、译码、操作数读、执行、回写等。通过对指令序列并行地进行关于多个流水线阶段的工作,可以减少有效机器周期时间并且可以利用所述序列中各指令阶段之间的并行性。在某些现代微处理器中,还可以把这些阶段分为越来越小的时间片,以便进一步减小有效机器周期时间。
分支预测是用来提高性能的另一种技术。当在指令系列中出现分支指令时,可能不知道分支决策的结果,直到在随后的流水线阶段之一中执行所述分支指令为止。因而,可以将气泡(bubble)引入流水线中,直到确定需要提取哪些分支目标指令为止。在知道分支决策的结果之前,不是等待,而可以预测采取或不采取的分支,并且可以从存储器提取预测目标的指令,因而减少流水线中的气泡。
在微处理器上执行多个软件过程或线程的技术还可以用来减少气泡在流水线中的出现。例如,当对于一个特定的执行线程发生指令高速缓存未命中时,可以从另一个执行线程提取指令以便填充流水线气泡,否则,要等待从外部存储器检索未命中的高速缓存行来得到所述流水线气泡。
另一方面,诸如一些特定类型的内部微处理器资源的耗尽的状态可能使一个或多个流水线阶段停止。在流水线中一个执行线程停止的时候,该流水线中其它线程的进展也可能被阻塞,因而,降低了在流水线微处理器上执行多个线程的有效性。
发明内容
根据第一实施例,一种由计算机实现的用于多线程的流水线分支预测的方法包括:
在第一流水线阶段,从多个执行线程中选择第一执行线程;
在第二流水线阶段,在分支预测输出队列中预分配存储,所述存储对应于所述第一执行线程的一部分;
在第三流水线阶段,产生对应于所述第一执行线程的所述部分的分支预测;和
把所述分支预测存储在所述分支预测输出队列中的所述预分配存储上。
根据第二实施例,一种流水线分支预测设备,包括:
在第一流水线阶段,从多个执行线程中选择第一执行线程的部件;
在第二流水线阶段,在分支预测输出队列中预分配存储的部件,所述存储对应于所述第一执行线程的一部分;
在第三流水线阶段,产生对应于所述第一执行线程的所述部分的分支预测的部件;和
把所述分支预测存储在所述分支预测输出队列中的所述预分配存储上的部件。
根据第三实施例,一种带有多线程分支预测设备的多线程处理器,包括:
用于从多个执行线程中选择第一执行线程的装置;
用于在分支预测输出队列中预分配对应于所述第一执行线程的一部分的存储的装置;
用于对把所述第一执行线程的指令数据存入指令提取输出队列作出响应而释放所述分支预测输出队列中的存储的装置;
用于停止所述第一执行线程的装置,除非所述分支预测输出队列中的存储的释放和/或存储的预分配成功。
根据第四实施例,一种流水线分支预测设备,包括:
用于在线程选择流水线阶段中从多个执行线程中选择第一执行线程的部件;
在第一预测流水线阶段中,用于在分支预测输出队列中预分配与所述第一执行线程的第一部分对应的存储的部件,以及用于对把所述第一执行线程的所述第一部分对应的指令数据存入指令提取输出队列作出响应而释放所述分支预测输出队列中的存储的部件;
用于在第二预测流水线阶段中产生与所述第一执行线程的所述第一部分对应的分支预测的部件;和
所述分支预测输出队列用以在第三预测流水线阶段中接收所述分支预测并将所述分支预测存储在所述预分配的存储处;以及还包括
流水线指令提取部件,用以访问与所述第一执行线程的所述第一部分对应的、由所述可寻址存储器存储的指令数据并且用以把所述指令数据存入所述指令提取输出队列中。
根据第五实施例,一种用于多执行线程的流水线分支预测和指令提取的设备,所述设备包括:
在线程选择流水线阶段中从多个执行线程中选择第一执行线程的装置;
分支预测输出队列,包括在第一分支预测流水线阶段中预分配第一存储位置,所述第一存储位置的预分配对应于所述第一执行线程的一部分,以便防止所述分支预测流水线中后续阶段的停止;
流水线指令提取装置,用以在所述流水线指令提取装置的第一指令提取流水线阶段中提取与所述第一执行线程的所述部分对应的提取地址处的指令数据;和
所述流水线指令提取装置用以在第二指令提取流水线阶段中在所述第二存储位置可用时,把与所述第一执行线程的一部分对应的第二存储位置处的所述指令数据存入指令提取输出队列中,否则,
在所述第二存储位置不可用时启动使对应于所述第一执行线程的一个或多个指令提取流水线阶段无效的过程以及重新提取所述提取地址,以便避免所述指令提取流水线中前面的阶段的停止。
附图说明
在附图中的各图中,以举例的方式而不是限制的方式来图解说明本发明。
图1图解说明支持多执行线程的流水线分支预测和指令提取的微处理器流水线的一个实施例。
图2a图解说明在多执行线程的流水线分支预测中阻塞线程出现的实例。
图2b图解说明在多执行线程的流水线指令提取中阻塞线程出现的实例。
图3图解说明支持多执行线程的流水线分支预测和指令提取的设备的一个实施例。
图4图解说明支持多执行线程的流水线分支预测和指令提取的设备的替代实施例。
图5图解说明支持多执行线程的流水线分支预测和指令提取的设备的另一个替代实施例。
图6a图解说明关于多执行线程的流水线分支预测的处理的一个实施例的流程图。
图6b图解说明关于多执行线程的流水线指令提取的处理的一个实施例的流程图。
图7图解说明支持多执行线程的流水线分支预测和指令提取的计算系统的一个实施例。
具体实施方式
下面公开用于将微处理器流水线分区以便支持多执行线程的流水线分支预测和指令提取的方法和设备。流水线的线程选择阶段从多个执行线程中选择一个线程。在一个实施例中,在分支预测流水线阶段之一中,把关于选定线程的分支预测输出队列中的存储预分配给所述线程的一部分,以便防止所述分支预测流水线中任何后续阶段的停止。在另一个实施例中,指令提取流水线阶段之一在与所述选定线程的一部分对应的提取地址提取指令。若有足够的存储可用,那么,另一个指令提取阶段把指令数据存入指令提取输出队列中。否则,若对于所述选定的线程没有足够的存储可用,那么,使与该线程对应的指令提取流水线阶段无效并且对其进行重新提取,以避免使指令提取流水线中可能正在提取另一个线程的指令的任何前面的阶段停止。替代的实施例可以使用所述技术中的任何一种或两者的各部分来防止在分支预测流水线和/或指令提取流水线中一个线程阻塞另一个线程的进展。
可以按照以下的传授来实现本发明的这些和其他实施例,并且,显然,可以在不脱离本发明的更广泛的精神和范围的情况下在下面的传授中做出各种不同的修改和变化。将会明白,虽然作为得益于所述公开的技术的流水线结构的实例,图解说明了分支预测流水线和/或指令提取流水线的实施例,但是,其它流水线结构也可以利用这样的技术传授,而不脱离本发明的更广泛的精神和范围。因此,说明书和附图将被认为是说明性的而不是限制性意义上,本发明仅仅由权利要求书和它们的等效物来量度。另外,没有详细地示出某些众所周知的结构、电路等以避免不必要地模糊本发明。
为了以下讨论的目的,计算系统可以指单一微处理器,所述单一微处理器能够执行可能或可能不传递它们的执行和/或使它们的执行同步的协同例程或软件执行线程。计算系统也可以指能够执行这样的软件执行线程的多个处理器,或者也可以指能够同时和/或并发地执行多个这样的软件执行线程的微处理器(多个微处理器)。这样的微处理器(多个微处理器)可以具有任何数目的体系结构系列并且还可以包括多个逻辑核,每一个逻辑核能够执行一个或多个这样的软件执行线程。
图1图解说明支持多执行线程的流水线分支预测和指令提取的微处理器流水线101的一个实施例。将会理解,在图1中以及在其它图中,可以简化所述图解说明的流水线,以便提供清晰的实例并且避免不必要地模糊在附图中提供的本发明的实施例(各实施例)。
例如,图解说明的流水线阶段可以代表多个实际的流水线阶段,或者,其中可以并发地执行两个或两个以上的图解说明的流水线阶段,在特定的实现方案或实施例中,可以将它们组合成同一流水线阶段。还会理解,虽然可以参照特定线程的特定部分来说明特定流水线阶段的功能,但是,实际上流水线同时在一个或多个线程的许多这样的部分上完成这样的功能。
按照图1,微处理器流水线101的实施例可以包括:流水线分支预测和指令提取逻辑102,它包括用以从多个执行线程中选择执行线程的线程选择流水线阶段100;分支预测流水线120,用以预分配分支预测输出队列的存储,所述存储的预分配对应于选定的执行线程的一部分,以便防止分支预测流水线120中后续阶段的停止。流水线分支预测和指令提取逻辑102还包括指令提取流水线110,用以提取与选定的执行线程的一部分对应的提取地址上的指令数据,并且,用以把与选定的执行线程的所述部分对应的存储位置上的指令数据存入指令提取输出队列131-132中(如果在该存储位置有足够的存储可用的话)。若没有足够的存储可用,那么,指令提取流水线110启动与选定的执行线程对应的指令提取流水线阶段的无效过程,并且重新提取在该提取地址处的指令数据,以便避免指令提取流水线中前面的阶段的停止170。
微处理器流水线101的实施例还可以包括:译码逻辑140,用以按照顺序指令排序将指令提取输出队列131-132中的指令译码成代表顺序指令排序的微操作;分配逻辑150,用以把执行资源分配给所述微操作;执行逻辑160,用以执行所述微操作;以及退役逻辑170,用以按照它们代表的顺序指令排序使所述微操作退役。对于微处理器流水线101的某些实施例,可以将退役逻辑170和/或执行逻辑160与分支预测流水线120相结合,以便当微操作退役时更新对微操作的动态预测。
下面主要按照图3-5,6a和6b更详细地介绍微处理器流水线101的操作,具体地说,介绍流水线分支预测和指令提取逻辑102的操作。
图2a图解说明多执行线程的流水线分支预测中阻塞线程出现的实例201。
设备201的流水线分支预测可以包括:线程选择阶段100,用以从多个执行线程中选择执行线程;P地址产生阶段221,用以产生与选定的执行线程的一部分对应的预测地址;P阵列读出阶段222,用以读出对于所述预测地址的预测阵列数据;预测阶段223,用以从对于所述预测地址的所述预测阵列数据产生分支预测;和BP队列存储阶段224,用以把所述分支预测存入分支预测输出队列233和234。在该实例中,预测输出队列233保存与线程A对应的预测pA。预测输出队列234保存与线程B对应的预测pB。
将会明白,因为分支预测输出队列233-234中的存储不是预分配的,所以,设备201的流水线分支预测在BP队列存储阶段224可能停止,直到在BP队列空闲阶段225中释放了对于相应的执行线程的分支预测输出队列233-234中的存储为止,所述释放是响应于成功地将相应的执行线程的指令数据存入指令提取输出队列231-232的I队列存储阶段215而实现的。
下面按照图2b中提供的实例更详细地提供所述指令提取流水线的操作。
为了达到这个实例的目的,线程A的各部分被表示为A0-A4(线程B的各部分被表示为B0-B3)并且出现在相关的流水线阶段。换句话说,线程A的标记为A0的部分已经进展到指令提取流水线阶段215,线程B的标记为B0的部分已经进展到指令提取流水线阶段214,等。
具体地说,线程B的标记为B2的部分已经进展到分支预测流水线阶段224,其中,因为分支预测输出队列234是满的,所以它被停止。线程A的标记部分A3已经进展到分支预测流水线阶段223,而线程A的标记部分A4已经进展到分支预测流水线阶段221,其中由于在分支预测流水线阶段224中线程B被停止,所以它们的进展被阻塞。因而,可以通过将完全不同的线程停止,在分支预测流水线中阻塞一个或多个线程的进展。这样的阻塞线程出现可能降低分支预测流水线的有效性能。
图2b图解说明在多执行线程的流水线指令提取中阻塞线程出现的实例202。
设备202的流水线指令提取可以包括:线程选择阶段100,用以从多个执行线程中选择执行线程;F地址产生阶段211,用以产生与选定的执行线程的一部分对应的提取地址;I高速缓存读出阶段212,用以访问相应的提取地址处的指令高速缓存;I高速缓存数据阶段213,用以接收所述提取地址的指令数据;长度标记阶段214,用以标记与选定的执行线程对应的长度;和I队列存储阶段215,用以在有足够的存储可用时,对于相应的执行线程,将指令数据存入指令提取输出队列231和232之一中。在该实例中,指令提取输出队列231保存与线程A对应的指令qA。指令提取输出队列232保存与线程B对应的指令qB。
将会理解,若在相应的指令提取输出队列中没有足够的存储可用,那么,在流水线阶段215,设备202的流水线指令提取可以停止,直到在相应的指令提取输出队列中有足够的存储可用为止。
如图2a的实例所示,线程A的各部分被表示为A0-A5(线程B的各部分被表示为B0-B3)并且出现在相关的流水线阶段。
具体地说,线程A的标记为A0的部分已经进展到指令提取流水线阶段215,其中因为指令提取输出队列231是满的,所以它被停止。线程B的标记为B0的部分已经进展到指令提取流水线阶段214,而线程B的标记为B1的部分已经进展到指令提取流水线阶段212,其中由于线程A在指令提取流水线阶段215被停止,它们的进展被阻塞。因而,可以通过将完全不同的线程停止,在指令提取流水线中阻塞一个或多个线程的进展。类似地,这样的阻塞线程出现可能因此而降低指令提取流水线的有效性能。
因为分支预测也可以影响指令提取流水线的效率,所以,避免分支预测流水线中的阻塞线程出现对分支预测和指令提取两者可能都是有利的。为了达到目前讨论的目的,有关特定分支预测方案的具体细节对于理解本发明的目前实施例不是必要的。这样的分支预测方案的进一步的细节可以在以下的公开的专利申请中找到:20050149707,20050138341,20050132174,20050071614,20040193857,20030018883,20020087852和20020087850。可能影响防止阻塞线程出现的努力的分支预测方案的至少一个方面称为动态循环预测。
循环预测器可以尝试动态地预测将执行的一个循环的叠代次数。它对所述循环预测采取的分支的每一次叠代进行计数,并且当它已经计数到预测的叠代数目时,它预测非采取的分支以便结束所述循环。因而,若在尝试把预测存入预测输出队列的同时所述分支预测流水线停止,那么,在没有抛弃叠代计数或具有动态地备份所述循环预测的某种方法的情况下,它不能重新启动。因而,最好确保在尝试将预测存入预测输出队的同时分支预测流水线不会停止。
与重新启动流水线相比,防止流水线在将预测存储到预测输出队列的阶段停止会具有更有效地消耗功率的额外好处。因为预测已经形成并且是正确的,所以将所述结构再次加电以便重新形成精确的相同预测将是效率不佳的。因此,一般说来,可能希望防止停止流水线结构而不是重新启动它,无论何时这样的防止是可能的。
图3图解说明支持多执行线程的流水线分支预测和指令提取的设备301的一个实施例。设备301的一个实施例包括流水线分支预测(诸如示于图2a中的实例201),用以防止在多执行线程的流水线分支预测中的阻塞线程出现。设备301的流水线分支预测包括:流水线阶段100,用以从多个执行线程中选择执行线程;和流水线阶段320,用以释放与在流水线阶段315中存入指令提取输出队列331-332的指令数据对应的分支预测输出队列333-334中的任何存储。流水线阶段320还把存储预分配到与选定的执行线程的一部分对应的分支预测输出队列333-334中。分支预测输出队列333保存与线程0对应的预测p0。分支预测输出队列334保存与线程n对应的预测pn。
设备301的流水线分支预测的实施例还可以包括:流水线阶段321,用以产生与选定的执行线程的一部分对应的预测地址;流水线阶段322,用以读出关于所述预测地址的预测阵列数据;流水线阶段323,用以产生与选定的执行线程的一部分对应的分支预测;和流水线阶段324,用以将预分配的存储上的分支预测存入分支预测输出队列333-334中。
将会理解,因为在流水线阶段320把存储预分配到分支预测输出队列333-334中,所以,在流水线阶段324与选定的执行线程的一部分对应的分支预测的存储将不会停止,因此,不会阻塞流水线阶段322-323的进展。
设备301的流水线指令提取的实施例还可以包括:流水线阶段311,用以产生与选定的执行线程的一部分对应的提取地址;流水线阶段312,用以访问与选定的执行线程的一部分对应的提取地址处的指令数据;流水线阶段313,用以接收关于所述提取地址的指令数据;流水线阶段314,用以标记与选定的执行线程的一部分对应的长度;和流水线阶段315,用以在有足够的存储可用时把与选定的执行线程的一部分对应的存储位置上的指令数据存入指令提取输出队列331-332中。
将会理解,若没有足够的存储可用,那么,设备301的流水线指令提取可以在流水线阶段315停止,直到指令提取输出队列331-332中有与选定的执行线程对应的足够的存储变得可用为止。若指令提取流水线中没有其它执行线程具有足够的存储来将指令数据存入指令提取输出队列331-332中,那么,在流水线阶段315的停止是没有问题的。
另一方面,若指令提取流水线中有另一个执行线程具有足够的存储来将指令数据存入指令提取输出队列331-332中,那么,没有必要通过在流水线阶段315停止指令提取流水线来阻塞那个线程。
对指令提取输出队列的存储进行预分配是有问题的。与选定的执行线程的一部分对应的指令数据可以包含可变数目的指令。对于某些实施例,所述指令可以具有可变长度。因而,预测将在数据块(例如,16字节)中发现多少指令以便预分配存储并且保证在尝试把指令数据存储到指令提取输出队列时指令提取流水线不会停止(像在分支预测流水线中那样),这远不是有效的。
若在指令提取输出队列中没有足够的空间用于特定的线程,这就是说,译码器在准备好接受更多的关于该线程的指令数据之前,需要一段时间来处理已经在队列中的指令。因而,有足够的时间来重新提取关于该线程的指令数据。然后,希望使任何可能阻塞的线程能够通过指令提取流水线前进,并且将停止的线程绕过。
图4举例说明支持多执行线程的流水线分支预测和指令提取的设备401的替代实施例。设备401的一个实施例包括流水线指令提取,用以避免在多执行线程的流水线指令提取中阻塞线程出现,诸如示于图2b的实例202。设备401的流水线指令提取包括:流水线阶段100,用以从多个执行线程中选择执行线程;流水线阶段411,用以产生与选定的执行线程的一部分对应的提取地址;流水线阶段412,用以访问与选定的执行线程的一部分对应的提取地址上的指令数据;流水线阶段413,用以接收关于所述提取地址的指令数据;流水线阶段414,用以标记与选定的执行线程的一部分对应的长度;和流水线阶段415,用以在有足够的存储可用时把与选定的执行线程的一部分对应的存储位置上的指令数据存入指令提取输出队列431-432中。指令提取输出队列431保存与线程0对应的指令q0。指令提取输出队列432保存与线程n对应的指令qn。若没有足够的存储可用并且没有必要通过在流水线阶段415停止来阻塞另一个线程,那么,流水线阶段415启动使与选定的执行线程对应的流水线阶段无效的过程并且重新提取关于与选定的执行线程的一部分对应的提取地址的指令数据。
对于设备401的流水线指令提取的一个实施例,启动重新提取关于与选定的执行线程的一部分对应的提取地址的指令数据的操作包括将与第一执行线程对应的一组后续指令指针435-436中的一个进行复位。对于设备401的流水线指令提取的替代实施例,启动重新提取指令数据的操作可以通过修改预先存在的分支错误预测机制以便清除指令提取流水线来完成。
设备401的流水线分支预测的实施例还可以包括:流水线阶段421,用以产生与选定的执行线程的一部分对应的预测地址;流水线阶段422,用以读出关于所述预测地址的预测阵列数据;流水线阶段423,用以产生与选定的执行线程的一部分对应的分支预测;和流水线阶段424,用以把分支预测存入分支预测输出队列433-434中。将会理解,因为分支预测输出队列433-434中的存储不是预分配的,所以,设备401的流水线分支预测可以在流水线阶段424停止。直到在流水线阶段425释放了与选定的执行线程对应的分支预测输出队列433-434中的存储为止。
在其中流水线分支预测和流水线指令提取彼此没有联系的实施例中,有可能使用按照图3描述的技术以及按照图4描述的技术,以便支持多执行线程的无阻塞流水线分支预测和指令提取。
图5举例说明支持多执行线程的流水线分支预测和指令提取的设备501的另一个替代实施例。
设备501的实施例可以包括流水线分支预测,用以防止在多执行线程的流水线分支预测中的阻塞线程出现。设备501的流水线分支预测和指令提取包括:线程选择流水线阶段500,用以从多个执行线程中选择执行线程;和分支预测流水线阶段520,用以释放分支预测输出队列533-534中与在指令提取流水线阶段515存入指令提取输出队列531-532的指令数据对应的任何存储。分支预测流水线阶段520还将把与选定的执行线程的一部分对应的存储预分配到分支预测输出队列533-534中。
对于一个实施例,当在相应的分支预测输出队列中存储的预分配失败时,分支预测流水线阶段520在线程选择流水线阶段500通过可选的路径538启动对另一个执行线程的选择过程。对于一个替代实施例,分支预测输出队列533保存与线程0对应的预测p0。分支预测输出队列534保存与线程n.对应的预测pn。
设备501的实施例还包括流水线指令提取,用以防止在多执行线程的流水线指令提取中的阻塞线程出现。设备501的流水线分支预测和指令提取至少包括:指令提取流水线阶段512,用以提取与选定的执行线程的一部分对应的提取地址处的指令数据;和指令提取流水线阶段515,用以在有足够的存储可用时把与选定的执行线程的一部分对应的存储位置处的指令数据存入指令提取输出队列531-532中。若没有足够的存储可用并且没有必要通过在流水线阶段515停止来阻塞另一个线程,那么,指令提取流水线阶段515启动使与选定的执行线程对应的流水线阶段无效的过程以及重新提取关于与选定的执行线程的一部分对应的提取地址的指令数据。
对于设备501的流水线指令提取的一个实施例,启动重新提取关于与选定的执行线程的一部分对应的提取地址的指令数据的操作包括将与第一执行线程对应的一组可选的后续指令指针535-536中的一个进行复位。对于替代的实施例,所述一组可选的后续指令指针535-536可以被包括在线程选择流水线阶段500中。对于另一个替代的实施例,当没有足够的用于相应的指令提取输出队列的存储时,指令提取流水线阶段515启动可选的通过线程选择流水线阶段500对另一个执行线程的选择。在某些实施例中,线程选择流水线阶段500可以独立地为指令提取流水线或者为分支预测流水线选择另一个执行线程。
对于设备501的流水线指令提取的一个实施例,指令提取输出队列531保存与线程0对应的指令q0。指令提取输出队列532保存与线程n对应的指令qn。
将会理解,设备501的流水线指令提取的实施例可以进一步包括:指令提取流水线阶段511,用以产生与选定的执行线程的一部分对应的提取地址;指令提取流水线阶段513,用以接收关于所述提取地址的指令数据;和指令提取流水线阶段514,用以标记与选定的执行线程的一部分对应的长度。还将会理解,可以简化举例说明的流水线,以便提供清晰的实例并且避免不必要地模糊本发明的实施例。对于设备501的某些实施例,不是所有图解说明的流水线阶段都是必要的。此外,在特定的实现方案或实施例中,图解说明的流水线阶段可以代表多个实际的流水线阶段,或者可以把两个或两个以上图解说明的流水线阶段组合在同一流水线阶段中。
类似地,设备501的流水线分支预测的实施例还可以包括:分支预测流水线阶段521,用以产生与选定的执行线程的一部分对应的预测地址;分支预测流水线阶段522,用以读出关于所述预测地址的预测阵列数据;分支预测流水线阶段523,用以产生与选定的执行线程的一部分对应的分支预测;和分支预测流水线阶段524,用以把所述分支预测存储在分支预测输出队列533-534的预分配存储处。
将会理解,因为在分支预测流水线阶段520预分配了分支预测输出队列533-534中的存储,所以,在流水线阶段524,与选定的执行线程的一部分对应的分支预测的存储在流水线阶段524不会停止,因此将防止分支预测流水线中后续阶段522-523停止。
图6a图解说明关于多执行线程的流水线分支预测的处理过程601的一个实施例的流程图。本文通过各处理框来完成过程601及其他过程,所述处理框包括可由通用机器或专用机器或两者的组合执行的专用硬件或软件或固件操作码。
在处理框611中开始过程601,其中,从多个执行线程中选择第一执行线程。在处理框612中继续处理,其中,在用于第一执行线程的一部分的分支预测输出队列中预分配存储。在处理框613中,确定处理框612的预分配是否成功。若不成功,则处理返回到处理框611。否则,处理进到处理框614,在那里,产生与第一执行线程的所述部分对应的分支预测,并且接着在处理框615中,把分支预测存储在分支预测输出队列中的预分配存储处,最后,进到处理框616,在那里响应存储到指令提取输出队列中的相应的指令数据而释放分支预测输出队列中的存储。离开处理框616,可以在处理框612中或者可选地在处理框611中进行处理。
图6b图解说明关于多执行线程的流水线指令提取的过程602的一个实施例的流程图。在处理框621中开始处理,在那里,从多个执行线程中选择第一执行线程。在处理框622中继续处理,在那里产生与第一执行线程的一部分对应的提取地址。然后,处理进到处理框623,在那里访问与第一执行线程的所述部分对应的提取地址处的指令数据。在处理框624中,若有足够的存储可用,那么,处理过程在处理框625中进行,在那里,把指令数据存储在指令提取输出队列中与第一执行线程的一部分对应的存储位置。否则,在处理框626中,使与第一执行线程对应的一个或多个流水线阶段无效并且启动对于与第一执行线程的一部分对应的地址的重新提取,这使处理返回处理框622或可选地返回处理框627。
将会理解,有可能使用按照图6a的过程601描述的技术以及按照图6b的过程602描述的技术,以便防止在多执行线程的流水线分支预测中的阻塞线程出现并且避免在多执行线程的流水线指令提取中的阻塞线程出现。
图7图解说明支持多执行线程的流水线分支预测和指令提取的多线程计算系统701的一个实施例。计算系统701可以包括:用来存储数据的可寻址存储器、本地存储704和高速缓存存储705;图形存储和图形控制器;以及各种各样的系统,可选地包括外围系统、盘和I/O系统、包括将用于存储的数据流入可寻址存储器中的网络接口的网络系统和包括存储多执行线程的指令的磁存储装置的外部存储系统,其中由处理器702访问的指令使处理器处理包括多执行线程的流水线分支预测和指令提取的指令。
处理器702的实施例可包括流水线分支预测和指令提取逻辑703,流水线分支预测和指令提取逻辑703包括用以从多个执行线程中选择执行线程的线程选择流水线阶段700和用以预分配分支预测输出队列中的存储的分支预测流水线720,将对应于选定的执行线程的一部分的存储进行预分配,以便防止分支预测流水线720中后续阶段的停止。流水线分支预测和指令提取逻辑703还包括第一指令提取流水线710,用以提取与选定的执行线程的一部分对应的提取地址上的指令数据并且用以把与选定的执行线程的一部分对应的存储位置上的指令数据存入指令提取输出队列731-732(如果有存储位置可用的话)。若没有存储位置可用,那么,指令提取流水线710启动使与选定的执行线程对应的指令提取流水线阶段无效的过程并且重新提取所述提取地址处的指令数据,以便避免指令提取流水线710中前面的阶段的停止。
处理器702的实施例还可以包括:译码逻辑740,用以按照顺序指令排序把指令提取输出队列731-732中的指令译码成代表所述顺序指令排序的微操作;分配逻辑750,用以向微操作分配执行资源;执行逻辑760,用以执行所述微操作;和退役逻辑770,用以按照它们代表的顺序指令排序使微操作退役。对于处理器702的某些实施例,退役逻辑770可以与分支预测流水线720结合,以便在其退役时更新对微操作的动态预测。
以上的描述用来说明本发明的优选实施例。根据上面的讨论,显然,尤其是在这样的技术领域中,其中增长迅速并且不容易预见进一步的进步,本专业的技术人员可以在所附的权利要求书和它们的等效物的范围内,在不脱离本发明的原理的情况下,在配置和细节上修改本发明。

Claims (24)

1.一种由计算机实现的用于多线程的流水线分支预测的方法,所述方法包括:
在第一流水线阶段,从多个执行线程中选择第一执行线程;
在第二流水线阶段,在分支预测输出队列中预分配存储,所述存储对应于所述第一执行线程的一部分;
在第三流水线阶段,产生对应于所述第一执行线程的所述部分的分支预测;和
把所述分支预测存储在所述分支预测输出队列中的所述预分配存储上。
2.如权利要求1所述的方法,还包括:
在所述第二流水线阶段,释放所述分支预测输出队列中的存储。
3.如权利要求2所述的方法,还包括:
防止所述第一执行线程向所述第三流水线阶段的进展,除非在所述第二流水线阶段,所述分支预测输出队列中的存储的释放和/或存储的预分配成功。
4.如权利要求3所述的方法,还包括:
对与所述第一执行线程的一部分对应的存储的释放和/或存储的预分配的失败作出响应,在所述第二流水线阶段,对所述分支预测输出队列中的存储进行预分配,所述存储对应于第二执行线程的一部分。
5.一种流水线分支预测设备,包括:
在第一流水线阶段,从多个执行线程中选择第一执行线程的部件;
在第二流水线阶段,在分支预测输出队列中预分配存储的部件,所述存储对应于所述第一执行线程的一部分;
在第三流水线阶段,产生对应于所述第一执行线程的所述部分的分支预测的部件;和
把所述分支预测存储在所述分支预测输出队列中的所述预分配存储上的部件。
6.如权利要求5所述的设备,其中,所述分支预测输出队列中的存储,对把与所述第一执行线程的一部分对应的指令数据存储在指令提取输出队列中作出响应而被释放。
7.如权利要求6所述的设备,还包括执行以下操作的部件:防止所述第一执行线程向所述第三流水线阶段的进展,除非在所述第二流水线阶段,所述分支预测输出队列中的存储的释放和/或存储的预分配成功。
8.如权利要求7所述的设备,还包括执行以下操作的部件:对与所述第一执行线程的一部分对应的存储的释放和/或存储的预分配的失败作出响应,对与第二执行线程的一部分对应的所述分支预测输出队列中的存储进行预分配。
9.如权利要求5所述的设备,还包括:对与所述第一执行线程的一部分对应的存储的释放和/或存储的预分配的失败作出响应,在所述第一流水线阶段中从所述多个执行线程中选择的第二执行线程。
10.一种带有多线程分支预测设备的多线程处理器,包括:
用于从多个执行线程中选择第一执行线程的装置;
用于在分支预测输出队列中预分配对应于所述第一执行线程的一部分的存储的装置;
用于对把所述第一执行线程的指令数据存入指令提取输出队列作出响应而释放所述分支预测输出队列中的存储的装置;
用于停止所述第一执行线程的装置,除非所述分支预测输出队列中的存储的释放和/或存储的预分配成功。
11.如权利要求10所述的多线程处理器,所述多线程分支预测设备还包括:
用于产生对应于所述第一执行线程的所述部分的分支预测并且把所述分支预测存储在所述分支预测输出队列中所述预分配的存储上的装置。
12.如权利要求10所述的多线程处理器,所述多线程分支预测设备还包括:
用于对所述第一执行线程的一部分对应的存储的释放和/或存储的预分配的失败作出响应而从所述多个执行线程中选择第二执行线程的装置;和
用于在所述分支预测输出队列中预分配与所述第二执行线程的一部分对应的存储的装置。
13.一种流水线分支预测设备,包括:
用于在线程选择流水线阶段中从多个执行线程中选择第一执行线程的部件;
在第一预测流水线阶段中,用于在分支预测输出队列中预分配与所述第一执行线程的第一部分对应的存储的部件,以及用于对把所述第一执行线程的所述第一部分对应的指令数据存入指令提取输出队列作出响应而释放所述分支预测输出队列中的存储的部件;
用于在第二预测流水线阶段中产生与所述第一执行线程的所述第一部分对应的分支预测的部件;和
所述分支预测输出队列用以在第三预测流水线阶段中接收所述分支预测并将所述分支预测存储在所述预分配的存储处;以及还包括
流水线指令提取部件,用以访问与所述第一执行线程的所述第一部分对应的、由所述可寻址存储器存储的指令数据并且用以把所述指令数据存入所述指令提取输出队列中。
14.如权利要求13所述的设备,还包括执行以下操作的部件:防止所述第一执行线程向所述第二预测流水线阶段的进展,除非在所述流水线分支预测设备的第一预测流水线阶段中所述分支预测输出队列中的存储的释放和/或存储的预分配成功。
15.如权利要求13所述的设备,其中,所述流水线指令提取部件在它不能够把所述指令数据存入所述指令提取输出队列中时,还将启动使与所述第一执行线程对应的一个或多个指令提取流水线阶段无效的过程以及重新提取与所述第一执行线程的所述第一部分对应的所述提取地址。
16.一种用于多执行线程的流水线分支预测和指令提取的设备,所述设备包括:
在线程选择流水线阶段中从多个执行线程中选择第一执行线程的装置;
分支预测输出队列,包括在第一分支预测流水线阶段中预分配第一存储位置,所述第一存储位置的预分配对应于所述第一执行线程的一部分,以便防止所述分支预测流水线中后续阶段的停止;
流水线指令提取装置,用以在所述流水线指令提取装置的第一指令提取流水线阶段中提取与所述第一执行线程的所述部分对应的提取地址处的指令数据;和
所述流水线指令提取装置用以在第二指令提取流水线阶段中在所述第二存储位置可用时,把与所述第一执行线程的一部分对应的第二存储位置处的所述指令数据存入指令提取输出队列中,否则,
在所述第二存储位置不可用时启动使对应于所述第一执行线程的一个或多个指令提取流水线阶段无效的过程以及重新提取所述提取地址,以便避免所述指令提取流水线中前面的阶段的停止。
17.如权利要求16所述的设备,还包括:用于对所述第一执行线程对应的第一存储位置的不可用性作出响应而停止所述第一分支预测流水线阶段的部件。
18.如权利要求16所述的设备,还包括:用于对所述第一执行线程对应的所述第一存储位置的不可用性作出响应而在所述线程选择流水线阶段中从所述多个执行线程中选择第二执行线程的部件。
19.如权利要求16所述的设备,还包括:用于对所述第一执行线程对应的所述第二存储位置的不可用性作出响应而在所述线程选择流水线阶段中从所述多个执行线程中选择第二执行线程的部件。
20.如权利要求16所述的设备,其中,启动重新提取所述第一执行线程的所述部分对应的提取地址的操作包括将用于所述第一执行线程的下一指令指针进行复位。
21.如权利要求16所述的设备,其中,使与所述第一执行线程对应的所述一个或多个流水线阶段无效的操作允许第二执行线程在所述指令提取流水线的前面的阶段中进展。
22.如权利要求16所述的设备,还包括:用于释放所述分支预测输出队列中的所述第一存储位置的部件。
23.如权利要求22所述的设备,还包括用于执行以下操作的部件:在所述第一分支预测流水线阶段中停止所述第一执行线程,除非所述分支预测输出队列中的所述第一存储位置的释放和/或所述第一存储位置的预分配成功。
24.如权利要求22所述的设备,还包括用于执行以下操作的部件:对所述第一执行线程的一部分对应的所述第一存储位置的释放和/或所述第一存储位置的预分配的失败作出响应,在所述分支预测输出队列中预分配第三存储位置,所述第三存储位置对应于第二执行线程的一部分。
CN2007101279638A 2006-06-29 2007-06-29 多执行线程的分区流水线执行的方法和设备 Expired - Fee Related CN101118486B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/479245 2006-06-29
US11/479,245 US9146745B2 (en) 2006-06-29 2006-06-29 Method and apparatus for partitioned pipelined execution of multiple execution threads

Publications (2)

Publication Number Publication Date
CN101118486A CN101118486A (zh) 2008-02-06
CN101118486B true CN101118486B (zh) 2010-06-09

Family

ID=38878272

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101279638A Expired - Fee Related CN101118486B (zh) 2006-06-29 2007-06-29 多执行线程的分区流水线执行的方法和设备

Country Status (2)

Country Link
US (1) US9146745B2 (zh)
CN (1) CN101118486B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101545357B1 (ko) * 2006-11-10 2015-08-18 퀄컴 인코포레이티드 파이프라인 컴퓨터 처리의 병렬화를 위한 방법 및 시스템
CN101655783B (zh) * 2009-05-08 2012-05-16 上海大学 前瞻多线程划分方法
CN102053821B (zh) * 2011-01-06 2014-03-19 中国人民解放军国防科学技术大学 一种多线程流分支控制方法及其控制装置
WO2013113595A1 (en) * 2012-01-31 2013-08-08 International Business Machines Corporation Major branch instructions with transactional memory
JP5673606B2 (ja) * 2012-05-30 2015-02-18 横河電機株式会社 通信装置
US9910776B2 (en) * 2014-11-14 2018-03-06 Cavium, Inc. Instruction ordering for in-progress operations
CN105138309B (zh) * 2015-07-09 2018-07-17 西安交通大学 基于cmp的推测多线程机制下的多推测路径线程划分方法
CN106656200B (zh) 2016-12-13 2019-11-08 合肥工业大学 一种程序计数器压缩方法及其硬件电路
CN108255518B (zh) * 2016-12-29 2020-08-11 展讯通信(上海)有限公司 处理器及循环程序分支预测方法
CN109840597B (zh) * 2017-11-28 2023-04-07 珠海市君天电子科技有限公司 一种模型预测方法、装置、电子设备及存储介质
CN109101276B (zh) * 2018-08-14 2020-05-05 阿里巴巴集团控股有限公司 在cpu中执行指令的方法
CN111459549B (zh) * 2020-04-07 2022-11-01 上海兆芯集成电路有限公司 具有高度领先分支预测器的微处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1364261A (zh) * 1999-04-29 2002-08-14 英特尔公司 用于在一个多线程处理器内进行线程切换的方法和装置
CN1540498A (zh) * 2003-04-21 2004-10-27 国际商业机器公司 用于在同步多线程处理器中改变流水线长度的方法和电路

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6154833A (en) * 1997-08-11 2000-11-28 Intel Corporation System for recovering from a concurrent branch target buffer read with a write allocation by invalidating and then reinstating the instruction pointer
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6427192B1 (en) * 1998-09-21 2002-07-30 Advanced Micro Devices, Inc. Method and apparatus for caching victimized branch predictions
US6438673B1 (en) 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
US6640297B1 (en) * 2000-06-19 2003-10-28 Transmeta Corporation Link pipe system for storage and retrieval of sequences of branch addresses
US6564298B2 (en) 2000-12-22 2003-05-13 Intel Corporation Front end system having multiple decoding modes
US8285976B2 (en) 2000-12-28 2012-10-09 Micron Technology, Inc. Method and apparatus for predicting branches using a meta predictor
US7428627B2 (en) 2000-12-29 2008-09-23 Intel Corporation Method and apparatus for predicting values in a processor having a plurality of prediction modes
US20030018883A1 (en) 2001-06-29 2003-01-23 Stephan Jourdan Microcode branch prediction indexing to macrocode instruction addresses
US7203825B2 (en) 2001-10-03 2007-04-10 Intel Corporation Sharing information to reduce redundancy in hybrid branch prediction
US7143273B2 (en) 2003-03-31 2006-11-28 Intel Corporation Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history
US20050071614A1 (en) 2003-09-30 2005-03-31 Stephan Jourdan Method and system for multiple branch paths in a microprocessor
US20050132174A1 (en) 2003-12-16 2005-06-16 Intel Corporation Predicting instruction branches with independent checking predictions
US7136992B2 (en) 2003-12-17 2006-11-14 Intel Corporation Method and apparatus for a stew-based loop predictor
US7243219B2 (en) 2003-12-24 2007-07-10 Intel Corporation Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction
US20050149709A1 (en) 2003-12-29 2005-07-07 Intel Corporation Prediction based indexed trace cache
US7797683B2 (en) 2003-12-29 2010-09-14 Intel Corporation Decoupling the number of logical threads from the number of simultaneous physical threads in a processor
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1364261A (zh) * 1999-04-29 2002-08-14 英特尔公司 用于在一个多线程处理器内进行线程切换的方法和装置
CN1645317A (zh) * 1999-04-29 2005-07-27 英特尔公司 用于在一个多线程处理器内进行线程切换的方法和装置
CN1540498A (zh) * 2003-04-21 2004-10-27 国际商业机器公司 用于在同步多线程处理器中改变流水线长度的方法和电路

Also Published As

Publication number Publication date
CN101118486A (zh) 2008-02-06
US20080005544A1 (en) 2008-01-03
US9146745B2 (en) 2015-09-29

Similar Documents

Publication Publication Date Title
CN101118486B (zh) 多执行线程的分区流水线执行的方法和设备
JP3542020B2 (ja) 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理を実行するプロセッサ装置およびプロセッサ制御方法
US7509484B1 (en) Handling cache misses by selectively flushing the pipeline
US6694425B1 (en) Selective flush of shared and other pipeline stages in a multithread processor
EP1150213B1 (en) Data processing system and method
CN101201734B (zh) 预解码用于执行的指令的方法及装置
CN102087591B (zh) 非循序执行的微处理器及其操作方法
CN101853150B (zh) 非循序执行的微处理器及其操作方法
CN100559343C (zh) 预解码用于执行的指令的方法及装置
US6442681B1 (en) Pipelined central processor managing the execution of instructions with proximate successive branches in a cache-based data processing system while performing block mode transfer predictions
US7454596B2 (en) Method and apparatus for partitioned pipelined fetching of multiple execution threads
CN101937331B (zh) 用于自适应处理远程原子执行的方法、设备和系统
US20060112261A1 (en) Method and apparatus for incremental commitment to architectural state in a microprocessor
US20080077928A1 (en) Multiprocessor system
US20070074006A1 (en) Method and apparatus for early load retirement in a processor system
JP2005182825A5 (zh)
CN101449237A (zh) 快速和廉价的存储-加载冲突调度和转送机制
CN109196485A (zh) 用于维持非均匀计算装置中的数据一致性的方法和设备
WO1998025196A2 (en) Dynamic branch prediction for branch instructions with multiple targets
CN101449238A (zh) 本地和全局分支预测信息存储
US8190825B2 (en) Arithmetic processing apparatus and method of controlling the same
US20120124344A1 (en) Loop predictor and method for instruction fetching using a loop predictor
US20210042122A1 (en) Method for executing instructions in cpu
CN109313554A (zh) 用于在非均匀计算装置中进行调度的方法和设备
CN103019652A (zh) 滑动窗口、基于区块的分支目标地址高速缓冲存储器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
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: 20100609

Termination date: 20180629