CN1881176A - 用于阻塞线程的方法与装置 - Google Patents

用于阻塞线程的方法与装置 Download PDF

Info

Publication number
CN1881176A
CN1881176A CNA2006100573808A CN200610057380A CN1881176A CN 1881176 A CN1881176 A CN 1881176A CN A2006100573808 A CNA2006100573808 A CN A2006100573808A CN 200610057380 A CN200610057380 A CN 200610057380A CN 1881176 A CN1881176 A CN 1881176A
Authority
CN
China
Prior art keywords
instruction
thread
block
streamline
period
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.)
Granted
Application number
CNA2006100573808A
Other languages
English (en)
Other versions
CN100462913C (zh
Inventor
C·M·阿伯内西
J·J·德门特
A·J·小万诺斯特兰
D·希比
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1881176A publication Critical patent/CN1881176A/zh
Application granted granted Critical
Publication of CN100462913C publication Critical patent/CN100462913C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

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指令:OR 29,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 (14)

1.一种用于在多线程处理器中的流水线的分派点处阻塞一个线程的方法,其中所述流水线由多个线程所共享,所述方法包括:
检测所述流水线中的第一线程上的长等待时间状况;
确定与所述长等待时间状况有关的准确等待时间;
生成分派阻塞信令指令;
响应于所述分派阻塞信令指令,在所述分派点处将第一线程阻塞一定量的周期;
在阻塞期间,分派来自指令流水线的其它未被阻塞的线程的指令;以及
在阻塞之后,分派来自指令流水线的所有未被阻塞的线程的指令。
2.如权利要求1所述的方法,其中所述方法被用在计算机系统或数据处理系统中。
3.如权利要求1所述的方法,其中所述长等待时间状况是非流水线操作或从属性。
4.如权利要求1所述的方法,其中确定准确等待时间的步骤还包括:
确定所述流水线内每个可能的长等待时间状况的等待时间;以及
将对应于每个等待时间的周期时间编程到所述多线程处理器中。
5.如权利要求1所述的方法,其中生成分派阻塞信令指令的步骤还包括:生成分派阻塞信令指令以将第一线程阻塞一定量的周期以匹配于所述等待时间。
6.如权利要求5所述的方法,其中所述多线程处理器将所述分派阻塞信令指令插入第一线程中。
7.如权利要求6所述的方法,其中所述分派阻塞信令指令是一个空操作指令,所述空操作指令在所述分派点处将第一线程阻塞所述一定量的周期以匹配于所述等待时间。
8.如权利要求6所述的方法,其中所述分派阻塞信令指令是经修改的OR指令,所述经修改的OR指令在所述分派点处将第一线程阻塞所述一定量的周期以匹配于所述等待时间。
9.如权利要求1所述的方法,其中所述流水线是指令流水线或执行流水线。
10.一种用于在多线程处理器中的流水线的分派点处阻塞一个线程的计算机程序产品,其中所述流水线由多个线程所共享,所述计算机程序产品具有其上包含计算机程序的媒体,其中所述计算机程序包括用于实现前述方法权利要求中的任何一个方法的计算机代码。
11.一种用于在多线程处理器中的流水线的分派点处阻塞一个线程的装置,其中所述流水线由多个线程所共享,所述装置包括:
耦合到所述流水线的分派机制,所述分派机制至少被配置成分派来自多个线程的指令;
编译器,所述编译器至少被配置成:
检测指令流水线中的第一线程上的长等待时间状况;
确定与所述长等待时间状况有关的等待时间;
生成分派阻塞信令指令,以在所述分派点处将第一线程阻塞匹配于所述等待时间的一定量的周期;
将所述分派阻塞信令指令插入所述流水线中;以及
耦合到所述分派机制和所述编译器的分派控制块,所述分派控制块至少被配置成:
响应于所述分派阻塞信令指令,阻塞第一线程上的指令的分派;以及
在与所述等待时间相匹配的一定量的周期之后,使能所有未被阻塞的线程上的指令的分派。
12.如权利要求11所述的装置,其中所述多线程处理器位于计算机系统或数据处理系统中。
13.如权利要求11所述的装置,其中所述分派阻塞信令指令是一个空操作指令,所述空操作指令将第一线程阻塞所述一定量的周期以匹配于所述等待时间。
14.如权利要求11所述的装置,其中所述分派阻塞信令指令是经修改的OR指令,所述经修改的OR指令将第一线程阻塞所述一定量的周期以匹配于所述等待时间。
CNB2006100573808A 2005-06-16 2006-03-14 用于阻塞线程的方法与装置 Expired - Fee Related CN100462913C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/154,158 US7313673B2 (en) 2005-06-16 2005-06-16 Fine grained multi-thread dispatch block mechanism
US11/154,158 2005-06-16

Publications (2)

Publication Number Publication Date
CN1881176A true CN1881176A (zh) 2006-12-20
CN100462913C 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103246552A (zh) * 2012-02-14 2013-08-14 腾讯科技(深圳)有限公司 防止线程出现阻塞的方法和装置
CN104301253A (zh) * 2014-10-21 2015-01-21 合肥星服信息科技有限责任公司 线程池和共享池组合优化大负荷通讯服务器
CN109213529A (zh) * 2017-07-07 2019-01-15 龙芯中科技术有限公司 流水线处理器调度指令的方法、装置及流水线处理器

Families Citing this family (19)

* Cited by examiner, † Cited by third party
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 英特尔公司 用于指定应用线程性能状态的指令的指令处理装置及相关方法
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 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN105431819A (zh) 2013-09-06 2016-03-23 华为技术有限公司 异步处理器消除亚稳态的方法和装置
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
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 建信金融科技有限责任公司 多线程任务调度方法、装置、存储介质及处理器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
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
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
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
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US20040226011A1 (en) * 2003-05-08 2004-11-11 International Business Machines Corporation Multi-threaded microprocessor with queue flushing
US7373536B2 (en) * 2004-08-04 2008-05-13 Kabushiki Kaisha Toshiba Fine granularity halt instruction
US7266674B2 (en) * 2005-02-24 2007-09-04 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103246552A (zh) * 2012-02-14 2013-08-14 腾讯科技(深圳)有限公司 防止线程出现阻塞的方法和装置
CN104301253A (zh) * 2014-10-21 2015-01-21 合肥星服信息科技有限责任公司 线程池和共享池组合优化大负荷通讯服务器
CN109213529A (zh) * 2017-07-07 2019-01-15 龙芯中科技术有限公司 流水线处理器调度指令的方法、装置及流水线处理器
CN109213529B (zh) * 2017-07-07 2021-09-28 龙芯中科技术股份有限公司 流水线处理器调度指令的方法、装置及流水线处理器

Also Published As

Publication number Publication date
TW200709053A (en) 2007-03-01
TWI390445B (zh) 2013-03-21
KR20060131624A (ko) 2006-12-20
KR100951092B1 (ko) 2010-04-07
JP5047542B2 (ja) 2012-10-10
CN100462913C (zh) 2009-02-18
US20060288192A1 (en) 2006-12-21
US7313673B2 (en) 2007-12-25
JP2006351008A (ja) 2006-12-28

Similar Documents

Publication Publication Date Title
CN100462913C (zh) 用于阻塞线程的方法与装置
US11567780B2 (en) Apparatus, systems, and methods for providing computational imaging pipeline
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
US8799929B2 (en) Method and apparatus for bandwidth allocation mode switching based on relative priorities of the bandwidth allocation modes
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
US6782468B1 (en) Shared memory type vector processing system, including a bus for transferring a vector processing instruction, and control method thereof
CN100489784C (zh) 多线程微处理器及其新线程的创建方法和多线程处理系统
US20060136919A1 (en) System and method for controlling thread suspension in a multithreaded processor
US20060136915A1 (en) Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
WO1999021088A1 (en) An apparatus and method to guarantee forward progress in a multithreaded processor
JP2002117002A (ja) 共用型ペリフェラルアーキテクチャ
US10831539B2 (en) Hardware thread switching for scheduling policy in a processor
CN110659115A (zh) 具有硬件辅助任务调度的多线程处理器核
JP2009026135A (ja) マルチプロセッサ装置
CN1514349A (zh) 意图进行存储的预取机制
US11010318B2 (en) Method and apparatus for efficient and flexible direct memory access
JP2010092101A (ja) 情報処理装置
CN117130787A (zh) 资源调度方法、装置、电子设备及存储介质
JP2000285089A (ja) マイクロプロセッサ及びデータの共有方式
Pareti et al. COMPAQ and QSW Scalable Scientific Computing
JPH02128242A (ja) バス制御回路

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