(57)【特許請求の範囲】
【請求項１】
（ａ）圧縮データの圧縮前のデータアドレスと同じにしたメモリ上のデータアドレスに該圧縮データが格納されており、前記メモリに該圧縮データと共に格納された、該圧縮データの読み出しに用いる、該圧縮データのデータ長を示すデータサイズ情報である補助情報が格納されるキャッシュ；及び
（ｂ）前記メモリに格納された圧縮データの読み出し指令であって該圧縮データの圧縮前のデータアドレス及びデータ長を含む読み出し指令を受信した場合、該圧縮データの補助情報が前記キャッシュに格納されていれば、前記キャッシュから該圧縮データの補助情報を読み出し、該圧縮データの補助情報が前記キャッシュに格納されていなければ、前記メモリから該圧縮データの補助情報を読み出して前記キャッシュに格納し、該圧縮データの補助情報及び前記読み出し指令に含まれる前記データアドレスを用いて、前記メモリから該圧縮データを読み出す制御部；
を備え、
前記制御部は、前記メモリから圧縮データの補助情報を読み出して前記キャッシュに格納する場合、該圧縮データの補助情報を含む、所定の読み出し単位分の補助情報を読み出して前記キャッシュに格納し、
前記制御部は、前記メモリから前記所定の読み出し単位分の補助情報を読み出して前記キャッシュに格納する場合、アドレス領域が連続する、次の前記所定の読み出し単位分の補助情報も先行して読み出して前記キャッシュに格納する、
半導体装置。
【請求項２】
前記制御部は、前記キャッシュの容量に応じて、次の前記所定の読み出し単位分の補助情報を先行して読み出すか否かを切り替える、
請求項１に記載の半導体装置。
【請求項３】
前記制御部は、次の前記所定の読み出し単位分の補助情報が前記キャッシュに格納されている場合、次の前記所定の読み出し単位分の補助情報を先行して読み出さない、
請求項１に記載の半導体装置。
【請求項４】
前記制御部は、前記キャッシュに格納されている補助情報を示す管理情報を保持し、該管理情報に基づいて、読み出し指令を受信した圧縮データの補助情報が前記キャッシュに格納されているか否かを判断する、
請求項１に記載の半導体装置。
【請求項５】
圧縮データを前記メモリに格納する格納順番と、該圧縮データの補助情報を前記メモリに格納する格納順番と、が一致している、
請求項１に記載の半導体装置。
【請求項６】
（ａ）圧縮データ及び該圧縮データの読み出しに用いる補助情報が格納されたメモリ；及び
（ｂ）請求項１に記載の半導体装置；
を備えるデータ処理システム。
【請求項７】
前記制御部は、前記キャッシュの容量に応じて、次の前記所定の読み出し単位分の補助情報を先行して読み出すか否かを切り替える、
請求項６に記載のデータ処理システム。
【請求項８】
前記制御部は、次の前記所定の読み出し単位分の補助情報が前記キャッシュに格納されている場合、次の前記所定の読み出し単位分の補助情報を先行して読み出さない、
請求項６に記載のデータ処理システム。
【請求項９】
半導体装置の制御方法であって、
（ａ）圧縮データの圧縮前のデータアドレスと同じにしたメモリ上のデータアドレスに該圧縮データが格納されており、前記メモリに格納された該圧縮データの読み出し指令であって該圧縮データの圧縮前のデータアドレス及びデータ長を含む読み出し指令を受信した場合、前記メモリに該圧縮データと共に格納された、該圧縮データの読み出しに用いる、該圧縮データのデータ長を示すデータサイズ情報である補助情報が、キャッシュに格納されているか否かを判断するステップ；及び
（ｂ）圧縮データの補助情報が前記キャッシュに格納されていれば、前記キャッシュから該圧縮データの補助情報を読み出し、該圧縮データの補助情報が前記キャッシュに格納されていなければ、前記メモリから該圧縮データの補助情報を読み出して前記キャッシュに格納し、該圧縮データの補助情報及び前記読み出し指令に含まれる前記データアドレスを用いて、前記メモリから該圧縮データを読み出すステップ；
を備え、
前記メモリから圧縮データの補助情報を読み出して前記キャッシュに格納する場合、該圧縮データの補助情報を含む、所定の読み出し単位分の補助情報を読み出して前記キャッシュに格納し、
前記メモリから前記所定の読み出し単位分の補助情報を読み出して前記キャッシュに格納する場合、アドレス領域が連続する、次の前記所定の読み出し単位分の補助情報も先行して読み出して前記キャッシュに格納する、
半導体装置の制御方法。
【請求項１０】
前記キャッシュの容量に応じて、次の前記所定の読み出し単位分の補助情報を先行して読み出すか否かを切り替える、
請求項９に記載の半導体装置の制御方法。
【請求項１１】
次の前記所定の読み出し単位分の補助情報が前記キャッシュに格納されている場合、次の前記所定の読み出し単位分の補助情報を先行して読み出さない、
請求項９に記載の半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、データ処理システム及び半導体装置の制御方法に関し、例えば、圧縮データを外部のメモリに格納する半導体装置、データ処理システム及び半導体装置の制御方法に関する。
【背景技術】
【０００２】
近年、画像処理等の様々な演算処理を行う半導体装置が広く利用されている。このような半導体装置は、画像等のデータのメモリへの書き込み及びメモリからの読み出しを行う際に、所定の標準規格による符号化及び復号化や、圧縮及び伸張等を行っている。圧縮データの読み出しに関連する技術として、例えば、特許文献１，２が知られている。
【０００３】
特許文献１では、圧縮データをメモリに格納する際には、その圧縮データの読み出しに用いる補助情報として、その圧縮データが格納されているメモリのアドレス情報を、バス経由でメモリに格納する。メモリから圧縮データを読み出す際には、アドレス情報を用いて、圧縮データを読み出す。
【０００４】
特許文献２では、圧縮データをメモリに格納する際には、補助情報として、その圧縮データのデータサイズ情報を、バス経由でＤＭＡＣ（Direct Memory Access Controller）に格納する。メモリから圧縮データを読み出す際には、データサイズ情報を用いて、圧縮データを読み出す。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−２７１２７号公報
【特許文献２】特開２００６−０９９７７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１，２では、メモリから圧縮データを読み出す際には、バス経由で補助情報を読み出す必要がある。そのため、補助情報の読み出しに起因して、多くのバス／メモリ帯域が消費されてしまうという問題があった。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、半導体装置は、メモリに格納された補助情報を格納するキャッシュを備える。半導体装置は、メモリに格納された圧縮データの読み出し指令を受信した場合、その圧縮データの補助情報がキャッシュに格納されていれば、その補助情報をキャッシュから読み出し、その補助情報を用いて、メモリから圧縮データを読み出す。
【発明の効果】
【０００９】
前記一実施の形態によれば、補助情報の読み出しに起因するバス／メモリ帯域の消費を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】比較例に係るデータ処理システムの構成を示す構成図である。
【図２】比較例に係る半導体装置の動作フローを説明するフローチャートである。
【図３】実施の形態１に係るデータ処理システムの構成を示す構成図である。
【図４】実施の形態１に係る半導体装置の動作フローを説明するフローチャートである。
【図５】実施の形態２，３に係るデータ処理システムの構成を示す構成図である。
【図６】実施の形態２，３に係る圧縮データを説明するための図である。
【図７】実施の形態２に係る半導体装置の動作フローを説明するフローチャートである。
【図８】データ長とメモリアクセス効率との関係を示すグラフである。
【発明を実施するための形態】
【００１１】
以下に図面を参照しながら、実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラム等によって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１２】
（１）実施の形態１
＜比較例の構成＞
本実施の形態１の理解を容易とするために、最初に、本発明者が検討した比較例について説明する。そこで、まず、比較例に係るデータ処理システム９の構成について説明する。図１は、比較例に係るデータ処理システム９の構成を示している。図１に示すように、比較例に係るデータ処理システム９は、ＬＳＩ（Large Scale Integration）等である半導体装置１００と、半導体装置１００の外部に設けられたメモリ２０と、を備えている。
【００１３】
メモリ２０は、圧縮データを格納する。また、メモリ２０は、その圧縮データの読み出しに用いる補助情報も格納する。補助情報は、例えば、圧縮データのデータ長を示すデータサイズ情報や、圧縮データが格納されているメモリ２０上のアドレスを示すアドレス情報等である。
【００１４】
半導体装置１００は、制御部１１、伸張部１２、及びデータバス１３を備えている。制御部１１は、メモリ２０に格納されている圧縮データ及び補助情報をデータバス１３経由で読み出す。伸張部１２は、制御部１１がメモリ４０から読み出した圧縮データを伸張する。
【００１５】
＜比較例の動作＞
次に、比較例に係る半導体装置１００の動作について説明する。図２は、比較例に係る半導体装置１００の動作フローを示している。
【００１６】
図２に示すように、制御部１１は、メモリ２０に格納された圧縮データの読み出し指令を受信した場合（ステップＳ１１）、その圧縮データの補助情報を、メモリ２０からデータバス１３経由で読み出す（ステップＳ１２）。
【００１７】
続いて、制御部１１は、補助情報を用いて、メモリ２０からデータバス１３経由で圧縮データを読み出す（ステップＳ１３）。
その後、伸張部１２は、制御部１１がメモリ２０から読み出した圧縮データを伸張する（ステップＳ１４）。
【００１８】
上述のように、比較例に係る半導体装置１００は、メモリ２０から圧縮データを読み出す際には、メモリ２０からデータバス１３経由で補助情報を読み出す必要がある。つまり、比較例に係る半導体装置１００は、メモリ２０からの圧縮データの読み出し毎に、メモリ２０からのデータバス１３経由での補助情報の読み出しが発生してしまう。そのため、圧縮データ以外の補助情報の読み出しに起因して多くのバス／メモリ帯域が消費されてしまうという問題があった。
本実施の形態１によれば、上述のような課題を解決することができる。
【００１９】
＜実施の形態１の構成＞
次に、本実施の形態１に係るデータ処理システム１の構成について説明する。図３は、本実施の形態１に係るデータ処理システム１の構成を示している。図３に示すように、本実施の形態１に係るデータ処理システム１は、図１に示される比較例に係るデータ処理システム９と比較して、半導体装置１００を、半導体装置１０に置き換えた点が異なる。
【００２０】
半導体装置１０は、図１に示される比較例に係る半導体装置１００と比較して、キャッシュ１４が追加された点が異なる。キャッシュ１４は、メモリ２０に圧縮データと共に格納された補助情報を格納するものである。
【００２１】
＜実施の形態１の動作＞
次に、本実施の形態１に係る半導体装置１０の動作について説明する。図４は、本実施の形態１に係る半導体装置１０の動作フローを示している。
【００２２】
図４に示すように、制御部１１は、メモリ２０に格納された圧縮データの読み出し指令を受信した場合（ステップＳ２１）、その圧縮データの補助情報がキャッシュ１４に格納されているか否かを判断する（ステップＳ２２）。
【００２３】
ステップＳ２２において、補助情報がキャッシュ１４に格納されている場合（ステップＳ２２のＹｅｓ）、制御部１１は、キャッシュ１４から補助情報を読み出す（ステップＳ２３）。
【００２４】
一方、補助情報がキャッシュ１４に格納されていない場合（ステップＳ２２のＮｏ）、制御部１１は、メモリ２０からデータバス１３経由で補助情報を読み出し、読み出した補助情報をキャッシュ１４に格納する（ステップＳ２４）。
【００２５】
続いて、制御部１１は、補助情報を用いて、メモリ２０からデータバス１３経由で圧縮データを読み出す（ステップＳ２５）。
その後、伸張部１２は、制御部１１がメモリ２０から読み出した圧縮データを伸張する（ステップＳ２６）。
【００２６】
＜実施の形態１の効果＞
本実施の形態１によれば、圧縮データの読み出し指令を受信した場合、その圧縮データの補助情報がキャッシュ１４に格納されていれば、その補助情報をキャッシュ１４から読み出し、その補助情報を用いて、メモリ２０から圧縮データを読み出す。
【００２７】
したがって、メモリ２０からの圧縮データの読み出し毎に、メモリ２０からのデータバス１３経由での補助情報の読み出しが発生することが回避されるため、補助情報の読み出しに起因してバス／メモリ帯域が消費されてしまうことが抑制される。
【００２８】
（２）実施の形態２
＜実施の形態２の構成＞
本実施の形態２は、実施の形態１の構成をより具体化した一実施の形態に相当するものである。
【００２９】
＜実施の形態２に係るデータ処理システム２の構成＞
まず、本実施の形態２に係るデータ処理システム２の構成について説明する。図５は、本実施の形態２に係るデータ処理システム２の構成を示している。図５に示すように、本実施の形態に係るデータ処理システム２は、ＬＳＩ等である半導体装置３０と、半導体装置３０の外部に設けられたＤＤＲ（Double Data Rate）メモリ４０と、を備えている。半導体装置３０は、図３に示される半導体装置１０に対応し、ＤＤＲメモリ４０は、図３に示されるメモリ２０に対応する。
【００３０】
半導体装置３０は、半導体装置３０内の後述の演算部３１から出力されたデータを圧縮し、圧縮後の圧縮データを、ＤＤＲメモリ４０に格納する。その際、半導体装置３０は、圧縮データの読み出しに用いる補助情報も、ＤＤＲメモリ４０に格納する。本実施の形態２では、上記の補助情報が、圧縮データのデータ長を示すデータサイズ情報であるものとする。
【００３１】
ここで、本実施の形態２が前提としている圧縮データの格納方法について説明する。図６は、本実施の形態２における圧縮データの格納イメージを示している。本実施の形態２では、半導体装置３０は、図６に示すように、データを圧縮し、圧縮後の圧縮データをＤＤＲメモリ４０に格納する。
【００３２】
例えば、半導体装置３０は、演算部３１から出力されたデータを、２５６バイト単位に圧縮する。圧縮後の圧縮データは、データ長が短くなるため、圧縮データを連続してＤＤＲメモリ４０に格納すると、圧縮データのアドレスがずれることになる。この場合、アドレスがずれた圧縮データに直接アクセスするためには、変更前と変更後のアドレスを関連付けて記憶しておく必要がある。
【００３３】
そこで、半導体装置３０は、図６に示すように、圧縮データを、非圧縮（圧縮前）と同じ２５６バイトの先頭アドレスから格納する。つまり、半導体装置３０は、圧縮データをＤＤＲメモリ４０に格納するとき、圧縮単位である２５６バイト単位の先頭アドレスは変更せずに、圧縮データ分のみ格納する。
【００３４】
このように、本実施の形態２では、圧縮データの格納されるアドレスが、非圧縮時のアドレスと２５６バイト単位では同一となる。これにより、圧縮前のアドレス、例えば、バッファの先頭アドレス等を保持する必要がなくなる。また、任意の圧縮データに順不同でアクセス（ランダムアクセス）することも可能になる。
【００３５】
また、半導体装置３０は、ＤＤＲメモリ４０から所望の圧縮データを読み出す際には、２５６バイト単位の先頭アドレスから読み出しを行う。ただし、圧縮データは、データ長が短くなっているため、２５６バイト分全て読み出す必要はなく、圧縮後のデータ長分のみを読み出せばよい。
【００３６】
そこで、本実施の形態２では、半導体装置３０は、所望の圧縮データが格納されているＤＤＲメモリ４０上のアドレス（圧縮前と同じアドレス）と、所望の圧縮データのデータ長を示すデータサイズ情報と、を用いて、ＤＤＲメモリ４０からの所望の圧縮データの読み出しを行う。
【００３７】
そのため、半導体装置３０は、圧縮データをＤＤＲメモリ４０に格納する際に、圧縮データのデータサイズ情報を、補助情報としてＤＤＲメモリ４０に格納する。この際、圧縮データをＤＤＲメモリ４０に格納する格納順番と、その圧縮データのデータサイズ情報をＤＤＲメモリ４０に格納する格納順番と、は一致するものとする。したがって、所望の圧縮データが格納されているＤＤＲメモリ４０上のアドレスを基に、所望の圧縮データのデータサイズ情報（以下、所望のデータサイズ情報と適宜称する）が格納されているＤＤＲメモリ４０上のアドレスを導出可能であるため、所望のデータサイズ情報をＤＤＲメモリ４０から読み出すことが可能となる。
【００３８】
＜実施の形態２に係る半導体装置３０の構成＞
次に、本実施の形態２に係る半導体装置３０の構成について説明する。図５に示すように、半導体装置３０は、演算部３１、演算データリード制御部３２、データサイズ情報キャッシュ部３３、ＤＤＲメモリ制御部３４、圧縮データ伸張部３５、及びデータバス３６を備えている。演算データリード制御部３２、データサイズ情報キャッシュ部３３（ただし、後述のデータサイズ情報バッファ３３５を除く）、及びＤＤＲメモリ制御部３４を組み合わせた構成要素は、図３に示される制御部１１に対応し、圧縮データ伸張部３５は、図３に示される伸張部１２に対応する。
【００３９】
演算部３１は、例えば、画像処理等の演算処理を行う。演算部３１から出力されたデータは、図６のように、圧縮され、ＤＤＲメモリ４０に格納される。なお、本実施の形態２は、ＤＤＲメモリ４０に格納された圧縮データの読み出しに係る構成を主な特徴としているため、データの圧縮に係る構成要素は、図５からは省略されている。
【００４０】
また、演算部３１は、ＤＤＲメモリ４０から所望の圧縮データを読み出す際は、所望の圧縮データの読み出しを行うためのリードリクエスト（読み出し指令）を演算データリード制御部３２に送る。このリードリクエストには、所望の圧縮データの圧縮前のデータのアドレス（所望の圧縮データが格納されているＤＤＲメモリ４０上のアドレスと同じアドレス）と、圧縮前のデータのデータ長と、を含める。例えば、演算部３１が画像処理を行う場合、画像上の所望のデータの位置と、ＤＤＲメモリ４０上の所望のデータのアドレスと、は対応関係にあるため、演算部３１は、画像上の所望のデータの位置に対応するＤＤＲメモリ４０上のアドレスをリードリクエストに含めれば良い。なお、演算部３１が圧縮前のデータのアドレス及びデータ長をリクエストするのは、そのデータが圧縮されて格納されていることを、演算部３１が知らないためである。
【００４１】
演算データリード制御部３２は、ＤＤＲメモリ４０に格納された圧縮データの読み出しに係る制御を行う。例えば、演算データリード制御部３２は、演算部３１からリードリクエストを受信すると、そのリードリクエストをデータサイズ情報キャッシュ部３３に転送する。
【００４２】
データサイズ情報キャッシュ部３３は、演算部３１から演算データリード制御部３２経由でリードリクエストを受信すると、受信したリードリクエストでリクエストされた所望の圧縮データのデータサイズ情報が、後述のデータサイズ情報バッファ３３５に格納されているか否かを判断する。データサイズ情報バッファ３３５に格納されていない場合、データサイズ情報キャッシュ部３３は、ＤＤＲメモリ４０に格納されている所望のデータサイズ情報を、データバス３６経由で読み出し、データサイズ情報バッファ３３５に格納する。そして、データサイズ情報キャッシュ部３３は、所望のデータサイズ情報を基に、演算部３１から受信したリードリクエストに含まれるデータ長を、圧縮後の圧縮データのデータ長に置き換え、そのリードリクエストを、データバス３６経由でＤＤＲメモリ制御部３４に送る。
【００４３】
ＤＤＲメモリ制御部３４は、ＤＤＲメモリ４０の制御を行う。例えば、ＤＤＲメモリ制御部３４は、データサイズ情報キャッシュ部３３からリードリクエストを受信すると、そのリードリクエストを基に、ＤＤＲメモリ４０から圧縮データを読み出す。具体的には、ＤＤＲメモリ制御部３４は、リードリクエストに含まれるアドレスから、リードリクエストに含まれるデータ長分の圧縮データを読み出す。
【００４４】
圧縮データ伸張部３５は、ＤＤＲメモリ制御部３４が読み出した圧縮データを、データバス３６経由で受信し、伸張する。圧縮データ伸張部３５で伸張されたデータは、演算データリード制御部３２経由で演算部３１に送られる。
【００４５】
＜実施の形態２に係るデータサイズ情報キャッシュ部３３の構成＞
次に、本実施の形態２に係るデータサイズ情報キャッシュ部３３の構成について説明する。図５に示すように、データサイズ情報キャッシュ部３３は、演算データリクエスト解析部３３１、リードリクエスト生成部３３２、ＴＡＧ（タグ）バッファ３３３、ＴＡＧバッファ制御部３３４、データサイズ情報バッファ３３５、及びデータサイズ情報バッファ制御部３３６を備えている。データサイズ情報バッファ３３５は、図３に示されるキャッシュ１４に対応する。データサイズ情報キャッシュ部３３内の他の構成要素は、図３に示される制御部１１を構成する構成要素に対応する。
【００４６】
データサイズ情報バッファ３３５は、ＤＤＲメモリ４０に格納されているデータサイズ情報を格納するバッファである。
ＴＡＧバッファ３３３は、データサイズ情報バッファ３３５に格納されているデータサイズ情報を示す管理情報を格納するバッファである。本実施の形態２では、管理情報は、ＤＤＲメモリ４０上のどのアドレスのデータサイズ情報がデータサイズ情報バッファ３３５に格納されているかを示す情報であるとする。
【００４７】
演算データリクエスト解析部３３１は、演算部３１から演算データリード制御部３２経由で、所望の圧縮データの読み出しを行うためのリードリクエストを受信すると、そのリードリクエストを解析し、解析結果に基づく処理を行う。例えば、演算データリクエスト解析部３３１は、リードリクエストに含まれるアドレスを基に、所望の圧縮データのデータサイズ情報が格納されているＤＤＲメモリ４０上のアドレスを導出し、導出したアドレスをＴＡＧバッファ制御部３３４に渡す。
【００４８】
ＴＡＧバッファ制御部３３４は、ＴＡＧバッファ３３３の制御を行う。例えば、ＴＡＧバッファ制御部３３４は、演算データリクエスト解析部３３１からアドレスが渡されると、そのアドレスに格納されている所望のデータサイズ情報が、データサイズ情報バッファ３３５に格納されているか否かを、ＴＡＧバッファ３３３に格納されている管理情報を基に、判断する。所望のデータサイズ情報がデータサイズ情報バッファ３３５に格納されていない場合、ＴＡＧバッファ制御部３３４は、ＤＤＲメモリ４０に格納されている所望のデータサイズ情報の読み出しを行うためのリードリクエストを生成するよう、リードリクエスト生成部３３２に指示する。また、ＴＡＧバッファ制御部３３４は、リードリクエストの生成を指示した所望のデータサイズ情報の管理情報をＴＡＧバッファ３３３に格納する。
【００４９】
データサイズ情報バッファ制御部３３６は、データサイズ情報バッファ３３５の制御を行う。例えば、データサイズ情報バッファ制御部３３６は、ＤＤＲメモリ制御部３４がＤＤＲメモリ４０から所望のデータサイズ情報を読み出すと、所望のデータサイズ情報を、データバス３６経由で受信し、データサイズ情報バッファ３３５に格納する。データサイズ情報バッファ３３５に空き容量が無い場合は、データサイズ情報バッファ制御部３３６は、例えば、最も古いデータサイズ情報を破棄し、最も古いデータサイズ情報が格納されていた領域に新しいデータサイズ情報を格納する。
【００５０】
演算データリクエスト解析部３３１は、所望のデータサイズ情報がデータサイズ情報バッファ３３５又はＤＤＲメモリ４０から読み出された場合、所望のデータサイズ情報を基に、所望の圧縮データのデータ長を判断する。そして、演算データリクエスト解析部３３１は、演算部３１から受信したリードリクエストに含まれるデータ長を、所望の圧縮データのデータ長に置き換えるよう、リードリクエスト生成部３３２に指示する。
【００５１】
リードリクエスト生成部３３２は、演算データリクエスト解析部３３１やＴＡＧバッファ制御部３３４から指示されたリードリクエストを生成し、生成したリードリクエストをデータバス３６経由でＤＤＲメモリ制御部３４に送る。
【００５２】
＜実施の形態２の動作＞
次に、本実施の形態２に係る半導体装置３０の動作について説明する。図７は、本実施の形態２に係る半導体装置３０の動作フローを示している。
【００５３】
図７に示すように、演算データリクエスト解析部３３１は、演算部３１から演算データリード制御部３２経由で、所望の圧縮データの読み出しを行うためのリードリクエストを受信する（ステップＳ３１）。このリードリクエストには、所望の圧縮データの圧縮前のデータのアドレス（所望の圧縮データが格納されているＤＤＲメモリ４０上のアドレスと同じアドレス）と、圧縮前のデータのデータ長と、が含まれる。演算データリクエスト解析部３３１は、受信したリードリクエストに含まれるアドレスを基に、所望の圧縮データのデータサイズ情報が格納されているＤＤＲメモリ４０上のアドレスを導出し、導出したアドレスをＴＡＧバッファ制御部３３４に渡す。続いて、ＴＡＧバッファ制御部３３４は、ＴＡＧバッファ３３３に格納されている管理情報を基に、演算データリクエスト解析部３３１から渡されたアドレスに格納されている所望のデータサイズ情報が、データサイズ情報バッファ３３５に格納されているか否かを判断する（ステップＳ３２）。
【００５４】
ステップＳ３２において、所望のデータサイズ情報がデータサイズ情報バッファ３３５に格納されている場合（ステップＳ３２のＹｅｓ）、データサイズ情報バッファ制御部３３６は、データサイズ情報バッファ３３５から所望のデータサイズ情報を読み出す（ステップＳ３３）。
一方、ステップＳ３２において、所望のデータサイズ情報がデータサイズ情報バッファ３３５に格納されていない場合（ステップＳ３２のＮｏ）、リードリクエスト生成部３３２は、ＴＡＧバッファ制御部３３４の制御の下で、所望のデータサイズ情報の読み出しを行うためのリードリクエストを生成し、生成したリードリクエストをデータバス３６経由でＤＤＲメモリ制御部３４に送る。このリードリクエストに応じて、ＤＤＲメモリ制御部３４は、ＤＤＲメモリ４０から所望のデータサイズ情報を読み出す。ＤＤＲメモリ４０から読み出された所望のデータサイズ情報は、データバス３６経由でデータサイズ情報バッファ制御部３３６で受信される。データサイズ情報バッファ制御部３３６は、受信した所望のデータサイズ情報を、データサイズ情報バッファ３３５に格納する（ステップＳ３４）。また、ＴＡＧバッファ制御部３３４は、所望のデータサイズ情報の管理情報をＴＡＧバッファ３３３に格納する。
【００５５】
続いて、演算データリクエスト解析部３３１は、所望のデータサイズ情報を基に、所望の圧縮データのデータ長を判断する。そして、リードリクエスト生成部３３２は、演算データリクエスト解析部３３１の制御の下で、演算部３１から受信したリードリクエストに含まれるデータ長を、所望の圧縮データのデータ長に置き換える（ステップＳ３５）。
【００５６】
続いて、リードリクエスト生成部３３２は、ステップＳ３５でデータ長を置き換えたリードリクエストを、データバス３６経由でＤＤＲメモリ制御部３４に送る。続いて、このリードリクエストに応じて、ＤＤＲメモリ制御部３４は、ＤＤＲメモリ４０から所望の圧縮データを読み出す（ステップＳ３６）。
【００５７】
その後、圧縮データ伸張部３５は、ＤＤＲメモリ４０から読み出された所望の圧縮データを、データバス３６経由で受信し、受信した所望の圧縮データを伸張する（ステップＳ３７）。圧縮データ伸張部３５で伸張されたデータは、演算データリード制御部３２経由で演算部３１に送られる。
【００５８】
＜実施の形態２の効果＞
次に、本実施の形態２の効果について説明する。本実施の形態２によれば、圧縮データのリードリクエストを受信した場合、その圧縮データのデータサイズ情報がデータサイズ情報バッファ３３５に格納されていれば、そのデータサイズ情報をデータサイズ情報バッファ３３５から読み出し、そのデータサイズ情報を用いて、ＤＤＲメモリ４０から圧縮データを読み出す。
【００５９】
したがって、ＤＤＲメモリ４０からの圧縮データの読み出し毎に、ＤＤＲメモリ４０からのデータバス３６経由でのデータサイズ情報の読み出しが発生することが回避されるため、データサイズ情報の読み出しに起因してバス／メモリ帯域が消費されてしまうことが抑制される。
【００６０】
＜実施の形態２の具体的構成例＞
次に、本実施の形態２を実現する具体的な構成例を説明する。
演算部３１は、動画圧縮規格であるＨ．２６４規格のデコーダであるとする。
圧縮手法は、圧縮後の圧縮データが可変長となる可逆圧縮とする。具体的には、演算部３１から出力されたデータを、６４×４（水平６４画素×垂直４ライン）画素ブロック単位（２５６バイト）で圧縮し、圧縮後の圧縮データのデータ長を６４，１２８，１９２，２５６バイトの４通りのデータ長に丸めて管理するとする。また、データサイズ情報は、６４×４画素ブロックの１つにつき２ビットであるとする。また、圧縮データをＤＤＲメモリ４０に格納する格納順番と、その圧縮データのデータサイズ情報をＤＤＲメモリ４０に格納する格納順番と、は一致するものとする。
ＤＤＲメモリ４０は、ＬＰＤＤＲ４（Low Power DDR4）であるとする。
【００６１】
Ｈ．２６４規格では、動画像は各画像（ピクチャ）単位に圧縮される。圧縮されたピクチャには、大別してＩ／Ｐ／Ｂの３種類が規定されている。
【００６２】
Ｉピクチャは、そのピクチャ自身のデータのみで圧縮されており、そのピクチャ単体で復号(デコード)できる。Ｐ／Ｂピクチャは、そのピクチャと、それ以前にデコードした結果（デコード画像）の差分を取って、そのピクチャを圧縮する。そのため、Ｐ／Ｂピクチャは、Ｉピクチャに比べて圧縮後のデータサイズを小さくすることができる。Ｐ／Ｂピクチャにおいて差分データを生成するとき、参照するデコード画像から任意の位置のデータを選択することができる。例えば、圧縮後のデータ量が最小になるような位置のデータが選択される。
【００６３】
Ｐ／Ｂピクチャにおいて、参照するデコード画像は参照面とも称され、差分データの生成には、輝度用の参照面及び色差用の参照面が必要となる。Ｈ．２６４規格では、輝度用の参照面及び色差用の参照面としてそれぞれで最大３２面の合計６４面を持つことができることが規定されている。
【００６４】
次に、本実施の形態２を上記の具体的な構成例で実現した場合の具体的な効果について説明する。
本実施の形態２では、圧縮データのリードリクエストを受信した場合、その圧縮データのデータサイズ情報がデータサイズ情報バッファ３３５に格納されていれば、データサイズ情報バッファ３３５に格納されているデータサイズ情報を用いて、ＤＤＲメモリ４０から圧縮データを読み出す。そのため、ＤＤＲメモリ４０からの圧縮データの読み出し毎に、ＤＤＲメモリ４０からのデータバス３６経由でのデータサイズ情報の読み出しが発生することが回避される。
【００６５】
もし、圧縮データの読み出し毎に、ＤＤＲメモリ４０からデータバス３６経由でデータサイズ情報の読み出しを行うこととすると、２ビットのデータサイズ情報を読み出すにも、毎回、実質的に１２８バイト長のデータを読み出した場合と同等のバス／メモリ帯域を消費してしまうことになる。これについて図８を用いて説明する。
【００６６】
図８のグラフは、一回のデータ転送長に対するＤＤＲメモリ４０の転送効率（アクセス効率）を示している。データ転送長が１２８バイト以上である場合は１００％近い転送効率であるが、データ転送長が１２８バイトよりも短くなるにしたがって、転送効率が下がる。例えば、６４バイトのときは約５０％の効率となり、２回に１回は転送できない期間が発生する。このように、データ転送長が１２８バイトよりも短いときは、転送ができない期間が発生し、実質的に１２８バイトのデータを転送していることになる。そのため、２ビットのデータサイズ情報を読み出すことは、実質的に１２８バイト長のデータを読み出すことと等価となる。本実施の形態２では、所望のデータサイズ情報がデータサイズ情報バッファ３３５に格納されている限りは、ＤＤＲメモリ４０からのデータバス３６経由でのデータサイズ情報の読み出しが発生しないため、バス／メモリ帯域の消費が抑制される。
【００６７】
また、図８のグラフによれば、データサイズ情報を読み出す場合、所定の読み出し単位分のデータサイズ情報をまとめて読み出すことが望ましい。例えば、所望のデータサイズ情報（２ビット）を含む、１２８バイト分のデータサイズ情報をまとめて読み出すことが好ましい。この場合、リードリクエスト生成部３３２は、例えば、所望のデータサイズ情報のアドレスから１２８バイト分のデータサイズ情報をまとめて読み出すリードリクエストを生成する。このように、所定の読み出し単位分のデータサイズ情報をまとめて読み出すにより、２ビットのデータサイズ情報を個々に読み出す場合と比較して、バス／メモリ帯域の消費がさらに抑制される。
【００６８】
また、データサイズ情報をＤＤＲメモリ４０に格納するのではなく、全て演算部３１内の不図示のＳＲＡＭ（Static Random Access Memory）に格納することとすると、画像サイズにも依存するが、ＦｕｌｌＨＤの場合、９６ＫバイトのＳＲＡＭが必要になってしまう（参照面１面あたり１．５Ｋバイトが６４面分必要となるため）。
【００６９】
これに対して本実施の形態２では、参照面１面当たり１２８バイト単位で、参照面６４面分のデータサイズ情報を管理すると、約８Ｋバイトが必要になるだけであるため、データサイズ情報バッファ３３５は８ＫバイトのＳＲＡＭで済む。
【００７０】
（３）実施の形態３
＜実施の形態３の構成及び動作＞
まず、実施の形態３の構成及び動作について説明する。本実施の形態３は、実施の形態２と構成自体は同様であるが、実施の形態２とは動作が異なる。
実施の形態２では、所定の読み出し単位分（例えば、１２８バイト分）のデータサイズ情報をまとめて読み出してデータサイズ情報バッファ３３５に格納することとしていた。
【００７１】
本実施の形態３は、所定の読み出し単位分のデータサイズ情報を読み出す際に、アドレス領域が連続する、次の所定の読み出し単位分のデータサイズ情報も先行して読み出してデータサイズ情報バッファ３３５に格納する。この場合、リードリクエスト生成部３３２は、例えば、所望のデータサイズ情報のアドレスから１２８バイト分のデータサイズ情報を読み出すと共に、アドレス領域が連続する、次の１２８バイト分のデータサイズ情報も先行して読み出すリードリクエストを生成する。
【００７２】
しかし、本実施の形態３では、データサイズ情報バッファ３３５は、空き容量が無い場合は、最も古いデータサイズ情報を破棄することを想定している。そのため、データサイズ情報バッファ３３５の容量によっては、先行読み出しを行った結果、同時に読み出した前のデータサイズ情報が、データサイズ情報バッファ３３５から破棄されてしまう可能性がある。
【００７３】
そこで、リードリクエスト生成部３３２は、データサイズ情報バッファ３３５の容量に応じて、先行読み出しをするか否かを切り替えることが望ましい。例えば、データサイズ情報バッファ３３５が、データサイズ情報の所定の読み出し単位の２倍以上の容量を持つ場合に限り、先行読み出しを行うことが好ましい。これにより、先行読み出しを行った結果、同時に読み出した前のデータサイズ情報が、データサイズ情報バッファ３３５から破棄されてしまうことが回避される。
【００７４】
＜実施の形態３の効果＞
次に、本実施の形態３の効果について説明する。本実施の形態３によれば、所定の読み出し単位分のデータサイズ情報を読み出す際に、アドレス領域が連続する、次の所定の読み出し単位分のデータサイズ情報も先行して読み出してデータサイズ情報バッファ３３５に格納する。
【００７５】
例えば、演算部３１による圧縮データの読み出しが、局所的にはランダムな読み出しであっても、大域的に見ると、読み出す箇所がアドレス順に遷移する場合がある。その場合、本実施の形態２のように、データサイズ情報を先行して読み出しておくことで、所望のデータサイズ情報がデータサイズ情報バッファ３３５に格納されていなかったときの処理遅延（ミスペナルティ）を防ぐことができ、その結果、演算部３１の処理性能の低下を抑制することができる。
その他の効果は、実施の形態２と同様である。
【００７６】
＜実施の形態３の具体的構成例＞
次に、本実施の形態３を実現する具体的な構成例を説明する。本実施の形態３は、実施の形態２と同様の具体的な構成例で実現するものとする。
Ｈ．２６４規格では、上述の通り、輝度用の参照面及び色差用の参照面としてそれぞれで最大３２面の合計６４面を持つことができる。しかし、実際には、演算部３１が、参照面を上限まで使用しない場合も多い。また、参照面数は、Ｈ．２６４規格では、圧縮データの冒頭のヘッダ部に符号化されて格納されており、演算部３１は、符号化処理を開始する前に、参照面数を知ることができる。
【００７７】
実施の形態２の具体的な構成例によれば、データサイズ情報バッファ３３５は、参照面１面当たり１２８バイト単位で、参照面６４面分のデータサイズ情報を格納することが可能な容量を持つ。
したがって、輝度用の参照面及び色差用の参照面が合計で３２面以下である場合には（例えば、輝度用の参照面及び色差用の参照面がそれぞれ１６面である場合）、先行読み出しを行ったとしても、同時に読み出した前のデータサイズ情報が、データサイズ情報バッファ３３５から破棄されることが回避される。
【００７８】
そこで、輝度用の参照面及び色差用の参照面が合計３２面以下である場合に限り、所望のデータサイズ情報を含む１２８バイト分のデータサイズ情報を読み出す際に、アドレス領域が連続する、次の１２８バイト分のデータサイズ情報も先行して読み出すことが望ましい。
【００７９】
なお、先行読み出しを行う分のデータサイズ情報が、既にデータサイズ情報バッファ３３５に格納されている場合は、先行読み出しは行わない。これにより、データサイズ情報の無駄な読み出しが回避されるため、バス／メモリ帯域の消費がさらに抑制される。
（４）他の実施の形態
【００８０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【００８１】
例えば、上記実施の形態２，３では、圧縮データの読み出しに用いる補助情報が、圧縮データのデータ長を示すデータサイズ情報であるものとして説明したが、これには限定されない。補助情報は、圧縮データが格納されているメモリ上のアドレスを示すアドレス情報でも良い。
【００８２】
この場合、メモリには、圧縮データのアドレス情報を補助情報として格納する。そして、圧縮データのアドレス情報を基に、リードリクエストに含まれるアドレスを、圧縮データが格納されているメモリ上のアドレスに置き換える。
【００８３】
なお、補助情報は、データサイズ情報又はアドレス情報のいずれかを単独で使用しても良いし、データサイズ情報及びアドレス情報の双方を使用しても良い。
【符号の説明】
【００８４】
１  データ処理システム
１０  半導体装置
１１  制御部
１２  伸張部
１３  データバス
１４  キャッシュ
２０  メモリ
２  データ処理システム
３０  半導体装置
３１  演算部
３２  演算データリード制御部
３３  データサイズ情報キャッシュ部
３３１  演算データリクエスト解析部
３３２  リードリクエスト生成部
３３３  ＴＡＧバッファ
３３４  ＴＡＧバッファ制御部
３３５  データサイズ情報バッファ
３３６  データサイズ情報バッファ制御部
３４  ＤＤＲメモリ制御部
３５  圧縮データ伸張部
３６  データバス
４０  ＤＤＲメモリ
【図１】
0006605323.tif 000002
【図２】
0006605323.tif 000003
【図３】
0006605323.tif 000004
【図４】
0006605323.tif 000005
【図５】
0006605323.tif 000006
【図６】
0006605323.tif 000007
【図７】
0006605323.tif 000008
【図８】
0006605323.tif 000009