CN103168289B - 转置运算装置及其集成电路、以及转置处理方法 - Google Patents

转置运算装置及其集成电路、以及转置处理方法 Download PDF

Info

Publication number
CN103168289B
CN103168289B CN201280003250.XA CN201280003250A CN103168289B CN 103168289 B CN103168289 B CN 103168289B CN 201280003250 A CN201280003250 A CN 201280003250A CN 103168289 B CN103168289 B CN 103168289B
Authority
CN
China
Prior art keywords
data
mentioned
transposition
matrix
rearrangement
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.)
Expired - Fee Related
Application number
CN201280003250.XA
Other languages
English (en)
Other versions
CN103168289A (zh
Inventor
西村隆
森下广之
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Publication of CN103168289A publication Critical patent/CN103168289A/zh
Application granted granted Critical
Publication of CN103168289B publication Critical patent/CN103168289B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

具备:寄存器组,能够保存矩阵数据,能够以要素数据单位读出;输出数据重排部,按每个行数据进行重排,以使同一列的要素数据分别属于不同的列;寄存器访问部,将重排后的矩阵数据写入寄存器组,使用列位置信息从寄存器组读出要素数据的集合,上述列位置信息表示属于同一列的要素数据在寄存器组中被存储的场所;输入数据重排部,将所读出的要素数据的集合重排;运算处理部,对重排后的要素数据的集合进行运算;以及转置控制部,生成重排信息和列位置信息,控制数据的重排;通过在向寄存器组保存时和读出时进行数据串的重排,使转置处理高速化。

Description

转置运算装置及其集成电路、以及转置处理方法
技术领域
本发明涉及用于执行矩阵的转置处理的转置运算技术。
背景技术
以往,作为高速进行图像处理的处理器,已知有数据并行处理处理器。该数据并行处理处理器通过对构成数据的多个要素数据同时进行相同的处理,实现了处理的高速化。此时,例如针对矩形的图像数据的滤波处理或二维正交变换等,处理器为了并行进行处理,有时需要通过转置处理进行的数据串的变换。
作为将矩阵数据转置的方法,只要对整个矩阵数据进行各要素的替换动作以将矩阵数据的列与行替换就可以。但是,在该方法中,有如果矩阵的要素的数量变多则交换命令的执行次数变得庞大的问题。
所以,为了使转置处理高速化,已知有使用矩阵转置装置的方法(例如,参照专利文献1)。
现有技术文献
专利文献
专利文献1:特开平10―154140号公报
发明概要
发明要解决的问题
但是,在与处理器分离地使用专利文献1的矩阵转置装置的情况下,每当进行转置处理时在处理器与矩阵转置装置之间发生矩阵数据的交换,所以矩阵数据的转送所需要的时间成为新的时间成本。
发明内容
本发明的目的是提供一种缩短转置处理所需要的处理时间的转置运算装置。
用于解决问题的手段
有关本发明的转置运算装置,其特征在于,具备:寄存器组,由寄存器构成,能够保存作为处理对象的矩阵数据,上述寄存器是保存构成上述矩阵数据的行数据、能够以构成行数据的要素数据单位读出的寄存器;转置控制部,针对矩阵数据生成输出重排信息、列位置信息以及输入重排信息,上述输出重排信息用于按每个行数据重排以使同一列的要素数据分别成为不同的列,上述列位置信息表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所,上述输入重排信息用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排;输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;寄存器访问部,将上述输出数据重排部进行重排后的矩阵数据向上述寄存器组写入,从上述寄存器组读出数据,使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,并输出上述要素数据的集合;输入数据重排部,将上述寄存器访问部输出的上述要素数据的集合使用上述输入重排信息重排;以及运算处理部,对由上述输入数据重排部进行重排后的要素数据的集合进行运算。
发明效果
根据上述结构,在转置运算装置中,能够缩短矩阵转置处理所需要的处理时间。
附图说明
图1是表示实施方式1的转置运算装置的结构例的框图。
图2是表示包括实施方式1的转置运算装置的图像处理装置的结构例的框图。
图3是表示实施方式1的寄存器访问部的结构例的框图。
图4是表示有关实施方式1的转置处理的矩阵数据的保存形象的图。
图5是表示有关实施方式1的转置运算装置的运算处理的动作的流程图。
图6是表示实施方式1的通过矩形访问进行的图像数据的寄存器保存的图。
图7是表示实施方式1的读出数据的重排顺序的图。
图8是表示实施方式1的读出数据的重排顺序的图。
图9是表示实施方式1的读出数据的重排顺序的图。
图10是表示实施方式2的转置运算装置的结构例的框图。
图11是表示实施方式2的转置控制部的寄存器地址与列位置信息、循环量的关系的图。
图12是表示有关实施方式2的转置运算装置的运算处理的动作的流程图。
图13是表示实施方式3的转置运算装置的结构例的框图。
图14是表示实施方式3的转置运算装置的动作的流程图。
图15是表示实施方式4的寄存器访问部的结构例的框图。
图16是表示实施方式4的写入数据的重排顺序的图。
图17是表示实施方式4的写入数据的重排顺序的图。
图18是表示实施方式5的转置运算装置的结构例的框图。
图19是表示实施方式5的读出数据的重排顺序的图。
图20是表示实施方式5的读出数据的重排顺序的图。
图21是表示以往的矩阵转置装置的结构的框图。
具体实施方式
(达成发明的经过)
一般而言,处理器将作为运算处理的对象的数据暂时保存到称作寄存器的存储区域中。处理器能够将保存在1个寄存器中的全部数据用1个命令一起读出。因而,在并行处理处理器中,作为并行处理的对象的数据优选的是以处理单位保存在单独的寄存器中。
这里,对矩阵数据的保存方法进行说明。例如,表示矩形的图像的图像数据是以各像素的数据(颜色信息等的像素值)为要素数据的矩阵数据。具体而言,将最左上的像素作为矩阵数据的要素(1,1),在水平方向上相邻的像素的数据在行方向上排列,并且在垂直方向上相邻的像素的数据在列方向上排列。在将这样的矩阵数据保存到寄存器时,将矩阵数据按每一行分割,将作为1行的要素数据的排列的数据串分别单独地保存到寄存器。即,将在水平方向上相邻的像素的数据保存到同一寄存器,将在垂直方向上相邻的像素的数据保存到不同的寄存器。
因而,例如在对在水平方向上排列的像素的滤波处理等、将矩阵数据的特定的行读出的情况下,只要从保存有该行的数据的1个寄存器将数据串原样读出就可以,能够用1个命令执行读出。但是,例如在对在垂直方向上排列的像素的滤波处理等、将矩阵数据以列单位读出的情况下,需要进行从保存有矩阵数据的多个寄存器各读出1个要素数据的处理。在该处理中,需要将对寄存器的读出命令执行与矩阵数据的列的数量相当的量。
所以,作为由并行处理处理器将矩阵数据以列单位高效率地处理的方法,有矩阵数据的转置处理。这是因为,如果这样,则矩阵的行与列替换,即“转置前的矩阵数据的列”被保存到1个寄存器中,能够用1个命令读出。
作为将保存在寄存器中的矩阵数据转置的方法,有如上述那样在寄存器间进行要素数据的交换的方法。但是,如果矩阵数据的行数及列数变大,即,如果要素的数量变多,则交换命令的执行次数变得庞大,有需要大量的处理时间的问题。
此外,作为将矩阵转置的方法,有使用如专利文献1中公开的矩阵转置装置的方法。
在图21中表示专利文献1所记载的矩阵转置装置900的结构图。矩阵转置装置900由输入装置921-0~921-p、存储装置922-0~922-p、地址产生器923-0~923-p、输出选择装置924-0~924-n及控制电路925构成。此外,图中926表示运算器。存储装置922-I(I是0以上且p以下的整数)例如由1输入1输出的RAM构成,分别具有能够用由地址产生器923-I产生的地址来指定的存储区域。
控制装置925在将矩阵数据保存时,控制输入选择装置921-I和地址产生器923-I,以使任意的行数据的各要素保存到相互不同的存储装置922-I。接着,控制装置925在将矩阵数据读出时,控制输出选择装置924-J(J是0以上且n以下的整数)和地址产生器923-I,将转置矩阵数据的任意的列数据以保持设定的顺序及设定的列数据内的要素的顺序的方式输出。
但是,在从处理器利用专利文献1的矩阵转置装置时,有下述两个问题。
在处理器的外部设置矩阵转置装置的情况下,发生处理器不能进行处理的待机时间。即,在进行转置处理时,处理器在对矩阵转置装置输出矩阵数据后,必须从矩阵转置装置读出转置后的矩阵数据。因而,至少在从矩阵数据中的第I列的数据的输出完成至转置后的矩阵数据中的第I行的数据被保存到寄存器中为止的期间中,处理器不能进行对转置前的矩阵的第I列的数据(转置后的第I行的数据)的处理。
一方面,如果要在处理器内实现矩阵转置装置,则发生以下问题。专利文献1的矩阵转置装置为了将N行N列(N是2以上的整数)的矩阵数据转置而需要N个能够单独输入输出的存储装置。因而,如果是例如将8×8像素的块转置的图像处理处理器,则需要8个能够单独输入输出的存储装置,成为处理器的成本升高的原因。另一方面,如果要仅使用1个存储装置、通过处理器和软件实现矩阵转置装置,则不能高速地实现矩阵转置处理。这是因为,在输入矩阵数据的列数据的输入和转置矩阵数据的列数据的输出中,都不能以列数据单位进行而需要以要素单位进行。
所以,发明者们得到了如下方法的构想:将转置前的矩阵数据的行数据的保存及转置后的矩阵数据的行数据的读出都能够用1个命令进行的、矩阵数据向寄存器组的保存方法、以及仅通过对该寄存器组的矩阵数据的保存和读出动作执行矩阵转置的方法。即,在将输出作为转置对象的矩阵数据的运算的结果向寄存器保存时,将矩阵数据的各行重排以使在转置前的矩阵中属于同一列的要素数据在同一列中不存在两个以上,并向寄存器组保存转置对象的矩阵数据。并且,在将要求转置后的矩阵数据的运算的输入数据从寄存器读出时,如某个寄存器的第1个、另一寄存器的第2个、再另一寄存器的第3个那样,以数据串内的顺序不重复的方式从多个寄存器读出各一个要素数据作为转置后的矩阵数据的各行(该读出通过1个命令执行)。最后,将读出的各行以列的顺序重排,执行需要转置后的矩阵数据的运算。
根据该结构,在将作为运算处理1的结果的矩阵数据转置并用于运算处理2的情况下,只要仅将向寄存器保存运算处理1的结果的命令和从寄存器读出运算处理2的对象的命令分别置换为用于转置的保存命令和用于转置的读出命令就可以。即,通过对寄存器的矩阵数据的读写处理来完成矩阵转置,所以不需要进行将转置对象的矩阵保存到寄存器之后由处理器的运算器执行转置命令的处理。此外,由于读出处理的对象是寄存器,所以处理器的运算器能够直接利用读出的转置后的矩阵数据的各行。因此,也不需要为了将转置后的矩阵数据的各行作为运算的对象而向寄存器保存的处理。因而,能够缩短矩阵转置处理所需要的处理时间。
(实施方式)
以下,参照附图对本发明的实施方式进行说明。
(实施方式1)
首先,对包括有关实施方式1的转置运算装置200的图像处理装置100的结构进行说明。
图2是图像处理装置100的功能框图。图像处理装置100具备图像输入部110、输入处理部120、图像存储器130、***控制部140、信号处理部150。转置运算装置200是信号处理部150的一部分。
图像输入部110以一定的帧速率进行图像的取入,将所生成的一定尺寸的图像数据向输入处理部120发送。
输入处理部120具有将从图像输入部110取入的图像数据向图像存储器130转送的功能,在图像数据的转送完成后,向***控制部140通知。
图像存储器130保持从输入处理部120转送的输入图像数据、以及由信号处理部150执行的图像处理的结果。
***控制部140具有进行图像处理装置100整体的控制、及装置内的各块的动作设定的功能。
信号处理部150是进行从图像存储器130输入的图像数据的信号处理的块,包括转置处理的运算由转置运算装置200执行。
***控制部140、信号处理部150及转置运算装置200的参数设定及执行控制经由处理器总线进行,包括输入图像及进行图像处理的图像数据的交接在内的、从其他构成要素向图像存储器130的访问经由存储器总线进行。
<转置运算装置>
图1是表示有关实施方式1的转置运算装置200的框图。转置运算装置200由命令发行部210、命令解码部220、运算控制部230、运算处理部240、转置控制部250、输入循环(旋转)部260、输出循环(旋转)部270、寄存器访问部300、寄存器组310构成。
命令发行部210从信号处理部150接受由转置运算装置200执行的数据并行处理处理器的运算命令,向命令解码部220发行。
命令解码部220如果接受到执行命令,则根据命令代码对寄存器访问信息、运算处理的信息进行解读,向运算控制部230发送在命令执行时需要的数据路径的信息。此外,命令解码部220将在运算处理后是否需要转置处理的信息输出至运算控制部230。
寄存器组310是用于存储作为运算处理及转置处理的对象的矩阵数据的装置。寄存器组310由分别具有固有的地址的多个寄存器构成。
以下,将寄存器中寄存器地址相同的存储区域的范围表述为“1个寄存器”。矩阵数据按每一行作为单独的数据串,按每个数据串存储到分别不同的地址的寄存器。
寄存器访问部300进行从寄存器组310的数据的读出、和向寄存器组310的数据的写入。在图3中表示寄存器访问部300的结构。寄存器访问部300具备按每个要素数据而从构成寄存器组310的寄存器接受数据、选择1个并输出的选择器350-1~350-4。这里,所谓要素数据,是在矩阵数据中作为矩阵的成分的最小单位的数据。例如,在4×4像素的图像数据为4行4列的矩阵数据的情况下,要素数据是1像素的数据。
寄存器访问部300从运算控制部230接受伴随着地址的指定的读出命令,并且在转置控制部250没有指定列位置信息的情况下,将寄存器组310中的具有被指定的地址的寄存器所存储的数据串读出,向输入循环部260发送。
此外,在寄存器访问部300从运算控制部230接受伴随着地址的指定的读出命令、并且转置控制部250指定了地址修正值作为列位置信息的情况下,根据地址和地址修正值生成偏移地址,如以下那样以要素数据单位变更读出的寄存器来读出数据串,向输入循环部260发送。以下,将使用列位置信息以要素数据单位进行的读出动作称作偏移读取(offsetreading)。
这里,所谓地址修正值,是用于通过以要素数据单位指定读出动作的对象而将寄存器组310存储的矩阵数据的特定的列读出的列位置信息,并且是将读出第1个要素数据的寄存器的地址、读出第2个要素数据的寄存器的地址、以下同样读出的寄存器的地址用与运算控制部230指定的读出地址的差值表示的信息。以下表示详细情况。
在指定了地址修正值的情况下,寄存器访问部300如以下这样读出数据。首先,使用加法器340-1~340-4将由运算控制部230指定的读出地址(读地址)与地址修正值相加,来生成偏移地址。接着,从加法器340-1向选择器350-1输出将读地址和与最初的要素数据对应的地址修正值相加而得到的偏移地址,选择器350-1从寄存器组310中的保存有各寄存器的第1个要素的区域311-1中,选择偏移地址所指示的寄存器并取得要素数据。同样,选择器350-2从加法器340-2取得将读地址和与第2个要素数据对应的地址相加而得到的偏移地址,从寄存器组310中的保存有各寄存器的第2个要素的区域311-2中,选择偏移地址所指示的寄存器并取得要素数据。同样,将与全部的偏移地址对应的要素数据读出。
选择器350-1从寄存器组310中的保存有各寄存器的第1个要素的区域311-1取得要素数据,选择器350-2从寄存器组310中的保存有各寄存器的第2个要素的区域311-2取得要素数据。因此,寄存器访问部300从寄存器组310中,能够同时从保存有各寄存器的第1个要素的区域311-1取得1个要素数据,从保存有全部寄存器的第2个要素的区域311-2取得1个要素数据,从保存有全部寄存器的第3个要素的区域311-3取得1个要素数据,从保存有全部寄存器的第4个要素的区域311-4取得1个要素数据。所读出的要素数据作为以选择器350-1的输出、选择器350-2的输出、选择器350-3的输出、选择器350-4的输出的顺序排列的数据串,从寄存器访问部300输出至输入循环部260。另外,选择器不能将两个以上的要素数据同时输出,所以不能通过1次的读出动作得到地址#1的寄存器的第1个要素数据和地址#2的寄存器的第1个要素数据。
寄存器访问部300在从运算控制部230接受到伴随着地址的写入命令的情况下,将从输出循环部270接收到的数据串向寄存器组310中的具有被指定的地址的寄存器写入。
输入循环部260具有如下功能:对由寄存器访问部300从寄存器组310读出的数据串,以要素数据单位进行循环移位,从而进行重排。另外,所谓循环移位,是指进行位移位(bitshift)以使数据串的右端与左端相连。具体而言,通过位移位而从数据串的右端溢出的要素数据从左端***到该数据串中,同样,通过位移位从数据串的左端溢出的要素数据从右端***到该数据串中。例如,如果将{a,b,c,d,e,f}的数据串(a,b,c,d,e,f分别是1位的要素数据)向右循环移位1位,则成为{f,a,b,c,d,e}的数据串。如果对该数据串再向左循环移位2位,则成为{b,c,d,e,f,a}的数据串。
将数据串向右或左的某一方循环移位几位,由从转置控制部250指定的循环量决定。
以下,将右移位的移位量用正值、将左移位的移位量用负值表示。此外,在本实施方式中,将要素数据的位宽作为移位量的单位。例如,在要素数据的位宽是8位的情况下,所谓移位量+2,是指向右循环移位16位,所谓移位量-5,是指向左循环移位40位。
由输入循环部260进行重排后的数据串作为输入数据传递至运算处理部240。
运算处理部240由进行算术运算或逻辑运算的ALU(ArithmeticLogicUnit)241、乘法器242、桶形移位器243等构成,都对多个要素数据并行地进行运算处理。
运算处理部240将由输入循环部260进行重排后的数据串作为源数据分别经由独立的源总线提供至各运算器。各运算器的处理内容基于从运算控制部230指定的运算命令决定,运算结果经由目的总线输出至输出循环部270。
输出循环部270具有如下功能:对由运算处理部240处理后的运算结果的数据串,以要素数据单位进行循环移位,从而进行重排。循环量与输入循环部260同样由转置控制部250决定。重排后的数据串输出至寄存器访问部300。关于循环移位及移位量的详细情况,由于与输入循环部260相同,所以省略说明。
运算控制部230具有根据依次执行的运算命令来生成用于执行运算处理的数据路径信息的功能。数据路径信息基于从命令解码部220接收的信号而被生成,其内容是所执行的运算命令的功能、读出/写入目的地的寄存器地址、有效的源总线及目的总线的选择信息。此外,运算控制部230在需要对运算处理的结果实施转置处理的情况下,在将该运算的结果输出之前,将转置控制部250为了进行转置处理而需要的写入目的地的寄存器地址等的设定信息输出至转置控制部250所包含的设定寄存器320。设定寄存器320保持设定信息。
转置控制部250在所包含的设定寄存器320中有设定信息的情况下,在该运算和使用使该运算的结果转置而得到的数据的运算中,在将矩阵数据向寄存器组310写入、将该矩阵数据从寄存器组310读出时进行用于转置处理的控制。在设定寄存器320中没有设定信息的情况下,转置控制部250在向寄存器组310的写入、以及从寄存器组310的读出中不进行用于转置处理的控制,如后述那样,对于矩阵数据,输出循环部270及输入循环部260都不进行循环移位,寄存器访问部300仅使用运算控制部230指定的地址对寄存器组310访问。
关于转置运算装置200进行转置处理时的动作、以及转置控制部250为了转置处理而进行的控制,使用图4进行说明。转置运算装置200在对将运算处理1的运算结果进行转置处理而被转置后的矩阵数据进行运算处理2的情况下,进行以下的动作。
首先,转置运算装置200在实施运算处理1时,如通常那样进行运算(将运算结果表示在图4(a)中)。接着,转置运算装置200对运算结果实施通过上述输出循环部270的循环移位(图4(b)),将进行循环移位后的矩阵数据通过寄存器访问部300保存到寄存器组310。转置控制部250对输出循环部270指示增加要素数据单位的值,如对矩阵数据的第1行指示循环量0、对第2行指示循环量+1。由此,构成矩阵数据的第1列的要素数据属于不同的要素数据的顺序,如在第1行中为第1个要素、在第2行中为第2个要素。
接着,转置运算装置200在实施运算处理2时,当从寄存器读出数据时实施上述偏移读取和通过输入循环部260的循环处理,将进行循环处理后的数据串输出至运算处理部240(图4(c))。转置控制部250对寄存器访问部300指示以1个要素为基准按每个要素数据单位各增加+1的值,如对第1要素的地址修正值0、对第2要素的地址修正值+1。由此,如保存有第1行的寄存器的第1个要素、保存有第2行的寄存器的第2个要素那样,能够将构成以上述不同的要素数据的顺序分散的矩阵数据的第1列的要素数据通过1次的读出来取出。
此外,如果例如是第2列的要素数据,则寄存器访问部300如保存有第1行的第2个要素、保存有第2行的第3个要素那样读出。因此,读出如原来的矩阵数据的第1行第2列的要素数据为第2个、第2行第2列的要素数据为第3个那样,将原来的矩阵数据的第2列向右循环移位1要素量后的数据串。为了将该数据串作为使原来的矩阵数据的第1行第2列的要素数据为第1个要素那样的转置矩阵数据的第2行的数据,转置处理部250对输入循环部260指示与输出循环部270中的对第2行的循环量+1相比绝对值相同而方向相反的循环量-1。
通过这些动作,运算处理部240在实施运算命令2时作为输入能够接受对运算命令1的结果施加转置处理而得到的结果(图4(d))。
转置控制部250如上述那样,在与转置处理后执行的运算有关的从寄存器组310的数据读入处理、以及与输出该数据的运算有关的向寄存器组310的数据写入处理中,通过实施循环移位和偏移读取,不使运算处理部240进行用于转置的处理而实施转置处理。转置控制部250生成上述转置处理所需要的输出循环部270中的循环量(称作输出循环量)、用于偏移读取的地址修正值、输入循环部260中的循环量(称作输入循环量),并保持在所包含的设定寄存器320中。输入循环部260、输出循环部270、寄存器访问部300从设定寄存器320取得循环量及地址修正值。
另外,关于循环量及地址修正值的设定例及详细的动作在后面叙述。
<动作>
以下,基于转置运算装置200,关于8行8列的图像数据的图像处理,表示转置处理的顺序。
图5是表示在有关本实施方式的转置运算装置200中实施一个运算命令时的动作的流程图。
图6表示存在将要素数据集合8个而得到的数据串、将该数据串集合了8列的状态。
假设图6所示的P00-P77的8行8列的矩阵数据是运算处理1的输出数据,是运算处理2的输入数据。如上述那样,在将该矩阵数据保存到寄存器组310的情况下,第1行的P00-P07保存到1个寄存器,第2行的P10-P17保存到另1个寄存器,第3行的P20-P27同样保存到与上述两个不同的1个寄存器保存。此时,在转置运算装置200对由P00-P70的要素数据构成的数据串(图6的矩阵中的第1列)进行运算的情况下,由于各个要素数据保存在具有不同的地址的寄存器中并且要素数据的顺序相同,不能同时读出,所以为了读出而发生8次读出处理。因此,为了在数据并行处理处理器上高效率地进行运算,需要转置处理。运算控制部230向设定寄存器320输出设定信息并对转置控制部250指示对运算处理1的输出进行转置处理(S105中“是”),转置控制部250通过以下的方法进行转置。
首先,在向寄存器组310保存图像数据时,转置控制部250对设定寄存器320设定输出循环量。输出循环部270基于输出循环量执行循环移位。转置控制部250指示按每个数据串各增加+1的循环量,如以P00-P07为基准而指示循环量0、对P10-P17指示循环量+1、对P20-P27指示循环量+2,输出循环部270按照指示进行循环移位(S106)。
接着,输出循环部270将循环移位后的数据串输出至寄存器访问部300。寄存器访问部300在运算控制部230指定的寄存器地址N所指示的寄存器中保存P00-P07,在寄存器地址(N+1)所指示的寄存器中保存P10-P17,在寄存器地址(N+2)所指示的寄存器中保存P20-P27(S107)。在图7(a)中表示保存了全部的数据串的状态。将这样进行基于输出循环部270的循环移位后保存在寄存器组310中的状态称作转置准备状态。
伴随着运算处理1的转置处理随着向寄存器组310的保存而完成。另外,关于运算处理以前(S101~S104),由于依存于对运算处理1作为输入数据的矩阵数据是否需要转置,所以这里省略说明。
接着,对伴随着运算处理2的转置处理进行说明。
由于运算处理2伴随着转置(S101中“是”),所以当从寄存器组310读出输入数据P00-P77时,转置控制部250按转置前的矩阵数据的每一列制作地址修正值。寄存器访问部300使用运算控制部230所指定的寄存器地址N和地址修正值进行偏移读取,按转置前的矩阵数据的每一列输出数据串(S102)。
对地址修正值的生成方法进行说明。例如,如图7(b)所示,当读出相当于转置处理前的矩阵数据的第1列的数据串P00-P70时,如指定为第1个要素地址修正值为0、第2个要素地址修正值为+1、第3个要素地址修正值为+2,地址修正值为{0,+1,+2,+3,+4,+5,+6,+7}。
寄存器访问部300如以下这样从寄存器组310读出数据并生成数据串。关于第1个要素,由于修正值是0,所以读出被指定的#N寄存器的第1个要素即P00。关于第2个要素,由于修正值是+1,所以读出对地址N加上修正值+1后的#(N+1)寄存器的第2个要素即P10。同样,还读出第3-第8个要素,数据串P00-P70成为读出数据串。
转置控制部250为了将读出的列数据改变而变更作为基准的要素数据,同样生成从作为基准的要素数据起依次增加各+1的读访问的地址修正值。这里,所谓作为基准的要素数据,是指记录在运算控制部230所指定的地址的寄存器中(=地址修正值为0)、属于要读出的列的要素数据。例如,在要读出第2列的情况下,作为基准的要素数据是P01。另外,在作为基准的要素数据不是第1个要素的情况下,将对最后的要素数据的地址修正值增加+1后的值作为第1个要素的修正值。例如,在图8(c)中表示将第2个要素数据的地址修正值设为0的例子。此时的地址修正值为{+7,0,+1,+2,+3,+4,+5,+6}。如上述那样,关于第1个要素,读出对地址N加上+7的修正值后的#(N+7)寄存器的第1个要素P71。同样,读出第2-第8个要素,由此进行P01-P71的数据串的读出。同样,例如,如图8(d)所示,为了进行P07-P77的数据串的读出,只要将第8个要素数据的地址修正值设为0、将地址修正值设为{+1,+2,+3,+4,+5,+6,+7,0}就可以。通过这样将作为基准的要素数据位置从第1个起1个1个地变更而反复偏移读取,寄存器上的矩阵数据按转置前的矩阵数据的每一列成为1个数据串而被取出。
最后,转置控制部250对输入循环部260指定与为了使转置前的矩阵数据成为转置准备状态而使用的循环量相比绝对值相同而方向相反的循环量。如图9(e)所示,通过由输入循环部260实施循环移位,向运算处理部240的输入数据成为与将原来的8行8列的图像数据转置的矩阵数据等价(S103)。
通过以上的处理,运算处理部240不执行用于转置处理的运算命令,而接受将保存在寄存器组310中的矩阵数据转置后的矩阵数据作为用于运算的输入(S104)。
伴随着运算处理2的转置处理随着向运算处理部240的转置矩阵数据的输出而完成。另外,关于运算处理以后(S105~S107),依存于对输出数据是否需要转置,与伴随着上述运算处理1的转置处理是同样的,所以省略。
接着,对不将运算处理1的结果转置而作为运算处理2的输入使用的情况进行说明。
在运算处理1中,转置控制部250不对输出循环部270指示循环量,输出循环部270不将从运算处理部240接受到的数据串循环移位,而原样输出至寄存器访问部300(S105中“否”)。寄存器访问部300如图6所示,如对运算控制部230指定的寄存器地址N保存P00-P07、对寄存器地址(N+1)保存P10-P17那样,向寄存器组310保存矩阵数据(S107)。
在运算处理2中,转置控制部250不指示地址修正值、循环量,寄存器访问部300从运算控制部230指定的寄存器地址N读出P00-P07的数据串,从寄存器地址(N+1)读出P10-P17的数据串。输入循环部260不将从寄存器访问部300输入的数据串循环移位,而原样输出至运算处理部240(S101中“否”)。
另外,转置运算装置200在将转置处理后的运算的结果以转置的状态的原状处理的情况下,只要原样作为接下来的运算处理的输入使用就可以,在回到原来的配置的情况下只要在接下来的运算前再次进行转置处理就可以。
根据这样的结构,仅通过在转置运算装置200中对转置控制部250指示转置处理,在进行在输出需要转置的数据的运算中从运算处理部240向寄存器组310写入输出数据为止的处理、和在以需要转置的数据为输入的运算中从寄存器组310读出数据并将输入数据提供给运算处理部240为止的处理时,能够将转置处理分割执行。特别是,如果向寄存器组310的写入完成,则能够通过偏移读取和循环移位将转置矩阵按每一行输出至运算处理部240,所以例如能够一边将整个转置矩阵输出一边并行地执行运算处理,能够使伴随着转置处理的图像处理高速化。
(实施方式2)
图10是表示实施方式2的转置运算装置400的框图。在图10中,对于与图1相同的构成要素使用相同的附图标记,省略说明。
寄存器组中包括转置寄存器组510,该转置寄存器组510是用于保持有关转置处理的数据串的专用寄存器的集合。在本实施方式中,寄存器号码0-7是转置寄存器组。以下,将属于转置寄存器组510且具有固有的地址的寄存器称作转置寄存器。
转置运算装置400由命令发行部410、命令解码部420、运算控制部430、运算处理部240、转置控制部450、寄存器访问部500、转置寄存器组510构成。
转置控制部450在内部不具有设定列位置信息或循环量的寄存器,从命令解码部420接受控制用参数。
寄存器访问部500进行从包括转置寄存器组510的寄存器组的数据的读出、以及向寄存器组的数据的写入。详细情况后述。
命令发行部410将由转置运算装置400执行的数据并行处理处理器的运算命令向命令解码部420发出。
命令解码部420对命令代码进行解读,得到用于从寄存器读出数据的地址、用于向寄存器写入数据的地址。如果用于写入的寄存器的地址是转置寄存器,则将该寄存器的地址、以及保存矩阵数据的寄存器的地址范围等为了转置处理而需要的信息输出至转置控制部450。
另外,在用于从寄存器读出数据的地址、用于向寄存器写入数据的地址是不属于转置寄存器组510的地址(0-7以外)的情况下,在向该寄存器的写入及读出时不进行转置处理,而将写入的矩阵数据原样读出。
运算控制部430具有根据依次执行的运算命令生成用于执行运算处理的数据路径信息的功能。数据路径信息基于从命令解码部420接收的信号而被生成,其内容是执行的运算命令的功能、读出/写入目的地的寄存器地址、有效的源总线及目的总线的选择信息。
转置控制部450基于从命令解码部420接收到的该寄存器的地址,决定用于转置处理的数据的重排所需要的信息、即输出循环部270中的循环量、在从转置寄存器的数据的读出中使用的列位置信息、输入循环部260中的循环量。例如,在发生向寄存器号码1的读取的情况下,命令解码部420唯一地设定作为列位置信息的读地址,如从上位的要素起依次为地址{7,0,1,2,3,4,5,6}、输入循环量为-1、输出循环量为+1。信息的决定方法既可以预先保持与寄存器地址对应的列位置信息及循环量,也可以在每当发生向转置寄存器的写入时生成。
在将运算处理1的结果转置而用于运算处理2的输入的情况下,如果在运算处理1中作为输出寄存器而指定转置寄存器、在运算处理2中作为输入寄存器而指定该寄存器,则转置运算装置400如以下这样动作。即,转置运算装置400对运算处理1的结果执行通过输出循环部270的循环移位,由寄存器访问部500写入至转置寄存器组510。接着,在进行运算处理2时,转置运算装置400中由寄存器访问部500按照列位置信息对转置寄存器组510进行偏移读取,由输入循环部260对偏移读取的结果进行循环移位,并输出至运算处理部240。通过这样,能够将转置后的数据串作为运算处理2的输入。
另外,转置所需要的参数,即输出循环量、列位置信息、输入循环量并不一定根据转置寄存器的地址而被唯一地决定,在转置寄存器的地址相同、但进行数据要素的位宽或进行转置的数据串的数量不同的情况下,上述参数也可以不相同。
在图11中表示向寄存器号码1-8保存要素数据量1字节(byte)的8行8列的数据的情况下的列位置信息地址值、输入循环量、输出循环量的设定例。
<动作>
图12是表示实施有关本实施方式的转置运算装置400的一个运算命令时的动作的流程图。
对有关运算处理1的转置处理进行说明。另外,关于从S201到S204,依存于运算处理1的输入数据是否需要转置,与有关运算处理2的S201到S204是同样的,所以这里省略说明。
在运算命令的输出寄存器属于转置寄存器组510的情况下(S205中“是”),转置控制部450从命令解码部420接受寄存器地址,生成输出循环量、列位置信息地址值、输入循环量。输出循环部270按照从转置控制部450接受到的输出循环量,将运算处理部240的输出矩阵数据按每个数据串循环移位(S206),并输出至寄存器访问部500。寄存器访问部500对由运算控制部430指定为写入目的地的地址的寄存器写入从输出循环部270接受到的数据串(S207)。
接着,对有关运算处理2的转置处理进行说明。
由于运算处理部240指定为读出目的地的地址属于转置寄存器组510(S201中“是”),所以寄存器访问部500从转置控制部450接受列位置信息地址值,通过偏移读取按原来的矩阵的每一列数据读出,并输出至输入循环部260(S202)。与上述S102不同的是,代替使用偏移寄存器确定各个要素数据的寄存器,而将上述列位置信息地址值原样使用确定各个要素数据的寄存器。
输入循环部260使用转置控制部450生成的输入循环量对从寄存器访问部500输入的原来的矩阵的列数据进行循环移位,并输出至运算处理部240(S203)。
另一方面,在运算命令1的输出目的地的寄存器不属于转置寄存器组510的情况下(S205中“否”),输出循环部270将运算处理部240的输出原样输出至寄存器访问部500,将数据以如图6所示的形式保存到寄存器组。
此外,在运算命令2的输入源的寄存器不属于转置寄存器组510的情况下(S201中“否”),寄存器访问部500不使用列位置信息,从由运算控制部430指定的地址将数据串原样读出。此外,输入循环部260将寄存器访问部500读出的数据串原样输出至运算处理部240。
在本实施方式中,通过在运算命令1中将转置寄存器设为输出目的地、将运算命令2的输入寄存器设为该转置寄存器,能够对运算命令1的运算结果实施转置处理而作为运算命令2的输入数据。此外,如果将运算命令1的输出寄存器设为转置寄存器以外的寄存器、将运算命令2的输入寄存器设为该寄存器,则运算命令2能够将运算命令1的运算结果原样接受作为输入数据。
根据该结构,通过将寄存器的一部分设为转置处理专用的寄存器,能够通过运算命令的输入输出寄存器的地址指定来设定转置处理的实施的有无,不需要用于进行转置控制部的转置控制的寄存器的设定。此外,由于作为转置处理的对象的数据与不为转置处理的对象的数据不会写入到相同的地址的寄存器中,所以能够防止将作为转置处理的对象的数据与不为转置处理的对象的数据弄错而将数据串的排列破坏的事故。
(实施方式3)
图13表示有关实施方式3的转置运算装置600。在图13中,对于与图1相同的构成要素使用相同的附图标记而省略说明。
转置运算装置600由命令发行部610、命令解码部620、运算控制部630、运算处理部640、转置控制部650、寄存器访问部300、寄存器组310构成。
命令发行部610发行伴随着转置的运算命令及不伴随着转置的运算命令。在伴随着转置的运算命令中,除了通常的运算命令以外,还包括用于转置的参数,即列位置信息、输入循环量、输出循环量或为了决定它们而需要的信息。例如,如果通常的运算命令是sub、R3、R16、R19或mul、R5、R2、R24,则发行对它们附加了转置的参数的sub_offset0_rd0_wr3、R3、R16、R19或mul_offset2_rd2_wr0、R2、R0、R24这样的命令。这里,offset2表示使用预先制作为列位置信息的地址修正值中的模式2,rd2表示输入循环量是2,wr3表示输出循环量是3。如后述那样,针对将运算结果以转置准备状态输出至寄存器的命令,设定wr的值,针对从以转置准备状态记录的寄存器中读出数据、并在运算前进行转置的命令,适当设定offset和rd的值,由此能够进行转置处理。
命令解码部620在命令代码的解读时判断是否伴随着转置处理。在伴随着转置处理的情况下,将附加在命令中的用于转置的信息输出至转置控制部650。
转置控制部650基于由命令解码部620输出的用于转置的信息,生成列位置信息及输入循环量、输出循环量。作为决定列位置信息及输入循环量、输出循环量的方法,既可以如上述例子那样原样使用对命令直接附加的列位置信息的模式、输入循环量、输出循环量,也可以预先制作多个列位置信息、输入循环量、输出循环量的组合,通过命令代码来指定使用哪个组合。或者,也可以关于列位置信息与输入循环量、输出循环量的组合,用命令代码指定使用已制作的组合中的1个还是新制作组合,在指定了新的组合的情况下每次生成列位置信息与输入循环量、输出循环量的组合。
此外,转置控制部650在向寄存器组310写入矩阵数据时,向运算处理部640输出输出循环量,在从寄存器组310读出矩阵数据时,向寄存器访问部300输出列位置信息,向运算处理部640输出输入循环量。
运算控制部630在运算前对于伴随着转置处理的运算命令,生成使用具备输入循环部260的运算器的数据路径信息。此外,对于对该运算命令的结果伴随着转置处理的运算命令,生成使用具备输出循环部270的运算器的数据路径信息。
运算处理部640具备具有输入数据的重排功能的运算器和将输入数据原样处理的运算器,通过从转置控制部650和运算控制部630接受伴随着各种转置处理及运算处理的参数,执行不伴随着转置处理的运算和伴随着转置处理的运算。
<动作>
图14是表示有关本实施方式的转置运算装置600的有关1个运算命令的动作的流程图。
说明对运算命令1的运算结果进行转置处理而作为运算命令2的输入的情况。
对有关运算命令1的转置处理进行说明。
转置运算装置600使用运算处理部640中的具有输入循环部260和输出循环部270的运算器进行运算。在实施运算处理后(S304),使用由该运算命令生成的输出循环量通过输出循环部270执行数据串的重排(S305)。
寄存器访问部300将运算处理部640的输出向运算控制部630指定的地址的寄存器写入(S308)。
接着,对有关运算命令2的转置处理进行说明。
在运算命令伴随着转置的情况下(S301中“是”),寄存器访问部300接受运算控制部630指定的读入目的地地址,从转置控制部650接受读地址修正值,执行偏移读取而将数据串读出(S302)。详细的动作与S104是同样的,所以省略。接着,转置运算装置600使用运算处理部640中的具有输入循环部260和输出循环部270的运算器执行运算命令。首先,输入循环部260使用从转置控制部650接受的输入循环量进行数据串的重排,生成转置矩阵数据(S303)。由此,运算器能够以对运算命令1的结果实施转置后的数据为输入来执行运算命令2。
在运算中不伴随转置的情况下(S301中“否”),为以下的处理。
在运算命令1中,使用运算处理部640中的不具有输入循环部260及输出循环部270的运算器进行运算(S307)。接着,寄存器访问部300将运算处理部640的输出向运算控制部630指定的地址的寄存器写入(S308)。
在运算命令2中,寄存器访问部300使用由运算控制部630指定的读入目的地地址来读出数据串(S306)。接着,转置运算装置600使用运算处理部640中的不具有输入循环部260和输出循环部270的运算器进行运算(S307)。
根据该结构,通过对运算命令1附加输出循环命令、对运算命令2附加偏移读取和输入循环命令,实施运算命令2的运算器能够接受对运算命令1的运算结果实施转置处理后的数据作为输入数据。此时,例如只要对运算命令附加关于转置的信息以使运算命令1中的输出循环量相对于矩阵数据的第1行为{+1,+2,…,+7,0}、运算命令2中的地址修正值相对于第1行为{+7,0,+1,+2,…,+6}、输入循环量相对于矩阵数据的第1行为{-1,-2,…,-7,0}即可。此外,如果对运算命令1没有附加输出循环命令、且对运算命令2也没有附加偏移读取命令和输入循环命令,则运算命令2能够原样接受运算命令1的结果作为输入数据。
根据该结构,关于用于转置处理的列位置信息、输出循环量、输入循环量,能够由制作运算命令的人任意地设定,对保存作为转置对象的矩阵数据的寄存器的地址没有制约。
(实施方式4)
在实施方式1中,说明了对于进行转置处理后的运算结果,在原样(以转置状态)作为接下来的运算的输入的情况下不进行有关转置的处理而输出至接下来的运算,在恢复到原来的配置的情况下在接下来的运算之前再次进行转置的情况。在本实施方式中,说明对于进行转置处理后的运算结果,通过与再次转置不同的方法恢复到原来的配置的情况。
有关本实施方式的转置运算装置除了代替寄存器访问部300而具备寄存器访问部700以外,是与实施方式1同样的结构。寄存器访问部700除了寄存器访问部300的功能以外,还具有下述的功能。
寄存器访问部700在从运算控制部230接受伴随着地址的指定的写入命令、并且转置控制部250指定了地址修正值的情况下,与偏移读取同样,将从输出循环部270接收到的数据串以要素数据单位分割,以要素数据单位变更写入的寄存器,并以要素数据单位向寄存器写入。将这样的伴随着地址修正值的写入动作称作偏移写入。
对于寄存器访问部700以要素数据单位变更写入的寄存器的方法,使用图15进行说明。寄存器访问部700将用于写入的数据串以要素数据单位分割。接着,寄存器访问部700选择寄存器组310中的写入对象的寄存器,从该寄存器的输入机构写入要素数据。
寄存器访问部700首先使用加法器740-1~740-4对由运算控制部230指定的写入地址(写地址)加上地址修正值,按每个要素数据生成偏移地址。接着,从加法器740-1输出对写地址加上与最初的要素数据对应的地址修正值而得到的偏移地址,寄存器访问部700从寄存器组310中的保存各寄存器的第1个要素的区域311-1中,选择保存由偏移地址表示的寄存器的第1个要素的区域,并写入用于写入的数据串的第1个要素。此外,使用从加法器740-2输出的偏移地址,从寄存器组310中的保存各寄存器的第2个要素的区域311-2中选择将用于写入的数据串的第2个要素写入的区域并写入。同样,将数据串的第3个要素使用由加法器740-3生成的偏移地址写入至寄存器组310,将数据串的第4个要素使用由加法器740-4生成的偏移地址写入至寄存器组310。这样,寄存器访问部700将用于写入的数据串的全部的要素数据写入至寄存器组310。
<动作>
关于在运算处理2中进行运算为止的处理,与实施方式1是相同的,所以省略说明,关于以后的将运算处理部240的运算结果向寄存器310保存的处理使用附图进行说明。
在图像处理完成后再次变换为原来的数据配置的情况下,进行以下的转置处理。
关于运算器输出的运算结果,由输出循环部270变更数据串的排列。这里,在将转置后的要素数据位置向0到7保存的情况下,循环移位的量由要素数据位置相对于要素数据位置0的差分决定。图16(a)表示由循环移位后的运算结果构成的写入数据串的集合。
转置控制部250生成用于向寄存器组310进行写入的地址修正值。寄存器访问部700使用运算控制部230指定的写入地址和转置控制部250生成的地址修正值,按每个要素数据变更写入的寄存器的地址,将作为运算结果的矩阵数据的列数据写入至寄存器组310。
例如,在图16(b)及图17(c)中表示以要素数据位置3、要素数据位置5的顺序完成了数据串的运算处理的情况下的向寄存器组的写入。关于要素数据位置3的数据串P03-73,如图17(c)所示,将第4个要素地址修正值设为0,指定为第5个要素地址修正值为+1,第6个要素地址修正值设为+2,并向寄存器写入。同样,关于要素数据位置5的数据串P05-75,如图16(b)所示,将第6个要素地址修正值设为0、指定为第7个要素地址修正值为+1、第8个要素地址修正值为+2。为了改变写入的列数据,与实施方式1~3的偏移读取同样,变更作为基准的要素数据位置,同样生成按每个要素数据各增加+1的写访问的地址修正值。另外,在作为基准的要素数据(地址修正值为0的要素数据)不是第1个要素的情况下,将对最后的要素数据的地址修正值增加+1后的值作为第1个要素的修正值。如图17(d)所示,在全部的要素数据被写入的时点,在寄存器组310中以转置准备状态保存着矩阵数据。
在全部的要素数据的写入完成后,通过进行循环移位,能够回到图6所示的图像格式。
这里,在进行以要保存在寄存器组310中的矩阵数据为输入数据的运算处理的情况下,也可以如以下这样执行处理。在对寄存器组310进行写入后,不进行循环移位,当为了执行该运算而从寄存器组310读出数据时,用输入循环部260进行循环移位。由此,运算处理部240能够接受原来的数据配置的数据串。因此,在从寄存器组310读出数据前不需要另外进行循环移位。
根据该结构,例如在使用转置处理后的矩阵数据进行运算处理、将矩阵数据的一部分更新后使矩阵数据回到转置前的配置的情况下,只要仅将通过运算处理更新的矩阵数据的列数据(转置状态下的行数据)保存到寄存器组310中就可以,不需要将作为运算处理的结果的矩阵数据全部写入到寄存器组310中并转置,所以能够缩短伴随着转置处理的图像处理的处理时间。
(实施方式5)
在实施方式1至4中,说明了输出循环量从第1列起依次为{0,+1,+2,+3,+4,+5,+6,+7}、地址修正值为图7(b)、图8(c)、图8(d)所示的值、输入循环量从第1列起依次是{0,-1,-2,-3,-4,-5,-6,-7}的情况。在本实施方式中,说明关于向寄存器组310的写入前的重排、以及从寄存器组310读出后的重排进行循环移位以外的重排的情况。
图18表示有关实施方式5的转置运算装置800。在图18中,对于与图1相同的构成要素使用相同的附图标记而省略说明。
转置运算装置800由命令发行部210、命令解码部220、运算控制部230、运算处理部240、转置控制部850、寄存器访问部300、寄存器组310、输入数据重排部860、输出数据重排部870构成。
输入数据重排部860具有将寄存器访问部300从寄存器组310读出的数据串以要素数据单位进行重排的功能。
将数据串怎样重排根据从转置控制部850指定的输入重排信息决定。
由输入数据重排部860进行重排后的数据串作为输入数据传递至运算处理部240。
输出数据重排部870具有对由运算处理部240处理后的运算结果的数据串以要素数据单位进行重排的功能。数据串的重排方法与输入数据重排部860同样由转置控制部850决定。重排后的数据串输出至寄存器访问部300。
转置控制部850在与转置处理后执行的运算有关的从寄存器组310的数据读入处理、以及与读出该数据的运算有关的向寄存器组310的数据写入处理中实施数据串重排和偏移读取,从而不使运算处理部240进行用于转置的处理来实施转置处理。转置控制部850生成上述转置处理所需要的输出重排信息、作为用于偏移读取的列位置信息的地址修正值、输入重排信息,保持到所包含的设定寄存器320中。输入数据重排部860、输出数据重排部870、寄存器访问部300从设定寄存器320取得输出重排信息、输入重排信息及地址修正值。
<动作>
以下,表示由转置运算装置800进行的8行8列的矩阵数据的转置处理的顺序。
首先,当向寄存器组310保存图像数据时,转置控制部850对设定寄存器320设定输出重排信息,输出数据重排部870基于输出重排信息执行重排。转置控制部850指示输出重排信息以使转置前矩阵中的相同的列(例如P00-P70)不属于相同的列,如P00-P07不重排、对于P10-P17为{6,0,1,4,3,2,7,5}、对于P20-P27为{5,7,0,1,2,3,4,6}。另外,重排信息表示重排前的数据串的各要素数据在重排后以怎样的顺序排列,例如如果将数据串{P00,P01,P02,P03}按照重排信息{3,1,2,0}重排,则成为数据串{P03,P01,P02,P00}。
接着,输出数据重排部870将重排后的数据串输出至寄存器访问部300,寄存器访问部300向由运算控制部230指定的寄存器地址N所指示的寄存器保存P00-P07,向寄存器地址(N+1)所指示的寄存器保存P10-P17,向寄存器地址(N+2)所指示的寄存器保存P20-P27。在图19(a)中表示保存有全部的数据串的状态。
接着,对伴随着运算处理2的转置处理进行说明。
转置控制部850按转置前的矩阵数据的每一列制作地址修正值。寄存器访问部300使用由运算控制部230指定的寄存器地址N和由转置控制部850生成的地址修正值进行偏移读取,按转置前的矩阵数据的每一列输出数据串。
对地址修正值的生成方法进行说明。例如,如图19(b)所示,当读出相当于转置处理前的矩阵数据的第3列的数据串P02-P72时,地址修正值为{+6,+5,0,+7,+2,+1,+4,+3}。
同样,例如要进行P07-P77的数据串的读出时,只要将地址修正值设为{+3,+2,+7,+4,+5,+6,+1,0}就可以。通过这样变更作为基准的要素数据位置而重复偏移读取,寄存器上的矩阵数据按转置前的矩阵数据的每一列成为1个数据串而被取出。在图20(c)中表示全部的数据串被取出的状态。
最后,转置控制部850对输入数据重排部860指定用于重排以使被取出的数据串成为转置后的矩阵数据中的行数据的输入重排信息。例如,如果是第4列(P03-073),则由于将{P53,P63,P33,P03,P13,P23,P73,P43}的顺序重排为{P03,P13,P23,P33,P43,P53,P63,P73},所以为{3,4,5,2,7,0,1,6}。
通过对取出的全部的数据串使用输入重排信息进行重排,如图20(d)所示那样,向运算处理部240的输入数据成为与将原来的8行8列的矩阵数据转置后的矩阵数据等价。
根据这样的结构,在向寄存器组310的写入前的偏移读取的重排中,并不限于按矩阵数据的各行、向右移位量增加要素数据宽度量的循环移位,通过实施重排以使原来的矩阵数据的相同列的数据属于不同的列,能够进行基于本发明的矩阵数据的转置。
<有关本实施方式的其他变形例>
(1)在实施方式1~5中,说明了对使用与转置对象的矩阵数据的全部的列对应的列位置信息(地址修正值)进行运算处理2的运算处理部240或640输出整个转置矩阵的情况,但本发明并不限定于该情况。例如,在运算处理2仅使用与转置对象的矩阵数据的第1列、第2列、第3列对应的数据串的情况下,也可以仅将该部分数据输出至运算处理部240或640。通过这样,例如能够不生成整个转置矩阵而并行地执行需要转置矩阵的一部分的运算。
(2)在实施方式1~4中,说明了将循环量的最小单位设为要素数据的宽度、输入循环部260及输出循环部270循环移位被指定的循环量×要素数据的宽度所表示的量(位数)的情况,但本发明并不一定限定于该情况。例如也可以将循环量的最小单位设为1位而将循环量用位数单位指定,也可以将要素数据的宽度的整数倍(例如,2倍或4倍)设为最小单位。通过这样,例如,当要素数据的宽度是8位时,能够对将16位作为1个要素的矩阵数据进行转置处理。
(3)在实施方式1中,说明了输出循环量从第1列起依次为{0,+1,+2,+3,+4,+5,+6,+7}、地址修正值为图7(b)、图8(c)、图8(d)所示的值、输入循环量从第1列起依次为{0,-1,-2,-3,-4,-5,-6,-7}的情况,在实施方式2中,说明了寄存器访问的地址修正值、输入循环量、输出循环量是图11中记载的值的情况,但本发明并不一定限定于该情况。例如,也可以使输出循环量从第1列起依次为{+6,+7,0,+1,+2,+3,+4,+5},使输入循环量从第1列起依次为{-6,-7,0,-1,-2,-3,-4,-5},使地址修正值为与循环量相应的值、如果是第1列则为{+2,+3,+4,+5,+6,+7,0,+1}。这样,通过将输出循环量设定为从第1列起依次以要素数据单位各增加+1而得到的值,将输入循环量设定为绝对值相同而移位方向为反向,能够进行实施方式1~4的本发明的实施。
(4)在实施方式1、2、3中,说明了将输入循环量设为与对应的输出循环量相比绝对值相同而移位方向为反向的情况,但本发明并不一定限定于该情况。例如,也可以是,在作为转置处理对象的矩阵数据是n行n列(n是2以上的整数)的情况下,第j行(j是1以上且n以下的整数)的输出循环量与第j行的输入循环量的合计为n的整数倍(单位是要素数据宽度)。
(5)在实施方式2、3中,说明了在执行伴随着转置处理的运算后,为了使运算结果回到原来的排列,在该运算与使用该运算的结果作为输入数据的运算之间实施转置处理的情况,但本发明并不一定限定于该情况。例如,也可以如实施方式4那样,当将该运算的结果向寄存器保存时,寄存器访问部300或500还具有寄存器访问部700的功能,进行写地址修正而向寄存器写入,当执行使用该数据的运算时,寄存器访问部300或500进行通常的读入,输入循环部260进行循环移位。
或者,也可以是,当在实施方式1~3中进行转置处理时,在运算命令1中进行通过输出循环部270的循环移位和通过寄存器访问部300或500的偏移写入,在运算命令2中,寄存器访问部300或500进行通常的读入,输入循环部260进行循环移位。
(6)在实施方式2中,说明了将寄存器号码0-7作为转置寄存器的情况,但本发明并不一定限定于该情况。例如,也可以将寄存器号码24-31作为转置寄存器,也可以将寄存器号码0-15作为转置寄存器而能够将最大16行16列的数据转置。
(7)在实施方式3中,说明了不伴随着转置处理的运算命令使用不具有输入循环部260及输出循环部270的运算器进行处理的情况,但本发明并不一定限定于该情况。例如,也可以将不伴随着转置处理的运算命令作为伴随着输入循环量为0、输出循环量为0的转置处理的运算命令,由具有输入循环部260及输出循环部270的运算器进行处理。相反,也可以将伴随着输入循环量为0、输出循环量为0的转置处理的运算命令使用不具有输入循环部260及输出循环部270的运算器进行处理。或者,也可以是,运算处理部640具备仅具有输入循环部260的运算器,使该运算器执行伴随着输入循环量不是0而输出循环量是0的转置处理的运算命令,也可以具备仅具有输出循环部270的运算器,使该运算器执行伴随着输出循环量不是0而输入循环量是0的转置处理的运算命令。通过这样,能够提高并行处理的效率,并且能够实现因运算器资源的共用化带来的硬件资源的削减。
或者,在实施方式1、2中,也可以将运算处理部240做成如运算处理部640那样按每个运算器配置输入循环部260和输出循环部270的结构。例如,在实施方式2中,也可以使具有输入循环部260的运算器执行伴随着从转置寄存器的读出的命令,使具有输出循环部270的运算器执行伴随着向转置寄存器的写入的命令。
(8)在实施方式1、3~5中,说明了转置控制部250将列位置信息作为与运算控制部230、430或630生成的用于读入的寄存器的地址的差分即地址修正值提供的情况,但本发明并不一定限定于该情况。例如,也可以如实施方式2那样,列位置信息是直接指定寄存器的地址的信息。通过这样,即使用于保存用于转置的矩阵数据的寄存器的地址是离散的值,也能够实施有关本发明的转置处理,在进行偏移读取的情况下不需要由运算控制部230、430、630或830生成用于读入的寄存器的地址。
(9)在实施方式1、3~5中,说明了将8行8列的矩阵数据转置的情况,但本发明并不一定限定于该情况。例如,在1个寄存器中能够保存M个要素数据并且寄存器组由M个寄存器构成的情况下,能够将m行m列(m≤M)的矩阵数据转置。此外,在实施方式2中,在属于转置寄存器组510的1个寄存器中能够保存M个要素数据、并且在转置寄存器组510中存在M个寄存器的情况下,能够将m行m列(m≤M)的矩阵数据转置。
或者,在作为转置对象的矩阵不是正方矩阵的情况下,附加空行或空列以成为正方矩阵并输出至输出循环部270,从输入循环部260的输出删除所附加的空行或空列,由此能够用有关本发明的方法进行转置。
(10)在实施方式1~5中,说明了对运算处理1的运算结果进行转置处理而作为运算处理2的输入的情况,但本发明并不一定限定于该情况。例如,在对保存在作为外部的存储装置的图像存储器130中的矩阵数据进行转置处理而作为运算处理2的输入的情况下,只要进行将图像存储器130作为输入目的地、将寄存器组310或转置寄存器组510作为输出目的地、将输入数据原样输出的运算处理1就可以。同样,例如在对运算处理1的运算结果进行转置处理后保存到图像存储器130中的情况下,只要进行将寄存器组310或转置寄存器组510作为输入目的地、将图像存储器130作为输出目的地、将输入数据原样输出的运算处理2就可以。
(11)上述各实施方式的转置运算装置典型地也可以作为集成电路即LSI(LargeScaleIntegration)实现。既可以将各电路单独地作为1芯片,也可以包含全部的电路或一部分的电路而1芯片化。
这里记载为LSI,但根据集成度的差异,也有称作IC(IntegratedCircuit)、***LSI、超级LSI、特级LSI的情况。
此外,集成电路化的方法并不限定于LSI,也可以通过专用电路或通用处理器实现。也可以利用在LSI制造后能够编程的FPGA(FieldProgrammableGateArray)、或能够再构成LSI内部的电路单元的连接及设定的可重构处理器。
进而,如果通过半导体技术的进步或派生的其他技术出现替代LSI的集成电路化的技术,则当然也可以使用该技术进行功能块的集成化。
(12)实施方式1~5的说明不过是本发明的例示,能够不脱离本发明的范围而进行各种改良或变形。
<补充>
以下,对有关实施方式的转置运算装置和其集成电路及转置处理方法的结构及效果进行说明。
(1)有关实施方式的转置运算装置,其特征在于,具备:寄存器组,由寄存器构成,能够保存作为处理对象的矩阵数据,上述寄存器是保存构成上述矩阵数据的行数据、且能够以构成行数据的要素数据单位读出的寄存器;转置控制部,针对矩阵数据生成输出重排信息、列位置信息以及输入重排信息,上述输出重排信息用于按每个行数据重排以使同一列的要素数据分别成为不同的列,上述列位置信息表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所(位置),上述输入重排信息用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排;输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;寄存器访问部,将上述输出数据重排部进行重排后的矩阵数据写入上述寄存器组,从上述寄存器组读出数据,使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各1个取出要素数据的寄存器,并输出上述要素数据的集合;输入数据重排部,使用上述输入重排信息将上述寄存器访问部输出的上述要素数据的集合重排;以及运算处理部,对由上述输入数据重排部进行重排后的要素数据的集合进行运算。
此外,有关实施方式的集成电路,其特征在于,具备:寄存器组,由寄存器构成,能够保存作为处理对象的矩阵数据,上述寄存器是保存构成上述矩阵数据的行数据、且能够以构成行数据的要素数据单位读出的寄存器;转置控制部,针对矩阵数据生成输出重排信息、列位置信息以及输入重排信息,上述输出重排信息用于按每个行数据重排以使同一列的要素数据分别成为不同的列,上述列位置信息表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所,上述输入重排信息用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排;输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;寄存器访问部,将上述输出数据重排部进行重排后的矩阵数据写入上述寄存器组,从上述寄存器组读出数据,使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各1个取出要素数据的寄存器,并输出上述要素数据的集合;输入数据重排部,使用上述输入重排信息将上述寄存器访问部输出的上述要素数据的集合重排;以及运算处理部,对由上述输入数据重排部进行重排后的要素数据的集合进行运算。
此外,有关实施方式的转置处理方法,是包括寄存器组、对上述矩阵数据进行运算处理和转置处理的转置运算装置的转置处理方法,该寄存器组由保存构成矩阵数据的行数据、能够以构成行数据的要素数据单位读出的寄存器构成,并且能够保存上述矩阵数据,该转置处理方法的特征在于,包括:输出数据重排步骤,对矩阵数据按每个行数据重排,以使属于同一列的要素数据分别属于不同的列;数据存储步骤,使上述寄存器组存储上述重排后的矩阵数据;列位置信息生成步骤,生成列位置信息,该列位置信息表示存储有上述输出矩阵数据中属于同一列的要素数据的上述寄存器组的场所;数据读出步骤,使用上述列位置信息,使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各1个取出要素数据的寄存器,将上述要素数据的集合从上述寄存器组读出;输入数据重排步骤,将在上述数据读出步骤中读出的上述要素数据的集合重排;以及运算步骤,对上述输入重排后的要素数据的集合进行运算处理。
根据这些上述的结构,在转置运算装置中,将需要转置处理的数据写入寄存器组时按矩阵数据的每个行数据进行重排来写入寄存器组,通过读出处理和重排,能够生成转置矩阵数据,所以不需要将矩阵数据为了转置而转送至寄存器以外的存储装置,此外能够以矩阵数据的行数据单位一次写入到寄存器组中,能够对从寄存器组以矩阵数据的列数据单位一次读出并重新排列的要素数据的集合进行运算处理,所以能够缩短矩阵转置处理所需要的处理时间。
(2)此外,有关实施方式的上述(1)的转置运算装置也可以是,上述输出重排信息是表示用于在上述矩阵数据中按每个行数据通过循环移位进行重排的移位量的输出循环量。
通过这样,能够使在向寄存器组的数据的写入时进行的数据串的重排简单化。
(3)此外,有关实施方式的上述(2)的转置运算装置也可以是,上述输入重排信息是表示用于将上述寄存器访问部输出的上述要素数据的集合通过循环移位重排的移位量的输入循环量;上述转置控制部生成按上述矩阵数据的每一行向右各增加要素数据单位的输出循环量、以及与对应于该矩阵数据的输出循环量相比绝对值相同而移位的方向相反的输入循环量。
通过这样,能够使在向寄存器组的数据的写入时及从寄存器组的数据的读出时进行的数据串的重排简单化。
(4)此外,有关实施方式的上述(1)的转置运算装置也可以是,上述转置控制部具备存储是否使矩阵数据转置的指示的设定寄存器;如果在上述设定寄存器中有使矩阵数据转置的指示,则生成输出重排信息、列位置信息和输入重排信息。
通过这样,将用于转置处理的信息与输出需要转置处理的数据的运算处理及输入转置后的数据的运算处理建立关联,能够在向寄存器写入时和从寄存器读入时进行需要的重排处理。
(5)此外,有关实施方式的上述(1)的转置运算装置也可以是,上述寄存器组包括用于存储作为转置处理的对象的矩阵数据的专用寄存器;上述转置控制部在上述寄存器访问部对上述专用寄存器读写矩阵数据的情况下,生成输出重排信息、列位置信息和输入重排信息。
通过这样,转置运算装置能够根据将矩阵数据写入的寄存器或读出的寄存器是否是专用寄存器,来判别该矩阵数据是否是转置处理的对象。
(6)此外,有关实施方式的上述(1)的转置运算装置也可以是,上述转置运算装置执行的运算命令包括是否对该运算命令的对象及该运算命令的结果进行转置处理的信息;上述转置控制部使用伴随着转置处理的运算命令中包含的用于转置处理的信息,生成输出重排信息、列位置信息和输入重排信息。
通过这样,通过对输出需要转置处理的数据的运算命令和需要转置后的数据的运算命令附加关于转置处理的设定信息,能够执行转置处理,不需要另外的用于指示转置处理伴随着哪个运算命令的命令。
(7)此外,有关实施方式的转置运算装置,其特征在于,具备:寄存器组,由寄存器构成,能够保存作为处理对象的矩阵数据,上述寄存器是保存构成上述矩阵数据的行数据、能够以构成行数据的要素数据单位写入的寄存器;转置控制部,针对矩阵数据,生成用于按每个行数据重排以使同一列的要素数据分别成为不同的列的输出重排信息、表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所的列位置信息、以及用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排的输入重排信息;输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;寄存器访问部,使用上述列位置信息,将上述输出数据重排部进行重排后的矩阵数据的第i行(i≥1)向存储第i列的场所的上述寄存器组写入,从上述寄存器组读出数据;输入数据重排部,使用上述输入重排信息将上述寄存器访问部读出的上述要素数据的集合重排;以及运算处理部,对由上述输入数据重排部进行重排后的要素数据的集合进行运算。
通过这样,通过在将需要转置处理的数据写入寄存器组时按矩阵数据的每个行数据进行重排、并且作为矩阵数据的列数据而向寄存器组记录,仅通过将该矩阵数据从寄存器组读出并重排,就能够得到转置处理后的矩阵数据。
工业实用性
有关本发明的转置运算装置对于数字TV或记录机、数字静像照相机、数字摄像机等的伴随着转置处理的图像处理具有实用性。
附图标记说明
100图像处理装置
110图像输入部
120输入处理部
130图像存储器
140***控制部
150信号处理部
200、400、600、800转置运算装置
210、410、610命令发行部
220、420、620命令解码部
230、430、630运算控制部
240、640运算处理部
250、450、650转置控制部
260输入循环部
270输出循环部
300、500、700寄存器访问部
310寄存器组
510转置寄存器组
860输入数据重排部
870输出数据重排部

Claims (11)

1.一种转置运算装置,其特征在于,具备:
处理器,具备由下述寄存器构成、且能够保存作为处理对象的矩阵数据的寄存器组,上述寄存器是保存与构成上述矩阵数据的各个行数据对应的、构成行数据的要素数据的寄存器,该处理器通过1个命令保存构成上述行数据的要素数据,通过1个命令读出转置后的矩阵的各行数据的要素;
转置控制部,具备存储是否使矩阵数据转置的指示的设定寄存器,在上述设定寄存器中有使矩阵数据转置的指示时,针对矩阵数据生成输出重排信息、列位置信息以及输入重排信息,上述输出重排信息用于按每个行数据重排以使同一列的要素数据分别成为不同的列,上述列位置信息表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所,上述输入重排信息用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排;
输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;
寄存器访问部,将上述输出数据重排部进行重排后的矩阵数据写入上述寄存器组,从上述寄存器组读出数据,并使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,输出上述要素数据的集合;以及
输入数据重排部,使用上述输入重排信息将上述寄存器访问部输出的上述要素数据的集合重排;
上述处理器对由上述输入数据重排部进行重排后的要素数据的集合进行运算。
2.如权利要求1所述的转置运算装置,其特征在于,
上述输出重排信息是输出循环量,该输出循环量表示用于在上述矩阵数据中按每个行数据通过循环移位进行重排的移位量。
3.如权利要求2所述的转置运算装置,其特征在于,
上述输入重排信息是输入循环量,该输入循环量表示用于将上述寄存器访问部输出的上述要素数据的集合通过循环移位重排的移位量;
上述转置控制部生成按上述矩阵数据的每一行向右各增加要素数据单位的输出循环量、以及与对应于该矩阵数据的输出循环量相比绝对值相同而移位的方向相反的输入循环量。
4.一种转置运算装置,其特征在于,具备:
处理器,具备由下述寄存器构成、且能够保存作为处理对象的矩阵数据的寄存器组,上述寄存器是保存与构成上述矩阵数据的各个行数据对应的、构成行数据的要素数据的寄存器,该处理器通过1个命令保存构成上述行数据的要素数据,通过1个命令读出转置后的矩阵的各行数据的要素;
转置控制部,针对矩阵数据生成输出重排信息、列位置信息以及输入重排信息,上述输出重排信息用于按每个行数据重排以使同一列的要素数据分别成为不同的列,上述列位置信息表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所,上述输入重排信息用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排;
输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;
寄存器访问部,将上述输出数据重排部进行重排后的矩阵数据写入上述寄存器组,从上述寄存器组读出数据,并使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,输出上述要素数据的集合;以及
输入数据重排部,使用上述输入重排信息将上述寄存器访问部输出的上述要素数据的集合重排;
上述处理器对由上述输入数据重排部进行重排后的要素数据的集合进行运算;
上述寄存器组包括用于存储作为转置处理的对象的矩阵数据的专用寄存器;
上述转置控制部在上述寄存器访问部对上述专用寄存器读写矩阵数据的情况下,生成输出重排信息、列位置信息以及输入重排信息。
5.一种转置运算装置,对矩阵数据进行运算处理和转置处理,其特征在于,具备:
处理器,具备由下述寄存器构成、且能够保存作为处理对象的矩阵数据的寄存器组,上述寄存器是保存与构成上述矩阵数据的各个行数据对应的、构成行数据的要素数据的寄存器,该处理器通过1个命令保存构成上述行数据的要素数据,通过1个命令读出转置后的矩阵的各行数据的要素;
转置控制部,针对矩阵数据生成输出重排信息、列位置信息以及输入重排信息,上述输出重排信息用于按每个行数据重排以使同一列的要素数据分别成为不同的列,上述列位置信息表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所,上述输入重排信息用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排;
输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;
寄存器访问部,将上述输出数据重排部进行重排后的矩阵数据写入上述寄存器组,从上述寄存器组读出数据,并使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,输出上述要素数据的集合;以及
输入数据重排部,使用上述输入重排信息将上述寄存器访问部输出的上述要素数据的集合重排;
上述处理器对由上述输入数据重排部进行重排后的要素数据的集合进行运算;
上述转置运算装置执行的运算命令包括是否对该运算命令的对象及该运算命令的结果进行转置处理的信息;
上述转置控制部使用伴随着转置处理的运算命令所包含的用于转置处理的信息,生成输出重排信息、列位置信息以及输入重排信息。
6.一种集成电路,其特征在于,具备:
处理器,具备由下述寄存器构成、且能够保存作为处理对象的矩阵数据的寄存器组,上述寄存器是保存与构成上述矩阵数据的各个行数据对应的、构成行数据的要素数据的寄存器,该处理器通过1个命令保存构成上述行数据的要素数据,通过1个命令读出转置后的矩阵的各行数据的要素;
转置控制部,具备存储是否使矩阵数据转置的指示的设定寄存器,在上述设定寄存器中有使矩阵数据转置的指示时,针对矩阵数据生成输出重排信息、列位置信息以及输入重排信息,上述输出重排信息用于按每个行数据重排以使同一列的要素数据分别成为不同的列,上述列位置信息表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所,上述输入重排信息用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排;
输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;
寄存器访问部,将上述输出数据重排部进行重排后的矩阵数据写入上述寄存器组,从上述寄存器组读出数据,并使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,输出上述要素数据的集合;以及
输入数据重排部,使用上述输入重排信息将上述寄存器访问部输出的上述要素数据的集合重排;
上述处理器对由上述输入数据重排部进行重排后的要素数据的集合进行运算。
7.一种转置处理方法,其特征在于,是包括处理器的转置运算装置的转置处理方法,该处理器具备由下述寄存器构成且能够保存矩阵数据的寄存器组,上述寄存器是保存与构成上述矩阵数据的各个行数据对应的、构成行数据的要素数据的寄存器,上述处理器通过1个命令保存构成上述行数据的要素数据,通过1个命令读出转置后的矩阵的各行数据的要素,进而对上述矩阵数据进行运算处理和转置处理,
上述转置运算装置具备存储是否使矩阵数据转置的指示的设定寄存器;
上述转置处理方法包括:
输出数据重排步骤,对矩阵数据按每个行数据重排,以使属于同一列的要素数据分别属于不同的列;
数据存储步骤,使上述寄存器组存储上述重排后的矩阵数据;
列位置信息生成步骤,生成列位置信息,该列位置信息表示存储有上述矩阵数据中属于同一列的要素数据的上述寄存器组的场所;
数据读出步骤,使用上述列位置信息,按上述输出数据重排步骤进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,从上述寄存器组读出上述要素数据的集合;
输入数据重排步骤,将在上述数据读出步骤中读出的上述要素数据的集合重排;以及
运算步骤,由上述处理器对上述输入重排后的要素数据的集合进行运算处理;
在上述设定寄存器中有使矩阵数据转置的指示时,执行上述输出数据重排步骤、上述列位置信息生成步骤以及上述输入数据重排步骤。
8.一种集成电路,其特征在于,具备:
处理器,具备由下述寄存器构成、且能够保存作为处理对象的矩阵数据的寄存器组,上述寄存器是保存与构成上述矩阵数据的各个行数据对应的、构成行数据的要素数据的寄存器,该处理器通过1个命令保存构成上述行数据的要素数据,通过1个命令读出转置后的矩阵的各行数据的要素;
转置控制部,针对矩阵数据生成输出重排信息、列位置信息以及输入重排信息,上述输出重排信息用于按每个行数据重排以使同一列的要素数据分别成为不同的列,上述列位置信息表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所,上述输入重排信息用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排;
输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;
寄存器访问部,将上述输出数据重排部进行重排后的矩阵数据写入上述寄存器组,从上述寄存器组读出数据,并使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,输出上述要素数据的集合;以及
输入数据重排部,使用上述输入重排信息将上述寄存器访问部输出的上述要素数据的集合重排;
上述处理部对由上述输入数据重排部进行重排后的要素数据的集合进行运算;
上述寄存器组包括用于存储作为转置处理的对象的矩阵数据的专用寄存器;
上述转置控制部在上述寄存器访问部对上述专用寄存器读写矩阵数据的情况下,生成输出重排信息、列位置信息以及输入重排信息。
9.一种转置处理方法,其特征在于,是包括处理器的转置运算装置的转置处理方法,该处理器具备由下述寄存器构成且能够保存矩阵数据的寄存器组,上述寄存器是保存与构成上述矩阵数据的各个行数据对应的、构成行数据的要素数据的寄存器,上述处理器通过1个命令保存构成上述行数据的要素数据,通过1个命令读出转置后的矩阵的各行数据的要素,进而对上述矩阵数据进行运算处理和转置处理,
上述寄存器组包括用于存储作为转置处理的对象的矩阵数据的专用寄存器;
上述转置处理方法包括:
输出数据重排步骤,对矩阵数据按每个行数据重排,以使属于同一列的要素数据分别属于不同的列;
数据存储步骤,使上述寄存器组存储上述重排后的矩阵数据;
列位置信息生成步骤,生成列位置信息,该列位置信息表示存储有上述矩阵数据中属于同一列的要素数据的上述寄存器组的场所;
数据读出步骤,使用上述列位置信息,按上述输出数据重排步骤进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,从上述寄存器组读出上述要素数据的集合;
输入数据重排步骤,将在上述数据读出步骤中读出的上述要素数据的集合重排;以及
运算步骤,由上述处理器对上述输入重排后的要素数据的集合进行运算处理;
在上述数据存储步骤或上述数据读出步骤对上述专用寄存器读写矩阵数据的情况下,执行上述输出数据重排步骤、上述列位置信息生成步骤以及上述输入数据重排步骤。
10.一种集成电路,对矩阵数据进行运算处理和转置处理,其特征在于,具备:
处理器,具备由下述寄存器构成、且能够保存作为处理对象的矩阵数据的寄存器组,上述寄存器是保存与构成上述矩阵数据的各个行数据对应的、构成行数据的要素数据的寄存器,该处理器通过1个命令保存构成上述行数据的要素数据,通过1个命令读出转置后的矩阵的各行数据的要素;
转置控制部,针对矩阵数据生成输出重排信息、列位置信息以及输入重排信息,上述输出重排信息用于按每个行数据重排以使同一列的要素数据分别成为不同的列,上述列位置信息表示在上述矩阵数据中属于同一列的要素数据存储于上述寄存器组中的场所,上述输入重排信息用于将按照上述列位置信息从上述寄存器组读出的上述矩阵数据的同一列的要素数据的集合重排;
输出数据重排部,使用上述输出重排信息将上述矩阵数据重排;
寄存器访问部,将上述输出数据重排部进行重排后的矩阵数据写入上述寄存器组,从上述寄存器组读出数据,并使用上述列位置信息按上述输出数据重排部进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,输出上述要素数据的集合;以及
输入数据重排部,使用上述输入重排信息将上述寄存器访问部输出的上述要素数据的集合重排;
上述处理器对由上述输入数据重排部进行重排后的要素数据的集合进行运算;
上述集成电路执行的运算命令包括是否对该运算命令的对象及该运算命令的结果进行转置处理的信息;
上述转置控制部使用伴随着转置处理的运算命令所包含的用于转置处理的信息,生成输出重排信息、列位置信息以及输入重排信息。
11.一种转置处理方法,其特征在于,是包括处理器的转置运算装置的转置处理方法,该处理器具备由下述寄存器构成且能够保存矩阵数据的寄存器组,上述寄存器是保存与构成上述矩阵数据的各个行数据对应的、构成行数据的要素数据的寄存器,上述处理器通过1个命令保存构成上述行数据的要素数据,通过1个命令读出转置后的矩阵的各行数据的要素,进而对上述矩阵数据进行运算处理和转置处理,
上述转置运算装置执行的运算命令包括是否对该运算命令的对象及该运算命令的结果进行转置处理的信息;
上述转置处理方法包括:
输出数据重排步骤,使用伴随着转置处理的运算命令所包含的用于转置处理的信息,对矩阵数据按每个行数据重排,以使属于同一列的要素数据分别属于不同的列;
数据存储步骤,使上述寄存器组存储上述重排后的矩阵数据;
列位置信息生成步骤,使用伴随着转置处理的运算命令所包含的用于转置处理的信息生成列位置信息,该列位置信息表示存储有上述矩阵数据中属于同一列的要素数据的上述寄存器组的场所;
数据读出步骤,使用上述列位置信息,按上述输出数据重排步骤进行重排后的矩阵数据的每一列选择各一个取出要素数据的寄存器,从上述寄存器组读出上述要素数据的集合;
输入数据重排步骤,使用伴随着转置处理的运算命令所包含的用于转置处理的信息,将在上述数据读出步骤中读出的上述要素数据的集合重排;以及
运算步骤,由上述处理器对上述输入重排后的要素数据的集合进行运算处理。
CN201280003250.XA 2011-10-14 2012-09-11 转置运算装置及其集成电路、以及转置处理方法 Expired - Fee Related CN103168289B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011227127 2011-10-14
JP2011-227127 2011-10-14
PCT/JP2012/005743 WO2013054468A1 (ja) 2011-10-14 2012-09-11 転置演算装置とその集積回路、および転置処理方法

Publications (2)

Publication Number Publication Date
CN103168289A CN103168289A (zh) 2013-06-19
CN103168289B true CN103168289B (zh) 2016-07-06

Family

ID=48081540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280003250.XA Expired - Fee Related CN103168289B (zh) 2011-10-14 2012-09-11 转置运算装置及其集成电路、以及转置处理方法

Country Status (4)

Country Link
US (1) US9201899B2 (zh)
JP (1) JP6078923B2 (zh)
CN (1) CN103168289B (zh)
WO (1) WO2013054468A1 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140149480A1 (en) * 2012-11-28 2014-05-29 Nvidia Corporation System, method, and computer program product for transposing a matrix
CN103237157B (zh) * 2013-05-13 2015-12-23 四川虹微技术有限公司 一种实时高清视频图像转置器
CN104317554B (zh) * 2014-10-14 2017-02-15 中国航天科技集团公司第九研究院第七七一研究所 用于simd处理器的寄存器文件数据读写装置和方法
US10762164B2 (en) 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
CN106991077A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种矩阵计算装置
CN105808309B (zh) * 2016-03-08 2019-04-05 中国科学院软件研究所 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法
US10067911B2 (en) * 2016-07-26 2018-09-04 Advanced Micro Devices, Inc. High performance inplace transpose operations
US10949496B2 (en) * 2016-12-30 2021-03-16 Intel Corporation Dimension shuffling using matrix processors
US9952831B1 (en) 2017-02-16 2018-04-24 Google Llc Transposing in a matrix-vector processor
JP6988231B2 (ja) * 2017-07-26 2022-01-05 富士通株式会社 情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム
US10908906B2 (en) 2018-06-29 2021-02-02 Intel Corporation Apparatus and method for a tensor permutation engine
CN109408117B (zh) * 2018-10-08 2021-01-26 京东方科技集团股份有限公司 矩阵转置装置及方法、显示装置
US10970201B2 (en) * 2018-10-24 2021-04-06 Arm Limited System, method and apparatus for data manipulation
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10768899B2 (en) 2019-01-29 2020-09-08 SambaNova Systems, Inc. Matrix normal/transpose read and a reconfigurable data processor including same
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
CN112149049A (zh) * 2019-06-26 2020-12-29 北京百度网讯科技有限公司 用于变换矩阵的装置和方法、数据处理***
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
CN113986200A (zh) * 2021-10-29 2022-01-28 上海阵量智能科技有限公司 矩阵转置电路及人工智能芯片、电子设备
US20230345021A1 (en) * 2021-11-12 2023-10-26 Meta Platforms, Inc. Efficient storage of data for a multi-stage two-dimensional transform

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784427A (en) * 1995-06-24 1998-07-21 Motorola, Inc. Feedback and shift unit
US5815421A (en) * 1995-12-18 1998-09-29 Intel Corporation Method for transposing a two-dimensional array
US6021420A (en) * 1996-11-26 2000-02-01 Sony Corporation Matrix transposition device
US6930800B1 (en) * 1998-09-09 2005-08-16 Fuji Xerox Co., Ltd. Halftone generation system and halftone generation method

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4370732A (en) * 1980-09-15 1983-01-25 Ibm Corporation Skewed matrix address generator
DE69032259T2 (de) * 1989-09-20 1998-08-13 Fujitsu Ltd Paralleldatenverarbeitungsanlage
JPH03160537A (ja) * 1989-11-20 1991-07-10 Fuji Xerox Co Ltd メモリ制御装置
US5386233A (en) * 1993-05-13 1995-01-31 Intel Corporation Method for efficient memory use
US5684534A (en) * 1993-05-26 1997-11-04 Intel Corporation Task-splitting dual-processor system for motion estimation processing
US5933160A (en) * 1995-11-27 1999-08-03 Sun Microsystems High-performance band combine function
US5995579A (en) * 1996-12-19 1999-11-30 Vlsi Technology, Inc. Barrel shifter, circuit and method of manipulating a bit pattern
US6014143A (en) * 1997-05-30 2000-01-11 Hewlett-Packard Company Ray transform method for a fast perspective view volume rendering
US7106860B1 (en) * 2001-02-06 2006-09-12 Conexant, Inc. System and method for executing Advanced Encryption Standard (AES) algorithm
US7162684B2 (en) * 2003-01-27 2007-01-09 Texas Instruments Incorporated Efficient encoder for low-density-parity-check codes
US7386703B2 (en) * 2003-11-18 2008-06-10 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array
JP3985797B2 (ja) * 2004-04-16 2007-10-03 ソニー株式会社 プロセッサ
US7243210B2 (en) * 2005-05-31 2007-07-10 Atmel Corporation Extracted-index addressing of byte-addressable memories
US7669014B2 (en) * 2007-07-23 2010-02-23 Nokia Corporation Transpose memory and method thereof
US7984273B2 (en) * 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory
US8175853B2 (en) * 2008-03-28 2012-05-08 International Business Machines Corporation Systems and methods for a combined matrix-vector and matrix transpose vector multiply for a block-sparse matrix
NO329837B1 (no) * 2008-07-09 2011-01-03 Tandberg Telecom As Fremgangsmate for prosessor-effektivt deblokkingsfiltrering
US8539201B2 (en) * 2009-11-04 2013-09-17 International Business Machines Corporation Transposing array data on SIMD multi-core processor architectures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784427A (en) * 1995-06-24 1998-07-21 Motorola, Inc. Feedback and shift unit
US5815421A (en) * 1995-12-18 1998-09-29 Intel Corporation Method for transposing a two-dimensional array
US6021420A (en) * 1996-11-26 2000-02-01 Sony Corporation Matrix transposition device
US6930800B1 (en) * 1998-09-09 2005-08-16 Fuji Xerox Co., Ltd. Halftone generation system and halftone generation method

Also Published As

Publication number Publication date
US20140003742A1 (en) 2014-01-02
US9201899B2 (en) 2015-12-01
JPWO2013054468A1 (ja) 2015-03-30
CN103168289A (zh) 2013-06-19
WO2013054468A1 (ja) 2013-04-18
JP6078923B2 (ja) 2017-02-15

Similar Documents

Publication Publication Date Title
CN103168289B (zh) 转置运算装置及其集成电路、以及转置处理方法
US11170294B2 (en) Hardware accelerated machine learning
US10936230B2 (en) Computational processor-in-memory with enhanced strided memory access
US20170337156A1 (en) Computing machine architecture for matrix and array processing
JP2022543331A (ja) データ構造処理
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
US11775206B2 (en) Maintaining synchronisation between memory writing and reading blocks using an internal buffer and a control channel
CN109478175A (zh) 在simd架构中用于通道混洗的混洗器电路
US11120328B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
US20240160444A1 (en) Computing machine with secure matrix space
CN114565501B (zh) 用于卷积运算的数据加载方法及其装置
JPWO2019082859A1 (ja) 推論装置、畳み込み演算実行方法及びプログラム
US20210241806A1 (en) Streaming access memory device, system and method
US20230244751A1 (en) Device and method for accelerating matrix multiply operations
JP2022508028A (ja) 3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末
CN102804150B (zh) 数据处理装置、数据处理方法及数据共享***
CN106021171A (zh) 一种基于大规模粗粒度可重构处理器的sm4-128的密钥扩展实现方法及***
JP5532132B2 (ja) Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法
CN110050259B (zh) 矢量处理器及其控制方法
CN111566614A (zh) 位宽匹配电路、数据写入装置、数据读出装置和电子设备
CN106708422A (zh) 数据储存装置及其数据维护方法
US11676074B2 (en) Heterogeneous processing system for federated learning and privacy-preserving computation
CN110336658A (zh) 基于aes算法的加密方法、用户设备、存储介质及装置
CN106100790A (zh) 一种数据传输方法及***
CN104834501A (zh) 一种基于l结构处理器的寄存器和寄存器操作方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160304

Address after: Osaka Japan

Applicant after: PANASONIC INTELLECTUAL PROPERTY MANAGEMENT Co.,Ltd.

Address before: Osaka Japan

Applicant before: Matsushita Electric Industrial Co.,Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160706

Termination date: 20200911

CF01 Termination of patent right due to non-payment of annual fee