(57)【要約】【課題】  キャッシュシステムにおけるライトバックオペレーションおよびリロードオペレーションを並列に処理するとともに、回路利用の最適化を図る。【解決手段】  キャッシュストレージ内に可動バッファを実装する。データおよびそれに対応するポインタを特定のバッファに不変にアサインすることをせず、バッファは、キャッシュ内を論理的に移動することができる。リロードポインタＲＰ３２５は空きエントリを指定するため、この空きエントリによって、リロードデータを常に格納することができる。ビクティムポインタＶＰ３３０は、次のライトバックオペレーションのためのビクチムエントリの候補を常に指定する。リロードバッファ、ビクティムバッファ、集積されたライトバックバッファのための可動ポインタによって、キャッシュ内部におけるデータの移動を必要としないため、キャッシュミスを効率良く対応することができる。【選択図】  図５
2006031710.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュシステムと、
キャッシュシステムと接続されたキャッシュミス制御手段と、
キャッシュシステムと接続されたライトバック制御手段と、
キャッシュシステムと接続されたスヌープ制御手段と、
ライトバック用バッファ手段と、
リロード用バッファ手段と、
キャッシュエントリを選択するように構成された複数のデータポインタと、
リロードバッファラインを選択しうるリロードバッファライン選択手段と、
データポインタの選択に関係なく、もっとも古いラインを選択しうるライトバック対象選択手段と、
他のデバイスのリクエストに対応するためのバスオペレーションをスヌープするスヌープ手段とを備えることを特徴とするデータ処理システム。
【請求項２】
前記キャッシュミス制御手段は、前記リロードバッファライン選択手段によりリロードバッファラインと接続されることを特徴とする請求項１記載のデータ処理システム。
【請求項３】
前記ライトバック制御手段は、前記ライトバック対象選択手段によりライトバック対象バッファラインと接続されることを特徴とする請求項１記載のデータ処理システム。
【請求項４】
前記スヌープ制御手段は、ディレクトリと接続されていることを特徴とする請求項１記載のデータ処理システム。
【請求項５】
前記ライトバック制御手段は、空きバッファをリロードバッファとしてリザーブするように構成されていることを特徴とする請求項３記載のデータ処理システム。
【請求項６】
前記ライトバック制御手段は、最も過去に用いられたデータラインをライトバック対象ラインとして決定することを特徴とする請求項３記載のデータ処理システム。
【請求項７】
ポインタおよび可動バッファを用いて、キャッシュシステムにおけるライトバックオペレーションおよびリロードオペレーションを扱うデータ処理方法であって、
キャッシュシステムにおいて、プロセッサからロードされるストレージアクセスインストラクションを受信し、
前記キャッシュシステムにおいて、それぞれがキャッシュストレージ内の１つのエントリを指定する各ポインタを記憶し、
ライトバック対象エントリ演算ロジックからライトバック対象エントリ選択オペレーションを実行し、
フリーエントリ演算ロジックからリロードエントリ選択オペレーションを実行し、
プロセッサが要求したストレージアクセス履歴に基づいてライトバック対象エントリを決定し、
すべてのキャッシュ状態に基づいてリロードエントリを決定し、
キャッシュミスに対応するために読み出したデータを格納するための排他的リロードバッファをリザーブし、
ライトバック対象エントリからメモリへのライトバックを実行してさらなるキャッシュミスに対応するためのフリーエントリを得ることを特徴とするデータ処理方法。
【請求項８】
可変ポインタを用いてライトバック対象エントリを指定する手順をさらに有することを特徴とする請求項７記載のデータ処理方法。
【請求項９】
リロードエントリを変動可能に指定する手順をさらに有することを特徴とする請求項７記載のデータ処理方法。
【請求項１０】
ライトバック対象選択ロジックにより、ライトバック対象データをメモリにライトバックする時期を決定し、さらなるキャッシュミスに対応するためのフリーエントリを確保する手順をさらに有することを特徴とする請求項７記載のデータ処理方法。
【請求項１１】
ライトバック対象選択ロジックにより、リロードポインタによる指定に関係なく、最も過去に用いられたバッファを検出する手順をさらに有することを特徴とする請求項７記載のデータ処理方法。
【請求項１２】
コンピュータプログラムを記憶した記憶媒体であって、
前記コンピュータプログラムは、
次のライトバック対象データを選択するロジックを通して、並列したライトバックインストラクションおよびリロードインストラクションを生成するためのコンピュータコードと、
連想式データバッファポインタ移動コマンドを備えたデータバッファ移動コマンドを要求するためのコンピュータコードとを有することを特徴とする記憶媒体。
【請求項１３】
コンピュータシステムにおいて動作し、データのストレージを提供するキャッシュシステムであって、
コンピュータプログラムを有し、
該コンピュータプログラムは、
次のライトバック対象データを選択するロジックを通して、並列したライトバックインストラクションおよびリロードインストラクションを生成するためのコンピュータコードと、
ライトバックバッファを移動するためのものであって、連想式データポインタ移動コマンドを有し、リロードバッファを移動するためのコンピュータコードを備えたコンピュータコードとを有することを特徴とするキャッシュシステム。
【請求項１４】
次のライトバック対象データを選択するロジックを通して、並列したライトバックインストラクションおよびリロードインストラクションを生成する処理と、
連想式データバッファポインタ移動コマンドを備えたデータバッファ移動コマンドを要求する処理とをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、具体的にはキャッシュバッファに関する。
【背景技術】
【０００２】
データの高速なフェッチとストアに対する要望の高まりにつれ、より速いコンピュータシステムが必要とされている。このような要望を満たすために、サイズが小さい連想記憶装置であって、比較的に低いアクセスレイテンシと広い帯域幅を有するキャッシュシステムが用いられてきた。
【０００３】
ライトバックキャッシュシステムにおいて、ストアインストラクションに応じたデータの変更は、キャッシュのみに対して行われる。後に、キャッシュミスを解決するためにメインメモリからリロードされたデータを格納するためのスペースがないときに、変更対象となるデータはキャッシュからメインメモリへライトバックされる。以下の説明において、このような変更対象となるデータをビクティム（犠牲者）データという。
【０００４】
したがって、キャッシュにフリーエントリがないときにおいてキャッシュミスを解決するために、システムは、２つの異なるオペレーションを用いる。１つは、メインメモリから所望のデータを読み出してキャッシュに格納させる「リロード」である。もう１つは、リロードオペレーションのためのフリーエントリを得るために、ビクティムデータをビクティムエントリからメインメモリに書き込む「ライトバック」である。基本的には、ライトバックが終わらないかぎり、リロードオペレーションが実行できない。
【０００５】
従来のライトバックキャッシュシステムは、ライトバックオペレーションの開始後にライトバックされるデータ（ライトバックデータ）を速く移動することができるようにライトバックバッファを用いる。こうすれば、ライトバックオペレーションがライトバックバッファを用いることができ、それによって、リロードオペレーションはビクティムエントリの利用を速やかに開始することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、このようなライトバックバッファは、キャッシュシステムの外に設けられた外部データストレージであり、実装面積と電力消費の点において、キャッシュの設計を難しくしている。
【０００７】
本発明は、上記事情に鑑みてなされ、その目的は、従来のライトバックキャッシュシステムに関連する問題の少なくとも一部を解決することにある。
【課題を解決するための手段】
【０００８】
本発明にかかる態様は、キャッシュシステムにおけるライトバックオペレーションとリロードオペレーションを扱うデータ処理方法に関する。具体的には、キャッシュシステムにおいて、複数のポインタおよび可動バッファを用いて、１つまたは複数のプロセッサからのストレージアクセスインストラクションを受け取る。これらのバッファは、データアレイに集積され、リロードおよびライトバックオペレーションのために用いられることができる。さらに、キャッシュコントローラはキャッシュミスのために特定のリロードバッファをリザーブするとともに、ビクティムをメモリにライトバックすることによってリロードバッファの空き状態を保持して次のキャッシュミスに備える。
【発明を実施するための最良の形態】
【０００９】
以下の説明において、本発明の主旨を理解しやすくするために、多数の具体的な詳細例を用いるが、当業者であれば、これらの詳細例を用いなくても本発明を実施することができる。また、詳細を必要以上に説明することによって本発明の主旨が分からなくなることがないように、従来知られている要素についてはブロック図形式で示す。ネットワーク通信、電磁信号技術などは、本発明の関連分野について通常の知識を有するものにとって本発明の主旨を理解するうえで不必要と思われ詳細ほど、その説明を簡略にしている。
【００１０】
さらに、特記しないかぎり、以下に説明する各機能は、ハードウェア、ソフトウェア、またはそれらの組合せによって実現される。望ましくは、コンピュータまたは電子データプロセッサなど、コンピュータプログラムコードや、ソフトウェアなどのようなコードにしたがって機能するプロセッサ、またはこれらの機能を実行するようにプログラミングされた集積回路によっておのおのの機能を実行する。
【００１１】
図１は、従来の典型的な４ウェイセット連想式ライトバックキャッシュであるキャッシュ１０７を示す。従来のライトバックキャッシュは、キャッシュミスが生じ、かつその合同クラスにおいて空きがない場合に、置換が必要になる。合同クラスセットは、同じインデックスが付けられたキャッシュエントリセットである。図示の例では、キャッシュミスはインデックスｉで生じており、インデックスｉについての合同クラスには、空きスロットがない。ビクティムエントリが選択されてキャッシュ１０７から移動されると、新しいデータがリロードされる。置き換えるためのリロードは、必然的にライトバックに続いて行われるので、キャッシュミスが解決される。
【００１２】
図２は、従来の典型的なキャッシュ置換の動作フローを示す。図示のように、キャッシュ置換のために、２つの連続したメモリオペレーションは必要である。従来のキャッシュは、ライトバックバッファ１０６を用いることによって、この２つのオペレーションを並列的に扱う。
【００１３】
まず、プログラムまたはデバイスは、プロセッサとなるＣＰＵａ１０５に対してインストラクション（リクエスト１０２）を出す。このインストラクションはキャッシュ１０７に伝達され、そのタグ（ユニークな識別子）と、キャッシュ１０７に保存されたタグとの比較が行われる。マッチするタグがあれば、データアクセスオペレーションはキャッシュ内において行われる。一方、マッチするタグがなければ、キャッシュミスが記録され、空き（無効）エントリに新しいデータをリロードするためのリロードオペレーションが始まる。ここで、空きエントリがなく、ビクティム演算ロジックがビクティムエントリを指定している場合、このエントリはビクティムとしてライトバックバッファ１０６に移動され、バスとメインメモリが可能なときにメインメモリにライトバックされる。すなわち可能なキャッシュラインの数がｎであり、そのため、バス１２０を介して転送されてきたデータの格納場所を確保するためにビクティムデータを外に移動しなければいけない。バス１２０は、新しいデータをビクティムエントリラインに転送する。「リロード」と「ライトバック」は、メインメモリ転送オペレーションであり、遅い転送と、システム処理能力の高い消費率をもたらす。
【００１４】
通常、ライトバックバッファ１０６は、ラッチ、フリップフロップ（ＦＦ）、またはより小さいレジスタファイルで実装される。さらに、ラッチおよびレジスタファイルのビットあたりの実装面積や消費電力が大きい場合には、このライトバックバッファをキャッシュデータストレージに統合することで同等の機能をより小さい面積と消費電力で実装することができる。本発明の実施形態にかかるキャッシュシステムは、キャッシュアレイ内部において独立したライトバックキャッシュを設ける代わりに、キャッシュアレイにリロードポインタ１５０を設け、このリロードポインタ１５０によりキャッシュ内において可動リロードエントリ（図３にて詳細を示す）を指定する。こうすることによって、ライトバックと同時に行われるリロードのために、空きスロットまたはリロードエントリが常に指定されるので、ビクティムエントリは、テンポラリなライトバックバッファ１０６に移動されずにメインメモリにライトバックされる。また、リロードポインタ１５０は、キャッシュ内部におけるデータの移動を防ぐために、キャッシュ内を移動して、ライトバックによって生じた可能な空きスロットを指定する。もし、リロードポインタ１５０が一カ所に固定されていると、次のリロードの前に今回のリロードデータを移動しなければならない。
【００１５】
図３は、本発明の実施形態にかかるキャッシュ置換処理の動作フローのプロセスの代表例を示す。ここでは、独立したライトバックバッファを設けていない。キャッシュ１０７内部において、キャッシュアレイの中の少なくても１つのオープンスロットが、リロードエントリとして論理的に接続されている。
【００１６】
フリーエントリが１つしかないときにキャッシュミスが生じると、ビクティムポインタ演算ロジックによって新しいビクティムが選択される。そして、新しいデータ１０３がリロードバッファにロードされるのと同時に、ビクティムデータが、メインメモリの対応する領域に記憶されたデータよりアップデートされていれば、ビクティムはバス１２０に出力される。この処理が終わると、リロードポインタ１５０は更新される。
【００１７】
図４は、典型的なプロセッサキャッシュシステム１００の接続図である。ＣＰＵａ１０５とＣＰＵｂ１１０は、標準構成のバス構造を用いて、それぞれのキャッシュ、すなわちキャッシュ１０７とキャッシュ１１２を介してデータやコマンドなどのストアと読み出しを行う。ここで、２つのプロセッサを示しており、この２つのプロセッサは、並列に動作し、かつ互いに主従関係がないですが、同じ結果を得ることができれば、プロセッサの構成、プロセッサの数は任意である。バスインタフェースユニット、すなわちバスＩＦ１０９とバスＩＦ１１４は、キャッシュシステムからメインメモリに対するリクエストを扱う。
【００１８】
キャッシュシステム１０７とキャッシュシステム１１２は、プロセッサからストレージオペレーションリクエストを受け取り、このリクエストに応じてキャッシュストレージにアクセスする。たとえばキャッシュシステム１０７にキャッシュミスがあると、このキャッシュミスを解決するために、キャッシュシステム１０７は、バスＩＦ１０９に、メインメモリ１４０または同じ階層のほかのキャッシュにアクセスするリクエストを出す。ｎ個のプロセッサがあり、ｘ個のキャッシュミスが同時に（連続的にまたは並列的に）生じた場合には、メモリコントローラ１３０は、もっとも緊急なキャッシュミスが優先的に対処されるように、各キャッシュミスのインプット／アウトプット順を決定する。キャッシュストレージにおいて、キャッシュミスのためにメインメモリから読み出したデータを格納する空きがない場合、キャッシュシステム１０７は、ビクティムデータをメインメモリ１４０にライトバックするために、ビクティムエントリをリクエストするライトバックリクエストを発行する。
図５は、典型的なキャッシュシステムを示すブロック図である。このシステムには、３つの互いに独立する有限状態マシン（ＦＳＭ）が含まれている。なお、ＦＳＭの数は、３に限られることがない。
【００１９】
キャッシュミスＦＳＭ３０５はキャッシュミスを扱い、ライトバックＦＳＭ３１０はライトバックを扱う。スヌープＦＳＭ３１５は、バスに接続されているほかのデバイスからのスヌープリクエストの受信および実行を扱う。２つのデータポインタＲＰ３２５とＶＰ３３０が備えられている。ＲＰ３２５は、キャッシュミスＦＳＭ３０５により扱われるキャッシュミスのためのポインタであり、ＶＰ３３０は、ライトバックＦＳＭ３１０により扱われるライトバックのためのビクティムポインタである。キャッシュミスのために読み出したデータは、ＲＰ３２５により指定されたエントリに格納されるので、ＲＰ３２５により指定されたキャッシュエントリは、いかなるときにキャッシュミスが生じても空き状態であるようにしなけばならない。
【００２０】
キャッシュ１０７にフリーエントリ（ＲＰ３２５により、キャッシュミスを扱うために指定したエントリを除く）がない場合、ＶＰ３３０により指定されるエントリを得るためのライトバックリクエストが発行される。ＲＰ３２５は、フリーエントリ演算ＦＥ３４０によってフリーエントリを指定するように保持されている。ライトバックが終了すると、ビクティムエントリがライトバックリクエストによって無効にされているため、ＲＰ３２５は、ビクティムエントリの値に更新され、次のキャッシュミスに備える。次のライトバックリクエストに備え、ＶＰ３３０も、後述するビクティムポインタ演算器ＶＥ３５０により更新される。多くの場合において、ＶＰ３３０の位置を得るためにＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムによる演算も行われる。キャッシュミスデータ（リロードデータ）はＲＰ３２５により指定されたエントリに直接格納されるとともに、ライトバックデータはＶＰ３３０により指定されたエントリから直接ライトバックされるため、キャッシュ内部において、ビクティムエントリからライトバックエントリへの不必要なデータ移動を避けることができる。これによって、パフォーマンスが向上する。
【００２１】
図５に示すキャッシュシステムは、キャッシュ１０７のストレージエリアに対応するディレクトリ（Ｄ３２０）を備える。このディレクトリとキャッシュは接続されて連想記憶装置、すなわちＣＡＭ３６０を形成する。Ｄ３２０は、キャッシュストレージの各位置に記憶されたデータのタグとキャッシュ状態とを対応付けて記憶する。タグは、ターゲットアドレスを特定のディレクトリと結び付けることができる情報である。キャッシュ状態は、単一のバスシステムによって接続されたマルチプロセッサシステム間のキャッシュ一貫性を保持するための、キャッシュエントリのデータ属性である。すべてのキャッシュシステムは、キャッシュ一貫性プロトコルについて、全体のキャッシュ一貫性を保持しなければならない。キャッシュミスＦＳＭ３０５、ライトバックＦＳＭ３１０、スヌープＦＳＭ３１５は、Ｄ３２０のようなディレクトリを用いて通信し、ターゲットキャッシュエントリのための情報の取出しと、キャッシュ状態の一貫した更新を行う。ビクティムポインタ演算器ＶＥ３５０は、ＬＲＵ３４５から情報を取り出してビクティムポインタＶＰ３３０を計算する。バスＩＦ１０９は、バス１２０へのインタフェースであり、バス１２０は、システムバス、メモリバス、サウスブリッジまたはほかのデータ通信パスウエイとすることができる。３つのＦＳＭは、バスＩＦ１０９を介して通信し、バス１２０を介してリクエストの送受信を行う。
【００２２】
バスＩＦ１０９からのスヌープコマンドは、スヌープＦＳＭ３１５にスヌープコマンドにかかる処理を開始させる。また、バスＩＦ１０９は、いずれか１つまたは複数のＦＳＭからのリクエストにしたがって、キャッシュ１０７とバス１２０間のデータ転送を扱う。
【００２３】
本発明は、多様な形態で実施することができる。本発明の趣旨から逸脱しないかぎり、前述した実施形態の種々のバリエーションを実施してもよい。ここでその概要について説明した機能は様々な設計およびプログラミングモデルで実現することが可能である。ここでの説明は、特定の設計またはプログラミングモデルが望ましいことではなく、それに基づいてこれらの設計またはプログラミングモデルを構成することができる基本思想を示唆するものである。
【００２４】
したがって、本発明のいくつかの主要な特徴について説明したが、これらの特徴は、具体例であって、本発明の機能を限定するものではない。上述した実施形態に対して、バリエーションを増やしたり、構成要素の修正、変更、置換などを行ってもよい。場合によっては、上述した本発明の機能のうちの一部を、ほかの機能と関連せずに用いてもよい。当業者は上記説明に基づいて種々の修正、改良を施してもよい。したがって、請求項に対して、本発明の基本思想の範囲内において広く解釈すべきである。
【図面の簡単な説明】
【００２５】
【図１】従来の典型的な４ーウェイセット連想式ライトバックキャッシュを示す図である。
【図２】従来の典型的なキャッシュ置換の動作フローを示す図である。
【図３】本発明の実施形態にかかるキャッシュ置換の動作フローのプロセスの代表例を示す図である。
【図４】典型的なプロセッサキャッシュシステムの接続図である。
【図５】典型的なキャッシュシステムを示すブロック図である。
【符号の説明】
【００２６】
１０２  リクエスト、  １０３  新しいデータ、  １０５  ＣＰＵａ、１０６  ライトバックバッファ、  １０７  キャッシュ、  １０９  バスＩＦ、  １１０  ＣＰＵｂ、  １１２  キャッシュ、  １１４  バスＩＦ、  １２０  バス、  １３０  メモリコントローラ、  １４０  メインメモリ、  １５０  リロードポインタ、  ２００  マルチプロセッサシステム、  ３０５  キャッシュミスＦＳＭ、  ３１０  ライトバックＦＳＭ、  ３１５  スヌープＦＳＭ、  ３２０  ディレクトリＤ、  ３２５  リロードポインタＲＰ、  ３３０  ビクティムポインタＶＰ、  ３４０  フリーエントリ演算ＦＥ、  ３４５  ＬＲＵ、  ３５０  ビクティムエントリ演算ＶＥ、  ３６０  連想記憶装置ＣＡＭ。
【図１】
2006031710.tif 000003
【図２】
2006031710.tif 000004
【図３】
2006031710.tif 000005
【図４】
2006031710.tif 000006
【図５】
2006031710.tif 000007