用于带有专用线程管理的多核处理的方法和设备的制作方法

文档序号:6569910阅读:198来源:国知局
专利名称:用于带有专用线程管理的多核处理的方法和设备的制作方法
技术领域
本发明涉及到通过多个处理器核执行计算机指令的方法和设备,特 别涉及到使用专用线程管理以通过多个处理器核执行计算机指令。
背景技术
对各种应用(如多媒体、网络连接、以及高性能计算)的计算需求 在复杂性和要处理的数据的量上都有所增加。与此同时,仅仅通过增加时 钟速度来提高微处理器性能变得日益困难,这是因为相对于能耗以及所需 的散热的增加,在性能改进方面其工艺技术上的改进现在已经达到了回报 正日益减小的点。考虑到这些限制,并行处理开始成为在改进微处理器性 能上的一种有希望的选择。线程级并4亍(Thread-level parallelism, TLP )是一种并行处理技术, 在该技术中,程序线程并发运行,提高了应用的整体性能。从广义上而言, 存在两种形式的TLP:并发多线程(SMT),以及片上多处理器(CMP )。
SMT在一个处理单元上复制寄存器和程序计数器,使得多个线程的 状态能被一次存储。在一个SMT处理器中,这些线程每次被部分执行, 处理器在线程间快速地切换执行,提供了执行的虛拟并发。这种能力的获 得以增加处理单元的复杂性、以及所复制的寄存器和计数器所需要的额外 硬件为代价。此外,并发仍然是"虚拟的,, 一一虽然该方法提供了快速的 线程切换,但它并没有克服在任意给定的时间内只有一个线程被实际执行 这一最基本的局限。CMP包括至少两个处理单元,每个处理单元才丸行其自己的线程。与 SMT处理器相比,CMP提供了真正的并发,但它的性能会潜在地受到当
一个在指定处理单元上运行的线程需要切换时所产生的延迟的影响。这些
现有技术CMP的基本问题是线程管理任务在CMP自身的一个或多个处理
单元上以软件的方式执行,在很多情况下,要访问芯片外存储器以存储线 程管理所必需的数据结构。这一机制减少了处理单元的数量以及线程执行 所用到的存储器带宽。另外,由于线程管理任务本身是所要执行线程中的 一个,因此在管理处理单元分配、调度线程的扭j亍以及实时同步目标方面
其能力受到制约。最近,SMT和CMP在混合实现中被结合在一起,其中的多个SMT 处理器被集成到一个芯片上。其结果是在线程处理中有大量的虚拟和实际 的并行,但目前的混合实现并没有解决由带内(in-band)线程管理所带来 的问题。因此,需要一种通过将专用线程管理单元集成到多核处理器以克服 现有技术的缺陷,从而提供改进的微处理器性能的方法和设备。

发明内容
本发明通过将专用线程管理集成到CMP克月1了现有的SMT处理器 和CMP的缺点,该CMP具有通过片上网络互相连"l妻的处理单元、接口块、 功能块。在这种体系结构中,带外发生的线程管理允许快速、低延迟的线 程切换,而不产生与基于软件的线程管理线程相关的开销。 [OOIO]在一个方面,本发明提供了一种在一个具有多个处理器核的设备中 实现多核虚拟的方法。至少一个调度指令与一个用于执行的指令被接收。 响应所述的至少一个调度指令,所述的至少一个用于执行的指令被分配到 一个处理器核去执行。在一个实施例中,分配该指令可以在带外进行。分 配该至少一个指令可以包括从多个处理器核选择一个处理器核以执4亍该 指令,以及分配该用于执行的指令到所选择的处理器核。该处理器核可以 被选择,例如,从多个同质的处理器核中选择。处理器核的功率状态可以 可选择地被改变。在另一个实施例中,分配该指令包括识别与所要执行的指令相关的 线程,以及分配所要执行的指令到与所识别的线程相关的处理器核。在又 一个实施例中,分配该指令包括从多个处理器核中根据功率因素和热量分 配因素中的至少一个选择用于执行的处理器核,以及分配至少一个用于执 行的指令到所选择的处理器核。在再一个实施例中,分配该指令包括从多
个处理器核中根据所存储的处理器状态信息选择用于执行的处理器核,以 及分配至少一个用于执行的指令到所选择的处理器核。在一个实施例中,接收至少一个用于执行的指令包括接收多个用于 执行的线程,每个线程包括至少一个用于执行的指令,从所接收的多个用 于执行的线程中选择一个,以及从所选择的线程接收至少一个用于执行的 指令。在各种实施例中,该方法可以包括多个可选择的步骤。该方法还可 以包括从处理器核接收标志其已经执行了所分配的至少一个指令的消息。 线程状态和信息或处理器核的状态可以被存储。在一个处理器核执行第一 所分配的指令后,如果检测到线程间的依赖性,所执行的指令在第二所分 配的指令执行后可以被再次分配,使得第 一所分配的指令可以没有线程间 依赖性地被再次4丸行。在另 一个方面,本发明提供了具有多个处理器核以及线程管理单元 的设备,该设备接收用于执行的指令和调度指令,并分配用于执行的指令 到处理器核以响应该调度指令。多个处理器核可以是同质的,并且线程管 理单元可以只以^哽件或以石更件和软件相结合的方式实现。可以以不同的速 度运行的多个处理器核可以在一个网络中互相连接,或通过网络连接,该 网络可以是光学的。该设备还可以包括至少一个外围设备。
线程管理单元可以包括一个或多个状态机,微处理器,以及专用存 储器。该微处理器可以被专用于调度、线程管理、以及资源分配中的一个 或多个。线程管理单元可以被专用于存储线程和资源信息。
在又一个方面,本发明提供了一种编译软件程序的方法。可编译的
句被创建。增加机器可读目标代码语句,以通知线程管理单元分配所创建 的机器可读目标代码语句到处理器核。该方法还可以包括重复创建机器可读目标代码语句,从而提供多个 所创建的机器可读目标代码语句以及所述多个语句的组合到多个线程中, 每对线程通过边界相分离。在这个实施例中,所述增加用于通知线程管理 单元的语句包括于线程间边界增加用于通知线程管理单元的机器可读目 标代码语句。在又一个实施例中,所述增加用于通知线程管理单元的语句 包括增加用于响应可编"i奪源代码语句通知线程管理单元的机器可读目标 代码语句,该可编译源代码语句标志了线程间的边界。通过下面的描述、附图以及权利要求,本发明的前述以及其它特征
和优点将会更为明显。


本发明的优点通过参考以下附图并结合以下相应说明可以被更好地 理解图1为在一个多核环境中提供了专用线程管理的本发明的一个实施 例的框图;图2为根据本发明在一个具有多个处理器核的设备中提供多核虚拟 化方法的流程图;图3为线程管理单元的一个实施例的框图;以及
图。;、 , 、、、 、 、、、、在这些图中,相同的引用标记一般是指从不同角度所涉及的相同部 分。这些图并不是必要地4要比例画出,其重点应放在本发明的原则和扭X念 上。
具体实施例方式本发明的实施例通过将专用线程管理集成到CMP克服了当前的多 核技术的缺陷,该CMP具有互相连接的处理单元、接口块、功能块。可 以只以硬件或以硬件和软件的结合实现线程管理,从而在无需基于软件的 线程管理线程的开销下允许线程切换。本发明的硬件实施例并不需要SMT方法中的复制的寄存器和程序 计数器,使得它比SMT更简单而且更便宜,尽管在本发明的方法和设备 中结合使用SMT能够带来额外的益处。使用片上网络以连接系统块,包 括管理单元本身,提供了一种空间有效且可缩放的连接,该连接允许使用 大量的处理单元和功能块,同时为功率消耗管理提供灵活性。该线程管理 单元与功能块进行通信,管理处理单元,并在系统中进行资源分配、线程 调度、以及目标同步。本发明的实施例通过结合片上网络体系结构以 一种成本有效的方式 改进了线程级并行性,该体系结构将大量的处理单元集成到具有专用线程 管理单元的单个集成电路中,该专用线程管理单元在带外运行,也就是,独立于任意的特定处理单元。在一个实施例中,线程管理单元完全以硬件 实现,通常是带有其自己的专用存储器和具有到其它功能块的全局通路。 在其他实施例中,线程管理单元可以被基本上或部分地以硬件实现。在处理单元的片上网络中使用专用线程管理单元消除了现有SMT 和CMP方法的固有开销,其中的线程管理由软件线程本身实现,导致了 性能的全面改进。本发明的实施例认识到通过实现线程管理的全局性,而 不是对特定处理单元的局部性,可以比现有的SMT方法在执行上有更多 的并行性。线程管理的全局化也提供了更好的资源分配、更高的处理器利 用率、以及全局的功率管理。
体系结构参考图1,本发明的一个典型实施例包括至少两个处理单元100、线 程管理单元104、片上网络互连108,以及一些可选择的组件,例如包括 功能块112,这些功能块可以例如是外部接口 ,其具有网络接口单元(未 明确显示),例如是具有网络接口单元(同样没有明确显示)的外部存储 器接口 116。每个处理单元100包括,例如,微处理器核、数据和指令高速緩存、 以及网络接口单元。正如图2中的描述,线程管理单元104的实施例典型 地包括微处理器核或状态机200、专用存储器204,以及网络接口单元208。 网络互连108典型地包括至少一个路由器120以及连接路由器120到处理 单元100的网络接口单元或网络上的其它功能块112的信号线。
任意节点,如处理器IOO或功能块112,采用片上网络结构108,能 够与任意的其它节点通信。这一体系结构允许在一个芯片上存在大量的节 点,例如图1所示的实施例具有16个处理单元100。每个处理单元100具 有带有局部緩沖高速存储器和网络接口单元的微处理器核。大量的处理单
元提供了更高水平的并行计算性能。通过片上网络体系108与带外的、专 用线程管理单元104的结合允许在一个集成电路上实现大量的处理单元。
在一个典型的实施例中,节点间的通信通过网络108以将消息作为 数据包发送的形式发生,其中包括命令、数据、或命令和数据的组合。
线程管理单元在运行中,当处理器被初始化时,线程管理单元开始执行,并分配 其中的一个处理单元从存储器获取程序指令并执行。例如,参考图3,线 程管理单元在响应至少一个调度指令以分配用于执行的程序指令(步骤
308 )前,可以接收至少一个所述调度指令(步骤300 )和至少一个程序指 令(步骤304)。如果,当执行所分配的指令时,处理单元遇到一个要产生另一个线 程的程序指令,它通过网络发送消息到线程管理单元。在收到该消息后(步 骤300'), 假如其它处理单元是可用的,线程管理单元为该新线程分配另 一个处理单元以获取并执行指令(步骤308,)。按照此类方式,多个线程 可以在多个处理单元上并发地被执行直到不再有可由线程管理单元分配 的未决线程或不再有可用的处理单元。当没有可用的处理单元可被分配 时,线程管理单元将会在存储器内的一个运行队列中存储额外的线程。
在一些情况下,线程管理单元中的调度逻辑可以中断正在执行的线 程并用一个具有更高优先级的线程取代。在这种情况下,被中断的线程将 会被插入到运行队列中使得当 一个处理单元变为可用状态时,该线程能被 重新运行。当一个给定的处理单元完成与所分配的线程相关联的指令的执行 时,该处理单元发送一个消息到线程管理单元,标志它现在已经空闲(步 骤300")。线程管理单元现在可以分配一个新的线程到空闲的处理单元中 执行(步骤308")并且这一处理过程只要存在需要执行的线程就将被重复 进行。在一些实施例中,线程管理单元可以空置一个空闲的处理单元以减 少总体的功率消耗,或者在一些情况下可以将一个正在执行的线程从一个 物理的处理单元移到另一个以改善能量负载的分配和热量的散发。
线程管理单元另外还监视芯片上的处理单元和功能块的状态以检测 任何的停止状况,也就是说,其中的一个处理单元等待另一个处理单元或 功能块以执行指令。线程管理单元还跟踪各个线程的状态,例如,像运行、 睡眠、等待。线程状态信息被存储在管理单元的本地存储器中并被管理单 元使用,以在线程执行的调度中做出决定。采用已知的线程状态和调度规则,例如,可以包括优先级、关联性 (affinity)或公平性的任意组合,线程管理单元发送消息到特定处理单元 以执行来自存储器指定位置的指令。因此,任意处理单元的运行在任意给 定的时间,基于由线程管理单元所作出的决定,能以极小的延迟做出改变。 这些由线程管理单元所使用的调度规则是可配置的,例如,在启动时进行
配置( boot-up )。进一步参考图2,线程管理单元104的某些实施例可以选择性地包 含中断控制器208和系统计时器/计数器212。在一些实施例中,线程管理 单元104首先接收所有的中断,然后分发一个合适的消息到合适的处理单 元或功能块112以处理该中断。线程管理单元也可以支持线程和系统资源(如功能块或外部接口 ) 间的关联性(affinity),以及线程间的关联性。例如,线程可以被编译器 或与特定处理单元、功能块、或其它线程相关联的最终用户指定。线程管 理单元利用线程的关联性来优化处理单元的分配,例如,减少运行特定线 程的第一处理单元和与所述第一处理单元具有关联性的处理单元或系统 资源间的物理距离。由于线程管理单元并没有与任何特定的处理单元相关联,而是该片 上网络中的自治节点,因此线程管理在带外执行。这一方法较在带内处理
统线程管理机制具有几个优点。首先,带外管理对于任何的处理单元都不 产生线程管理开销,解放了处理单元去处理计算任务。第二,由于在整个 片上网络上管理线程和片上资源而非局部管理,它提供了更好的资源分配 和使用,并改进了效率和性能。第三,片上网络和集中的调度和同步机制 的结合允许多核体系结构扩展到成千上万个处理单元。最后,带外的线程 管理单元也能空置系统资源以降低功率消耗。如图3所示,线程管理单元104包括用于存储信息的专用存储器204, 这些信息为执行对线程的调度和管理所需要。存储在存储器204中的信息 可以包括要调度执行的线程的队列,各种处理单元和功能单元的状态, 各种被执行的线程的状态,任一锁、互斥锁、或共享的对象的占有权和访 问权,以及信号量。由于该专用存储器204被直接连接到位于线程管理单 元104中的微处理器或状态机200,线程管理单元104能够在无需访问共 享或片外存储器的情况下执行它的功能。这导致了调度和管理任务的更快 执行,也保证了执行调度或管理操作时所需要的时钟周期的数目。
软件开发过程
处理单元的片上网络和专用线程管理单元的组合允许线程管理过程
能被有效率地管理而无需来自软件开发者的任何明确指示。因此,软件开 发者能够利用新的或现有的多线程软件应用,并在不修改该应用本身的底 层源代码的情况下,为了在本发明实施例上执行,用专用的编译器、专用 的连接器、或者上述两者,处理该应用。参考图4,在一个实施例中,专用的编译器或连接器将可编译源代 码语句(步骤400)切换成与该源代码语句相应的且由位于片上网络的处 理器可作为线程执行的一个或多个机器可读目标代码语句(步骤404)。专 用的编译器或连接器也添加了特定的机器可读目标代码语句,所述语句通 知处理单元开始执行与新线程相关的指令(步骤408)。这些特定语句可以 被放置在例如线程间的边界处,该边界或者由编译器或连接器自动识别, 或者由开发者特别指定。可选的,编译器或预处理器可以执行静态代码分析以提取并向开发 者提供关于并行性的附加时机。使用并行性的附加时机能通过对用于更高 层次语言(如JAVA)的运行时虚拟机的实现被实现。
由此可见,前面描述了 一种采用专用线程管理的多核处理的高优越 性的方法。此处所用的术语和表达被作为描述而非限制,采用上述术语和 表达也不是为了排斥与任何所显示、描述的特征或其部分相等价的内容, 但应当认识到各种可能的修改在本发明的权利要求范围内都是可能的。
权利要求
1、一种在具有多个处理器核的设备中用于多核虚拟化的方法,该方法包括 接收至少一个调度指令; 接收至少一个用于执行的指令;以及 响应所述的至少一个调度指令,分配所述的至少一个用于执行的指令到处理器核执行。
2、 根据权利要求1所述的方法,其特征在于,所述分配所述至少一 个指令在带外进行。
3、 根据权利要求1所述的方法,其特征在于,所述的分配所述的至 少一个指令包括从多个处理器核中选择一个用于执行的处理器核;以及 分配至少一个用于执行的指令到所选定的处理器核。
4、 根据权利要求3所述的方法,其特征在于,所述的选择处理器核 包括从多个同质的处理器核选择一个用于执行的处理器核。
5、 根据权利要求1所述的方法,其特征在于,所述的分配所述的至 少一个指令包括识别与所述的至少 一 个用于执行的指令相关的线程;以及 分配至少 一个用于执行的指令到与所识别的线程相关的处理器核。
6、 根据权利要求1所述的方法,其特征在于,还包括改变处理器核 的功率状态。
7、 根据权利要求1所述的方法,其特征在于,所述的分配所述的至 少一个指令包括利用功率因素和热量分配因素中的至少 一个从多个处理器核选择一 个用于执行的处理器核;以及分配至少一个用于执行的指令到所选择的处理器核。
8、 根据权利要求1所述的方法,其特征在于,还包括从处理器核接 收标志其已经执行了所分配的至少 一 个指令的消息。
9、 根据权利要求1所述的方法,其特征在于,还包括存储处理器核 的状态。
10、 根据权利要求1所述的方法,其特征在于,还包括存储线程状态 和4言息。
11、 根据权利要求9所述的方法,其特征在于,所述的分配所述的至 少一个指令包括利用所存储的处理器状态信息从多个处理器核中选择一个用于执行的处理器核;以及分配至少一个用于执行的指令到所选择的处理器核。
12、 根据权利要求1所述的方法,其特征在于,所述的接收至少一个 用于执行的指令包括接收多个用于执行的线程,每个线程包括至少一个用于执行的指令; 从所接收的多个用于执行的线程中选择一个;以及 从所选择的线程中接收至少一个用于执行的指令。
13、 根据权利要求1所述的方法,其特征在于,还包括 处理器核执行第一所分配的指令后检测线程间依赖性;以及 在执行第二所分配的指令后再次分配所执行的指令,其中所述的第二所分配的指令的执行允许没有线程间依赖性地再次执行第一所分配的指 令。
14、 一种设备,包括 多个处理器核;以及 线程管理单元,其中,所述的线程管理单元接收用于执行的指令以及调度指令;以及 线程管理单元分配用于执行的指令到处理器核以响应调度指令。
15、 根据权利要求14所述的设备,其特征在于,所述的多个处理器 核是同质的。
16、 根据权利要求14所述的设备,其特征在于,所述的线程管理单 元完全以硬件实现。
17、 根据权利要求14所述的设备,其特征在于,所述的线程管理单 元以硬件和软件实现。
18、 根据权利要求14所述的设备,其特征在于,所述的处理器核在 一个网络中互相连接。
19、 根据权利要求14所述的设备,其特征在于,所述的处理器核通 过网络连接。
20、 根据权利要求14所述的设备,其特征在于,所述的处理器核通过一个光学网络互相连4矣。
21、 根据权利要求14所述的设备,其特征在于,所述的线程管理单 元包括状态4几。
22、 根据权利要求14所述的设备,其特征在于,所述的线程管理单 元包括被专用于调度、线程管理、以及资源分配中的一个或多个的微处理 器。
23、 根据权利要求14所述的设备,其特征在于,所述的线程管理单 元包括用于存储线程和资源信息的专用存储器。
24、 根据权利要求14所述的设备,其特征在于,还包括至少一个外 围设备。
25、 根据权利要求14所述的设备,其特征在于,所述的多个处理器 核中的至少两个以不同的速度运行。
26、 一种编译软件程序的方法,该方法包括 接收可编译的源代码语句;创建与可编译源代码语句相应的机器可读目标代码语句;以及 增加机器可读目标代码语句以用于通知线程管理单元分配所创建的 机器可读目标代码语句到处理器核。
27、 根据权利要求26所述的方法,其特征在于,还包括重复创建机器可读目标代码语句,以提供多个所创建的机器可读目标 代码语句;以及组合所述多个语句到多个线程中,每对线程通过边界相分离。
28、 根据权利要求27所述的方法,其特征在于,所述的增加用于通 知线程管理单元的语句包括于线程间边界增加用于通知线程管理单元的 机器可读目标代码语句。
29、 根据权利要求26所述的方法,其特征在于,所述的增加用于信 号通知线程管理单元的语句包括增加用于响应标志线程间边界的可编译 源代码语句通知线程管理单元的机器可读目标代码语句。
全文摘要
在具有通过片上网络相互连接的处理单元、接口块、以及功能块的CMP上实现专用线程管理的方法和设备。在各种实施例中,线程管理在带外实现以允许快速、低延迟的线程切换,而不会产生与基于软件的线程管理线程相关的开销。
文档编号G06F9/38GK101366004SQ200680046045
公开日2009年2月11日 申请日期2006年12月6日 优先权日2005年12月6日
发明者A·S·库兰德 申请人:波士顿电路公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1