图像处理引擎及包含图像处理引擎的图像处理系统的制作方法

文档序号:6608366阅读:162来源:国知局
专利名称:图像处理引擎及包含图像处理引擎的图像处理系统的制作方法
技术领域
技术领域涉及图像处理引擎及包含图像处理引擎的图像处理系统,特别涉及用总线连接CPU和直接存储器存取控制器的图像处理引擎及包含图像处理引擎的图像处理系统。
背景技术
随着半导体工艺的微细化,在1个LSI上实现大规模系统的SOC(系统芯片)化或在1个封装内搭载多个LSI的SIP(系统级封装)等技术成为主流。通过该逻辑的大规模化,如在嵌入式用途中看到的那样,能够在1个LSI内安装CPU核心和图像编解码加速器或大规模DMAC模块等完全不同的功能。
此外,半导体工艺的微细化使LSI稳态下的漏电流增加,漏电流造成的功耗的增加成为问题。近年来,通过停止向未使用模块供给时钟、或切断供给电源等,来实现功耗减少。这些降低功率是睡眠等待机状态时的降低功率。
另一方面,在用便携终端等来视听图像的情况下,LSI内的大致全部模块以稳态工作,所以不能采用上述待机状态时的降低功率手法。稳态时的功耗与工作频率、逻辑量、晶体管的激活率、及供给电压的平方成正比。因此,降低功率可以通过减小这些要素来实现。
为了降低工作频率,可以通过用并行化等增加1个周期中处理的处理量来实现。它倾向于增加所需的逻辑量,增加功耗,但是能够低速工作,能够减少时序关键路径,所以能够降低供给电压,随之能够减少功耗。因此,近年来,与提高工作频率相比,SIMD型ALU、或多处理器等通过提高并行度来降低功率成为主流。
(日本)特开2000-57111号公报示出了SIMD型ALU。它通过使运算器并行工作来增加1个周期中运算的处理量,结果,实现了工作频率减少。在图像处理等对每个像素实施同一运算的情况下,该SIMD型ALU很有效。
(日本)特开2000-298652号公报示出了多处理器。它通过共享多处理器使用的指令存储器,减少指令存储器的总逻辑量,实现了功率降低。
(日本)特开2001-100977号公报示出了VLIW型CPU。VLIW通过并行布置运算器,使其并行工作,来减少所需处理周期,实现了功率降低。
专利文献1(日本)特开2000-57111号公报专利文献2(日本)特开2000-298652号公报专利文献3(日本)特开2001-100977号公报在专利文献1中,公开了SIMD型ALU。一般的图像处理是对整个二维的块实施同一运算的算法。在用SIMD型ALU来实现它的情况下,每个周期供给只有通用寄存器的读寄存器号和写寄存器号不同的同一指令。这意味着每个周期取指令,必须每个周期存取保存着指令的存储器。存储器消耗的功率在整个LSI的功耗中所占的比例比较高。因此,每个周期读出指令存储器使功耗增加。
此外,SIMD型ALU是对有限的输入数据进行运算的结构。例如,在进行纵向的卷积运算等的情况下,用多个指令串来进行各元素的运算,最后将各运算结果相加。在考虑进位的情况下,进行作为预处理的位扩展、或作为后处理的舍入处理等,对于实际的卷积运算,造成处理周期增大。因此,需要高的工作频率,功耗提高。
在专利文献2中,公开了通过减少多处理器的面积来降低功率。根据该文献,只有进程工作着的处理器才存取共享指令存储器。因此,在多个处理器中进程同时工作着的情况下,发生指令存储器存取竞争,处理器的工作效率显著降低,发生性能降低。这样,处理器的指令供给依赖于指令存储器存取,消耗的功率的比率也很大。
在专利文献3中,公开了VLIW型CPU。根据该方式,随着使并行工作的运算器数增加,1个周期中读出的指令数也增加,功耗很大。此外,寄存器的端口数与运算器数成正比来增加,面积成本很大,这也使功耗增大。

发明内容
因此,在本申请中,提供用处理器来进行图像处理的情况下的降低功耗技术。
例如在指令的操作数中设有指定二维的源寄存器和目的寄存器的部分,具有在多个周期中使用多个源寄存器来执行运算、得到多个目的的单元。此外,在利用多个源寄存器花费多个周期来得到目的的指令中,将数据舍入运算器连接在流水线的最后一级上。
此外,将多个CPU串联连接,共享地使用共享型的指令存储器。此时,在各CPU的指令操作数中,具有用于控制相邻的CPU间的同步的字段,设有进行同步化控制的部件。
通过这些结构,例如通过减少存取指令存储器的次数,来减少读出指令存储器时消耗的功率。此外,通过减少指令数和共享指令存储器,通过减少指令存储器的总容量,来减少晶体管的充放电数,实现功耗降低。


图1是本实施例的嵌入式系统的框图。
图2是本实施例的图像处理部6的框图。
图3是本实施例的移位型总线50的框图。
图4是本实施例的移位寄存器槽500的框图。
图5是本实施例的移位型总线50的时序图。
图6是本实施例的图像处理引擎66的框图。
图7是本实施例的运算的一例。
图8是本实施例的CPU部30的框图。
图9是本实施例的生成用于控制由指令译码部303生成的寄存器文件304的读出端口和写入端口的控制线308、和数据存储器35的存取地址45的流程图。
图10是本实施例的指令存储器控制部32的框图。
图11是本实施例的数据存储器控制部33的框图。
图12是本实施例的局部DMAC 34的框图。
图13是本实施例的数据路径部36的框图。
图14是第2实施例的图像处理部66的框图。
图15是第2实施例的矢量运算部46的框图。
图16是第2实施例的指令存储器控制部47的框图。
图17是本实施例的用于说明输入同步的停止(stall)条件的图。
图18是本实施例的用于说明输出同步的停止条件的图。
图19是本实施例的用于说明图像处理引擎间同步的停止条件的图。
图20是第3实施例的图像处理引擎66内布置的CPU部的结构图。
图21是用于说明内积运算的例子的图。
图22是现有的SIMD型运算器的结构。
图23是本实施例的运算器的结构图。
图24是用于说明伴随转置的内积运算的例子的图。
图25是用于说明卷积运算的例子的图。
图26是本实施例的运算器的结构图。
具体实施例方式
以下,用图来说明本发明的实施例。
实施例1参照附图来详细说明本发明的第1实施例。图1是本实施例的嵌入式系统的框图。本嵌入式系统将下述部分相互连接在内部总线9上CPU1,进行系统的控制和通用性处理;流处理部2,进行MPEG等图像编解码器的1项处理即流处理;图像处理部6,与流处理部2合作来进行图像编解码器的编码和解码;声音处理部3,进行AAC或MP-3等声音编解码器的编码和解码;外部存储器控制部4,控制由SDRAM等构成的外部存储器20的存取;PCI接口5,用于与标准总线即PCI总线22相连;显示控制部8,控制图像显示;以及DMA控制器7,对各种IO设备进行直接存储器存取。
在DMA控制器7上,经DMA总线10连接着各种IO设备。在IO设备上,连接着摄像机等输入NTSC信号等的图像的图像输入部11、输出NTSC等图像的图像输出部12、话筒等输入声音的声音输入部13、扬声器或进行光输出等的声音输出的声音输出部14、遥控器等进行串行传送的串行输入部15、串行输出部16、TCI总线等用于输入流的流输入部17、硬盘等用于输出流的流输出部18及各种IO设备19。在PCI总线22上,连接着硬盘或闪速存储器等各种PCI设备23。
在显示控制部8上,连接着显示设备即显示器21。图像处理部6是对二维图像实施图像编解码或图像的放大缩小、或图像的滤波等处理的处理部。这样,本嵌入式系统是具有图像和声音的输入输出、进行图像和声音处理的系统。例如,有手机、或HDD记录器、监视装置、车载图像处理装置等。
图2是本实施例的图像处理部6的框图。图像处理部6经内部总线桥60被连接在内部总线9上。内部总线桥60经路径63被连接在内部总线主控制部61上,经路径64被连接在内部总线从控制部62上。内部总线主控制部61是图像处理部6对内部总线9成为总线主控器、生成读存取或写存取的请求、将请求输出到内部总线桥60的块。在对内部总线9写存取时,输出请求、地址、数据。在对内部总线9读存取时,输出请求和地址,在几个周期后,读数据被返回。内部总线从控制部62是接受从内部总线9输入、经由内部总线桥60输入的读请求或写请求、对应地进行处理的块。内部总线桥60是对内部总线9和内部总线主控制部61间、及内部总线9和内部总线从控制部62之间转交的请求或数据进行仲裁的块。移位型总线50是在图像处理部6内的块间传送数据的总线。各块和移位型总线50由3种信号线组相连。首先,使用图3和图4,说明移位型总线50。
图3是移位型总线50的框图。在移位型总线50上,作为与各块的接口,连接着3种信号线组。因此,信号线组50a、50b、50c被连接在1个块上,信号线组51a、51b、51c被连接在另一个块上,信号线组55a、55b、55c被连接在另一个块上。信号线组50a、50b、50c被连接在移位寄存器槽500上,信号线组51a、51b、51c被连接在移位寄存器槽501上,信号线组55a、55b、55c被连接在移位寄存器槽505上。各移位寄存器槽500、501、505被串联连接。例如,移位寄存器槽500的输出50e被输入到移位寄存器槽501的51d中,移位寄存器槽501的输出50f被输入到移位寄存器槽500的51g中。同样,移位寄存器槽505的输出50e被输入到移位寄存器槽500的50d中,移位寄存器槽500的输出50f被输入到移位寄存器槽505的55g中。信号线500p是向每个移位寄存器槽供给的时钟停止信号500p,被输入到50p端子、51p端子、55p端子中。时钟停止信号500p将在后面描述。移位寄存器槽500、501、505除了后述自身块ID以外,是同一结构。因此,作为代表,详细说明移位寄存器槽500。
图4是移位寄存器槽500的框图。在移位寄存器槽500上,连接着与各块的接口即信号线组50a、50b、50c、和块间接口即信号线组50d、50e、50f、50g。对于这些信号线组50a、50b、50c、50d、50e、50f、50g,将信号的意义总结在表1至表7中。这里,信号线组50b、50d、50g是输入信号,50a、50c、50e、50f是输出信号。其中,各信号线组50a、50b、50c、50d、50e、50f、50g是在同一周期中有效的值。
表1表1 信号线组50a

表2表2 信号线组50b

表3表3 信号线组50c

表4表4 信号线组50d

表5表5 信号线组50e

表6表6 信号线组50f

表7表7 信号线组50f

信号线组50d是输入信号,被保存到寄存器510中。寄存器510的输出即延迟了1个周期的右旋输入信号组511被输入到BID译码器512和选择器513、及信号线组50a中。向BID译码器512中输入输入信号组511中的至少WE、BID。BID译码器512具有用于识别自身的块号的块ID[4:0]。
图5示出右旋移位型总线50的时序图。用本时序图和图4的移位寄存器槽500的信号线组,来说明右旋移位型总线的总线协议。其中,本时序图中的自身的块ID是“B”。在输入的EID和块ID不等、而且WE为1的情况下,使选择器513选择信号线组511,由信号线组511向信号线组50e输出。结果,信号线组50d被延迟1个周期而输出到信号线组50e,投入到下一级移位寄存器槽中,作为有效的数据写事务被继承。该协议是图5中的数据移位输出。接着,在输入的EID和块ID相等、而且WE为1的情况下,识别为向自身的块的输入,将信号线组50a的R_WE_IN信号设为1。在该R_WE_IN信号为1的情况下,各块识别出来自右旋移位型总线的输入是数据写事务,并执行数据写处理。该协议是图5中的数据写。
进而,在数据写条件已成立的情况下,使选择器513选择输入信号线组50b一侧,由输入信号线组50b向信号线组50e输出。此时,向输入信号线组50e的SBR_WE_OUT输出输入信号线组50b的SBR_OUT_REQ。在SBR_OUT_REQ为0的情况下,作为无效的事务被输入到下一级移位寄存器槽中。该协议与图5中的数据写相同。在SBR_OUT_REQ为1的情况下,作为有效的事务被输入到下一级移位寄存器槽中。这是图5中的数据写及数据输出。其中,在输入的WE为0的情况下,识别出输入了无效的事务,使选择器513选择输入信号线组50b一侧,能够从自身块进行数据写。
根据这些BID译码器512的动作,能够进行接受来自信号线组50d的输入作为数据写事务的动作,将信号线组50b输出到下一级移位寄存器槽作为数据写事务的动作,以及在不是对自身的块的数据写事务的情况下,将该事务继承到下一级的动作。由此,来实现从左侧的块向右侧的块的右旋的数据传送。
同样,通过对上述说明,将信号线组50d置换为信号线组50g,将信号线组50e置换为信号线组50f,将信号线组50a置换为信号线组50c,将寄存器510置换为寄存器514,将BID译码器512置换为BID译码器516,将选择器513置换为选择器517,将SBR_OUT_REQ信号置换为SBL_OUT_REQ信号,来实现从右侧的块向左侧的块的左旋的数据传送。
其中,在从信号线组50a和信号线组50c同时对存储器等使用单端口存储器的存储器发生数据写事务的情况下,发生存储器写端口的竞争。为了避免它,有几种方式。1种是使一方的移位型总线停止(stall),使来自一方的数据写优先。在此情况下,将竞争信号向全部块广播并停止。此外,通过将信号线组50a和信号线组50c投入到FIFO中,能够减少竞争的频度。再者,在使用这种存储器的情况下,通过采用交叉(interleaved)型存储器结构,将来自右旋移位型总线和左旋移位型总线的写入设为写入到不同体存储器(別バンクメモリ),能够避免竞争。其中,通过使数据流是单纯的,且块间的数据转交使用右旋移位型总线,来自外部存储器的读入、即经内部总线桥60的数据写事务使用左旋移位型总线,由此能够避免竞争。此外,对1个存储器,从右旋移位型总线和左旋移位型总线在同一周期中发生数据写事务而竞争的概率非常小。因此,可以说性能降低的比例很小。
通过本方式,不用具有一般时序关键的全局的总线仲裁电路,就能够实现总线传送。此外,用移位寄存器槽500内的寄存器510、514,以块为单位经寄存器,在实际的LSI的平面布置图中,能够减少长的布线和时序关键路径。一般,在三态总线方式、或纵横制开关型总线中,在块数增加的情况下,时序关键路径、或布线量增加;但是根据本方式,在增加了总线上连接的块数的情况下,也能够抑制时序关键路径和布线量增加。
再者,在多个块间,能够在同一周期中并行传送数据,能够得到很高的数据传送性能。特别是在只对相邻的块传送数据的情况下,能够得到与块数成正比的数据带宽。这样,移位型总线50的总线协议只是数据的写。在数据写的总线协议中,能够在与请求信号(WE_OUT)同一周期中,输出地址(ADDR_OUT)和数据(DATA_OUT),与用FIFO或队列保持状态的同时执行的总线结构相比,能够构成更单纯的总线。
时钟停止信号500p被输入到50p端子中。在该时钟停止信号50p信号活动的情况下,选择器513和选择器517都选择信号线组50d和信号线组50g。由此,从输入到输出,不经寄存器而直通传播。通过本方式,例如在停止了1个块的时钟的情况下,也能够传送数据。该移位型总线50没有全局的总线仲裁电路,所以通过至少只向应工作的块供给时钟,能够在块间传送数据,通过减少工作的寄存器数,能够减少功耗。其中,通过向整个移位型总线50供给时钟,而不向各块供给时钟,也能够以与寄存器510、514、518相应的功率增加,来停止各块。
这样,移位型总线50能够用单纯的接口来连接相邻的块间。因此,通过增加块ID字段,能够连接多个块。在本实施例的说明中,说明了图像处理部6内的公共总线,但是不限于此。例如,通过在LSI的管脚上采用移位型总线接口,能够串联连接多个LSI,不仅能够与相邻的LSI,而且能够与布置得远离的LSI进行通信。其中,在LSI间连接中,使用高速串行接口等,也能够实现管脚数减少。
此外,在移位型总线50中,具有Last信号。与数据传送同时,在该信号线为“1”的情况下,使后述同步控制部473内的数据存储器就绪计数器DMRC进行递增计数。由此,在指令级实现块间的同步化。详细情况将在后面描述。其中,在移位型总线中,也具有读事务。该读事务也将在后面描述。
再用图2来说明图像处理部6。在移位型总线50上连接着多个块。除了先前所示的内部总线主控制部61、内部总线从控制部62以外,还连接着具有整个图像处理部6可共享的存储器的共享局部存储器65、根据软件来工作的对二维的图像进行图像编解码或图像的旋转、放大缩小等处理的多个图像处理引擎66、67、执行图像处理的一部分处理的专用硬件68等。作为专用硬件68的一例,是处理MPEG-2或H.264编码标准中的、编码时的运动预测等的块。但是,专用硬件68的处理内容与本发明的本质没有关系,所以省略其说明。图像处理引擎66、67是处理器型的块,能够在移位型总线上连接多个。共享局部存储器65、图像处理引擎66、67、专用硬件68、内部总线主控制部61、内部总线从控制部62分别具有独自的块ID,按移位型总线50的公共总线协议,来相互连接。
接着,用图6来更详细地说明第1实施例的图像处理引擎66。图6是图像处理引擎66的框图。图像处理引擎66的接口只是与移位型总线50的接口,是右旋移位型总线的输入信号51a、左旋移位型总线的输入信号51c、及向移位型总线50的输出信号51b。这3种信号被连接在数据路径部36上。在数据路径部36上,经信号线44连接着对移位型总线50进行数据输出处理的局部DMAC 34。
再者,图像处理引擎66具有能够从移位型总线50进行数据写的指令存储器31和数据存储器35,在数据路径部36上,经路径42与控制指令存储器31的指令存储器控制部32相连,经路径43与数据存储器控制部33相连。指令存储器控制部32是控制从移位型总线50向指令存储器31的数据写、和向CPU部30的指令供给的块,经路径40与指令存储器31相连,经路径37与CPU部30相连,经路径42与数据路径部36相连。数据存储器控制部33是控制从移位型总线50向数据存储器35的数据写、进行控制局部DMAC 34所控制的从数据存储器35向移位型总线50的数据输出的控制、和从CPU 30向数据存储器35的存取的控制的块。数据存储器35的控制使用路径41来进行。
从移位型总线50向数据存储器35的数据写、和从数据存储器35向移位型总线50的数据输出经路径43与数据路径部36协调来控制。与CPU部30的连接通过2个路径来控制。从数据存储器35向CPU部30的数据读出处理通过路径38来控制,从CPU部30向数据存储器35的数据写入通过路径39来控制。并且,数据存储器35的存取地址通过路径45来供给。
其中,在本实施例的说明中,为了容易说明,将数据存储器35的个数设为1个,但是也可以是使用多个数据存储器的交叉结构。通过交叉结构,能够并行存取多个数据存储器35。在说明本发明时,定义CPU 30的运算内容。但是,该运算内容是用于说明本发明的本质的,并不限定运算内容的种类。
图7示出运算内容的概要。如图7所示,运算内容是将二维的图像A和二维图像B的每个像素相加,写入到存储器中。在使用专利文献1所示的SIMD型运算器的情况下,所需周期为矩阵A的读出花费4个周期,矩阵B的读出花费4个周期,加法花费4个周期,减法花费4个周期,合计需要16个周期。其中,在SIMD型运算器的并联数为8的情况下,加法所需的周期数为2,但是在本发明中,说明4并联的SIMD型运算器。此时,SIMD型运算器所需的总指令数是与所需周期数相同的16条指令。使用该运算内容,来描述本发明的实现方式。
CPU部30是对二维图像进行运算等的CPU。在本实施例中,为了容易说明,假设CPU部30具有以下所示的4条指令。但是,该指令的种类是用于容易说明的,而并不限制指令种类。但是,后述的寄存器指针和指定高度方向的单元是必要的要素。4条指令为分支指令、读指令、写指令、加法指令。表8至表11示出各指令的指令格式中所需的位字段。
表8表8 分支指令的指令格式

表9表9 读指令的指令格式

表10表10 写指令的指令格式

表11表11 分割加法指令格式

图8是CPU部30的框图。与指令存储器控制器32的接口37分为2种信号,1种是指令译码部303向指令存储器控制部32输出的取指令请求37r、和指令存储器控制部32输出的并输入到CPU部30中的指令37i。指令译码部303在1个指令处理已结束的时刻输出取指令请求37r。对应地输入指令37i和指令就绪信号37d,保存到指令寄存器301中。在这里的说明中,将指令寄存器301的组数设为1来进行说明。但是,指令的读出等待时间大于1个周期,所以也可以具有多组指令寄存器301。指令寄存器301的值被供给到指令译码部303,对指令进行译码。在指令译码部303中,生成控制寄存器文件(通用寄存器)304的读出端口和写入端口的控制线308、用于控制运算器313的指令译码信号309、以及用于按指令的种类控制选择器311的控制线310。此外,在1条指令处理已结束的时刻,输出取指令请求37r。
在本说明中,说明除了分支指令以外、还具有读指令、写指令、分割加法指令的CPU部30。因此,控制线308在读指令时,在读数据38已被返回的时刻,将保存读数据的寄存器号指针值用作保存目的寄存器号指针。在写指令时,需要读出寄存器文件304,所以使用写数据寄存器号。在分割加法指令时,读出和写入寄存器文件304都需要,控制它。指令译码信号309在本说明中只在分割加法指令时活动,在具有其他指令的情况下,根据指令种类,来输出用于控制运算器的信号。控制线310在读指令时,选择读数据38;在分割加法指令时,选择运算器313的运算结果314。选择出的运算数据315被保存到寄存器文件304中。此外,指令译码部303在读指令时和写指令时,控制运算部313,生成数据存储器35的存取地址45。
其中,运算器303与专利文献1同样由8并联的SIMD型运算器构成,能够并行运算8个8位宽度的加法。即,能够并行运算8个分割加法。此外,将CPU 30的数据宽度设为8个字节。因此,读指令、写指令、分割加法指令能够以8个字节为单位来执行。此外,在读指令、写指令、分割加法指令的Width字段中,可以定义8、16、32;在计数字段中,可以以1为间隔来指定1至16。
用图9来说明指令译码部303及运算部313生成存取地址45的工作。图9是生成控制指令译码部303生成的寄存器文件304的读出端口和写入端口的控制线308、和数据存储器35的存取地址45的流程图。
指令译码部303具有Wc计数器,在起动指令时清零(步骤90)。接着,在步骤91中,使用Src和Dest、(Addr+Wc),来执行读指令、写指令、分割加法指令。接着在步骤92中,在Src和Dest上加1,Wc上加8。在步骤93中,比较用指令字段指定的Width字段和Wc。在Width大于Wc的情况下,再次返回到步骤91,重复执行指令。在Width等于、或小于Wc的情况下,转移到步骤94,判定指令字段所示的Count值是否是0。在Count值不是0的情况下,转移到步骤95,从Count值中减去1,Addr上加Pitch,再次转移到步骤90,重复执行指令。在Count值为0的情况下,结束执行指令。此时,指令译码部303输出取指令请求37r。
通过图9的时序图的动作,能够用1条指令对二维矩形进行运算。特别是在读指令中,通过指定Pitch,能够将数据存储器35上分散布置的二维矩形作为连续数据保存到寄存器文件304中。此外,在写指令中,同样通过指定Pitch,能够将寄存器文件上布置的连续数据写到数据存储器35上的分散布置的二维矩形区域上。
在图7所示的运算内容中,能够用2条读指令、1条分割加法指令、1条写指令这合计3条指令来结束运算。即,从指令存储器31中只取4条指令即可。但是,对专利文献1所示的SIMD型的指令长度,本发明的指令附加了Width、Count、Pitch等操作数,指令长度变长。在专利文献1的指令宽度设为32位的情况下,本发明的指令长度是64位左右。一次指令存储器存取消耗的功率为2倍,但是能够将存取次数从16减少到4,指令存储器消耗的总功耗由2×4÷16来表示,能够将功率减少到一半。此外,用1条指令对二维的数据进行处理,能显著地减少程序的同一指令的循环的次数。这意味着能够减少指令存储器31的容量。
其中,在图8中,输入数据30i被输入到寄存器文件304中,能够更新寄存器文件304的数据。进而,运算数据315作为运算数据30wb来输出。该输入数据30i和运算数据30wb将在第2实施例中进行说明。
用图10来说明第1实施例的指令存储器控制部32。图10是指令存储器控制部32的框图。指令存储器控制部32是控制指令存储器31的存储器存取的块。指令存储器31有从CPU部30中取指令的存取、和从移位型总线50的存取,指令存储器控制部32仲裁这些存取,来存取指令存储器31。存取仲裁由仲裁部320来进行。存储器存取请求是从CPU部30输入的取指令请求37r、和从数据路径部36输入的路径42。根据仲裁结果来控制选择器323,输出用于存取指令存储器31的地址等控制线40c。
在取指令存取的情况下,仲裁部320使选择器323选择指令的程序计数器322的输出,读出指令存储器31,并且输出控制线321,递增程序计数器322。从指令存储器31返回的指令40d被保存到指令寄存器324中,作为指令37i而返回到CPU部30。同时,指令的操作数字段被输入到分支控制部325中,判断是否是分支指令,在分支指令时将为1的信号326输入到仲裁部320中。此外,分支条件寄存器的读出索引字段被输入到分支条件寄存器327中。所谓分支条件寄存器327,是由1位宽度的多个字构成的寄存器组,用分支条件寄存器的读出索引字段来指定字,将1位宽度的信号328输入到仲裁部320中。
实际的分支是在信号326为1、而且信号328为1时分支。将本组合以外识别为分支指令以外的指令。仲裁部320只在分支指令以外的指令时,才返回指令就绪信号37d。在分支指令时,不返回指令就绪信号37d,选择器323选择指令寄存器324内保存的立即数。此时,用将该立即数递增了的值来更新程序计数器322。
根据本方式,在CPU的取指令请求37r的发出间隔需要几个周期的情况下,能够完全隐蔽分支指令造成的重新读出指令所需的周期,能够抑制分支造成的性能降低。在本发明的CPU部30中,通过指定二维的操作数,取指令请求37r的发出间隔大,该效果大。
用图11来说明第1实施例的数据存储器控制部33。图11是数据存储器控制部33的框图。数据存储器35能够从CPU部30读及写存取、从移位型总线50写处理、从局部DMAC 34写存取,数据存储器控制部33是仲裁这些存取的块。这些仲裁由仲裁部330来进行,控制地址选择器331和数据选择器332。其中,与数据存储器35之间的信号线41被分类为41a、41d、41w这3个信号线。而与数据路径部36之间的信号线43被分类为信号线43a、43d、411、43r这4个信号线。
首先,说明与CPU部30之间的连接。读指令时及写指令时的数据存储器地址45通过地址选择器331,作为数据存储器地址41a,被输入到数据存储器35中。在写指令时,写数据39经由数据选择器332,作为写数据41w被输入到数据存储器35中。在读指令时,根据数据存储器地址41a,来读出读数据41d,保存到数据寄存器333中。保存的读数据作为读数据38被返回到CPU部30。其中,在将主S/D寄存器的值指定为读指令的DestReg的情况下,读数据被输出到读数据43r。接着在从移位型总线50的写处理中,地址线43a通过地址选择器331,作为数据存储器地址41a,被输入到数据存储器35中。同时数据线43d经由数据选择器332,作为写数据41w被输入到数据存储器35中。
最后,在从局部DMAC 34存取时,地址43p通过地址选择器331,作为数据存储器地址41a,被输入到数据存储器35中。对应地读出的读数据41d被保存到数据寄存器333中,作为读数据43r被返回。
用图12来说明第1实施例的局部DMAC 34。图12是局部DMAC 34的框图。局部DMAC 34具有生成向移位型总线50输出数据的处理中的数据存储器地址44da、和用于对应于从移位型总线50输入的从数据存储器35的读存取来进行读处理的数据存储器地址44da的功能;生成向移位型总线50输出数据时的移位型总线地址44sa的功能;以及用于对移位型总线50产生读命令的功能。局部DMAC 34用信号线44只连接数据路径部36。这里,信号线44可以分类为信号线44pw、44swb、44da、44sa、44dw这5种信号线。
在局部DMAC 34内,具有可由读指令改写的主D寄存器340及主S寄存器341、可从移位型总线50写入的从D寄存器342及从S寄存器343这4个寄存器组。表12至表15示出各寄存器的格式。
表12表12 主D寄存器340的格式

表13表13 主S寄存器341的格式

表14表14 从D寄存器342的格式

表15表15 从S寄存器343的格式

使用局部DMAC 34的数据传送具有3种工作模式。
第1种是数据写模式。在数据写模式中,用主D寄存器340的参数,来读出自身的数据存储器35,用主S寄存器341的参数,将数据传送到其他图像处理引擎等块,将数据写到数据存储器35等地址映射的区域上。
第2种是读命令模式。在读命令模式中,将主D寄存器和主S寄存器的值本身作为数据,将数据传送到其他图像处理引擎等块,将值保存到其他块内的从D寄存器和从S寄存器中。这作为向其他块的读请求来工作。其中,在读指令模式时,作为移位型总线50的接口,将CMD信号设为1来传送。接受读指令的块根据CMD信号,来识别该移位型总线传送是否是读命令。
第3种是读模式。对先前的读命令模式中接受的读请求,用从D寄存器342的参数,来读出数据存储器35,用从S寄存器343的参数,将数据传送到其他图像处理引擎等块,将数据保存到数据存储器35等地址映射的区域上。通过组合这3种模式,在图像处理引擎等块间实现数据传送。
主D寄存器340和主S寄存器341能够由CPU部30发出的读指令来更新,此时,从信号线44pw输入数据,更新2个寄存器。即,通过预先将描述了数据传送内容的描述符保存到数据存储器35中,将该内容拷贝到主D寄存器340和主S寄存器341中,来开始数据传送。
在2个寄存器已被更新的时刻,根据主D寄存器340的Mode字段来转移到2个状态。在Mode字段表示数据写模式的情况下,经地址选择器344,将主D寄存器340的MADDR、MWidth、Mcount、MPitch传送到数据存储器地址生成器346。数据存储器地址生成器346生成用于读出数据存储器35的地址,输出地址44da。生成地址的方式与CPU部30内的指令译码部303生成存取地址45的方式相同。因此,在数据存储器地址生成器346中具有Wc计数器,通过生成将MWidth、MCount、MPitch分别置换为Width、Count、Pitch所得的地址,来生成二维矩形的地址。
同样,主S寄存器341的SADDR、SWidth、SCount、SPitch经由地址选择器345被输入到移位型总线地址生成器347中,生成要输出到移位型总线50的地址,输出地址44sa。该移位型总线地址生成器347生成地址,也与数据存储器地址生成器346生成地址同样,来表现二维矩形。用这2个地址,从数据存储器35中依次读出读数据43r,结果,作为信号线组50b,来实现从图像处理引擎66向移位型总线50的写数据处理。此时,传送目的块是主S寄存器341的SBID所示的字段。此时,根据MDIR标志,来决定使用右旋的移位型总线,还是左旋的移位型总线。
其中,在本方式中,分别使用MWidth、MCount、MPitch和SWidth、SCount、SPitch,来生成数据存储器35的地址44da和用于输出到移位型总线的地址44sa。这样,通过用2个寄存器组来分别生成地址,能够变换二维矩形的形状来传送数据。但是,在作为同一矩形来传送的情况下,能够只用一方的参数来生成地址。
另一方面,在Mode字段表示读命令模式的情况下,主D寄存器340和主S寄存器341的值直接作为输出信号44swb来输出,将读命令传送到其他块。此时,传送目的块是主D寄存器340的MBID字段所示的块。在传送目的块接受该读命令的情况下,更新从D寄存器342和从S寄存器343,作为读模式来开始处理。读命令经路径44sw被更新为从D寄存器342和从S寄存器343。传送目的块接受读命令后,用与先前的数据写处理大致同样的动作,来读出读数据,输出到移位型总线50。从D寄存器342的MADDR、MWidth、MCount、MPitch经由地址选择器344被输入到数据存储器地址生成器346中,作为地址44da来存取数据存储器35。其后的行为与数据写时相同。同样,从S寄存器343的SADDR、SWidth、SCount、SPitch经由选择器345被输入到移位型总线地址生成器347中,生成地址44sa。其后的动作与数据写时相同。通过这3个局部DMAC 34的动作,在移位型总线50中,只用能够在同一周期中输出地址和数据的写事务来实现数据传送。一般,为了提高总线的性能,使用将地址和数据分离开的分割(スプリツト)型总线。所谓分割型总线,用同一事务ID等ID来管理地址和数据,各请求从(リクエストスレ一ブ)一侧将地址按FIFO等排队,进行待机,直至数据接收。因此,总线性能受队列或FIFO的级数限制。另一方面,在本方式中,在所有总线传送中,能够在同一周期中传送地址和数据,不发生FIFO级数等造成的性能的饱和。
其中,局部DMAC 34的动作用读指令来起动,在已起动的时刻,CPU部30能够执行下一条指令。但是,只在使用局部DMAC 34的传送执行中,下一个DMAC 34的使用为禁止状态,停止。但是,通过增大起动局部DMAC 34的发出间隔,不发生竞争造成的性能降低。在此期间,CPU部30通过执行别的处理序列,能够并行执行CPU部30的处理和块间传送,能够减少所需的处理周期数。此外,对于读传送,只有1组从D寄存器342和从S寄存器343,所以在读处理执行中,禁止接受下一条读命令,不在移位型总线50上进行终接_。移位型总线50成环形,通过在该读命令环绕了移位型总线50一周的时刻,接受读命令,能够重新起动读命令。通过用写模式来进行块间的数据传送的大部分,抑制读的发生频度,能够减少该性能降低。图像处理的数据流性动作较多,块间传送大部分使用写模式,所以本方式能够抑制性能降低。
在局部DMAC 34进行的传送中,能够向移位型总线50输出“Last”信号。这在主D寄存器340或从D寄存器342内的Last字段为“1”的传送时,二维矩形的传送的最后一次传送时,只断言(アサ一ト)1个周期。由此,能够识别作为对象的直接存储器传送是否已结束。这在后述的块间同步时使用。
用图13来说明第1实施例的数据路径部36。图13是数据路径部36的框图。数据路径部36是进行移位型总线50、指令存储器控制部32、数据路径部33以及局部DMAC 34之间的数据转交的块。首先,说明从移位型总线部50输入数据。右旋移位型总线的输入即信号线组51a和左旋移位型总线的输入即信号线组51c被连接在向指令存储器31的写入路径即路径42、向数据存储器35的写入路径中的地址即路径43a和数据即路径43d、及向局部DMAC 34内的从D寄存器342和从S寄存器343的写入路径即路径44sw上。向移位型总线50的数据输出即信号线组51b从2个块输入,1个是来自数据存储器35的读数据43r,第2个是来自局部DMAC 34的输出即主D寄存器340和主S寄存器341的直接输出信号44swb、和向移位型总线50的输出地址44sa。它们被排他地处理,用移位型总线50的协议来控制。此外,局部DMAC 34用于读出数据存储器35的地址44da被连接在数据存储器控制部33的地址43p上。
这样,根据第1实施例,通过减少指令存储器31的存取频度、和停止向各块供给时钟等,能够减少功耗。此外,通过隐蔽在分支指令中、和与局部DMAC 34并行动作等,来显著地减少处理周期数,实现功率降低。
实施例2用图14来说明本发明的第2实施例。图14是本实施例的图像处理部66的框图。相对于图6所示的第1实施例的图像处理引擎66有3处不同。第1处是CPU部30的输入数据30i和运算数据30wb被连接在矢量运算部46上。输入数据30i是要输入到CPU部30内的寄存器文件304中的数据,能够更新寄存器文件304的数据。运算数据30wb是CPU部30的运算结果,被输入到矢量运算部46中。第2处是代替图6的指令存储器控制部32而连接着指令存储器控制部47。指令存储器控制部47具有多个程序计数器,控制指令存储器31。此外,第3处不同是矢量运算部46经路径37被连接在指令存储器控制部47。
图15示出第2实施例的矢量运算部46的框图。矢量运算部46的功能与图8所示的CPU部30的不同点是不能存取数据存储器35。接口的差别是路径38、路径39、路径45不存在。其中,运算部463与图8的运算部313为同一结构,或者指令集也可以不同。矢量运算部46的运算内容将在后面用图21至图26来描述。
图16示出指令存储器控制部47的框图。指令存储器控制部47和图10所示的指令存储器控制部32之间的差别有2处。第1处是用仲裁部470来接受来自CPU部30和矢量运算部46的2个取指令请求37r,进行仲裁。仲裁结果471被输入到面向矢量运算部46的程序计数器472中。此外,控制选择器475,来输出用于存取指令存储器31的地址等控制线40c。这样,从指令存储器31保存2个CPU的指令串,能够共享指令存储器31。在第1实施例的说明中,描述了在本方式中,能够增大取指令的发出间隔。因此,在多个CPU存取共享的指令存储器31的情况下,存取竞争发生的频度也低,能够抑制性能降低。第2处不同是同步控制部473。同步控制部473是进行CPU部30和矢量运算部46的同步处理的块,生成各CPU的停止信号474。
在图14及图15的说明中,示出了CPU部30和矢量运算部46的运算结果能够保存到另一方的寄存器文件304和462中。同步控制有2种方式,1种是表示是否准备好了输入数据的同步化。例如,在CPU部30的运算数据30wb变为有效的时刻,矢量运算部46能够使用该运算数据30wb。因此矢量运算部46必须停止,直至运算数据30wb变为有效。将此称为输入同步。第2种是要写入目的地寄存器文件知道是否是可写入状态的同步化。例如,CPU部30必须停止,直至矢量运算部46的寄存器文件462变为可写入。将此称为输出同步。
此外,在从其他图像处理引擎6使用局部DMAC 34将数据直接存储器传送到数据存储器35中、CPU部30读出该传送数据的情况下,必须识别该直接存储器传送是否已结束。在数据传送未结束的情况下,CPU部30停止。将此称为块间同步。其中,块间同步在第1实施例中也可以使用,但是只在此第2实施例中进行说明。同步控制部473进行这3种同步化处理。接着,说明同步控制方式。在同步控制中,用为每个CPU布置的4个计数器、为每个块成对布置的2个计数器、以及指令上定义的5个标志来进行同步化。表16示出计数器的定义。此外,表17示出指令内布置的同步化字段的定义。
表16表16 同步化计数器的定义

表17表17 指令内的同步化字段

首先,用图17来说明输入同步。在CPU部30的运算数据30wb变为有效的时刻,矢量运算部46能够使用该运算数据30wb。因此,矢量运算部46需要停止,直至运算数据30wb变为有效。在CPU部30的指令中、DRE字段为1的指令结束的时刻,使矢量运算部46内的执行就绪计数器ERC〔矢量运算部46〕进行递增计数。按该指令,将运算数据30wb保存到矢量运算部46中,在该指令结束的时刻,矢量运算部46能够进行使用数据30wb的运算。至此矢量运算部46中的具有ISYNC的指令停止。该停止条件是在ERC〔矢量运算部46〕小于或等于SRC〔矢量运算部46〕时,具有ISYNC的指令时。在先前的使ERC〔矢量运算部46〕进行了递增计数的时刻,执行就绪计数器ERC〔矢量运算部46〕变得大于从请求数计数器SRC〔矢量运算部46〕。在此时刻,矢量运算器46能够解除停止,开始运算。同时使从请求数计数器SRC〔矢量运算部46〕进行递增计数。通过这2个计数器的1组更新来进行1次输入同步。
此外,在矢量运算器46的处理速度慢、SRC和ERC的递增计数有乖离的情况下,可以由CPU部30准备运算数据30wb,即,使执行就绪计数器ERC进行递增计数,能够作为数据的预取来动作。
同样,在CPU部30使用矢量运算器46生成的运算数据30i的情况下,与先前的说明相反,在矢量运算器46的指令中使用DRE字段,在CPU部30的指令中使用ISYNC字段,能够用CPU部30内布置的执行就绪计数器ERC〔CPU部30〕和从请求数计数器SRC〔CPU部30〕来进行输入同步。其中,这里,说明了使用执行就绪计数器ERC和从请求数计数器SRC的输入同步,但是也可以用1位宽度的标志。例如,按执行就绪计数器ERC的更新条件来置位标志。2个CPU停止,直至该标志和运算数据的接收端的CPU指令的ISYNC标志都为1。在解除停止的时刻,通过清除标志,能够用很少的逻辑电路来进行2个CPU间的同步化。
接着,使用图18来说明输出同步。输出同步也与输入同步同样用2个计数器和2个指令内定义的同步字段来进行同步化。输出同步是要写入目的寄存器文件知道是否是可写入状态的同步化。例如,CPU部30必须停止,直至可写入矢量运算部46的寄存器文件462。输入同步是后级CPU的停止,而输出同步是前级CPU的停止。
在本例的动作中,能够在矢量运算器46的指令中、RFR字段被置位为1的指令结束的时刻,从CPU部30写入到矢量运算器46的寄存器文件462中。在该RFR字段被置位为1的指令结束的时刻,使CPU部30的寄存器文件就绪计数器RFRC〔CPU部〕进行递增计数。至此,CPU部30的OSYNC被置位的指令在请求起动的时刻停止。该停止条件是寄存器文件就绪计数器RFRC〔CPU部〕的值小于或等于主请求数计数器MRC〔CPU部〕时。在受托起动CPU部30的OSYNC被置位的指令的时刻,使主请求数计数器MRC〔CPU部〕进行递增计数。本方式也与输入同步同样,在前级CPU的处理非常慢、后级CPU的处理快的情况下,能够空余很多寄存器文件的空闲容量。在此情况下,在前级CPU的输出同步时不发生停止。同样,在矢量运算部46停止、直至可写入CPU部30的寄存器文件304的输出同步中,通过使矢量运算部46使用OSYNC,CPU部30置位RFR字段,来实现2个CPU间的输出同步。通过组合这些输入同步和输出同步,来实现2个CPU间的寄存器文件级的细致的同步。在这些同步化方式中,在指令自身中具有同步字段是其特征。
最后,用图19来说明块间同步。所谓块间同步,是其他信息处理引擎6等通过直接存储器传送将数据保存到数据存储器35中、CPU部30用读指令来使用该传送数据时的同步化。CPU部30需要识别是否直接存储器传送已结束、所有数据被保存在数据存储器35内,在未保存的情况下,输入数据为无效的值,所以必须停止。即,在读指令时,检查是否可执行该读指令,用与先前所示的输入同步大致同样的方式来进行同步化。即,通过比较2个计数器的大小来进行同步化。第1个计数器是数据存储器就绪计数器DMRC,是在先前所示的移位型总线50的传送中、在伴随“Last”信号的传送中进行递增计数的计数器。这通过设定局部DMAC 34的主D寄存器340的“Last”标志,在直接存储器传送的最后一次传送、即二维矩形传送的最后一次传送的时刻断言。即,用可识别直接存储器传送已结束的信号,在其为“1”时,使数据存储器就绪计数器DMRC进行递增计数。即,在从CPU部30来看的情况下,表示数据已准备好。
第2个计数器是数据存储器存取计数器DARC,是在变得可执行读指令的操作数内布置的MSYNC为“1”的指令的时刻进行递增计数的计数器。因此,CPU部30可执行读的定时是数据存储器就绪计数器DMRC大于数据存储器存取计数器DARC时。换言之,在数据存储器就绪计数器DMRC等于或小于数据存储器存取计数器DARC的情况下,CPU部30停止。这样,能够在读指令这一指令级进行块间的同步化。
这样,根据第2实施例,在可使用多个二维的操作数的CPU共享指令存储器的情况下,指令的发出间隔大,所以能够抑制性能降低,并且能够通过共享指令存储器来减少存储器面积。再者,通过用CPU部30对数据存储器35进行读和写处理,用矢量运算器46进行运算处理,用同步单元进行2个CPU间的寄存器文件级的同步化,能够提高运算吞吐量。此外,在指令级实现块间的同步化。
实施例3用图20来说明第3实施例。图20是本实施例的图像处理引擎66内布置的CPU部的结构图。在第1实施例中,由1个CPU部30构成;在第2实施例中,说明了由CPU部30和矢量运算部46这2个CPU构成。在第3实施例中,串联或环形连接2个以上的多个CPU。在图3中,在先头的CPU上,布置可存取数据存储器35的CPU部30,将多个矢量运算部46、46n串联连接,在末端上连接可存取数据存储器35的CPU部30s。CPU部30s的运算数据30i再次被连接在CPU部30的输入数据部上。此时,各CPU分别成为具有程序计数器的结构,实际上成为具有多个图16所示的指令存储器控制部7内的程序计数器的结构。仲裁部470从多个取指令请求37r中选择取指令。
此外,对同步化处理的控制也不同。在第2实施例的说明中,描述了2个相邻的CPU间的输入同步方式和输出同步方式。在第3实施例中也进行同样的同步化处理。即,在相邻的CPU之间,进行输入同步和输出同步。此外,在最后一级CPU部30s和第一级CPU部30之间,也进行同步化。此外,CPU部30和CPU部30s都存取数据存储器35。因此,图11所示的数据存储器控制部33也控制多个数据存储器存取。根据本方式,用CPU部30从数据存储器35中读入数据,传送到矢量运算部46。将矢量运算器46的运算结果传送到矢量运算器46n,矢量运算器n进行下一个处理,将运算数据传送到CPU部30s。CPU部30s通过将运算结果传送到数据存储器35,能够以流水线方式读数据、进行运算、保存数据,得到高的运算吞吐量。特别是通过使数据存储器35采用交叉结构,分割读指令和写指令、及直接存储器存取的块,能够得到高的吞吐量。
再者,根据本方式,在串联或环形连接2个以上的CPU的结构中,也能实现伴随CPU间的同步的多CPU结构。再者,在CPU数增加的情况下,寄存器文件的读写端口数也不增加,不增加网络或寄存器文件的面积。例如,上述专利文献3所示的VLIW结构等造成的CPU数的增加与运算器数成正比,寄存器的端口数增加,面积成本增大,而在本方式的串联连接中,它不增加。
此外,在VLIW方式中,多个运算器活动的定时不同。例如,考虑下述例子在同一运算循环内,1个运算器进行存储器读,第2个运算器进行通用运算,第3个运算器进行存储器写。此时,各个CPU实际动作的运算周期数不同,但是在同一运算循环中进行处理,所以运算器的工作效率降低,结果,所需处理周期数增加,功耗增加。另一方面,在本方式中,能够使各CPU分别具有程序计数器,不依赖于其他CPU的动作及程序计数器的动作,能够处理各自的运算。例如,在10次循环中的第5次和第6次之间变更1个参数的情况下,在VLIW方式中,需要用各5次的2个循环来描述指令串;但是在本方式中,通过分别具有程序计数器,能够使只有变更参数的CPU用2个循环来指定指令串,能够提高运算工作效率,同时能够减少使用的指令存储器31的容量。
接着,对指令的操作数由Width字段和Count字段组成的二维操作数指定方式示出其实施例。至此,描述了通过指定二维操作数来减少指令数,通过减少指令存储器31的读出次数来降低功率,通过减少指令存储器31的容量来降低功率和减少面积成本。除此之外,也能够通过减少处理周期数来降低功率。这里,用内积运算和卷积运算来说明其实施例。
内积运算是图像编解码器或图像滤波器等中使用的通用的图像处理之一。这里,以4×4矩阵的内积运算为例来进行说明。图21示出该内积运算例。如图所示,4×4矩阵的内积运算的1个数据输出是执行4次乘法、将它们的运算结果相加所得的值。将该运算设为4×4矩阵,对16个元素进行同样的运算。在本例的说明中,假设各数据要素的长度为16位(2个字节),用64位宽度运算器来进行运算。此外,假设在矢量运算器46的寄存器文件462内的寄存器中如下保存着矩阵A和矩阵B,将运算结果保存到寄存器8、9、10、11中。
寄存器0{A00,A10,A20,A30}寄存器1{A01,A11,A21,A31}寄存器2{A02,A12,A22,A32}寄存器3{A03,A13,A23,A33}寄存器4{B00,B10,B20,B30}寄存器5{B01,B11,B21,B31}寄存器6{B02,B12,B22,B32}寄存器7{B03,B13,B23,B33}这样,在二维内积运算中,运算的输入使用多个寄存器是其特征。在图22所示的一般的1个周期发出1条指令的4并联的SIMD型运算器中,用以下的指令串来进行处理。其中,假设矩阵A如下保存着转置了的值。
寄存器0{A00,A01,A02,A03}寄存器1{A10,A11,A12,A13}寄存器2{A20,A21,A22,A23}寄存器3{A30,A31,A32,A33}指令1Src1(寄存器0)、Src2(寄存器4)、Dest(寄存器8
)的积和运算。
指令2Src1(寄存器0)、Src2(寄存器5)、Dest(寄存器8[1])的积和运算。
指令3Src1(寄存器0)、Src2(寄存器6)、Dest(寄存器8[2])的积和运算。
指令4Src1(寄存器0)、Src2(寄存器7)、Dest(寄存器8[3])的积和运算。
通过用这4条指令,为内积运算运算第1行,变更Src1寄存器,由此进行4行的运算。因此,花费16个周期来运算合计16条指令。其中,作为预处理,需要转置矩阵A。因此,实质上所需的周期数大于16个周期。
另一方面,在能够指定二维操作数的本实施例中,采用图23所示的运算器结构。与图22所示的SIMD型的运算器相比,在Src2输入的前一级布置选择器609,选择输入Src2和Src2
的值。此外,在每一个运算周期中,使用路径610,左移Src2的值。进而保存乘法器600的运算结果的寄存器601的输出被输入到∑加法器607中,∑加法器607的运算结果被保存到寄存器608中。∑加法器607是将寄存器601的结果和寄存器608的结果依次∑相加的运算器。在本例中,将4个周期的乘法结果∑相加,进行舍入,作为Dest来得到运算结果。
注意图21的内积运算例的运算结果的第1行。对于矩阵B,需要输入16个元素的数据;而矩阵A的输入是A00、A10、A20、A30,只是寄存器0中保存着的值。而对于第1元素的乘法,都输入A00。用图23所示的运算器来实现该运算的处理例。在Src1中设定矩阵B、即寄存器4,在Src2中设定矩阵A、即寄存器0。Src1一侧每当被供给了时钟时,就按寄存器4、寄存器5、寄存器6、寄存器7、再次寄存器4的顺序来供给。Src2一侧在第1个周期中输入寄存器0,第2、3、4个周期使用路径610来左移。此时选择器609选择Src2
数据。由此,Src2输出在第1个周期中为A00,在第2个周期中为A10,在第3个周期中为A20,在第4个周期中为A30。在第5个周期中供给寄存器1,6、7、8周期同样移位。通过这种数据供给,能够在4个周期中得到1行的运算结果。由此,每4个周期1次,生成运算结果Dest 606,按该定时来更新寄存器文件462。通过本方式,写入寄存器文件462无需字节使能,能够缩小寄存器文件的面积,并且无需转置数据,用合计16个周期来实现内积运算。
接着用图24的内积运算例来说明对转置矩阵的内积运算的动作。图24是转置了第1矩阵即矩阵A的情况下的内积。这里,也注意运算结果的第1行。对于矩阵B,需要输入16个元素的数据;而矩阵A的输入是A00、A01、A02、A03,只是寄存器0至寄存器3的数据元素
中保存着的值。在该运算中,与先前的没有转置的内积运算相比,通过变更Src2的供给方法,来实现第1矩阵转置的内积运算。在先前的没有转置的矩阵运算中,在周期2、3、4时用路径610,将Src2移位来供给数据;而在本例中,在周期1中使用寄存器0,在周期2中使用寄存器1,在周期3中使用寄存器2,在周期4中使用寄存器3。在第1行的内积中,使用寄存器0至3的数据元素
,在第2行的内积中使用数据元素[1],在第3行的内积中使用数据元素[2],在第3行的内积中使用数据元素[3]。通过本方式,通过只变更先前所示的Src2的供给方法,来实现第1矩阵转置的内积运算。此时,乘法器以后的数据路径不同的动作不存在。因此,在一般的SIMD型运算器中,作为内积运算前的预处理,需要转置,但是在本方式中不需要,能够减少处理周期数。
其中,在只转置第2矩阵的矩阵运算中,Src1和Src2的输入进行与不伴随转置的内积同样的数据供给,运算器与通常的SIMD型运算器同样,用在1个周期中将4个元素相加的结构来实现。在本方式中,在∑加法器607的输入端不使用寄存器608,将4个寄存器601的输出相加。接着说明卷积运算的\动作例。卷积运算用于图像的低通滤波器或高通滤波器等的滤波处理或边缘增强等。此外,是图像编解码器的运动补偿处理等中也使用的运算。卷积运算与内积运算不同,第2矩阵(称为卷积系数)固定,用该卷积系数对第1矩阵的全部数据元素进行运算。图25示出二维的卷积运算例。如图所示,将输出数据的全部数据元素乘以第2矩阵的卷积系数,并∑相加。
图26示出实现它的运算器结构的一部分。在该结构中,示出了图23所示的内积运算器结构的寄存器601的输入之前的结构。与内积运算器结构的不同是,Src1也同样是由路径612组成的移位寄存器结构。下面示出卷积运算的动作。首先,假设数组A和数组B被布置在以下所示的寄存器中。此时,将数组A的第1列至第4列的数据和第5列的数据布置到不同的寄存器中。将数组B布置到1个寄存器中。
寄存器0{A00,A10,A20,A30}寄存器1{A40,无,无,无}寄存器2{A01,A11,A21,A31}寄存器3{A41,无,无,无}寄存器4{A02,A12,A22,A32}寄存器5{A42,无,无,无}寄存器6{A03,A13,A23,A33}寄存器7{A43,无,无,无}寄存器8{B00,B01,B10,B11}将寄存器0投入到Src1中,将寄存器8投入到Src2中。此时,Src2的输出由选择器609投入Src2的第一数据元素。即,是Src2
、Src2
、Src2
、Src2
。第1个周期中的4个乘法器的输出如下所示。
第1个周期600
输出A00*B
600[1]输出A10*B
600[2]输出A20*B
600[3]输出A30*B
在第2个周期中,Src1和Src2都使用路径610和612来左移。Src1将寄存器1的第1数据元素即A40投入到Src1的[3]中。结果,4个乘法器600的输出如下所示。
第2个周期600
输出A10*B
600[1]输出A20*B
600[2]输出A30*B
600[3]输出A40*B
在第3个周期中,Src2使用路径612来左移。Src1更新读出寄存器指针,投入寄存器2。结果,4个乘法器600的输出如下所示。
第3个周期600
输出A01*B[10]600[1]输出A11*B[10]600[2]输出A21*B[10]600[3]输出A31*B[10]在第4个周期中,与第2个周期同样,Src1和Src2都使用路径610和612来左移。结果,4个乘法器600的输出如下所示。
第4个周期600
输出A11*B[10]600[1]输出A21*B[10]600[2]输出A31*B[10]600[3]输出A41*B[10]通过将该4个周期的数据用∑加法器607进行∑加法,来得到第1行的卷积运算结果。在第5个周期中,再次将寄存器2投入到Src1中,再次将寄存器8投入到Src2中,进行第2行的卷积运算。结果,在16个周期中,得到4×4矩阵的卷积运算结果。
其中,在这些说明中,说明了使用移位寄存器来供给Src1和Src2,但是通过使用选择器来选择数据,进行同样的数据供给,能得到同样的效果。因此,数据的供给部件是其特征。
在图22所示的一般的SIMD型运算器中,垂直方向的卷积运算采用每个数据元素的积和运算。但是,在结束了4个积和运算的时刻,需要进行数据的舍入,所以在各积和运算的阶段,必须将8位数据位扩展为16位数据来进行积和运算。进而在4个积和运算已结束的时刻,再次将16位数据舍入为8位数据。在积和运算时,由于位扩展,实际上并行使用的运算器数减半,处理周期数增加。此外,位扩展自身和舍入自身的运算周期数增加。通过像本方式这样指定二维操作数,能够减少处理周期数。
另一方面,在图22所示的一般的SIMD型运算器进行的水平方向的卷积运算中,每当生成数据元素时,必须以数据元素为单位将数组A移位并投入到运算器中,处理周期数增加。再者,在二维的卷积中,由于位扩展、移位、舍入等,处理周期数增加。
因此,像本方式这样指定二维的操作数,意味着用1条指令来表现使用多个源的指令,能够减少包含真正需要的积和运算以外的预处理和后处理在内的处理周期。其结果是,能够用低的工作频率来实现处理,进而能够减少功耗。
权利要求
1.一种图像处理引擎,具备指令存储器、数据存储器以及CPU,其中,上述CPU进而具有指令译码器、通用寄存器以及运算器;上述CPU的指令操作数具有指定数据宽度及表示高度方向的数据计数值的字段、表示保存有运算处理中使用的数据的通用寄存器的起点的源寄存器指针、以及表示保存运算结果的通用寄存器的起点的目的寄存器指针;具有如下的单元,该单元根据上述数据宽度、上述数据计数值、上述源寄存器指针以及上述目的寄存器指针,在每个周期依次生成所存取的上述源寄存器的地址及上述目的寄存器的地址;通过将从上述源寄存器中读出的数据投入到上述运算器中并执行运算,将得到的运算结果依次保存到上述目的寄存器中,由此用一个指令花费多个周期来进行多个运算。
2.如权利要求1所述的图像处理引擎,其中,在上述CPU中,向上述数据存储器发出读指令及写指令的指令的操作数具有指定数据宽度、数据计数值以及数据间隔的字段;通过在存取上述数据存储器时,根据上述数据宽度、上述数据计数值以及上述数据间隔,生成可表现二维矩形的数据存储器地址,用上述数据存储器地址,用1个指令花费多个周期,经过多次存取上述数据存储器,能够用一个指令存取二维的数据。
3.如权利要求1所述的图像处理引擎,其中,在上述CPU中,具有上述CPU发出的卷积运算指令和内积运算指令;在输入用上述源寄存器指针指定而读出的源数据的数据输入级中,具有在供给的每个时钟移位输出上述源数据的单元、和生成专用于卷积运算及内积运算的源寄存器地址和目的寄存器地址的单元;上述运算器将乘法器、∑加法器以及数据舍入运算器串联连接,能够用一个指令来执行一维或二维的上述卷积运算及上述内积运算。
4.如权利要求1所述的图像处理引擎,其中,在上述CPU中,具有多组指令寄存器,该指令寄存器保存从上述指令存储器中读出的指令;具有在上述指令寄存器都不是有效的情况下自动读出下一个指令的单元;在上述读出指令时,读出的指令为分支指令的情况下,不将上述分支指令保存到上述指令寄存器中,而立即读出分支目的地的指令,将上述分支目的地的指令保存到上述指令寄存器中,在上述分支指令的一个操作数中具有指定分支条件寄存器的字段,该分支条件寄存器指定是否分支;具有在上述分支指令时根据选择出的分支条件寄存器的值来判定是否分支的单元,在不分支的情况下,读出下一个指令,不将上述分支指令保存到指令寄存器中;通过不在每个周期都从上述指令存储器中读出指令,来隐蔽上述分支指令造成的重新读出指令所需的周期。
5.如权利要求1所述的图像处理引擎,其中,在上述图像处理引擎内,具有多个如权利要求1至3中任一项所述的CPU,具有将上述多个CPU各个的运算结果保存到邻接的CPU的寄存器中的单元,上述多个CPU连接在相互邻接的CPU上,最末端的CPU连接在第一级CPU上而形成环状的连接。
6.如权利要求5所述的图像处理引擎,其中,在上述CPU发出的指令的操作数中,具有第1标志,用于确认是否能够将数据保存到上述CPU的下一级一侧的CPU具有的寄存器中;在上述下一级一侧的CPU发出的指令的操作数中,具有第2标志,表示是否能够受托写入来自前一级的CPU的数据;在邻接的2个CPU间,具有用上述第1及第2标志来进行同步化的电路,在不能写入的情况下,前一级CPU具有进行停止的单元;此外,在上述CPU发出的指令的操作数中,具有第3标志,用于判断是否结束从前一级的CPU向寄存器中写入数据、能够使用数据;在前一级的CPU发出的指令的操作数中,具有第4标志,用于向下一级的CPU传达已结束数据的写入;具有在2个CPU间根据上述第3及第4标志的信息来进行同步化的电路;具有用于在数据的准备未结束的情况下输出使后级的CPU待机的停止信号的单元;在指令的操作数中具有用于在邻接的2个CPU间进行同步化的标志;具有与这些标志一起来控制同步化的电路。
7.如权利要求5所述的图像处理引擎,其中,上述多个CPU共享指令存储器,在每个周期中分时回送指令。
8.一种图像处理系统,具有经总线连接了多个如权利要求1至权利要求7中任一项所述的图像处理引擎的图像处理部,其中,在各个上述图像处理引擎中,具有直接存储器存取控制器,用于从上述图像处理引擎中的一个所具有的数据存储器中读出数据,将上述数据以直接存储器存取的方式传送到另一个图像处理引擎内的数据存储器中;上述CPU具有起动及控制直接存储器存取控制器的单元,能够在多个图像处理引擎间通过直接存储器存取来传送数据。
9.如权利要求8所述的图像处理系统,其中,在上述图像处理部中,在总线上连接的一个块中,除了具有图像处理引擎以外,还具有用于在系统总线等第2内部总线和上述总线之间传送数据的内部总线主控制部和内部总线从控制部、及内部总线桥组成的数据传送电路;在上述数据传送电路中,能够经上述第2总线来存取外部存储器,能够在各个上述图像处理引擎和上述外部存储器之间传送数据。
10.如权利要求9所述的图像处理系统,其中,具有第1总线,由多个移位寄存器构成,在各上述移位寄存器间,能够同时传送多个数据,使上述移位寄存器的连接方向相反;上述第1总线的一方在图像处理引擎间及从图像处理引擎向数据传送电路的方向传送数据;上述第1总线的另一方将从外部存储器读出的数据经内部总线和数据传送电路传送到各图像处理引擎,通过上述多个第1总线,图像处理引擎间的数据传送和来自外部存储器的数据传送不会发生竞争,或者能够减少竞争频度。
全文摘要
本发明提供一种用处理器来进行图像处理的情况下的降低功率技术。为此,例如在指令的操作数中设有指定二维的源寄存器和目的寄存器的部分,具有在多个周期中使用多个源寄存器来执行运算、得到多个目的的单元。此外,在利用多个源寄存器花费多个周期来得到目的的指令中,将数据舍入运算器连接在流水线的最后一级上。通过这些结构,例如通过减少存取指令存储器的次数,来减少读出指令存储器时消耗的功率。
文档编号G06F15/80GK101093577SQ20071009175
公开日2007年12月26日 申请日期2007年4月9日 优先权日2006年6月20日
发明者细木浩二, 江浜真和, 中田启明, 岩田宪一, 望月诚二, 汤浅隆史, 小林幸史, 柴山哲也, 植田浩司, 升正树 申请人:株式会社瑞萨科技
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1