(57)【要約】【課題】  ライトアロケート方式のキャッシュメモリを採用するデータ処理システムにおいて、キャッシュミス時の無駄なメモリリードを防ぎ、データ処理を高速に行う。【解決手段】  メインメモリ３００からキャッシュメモリ１００に圧縮データが格納され、該圧縮データに対応する伸長データの容量が算出される（ステップＳ００２）。後のデータ書込みの際にキャッシュミスが生じないように、伸長データの格納先アドレスがキャッシュメモリ１００に書き込まれ、算出したデータ量に対応するデータ領域が前記キャッシュメモリ内に確保される（ステップＳ００３）。キャッシュメモリ１００に格納された圧縮データは伸長され、該伸長データはキャッシュメモリ内に確保された領域に書き込まれる（Ｓステップ００４）。キャッシュメモリ１００に格納された伸長データは、キャッシュメモリコントローラ１５０によりメインメモリ３００に移動される。【選択図】    図４
2006236239.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリ及びキャッシュメモリを有し、ライトアロケート方式に従ってデータを処理するデータ処理システムであって、
前記メインメモリに格納された圧縮データを読み出し、キャッシュメモリに格納する読出し手段と、
前記キャッシュメモリに格納された圧縮データに対応する伸長データの容量を算出する算出手段と、
前記算出したデータ量のデータを格納するための領域を、前記キャッシュメモリ内に確保する確保手段と、
前記キャッシュメモリに格納された圧縮データを伸長し、該伸長データを前記キャッシュメモリ内に確保した領域に格納する伸長手段と、
前記キャッシュメモリに格納された伸長データを前記メインメモリに移動する移動手段と、
を具備することを特徴とするデータ処理システム。
【請求項２】
前記確保手段は、前記キャッシュメモリ内に格納された圧縮データの領域以外の実質的に全領域を、前記算出した伸長データ量のデータを格納するための領域として、確保することを特徴とする請求項１記載のデータ処理システム。
【請求項３】
前記メインメモリに格納された圧縮データは、複数のデータブロックから構成され、
前記読み出し手段によりＮブロックの圧縮データが読出され、該Ｎブロックの圧縮データが伸長され前記キャッシュメモリに格納された際に、該キャッシュメモリに空き領域が存在する場合、前記読み出し手段は、次に圧縮データを前記メインメモリから読出す場合に、前記Ｎより大きな数の圧縮データブロックを前記メインメモリから読出すことを特徴とする請求項１記載のデータ処理システム。
【請求項４】
前記メインメモリに格納された圧縮データは、複数のデータブロックから構成され、
前記読み出し手段によりＮブロックの圧縮データが読出され、該Ｎブロックの圧縮データに対応する伸長データの容量と前記キャッシュメモリに格納された前記圧縮データの容量の和が、該キャッシュメモリの全容量を越えている場合、前記読み出し手段は、次に圧縮データを前記メインメモリから読出す場合に、前記Ｎより小さな数の圧縮データブロックを前記メインメモリから読出すことを特徴とする請求項１記載のデータ処理システム。
【請求項５】
前記キャッシュメモリは、所定量データを各々格納する複数のデータ格納領域と、各データ格納領域に格納されたデータに対応する、前記メインメモリ上の各格納先アドレスを格納するための複数のアドレス領域とを具備し、
前記確保手段は、前記アドレス領域に、前記伸長手段により伸長された伸長データに対応する前記メインメモリ上の各格納先アドレスを格納することを特徴とする請求項１記載のデータ処理システム。
【請求項６】
前記読出し手段、算出手段、確保手段、伸長手段、及び移動手段は、ＣＰＵとして１チップ内に構成されていることを特徴とする請求項１記載のデータ処理システム。
【請求項７】
前記圧縮データは、制御プログラム圧縮したデータであることを特徴とする請求項１記載のデータ処理システム。
【請求項８】
キャッシュメモリ及びメインメモリを具備し、ライトアロケート方式に従ってデータを処理するデータ処理システムにおいて、圧縮データを伸長する方法であって、
前記メインメモリに格納された圧縮データを読み出し、前記キャッシュメモリに格納するステップと、
前記キャッシュメモリに格納された圧縮データに対応する伸長データの容量を算出するステップと、
前記算出したデータ量に対応する領域を、前記キャッシュメモリ内に確保するステップと、
前記キャッシュメモリに格納された圧縮データを伸長し、該伸長データを前記キャッシュメモリ内に確保した領域に格納するステップと、
前記キャッシュメモリに格納された伸長データを前記メインメモリに移動することを特徴とするデータ伸長方法。
【請求項９】
前記確保するステップは、前記キャッシュメモリ内に格納された圧縮データの領域以外の実質的に全領域を、前記算出した伸長データ量のデータを格納するための領域として、確保することを特徴とする請求項８記載のデータ伸長方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶部に圧縮して格納された情報を、キャッシュメモリを用いて伸長する技術に関する。
【背景技術】
【０００２】
圧縮データを伸長し、キャッシュメモリを用いて該伸長データを処理する装置が下記特許文献１に開示されている。この文献による装置の場合、ハードディスク等の補助記憶装置に格納されたデータをＲＡＭ等からなる主記憶装置に圧縮して記憶しておく。該圧縮データはＣＰＵがアクセスした場合、伸長されキャッシュメモリに格納され、ＣＰＵにより演算処理が施される。保持記憶装置からのデータを主記憶装置に転送する際に、データ圧縮を行うので、主記憶装置の容量が見かけ上拡大される。しかし、この文献には、キャッシュメモリに関する新規な構成及び使用方法については言及されていない。
【０００３】
従来、ＣＰＵを含むデータ処理システムにおいて、メモリに格納されたデータの一部を読込み、高速なアクセスを行うキャッシュメモリが広く用いられている。このようなキャッシュメモリは、ＣＰＵとメモリとの間に設けられ、ＣＰＵがメモリをアクセスにする際、アクセス対象であるデータがキャッシュメモリに存在すればそのデータがアクセスされる。この場合の制御はキャッシュ制御装置により行われる。キャッシュ制御装置の制御により、ＣＰＵはメモリアクセスの際にキャッシュメモリの存在を意識しなくても、上述したキャッシュメモリの効用を得ることができる。
【０００４】
ＣＰＵのアクセス対象であるデータがキャッシュメモリに存在する場合には、ＣＰＵはメモリをアクセスすることなく、キャッシュメモリのみをアクセスすればすむ。このような場合をキャッシュヒットと呼ぶ。一方、ＣＰＵのアクセス対象であるデータがキャッシュメモリに存在しない場合をキャッシュミスと呼ぶ。
【０００５】
キャッシュメモリに提供される方式としては、ライトスルー方式及びライトアバック方式がある。ライトスルー方式においては、ライトアクセスがキャッシュヒットである場合、キャッシュメモリ内部と主記憶領域の両記憶領域にデータが書き込まれる。この方式は、主記憶領域とキャッシュメモリ内部のデータの同一性を常に保つことができる特徴がある。しかしながら、必ず主記憶領域へのメモリアクセスが発生するので、ライトアクセスサイクルは主記憶領域へのアクセスサイクルにより決定される。
【０００６】
ライトバック方式ではキャッシュヒットの際、キャッシュメモリ内部のみにデータが書き込まれる。ライトアクセスがキャッシュヒットでキャッシュメモリ内部にデータが書き込まれた場合、キャッシュメモリ内部は主記憶領域内のデータと同一性は保たれていない状態所謂ダーティな状態となる。もし、ライトアロケートキャッシュの場合、次に別のキャッシュアクセスが発生しキャッシュミスである場合、主記憶領域内の対応するメモリブロックがキャッシュメモリへ読込まれる所謂データアロケートが行われる。このとき、データアロケートされるキャッシュメモリ内の対応データブロックがダーティな状態の場合、主記憶領域とキャッシュメモリ間で、当該対応データブロックの同一性を保つために、キャッシュメモリ内の前記対応データブロックは主記憶領域に移動される。これをキャッシュフラッシュという。
【０００７】
ライトアロケート方式のキャッシュメモリの特徴は前述したように、ＣＰＵがライトアクセスを行った場合にキャッシュミスが起きると、一旦メモリに対してリードアクセスを行い、対応データブロックをキャッシュメモリ内にアロケートすることである。アロケートされたデータブロックが複数回使用されるような場合は性能が向上する。しかし、メモリコピーや圧縮伸長のように、アロケートされたデータブロックが１度しか利用されないような場合は、アロケートの動作が無駄になるため、性能低下を起こす。
【０００８】
ライトミス時にデータのアロケートを効率よく行う装置は、例えば下記特許文献２に開示されている。この文献では、具体的な方法としてアロケートを行うメモリ領域とアロケートを行わない領域が予め設定される。
【特許文献１】特開平５−１２０１３１号公報
【特許文献２】特開平１１−３１２１２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
キャッシュメモリのキャッシュミス時に、データのアロケートを効率よく行うことを目的とする従来の装置においても、アロケート時の無駄なメモリリードは少なからず発生する。
【００１０】
本発明は、ライトアロケート方式のキャッシュメモリを採用するデータ処理システムにおいて、キャッシュミス時の無駄なメモリリードを防ぎ、データ処理を高速に行うことを目的とする。
【課題を解決するための手段】
【００１１】
上記性能低下を防ぐために、キャッシュメモリを直接操作する命令を使い、キャッシュメモリ内にメインメモリの対応ブロックを擬似的に設けることにより、無駄なメモリリードを防ぐ。
【００１２】
本発明の１実施例に係るデータ処理システムは、メインメモリ及びキャッシュメモリを有し、ライトアロケート方式に従ってデータを処理するシステムであって、前記メインメモリに格納された圧縮データを読み出しキャッシュメモリに格納する読出し手段と、前記キャッシュメモリに格納された圧縮データに対応する伸長データの容量を算出する算出手段と、前記算出した伸長データ量のデータを格納するための領域を、前記キャッシュメモリ内に確保する確保手段と、前記キャッシュメモリに格納された圧縮データを伸長し、該伸長データを前記キャッシュメモリ内に確保した領域に格納する伸長手段と、前記キャッシュメモリに格納された伸長データを前記メインメモリに移動する移動手段とを具備する。
【発明の効果】
【００１３】
ライトアロケート方式のキャッシュメモリを採用するデータ処理システムにおいて、圧縮データを伸長する場合に、キャッシュミス時の無駄なメモリリードを省き、圧縮データの伸長処理を高速に行うことができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施形態を説明する。
【００１５】
図１は本発明によるデータ処理システムの構成を示すブロック図である。
【００１６】
ＣＰＵ２００はバス２５０を介してメインメモリ３００に接続されている。本システムは、ライトアロケートキャッシュ１６０を持つＣＰＵ２００により、メインメモリ３００上に格納されている圧縮データ３０１を伸張し、該伸長データを圧縮データとは異なるメインメモリ空間上に格納するものである。ライトアロケートキャッシュ１６０は、キャッシュメモリコントローラ（以下メモリコントローラという）１５０及びキャッシュメモリ１００から構成される。ＣＰＵ２００はライトアロケートキャッシュ１６０を含む集積回路として１チップ上に構成されている。
【００１７】
メインメモリ３００に格納された圧縮データ３０１は、所定量のデータブロック単位で転送あるいは管理される。１０１はメインメモリ３００からキャッシュメモリ１００へ転送された複数ブロックの圧縮データである。圧縮データ１０１はＣＰＵ２００により伸張され、伸張済みデータ１０３はキャッシュメモリ３００の、圧縮データ３０１とは異なる他の領域に格納される。伸張前データ１０２は、この伸張処理において中間的に生じるデータである。３０２は圧縮データ３０１を伸長することにより得られる伸長データを示す。
【００１８】
メインメモリ３００の容量は十分大きいが、その動作速度はＣＰＵ２００に比べ著しく遅い。この動作速度の差を補うために、本願ではライトアロケートキャッシュ１６０が設けられている。キャッシュメモリ１００はメインメモリ３００に比べ、その容量は小さいが、動作速度は遥かに高速である。ライトアロケートキャッシュ１６０により、ＣＰＵ２００の高速メモリアクセスが可能となる。
【００１９】
ライトアロケートキャッシュ１６０は、ライトアロケート方式のキャッシュメモリ装置である。ライトアロケート方式の特徴は、ＣＰＵ２００がメインメモリ３００に対してライトアクセスを行った場合にキャッシュミスが起きると、一旦メインメモリ３００に対してリードアクセスを行い、キャッシュメモリ１００にデータブロックをアロケートする。即ち、キャッシュミスが起きるとメモリコントローラ１５０は、アクセス対象のアドレスに対応するデータブロックをメインメモリ３００から読出し、該ブロックを該アドレスと共にキャッシュメモリ１００に格納する。その後、キャッシュメモリ１００に格納したデータブロックに対して、演算処理等の様々な処理が施される。
【００２０】
しかし、圧縮データを伸長する場合は、圧縮データ１０１のサイズと、伸長後のデータサイズが異なるため、キャッシュミス時に、一般にメインメモリ３００から読み出しキャッシュメモリ１００に格納するデータ量を動的に変更しなければならない。
【００２１】
図２はキャッシュメモリ１００の詳細構成を示す図である。
【００２２】
キャッシュメモリ１００は、複数のインデックス(Index)１０５により構成される。あるアドレスがキャッシュメモリ１００内にあるか否かは、アドレス(Address)１０６とバリッドビット(Valid Bit)１０７により確認される。バリッドビット１０７は、対応するアドレスが有効か否かを示し、有効である場合、例えば１に設定される。キャッシュメモリ１００内にアクセス対象アドレスが無いと判断された場合（キャッシュミスの場合）、メインメモリ３００から該対象アドレスのブロックが、キャッシュ１００に読み込まれる。アクセス対象アドレスがキャッシュメモリ１００内にあった場合（キャッシュヒットの場合）、メインメモリ３００はアクセスされず、キャッシュ内のデータ１０９が直接参照され処理される。ダーティビット(Dirty Bit)１０８は、メインメモリ３００とキャッシュ１００間で、対応するデータ１０９の内容が異なるか否かを示。例えばダーティビット１０８が１に設定されている場合、対応するデータ１０９の内容がメインメモリ３００とキャッシュ１００間で異なる。
【００２３】
図３は本発明によるデータ伸張動作を含むデータ書き込み動作の概要を示すフローチャートである。
【００２４】
メインメモリ３００にデータを書き込む場合、ＣＰＵ２００は伸長処理における伸長データの書込みか否か判断する（Ｓ１０１）。一般に、ＣＰＵを含み様々な機能が組み込まれた組込み機器では、ＣＰＵの制御プログラムが、ＲＯＭ又はＨＤＤ等の不揮発性データ格納媒体に、圧縮されて格納されている。電源投入時あるいはリセット時に制御プログラムをメインメモリ３００にロードする場合、ＣＰＵは不揮発性データ格納媒体から、圧縮された制御プログラムを、本発明によるデータ伸張方式に従って伸張し、メインメモリ３００に書き込む。このように伸長データをメインメモリ３００に書き込む場合（ステップＳ１０１のＹＥＳ）、ＣＰＵ２００は本発明によるライトアロケート方式による書込み処理を行う。メインメモリ３００に格納された制御プログラムに従って、ＣＰＵ２００は装置を総合的に制御する。ステップＳ１０１でＮＯの場合、通常のライトアロケート方式に従って、データの書き込みが行われる。
【００２５】
次に、ライトアロケートキャッシュ１６０を用いた本発明によるデータ伸長処理の基本動作を図４のフローチャート及び図５のキャッシュの内容を示す図を用いて説明する。
【００２６】
先ず、ＣＰＵ２００はメインメモリ３００の例えばアドレスＸ１０、Ｘ１１から圧縮データを読込む（ステップＳ００１）。圧縮データは、一度に１ブロック読込んでも良いし、複数ブロック読み込んでも良い。ここでは２ブロック読込むものとする。
【００２７】
このときメモリコントローラ１５０は、図５（ａ）のように、キャッシュメモリ１００のインデックス４のアドレスとしてＸ１０、インデックス５のアドレスとしてＸ１１をキャッシュメモリに書き込み、対応するバリッドビットを１に設定する。又メモリコントローラ１５０は、メインメモリ３００から前記アドレスに格納されている圧縮データ１及び圧縮データ２を読出し、インデックス４及び５のデータとしてキャッシュメモリ１００にそれぞれ格納する。
【００２８】
ＣＰＵ２００は読込んだ圧縮データ１、２を解析し、該圧縮データを伸長した時のデータ量を算出する（ステップＳ００２）。ＣＰＵ２００は伸長データを格納するメインメモリ３００の例えばメモリアドレスＸ０〜Ｘ３を、図５（ｂ）のようにキャッシュメモリ１００のインデックス０〜３のアドレスとして書き込む（ステップＳ００３）。このメモリアドレスＸ０〜Ｘ３に格納するデータのデータ量は、ステップＳ００２で算出した伸長データ量に対応する量である。ステップＳ００３では更に、ＣＰＵ２００はインデックス０〜３のバリッドビットを１に設定する。
【００２９】
次にＣＰＵ２００は、圧縮データ１、２を伸長し、圧縮データ１の伸長データ１ａ、１ｂ及び圧縮データ２の伸長データ２ａ、２ｂをアドレスＸ０〜Ｘ３に書き込む（ステップＳ００４）。このとき、アドレスＸ０〜Ｘ３はキャッシュメモリに既に存在（キャッシュヒット）しているので、メモリコントローラ１５０は図５（ｃ）のように、インデックス０〜３のデータとして、伸長データ１ａ、１ｂ、２ａ、２ｂを書き込む。更にメモリコントローラ１５０はインデックス０〜３のダーティビットとして１を書き込む。
【００３０】
ライトアロケート方式のキャッシュメモリの場合、キャッシュミスが生じると、データをキャッシュメモリにアロケートするために、必ずメインメモリ３００に対するリードアクセスを行う。圧縮データの伸長処理の場合、このリードアクセスは無駄な動作である。従って本発明では、伸長データの書き込みを行う場合、ＣＰＵ２００はキャッシュメモリ１００に、メインメモリ３００上の書き込み対象のアドレスを書き込み、バリッドビットを１に設定する。この結果、キャッシュミスの発生が防止され、無駄なリードアクセスを防ぐことができる。つまり本発明は、キャッシュメモリを直接操作する命令を使い、ＣＰＵがキャッシュメモリ内に、メインメモリの対応ブロックを擬似的に設けることにより、無駄なメモリリードを防ぐことができる。
【００３１】
ステップＳ００５のように、ＣＰＵ２００は伸長すべき圧縮データがメインメモリ３００内にまだあるか判断する。伸長すべき圧縮データがある場合（ステップＳ００５のＹＥＳ）、フローはステップＳ００１に戻り、ＣＰＵ２００はメインメモリ３００から次の圧縮データを読込む。このときメモリコントローラ１５０は、図５（ｃ）のバリッドビット及びダーティビットを参照して、図５（ｄ）のように、伸長データ１ａ、１ｂ、２ａ、２ｂをメインメモリ３００のアドレスＸ０〜Ｘ３に移動し、圧縮データ１、２を削除する。次にメモリコントローラ１５０は、新たな圧縮データをメインメモリ３００から読出し、読出した圧縮データ及びそのアドレスをキャッシュメモリ１００に書き込み、対応するバリッドビットを１に設定する。
【００３２】
ステップＳ００１〜Ｓ００５の処理は、メインメモリ３００内の圧縮データが全て伸長されるまで繰り返される。
【００３３】
次に、本発明による圧縮データ伸長処理の具体例を第１実施例として図６及び図７を用いて説明する。
【００３４】
図６は本発明による伸長処理の第１実施例を示すフローチャートである。図７はこの伸長処理の様子を概念的に示す図であり、キャッシュメモリ１００は説明を簡単にするために、図２のデータ部１０５のみが示されている。
【００３５】
図７のように、メインメモリ３００には圧縮データ３１０（複数ブロックを含む）が格納されている。メインメモリ３００は例えばＲＯＭ、ＨＤＤ、光ディスク等の不揮発性記憶媒体である。ステップＳ２０１のように、圧縮データ３１０内のＮ個のブロックが、ＣＰＵによりキャッシュメモリ１００に、図７の圧縮データ１１０のように読込まれる。ここでＮ個のブロックの合計サイズをＸとする。ステップＳ２０２では、”Ｙ”（伸長されたデータの合計値）に０が代入され、”ｎ”（読出したブロックの序数）に１が代入される。
【００３６】
圧縮イメージはこのようにブロック化されており、それぞれのブロックにより、伸長時のサイズが異なる。ＣＰＵはステップＳ２０３のように、読出したｎ番目圧縮データブロックの内容を解析して、伸長時のデータサイズ”ｙ”を計算する。
【００３７】
ステップＳ２０４のように、ＣＰＵ２００は”キャッシュ全体サイズ＞Ｘ＋Ｙ＋ｙ”を判断する。つまり、キャッシュメモリ１００に格納した圧縮データのサイズＸと、伸長されたデータの合計値Ｙと、ｎ番目ブロックの伸長データサイズｙの和が、キャッシュ全体サイズより小さいか判断する。ステップＳ２０４でＹＥＳの場合、ＣＰＵ２００は図５（ｂ）のように、ｎ番目ブロックに対応する伸長データを格納するアドレス（図５ではＸ０，Ｘ１）をキャッシュメモリに書き込み、対応するバリッドビットを１に設定する（ステップＳ２０５）。
【００３８】
ステップＳ２０６では、ＹにＹ＋ｙが代入され、ｎにｎ＋１が代入される。ステップＳ２０７では、”ｎ＞Ｎ（ステップＳ２０１で読込んだブロック数）”が判断され、ＮＯの場合、フローはステップＳ２０３に戻る。ステップＳ２０３〜Ｓ２０７を繰り返すことにより、ステップＳ２０１で読込んだＮ個の圧縮データブロックの伸長サイズの計算及び対応するアドレスとバリッドビットの記録が終了すると（ステップＳ２０７でＹＥＳ）、１番目から（ｎ−１）番目の圧縮データブロック（Ｎ個の圧縮データブロック）が、図５（ｃ）のように伸長される（ステップＳ２０８）。図７の伸長データ１２０は、このようにして格納されたデータを示す。伸長データ１２０は、後にメインメモリ３００に伸長データ３２１のように格納される。
【００３９】
ステップＳ２０９では、メインメモリ３００に格納されている圧縮データ３０１が全て伸長されたか判断され、ＮＯの場合はステップＳ２０１に戻る。ステップＳ２０１〜Ｓ２０９の処理は圧縮データ３０１が全て伸長されるまで繰り返される。
【００４０】
ステップＳ２０４でＮＯの場合、即ちキャッシュメモリ１００に格納した圧縮データのサイズＸと、伸長されたデータの合計値Ｙと、ｎ番目ブロックの伸長データサイズｙの和が、キャッシュ全体サイズを超えた場合、ステップＳ２１０のように１番目からｎ番目のブロックの伸長処理を行う。このように、キャッシュメモリ１００に空き領域が無くなった時点で、伸長処理を行う。ステップＳ２１１では、伸長されたデータの合計値Ｙに０が代入され、読出した圧縮データブロックの序数ｎに”ｎ＋１”が代入され、フローはステップＳ２０３に移行して、ステップＳ２０１で読込んだ圧縮データブロックのうち、まだ伸長されていない残りの圧縮データが伸長される（ステップＳ２０３〜Ｓ２０９）。この結果、図７のメインメモリ３００には、ＣＰＵ２００により伸長されたデータが、伸長データ３２０のように格納される。
【００４１】
以上説明したように本実施例によれば、ライトアロケートキャッシュを採用するシステムにおいて、伸長データの書き込みの際に、無駄なメモリリード（メインメモリ３００のデータの読込み）を省略し、且つキャッシュメモリ１００の全容量を使用して、伸長処理を連続して行うことができるので、ＣＰＵ２００の処理効率が向上する。
【００４２】
次に本発明の第２実施例を説明する。
【００４３】
上記第１実施例においては、ＣＰＵがキャッシュにリードする圧縮イメージのサイズは固定されていたが、伸長時のサイズに応じて、ＣＰＵがキャッシュメモリに読込む圧縮データのサイズを変更することで、よりキャッシュメモリを有効に使うことができ、高速な伸長処理が可能となる。
【００４４】
図８は第２実施例に係る伸長処理の動作を示すフローチャートである。第１実施例との違いは、第２実施例には、点線で示されるステップＳ３０１〜Ｓ３０３が追加されていることである。
【００４５】
Ｎ個の圧縮データブロックの伸長処理の後、ステップＳ３０１のように、キャッシュメモリ１００に格納した圧縮データのサイズＸと、伸長されたデータの合計値Ｙと、ｎ番目ブロックの伸長データサイズｙの和が、キャッシュ全体サイズより小さいか判断する。ステップＳ３０１でＹＥＳの場合、ＣＰＵ２００は次の伸長処理において読込む圧縮データブロックの数Ｘを増加し（ステップＳ３０２）、ＮＯの場合、次の伸長処理において読込む圧縮データブロックの数Ｘを減少する（ステップＳ３０３）。
【００４６】
このように、伸長時のキャッシュメモリ使用サイズ（Ｘ＋Ｙ＋ｙ）に応じて、次の伸長処理においてＣＰＵがキャッシュメモリに読込む圧縮データのブロックサイズＸを変更することで、よりキャッシュを有効に使うことができ、高速な伸長処理が可能となる。
【００４７】
以上の説明はこの発明の実施の形態であって、この発明の装置及び方法を限定するものではなく、様々な変形例を実施することができる。そのような変形例も本発明に含まれるものである。又、各実施形態における構成要素、機能、特徴あるいは方法ステップを適宜組み合わせて構成される装置又は方法も本発明に含まれるものである。
【図面の簡単な説明】
【００４８】
【図１】本発明に係るデータ処理システムの構成を示すブロック図である。
【図２】キャッシュメモリ１００の詳細構成を示す図である。
【図３】本発明に係るデータ伸張動作を含むデータ書き込み動作の概要を示すフローチャートである。
【図４】本発明に係るデータ伸長処理の基本動作を示すフローチャートである。
【図５】伸長処理におけるキャッシュの内容を示す図である。
【図６】本発明による伸長処理の第１実施例を示すフローチャートである。
【図７】第１実施例に係る伸長処理の様子を概念的に示す図である。
【図８】本発明による伸長処理の第２実施例を示すフローチャートである。
【符号の説明】
【００４９】
１００…キャッシュメモリ、１５０…キャッシュメモリコントローラ、２００…ＣＰＵ、３００…メインメモリ
【図１】
2006236239.tif 000003
【図２】
2006236239.tif 000004
【図３】
2006236239.tif 000005
【図４】
2006236239.tif 000006
【図５】
2006236239.tif 000007
【図６】
2006236239.tif 000008
【図７】
2006236239.tif 000009
【図８】
2006236239.tif 000010