数据驱动计算概述
计算机体系结构可以分为控制流计算机和数据流计算机。控制流计算机又称为冯o诺依曼计算机,其程序的运算执行顺序是预先设置好的,按照编程者的控制(程序指针)逐条执行。现在实际应用的计算机都使用控制流机制,而数据流计算机运算的执行顺序取决于数据间的互相依赖关系和操作数的有效性,指令间没有固定的顺序,不需预先设定,更符合人们的思维习惯。
数据流计算机又可以分为两类:数据驱动和需求驱动。数据驱动计算机运算执行的顺序由输入数据的有效性决定,需求驱动计算机运算执行的顺序依赖于数据的需求。目前绝大多数数据流计算机都采用数据驱动计算技术。
数据驱动是一种不同于传统冯o诺依曼结构的先进计算结构,可以简单方便地挖掘出运算的时间并行性和空间并行性,不需要程序指针和进程调度机制。使用这种非传统的计算结构将有助于提高系统的安全性和处理能力。
如图1所示,分别用冯o诺依曼计算模型和数据驱动计算模型实现下式的运算:
R=frac{AB-CD}{AC+BD}
具体实现如图1所示:
在数据驱动概念中,运算单元(如加减乘除等运算)称为节点,连接节点之间的通道称为弧。从图1可以看出,传统的冯o诺依曼计算结构使用程序指针控制程序的顺序执行;而数据驱动计算结构的计算顺序只由数据的依赖关系决定,只要数据到达就可以进行计算,有效地挖掘了程序的时间并行性和空间并行性,非常适合于并行处理。
数据流计算的运算顺序不是预先确定的,而是在程序运行时动态确定,采用运行时的数据依赖性作为运算顺序的判定机制。所以,数据流计算机没有程序指针,而是直接编译和运行数据流图。编译器产生一组操作数;每个操作的结果有一个或多个目的地;只要操作数有效,操作将会被安排尽快进行。
数据驱动处理器DDMP
数据驱动处理器是基于数据驱动计算模型设计的、内部包含多个处理单元、使用超长自定时流水线和异步电路结构的并行处理器,具有超强的计算能力和极低的功耗。
DDMP内部结构
DDMP是Sharp公司开发的一款数据驱动处理器,内部结构如图2所示,包含10个并行处理单元nPE#0~nPE#9,这些处理单元通过一个高速路由器连接起来,每个处理单元内部具有40~60级异步流水线,该流水线全部采用自定时时钟机制,该芯片是一个真正的多处理器系统。
DDMP是一款可以商用的处理器,采用0.25μm工艺,性能为8600MOPS,供电电压为2.5V。在DDMP芯片中,10个基本数据驱动处理单元以线性结构排列,组成多处理单元系统,基本处理单元通过数据包交换网络互连。
DDMP中一个处理单元Nano PE的基本结构图中,数据首先从处理器的输入端口进入处理器,接着发往合并模块(M)。到达匹配存储器(MM)后被暂时储存起来,直到另外一个操作数到达。如果匹配(另一个操作数到达),这两部分会结合成一个操作数据包(包括操作码、目的地、颜色标志和一对操作数),被分发到适当的功能处理单元(FP)或者算数逻辑单元(ALU)进行运算。指定的操作完成后,产生一个操作结果并送往缓冲存储器(CPS)。最后,分发单元(D)按目的地将操作结果分发到相应的处理器或输出,并将旧目的地址换成新目的地址。
DDMP一个处理单元的内部各个模块(例如MM、FP和CPS)都采用自定时时钟机制,进行独立工作。在数据处理过程中,不需要任何控制,只需进行数据匹配即可。需强调的是在上述实现中,主要功能(例如MM、FP和CPS)完成的任务是相互独立的。所以,在这样的处理器中,不需要使用集中控制机制来实现运算的协调,不需要定时器来保证运算的顺序,唯一需要的是各功能模块中适当的匹配数据速率。
DDMP的特点
首先,DDMP数据驱动处理器内部具有10个并行的处理单元,具有强大的处理能力,适合图像处理、网络协议处理等复杂的应用。
其次,DDMP采用异步电路实现,功耗极低。现在大部分处理器都使用同步电路实现,同步系统拥有同一个时钟驱动,在电路运行过程中,即使是暂时不工作的部分也会随着时钟的翻转一起消耗能量。而数据驱动处理器使用异步电路实现,没有统一的时钟,其中的超长流水线使用自定时机制,即保证了高性能,又降低了功耗。
另外,DDMP为非冯o诺依曼结构的处理器,其实现原理与目前广泛使用的冯·诺依曼结构完全不同,使用专用的指令集、具有独特的专用开发环境和图形化编程语言。其开发方法和过程与传统的计算机有本质的区别。因此,使用传统技术的黑客很难对数据驱动计算系统进行有效攻击,从而提高了系统的安全性。
开发环境
软件开发环境
对于数据驱动计算来说,使用图形化的编程语言更直观、自然,能够充分体现出运算中的并行性和数据依赖性。DDMP处理器的程序设计就使用专用的图形化编程语言,用来编制各种算法的数据流图。软件开发界面如图3所示,不仅能够进行数据流图的编制,还可以进行程序的编译、调试和仿真。
硬件开发环境
为了将编制好的数据流图真正在硬件上调试和实现,需要有相应的硬件开发平台。目前,DDMP的硬件开发平台有两种,分别基于PCI总线和基于USB接口。DDMP通过PCI接口或USB接口与计算机通信;可以从计算机给DDMP和FPGA进行初始化、下载程序和输入数据,初始化外部存储器,并得到硬件输出的计算结果。
在基于PCI总线的开发平台中,DDMP和两个FPGA组成一个单向的通信环路,DDMP可以给FPGA1发送数据,FPGA1可以给FPGA2发送数据,FPGA2可以给DDMP发送数据。DDMP、FPGA1和FPGA2分别带有外部SDRAM;为了提高外部存储器的访问速度,FPGA配有外部SRAM。
基于数据驱动计算的防火墙设计
数据驱动处理器的并行处理能力强、功耗低、安全性高,适用于图像和视频等多媒体处理、网络安全与协议处理等运算复杂度和并发性较高的应用。
嵌入式防火墙用于保护主机安全,要求自身安全性高、体积小、功耗低。DDMP可满足这些要求。
嵌入式防火墙的基本结构如图4所示。首先,进入主机的数据包被储存在缓冲区中;同时,该数据包的IP头和TCP/UDP头被传送到动态包过滤功能模块中处理。在动态包过滤模块中,使用TCP头来确定该数据包是否属于一个新的连接。如果属于,则在数据表中建立一个新的连接表项;包分类模块(分类器)使用过滤规则库检查该数据包。如果该数据包属于已有连接,则数据包状态检测器(SPI)检测该数据包是否为非法状态转移。UDP是一种无连接协议,可以使用IP地址和端口号来建立一个虚拟连接。因此,对于UDP数据包,SPI会使主机更安全。对第四层数据包头部的状态检测之后,只有安全合法的数据包进入应用层过滤器(AF)中,AF检查数据包的内容,包括URL或者E-mail附件等等。最后,合法的数据包从缓冲区中提取并通过防火墙。
嵌入式防火墙中各模块的数据依赖关系如图5所示,包括进程创建、执行和删除、分类器、数据包状态监测器SPI和应用层过滤器APF、高速数据包缓冲等等。把这些数据流变成数据流图,装入DDMP处理器,就是数据驱动防火墙系统的设计要点。
通过软件仿真和硬件测试比较,基于DDMP数据驱动处理器的嵌入式防火墙的SPI模块超过千兆的包处理能力,可满足千兆以太网的需求。
总结
数据驱动计算以及数据驱动处理器,具有并行性高、处理能力强、功耗低、安全性能好的优点,虽然目前还未广泛使用,但相关的研究和开发工作一直在进行和发展。本文介绍的DDMP处理器就是基于数据驱动原理、采用异步电路和自定时流水线技术的多核心处理器,已经在图像处理、网络安全等方面取得了较好的研究成果。