(57)【要約】マルチプロセッサシステムにおいて、与えられたプロセッサのバンクされたキャッシュへのアクセスは、共有データアクセスが共有データを保持するための指定された１つ以上のバンクへ指示され、および/または非共有データアクセスが非共有データを保持するための指定された１つ以上のバンクへ指示されるように制御される。非共有データバンクは非共有データの保持のために排他的に指定され、その結果、共有データアクセスはそのバンクへの非共有アクセスと干渉しない。さらに、共有データバンクは共有データの保持のために排他的に指定され、１つ以上のバンクが共有および非共有データの両方を保持するために指定されてもよい。アクセス制御回路は、アクセスと関連して共有の指示信号を受け取ることに基づいて、それぞれのバンクへ共有および非共有アクセスを指示する。さらに、１つ以上の実施例では、アクセス制御回路はバンク構成信号に応答する１つ以上のバンク指定を再構成する。【選択図】      図２
2008542923.tif 000002
【特許請求の範囲】
【請求項１】
バンクされたキャッシュにおいて、少なくとも１つのバンクのための共有データキャッシュアクセスおよび非共有データキャッシュアクセスの間の干渉を減少させる方法であって、
第１のタイプのデータを保持するためのバンクされたキャッシュの１つ以上の第１のバンクを指定し、前記第１のタイプのデータは共有データおよび非共有データのうちの１つであり、
第１のタイプのデータのためのキャッシュアクセスを１つ以上の第１のバンクに指示することを含む方法。
【請求項２】
さらに、第２のタイプのデータを保持するためのバンクされたキャッシュの１つ以上の第２のバンクを指定し、前記第２のタイプのデータは他の１つの共有および非共有データであり、第２のタイプのデータのためのキャッシュアクセスを１つ以上の第２バンクへ指示することを含む請求項１の方法。
【請求項３】
第１のタイプのデータを保持するためのバンクされたキャッシュの１つ以上の第１のバンクを指定することは、共有データを保持するためにバンクされたキャッシュの第１のキャッシュバンクを指定することを含み、第２のタイプのデータを保持するための１つ以上の第２のキャッシュバンクを指定することが、非共有データを保持するためのバンクされたキャッシュの第２のキャッシュバンクを指定することを含む請求項２の方法。
【請求項４】
第１のタイプのデータのためのキャッシュアクセスを１つ以上の第１のバンクに指示することは、共有データのためのキャッシュアクセスを第１のキャッシュバンクへ指示することを含み、さらに非共有データのためのキャッシュアクセスを第２のキャッシュバンクへ指示することを含む請求項３の方法。
【請求項５】
さらに、第２のタイプのデータを保持するためのバンクされたキャッシュの１つ以上の第２のバンクを指定することを含み、前記第２のタイプのデータは共有および非共有データの他の１つであり、第２のタイプのデータのためのキャッシュアクセスを１つ以上の第２のバンクへ指示する請求項１の方法。
【請求項６】
第１のタイプのデータを保持するためのバンクされたキャッシュの１つ以上の第１のバンクを指定することは、第１のタイプのデータを保持するためのバンクされたキャッシュの少なくとも１つのバンクを排他的に指定することを含む請求項１の方法。
【請求項７】
第１のタイプのデータを保持するためのバンクされたキャッシュの１つ以上の第１のバンクを指定することは、第１のタイプのデータおよび第２のタイプのデータの混合を保持するためのバンクされたキャッシュの少なくとも１つのバンクを指定することを含み、前記第２のタイプのデータは他の１つの共有および非共有データである請求項１の方法。
【請求項８】
第１のタイプのデータのためのキャッシュアクセスを１つ以上の第１のバンクに指示することは、キャッシュアクセスが第１のタイプのデータ向けであるかどうかを示すアクセスタイプ指標信号に応答するバンク選択機能を構成することを含む請求項１の方法。
【請求項９】
キャッシュアクセスが第１のタイプのデータ向けであるかどうかを示すアクセスタイプ指標に応答するバンク選択機能を構成することは、１つ以上のキャッシュアクセスアドレス信号およびアクセスタイプ指標信号の関数として、バンクされたキャッシュの特定のバンクにおける特定の位置に与えられたキャッシュアクセスを指示するバンク選択機能を構成することを含む請求項８の方法。
【請求項１０】
第１のタイプのデータを保持するためのバンクされたキャッシュの１つ以上の第１のバンクを指定することは、個々のキャッシュアクセスが第１のタイプのデータを含んでいるかどうかを示すアクセスタイプ指標信号に応答するように、バンクされたキャッシュにおける特定のバンクへキャッシュアクセスを指示するために使用されるバンク選択機能を構成することを含む請求項１の方法。
【請求項１１】
バンクされたキャッシュの１つ以上の第１のバンクの指定を変更することを必要とされたとき、バンク選択機能を再構成することをさらに含む請求項１０の方法。
【請求項１２】
指定の変更に応答してバンクされたキャッシュの１つ以上の第１のバンクから現在キャッシュされたデータをフラッシュすることをさらに含む請求項１１の方法。
【請求項１３】
共有データのためのキャッシュアクセスと非共有データのためのキャッシュアクセスとの間のバンクされたキャッシュにおけるキャッシュアクセス干渉を減少させる方法であり、バンクされたキャッシュの少なくとも１つのキャッシュバンクにおける共有および非共有データの混合を減少または除去することを含む方法。
【請求項１４】
バンクされたキャッシュの少なくとも１つのキャッシュバンクにおける共有および非共有データの混合を減少または除去することは、共有データを保持するためのバンクされたキャッシュの１つ以上のバンクを指定し、共有データのためのキャッシュアクセスを指定された１つ以上のキャッシュバンクに指示することを含む請求項１３の方法。
【請求項１５】
バンクされたキャッシュの少なくとも１つのキャッシュバンクにおける共有および非共有データの混合を減少または除去することは、非共有データを保持するためのバンクされたキャッシュの１つ以上のバンクを指定し、非共有データのためのキャッシュアクセスを指定された１つ以上のキャッシュバンクに指示することを含む請求項１３の方法。
【請求項１６】
第１のタイプのデータを保持するために指定されたバンクされたキャッシュの１つ以上の第１のキャッシュバンクに第１のタイプのデータのためのキャッシュアクセスを指示することにより、共有データキャッシュアクセスおよび非共有データキャッシュアクセス間の干渉を減少させるように構成され、前記第１のタイプのデータが共有データおよび非共有データの１つである、アクセス制御回路を含むバンクされたキャッシュ。
【請求項１７】
アクセス制御回路が、第２のタイプのデータのためのキャッシュアクセスをバンクされたキャッシュの１つ以上の第２のキャッシュバンクに指示するように構成され、第２のタイプのデータが共有および非共有データの他の１つである請求項１６のバンクされたキャッシュ。
【請求項１８】
アクセス制御回路は、与えられたキャッシュアクセスが、与えられたキャッシュアクセスと関連してバンクされたキャッシュに供給されるアクセスタイプ指標信号に基づいて、第１または第２のタイプのデータ向けであるかどうかを判断するように構成される、請求項１７のバンクされたキャッシュ。
【請求項１９】
アクセス制御回路はキャッシュアクセスと関連したアクセスタイプ指標信号を受け取ることに基づいてバンク選択機能を実施するように構成され、与えられたキャッシュアクセスが第１のタイプのデータ向けであることをアクセスタイプ指標信号が示す場合に、アクセス制御回路が与えられたキャッシュアクセスを１つ以上の第１のキャッシュバンクに指示するように構成される、請求項１６のバンクされたキャッシュ。
【請求項２０】
１つ以上の第１のキャッシュバンクの少なくとも１つが第１のタイプのデータを保持するために排他的に指定される、請求項１６のバンクされたキャッシュ。
【請求項２１】
１つ以上の第１のキャッシュバンクの少なくとも１つが第１のタイプのデータを保持のために非排他的に指定される、請求項１６のバンクされたキャッシュ。
【請求項２２】
アクセス制御回路は１つ以上の第１のキャッシュバンクの指定を変更することを可能にするように構成可能である、請求項１６のバンクされたキャッシュ。
【発明の詳細な説明】
【発明の分野】
【０００１】
本発明は、一般にマイクロプロセッサに係り、特にマイクロプロセッサキャッシュの管理に関する。
【発明の背景】
【０００２】
より高い性能のマイクロプロセッサは、主メモリの基底量および緊密にプロセッサ速度にメモリの速度を一致させるために１以上の高レベルの小さくより速いキャッシュメモリを含む階層的メモリ構造をしばしば使用する。例えばレベル１（Ｌ１）キャッシュは一般にオンチップに存在し、マイクロプロセッサに利用可能な最も小さく、最も速いキャッシュを表わす。またレベル２（Ｌ２）キャッシュはオンチップあるいはオフチップに存在し、多少遅いが、典型的にマイクロプロセッサのためのＬ１キャッシュよりキャッシュメモリの大きな量を提供する。マイクロプロセッサと主メモリの間に追加のレベルの次第により遅い（かつより大きな）キャッシュメモリがあってもよい。
【０００３】
動作において、キャッシュメモリは、マイクロプロセッサと（比較的）遅い主メモリの間のバッファとして作動し、マイクロプロセッサによって恐らく最も必要な命令および/またはデータのコピーを保持するために使用される。必要とされる命令またはデータ項目のコピーがキャッシュに存在する場合、マイクロプロセッサは主メモリにアクセスする代わりにそのコピーを読み取り／書き込み、それにより潜在的に主メモリアクセスに関連したはるかに長いアクセス遅れを回避する。
【０００４】
キャッシュ動作はマルチプロセッサ環境においてより複雑になり、ここで２個以上のマイクロプロセッサがメモリ空間を共有する。そのような環境では、２個以上のマイクロプロセッサが主メモリから同じデータをキャッシュするかもしれない。すなわち、多数のマイクロプロセッサは各々、主メモリからの同じデータ項目のコピーをキャッシュするかもしれない。各マイクロプロセッサが与えられたデータ項目の最近の最新の値にアクセスすることを保証するために、マイクロプロセッサ中のキャッシュを同期させるある方法が使用されなくてはならない。キャッシュの同期は、個々のマイクロプロセッサが、その値が他のマイクロプロセッサの動作を通して古くなるデータ項目を使用するのを防ぐために、あるメカニズムを提供することによりキャッシュ「コヒーレンシイ」を維持する。キャッシュの同期はハードウェア強化コヒーレンシイ、あるいはキャッシュ管理命令を通してソフトウェアによって管理することができる。
【０００５】
１つのタイプのハードウェア強化キャッシュコヒーレンシイは「放送」タイプアプローチである。キャッシュ同期への放送に基づいたアプローチは、一般にデータメモリ動作と関係するメッセージを送信する各マイクロプロセッサに依存する。順番に、個々のマイクロプロセッサ、あるいはそれらのキャッシュコントローラ、モニタは、他のマイクロプロセッサの行動がそれらの関連するキャッシュに保持されたデータ項目を無効にしたかどうか判断するそれらのメッセージを「スヌープする」。
【０００６】
これらのいわゆる「スヌーピー」バスの使用は、マルチプロセッサシステムでキャッシュコヒーレンシイを維持する比較的簡単で有効な方法を表わす。しかしながら、与えられたキャッシュへのスヌープトラヒックアクセスが、マイクロプロセッサによってローカルに生成されたキャッシュアクセスに使用される同じ「ポート」あるいはアクセスバス上で典型的に支援されるので、スヌーピーバスはキャッシュメモリの有効なアクセス帯域幅を減少させることができる。スヌープトラヒックの量はマイクロプロセッサ総数が増加するとき著しく増加し、結局、スヌープトラヒックの量は全体のシステム性能を著しく制限することができる。
【０００７】
スヌープトラヒックの高い容量によって提起されたキャッシュアクセス干渉問題への様々な回避策は、マルチポートされたキャッシュメモリの使用を含み、スヌープトラヒックおよびローカルに発生されたトラヒックは異なるポートでキャッシュにアクセスする。しかしながら、そのような構成はキャッシュのサイズ、電力消費および費用を著しく増加させる場合がある。
【発明の概要】
【０００８】
バンクされたキャッシュ管理方法の少なくとも１つの実施例では、共有データキャッシュアクセス（例えば、スヌープトラヒックと関連されたキャッシュアクセス）および非共有データキャッシュアクセスとの間の干渉は、バンクされたキャッシュの少なくとも１つのキャッシュバンクにおける共有データおよび非共有データの混合を減少または除去することにより減少される。そのような混合の減少または除去は、共有データを保持し、指定された１つ以上のキャッシュバンクに共有データのためのキャッシュアクセスを指示するために、バンクされたキャッシュの１つ以上のバンクを指定することを含み得る。さらに、あるいは代わりに、そのような混合は、非共有データを保持し、指定された１つ以上のキャッシュバンクに非共有データのためのキャッシュアクセスを指示するために、バンクされたキャッシュの１つ以上のバンクを指定することにより減少または除去され得る。
【０００９】
例えば、与えられたキャッシュアクセス（読むまたは書く）は、１つ以上のキャッシュアクセスアドレス信号によって少なくとも一部分駆動される「バンク選択機能」に従って、特定のキャッシュバンクの特定のキャッシュ位置へ導かれる。ここに使用されるように、用語「バンク選択機能」は、特定のキャッシュアクセスアドレスに関して特定のバンクを選択するために使用される様々な異なる方法およびアルゴリズムを包含する。例えば、用語はアドレスおよび/または他の信号ハッシュ関数をカバーするか、あるいは簡単なアドレスデコーディングを表わすことができる。
【００１０】
しかしながら、バンク選択機能は、ここに教示されるようなキャッシュ管理の少なくとも１つの実施例に従って実施され、アクセスタイプ指標（例えば、共有アクセス指標）は、共有データおよび/または非共有データのためのキャッシュアクセスが、バンクされたキャッシュの１つ以上の指定されたバンクに指示（操縦）されるように、バンク選択機能を修正する。例えば、バンク選択機能は、共有アクセスバンクあるいは混合（共有及び非共有）アクセスバンクへの共有アクセスを指示され得る。そのような行動は、共有データを保持するための指定されたバンクにおける共有データに関してキャッシュアクセス活動を「集中させる」。同様に、アクセスタイプ指標は、非共有アクセスバンクあるいは混合アクセスバンクに非共有アクセスを指示し、非共有データを保持するための指定されたバンクの非共有データに関してキャッシュアクセス活動を集中させるために、バンク選択機能を修正するように使用されてもよい。両方の場合において、共有データアクセスおよび非共有データアクセス間の干渉は、バンクされたキャッシュにおける少なくとも１つのバンクについて減少または除去される。
【００１１】
バンクされたキャッシュにおける少なくとも１つのバンクのための共有データキャッシュアクセスおよび非共有データキャッシュアクセス間の干渉を減少させる広い方法は、第１のタイプのデータを保持するためのバンクされたキャッシュの１つ以上の第１のバンクを指定し、第１のタイプのデータは共有データおよび非共有データのうちの１つであり、第１のタイプのデータのためのキャッシュアクセスを１つ以上の第１のバンクに指示することを含む。方法はさらに、第２のタイプのデータを保持するためのバンクされたキャッシュの１つ以上の第２のバンクを指定し、前記第２のタイプのデータは他の１つの共有および非共有データであり、第２のタイプのデータのためのキャッシュアクセスを１つ以上の第２のバンクへ指示することを含んでもよい。任意のあるいはすべてのそのような指定は排他的あるいは非排他的（混合された）であってもよい。
【００１２】
上記の方法を具体化するバンクされたキャッシュの１つの実施例、すなわち上記の方法の変形は、第１のタイプのデータを保持するために指定されたバンクされたキャッシュの１つ以上の第１のキャッシュバンクに第１のタイプのデータのためのキャッシュアクセスを指示することに基づいて、共有データキャッシュアクセスおよび非共有データキャッシュアクセス間の干渉を減少させるように構成され、第１のタイプのデータが共有データおよび非共有データのうちの１つであるアクセス制御回路を含む。アクセス制御回路は、さらにバンクされたキャッシュの１つ以上の第２のキャッシュバンクへの第２のタイプのデータのためのキャッシュアクセスを指示してもよく、第２のタイプのデータは共有または非共有のデータの他の１つである。
【００１３】
そのような実施例では、アクセス制御回路は、アクセスタイプ指標に直接あるいは間接的に応答してもよく、指標はキャッシュアクセスと関連したバンクされたキャッシュに供給される共有アクセス信号であるかもしれない。論理状態または値、あるいは与えられたキャッシュアクセスが共有された（あるいは共有されない）データ向けかどうか示す共有アクセス指標信号の他のある特徴、およびアクセス制御回路のバンク選択機能は、従って適切なキャッシュバンクにキャッシュアクセスを指示するために修正される。
【００１４】
バンク選択機能は、さらにバンク構成信号によって修正されてもよい。すなわち、バンクされたキャッシュの構成は、共有データ、非共有データ、または混合されたデータのためにある１つ以上のバンクの指定が変更され得るように、必要によりまたは所望により変更されてもよい。そのような変更はコンピュータオペレーティングシステムレベルで制御され、および/またはバンクされたキャッシュに関連したプロセッサ上で作動する個々のプログラムによって制御されてもよい。
【好ましい実施形態の詳細な説明】
【００１５】
図１は、複数のマイクロプロセッサ１０、および主メモリ１６にシステムバス１４によって接続された関連するメモリキャッシュ１２を含むマルチプロセッサ回路８を少なくとも部分的に示す。プロセッサ１０は、１つの集積回路素子、システムオンチップ回路（マルチチップモジュール）のように一緒に実施されてもよいし、あるいは別々に実施されてもよい。同様に、キャッシュメモリ１２は全体あるいは一部分プロセッサ１０へ統合されてもよいし、あるいは別々に実施されてもよい。例えば、キャッシュ１２−１は、プロセッサ１０−１に含まれているレベル１（Ｌ１）キャッシュを含んでいてもよいし、内部にあるいは外部的に実施されるレベル２（Ｌ２）キャッシュを含んでいてもよい。プロセッサ１０−１の示された実施例は、多くのメモリ管理の特徴を含んでいるキャッシュコントローラ１８−１を含んでいる。同様の構成は、プロセッサ１０−２および１０−３、およびそれらの対応するキャッシュ１２−２および１２−３に使用されてもよい。
【００１６】
もちろん、プロセッサ１０およびキャッシュ１２のために選ばれた一般的な物理的な実施は、一般にキャッシュアクセス制御方法およびここに議論した装置に密接な関係がなく、当業者は様々な回路実施の変化の機会を認識するだろう。例えば、示されたより大きいかより小さい数のプロセッサ１０および対応するキャッシュ１２が、必要によりまたは所望により使用されてもよい。
【００１７】
これらの変化を念頭において、マルチプロセッサ回路８は対称的な多重処理（ＳＭＰ）回路として作動し、そこではプロセッサ１０は協働的に１つ以上のコンピュータプログラム、プログラムスレッドなどを実行する。プロセッサ１０は各々、１つ以上の命令実行パイプラインをもつコアユニットを含み、さらに命令とデータの予測キャッシングのためのプリフェッチユニット、メモリマッピングと許可などを追跡する変換索引バッファを含む、縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサを含んでもよい。また注意されることとして、プロセッサ１０の各１つはさらにキャッシュコントローラ１８を含み、それは、キャッシュ１２のそれぞれの１つへ、システムバス１４へおよび主メモリ１６へプロセッサをインタフェースするより大きなメモリ管理ユニットの一部を含んでいてもよい。もちろん、プロセッサ１０の各々はさらに、デバッグ回路などのように、示されない機能要素を含んでもよい。
【００１８】
主メモリ１６は、任意の１つ以上のプロセッサ１０により作動されるデータを保持するために使用された「共有される」メモリの１つ以上の範囲、およびプロセッサ１０の特定のものによる使用のための「共有されていない」メモリの範囲で構成されてもよい。その文脈において、プロセッサ１０はそれぞれ、キャッシュ１２の対応する１つに非共有および共有データの混合をキャッシュしてもよい。１つ以上の実施例では、キャッシュ１２の少なくとも１つは２つ以上のキャッシュバンクを含むバンクされたキャッシュとして構成される。好ましくは異なるバンクは、１つのバンクへのアクセスが他のバンクへのアクセスに干渉しないように、独立したアクセス可能性を提供する。
【００１９】
キャッシュ１２中のデータコヒーレンシイを維持する必要のために、多重処理回路８は「スヌーピー」プロトコルと呼ばれるデータコヒーレンシイプロトコルに基づいた１つ以上の「放送」の形式を使用する。スヌープを用いて、共有データのキャッシュされたコピー上でプロセッサ１０のうちの１つによるオペレーションは、残りのプロセッサ１０によって認識され、その結果、適切なキャッシュフラッシングおよび/または主メモリ更新は、プロセッサ１０の各１つがその共有データの有効で現在のコピーにより作動することを保証するようになされるかもしれない。
【００２０】
限定ではない例の方法により、多重処理回路のスヌーピングプロトコルは、書き込み放送に基づいてもよく、プロセッサ１０の各１つおよび/または送られたキャッシュ１２はシステムバス１４上ですべて書き、その結果、他のプロセッサ／キャッシュが必要なときそれらのそれぞれのキャッシュされたデータを更新することができる。代わりに、書込み無効プロトコルが使用され、キャッシュ１２のうちの１つで与えられたキャッシュラインに書くことが、任意の他のキャッシュ１２に存在する同じキャッシュラインを無効にさせる。
【００２１】
（「キャッシュライン」は、一般に、主メモリ中の特定のアドレス範囲からキャッシュされる与えられたデータブロックを含む。）もちろん、他のスヌーピングプロトコルが、修正された-共有の-無効な（Modified -Shared-Invalid（ＭＳＩ））、修正された-排他的な-共有の-無効な（Modified -Exclusive- Shared-Invalid（ＭＥＳＩ））、または修正された-所有者-排他的な-共有の-無効な（Modified -Owner-Exclusive- Shared-Invalid（ＭＯＥＳＩ））のように、多重処理回路８のために実施されることができる。
【００２２】
システムバス１４上で流れるトラヒックをスヌープする１つ以上の形式で、キャッシュ１２へのアクセスはキャッシュ１２を横切って維持する共有データコヒーレンシイに関連したスヌープトラヒックの重要な量を含んでいてもよい。さらに、プロセッサ１０のそれぞれは、その関連するキャッシュ１２に保持された共有データおよび非共有データの両方へのローカルアクセスを作り、その上で実行するコードの必要条件を満たす。例えば、キャッシュ１２−１へのアクセスは、データコヒーレンシイを維持するためのスヌープ関連共有データアクセス、およびプログラム命令のその進行中の実行と関連して実行されたプロセッサ１０−１によるローカルアクセスの混合を含む。通常、同じキャッシュポートに対するスヌープ関連および動作関連アクセス、あるいはバンクされたキャッシュにおける同じバンクへのアクセスは、全体のキャッシュアクセス帯域幅の点から互いと競合する。したがって、従来方式では、スヌープトラヒックは利用可能なキャッシュメモリ帯域幅に関して非スヌープキャッシュアクセスと競争することにより、有効な性能を減少させる。
【００２３】
図２は、プロセッサ１０−１（また「Ｐ１」と呼ばれる）およびその関連するキャッシュ１２−１の１つの実施例を示す。実例では、バンクされたキャッシュ１２−１はアクセス制御回路２０および４つのキャッシュバンク２２−１乃至２２−４を含む。キャッシュバンク２２のより多いかより少ない数が必要または所望により実施されてもよい。さらに、バンクされたキャッシュ１２−１がオフチップＬ２キャッシュを含む場合、バンクされたキャッシュ１２−１の一部としてのアクセス制御回路２０の実施は有利かもしれない。しかしながら、１つ以上の実施例では、アクセス制御回路２０はプロセッサ１０−１の一部として、オンボードで実施される。そのような実施例では、アクセス制御回路２０はキャッシュコントローラ１８−１の一部として実施されてもよい。
【００２４】
どんな場合も、オペレーションでは、アクセス制御回路２０は非共有データあるいは共有データに関連づけられているようなキャッシュアクセスを認識し、バンク２２に関連した、非共有／共有指定によってそれらのアクセスを相応して指示する。１つ以上の実施例では、そのような認識は、アクセス制御回路に共有アクセス指標信号および/またはバンク構成信号を供給するプロセッサ１０−１に基づく。同じあるいは同様の構成は任意の１つ以上のプロセッサ１０−２および１０−３（つまりＰ２、Ｐ３）、およびそれらに対応するキャッシュ１２−２および１２−３のために適用されてもよい。
【００２５】
それでも、バンク２２のうちの１つへのアクセスが残りのバンク２２へのアクセスと干渉をしないように、与えられた１つのバンクされたキャッシュ１２内のバンク２２の各々は、好ましくは独立してアクセス可能である。そのキャッシュ構成で、バンク２２の１つ以上は、非共有データ、共有データの保持、あるいはそれらの混合のために指定され得る。
【００２６】
バンク２２の特定のものが排他的に非共有データの保持に対して指定されれば、共有データコヒーレンシイを維持するのに関連したスヌープ関連アクセスは、バンク２２のそれらの特定のものに対してローカルな非共有データアクセスと干渉することはないであろう。もちろん、バンク２２の特定のものは、排他的に共有データの保持のために、あるいは共有および非共有データの混合の保持のために指定されてもよい。一般に、バンク２２の異なるものは、共有されていない使用、共有された使用あるいは混合された使用のために指定されることができ、また、バンク２２の少なくとも１つのためにローカルプロセッサアクセス帯域幅を保存する方法は、その少なくとも１つのバンクから共有データを排除することを含む。この方法で共有および非共有データアクセスを指示することは、バンク２２の特定のものに関連した異なる指定に依存する。
【００２７】
より広く、アクセス制御回路２０の実施例は、バンクされたキャッシュにおける少なくとも１つのバンクについて、共有データキャッシュアクセスおよび非共有データキャッシュアクセス間の干渉を減少させる方法を実施するように構成することができる。例えば、アクセス制御回路２０は、共有データおよび非共有データのうちの１つである第１のタイプのデータを保持し、１つ以上の第１のバンクに第１のタイプのデータについてキャッシュアクセスを指示するためのバンクされたキャッシュ１２の１つ以上の第１のバンク２２を指定することにより、そのような干渉を減少してもよい。アクセスは、キャッシュアクセスと関連したアクセス制御回路１２に供給されるアクセスタイプ指標に基づいた第１のタイプのデータをターゲットとすることと認識されてもよい。
【００２８】
アクセス制御回路２０は、共有および非共有データの他の１つである第２のタイプのデータを保持し、１つ以上の第２のバンク２２へ第２のタイプのデータについてキャッシュアクセスを指示するためのバンクされたキャッシュ１２の１つ以上の第２のバンク２２を指定するようにさらに構成されてもよい。そのような実施例では、第１のタイプのデータを保持するためのバンクされたキャッシュ１２の１つ以上の第１のバンク２２を指定することが、共有データを保持するための第１のキャッシュバンク２２を指定することを含んでもよい。同様に、第２のタイプのデータを保持するための１つ以上の第２のキャッシュバンク２２を指定することは、非共有データを保持するための第２のキャッシュバンク２２を指定することを含んでもよい。
【００２９】
そのような配置で、第１のタイプのデータのためのキャッシュアクセスは、キャッシュバンク２２のその第１のものへ導かれ、また、非共有データのためのキャッシュアクセスはキャッシュバンク２２のその第２のものへ導かれる。また注意すべきは、そのような指定の１つあるいは両方は、すべての共有および/または非共有のアクセスがバンクされたキャッシュ１２において１つ以上の指定されたバンク２２に排他的に導かれるような、排他的であることができる。しかしながら、共有および非共有のアクセスの両方が、少なくともキャッシュアドレスの与えられた範囲について同じバンクへ導かれるように、指示はまた非排他的であることができる。キャッシュバンク２２の与えられたものが混合されたバンクとして指定される場合さえ、共有または非共有のデータのために使用されるそのバンクの量あるいはパーセントは制御されることができ、例えば、非一次的タイプのデータに対するそのバンクのアクセス干渉が最小であるように、それは共有または非共有のデータのために一次的に使用され得る。
【００３０】
アクセスタイプ指標は、ソフトウェア制御の下で設定された信号あるいは他のタイプの値であり得る。例えば、アクセスタイプ指標は、与えられたメモリアドレスに基づいたページテーブルルックアップを行なった後に、ハードウェア（例えばプロセッサ１０）が指標にアクセスするような、ソフトウェアによって書かれたマイクロプロセッサ１０内のページテーブルにビットを含んでもよい。他の実施例では、アクセスタイプ指標は、プロセッサ１０内のあるソフトウェアで書かれた構成レジスタに対するアドレスデコード／比較の結果を含んでもよい。例えば、ソフトウェアは、共有領域の開始および終了を示す２つのレジスタを構成することができ、プロセッサ１０は、与えられたアクセスが共有されるかどうか判断するために、これらのレジスタに対するアクセスアドレスの全部または一部を比較することにより、アクセスタイプ指標信号を適切な状態へ設定することができる。
【００３１】
また他の実施例では、プロセッサ１０内のソフトウェアでプログラムされたレジスタは、あるアクセスのタイプが共有されるかどうか示すために使用され、したがって、そのレジスタの状態または値がアクセスタイプ指標信号として役立つ。共有／非共有の決定は、どんなタイプのアクセスがメモリのどの領域にアクセス可能であるかのソフトウェアの知識に基づくことができる。そのような配置は、キャッシュ管理オペレーション、変換索引バッファ（ＴＬＢ）管理オペレーションおよび、データストリーミングなどのような、他の専用機能に関連したアクセスに役立つかもしれない。
【００３２】
とにかく、上記の共有または非共有アクセス指示する方法を念頭において、図３は共有および非共有アクセスを指示することの支援において実施することができる処理論理を示し、共有または非共有であるような任意の１つ以上のキャッシュ１２のバンク２２の特定のものを指定することから始まる（ステップ１００）。このステップは、バンクされたキャッシュ１２が予め定義された共有および非共有バンク指定で構成される暗黙のステップであるか、バンク指定が構成可能な実施例の明示的なステップであるかもしれない。
【００３３】
希望の指定がなされると仮定して、処理はキャッシュアクセスを作り（ステップ１０２）、共有または非共有としてアクセスタイプを決定する（ステップ１０４）ことにより継続する。アクセスが共有データに対してである場合（ステップ１０６のＹＥＳ）、それは、共有データを保持するように指定されたバンク２２のうちの１つへ導かれる。反対に、アクセスが非共有データに対してである場合（ステップ１０６のＮＯ）、それは、非共有データを保持するための指定されたバンク２２のうちの１つへ導かれる。
【００３４】
図４は、キャッシュアクセスのために生成された１つ以上のアドレスビットの「ハッシング」に基づいて、非共有または共有バンク２２にキャッシュアクセスを導くように構成されたバンク選択回路２４を含む、アクセス制御回路２０の一実施例を示す。例えば、２つのバンク２２をもち、１つ以上のアドレス線が、共有あるいは非共有のアクセスにそれぞれ対応して、「ＢＡＮＫ０」選択信号あるいは「ＢＡＮＫ１」選択信号を生成するように使用することができる。図５は２つのそのような選択的にアクセスされたバンク２２を示す。
【００３５】
同様に図６と７は、それぞれアクセス制御回路２０の他の実施例および共有および非共有バンク指定の対応する例を示す。特に、図６に示されたアクセス制御回路２０の実施例は、１つ以上のアドレス線および共有アクセス指標信号、および選択的にバンク構成信号のハッシングの関数として非共有および共有データキャッシュアクセスを指示する。共有アクセス指標信号は１つ以上のビットを含み、与えられたキャッシュアクセスが主メモリの共有または非共有領域にマップするキャッシュライン向けであることを示すために、正または負論理によって表明することができる。そのような共有の指示は、プロセッサの使用のために記憶されたメモリページ情報の関数として容易に生成することができる。共有の指示信号のように、バンク構成信号は１つ以上のビットであり、プロセッサで生成されることができる。
【００３６】
例として役立つプロセッサ１０−１で、キャッシュコントローラ１８−１は、アクセス制御回路２０のオペレーションを支援するため、共有の指標信号および/またはバンク構成信号を生成するように構成することができる。望まれた場合、キャッシュコントローラ１８−１は、例えば主メモリ１６の再マッピングに応答し、または異なるオペレーティングシステムあるいはプログラムモードに応答して、バンク構成信号をダイナミックに更新するように構成することができる。そのようなインスタンスでは、キャッシュコントローラ１８−１は、共有／非共有のバンク指定を再構成する部分として、キャッシュ１２−１をフラッシュ、そうでなければ無効、あるいはクリアするように構成することができる。当業者は、同様の構成が任意の１つ以上のプロセッサ１０−２および１０−３、キャッシュコントローラ１８−２および１８−３、およびバンクされたキャッシュ１２−２および１２−３に存在してもよいことを認識するだろう。
【００３７】
もちろん、当業者は、ここの議論が様々な例証となる実施例に関係があり、本発明を限定しないことを認識するべきであり、また、添付した図もそうである。さらに正確に言えば、本発明は次の請求項およびそれらの法的な均等物によってのみ制限される。
【図面の簡単な説明】
【００３８】
【図１】バンクされたキャッシュを含んでいるマルチプロセッサ回路を示すブロック図である。
【図２】与えられた１つのプロセッサ、および図１のマルチプロセッサ回路のバンクされたキャッシュを示すブロック図である。
【図３】非共有／共有データアクセスタイプの機能としてバンクされたキャッシュアクセスを制御する１つの実施例を示す論理フロー図である。
【図４】バンクされたキャッシュアクセスを制御するためのアクセス制御回路の１つの実施例を示すブロック図である。
【図５】非共有および共有バンクの配置をもつバンクされたキャッシュを示すブロック図である。
【図６】バンクされたキャッシュアクセスを制御するためのアクセス制御回路の他の実施例を示すブロック図である。
【図７】非共有および共有バンクの他の配置をもつバンクされたキャッシュを示すブロック図である。
【図１】
2008542923.tif 000003
【図２】
2008542923.tif 000004
【図３】
2008542923.tif 000005
【図４】
2008542923.tif 000006
【図５】
2008542923.tif 000007
【図６】
2008542923.tif 000008
【図７】
2008542923.tif 000009
【国際調査報告】
2008542923.tif 000010
2008542923.tif 000011
2008542923.tif 000012