用于虚拟多线程处理的睡眠状态机制的制作方法

文档序号:6501743阅读:164来源:国知局
专利名称:用于虚拟多线程处理的睡眠状态机制的制作方法
技术领域
本发明所公开的内容一般涉及信息处理系统,尤其涉及为可在具有多个逻辑处理器的处理器上执行的活动和非活动软件线程维护架构状态值的机制。
背景技术
为了提高诸如包括微处理器等的信息处理系统的性能,同时采用了硬件和软件技术。在硬件方面,提高微处理器性能的微处理器设计方法已包括了提高的时钟速度、管道化、分支预测、超标量执行、乱序执行、以及高速缓存。许多此类方法导致晶体管总数增长,甚至在一些情况下,导致晶体管总数以超过性能提高速率的速率增长。
其它性能提高方案不是寻求通过额外的晶体管来提高性能,而是涉及软件技术。已被用来提高处理器性能的一种软件方法被称为“多线程处理”。在软件多线程处理中,一个指令流可被分成能被并行执行的多个指令流。或者,可并发地执行独立的软件线程。
在一种称为时隙多线程处理或时分多路复用(“TMUX”)多线程处理的方法中,单个处理器在固定的一段时间之后在线程之间进行切换。在另一种方法中,一发生诸如长等待时间高速缓存丢失等触发事件,单个处理器即在线程之间进行切换。在称为事件触发切换多线程处理(“SoEMT”)的后一种方法中,在给定时间至多只有一个线程是活动的。
多线程处理在硬件中受到越来越多的支持。例如,在一种方法中,诸如芯片多处理器(“CMP”)系统等多处理器系统中的处理器每一个可并发地作用于多个线程中的一个。在称为同时多线程处理(“SMT”)的另一种方法中,使单个物理处理器对操作系统和用户程序表现为多个逻辑处理器。对于SMT,可有多个线程是活动的,并且在单个处理器上并发地执行而无需切换。即,每个逻辑处理器维护一组完整的架构状态,但该物理处理器的许多其它资源,诸如高速缓存、执行单元、分支预测电路控制逻辑和总线是共享的。对于SMT,来自多个软件线程的指令由此可在每个逻辑处理器上并发地执行。
附图简述本发明可参考以下附图来理解,附图中,相似的元素由相同的标号指示。并不试图使这些附图成为限制性的,而是提供这些附图来说明对为多个SMT逻辑线程环境上所支持的多个SoEMT软件线程维护架构状态值的机制的装置、系统和方法所选的实施例。


图1是包括如本文中所公开的状态机制的多线程处理器的至少一个实施例的框图。
图2是提供两个逻辑处理器的SMT处理器的现有技术的M路状态选择多路复用器逻辑的框图。
图3是提供两个逻辑处理器并支持四(N)个虚拟软件线程的SMT处理器的N路状态选择多路复用器逻辑的至少一个实施例的框图。
图4是示出使用提供两(M)个逻辑处理器并支持四(N)个虚拟软件线程的SMT处理器的简化M路状态选择多路复用器逻辑的一种状态机制的至少一个实施例的框图。
图5是示出一种状态机制的至少一个实施例的具体细节的框图。
图6是示出一种为多个虚拟软件线程维护架构状态的方法的至少一个实施例的流程图。
图7是示出一个示意性线程切换示例的数据值的数据流框图。
图8是示出一种能够使用所公开的技术的处理系统的至少一个实施例的框图。
详细描述在以下描述中,阐述了诸如处理器类型、多线程处理环境、微架构结构、架构状态元件、以及线程切换方法等许多具体细节,以提供对本发明的全面理解。但是,本领域技术人员可以理解,本发明无需这些具体细节也可实施。此外,为免不必要地混淆本发明,没有详细示出某些公知的结构、电路等。
本文中公开了多线程处理方法的一种特别的混合。具体而言,SoEMT和SMT多线程处理方法的组合在本文中被称为“虚拟多线程处理”环境。对于SMT,两个或多个软件线程可在单独的逻辑环境中并发地运行。对于SoEMT,在任何给定时刻,多个软件线程中仅有一个在逻辑环境中是活动的。这两种方法在虚拟多线程处理中被组合。在虚拟多线程处理中,两个或多个逻辑环境中的每一个都支持两个或多个被称为“虚拟线程”的SoEMT软件线程。
例如,可有三个虚拟软件线程在支持两个单独逻辑线程环境的SMT处理器上运行。这三个软件线程中的任何一个都可开始运行,然后一旦发生SoEMT触发事件即进入非活动状态。非活动状态在本文中可被称为“睡眠”状态,尽管如本文中所使用的术语“睡眠状态”并不意在成为限制性的。由此,“睡眠状态”旨在一般地包括SoEMT线程的非活动状态。
因为TMUX多线程处理定时器的到期可被视为一种类型的SoEMT触发事件,所以就本文中所描述的实施例而言,术语“SoEMT”的使用旨在包括其中一旦TMUX定时器、以及一旦发生诸如长等待时间高速缓存丢失、特定指令类型的执行等其它类型的触发事件时即执行线程切换的多线程处理。
当继续进行时,睡眠的软件线程无需在其原来开始执行的同一个逻辑环境中继续进行-它可以在同一个逻辑环境中,或在另一个逻辑环境中继续进行。换言之,虚拟软件线程可随时间推移在逻辑环境之中来回切换。本文中所公开的是一种为多个活动和非活动软件线程维护架构状态值、以支持混合虚拟多线程处理(VMT)环境的机制。
图1是示出一种能够执行所公开的技术的处理器104的框图,它以维护相对很低的硬件额外开销、对关键的定时路径具有极小或没有不利影响、以及支持SMT处理器的翻新的方式来为多个VMT软件线程维护架构状态,以支持虚拟多线程处理。
处理器104可包括前端120,它预取可能会被执行的指令。对于至少一个实施例,前端120包括取址/解码单元222,该单元包括用于两个或多个物理线程环境中的每一个的逻辑上独立的定序器420A-420M。这些物理线程环境在本文中还可被互换地称为“逻辑处理器”和/或“物理线程”。单个物理取址/解码单元222由此包括多个逻辑上独立的定序器420A-420M,其中每一个对应于M个物理线程中的一个。
图1示出处理器104的至少一个实施例包括状态机制130。状态机制130维护一个或多个架构状态元件140的值。为N个虚拟线程中的每一个维护架构状态元件140的一个副本。架构状态元件可以是为处理器104维护架构状态的单元的任何存储元件。因此,状态元件140可以是例如锁存器、寄存器、寄存器阵列等等。例如,状态元件140可以是特定的控制寄存器或一般的寄存器。
尽管可实施本文中所公开的状态机制130的实施例来为单个物理线程上的多个(N个)SoEMT软件线程维护和交换活动和非活动状态元件值,但对于至少一个实施例,M≥2。
图1还示出,状态机制130还可包括控制逻辑150。控制逻辑150允许相关联虚拟线程的执行期间对架构状态元件140的适当副本的正常写更新。
控制逻辑150还执行状态选择功能,以使在执行对状态元件的访问(诸如读)时,适当的线程专用状态元件140的值被提供给处理器。如以下进一步详细讨论的,该选择功能是经由简化的多路复用逻辑来执行的,该逻辑将涉及为这一访问请求选择状态元件适当副本的值的定时最小化。
对于至少一个实施例,在活动和非活动状态元件值的二叉模式中维护线程专用的状态元件值。通过仅为M个物理线程中的每一个维护一个当前活动状态元件值,就可由M路多路复用器而不是N路多路复用器来执行M个物理线程上的N个虚拟线程的状态选择多路复用(见以下图2-5的讨论)。
除了状态选择功能以外,控制逻辑150还在虚拟线程切换期间执行活动状态元件值与非活动状态元件值的交换。该交换处理在以下进一步详细讨论。
由此,状态机制130可包括控制逻辑150,用于维护、交换和选择N个软件线程的状态元件值。不应把图1中将状态机制130描述为包括状态元件140A-140N视为是限制性的。例如,对于至少一个实施例,状态机制130可仅包括控制逻辑150,并可被耦合到状态元件存储结构140A-140N。例如,对于至少一个实施例,状态机制130可包括控制逻辑150、以及M-N个存储结构用于维护非活动状态元件值。状态机制130的该实施例可被耦合到M个活动状态元件值的存储元件。
图2示出一种相对简单的现有技术的M∶1多路复用选择逻辑200,它于在M个逻辑处理器中的每一个上运行单个软件线程的传统SMT环境中提供适当的状态元件值。通过将物理线程标识符作为选择输入来使用,就可使用2∶1多路复用器202来从两个当前状态元件存储结构204、206之中选择适当的值。尽管图2中示出了仅涉及两个物理线程的模式,但是本领域技术人员将会认识到,使用额外的状态元件和更大的多路复用器就可支持两个以上的物理线程。
图3示出N∶1多路复用选择逻辑300的至少一个实施例,它可被用来从N个当前状态元件存储结构302、304、306、308之中选择适当的值。该实施例300可被用来例如为在M个物理线程上支持N个虚拟软件线程的SMT处理器执行状态选择逻辑。在该实施例中,可使用N路多路复用器301,以基于被用作选择输入的虚拟线程标识符来选择状态元件302、304、306、308中的一个的值。
可以注意到,与图2中所示的2∶1多路复用逻辑200相比,图3的逻辑300需要额外的硬件开销,因为使用了多位虚拟线程标识符作为选择输入,而这是由于在该多路复用逻辑中涉及两个以上的状态。
还应当注意,图3中所示的多路复用逻辑300可能会带来不可接受的定时延迟。即,4∶1多路复用器301通常比2∶1多路复用器需要更多的时间来生成它的输出值307。状态选择的定时延迟通常是关键性的,因为对架构状态的访问常常是在处理器的许多功能单元的关键路径上。
图4示出状态机制430的一个实施例,它可使用图2中所示的高效的M∶1多路复用模式,而与此同时能维护N个虚拟线程的状态。对于状态机制430的至少一个实施例,N>M≥2。尽管图4示出M=2且N=4的一个特定实施例,但是本领域技术人员将会认识到,可使用许多其它的M和N值,而不会偏离图4中所示出的一般概念。
图4示出状态选择逻辑410,它用于为架构元件值的读访问提供输出值407。与图2相比,图4示出状态选择逻辑410并不比在M个状态元件值之中执行状态选择逻辑的传统M路(其中M是物理线程数)状态选择多路复用模式(见图2,200)更为复杂。图4的阴影框示出维持了图2的简化状态选择多路复用模式200。
但是,图4还示出状态机制430可为非活动线程维护另外的状态元件值,并且还包括另外的线程切换逻辑,用于在线程切换时,以非活动状态元件的值换出活动状态元件(402、404)的值。另外的非活动状态元件存储结构和线程切换逻辑在图4中由参考标号415统一表示。
图4示出用于跟踪状态元件值的二叉模式。当前在M个物理线程中的每一个上执行的虚拟线程的那些状态元件值被称为“活动”状态元件值。此类活动状态元件值是在存储结构402、404中维护的,这些存储结构可为执行M路选择功能以为访问操作提供适当状态元件值407的多路复用器406所用。
此外,状态机制430的附加部分415包括存储区域,用于为每个另外的非活动虚拟线程维护另外的状态元件值。例如,如果处理器在两个物理线程上支持三个虚拟软件线程,则多路复用选择逻辑410为每个物理线程维护状态元件活动值(见402、404),并且状态机制430的附加部分415为第三虚拟线程维护“睡眠”状态元件值。
当然,对于为M个物理线程中的每一个的状态元件维护单独的状态机制430的实施例,或是M=1的实施例,就不存在多路复用器306,因为状态机制430仅维护一个活动存储元件值402或404。但是,对于这些实施例,可使用非活动状态元件值和交换逻辑(见415)来维护并响应于软件线程切换来交换活动与非活动值。
图5进一步详细示出图4的状态机制430的至少一个实施例。图5中所示的状态机制实施例430仅旨在说明,并提供一种在两个(M个)物理线程上支持四个(N个)虚拟软件线程的示例性状态机制430。但是,不应将此类特定的M和N值视为是限制性的。
图5示出,状态机制430的附加部分415包括存储结构502、504,用于维护非活动线程的状态元件值。那些非活动的、且其值在附加存储结构502、504中被跟踪的虚拟线程在本文中有时被称为“睡眠”线程。
如以上参考图4所述,简化的状态选择逻辑402、404、406响应于访问请求(诸如读请求),为状态元件选择适当的输出值407。该简化的逻辑无需考虑非活动存储元件502和504中所保持的非活动状态值。
图5示出,为了支持状态机制为线程切换(在以下详细讨论)提供的交换功能,活动状态元件402、404与非活动状态元件502、504以十字形配置被耦合在一起。
图5示出,所示的状态机制430可提供翻新能力,以使SMT处理器可支持虚拟多线程处理。通过为架构状态的每一个元件提供一个状态机制430,SMT处理器就可被翻新以提供虚拟多线程处理环境,并为所支持的每一个虚拟线程维护架构状态信息。
图5还示出线程切换控制逻辑,状态机制430的至少一个实施例经由此控制逻辑将非活动状态元件值与活动状态元件值交换来进行线程切换。图5示出,非活动状态元件502、504以十字形配置被耦合到活动状态元件402、404。一发生线程切换,就有一个非活动的虚拟线程(“苏醒”线程)被换入,从而变成给定物理线程上的新的活动线程。基于同样原因,一发生线程切换,当前的活动线程(“打盹”线程)就被换出,从而变成非活动线程。如上所述,非活动线程不专属于任何特定物理线程。为此,十字形配置允许活动和非活动状态值的交换,以使先前在一特定物理线程上活动的非活动线程可被换入,从而变成另一物理线程上的活动虚拟线程。
图5示出,每个活动状态存储元件402、404分别被耦合到数据输出线511、513。数据输出线511、513将活动状态值提供给非活动状态存储元件502、504中的一个。这些数据输出线511、513被用来在当前虚拟线程变为非活动时将当前状态值分别传递给非活动状态元件502、504。基于同样原因,线程切换更新路径515、517为正在经历线程切换的物理线程提供将要变为新的活动值的非活动值。
图5示出,两条活动状态数据输出线511、513可将相应的活动值分别提供给第一多路复用器506和第二多路复用器508。每个多路复用器506、508的选择线反映“当前线程”指示符,该指示符指定活动状态值402、404中哪一个要被换出从而变成非活动值。本领域技术人员将会认识到,多路复用器506和508可被合并。
如果当前线程指示信号指定,第一活动状态元件402的值要被交换(即,402持有打盹线程的状态元件值),则多路复用器506和508分别向非活动状态元件0502和非活动状态元件1 504提供该值。否则,如果当前线程指示符指定,第二活动状态元件404的值要被交换(即,404持有打盹线程的状态元件值),则多路复用器506和508向非活动状态元件0 502和非活动状态元件504提供该值。
多路复用器506和508所提供的值将仅覆盖非活动状态元件值中的一个。即,仅其值要作为新的当前值被换入的非活动状态元件502、504被更新,以反映经由数据输出线511、513所接收的值。非活动状态元件0 502和非活动状态元件1 504每一个的写允许线反映“苏醒线程”指示符。苏醒线程指示符指定,对于该次线程切换,非活动状态元件502、504的值中哪一个要作为新的活动状态元件值被换入。以此方式,非活动状态元件存储结构502、504(即,结构502、504中持有苏醒线程的状态元件值的任何一个)被更新,以反映为打盹线程换出的活动状态元件值。
对于至少一个实施例,非活动状态元件502、504与活动状态元件402、404的十字形耦合使得值被缓冲。例如,每一个非活动状态元件存储结构502、504和每一个活动状态元件存储结构402、404都可以是触发结构。每个触发结构包括两个锁存器,当其中一个被开启时另一个被关闭。以此方式,所选择的非活动状态元件502、504可接收更新值,然而同时仍可如以下即将描述地将其前一值传递给适当的活动状态元件402、404。
要作为新的活动状态元件值换入的已缓冲非活动状态元件值是从非活动状态元件存储结构502、504分别向多路复用器510、512提供的。图5示出,非活动状态元件0 502的值分别被提供给多路复用器510和多路复用器512。类似地,非活动状态元件1 504的值也被提供给多路复用器510和多路复用器512。每个多路复用器的选择线确定从该多路复用器输出哪个值。当然,本领域技术人员将会认识到,多路复用器510和512可被合并。
对于至少一个实施例,多路复用器510和512的选择线反映苏醒线程指示符。如果第一非活动状态元件502要被换入,则从多路复用器510和512分别沿输出线515和517提供已缓冲的第一非活动状态元件502的值作为输出。这些输出路径515、517反映线程切换更新路径,经由该路径,非活动的状态元件值作为新的活动值被“换入”。
由多路复用器515和517提供的值将仅覆盖活动状态元件值中的一个。即,活动状态元件402、404中仅其值要被换出从而变成非活动值的那个被更新,以反映经由线程切换更新线515、517接收的值。活动状态元件0 402和活动状态元件1404每一个的写允许线反映“打盹线程”指示符。如上所述,打盹线程指示符指定,对于线程切换,活动状态元件402、404的值中哪一个要被换出,从而变成非活动状态元件值。以此方式,活动状态元件存储结构402、404中的一个被更新,以反映正为苏醒线程换入的非活动状态元件值。
应当注意,活动状态元件0 402和活动状态元件404的写允许线还可反映正常的写更新。即,活动状态元件402、404可在正常的写更新指令(诸如在相应活动线程的执行期间更新架构状态元件的那些指令)期间被更新,或作为上述线程切换逻辑的结果被更新。
图6是示出为M个物理线程上所支持的多个虚拟软件线程维护架构状态元件的方法600的流程图。在本文中参考图1一起来讨论图6。
方法600可由例如分别与图1和4中所示的机制130、430等状态机制相关联的控制逻辑150来执行。图6示出一发生正常写更新、以及一发生线程切换即更新状态元件140的值的方法600的控制流程和数据流。图6还示出,一发生访问请求,状态选择逻辑即被调用,以提供适当的状态元件值。
方法600可由与处理器中每个架构状态元件相关联的状态机制130的控制逻辑150执行。图6示出方法600可涉及对与每个状态机制130相关联的控制逻辑的三信号接口。该接口可包括线程切换允许信号、以及指示其上的打盹软件线程当前是活动的物理线程的物理线程ID信号。此外,该接口可包括第三信号,即指示那个睡眠线程要被唤醒并变为活动的苏醒线程睡眠ID信号。
尽管图6示出仅与一个状态机制130相关联的处理,但是本领域技术人员将会认识到,可为处理器内状态机制130的多个副本中的每一个执行方法600。
图6示出,方法600在框602开始,并前进至框604。在框604,确定是否接收到对状态元件的访问请求。访问请求可以是例如读请求。如果已经接收到这样一个访问请求,处理即前进至框606。否则,处理前进至框608。
在框606,选择适当的状态元件值。框606处所使用的选择逻辑可反映例如图4和5中所示出的打阴影的M路多路复用逻辑。
当在框606选择了适当的值,并将其作为输出数据值从M路多路复用器(诸如,图4和5中的406)提供之后,处理在框620结束。
在框608,确定线程切换允许信号是否为真。当处理器(诸如图1中的处理器104、或图4中的处理器404)中发生触发事件,使得处理器应当将在给定物理线程上活动的虚拟线程换出时,可声明一个线程切换允许信号。由此当一个睡眠虚拟线程要被激活为特定物理线程的活动线程时,处理器可生成线程切换允许信号。
对于至少一个实施例,触发事件可以是处理器事件,诸如长等待时间高速缓存丢失等。对于至少一个其它实施例,触发事件可以是TMUX多线程处理定时器到期。
如果在框608确定线程切换允许信号为真或“on”,则处理前进至框612,以执行线程切换。但是,如果线程切换使能信号不是“on”,则处理前进至框610。
在框610,确定是否指示了状态元件的正常写更新。如果是,则处理前进至框614。否则,处理前进至框604,并继续监视事件。当然,本领域技术人员将会认识到,从框610到框604的轮询循环未必需要被实现为活动的轮询功能。相反,本领域技术人员将会认识到例如,可通过诸如中断或其它异常处理,来被动地检测线程切换允许信号的声明、以及访问请求或写更新的声明。
本领域技术人员还将认识到,在框604、608和610所作的确定未必需要按所示的顺序来执行。实际上,可使用所示处理的任何替换排序,只要它能够实现图6中所示的功能。
在框612,正在经历线程切换的物理线程的当前活动状态元件值被保存为非活动值。处理随即前进至框616。在框616,当前非活动状态元件值被保存为正在经历线程切换的物理线程的活动值。以此方式,将当前活动值与当前非活动值交换;当为所有状态元件执行该处理时,就为线程切换实现了架构状态的交换。处理随即在框620结束。
在框614,状态元件被更新。因为可为每个物理线程维护状态元件的一个副本,所以框614可执行选择逻辑,以更新状态元件的适当副本。(例如参见,将正常写更新信号作为图5中的活动状态元件0 402和活动状态元件1 404的写允许信号来使用。)此正常写更新信号可反映指定特定物理线程的标识符。从框614出发,处理在框620结束。
现在将结合图5和7来讨论图6,以提供虚拟多线程处理环境中的线程切换处理612、616的示例。图7是示出线程切换之前和之后,示意性虚拟多线程处理示例的活动状态元件0 402、活动状态元件1 404、非活动状态元件0 502和非活动状态元件1 504的内容的框图。在图7中,“非活动”状态元件502、504被称为“睡眠”状态元件。
对于图7中所示的例子,假定处理器(诸如图1中的处理器104)是提供两个物理线程的SMT处理器。对于该例,还假定该处理器支持四个SoEMT虚拟线程。如上文中所解释的,此示例仅用于说明目的。当然,本领域技术人员将会认识到,可为支持N个虚拟SoEMT线程的M个物理线程中的任何一个执行交换处理612、616,其中N>M。
图7示出状态元件402、404、502、504的初始内容,由此对于我们的示例,表示在框608检测到线程切换允许信号的时候的初始状态。图7中所示的状态元件402、404、502、504的内容是基于四个虚拟线程(虚拟线程ID 0-3)被映射到两个物理线程(物理线程0-1)这一示例性假定。图7中所示的初始状态图示出,虚拟线程3在物理线程0上活动,且虚拟线程0在物理线程1上活动。虚拟线程1和虚拟线程2不是活动的,而是处于非活动、或“睡眠”状态。每个状态元件402、404、502、504包括与其所对应的虚拟线程的架构相关联的状态元件的值。
对于我们的示例,假定当前在物理线程0上活动的虚拟线程3遭受到诸如长等待时间高速缓存丢失等触发事件。该触发事件致使处理器声明线程切换允许信号。
在框608,线程切换允许信号的声明被检测到,并且处理前进至框612。为我们的示例的目的起见,考虑在框612所接收的物理线程ID信号携带值“0”。并且考虑同样在框612所接收的睡眠线程ID携带值“1”。即,由于该触发事件,处理器决定将造成触发的虚拟虚拟线程(线程3)置于睡眠状态,并改为在物理线程0上激活虚拟线程2。
在框612所接收的物理线程ID信号的值“0”指示,物理线程0的活动状态元件值402要被修改。给定睡眠线程ID信号(在框612作为“苏醒虚拟线程ID”信号接收)的值“1”,睡眠线程1的非活动状态值504也要被修改。给定这些输入信号值,要在框612和616修改的状态元件值在图7中用星号表示。这些值将被交换。
图7示出活动状态元件0 402和非活动状态元件1 504的值的改变,作为框612和616处的交换处理的结果。图7中所示的值的改变是基于以上所讨论的物理线程ID值“0”和睡眠线程ID值“1”的声明。即,这些值被交换,以使非活动状态元件1 504包含虚拟线程3的值(见框612),而活动状态元件0 402如今包含虚拟线程2的值(见框616)。处理随即在框620结束。
图8是示出能够执行所公开的技术以维护活动和非活动虚拟线程的状态元件值的计算系统800的至少一个示例的框图。计算系统800包括处理器804和存储器802。存储器802可存储指令810和数据812,用于控制处理器804的操作。
存储器802旨在作为存储器的一般化表示,并可包括各种形式的存储器,诸如硬盘驱动器、CD-ROM、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、以及相关电路。存储器802可存储由数据信号表示的指令810和数据812,它们可由处理器804执行。指令810和/或812可包括用于执行本文中所讨论的任何或所有技术的代码。
处理器804可包括按照以上参考图1所描述的前端120的前端870。前端870向执行核心830提供指令信息,并可包括取指/解码单元222,该单元包括M个逻辑上独立的定序器420。对于至少一个实施例,前端870预取可能会被执行的指令。对于至少一个实施例,前端870可按程序顺序向执行核心830提供指令信息。
对于至少一个实施例,执行核心830准备要执行的指令,执行这些指令,并引退已执行的指令。执行核心830可包括乱序逻辑,用于调度指令来进行乱序执行。执行核心830可为每个物理线程维护全部或部分架构状态。例如,执行核心可维护架构上可见的寄存器值的寄存器文件。据此,状态元件140表示维护物理线程的所有或部分架构状态的任何类型的结构,包括通用寄存器文件、浮点寄存器文件、控制寄存器等等。当然,可在执行核心830以外,在处理器804的其它部分中维护架构状态的其它元件。
执行核心830可包括将以乱序方式执行的指令重新排序回原始的程序顺序的引退逻辑(未示出)。这一引退逻辑从执行单元(未示出)接收已执行指令的完成状况并处理结果,以使适当的架构状态根据程序顺序被提交(或引退)。
如本文中所使用的,术语“指令信息”意指执行核心830所能够理解和执行的基本工作单元。指令信息可被存储在高速缓存825中。高速缓存825可被实现为执行指令高速缓存或是执行跟踪高速缓存。对于使用执行指令高速缓存的实施例,“指令信息”包括已从指令高速缓存取回并被编码的指令。对于使用跟踪高速缓存的实施例,术语“指令信息”包括已解码微操作的跟踪。对于既不使用执行指令高速缓存也不使用跟踪高速缓存的实施例,“指令信息”还包括可被存储在指令高速缓存(诸如指令高速缓存844)中的指令的原始字节。
处理器804可包括一个或多个状态机制130,用于如上文所描述地维护架构状态元件的活动和非活动值。
处理系统800包括存储器子系统840,它可将一个或多个高速缓存842、844随存储器802一起包括。尽管图8中没有这样示出,但是本领域技术人员将会认识到,高速缓存842、844中的一个或两个的全部或部分可被物理地实现为处理器804本地的管芯上(on-die)高速缓存。存储器子系统840可被实现为存储器分层结构,并且还可包括互连(诸如总线)以及相关控制逻辑,以便于将信息从存储器802传递到各分层结构等级。本领域技术人员将会认识到,存储器分层结构可使用各种配置,包括非包含性分层结构配置。
对本领域技术人员显而易见的是,尽管图8中仅示出乱序处理系统800,但是本文中所讨论的实施例同样也适用于按序处理系统。
以上讨论描述了用于为处理器内多个虚拟软件线程维护架构状态值的方法、系统和装置的所选实施例。在以上描述中,已描述了方法、系统和装置的各个方面。出于解释的目的,阐述了具体的数字、示例、系统和配置,以提供更加全面的理解。但是,对本领域技术人员显而易见的是,所描述的方法和装置无需这些具体细节也可实施。在其它实例中,为不与本发明的方法和装置混淆,公知的特征被省略或简化。
本发明的实施例可用硬件、硬件仿真软件、固件、或此类实现方法的组合来实现。可为包括至少一个处理器、数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备的可编程系统实现本发明的实施例。为此应用的目的,处理系统包括具有诸如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器等处理器的系统。
程序可被存储在通用或专用可编程处理系统可读的存储介质或设备上(例如,硬盘驱动器、软盘驱动器、只读存储器(ROM)、CD-ROM设备、闪存设备、数字多功能盘(DVD)或其它存储设备)。当由处理系统读取存储介质或设备以执行本文中所描述的过程时,处理系统中的处理器可访问的指令为配置和操作该处理系统作准备。本发明的实施例还可被视为被实现为机器可读的存储介质,它们被配置成配合处理系统一起使用,其中被如此配置的存储介质引起处理系统以特定和预定义的方式来执行本文中所描述的功能。
图8中示出这一处理系统的示例的至少一个实施例。例如,示例系统800可被用来执行诸如本文中所描述的实施例等维护活动和非活动虚拟软件线程的架构状态值的方法的处理。示例系统800代表了基于可向Intel公司购买的Pentium、PentiumPro、PentiumII、PentiumIII、Pentium4、以及Itanium和ItaniumII微处理器的处理系统,尽管也可使用其它系统(包括具有其它微处理器的个人计算机(PC)、工程工作站、个人数字助理及其它手持式设备、机顶盒等等)。对于一个实施例,示例系统可执行可向Microsoft公司购买的某个版本的WindowsTM操作系统,尽管也可使用例如其它操作系统和图形用户界面。
尽管已示出并描述了本发明的特定实施例,但是对本领域技术人员而言,显然可以进行各种改变和修改,而不会在较宽泛方面的意义上偏离本发明。
由此,本领域技术人员将会认识到,可进行改变和修改,而不会在较宽泛方面的意义上偏离本发明。所附权利要求书将把落入本发明真正范围内的所有此类改变和修改全部包括在其范围之内。
权利要求
1.一种装置,包括M个物理线程,用于支持N个事件触发切换的软件线程,其中N>M;状态机制,用于为状态元件维护M个当前值;所述状态机制还用于为所述状态元件维护N-M个非活动值;以及所述状态机制还包括控制逻辑,用于响应于线程切换指示符,修改所述非活动值中被选择的一个、以及所述当前值中被选择的一个。
2.如权利要求1所述的装置,其特征在于,还包括所述控制逻辑还用于响应于所述线程切换指示符,将所选择的非活动值的值与所选择的当前值交换。
3.如权利要求1所述的装置,其特征在于所述控制逻辑还用于响应于访问请求,从所述M个当前值中进行选择,以提供输出值。
4.如权利要求1所述的装置,其特征在于所述控制逻辑还用于接收指示所选择的非活动值的虚拟线程标识符。
5.如权利要求1所述的装置,其特征在于所述控制逻辑还用于接收指示所选择的当前值的物理线程标识符。
6.如权利要求1所述的装置,其特征在于所述状态机制还包括第一组存储结构,用于维护所述M个当前值;所述状态机制还包括第二组存储结构,用于维护所述N-M个非活动值;以及所述第一组存储结构和所述第二组存储结构以十字形配置被相互耦合。
7.如权利要求1所述的装置,其特征在于所述控制逻辑还用于响应于写更新指示符,修改所述M个当前值中被选择的一个的值。
8.一种处理器,包括M个逻辑处理器,其中M≥1;以及状态机制,用于跟踪N个虚拟线程中的每一个的状态元件值,其中N>M;所述状态机制还包括控制逻辑,用于响应于线程切换指示符来执行状态值交换。
9.如权利要求8所述的处理器,其特征在于所述状态机制还用于维护所述状态值中的M个以作为活动状态值。
10.如权利要求9所述的处理器,其特征在于所述状态机制还用于维护其余的(N-M)个状态值以作为非活动状态值。
11.如权利要求9所述的处理器,其特征在于所述控制逻辑还包括选择逻辑,用于响应于访问操作,选择所述活动状态值中的一个作为输出值。
12.如权利要求10所述的处理器,其特征在于所述控制逻辑还包括选择逻辑,用于响应于访问操作,选择所述活动状态值中的一个作为输出值;其中所述选择逻辑还用于排除对所述非活动状态值的考虑。
13.如权利要求10所述的处理器,其特征在于所述控制逻辑还用于响应于所述线程切换指示符,将所述状态值中的一个活动状态值与所述状态值中的一个非活动状态值交换。
14.如权利要求9所述的处理器,其特征在于所述控制逻辑还用于以更新值来修改所述活动状态值中的一个。
15.一种方法,包括为状态元件维护M个物理线程中的每一个的活动状态元件值;为所述状态元件维护N-M个非活动软件线程中的每一个的非活动状态元件值,其中N>M;以及响应于线程切换指示符,执行所述活动状态元件值中被选择的一个与所述非活动状态元件值中被选择的一个的交换。
16.如权利要求15所述的方法,其特征在于执行交换还包括将所选择的活动状态元件值保存为所选择的非活动状态元件值。
17.如权利要求15所述的方法,其特征在于执行交换还包括将所选择的非活动状态元件值保存为所选择的活动状态元件值。
18.如权利要求15所述的方法,其特征在于,还包括接收用于指示所选择的活动状态元件值的物理线程标识符。
19.如权利要求15所述的方法,其特征在于,还包括接收用于指示所选择的非活动状态元件值的苏醒线程标识符。
20.如权利要求15所述的方法,其特征在于,还包括响应于访问请求,选择所述活动状态元件值中适当的一个。
21.如权利要求20所述的方法,其特征在于所述选择还包括拒绝考虑所述非活动状态元件值。
22.如权利要求15所述的方法,其特征在于,还包括修改所述活动状态元件值中的一个。
23.一种系统,包括存储器系统;以及用于支持多线程处理的处理器;所述处理器还包括状态机制,用于维护状态元件的活动值;所述状态机制还用于维护所述状态元件的非活动值。
24.如权利要求23所述的系统,其特征在于所述存储器系统还包括动态随机存取存储器。
25.如权利要求23所述的系统,其特征在于所述状态机制还用于为M个活动软件线程中的每一个维护M个活动值中的一个。
26.如权利要求23所述的系统,其特征在于所述状态机制还用于维护N-M个非活动值,其中N指示可在所述处理器上运行的事件触发切换的软件线程的个数,其中N>M。
27.如权利要求23所述的系统,其特征在于所述状态机制还用于响应于线程切换指示符,将所述活动值与所述非活动值交换。
28.如权利要求23所述的系统,其特征在于所述状态机制还用于响应于访问请求,选择所述活动值。
29.如权利要求28所述的系统,其特征在于所述状态机制还用于响应于访问请求,避免考虑所述非活动值,以便选择所述活动值。
30.如权利要求23所述的系统,其特征在于所述状态机制用于执行所述活动值的正常写更新。
全文摘要
方法、装置和系统实施例为多个SMT逻辑线程环境上的多个SoEMT软件线程提供支持。睡眠状态机制为每个物理线程维护架构状态的元件的当前值。该当前值对应于当前在该物理线程上运行的活动的虚拟线程。睡眠状态机制还为每个非活动的线程维护架构状态元件的睡眠值。可在十字形配置中维护活动值和非活动值。一发生架构状态元件的读取,简化的多路复用逻辑即在当前值之中进行选择,来为适当的活动线程提供当前值。一发生线程切换,与睡眠状态机制相关联的控制逻辑就将当前线程的活动状态值与新线程的非活动状态值交换。
文档编号G06F9/38GK1890642SQ200480036855
公开日2007年1月3日 申请日期2004年12月8日 优先权日2003年12月19日
发明者N·萨姆拉 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1