图像识别加速装置及具有图像识别加速装置的微处理器芯片
技术领域
本发明涉及图像处理大规模集成电路技术,更具体的说,涉及对图像处理加速装置的技术。
背景技术
随着信息和网络技术的发展,数字内容的内涵日益丰富,从原来单一的文字和图片为主扩展到音频,视频和3D环境等多种承载媒体,涉及教育、科学、金融、文化、娱乐、商业、通信等各个领域。从技术方面来讲,数字内容开发、数字内容传递和数字内容安全是数字内容产业的三大支撑。数字内容开发一方面与文化创意和艺术创造紧密结合,同时也与图像、音频、视频、Web2.0等技术不可分割;随着宽带技术的发展,数字内容传递正在由传统的离线配送向互联网在线传递和移动传递的方向急剧转变,网络门户、搜索引擎、无线宽带、移动交互等技术成为数字内容传递的核心技术;数字内容安全则包括数字版权管理(DRM)、非法及有害内容过滤、网络支付安全等重要内容。
基于内容的过滤即基于内容的过滤,是数字内容安全的重要内容。CBF的主要对象包括非法内容和有害内容,如非法广告、黄色信息、惑众谣言、网络病毒、黑客攻击等。在图像和视频文件过滤方面,文字识别、人脸识别、人体识别、物体识别等图像识别技术是核心。通过这些技术,可对文件中包含的字牌、标语、广告等反映不同场景的文字,以及人脸、人体、物体等反映不同人物和事件的对象进行识别。获得这些关键信息后,便可以对图像和视频进行分类和过滤。例如对黄色图片进行过滤,对毒品广告进行过滤等。在上述图像识别技术中,人脸识别和物体识别是当前的研究热点。文字识别是开展较早的研究,但图像中的文字识别有其特殊性,如倾斜和光线的影响等。关于人脸识别和物体识别,近年来人们给予了极大的关注,并取得了显著的进展。
在网络环境中,过滤器的效率是一个突出问题。基于智能技术的过滤器通常具有较高的计算复杂度,时间开销较大。目前的芯片技术中,已经有了针对图像处理的加速模块,但是基本上都是为了满足于媒体压缩或者是3D效果而特别设置的,如MPEG/H.264的搜索加速,DCT/IDCT等。也有一些针对哈夫变换等常用图像识别算法的硬件实现,如A.K.Majumdar Design of an ASIC for straight line detection in an image[C].In:Proceedings of the Thirteenth International Conference on VLSIDesign,2000:128~133以及S.Tagzout,K.Achour,O.Djkoune Houghtransform algorithm for FPGA implementation[M].Signal ProcessingSystem,2000-10:384~393。这些实现中,主要做的是采用专用硬件去实现某些特定的算法单元,如采用CORDIC电路去实现快速的曲线变换计算和专用累加电路等。由于图像识别算法针对不同的应用,参数的区别和步骤往往相差很大,因此,针对特定算法的加速电路的有效作用领域往往很窄;此外,图像识别算法是不断更新和改进的,针对某一特定算法实现的加速电路,很快随着时间的推移就暴露出了局限性。
发明内容
考虑到以上问题而提出了本发明。本发明的目的是提供一种应用于微处理器电路的图像识别加速装置。本发明的一个有利方面在于,基于可配置的多个并行PE阵列,所述图像识别加速装置能够提供高达153.6Gops的峰值计算能力。本发明的另一个有利方面在于,采用基于交换的数据路由方式,使得各个PE之间的数据通路可以灵活配置,适应不同的匹配算法的需求。
根据本发明的一个方面,提供了一种图像识别加速装置,包括:系统总线仲裁器,将外部数据请求发送至所述图像识别加速装置内部的直接内存访问控制器,同时将外部任务控制请求发送至系统任务队列,该系统总线仲裁器连接至外部系统总线;内部总线,其为按内存映射的地址和数据总线;接入控制单元,将系统任务队列、资源统计器、运行任务保留站的内部数据按照地址映射规则组织,使所述内部数据能够被所述内部总线上的读写请求所访问;指令分配器,将计算任务动态分配给多个处理单元阵列;所述直接内存访问控制器,连接于所述内部总线与所述系统总线仲裁器之间,将数据按预先设定好的地址读入或读出;所述系统任务队列,由一先入先出队列构成,该队列的输入数据为经由所述系统总线仲裁器输入的外部控制请求,该队列的输出端连接至所述指令分配器和所述接入控制单元;所述资源统计器,连接到所述接入控制单元与所述指令分配器,提供所述图像识别加速装置内部资源消耗情况的实时信息给微处理器以及所述指令分配器;所述运行任务保留站,连接于所述接入控制单元与所述指令分配器之间,用于保存当前正在执行的任务的情况和各个任务占用的资源数据;配置存储器,连接到所述内部总线,存储所述多个处理单元阵列内部配置和控制指令字;多个指令译码器单元,连接于所述指令分配器与所述配置存储器之间,将所述指令分配器分配给所述多个处理单元阵列或者格雷编码器的控制指令译码成与它们相应的控制字;数据存储器,连接于所述内部总线与多个处理单元阵列之间,为多个双端口随机存储器,所述随机存储器的个数与所述多个处理单元阵列个数相等;所述多个处理单元阵列,均连接于所述配置存储器与所述数据存储器之间,完成图像识别计算任务,各个阵列之间为串行连接;数据保留站,连接于所述内部总线,将所述直接内存访问控制器输入的多个周期的第一位宽的数据拼接成第二位宽的数据输出,其中所述第一位宽小于第二位宽;以及,格雷编码器,连接于数据保留站与所述处理单元阵列之间,将原始图像数据转换成格雷码编码的图像数据。
根据本发明的另一个方面,提供一种具有上述图像识别加速装置的微处理器芯片,该微处理器芯片还具有:微处理器内核、系统总线、内存控制器、直接内存访问控制器、中断控制器、网络控制器、视频控制器、低速外设桥接器,以及连接于低速外设桥接器的通用IO、I2C总线控制器、UART控制器以及SPI控制器;其中所述的微处理器内核、图像识别加速装置、内存控制器、直接内存访问控制器、中断控制器、网络控制器、视频控制器以及低速外设桥接器均连接至系统总线,其连接方式为地址映射。
附图说明
相信通过以下结合附图对本发明具体实施方式的说明,能够使人们更好地了解本发明的上述和其它特点、优点和目的。
图1是根据本发明的第一实施例的所在系统框图;
图2是根据本发明的第一实施例的逻辑结构示意图;
图3是根据本发明的第一实施例的数据保留站的内部逻辑结构示意图;
图4是根据本发明的第一实施例的PE阵列的内部逻辑结构示意图;
图5是根据本发明的第一实施例的PE单元的内部逻辑结构示意图。
具体实施方式
下面就结合附图对本发明的各个实施例进行详细的说明:
图1是根据本发明的一个实施例的微处理器系统方框图。图中详细描述了采用本发明的一个嵌入式处理器的芯片内部系统框图。该处理器由微处理器内核(101)、图像识别加速装置(102)、系统总线(103)、内存控制器(104)、直接内存访问控制器(105)、中断控制器(106)、网络控制器(107)、视频控制器(108)、用于连接低速外设的低速外设桥接器(109),以及挂载在低速外设桥接器上的通用IO(113)、I2C总线控制器(112)、UART控制器(111)和SPI控制器(110)等构成。其中所述的微处理器内核可以为商用的IP核如ARM9或者ARM11。为了满足性能需求,所述微处理器内核一般带有一级数据缓存和指令缓存(或者是统一的一级缓存)。通常情况下,所述微处理器内核为一精简指令集(RISC)处理器内核,数据位宽为32位。所述系统总线用于连接各个高速模块和微处理器模块。系统总线上可以有多个主设备,例如微处理器和直接内存访问控制器。所有的高速设备都是按地址映射在系统总线上。内存控制器是处理器和外部存储设备数据交换的接口。所述外部存储设备通常为DDR或者DDR2内存。内存控制器根据接收到的地址和读写指令,从外部存储设备中读出或者向外部存储设备中写入数据。数据通常以突发方式进行读写。所述的直接内存访问控制器用来在微处理器不干预的情况下进行数据搬移操作。所述的中断控制器负责记录外部中断的触发信息,并对不同的优先级中断进行排序。所述的网络控制器为千兆以太网的媒体接入控制器(MAC);所述的视频控制器为LCD显示屏驱动器。所述低速外设桥接器是挂在系统总线上,连接高速总线和低速总线的桥接设备。通用IO是通过寄存器编程,控制相应的IO管脚成为输入/输出接口的IO管脚。I2C总线控制器是用来连接外部I2C设备的总线控制器;UART控制器通过外接的RS232转换芯片,可以直接和PC机的串口设备进行通讯,用于低速数据传输和程序调试;SPI接口用于连接外部SPI的FLASH设备或者其他SPI设备。图像识别加速装置挂在系统总线上,作为从设备,可以被微处理器寻址访问;作为主设备,可以启动直接内存访问主动和外界进行数据交换。
图2是本发明第一实施例中图像识别加速装置的内部结构图。所述的图像识别加速装置,主要由系统总线仲裁器(212)、直接内存访问控制器(209)、内部总线(211)、数据保留站(201)、格雷编码器(202)、数据存储器(208)、配置存储器(207)、多个指令译码器(214,215,216,217)、接入控制单元(203)、系统任务队列(210)、资源统计器(213)、运行任务保留站(219)以及多个处理单元阵列(即PE阵列)(204,205,206)构成。系统总线仲裁器是整个加速单元与外部系统总线的接口模块,负责将外部的读写请求发送至内部对应的端口,其中数据请求发送至直接内存访问控制器,任务控制请求发送至系统任务队列(210)。直接内存访问控制器(209)作为整个图像识别加速装置同外部系统总线的数据接口,负责所有的数据搬移操作。直接内存访问在收获微处理器控制指令后,将外部数据按预先设定好的地址读入或者将内部数据按预先设定好的地址读出。这里所有的数据必须按照4字节的边界(32位)对齐,也就是说,作为图像处理单元,每次读写操作并行执行4个像素的数据,其中每个像素的数据位数为8位。内部总线是按内存映射的地址和数据总线,这里只有直接内存访问控制器作为主设备,负责地址和读写信号的产生,其余模块作为从设备响应直接内存访问控制器的读写操作。接入控制单元(203)将系统任务队列、资源统计器、运行任务保留站的内部数据按照地址映射规则组织,使其能够被内部总线上的读写请求所访问。数据保留站用来将输入的图像数据拼接成一个周期的256位数据,由于直接内存访问操作只能在微处理器不占用系统总线的时候进行,因此不能保证每8个周期都能取到256位的图像数据,数据保留站用来将所述的直接内存访问控制器输入的多个周期的32位数据拼接成256位的数据输出。所述的格雷编码器用来将并行输入的256位原始图像数据(RGB或者YUV格式)转换成格雷码编码的数据。所述配置存储器存储的是PE阵列的内部详细配置和控制指令字。所述的配置和控制指令字,是根据所需要执行的算法和步骤,预先设定好的存储在外部存储器的作为程序数据段数据的一些二进制代码。所述系统任务队列由一个16入口的先入先出队列(FIFO)构成,该FIFO的输入数据为经由系统总线仲裁器输入的外部控制请求,输出端连接至指令分配器(218)和接入控制单元。资源统计器(213)连接在接入控制单元和指令分配器上,一方面,提供图像识别加速装置内部资源消耗情况的实时信息给微处理器,另一方面,提供图像识别加速装置内部资源消耗情况的实时信息给指令分配器,作为调度控制的依据信息。运行任务保留站(219)保存当前正在执行的任务的情况和各个任务占用的资源数据,这里的资源统计器和运行任务保留站都可以由ASIC标准单元库中的寄存器文件来实现,其中资源统计器可以是3入口、256位的寄存器文件,运行任务保留站可以是3入口、64位的寄存器文件。指令分配器(218)负责把计算任务分配给多个PE阵列。分配过程中会依据系统任务队列中任务的多少,资源统计器中内部资源消耗的情况和当前运行任务保留站中当前运行任务的情况动态的调度并分配计算任务给多个PE阵列。多个指令译码器单元负责将指令分配器分配给多个PE阵列或者格雷编码器的控制指令译码成PE阵列或者格雷编码器所需要的详细控制字,例如,将二进制编码译码成独热码(one-hot)。所述PE阵列(204,205,206)为16×16的计算单元(PE)构成的并行处理阵列,是图像识别计算的核心引擎,完成图像识别计算任务,如滤波,FFT等。一个所述图像识别加速装置中,可以有多个PE阵列,如在本实施例中,就实现了3个PE阵列的配置,各个PE阵列之间有专用的链接来进行数据传递。同时,所有的PE阵列均外挂在所述图像识别加速装置的内部总线上,按地址映射。数据存储器(208)是3个256B大小的双端口随机存储器。用来存储PE阵列的计算结果和临时数据存取。数据存储器可以工作在缓冲模式,第一个PE阵列计算完成的结果存储在第一个双端口存储器中,同时,这些数据作为第二个PE阵列的输入数据,依次类推。数据存储器也可以工作在终端模式,这时PE阵列的最终计算结果保存在数据存储器中,等待CPU通过直接内存访问控制器发起的读取。
图3是数据保留站模块的内部逻辑结构图。输入数据data为32位位宽。触发器301,302,303,304,305,306,307,308的位宽均为32位,其数据输入端D均连接在data输入线上。所述的触发器301,302,303,304,305,306,307,308,314,309的时钟输入均为clk,复位输入均为rst。加法器313的输入端一端为常数1,另一端连接至触发器314的输出。触发器314位宽为3位,其数据输入端D连接在加法器313的输出端。触发器314的使能端连接在输入信号we上。解码器312的输入端为触发器314的输出端,解码器312的输出端为8位的选择信号,分别连接至触发器301,302,303,304,305,306,307,308的使能端。比较器311的一端输入为常数0,另一端连接在触发器314的数据输出端Q。二输入与门310的输入端一端连接在输入信号we上,另一端连接至比较器311的输出端。触发器309的数据输入端D连接至与门310的输出端。其使能段始终为高电平。触发器309的数据输出端Q连接至输出信号we_out。触发器301,302,303,304,305,306,307,308的数据输出端Q合并为256位的数据输出信号dout。
图4是所述处理单元(PE)阵列的逻辑结构图。每个PE阵列由256个PE构成,排列成16×16的矩阵结构。每个PE具有6个连接端口,分别是上,下,左,右,前,后。其中上下左右四个连接端口为双向,前后端口为单向,具体的说,前向连接是输入端口,用于接收前一个PE阵列输出的数据。后向连接是输出端口,用于向后方的PE输出数据。同时,每个PE还具有一个和配置存储器连接的控制端口,用于接收配置存储器提供的配置指令。以下详细描述PE阵列的数据流向和操作过程:在第一个数据周期中,第一个PE阵列的第一列或者第一行在配置存储器的控制下,接受格雷编码器的数据输入,并进行相应的计算,在第二个数据周期到来时,第一个PE阵列的第一列或者第一行继续接收格雷编码器的数据输入,同时第一个PE阵列的第一列或者第一行在配置存储器的控制下,将上一周期的计算结果或者是原始数据传输至第二列或者第二行或者是第二个PE阵列的第一列或者第一行。第三个数据周期中,第一个PE阵列的第一列或者第一行继续接收格雷编码器的数据输入,同时第一个PE阵列的第一列或者第一行在配置存储器的控制下,将上一周期的计算结果或者是原始数据传输至第二列或者第二行或者是第二个PE阵列的第一列或者第一行。与此同时,第一个PE阵列的第二列或者第二行继续接收第一列或者第一行的输入,同时第一个PE阵列的第二列或者第二行在配置存储器的控制下,将上一周期的计算结果或者是原始数据传输至第三列或者第三行或者是第二个PE阵列的第二列或者第二行。依次类推,当16个数据周期结束后,第一个PE阵列的第16列或者16行将数据写入数据缓冲存储器。
图5是所述PE单元的内部逻辑结构图。每个PE由多端口交换网络(501)、计算单元(502)以及寄存器文件(503)构成。其中所述的多端口交换网络(501)具有多个双向输入输出端口,在本实施例中,多端口交换网络负责路由上,下,左,右以及前后PE阵列相同位置的数据。出于成本和复杂度的考虑,交换网络只采取最简单的交换策略,即作用相当于双刀多掷的开关,将外部某个数据通路和内部节点相关联,或者是旁路内部节点。所述的计算单元(502)的第一输入端连接在交换网络的一个输出端,第二输入端为寄存器文件的输出端。而计算单元的输出端连接至寄存器文件的输入端。所述的计算单元的作用和构成均相似普通8位MCU的计算单元,只是功能更简单化,可以实现加、减、比较和位操作,这里不再繁述。计算单元的输出送至寄存器文件进行缓存,而寄存器文件的输出送至计算单元,可以完成累加等操作。
通过以上的说明可知,本实施例的图像识别加速装置具有以下优点:
基于全静态逻辑电路设计,容易采用标准化ASIC流程生产制造;
PE结构简单但是功能强大,多个PE单元可以并发的执行不同的计算任务。在200MHz的时钟主频下,3个PE阵列可以提供153.6Gops的峰值计算能力,在采用0.13um的标准单元库实现时,芯片面积不到1平方毫米,成本低;
采用基于交换的数据路由方式,使得各个PE之间的数据通路可以灵活配置,适应不同的匹配算法的需求;
基于直接内存访问的数据搬移,无需微处理器干预。最大程度发挥加速功能。
以上虽然通过一些示例性的实施例详细地描述了本发明的图像识别加速装置、应用所述的图像识别加速装置的系统以及图像识别应用在所述的加速装置上的运行方法。但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅由所附权利要求为准。