用于调度线程的技术的制作方法

文档序号:6579326阅读:101来源:国知局
专利名称:用于调度线程的技术的制作方法
技术领域
本发明的各实施例一般涉及信息处理领域。更具体而言,本发明的各实施例涉及 调度处理器中的多个指令线程的技术。
背景技术
微处理器中的多线程操作涉及同时地或以从应用程序或操作系统的观点来看表 现为同时的方式来执行多个指令序列的技术。线程操作架构中的差异可包括调度线程的方 式或向各个线程分配处理资源的方式。例如,某些现有技术线程操作架构在将处理资源分 配给不同的线程之前,仅仅在特定时间量内将该处理资源分配给某一线程。例如,某些现有 技术架构可以实现将线程的执行“暂停”特定时间量的指令,并且该时间量可能不能在每次 使用该指令时改变,反而是固定的。在不考虑线程的瞬时处理需求或该线程所使用的处理资源的状态的情况下在固 定时间量内向线程分配处理资源可导致在完成某些重要的或者合理的操作之前切换线程。 此外,不顾处理状态或线程需求而切换线程可导致处理器性能的降级。除基于某一任意时间量切换线程之外,某些现有技术线程操作架构在特定一个或 一组事件时切换线程,而不管线程的需求或底层处理资源的状态。类似地,这些线程操作架 构可导致在次优的时间或频率切换线程,使得性能受损或功耗可能增加。


本发明的实施例在各附图中是作为示例而非作为限制示出的,在附图中相同的附 图标记指代相同的元素,并且其中图1示出其中可以实现至少一个实施例的逻辑;图2示出其中可以使用本发明的至少一个实施例的处理器;图3示出其中可以使用本发明的至少一个实施例的共享总线计算机系统的框图;图4示出其中可以使用本发明的至少一个实施例的点对点互连计算机系统的框 图;图5是示出可以在一个实施例中使用的操作的流程图。
具体实施例方式本发明的各实施例涉及计算机系统和信息处理。更具体而言,本发明的各实施例 涉及至少部分地基于处理资源的各状态条件来延迟或阻止不同的线程访问处理资源的技 术。在一个实施例中,例如指令、子指令(例如“微操作(UOP) ”)或控制信号(此后一般被 称为“指令”)可被执行,以使得线程调度逻辑延迟从正在执行的一个线程到另一个的切换, 直到满足某一条件为止,如加载了数据或已经过去了多个时钟周期等。在另一实施例中,可 以执行一指令,该指令使得线程调度器不调度线程中的后续指令来执行,直到返回了该后 续指令所依赖的或者使用的预取数据为止。此外,在一个实施例中,以上指令不调用处理该线程的处理资源(例如处理“流水线”)的清除,而相反允许处理资源保持状态信息,以便在 满足各种条件之后经延迟的或停止的线程可以恢复执行。本发明的各实施例通过允许各种各样的和可变数量的条件来控制是否要延迟、切 换或者清除线程,来允许比现有技术线程调度技术更智能的线程切换。通过允许多个可变 条件基于任何特定时间的处理条件来确定是否要调度或者切换线程,本发明的各实施例可 以在只有切换线程的更低的系统功耗的同时改进处理性能,并且因此导致与其相关联的状 态保存/恢复开销,从处理观点来看时这样做是有意义的。不同于基于固定的或刚性的某 组准则或定时来切换线程的现有技术线程调度技术,本发明的各实施例允许线程切换根据 变化的系统和处理条件、根据考虑给定时刻的系统和处理资源参数和条件的各种可变算法 来发生。在一些实施例中,此处描述的线程调度技术至少部分地基于处理资源中的各种微 架构条件来阻止或延迟线程切换,其中各线程在以下时刻执行,如在处理未对齐的数据操 作数期间,在处理锁定的或原子操作时,在处理要求多个或复合操作(加载_>ALU操作、加 载->ALU->存储操作等)的指令时,在处理使用微码操作序列的指令时,或在解码包含特定 前缀、操作数大小、地址大小、锁、重复操作、或段超越操作的指令时。各实施例还可以延迟 或阻止作为其它微架构条件的结果的线程切换。在一些实施例中,取决于特定线程的处理 状态、该线程的执行阶段等,一个或多个条件可以选择性地使得线程调度器从处理器清除 或不清除该线程。图1示出其中可以实现至少一个实施例的逻辑。图1包括预取缓冲区组101,其 存储从高速缓存或其它存储器(未示出)中取到对应于每一线程的各缓冲区位置中的指 令。在一个实施例中,调度逻辑100支持四个线程的调度,并且预取缓冲区组包括每一线程 至少一个缓冲区条目以存储所取的每一线程的指令。在其它实施例中,预取缓冲区组包括 存储每一线程的多个指令的多个缓冲区条目。所取的每一线程的指令可以沿互连TO、Tl、 T2和T3来传递到多路复用器(mux) 105,其可以基于来自线程选取器逻辑110的选择线选 择各指令中的对应于所选线程的一个。线程选取器逻辑可以基于线程阻塞指示符115和/ 或解码器120所提供的、所取的指令的经解码的指示或表示来确定选择哪一线程,并且因 此确定执行该线程的哪些指令。在一个实施例中,解码器向线程选取器逻辑指示指令在何时被解码并且何时可以 选择来自不同的线程的新指令。在一个实施例中,如果线程阻塞信号未置为有效(assert), 并且解码器向线程选取器逻辑指示所选择的当前指令已被解码,则线程选取器逻辑可以选 择来自不同的线程的指令。在一个实施例中,线程选取器逻辑以“循环”的方式选择来自线 程的指令,以使得以确定的方式来选择各线程(例如T0、T1、T2、T3)。在一个实施例中,线程 选取器逻辑可以根据某一算法来选择线程,使得线程被选择的次序基于其它条件而改变。在一个实施例中,线程选取器逻辑通过向多路复用器将信号置为有效来选择特定 线程的指令,这允许线程中的指令由解码逻辑解码并由执行逻辑(未示出)执行。线程选 取器逻辑可以实现用于选择从特定线程中选择哪一指令的各种算法,包括静态算法,如顺 序或“循环”选择算法。然而,在一个实施例中,线程选取逻辑接收指示该线程是否应被阻 塞/延迟等或其是否应当继续下去的线程阻塞信号。在一个实施例中,线程阻塞信号可以 超越可由线程选取器实现的用于选择接下来要选取哪一线程的任何算法。例如,在一个实施例中,线程阻塞信号的置为有效阻止顺序或“循环”的次序中的下一线程被选择。在一个实施例中,线程阻塞信号可以出于各种原因而被置为有效,包括延迟指 令或“vprefetch.misshint”指令的执行。例如,响应于接收、解码、或处理vprefetch. misshint指令或类似指令,线程阻塞控制逻辑(未示出)可以将线程阻塞信号置为有效,以 阻止线程选取器逻辑选择线程,直到从存储器分层结构中取出了 vprefetch. misshint指 令所请求的数据为止。一旦取出了数据,线程阻塞信号可被置为无效以允许具有等待所取 的数据的指令的线程被选择和解码。在一个实施例中,在取数据(例如从存储器或2级高速缓存到1级高速缓存)的指 令距使用它的指令(例如“加载”指令)特定“距离”(程序指令的数量)的情况下,vpretch. misshint指令或类似的指令对开发者而言可能是有用的。在这些情况下,可以阻止其它线 程利用硬件,直到数据被取出并且可以使用为止,因为利用该数据的线程在满足消费者指 令(使用所取的数据的指令)之前不会将处理资源重新租用给其它线程。在一个实施例中, vprefetch. misshint通过使得包含消费者指令的线程被“跳过”或不被调度,来阻止消费者 指令阻止其它线程使用硬件资源并阻止消费者指令允许调度和执行另一线程。以此方式, 在线程等待所取的数据时,不允许它阻止对处理资源的访问。在一个实施例中,延迟指令可由处理逻辑(以下描述)来执行,该处理逻辑可使得 线程阻塞信号在可选择的时间量内被置为有效。例如,在一个实施例中,延迟指令包括向处 理逻辑指示线程应被延迟的时钟数量的字段。不同于可能基于处理流水线深度来在固定时 间量内暂停线程的现有技术指令,延迟指令可以在可变时间量内延迟线程并且无需从处理 资源中清除对应于该线程的状态。一旦过去了规定时间量(例如经由时钟计数器来跟踪), 线程阻塞信号可被置为无效以使得线程选取器逻辑可以根据该线程选取逻辑中实现的算 法(例如循环)来选择下一线程。在一个实施例中,线程阻塞信号可以响应于处理逻辑(以下描述)执行 "vprefetch. misshint”指令而被置为有效,这使得该线程被延迟到从存储器分层结构接收 到所需的预取数据为止。此外,在一个实施例中,vprefetch. misshint指令可以停止或延迟 线程的执行而无需从处理资源中清除对应于该线程的状态信息。然而,在其它实施例中,如 果检索预取数据花费过长时间,则vprefetch. misshint指令可以使得处理器状态能够被 清除,以使其它线程不被不恰当地延迟执行。在一个实施例中,可以使用定时器来对从响应 于vprefetch. misshint指令而延迟线程的时刻到阈值周期数量的周期数量进行计数。一 旦满足阈值周期数量,则可以从处理器逻辑清除对应于延迟线程的状态,并将线程阻塞信 号置为无效以允许执行不同的线程。在其它实施例中,可出于其它原因来将线程阻塞信号置为有效,如响应于处理逻 辑中的各种微架构事件或状态,包括上述微架构事件。在一个实施例中,线程选取器逻辑可 以响应于睡眠向量或其它类似控制结构中所包含的信号或数据来选择线程。例如,在一个 实施例中,睡眠向量可以存储指示处理条件的各个位,这些条件诸如数据转换后备缓冲区 (DTLB)未命中、1级(Li)高速缓存读未命中、1级独占读(RFO)未命中、填充缓冲区满条件、 填充缓冲区组地址匹配条件、不可高速缓存写、不可高速缓存写缓冲区满条件、延迟指令进 行条件、指令预取缓冲区空条件和vprefetch. misshint指令执行条件。睡眠缓冲区的各条 目的一个实施例由下表示出
权利要求
一种装置,包括至少部分地基于第二指令是否已被执行来选择对应于多个线程中的一个线程的第一指令的线程选择逻辑,其中所述第二指令是从包括vprefetch.misshint指令和线程延迟指令的一组指令中选择的。
2.如权利要求1所述的装置,其特征在于,所述第二指令使得线程阻塞信号被置为有 效以阻止所述线程选择逻辑选取所述第一指令。
3.如权利要求1所述的装置,其特征在于,所述线程选择逻辑至少部分地基于多个微 架构条件中的一个来选择所述第一指令,所述多个微架构条件包括未对齐的数据操作数 的处理;处理锁定的或原子操作;处理要求多个或复合操作的指令;处理使用微码操作序 列的指令;以及解码包含特定前缀、操作数大小、地址大小、锁、重复操作、或段超越操作的 指令。
4.如权利要求1所述的装置,其特征在于,所述vprefetch.misshint指令和所述线程 延迟指令的指示存储在睡眠向量中。
5.如权利要求4所述的装置,其特征在于,所述睡眠向量包括多个微架构条件的多个 指示符。
6.如权利要求1所述的装置,其特征在于,所述线程选择逻辑按照顺序次序选择来自 不同线程的指令。
7.如权利要求1所述的装置,其特征在于,所述线程选择逻辑根据动态选择算法选择 来自不同线程的指令。
8.如权利要求1所述的装置,其特征在于,所述线程选择逻辑根据时间复用算法选择 来自不同线程的指令。
9.一种系统,包括包含一组指令的存储器,所述指令包括vprefetch. misshint指令和线程延迟指令;取出并执行所述一组指令的处理器。
10.如权利要求9所述的系统,其特征在于,所述处理器包括至少部分地基于所述 vprefetch. misshint指令或线程延迟指令是否已被执行来选择对应于多个线程中的一个 线程的多个指令中的一个的线程选择逻辑。
11.如权利要求10所述的系统,其特征在于,所述一组指令使得线程阻塞信号被置为有效。
12.如权利要求11所述的系统,其特征在于,所述线程选择逻辑至少部分地基于多个 微架构条件中的一个来选择指令,所述多个微架构条件包括未对齐的数据操作数的处理; 处理锁定的或原子操作;处理要求多个或复合操作的指令;处理使用微码操作序列的指 令;以及解码包含特定前缀、操作数大小、地址大小、锁、重复操作、或段超越操作的指令。
13.如权利要求12所述的系统,其特征在于,所述vprefetch.misshint指令和所述线 程延迟指令的指示存储在睡眠向量中。
14.如权利要求13所述的系统,其特征在于,所述线程选择逻辑按照顺序次序选择来 自不同线程的指令。
15.如权利要求14所述的系统,其特征在于,所述线程选择逻辑根据动态选择算法选 择来自不同线程的指令。
16.如权利要求15所述的系统,其特征在于,所述线程选择逻辑根据时间复用算法选 择来自不同线程的指令。
17.一种方法,包括取出对应于第一线程的第一指令;取出对应于第二线程的第二指令;如果一组指令中的一个指令被执行,则阻止所述第二指令执行,所述一组指令包括 vprefetch. misshint指令和延迟指令。
18.如权利要求17所述的方法,其特征在于,所述vprefetch.misshint指令延迟线程 切换,直到接收到预取数据为止。
19.如权利要求17所述的方法,其特征在于,所述延迟指令阻止所述第二指令被执行, 直到所述第一指令已被执行为止。
20.如权利要求17所述的方法,其特征在于,包括将线程阻塞信号置为有效。
21.如权利要求20所述的方法,其特征在于,包括至少部分地基于多个微架构条件中 的一个来选择指令,所述多个微架构条件包括未对齐的数据操作数的处理;处理锁定的 或原子操作;处理要求多个或复合操作的指令;处理使用微码操作序列的指令;以及解码 包含特定前缀、操作数大小、地址大小、锁、重复操作、或段超越操作的指令。
22.如权利要求21所述的方法,其特征在于,所述vprefetch.misshint指令和所述线 程延迟指令的指示存储在睡眠向量中。
23.如权利要求22所述的方法,其特征在于,还包括按照顺序次序选择来自不同线程 的指令。
24.如权利要求22所述的方法,其特征在于,还包括根据动态选择算法选择来自不同 线程的指令。
25.如权利要求22所述的方法,其特征在于,包括根据时间复用算法选择来自不同线 程的指令。
全文摘要
一种调度多个线程以供在处理器内执行的技术。更具体而言,一个实施例涉及基于处理资源的各种状态来使用各种条件或指令延迟或阻止处理器中的线程切换操作的技术。
文档编号G06F9/48GK101944046SQ20091015983
公开日2011年1月12日 申请日期2009年7月7日 优先权日2009年7月7日
发明者C·陈, D·卡尔曼, E·斯普林格, E·格罗科斯基, J·劳洛, K·加纳帕锡, M·阿布拉什, T·福塞斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1