図面 (/)
課題
解決手段
概要
背景
近時、マイクロプロセッサやシグナルプロセッサの性能向上により、これらのプロセッサで画像信号処理が実時間で実行可能となるに至っている。
なかでも、乗算器や積和演算器を内蔵したマイクロプロセッサにおいては、積和演算を加減算と同じクロック数で実現できるため、処理の高速化にあたっては乗算の数を減らすだけでなく、加減算と積和演算の数の和を最小化することが望ましい。
マイクロプロセッサやシグナルプロセッサにより2次元(逆)DCT(離散コサイン変換;Discrete Cosine Transform)を実現する場合、内部レジスタの本数の制限から、まず行方向の1次元(逆)DCTを計算して、その計算結果を一旦外部メモリに格納し、次に、行方向処理結果をメモリから列方向に読み出して列方向の1次元(逆)DCTを実行するという方法が一般的に用いられている。
このとき、演算量やハードウェア量が増大するのを防ぐために、通常、行方向の演算結果は、単精度に打ち切って外部メモリに格納され、このため、演算誤差が生じることになる。このような演算誤差を抑えながら、積和演算と加減算の総数を抑える方法として、例えば文献(「2次元(逆)DCT高速化の一検討」、1995年電子情報通信学会、基礎・境界ソサイエティ大会予稿集、第1分冊88頁A−86)等が参照される。
図30に、上記文献で提案されている2次元IDCT(Inverse DiscreteCosine Transform)回路のブロック図を示す。
テンソル積演算器10から18は、それぞれ図に示すアドレスを持つデータを入力とし、各テンソル積演算を行なう。すなわち、図30を参照して、添字(インデックス)i、jを0から7までの整数として、iを垂直方向のアドレス、jを水平方向のアドレスとする8点×8点2次元離散コサイン変換(DCT)の変換係数を(ij)で表わすと、第1のテンソル積演算器10は、(00)、(04)、(40)、及び(44)を入力とし、第2のテンソル積演算器11は、(02)、(06)、(42)、及び(46)を入力とし、第3のテンソル積演算器12は、(20)、(24)、(60)、及び(64)を入力とし、第4のテンソル積演算器13は、(22)、(26)、(62)、及び(66)を入力とし、第5のテンソル積演算器14は(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)を入力とし、第6のテンソル積演算器15は、(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)を入力とし、第7のテンソル積演算器16は、(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)を入力とし、第8のテンソル積演算器17は、(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)を入力とし、第9のテンソル積演算器18は、(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)を入力とする。
第1の2次元バタフライ演算器19は、第1から第4のテンソル積演算器10〜13の出力を入力として、4点×4点2次元バタフライ演算を行ない、第1の1次元バタフライ演算器20は、第5及び第6のテンソル積演算器14、15の演算結果を入力として16点1次元バタフライ演算を行ない、第2の1次元バタフライ演算器21は、第7及び第8のテンソル積演算器16、17の演算結果を入力として16点1次元バタフライ演算を行なう。
第2の2次元バタフライ演算器22は、第1の2次元バタフライ演算器19と、第1及び第2の1次元バタフライ演算器20、21と、第9のテンソル積演算器18の演算結果を入力として、8点×8点の2次元バタフライ演算を行なう。
概要
テンソル積演算器において、入力データに零が含まれている場合には演算を省略することで演算量を削減し、高速演算を可能とした2次元逆離散コサイン変換回路の提供。
第1から第9までのテンソル積演算器の入力データをそれぞれの入力とする第1から第9の判定器を備え、第1から第9の判定器は、それぞれの入力データに非零データがあるか否かを調べ、その判定結果を対応するテンソル積演算器に通知し、第1から第9のテンソル積演算器は、第1から第9の判定器において入力データが全て零であると判定された場合に、テンソル積演算を行なわない。
目的
したがって、本発明は、上記事情に鑑みてなされたものであって、その目的は、各テンソル積演算器において、入力データに零が含まれている場合には演算を省略することで演算量を削減し、より一層の高速演算を可能とした2次元逆離散コサイン変換回路を提供することにある。
効果
実績
- 技術文献被引用数
- 0件
- 牽制数
- 0件
この技術が所属する分野
(分野番号表示ON)※整理標準化データをもとに当社作成
請求項1
i、jを0から7までの整数として、iを垂直方向のアドレス、jを水平方向のアドレスとする8点×8点2次元離散コサイン変換(DCT)の変換係数を(ij)で表わしたとき、(00)、(04)、(40)、及び(44)を入力とする第1のテンソル積演算器と、(02)、(06)、(42)、及び(46)を入力とする第2のテンソル積演算器と、(20)、(24)、(60)、及び(64)を入力とする第3のテンソル積演算器と、(22)、(26)、(62)、及び(66)を入力とする第4のテンソル積演算器と、(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)を入力とする第5のテンソル積演算器と、(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)を入力とする第6のテンソル積演算器と、(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)を入力とする第7のテンソル積演算器と、(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)を入力とする第8のテンソル積演算器と、(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)を入力とする第9のテンソル積演算器と、前記第1から第4までのテンソル積演算器の演算結果を入力とする第1の2次元バタフライ演算器と、前記第5及び第6のテンソル積演算器の演算結果を入力とする第1の1次元バタフライ演算器と、前記第7及び第8のテンソル積演算器の演算結果を入力とする第2の1次元バタフライ演算器と、前記第1の2次元バタフライ演算器の演算結果と、前記第1及び第2の1次元バタフライ演算器の演算結果と、前記第9のテンソル積演算器の演算結果とを入力とする第2の2次元バタフライ演算器と、を備えてなる8点×8点2次元逆離散コサイン変換回路において、前記第1から第9までのテンソル積演算器の入力データをそれぞれの入力とする第1から第9の判定器を備え、前記第1から第9の判定器は、それぞれの入力データに非零データがあるか否かを調べ、その判定結果を対応するテンソル積演算器に通知し、前記第1から第9のテンソル積演算器は、それぞれ、対応する判定器において入力データが全て零であると判定された場合に、テンソル積演算を行なわない、ことを特徴とする2次元逆離散コサイン変換回路。
請求項2
i、jを0から7までの整数として、iを垂直方向のアドレス、jを水平方向のアドレスとする8点×8点2次元離散コサイン変換(DCT)の変換係数を(ij)で表わしたとき、(00)、(04)、(40)、及び(44)を入力とする第1のテンソル積演算器と、(02)、(06)、(42)、及び(46)を入力とする第2のテンソル積演算器と、(20)、(24)、(60)、及び(64)を入力とする第3のテンソル積演算器と、(22)、(26)、(62)、及び(66)を入力とする第4のテンソル積演算器と、(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)を入力とする第5のテンソル積演算器と、(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)を入力とする第6のテンソル積演算器と、(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)を入力とする第7のテンソル積演算器と、(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)を入力とする第8のテンソル積演算器と、(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)を入力とする第9のテンソル積演算器と、前記第1から第4までのテンソル積演算器の演算結果を入力とする第1の2次元バタフライ演算器と、前記第5及び第6のテンソル積演算器の演算結果を入力とする第1の1次元バタフライ演算器と、前記第7及び第8のテンソル積演算器の演算結果を入力とする第2の1次元バタフライ演算器と、前記第1の2次元バタフライ演算器の演算結果と、前記第1及び第2の1次元バタフライ演算器の演算結果と、前記第9のテンソル積演算器の演算結果とを入力とする第2の2次元バタフライ演算器と、を備えてなる8点×8点2次元逆離散コサイン変換回路において、前記第1から第9のテンソル積演算器の入力データのうちそれぞれ予め定められた一部のデータだけを入力データとしてテンソル積演算を行なう第1から第9の部分テンソル積演算器と、前記第1から第9のテンソル積演算器の入力データをそれぞれの入力とする第1から第9の選択器と、を備え、前記第1から第9の選択器は、それぞれの入力データのうち、前記第1から第9の部分テンソル積演算器の入力データ以外に非零データがあるか否かを判定し、判定結果を対応するテンソル積演算器と部分テンソル積演算器とに通知し、前記部分テンソル積演算器の入力データ以外に非零データがある場合には、前記テンソル積演算器でテンソル積演算を行ない、前記部分テンソル積演算器の入力データ以外のデータが全て零である場合には前記部分テンソル積演算器で部分テンソル積演算を行ない、前記部分テンソル積演算器の出力をテンソル積演算器の出力とする、ことを特徴とする2次元逆離散コサイン変換回路。
請求項3
i、jを0から7までの整数として、iを垂直方向のアドレス、jを水平方向のアドレスとする8点×8点2次元離散コサイン変換(DCT)の変換係数を(ij)で表わしたとき、(00)、(04)、(40)、及び(44)を入力とする第1のテンソル積演算器と、(02)、(06)、(42)、及び(46)を入力とする第2のテンソル積演算器と、(20)、(24)、(60)、及び(64)を入力とする第3のテンソル積演算器と、(22)、(26)、(62)、及び(66)を入力とする第4のテンソル積演算器と、(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)を入力とする第5のテンソル積演算器と、(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)を入力とする第6のテンソル積演算器と、(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)を入力とする第7のテンソル積演算器と、(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)を入力とする第8のテンソル積演算器と、(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)を入力とする第9のテンソル積演算器と、前記第1から第4までのテンソル積演算器の演算結果を入力とする第1の2次元バタフライ演算器と、前記第5及び第6のテンソル積演算器の演算結果を入力とする第1の1次元バタフライ演算器と、前記第7及び第8のテンソル積演算器の演算結果を入力とする第2の1次元バタフライ演算器と、前記第1の2次元バタフライ演算器の演算結果と、前記第1及び第2の1次元バタフライ演算器の演算結果と、前記第9のテンソル積演算器の演算結果とを入力とする第2の2次元バタフライ演算器と、を備えてなる8点×8点2次元逆離散コサイン変換回路において、前記第2から第9のテンソル積演算器に対応して第1から第8の判定器を備え、前記第1から第8の判定器は、それぞれエンド・オブ・ブロック(EOB)符号の位置情報を入力とし、係数(00)からEOB符号までのDCT係数を全て非零データとみなして、対応するテンソル積演算器の入力データに非零データがあるか否かを調べて前記対応するテンソル積演算器に通知し、該テンソル積演算器は、前記判定器にて入力データが全て零であると判定された場合にはテンソル積演算を行なわない、ことを特徴とする2次元逆離散コサイン変換回路。
請求項4
i、jを0から7までの整数として、iを垂直方向のアドレス、jを水平方向のアドレスとする8点×8点2次元離散コサイン変換(DCT)の変換係数を(ij)で表わしたとき、(00)、(04)、(40)、及び(44)を入力とする第1のテンソル積演算器と、(02)、(06)、(42)、及び(46)を入力とする第2のテンソル積演算器と、(20)、(24)、(60)、及び(64)を入力とする第3のテンソル積演算器と、(22)、(26)、(62)、及び(66)を入力とする第4のテンソル積演算器と、(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)を入力とする第5のテンソル積演算器と、(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)を入力とする第6のテンソル積演算器と、(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)を入力とする第7のテンソル積演算器と、(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)を入力とする第8のテンソル積演算器と、(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)を入力とする第9のテンソル積演算器と、前記第1から第4までのテンソル積演算器の演算結果を入力とする第1の2次元バタフライ演算器と、前記第5及び第6のテンソル積演算器の演算結果を入力とする第1の1次元バタフライ演算器と、前記第7及び第8のテンソル積演算器の演算結果を入力とする第2の1次元バタフライ演算器と、前記第1の2次元バタフライ演算器の演算結果と、前記第1及び第2の1次元バタフライ演算器の演算結果と、前記第9のテンソル積演算器の演算結果とを入力とする第2の2次元バタフライ演算器と、を備えてなる8点×8点2次元逆離散コサイン変換回路において、前記第1から第9のテンソル積演算器の入力データのうちそれぞれ予め定められた一部のデータだけを入力データとしてテンソル積演算を行なう第1から第9の部分テンソル積演算器と、前記第1から第9のテンソル積演算器に対応して、第1から第9の選択器を備え、前記第1から第9の選択器は、それぞれ入力のDCT係数におけるエンド・オブ・ブロック(EOB)符号の位置情報を入力とし、係数(00)からEOB符号までのDCT係数を全て非零データとみなして、対応するテンソル積演算器の入力データのうち部分テンソル積演算器の入力データ以外に非零データがあるか否かを調べて該対応するテンソル積演算器と部分テンソル積演算器に通知し、部分テンソル積演算器の入力データ以外に非零データがある場合には前記テンソル積演算器でテンソル積演算を行ない、部分テンソル積演算器の入力データ以外に非零データが無い場合には前記部分テンソル積演算器で部分テンソル積演算を行ない部分テンソル積演算器の出力をテンソル積演算器の出力とする、ことを特徴とする2次元逆離散コサイン変換回路。
請求項5
テンソル積演算器とバタフライ演算器とを組合せて2次元逆離散コサイン変換を行うように構成されてなる2次元逆離散コサイン変換回路において、入力するDCT係数の零/非零の判定結果に応じて前記テンソル積演算器におけるテンソル積演算の非実行/実行を制御するようにしたことを特徴とする2次元離散コサイン変換回路。
請求項6
DCT係数を入力とする前記テンソル積演算器についてその入力データの全てが零であることが検出された時には前記テンソル積演算器にてテンソル演算を行わないように制御する手段を備えたことを特徴とする請求項5記載の2次元逆離散コサイン変換回路。
請求項7
前記テンソル積演算器に対して、DCT係数の入力データのうち予め定めた一部のデータだけを入力としてテンソル積演算を行なう部分テンソル積演算器を更に備え、前記部分テンソル積演算器の入力データ以外に非零データがある場合には、前記テンソル積演算器でテンソル積演算を行ない、前記部分テンソル積演算器の入力データ以外のデータが全て零である場合には前記部分前記テンソル積演算器で部分テンソル積演算を行ない、前記部分テンソル積演算器の出力をテンソル積演算結果として出力することを特徴とする請求項5記載の2次元逆離散コサイン変換回路。
請求項8
エンド・オブ・ブロック(EOB)符号の位置情報を入力として、入力DCT係数の零/非零を判定する手段を備えたことを特徴とする請求項5〜7のいずれか一に記載の2次元逆離散コサイン変換回路。
技術分野
0001
本発明は、2次元逆離散コサイン変換回路に関し、特に画像信号処理等で用いて好適とされる2次元逆離散コサイン変換(Inverse Discrete ConsineTransform;「IDCT」と略記される)を実現する回路に関する。
背景技術
0003
なかでも、乗算器や積和演算器を内蔵したマイクロプロセッサにおいては、積和演算を加減算と同じクロック数で実現できるため、処理の高速化にあたっては乗算の数を減らすだけでなく、加減算と積和演算の数の和を最小化することが望ましい。
0004
マイクロプロセッサやシグナルプロセッサにより2次元(逆)DCT(離散コサイン変換;Discrete Cosine Transform)を実現する場合、内部レジスタの本数の制限から、まず行方向の1次元(逆)DCTを計算して、その計算結果を一旦外部メモリに格納し、次に、行方向処理結果をメモリから列方向に読み出して列方向の1次元(逆)DCTを実行するという方法が一般的に用いられている。
0005
このとき、演算量やハードウェア量が増大するのを防ぐために、通常、行方向の演算結果は、単精度に打ち切って外部メモリに格納され、このため、演算誤差が生じることになる。このような演算誤差を抑えながら、積和演算と加減算の総数を抑える方法として、例えば文献(「2次元(逆)DCT高速化の一検討」、1995年電子情報通信学会、基礎・境界ソサイエティ大会予稿集、第1分冊88頁A−86)等が参照される。
0007
テンソル積演算器10から18は、それぞれ図に示すアドレスを持つデータを入力とし、各テンソル積演算を行なう。すなわち、図30を参照して、添字(インデックス)i、jを0から7までの整数として、iを垂直方向のアドレス、jを水平方向のアドレスとする8点×8点2次元離散コサイン変換(DCT)の変換係数を(ij)で表わすと、第1のテンソル積演算器10は、(00)、(04)、(40)、及び(44)を入力とし、第2のテンソル積演算器11は、(02)、(06)、(42)、及び(46)を入力とし、第3のテンソル積演算器12は、(20)、(24)、(60)、及び(64)を入力とし、第4のテンソル積演算器13は、(22)、(26)、(62)、及び(66)を入力とし、第5のテンソル積演算器14は(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)を入力とし、第6のテンソル積演算器15は、(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)を入力とし、第7のテンソル積演算器16は、(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)を入力とし、第8のテンソル積演算器17は、(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)を入力とし、第9のテンソル積演算器18は、(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)を入力とする。
0008
第1の2次元バタフライ演算器19は、第1から第4のテンソル積演算器10〜13の出力を入力として、4点×4点2次元バタフライ演算を行ない、第1の1次元バタフライ演算器20は、第5及び第6のテンソル積演算器14、15の演算結果を入力として16点1次元バタフライ演算を行ない、第2の1次元バタフライ演算器21は、第7及び第8のテンソル積演算器16、17の演算結果を入力として16点1次元バタフライ演算を行なう。
0009
第2の2次元バタフライ演算器22は、第1の2次元バタフライ演算器19と、第1及び第2の1次元バタフライ演算器20、21と、第9のテンソル積演算器18の演算結果を入力として、8点×8点の2次元バタフライ演算を行なう。
発明が解決しようとする課題
0010
図30を参照して、第1から第9のテンソル積演算10〜18において、その入力が全て零であれば、出力も全て零になる。しかしながら、上記従来方式では、入力データの零/非零に関係なく全てのテンソル積演算が行なわれる構成とされ、零データの場合にも非零データの場合と同等の演算量を要している。
0011
したがって、本発明は、上記事情に鑑みてなされたものであって、その目的は、各テンソル積演算器において、入力データに零が含まれている場合には演算を省略することで演算量を削減し、より一層の高速演算を可能とした2次元逆離散コサイン変換回路を提供することにある。
課題を解決するための手段
0012
前記目的を達成するため、本発明の2次元逆離散コサイン変換回路は、i、jを0から7までの整数として、iを垂直方向のアドレス、jを水平方向のアドレスとする8点×8点2次元離散コサイン変換(DCT)の変換係数を(ij)で表わしたとき、(00)、(04)、(40)、及び(44)を入力とする第1のテンソル積演算器と、(02)、(06)、(42)、及び(46)を入力とする第2のテンソル積演算器と、(20)、(24)、(60)、及び(64)を入力とする第3のテンソル積演算器と、(22)、(26)、(62)、及び(66)を入力とする第4のテンソル積演算器と、(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)を入力とする第5のテンソル積演算器と、(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)を入力とする第6のテンソル積演算器と、(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)を入力とする第7のテンソル積演算器と、(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)を入力とする第8のテンソル積演算器と、(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)を入力とする第9のテンソル積演算器と、前記第1から第4までのテンソル積演算器の演算結果を入力とする第1の2次元バタフライ演算器と、前記第5及び第6のテンソル積演算器の演算結果を入力とする第1の1次元バタフライ演算器と、前記第7及び第8のテンソル積演算器の演算結果を入力とする第2の1次元バタフライ演算器と、前記第1の2次元バタフライ演算器の演算結果と、前記第1及び第2の1次元バタフライ演算器の演算結果と、前記第9のテンソル積演算器の演算結果とを入力とする第2の2次元バタフライ演算器と、を備えてなる8点×8点2次元逆離散コサイン変換回路において、前記第1から第9までのテンソル積演算器の入力データをそれぞれの入力とする第1から第9の判定器を備え、前記第1から第9の判定器は、それぞれの入力データに非零データがあるか否かを調べ、その判定結果を対応するテンソル積演算器に通知し、前記第1から第9のテンソル積演算器は、それぞれの判定器において入力データが全て零であると判定された場合に、テンソル積演算を行なわない、ことを特徴とする。
0013
請求項2記載の発明に係る2次元逆離散コサイン変換回路は、前記した第1から第9のテンソル積演算器と、第1と第2の1次元バタフライ演算器と、第1と第2の2次元バタフライ演算器から構成される2次元逆離散コサイン変換回路において、前記第1から第9のテンソル積演算器の入力データのうち予め定めた一部のデータだけを入力データとしてテンソル積演算を行なう第1から第9の部分テンソル積演算器と、前記第1から第9のテンソル積演算器の入力データをそれぞれの入力とする第1から第9の選択器を備え、前記第1から第9の選択器はそれぞれの入力データのうち前記第1から第9の部分テンソル積演算器の入力データ以外に非零データがあるかどうかを判定して、対応するテンソル積演算器と部分テンソル積演算器に通知し、部分テンソル積演算器の入力データ以外に非零データがある場合にはテンソル積演算器でテンソル積演算を行ない、部分テンソル積演算器の入力データ以外のデータが全て零である場合には部分テンソル積演算器で部分テンソル積演算を行ない、部分テンソル積演算器の出力をテンソル積演算器の出力とすることを特徴とする。
0014
請求項3記載の発明に係る2次元逆離散コサイン変換回路は、前記した第1から第9のテンソル積演算器と、第1と第2の1次元バタフライ演算器と、第1と第2の2次元バタフライ演算器から構成される2次元逆離散コサイン変換回路において、前記第2から第9のテンソル積演算器に対応する第1から第8の判定器を備え、前記第1から第8の判定器ではエンド・オブ・ブロック(EOB)符号の位置情報を入力とし、(00)からEOB符号までのDCT係数を全て非零データとみなして、対応するテンソル積演算器の入力データに非零データがあるかどうかを調べて当該テンソル積演算器に通知し、当該テンソル積演算器では入力データが全て零であると判定された場合にはテンソル積演算を行なわないことを特徴とする。
0015
請求項4記載の発明に係る2次元逆離散コサイン変換回路は、上記した請求項2記載の第1から第9のテンソル積演算器と、第1から第9の部分テンソル積演算器と、第1と第2の1次元バタフライ演算器と、第1と第2の2次元バタフライ演算器から構成される2次元逆離散コサイン変換回路において、第1から第9のテンソル積演算器に対応して第1から第9の選択器を備え、前記第1から第9の選択器では入力のDCT係数におけるエンド・オブ・ブロック(EOB)符号の位置情報を入力とし、(00)からEOB符号までのDCT係数を全て非零データとみなして、対応するテンソル積演算器の入力データのうち部分テンソル積演算器の入力データ以外に非零データがあるかどうかを調べて、当該テンソル積演算器と部分テンソル積演算器に通知し、非零データがある場合はテンソル積演算器でテンソル積演算を行ない、非零データが無い場合には部分テンソル積演算器で部分テンソル積演算を行ない、部分テンソル積演算器の出力をテンソル積演算器の出力とすることを特徴とする。
発明を実施するための最良の形態
0016
本発明の実施の形態について以下に説明する。本発明は、その好ましい実施の形態において、図1を参照すると、第1から第9のテンソル積演算器10〜18のそれぞれに対して、第1から第9のテンソル積演算器10〜18の入力データをそれぞれの入力とする第1から第9の判定器1〜9を備え、この第1から第9の判定器は、それぞれの入力データに非零データがあるか否かを調べ、その判定結果を対応するテンソル積演算器10〜18に通知し、第1から第9のテンソル積演算器10〜11は、それぞれ第1から第9の判定器において入力データが全て零であると判定された場合に、テンソル積演算を行なわない。
0017
このように、本発明の実施の形態においては、入力が全て零であるテンソル積演算は行なわないため、判定部の演算が新たに必要となるが、テンソル積演算は削減できる。画像信号の符号化に、この発明を用いる場合には平均的にみて演算量を削減できる。
0018
本発明は、好ましい第2の実施の形態において、図2を参照すると、第1から第9のテンソル積演算器10〜18の入力データのうち予め定めた一部のデータだけを入力データとしてテンソル積演算を行なう第1から第9の部分テンソル積演算器32〜40と、第1から第9のテンソル積演算器10〜18の入力データをそれぞれの入力とする第1から第9の選択器23〜31と、を備え、第1から第9の選択器は、それぞれの入力データのうち、第1から第9の部分テンソル積演算器の入力データ以外に非零データがあるか否かを判定し、判定結果を対応するテンソル積演算器と部分テンソル積演算器に通知し、部分テンソル積演算器32〜40の入力データ以外に非零データがある場合には、テンソル積演算器10〜18でテンソル積演算を行ない、部分テンソル積演算器32〜40の入力データ以外のデータが全て零である場合には部分テンソル積演算器で部分テンソル積演算を行ない、部分テンソル積演算器の出力をテンソル積演算結果として出力する。
0019
本発明の第2の実施の形態においては、入力データの零/非零の状態に応じてテンソル積演算を行なうか部分テンソル積演算を行なうかを切替選択するものであり、入力データに非零データがあっても部分テンソル積演算でよい場合が生じるので、上記第1の実施の形態よりも、演算量を削減できる。
0020
次に本発明は、好ましい第3の実施の形態において、図3を参照すると、第2から第9のテンソル積演算器11〜18に対応する第1から第8の判定器41〜48を備え、第1から第8の判定器41〜48では、エンド・オブ・ブロック(EOB)符号の位置情報を入力とし、係数(00)からEOB符号までのDCT係数を全て非零データとみなして、対応するテンソル積演算器の入力データに非零データがあるか否かを調べて当該テンソル積演算器に通知し、テンソル積演算器では入力データが全て零であると判定された場合にはテンソル積演算を行なわない。
0021
本発明の第3の実施の形態においては、(00)からEOB符号までの入力データを全て非零データとみなすことで、テンソル積演算を行なうかどうかを判定する。このため、テンソル積演算の全ての入力データに対して零/非零の判定をする必要が無くなり、判定部でかかる演算量を削減することができる。
0022
次に本発明は、好ましい第4の実施の形態において、図4を参照すると、第1から第9のテンソル積演算器10〜18に対応して、第1から第8の選択器49〜56を備え、第1から第8の選択器は、入力のDCT係数におけるエンド・オブ・ブロック(EOB)符号の位置情報を入力とし、係数(00)からEOB符号までのDCT係数を全て非零データとみなして、対応するテンソル積演算器10〜18の入力データのうち部分テンソル積演算器32〜40の入力データ以外に非零データがあるか否かを調べて当該テンソル積演算器と部分テンソル積演算器に通知し、非零データがある場合にはテンソル積演算器でテンソル積演算を行ない、非零データが無い場合には部分テンソル積演算器で部分テンソル積演算を行ない部分テンソル積演算器の出力をテンソル積演算器の出力とする。
0023
本発明の第4の実施の形態においては、(00)からEOB符号までの入力データを全て非零データとみなすことで、テンソル積演算を行なうか部分テンソル積演算を行なうかを選択する。このため、部分テンソル積演算の入力データ以外のテンソル積演算の入力データに対して零/非零の判定をする必要が無くなり、選択部でかかる演算量を削減することができる。
0024
上記した本発明の実施の形態について更に詳細に説明すべく、本発明の実施例について図面を参照して以下に説明する。
0025
[実施例1]図1は、本発明の第1の実施例の構成を示す図である。以下本発明の実施例においては、8×8の2次元IDCT回路において、添字i、jそれぞれを0から7までの整数として、iを垂直方向のアドレス、jを水平方向のアドレスとするとき、入力のDCT係数を(ij)で表すものとする。
0026
図1を参照すると、本発明の第1の実施例においては、第1から第9のテンソル積演算器10〜18に対して、その入力データを入力とし、零/非零を判定する第1から第9の判定器1〜9が備えられている。
0027
第1の判定器1は、入力データ(00)、(04)、(40)、及び(44)が零か否かを調べ、その結果、一つでも非零データが存在していれば第1のテンソル積演算器10にてテンソル積演算を行ない、一方、全て零であれば第1のテンソル積演算器10にてテンソル積演算を行なわないように判定制御する。
0028
第2の判定器2は、入力データ(02)、(06)、(42)、及び(46)が零か否かを調べ、その結果、一つでも非零データが存在していれば第2のテンソル積演算器11でテンソル積演算を行ない、一方、全て零であれば第2のテンソル積演算器11にてテンソル積演算を行なわないように判定制御する。
0029
第3の判定器3は、入力データ(20)、(24)、(60)、及び(64)が零か否かを調べ、その結果、一つでも非零データが存在していれば第3のテンソル積演算器12でテンソル積演算を行ない、一方、全て零であれば第3のテンソル積演算器12にてテンソル積演算は行なわないように判定制御する。
0030
第4の判定器4は、入力データ(22)、(26)、(62)、及び(66)が零か否かを調べ、その結果、一つでも非零データが存在していれば第4のテンソル積演算器13でテンソル積演算を行ない、一方、全て零であれば第4のテンソル積演算器13にてテンソル積演算を行なわないように判定制御する。
0031
第5の判定器5は、入力データ(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)が零か否かを調べ、その結果、一つでも非零データが存在していれば第5のテンソル積演算器14でテンソル積演算を行ない、一方、全て零であれば第5のテンソル積演算器14にてテンソル積演算を行なわないように制御する。
0032
第6の判定器6は、入力データ(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)が零か否かを調べ、その結果、一つでも非零データが存在していれば第6のテンソル積演算器15でテンソル積演算を行ない、一方、全て零であれば第6のテンソル積演算器15にてテンソル積演算を行なわないように制御する。
0033
第7の判定器7は、入力データ(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)が零か否かを調べ、その結果、一つでも非零データが存在していれば第7のテンソル積演算器16でテンソル積演算を行ない、一方、全て零であれば第7のテンソル積演算器16にてテンソル積演算を行なわないように制御する。
0034
第8の判定器8は、入力データ(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)が零か否かを調べ、その結果、一つでも非零データが存在していれば第8のテンソル積演算器17でテンソル積演算を行ない、一方、全て零であれば第8のテンソル積演算器17にてテンソル積演算は行なわないように制御する。
0035
第9の判定器9は、入力データ(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)が零か否かを調べ、その結果、一つでも非零データが存在していれば第9のテンソル積演算器18でテンソル積演算を行ない、一方、全て零であれば第9のテンソル積演算器18にてテンソル積演算を行なわないように制御する。
0036
第1〜第9のテンソル積演算器10〜18は、対応する第1〜第9の判定器1〜9の判定結果信号を受けて、それぞれの判定器にて、テンソル演算を行なうと判定された場合にのみ、テンソル積演算を行なう。
0037
ここで、Cuvを、
0038
0040
0041
第2のテンソル積演算器11は、DCT係数(02)、(06)、(42)、及び(46)を入力として、次式(2)の4×4行列との行列ベクトル演算を行う。
0042
0043
第3のテンソル積演算器12は、DCT係数(20)、(24)、(60)、及び(64)を入力として、次式(3)の4×4行列との行列ベクトル演算を行う。
0044
0045
第4のテンソル積演算器13は、DCT係数(22)、(26)、(62)、及び(66)を入力として、次式(4)の4×4行列との行列ベクトル演算を行う。
0046
0047
第5のテンソル積演算器14は、DCT係数(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)を入力として、次式(5)の8×8行列との行列ベクトル演算を行う。
0048
0049
第6のテンソル積演算器15は、DCT係数(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)を入力として、次式(6)の8×8行列との行列ベクトル演算を行う。
0050
0051
第7のテンソル積演算器16は、DCT係数(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)を入力として、次式(7)の8×8行列との行列ベクトル演算を行う。
0052
0053
第8のテンソル積演算器17は、DCT係数(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)を入力として、次式(8)の8×8行列との行列ベクトル演算を行う。
0054
0055
第9のテンソル積演算器18は、DCT係数(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)を入力として、次式(9)の16×16行列との行列ベクトル演算を行う。
0056
0058
0059
一例として、図5から図13に、文献(Ichiro Kuroda,“Processor Architecture Driven Algorithm Optimazation for Fast 2D-DCT”,VLSISignal Processing VIII,pp. 481-490,1995)に記載されている、第1のテンソル積演算器10から第9のテンソル積演算器18における、展開例を示す。図中、rnが添字として付されているブランチ(枝)では、その乗算係数を次式(11)として、乗算を行う。
0060
0063
また、2次元バタフライ演算器(図1の19、22)は、第1の1次元バタフライ演算器と、第2の1次元バタフライ演算器と、この第1の演算器(1次元バタフライ演算器)の第1の出力を第1の入力とし、第2の演算器の第1の出力を第2の入力とする第3の1次元バタフライ演算器と、第1の演算器の第2の出力を第1の入力とし、第2の演算器の第2の出力を第2の入力とする第4の1次元バタフライ演算器と、からなり、第3の演算器の第1の出力を第1の出力とし、第4の演算器の第1の出力を第2の出力とし、第3の演算器の第2の出力を第3の出力とし、第4の演算器の第2の出力を第4の出力とする2次元バタフライ演算を行なう。
0064
図1を参照して、第1の2次元バタフライ演算器19は、第1のテンソル積演算器10から第4のテンソル積演算器13の演算結果(図5〜図8参照)、(00)′、(02)′、(20)′、(22)′、(04)′、(06)′、(24)′、(26)′、(40)′、(42)′、(60)′、(62)′、(44)′、(46)′、(64)′、及び(66)′を入力として、図14に示すような4点×4点2次元バタフライ演算を行なう。
0065
図1を参照して、第1の1次元バタフライ演算器20は、第5、及び第6のテンソル積演算器14と15の演算結果(図9、図10参照)、(01)′、(21)′、(03)′、(23)′、(05)′、(25)′、(07)′、(27)′、(41)′、(61)′、(43)′、(63)′、(45)′、(65)′、(47)′、及び(67)′を入力として、図15に示すような16点1次元バタフライ演算を行なう。
0066
また第2の1次元バタフライ演算器21は、第7、及び第8のテンソル積演算器16、17の演算結果(図11、図12参照)、(10)′、(12)′、(30)′、(32)′、(50)′、(52)′、(70)′、(72)′、(14)′、(16)′、(34)′、(36)′、(54)′、(56)′、(74)′、及び(76)′を入力として、図16に示すような16点1次元バタフライ演算を行なう。
0067
第1の2次元バタフライ演算器19と、第1及び第2の1次元バタフライ演算器20、21の演算結果を(ij)″とすると(図14、図15、図16参照)、第2の2次元バタフライ演算器22は、2次元バタフライ演算器19と、第1及び第2の1次元バタフライ演算器20、21と、第9のテンソル積演算器18との演算結果、(00)″、(01)″、(10)″、(11)″、(04)″、(03)″、(14)″、(13)″、(06)″、(05)″、(16)″、(15)″、(02)″、(07)″、(13)″、(17)″、(40)″、(41)″、(30)″、(31)″、(44)″、(43)″、(34)″、(33)″、(46)″、(45)″、(36)″、(35)″、(42)″、(47)″、(32)″、(37)″、(60)″、(61)″、(50)″、(51)″、(64)″、(63)″、(54)″、(53)″、(66)″、(65)″、(56)″、(55)″、(62)″、(67)″、(52)″、(57)″、(20)″、(21)″、(70)″、(71)″、(24)″、(23)″、(74)″、(73)″、(26)″、(25)″、(76)″、(75)″、(22)″、(27)″、(72)″、及び(77)″を入力として、図17に示すような8点×8点2次元バタフライ演算を行なう。図17の(ij)″′で示す演算結果は、8点×8点2次元逆離散コサイン変換回路の出力となる。
0068
第1のテンソル積演算器10から第9のテンソル積演算器18において、その演算結果は、第1の判定器1から第9の判定器9によって、テンソル積演算を行なわないと判定されたときには全て零とされる。
0069
[実施例2]図2は、本発明の第2の実施例に係る2次元逆離散コサイン変換(IDCT)回路の回路構成を示す図である。図2を参照すると、本実施例においては、各々のテンソル積演算器10〜18に対して部分テンソル積演算器32〜40が備えられており、さらに各テンソル積演算出力の入力に対して第1から第9の選択器23〜31が備えられている。
0070
図2を参照すると、本実施例において、第1の選択器23は、入力データ(DCT係数)(00)、(04)、(40)、及び(44)が零か否かを調べ、その結果、予め定めたデータ以外に一つでも非零データが存在していれば、第1のテンソル積演算器10を選択し、予め定めたデータ以外全て零であれば第1の部分テンソル積演算器32を選択する。
0071
第2の選択器24は、入力データ(02)、(06)、(42)、及び(46)が零か否かを調べ、その結果、予め定めたデータ以外に一つでも非零データが存在していれば第2のテンソル積演算器11を選択し、予め定めたデータ以外全て零であれば第2の部分テンソル積演算器33を選択する。
0072
第3の選択器25は、入力データ(20)、(24)、(60)、及び(64)が零か否かを調べ、その結果、予め定めたデータ以外に一つでも非零データが存在していれば第3のテンソル積演算器12を選択し、予め定めたデータ以外全て零であれば第3の部分テンソル積演算器34を選択する。
0073
第4の選択器26は、入力データ(22)、(26)、(62)、及び(66)が零か否かを調べ、その結果、予め定めたデータ以外に一つでも非零データが存在していれば第4のテンソル積演算器13を選択し、予め定めたデータ以外全て零であれば第4の部分テンソル積演算器35を選択する。
0074
第5の選択器27は、入力データ(01)、(03)、(05)、(07)、(41)、(43)、(45)、及び(47)が零か否かを調べ、その結果、予め定めたデータ以外に一つでも非零データが存在していれば第5のテンソル積演算器14を選択し、予め定めたデータ以外全て零であれば第5の部分テンソル積演算器36を選択する。
0075
第6の選択器28は、入力データ(21)、(23)、(25)、(27)、(61)、(63)、(65)、及び(67)が零か否かを調べ、その結果、予め定めたデータ以外に一つでも非零データが存在していれば第6のテンソル積演算器15を選択し、予め定めたデータ以外全て零であれば第6の部分テンソル積演算器37を選択する。
0076
第7の選択器29は、入力データ(10)、(14)、(30)、(34)、(50)、(54)、(70)、及び(74)が零か否かを調べ、その結果、予め選択したデータ以外に一つでも非零データが存在していれば第7のテンソル積演算器16を選択し、予め定めたデータ以外全て零であれば第7の部分テンソル積演算器38を選択する。
0077
第8の選択器30は、入力データ(12)、(16)、(32)、(36)、(52)、(56)、(72)、及び(76)が零か否かを調べ、その結果、予め選択したデータ以外に一つでも非零データが存在していれば第8のテンソル積演算器17を選択し、予め定めたデータ以外全て零であれば第8の部分テンソル積演算器39を選択する。
0078
第9の選択器31は、入力データ(11)、(13)、(15)、(17)、(31)、(33)、(35)、(37)、(51)、(53)、(55)、(57)、(71)、(73)、(75)、及び(77)が零か否かを調べ、その結果、予め定めたデータ以外に一つでも非零データが存在していれば第9のテンソル積演算器18を選択し、予め定めたデータ以外全て零であれば第9の部分テンソル積演算器40を選択する。
0079
部分テンソル積演算とは、テンソル積演算の入力データの一部だけを有効な入力とするテンソル積演算である。例えば、係数(00)、(02)、(20)、(22)、(01)、(03)、(21)、(10)、(30)、(12)、(11)だけを有効な入力とする。
0080
このとき、第1の部分テンソル積演算器32は、DCT係数(00)を入力として、図18に示すような演算を行ない、演算結果(00)′、(04)′、(40)′、(44)′をテンソル積演算結果として出力する。この場合、(00)′=(04)′=(40)′=(44)′=r0×(00)=(1/8(00))とされる。
0081
第2の部分テンソル積演算器33は、DCT係数(02)を入力として、図19に示すような演算を行なう。この場合、演算出力は、(02)′=(42)′=r2×(02)、(06)′=(46)′=r6×(02)とされる。
0082
第3の部分テンソル積演算器34は、DCT係数(20)を入力として、図20に示すような演算を行なう。この場合、演算出力は、(20)′=(24)′=r2×(20)、(60)′=(64)′=r6×(20)とされる。
0083
第4の部分テンソル積演算器35は、DCT係数(22)を入力として、図21に示すような演算を行なう。この場合、演算出力は、(22)′=(r0+r4)×(22)、(66)′=(r0−r4)×(22)、(62)′=r4×(22)、(26)′=(−r4)×(22)とされる。
0085
第6の部分テンソル積演算器37は、係数(21)を入力として、図23に示すような演算を行なう。
0086
第7の部分テンソル積演算器38は、係数(10)、(30)を入力として、図24に示すような演算を行なう。
0087
第8の部分テンソル積演算器39は、係数(12)を入力として、図25に示すような演算を行なう。
0088
第9の部分テンソル積演算器40は、係数(11)を入力として、図26に示すような演算を行なう。
0089
本実施例において、第1の部分テンソル積演算器32から第9の部分テンソル積演算器40の有効な入力データとしては、上記の係数以外にも考えられる。しかしながら、有効な入力データを増やすと、部分テンソル積演算を選択する確率は増えるが、部分テンソル積演算を行なうことで削減できる演算量は減少する。
0090
第1の2次元バタフライ演算器19は、第1から第4のテンソル積演算器10〜13か、第1から第4の部分テンソル積演算器32〜35の演算結果を入力として、図14に示すような4点×4点2次元バタフライ演算を行なう。
0091
第1の1次元バタフライ演算器20は、第5、第6のテンソル積演算器14、15か、第5、第6部分テンソル積演算器36、37の演算結果を入力として、図15に示すような16点1次元バタフライ演算を行なう。
0092
第2の1次元バタフライ演算器21は、第7、第8のテンソル積演算器16、17か、部分テンソル積演算器38、39の演算結果を入力として、図16に示すような16点1次元バタフライ演算を行なう。
0093
第2の2次元バタフライ演算器22は、第1の2次元バタフライ演算器19の演算結果と、第1及び第2の1次元バタフライ演算器20、21の演算結果と、第9のテンソル積演算器18又は第9の部分テンソル積演算器40の演算結果、を入力として、図17に示すような8点×8点2次元バタフライ演算を行なう。
0094
[実施例3]次に、本発明の第3の実施例に係る2次元逆離散コサイン変換(IDCT)回路について説明する。
0095
入力の各DCT係数に、図27に示すような番号を附与する。例えば動画像通信用の映像符号化方式であるH.261、蓄積用動画符号化方式であるMPEG−1、静止画像符号化方式であるJPEG等の画像符号化では、DCT係数は、図27のような順番で符号化され、有意なデータの最後にEOB符号が付けられ、それ以降のデータは省略される。
0096
図27に示すDCT係数において、何番のデータの後にEOB符号があるかという情報を、「EOBアドレス」と呼ぶ。また、第1のテンソル積演算器10から第9のテンソル積演算器18と、入力係数のアドレスは、図28に示すような関係にあるため、それぞれのテンソル積演算器は、図29に示す番号を持つデータを入力とすることになる。
0097
上記第1、第2の実施例に係る2次元IDCT回路では、各テンソル積演算器の入力データが零か否かを実際に調べていたが、図27における0番からEOBアドレスまでのデータが全て非零であるとみなすことで、EOBアドレスさえ分かれば、実際のデータを調べる必要がなくなる。
0099
第1の判定器41は、EOBアドレスが「5」以上であるか否かを調べ、「5」以上であれば、第2のテンソル積演算器11でテンソル積演算を行ない、「5」未満であればテンソル積演算を行なわないと判定する。
0100
第2の判定器42は、EOBアドレスが「3」以上であるか否かを調べ、「3」以上であれば、第3のテンソル積演算器12でテンソル積演算を行ない、3未満であればテンソル積演算を行なわないと判定する。
0101
第3の判定器43は、EOBアドレスが「12」以上であるか否かを調べ、12以上であれば第4のテンソル積演算器13でテンソル積演算を行ない、12未満であればテンソル積演算を行なわないと判定する。
0102
第4の判定器44は、EOBアドレスが「1」以上であるか否かを調べ、「1」以上であれば第5のテンソル積演算器14でテンソル積演算を行ない、「1」未満であればテンソル積演算を行なわないと判定する。
0103
第5の判定器45は、EOBアドレスが「8」以上であるか否かを調べ、「8」以上であれば第6のテンソル積演算器15でテンソル積演算を行ない、「8」未満であればテンソル積演算を行なわないと判定する。
0104
第6の判定器46は、EOBアドレスが「2」以上であるか否かを調べ、2以上であれば第7のテンソル積演算器16でテンソル積演算を行ない、「2」未満であればテンソル積演算を行なわないと判定する。
0105
第7の判定器47は、EOBアドレスが「7」以上であるか否かを調べ、「7」以上であれば第8のテンソル積演算器17でテンソル積演算を行ない、「7」未満であればテンソル積演算を行なわないと判定する。
0106
第8の判定器48は、EOBアドレスが「4」以上であるか否かを調べ、「4」以上であれば第9のテンソル積演算器18でテンソル積演算を行ない、「4」未満であればテンソル積演算を行なわないと判定する。
0107
第2から第9のテンソル積演算器11〜18は、それぞれ第1から第8の判定器41〜48で演算を行なうものと判定された場合にのみ、テンソル積演算を行なう。
0108
第1のテンソル積演算器10から第9のテンソル積演算器18と、第1、及び第2の2次元バタフライ演算器19、22と、1次元バタフライ演算器20と21については、上記した第1の実施例の2次元逆離散コサイン変換回路と同様とされ、その説明は省略する。
0109
[実施例4]次に本発明の第4の実施例について説明する。図4は、本発明の第4の実施例に係る2次元逆離散コサイン変換回路の構成を示す図である。
0110
図4を参照して、本実施例においては、第1から第9のテンソル積演算器10〜18のそれぞれに対して、第1から第9の部分テンソル積演算器32〜40を備えるとともに、各テンソル積演算器に対してEOBアドレスを入力とする第1から第9の選択器49〜57を備えている。
0111
第1の選択器49から第9の選択器57の入力として用いるEOBアドレスは、上記第3の実施例で説明した通りのものであるため、その説明は省略する。
0112
図29に示す、第1から第9のテンソル積演算器10〜18の入力データを持つ番号のうち、第1から第9の部分テンソル積演算器32〜40が有効な入力とするデータの番号を除いて一番小さい番号をそれぞれ第1から第9の閾値とする。各選択器は、EOBアドレスが対応する閾値以上であれば該選択器に対応するテンソル積演算器を選択し、閾値未満であれば、テンソル積演算器の代わりに部分テンソル積演算器を選択する。
0113
第1の選択器49は、EOBアドレスが第1の閾値以上であれば第1のテンソル積演算器10を選択し、第1の閾値未満ならば第1の部分テンソル積演算器32を選択する。
0114
第2の選択器50は、EOBアドレスが第2の閾値以上であれば第2のテンソル積演算器11を選択し、第2の閾値未満であれば第2の部分テンソル積演算器33を選択する。
0115
第3の選択器51は、EOBアドレスが第3の閾値以上であれば第3のテンソル積演算器12を選択し、第3の閾値未満であれば第3の部分テンソル積演算器34を選択する。
0116
第4の選択器52は、EOBアドレスが第4の閾値以上であれば第4のテンソル積演算器13を選択し、第4の閾値未満であれば第4の部分テンソル積演算器35を選択する。
0117
第5の選択器53は、EOBアドレスが第5の閾値以上であれば第5のテンソル積演算器14を選択し、第5の閾値未満であれば第5の部分テンソル積演算器36を選択する。
0118
第6の選択器54は、EOBアドレスが第6の閾値以上であれば第6のテンソル積演算器15を選択し、第6の閾値未満であれば第6の部分テンソル積演算器37を選択する。
0119
第7の選択器55は、EOBアドレスが第7の閾値以上であれば第7のテンソル積演算器16を選択し、第7の閾値未満であれば第7の部分テンソル積演算器38を選択する。
0120
第8の選択器56は、EOBアドレスが第8の閾値以上であれば第8のテンソル積演算器17を選択し、第8の閾値未満であれば第8の部分テンソル積演算器39を選択する。
0121
第9の選択器57は、EOBアドレスが第9の閾値以上であれば第9のテンソル積演算器18を選択し、第9の閾値未満であれば第9の部分テンソル積演算器40を選択する。
0122
第1から第9のテンソル積演算器10〜18においては、それぞれ第1から第9の選択器49〜57にて、テンソル積演算器が選択された場合にのみ、テンソル積演算を行なう。
0123
第1から第9の部分テンソル積演算器32〜40では、それぞれ第1から第9の選択器49〜57にて、部分テンソル積演算器が選択された場合にのみ部分テンソル積演算を行なう。
0124
図29において、0、5、3、12、1、6、8、2、9、7、4の番号で示すデータを、第1の部分テンソル積演算器32から第9の部分テンソル積演算器40において有効な入力とすると、上記第1から第9の閾値は、それぞれ14、27、21、41、15、17、16、18、11となる。
0125
第1から第9のテンソル積演算器10から18と、部分テンソル積演算器32から40と、第1及び第2の2次元バタフライ演算器19、22と、1次元バタフライ演算器20、21については、上記第2の実施例と同様である。
0126
上記した本発明の各実施例の作用効果について以下に説明する。
0127
上記実施例においては、9つのテンソル積演算のうち、入力が全て零である場合には、テンソル積演算を行なわない、ように構成したことにより、テンソル積演算量を削減することができる。
0128
例えば図5から図13に示すような演算に展開したテンソル積演算を、加減算、乗算、積和演算をそれぞれ1命令で実行できるプロセッサを用いて実現する場合、第1から第3のテンソル積演算にそれぞれ16命令、第4のテンソル積演算に18命令、第5と第7のテンソル積演算にそれぞれ48命令、第6と第8のテンソル積演算にそれぞれ56命令、第9のテンソル積演算に108命令必要である。
0129
上記第1の実施例においては、入力が全て零であるテンソル積演算を行なわないので、各テンソル積演算で必要な上記命令数の分だけ演算量を削減できる。なお、演算を行なうものであるか否かを判定する判定器で演算が増えるため、実際に削減できる演算量は、(省略するテンソル積演算の演算量)−(判定器で必要な演算量)となる。
0130
上記第2の実施例も、テンソル積演算にかかる演算量を縮減する。すなわち、第2の実施例においては、テンソル積演算のうちある入力データだけが非零データでその他の入力データは零とした部分テンソル積演算器を用意し、完全なテンソル積演算を行なうか、部分テンソル積演算を行なうかを切替制御するように構成したことによる。
0131
例えば図18から図26で示すような部分テンソル積演算を用意し、加減算、乗算、積和演算をそれぞれ1命令で実行できるプロセッサを用いて実現するときには、全て部分テンソル積演算を選択したときに必要な命令数は83命令で、全てテンソル積演算を行なう場合と比べて299命令少なくて済む。
0132
また、第1の実施例においては、演算を行なわずに演算量を削減するためには入力データが全て零でなければならないが、第2の実施例では、例えば入力係数(00)、(02)、(20)、(22)、(01)、(03)、(21)、(10)、(30)、(12)、(11)に非零係数が存在していても、部分テンソル積演算を選択することによって演算量を削減できる。
0133
さらに、上記第3の実施例では、テンソル積演算で必要な演算量を削減できる上に、テンソル積演算を行なうものであるか否かの判定に必要な演算量も削減できる。その理由は、全ての入力データが零であるか否かを調べるのではなく、DCT係数のEOBアドレスを利用し、EOBアドレスまでのデータは全て非零データとみなすからである。
0134
これによって64個の入力データ全てを調べる必要がなくなり、各判定器で1回ずつの合計8回のEOBアドレスを用いた条件判定で済む。
0135
そして、上記第4の実施例では、上記第2の実施例と比べて、部分テンソル積演算とテンソル積演算のうちどちらを選択するかを決定する選択器の演算量を削減できる。その理由は、部分テンソル積演算の入力データ以外のテンソル積演算の入力データ全てについて零であるか否かを調べるのではなく、DCT係数のEOBアドレスを利用し、EOBアドレスまでのデータは全て非零データとみなすからである。
0136
これによって64個の入力データ全てを調べる必要がなくなり、各選択器で1回ずつ合計9回のEOBアドレスを用いた条件判定で済む。
0137
以上、本発明を上記各実施例に即して説明したが、本発明は、上記実施例の構成にのみ限定されるものでなく、本発明の原理に準ずる各種形態及び変形を含むことは勿論である。
発明の効果
0138
以上説明したように、本発明によれば下記記載の効果を奏する。
0139
(1)請求項1記載の発明によれば、テンソル積演算に必要な演算量を縮減することができるという効果を奏する。
0140
その理由は、請求項1記載の発明においては、9つのテンソル積演算のうち、入力が全て零である場合には、テンソル積演算を行なわない、ように構成したことによる。
0141
(2)請求項2記載の発明によっても、テンソル積演算にかかる演算量を減らすことができる。
0142
その理由は、テンソル積演算のうちある入力データだけが非零データでその他の入力データは零とした部分テンソル積演算器を用意し、完全なテンソル積演算を行なうか、部分テンソル積演算を行なうかの選択にした、ことによる。
0143
(3)請求項3記載の発明によれば、テンソル積演算で必要な演算量を削減できる上に、テンソル積演算を行なうものであるか否かの判定に必要な演算量も削減することができる。
0144
その理由は、全ての入力データが零であるか否かを調べるのではなく、DCT係数のEOBアドレスを利用し、EOBアドレスまでのデータは全て非零データとみなすからである。これによって例えば64個の入力データ全てを調べる必要がなくなり、各判定器で1回ずつの合計8回のEOBアドレスを用いた条件判定で済む。
0145
(4)請求項4記載の発明によれば、請求項2記載の発明と比べて、部分テンソル積演算とテンソル積演算のうちどちらを選択するかを決定する選択器の演算量を削減することができる。
0146
その理由は、部分テンソル積演算の入力データ以外のテンソル積演算の入力データ全てについて零であるか否かを調べるのではなく、DCT係数のEOBアドレスを利用し、EOBアドレスまでのデータは全て非零データとみなすからである。これによって64個の入力データ全てを調べる必要がなくなり、各選択器で1回ずつ合計9回のEOBアドレスを用いた条件判定で済む。
図面の簡単な説明
0147
図1本発明における第1の実施例の構成を示すブロック図である。
図2本発明における第2の実施例の構成を示すブロック図である。
図3本発明における第3の実施例の構成を示すブロック図である。
図4本発明における第4の実施例の構成を示すブロック図である。
図5本発明の実施例におけるテンソル積演算器10で行なう演算を示す図である。
図6本発明の実施例におけるテンソル積演算器11で行なう演算を示す図である。
図7本発明の実施例におけるテンソル積演算器12で行なう演算を示す図である。
図8本発明の実施例におけるテンソル積演算器13で行なう演算を示す図である。
図9本発明の実施例におけるテンソル積演算器14で行なう演算を示す図である。
図10本発明の実施例におけるテンソル積演算器15で行なう演算を示す図である。
図11本発明の実施例におけるテンソル積演算器16で行なう演算を示す図である。
図12本発明の実施例におけるテンソル積演算器17で行なう演算を示す図である。
図13本発明の実施例におけるテンソル積演算器18で行なう演算を示す図である。
図14本発明の実施例における2次元バタフライ演算器19で行なう演算を示す図である。
図15本発明の実施例における1次元バタフライ演算器20で行なう演算を示す図である。
図16本発明の実施例における1次元バタフライ演算器21で行なう演算を示す図である。
図17本発明の実施例における2次元バタフライ演算器22で行なう演算を示す図である。
図18本発明の実施例における部分テンソル積演算器23で行なう演算を示す図である。
図19本発明の実施例における部分テンソル積演算器24で行なう演算を示す図である。
図20本発明の実施例における部分テンソル積演算器25で行なう演算を示す図である。
図21本発明の実施例における部分テンソル積演算器26で行なう演算を示す図である。
図22本発明の実施例における部分テンソル積演算器27で行なう演算を示す図である。
図23本発明の実施例における部分テンソル積演算器28で行なう演算を示す図である。
図24本発明の実施例における部分テンソル積演算器29で行なう演算を示す図である。
図25本発明の実施例における部分テンソル積演算器30で行なう演算を示す図である。
図26本発明の実施例における部分テンソル積演算器31で行なう演算を示す図である。
図27本発明の一実施例を説明するための図であり、入力のDCT係数の番号を示す図である。
図28本発明の一実施例を説明するための図であり、各テンソル積演算と入力データの位置関係を示す図である。
図29本発明の一実施例を説明するための図であり、各テンソル積演算と入力のDCT係数の番号を示す図である。
図30従来の2次元逆離散コサイン変換回路を示すブロック図である。
--
0148
1〜9判定器
10〜18テンソル積演算器
19、22 2次元バタフライ演算器
20、21 1次元バタフライ演算器
23〜31選択器
32〜40 部分テンソル積演算器
41〜48 判定器
49〜57 選択器