为程序定制的可重构加速器实现方法

文档序号:6466978阅读:143来源:国知局
专利名称:为程序定制的可重构加速器实现方法
技术领域
本发明涉及程序优化设计、FPGA设计领域,尤其涉及一种为程序定制的可 重构加速器实现方法。
背景技术
随着新材料的应用和新技术的发展,超大规模集成电路技术取得长足进步, 现处理器相当面积上集成的晶体管数目即将超过100亿。但是由于晶体管利用 效率、漏电、散热和功耗问题,以提高处理器主频来获得性能提升变的得不偿 失。因此,多核体系结构技术取而代之成为处理器的主流技术,通过在单芯片 内封装多个处理核,在物理上实现了真正的并行,因而相对提高了晶体管的利 用效率、缓解了散热和功耗问题,为计算机带来了较大的性能提升。从当前的 趋势看,处理器芯片内集成的核的数目将会继续迅速增多。然而,由于一般应 用并行度难以提高的限制,当处理器通用核的数目超过16个后,再增加通用处 理核的数目就难以带来更大的性能提升,因此单纯增加同构的通用处理核的数 目虽然能用尽迅速增多的晶体管,应用程序却并不能充分利用数量日增的通用 处理核,计算性能自然也不会简单地随着处理核数目的增加而提高。
定制的协处理器和加速器是满足用户对性能不断增加的需求的另一种技术 手段,现代计算系统中常包括一些专用的协处理器或加速器,包括面向科学计 算等的"领域专用协处理器"、图形图像处理和数字信号处理等"行业专用处理 器",如Cell的辅助处理核、英特尔⑧图形媒体加速器950等。这些专用协处理 器和加速器的体系结构利用特定应用的特征进行定制,从而可以达到定制应用 的高性能和高效率。但是这种专用化的协处理器和加速器设计只有在运行所面 向的应用时才会获得好的性能,利用率和灵活性不高,而且专门化的定制将极 大地增加了设计成本。
在这种情况下,在传统计算机系统中增加由可重构设备多构成的可重构加 速器为提升计算性能提供了另一种途径。通过可重构设备的动态重配置,可重 构加速器可以支持各种不同类型应用,从而能在更加广泛的范围内达到较高性 能,提高可重构硬件资源的利用率,同时获得通用处理器适应多数应用的高灵 活性与专用处理器的高性能和高效率。在解决应用的多样性问题的同时,还可 解决加速器硬件资源利用率、设计复杂性、系统可靠性以及降低成本和功耗等多方面的问题。

发明内容
为了获得更好的利用可重构资源、设计定制的加速器,为了提高应用程序 的执行性能,本发明的目的在于提供一种为程序定制的可重构加速器实现方法。 本发明解决技术问题所采用的技术方案是 一种为程序定制的可重构加速器实现方法
1) 可重构加速器辅助计算
可重构加速器接受程序的调用,负责处理程序中计算密集的部分,在可重构 加速器的计算过程中,程序挂起等待可重构加速器返回;
2) 程序定制可重构加速器实现过程-.
① 程序剖析程序剖析过程包括2个步骤
I. 确定函数热点
确定函数热点是一个动态剖析过程,确定程序中占用执行时间最多的部分函 数;利用剖析器对运行时的程序进行跟踪,以函数为粒度对运行时程序进行采 样,然后以函数为基本单元对采样数据的统计,得出各函数的调用次数和执行 时间,由执行时间从多到少进行排序,其中执行时间最多的函数,就是程序的 热点函数,可以作为实现为可重构加速器的候选函数;
II. 分析数据依赖
数据依赖分析是一个静态分析过程,对热点函数进行数据依赖分析确定函数 的并行度;如果循环迭代之间的不存在数据依赖,那么循环的不同迭代就能并 行展开,从而充分利用FPGA的物理高并发性;如果热点函数通过预测评估获 得性能提升,那么就实现为可重构加速器,以加速程序的执行;
② 软硬件划分
确定实现为可重构加速器的函数之后,实际上已经完成了划分,软硬件划分 歩骤主要负责定义程序与可重构加速器之间的接口和参数;由于程序调用可重 构加速器需要额外代价,应该在可重构加速器中增加数据缓存,将多次调用合 并使通信集中以消除多次调用的额外代价,增加每次调用的执行时间,减少程 序调用可重构加速器的次数;
③ 热点函数在FPGA上的实现
根据②中定义的程序与可重构加速器之间的接口和参数,实现可重构加速器 的硬件接口,并增加缓存,支持在软件上减少可重构加速器的调用次数;通过 增加缓存,将多次调用可重构加速器的输入数据通过一次调用传输到可重构加
5速器的缓存,减少总体的通信代价;
利用可重构逻辑并行实现与热点函数相同的功能,并满足提高频率和减少执 行周期的目的;提高可重构加速器的频率和减少执行周期,都能直接提高可重 构加速器的性能;
④修改程序调用加速器;实现步骤 最后,需要在程序中调用FPGA上的加速器
I. 在程序中可重构加速器加速的热点前增加代码,完成可重构加速器输入 数据的准备;
II. 通过可重构加速器软件接口调用执行可重构加速器,程序挂起,等待可 重构加速器返回结果;
III. 接收可重构加速器的返回结果,整理返回给程序,程序再继续执行。 本发明具有的有益效果是
本发明是一种基于FPGA为程序定制可重构加速器的实现方法,其主要功 能是在传统计算机体系结构上使用FPGA将程序的热点函数实现为可重构加速 器,并将程序中热点函数的调用修改为对应可重构加速器的调用,加速热点函 数的执行。
1) 使用可重构加速器实现程序的热点函数,提高程序总体加速比;
2) 使用FPGA实现可重构加速器,在达到近似应用定制集成电路的性能的 同时,保持了通用处理器的灵活性。


附图是本发明的总体流程图。
具体实施例方式
为程序定制的可重构加速器实现方法的具体实现流程如下。
1) 增加可重构加速器辅助计算-
在传统通用计算机系统上,增加FPGA作为可重构部件,FPGA通过PCI-E 总线连接到传统计算机系统。
可重构加速器负责处理程序中计算密集的部分,接受程序的调用,当程序调 用可重构加速器之后,可重构加速器开始处理输入数据,在可重构加速器的计 算期间,程序挂起;当可重构加速器执行结束,将结果返回给程序,程序再继 续执行。
2) 程序定制可重构加速器实现过程,如附图所示 ①程序剖析I. 确定函数热点
确定函数热点是一个动态剖析过程,可以确定程序中占用执行时间最多的部 分函数;
a. 利用剖析器对运行时的程序进行跟踪,跟踪记录函数的调用次数,以及每 次调用的开始时间和返回时间;
b. 以函数为基本单元对采样所得数据的统计,得出各函数的调用次数和执行 时间,由执行时间从多到少进行排序,记为队列々,;
c. 排在队列々,第1位的函数为执行时间最多的函数,是程序的热点函数, 可以作为实现可重构加速器的候选函数。
II. 分析数据依赖
数据依赖分析是一个静态分析过程,对热点函数进行数据依赖分析可以确定 函数的并行度,通常循环是函数中占用最多执行时间的部分,因此循环是优先 加速的部分;
a. 对队列^,中排序第1位的函数中的循环进行数据依赖分析,迭代之间的 不存在数据依赖,那么循环的不同迭代就能并行展开,对函数对应可重构加速 器进行性能预测评估;
b. 对热点函数进行性能预测评估,如果预测获得性能提升,可以实现为可重 构加速器;如果预测不能获得性能提升,从队列々 依次选择下一个函数进行 分析,直到下一个函数的执行时间占程序总执行时间少于10%,说明此程序中 所有函数不。
性能预测评估如下-
a.计算函数的处理器执行时间,表示为T7w化to :
其中
C/ocK^c/^CTt;表示CPU完成一次执行的周期数; /"Wrwc^"iVww表示CPU完成一次执行的指令数; C尸/为每条指令周期数(Cycles Per Instruction);
i^%Me"c_vCT〃为处理器主频。 当CPI为1时,执行时间近似为<formula>formula see original document page 8</formula>
b.计算函数对应可重构加速器的执行时间,表示为7)'me^t; 7Y靴- C/ocfccXc/e Vu
其中
C/odCyc/e^^表示FPGA加速器完成一次执行周期数, Fre^朋c;^t;为FPGA加速器的频率。
c.比较函数的处理器执行时间和对应可重构加速器执行时间,当7 m^^; < r/附ec/51/时,艮卩-
根据经验统计可得,处理器的主频大约是FPGA加速器频率的20倍,因此
C/wA:Qvc/e5^ 〈-^-
这说明如果FPGA加速器的加速比要大于1,那么可重构加速器的执行周期 数应该小于程序执行指令数的1/20,也就是可重构加速器的一个周期内要完成 20条以上的指令所需要完成的工作。
②软硬件划分-
软硬件划分步骤主要负责定义程序与可重构加速器之间的接口和参数,包括 下列步骤;
I. 定义可重构加速器的软件调用接口,提供给程序调用的软件接口,应该 减少可重构加速器输入数据的准备时间;
II. 定义可重构加速器的硬件接口,在可重构加速器中增加数据缓存,将多 次调用合并使通信集中以消除多次调用的额外代价,增加每次调用的执行时间, 减少程序调用可重构加速器的次数;
◎热点函数在FPGA上的实现
I.实现可重构加速器的硬件接口,根据②中定义的程序与可重构加速器之 间的接口和参数,并增加缓存,支持在软件上减少可重构加速器的调用次数; 通过增加缓存,可以将多次调用可重构加速器的输入数据通过一次调用传输到 可重构加速器的缓存,减少总体的通信代价;II.利用可重构逻辑并行实现与热点函数相同的功能,并满足提高频率和减 少执行周期的目的;提高可重构加速器的频率和减少执行周期,都能直接提高 可重构加速器的性能;
④修改程序调用加速器;实现步骤 最后,需要在程序中调用FPGA上的加速器
I. 在程序中可重构加速器加速的热点前增加代码,完成可重构加速器输入 数据的准备;
II. 通过可重构加速器软件接口调用执行可重构加速器,程序挂起,等待 可重构加速器返回结果;
III. 接收可重构加速器的返回结果,整理返回给程序,程序再继续执行。
权利要求
1、一种为程序定制的可重构加速器实现方法,其特征在于1)可重构加速器辅助计算可重构加速器接受程序的调用,负责处理程序中计算密集的部分,在可重构加速器的计算过程中,程序挂起等待可重构加速器返回;2)程序定制可重构加速器实现过程①程序剖析程序剖析过程包括2个步骤I. 确定函数热点确定函数热点是一个动态剖析过程,确定程序中占用执行时间最多的部分函数;利用剖析器对运行时的程序进行跟踪,以函数为粒度对运行时程序进行采样,然后以函数为基本单元对采样数据的统计,得出各函数的调用次数和执行时间,由执行时间从多到少进行排序,其中执行时间最多的函数,就是程序的热点函数,可以作为实现为可重构加速器的候选函数;II. 分析数据依赖数据依赖分析是一个静态分析过程,对热点函数进行数据依赖分析确定函数的并行度;如果循环迭代之间的不存在数据依赖,那么循环的不同迭代就能并行展开,从而充分利用FPGA的物理高并发性;如果热点函数通过预测评估获得性能提升,那么就实现为可重构加速器,以加速程序的执行;②软硬件划分确定实现为可重构加速器的函数之后,实际上已经完成了划分,软硬件划分步骤主要负责定义程序与可重构加速器之间的接口和参数;由于程序调用可重构加速器需要额外代价,应该在可重构加速器中增加数据缓存,将多次调用合并使通信集中以消除多次调用的额外代价,增加每次调用的执行时间,减少程序调用可重构加速器的次数;③热点函数在FPGA上的实现根据②中定义的程序与可重构加速器之间的接口和参数,实现可重构加速器的硬件接口,并增加缓存,支持在软件上减少可重构加速器的调用次数;通过增加缓存,将多次调用可重构加速器的输入数据通过一次调用传输到可重构加速器的缓存,减少总体的通信代价;利用可重构逻辑并行实现与热点函数相同的功能,并满足提高频率和减少执行周期的目的;提高可重构加速器的频率和减少执行周期,都能直接提高可重构加速器的性能;④修改程序调用加速器;实现步骤最后,需要在程序中调用FPGA上的加速器I. 在程序中可重构加速器加速的热点前增加代码,完成可重构加速器输入数据的准备;II. 通过可重构加速器软件接口调用执行可重构加速器,程序挂起,等待可重构加速器返回结果;III. 接收可重构加速器的返回结果,整理返回给程序,程序再继续执行。
全文摘要
本发明公开了一种为程序定制的可重构加速器实现方法。是通过为传统通用计算机系统增加FPGA,在FPGA上实现为程序定制的可重构加速器对程序进行加速,其主要功能是对程序进行剖析,以函数为粒度采样程序的运行时统计信息,获取程序中计算密集的热点函数,并在FPGA上将热点函数实现为可重构加速器,并将程序中热点函数的调用修改为对应可重构加速器的调用,加速热点函数的执行。本发明使用可重构加速器实现程序的热点函数,提高程序总体加速比;使用FPGA实现可重构加速器,在达到近似应用定制集成电路的性能的同时,保持了通用处理器的灵活性。
文档编号G06F9/44GK101441564SQ20081016290
公开日2009年5月27日 申请日期2008年12月4日 优先权日2008年12月4日
发明者严力科, 罡 王, 王勇刚, 度 陈, 陈天洲 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1