基于FPGA的异构计算单元数据动态分配控制器及方法
2018-11-14扬州万方电子技术有限责任公司
扬州万方电子技术有限责任公司 陶 娅
异构计算多单元的网络数据分配多在系统及软件层面解决,这就导致计算单元种类或数量较多的情况下适配困难、花费大等问题。为此,提出基于FPGA的异构计算单元数据动态分配控制器及其方法,该控制器以FPGA为核心辅以外设资源及配套软件,利用FPGA的并行优势,进行网络数据的分组、拥堵、队列管理,最终实现异构计算单元的数据动态分配,为异构计算单元间的融合提供参考和支撑。
0 引言
多计算单元服务器(又称多单元服务器)具有性能强大,并行计算能力强的特点,是计算服务器发展的趋势。其目前采用独立的网络处理单元(NPU)进行数据预处理,但其只作用于数据输入端,对数据输出端的处理尚未完善,尤其是在异构单元接口类型不一的情况。
为了解决上述问题,在实际设计中硬件层面通常采用独立NPU以及为各计算单元配备独立数据通道的方式实现,由各个通道接入NPU;软件层面中数据流量控制由操作系统协同各个计算单元自主控制。如山东超越数控电子有限公司的赵瑞东等(CN201710520154)为了解决异构计算机间通信的问题,引入了OpenCL计算语言,增加了开发周期,且其获取数据处理信息是由其中一个计算单元综合各计算单元上报结果处理后再进行数据分配,处理周期长,增加开发成本。
如按照现有方法和手段必然会导致硬件电路设计复杂,软件开发工作难度大,继而拖慢产品研发周期,降低产品竞争力。
为解决上述问题,利用FPGA并行计算能力强的特点,结合IP核技术,提出基于FPGA的异构计算单元数据动态分配控制器及方法。
1 控制器设计方案
FPGA具备并行能力强的特点,广泛应用于通信、计算机等领域,为此基于FPGA辅以外设及配套软件进行异构计算单元的数据动态分配控制。
该基于FPGA的异构计算单元数据动态分配控制器及方法,包括基于FPGA构建的控制器及配套软件算法。
该控制器,以FPGA为核心,外设资源包括用于数据缓存的RAM、用于存放启动数据的NandFlash、用于与异构计算单元做数据交换的RAM及RAM控制器、用于与异构计算单元直接相连的计算单元接口板、用于故障及配置信息输出的串口。具体硬件整体架构如图1所示。
图1 基于FPGA的异构计算单元数据动态分配控制器硬件框架
外设资源中用于数据缓存的RAM是按照规则对交互数据进行分组排序后用于存放优先级较低的数据,该RAM支持扩展,可通过更换不同的RAM控制器及接口便捷的完成升级。
外设资源中与FPGA连接的NandFlash是存放FPGA启动代码及数据分组算法的存储芯片,其中数据分组算法包括分类协处理、策略引擎、业务流量管理三个部分。
外设资源中RAM及RAM控制器用于异构计算单元数据交换的缓存及流量侦测,异构计算单元通过计算单元接口板与RAM控制器相连,RAM控制器另一端与FPGA相连,FPGA内置的IP核用于模拟各类型计算单元的交互接口协议。RAM控制器能够在与其相连的RAM内开辟一个可变容量的环形通道和一个直通通道,环形通道用于计算单元的数据输入,该环形通道能够改变缓冲区大小,RAM控制器能输出使用者也就是计算单元所在环形通道内的地址及空闲区地址信号;直通通道用于输出计算单元计算结果数据。其与计算单元数量为一对一的关系。
如上所述的计算单元接口板是具备多种硬件接口,如现有的CPCI、PCIE、PCI、VPX、MXM接口,各接口的协议及其驱动由FPGA内集成的IP核提供,可通过增删改接口的接插件及IP内核便捷的实现异构计算单元的接入。FPGA内的IP核为各计算单元接口提供驱动,各单元调度信息模块能够向多单元服务器的主计算单元提供各计算单元的调度信息,调度信息包括计算当前计算吞吐量、峰值吞吐量、主要数据分组类别、RAM空闲区,可供主计算单元协同异构计算单元进行数据运算提供支撑。
处于核心位置的FPGA能够连接外置RAM、RAM及RAM控制器、NandFlash,具有统一的数据接口与外部系统相连。FPGA内的IP核为各计算单元接口提供驱动,各单元调度信息模块能够向多单元服务器的主计算单元提供各计算单元的调度信息,调度信息包括计算当前计算吞吐量、峰值吞吐量、主要数据分组类别、RAM空闲区,调度信息能够为FPGA调整RAM及RAM控制器的带宽提供依据。
与该控制器相配合的方法按照如下步骤执行:
步骤1):FPGA上电,读入NandFlash内的配置文件,完成RAM、RAM及RAM控制器、串口、IP内核初始化;
步骤2):检测FPGA初始化配置结果信号,如果初始化成功则获取异构计算单元的接口类型及接口数量信息并执行下一步,否则通过串口输出故障代码信息并转到步骤1);
步骤3):读入NandFlash内的数据分组规则,完成支撑数据分组的分类协处理、策略引擎、业务流量管理三模块初始化,根据步骤2)所获取的接口类型及接口数量信息完成核心的策略算法、拥堵管理算法、调度算法的参数调整,等待外部数据交互;
步骤4):进行外部接入数据的处理,按照分组规则进行数据分组,优先级低的数据由FPGA接收后暂存在RAM中等待取用,优先高的数据由FPGA直接供给RAM及RAM控制器,并经计算单元接口板与计算单元进行交互,获取RAM控制器提供的空闲区地址及使用者地址信号,经计算获取到周期时间内计算单元数据取用量,动态调整环形分区大小及各计算单元的数据带宽、分组规则,并向主计算单元提供各计算单元的调度信息,调度信息包括计算当前计算吞吐量、峰值吞吐量、主要数据分组类别、RAM空闲区。执行步骤4)直到数据交互结束。
其中步骤3)中将数据分类为音频数据、视频数据、业务数据和其他数据,其中业务数据可根据具体业务细分。
其中步骤3)中策略算法选择令牌桶算法;拥堵管理算法选择加权随机早期检测算法;调度算法选择加权公平队列算法。
具体执行流程如图2所示。
2 与OPEN CL方式的对比测试
OPEN CL是一个面向异构系统通用编程的标准及编程环境,其是一个纯软件系统,需要先在系统中启动然后进行数据分配及协同操作。为此针对某型异构计算单元进行开发,从启动时间、大数据通信、高频突发通信三个个指标进行分析对比。
通过实测分析,启动时间与计算单元的数量之间的关系为:随着个数的增加基于OpenCL开发的异构计算分配系统在各系统上存在启动时间增加的情况,且增加的时间与异构的处理器还有一定的关系,并不是一个线性的增长过程,而本控制器对系统启动的影响微乎其微。
通过实测分析,大数据通信性能关系为:open CL处理数据分配让异构单元分出资源进行处理,占用了一定的资源,而本方案将处理部分下移至FPGA,通信数据量对异构计算单元的资源影响微乎其微,但数据量过大时FPGA也存在性能不足的可能。
通过实测分析,高频突发通信性能关系为:open CL处理数据分配让异构单元分出资源进行处理,占用了一定的资源,随着频率的提高占用资源越多。本方案几乎不占用异构计算单元的资源,尤其是在小数据量多目标情况下效果更优。
图2 基于FPGA的异构计算单元数据动态分配方法流程
3 结论
本方案能够为异构多计算单元提供交互数据,能够在底层进行数据流量的管理,避免操作系统层的改动,减少硬件电路,增强整个系统的稳定性,兼容性好,适用范围广;控制器内各模块耦合程度低,可根据性能需要进行升级、扩展,具备广阔的应用前景。