system: [SYSTEM]

user: 3. 事务数据流图定义与生成 3.1. 程序数据流图分析 可重构SoC是面向特定领域应用需求设计的，对可重构SoC的性能评价和性能分析不能脱离于应用程序。程序数据流图以图形方式表达了应用算法程序运行过程中，数据传输和运算操作处理功能的逻辑结构关系。既描绘了数据从节点输入移动到输出的过程中所经过的计算处理功能，又描述了数据传输的路径和方向。虽然数据流图与具体硬件实现无关，而且没有时间参数信息，但是程序数据流图准确描述了可重构SoC的应用程序计算处理功能、运算操作执行先后顺序和运行过程。这些要素是构建可重构SoC性能分析模型不可或缺的。 以数字语音增强处理领域应用为例，主流的谱减法、维纳滤波法、基于字典训练算法中，计算密集型基本算法主要是FFT、一阶平滑滤波、矩阵乘等。矩阵乘法运算是两个矩阵的行向量与列向量的点积运算的循环，基于字典训练的算法中矩阵乘的规模为([300 × 256] × [256 × 1]，[1 × 256] × [256 × 400]，进行一次矩阵乘法需要几百次点积运算。点积运算的数据流图如图3所示。由数据流图中可以看出，矩阵乘法运算的运算操作类型为乘法和加法，对缓存访问频繁。 FFT算法中基本运算操作单元是蝶形单元，对于256点的基2 FFT需要循环执行1024个蝶形单元。一个蝶形运算是三个复数进行复数乘加运算，其中一个为旋转因子 。式中，N为FFT点数，W为FFT点数决定的常数。蝶形单元的数据流图如图4(a)所示，主要运算操作类型是乘法、加法和减法。一阶平滑滤波的计算公式为 ，计算简单，但是对于每一帧数据都要循环256次。其数据流图如图4(b)所示，主要运算操作类型是乘法、加法和减法。 以上三种密集型计算虽然基本运算的结构简单，但是运行过程是对这些基本运算的嵌套循环，而且循环次数相当大，尤其是乘法运算需要多次进行，而乘法运算占用相当多的运算资源，因此粗粒度可重构协处理器的基本运算单元主要进行这三种运算，结合这三种典型运算研究可重构SoC体系结构性能分析具有代表性。 数据流图中的数据从节点输入移动到输出的过程中数据传输的路径和方向是一种类树型结构关系，若对数据流图进行扩展，生成与可重构协处理器硬件模块计算功能和性能参数有对应关系的事务数据流图，采用合理的自动搜索统计算法，可以快速得出可重构协处理器运行该应用程序的性能参数。这是构建可重构SoC性能分析模型和分析方法的有效技术途径。 3.2. 事务数据流图的定义 在电子系统级(ESL)设计方法领域，国际OCP-IP标准化组织已明确论述，事务是从更高抽象层次表 图3. 点积运算的数据流图 图4. 蝶形运算和一阶平滑滤波数据流图 示数据处理与数据通信的交换过程，SoC事务建模的核心概念是将运算功能和通信功能分开，模块之间的通信通过通道实现。一个系统的事务模型不但和数据流图一样描述了数据在模块之间传输和运算操作处理功能的逻辑结构关系，而且还描述了通道数据通信和模块数据处理的时间性能参数信息。根据事务模型概念和特征，为了在数据流图中体现可重构SoC硬件模块的功能和性能，对数据流图进行如下扩展，定义新的事务数据流图。 事务数据流图(TDFG)是一个超图(hydra-graph)，是由一个超节点(Hydra-node)集合TN、超边(Hydra-edge)集合TE、以及超节点输入端口集合IP和超节点输出端口集合OP所组成的四元组构成，TDFG = (TN， TE， IP， OP)。 首先，将数据流图的节点扩展定义为超节点，如图5所示。 “n1”，“n2”和“n3”是三个超节点(hydra-node)，节点“n1”IP(n1) = {In1， In2， In3}，OP(n1) = {Out1， Out2}。节点“n3”IP(n3) = {a， b， c}，OP(n3) = {d}。超节点(hydra-node)可包含有多个运算操作功能表示这些运算操作同时进行。运算操作功能包括算术运算，逻辑运算，数据读/写操作等。 一个节点可有多个输入输出端口，为了区分不同节点的输入输出端口，节点n的输入或输出端口p可以写为pn.p。上图中有两个被命名为“In1”的端口。为了区分，一个记为“n1. In1”，另一记为“n2. In1”。对节点n的端口p， 或者 ，使用Node(p)来表示p所属的节点，因此，Node(n. p) = n。上图中，Node(a) = n3。对输入端口的集合 ，使用NODE(IP)来表示节点集合，同理，对输出端口集合 ，使用NODE(OP)可以表述节点集合。如对于输入端集合IP = {n1. In1， n2. In1， n3. a}，NODE(IP) = {n1， n2， n3}。 考虑到硬件实现中的计算和访存特性，进一步将超节点分为计算节点和存储节点，计算节点的功能属性赋以运算操作类型值和时间性能参数值。数据访问的性能参数对SoC系统的性能有重要的影响，为了描述存储模块的功能和性能，将存储节点的功能赋以功能类型值(静态存储器RAM、动态随机存储器SRAM、寄存器文件RF等)和对应的时间性能值，存储节点的输出端口赋以读延迟性能参数，输入端口赋以写延迟性能参数。计算节点与存储节点是相互独立而又紧密联系的，存储节点是计算节点的数据来源之一，也是计算节点的最终输出。 进一步扩展定义数据流图的边为超边(Hydra-edge)。超边集合TE是数据通路连接关系的集合，对应于数据流图来说，表示的是数据的流出方向， ，te∈TE每条超边表示了一条数据通路，超边的头端/尾端表示数据通路的数据流向和数据来源。超边的尾端连接超节点的一个输出端口，超边头端连接另一超节点的一个输入端口，表示建立了两个节点间的一条数据通路。超边te = (te， He)有一个尾端te和非空头端集合He： 图5. 超节点超边示意图 超边从它的尾指向它的头。边“e”可写为(n1. Out2， {n2. In1， n3. a})，这里te = n1. Out2和He = {n2. In1， n3. a}。当节点的输入端是边的头端时，边ed称为节点pn的输入边，即，存在一个端口 且 ，相应的节点n称为尾节点。当节点的输出端是边的尾端时，边ed称为节点n的输出边，即， ，相应的节点n称为头节点。在图3.2中，边“e”是“n1”的一条输出边并且是“n2”或“n3”的输入边，n1是头节点，“n2”和“n3”是尾节点。超边的属性包括边的头端连接的端口、尾端连接的端口、边的数据通信时间参数或重构时间性能参数。超边的属性包括边的头端连接的端口、尾端连接的端口、边的数据通信延迟时间参数或重构延迟时间性能参数。 3.3. 事务数据流图生成 1) 基于C++的事务数据流图生成方法 由于程序数据流图和事务数据流图描述的应用程序数据传输和运算操作处理功能的逻辑结构关系是一致的，因此由程序数据流图扩展生成事务数据流图，实质上是实现可重构协处理器硬件模块功能和性能参数到程序数据流图节点的映射。在映射中数据流图节点的记录域必须扩展，以保证准确完整表示事务数据流图超节点所具有的端口、处理功能、性能参数等属性。以蝶形运算为例，图6为蝶形运算数据流图映射到可重构流水线协处理器上产生的事务数据流图。图中，n0是映射了缓存部件MFRF的存储节点，缓存部件有4个读数据端口(A B C D)和两个写数据端口(E F)。n1~n10是映射了可重构处理单元的计算节点。 可重构SoC的性能参数主要有以下几个部分： · 计算模块的计算时间(Operation Time， OT)； · 存储部件存取时间，包括取数时间(Load Time， LT)和存数时间(Store Time， ST)； · 可重构通信通道的配置时间(Configuration Time， CT)，配置时间包括配置信息读取时间和可重构数据通路的重构时间。 图6. 由蝶形运算数据流图扩展生成的事务数据流图 不同的可重构协处理器设计方案，对各模块功能可以有多种不同选择，通常CPE是同构的，但是在不同的方案中CPE指令集可能不同。存储部件有MFRF、RAM、ROM等多种选择，可重构数据通路也有开关网络、路由网络等多种实现方式。每种功能都有相应的性能参数，功能性能参数查找表如表1所示。 C++描述中，数据流图和事务数据流图都是有向图，都可以采用图7所示的邻接链表表示法表示。 在事务数据流图的邻接链表表示法中，每一个节点包含三个域：节点编号；可扩展的性能分析相关结构PM，LS；指向头节点的指针。编号为0的节点是存储节点，具有一定的特殊性，节点0的性能分析相关结构LS包含了存储节点的功能：取数Load和存数Store；其他节点是计算节点，计算节点相关结构PM中包含了超节点包含的运算的种类与个数，以及与功能对应的性能。由于运算最开始的数据来源是存储器，运算完成之后最终要将结果存在存储器中，因此存储节点0表现了运算流程的开始和结束。对于以存储节点为头结点的超边，对应的尾节点为运算的起始节点，如图7中的节点1和节点2；对于以存储节点为尾结点的超边，对应的头节点为运算的终止节点，如图7中的节点4和节点5。 事务数据流图生成方法就是从数据流图的邻接链表向事务数据流图的邻接链表映射的方法。具体是由事务数据流图设计者，采用C++根据应用程序执行流程和功能性能参数查找表填充完事务数据流图链表的各个域，即可生成事务数据流图。 2) 基于编译前端工具的事务数据流图自动生成方法 多种C或C++编译器，如GCC、LLVM等的前端工具具有自动生成程序数据流图的功能。在编译前端生成的程序数据流图基础上，根据事务数据流图定义和可重构SoC事务级体系结构特征，设计一个转 图7. 事务数据流图和数据流图的邻接链表表示 Table 1 Lookup table of function and performance parameter 模块名 功能 性能参数 CPE0-CPE7 加法 减法 乘法 … Add_Time Sub_Time Mul_Time … MFRF RAM ROM 读数据时间 写数据时间 Read_Time Write_Time 可重构开关网络 配置信息读取时间 CR_Time 可重构路由网络 数据通路重构时间 DC_Time 表1. 功能性能参数查找表 换工具，实现自动生成事务数据流图。目前课题组正在开展此项研究工作。