(57)【要約】【課題】ブロックデータ全体の伸長処理に要するサイクル数を低減することができる圧縮伸長装置を提供すること。【解決手段】外部メモリとのデータ通信のためにブロックデータを分割した複数のサブブロックデータを圧縮または伸長する圧縮伸長装置であって、複数の圧縮器を有する圧縮部と、１サイクルあたりの転送データ量を分割し、圧縮部によって圧縮された複数のサブブロックデータのうち二以上のサブブロックデータの所定量の圧縮データを各分割領域に割り振った後に各分割領域の圧縮データを組み合わせて転送データを生成するデータ組み合わせ回路と、複数の伸長器を有し、外部メモリから読み出された転送データの各分割領域に割り振られた圧縮データを並行して伸長する伸長部と、伸長部によって伸長された各データがブロックデータにおける元の位置に配置されるようにアドレス変換を行なうデータ配置回路とを備える。【選択図】図１
2011029817.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリとのデータ通信のためにブロックデータを分割した複数のサブブロックデータを圧縮または伸長する圧縮伸長装置において、
複数の圧縮器を有し、該複数の圧縮器を用いて前記複数のサブブロックデータを並行して圧縮する圧縮手段と、
１サイクルあたりの転送データ量を分割し、前記圧縮手段によって圧縮された複数のサブブロックデータのうち二以上のサブブロックデータの所定量の圧縮データを各分割領域に割り振った後に各分割領域の圧縮データを組み合わせて転送データを生成し前記外部メモリに出力する組み合わせ手段と、
複数の伸長器を有し、該複数の伸長器を用いて、前記外部メモリから読み出された前記転送データの各分割領域に割り振られた圧縮データを並行して伸長する伸長手段と、
前記伸長手段によって伸長された各データが前記ブロックデータにおける元の位置に配置されるようにアドレス変換を行なう配置手段と、
を備えたことを特徴とする圧縮伸長装置。
【請求項２】
前記伸長手段は、前記複数のサブブロックデータの個数と同数の伸長器を有し、
前記組み合わせ手段は、前記１サイクルあたりの転送データ量を前記サブブロックデータの個数と同数に均等分割し、前記圧縮手段によって圧縮された各サブブロックデータの圧縮データを同量ずつ各分割領域にそれぞれ割り振ることを特徴とする請求項１に記載の圧縮伸長装置。
【請求項３】
前記１サイクルあたりの転送データ量に対する分割数は、圧縮後の先頭の前記サブブロックデータにおけるヘッダと先頭データとを合わせたデータ量に応じて設定され、
前記組み合わせ手段は、設定された前記１サイクルあたりの転送データ量に対する分割数が前記サブブロックデータの個数よりも少ない場合には、前の転送データに割り振られなかったサブブロックデータの圧縮データを次の転送データに割り振り、該割り振り順序で各サブブロックデータの圧縮データの割り振りを繰り返すことを特徴とする請求項１に記載の圧縮伸長装置。
【請求項４】
圧縮後の先頭の前記サブブロックデータにおけるヘッダと先頭データとを合わせたデータ量をもとに、前記１サイクルあたりの転送データ量に対する分割数を前記サブブロックデータの個数と同数または前記サブブロックデータの個数よりも少ない数に選択する選択手段と、
前記選択手段によって選択された分割数に応じて、前記外部メモリから読み出された転送データを分割し各伸長器に振り分ける振り分け手段と、
を備え、
前記組み合わせ手段は、前記選択手段によって選択された分割数にしたがって、前記１サイクルあたりの転送データ量を分割して前記圧縮された複数のサブブロックデータの圧縮データを各分割領域に割り振るとともに、前記選択された分割数を示す分割情報を付与した転送データを生成し、
前記振り分け手段は、前記組み合わせ手段によって転送データに付与された分割情報をもとに前記外部メモリから読み出された転送データを分割することを特徴とする請求項１に記載の圧縮伸長装置。
【請求項５】
前記選択手段は、前記圧縮後の先頭のサブブロックデータにおけるヘッダと先頭データとを合わせたデータ量が前記１サイクルあたりの転送データ量を前記サブブロックデータの個数と同数に均等分割した場合の各分割領域のデータ量以下である場合には、前記１サイクルあたりの転送データ量に対する分割数を前記サブブロックデータの個数と同数に選択し、前記圧縮後の先頭のサブブロックデータにおけるヘッダと先頭データとを合わせたデータ量が前記１サイクルあたりの転送データ量を前記サブブロックデータの個数と同数に均等分割した場合の各分割領域のデータ量よりも多い場合には、前記１サイクルあたりの転送データ量に対する分割数を前記サブブロックデータの個数よりも少ない数に選択することを特徴とする請求項４に記載の圧縮伸長装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを圧縮または伸長する圧縮伸長装置に関する。
【背景技術】
【０００２】
近年、電子機器が取り扱うデータ量は増大しており、これにともない、外部メモリへの移動対象となるデータのデータ量も大きくなっている。そこで、従来から、装置内部のバッファから外部メモリへデータを移動する場合には、データを圧縮してからバスを介して外部メモリに書込み、外部メモリから装置内部のバッファへデータを移動する場合には、バスを介して外部メモリから読み出した圧縮データを伸長してから内部バッファに書き込むという装置構成が採用されている。
【０００３】
たとえば、画像データの場合には、非圧縮で８ビットの大きさを有する１画素ずつ、逐次的に圧縮伸長を行なう圧縮伸長アルゴリズムを用いてブロック形状の画像データを圧縮伸長している。そして、１サイクルあたり１画素という圧縮伸長のスループットでは内部バッファと外部メモリとの間のデータ転送速度の要求が満たせない場合、複数の圧縮器および伸長器を設けて、圧縮伸長の処理を並列化する構成が採用されている（たとえば特許文献１参照）。この場合、用いている圧縮伸長アルゴリズムはブロックデータ単位のアルゴリズムであるため、転送を行いたいブロックデータ全体を複数のサブブロックデータに分割してそれぞれを並列に処理することになる。
【０００４】
しかしながら、たとえば一つのブロックデータを４つのサブブロックデータＡ〜Ｄに分割した場合、圧縮後のデータは圧縮した順にサブブロックデータＡ〜Ｄの順で配置され、この順で外部メモリに転送され、この順で外部メモリから読み出される。この結果、外部メモリから圧縮データを読み出し伸長する場合には、先頭に配置されるサブブロックデータＡはそのまま伸長処理が開始されるが、その次に配置されるサブブロックデータＢは、先頭のサブブロックデータＡの読み出しが終了した後に外部メモリから読み出されるため、この読み出しが終了しないと伸長処理が開始されない。同様に、サブブロックデータＣはサブブロックデータＡ，Ｂの読み出しが終了しないと伸長処理が開始されず、さらに、サブブロックデータＤはサブブロックデータＡ〜Ｃの読み出しが終了しないと伸長処理が開始されない。
【０００５】
したがって、伸長器がサブブロックデータ数と同数設けられていた場合であっても、少なくともサブブロックデータＣの転送が完了するまでは、いずれかの伸長器が処理を開始できずに待機するという状況が生じ、並列度が高く保てないことから、ブロックデータ全体の伸長処理に多くのサイクル数を必要とするという問題があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２５２１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、ブロックデータ全体の伸長処理に要するサイクル数を低減することができる圧縮伸長装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願発明の一態様によれば、外部メモリとのデータ通信のためにブロックデータを分割した複数のサブブロックデータを圧縮または伸長する圧縮伸長装置において、複数の圧縮器を有し、該複数の圧縮器を用いて前記複数のサブブロックデータを並行して圧縮する圧縮手段と、１サイクルあたりの転送データ量を分割し、前記圧縮手段によって圧縮された複数のサブブロックデータのうち二以上のサブブロックデータの所定量の圧縮データを各分割領域に割り振った後に各分割領域の圧縮データを組み合わせて転送データを生成し前記外部メモリに出力する組み合わせ手段と、複数の伸長器を有し、該複数の伸長器を用いて、前記外部メモリから読み出された前記転送データの各分割領域に割り振られた圧縮データを並行して伸長する伸長手段と、前記伸長手段によって伸長された各データが前記ブロックデータにおける元の位置に配置されるようにアドレス変換を行なう配置手段と、を備えたことを特徴とする圧縮伸長装置が提供される。
【発明の効果】
【０００９】
本発明によれば、圧縮側において、１サイクルあたりの転送データ量を分割し、二以上のサブブロックデータの圧縮データを各分割領域に割り振った後に各分割領域のデータを組み合わせた転送データを外部メモリに出力しており、伸長側において読み出す転送データには最初から二以上のサブブロックデータの圧縮データが含まれることから、二以上のサブブロックデータの圧縮データに対して０サイクル目から伸長処理を並行して行なうことができため、ブロックデータ全体の伸長処理に要するサイクル数を低減することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態にかかる圧縮伸長装置の構成を示すブロック図である。
【図２】図２は、圧縮前の画像データを説明する図である。
【図３】図３は、圧縮前の画像データの分割方法を説明する図である。
【図４】図４は、図１に示すデータ組み合わせ回路が生成する転送データを説明する図である。
【図５】図５は、圧縮後の画像データを説明する図である。
【図６】図６は、図４に示す先頭の転送データを説明する図である。
【図７】図７は、図４に示す転送データを説明する図である。
【図８】図８は、第１の実施の形態における伸長処理に要するサイクルについて説明する図である。
【図９】図９は、従来技術にかかる圧縮伸長装置の構成を示すブロック図である。
【図１０】図１０は、図９に示すデータ組み合わせ回路が生成する転送データを説明する図である。
【図１１】図１１は、図１に示す圧縮伸長装置の圧縮側の要部を示すブロック図である。
【図１２】図１２は、図１に示すデータ組み合わせ回路の構成を示す模式図である。
【図１３】図１３は、図１に示す圧縮伸長装置の伸長側の要部を示すブロック図である。
【図１４】図１４は、図１に示すデータ配置回路の構成を示す模式図である。
【図１５】図１５は、圧縮前の画像データの分割方法の他例を説明する図である。
【図１６】図１６は、第２の実施の形態にかかるプロセッサシステムの構成を示すブロック図である。
【図１７】図１７は、図１６に示すデータ組み合わせ回路が生成する転送データを説明する図である。
【図１８】図１８は、図１７に示す転送データを説明する図である。
【図１９】図１９は、圧縮後の画像データを説明する図である。
【図２０】図２０は、第２の実施の形態における伸長処理に要するサイクルについて説明する図である。
【図２１】図２１は、第３の実施の形態にかかる圧縮伸長装置の構成を示すブロック図である。
【図２２】図２２は、図２１に示すデータ配置選択回路の構成を示す模式図である。
【図２３】図２３は、図２２に示す選択信号を説明する表を示す図である。
【図２４】図２４は、図２１に示すデータ組み合わせ回路の構成を示す模式図である。
【図２５】図２５は、図２１に示すデータ振り分け回路の構成を示す模式図である。
【図２６】図２６は、図２５に示す選択信号を説明する表を示す図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明の実施の形態にかかる圧縮伸長装置を詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付している。
【００１２】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかる圧縮伸長装置の構成を示すブロック図である。図１に示すように、本第１の実施の形態にかかる圧縮伸長装置１は、転送対象のデータを圧縮する圧縮器構として、圧縮前バッファ１０、圧縮部２０、圧縮後バッファ３０およびデータ組み合わせ回路４０を備え、入力されたデータを圧縮後、バス５０を介して、この圧縮した圧縮データを外部メモリ５１に転送する。そして、圧縮伸長装置１は、伸長前バッファ６０、伸長部７０、データ配置回路８０および伸長後バッファ９０を備え、バス５０を介して読み出した外部メモリ５１の圧縮データを伸長し出力する。なお、本第１の実施の形態においては、画像処理のマクロブロックとして１６画素×１６画素のブロック単位で処理を行う場合であって、非圧縮で８ビットの大きさである１画素ずつ、逐次的に圧縮伸長を行なう圧縮伸長アルゴリズムを用いて、ブロック形状の画像データを圧縮伸長する場合を例に説明する。
【００１３】
圧縮前バッファ１０は、圧縮対象の画素データを一時的に記憶し、データの入力タイミングと圧縮部２０の圧縮タイミングとを調整する。圧縮前バッファには、図２に示す１６画素×１６画素サイズのブロックデータＧが、図３に示すように１６画素×４画素サイズの４つのサブブロックデータＡ〜Ｄに分割された状態で順次格納される。なお、サブブロックデータＡは画素０が先頭となり、サブブロックデータＢは画素６４が先頭となり、サブブロックデータＣは画素１２８が先頭となり、サブブロックデータＤは画素１９２が先頭となる。
【００１４】
圧縮部２０は、複数の圧縮器２１ａ〜２１ｄを備え、この圧縮器２１ａ〜２１ｄを用いて、複数のサブブロックデータの各画素データを並行して圧縮することができる。圧縮部２０は、サブブロックデータＡ〜Ｄの個数と同数の圧縮器２１ａ〜２１ｄを有する。この４個の圧縮器２１ａ〜２１ｄは、処理対象のサブブロックデータを圧縮前バッファ１０からそれぞれ読み出して、４個のサブブロックデータを並行して圧縮する。
【００１５】
圧縮後バッファ３０は、各圧縮器２１ａ〜２１ｄによって圧縮された圧縮データを一時的に記憶し、各圧縮器２１ａ〜２１ｄによる圧縮データの入力タイミングとデータ組み合わせ回路の処理タイミングとを調製する。
【００１６】
データ組み合わせ回路４０は、１サイクルあたりの転送データ量を分割し、圧縮部器２１ａ〜２１ｄによって圧縮された複数のサブブロックデータのうち二以上のサブブロックデータの所定量の圧縮データをそれぞれ各分割領域に割り振った後に各分割領域の圧縮データを組み合わせて転送データを生成し外部メモリ５１に出力する。このデータ組み合わせ回路４０は、１サイクルあたりの転送データ量をサブブロックデータの個数および伸長器の個数と同数に均等分割し、圧縮器２１ａ〜２１ｄによって圧縮された各サブブロックデータの圧縮データを同量ずつ各分割領域にそれぞれ割り振っている。
【００１７】
伸長前バッファ６０は、バス５０を介して外部メモリ５１から読み出されたデータを一時的に記憶し、バス５０の転送タイミングと、伸長部７０における伸長タイミングとを調製する。
【００１８】
伸長器７０は、複数の伸長器７１ａ〜７１ｄを備え、この伸長器７１ａ〜７１ｄを用いて、複数の転送データを並行して伸長することができる。伸長部７０は、サブブロックデータＡ〜Ｄの個数と同数の伸長器７１ａ〜７１ｄを有する。この４個の伸長器７１ａ〜７１ｄは、処理対象の転送データを伸長前バッファ６０からそれぞれ読み出して、４個の転送データを並列に伸長する。この転送データは、圧縮されたサブブロックデータを含むものであるため、伸長器７１ａ〜７１ｄは、伸長後のデータとして各サブブロックデータＡ〜Ｄを構成する画素データを出力する。
【００１９】
データ配置回路８０は、伸長器７１ａ〜７１ｄによって伸長された各データがブロックデータにおける元の位置に配置されるようにアドレス変換を行なう。データ配置回路８０は、伸長器７１ａ〜７１ｄによって伸長された各サブブロックデータＡ〜Ｄを構成する画素データが、圧縮前のブロックデータＧにおける元の位置に配置されるようにアドレスの変換を行い、伸長後バッファ９０に書き込む。
【００２０】
伸長後バッファ９０は、伸長後の画素データを一時的に記憶する。伸長後バッファ９０に記憶される画素データは、データ配置回路８０のアドレス変換処理によって、圧縮前の画素配置となる。なお、圧縮伸長装置１における圧縮伸長のアルゴリズムは、サブブロックデータ単位で圧縮後のビット数を保証することができて画像の画質が変動するアルゴリズムを使用し、伸長処理は１個の伸長器で１サイクルに１画素のスループットとする。
【００２１】
つぎに、圧縮したサブブロックデータを処理し転送データを生成するデータ組み合わせ回路４０の転送データ生成処理について説明する。まず、圧縮前データのデータ配置について説明する。図３に示すように、処理対象の画像データＧは、４つのサブブロックデータＡ〜Ｄに分割された後、画素０のデータが先頭になるサブブロックデータＡを先頭に、画素６４のデータ先頭になるサブブロックデータＢ、画素１２８のデータが先頭になるサブブロックデータＣ、画素１９２のデータが先頭になるサブブロックデータＤの順で配置される。そして、各サブブロックデータＡ〜Ｄは、対応する圧縮器２１ａ〜２１ｄによってそれぞれ読み出され、並行して圧縮された後に圧縮後バッファ３０に格納され、データ組み合わせ回路４０によって圧縮後バッファ３０からそれぞれ読み出される。
【００２２】
そして、データ組み合わせ回路４０は、１サイクルあたりの転送データ量をサブブロックデータＡ〜Ｄの個数と同数の４つに均等分割し、各分割領域に、圧縮器２１ａ〜２１ｄによって圧縮された各サブブロックデータＡ〜Ｄの圧縮データを同量ずつ割り振るようにデータ配置を行なう。すなわち、データ組み合わせ回路４０は、図４に示すように、各サブブロックデータＡ〜Ｄの圧縮データＦａ〜Ｆｄを同量ずつ含ませるように各転送データを生成している。このため、最初の転送データＦ１にも、全てのサブブロックデータＡ〜Ｄの圧縮データが同量ずつ含まれる。
【００２３】
たとえば、１画素が８ビットで形成されるデータを１／２に圧縮するとした場合、各サブブロックデータの圧縮前データ量は１６（画素）×４（画素）×８（ビット）、すなわち５１２ビットであることから、各サブブロックデータの圧縮後データ量は２５６ビット以内となる。また、バス５０上のデータ転送として、１サイクルあたり６４ビットのデータを転送するバースト転送を用いた場合、１個のサブブロックデータの転送を行なうには４バースト分必要となる。
【００２４】
ここで、圧縮後のデータ形式は、図５のデータＧａに示すように、１個のサブブロックデータにつき１つのヘッダ、および、画素ごとの圧縮データによって構成される。圧縮の係数を保持するヘッダは７ビット固定長であり、１画素あたりの圧縮データは１ビットから１５ビットの可変長である。なお、１画素だけで見た場合、圧縮前よりも圧縮後の方がサイズが大きくなることがあるが、サブブロックデータ全体で見ると圧縮後のビット数は圧縮率を保証するように圧縮される。
【００２５】
そして、バス５０上のデータ転送として１サイクルあたり６４ビットのデータを転送するバースト転送を用いた場合、データ組み合わせ回路４０は、この１サイクルあたりの転送データ量である６４ビットをサブブロックデータＡ〜Ｄの個数と同数の４個の分割領域に分割して、各分割領域を１６ビットとする。たとえば、図６に示すように、６４ビットの最初の転送データＦ１は、それぞれが１６ビットである分割領域Ｆ１ａ〜Ｆ１ｄに分割される。
【００２６】
そして、データ組み合わせ回路４０は、１６ビットの各分割領域Ｆ１ａ〜Ｆ１ｄに、圧縮器２１ａ〜２１ｄによって圧縮された各サブブロックデータＡ〜Ｄの圧縮データを１６ビットずつ割り振るようにデータ配置を行なう。
【００２７】
データ組み合わせ回路４０は、サブブロックデータＡの画素０の圧縮データが９ビットであって７ビットのヘッダと合わせると１６ビットである場合、図７に示すように、最初の転送データＦ１のうちサブブロックデータＡに対応する分割領域Ｆ１ａに、サブブロックデータＡのヘッダと画素０の圧縮データとを割り振る。そして、データ組み合わせ回路４０は、サブブロックデータＢの画素６４のデータが９ビットである場合、最初の転送データＦ１のうちサブブロックデータＢに対応する分割領域Ｆ１ｂにサブブロックデータＢのヘッダと画素６４の圧縮データとを割り振る。同様に、データ組み合わせ回路４０は、最初の転送データＦ１のうちサブブロックデータＣに対応する領域Ｆ１ｃに、サブブロックデータＣのヘッダと９ビット分の圧縮データとを割り振り、さらに、最初の転送データＦ１のうちサブブロックデータＤに対応する領域Ｆ１ｄに、サブブロックデータＤのヘッダと、９ビット分の圧縮データとを割り振る。そして、２番目の転送データＦ２については、データ組み合わせ回路４０は、１６ビット分のサブブロックデータＡに対応する分割領域Ｆ２ａに、最初の転送データＦ１で割り振った画素データの次の画素データである画素１の圧縮データと、画素２の圧縮データとを割り振る。
【００２８】
さらに、データ組み合わせ回路４０は、転送データに割り振る複数の画素の圧縮データの合計が１６ビットよりも多い場合には１７ビット以降の画素データを、この転送データの次の転送データに割り振る。データ組み合わせ回路４０は、たとえばサブブロックデータＡの画素１の圧縮データと画素２の圧縮データとの合計が１６ビットを超える場合には、データ組み合わせ回路４０は、１７ビット以降の画素２のデータ２を、図７に示すように、３番目の転送データＦ３に割り振る。
【００２９】
このように、データ組み合わせ回路４０は、１サイクルあたりの転送データ量である６４ビットを４つに均等に分割し、１６ビットの各分割領域にそれぞれ対応するサブブロックデータＡ〜Ｄの圧縮データを１６ビットずつ画素順に順次割り振っている。したがって、図４に示すように、全ての転送データに各サブブロックデータＡ〜Ｄの圧縮後のデータＦａ〜Ｆｄが１６ビットずつ含まれることとなる。
【００３０】
そして、圧縮伸長装置１が外部メモリ５１から読み出す６４ビットの転送データも、各サブブロックデータＡ〜Ｄの圧縮後のデータが１６ビットずつ含まれることとなる。この６４ビットの転送データは、各伸長器７１ａ〜７１ｄによって、それぞれ１６ビットずつ取り出される。次いで、伸長器７１ａ〜７１ｄは、各１６ビットの圧縮データを並行して伸長する。バースト転送を用いた場合、図８に示すように、圧縮伸長装置１は、４つのサブブロックデータＡ〜Ｄに対応する圧縮データ全てを外部メモリ５１から読み出すためには矢印Ｙ１のように１６サイクル必要となる。
【００３１】
ここで、全ての各転送データには、サブブロックデータＡ〜Ｄの圧縮データが１６ビットずつ含まれる。このため、最初の転送データにも、各サブブロックデータＡ〜Ｄの圧縮データが１６ビットずつ含まれている。したがって、各サブブロックデータＡ〜Ｄにそれぞれ対応する４個の伸長器７１ａ〜７１ｄは、伸長対象のサブブロックデータＡ〜Ｄの圧縮データを最初の転送データからそれぞれ１６ビットずつ取得可能である。このため、各伸長器２１ａ〜２１ｄは、図８の矢印Ｙ３ａ〜Ｙ３ｄに示すように、最初の転送データが圧縮伸長装置１に到着した０サイクル目から、最初の転送データに含まれるサブブロックデータＡ〜Ｄにそれぞれ対応する各圧縮データに対して、待機することなく伸長処理を開始することができる。なお、図８の矢印Ｙ３ａはサブブロックデータＡの伸長処理を行なう伸長器２１ａの伸長処理サイクルを示し、矢印Ｙ３ｂはサブブロックデータＢの伸長処理を行なう伸長器２１ｂの伸長処理サイクルを示し、矢印Ｙ３ｃはサブブロックデータＣの伸長処理を行なう伸長器２１ｃの伸長処理サイクルを示し、矢印Ｙ３ｄはサブブロックデータＤの伸長処理を行なう伸長器２１ｄの伸長処理サイクルを示す。
【００３２】
したがって、伸長器７１ａ〜７１ｄは、０サイクル目から１６ビットの各圧縮データを伸長することができることから、伸長器７１ａ〜７１ｄのいずれにおいても、８画素×８ビットのサブブロックデータに対応する６４サイクルで伸長処理を終えることができる。なお、伸長処理を開始した後は、バス５１の転送レートの１６ビット／サイクルが、伸長処理のビット消費スループットである１画素（最大１５ビット）／サイクルよりも早いため、伸長処理の１画素／サイクルのスループットは確保される。
【００３３】
ここで、従来の圧縮伸長装置について説明する。図９は、従来の圧縮伸長装置の概略を示すブロック図である。図９に示すように、従来の圧縮伸長装置１０１は、圧縮前バッファ１１０、圧縮後バッファ１３０、伸長前バッファ１６０および伸長後バッファ１９０に加え、各サブブロックデータに対応させて複数の圧縮器１２１ａ〜１２１ｄを有する圧縮部１２０と、複数の伸長器１７１ａ〜１７１ｄを有する伸長部１７０を備え、各サブブロックデータを並行して圧縮および伸長する。
【００３４】
しかしながら、従来の圧縮伸長装置１０１は、図１０（１）のようにサブブロックデータＡ〜Ｄの順で配置された圧縮前のデータを、図１０（２）に示すように、この配置順のまま圧縮していた。そして、従来では、サブブロックデータＡ〜Ｄの順でそのまま圧縮データが転送されていたため、最初の転送データＦｂ１には先頭のサブブロックデータＡの圧縮データしか含まれていなかった。そして、従来の圧縮伸長装置１０１では、サブブロックデータＡの外部メモリ１５１への転送が終了しないとサブブロックデータＢの転送が行なわれなかった。そして、従来の圧縮伸長装置１０１では、バス１５０を介して外部メモリ１５１から読み出される伸長対象の転送データもサブブロックＡ〜Ｄの順で順次読み出されていた。
【００３５】
すなわち、図８の矢印Ｙ１ａのようにサブブロックデータＡが外部メモリ１５１から全て読み出された４サイクル目でないと、矢印Ｙ１ｂに示すようにサブブロックデータＢのデータの読み出しは行なわれなかった。同様に、サブブロックデータＢが外部メモリ１５１から全て読み出された８サイクル目でないと、矢印１ｃに示すようにサブブロックデータＣのデータの読み出しは行なわれず、サブブロックデータＣが外部メモリ１５１から全て読み出された１２サイクル目でないと、矢印Ｙ１ｄに示すようにサブブロックデータＤのデータの読み出しは行なわれなかった。したがって、従来では、サブブロックデータＡに対応する伸長器１７１ａは、最初に読み出した転送データにサブブロックデータＡの圧縮データが含まれるため、図８の矢印Ｙ２ａに示すように、０サイクル目からサブブロックデータＡの伸長処理を行なうことができる。すなわち、伸長器１７１ａは０サイクル目からサブブロックデータＡの伸長処理を開始して６４サイクル目に終了することができる。これに対し、サブブロックデータＢ〜Ｄに対応する伸長器１７１ｂ〜１７１ｄは、最初に読み出される転送データにサブブロックデータＢ〜Ｄの圧縮データが含まれていないため、伸長対象の圧縮データを０サイクル目で取得することができず、０サイクル目から伸長処理を行なうことができなかった。具体的には、伸長器１７１ｂは矢印Ｙ２ｂに示すように４サイクルまでは待機して、サブブロックデータＢの圧縮データを含む転送データを読み出せる４サイクル目からサブブロックデータＢの伸長処理を開始するため、６８サイクル目で全てのサブブロックデータＢの圧縮データの伸長処理を終了する。そして、伸長器１７１ｃは矢印Ｙ２ｃに示すように、８サイクルまでは待機して、サブブロックデータＣの圧縮データを含む転送データを読み出せる８サイクル目からサブブロックデータＣの伸長処理を開始し７２サイクル目でサブブロックデータＣの伸長処理を終了する。また、伸長器１７１ｄは矢印Ｙ２ｄに示すように１２サイクルまでは待機して、サブブロックデータＤの圧縮データを含む転送データを読み出せる１２サイクル目からサブブロックデータＤの伸長処理を開始して、７６サイクル目でサブブロックデータＤの伸長処理を終了する。
【００３６】
このため、従来では、サブブロックデータＡ〜Ｄで構成されるブロックデータＧを伸長するまでに、伸長処理そのものに必要になる８ビット×８画素分の６４ビットのサイクルに加えて、各伸長器１７１ｂ〜１７１ｄによる最大１２サイクル分の待機によって、７６サイクルもの処理時間が必要となる。このように、従来では、伸長器がサブブロックデータ数と同数設けられていた場合であっても、少なくともサブブロックデータＣの転送が完了するまでは、いずれかの伸長器が処理を開始できずに待機するという状況が生じ、並列度が高く保てないことから、ブロックデータ全体の伸長処理に多くのサイクル数を必要とするという問題があった。
【００３７】
これに対し、本第１の実施の形態にかかる圧縮伸長装置１においては、データ組み合わせ回路４０が、最初の伸長タイミングから全伸長器７１ａ〜７１ｄに伸長対象のサブブロックデータＡ〜Ｄの圧縮データが入力されるように、１サイクルあたりの転送データ量をサブブロックデータＡ〜Ｄの個数と同数に均等分割し、圧縮器２１ａ〜２１ｄによってそれぞれ圧縮された各サブブロックデータＡ〜Ｄを同量ずつ各分割領域にそれぞれ割り振った後に各分割領域のデータを組み合わせて転送データを生成し外部メモリ５１に出力する。この結果、圧縮伸長装置１が外部メモリ５１から読み出す６４ビットの転送データには各サブブロックデータＡ〜Ｄの圧縮後のデータが１６ビットずつ含まれることとなる。このため、各伸長器２１ａ〜２１ｄは、最初の転送データが圧縮伸長装置１に到着した０サイクル目から待機することなく伸長処理を並行して開始することができ、いずれの伸長器７１ａ〜７１ｄにおいても、８画素×８ビット分の６４サイクルで伸長処理を終えることができる。したがって、圧縮伸長装置１においては、図８に示すように、従来よりも、伸長処理を１２サイクル分早く終了することが可能になる。
【００３８】
このように、本第１の実施の形態では、１サイクルあたりの転送データ量を分割し、圧縮された複数のサブブロックデータをそれぞれ各分割領域に割り振った後に各分割領域のデータを組み合わせて転送データを生成して、最初の伸長タイミングから全伸長器に伸長対象の圧縮データが入力されるようにしているため、圧縮伸長処理の並列度を高く保持してブロックデータ全体の伸長処理に要するサイクル数を低減することができる。
【００３９】
なお、図１に示す圧縮伸長装置１の圧縮側の要部について詳細に説明する。図１１は、圧縮伸長装置１の圧縮側の要部を示すブロック図である。図１１に示すように、圧縮後バッファ３０は、圧縮器２１ａ〜２１ｄにそれぞれ対応する複数の圧縮後バッファ３１ａ〜３１ｄを備え、対応する圧縮器２１ａ〜２１ｄが圧縮したデータを一時的に記憶する。
【００４０】
まず、圧縮前バッファ１０には圧縮対象の画素データのサブブロックデータ全体が格納される。そして、４つの圧縮器２１ａ〜２１ｄは、対応するサブブロックデータＡ〜Ｄのデータをそれぞれ圧縮前バッファ１０から読み出して４つのサブブロックデータＡ〜Ｄを並列に圧縮する。たとえば最初の圧縮処理においては、圧縮器２１ａは画素０のデータを読み出し、圧縮器２１ｂは画素６４のデータを読み出し、圧縮器２１ｃは画素１２８のデータを読み出し、圧縮器２１ｄは画素１９２のデータを読み出す。
【００４１】
次いで、それぞれの圧縮器２１ａ〜２１ｄで圧縮された各データは、それぞれ圧縮器２１ａ〜２１ｄに対応する圧縮後バッファ３１ａ〜３１ｄに格納される。圧縮スループットは、１サイクルあたり１画素であるため、圧縮前バッファ１０からは圧縮器２１ａ〜２１ｄごとに、１サイクルあたり８ビットの転送スループットがあればよい。そして、圧縮後の画素は最大１５ビットであるため、圧縮器２１ａ〜２１ｄから各圧縮後バッファ３１ａ〜３１ｄへは、１サイクルあたり１５ビットを転送する必要がある。
【００４２】
つぎに、圧縮後バッファ３１ａ〜３１ｄから読み出したサブブロックデータＡ〜Ｄの各圧縮データを、データ組み合わせ回路４０が、上述したように各分割領域にそれぞれ１６ビットずつ割り振った転送データに生成し、バスへ書き出しを行う。バスのバースト転送は、１サイクルあたり６４ビットであるため、４個の圧縮後バッファ３１ａ〜３１ｄからは、６４ビットを４で割った１６ビット／サイクルの転送スループットが必要となる。ここで、圧縮器２１ａ〜２１ｄから圧縮後バッファ３１ａ〜３１ｄへのデータの供給は、最小で１サイクルあたり１ビットであるため、圧縮後バッファ３１ａ〜３１ｄに、十分な量もしくはサブブロックデータ全体分の圧縮データを貯めてからバス５０への転送を開始する。なお、図１２に示すように、データ組み合わせ回路４０は、各圧縮後バッファ３１ａ〜３１ｄから出力された１６ビットのデータを６４ビットの転送データＦｋに合成してから、バス５０へ出力する。
【００４３】
次いで、圧縮伸長装置１の伸長側の機構について詳細に説明する。図１３は、圧縮伸長装置１の伸長側の要部を示すブロック図である。図１３に示すように、伸長前バッファ６０は、伸長器７１ａ〜７１ｄにそれぞれ対応する複数の伸長前バッファ６１ａ〜６１ｄを備え、バス５０を介して外部メモリ５１から読み出されたデータであって、対応する伸長器７１ａ〜７１ｄの伸長対象となるデータを一時的に記憶する。
【００４４】
バス５０から転送されてきた６４ビットの転送データのうち、０〜１５ビットが伸長前バッファ６１ａに格納され、１６〜３１ビットが伸長前バッファ６１ｂに格納され、３２〜４７ビットが伸長前バッファ６１ｃに、４８〜６３ビットが伸長前バッファ６１ｄに格納される。各伸長器７１ａ〜７１ｄは、対応する伸長前バッファ６１ａ〜６１ｄから１６ビットの圧縮データを取り出して伸長した後に、各伸長前バッファ６１ａ〜６１ｄから次に伸長対象となる１６ビットの圧縮データを取り出すという繰り返しで伸長処理を行う。そして、データ配置回路８０は、伸長器７１ａ〜７１ｄによって伸長された各画素データに対して、それぞれの画素データが圧縮前のブロックデータＧにおける元の位置に配置されるようにアドレスの変換を行い、伸長後バッファ９０に書き込む。したがって、伸長後バッファ９０内に保持される画素データは圧縮前の画素配置となる。
【００４５】
また、データ配置回路８０は、図１４に示すように、各サブブロックデータＡ〜Ｄにそれぞれ対応するカウンタ８１ａ〜８１ｄおよび加算器８２ａ〜８２ｄを有する。たとえば、伸長器７１ａから出力される伸長後のデータを例に、データ配置回路８０のアドレス変換処理を説明する。
【００４６】
まず、伸長器７１ａの出力イネーブル信号が入力されるとともに、伸長器７１ａによって伸長された画素データであってサブブロックデータＡを構成するライトデータＡが伸長器７１ａから入力される。出力イネーブル信号は、ライトデータＡに対応するライトイネーブル信号Ｓ２となるとともに、信号Ｓ３としてカウンタ８１ａに入力してカウンタ８１ａをインクリメントし、インクリメントしたカウンタ値を信号Ｓ４として加算器８２ａに入力させる。次いで、加算器８２ａでは、伸長後バッファ９０内で、対象となるブロックデータをどの位置に保持するかを示すオフセット値であるブロックオフセットＳ１が入力されると、カウンタ８１ａからの信号Ｓ４と、ライトデータＡに対応するオフセット信号Ｓ５とを加算する。そして、加算器８２ａは、ライトイネーブル信号Ｓ２およびライトデータＡに対応する信号Ｓ７と同期させて、ライトデータＡのアドレス信号Ｓ６を伸長後バッファ９０に出力する。たとえば、データ配置回路８０は、最初に入力された伸長後のデータに対しては、伸長器７１ａから入力されたデータに画素０のアドレスを付与し、伸長器７１ｂから入力されたデータに画素６４のアドレスを付与し、伸長器７１ｃから入力されたデータに画素１２８のアドレスを付与し、伸長器７１ｄから入力されたデータに画素１９２のアドレスを付与する。
【００４７】
このように、データ配置回路８０は、ライトイネーブル信号および実際に伸長された画素データに、この画素データのブロックデータＧにおける元の位置を示すアドレスを付与して、伸長後バッファ９０に出力しているため、伸長器７１ａ〜７１ｂによって伸長された各サブブロックデータを元のブロックデータとなるように配置することが可能になる。
【００４８】
また、本第１の実施の形態においては、圧縮器として４個の圧縮器２１ａ〜２１ｄを設けた圧縮伸長装置１を例に説明したが、圧縮器の個数は必ずしもサブブロックデータＡ〜Ｄの個数と同数の４個でなくてもよく、１〜３個であってもよい。この場合には、圧縮後のデータの蓄積速度が遅くなるだけであるので、圧縮伸長装置の動作処理に特に影響はない。
【００４９】
また、本第１の実施の形態では、図２に示すように、１６画素×４画素のサブブロックデータＡ〜Ｄに分割した場合を例に説明したが、もちろんこれに限らず、たとえば図１５（１）に示すように、８画素×８画素のサブブロックデータＡ´〜Ｄ´に分割した場合にも適用可能である。この場合にも同様に、図１５（２）に示すように、データ組み合わせ回路４０が、１６ビットの各分割領域に、圧縮器２１ａ〜２１ｄによって圧縮された各サブブロックデータＡ´〜Ｄ´を１６ビットずつ割り振るようにデータ配置を行なって、最初の転送データＦｃ１に全てのサブブロックデータＡ´〜Ｄ´のデータを含ませている。なお、この場合には、圧縮器２１ａ〜２１ｄへの圧縮前バッファ１０からのデータ供給時の圧縮前バッファの読み出しアドレスおよびデータ配置回路８０の処理内容が、サブブロックデータＡ´〜Ｄ´に対応するように変化する。具体的には、最初の圧縮処理において、圧縮器２１ａは画素０のデータを読み出し、圧縮器２１ｂは画素８のデータを読み出し、圧縮器２１ｃは画素１２８のデータを読み出し、圧縮器２１ｄは画素１３６のデータを読み出す。そして、データ配置回路８０は、最初に入力された伸長後のデータに対し、伸長器７１ａから入力されたデータに画素０のアドレスを付与し、伸長器７１ｂから入力されたデータに画素８のアドレスを付与し、伸長器７１ｃから入力されたデータに画素１２８のアドレスを付与し、伸長器７１ｄから入力されたデータに画素１３６のアドレスを付与する。
【００５０】
（第２の実施の形態）
つぎに、第２の実施の形態について説明する。本第２の実施の形態は、圧縮後の先頭のサブブロックデータにおけるヘッダと先頭の画素データとを合わせたデータ量をもとに、１サイクルあたりの転送データ量の分割数を設定し、最初の転送データに圧縮された先頭の画素データの全てが含まれるようにして、０サイクル目から伸長処理を開始できるようにしている。
【００５１】
図１６は、本発明の第２の実施の形態にかかる圧縮伸長装置の構成を示すブロック図である。図１６に示すように、本第２の実施の形態にかかる圧縮伸長装置２０１は、図１に示すデータ組み合わせ回路４０に代えてデータ組み合わせ回路２４０を備え、図１に示すデータ配置回路８０に代えてデータ配置回路２８０を備える。
【００５２】
圧縮伸長装置２０１においては、１サイクルあたりの転送データ量の分割数は、圧縮後の先頭のサブブロックデータにおけるヘッダと先頭データとを合わせたデータ量に応じて設定される。データ組み合わせ回路２４０は、設定された１サイクルあたりの転送データ量の分割数がサブブロックデータの個数よりも少ない場合には、前の転送データに割り振られなかったサブブロックデータを次の転送データに割り振り、この割り振り順序で各サブブロックデータの割り振りを繰り返す。データ配置回路２８０は、データ組み合わせ回路２４０の圧縮データの割り振り処理に対応させて、伸長器７１ａ〜７１ｄによって伸長された各サブブロックデータを校正する画素データが、圧縮前のブロックデータＧにおける元の位置に配置されるようにアドレス変換を行なう。
【００５３】
具体的には、図１７（１）に示すように、１６画素×４画素のサイズで分割された４個のサブブロックデータＡ〜Ｄに対し、図１７（２）に示すように、データ組み合わせ回路２４０は、１つの転送データに二つのサブブロックデータのデータを順番に割り振っている。この場合、データ組み合わせ回路２４０は、１サイクルあたりの転送データ量である６４ビットを２個に分割して、各分割領域を３２ビットずつとする。つまり、図１８に示すように、一つの転送データで１つのサブブロックデータあたり３２ビットが割り当てられている。
【００５４】
そして、図１７（２）および図１８に示すように、データ組み合わせ回路２４０は、先頭の転送データＦｄ１の分割領域Ｆｄ１ａには、サブブロックデータＡ〜ＤのうちサブブロックデータＡのヘッダ、画素０の圧縮データ、画素１の圧縮データを割り振り、転送データＦｄ１の分割領域Ｆｄ１ｂには、サブブロックデータＡ〜ＤのうちサブブロックデータＢのヘッダ、画素６４の圧縮データ、画素６５の圧縮データおよび画素６６の圧縮データを割り振る。次いで、データ組み合わせ回路２４０は、次の２番目の転送データＦｄ２の２個の分割領域Ｆｄ２ｃ，Ｆｄ２ｄには、先頭の転送データＦｄ１に割り振られなかったサブブロックデータＣ，Ｄのヘッダおよび画素データを割り振り、次の３番目の転送データＦｄ３の２個の分割領域Ｆｄ３ａ，Ｆｄ３ｂには先頭の転送データＦｄ１と同様にサブブロックデータＡ，Ｂのデータを割り振り、次の４番目の転送データＦｄ４の２個の分割領域Ｆｄ４ｃ，Ｆｄ４ｄには、２番目の転送データＦｄ２と同様にサブブロックデータＣ，Ｄのデータを割り振る。データ組み合わせ回路２４０は、この割り振り順序で各サブブロックデータの各圧縮データの各分割領域への割り振りを繰り返している。したがって、１個のサブブロックデータの圧縮データは、１つおきの転送データに含まれることとなる。
【００５５】
ここで、第１の実施の形態においては、一つの転送データで、１個のサブブロックデータあたり１６ビットが割り当てられていた。この場合には、１個のサブブロックデータへの割り振りが１６ビットであるため、図１９の圧縮後のデータＧａに示すように、ヘッダと先頭の画素０の圧縮データとの合計が１７ビット以上である場合には、先頭の転送データに最初の画素０のデータを全て割り振ることができない。この結果、伸長処理のために最初の転送データを外部メモリ５１から読み出した場合であっても、０サイクル目から伸長処理を開始できず、次の転送データを読み出す１サイクル目まで伸長処理を待機しなければならない。
【００５６】
これに対し、本第２の実施の形態では、図１８に示すように、外部メモリ５１から最初に読み出される転送データの中にサブブロックデータＡの最初の画素の圧縮データが必ず含まれるように、１サイクルあたりの転送データ量の分割数を、圧縮後の先頭のサブブロックデータにおけるヘッダと先頭データとを合わせたデータ量に応じて２個に設定し、１つのサブブロックデータあたり３２ビットを割り当てている。このため、本第２の実施の形態では、ヘッダと先頭の圧縮データとの合計が１７ビット以上である場合であっても、最初の転送データに先頭の画素０の圧縮データを全て割り振ることができる。したがって、図２０の矢印Ｙ２１のサイクル期間において外部メモリ５１から最初に読み出される転送データの中には、サブブロックデータＡの最初の画素の圧縮データとサブブロックデータＢの最初の画素の圧縮データが必ず含まれている。このため、伸長器７１ａ，７１ｂは、サブブロックデータＡとサブブロックデータＢに対して、矢印Ｙ２３ａ，Ｙ２３ｂのように、０サイクル目から伸長処理を開始できる。そして、図２０の矢印Ｙ２２に示すように、２番目に転送されて１サイクル目に到着する転送データにはサブブロックデータＣの最初の画素の圧縮データとサブブロックデータＤの最初の画素の圧縮データが必ず含まれているため、伸長器７１ｃ，７１ｄは、サブブロックデータＣとサブブロックデータＤに対して、矢印Ｙ２３ａ，Ｙ２３ｂのように、この転送データが到着した１サイクル目から伸長処理を開始できる。
【００５７】
さらに、最初の転送データ割り当ての３２ビット中に次に伸長対象となる画素１の圧縮データが全て含まれている場合には、伸長器７１ａ，７１ｂは、画素０に対する伸長処理が終わった後、待機せずとも、そのまま画素１の伸長処理を行なうことができるため、図２０の矢印Ｙ２３ａ，Ｙ２３ｂに示すように、サブブロックデータＡ，Ｂに対し６４サイクル目で伸長処理を完了できる。そして、伸長器７１ｃ，７１ｄは、図２０の矢印２３ｃ，Ｙ２３ｄに示すように、サブブロックデータＣ，Ｄについて６５サイクル目で伸長処理を完了できる。
【００５８】
このように、本第２の実施の形態においては、ヘッダと先頭の画素の圧縮データとをあわせたデータ量が１７ビット以上である場合であっても、最初の転送データに先頭の画素０の圧縮データを全て割り振ることができるため、最初の伸長対象の圧縮データを０サイクル目から伸長可能であることから、圧縮対象の圧縮データの読み出しのために待機することがない。また、本第２の実施の形態では、図２０の矢印Ｙ２３ａ〜Ｙ２３ｄに示すように全てのサブブロックデータＡ〜Ｄの伸長処理を６５サイクルで終了することができることから、図２０の矢印Ｙ２ａ〜Ｙ２ｂに示す７６サイクルで全てのサブブロックデータＡ〜Ｄの伸長処理が終了する従来よりも伸長処理を１１サイクル分早く終了することができる。したがって、本第２の実施の形態においても、第１の実施の形態と同様に、圧縮伸長処理の並列度を高く保持してブロックデータ全体の伸長処理に要するサイクル数を低減することができる。
【００５９】
（第３の実施の形態）
つぎに、第３の実施の形態について説明する。本第３の実施の形態では、圧縮後の先頭のサブブロックデータにおけるヘッダと先頭画素データとを合わせたデータ量をもとに、１サイクルあたりの転送データ量の分割数をサブブロックデータの個数と同数またはサブブロックデータの個数よりも少ない数に選択して、最も少ないサイクルで伸長処理が終了するようにしている。
【００６０】
図２１は、本発明の第３の実施の形態にかかる圧縮伸長装置の構成を示すブロック図である。図２１に示すように、本第３の実施の形態にかかる圧縮伸長装置３０１は、図１に示すデータ組み合わせ回路４０に代えてデータ組み合わせ回路３４０を備え、図１に示すデータ配置回路８０に代えてデータ配置回路３８０を備える。そして、圧縮伸長装置３０１は、図１に示す圧縮伸長装置１と比較し、データ配置選択回路３５０およびデータ振り分け回路３６０をさらに備えた構成を有する。
【００６１】
データ配置選択回路３５０は、圧縮後の先頭のサブブロックデータにおけるヘッダと先頭データとを合わせたデータ量をもとに、１サイクルあたりの転送データ量の分割数をサブブロックデータの個数と同数またはサブブロックデータの個数よりも少ない数に選択する。データ配置選択回路３５０は、圧縮後バッファ３０から、各サブブロックデータの先頭画素の圧縮画素データ長を示す情報を送信されることによって、この情報をもとに１サイクルあたりの転送データ量の分割数を選択する。
【００６２】
具体的には、データ配置選択回路３５０は、圧縮後の先頭のサブブロックデータＡにおけるヘッダと先頭の画素０の圧縮データとを合わせたデータ量が１６ビット以下である場合には、６４ビットの１サイクルあたりの転送データ量の分割数を、サブブロックデータＡ〜Ｄの個数の同数の４個に選択する。この場合には、圧縮後の先頭のサブブロックデータＡにおけるヘッダと先頭の画素０の圧縮データとを合わせたデータ量が１６ビット以下であるため、１サイクルあたりの転送データ量である６４ビットを４個に分割しても、最初の転送データの中に、サブブロックデータＡのヘッダと画素０の圧縮データとを全て含ませることができるためである。これに対し、データ配置選択回路３５０は、圧縮後の先頭のサブブロックデータＡにおけるヘッダと先頭の画素０の圧縮データとを合わせたデータ量が１６ビットよりも多い場合には、６４ビットの１サイクルあたりの転送データ量の分割数を、サブブロックデータＡ〜Ｄの個数よりも少ない２個に選択する。この場合、１サイクルあたりの転送データ量を４個に分割すると最初の転送データの中にサブブロックデータＡのヘッダと画素０の圧縮データとを全て含ませることができないため、６４ビットを２個に分割して一つの分割領域を３２ビットとすることによって、最初の転送データの中にサブブロックデータＡにおけるヘッダと画素０の圧縮データとを確実に全て含ませるようにしている。
【００６３】
このデータ配置選択回路３５０は、図２２に示すように、比較回路３５１ａ，３５１ｂ、クロックで反転するレジスタ３５２および組み合わせ回路３５３を有する。まず、データ配置選択回路３５０には、図２２に示すように、圧縮後バッファ３０によって、サブブロックデータＡの先頭画素の圧縮データ長を示す情報ＬａとサブブロックデータＢの先頭画素の圧縮データ長を示す情報Ｌｂが入力される。そして、比較回路３５１ａは、入力された情報Ｌａをもとに、サブブロックデータＡの先頭画素の圧縮データ長と、１６ビットからヘッダ長（７ビット）を減じた値との大小を比較し、比較結果を出力する。同様に、比較回路３５１ｂは、入力された情報Ｌｂをもとに、サブブロックデータＢの先頭画素の圧縮データ長と、１６ビットからヘッダ長を減じた値との大小を比較し、比較結果を出力する。
【００６４】
そして、組み合わせ回路３５３は、比較回路３５１ａ，３５１ｂから出力された比較結果をもとに、サブブロックデータＡとサブブロックデータＢのいずれにおいても、ヘッダと先頭の圧縮画素データとの合計が１６ビット以下である場合には、１サイクルあたりの転送データ量６４ビットの分割数を４個に選択する選択信号Ｓ１０ａを生成する。この選択信号Ｓ１０ａは、図２３のテーブルＴ１に示すように、いずれのサイクルにおいても、バスへの出力データとして各サブブロックデータＡ〜Ｄの圧縮データを指示するものとなっている。これに対し、組み合わせ回路３５３は、サブブロックデータＡとサブブロックデータＢのいずれか一方でもヘッダと先頭の圧縮画素データとの合計が１６ビットよりも大きい場合には、１サイクルあたりの転送データ量６４ビットの分割数を２個に選択する選択信号Ｓ１０ｂを生成する。組み合わせ回路３５３が、１サイクルあたりの転送データ量６４ビットの分割数を２個に選択する場合には、１クロックごとにデータ配置が異なるため、１クロックごとに反転するレジスタ３５２の値と組み合わせてデータ配置の選択信号Ｓ１０ｂを生成する。この選択信号Ｓ１０ｂは、図２３のテーブルＴ１に示すように、バスへの出力データとして、サイクルでサブブロックデータＡ，Ｂの圧縮データ、または、サブブロックデータＣ，Ｄの圧縮データのいずれかを指示するものとなっている。データ配置選択回路３５０は、生成した選択信号Ｓ１０をデータ組み合わせ回路３４０に出力する。この選択信号Ｓ１０は、圧縮後の転送データに対するデータ組み合わせ処理時に使用される。
【００６５】
データ組み合わせ回路３４０は、データ配置選択回路３５０によって選択された分割数にしたがって、１サイクルあたりの転送データ量を分割して、複数のサブブロックデータの圧縮データをそれぞれ各分割領域に割り振るとともに、１サイクルあたりの転送データ量の分割数を示す分割情報を付与した転送データを生成する。
【００６６】
図２４に示すように、各圧縮後バッファ３１ａ〜３１ｄによって圧縮された各サブブロックデータＡ〜Ｄの圧縮データが１６ビットずつ出力される。たとえば、圧縮後バッファ３１ａからは、ヘッダと先頭の画素０の圧縮データを含む最初の１６ビットの圧縮データＡ０と、次の１６ビットの圧縮データＡ１が出力される。データ組み合わせ回路３４０は、データ配置選択回路３５０から入力された選択信号Ｓ１０が指示する分割数にしたがって、６４ビットの１サイクルあたりの転送データ量を４個または２個に分割する。
【００６７】
データ組み合わせ回路３４０は、データ配置選択回路３５０から選択信号Ｓ１０ａが入力された場合には、図２３のテーブルＴ１に示すように、６４ビットの１サイクルあたりの転送データ量を４個に分割し、各分割領域に各サブブロックデータＡ〜Ｄの圧縮データを１６ビットずつ割り振る。さらに、先頭ビット置換部３４２は、入力された選択信号Ｓ１０ａに対応させて、１サイクルあたりの転送データ量の分割数が４個であることを示す分割情報を生成する。データ組み合わせ回路３４０は、最初に転送する転送データＦｅ１を生成する場合には、各サブブロックデータのヘッダおよび先頭画素の圧縮データが割り振られた各分割領域のデータを組み合わせるとともに、先頭のサブブロックデータＡのヘッダの先頭ビットＦ０ｅに分割情報を組み込むことによって、先頭の転送データＦｅ１を生成する。
【００６８】
そして、データ組み合わせ回路３４０は、データ配置選択回路３５０から選択信号Ｓ１０ｂが入力された場合には、図２３のテーブルＴ１に示すように、６４ビットの１サイクルあたりの転送データ量を２個に分割し、この分割領域にサブブロックデータＡ，Ｂの圧縮データを３２ビットずつ割り振った後に２個の分割領域のデータを組み合わせて最初の転送データを生成する。次に、データ組み合わせ回路３４０は、次の転送データとして、サブブロックデータＣ，Ｄの圧縮データを３２ビットずつ割り振った転送データを生成する。この繰り返しで、一つおきに各サブブロックデータＡ〜Ｄの圧縮データが３２ビットずつ含まれるように各転送データを生成する。さらに、先頭ビット置換部３４２は、入力された選択信号Ｓ１０ｂに対応させて、１サイクルあたりの転送データ量の分割数が２個であることを示す分割情報を生成し、先頭のサブブロックデータＡのヘッダの先頭ビットＦ０ｅに分割情報を組み込んで先頭の転送データＦｅ１を生成する。
【００６９】
データ振り分け回路３６０は、１サイクルあたりの転送データ量の分割数に応じて、外部メモリ５１から読み出された転送データを分割し各伸長器７１ａ〜７１ｄに振り分ける。データ振り分け回路３６０は、データ組合せ回路３４０によって転送データに付与された分割情報をもとに外部メモリ５１から読み出された転送データを分割する。
【００７０】
データ振り分け回路３６０は、図２５に示すように、外部メモリ５１から最初に読み出した転送データＦｅ１の先頭ビットＦ０ｅを分離して取得する分離回路３６２と、取得した先頭ビットに組み込まれた分割情報を参照して、読み出し対象の転送データにおける分割数を示す選択信号Ｓ２０を生成する選択信号生成部３６３とを備え、選択信号生成部３６３によって生成された選択信号Ｓ２０に応じて、転送データを分割各伸長前バッファ６１ａ〜６１ｂに振り分ける。
【００７１】
選択信号生成部３６３は、分割情報が１サイクルあたりの転送データ量の分割数が４個である旨を示す場合には、転送データ量６４ビットの分割数を４個に選択する選択信号Ｓ２０ａを生成する。この選択信号Ｓ２０ａは、図２６のテーブルＴ２に示すように、各転送データは、４個に分割されたものであり、各サイクルごとにバスからの出力データとして各サブブロックデータＡ〜Ｄの圧縮データが含まれていることを指示するものとなっている。データ振り分け回路３６０は、選択信号Ｓ２０ａにしたがって、６４ビットの転送データ量を４個に分割し、各分割領域に含まれる各サブブロックデータＡ〜Ｄの圧縮データを１６ビットずつ、伸長前バッファ６１ａ〜６１ｄに振り分ける。
【００７２】
また、選択信号生成部３６３は、分割情報が１サイクルあたりの転送データ量の分割数が２個である旨を示す場合には、転送データ量６４ビットの分割数を２個に選択する選択信号Ｓ２０ｂを生成する。この選択信号Ｓ２０ｂは、図２６のテーブルＴ２に示すように、各転送データは、２個に分割されたものであり、バス５０からの出力データとして、一つおきに各サブブロックデータＡ〜Ｄの圧縮データが３２ビットずつ含まれていることを指示するものとなっている。データ振り分け回路３６０は、選択信号Ｓ２０ｂにしたがって、最初の転送データを２個に分割し各分割領域に含まれる各サブブロックデータＡ，Ｂの圧縮データを３６ビットずつ伸長前バッファ６１ａ，６１ｂに振り分け、次の転送データを２個に分割し各分割領域に含まれる各サブブロックデータＣ，Ｄの圧縮データを３６ビットずつ伸長前バッファ６１ｃ，６１ｄに振り分け、この繰り返しで、交互に伸長前バッファ６１ａ，６１ｂまたは伸長前バッファ６１ｃ，６１ｄへのデータの振り分けを行なう。また、データ配置回路３８０は、データ振り分け回路３６０による各伸長前バッファ６１ａ〜６１への圧縮データの振り分け処理内容に応じてアドレス変換処理を行なう。
【００７３】
このように、本第３の実施の形態では、最も少ないサイクルで伸長処理が終了するように、圧縮後の先頭のサブブロックデータにおけるヘッダと先頭画素データとを合わせたデータ量をもとに、１サイクルあたりの転送データ量の分割数をサブブロックデータの個数と同数またはサブブロックデータの個数よりも少ない数に選択することによって、ブロックデータ全体の伸長処理に要するサイクル数を低減している。
【符号の説明】
【００７４】
１，１０１，２０１，３０１  圧縮伸長装置、１０，１１０  圧縮前バッファ、２０，１２０  圧縮部、２１ａ〜２１ｄ，１２１ａ〜１２１ｄ  圧縮器、３０，１３０  圧縮後バッファ、４０，２４０，３４０  データ組み合わせ回路、５０，１５０  バス、５１，１５１  外部メモリ、６０，１６０  伸長前バッファ、７０，１７０  伸長部、７１ａ〜７１ｄ，１７１ａ〜１７１ｄ  伸長器、８０，２８０，３８０  データ配置回路、８１ａ〜８１ｄ  カウンタ、８２ａ〜８２ｄ  加算器、９０，１９０  伸長後バッファ、３５０  データ配置選択回路、３６０  データ振り分け回路
【図１】
2011029817.tif 000003
【図２】
2011029817.tif 000004
【図３】
2011029817.tif 000005
【図４】
2011029817.tif 000006
【図５】
2011029817.tif 000007
【図６】
2011029817.tif 000008
【図７】
2011029817.tif 000009
【図８】
2011029817.tif 000010
【図９】
2011029817.tif 000011
【図１０】
2011029817.tif 000012
【図１１】
2011029817.tif 000013
【図１２】
2011029817.tif 000014
【図１３】
2011029817.tif 000015
【図１４】
2011029817.tif 000016
【図１５】
2011029817.tif 000017
【図１６】
2011029817.tif 000018
【図１７】
2011029817.tif 000019
【図１８】
2011029817.tif 000020
【図１９】
2011029817.tif 000021
【図２０】
2011029817.tif 000022
【図２１】
2011029817.tif 000023
【図２２】
2011029817.tif 000024
【図２３】
2011029817.tif 000025
【図２４】
2011029817.tif 000026
【図２５】
2011029817.tif 000027
【図２６】
2011029817.tif 000028