(57)【特許請求の範囲】
【請求項１】
第一の演算モジュールと第二の演算モジュールと第三の演算モジュールとメモリ制御モジュールとを備え、
前記第一の演算モジュールは、
演算処理を実行する第一の演算処理部と、
前記第一の演算処理部の第一の演算処理結果のデータを圧縮する第一の圧縮部と、
を備え、
前記第二の演算モジュールは、
演算処理を実行する第二の演算処理部と、
前記第二の演算処理部の第二の演算処理結果のデータを圧縮する第二の圧縮部と、
を備え、
前記メモリ制御モジュールは、
前記第一または第二の圧縮部により圧縮されたデータをメモリに書き込み、前記書き込まれたデータを前記メモリから読み出すアクセス部と、
前記メモリから読み出されたデータを伸張し、前記伸張されたデータを前記第一の演算モジュールと前記第二の演算モジュールと前記第三の演算モジュールへ出力する伸張部と、
を備え、
前記メモリ制御モジュールは、前記第一または第二の演算モジュールから要求されたアドレスを変換するアドレス変換部を備え、
前記アクセス部は、前記変換されたアドレスで前記メモリへアクセスし、
前記伸張部は、前記要求されたアドレスが第１のアドレス領域に含まれる場合に前記データを伸張し、前記要求されたアドレスが第２のアドレス領域に含まれる場合に前記データの伸張を行わず、
前記第１のアドレス領域の変換後のアドレス領域と、前記第２のアドレス領域の変換後のアドレス領域は、前記メモリ上の同じアドレス領域に含まれる、
半導体装置。
【請求項２】
第一の演算モジュールと第二の演算モジュールと第三の演算モジュールとメモリ制御モジュールとを備え、
前記第一の演算モジュールは、
演算処理を実行する第一の演算処理部と、
前記第一の演算処理部の第一の演算処理結果のデータを圧縮する第一の圧縮部と、
を備え、
前記第二の演算モジュールは、
演算処理を実行する第二の演算処理部と、
前記第二の演算処理部の第二の演算処理結果のデータを圧縮する第二の圧縮部と、
を備え、
前記メモリ制御モジュールは、
前記第一または第二の圧縮部により圧縮されたデータをメモリに書き込み、前記書き込まれたデータを前記メモリから読み出すアクセス部と、
前記メモリから読み出されたデータを伸張し、前記伸張されたデータを前記第一の演算モジュールと前記第二の演算モジュールと前記第三の演算モジュールへ出力する伸張部と、
を備え、
前記メモリ制御モジュールは、前記第一または第二の演算モジュールから要求されたアドレスを変換するアドレス変換部を備え、
前記アクセス部は、前記変換されたアドレスで前記メモリへアクセスし、
前記第一または第二の圧縮部は、データを所定の圧縮単位で圧縮し、前記圧縮単位のデータを前記メモリへ書き込むよう要求し、
前記アドレス変換部は、複数の前記圧縮単位のデータが前記メモリ上の同じアドレス領域に含まれるように前記アドレスを変換する、
半導体装置。
【請求項３】
前記第一または第二の演算処理結果のデータを圧縮処理単位のデータに変換する変換部を備え、
前記第一または第二の圧縮部は、前記圧縮処理単位のデータを圧縮する、
請求項１に記載の半導体装置。
【請求項４】
前記変換部は、前記第一または第二の演算処理結果のデータを所定の長さでアドレスが連続する構造のデータに変換する、
請求項３に記載の半導体装置。
【請求項５】
前記変換部は、前記第一または第二の演算処理結果のデータを前記圧縮処理単位に格納するバッファを備える、
請求項３に記載の半導体装置。
【請求項６】
前記第一または第二の演算処理部は、前記第一または第二の演算処理部の演算処理の処理単位順にアドレスが不連続のデータを出力し、
前記バッファは、前記出力されたデータのアドレスが連続するように前記データを格納する、
請求項５に記載の半導体装置。
【請求項７】
前記伸張部は、前記メモリから読み出されたデータが圧縮されている場合、前記データを伸張する、
請求項１又は２に記載の半導体装置。
【請求項８】
前記第一または第二の演算処理部は、前記メモリからデータを読み出す場合、メモリ読み出しコマンドとともにデータの圧縮または非圧縮を示すフラグを出力し、
前記伸張部は、前記メモリから読み出されたデータが圧縮されている場合、前記フラグに基づいて前記データを伸張する、
請求項７に記載の半導体装置。
【請求項９】
前記第一または第二の圧縮部は、所定の圧縮単位で圧縮したデータを前記メモリ制御モジュールへ出力し、前記メモリ制御モジュールは、前記圧縮単位の先頭アドレスを圧縮前と同じアドレスとして前記圧縮したデータを前記メモリへ書き込む、
請求項１に記載の半導体装置。
【請求項１０】
前記伸張部は、前記要求されたアドレスが第１のアドレス領域に含まれる場合に前記メモリ上のアドレス領域のうち第１のメモリ領域のデータを伸張し、前記要求されたアドレスが第２のアドレス領域に含まれる場合に前記メモリ上のアドレス領域のうち第２のメモリ領域のデータを伸張する、
請求項２に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、データ処理システム及び半導体装置の制御方法に関し、例えば、演算処理を行う半導体装置、データ処理システム及び半導体装置の制御方法に関する。
【背景技術】
【０００２】
近年、画像処理などの様々な演算処理を行う半導体装置が広く利用されている。このような半導体装置では、画像などのデータをメモリへ書き込み及びメモリから読み出しを行う際に、所定の標準規格による符号化及び復号化や、圧縮及び伸張等を行っている。
【０００３】
圧縮及び伸張に関連する技術として、例えば特許文献１が知られている。特許文献１では、バスを介して演算器と記憶装置が接続されたデータ処理システムにおいて、バスと演算器の間に圧縮回路及び伸張回路を備えている。圧縮回路は演算器の処理結果のデータを圧縮し、圧縮されたデータを記憶装置に格納する。伸張回路は記憶装置から読み出した圧縮データを伸張し、伸張されたデータを演算器で処理する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２７１２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
様々な演算処理を行う半導体装置では、演算処理に対応して最適な構成で圧縮及び伸張を行うことが望まれる。このため、一実施の形態では、より適切に圧縮及び伸張を行うことを一つの課題とする。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、演算モジュールとメモリ制御モジュールとを備えている。演算モジュールは、演算処理部と圧縮部を備え、メモリ制御モジュールは、アクセス部と伸張部を備えている。演算モジュールでは、演算処理部が演算処理を実行し、圧縮部が演算処理結果のデータを圧縮する。メモリ制御モジュールでは、アクセス部が圧縮されたデータをメモリに書き込み、書き込まれたデータを前記メモリから読み出し、伸張部がメモリから読み出されたデータを伸張し、伸張されたデータを前記演算モジュールへ出力する。
【発明の効果】
【０００８】
前記一実施の形態によれば、より適切に圧縮及び伸張を行うことが可能となる。
【図面の簡単な説明】
【０００９】
【図１】基本例１に係るデータ処理システムの構成例を示す構成図である。
【図２】基本例２に係るデータ処理システムの構成例を示す構成図である。
【図３】基本例３に係るデータ処理システムの構成例を示す構成図である。
【図４】実施の形態１に係るデータ処理システムの概要構成を示す構成図である。
【図５】実施の形態１に係るデータ処理システムの概要構成を示す構成図である。
【図６】実施の形態１に係るデータ処理システムの構成例を示す構成図である。
【図７】実施の形態１に係る演算器の出力データを説明するための図である。
【図８】実施の形態１に係る演算器の出力データを説明するための図である。
【図９】実施の形態１に係るバッファの構成例を示す構成図である。
【図１０】実施の形態１に係るバッファの入出力動作を説明するための図である。
【図１１】実施の形態１に係るバッファの入出力動作を説明するための図である。
【図１２】実施の形態１に係るバッファの入出力動作を説明するための図である。
【図１３】実施の形態１に係るバッファの入出力動作を説明するための図である。
【図１４】実施の形態１に係るバッファの入出力動作を説明するための図である。
【図１５】データ長とメモリアクセス効率との関係を示すグラフである。
【図１６】実施の形態２に係る圧縮データを説明するための図である。
【図１７】実施の形態３に係るメモリ制御モジュールの構成例を示す構成図である。
【図１８】実施の形態３に係るメモリアクセス動作を説明するため図である。
【図１９】実施の形態４に係る圧縮データを説明するため図である。
【図２０】実施の形態４に係るメモリアクセス動作を説明するため図である。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
（基本例１〜３）
まず、実施の形態の基本となる基本例１〜３について説明する。図１〜３は、それぞれ基本例１〜３に係るデータ処理システムの構成を示している。
【００１２】
図１〜３に示すように、基本例１〜３に係るデータ処理システム９１〜９３は、それぞれ半導体装置（ＬＳＩ）９０１〜９０３と半導体装置のデータを記憶するＳＤＲＡＭ２００を備えている。各半導体装置９０１〜９０３は、複数の演算モジュール１１０（例えば１１０＿Ａ〜１１０＿Ｃ）とメモリ制御モジュール１２０を備えている。演算モジュール１１０とメモリ制御モジュール１２０は、例えばデータバス１３０を介して接続されている。
【００１３】
複数の演算モジュール１１０は、演算処理を行う演算部であり、その機能を実現するためそれぞれ演算器１１１（１１１＿Ａ〜１１１＿Ｃ）を備えている。メモリ制御モジュール１２０は、演算モジュール１１０からの要求にしたがってＳＤＲＡＭ２００の書き込み／読み出しを制御する制御部であり、その機能を実現するためアクセス回路１２１を備えている。複数の演算器１１１は、データバス１３０及びメモリ制御モジュール１２０を介して、ＳＤＲＡＭ２００へデータを格納し、ＳＤＲＡＭ２００からデータを読み出したりする。なお、ＳＤＲＡＭ２００は、半導体装置のデータを記憶するメモリの一例であり、その他の記憶装置であってもよい。
【００１４】
半導体装置９０１〜９０３は、さらに、演算結果のデータを圧縮する圧縮回路１１、圧縮されたデータを伸張する伸張回路２１を備えている。半導体装置９０１〜９０３は、この圧縮回路１１と伸張回路２１の配置が異なる例である。
【００１５】
図１に示すように、基本例１の半導体装置９０１では、圧縮回路１１及び伸張回路２１が演算モジュール１１０とデータバス１３０との間に設けられており、圧縮回路１１及び伸張回路２１とデータバス１３０とが１対１の関係にある。図２に示すように、基本例２の半導体装置９０２では、圧縮回路１１及び伸張回路２１がメモリ制御モジュール１２０の内部に設けられており、圧縮回路１１及び伸張回路２１とメモリ制御モジュール１２０とが１対１の関係にある。
【００１６】
各演算器１１１からは、その演算処理の特性に応じた出力データが出力される。つまり演算器毎に、出力データの転送開始のアドレス位置や、転送長、データのフォーマット（連続するのか、離散するのか）が異なる。基本例１や基本例２のように、圧縮回路１１及び伸張回路２１が、データバス１３０やメモリ制御モジュール１２０と１対１の関係にある場合、圧縮回路１１はすべての演算器１１１の出力を圧縮する必要がある。そうすると、圧縮効率を高くすることができない。すなわち、演算器毎に出力の特性が異なるにもかかわらず同じ圧縮回路で圧縮するため、圧縮に適したデータ構造で圧縮することができず、圧縮効率が低くなるという問題がある。
【００１７】
また、図３に示すように、基本例３の半導体装置９０３では、圧縮回路１１及び伸張回路２１が各演算モジュール１１０の内部に設けられており、圧縮回路１１及び伸張回路２１と演算器１１１とが１対１の関係にある。基本例３のように、圧縮回路１１及び伸張回路２１が各演算器１１１と１対１にある場合でも、圧縮効率を高くすることができない。なぜならば、演算結果のデータを他の演算器で使用する場合、データを他の演算器で伸張できるようにするには、共通のデータ構造で圧縮する必要がある。そうすると、演算器毎の出力に合わせて圧縮することができないため、上記と同様の問題が発生する。
【００１８】
また、基本例３の構成では、圧縮を適用しない演算器１１１＿Ｃも、他の演算器１１１で圧縮されたデータを読み込むためには、伸張回路２１＿Ｃが必要になる。このため、全ての演算器に伸張回路が必要となるため、回路面積が大きくなるという問題がある。
【００１９】
さらにまた、記憶装置としてＳＤＲＡＭ等が考えられるが、演算器１１１で発生したデータの特性によっては、連続するデータ構造とならないため、ＳＤＲＡＭの転送効率を高くすることが困難であるという問題もある。
【００２０】
（実施の形態１）
以下、図面を参照して実施の形態１について説明する。
【００２１】
＜実施の形態１の概要＞
図４は、本実施の形態に係るデータ処理システムの概要構成を示している。図４に示すように、本実施の形態に係るデータ処理システム１は、半導体装置１００とＳＤＲＡＭ２００を備えている。本実施の形態に係る半導体装置１００は、基本例１〜３と同様に、複数の演算モジュール１１０（例えば１１０＿Ａ−１１０＿Ｃ）とメモリ制御モジュール１２０を備えている。演算モジュール１１０は、演算器１１１（１１１＿Ａ〜１１１＿Ｃ）を備えている。さらに、いくつかの演算モジュール１１０は、圧縮回路１１（例えば１１＿Ａ、１１＿Ｂ）を備えている。メモリ制御モジュール１２０は、アクセス回路１２１を備えており、さらに、伸張回路２１を備えている。なお、本実施の形態に係る半導体装置１００、図５のように、少なくとも図４の構成のうちの演算モジュール１１０とメモリ制御モジュール１２０を備えていてもよい。すなわち、少なくとも演算モジュール１１０は、演算処理を実行する演算器（演算処理部）１１１、演算処理結果のデータを圧縮する圧縮回路（圧縮部）１１を備え、メモリ制御モジュール１２０は、圧縮されたデータをＳＲＤＡＭ（メモリ）２００に書き込み、書き込まれたデータをＳＤＲＡＭ２００から読み出すアクセス回路（アクセス部）１２１、ＳＤＲＡＭ２００から読み出されたデータを伸張し、伸張されたデータを演算モジュール１１０へ出力する伸張回路（伸張部）２１を備えている。
【００２２】
このように、本実施の形態では、演算部（演算モジュール）とメモリ制御部（メモリ制御モジュール）から構成されるデータ処理システムにおいて、演算部は、データ出力時に圧縮を行う圧縮回路を有し、メモリ制御部は、メモリからリードされたデータを伸張する（データが圧縮データの場合に伸張する）伸張回路を有することを一つの特徴としている。演算部に圧縮回路を備えることで、演算器のデータに合わせて圧縮を行うことができる。メモリ制御部の伸張回路により、圧縮データを伸張してから各演算部に送信するため、全ての演算部がメモリに格納される圧縮データと非圧縮データの両方を利用することが可能となる。全ての演算部に伸張回路を備える必要がないため、回路面積の増大を抑えることができる。
【００２３】
＜実施の形態１の構成＞
図６は、本実施の形態に係るデータ処理システムのより具体的な構成例を示している。図６に示すように、本実施の形態に係る半導体装置１００は、図４の概要構成に加えてさらに、いくつかの演算モジュール１１０にバッファ１１２を備えている。
【００２４】
半導体装置１００は、各演算モジュール１１０側に、演算器１１１、バッファ１１２、圧縮回路１１を備えている。バッファ１１２は、演算処理結果のデータを圧縮処理単位のデータに変換する変換部であり、演算器１１１からの演算結果である出力データを圧縮に適した圧縮データ構造となるように保持し、保持した圧縮データ構造のデータを圧縮回路１１へ転送する。圧縮回路１１は、入力されたデータを圧縮し、データバス１３０を通じて、メモリ制御モジュール１２０へ転送する。メモリ制御モジュール１２０は、転送された圧縮データ２０１を外部のＳＤＲＡＭ２００へ保存する。メモリ制御モジュール１２０に伸張回路２１が配置され、ＳＤＲＡＭ２００からリードされたデータが、圧縮データ２０１のときは伸張してから、データバス１３０へ送付する。リード要求元の演算モジュール１１０から、データが圧縮されているか、圧縮されていなかを示す制御信号が、メモリ制御モジュール１２０へ送付される。
【００２５】
図６の例では、半導体装置１００は、演算モジュール１１０＿Ａ〜１１０＿Ｄを備えている。例えば、演算モジュール１１０＿Ａ及び１１０＿Ｂは、それぞれ演算器１１１＿Ａ及び１１１Ｂ、バッファ１１２＿Ａ及び１１２＿Ｂ、圧縮回路１１＿Ａ及び１１Ｂを備え、演算モジュール１１０＿Ｃ及び１１０＿Ｄは、それぞれ演算器１１１＿Ｃ及び１１１Ｄを備えている。
【００２６】
例えば、演算モジュール１１０＿Ａ（演算器１１１＿Ａ）は、画像データ（映像データ）をデコードするデコーダである。演算モジュール１１０＿Ａは、デコードを行った後、デコードしたデータを圧縮し、圧縮データ２０１としてＳＤＲＡＭ２００に格納する。
【００２７】
演算モジュール１１０＿Ｂ（演算器１１１＿Ｂ）は、演算モジュール１１０＿Ａがデコードした画像データに対し拡大／縮小などの画像処理（映像処理）を行う画像処理装置（ＧＰＵ）である。演算モジュール１１０＿Ｂは、ＳＤＲＡＭ２００からデコード後の圧縮データ２０１を伸張回路２１を介して取得し、画像処理を行った後、画像処理を行ったデータを圧縮し、圧縮データ２０１としてＳＤＲＡＭ２００に格納する。
【００２８】
演算モジュール１１０＿Ｃ（演算器１１１＿Ｃ）は、演算モジュール１１０＿Ｂが画像処理を行ったデータを用いて、メニューなどＧＵＩを追加し、表示画面データを生成する。演算モジュール１１０＿Ｃは、ＳＤＲＡＭ２００から画像処理後の圧縮データ２０１を伸張回路２１を介して取得し、表示画面データを生成した後、非圧縮データ２０２としてＳＤＲＡＭ２００に格納する。
【００２９】
演算モジュール１１０＿Ｄ（演算器１１１＿Ｄ）は、演算モジュール１１０＿Ａ〜１１０＿Ｃの動作制御や、演算結果を利用して、アプリケーション処理を実行するＣＰＵである。演算モジュール１１０＿Ｃは、ＳＤＲＡＭ２００から表示画面データなどの非圧縮データ２０２を取得し、アプリケーション処理を実行した後、非圧縮データ２０２としてＳＤＲＡＭ２００に格納する。
【００３０】
＜実施の形態１の動作＞
まず、本実施の形態に係る演算モジュール１１０（例えば演算モジュール１１０＿Ａ）の動作について説明する。
【００３１】
圧縮回路１１は、データが持つ冗長性を利用してデータを圧縮し、データ量を削減している。例えば、画像データの圧縮では、対象画素と参照画素との差分を用いて圧縮を行うことから、近傍の画素群は差分が小さく圧縮率が高くなる傾向にある。そのため、圧縮によりデータ量を効率よく削減するためには、一定の長さの連続するデータ（アドレスが連続するデータ、ブロックデータ）単位で圧縮を実行することが望ましい。
【００３２】
しかし、演算器１１１から出力されるデータは、必ずしもデータ圧縮に適した構造になっているとは限らない。つまり、演算器１１１の処理の都合やデータの特性によって、演算器１１１から出力されるデータの順番がＳＤＲＡＭ２００におけるバッファのアドレス順と一致しない場合がある。この場合、アドレスが不連続になる箇所でデータが細分化されてしまうため、効率よく圧縮することができない。そこで、本実施の形態では、演算器１１１の出力を直接圧縮するのではなく、一度バッファ１１２へ格納し、バッファ１１２において圧縮に適した構造（一定長でアドレスが連続する構造）に変換してから、圧縮回路１１で圧縮を行う。
【００３３】
以下の例では、演算器１１１（例えば演算器１１１＿Ａ）を、動画像圧縮規格であるＨ．２６５で採用されているデブロックフィルタを有するデコーダとし、このデコーダの出力を、水平６４画素×垂直４ラインの連続する２５６バイトデータの圧縮データ構造に変換する例を説明する。
【００３４】
動画像圧縮規格のＨ．２６５では、動画像は各画像（ピクチャ）単位に圧縮される。圧縮されたピクチャには、大別してＩ／Ｐ／Ｂの３種類が規定されている。
【００３５】
Ｉピクチャは、そのピクチャ自身のデータのみで圧縮されており、そのピクチャ単体で復号(デコード)できる。Ｐ／Ｂピクチャは、そのピクチャと、それ以前にデコードした結果（デコード画像）の差分を取って、そのピクチャを圧縮する。そのため、Ｐ／Ｂピクチャは、Ｉピクチャに比べて圧縮後のデータサイズを小さくすることができる。Ｐ／Ｂピクチャにおいて差分データを生成するとき、参照するデコード画像から任意の位置のデータを選択することができる。たとえば、圧縮後のデータ量が最小になるような位置のデータが選択される。
【００３６】
Ｈ．２６５規格では、動画像の圧縮効率や主観的な動画像品質の向上のため、デブロックフィルタが採用されており、演算器１１１は、このデブロックフィルタＤＦを備えている。デブロックフィルタ（デブロッキングフィルタ）ＤＦは、画像復号時に生じるブロック歪みを低減するためのフィルタである。
【００３７】
例えば、演算器１１１は、エントロピー復号化、逆量子化・逆変換によりデコードを行い、ループ内フィルタとしてデブロックフィルタＤＦがデコードの最後に使用される。このため、演算器１１１から出力されるＨ．２６５のデコード画像はデブロックフィルタ処理後のデータとなる。つまり、デブロックフィルタ処理の終わったデータから順に、ＳＤＡＲＭ上のバッファに格納可能となる。デブロックフィルタＤＦが処理する画像上の位置の順番はＨ．２６５規格で定められており、その結果、演算器１１１がデータを出力する順番は、画像内の処理する位置に依存して変化する。
【００３８】
Ｈ．２６５では、ＣＴＢ（Coding Tree Block）と呼ばれる正方画素ブロックの単位で、符号化処理及び復号化処理が行われる。ＣＴＢのサイズは選択可能であり、１６×１６、３２×３２、６４×６４画素の場合がある。以下ではＣＴＢのサイズが６４×６４画素の場合を例に説明する。
【００３９】
図７は、ＣＴＢのサイズが６４×６４画素のときの輝度データの出力順序を示しており、図８は図７の一部を拡大した拡大図である。図７に示すように、演算器１１１は、水平方向１６×１画素のデータを一単位として、処理する画像の位置に依存して、垂直方向に８／１２／１６画素の連続でデータを出力する。つまり、１６×８画素、１６×１２画素、１６×１６顔の出力ブロックＯＢの単位で、図７及び図８の矢印の順に出力される。
【００４０】
Ｈ．２６５では、ＣＴＢをさらに階層的にブロック分割して符号化処理及び復号化処理が行われる。例えば、ＣＴＢを複数のＣＢ（Coding Block）に分割し、さらにＣＢを複数のＰＢ（Prediction Block）やＴＢ（Transform Block）に分割する。ＣＢは、イントラ・インター予測、変換・量子化処理／逆量子化・逆変換処理、エントロピー符号化／復号化処理などの一連の符号化／復号化を行う単位である。ＰＢは、イントラ・インター予測処理を行う単位であり、ＴＢは、変換・量子化処理／逆量子化・逆変換処理を行う単位である。デブロックフィルタＤＦは、ＰＢやＴＢ単位でフィルタ処理を行う。出力ブロックＯＢは、デブロックフィルタＤＦの処理単位のブロックであり、例えばＰＢやＴＢである。
【００４１】
デブロックフィルタＤＦは、ブロックに隣接する境界の画素を参照してフィルタ処理を行うため、隣接する次のブロック（水平方向または垂直方向に隣接するブロック）のフィルタ処理が完了した後でなければ、データを出力することができない。このため、ＣＴＢのサイズ単位ではなく、ＣＴＢよりずれた単位でデータが出力される。
【００４２】
図７の例では、演算器１１１から出力されるデータは、画像の６４×６４画素単位の位置からは、水平方向には左に１６画素、垂直方向には上に４画素ずれている。すなわち、ＣＴＢの処理単位と同じではなく、水平方向には左端は４８画素、中間は６４画素、右端は８０画素で、垂直方向には上端は６０画素、中間は６４画素、下端は６８画素で、データが出力されることになる。
【００４３】
つまり、まず、４８×６０画素の出力ブロック群ＯＢＵ１が出力され、次に水平方向に連続して６４×６０画素の出力ブロック群ＯＢＵ２が出力された後、水平方向の最後に８０×６０画素の出力ブロック群ＯＢＵ３が出力される。次の水平方向のデータは、４８×６４画素の出力ブロック群、６４×６４画素の出力ブロック群・・・８０×６４画素の出力ブロック群ＯＢＵ６が順に出力される。出力ブロック群ＯＢＵ４〜ＯＢＵ６が垂直方向に続けて出力された後、垂直方向の最後に４８×６８画素の出力ブロック群ＯＢＵ７が出力され、次に水平方向に連続して６４×６８画素の出力ブロック群ＯＢＵ８が出力された後、水平方向の最後に８０×６８画素の出力ブロック群ＯＢＵ９が出力される。
【００４４】
出力ブロック群ＯＢＵ内の出力順の例を見ると、例えば図８に示すように、最初の出力ブロック群ＯＢＵ１では、（出力ブロック）ＯＢ１、その下のＯＢ１１、その右上のＯＢ２、その右のＯＢ３、その左下のＯＢ１２、その右のＯＢ１３・・・の順に出力され、次の出力ブロック群ＯＢＵ２では、（出力ブロック）ＯＢ４、その右のＯＢ５、その左下のＯＢ１４、その右のＯＢ１５・・・の順に出力される。
【００４５】
このように、演算器１１１からは、図７及び図８の矢印のような順番でデータが出力されるため、そのままの順番では、本来の画像の位置関係と相違してしまう。つまり、図８のように、本来の画像では、水平方向に（出力ブロック）ＯＢ１、ＯＢ２、ＯＢ３、ＯＢ４・・・と連続した画像であるが、出力されたデータは、矢印の順で（出力ブロック）ＯＢ１、ＯＢ１１、ＯＢ２、ＯＢ３・・・となり不連続なデータとなる。
【００４６】
本実施の形態では、図７及び図８のような出力データを、バッファ１１２によって、画像の６４×４単位の連続したデータ構造に変換する。図９は、このようなバッファ１１２を実現するための構成例を示している。なお、本実施の形態に係るバッファはこのようなデータ構造を有していればよいため、データの入出力についてはいずれの構成で行ってもよい。バッファ１１２内のバッファ制御部が、バッファ１１２のデータの入力順／出力順を制御してもよいし、演算器がバッファ１１２へのデータの入力順を制御し、圧縮回路がバッファ１１２からのデータの出力順を制御してもよい。
【００４７】
図９に示すように、バッファ１１２は、２バンクで構成されおり、バンクＢＫ０とバンクＢＫ１を備えている。バンクＢＫ０及びＢＫ１は、物理的に２つに分かれている必要はなく、１つの物理的なバッファの前半／後半それぞれをバンクＢＫ０及びＢＫ１として使用してもよい。バンクＢＫ０及びＢＫ１はそれぞれ同じサイズであり、バンクあたり最大で６４×６８画素のデータを格納できる。
【００４８】
バンクＢＫ０及びＢＫ１は、水平方向に１６画素の４つの領域を有し、垂直方向に３２行の領域と３６行の領域の２つの領域を有する。つまり、バンクＢＫ０は、１６×３２画素用の領域ＡＲ０１〜ＡＲ０４、１６×３６画素用の領域ＡＲ０５〜領域ＡＲ０８を有し、バンクＢＫ１は、１６×３２画素用の領域ＡＲ１１〜ＡＲ１４、１６×３６画素用の領域ＡＲ１５〜領域ＡＲ１８を有する。
【００４９】
水平方向の領域の１６画素は、各出力ブロックＯＢと同じサイズであり、バンクの水平方向の６４画素は出力ブロック群ＯＢＵ２、ＯＢＵ５、ＯＢＵ８（またはＣＴＢ）と同じサイズである。垂直方向の領域の３２行及び３６行は、出力ブロック群ＯＢＵ７、ＯＢＵ８、ＯＢＵ９の上側の２ブロック及び下側の３ブロックと同じサイズである。
【００５０】
以降、図１０〜図１４を用いて、演算器１１１が画像の左上からデータ出力を開始したときのバッファ１１２の格納動作について、詳細に説明する。
【００５１】
まず、最初のＣＴＢに対応する出力データ（ＯＢＵ１）は４８×６０画素分となる。図１０に示すように、バッファ１１２のバンクＢＫ０に矢印の順に出力ブロック群ＯＢＵ１のデータが格納される。出力ブロック群ＯＢＵ１の各ブロックは図７及び８で示した順に出力されるため、バッファ１１２は、出力ブロックＯＢ１、ＯＢ１１の順に領域ＡＲ０１に格納し、出力ブロックＯＢ２を領域ＡＲ０２に格納し、出力ブロックＯＢ３を領域ＡＲ０３に格納し、出力ブロックＯＢ１２を領域ＡＲ０２のＯＢ２の後に格納し、出力ブロックＯＢ１３を領域ＡＲ０３のＯＢ３の後に格納する。その後、領域ＡＲ０５〜ＡＲ０７の順にデータが格納され、出力ブロック群ＯＢＵ１がバンクＢＫ０に格納される。この段階では、バンクＢＫ０の領域ＡＲ０４及び領域ＡＲ０８が空いており、まだ圧縮単位６４×４のデータがそろっていないため、バッファからデータは出力されない。
【００５２】
次に、２番目のＣＴＢに対応する出力データ（ＯＢＵ２）は６４×６０画素分となる。図１１に示すように、バッファ１１２のバンクＢＫ０及びＢＫ１に矢印の順に出力ブロック群ＯＢＵ２のデータが格納される。このとき、バンクＢＫ０の領域ＡＲ０１〜ＡＲ０３、ＡＲ０５〜ＡＲ０７には出力ブロック群ＯＢＵ１のデータが格納されているため、バンクＢＫ０の空き領域（ＡＲ０４及びＡＲ０８）とバンクＢＫ１の領域を用いる。出力ブロック群ＯＢＵ２の各ブロックは図７及び８で示した順に出力されるため、バッファ１１２は、出力ブロックＯＢ４を領域ＡＲ０４に格納し、出力ブロックＯＢ５を領域ＡＲ１１に格納し、出力ブロックＯＢ１４を領域ＡＲ０４のＯＢ４の後に格納し、出力ブロックＯＢ１５を領域ＡＲ１１のＯＢ５の後に格納される。その後、領域ＡＲ１２〜ＡＲ１４、ＡＲ０８、ＡＲ１５〜ＡＲ１８の順にデータが格納される。
【００５３】
２番目のＣＴＢに対応した出力データ（ＯＢＵ２）がバッファ１１２に格納されると、図１２に示すように、バンクＢＫ０には多数の６４×４単位（圧縮単位）の連続データＯＬがそろう。これらの連続データＯＬがバッファ１１２から読み出され、圧縮回路１１に送付される。
【００５４】
圧縮回路１１は、バッファ１１２から受け取った連続データＯＬを圧縮する。圧縮回路１１の圧縮は、伸張回路２１で伸張可能であれば任意の方式でよい。例えば、ＤＰＣＭ（differential pulse code modulation）や、可逆圧縮、非可逆圧縮でもよい。圧縮回路１１は、データ圧縮後、データバス１３０を経由し、メモリ制御モジュール１２０に圧縮データを送付する。メモリ制御モジュール１２０は，受け取った圧縮データをＳＤＲＡＭ２００上のバッファへ格納する。
【００５５】
バンクＢＫ０から６４×４単位の連続データＯＬを読み出した後は，バンクＢＫ０は図１３のように空きとなるため、データを格納可能な状態となる。次に、図１４のように、バンクＢＫ１の空き領域（ＡＲ１４及びＡＲ１８）と空いたバンクＢＫ０を用いて、次のＣＴＢに対応した出力データを格納する。その後、バンクＢＫ０とバンクＢＫ１を交互に用いて、演算器１１１からのデータ格納と、６４×４単位の読み出しを繰り返す。
【００５６】
なお、この例では、説明を簡易にするため、ＣＴＢに対応する全てのデータが格納されてから、６４×４単位のデータが読み出されるとしたが、実際はこれに限定されない。つまり、６４×４単位のデータがそろった時点で、読み出すことができる。
【００５７】
次に、本実施の形態に係るメモリ制御モジュール１２０の動作を説明する。本実施の形態では、主にメモリのリード動作に特徴があるため、リード動作を説明する。
【００５８】
図６に示したように、メモリ制御モジュール１２０には、圧縮データを伸張する伸張回路２１が配置される。リード要求元の演算モジュール１１０は、メモリ制御モジュール１２０へ、リードのコマンドの他に、今から読むデータが圧縮されているか否かを示すフラグも送付する。メモリ制御モジュール１２０（アクセス回路１２１）は、リードコマンドにしたがってＳＤＲＡＭ２００からデータをリードし、コマンドのフラグを参照して、圧縮データではない場合、ＳＤＲＡＭ２００からのリードデータを、そのまま演算モジュール１１０に送付する。また、コマンドのフラグにより圧縮データである場合、メモリ制御モジュール１２０内の伸張回路２１にリードデータを送り、伸張後のデータを演算モジュール１１０に送付する。演算モジュール１１０（演算器）がフラグを指定することで、演算モジュール１１０（演算器）の制御に応じて圧縮データ２０１または非圧縮データ２０２をリードすることができる。
【００５９】
＜実施の形態１の効果＞
以上のように、本実施の形態では、演算モジュールに演算器の出力を受け付けるバッファを設置し、データをバッファリングした後に、圧縮処理を行う。これにより、圧縮に適したデータ構造に変換することができ、圧縮率を高くすることができる。
【００６０】
また、圧縮前のデータ長を長くすることで、圧縮後でも半導体装置とＳＤＲＡＭとの間で高い転送効率を実現可能な圧縮データ長とすることができる。図１５のグラフは、一回のデータ転送長に対するＳＤＲＡＭの転送効率（アクセス効率）を示している。
【００６１】
たとえば、圧縮前のデータ長が１２８バイトで、圧縮後が半分の６４バイトになったとする。データ長が１２８バイトのときは１００％近い転送効率だが、６４バイトのときは約５０％の効率となる。５０％の効率では、２回に１回は転送できない期間が発生するため、実質１２８バイト転送をしていることと等価となる。つまり、半導体装置とＳＤＲＡＭ間の転送量は実質的に削減されないことになる。そのため、データ圧縮後も効率のよい転送を実現できるデータ長にすることが望ましい。例えば２５６バイトを１２８バイトに圧縮するなど、圧縮後のデータ長がデータ転送長（転送レート）の１２８バイトに近いことが好ましい。
【００６２】
また、メモリ制御モジュールに伸張回路を備えることで、圧縮データを伸張してから各演算モジュールに送付できる。よって、演算モジュール側に伸張回路を持っていないモジュールでも、アクセスする対象が圧縮データであることを示すことで、ＳＤＲＡＭにある圧縮データと非圧縮データの両方を利用することができる。
【００６３】
（実施の形態２）
以下、図面を参照して実施の形態２について説明する。本実施の形態は、基本例１〜３または実施の形態１に適用可能であり、基本例１〜３または実施の形態１と圧縮データの格納方法のみが異なる。
【００６４】
図１６は、本実施の形態における圧縮データの格納イメージを示している。図１〜図６の圧縮回路１１において、図１６のようにデータを圧縮し、ＳＤＲＡＭに格納する。
【００６５】
例えば、圧縮回路１１は、演算器１１１から出力されたデータを２５６バイト単位に圧縮する。圧縮されたデータは、データ長が短くなるため、この圧縮データを連続してＳＤＲＡＭに格納すると、データのアドレスがずれることになる。この場合、アドレスがずれたデータに直接アクセスするためには、変更前と変更後のアドレスを関連付けて記憶しておく必要がある。
【００６６】
そこで、本実施の形態では、図１６に示すように、圧縮回路１１は、圧縮後のデータを、非圧縮（圧縮前）と同じ２５６バイトの先頭アドレスから格納する。つまり、圧縮データをＳＤＲＡＭ２００に格納するとき、圧縮単位である２５６バイト単位の先頭アドレスは変更せずに、圧縮データ分のみ格納する。
【００６７】
このように、本実施の形態では、圧縮データの格納されるアドレスが、非圧縮時のアドレスと２５６バイト単位では同一となる。これにより、圧縮前のアドレス、たとえばバッファの先頭アドレスなどを保持する必要がなくなる。また、圧縮後の任意のデータに順不同でアクセス(ランダムアクセス)することも可能になる。
【００６８】
（実施の形態３）
以下、図面を参照して実施の形態３について説明する。本実施の形態は、実施の形態１または２に適用可能であり、実施の形態１または２とメモリ制御モジュールの構成のみが異なる。
【００６９】
図１７は、本実施の形態に係るメモリ制御モジュール１２０の構成例を示しており、図１８は、本実施の形態におけるデータのリード動作例を示している。
【００７０】
図１７に示すように、実施の形態１または２のメモリ制御モジュール１２０において、さらにアドレス変換器１２２、ＭＭＵ（メモリ管理ユニット）１２３を備えている。アドレス変換器１２２は、演算モジュール１１０からコマンドで指定された論理アドレスを、（別の）変換後の論理アドレスに変換する。ＭＭＵ１２３は、変換後の論理アドレスをＳＤＲＡＭ上の物理アドレスに変換する。アクセス回路１２１は、物理アドレスによってＳＤＲＡＭ２００にアクセスする。また、アドレス変換器１２２（もしくは伸張回路２１）は、変換後の論理アドレスによってデータの圧縮の有無を判断する。例えば、伸張回路２１は、要求されたアドレスが第１のアドレス領域に含まれる場合にリードデータを伸張し、要求されたアドレスが第２のアドレス領域に含まれる場合にリードデータの伸張を行わない。例えば、第１のアドレス領域の変換後のアドレス領域と、第２のアドレス領域の変換後のアドレス領域を、ＳＤＲＡＭ上の同じアドレス領域とすることで、メモリを有効活用することができる。
【００７１】
本実施の形態では、圧縮データが格納された論理アドレス領域（領域Ａ）は、別の論理アドレス領域（領域Ｂ）に再マッピングされており、領域Ｂにきたアクセスは、アドレス変換器１２２で領域Ａの論理アドレスに変換される。例えば、アドレス変換器１２２は、変換前の論理アドレスと変換後の論理アドレス（及び圧縮の有無）をマッピングするマッピングテーブルを有する。すなわち、アドレス変換器１２２は、マッピングテーブルを参照することにより、アドレスの変換／逆変換を行い、また、圧縮データ／非圧縮データを判断する。
【００７２】
図１８のように、領域Ａへのアクセスのリードデータは、アドレス変換器により領域Ａからリードされる非圧縮データであると判断されるため、ＳＤＲＡＭ２００の領域Ａのリードデータをそのまま演算モジュール１１０へ出力する。領域Ｂへのアクセスのリードデータは、アドレス変換器により領域Ａからリードされる圧縮データであると判断されるため、ＳＤＲＡＭ２００の領域Ａのリードデータを伸張回路２１で伸張し、伸張したデータを領域Ｂのデータとして演算モジュール１１０へ出力する。
【００７３】
本実施の形態によれば、非圧縮データと圧縮データの切り替えを、リードするときのアドレス領域で指定できる。つまり、メモリからリードするときに，読み出すアドレス領域によって，圧縮データの伸張の有無を切り替えることができる。それにより演算モジュールから出力されるデータが圧縮されているか否かを示すフラグを削除できる。また、再マッピングする領域は複数持つことが可能で、領域毎に圧縮・非圧縮の切り替えの種別を変更することができる。
【００７４】
（実施の形態４）
以下、図面を参照して実施の形態４について説明する。本実施の形態は、実施の形態２または３に適用可能であり、実施の形態２または３と圧縮データのマッピングのみが異なる。
【００７５】
図１９は、本実施の形態における圧縮データの格納イメージを示しており、図２０は、本実施の形態におけるデータのリード動作例を示している。
【００７６】
図１９に示すように、実施の形態２における２５６バイトから１２８バイトへの固定長の圧縮手法を用いて、圧縮単位の２５６バイトの前半１２８バイトと後半１２８バイトで、異なるマッピング（領域）の圧縮データを格納する。実施の形態３では領域Ａと領域Ｂを定義したが、本実施の形態では、さらに３つ目の再マッピングした領域Ｃを定義する。例えば、領域Ｂを２５６バイトの前半１２８バイトにマッピングし、領域Ｃを２５６バイトの後半１２８バイトにマッピングする。つまり、領域Ｂへのアクセスは２５６バイト中前半１２８バイトの圧縮データを伸張し、領域Ｃへのアクセスは後半１２８バイトの圧縮データを伸張する。なお、この例では、圧縮単位の２５６バイトの前半と後半に２つのデータを格納しているが、これに限らず複数のデータを格納してもよい。
【００７７】
図２０のように、領域Ａへのアクセスのリードデータは、領域Ａからリードされる通過データ（非圧縮データのように伸張しないデータ）であると判断されるため、ＳＤＲＡＭ２００の領域Ａのリードデータをそのまま演算モジュール１１０へ出力する。領域Ｂへのアクセスのリードデータは、領域Ａにおける２５６バイトの前半１２８バイトからリードされる圧縮データであると判断されるため、ＳＤＲＡＭ２００の領域Ａにおける２５６バイトの前半１２８バイトのリードデータ（０〜１２５、２５６〜３８４、５１２〜６４０、７６８〜８９６のデータ）を伸張回路２１で伸張し、伸張したデータを領域Ｂのデータ（１０２４〜２０４８のデータ）として演算モジュール１１０へ出力する。領域Ｃへのアクセスのリードデータは、領域Ａにおける２５６バイトの後半１２８バイトからリードされる圧縮データであると判断されるため、ＳＤＲＡＭ２００の領域Ａにおける２５６バイトの後半１２８バイトのリードデータ（１２８〜２５６、３８４〜５１２、６４０〜７６８、８９６〜１０２４のデータ）を伸張回路２１で伸張し、伸張したデータを領域Ｃのデータ（２０４８〜３０７２のデータ）として演算モジュール１１０へ出力する。
【００７８】
本実施の形態によれば、複数の領域の圧縮データを、ＳＤＲＡＭの１つの領域に格納するため、伸張後のデータサイズでバッファサイズを２倍にすることができる。また、実施の形態２のようにランダムアクセスが可能であるとともに、実施の形態３のように演算モジュールから出力されるデータが圧縮されているか否かを示すフラグを削除することができる。
【００７９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００８０】
１      データ処理システム
１１    圧縮回路
２１    伸張回路
９１〜９３  データ処理システム
１００  半導体装置
１１０  演算モジュール
１１１  演算器
１１２  バッファ
１２０  メモリ制御モジュール
１２１  アクセス回路
１２２  アドレス変換器
１３０  データバス
２００  ＳＤＲＡＭ
２０１  圧縮データ
２０２  非圧縮データ
９０１〜９０３  半導体装置
ＤＦ    デブロックフィルタ
【図１】
0006679290.tif 000002
【図２】
0006679290.tif 000003
【図３】
0006679290.tif 000004
【図４】
0006679290.tif 000005
【図５】
0006679290.tif 000006
【図６】
0006679290.tif 000007
【図７】
0006679290.tif 000008
【図８】
0006679290.tif 000009
【図９】
0006679290.tif 000010
【図１０】
0006679290.tif 000011
【図１１】
0006679290.tif 000012
【図１２】
0006679290.tif 000013
【図１３】
0006679290.tif 000014
【図１４】
0006679290.tif 000015
【図１５】
0006679290.tif 000016
【図１６】
0006679290.tif 000017
【図１７】
0006679290.tif 000018
【図１８】
0006679290.tif 000019
【図１９】
0006679290.tif 000020
【図２０】
0006679290.tif 000021