文献标识码:A
文章编号: 0258-7998(2013)11-0053-03
图形图像处理技术是信息处理领域中的一项热门技术,在计算机视觉、气象信息、地球资源勘测等领域得到广泛的应用[1]。随着人们对图形图像信息应用需求的扩大和计算机技术的飞速发展,提高处理的速度成为了图形图像处理中需要解决的难点之一。并行处理[2]是解决大规模图形图像处理问题的有效手段,但由于体积大、功耗高和难以维护等特点,使以多处理系统为代表的很多图形图像处理系统难以得到广泛应用[3]。多态并行处理器实现了单指令多数据(SIMD)和多指令多数据(MIMD)计算模式的混合,其结构简单,功耗低,同时在阵列机上分区并发实现该两种模式,并且能够在两种模式间实现一步转换[4-5]。其中SIMD控制器能够针对图形图像处理算法开发出更多的数据并行性[6],提高图形图像的处理性能。
1 多态并行处理器
本文设计了一种新型的多态并行处理器中的SIMD控制器。该多态并行处理器是一个阵列机,由多个处理器簇组成,每个簇是由处理单元(PE)组成的二维阵列,是一种较常见的阵列结构,这种簇结构可以分层次构成。如图1所示,一个基本簇是由16个PE组成的4×4阵列,处理单元通过近邻互联组成二维阵列。每一行有行控制器(RC),每一列有列控制器(CC),整个簇由簇控制器进行控制。
多态并行处理器包含1个前端处理器、4个F簇、4个S簇、一些专用硬件加速器、一个带有缓存的片上SRAM存储和内部互联通道,如图2所示。F簇处理单元包含浮点处理器和定点处理器,S簇只包含定点处理器。
如图3所示,单个处理单元由带有路由器(RU)的ALU、数据存储(D-mem)、指令存储(I-mem)、邻接共享存储和SIMD接口控制器(ICTL)构成。
在多态并行处理器中,各PE的数据和程序的加载均由SIMD控制器控制,SIMD控制器设计的好坏直接影响到各PE的执行效率及并行度。
2 SIMD控制器的硬件设计
SIMD控制器主要由1个簇控制器模块、4个行控制器模块和4个列控制器模块构成,如图1所示。各模块功能:簇控制器模块主要完成整个簇中处理单元的控制,包括协调程序和数据的加载以及控制整个簇实现SIMD计算;行控制器模块主要功能是将一行的PE重构成SIMD模式,进行数据级并行计算以及初始化SIMD指令;列控制器模块主要完成对簇内共享存储和互联数据通道的控制。
状态跳转说明如下:
(1)IDLE:空闲状态。接收到初始化请求后,跳转至INIT_DATA状态,开始加载数据/指令。
(2)INIT_DATA:初始化指令/数据到簇缓存状态。簇缓存大小有限,指令/数据的加载需分批进行,待当前批的指令/数据加载完成后,跳转到SEND_DATA状态。
(3)SEND_DATA:发送指令/数据状态。指令/数据加载完成后,簇控制器将簇缓存中的指令/数据广播给行、列控制器,若检测到数据包头信息为写操作,则发送完相应指令/数据后,跳回IDLE状态;若检测到为读操作,则跳转至RD_DATA。
(4)RD_DATA:读数据状态。根据包头所含数据大小信息,待接收完列控制器发送的所需数据后,跳转至IDLE状态。
2.3 行控制器
行控制器分为两个部分进行设计:一是初始化SIMD指令;二是将行控制器所在行的PE重构成SIMD模式进行数据并行计算,如图5所示。
各状态说明如下:
(1)IDLE:空闲状态。若检测到初始化使能及数据有效信号,则开始解析数据包,状态跳转到RECV_INSTR_
PACK;若检测到路由器请求信号,则跳转到RECV_RT状态,同时给路由器一个接收数据包响应信号。
(2)RECV_INSTR_PACK:接收指令包状态。若数据经检测不是加载给本控制器,则跳回至IDLE状态;若是加载给本行控制器且是写操作,则跳转到INIT状态。
(3)INIT:指令初始化状态。指令加载完成后,跳转回IDLE状态。
(4)RECV_RT:接收路由器包状态。若检测到CALLC指令,则给行控制器所在行的PE发送请求,同时状态跳转到WAIT;若路由器传来的数据包有误,则跳回IDLE状态。
(5)WAIT:等待状态。给行控制器所在行的4个PE发送SIMD请求信号后,PE停止取址,待流水线中的指令排空且4个PE均返回了响应信号后,跳转至SEND_INSTR状态。
(6)SEND_INSTR:发送指令状态。将从解析出的起始地址开始的指令同时发送给所在行的4个PE以执行SIMD运行模式,待检测到RETC指令后,停止发送指令,给路由器发送请求信号,同时给4个PE一个结束信号(PE则继续之前的MIMD取址),此时跳转到SEND_RT状态。
(7)SEND_RT:发送路由器包状态。接收到路由器响应信号后,行控制器发送数据包,同时跳转回IDLE状态。
2.4 列控制器
列控制器模块的设计分为4个部分:(1)初始化程序/数据的加载;(2)簇控制器对列控制器存储中计算结果的读取;(3)将PE计算结果写入到列存储中;(4)从列存储中动态读取数据。状态机如图6所示。
各状态说明如下:
(1)IDLE:空闲状态。若检测到广播的初始化使能及数据有效信号,则开始解析数据包,同时跳转到RECV_PACK状态;若检测到路由器请求信号,则跳转到RECV_RT_PACK状态。
(2)RECV_PACK:接收初始化数据包结束状态。若检测到不是发送给本列控制器的数据,则下一状态跳转回IDLE,继续等待下一个广播包头;否则,若操作类为写,则状态跳转到INIT_DATA,若为读,则跳转到RD_DATA状态。
(3)INIT_DATA:初始化数据状态。将初始化数据广播给对应列存储和4个PE,待初始化数据完成,跳回IDLE状态。
(4)RD_DATA:读数据状态。根据包头中信息,簇控制器从列存储读取数据,待数据读取完成,跳回IDLE状态。
(5)RECV_RT_PACK:接收路由器包头状态。开始接收由路由器传来的数据包头,此时有两种不同的数据包格式,一种用于动态读取数据(MVF指令),另一种用于将数据写入列存储(MVT指令)。若检测到是MVT指令,则跳转到RECV_DATA状态;若检测到是MVF指令,则跳转到WAIT_ACK状态。
(6)RECV_DATA:将PE计算结果写入列存储。数据写入完成后,跳转到IDLE状态。
(7)WAIT_ACK:等待路由器响应状态。请求使用路由器传输数据后,必须等待路由器空闲才能得到响应,等到响应信号后跳转到SEND_DATA状态。
(8)SEND_DATA:发送数据状态。根据数据包头中包含的数据起始地址和大小动态读取列存储内数据,当请求的数据读取完成后跳转到IDLE状态。
本文采用状态机设计和实现了SIMD控制器,并对电路进行了功能验证与DC综合以及FPGA验证。结果表明,SIMD控制器电路工作正常且电路具有良好的可扩展性,实用性强,能够满足多态并行处理器的要求。
参考文献
[1] 李勇.一种SIMD多DSP数字图像处理系统研究与设计[J]. 电子技术应用,2007,33(11):71-73.
[2] BOYD C.Data parallel computing[J].ACM Queue,2008,6(2):30-39.
[3] 李强.32位图像向量处理器关键技术研究与设计[D].大连:大连理工大学,2009.
[4] 李涛.面向图形和图像处理的轻核阵列机结构[J].西安邮电学院学报,2012,17(3):41-47.
[5] Li Tao.A polymorphic array architecture for graphics and image processing[C].2012 Fifth International Symposium on PAAP,2012:242-249.
[6] MAROWKA A,GAN R.Back to thin-core massively parallel processors[J].IEEE Computer,2011,44(12):49-54.