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