(57)【要約】【課題】複数のＰＥとメモリコントローラ部とラインバッファメモリなどの記憶手段とを利用して簡単構成かつ単純な処理でデータを圧縮伸張することができるデータ圧縮装置、データ伸張装置およびデータ圧縮方法、データ伸張方法を提供する。【解決手段】ＧＰ２が、隣接する左隣の汎用レジスタの値と比較して同じ値の場合は制御コードを０に、異なる値の場合は制御コードを１に設定し、その制御コードに基づいて汎用レジスタのデータをラインバッファメモリ７にライトし、ライトしたデータを倍率２倍で汎用レジスタに書き戻し、制御コードの０の連続数をカウントしてラインバッファメモリ７にライトし、そのカウント数を倍率２倍で汎用レジスタに書き戻しデータとカウント数とが交互に並ぶように合成して圧縮データを生成する。【選択図】図４
2012014576.tif 000002
【特許請求の範囲】
【請求項１】
複数の汎用レジスタが設けられているＰＥ（Processor Element）であって、予めアドレスが付与された複数の前記ＰＥと、前記汎用レジスタにアクセスするとともに記憶手段に対して前記汎用レジスタのデータをリードまたはライトするメモリコントローラ部と、を有したデータ圧縮装置において、
前記複数の汎用レジスタに、同じアドレスの前記ＰＥの汎用レジスタ上のデータに対応させた制御コードを格納する制御コード格納領域を設け、
前記メモリコントローラ部が、前記制御コード格納領域を参照して前記制御コードに従い前記汎用レジスタ上のデータを前記記憶手段にライト可能とし、前記汎用レジスタ上のデータを前記ＰＥのアドレス順に読み出して該データが予め定めた特定の値の場合にカウントアップするとともに他の値の場合に前記特定の値のカウント値を前記記憶手段にライト可能とするように構成され、
一つの前記ＰＥの前記汎用レジスタ上のデータと前記アドレスが隣接する前記ＰＥの汎用レジスタ上のデータとを比較して一致する場合に前記制御コードを前記特定の値に設定させて不一致の場合に前記制御コードを前記他の値に設定させ、次に、前記メモリコントローラ部に、前記制御コードに従って前記ＰＥの前記アドレス順に前記汎用レジスタ上のデータを前記記憶手段にライトさせ、次に、前記メモリコントローラ部に、該ライトしたデータを前記記憶手段からリードさせて前記ＰＥの前記汎用レジスタ上に格納させ（以下、この格納されたデータを書き戻しデータという）、次に、前記メモリコントローラ部に、前記制御コードを前記制御コード格納領域から順次読み出しながら前記特定の値の数をカウントし前記他の値が読み出された場合に前記特定の値のカウント値を前記記憶手段にライトさせ、次に、前記メモリコントローラ部に、前記記憶手段にライトした前記特定の値のカウント値をリードして前記書き戻しデータとは異なる前記汎用レジスタ上に格納させ、次に、前記メモリコントローラ部に、前記書き戻しデータが格納されている前記汎用レジスタのデータと前記特定の値のカウント値が格納されている前記汎用レジスタのデータとを交互に並べるように合成させて圧縮データとして前記書き戻しデータと前記カウント値が格納されている前記汎用レジスタと異なる前記汎用レジスタに格納させて前記汎用レジスタ上のデータを圧縮するデータ圧縮制御部を有している
ことを特徴とするデータ圧縮装置。
【請求項２】
前記メモリコントローラ部が、前記書き戻しデータを前記ＰＥの前記アドレス順に同じデータを２回ずつ重複して前記ＰＥの前記汎用レジスタ上に格納可能に構成されているとともに、前記記憶手段から読み出した前記特定の値のカウント値を前記ＰＥの前記アドレス順に同じデータを２回ずつ重複して前記ＰＥの前記汎用レジスタ上に格納可能に構成されていることを特徴とする請求項１に記載のデータ圧縮装置。
【請求項３】
前記メモリコントローラ部が、前記書き戻しデータを前記ＰＥの前記アドレス順で１つおきの前記ＰＥの前記汎用レジスタ上に格納可能に構成されているとともに、前記記憶手段から読み出した前記特定の値のカウント値を前記ＰＥの前記アドレス順で１つおきの前記ＰＥの前記汎用レジスタ上に格納可能に構成され、前記書き戻しデータが格納されている前記ＰＥのアドレスと前記特定の値のカウント値が格納されている前記ＰＥのアドレスとが１ずれていることを特徴とする請求項１に記載のデータ圧縮装置。
【請求項４】
請求項１乃至３のうちいずれか一項に記載のデータ圧縮装置で圧縮されたデータを伸張するデータ伸張装置であって、
前記メモリコントローラ部が、前記圧縮データが格納されている前記汎用レジスタを読み出して、該汎用レジスタ上の前記書き戻しデータを前記カウント値の数分連続して生成するように構成され、
前記メモリコントローラ部に、前記圧縮データが格納されている前記汎用レジスタを読み出させて、該汎用レジスタ上の前記書き戻しデータを前記カウント値の数分連続して生成させて伸張データとして前記記憶手段にライトさせる前記データ伸張制御部を有している
ことを特徴とするデータ伸張装置。
【請求項５】
複数の汎用レジスタが設けられているＰＥ（Processor Element）であって、予めアドレスが付与された複数の前記ＰＥと、前記汎用レジスタにアクセスするとともに記憶手段に対して前記汎用レジスタのデータをリードまたはライトするメモリコントローラ部と、を有したデータ処理装置のデータ圧縮方法において、
一つの前記ＰＥの前記汎用レジスタ上のデータと前記アドレスが隣接する前記ＰＥの汎用レジスタ上のデータとを比較して一致する場合に当該データに対応して設定される制御コードを予め定めた特定の値に設定して不一致の場合に前記制御コードを他の値に設定する第一の工程と、
前記メモリコントローラ部が、前記制御コードが前記他の値が設定されている前記ＰＥの前記汎用レジスタ上のデータを前記アドレス順に前記記憶手段にライトする第二の工程と、
前記メモリコントローラ部が、前記第二の工程でライトしたデータを前記記憶手段からリードして前記ＰＥの前記汎用レジスタ上に格納する（以下、この格納されたデータを書き戻しデータという）第三の工程と、
前記メモリコントローラ部が、前記制御コードを前記制御コード格納領域から順次読み出しながら前記特定の値の数をカウントし前記他の値が読み出された場合に前記特定の値のカウント値を前記記憶手段にライトする第四の工程と、
前記メモリコントローラ部が、前記記憶手段にライトした前記特定の値のカウント値をリードして前記書き戻しデータとは異なる前記汎用レジスタ上に格納する第五の工程と、
前記メモリコントローラ部が、前記書き戻しデータが格納されている前記汎用レジスタのデータと前記特定の値のカウント値が格納されている前記汎用レジスタのデータとを交互に並べるように合成させて圧縮データとして前記書き戻しデータと前記カウント値が格納されている前記汎用レジスタと異なる前記汎用レジスタに格納する第六の工程と、
を順次実行することを特徴とするデータ圧縮方法。
【請求項６】
前記メモリコントローラ部が、前記書き戻しデータを前記ＰＥの前記アドレス順に同じデータを２回ずつ重複して前記ＰＥの前記汎用レジスタ上に格納するとともに、前記記憶手段から読み出した前記特定の値のカウント値を前記ＰＥの前記アドレス順に同じデータを２回ずつ重複して前記ＰＥの前記汎用レジスタ上に格納することを特徴とする請求項５に記載のデータ圧縮方法。
【請求項７】
前記メモリコントローラ部が、前記書き戻しデータを前記ＰＥの前記アドレス順で１つおきの前記ＰＥの前記汎用レジスタ上に格納するとともに、前記記憶手段から読み出した前記特定の値のカウント値を前記ＰＥの前記アドレス順で１つおきの前記ＰＥの前記汎用レジスタ上に格納し、前記書き戻しデータが格納されている前記ＰＥのアドレスと前記特定の値のカウント値が格納されている前記ＰＥのアドレスとが１ずれていることを特徴とする請求項５に記載のデータ圧縮方法。
【請求項８】
請求項５乃至７のうちいずれか一項に記載のデータ圧縮方法で圧縮されたデータを伸張するデータ伸張方法であって、
前記メモリコントローラ部が、前記圧縮データが格納されている前記汎用レジスタを読み出して、該汎用レジスタ上の前記書き戻しデータを前記カウント値の数分連続して生成し、
前記メモリコントローラ部が、前記圧縮データが格納されている前記汎用レジスタを読み出して、該汎用レジスタ上の前記書き戻しデータを前記カウント値の数分連続して生成されて伸張データとして前記記憶手段にライトする
ことを特徴とするデータ伸張方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つの演算命令により複数の画像データ等を並列処理するＳＩＭＤ（Single Instruction-stream Multiple Data-stream）型マイクロプロセッサを用いてデータ圧縮および伸張を行うデータ圧縮装置、データ伸張装置およびデータ圧縮方法、データ伸張方法に関する。
【背景技術】
【０００２】
近年、デジタル複写機やファクリミリ装置等において、画素数を増加させて解像度を上げたり、或いはカラー対応にするなど画質の向上が図られている。 そして、この画質の向上に伴い処理すべきデータ数が増加している。
【０００３】
ところで、デジタル複写機やファクリミリ装置等におけるデータ処理は全ての画素に対して同じ演算処理を施すことが一般的に多い。 そこで、１つの命令で複数のデータに対して同時に同じ演算処理を行うＳＩＭＤ方式のマイクロプロセッサが用いられるようになっている。 通常、ＳＩＭＤ方式のマイクロプロセッサを用いて画像処理を行う場合、主走査方向にプロセッサエレメント（ＰＥ）を展開する。
【０００４】
この種のＳＩＭＤ型マイクロプロセッサとして、特許文献１に記載の信号処理装置が提案されている。特許文献１においては、シングルポートメモリ（ＲＡＭ）を用いることで回路規模の増加を抑えながら、同時に変倍機能もメモリコントローラに内蔵可能とした簡単な構成のＳＩＭＤ型マイクロプロセッサを用いた信号処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、高画質化、高速化が進むことによって扱う画像データ量も飛躍的に大きくなってきている。例えば、印字解像度という観点では、従来は３００ｄｐｉ（dot per inch）程度であったが、最新の記録装置では３６００ｄｐｉという機器も登場し、従来に比べて１００倍以上のデータ量が必要となっている。 従って、データ帯域は従来の１００倍以上必要な状況になってきており、データ圧縮技術の重要性が高まってきている。
【０００６】
画像劣化のない可逆圧縮技術としては、ファクシミリ等で用いられるＭＨ（ハフマン符号化方式：一次元圧縮法によるＧ３ファクシミリの標準符号化方式）、ＭＲ（二次元圧縮法によるＧ３ファクシミリではオプションの符号化方式）、ＭＭＲ（ＭＲ符号化方式の変形で、Ｇ４ファクシミリの標準符号化方式）や、コンピュータで扱うテキストファイルやバイナリファイルに用いられるＬＺ方式等が挙げられる。 また、国際標準である算術符号化を用いたＪＰＥＧ（Joint Photographic Experts Group）方式やＪＢＩＧ（Joint Bi-level Image Experts Group）方式もある。
【０００７】
しかしながら、いずれも画像データを順に処理する逐次的な処理を必要としており、特許文献１などに記載されたＳＩＭＤ型マイクロプロセッサで実現するには容易ではなく不向きな圧縮形態であるという問題があった。
【０００８】
本発明はかかる問題を解決することを目的としている。
【０００９】
すなわち、本発明は、複数のＰＥとメモリコントローラ部とラインバッファメモリなどの記憶手段とを利用して簡単構成かつ単純な処理でデータを圧縮および伸張することができるデータ圧縮装置、データ伸張装置およびデータ圧縮方法、データ伸張方法を提供することを目的としている。
【課題を解決するための手段】
【００１０】
上記課題を解決するためになされた請求項１に記載された発明は、複数の汎用レジスタが設けられているＰＥ（Processor Element）であって、予めアドレスが付与された複数の前記ＰＥと、前記汎用レジスタにアクセスするとともに記憶手段に対して前記汎用レジスタのデータをリードまたはライトするメモリコントローラ部と、を有したデータ圧縮装置において、前記複数の汎用レジスタに、同じアドレスの前記ＰＥの汎用レジスタ上のデータに対応させた制御コードを格納する制御コード格納領域を設け、前記メモリコントローラ部が、前記制御コード格納領域を参照して前記制御コードに従い前記汎用レジスタ上のデータを前記記憶手段にライト可能とし、前記汎用レジスタ上のデータを前記ＰＥのアドレス順に読み出して該データが予め定めた特定の値の場合にカウントアップするとともに他の値の場合に前記特定の値のカウント値を前記記憶手段にライト可能とするように構成され、一つの前記ＰＥの前記汎用レジスタ上のデータと前記アドレスが隣接する前記ＰＥの汎用レジスタ上のデータとを比較して一致する場合に前記制御コードを前記特定の値に設定させて不一致の場合に前記制御コードを前記他の値に設定させ、次に、前記メモリコントローラ部に、前記制御コードに従って前記ＰＥの前記アドレス順に前記汎用レジスタ上のデータを前記記憶手段にライトさせ、次に、前記メモリコントローラ部に、該ライトしたデータを前記記憶手段からリードさせて前記ＰＥの前記汎用レジスタ上に格納させ（以下、この格納されたデータを書き戻しデータという）、次に、前記メモリコントローラ部に、前記制御コードを前記制御コード格納領域から順次読み出しながら前記特定の値の数をカウントし前記他の値が読み出された場合に前記特定の値のカウント値を前記記憶手段にライトさせ、次に、前記メモリコントローラ部に、前記記憶手段にライトした前記特定の値のカウント値をリードして前記書き戻しデータとは異なる前記汎用レジスタ上に格納させ、次に、前記メモリコントローラ部に、前記書き戻しデータが格納されている前記汎用レジスタのデータと前記特定の値のカウント値が格納されている前記汎用レジスタのデータとを交互に並べるように合成させて圧縮データとして前記書き戻しデータと前記カウント値が格納されている前記汎用レジスタと異なる前記汎用レジスタに格納させて前記汎用レジスタ上のデータを圧縮するデータ圧縮制御部を有していることを特徴とするデータ圧縮装置である。
【００１１】
請求項２に記載された発明は、請求項１に記載された発明において、前記メモリコントローラ部が、前記書き戻しデータを前記ＰＥの前記アドレス順に同じデータを２回ずつ重複して前記ＰＥの前記汎用レジスタ上に格納可能に構成されているとともに、前記記憶手段から読み出した前記特定の値のカウント値を前記ＰＥの前記アドレス順に同じデータを２回ずつ重複して前記ＰＥの前記汎用レジスタ上に格納可能に構成されていることを特徴とするものである。
【００１２】
請求項３に記載された発明は、請求項１に記載された発明において、前記メモリコントローラ部が、前記書き戻しデータを前記ＰＥの前記アドレス順で１つおきの前記ＰＥの前記汎用レジスタ上に格納可能に構成されているとともに、前記記憶手段から読み出した前記特定の値のカウント値を前記ＰＥの前記アドレス順で１つおきの前記ＰＥの前記汎用レジスタ上に格納可能に構成され、前記書き戻しデータが格納されている前記ＰＥのアドレスと前記特定の値のカウント値が格納されている前記ＰＥのアドレスとが１ずれていることを特徴とするものである。
【００１３】
請求項４に記載された発明は、請求項１乃至３のうちいずれか一項に記載のデータ圧縮装置で圧縮されたデータを伸張するデータ伸張装置であって、前記メモリコントローラ部が、前記圧縮データが格納されている前記汎用レジスタを読み出して、該汎用レジスタ上の前記書き戻しデータを前記カウント値の数分連続して生成するように構成され、前記メモリコントローラ部に、前記圧縮データが格納されている前記汎用レジスタを読み出させて、該汎用レジスタ上の前記書き戻しデータを前記カウント値の数分連続して生成させて伸張データとして前記記憶手段にライトさせる前記データ伸張制御部を有していることを特徴とするデータ伸張装置である。
【００１４】
請求項５に記載された発明は、複数の汎用レジスタが設けられているＰＥ（Processor Element）であって、予めアドレスが付与された複数の前記ＰＥと、前記汎用レジスタにアクセスするとともに記憶手段に対して前記汎用レジスタのデータをリードまたはライトするメモリコントローラ部と、を有したデータ処理装置のデータ圧縮方法において、一つの前記ＰＥの前記汎用レジスタ上のデータと前記アドレスが隣接する前記ＰＥの汎用レジスタ上のデータとを比較して一致する場合に当該データに対応して設定される制御コードを予め定めた特定の値に設定して不一致の場合に前記制御コードを他の値に設定する第一の工程と、前記メモリコントローラ部が、前記制御コードが前記他の値が設定されている前記ＰＥの前記汎用レジスタ上のデータを前記アドレス順に前記記憶手段にライトする第二の工程と、前記メモリコントローラ部が、前記第二の工程でライトしたデータを前記記憶手段からリードして前記ＰＥの前記汎用レジスタ上に格納する（以下、この格納されたデータを書き戻しデータという）第三の工程と、前記メモリコントローラ部が、前記制御コードを前記制御コード格納領域から順次読み出しながら前記特定の値の数をカウントし前記他の値が読み出された場合に前記特定の値のカウント値を前記記憶手段にライトする第四の工程と、前記メモリコントローラ部が、前記記憶手段にライトした前記特定の値のカウント値をリードして前記書き戻しデータとは異なる前記汎用レジスタ上に格納する第五の工程と、前記メモリコントローラ部が、前記書き戻しデータが格納されている前記汎用レジスタのデータと前記特定の値のカウント値が格納されている前記汎用レジスタのデータとを交互に並べるように合成させて圧縮データとして前記書き戻しデータと前記カウント値が格納されている前記汎用レジスタと異なる前記汎用レジスタに格納する第六の工程と、を順次実行することを特徴とするデータ圧縮方法である。
【００１５】
請求項６に記載された発明は、請求項１に記載された発明において、前記メモリコントローラ部が、前記書き戻しデータを前記ＰＥの前記アドレス順に同じデータを２回ずつ重複して前記ＰＥの前記汎用レジスタ上に格納するとともに、前記記憶手段から読み出した前記特定の値のカウント値を前記ＰＥの前記アドレス順に同じデータを２回ずつ重複して前記ＰＥの前記汎用レジスタ上に格納することを特徴とするものである。
【００１６】
請求項７に記載された発明は、請求項１に記載された発明において、前記メモリコントローラ部が、前記書き戻しデータを前記ＰＥの前記アドレス順で１つおきの前記ＰＥの前記汎用レジスタ上に格納するとともに、前記記憶手段から読み出した前記特定の値のカウント値を前記ＰＥの前記アドレス順で１つおきの前記ＰＥの前記汎用レジスタ上に格納し、前記書き戻しデータが格納されている前記ＰＥのアドレスと前記特定の値のカウント値が格納されている前記ＰＥのアドレスとが１ずれていることを特徴とするものである。
【００１７】
請求項８に記載された発明は、請求項５乃至７のうちいずれか一項に記載のデータ圧縮方法で圧縮されたデータを伸張するデータ伸張方法であって、前記メモリコントローラ部が、前記圧縮データが格納されている前記汎用レジスタを読み出して、該汎用レジスタ上の前記書き戻しデータを前記カウント値の数分連続して生成し、前記メモリコントローラ部が、前記圧縮データが格納されている前記汎用レジスタを読み出して、該汎用レジスタ上の前記書き戻しデータを前記カウント値の数分連続して生成されて伸張データとして前記記憶手段にライトすることを特徴とするデータ伸張方法である。
【発明の効果】
【００１８】
請求項１に記載の発明によれば、メモリコントローラ部に簡単な構成の回路を追加し、例えばグローバルプロセッサなどをデータ圧縮伸張制御部として動作させることで、複数のＰＥとメモリコントローラ部と記憶手段とを用いて効率的にデータの圧縮を行うことができる。
【００１９】
請求項２に記載の発明によれば、メモリコントローラが、書き戻しデータとカウント値ともにＰＥのアドレス順に同じデータを２回ずつ重複してＰＥの汎用レジスタ上に格納しているので、例えば、奇数アドレスのＰＥの汎用レジスタを書き戻しデータ、偶数アドレスのＰＥの汎用レジスタをカウント値として合成すれば、書き戻しアドレスとカウント値とを交互に並べることができる。
【００２０】
請求項３に記載の発明によれば、メモリコントローラが、書き戻しデータとカウント値ともにＰＥのアドレス順で１つおきのＰＥの汎用レジスタ上に格納し、書き戻しデータとカウント値はアドレスが１ずれているので、例えば、書き戻しデータを奇数アドレスのＰＥの汎用レジスタに格納して、カウント値を偶数アドレスのＰＥの汎用レジスタに格納すれば、それらを単純に合成するだけで、書き戻しアドレスとカウント値とを交互に並べることができる。
【００２１】
請求項４に記載の発明によれば、メモリコントローラ部に簡単な構成の回路を追加し、例えばグローバルプロセッサなどをデータ圧縮伸張制御部として動作させることで、複数のＰＥとメモリコントローラ部と記憶手段とを用いて効率的にデータの伸張を行うことができる。
【００２２】
請求項５に記載の発明によれば、データに制御コードを付加し、メモリコントローラを用いたリードライト処理を行うことで、複数のＰＥとメモリコントローラ部と記憶手段とを用いてデータの圧縮を効率的に行うことができる。
【００２３】
請求項６に記載の発明によれば、メモリコントローラが、書き戻しデータとカウント値ともにＰＥのアドレス順に同じデータを２回ずつ重複してＰＥの汎用レジスタ上に格納しているので、例えば、奇数アドレスのＰＥの汎用レジスタを書き戻しデータ、偶数アドレスのＰＥの汎用レジスタをカウント値として合成すれば、書き戻しアドレスとカウント値とを交互に並べることができる。
【００２４】
請求項７に記載の発明によれば、メモリコントローラが、書き戻しデータとカウント値ともにＰＥのアドレス順で１つおきのＰＥの汎用レジスタ上に格納し、書き戻しデータとカウント値はアドレスが１ずれているので、例えば、書き戻しデータを奇数アドレスのＰＥの汎用レジスタに格納して、カウント値を偶数アドレスのＰＥの汎用レジスタに格納すれば、それらを単純に合成するだけで、書き戻しアドレスとカウント値とを交互に並べることができる。
【００２５】
請求項８に記載の発明によれば、データに制御コードを付加し、メモリコントローラを用いたリードライト処理を行うことで、複数のＰＥとメモリコントローラ部と記憶手段とを用いてデータの伸張を効率的に行うことができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施形態にかかるデータ伸張装置およびデータ伸張装置の構成図である。
【図２】図１に示されたＧＰとＰＥコアの一部分を抜き出した概略図である。
【図３】図１に示されたメモリコントローラの構成図である。
【図４】図１に示されたデータ圧縮装置のデータ圧縮動作を示したフローチャートである。
【図５】汎用レジスタに圧縮前のデータを格納した状態を示した説明図である。
【図６】図５に示された汎用レジスタに制御コードを加えた状態を示した説明図である。
【図７】データをラインバッファメモリから書き戻した状態を示した説明図である。
【図８】制御コードをラインバッファメモリから書き戻した状態を示した説明図である。
【図９】データと制御コードを合成した状態を示した説明図である。
【図１０】図１に示されたデータ伸張装置のデータ伸張動作を示したフローチャートである。
【発明を実施するための形態】
【００２７】
以下、本発明の一実施形態を、図１ないし図１０を参照して説明する。図１は、本発明の一実施形態にかかるデータ圧縮装置およびデータ伸張装置の構成図である。図２は、図１に示されたＧＰとＰＥコアの一部分を抜き出した概略図である。図３は、図１に示されたメモリコントローラの構成図である。図４は、図１に示されたデータ圧縮装置のデータ圧縮動作を示したフローチャートである。図５は、汎用レジスタに圧縮前のデータを格納した状態を示した説明図である。図６は、図５に示された汎用レジスタに制御コードを加えた状態を示した説明図である。図７は、データをラインバッファメモリから書き戻した状態を示した説明図である。図８は、制御コードをラインバッファメモリから書き戻した状態を示した説明図である。図９は、データと制御コードを合成した状態を示した説明図である。図１０は、図１に示されたデータ伸張装置のデータ伸張動作を示したフローチャートである。
【００２８】
図１に本発明の一実施形態にかかるデータ圧縮装置およびデータ伸張装置としてのデータ圧縮伸張装置１を示す。図１に示したデータ圧縮伸張装置１は、グローバルプロセッサ（ＧＰ）２と、ＰＥコア３と、ＰＥＩＦ４と、メモリコントローラ６と、ラインバッファメモリ７と、を備えている。
【００２９】
データ圧縮制御部としてのＧＰ２は、所謂ＳＩＳＤ（Single Instruction-stream, Single Data-stream）タイプのプロセッサである。ＧＰ２にはＳＩＭＤ型マイクロプロセッサ８のプログラム格納用のプログラムＲＡＭと演算データ格納用のデータＲＡＭとが内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ３レジスタ、レジスタ退避、復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）、同様に割り込み（ＩＲＱ）時とマスク不可割り込み（ＮＭＩ）時の分岐元アドレスを保持するＬＩ、ＬＮレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）を備えている。これらのレジスタと図示していない命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、ＧＰ演算制御回路を使用してＧＰ２内で実行される命令であるＧＰ命令の実行が行われる。また、ＰＥコア３に対する命令であるＰＥ命令実行時は命令デコーダ、レジスタファイル制御回路、ＰＥ演算制御回路を使用して、ＰＥコア３内のレジスタファイル３１の制御と演算アレイ３２の制御を行う。
【００３０】
ＰＥコア３は、図２に示すようにレジスタファイル３１と、演算アレイ３２と、から構成されている。レジスタファイル３１は、ＰＥ命令で処理されるデータを保持している。ＰＥ命令は、ＳＩＭＤタイプの命令であり、レジスタファイル３１に保持されている複数のデータに対して同時に同じ処理を行う。このレジスタファイル３１からのデータの読み出し／書き込みの制御はＧＰ２からの制御によって行われる。読み出されたデータは演算アレイ３２に送られ、演算アレイ３２での演算処理後に再度レジスタファイル３１に書き込まれる。また、レジスタファイル３１は、ＧＰ２とＰＥコア３と後述するＰＥＩＦ４とから構成されるプロセッサコア５の外部からのアクセスが可能であり、ＧＰ２の制御とは別に外部から特定のレジスタ３３に対して読み出し／書き込みが行われる。
【００３１】
レジスタファイル３１には、１つのＰＥ単位に８ビットの汎用レジスタとしてのレジスタ３３を例えば３２本備えており、ＰＥが例えば５１２ＰＥの場合は５１２組分がアレイ構成になっている。３２本のレジスタ３３は、１つのＰＥ内でＲ０、Ｒ１、Ｒ２、．．．Ｒ３１と呼び区別される。それぞれのレジスタ３３は演算アレイ３２に対して１つの読み出しポートと１つの書き込みポートとを備えており、８ビットのリード／ライト兼用のバスで演算アレイ３２からアクセスされる。３２本のレジスタ３３の複数本をプロセッサコア５の外部からアクセス可能として、外部からクロックとアドレス、リード/ライト制御を入力することで任意のレジスタ３３を読み書きできるようにしている。レジスタ３３の外部からのアクセスは、１つの外部ポートで各ＰＥの１つのレジスタ３３がアクセス可能であり外部から入力されたアドレスでＰＥの番号（５１２ＰＥの場合は０〜５１１）を指定する。このポートを使用して後述するメモリコントローラ６がラインバッファメモリ７とのアクセスを行う。したがって複数の外部ポートを設けることで一度に複数のＰＥのレジスタ３３がアクセス可能となる。
【００３２】
演算アレイ３２は、マルチプレクサ３４と、シフタ３５と、ＡＬＵ３６と、Ａレジスタ３７と、Ｆレジスタ３８と、フラグレジスタ３９と、を備え、ＰＥ命令の演算処理が行われる。また、処理の制御はすべてＧＰ２から行われる。
【００３３】
演算アレイ３２におけるＰＥ命令による演算は、基本的にレジスタファイル３１から読み出されたデータをＡＬＵ３６の片側の入力としてもう片側にはＡレジスタ３７の内容を入力として結果をＡレジスタ３７に格納する。したがって、Ａレジスタ３７とレジスタファイル３１のレジスタ３３との演算が行われることとなる。
【００３４】
レジスタファイル３１と演算アレイ３２との接続には７ｔｏ１のマルチプレクサ３４が設けられており、ＰＥ方向で左に１、２、３つ離れたデータと右に１、２、３つ離れたデータ、中央（自ＰＥ）のデータを演算対象として選択している。マルチプレクサ３４は、自ＰＥのレジスタファイル３１に接続されるとともに、両隣３つのＰＥのレジスタファイル３１にも接続されている。このマルチプレクサ３４は７つのＰＥから１つを選択し、その選択したＰＥにおけるレジスタ３３で保持されているデータをＡＬＵ３６へ送る。或いはＡＬＵ３６で演算処理されたデータを、選択したＰＥにおけるレジスタ３３へ送る。これによって、隣のＰＥにおけるレジスタ３３で保持されているデータを利用した演算処理が可能になり、ＳＩＭＤ型マイクロプロセッサ８の演算処理能力を高めることができる。
【００３５】
シフタ３５は、レジスタファイル３１の８ビットのデータを任意ビットの左シフト演算を行ってＡＬＵ３６に入力する。
【００３６】
ＡＬＵ３６は、シフタ３５から送られてきたデータと、Ａレジスタ３７に保持されているデータとに基づき算術論理演算を行う。なお、本実施形態では、ＡＬＵ３６は１６ビットのデータに対応できるものとして扱うが、データに応じて適宜変更しても問題ない。演算処理されたデータは、Ａレジスタ３７に保持され、シフタ３５へ転送されたり、或いはＧＰ２の汎用レジスタなどへ転送される。
【００３７】
さらに、演算アレイ３２は、図示していない８ビットの条件レジスタ（Ｔ）により、ＰＥごとに演算実行の無効／有効が制御されており、特定のＰＥだけを演算対象として選択できるように構成している。
【００３８】
上述したように、レジスタ３３のＲ０〜Ｒ３２、マルチプレクサ３４、シフタ３５、ＡＬＵ３６、Ａレジスタ３７、Ｆレジスタ３８、フラグレジスタ３９で１つのＰＥ３ａを構成している（図２の点線で囲まれた範囲）。
【００３９】
ＰＥＩＦ４は、レジスタファイル３１へのプロセッサコア５外部からのアクセスを制御する。
【００４０】
メモリコントローラ６は、図３に示すように、ＰＥＩＦコントローラ６１と、ラインバッファコントローラ６２と、コマンド発行部６３と、アドレス生成部６４と、ＦＩＦＯ６５と、メイン制御部６６と、を備えている。
【００４１】
ＰＥＩＦコントローラ６１は、レジスタファイル３１へのアドレス、アクセスクロック、リード/ライトコントロール信号の生成およびデータの入出力バッファなどを行う。ラインバッファコントローラ６２は、ラインバッファメモリ７をコントロールする。コマンド発行部６３は、ラインバッファコントローラ６２へのリードコマンド、ライトコマンドを発行する。リードコマンド、ライトコマンドはリードもしくはライトの識別とアクセスを行うスタートアドレスとしてページメモリ上の論理アドレス、さらにアクセスバースト数などで構成される。
【００４２】
アドレス生成部６４は、後述するメイン制御部６６からのコントロールでコマンド発行部６３に対してアクセスを行うためのスタートアドレス情報を生成する。ＦＩＦＯ６５は、ラインバッファコントローラ６２とＰＥＩＦコントローラ６１への入出力データを管理するバッファとして機能させるＦＩＦＯ（First In First Out）方式のバッファである。メイン制御部６６は、メモリコントローラ６を全体的に制御する。メイン制御部６６はＧＰ２からの命令により動作する。
【００４３】
記憶手段としてのラインバッファメモリ７は、ＳＩＭＤ型マイクロプロセッサ８の外部に接続されるページメモリであり、例えばＳＲＡＭなどで構成される。
【００４４】
そして、本実施形態では、ＧＰ２とＰＥコア３とＰＥＩＦ４から構成されるプロセッサコア５にメモリコントローラ６を加えてＳＩＭＤ型マイクロプロセッサ８を構成している。なお、ＳＩＭＤ型マイクロプロセッサ８はこの構成に限らず、プロセッサコア５の部分のみをＳＩＭＤ型マイクロプロセッサとしてメモリコントローラ６がプロセッサの外付け回路としてもよい。
【００４５】
前述したＳＩＭＤ型マイクロプロセッサ８では、メモリコントローラ６によりラインバッファメモリ７とデータ入出力を行うレジスタファイル３１（ＰＥ３ａ）は、１つのＰＥ３ａを単位としてメモリコントローラ６からアクセスする順にアドレスを割り振って管理されている。例えば、ＳＩＭＤ型マイクロプロセッサ８が５１２個のＰＥ３ａを備えているとすると、ＰＥ０〜ＰＥ５１１とアドレスを割り振って管理する。これらレジスタファイル３１内のレジスタ３３は１つのＰＥ３ａ内にいくつも持ってよい。その１つのＰＥ３ａ内の複数のレジスタ３３間でデータのやりとりは自由に行うことができる構成とする。それらをＲ０，Ｒ１，Ｒ２・・・と順に呼ぶこととする。すなわち、Ｒ０はＰＥ０〜ＰＥ５１１の５１２個の汎用レジスタ（レジスタ３３）で構成され、Ｒ１以降も同様にＰＥ０〜ＰＥ５１１の５１２個ずつの汎用レジスタ（レジスタ３３）で構成されている。
【００４６】
ここで、上述したメモリコントローラ６の有する機能を説明する。まず、汎用レジスタ上のデータを一定の倍率で間引いてラインバッファメモリ７上にライトする機能を持つ。例えば、１／２の倍率であれば偶数アドレスを持つＰＥ３ａの汎用レジスタのデータのみをラインバッファメモリ７にライトする。これはＧＰ２が予めメイン制御部６６に行った設定にしたがってＰＥＩＦコントローラ６１を制御して偶数アドレスを持つＰＥ３ａの汎用レジスタのデータのみを読み出させて、ラインバッファコントローラ６２にラインバッファメモリ７へライトさせる。同様に倍率が１／４であればＰＥ３ａのアドレスの下位２ｂｉｔが“００”の場合にそのＰＥ３ａの汎用レジスタのデータをラインバッファメモリ７にライトする。このようにして元データを間引いてラインバッファメモリ７にライトできる。倍率に関しては予め決められた倍率で外部からＧＰ２を介しての設定によって選択可能であるものとする。
【００４７】
次に、上述した機能と同様に汎用レジスタ上のデータを間引いてライトする機能であるが、汎用レジスタ上のデータを制御コードとして、その制御コードに従って別の汎用レジスタのデータを間引いてラインバッファメモリ７にライトする機能を持つ。例えば、図６のＲ０のデータをＲ１のデータを制御コードとして、制御コードが“１”のＰＥ３ａのＲ０のデータはラインバッファメモリ７にライトし、“０”の場合にはラインバッファメモリ７にライトしないようにしてデータを間引く。これはＰＥＩＦコントローラ６１がＲ０とＲ１のデータを読み出してＲ１の内容に基づいてＲ０をＦＩＦＯ６５に格納するか否かを選択している。すなわち、図６の場合には間引いた後にラインバッファメモリ７にライトされるデータは、Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ・・・となる。なお、上述した１／２、１／４の倍率に間引く際もこの制御コードを用いてもよい。
【００４８】
次に、メモリコントローラ６の別の機能として、ラインバッファメモリ７上のデータを一定の倍率で重複して汎用レジスタ上にライトする機能を持つ。例えば、２倍であればラインバッファメモリ７上のデータをＰＥ３ａの汎用レジスタに対して２度ずつライトする機能である。例えば、ラインバッファメモリ７から順にＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ・・・とデータが読み出され、それをＲ０にライトする場合、ＰＥ０とＰＥ１にＡを、ＰＥ２とＰＥ３にＢを、ＰＥ４とＰＥ５にＣを、ＰＥ６とＰＥ７にＤを、ＰＥ８とＰＥ９にＥを、ＰＥ１０とＰＥ１１にＦを、ＰＥ１２とＰＥ１３にＧをライトする。これはラインバッファコントローラ６２が読み出したデータをＧＰ２が予めメイン制御部６６に行った設定にしたがってＰＥＩＦコントローラ６１を制御して１つのデータにつき２つのＰＥ３ａの汎用レジスタへライトさせる。同様に倍率が４倍であれば、ラインバッファメモリ７上のデータをＰＥ３ａの汎用レジスタに対して４度ずつライトする。倍率に関しては予め決められた倍率で外部からＧＰ２を介しての設定によって選択可能であるものとする。
【００４９】
さらに、メモリコントローラ６の別の機能として、汎用レジスタ上の制御コードのうち予め定めた特定の値の場合はカウントアップし、特定の値とは異なる他の値の場合はそれまでのカウント値をラインバッファメモリ７上に記録してカウント値を“１”に初期化する機能を持つ。例えば、制御コードを２値のデータ“０”、“１”とすると、“０”の場合には特定の値としてカウントアップし、“１”の場合には他の値としてそれまでのカウント値をラインバッファメモリ７上に記録してカウント値を“１”に初期化する。これはＰＥＩＦコントローラ６１で制御コードをカウントおよび初期化を行い、カウント値はラインバッファコントローラ６２からラインバッファメモリ７へライトする。
【００５０】
次に、前述した構成のデータ圧縮伸張装置１を用いてデータ圧縮を行う方法を図４のフローチャートを参照して説明する。なお、図４に示したフローチャートはＧＰ２で実行される。まず、圧縮を行う元となるデータが前述の汎用レジスタＲ０に図５に示すように記憶されているとする。図中のＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ・・は多値のデータを表す。
【００５１】
このデータに対して、最初にステップＳ１１において、ＰＥ命令として、隣接する左隣のＰＥの汎用レジスタと自身の汎用レジスタを比較してその値が一致する場合に “０”、一致しない場合に “１”を別の汎用レジスタＲ１に比較結果として保持する。すなわち、Ｒ１を制御コード格納領域としている。この命令は全てのＰＥ３ａに対して同時に実行されるので複数のデータを瞬時に処理できることになる。なお、“１”と“０”の論理はもちろん逆でもよく後述の説明を全て逆にすればよい。ここでは前述のように一致するときに“０”とすることで以下の説明を行う。命令実行後のＲ１は図６のようになる。
【００５２】
次に、ステップＳ１２において、メモリコントローラ６に、汎用レジスタＲ１を制御コードとして汎用レジスタＲ０のデータを間引いてラインバッファメモリ７上にライトさせる。図６の場合ラインバッファメモリ７上にライトされるデータは前述した本機能の説明の通り、Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ・・・となる。
【００５３】
次に、ステップＳ１３において、メモリコントローラ６に、ラインバッファメモリ７に間引いてライトしたデータを倍率２倍で汎用レジスタ上にライトさせる（書き戻させる）。このときライトする汎用レジスタは、元のデータや制御コードが記憶されている汎用レジスタとは異なるレジスタとし、例えば、Ｒ２にライトする。以下、本ステップでＲ２に書き戻されたデータを書き戻しデータという。すなわち、Ｒ２は図７（ａ）に示すようになる。なお、倍率２倍で汎用レジスタ上にライトする機能ではなく、メモリコントローラ６の別の機能として、図７（ｂ）に示すようにラインバッファメモリ７上のデータをＰＥのアドレス順で１つおきにライトする機能を持って実現しても良い。
【００５４】
次に、ステップＳ１４において、メモリコントローラ６に、前述した制御コードのカウント機能を使用してＲ１上の比較結果をカウントし、ラインバッファメモリ７上にライトさせる。すなわち、制御コード“０”を特定の値としてカウントアップし、制御コードが“１”を他の値としてカウント値をラインバッファメモリ７にライトするとともにカウント値を“１”に初期化する。図６に示す汎用レジスタＲ１上のデータの場合、ラインバッファメモリ７上にライトされるデータは、４，３，５，１，１，１,・・・となる。
【００５５】
次に、ステップＳ１５において、メモリコントローラ６に、ラインバッファメモリ７上にライトしたカウント値を、倍率２倍で重複して汎用レジスタ上にライトさせる。このときライトする汎用レジスタは、元のデータや制御コードや書き戻しデータが記憶されている汎用レジスタとは異なるレジスタとし、例えば、Ｒ３にライトする。すなわち、図８（ａ）に示すようになる。なお、書き戻しデータと同様に、倍率２倍で汎用レジスタ上にライトする機能ではなく、メモリコントローラ６の別の機能として、図８（ｂ）に示すようにラインバッファメモリ７上のデータをＰＥのアドレス順で１つおきにライトする機能を持って実現しても良い。但し、ＰＥのアドレス順で１つおきにライトする場合は、書き戻しデータに対して１アドレスずれてライトする（書き戻しデータが奇数アドレスの場合は偶数アドレスにライトする）。
【００５６】
なお、前述したステップＳ１２、Ｓ１３と、ステップＳ１４，Ｓ１５は並行して実行してもよく、その場合より短時間で処理できるためさらによい。
【００５７】
次に、ステップＳ１６において、ステップＳ５とステップＳ３により別々の汎用レジスタに書き戻したデータとカウント値を合成するＰＥ命令を実行する。例えば、図９のようにＲ４に合成したデータをライトする。つまり、Ｒ３の偶数番号のカウント値をＲ４にコピーし、Ｒ２の奇数番号のデータを同じくＲ４にコピーする命令を発行して、Ｒ４にカウント値と書き戻しデータが交互に並ぶようにしている。
【００５８】
このようにすることで、Ｒ４にはデータとその連続数が格納され、所謂ランレングス圧縮を行うことができる。
【００５９】
次に、図９ように圧縮したデータをデータ圧縮伸張装置１用いて伸張する方法について説明する。
【００６０】
まず、動作を説明する前に、圧縮データを伸張するためにメモリコントローラ６に追加される機能について説明する。この機能は、奇数アドレスのＰＥ３ａの汎用レジスタから読み出したデータを例えば画像データなどのデータ本体、偶数アドレスのＰＥ３ａの汎用レジスタから読み出したデータをデータ本体の連続数として、圧縮データからデータ本体を連続数分生成する機能である。例えばＰＥ０とＰＥ１の汎用レジスタから読み出した圧縮データが“４Ａ”であった場合はＰＥ０のデータである“４”を連続数、ＰＥ１のデータである“Ａ”をデータ本体として、“ＡＡＡＡ”というデータ列を生成してラインバッファメモリ７にライトする。すなわち、圧縮データが格納されている汎用レジスタを読み出して、該汎用レジスタ上の書き戻しデータをカウント値の数分連続して生成している。これは、ＰＥＩＦコントローラ６１で圧縮データの読み取りおよびデータの生成を行い、ラインバッファコントローラ６２からラインバッファメモリ７へライトする。
【００６１】
次に、図９ように圧縮したデータをデータ圧縮伸張装置１を用いて伸張する方法について図１０のフローチャートを参照して説明する。なお、図１０に示したフローチャートはＧＰ２で実行される。すなわち、ＧＰ２がデータ伸張制御部として動作する。
【００６２】
まず、ステップＳ２１において、メモリコントローラ６に、図９のＲ４のように格納された圧縮データを読み出させる。
【００６３】
次に、メモリコントローラ６に、読み出したデータの偶数番号のＰＥ３ａのデータを連続数として奇数番号のＰＥ３ａのデータをデータ本体として、連続数分のデータ本体を生成してラインバッファメモリ７にライトさせる。
【００６４】
このようにすることで、Ｒ４に格納されたランレングス圧縮データを伸張してラインバッファメモリ７に記憶させることができる。
【００６５】
本実施形態によれば、メモリコントローラ６に、ラインバッファメモリ７から読み出したデータを所定の倍率で汎用レジスタに書き込む機能と、汎用レジスタに設定された制御コードに基づいて他の汎用レジスタのデータをラインバッファメモリ７にライトする機能と、制御コードのうち“０”の連続数をカウントして“１”が出現した際にそのカウント値をラインバッファメモリ７にライトする機能と、を設ける。そして、ＧＰ２が、隣接する左隣の汎用レジスタの値と比較して同じ値の場合は制御コードを“０”に、異なる値の場合は制御コードを“１”に設定し、その制御コードに基づいて汎用レジスタのデータをラインバッファメモリ７にライトし、ライトしたデータを倍率２倍で汎用レジスタに書き戻す。一方、制御コードは、“０”の連続数をカウントしてラインバッファメモリ７にライトし、そのカウント数を倍率２倍で汎用レジスタに書き戻し、データとカウント数とを交互に並ぶように合成して圧縮データを生成するので、ＳＩＭＤ型マイクロプロセッサと簡単なメモリコントローラ６の構成によって、簡単かつ効率的にデータを圧縮することができる。
【００６６】
また、汎用レジスタに格納された圧縮されたデータを、メモリコントローラ６が読み出して、奇数アドレスのＰＥ３ａの汎用レジスタから読み出したデータをデータ本体、偶数アドレスのＰＥ３ａの汎用レジスタから読み出したデータをデータ本体の連続数として、圧縮データからデータ本体を連続数分生成してラインバッファメモリ７にライトして圧縮データを伸張しているので、ＳＩＭＤ型マイクロプロセッサと簡単なメモリコントローラ６の構成によって、簡単かつ効率的にデータを伸張することができる。
【００６７】
なお、上述した実施形態では、左隣のＰＥの汎用レジスタと比較して制御コードを生成していたが右隣でもよい。右隣の場合は、図６を例にすると、ＰＥ３、ＰＥ６、ＰＥ１１、ＰＥ１２、ＰＥ１３、ＰＥ１４のＲ１に“１”が格納される。
【００６８】
また、上述した実施形態で、書き戻しデータとカウント値を汎用レジスタに格納する際に図７（ｂ）や図８（ｂ）のようにＰＥ３ａのアドレスで１つおきに格納してもよいと記載したが、その場合は、図７（ｂ）でＲ２に書き戻しデータを格納した後に、偶数アドレス（書き戻しデータが格納されていないアドレス）のＲ２にカウント値を格納することで圧縮データを生成しても良い。
【００６９】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【００７０】
１          データ圧縮伸張装置（データ圧縮装置、データ伸張装置）
２          グローバルプロセッサ（データ圧縮制御部、データ伸張制御部）
３          ＰＥコア
３１        レジスタファイル
３２        演算アレイ
３３        レジスタ（汎用レジスタ）
３ａ        ＰＥ
６          メモリコントローラ
７          ラインバッファメモリ
８          ＳＩＭＤ型マイクロプロセッサ
【先行技術文献】
【特許文献】
【００７１】
【特許文献１】特許第３８２１１９８号公報
【図１】
2012014576.tif 000003
【図２】
2012014576.tif 000004
【図３】
2012014576.tif 000005
【図４】
2012014576.tif 000006
【図５】
2012014576.tif 000007
【図６】
2012014576.tif 000008
【図７】
2012014576.tif 000009
【図８】
2012014576.tif 000010
【図９】
2012014576.tif 000011
【図１０】
2012014576.tif 000012