(57)【特許請求の範囲】
【請求項１】
入力列ベクタに対して転置作用を施して出力列ベクタを得る行列転置装置であって、
各々独立に入力列ベクタＸｋの任意の要素を選択して出力する入力選択装置と、
各々独立に値域をもつアドレスを１系統出力することができ、入力手順および出力手順に先立って各々独立にアドレス値を設定可能で、入力手順中または出力手順中の各１動作毎にアドレス値を１ずつ増加または減少させるアドレス発生器と、
記憶領域がマトリクス状になるように配置され、各々上記アドレス発生器で発生されるアドレスで指定可能な記憶領域を有し、１つの書き込み動作と１つの読み込み動作を実行する記憶装置と、
各々独立に任意の上記記憶装置の出力を選択して出力する装置であり、上記記憶装置の出力が入力される毎にこの装置の最終出力行列である列ベクタＹｈを逐次出力する出力選択装置と、
入力列ベクタＸｋを上記記憶装置に記憶するときは、任意の入力行ベクタの各要素が互いに異なる記憶装置に格納されるように上記入力選択装置およびアドレス発生器を制御し、また、上記記憶装置に記憶された要素データを読み出すときは、この読み出し時のアドレス順序が上記記憶時のアドレス順序と異なり、上記記憶装置に格納された各行列要素に応じて任意の転置出力列ベクタを定められた順序および定められた列ベクタ内の要素の順を保ちつつ並列に出力されるように上記アドレス発生器を制御する制御手段と
を有する行列転置装置。
【請求項２】
上記複数の記憶装置は、各記憶領域がマトリクス状となるように配置されており、
上記制御手段は、アドレスを循環させながら列ベクタの一系統をなす要素データを複数の記憶装置のそれぞれ異なる列アドレスの記憶領域に格納させ、マトリクスの同一列単位でアドレス指定を行って並列出力ベクタを出力させるように上記アドレス発生器を制御する請求項１記載の行列転置装置。
【請求項３】
上記複数の記憶装置は、各記憶領域がマトリクス状となるように配置されており、
上記制御手段は、複数のデータ列をシフトさせながら列ベクタの一系統をなす要素データを複数の記憶装置のそれぞれ同一の列アドレスの記憶領域に格納させ、アドレスを循環させて並列出力ベクタを出力させるように上記アドレス発生器を制御する請求項１記載の行列転置装置。
【請求項４】
正方行列データを入出力する請求項１記載の行列転置装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、たとえば、画像圧縮等の技術分野で用いられる２次元直交変換等、転置操作を必要とする演算を効率的に処理するための専用演算装置または汎用演算装置内で使用される行列転置装置に関するものである。
【０００２】
【従来の技術】
従来、２次元直交変換等、行列データの転置操作を必要とする演算装置の中で、高速な処理が必要とされるものは、複数の演算器により入力行列データに対して１次変換もしくは１次変換に等価な処理を施した行列データを記憶装置に格納し、その記憶装置から取り出した行列データに転置作業を施して次の１次変換もしくは１次変換に等価な処理回路に入力している。
【０００３】
図８は、この種の行列転置装置の構成例を示すブロック図である。
図８に示すように、行列転置装置１０は、記憶装置１１−１〜１１−Ｍ、切換スイッチ回路１２およびシフト装置１３により構成されている。また図中、１４は演算器を示している。
【０００４】
記憶装置１２−１〜１２〜Ｍは、たとえば１入力１出力のＲＡＭ(Random Access Memory)により構成され、各々１からＮまでのＮ個のアドレスで指定が可能な記憶領域を有し、１つの書き込み動作と１つの読み込み動作を実行するものである。
【０００５】
切換スイッチ回路１２は、それぞれ記憶装置１２−１〜１２−Ｍの出力端子に接続されたＭ個の入力端子ＴＩ−１〜ＴＩ−Ｍとシフト装置１３の入力端子に接続された１個の出力端子ＴＯ−１を有し、出力端子ＴＯ−１を入力端子ＴＩ−１〜ＴＩ−Ｍと順次に接続して、記憶装置１１−１〜１１−Ｍに記憶されている列ベクタの要素データをシフト装置１３に入力させる。
【０００６】
シフト装置１３は、切換スイッチ回路１２を介してＭ個の要素データを逐次読み取り、読み取りが終わるとＭ個の要素データをその読み込んだ順番に従って定められた出力に列ベクタＹ１〜ＹＭとして並列に出力する。
【０００７】
演算器１４は、入力行列データに対して１次変換処理を施し、列ベクタＸ１〜ＸＮに分割して、記憶装置１１ー１〜１１−Ｍに出力する。またたとえば、演算器１４は、転置作用を受けたシフト装置１３による列ベクタＹ１〜ＹＭを受けてさらに１次変換を施す。
【０００８】
次に、上記各構成要素を使用して転置出力を得る手順を説明する。
ここではＭ×Ｎ行列Ｘを入力し、その転置であるＮ×Ｍ行列Ｙを得る手順を説明する。
【０００９】
入力行列Ｘは、演算器１４で列ベクタＸ１〜ＸＮに分割され、各列ベクタは順次記憶装置１１−１〜１１−Ｍに対して入力される。
列ベクタＸｋ（ただし、ｋは１〜Ｎの整数）のｉ番目の要素（ただし、ｉは１〜Ｍの整数）は記憶装置１１−ｉのアドレスｋの記憶領域に書き込まれ、格納される。この際、Ｘｋの各要素は同時に各々の記憶装置に書き込まれる。この操作をｋ＝１からｋ＝ＮまでＮ回繰り返すことにより、記憶装置１１−１〜１１−Ｍ内にＸの全要素が格納される。
【００１０】
次に、記憶装置１１−ｉのアドレス１からＮまでを読み出し、切換スイッチ回路１２を介してシフト装置１３に順次入力し、シフト装置１４の出力にＸの行ベクタＴ（Ｘ）ｉが出力される。
ここでＴ（Ｘ）は行列の転置を表す関数とする。この操作が終わった時点でシフト装置１３の出力にＸの行ベクタＴ（Ｘ）ｉ、すなわち出力Ｙの列ベクタＹｉが出力される。この操作をｉ＝１からｉ＝Ｍ回繰り返すことにより出力列ベクタＹ１〜ＹＭが出力され、出力行列Ｙの全要素が出力されることとなる。
【００１１】
【発明が解決しようとする課題】
ところで、上述したように行列転置操作において、１列分のデータが揃うまで行データをＮ回読み出さねばならず、この操作が高速または短時間で２次元直交変換等を演算する際の障害となっていた。
【００１２】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、２次元直交変換等の演算処理を高速化できる行列転置装置を提供することにある。
【００１３】
【課題を解決するための手段】
上記目的を達成するため、本発明は、入力列ベクタに対して転置作用を施して出力列ベクタを得る行列転置装置であって、入力列ベクタを並列に入力でき、並列に出力列ベクタを出力可能で、かつ、アドレス範囲の総和が入力行列の全要素データを格納可能なように配置された複数の記憶装置と、任意の入力行ベクタの各要素データを互いに異なる記憶装置に格納させ、格納された各行列要素に応じて任意の転置出力列ベクタを定められた順序および定められた列ベクタ内の要素データの順を保ちつつ並列に出力させる制御手段とを有する。
【００１４】
本発明によれば、入力列ベクタに対して転置作用を施して出力列ベクタを得る行列転置装置であって、各々独立に入力列ベクタＸｋの任意の要素を選択して出力する入力選択装置と、各々独立に値域をもつアドレスを１系統出力することができ、入力手順および出力手順に先立って各々独立にアドレス値を設定可能で、入力手順中または出力手順中の各１動作毎にアドレス値を１ずつ増加または減少させるアドレス発生器と、記憶領域がマトリクス状になるように配置され、各々上記アドレス発生器で発生されるアドレスで指定可能な記憶領域を有し、１つの書き込み動作と１つの読み込み動作を実行する記憶装置と、各々独立に任意の上記記憶装置の出力を選択して出力する装置であり、上記記憶装置の出力が入力される毎にこの装置の最終出力行列である列ベクタＹｈを逐次出力する出力選択装置と、入力列ベクタＸｋを上記記憶装置に記憶するときは、任意の入力行ベクタの各要素が互いに異なる記憶装置に格納されるように上記入力選択装置およびアドレス発生器を制御し、また、上記記憶装置に記憶された要素データを読み出すときは、この読み出し時のアドレス順序が上記記憶時のアドレス順序と異なり、上記記憶装置に格納された各行列要素に応じて任意の転置出力列ベクタを定められた順序および定められた列ベクタ内の要素の順を保ちつつ並列に出力されるように上記アドレス発生器を制御する制御手段とを有する。
【００１５】
本発明によれば、たとえば複数の記憶装置は、各記憶領域がマトリクス状となるように配置され、制御手段によって、アドレスを循環させながら列ベクタの一系統をなす要素データが複数の記憶装置のそれぞれ異なる列アドレスの記憶領域に格納される。そして、マトリクスの同一列単位でアドレス指定を行って並列出力ベクタが出力される。
また、たとえば複数のデータ列をシフトさせながら列ベクタの一系統をなす要素データが複数の記憶装置のそれぞれ同一の列アドレスの記憶領域に格納され、アドレスを循環させて並列出力ベクタの出力が行われる。
これにより、高速な転置操作を実現でき、２次元直交変換等の演算処理を高速化することができる。
また、本行列転置装置は、正方行列データを入出力とすることも可能であり、たとえば２次元直交変換を処理する専用演算装置、画像圧縮装置または画像伸長装置に使用される２次元直交変換を処理する専用演算装置、あるいは２次元直交変換を処理する場合がある汎用演算装置の一部等に使用することが可能である。
【００１６】
【発明の実施の形態】
以下、図面を参照し、本発明の実施例について説明する。
【００１７】
図１は、本発明に係る行列転置装置の一実施形態を示すブロック構成図である。
図１に示すように、行列転置装置２０は、入力選択装置２１−０〜２１−ｐ、記憶装置２２−０〜２２−ｐ、アドレス発生器２３−０〜２３−ｐ、出力選択装置２４−０〜２４−ｎ、および制御回路２５により構成されている。また図中２６は演算器を示している。
【００１８】
なお、本実施形態では説明を簡単にするため、行列の要素、選択装置、記憶装置などを指定するための添え字は１からではなく０から始まるものとしている。入力行列Ｘの各要素をＸｉｊ（ｉ＝０〜ｍ、ｊ＝０〜ｎ）と表し、たとえば通常の表現でのＸの（１、２）要素、すなわち行列の最上段の左から２番目の要素はＸ０１と表記する。出力行列Ｙに関しても同様であり、当然ながらＸｉｊとＹｊｉは同一の値となる。
【００１９】
また以下では、Ｍ≧Ｎの場合Ｐ＝ＭかつＱ＝Ｎ、Ｍ≦Ｎの場合Ｐ＝ＮかつＱ＝Ｍとし、ｎ＝Ｎ−１、ｍ＝Ｍ−１、ｐ＝Ｐ−１、ｑ＝Ｑ−１とする。
【００２０】
入力選択装置２１−ｉ（ｉ＝０〜ｐ）は、制御装置２５による第１制御信号ＣＴＬ１に応じて、各々独立に入力列ベクタＸｋ（ｋ＝０〜ｎ）の任意の要素Ｘｊｋ（ｊ＝０〜ｍ）を選択して出力する。入力選択装置２１−ｉの出力端子は記憶装置２２−ｉの入力端子に接続されている。
【００２１】
記憶装置２２−ｉ（ｉ＝０〜ｐ）は、たとえば１入力１出力のＲＡＭにより構成され、各々アドレス発生器２３−ｉで発生される０からｑまでのＱ個のアドレスＡＤＲ０〜ＡＤＲｑで指定可能なＱ個の記憶領域を有し、１つの書き込み動作と１つの読み込み動作を実行する。
【００２２】
アドレス発生器２３−ｉ（ｉ＝０〜ｐ）は、制御装置２５による第２制御信号ＣＴＬ２に応じて、各々独立に０からｑまでの値域をもつアドレスＡＤＲ０〜ＡＤＲｑを１系統出力することができ、入力手順および出力手順に先立って各々独立に０からｑまでのアドレス値を設定可能で、入力手順中または出力手順中の各１動作毎にＱを法とする剰余系でアドレス値を１ずつ増加または１ずつ減少させる。
【００２３】
出力選択装置２４−ｊ（ｊ＝０〜ｎ）は、制御装置２５による第３制御信号ＣＴＬ３に応じて、各々独立に任意の記憶装置の出力を選択して出力する装置であり、記憶装置２２−ｉの出力を入力される毎にこの装置の最終出力行列であるＹの列ベクタＹｈ（ｈ＝０〜ｍ）を逐次出力する。
【００２４】
制御装置２５は、入力列ベクタＸｋ（ｋ＝０〜ｎ）を記憶装置２２−ｉに記憶するときは、第１制御信号ＣＴＬ１を入力選択装置２１−ｉに出力するとともに、第２制御信号ＣＴＬ２をアドレス発生器２３−ｉに出力する。
この場合、たとえば全ての記憶装置２２−０〜２２−ｐの記憶領域０から記憶領域ｐに向かって順次に記憶していくように、各アドレス発生器２３−０〜２３−ｐが同時に発生する一系統出力アドレスＡＤＲは、それぞれ異なる。
また、記憶装置２２−ｉに記憶された要素データを読み出すときは、第２制御信号ＣＴＬ２をアドレス発生器２３−ｉに出力するとともに、第３制御信号ＣＴＬ３を出力選択装置２４−ｊに出力する。
この場合、たとえば任意の列ベクタＹｈが得られるように、各アドレス発生器２３−０〜２３−ｐが同時に発生する一系統出力アドレスＡＤＲは、それぞれ異なる。
すなわち、この例では、記憶装置２２−０〜２２−ｐへのデータの書き込みは、全記憶装置でいわゆる縦方向に一斉に行い、読み出しは、選択的なアドレス指定により行う。
【００２５】
演算器２６は、入力行列データに対して１次変換処理を施し、列ベクタＸ００〜Ｘｍ０、Ｘ０１〜Ｘｍ１、・・・、Ｘ０ｎ〜Ｘｍｎを入力選択装置２１−ｉにに出力する。またたとえば、演算器２５は、出力選択装置２４−ｊによる列ベクタＹ００〜Ｙ０ｎ、Ｙ０１〜Ｙｎ１、〜、Ｙ０ｍ〜Ｙｎｍを受けてさらに１次変換を施す。
【００２６】
以下では、制御装置２５の制御信号ＣＴＬ１，ＣＴＬ２，ＣＴＬ３に基づき、上記構成要素を用いてＭ×Ｎ行列ＸをＮ×Ｍ行列Ｙに変換する手順を説明する。この手順は、後に定義される書き込み手順を実行したのち、後に定義される読み出し手順を実行するものである。
【００２７】
書き込み手順を定義する。
まず、第１制御信号ＣＴＬ１，ＣＴＬ２により、入力選択装置２１−０〜２１−ｐおよびアドレス発生器２３−０〜２３−ｐの状態を、入力列ベクタを記憶装置に書き込むに先立って初期化する。これを書き込み時状態初期設定と定義する。
【００２８】
次に、１本の入力列ベクタを記憶装置２２−０〜２２−ｐに書き込む。これを列ベクタ書き込みと定義する。
次に、入力選択装置２１−０〜２１−ｐおよびアドレス発生器２３−０〜２３−ｐの状態を、次の列ベクタ書き込みに先立って更新する。これを書き込み時状態更新と定義する。
【００２９】
以上の定義より、書き込み手順を定義できる。書き込み手順は、書き込み時状態初期設定を実行した後、列ベクタ書き込みの実行と書き込み時状態更新を入力列ベクタの本数分繰り返す手順である。
【００３０】
読み出し手順を定義する。
まず、第２制御信号ＣＴＬ２、第３制御信号ＣＴ３により、アドレス発生器２３−０〜２３−ｐおよび出力選択装置２４−０〜２４−ｎの状態を、出力列ベクタを記憶装置２２−０〜２２−ｐから読み出すに先立って初期化する。これを読み出し時状態初期設定と定義する。
【００３１】
次に、１本の出力列ベクタを記憶装置２２−０〜２２−ｐより読み出す。これを列ベクタ読み出しと定義する。
【００３２】
次に、アドレス発生器２３−０〜２３−ｐおよび出力選択装置２４−０〜２４−ｎの状態を、次の列ベクタ書き込みに先立って更新する。これを読み出し時状態更新と定義する。
以上の定義より、読み出し手順を定義できる。読み出し手順は、読み出し時状態初期設定を実行した後、列ベクタ読み出しの実行と読み出し時状態更新を出力列ベクタの本数分繰り返す手順である。
【００３３】
次に、以上の定義に基づく上記構成による具体的な動作について、より詳細に説明する。
書き込み時状態初期設定として、入力選択装置２１−ｉ（ｉ＝０〜ｐ）に対し、入力Ｘｉ０（ｉ＝０〜ｐ）を選択するように第１制御信号ＣＴＬ１が設定され、アドレス発生器２３−ｉ（ｉ＝０〜ｍ）に対し、ｉをＱで割った剰余をアドレスとして発生するように第２制御信号ＣＴＬ２が設定され、アドレス発生器２３−ｉ（ｉ＞Ｍ）が存在すれば、アドレスＡＤＲ０が発生される。
【００３４】
列ベクタ書き込みは、上記定義どおりである。ただし、列ベクタ書き込み実行時の入力選択装置２１−ｉ（ｉ＝０〜ｐ）の状態が、書き込み要素がｍより大きな値に設定されているものに関しては、書き込み動作は実行されず、記憶装置２２−ｉの内部状態に変化はない。
【００３５】
書き込み時状態更新として、入力選択装置２１−ｉ（ｉ＝０〜ｐ）の状態が、Ｐを法とする加減算の意味において１を減少させる。この時点で、入力選択装置２１−ｉの状態がｓ（ｉ）であるとすると、０≦ｓ（ｉ）＜Ｍであるアドレス発生器２３−ｉに対して、状態をＱを法とする加減算の意味において１を減少させる。その他のアドレス発生器に対しては状態を変化させない。
【００３６】
読み出し時状態初期設定として、出力選択装置２４−ｊ（ｊ＝０〜ｎ）に対し、記憶装置２２−ｉ（ｉ＝０〜ｐ）の出力を選択するよう第３制御信号ＣＴＬ３が設定され、アドレス発生器２３−ｉ（ｉ＝０〜ｎ）に対し、０をアドレスＡＤＲとして発生するよう第２制御信号ＣＴＬが設定される。
列ベクタ読み出しとしては上記定義のとおりである。
【００３７】
読み出し時状態更新として、入力選択装置２４−ｊの更新前にアドレス発生器２３−ｉに対し、ｉ＝０〜ｎかつＰを法とする剰余系で出力選択装置２４−ｊ（すなわち、ｊ＝０ならば出力選択装置２４−０、ｊ＝１ならば出力選択装置２４−ｎなど）の状態がｐ−ｎと等しいならばアドレス発生器２３−ｉにｉ＋１を行うにように第２制御信号ＣＴＬ２が設定され、それ以外の場合はアドレス発生器２３−ｉ（ｉ＝０〜ｎ）の状態をＱを法とする剰余系で１を増加させる。
以上の手順を上記のとおりの順序で実行することにより、全手順が完成する。
【００３８】
次に、８×８の２次元ＤＣＴ(Descrete Cosine Transform) を例に、さらに具体的な動作について、図２〜図４に関連付けて説明する。
図２〜図４において、８×８のマトリクス状のものは、８個の記憶領域を有し、アドレスＡＤＲ０〜ＡＤＲ７で８個の記憶領域を任意に指定可能な１×８の記憶装置８段分（本例ではｐ＝７）を示している。図中、横方向がアドレス方向、縦方向が記憶装置の配置方向である。
【００３９】
図２（ａ）は初期状態を示す。このとき、入力は列ベクタＸ00〜Ｘ70であり、アドレス発生器（２３−０〜２３−７）によるアドレス指定は、上段の記憶装置２２−０から順次にＡＤＲ０〜７である。
その結果、図２（ｂ）に示すように、入力列ベクタＸ00〜Ｘ70が対角線状に記憶される。そして、このときの次の入力は列ベクタＸ01〜Ｘ71であり、図にあるように入力列ベクタの要素も円環状にシフトされる。アドレス指定は、図２（ｂ）に示すように、いわゆる円環状に１つシフトされる。すなわち、１段目のアドレス指定はＡＤＲ１、２段目はＡＤＲ２、３段目はＡＤＲ３、４段目はＡＤＲ４、５段目はＡＤＲ５、６段目はＡＤＲ６、７段目はＡＤＲ７、そして８段目はＡＤＲ０である。
このように、８個の列ベクタの入力毎にアドレスが円環状に１つずつシフトされ、図３（ａ）に示すように、６４個の記憶領域に全データが格納される。
【００４０】
そして、読み出しを行う場合のアドレス発生器（２３−０〜２３−７）によるアドレス指定は、図３（ｄ）に示すように、８段全ての記憶装置に対してＡＤＲ０である。その結果、図３（ｄ）に示すように、記憶領域のマトリクスにおける１列目の全データＸ00〜Ｘ07が読み出される。
次に、アドレス発生器（２３−０〜２３−７）によるアドレス指定は、図４（ｅ）に示すように、８段全ての記憶装置に対してアドレスＡＤＲ１である。その結果、図４（ｅ）に示すように、記憶領域のマトリクスにおける２列目の全データＸ10〜Ｘ17が読み出される。
同様に、全記憶装置に対して同一のアドレス指定が順次行われ、図４（ｆ）に示すように、アドレスＡＤＲ７の指定により、８列目のデータＸ70〜Ｘ77が読み出される。
【００４１】
このように、８個のデータ列を、アドレスを円環状に１つずつシフトさせながら８段の記憶装置２２−０〜２２−７に格納し、そのデータを読み出するときは、１列目から順番にアドレス指定することにより、転置のオーバーヘッドをなくすことができる。
【００４２】
なお、以上の図２〜図４の例は、アドレスを円環状に１つずつシフトさせながら、８段の記憶装置に格納し、そのデータを読み出すときは、１列目から順番にアドレス指定するものであるが、これとは逆の構成も可能である。
すなわち、図５〜図７に示すように、８個のデータ列を円環状にシフトしつつ格納し、そのデータを読み出す際に各アドレスを円環状にシフトさせるように構成することも可能である。
【００４３】
図５（ａ）が初期状態を示す。このとき、入力は列ベクタＸ00〜Ｘ70であり、アドレス発生器（２３−０〜２３−７）によるアドレス指定は、８段全ての記憶装置に対してＡＤＲ０である。
その結果、図５（ｂ）に示すように、入力列ベクタＸ00〜Ｘ70が記憶領域のマトリクスにおける１列目に記憶される。そして、このときの次の入力は列ベクタＸ01〜Ｘ71であり、アドレス指定は、図５（ｂ）に示すように、８段全ての記憶装置に対してＡＤＲ０である。
このようにして、図６（ｃ）に示すように、順次に６４個の記憶領域に８個の列ベクタの全データが格納される。
【００４４】
そして、読み出しを行う場合のアドレス発生器（２３−０〜２３−７）によるアドレス指定は、図６（ｄ）に示すように、選択的に行われる。すなわち、上段の記憶装置２２−０から１段目のアドレス指定はＡＤＲ０、２段目はＡＤＲ７、３段目はＡＤＲ６、４段目はＡＤＲ５、５段目はＡＤＲ４、６段目はＡＤＲ３、７段目はＡＤＲ２、そして８段目はＡＤＲ１である。
その結果、図６（ｄ）に示すように、記憶領域のマトリクスにおける１列目の全データＸ00〜Ｘ07が読み出される。
次に、図７（ｅ）に示すように、アドレス指定が円環状にシフトされて行われる。すなわち、上段の記憶装置２２−０から１段目のアドレス指定はＡＤＲ１、２段目はＡＤＲ０、３段目はＡＤＲ７、４段目はＡＤＲ６、５段目はＡＤＲ５、６段目はＡＤＲ４、７段目はＡＤＲ３、そして８段目はＡＤＲ２である。
同様に、アドレス指定が円環状に１つずつシフトされ、図４（ｆ）に示すように、アドレスＡＤＲ７の指定により、８列目のデータＸ70〜Ｘ77が読み出される。この場合のアドレス指定は、１段目はＡＤＲ７、２段目はＡＤＲ６、３段目はＡＤＲ５、４段目はＡＤＲ４、５段目はＡＤＲ３、６段目はＡＤＲ２、７段目はＡＤＲ１、そして８段目はＡＤＲ０である。
【００４５】
このように、８個のデータ列を円環状にシフトしつつ格納し、そのデータを読み出す際に各アドレスを円環状にシフトさせるように構成することにより、転置のオーバーヘッドをなくすことができる。
【００４６】
以上説明したように、本実施形態によれば、入力列ベクタを並列に入力でき、並列に出力列ベクタを出力可能で、かつ、アドレス範囲の総和が入力行列の全要素データを格納可能なように配置された複数の記憶装置２２−０〜２２−ｐと、それぞれ複数の記憶装置に対応して設けられ、複数の並列な数値入力から一の数値入力を選択可能で、それぞれ選択した数値を対応する記憶装置に入力する複数の入力選択装置２１−０〜２１−ｐと、複数の記憶装置に対し独立なアドレスを指定可能な複数のアドレス発生器２３−０〜２３−ｐと、各々独立に任意の記憶装置の出力を選択可能な出力選択装置２４−０〜２４−ｎと、入力時、任意の入力行ベクタの各要素が互いに異なる記憶装置に格納されるように入力選択装置およびアドレス発生器を制御し、出力時、複数の記憶装置に格納された各行列要素に応じて任意の転置出力列ベクタを定められた順序および定められた列ベクタ内の要素の順を保ちつつ並列に出力されるようにアドレス発生器および出力選択装置を制御する制御装置２５とを設けたので、従来方式に存在した行列転置操作時のシフト動作に伴う時間的無駄がなく、高速な転置操作を実現でき、２次元直交変換等の演算処理を高速化することができる。
【００４７】
なお、本発明はこの実施形態のみに限定されるものではなく、記憶装置および入力選択装置の個数が入力列ベクタを並列に入力するに十分であり、かつ記憶装置の個数が出力選択装置より並列に出力列ベクタを出力するに十分であり、かつ各記憶装置のもつアドレス範囲の総和が入力行列の全要素を格納するに十分であり、かつ入力選択装置および入力時のアドレス発生器が任意の入力行ベクタの各要素が互いに異なる記憶装置に格納されるよう制御され、かつ出力選択装置および出力時のアドレス発生器が格納された各行列要素に応じて任意の転置出力列ベクタを定められた順序および定められた列ベクタ内の要素の順序を保ちつつ並列に出力されるよう制御されるという制約を満たす限りにおいて種々の変形が考えられる。
【００４８】
また、本行列転置装置は、正方行列を入出力とすることも可能であり、たとえば２次元直交変換を処理する専用演算装置、画像圧縮装置または画像伸長装置に使用される２次元直交変換を処理する専用演算装置、あるいは２次元直交変換を処理する場合がある汎用演算装置の一部等に使用することが可能である。
【００４９】
【発明の効果】
以上説明したように、本発明の行列転置装置によれば、つねに並列に読み書きが可能なように記憶装置に読み書きをすることから、従来方式に存在した行列転置操作時のシフト動作に伴う時間的無駄がなく、高速な転置操作を実現でき、２次元直交変換等の演算処理を高速化することができる。
【図面の簡単な説明】
【図１】本発明に係る行列転置装置の一実施形態を示すブロック構成図である。
【図２】８×８の２次元ＤＣＴの場合の具体的な動作を説明するための図であって、（ａ）は初期状態を示す図、（ｂ）は（ａ）の状態からデータが格納された状態を示す図である。
【図３】８×８の２次元ＤＣＴの場合の具体的な動作を説明するための図であって、（ｃ）は記憶領域に全データが格納された状態を示す図、（ｄ）は読み出し動作時の説明図である。
【図４】８×８の２次元ＤＣＴの場合の具体的な動作を説明するための図であって、（ｅ）、（ｆ）は読み出し過程の説明図である。
【図５】８×８の２次元ＤＣＴの場合の他の具体的な動作を説明するための図であって、（ａ）は初期状態を示す図、（ｂ）は（ａ）の状態からデータが格納された状態を示す図である。
【図６】８×８の２次元ＤＣＴの場合の他の具体的な動作を説明するための図であって、（ｃ）は記憶領域に全データが可能された状態を示す図、（ｄ）は読み出し動作時の説明図である。
【図７】８×８の２次元ＤＣＴの場合の他の具体的な動作を説明するための図であって、（ｅ）、（ｆ）は読み出し過程の説明図である。
【図８】従来方式による転置操作装置の構成を示すブロック図である。
【符号の説明】
２０…行列転置装置、２１−０〜２１−ｐ…入力選択装置、２２−０〜２２−ｐ…記憶装置、２３−０〜２３−ｐ…アドレス発生器、２４−０〜２４−ｐ…出力選択装置、２５…制御装置、２６…演算器。
【図１】
0003845920.tif 000002
【図２】
0003845920.tif 000003
【図３】
0003845920.tif 000004
【図４】
0003845920.tif 000005
【図５】
0003845920.tif 000006
【図６】
0003845920.tif 000007
【図７】
0003845920.tif 000008
【図８】
0003845920.tif 000009