(57)【特許請求の範囲】
【請求項１】
主メモリと、該主メモリに結合された少なくとも１つのキャッシュと、該少なくとも１つのキャッシュの各々に結合された複数のプロセッサとを含むコンピュータキャッシングシステム内で非アトミックオペレーションを実行してデッドロックを回避する方法において、
前記複数のプロセッサのうち特定のプロセッサによって、該特定のプロセッサが前記主メモリで非アトミックオペレーションの実行を要求していることを示す分割ロック要求を、前記特定のプロセッサに関連するキャッシュに送出するステップと、
前記特定のプロセッサに関連するキャッシュによって、前記分割ロック要求に応答してロックメッセージを前記主メモリに送出するステップと、
前記ロックメッセージに応答する前記主メモリによって、前記主メモリが前記分割ロック要求を認可するロッキングプロセッサとして、前記特定のプロセッサを識別する認可メッセージを生成して、すべてのキャッシュに送出するステップと、
前記ロッキングプロセッサに関連しないキャッシュによって、前記認可メッセージに応答して前記ロッキングプロセッサとして識別されない複数のプロセッサの各々の状態をアイドル状態に変更するステップと、
前記ロッキングプロセッサに関連しないキャッシュによって、前記アイドル状態を示すゴーンアイドルメッセージを生成し、前記ロッキングプロセッサに関連するキャッシュに送出するステップと、
前記ロッキングプロセッサに関連するキャッシュによって、他のすべてのキャッシュから前記ゴーンアイドルメッセージを受信し、前記特定のプロセッサに前記非アトミックオペレーションの実行を許可するステップと
を備えることを特徴とする方法。
【請求項２】
前記許可するステップの後に、前記ロッキングプロセッサによって、前記非アトミックオペレーションを実行するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記非アトミックオペレーションの完了に際して、前記特定のプロセッサに関連するキャッシュによって、前記ロッキングプロセッサとして識別されない前記複数のプロセッサの各々にアイドル解除メッセージを送出するステップをさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
アイドル解除メッセージを送出する前記ステップは、
前記ロッキングプロセッサに関連するキャッシュによって、前記アイドル解除メッセージを前記主メモリに送出するステップと、
前記ロッキングプロセッサに関連するキャッシュからの前記アイドル解除メッセージに応答する前記主メモリによって、前記ロッキングプロセッサとして識別されない前記複数のプロセッサの各々に前記アイドル解除メッセージを同報通信するステップと
をさらに備えることを特徴とする請求項３に記載の方法。
【請求項５】
アイドル解除メッセージを送出する前記ステップは、
前記ロッキングプロセッサによって、前記非アトミックオペレーションの前記完了に際して前記アイドル解除メッセージを前記関連するキャッシュに送出するステップをさらに備えることを特徴とする請求項４に記載の方法。
【請求項６】
アイドル状態に変更する前記ステップは、
前記複数のプロセッサの各々を前記各々のキャッシュに結合する、前記複数のプロセッサの各々に関連するデータバスの状態をアイドル状態にするステップを備えることを特徴とする請求項１に記載の方法。
【請求項７】
アイドル状態に変更する前記ステップは、
前記複数のプロセッサの少なくとも２つを前記各々のキャッシュに結合する前記複数のプロセッサの前記少なくとも２つに関連するデータバスの状態をアイドル状態にするステップを備えることを特徴とする請求項１に記載の方法。
【請求項８】
データバスの状態をアイドル状態にする前記ステップは、
前記各々のキャッシュによって、前記データバスの状態をアイドル状態にするステップを備えることを特徴とする請求項７に記載の方法。
【請求項９】
前記認可メッセージにおいて識別されない前記複数のプロセッサの各々によって、前記アイドル解除メッセージに応答して前記アイドル状態からアクティブ状態に変化するステップをさらに備えることを特徴とする請求項３に記載の方法。
【請求項１０】
ロックメッセージを送出する前記ステップの後に、
前記主メモリによって、前記分割ロック要求を生成する前記特定のプロセッサを識別する識別子を記憶するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１１】
識別子を記憶する前記ステップは、
前記主メモリによって、前記ロックメッセージが受け取られた順序で前記分割ロック要求を生成する前記特定のプロセッサを識別する識別子を記憶するステップをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
認可メッセージを送出する前記ステップは、
前記ロックメッセージに応答する主メモリによって、認可メッセージを、前記特定のプロセッサに関連するキャッシュに送出し、前記認可メッセージは、前記分割ロック要求が認可されるロッキングプロセッサとして前記特定のプロセッサを識別し、前記認可メッセージは、前記ロックメッセージが受け取られる前記順序に従って送出されるステップをさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
認可メッセージを送出する前記ステップは、
前記ロックメッセージに応答する主メモリによって、前記少なくとも１つのキャッシュの各々に認可メッセージを送出し、前記認可メッセージは、前記分割ロック要求が認可されるロッキングプロセッサとして前記特定のプロセッサを識別し、前記認可メッセージは前記分割ロック要求が受け取られる前記順序に従って送出されるステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
非アトミックオペレーションを実行しデッドロックを回避する処理モジュールであって、主メモリおよび少なくとも２つの処理モジュールを含むコンピュータキャッシングシステムに使用される処理モジュールにおいて、
前記主メモリで非アトミックオペレーションの実行を要求していることを示す分割ロック要求を生成するプロセッサと、
前記プロセッサと前記主メモリとの間に結合されたキャッシュとを備え、
該キャッシュは、
前記プロセッサにより生成された前記分割ロック要求に応答して、ロックメッセージを前記主メモリに送出する手段と、
前記ロックメッセージに応答して、前記主メモリが前記分割ロック要求を認可するロッキングプロセッサとして、前記プロセッサを識別する認可メッセージを、前記主メモリから受信する手段と、
前記プロセッサが、前記認可メッセージで識別される前記ロッキングプロセッサに関連しない場合には、前記プロセッサに結合するバスをアイドル状態に変更して、前記アイドル状態を示すゴーンアイドルメッセージを送出する手段と、
前記プロセッサが前記ロッキングプロセッサに関連する場合には、他のすべてのキャッシュから前記ゴーンアイドルメッセージを受信し、前記プロセッサに前記非アトミックオペレーションの実行を許可する手段と、
前記非アトミックオペレーションを完了した後にアイドル解除メッセージを送出する手段と
を有することを特徴とする処理モジュール。
【請求項１５】
非アトミックオペレーションの使用によって生じるデッドロックを回避するシステムにおいて、
主メモリと、
前記主メモリに結合された少なくとも１つのキャッシュと、
前記少なくとも１つのキャッシュの各々に結合された複数のプロセッサとを備え、
前記複数のプロセッサのうちの１つである特定のプロセッサは、該特定のプロセッサが前記主メモリの中で非アトミックオペレーションの実行を要求していることを示す分割ロック要求を、前記特定のプロセッサに関連するキャッシュに送出する手段と、
前記特定のプロセッサに関連する前記キャッシュは、前記分割ロック要求に応答してロックメッセージを前記主メモリに送出する手段と、
前記主メモリは、前記ロックメッセージに応答して、前記主メモリが前記分割ロック要求を認可するロッキングプロセッサとして、前記特定のプロセッサを識別する認可メッセージを生成して、すべてのキャッシュに送出する手段と、
前記ロッキングプロセッサに関連しない各々のキャッシュは、前記認可メッセージに応答して前記ロッキングプロセッサとして識別されない複数のプロセッサの各々の状態をアイドル状態に変更し、前記アイドル状態を示すゴーンアイドルメッセージを生成し、前記ロッキングプロセッサに関連するキャッシュに送出する手段と、
前記ロッキングプロセッサに関連するキャッシュは、他のすべてのキャッシュから前記ゴーンアイドルメッセージを受信し、前記特定のプロセッサに前記非アトミックオペレーションの実行を許可する手段を含むことを特徴とするシステム。
【発明の詳細な説明】
【０００１】
（発明の背景）
（発明の分野）
本発明は一般にマルチプロセッサシステムに関し、より詳細には、ディレクトリに基づくキャッシュメモリシステム内のデッドロックを回避するための技術に関する。
【０００２】
（関連技術）
一般に、マルチプロセッサシステムは、各々が独自のキャッシュシステムを有する複数のプロセッサに共用される主メモリを含む。キャッシュメモリは、一般にホストプロセッサと主メモリの間のバッファである。キャッシュメモリは、最近アクセスされた命令またはデータを記憶するホストプロセッサの近くに位置する小形の高速メモリである。キャッシュは、ホストプロセッサが頻繁に必要とする情報を記憶することによってシステム性能を強化する。キャッシュ内の情報の記憶は、主メモリに対するアクセスに関連する長時間の遅延を回避することによってシステム性能を強化する。各キャッシュシステムは、複数のレベルのキャッシュを含むことができる（例えば、Intel（登録商標）のＰ６プロセッサは２レベルキャッシュメモリシステムを有する）。
【０００３】
マルチプロセッサシステムは、複数のプロセッサがデータを同時に共用することを可能にする。例えば、２つのプロセッサＡおよびＢを備えたマルチプロセッサシステムでは、両方のプロセッサがそれぞれのキャッシュ内にデータＤのコピーを同時に記憶することが可能である。しかしながら、マルチプロセッサシステムは、キャッシュコヒーレンスの問題を引き起こす。キャッシュコヒーレンス問題は、プロセッサＡがそのＤのコピーを修正し、それと同時にプロセッサＢがそのＤのコピーを使用するときに生じる。ＡがそのＤのコピーを修正したら、Ｂのキャッシュ内に保持されたＤのコピーは有効でなくなる。プロセッサＢがそのキャッシュからＤを読みとった場合は、Ｄの誤った値が戻されることから、この状況はインコヒーレントである。ＢがそのＤのコピーを、それがＡのキャッシュ内に保持された修正コピーと等しくなるまで使用できないようにすることによって、キャッシュコヒーレンスを達成することができる。
【０００４】
キャッシュコヒーレンスを確保する１つの方法は、ディレクトリプロトコルを用いることである。ディレクトリプロトコルは、プロセッサが特定のキャッシュライン上で実行することができる操作に関連する役割を果たすことによって、システム内のすべてのキャッシュのコヒーレンスを確保する。キャッシュラインは、メモリとキャッシュの間で転送されるデータの最小単位を表す。プロセッサは、キャッシュラインを変更することが可能になる前に、キャッシュラインに対する一定のアクセス件を有していなければならない。このアクセスは、いくつかの異なるタイプに分けることができ（例えば、キャッシュラインを読みとるためのアクセスやキャッシュラインを変更するためのアクセスなど）、一般に所有権（ownership）と呼ばれる。例えば、単純な２プロセッサシステムでは、メッセージングシステムを介してキャッシュラインの所有権が認可され、プロセッサＡはプロセッサＢが現在所有しているキャッシュラインの特定レベルの所有権（例えば、読み取りまたは書き込みおよび修正）を要求する。所有権を認可するために、プロセッサＢはプロセッサＡの要求メッセージに応答する。
【０００５】
コヒーレンスは、単一キャッシュラインの有効性に関するものであり、１つのキャッシュラインと他のキャッシュラインとの関係に関するものではない。例えば、上述のプロトコルに続いて、第１のプロセッサ（Ｐ1）が第１の値（Ｖ1）に対する書き込みを実行するのに続いて第２の値（Ｖ2）の書き込みを実行し、第２のプロセッサ（Ｐ2）が元のＶ1値と新しいＶ2値を取り込むことが可能である。Ｖ1とＶ2のこの関係をメモリコンシステンシィと呼ぶ。
【０００６】
メモリインコンシステンシィには２つの原因がある。第一に、Ｐ1がＶ1に対する書き込み所有権を取得する動作と、Ｐ2がそのＶ1のコピーを無効にする動作との間に遅延が起こりうる。これは、データ項目の所有権が共用されている（または読み取り専用である）ときに起こりうる。特定のプロセッサに関する書き込みは、当該プロセッサが無効メッセージを受け取るまで有効にならない。
【０００７】
メモリインコンシステンシィの第２の原因は、メモリが分散されるときに生じる。この場合、１つのメモリサービスユニットが、他のメモリサービスユニットに比べてビジーな状態にありうる。これは、必ずしも要求されたのと同じ順序でメモリに対するアクセスが行われないという結果をもたらす。さらに、性能面の理由により、プロセッサはあらかじめデータの要求を実行し、データが必要になるまでそのデータを保持する。これは、プログラム順序と異なる順序でデータ項目が取得されるという結果をもたらす。メモリコンシステンシィに関するより詳細については、Hennessy & Patterson "Computer Architecture a Quantitative Approach" Second Edition, Morgan Kaufmann Publishers, 1996, pp.708-721を参照のこと。
【０００８】
メモリコンシステンシィを確立するための１つの技術として、「ロッキング」操作が使用されている。この技術では、１の書き込みプロセッサが、共用データを「ロック」して他のプロセッサがデータにアクセスするのを防止し、その共用データに対する書き込みを行い、次いでその共用データを「アンロック」して他のプロセッサが使用できるようにする。同様にして、１の読み取りプロセッサが共用データを「ロック」し、その共用データを読み取り、次いでその共用データを「アンロック」する。
【０００９】
上述のロッキング操作は、メモリを同期化する。最初に、そのロッキング操作は、開始バリア（start barrier）として機能する。ロッキング操作を実行するプロセッサは、他のあらゆるプロセッサがデータの使用を終了するまで待機しなければならない。書き込みが実行されたか否かを検出するハードウェア機構は、書き込みプロセッサがデータを更新したこと、および他のプロセッサが読み取っているデータを書き込みプロセッサが上書きしていないことを確認する。
【００１０】
ロッキング操作は、また、終了バリア（end barrier）として機能する。プロセッサは、ロッキング操作が完了するまでより新しい指示を実行することはできない。これによって、読み取りプロセッサがロックを獲得する前に元のデータを取得して保持することが防止される。
【００１１】
デッドロックは、あるプロセッサが第２のプロセッサによって同時に利用されるデータに対する非アトミックオペレーションを実行する際に起こりうる。アトミックオペレーションは、あるプロセッサが１の記憶場所に対して読み取りまたは書き込みを行っているときに、他のプロセッサがその記憶場所に対して読み取りまたは書き込みを行うことを防止する操作である。非アトミックオペレーションは、プロセッサによって操作されるキャッシュラインを他のプロセッサが操作を完了する前に読み取る、または書き込むことのできる操作である。非アトミックオペレーションは、例えば操作されるデータがキャッシュラインの境界を横切るときに起こりうる。すなわち、変更されているデータが、キャッシュの２つの異なるライン内に位置する。例えば、データをキャッシュに記憶してそのデータを利用するのに２つのキャッシュを読み取らなければならない場合に、操作はキャッシュラインを横切る。そのデータを利用するプロセッサは、第１のキャッシュラインに対してアトミックオペレーションを実行することができるが、第２のキャッシュラインは他のプロセッサによって一時的に利用されうる。
【００１２】
デッドロックの問題を解決するための１つの方法は、プロセッサが非アトミックオペレーションを開始した時点で他のプロセッサにアイドル状態になるよう要求することである。システムは、一般に、システムバス上で他のプロセッサに送出される「ロック」信号を生成することによってこれを実現する。「ロック」信号は、「ロック」がアサートされている間、他のプロセッサがそのバスを利用するのを防止する。例えば、Binder他が１９８４年１２月１１日に開示した米国特許第4,488,217号は、複数のデータユニットおよび共通バスを含むデータプロセッシングシステムについて述べている。データユニットは、「ロック」および「アンロック」命令を発する装置を含み、他のデータユニットが共通バス上にデータを送信することを防ぐ。しかしながら、システムが複数のバスを含む場合に、マルチプロセッサシステム内でこれを実施することには疑問がある。さらに、プロセッサが「ロック」信号を供給するための機構を提供しない場合は、上記の解決法を実施することができない。
【００１３】
デッドロックの問題を回避する、マルチプロセッサにおける非アトミックオペレーションを実行するシステムおよび方法が必要とされる。
【００１４】
（発明の概要）
手短に述べれば、本発明は、プロセッサが第２のプロセッサによって同時に利用されうるデータに対する非アトミックオペレーションを実行するときに、マルチプロセッサにおけるデッドロックを回避するものである。本発明は、非アトミックオペレーションが完了するまで他のプロセッサが同じデータを利用できないようにするために、１つのプロセッサにメモリに対する独占的アクセスを与えるように設計された一連のメッセージを含む分割ロック操作を介して、デッドロックを回避するものである。デッドロックを回避するために本発明が使用するメッセージには、分割ロック要求、ロックメッセージ、認可メッセージ、ゴーンアイドルメッセージおよびアイドル解除メッセージがある。上記メッセージを使用することによって、本発明は、メモリに対する独占的アクセスを求める複数のプロセッサからの要求を受け入れ、それらすべての要求を指示し、要求を行う第１のプロセッサに独占的アクセスを認可する。
【００１５】
（好ましい実施形態の詳細な説明）
本発明の好ましい実施形態を以下で詳細に解説する。特定の構成を解説しているが、これは例示を目的としてのみ行うものであることを理解すべきである。当業者は、本発明の趣旨および範囲から逸脱することなく、他の部品および構成を用いてもよいことを理解するであろう。さらに、本発明の実施形態はハードウェア、ソフトウェア、またはそれらの組合せにおいて実施できることを理解すべきである。当該実施形態では、ハードウェアおよび／またはソフトウェアにおいて様々な構成要素およびステップを実施して本発明の機能を果たすことになる。現在利用可能な、または将来開発されるあらゆるコンピュータソフトウェア言語および／またはハードウェア構成要素を本発明の当該実施形態に採用することが可能である。
【００１６】
本発明を詳細に説明する前に、システム処理プラットフォームの例の説明を行う。図１は、本発明が使用されているシステム処理プラットフォーム１００のブロック図である。システム処理プラットフォーム１００は、多数の処理システムおよび多数の記憶装置システム間でのデータフローを管理するのに有用である。システム処理プラットフォーム１００は、１つまたは複数の記憶装置ユニット（ＭＳＵ）１１０（ＭＳＵ１１０ＡおよびＭＳＵ１１０Ｂとして図示）および１つまたは複数の処理モジュール（ＰＯＤ）１２０（ＰＯＤ１２０ＡおよびＰＯＤ１２０Ｂとして図示）を含む。顧客は、追加のＭＳＵ１１０やＰＯＤ１２０を付加することにより、システム処理プラットフォーム１００を拡張することができる。
【００１７】
各ＭＳＵ１１０は、ＭＳＵインタフェース（ＭＩ）バス１３０（ＭＩバス１３０Ａ、１３０Ｂ、１３０Ｃおよび１３０Ｄとして図示）を介して各ＰＯＤ１２０に接続されている。ＭＩバス１３０は、個別のアドレス／機能およびデータバスを有するポイントツーポイントのインタフェースである。ＭＩバス１３０は、単方向制御バス、二方向要求バスおよび二方向データバスを含む。要求バスは、システムクロック周波数（SYSCLK）で動作し、データバスは、システムクロック周波数の２倍のソース同期で動作する。好ましい実施形態では、システム処理プラットフォーム１００で、システムクロック周波数は１００メガヘルツ（ＭＨＺ）である。
【００１８】
ＰＯＤ１２０は、ＭＩバス１３０の１つを介して、あらゆるＭＳＵ１１０のデータに直接的なアクセスすることができる。例えば、ＭＩバス１３０Ａは、ＰＯＤ１２０ＡにＭＳＵ１１０Ａへの直接アクセスを可能にし、ＭＩバス１３０Ｃは、ＰＯＤ１２０ＡにＭＳＵ１１０Ｂへの直接アクセスを可能にする。
【００１９】
図２は、記憶装置ユニット（ＭＳＵ）１１０を更に詳細に示している。ＭＳＵ１１０は、メモリコントローラ２１０とメモリ２２０とを含む。メモリ２２０は、複数のデータライン２３０を含む。各データライン２３０は、システムプラットフォーム１００においてＭＳＵ１１０とＰＯＤ１２０との間で転送されるデータの最小量である。システム処理プラットフォーム１００において、データライン２３０は、８データワードまたは６４バイトの情報と同等である。
【００２０】
メモリコントローラ２１０は、メモリ２２０のメモリマネージャとして動作する。メモリコントローラ２１０は、ＭＩバス１３０を介して、ＰＯＤ１２０から制御およびアドレスラインを受信する。メモリコントローラ２１０は、以下で詳細に解説する方法で、各データライン２３０の状態を制御し監視する。
【００２１】
ＰＯＤ１２０の詳細なブロック図を図３に示した。ＰＯＤ１２０は、クロスバー３５０、１つまたは複数のサブ処理モジュール（サブＰＯＤ）（サブＰＯＤ３１０ＡおよびサブＰＯＤ３１０Ｂとして図示）および１つまたは複数の入出力（Ｉ／Ｏ）モジュール３２０（Ｉ／Ｏモジュール３２０ＡおよびＩ／Ｏモジュール３２０Ｂとして図示）を含む。システム処理プラットフォーム１００において、各ＰＯＤ１２０は、２つのサブＰＯＤ３１０および２つのＩ／Ｏモジュール３２０を含む。
【００２２】
クロスバー３５０は、ＭＩバス１３０を介してサブＰＯＤ３１０およびＩ／Ｏモジュール３２０をＭＳＵ１１０に接続している。サブＰＯＤ３１０（サブＰＯＤ３１０ＡおよびサブＰＯＤ３１０Ｂとして図示）は、インタフェース３３０（インタフェース３３０Ａおよびインタフェース３３０Ｂとして図示）を介してクロスバー３５０に接続されている。クロスバー３５０は、インタフェース３４０（インタフェース３４０Ａおよびインタフェース３４０Ｂとして図示）を介してＩ／Ｏモジュール３２０（Ｉ／Ｏモジュール３２０ＡおよびＩ／Ｏモジュール３２０Ｂとして図示）にインタフェースしている。システム処理プラットフォーム１００において、ＭＩバス１３０およびインタフェース３３０は、同等な転送レートでデータを転送する。Ｉ／Ｏモジュール３２０とクロスバー３５０との間のインタフェース３４０は、ＭＩバス１３０およびインタフェース３３０と同様の構成を有しているが、半分の転送レートで動作する。
【００２３】
Ｉ／Ｏモジュール３２０は、図４に示した。Ｉ／Ｏモジュール３２０は、ＰＯＤ１２０と、Ｉ／Ｏ３２０に接続された１つまたは複数のＩ／Ｏ装置（図示せず）との間のインタフェースとして機能する。Ｉ／Ｏモジュール３２０は、バス４３０（バス４３０Ａ、バス４３０Ｂおよびバス４３０Ｃとして図示）を介して、１つまたは複数のペリフェラルコンポーネントインターコネクト（ＰＣＩ）（ＰＣＩ４２０Ａ、ＰＣＩ４２０ＢおよびＰＣＩ４２０Ｃとして図示）を相互接続するブリッジ４１０を含む。ブリッジ４１０は、図３に示したようにバス３４０を介してＰＯＤ１２０のクロスバー３５０にも接続されている。ブリッジ４１０は、ＰＯＤ１２０が各ＰＣＩ４２０にアクセスすることを可能にするバス３４０とバス３３０との間のスイッチとして機能する。
【００２４】
ペリフェラルコンポーネントインターコネクト（ＰＣＩ）４２０は、Ｉ／Ｏモジュール３２０に様々な入出力デバイス（図示せず）を接続する入出力バスである。システム処理プラットフォーム１００の好ましい実施形態では、各ＰＣＩ４２０が４つまでのデバイスをサポートすることができる。これらのデバイスには、ＳＣＳＩコントローラ、ＬＡＮコントローラ、およびビデオコントローラ等が含まれるが、それらに限定されるものではない。
【００２５】
サブＰＯＤ３１０のブロック図を図５に示した。サブＰＯＤ３１０は、第３レベルのキャッシュ（ＴＬＣ）５１０および１つまたは複数のコヒーレンシィドメイン５３０（コヒーレンシィドメイン５３０Ａおよびコヒーレンシィドメイン５３０Ｂとして図示）を含む。ＴＬＣ５１０は、バス５２０（バス５２０Ａおよびバス５２０Ｂとして図示）を介して、各コヒーレンシィドメイン５３０に接続されている。ＴＬＣ５１０は、各コヒーレンシィドメイン５３０間のコヒーレンシィを維持する。
【００２６】
各コヒーレンシィドメイン５３０は、複数の第２レベルのキャッシュ（ＳＬＣ）５５０（コヒーレンシィドメイン５３０ＡにおけるＳＬＣ５５０ＡおよびＳＬＣ５５０Ｂ、ならびにコヒーレンシィドメイン５３０ＢにおけるＳＬＣ５５０ＣおよびＳＬＣ５５０Ｄとして図示）および、バス５６０（コヒーレンシィドメイン５３０Ａにおけるバス５６０Ａおよびバス５６０Ｂ、ならびにコヒーレンシィドメイン５３０Ｂにおけるバス５６０Ｃおよびバス５６０Ｄとして図示）を介して、各ＳＬＣ５５０に接続されたプロセッサ５４０（コヒーレンシィドメイン５３０Ａにおけるプロセッサ５４０Ａおよびプロセッサ５４０Ｂ、ならびにコヒーレンシィドメイン５３０Ｂにおけるプロセッサ５４０Ｃおよびプロセッサ５４０Ｄとして図示）を含む。各バスインタフェース５２０は、コヒーレンシィドメイン５３０における２つまでのプロセッサ／ＳＬＣ（５４０／５５０）の構成をサポートする。プロセッサモジュール５４０は、例えば、Deshutes style P6、Merced style P7、Voyager style 2200またはCapricorn style Aシリーズの命令処理装置のうち１つを含むことができる。これら４種類の命令処理装置の全てが当業者にはよく知られている。
【００２７】
各コヒーレンシィドメイン５３０のＳＬＣ５５０は、それ自身の間と同様にそれら独自のコヒーレンシィドメイン内においてコヒーレンスを維持する。これは、バス５２０を共有し、スヌーピーベースのコヒーレンスに従うことによって達成される。スヌーピーベースのコヒーレンスによれば、各ＳＬＣ５５０は、要求バス５２０を「覗いて」データライン２３０の状態を確認して、必要であれば、そこに記憶されたデータラインの状態を更新する。スヌーピープロトコルに関する更に詳細な解説は、参照によって本明細書中にその全体を含めた、本願と同時に出願した"A Directory  Based Cache Coherency System"という名称の並行して係属中である出願（１９９７年１０月５日に出願された米国特許出願番号第08/965,004号）に含まれている。
【００２８】
ＰＯＤ１２０およびＭＳＵ１１０は、協働してコヒーレントメモリシステムを作り出す。本発明の好適実施形態において、システム処理プラットフォーム１００のコヒーレンシィスキームは、ディレクトリベースの所有権プロトコルである。図６は、システム処理プラットフォーム１００に使用されたディレクトリベースの所有権プロトコルを示している。メモリ２２０および各レベルのキャッシュ（すなわち、ＴＬＣ５１０、ＳＬＣ５５０など）が、コヒーレンスを維持するためのディレクトリプロトコルを許容している。図６に示したように、メモリ２２０は、メモリディレクトリ６１０を有し、ＴＬＣ５１０は、ＴＬＣディレクトリ６４０を有し、ＳＬＣ５５０は、ＭＥＳＩ（Modified Exclusive Shared Invalid）というＳＬＣディレクトリ６５０を有している。
【００２９】
各々のキャッシュ５１０および５５０は、キャッシュライン（ＴＬＣ５１０内のキャッシュライン６２０やＳＬＣ５５０内のキャッシュライン６３０）と呼ばれるデータラインを記憶するためのメモリを含む。キャッシュラインは、１つまたは複数のキャッシュ５１０、５５０の中に存在するデータラインのコピーである。このコピーは、データが特定のキャッシュ内で変更されておらず、主メモリ内のデータと同一であるデータラインの「真のコピー」であってもよく、あるいはデータが特定のキャッシュ内で変更されているが、主メモリに対して更新されていないデータラインの「修正されたコピー」であってもよい。
【００３０】
ディレクトリ６１０では、各データライン２３０に関する情報が、状態６１２およびベクトル６１４を用いて監視および更新される。状態６１２は、データライン２３０に関して要求者に認可されたアクセスの状態に関する情報を維持する。当該状態には、現行、共有および独占といった状態が含まれる。現行の状態は、データライン２３０がメモリ２２０のみに存在することを示す。共有の状態は、１つまたは複数のＰＯＤ１２０の中にデータライン２３０の読み取り専用コピーが存在することを示す。これは、これらの１つまたは複数のＰＯＤ１２０がデータライン２３０のコピーを自由に読み取ることができることを示す。独占の状態は、単一の要求者がデータライン２３０に対する書き込みアクセスを認可されたことを示す。これは、単一の要求者のみがデータライン２３０を変更する権利を有することを示す。ベクトル６１４は、データライン２３０が存在する各位置を識別するポインタである。
【００３１】
ＴＬＣディレクトリ６４０では、各キャッシュライン６２０に関する情報が、状態６４２およびベクトル６４４を用いて監視および更新される。状態６４２は、キャッシュライン６２０に関する３種類の情報を維持する。この情報には、所有権、データ状態およびバス占有権が含まれる。ベクトル６４４は、キャッシュライン６２０が存在する１つまたは複数の位置を示す。
【００３２】
所有権は、独占権、共有権および未知の権利を含むことができる。独占権は、ＴＬＣ５１０がキャッシュライン６２０への独占権（すなわち、書き込みアクセス権）を有することを示しており、この独占権は、メモリ２２０におけるデータライン２３０の対応する状態と一致する。共有権は、メモリ２２０がキャッシュライン６２０を共有されたもの（すなわち、リードオンリーアクセス）として関連づけていることを示している。未知の権利は、キャッシュライン６２０に関する所有権が未知であることを示している。
【００３３】
ＴＬＣディレクトリ６４０のデータ状態は、データなし、変更データまたはクリーンデータを含むことができる。データなしは、キャッシュライン６２０に現在データが存在しないことを示している。変更データは、キャッシュライン６２０上のデータが変更されたことを意味している。変更データは、メモリ２２０に書き戻されなければならない。クリーンデータは、キャッシュライン６２０上のデータが変更されていないことを示している。
【００３４】
バスの権利は、バス５２０Ａまたは５２０Ｂのどちらに権利が与えられたかを示している。バスの権利も状態とベクトル（状態およびベクトルとも図示せず）を含む。バスの権利は、独占、共有または未知といった状態を含むことができる。独占権は、バス５２０Ａまたは５２０Ｂのどちらかに関連づけられたＳＬＣ５５０に独占的所有権が属することを示している。共有権は、バス５２０Ａと５２０Ｂの両方に権利が与えられていることを示している。未知の権利は、どちらのバスが権利を有しているか分からないことを示している。
【００３５】
ＳＬＣディレクトリ６５０では、キャッシュライン６３０の状態のみが維持される。その状態には、変更、独占、共有および無効といった状態が含まれる。修正状態は、１つの関連するＳＬＣ５５０がキャッシュライン６３０上のデータに対する独占的所有権が認可され、次にデータを変更したことを示す。独占的状態は、１つの関連するＳＬＣ５５０がキャッシュライン６３０上のデータに対する独占的所有権が認可され、そのデータが変更されなかったことを示す。共有状態は、１つまたは複数の関連するＳＬＣ５５０がキャッシュライン６３０上のデータに対する所有権を共用したことを示す。無効状態は、ＳＬＣ５５０の中のキャッシュライン６３０内に存在するデータライン２３０のコピーが、他のデバイスにおけるデータライン２３０に対して実行された書き込みのために有効でなくなっていることを示す。
【００３６】
プロセッサ５４０などのプロセッサによって必要とされる時間を削減し、メモリ２２０でデータライン２３０を読み取るために、キャッシュスキームが開発された。システム処理プラットフォーム１００で使用されているようなキャッシュシステムは、メモリ２２０、ＴＬＣ５１０およびＳＬＣ５５０の各々の中でコヒーレントなデータを維持し、システム処理プラットフォーム１００が適切かつ効率的に処理を遂行できるようする。
【００３７】
コヒーレンシィは、当業界においてよく知られた言葉であり、複数メモリ及び処理デバイスを有するシステム内のデータの利用を支配する。コヒーレントシステムは、ある時間にただ１つのデバイスが特定のデータライン２３０に対する書き込みアクセスを有し、複数のデバイスが特定のデータライン２３０に対する読み取りアクセスを有するシステムである。言いかえれば、コヒーレンシィは、データラインの読み取りがもっとも最近書き込まれたそのデータラインの値を戻し、データラインの書き込みが読み取りアクセスを有するすべてのエージェントによって所有されるそのデータラインのすべてのコピーを無効にすることを要求する。
【００３８】
処理システムプラットフォーム１００に関しては、コヒーレンシィは、ＰＯＤ１２０がその要求者の１つにキャッシュ５１０および５５０のいずれかの中のキャッシュライン６２０または６３０を変更することを許可する前に、このデータについてＭＳＵ１１０から所有権許可を得なければならないことを意味する。独占的所有権が与えられると、ＰＯＤ１２０の要求者は、ＭＳＵ１１０と対話することなくキャッシュライン６２０を変更することを許可される。ＰＯＤ１２０がキャッシュライン６２０との関係を絶つと、キャッシュライン６２０は、ＭＳＵ１１０に書き戻される。
【００３９】
ＭＳＵ１１０は、ＴＬＣ５１０および入出力バスインタフェース３４０でキャッシュライン６２０状態情報の追跡をする。ＭＳＵ１１０は、ディレクトリ構造６１０を使ってこれを行う。ディレクトリ６１０は、ＭＳＵ１１０、特定のＴＬＣ５１０または特定の入出力バスインタフェース３４０のいずれがデータライン２３０を所有しているかに関する情報を維持する。ディレクトリ６１０は、もしあるとすれば、どのＴＬＣ５１０がデータライン２３０の未処理のコピーを有しているか、あるいは、特定のＩ／Ｏが未処理のコヒーレントコピーを有しているかに関する情報を維持する。ディレクトリ６１０は、特定のデータライン２３０が修正不可能なエラーを含んでいるかどうかも示す。
【００４０】
システム処理プラットフォーム１００のコヒーレンシィスキームは、ただ１つの要求者がある時間に独占的所有権を有することを可能にし、キャッシュラインベースでコヒーレンシィが実施される。したがって、他のＴＬＣ５１０または入出力バスインターフェース３４０が、変更されたキャッシュライン６２０または６３０に対する独占または共有の所有権を有する必要がある場合は、キャッシュライン６２０または６３０をＭＳＵ１１０に戻して新しいデータを要求者に送るよう元の独占的権利者に要求することがＭＳＵ１１０の役割である。要求者がキャッシュライン６２０または６３０を変更したい場合は、元の権利者は対応するキャッシュライン６２０または６３０をそのキャッシュからパージする（無効にする）。次いで、元の権利者がその特定のキャッシュライン６２０または６３０へのアクセスを再び必要とする場合は、ＭＳＵ１１０に送り込まれて最新のコピーを得る。要求者がデータライン２３０を読み取りたい場合は、元の権利者は対応するキャッシュライン６２０または６３０のコピーを保持することができる。いずれの場合においても、元の権利者は対応するキャッシュライン６２０または６３０内のデータを変更する特権を失い、変更するためには、ＭＳＵ１１０に独占的所有権を再び要求しなければならない。
【００４１】
システム処理プラットフォーム１００のコヒーレンシィスキームは、本願と同時に出願された"A Directory  Based Cache Coherency System"という名称の並行して係属中である出願（１９９７年１０月５日に出願された米国特許出願番号第08/965,004号）で更に説明している。
【００４２】
本発明については、上記の例の環境で説明している。これらの用語の説明は利便性のみのために行っている。本発明をこの例の環境における応用に限定することは意図していない。事実、以下の説明を読んだ後に、当業者には他の記憶装置ユニットや処理モジュールの構成で本発明をどのように実装するのかが明らかになるであろう。例えば、本発明は、複数のプロセッサに接続されたメモリ階層を利用した如何なるシステムにも適用性を有する。複数レベルのキャッシングは本発明を実装するためには要求されない。
【００４３】
本発明は、分割ロックと呼ばれ、プロセッサ５４０からのロックラインに頼ることなくディレクトリベースのマルチプロセッシングシステムにおけるデッドロックを回避することを目的としている。分割ロックは、キャッシュラインの境界を横切るデータを２つのプロセッサが同時に利用するときにデッドロックが生じるのを防ぐ一連のメッセージを介して動作する。
【００４４】
以下のセクションでは、分割ロック操作を実行する上で、本発明が使用するいくつかのメッセージについて記載する。本発明は以下の特定のメッセージ、すなわち分割ロック要求、ロックメッセージ、認可メッセージ、ゴーンアイドルメッセージおよびアイドル解除メッセージを生成する。これらのメッセージの各々については後により詳細に説明する。
【００４５】
分割ロック要求は、プロセッサ５４０によりバス５２０を介してＴＬＣ５１０に送出される。分割ロック要求は、プロセッサ５４０が分割ロック操作を要求していることをＴＬＣ５１０に通知する。分割ロック操作は、プロセッサが複数のキャッシュラインに記憶されたデータを利用する必要があるときに要求される。
【００４６】
ロックメッセージは、分割ロック要求に応答してＴＬＣ５１０により生成される。ロックメッセージは、バス３３０を介してＭＳＵ１１０に送出される。認可メッセージは、ロックメッセージに応答してＭＳＵ１１０により生成される。各ＴＬＣ５１０はその認可メッセージを使用して、分割ロック操作を実行する許可が認可されたか否かを判断する。
【００４７】
ゴーンアイドルメッセージは、分割ロック要求が認可されていないすべてのＴＬＣ５１０によって生成される。分割ロック動作を実行する特定のＴＬＣ５１０はそのゴーンアイドルを使用して、他のすべてのＴＬＣ５１０がメモリを利用できないようにする。
【００４８】
アイドル解除メッセージは、分割ロック要求が認可された特定のＴＬＣ５１０によって生成される。アイドル解除メッセージは、分割ロック動作が完了した後に特定のＴＬＣ５１０によって生成される。アイドル解除メッセージを使用して、分割ロック動作が完了したことをすべてのＴＬＣ５１０に通知する。
【００４９】
以下のセクションでは、本発明において実施されるＴＬＣ５１０を備えた機能的構成要素について記載する。図７は、本発明において実施されるＴＬＣ５１０のブロック図である。図７は、本発明を簡潔に説明する、ＴＬＣ５１０を概念的に示した図である。すなわち、同じハードウェアまたはソフトウェアのモジュールによって１つまたは複数のブロックを実行することができる。本発明の実施形態はハードウェア、ソフトウェア、またはそれらの組合せにおいて実装できることも理解すべきである。当該実施形態では、ハードウェアおよび／またはソフトウェアにおいて様々な構成要素およびステップが実装されて本発明の機能を果たすことになる。
【００５０】
ＴＬＣ５１０は、分割ロック要求検出器７１０、メッセージ発生器７２０、メッセージ復号器７３０、ゴーンアイドルコントローラ７３３、およびバスアービトレーションユニット７３６を含む。分割ロック要求検出器７１０は、分割ロック要求内の操作フィールドを復号することにより分割ロック要求を検出する。分割ロック要求検出器７１０は、分割ロック要求に関連するソース識別子を生成する。ソース識別子は、分割ロック要求を生成する各プロセッサ５４０を個々に識別する。分割ロック要求検出器７１０は、検出された各分割ロック要求について、信号７１５をメッセージ発生器７２０に送出する。
【００５１】
分割ロック操作については、メッセージ発生器７２０は、ロックメッセージ、ゴーンアイドルメッセージおよびアイドル解除メッセージを生成する。メッセージ発生器７２０は、分割ロック要求検出器７１０からの各信号に応答してロックメッセージを生成する。さらに、各々のロックメッセージは、対応する分割ロック要求からのソース識別子を含む。メッセージ発生器７２０は、バス３３０を介してロックメッセージをＭＳＵ１１０に送出する。
【００５２】
メッセージ発生器７２０は、バス５２０がアイドル状態になった後にゴーンアイドルメッセージを生成する。ゴーンアイドルメッセージは、各ＴＬＣ５１０に送出される。さらに、各ゴーンアイドルメッセージは、メッセージを送出する特定のＴＬＣ５１０のためのソース識別子を含む。ゴーンアイドルメッセージは、分割ロック操作を実行する特定のＴＬＣ５１０によって回収される。
【００５３】
メッセージ発生器７２０は、分割ロック操作を実行した特定のＴＬＣ５１０が分割ロック操作を完了した後にアイドル解除メッセージを発生する。
【００５４】
メッセージ復号器７３０は、ＭＳＵ１１０からバス３３０を介して受け取ったメッセージを復号する。メッセージ復号器７３０は、メッセージ内の操作フィールドを復号することによってメッセージタイプを検出する。分割ロック操作を通じて、メッセージ復号器７３０は、認可メッセージ、ゴーンアイドルメッセージおよびアイドル解除メッセージを復号する。第１の認可メッセージを復号すると、メッセージ復号器７３０は、認可メッセージ内のソース識別子と、プロセッサ５４０から受け取った第１の分割ロック要求に関連するソース識別子とを比較する。メッセージ復号器７３０は、認可メッセージ内のソース識別子がプロセッサ５４０から受け取った第１の分割ロック要求に関連するソース識別子に等しいか否かを示す信号７１６を送出する。
【００５５】
メッセージ復号器７３０は、バス３３０を介して受け取ったゴーンアイドルメッセージを検出する。ゴーンアイドルメッセージを検出すると、メッセージ復号器７３０は、そのように指示するゴーンアイドルコントローラ７３３に信号７１９を送出する。
【００５６】
メッセージ復号器７３０は、バス３３０を介して受け取ったアイドル解除メッセージを検出する。アイドル解除メッセージを検出すると、メッセージ復号器７３０はそのように指示するゴーンアイドルコントローラ７３３に信号７１９を送出する。
【００５７】
ゴーンアイドルコントローラ７３３は、バス５２０のアイドル状態を開始および終了する。ゴーンアイドルコントローラ７３３は、信号７１６を受け取るとアイドル状態を開始する。ゴーンアイドルコントローラ７３３は、他のすべてのＴＬＣ５１０からのメッセージをチェックする。他のすべてのＴＬＣ５１０からゴーンアイドルメッセージを受け取ると、ゴーンアイドルコントローラ７３３は、バスアービトレーションユニット７３６に対して、分割ロック操作を続けるよう合図する。信号７１８を受け取ったら、ゴーンアイドルコントローラ７３３は、バス５２０をアイドル状態にするようバスアービトレーションユニット７３６に合図する。バスアービトレーションユニット７３６は、バス５２０がアイドル状態になった後に信号７３７をゴーンアイドルコントローラに送出する。さらに、ゴーンアイドルコントローラ７３３は、ゴーンアイドルメッセージを生成するようメッセージ発生器７２０に合図する。
【００５８】
ゴーンアイドルコントローラ７３３は、分割ロック操作が完了した後にアイドル状態を終了する。ゴーンアイドルコントローラ７３３は、バスアービトレーションユニット７３６から信号７３４を受け取った後にアイドル状態を終了する。信号７３４は、分割ロック操作が完了したことを示す。信号７３４を受け取ると、ゴーンアイドルコントローラ７３３は、アイドル解除メッセージを生成するようメッセージ発生器７２０に合図する。あるいは、メッセージ復号器７３０からの信号７１７によってアイドル状態を終了する。信号７１７は、アイドル解除メッセージが受け取られたことを示す。
【００５９】
バスアービトレーションユニット７３６は、バス５２０のアイドル状態を開始および終了する。バスアービトレーションユニット７３６は、ゴーンアイドルコントローラから信号７３８受け取ると、バス５２０をアイドル状態にする。バスアービトレーションユニット７３６は、バス５２０がアイドル状態になった後に信号７３７をゴーンアイドルコントローラ７３３に送出する。
【００６０】
以下のセクションでは、本発明の好ましい実施形態によるＭＳＵ１１０の機能的構成要素について記載する。図８は、本発明において実施されるＭＳＵ１１０のブロック図である。ＭＳＵ１１０は、ＭＳＵメッセージ検出器８１０、ＭＳＵメッセージメモリ８２０およびＭＳＵメッセージ発生器８３０を含む。ＭＳＵ１１０は、ロックメッセージ、ゴーンアイドルメッセージおよびアイドル解除メッセージを復号する。復号される各メッセージタイプについて、ＭＳＵ１１０は、認可メッセージ、ゴーンアイドルメッセージおよびアイドル解除メッセージをそれぞれ各ＴＬＣ５１０に同報通信する。ＭＳＵ１１０は、バス１３０を介してすべてのメッセージタイプを受け取る。ＭＳＵメッセージ検出器８１０は、メッセージ内の操作コードを復号することによってメッセージタイプを検出する。受信したメッセージに関連するソース識別子が、メッセージが受け取られた順序でＭＳＵメッセージメモリ８２０内に記憶される。ＭＳＵメッセージ発生器８３０は、ＭＳＵメッセージメモリ８２０内に含まれる各ソース識別子について対応するメッセージタイプを生成する。ＭＳＵメッセージ発生器８３０によって生成された各メッセージは、それに関連するソース識別子を含む。次いで、各該当メッセージが、バス１３０を介してシステムに同報通信される。
【００６１】
以下のセクションでは、全体的な分割ロック操作がどのように実行されるかについて記載する。図９は、完全な分割ロック操作を示すフローチャートである。ステップ９１０では、特定のプロセッサ５４０が分割ロック要求をＴＬＣ５１０に送出するときに分割ロック操作が始まる。ステップ９２０では、ＴＬＣ５１０が、分割ロック動作を要求するプロセッサ５４０のソース識別子を取り入れたロックメッセージをＭＳＵ１１０に送出する。
【００６２】
ステップ９２４では、ＭＳＵ１１０が、ＴＬＣ５１０によって送出されたロックメッセージのキャッシュ内に含まれるソース識別子を受け取った順序で記憶する。ステップ９２６では、ＭＳＵ１１０は次いで、ロックメッセージを受け取った順序ですべてのＴＬＣに認可メッセージを送出する。
【００６３】
ステップ９３０では、ＴＬＣ５１０が、それがロッカとして選択されたか否かを判断する。すなわち、ソース識別子とともにＭＳＵ１１０から戻された認可メッセージは、特定のＴＬＣ５１０が分割ロック操作を実行する権利を有することを示す。ＴＬＣ５１０がそれがロッカに選択されたと判断する場合、ステップ９４０における処理が続けられる。さもなければ、ステップ９５０における処理が続けられる。
【００６４】
ステップ９４０では、ＴＬＣ５１０は、プロセッサ５４０が分割ロック操作を続行することを可能にする。プロセッサ５４０がその動作を完了したら、ＴＬＣ５１０は、この特定のＴＬＣ５１０のための分割ロック操作が完了したことを示すアイドル解除メッセージを送出する。
【００６５】
ステップ９５０では、ロッカアイドルバス５２０として選択されなかった各ＴＬＣ５１０がバス５２０をアイドル状態にする。バス５２０がアイドル状態になった後に、ＴＬＣ５１０は、ゴーンアイドルメッセージをロッカに送出し、ロッカからアイドル解除メッセージを受け取るまで待つ。ＴＬＣ５１０は、アイドル解除メッセージを受け取ったらバス５２０をアイドル状態から解放する。
【００６６】
図１０は、ロックメッセージを生成する分割ロック操作の部分を示したフローチャートである。ステップ１０１０では、分割ロック要求検出器７１０が、プロセッサ５４０よりバス５２０を介して送出される要求内の操作コードおよびソース識別子を復号する。ステップ１０２０では、メッセージ発生器７２０が、ステップ１０１０において分割ロック要求から復号されたソース識別子を取り入れたロックメッセージをＭＳＵ１１０に送出する。ステップ１０３０では、ＭＳＵ１１０が、ステップ１０３０において送出された各ロックメッセージを復号する。
【００６７】
ステップ１０４０では、各ロックメッセージに関連するソース識別子が、ロックメッセージがＭＳＵ１１０によって復号された順序でＭＳＵメッセージメモリ８２０内に記憶される。ステップ１０５０では、ＭＳＵメッセージ発生器８３０が、ＭＳＵメッセージメモリ８２０内に記憶された各ソース識別子について認可メッセージを同報通信する。それらの認可メッセージは、ロックメッセージが受け取られた順序で同報通信される。
【００６８】
図１１は、どのプロセッサ５４０に分割ロック操作が認可されるかを判断する分割ロック操作の部分を示したフローチャートである。判断ステップ１１１０では、メッセージ復号器７３０が、ＭＳＵ１１０によって同報通信された第１の認可メッセージが受け取られたか否かを検出する。第１の認可メッセージが受け取られていない場合は、ステップ１１１０における処理が続けられる。第１の認可メッセージが受け取られたら、ステップ１１２０の処理が続けられる。
【００６９】
ステップ１１２０では、メッセージ復号器７３０が第１の認可メッセージ内のソース識別子を復号する。ステップ１１３０では、ステップ１１２０において復号されたソース識別子がロッカＩｄにロードされる。ロッカＩｄは、分割ロック要求が認可された特定のＴＬＣ５１０を識別する。ロッカＩｄによって識別された特定のＴＬＣ５１０をロッカと呼ぶ。
【００７０】
判断ステップ１１４０では、ロッカ識別子が、この特定のＴＬＣ５１０によって送出された第１のロックメッセージに関連するソース識別子と比較される。そのロッカ識別子が、この特定のＴＬＣ５１０の分割ロック要求に関連するソース識別子と等しくない場合は、この特定のＴＬＣ５１０は、ロッカとして選択されなかったことになる。ロッカ識別子が、この特定のＴＬＣ５１０の分割ロック要求に関連するソース識別子と等しい場合は、この特定のＴＬＣ５１０はロッカとして選択されたことになる。
【００７１】
図１２は、ロッカとして選択された特定のＴＬＣ５１０によって遂行される分割ロック動作の部分を示したフローチャートである。ステップ１２１０では、ロッカに指定された特定のＴＬＣ５１０がバスアービトレーションユニット７３６を使用してバス５２０をアイドル状態にする。判断ステップ１２２０では、ロッカは、ロッカとして選択されなかった各ＴＬＣ５１０からゴーンアイドルメッセージを受け取るまで待つ。ステップ１２３０では、ロッカは、分割ロック要求を認可された特定のプロセッサ５４０が分割ロック操作を要求する動作を続けることを許可する。
【００７２】
判断ステップ１２４０では、ロッカは、プロセッサ５４０がステップ１２３０において許可された動作を完了するのを待つ。ステップ１２５０では、ロッカは、メッセージ発生器７２０を使用してアイドル解除メッセージをＭＳＵ１１０に送出する。ステップ１２６０では、ＭＳＵ１１０はアイドル解除メッセージをすべてのＴＬＣ５１０に同報通信する。
【００７３】
図１３は、ロッカとして選択されなかったＴＬＣ５１０によって遂行される分割ロック操作の部分を示したフローチャートである。ステップ１３１０では、バスアービトレーションユニット７３６がバス５２０をアイドル状態にする。バス５２０がアイドル状態になると、ＴＬＣ５１０の承諾がなければバス５２０に対する動作は起こりえない。ステップ１３２０では、メッセージ発生器７２０がゴーンアイドルメッセージをロッカに送出する。ゴーンアイドルメッセージは、ゴーンアイドルメッセージを送出する各ＴＬＣ５１０のソース識別子を含む。
【００７４】
判断ステップ１３３０では、ロッカとして選択されなかったすべてのＴＬＣ５１０がロッカからアイドル解除メッセージを受け取るのを待つ。ロッカからアイドル解除メッセージを受け取ると、ステップ１３４０における処理が続けられ、ＴＬＣ５１０はバス５２０をアイドル状態からリリースする。
【００７５】
以上、本発明の様々な実施形態について述べたが、それらは例示のために示されていることを理解すべきである。従って、本発明の幅および範囲は上述の模範的な実施形態のいずれによっても限定されず、特許請求の範囲および相当個所に従って定められるべきである。
【図面の簡単な説明】
本発明について添付の図面を参照しながら説明する。
【図１】  本発明の好適実施形態によるシステムプラットホーム環境のブロック図である。
【図２】  メモリ記憶ユニットの一実施形態を示した図である。
【図３】  処理モジュールの一実施形態を示した図である。
【図４】  Ｉ／Ｏモジュールの一実施形態を示した図である。
【図５】  サブ処理モジュールの一実施形態を示した図である。
【図６】  ディレクトリに基づくメモリおよびキャッシュシステムの一実施形態を示した図である。
【図７】  本発明において実施される第３レベルのキャッシュを示したブロック図である。
【図８】  本発明において実施されるメモリ記憶ユニットを示したブロック図である。
【図９】  全体的な分割ロック操作を示したフローチャートである。
【図１０】  分割ロック要求メッセージの生成を示したフローチャートである。
【図１１】  本発明の動作を示したフローチャートである。
【図１２】  本発明の動作を示したフローチャートである。
【図１３】  本発明の動作を示したフローチャートである。
【図１】
0003703716.tif 000002
【図２】
0003703716.tif 000003
【図３】
0003703716.tif 000004
【図４】
0003703716.tif 000005
【図５】
0003703716.tif 000006
【図６】
0003703716.tif 000007
【図７】
0003703716.tif 000008
【図８】
0003703716.tif 000009
【図９】
0003703716.tif 000010
【図１０】
0003703716.tif 000011
【図１１】
0003703716.tif 000012
【図１２】
0003703716.tif 000013
【図１３】
0003703716.tif 000014