非统一内存访问系统中线程化串行程序的方法及装置制造方法及图纸

技术编号:7503917 阅读:165 留言:0更新日期:2012-07-11 03:42
本发明专利技术实施例公开了一种非统一内存访问系统中线程化串行程序的方法及装置,涉及多线程技术领域,能够缓减在非统一内存访问系统中由于访存延时差异所导致的多核处理器执行串行程序时的性能的降低。本发明专利技术的方法包括:接收待处理的串行程序;获取多核处理器的信息,其中包括多核处理器的互联结构信息、每个所述处理器核的访存延时中的至少一项;将所述串行程序中的可用循环部分线程化为推测线程,将所述串行程序中的串行部分和非可用循环部分线程化为控制线程;根据所述互联结构信息和所述延时信息中的至少一项,将所述控制线程和所述推测线程分配至处理器核。本发明专利技术用于支持推测多线程机制的非统一内存访问系统中线程化执行串行程序。

【技术实现步骤摘要】

本专利技术涉及多线程
,尤其涉及一种非统一内存访问系统中线程化串行程序的方法及装置
技术介绍
随着多核芯片(Chip Multi-Processor, CMP)技术的发展,多核处理器得到广泛应用。现有的多核处理器主要有UMA (Uniform Memory Access,统一内存访问)和 NUMA(Non-Uniform Memory Access,非统一内存访问)这两种结构形式。在UMA中,设备中有多个CPU (Central Processing Unit,中央处理器/处理器) 对称工作,共享相同的物理内存,除CPU以外的所有资源都是共享的,每个CPU访问内存中的任何地址所需时间相同的;在NUMA中具有多个CPU模块,每个CPU模块由多个CPU核组成并且具有独立的本地内存、输入输出接口等。不同CPU模块可以进行连接和信息交互,故每个CPU模块可以访问其他CPU模块的内存。在使用多核处理器处理传统的串行程序时,需要将串行程序线程化,从而加速串行程序在多核处理器上的执行速度,并使多核处理器的获取资源得到更充分的利用。推测多线程技术(Speculative Multithreading, SMT)就是线程化串行程序的一种方案。推测多线程技术的基本思路是将串行程序的串行部分和循环部分(循环部分包含串行程序中的多个循环体)划分为新的线程,并将这些线程分配至多个CPU (Central Processing Unit,中央处理器)核上执行。在NUMA中实行推测多线程技术的方法与在UMA中实行推测多线程技术的方法基本相同。即将串行程序线程化为多线程程序,并将不同的线程随机分配至CPU核上执行; CPU核在执行线程的过程中,需要不断访问内存以支持CPU核的获取功能,具体的,就是CPU 核在执行线程的过程中根据线程的具体执行代码,访问本地内存,或是通过NUMA中CPU模块之间的互联网络访问其他CPU模块中的内存,从而完成线程的执行过程。在将上述方案应用在NUMA中时,CPU核在访问内存时存在访存延时,访存延时会影响推测多线程机制的执行效果,从而降低多核处理器的性能。
技术实现思路
本专利技术的实施例提供一种非统一内存访问系统中线程化串行程序的方法及装置, 能够缓减在非统一内存访问系统中由于访存延时所导致的多核处理器性能的降低。本专利技术的实施例采用如下技术方案一方面,本专利技术的实施例提供一种非统一内存访问系统中线程化串行程序的方法,包括接收待处理的串行程序;获取多核处理器的信息,所述多核处理器的信息包括所述多核处理器的互联结构信息、所有处理器核的延时信息中的至少一项,所述延时信息包含每个所述处理器核的访存延时;将所述串行程序中的循环部分线程化为推测线程,将所述串行程序中的串行部分线程化为控制线程;根据所述互联结构信息和所述延时信息中的至少一项,将所述控制线程和所述推测线程分配至处理器核。另一方面,本专利技术的实施例提供一种非统一内存访问系统中线程化串行程序的装置,包括接收模块,用于接收待处理的串行程序;提取模块,获取多核处理器的信息,所述多核处理器的信息包括所述多核处理器的互联结构信息、所有处理器核的延时信息中的至少一项,所述延时信息包含每个所述处理器核的访存延时;线程化模块,用于将所述串行程序中的循环部分线程化为推测线程,将所述串行程序中的串行部分线程化为控制线程;分配模块,用于根据所述互联结构信息和所述延时信息中的至少一项,将所述控制线程和所述推测线程分配至处理器核。本专利技术实施例提供的方法和装置,能够在非统一内存访问系统中,根据CPU核访问内存时的延迟信息、各多核处理器的互联结构信息和各CPU核的状态信息等对串行程序进行线程划分,并根据这些信息,通过相应的调度计划,将推测线程调度至CPU核上执行。 与现有技术相比,本专利技术实施例能够对串行程序进行合理的线程划分,并将这些线程以最佳策略分配至CPU核上执行,从而缓减在非统一内存访问系统中由于访存延时所导致的多核处理器性能的降低。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图;图1为本专利技术实施例1提供的非统一内存访问系统中线程化串行程序的方法的流程图;图2为本专利技术实施例2提供的非统一内存访问系统中线程化串行程序的方法的流程图;图3为本专利技术实施例1、实施例2提供的非统一内存访问系统中线程化串行程序的方法中的具体实例的流程图;图4为本专利技术实施例2提供的非统一内存访问系统中线程化串行程序的方法中的具体实例的结构图;图5为本专利技术实施例3提供的非统一内存访问系统中线程化串行程序的装置的结构示意图;图6为本专利技术实施例4提供的非统一内存访问系统中线程化串行程序的装置的结构示意图。具体实施例方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。为使本专利技术技术方案的优点更加清楚,下面结合附图和实施例对本专利技术作详细说明。实施例1本专利技术实施例提供一种非统一内存访问系统中线程化串行程序的方法,如图1所示,该方法包括步骤101,接收待处理的串行程序。具体的,在本实施例中,在NUMA系统中,计算机通过操作系统中的程序剖析工具接受待处理的串行程序,并对该串行程序的代码进行前段编译及优化,将串行程序的程序代码转化为中间代码,为进一步的代码剖析做准备,例如如图3所示,计算机通过程序剖析工具中的SUIF前端编译工具对串行程序的代码进行编译,得到中间代码,并通过SUIF优化器对该中间代码进行优化,得到优化的中间代码。步骤102,获取多核处理器的信息。其中,所述多核处理器的信息包括所述多核处理器的互联结构信息、所有处理器核的延时信息中的至少一项,所述延时信息包含所述所有处理器核的访存延时。具体的,在本实施例中,在NUMA系统中,计算机可以建立两个数据结构NUMA基本信息表和可用节点状态信息表。收集NUMA系统的互联结构信息(可以包括NUMA系统互联拓扑互联结构信息等)和延时信息(可以各核访问不同内存段的平均延时等),并保存在 NUMA基本信息表中。同时,通过查询系统状态和运行测试程序,获取计算机中多核处理器的使用情况,进一步的,将该多核处理器中所有CPU核的状态信息(可以包括CPU核使用率、 CPU核之间的访存冲突的情况等)保存在可用节点状态信息表中,例如如图3所示,计算机通过操作系统中的信息收集工具收集诸如互联结构信息、延时信息、状态信息等NUMA系统信息,并将这些信息作为NUMA启发信息发送至线程生成器, 从而使线程生成器能够根据互联结构信息、延时信息、状态信息等NUMA系统信息以更加合理的策略将串行程序线程化。步骤103,将所述串行程序中的可用循环部分线程化为推测线程,将所述串行程序中的串行部分和非可用循环部分线程化为控制线程。具体的,在本实施例中,将所述串行程序中的循环部分线程化为推测线程的过程可以本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:李艳华张悠慧谭玺
申请(专利权)人:华为技术有限公司清华大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术