(57)【要約】【課題】補助キャッシュを設けることなくウェイの追加やプリフェッチしたキャッシュデータの記憶を可能にする命令キャッシュシステムを提供する。【解決手段】キャッシュデータをインデックス毎に記憶する命令キャッシュデータＲＡＭ１と、命令キャッシュデータＲＡＭ１にキャッシュデータを圧縮して書き込むとともに、該書き込んだキャッシュデータの圧縮率を管理する命令キャッシュ制御部４と、を備え、命令キャッシュ制御部４は、管理している圧縮率に基づきｎ個のキャッシュデータが書き込まれたインデックスに属する記憶領域に圧縮により生じた余剰の領域の記憶容量を算出し、該算出した記憶容量に基づき余剰の領域に新たなキャッシュデータを圧縮して書き込む。【選択図】        図１
2010073029.tif 000002
【特許請求の範囲】
【請求項１】
命令コードをキャッシュデータとしてキャッシュするｎウェイセットアソシアティブ方式を採用する命令キャッシュシステムにおいて、
キャッシュデータをインデックス毎に記憶する命令キャッシュデータ記憶部と、
前記命令キャッシュデータ記憶部にキャッシュデータを圧縮して書き込むとともに、該書き込んだキャッシュデータの圧縮率を管理する命令キャッシュ制御部と、
を備え、
前記命令キャッシュ制御部は、前記管理している圧縮率に基づきｎ個のキャッシュデータが書き込まれたインデックスに属する記憶領域に圧縮により生じた余剰の領域の記憶容量を算出し、該算出した記憶容量に基づき前記余剰の領域に新たなキャッシュデータを圧縮して書き込む、
ことを特徴とする命令キャッシュシステム。
【請求項２】
前記余剰の領域に書き込まれる新たなキャッシュデータは、同じインデックスに属するキャッシュデータ、または該インデックスの次のインデックスに属するプリフェッチされたキャッシュデータ、である、
ことを特徴とする請求項１に記載の命令キャッシュシステム。
【請求項３】
プロセッサから要求されたキャッシュデータが前記プリフェッチされたキャッシュデータにヒットした場合、前記命令キャッシュ制御部は、該キャッシュデータを記憶している記憶領域のインデックスの次のインデックスの記憶領域の余剰の領域が前記ヒットしたキャッシュデータを書き込み可能な記憶容量を有しているか否かを前記管理している圧縮率に基づいて判断し、前記次のインデックスの余剰の領域が前記ヒットしたキャッシュデータを書き込み可能な記憶容量を有しているとき、前記次のインデックスの余剰の領域へ前記キャッシュデータを移動させ、前記次のインデックスの余剰の領域が前記キャッシュデータを書き込み可能な記憶容量を有していないとき、前記次のインデックスの記憶領域が記憶しているキャッシュデータを削除して前記ヒットしたキャッシュデータを書き込み可能な領域を生成し、該生成した領域に前記ヒットしたキャッシュデータを移動する、
ことを特徴とする請求項２に記載の命令キャッシュシステム。
【請求項４】
前記命令キャッシュデータ記憶部の記憶領域は、複数のメモリバンクに分割されており、
前記命令キャッシュ制御部は、要求されたキャッシュデータがヒットした場合、該ヒットしたキャッシュデータが書き込まれているメモリバンクを前記圧縮率情報に基づいて特定し、該特定したメモリバンクを活性化する、
ことを特徴とする請求項１〜３の何れか一つに記載の命令キャッシュシステム。
【請求項５】
前記命令キャッシュ制御部は、前記管理している圧縮率に基づき、複数の記憶領域に生じた余剰の領域を仮想的に結合し、該結合した領域に新たなキャッシュデータを圧縮して書き込む、
ことを特徴とする請求項１に記載の命令キャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、セットアソシアティブ方式を採用する命令キャッシュシステムに関する。
【背景技術】
【０００２】
従来、プロセッサ内に命令キャッシュを置く命令キャッシュシステムには、命令キャッシュのヒット率を向上させるために、複数のウェイを用いるセットアソシアティブ（Ｓｅｔ  Ａｓｓｏｃｉａｔｉｖｅ）方式が多く採用されている。従来のセットアソシアティブ方式を採用する命令キャッシュシステムにおいては、一旦プロセッサに実装された後にウェイを増強することが困難であるという問題があった。例えば特許文献１には、動作時にウェイの数を一時的に増加させることを可能にする技術も開示されているが、予め補助的なキャッシュをわざわざ配備しなければならず、実装面積やコストなどの点できわめて不利なものであった。
【０００３】
また、従来の命令キャッシュシステムにおいて命令コードをプリフェッチする場合は、何れかのキャッシュラインを命令キャッシュ上から排除するか、プリフェッチ用に別のバッファメモリを命令キャッシュ近傍に配備する必要があるという問題があった。
【０００４】
【特許文献１】特開平６−２３１０４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、補助キャッシュを設けることなくウェイの追加やプリフェッチしたキャッシュデータの記憶を可能にする命令キャッシュシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願発明の一態様によれば、命令コードをキャッシュデータとしてキャッシュするｎウェイセットアソシアティブ方式を採用する命令キャッシュシステムにおいて、キャッシュデータをインデックス毎に記憶する命令キャッシュデータ記憶部と、前記命令キャッシュデータ記憶部にキャッシュデータを圧縮して書き込むとともに、該書き込んだキャッシュデータの圧縮率を管理する命令キャッシュ制御部と、を備え、前記命令キャッシュ制御部は、前記管理している圧縮率に基づきｎ個のキャッシュデータが書き込まれたインデックスに属する記憶領域に圧縮により生じた余剰の領域の記憶容量を算出し、該算出した記憶容量に基づき前記余剰の領域に新たなキャッシュデータを圧縮して書き込む、ことを特徴とする命令キャッシュシステムが提供される。
【発明の効果】
【０００７】
本発明によれば、補助キャッシュを設けることなくウェイの追加やプリフェッチしたキャッシュデータの記憶を可能にする命令キャッシュシステムを提供することができるという効果を奏する。
【発明を実施するための最良の形態】
【０００８】
以下に添付図面を参照して、この発明にかかる命令キャッシュシステムの最良な実施の形態を詳細に説明する。
【０００９】
（第１の実施の形態）
第１の実施の形態の命令キャッシュシステムは本来的に４つのウェイが設定されているセットアソシアティブ方式を採用するとして説明するが、本発明が属する分野の技術者によって、以下の説明要綱に基づき、４つ以外の複数のウェイを有するセットアソシアティブ方式を採用する命令キャッシュシステムに適用することが可能である。従って、以下の説明は、当該分野に対して開示される内容として広く理解されるべきであり、本発明を限定するものではない。
【００１０】
図１は、本発明の第１の実施の形態にかかる命令キャッシュシステムの構成を示すブロック図である。図１において、第１の実施の形態の命令キャッシュシステムは、キャッシュライン単位の命令コードを圧縮した状態で記憶する命令キャッシュデータＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１と、命令キャッシュデータＲＡＭ１に記憶される夫々のキャッシュラインのタグ情報を、夫々のキャッシュラインの圧縮率を示す圧縮率ビットとともに記憶する命令キャッシュタグＲＡＭ２と、命令キャッシュシステム全体を制御する命令キャッシュ制御部４と、命令キャッシュ制御部４から受信したアドレスのタグ情報と命令キャッシュタグＲＡＭ２から読み出されたタグ情報とを比較し、比較結果を命令キャッシュ制御部４へ出力するタグ比較器３と、プロセッサからの要求に基づき命令キャッシュ制御部４にフェッチ要求を送信して命令コードを取得する命令フェッチユニット５と、を備える。
【００１１】
命令キャッシュ制御部４は、キャッシュライン単位の命令コードの圧縮によって命令キャッシュデータＲＡＭ１に生じる動的に利用が可能な領域（Ｄｙｎａｍｉｃ  Ａｖａｉｌａｂｌｅ  Ｒｅｇｉｏｎ；ＤＡＲ)を管理するための情報ビットである、命令キャッシュタグＲＡＭ２に記憶される圧縮率ビットなどを管理するＤＡＲ制御部４１と、外部バスを介して主記憶装置（図示せず）などから取得したキャッシュライン単位の命令コードを圧縮して命令キャッシュデータＲＡＭ１に書き込む圧縮リフィルユニット４２と、命令キャッシュデータＲＡＭ１から取得した圧縮された命令コードを復元して命令フェッチユニット５に送信する解凍ユニット４３と、ＤＡＲの制御のための設定情報を格納するフィルモードレジスタ（Ｆｉｌｌ  Ｍｏｄｅ  Ｒｅｇｉｓｔｅｒ；ＦＭＲ）４４および投機的モードレジスタ（Ｓｐｅｃｕｌａｔｉｖｅ  Ｍｏｄｅ  Ｒｅｇｉｓｔｅｒ；ＳＭＲ）４５と、を備える。
【００１２】
命令キャッシュデータＲＡＭ１の構成の一例を説明する。図２は、命令キャッシュデータＲＡＭ１の構成の一例を説明する図である。図２の構成例においては、命令キャッシュデータＲＡＭ１は、インデックス毎に複数の圧縮されたキャッシュライン単位の命令コードを記憶できるように構成されている（以降、命令キャッシュデータＲＡＭ１に書き込まれるキャッシュライン単位の命令コードを単にキャッシュデータという）。インデックスとは、アドレスの下位ビット部分の値に対応し、例えば下位の６ビットをインデックスとして使用する場合、インデックスは０〜６３までの値をとることとなる。図２においてはＩｎｄｅｘ  ０〜Ｉｎｄｅｘ  ｘと表示している。命令キャッシュデータＲＡＭ１の各インデックスに属する記憶領域は、第１の実施の形態に本来的に採用されている４ウェイセットアソシアティブ方式に対応して、圧縮前のキャッシュライン長（以降、固定キャッシュライン長という）４つ分の記憶容量を有している。命令キャッシュデータＲＡＭ１に記憶されているキャッシュデータは夫々圧縮リフィルユニット４２によって圧縮されて書き込まれているので、各インデックスに属する記憶領域は、４ウェイ分、つまりウェイ０〜ウェイ３のキャッシュデータを記憶してもなお余剰の領域を有することとなる。この余剰の領域がＤＡＲである。ＤＡＲは、新規のウェイすなわちウェイ４のキャッシュデータまたはプリフェッチしたキャッシュデータを記憶する領域として使用される。
【００１３】
図２の構成例においては、Ｉｎｄｅｘ  １の記憶領域に、夫々固定キャッシュライン長の３／４、３／４、７／８、５／８のサイズに圧縮されたウェイ０、ウェイ１、ウェイ２、ウェイ３のキャッシュデータが記憶され、１固定キャッシュライン長の記憶容量を有するＤＡＲが存在している。
【００１４】
次に、命令キャッシュタグＲＡＭ２の構成について説明する。図３は、命令キャッシュタグＲＡＭ２の構成の一例を説明する図である。各インデックスは、次にリフィルするウェイを指示するリプレイス（Ｒｅｐｌａｃｅ）ビットＲ、タグ情報フィールドに記憶するデータがタグ情報として有効であるか否かを示すバリッド（Ｖａｌｉｄ）ビットＶ、キャッシュデータの圧縮率を示す圧縮率（Ｃｏｍｐｒｅｓｓｉｏｎ  Ｒａｔｉｏ）ビットＣＲ、ＤＡＲが記憶するデータがプリフェッチされたキャッシュデータであるか否かを示すプリフェッチ（Ｐｒｅｆｅｔｃｈ）ビットＰ、およびタグ情報（Ｔａｇ  Ｉｎｆｏ）を記憶するタグ情報フィールドを有する。各インデックスに対してリプレイスビットＲが設定され、各ウェイに対してバリッドビットＶ、圧縮率ビットＣＲ、およびタグ情報フィールドが設定され、ＤＡＲに対してバリッドビットＶ、圧縮率ビットＣＲ、プリフェッチビットＰ、およびタグ情報フィールドが設定されている。
【００１５】
圧縮率ビットＣＲは、固定キャッシュライン長に対する圧縮後のキャッシュデータのサイズの比を表すビットであり、圧縮率の分解能に応じたビット数により構成される。ここでは圧縮率の分解能を１／８としており、圧縮率ビットＣＲは、３ビット構成とする。例えば、キャッシュデータが固定キャッシュライン長の５／８に圧縮されている場合、「１００」と表す。なお、圧縮率ビットＣＲは、固定キャッシュライン長に対する圧縮後のキャッシュデータのサイズの比を表すことができればどのような形態をとるように構成してもよく、圧縮率の分解能、圧縮率ビットＣＲの構成、および圧縮率を表す形式は上記述べた例に限定しない。
【００１６】
プリフェッチビットＰは、例えば１ビット構成であって、ＤＡＲに記憶されたキャッシュデータが新規のウェイ、すなわちウェイ４のデータである場合、「０」と表し、プリフェッチされた次インデックスに属するキャッシュデータである場合、「１」と表す。
【００１７】
バリッドビットＶは、例えば、１ビット構成であって、記憶するデータがタグ情報として無効である場合を「０」、タグ情報として有効である場合を「１」とする。
【００１８】
リプレイスビットＲは、ウェイ数に応じたビット構成をとる。ここでは、４ウェイセットアソシアティブ方式を採用し、さらにＤＡＲに一つの新規ウェイが追加される場合があるので、ＤＡＲに記憶されるウェイを含む合計５つのウェイのうちの何れか一つを追い出すキャッシュデータとして示すために、例えば３ビット構成をとる。例えば、次にリフィルするのがウェイ０である場合、「０００」と表し、ウェイ３である場合、「０１１」と表し、ＤＡＲにウェイ４のキャッシュデータが記憶されており、ウェイ４を次にリフィルする場合、「１００」と表す。
【００１９】
リフィルのポリシとしては、最後に使用されてから最も長く時間が経っているキャッシュデータを追い出すＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）や、リフィルされた時期が最も古いキャッシュデータを追い出すＬＲＲ（Ｌｅａｓｔ  ＲｅｃｅｎｔｌｙＲｅｐｌａｃｅｄ）などが公知であり、これらを使用するようにしてもよいが、ここでは、効率よくＤＡＲの記憶容量を増加させるために、圧縮率ビットＣＲの値に基づき、圧縮率が最も低い、つまり圧縮後のサイズが最も大きいキャッシュデータを追い出すポリシであるＬＣＲ（Ｌｅａｓｔ  Ｃｏｍｐｒｅｓｓｉｏｎ  Ｒａｔｉｏ）に従うこととする。
【００２０】
図４は、図２に示した命令キャッシュデータＲＡＭ１の例に対応する命令キャッシュタグＲＡＭ２の状態を説明する図である。図４においては、わかりやすくするために、リプレイスビットＲおよび圧縮率ビットＣＲの値を１０進法で表示している。命令キャッシュデータＲＡＭ１にはウェイ０からウェイ３にキャッシュデータが記憶されているので、図示するように、インデックス１の行において、ウェイ０からウェイ３のバリッドビットＶは１となっている。また、夫々のキャッシュデータの圧縮率に対応し、ウェイ０〜ウェイ３の圧縮率ビットＣＲは夫々３／４、３／４、７／８、５／８を示している。ＬＣＲによると、最も圧縮率が低いウェイ２が最も先に追い出されるので、インデックス１のリプレイスビットＲは２を示している。
【００２１】
次に、以上のように構成される本発明にかかる第１の実施の形態の動作について説明する。第１の実施の形態は、プリフェッチを行うように設定されているか否かに基づき、夫々異なった動作を行う。まず、プリフェッチを行わない設定となっている場合の動作（以降、第１の動作という）について説明する。プリフェッチを行うか否かの設定は、ＦＭＲ４４に格納されている設定情報に記述されており、命令キャッシュ制御部４は、ＦＭＲ４４を参照することにより、第１の動作を行うか後述する第２の動作を行うかを決定する。
【００２２】
図５は、第１の実施の形態の命令キャッシュシステムによる第１の動作を説明するフローチャートである。図５において、プロセッサから命令コードのアドレスを要求されると、該アドレスのタグ情報と命令キャッシュタグＲＡＭ２に記憶されるタグ情報とを比較するタグ情報比較処理が実行される（ステップＳ１）。すなわち、要求されたアドレスは命令フェッチユニット５を経て命令キャッシュ制御部４へ供給される。命令キャッシュタグＲＡＭ２は、命令キャッシュ制御部４からのアドレスのインデックスにより指定されたタグ情報を読み出す。タグ比較器３は、読み出されたタグ情報と要求されたアドレスのタグ情報とを比較し、比較結果を命令キャッシュ制御部４へ出力する。ここで、命令キャッシュタグＲＡＭ２およびタグ比較器３は、要求されたアドレスのインデックスに指定されるタグ情報の比較結果とともに、該インデックスの各ウェイの各情報ビットの値も命令キャッシュ制御部４に出力する。
【００２３】
続いて、命令キャッシュ制御部４は、比較結果において、命令キャッシュタグＲＡＭ２から読み出された何れかのタグ情報と要求されたアドレスのタグ情報とが一致（ヒット）した場合（ステップＳ２、Ｙｅｓ）、命令コードを出力する処理に移行する（ステップＳ４）。すなわち、命令キャッシュデータＲＡＭ１は、要求されたアドレスのインデックスにより指定される複数の圧縮されたキャッシュデータのうち前記ヒットしたタグ情報のウェイに対応するキャッシュデータを命令キャッシュデータＲＡＭ１から読み出して命令キャッシュ制御部４に送信する。解凍ユニット４３は該送信されてきた圧縮されているキャッシュデータを解凍して命令フェッチユニット５へ出力する。
【００２４】
命令キャッシュ制御部４は、ステップＳ１において得られた比較結果において、命令キャッシュタグＲＡＭ２から読み出された何れのタグ情報も要求されたアドレスのタグ情報と一致しなかった（キャッシュミスした）場合（ステップＳ２、Ｎｏ）、命令キャッシュシステムは、要求された命令コードをリフィルする処理を行う（ステップＳ３）。ここで、命令キャッシュシステムは、ＤＡＲの記憶領域が所定のしきい値以上である場合、ＤＡＲをウェイ４のキャッシュデータを記憶する領域として使用する。
【００２５】
すなわち、命令キャッシュ制御部４は、ステップＳ１において比較結果とともに取得した圧縮率ビットＣＲの値に基づいてＤＡＲの記憶容量を計算する。所定のしきい値とは、ＤＡＲを新規ウェイとして使用するか否かを判断するための、ＳＭＲ４５に設定情報として格納されている値であり、例えば１固定キャッシュライン長の値や０．９固定キャッシュライン長の値が設定される。命令キャッシュ制御部４は、ＳＭＲ４５の値と、計算して求めたＤＡＲの記憶容量と、を比較する。
【００２６】
ＤＡＲの記憶領域の容量がＳＭＲ４５の値以上であり、かつＤＡＲにキャッシュデータが記憶されていない場合、圧縮リフィルユニット４２は、リフィルする命令コードのキャッシュデータを外部バスを介して取得し、該取得したキャッシュデータを圧縮し、ＤＡＲに記憶させる。ＤＡＲの記憶領域の容量がＳＭＲ４５の値以上でありかつＤＡＲがすでにウェイ４のキャッシュデータを記憶している場合、またはＤＡＲの記憶領域の容量がＳＭＲ４５の値未満である場合、圧縮リフィルユニット４２は、リフィルするキャッシュデータを取得して圧縮し、リプレイスビットＲが示すウェイにリフィルする。ＤＡＲ制御部４１は、リフィル処理時において、圧縮リフィルユニット４２によって圧縮されたキャッシュデータの圧縮率を取得し、該取得した圧縮率をリフィルされたウェイのＣＲビットを更新する。
【００２７】
取得されたキャッシュデータは、圧縮されていない状態で解凍ユニット４３から命令フェッチユニット５へ出力される。
【００２８】
次に、ＦＭＲ４４により、プリフェッチを行う設定になっている場合の動作（第２の動作）について説明する。第２の動作においては、キャッシュミス発生時に、ミスを発生したキャッシュデータに隣接するアドレスのキャッシュデータを予め取得して（プリフェッチして）ＤＡＲに格納する。図６は、第２の動作を説明するフローチャートである。
【００２９】
図６において、ステップＳ１１においては、ステップＳ１における動作と同様に、命令キャッシュタグＲＡＭ２に記憶されるタグ情報と、要求されたアドレスのタグ情報と、を比較する処理が行われる。この処理において、命令キャッシュ制御部４は、命令キャッシュ制御部４からのアドレスのインデックスにより指定されたタグ情報と、該インデックスの一つ前のインデックスのＤＡＲにプリフェッチされたキャッシュデータが記憶されている場合、該プリフェッチされたキャッシュラインのタグ情報と、を読み出させるように命令キャッシュタグＲＡＭ２にアドレスを送信する。プリフェッチされたキャッシュデータが記憶されているか否かは、前インデックスのＤＡＲにプリフェッチビットＰが「１」となっているタグ情報が記憶されているか否かにより判断される。
【００３０】
命令キャッシュ制御部４は、キャッシュミスした場合（ステップＳ１２、Ｎｏ）、命令キャッシュシステムは、要求された命令コードをリフィルする処理（ステップＳ１３）とプリフェッチ処理とを行う（ステップＳ１４）。
【００３１】
すなわち、ＤＡＲの記憶領域がＳＭＲ４５によって設定されている値以上の記憶容量があるとき、命令キャッシュ制御部４は、リフィルする命令コードのキャッシュデータを取得するとともに、該キャッシュデータにアドレスが隣接する、すなわち本来的に次のインデックスに属する命令コードのキャッシュデータをプリフェッチし、圧縮リフィルユニット４２は、前者のキャッシュデータを圧縮してリプレイスビットＲが示すウェイにリフィルし、後者のプリフェッチしたキャッシュデータを圧縮してＤＡＲに書き込む。
【００３２】
また、ＤＡＲにすでにウェイ４のキャッシュデータが記憶され、かつリプレイスビットＲがウェイ４を示している場合、圧縮リフィルユニット４２は、ＬＣＲのポリシに基づいて圧縮率ビットＣＲが大きい値を示す、ＤＡＲに記憶されているキャッシュデータを含む２つのウェイのキャッシュデータを追い出してから、前記する取得した要求されているキャッシュデータをウェイ０〜ウェイ３のうちの追い出したウェイにリフィルし、取得した次のインデックスのキャッシュデータをＤＡＲに記憶させる。
【００３３】
また、ＤＡＲの記憶領域の容量がＳＭＲ４５の値未満であるとき、命令キャッシュ制御部４は、リフィルする命令コードのキャッシュデータを取得し、リプレイスビットＲが示すウェイに圧縮してリフィルする。
【００３４】
ＤＡＲ制御部４１は、リフィルまたはプリフェッチされたキャッシュデータの書き込みが行われたとき、該当するキャッシュデータの圧縮率ビットＣＲを更新する。ＤＡＲ制御部４１は、プリフェッチされたキャッシュラインの書き込みが行われたとき、書き込まれたＤＡＲのプリフェッチビットＰを「１」とする。
【００３５】
リフィルされたキャッシュデータは、圧縮されていない状態で解凍ユニット４３から命令フェッチユニット５へ出力される。
【００３６】
命令キャッシュ制御部４は、ステップＳ１１の比較結果において、ヒットした場合（ステップＳ１２、Ｙｅｓ）、命令キャッシュデータＲＡＭ１は、前記ヒットしたタグ情報のウェイに対応するキャッシュデータを命令キャッシュデータＲＡＭ１から読み出して命令キャッシュ制御部４に送信し、解凍ユニット４３は該送信されてきた圧縮されているキャッシュデータを解凍して命令フェッチユニット５へ出力する（ステップＳ１５）。
【００３７】
続いて、命令キャッシュ制御部４は、ヒットしたキャッシュデータがプリフェッチされたキャッシュデータであったか否かを判定する（ステップＳ１６）。ヒットしたキャッシュラインがプリフェッチされたキャッシュデータであった場合（ステップＳ１６、Ｙｅｓ）、命令キャッシュ制御部４は、ヒットしたキャッシュデータを現在該キャッシュデータが記憶されているインデックスのＤＡＲから、次のインデックスのＤＡＲに移動させる（ステップＳ１７）。ここで、移動先のＤＡＲの記憶領域に、ヒットしたキャッシュデータを記憶させる十分な容量がない場合、命令キャッシュ制御部４は、リプレイスビットＲが示すウェイのキャッシュデータを追い出し、前記ヒットしたキャッシュデータを記憶させる領域を生成し、該生成した領域に前記ヒットしたキャッシュデータを移動させる。
【００３８】
以上述べたように、第１の実施の形態によれば、命令キャッシュ制御部４がキャッシュデータを圧縮して命令キャッシュデータＲＡＭ１に書き込むように構成したので、生じた余剰の領域であるＤＡＲを使用することができるようになるので、補助キャッシュを設けることなくウェイの追加やプリフェッチしたキャッシュデータの記憶を可能にする命令キャッシュシステムを提供することができる。また、第１の実施の形態によれば、プリフェッチを行わない設定になっている場合、ＤＡＲに同じインデックスに属するキャッシュデータをさらに記憶させることにより、本来的に設定されたウェイの数を越えるウェイを使用することができるようになる。すなわちウェイを増強することができる。また、プリフェッチを行う設定になっている場合、ＤＡＲにプリフェッチした次のインデックスに属するキャッシュデータをさらに記憶させることができるので、プリフェッチ専用の補助キャッシュを配備する必要をなくプリフェッチ機能を使用することができるようになる。
【００３９】
ところで、以上の説明において、圧縮リフィルユニット４２による圧縮の手法については特に言及しなかったが、命令コードのキャッシュデータのサイズを減少させることができる手法であればどのような手法を用いるようにしてもよい。例えば、ＮＯＰ命令など比較的簡単な命令コードまたは命令コードの一部を特定ビットのフラグに変換する圧縮手法を用いても良い。
【００４０】
また、ステップＳ１４において、キャッシュミス発生時におけるリフィルするキャッシュデータにアドレスが隣接するキャッシュデータをプリフェッチするとしたが、プリフェッチ先のアドレスはこれに限定しない。また、命令キャッシュ制御部４は、プリフェッチする前に、プリフェッチ先のアドレスのキャッシュデータが次のインデックスに記憶されているか否かを判定し、記憶されている場合はプリフェッチしないようにしてもよい。また、プリフェッチするキャッシュデータが次のインデックスに記憶されている場合、命令キャッシュ制御部４は、リフィルするキャッシュデータをＤＡＲに記憶させるようにしてもよい。
【００４１】
（第２の実施の形態）
次に、本発明の第２の実施の形態の命令キャッシュシステムについて説明する。一般的に、命令キャッシュデータＲＡＭ１は、一つのインデックスに属する記憶領域が複数のメモリバンクのＲＡＭにわたって記憶されるように構成される。このような命令キャッシュデータＲＡＭ１が読み出し対象のキャッシュデータを読み出す際、命令キャッシュ制御部４が全てのバンクに電力を供給して活性化させると、読み出し対象のキャッシュデータを含まないバンクをも活性化させることとなり、電力の無駄を生じる。第２の実施の形態によれば、命令キャッシュデータＲＡＭ１がキャッシュデータを読み出す際、命令キャッシュ制御部４は、圧縮率ビットＣＲの値に基づいて読み出し対象のキャッシュデータを記憶しているメモリバンクを特定し、該特定したメモリバンクのみ活性化させる。
【００４２】
例えば、図７に示すように、命令キャッシュデータＲＡＭ１は、一つのインデックスに属する記憶領域が１／２固定キャッシュライン長のデータを記憶できるバンク０Ａ、バンク０Ｂ、バンク１Ａ、バンク１Ｂ、バンク２Ａ、バンク２Ｂ、バンク３Ａ、およびバンク３Ｂから構成され、各インデックスのキャッシュデータはウェイ０のキャッシュデータから順に前のキャッシュデータとの間に空白の領域をあけることなくバンク０Ａ〜バンク３Ｂに詰めて記憶されるように構成されているとする。このように構成されている命令キャッシュデータＲＡＭ１において、インデックス１には、ウェイ０〜ウェイ４のキャッシュデータが夫々固定キャッシュライン長の３／４、３／４、７／８、５／８、３／４に圧縮されて記憶されているとする。
【００４３】
ステップＳ２またはステップＳ１２においてインデックス１のウェイ１にヒットしたとする。ステップＳ４またはステップＳ１５に移行すると、命令キャッシュ制御部４は、圧縮率ビットＣＲによりインデックス１の各キャッシュデータの圧縮率はウェイ０から順に３／４、３／４、７／８、５／８、３／４であることを認識しているので、読み出しの対象であるウェイ１のキャッシュデータはバンク０Ｂの１／２のあたりからバンク１Ａの全体にわたって記憶されていることを知る。すると、命令キャッシュ制御部４は、バンク０Ｂおよびバンク１Ａのみを活性化させ、命令キャッシュデータＲＡＭ１に対象のキャッシュデータを出力させる。
【００４４】
このように、第２の実施の形態によれば、命令キャッシュ制御部４は、要求されたキャッシュデータがヒットした場合、該ヒットしたキャッシュデータが書き込まれているメモリバンクを圧縮率情報に基づいて特定し、該特定したメモリバンクを活性化するように構成したので、要求されたキャッシュデータを記憶しているメモリバンク以外に電力を供給することがないので、命令キャッシュシステムを低消費電力化することができる。
【００４５】
ところで、上記説明においては、メモリバンクの構成は、命令キャッシュデータＲＡＭは、一つのインデックスあたり１／２固定キャッシュライン長のデータを記憶できる８つのバンクから構成されているとしたが、一つのメモリバンクが記憶できるデータ長や命令キャッシュデータＲＡＭを構成するメモリバンクの数はこれに限定しない。
【００４６】
（第３の実施の形態）
次に、本発明の第３の実施の形態について説明する。第１の実施の形態によれば、要求されたアドレスにより指定されるインデックスのＤＡＲがＳＭＲ４５に設定されている値以上の記憶容量を有するとき、該インデックスのＤＡＲに新規にキャッシュラインを記憶するようにした。これに対して、第３の実施の形態は、複数のインデックスのＤＡＲを結合して一つのＤＡＲとして使用する。
【００４７】
具体的には、命令キャッシュ制御部４は、どのインデックスのＤＡＲがどのインデックスのＤＡＲと結合されているかを示すレジスタであるインデックスセットレジスタ（Ｉｎｄｅｘ  Ｓｅｔ  Ｒｅｇｉｓｔｅｒ；ＩＳＲ）を有する。命令キャッシュ制御部４は、ＩＳＲにより仮想的に一つに結合されたＤＡＲを、ＦＭＲ４４による設定に基づいて、新規のウェイのキャッシュラインまたはプリフェッチしたキャッシュデータを記憶する領域として使用する。
【００４８】
このように、第３の実施の形態によれば、命令キャッシュ制御部４は、管理している圧縮率に基づき、複数の記憶領域に生じたＤＡＲを仮想的に結合し、該結合したＤＡＲに新たなキャッシュデータを圧縮して書き込むように構成したので、キャッシュデータの圧縮によって生じるＤＡＲを効率的に使用することが可能になる。
【図面の簡単な説明】
【００４９】
【図１】第１の実施形態の命令キャッシュシステムの構成を示す図。
【図２】命令キャッシュデータＲＡＭの構成例を説明する図。
【図３】命令キャッシュタグＲＡＭの構成例を説明する図。
【図４】命令キャッシュタグＲＡＭの状態を説明する図。
【図５】第１の実施の形態の命令キャッシュシステムの第１の動作を説明するフローチャート。
【図６】第１の実施の形態の命令キャッシュシステムの第２の動作を説明するフローチャート。
【図７】第２の実施の形態の命令キャッシュシステムの命令キャッシュデータＲＡＭの構成例を説明する図。
【符号の説明】
【００５０】
１  命令キャッシュデータＲＡＭ、２  命令キャッシュタグＲＡＭ、３  タグ比較器、４  命令キャッシュ制御部、５  命令フェッチユニット、４１  ＤＡＲ制御部、４２  圧縮リフィルユニット、４３  解凍ユニット、４４  ＦＭＲ、４５  ＳＭＲ
【図１】
2010073029.tif 000003
【図２】
2010073029.tif 000004
【図３】
2010073029.tif 000005
【図４】
2010073029.tif 000006
【図５】
2010073029.tif 000007
【図６】
2010073029.tif 000008
【図７】
2010073029.tif 000009