(57)【特許請求の範囲】
【請求項１】
ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、
前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、
前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、
前記ｋ２ビットシフト乗算回路の乗算結果に対し、補正係数群を用いて演算された補正処理値の加算処理を行う補正処理回路と、
前記補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、
前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備える、
ことを特徴とする行列演算装置。
【請求項２】
請求項１記載の行列演算装置において、
前記補正係数群が、
前記入力に対して前記ｋ１乗倍重み係数群によって重み付けを行い、前記ｋ２ビットシフト乗算を行った結果と、前記入力に対して前記重み付け係数群を２のｋ乗倍した係数で重み付けを行った結果との差を補正する係数群である、
ことを特徴とする行列演算装置。
【請求項３】
ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、
前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、
前記ｋ１乗重み付け乗算回路の演算結果に対し、第１の補正係数群を用いて演算された第１の補正処理値の加算処理を行う第１の補正処理回路と、
前記第１の補正処理回路の演算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、
前記ｋ２ビットシフト乗算回路の演算結果に対し、第２の補正係数群を用いて演算された第２の補正処理値の加算処理を行う第２の補正処理回路と、
前記第２の補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、
前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備える、
ことを特徴とする行列演算装置。
【請求項４】
ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、
前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって入力に対し重み付けを行うｋ１乗重み付け乗算回路と、
前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、
前記ｋ２ビットシフト乗算回路の乗算結果に対し、第１の補正係数群を用いて演算された第１の補正処理値の加算処理を行う第１の補正処理回路と、
前記第１の補正処理回路の演算結果に対し、ｋ３ビットシフトによってビットシフト乗算処理を行うｋ３ビットシフト乗算回路と、
前記ｋ３ビットシフト乗算回路の乗算結果に対し、第２の補正係数群を用いて演算された第２の補正処理値の加算処理を行う第２の補正処理回路と、
前記第２の補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、
前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２＋ｋ３とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備える、
ことを特徴とする行列演算装置。
【請求項５】
ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、
前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、
前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｓビットシフト（ｓ＝ｋ２，ｋ３，…，ｋｎとする）によってビットシフト乗算処理を行うｎ−１個のｓビットシフト乗算回路と、
前記ｓビットシフト乗算回路の乗算結果に対し、第ｔの補正係数群（ｔ＝１，２，…，ｎ−１とし、ｓ＝ｋｎのときｔ＝ｎ−１とする）を用いて演算された第ｔの補正処理値の加算処理を行うｎ−１個の第ｔの補正処理回路と、
前記第ｎ−１の補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、
前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２＋…＋ｋｎとする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備える、
ことを特徴とする行列演算装置。
【請求項６】
請求項１、３、４、５のいずれかに記載の行列演算装置をｎ段備え、
前記第１ないし第ｎの行列演算装置は、該各行列演算装置のすべてに同じ値として入力される入力行列値に対し、それぞれ重み付け係数群の第１ないし第ｎの列の係数値で、重み付けを行うものであり、
各行列演算装置で、重み付け係数群に実施される重み付けの２のｋ１乗倍とビットシフト乗算のビットシフト値とビットシフト除算のビットシフト値は、上記係数値に基づいた可変の値をとるものであり、
前記各行列演算装置の各出力値よりなる行列出力値を出力する、
ことを特徴とする行列演算装置。
【請求項７】
ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、
前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、
前記ｋ１乗重み付け乗算回路による乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、
前記重み付け係数群を２のｋ３乗倍してから整数化したｋ３乗倍重み付け係数群によって、前記入力に対し重み付けを行うｋ３乗重み付け乗算回路と、
前記ｋ３乗重み付け乗算回路による乗算結果に対し、ｋ４ビットシフトによってビットシフト乗算処理を行うｋ４ビットシフト乗算回路と、
前記ｋ２ビットシフト乗算回路の乗算結果と、前記ｋ４ビットシフト乗算回路の乗算結果のそれぞれに対し、補正係数群を用いて演算された補正処理値の加算処理を行う補正処理回路と、
前記補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、
前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２＝ｋ３＋ｋ４とする）によってビットシフト除算処理を行うビットシフト除算回路とを備える、
ことを特徴とする行列演算装置。
【請求項８】
請求項６記載の行列演算装置において、
前記第１ないし第ｎの行列演算装置は、重み付け係数群の係数値に基づいて決められた数の、ｋ１２ないしｋｎビットシフトによりビットシフト乗算処理を行うビットシフト乗算回路と補正処理回路をそれぞれ備える、
ことを特徴とする行列演算装置。
【請求項９】
請求項１、３、４、５、７のいずれかに記載の行列演算装置において、
整数化された重み付け係数群の乗算係数のうち、最小の乗算係数と他の乗算係数との差が所定の値より大きい場合、ビットシフト乗算回路の演算結果に対し、補正処理値の加算処理を行わないでビットシフト除算処理を行う、
ことを特徴とする行列演算装置。
【請求項１０】
請求項１、３、４、５、７のいずれかに記載の行列演算装置において、
補正処理回路の補正処理値に四捨五入処理を行わずビットシフト除算処理を行う、
ことを特徴とする行列演算装置。
【請求項１１】
請求項１記載の行列演算装置において、
前記重み付け係数群が、高周波成分を間引くために実現されるダウンデコードシステムに用いられる重み付け係数群である、
ことを特徴とする行列演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、行列演算装置に関し、特に映像信号処理等の画像変換に用いられる演算装置に関するものである。
【背景技術】
【０００２】
近年、離散コサイン変換（ＤＣＴ）／逆離散コサイン変換（ＩＤＣＴ）などを用いた、画像の周波数間引き技術が多数用いられてきている。こうした画像間引きを実現することで、画像変換などに必要な一次記憶装置（メモリ）などを削減することが可能となる。
【０００３】
図１は、従来の行列演算装置の構成を示すブロック図であり、図２は従来の行列演算装置の詳細構成を示す構成図である。
図１、図２において、１０１は外部からの入力であり、１０２は重み付け乗算回路であり、１０３は加算回路であり、１０４は四捨五入処理回路であり、１０５はｎビットシフト除算回路である。
【０００４】
従来の行列演算装置の構成では、複数の入力１０１に対する重み付け乗算回路における重み付け係数群１０２ａに関して、そのすべての係数に特定の乗数倍（２のｎ乗）を行い、十分に演算精度が確保できる値まで該係数を拡張した後に、これを整数化することで重み付け係数群１０２ｂを実現し、それぞれの入力１０１に対して該重み付け係数群１０２ｂにおける係数を用いて重み付け乗算回路１０２によって重み付け乗算を行い、重み付け乗算回路１０２の演算結果を加算回路１０３によって加算する。この加算回路１０３の出力に四捨五入処理回路１０４によって四捨五入処理を行った後、演算精度確保のために重み付け係数群１０２ａに対して乗数倍した拡張分をビットシフト除算回路１０５によってビットシフト除算することで、もともとの重み付け係数群１０２ａで演算される重み付け演算を実現している。この演算を行うために、例えば特許文献１による行列演算回路の簡略化や、特許文献２による累積加算回路の削減などを行うことで、演算装置の回路簡素化による回路規模の削減などを実現してきた。
【特許文献１】特開平５−１５８９６６号公報
【特許文献２】特開平１０−９１６１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の構成では、離散コサイン変換／逆離散コサイン変換などに代表される行列演算において、演算精度を十分に確保するために、もともとの変換行列係数を２のｎ乗倍して十分大きな係数まで拡張し行列演算を行ってきた。しかしながら従来の構成では、非常に高精度の演算を必要とする行列演算において、非常に大きな値を乗算することによって変換行列係数を実現するために、変換行列係数によって演算される演算結果も非常に大きくなり、回路実現する上で乗算回路等が大きくなり全体の回路規模が大きくなっていた。特に、高周波成分を間引くために実現されるダウンサンプリングおよびアップサンプリングなどのシステムで行列演算の係数同士に大きな差がある場合は、特定の乗算値が非常に大きくなり、全体の回路規模が大きくなってしまう。また、乗算回路が大きくなることによって回路実現するためのタイミング制約等を満たすために、一次保持回路（ＦＦ）等を持つことになり、さらなる回路増加の原因となっていた。
【０００６】
本発明は、上記のような従来の問題点を解決するためになされたもので、乗算回路の回路規模を削減しつつ、従来に比しより高精度な演算結果を実現できる行列演算装置を得ることを目的とする。
また、タイミング制約のための一次保持回路（ＦＦ）を削減することが可能な行列演算装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
前記課題を解決するために、本発明にかかる行列演算装置は、行列演算係数を非常に大きな係数まで拡張することなく演算することにより、演算量を削減して乗算回路等の回路規模を削減するとともに、乗算結果に補正係数を加算することにより、演算精度向上を実現するものである。
【０００８】
本発明の行列演算装置は、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、前記ｋ２ビットシフト乗算回路の乗算結果に対し、補正係数群を用いて演算された補正処理値の加算処理を行う補正処理回路と、前記補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備えることを特徴とするものである。
【０００９】
本発明の行列演算装置は、前記行列演算装置において、前記補正係数群が、前記入力に対して前記ｋ１乗倍重み係数群によって重み付けを行い、前記ｋ２ビットシフト乗算を行った結果と、前記入力に対して前記重み付け係数群を２のｋ乗倍した係数で重み付けを行った結果との差を補正する係数群であることを特徴とするものである。
【００１０】
本発明の行列演算装置は、前記行列演算装置において、前記補正処理回路の演算結果の精度の許容範囲に基づき、最適な補正係数群を用いることを特徴とするものである。
【００１１】
本発明の行列演算装置は、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路の演算結果に対し、第１の補正係数群を用いて演算された第１の補正処理値の加算処理を行う第１の補正処理回路と、前記第１の補正処理回路の演算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、前記ｋ２ビットシフト乗算回路の演算結果に対し、第２の補正係数群を用いて演算された第２の補正処理値の加算処理を行う第２の補正処理回路と、前記第２の補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備えることを特徴とするものである。
【００１２】
本発明の行列演算装置は、、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、前記ｋ２ビットシフト乗算回路の乗算結果に対し、第１の補正係数群を用いて演算された第１の補正処理値の加算処理を行う第１の補正処理回路と、前記第１の補正処理回路の演算結果に対し、ｋ３ビットシフトによってビットシフト乗算処理を行うｋ３ビットシフト乗算回路と、前記ｋ３ビットシフト乗算回路の乗算結果に対し、第２の補正係数群を用いて演算された第２の補正処理値の加算処理を行う第２の補正処理回路と、前記第２の補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２＋ｋ３とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備えることを特徴とするものである。
【００１３】
本発明の行列演算装置は、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｓビットシフト（ｓ＝ｋ２，ｋ３，…，ｋｎとする）によってビットシフト乗算処理を行うｎ−１個のｓビットシフト乗算回路と、前記ｓビットシフト乗算回路の乗算結果に対し、第ｔの補正係数群（ｔ＝１，２，…，ｎ−１とし、ｓ＝ｋｎのときｔ＝ｎ−１とする）を用いて演算された第ｔの補正処理値の加算処理を行うｎ−１個の第ｔの補正処理回路と、前記第ｎ−１の補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２＋…＋ｋｎとする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備えることを特徴とするものである。
【００１４】
本発明の行列演算装置は、前記行列演算装置をｎ段備え、前記第１ないし第ｎの行列演算装置は、該各行列演算装置のすべてに同じ値として入力される入力行列値に対し、それぞれ重み付け係数群の第１ないし第ｎの列の係数値で、重み付けを行うものであり、各行列演算装置で、重み付けの乗倍とビットシフト乗算のビットシフト値とビットシフト除算のビットシフト値は、上記係数値に基づいた可変の値をとるものであり、前記各行列演算装置の各出力値よりなる行列出力値を出力することを特徴とするものである。
【００１５】
本発明の行列演算装置は、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路による乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、前記重み付け係数群を２のｋ３乗倍してから整数化したｋ３乗倍重み付け係数群によって、前記入力に対し重み付けを行うｋ３乗重み付け乗算回路と、前記ｋ３乗重み付け乗算回路による乗算結果に対し、ｋ４ビットシフトによってビットシフト乗算処理を行うｋ４ビットシフト乗算回路と、前記ｋ２ビットシフト乗算回路の乗算結果と、前記ｋ４ビットシフト乗算回路の乗算結果のそれぞれに対し、補正係数群を用いて演算された補正処理値の加算処理を行う補正処理回路と、前記補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２＝ｋ３＋ｋ４とする）によってビットシフト除算処理を行うビットシフト除算回路とを備えることを特徴とするものである。
【００１６】
本発明の行列演算装置は、前記記載の行列演算装置において、前記第ｔの補正処理回路（ｔ＝１，２，…，ｎ−１とする）の演算結果の精度の許容範囲に基づき、最適な補正係数群を用いることを特徴とするものである。
【００１７】
本発明の行列演算装置は、前記行列演算装置において、前記補正処理回路の演算結果の精度の許容範囲に基づき、最適な補正係数群を用いることを特徴とするものである。
【００１８】
本発明の行列演算装置は、前記行列演算装置において、前記第１ないし第ｎの行列演算装置は、重み付け係数群の係数値に基づいて決められた数のビットシフト乗算回路と補正処理回路をそれぞれ備えることを特徴とするものである。
【００１９】
本発明の行列演算装置は、前記行列演算装置において、整数化された重み付け係数群の乗算係数のうち、最小の乗算係数と他の乗算係数との差が所定の値より大きく補正処理する演算結果が大きい場合、ビットシフト乗算回路の演算結果に対し、補正処理値の加算処理を行わないでビットシフト除算処理を行うことを特徴とするものである。
【００２０】
本発明の行列演算装置は、前記行列演算装置において、補正処理回路の補正処理値に四捨五入処理を行わずビットシフト除算処理を行うことを特徴とするものである。
【００２１】
本発明の行列演算装置は、前記行列演算装置において、行列内で大きな幅をもつ行列係数によって表される重み付け係数群を用いて演算を行い、円演算されたデータを半導体演算装置により行うことを特徴とするものである。
【００２２】
本発明の行列演算装置は、前記行列演算装置において、前記重み付け係数群が、高周波成分を間引くために実現されるダウンデコードシステムに用いられる重み付け係数群であることを特徴とするものである。
【００２３】
本発明の行列演算装置は、前記行列演算装置において、前記重み付け係数群が、行列内で大きな幅を持つ行列式で表されていることを特徴とするものである。
【発明の効果】
【００２４】
本発明によれば、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、前記ｋ２ビットシフト乗算回路の乗算結果に対し、補正係数群を用いて演算された補正処理値の加算処理を行う補正処理回路と、前記補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備えるようにしたので、補正処理値を加算することで従来必要であったもともとの重み付け係数に対する大幅な係数持ち上げを必要とせず、乗算器においても簡易なシフト演算の実現を可能とし、演算回路全体として、大幅な回路削減と、従来の演算回路規模に対する演算精度に対して大幅な精度向上を実現することができる。また、演算回路規模を小さくすることで、タイミング等の改善を容易に実現することができ、一時保持回路用遅延素子などを削減してタイミング問題における演算回路規模の増大を防ぐことが可能となる。
【００２５】
本発明の行列演算装置によれば、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、前記ｋ２ビットシフト乗算回路の乗算結果に対し、補正係数群を用いて演算された補正処理値の加算処理を行う補正処理回路と、前記補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備えるようにしたので、全体の回路規模を小さくすることができ、また演算精度を高くすることができる。また、従来では乗算回路が大きくなるために必要であった演算処理速度の改善のための一時保持回路を削減することができる。
【００２６】
本発明の行列演算装置によれば、前記行列演算装置において、前記補正係数群が、前記入力に対して前記ｋ１乗倍重み係数群によって重み付けを行い、前記ｋ２ビットシフト乗算を行った結果と、前記入力に対して前記重み付け係数群を２のｋ乗倍した係数で重み付けを行った結果との差を補正する係数群であるようにしたので、演算結果の精度が高くなるよう補正処理を行うことができる。
【００２７】
本発明の行列演算装置によれば、前記行列演算装置において前記補正処理回路の演算結果の精度の許容範囲に基づき、最適な補正係数群を用いるようにしたので、最終的に必要な演算精度に合った補正係数群を用いて補正処理を行うことができる。
【００２８】
本発明の行列演算装置によれば、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路の演算結果に対し、第１の補正係数群を用いて演算された第１の補正処理値の加算処理を行う第１の補正処理回路と、前記第１の補正処理回路の演算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、前記ｋ２ビットシフト乗算回路の演算結果に対し、第２の補正係数群を用いて演算された第２の補正処理値の加算処理を行う第２の補正処理回路と、前記第２の補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備えるようにしたので、ビットシフト乗算処理を行う前に第１の補正処理回路により補正処理を行い、ビットシフト乗算処理後に第２の補正処理回路により再度補正処理を行うことで、補正処理する演算結果が小さくなり、第１、第２の補正処理回路の回路規模を小さくすることができ、装置全体の回路規模を小さくすることができる。
【００２９】
本発明の行列演算装置によれば、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、前記ｋ２ビットシフト乗算回路の乗算結果に対し、第１の補正係数群を用いて演算された第１の補正処理値の加算処理を行う第１の補正処理回路と、前記第１の補正処理回路の演算結果に対し、ｋ３ビットシフトによってビットシフト乗算処理を行うｋ３ビットシフト乗算回路と、前記ｋ３ビットシフト乗算回路の乗算結果に対し、第２の補正係数群を用いて演算された第２の補正処理値の加算処理を行う第２の補正処理回路と、前記第２の補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２＋ｋ３とする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備えるようにしたので、例えば重み付け係数群の係数値に差があるとき、もしくは係数値が小さいときでも、第１のビットシフト乗算回路の演算結果に対し第１の補正処理を行い、第２のビットシフト乗算回路の乗算結果に対し第２の補正処理を行うよう２回に分けてビットシフト乗算、及びその演算結果の補正処理を行うため、補正処理する演算結果が小さくなり、第１、第２の補正処理回路を小さくすることができ、装置全体の回路規模を小さくすることができる。
【００３０】
本発明の行列演算装置によれば、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路の乗算結果に対し、ｓビットシフト（ｓ＝ｋ２，ｋ３，…，ｋｎとする）によってビットシフト乗算処理を行うｎ−１個のｓビットシフト乗算回路と、前記ｓビットシフト乗算回路の乗算結果に対し、第ｔの補正係数群（ｔ＝１，２，…，ｎ−１とし、ｓ＝ｋｎのときｔ＝ｎ−１とする）を用いて演算された第ｔの補正処理値の加算処理を行うｎ−１個の第ｔの補正処理回路と、前記第ｎ−１の補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２＋…＋ｋｎとする）によってビットシフト除算処理を行うｋビットシフト除算回路とを備えるようにしたので、重み付け乗算処理における最大演算結果を考慮した場合の演算ビット幅を小さくすることができ、ビットシフト乗算回路、及び補正処理回路の規模を小さくすることができる。
【００３１】
本発明の行列演算装置によれば、前記行列演算装置をｎ段備え、前記第１ないし第ｎの行列演算装置は、該各行列演算装置のすべてに同じ値として入力される入力行列値に対し、それぞれ重み付け係数群の第１ないし第ｎの列の係数値で、重み付けを行うものであり、各行列演算装置で、重み付けの乗倍と、ビットシフト乗算のビットシフト値と、ビットシフト除算のビットシフト値は、上記係数値に基づいた可変の値をとるものであり、前記各行列演算装置の各出力値よりなる行列出力値を出力するようにしたので、重み付け係数群の係数値に応じて、複数の行列演算装置のうち特定の行列演算装置の乗算回路等の回路規模を大きくし、他の行列演算装置の乗算回路等の回路規模を小さくすることができ、これにより、全体の回路規模を小さくすることができる。
【００３２】
本発明の行列演算装置によれば、ｉ個（ｉは１以上の整数）の入力に対して、ｍ個（ｍは１以上の整数）以上の重み付け係数群によって重み付け演算を行う行列演算装置において、前記重み付け係数群を２のｋ１乗倍してから整数化したｋ１乗倍重み付け係数群によって、入力に対し重み付けを行うｋ１乗重み付け乗算回路と、前記ｋ１乗重み付け乗算回路による乗算結果に対し、ｋ２ビットシフトによってビットシフト乗算処理を行うｋ２ビットシフト乗算回路と、前記重み付け係数群を２のｋ３乗倍してから整数化したｋ３乗倍重み付け係数群によって、前記入力に対し重み付けを行うｋ３乗重み付け乗算回路と、前記ｋ３乗重み付け乗算回路による乗算結果に対し、ｋ４ビットシフトによってビットシフト乗算処理を行うｋ４ビットシフト乗算回路と、前記ｋ２ビットシフト乗算回路の乗算結果と、前記ｋ４ビットシフト乗算回路の乗算結果のそれぞれに対し、補正係数群を用いて演算された補正処理値の加算処理を行う補正処理回路と、前記補正処理回路の演算結果に対し、四捨五入処理を行う四捨五入処理回路と、前記四捨五入処理回路の演算結果に対し、ｋビットシフト（ｋ＝ｋ１＋ｋ２＝ｋ３＋ｋ４とする）によってビットシフト除算処理を行うビットシフト除算回路とを備えるようにしたので、例えば重み付け係数群の値が大きいときに、重み付け乗算の数を小さくしてビットシフトの数を大きくすることにより、全体の回路規模を小さくすることができる。
【００３３】
本発明の行列演算装置によれば、前記行列演算装置において、前記第ｔの補正処理回路（ｔ＝１，２，…，ｎ−１とする）の演算結果の精度の許容範囲に基づき、最適な補正係数群を用いるようにしたので、最終的に必要な演算精度に合った補正係数群を用いて補正処理を行うことができる。
【００３４】
本発明の行列演算装置によれば、前記行列演算装置において、前記補正処理回路の演算結果の精度の許容範囲に基づき、最適な補正係数群を用いるようにしたので、最終的に必要な演算精度に合った補正処理群を用いて補正処理を行うことができる。
【００３５】
本発明の行列演算装置によれば、前記行列演算装置において、前記第１ないし第ｎの行列演算装置は、重み付け係数群の係数値に基づいて決められた数のビットシフト乗算回路と、補正処理回路をそれぞれ備えるようにしたので、重み付け係数群に対する演算結果の理想値と、補正係数およびビットシフト乗算による演算結果との差が、整数値もしくはそれに近い形の値でビットシフトのみで実現できる係数となるように、適切な数のビットシフト乗算回路および補正処理回路により補正係数の乗算およびビットシフト演算を行うことができる。
【００３６】
本発明の行列演算装置によれば、前記行列演算装置において、整数化された重み付け係数群の乗算係数のうち、最小の乗算係数と他の乗算係数との差が所定の値より大きく補正処理する演算結果が大きい場合、ビットシフト乗算回路の演算結果に対し、補正処理値の加算処理を行わないで、ビットシフト除算処理を行うようにしたので、補正処理値の加算処理を行った場合よりも全体の演算量を少なくすることができる。
【００３７】
本発明の行列演算装置によれば、前記行列演算装置において、補正処理回路の補正処理値に四捨五入処理を行わずビットシフト除算処理を行うようにしたので、前記重み付け係数群の対称性を保持するために四捨五入処理を行う場合よりも、全体の演算量を少なくすることができる。
【００３８】
本発明の行列演算装置によれば、前記行列演算装置において、行列内で大きな幅をもつ行列係数によって表される重み付け係数群を用いて演算を行い、演算されたデータを半導体演算装置により処理するようにしたので、従来の行列演算装置を用いた場合よりも行列演算装置の演算結果が大きくないため、前記演算結果を保持する半導体演算装置の一時保持メモリの容量を削減することができる。
【００３９】
本発明の行列演算装置によれば、前記行列演算装置において、前記重み付け係数群が、高周波成分を間引くために実現されるダウンデコードシステムに用いられる重み付け係数群であるようにしたので、ダウンサンプリングおよびアップサンプリングなどのシステムで行列演算の係数同士に大きな差があるために、重み付け乗算処理において特定の乗算値が非常に大きくなる場合でも、従来の行列演算装置よりも乗算回路等の回路規模を小さくすることができ、全体の回路規模を削減することができる。
【００４０】
本発明の行列演算装置は、前記行列演算装置において、前記重み付け係数群が、大きな幅を持つ行列式で表されているようにしたので、重み付け乗算回路における重み付け係数群の行列演算の係数同士に大きな差があり、重み付け乗算処理において特定の乗算値が非常に大きくなる場合でも、従来の行列演算装置よりも乗算回路等の回路規模を小さくすることができ、全体の回路規模を削減することができる。
【発明を実施するための最良の形態】
【００４１】
（実施の形態１）
図３は、本発明の実施の形態１による行列演算装置の構成のブロック図であり、図４は、本発明の実施の形態１による行列演算装置の構成図である。
図３、４において、１０１は入力であり、２０２はｋ２０１乗重み付け乗算回路であり、２０３は加算回路であり、２０４は四捨五入処理回路であり、２０５はｎビットシフト除算回路であり、２０６はｋ２０２ビットシフト乗算回路であり、２０７は補正処理回路である。また、２０２ｂは重み付け係数群２０２ａを２のｋ２０１乗倍し、四捨五入により整数化したｋ２０１乗倍重み付け係数群である。
【００４２】
図３、４において、入力１０１を８入力とし、重み付け係数群２０２ａ、及びｋ２０１重み付け係数群２０２ｂを８行１列の行列とする。図３に記載の係数に対して、ｋ２０１＝６、ｋ２０２＝４とし、ｎ＝ｋ２０１＋ｋ２０２＝１０とし、入力１０１=［１８０  ２１９  １２１  ６３  １９８  １０５  １９５  １０９］、重み付け係数群１０２ａ＝［０．３６６  ０．３１６  ０．４７６  ０．６８７  ０．４１  ０．５２４  ０．６３９  ０．２９］とした場合、ｋ２０１乗倍重み付け係数群２０２ｂ=［ｉｎｔ（２３．４２）  ｉｎｔ（２０．２５）  ｉｎｔ（３０．４８）  ｉｎｔ（４４）  ｉｎｔ（２６．２５）  ｉｎｔ（３３．５２）  ｉｎｔ（４０．９１）  ｉｎｔ（１８．５７）］＝［２３  ２０  ３０  ４４  ２６  ３４  ４１  １９］と算出（ここでｉｎｔ（ｘ）はｘの小数点第一位の値を四捨五入することによって整数化する関数としている）することによって、加算回路後の演算結果＝１８０×２３＋２１９×２０＋１２１×３０＋６３×４４＋１９８×２６＋１０５×３４＋１９５×４１＋１０９×１９＝３３７０６と演算することができる。この演算結果を４ビットシフト乗算によって１６倍することで、４ビットシフト乗算＝５３９２９６となる。
【００４３】
ここで補正処理回路２０７における補正処理値を検討すると、重み付け係数群２０２ａをそのまま２の１０乗倍したときの重み付け係数群＝［３７４．６９  ３２３．９７  ４８７．６６  ７０３．９３  ４２０．０３  ５３６．３７  ６５４．６２  ２９７．１］として理想値が演算できることと、ｋ２０２ビットシフト乗算回路２０６においてｋ２０１重み付け係数群２０２ｂ＝［２３  ２０  ３０  ４４  ２６  ３４  ４１  １９］を４ビットシフト乗算を行うことにより実現している重み付け係数群＝［３６８  ３２０  ４８０  ７０４  ４１６  ５４４  ６５６  ３０４］と算出されることにより、差分係数＝［６．６９  ３．９７  ７．６６  −０．０７  ４．０３  −７．６３  −１．３８  −６．９］と算出できる。この差分係数を補正係数として加算するが、補正差分係数として従来の方法による演算方法よりも高精度実現を行うためには、重み付け係数群２０２ａをそのまま２の１０乗倍したときの重み付け係数群＝［３７４．６９  ３２３．９７  ４８７．６６  ７０３．９３  ４２０．０３  ５３６．３７  ６５４．６２  ２９７．１］と、その整数化を行った係数群＝［３７５  ３２４  ４８８  ７０４  ４２０  ５３６  ６５５  ２９７］との差分係数=［−０．３１  −０．０３  −０．３４  −０．０７  ０．０３  ０．３７  −０．３８  ０．１］よりも差が小さくなる補正係数を加算する必要がある。
【００４４】
そのため、補正処理回路２０７において、差分係数＝［６．６９  ３．９７  ７．６６  −０．０７  ４．０３  −７．６３  −１．３８  −６．９］について補正係数＝［４＋２＋１／２  ４  ８−１／４  ０  ４  −８  −１  −８＋１］＝［６．５  ４  ７．７５  ０  ４  −８  −１  −７］としてビットシフト演算のみで実現できる補正係数を加算することで補正を行う。これによって補正処理回路２０７における補正処理値はそれぞれ、補正処理値＝［｛（１８０＜＜２）＋（１８０＜＜１）＋（１８０＞＞１）｝  （２１９＜＜２）  ｛（１２１＜＜３）−（１２１＞＞２）｝  ０  （１９８＜＜２）  −（１０５＜＜３）  −１９５  ｛−（１０９＜＜３）＋１０９｝］によって算出される。ここで、ｙ＜＜ｎは数値ｙを左にｎビットシフトすることを意味し、ｙ＞＞ｎは数値ｙを右にｎビットシフトすることを意味する。この結果を加算することで、［７２０＋３６０＋９０  ８７６  ９６８−３０  ０  ７９２  −８４０  −１９５  −８７２＋１０９］＝［１１７０  ８７６  ９３８  ０  ７９２  −８４０  −１９５  −７６３］の加算が行われ、５３９２９６＋１１７０＋８７６＋９３８＋７９２−８４０−１９５−７６３＝５４１２７４と算出することができる。従来の行列演算装置での乗算結果は、１８０×３７５＋２１９×３２４＋１２１×４８８＋６３×７０４＋１９８×４２０＋１０５×５３６＋１９５×６５５＋１０９×２９７＝５４１３９４となり、整数化せずに乗算した場合の期待値は、期待値＝１８０×３７４．６９＋２１９×３２３．９７＋１２１×４８７．６６＋６３×７０３．９３＋１９８×４２０．０３＋１０５×５３６．３７＋１９５×６５４．６２＋１０９×２９７．１＝５４１２６７．６７となる。ここで、この期待値と、従来の行列演算装置による乗算結果および本発明の行列演算装置による乗算結果を比較すると、本発明が従来に比べて同等以上の演算精度を確保することができる。また、ｋ２０１重み付け乗算回路２０２とｋ２０２ビットシフト乗算回路２０６を備えることにより、最初の乗算の乗算係数を小さくして乗算回路を小さくすることができるとともに、最大演算結果を考慮した場合の行列演算装置の各回路の演算ビット幅を小さくすることができるため大幅な回路削減を実現することができる。
なお、補正処理回路における補正係数は、補正処理回路の演算結果の精度の許容範囲に基づき、最適な補正係数群が選択されるようにする。
【００４５】
図１４は、本発明の実施の形態１による行列演算装置を有する半導体演算装置の一例を示すブロック図である。
図１４において、４０１は可変長復号器であり、４０２に逆量子化器であり、４０３は逆ＤＣＴ変換部であり、４０４は動き補償部であり、４０５は行列演算回路であり、４０６は一時保持メモリであり、４０７は加算器である。
【００４６】
外部からの符号化された動画像データが可変長復号器４０１に入力され、可変長復号器４０１で復号し、逆量子化器４０２で逆量子化を行い、逆ＤＣＴ変換部４０３で逆ＤＣＴ変換を行うことで差分画素データが得られる。
【００４７】
加算器４０７は、差分画像データと一時保持メモリ４０６から読み出された画像データとを加算し、再生動画像データを生成する。復号する画像が動き補償ブロックであった場合、動き補償部４０４において、動き補償に必要なブロックを一時保持メモリ４０６から読み出して画像復元を行う。復元された画像は、行列演算回路４０５で行列演算を行いデータ変換され、変換されたデータが一時保持メモリ４０６に入力される。また、一時保持メモリ４０６のデータが行列演算回路４０５に入力され、行列演算回路４０５でデータ変換され、変換されたデータが動き補償部４０４に入力され、動き補償処理が行われる。
【００４８】
なお、図５、６に示すように、図３で示した行列演算装置の加算回路２０３とｋ２０２ビットシフト乗算回路２０６の間に第１の補正処理回路２１０を備え、ｋ２０２ビットシフト乗算回路２０６の後に、第２の補正処理回路２２０を備えるようにしてもよい。補正処理回路において、理想値とビットシフト演算により得られる重み付け係数群との差分が大きいときは、ｋ２０２ビットシフト乗算回路２０６によるビットシフト演算を行う前に、第１の補正処理回路２１０により一度補正し、その値をビットシフト乗算して再度第２の補正処理回路２２０で補正するようにしたことにより、第２の補正処理回路２２０において、理想値とビットシフト演算により得られる重み付け係数群との差分が小さくなり、補正処理回路の規模を小さくすることができる。
【００４９】
また、図７、８に示すように、図３で示した行列演算装置の加算回路２０３と四捨五入回路２０４の間に、ｋ２０２ビットシフト乗算回路２０６、第１の補正処理回路２１０、ｋ２０３ビットシフト乗算回路２３０、第２の補正処理回路２２０を備えるようにしてもよい。ビットシフト乗算回路を２個備えるようにしたことにより、最大演算結果を考慮した場合の補正処理回路の演算ビット幅を小さくすることができるため、補正処理回路の規模を小さくすることができる。
【００５０】
また、ビットシフト演算回路と補正処理回路をそれぞれ２個以上、例えば、前記重み付け係数群に実施される２のｋ乗倍を、２のｋ１乗倍、２のｋ２乗倍、２のｋｎ乗倍とｎ（ｎは２以上の整数であり、ｎ＝ｋ１＋ｋ２＋…＋ｋｎとする）段階の乗算倍に分割し、ｓビットシフト乗算回路（ｓ＝ｋ２，ｋ３，…，ｋｎとする）、及び第ｔの補正処理回路（ｔ＝１，２，…，ｎ−１とする）をそれぞれｎ−１個備えるようにしてもよい。例えば、図９、１０に示すように、加算回路２０３と四捨五入処理回路２０４の間に、ｋ２０２ビットシフト乗算回路２０６、第１の補正処理回路２１０、ｋ２０３ビットシフト乗算回路２３０、第２の補正処理回路２２０、ｋｎビットシフト乗算回路２４０、及び第ｎ−１の補正処理回路２５０を備えるような構成をとることができる。これにより、最大演算結果を考慮した場合の行列演算装置の演算ビット幅を小さくすることができるため、ビットシフト乗算回路、及び補正処理回路の規模を小さくすることができる。
【００５１】
また、本実施の形態１では、入力が８入力とし、重み付け係数群を８行１列の行列とした場合について説明したが、例えば、図１１に示すように、入力が４入力とし、重み付け係数群を４行４列の行列とした場合に、行列演算装置６００は、例えば図３で示したような重み付け乗算回路、加算回路、ビットシフト乗算回路、補正処理回路、四捨五入処理回路、及びビットシフト除算回路を有する行列演算装置を４段備え、前記第１ないし第４の行列演算装置は、該各行列演算装置のすべてに同じ値として入力される入力行列値に対し、それぞれ重み付け係数群の第１ないし第４の列の係数値で、重み付けを行い、各行列演算装置で、重み付けの乗倍とビットシフト乗算のビットシフト値とビットシフト除算のビットシフト値は、上記係数値に基づいた可変の値をとるようにし、前記各行列演算装置の各出力値よりなる行列出力値を出力するようにしてもよい。ここで、行列演算装置６００が備える４段の行列演算装置のうち、第１段目の行列演算素子において、重み付け係数群の１列目の係数値を２のｋ１１倍乗してから整数化した重み付け係数群によって、１段目の行列演算素子の入力に対し重み付けを行い、重み付け乗算処理の乗算結果に対し、ｋ１２ビットシフトによってビットシフト乗算処理を行い、ビットシフト乗算処理の乗算結果に対し、補正係数群を用いて演算された補正処理値の加算処理を行い、補正処理値の加算処理の演算結果に対し、四捨五入処理を行い、四捨五入処理の演算結果に対し、ｋ１ビットシフト（ｋ１＝ｋ１１＋ｋ１２とする）によってビットシフト除算処理を行う。また、第２、３、４段目の各行列演算装置においても、それぞれ重み付け係数群の２、３、４列目の係数値を２のｋ２１、ｋ３１、ｋ４１倍乗してから整数化した重み付け係数群によって、第２、３、４段目の行列演算装置の入力に対し重み付けを行い、重み付け乗算処理の乗算結果に対し、ｋ２２、ｋ３２、ｋ４２ビットシフトによってビットシフト乗算処理を行い、ビットシフト乗算処理の乗算結果に対し、補正係数群を用いて演算された補正処理値の加算処理を行い、補正処理値の加算処理の演算結果に対し、四捨五入処理を行い、四捨五入処理の演算結果に対し、ｋ２、ｋ３、ｋ４ビットシフト（ｋ２＝ｋ２１＋ｋ２２、ｋ３＝ｋ３１＋ｋ３２、ｋ４＝ｋ４１＋ｋ４２とする）によってビットシフト除算処理を行う。このような構成をとることにより、４段の行列演算装置のうち、特定の行列演算装置だけ回路規模を大きくし他の行列演算装置は回路規模を小さくすることができ、これにより、全体の回路規模を小さくすることができる。
【００５２】
なお、上記複数の行列演算装置は４段に限らず、ｎ段備えるようにしてもよく、また、複数の行列演算装置において、それぞれ異なる数のビットシフト乗算回路、及び補正処理回路を備えるようにしてもよい。このとき、複数の行列演算装置において、重み付け係数群の値に基づいて決められた数のビットシフト乗算回路と補正処理回路を備えるようにすることにより、重み付け係数群に対する演算結果の理想値と、補正係数およびビットシフト乗算による演算結果との差が整数値もしくはそれに近い形の値（２倍、１倍、１／２倍などビットシフトのみで実現できる係数）となるように、重み付け係数群の値に基づき補正処理回路とビットシフト乗算回路の数を調整して補正係数の乗算およびビットシフト演算を行うことができる。
【００５３】
また、整数化された重み付け係数群の中で、最小乗算係数と他の乗算係数との差が所定の値より大きく補正処理する演算結果が大きい場合は、ビットシフト乗算回路の演算結果に対し、補正処理値の加算処理を行わないでビットシフト除算処理を行うようにするようにしてもよい。
【００５４】
また、前記重み付け係数群２０２ａが対称性構造でない場合、補正処理回路の補正処理値に四捨五入処理を行わないようにしてもよい。
また、重み付け係数群として、例えば、高周波成分を間引くために実現されるダウンサンプリングおよびアップサンプリングなどのダウンデコードシステムに用いられる重み付け係数群を用いることができる。また、重み付け係数群は行列内で大きな幅を持つ行列式で表されている。
【００５５】
このように本実施の形態１によれば、８入力に対して、重み付け係数群２０２ａによって重み付け演算を行う行列演算装置において、前記重み付け係数群２０２ａを２のｋ２０１乗倍してから整数化したｋ２０１乗倍重み付け係数群２０２ｂによって、入力に対し重み付けを行うｋ２０１乗重み付け乗算回路２０２と、前記ｋ２０１乗重み付け乗算回路２０２の乗算結果に対し、ｋ２０２ビットシフトによってビットシフト乗算処理を行うｋ２０２ビットシフト乗算回路２０６と、前記ｋ２０２ビットシフト乗算回路２０６の乗算結果に対し、補正係数群を用いて演算された補正処理値の加算処理を行う補正処理回路２０７と、前記補正処理回路２０７の演算結果に対し、四捨五入処理を行う四捨五入処理回路２０４と、前記四捨五入処理回路２０４の演算結果に対し、ｎビットシフト（ｎ＝ｋ２０１＋ｋ２０２とする）によってビットシフト除算処理を行うｎビットシフト除算回路２０５とで構成されるようにしたので、乗算回路等の回路規模を小さくすることができるため、全体の回路規模を小さくすることができ、また演算結果に対し補正処理を行うことにより演算精度を高くすることができるという効果がある。
【００５６】
（実施の形態２）
図１２は、本発明の実施の形態２による行列演算装置の構成のブロック図であり、図１３は、本発明の実施の形態２による行列演算装置の構成図である。
図１２、１３において、３０３はｋ３０３乗重み付け乗算回路であり、３０４はｋ３０４乗重み付け乗算回路であり、３０５，３０６は第１、第２の加算回路であり、３０７はｋ３０７ビットシフト乗算回路（ここでｋ３０３＋ｋ３０７＝ｋ３０４＋ｋ３０８が成り立つ）であり、３０８はｋ３０８ビットシフト乗算回路（ここでｋ３０３＋ｋ３０７＝ｋ３０４＋ｋ３０８が成り立つ）であり、３０９はｋ３０７ビットシフト乗算回路３０７の演算結果とｋ３０８ビットシフト乗算回路３０８の演算結果に補正処理値を加算する補正処理回路であり、３１０はｎビットシフト除算回路（ｎ＝ｋ３０３＋ｋ３０７＝ｋ３０４＋ｋ３０８とする）であり、３１１は四捨五入処理回路である。
【００５７】
また、３０２ｂは、重み付け係数群１０２ａの上位側（Ｃ００〜Ｃ３０）を２k303倍して整数化し、下位側（Ｃ４０〜Ｃ７０）を２k304倍して整数化した重み付け係数群であり、３０５ａは第１の加算回路３０５の演算結果であり、３０６ａは第２の加算回路３０６の演算結果であり、３０７ａはｋ３０７ビットシフト乗算回路の演算結果であり、３０８ａはｋ３０８ビットシフト乗算回路の演算結果であり、３０９ａは補正処理回路３０９の演算結果であり、３１０ａはｎビットシフト除算回路３１０の演算結果である。
【００５８】
本発明の実施の形態２では、複数の入力が演算途中まで独立しており、それぞれの重み付け係数群に個々の係数を乗算することで、重み付け係数群を実現する場合の例を示している。なお、本実施の形態２では、重み付け係数群が８×１行列の場合について説明しているが、ｍ×ｎ行列の重み付け係数群を用いて重み付け乗算処理を行うようにしてもよい。
【００５９】
８入力に対して８個の重み付け係数群があり、それぞれの演算は入力０から３までの入力に対する演算結果と入力４から７までの入力に対する演算結果とに途中まで分離できるような場合において、入力１０１＝［１８０  ２１９  １２１  ６３  １９８  １０５  １９５  １０９］、重み付け係数群３０２ａ＝［０．３６６  ０．３１６  ０．４７６  ０．６８７  ０．４１  ０．５２４  ０．６３９  ０．２９］とした場合、入力０から３までをｋ３０３乗重み付け乗算回路３０３においてｋ３０３乗倍してｋ３０７ビットシフト乗算回路３０７においてｋ３０７ビットシフト乗算し、入力４から７までをｋ３０４乗重み付け乗算回路３０４においてｋ３０４乗倍し、ｋ３０８ビットシフト乗算回路３０８においてｋ３０８ビットシフト乗算する。
【００６０】
ここで、ｋ３０３＝５、ｋ３０４＝６、ｋ３０７＝５、ｋ３０８＝４とした場合、ｋ３０３乗重み付け乗算回路３０３において入力０から３までの入力に乗算される係数は２の５乗倍し、ｋ３０４乗重み付け乗算回路３０４において入力４から７までの入力に乗算される係数は２の６乗倍した重み付け係数群３０２ｂは、［１１．７１  １０．１２  １５．２４  ２２  ２６．２５  ３３．５２  ４０．９１  １８．５８］を整数化することで、重み付け係数群３０２ｂ＝［１２  １０  １５  ２２  ２６  ３４  ４１  １９］と算出できる。この重み付け係数群３０２ｂの係数を用いて入力０から３までの演算結果３０３を第１の加算回路３０５で加算した演算結果３０５ａ＝１８０×１２＋２１９×１０＋１２１×１５＋６３×２２＝７５５１となり、入力４から７までの演算結果３０４を第２の加算回路３０６で加算した演算結果３０６ａ＝１９８×２６＋１０５×３４＋１９５×４１＋１０９×１９＝１８７８４となる。
【００６１】
次に入力０から３までの演算結果３０５ａを５ビットシフト乗算によって３２倍にし、入力４から７までの演算結果３０６ａを４ビットシフト乗算によって１６倍する。ｋ３０７ビットシフト乗算回路３０７の演算結果３０７ａ＝７５５１×３２＝２４１６３２と算出され、ｋ３０８ビットシフト乗算回路３０８の演算結果３０８ａ＝１８７８４×１６＝３００５４４と算出できるので、ビットシフト乗算＝２４１６３２＋３００５４４＝５４２１７６となる。
【００６２】
次に補正処理を行うための補正処理値を算出する際、補正係数は、実数演算した場合の結果との差を演算誤差および回路規模を考慮することによって決定する。ここで、重み付け係数群２０２ａをそのまま２の１０乗倍したときの重み付け係数群＝［３７４．６９  ３２３．９７  ４８７．６６  ７０３．９３  ４２０．０３  ５３６．３７  ６５４．６２  ２９７．１］として理想値が演算できることと、重み付け係数群３０２ｂ＝［１２  １０  １５  ２２  ２６  ３４  ４１  １９］に対し、入力０から３までを５ビットシフト演算し、入力４から８までを４ビットシフト演算を行うことにより実現している重み付け係数群＝［３８４  ３２０  ４８０  ７０４  ４１６  ５４４  ６５６  ３０４］と算出されることにより、差分係数である実数演算結果との差＝［−９．３１  ３．９７  ７．６６  −０．０７  ４．０３  −７．６３  −１．３８  −６．９］と算出できる。実数演算結果との差＝［−９．３１  ３．９７  ７．６６  −０．０７  ４．０３  −７．６３  −１．３８  −６．９］と計算することができることより、上記実施の形態１で説明した場合と同様の計算方法で、補正係数として［−９  ４  ８  ０  ４  −８  −１  −７］の補正を行う。この補正係数を用いて計算された補正値は、補正値＝１８０×（−９）＋２１９×４＋１２１×８＋６３×０＋１９８×４＋１０５×（−８）＋１９５×（−１）＋１０９×（−７）＝−７８２となる。この補正値をｋ３０７ビットシフト乗算回路３０７の演算結果３０７ａおよびｋ３０８ビットシフト乗算回路３０８の演算結果３０８ａに加算することで、補正処理回路３０９の演算結果３０９ａ＝５４２１７６＋（−７８２）＝５４１３９４となる。
【００６３】
ここで、従来の行列演算装置での乗算結果は、１８０×３７５＋２１９×３２４＋１２１×４８８＋６３×７０４＋１９８×４２０＋１０５×５３６＋１９５×６５５＋１０９×２９７＝５４１３９４であり、本発明の実施の形態２による行列演算装置は、従来と同じ精度の結果を得ることができる。また、補正値の精度を向上させることでさらに精度良い結果を得ることができる。
【００６４】
なお、補正処理回路における補正係数は、補正処理回路の演算結果の精度の許容範囲に基づき、最適な補正係数群が選択されるようにする。
また、整数化された重み付け係数群の中で、最小乗算係数と他の乗算係数との差が所定の値より大きく補正処理する演算結果が大きい場合は、ビットシフト乗算回路の演算結果に対し、補正処理値の加算処理を行わないでビットシフト除算処理を行うようにするようにしてもよい。
また、前記重み付け係数群３０２ａが対称性構造でない場合、補正処理回路の補正処理値に四捨五入処理を行わないようにしてもよい。
【００６５】
このように本実施の形態２によれば、８入力に対して、重み付け係数群３０２ａによって重み付け演算を行う行列演算装置において、前記重み付け係数群３０２ａを２のｋ３０３乗倍してから整数化したｋ３０３乗倍重み付け係数群によって、前記入力に対し重み付けを行うｋ３０３乗重み付け乗算回路３０３と、前記ｋ３０３乗重み付け乗算回路による乗算結果に対し、ｋ３０７ビットシフトによってビットシフト乗算処理を行うｋ３０７ビットシフト乗算回路３０７と、前記重み付け係数群３０２ａを２のｋ３０４乗倍してから整数化したｋ３０４乗倍重み付け係数群によって、前記入力に対し重み付けを行うｋ３０４乗重み付け乗算回路３０４と、前記ｋ３０４乗重み付け乗算回路による乗算結果に対し、ｋ３０８ビットシフトによってビットシフト乗算処理を行うｋ３０８ビットシフト乗算回路３０８と、前記ｋ３０７ビットシフト乗算回路３０７の乗算結果と前記ｋ３０８ビットシフト乗算回路３０８の乗算結果のそれぞれに対し、補正係数群を用いて演算された補正処理値の加算処理を行う補正処理回路３０９と、前記補正処理回路３０９の演算結果に対し、四捨五入処理を行う四捨五入処理回路３１１と、前記四捨五入処理回路３１１の演算結果に対し、ｎビットシフト（ｎ＝ｋ３０３＋ｋ３０７＝ｋ３０４＋ｋ３０８とする）によってビットシフト除算処理を行うｎビットシフト除算回路３１０とで構成されるようにしたので、重み付け乗算に最大演算結果を考慮した場合の演算ビット幅を小さくして、ビットシフトの数を大きくした方が回路規模を小さくすることができるという効果がある。
【産業上の利用可能性】
【００６６】
本発明の行列演算装置は、補正係数を加算することで従来必要であったもともとの重み付け係数に対する大幅な係数持ち上げを必要とせず、乗算器においても簡易なシフト演算の実現を可能とし、演算回路全体として、大幅な回路削減と、従来の演算回路規模に対する演算精度に対して大幅な精度向上を実現することができ、映像信号処理等の画像変換に用いられる演算装置等として有用である。
【図面の簡単な説明】
【００６７】
【図１】図１は、従来の行列演算装置の構成のブロック図である。
【図２】図２は、従来の行列演算装置の詳細構成を示す構成図である。
【図３】図３は、本発明の実施の形態１による行列演算装置の一例を示す構成のブロック図である。
【図４】図４は、本発明の実施の形態１による行列演算装置の一例の詳細構成を示す構成図である。
【図５】図５は、本発明の実施の形態１による行列演算装置の他の例を示す構成のブロック図である。
【図６】図６は、本発明の実施の形態１による行列演算装置の他の例の詳細構成を示す構成図である。
【図７】図７は、本発明の実施の形態１による行列演算装置の他の例を示す構成のブロック図である。
【図８】図８は、本発明の実施の形態１による行列演算装置の他の例の詳細構成を示す構成図である。
【図９】図９は、本発明の実施の形態１による行列演算装置の他の例を示す構成のブロック図である。
【図１０】図１０は、本発明の実施の形態１による行列演算装置の他の例の詳細構成を示す構成図である。
【図１１】図１１は、本発明の実施の形態１による行列演算装置の他の例の詳細構成を示す構成図である。
【図１２】図１２は、本発明の実施の形態２による行列演算装置の一例を示す構成のブロック図である。
【図１３】図１３は、本発明の実施の形態２による行列演算装置の一例の詳細構成を示す構成図である。
【図１４】図１４は、本発明の実施の形態１による行列演算装置を有する半導体演算装置の一例を示すブロック図である。
【符号の説明】
【００６８】
１０１    入力
１０２    重み付け乗算回路
１０２ａ  重み付け乗算回路１０２の重み付け係数群
１０２ｂ  ハードウェア化する際に１０２ａの重み付け係数群を２n倍して整数化した重み付け係数群
１０３    加算回路
１０４    四捨五入処理回路
１０５    ｎビットシフト除算回路
２０２    ｋ２０１乗重み付け乗算回路
２０２ａ  入力１０１に重み付けされる重み付け係数群
２０２ｂ  ２０２ａを２k201倍し、整数化した重み付け係数群
２０３    加算回路
２０４    四捨五入処理回路
２０５    ｎビットシフト除算回路
２０６    ｋ２０２ビットシフト乗算回路
２０７    補正処理回路
２１０    第１の補正処理回路
２２０    第２の補正処理回路
２３０    ｋ２０３ビットシフト乗算回路
２４０    ｋｎビットシフト乗算回路
２５０    第ｎ−１の補正処理回路
３０２ｂ  １０２ａの上位側（Ｃ００〜Ｃ３０）を２k303倍して整数化し、下位側（Ｃ４０〜Ｃ７０）を２k304倍して整数化した重み付け係数群
３０３    ｋ３０３乗重み付け乗算回路
３０４    ｋ３０４乗重み付け乗算回路
３０５    第１の加算回路
３０５ａ  第１の加算回路３０５の演算結果
３０６    第２の加算回路
３０６ａ  第２の加算回路３０６の演算結果
３０７    ｋ３０７ビットシフト乗算回路。ここでｋ３０３＋ｋ３０７＝ｋ３０４＋ｋ３０８が成り立つ
３０７ａ  ｋ３０７ビットシフト乗算回路３０７の演算結果
３０８    ｋ３０８ビットシフト乗算回路。ここでｋ３０３＋ｋ３０７＝ｋ３０４＋ｋ３０８が成り立つ
３０８ａ  ｋ３０８ビットシフト乗算回路３０８の演算結果
３０９    ｋ３０７ビットシフト乗算回路の演算結果とｋ３０８ビットシフト乗算回路の演算結果に補正処理値を加算する補正処理回路
３０９ａ  補正処理回路３０９の演算結果
３１０    ｎビットシフト除算回路。ここで、ｎ＝ｋ３０３＋ｋ３０７＝ｋ３０４＋ｋ３０８が成り立つ
３１０ａ  ｎビットシフト除算回路３１０の演算結果
３１１    四捨五入処理回路
４０１    可変長復号器
４０２    逆量子化器
４０３    逆ＤＣＴ変換部
４０４    動き補償部
４０５    行列演算回路
４０６    一時保持メモリ
４０７    加算器
６００    行列演算装置
【図１】
0004738408.tif 000002
【図２】
0004738408.tif 000003
【図３】
0004738408.tif 000004
【図４】
0004738408.tif 000005
【図５】
0004738408.tif 000006
【図６】
0004738408.tif 000007
【図７】
0004738408.tif 000008
【図８】
0004738408.tif 000009
【図９】
0004738408.tif 000010
【図１０】
0004738408.tif 000011
【図１１】
0004738408.tif 000012
【図１２】
0004738408.tif 000013
【図１３】
0004738408.tif 000014
【図１４】
0004738408.tif 000015