CN101529377B - 处理器中多线程之间通信的方法、装置和系统 - Google Patents
处理器中多线程之间通信的方法、装置和系统 Download PDFInfo
- Publication number
- CN101529377B CN101529377B CN200680056225.2A CN200680056225A CN101529377B CN 101529377 B CN101529377 B CN 101529377B CN 200680056225 A CN200680056225 A CN 200680056225A CN 101529377 B CN101529377 B CN 101529377B
- Authority
- CN
- China
- Prior art keywords
- thread
- instruction
- depositor
- register file
- mark
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000004891 communication Methods 0.000 title claims abstract description 11
- 230000001360 synchronised effect Effects 0.000 claims abstract description 60
- 238000002372 labelling Methods 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 4
- 238000009826 distribution Methods 0.000 claims description 3
- 238000002360 preparation method Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 238000003786 synthesis reaction Methods 0.000 claims 1
- 229910003460 diamond Inorganic materials 0.000 description 16
- 239000010432 diamond Substances 0.000 description 16
- 230000015654 memory Effects 0.000 description 9
- 238000005457 optimization Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 210000004940 nucleus Anatomy 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003362 replicative effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005469 granulation Methods 0.000 description 1
- 230000003179 granulation Effects 0.000 description 1
- JGPMMRGNQUBGND-UHFFFAOYSA-N idebenone Chemical compound COC1=C(OC)C(=O)C(CCCCCCCCCCO)=C(C)C1=O JGPMMRGNQUBGND-UHFFFAOYSA-N 0.000 description 1
- 229960004135 idebenone Drugs 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 210000001519 tissue Anatomy 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
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)
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及处理器中多线程之间的通信。在一个实施例中,本发明包括一种在实施或执行第二线程时访问与第一线程相关的寄存器的方法,该方法可用来:在与源操作数相关的同步标志指示第二线程的生产者操作尚未结束时,避免执行要从第二线程的寄存器堆访问源操作数的第一线程的指令,而在所述同步标志指示第二线程的生产者操作已经结束时执行所述指令。此外,还对其他实施例作了描述并提出了权利要求。
Description
背景技术
处理器已经成了很复杂的设备,包括大量的结构和复杂的控制技术,允许指令和数据通过该机器,以便执行所请求的不同操作。为了改进处理器的效率,某些处理器利用指令级的并行性(ILP)。尽管这样的技术可以提高效率,但也会增大功率消耗和设计的复杂性。有鉴于此,某些处理器以这样的意图设计,即通过支持和利用线程级并行性(TLP-“thread level parallem”)的体系结构来允许多线程协作。所述处理器可以包括多个核,至少多个小核,诸如同时多线程(SMT-““simultaneous multithreading”)的有序小核。
但是,这样的有序核不如利用指令级并行性(ILP)时的无序核有效。这说明,这些有序处理器可能有效地执行并行应用,而一系列并行应用中的只有一个线程和部分代码的应用,在这样的体系结构上可能不会有效地表现。据此,某些处理器可以将应用分开,将线程分成较小的部分执行,以维持最低的复杂性,同时改善其效率。但是,当第一线程企图利用第二线程的信息时,可能产生一个数量过大的组织过程。
发明内容
按照本发明的第一方面,提供了一种用于在处理器中多线程之间通信的方法,包含:对第一线程的指令进行译码,使得该指令包括指令的源操作数的位置标志,其中该位置标志指示在第二线程的寄存器堆的寄存器中的所述源操作数的位置;确定是否要从第二线程获得所述指令的任何源操作数;如果确定要从第二线程获得所述指令的任何源操作数,则确定与来自第二线程的源操作数相关联的并且包括在标记表结构中的同步标志是否激活;如果确定所述同步标志被激活,则确定是否有任何来自第一线程的源操作数;如果确定有来自第一线程的源操作数,则确定与来自第一线程的源操作数相关联的备置标志是否激活;如果确定与来自第一线程的源操作数相关联的备置标志被激活,则由一个核访问一个第二线程的寄存器堆,以在所述核上执行第一线程的指令的期间为第一线程的指令获得源操作数。
按照本发明的第二方面,提供了一种用于在处理器中多线程之间通信的装置,包括:由处理器核内的存储器构成的标记表,包括一些条目,其中每一条目对应于第一线程的第一寄存器堆的一个寄存器,使得所述条目须各自包含备置标志和同步标志,用来指示:须将一个与第二线程的第二寄存器堆对应的寄存器作为目的操作数使用的第二线程的一个生产者操作是否已完成。
按照本发明的第三方面,提供了一种用于在处理器中多线程之间通信的系统,包括:第一寄存器堆,包含用来存储第一线程的数据的多个寄存器;第二寄存器堆,包含用来存储第二线程的数据的多个寄存器;执行单元,连接到第一寄存器堆和第二寄存器堆,以执行第一线程和第二线程的指令,使得所述执行单元访问第一寄存器堆,以获得一个用于执行第二线程的一条指令的源操作数,其中由来自第一线程的指令识别的访问第一寄存器的第一源操作数和访问第二寄存器的第二源操作数两个源操作数分别与包括在由处理器核内的存储器构成的标记表中的第一条目和第二条目相关联,包括在所述标记表中的第一条目和第二条目各自包括同步标志和备置标志,并且当与所述第二源操作数相关联的第二条目的备置标志的值被设定并且和与所述第一源操作数相关联的第一条目的同步标志的值也被均已设定时,来自第一线程的指令被发送到执行单元来执行;以及连接到所述执行单元的动态随机存取存储器。
按照本发明的第四方面,提供了一种用于在处理器中多线程之间通信的装置,包含:用于对第一线程的指令进行译码,使得该指令包括指令的源操作数的位置标志的部件,其中该位置标志指示在第二线程的寄存器堆的寄存器中的所述源操作数的位置;用于确定是否要从第二线程获得所述指令的任何源操作数的部件;用于如果确定要从第二线程获得所述指令的任何源操作数则确定与来自第二线程的源操作数相关联的并且包括在标记表结构中的同步标志是否激活的部件;用于如果确定所述同步标志被激活则确定是否有任何来自第一线程的源操作数的部件;用于如果确定有来自第一线程的源操作数则确定与来自第一线程的源操作数相关联的备置标志是否激活的部件;用于如果确定与来自第一线程的源操作数相关联的备置标志被激活,则由一个核访问一个第二线程的寄存器堆,以在所述核上执行第一线程的指令的期间为第一线程的指令获得源操作数的部件。
附图说明
图1是根据本发明一个实施例的方法的流程图;
图2是根据本发明一个实施例的标记表的框图;
图3是根据本发明一个实施例实现指令执行的框图;
图4是根据本发明一个实施例产生流程标记信息的方法的流程图;
图5是根据本发明一个实施例的系统框图。
具体实施方式
在另一些实施例中,要在处理器的一个核上执行的多个线程可以访问寄存器堆中包含的与另一线程相关的值。这些实施例中,可通过类似的信道提供同时多线程(SMT)的有效运行。作为一个示例,可以在诸如同时多线程处理器等有序处理器的单一核上完成第一和第二线程。可以提供一种控制,以使生产者/消费者模型成为可能,其中可以由该第二线程访问第一线程所产生的数据值,反之亦然。多个线程中的每一个都能够在执行期间读出另一个线程的这些结构或体系结构的寄存器状态,这时以很低的组织活动允许线程之间的同步。
为了保证当访问给定的寄存器时,能够读出给定寄存器的正确值,可以这样提供一种同步控制,使得消费者线程读出生产者线程中适当的数据。在另一些实施例中,诸如可用于指令的发送或分配的标记表的结构可以包括同步标志。更具体地说,第一线程的一个寄存器的标记表结构的每一条目都可以包括一个针对该第二线程的相应寄存器的同步标志。该标志的使用可以阻止一条消费者指令继续执行,直至另一线程对应的生产者指令实现为止,以在生产者寄存器堆中呈现想要的值。为了获得上述同步系统的好处,一些实施例可以提供与一些指令相关联的流程信息。例如,可以提供与一条指令的内容相结合的流程指示或标记。在一个实施例中,一条指令可以包括操作码、源与目的操作数,以及这些源与目的操作数中每一个的流程标记。如以下将附带描述的,不同的机制可以负责产生相应指令的流程标记。例如,可以这样提供编译器支持,使之能够在编译期间根据指令集体系结构(ISA-“instruction 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的实施例中的这种具体配置进行了说明,但应明白,本发明的范围并不受限于此,而且在另一些实施例中可以采用不同的产生、存储和利用与不同线程的寄存器堆相关联的状态信息的方式。例如,处理器的不同体系结构可以具有不相同的控制配置,用以分析指令并将它们发送到处理器的一个或多个执行单元。某些处理器可以包括分配装置、状态保存装置(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所示,该位置标志具有数值1,指示稍后应由一个远程线程,亦即在图3的例中第二线程访问该目的操作数,它也可能由本地线程中存在的消费者指令访问。正如上面附带说明的,该指令205还识别两个源操作数,特别是访问寄存器rbx的第一源操作数(SRC1)。由于该源操作数的位置标志(亦即,SRC_DISTANTE-“REMOTE_SRC”)设定为数值1,故该源操作数可以从远程寄存器堆即寄存器堆225访问。类似地,该指令205包括第二源操作数(SRC2),它用来访问第二寄存器rcx,按照设定为数值0的第二源操作数的本地标志(亦即,SRC_DISTANTE),它可以从第一寄存器堆220获得。
由于须从不同的寄存器堆,即从第二寄存器堆225访问该源操作数,因此在与该源操作数相关的同步标志被激活(例如被设置)之前,不能继续处理该指令205。另一方面,在与该第二源操作数相关联的备置标志也被激活之前,不能继续处理该指令205。因此,如图3所示,该标记表100包括与第一源操作数联系的第一条目112b和与该第二操作数相关联的第二条目112c。一旦该备置标志114c的值和同步标志116b的值均已设定,该指令205便可发送到执行单元230。这是因为第一寄存器堆225的这个寄存器rbx和第二寄存器堆220的rcx均已呈现适当的值。据此,执行单元230可以在第一寄存器堆220中读出rcx,并在第二寄存器堆225中读出rbx。一旦执行了该指令,其结果便可以存储在第一寄存器堆220的目的地寄存器rax中。另一方面,可以对这些不同的备置和同步标志进行更新。特别是,如图3所示,在执行后,可以实现与第一线程相关联的条目112a,使得备置标志114a具有数值1,而同步标志116具有数值0。另一方面,与第二线程相关联的条目126a可以具有对应的同步标志116a,其数值调整在1上,以便指出在该寄存器rax中已经呈现适当的值,对于第二线程的一条消费者指令,它起源操作数的作用。尽管用图3的实施例中具体的实施例进行说明,但本发明的范围并不受限于此。
正如图3中附带说明的,在系统200内可以有一个控制器250。该控制器250可以包括不同的硬件或物理设备、软件或程序、固件或永久安装在硬件上的逻辑单元,或者它们的组合,以将指令从多个线程中的每一个发送到执行单元230。如图3所示,该控制器250可以连接到标记表100,以分析存在于不同条目中的状态信息,以根据对相关的备置和/或同步标志的分析,确定一条给定指令的源操作数是否已为其执行准备就绪。在一个实施例中,该控制器250可以实施一个逻辑功能,以便当该指令的这些源操作数处于备置状态时,使指令的发送成为可能。例如,在一个实现方式中,在指示本地源(亦即,与这些源操作数相关的这个位置标志指向本地(例如,具有低逻辑值)时,该功能可以对应于一个“与”(“AND”)运算,其中这两个本地源操作数的备置标志可被分析,以确定这两个标志是否都处于可用或就绪状态。若非如此,该指令可以一直维持到这两个备置标志都被调整为止,例如,设在逻辑高的状态上,指示备置状态。反之,若它指示这两个源操作数中的一个是远程源,该逻辑运算可以对应于一个“与”(″AND″)运算,其中,对于本地操作数,证实是本地备置标志,而对于远程操作数,证实是本地同步标志,以确定是否二者都指示这些操作数可用。若如此,该操作可继续下去;在相反的情况下,控制器250可使操作暂停,直到(根据关于备置和同步的标志指示)所述两个源操作数均已就绪为止。尽管用此特定实现方式作了描述,但是本发明的范围并不受限于此,可以用许多不同的方式来分析包含在标记表或在其他结构中的信息,以确定何时这些源操作数已为其在一条消费者指令中的使用准备就绪。例如,在另一些实现方式中,多核处理器,诸如双核或更多核的处理器,也可以用类似形式来实施本发明。在一些这样的实现方式中,在第一核上执行的第一线程可访问与在另一核上执行的不同的线程相关联的寄存器堆。但在进行时可使用若干数量的进程或组织活动,以在一个给定线程的执行期间访问所述远程寄存器堆。
据此,根据与该指令相关联的流程信息,亦即根据这些不同的源与目的操作数用的指示或流程标记,可以使快速地访问不同的寄存器堆及其同步成为可能。在另一些实施例中,不同的实体可以产生线程和对应的代码,例如,动态优化装置、编译器、硬件优化装置等等。产生上述代码的任何一个实体都可用适当的流程标记标出该指令。另一方面,该实体可以在由该消费者线程读出之前,保证那些涉及生产者/消费者关系的寄存器不被该生产者线程重新定义。在另一些实施例中,可以在这些线程之间建立同步点,使得在该消费者线程读出相关的值之前,不让该生产者线程继续进行。尽管本发明的范围并不受限于此,但是在某些实施例中,所述同步点可以用前述的同步标志实现。例如,尽管在图3的实施例中描述的流程标记可以是一位的标志,用来指出一个操作数是处于本地位置还是处于远程位置,但在其他实施例也可将所述位置标志扩展为多位,以指示在两个以上这样的线程中存在。就是说,在某些实施例中,两个以上线程可以在一个核上或在给定的多核上执行。在任何一个线程的执行过程中,都可以根据该指令中存在的流程标记,并用包含在标记表上或其他类似结构上的用来指出这些远程操作数的可用性的信息,例如通过与涉及这些多线程的这些寄存器堆相关的同步标志,访问与其他线程相关的寄存器堆。
在某些实施例中,可通过动态优化装置来生成代码踪迹(trazas decodigo)。但是,在另一些实现方式中,可以利用基于编译器或其它机制的支持,以便用流程标记的适当信息来生成指令。接着,参阅图4,其中说明根据本发明一个实施例生成流程标记信息的方法的流程图。如图4所示,方法300可以从将这些第一和第二线程用的同步标志初始化为不同步的状态(方框310)开始。例如,两个线程可由动态优化装置生成的代码踪迹组成。进一步说,这多个代码踪迹可以由处理器的单核的不同线程,即第一和第二线程同时执行。为了保证这些不同的操作数的适当属性,这些同步标志可初始化在一个不同步的状态上,例如,在某些实施例中设置逻辑值0。注意,由于这些代码踪迹是由该动态优化装置识别的,该优化装置可以控制这些寄存器中的哪些涉及生产者/消费者的寄存器,而且该优化装置也可以控制一个同步点即这些操作数可以同步的瞬间的出现。尽管一个远程使用的寄存器,可以在该生产者线程中定义许多次,但是该优化装置可以保证一个寄存器在被消费者利用之前的最终定义是建立生产者/消费者关系的定义。
接着,还是参阅图4,控制可转移到菱形框320,其中可以确定一个操作数是否只由单一的线程产生并使用。操作数被单一的线程利用时,控制可以进到方框330,在框中可指出使用该操作数的指令的流程标记中的使用位置。具体地说,若该操作数已经使用,无论是作为源操作数还是作为目的操作数,则对应的位置标志,亦即流程标记,可以处于复位状态(例如,逻辑0),以指出该操作数只是本地使用。
还是参阅图4,若相反地在菱形框320中判定,一个操作数被多个线程利用,则控制可进到菱形框340。在菱形框340中可以确定,所识别的操作数是否为要由另一线程消费的目的操作数。若如此,控制移动到方框350,其中可以根据生产者指令的流程标记识别目的操作数的本地使用,直至该目的操作数的最终定义(亦即,由消费者线程使用前的最终定义)。一旦达到该最终定义,控制便移动到方框360,其中可以用流程标记标示该指令,以指出该目的操作数的远程使用。换句话说,该指令可具有一个目的操作数用的处于设置状态(例如,逻辑1)的位置标志。控制从方框360转移到菱形框370,在其中可确定是否要由另一个线程生成源操作数。若非如此,则控制回到方框330,前面已经解释,其中与操作数相关的流程标记可以指示为本地(亦即,用逻辑值0)。
还是参阅图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-“PeripheralComponent Inteconnect”)诸如PCI ExpressTM总线等总线或其他的第三代输入/输出(E/S-″I/O″)互连总线构成,但本发明的范围并不受限于此。
如图5所示,通过同将第一总线516与第二总线520连接的总线桥518的连接,可以将另一些输入/输出装置514连接到第一总线516。在一个实施例中,第二总线520可以是一个地引线总线(LPC-“low pinbus”)。可以将不同的装置,包括例如键盘/鼠标522、通信装置526和数据存储器单元528,诸如盘驱动装置或其他海量存储器耦合到第二总线520上,在一个实施例中,这些存储器可以包括代码530。另一方面,可以把音频输入/输出524连接到第二总线520上。注意,也可以采用其他体系结构。例如,取代图5的点到点体系结构,而采用可以实现多分支总线或其他类似体系结构的系统。
这些实施例可以用代码实现,并可以存储在存储介质上,它具有存储于其上的指令,能够以执行指令的方式对一种系统进行编程的指令。这些存储介质可以包括任何类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可写光盘(CD-RW)和磁光盘、半导体器件,诸如只读存储器(ROM)、随机访问存储器(RAM)、诸如动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)、可擦可编程只读存储器(EPROM)、闪存(″flash memories″)、电可擦可编程只读存储器(EEPROM)、磁卡或光卡,或适宜于存储电子指令的其他类型的介质,但并不仅限于这些。
尽管本发明就数目有限的实施例作了描述,但是由此出发本专业的技术人员会想见许多修改和变化。后付的权利要求书用来在本发明的主旨和范围内涵盖所有这些修改和变动。
Claims (29)
1.一种用于在处理器中多线程之间通信的方法,包含:
对第一线程的指令进行译码,使得该指令包括指令的源操作数的位置标志,其中该位置标志指示在第二线程的寄存器堆的寄存器中的所述源操作数的位置;
确定是否要从第二线程获得所述指令的任何源操作数;
如果确定要从第二线程获得所述指令的任何源操作数,则确定与来自第二线程的源操作数相关联的并且包括在标记表结构中的同步标志是否激活;
如果确定所述同步标志被激活,则确定是否有任何来自第一线程的源操作数;
如果确定有来自第一线程的源操作数,则确定与来自第一线程的源操作数相关联的备置标志是否激活;
如果确定与来自第一线程的源操作数相关联的备置标志被激活,则由一个核访问一个第二线程的寄存器堆,以在所述核上执行第一线程的指令的期间为第一线程的指令获得源操作数。
2.根据权利要求1所述的方法,还包括:
在为第一线程的指令获得源操作数之后,如果确定与来自所述第二线程的所述源操作数识别的寄存器相关联的同步标志处于第一状态,这表示第二线程的生产者操作尚未结束,则避免执行第一线程的所述指令;而
在为第一线程的指令获得源操作数之后,如果确定与来自所述第二线程的所述源操作数识别的所述寄存器相关联的同步标志处于第二状态,这表示第二线程的生产者操作已经结束,则执行第一线程的所述指令。
3.根据权利要求2所述的方法,还包括:在生产者操作完成后,随即调整所述寄存器的标记表结构中一个条目的同步标志。
4.根据权利要求3所述的方法,还包括:在所述生产者操作完成并且所述寄存器的标记表结构中一个条目的同步标志被调整后,随即调整与第一线程相关联的寄存器的标记表结构的条目中的同步标志,并使与第二线程相关联的寄存器的标记表结构的条目中的同步标志复位。
5.根据权利要求2所述的方法,还包括:在所述核上执行第二线程的生产者操作,同时在所述核上执行第一线程的指令,以使所述核包含第一线程和第二线程均在其上运行的一个公共核。
6.根据权利要求1所述的方法,还包括:
在为第一线程的指令获得源操作数之后,将第一线程指令的结果存储在目的地寄存器中,并根据存在于第一线程的指令中的对应的目的操作数的位置标志,更新一个目的地寄存器的同步标志。
7.一种处理器,包括:
处理器核,所述处理器核包括存储器、第一寄存器堆和第二寄存器堆;
其中标记表被存储在处理器核内的存储器中,所述标记表包括一些条目,其中每一条目对应于第一线程的第一寄存器堆的一个寄存器,使得所述条目须各自包含备置标志和同步标志,用来指示:须将一个与第二线程的第二寄存器堆对应的寄存器作为目的操作数使用的第二线程的一个生产者操作是否已完成;
控制器,所述控制器访问所述标记表,以分析存在于所述标记表的不同条目中的备置标志和同步标志从而根据对相关的备置标志和同步标志的分析来确定给定的指令的源操作数是否已为其执行准备就绪,
其中所述控制器适于在所述指令的源操作数处于备置状态时使所述指令的发送成为可能。
8.根据权利要求7所述的处理器,其中所述控制器适于在第二线程执行了一条关于将第二寄存器堆的对应的寄存内容用作目的操作数的指令后,随即更新对应的寄存器的一个条目中的第一线程的同步标志,使所述指令包括一个目的操作数的位置标志,指示对应的寄存器由第一线程使用。
9.根据权利要求7所述的处理器,其中,所述处理器核利用第一寄存器堆和第二寄存器堆,同时执行第一线程和第二线程。
10.根据权利要求9所述的处理器,其中,所述处理器核在第一线程执行期间访问第二寄存器堆。
11.根据权利要求10所述的处理器,其中,所述处理器核根据第一线程的一条指令的源操作数的位置标志,访问第二寄存器堆。
12.根据权利要求11所述的处理器,其中,所述处理器核还根据对应寄存器的一个条目的同步标志,访问第二寄存器堆。
13.根据权利要求7所述的处理器,其中所述处理器核还包含执行单元,使得所述执行单元从第二寄存器堆的一个寄存器获得一个源操作数,以根据所述指令的位置标志执行第一线程的一条指令。
14.根据权利要求13所述的处理器,其中,若一个条目的同步标志与第二寄存器堆的寄存器有关,这表示第二线程的生产者指令处于尚未结束的状态,则避免执行第一线程的指令。
15.一种用于在处理器中多线程之间通信的系统,包括:
第一寄存器堆,包含用来存储第一线程的数据的多个寄存器;
第二寄存器堆,包含用来存储第二线程的数据的多个寄存器;
执行单元,连接到第一寄存器堆和第二寄存器堆,以执行第一线程和第二线程的指令,使得所述执行单元访问第一寄存器堆,以获得一个用于执行第二线程的一条指令的源操作数,
其中由来自第一线程的指令(205)识别的访问第一寄存器的第一源操作数(SRC1)和访问第二寄存器的第二源操作数(SRC2)分别与包括在被存储于处理器核内的存储器中的标记表(100)中的第一条目(112b)和第二条目(112c)相关联,并且当与所述第二源操作数(SRC2)相关联的第二条目(112c)的备置标志(114c)的值被设定并且与所述第一源操作数(SRC1)相关联的第一条目(112b)的同步标志(116b)的值也被设定时,来自第一线程的指令(205)被发送到执行单元来执行;以及
连接到所述执行单元的动态随机存取存储器。
16.根据权利要求15所述的系统,其中,所述执行单元用来根据第二线程的指令的指示来访问第一寄存器堆,该指示表示在所述寄存器堆中存在源操作数。
17.根据权利要求16所述的系统,还包括指令发送器,连接到执行单元,暂停第二线程的指令的分配,直至关系到与源操作数相关的寄存器的同步标志处于激活状态。
18.根据权利要求17所述的系统,其中,所述指令发送器在执行第一线程的一条生产者指令后,随即写入与所述寄存器相关的同步标志。
19.根据权利要求18所述的系统,其中,所述指令发送器在执行第一线程的一条生产者指令后,随即另外写入与所述寄存器相关的准备或备置标志。
20.根据权利要求19所述的系统,其中,所述指令发送器在标记表的与所述寄存器对应的条目中写入同步标志和备置标志。
21.根据权利要求15所述的系统,还包括第一核,其中包含所述执行单元、第一寄存器堆和第二寄存器堆,使得第一核处置或处理第一线程和第二线程的指令。
22.根据权利要求21所述的系统,还包括第二核,其中包含第二执行单元和第三寄存器堆,使得第二核用来处理第三线程的指令,并使得第二核访问第一寄存器堆和第二寄存器堆中的至少一个,以便为在第三线程中使用而获得一个源操作数。
23.根据权利要求15所述的系统,还包括一个合成寄存器堆,其中包含第一寄存器堆和第二寄存器堆。
24.一种用于在处理器中多线程之间通信的装置,包含:
用于对第一线程的指令进行译码,使得该指令包括指令的源操作数的位置标志的部件,其中该位置标志指示在第二线程的寄存器堆的寄存器中的所述源操作数的位置;
用于确定是否要从第二线程获得所述指令的任何源操作数的部件;
用于如果确定要从第二线程获得所述指令的任何源操作数则确定与来自第二线程的源操作数相关联的并且包括在标记表结构中的同步标志是否激活的部件;
用于如果确定所述同步标志被激活则确定是否有任何来自第一线程的源操作数的部件;
用于如果确定有来自第一线程的源操作数则确定与来自第一线程的源操作数相关联的备置标志是否激活的部件;
用于如果确定与来自第一线程的源操作数相关联的备置标志被激活,则由一个核访问一个第二线程的寄存器堆,以在所述核上执行第一线程的指令的期间为第一线程的指令获得源操作数的部件。
25.根据权利要求24所述的装置,还包括:
用于若与所述源操作数识别的寄存器相关联的同步标志处于第一状态,这表示第二线程的生产者操作尚未结束,则避免执行第一线程的所述指令的部件;和
用于若与所述寄存器相关联的同步标志处于第二状态,这表示第二线程的生产者操作已经结束,则执行第一线程的所述指令的部件。
26.根据权利要求24所述的装置,还包括:用于在生产者操作完成后,随即调整所述寄存器的标记表结构中一个条目的同步标志的部件。
27.根据权利要求26所述的装置,还包括:用于在所述生产者操作完成并且所述寄存器的标记表结构中一个条目的同步标志调整后,随即调整与第一线程相关联的寄存器的标记表结构的条目中的同步标志,并使与第二线程相关联的寄存器的标记表结构的条目中的同步标志复位的部件。
28.根据权利要求24所述的装置,还包括:用于在所述核上执行第二线程的生产者操作和第一线程的指令,以使所述核包含一个第一线程和第二线程均在其上运行的公共核的部件。
29.根据权利要求24所述的装置,还包含:将第一线程指令的结果存储在目的地寄存器中,并根据存在于第一线程的指令中的对应的目的操作数的位置标志,更新一个目的地寄存器的同步标志的部件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/ES2006/070162 WO2008049938A1 (es) | 2006-10-27 | 2006-10-27 | Comunicación entre múltiples secuencias de procesamiento en un procesador |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101529377A CN101529377A (zh) | 2009-09-09 |
CN101529377B true CN101529377B (zh) | 2016-09-07 |
Family
ID=39324164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680056225.2A Expired - Fee Related CN101529377B (zh) | 2006-10-27 | 2006-10-27 | 处理器中多线程之间通信的方法、装置和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8261046B2 (zh) |
JP (1) | JP2010500679A (zh) |
CN (1) | CN101529377B (zh) |
DE (1) | DE112006004005T5 (zh) |
WO (1) | WO2008049938A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155807A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 情報処理装置と負荷調停制御方法 |
US8832712B2 (en) * | 2009-09-09 | 2014-09-09 | Ati Technologies Ulc | System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system |
US8650554B2 (en) | 2010-04-27 | 2014-02-11 | International Business Machines Corporation | Single thread performance in an in-order multi-threaded processor |
US8667253B2 (en) | 2010-08-04 | 2014-03-04 | International Business Machines Corporation | Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register |
US8793474B2 (en) | 2010-09-20 | 2014-07-29 | International Business Machines Corporation | Obtaining and releasing hardware threads without hypervisor involvement |
US8713290B2 (en) | 2010-09-20 | 2014-04-29 | International Business Machines Corporation | Scaleable status tracking of multiple assist hardware threads |
US8561070B2 (en) | 2010-12-02 | 2013-10-15 | International Business Machines Corporation | Creating a thread of execution in a computer processor without operating system intervention |
US8572628B2 (en) * | 2010-12-02 | 2013-10-29 | International Business Machines Corporation | Inter-thread data communications in a computer processor |
US9529596B2 (en) * | 2011-07-01 | 2016-12-27 | Intel Corporation | Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits |
WO2014142704A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture |
US9389871B2 (en) | 2013-03-15 | 2016-07-12 | Intel Corporation | Combined floating point multiplier adder with intermediate rounding logic |
US9348595B1 (en) | 2014-12-22 | 2016-05-24 | Centipede Semi Ltd. | Run-time code parallelization with continuous monitoring of repetitive instruction sequences |
US9135015B1 (en) | 2014-12-25 | 2015-09-15 | Centipede Semi Ltd. | Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction |
US9208066B1 (en) | 2015-03-04 | 2015-12-08 | Centipede Semi Ltd. | Run-time code parallelization with approximate monitoring of instruction sequences |
CN107408035B (zh) * | 2015-03-27 | 2021-11-09 | 英特尔公司 | 用于缕程间通信的装置和方法 |
US10296346B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences based on pre-monitoring |
US10296350B2 (en) | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences |
US9715390B2 (en) | 2015-04-19 | 2017-07-25 | Centipede Semi Ltd. | Run-time parallelization of code execution based on an approximate register-access specification |
US10423415B2 (en) * | 2017-04-01 | 2019-09-24 | Intel Corporation | Hierarchical general register file (GRF) for execution block |
US11093246B2 (en) | 2019-09-06 | 2021-08-17 | International Business Machines Corporation | Banked slice-target register file for wide dataflow execution in a microprocessor |
US11119774B2 (en) | 2019-09-06 | 2021-09-14 | International Business Machines Corporation | Slice-target register file for microprocessor |
US11157276B2 (en) | 2019-09-06 | 2021-10-26 | International Business Machines Corporation | Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry |
US11816486B2 (en) * | 2022-01-18 | 2023-11-14 | Nxp B.V. | Efficient inter-thread communication between hardware processing threads of a hardware multithreaded processor by selective aliasing of register blocks |
CN114610394B (zh) * | 2022-03-14 | 2023-12-22 | 海飞科(南京)信息技术有限公司 | 指令调度的方法、处理电路和电子设备 |
CN117170750B (zh) * | 2023-09-04 | 2024-04-30 | 上海合芯数字科技有限公司 | 多源操作数指令的调度方法、装置、处理器、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187796A (en) * | 1988-03-29 | 1993-02-16 | Computer Motion, Inc. | Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units |
WO1999008185A1 (en) * | 1997-08-06 | 1999-02-18 | Advanced Micro Devices, Inc. | A dependency table for reducing dependency checking hardware |
US5968160A (en) * | 1990-09-07 | 1999-10-19 | Hitachi, Ltd. | Method and apparatus for processing data in multiple modes in accordance with parallelism of program by using cache memory |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2537526B2 (ja) | 1987-12-02 | 1996-09-25 | 富士通株式会社 | マルチプロセッサシステム |
JP2834298B2 (ja) | 1990-09-19 | 1998-12-09 | 株式会社日立製作所 | データ処理装置及びデータ処理方法 |
JPH06242948A (ja) | 1993-02-16 | 1994-09-02 | Fujitsu Ltd | パイプライン処理計算機 |
US5694565A (en) * | 1995-09-11 | 1997-12-02 | International Business Machines Corporation | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions |
JP2970553B2 (ja) * | 1996-08-30 | 1999-11-02 | 日本電気株式会社 | マルチスレッド実行方法 |
US5887166A (en) * | 1996-12-16 | 1999-03-23 | International Business Machines Corporation | Method and system for constructing a program including a navigation instruction |
US5845307A (en) * | 1997-01-27 | 1998-12-01 | Sun Microsystems, Inc. | Auxiliary register file accessing technique |
US6061710A (en) * | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
US6317820B1 (en) * | 1998-06-05 | 2001-11-13 | Texas Instruments Incorporated | Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism |
US6286027B1 (en) * | 1998-11-30 | 2001-09-04 | Lucent Technologies Inc. | Two step thread creation with register renaming |
US20030188141A1 (en) * | 2002-03-29 | 2003-10-02 | Shailender Chaudhry | Time-multiplexed speculative multi-threading to support single-threaded applications |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US20020103847A1 (en) * | 2001-02-01 | 2002-08-01 | Hanan Potash | Efficient mechanism for inter-thread communication within a multi-threaded computer system |
US6928645B2 (en) * | 2001-03-30 | 2005-08-09 | Intel Corporation | Software-based speculative pre-computation and multithreading |
US6950927B1 (en) * | 2001-04-13 | 2005-09-27 | The United States Of America As Represented By The Secretary Of The Navy | System and method for instruction-level parallelism in a programmable multiple network processor environment |
US6976155B2 (en) * | 2001-06-12 | 2005-12-13 | Intel Corporation | Method and apparatus for communicating between processing entities in a multi-processor |
US7752423B2 (en) * | 2001-06-28 | 2010-07-06 | Intel Corporation | Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor |
US7185338B2 (en) * | 2002-10-15 | 2007-02-27 | Sun Microsystems, Inc. | Processor with speculative multithreading and hardware to support multithreading software |
US7484075B2 (en) * | 2002-12-16 | 2009-01-27 | International Business Machines Corporation | Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files |
US20040268093A1 (en) * | 2003-06-26 | 2004-12-30 | Samra Nicholas G | Cross-thread register sharing technique |
US7596682B2 (en) * | 2004-04-08 | 2009-09-29 | International Business Machines Corporation | Architected register file system utilizes status and control registers to control read/write operations between threads |
US8166282B2 (en) * | 2004-07-21 | 2012-04-24 | Intel Corporation | Multi-version register file for multithreading processors with live-in precomputation |
US7610470B2 (en) * | 2007-02-06 | 2009-10-27 | Sun Microsystems, Inc. | Preventing register data flow hazards in an SST processor |
US20080229062A1 (en) * | 2007-03-12 | 2008-09-18 | Lorenzo Di Gregorio | Method of sharing registers in a processor and processor |
US8898438B2 (en) * | 2007-03-14 | 2014-11-25 | XMOS Ltd. | Processor architecture for use in scheduling threads in response to communication activity |
US9047197B2 (en) * | 2007-10-23 | 2015-06-02 | Oracle America, Inc. | Non-coherent store instruction for fast inter-strand data communication for processors with write-through L1 caches |
-
2006
- 2006-10-27 DE DE112006004005T patent/DE112006004005T5/de not_active Withdrawn
- 2006-10-27 US US12/446,930 patent/US8261046B2/en not_active Expired - Fee Related
- 2006-10-27 CN CN200680056225.2A patent/CN101529377B/zh not_active Expired - Fee Related
- 2006-10-27 WO PCT/ES2006/070162 patent/WO2008049938A1/es active Application Filing
- 2006-10-27 JP JP2009524212A patent/JP2010500679A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187796A (en) * | 1988-03-29 | 1993-02-16 | Computer Motion, Inc. | Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units |
US5968160A (en) * | 1990-09-07 | 1999-10-19 | Hitachi, Ltd. | Method and apparatus for processing data in multiple modes in accordance with parallelism of program by using cache memory |
WO1999008185A1 (en) * | 1997-08-06 | 1999-02-18 | Advanced Micro Devices, Inc. | A dependency table for reducing dependency checking hardware |
Also Published As
Publication number | Publication date |
---|---|
WO2008049938A1 (es) | 2008-05-02 |
JP2010500679A (ja) | 2010-01-07 |
US8261046B2 (en) | 2012-09-04 |
US20100005277A1 (en) | 2010-01-07 |
DE112006004005T5 (de) | 2009-06-10 |
CN101529377A (zh) | 2009-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101529377B (zh) | 处理器中多线程之间通信的方法、装置和系统 | |
CN105279016B (zh) | 线程暂停处理器、方法、系统及指令 | |
CN106547518B (zh) | 用于加速器的低等待时间调用的装置和方法 | |
CN104204990B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN105453071B (zh) | 用来提供向量族群计数功能的方法、设备、指令和逻辑 | |
CN103970509B (zh) | 对条件循环进行矢量化的装置、方法、处理器、处理系统以及机器可读介质 | |
CN105359129B (zh) | 用于提供用于基因组测序和比对的族群计数功能的方法、装置、指令以及逻辑 | |
CN108701040A (zh) | 用户级别线程暂停的方法、设备、和指令 | |
CN104823172B (zh) | 实时指令跟踪处理器、方法以及系统 | |
CN105453041B (zh) | 用于高速缓存占据确定和指令调度的方法和装置 | |
CN105512088B (zh) | 一种可重构的处理器架构及其重构方法 | |
CN104813281B (zh) | 用于指令的快速失败处理的装置和方法 | |
CN105103122B (zh) | 异构处理器装置和方法 | |
CN104995599B (zh) | 使用硬件与软件组合的路径概况分析 | |
CN104025067B (zh) | 具有由向量冲突指令和置换指令共享的全连接互连的处理器 | |
KR101594502B1 (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
CN106843810A (zh) | 跟踪指令的控制流程 | |
TW201007572A (en) | Execution of retargetted graphics processor accelerated code by a general purpose processor | |
TW201140334A (en) | Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform | |
TW201140446A (en) | Runtime extraction of data parallelism | |
CN104246745B (zh) | 用于控制mxcsr的方法及装置 | |
CN108446763A (zh) | 可变字长神经网络加速器电路 | |
CN106462395A (zh) | 多线程处理器架构中的线程等待 | |
CN110119362A (zh) | 存储器写日志存储处理器、方法、系统和指令 | |
CN107077329A (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 |
Granted publication date: 20160907 Termination date: 20181027 |
|
CF01 | Termination of patent right due to non-payment of annual fee |