CN100462913C - 用于阻塞线程的方法与装置 - Google Patents
用于阻塞线程的方法与装置 Download PDFInfo
- Publication number
- CN100462913C CN100462913C CNB2006100573808A CN200610057380A CN100462913C CN 100462913 C CN100462913 C CN 100462913C CN B2006100573808 A CNB2006100573808 A CN B2006100573808A CN 200610057380 A CN200610057380 A CN 200610057380A CN 100462913 C CN100462913 C CN 100462913C
- Authority
- CN
- China
- Prior art keywords
- instruction
- thread
- streamline
- assignment
- block
- 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 35
- 230000000903 blocking effect Effects 0.000 title claims abstract description 17
- 230000011664 signaling Effects 0.000 claims abstract description 16
- 230000000295 complement effect Effects 0.000 claims description 3
- 238000011079 streamline operation Methods 0.000 claims description 2
- 238000004590 computer program Methods 0.000 abstract description 3
- 230000007246 mechanism Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 238000007667 floating Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000005469 granulation Methods 0.000 description 3
- 230000003179 granulation Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- VCROZLOYPNVPSH-DCKQLXEASA-N cmt-5 Chemical compound N1N=C2C3=C(O)C=CC=C3[C@@](C)(O)C3C2=C1[C@]1(O)C(=O)C(C(N)=O)=C(O)CC1C3 VCROZLOYPNVPSH-DCKQLXEASA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Images
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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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
-
- 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/3802—Instruction prefetching
-
- 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
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)
Abstract
本发明提供了一种通过在多线程处理器中阻塞处于分派过程中的线程而对线程性能进行精细粒度控制的方法、计算机程序产品和装置。多个线程共享处理器内的流水线。因此,一个线程上的指令的长等待时间状况可以延误共享该流水线的所有线程。分派阻塞信令指令阻塞处于分派过程中的包含长等待时间状况的线程。阻塞的长度与等待时间的长度相匹配,从而在长等待时间状况被解除之后,流水线可以分派来自被阻塞线程的指令。在一实施例中,分派阻塞信令指令是经修改的OR指令,而在另一实施例中,它是Nop指令。通过阻塞处于分派过程中的一个线程,处理器可以在阻塞期间分派来自其它线程的指令。
Description
技术领域
本发明一般地涉及多线程处理器中的阻塞机制,更具体地说,涉及允许对线程性能进行精细粒度控制的分派阻塞机制。
背景技术
多线程技术允许两个或更多的单独线程在同一处理核上执行。线程是可以独立执行的一部分程序或一组指令。因此,单个线程中的一组指令必须以程序顺序执行,而多个单独线程中的一组指令可以独立且并行地执行。处理器中的多线程使处理器能够更好地使用它的资源。多线程技术允许单个处理器对于软件来说表现为两个或更多处理器。
理想地,每个线程将在其自己的资源上独立运行。每个线程将使用其自己的指令流水线与单元、执行流水线与单元等等。实际上,这种实现方式不可行,因为芯片上的面积和资源量有限。因此,不同的线程必须共享某些资源。例如,多线程可以共享相同的指令发布单元或执行流水线。对于多线程处理器来说,由于产生了资源“瓶颈”,与共享资源、处理指令从属性和确定访问资源的优先级有关的事务在性能方面变得有问题。
在线程之间共享资源的问题在于,一个线程上的具有长等待时间的指令会延误另一线程上的指令的执行。例如,线程1和线程2共享相同的指令发布单元。因为指令单元是共享的,如果线程1在指令单元中延误了许多周期,则线程2也将延误许多周期。线程1可以由于正在执行的非流水线操作或等待将被清除的许多周期的从属性而延误。相应地,独立于线程1的线程2不能发布指令而必须等待线程1。这个问题造成了线程2的时间与资源的浪费。
处理这个问题的一种方法是去耦合线程之间的发布点。这是一种有效的解决方案,但是它具有增加发布指令的复杂度的缺点,并且它需要芯片上的大量面积。另一种方法是在检测到长等待时间的指令时转储清除(flush)处于分派过程中的指令。这是有问题的,因为转储清除的损失很有可能不匹配指令的精确等待时间,这造成了浪费的周期。很明显,一种允许共享相同资源的多个线程独立地正确运行而不浪费周期的简单系统与方法将提供胜过现有技术的巨大改进。
发明内容
本发明提供了一种通过阻塞多线程处理器中处于分派过程中的线程而对线程性能进行精细粒度控制的方法、计算机程序产品和装置。多个线程共享处理器内的流水线。因此,一个线程上的指令的长等待时间状况会延误共享该流水线的所有线程。长等待时间状况可以是非流水线操作或从属性。当编译器可以预测该长等待时间状况时,它向代码注入分派阻塞信令指令以阻塞特定的线程。处理器检测该指令,并且将处于分派过程中的线程阻塞由该指令所规定的周期数(如果检测到额外的等待时间,则加上硬件可能添加的任何额外周期)。阻塞的长度与等待时间的长度相匹配,因此在长等待时间状况解除后,该流水线可以分派来自被阻塞线程的指令。在一实施例中,分派阻塞信令指令是经修改的OR指令,而在另一实施例中,该指令是一个Nop(空操作)指令。OR指令和Nop指令将线程阻塞特定的周期数,所述特定的周期数与该状况的等待时间相匹配。经修改的OR指令不影响程序的执行、寄存器文件状态、存储器状态或输入/输出,而它仅作为分派阻塞而运行。通过阻塞处于分派过程中的一个线程,处理器可以在阻塞期间分派来自其它线程的指令。这确保了一个线程的长等待时间状况不会导致多个线程的延误,并且确保当前线程被延误所必需的精确周期数。
附图说明
为了更全面地理解本发明及其优点,现在结合附图来参考下面的说明,在附图中:
图1描述了具有多线程能力的处理器的框图;
图2描述了可以容纳多线程的处理器中的指令流水线的框图;
图3是图示出在多线程指令流水线中使用经修改的分派阻塞机制的流程图;
图4是图示出被用于阻塞多线程指令流水线的一个线程的经修改OR机制的示例的流程图;以及
图5是描述出数据处理系统的框图。
具体实施方式
在下文的讨论中,阐述了众多具体细节以全面理解本发明。但是,本领域技术人员将认识到,可以在没有这些具体细节的情况下实施本发明。在其它示例中,为了不在不必要的细节方面混淆本发明,以示例性或框图的形式图示了公知的组件。此外,对于主要部分,由于关于网络通信、电磁信令技术等的细节被认为对于获得对本发明的完整理解来说无关并且被认为在本领域普通技术人员的认识范围之内,因此省略了这些细节,
还应当注意,除非另外指出,这里描述的所有功能都可以以硬件或软件或软硬件的某些组合来执行。然而,在优选实施例中,所述功能是以硬件实现的,以便提供最高效的实现。可替代地,除非另外指出,所述功能可以根据代码(例如计算机程序代码、软件)由处理器(例如计算机或电子数据处理器)和/或由被编码以执行这些功能的集成电路来执行。
图1描述了具有多线程能力的处理器100的框图。该处理器包含存储器控制器102。存储器控制器102控制去往或来自处理器100的数据与指令流。相应地,指令单元104发布被发往执行单元106的指令。存储器控制器102与第2级(L2)高速缓存108通过接口连接。L2高速缓存108存储指令与数据。L2高速缓存与指令单元104和执行单元106上的单独的第1级(L1)高速缓存通过接口连接。指令单元104具有存储指令的L1高速缓存110,并且执行单元106具有存储数据的L1高速缓存114。指令单元104从L1高速缓存110提取指令,并且执行单元114从L1高速缓存114提取数据并向L1高速缓存114写入数据。处理器100可以包含图1中未示出的很多其它组件。图1是处理器的基本表现形式,并且其并不限制本发明的范围。
图2描述了可以容纳多线程的处理器中的指令流水线200的框图。该装置200位于图1的指令单元104内,并且容纳三个单独的线程:线程0、线程1和线程2(未示出)。如前所述,线程是可以独立执行的程序或一组指令。指令获取单元202获取用于所有三个线程的指令。指令获取单元202以优先级顺序获取指令。通常,指令获取单元202在三个线程之间交替,以使每个线程均等地访问指令流水线。指令获取单元202将这些指令传送到指令缓冲器。相应地,IBUF 0 204存储用于线程0的指令,IBUF 1 206存储用于线程1的指令,并且IBUF 2 208存储用于线程2的指令。指令缓冲器204、206和208向分派机制210传送指令。图2图示了三条单独的线程,但是该数目是任意的,并且这类装置200可以处理更多或更少数量的线程。
分派机制210是选择正确指令用以分派到指令流水线216的多路复用器(“MUX”)。图2使用MUX作为分派机制210,但是可以实现其它组件来获得相同结果。分派机制210在IBUF 0 204、IBUF 1 206或IBUF 2 208的输出之间来回切换(toggle),以给予每个线程等同的优先级和访问指令流水线216。分派控制块214选择哪个线程被分派。如果分派控制块214检测到经修改的OR指令,则它中断分派机制210的正常切换机制。在分派之后,指令进入指令流水线216。指令流水线216供给图1的执行单元106。执行单元106执行指令。本申请参考发布流水线并且更具体地参考指令流水线描述了示例性实施例。该实施例应用于存在资源争用的流水线的任意地点。例如,该实施例还应用于执行流水线。
示例性实施例涉及分派机制210、分派控制块214和编译器(未示出)。从而,造成线程0延误的指令也引起独立的线程1和2的延误,因为所有三个线程共享指令流水线216。示例性实施例通过使用分派阻塞信令指令在流水线中的分派点(分派机制210)处运行阻塞机制。编译器控制分派机制210,使得它可以分派来自线程1和2的指令,而线程0被阻塞分派。这允许独立的线程1和2继续在指令流水线216中执行指令,而线程0被阻塞分派。这种对线程性能的精细粒度的线程控制为此多线程处理器节约了时间和资源。
在一实施例中,编译器通过使用被插入到流水线中的新形式的OR指令来执行这些分派阻塞信令指令。这些指令将处于分派过程中的特定线程上的所有指令阻塞可进行编程的周期数,这允许其它线程在一个线程的阻塞期间访问分派机制210。特殊形式的OR指令除了在分派点阻塞线程之外,对系统没有任何影响。这些OR指令可以被方便地解码并被配置成不同的阻塞时间,所述不同的阻塞时间产生对于编译器的最好结果。在一实施例中,编译器可以配置用于每个不同解码指令类型的阻塞延迟。
在示例性实施例中,分派阻塞信令指令是Nop指令。Nop指令是不影响程序的执行、寄存器文件状态、存储器状态或输入/输出的指令。在该实施例中,Nop指令作为分派阻塞运行。存在不同类型的Nop指令,某些Nop指令不阻塞线程而是什么都不做。通过将Nop指令设计成对系统没有任何影响,处理器100获得了这样的益处,即请求阻塞不会消耗任何寄存器资源。对于一个示例,分派控制块214需要将线程0阻塞10个周期。编译器可以分派10个Nop指令(常规),这防止了指令流水线216被延误。这允许线程1和2在阻塞期间被分派。在实施例中,编译器分派将线程0延迟10个周期的一个经修改的Nop指令。通过仅仅发布一个经修改的Nop指令,编译器通过更小的代码量(code footprint)节约了时间和资源。
存在用于分派机制210的优先级方案。相应地,分派机制210在线程0、1和2之间来回切换,以提供对指令流水线的等同访问。在本发明中,经修改的Nop(OR)指令使分派机制210忽略特定线程,并且在其它线程之间来回切换。例如,对线程1的10个周期的Nop指令引起分派机制210在线程0和2之间来回切换10个周期。相应地,线程0和2具有对分派机制210的排它访问,而线程1被阻塞分派。
作为经修改的OR指令的示例,下列OR指令引起下述分派延迟。
OR 28,28,28//8个周期的阻塞
OR 29,29,29//10个周期的阻塞
OR 30,30,30//12个周期的阻塞
OR 31,31,31//16个周期的阻塞
这些组的周期数是任意的,并且仅提供经修改的OR指令的一个示例。对于这些指令的固定计时被编程在软件中。因此,当编译器检测到由于延误了指令流水线而将导致延迟的具体指令序列时,它将发布经修改的OR指令来处理该延迟。对应的OR操作可以精确匹配长等待时间的状况或近似为长等待时间的状况。相应地,如果检测到额外的等待时间,则硬件可以将周期添加到OR指令。
图3是图示出在多线程指令流水线中使用此经修改的分派阻塞机制的流程图300。首先,在步骤302中指令获取单元202获取指令。然后在步骤304中,指令缓冲器204、206和208存储指令。在步骤306中,分派机制210以优先级的顺序分派未被阻塞的指令。如前所述,分派机制210在线程0、1和2之间来回切换。在步骤308中,分派机制210确定是否存在经修改的OR指令。如果不存在经修改的OR指令,则在步骤306中,分派机制210继续以优先级的顺序分派未被阻塞的指令。如果存在经修改的OR指令,则在步骤312中,分派机制210阻塞线程被分派,并且允许未被阻塞的其它线程在“OR”指令的长度范围内分派指令。相应地,多个线程上的“OR”指令可以让分派机制210同时阻塞多个线程。这类阻塞不限于一次一个线程。
图4是图示出被用于阻塞多线程指令流水线的一个线程的经修改OR机制的示例的流程图400。该示例涉及浮点加指令(“FAA”),其后跟随有从属于FAA的另一浮点加指令(“FAB”)。这两个指令在图2的线程0上。对于该示例,线程0需要10个周期来执行或产生结果。因此,从属操作FAB必须在指令流水线216中延误10个周期,以等待从属性的清除。相应地,编译器必须知道线程0上跟随有从属浮点加指令的浮点加指令对应于OR指令:OR29,29,29。编译器将该OR指令插入线程0中。这假定在阻塞从属指令FAB之时,在存在这些经修改的OR指令之一的情况下,分派控制单元214可以立即阻塞分派。如果这不是真的并且在阻塞分派之前存在等待时间,则编译器可以将正常的Nop指令置于经修改的OR指令之后以进行补偿。
首先,在步骤402中,指令发布单元202获取FAA、经修改的OR指令和FAB。在步骤404中,IBUF 0 204存储FAA、“OR”和FAB。FAB通过指令获取单元202和IBUF 0 204跟随OR指令,其中OR指令跟随FAA。在步骤406中,线程0必须分派FAA。在步骤407中,线程0分派经修改的OR指令。在步骤408中,OR指令将线程0阻塞10个周期,并且在步骤412中分派控制单元214使分派机制210能够在10个周期内分派来自线程1和2的指令。在10个周期后,在步骤414中分派机制210分派来自线程0、1和2的指令。线程1和2不受用于线程0的OR指令的影响。实际上,由于对线程0的分派阻塞,线程1和2执行得更快。
当一个线程具有非流水线操作时,该经修改的OR指令也可以是有益的。非流水线的指令通常需要长时间来执行,而使用相同资源的后续指令不能被流水线传输。因此,后续指令必须等待,直到非流水线指令完成执行。这引起了指令流水线216的明显延误,并且对其它线程不利。如果编译器知道这样的延误将发生,则在分派非流水线指令之后,编译器通过使用经修改的OR指令,可以将线程阻塞特定数目的周期。因此,非流水线指令将不直接延误指令流水线216。其它线程能够分派和发布,只要其它线程不使用与当前正执行的非流水线指令相同的资源。通过利用这种经修改的OR指令,可以避免指令流水线中的很多长等待时间的状况。下述能力是对现有技术的明显改进,即,在共享的发布流水线中发布来自多个线程的指令,即使一个线程具有长等待时间的状况。
图5描述了根据本发明实施例可以被实现为例如服务器、客户计算设备、手持设备、笔记本计算机或其它类型数据处理系统的数据处理系统500的框图。数据处理系统500可以实现本发明的多个方面,并且可以是具有连接到系统总线506的多个处理器100、120的对称多处理器(“SMP”)系统或非同质系统。可替代地,系统可以包含单个处理器100。
存储器控制器/高速缓存508提供到本地存储器509的接口,并且连接到系统总线506。I/O总线桥510连接到系统总线506并且提供到I/O总线512的接口。存储器控制器/高速缓存508和I/O总线桥510可以如所示被集成。连接到I/O总线512的外围组件互连(“PCI”)总线桥514提供到PCI本地总线516的接口。多个调制解调器可以连接到PCI本地总线516。典型的PCI总线实现将支持四个PCI扩展槽或内插连接器。调制解调器518和网络适配器520提供到通过内插连接器(未示出)连接到PCI本地总线516的其它计算设备的通信链路。额外的PCI总线桥522和524提供用于额外PCI本地总线526和528的接口,通过其可以支持额外的调制解调器或网络适配器(未示出)。以此方式,数据处理系统500允许到多个网络计算机的连接。存储器映像式图形适配器530和硬盘532也可以如所示般被直接或间接连接到I/O总线512。
因此,图5中描述的硬件可以变化。例如,除了所描述的硬件外或者作为所描述硬件的替代,还可以使用其它外围设备,例如光盘驱动器等。所描述的示例不是要在体系结构方面限制本发明。例如,数据处理系统500可以是例如IBM Deep Blue系统、CMT-5系统(纽约Armonk的国际商业机器公司的产品)或其它多核处理器系统,其上运行高级交互执行(“AIX”)操作系统、LINUX操作系统或其它操作系统。
应当理解,本发明可以采用许多形式和实施例。因此,可以不脱离本发明的范围而做出对当前设计的若干变化。这里概述的能力考虑到多种连网模型的可能性。本公开不应被理解为优选任何具体的连网模型,而是应专注于可以构建这些连网模型的基础概念。
已经参考本发明的某些优选实施例描述了本发明,应当注意,所公开的实施例是示例性的,而不是在本质上进行限制,并且在前述公开中,构思出了一系列的变化、修改、改变和替换,并且在某些实例中,可以使用本发明的某些特征而无需其它特征的相应使用。基于对优选实施例的前述说明的回顾,本领域技术人员可以认为很多这样的变化和修改是所希望的。因此,宽泛地且以与本发明的范围相一致的方式理解所述权利要求是适当的。
Claims (8)
1.一种用于在多线程处理器中的流水线的分派点处阻塞一个线程的方法,其中所述流水线由多个线程所共享,所述方法包括:
检测所述流水线中的第一线程上的长等待时间状况;
确定与所述长等待时间状况有关的等待时间;
生成分派阻塞信令指令,其中所述分派阻塞信令指令是空操作指令或者经修改的OR指令;
响应于所述分派阻塞信令指令,在所述分派点处将第一线程阻塞匹配于所述等待时间的一定量的周期;
在阻塞期间,分派来自所述流水线的其它未被阻塞的线程的指令;以及
在阻塞之后,分派来自所述流水线的所有未被阻塞的线程的指令。
2.如权利要求1所述的方法,其中所述方法被用在计算机系统或数据处理系统中。
3.如权利要求1所述的方法,其中所述长等待时间状况是非流水线操作或从属性。
4.如权利要求1所述的方法,其中确定等待时间的步骤还包括:
确定所述流水线内每个可能的长等待时间状况的等待时间;以及
将对应于每个等待时间的周期时间编程到所述多线程处理器中。
5.如权利要求4所述的方法,其中所述多线程处理器将所述分派阻塞信令指令插入第一线程中。
6.如权利要求1所述的方法,其中所述流水线是指令流水线或执行流水线。
7.一种用于在多线程处理器中的流水线的分派点处阻塞一个线程的装置,其中所述流水线由多个线程所共享,所述装置包括:
耦合到所述流水线的分派装置,所述分派装置至少被配置成分派来自多个线程的指令;
编译器,所述编译器至少被配置成:
检测所述流水线中的第一线程上的长等待时间状况;
确定与所述长等待时间状况有关的等待时间;
生成分派阻塞信令指令,以在所述分派点处将第一线程阻塞匹配于所述等待时间的一定量的周期,其中所述分派阻塞信令指令是空操作指令或者经修改的OR指令;
将所述分派阻塞信令指令插入所述流水线中;以及
耦合到所述分派装置和所述编译器的分派控制块,所述分派控制块至少被配置成:
响应于所述分派阻塞信令指令,阻塞第一线程上的指令的分派;以及
在与所述等待时间相匹配的一定量的周期之后,使能所有未被阻塞的线程上的指令的分派。
8.如权利要求7所述的装置,其中所述多线程处理器位于计算机系统或数据处理系统中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/154,158 | 2005-06-16 | ||
US11/154,158 US7313673B2 (en) | 2005-06-16 | 2005-06-16 | Fine grained multi-thread dispatch block mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1881176A CN1881176A (zh) | 2006-12-20 |
CN100462913C true CN100462913C (zh) | 2009-02-18 |
Family
ID=37519386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100573808A Expired - Fee Related CN100462913C (zh) | 2005-06-16 | 2006-03-14 | 用于阻塞线程的方法与装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7313673B2 (zh) |
JP (1) | JP5047542B2 (zh) |
KR (1) | KR100951092B1 (zh) |
CN (1) | CN100462913C (zh) |
TW (1) | TWI390445B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
JP2009110209A (ja) * | 2007-10-29 | 2009-05-21 | Panasonic Corp | 演算処理装置、プロセッサ、プログラム変換装置およびプログラム |
US8260990B2 (en) * | 2007-11-19 | 2012-09-04 | Qualcomm Incorporated | Selective preclusion of a bus access request |
US8701111B2 (en) * | 2008-07-09 | 2014-04-15 | International Business Machines Corporation | Lock windows for reducing contention |
US7941644B2 (en) * | 2008-10-16 | 2011-05-10 | International Business Machines Corporation | Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer |
CN106909444B (zh) * | 2011-12-22 | 2021-01-12 | 英特尔公司 | 用于指定应用线程性能状态的指令的指令处理装置及相关方法 |
CN103246552B (zh) * | 2012-02-14 | 2018-03-09 | 腾讯科技(深圳)有限公司 | 防止线程出现阻塞的方法和装置 |
WO2013147887A1 (en) | 2012-03-30 | 2013-10-03 | Intel Corporation | Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator |
US10430190B2 (en) * | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US9021493B2 (en) | 2012-09-14 | 2015-04-28 | International Business Machines Corporation | Management of resources within a computing environment |
CN103345422B (zh) * | 2013-07-02 | 2019-01-29 | 厦门雅迅网络股份有限公司 | 一种基于Linux的多线程硬实时控制方法 |
JP6225554B2 (ja) * | 2013-08-14 | 2017-11-08 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
EP3014468A4 (en) | 2013-09-06 | 2017-06-21 | Huawei Technologies Co., Ltd. | Method and apparatus for asynchronous processor with auxiliary asynchronous vector processor |
CN104301253A (zh) * | 2014-10-21 | 2015-01-21 | 合肥星服信息科技有限责任公司 | 线程池和共享池组合优化大负荷通讯服务器 |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
US10185564B2 (en) | 2016-04-28 | 2019-01-22 | Oracle International Corporation | Method for managing software threads dependent on condition variables |
CN109213529B (zh) * | 2017-07-07 | 2021-09-28 | 龙芯中科技术股份有限公司 | 流水线处理器调度指令的方法、装置及流水线处理器 |
CN111552574A (zh) * | 2019-09-25 | 2020-08-18 | 华为技术有限公司 | 一种多线程同步方法及电子设备 |
CN110769046B (zh) * | 2019-10-17 | 2022-11-18 | 新华三信息安全技术有限公司 | 一种报文获取方法、装置、电子设备及机器可读存储介质 |
US11372647B2 (en) * | 2019-12-05 | 2022-06-28 | Marvell Asia Pte, Ltd. | Pipelines for secure multithread execution |
GB2596872B (en) * | 2020-07-10 | 2022-12-14 | Graphcore Ltd | Handling injected instructions in a processor |
CN116521351B (zh) * | 2023-07-03 | 2023-09-05 | 建信金融科技有限责任公司 | 多线程任务调度方法、装置、存储介质及处理器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341347B1 (en) * | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
CN1504873A (zh) * | 2002-12-05 | 2004-06-16 | �Ҵ���˾ | 多线程再循环和调度系统及其方法 |
WO2004095282A1 (en) * | 2003-04-23 | 2004-11-04 | International Business Machines Corporation | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (smt) processor |
CN1550978A (zh) * | 2003-05-08 | 2004-12-01 | �Ҵ���˾ | 用于执行在多个线程中排序的指令的方法和系统 |
CN1825276A (zh) * | 2005-02-24 | 2006-08-30 | 微软公司 | 多线程管道中的可编程延迟分派 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0644089A (ja) * | 1992-05-18 | 1994-02-18 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
US5584031A (en) * | 1993-11-09 | 1996-12-10 | Motorola Inc. | System and method for executing a low power delay instruction |
US6694425B1 (en) * | 2000-05-04 | 2004-02-17 | International Business Machines Corporation | Selective flush of shared and other pipeline stages in a multithread processor |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US7373536B2 (en) * | 2004-08-04 | 2008-05-13 | Kabushiki Kaisha Toshiba | Fine granularity halt instruction |
-
2005
- 2005-06-16 US US11/154,158 patent/US7313673B2/en not_active Expired - Fee Related
-
2006
- 2006-03-14 CN CNB2006100573808A patent/CN100462913C/zh not_active Expired - Fee Related
- 2006-05-30 KR KR1020060048485A patent/KR100951092B1/ko not_active IP Right Cessation
- 2006-06-01 TW TW095119465A patent/TWI390445B/zh not_active IP Right Cessation
- 2006-06-05 JP JP2006156065A patent/JP5047542B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341347B1 (en) * | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
CN1504873A (zh) * | 2002-12-05 | 2004-06-16 | �Ҵ���˾ | 多线程再循环和调度系统及其方法 |
WO2004095282A1 (en) * | 2003-04-23 | 2004-11-04 | International Business Machines Corporation | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (smt) processor |
CN1550978A (zh) * | 2003-05-08 | 2004-12-01 | �Ҵ���˾ | 用于执行在多个线程中排序的指令的方法和系统 |
CN1825276A (zh) * | 2005-02-24 | 2006-08-30 | 微软公司 | 多线程管道中的可编程延迟分派 |
Also Published As
Publication number | Publication date |
---|---|
JP2006351008A (ja) | 2006-12-28 |
US20060288192A1 (en) | 2006-12-21 |
US7313673B2 (en) | 2007-12-25 |
TWI390445B (zh) | 2013-03-21 |
TW200709053A (en) | 2007-03-01 |
CN1881176A (zh) | 2006-12-20 |
KR100951092B1 (ko) | 2010-04-07 |
KR20060131624A (ko) | 2006-12-20 |
JP5047542B2 (ja) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100462913C (zh) | 用于阻塞线程的方法与装置 | |
US11567780B2 (en) | Apparatus, systems, and methods for providing computational imaging pipeline | |
TWI537831B (zh) | 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法 | |
JP5764265B2 (ja) | 複数のハードウェア・スレッドにわたる仮想スレッドの細粒化並列処理のための低遅延変数伝達ネットワークを利用する回路装置、集積回路デバイス、プログラム製品および方法(複数のハードウェア・スレッドにわたる仮想スレッドの細粒化並列処理のための低遅延変数伝達ネットワーク) | |
US6938253B2 (en) | Multiprocessor communication system and method | |
US6782468B1 (en) | Shared memory type vector processing system, including a bus for transferring a vector processing instruction, and control method thereof | |
EP2908252B1 (en) | Inter-core communication apparatus and method | |
US8055872B2 (en) | Data processor with hardware accelerator, accelerator interface and shared memory management unit | |
KR101775569B1 (ko) | 가상 재시도 큐 | |
TW201734758A (zh) | 使用硬體佇列裝置的多核心通訊加速 | |
US20100125717A1 (en) | Synchronization Controller For Multiple Multi-Threaded Processors | |
TW200413889A (en) | Mechanism for processor power state aware distribution of lowest priority interrupts | |
JP4891405B2 (ja) | バリア操作の条件付き伝搬のための方法および装置 | |
US7383336B2 (en) | Distributed shared resource management | |
US8190805B2 (en) | Information processing apparatus and method for reconfiguring the information processing apparatus | |
KR20090092835A (ko) | 직접 메모리 액세스 컨트롤러 | |
US20060064518A1 (en) | Method and system for managing cache injection in a multiprocessor system | |
US7398378B2 (en) | Allocating lower priority interrupt for processing to slave processor via master processor currently processing higher priority interrupt through special interrupt among processors | |
JP2002117002A (ja) | 共用型ペリフェラルアーキテクチャ | |
US20160147660A1 (en) | Access extent monitoring for data transfer reduction | |
KR102614515B1 (ko) | 스케일러블 인터럽트들 | |
EP1069511B1 (en) | Data Transfer Controller with Plural Ports | |
JP2010092101A (ja) | 情報処理装置 | |
US11010318B2 (en) | Method and apparatus for efficient and flexible direct memory access | |
US20030065860A1 (en) | Internal control bus in a multiple processor/multiple bus system |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090218 Termination date: 20110314 |