CN101366004A - 用于带有专用线程管理的多核处理的方法和设备 - Google Patents
用于带有专用线程管理的多核处理的方法和设备 Download PDFInfo
- Publication number
- CN101366004A CN101366004A CNA2006800460456A CN200680046045A CN101366004A CN 101366004 A CN101366004 A CN 101366004A CN A2006800460456 A CNA2006800460456 A CN A2006800460456A CN 200680046045 A CN200680046045 A CN 200680046045A CN 101366004 A CN101366004 A CN 101366004A
- Authority
- CN
- China
- Prior art keywords
- thread
- instruction
- carry out
- processor core
- management unit
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 230000004044 response Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 230000001846 repelling effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised 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/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
-
- 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/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
在具有通过片上网络相互连接的处理单元、接口块、以及功能块的CMP上实现专用线程管理的方法和设备。在各种实施例中,线程管理在带外实现以允许快速、低延迟的线程切换,而不会产生与基于软件的线程管理线程相关的开销。
Description
相关申请的交叉引用
[0001]本申请要求共同未决的申请号为60/742,674,于2005年12月6日递交的美国临时申请的权益,该申请公开的全部内容通过引用包含在本申请中,如同在申请中全部公开一样。
技术领域
[0002]本发明涉及到通过多个处理器核执行计算机指令的方法和设备,特别涉及到使用专用线程管理以通过多个处理器核执行计算机指令。
背景技术
[0003]对各种应用(如多媒体、网络连接、以及高性能计算)的计算需求在复杂性和要处理的数据的量上都有所增加。与此同时,仅仅通过增加时钟速度来提高微处理器性能变得日益困难,这是因为相对于能耗以及所需的散热的增加,在性能改进方面其工艺技术上的改进现在已经达到了回报正日益减小的点。考虑到这些限制,并行处理开始成为在改进微处理器性能上的一种有希望的选择。
[0004]线程级并行(Thread-level parallelism,TLP)是一种并行处理技术,在该技术中,程序线程并发运行,提高了应用的整体性能。从广义上而言,存在两种形式的TLP:并发多线程(SMT),以及片上多处理器(CMP)。
[0005]SMT在一个处理单元上复制寄存器和程序计数器,使得多个线程的状态能被一次存储。在一个SMT处理器中,这些线程每次被部分执行,处理器在线程间快速地切换执行,提供了执行的虚拟并发。这种能力的获得以增加处理单元的复杂性、以及所复制的寄存器和计数器所需要的额外硬件为代价。此外,并发仍然是“虚拟的”——虽然该方法提供了快速的线程切换,但它并没有克服在任意给定的时间内只有一个线程被实际执行这一最基本的局限。
[0006]CMP包括至少两个处理单元,每个处理单元执行其自己的线程。与SMT处理器相比,CMP提供了真正的并发,但它的性能会潜在地受到当一个在指定处理单元上运行的线程需要切换时所产生的延迟的影响。这些现有技术CMP的基本问题是线程管理任务在CMP自身的一个或多个处理单元上以软件的方式执行,在很多情况下,要访问芯片外存储器以存储线程管理所必需的数据结构。这一机制减少了处理单元的数量以及线程执行所用到的存储器带宽。另外,由于线程管理任务本身是所要执行线程中的一个,因此在管理处理单元分配、调度线程的执行以及实时同步目标方面其能力受到制约。
[0007]最近,SMT和CMP在混合实现中被结合在一起,其中的多个SMT处理器被集成到一个芯片上。其结果是在线程处理中有大量的虚拟和实际的并行,但目前的混合实现并没有解决由带内(in-band)线程管理所带来的问题。
[0008]因此,需要一种通过将专用线程管理单元集成到多核处理器以克服现有技术的缺陷,从而提供改进的微处理器性能的方法和设备。
发明内容
[0009]本发明通过将专用线程管理集成到CMP克服了现有的SMT处理器和CMP的缺点,该CMP具有通过片上网络互相连接的处理单元、接口块、功能块。在这种体系结构中,带外发生的线程管理允许快速、低延迟的线程切换,而不产生与基于软件的线程管理线程相关的开销。
[0010]在一个方面,本发明提供了一种在一个具有多个处理器核的设备中实现多核虚拟的方法。至少一个调度指令与一个用于执行的指令被接收。响应所述的至少一个调度指令,所述的至少一个用于执行的指令被分配到一个处理器核去执行。在一个实施例中,分配该指令可以在带外进行。分配该至少一个指令可以包括从多个处理器核选择一个处理器核以执行该指令,以及分配该用于执行的指令到所选择的处理器核。该处理器核可以被选择,例如,从多个同质的处理器核中选择。处理器核的功率状态可以可选择地被改变。
[0011]在另一个实施例中,分配该指令包括识别与所要执行的指令相关的线程,以及分配所要执行的指令到与所识别的线程相关的处理器核。在又一个实施例中,分配该指令包括从多个处理器核中根据功率因素和热量分配因素中的至少一个选择用于执行的处理器核,以及分配至少一个用于执行的指令到所选择的处理器核。在再一个实施例中,分配该指令包括从多个处理器核中根据所存储的处理器状态信息选择用于执行的处理器核,以及分配至少一个用于执行的指令到所选择的处理器核。
[0012]在一个实施例中,接收至少一个用于执行的指令包括接收多个用于执行的线程,每个线程包括至少一个用于执行的指令,从所接收的多个用于执行的线程中选择一个,以及从所选择的线程接收至少一个用于执行的指令。
[0013]在各种实施例中,该方法可以包括多个可选择的步骤。该方法还可以包括从处理器核接收标志其已经执行了所分配的至少一个指令的消息。线程状态和信息或处理器核的状态可以被存储。在一个处理器核执行第一所分配的指令后,如果检测到线程间的依赖性,所执行的指令在第二所分配的指令执行后可以被再次分配,使得第一所分配的指令可以没有线程间依赖性地被再次执行。
[0014]在另一个方面,本发明提供了具有多个处理器核以及线程管理单元的设备,该设备接收用于执行的指令和调度指令,并分配用于执行的指令到处理器核以响应该调度指令。多个处理器核可以是同质的,并且线程管理单元可以只以硬件或以硬件和软件相结合的方式实现。可以以不同的速度运行的多个处理器核可以在一个网络中互相连接,或通过网络连接,该网络可以是光学的。该设备还可以包括至少一个外围设备。
[0015]线程管理单元可以包括一个或多个状态机,微处理器,以及专用存储器。该微处理器可以被专用于调度、线程管理、以及资源分配中的一个或多个。线程管理单元可以被专用于存储线程和资源信息。
[0016]在又一个方面,本发明提供了一种编译软件程序的方法。可编译的源代码语句被接收,以及与可编译源代码语句相应的机器可读目标代码语句被创建。增加机器可读目标代码语句,以通知线程管理单元分配所创建的机器可读目标代码语句到处理器核。
[0017]该方法还可以包括重复创建机器可读目标代码语句,从而提供多个所创建的机器可读目标代码语句以及所述多个语句的组合到多个线程中,每对线程通过边界相分离。在这个实施例中,所述增加用于通知线程管理单元的语句包括于线程间边界增加用于通知线程管理单元的机器可读目标代码语句。在又一个实施例中,所述增加用于通知线程管理单元的语句包括增加用于响应可编译源代码语句通知线程管理单元的机器可读目标代码语句,该可编译源代码语句标志了线程间的边界。
[0018]通过下面的描述、附图以及权利要求,本发明的前述以及其它特征和优点将会更为明显。
附图说明
[0019]本发明的优点通过参考以下附图并结合以下相应说明可以被更好地理解:
[0020]图1为在一个多核环境中提供了专用线程管理的本发明的一个实施例的框图;
[0021]图2为根据本发明在一个具有多个处理器核的设备中提供多核虚拟化方法的流程图;
[0022]图3为线程管理单元的一个实施例的框图;以及
[0023]图4为用于编译本发明的实施例中所采用的软件程序的方法的流程图。
[0024]在这些图中,相同的引用标记一般是指从不同角度所涉及的相同部分。这些图并不是必要地按比例画出,其重点应放在本发明的原则和概念上。
具体实施方式
[0025]本发明的实施例通过将专用线程管理集成到CMP克服了当前的多核技术的缺陷,该CMP具有互相连接的处理单元、接口块、功能块。可以只以硬件或以硬件和软件的结合实现线程管理,从而在无需基于软件的线程管理线程的开销下允许线程切换。
[0026]本发明的硬件实施例并不需要SMT方法中的复制的寄存器和程序计数器,使得它比SMT更简单而且更便宜,尽管在本发明的方法和设备中结合使用SMT能够带来额外的益处。使用片上网络以连接系统块,包括管理单元本身,提供了一种空间有效且可缩放的连接,该连接允许使用大量的处理单元和功能块,同时为功率消耗管理提供灵活性。该线程管理单元与功能块进行通信,管理处理单元,并在系统中进行资源分配、线程调度、以及目标同步。
[0027]本发明的实施例通过结合片上网络体系结构以一种成本有效的方式改进了线程级并行性,该体系结构将大量的处理单元集成到具有专用线程管理单元的单个集成电路中,该专用线程管理单元在带外运行,也就是,独立于任意的特定处理单元。在一个实施例中,线程管理单元完全以硬件实现,通常是带有其自己的专用存储器和具有到其它功能块的全局通路。在其他实施例中,线程管理单元可以被基本上或部分地以硬件实现。
[0028]在处理单元的片上网络中使用专用线程管理单元消除了现有SMT和CMP方法的固有开销,其中的线程管理由软件线程本身实现,导致了性能的全面改进。本发明的实施例认识到通过实现线程管理的全局性,而不是对特定处理单元的局部性,可以比现有的SMT方法在执行上有更多的并行性。线程管理的全局化也提供了更好的资源分配、更高的处理器利用率、以及全局的功率管理。
体系结构
[0029]参考图1,本发明的一个典型实施例包括至少两个处理单元100、线程管理单元104、片上网络互连108,以及一些可选择的组件,例如包括功能块112,这些功能块可以例如是外部接口,其具有网络接口单元(未明确显示),例如是具有网络接口单元(同样没有明确显示)的外部存储器接口116。
[0030]每个处理单元100包括,例如,微处理器核、数据和指令高速缓存、以及网络接口单元。正如图2中的描述,线程管理单元104的实施例典型地包括微处理器核或状态机200、专用存储器204,以及网络接口单元208。网络互连108典型地包括至少一个路由器120以及连接路由器120到处理单元100的网络接口单元或网络上的其它功能块112的信号线。
[0031]任意节点,如处理器100或功能块112,采用片上网络结构108,能够与任意的其它节点通信。这一体系结构允许在一个芯片上存在大量的节点,例如图1所示的实施例具有16个处理单元100。每个处理单元100具有带有局部缓冲高速存储器和网络接口单元的微处理器核。大量的处理单元提供了更高水平的并行计算性能。通过片上网络体系108与带外的、专用线程管理单元104的结合允许在一个集成电路上实现大量的处理单元。
[0032]在一个典型的实施例中,节点间的通信通过网络108以将消息作为数据包发送的形式发生,其中包括命令、数据、或命令和数据的组合。
线程管理单元
[0033]在运行中,当处理器被初始化时,线程管理单元开始执行,并分配其中的一个处理单元从存储器获取程序指令并执行。例如,参考图3,线程管理单元在响应至少一个调度指令以分配用于执行的程序指令(步骤308)前,可以接收至少一个所述调度指令(步骤300)和至少一个程序指令(步骤304)。
[0034]如果,当执行所分配的指令时,处理单元遇到一个要产生另一个线程的程序指令,它通过网络发送消息到线程管理单元。在收到该消息后(步骤300’),假如其它处理单元是可用的,线程管理单元为该新线程分配另一个处理单元以获取并执行指令(步骤308’)。按照此类方式,多个线程可以在多个处理单元上并发地被执行直到不再有可由线程管理单元分配的未决线程或不再有可用的处理单元。当没有可用的处理单元可被分配时,线程管理单元将会在存储器内的一个运行队列中存储额外的线程。
[0035]在一些情况下,线程管理单元中的调度逻辑可以中断正在执行的线程并用一个具有更高优先级的线程取代。在这种情况下,被中断的线程将会被插入到运行队列中使得当一个处理单元变为可用状态时,该线程能被重新运行。
[0036]当一个给定的处理单元完成与所分配的线程相关联的指令的执行时,该处理单元发送一个消息到线程管理单元,标志它现在已经空闲(步骤300”)。线程管理单元现在可以分配一个新的线程到空闲的处理单元中执行(步骤308”)并且这一处理过程只要存在需要执行的线程就将被重复进行。在一些实施例中,线程管理单元可以空置一个空闲的处理单元以减少总体的功率消耗,或者在一些情况下可以将一个正在执行的线程从一个物理的处理单元移到另一个以改善能量负载的分配和热量的散发。
[0037]线程管理单元另外还监视芯片上的处理单元和功能块的状态以检测任何的停止状况,也就是说,其中的一个处理单元等待另一个处理单元或功能块以执行指令。线程管理单元还跟踪各个线程的状态,例如,像运行、睡眠、等待。线程状态信息被存储在管理单元的本地存储器中并被管理单元使用,以在线程执行的调度中做出决定。
[0038]采用已知的线程状态和调度规则,例如,可以包括优先级、关联性(affinity)或公平性的任意组合,线程管理单元发送消息到特定处理单元以执行来自存储器指定位置的指令。因此,任意处理单元的运行在任意给定的时间,基于由线程管理单元所作出的决定,能以极小的延迟做出改变。这些由线程管理单元所使用的调度规则是可配置的,例如,在启动时进行配置(boot-up)。
[0039]进一步参考图2,线程管理单元104的某些实施例可以选择性地包含中断控制器208和系统计时器/计数器212。在一些实施例中,线程管理单元104首先接收所有的中断,然后分发一个合适的消息到合适的处理单元或功能块112以处理该中断。
[0040]线程管理单元也可以支持线程和系统资源(如功能块或外部接口)间的关联性(affinity),以及线程间的关联性。例如,线程可以被编译器或与特定处理单元、功能块、或其它线程相关联的最终用户指定。线程管理单元利用线程的关联性来优化处理单元的分配,例如,减少运行特定线程的第一处理单元和与所述第一处理单元具有关联性的处理单元或系统资源间的物理距离。
[0041]由于线程管理单元并没有与任何特定的处理单元相关联,而是该片上网络中的自治节点,因此线程管理在带外执行。这一方法较在带内处理线程管理(或者作为软件线程或者作为与特定处理单元相关的硬件)的传统线程管理机制具有几个优点。首先,带外管理对于任何的处理单元都不产生线程管理开销,解放了处理单元去处理计算任务。第二,由于在整个片上网络上管理线程和片上资源而非局部管理,它提供了更好的资源分配和使用,并改进了效率和性能。第三,片上网络和集中的调度和同步机制的结合允许多核体系结构扩展到成千上万个处理单元。最后,带外的线程管理单元也能空置系统资源以降低功率消耗。
[0042]如图3所示,线程管理单元104包括用于存储信息的专用存储器204,这些信息为执行对线程的调度和管理所需要。存储在存储器204中的信息可以包括:要调度执行的线程的队列,各种处理单元和功能单元的状态,各种被执行的线程的状态,任一锁、互斥锁、或共享的对象的占有权和访问权,以及信号量。由于该专用存储器204被直接连接到位于线程管理单元104中的微处理器或状态机200,线程管理单元104能够在无需访问共享或片外存储器的情况下执行它的功能。这导致了调度和管理任务的更快执行,也保证了执行调度或管理操作时所需要的时钟周期的数目。
软件开发过程
[0043]处理单元的片上网络和专用线程管理单元的组合允许线程管理过程能被有效率地管理而无需来自软件开发者的任何明确指示。因此,软件开发者能够利用新的或现有的多线程软件应用,并在不修改该应用本身的底层源代码的情况下,为了在本发明实施例上执行,用专用的编译器、专用的连接器、或者上述两者,处理该应用。
[0044]参考图4,在一个实施例中,专用的编译器或连接器将可编译源代码语句(步骤400)切换成与该源代码语句相应的且由位于片上网络的处理器可作为线程执行的一个或多个机器可读目标代码语句(步骤404)。专用的编译器或连接器也添加了特定的机器可读目标代码语句,所述语句通知处理单元开始执行与新线程相关的指令(步骤408)。这些特定语句可以被放置在例如线程间的边界处,该边界或者由编译器或连接器自动识别,或者由开发者特别指定。
[0045]可选的,编译器或预处理器可以执行静态代码分析以提取并向开发者提供关于并行性的附加时机。使用并行性的附加时机能通过对用于更高层次语言(如JAVA)的运行时虚拟机的实现被实现。
[0046]由此可见,前面描述了一种采用专用线程管理的多核处理的高优越性的方法。此处所用的术语和表达被作为描述而非限制,采用上述术语和表达也不是为了排斥与任何所显示、描述的特征或其部分相等价的内容,但应当认识到各种可能的修改在本发明的权利要求范围内都是可能的。
Claims (29)
1.一种在具有多个处理器核的设备中用于多核虚拟化的方法,该方法包括:
接收至少一个调度指令;
接收至少一个用于执行的指令;以及
响应所述的至少一个调度指令,分配所述的至少一个用于执行的指令到处理器核执行。
2.根据权利要求1所述的方法,其特征在于,所述分配所述至少一个指令在带外进行。
3.根据权利要求1所述的方法,其特征在于,所述的分配所述的至少一个指令包括:
从多个处理器核中选择一个用于执行的处理器核;以及
分配至少一个用于执行的指令到所选定的处理器核。
4.根据权利要求3所述的方法,其特征在于,所述的选择处理器核包括从多个同质的处理器核选择一个用于执行的处理器核。
5.根据权利要求1所述的方法,其特征在于,所述的分配所述的至少一个指令包括:
识别与所述的至少一个用于执行的指令相关的线程;以及
分配至少一个用于执行的指令到与所识别的线程相关的处理器核。
6.根据权利要求1所述的方法,其特征在于,还包括改变处理器核的功率状态。
7.根据权利要求1所述的方法,其特征在于,所述的分配所述的至少一个指令包括:
利用功率因素和热量分配因素中的至少一个从多个处理器核选择一个用于执行的处理器核;以及
分配至少一个用于执行的指令到所选择的处理器核。
8.根据权利要求1所述的方法,其特征在于,还包括从处理器核接收标志其已经执行了所分配的至少一个指令的消息。
9.根据权利要求1所述的方法,其特征在于,还包括存储处理器核的状态。
10.根据权利要求1所述的方法,其特征在于,还包括存储线程状态和信息。
11.根据权利要求9所述的方法,其特征在于,所述的分配所述的至少一个指令包括:
利用所存储的处理器状态信息从多个处理器核中选择一个用于执行的处理器核;以及
分配至少一个用于执行的指令到所选择的处理器核。
12.根据权利要求1所述的方法,其特征在于,所述的接收至少一个用于执行的指令包括:
接收多个用于执行的线程,每个线程包括至少一个用于执行的指令;
从所接收的多个用于执行的线程中选择一个;以及
从所选择的线程中接收至少一个用于执行的指令。
13.根据权利要求1所述的方法,其特征在于,还包括
处理器核执行第一所分配的指令后检测线程间依赖性;以及
在执行第二所分配的指令后再次分配所执行的指令,其中所述的第二所分配的指令的执行允许没有线程间依赖性地再次执行第一所分配的指令。
14.一种设备,包括:
多个处理器核;以及
线程管理单元,
其中,所述的线程管理单元接收用于执行的指令以及调度指令;以及
线程管理单元分配用于执行的指令到处理器核以响应调度指令。
15.根据权利要求14所述的设备,其特征在于,所述的多个处理器核是同质的。
16.根据权利要求14所述的设备,其特征在于,所述的线程管理单元完全以硬件实现。
17.根据权利要求14所述的设备,其特征在于,所述的线程管理单元以硬件和软件实现。
18.根据权利要求14所述的设备,其特征在于,所述的处理器核在一个网络中互相连接。
19.根据权利要求14所述的设备,其特征在于,所述的处理器核通过网络连接。
20.根据权利要求14所述的设备,其特征在于,所述的处理器核通过一个光学网络互相连接。
21.根据权利要求14所述的设备,其特征在于,所述的线程管理单元包括状态机。
22.根据权利要求14所述的设备,其特征在于,所述的线程管理单元包括被专用于调度、线程管理、以及资源分配中的一个或多个的微处理器。
23.根据权利要求14所述的设备,其特征在于,所述的线程管理单元包括用于存储线程和资源信息的专用存储器。
24.根据权利要求14所述的设备,其特征在于,还包括至少一个外围设备。
25.根据权利要求14所述的设备,其特征在于,所述的多个处理器核中的至少两个以不同的速度运行。
26.一种编译软件程序的方法,该方法包括:
接收可编译的源代码语句;
创建与可编译源代码语句相应的机器可读目标代码语句;以及
增加机器可读目标代码语句以用于通知线程管理单元分配所创建的机器可读目标代码语句到处理器核。
27.根据权利要求26所述的方法,其特征在于,还包括:
重复创建机器可读目标代码语句,以提供多个所创建的机器可读目标代码语句;以及
组合所述多个语句到多个线程中,每对线程通过边界相分离。
28.根据权利要求27所述的方法,其特征在于,所述的增加用于通知线程管理单元的语句包括于线程间边界增加用于通知线程管理单元的机器可读目标代码语句。
29.根据权利要求26所述的方法,其特征在于,所述的增加用于信号通知线程管理单元的语句包括增加用于响应标志线程间边界的可编译源代码语句通知线程管理单元的机器可读目标代码语句。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74267405P | 2005-12-06 | 2005-12-06 | |
US60/742,674 | 2005-12-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101366004A true CN101366004A (zh) | 2009-02-11 |
Family
ID=37714655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800460456A Pending CN101366004A (zh) | 2005-12-06 | 2006-12-06 | 用于带有专用线程管理的多核处理的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20070150895A1 (zh) |
EP (1) | EP1963963A2 (zh) |
JP (1) | JP2009519513A (zh) |
CN (1) | CN101366004A (zh) |
WO (1) | WO2007067562A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017020588A1 (en) * | 2015-07-31 | 2017-02-09 | Huawei Technologies Co., Ltd. | Apparatus and method for allocating resources to threads to perform a service |
CN106462939A (zh) * | 2014-06-30 | 2017-02-22 | 英特尔公司 | 可缩放gpu中的数据分布组构 |
CN106557367A (zh) * | 2015-09-30 | 2017-04-05 | 联想(新加坡)私人有限公司 | 用于为计算资源提供粒度化服务质量的装置、方法和设备 |
CN109522112A (zh) * | 2018-12-27 | 2019-03-26 | 杭州铭展网络科技有限公司 | 一种数据采集系统 |
CN113227917A (zh) * | 2019-12-05 | 2021-08-06 | Mzta科技中心有限公司 | 模块化plc自动配置系统 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007299334A (ja) * | 2006-05-02 | 2007-11-15 | Sony Computer Entertainment Inc | 情報処理システム及びコンピュータの制御方法 |
US8055951B2 (en) * | 2007-04-10 | 2011-11-08 | International Business Machines Corporation | System, method and computer program product for evaluating a virtual machine |
US20080307422A1 (en) * | 2007-06-08 | 2008-12-11 | Kurland Aaron S | Shared memory for multi-core processors |
US8059670B2 (en) * | 2007-08-01 | 2011-11-15 | Texas Instruments Incorporated | Hardware queue management with distributed linking information |
US7886172B2 (en) * | 2007-08-27 | 2011-02-08 | International Business Machines Corporation | Method of virtualization and OS-level thermal management and multithreaded processor with virtualization and OS-level thermal management |
US8245232B2 (en) * | 2007-11-27 | 2012-08-14 | Microsoft Corporation | Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems |
CN101236576B (zh) * | 2008-01-31 | 2011-12-07 | 复旦大学 | 一种适用于异质可重构处理器的互联模型 |
CN101227486B (zh) * | 2008-02-03 | 2010-11-17 | 浙江大学 | 适合于多处理器片上网络的传输协议 |
US8223779B2 (en) * | 2008-02-07 | 2012-07-17 | Ciena Corporation | Systems and methods for parallel multi-core control plane processing |
GB0808576D0 (en) * | 2008-05-12 | 2008-06-18 | Xmos Ltd | Compiling and linking |
US8561073B2 (en) * | 2008-09-19 | 2013-10-15 | Microsoft Corporation | Managing thread affinity on multi-core processors |
US8140832B2 (en) * | 2009-01-23 | 2012-03-20 | International Business Machines Corporation | Single step mode in a software pipeline within a highly threaded network on a chip microprocessor |
US8271809B2 (en) * | 2009-04-15 | 2012-09-18 | International Business Machines Corporation | On-chip power proxy based architecture |
US8650413B2 (en) * | 2009-04-15 | 2014-02-11 | International Business Machines Corporation | On-chip power proxy based architecture |
US9164969B1 (en) * | 2009-09-29 | 2015-10-20 | Cadence Design Systems, Inc. | Method and system for implementing a stream reader for EDA tools |
KR101191530B1 (ko) | 2010-06-03 | 2012-10-15 | 한양대학교 산학협력단 | 복수의 이종 코어를 포함하는 멀티코어 프로세서 시스템 및 그 제어 방법 |
US8527970B1 (en) * | 2010-09-09 | 2013-09-03 | The Boeing Company | Methods and systems for mapping threads to processor cores |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US8954546B2 (en) | 2013-01-25 | 2015-02-10 | Concurix Corporation | Tracing with a workload distributor |
US20130283281A1 (en) | 2013-02-12 | 2013-10-24 | Concurix Corporation | Deploying Trace Objectives using Cost Analyses |
US8924941B2 (en) | 2013-02-12 | 2014-12-30 | Concurix Corporation | Optimization analysis using similar frequencies |
US8997063B2 (en) | 2013-02-12 | 2015-03-31 | Concurix Corporation | Periodicity optimization in an automated tracing system |
US9665474B2 (en) | 2013-03-15 | 2017-05-30 | Microsoft Technology Licensing, Llc | Relationships derived from trace data |
US10423216B2 (en) * | 2013-03-26 | 2019-09-24 | Via Technologies, Inc. | Asymmetric multi-core processor with native switching mechanism |
US9575874B2 (en) | 2013-04-20 | 2017-02-21 | Microsoft Technology Licensing, Llc | Error list and bug report analysis for configuring an application tracer |
US9292415B2 (en) | 2013-09-04 | 2016-03-22 | Microsoft Technology Licensing, Llc | Module specific tracing in a shared module environment |
WO2015071778A1 (en) | 2013-11-13 | 2015-05-21 | Concurix Corporation | Application execution path tracing with configurable origin definition |
CN103838631B (zh) * | 2014-03-11 | 2017-04-19 | 武汉科技大学 | 一种面向片上网络的多线程调度实现方法 |
JP2018514868A (ja) | 2015-04-30 | 2018-06-07 | マイクロチップ テクノロジー インコーポレイテッドMicrochip Technology Incorporated | 改良された命令セットを有する中央処理ユニット |
US10860374B2 (en) * | 2015-09-26 | 2020-12-08 | Intel Corporation | Real-time local and global datacenter network optimizations based on platform telemetry data |
US9519583B1 (en) * | 2015-12-09 | 2016-12-13 | International Business Machines Corporation | Dedicated memory structure holding data for detecting available worker thread(s) and informing available worker thread(s) of task(s) to execute |
CN108462658B (zh) | 2016-12-12 | 2022-01-11 | 阿里巴巴集团控股有限公司 | 对象分配方法及装置 |
US10614406B2 (en) | 2018-06-18 | 2020-04-07 | Bank Of America Corporation | Core process framework for integrating disparate applications |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2882475B2 (ja) * | 1996-07-12 | 1999-04-12 | 日本電気株式会社 | スレッド実行方法 |
US5956748A (en) * | 1997-01-30 | 1999-09-21 | Xilinx, Inc. | Asynchronous, dual-port, RAM-based FIFO with bi-directional address synchronization |
US6044453A (en) * | 1997-09-18 | 2000-03-28 | Lg Semicon Co., Ltd. | User programmable circuit and method for data processing apparatus using a self-timed asynchronous control structure |
US6275831B1 (en) * | 1997-12-16 | 2001-08-14 | Starfish Software, Inc. | Data processing environment with methods providing contemporaneous synchronization of two or more clients |
US6115646A (en) * | 1997-12-18 | 2000-09-05 | Nortel Networks Limited | Dynamic and generic process automation system |
US6134675A (en) * | 1998-01-14 | 2000-10-17 | Motorola Inc. | Method of testing multi-core processors and multi-core processor testing device |
US6272616B1 (en) * | 1998-06-17 | 2001-08-07 | Agere Systems Guardian Corp. | Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths |
US6269425B1 (en) * | 1998-08-20 | 2001-07-31 | International Business Machines Corporation | Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system |
US6449622B1 (en) * | 1999-03-08 | 2002-09-10 | Starfish Software, Inc. | System and methods for synchronizing datasets when dataset changes may be received out of order |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6247135B1 (en) * | 1999-03-03 | 2001-06-12 | Starfish Software, Inc. | Synchronization process negotiation for computing devices |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6578065B1 (en) * | 1999-09-23 | 2003-06-10 | Hewlett-Packard Development Company L.P. | Multi-threaded processing system and method for scheduling the execution of threads based on data received from a cache memory |
US6629271B1 (en) * | 1999-12-28 | 2003-09-30 | Intel Corporation | Technique for synchronizing faults in a processor having a replay system |
US6550020B1 (en) * | 2000-01-10 | 2003-04-15 | International Business Machines Corporation | Method and system for dynamically configuring a central processing unit with multiple processing cores |
US6694336B1 (en) * | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US6922417B2 (en) * | 2000-01-28 | 2005-07-26 | Compuware Corporation | Method and system to calculate network latency, and to display the same field of the invention |
US6931641B1 (en) * | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
US20050055382A1 (en) * | 2000-06-28 | 2005-03-10 | Lounas Ferrat | Universal synchronization |
US6691216B2 (en) * | 2000-11-08 | 2004-02-10 | Texas Instruments Incorporated | Shared program memory for use in multicore DSP devices |
US6895479B2 (en) * | 2000-11-15 | 2005-05-17 | Texas Instruments Incorporated | Multicore DSP device having shared program memory with conditional write protection |
US8762581B2 (en) * | 2000-12-22 | 2014-06-24 | Avaya Inc. | Multi-thread packet processor |
US6665755B2 (en) * | 2000-12-22 | 2003-12-16 | Nortel Networks Limited | External memory engine selectable pipeline architecture |
US8463744B2 (en) * | 2001-01-03 | 2013-06-11 | International Business Machines Corporation | Method and system for synchronizing data |
US6976155B2 (en) * | 2001-06-12 | 2005-12-13 | Intel Corporation | Method and apparatus for communicating between processing entities in a multi-processor |
US7320011B2 (en) * | 2001-06-15 | 2008-01-15 | Nokia Corporation | Selecting data for synchronization and for software configuration |
US20030005380A1 (en) * | 2001-06-29 | 2003-01-02 | Nguyen Hang T. | Method and apparatus for testing multi-core processors |
JP3661614B2 (ja) * | 2001-07-12 | 2005-06-15 | 日本電気株式会社 | キャッシュメモリ制御方法及びマルチプロセッサシステム |
US7134002B2 (en) * | 2001-08-29 | 2006-11-07 | Intel Corporation | Apparatus and method for switching threads in multi-threading processors |
US6779065B2 (en) * | 2001-08-31 | 2004-08-17 | Intel Corporation | Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads |
JP3708853B2 (ja) * | 2001-09-03 | 2005-10-19 | 松下電器産業株式会社 | マルチプロセッサシステムおよびプログラム制御方法 |
US6681274B2 (en) * | 2001-10-15 | 2004-01-20 | Advanced Micro Devices, Inc. | Virtual channel buffer bypass for an I/O node of a computer system |
US7248585B2 (en) * | 2001-10-22 | 2007-07-24 | Sun Microsystems, Inc. | Method and apparatus for a packet classifier |
US6804632B2 (en) * | 2001-12-06 | 2004-10-12 | Intel Corporation | Distribution of processing activity across processing hardware based on power consumption considerations |
US7500240B2 (en) * | 2002-01-15 | 2009-03-03 | Intel Corporation | Apparatus and method for scheduling threads in multi-threading processors |
US7069442B2 (en) * | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US20030229740A1 (en) * | 2002-06-10 | 2003-12-11 | Maly John Warren | Accessing resources in a microprocessor having resources of varying scope |
US20040019722A1 (en) * | 2002-07-25 | 2004-01-29 | Sedmak Michael C. | Method and apparatus for multi-core on-chip semaphore |
US6976131B2 (en) * | 2002-08-23 | 2005-12-13 | Intel Corporation | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
US20040049628A1 (en) * | 2002-09-10 | 2004-03-11 | Fong-Long Lin | Multi-tasking non-volatile memory subsystem |
US7076609B2 (en) * | 2002-09-20 | 2006-07-11 | Intel Corporation | Cache sharing for a chip multiprocessor or multiprocessing system |
US7089340B2 (en) * | 2002-12-31 | 2006-08-08 | Intel Corporation | Hardware management of java threads utilizing a thread processor to manage a plurality of active threads with synchronization primitives |
US7020748B2 (en) * | 2003-01-21 | 2006-03-28 | Sun Microsystems, Inc. | Cache replacement policy to mitigate pollution in multicore processors |
US7146514B2 (en) * | 2003-07-23 | 2006-12-05 | Intel Corporation | Determining target operating frequencies for a multiprocessor system |
US7873785B2 (en) * | 2003-08-19 | 2011-01-18 | Oracle America, Inc. | Multi-core multi-thread processor |
US20050108704A1 (en) * | 2003-11-14 | 2005-05-19 | International Business Machines Corporation | Software distribution application supporting verification of external installation programs |
US20050125582A1 (en) * | 2003-12-08 | 2005-06-09 | Tu Steven J. | Methods and apparatus to dispatch interrupts in multi-processor systems |
US7391776B2 (en) * | 2003-12-16 | 2008-06-24 | Intel Corporation | Microengine to network processing engine interworking for network processors |
US20050154573A1 (en) * | 2004-01-08 | 2005-07-14 | Maly John W. | Systems and methods for initializing a lockstep mode test case simulation of a multi-core processor design |
US8533716B2 (en) * | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US20060095905A1 (en) * | 2004-11-01 | 2006-05-04 | International Business Machines Corporation | Method and apparatus for servicing threads within a multi-processor system |
US9063785B2 (en) * | 2004-11-03 | 2015-06-23 | Intel Corporation | Temperature-based thread scheduling |
US20060107262A1 (en) * | 2004-11-03 | 2006-05-18 | Intel Corporation | Power consumption-based thread scheduling |
US7765547B2 (en) * | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
JP4606142B2 (ja) * | 2004-12-01 | 2011-01-05 | 株式会社ソニー・コンピュータエンタテインメント | スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム |
CN101116057B (zh) * | 2004-12-30 | 2011-10-05 | 英特尔公司 | 在多个指令定序器上基于指令集的线程执行机制 |
US8230423B2 (en) * | 2005-04-07 | 2012-07-24 | International Business Machines Corporation | Multithreaded processor architecture with operational latency hiding |
-
2006
- 2006-12-06 CN CNA2006800460456A patent/CN101366004A/zh active Pending
- 2006-12-06 JP JP2008544448A patent/JP2009519513A/ja active Pending
- 2006-12-06 WO PCT/US2006/046438 patent/WO2007067562A2/en active Application Filing
- 2006-12-06 EP EP06839037A patent/EP1963963A2/en not_active Withdrawn
- 2006-12-06 US US11/634,512 patent/US20070150895A1/en not_active Abandoned
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462939A (zh) * | 2014-06-30 | 2017-02-22 | 英特尔公司 | 可缩放gpu中的数据分布组构 |
US10346946B2 (en) | 2014-06-30 | 2019-07-09 | Intel Corporation | Data distribution fabric in scalable GPUs |
US10580109B2 (en) | 2014-06-30 | 2020-03-03 | Intel Corporation | Data distribution fabric in scalable GPUs |
WO2017020588A1 (en) * | 2015-07-31 | 2017-02-09 | Huawei Technologies Co., Ltd. | Apparatus and method for allocating resources to threads to perform a service |
US9841999B2 (en) | 2015-07-31 | 2017-12-12 | Futurewei Technologies, Inc. | Apparatus and method for allocating resources to threads to perform a service |
CN106557367A (zh) * | 2015-09-30 | 2017-04-05 | 联想(新加坡)私人有限公司 | 用于为计算资源提供粒度化服务质量的装置、方法和设备 |
US10509677B2 (en) | 2015-09-30 | 2019-12-17 | Lenova (Singapore) Pte. Ltd. | Granular quality of service for computing resources |
CN106557367B (zh) * | 2015-09-30 | 2021-05-11 | 联想(新加坡)私人有限公司 | 用于为计算资源提供粒度化服务质量的装置、方法和设备 |
CN109522112A (zh) * | 2018-12-27 | 2019-03-26 | 杭州铭展网络科技有限公司 | 一种数据采集系统 |
CN109522112B (zh) * | 2018-12-27 | 2022-06-17 | 上海识致信息科技有限责任公司 | 一种数据采集系统 |
CN113227917A (zh) * | 2019-12-05 | 2021-08-06 | Mzta科技中心有限公司 | 模块化plc自动配置系统 |
Also Published As
Publication number | Publication date |
---|---|
EP1963963A2 (en) | 2008-09-03 |
JP2009519513A (ja) | 2009-05-14 |
WO2007067562A3 (en) | 2007-10-25 |
US20070150895A1 (en) | 2007-06-28 |
WO2007067562A2 (en) | 2007-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101366004A (zh) | 用于带有专用线程管理的多核处理的方法和设备 | |
US9921845B2 (en) | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines | |
TWI628594B (zh) | 用戶等級分叉及會合處理器、方法、系統及指令 | |
EP2689330B1 (en) | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines | |
CN100573456C (zh) | 一种并行多处理器虚拟机系统 | |
CN103547993A (zh) | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 | |
CN100449478C (zh) | 用于实时多线程处理的方法和装置 | |
TW201443783A (zh) | 在單一指令多執行緒處理器上以函數呼叫編譯或執行時間執行一分叉-會合資料平行程式的系統及方法 | |
CN103646006B (zh) | 一种处理器的调度方法、装置和系统 | |
CN104094235B (zh) | 多线程计算 | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
CN103559014A (zh) | 用于处理嵌套流事件的方法和系统 | |
CN103197916A (zh) | 用于源操作数收集器高速缓存的方法和装置 | |
KR101639853B1 (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 | |
CN103999051A (zh) | 用于着色器核心中着色器资源分配的策略 | |
CN101013415A (zh) | 用于多处理器阵列的线程感知分布式软件系统 | |
CN110297661B (zh) | 基于amp构架dsp操作系统的并行计算方法、系统及介质 | |
CN104050032A (zh) | 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法 | |
Bull et al. | Performance evaluation of mixed-mode OpenMP/MPI implementations | |
Abellán et al. | A g-line-based network for fast and efficient barrier synchronization in many-core cmps | |
CN103262035A (zh) | 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告 | |
CN103294449A (zh) | 发散操作的预调度重演 | |
Liu et al. | BSPCloud: A hybrid distributed-memory and shared-memory programming model | |
KR101639854B1 (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조 | |
Czarnul | A multithreaded CUDA and OpenMP based power‐aware programming framework for multi‐node GPU systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090211 |