萤火虫2:一种多态并行机的硬件体系结构*

2014-09-14 01:24易学渊钱博文黄光新黄虎才韩俊刚
计算机工程与科学 2014年2期
关键词:处理单元线程路由器

李 涛,杨 婷,易学渊,蒲 林,钱博文,黄光新,黄虎才,韩俊刚

(1.西安邮电大学电子工程学院,陕西 西安 710061;2.西安邮电大学计算机学院,陕西 西安 710061)

萤火虫2:一种多态并行机的硬件体系结构*

李 涛1,杨 婷1,易学渊1,蒲 林1,钱博文1,黄光新2,黄虎才2,韩俊刚2

(1.西安邮电大学电子工程学院,陕西 西安 710061;2.西安邮电大学计算机学院,陕西 西安 710061)

提出了一种新型的多态高效并行阵列机结构——萤火虫2号阵列机。该结构的处理单元可以在SIMD和MIMD两种模式下运行,兼有异步执行机制,还可以实现分布式指令级并行处理。采用了硬件的多线程管理器和高效通信机制,这些机制使得此种阵列机能够实现效率很高的线程级并行运算、数据级并行运算和分布式指令级并行运算。尤其值得指出的是,此种阵列机的流处理性能堪与专用集成电路匹敌。该结构还能有效实现静态与动态数据流计算,可以高效实现图形、图像和数字信号处理任务。

阵列机;多态处理器;计算机图形;图像处理;信号处理;数据级并行;线程级并行;指令级并行

1 引言

当代数字计算器件主要有CPU(Central Processing Unit)、GPU(Graphic Processing Unit)和FPGA(Field Programmable Gate Array)。CPU的可编程性最佳,GPU的编程稍微困难一些,FPGA则只是可重构。另一方面,FPGA的性能要胜于那些可编程器件,GPU的并行处理能力一般要优于CPU。专用集成电路ASIC(Application Specific Integrated Circuit)不可编程,但是其速度和功耗性能远胜于通用可编程处理器。然而,可编程处理器的灵活性却是s专用集成电路无法比拟的。FPGA类的可重构器件(Reconfigurable Device)[1],尤其是动态可重构器件[2],具有一定的灵活性,性能也可能接近ASIC。

在灵活性与性能方面,一端是高度灵活与成熟的可编程处理器,另一端是高性能但不可变的ASIC。可重构器件介于二者之间。本文提出的萤火虫2的体系结构,是一种可编程阵列处理器。其目的是要在性能上与ASIC接近,同时兼有可编程器件的灵活性。

在并行计算方面最为人熟知的是Flynn[3]分类法。该方法是按照指令流(Instruction Stream)和数据流(Data Stream)的个数进行分类的。实际中两种最常见的并行结构是单指令多数据结构SIMD(Single Instruction Multiple Data)和多指令多数据结构MIMD(Multiple Instruction Stream Multiple Data Stream)。根据单位运算的复杂度又可分为粗粒度运算和细粒度运算。细粒度运算通常指基本算术逻辑操作,而粗粒度则指较复杂的函数或线程。

现代并行处理中常常提到的并行计算方式[4]包括数据级并行DLP(Data Level Parallelism)计算、线程级并行TLP(Thread Level Parallelism)计算和指令级并行ILP(Instruction Level Parallelism)计算。

(1)数据级并行DLP计算[5]以SIMD为基础。GPU使用的是一种扩展的SIMD方式,称为SIMT。DLP通常使用算法层的并行。

(2)线程级并行TLP计算[6]对应于MIMD,通常为粗粒度运算。TLP并行处理需要进程通信机制,不适合细粒度的并行处理。

(3)指令级并行ILP计算主要是指主流CPU使用的超标量和VLIW(Very Long Instruction Word)类的机器和计算方法[7]。计算粒度细,利用操作间的不相关性,而不是算法的并行度,采用类似经典的数据流计算(Dataflow Computation)[8,9]。

此外,还有人把FPGA和ASIC类[10]的计算方法称为操作并行计算OLP(Operation Level Parallelism)。

现代结构中也有将上述数种并行处理方法混合的各种例子。GPU[11,12]就是把SIMD和MIMD混合使用的典型例子。现代GPU的基本计算方法是SIMD的数据级并行运算。但是,多个MIMD任务可以被分配到不同的SM(Streaming Multiprocessor)块中,在SM上面实现较粗粒度的MIMD运算。EDGE(Explicit Data Graph Execution)[13]机器也是如此,但该机器将指令固定分配到处理单元上,让数据可以流动,以实现宏观数据流计算。这是一种粗粒度的数据流计算,是控制流(Control Flow)计算与数据流计算(Data Flow)的结合[14]。

总之,实现上述各种并行计算模式的混合并非新鲜事物,但是在阵列机上分区并发实现多种模式而且能够一步转换模式,却十分困难。尤其是要在性能上接近ASIC,则是一个真正的挑战。萤火虫2阵列机就是面对这个挑战的一个尝试。

随着集成度的提高,芯片上可以利用的资源越来越丰富。实现高度并行处理不再是个难题,但随之而来的却是新的挑战。当很多处理功能集成到一个芯片上时,功耗是巨大的,现有的GPU芯片达到了200瓦以上功耗,散热变得很困难。AMD公司的GPU芯片不得不使用水冷散热。功耗问题是并行处理芯片面临的新挑战[15]。现代超标量处理器结构复杂,很难解决功耗问题。最新研究[16]表明,超标量式的复杂控制和当前多层次存储结构产生的大量数据流动是功耗的主要来源。轻核(Thin Core)处理器[17]和大量的片上存储是解决功耗问题的有效手段。本文中的阵列处理器就是采用了简单的处理器结构和大量的片上存储来降低功耗。

萤火虫2号阵列机采用一系列设计方法来实现高效低功耗的并行处理,在许多方面体现了返朴归真的思想。本文详述这种阵列机的处理单元结构、线程管理机制、线程通信机制和总体结构。

2 多态阵列机整体结构

多态阵列机系统由多个处理器簇(Cluster)组成,每个簇是由处理单元PE(Processing Element)组成的一个二维阵列(2D Array),是一种较常见的阵列结构。这种簇结构可以平面展开,也可以分层次(Hierarchical)构成。

(1)一个基本簇(Basic Cluster)是16个处理单元组成的4×4阵列,如图1所示。处理单元由近邻互联组成二维阵列。

(2)每一行有行控制器CR(Row Controller),用来实现行的SIMD运算。每一列也有列控制器CW(Column Controller),用来管理簇存储器。

(3)整个簇中有一个簇控制器(Cluster Controller),用来协调整个簇的处理单元。簇中的共享存储分布在列控制器中。

当前的设计可以支持高达1 024个处理单元。每个行控制器和列控制器带有自己的程序存储。可以把一行或者一列处理单元重构成SIMD模式,进行数据级并行计算;也可以把一个整簇重构成SIMD模式,用簇控制器来协调整个簇实现SIMD并行计算。程序和数据的加载由簇控制器协调,行与列控制器辅助执行。这些控制器还可以用来控制SIMD运算。

Figure 1 Structure of basic cluster图1 基本簇的结构

图2给出了一个完整的萤火虫2系统,包含一个前端处理器(FEP)、四个F簇(F Cluster0~3)、四个S簇(S Cluster0~3)、各种专用加速器(Accel)、片上缓存器、外部存储器以及片上互联(Interconnect)。F簇处理单元包含浮点运算器和定点运算器,S簇只包含定点运算器。

Figure 2 Architecture of Firefly 2图2 系统整体结构

当执行图形、图像或者信号处理应用程序时,前端处理器是系统与外部处理器或者CPU主处理器的接口。专用加速器通常包括基本函数运算器(指数、对数、三角函数、平方根等)、图形处理器加速器(背面消隐器、图元装配器、光栅化处理器)等。

当F簇和S簇之间的运算负载不平衡时,可以将部分S簇中的运算转移到F簇中处理。值得一提的是,F簇处理单元采用了一种多格式定点计算器,用来进行图形和图像处理中特定的定点运算,如光栅化和背面消隐等。

2.1 线程级并行(MIMD)运行方式

这是萤火虫2的基本运行方式,也是其最常见的运行方式。只要任务分割恰当,此种方式编程较容易,程序查错也容易。

在此种方式下,一个程序被分割成数个基本任务,每个任务被分配到一个处理单元上运行。如果任务之间需要传递计算结果的数据,可以通过邻接互联数据线;距离较远的处理单元之间可以通过路由器传递数据。指令的阻塞模式特别适合近邻之间的数据通信,因为该模式包含了数据传输必需的同步操作。

2.2 数据级并行(SIMD)运行方式

SIMD运行方式特别适合数据级并行处理。因为图形和图像处理的运算中很常见四维向量,因此可以用一行处理单元来做SIMD的四维并行运算。如果需要做四维以上16维以下的运算,那就可以使用2~4行处理单元(8~16个处理器)来进行SIMD并行运算。

当一行中进行SIMD运算时,该行的控制器CR将指令广播到这一行中的处理单元,每个单元使用自己的数据来执行同样的指令。

如果需要使用多行处理单元进行SIMD运算,簇控制器将指令广播到相关的行处理器,再由行处理器广播到相关处理单元。

2.3 分布式指令级并行方式

分布式指令级并行计算的基础是数据流计算。其执行方法类似超标量机器中的乱序执行方式。萤火虫2的分布式指令级并行计算采用计算结果直接链接的方法,无须使用寄存器重命名。这与数据驱动数据流的形式是一致的。

使用邻接互联寄存器或者共享存储,相关指令直接链接起来。指令可以分配到许多处理单元中,因此实现了分布式指令级并行计算。

2.4 流处理运行方式

萤火虫2的流处理方式类似于典型的FPGA或者ASIC流水线,也即所谓的操作并行处理方式[4],但是每个单元处理的颗粒粗细程度可按照性能需求进行调整和配置。

对于此种运算方式,每个单元相当于流水线的一级。在每个处理单元上分配一些简单操作,重复执行这些操作。一个处理单元的结果通过近邻互联传递到其它处理单元去,构成逻辑上的流水线。

为了降低开销,我们设有专用的循环设置指令。这些指令在流处理开始阶段设置好背景循环计数器和循环界限计数器,在数据处理开始后就是零开销了,大大优化了处理速度。

3 处理单元结构

处理单元的频率通常在680 MHz以下,以降低功耗。每个处理单元可以执行SIMD和MIMD两种操作模式。每个处理单元由一个ALU、一个控制器、一个路由器、四个邻接共享存储、数据存储和指令存储组成,整体如图3所示。该处理单元的一个特点是没有寄存器文件,ALU直接从存储器中读取指令和数据;另一个特点是直接寻址的邻接共享存储器及其两种存取模式。

当前片上SRAM(Static Random Access Memory)频率可达4.8 GHz[18],可以与最快的CPU速度匹配。一般较快的片上SRAM的频率也能超过600 MHz。我们的设计很容易找到相匹配的片上SRAM,因此寄存器文件就不是必需的了。这就可以提高效率、降低功耗。

Figure 3 Structure of processing element图3 处理单元结构

下面是处理单元及其各个部件操作的详细叙述:

(1)算术逻辑运算器ALU平均每个时钟可以发出两条指令。指令集将在后面详细叙述。

在SIMD 模式中,ALU执行来自于外部(行、簇)控制器的指令序列,数据来自于本地存储或者邻接存储。ICTL是本地控制。屏蔽(MASK)指令用来读写本地屏蔽寄存器,进而控制SIMD操作。当本地的屏蔽寄存器被置位时,这个处理单元进入闲置状态,不执行SIMD指令。屏蔽寄存器也可以被外部控制器读写。

在MIMD模式中,ALU执行的指令序列来自于本地的指令存储器(I-MEM),数据来自于本地存储D-MEM和邻接存储。

(2)路由器RU负责将数据传送到远程处理单元。由于荧火虫2采用近邻互联方式,数据传输有时需要多跳才能达到。路由器允许数据多播,可以实现数据流的多目标扇出。

远程通信需要使用MOVT和MOVF指令。硬件加速器用来加快远程数据通信的速度。

MOVT和MOVF指令也按照阻塞和非阻塞两种模式执行。

远程函数调用和返回通过特殊指令和路由器实现。参数和返回值可以使用MOVT和MOVF指令来传送。远程数据包最多可以携带8个字(32位)的数据。

(3)邻接共享存储M分为四个部分:Me(东)、Mw(西)、Ms(南)和Mn(北), 每部分用于一个方向的通信。这四个部分在逻辑上都是处理单元数据存储的一部分,采用直接寻址。大部分指令都可以使用邻接共享存储。这部分存储也可以被邻居处理单元存取。共享存储器的存取有两种模式:

①阻塞模式(线程间同步):每个共享存储地址都有一位数据有效位。当读取数据时,如果数据无效,则当前线程进入等待状态;如果数据有效,则读取数据,并将其置于无效。当写入数据时,若数据无效则直接写入,数据有效则等待。

②非阻塞模式(线程间异步):不管数据是否有效,直接读取数据。写入数据时也不管目标地址数据是否有效。

(4)数据存储器D-MEM为每个线程分配一个区域,最多八个区域。每个线程的数据存储最大为4 K(32位)字。数据存储采用分块结构,分为八块。这可以有效降低数据存取的冲突。

(5)指令存储(I-MEM)为每个线程分配一个区域,最多八个区域。每个区域最多为4 K条指令。指令存储采用单块结构。

ALU中的指令读取单元含有一个程序计数器PC和一个线程地址寄存器Creg。每个线程都分配一块数据存储,其基地址可以放在Creg中。上下文转换只需要改变Creg的值,可以一步到位。上下文转换时将当前Creg值推入堆栈,然后载入新的Creg值。

处理单元还含有一个线程信息表,用来记录每个线程的当前状态。控制器用这个线程表来实现一步到位的上下文转换。

上面叙述了处理单元的操作。下面将讲述处理单元的指令集结构、流水线结构以及控制结构。

3.1 指令集结构

处理单元的多数指令采用直接存储寻址。指令执行有两种操作方式,大部分指令按照阻塞和非阻塞两种方式执行。部分指令还有直接数操作。每条指令通常有三个地址,其格式如图4所示。

Figure 4 Format of the instruction
图4 指令格式

萤火虫2是为图形、图像和信号处理等应用而设计的,用来作为专用计算加速器,目前还不考虑通用计算应用。因此,其指令的操作数寻址方式是有一定局限性的。这主要表现在寻址范围的大小。

指令有6位操作码,2位标志位,12位的目标地址可以在4 KB范围内寻址,12位的A操作数地址,16位的B操作数地址(也可以是立即数)。对于细粒度和中等粒度的并行处理,这样的地址范围足够了。对于很粗粒度的应用,程序可以分布到多个处理单元上。指令涵括下列类型:

(1)定点算术与逻辑指令类:如加、减、乘、除、移位、与、或、异或等指令。

(2)定点比较与转移指令类:这类指令按照比较的结果决定是否转移控制流。在SIMD模式下,转移是用屏蔽栈来实现的。

(3)浮点算术指令类:如加、减、乘、除等指令。这些指令的操作数都是浮点数。

(4)浮点比较与转移指令类:这类指令按照比较的结果决定是否转移控制流。在SIMD模式下,转移是用屏蔽栈来实现的。

(5)跳转与函数调用类指令:实现无条件跳转、函数(包括SIMD函数)的调用和返回、以及远程函数调用和返回。

(6)上下文转换与SIMD屏蔽类指令:包括改变Creg值、上下文堆栈操作和SIMD屏蔽等指令。

(7)循环设置类指令:这类指令是为了高效实现OLP运算而设置的。循环设置好后就进入OLP模式执行。

(8)远程与近邻通信类指令:包括MOVT、MOVF和MOVL。

处理单元的指令集结构包含了不少特殊指令,是为了最有效地实现三种基本并行处理模式而设计的,这样有利于高性能实现数据流计算方式。

3.2 处理单元流水线结构

本文采用了两种可编程处理单元,两种处理单元均采用简单和低功耗的设计,因此没有采用类似于超标量机器指令级并行ILP[7]的执行机制。数据与控制冒险(Data and Control Hazards)采用两种方法来处理:

(1)利用阻塞执行模式来实现数据流类型的处理方式,还可以实现分布式指令并行化。

(2)依赖编译器和良好的程序设计来处理。编译和汇编程序帮助解决数据相关性问题。

浮点处理器的流水线如图5所示。

这是一个比较简单的多功能、多周期流水线。流水线包括了指令读取(Instruction Fetch-IFETCH)、指令解码(DECODER)、执行(Execute)和回写(WriteBack)。其中执行含有六条执行流水线,每条都有其自己的执行周期。包含了整数算术逻辑运算器(ALU)、整数乘法器(MULT)、整数除法器(DIV)、浮点运算器(FPU)、浮点乘法器(FMUL)和浮点除法器(FDIV)。

为了提高效率,还采用了计算结果前馈机制(FEEDFWD)。整个流水线由流水线控制器(CONTROL)来协调操作。图5中还标出了指令存储(INSTR MEMORY)和数据存储(DATA MEMORY)。除了执行本地指令流,流水线还可以执行来自外部控制(Cluster Control)的SIMD指令流。

定点处理单元的结构类似于浮点处理单元,只是其ALU、MULT和DIV流水线采用了多格式定点数方式,不同于普通的整数处理器。此外,其中的FPU被另一个ALU替换,FMUL被另一个MULT替换,FDIV被取消了。

3.3 单元整体控制器结构

这个部件集成了处理流水线控制、路由器接口和多线程管理的功能,是一个多功能的高层次控制器。它要监测各个线程的执行情况、邻接共享存储的存取以及路由器的输入和输出情况。下面是可能影响到处理单元正常工作的情况:

(1)阻塞模式下的数据到达与否。数据不足的指令就进入等待状态。控制器需要监视近邻处理单元的数据到达情况,把到达的新数据填补到等待的指令中,及时把补足了数据的指令恢复到ready状态。

(2)来自于路由器的输入和输出。远程处理单元可能会向本地处理单元请求数据或者发送数据,也可能请求函数调用或者返回数据。控制器需要监视路由器的状况,及时通知运算器并修改执行状态。

Figure 5 Arithmetic and logic pipeline of processing element图5 处理单元的算术逻辑流水线

(3)运算器流水线的结果。本地流水线的结果也会输出给正在等待的指令,控制器需要监视这些结果的到达,把到达的新数据及时填补到等待的指令中,并把补足了数据的指令恢复到ready状态。

如果一个线程被阻塞了,该线程就进入等待状态,等到它需要的数据到达了,这个线程就被唤醒。每个线程的状态都被记录在线程状态表中。通常,一个处理单元可以支持8~16个线程,当前版本支持八个并发线程。线程标识号(Thread ID)用来选择表项。线程状态表中一些重要域的意义是:

(1)rank域中的值是调度优先值,0为最高。

(2)PC域中是该线程当前要执行的指令地址。

(3)state 域中保存了线程的当前状态,如INIT、WAIT、RUN等等。

(4)avail 域中每一位代表了一个数据的存在。只有当操作数都存在而目标地址的数不存在时才能恢复线程的执行。

(5)mask位标志一个操作数是否被该指令使用。

(6)stamp是个时间戳,用来计量一个线程在当前量子(Quantum)范围内的运行时间,为线程调度提供信息。

(7)M-base 是线程数据的基地址,M-size 是分配给线程的数据存储大小。

控制器还要负责与路由器的协调工作,接收外来数据或者发送数据给远程处理单元。目前可配置的线程调度算法[19,20]有轮循算法(Round-Robin)和动态优先权(Dynamic Priority)算法。

4 通信机制

荧火虫2使用了一系列进程通信的硬件机制,包括近邻共享存储、远程数据传输和远程函数调用。信息传递(Message Passing)使用了由处理单元包含的路由器和互联组成的全局网络。这里介绍几种信息传递机制。

4.1 邻接共享存储与直接寻址

萤火虫2在簇内采用了mesh拓扑结构来实现信息传递网络。与先进的编译技术与映射方法相结合,可以得到良好的网络性能,使得信息流量保持在网络的容量之内。

第一种信息传递机制就是近邻共享存储。每一对邻接的处理单元之间都有一对联线组和共享存储器,如图6所示,其容量通常在4~16个字之间。共享存储的访存地址映射在数据访存空间之内。处理单元可以通过共享存储把信息传送给邻居单元。

Figure 6 Communication of direct read/write neighbor shared memory图6 直接读写近邻共享存储通信方式

为了便于实现数据流类型的操作并行计算,每个共享存储地址都有一个数据有效位。当有数据写入这个地址时,这个数据有效位就被置位。当这个位置的数据被读取后,数据有效位就被复位。

共享存储区域通常在可寻址空间的最上部,可供两个相连的处理单元直接存取。当前的设计可寻址的空间是4 KB。一个PE至多有四个邻居,也就有四个共享存储区域。四个共享存储区域都设置在数据访存可寻址空间上部。

Figure 7 Graphic interface of emulator图7 仿真器顶层图形界面

4.2 路由器和远程数据传输

处理单元内的路由器用来传递信息。路由器与ALU并行操作,实现高性能的并行处理。数据传递包括常见的点到点传递、多播传递和函数调用。路由器需要与本地运算器和四个邻接处理单元协作来完成信息传递功能。路由器需要处理的本地信息传递请求包括:

(1)本地数据发送请求,来自于MOVT指令;

(2)本地向远程处理单元发出的数据请求,来自于MOVF指令;

(3)本地多播信息请求,来自于MOVT指令。

路由器还需要处理来自外部的信息。外部信息传递请求包括:

(1)来自远程处理单元的信息传递请求,由远程处理单元产生;

(2)来自邻居的多播信息请求,由邻居的MOVT多播模式产生;

(3)远程的数据请求,来自远程处理单元。

除了处理上述信息传递功能外,路由器还需要处理本地和远程的函数调用和返回请求。这将在下一节中叙述。

4.3 远程函数调用

远程函数调用在本文的体系结构中使用硬件加速来实现,比一般的机器性能要高。远程函数调用包括命令与数据两部分。在本地运算器上产生的远程函数调用包括:

(1)本地的远程函数调用请求,源于远程模式的函数调用CALL指令,还有SIMD函数的调用请求。

(2)本地函数返回请求,来自于远程模式的函数调用RET指令。该RET是由其他处理单元送过来的CALL请求间接产生的。

来自于远程处理单元的请求包括:

(1)来自于远程的函数调用请求,由远程处理单元上的CALL指令产生;

(2)来自于远程的RET请求和数据,由远程处理单元产生。其数据部分是函数返回的结果数据。

远程函数调用由ALU和路由器协调处理。

5 软件仿真环境

为萤火虫2号多态阵列机开发了一套时钟精确仿真平台。这是一套模块化的仿真环境,各个部件可以很容易地从开发环境中插入或者移出,一个新的功能部件可以很容易地替换旧的功能部件。

该平台包含一个时钟精确的仿真器和查错器、一个汇编器和一个表达式语言编译器、配置器和配置文件以及图形界面,形成了一个完整的开发环境(IDE)。图7示出了该环境的顶层界面,包括了几个程序编辑窗口和一个汇编/编译窗口。

在系统级层次,每个簇和其中的各种加速器、前端处理器、全局加速器等,都可以用数据通道可配置协议接入到全局互联上。包括互联在内的部件都是可以直接插入使用的部件。数据通道的数据宽度是可配置的,数据传输使用简单的双轨握手协议(利用数据请求和应答信号)。

一个簇中的各种控制器、处理单元、存储器以及处理单元间的互联通道,都是可以直接插入使用的部件。使用双轨协议的数据互联通道也都是直接插入使用的部件。

值得一提的是,全局互联和处理单元间的数据互联通道都是用函数来实现,如此,我们就可以模拟一个互联通道的各种参数,例如时延和缓存深度等。因此可以得到很详细的仿真结果。

查错器可以让我们在不同的层面上观察系统的执行状态,可以从一个较高层次上逐层深入到更低的层次中,直到某个具体的处理器单元。图8给出了一个处理单元的查错界面。

Figure 8 Graphical interface of processing element图8 处理单元的图形界面

该仿真平台是我们的重要工具之一。我们在仿真平台上已经进行了大量的实验,得到许多有用的结果,在仿真平台上能够执行的程序,下载到FPGA验证板上也都能够正确执行。

6 性能仿真及结果

本节给出了初步的仿真实验结果。虽然我们在FPGA上实现了一个雏形样机,但是它的接口速度很慢,配套软件也比较原始,使用不太方便,因此性能结果多半来自时钟精确仿真器。需要指出的是仿真平台的结果与RTL实现非常接近的。当使用较少数目的处理单元时,仿真结果与FPGA实现的结果是一致的。

对图形管线中的重要任务都进行了性能分析,包括模型视力矩阵乘积、顶点变换、平面剪裁等。ILP运算方式的加速度结果如图9所示,横轴表示计算单元的个数,纵轴表示加速比。

Figure 9 ILP acceleration of matrix multiply/vertex transform/plane clip图9 矩阵乘积/顶点变换/平面剪裁的ILP运算加速比

由图9可见,使用了16个处理单元的加速比都不低于10,该结果非常好,几个应用的加速比都是线性的。

图10给出了TLP运算方式的加速比结果。其结果也呈线性加速,比ILP的要好。但这并不意味着使用TLP并行运算总是要优于ILP并行运算,毕竟,程序中固有的ILP并行程度[7]是十分有限的。

Figure 10 TLP acceleration of graphic parallel computing图10 图形并行运算的TLP加速比

除了图形管线中的运算外,我们还对几个生物信息的算法做了并行化,并在萤火虫2上进行了仿真实验。对模体识别(Motif Finding)和全局匹配两算法进行TLP并行运算,实验结果如图11所示。

Figure 11 TLP parallel computing results of the biological information algorithm图11 生物信息算法的TLP并行运算结果

7 结束语

萤火虫2号是一种适合于图像、图形和数字信号处理的高性能阵列机结构,它结合了SIMD、MIMD、FPGA的优点,能够针对多种不同的应用来实现接近ASIC的高性能计算。它能够有机地、无缝地将数据级并行运算、线程级并行运算、指令级并行运算和操作并行运算相结合。萤火虫2的处理单元采用了多种硬件加速方法,包括硬件线程管理、背景循环指令、阻塞与非阻塞的邻接存储方法、简单快速的信息传递机制等,可以有效地节省功耗,同时高效地并行运算。

今后的研究重点是针对机器结构的编程方法、编译器实现和映射方法,以及各种图形、图像和数字信号处理算法在萤火虫2上面的实现。

[1] Compton K,Hauk S. Reconfigurable computing:A survey of systems and software[J]. ACM Computing Surveys, 2002,34(2):171-210.

[2] Hideharu A. A survey on dynamically reconfigurable processors[J]. IEICE Transactions on Communications, 2006,E89-B(12):3179-3187.

[3] Flynn M.Some computer organizations and their effectiveness[J]. IEEE Transactions on Computers, 1972,21(9):948.

[4] Shen X B.Evolution of MPP SoC architecture techniques[J]. Science in China-Series F:Information Science, 2008,51(6):756-764.

[5] Hillis D. New computer architectures and their relationship to physics or why CS is no good[J]. International Journal of Theoretical Physics, 1982,21(3/4):255-262.

[6] Quinn M J. Parallel programming in C with MPI and OpenMP[M]. NY:McGraw-Hill, 2004.

[7] Hennessey J, Patterson D. Computer architecture:A quantitative approach[M]. 4th Ed. San Francisco:Morgan Kauffmann, 2006.

[8] Veen A H. Dataflow machine architecture[J]. Computing Surveys, 1986,18(4)365-396.

[9] Dennis J B, Misunas D P. A preliminary architecture for a basic data-flow processor[C]∥Proc of ISCA’75, 1975:125-131.

[10] Kilts S. Advanced FPGA design:Architecture, implementation, and optimization[M]. New Jersey:Wiley-IEEE, 2006.

[11] Harris M. Mapping computational concepts to GPUs[C]∥Proc of ACM SIGGRAPH’05, 2005:1.

[12] Nickolls J, Dally W J. The GPU computing era[J]. IEEE Micro, 2010,30(2):56-69.

[13] Keckler S W, McKinley K S, Dahlin M, et al. Scaling to the end of silicon with EDGE architectures[J]. IEEE Computer, 2004,37(7):44-55.

[14] Silc J, Robic B, Ungerer T. Asynchrony in parallel computing:From dataflow to multithreading[J]. Journal of Parallel and Distributed Computing Practices, 1998,1(1):3-30.

[15] Woo D H, Lee H S. Extending Amdahl’s law for energy-efficient computing in the many-core era[J]. IEEE Computer, 2008,41(12):24-31.

[16] Keckler S W, Dally W J, Khailany B, et al. GPUS and the future of parallel computing[J]. IEEE Computer, 2011,44(9):7-17.

[17] Marowka A, Gan R. Back to thin-core massively parallel processors[J]. IEEE Computer,2011,44(12):49-54.

[18] Dhong S H, Takahashi O, Yoshihara H, et al. A 4.8 GHz fully pipelined embedded SRAM in the streaming processor of a cell processor[C]∥Proc of IEEE International Solid-State Circuits Conference,2005:486-612.

[19] Li T, Baumberger D, Koufaty D A, et al. Efficient operating system scheduling for performance-asymmetric multi-core architectures[C]∥Proc of the 2007 ACM/IEEE Conference on Supercomputing, 2007:1.

[20] Liu C L, Layland J W. Scheduling algorithms for multiprogramming in a hard-real-time environment[J]. Journal of the ACM, 1973,20(1):46-61.

[21] Huang H-C, Li T, Han J-G. Simulator implementation and performance study of a polymorphous array computer[C]∥Proc of ISPA’13, 2013:1.

LITao,born in 1954,PhD,professor,CCF member(E200028228M),his research interests include computer architecture, ASIP design, and VLSI design.

杨婷(1989-),女,陕西澄城人,硕士生,研究方向为计算机体系结构、计算机图形学和集成电路设计。E-mail:yangting198962@163.com

YANGTing,born in 1989,MS candidate,her research interests include computer architecture,computer graphics,and VLSI design.

易学渊(1987-),男,湖北黄冈人,硕士生,研究方向为计算机体系结构、计算机图形学和集成电路设计。E-mail:yxy19897891@163.com

YIXue-yuan,born in 1987,MS candidate,his research interests include computer architecture,computer graphics,and VLSI design.

蒲林(1989-),男,重庆人,硕士生,研究方向为计算机体系结构、计算机图形学和集成电路设计。E-mail:pulinup@126.com

PULin,born in 1989,MS candidate,his research interests include computer architecture,computer graphics,and VLSI design.

钱博文(1988-),男,安徽蒙城人,硕士生,研究方向为计算机体系结构、计算机图形学和集成电路设计。E-mail:bymoney@126.com

QIANBo-wen,born in 1988,MS candidate,his research interests include computer architecture,computer graphics,and VLSI design.

黄光新(1986-),男,陕西安康人,硕士生,研究方向为计算机体系结构、计算机图形学和集成电路设计。E-mail:bymoney@126.com

HUANGGuang-xin,born in 1986,MS candidate,his research interests include computer architecture,computer graphics,and VLSI design.

黄虎才(1989-),男,广西阳朔人,硕士生,研究方向为计算机体系结构、计算机图形学和系统软件。E-mail:chinahhucai@gmail.com

HUANGHu-cai,born in 1989,MS candidate,his research interests include computer architecture,computer graphics,and system software.

韩俊刚(1943-),男,吉林长春人,硕士,教授,研究方向为软件和硬件的形式化验证、图形处理器和新型计算机体系结构。E-mail:hanjungang@xupt.edu.cn

HANJun-gang,born in 1943,MS,professor,his research interests include the formal verification of software and hardware, graphics processor, and the new computer architecture.

Architectureofapolymorphousparallelcomputer

LI Tao1,YANG Ting1,YI Xue-yuan1,PU Lin1,QIAN Bo-wen1,HUANG Guang-xin2,HUANG Hu-cai2,HAN Jun-gang2

(1.School of Electronic Engineering,Xi’an University of Posts and Telecommunications,Xi’an 710061;2.School of Computer Science,Xi’an University of Posts and Telecommunications,Xi’an 710061,China)

A novel and efficient polymorphous array architecture, the Firefly2, is proposed. Its Processing Element (PE) can run in both SIMD and MIMD modes. The PE supports asynchronous inter-thread communication and efficient parallel execution of distributed instructions. A PE contains a multi-thread manager to realize one-step context switching and a router for fast data communication. This architecture is highly efficient in realizing parallel computation at thread level, data level, and instruction level. In particular, the performance of this architecture is comparable with ASIC when used for stream processing. This architecture is capable of implementing high-performance, classical static and dynamic dataflow computation. The architecture is designed for computer graphics, image processing and digital signal processing applications.

array computer;polymorphous processor;computer graphics;image processing;digital signal processing;data level parallelism;thread level parallelism;instruction level parallelism

2013-08-11;

:2013-10-20

国家自然科学基金重大项目(61136002);西安邮电大学陕西省2012重点学科建设西邮计算机体系结构项目

1007-130X(2014)02-0191-10

TP303

:A

10.3969/j.issn.1007-130X.2014.02.001

李涛(1954-),男,河北饶阳人,博士,教授,CCF会员(E200028228M),研究方向为计算机体系结构、专用机器设计和集成电路设计。E-mail:litao@xupt.edu.cn

通信地址:710061 陕西省西安市红专南路西安邮电大学18楼1611室Address:Room 1611,Building 18,Xi’an University of Posts and Telecommunications,Hongzhuan Rd South, Xi’an 710061,Shaanxi,P.R.China

猜你喜欢
处理单元线程路由器
买千兆路由器看接口参数
不同生物链组合对黄河下游地区引黄水库富营养化及藻类控制
维持生命
城市污水处理厂设备能耗及影响因素分析研究
路由器每天都要关
长填龄渗滤液MBR+NF组合工艺各处理单元的DOM化学多样性
一种高可用负载均衡网络数据采集处理的方法及系统
基于国产化环境的线程池模型研究与实现
无线路由器的保养方法
浅谈linux多线程协作