CN1928811A - 处理操作管理***和方法 - Google Patents
处理操作管理***和方法 Download PDFInfo
- Publication number
- CN1928811A CN1928811A CNA2006101371983A CN200610137198A CN1928811A CN 1928811 A CN1928811 A CN 1928811A CN A2006101371983 A CNA2006101371983 A CN A2006101371983A CN 200610137198 A CN200610137198 A CN 200610137198A CN 1928811 A CN1928811 A CN 1928811A
- Authority
- CN
- China
- Prior art keywords
- processor
- information
- processing operation
- thread
- manager
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 121
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000005055 memory storage Effects 0.000 claims description 35
- 238000003860 storage Methods 0.000 claims description 27
- 230000009471 action Effects 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 7
- 238000012546 transfer Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000007613 environmental effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 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/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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
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)
- Hardware Redundancy (AREA)
Abstract
本发明公开了管理处理操作的方法和***。处理操作不局限于由多处理器***中的任何特定处理器执行。与处理操作相关联的信息可以被传送到一个处理器以用于由该处理器执行处理操作。处理器可以或不必实际执行该处理操作。随后,处理操作的信息可以传送到有能力接受用于执行的处理操作的同一处理器或不同处理器。所公开的技术并不仅限于多处理器***,并且可以用于例如在单处理器***中的外存储器和处理器寄存器之间传送信息。
Description
技术领域
本发明一般地涉及软件处理操作的执行,并且具体涉及管理例如线程的软件处理操作。
背景技术
在空间有限的处理环境中,例如还受相对严格的处理时间要求约束的通信网络处理器(NP)实现中,多个处理器可以设置于尽可能小的空间中并且尽快地运行。
由处理器执行的处理任务或操作在等待特定指令的结果时会“阻塞”或者停止执行,所述特定指令例如从存储器中读取。这种等待时间影响了处理器效率,因为在它等待指令完成期间没有被使用。改善处理器的利用率的机制能极大地改善多处理器***的性能。
线程是软件代码的连续指令,它提供了改善处理***效率和性能的装置。活动线程是一个在当前时钟周期中正在处理指令的线程。当线程变为不活动时,另一线程可以被转换为当前线程,并且开始利用处理资源,改善***的处理效率。可以执行一个活动线程,同时另一个线程处于非活动状态,例如等待指令的结果。
现有硬件线程技术将固定数目的线程与处理引擎相关联。线程的固定数目会比许多***所需的数目少得多。
每个线程也通常与用于执行的特定硬件相关联。线程被调进和调出同一算术逻辑部件(ALU)。线程只能由它的关联处理器执行,即使多处理器***中的其它处理器也可以用于执行该线程。
软件线程是硬件线程的替换物,但是一般相对较慢。因此,软件线程在存储操作或者其它操作期间调换线程的使用不能具有显著优势,因为许多操作能够在软件中调换线程所花费的时间内完成。软件线程增大了处理开销并因此使总体***性能滞后。
因此,仍需要改进用于管理软件操作的技术。
发明内容
本发明的实施例给出了一种体系结构,该结构提供了在紧密耦合的多指令多数据(MIMD)环境中的高水平的处理***性能。
根据本发明的一方面,提供了一种处理操作管理器,其被配置为将处理操作相关联的信息传送到多个处理器中具有能力来接受用于执行的处理操作的任何处理器,其中与处理操作相关联的信息已预先转送到多个处理器的其中一个以用于执行处理操作。
处理操作可以是线程,在这种情况下与处理操作相关联的信息可以是一个或多个线程寄存器。
在一个实施例中,每个处理器包括活动信息存储装置,用于存储与当前正在由处理器执行的处理操作相关联的信息,以及备用信息存储装置,用于存储与当处理器变为可用时由处理器所执行的处理操作相关联的信息,并且管理器通过将信息从存储器传送到处理器的备用信息存储装置,将与处理操作相关联的信息传送到处理器。
管理器可以被进一步配置为确定处理操作的状态,并基于处理操作的状态确定信息是否将被传送到处理器。例如,管理器可以确定与存储在每个处理器的备用信息存储装置中的信息相关联的每个处理操作的状态,并且通过在存储器和备用信息存储装置之间传送信息而将信息传送到处理器,其中所述备用信息存储装置中存储与具有特定状态的处理操作相关联的信息。
管理器还可以或者替代地确定处理操作的优先级,并且基于处理操作的优先级来确定是否要将该信息传送到处理器。在一个实施例中,管理器确定与存储于每个处理器的备用信息存储装置中的信息相关联的每个处理操作和所述处理操作的优先级,并且通过在所述存储器和备用信息存储装置之间传送信息而将信息传送到处理器,在该备用信息存储装置中存储与具有比所述处理操作更低优先级的处理操作相关联的信息。
存储器可以存储与一个或多个处理操作相关联的信息。在此情况下,管理器可以将与一个或多个处理操作中的每一个相关联的信息传送到具有能力来接受用于执行的处理操作的处理器。
选择用于传送与一个或多个处理操作中的每一个相关联的信息的处理器可以由管理器基于至少下述之一来进行:一个或多个处理操作的状态以及由多个处理器当前正在执行的处理操作的状态、一个或多个处理操作的优先级和由多个处理器当前正在执行的处理操作的优先级、一个或多个处理操作的状态和当多个处理器中每一个都变为可用时将执行的任何处理操作的状态、一个或多个处理操作的优先级和当多个处理器中每个都变为可用时将执行的任何处理操作的优先级,以及每个处理器当前是否正在执行处理操作。
管理器可以实现于例如这样的***中:该***还包括用于存储与一个或多个处理操作相关联的信息的存储器。该***还可以包括多个处理器。
根据一个实施例,管理器是利用多个处理器中的至少一个处理器实现的。
在本发明另一较宽的方面提供了一种方法,并且该方法包括接收与软件处理操作相关联的信息,其中与处理操作关联的信息已预先传送到用于执行处理操作的多个处理器中的处理器,并且将信息传送到多个处理器中有能力接受用于执行的处理操作的任何处理器。
这些操作可以以任何多种方式执行,并且该方法还可以包括其他操作,上文已经简要地描述了其中一些。
根据本发明另一方面的管理器将可操作地耦合至存储器和处理器。存储器用于存储与至少一个处理操作相关联的信息,并且处理器有权访问用于存储信息的多个寄存器组,所述信息与由处理器当前正在执行的处理操作相关联、以及与在完成对当前处理操作的执行之后由处理器将要执行的一个或多个处理操作相关联。管理器被配置为确定存储在存储器中的信息是否要被传送到或传送自多个寄存器组中的一个寄存器组,所述寄存器组用于存储一个或多个处理操作,并且倘若如此,则在存储器和寄存器组之间传送与处理操作相关联的信息。
管理器可以基于至少下述之一来确定信息是否要被传送:与存储于存储器中的信息相关联的处理操作的状态和所述一个或多个处理操作的状态、与存储于存储器中的信息相关联的处理操作的优先级和所述一个或多个处理操作优先级,以及处理器当前是否正在执行处理操作。
附图说明
在阅读了如下对特定示例性实施例的描述后,本发明的其它方面以及特性对于本领域的普通技术人员而言将变得显而易见。
现在将参考附图详细说明本发明的实施例,其中:
图1是结合常规的硬件线程的处理***的框图;
图2是结合本发明实施例的处理***的框图;以及
图3是示出了根据本发明实施例的方法的流程图。
具体实施方式
通过增大执行周期相对于等待周期的比值,线程用于提高处理部件(例如算术逻辑部件ALU)的利用率。在很快会出现的改进的处理体系结构中,集群处理器上的高级程序设计语言可能会使用包括线程的改进的硬件特征来改善性能。
在处理集群中,线程控制块管理线程的存储器,或者至少与线程相关联的环境信息,虽然它们没有执行。执行变得阻塞的线程的ALU用备用线程调换当前活动线程。备用线程现在变为活动线程并被执行。当新的活动线程阻塞时,调换出的线程可以在备用寄存器中等待以在另一次调换之后变为活动的执行线程。
线程控制块基于来自操作***的消息或者基于表明阻塞情况现在清除的硬件信号来调度线程。
线程信息通过线程控制块存储于诸如静态随机存取存储器(SRAM)的存储器中,使得所支持的线程数目需要相对较小的区域。例如,某些现代的设计支持高达每ALU 8个线程,而其它的只支持4个或者甚至2个线程。在支持每处理器8个线程的4处理器***中,这将产生32个线程的存储装置,其中每个线程专用于一个特定处理器。线程无法在处理器之间移动。例如,支持8个线程的4个处理器每个要求32个线程的专用存储装置,即使实际上需要较少的线程,比方20个线程。因为线程无法在处理器之间移动,所以每个处理器必须独立地提供足够的线程存储装置。
图1是结合常规的硬件线程的处理***的框图。处理***10包括处理器12、14、16、18,其中每个包括ALU 22、32、42、52,多路复用器24、34、44、54,以及8组线程寄存器26、36、46、56。
通过考察图1显而易见的是,在硬件体系结构10中的处理器12、14、16、18之间,线程不是共享的。每个线程由ALU 22、32、42、52经由多路复用结构来访问,所述多路复用结构在图1中由多路复用器24、34、44、54表示。如果处理器的8个线程中任何一个都没有被使用,那么与不同处理器相关联的其它线程不能将该对应线程寄存器的存储装置用在其它地方。同样,如果处理器的线程存储装置用完了,那么也不能访问空闲的相邻线程存储装置。此外,假定当前处理器具有高利用率,那么线程无法被传送到另一处理器来继续执行。
在软件线程方案中,线程仅仅被复制到存储器。在此情况下线程的调换非常慢,因为所有调换线程的寄存器必须被处理器复制。软件线程方案还通常将线程与特定处理器相关联并因此易于具有某些与常规的硬件线程方案同样的缺陷。
例如,由编译器和操作***(未示出)来处理把线程初始分配给***10的处理器12、14、16、18中的一个。在编译时编译器可以将线程分配给处理器,并且任务会标识出它们对于继续执行是有效的。操作***很可能会在程序的请求下控制实际线程生成,并且线程会根据需要而产生新的线程。操作***或者程序可以基于某些中断的事件(trapped event)来发布调换线程的命令。
图2是结合本发明实施例的处理***的框图。处理***60包括四个处理器62、64、66、68,可操作地耦合至处理器的线程管理器110,可操作地耦合至线程管理器110的线程存储器112,以及可操作地耦合至这些处理器的代码存储器114。每个处理器62、64、66、68包括ALU 72、82、92、102,一组活动线程寄存器74、84、94、104,以及一组备用线程寄存器76、86、96、106。
应该理解的是,下面所要描述的图2的***60以及图3的内容只是为了举例说明的目的,并且本发明并不局限于附图中明确地示出和本文所描述的特定示例性实施例。例如,处理***可以包括少于或多于四个处理器,或者甚至具有类似或者不同结构的单个处理器。在另一个实施例中,处理器的活动寄存器和备用寄存器通过多路复用设备来访问处理器的ALU。由处理器执行的软件代码可以独立地存储,如图所示,或者可能地与线程执行环境信息一起存储于线程寄存器中。也可以设想其它变体。
ALU 72、82、92、102是执行机器可读指令(例如软件代码)的处理部件的代表示例。线程有效地将软件程序或者步骤划分为可以由一个或多个处理器62、64、66、68中的ALU 72、82、92、102独立执行的单个部分。
每个线程寄存器组74/76、84/86、94/96、104/106都存储与线程相关联的环境信息。定义线程的环境的寄存器的示例包括程序计数器、计时器、标志,和数据寄存器。在一些实施例中,当线程活动时由处理器执行的实际软件代码可以用线程寄存器存储。然而在图2所示出的例子中,软件代码独立地存储于代码存储器114中。
尽管本文中主要称为寄存器,但是应该理解的是,环境信息不必存储在任何特定类型的存储器设备中。正如本文所使用的那样,一般地说寄存器可以表示用于存储信息的存储区域,或者在某些情况下表示信息本身,而不是存储装置或者存储器设备的类型。
线程管理器110在硬件、软件、或者它们的某些组合中实现,所述软件诸如由操作***处理器所执行的操作***软件,并且管理存储线程的存储器112和每个处理器62、64、66、68之间的线程传送。下面更加详细地描述线程管理器110的功能。
类似于线程寄存器74/76、84/86、94/96、104/106,线程存储器112存储与线程相关联的线程环境信息。任何各种类型的存储器设备都可用来实现存储线程的存储器112,包括固态存储器设备和使用可拆卸或者甚至可移动的存储介质的存储器设备。在一个实施例中,存储线程的存储器112提供于诸如同步静态随机存取存储器(SSRAM)或者同步动态随机存取存储器(SDRAM)设备的高密度存储器设备中。通过允许在线程存储器112中同时访问多个线程,多端口存储器设备可以提高性能。
代码存储器114存储软件代码,并且可以利用任何的各种类型的存储器设备来实现,所述存储设备包括固态和/或其它类型的存储器设备。例如,ALU 72、82、92、102可以访问代码存储器114中的一部分软件代码,所述软件代码由程序计数器线程寄存器中所存储的程序计数器或者其它指针或者索引来识别。实际线程软件代码存储于***60中的代码存储器114中,尽管在其它实施例中,线程环境信息和软件代码可以存储于相同的存储装置中,如上所述。
处理***60中的每个处理器62、64、66、68支持2组“专用”线程寄存器74/76、84/86、94/96、104/106,所述“专用”线程寄存器用于存储与它的活动线程和备用线程相关联的信息。存储线程的存储器112提供例如16个更多线程的其他共享线程存储装置。在该例中,平均有6个***宽的线程对4个处理器中的每个处理器都有效。然而,在图2所示的实施例中,假设处理器的线程寄存器存储有效线程信息,任何一个处理器将具有最少2个线程,以及最多18个线程,其中最少2个线程对应于其2个专用线程寄存器。
任何单个处理器都可以访问高达18个线程存储装置,包括专用线程存储装置和外部存储装置,所述外部存储装置在一些实施例中是通用的、共享的存储装置。每个处理器,或者在一个实施例中的单个处理器,可以具有x组线程寄存器(在图2的示例中为2),据此它可以在与存储于那些寄存器中的信息相关联的x个线程之间迅速地转换。如上所述,此类型的硬件调换倾向于比软件调换要快得多。在活动线程正在被执行的时候,线程管理器110可以在x-1个备用寄存器的任何一个与线程存储器112之间传送信息。
线程管理器110的这些操作不同于高速缓存***,例如,因为高速缓存***是反应性的(reactive)。处理器询问某些事情,然后高速缓存将其本地化或者取出它。相反,线程管理器110可以在处理器实际需要信息之前将该信息转送给处理器,无论是在多处理器***或者单处理器***中。
***60中对线程的原始存储器需求可以利用高密度存储器设备来减少。例如,高密度存储器设备可以使用每一位3个晶体管,而另一种存储器设备可以要求大约每一位30个晶体管。从而高密度存储器设备可以允许利用与在其它存储器设备中存储32个线程相同或者比它更少数目的晶体管来存储248个线程。这一点提供了线程显著增加和/或线程存储所需的存储空间显著减少的可能性。
正如下文所要进一步详细描述地,本发明的实施例还允许在处理器之间共享线程,这可以让线程的总数减少,节约其他存储空间。
操作中,线程管理器110控制在例如硬件寄存器的备用线程寄存器76、86、96、106与存储器阵列、线程存储器112之间的信息传送。备用线程寄存器中的备用线程是通过用处理器当前正在执行的活动线程进行调换而变为活动的。根据一个实施例,通过调换备用线程寄存器和活动线程寄存器的内容而用处理器的活动线程调换备用线程与进行,并且程序计数器或者与前面备用寄存器类似的寄存器将处理器的ALU重定向到新的活动线程的软件代码。
处理器内备用寄存器和活动寄存器之间的线程调换可以例如通过处理器的ALU由处理器本身控制。ALU可以检测到,其当前活动线程正在等待例如存储器读取操作的返回,并且换入用于在等待时间期间执行的其备用线程。在其它实施例中,外部部件检测到线程阻塞并由处理器启动线程调换。
当活动线程阻塞或者完成时,处理器的一组备用线程寄存器76、86、96、106中的备用线程可以保持在备用线程寄存器中直到ALU 72、82、92、102又变为活动的。可以由处理器的ALU或者由线程管理器110做出关于是否将备用线程传送给共享线程存储器112的判断。
应该注意的是,如果线程管理器110将线程放置在该处理器的备用寄存器中,并且它未曾调换到活动寄存器中,那么线程并不被强制在特定处理器上执行。线程管理器110可以取消该线程并且利用较高优先级的线程替代它或者将它转送给另一现在可用的处理器。
例如,可以基于线程状态在线程存储器112和处理器62、64、66、68之间传送线程。在一个实施例中,线程管理器110确定存储于线程存储器112中的线程的状态和存储于每个备用寄存器组76、86、96、106中的线程的状态。软件指令或者其它机制可以用于确定线程状态。例如当数据从存储器读取操作返回时,只等待处理器继续执行的线程可以处于“就绪”或者类似的状态。备用线程寄存器76、86、96、106中阻塞或者停止的线程可以用处于就绪状态的线程存储器112中的线程进行调换。这保证了当备用线程没有准备好进一步执行时,就绪线程不在共享线程存储器112中等待。
代替或者除了基于状态的传送/调换之外,基于优先级的线程信息传送和/或调换也是可能的。当产生线程时或者产生线程之后可以为线程分配优先级。线程由父线程产生,例如,可以具有与父线程相同的优先级。优先级还可以或者可替代地明确地分配给线程。
通过例如使用一种软件指令或功能来确定线程优先级,并且基于确定的优先级在线程存储器112和备用线程寄存器76、86、96、106之间传送线程信息,线程可以按照优先级的顺序被发送到处理器。最高优先级的线程由处理器62、64、66、68在低优先级线程之前执行。
优先级还可以或者可替代地例如由ALU使用,用于控制备用寄存器和活动寄存器74/76、84/86、94/96、104/106之间的线程调换,以允许较高优先级的备用线程优先于低优先级的活动线程。
根据组合的状态/优先级方法,线程的状态和优先级都考虑到管理线程之中。所希望的是,例如,不从备用线程寄存器传送就绪线程以便换入较高优先级的阻塞线程。将较高优先级的线程传送到备用线程寄存器中可以被延迟直到那些线程处于就绪状态。
状态和优先级表示可以用于确定线程是否将会传送到线程存储器112中和/或从线程存储器112传送出,或者在活动和备用线程寄存器74/76、84/86、94/96、104/106之间进行传送的标准的范例。除了或者代替状态和优先级,其它线程传送/调换标准可以被使用。某些可选或者其他线程调度机制对于本领域技术人员来说是显而易见的。
一旦线程存储于处理器的备用线程寄存器外部,那么它能被调度给任一其它的处理器。例如,备用线程能经由线程存储器112从处理器62移动到处理器64,使得更为有效地利用ALU周期。因此,因为等待线程可以具有其它可用处理器,所以大量的执行线程不会经常中断。
这是超出已知线程技术的优点。虽然某些线程方案执行同步的线程,但是每一线程与一个特定的处理单元相关联,并因此必须等待那些处理单元变为可用。如果多个线程都在等待相同的单元,那么将只有一个执行。根据本发明的实施例,因为存在较多的可用资源,所以线程很少竞争。例如,***60中的线程能由4处理器62、64、66、68中的任何一个来执行。
此外,***60中的所有处理器62、64、66、68都共享线程存储器112,使得每个处理器有能力在要求时具有大量线程,而不必专用硬件资源。
更一般地,线程可以被认为是由处理器执行的软件处理操作的范例,包括一个或多个任务或者指令。在此情况下,线程管理器110是处理操作管理器的范例,其将与处理操作相关联的信息从存储器传送到多个处理器中的一个,所述处理器有能力来接受用于执行的处理操作。例如,当处理器当前没有执行另一处理操作、其备用寄存器为空、或者其备用寄存器存储与具有可以被支配的状态和/或优先级的操作相关联的信息时,处理器有能力接受处理操作。
因此,已由一个处理器执行的线程可以被传递给相同的处理器或者另一处理器以进一步执行。在一种意义上,这可以被认为是在功能上等同于选择一个处理器以处理线程,以及随后选择相同的或者不同的处理器来处理该线程。
将信息从线程存储器112传送到处理器的备用线程寄存器包括从线程存储器中移动或者拷贝信息。
在之前的方法中,一旦线程信息已被移入处理器的备用寄存器中,那么它不再存储在线程存储器112中,避免了在两个不同处理器的备用寄存器中有相同的线程等待执行的风险。
然而,如果从线程存储器112中复制了线程信息,那么可以实现另一种机制以防止将相同线程的信息传送给两个不同处理器。例如,线程存储器112中的明确标志或者指示符可用于跟踪哪些信息已经被传送到处理器的备用线程寄存器中。线程管理器110于是将访问这些标志或者指示符以确定与特定线程相关联的信息是否已经被传送到处理器。使用例如表格将标志/指示符映射到线程标识符,每个标志或者指示符可以与线程信息相关联。另一可能的选择将是:在用于在线程存储器112中存储线程信息的数据记录中包括标志或者指示符字段。还可以设想进一步的变化,并且这种进一步的变化对于本发明所属领域的技术人员而言是显而易见的。
上面主要是在***的环境中描述了的本发明的实施例。图3是根据本发明的另一实施例用于在多处理器***中管理软件处理操作的方法120的流程图。
在方法120中,在122一个或多个线程存储于存储器。例如,这可以包括将最新产生的线程或者备用线程从处理器调换到外部共享存储器。
在123,在线程准备好进一步执行之后选择处理器来处理所存储的线程。在一个实施例中,这种选择包括识别有能力接受用于执行的线程的处理器。当处理器的备用线程寄存器为空时,处理器可以被认为是有能力接受线程,尽管也可以设想例如基于线程状态和/或优先级的其它选择机制。在123,操作还可以包括基于线程的状态和/或优先级来选择线程以传送到处理器。
方法120在124继续进行以下操作,即将线程调换到选择的处理器中、或通常将与处理操作相关联的信息(即线程)从存储器传送到所选处理器中。在124信息还可以基本上同时从处理器中传送出,其中处理器的备用寄存器存储与处理器已经或者未曾执行的另一线程相关联的信息。
对多个线程可以重复进行或者基本上同时执行在122、123、124的操作。
尽管123的处理器选择可以基于如上所述线程的状态和/或优先级,但是确定线程状态和/或优先级的操作已经被独立地显示在126,以更为清楚地说明本发明实施例的其它特性。基于线程状态、优先级、或者基于两者,如在126所确定的,在128,活动线程或者备用线程可以被调换出处理器,以使得与具有较高优先级的线程相关联的信息可以被传送到处理器的备用寄存器中。应该理解的是,在126、128的操作可以重复地或者同时地应用于多个线程和处理器。
图3中示出的操作可以随后又应用于在128已经被调换出处理器的线程。
根据本发明其它实施例的方法可以进一步包括比图3中明确示出的操作更少或者不同的操作,和/或按照与示出的不同顺序执行的操作。方法120是一个可能的实施例的示例。例如,如上所述,在122的操作可能包括将线程从处理器调换出,并且在123和/或124的操作可以包括确定一个或多个线程的状态和/或优先级。在图3中126的状态/优先级确定和128的换出操作的独立表示不排除将这些操作在方法120中更早地执行或者结合其他操作执行。也可以设想操作类型以及它们被执行的顺序的进一步变化。
相对于常规的线程管理技术,本文所公开的***和技术可以让更多数量的线程对处理器可用,同时保留较低的平均线程计数,减少了所需的线程存储器的数量。
本发明的实施例还可以允许不仅在单处理器上而且在处理器之间调换线程,从而改善多处理器***的性能。
因此可以在处理器上执行更多任务而不会出现在别处会看到的整体性能的降低。另外,可以提高处理器利用率,又可以提高处理器性能等级。这在高级终端***中是非常需要的。较少的存储器分布(profile)也可以降低等效性能的设计尺寸,直接变换为降低制造部件的成本。
所描述的仅仅示例了本发明实施例的原理的应用。在不脱离本发明的范围的情况下,本领域技术人员也可以实现其它设备和方法。
例如,尽管图2示出了每个处理器仅有一组备用线程寄存器,但是其它实施例可以配置为利用具有多组备用线程寄存器的处理器来进行操作。备用寄存器和活动寄存器表示速度优化,并因此不必在所有实现方式中设置。因此,本发明其它实施例可以包括具有更少内部寄存器的处理器。
对图2中所示功能的具体划分同样意在为了说明的目的。例如,线程管理器的功能可以实现于一个或多个处理器中,以致处理器可以更直接地访问共享线程存储器。
还应该理解,由于除输入/输出阻塞之外的原因,线程可以被传送到并传送出外部共享存储器。例如,线程可以结合睡眠时间或者停止条件,并且在处于睡眠或者停止状态时被调换出处理器。
管理器和外部共享线程存储器有效地使得一个处理器访问曾经由或将要由另一个处理器处理的线程。在另一个实施例中,例如通过允许处理器访问其他处理器的备用寄存器,独立于处理器而实现的或者结合一个或多个处理器而实现的管理器或者管理功能可以提供对处理器之间的线程的更直接的访问。
也可以设想单个处理器实施例。线程管理器可以被可操作地耦合至用于存储与至少一个处理操作相关联的信息的存储器,并耦合至处理器。处理器有权访问多个寄存器组,所述寄存器组用于存储与由处理器当前正在执行的处理操作相关联的信息以及与在完成当前处理操作的执行之后由该处理器将要执行的一个或多个处理操作相关联的信息。管理器确定存储在存储器中的信息是否将会被传送到或者来自用于存储一个或多个处理操作的多个寄存器组中的一个寄存器组,并且倘若如此,在存储器和寄存器组之间传送与处理操作相关联的信息。因此,管理器可以在处理器执行线程的同时在存储器和处理器的备用寄存器之间传送信息。
根据本文公开的技术所管理的线程集合不必是“固定的”。从某种意义上讲,线程的执行会被完成,之后线程可以不再存储于线程寄存器或者共享线程存储装置中。还可以添加新的线程。
另外,尽管主要在方法和***的环境中描述,但是也可以设想本发明的其它实现方式,例如存储在机器可读介质上的指令。
Claims (24)
1.一种处理操作管理器,被配置为:将与处理操作相关联的信息传送到多个处理器中有能力接受用于执行的所述处理操作的任何处理器,其中与所述处理操作关联的信息已预先传送到用于执行所述处理操作的所述多个处理器中的一个处理器。
2.如权利要求1的管理器,其中所述处理操作包括线程,并且其中与所述处理操作相关联的信息包括存储于一个或多个线程寄存器中的信息。
3.如权利要求1的管理器,其中所述多个处理器中的每个处理器包括:用于存储与所述处理器当前正在执行的处理操作相关联的信息的活动信息存储装置,以及用于存储当所述处理器变为可用时与所述处理器将要执行的处理操作相关联的信息的备用信息存储装置,并且,其中通过将所述信息从存储器传送到所述处理器的所述备用信息存储装置中,所述管理器将与处理操作相关联的所述信息传送到处理器。
4.如权利要求1或2的管理器,其中所述管理器被进一步配置为:确定所述处理操作的状态,并基于所述处理操作的状态确定所述信息是否将被传送到处理器。
5.如权利要求3的管理器,其中所述管理器被进一步配置为:确定与存储于每个处理器的所述备用信息存储装置中的信息相关联的每个处理操作的状态,以及通过在所述存储器和所述备用信息存储装置之间传送所述信息将所述信息传送给处理器,其中所述备用信息存储装置存储与具有特定状态的处理操作相关联的信息。
6.如权利要求1或2的管理器,其中所述管理器被进一步配置为:确定所述处理操作的优先级,并基于所述处理操作的优先级确定所述信息是否将被传送到处理器。
7.如权利要求3的管理器,其中所述管理器被进一步配置为:确定与存储于每个处理器的所述备用信息存储装置中的信息相关联的每个处理操作和所述处理操作的优先级,并且通过在所述存储器和备用信息存储装置之间传送所述信息将所述信息传送给处理器,在该备用信息存储装置中存储具有比所述处理操作更低优先级的处理操作相关联的信息。
8.如权利要求1的管理器,其中存储器被可操作地耦合至所述管理器并被配置为:存储与包括所述处理操作的一个或多个处理操作相关联的信息,并且其中所述管理器被配置为:将与所述一个或多个处理操作中的每一个相关联的信息传送给所述多个处理器中有能力接受用于执行的处理操作的处理器。
9.如权利要求8的管理器,其中所述管理器被进一步配置为:基于以下至少一个选择所述多个处理器中的处理器来传送与所述一个或多个处理操作中的每一个相关联的信息:
所述一个或多个处理操作的状态以及所述多个处理器当前正在执行的处理操作的状态;
所述一个或多个处理操作的优先级以及所述多个处理器当前正在执行的处理操作的优先级;
所述一个或多个处理操作的状态以及当所述多个处理器中的每个都变为可用时将要执行的任何处理操作的状态;
所述一个或多个处理操作的优先级以及当所述多个处理器中的每个都变为可用时将要执行的任何处理操作的优先级;以及
每个处理器当前是否正在执行处理操作。
10.一种***,包括:如权利要求1至3、5、和7至9中任一项的管理器;以及用于存储与包括所述处理操作的一个或多个处理操作相关联的信息的存储器。
11.一种***,包括:如权利要求10的***;以及所述多个处理器。
12.如权利要求11的***,其中所述管理器是利用所述多个处理器中的至少一个处理器实现的。
13.一种方法,包括如下步骤:
接收与软件处理操作相关联的信息,其中所述与处理操作相关联的信息已预先传送到用于执行所述处理操作的多个处理器中的处理器,以及
将所述信息传送到所述多个处理器中有能力来接受用于执行的所述处理操作的任何处理器。
14.如权利要求13的方法,其中所述处理操作包括线程,并且其中与所述处理操作相关联的信息包括存储于一个或多个线程寄存器中的信息。
15.如权利要求13的方法,其中所述多个处理器中的每个处理器包括:用于存储与所述处理器当前正在执行的处理操作相关联的信息的活动信息存储装置,以及用于存储当所述处理器变为可用时与所述处理器将要执行的处理操作相关联的信息的备用信息存储装置,并且其中传送包括将信息传送到所述处理器的所述备用信息存储装置中。
16.如权利要求15的方法,进一步包括:
确定与存储于每个处理器的所述备用信息存储装置中的信息相关联的每个处理操作的状态,
其中传送包括在存储器和备用信息存储装置之间传送所述信息,所述备用信息存储装置中存储与具有特定状态的处理操作相关联的信息。
17.如权利要求15的方法,进一步包括:
确定与存储于每个处理器的所述备用信息存储装置中的信息相关联的每个处理操作和所述处理操作的优先级,
其中传送包括在存储器和备用信息存储装置之间传送所述信息,在该备用信息存储装置中存储与具有比所述处理操作更低优先级的处理操作相关联的信息。
18.如权利要求13至17任一项的方法,还包括:对多个处理操作重复接收和传送。
19.如权利要求18的方法,进一步包括:基于以下至少一个选择处理器以将所述信息传送至所述处理器:
所述多个处理操作的状态以及所述多个处理器当前正在执行的处理操作的状态;
所述多个处理操作的优先级以及所述多个处理器当前正在执行的处理操作的优先级;
所述多个处理操作的状态以及当所述多个处理器中的每一个都变为可用时将要执行的任何处理操作的状态;
所述多个处理操作的优先级以及当所述多个处理器中的每个都变为可用时将要执行的任何处理操作的优先级;以及
每个处理器当前是否正在执行处理操作。
20.一种存储指令的机器可读介质,当执行所述指令时运行权利要求13至17中任一项的方法。
21.一种可操作地耦合至存储器和处理器的管理器,所述存储器用于存储与至少一个处理操作相关联的信息,所述处理器有权访问多个寄存器组,所述多个寄存器组用于存储与所述处理器当前正在执行的处理操作以及与在完成对当前处理操作的执行之后由所述处理器将要执行的一个或多个处理操作相关联的信息,所述管理器被配置为:确定存储在所述存储器中的信息是否将要传送到或者传送自所述多个寄存器组中的一个寄存器组,所述多个寄存器组用于存储所述一个或多个处理操作,并且倘若如此,则在所述存储器和所述寄存器组之间传送与处理操作相关联的信息。
22.如权利要求21的管理器,其中所述管理器配置为基于以下至少一个来确定信息是否将被传送:
与存储于所述存储器中的信息相关联的处理操作的状态以及所述一个或多个处理操作的状态;
与存储于所述存储器中的信息相关联的处理操作的优先级以及所述一个或多个处理操作的优先级;以及
所述处理器当前是否正在执行处理操作。
23.一种***,包括:如权利要求21或22的管理器;以及所述存储器。
24.一种***,包括:如权利要求23的***;以及所述处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/220,492 | 2005-09-06 | ||
US11/220,492 US20070055852A1 (en) | 2005-09-06 | 2005-09-06 | Processing operation management systems and methods |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1928811A true CN1928811A (zh) | 2007-03-14 |
Family
ID=37547056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101371983A Pending CN1928811A (zh) | 2005-09-06 | 2006-09-06 | 处理操作管理***和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070055852A1 (zh) |
EP (1) | EP1760581A1 (zh) |
CN (1) | CN1928811A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102099789A (zh) * | 2008-06-06 | 2011-06-15 | 苹果公司 | 多处理器的多维线程分组 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070055839A1 (en) | 2005-09-06 | 2007-03-08 | Alcatel | Processing operation information transfer control systems and methods |
KR100770034B1 (ko) * | 2006-03-02 | 2007-10-26 | 삼성전자주식회사 | 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템 |
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 |
US8713290B2 (en) | 2010-09-20 | 2014-04-29 | International Business Machines Corporation | Scaleable status tracking of multiple assist hardware threads |
US8793474B2 (en) | 2010-09-20 | 2014-07-29 | International Business Machines Corporation | Obtaining and releasing hardware threads without hypervisor involvement |
WO2013147914A1 (en) * | 2012-03-31 | 2013-10-03 | Intel Corporation | Controlling power management in micro-servers |
US20150213444A1 (en) * | 2014-04-07 | 2015-07-30 | Intercontinental Exchange Holdings, Inc. | Systems and methods for improving data processing and management |
US11061682B2 (en) * | 2014-12-15 | 2021-07-13 | Hyperion Core, Inc. | Advanced processor architecture |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5884077A (en) * | 1994-08-31 | 1999-03-16 | Canon Kabushiki Kaisha | Information processing system and method in which computer with high load borrows processor of computer with low load to execute process |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US5761506A (en) * | 1996-09-20 | 1998-06-02 | Bay Networks, Inc. | Method and apparatus for handling cache misses in a computer system |
US5956802A (en) * | 1997-04-11 | 1999-09-28 | Wagner Spray Tech Corporation | Painting apparatus and assembly |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US7376954B2 (en) * | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US7565653B2 (en) * | 2004-02-20 | 2009-07-21 | Sony Computer Entertainment Inc. | Methods and apparatus for processor task migration in a multi-processor system |
-
2005
- 2005-09-06 US US11/220,492 patent/US20070055852A1/en not_active Abandoned
-
2006
- 2006-09-05 EP EP06300924A patent/EP1760581A1/en not_active Withdrawn
- 2006-09-06 CN CNA2006101371983A patent/CN1928811A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102099789A (zh) * | 2008-06-06 | 2011-06-15 | 苹果公司 | 多处理器的多维线程分组 |
Also Published As
Publication number | Publication date |
---|---|
US20070055852A1 (en) | 2007-03-08 |
EP1760581A1 (en) | 2007-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10545789B2 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
CN1928811A (zh) | 处理操作管理***和方法 | |
US9678497B2 (en) | Parallel processing with cooperative multitasking | |
US8832174B2 (en) | System and method for dynamic task migration on multiprocessor system | |
US9146777B2 (en) | Parallel processing with solidarity cells by proactively retrieving from a task pool a matching task for the solidarity cell to process | |
CN112088355A (zh) | 多线程自调度处理器在本地或远程计算元件上的线程创建 | |
US8112559B2 (en) | Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment | |
US8171267B2 (en) | Method and apparatus for migrating task in multi-processor system | |
CN1664804A (zh) | 减少远程存储器对多节点计算机中共享数据的访问的机构 | |
CN113504985B (zh) | 一种任务处理方法以及网络设备 | |
CN1914597A (zh) | 处理单元的动态加载和卸载 | |
US8141089B2 (en) | Method and apparatus for reducing contention for computer system resources using soft locks | |
CN103635875A (zh) | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 | |
CN103547993A (zh) | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 | |
CN103067425A (zh) | 虚拟机创建方法、虚拟机管理***及相关设备 | |
US20230315526A1 (en) | Lock-free work-stealing thread scheduler | |
CN1975655A (zh) | 用于管理对存储装置的访问的方法和设备 | |
US8631086B2 (en) | Preventing messaging queue deadlocks in a DMA environment | |
JPH03113563A (ja) | マルチプロセッサスケジューリング方法 | |
EP1760580B1 (en) | Processing operation information transfer control system and method | |
CN102681890A (zh) | 一种应用于线程级推测并行的限制性值传递方法和装置 | |
US11392388B2 (en) | System and method for dynamic determination of a number of parallel threads for a request | |
CN101847128A (zh) | 管理tlb的方法和装置 | |
Lin et al. | GPU performance vs. thread-level parallelism: Scalability analysis and a novel way to improve TLP | |
Shen et al. | Adaptive two-level thread management for fast MPI execution on shared memory machines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |