多核平台下串行程序运行时的自动并行化加速方法技术

技术编号:4082289 阅读:375 留言:0更新日期:2012-04-11 18:40
一种计算机技术领域的多核平台下串行程序运行时的自动并行化加速方法,新增可共享读取的程序计数器寄存器组,并在操作系统中建立自动并行加速线程,选择一个线程作为加速的对象,然后实时地分析此线程将要执行到的指令代码,并对其中执行循环的指令代码进行修改,达到使被加速线程自动并行执行的目的。本发明专利技术在运行时对程序进行自动并行,不用对现有程序进行预先的处理,整个过程由操作系统完成,对于用户完全透明。本发明专利技术能够在有空闲的CPU核时自动利用空闲资源对程序进行并行加速,免去等待预先处理程序的时间,也省去用户手动转换程序的麻烦。

【技术实现步骤摘要】

本专利技术涉及的是一种计算机
的方法,具体是一种多核平台下串行程序运 行时的自动并行化加速方法。
技术介绍
二十一世纪以来,随着芯片功耗的不断提升和芯片复杂度的不断提升,通 过提升频率等方法来提高单核处理器的性能变得非常困难。单芯片多处理器(Chip Multiprocessor, BP CMP)技术成为了新的发展热点。最近几年,使用CMP技术的处理器已经 占据了大部分市场,从大型商用机型,到普通桌面机,再到嵌入式系统,无论高端低端,CMP 都成为了各领域处理器结构的必然选择。然而CMP的使用并不是应用驱动的,它的出现主要是为了有效地利用新制造工艺 带来的更多的晶体管。由于功耗和验证难度的限制,已经难以通过设计更复杂的单核来提 升处理器的性能。与此同时传统的图灵机串行程序模型和串行地址空间结构并没有发生本 质改变,原有的大量程序和许多新增的程序依然遵循传统的设计方法,导致串行化的程序 并不能很好的利用现在可并行执行的物理结构以提高性能。现有技术中采用传统的并行程序设计方法重写现有的程序,该方法好像非常简 单,但是事实上并不可行。常用的并行化库和编译指令主要有OpenMP(共享存储并行设计 的库)和MPI (消息传递并行编程环境)。它们一方面难于掌握并行程序的设计与调试都 比串行程序要困难很多;另一方面也不是特别适用于多核环境。由于编写单个并行程序代 价就很高,要想把现有的各种应用程序都重写,实际上是不可能的。经对现有文献检索发现,中国专利申请号为=200510026587. 4,名称为用户指导 的程序半自动并行化方法,该技术提出了一种使用较为简单的模型开发并行化程序,能减 小开发并行程序的复杂度。但是,其使用范围有限而且仍然需要大量精力进行重新开发,不 能很好地解决大量现有的串行程序的问题。另外一种方法是对串行程序进行自动分析翻译,生成并行化程序,即线程级推测 (ThreadLevel Speculation,即TLS)技术。使用该技术可以使用相应的自动并行化工具, 通过对原有串行程序的源代码、中间代码或者二进制代码的分析,自动划分线程,并生成并 行化代码。该方法虽然可以不用重写程序,但还是需要对原有的代码进行重新编译,这就要 求用户有能力进行代码重新编译或者要求用户更换为已经重新编译的程序,这一要求在一 般情况下是不成立的。同时,使用推测技术,虽然在一定程度上提高了并行度,但同时也增 加了硬件设计的复杂度,并且在推测级数较多时推测成功率很低。
技术实现思路
本专利技术的目的在于克服现有技术的上述不足,提供一种多核平台下串行程序运行 时的自动并行化加速方法。本专利技术新增可共享读取的程序计数器寄存器组,并在操作系统 中建立自动并行加速线程,选择一个线程作为加速的对象,然后实时地分析此线程将要执行到的指令代码,并对其中执行循环的指令代码进行修改,达到使被加速线程自动并行执 行的目的。本专利技术是通过以下技术方案实现的,本专利技术包括以下步骤第一步,建立一个共享读取的程序计数寄存器组SPC,该寄存器组中寄存器的个数 与CPU核的数目相同,每个寄存器分别与对应的CPU核相连以实时地储存该CPU核的程序 计数器值。所述的共享读取是每个CPU核实时读取寄存器组中每个寄存器存储的其它CPU 核的程序计数器值。第二步,当存在空闲的CPU核时,进行加速对象选择处理,得到自动并行加速线程 的加速对象为线程P。所述的加速对象选择处理,是当正在运行且未被加速的用户线程中存在CPU占 用率最高的线程时,则选择该线程作为自动并行加速线程的加速对象;否则,时间t后,再 次选择正在运行且未被加速的用户线程中CPU占用率最高的线程作为自动并行加速线程 的加速对象,直至得到自动并行加速线程的加速对象。第三步,当线程P存在已分析指令集合Sp时,载入该集合Sp ;否则,为线程P新建 一个集合sp,对线程P所在的CPU核进行读取处理,得到线程P所在的CPU核当前正在读取 的指令I。,并由I。追踪线程P下一条将要执行指令的地址,将追踪分析的指令代码和跳转 关系加入集合Sp中。所述的读取处理,是读取线程P所在的CPU核的程序计数寄存器的值,将得到的 虚拟地址转换为物理地址,然后从该物理地址得到线程P所在的CPU核正在执行的指令I。, 当集合Sp中包括指令I。时,删除集合Sp中I。以前的指令记录,并根据集合Sp追踪线程P 下一条将要执行的指令;否则,清空集合sp。第四步,采用第三步的方法,得到线程P将要执行的所有指令,当集合Sp中每次加 入条件转移指令后且集合Sp中存在循环代码时,进行进度校验和替换处理。所述的进度校验,是重新读取指令I。,当指令I。不在集合Sp中时,清空集合Sp, 然后从指令I。开始追踪;当指令I。在集合Sp中、线程P走向该循环且线程P已经开始执行 该循环,则选取循环接收后第一条语句作为待分析指令,并清空集合Sp ;当指令I。在集合Sp 中、线程P走向该循环且线程P未执行该循环,则对该循环进行替换处理;当指令I。在集合 Sp中但线程P未走向该循环时,则删除集合Sp中I。以前的指令记录,并继续追踪。所述的替换处理,包括以下步骤1)当循环的总工作量大于阈值G时,生成并行化执行该循环的代码,执行该循环 的代码出口语句跳转到原循环出口对应的语句,且将新生成的代码单独放在一个或若干个 内存页中;否则,放弃替换该循环,并删除集合Sp中I。以前的指令记录,继续追踪;2)生成代码后,进行进度校验,当通过进度校验时则中断线程P,且中断线程P后 再次进行校验,再次通过进度校验后,执行3);否则,线程P继续运行;3)将1)生成的代码所在的内存页分配给线程P,并修改原循环起始地址的二进制 代码为跳转到新生成代码的起始位置,在集合Sp中删除原循环对应指令,加入新生成的代 码指令;4)替换完成后通知线程P继续执行,继续分析后续代码。所述的通过进度校验是指指令I。在集合Sp中、线程P走向该循环且线程P未执 行该循环。第五步,当线程P被调度出CPU核时,系统以中断方式将该事件连同当时的5 (;值 发送给自动并行加速线程,当自动并行加速线程正在替换处理中时,则使用此时的SPCp值 作为读取I。的依据,继续执行替换处理直到退出该步骤;否则,自动并行加速线程根据当时 的SPCp值读取I。,清空或更新集合sp,其结果等待线程P被调入时继续使用。第六步,返回第二步,开始处理新的需要加速的线程。与现有技术相比,本专利技术的有益效果是现有技术使用不方便,需要重新开发程序 或者重新编译原来的代码,而本专利技术在运行时对程序进行自动并行,不用对现有程序进行 预先的处理,整个过程由操作系统完成,对于用户完全透明。本专利技术能够在有空闲的CPU核 时自动利用空闲资源对程序进行并行加速,免去等待预先处理程序的时间,也省去用户手 动转换程序的麻烦。具体实施例方式以下对本专利技术的方法进一步描述本实施例在以本专利技术技术方案为前提下进行实 施,给出了详细的实施方式和具体的操作过程,但本专利技术的保护范围不限于下述的实施例。实施例本实施例包括以下步骤第一步,建立一个共享读取的程序计数寄存器组SPC,该寄存器组中寄存器的个数 与CPU核的数目相同,每个寄存器分别与对应的CPU核相连以实时地储存该CPU核的程序 计数器本文档来自技高网
...

【技术保护点】
一种多核平台下串行程序运行时的自动并行化加速方法,其特征在于,包括以下步骤:第一步,建立一个共享读取的程序计数寄存器组SPC,该寄存器组中寄存器的个数与CPU核的数目相同,每个寄存器分别与对应的CPU核相连以实时地储存该CPU核的程序计数器值;第二步,当存在空闲的CPU核时,进行加速对象选择处理,得到自动并行加速线程的加速对象为线程P;第三步,当线程P存在已分析指令集合S↓[p]时,载入该集合S↓[p];否则,为线程P新建一个集合S↓[p],对线程P所在的CPU核进行读取处理,得到线程P所在的CPU核当前正在读取的指令I↓[c],并由I↓[c]追踪线程P下一条将要执行指令的地址,将追踪分析的指令代码和跳转关系加入集合S↓[p]中;第四步,采用第三步的方法,得到线程P将要执行的所有指令,当集合S↓[p]中每次加入条件转移指令后且集合S↓[p]中存在循环代码时,进行进度校验和替换处理;第五步,当线程P被调度出CPU核时,系统以中断方式将该事件连同当时的SPC↓[p]值发送给自动并行加速线程,当自动并行加速线程正在替换处理中时,则使用此时的SPC↓[p]值作为读取I↓[c]的依据,继续执行替换处理直到退出该步骤;否则,自动并行加速线程根据当时的SPC↓[p]值读取I↓[c],清空或更新集合S↓[p],其结果等待线程P被调入时继续使用;第六步,返回第二步,开始处理新的需要加速的线程。...

【技术特征摘要】

【专利技术属性】
技术研发人员:过敏意杨蓝麒李阳陈鹏宇杨晓鹏王稳寅沈耀
申请(专利权)人:上海交通大学
类型:发明
国别省市:31[中国|上海]

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

1