处理器中多线程之间的通信的制作方法

文档序号:6570820阅读:142来源:国知局
专利名称:处理器中多线程之间的通信的制作方法
处理器中多线程之间的通信
背景技术
处理器已经成了很复杂的设备,包括大量的结构和复杂的控制技术,允许指令和数据通过该机器,以便执行所请求的不同操作。为了
改善处理器的效率,某些处理器利用指令级的并行性(ILP)。尽管这样的技术可以提高效率,但也会增大功率消耗和设计的复杂性。有鉴于此,某些处理器以这样的意图设计,即通过支持和利用线程级并行性(TLP-"thread level parallem")的体系结构来允许多线程协作。所述处理器可以包括多个核,至少多个小核,诸如同时多线程(SMT國"simultaneous multithreading")的有序小核。
但是,这样的有序核不如利用指令级并行性(ILP)时的无序核有效。这说明,这些有序处理器能够有效地执行并行应用,而一系列并行应用中的只有一个线程和部分代码的应用,在这样的体系结构上可能不会有效地表现。据此,某些处理器可以将应用分开,将线程分成较小的部分执行,以维持最低的复杂性,同时改善其效率。但是,当第一线程企图利用第二线程的信息时,可能产生一个数量过大的组织过程。


图1是根据本发明一个实施例的方法的流程图2是根据本发明一个实施例的标记表的框图3是根据本发明一个实施例实现指令执行的框图4是根据本发明一个实施例产生流程标记信息的方法的流程
图5是根据本发明 一个实施例的系统框图。
具体实施例方式
在另 一些实施例中,要在处理器的一个核上执行的多个线程可以访问寄存器堆中包含的与另一线程相关的值。这些实施例中,可通过
类似的信道提供同时多线程(SMT)的有效运行。作为一个示例,可以在诸如同时多线程处理器等有序处理器的单一核上完成第一和第二线程。可以提供一种控制,以使生产者/消费者冲莫型成为可能,其中可以由该第二线程访问第一线程所产生的数据值,反之亦然。多个线程中的每一个都能够在执行期间读出另 一个线程的这些结构或体系结构的寄存器状态,这时以很低的组织活动允许线程之间的同步。
为了保证当访问给定的寄存器时,能够读出给定寄存器的正确值,可以这样提供一种同步控制,使得消费者线程读出生产者线程中适当的数据。在另一些实施例中,诸如可用于指令的发送或分配的标记表的结构可以包括同步标志。更具体地说,第一线程的一个寄存器的标记表结构的每一条目都可以包括一个针对该第二线程的相应寄存器的同步标志。该标志的使用可以阻止一条消费者指令继续执行,直至另一线程对应的生产者指令实现为止,以在生产者寄存器堆中呈现想要的值。为了获得上述同步系统的好处, 一些实施例可以提供与一些指令相关联的流程信息。例如,可以提供与一条指令的内容相结合的流程指示或标记。在一个实施例中, 一条指令可以包括操作码、源与目的操作数,以及这些源与目的操作数中每一个的流程标记。如以下将附带描述的,不同的机制可以负责产生相应指令的流程标记。例如,可以这样提供编译器支持,使之能够在编译期间根据指令集体系结构
(ISA-"instmction set architecture")上所提供的指令支持来产生流程标记。在其他实施例中,诸如硬件或软件优化装置等优化机制可以分析代码的流程控制并依次产生流程标记。这样,就可按指令细分或粒化
(desmenuzamiento o desgranamiento )的程度来使多个线程同步。
本发明的 一些实施例的某些特征适合于对寄存器的访问和同步。例如, 一个低组织活动的线程存储机制可用来访问其他线程的寄存器堆。这样,通过将一个线程的上下文存放在存储器中,可以避免复制一个线程的所有这些上下文寄存器的开销。这是因为可标出包含在存放的线程中的适当的消费者指令,结果就在其位置上从该存放线程的寄存器堆读出操作数。
根据不同的实施例,可减少与两个颗粒细化的(desgranadas aldetalle)线程之间合作执行相关的这些组织过程。因此,可以利用一些与多线程特定功能的支持相关,以及与线程的存放相关的实施例。此外,还可利用一些与称为辅助线程相关的实施例,使之启动,以执行在另一个线程执行期间发生的特定任务。但应明白,本发明的范围并不受限于此,而是可用许多不同的实现方式访问寄存器和同步机构,包括不同的处理器体系结构、系统以及其他等等。
接着,参阅图1,它说明根据本发明一个实施例的方法的流程图。如图1所示,方法10可用来执行第一线程的一条可能要访问在第二线程的寄存器堆中包含的信息的指令。如图1所示,方法10可以从接收一条要执行的第一线程指令开始(方框20)。例如,处理器的指令译码器可以接收一个译码指令。在一个实施例中,该指令可以包括
用来指出要执行的操作类型的操作码、以及源与目的操作数的识别。除此之外,该指令还可以包括一些信息,以指示是否要从远程寄存器堆,例如与第二线程相关联的寄存器堆访问这些源/目的操作数中的一
个,或是否提供该操作数。注意,尽管这里作为一个远程寄存器堆描述,但应明白,它也可以是在诸如多处理器包括例如若干有序核的多核处理器的单核上的本地寄存器堆和远程寄存器堆。
还是参阅图1,接着可确定是否要从一个远程线程获得该指令的任何源操作数(菱形框30)。就是说,根据流程标记信息(在这些实施例中的一个)可以确定,是否要从远程线程,例如,包括从包含SMT核中的寄存器堆的第二线程获得任何源操作数。若如此,则控制转移到菱形框40,其中可确定,与上述操作数或上述所有远程源操作数相关的这些同步标志是否已激活。亦即,可以分析一个标记表或存储有关给定寄存器的值的可用性状态的识别信息的其他存储器,以确定所有这些要从远程寄存器堆获得的源操作数是否都包括所想要的值。换句话说,可以确定生产者线程是否已完成一个从属于第一线程的指令 所依赖的操作。在这个(这些)同步标志没有激活的情况下,菱形框
40可以保持即自我关闭,以让该指令等到呈现该同步标志时再执行。 在这些同步标志已经存在时,这表示远程寄存器中已存在所想要的 值,控制转移到菱形框45,这一点将在下文说明。
还是参阅图1,若判定来自某个远程线程(菱形框30)的任何源 操作数,或与所有这些远程源操作数相关的同步标志处于激活状态 (根据菱形框40的判定),则控制转移到菱形框45,其中可确定是否 有任何来自本地线程(亦即,第一线程)的源操作数。若如此,则控 制可以进到菱形框50,其中可确定是否有与操作数或与所有本地源操 作数相关的准备或备置标志激活。例如,可访问标记表,以确定指示 一条生产者指令已在第一线程之前完成的标志是否激活,使得来自同 一线程的从属操作可用适当的值执行。在相反的情况下,菱形框50
可保持或自我关闭。
控制从这两个菱形框45和50转移到方框60,其中指令可被发送 去执行。例如,指令发送器,诸如分配装置、保持装置或包括类似状 态的标记表或状态存储器的其他结构,可以将该指令发送以将它执 行。据此,诸如整数单元、浮点单元(FPU-"floating point unit")或其 他类似单元等执行单元,可以从具体识别的寄存器堆(方框70)访问 这些被指示的源操作数。这样,对于本地源操作数,可以访问与该线 程相关的本地寄存器堆,以获得这些源操作数,而对于远程操作数, 可以访问与第二线程相关的寄存器堆,例如,远程寄存器堆。
还是参阅图1,该框中可执行指令(方框80)。例如,可对两个源 操作数求和,以获得一个想要的结果,该结果将纟皮存储在目的操作数 中,例如,第一寄存器堆的目的操作数中。根据该指令的成功实现, 可更新各种标志(方框90)。更具体地说,可以将标记表中的备置标 志和同步标志更新得尽量适用。继续用前例进行描述,在指明目的操
作数是本地操作数的情况下,可以作为应答调整与目的地寄存器相关 的准备或备置标志。另一方面,可以重新建立该寄存器的同步标志,以指出该值不同步。反之,若指明该目的操作数在远程使用,则可因 此而调整远程寄存器堆(例如,第二寄存器堆)的同步标志。此外, 可以调整本地寄存器堆的备置标志。这样,不论是远程线程,还是本 地线程,都可如同源操作数那样访问该目的操作数,这使得无论在同 一线程内还是在线程之间,生产者/消费者都可以有效运行。尽管用图 1实施例上这种具体实现进行了说明,但应明白本发明的范围并不受 限于此。
在一个处理器内可以存在不同的结构,以便能够根据本发明一个
实施例访问寄存器和同步机制。接着,参阅图2,其中说明根据本发 明一个实施例的包括对多个线程之间同步的支持的标记表的框图。如 图2所示,由处理器核内的存储器构成的标记表100可以包括一些条 目,用来存储与多个寄存器堆的这些寄存器相关联的状态信息。具体 地说,在图2所说明的实施例中,第一线程和第二线程各自可包括一 些条目,用于其寄存器堆中存在的每个寄存器。这样,如图2所示, 第一线程可以包括多个条目112a-112n (统称为条目112)。每一条目 112都可以用寄存器识别符(ID)作指标,而且每一条目都可以包括 状态信息。在图2所示的特定实施例中,可以有一个准备或备置标志 114a-114n (统称为备置标志114)和同步标志116a-116n (统称为同步 标志116)。备置标志114可以用来指示何时存储在所识别的寄存器中 的相应操作数就绪,可供那些线程的消费者操作利用,而该同步标志 116可以指示该本地线程要访问的远程操作数是否就绪,可供该本地 线程访问,亦即生产者线程(远程)的一条生产者指令是否已经执行, 且适当的值是否存在所想要的位置上。注意,第二线程120也可包括 多个条目122a-122n (统称为条目122),它们中的每一个都与其寄存 器堆的一个寄存器相关联。这样,各个条目122可以包括一个对应的 备置标志124a-124n (统称为备置标志124),还包括一个同步标志 126a-126n (统称为同步标志126)。取代各个线程的单独的条目,可 以设置一个标记表,使得对应于多个线程的每个寄存器都有单一的条 目,使得该条目的不同部分与各线程相关联。另一方面,尽管已经用图2的实施例中的这种具体配置进行了说明,但应明白,本发明的范 围并不受限于此,而且在另一些实施例中可以采用不同的产生、存储 和利用与不同线程的寄存器堆相关联的状态信息的方式。例如,处理 器的不同体系结构可以具有不相同的控制配置,用以分析指令并将它 们发送到处理器的一个或多个执行单元。某些处理器可以包括分配装 置、4犬态叶呆存装置(estaciones de reserva )、标^己表、控制器和其斗也各 种逻辑单元,以确定何时一条已译码的指令有执行所需的不同资源可 供使用,并根据一个有序或无序判据选择要提供给一个执行单元的指 令。在另一些实施例中,标记表100可以形成为指令发送器的一部分, 采取在一个给定的处理器体系结构上可利用的任何一种方式,或者可 以连接到上述指令发送器或其他类似的逻辑单元上,以便根据呈现在 标记表100上的信息允许作出发送该指令的决定。
如上所述,在另 一些实施例中可以分析与一条指令相关联的流程 信息,以确定一条指令是否要访问存在于另 一个线程的寄存器中的信 息,和/或是否可以由不同线程的一方访问该指令的结果。接着参阅图 3,说明根据本发明一个实施例实现指令执行的框图。如图3所示, 系统200可以包括执行单元230,它对输入的数据执行不同的操作。 在图3所说明的实施例中,第一寄存器堆220和第二寄存器堆225可 连接到执行单元230。在图3的实施例中,第一寄存器堆220可以与 第一线程相关联,而第二寄存器堆225可以与第二线程相关联。尽管 在图3的实施例中表示为独立的寄存器堆,但应理解在某些实施例中, 可以呈现为一个总体寄存器堆,使得其第一部分在逻辑形式上与第一 线程相关联,而第二部分与第二线程相关联。如图3所示, 一条来自 第一线程并要由该执行单元230执行的指令205,可以包括操作码, 用以识别指令的某种类型,例如,加法、乘法操作或其他操作。此外, 指令205还识别结果的目的地,即目的操作数,它可对应于第一寄存 器rax。与这个目的地相关联,存在一个位置标志,在图3中它标示 为DESTINO—DISTANTE("REMOTE—DEST,,)。如图3所示,该位置 标志具有数值l,指示稍后应由一个远程线程,亦即在图3的例中第
ii二线程访问该目的操作数,它也可能由本地线程中存在的消费者指令
访问。正如上面附带说明的,该指令205还识别两个源操作数,特别 是访问寄存器rbx的第一源操作数(SRC1 )。由于该源操作数的位置 标志(亦即,SRC—DISTANTE-"REMOTE—SRC")设定为数值1,故该 源操作数可以从远程寄存器堆即寄存器堆225访问。类似地,该指令 205包括第二源操作数(SRC2),它用来访问第二寄存器rcx,按照设定 为数值0的第二源操作数的本地标志(亦即,SRC—DISTANTE),它 可以从第一寄存器堆220获得。
由于须从不同的寄存器堆,即从第二寄存器堆225访问该源操作 数,因此在与该源操作数相关的同步标志^f皮激活(例如被设置)之前, 不能继续处理该指令205。另一方面,在与该第二源操作数相关联的 备置标志也被激活之前,不能继续处理该指令205。因此,如图3所 示,该标记表100包括与第一源操作数联系的第一条目112b和与该第 二操作数相关联的第二条目112c。 一旦该备置标志114c的值和同步 标志116b的值均已设定,该指令205便可发送到执行单元230。这是 因为第一寄存器堆225的寄存器rbx和第二寄存器堆220的寄存器rcx 均已呈现适当的值。据此,执行单元230可以在第一寄存器堆220中 读出rcx,并在第二寄存器堆225中读出rbx。 一旦执行了该指令,其 结果便可以存储在第一寄存器堆220的目的地寄存器rax中。另一方 面,可以对这些不同的备置和同步标志进行更新。特别是,如图3所 示,在执行后,可以实现与第一线程相关联的条目112a,使得备置标 志114a具有数值l,而同步标志116具有数值0。另一方面,与第二 线程相关联的条目126a可以具有对应的同步标志116a,其数值调整 在l上,以便指出在该寄存器rax中已经呈现适当的值,对于第二线 程的一条消费者指令,它起源操作数的作用。尽管用图3的实施例中 具体的实施例进行说明,但本发明的范围并不受限于此。
正如图3中附带说明的,在系统200内可以有一个控制器250。 该控制器250可以包括不同的硬件或物理设备、软件或程序、固件或 永久安装在硬件上的逻辑单元,或者它们的组合,以将指令从多个线程中的每一个发送到执行单元230。如图3所示,该控制器250可以 连接到标记表100,以分析存在于不同条目中的状态信息,以根据对 相关的备置和/或同步标志的分析,确定一条给定指令的源操作数是否 已为其执行准备就绪。在一个实施例中,该控制器250可以实施一个 逻辑功能,以便当该指令的这些源操作数处于备置状态时,使指令的 发送成为可能。例如,在一个实现方式中,在指示本地源(亦即,与 这些源操作数相关的这个位置标志指向本地(例如,具有低逻辑值)) 时,该功能可以对应于一个"与"("AND")运算,其中这两个本地源操 作数的备置标志可^皮分析,以确定这两个标志是否都处于可用或就绪 状态。若非如此,该指令可以一直维持到这两个备置标志都^^皮调整为 止,例如,设在逻辑高的状态上,指示备置状态。反之,若它指示这 两个源操作数中的一个是远程源,该逻辑运算可以对应于一个"与" ("AND")运算,其中,对于本地操作数,证实是本地备置标志,而对 于远程操作数,证实是本地同步标志,以确定是否二者都指示这些操 作数可用。若如此,该操作可继续下去;在相反情况下,控制器250 可使操作暂停,直到(根据关于备置和同步的标志指示)所述两个源 操作数均已就绪为止。尽管用此特定实现方式作了描述,但是本发明 的范围并不受限于此,可以用许多不同的方式来分析包含在标记表或 在其他结构中的信息,以确定何时这些源操作数已为其在一条消费者 指令中的使用准备就绪。例如,在另一些实现方式中,多核处理器, 诸如双核或更多核的处理器,也可以用类似形式来实施本发明。在一 些这样的实现方式中,在第一核上执行的第一线程可访问与在另 一核 上执行的不同的线程相关联的寄存器堆。但在进行时可使用若干数量 的进程即组织活动,以在一个给定线程的执行期间访问所述远程寄存 器堆。
据此,根据与该指令相关联的流程信息,亦即根据这些不同的源 与目的操作数用的指示或流程标记,可以使快速地访问不同的寄存器 堆及其同步成为可能。在另一些实施例中,不同的实体可以产生线程 和对应的代码,例如,动态优化装置、编译器、硬件优化装置等等。产生上述代码的任何一个实体都可用适当的流程标记标出该指令。另 一方面,该实体可以在由该消费者线程读出之前,保证那些涉及生产 者/消费者关系的寄存器不被该生产者线程重新定义。在另一些实施例 中,可以在这些线程之间建立同步点,使得在该消费者线程读出相关 的值之前,不让该生产者线程继续进行。尽管本发明的范围并不受限 于此,但是在某些实施例中,所述同步点可以用前述的同步标志实现。
例如,尽管在图3的实施例中描述的流程标记可以是一位的标志,用 来指出一个操作数是处于本地位置还是处于远程位置,但在其他实施 例也可将所述位置标志扩展为多位,以指示在两个以上这样的线程中 存在。就是说,在某些实施例中,两个以上线程可以在一个核上或在 给定的多核上执行。在任何一个线程的执行过程中,都可以根据该指 令中存在的流程标记,并用包含在标记表中或其他类似结构上的用来 指出这些远程操作数的可用性的信息,例如通过与涉及这些多线程的 这些寄存器堆相关的同步标志,访问与其他线程相关的寄存器堆。
在某些实施例中,可通过动态优化装置来生成代码踪迹(trazas de codigo)。但是,在另一些实现方式中,可以利用基于编译器或其它机 制的支持,以便用流程标记的适当信息来生成指令。接着,参阅图4, 其中说明根据本发明 一个实施例生成流程标记信息的方法的流程图。 如图4所示,方法300可以从将这些第一和第二线程用的同步标志初 始化为不同步的状态(方框310)开始。例如,两个线程可由动态优 化装置生成的代码踪迹组成。进一步说,这多个代码踪迹可以由处理 器的单核的不同线程,即第一和第二线程同时执行。为了保证这些不 同的操作数的适当属性,这些同步标志可初始化在一个不同步的状态 上,例如,在某些实施例中设置逻辑值0。注意,由于这些代码踪迹 是由该动态优化装置识别的,该优化装置可以控制这些寄存器中的哪 些涉及生产者/消费者的寄存器,而且该优化装置也可以控制一个同步 点即这些操作数可以同步的瞬间的出现。尽管一个远程使用的寄存 器,可以在该生产者线程中定义许多次,但是该优化装置可以保证一 个寄存器在被消费者利用之前的最终定义是建立生产者/消费者关系
14的定义。
接着,还是参阅图4,控制可转移到菱形框320,其中可以确定一 个操作数是否只由单一的线程产生并使用。操作数被单一的线程利用 时,控制可以进到方框330,该框中可指出使用该操作数的指令的流 程标记中的使用位置。具体地说,若该操作数已经使用,无论是作为 源操作数还是作为目的操作数,则对应的位置标志,亦即流程标记, 可以处于复位状态(例如,逻辑O),以指出该操作数只是本地使用。
还是参阅图4,若相反地在菱形框320中判定, 一个操作数^f皮多 个线程利用,则控制可进到菱形框340。在菱形框340中可以确定, 所识别的操作数是否为要由另一线程消费的目的操作数。若如此,控 制移动到方框350,其中可以根据生产者指令的流程标记识别目的操 作数的本地使用,直至该目的操作数的最终定义(亦即,由消费者线 程使用前的最终定义)。 一旦达到该最终定义,控制便移动到方框360, 其中可以用流程标记标示该指令,以指出该目的操作数的远程使用。 换句话说,该指令可具有一个目的操作数用的处于设置状态(例如, 逻辑1 )的位置标志。控制从方框360转移到菱形框370,在其中可 确定是否要由另一个线程生成源操作数。若非如此,则控制回到方框 330,前面已经解释,其中与操作数相关的流程标记可以指示为本地 (亦即,用逻辑值O)。
还是参阅图4,反之,若在菱形框370上判定该源操作数要由另 一个线程生成,控制可进到方框380,在其中远程源操作数的使用可 在那些线程的消费者指令的流程标记上指出,直到一条包含在同 一线 程中的指令重新定义该寄存器(方框380)。就是说,该消费者线程的 指令可以访问该远程寄存器堆的数据值,直到该消费者线程重新定义 该寄存器。当上述事件产生(如果有产生)时,控制转移到方框390, 其中可在用户指令的流程标记上指明源操作数的本地使用。就是说, 当一条消费者指令重新定义该寄存器,从而写入一个不同于当时使用 的值作为在同一线程中后续指令的源操作数时,该同一线程的后续指 令可以具有与之相关的流程标记,以指出现在可以用本地形式获得该源操作数。尽管在图4的实施例中用此具体实现方式作了说明,但是 本发明的范围并不受限于此。
这样,在另一些实施例中,在同一核上运行的两个线程可通过互 相直接访问另 一线程的寄存器来实现同步。通过在寄存器层面上访问 信息,有可能减少与经由 一个间接存储器获得不同线程的信息相关的 同步组织活动,且可以减轻存储器带宽的问题。通过使用呈现在该核 上的寄存器堆的寄存器,可以在运行于同 一核上的两个线程之间进行 64位或128位数值的通信。这样,可以不必重现或复制刚刚存^:的线 程的寄存器的状态,因为这些要由刚存放的线程利用的操作数可以直 接在存放的线程的寄存器堆中读取。本发明的范围并不受限于此,一 些实现方式能够以细化的顺序处理范例加以利用,诸如运行在多线程 中,例如在辅助顺序处理和前行的(de recorrido hacia delante)线程中。 因此,呈现在这些线程中的指令可以简化,因为可以避免复制,或者 重现第一寄存器堆的体系结构状态的其他指令。相反地,这些附加的 线程可以直接从另一线程的寄存器堆获得所需的信息。
这些实施例可以在多种不同类型的系统上实现。接着,参阅图5, 其中说明根据本发明一个实施例系统的框图。如图5所示,多处理器 系统500是一个点到点连接的系统,并包括经由点到点550互连的第 一处理器570和第二处理器580。如图5所示,处理器570和580中 的每一个都可以是一个多核处理器,包括处理器的第一和第二核(即 处理器的核574a和574b和处理器的核584a和584b)。注意,这些核 中的每一个都可以包括多个寄存器堆,它们中的每一个都指定由不同 的线程利用。另一方面,各个核可以包括硬件、软件或固件,或永久 地安装在硬件上的程序,以便允许通过根据本发明一个实施例的流程 标记和同步标志,直接由消费者线程访问生产者线程的寄存器堆。此 外,在某些实现方式中,运行在处理器核574a上的线程可以访问与运 行在处理器的核574b上的线程相关联的寄存器堆,反之亦然。
第一处理器570还包括点到点接口(P-P)576和588。类似地,第 二处理器580包括P-P接口 586和588。如图5所示,存储器控制器的集线器(MCH) 572和582将这些处理器连接到各自的存储器,即 存储器532和存储器534,它们可以是局部地固定在各自处理器上的 主存储器的一部分。
第一处理器570和第二处理器580可以分别经由P-P互连552和 554连接到一个芯片装置590上。如图5所示,芯片装置590包括P-P 接口 594和598。另一方面,芯片装置590包括一个将芯片装置590 连接到高性能图形发生装置538上的接口 592。在一个实施例中,可 以利用先进图形端口 ( AGP-"Advanced Graphics Port")总线539将图 形发生装置538连接到芯片装置590。 AGP总线539符合Intel公司发 表于1998年5月4日的加速图形端口的接口规格,2.0版。作为另一 方案,点到点互连539也可连^"这些部件。
芯片装置590又可经由接口 596连接到第一总线516。在一个实 施例中,根据日期为1995年6月的PCI本地总线规格(2.1版)的 规定,第一总线516可以由外部设备部件互连总线(PCI-"Peripheral Component Interconnect")诸如PCI Express 总线等总线或其他的第 三代输入/输出(E/S-"I/0")互连总线构成,但本发明的范围并不受限 于此。
如图5所示,通过同将第一总线516与第二总线520连接的总线 桥518的连接,可以将另一些输入/输出装置514连接到第一总线516。 在一个实施例中,第二总线520可以是一个低引线总线(LPC-"lowpin bus")。可以将不同的装置,包括例如键盘/鼠标522、通信装置526 和数据存储器单元528,诸如盘驱动装置或其他海量存储器耦合到第 二总线520上,在一个实施例中,这些存储器可以包括代码530。另 一方面,可以将音频输入/输出524连接到第二总线520上。注意,也 可以采用其他体系结构。例如,取代图5的点到点体系结构,而采用 可以实现多分支总线或其他类似体系结构的系统。
这些实施例可以用代码实现,并可以存储在存储介质上,它具有 存储于其上的指令,能够以执行指令的方式对一种系统进行编程的指 令。这些存储介质可以包括任何类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可写光盘(CD-RW)和磁光盘、半导体器件,诸 如只读存储器(ROM)、随机访问存储器(RAM)、诸如动态随机访问存 储器(DRAM)、静态随机访问存储器(SRAM)、可擦可编程只读存储器 (EPROM)、闪存("flash memories")、电可擦可编程只读存储器 (EEPROM)、磁卡或光卡,或适宜于存储电子指令的其他类型的介质, 但并不仅限于这些。
尽管本发明就数目有限的实施例作了描述,但是由此出发本专业 的技术人员会想见许多修改和变动。后附的权利要求书用来在本发明 的主旨和范围内涵盖所有这些修改和变动。
权利要求
1.一种方法,包括由一个核访问一个第二线程的寄存器堆,以在所述核上执行第一线程的指令的期间为第一线程的指令获得源操作数。
2. 根据权利要求1的方法,还包括若与所述源操作数识别的寄存器相关联的同步标志处于第一状 态,这表示第二线程的生产者操作尚未结束,则避免执行第一线程的 所述指令;而若与所述寄存器相关联的同步标志处于第二状态,这表示第二线 程的生产者操作已经结束,则执行第一线程的所述指令。
3. 根据权利要求2的方法,还包括在生产者操作完成后,随即 调整所述寄存器的标记表中一个条目的同步标志。
4. 根据权利要求3的方法,还包括在所述生产者操作完成后, 随即调整与第一线程相关联的寄存器的标记表的条目中的同步标志, 并使与第二线程相关联的寄存器的标记表的条目中的同步标志复位。
5. 根据权利要求2的方法,还包括在所述核上执行第二线程的 生产者操作和第一线程的指令,以使所述核包含一个第一线程和第二 线程均在其上运行的公共核。
6. 根据权利要求1的方法,还包括对第一线程的指令进行译码, 使得所述指令包含一个源操作数的位置标志,所述位置标志指示在第 二线程的寄存器堆的一个寄存器中的所述源操作数的位置。
7. 根据权利要求6的方法,还包括将第一线程指令的结果存储 在目的寄存器中,并根据存在于第一线程的指令中的对应的目的操作 数的位置标志,更新一个目的地寄存器的同步标志。
8. —种装置,包括用来存储一些条目的存储器,其中每一条目对应于第一线程的第 一寄存器堆的一个寄存器,使得所述条目须各自包含同步标志,用来指示须将一个与第二线程的第二寄存器堆对应的寄存器作为目的操作数使用的第二线程的一个生产者操作是否已完成。
9. 根据权利要求8的装置,还包括控制器,用来在第二线程,执行 了一条关于将第二寄存器堆的对应的寄存内容用作目的操作数的指 令后,随即更新对应的寄存器的一个条目中的第一线程的同步标志, 使所述指令包括一个目的操作数的位置标志,指示对应的寄存器由第 一线程使用。
10. 根据权利要求8的装置,其中,所述存储器包含一个核的标 记表。
11. 根据权利要求10的装置,其中,所述核利用第一寄存器堆和 第二寄存器堆,同时执行第一线程和第二线程。
12. 根据权利要求ll的装置,其中,所述核在第一线程执行期间 访问第二寄存器堆。
13. 根据权利要求12的装置,其中,所述核根据第一线程的一条 指令的源操作数的位置标志,访问第二寄存器堆。
14. 根据权利要求13的装置,其中,所述核还根椐对应寄存器的 一个条目的同步标志,访问第二寄存器堆。
15. 根据权利要求8的装置,所述装置包括一个核,该核包含存 储器、第一寄存器堆、第二寄存器堆和执行单元,使得所述^f丸行单元 从第二寄存器堆的一个寄存器获得一个源操作数,以根据所述指令的 位置标志执行第一线程的一条指令。
16. 根据权利要求15的装置,其中,若一个条目的同步标志与第 二寄存器堆的寄存器有关,这表示第二线程的生产者指令处于尚未结 束的状态,则避免执行第一线程的指令。
17. —种系统,包括第一寄存器堆,包含用来存储第一线程的数据的多个寄存器; 第二寄存器堆,包含用来存储第二线程的数据的多个寄存器; 执行单元,连接到第一寄存器堆和第二寄存器堆,以执行第一线 程和第二线程的指令,使得所述执行单元可用来访问第一寄存器堆, 以获得一个用于执行第二线程的一条指令的源操作数;以及连接到所述执行单元的动态随机存取存储器。
18. 根据权利要求17的系统,其中,所述执行单元用来根据第二 线程的指令的指示来访问第一寄存器堆,该指示表示在所述寄存器堆 中存在源操作数。
19. 根据权利要求18的系统,还包括指令发送器,连接到执行单 元,暂停第二线程的指令的分配,直至关系到与源操作数相关的寄存 器的同步标志处于激活状态。
20. 根据权利要求19的系统,其中,所述指令发送器在执行第一 线程的一条生产者指令后,随即写入与所述寄存器相关的同步标志。
21. 根据权利要求20的系统,其中,所述指令发送器在执行第一 线程的一条生产者指令后,随即另外写入与所述寄存器相关的准备或 备置标志。
22. 根据权利要求21的系统,其中,所述指令发送器在标记表的 与所述寄存器对应的条目中写入同步标志和备置标志。
23. 根据权利要求17的系统,还包括第一核,其中包含所述执行 单元、第一寄存器堆和第二寄存器堆,使得第一核处置或处理第一线 程和第二线程的指令。
24. 根据权利要求23的系统,还包括第二核,其中包含第二执行 单元和第三寄存器堆,使得第二核用来处理第三线程的指令,并使得 第二核访问第一寄存器堆和第二寄存器堆中的至少一个,以便为在第三线程中使用而获得一个源操作数。
25. 根据权利要求17的系统,还包括一个合成寄存器堆,其中包 含第一寄存器堆和第二寄存器堆。
26. —种机器可读介质,其中存储有若干指令,若一个机器执行 这些指令,将使所述机器实现包含如下动作的方法如果所述指令包含关于针对第一线程的寄存器的源操作数的指 示,则访问第一线程的寄存器堆,以获得用于第二线程的一条指令之 执行的寄存器的源操作数。
27. 根据权利要求26的机器可读介质,其中,所述方法还包括如果所述指令包含关于针对第二线程的寄存器的源操作数的指示,则 访问第二线程的寄存器堆,以获得用于第 一线程的 一条指令之执行的 寄存器的源操作数。
28. 根据权利要求26的机器可读介质,其中,所述方法还包括 如果所述标志指示第一线程的生产者操作已经结束,则避免执行第二 线程的所述指令,直到与所述寄存器的源操作数所识别的寄存器相关 的标志激活。
29. 根据权利要求26的机器可读介质,其中,所述方法还包括 如果所述指令包含关于针对第一线程的寄存器目的操作数的指示,则 执行第二线程的指令,并通过它激活与一个由第二线程的指令的寄存 器目的操作数所识别的寄存器相关的同步标志。
30. 根据权利要求26的机器可读介质,其中,所述方法还包括 在第一线程之后存放第二线程,而不在第二线程中重现第一线程的状 态,并在第二线程的指令的执行期间使第二线程访问第一线程的寄存 器堆。
全文摘要
本发明涉及处理器中多线程之间的通信。在一个实施例中,本发明包括一种在实施或执行第二线程时访问与第一线程相关的寄存器的方法,该方法可用来在与源操作数相关的同步标志指示第二线程的生产者操作尚未结束时,避免执行要从第二线程的寄存器堆访问源操作数的第一线程的指令,而在所述同步标志指示第二线程的生产者操作已经结束时执行所述指令。此外,还对其他实施例作了描述并提出了权利要求。
文档编号G06F9/44GK101529377SQ200680056225
公开日2009年9月9日 申请日期2006年10月27日 优先权日2006年10月27日
发明者A·冈萨雷斯, E·吉伯特, F·拉托雷, J·A·皮内罗, J·M·科迪纳, L·罗佩斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1