(57)【特許請求の範囲】
【請求項１】
共用のメモリ・サブシステムと、当該メモリ・サブシステムに接続される複数のプロセッサと、当該複数のプロセッサからのメモリ要求を処理し複数のプロセッサが当該メモリ・サブシステムのアドレス空間を争奪する複数のリクエスタとして働くことができるようにする共用メモリ・コントローラとを有する共用メモリ・システムに適用され、当該共用メモリ・システムのアドレスの競合および当該メモリ・サブシステムへのアクセスの優先順位付けを解決する方法であり、
前記複数のリクエスタがメモリ・サブシステムの異なるアドレス空間へのアクセスを要する場合には、前記複数のリクエスタが、前記メモリ・サブシステムへの他のリクエスタを待たずに、前記メモリ・サブシステムへの公平なアクセスを実施できるようにするステップと、
ロック・ビットを用い、競合するアドレスに対するリクエスタのメモリアクセス要求が順序付けられたリストを構成する前記複数のリクエスタが前記メモリ・サブシステムの同じアドレス空間の異なるアドレスへのアクセスを要求する場合には、当該リストの順序に関わらず、当該リクエスタがその要求するアドレスへのアクセスを実施できるようにするステップと、
前記共用メモリ・システムがハードウェアを有し、新たなリクエスタが前記リストを構成する順序付けられた複数のリクエスタと同じアドレス空間の同じアドレスへのアクセスを要求する場合に、当該新たなリクエスタを当該リストに追加し、
追加された当該新たなリクエスタが、追加前の当該リストの最後のリクエスタに対してニーズ・レジスタをセットし、パイプラインに新たなアクセス要求を行うために、追加前の当該リストの最後のリクエスタの処理が終了したときに、追加前の当該リストの最後のリクエスタに対するそのニーズ・レジスタをリセットして、当該パイプラインに対するアクセスの優先順位を要求してニーズ・レジスタがセットされている他のリクエスタのパイプラインに対する要求を阻止する一方、当該パイプラインに対するアクセスの優先順位を要求してニーズ・レジスタがセットされていない他のリクエスタのパイプラインに対する要求を受け付ける当該ハードウェアによって処理されるステップと、
を含む方法。
【請求項２】
共用のメモリ・サブシステムと、当該メモリ・サブシステムに接続される複数のプロセッサと、当該複数のプロセッサからのメモリ要求を処理し複数のプロセッサが当該メモリ・サブシステムのアドレス空間を争奪する複数のリクエスタとして働くことができるようにする共用メモリ・コントローラとを有する共用メモリ・システムに適用され、当該共用メモリ・システムのアドレスの競合および当該メモリ・サブシステムへのアクセスの優先順位付けを解決する方法であり、
前記複数のリクエスタがメモリ・サブシステムの異なるアドレス空間へのアクセスを要する場合には、前記複数のリクエスタが、前記メモリ・サブシステムへの他のリクエスタを待たずに、前記メモリ・サブシステムへの公平なアクセスを実施できるようにするステップと、
ロック・ビットを用い、競合するアドレスに対するリクエスタのメモリアクセス要求が順序付けられたリストを構成する前記複数のリクエスタが前記メモリ・サブシステムの同じアドレス空間の異なるアドレスへのアクセスを要求する場合には、当該リストの順序に関わらず、当該リクエスタがその要求するアドレスへのアクセスを実施できるようにするステップと、
前記共用メモリ・システムがハードウェアを有し、新たなリクエスタが前記リストを構成する順序付けられた複数のリクエスタと同じアドレス空間の同じアドレスへのアクセスを要求する場合に、当該新たなリクエスタを当該リストに追加し、
追加された当該新たなリクエスタが、追加前の当該リストの最後のリクエスタに対してニーズ・レジスタをセットし、パイプラインに新たなアクセス要求を行うために、追加前の当該リストの最後のリクエスタの処理が終了したときに、追加前の当該リストの最後のリクエスタに対するそのニーズ・レジスタをリセットして、当該パイプラインに対するアクセスの優先順位を要求してニーズ・レジスタがセットされている他のリクエスタのパイプラインに対する要求を阻止する一方、当該パイプラインに対するアクセスの優先順位を要求してニーズ・レジスタがセットされていない他のリクエスタのパイプラインに対する要求を受け付ける当該ハードウェアによって処理されるステップと、
後続のリクエスタが前記リストを構成する順序付けられた複数のリクエスタと同じアクセス空間へのアクセスを要求する場合に、同じアドレスへのアクセス競合の有無を確認するため、当該後続のリクエスタは、当該リスト中の最初のリクエスタではなく、最後のリクエスタに対してニーズ・レジスタをセットし、
当該リストを構成する順序付けられた複数のリクエスタの一つのリクエスタのアクセス要求が完了すると、当該アクセス要求を完了したリクエスタはそのニーズ・レジスタをリセットし、当該リクエスタが処理されるステップを含む方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータおよびコンピュータ・システムに関し、詳細には、共用メモリ・システム内のアドレス競合および資源へのアクセスの優先順位付けを解決するための機構に関する。
【０００２】
【従来の技術】
マルチプロセッサ・システムは、多くの形式をとることができ、個々の設計は、多くの独自の機能を含む場合がある。マルチプロセッサ・システムの間に共通するのは、共用アドレスの競合を解決するという要件である。共用アドレスの競合は、１つまたは複数のプロセッサが共用データの更新を試みるときに発生する。このタイプの競合を解決するには直列化されたアクセスを必要とするので、システム設計者は、このタイプのアクティビティが発生するシナリオを回避する。たとえば、処理ユニットは、オペレーティング・システムによって専用アドレス空間を割り当てることができ、その結果、プロセッサは競合による制約を受けずに機能することができる。この環境にあってさえ、アイドル状態のプロセッサは、一般に、共用アドレス空間に記憶されている待ち行列から新しい作業を獲得する。プロセッサが高速化され、その数が増えるにつれ、このような作業負荷の調整は、より重要性が増してくる。しかし、作業負荷によっては、多くのプロセッサ間における対話を必要とし、比較的低速のプロセッサであっても競合の効率的な解決が必要となる。たとえば、大規模データベースは多くのビジネスのために維持されており、それらのデータベースは、同時に実行されている複数のアプリケーションによって更新することができる。競合を解決することは、しばしばシステムの制約になる。それらの共用の競合を最低限に抑えるだけでなく、その競合が発生したときのパフォーマンスの影響を最低限に抑えるマルチプロセッサ・システムを有することが望まれる。
【０００３】
技術的進歩は、より高速なプロセッサを作成したが、また、高密度だが比較的低速のメモリも提供した。いくつかのこの影響を相殺し、アクセス遅延を低減するために、キャッシュ階層、すなわちより高速だが容量のより小さいメモリの層が追加された。キャッシュは、プロセッサがアクセスできる全メモリのサブセットなので、ディレクトリは、メインメモリのどのブロックが、キャッシュに保持されるどのブロックに対応するかを追跡することが必要となる。共用メモリ・マルチプロセッサ・システムでは、メモリへのすべての更新は、すべてのプロセッサに可視的である必要があるので、キャッシュのデータへの変更は、このシステムのすべてのプロセッサおよびデバイスに対して使用可能にされなければならない。
【０００４】
当技術分野における一般的な方法は、キャッシュの各ブロックの所有状態を示すタグをキャッシュのディレクトリに付けることである（ディレクトリ・ベースのキャッシュ・コヒーレンス）。この所有状態は、ブロックのプロセッサ書込み権限を示すものである。プロセッサが、キャッシュのデータ・ブロックの更新を希望する場合、プロセッサは、まずプロセッサ間連絡によって占有権を獲得しなければならない。プロセッサは、ひとたび、占有権を獲得すると、争奪されているブロックのディレクトリ所有状態を変更し、その更新を開始することができる。重要なことは、プロセッサ間連絡に、プロセッサ間の共用ブロックの所有権を渡すことが必要とされることである。このプロセッサ間連絡は、データへのアクセスに関連する全般的な遅延に著しい遅延を付加する危険性がある。争奪されるブロックを１つのプロセッサが確実に更新できるようにするために、プロセッサ間連絡へのアクセスは、通常、直列化される。これは、プロセッサは、必要な資源を使用するためにある種の方法で優先順位を要求しなければならないことを、通常、意味する。
【０００５】
優れた優先順位設計、すなわち公平なアクセスを確実にする設計は、適切な作業分配を確実にし、リクエスタの飢餓状態を回避するために不可欠である。メモリ・リクエスタの数が増えるにつれて、メモリ資源への同等のアクセスを維持することがますます困難になり、マルチプロセッサ・システムのスケーラビリティが損なわれる危険性が生じる。プロセッサ相互接続および関連するトラフィックの悪影響を低減させることができる優先順位システムが望まれる。
【０００６】
受信された順序と同じ順序で確実に要求が提示されるように、集中型待ち行列、または類似の順序付け機構に要求を入力する優先順位設計が使用されてきた。メモリ・システムがこの待ち行列システムによって提示された各要求を完了する間、待ち行列は、この順序を維持する。この解決法はこの順序を保証するが、資源が使用可能度や競合に関して評価される前にこの順序がセットされることを必要とする。一例として、キャッシュのインターリーブを使用することができる。この解決法では、ターゲット・キャッシュのインターリーブが使用不可能なために停止されていた要求をバイパスできる要求はない。すなわち、その１つの要求に対する追加の待ち時間は、次に、待ち行列で、その要求の後に入れられているすべての要求に追加されるということである。同様に、待ち行列の要求は、停止されている要求とアドレス競合を有する危険性はなく、したがって、強制的な直列化から利益を得ることはない。この待ち行列の影響を回避するための追加のパッチを、スタックの入力で使用することができる。たとえば、アドレス範囲に基づいて複数のスタックを作成するには、スタックへの入力の前にアドレスをチェックすることが必要になる。
【０００７】
この解決法の有効性は、物理的配列または他のメモリ・デバイスの形式で、どれだけのハードウェアがこの目的のために使用可能であるかによって限定される。同様に、この種のすべての改善点は、優先順位の前に要求の追加的なチェックとカテゴリー化を追加することによって、名目上の待ち時間に悪影響を及ぼす。他の優先順位方式によっては、要求の飢餓状態を生じる危険性のあるいくつかの複雑な対話の低減を試みて、サンプリングを使用する。サンプルまたはスナップショットは、所与の時間に未解決の要求にタグを付け、新しいサンプルがとられる前にそれらすべての要求が確実に満たされるようにする。現行のスナップショットで満たされた要求は、そのスナップショットが空になって初めて可視的要求を作成することができるので、いくつかの飢餓状態のシナリオを回避することができる。しかし、スナップショットの設計は、それぞれの間に依存関係のない要求に基づいており、実施態様によっては、その要求は正しくない場合があり、デッドロック状態を生じる危険性がある。デッドロック状態とは、スナップショットの要求がスナップショットにない要求を待つということである。このクラスの解決法は、競合する要求の間でのアクセスの改良を試みず、問題の範囲を、管理可能と推定される度合いにまで限定するだけであり、したがって、成功を保証せずに名目上の待ち時間を増加させる危険性が高い。
【０００８】
最低使用頻度（ＬＲＵ）優先順位アルゴリズムは、すべてのプロセッサに公平なアクセスを保証するために使用することができる。優先順位要求の待ち時間を制限するために、部分的ＬＲＵが使用される。この部分的ＬＲＵは、使用するビットが少なく、優先順位のより高速な計算を可能にする。このシステムでは、要求は調停され、パイプライン構造に提示される。要求は、このパイプラインを通過し、キャッシュ・アクセスおよび関連するディレクトリ検索を開始し、資源が使用可能かどうかをチェックし、他の要求が同じアドレスをロックしていないかどうかをチェックする。所有者がない場合、現行のリクエスタが、ロックをセットすることによって所有権を得る。このロックは、要求が満たされるまでアクティブのままである。ひとたび、ロックがセットされると、同じアドレスへのすべての後続要求は、そのメモリ・アクセスをブロックし、所有するリクエスタが完了するための資源ニーズ（ｒｅｓｏｕｒｃｅ−ｎｅｅｄ）をセットする。この資源ニーズは、所有する要求が完了するまでさらなるパイプライン・アクセスを防止する。次いで、所有する要求は、必要に応じて、自由にラインの所有状態を変更し、要求されたデータをプロセッサに戻す。このようなシステムは、前述の種類のプロセッサ間同期におけるのと同様に、アドレス・アクティビティが発生するまで正常に機能する。その場合、多くの要求が、同じアドレスへのアクセスを試みている。それらはすべてパイプラインに入り、所有するプロセッサに対してその資源ニーズをセットし、所有するプロセッサは終了し、残りの要求はすべて、再度、優先順位を争奪し、新しい所有者がそのロックをセットし、すべての後続の要求は、次いで、新しい所有者に対して資源ニーズをセットする。各要求はパイプおよび他の資源をビジー状態にしても、新たに指定された所有者に対して資源ニーズをセットするだけである。ひとたび、新しい所有者が終了すると、このプロセスは再度開始される。終了するたびに、優先順位付け機構は再度テストされ、ビジー状態の資源はトラフィックと待ち時間の増加をもたらす。さらに、完了したプロセッサは、すべてのプロセッサがデータにアクセスする前に、別の要求を同じアドレスに発行することができる。
【０００９】
優先順位論理が最高の状態に最適化されているため、また、ロックがクリアされた後の要求の生成に伴う固有の待ち時間のために、新しい要求は待機中の要求に先んじることができる。完全なＬＲＵではなく部分的ＬＲＵの組合せ、送信所有権の待ち時間、追加のトラフィック、および新しい要求の最適化は、ロックアウトのシナリオを生じる危険性がある。従来のシステムは、このタイプのプロセッサの飢餓状態を呈し、特別の場合のシナリオを訂正する試みがなされた。プロセッサで開始される回復を回避するために、デッドロック状態を回避するように追加されたハング回避ハードウェアも使用されてきた。
【００１０】
【発明が解決しようとする課題】
より多くのプロセッサ・リクエスタが追加されるにつれ、トラフィックと待ち時間も追加され、改良されたアービトレーション装置が必須となる。
【００１１】
【課題を解決するための手段】
マルチプロセッサ・システムにおいて、共用メモリの同じアドレス空間に対してプロセッサによって行われる要求は、その要求が受信された順序で満たされる。共通のメモリ・サブシステムに接続された複数のプロセッサを備えるコンピュータ・システムにおいて、複数のリクエスタが、しばしば同じアドレス空間に対して同時に競合する。メモリ・コントローラ資源が使用可能であること、およびそこへのアクセスは、要求間に所望でない順序付けを強いることがある。しかし、同様の複雑な資源の対話は、要求すべての直列化はしない解決法、すなわち、リクエスタＡとＢの間に競合がない限りリクエスタＢはリクエスタＡを待つべきではないという解決法が必然的に生じる。本発明は、要求が同時にメモリの同じ記憶位置へのアクセスを試みない限り、すべての要求がメモリ資源に対して同等のアクセスを有することができるようにする。ひとたび、この競合が識別されると、この記憶位置へのアクセスは順序付けられる。
【００１２】
共用メモリ・コントローラが各要求を処理するとき、アドレス競合がチェックされる。指定されたアドレス範囲にアクセスするよう指定された現行の所有者がない場合、その要求は、その要求が満たされるまで、そのアドレス空間の所有権を与えられる。同じメモリの記憶位置に対する後続要求は、第１の競合ではなく同じ競合を参照するために、最後のリクエスタに対してそのニーズをセットする。各マスターが完了するとき、１つのリクエスタだけがそのニーズをリセットし、処理される。順序付けられたリストはいくつあってもよく、各リストにはリクエスタがいくつあってもよい。これまでに、その同じアドレス空間へのすべての後続要求がこの所有者を参照し、それが完了するために資源ニーズ・ラッチをセットしている。ひとたび、このアドレス所有者が完了すると、すべての残りの要求が再度処理される。
【００１３】
異なるアドレス空間へのメモリ・アクセスへの悪影響なしにアドレス空間へのアクセスを直列化する方法は、各競合するアドレスに対する要求の順序付けられたリストを動的に作成することによって達成される。競合が認識された後でだけ、リストに新しい要求が追加される。アドレスの競合は常に存在するわけではないので、競合していないアドレスに対する要求への影響はない。所有するリクエスタに対して資源ニーズをセットするのとは対照的に、同じアドレス競合に遭遇した最後のリクエスタに対応する資源ニーズを生成するハードウェアが追加される。それらの順序付けられたリストはいくつでも存在することができる。たとえば、２０のリクエスタを有するシステムでは、１つのリクエスタが順序付けた２０の「リスト」であっても、２０のリクエスタが順序付けられた１つのリストであっても、それらのいかなる組合せであってもよい。順序付けるデバイスによって物理的な制限は追加されない。リストの作成は、特定のロック・ビットに依存する。前述のように、アドレス競合が認識されない場合は標準的なロックがセットされ、そのリクエスタは所有権を与えられる。このロックは移動し、常に、各アドレスによって区別される順序付けられたリストの最後のリクエスタによって保持される。新しいリクエスタは、第１のリクエスタではなく、最後のリクエスタに対する競合を認識し、それに従ってその資源ニーズをセットする。この方法で、第１のリクエスタは、他のすべての競合相手によって妨げられないキャッシュ・ブロックの状態を自由に更新し、リストは、メモリヘの公平で順序付けられたアクセスを確保する。いつでも、順序付けられたリストのプロセッサは、強制的に回復させられ、一時的にシステムから取り出すことができる。このことがデッドロック状態の原因にならないように注意が必要である。特に、多くのサイクルの各サイクルごとに競合が発生する可能性のあるパイプライン処理環境では、移動するロックのセッティングとリセッティングによって他のケースが発生する。
【００１４】
争奪される他の資源を含むこともできる。たとえば、複数のキャッシュ・ブロック・スピル／フィル資源が使用可能な場合、それらの限定された資源が争奪される場合がある。ここでも、同じ解決法を実行することができる。いくつかのプロセッサ要求は、キャッシュをミスし、キャッシュ・スピル／フィル資源をロードしても、使用可能なものがないことが判明するだけの場合がある。このリクエスタは、その資源ニーズを次のものが使用可能になるようにセットする。ひとたび、これが実行されると、別のパイプライン・パスに資源をロードさせても、そのパイプラインの１サイクル前のリクエスタが最後の１つをとることが判明するだけである。この場合、スピル／フィル資源に対して、アドレス競合と同様の方法で、順序付けられたリストを作成することができる。同様の利益が、また、認識される。たとえば、実際にスピル／フィル資源を必要とする要求だけが、資源が使用不可能なときにだけ、強制的にリストに入れられる。
【００１５】
【発明の実施の形態】
この環境では、一般にこの発明が動作する分野では、複数の中央処理システム（ＣＰ）は、たとえばＣＰＡ、ＣＰＢ、ＣＰＣおよびＣＰＤなどのようなリクエスタとして働き、それぞれが共用メモリの同じアドレスに対するストーレッジ・コントローラ（ＳＣ）へのフェッチ要求を生成する。各要求に対するコマンドおよびアドレスがＳＣに送信される。これら４つの要求が処理されている間、新しい要求は送信されない。ＳＣは、これらの要求を受け取り、それぞれを固有のフェッチ・コントローラにインゲートする。１つの要求が、パイプラインに入るための優先順位によって選ばれ、第１のサイクル（Ｃ１）に入る。第２のサイクル（Ｃ２）中に、ＣＰＡに関連付けられたアドレスが、すべての「保留」リクエスタに対して比較される。Ｃ２パイプライン・アドレスは、すべてのリクエスタに分配される。各リクエスタは、それらのアドレスに対して比較を実行する。アドレスが一致し、そのリクエスタの保留ラッチがアクティブである場合、比較出力として一致信号が送られる。Ｃ２の要求は、他のいずれかのリクエスタにおける比較一致を検知する。１つの要求しか、所与のアドレスに対して保留ラッチをセットすることはできない。すべての比較ラインがまとめられ、比較識別子が生成される。これは、パイプラインのＣ２にあるのと同じアドレスを有する保留リクエスタを識別する。ＣＰＡがパイプラインを通過するとき、ＳＣでは他に保留になっている要求はない（他に３つの有効な要求がある）。ＣＰＡは、そのＣ２パイプライン・サイクルで比較一致を見ることはなく、アドレス比較のためにそのニーズ・レジスタをセットすることもない。Ｃ２において同じように使用可能なのが、ディレクトリ結果である。これは、求められているデータがキャッシュにおいて使用可能かどうか、また、フェッチ要求タイプに対して所有状態がＯＫであるかどうかを示す。データがキャッシュにない場合、スピル／フィル・コントロールがロードされ、ＣＰＡはメインメモリからのデータに対してそのニーズ・レジスタをセットする。所有状態が、排他的無効化を他のプロセッサに送らなければならないことを示す場合、無効化信号が送られ（排他的介入）、ＣＰＡは、ターゲット・プロセッサからの応答に対してそのニーズ・レジスタをセットする。そのデータが使用可能であり、すでに適切な所有状態にある場合、そのデータは戻される。Ｃ２サイクルにおいて、ＣＰＡは、その保留ラッチをセットし、その結果、ＳＣにおいて有効な他の要求は、ＣＰＡがそのデータを獲得している間に、ＣＰＡに対する比較を見る。
【００１６】
ＣＰＡの次に、ＣＰＢ、ＣＰＣおよびＣＰＤが続く。ＣＰＡがＣ２にあるとき、ＣＰＢはＣ１にある。ＣＰＡがＣ３にあるとき、ＣＰＢはＣ２にあり、ＣＰＣはＣ１にある。ＣＰＡがＣ４にあるとき、ＣＰＢはＣ３にあり、ＣＰＣはＣ２にあり、ＣＰＤはＣ１にある。これがパイプライン処理の概念である。ＣＰＢがＣ２サイクルにあるとき、ＣＰＢはＣＰＡに対する比較を見る。それは次にその保留ラッチをＯＮにし、その結果、ＣＰＢが、そのニーズ・レジスタをＣＰＡに対してセットする。ＣＰＣがＣ２にあるとき、ＣＰＣはそのニーズ・レジスタをＣＰＡに対してセットする。ＣＰＤがＣ２にあるとき、ＣＰＤはそのニーズ・レジスタをＣＰＡに対してセットする。
【００１７】
ＣＰＡは、最終的に、そのデータを獲得し、そのリクエスタは、その有効なラッチと保留のラッチのリセットを完了する。ＣＰＡに対してニーズ・レジスタがセットされているすべてのリクエスタは、ＣＰＡの有効なラッチのドロップを参照し、優先順位を再度争奪する。この例では、ＣＰＢ、ＣＰＣおよびＣＰＣは、優先順位付け機構に要求（すなわち、ＣＰＢ、ＣＰＣおよびＣＰＤにとって２回目の要求）を提示する。
【００１８】
その優先順位の順序が同じ場合、ＣＰＢは、許可を獲得し、パイプラインを通過し、Ｃ２ではアドレス比較を見ない。Ｃ２は、その保留ラッチをセットし、フェッチ動作を完了する。
【００１９】
ＣＰＣはＣＰＢに続き、ＣＰＣがＣ２にあるとき、ＣＰＢに対する比較を見て、そのニーズ・レジスタをＣＰＢに対してセットする。ＣＰＤはＣＰＣに続き、ＣＰＤがＣ２にあるとき、ＣＰＢに対する比較を見て、そのニーズ・レジスタをＣＰＢに対してセットする。ＣＰＢが完了すると、ＣＰＣおよびＣＰＤは、ＣＰＢに対するそれらのニーズ・レジスタをリセットし、優先順位を再度争奪する（すなわち、ＣＰＣとＣＰＤにとっては３回目）。優先順位の順序が同じ場合、ＣＰＣはパイプラインに入り、ＣＰＣがＣ２にあるとき、ＣＰＣはいかなる比較をも見ることはなく、その保留レジスタをセットする。ＣＰＤがＣＰＣに続き、ＣＰＣに対する比較を見て、そのニーズ・レジスタをＣＰＣに対してセットする。ＣＰＣが完了すると、ＣＰＤは、そのニーズ・レジスタをリセットし、優先順位を要求する（すなわち、４回目）。ＣＰＤは、Ｃ２に到着したとき、いかなる比較も見ずに、そのオペレーションを完了する。
【００２０】
本発明の環境に戻ると、一般的に、共用メモリのマルチプロセッサ・システムでは、複数のプロセッサ、Ｉ／Ｏモジュール、および他のシステム・クラスタが共用メモリ・コントローラに接続されている。このコントローラは、共用のインターリーブされたキャッシュにアクセスすることができる。これは、キャッシュに関連するコヒーレンシー管理を処理し、インターリーブされたメインメモリにアクセスすることができる。資源管理を容易にし、メモリのインターリーブされる性質を利用するために、各クロック・サイクル中に新たにメモリ・アクセスを開始することができる場合には、パイプライン構造が使用される。説明している本発明では、ストーレッジ・コントローラは、様々なリクエスタに対する公平で同等のアクセスを確保し、いかなる要求の飢餓状態をも防止するために含まれる、パイプラインに入るための優先順位付け機構を提供する。本発明は、また、複数のリクエスタが同時に同じアドレスの記憶位置を更新しようと試みることによって生じるアドレス競合を解決することができるプロセスも含む。
【００２１】
一般的な例では、共通のアドレスにアクセスを試みる４つのプロセッサ（Ｐ０、Ｐ１、Ｐ２およびＰ３）が、それらの要求を共用メモリ・コントローラに対して同時に提示する。４つのプロセッサは、それらの指定された順序、すなわちＰ０、Ｐ１、Ｐ２次いでＰ３でパイプラインに入る。Ｐ０がパイプに入ると、Ｐ０は、アドレス競合に遭遇しないので、ロックをセットする。Ｐ１は、従来技術の場合と同様にＰ０を参照し、Ｐ０に対して資源ニーズをセットする。Ｐ２は、パイプラインに入り、Ｐ０に対してではなくＰ１に対して資源ニーズをセットする。同様の方法で、Ｐ３は、そのニーズをＰ２に対してセットする。プロセッサＰ０が完了すると、Ｐ１だけが優先順位に対して要求を行う。すなわち、Ｐ２およびＰ３は、それぞれＰ１およびＰ２に対して資源ニーズを有する。同じように、Ｐ１が完了すると、Ｐ２は優先順位要求を実行し、Ｐ３は待機する。Ｐ０が同じアドレスへの第２の要求を伴って戻ってくる場合、Ｐ３が完了する前にＰ０はその資源ニーズをＰ３に対してセットする。しかし、Ｐ０が異なるアドレスを要求している場合、それは、既存の順序付けられたリストに妨げられることなく完了することができる。
【００２２】
次に、好ましい実施形態のシステム全体の構造を、図面の具体的な細部を参照しながら論じる。
【００２３】
図１に、本発明の好ましい実施形態のマルチプロセッサ・システムの概略図を示す。完全に構成されたシステムでは、最高１２のＣＰ（１２、１３、１４、１５、１６、１７、１８、１９、２０、２１、２２、２３）、４つのＩ／Ｏアダプタ（２４、２５、２６、２７）、および４つのメモリカード（４４、４５、４６、４７）を、２つのストーレッジ・コントローラ（ＳＣ１０およびＳＣ１１）に接続することができる。ＳＣを１つだけ含む１ノード・システムを有することが可能である。このようなシステムは、最高６つのＣＰ、２つのＩ／Ｏアダプタ、および２つのメモリカードをサポートする。各ＣＰは、ストアスルー・レベル１（Ｌ１）キャッシュを含み、各ＳＣは、レベル２（Ｌ２）キャッシュの記憶を含む。
【００２４】
ＣＰまたはＩ／Ｏアダプタは、１つのＳＣにだけ直接的に接続する。所与のＳＣはメモリカードの２つに直接的にアクセスでき、ＳＣＯ（１０）は、１つのバス（４８）を介してメモリカード０（４４）に直接的にアクセスでき、別個のバス（４９）を介してメモリカード２（４５）に直接的にアクセスできる。同様に、ＳＣ１（１１）は、１つのバス（５０）によってメモリカード１（４６）にアクセスでき、別個のバス（５１）を使用してメモリカード３（４７）にアクセスできる。
【００２５】
しかし、すべてのＣＰとＩ／Ｏアダプタは、メインメモリのどの部分にもアクセスできる。他の２つのメモリカードへのストーレッジ・アクセスは、ＣＰまたはＩ／Ｏアダプタに対して透過的な、ＳＣオペレーション（５２）のためのＳＣによって処理される。各ＣＰまたはＩ／Ｏアダプタは、接続されているＳＣに対して、データ・バスＡおよびデータ・バスＢと呼ばれる２つのデータ・バスを有する。メモリカード０および１（４４、４６）からのストーレッジ・データはバスＡに戻され、メモリカード２および３（４５、４７）からのデータはバスＢに戻される。
【００２６】
ストーレッジ・コントローラＳＣへのすべての要求は、ＣＰ、Ｉ／Ｏアダプタ、または他の（リモート）ＳＣからＳＣへの、アドレスおよびコマンドの送信によって開始される。ＳＣが要求を完了すると、応答と可能ならばデータがその要求の発信者に返送される。
【００２７】
ＣＰからその接続されているＳＣへのフェッチ要求および記憶要求は、送信コマンド、アドレス、データ、および応答に、一群の単方向バスおよび双方向バス（２８、２９、３０、３１、３２、３３、３４、３５、３６、３７、３８、３９）を使用する。ＣＰのフェッチ要求および記憶要求は、要求のアドレス部分およびコマンド部分については単方向バスを介して送信され、データ部分については２つの双方向バスを介して送信される。要求のデータ部分は、ＣＰからＳＣに送信される記憶データであっても、ＳＣからＣＰに送信されるフェッチ・データであってもよい。これらの双方向バスは、前述のデータ・バスＡとデータ・バスＢである。これらは、それぞれ４倍長ワード幅である。フェッチ要求または記憶要求がいつ完了したか、その要求のすべての状況が、たとえば、標準的な完了であるか無効アドレスであるかを示す、応答を送信するために使用されるＳＣから各ＣＰへの単方向バスもある。
【００２８】
Ｉ／Ｏアダプタ・インターフェースも双方向バスと単方向バス（４０、４１、４２、４３）から構成される。この場合、コマンド、アドレスおよび応答は、双方向バスを介してＳＣとＩ／Ｏアダプタとの間で送信される。フェッチ・データおよび記憶データは、どちらもダブルワード幅のデータ・バスＡとデータ・バスＢの２つの双方向バスで送信される。他の制御信号には、単方向バスが使用される。
【００２９】
リモートＳＣ（ＲＥＭ  ＳＣ）インターフェースは、コマンド、アドレス、応答およびデータのために単方向バス（５２）を使用する。したがって、完全に構成されたシステムでは、１つはＳＣ０からＳＣ１への、もう１つはＳＣ１からＳＣ０への、バスの２つのセットがある。データは、ＳＣ０からＳＣ１へのバスＡおよびバスＢと、ＳＣ１からＳＣ０へのバスＡおよびバスＢの、４つの４倍長ワード幅の単方向バスで送信される。前述の１ノード・システムの場合、リモートＳＣはなく、したがって、リモートＳＣから発信される要求はない。
【００３０】
ハイレベル・アドレス・フローをより詳細に理解するためには、図１に示すストーレッジ・コントローラ（ＳＣ０）の１つに対するハイレベル・アドレス・フローを示す図２を参照されたい。パイプラインＡ（１１９）およびパイプラインＢ（１２０）と呼ばれ、それぞれに固有のディレクトリ（１２１、１２２）を有し、それぞれにメモリ・コントローラ論理（１３１、１３２）を介する１つのメモリカード（１３３、１３４）へのインターフェースを有する、２つの別個のパイプラインがある。ＳＣの２つの処理パイプラインは、前述の２つのデータ・バスに対応する。パイプラインＡは、バスＡの記憶（メモリカード０）に対する要求を処理し、パイプラインＢは、バスＢの記憶（メモリカード２）に対する要求を処理する。パイプライン情報は、データフロー論理（１３６、１３７）に転送され、そこで、Ｌ２キャッシュにアクセスするために使用される。ＳＣ１つあたりパイプラインを１つしか持たないシステムを有することが可能である。この場合、ＳＣは、１つのメモリカードにだけアクセスする。
【００３１】
所与のパイプラインに関連付けられたディレクトリは、オペレーションのパイプライン・パスの第１のサイクルでアクセスされる。ディレクトリ・ヒットがある場合、データはＬ２キャッシュから戻される。ディレクトリ・ミスがある場合、要求のさらなる処理が、ライン・フェッチ・アドレス・レジスタ（ＬＦＡＲ）ＬＯＧＩＣ（１２３、１２４）によって処理される。要求に関するアドレスおよび制御情報は、各パイプラインに対して使用可能な４つのＬＦＡＲレジスタの１つにゲートされる。要求は、リモートＳＣインターフェース・レジスタ（１３５）を介してリモートＳＣに送られる。リモートＳＣのキャッシュは問い合わされ、データが、リモートＳＣから、接続されている（ローカル）ＳＣに送られ、そこから、要求しているＣＰまたはＩ／Ｏアダプタに送られる。リモートＳＣキャッシュにミスがある場合、要求は、ターゲット・アドレスに応じて、ローカルＳＣに接続されているメモリカードの１つに送られるか、それとも、リモートＳＣに接続されているメモリカードの１つに送られる。
【００３２】
キャッシュ・エントリが、新しいエントリＬ２に対してメモリ空間を作るためにキャストアウトされなければならない場合、それは、ライン記憶アドレス・レジスタ（ＬＳＡＲ）論理（１２５、１２６）によって処理される。ＬＲＵアルゴリズムを使用する置換のためにターゲットとされるアドレスは、各パイプラインに対して使用可能な４つのＬＳＡＲレジスタの１つにゲートされる。ＬＳＡＲ論理は、メインメモリにデータを記憶すること、およびキャッシュのエントリを無効にすることを制御する。
【００３３】
フェッチ要求と記憶要求のどちらであってもよい、ＳＣの外部から発信される要求は、リモートＳＣインターフェース（５２）、６つのインターフェース（２８、２９、３０、３１、３２、３３）および２つのＩ／Ｏアダプタ・インターフェース（４０、４１）を介して受信される。どの場合でも、インターフェース・レジスタ（１０３、１０４、１０５）が、要求に関する情報を１サイクルの間ラッチするために使用される。その後、それは、関連付けられたコントローラに送られる。
【００３４】
ＳＣ内の各機能エリアは、インターフェースからの入力、優先順位要求、およびパイプラインを通過する際の要求の制御を処理する別個のコントローラを有する。２つのＩ／Ｏアダプタ・コントローラ（１０９）、６つのＣＰフェッチ・コントローラ（１０７）、６つのＣＰ記憶コントローラ（１０８）および１つのリモートＳＣコントローラ（１０６）がある。各コントローラ内には、所与の要求に関連する情報を追跡するための保持レジスタがある。これらのレジスタは、要求がＳＣによって完了するまでは有効である。多くの場合、要求を正しい保持レジスタに向けて送るためには、何らかの要求の復号化を実行しなければならない。
【００３５】
リモートＳＣコントローラ（１０６）内では、リモートＳＣからのフェッチ要求および記憶要求のために別個のレジスタが使用される。この際、パイプライン１つあたり２つのレジスタが保持フェッチに専用化され、２つが保持記憶に専用化される。インターフェース情報は、一群の４つのレジスタを選ぶパイプライン選択を含み、コマンドは、それがフェッチか記憶かを判定するために復号化され、その結果、１対のフェッチ・レジスタと記憶レジスタが選ばれる。
【００３６】
各ＣＰ（１０４）に対するＣＰフェッチ要求およびＣＰ記憶要求のために、単一のインターフェース・レジスタが使用される。入ってくるコマンドは、それがフェッチか記憶かを判定するために復号化されなければならない。要求は、このインターフェース・レジスタから、関連付けられた１つのフェッチ要求レジスタを含むＣＰフェッチ・コントローラ（１０７）にステージされるか、または記憶要求へのアドレスと制御ビットを含む、各パイプラインに1つずつの、２つの８エントリ・スタックを含むＣＰ記憶コントローラ（１０８）にステージされる。
【００３７】
Ｉ／Ｏアダプタから送信されたコマンドは、また、フェッチであっても記憶であってもよい。Ｉ／Ｏコントローラ（１０９）は、パイプライン１つあたり１つのＩ／Ｏプロセッサあたり２つの要求レジスタを有し、パイプライン１つあたり全体で４つのレジスタを有し、それぞれはフェッチまたは記憶を保持することができる。Ｉ／Ｏアダプタは、Ｉ／Ｏコントローラ内でどのレジスタが使用可能かを追跡し、コマンドが送信されるときにその宛先レジスタを示す。
【００３８】
各コントローラ内で、他の制御情報に加え、有効な要求を示す信号が、要求が所与のサイクルの優先順位に対して資格があるかどうかを判定するために使用される。所与のカテゴリーで資格のあるすべての要求は、関連付けられた事前優先順位論理ステーションに送信される。
【００３９】
リモートＳＣ要求については、両方のパイプラインに対して単一の事前優先順位付けステーション（１１０）がある。パイプラインＡとパイプラインＢのどちらかに対する事前優先順位に対して単一の要求が選ばれる。インターフェース・レジスタの要求は、即時優先順位を得ることができ、最高の優先順位を有する。インターフェース・レジスタに要求がない場合、事前優先順位論理は、疑似ＬＲＵアルゴリズムを使用して各パイプラインに対して４つのレジスタ間で調停する（最後に完了した要求は最下位の優先順位を有する）。優先順位は、２つのパイプラインの間で交替になる。
【００４０】
両方のパイプラインに対するＣＰフェッチ（１１２）に対しても、単一の事前優先順位付けステーションがある。６つの資格のある要求から１つの要求を選ぶために疑似ＬＲＵアルゴリズムが使用される。この調停は、ＣＰフェッチ要求の宛先パイプラインとは関係なく実行される。
【００４１】
ＣＰ記憶は、受信された順序で処理されなければならない。記憶要求をバッファするために使用されるスタックは、ＦＩＦＯの順序で管理される。所与のＣＰから各パイプラインへの最も古い記憶だけが優先順位付けする資格がある。ＣＰ記憶には、パイプライン（１１３、１１４）１つあたり１つ、２つの別個の事前優先順位付けステーションがある。したがって、１つのサイクルにおいて２つの異なる記憶に事前優先順位が与えられる可能性がある。ＣＰ記憶に対する事前優先順位付けステーションは、各パイプラインが６つの資格のある要求から１つの記憶を選ぶために、変更されたラウンドロビン・アルゴリズムを使用する。
【００４２】
Ｉ／Ｏコントローラは、また、パイプラインＡおよびＢ（１１５、１１６）に対する別個の事前優先順位付けステーションを有する。各パイプラインに対する４つの可能性のある要求の間で、それらがフェッチ・オペレーションか記憶オペレーションかに関係なく、事前優先順位を判定するために疑似ＬＲＵアルゴリズムが使用される。
【００４３】
ＬＦＡＲおよびＬＳＡＲ（１２７、１３０）に対して、共用の事前優先順位付け機構がある。複数のＬＦＡＲ要求がある場合、それらは、まずＬＦＡＲ０、次いでＬＦＡＲ１、２、および３というように順番に選ばれる。同様に、複数のＬＳＡＲ要求がある場合、ＬＳＡＲ０から始まり、次いでＬＳＡＲ１、２、および３というように順番に選ばれる。トグルラッチが、ＬＦＡＲとＬＳＡＲの間の優先順位を交替させる。
【００４４】
パイプライン（１１７、１１８）に対する全般的な優先順位調停論理は、ランク付けされた優先順位の順序を使用して、１つの要求を選択する。この順序は、最も頻度の低い要求が最上位の優先順位を有し、最も頻度の高い要求が最下位の優先順位を有するように、要求の頻度に基づいて判定されている。最上位から最下位までのこの要求の順序は、リモートＳＣ要求、ＬＦＡＲ／ＬＳＡＲ要求、Ｉ／Ｏアダプタ要求、ＣＰフェッチ要求、およびＣＰ記憶要求である。選択された要求に対するアドレスおよび制御情報は、パイプラインの第１のステージに送信される。
【００４５】
各コントローラは、両方のパイプライン（１２８、１２９）から入力を受信し、特定パイプラインのサイクルにおいて有効な入力信号を監視しながら、パイプラインを通過するその要求の進行を追跡する。それらの信号のいくつかは、要求がパイプラインのあるステージにあるかどうかを判定するために使用される。他のパイプライン入力の例は、ディレクトリ・ヒットの結果であり、他のアドレス・レジスタに対して比較する。これらの入力は、要求に対して必要とされるすべての資源が使用可能であるかどうか、または、ある条件が満たされるのを待つためにその処理が中断されなければならないかどうかを決定するために使用される。要求の処理が中断されるとき、信号はパイプライン論理に送信される。この要求がパイプライン処理の後半のステージにおいて、もはや有効なエントリとは見なされないように、制御がリセットされる。信号は、また、コントローラ内の様々な論理ステーションにも送信される。コントローラ内でとられるアクションには、その要求が現在実行中であることを示す、コントロール・ビットをリセットすることが含まれる。
【００４６】
図４を参照すると、複数の中央処理装置（図示せず）が、同じアドレスについて、ストーレッジ・コントローラ（１０）に対するフェッチ要求を生成している。ストーレッジ・コントローラ（１０）は、それらの要求を受信し、各要求を、特定のプロセッサ用に専用化されたフェッチ・コントローラ（１０７ａ、１０７ｂ、１０７ｃ）にインゲートする。すなわち中央処理装置１つあたりフェッチ・コントローラは１つである。図４には、フェッチ要求（２８、２９、３３）をそれぞれの中央処理装置から受信する３つのフェッチ・コントローラ（１０７ａ、１０７ｂ、１０７ｃ）しか示さないが、これらは、中央処理装置との通信における複数のフェッチ・コントローラを代表するものと見なされたい。たとえば、４つの中央処理装置ＣＰ１、ＣＰ２、ＣＰ３、およびＣＰ４は、フェッチ要求を生成することができる。各要求に対するコマンドとアドレスは、ストーレッジ・コントローラ（１０）に送信される。すべての要求が一度に受信され、それら４つの要求の処理中は新しい要求は送信されない。１つの要求（１４０）がコントローラ優先順位付けステーション（１１２）によって選ばれ、中央優先順位（１１７、１１８）はパイプラインＡ（１１９）とパイプラインＢ（１２０）のどちらかに入る。このようにして選ばれた要求は、第１のサイクル（Ｃ１）にある。
【００４７】
図６に示すように、第２のパイプ・サイクル（Ｃ２）中は、ＣＰ１に関連付けられたアドレスは、すべての「保留」リクエスタに対して（４２４）で比較される。Ｃ２パイプライン・アドレス（４２５）入力は、すべてのリクエスタに分配され、その結果、各リクエスタは、図６の（４２４）でそれらのアドレスに対して比較を実行する。アドレスが一致し、そのリクエスタの保留のラッチ（４２６）がアクティブである場合、一致を示す比較信号（４３２）が出力される。Ｃ２にある要求は、他のいずれかのリクエスタにおける比較一致を検知する。１つの要求だけが、その保留ラッチ（４２６）を、所与のアドレスに対してセットすることができる。アドレス比較ライン（１５０、１５２、１５４）のすべては、図４の２００でまとめられ、リクエスタに対するパイプラインの識別子に対応する比較識別子（２０２）が生成される。これは、パイプラインのＣ２のリクエスタと同じアドレスを有する、保留のリクエスタを識別する。ＣＰ１がパイプラインを通過するとき、ストーレッジ・コントローラでは他の要求は保留にならない（他に３つの有効な要求がある）。ＣＰ１は、そのＣ２パイプライン・サイクルでは比較一致を見ることはなく、アドレス比較のためにそのニーズ・レジスタ（２０４）（図８）をセットすることもない。要求のパイプライン通過のＣ２において、アドレス比較に遭遇しないとき、ニーズ・レジスタ（２０４）が、そのリクエスタに対する一意の識別子に等しい値と共にロードされる。
【００４８】
Ｃ２において同様に使用可能なのが、ディレクトリ結果（１７０）（図４）である。これは、求められているデータがキャッシュ・ディレクトリ（１２１）で使用可能かどうか、フェッチ要求のタイプに対して所有状態がＯＫかどうかを示す。このデータがキャッシュ（１２１）にない場合、キャッシュ・スピル制御（１８２）とキャッシュ・フィル制御（１８０）（図３）がロードされ、ＣＰ１は、メインメモリからのデータに対してそのニーズ・レジスタ（２０４）をセットする。所有状態が、排他的無効化が別のプロセッサに送信されなければならないことを示す場合、無効化信号が送信され（排他的介入）、ＣＰ１は、ターゲット・プロセッサからの応答に対してそのニーズ・レジスタ（２０４）をセットする。データが使用可能であり、すでに適切な所有状態にある場合、そのデータは戻される。Ｃ２サイクルでは、ＣＰ１がデータを獲得している間、ＣＰ１は、その保留ラッチ（４２６）をセットし、その結果、ストーレッジ・コントローラで有効な他の要求がＣＰ１に対する比較を見ることになる。
【００４９】
ＣＰ１の後に、ＣＰ２、ＣＰ３、およびＣＰ４が続く。ＣＰ１がサイクルＣ２にあるとき、ＣＰ２はサイクルＣ１にある。ＣＰ１がサイクルＣ３にあるとき、ＣＰ２はサイクルＣ２に、ＣＰ３はサイクルＣ１にある。ＣＰ１がサイクルＣ４にあるとき、ＣＰ２はサイクルＣ３に、ＣＰ３はサイクルＣ２に、また、ＣＰ４はサイクルＣ１にある。ＣＰ２は、Ｃ２サイクルにあるとき、保留ラッチをオンにしているＣＰ１に対する比較を見る。Ｃ２は、ＣＰ１に対してそのニーズ・レジスタ（２０４）をセットする。ＣＰ２は、その保留ラッチ（４２６）をセットし、ＣＰ２がＣＰ１との比較を行っていることを検知したＣＰ１は、その保留ラッチ（４２６）をリセットする。Ｃ３サイクルにあるＣＰ１は、ブロック保留ラッチ（４２２）をセットする。ＣＰ３がサイクルＣ２にあるとき、ＣＰ３はその保留ラッチ（４２６）をセットし、ＣＰ２はその保留ラッチ（４２６）をリセットする。ＣＰ３は、ＣＰ２に対してそのニーズ・レジスタ（２０４）をセットする。ＣＰ２は、そのブロック保留ラッチ（４２２）をセットする。
【００５０】
ＣＰ４はサイクルＣ２にあるとき、ＣＰ４はその保留ラッチ（４２６）をセットし、ＣＰ３はその保留ラッチをリセットする。ＣＰ４は、ＣＰ３に対してそのニーズ・レジスタ（２０４）をセットする。ＣＰ３は、そのブロック保留ラッチ（４２２）をセットする。この時点で、アドレス・ベースの待ち行列は、ＣＰ１を先頭に、後にＣＰ２（ＣＰ１にセットされたニーズ・レジスタ）、ＣＰ３（ＣＰ２にセットされたニーズ・レジスタ）およびＣＰ４（ＣＰ３にセットされたニーズ・レジスタ）を続けて存在する。ＣＰ４は、サイクルＣ３にあるとき、そのブロック保留ラッチ（４２２）をセットする。
【００５１】
ＣＰ１は、最終的に、そのデータを受信し、ＳＣにあるそのリクエスタは、有効なラッチ（４５０）のリセットを完了する。ＣＰ２は、ＣＰ１に対するニーズ・レジスタ（２０４）をセットし、ＣＰ２がパイプライン（１１９、１２０）に新しい要求を行うことができるようにするために、そのニーズ・レジスタをリセットする。ひとたび、ニーズ・レジスタがリセットされると、リクエスタは、パイプラインの優先順位を自由に要求し、そのオペレーションを完了する。ニーズ・レジスタをセットした他の要求は、パイプライン要求を行わない。それらの要求は、ニーズ・レジスタがセットされているので、阻止される。
【００５２】
ＣＰ２は、Ｃ２にあるとき、ＣＰ４に対して比較を見るが、ＣＰ４に対してそのニーズ・レジスタ（２０４）をセットせず、また、ＣＰ２は、パイプラインの第１のパスでブロック保留ラッチ（４２２）をセットしており、そのラッチは依然としてセットされたままなので、その保留ラッチ（４２６）もセットしない。ＣＰ２は、ＣＰ１との所有権競合が解決された後で最終的に完了し、ＣＰ２は、データにアクセスし、ディレクトリを更新し、その有効ラッチ（４５０）とそのブロック保留ラッチ（４２２）とをリセットするために後続のパイプライン・パスを実行する。
【００５３】
ＣＰ３は、ＣＰ２の有効ラッチがリセットされたことを見て、ＣＰ２に対するそのニーズ・レジスタ（２０４）をリセットする。ＣＰ３は、優先順位１１２に要求を行い、Ｃ２にあるときは、ＣＰ４に対する比較を見る。ＣＰ３は、ＣＰ４のブロック保留ラッチ（４２６）がセットされているので、この比較を無視する。ＣＰ３は、その有効ラッチ（４５０）とブロック保留ラッチ（４２２）とをリセットして、ＣＰ２との所有権競合を解決し、完了する。
【００５４】
ＣＰ４は、ＣＰ３の有効ラッチ（４５０）がリセットされたことを見て、ＣＰ３に対するそのニーズ・レジスタ（２０４）をリセットする。ＣＰ４は、優先順位に要求を行い、ＣＰ３がサイクルＣ２にあるとき、ＣＰ４に対する比較を見る。ＣＰ４は、ＣＰ４のブロック保留ラッチ（４２６）がセットされているので、この比較を無視する。ＣＰ４は、その有効ラッチ（４５０）とブロック保留ラッチ（４２２）とをリセットして、ＣＰ３との所有権競合を解決し、完了する。従来技術では、ＣＰ４は４つのパスを作成したが、本発明では、ＣＰ４は２つのパスを作成する。
【図面の簡単な説明】
【図１】好ましい実施形態のマイクロプロセッサのシステム概要を示す図である。
【図２】図１のマルチプロセッサの単一ストーレッジ・コントローラに関するアドレスの流れを示す図である。
【図３】好ましい実施形態のマルチプロセッサ・システムのシステム概要を示す一般化された概略図である。
【図４】中央処理装置フェッチ事前優先順位付けステーションに要求を実行する複数の中央処理装置フェッチ・コントローラの図である。
【図５】リクエスタに対するパイプライン識別子に対応する比較識別子を作成するエンコーダの図である。
【図６】フェッチ・コントローラによって保持されるアドレスと、フェッチ・コントローラがアドレス比較を提供する方法とを示す図である。
【図７】パイプライン・モニタを示す図である。
【図８】リセット保留の生成を示す図である。
【図９】ニーズ・レジスタのセットを示す図である。
【図１０】ニーズおよびリセットの条件の復号化を示す図である。
【符号の説明】
ＣＰ  中央処理システム
ＳＣ  ストーレッジ・コントローラ
Ｃ１  第１のサイクル
Ｃ２  第２のサイクル
Ｐ０  プロセッサ
Ｐ１  プロセッサ
Ｐ２  プロセッサ
Ｐ３  プロセッサ
４４  メモリカード
４５  メモリカード
４６  メモリカード
４７  メモリカード
１１９  パイプラインＡ
１２０  パイプラインＢ
ＬＦＡＲ  ライン・フェッチ・アドレス・レジスタ
ＬＳＡＲ  ライン記憶アドレス・レジスタ
【図１】
0003871305.tif 000002
【図２】
0003871305.tif 000003
【図３】
0003871305.tif 000004
【図４】
0003871305.tif 000005
【図５】
0003871305.tif 000006
【図６】
0003871305.tif 000007
【図７】
0003871305.tif 000008
【図８】
0003871305.tif 000009
【図９】
0003871305.tif 000010
【図１０】
0003871305.tif 000011