CN100373342C - 在同时多线程处理机中用于线程同步的方法和系统 - Google Patents
在同时多线程处理机中用于线程同步的方法和系统 Download PDFInfo
- Publication number
- CN100373342C CN100373342C CNB200510124745XA CN200510124745A CN100373342C CN 100373342 C CN100373342 C CN 100373342C CN B200510124745X A CNB200510124745X A CN B200510124745XA CN 200510124745 A CN200510124745 A CN 200510124745A CN 100373342 C CN100373342 C CN 100373342C
- Authority
- CN
- China
- Prior art keywords
- threads
- multiline procedure
- processor
- procedure processor
- thread
- 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 82
- 230000001360 synchronised effect Effects 0.000 claims abstract description 30
- 230000004044 response Effects 0.000 claims description 23
- 238000004519 manufacturing process Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 5
- 230000005055 memory storage Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000003068 static effect 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
- Image Processing (AREA)
Abstract
提供一种方法、系统和制造物品,其中第一应用执行至少两个对应于同时多线程处理器的线程,所述处理器的资源由第一应用获得。在将同时多线程处理器让渡给第二应用之前,同步所述至少两个线程。
Description
技术领域
本发明涉及一种用于在同时多线程处理机(simultaneous multi-threadedprocessor machine)中同步线程的方法、系统和制造物品。
背景技术
同时多线程(SMT)处理器可以在每个处理器周期中执行来自多个线程的多条指令。SMT流程设计可以实现具有超标量(superscalar)处理器技术的硬件多线程,以允许在每个处理器周期中多个线程发出指令。与在任何给定的周期中只有单个硬件关联(hardware context)(即,线程)有效的其他硬件多线程架构不同,SMT流程设计可以允许所有的线程关联(thread context)同时竞争和共享SMT处理器的资源。相比于非SMT机,SMT机可以在多道程序和并行的环境中为多种应用提供更高的指令吞吐量和程序加速。
SMT机可以包括多个SMT处理器。可以使用多个SMT处理器处理运行在SMT机上的用户应用所产生的指令,其中用户应用可以在操作系统提供的操作环境下执行。超级管理程序(hypervisor)是向操作系统提供对SMT处理器、存储器和其他资源的存取的程序,从而操作系统可以允许用户应用执行。超级管理程序具有比操作系统更高的特权,可以用作操作系统和多个SMT处理器之间的接口。
发明内容
提供一种方法、系统和制造物品,其中第一应用执行至少两个对应于同时多线程处理器的线程,所述处理器的资源由第一应用获得。在将同时多线程处理器让渡给第二应用之前,同步所述至少两个线程。
在特定实施例中,在同步所述至少两个线程之后、让渡同时多线程处理器之前,挂起所述至少两个线程。
在另外的实施例中,第二应用具有比第一应用更高的特权级别,并且第二应用控制对包括该同时多线程处理器在内的多个同时多线程处理器的存取。在另外的实施例中,第一应用是在操作系统中实现的驱动程序,而第二应用是用于所述多个同时多线程处理器的超级管理程序。
在另外的实施例中,在执行所述至少两个线程之前,由第一应用获取同时多线程处理器的资源。在同步两个线程之前,由这两个线程轮询(poll)第二应用以确定第二应用是否需要该同时多线程处理器来执行。在另外的实施例中,将同时多线程处理器让渡给第二应用。在同时多线程处理器上由第二应用完成执行。在同时多线程处理器上由第二应用完成执行之后,继续执行所述至少两个同步的线程。
在另外的实施例中,该同时多线程处理器被包括在第二应用所控制的多个同时多线程处理器中,其中,执行与多个同时多线程处理器对应的多个线程集,其中,第一线程集中包括至少两个线程,并且在第二线程集之前第一线程集同步并且让渡同时多线程处理器。在另外的实施例中,响应于第二应用需要一个同时多线程处理器的确定,启动第一线程集的第一同步。响应于第二应用需要一个同时多线程处理器的确定,启动第二线程集的第二同步。响应于第一同步的完成而终止第二同步,并且继续执行第二线程集。
在另外的实施例中,至少两个线程的同步发生在所述至少两个线程没有保持任何锁定资源的时刻,并且所述同步防止共享资源被让渡给第二应用的同时多线程处理器锁定。
在另外的实施例中,所述至少两个线程在第一应用看来仿佛这两个线程在独立的处理器上执行,尽管这两个线程的实际执行是由同时多线程处理器上的至少两个硬件线程控制的。
在另外的实施例中,所述至少两个线程是对应于同时多线程处理器的至少两个硬件线程(hardware thread)的软件线程(software thread)。
附图说明
现在参照附图,其中在整个附图中相同的附图标记表示相应的部分:
图1图解根据特定实施例的计算环境的方框图;
图2图解根据特定实施例示出示范性驱动程序如何与p超级管理程序应用交互的方框图,p超级管理程序应用提供对多个SMT处理器的存取;
图3图解根据特定实施例示出如何响应于p超级管理程序应用的SMT处理时间的需要来同步驱动程序线程的方框图;
图4图解根据特定实施例的、用于响应于p超级管理程序应用的SMT处理时间的需要来同步驱动程序线程的操作;和
图5图解实现特定实施例的系统。
具体实施方式
在下面描述中将参照附图,附图构成这里的一部分并且图解了几个实施例。应当理解的是,可以使用其他实施例,并且可以进行结构和操作上的改变。
图1图解根据特定实施例的计算环境100的方框图。计算环境100包括计算设备102,计算设备102包括多个SMT处理器104a、104b、...、104n、操作系统106和超级管理程序108。
计算设备102可以包括具有多个SMT处理器的、任何适合的计算设备,包括本领域中目前公知的设备,例如,服务器、个人计算机、工作站、大型计算机、中型计算机、网络装置、存储服务器等。在特定实施例中,计算设备102可以包括能够具有多个SMT处理器的其他设备,例如,掌上计算机、电话设备、刀片计算机(blade computer)、手持计算机等。计算设备102可以作为存储区域网(SAN)、局域网(LAN)、内联网、因特网等的节点配置在计算环境100中。
SMT处理器104a、...、104n每个都能够执行多个硬件线程。例如,SMT处理器P1(附图标记104a)能够执行数个硬件线程110a,SMT处理器P2(附图标记104b)能够执行数个硬件线程110b,而SMT处理器P3(附图标记104n)能够执行数个硬件线程110n。硬件线程110a、110b、...、110n使用存储器和诸如包含在SMT处理器104a、...、104n中的浮点单元、整数单元之类的处理单元。每个SMT处理器每个周期可以执行来自多个线程的多条指令。然而,如果在同一SMT处理器中执行的两个线程共享共同的资源,则这两个线程可能不能在同一周期内执行要求共同资源的指令。例如,在特定实施例中,两个硬件线程可能不能在同一周期内使用SMT处理器的浮点单元。由于SMT处理器中能够执行多个硬件线程,实际上SMT处理器对操作系统106看来可能是多个处理器。
操作系统106是允许用户应用在计算设备102中执行的管理程序(supervisor program)。操作系统106可以是包括合适的驱动程序112的、任何适合的操作系统,驱动程序112允许操作系统使用超级管理程序108提供的SMT处理器104a、...、104n的资源。驱动程序112是被实现来在操作系统106中执行的应用。驱动程序112包括多个驱动程序线程114,其中可能存在与SMT处理器104a、...、104n的硬件线程110a、...、110n中包含的每个硬件线程对应的驱动程序线程。
超级管理程序以比操作系统106更高的特权级别执行,并且响应于操作系统106的要求,向操作系统提供存储器、处理器和SMT处理器104a、...、104n的其他资源。在超级管理程序108中执行的p超级管理程序(pHypervisor)116应用可以向操作系统106提供这些资源(例如,存储器、处理器等)中的某些。因此,在特定实施例中,与p超级管理程序116相关联的超级管理程序108管理SMT处理器104a、...、104n的处理器和存储器资源以供操作系统106使用。p超级管理程序116以比操作系统106更高的特权级别运行,并且可以以硬件、固件、微码或其组合来实现。
因此,图1图解了p超级管理程序116管理多个SMT处理器104a、...、104n以供运行在计算设备102中的操作系统的驱动程序112使用的实施例。
图2图解根据特定实施例示出示范性驱动程序112如何与p超级管理程序116交互的方框图,p超级管理程序提供对多个示范性SMT处理器104a、...、104n的存取。
在示范性实施例中,示范性SMT处理器104a、...、104n每个可以具有两个能够在一示范性SMT处理器内执行的硬件线程。例如,硬件线程1A(附图标记201a)和硬件线程1B(附图标记201b)可以在示范性SMT处理器P1(附图标记104a)中执行,硬件线程2A(附图标记202a)和硬件线程2B(附图标记202b)可以在示范性SMT处理器P2(附图标记104b)中执行,而硬件线程3A(附图标记203a)和硬件线程3B(附图标记203b)可以在示范性SMT处理器P3(附图标记104n)中执行。尽管示范性实施例仅仅示出每SMT处理器的两个硬件线程,但在替代实施例中每个SMT处理器可以有大量的硬件线程。另外,不同的SMT处理器可以执行不同数量的硬件线程。
对应于SMT处理器104a、...、104n中的硬件线程,在示范性驱动程序112中可以有驱动程序线程。例如,对应于在处理器P1(附图标记104a)中执行的两个硬件线程1A(附图标记201a)和1B(附图标记201b),可以存在在示范性驱动程序112中执行的两个驱动程序线程1A(附图标记204a)和1B(附图标记204b)。类似地,对应于在处理器P2(附图标记104b)中执行的两个硬件线程2A(附图标记202a)和2B(附图标记202b),可以存在在示范性驱动程序112中执行的两个驱动程序线程2A(附图标记205a)和2B(附图标记205b),以及对应于在处理器P3(附图标记104n)中执行的两个硬件线程3A(附图标记203a)和3B(附图标记203b),可以存在在示范性驱动程序112中执行的两个驱动程序线程3A(附图标记206a)和3B(附图标记206b)。
对应于每个SMT处理器的硬件线程对的驱动程序线程对允许示范性驱动程序112看起来仿佛是示范性驱动程序112在两个同时执行的处理器上的处理操作。例如,尽管这些驱动程序线程1A、1B(附图标记204a、204b)都使用同一SMT处理器P1(附图标记104a)的资源,但驱动程序线程1A(附图标记204a)和驱动程序线程1B(附图标记204b)可能看起来是同时在两个不同的处理器上运行。
然而在特定实施例中,用于向驱动程序112提供SMT处理器104a、...、104n的资源的p超级管理程序116可能要求SMT处理器上的处理时间。当p超级管理程序116在所选的SMT处理器上执行时,对应于所选的SMT处理器的驱动程序线程不能同时执行。例如,如果p超级管理程序116在所选的SMT处理器P2(附图标记104b)上执行,则当p超级管理程序116在所选的SMT处理器P2(附图标记104b)上执行时驱动程序线程2A、2B(附图标记205a、205b)不得不等待。
在特定实施例中,响应于p超级管理程序116要求一个用于执行的SMT处理器,至少一对驱动程序线程同步并让渡SMT处理器给p超级管理程序116。在p超级管理程序116不再需要SMT处理器之后,同步的驱动程序线程可以继续执行。
因此,图2图解了这样的特定实施例,其中,一对对应于SMT处理器的驱动程序线程同步并等待,直到p超级管理程序116不再要求对应于该对驱动程序线程的SMT处理器用来执行为止。在让渡SMT处理器给p超级管理程序116之前同步驱动程序线程可以防止作为保持锁定、竞争状态等的挂起的线程的结果,在驱动程序线程中出现对未挂起的线程不必要的等待。
图3图解根据特定实施例示出如何响应于p超级管理程序116的SMT处理时间的需要来同步驱动程序线程的方框图。
在示范性实施例中,每个驱动程序线程114可以周期性地轮询(附图标记300)p超级管理程序116,其中该轮询试图确定p超级管理程序116是否需要SMT处理器。例如,驱动程序线程1A、1B、2A、2B、3A、3B(附图标记204a、204b、205a、205b、206a、206b)每个可以以适当的时间间隔周期性地轮询(附图标记300)p超级管理程序116。
例如,在特定实施例中,p超级管理程序116可以被驱动程序线程1A(附图标记204a)和驱动程序线程3B(附图标记206b)轮询(附图标记302),并且可以向这两者响应p超级管理程序116需要SMT处理器。在特定实施例中,SMT处理器104a、...、104n中的任一个可能都适于满足p超级管理程序的处理需要。
在特定实施例中,驱动程序线程1A(附图标记204a)和驱动程序线程3B(附图标记206b)都接收指示p超级管理程序116需要SMT处理器的、对轮询操作的响应。作为响应,驱动程序线程1A(附图标记204a)开始(附图标记304a)同步驱动程序线程1A和1B(附图标记204a、204b)以便将相应的SMT处理器P1(附图标记104a)让渡给p超级管理程序116。同时,驱动程序线程3B(附图标记206b)开始(附图标记304b)同步驱动程序线程3A和3B(附图标记206a、206b)以便将相应的SMT处理器P3(附图标记104n)让渡给p超级管理程序116。因此,如果p超级管理程序116需要SMT处理器处理,则多个驱动程序线程对可以尝试尽快将SMT处理器让渡给p超级管理程序116,同时不会在执行驱动程序线程时导致竞争状态、不必要的等待等等。
在特定实施例中,驱动程序线程1A和1B(附图标记204a、204b)在驱动程序线程3B和3A(附图标记206b、206a)完成同步之前完成(附图标记306)同步。在这种情况下,接收到对轮询操作的响应的驱动程序线程1A(附图标记204a)向p超级管理程序116指示(附图标记308)SMT处理器P1(附图标记104a)可用于处理。
p超级管理程序116在SMT处理器P1(附图标记104a)上开始(附图标记310)处理操作,并且向所有新的和待决的(pending)轮询者(即,驱动程序线程)指示不需要另外的SMT处理器。驱动程序线程3A和3B(附图标记206a、206b)停止(附图标记312a)同步处理并使用SMT处理器P3(附图标记104n)继续处理。p超级管理程序116还可以向驱动程序线程1A(附图标记204a)响应(附图标记312b),指示p超级管理程序116完成对SMT处理器P1(附图标记104a)的使用。
在接收到来自p超级管理程序116的、指示完成对SMT处理器P1(附图标记104a)的使用的响应后,驱动程序线程1A和1B(附图标记204a、204b)继续处理。
因此,图3图解了这样的实施例,其中,响应于p超级管理程序116对一个用于处理的SMT处理器的需要,使用SMT处理器的资源的至少一对驱动程序线程在同步所述至少一对驱动程序线程的各个线程之后,让渡该SMT处理器给p超级管理程序116。
图4图解根据特定实施例的、用于响应于p超级管理程序116的SMT处理时间的需要来同步驱动程序线程的操作。图4所述的操作可以在p超级管理程序116和驱动程序线程114中实现。
控制在方框400开始,其中多个驱动程序线程114的每个驱动程序线程周期性轮询p超级管理程序116并且查询p超级管理程序116关于p超级管理程序116是否需要SMT处理器时间。
p超级管理程序116接收(在方框402)来自驱动程序线程的轮询请求。p超级管理程序116接收的轮询请求所来自的驱动程序线程可以称为“请求者”驱动程序线程。p超级管理程序116可以接收来自多个“请求者”驱动程序线程的轮询请求。
p超级管理程序116确定(在方框404)是否p超级管理程序116需要SMT处理器时间。如果不需要,则控制返回方框400。如果p超级管理程序116需要SMT处理时间,则相应的“请求者”驱动程序线程接收(在方框406)来自p超级管理程序116的、指示p超级管理程序116需要SMT处理器时间的响应。
对应于同一SMT处理器的所有驱动程序线程作为“请求者”驱动程序线程在驱动程序112中同步(在方框408),并且等待p超级管理程序116完成使用SMT处理器。可能其他“请求者”驱动程序线程也在并行地尝试完成同步。
“请求者”驱动程序线程将对应于驱动程序线程的SMT处理器让给(在方框410)p超级管理程序116。例如,驱动程序线程1A(附图标记204a)可以与驱动程序线程1B(附图标记204b)同步,并且将SMT处理器P1(附图标记104a)让给p超级管理程序116。设置(在方框412a)p超级管理程序116向已经让出SMT处理器的驱动程序线程之外的所有驱动程序线程响应不需要SMT处理器。并行于方框412a,p超级管理程序116在对应于“请求者”驱动程序线程的、让给的SMT处理器上执行(在方框412b)硬件线程。
在完成在让给的SMT处理器上的执行之后,p超级管理程序116向“请求者”驱动程序线程指示(在方框414)不再需要所让出的SMT处理器。“请求者”驱动程序线程和所有其他对应于所让出的SMT处理器的驱动程序线程继续(在方框416)执行。由于“请求者”驱动程序线程和所有其他对应于所让出的SMT处理器的驱动程序线程在让出处理器之前同步,因此在驱动程序线程当中,不存在竞争状态、执行次序错误、由于保持锁定的挂起的驱动程序线程引起的对未挂起的线程的等待等等。
因此,图4图解了这样的特定实施例,其中在同步对应于让出的SMT处理器的驱动程序线程之后,让给要求在SMT处理器上的处理器时间的p超级管理程序116一个SMT处理器。驱动程序线程并行执行,仿佛有对应于每个SMT处理器的多个处理器。然而,当p超级管理程序116需要SMT处理器时,只有在对应于该SMT处理器的驱动程序线程同步之后,SMT处理器才被独占地提供给p超级管理程序116处理。
在特定实施例中,在SMT环境中,由一个SMT处理器的单个中央处理单元(CPU)内核提供给操作系统多个线程。这多个线程逻辑上看来仿佛是线程在独立的处理器上执行。当SMT处理器让给p超级管理程序116时,这多个线程不随意地挂起执行。在SMT处理器专门让给超级管理程序116之前同步这多个线程。由于在同步的线程中让渡对资源的锁定,因此其他继续执行的线程不用不必要地等待锁定的资源。
额外实施例细节
所述的技术可以作为方法、装置或者包括软件、固件、微码、硬件和/或其任意组合的制造物品实现。这里使用的术语“制造物品”指的是以电路(例如集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)和/或诸如磁存储介质(例如硬盘驱动器、软盘、磁带等)、光存储(CD-ROM、光盘等)、易失性和非易失性存储设备(例如电可擦除只读存储器(EEPROM)、只读存储器(ROM)、可编程只读存储器(PROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、固件、可编程逻辑等)之类的计算机可读介质实现的程序指令、代码和/或逻辑。由诸如处理器之类的机器存取并执行计算机可读介质中的代码。在特定实施例中,实现实施例的代码还可以通过传输介质或通过网络从文件服务器存取。在这些情况中,实现代码的制造物品包括诸如网络传输线、无线传输介质、通过空间传播的信号、无线电波、红外信号之类的传输介质。当然,本领域技术人员应当认识到,可以在不背离实施例的范围的前提下进行许多修改,并且制造物品可以包括本领域中任何已知的信息承载介质。例如,制造物品包括其中存储有指令的存储介质,当机器执行指令时引起执行操作。
图5图解了可以实施特定实施例的系统500的方框图。在特定实施例中,计算设备102可以按照系统500实施。系统500可以包括电路502,在特定实施例中电路502可以包括处理器504。系统500还可以包括存储器500(例如,易失性存储设备)和存储装置508。系统500的特定元件可能或者不能在计算设备102中找到。存储装置508可以包括非易失性存储设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)、磁盘驱动器、光盘驱动器、磁带机等、存储装置508可以包括内部存储设备、外加的存储设备和/或网络可存取存储设备。系统500可以包括编程逻辑510,后者包括可以被加载到存储器506中并由处理器504(例如SMT处理器104a、...、104n中的任一个)或电路502执行的代码512。在特定实施例中,包括代码512的编程逻辑510可以存储在存储装置508中。因此,尽管图5分别示出编程逻辑510与其他元件,但编程逻辑510也可以在存储器506和/或电路502中实现。
特定实施例可以指向用于通过人或自动处理集成的计算机可读代码将计算指令配置到计算系统中的方法,其中,代码与计算系统结合能够执行所述实施例的操作。
图4所示的操作中的至少一些可以并行或顺序执行。在替代实施例中,可以以不同的顺序执行、修改或删除一些操作。
此外,为了说明起见,许多软件和硬件部件用单独的模块来描述。这些部分可以被集成为更少数量的部件,或者被分成更大数量的部件。此外,所述由特定的部件执行的一些操作可以由其他部件执行。
图1到5示出或参照的数据结构和部件被描述为具有特定类型的信息。在替代实施例中,数据结构和部件构造可以不同,并且相比图中所示出和参照的,可以具有更少、更多或不同的范围或者不同的功能。
因此,提供前述对实施例的描述是为了说明和描述目的。并不意欲穷举或限制实施例为所公开的精确形式。可以根据上述教导进行许多修改和变型。
Claims (22)
1.一种方法,包括:
由第一应用执行至少两个对应于同时多线程处理器的线程,所述处理器的资源由第一应用获得;以及
在将同时多线程处理器让渡给第二应用之前,同步所述至少两个线程。
2.如权利要求1所述的方法,其中,在同步所述至少两个线程之后、让渡同时多线程处理器之前,挂起所述至少两个线程。
3.如权利要求1所述的方法,其中,第二应用具有比第一应用更高的特权级别,并且第二应用控制对包括该同时多线程处理器在内的多个同时多线程处理器的存取。
4.如权利要求3所述的方法,其中,第一应用是在操作系统中实现的驱动程序,而第二应用是用于所述多个同时多线程处理器的超级管理程序。
5.如权利要求1所述的方法,还包括:
在执行所述至少两个线程之前,由第一应用获取同时多线程处理器的资源;以及
在同步两个线程之前,由这两个线程轮询第二应用以确定第二应用是否需要该同时多线程处理器来执行。
6.如权利要求5所述的方法,还包括:
将同时多线程处理器让渡给第二应用;
在同时多线程处理器上由第二应用完成执行;以及
在同时多线程处理器上由第二应用完成执行之后,继续执行所述至少两个同步的线程。
7.如权利要求1所述的方法,其中,该同时多线程处理器被包括在第二应用所控制的多个同时多线程处理器中,其中该方法还包括:
执行与多个同时多线程处理器对应的多个线程集,其中,第一线程集中包括至少两个线程,在第二线程集同步之前第一线程集同步并且让渡同时多线程处理器给第二应用。
8.如权利要求7所述的方法,该方法还包括:
响应于第二应用需要一个同时多线程处理器的确定,启动第一线程集的第一同步;
响应于第二应用需要一个同时多线程处理器的确定,启动第二线程集的第二同步;以及
响应于第一同步的完成而终止第二同步,并且继续执行第二线程集。
9.如权利要求1所述的方法,其中,至少两个线程的同步发生在所述至少两个线程没有保持任何锁定资源的时刻,并且所述同步防止共享资源被让渡给第二应用的同时多线程处理器锁定。
10.如权利要求1所述的方法,其中,所述至少两个线程在第一应用看来仿佛这两个线程在独立的处理器上执行,尽管这两个线程的实际执行是由同时多线程处理器上的至少两个硬件线程控制的。
11.如权利要求1所述的方法,其中,所述至少两个线程是对应于同时多线程处理器的至少两个硬件线程的软件线程。
12.一种系统,包括:
存储器;
连接到存储器的同时多线程处理器;和
连接到存储器的电路,其中该电路能够执行操作,该操作包括:
(i)由第一应用执行至少两个对应于同时多线程处理器的线程,所述处理器的资源由第一应用获得;以及
(ii)在将同时多线程处理器让渡给第二应用之前,同步所述至少两个线程。
13.如权利要求12所述的系统,其中,在同步所述至少两个线程之后、让渡同时多线程处理器之前,挂起所述至少两个线程。
14.如权利要求12所述的系统,其中,第二应用具有比第一应用更高的特权级别,并且第二应用控制对包括该同时多线程处理器在内的多个同时多线程处理器的存取。
15.如权利要求14所述的系统,其中,第一应用是在操作系统中实现的驱动程序,而第二应用是用于所述多个同时多线程处理器的超级管理程序。
16.如权利要求12所述的系统,所述操作还包括:
在执行所述至少两个线程之前,由第一应用获取同时多线程处理器的资源;以及
在同步两个线程之前,由这两个线程轮询第二应用以确定第二应用是否需要该同时多线程处理器来执行。
17.如权利要求16所述的系统,所述操作还包括:
将同时多线程处理器让渡给第二应用;
在同时多线程处理器上由第二应用完成执行;以及
在同时多线程处理器上由第二应用完成执行之后,继续执行所述至少两个同步的线程。
18.如权利要求12所述的系统,还包括:
由第二应用控制的多个同时多线程处理器,其中,该同时多线程处理器被包括在所述多个同时多线程处理器中,其中所述操作还包括:
执行与多个同时多线程处理器对应的多个线程集,其中,第一线程集中包括至少两个线程,在第二线程集同步之前第一线程集同步并且让渡同时多线程处理器给第二应用。
19.如权利要求18所述的系统,所述操作还包括:
响应于第二应用需要一个同时多线程处理器的确定,启动第一线程集的第一同步;
响应于第二应用需要一个同时多线程处理器的确定,启动第二线程集的第二同步;以及
响应于第一同步的完成而终止第二同步,并且继续执行第二线程集。
20.如权利要求12所述的系统,其中,至少两个线程的同步发生在所述至少两个线程没有保持任何锁定资源的时刻,并且所述同步防止共享资源被让渡给第二应用的同时多线程处理器锁定。
21.如权利要求12所述的系统,其中,所述至少两个线程在第一应用看来仿佛这两个线程在独立的处理器上执行,尽管这两个线程的实际执行是由同时多线程处理器上的至少两个硬件线程控制的。
22.如权利要求12所述的系统,其中,所述至少两个线程是对应于同时多线程处理器的至少两个硬件线程的软件线程。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/990,825 | 2004-11-16 | ||
US10/990,825 US8453157B2 (en) | 2004-11-16 | 2004-11-16 | Thread synchronization in simultaneous multi-threaded processor machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1776627A CN1776627A (zh) | 2006-05-24 |
CN100373342C true CN100373342C (zh) | 2008-03-05 |
Family
ID=36387967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200510124745XA Expired - Fee Related CN100373342C (zh) | 2004-11-16 | 2005-11-16 | 在同时多线程处理机中用于线程同步的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8453157B2 (zh) |
CN (1) | CN100373342C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8793689B2 (en) * | 2010-06-09 | 2014-07-29 | Intel Corporation | Redundant multithreading processor |
US8122167B1 (en) | 2010-08-06 | 2012-02-21 | International Business Machines Corporation | Polling in a virtualized information handling system |
US9652286B2 (en) | 2014-03-21 | 2017-05-16 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
US9471400B1 (en) | 2015-07-28 | 2016-10-18 | International Business Machines Corporation | Reentrant read-write lock algorithm |
US10489206B2 (en) * | 2016-12-30 | 2019-11-26 | Texas Instruments Incorporated | Scheduling of concurrent block based data processing tasks on a hardware thread scheduler |
US20190087713A1 (en) * | 2017-09-21 | 2019-03-21 | Qualcomm Incorporated | Compression of sparse deep convolutional network weights |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999021083A1 (en) * | 1997-10-23 | 1999-04-29 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
CN1407455A (zh) * | 2001-09-03 | 2003-04-02 | 松下电器产业株式会社 | 多处理器系统及程序最佳化方法 |
WO2003102758A1 (en) * | 2002-05-31 | 2003-12-11 | University Of Delaware | Method and apparatus for real-time multithreading |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0727445B2 (ja) * | 1990-09-04 | 1995-03-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータプロセッサ動作用ユーザインターフェイス |
US5490272A (en) * | 1994-01-28 | 1996-02-06 | International Business Machines Corporation | Method and apparatus for creating multithreaded time slices in a multitasking operating system |
US6766515B1 (en) * | 1997-02-18 | 2004-07-20 | Silicon Graphics, Inc. | Distributed scheduling of parallel jobs with no kernel-to-kernel communication |
US6952827B1 (en) * | 1998-11-13 | 2005-10-04 | Cray Inc. | User program and operating system interface in a multithreaded environment |
US7228549B2 (en) * | 1999-12-02 | 2007-06-05 | Ants Software, Inc. | Method and system for enhanced concurrency in a computing environment |
US6957432B2 (en) * | 2000-03-21 | 2005-10-18 | Microsoft Corporation | Real-time scheduler |
US6971084B2 (en) * | 2001-03-02 | 2005-11-29 | National Instruments Corporation | System and method for synchronizing execution of a batch of threads |
US6976155B2 (en) * | 2001-06-12 | 2005-12-13 | Intel Corporation | Method and apparatus for communicating between processing entities in a multi-processor |
US7251814B2 (en) * | 2001-08-24 | 2007-07-31 | International Business Machines Corporation | Yield on multithreaded processors |
TWI336848B (en) * | 2002-08-26 | 2011-02-01 | Interdigital Tech Corp | Wireless transmit/receive unit and method for providing a communication path between a plurality of operating systems in a wireless device |
JP2005004350A (ja) * | 2003-06-10 | 2005-01-06 | Sony Ericsson Mobilecommunications Japan Inc | リソース管理方法及び装置、リソース管理プログラム、記憶媒体 |
WO2005036806A2 (en) * | 2003-10-08 | 2005-04-21 | Unisys Corporation | Scalable partition memory mapping system |
US7496918B1 (en) * | 2004-06-01 | 2009-02-24 | Sun Microsystems, Inc. | System and methods for deadlock detection |
-
2004
- 2004-11-16 US US10/990,825 patent/US8453157B2/en not_active Expired - Fee Related
-
2005
- 2005-11-16 CN CNB200510124745XA patent/CN100373342C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999021083A1 (en) * | 1997-10-23 | 1999-04-29 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
CN1407455A (zh) * | 2001-09-03 | 2003-04-02 | 松下电器产业株式会社 | 多处理器系统及程序最佳化方法 |
WO2003102758A1 (en) * | 2002-05-31 | 2003-12-11 | University Of Delaware | Method and apparatus for real-time multithreading |
Also Published As
Publication number | Publication date |
---|---|
CN1776627A (zh) | 2006-05-24 |
US8453157B2 (en) | 2013-05-28 |
US20060107263A1 (en) | 2006-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10423451B2 (en) | Opportunistically scheduling and adjusting time slices | |
CN106716367B (zh) | 用于支持分布式数据网格中的动态线程池大小确定的系统和方法 | |
CN102365625B (zh) | 用于虚拟机的虚拟非一致存储器体系结构 | |
US9983903B2 (en) | Parallel execution of parsed query based on a concurrency level | |
US7814295B2 (en) | Moving processing operations from one MIMD booted SIMD partition to another to enlarge a SIMD partition | |
US7979674B2 (en) | Re-executing launcher program upon termination of launched programs in MIMD mode booted SIMD partitions | |
US7281075B2 (en) | Virtualization of a global interrupt queue | |
CN1316362C (zh) | 重定位在多线程计算机中共享的计算机数据的设备和方法 | |
CN102365626B (zh) | 用于虚拟机的虚拟非一致存储器体系结构 | |
CN100373342C (zh) | 在同时多线程处理机中用于线程同步的方法和系统 | |
US20070288941A1 (en) | Sharing kernel services among kernels | |
US7251814B2 (en) | Yield on multithreaded processors | |
US7810094B1 (en) | Distributed task scheduling for symmetric multiprocessing environments | |
US20170068574A1 (en) | Multiple pools in a multi-core system | |
CN1987794B (zh) | 改进计算机系统中的块分配时间的方法和装置 | |
CN101133396A (zh) | 用于在多处理器环境中管理对共享资源的存取的方法 | |
US11061729B2 (en) | Throttling logging processes | |
CN1766842A (zh) | 用于管理逻辑分区抢占的系统 | |
CN106528288A (zh) | 一种资源管理方法、装置和系统 | |
US20090024830A1 (en) | Executing Multiple Instructions Multiple Data ('MIMD') Programs on a Single Instruction Multiple Data ('SIMD') Machine | |
KR101848450B1 (ko) | 도커 기반의 매니코어 관리 방법 및 이를 수행하는 도커 기반의 매니코어 관리 장치 | |
CN111459622A (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
US8977752B2 (en) | Event-based dynamic resource provisioning | |
CA2382728A1 (en) | Efficient event waiting | |
Zhou et al. | Effective scheduling in a mixed parallel and sequential computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080305 |