CN1287272C - 处理器和挂起线程的方法 - Google Patents
处理器和挂起线程的方法 Download PDFInfo
- Publication number
- CN1287272C CN1287272C CNB028261585A CN02826158A CN1287272C CN 1287272 C CN1287272 C CN 1287272C CN B028261585 A CNB028261585 A CN B028261585A CN 02826158 A CN02826158 A CN 02826158A CN 1287272 C CN1287272 C CN 1287272C
- Authority
- CN
- China
- Prior art keywords
- thread
- processor
- instruction
- selected amount
- time
- 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 claims abstract description 29
- 230000004044 response Effects 0.000 claims abstract description 16
- 238000005516 engineering process Methods 0.000 claims description 24
- 239000000725 suspension Substances 0.000 claims description 17
- 238000003860 storage Methods 0.000 claims description 9
- 230000015572 biosynthetic process Effects 0.000 claims description 5
- 238000000137 annealing Methods 0.000 claims description 2
- 238000007599 discharging Methods 0.000 claims description 2
- 238000013461 design Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 7
- 238000004088 simulation Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005755 formation reaction Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000002699 waste material Substances 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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, 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
-
- 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, 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
Abstract
本发明公开了用于在多线程处理器中挂起线程的执行的技术。在一个实施例中,处理器包括可以在多个线程之间分区的资源。处理器逻辑在执行第一线程时接收指令,并响应于该指令而释放部分分区资源以被其他线程使用。
Description
相关申请
本申请与以下这些和本申请于同一天递交的申请相关:题为“AMethod and Apparatus for Suspending Execution of a Thread Until a SpecifiedMemory Access Occurs”、序列号10/039,579的申请;题为“CoherencyTechniques for Suspending Execution of a Thread Until a Specified MemoryAccess Occurs”、序列号10/039,656的申请;题为“Instruction Sequencesfor Suspending Execution of a Thread Until a Specified Memory AccessOccurs”、序列号10/039,650的申请;以及题为“Method and apparatus forPausing Execution in a Prcessor or the like”、序列号09/489,130的申请,其于2003年12月30日授权为美国专利6,671,795。
技术领域
本公开涉及处理器领域。更具体而言,本公开涉及多线程处理器以及用于在多线程处理器中暂时挂起对一个线程的处理的技术。
背景技术
多线程处理器能够同时处理多个不同指令序列。驱动在单个处理器中多个指令流的执行的主要推动因素,是对处理器利用率所得到的改善。高并行体系结构已经发展了多年,但经常难以从单个指令流中提取出足够的并行性,以利用多个执行单元。并发多线程处理器允许多个指令流在不同执行资源中同时执行,以试图更好地利用这些资源。对于遇到高等待时间延迟或者经常等待事件发生的程序,多线程可能尤其有利。当一个线程在等待高等待时间任务完成或者在等待特定事件时,可以处理不同的线程。
已经提出了许多不同技术来控制处理器何时在线程之间切换。例如,一些处理器检测诸如L2高速缓存未命中(cache miss)之类的特长的等待时间事件,并响应于这些被检测的长的等待时间事件而切换线程。虽然在某些环境中对这种长的等待时间事件的检测可能是有效的,但这种事件检测不太可能检测出所有这样的点,即此时切换线程可能是高效的。尤其是,基于事件的线程切换可能检测不出程序中编程者有意延迟的点。
实际上,通常编程者处于最佳的位置来确定何时切换线程是高效的,以避免浪费的螺旋等待循环(spin-wait loop)或其他消耗资源的延迟技术。这样,允许程序控制线程切换可能使得程序能够更高效地工作。影响线程选择的显式程序指令可能对此有利。例如,在2000年1月21日递交的美国专利申请No.09/489,130中描述了“暂停”指令。暂停指令允许暂时挂起线程的执行,或者直到达到计数值,或者直到指令已通过处理器流水线。但是,在以上引用的申请中所描述的暂停指令,并不指定要释放线程可分区的资源。不同的技术可能是有用的,以允许编程者更高效地利用多线程处理器的资源。
发明内容
本发明提供了一种处理器,包括:多个线程可分区资源,其每个都可在多个线程之间被分区;和逻辑,所述逻辑从所述多个线程中的第一线程接收程序指令,并且响应于所述程序指令而使所述处理器挂起所述第一线程的执行,并在所述第一线程挂起期间释放所述多个线程可分区资源中与所述第一线程相关联的部分,以被所述多个线程中的其他线程使用。
本发明还提供了一种方法,包括:在第一线程的执行中接收第一操作码;响应于所述第一操作码而将所述第一线程挂起所选量的时间;响应于所述第一操作码而在所述第一线程挂起期间释放多个线程可分区资源。
本发明还提供了一种系统,包括:存储多个程序线程的存储器,所述多个程序线程包括第一线程和第二线程,所述第一线程包括第一指令;耦合到所述存储器的处理器,所述处理器包括多个线程可分区资源和多个共享资源,所述处理器执行来自所述存储器的指令,所述处理器响应于所述第一指令的执行而挂起所述第一线程,并在所述第一线程挂起期间释放部分所述多个线程可分区资源。
本发明还提供了一种装置,包括:用于从第一线程接收第一指令的装置;用于响应于所述第一指令而挂起所述第一线程的装置;用于在所述第一线程挂起期间释放多个资源的多个分区的装置;用于在所选量的时间之后对所述多个资源重分区的装置。
附图说明
通过附图中的示例而非限制来图示本发明。
图1图示了多线程处理器的一个实施例,该处理器具有逻辑,其响应于指令而挂起线程并释放与该线程相关联的资源。
图2是根据一个实施例图示图1的多线程处理器的操作的流程图。
图3a图示了用于指定多线程处理器可以被挂起的时间量的各种选择。
图3b图示了这样的流程图,其中可以通过经过所选量的时间或者发生事件而退出被挂起的状态。
图4图示了根据一个实施例的资源分区、共享和复制。
图5图示了用于模拟、仿真和制造使用所公开技术的设计的各种设计表示或格式。
具体实施方式
以下说明描述了用于在多线程处理器中挂起线程执行的技术。在以下说明中,给出了大量的具体细节以提供对本发明更充分的理解,例如逻辑实现、操作码、指定操作数的装置、资源分区/共享/复制实现、系统元件的类型和相互关系、以及逻辑分区/集成的选择。但是,本领域的技术人员将认识到,没有这些具体细节也可以实施本发明。在另外一些例子里,没有详细示出控制结构、门级电路和完整的软件指令序列,以免模糊本发明。本领域普通技术人员阅读所包含的说明后,不进行必要实验就能够实现合适的功能。
所公开的技术可以允许编程者在一个线程中实现挂起机制,同时让其他线程利用处理资源。这样,之前专用于被挂起线程的分区可以在该线程被挂起的时候被释放。这些和/或其他被公开的技术可能有利地提高整个处理器的吞吐量。
图1图示了多线程处理器100的一个实施例,其具有挂起逻辑110,以允许响应于指令而挂起线程。在一些实施例中可以将“处理器”形成为单个集成电路。在其他实施例中,多个集成电路可以一起形成处理器,在另外一些实施例中,硬件和软件例程(例如二进制转换例程)可以一起形成处理器。挂起逻辑可以是微代码、各种形式的控制逻辑、或所描述功能的其他实现,可能包括转换、软件等等。
处理器100被耦合到存储器195,以允许处理器从存储器195检索指令并执行这些指令。存储器和处理器可以以以下方式来耦合:点对点的方式、经由总线桥、经由存储器控制器、或经由其他已知或可用技术。存储器195存储各种程序线程,包括第一线程196和第二线程198。第一线程196包括“挂起”指令。
在图1的实施例中,总线/存储器控制器120向前端130提供用于执行的指令。前端130根据指令指针170来指示从各个线程中检索指令。指令指针逻辑被复制以支持多个线程。前端130将指令输送到线程可分区资源140中以进一步处理。线程可分区资源140包括逻辑上分离的分区,当处理器100中有多个线程是活动的时,这些分区专用于特定线程。在一个实施例中,每个单独的分区仅包含来自该分区所专用于的线程的指令。线程可分区资源140可以包括例如指令队列。当在单线程模式时,线程可分区资源140的分区可以被组合形成专用于这一个线程的单个大分区。
处理器100还包括复制状态180。复制状态180包括足以维持逻辑处理器的上下文的状态变量。使用复制状态180,可以执行多个线程而不会有状态变量存储的竞争。此外,可以对每个线程都复制寄存器分配逻辑。被复制的状态相关逻辑可以使用恰当的资源分区进行工作,以准备执行进入的指令。
线程可分区资源140将指令传递到共享资源150。共享资源150不考虑其来源地按指令来操作。例如,调度器和执行单元可以是对线程透明的共享资源。线程可分区资源140可以通过以公平的方式在线程之间变换,而将来自多个线程的指令输送给共享资源150,所述公平方式使每个活动线程都连续地进行。这样,共享资源可以在恰当状态上执行所提供的指令,而不必考虑线程混和。
共享资源150后可以接着另一组线程可分区资源160。线程可分区资源160可以包括收回的资源,例如重排缓冲器等等。因此,线程可分区资源160可以确保来自每个线程的指令的执行正确结束,并确保恰当地更新该线程的恰当状态。
如前所述,可能需要向编程者提供这样一种实现延迟的技术,其不要求持续轮询存储器单元,甚或不必执行指令循环。这样,图1的处理器100包括挂起逻辑110。挂起逻辑110可以被编程来提供用于挂起线程的特定持续时间,或者来提供固定的延迟。挂起逻辑110包括流水线刷新逻辑112和分区/退火逻辑114。
可以参考图2的流程图来进一步解释图1实施例的操作。在一个实施例中,处理器100的指令集包括使线程挂起的“挂起”操作码(指令)。在框200中,接收作为第一线程(T1)的指令序列的一部分的“挂起”操作码。如框210所示,挂起线程T1的执行。线程挂起逻辑110包括流水线刷新逻辑112,如框220所示,流水线刷新逻辑112清空处理器流水线以清除所有指令。在一个实施例中,如框230所示,一旦流水线被清空,分区/退火逻辑114就释放与线程T1相关联的任何被分区的独占资源,以被其他线程使用。这些被释放的资源被退火来形成一组更大的资源,以由其余的活动线程来利用。
如框235所示,在线程T1被挂起期间可以执行其他线程(假定有指令可用于执行)。这样,处理器资源可以继续被使用,基本不受线程T1的干扰。当线程T1有很少的工作或没有有用的工作要完成时,或者当程序判定完成线程T1中的任务不是优先的时,将处理器资源更充分地用于其他线程,可以有利地加快对其他有用的执行流的处理。
一般而言,当线程T1被挂起时,处理器进入取决于实现的状态,该状态允许其他线程更充分地利用处理器资源。在一些实施例中,处理器可以释放专用于T1的可分区资源140和160的一些分区或所有分区。在其他实施例中,“挂起”操作码的不同排列或者与其相关联的设置,可以指示要释放哪些资源,如果有的话。例如,当编程者预期到更短的等待时,该线程可以被挂起,但维持大多数资源分区。吞吐量还是被提高了,因为在线程挂起期间共享资源可以被其他线程独占地使用。当预期到更长的等待时,释放与被挂起线程相关联的所有分区,允许其他线程具有额外的资源,潜在地增加了其他线程的吞吐量。但是,当线程被分别挂起和恢复时,此额外的吞吐量是以与去除和增加分区相关联的开销为代价的。
在框240中,进行测试来确定是否应该退出挂起状态。如果已经发生了所指定的延迟(即已经经过了足够的时间),那么该线程可以被恢复。可以以多种方式来指定挂起线程的时间,如图3a所示。例如,处理器300可以包括由微代码310的例程所指定的延迟时间(D1)。定时器或计数器312可以实现延迟,并当经过了指定量的时间时发信号通知该微代码。或者,一个或多个熔丝(fuse)330可以用来指定延迟(D2),或者寄存器340可以存储延迟(D3)。延迟(D4)可以由寄存器或存储单元来指定,例如被耦合到处理器的在桥或存储器控制器302中的配置寄存器。延迟(D5)还可以由基本输入/输出系统(BIOS)322来指定。还或者,延迟(D6)可以存储在被耦合到存储器控制器302的存储器304中。当“挂起”操作码被执行单元320执行时,处理器300可以检索得到作为对该操作码的隐式或显式操作数的延迟值。其他已知或者可用或方便的指定值的技术,也可以用来指定延迟。
回头参考图2,如果还未经过延迟时间,那么所使用的定时器、计数器或其他延迟测量机构继续跟踪延迟,并且线程保持被挂起,如返回框240所示。如果已经经过了延迟时间,那么在框250中开始恢复线程T1。如框250所示,刷新流水线,以释放用于线程T1的资源。在框260中,资源被重新分区,以使得线程T1具有可用来进行操作的部分线程可分区资源。最后,线程T1重新开始执行,如框270所示。
于是,图1和2的实施例提供了这样的技术,其允许线程被程序挂起特定期间。在一个实施例中,其他事件也使得T1被恢复。例如,中断可以使T1恢复。图3b图示了这样一个实施例的流程图,其允许其他事件导致退出挂起状态。在框360中,线程已经根据前面的操作被挂起了。在框365中,测试是否已经经过了足够长的时间(如前参考图2所讨论的那样)。如果已经经过了足够长的时间,则线程T1被恢复,如框380所示。
另一方面,如果在框365中未经过足够长的时间,则在框370和375中检测任何中断挂起状态的事件。在一些实施例中,可能有操作数、配置设置、“挂起”指令的排列等等,它们指定(如果有的话)哪些事件导致退出挂起状态。这样,框370测试是否有任何(在某些实施例中是哪些)事件能够中断挂起状态。如果没有事件能够中断挂起状态,那么该过程就返回框365。如果发生了任何被使能的事件,如框375中所测试的,那么线程T1就被恢复,如框380所示。否则,处理器将线程T1保持在被挂起状态,并且该过程返回框365。
图4图示了根据一个实施例对资源的分区、复制和共享。可以根据机器中活动线程的变化来分区和退火(组合到一起以由其它线程再次使用)被分区的资源。在图4的实施例中,被复制的资源包括流水线取指令部分中的指令指针逻辑、流水线重命名部分中的寄存器重命名逻辑、状态变量(未示出,但在流水线的各个阶段都引用了)以及中断控制器(未示出,一般与流水线异步)。图4实施例中的共享资源包括流水线调度阶段中的调度器、流水线寄存器读、写部分中的寄存器池、流水线执行部分中的执行资源。此外,追踪高速缓存(Trace Cache)和L1数据高速缓存可以是不考虑线程上下文而根据存储器访问分配的共享资源。在其他实施例中,在高速缓存判断中可能会使用对线程上下文的考虑。图4实施例中的被分区资源,包括流水线排队阶段中的两个队列、流水线收回阶段中的重排缓冲器以及存储缓冲器。线程选择复用逻辑在各个被复制和被分区资源之间变换,以提供对两个线程的合理访问。
在图4的实施例中,当挂起一个线程时,从两个队列中清空与线程1相关的所有指令。然后每一对队列被组合,来向第二线程提供更大的队列。类似地,使来自寄存器池的更多寄存器对第二线程可用,为第二线程释放来自存储缓冲器的更多条目,并使重排缓冲器中的更多条目对第二线程可用。实际上,这些结构被恢复成两倍大小的单个专用结构。当然,使用不同数量线程的实现可能得到不同的比例。
在一些实施例中,线程可分区资源、被复制资源和共享资源可以被布置得不同。在一些实施例中,在共享资源的两端可能没有可分区资源。在一些实施例中,可分区资源可以不被严格地分区,相反可以允许一些指令跨越分区,或者可以允许分区的大小根据在该分区中正被执行的线程或者正被执行的线程的总数而变化。此外,资源的不同混和可以被指定为共享、复制或分区资源。
图5图示了用于模拟、仿真和制造使用所公开技术的设计的各种设计表示或格式。表示设计的数据可能以多种方式来表示该设计。首先,因为在模拟中有用,硬件可以用硬件描述语言或另一种功能描述语言来表示,该语言实际上提供了期望所设计的硬件如何执行的计算机化的模型。硬件模型510可被存储在诸如计算机存储器的存储介质500中,使得可以用模拟软件520来模拟该模型,其中模拟软件520向硬件模型510应用特定的测试包,以确定其是否如希望的那样起作用。在一些实施例中,模拟软件并不被记录、捕获或包含在介质中。
另外,在设计过程的某些阶段可能产生具有逻辑和/或晶体管门的电路级模型。该模型可以类似地被模拟,有时是通过使用可编程逻辑形成该模型的专用硬件模拟器来模拟。更进一步,这种类型的模拟可以是仿真技术。无论如何,可重新配置的硬件是另一个实施例,其可以包括存储有采用所公开技术的模型的机器可读介质。
另外,大多数设计都在某个阶段达到在硬件模型中表示各个设备的物理布置的数据水平。在使用传统半导体制造技术的情况下,表示硬件模型的数据可以是这样的数据,其指定在用来产生集成电路的掩模的不同掩模层上有或没有各种特征。同样,表示集成电路的此数据实现了所公开的技术,因为该数据中的电路系统或逻辑可以被模拟或制造来执行这些技术。
在设计的任何表示中,数据都可以被存储在任何形式的计算机可读介质中。这种介质可以是被调制或产生来传输这种信息的光或电波560、存储器550或者诸如盘之类的磁或光存储540。描述该设计或该设计特定部分的位集是这样的制品,其本身自己就可被销售,或者可以被其他人进一步的设计或制造使用。
于是,公开了用于在多线程处理器中挂起线程的执行的技术。虽然已经在附图中描述和示出了某些示例性的实施例,但应该理解到这些实施例仅仅是对广泛的本发明的解释而非限制,并且本发明不应被限制成所示出和描述的具体构造和布置,因为本领域普通技术人员在研究本公开文本后可以想到各种其他的改进。
Claims (26)
1.一种处理器,包括:
多个线程可分区资源,其每个都可在多个线程之间被分区;
逻辑,所述逻辑从所述多个线程中的第一线程接收程序指令,并且响应于所述程序指令而使所述处理器挂起所述第一线程的执行,并在所述第一线程挂起期间释放所述多个线程可分区资源中与所述第一线程相关联的部分,以被所述多个线程中的其他线程使用。
2.如权利要求1所述的处理器,其中所述程序指令是挂起指令。
3.如权利要求1所述的处理器,其中所述逻辑使所述处理器将所述第一线程挂起所选量的时间。
4.如权利要求3所述的处理器,其中所述所选量的时间是固定量的时间。
5.如权利要求3所述的处理器,其中当所述第一线程被挂起的时候,所述处理器将执行来自第二线程的指令。
6.如权利要求3所述的处理器,其中所述所选量的时间可由从以下技术所组成的组中选择出的至少一种技术来编程:
与所述程序指令一起提供操作数;
烧断熔丝来设置所述所选量;
在解码所述程序指令之前在存储单元中编程所述所选量;
在微代码中设置所述所选量。
7.如权利要求1所述的处理器,其中所述多个线程可分区资源包括:
指令队列;
寄存器池。
8.如权利要求7所述的处理器,还包括:
多个共享资源,所述多个共享资源包括:
多个执行单元;
高速缓存;
调度器;
多个复制资源,所述多个复制资源包括:
多个处理器状态变量;
指令指针;
寄存器重命名逻辑。
9.如权利要求8所述的处理器,其中所述多个线程可分区资源还包括:
多个重排缓冲器;
多个存储缓冲器条目。
10.如权利要求1所述的处理器,其中所述逻辑还使所述处理器响应于事件而恢复所述第一线程的执行。
11.如权利要求3所述的处理器,其中所述逻辑还使得所述处理器忽略事件,直到已经经过了所述所选量的时间。
12.如权利要求1所述的处理器,其中所述处理器以计算机可读介质上的数字格式来实现。
13.一种方法,包括:
在第一线程的执行中接收第一操作码;
响应于所述第一操作码而将所述第一线程挂起所选量的时间;
响应于所述第一操作码而在所述第一线程挂起期间释放多个线程可分区资源。
14.如权利要求13所述的方法,其中所述释放步骤包括:
将所述多个线程可分区资源退火,以形成可由更少线程使用的更大结构。
15.如权利要求14所述的方法,其中所述释放所述多个线程可分区资源的步骤包括:
释放指令队列的分区;
释放来自寄存器池的多个寄存器。
16.如权利要求15所述的方法,其中所述释放所述多个线程可分区资源的步骤还包括:
释放多个存储缓冲器条目;
释放多个重排缓冲器条目。
17.如权利要求13所述的方法,其中所述所选量的时间可由从以下技术所组成的组中选择出的至少一种技术来编程:
与所述第一操作码一起提供操作数;
烧断熔丝来设置所述所选量的时间;
在解码所述程序指令之前在存储单元中编程所述所选量的时间;
在微代码中设置所述所选量。
18.一种系统,包括:
存储多个程序线程的存储器,所述多个程序线程包括第一线程和第二线程,所述第一线程包括第一指令;
耦合到所述存储器的处理器,所述处理器包括多个线程可分区资源和多个共享资源,所述处理器执行来自所述存储器的指令,所述处理器响应于所述第一指令的执行而挂起所述第一线程,并在所述第一线程挂起期间释放部分所述多个线程可分区资源。
19.如权利要求18所述的系统,其中当所述第一线程被挂起的时候,所述处理器将执行来自所述存储器的所述第二线程。
20.如权利要求19所述的系统,其中所述处理器将响应于所述第一指令而将所述第一线程挂起所选量的时间,通过从以下技术所组成的组中选择出的至少一种技术,来选择所述所选量的时间:
与所述程序指令一起提供操作数;
烧断熔丝来设置所述所选量的时间;
在解码所述程序指令之前在存储单元中编程所述所选量的时间;
在微代码中设置所述所选量的时间。
21.如权利要求18所述的系统,其中所述多个线程可分区资源包括:
指令队列;
寄存器池。
22.如权利要求21所述的系统,其中所述处理器还包括:
多个共享资源,所述多个共享资源包括:
多个执行单元;
高速缓存;
调度器;
多个复制资源,所述多个复制资源包括:
多个处理器状态变量;
指令指针;
寄存器重命名逻辑。
23.如权利要求22所述的系统,其中所述多个线程可分区资源还包括:
多个重排缓冲器;
多个存储缓冲器条目。
24.一种装置,包括:
用于从第一线程接收第一指令的装置;
用于响应于所述第一指令而挂起所述第一线程的装置;
用于在所述第一线程挂起期间释放多个资源的多个分区的装置;
用于在所选量的时间之后对所述多个资源重分区的装置。
25.如权利要求24所述的装置,其中所述第一指令是来自用户可执行程序的宏指令。
26.如权利要求25所述的装置,其中所述多个资源包括寄存器池和指令队列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/039,777 | 2001-12-31 | ||
US10/039,777 US20030126416A1 (en) | 2001-12-31 | 2001-12-31 | Suspending execution of a thread in a multi-threaded processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1608246A CN1608246A (zh) | 2005-04-20 |
CN1287272C true CN1287272C (zh) | 2006-11-29 |
Family
ID=21907295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028261585A Expired - Fee Related CN1287272C (zh) | 2001-12-31 | 2002-12-11 | 处理器和挂起线程的方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20030126416A1 (zh) |
JP (1) | JP2005514698A (zh) |
KR (1) | KR100617417B1 (zh) |
CN (1) | CN1287272C (zh) |
AU (1) | AU2002364559A1 (zh) |
DE (1) | DE10297597T5 (zh) |
HK (1) | HK1075109A1 (zh) |
TW (1) | TW200403588A (zh) |
WO (1) | WO2003058434A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101715576B (zh) * | 2007-06-19 | 2013-04-17 | 富士通株式会社 | 运算处理装置 |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US7216346B2 (en) * | 2002-12-31 | 2007-05-08 | International Business Machines Corporation | Method and apparatus for managing thread execution in a multithread application |
US7496915B2 (en) | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US7213093B2 (en) * | 2003-06-27 | 2007-05-01 | Intel Corporation | Queued locks using monitor-memory wait |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7870553B2 (en) * | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
JP4818919B2 (ja) | 2003-08-28 | 2011-11-16 | ミップス テクノロジーズ インコーポレイテッド | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム |
US7711931B2 (en) * | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
US7594089B2 (en) | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
US7376954B2 (en) | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US7849297B2 (en) | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US9032404B2 (en) | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US8984517B2 (en) * | 2004-02-04 | 2015-03-17 | Intel Corporation | Sharing idled processor execution resources |
US8533716B2 (en) | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US9189230B2 (en) | 2004-03-31 | 2015-11-17 | Intel Corporation | Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution |
GB0407384D0 (en) * | 2004-03-31 | 2004-05-05 | Ignios Ltd | Resource management in a multicore processor |
US8041930B2 (en) * | 2005-05-11 | 2011-10-18 | Arm Limited | Data processing apparatus and method for controlling thread access of register sets when selectively operating in secure and non-secure domains |
EP2477109B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US8032737B2 (en) * | 2006-08-14 | 2011-10-04 | Marvell World Trade Ltd. | Methods and apparatus for handling switching among threads within a multithread processor |
CN101595456A (zh) * | 2006-12-27 | 2009-12-02 | 莫尔It资源有限公司 | 用于事务资源控制的方法和系统 |
US7975272B2 (en) * | 2006-12-30 | 2011-07-05 | Intel Corporation | Thread queuing method and apparatus |
US8725975B2 (en) * | 2007-01-03 | 2014-05-13 | Freescale Semiconductor, Inc. | Progressive memory initialization with waitpoints |
US20080162858A1 (en) * | 2007-01-03 | 2008-07-03 | Freescale Semiconductor, Inc. | Hardware-based memory initialization with software support |
US20080244242A1 (en) * | 2007-04-02 | 2008-10-02 | Abernathy Christopher M | Using a Register File as Either a Rename Buffer or an Architected Register File |
US7707390B2 (en) * | 2007-04-25 | 2010-04-27 | Arm Limited | Instruction issue control within a multi-threaded in-order superscalar processor |
CN101681260B (zh) * | 2007-06-20 | 2013-04-17 | 富士通株式会社 | 运算装置 |
US20090100249A1 (en) * | 2007-10-10 | 2009-04-16 | Eichenberger Alexandre E | Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core |
US8131983B2 (en) * | 2008-04-28 | 2012-03-06 | International Business Machines Corporation | Method, apparatus and article of manufacture for timeout waits on locks |
US20120166777A1 (en) * | 2010-12-22 | 2012-06-28 | Advanced Micro Devices, Inc. | Method and apparatus for switching threads |
EP2689326B1 (en) | 2011-03-25 | 2022-11-16 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US8578394B2 (en) * | 2011-09-09 | 2013-11-05 | Microsoft Corporation | Exempting applications from suspension |
CN103389911B (zh) * | 2012-05-07 | 2016-08-03 | 启碁科技股份有限公司 | 节省系统资源的方法及运用其方法的操作系统 |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US10346195B2 (en) * | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
KR20150130510A (ko) | 2013-03-15 | 2015-11-23 | 소프트 머신즈, 인크. | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
CN103345422B (zh) * | 2013-07-02 | 2019-01-29 | 厦门雅迅网络股份有限公司 | 一种基于Linux的多线程硬实时控制方法 |
US10223026B2 (en) * | 2013-09-30 | 2019-03-05 | Vmware, Inc. | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored |
US10140212B2 (en) | 2013-09-30 | 2018-11-27 | Vmware, Inc. | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed |
US9515901B2 (en) | 2013-10-18 | 2016-12-06 | AppDynamics, Inc. | Automatic asynchronous handoff identification |
US20160170767A1 (en) * | 2014-12-12 | 2016-06-16 | Intel Corporation | Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor |
CN105843592A (zh) * | 2015-01-12 | 2016-08-10 | 芋头科技(杭州)有限公司 | 一种在预设嵌入式系统中实现脚本操作的系统 |
US10552224B2 (en) * | 2015-05-14 | 2020-02-04 | Hitachi, Ltd. | Computer system including server storage system |
US11023233B2 (en) * | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
US10353817B2 (en) * | 2017-03-07 | 2019-07-16 | International Business Machines Corporation | Cache miss thread balancing |
CN107690625B (zh) * | 2017-03-16 | 2022-02-11 | 深圳大趋智能科技有限公司 | iOS线程恢复的方法及装置 |
TWI647619B (zh) * | 2017-08-29 | 2019-01-11 | 智微科技股份有限公司 | 用來於一電子裝置中進行硬體資源管理之方法以及對應的電子裝置 |
CN109471673B (zh) * | 2017-09-07 | 2022-02-01 | 智微科技股份有限公司 | 用来于电子装置中进行硬件资源管理的方法及电子装置 |
US10481915B2 (en) * | 2017-09-20 | 2019-11-19 | International Business Machines Corporation | Split store data queue design for an out-of-order processor |
GB2569098B (en) * | 2017-10-20 | 2020-01-08 | Graphcore Ltd | Combining states of multiple threads in a multi-threaded processor |
GB201717303D0 (en) * | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Scheduling tasks in a multi-threaded processor |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5357617A (en) * | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
JP3678759B2 (ja) * | 1992-07-21 | 2005-08-03 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 割込を発生するための装置および割込を発生するための方法 |
US5584031A (en) * | 1993-11-09 | 1996-12-10 | Motorola Inc. | System and method for executing a low power delay instruction |
JPH08320797A (ja) * | 1995-05-24 | 1996-12-03 | Fuji Xerox Co Ltd | プログラム制御システム |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6105127A (en) * | 1996-08-27 | 2000-08-15 | Matsushita Electric Industrial Co., Ltd. | Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream |
US5961639A (en) * | 1996-12-16 | 1999-10-05 | International Business Machines Corporation | Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution |
US6463527B1 (en) * | 1997-03-21 | 2002-10-08 | Uzi Y. Vishkin | Spawn-join instruction set architecture for providing explicit multithreading |
US6401155B1 (en) * | 1998-12-22 | 2002-06-04 | Philips Electronics North America Corporation | Interrupt/software-controlled thread processing |
SG65097A1 (en) * | 1998-12-28 | 2001-08-21 | Compaq Computer Corp | Break event generation during transitions between modes of operation in a computer system |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6341347B1 (en) * | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
US6493741B1 (en) * | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6357016B1 (en) * | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US6496925B1 (en) * | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6931639B1 (en) * | 2000-08-24 | 2005-08-16 | International Business Machines Corporation | Method for implementing a variable-partitioned queue for simultaneous multithreaded processors |
AU2002326378A1 (en) * | 2001-07-13 | 2003-01-29 | Sun Microsystems, Inc. | Facilitating efficient join operations between a head thread and a speculative thread |
-
2001
- 2001-12-31 US US10/039,777 patent/US20030126416A1/en not_active Abandoned
-
2002
- 2002-12-11 AU AU2002364559A patent/AU2002364559A1/en not_active Abandoned
- 2002-12-11 JP JP2003558678A patent/JP2005514698A/ja active Pending
- 2002-12-11 WO PCT/US2002/039790 patent/WO2003058434A1/en active Application Filing
- 2002-12-11 KR KR1020047010393A patent/KR100617417B1/ko not_active IP Right Cessation
- 2002-12-11 DE DE10297597T patent/DE10297597T5/de not_active Ceased
- 2002-12-11 CN CNB028261585A patent/CN1287272C/zh not_active Expired - Fee Related
- 2002-12-25 TW TW091137297A patent/TW200403588A/zh unknown
-
2005
- 2005-08-24 HK HK05107419A patent/HK1075109A1/xx not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101715576B (zh) * | 2007-06-19 | 2013-04-17 | 富士通株式会社 | 运算处理装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20040069352A (ko) | 2004-08-05 |
AU2002364559A1 (en) | 2003-07-24 |
US20030126416A1 (en) | 2003-07-03 |
CN1608246A (zh) | 2005-04-20 |
TW200403588A (en) | 2004-03-01 |
DE10297597T5 (de) | 2005-01-05 |
HK1075109A1 (en) | 2005-12-02 |
WO2003058434A1 (en) | 2003-07-17 |
JP2005514698A (ja) | 2005-05-19 |
KR100617417B1 (ko) | 2006-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1287272C (zh) | 处理器和挂起线程的方法 | |
US5881308A (en) | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions out-of-order | |
US5592679A (en) | Apparatus and method for distributed control in a processor architecture | |
CN108170471B (zh) | 基于类型的优先化指令 | |
US7254697B2 (en) | Method and apparatus for dynamic modification of microprocessor instruction group at dispatch | |
US6256775B1 (en) | Facilities for detailed software performance analysis in a multithreaded processor | |
US9417935B2 (en) | Many-core process scheduling to maximize cache usage | |
US7496735B2 (en) | Method and apparatus for incremental commitment to architectural state in a microprocessor | |
TWI266987B (en) | Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium | |
US6286027B1 (en) | Two step thread creation with register renaming | |
US7836276B2 (en) | System and method for processing thread groups in a SIMD architecture | |
CN1183152A (zh) | 在超标量处理器中检测和执行俘获的装置 | |
CN101681272A (zh) | 使用事务来并行化顺序框架 | |
CN107810477A (zh) | 解码的指令的重复使用 | |
CN103842959A (zh) | 在计算机系统中维持操作数活性信息 | |
JPH10269080A (ja) | 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置 | |
CN1842769A (zh) | 用于在多线程微处理器中对并行指令流进行初始化的指令 | |
WO2017203442A1 (en) | Processor with efficient reorder buffer (rob) management | |
CN101681292A (zh) | 使用事务来并行化顺序框架 | |
JP2023504652A (ja) | マイクロプロセッサにおけるアキュムレータ・レジスタ結果のチェックポイント化 | |
CN107918547A (zh) | 在并行化处理器中的刷新 | |
CN1550978A (zh) | 用于执行在多个线程中排序的指令的方法和系统 | |
EP1131701B1 (en) | Multiple job signals per processing unit in a multiprocessing system | |
CN1596396A (zh) | 具有省电指令的甚大指令字的体系结构 | |
CN102890624A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1075109 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |