多执行线程的分区流水线执行的方法和设备的制作方法

文档序号:6610875阅读:245来源:国知局
专利名称:多执行线程的分区流水线执行的方法和设备的制作方法
多执行线程的分区流水线执行的方法和设备 技术领域本公开一般涉及微处理器领域。具体地说,本公开涉及将微处理 器流水线分区以便支持多执行线程的流水线作业。
技术背景计算系统和微处理器往往支持多道处理,例如以下形式的多道处 理多个处理器,或处理器内的多个核,或运行在处理器核上的多 个软件处理或线程(历史上涉及协同例程),或上述各项的不同组合。在现代微处理器中,许多技术用来提高性能。流水线作业是利用 具有类似执行阶段的不同指令之间的并行操作的技术。例如,这些 阶段一般被认为是取指令、译码、操作数读、执行、回写等。通过 对指令序列并行地进行关于多个流水线阶段的工作,可以减少有效 机器周期时间并且可以利用所述序列中各指令阶段之间的并行性。 在某些现代微处理器中,还可以把这些阶段分为越来越小的时间片, 以便进 一 步减小有效机器周期时间。分支预测是用来提高性能的另 一种技术。当在指令系列中出现分 支指令时,可能不知道分支决策的结果,直到在随后的流水线阶段 之一中执行所述分支指令为止。因而,可以将气泡(bubble)引入流 水线中,直到确定需要提取哪些分支目标指令为止。在知道分支决 策的结果之前,不是等待,而可以预测采取或不采取的分支,并且 可以从存储器提取预测目标的指令,因而减少流水线中的气泡。泡在流水线中的出现。例如,当对于一个特定的执行线程发生指令 高速緩存未命中时,可以从另 一个执行线程提取指令以便填充流水 线气泡,否则,要等待从外部存储器检索未命中的高速緩存行来得
到所述流水线气泡。
另 一方面,诸如一些特定类型的内部微处理器资源的耗尽的状态 可能使一个或多个流水线阶段停止。在流水线中一个执行线程停止 的时候,该流水线中其它线程的进展也可能被阻塞,因而,降低了 5 在流水线微处理器上执行多个线程的有效性。


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