CN1993709A - 信号处理设备 - Google Patents
信号处理设备 Download PDFInfo
- Publication number
- CN1993709A CN1993709A CNA2006800005263A CN200680000526A CN1993709A CN 1993709 A CN1993709 A CN 1993709A CN A2006800005263 A CNA2006800005263 A CN A2006800005263A CN 200680000526 A CN200680000526 A CN 200680000526A CN 1993709 A CN1993709 A CN 1993709A
- Authority
- CN
- China
- Prior art keywords
- data
- scu
- pixel
- rectangular image
- signal processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
- Image Input (AREA)
Abstract
提供一种信号处理设备,其可以提高伴有访问存储部件的处理的处理能力。在主处理器的控制下,流控制单元(SCU)203_0~203_3根据线程访问外部存储器***或本地存储器204_0~204_3上的数据。处理器单元(PU)阵列202_0~202_3使用与SCU203_0~203_3的线程不同的线程执行图像处理。
Description
技术领域
本发明涉及一种信号处理设备。
本发明尤其涉及一种适合进行图像处理的信号处理设备。
背景技术
例如,日本专利公开(A)第06-4690号公开了一种用于对从CCD(电荷耦合装置,Charge Coupled Device)或CMOS(互补金属氧化物半导体,Complementary Metal Oxide Semiconductor)或其它图像捕获装置输入的运动图像或静止图像的图像捕获信息进行处理,并显示或存储它们的图像处理设备。
通过例如并行处理构成图像捕获信息的像素数据,该图像处理设备缩短了处理时间。
此外,该图像处理设备还对存储器执行像素数据的读写处理(存储器存取),并基于同样的线程,同时使用像素数据执行处理。
发明内容
本发明要解决的问题
需要进一步提高图像处理设备的处理能力。
还需要进一步提高图像处理之外的处理能力。
本发明的目的是提供一种改进对存储部件的访问,从而提高信号处理能力的信号处理设备。
用于解决本发明的部件
根据本发明,提供了一种信号处理设备,该信号处理设备包括:存储单元;输入/输出数据控制单元(SCU),其用于控制从至少一个所述存储单元内的预定存储单元读取数据和/或将数据写入至少一个所述存储单元内的预定存储单元;以及信号处理单元(PU阵列或PU_SIMD),其用于对所述输入/输出数据处理单元读出的数据进行预定信号处理,其中所述输入/输出数据控制单元和所述信号处理单元根据不同的线程操作。
本发明的效果
根据本发明,可以提供一种信号处理设备,在伴随访问存储部件的处理中,使用不同的线程,该信号处理设备可以进一步提高图像处理能力。
附图说明
图1是根据本发明的信号处理设备实施例的图像处理设备的总体结构图。
图2是图1所示图像处理引擎的结构视图。
图3是图2所示处理器单元(PU,processor unit)阵列的结构视图。
图4是图3所示PU的结构视图。
图5是用于说明对PU阵列分配的图像区的图。
图6是用于说明分配给多个处理器元件(PE,processorelement)进行处理的像素数据的图。
图7是用于说明分配多个进行滤波的PE的第一部分图。
图8是用于说明分配多个PE进行滤波的第二部分图。
图9是用于说明分配多个PE进行滤波的第三部分图。
图10是用于说明分配多个PE进行滤波的第四部分图。
图11是图4所示PE的结构视图。
图12是用于说明在多个PE内执行的滤波的第一部分图。
图13是用于说明在多个PE内执行的滤波的第二部分图。
图14是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第一部分图。
图15是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第二部分图。
图16是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第三部分图。
图17是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第四部分图。
图18是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第五部分图。
图19是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第六部分图。
图20是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第七部分图。
图21是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第八部分图。
图22是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第九部分图。
图23是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第十部分图。
图24是用于说明在图13所示滤波过程中每个PE的流寄存器的操作的第十一部分图。
图25是用于说明PU内的共享功能单元的图。
图26是用于说明图3等所示流控制单元(SCU,stream controlunit)管理存储区的方法的第一部分图。
图27是用于说明图3等所示SCU管理存储区的方法的第二部分图。
图28是用于说明图3等所示SCU管理存储区的方法的第三部分图。
图29是用于说明图3等所示SCU管理存储区的方法的第四部分图。
图30是用于说明图3等所示SCU管理存储区的方法的第五部分图。
图31是用于说明图3等所示SCU管理存储区的方法的第六部分图。
图32是用于说明图3等所示SCU管理存储区的方法的第七部分图。
图33是用于说明图3等所示SCU管理存储区的方法的第八部分图。
图34是用于说明图3等所示SCU执行命令“sET_BR_Lof4×4_sam”的处理的图。
图35是用于说明图3等所示SCU执行命令“set_bxy”的处理的图。
图36是用于说明图3等所示SCU执行命令“set_BR_8×1#to#bxy”的处理的图。
图37是用于说明图3等所示SCU执行命令“set_BR4567#lof4×4”的处理的图。
图38是用于说明图3等所示SCU执行命令“set_in#bur#straight”的处理的图。
图39是用于说明图3等所示SCU执行命令“set_in#buf#with#BR#2×1”的处理的图。
图40是用于说明图3等所示SCU执行命令“set_in#buf#with#BR#4×1”的处理的图。
图41是用于说明图3等所示SCU执行命令“set_BR#16×1”的处理的图。
图42是用于说明图3等所示SCU执行命令“set_BR#32×1”的处理的图。
图43是用于说明图3等所示SCU执行命令“set_BR#64×1”的处理的图。
图44是用于说明图3等所示SCU执行命令“set_BR#64×2”的处理的图。
图45是用于说明图3等所示SCU执行命令“set_BR#64×2×2”的处理的图。
图46是用于说明图3等所示SCU执行命令“set_BR#64×3”的处理的图。
图47是用于说明图3等所示SCU执行命令“set_BR#64×3×3”的处理的图。
图48是用于说明图3等所示SCU执行命令“set_BR#64×4”的处理的图。
图49是用于说明图3等所示SCU执行命令“set_BR#64×4×4”的处理的图。
图50是用于说明图3等所示SCU执行命令“set_BR#64×9”的处理的图。
图51是用于说明图3等所示SCU执行命令“set_BR#64×9×3”的处理的图。
图52是用于说明图3等所示SCU管理存储区的方法的图。
图53是用于说明图3等所示SCU管理存储区的方法的图。
图54是用于说明图3等所示SCU管理存储区的方法的图。
图55是用于说明图3等所示SCU执行命令“set#DR#mask#64×1”的处理的图。
图56是用于说明图3等所示SCU执行命令“set#DR#packed#64×1”的处理的图。
图57是用于说明图3等所示SCU执行命令“set#DR#64×1”的处理的图。
图58是用于说明图3等所示SCU执行命令“set#DR#128×1”的处理的图。
图59是用于说明图3等所示SCU执行命令“set#DR#192×1”的处理的图。
图60是用于说明图3等所示SCU执行命令“set#DR#256×1”的处理的图。
图61是用于说明SCU执行的命令“exec”的图。
图62是用于说明SCU执行的命令“Branch”的图。
图63是用于说明SCU执行的命令“set”的图。
图64是用于说明SCU执行的命令“addition”的图。
图65是用于说明SCU执行的特定命令和参数的图。
图66是用于说明SCU与处理器单元之间的处理的关系的图。
图67是用于说明SCU中的命令和数据的队列的图。
图68是图2所示图像处理引擎的结构的另一个图。
图69是第二实施例的图像处理引擎102的总体结构图。
图70是图69所示PU阵列202_0的结构视图。
图71是第二实施例中的PEn的结构视图。
图72是示出SCU#10的结构的框图。
图73是用于说明第二实施例中的流控制单元(SCU)管理存储区的方法的部分图。
图74是用于说明设置在SCU#10内的用于处理复用矩形图像区的功能的图。
图75是示出在第二实施例中在存储区的矩形图像区WIR内确定矩形图像区BR的方法的例子的图。
图76是示出在第二实施例中在存储区的矩形图像区WOR内确定矩形图像区DR的方法的例子的图。
附图标记说明
100:图像处理设备,101:主处理器,102:图像处理引擎,103:编解码器引擎,104:存储器I/F,105:存储器***,106:传感器I/F,107:照相机模块,108:存储介质I/F,109:存储介质,110:内部显示装置I/F,111:内置显示装置,112:视频I/F,201:控制处理器,202_0~3:处理器单元(PU)阵列,203_0~3:SCU,204_0~3:本地存储器,PU:处理器单元,401:输入行缓冲器,403:共享功能单元,404:输出行缓冲器,PE:处理器元件,SR0~2:流寄存器,ALU:算术逻辑单元。
具体实施方式
第一实施例
下面,通过说明图像数据的处理,说明本发明的信号处理设备的实施例。
首先,说明本实施例的组件与本发明的组件之间的对应关系。
图2等所示的流控制单元(SCU)203_0~203_3是本发明的输入/输出数据控制单元的例子。
图3等所示处理器单元PU是本发明的信号处理电路的例子。
图4等所示的PE是本发明的信号处理元件的例子。
图1所示的主处理器101是本发明的主处理电路的例子。
图1等所示的存储器***105,或图2等所示的本地存储器204_0~204_3是本发明的存储单元的例子。
作为本发明的存储介质,可以采用例如半导体存储器、磁盘、光盘以及磁光盘的任意存储介质。
图1是根据本发明的信号处理设备的第一实施例的图像处理设备100的总体结构图。
例如,图像处理设备100包括:主处理器(主CPU)101、图像处理引擎102、编解码器引擎103、存储器接口(I/F)104、存储器***105、传感器I/F 106、照相机模块107、存储介质I/F 108、存储介质109、内置显示装置I/F 110、内置显示装置111以及视频I/F 112。
作为特性特征,图像处理设备100通过主处理器101对图像处理引擎102内的处理线程进行控制。
主处理器101
主处理器101是用于控制整个图像处理设备100的处理器。例如,它操作实时操作***(OS,operating system),对要在图像处理设备100内执行的各种任务进行调度,使用存储介质109实现文件***,进行数据输入/输出控制等。
图像处理引擎102
图像处理引擎102是可编程图像处理器,其根据在图像处理设备100内执行的应用程序执行主处理器101指示的图像处理。
图像处理用图像数据包括:通过传感器I/F 106输入的在照相机模块107捕获的数据、通过存储器I/F 104输入的存储在存储器***105内的数据、通过存储介质I/F 108输入的存储在存储介质109内的数据、或来自编解码器引擎103的数据以及在编解码器引擎103处理的数据。
图像处理引擎102通过存储器I/F 104将其自己的处理结果存储在存储器***105内,通过存储介质I/F 108将该处理结果存储在存储介质109内,将它们输出到编解码器引擎103,通过内置显示装置I/F 110将它们显示在内置显示装置111中,或通过视频I/F112将它们输出到外部设备。
编解码器引擎103
编解码器引擎103是用于压缩/展开图像和/或音频的单元,其可以实现例如MPEG(运动图片专家组,Motion Picture ExpertsGroup)-2、MPEG-4、H.264和其它运动图片图像用编解码器以及主要用于静止图像的JPEG(联合摄影专家组,JointPhotographic Coding Experts Group)、JPEG2000和其它编解码器。
存储器***105
存储器***105是用于存储在主处理器101、图像处理引擎102和编解码器引擎103处理的数据以及在主处理器101、图像处理引擎102和编解码器引擎103执行的程序PRG的存储器。例如,采用DRAM。
存储器I/F 104是用于连接存储器***105和***总线113的接口。
照相机模块107
照相机模块107是包括镜头、孔、快门、其它光学装置、CCD图像传感器、CMOS图像传感器或其它图像捕获装置、以及用于控制这些装置的控制单元的装置。
照相机模块107将所捕获的结果转换为数字信号,然后,通过传感器I/F 106,将该数字信号输出到图像处理引擎102或存储器***105。
通过传感器I/F 106,主处理器101或图像处理引擎102将控制信号输出到照相机模块107。
记录介质109
存储介质109是例如硬盘、闪速存储器、或其它非易失性存储器、DVD(数字通用盘,Digital Versatile Disk)或其它光盘、或带型存储介质,通过存储介质I/F 108,可以对存储介质109进行读或写。
内置显示装置111
内置显示装置111显示通过在图像处理引擎102处理照相机模块107所捕获的图像而获得的结果,或存储在存储介质109内的图像数据。
根据通过内置显示装置I/F 110输入的图像数据,内置显示装置111显示图像。
视频接口112
视频I/F 112是用于将图像数据提供到外部图像显示装置或图像记录装置的接口。
图像处理引擎102
图2是图1所示图像处理引擎102的结构视图。
图像处理引擎102具有:控制处理器(CPU)201、PU(处理器单元)阵列202_0~202_3、流控制单元(SCU)203_0~203_3以及本地存储器204_0~204_3。
在该图像处理引擎102中,SCU 203_0~203_3内的PE和PU阵列202_0~202_3通过不同的线程操作。
控制处理器201是用于控制整个图像处理引擎102的处理器,其负责设置和激活PU阵列202_0~202_3和SCU 203_0~203_3,并在由PU阵列202构成的SIMD(单指令多数据)型处理器阵列执行难以并行进行(hard-to-make-parallel)的处理。
PU阵列202_0~202_3是由多个SIMD型处理器阵列构成的可编程处理器,稍后将做说明。
在通过内部总线从存储器***105读取PU阵列202_0~202_3所需数据的情况下,或在通过内部总线将PU阵列202_0~202_3的处理结果写入存储器***105的情况下,SCU 203_0~203_3对数据输入/输出进行控制。
本地存储器204_0~204_3是用于保持存储在存储器***105内的部分图像数据的、图像处理引擎102的工作存储器,其存储PU阵列202_0~202_3处理的中间结果,存储在PU阵列202_0~202_3中执行的程序、各种参数等。
例如,在主处理器101的控制下,图像处理引擎102通过共享的线程操作图2所示的PU阵列202_0~202_3。
“共享的线程”指例如基于公用程序执行处理。
在主处理器101的控制下,SCU 203_0~203_3通过与PU阵列202_0~202_3的线程不同的线程操作。
PU阵列202_0~202_3
下面说明PU阵列202_0。
PU阵列202_1~202_3与PU阵列202_0具有相同的结构。
图3是图2所示PU阵列202_0的结构视图。
PU阵列202_0具有四个PU_SIMD(单指令多数据,SingleInstruction Multiple Data)处理电路#0~#3。
PU_SIMD处理电路#0~#3并联连接到SCU(流控制单元)203_0。
PU_SIMD处理电路#0具有控制单元303_0和四个处理器单元PU#00~#03。
四个处理器单元PU#00~#03构成根据同样命令操作的SIMD型处理器。
以一维状态,横向连接四个处理器单元PU#00~#03。
通过限制处理器单元PU#00~#03到相邻处理器单元的连接,与此同时,使四个处理器单元共享用于从SCU 203_0提供数据的I_BUS0,可以减少互连,与此同时,可以简化总线控制。
通过串联连接处理器单元PU#00~#03,在频繁使用相邻像素数据的图像处理中,可以将像素数据直接输出到相邻处理器单元,而无需通过SCU 203_0,因此缩短了处理时间。
PU_SIMD处理电路#1~#3与PU_SIMD处理电路#0具有相同结构。
处理器单元PU#00
图4是图3所示处理器单元PU#00的结构视图。
例如,处理器单元PU#00具有:输入行缓冲器401、多个处理器元件PE0~PE15、在各PE之间共享的共享功能单元403以及输出行缓冲器404。
图4所示的输入行缓冲器401连接到图3所示的输入数据总线I_BUS0。
输出行缓冲器404连接到由34表示的输出数据总线O_BUS0.
共享功能单元403和PE0~PE15并联连接在输入行缓冲器401与输出行缓冲器404之间。
PE0~PE15与图中左右相邻的PE相连接,并可以与相邻的PE传输数据。
在图3和图4所示的例子中,每个处理器单元PU具有16个处理器元件PE,而每个PU_SIMD处理电路具有四个处理器单元PU,因此,每个PU阵列202_0~202_3总共配置有64个PE。
如图3所示,以与图4中处理器元件PE相同的方式,连接处理器单元PU。
即,将位于某处理器单元PU的右端的PE15连接到位于其右侧的处理器单元的左端的PE0。
具体来说,将图3所示处理器单元PU#01的图4所示PE15连接到图3所示处理器单元PU#02的图4所示PE0。
如图4所示,通过构造该***使得处理器元件PE0~PE15仅使用两个相邻PE就可以直接输入/输出数据,这样大大简化了互连结构。此外,通过在PE0~PE15中的相邻PE之间输入/输出以及共享像素数据,可以减少访问存储区的次数。
将通过输入数据总线I_BUS0从SCU(流控制单元)203_0输入到处理器单元PU#00的数据写入PU#00内的输入行缓冲器401。
每个处理器元件PE0~PE15使用从输入行缓冲器401读出的数据进行处理,并将处理结果写入输出行缓冲器404。
SCU 203_0从输出行缓冲器404读出该处理结果。
如图3所示,PU阵列202_0可以使四个PU_SIMD处理电路#0~#3并行或串行独立操作。通过SCU 203_0切换输入数据总线I_BUS0~I_BUS3和输出数据总线O_BUS0~O_BUS3实现操作控制。
图3所示控制单元303_0具有未示出的命令存储用存储器,控制单元303_0将通过对从命令存储用存储器读出的命令进行解码获得的控制信号输出到PU_SIMD #0内的全部PE。
控制单元303_0包括在此未示出的程序流控制用循环寄存器以及用于访问稍后说明的PE内的流寄存器的指针寄存器。
循环寄存器是用于控制程序内的循环数量的寄存器,其可以通过控制处理器201设置,或可以在执行程序时通过命令设置。
当通过命令设置循环寄存器时,可以将PE内的寄存器值指定为源操作数。此时,在多个PE中,使用例如位于图中左端的PE的先前确定的PE的寄存器值,例如处理器单元PU#00的PE0。
此外,对于指针寄存器,将PE内的寄存器值指定为源操作数。以与循环寄存器的情况相同的方式,使用特定PE的寄存器值。
这同样适用于控制单元303_1~303_3。
以存储使用照相机模块107捕获的静止图像的情况为例,说明图像处理设备100内的处理例程和处理分布。
通过每个水平扫描行的传感器I/F 106,读出照相机模块107内的图像捕获装置所捕获的数据,将其输出到图像处理引擎102,存储在存储器***105内。此时,图像处理引擎102执行部分波检测处理。
当将一帧大小的数据存储在存储器***105内时,在以一帧大小的图像数据为单位读取所需的矩形图像区的同时,图像处理引擎102执行剩余的波检测处理和各种照相机信号处理以及各种图像处理,以使内部PU_SIMD处理电路有效地并行操作。
将图像处理引擎102的处理结果存储在存储器***105内。
图像处理引擎102还转换分辨率。通过内置显示装置I/F 110,在内置显示装置111中显示转换了分辨率的图像数据。
编解码器引擎103使用图像处理引擎102处理的、存储在存储器***105内的多个帧的图像数据进行图像压缩。通过存储介质I/F 108,将压缩后的图像数据存储在存储介质109内。
图像处理引擎102配置了多个PU阵列202_0~202_3。PU阵列202_0~202_3处理帧中的不同区域。
当像在本实施例中一样,图像处理引擎配置了四个PU阵列202_0~202_3时,例如,如图5所示,可以将区域分配到PU阵列202_0~202_3。
每个PU阵列202_0~202_3分别具有多个如前所述的配置了64个PE的PU_SIMD处理电路。例如,如图6所示,将分配给PU阵列202_0~202_3中的每个的区域进一步分割为各具有横向64像素宽度的矩形图像区。可以将每个像素分配到一个PE。
此时,每个PE顺序处理对其本身分配的沿垂直方向的像素串(pixel train),如图7所示。
例如,考虑如图8所示,PU阵列202_0对5×5像素进行滤波的情况。
此时,如图8所示,使用在以像素位置Pixel为中心的5×5像素位置的像素数据,PU阵列202_0内的每个PE对要处理的位于像素位置Pixel的像素数据进行滤波。
PU阵列202_0内的每个PE以图8所示箭头的方向(该图中向下的方向)顺序移动要处理的像素位置。
在PU阵列202_0内的每个PE分别结束滤波位于像素位置Pixel的上述5×5像素时,如图9所示,SCU 203_0从本地存储器204_0或存储器***105读出位于该像素位置的下一个一行大小的像素数据,然后,将其写入图4所示PU阵列202_0内的处理器单元PU的输入行缓冲器401。
然后,PU阵列202_0内的每个PU分别对位于下一个像素位置Pixel_next的5×5像素的像素数据进行滤波,如图10所示。
将集中说明图3所示的PU_SIMD #0, 而PU_SIMD #1~#3与PU_SIMD #0相同。
PU阵列202_1~202_3与PU阵列202_0相同。
处理器元件PE
将说明图4所示PEn(n=1~14)。
应当指出,除了在PE之间,PE0仅使用PE1输入/输出数据外,PE0与PEn相同,而除了PE15仅使用PE14输入/输出数据外,PE15也与PEn相同。
图11是图4中所示的PEn的结构的视图。
PEn具有:复用器MUX 1000~1005、流寄存器SR0、SR1和SR2、寄存器in0和in1以及其它各种寄存器和算术逻辑单元ALU。
PEn将数据或控制标志从输入行缓冲器401传输到流寄存器SR0、SR1和SR2,并从流寄存器SR0、SR1和SR2取出该数据或控制标志,送到算术逻辑单元用寄存器组中的一部分中。
在使用算术逻辑单元用寄存器组作为临时存储目的地的同时,算术逻辑单元ALU进行处理,并将处理结果写入输出行缓冲器404。通过同时或顺序执行具有单独确定内容的命令,执行这一系列操作。
与输入行缓冲器401相同,存在数据用与控制标志用缓冲器。每个缓冲器分别包括16位和4位每PE。
此外,作为输出行缓冲器404,与输入行缓冲器401的方式相同,也存在数据用与控制标志用缓冲器。每个寄存器分别包括16位和4位每PE。
每个流寄存器SR0、SR1和SR2的入口数目是16。
每个流寄存器SR0和SR1的数据长度是16位,而流寄存器SR2的数据长度为4位。
在此,使流寄存器SR2为4位的原因是:流寄存器SR2主要用于控制标志的存储。这与算术逻辑单元用寄存器组中的cond寄存器的数据长度相同。
当存储主要从SCU 203_0通过输入行缓冲器401提供的、进行处理及临时备份处理结果所需的数据时,使用流寄存器SR0、SR1和SR2,并可以直接访问、使用指针访问流寄存器SR0、SR1和SR2。
应当指出,最多可以对每个流寄存器SR0、SR1和SR2定义4个指针。每个指针具有3个值,即:“开始值”,表示指针定义域的开始点;“结束值”,表示指针定义域的结束点;以及“当前值”,表示当前指针位置。
对于指针的操作,存在用于实现如下面的(1)~(5)所示的指针操作的命令。
(1)用于使用立即值重写从之前说明的4个指针中选择的一个指针所保持的3个值中选择的一个值的命令。
(2)用于使用PE0内的临时备份用寄存器temp0~temp3的任意一个值重写从之前说明的4个指针中选择的一个指针所保持的3个值中选择的一个值的命令。应当指出,为了反映指定值,需要预定等待时间。
(3)用于通过添加正/负立即值重写从之前说明的4个指针中选择的一个指针所保持的当前值的命令。
(4)用于将从之前说明的4个指针中选择的一个指针所保持的当前值重写为该指针的开始值的命令。
(5)用于读取从之前说明的4个指针中选择的一个指针所保持的3个值中选择的一个值,使用该值重写临时备份用寄存器temp0~temp3和PU_SIMD中全部PE中的temp之中的任一个的命令。
例如,根据上述结构的流寄存器SR0、SR1和SR2使用两种指针,将第一指针定义为写指针,将第二指针定义为读指针,重复写数据,并递增写指针,重复读取写入口的数据,并递增读指针。因此,流寄存器可以用作FIFO(先进先出,First-In First-Out)寄存器。
流寄存器SR0、SR1和SR2的入口数量是16。在这3个流寄存器中,流寄存器SR0和SR1可以连接,作为32个入口的流寄存器使用,但是因为在处于链接模式时,类似是对具有32个入口的流寄存器SR0进行操作,所以仅可以使用流寄存器SR0的指针。不能访问流寄存器SR1。
在执行全部命令之前,使用预定方法设置正常模式和链接模式,而在顺序执行命令期间,不能改变正常模式和链接模式。
当访问流寄存器SR0、SR1和SR2并执行指针操作时,有时超出[Start,End]定义的区域,或[0,EN-1]区域。在此,EN是流寄存器SR0、SR1和SR2的入口数(在正常模式时为16,而在链接模式时为32)。在这种情况下,执行下面的回绕(wraparound)处理,以使它成为具有指针值的入口。
将对流寄存器SR0、SR1和SR2中的各入口进行回绕处理之前和之后的指标定义为idx和idxw。应当指出,通过增加流寄存器访问命令指定两种回绕处理中的一种。
在[Start,End]定义的区域内执行回绕处理的情况:
If(idx>End)idxw=Start+(idx-End-1)%(End-Start+1);
else if(idx<Start)idxw=End-(Start-idx-1)%(End-Start+1);
else idxw=idx;
在[0,EN-1]定义的区域内执行回绕处理的情况:
If(idx≥EN)idxw=idx%EN;
else if(idx≤0)idxw=(ENx(1-idx/EN)+idx)%EN;
else idxw=idx;
属于算术逻辑单元用寄存器组的寄存器是可以指定为在PE0中执行的处理的源操作数或目标操作数的寄存器。图11中的寄存器in0、in1、temp0~temp3、temps、acc.H/L、cond、penum以及const就是这种寄存器。
寄存器in0和in1是分别具有16位的数据长度的输入寄存器,存储从流寄存器读出的内容。可以将它们分别指定为算术逻辑处理命令的源操作数,但是不能指定为目标操作数。
寄存器temp0~temp3和temps是各具有16位的数据长度的临时备份用寄存器。
在它们中,寄存器temps是当使用稍后说明的共享功能单元403时使用的寄存器。在访问共享功能单元403之外的情况下,temps可以以与寄存器temp0~temp3完全相同的方式用作工作寄存器。可以将寄存器指定为算术逻辑处理命令的源操作数和目标操作数二者。
寄存器acc.H/L是主要供累加命令使用的累加寄存器,其具有总共32位的数据长度。寄存器acc.H/L可以被指定为算术逻辑处理命令的源操作数和目标操作数二者。在这32位中,将高16位定义为寄存器acc.H,将低16位定义为寄存器acc.L。在用作源操作数时,指定高或低位。
寄存器cond是具有4位数据长度,主要用于有条件的执行的条件寄存器。可以将其指定为算术逻辑处理的目标操作数。此时,指定处理结果中的任意1位,选择表示发生进位的进位标志或表示处理结果是0的0标志之中任一个作为算术逻辑单元ALU的处理结果,而且指定条件寄存器中的哪位反映它。
寄存器penum是具有6位数据长度、存储本身处理元件号码(0~63)的处理器号码寄存器,其只能读出。
寄存器const是具有16位数据长度、用于存储常数值的常数寄存器,它有64个入口。不对各处理元件设置常数寄存器,而在共享功能单元403中设置常数寄存器。
为PU_SIMD处理电路中的全部PE指定一个入口,且它们共同使用该入口,但是可以将该入口直接指定为算术逻辑处理的源操作数,因此,该入口包括在算术逻辑单元用寄存器组中。
在算术逻辑单元用寄存器组中,提供从相邻PE可以访问的寄存器。下面将说明PU_SIMD处理电路中的第n个PE#n。
在这种情况下,当进行处理时,PE#n不仅可以访问PE#n中的寄存器,还可以访问相邻PE#n-1和#n+1的寄存器in0、in1、acc.H和acc.L。
可以将PE#n的寄存器cond、acc.H和acc.L以及相邻PE#n-1和#n+1的寄存器in0、in1、acc.H和acc.L的值写回PE#n的流寄存器SR0、SR1和SR2。
在PE#n内,为了提高算术逻辑单元ALU中的处理效率,可以同时执行算术逻辑单元ALU中的处理及加载到多个寄存器或存储器中。
可以同时执行的操作是下面的A~J。应当指出,对于A~I,可以进行命令的有条件执行。“命令的有条件执行”主要指,指定存储了控制标志的寄存器cond的任意位,在其值是1时执行命令,而在其值是0时不执行命令的操作。
A:写入流寄存器SR0
B:写入流寄存器SR1
C:写入流寄存器SR2
D:写入寄存器in0
E:写入寄存器in1
F:从流寄存器SR2写入寄存器cond
G:调用(call up)共享功能单元403的功能
H:写入输出行缓冲器404
I:算术逻辑处理
J:流控制命令
下面的表1示出在PE#n中的算术逻辑单元ALU可以执行的算术逻辑处理。使用稍后说明的共享功能单元403的查询表功能实现倒数处理(reciprocal)。
在表1中,“位数命令”是指用于在从16位源操作数的最高位数起时,返回首先出现1的位数的命令。
表1
命令类型 | 目标操作数 | 源操作数 |
16位加/减命令 | 16位 | 16位 |
32位加/减命令 | 32位 | 32位 |
乘法命令 | 16位或32位 | 16位 |
累加命令 | 16位或32位 | 16位 |
绝对值命令 | 16位 | 16位 |
清除命令 | 1位或16位或32位 | |
最大/最小值命令 | 16位 | 16位 |
3项处理命令 | 16位 | 16位 |
复制命令 | 16位 | 16位 |
逻辑处理命令 | 16位 | 16位 |
16位移位命令 | 16位 | 16位 |
32位移位命令 | 32位 | 32位 |
比较处理命令 | 16位 | 16位 |
位数命令 | 16位 | 16位 |
下面,参考图11所示流寄存器SR0和SR1,以5×3像素数据的滤波为例,说明处理器单元PU和PE的操作的例子。
如图12所示,每个PE负责垂直像素数据串,在对附近的像素数据进行了加权加法后,将结果写回本地存储器204或存储器***105。
例如,当正在执行5×3的滤波时,如图13所示,对区域801内存在的15个像素数据,即,像素数据00、01、02、10、11、12、20、21、22、30、31、32、40、41和42进行加权相加,以计算位于位置802的像素数据。
下面,使用附图说明在相邻PE之间如何传输数据。为了集中说明数据的传输,示意性示出下面的说明所使用的附图。
当负责包括图13所示在位置802的像素数据的垂直像素数据串的PE是PE#n时,如图14所示,将这3个垂直像素数据,即,像素数据20、21和22保持在PE#n的流寄存器SR0中,将像素数据10、11和12保持在相邻处理器元件PE#(n-1)内,而将像素数据00、01和02保持在较远相邻的处理器元件PE#(n-2)的流寄存器SR0中。
以同样的方式,将像素数据30、31和32保持在PE#(n+1)的流寄存器SR0中,而将像素数据40、41和42保持在PE#(n+2)的流寄存器SR0中。
在本实施例中,对每个流寄存器,最多可以定义4个指针。应当指出,这同样适用于PU_SIMD处理电路#0~#3中及包括在控制单元303_0内的全部PE。在下面的例子中,流寄存器SR0和SR1分别将一个指针定义为读指针,将一个指针定义为写指针,并将流寄存器用作FIFO。示意性示出该图使得读指针的位置处于最低级。
在本实施例中,可以将数据从流寄存器SR0和SR1二者加载到寄存器in0中。以同样的方式,可以将数据从流寄存器SR0和SR1二者加载到寄存器in1中。另一方面,可以将相邻PE的寄存器in0、in1和acc.H/L的数据写入流寄存器SR0、SR1和SR2,但是寄存器in0的数据仅可以写入流寄存器SR0,寄存器in1的数据仅可以写入流寄存器SR1。然而,尽管增大了电路规模,仍可以从二者写入。
在第一周期中,如图15所示,将存在于流寄存器SR0中的读指针的当前值位置的像素数据写入寄存器in1。即,对于PE#n,将像素数据20写入寄存器in1。算术逻辑单元ALU读出写在寄存器in1中的像素数据值作为源操作数,并将其与系数相乘。将进行该处理所需的系数存储在由寄存器const构成的常数寄存器中。
当访问流寄存器SR0、SR1和SR2时,通过不仅指定指针寄存器的当前值的位置,而且指定从当前位置的偏移量,可以进行访问。在第二周期中,如图16所示,将位于通过将偏移量1与流寄存器SR0中的读指针的当前值相加获得的位置的像素数据写入寄存器in1。即,对于PE#n,将像素数据21写入寄存器in1。算术逻辑单元ALU读出写入in1(1102)中的像素数据值作为源操作数,并将其与系数相乘。此外,将在先前周期存储在寄存器in1中的像素数据写入右侧相邻PE的流寄存器SR1中。
然后继续相同的操作,出现图17所示的状态。在该时刻,完成存储在流寄存器SR0中的3个垂直像素数据的处理。
此外,在下一个周期及其后面的周期中,如图18所示,顺序处理存储在流寄存器SR1中的像素数据。此时,在从流寄存器SR1读取时,使读指针递增。
然后,继续相同的操作,出现图19所示的状态。在该时刻,完成最初存储在流寄存器SR0中的左侧相邻处理器元件(PE)402持有的3个垂直像素数据的处理。
在下一个周期及其后面的周期中,重复同样的操作,但是如上所述,不可以将数据从寄存器in0写入流寄存器SR1。因此,在对存储在流寄存器SR1中的像素数据进行处理的同时,将存储在流寄存器SR0的像素数据传输到左侧相邻PE持有的流寄存器SR1中,因此,如图20所示,将流寄存器SR0的像素数据写入寄存器in1,而将流寄存器SR1的像素数据写入寄存器in0。此时,使两个流寄存器SR0和SR1的读指针递增。算术逻辑单元ALU读出写在寄存器in0中的像素数据值作为源操作数,并将它与系数相乘。
然后,通过继续相同的操作,出现图21所示的状态。在该时刻,完成对左侧的接下来的下3个像素数据的处理。此外,流寄存器SR1存储存储在右侧相邻PE持有的流寄存器SR0中的像素数据。
如图22所示,下面将再次并行执行:从流寄存器SR1向寄存器in1的写入、将写入寄存器in1的像素数据值与系数相乘、以及从寄存器in1向左侧相邻PE持有的流寄存器SR1的写入。
然后,通过继续相同的操作,出现图23所示的状态。在该时刻,完成对包括在图13中的801所指示的5×3区域中的像素数据进行的滤波。此外,在此时刻之前,将下一行的像素数据从SCU203_0写入输入行缓冲器401。
最后,将下一行的像素数据从输入行缓冲器401加载到流寄存器SR0,与此同时,将滤波结果写入输出行缓冲器404。SCU 203_0读出写入输出行缓冲器404的处理结果,并将其写回本地存储器204或存储器***105中。
如上所述,根据本实施例,与算术逻辑单元ALU的处理并行地,使用流寄存器SR0和SR1,可以在相邻PE之间高效传输数据,在不发生中断的情况下,可以将数据提供到算术逻辑单元ALU,在相邻PE之间共享数据以减小从本地存储器204_0读取的频率。
共享功能单元403
与参考图4所做的说明相同,处理器单元PU#00具有共享功能单元403。
共享功能单元403用于执行在图4所示的PE#0~#15的图11所示算术逻辑单元ALU可以执行的处理命令之外的处理。
处理器元件PE#0~#15使用功能调用命令,以使用共享功能单元403。此时,通过给命令添加预定功能识别号,PE#0~PE#15将指定与稍后说明的可用功能链接的请求输出到共享功能单元403。
当设置指定为源操作数的寄存器所需的数据、执行功能调用命令时,经过预定等待时间后,PE#0~#15将结果返回寄存器temps。应当指出,直到写回基准结果,才能重写指定为源操作数的寄存器。
下面说明共享功能单元403可以使用的功能。
例如,如图25所示,共享功能单元403包括如下功能块:查询表1202、加法处理器1203、最大/最小值处理器1204、向量处理单元1205等。
查询表1202是在多个处理器元件(PE)之间共享的,等待时间根据入口数量而变化的功能块。
加法处理器1203是用于从多个PE接收数据作为输入,而且等待时间根据数据数量而变化的功能块。
最大/最小值处理器1204是用于从多个PE接收数据作为输入,而且等待时间根据数据数量而变化的功能块。
向量处理单元1205是等待时间根据维数而变化的功能块。
接着,将说明共享功能单元403的查询表1202的功能。
查询表1202不仅可以用作1024个入口的单个表,而且可以通过改变入口数量,例如512个入口和256个入口,来使用该查询表1202。
此外,查询表1202不仅可以保存一种表,而且可以保存多种表。例如,查询表1202可以在1024个入口的不同区域中存储倒数表和对数表。
16个PE共享查询表1202,因此,当将1024个入口用作单个表时,访问所需的周期数变成16。
将1个周期的访问延迟与该周期相加获得的17是1024个入口的查询表1202的等待时间。
当减少入口数并存储多个相同类型的表时,减少了共享一个表的PE的数量,因此,也减少了访问所需周期数。例如,当采用256个入口的表时,该表被4个PE共享,因此,访问所需的周期数是4,等待时间是5。应当指出,查询表1202的结构在共享功能单元403执行程序之前进行设置。
接着,将说明共享功能单元403的加法处理器1203的功能。
当从多个PE接收数据作为输入时,经过预定等待时间后,加法处理器1203将该数据的总值输出到输出该数据的PE。
共享功能单元403包括一个加法处理器1203。当其被16个PE共享时,处理所需的周期数是16。将1个周期的访问延迟与该周期数相加获得的17是加法处理器1203的等待时间。
共享功能单元403包括2个加法处理器1203。当每个加法处理器1203由8个PE共享时,处理所需的周期数是8。将1个周期的访问延迟与该周期数相加获得的9是加法处理器1203的等待时间。应当指出,在共享功能单元403执行程序之前,设置多个加法处理器1203的结构。
接着,将说明共享功能单元403的最大/最小值处理器1204的功能。
当从多个PE接收数据作为输入时,经过预定等待时间后,最大/最小值处理器1204将这些数据的最大值和最小值输出到输出该数据的PE。
共享功能单元403包括一个最大/最小值处理器1204。当其被16个PE共享时,处理所需的周期数是16。将1个周期的访问延迟与该周期数相加获得的17是最大/最小值处理器1204的等待时间。
共享功能单元403包括2个最大/最小值处理器1204。当每个最大/最小值处理器1204由8个PE共享时,处理所需的周期数是8。将1个周期的访问延迟与该周期数相加获得的9是最大/最小值处理器1204的等待时间。应当指出,在共享功能单元403执行程序之前,设置多个最大/最小值处理器1204的配置。
接着,将说明共享功能单元403的向量处理单元1205的功能。
使用从多个PE输入的数据数量作为维数,向量处理单元1205进行向量处理,在预定等待时间之后,将结果输出到输出该数据的PE。
下面的等式(1)是两个PE处理的二维向量,因此,处理所需周期数是3。通过将1个周期的访问延迟与该周期数相加获得的3是向量处理单元1205的等待时间。
等式1
同样,因为下面的等式(2)的4个PE处理四维向量,所以进行处理所需的周期数是4。通过将1个周期的访问延迟与该周期数相加获得的5是向量处理单元1205的等待时间。
等式2
在这两种情况下,预先存储作为系数的矩阵元素的值。
SCU(流控制单元)203_0~203_3
下面将说明SCU 203_0。
SCU 203_1~203_3与SCU 203_0相同。
如图3等所示,SCU 203_0对构成多个PU_SIMD(单指令多数据)处理电路#0~#3的各处理器元件PE的处理所需的数据的高效输入/输出进行控制。
SCU 203_0将处理所需数据存储在例如半导体存储器等的存储装置中。
PU_SIMD处理电路#0~#3是SIMD型处理器,因此,在时间上,对全部PE同步进行输入/输出。因此,SCU 203_0对PU_SIMD#0~#3进行输入/输出将导致同时输入/输出PE数量的输入/输出数据。下文中将同时输入/输出数据称为“流数据”。
另一方面,PU_SIMD处理电路#0~#3主要执行图像信息的处理。通过保障二维逻辑存储区,将要处理的图像信息存储在存储器或其它存储装置中使用一维物理地址管理的存储区内。将该图像数据的基本单位称为“像素数据”。
SCU 203_0位于PU_SIMD处理电路#0~#3与存储器***105和本地存储器204_0之间,具有将多个像素数据转换为输入/输出用流数据的功能。
接着,将具体说明SCU 203_0的功能。
(1)SCU 203_0从本地存储器204_0或存储器***105(下文中还被称为存储区)读出数据组,将该数据转换为PU_SIMD #0~#3所需的流数据,然后,将其输出到PU_SIMD #0~#3。
(2)SCU 203_0将PU_SIMD #0~#3输出的输出流数据转换为该存储区内部所要求的数据格式,将该数据写入以及传输到存储区。
(3)SCU 203_0的存储区是用作工作区的半导体存储器。可以假定各种变化,例如,存储区与SCU 203_0一起包括在SOC(片上***,System On Chip)内的情况以及该存储区包括在SOC外部的情况。
(4)当SCU 203_0访问上述存储区时,可以根据一维物理地址,通过SCU 203_0进行访问。
(5)在SCU 203_0内,可以以二维逻辑坐标排列的像素数据为单位,处理该存储区上的数据,因为在PU_SIMD处理电路#0~#3内容易进行程序开发,而且容易处理图像信息。
(6)在存储区上,由多个像素数据构成的一个字数据是使用一维物理地址访问的单位。
(7)根据使用的存储器类型,二维坐标表示的一个字数据中的像素数据数和像素数据阵列是可变的。SCU 203_0可以处理多个像素数据矩阵。
(8)SCU 203_0的存储区需要用于对存储区进行读访问、在连接到SCU 203_0的PU_SIMD处理电路#0~#3的各单元中进行数据转换的设置。通过从主处理器101向SCU 203_0内的寄存器进行写入,可以进行该设置。
(9)SCU 203_0设置下面的项目,以对存储区执行读访问。
a.第一开始地址,用于指定包括在存储区中的多个矩形图像区。
b.包括在从第一开始地址开始的存储区中、由二维逻辑坐标指定的第二多个矩形图像区的宽度/高度。
c.以分层方式包括在第二矩形图像区中、由二维逻辑坐标指定的第三矩形图像区的宽度/高度。
d.指定用于选择性地读取第三矩形图像区中的数据、进行重新排列、计算和其它处理以及将该结果转换为PU_SIMD处理电路#0~#3所需的流数据的方法。
(10)SCU 203_0设置下面的执行过程,以对存储区进行写访问。
e.包括在存储区中、指定多个矩形图像区的第四开始地址。
f.包括在从第四开始地址开始的存储区中、由二维逻辑坐标指定的第五多个矩形图像区的宽度/高度。
g.由二维逻辑坐标指定的、以分层方式包括在第五矩形图像区中的第六矩形图像区的宽度/高度。
h.指定用于根据第六矩形图像区内的数据,从PU_SIMD处理电路#0~#3输出的流数据中选择性地读取数据、进行重新排列、计算和其它处理以及将结果以某种数据格式写入第六矩形图像区内的方法。
i.SCU 203_0在多个存储区之间实现数据传输。
j.通过通信接口,连接可以控制SCU 203_0的、由主处理器101构成的控制器。
当PU_SIMD处理电路#0~#3处理流数据时,它们使用复用(以分层方式)指定存储区上的矩形图像区、在移动每个矩形图像区的同时进行数据的读/写处理高效地进行处理。
因为该原因,在SCU 203_0内定义具有复用结构的矩形图像区。
图26示出在将流数据从存储区上的复用矩形图像区写入PU_SIMD处理电路#0~#3的情况下和将流数据从PU_SIMD处理电路#0~#3写入存储区上的复用矩形图像区的情况下的操作。
将参考图26说明SCU 203_0处理的存储区中的矩形图像区的分层结构。
SCU 203_0将矩形图像区WR指定为存储区中的工作区。
此外,SCU 203_0为每个PU_SIMD处理电路#0~#3指定矩形图像区WR。
SCU 203_0指定矩形图像区AR作为矩形图像区WR中的读取侧。
SCU 203_0指定矩形图像区AR中的矩形图像区BR。
SCU 203_0执行(指定)数据转换命令WI#data#op,以基于从主处理器101输入的程序,将从矩形图像区BR读出的像素数据转换为PU_SIMD处理电路#0~#3所需的流数据。
SCU 203_0可以对指定矩形图像区AR、BR以及WI_data_op的一系列重复处理进行编程,如稍后所述。
SCU 203_0指定矩形图像区CR,作为矩形图像区WR中的像素数据的写目的地。
SCU 203_0指定矩形图像区CR中的矩形图像区DR。
SCU 203_0从PU_SIMD #0~#3的输出流数据到矩形图像区DR地执行数据转换命令WO#data#op。
SCU 203_0可以对指定矩形图像区CR、DR以及WO_data_op的一系列重复处理进行编程,如稍后所述。
SCU 203_0可以将矩形图像区AR、BR、CR和DR排列和移动到矩形图像区WR中的任意位置。
使用矩形图像区WR中的二维逻辑坐标,SCU 203_0可以指定矩形图像区AR、BR、CR和DR。
使用关于存储区的物理地址,SCU 203_0可以指定矩形图像区WR。
当访问矩形图像区WR、AR、DR、CR和DR内的像素数据时,无需访问存储区,因此SCU 203_0执行从逻辑地址到物理地址的转换,访问存储区。
图27是用于说明用于对在SCU 203_0内指定的复用矩形图像区进行处理的功能的图。
如图27所示,SCU 203_0将存储区中的每个矩形图像区WR0~WR3分配到每个PU_ SIMD处理电路#0~#3。
在存储器***105和本地存储器204_0等的存储区中确定矩形图像区WR0~WR3。
在矩形图像区WR0~WR3中,确定矩形图像区AR0~AR7、BR0~BR7、CR0~CR7以及DR0~DR3。
使用WI_data_op,图27所示的SCU 203_0将矩形图像区BR中的数据转换为流数据,并将其写入输出缓冲器out_buf。
此外,使用数据转换命令WO#data#op,SCU_203_0对从PU_SIMD处理电路#0~#3输入的、存储在输入缓冲器in#buf内的流数据进行数据转换,并将其写入矩形图像区DR。
如上参考图26所述,通过以分层结构方式在矩形图像区WR中确定矩形图像区AR、BR、CR和DR,例如,当在矩形图像区AR和CR中,相对移动矩形图像区BR和DR时,可以采用将标准坐标与矩形图像区AR、BR、CR和DR中的局部坐标相加的形式的地址表示,编程变得简单。
在本实施例中,使用特定数字表示矩形图像区的数量、复用指定的级数等,但可以将该结构和其数量做任意结合。可以根据各种图像处理的要求来改变该结构。
接着,将说明SCU 203_0为了进行数据传输而执行的连接。
***总线连接
图1所示的***总线113是用于将SCU 203_0连接到主处理器101和存储器***105以及其它处理模块的总线,其具有下面的特性特征。
(1)***总线113可以采用LSI或SOC内的标准化总线标准。
(2)***总线113的总线宽度是128位。通过采用可以连续进行数据传输(突发(burst)传输)的配置,可以提高总线效率。
(3)作为总线主设备,SCU 203_0访问***总线113上的存储装置(例如,存储器***105)。
(4)***总线113上的SCU 203_0之外的总线主设备访问SCU203_0的内部寄存器或SCU专用存储装置(例如,本地存储器204_0)。
(5)只要满足数据传输效率和功能,可以选择***总线113的总线标准。
SCU 203_0的专用存储区连接
SCU 203_0可以连接到作为专用存储区的专用存储装置。
专用存储装置可以是位于SOC内部或外部的SRAM、DRAM或其它半导体存储器。
上述专用存储装置连接到具有带宽比***总线113的带宽宽的总线。
配备专用存储装置以仅供一个SCU 203_0使用。
***总线113上的总线主设备可以访问专用存储装置。
PU_SIMD #0~#3的连接
SCU 203_0具有4个通过总线连接到其的PU_SIMD处理电路#0~#3。
使用每个PU_SIMD处理电路中的256位单向总线,将流数据从SCU 203_0输入到PU_SIMD处理电路#0~#3。该传输效率是256位/时钟。
作为数据/传输协议,采用双线型握手。
在SCU 203_0内,配备输出缓冲器out_buf。
当从SCU 203_0输出时,通过对PU_SIMD处理电路#0~#3指定地址,识别PU_SIMD处理电路的内部寄存器。
使用每个PU_SIMD中的256位单向总线,使流数据从PU_SIMD处理电路#0~#3输入到SCU 203_0。传输效率为256位/时钟。
此外,采用双线型握手作为数据/传输协议。
在SCU 203_0内配备输入用输入缓冲器in_buf。
当从PU_SIMD处理电路#0~#3到SCU 203_0执行输入时,通过对PU_SIMD指定地址,识别PU_SIMD处理电路内部寄存器。
SCU 203_0的物理逻辑地址转换
使用二维逻辑地址表示位于SCU 203_0访问的、使用图26和图27说明的存储区中的矩形图像区WR内的像素对应位置Pixel,但是使用物理地址表示存储器***105和本地存储器204_0。因此,当对在矩形图像区WR中的矩形图像区AR、BR、CR和DR内指定的像素对应位置Pixel进行读或写时,SCU 203_0执行从二维逻辑地址到物理地址的地址转换。
在此,将矩形图像区WR中的像素对应位置定义为pixel(x,y)。应当指出,x、y是二维逻辑地址。
以如下方式,计算像素对应位置L_pixel(x,y)的物理地址(adrs)。
此外,在地址指定字中,像素对应位置L_pixel(x,y)占据的位(bit)位置被表示为Word[a:b]。(应当指出,在字内,a、b是形成像素的位范围)。
在下面的等式(3)~(4)中,ww是以像素位置为单位的矩形图像区WR的宽度(x方向)。
应当指出,将1个字数据(1字)中沿x方向上的像素数定义为pw。
ph是1个字中沿y方向上的像素数。
n是用于计算1个字中的位位置的值。
WR#bp是用于表示存储区内的矩形图像区WR的开始的地址。
这是用一个像素=16位表示的,但是,作为位长,还可以采用其它值。
Int()表示不超过括号内的值的整数。
x mod y是使用整数y除整数x获得的余数。
等式3
adres=WR#bp+int[y/ph]*ww/pw+int(x/pw) ...(3)
等式4
n=(y mod ph)*pw+(x mod pw) ...(4)
等式5
L#Pixel(x,y)[15:0]=word[16*(n+1)-1:16*n] ...(5)
图28是用于说明SCU 203_0执行的物理/逻辑地址转换的图。
如图28所示,在存储器***105和本地存储器204_0的物理地址空间ADRS中确定矩形图像区WR。
SCU 203_0将一个物理地址的访问单位确定为1个字。
WR#bp+是矩形图像区WR的开始地址。
ww是矩形图像区WR、像素对应位置Pixel单元以及多个pw的宽度。
如图28所示,使用二维逻辑地址指定地址空间ADRS的像素对应位置L_Pixel。
图28所示的pw表示1个字中沿x方向上的像素数(像素数据数)。
图28所示的ph表示1个字中沿y方向上的像素数。
当使包括在1个像素中的信息量为n位,且包括在1个字中的总位容量是字大小时,存在下面的关系。
等式6
wordsize=n*pw*ph ...(6)
在本实施例中,通过使用如上所述的二维逻辑地址管理存储区,其中,访问该存储区内的任意矩形图像区,没有必要像在传统扫描行方法中那样进行计数处理(用于检测截止行的处理)等,因此,容易编程。
在本实施例中,使用1个像素=16位的配置进行了说明,但是并不特别限定1个像素的信息量,1个像素的信息量可以为8位或32位等。
SCU 203_0访问存储区
如上所述,SCU 203_0可以将存储器***105用作大规模外部存储装置,而将本地存储器204_0用作小规模专用存储装置,它们作为存储装置连接到***总线113。
例如,存储器***105是连接到包括SCU 203_0的SOC的外部的DRAM芯片。它是通用DDR、RAMBUS、或其它存储器芯片。
例如,本地存储器204_0是位于包括SCU 203_0的SOC的内部的SRAM或eDRAM(Embedded-DRAM(嵌入式DRAM):与SCU包括在同一个SOC上的片上DRAM)。
通常,DRAM具有地址的分层结构,例如,行(row)/列(column)/体(bank)。其特征在于,包括在同一行的连续数据访问速度高,但是跨越行边界的连续数据访问和远处行的连续访问要求例如预装页(page precharging)的处理,因此,速度低。
在本实施例中,例如,SCU 203_0使用RAM作为存储器***105和本地存储器204_0,但是即使使用SRAM,也不存在问题。此外,当使用DRAM时,为了防止上述访问性能的不连续,通过在产生流数据时在同一页上的存储区中尽可能多地排列像素数据的矩形图像,可以尽可能减少DRAM访问的不连续。
例如,通过对前述的物理/逻辑地址转换中的bp和ww值施加下面的限制,这可以容易地实现。
(限制例子1)ww是DRAM的列的倍数和pw的倍数。
(限制例子2)WR#bp的值是DRAM的行单位。
SCU 203_0定义复用矩形图像区(读取时间)
如上所述,使用图29所示的二维逻辑地址表示,SCU 203_0可以将存储区中的矩形图像区WR中的矩形图像区AR和BR定义为复用矩形图像区。
作为表示位置关系的值,使用下面的坐标值。
ww是矩形图像区WR的沿x方向上的矩形图像区的宽度。
ax、ay表示矩形图像区WR中的矩形图像区AR的二维坐标。其表示以矩形图像区WR的左上顶点为原点(0,0)的坐标系中,位于矩形图像区AR的左上顶点的像素对应位置Pixel的坐标。
aw和ah表示矩形图像区AR的宽度和高度。
bx和by表示矩形图像区AR中的矩形图像区BR的二维坐标。它们表示在以矩形图像区AR的左上顶点为原点(0,0)的坐标系中,位于矩形图像区BR的左上顶点的像素对应位置Pixel的坐标。
bw和bh表示矩形图像区BR的宽度和高度。
x和y表示矩形图像区BR中的像素对应位置Pixel的二维坐标。它们是以矩形图像区BR的左上顶点作为原点(0,0)的坐标系的坐标。
SCU 203_0定义矩形图像区BR的模式
SCU 203_0可以指定矩形图像区BR,以通过调整bx、by和bw、bh的值,来使它位于矩形图像区AR的外部,如图30所示。
因为该原因,SCU 203_0可以以各种格式将流数据输出到PU_SIMD处理电路#0~#3。
下面将说明表示SCU 203_0指定矩形图像区BR的形式的各种BR模式。
(矩形图像区)BR模式1:
SCU 203_0可以设置矩形图像区BR,以便在设置BR模式1的情况下,使其位于矩形图像区AR的外部。
当矩形图像区BR位于矩形图像区AR外部时,SCU 203_0将对应于外部区域的像素数据Pixel的值改变为先前设置的值(COL)。
使用矩形图像区AR中的像素数据AR(),根据下面的等式(7),SCU 203_0确定矩形图像区BR中的像素数据Pixel(x,y)。
等式7
If((x+bx>=aw)|(y+by>ah))pixel(x,y)=COL
else pixel(x,y)=AR(x+bx,y+by) ...(7)
(矩形图像区)BR模式2:
当在BR模式2中进行设置时,SCU 203_0可以将矩形图像区BR设置在矩形图像区AR的外部。
如图31所示,当沿X方向矩形图像区BR位于矩形图像区AR的外部时,SCU 203_0对要重叠回矩形图像区AR内部的外部区域进行控制。
如图31所示,当沿X方向和Y方向,矩形图像区BR位于矩形图像区AR的外部时,SCU 203_0不将其重叠回矩形图像区AR中,SCU 203_0将像素数据Pixel的值设置为(COL)。
使用矩形图像区AR中的像素数据AR(),根据下面的等式(8),SCU 203_0确定矩形图像区BR中的像素数据Pixel(x,y)。
等式8
If(aw<=x+bx)&(y+by<=ah-bh)pixel(x,y)=AR(x+bx-aw,y+by+bh)
else if(aw<=x+bx)&(ah-bh<y+by)pixel(x,y)=COL
else if(ah<y+bx)pixel(x,y)=COL
else pixel(x,y)=AR(x+bx,y+by) ...(8)
(矩形图像区)BR模式3:
当在BR模式3进行设置时,SCU 203_0不能将矩形图像区BR设置在矩形图像区AR的外部。
当指定位于矩形图像区AR外部的矩形图像区BR时,SCU203_0不保证外部区域的像素数据Pixel(x,y)的值。
如图32所示,当在离开矩形图像区AR的外周两个像素对应位置的区域中设置矩形图像区BR时,SCU 203_0执行钳位(clamp)操作,以将位于离开矩形图像区AR的外周向内3个像素对应位置的矩形图像区BR中的在像素对应位置处的像素数据Pixel(x,y)设置为离开矩形图像区BR的外周两个像素对应位置的像素数据Pixel(x,y)。
使用下面的等式(9),定义矩形图像区BR中的像素数据Pixel(x,y)。
为简化起见,设定xp=x+bx,yp=y+by。
等式9
If((xp<2)&(yp<2))pixel(x,y)=AR(2,2)
else if((2<=xp<aw-2)&(yp<2)pixel(x,y)=AR(xp,2)
else if((aw-2<=xp)&(yp<2)pixel(x,y)=AR(aw-3,2)
else if((xp<2)&(2<=yp<ah-2)pixel(x,y)=AR(2,yp)
else if((aw-2<xp)&(2<=yp<ah-2)pixel(x,y)=AR(aw-3,yp)
else if((xp<2)&(ah-2<=yp)pixel(x,y)=AR(2,ah-3)
else if((2<=xp<aw-2)&(ah-2<=yp)pixel(x,y)=AR(xp,ah-3)
else if((aw-2<=xp)&(ah-2<=yp)pixel(x,y)=AR(aw-3,ah-3)
else pixel(x,y)=AR(xp,yp) ...(9)
当矩形图像区BR位于离开矩形图像区AR的外周正好一个像素对应位置内时,SCU 203_0执行钳位操作,如图33所示。
在本实施例中,通过执行如上所述的钳位操作(处理),当对任意矩形图像区进行滤波等时,可以适当使用位于矩形图像区之外的像素数据,而不使用位于该矩形图像区外周上的像素数据。
SCU 203_0对PU_SIMD进行数据输入处理
SCU 203_0从矩形图像区BR读出像素数据Pixel(x,y),将该数据转换为数据流数据(执行输入数据转换处理),并将该数据流数据输入到图3所示的PU_SIMD处理电路#0~#3。
在此,SCU 203_0可以对每个PU_SIMD #0~#3分别指定上述转换的内容。
SCU 203_0设置有对应于每个PU_SIMD #0~#3的输出缓冲器out_buf。
SCU 203_0设置有用于指定矩形图像区BR的寄存器。
SCU 203_0设置有对应于每个PU_SIMD #0~#3的输入缓冲器in_buf。
SCU 203_0从矩形图像区BR读出像素数据Pixel(x,y),对该像素数据Pixel(x,y)进行重新排列或其它数据转换处理,然后,将它作为流数据写入图27所示的输出缓冲器out_buf。
SCU 203_0将用于指定矩形图像区BR的寄存器值作为流数据写入输出缓冲器out_buf。
SCU 203_0从矩形图像区BR读出像素数据Pixel(x,y),对该像素数据Pixel(x,y)进行重新排列或其它数据转换处理,然后,将其写入位于SCU 203_0中用于指定矩形图像区BR的寄存器。
SCU 203_0对从输入缓冲器in_buf读出的数据进行数据转换处理,然后,将作为流数据的结果写入输出缓冲器out_buf。
作为上述输入数据转换处理,即,对数据流执行转换处理以将数据写入PU_SIMD #0~#3,SCU 203_0执行例如根据下表2所示的输入数据转换命令的输入数据转换处理。
SCU 203_0从图1所示的主处理器101接收输入数据转换命令作为输入,并执行该输入数据转换命令。
SCU 203_0可以在表2所示的每个输入数据转换命令中指定表3所示的辅助参数。
表2
输入数据转换命令 | BR区宽度bw | BR区高度bh |
set_BR_lof4×4_same | 4 | 4 |
set_bxy | 4 | 4 |
set_BR_8×1_to_bxy | 8 | 1 |
set_BR4567_lof4×4 | 4 | 4 |
set_in_buf_straight | 无需定义 | 无需定义 |
set_in_buf_with_BR_2×1 | 2 | 1 |
set_in_buf_with_BR_4×1 | 4 | 1 |
set_BR_16×1 | 16 | 1 |
set_BR_32×1 | 32 | 1 |
set_BR_64×1 | 64 | 1 |
set_BR_64×2 | 128 | 1 |
set_BR_64×2×2 | 128 | 2 |
set_BR_64×3 | 192 | 1 |
set_BR_64×3×3 | 192 | 3 |
set_BR_64×4 | 256 | 1 |
set_BR_64×4×4 | 256 | 4 |
set_BR_64×9 | 576 | 3 |
set_BR_64×9×3 | 576 | 6 |
表3
输入数据转换命令的辅助参数 | 注释 |
BR_num | BF数(0..7) |
csel[1:0] | 在BR区内指定像素,从沿x方向连续的4个像素中最多选择一个像素 |
xsel[3:0] | 在BR区内指定像素,从沿x方向上的16个像素中最多选择一个像素 |
ysel[2:0] | 在BR区内指定像素,从沿y方向上的8个像素中最多选择一个像素 |
Wsel | 指定写入out_buf的64个像素的格式0的情况:将进行输入数据转换产生的64个像素原样加载到out_buf内1的情况:对进行输入数据转换产生的64位像素中的每个像素的LSB的4位进行封装,仅将16个像素装载到out_buf内 |
ld[15:0] | 执行装载控制,按每4个像素分割out_buf内的64个像素使用1位装载控制4像素的同步装载装载ld[n]:pixel(4(n-1):4n-1),应当指出,0<=n<=16 |
接着,将说明基于表2所示数据转换命令的输入数据转换处理。
set#BR#lof4×4#same
例如,当执行来自主处理器101的输入数据转换命令“set#BR#lof4×4#same”时,如图34所示,SCU 203_0从由该命令辅助参数指定的矩形图像区BR中的1个像素对应位置读出像素数据Pixel,复制64个像素数据,以产生像素数据Pixel(0,...,63),在像素数据内进行了位选择后,通过输出缓冲器out_buf,将这些数据输入到PU_SIMD处理电路#0~#3。
使用辅助参数BR#num,SCU 203_0规定4×4像素对应位置的矩形图像区BR。
SCU 203_0具有复用器MUX1和MUX2和逻辑电路LOG1。
使用辅助参数ysel,复用器MUX1从上面规定的矩形图像区BR读出沿x方向上的4个像素对应位置的像素数据Pixel。
然后,根据辅助参数xsel,复用器MUX2从上述所读出的沿x方向上的4个像素数据Pixel中选择一个像素数据Pixel,并将其输出到逻辑电路LOG1。
使用辅助参数wsel,逻辑电路LOG1将分别表示上面所选择的一个像素数据Pixel的64个像素数据Pixel写入输出缓冲器out_buf。
根据辅助参数wsel,逻辑电路LOG1确定是将这64个像素数据Pixel原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,然后,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0对每4个像素数据Pixel执行装载控制。
set#bxy
例如,当执行来自主处理器101的输入数据转换命令“set#bxy”时,如图35所示,SCU 203_0复制使用辅助参数xsel、ysel选择的矩形图像区BR的32个左端坐标(bx,by),以产生64个像素数据的流数据,在使用辅助参数wsel在该像素数据内进行了位选择后,使用辅助参数ld,将其设置在输出缓冲器out_buf内。
在本实施例中,作为矩形图像区BR,配备其左端坐标不同的8种矩形图像区BR。
SCU 203_0设置有:寄存器by0~by7,用于指定矩形图像区BR的沿y方向的值;寄存器bx0~bx7,用于指定沿x方向的值。
SCU 203_0具有8个复用器MUX11。
使用辅助参数yel,每个复用器MUX11选择寄存器by的值和对应于各by的寄存器xy的值其中之一,并将其输出到复用器MUX12。
SCU 203_0设置有两个复用器MUX12。
使用辅助参数xsel,复用器MUX12选择从4个复用器MUX11输入的各值之一,并将其输出到逻辑电路LOG31。
使用辅助参数wsel,逻辑电路LOG31确定是将64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位并以16个像素数据Pixel的方式存储它们。
根据辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据Pixel。
以这种方式,之所以将矩形图像区BR的左端坐标输出到PU_SIMD处理电路#0~#3的原因是,在PU_SIMD处理电路#0~#3的PE中,在进行滤波等处理中,使用相关坐标进行处理。
set#BR#8×1#t0#bxy
例如,当执行来自主处理器101的输入数据转换命令“set#BR#8×1#t0#bxy”时,如图36所示,SCU 203_0将矩形图像区BR中沿x方向连续的2个像素作为坐标进行处理,因此,从使用BR#num选择的矩形图像区BR4~BR7中选择8个像素数据Pixel,将其设置在矩形图像区BR的左端坐标(bx,by)。
通过与稍后说明的输入数据转换命令“WI#data#op=set#BR4567#lof4×4”组合进行指定,这样可以实现存储器间接地址。
即,在该例中,在矩形图像区BR中,存储矩形图像区BR的左端坐标作为像素数据。
set#BR4567#lof4×4
例如,当执行来自主处理器101的输入数据转换命令“set#BR4567#lof4×4”时,如图37所示,使用复用器MUX1和MUX2,SCU(流控制单元)203_0使用辅助参数xsel、ysel从4个矩形图像区BR读出每个像素数据,并将它们输出到逻辑电路LOG51。
使用辅助参数wsel,逻辑电路LOG51将从SCU 203_0输入的像素数据写到输出缓冲器out_buf的预定位位置。
使用辅助参数wsel,逻辑电路LOG51确定是将64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,并以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD #0~#3装载4个像素数据。
在该例中,通过使用由上述“set#BR#8×1#to#bxy”设置的坐标作为上述4个矩形图像区BR的左端坐标实现了上述存储器间接地址。
set#in#buf#straight
例如,当执行来自主处理器101的输入数据转换命令“set#in#buf#straight”时,如图38所示,SCU 203_0从分别对PU_SIMD #0~#3设置的4个输入缓冲器in_buf中选择两个输入缓冲器in_buf(n)、(n-1)。
输入缓冲器in_buf(n)、(n-1)中的每个具有1(高度)×64(宽度)像素数据的大小。
SCU 203_0设置有64个复用器MUX1。
使用辅助参数ysel,64个复用器MUX1的每个从输入缓冲器in_buf(n)、(n-1)的相应两个像素数据中选择一个像素数据,并将其输出到逻辑电路LOG61。
使用辅助参数wsel,逻辑电路LOG61确定是将64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,并以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。
使用输入数据转换命令“set#in#buf#straight”,在图3所示的PU_SIMD处理电路#0~#3之间输入/输出数据成为可能。此外,使用相关输入数据转换命令“set#in#buf#straight”,可以编程(确定)PU_SIMD #0~#3是串联还是并联连接。
set#in#buf#with#BR#2×1
例如,当执行输入数据转换命令“set#in#buf#with#BR#2×1”时,如图39所示,SCU 203_0从分别对PU_SIMD #0~#3设置的4个输入缓冲器in_buf中选择两个输入缓冲器in_buf(n)、(n-1)。
输入缓冲器in_buf(n)、(n-1)分别具有1(高度)×64(宽度)像素数据的大小。
SCU 203_0设置有62个复用器MUX1。
使用辅助参数ysel,62个复用器MUX1分别从输入缓冲器in_buf(n)、(n-1)的相应两个像素数据之间选择一个像素数据,并将其输出到逻辑电路LOG71。
使用辅助参数wsel,逻辑电路LOG71确定是将62个像素数据和从使用辅助参数BR#num选择的矩形图像区BR读出的2个像素数据,即,总共64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,并以16个像素数据Pixel的方式存储它们。
使用辅助参数1d,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。
set#in#buf#with#BR#4×1
例如,当执行输入数据转换命令“set#in#buf#with#BR#4×1”时,如图40所示,SCU 203_0从分别对PU_SIMD #0~#3设置的4个输入缓冲器in_buf中选择两个输入缓冲器in_buf(n)、(n-1)。
每个输入缓冲器in_buf(n)、(n-1)具有1(高度)×64(宽度)像素数据的大小。
SCU 203_0设置有60个复用器MUX1。
使用辅助参数ysel,60个复用器MUX1分别从输入缓冲器in_buf(n)、(n-1)的相应两个像素数据之间选择一个像素数据,并将其输出到逻辑电路LOG81。
使用辅助参数wsel,逻辑电路LOG81确定是将60个像素数据和从使用辅助参数BR#num选择的矩形图像区BR读出的4个像素数据,即,总共64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,并以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。
set#BR#16×1
例如,当执行来自主处理器101的输入数据转换命令“set#BR#16×1”时,如图41所示,SCU 203_0将使用辅助参数BR#num所选择的矩形图像区BR中的16个像素数据复制4次,以产生64个像素数据的流数据,在进行了预定像素数据选择处理后,将其写入输出缓冲器out_buf。
逻辑电路LOG91接收通过将使用辅助参数BR#num所选择的矩形图像区BR中的16个像素数据复制4次获得的64个像素数据作为输入,使用辅助参数wsel,确定是将64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。因此,还可以将分别对16个像素复制了4次的数据写到out#buf。
set#BR#32×1
例如,当执行来自主处理器101的输入数据转换命令“set#BR#32×1”时,如图42所示,SCU 203_0将使用辅助参数BR#num所选择的矩形图像区BR中的32个像素数据复制2次,以产生64个像素数据的流数据,并在进行了预定像素数据选择处理后,将其写入输出缓冲器out_buf。
逻辑电路LOG101接收通过将使用辅助参数BR#num选择的矩形图像区BR中的32个像素数据复制2次获得的64个像素数据作为输入,使用辅助参数wsel,确定是将64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。因此,还可以将分别对32个像素复制了2次的数据写入out#buf。
set#BR#64×1
例如,当执行来自主处理器101的输入数据转换命令“set#BR#64×1”时,如图43所示,SCU 203_0产生位于使用辅助参数BR#num所选择的矩形图像区BR中的64个像素数据的流数据,在进行了预定像素数据选择处理后,将其写入输出缓冲器out_buf。
逻辑电路LOG111接收使用辅助参数BR#num所选择的矩形图像区BR中的64个像素数据作为输入,并使用辅助参数wsel,确定是将64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。
set#BR#64×2
例如,当执行来自主处理器101的输入数据转换命令“set#BR#64×2”时,如图44所示,使用辅助参数xsel,SCU 203_0从使用辅助参数BR#num所选择的矩形图像区BR中的128×1个像素数据中选择64个像素数据,以产生流数据,在进行了预定像素数据选择处理后,将其写入输出缓冲器out_buf。
64个复用器MUX2分别接收使用辅助参数BR#num所选择的矩形图像区BR中的沿x方向上的2个相邻图像数据作为输入,使用辅助参数xsel选择1个像素数据,并将该像素数据输出到逻辑电路LOG121。
使用辅助参数wsel,逻辑电路LOG121确定是将从64个复用器MUX2输入的64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD #0~#3装载4个像素数据。
set#BR#64×2×2
例如,当执行来自主处理器101的输入数据转换命令“set#BR#64×2×2”时,如图45所示,使用辅助参数xsel,SCU203_0从使用辅助参数BR#num所选择的矩形图像区BR中的128×2个像素数据中选择64个像素数据,以产生流数据,并在进行了预定像素数据选择处理后,将它写入输出缓冲器out_buf。
128个复用器MUX1分别接收使用辅助参数BR#num所选择的矩形图像区BR中的沿y方向上的2个相邻像素数据作为输入,使用辅助参数ysel选择1个像素数据,将该像素数据输出到64个复用器MUX2。
使用辅助参数xsel,64个复用器MUX2分别选择沿x方向上的2个相邻像素数据中的一个像素数据,将该像素数据输出到逻辑电路LOG131。
使用辅助参数wsel,逻辑电路LOG131确定是将从64个复用器MUX2输入的64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。
set#BR#64×3
例如,当执行来自主处理器101的输入数据转换命令“set#BR#64×3”时,如图46所示,使用辅助参数xsel,SCU 203_0从使用辅助参数BR#num所选择的矩形图像区BR中的192×1个像素数据中选择64个像素数据,以产生流数据,并在进行了预定像素数据选择处理后,将其写入输出缓冲器out_buf。
64个复用器MUX3分别接收使用辅助参数BR#num所选择的矩形图像区BR中的沿x方向上的3个相邻像素数据作为输入,使用辅助参数xsel选择1个像素数据,将该像素数据输出到逻辑电路LOG141。
使用辅助参数wsel,逻辑电路LOG141确定是将从64个复用器MUX3输入的64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD #0~#3装载4个像素数据。
set#BR#64×3×3
例如,当执行来自主处理器101的输入数据转换命令“set#BR#64×3×3”时,如图47所示,使用辅助参数xsel,SCU203_0从使用辅助参数BR#num所选择的矩形图像区BR中的192×3个像素数据中选择64个像素数据,以产生流数据,并在进行了预定像素数据选择处理后,将它写入输出缓冲器out_buf。
192个复用器MUX4分别接收使用辅助参数BR#num所选择的矩形图像区BR中的沿y方向上的3个相邻图像数据作为输入,使用辅助参数ysel选择1个像素数据,将该像素数据输出到64个复用器MUX3。
使用辅助参数xsel,64个复用器MUX3分别选择从复用器MUX4输入的沿x方向上的3个相邻图像数据中的一个像素数据,并将该像素数据输出到逻辑电路LOG151。
使用辅助参数wsel,逻辑电路LOG151确定是将从64个复用器MUX3输入的64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。
set#BR#64×4
例如,当执行来自主处理器101的输入数据转换命令“set#BR#64×4”时,如图48所示,使用辅助参数xsel,SCU 203_0从使用辅助参数BR#num所选择的矩形图像区BR中的256×1个像素数据中选择64个像素数据,以产生流数据,并在进行了预定像素数据选择处理后,将其写入输出缓冲器out_buf。
64个复用器MUX5分别接收使用辅助参数BR#num所选择的矩形图像区BR中的沿x方向上的4个相邻图像数据作为输入,使用辅助参数xsel选择1个像素数据,将该像素数据输出到逻辑电路LOG161。
使用辅助参数wsel,逻辑电路LOG161确定是将从64个复用器MUX5输入的64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD #0~#3装载4个像素数据。
set#BR#64×4×4
例如,在执行来自主处理器101的输入数据转换命令“set#BR#64×4×4”时,如图49所示,使用辅助参数xsel,SCU203_0从使用辅助参数BR#num所选择的矩形图像区BR中的256×4个像素数据中选择64个像素数据,以产生流数据,并在进行了预定像素数据选择处理后,将其写入输出缓冲器out_buf。
256个复用器MUX6分别接收使用辅助参数BR#num所选择的矩形图像区BR中的沿y方向上的4个相邻图像数据作为输入,使用辅助参数ysel选择1个像素数据,然后,将该像素数据输出到64个复用器MUX5。
使用辅助参数xsel,64个复用器MUX5分别选择从复用器MUX4输入的沿x方向上的4个相邻像素数据中的一个像素数据,并将该像素数据输出到逻辑电路LOG161。
使用辅助参数wsel,逻辑电路LOG161确定是将从64个复用器MUX5输入的64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。
set#BR#64×9
例如,当执行来自主处理器101的输入数据转换命令“set#BR#64×9”时,如图50所示,使用辅助参数xsel,SCU 203_0从使用辅助参数BR#num所选择的矩形图像区BR内的576×1个像素数据中选择64个像素数据,以产生流数据,并在进行了预定像素数据选择处理后,将其写入输出缓冲器out_buf。
64个复用器MUX7分别接收使用辅助参数BR#num所选择的矩形图像区BR中的沿x方向上的9个相邻像素数据作为输入,使用辅助参数xsel选择1个像素数据,将该像素数据输出到逻辑电路LOG171。
使用辅助参数wsel,逻辑电路LOG171确定是将从64个复用器MUX7输入的64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数1d,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。
set#BR#64×9×3
例如,在执行来自主处理器101的输入数据转换命令“set#BR#64×9×3”时,如图51所示,使用辅助参数xsel,SCU203_0从使用辅助参数BR#num所选择的矩形图像区BR中的576×3个像素数据中选择64个像素数据,以产生流数据,并在进行了预定像素数据选择处理后,将其写入输出缓冲器out_buf。
576个复用器MUX8分别接收使用辅助参数BR#num所选择的矩形图像区BR中的沿y方向上的3个相邻像素数据作为输入,使用辅助参数ysel选择1个像素数据,将该像素数据输出到64个复用器MUX7。
使用辅助参数xsel,64个复用器MUX7分别选择从复用器MUX8输入的沿x方向上的9个相邻像素数据中的一个像素数据,将该像素数据输出到逻辑电路LOG181。
使用辅助参数wsel,逻辑电路LOG181确定是将从64个复用器MUX7输入的64个像素数据原样写入输出缓冲器out_buf,还是封装每个像素数据Pixel的LSB的4位,以16个像素数据Pixel的方式存储它们。
使用辅助参数ld,SCU 203_0执行装载控制,以每次从输出缓冲器out_buf到PU_SIMD处理电路#0~#3装载4个像素数据。
SCU 203_0确定复用矩形图像区(写入时间)
在存储区的矩形图像区WR内,使用如图52所示的二维逻辑地址表示,SCU 203_0可以将矩形图像区CR和DR定义为复用矩形图像区。
作为表示位置关系的值,采用下面的坐标值。
ww表示矩形图像区WR的沿x方向上的矩形图像区的宽度。
cx、cy表示矩形图像区WR中的矩形图像区CR的二维坐标。它们表示将矩形图像区WR的左上顶点定义为原点(0,0)的坐标系中,位于矩形图像区CR的左上顶点的坐标。
cw和ch表示矩形图像区CR的宽度和高度。
dx和dy表示矩形图像区CR中的矩形图像区DR的二维坐标。它们表示在将矩形图像区CR的左上顶点定义为原点(0,0)的坐标系中的矩形图像区DR的左上顶点的坐标。
dw和dh表示矩形图像区DR的宽度和高度。
SCU 203_0定义矩形图像区DR的模式
SCU 203_0可以指定矩形图像区DR,以通过调整dx、dy和dw、dh的值,来使其位于矩形图像区CR的外部,如图53所示。
由于该原因,SCU 203_0可以从PU_SIMD处理电路#0~#3接收各种格式的流数据作为输入。
下面将说明表示SCU 203_0指定矩形图像区DR的形式的各种DR模式。
DR模式1:
当以DR模式1设置时,SCU 203_0可以将矩形图像区DR设置在矩形图像区CR的外部。
当矩形图像区DR位于矩形图像区CR外部时,SCU 203_0不将包括在外部区域内的像素对应位置的像素数据的值写入矩形图像区CR。
在矩形图像区CR中,使用下面的等式(10)定义矩形图像区DR中的像素数据。
等式10
If((x+dx>=cw)|(y+dy>ch))pixel(x,y)is not written intoCR
else CR(x+dx,y+dy)=pixel(x,y) ...(10)
DR模式2:
在以DR模式2进行设置的情况下,SCU 203_0可以将矩形图像区DR设置在矩形图像区CR的外部。
如图54所示,当沿x方向矩形,矩形图像区DR位于矩形图像区CR的外部时,SCU 203_0对要重叠回矩形图像区CR内部的外部区域进行控制。
此外。如图54所示,当沿x方向和y方向,矩形图像区DR位于矩形图像区CR的外部时,SCU 203_0不将矩形图像区DR中的像素数据写入矩形图像区CR。
在矩形图像区CR中,使用下面的等式(11),定义矩形图像区DR中的像素数据。
等式11
If(cw<=x+dx)&(y+dy<=ch-dh)CR(x+dx-cw,y+dy+dh)=pixel(x,y)
else if(cw<=x+dx)&(ch-dh<y+dy)pixel(x,y)is notwritten in CR
else if(ch<y+dx)pixel(x,y)is not written in CR
else CR(x+dx,y+dy)=pixel(x,y) ...(11)
对PU_SIMD处理电路#0~#3的输出数据的转换的处理
将PU_SIMD处理电路#0~#3输出的流数据写入输入缓冲器in_buf。
SCU 203_0从输入缓冲器in_buf读出数据,重新排列该数据,或对其进行其它数据转换处理,然后,将其写入矩形图像区DR。
此外,根据需要,SCU 203_0从输入缓冲器in_buf读出数据,根据屏蔽数据DR#mask,重新排列该数据,或对该数据进行其它数据转换处理,然后,将其写入矩形图像区DR。
SCU 203_0可以对每个PU_SIMD处理电路#0~#3指定上述转换处理。
SCU 203_0设置有用于记录屏蔽数据DR#mask的寄存器。
SCU 203_0设置有对应于每个PU_SIMD处理电路#0~#3的输入缓冲器in_buf。
SCU 203_0执行上述输出数据转换处理,即,例如,根据下表4所示的输出数据转换命令WO#data#op,用于将PU_SIMD处理电路#0~#3输出的流写入矩形图像区DR的处理。
SCU 203_0从图1所示的主处理器101接收输出数据转换命令作为输入,并执行该输出数据转换命令。
SCU 203_0可以在表4所示的每个输出数据转换命令中指定表5所示的辅助参数。
表4
输出数据转换命令 | DR矩形图像区宽度dw | DR矩形图像区高度dh |
set_DR_mask_64×1 | 64 | 1 |
set_DR_packed_64×1 | 64 | 1 |
set_DR_64×1 | 64 | 1 |
set_DR_128×1 | 64 | 1 |
set_DR_192×1 | 64 | 1 |
set_DR_256×1 | 64 | 1 |
表5
辅助参数 | 意义 |
DR_num | DR数(0..3) |
bsel[1:0] | 从存储在in_buf(0..15)中的4*64位中选择64位 |
psel[3:0] | 在DR区中指定像素写入数量、对准(alignment)、1跳行(skip)、2跳行、3跳行 |
下面,将分别说明上面的表4中所示的每个输出数据转换处理。
set#DR#mask#64×1
在每个输入缓冲器in_buf(0-15)中,写入从PU_SIMD #0~#3输入的64个像素数据。应当指出,使用4位表示1个像素数据。
在此,例如,每个输出缓冲器out_buf预先与图3所示的一个处理器单元PU链接。
如图55所示,SCU 203_0从构成每个像素数据的4位中选择1位,将这1位写入屏蔽寄存器MR11,作为64位屏蔽数据DR#mask。
当将处理器单元PU的输出写入矩形图像区DR时,将构成屏蔽数据DR#mask的每位用作屏蔽信息的像素数据单位。
例如,1位屏蔽数据DR#mask是“1”的情况指,将像素数据写入矩形图像区DR,而“0”的情况指,不写入像素数据。
当稍后说明的输出数据转换处理命令是set#DR#packed=64×1时,SCU 203_0将像素数据实际写入矩形图像区DR。
SCU 203_0将64位屏蔽数据DR#mask写入使用辅助参数DR#num选择的具有64位结构的屏蔽寄存器MR11。
此外,SCU 203_0将64位屏蔽数据DR#mask中其值是“1”的位的数量写入使用辅助参数DR#num选择的屏蔽大小寄存器MSR11。
因此,存储在屏蔽大小寄存器MSR11中的值是0~64之一。
如图55所示,在每个输入缓冲器in_buf(0-15)中,写入从相应处理器单元PU输入的64个像素数据。
使用辅助参数bsel,位选择器SEL11选择构成存储在输入缓冲器in_buf(0-15)中的64个像素数据的4~1位。存在4种选择。使每个像素数据选择同一位。
SCU 203_0将位选择器SEL11所选择的数据存储在使用辅助参数DR#num选择的屏蔽寄存器MR11中,作为屏蔽数据DR#mask。
set#DR#packed#64×1
将从相应处理器单元PU输入的64个像素数据分别写入图56所示的输入缓冲器in_buf(0-63)中。
根据存储在使用辅助参数DR#num选择的具有64位结构的屏蔽寄存器MR11中的屏蔽数据DR#mask,SCU 203_0的写控制电路WC11将存储在输入缓冲器in_buf中的像素数据写入使用辅助参数DR#num选择的矩形图像区DR。
此时,通过从矩形图像区DR的x坐标上的最小值开始顺序进行封装,写控制电路WC11写入与表示屏蔽数据DR#mask的“1”的位相对应的像素数据。
矩形图像区DR的宽度是64个像素数据,而高度是1个像素数据,但是将像素数据写入根据屏蔽数据DR#mask封装的矩形图像区DR中,因此,不总是将像素数据写入整个矩形图像区DR中。
set#DR#64×1
将从相应处理器单元PU输入的64个像素数据分别写入图57所示的每个输入缓冲器in_buf(0-63)中。
SCU 203_0将从输入缓冲器in_buf读出的64个像素数据写入使用辅助参数DR#num选择的矩形图像区DR。
在本实施例中,上述矩形图像区DR的大小是64×1个像素数据。
set#DR#128×1
将从相应处理器单元PU输入的64个像素数据分别写入图58所示的每个输入缓冲器in_buf(0-63)中。
根据辅助参数sel,SCU 203_0将从输入缓冲器in_buf读出的64个像素数据写入使用辅助参数DR#num选择的矩形图像区DR。
在本实施例中,上述矩形图像区DR的大小是128×1个像素数据。
在辅助参数psel=0的情况下,SCU 203_0将像素数据写到是矩形图像区DR的x坐标的2倍数的各坐标(像素对应位置)。
在辅助参数psel=1的情况下,SCU 203_0将像素数据写到是矩形图像区DR的x坐标的+1倍数的各坐标。
set#DR#192×1
将从相应处理器单元PU输入的64个像素数据分别写入图59所示的每个输入缓冲器in_buf(0-63)中。
根据辅助参数sel,SCU 203_0将从输入缓冲器in_buf读出的64个像素数据写入使用辅助参数DR#num选择的矩形图像区DR。
在本实施例中,上述矩形图像区DR的大小是192×1个像素数据。
在辅助参数psel=0的情况下,SCU 203_0将像素数据写到是矩形图像区DR的x坐标的3倍数的各坐标(像素对应位置)。
在辅助参数psel=1的情况下,SCU 203_0将像素数据写到是矩形图像区DR的x坐标的3+1倍数的各坐标。
当辅助参数psel=2的情况下,SCU 203_0将像素数据写到是矩形图像区DR的x坐标的3+2倍数的各坐标。
set#DR#256×1
将从相应处理器单元PU输入的64个像素数据分别写入图60所示的每个输入缓冲器in_buf(0-63)中。
根据辅助参数sel,SCU 203_0将从输入缓冲器in_buf读出的64个像素数据写入使用辅助参数DR#num选择的矩形图像区DR。
在本实施例中,上述矩形图像区DR的大小是256×1个像素数据。
在辅助参数psel=0的情况下,SCU 203_0将像素数据写到是矩形图像区DR的x坐标的4倍数的各坐标。
在辅助参数psel=1的情况下,SCU 203_0将像素数据写到是矩形图像区DR的x坐标的4+1倍数的各坐标。
在辅助参数psel=2的情况下,SCU 203_0将像素数据写到是矩形图像区DR的x坐标的4+2倍数的各坐标。
在辅助参数psel=3的情况下,SCU 203_0将像素数据写到是矩形图像区DR的x坐标的4+3倍数的各坐标。
SCU 203_0的操作序列
下面将说明图2、图3和图27所示SCU 203_0的操作序列。
应当指出,SCU 203_1~SCU 203_3与SCU 203_0基本相同。
SCU 203_0设置有4个内置处理器、4个程序存储器以及4个程序计数器。
SCU 203_0将从图1所示的主处理器101输入的程序存储在程序存储器中。
SCU 203_0的内置处理器从程序存储器读出程序,根据程序计数器执行程序。该程序包括上述数据转换命令WI#data#op和WO_data_op。
内置处理器是例如RISC处理器。
内置处理器指示PU_SIMD处理电路#0~#3开始进行处理。
内置处理器指定矩形图像区WR/AR/BR/CR/DR的地址和大小,与此同时,执行地址的附加、条件分支(condition branching)等。
内置处理器执行的命令由指令、操作数0和位移构成。
当执行结束命令时,内置处理器向主处理器101输出中断信号,结束程序的执行。
将说明SCU 203_0的内置处理器执行的命令。
如图61所示,内置处理器执行命令“exec”。
命令“exec”指定数据转换命令WI#data#op和WO#data#op以及WI#data#op#param和WO#data#op#param作为其参数。
命令“exec”用于指定DMA传输。
如图62所示,内置处理器执行命令“branch”。
命令“branch”包括无条件静态循环处理和条件处理。
在条件处理中,基于矩形图像区的坐标ax、ay、bx、by、cx、cy、dx、dy与立即值之间的比较结果,来判断该条件。
如图63所示,内置处理器执行命令“Set”。
命令“Set”定义例如矩形图像区ax、ay、aw、ah、bx、by、bw、bh的坐标指定和例如矩形图像区cx、cy、cw、ch、dx、dy、dw、dh的坐标指定,等等。
命令“Set”指定用于定义矩形图像区WR的bp、ww。
命令“Set”定义用于定义DMA区的传输侧开始地址、被传输侧开始地址以及传输大小。
如图64所示,内置处理器执行命令“add/sub”。
命令“add/sub”对矩形图像区ax、ay、aw、ah、bx、by、bw、bh等的坐标进行加法/减法运算,并对矩形图像区cx、cy、cw、ch、dx、dy、dw、dh等的坐标进行加法/减法运算。
此外,命令“add/sub”可以仅在dx加上可以从PU_SIMD处理电路#0~#3设置的值。
如图65(A)所示,作为特殊命令,内置处理器可以执行:仅使程序计数器递增的“不操作”;指示结束程序的“完成程序”等。
例如如图65(B)所示,定义数据转换命令即WI#data#op#param和WO#data#op#param的辅助参数。
与数据转换命令相对应,将辅助参数存储在SCU 203_0的存储器中。
如图66所示,通过执行命令“start PU_SIMD”,SCU 203_0使PU_SIMD #0~#3开始进行处理。
通过执行数据转换命令WI#data#op,SCU 203_0对从矩形图像区WR读出的数据进行转换,并将其输出到PU_SIMD处理电路#0~#3。
通过执行数据转换命令WO_data_op,SCU 203_0对从PU_SIMD #0~#3输入的数据进行转换,并将其写入矩形图像区WR。
在本实施例中,图1所示主处理器101指示SCU 203_0开始处理(线程)。
PU_SIMD(单指令多数据)处理电路#0~#3使用对应于PU_SIMD处理的各线程操作。SCU 203_0或主处理器101指示开始该线程。
将数据转换命令WI#data#op和命令WO_data_op以及由相关命令输入/输出的数据存储在如图67所示的SCU 203_0中的队列中,按顺序执行和处理。
即,内置处理器首先发出并执行用于存储区的读/写操作的命令。
然后,通过执行数据转换命令WI#data#op和WO#data#op,内置处理器执行地址处理,将其地址分别存储在队列中,用于进行读写操作。
此外,将读写操作附随的数据存储在队列中。
图像处理设备100的整个操作的例子
图1所示的主处理器101执行程序PRG,并据此在图2所示的SCU 203_0~203_3中指定程序。
分别基于通过执行主处理器101指定的程序而获得的4个预定线程,根据PU阵列202_0~202_3中的各PE的处理进度,SCU203_0~203_3访问存储器***105或本地存储器204_0~204_3。
在SCU 203_0~203_3或主处理器101的控制下,PU阵列202_0~202_3中的图3和图4所示各PE使用与SCU 203_0~203_3使用的线程不同的线程操作,但是使用SCU 203_0~203_3的存储器访问结果。
在PU阵列202_0~202_3中,SCU 203_0~203_3选择性地并联或串联连接PU_SIMD #0~#3,以便操作。
在PU_SIMD #0~#3中,如图4所示,串联连接16个PE,即,PE0~PE15。根据需要,相邻PE输入/输出像素数据。
如上所述,根据本实施例的图像处理设备100,图像处理引擎102使PU阵列202_0~202_3的各PU_SIMD(单指令多数据)单元使用共享的线程来操作,而使SCU 203_0~203_3使用与相关线程不同的线程操作。
由于该原因,可以预先规定对巨大像素数据的处理,利用多个处理器元件(PE)之间的相互独立性,基于相同的线程,在多个处理器元件之间并行执行处理。
通过设置将SCU 203_0~203_3的线程与PU阵列202_0~202_3的线程分开,在后面结束PE的处理时,可以有效地实现对与相关PE的处理有关的数据的存储区的访问。
根据图像处理引擎102,通过使SCU 203_0~203_3访问与PU阵列202_0~202_3的处理有关的数据的存储区,PU阵列202_0~202_3的各PE不必对该存储区执行访问处理,可以有效地进行图像处理。
根据图像处理引擎102,如图3所示,可以对处理器单元PU串联连接到其两端的处理器单元PU输入/输出像素数据,与此同时,如图4所示,处理器单元PU中串联连接的PE可以对位于两侧的PE输入/输出像素数据。由于该原因,与每个PE独立访问该存储器的情况相比,可以显著减少存储器的访问次数。
本发明并不局限于上述实施例。
即,在本发明的技术范围或其等同范围内,即使对上述实施例的各组件进行各种变形和替换,也可以实现本发明。
例如,在图2所示的例子中,说明了用于集中控制多个SCU203_0~203_3的控制处理器201的例子,但是如图68所示,也可以设置用于分别控制SCU 203_0~203_3的控制处理器201_0~201_3。
第二实施例
第二实施例的图像处理设备100与图1所示的第一实施例的图像处理设备100具有相同的结构,但是图像处理引擎102的结构与第一实施例的图像处理引擎102的结构不同。除了图像处理引擎102,图像处理设备100的结构与第一实施例的结构相同,因此,在此省略其说明。
下面将说明第二实施例的图像处理引擎102的结构。
图像处理引擎102
与第一实施例的方式相同,图像处理引擎102是可编程图像处理器,其根据在图像处理设备100中执行的应用程序,执行主处理器101指示的图像处理。
要进行图像处理的图像数据包括:照相机模块107捕获的通过传感器I/F 106输入的数据、存储在存储器***105中通过存储器I/F 104输入的数据、存储在存储介质109中通过存储介质I/F 108输入的数据、来自编解码器引擎103的数据以及在编解码器引擎103处理的数据。
图像处理引擎102通过存储器I/F 104将其自己的处理结果存储在存储器***105中,通过存储介质I/F 108将该处理结果存储在存储介质109中将它们输出到编解码器引擎103,通过内置显示装置I/F 110,将它们显示在内置显示装置111上,通过视频I/F 112将它们输出到外部设备。
图69是第二实施例的图像处理引擎102的总体结构图。
如图69所示,图像处理引擎102具有:控制处理器(CPU)201、PU(处理器单元)阵列202_0~202_3以及本地存储器204_0~204_3。
控制处理器201是用于控制整个图像处理引擎102的处理器,其负责设置并激活图像处理引擎102的组件,并在由PU阵列202构成的SIMD(单指令多数据)型处理器阵列执行难以并行进行的处理。
PU阵列202_0~202_3是可编程处理器,该可编程处理器由多个SIMD型处理器阵列构成,稍后将做说明。
此外,本实施例与第一实施例的PU阵列202_0~202_3的不同之处在于,在它们内部设置SCU(流控制单元),稍后将做说明。
本地存储器204_0~204_3是用于保持存储在存储器***105中的部分像素数据的、图像处理引擎102的工作存储器,其存储在PU阵列202_0~202_3处理的中间结果以及PU阵列202_0~202_3执行的程序,存储各种参数等。
例如,在主处理器101的控制下,图像处理引擎102使用共享的线程操作图69所示的PU阵列202_0~202_3。
“共享的线程”指基于例如共享程序进行处理。
PU阵列202_0~202_3
下面说明PU阵列202_0。
PU阵列202_1~202_3与PU阵列202_0具有相同的结构。
图70是图69所示PU阵列202_0的结构视图。
如图70所示,PU阵列202_0具有四个PU_SIMD(单指令多数据)处理电路#0~#3和连接到PU_SIMD的SCU#10~#13。
PU_SIMD处理电路#0具有控制单元303_0和4个处理器单元PU#00~PU#03。
四个处理器单元PU#00~#03构成通过同样命令操作的SIMD型处理器。
一维横向连接4个处理器单元PU#00~#03。
通过限制处理器单元PU#00~#03中相邻处理器单元之间的连接,并在4个处理器单元之间共享用于从SCU供给数据的I#BUS,可以减少互连,同时,可以容易地进行总线控制。
通过串联连接处理器单元PU#00~#03,在频繁使用相邻像素数据的图像处理中,可以将像素数据直接输出到相邻处理器单元,而无需通过本地存储器,因此可以缩短处理时间。
PU_SIMD处理电路#1~#3与PU_SIMD处理电路#0具有相同结构。
处理器单元PU#00
处理器单元PU#00的结构与参考图4说明的第一实施例的处理器单元PU#00的结构相同,因此,在此省略其说明。
将通过输入数据总线I_BUS0从SCU(流控制单元)#10输入到处理器单元PU#00的数据写入PU#00中的输入行缓冲器401。
使用从输入行缓冲器401读出的数据,每个处理器元件PE0~PE15分别进行处理,将处理结果写入输出行缓冲器404。
SCU#10从输出行缓冲器404读出处理结果。
如图70所示,PU阵列202_0可以独立并行地操作四个PU_SIMD处理电路#0~#3,或可以直接操作它们。在它们串行操作时,利用SCU之间的连接连接它们。
图70所示的控制单元303_0具有未示出的命令存储用存储器,其将通过对从命令存储用存储器读出的命令进行解码获得的控制信号输出到PU_SIMD #0中的全部PE。
控制单元303_0包括在此未示出的程序流控制用循环寄存器以及用于访问PE中的流寄存器的指针寄存器。
循环寄存器是用于控制程序中的循环数量的寄存器,控制处理器201可以设置循环寄存器,或在执行程序时使用命令来设置循环寄存器。
当使用命令设置循环寄存器时,可以将PE中的寄存器值指定为源操作数。此时,在多个PE中,使用先前确定的PE的寄存器值,该先前确定的PE例如是位于该图左端的PE,例如是处理器单元PU#00的PE0。
此外,对于指针寄存器,将PE中的寄存器值指定为源操作数,以与循环寄存器的情况相同的方式,使用特定PE的寄存器值。
这同样适用于控制单元303_1~303_3。
以存储使用照相机模块107捕获的静止图像的情况为例,说明图像处理设备100中的处理例程和处理分布。
通过每个水平扫描行的传感器I/F 106,读出照相机模块107中的图像捕获装置所捕获的数据,将其输出到图像处理引擎102,存储在存储器***105中。此时,图像处理引擎102执行部分波检测处理。
当将一帧大小的数据存储在存储器***105中时,在读取一帧大小图像数据的所需矩形图像区的同时,图像处理引擎102执行剩余波检测处理和各种照相机信号处理以及各种图像处理,以使内部PU_SIMD处理电路有效并行操作。
将图像处理引擎102的处理结果存储在存储器***105中。
图像处理引擎102还转换分辨率。通过内置显示装置I/F 110,将转换了分辨率的图像数据显示在内置显示装置111上。
使用图像处理引擎102处理的、存储在存储器***105中的多个帧的图像数据,编解码器引擎103进行图像压缩。通过存储介质I/F 108,将压缩了的图像数据存储在存储介质109中。
图像处理引擎102由多个PU阵列202_0~202_3构成。PU阵列202_0~202_3处理该帧上的不同区域。
与在本实施例中相同,当图像处理引擎由4个PU阵列202_0~202_3构成时,例如,如在第一实施例中参考图5所述,可以将各区域分配到PU阵列202_0~202_3。
每个PU阵列202_0~202_3分别具有多个如前所述由64个PE构成的PU_SIMD处理电路。例如,如在第一实施例中参考图6所述,将分别分配到每个PU阵列202_0~202_3的区域进一步分割为分别具有横向64像素宽度的矩形图像区。可以将每个像素分配到一个PE。
此时,每个PE沿对其本身分配的垂直方向按顺序处理像素串,如在第一实施例中参考图7所述。
例如,考虑如第一实施例中的图8所示,PU阵列202_0对5×5像素进行滤波的情况。
此时,如第一实施例中的图8所示,PU阵列202_0中的每个PE使用像素位置Pixel周围5×5像素位置的像素数据,对处理用的位于像素位置Pixel的像素数据进行滤波。
PU阵列202_0中的每个PE以图8所示箭头的方向(该图中向下的方向)顺序移动要处理的像素位置。
当PU阵列202_0中的每个PE结束在像素位置Pixel的上述5×5像素的滤波时,如第一实施例的图9中所示,SCU 203_0从本地存储器204_0或存储器***105读出位于下一行的像素位置的像素数据,将其写入图4所示PU阵列202_0中的处理器单元PU的输入行缓冲器401。
然后,PU阵列202_0中的每个PE分别对位于下一个像素位置Pixel_next的5×5像素的像素数据进行滤波,如第一实施例的图10中所示。
应当指出,在上面的说明中,集中说明了图70所示的PU_SIMD #0,而PU_SIMD #1~#3与PU_SIMD #0相同。
PU阵列202_1~202_3与PU阵列202_0相同。
处理器元件PE
接着,将说明PEn(n=1~14)。
应当指出,除了在PE之间PE0仅与PE1输入/输出数据外,PE0与PEn相同,而除了PE15仅与PE14输入/输出数据外,PE15也与PEn相同。
图71是第二实施例中的PEn的结构视图。
如图71所示,PEn具有:复用器MUX 1000和1001、例如流寄存器SR0~SR3的各种寄存器以及算术逻辑单元ALU。
输入行缓冲器401是用于接收从SCU(流控制单元)发送的输入数据的缓冲器。它可以保持一级(one stage)大小的16位数据每PE。
输出行缓冲器404是用于将PE中的处理结果发送到SCU的缓冲器。它可以保持一级(one stage)大小的16位数据每PE。
流寄存器SR0~SR3是分别具有16位宽度和16个入口的寄存器文件(register file),每个PE分别总共具有4个SR。
流寄存器SR0~SR3是用于存储主要由SCU供给的、进行处理所需的数据,以及临时备份处理结果的寄存器,通过使用直接地址指定进行访问,可以进行访问。最多可以分别对每个流寄存器定义4个指针。每个指针具有下面3个值。即,“开始值”,作为指针定义域的开始点,“结束值”,作为指针定义域的结束点,以及“当前值”,作为当前指针位置。应当指出,结束值必须等于或大于开始值。通过使两个指针的开始值和结束值相同,将一个用作读指针,另一个用作写指针,则其可以用作FIFO。此外,对每个指针,开始值和结束值可以改变。
此外,在同一个流寄存器中,对于完全独立的各指针,不禁止开始值和结束值指定的区域的互相重叠。
下面将说明与流寄存器SR0~SR3相关的功能。
1)访问流寄存器SR0~SR3
当对流寄存器SR0~SR3进行写或读时,存在两种访问方法,即,指针访问和直接访问。
指针访问是使用从指定指针的当前值的偏移进行访问。在读的情况下,偏移值是在0~15范围内的正整数,而在写的情况下,该偏移值是位于0~3范围内的正整数。
直接访问使用立即值(immediate value)指定流寄存器SR0~SR3中的入口。该立即值是位于0~15范围内的正整数。
2)指针操作
配备如下所述的用于实现指针操作的命令。
a)用立即值指定指针所保持的值
使用立即值指定开始值和结束值。
b)立即值与当前值相加
相加后的立即值是-8~7范围内的整数。
c)初始化指针保存的值
复位之后,将开始值、结束值以及当前值初始化为0、15和0。此外,配备用于将当前值初始化为开始值的命令。
3)回绕
当对流寄存器SR0~SR3执行指针访问或指针操作时,有时会超出<开始值,结束值>定义的区域。在这种情况下,执行下面的回绕处理。在此,当对流寄存器SR0~SR3的入口执行回绕处理之前和之后的指标是dxbw和idxaw时,下面成立。
idxaw=(idxbw>End)?
Start+(idxbw-End-1)%(End-Start+1):idxbw
idxaw=(idxbw<Start)?
End-(Start-idxbw-1)%(End-Start+1):idxbw
4)链接模式
可以将相同指针指定的指针定义域链接在一起,以供现有4个流寄存器SR0~SR3中的SR0和SR1或SR2和SR3的组合使用。例如,当链接用于SR0和SR1的组合的指针0时,将SR0用指针0的开始值和结束值确定的区域与SR1用指针0的开始值和结束值确定的区域链接在一起。当对特定指针指定链接模式时,仅流寄存器对中的偶数指针有效。当偶数指针值超过结束值时,自动将该指针值改变到奇数侧指针域。可以使用它,就像两个区域连续一样。此外,在超出奇数侧指针区域的结束值时,实现自动改变到偶数侧开始值的回绕功能。使用该功能,可以有效使用这两个流寄存器的空区域,可以定义超过16个入口的指针区域。当将链接模式设置为指针的操作模式时,只能使用偶数侧指针。不以流寄存器为单位设置链接模式,而以指针为单位设置链接模式。因此,指针的链接模式的设置互相独立。
将简单说明PE的其它寄存器。
寄存器S0~S3是各具有16位长度的4个通用寄存器。当对32位数据进行处理时,两个连续寄存器,即S0和S1,或S2和S3,可以是作为寄存器对指定的操作数。
寄存器TEMPS是具有16位数据长度的临时备份用寄存器。
寄存器TEMPS是在利用共享功能单元403时使用的寄存器。在访问共享功能单元403之外的情况下,其可以用作工作寄存器。可以使用算术逻辑处理命令的源操作数和目标操作数二者指定这些寄存器。
寄存器COND是具有4位数据长度、主要在有条件执行时使用的条件寄存器。可以将其指定为算术逻辑处理的目标操作数。此时,选择该处理结果、算术逻辑单元ALU的处理结果、表示进行进位的进位标志、或表示处理结果是0的0标志中的任意位,并指定条件寄存器中的哪位反映它。
寄存器PENUM是具有6位数据长度、用于存储处理元件号码(0~63)的只读型处理器号码寄存器。
如图71中的Const所述的路径是当寄存器CONSTANT被指定为源操作数时用于传输常数值的路径,其具有16位宽度。寄存器CONSTANT由多个寄存器构成。不对每个PE设置寄存器CONSTANT,而在SCU中设置寄存器CONSTANT。
在进行处理时,PE不仅可以访问其自己的寄存器,而且还可以访问相邻PE的寄存器。即,PE1可以参考PE0和PE2的寄存器。应当指出,相邻PE只能访问通用寄存器S0~S3。在图71中,被称为到左侧PE和到右侧PE的路径是用于将通用寄存器S0~S3的值传输到左侧相邻PE和右侧相邻PE的路径。此外,被称为来自左侧PE和来自右侧PE的路径是从左侧相邻PE和右侧相邻PE接收所选择的寄存器值的路径。在本实施例中,PE对左侧相邻PE和右侧相邻PE设置了不同的复用器,因此,可以在同一个周期不同地访问不同的左侧通用寄存器和右侧通用寄存器,从而能快速执行处理。应当指出,PE0和PE15只能访问左侧或右侧PE。
接着,将说明算术逻辑单元ALU。
如图71所示,PE有3种算术逻辑单元,且PE可以使用这3种算术逻辑单元同时进行处理。这3种算术逻辑单元是:用于进行乘法的单元,即,运算符资源(operator Resource)M;主要用于进行加法/减法和比较运算的单元,即,运算符资源A/B;以及主要用于进行逻辑处理和移位的单元,即,运算符资源L。
SCU将在PE中进行处理所需的数据写入输入行缓冲器401。输入行缓冲器401的容量是每PE16位宽度的1级大小。此外,将在PE的处理结果写入输出行缓冲器404。与输入行缓冲器401的方式相同,输出行缓冲器404的容量是每PE16位宽度的1级大小。
使用装载命令,PE将写入输入行缓冲器401的数据传输到流寄存器SR0~SR3。可以从寄存器COND装载流寄存器SR0~SR3,而不是从输入行缓冲器装载。相反,还配备用于将数据从流寄存器SR0~SR3移动到COND的命令。
通常,通过直接指定处理命令的目标操作数对输出行缓冲器404进行写入,但还配备了用于将数据从寄存器COND移动到输出行缓冲器404的命令。
与算术逻辑单元ALU执行的处理并行,进行这些数据传输。
即,在第二实施例的PE中,可以同时执行多个处理。
共享功能单元403与第一实施例中说明的共享功能单元403相同,因此省略其说明。
SCU(流控制单元)#10~#13
下面将说明SCU#10。
SCU#11~#13与SCU#10相同。
如图70等所示,SCU#10进行控制,以关于多个PU_SIMD(单指令多数据)处理电路#0有效地输入/输出构成PU_SIMD处理电路#0的各处理器元件PE的处理所需的数据。
以同样的方式,SCU#11进行控制,以关于PU_SIMD处理电路#1有效地输入/输出构成PU_SIMD处理电路#1的各处理器元件PE的处理所需的数据,SCU#12进行控制,以关于PU_SIMD处理电路#2有效地输入/输出构成PU_SIMD处理电路#2的各处理器元件PE的处理所需的数据,SCU#13进行控制,以关于PU_SIMD处理电路#3有效地输入/输出构成PU_SIMD处理电路#3的各处理器元件PE的处理所需的数据。
SCU#10将进行处理所需的数据存储在例如半导体存储器等的存储装置中。
PU_SIMD处理电路#0~#3是SIMD型处理器,因此,在时间上,同时执行对全部P E的输入/输出操作。因此,SCU#10对PU_SIMD #0进行输入/输出是同时输入/输出PE数量的输入/输出数据。下面将同时输入/输出的数据称为流数据。
另一方面,PU_SIMD处理电路#0~#3主要执行图像信息的处理,将要处理的图像信息存储在使用一维物理地址管理的、而且保证二维逻辑存储区的存储区中的存储器或其它存储装置中。将该图像数据的基本单位称为像素数据。
SCU#10位于PU_SIMD处理电路#0与存储器***105和本地存储器204_0之间,其具有将多个像素数据转换为输入/输出用流数据的功能。
接着,将说明SCU#10的结构。
图72是示出SCU#10的结构的框图。
如图72所示,SCU#10配置有:写部分#101、读部分#102以及控制单元#103。
写部分#101对本地存储器204_0或存储器***105(下文中称为存储区)进行写入。
读部分#102从存储区进行读取。
控制单元#103是用于SCU#10的总体控制的CPU或其它控制装置,其进行数据处理,将数据提供到PU_SIMD处理电路#0。
下面说明SCU#10在存储区中定义的矩形图像区。
将参考图73说明SCU#10处理的存储区中的矩形图像区的分层结构。
如图73所示,SCU#10将矩形图像区WIR指定为存储区中的输入工作区。
SCU#10将矩形图像区BR指定为矩形图像区WIR中的像素数据的读出侧。
SCU#10执行(指定)数据转换命令WI#data#op,以基于从主处理器101输入的程序,将从矩形图像区BR读出的像素数据转换为PU_SIMD处理电路#0~#3所需的流数据。
SCU#10可以对指定矩形图像区BR以及WI_data_op的一系列重复处理进行编程,如稍后说明。
如图73所示,SCU#10指定矩形图像区WOR,作为存储区中的输出工作区。
SCU#10指定矩形图像区DR,作为在矩形图像区WOR中的像素数据的写目的地。
SCU#10对从PU_SIMD #0输出到矩形图像区DR的流数据执行数据转换命令WO#data#op。
SCU#10可以对指定矩形图像区DR以及WO_data_op的一系列重复处理进行编程,如稍后所述。
SCU#10可以将矩形图像区BR排列和移动到矩形图像区WIR上的任意位置,而将矩形图像区DR排列和移动到矩形图像区WOR上的任意位置,。
使用矩形图像区WIR或WOR中的二维逻辑坐标,SCU#10可以指定矩形图像区BR或DR。
使用物理地址,SCU#10可以指定存储区的矩形图像区WIR或WOR。
但访问矩形图像区WIR、WOR、BR和DR内的像素数据时,需要访问存储区,因此SCU#10执行从逻辑地址到物理地址的转换,并访问存储区。
图74是用于说明用于对在SCU#10内设置的复用矩形图像区进行处理的功能的图。
如图74所示,SCU#10将存储区中的矩形图像区WIR0和WOR0分配到PU_SIMD处理电路#0。
在例如存储器***105和本地存储器204_0的存储区中定义矩形图像区WIR0和WOR0。
此外,本实施例的SCU#10可以在存储区中确定WIR0~WIR7的8种WIR和WOR0~WOR7的8种WOR。此外,在矩形图像区WIR0~WIR7中,逐一定义矩形图像区BR0~BR7,而在WOR0~WOR7中,逐一定义DR0~DR7。
使用数据转换命令WI_data_op,图72所示的SCU#10将矩形图像区BR上的数据转换为流数据,将其写入输出缓冲器out_buf。
此外,使用数据转换命令WO#data#op,SCU#10对从PU_SIMD处理电路#0输入的、存储在输入缓冲器in#buf中的流数据进行数据转换,并将其写入矩形图像区DR。
如上参考图72所述,通过以分层结构方式在矩形图像区WIR中定义矩形图像区BR,在WOR上定义DR,例如,当在矩形图像区WIR中相对移动矩形图像区BR,在矩形图像区WOR中相对移动矩形图像区DR时,通过将标准坐标与矩形图像区BR和DR中的局部坐标相加,可以表示该地址,且编程变得简单。
在本实施例中,使用特定数值表示矩形图像区的数量、复用指定分层级数等,但是可以将该结构和其数量做任意组合。可以根据各种图像处理的要求,改变该结构。
即,第一实施例的SCU 203_3在矩形图像区中设置AR或CR,并在其中进一步设置BR或DR,但是根据第二实施例的SCU#10,在WR中没有设置AR和CR,但是设置了BR和DR,因此,简化了SCU#10的操作,加快了操作速度。
接着,将说明SCU#10为了进行数据传输而执行的连接。
***总线的连接
图1所示的***总线113是用于将SCU#10连接到例如主处理器101的另一个处理模块和存储器***105的总线,其具有下面的特性特征。
(1)在LSI或SOC内,***总线113可以采用已有的总线标准。
(2)***总线113的总线宽度是128位。通过采用可以连续进行数据传输(突发传输)的配置,可以提高总线使用效率。
(3)作为总线主设备,SCU 203_0访问***总线113上的存储装置(例如,存储器***105)。
(4)***总线113上的SCU#10之外的总线主设备访问SCU#10的内部寄存器或SCU专用存储装置(例如,本地存储器204_0)。
(5)只要满足数据传输效率和功能,可以不基于总线标准选择***总线113。
SCU#10的专用存储区的连接
SCU#10可以连接到作为专用存储区的专用存储装置。
专用存储装置可以是位于SOC内部或外部的SRAM或DRAM或其它半导体存储器。
上述专用存储装置连接到其带宽比***总线113的带宽宽的总线。
为了仅供一个SCU#10使用,配备该专用存储装置。
***总线113上的总线主设备可以访问该专用存储装置。
PU_SIMD连接
PU_SIMD处理电路#0通过总线连接到SCU#10。
以同样的方式,PU_SIMD处理电路#1通过总线连接到SCU#11,PU_SIMD处理电路#2通过总线连接到SCU#12,PU_SIMD处理电路#3通过总线连接到SCU#13。
使用PU_SIMD处理电路#0的256位单向总线,将流数据从SCU#10输入到PU_SIMD处理电路#0。传输效率是256位/时钟。
采用双线型握手作为数据/传输协议。
在SCU#10内,设置有输出缓冲器out_buf。
在从SCU#10输出的情况下,通过在PU_SIMD处理电路#0中指定地址,识别PU_SIMD处理电路的内部寄存器。
使用每个PU_SIMD的256位单向总线,将流数据从PU_SIMD处理电路#0输入到SCU#10。传输效率为256位/时钟。
此外,采用双线型握手作为数据/传输协议。
在SCU#10内设置有输入用输入缓冲器in_buf。
在从PU_SIMD处理电路#0向SCU#10输入的情况下,通过在PU_SIMD中指定地址,识别PU_SIMD处理电路内部寄存器。
SCU#10的物理/逻辑地址的转换
使用二维逻辑地址表示位于SCU#10访问的、使用图73和图74说明的存储区中的矩形图像区WR内的像素对应位置Pixel,但是使用物理地址表示存储器***105和本地存储器204_0。因此,当对在矩形图像区WR中的矩形图像区AR、BR、CR和DR内指定的像素对应位置Pixel进行读或写操作时,SCU#10执行从二维逻辑地址到物理地址的地址转换。
该地址转换方法与第一实施例的地址转换方法相同,因此,在此省略其说明。
SCU#10访问存储区
SCU#10可以将存储器***105用作连接到***总线113的大规模外部存储装置,而将本地存储器204_0用作连接到***总线113的小规模专用存储装置,它们作为如上所述的存储区。
例如,存储器***105是连接到包括SCU#10的SOC的外部的DRAM芯片。它是例如通用DDR或RAMBUS的存储器芯片。
例如,本地存储器204_0是在包括SCU#10的SOC的内部的SRAM或eDRAM(嵌入式DRAM:与SCU包括在同一个SOC上的片上DRAM)。
通常,DRAM具有分层的地址结构,例如,行/列/体。其特征在于,包括在同一行上的连续数据访问是高速的,但是跨越行边界的连续数据访问和远方行的连续访问要求预装页的处理,因此,速度低。
在本实施例中,例如,SCU#10使用DRAM作为存储器***105和本地存储器204_0,但是如果使用SRAM,也不存在问题。此外,当使用DRAM时,为了防止上述访问性能发生不连续,通过在产生流数据时在同一页的存储区中尽可能多地排列像素数据的矩形图像,可以尽可能减少DRAM访问的不连续。
例如,这可以使用在第一实施例中说明的方法实现。
SCU#10定义复用矩形图像区(读取时间)
如上所述,使用如图75所示的二维逻辑地址表示,SCU#10可以将存储区中的矩形图像区WIR中的矩形图像区BR定义为复用矩形图像区。
将WIR定义为可以在该存储区中进行物理寻址的连续区域。
此外,通过进行逻辑寻址,SCU定义WIR内的像素的指定。
在此,使用16位的固定大小,对像素进行逻辑寻址。应当指出,为了减少存储区的信息量,可以使用12位或8位表示1个像素。在这种情况下,应该注意存储区与SCU的内部部分之间的像素表示的不同(例如,在存储区中是8位/像素的情况下,SCU内部的1个像素等效于该存储区中的2个像素)。
此外,可以在WIR中定义BR。
在WIR中,使用逻辑地址空间定义BR。
BR不是WIR的部分复制,通过进行地址映射转换来访问BR。
当定义BR时,可以将它确定在WIR外部,但是如果位于外部,则不保证像素值。
存在BR0~BR7,8种BR。
使用每个BRn(n=0~7)的矩形的左端坐标(图75所示的bx、by)来指定BR区。
使用wi_data_op,在下面的8种中,指定BR区的矩形大小。即,它是沿水平方向包括16、32、48和64个像素,而沿垂直方向包括1个像素的各区域,或沿水平方向包括1个像素,而沿垂直方向包括16、32、48和64个像素的各区域之一。
作为表示位置关系的值,使用下面的坐标值。
wirw是矩形图像区WR的x方向上的矩形图像区的宽度。
bx、by表示矩形图像区WIR中的矩形图像区BR的二维坐标。使用矩形图像区WIR的左上顶点为原点(0,0)的坐标系表示位于矩形图像区BR的左上顶点的像素对应位置Pixel的坐标。
bw和bh表示矩形图像区BR的宽度和高度。
x、y表示矩形图像区BR中的像素对应位置Pixel的二维坐标。这是以矩形图像区BR的左上顶点为原点(0,0)的坐标系。
SCU#10对PU_SIMD #0进行数据输入处理
SCU#10从矩形图像区BR读出像素数据Pixel(bx,by),将其转换为数据流数据(执行输入数据转换处理),将该数据流数据输入到PU_SIMD处理电路#0。该处理与在第一实施例中说明的处理相同,因此,省略其说明。
SCU#10定义复用矩形图像区(写入时间)
在存储区的矩形图像区WOR中,使用如图76所示的二维逻辑地址表示,SCU#10可以将矩形图像区DR定义为复用矩形图像区。
WOR被定义为可以在存储区中进行物理寻址的连续区域。
此外,通过进行逻辑寻址,SCU定义WOR内的像素的指定。
在此,使用16位的固定大小,对像素进行逻辑寻址。应当指出,为了减少存储区的信息量,可以使用12位或8位表示1个像素。在这种情况下,应该注意存储区与SCU的内部部分之间的像素表示的不同(例如,在存储区中是8位/像素的情况下,SCU内部的1个像素等效于该存储区中的2个像素)。
此外,可以在WOR内定义DR。
在WOR内,使用逻辑地址空间定义DR。
DR不是WIR的部分复制,通过进行地址映射转换来访问DR。
当定义DR时,可以将它确定在WOR外部,但是如果位于外部,则不保证像素值。
存在DR0~DR7,8种DR。
使用每个DRn(n=0~7)的矩形的左端坐标(图76所示的dx、dy)来指定DR区。
使用wo_data_op,在下面的8种中,指定DR区的矩形大小。即,它是沿水平方向包括16、32、48和64个像素,而沿垂直方向包括1个像素的各区域,或沿水平方向包括1个像素,而沿垂直方向包括16、32、48和64个像素的各区域之一。
作为表示位置关系的值,采用下面的坐标值。
worw是矩形图像区WOR的x方向上的矩形图像区的宽度。
dx、dy表示矩形图像区WOR中的矩形图像区DR的二维坐标。在以矩形图像区WR的左上顶点为原点(0,0)的坐标系中,dx、dy示出矩形图像区DR的左上顶点的坐标。
dw和dh表示矩形图像区DR的宽度和高度。
对PU_SIMD处理电路#0的输出数据的转换的处理
将PU_SIMD处理电路#0输出的流数据写入输入缓冲器in_buf。
SCU#10从输入缓冲器in_buf读出数据,重新排列该数据,或对其进行其它数据转换处理,然后,将其写入矩形图像区DR。
此外,根据需要,SCU#10从输入缓冲器in_buf读出数据,根据屏蔽数据DR#mask重新排列该数据或对该数据进行其它数据转换处理,然后,将它写入矩形图像区DR。
该处理与第一实施例中SCU 203_0执行的处理相同,因此,省略其说明。
图像处理设备100的整个操作的例子
图1所示的主处理器101执行程序PRG。由于该原因,在图70所示的SCU#10~#13中指定程序。
根据PU阵列202_0~202_3中的各PE的处理进度,分别基于通过执行主处理器101指定的程序所获得的4个预定线程,SCU#10~#13访问存储器***105或本地存储器204_0~204_3。
在SCU 203_0~203_3或主处理器101的控制下,PU阵列202_0~202_3中的各PE使用与SCU#10~#13使用的线程不同的线程操作,而使用SCU#10~#13的存储器访问结果。
在PU阵列202_0~202_3中,SCU#10~#13与PU_SIMD#0~#3连接在一起操作。
在PU_SIMD #0~#3中,串联连接16个PE,即,PE0~PE15,根据需要,在相邻PE之间输入/输出像素数据。
如上所述,根据本实施例的图像处理设备100,图像处理引擎102使用共享的线程操作PU阵列202_0~202_3中的各PU_SIMD(单指令多数据)单元,而使用与相关线程不同的线程操作SCU#10~#13。
由于该原因,可以预先规定对巨大像素数据的处理,利用多个处理器元件(PE)之间的相互独立性,基于相同的线程,在多个处理器元件之间并行执行处理。此外,在第二实施例的PE中,可以同时执行多个处理,因此,总体提高了该设备的处理速度。
通过与PU阵列202_0~202_3的线程分开设置SCU#10~#13的线程,在后面结束PE的处理时,可以有效访问与相关PE的处理有关的数据的存储区。
根据图像处理引擎102,通过使SCU#10~#13访问与PU阵列202_0~202_3的处理有关的数据的存储区,PU阵列202_0~202_3的各PE不必对该存储区执行访问处理,从而可以有效进行图像处理。
根据图像处理引擎102,可以对处理器单元PU串联连接到其两端的处理器单元PU输入/输出像素数据,与此同时,处理器单元PU中串联连接的PE可以对位于两侧的PE输入/输出像素数据。由于该原因,与每个PE独立访问该存储器的情况相比,可以显著减少存储器的访问次数。
此外,根据第二实施例的图像处理设备100,分别对每个PU_SIMD分配SCU,并单独进行处理,因此,减少了对SCU施加的负荷,并因此缩短了进行图像处理花费的时间。
此外,根据第二实施例的图像处理设备100,在SCU#10~#13的存储区中定义的复用矩形图像区仅是WR和BR(或DR)的二倍,因此,简化了处理,减小了对整个图像处理设备100施加的负荷,缩短了进行处理所需的时间。
本发明并不局限于上述实施例。
即,在本发明的技术范围或其等同范围内,即使在对上述实施例的各组件进行各种变形和替换时,也可以实现本发明。
在上述实施例中,以对大量数据进行图像处理为例进行了说明,但是本发明还可以应用于图像处理之外的各种数据处理。
即,本发明可以应用于各种信号处理,在像在PU_SIMD处理电路中一样,使用多个分别具有多个处理器元件PE的处理器单元PU,以分散的方式执行信号处理时,在保持完整性的同时,将数据从存储部件有效地提供到每个处理器单元PU中的每个处理器元件PE,或相反,将数据从处理器元件PE写入存储部件。
本实施例中说明的PU阵列202_0~202_3、SCU 203_0~203_3、处理器单元PU以及处理器元件P E的数量可以是任意数量。
Claims (18)
1.一种信号处理设备,其包括:
存储单元,
输入/输出数据控制单元(SCU),用于控制从至少一个所述存储单元中的预定存储单元读取数据和/或将数据写入至少一个所述存储单元中的预定存储单元,以及
信号处理单元(PU阵列或PU_SIMD),用于对所述输入/输出数据处理单元读出的数据进行预定信号处理,其中
所述输入/输出数据控制单元和所述信号处理单元基于不同的线程工作。
2.根据权利要求1所述的信号处理设备,其特征在于,
所述信号处理单元具有多个SIMD(单指令多数据)型信号处理电路(PU),
所述多个信号处理电路互相串联连接,以及
基于所述输入/输出数据控制单元从所述存储单元读出并输入到所述信号处理单元的数据,所述多个信号处理电路之一执行所述预定处理,并与邻接的其它信号处理电路传输数据。
3.根据权利要求2所述的信号处理设备,其特征在于,所述输入/输出数据控制单元可以选择性地串联连接或并联连接所述多个信号处理电路中的至少一个信号处理电路。
4.根据权利要求2所述的信号处理设备,其特征在于,包括:
预定数量的所述信号处理单元,以及
与所述信号处理单元相同数量的所述输入/输出数据处理单元。
5.根据权利要求2所述的信号处理设备,其特征在于
所述输入/输出数据控制单元具有内置存储器,以及
当所述多个信号处理电路之一的处理电路使用另一处理电路的结果时,所述输入/输出数据控制单元将所述另一处理电路的结果写入所述内置存储器,并将所述结果从所述内置存储器读到所述处理电路。
6.根据权利要求2所述的信号处理设备,其特征在于,
所述多个信号处理电路具有预定数量的信号处理元件(PE),
所述预定数量的信号处理元件互相串联连接,以及
基于所述输入/输出数据控制单元从所述存储单元读出并输入到所述信号处理单元的数据,所述多个信号处理元件之一执行所述预定处理,并与邻接的其它信号处理电路传输数据。
7.根据权利要求2所述的信号处理设备,其特征在于,
所述数据是图像数据;
所述多个信号处理电路是用于处理图像数据的电路;以及
所述输入/输出数据控制单元:
在所述存储单元中分层地定义矩形图像数据存储区,
使用局部二维地址在所述矩形图像数据存储区中管理所述矩形图像数据存储区内的地址,
基于示出所述矩形图像数据存储区在所述存储区中的位置的基准地址和所述二维地址,产生一维地址,以及
基于所述一维地址,访问存储在所述存储单元中的图像数据。
8.根据权利要求1所述的信号处理设备,其特征在于,
所述数据是图像数据,
所述多个信号处理电路是用于处理图像数据的电路,以及
所述输入/输出数据控制单元具有:
转换器(控制器),用于从所述存储单元读出图像数据,将其转换为可以输出到所述信号处理单元的格式,并/或将从所述信号处理单元输入的图像数据转换为可以存储在所述存储单元中的格式,
第一缓冲器,用于在将从所述存储部件读出并被所述转换器转换后的图像数据输出到所述信号处理单元之前,临时保持该图像数据,以及
第二缓冲器,用于在将从所述信号处理单元输入并被所述转换器转换后的图像数据写入所述存储单元之前,临时保持该图像数据。
9.根据权利要求6所述的信号处理设备,其特征在于,
所述数据是图像数据,
所述多个信号处理电路是用于处理图像数据的电路,
所述输入/输出数据控制单元将构成从所述存储单元读出的图像数据的多个部分图像数据输出到相应的多个信号处理元件。
10.根据权利要求7所述的信号处理设备,其特征在于,所述输入/输出数据控制单元将从预先在所述矩形图像数据存储区中设置的多个基准地址中选择的基准地址输出到所述多个处理电路。
11.根据权利要求7所述的信号处理设备,其特征在于,所述输入/输出数据控制单元:
从所述存储单元读出所述基准地址;以及
基于所述读出的基准地址,管理对所述矩形图像数据存储区的访问。
12.根据权利要求8所述的信号处理设备,其特征在于,所述输入/输出数据控制单元:
所述多个信号处理电路中的每一个具有所述第一和第二缓冲器;以及
从对应于任意信号处理电路的第二缓冲器读出所述任意信号处理电路输出的数据,将其写入对应于另一信号处理电路的第一缓冲器。
13.根据权利要求1所述的信号处理设备,其特征在于,所述输入/输出数据控制单元指示开始执行所述多个信号处理电路的所述第一线程。
14.根据权利要求13所述的信号处理设备,其特征在于,每个所述信号处理元件具有:
算术逻辑电路,用于进行算术运算和/或逻辑运算,
第一寄存器,用于存储从被所述信号处理元件串联连接的另外两个信号处理元件和所述输入/输出数据控制单元输入的数据,以及
第二寄存器,用于存储从所述第一寄存器读出的、将被选择性地输出到所述另外两个信号处理元件、所述算术逻辑电路以及所述输入/输出数据控制单元中的任一个的数据。
15.根据权利要求14所述的信号处理设备,其特征在于,所述第一寄存器是指针访问型寄存器。
16.根据权利要求15所述的信号处理设备,其特征在于,并行执行在所述算术逻辑电路中的所述运算处理与对所述第一寄存器和所述第二寄存器的加载和存储。
17.根据权利要求16所述的信号处理设备,其特征在于,多个所述第一寄存器中的至少一个所述第一寄存器是用于设置用于控制所述算术部件执行的所述运算处理的控制标志的寄存器。
18.一种信号处理设备,其包括:
主处理电路,
存储单元,
输入/输出数据控制单元(SCU),用于控制从至少一个所述存储单元中的预定存储单元读取数据和/或将数据写入至少一个所述存储单元中的预定存储单元;以及
信号处理单元(PU阵列或PU_SIMD),用于对所述输入/输出数据处理单元读出的数据进行预定信号处理,其中
基于公用第一线程,所述信号处理单元在所述主处理电路或所述输入/输出数据控制单元的控制下工作,以及
基于与所述第一线程分离的第二线程,所述输入/输出数据控制单元在所述主处理电路的控制下工作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP148301/2005 | 2005-05-20 | ||
JP2005148301 | 2005-05-20 | ||
PCT/JP2006/310174 WO2006123822A1 (ja) | 2005-05-20 | 2006-05-22 | 信号処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1993709A true CN1993709A (zh) | 2007-07-04 |
CN1993709B CN1993709B (zh) | 2010-12-15 |
Family
ID=37431382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800005263A Active CN1993709B (zh) | 2005-05-20 | 2006-05-22 | 信号处理设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8464025B2 (zh) |
EP (1) | EP1883045A4 (zh) |
JP (1) | JP4893621B2 (zh) |
KR (1) | KR101270925B1 (zh) |
CN (1) | CN1993709B (zh) |
WO (1) | WO2006123822A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103065611A (zh) * | 2011-10-20 | 2013-04-24 | 三星电子株式会社 | 显示控制器和包括该显示控制器的显示装置 |
CN103221937A (zh) * | 2010-11-18 | 2013-07-24 | 德克萨斯仪器股份有限公司 | 用于处理集群的加载/存储电路 |
CN104837006A (zh) * | 2014-02-11 | 2015-08-12 | 京元电子股份有限公司 | 半导体元件测试***及其影像处理加速方法 |
CN109298886A (zh) * | 2017-07-25 | 2019-02-01 | 合肥君正科技有限公司 | Simd指令执行方法、装置及处理器 |
CN112368687A (zh) * | 2018-06-29 | 2021-02-12 | 索尼公司 | 信息处理设备、信息处理方法和程序 |
US11102436B2 (en) | 2016-10-31 | 2021-08-24 | Sony Semiconductor Solutions Corporation | Solid-state imaging device and signal processing method thereof, and electronic device |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070294510A1 (en) * | 1999-04-09 | 2007-12-20 | Dave Stuttard | Parallel data processing apparatus |
US8171263B2 (en) * | 1999-04-09 | 2012-05-01 | Rambus Inc. | Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions |
JP5285828B2 (ja) * | 1999-04-09 | 2013-09-11 | ラムバス・インコーポレーテッド | 並列データ処理装置 |
US7506136B2 (en) * | 1999-04-09 | 2009-03-17 | Clearspeed Technology Plc | Parallel data processing apparatus |
US7966475B2 (en) | 1999-04-09 | 2011-06-21 | Rambus Inc. | Parallel data processing apparatus |
US20080162874A1 (en) * | 1999-04-09 | 2008-07-03 | Dave Stuttard | Parallel data processing apparatus |
US8169440B2 (en) | 1999-04-09 | 2012-05-01 | Rambus Inc. | Parallel data processing apparatus |
US20080162875A1 (en) * | 1999-04-09 | 2008-07-03 | Dave Stuttard | Parallel Data Processing Apparatus |
US8174530B2 (en) * | 1999-04-09 | 2012-05-08 | Rambus Inc. | Parallel date processing apparatus |
US20070242074A1 (en) * | 1999-04-09 | 2007-10-18 | Dave Stuttard | Parallel data processing apparatus |
US8762691B2 (en) | 1999-04-09 | 2014-06-24 | Rambus Inc. | Memory access consolidation for SIMD processing elements using transaction identifiers |
US7526630B2 (en) | 1999-04-09 | 2009-04-28 | Clearspeed Technology, Plc | Parallel data processing apparatus |
US7802079B2 (en) | 1999-04-09 | 2010-09-21 | Clearspeed Technology Limited | Parallel data processing apparatus |
US8643661B1 (en) * | 2006-06-21 | 2014-02-04 | Marvell International Ltd. | Non raster row pixel processing |
US7952588B2 (en) * | 2006-08-03 | 2011-05-31 | Qualcomm Incorporated | Graphics processing unit with extended vertex cache |
US8009172B2 (en) * | 2006-08-03 | 2011-08-30 | Qualcomm Incorporated | Graphics processing unit with shared arithmetic logic unit |
US7787021B2 (en) * | 2006-10-30 | 2010-08-31 | Texas Instruments Incorporated | Programmable architecture for flexible camera image pipe processing |
US7797514B2 (en) * | 2006-11-16 | 2010-09-14 | Texas Instruments Incorporated | Scalable multi-threaded sequencing/synchronizing processor architecture |
JP2010003151A (ja) * | 2008-06-20 | 2010-01-07 | Renesas Technology Corp | データ処理装置 |
JP5100611B2 (ja) * | 2008-10-28 | 2012-12-19 | 株式会社東芝 | 画像処理装置 |
US8797376B2 (en) * | 2010-05-28 | 2014-08-05 | Polycom, Inc. | Videoconferencing system with enhanced telepresence using a single wide aspect ratio camera |
KR101048413B1 (ko) * | 2010-12-30 | 2011-07-11 | 재단법인 광양만권 유아이티연구소 | 통합 에너지 관리 클라이언트용 엠씨유 |
US9501331B2 (en) * | 2012-08-09 | 2016-11-22 | Fujitsu Limited | Satisfiability checking |
EP3014429B1 (en) * | 2013-09-06 | 2020-03-04 | Huawei Technologies Co., Ltd. | Method and apparatus for asynchronous processor removal of meta-stability |
US9928074B2 (en) * | 2013-09-06 | 2018-03-27 | Huawei Technologies Co., Ltd. | System and method for an asynchronous processor with token-based very long instruction word architecture |
US9665372B2 (en) | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
RU2571575C1 (ru) * | 2014-06-20 | 2015-12-20 | Александр Сергеевич Зубачев | Общественный компьютер |
KR102264161B1 (ko) * | 2014-08-21 | 2021-06-11 | 삼성전자주식회사 | 이미지 처리 장치, 이미지 처리 시스템, 이미지 처리 시스템의 동작방법 및 이미지 처리 시스템을 포함하는 시스템 온 칩 |
US9760375B2 (en) | 2014-09-09 | 2017-09-12 | International Business Machines Corporation | Register files for storing data operated on by instructions of multiple widths |
US9720696B2 (en) | 2014-09-30 | 2017-08-01 | International Business Machines Corporation | Independent mapping of threads |
US9977678B2 (en) | 2015-01-12 | 2018-05-22 | International Business Machines Corporation | Reconfigurable parallel execution and load-store slice processor |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US10133581B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Linkable issue queue parallel execution slice for a processor |
KR102415995B1 (ko) * | 2015-09-30 | 2022-06-30 | 엘지디스플레이 주식회사 | 영상 처리 장치 및 이를 포함하는 표시장치 |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1311063C (en) * | 1988-12-16 | 1992-12-01 | Tokumichi Murakami | Digital signal processor |
US5280474A (en) * | 1990-01-05 | 1994-01-18 | Maspar Computer Corporation | Scalable processor to processor and processor-to-I/O interconnection network and method for parallel processing arrays |
EP0443551B1 (en) * | 1990-02-21 | 1997-05-02 | Matsushita Electric Industrial Co., Ltd. | A multidimensional address generator and a system for controlling the generator |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5815723A (en) * | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
US5243699A (en) * | 1991-12-06 | 1993-09-07 | Maspar Computer Corporation | Input/output system for parallel processing arrays |
US5991866A (en) * | 1992-03-25 | 1999-11-23 | Tm Patents, Lp | Method and system for generating a program to facilitate rearrangement of address bits among addresses in a massively parallel processor system |
JPH06162226A (ja) | 1992-11-20 | 1994-06-10 | Nec Corp | 並列プロセッサ制御装置 |
JPH0736858A (ja) * | 1993-07-21 | 1995-02-07 | Hitachi Ltd | 信号処理プロセッサ |
US5659780A (en) * | 1994-02-24 | 1997-08-19 | Wu; Chen-Mie | Pipelined SIMD-systolic array processor and methods thereof |
JPH07271764A (ja) * | 1994-03-24 | 1995-10-20 | Internatl Business Mach Corp <Ibm> | 計算機プロセッサ及びシステム |
US5790879A (en) * | 1994-06-15 | 1998-08-04 | Wu; Chen-Mie | Pipelined-systolic single-instruction stream multiple-data stream (SIMD) array processing with broadcasting control, and method of operating same |
JPH0877002A (ja) * | 1994-08-31 | 1996-03-22 | Sony Corp | 並列プロセッサ装置 |
US5606707A (en) * | 1994-09-30 | 1997-02-25 | Martin Marietta Corporation | Real-time image processor |
KR100262453B1 (ko) | 1996-08-19 | 2000-08-01 | 윤종용 | 비디오데이터처리방법및장치 |
US6343309B1 (en) * | 1996-09-30 | 2002-01-29 | International Business Machines Corporaton | Method and apparatus for parallelizing a graphics pipeline |
US6088788A (en) * | 1996-12-27 | 2000-07-11 | International Business Machines Corporation | Background completion of instruction and associated fetch request in a multithread processor |
US5961628A (en) * | 1997-01-28 | 1999-10-05 | Samsung Electronics Co., Ltd. | Load and store unit for a vector processor |
JPH10304184A (ja) | 1997-05-02 | 1998-11-13 | Fuji Xerox Co Ltd | 画像処理装置および画像処理方法 |
IL135953A0 (en) * | 1997-11-07 | 2001-05-20 | Bops Inc | Methods and apparatus for efficient synchronous mimd operations with ivliw pe-to-pe communication |
US6079008A (en) * | 1998-04-03 | 2000-06-20 | Patton Electronics Co. | Multiple thread multiple data predictive coded parallel processing system and method |
JP5285828B2 (ja) * | 1999-04-09 | 2013-09-11 | ラムバス・インコーポレーテッド | 並列データ処理装置 |
US20080007562A1 (en) * | 1999-04-09 | 2008-01-10 | Dave Stuttard | Parallel data processing apparatus |
US6732126B1 (en) * | 1999-05-07 | 2004-05-04 | Intel Corporation | High performance datapath unit for behavioral data transmission and reception |
US6427196B1 (en) * | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US6728419B1 (en) * | 2000-02-17 | 2004-04-27 | Xerox Corporation | Multi-tasking multi-threaded image processing system and method for image capture devices |
US6924807B2 (en) * | 2000-03-23 | 2005-08-02 | Sony Computer Entertainment Inc. | Image processing apparatus and method |
JP3504240B2 (ja) * | 2000-07-24 | 2004-03-08 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理システム、デバイス、方法及びコンピュータプログラム |
US6934336B2 (en) * | 2001-07-26 | 2005-08-23 | Matsushita Electric Industrial Co., Ltd. | Area expansion apparatus, area expansion method, and area expansion program |
JP3892829B2 (ja) * | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
GB0323950D0 (en) * | 2003-10-13 | 2003-11-12 | Clearspeed Technology Ltd | Unified simid processor |
US20050251649A1 (en) * | 2004-04-23 | 2005-11-10 | Sony Computer Entertainment Inc. | Methods and apparatus for address map optimization on a multi-scalar extension |
ITTO20040415A1 (it) * | 2004-06-22 | 2004-09-22 | St Microelectronics Srl | Architettura di processore multidimensionale |
GB2417105B (en) * | 2004-08-13 | 2008-04-09 | Clearspeed Technology Plc | Processor memory system |
US7492368B1 (en) * | 2006-01-24 | 2009-02-17 | Nvidia Corporation | Apparatus, system, and method for coalescing parallel memory requests |
US7755631B1 (en) * | 2006-10-24 | 2010-07-13 | Nvidia Corporation | Transposition structures and methods to accommodate parallel processing in a graphics processing unit (“GPU”) |
JP2008287562A (ja) * | 2007-05-18 | 2008-11-27 | Sony Corp | 処理装置及びデバイス制御ユニット |
US8180975B2 (en) * | 2008-02-26 | 2012-05-15 | Microsoft Corporation | Controlling interference in shared memory systems using parallelism-aware batch scheduling |
-
2006
- 2006-05-22 JP JP2007516362A patent/JP4893621B2/ja not_active Expired - Fee Related
- 2006-05-22 WO PCT/JP2006/310174 patent/WO2006123822A1/ja active Application Filing
- 2006-05-22 EP EP06746708.4A patent/EP1883045A4/en not_active Withdrawn
- 2006-05-22 CN CN2006800005263A patent/CN1993709B/zh active Active
- 2006-05-22 US US11/572,331 patent/US8464025B2/en active Active
- 2006-05-22 KR KR1020077001405A patent/KR101270925B1/ko not_active IP Right Cessation
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103221937A (zh) * | 2010-11-18 | 2013-07-24 | 德克萨斯仪器股份有限公司 | 用于处理集群的加载/存储电路 |
CN103221936A (zh) * | 2010-11-18 | 2013-07-24 | 德克萨斯仪器股份有限公司 | 一种用于处理集群的共享功能存储器电路 |
CN103221936B (zh) * | 2010-11-18 | 2016-07-20 | 德克萨斯仪器股份有限公司 | 一种用于处理集群的共享功能存储器电路 |
CN103221937B (zh) * | 2010-11-18 | 2016-10-12 | 德克萨斯仪器股份有限公司 | 用于处理集群的加载/存储电路 |
CN103065611A (zh) * | 2011-10-20 | 2013-04-24 | 三星电子株式会社 | 显示控制器和包括该显示控制器的显示装置 |
CN103065611B (zh) * | 2011-10-20 | 2016-09-28 | 三星电子株式会社 | 显示控制器和包括该显示控制器的显示装置 |
CN104837006A (zh) * | 2014-02-11 | 2015-08-12 | 京元电子股份有限公司 | 半导体元件测试***及其影像处理加速方法 |
US11102436B2 (en) | 2016-10-31 | 2021-08-24 | Sony Semiconductor Solutions Corporation | Solid-state imaging device and signal processing method thereof, and electronic device |
CN109298886A (zh) * | 2017-07-25 | 2019-02-01 | 合肥君正科技有限公司 | Simd指令执行方法、装置及处理器 |
CN112368687A (zh) * | 2018-06-29 | 2021-02-12 | 索尼公司 | 信息处理设备、信息处理方法和程序 |
Also Published As
Publication number | Publication date |
---|---|
US8464025B2 (en) | 2013-06-11 |
JPWO2006123822A1 (ja) | 2008-12-25 |
WO2006123822A1 (ja) | 2006-11-23 |
US20090006773A1 (en) | 2009-01-01 |
KR20080010377A (ko) | 2008-01-30 |
EP1883045A4 (en) | 2016-10-05 |
JP4893621B2 (ja) | 2012-03-07 |
CN1993709B (zh) | 2010-12-15 |
KR101270925B1 (ko) | 2013-06-07 |
EP1883045A1 (en) | 2008-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1993709A (zh) | 信号处理设备 | |
CN1293518C (zh) | 具有割截与支援框线模式的三角形描绘方法与装置 | |
CN1162010C (zh) | 图象译码设备和图象存储器 | |
CN1135468C (zh) | 对存储设备中信号数据字执行数字信号处理的方法和装置 | |
CN1175670C (zh) | 图像信号转换方法和设备以及图像提供*** | |
CN1241147C (zh) | 图像处理设备和方法,以及图像拾取设备 | |
CN1890630A (zh) | 在寄存器和存储器之间移动数据的数据处理设备和方法 | |
CN1246772C (zh) | 处理器 | |
CN1076378A (zh) | 用于电视游戏***等具有可编程图形处理器的外部存储*** | |
CN101079965A (zh) | 拍摄图像的失真校正方法和装置、拍摄方法和拍摄装置 | |
CN1922630A (zh) | 图象处理装置、图象处理***、图象处理方法、图象处理程序及集成电路装置 | |
CN1860441A (zh) | 用于可重新配置环境中的高效高性能数据操作元件 | |
CN1894659A (zh) | 在寄存器和存储器之间移动数据的数据处理设备和方法 | |
CN1584824A (zh) | 一种基于cisc结构的微处理器构架及指令实现方式 | |
CN1924931A (zh) | 视频绘制装置及方法 | |
CN1200571C (zh) | 正交变换、逆正交变换方法及装置、编码、解码方法及装置 | |
CN1601474A (zh) | 执行实时操作的方法和*** | |
CN1174353A (zh) | 采用多个向量寄存器组的单指令多数据处理方法及其装置 | |
CN1080200A (zh) | 图形处理器 | |
CN1306697A (zh) | 可变长度编码与解码的处理电路和处理方法 | |
CN1754384A (zh) | 图像处理装置和方法、学习装置和方法、记录介质以及程序 | |
CN1892589A (zh) | 控制移位分组数据的位校正的装置 | |
CN1226323A (zh) | 数据处理装置寄存器 | |
CN1304617A (zh) | 插值处理装置及记录插值处理程序的记录媒体 | |
CN1437180A (zh) | 显示方法及装置、滤波单元及处理方法、图像处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |