CGRA-PIMSim:基于粗粒度可重构阵列的存内处理架构仿真器

2021-04-01 08:14刘硕
现代计算机 2021年5期
关键词:指令重构架构

刘硕

(上海交通大学电子信息与电气工程学院,上海200240)

0 引言

随着数据规模的不断扩展和对DRAM需求的进一步提升,人们开始思考在内存中处理大数据应用的可能性。与传统基于硬盘访问的架构系统相比,将数据存储在主存中可以实现数据访问的量级加速。该类存内计算在数据处理方面的潜力已经被包括RAMCloud[1]、GraphLab[2]、Pregel、Oracle TimesTen[3]和SAP HANA[4]在内的学术和工业界所证实。

粗粒度可重构计算架构(Coarse-Grained Reconfigurable Array,CGRA)被证明在高性能系统计算和低功耗方面有显著优势[5-6],已经成为近年来的研究热点[7-9]。其主要特点是芯片的功能可以在运行时根据不同的应用进行配置,结合了专用集成电路的高能效性和通用可编程处理器的高灵活性。这使得可重构处理器非常适合支持在性能和功耗方面具有较高要求的数据密集型应用,例如多媒体领域[10-12]和密码学领域[13]。

由于可重构架构和存内处理都具有对数据密集型应用的友好性,本文将实现基于粗粒度可重构阵列的存内计算架构仿真,以探寻该架构在处理数据密集型应用上的性能优势。为了实现按需求快速仿真,该仿真器采用面向对象的层次化建模设计和参数化定义。实验结果表明,与传统CPU架构相比,实现10x以上的加速提升。

1 设计策略

1.1 架构仿真策略

该仿真器的设计采用粗粒度可重构硬件体系结构的一般定义,如图1所示,在具体设计实现过程中,该体系结构被划分为三个抽象层:①处理单元(Processing Element,PE)级仿真;②处理单元阵列(Processing Element Array,PEA)级仿真;③CGRA级仿真。

图1 CGRA架构

PE级:在细粒度架构中,逻辑单元通常是查找表和可编程寄存器;在粗粒度架构中,PE则是存储单元(Load/Store Unit,LSU)或是完整的运算逻辑单元(Algorithm Logic Unit,ALU),PE间支持并行数据处理。

PEA级:指定PE的数量和互连方案,PEA的规模和互连方案都会对架构性能造成显著影响。该方案定义PE之间关联方式和数据传输方式,PE的数量支持参数化配置,可以通过相关接口进行调整建模。

CGRA级:CGRA层是最高级别的抽象层。在该层视角下,PEA可以被认为是一个基本的计算单元。指令寄存器(Configuration Memory)用以存储和配置ALU输入和功能指令。数据存储器(Data Memory)用于存储临时结果。I/O接口用以CGRA与外界的数据传输和交换,在本文仿真器中,I/O接口将与DRAM直连,实现近数据处理。

1.2 架构探索流程

本文采用的架构探索流程如图2所示。基于CGRA设计存内处理架构建模首先要进行应用分析,确定性能要求;之后选择架构参数,初步参数选择是依据过往经验,后续参数将依据具体性能评估结果进行调整;进行仿真建模,实现目标仿真器,进行性能评估。

图2架构探索流程图

2 CGRA-PIMSim设计方法

2.1 CGRA仿真

CGRA架构仿真时基于面向对象的层次化建模概念,各组件之间有类的继承关系,如图3所示。

图3 CGRA架构内继承关系

对于图1中的各组件,可以用类内函数来模拟硬件行为。例如PE类的函数包括运算(algorithm_func)、选择器(mux_func)和指令配置(configuration_func)。运算函数将执行由配置指令控制的算术逻辑功能,这里将设置一系列通用算术运算(add、multiple等)和逻辑运算(AND、OR、XOR等),未来针对特定领域的应用将添加或移除额外的运算功能。选择器函数根据配置指令接收目标输入,并将它们输送到运算部分。指令配置函数接收来自外部的命令,并将目标指令发送到运算和选择函数中,作为一个配置参数变量。

PE的硬件架构如图4所示,包含算术逻辑单元(ALU),两输入一输出I/O接口,选择器(MUX)和本地寄存器堆。

图4处理单元的硬件架构

存内处理的概念体现在CGRA整体对外的I/O接口与DRAM(图4中的Off-chip Memory)进行直连,实现数据近内存传输,减少数据传输延时和相应功耗。

2.2 事件驱动仿真机制

为了提高仿真效率和降低仿真模型编写的困难程度,采用事件驱动仿真机制实现目标架构的搭建。

Gem5提供用于创建事件驱动的包装器功能(EventFunctionWrapper类)。目标函数封装时使用lambda表达式,例如:

使用sch edule()函数进行事件安排,执行目标函数processEvent(),使其在某一时刻触发:

本次设计基于事件驱动仿真搭建PE的行为模型,PE类内的运算(algorithm_func)函数、选择器(mux_func)函数和指令配置(configuration_func)函数作为processEvent目标函数被EventFunctionWrapper类封装,根据具体行为的执行顺序进行阶段触发。由于PE内数据传递都是非阻塞传输且物理距离很短,因此上述事件函数的触发时间普遍设置为当前时刻的下一个周期。

3 基于Gem5的仿真实现

3.1 仿真流程

Gem5是一款高度模块化、支持事件驱动方式的全系统仿真器。在Gem5中,所有模块单元都被抽象设计为一个具体完成功能实现的C++类和一个对应模块接口的Python类。当Python类与相关C++类绑定时,传递给Python类的具体参数将通过Gem5的参数传递机制赋值给C++类的相应成员变量。C++类内完成父类的继承重写(虚函数),构造函数和事件类(Event)实例化等。

仿真流程如图5所示。由Scons软件基于Python完成编译,将所有模块文件编译并链接生成可执行文件。架构实现过程中相关配置参数的传递是通过Python模型对C++模型的接口实现的。具体应用时只需对Python模型中的参数进行设置,参数将会传递至C++模型中,完成对架构整体的搭建和初始化。具体仿真阶段,将可执行文件加载到系统中开始相关仿真,Gem5提供debug-file功能,打印中间过程,并取得输出结果。

图5 Gem5仿真流程

3.2 CGRA-PIM调度机制

Gem5仿真平台有完整的CPU、总线和内存等的仿真,本文设计实现的CGRA-PIM架构通过仿真I/O接口直连到DRAM上。为了实现主处理器对CGRAPIM的调起操作,这里将在原有的X86指令集上进行扩展,利用Gem5中原有的X86预留空白指令位置实现目标CGRA-PIM指令。优势在于CGRA-PIM指令可以直接作为已有主处理器指令的一部分进行相关执行,不需要对现有的编译器和编程模型进行修改,降低实现难度。

将cpp文件编译为可执行文件,由CPU进行文件执行,当CPU执行到CGRA-PIM特定指令时,由CPU负责调起相关处理单元。其中,CGRA-PIM和CPU是并行工作的,前者进行相关处理时,CPU将继续执行之后的指令。这种并行处理的优势在于能够有效减少PE的空闲时间,有效提高计算资源利用率。

CPU和CGRA-PIM并发执行可能会带来的问题是当处理的计算密集型应用需要循环操作时,CPU调取下一条CGRA-PIM相关指令的时间将有可能比CGRA-PIM自身完成上一条相关指令时间更短(与CGRA-PIM处理的数据规模有关,这里将根据实际运行时间有选择性地控制可重构阵列规模),即后者在当前时刻有可能无法立即执行该条指令。因此为了避免主处理器运行阻塞,也为了避免造成当前指令的遗失,将设计添加CGRA-PIM工作队列来存放待处理的任务,该工作队列采用先进先出(FIFO)的行为方式。由CPU调取CGRA的待处理任务将会放入该工作队列中,已经完成的任务会从队列中弹出。

4 评估

系统参数设置如表1所示,目标架构CGRA为异构粗粒度可重构模型。处理单元阵列规模为8×8,共64个处理单元组成。其中LSU28个,ALU36个,LSU分布在四条边上,ALU分布在阵列内部。

表1 系统参数设置

由于CGRA-PIM架构主要解决的是大规模数据传输造成的性能影响,因此将使用典型的数据密集型应用——稀疏矩阵向量乘(SpMV)来评估该架构性能。

选择不同规模矩阵(N×N)作为测试样本,将比较CGRA-PIM架构和CGRA-DRAM(不考虑近内存处理)架构以及传统CPU架构(CPU-DRAM)的性能,将根据传统CPU架构进行归一化。不同规模矩阵进行SpMV应用后三者性能结果对比如表2所示。

表2 各架构性能加速比

不同架构性能加速比在不同规模矩阵下呈现结果有一定差异。随着矩阵规模的扩大,CGRA-DRAM和CGRA-PIM的加速比都有提高,原因是处理数据的时间占比上升。在矩阵规模较小时,数据读取和预处理的时间占比较高,留给CGRA进行处理加速的循环操作时间占比较低,故而加速比较低,而随着矩阵规模的扩大,循环操作的时间占比提升,这时可供CGRA加速的余地更大,因此带来了更高的加速比,这也是CGRA-PIM更适合进行数据密集型应用加速处理的原因。

5 结语

本文从实际应用角度出发,针对数据密集型应用提出一种新型的存算一体架构CGRA-PIM。通过Sp-MV实例说明该架构较传统架构的优越性,取得了明显的性能提升。未来将考虑在该架构的通用性上进行扩展。

猜你喜欢
指令重构架构
青少年劳动教育实施的认知与策略重构
“双减”能否重构教育生态?
长城叙事的重构
基于云控平台雾计算架构的网联汽车路径控制
一样,不一样
《单一形状固定循环指令G90车外圆仿真》教案设计
构建富有活力和效率的社会治理架构
新机研制中总装装配指令策划研究
用四维的理念重构当代诗歌
VIE:从何而来,去向何方