(57)【要約】      （修正有）【課題】ディレクトリベースのキャッシュ・コヒーレンス・プロトコルにおけるディレクトリ内のアドレスのエビクション動作を低減するモジュールを提供する。【解決手段】ディレクトリを用いてキャッシュコヒーレンス管理を行うモジュール４０であって、キャッシュメモリに記憶された各データは複数の状態のうちの１つの状態に関連付けられ、当該複数の状態のうちの少なくとも１つの状態は複数のプロセッサ間のデータ共有を示す。モジュールは、キャッシュメモリのアドレスのリストを含むディレクトリを記憶する記憶装置であって、各アドレスは前記アドレスで取得可能なデータの状態と対応している状態に関連付けられる、記憶装置４１と、リストを更新するように構成された、前記状態に関連付けられたデータに関連するアドレス行を前記リストに登録しないように構成された処理装置４２と、を備える。【選択図】図４
2016015135.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムにおいてディレクトリを用いてキャッシュコヒーレンス管理を行うモジュールであって、キャッシュメモリに記憶された各データは複数の状態のうちの１つの状態に関連付けられ、当該複数の状態のうちの少なくとも第１の状態は前記マルチプロセッサシステムの複数のプロセッサ間のデータ共有を示し、前記モジュールは、
キャッシュメモリのアドレスのリストを含むディレクトリを記憶するように構成された記憶装置であって、各アドレスは複数の状態のうちの１つの状態に関連付けられ、前記１つの状態は前記アドレスで取得可能なデータの状態と対応している、記憶装置と、
前記リストを更新するように構成された処理装置であって、前記複数のプロセッサ間のデータ共有を示す前記第１の状態に関連付けられたデータに関連するアドレス行を前記リストに登録しないように構成された処理装置と、
を備えるモジュール。
【請求項２】
前記処理装置は、各プロセッサに対する前記データの排他性を示す状態に関連付けられたデータに関連するアドレスのみをリストに登録するように構成された、請求項１に記載のモジュール。
【請求項３】
前記処理装置が、
前記１つの状態に関連付けられた前記アドレス行が前記リストに登録されない第１の動作モードと、
前記１つの状態に関連付けられた前記アドレス行が前記リストに登録される第２の動作モードと、
の少なくとも２つのモードに従って選択的に動作するように構成された、請求項１に記載のモジュール。
【請求項４】
第１の動作モードにおいて、各プロセッサに対する前記データの排他性を示す状態に関連付けられたデータに関連するアドレスのみが記憶される、請求項３に記載のモジュール。
【請求項５】
複数のプロセッサと、
前記複数のプロセッサと個別に関連付けられたキャッシュメモリの複数のモジュールと、
前記キャッシュメモリのモジュール間のキャッシュコヒーレンスを管理するように構成された請求項１に記載の少なくとも１つのプロキシモジュールと、
を備えるマルチプロセッサデバイス。
【請求項６】
マルチプロセッサシステムにおいてディレクトリを用いてキャッシュコヒーレンス管理を行う方法であって、キャッシュメモリに記憶された各データは複数の状態のうちの１つの状態に関連付けられ、当該複数の状態のうちの少なくとも第１の状態は複数のプロセッサ間のデータ共有を示し、前記方法は、
キャッシュメモリ内のデータに対する要求を受信する工程と、
前記データの状態を判定する工程と、
前記判定された状態が前記第１の状態とは異なる少なくとも第２の状態である場合に、キャッシュメモリアドレスのリストを含むディレクトリの更新を起動する工程であって、各アドレスは複数の状態のうちの１つの状態に関連付けられ、前記１つの状態は前記アドレスで取得可能なデータの状態と対応している、工程と、
前記判定された状態が複数のプロセッサ間のデータ共有を示す少なくとも前記第１の状態である場合に、前記ディレクトリを更新することなくキャッシュメモリに対するクエリを起動して前記データを取得する工程と、
を備える方法。
【請求項７】
前記第２の状態はプロセッサに対するデータの排他性を示す、請求項６に記載の方法。
【請求項８】
前記第２の状態がプロセッサに対するデータの排他性を示す場合にのみ前記更新が起動される、請求項７に記載の方法。
【請求項９】
前記更新を起動する工程は前記ディレクトリのアドレス行をエビクションする工程を含む、請求項５に記載の方法。
【請求項１０】
複数のプロセッサ間のデータ共有を示す前記第１の状態に関連付けられたデータに関連する前記アドレス行をリストに登録する必要の有無を判定するために、動作モードの判定を行う事前工程をさらに含む、請求項５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、仏国特許出願第１４５５７４６号（出願日：２０１４年６月２０日）に基づく優先権を主張するものであり、この仏国特許出願の開示は、参照により全体として本明細書に組み込まれる。
【０００２】
本発明は、マルチプロセッサ・コンピュータ・システムにおけるキャッシュメモリの管理に関する。
【背景技術】
【０００３】
この種のシステムにおいて、各プロセッサは個別にキャッシュメモリを有し、例えば実行する命令を示すメモリアドレスなどの計算データを記憶させる。プロセッサは並行して演算を行うため、プロセッサ間でこれらのデータの一部が共有される。よって、いくつかのプロセッサは同じデータに対する読み出し又は書き込みが可能であり、これによってそのデータの変更とコンピュータ・プログラムの実行を行うことができる。
【０００４】
プロセッサによって使用されるデータが確実に更新されるために、そして２つのプロセッサが同じデータの２つの異なるバージョンを処理することを防ぐために、「キャッシュ・コヒーレンス（一貫性）」アルゴリズムが実装される。ＭＥＳＩアルゴリズムはそのようなアルゴリズムの一例である。
【０００５】
キャッシュ・コヒーレンス・アルゴリズムを実装するには、プロセッサ間で多数の通信を行うことによってプロセッサが常にデータの位置を把握できるようにしておく必要がある。データが見出されるキャッシュメモリの識別、並びにデータの状態を判定することが問題となる。
【０００６】
キャッシュメモリ内のデータの状態は使用されるプロトコルに依存する。上述のＭＥＳＩプロトコルの例において、データが単一のキャッシュメモリ内にのみ存在するならばデータは「変更」（Ｍ）状態にあり、このデータは（当初のデータが読み出された）非キャッシュメモリに存在するデータとの関連で変更されている。この場合、このデータに対してアクセスしようとするプロセッサは、例えば、このデータがメモリ内のバージョンと整合するまで待機してもよい。しかしながら、ある種のキャッシュ・コヒーレンス・プロトコルは、変更されたデータを直接キャッシュ間で転送することを許可することがある。
【０００７】
再度同じ例において、データが単一のキャッシュメモリ内にのみ存在しこのデータが非キャッシュメモリ内のバージョンと実際に一致する場合には、このデータは「排他」（Ｅ）状態にある。データが複数のキャッシュメモリ内に存在する場合には、このデータは「共有」（Ｓ）状態にある。最後に、データが最新でない場合、このデータは「無効」（Ｉ）状態にある。このデータはプロセッサによって無視され、不使用とされる必要がある。
【０００８】
他にもプロトコルは存在し、より多くの、又はより少ない状態が定義されている。例えば、ＭＳＩプロトコルは上記の定義によるＭ、Ｓ、Ｉの３つの状態のみを含んでいる。一方、ＭＯＥＳＩプロトコルは「所有」（Ｏ）の状態を追加している。この状態は「Ｓ」状態と等価であるが、メモリは最新ではない。
【０００９】
大部分のキャッシュ・コヒーレンス・プロトコルは、各データに対する要求の履歴を示すリスト又はディレクトリを用いる。これは「ディレクトリベース」のプロトコルと呼ばれる。
【００１０】
各プロセッサはリストを保持しており、このリストは各キャッシュ行ごとに、その行中に記録されるデータが記憶されるプロセッサ、並びにその状態が示す。このリストに含まれる情報はある程度完全なものである。
【００１１】
このリストを用いることによって、データに関するプロセッサからの要求の履歴をプロセッサに持たせることができる。特に、これによってキャッシュクエリをフィルタリングすることが可能になる一方、例えば、データを操作していないプロセッサのキャッシュに対してクエリを実行することを防ぐことができる。さらに、データがプロセッサのリストに載っていない場合は、このデータは現在プロセッサによって用いられているのではなく、最新の状態で（非キャッシュ）メモリに記憶されている、ということが推論できる。
【００１２】
図１はマルチプロセッサシステムを模式的に示す。
【００１３】
このシステムは４つのモジュール１００，１１０，１２０，１３０を含む。各モジュールは複数のプロセッサを含む。モジュール１００は２つのプロセッサ１０１及び１０２を含む。モジュール１１０は２つのプロセッサ１１１及び１１２を含む。モジュール１２０は２つのプロセッサ１２１及び１２２を含む。モジュール１３０は２つのプロセッサ１３１及び１３２を含む。各プロセッサは個別のキャッシュメモリを有する。これらのキャッシュメモリは図示されていない。
【００１４】
このシステム内のモジュールの数、及びモジュール内のプロセッサの数は、単に例示として提示される。これらのモジュールは異なる数のプロセッサを有してもよい。
【００１５】
キャッシュコヒーレンスの管理を含む、異なるプロセッサ間の通信の管理のために、モジュール１００，１１０，１２０，１３０の各々は個別のプロキシモジュール１０３，１１３，１２３，１３３を有する。図を見やすくするために、プロキシモジュール間の相互接続は示されていない。
【００１６】
このように、各プロセッサは他のプロセッサと通信するために固有のインターフェースを有している。こうした通信はすべて、各プロセッサが１度に他の１つのプロセッサのみに対して通信しているかのように行われる。特に、プロキシモジュールは各々のモジュールのプロセッサのためのディレクトリを保持する。また、プロキシモジュールは、各々モジュール以外のプロセッサのためのディレクトリを保持してもよい。
【００１７】
システムに多数のプロセッサが含まれる場合、プロキシモジュールの使用は望ましいものとなる。
【００１８】
しかしながら、プロキシモジュールによって保持されるこれらのディレクトリは、プロセッサによって保持されるものと同一ではない。実際、ある特定の数のプロセッサがモジュール内に存在する場合、ディレクトリのサイズは大きくなり過ぎる。特に、シリコン上のプロキシモジュールの空間が問題となる。
【００１９】
プロキシモジュールはこのように、「包括的」と記述される特定の種類のディレクトリを保持する。これは、有効なデータ、すなわちＭＥＳＩプロトコルの例における「変更」、「共有」、「排他」の状態にあるデータを示すアドレスのみを含むリストを保持することも伴う。あるアドレスが「無効な」データ（再びＭＥＳＩプロトコルの例を用いる）を示す場合、このアドレスはディレクトリには載らず、このアドレスにアクセスしようとするプロセッサは非キャッシュメモリに対してクエリを実行する。
【００２０】
このように、例えば、プロセッサが読み出しのためにディレクトリにアクセスする必要があるとき、プロキシモジュールのディレクトリは、新しいアドレスを加えるために定期的かつ高頻度の更新を必要とする。ディレクトリのサイズは制限されているため、この更新には以前記憶したアドレスの削除が必要である。
【００２１】
このディレクトリ内のアドレスの削除を「エビクション（追い出し）」と呼ぶ。この動作は頭字語「ＢＩＮＶ」（ｂａｃｋ  ｉｎｖａｌｉｄａｔｉｏｎ）を以ってその名称とすることができる。
【００２２】
エビクション動作は１つ以上の点で問題を生じさせる。
【００２３】
特に、操作されるデータがコンピュータプログラム命令である場合に問題が生じる。このようなプログラムが実行されると、プロセッサは命令のプレロード、つまり「プレフェッチ」を実行する。これは、実行を要求されていないが間もなく呼び出されることをプロセッサが把握又は推測する命令のロード処理を伴う。
【００２４】
こうして、エビクション動作がプレフェッチされた命令を示すアドレスに関する場合、このプロセッサはこの命令が再度ロードされるまで待機しなければならなくなる。（元来、プレフェッチは実行を高速化すると考えられているのだが）これによってプログラムの実行に遅延が生じる。
【００２５】
また、エビクション動作はアドレスが命令ではなくデータを示す場合にも問題を生じる。
【発明の概要】
【００２６】
このように、マルチプロセッサシステムにおけるエビクション動作を低減する必要がある。
【００２７】
本発明の第１の態様は、マルチプロセッサシステムにおいてディレクトリを用いてキャッシュコヒーレンス管理を行うモジュールであって、キャッシュメモリに記憶された各データは複数の状態のうちの１つの状態に関連付けられ、当該複数の状態のうちの少なくとも１つの状態は複数のプロセッサ間のデータ共有を示し、前記モジュールは、キャッシュメモリのアドレスのリストを含むディレクトリを記憶する記憶装置であって、各アドレスは複数の状態のうちの前記アドレスで取得可能なデータの状態と対応している１つの状態に関連付けられることがある、記憶装置と、前記リストを更新するように構成された処理装置であって、前記複数のプロセッサ間のデータ共有を示す前記第１の状態に関連付けられたデータに関連するアドレス行を前記リストに登録しないように構成された処理装置と、を備えるモジュールに関する。
【００２８】
第１の態様にかかるモジュールによって、マルチプロセッサシステムはエビクション動作の回数を有意に減らすことにより性能が向上する。
【００２９】
例えば、前記処理装置は、各プロセッサに対する前記データの排他性を示す状態に関連付けられたデータに関連するアドレスのみをリストに登録するように構成される。一実施形態において、前記処理装置は機械又はソフトウェア命令を実行して上記の更新を行う。この機械又はソフトウェア命令はメモリ又はコンピュータ読み取り可能な媒体内にコード化される。この処理装置は上記の更新を行うようにプログラムされているため、特殊目的処理装置である。さらに、この処理装置は上記の更新を行うために機械又はソフトウェア命令を処理するためのハードウェア部品を含むか又はこれらによって形成されるという点で物理処理装置である。
【００３０】
一部の実施形態において、この処理装置は、前記第１の状態に関連付けられた前記アドレス行が前記リストに登録されない第１の動作モードと、前記第１の状態に関連付けられた前記アドレス行が前記リストに登録される第２の動作モードと、の少なくとも２つのモードに従って選択的に動作するように構成される。
【００３１】
処理装置によって実行されたときにこの処理装置が第１及び第２の動作モードで選択的に動作することを可能にする機械又はソフトウェア命令を用いて、上記の２つのモード間の切り替えが実行できる。
【００３２】
例えば、第１の動作モードにおいて、各プロセッサに対する前記データの排他性を示す状態に関連付けられたデータに関連するアドレスのみが記憶される。
【００３３】
本発明の第２の態様は、複数のプロセッサと、前記複数のプロセッサと個別に関連付けられたキャッシュメモリの複数のモジュールと、前記キャッシュ・コヒーレンス・モジュール間のキャッシュコヒーレンスを管理するように構成された第１の態様にかかる少なくとも１つのプロキシモジュールと、を備えるマルチプロセッサデバイスに関する。
【００３４】
このマルチプロセッサデバイスは物理マルチプロセッサデバイスである。前記複数のプロセッサは、これらに固有の機能を実行するためのハードウェア部品を含んでいる点で、物理プロセッサである。
【００３５】
本発明の第３の態様は、マルチプロセッサシステムにおいてディレクトリを用いてキャッシュコヒーレンス管理を行う方法であって、キャッシュメモリに記憶された各データは複数の状態のうちの１つの状態に関連付けられ、当該複数の状態のうちの少なくとも第１の状態は複数のプロセッサ間のデータ共有を示し、前記方法は、キャッシュメモリ内のデータに対する要求を受信する工程と、前記データの状態を判定する工程と、キャッシュメモリアドレスのリストを含むディレクトリの更新を起動する工程であって、前記判定された状態が前記第１の状態とは異なる少なくとも第２の状態である場合に、各アドレスは複数の状態のうちの１つの状態に関連付けられることがあり、前記１つの状態は前記アドレスで取得可能なデータの状態と対応している、工程と、前記判定された状態が複数のプロセッサ間のデータ共有を示す少なくとも前記第１の状態である場合に、前記ディレクトリを更新することなくキャッシュメモリに対するクエリを起動してデータを取得する工程と、を備える方法に関する。
【００３６】
例えば、前記第２の状態はプロセッサに対するデータの排他性を示す。
【００３７】
一部の実施形態において、前記第２の状態がプロセッサに対するデータの排他性を示す場合にのみ前記更新が起動される。
【００３８】
例えば、この更新にはディレクトリからのアドレス行のエビクションの工程が含まれる。
【００３９】
一部の実施形態において、前記方法はまた、複数のプロセッサ間のデータ共有を示す前記第１の状態に関連付けられたデータに関連する前記アドレス行をリストに登録する必要の有無を判定するために、動作モードの判定を行う事前工程を含む。
【図面の簡単な説明】
【００４０】
本発明の他の特性及び利便性は、非制限的な例として提供される以下の詳細な説明及び添付の図面を参照することによって理解されるであろう。
【００４１】
【図１】マルチプロセッサシステムを模式的に示す。
【００４２】
【図２】様々な実施形態に従うディレクトリを示す。
【００４３】
【図３】様々な実施形態に従うディレクトリの使用を示す。
【００４４】
【図４】様々な実施形態に従うプロキシモジュールを模式的に示す。
【発明を実施するための形態】
【００４５】
様々な実施形態に従うシステムは、すでに図１を参照して提示された構造を有している。しかしながら、プロキシモジュールのディレクトリの構造及び管理は以下に記述するように異なっている。
【００４６】
図２は様々な実施形態に従うキャッシュメモリコヒーレンス管理の実装のためのディレクトリを示す。
【００４７】
ディレクトリ２００は、各々がシステムのキャッシュメモリに記憶されたデータと関連付けられた複数の行２０１を含む。
【００４８】
各行はメモリアドレス２０２を識別し、このアドレスにはディレクトリ内に表されるデータ、このデータに関連づけられた状態２０３、及びこのデータに対するアクセスを要求して間もないプロセッサ２０４，  ２０５，  ２０６，  ２０７のリストが記憶されている。
【００４９】
アドレス２０２はある程度完全なものである。ディレクトリを記憶するためのメモリ空間を節約するために、メモリアドレスの一部のみを記憶することを検討してもよい。
【００５０】
データ２０３の状態は現在のそのデータが置かれていると判断される状態である。データが複数の状態にあると判断されることもある。本発明の実施形態によれば、いくつかのプロセッサ間で共有される状態にあるデータは、ディレクトリ内には記憶されない。よって、「共有」状態のデータはディレクトリには含まれない。さらに、無効なデータはディレクトリ内に表されなくてもよい。よって、「無効」状態のデータはディレクトリには含まれなくてもよい。例えば、「排他」又は「変更」状態などの他の種類のデータは含まれてもよい。一部の実施形態において、「排他」状態のみが表される。使用するキャッシュメモリ管理プロトコルは、ＭＥＳＩ、ＭＯＥＳＩ、ＭＳＩ等の種類でもよい。
【００５１】
データへのアクセスを要求したプロセッサ２０４，  ２０５，  ２０６，  ２０７のリストは、多少の詳細を含んでもよい。各プロセッサは単一の識別子で識別されてもよい。また、識別子は、プロセッサがデータへのアクセスを要求した際の状態を伴ってもよい。例えば、プロセッサのリストは、アクセス要求の時間的な順序で（又はその逆で）左から右に（又はその逆に）類別される。このアクセス履歴内に限定された数のプロセッサのみを記憶し、メモリ空間を節約するために、最も古い要求は最も新しい要求によって置き換えられてもよい。
【００５２】
従来技術によれば、共有されたデータと一致する行がディレクトリ内で見出される一方、本発明の様々な実施形態によれば、この状態のデータはディレクトリ内には存在しない。いくつかの実施形態におけるシステム・キャッシュ・ディレクトリ管理モジュールは、このようなデータをディレクトリ内に記憶しないように構成される。
【００５３】
キャッシュメモリ管理のためのディレクトリの使用は、図３を参照して説明する。
【００５４】
プロセッサ３００は例えば、キャッシュメモリ内のアドレスａｄｒ０のデータについて、所与の状態ＳＴＡＴ（例えば、「共有」Ｓ、「排他」Ｅ等）において、読み出しモードで要求３０１を行う。このリクエストはプロキシモジュール３０２に送信される。
【００５５】
その後プロキシモジュールは、この要求の処理が許可されるか（又は可能か）を工程３０３で確認する。例えば、プロキシモジュールは、この要求の処理に必要なすべてのリソースが利用可能かを検証する。特に、このリソースの１つはディレクトリである。しかしながら、その他のリソース（トランザクション識別子等）の利用可能性を検証してもよい。
【００５６】
処理が許可されていない場合（ＮＯＫ）、プロキシモジュールは、例えば、プロセッサ３００に拒否メッセージ３０４を送信してもよい。しかしながら、他の手段を用いてもよい。例えば、必要なすべてのリソースが利用可能になるまで待機してもよい。
【００５７】
逆に、処理が許可されると（ＯＫ）、工程３０５においてディレクトリに新しいエントリが必要か否かが検証される。実際は、ディレクトリによって管理される状態への遷移を伴うトランザクションのみがエントリを必要とする。例えば、（すべてのキャッシュのデータを無効化する工程のみからなる）単に無効化するだけのトランザクションはディレクトリへのエントリを必要としない。データは最終的に状態Ｉ（ｉｎｖａｌｉｄ）となり、ディレクトリはこの状態のデータをリストに入れない。
【００５８】
エントリが不要（ＮＯＫ）と判定された場合、ディレクトリはその後工程３０６で、データに対するアクセスを要求したプロセッサのリストにプロセッサ３００を追加することによって更新される。例えば、プロセッサ３００の識別子がすでにリストに含まれているプロセッサの後に追加される。あるいは、プロセッサをすぐにディレクトリに追加する代わりに、ディレクトリのエントリを予め確保してデータが戻るのを待ってからディレクトリを完全に更新してもよい。
【００５９】
このように工程３０６は、それに関係するメモリアドレスが先行する要求の処理中に登録された後でディレクトリ内にすでに存在するときに実行される。この先行する要求の処理中においては、工程３０５でエントリが必要（ＯＫ）であると判定される。
【００６０】
工程３０６が実行されると、通常の読み出し処理が工程３０７で開始される。例えば、メモリを管理するエージェント（又は第２のプロキシを通過することが必要な場合には当該メモリを代理するエージェント）に読み出し要求が送信される。その後それに応じてデータが受信される。メモリを管理するエージェントのレベルにおける処理（中央メモリに対するアクセス、他のキャッシュに対するクエリ等）は、読み出しの発行者には直接関与しない（間接的に、対立する状況がそれに見えるようになっていてもよい）。
【００６１】
再び工程３０５において、エントリが不要（ＮＯＫ）と判定された場合、例えば、要求されたデータが共有されており（又は無効な状態にあり）、またこの種のデータはディレクトリ内に表されていないため、工程３０６は実行されず、工程３０７での読み出しに進む。例えば、メモリを管理するエージェント（又は第２のプロキシを通過することが必要な場合には当該メモリを代理するエージェント）に読み出し要求が送信される。その後それに応じてデータが受信される。そして直接工程３０７での読み出しへと進む。あるいは、例えば、要求によってデータに対する排他性が求められる場合（この場合、データのすべてのコピーを無効化しなければならない）には、この工程の前にプロセッサのすべてのキャッシュに対するクエリを実行してもよい。
【００６２】
工程３０５において、アドレスａｄｒ０のデータについて新しいエントリが必要（ＯＫ）と判定された場合、工程３０８でアドレスａｄｒ０がすでにディレクトリに存在するかが判定される。
【００６３】
実際には、トランザクションがディレクトリ内のエントリを必要としてもこのエントリがすでに存在する場合（ＯＫ）、すなわち、同じアドレスにおける先行するトランザクションがすでにそれを初期化している場合、トランザクションはこのエントリを再利用するため新たに割り当てる必要はない。
【００６４】
よって、この場合はエビクションは発生しない。
【００６５】
処理は次に工程３０６に進み、この状態を更新して読み出しを継続する。一方、新しいエントリが不要（ＮＯＫ）と判定された場合、アドレスはディレクトリ内には存在せず、工程３０９においてすでにディレクトリ内に存在するアドレスのエビクションを行う必要があるか否かが検証される。
【００６６】
ディレクトリ内に空間がまだ確保できる場合（ＮＯＫ）、エビクションは不要であり、処理は工程３０６に進んで関連するアドレス、データの状態、及びプロセッサ３００の識別子を含む行を追加する。空間が確保できない場合（ＯＫ）、利用可能な空間が十分にないため、エビクションを開始する必要がある。
【００６７】
工程３１０において、削除されるアドレスａｄｒ１が選択される。例えば、このアドレスはランダムに選択される。他の例において、最も古い（「最も長く使用されない」）アドレスが選択される。他の種類のアドレスを選択してもよい。すべてのアドレスが使用中であるため選択できるアドレスがない場合、処理はいずれかのアドレスが解放されるまで休止される。あるいは、処理は要求の発行者に対して「リトライ」要求を発行してもよい。
【００６８】
次に工程３１１において演算の後に必要な検証及び割り当てを実行する。特に、エビクションを処理するために必要なすべてのリソースが利用可能か否かが検証される。
【００６９】
次に工程３１２においてアドレスａｄｒ１のデータを「無効」状態に置くことによって、無効化処理が実行される。
【００７０】
次に読み出し処理が通常通り継続される。
【００７１】
例示のために、使用されるディレクトリが従来技術に従うものであり、共有データを記憶すると仮定する。アドレスａｄｒ１のデータがプロセッサ３００及び他のプロセッサ３１３によって共有されるものと仮定する。次にプロキシモジュールがメッセージ３１４及び３１５を送信してこれらのプロセッサにデータの新しい状態を通知する。
【００７２】
ここで、アドレスａｄｒ０のデータを読み出すことによって、いくつかのプロセッサによって共有されているアドレスａｄｒ１のデータを無効化することになった、と考えることができる。このアドレスａｄｒ１のデータは、例えば、プロセッサ３００とプロセッサ３１３によってプレフェッチされた命令であった。これらのプロセッサがこの命令にアクセスして実行しようとするとき、アクセスできずに再度アクセスを開始しなければならない。これによってシステムのレイテンシが増加し、システムによるこれらの命令の実行速度が不利になる。
【００７３】
一方で、使用されるディレクトリが本発明の実施形態に従うものであれば、このディレクトリは共有データを記憶しないため、上記の状況は発生し得ない。アドレスａｄｒ１のデータは共有データではあり得ない。データは、例えば、「排他」又は「変更」状態であってもよい。
【００７４】
本発明の実施形態に従うディレクトリの場合、メッセージ３１４のみがプロセッサ３００に送信され、このプロセッサ３００はこのデータを保持している。メッセージ３１５を送信する理由がない。
【００７５】
当業者であれば、共有データはもはや提示された際のようにはディレクトリに表されていないという事実にデメリットを認めるであろう。実際にこれによって、プロセッサが共有データにアクセスしようとする際に、システムのキャッシュメモリのすべてに対してクエリを体系的に実行する必要が生じる。
【００７６】
しかしながら、本発明者らは、共有データに対するエビクションをなくすことによって与えられる性能向上によって、このデメリットが大きく相殺されることに気が付いた。例えば、共有データは通常は命令であり、すでに述べたように、命令に対してエビクションを実行することはシステムに対して大きな不利益を生じさせる。
【００７７】
さらに、共有データは表されなくなるため、一定のディレクトリサイズで、より多くの他の状態のデータを記憶することができる。こうしてディレクトリサイズは仮想的に増加し、一方でシステムのシリコン上のディレクトリによって占有される表面積を節約することができる。
【００７８】
一部の実施形態において、排他の状態のデータのみをディレクトリ内に記憶することができる。これによってさらにエビクションを減らすことができる。
【００７９】
一部の実施形態において、システムのいくつかの動作モードを考えることができる。一の動作モードにおいて、共有データはディレクトリ内には表されない。他の動作モードにおいて、これらのデータはリストに含まれる。
【００８０】
例えば、プロセッサが使用されるアプリケーションに基づいて、一のモードから他のモードに選択的に切り替えることも可能である。
【００８１】
このように、（「共有」及び「排他」の状態がリストに含まれる）従来の包含的ディレクトリを用いるか、（例えば、「排他」状態のみがリストに含まれる）一部の実施形態の包含的ディレクトリを用いるかを、例えば構成レジスタによって、動的に切り替えてもよい。この選択的な動作モードによって、実装されるアプリケーションに従って最も適切なモードを選択することが可能になる。また、これによって管理モジュールの設計時にいずれのディレクトリを用いるかを決定する必要を回避することができる。これは一旦決めてしまうと変更できないものである。
【００８２】
図４は、様々な実施形態に従うプロキシモジュール４０を模式的に示す。このプロキシモジュールは、キャッシュメモリ管理ディレクトリを記憶するための物理メモリ４１を含む。さらに、このプロキシモジュールは、ディレクトリによるキャッシュメモリ管理に従ってマルチプロセッサシステムのプロセッサから発行されるクエリを管理するための物理処理装置４２を含む。
【００８３】
開示した構成及び本明細書に記載した方法は、マルチプロセッサシステムにおけるエビクション動作を減らし、それらマルチプロセッサシステムの性能を著しく向上させるために、現在設計者が直面する技術的な問題に対する代表的な解決策となることが、当業者であれば理解できるであろう。
【００８４】
様々な実施形態を参照して本発明の原理を記述及び例示したが、これらの実施形態はその構成及び詳細を原理から逸脱しない範囲で変更が可能であることが認識されよう。本明細書で記述した装置、モジュール、プロセッサ、処理装置、プログラム、処理、又は方法は、別途指示がない限り如何なる特定の種類のコンピューティング環境にも関連付け又は限定されない。様々な種類の目的に特化したコンピューティング環境を用いて、本明細書に記載した内容に従って動作を行わせてもよい。ソフトウェア内に示される実施形態の構成要素は、ハードウェア内に実装されてもよく、その逆も又可である。
【００８５】
メモリ内に含まれる機械命令シーケンスの実行によって、プロセッサ又は処理装置は、その中に記述されたプロシージャの処理工程又は機能の少なくとも一部を実行することになる。また、マルチ処理構成内の一又は複数の物理プロセッサ又は物理処理装置を用いて、メモリ又は機械／コンピュータ読み取り可能な媒体内に含まれる命令シーケンスを実行してもよい。代替実施形態においては、ソフトウェアの命令に代えて、又はそれらと組み合わせて、ハードウェアに組み込まれた回路を用いてもよい。
【００８６】
本明細書で用いられる「コンピュータ読み取り可能な媒体」、「機械読み取り可能な媒体」、「機械式記憶媒体」、又は「メモリ」の用語は、プロセッサ又は処理装置に命令を提供して実行させることに関与する任意の媒体を意味する。このような媒体は持続性を有し、非限定的な例として不揮発性媒体、揮発性媒体、及び送信媒体を含む多くの形態をとることができる。不揮発性の媒体は、例えば、光ディスク又は磁気ディスクを含む。揮発性の媒体はダイナミックメモリを含む。送信媒体は同軸ケーブル、銅線、及び光ファイバを含む。コンピュータ／機械読み取り可能な媒体の一般的な形式は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の任意の磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤ、他の任意の光媒体、パンチカード、紙テープ、穴のパターンを有する他の任意の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他の任意のメモリチップ又はカートリッジ、以下に記述する搬送波、又はコンピュータが読み取り可能な他の任意の媒体を含む。
【００８７】
コンピュータ／機械読み取り可能な媒体の様々な形態は、一又は複数の命令の一又は複数のシーケンスをプロセッサに伝達して実行させることに関与している。
【００８８】
本明細書に記載した方法の少なくとも１つの工程又は構造的配置の様々な要素の機能を実装するための機械実行可能な命令からなるコンピュータプログラムは、少なくともインターフェース、物理プロセッサ、及び持続性メモリ（広義には持続性機械読み取り可能な又は記憶用の媒体とも称する）からなる一又は複数のコンピュータによって実装が可能である。このコンピュータは、上述の方法の特定の工程を実行するようにプログラムされた特殊目的コンピュータである。上記の持続性メモリは、上述の方法及びそれに関連する工程を実行するための特別なコード命令を用いてコード化又はプログラムされている。この持続性メモリは、物理プロセッサ又は処理装置と通信可能に構成されてもよく、これにより使用中の物理プロセッサがこの持続性メモリ内に埋め込まれた特定のコード命令を読み取り、実行するようになっている。特殊目的コンピュータのインターフェースは物理プロセッサと通信可能に構成されてもよく、物理プロセッサによって処理された入力パラメータを受信する。
【００８９】
この詳細な説明及び添付の図面によって本発明を説明した。しかしながら、本発明は提示された実現形態には限定されない。本説明及び添付の図面に接することで、当業者は他の変形例及び実施形態を推論し実装することができる。
【００９０】
請求項においては、「含む（ｃｏｎｔａｉｎ）」の語は他の構成要素又は他の工程を排除しない。単数形の使用は複数であることを排除しない。単一のプロセッサ又はいくつかの他の装置を用いて、本発明を実装してもよい。提示された、及び／又は権利を主張された様々な特徴は、有益に組み合わせることができる。それらの特徴が発明の詳細な説明又は様々な従属項に分かれて存在しても、実際上、それらを組み合わせる可能性を排除しない。参照符号は発明の範囲を限定するものと解釈すべきではない。
【図１】
2016015135.tif 000003
【図２】
2016015135.tif 000004
【図３】
2016015135.tif 000005
【図４】
2016015135.tif 000006
【外国語明細書】
2016015135000001.pdf