JP3871305B2 - マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化 - Google Patents

マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化 Download PDF

Info

Publication number
JP3871305B2
JP3871305B2 JP2001301135A JP2001301135A JP3871305B2 JP 3871305 B2 JP3871305 B2 JP 3871305B2 JP 2001301135 A JP2001301135 A JP 2001301135A JP 2001301135 A JP2001301135 A JP 2001301135A JP 3871305 B2 JP3871305 B2 JP 3871305B2
Authority
JP
Japan
Prior art keywords
access
requests
requester
pipeline
requesters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001301135A
Other languages
English (en)
Other versions
JP2002182976A (ja
Inventor
マイケル・フィー
パッキン・マック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2002182976A publication Critical patent/JP2002182976A/ja
Application granted granted Critical
Publication of JP3871305B2 publication Critical patent/JP3871305B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータおよびコンピュータ・システムに関し、詳細には、共用メモリ・システム内のアドレス競合および資源へのアクセスの優先順位付けを解決するための機構に関する。
【0002】
【従来の技術】
マルチプロセッサ・システムは、多くの形式をとることができ、個々の設計は、多くの独自の機能を含む場合がある。マルチプロセッサ・システムの間に共通するのは、共用アドレスの競合を解決するという要件である。共用アドレスの競合は、1つまたは複数のプロセッサが共用データの更新を試みるときに発生する。このタイプの競合を解決するには直列化されたアクセスを必要とするので、システム設計者は、このタイプのアクティビティが発生するシナリオを回避する。たとえば、処理ユニットは、オペレーティング・システムによって専用アドレス空間を割り当てることができ、その結果、プロセッサは競合による制約を受けずに機能することができる。この環境にあってさえ、アイドル状態のプロセッサは、一般に、共用アドレス空間に記憶されている待ち行列から新しい作業を獲得する。プロセッサが高速化され、その数が増えるにつれ、このような作業負荷の調整は、より重要性が増してくる。しかし、作業負荷によっては、多くのプロセッサ間における対話を必要とし、比較的低速のプロセッサであっても競合の効率的な解決が必要となる。たとえば、大規模データベースは多くのビジネスのために維持されており、それらのデータベースは、同時に実行されている複数のアプリケーションによって更新することができる。競合を解決することは、しばしばシステムの制約になる。それらの共用の競合を最低限に抑えるだけでなく、その競合が発生したときのパフォーマンスの影響を最低限に抑えるマルチプロセッサ・システムを有することが望まれる。
【0003】
技術的進歩は、より高速なプロセッサを作成したが、また、高密度だが比較的低速のメモリも提供した。いくつかのこの影響を相殺し、アクセス遅延を低減するために、キャッシュ階層、すなわちより高速だが容量のより小さいメモリの層が追加された。キャッシュは、プロセッサがアクセスできる全メモリのサブセットなので、ディレクトリは、メインメモリのどのブロックが、キャッシュに保持されるどのブロックに対応するかを追跡することが必要となる。共用メモリ・マルチプロセッサ・システムでは、メモリへのすべての更新は、すべてのプロセッサに可視的である必要があるので、キャッシュのデータへの変更は、このシステムのすべてのプロセッサおよびデバイスに対して使用可能にされなければならない。
【0004】
当技術分野における一般的な方法は、キャッシュの各ブロックの所有状態を示すタグをキャッシュのディレクトリに付けることである(ディレクトリ・ベースのキャッシュ・コヒーレンス)。この所有状態は、ブロックのプロセッサ書込み権限を示すものである。プロセッサが、キャッシュのデータ・ブロックの更新を希望する場合、プロセッサは、まずプロセッサ間連絡によって占有権を獲得しなければならない。プロセッサは、ひとたび、占有権を獲得すると、争奪されているブロックのディレクトリ所有状態を変更し、その更新を開始することができる。重要なことは、プロセッサ間連絡に、プロセッサ間の共用ブロックの所有権を渡すことが必要とされることである。このプロセッサ間連絡は、データへのアクセスに関連する全般的な遅延に著しい遅延を付加する危険性がある。争奪されるブロックを1つのプロセッサが確実に更新できるようにするために、プロセッサ間連絡へのアクセスは、通常、直列化される。これは、プロセッサは、必要な資源を使用するためにある種の方法で優先順位を要求しなければならないことを、通常、意味する。
【0005】
優れた優先順位設計、すなわち公平なアクセスを確実にする設計は、適切な作業分配を確実にし、リクエスタの飢餓状態を回避するために不可欠である。メモリ・リクエスタの数が増えるにつれて、メモリ資源への同等のアクセスを維持することがますます困難になり、マルチプロセッサ・システムのスケーラビリティが損なわれる危険性が生じる。プロセッサ相互接続および関連するトラフィックの悪影響を低減させることができる優先順位システムが望まれる。
【0006】
受信された順序と同じ順序で確実に要求が提示されるように、集中型待ち行列、または類似の順序付け機構に要求を入力する優先順位設計が使用されてきた。メモリ・システムがこの待ち行列システムによって提示された各要求を完了する間、待ち行列は、この順序を維持する。この解決法はこの順序を保証するが、資源が使用可能度や競合に関して評価される前にこの順序がセットされることを必要とする。一例として、キャッシュのインターリーブを使用することができる。この解決法では、ターゲット・キャッシュのインターリーブが使用不可能なために停止されていた要求をバイパスできる要求はない。すなわち、その1つの要求に対する追加の待ち時間は、次に、待ち行列で、その要求の後に入れられているすべての要求に追加されるということである。同様に、待ち行列の要求は、停止されている要求とアドレス競合を有する危険性はなく、したがって、強制的な直列化から利益を得ることはない。この待ち行列の影響を回避するための追加のパッチを、スタックの入力で使用することができる。たとえば、アドレス範囲に基づいて複数のスタックを作成するには、スタックへの入力の前にアドレスをチェックすることが必要になる。
【0007】
この解決法の有効性は、物理的配列または他のメモリ・デバイスの形式で、どれだけのハードウェアがこの目的のために使用可能であるかによって限定される。同様に、この種のすべての改善点は、優先順位の前に要求の追加的なチェックとカテゴリー化を追加することによって、名目上の待ち時間に悪影響を及ぼす。他の優先順位方式によっては、要求の飢餓状態を生じる危険性のあるいくつかの複雑な対話の低減を試みて、サンプリングを使用する。サンプルまたはスナップショットは、所与の時間に未解決の要求にタグを付け、新しいサンプルがとられる前にそれらすべての要求が確実に満たされるようにする。現行のスナップショットで満たされた要求は、そのスナップショットが空になって初めて可視的要求を作成することができるので、いくつかの飢餓状態のシナリオを回避することができる。しかし、スナップショットの設計は、それぞれの間に依存関係のない要求に基づいており、実施態様によっては、その要求は正しくない場合があり、デッドロック状態を生じる危険性がある。デッドロック状態とは、スナップショットの要求がスナップショットにない要求を待つということである。このクラスの解決法は、競合する要求の間でのアクセスの改良を試みず、問題の範囲を、管理可能と推定される度合いにまで限定するだけであり、したがって、成功を保証せずに名目上の待ち時間を増加させる危険性が高い。
【0008】
最低使用頻度(LRU)優先順位アルゴリズムは、すべてのプロセッサに公平なアクセスを保証するために使用することができる。優先順位要求の待ち時間を制限するために、部分的LRUが使用される。この部分的LRUは、使用するビットが少なく、優先順位のより高速な計算を可能にする。このシステムでは、要求は調停され、パイプライン構造に提示される。要求は、このパイプラインを通過し、キャッシュ・アクセスおよび関連するディレクトリ検索を開始し、資源が使用可能かどうかをチェックし、他の要求が同じアドレスをロックしていないかどうかをチェックする。所有者がない場合、現行のリクエスタが、ロックをセットすることによって所有権を得る。このロックは、要求が満たされるまでアクティブのままである。ひとたび、ロックがセットされると、同じアドレスへのすべての後続要求は、そのメモリ・アクセスをブロックし、所有するリクエスタが完了するための資源ニーズ(resource−need)をセットする。この資源ニーズは、所有する要求が完了するまでさらなるパイプライン・アクセスを防止する。次いで、所有する要求は、必要に応じて、自由にラインの所有状態を変更し、要求されたデータをプロセッサに戻す。このようなシステムは、前述の種類のプロセッサ間同期におけるのと同様に、アドレス・アクティビティが発生するまで正常に機能する。その場合、多くの要求が、同じアドレスへのアクセスを試みている。それらはすべてパイプラインに入り、所有するプロセッサに対してその資源ニーズをセットし、所有するプロセッサは終了し、残りの要求はすべて、再度、優先順位を争奪し、新しい所有者がそのロックをセットし、すべての後続の要求は、次いで、新しい所有者に対して資源ニーズをセットする。各要求はパイプおよび他の資源をビジー状態にしても、新たに指定された所有者に対して資源ニーズをセットするだけである。ひとたび、新しい所有者が終了すると、このプロセスは再度開始される。終了するたびに、優先順位付け機構は再度テストされ、ビジー状態の資源はトラフィックと待ち時間の増加をもたらす。さらに、完了したプロセッサは、すべてのプロセッサがデータにアクセスする前に、別の要求を同じアドレスに発行することができる。
【0009】
優先順位論理が最高の状態に最適化されているため、また、ロックがクリアされた後の要求の生成に伴う固有の待ち時間のために、新しい要求は待機中の要求に先んじることができる。完全なLRUではなく部分的LRUの組合せ、送信所有権の待ち時間、追加のトラフィック、および新しい要求の最適化は、ロックアウトのシナリオを生じる危険性がある。従来のシステムは、このタイプのプロセッサの飢餓状態を呈し、特別の場合のシナリオを訂正する試みがなされた。プロセッサで開始される回復を回避するために、デッドロック状態を回避するように追加されたハング回避ハードウェアも使用されてきた。
【0010】
【発明が解決しようとする課題】
より多くのプロセッサ・リクエスタが追加されるにつれ、トラフィックと待ち時間も追加され、改良されたアービトレーション装置が必須となる。
【0011】
【課題を解決するための手段】
マルチプロセッサ・システムにおいて、共用メモリの同じアドレス空間に対してプロセッサによって行われる要求は、その要求が受信された順序で満たされる。共通のメモリ・サブシステムに接続された複数のプロセッサを備えるコンピュータ・システムにおいて、複数のリクエスタが、しばしば同じアドレス空間に対して同時に競合する。メモリ・コントローラ資源が使用可能であること、およびそこへのアクセスは、要求間に所望でない順序付けを強いることがある。しかし、同様の複雑な資源の対話は、要求すべての直列化はしない解決法、すなわち、リクエスタAとBの間に競合がない限りリクエスタBはリクエスタAを待つべきではないという解決法が必然的に生じる。本発明は、要求が同時にメモリの同じ記憶位置へのアクセスを試みない限り、すべての要求がメモリ資源に対して同等のアクセスを有することができるようにする。ひとたび、この競合が識別されると、この記憶位置へのアクセスは順序付けられる。
【0012】
共用メモリ・コントローラが各要求を処理するとき、アドレス競合がチェックされる。指定されたアドレス範囲にアクセスするよう指定された現行の所有者がない場合、その要求は、その要求が満たされるまで、そのアドレス空間の所有権を与えられる。同じメモリの記憶位置に対する後続要求は、第1の競合ではなく同じ競合を参照するために、最後のリクエスタに対してそのニーズをセットする。各マスターが完了するとき、1つのリクエスタだけがそのニーズをリセットし、処理される。順序付けられたリストはいくつあってもよく、各リストにはリクエスタがいくつあってもよい。これまでに、その同じアドレス空間へのすべての後続要求がこの所有者を参照し、それが完了するために資源ニーズ・ラッチをセットしている。ひとたび、このアドレス所有者が完了すると、すべての残りの要求が再度処理される。
【0013】
異なるアドレス空間へのメモリ・アクセスへの悪影響なしにアドレス空間へのアクセスを直列化する方法は、各競合するアドレスに対する要求の順序付けられたリストを動的に作成することによって達成される。競合が認識された後でだけ、リストに新しい要求が追加される。アドレスの競合は常に存在するわけではないので、競合していないアドレスに対する要求への影響はない。所有するリクエスタに対して資源ニーズをセットするのとは対照的に、同じアドレス競合に遭遇した最後のリクエスタに対応する資源ニーズを生成するハードウェアが追加される。それらの順序付けられたリストはいくつでも存在することができる。たとえば、20のリクエスタを有するシステムでは、1つのリクエスタが順序付けた20の「リスト」であっても、20のリクエスタが順序付けられた1つのリストであっても、それらのいかなる組合せであってもよい。順序付けるデバイスによって物理的な制限は追加されない。リストの作成は、特定のロック・ビットに依存する。前述のように、アドレス競合が認識されない場合は標準的なロックがセットされ、そのリクエスタは所有権を与えられる。このロックは移動し、常に、各アドレスによって区別される順序付けられたリストの最後のリクエスタによって保持される。新しいリクエスタは、第1のリクエスタではなく、最後のリクエスタに対する競合を認識し、それに従ってその資源ニーズをセットする。この方法で、第1のリクエスタは、他のすべての競合相手によって妨げられないキャッシュ・ブロックの状態を自由に更新し、リストは、メモリヘの公平で順序付けられたアクセスを確保する。いつでも、順序付けられたリストのプロセッサは、強制的に回復させられ、一時的にシステムから取り出すことができる。このことがデッドロック状態の原因にならないように注意が必要である。特に、多くのサイクルの各サイクルごとに競合が発生する可能性のあるパイプライン処理環境では、移動するロックのセッティングとリセッティングによって他のケースが発生する。
【0014】
争奪される他の資源を含むこともできる。たとえば、複数のキャッシュ・ブロック・スピル/フィル資源が使用可能な場合、それらの限定された資源が争奪される場合がある。ここでも、同じ解決法を実行することができる。いくつかのプロセッサ要求は、キャッシュをミスし、キャッシュ・スピル/フィル資源をロードしても、使用可能なものがないことが判明するだけの場合がある。このリクエスタは、その資源ニーズを次のものが使用可能になるようにセットする。ひとたび、これが実行されると、別のパイプライン・パスに資源をロードさせても、そのパイプラインの1サイクル前のリクエスタが最後の1つをとることが判明するだけである。この場合、スピル/フィル資源に対して、アドレス競合と同様の方法で、順序付けられたリストを作成することができる。同様の利益が、また、認識される。たとえば、実際にスピル/フィル資源を必要とする要求だけが、資源が使用不可能なときにだけ、強制的にリストに入れられる。
【0015】
【発明の実施の形態】
この環境では、一般にこの発明が動作する分野では、複数の中央処理システム(CP)は、たとえばCPA、CPB、CPCおよびCPDなどのようなリクエスタとして働き、それぞれが共用メモリの同じアドレスに対するストーレッジ・コントローラ(SC)へのフェッチ要求を生成する。各要求に対するコマンドおよびアドレスがSCに送信される。これら4つの要求が処理されている間、新しい要求は送信されない。SCは、これらの要求を受け取り、それぞれを固有のフェッチ・コントローラにインゲートする。1つの要求が、パイプラインに入るための優先順位によって選ばれ、第1のサイクル(C1)に入る。第2のサイクル(C2)中に、CPAに関連付けられたアドレスが、すべての「保留」リクエスタに対して比較される。C2パイプライン・アドレスは、すべてのリクエスタに分配される。各リクエスタは、それらのアドレスに対して比較を実行する。アドレスが一致し、そのリクエスタの保留ラッチがアクティブである場合、比較出力として一致信号が送られる。C2の要求は、他のいずれかのリクエスタにおける比較一致を検知する。1つの要求しか、所与のアドレスに対して保留ラッチをセットすることはできない。すべての比較ラインがまとめられ、比較識別子が生成される。これは、パイプラインのC2にあるのと同じアドレスを有する保留リクエスタを識別する。CPAがパイプラインを通過するとき、SCでは他に保留になっている要求はない(他に3つの有効な要求がある)。CPAは、そのC2パイプライン・サイクルで比較一致を見ることはなく、アドレス比較のためにそのニーズ・レジスタをセットすることもない。C2において同じように使用可能なのが、ディレクトリ結果である。これは、求められているデータがキャッシュにおいて使用可能かどうか、また、フェッチ要求タイプに対して所有状態がOKであるかどうかを示す。データがキャッシュにない場合、スピル/フィル・コントロールがロードされ、CPAはメインメモリからのデータに対してそのニーズ・レジスタをセットする。所有状態が、排他的無効化を他のプロセッサに送らなければならないことを示す場合、無効化信号が送られ(排他的介入)、CPAは、ターゲット・プロセッサからの応答に対してそのニーズ・レジスタをセットする。そのデータが使用可能であり、すでに適切な所有状態にある場合、そのデータは戻される。C2サイクルにおいて、CPAは、その保留ラッチをセットし、その結果、SCにおいて有効な他の要求は、CPAがそのデータを獲得している間に、CPAに対する比較を見る。
【0016】
CPAの次に、CPB、CPCおよびCPDが続く。CPAがC2にあるとき、CPBはC1にある。CPAがC3にあるとき、CPBはC2にあり、CPCはC1にある。CPAがC4にあるとき、CPBはC3にあり、CPCはC2にあり、CPDはC1にある。これがパイプライン処理の概念である。CPBがC2サイクルにあるとき、CPBはCPAに対する比較を見る。それは次にその保留ラッチをONにし、その結果、CPBが、そのニーズ・レジスタをCPAに対してセットする。CPCがC2にあるとき、CPCはそのニーズ・レジスタをCPAに対してセットする。CPDがC2にあるとき、CPDはそのニーズ・レジスタをCPAに対してセットする。
【0017】
CPAは、最終的に、そのデータを獲得し、そのリクエスタは、その有効なラッチと保留のラッチのリセットを完了する。CPAに対してニーズ・レジスタがセットされているすべてのリクエスタは、CPAの有効なラッチのドロップを参照し、優先順位を再度争奪する。この例では、CPB、CPCおよびCPCは、優先順位付け機構に要求(すなわち、CPB、CPCおよびCPDにとって2回目の要求)を提示する。
【0018】
その優先順位の順序が同じ場合、CPBは、許可を獲得し、パイプラインを通過し、C2ではアドレス比較を見ない。C2は、その保留ラッチをセットし、フェッチ動作を完了する。
【0019】
CPCはCPBに続き、CPCがC2にあるとき、CPBに対する比較を見て、そのニーズ・レジスタをCPBに対してセットする。CPDはCPCに続き、CPDがC2にあるとき、CPBに対する比較を見て、そのニーズ・レジスタをCPBに対してセットする。CPBが完了すると、CPCおよびCPDは、CPBに対するそれらのニーズ・レジスタをリセットし、優先順位を再度争奪する(すなわち、CPCとCPDにとっては3回目)。優先順位の順序が同じ場合、CPCはパイプラインに入り、CPCがC2にあるとき、CPCはいかなる比較をも見ることはなく、その保留レジスタをセットする。CPDがCPCに続き、CPCに対する比較を見て、そのニーズ・レジスタをCPCに対してセットする。CPCが完了すると、CPDは、そのニーズ・レジスタをリセットし、優先順位を要求する(すなわち、4回目)。CPDは、C2に到着したとき、いかなる比較も見ずに、そのオペレーションを完了する。
【0020】
本発明の環境に戻ると、一般的に、共用メモリのマルチプロセッサ・システムでは、複数のプロセッサ、I/Oモジュール、および他のシステム・クラスタが共用メモリ・コントローラに接続されている。このコントローラは、共用のインターリーブされたキャッシュにアクセスすることができる。これは、キャッシュに関連するコヒーレンシー管理を処理し、インターリーブされたメインメモリにアクセスすることができる。資源管理を容易にし、メモリのインターリーブされる性質を利用するために、各クロック・サイクル中に新たにメモリ・アクセスを開始することができる場合には、パイプライン構造が使用される。説明している本発明では、ストーレッジ・コントローラは、様々なリクエスタに対する公平で同等のアクセスを確保し、いかなる要求の飢餓状態をも防止するために含まれる、パイプラインに入るための優先順位付け機構を提供する。本発明は、また、複数のリクエスタが同時に同じアドレスの記憶位置を更新しようと試みることによって生じるアドレス競合を解決することができるプロセスも含む。
【0021】
一般的な例では、共通のアドレスにアクセスを試みる4つのプロセッサ(P0、P1、P2およびP3)が、それらの要求を共用メモリ・コントローラに対して同時に提示する。4つのプロセッサは、それらの指定された順序、すなわちP0、P1、P2次いでP3でパイプラインに入る。P0がパイプに入ると、P0は、アドレス競合に遭遇しないので、ロックをセットする。P1は、従来技術の場合と同様にP0を参照し、P0に対して資源ニーズをセットする。P2は、パイプラインに入り、P0に対してではなくP1に対して資源ニーズをセットする。同様の方法で、P3は、そのニーズをP2に対してセットする。プロセッサP0が完了すると、P1だけが優先順位に対して要求を行う。すなわち、P2およびP3は、それぞれP1およびP2に対して資源ニーズを有する。同じように、P1が完了すると、P2は優先順位要求を実行し、P3は待機する。P0が同じアドレスへの第2の要求を伴って戻ってくる場合、P3が完了する前にP0はその資源ニーズをP3に対してセットする。しかし、P0が異なるアドレスを要求している場合、それは、既存の順序付けられたリストに妨げられることなく完了することができる。
【0022】
次に、好ましい実施形態のシステム全体の構造を、図面の具体的な細部を参照しながら論じる。
【0023】
図1に、本発明の好ましい実施形態のマルチプロセッサ・システムの概略図を示す。完全に構成されたシステムでは、最高12のCP(12、13、14、15、16、17、18、19、20、21、22、23)、4つのI/Oアダプタ(24、25、26、27)、および4つのメモリカード(44、45、46、47)を、2つのストーレッジ・コントローラ(SC10およびSC11)に接続することができる。SCを1つだけ含む1ノード・システムを有することが可能である。このようなシステムは、最高6つのCP、2つのI/Oアダプタ、および2つのメモリカードをサポートする。各CPは、ストアスルー・レベル1(L1)キャッシュを含み、各SCは、レベル2(L2)キャッシュの記憶を含む。
【0024】
CPまたはI/Oアダプタは、1つのSCにだけ直接的に接続する。所与のSCはメモリカードの2つに直接的にアクセスでき、SCO(10)は、1つのバス(48)を介してメモリカード0(44)に直接的にアクセスでき、別個のバス(49)を介してメモリカード2(45)に直接的にアクセスできる。同様に、SC1(11)は、1つのバス(50)によってメモリカード1(46)にアクセスでき、別個のバス(51)を使用してメモリカード3(47)にアクセスできる。
【0025】
しかし、すべてのCPとI/Oアダプタは、メインメモリのどの部分にもアクセスできる。他の2つのメモリカードへのストーレッジ・アクセスは、CPまたはI/Oアダプタに対して透過的な、SCオペレーション(52)のためのSCによって処理される。各CPまたはI/Oアダプタは、接続されているSCに対して、データ・バスAおよびデータ・バスBと呼ばれる2つのデータ・バスを有する。メモリカード0および1(44、46)からのストーレッジ・データはバスAに戻され、メモリカード2および3(45、47)からのデータはバスBに戻される。
【0026】
ストーレッジ・コントローラSCへのすべての要求は、CP、I/Oアダプタ、または他の(リモート)SCからSCへの、アドレスおよびコマンドの送信によって開始される。SCが要求を完了すると、応答と可能ならばデータがその要求の発信者に返送される。
【0027】
CPからその接続されているSCへのフェッチ要求および記憶要求は、送信コマンド、アドレス、データ、および応答に、一群の単方向バスおよび双方向バス(28、29、30、31、32、33、34、35、36、37、38、39)を使用する。CPのフェッチ要求および記憶要求は、要求のアドレス部分およびコマンド部分については単方向バスを介して送信され、データ部分については2つの双方向バスを介して送信される。要求のデータ部分は、CPからSCに送信される記憶データであっても、SCからCPに送信されるフェッチ・データであってもよい。これらの双方向バスは、前述のデータ・バスAとデータ・バスBである。これらは、それぞれ4倍長ワード幅である。フェッチ要求または記憶要求がいつ完了したか、その要求のすべての状況が、たとえば、標準的な完了であるか無効アドレスであるかを示す、応答を送信するために使用されるSCから各CPへの単方向バスもある。
【0028】
I/Oアダプタ・インターフェースも双方向バスと単方向バス(40、41、42、43)から構成される。この場合、コマンド、アドレスおよび応答は、双方向バスを介してSCとI/Oアダプタとの間で送信される。フェッチ・データおよび記憶データは、どちらもダブルワード幅のデータ・バスAとデータ・バスBの2つの双方向バスで送信される。他の制御信号には、単方向バスが使用される。
【0029】
リモートSC(REM SC)インターフェースは、コマンド、アドレス、応答およびデータのために単方向バス(52)を使用する。したがって、完全に構成されたシステムでは、1つはSC0からSC1への、もう1つはSC1からSC0への、バスの2つのセットがある。データは、SC0からSC1へのバスAおよびバスBと、SC1からSC0へのバスAおよびバスBの、4つの4倍長ワード幅の単方向バスで送信される。前述の1ノード・システムの場合、リモートSCはなく、したがって、リモートSCから発信される要求はない。
【0030】
ハイレベル・アドレス・フローをより詳細に理解するためには、図1に示すストーレッジ・コントローラ(SC0)の1つに対するハイレベル・アドレス・フローを示す図2を参照されたい。パイプラインA(119)およびパイプラインB(120)と呼ばれ、それぞれに固有のディレクトリ(121、122)を有し、それぞれにメモリ・コントローラ論理(131、132)を介する1つのメモリカード(133、134)へのインターフェースを有する、2つの別個のパイプラインがある。SCの2つの処理パイプラインは、前述の2つのデータ・バスに対応する。パイプラインAは、バスAの記憶(メモリカード0)に対する要求を処理し、パイプラインBは、バスBの記憶(メモリカード2)に対する要求を処理する。パイプライン情報は、データフロー論理(136、137)に転送され、そこで、L2キャッシュにアクセスするために使用される。SC1つあたりパイプラインを1つしか持たないシステムを有することが可能である。この場合、SCは、1つのメモリカードにだけアクセスする。
【0031】
所与のパイプラインに関連付けられたディレクトリは、オペレーションのパイプライン・パスの第1のサイクルでアクセスされる。ディレクトリ・ヒットがある場合、データはL2キャッシュから戻される。ディレクトリ・ミスがある場合、要求のさらなる処理が、ライン・フェッチ・アドレス・レジスタ(LFAR)LOGIC(123、124)によって処理される。要求に関するアドレスおよび制御情報は、各パイプラインに対して使用可能な4つのLFARレジスタの1つにゲートされる。要求は、リモートSCインターフェース・レジスタ(135)を介してリモートSCに送られる。リモートSCのキャッシュは問い合わされ、データが、リモートSCから、接続されている(ローカル)SCに送られ、そこから、要求しているCPまたはI/Oアダプタに送られる。リモートSCキャッシュにミスがある場合、要求は、ターゲット・アドレスに応じて、ローカルSCに接続されているメモリカードの1つに送られるか、それとも、リモートSCに接続されているメモリカードの1つに送られる。
【0032】
キャッシュ・エントリが、新しいエントリL2に対してメモリ空間を作るためにキャストアウトされなければならない場合、それは、ライン記憶アドレス・レジスタ(LSAR)論理(125、126)によって処理される。LRUアルゴリズムを使用する置換のためにターゲットとされるアドレスは、各パイプラインに対して使用可能な4つのLSARレジスタの1つにゲートされる。LSAR論理は、メインメモリにデータを記憶すること、およびキャッシュのエントリを無効にすることを制御する。
【0033】
フェッチ要求と記憶要求のどちらであってもよい、SCの外部から発信される要求は、リモートSCインターフェース(52)、6つのインターフェース(28、29、30、31、32、33)および2つのI/Oアダプタ・インターフェース(40、41)を介して受信される。どの場合でも、インターフェース・レジスタ(103、104、105)が、要求に関する情報を1サイクルの間ラッチするために使用される。その後、それは、関連付けられたコントローラに送られる。
【0034】
SC内の各機能エリアは、インターフェースからの入力、優先順位要求、およびパイプラインを通過する際の要求の制御を処理する別個のコントローラを有する。2つのI/Oアダプタ・コントローラ(109)、6つのCPフェッチ・コントローラ(107)、6つのCP記憶コントローラ(108)および1つのリモートSCコントローラ(106)がある。各コントローラ内には、所与の要求に関連する情報を追跡するための保持レジスタがある。これらのレジスタは、要求がSCによって完了するまでは有効である。多くの場合、要求を正しい保持レジスタに向けて送るためには、何らかの要求の復号化を実行しなければならない。
【0035】
リモートSCコントローラ(106)内では、リモートSCからのフェッチ要求および記憶要求のために別個のレジスタが使用される。この際、パイプライン1つあたり2つのレジスタが保持フェッチに専用化され、2つが保持記憶に専用化される。インターフェース情報は、一群の4つのレジスタを選ぶパイプライン選択を含み、コマンドは、それがフェッチか記憶かを判定するために復号化され、その結果、1対のフェッチ・レジスタと記憶レジスタが選ばれる。
【0036】
各CP(104)に対するCPフェッチ要求およびCP記憶要求のために、単一のインターフェース・レジスタが使用される。入ってくるコマンドは、それがフェッチか記憶かを判定するために復号化されなければならない。要求は、このインターフェース・レジスタから、関連付けられた1つのフェッチ要求レジスタを含むCPフェッチ・コントローラ(107)にステージされるか、または記憶要求へのアドレスと制御ビットを含む、各パイプラインに1つずつの、2つの8エントリ・スタックを含むCP記憶コントローラ(108)にステージされる。
【0037】
I/Oアダプタから送信されたコマンドは、また、フェッチであっても記憶であってもよい。I/Oコントローラ(109)は、パイプライン1つあたり1つのI/Oプロセッサあたり2つの要求レジスタを有し、パイプライン1つあたり全体で4つのレジスタを有し、それぞれはフェッチまたは記憶を保持することができる。I/Oアダプタは、I/Oコントローラ内でどのレジスタが使用可能かを追跡し、コマンドが送信されるときにその宛先レジスタを示す。
【0038】
各コントローラ内で、他の制御情報に加え、有効な要求を示す信号が、要求が所与のサイクルの優先順位に対して資格があるかどうかを判定するために使用される。所与のカテゴリーで資格のあるすべての要求は、関連付けられた事前優先順位論理ステーションに送信される。
【0039】
リモートSC要求については、両方のパイプラインに対して単一の事前優先順位付けステーション(110)がある。パイプラインAとパイプラインBのどちらかに対する事前優先順位に対して単一の要求が選ばれる。インターフェース・レジスタの要求は、即時優先順位を得ることができ、最高の優先順位を有する。インターフェース・レジスタに要求がない場合、事前優先順位論理は、疑似LRUアルゴリズムを使用して各パイプラインに対して4つのレジスタ間で調停する(最後に完了した要求は最下位の優先順位を有する)。優先順位は、2つのパイプラインの間で交替になる。
【0040】
両方のパイプラインに対するCPフェッチ(112)に対しても、単一の事前優先順位付けステーションがある。6つの資格のある要求から1つの要求を選ぶために疑似LRUアルゴリズムが使用される。この調停は、CPフェッチ要求の宛先パイプラインとは関係なく実行される。
【0041】
CP記憶は、受信された順序で処理されなければならない。記憶要求をバッファするために使用されるスタックは、FIFOの順序で管理される。所与のCPから各パイプラインへの最も古い記憶だけが優先順位付けする資格がある。CP記憶には、パイプライン(113、114)1つあたり1つ、2つの別個の事前優先順位付けステーションがある。したがって、1つのサイクルにおいて2つの異なる記憶に事前優先順位が与えられる可能性がある。CP記憶に対する事前優先順位付けステーションは、各パイプラインが6つの資格のある要求から1つの記憶を選ぶために、変更されたラウンドロビン・アルゴリズムを使用する。
【0042】
I/Oコントローラは、また、パイプラインAおよびB(115、116)に対する別個の事前優先順位付けステーションを有する。各パイプラインに対する4つの可能性のある要求の間で、それらがフェッチ・オペレーションか記憶オペレーションかに関係なく、事前優先順位を判定するために疑似LRUアルゴリズムが使用される。
【0043】
LFARおよびLSAR(127、130)に対して、共用の事前優先順位付け機構がある。複数のLFAR要求がある場合、それらは、まずLFAR0、次いでLFAR1、2、および3というように順番に選ばれる。同様に、複数のLSAR要求がある場合、LSAR0から始まり、次いでLSAR1、2、および3というように順番に選ばれる。トグルラッチが、LFARとLSARの間の優先順位を交替させる。
【0044】
パイプライン(117、118)に対する全般的な優先順位調停論理は、ランク付けされた優先順位の順序を使用して、1つの要求を選択する。この順序は、最も頻度の低い要求が最上位の優先順位を有し、最も頻度の高い要求が最下位の優先順位を有するように、要求の頻度に基づいて判定されている。最上位から最下位までのこの要求の順序は、リモートSC要求、LFAR/LSAR要求、I/Oアダプタ要求、CPフェッチ要求、およびCP記憶要求である。選択された要求に対するアドレスおよび制御情報は、パイプラインの第1のステージに送信される。
【0045】
各コントローラは、両方のパイプライン(128、129)から入力を受信し、特定パイプラインのサイクルにおいて有効な入力信号を監視しながら、パイプラインを通過するその要求の進行を追跡する。それらの信号のいくつかは、要求がパイプラインのあるステージにあるかどうかを判定するために使用される。他のパイプライン入力の例は、ディレクトリ・ヒットの結果であり、他のアドレス・レジスタに対して比較する。これらの入力は、要求に対して必要とされるすべての資源が使用可能であるかどうか、または、ある条件が満たされるのを待つためにその処理が中断されなければならないかどうかを決定するために使用される。要求の処理が中断されるとき、信号はパイプライン論理に送信される。この要求がパイプライン処理の後半のステージにおいて、もはや有効なエントリとは見なされないように、制御がリセットされる。信号は、また、コントローラ内の様々な論理ステーションにも送信される。コントローラ内でとられるアクションには、その要求が現在実行中であることを示す、コントロール・ビットをリセットすることが含まれる。
【0046】
図4を参照すると、複数の中央処理装置(図示せず)が、同じアドレスについて、ストーレッジ・コントローラ(10)に対するフェッチ要求を生成している。ストーレッジ・コントローラ(10)は、それらの要求を受信し、各要求を、特定のプロセッサ用に専用化されたフェッチ・コントローラ(107a、107b、107c)にインゲートする。すなわち中央処理装置1つあたりフェッチ・コントローラは1つである。図4には、フェッチ要求(28、29、33)をそれぞれの中央処理装置から受信する3つのフェッチ・コントローラ(107a、107b、107c)しか示さないが、これらは、中央処理装置との通信における複数のフェッチ・コントローラを代表するものと見なされたい。たとえば、4つの中央処理装置CP1、CP2、CP3、およびCP4は、フェッチ要求を生成することができる。各要求に対するコマンドとアドレスは、ストーレッジ・コントローラ(10)に送信される。すべての要求が一度に受信され、それら4つの要求の処理中は新しい要求は送信されない。1つの要求(140)がコントローラ優先順位付けステーション(112)によって選ばれ、中央優先順位(117、118)はパイプラインA(119)とパイプラインB(120)のどちらかに入る。このようにして選ばれた要求は、第1のサイクル(C1)にある。
【0047】
図6に示すように、第2のパイプ・サイクル(C2)中は、CP1に関連付けられたアドレスは、すべての「保留」リクエスタに対して(424)で比較される。C2パイプライン・アドレス(425)入力は、すべてのリクエスタに分配され、その結果、各リクエスタは、図6の(424)でそれらのアドレスに対して比較を実行する。アドレスが一致し、そのリクエスタの保留のラッチ(426)がアクティブである場合、一致を示す比較信号(432)が出力される。C2にある要求は、他のいずれかのリクエスタにおける比較一致を検知する。1つの要求だけが、その保留ラッチ(426)を、所与のアドレスに対してセットすることができる。アドレス比較ライン(150、152、154)のすべては、図4の200でまとめられ、リクエスタに対するパイプラインの識別子に対応する比較識別子(202)が生成される。これは、パイプラインのC2のリクエスタと同じアドレスを有する、保留のリクエスタを識別する。CP1がパイプラインを通過するとき、ストーレッジ・コントローラでは他の要求は保留にならない(他に3つの有効な要求がある)。CP1は、そのC2パイプライン・サイクルでは比較一致を見ることはなく、アドレス比較のためにそのニーズ・レジスタ(204)(図8)をセットすることもない。要求のパイプライン通過のC2において、アドレス比較に遭遇しないとき、ニーズ・レジスタ(204)が、そのリクエスタに対する一意の識別子に等しい値と共にロードされる。
【0048】
C2において同様に使用可能なのが、ディレクトリ結果(170)(図4)である。これは、求められているデータがキャッシュ・ディレクトリ(121)で使用可能かどうか、フェッチ要求のタイプに対して所有状態がOKかどうかを示す。このデータがキャッシュ(121)にない場合、キャッシュ・スピル制御(182)とキャッシュ・フィル制御(180)(図3)がロードされ、CP1は、メインメモリからのデータに対してそのニーズ・レジスタ(204)をセットする。所有状態が、排他的無効化が別のプロセッサに送信されなければならないことを示す場合、無効化信号が送信され(排他的介入)、CP1は、ターゲット・プロセッサからの応答に対してそのニーズ・レジスタ(204)をセットする。データが使用可能であり、すでに適切な所有状態にある場合、そのデータは戻される。C2サイクルでは、CP1がデータを獲得している間、CP1は、その保留ラッチ(426)をセットし、その結果、ストーレッジ・コントローラで有効な他の要求がCP1に対する比較を見ることになる。
【0049】
CP1の後に、CP2、CP3、およびCP4が続く。CP1がサイクルC2にあるとき、CP2はサイクルC1にある。CP1がサイクルC3にあるとき、CP2はサイクルC2に、CP3はサイクルC1にある。CP1がサイクルC4にあるとき、CP2はサイクルC3に、CP3はサイクルC2に、また、CP4はサイクルC1にある。CP2は、C2サイクルにあるとき、保留ラッチをオンにしているCP1に対する比較を見る。C2は、CP1に対してそのニーズ・レジスタ(204)をセットする。CP2は、その保留ラッチ(426)をセットし、CP2がCP1との比較を行っていることを検知したCP1は、その保留ラッチ(426)をリセットする。C3サイクルにあるCP1は、ブロック保留ラッチ(422)をセットする。CP3がサイクルC2にあるとき、CP3はその保留ラッチ(426)をセットし、CP2はその保留ラッチ(426)をリセットする。CP3は、CP2に対してそのニーズ・レジスタ(204)をセットする。CP2は、そのブロック保留ラッチ(422)をセットする。
【0050】
CP4はサイクルC2にあるとき、CP4はその保留ラッチ(426)をセットし、CP3はその保留ラッチをリセットする。CP4は、CP3に対してそのニーズ・レジスタ(204)をセットする。CP3は、そのブロック保留ラッチ(422)をセットする。この時点で、アドレス・ベースの待ち行列は、CP1を先頭に、後にCP2(CP1にセットされたニーズ・レジスタ)、CP3(CP2にセットされたニーズ・レジスタ)およびCP4(CP3にセットされたニーズ・レジスタ)を続けて存在する。CP4は、サイクルC3にあるとき、そのブロック保留ラッチ(422)をセットする。
【0051】
CP1は、最終的に、そのデータを受信し、SCにあるそのリクエスタは、有効なラッチ(450)のリセットを完了する。CP2は、CP1に対するニーズ・レジスタ(204)をセットし、CP2がパイプライン(119、120)に新しい要求を行うことができるようにするために、そのニーズ・レジスタをリセットする。ひとたび、ニーズ・レジスタがリセットされると、リクエスタは、パイプラインの優先順位を自由に要求し、そのオペレーションを完了する。ニーズ・レジスタをセットした他の要求は、パイプライン要求を行わない。それらの要求は、ニーズ・レジスタがセットされているので、阻止される。
【0052】
CP2は、C2にあるとき、CP4に対して比較を見るが、CP4に対してそのニーズ・レジスタ(204)をセットせず、また、CP2は、パイプラインの第1のパスでブロック保留ラッチ(422)をセットしており、そのラッチは依然としてセットされたままなので、その保留ラッチ(426)もセットしない。CP2は、CP1との所有権競合が解決された後で最終的に完了し、CP2は、データにアクセスし、ディレクトリを更新し、その有効ラッチ(450)とそのブロック保留ラッチ(422)とをリセットするために後続のパイプライン・パスを実行する。
【0053】
CP3は、CP2の有効ラッチがリセットされたことを見て、CP2に対するそのニーズ・レジスタ(204)をリセットする。CP3は、優先順位112に要求を行い、C2にあるときは、CP4に対する比較を見る。CP3は、CP4のブロック保留ラッチ(426)がセットされているので、この比較を無視する。CP3は、その有効ラッチ(450)とブロック保留ラッチ(422)とをリセットして、CP2との所有権競合を解決し、完了する。
【0054】
CP4は、CP3の有効ラッチ(450)がリセットされたことを見て、CP3に対するそのニーズ・レジスタ(204)をリセットする。CP4は、優先順位に要求を行い、CP3がサイクルC2にあるとき、CP4に対する比較を見る。CP4は、CP4のブロック保留ラッチ(426)がセットされているので、この比較を無視する。CP4は、その有効ラッチ(450)とブロック保留ラッチ(422)とをリセットして、CP3との所有権競合を解決し、完了する。従来技術では、CP4は4つのパスを作成したが、本発明では、CP4は2つのパスを作成する。
【図面の簡単な説明】
【図1】好ましい実施形態のマイクロプロセッサのシステム概要を示す図である。
【図2】図1のマルチプロセッサの単一ストーレッジ・コントローラに関するアドレスの流れを示す図である。
【図3】好ましい実施形態のマルチプロセッサ・システムのシステム概要を示す一般化された概略図である。
【図4】中央処理装置フェッチ事前優先順位付けステーションに要求を実行する複数の中央処理装置フェッチ・コントローラの図である。
【図5】リクエスタに対するパイプライン識別子に対応する比較識別子を作成するエンコーダの図である。
【図6】フェッチ・コントローラによって保持されるアドレスと、フェッチ・コントローラがアドレス比較を提供する方法とを示す図である。
【図7】パイプライン・モニタを示す図である。
【図8】リセット保留の生成を示す図である。
【図9】ニーズ・レジスタのセットを示す図である。
【図10】ニーズおよびリセットの条件の復号化を示す図である。
【符号の説明】
CP 中央処理システム
SC ストーレッジ・コントローラ
C1 第1のサイクル
C2 第2のサイクル
P0 プロセッサ
P1 プロセッサ
P2 プロセッサ
P3 プロセッサ
44 メモリカード
45 メモリカード
46 メモリカード
47 メモリカード
119 パイプラインA
120 パイプラインB
LFAR ライン・フェッチ・アドレス・レジスタ
LSAR ライン記憶アドレス・レジスタ

Claims (2)

  1. 共用のメモリ・サブシステムと、当該メモリ・サブシステムに接続される複数のプロセッサと、当該複数のプロセッサからのメモリ要求を処理し複数のプロセッサが当該メモリ・サブシステムのアドレス空間を争奪する複数のリクエスタとして働くことができるようにする共用メモリ・コントローラとを有する共用メモリ・システムに適用され、当該共用メモリ・システムのアドレスの競合および当該メモリ・サブシステムへのアクセスの優先順位付けを解決する方法であり、
    前記複数のリクエスタがメモリ・サブシステムの異なるアドレス空間へのアクセスを要する場合には、前記複数のリクエスタが、前記メモリ・サブシステムへの他のリクエスタを待たずに、前記メモリ・サブシステムへの公平なアクセスを実施できるようにするステップと、
    ロック・ビットを用い、競合するアドレスに対するリクエスタのメモリアクセス要求が順序付けられたリストを構成する前記複数のリクエスタが前記メモリ・サブシステムの同じアドレス空間の異なるアドレスへのアクセスを要求する場合には、当該リストの順序に関わらず、当該リクエスタがその要求するアドレスへのアクセスを実施できるようにするステップと
    前記共用メモリ・システムがハードウェアを有し、新たなリクエスタが前記リストを構成する順序付けられた複数のリクエスタと同じアドレス空間の同じアドレスへのアクセスを要求する場合に、当該新たなリクエスタを当該リストに追加し、
    追加された当該新たなリクエスタが、追加前の当該リストの最後のリクエスタに対してニーズ・レジスタをセットし、パイプラインに新たなアクセス要求を行うために、追加前の当該リストの最後のリクエスタの処理が終了したときに、追加前の当該リストの最後のリクエスタに対するそのニーズ・レジスタをリセットして、当該パイプラインに対するアクセスの優先順位を要求してニーズ・レジスタがセットされている他のリクエスタのパイプラインに対する要求を阻止する一方、当該パイプラインに対するアクセスの優先順位を要求してニーズ・レジスタがセットされていない他のリクエスタのパイプラインに対する要求を受け付ける当該ハードウェアによって処理されるステップと、
    を含む方法。
  2. 共用のメモリ・サブシステムと、当該メモリ・サブシステムに接続される複数のプロセッサと、当該複数のプロセッサからのメモリ要求を処理し複数のプロセッサが当該メモリ・サブシステムのアドレス空間を争奪する複数のリクエスタとして働くことができるようにする共用メモリ・コントローラとを有する共用メモリ・システムに適用され、当該共用メモリ・システムのアドレスの競合および当該メモリ・サブシステムへのアクセスの優先順位付けを解決する方法であり、
    前記複数のリクエスタがメモリ・サブシステムの異なるアドレス空間へのアクセスを要する場合には、前記複数のリクエスタが、前記メモリ・サブシステムへの他のリクエスタを待たずに、前記メモリ・サブシステムへの公平なアクセスを実施できるようにするステップと、
    ロック・ビットを用い、競合するアドレスに対するリクエスタのメモリアクセス要求が順序付けられたリストを構成する前記複数のリクエスタが前記メモリ・サブシステムの同じアドレス空間の異なるアドレスへのアクセスを要求する場合には、当該リストの順序に関わらず、当該リクエスタがその要求するアドレスへのアクセスを実施できるようにするステップと
    前記共用メモリ・システムがハードウェアを有し、新たなリクエスタが前記リストを構成する順序付けられた複数のリクエスタと同じアドレス空間の同じアドレスへのアクセスを要求する場合に、当該新たなリクエスタを当該リストに追加し、
    追加された当該新たなリクエスタが、追加前の当該リストの最後のリクエスタに対してニーズ・レジスタをセットし、パイプラインに新たなアクセス要求を行うために、追加前の 当該リストの最後のリクエスタの処理が終了したときに、追加前の当該リストの最後のリクエスタに対するそのニーズ・レジスタをリセットして、当該パイプラインに対するアクセスの優先順位を要求してニーズ・レジスタがセットされている他のリクエスタのパイプラインに対する要求を阻止する一方、当該パイプラインに対するアクセスの優先順位を要求してニーズ・レジスタがセットされていない他のリクエスタのパイプラインに対する要求を受け付ける当該ハードウェアによって処理されるステップと、
    後続のリクエスタが前記リストを構成する順序付けられた複数のリクエスタと同じアクセス空間へのアクセスを要求する場合に、同じアドレスへのアクセス競合の有無を確認するため、当該後続のリクエスタは、当該リスト中の最初のリクエスタではなく、最後のリクエスタに対してニーズ・レジスタをセットし、
    当該リストを構成する順序付けられた複数のリクエスタの一つのリクエスタのアクセス要求が完了すると、当該アクセス要求を完了したリクエスタはそのニーズ・レジスタをリセットし、当該リクエスタが処理されるステップを含む方法。
JP2001301135A 2000-09-29 2001-09-28 マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化 Expired - Fee Related JP3871305B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/676,185 US6516393B1 (en) 2000-09-29 2000-09-29 Dynamic serialization of memory access in a multi-processor system
US09/676185 2000-09-29

Publications (2)

Publication Number Publication Date
JP2002182976A JP2002182976A (ja) 2002-06-28
JP3871305B2 true JP3871305B2 (ja) 2007-01-24

Family

ID=24713555

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001301135A Expired - Fee Related JP3871305B2 (ja) 2000-09-29 2001-09-28 マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化

Country Status (3)

Country Link
US (1) US6516393B1 (ja)
JP (1) JP3871305B2 (ja)
CN (1) CN1222890C (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751711B1 (en) * 2000-10-27 2004-06-15 Nortel Networks Limited Methods and systems for process rollback in a shared memory parallel processor computing environment
US6785779B2 (en) * 2002-01-09 2004-08-31 International Business Machines Company Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US6832268B2 (en) * 2002-12-19 2004-12-14 Intel Corporation Mechanism to guarantee forward progress for incoming coherent input/output (I/O) transactions for caching I/O agent on address conflict with processor transactions
JP2005004350A (ja) * 2003-06-10 2005-01-06 Sony Ericsson Mobilecommunications Japan Inc リソース管理方法及び装置、リソース管理プログラム、記憶媒体
US7343432B1 (en) * 2003-09-19 2008-03-11 Emc Corporation Message based global distributed locks with automatic expiration for indicating that said locks is expired
TWI256555B (en) 2003-12-12 2006-06-11 Via Tech Inc An apparatus and a method of request priority queue arbitration
CN100392627C (zh) * 2003-12-22 2008-06-04 威盛电子股份有限公司 存储器存取要求优先序列仲裁装置及方法
US8533716B2 (en) 2004-03-31 2013-09-10 Synopsys, Inc. Resource management in a multicore architecture
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
KR20050120341A (ko) * 2004-06-18 2005-12-22 엘지전자 주식회사 다중 씨피유에서의 메모리 카드 공유 장치
US9727468B2 (en) 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
WO2008018969A1 (en) * 2006-08-04 2008-02-14 Parallel Computers Technology, Inc. Apparatus and method of optimizing database clustering with zero transaction loss
US9483405B2 (en) * 2007-09-20 2016-11-01 Sony Interactive Entertainment Inc. Simplified run-time program translation for emulating complex processor pipelines
US7779189B2 (en) * 2008-02-21 2010-08-17 International Business Machines Corporation Method, system, and computer program product for pipeline arbitration
CN101520749B (zh) * 2008-02-29 2012-08-29 瑞昱半导体股份有限公司 管理存储器的方法
US7886205B2 (en) * 2008-06-24 2011-02-08 Unisys Corporation Verification of a data processing system using overlapping address ranges
US9170844B2 (en) * 2009-01-02 2015-10-27 International Business Machines Corporation Prioritization for conflict arbitration in transactional memory management
US20110029985A1 (en) * 2009-07-31 2011-02-03 Nokia Corporation Method and apparatus for coordinating resource access
JP5482145B2 (ja) * 2009-11-25 2014-04-23 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8688880B2 (en) 2010-06-23 2014-04-01 International Business Machines Corporation Centralized serialization of requests in a multiprocessor system
US20120159084A1 (en) * 2010-12-21 2012-06-21 Pohlack Martin T Method and apparatus for reducing livelock in a shared memory system
WO2012119430A2 (zh) * 2011-08-31 2012-09-13 华为技术有限公司 地址访问方法、装置及系统
US9378023B2 (en) * 2012-06-13 2016-06-28 International Business Machines Corporation Cross-pipe serialization for multi-pipeline processor
US10031933B2 (en) * 2014-03-02 2018-07-24 Netapp, Inc. Peer to peer ownership negotiation
US20160139806A1 (en) * 2014-11-13 2016-05-19 Cavium, Inc. Independent Ordering Of Independent Transactions
US10013385B2 (en) 2014-11-13 2018-07-03 Cavium, Inc. Programmable validation of transaction requests
US9569362B2 (en) 2014-11-13 2017-02-14 Cavium, Inc. Programmable ordering and prefetch
US10146690B2 (en) 2016-06-13 2018-12-04 Intel Corporation Synchronization logic for memory requests
CN109087682B (zh) * 2017-06-14 2020-09-01 展讯通信(上海)有限公司 全局存储器顺序检测系统及方法
US10585800B2 (en) 2017-06-16 2020-03-10 International Business Machines Corporation Reducing cache transfer overhead in a system
US10769068B2 (en) * 2017-11-10 2020-09-08 International Business Machines Corporation Concurrent modification of shared cache line by multiple processors
US11169953B2 (en) * 2018-02-28 2021-11-09 SK Hynix Inc. Data processing system accessing shared memory by using mailbox
US11010210B2 (en) * 2019-07-31 2021-05-18 International Business Machines Corporation Controller address contention assumption
US12026540B2 (en) 2022-01-13 2024-07-02 Kyndryl, Inc. Working memory management

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4493036A (en) 1982-12-14 1985-01-08 Honeywell Information Systems Inc. Priority resolver having dynamically adjustable priority levels
US4627018A (en) 1983-09-08 1986-12-02 Sperry Corporation Priority requestor accelerator
US5339442A (en) 1992-09-30 1994-08-16 Intel Corporation Improved system of resolving conflicting data processing memory access requests
US5519837A (en) 1994-07-29 1996-05-21 International Business Machines Corporation Pseudo-round-robin arbitration for a shared resource system providing fairness and high throughput
US5832304A (en) * 1995-03-15 1998-11-03 Unisys Corporation Memory queue with adjustable priority and conflict detection
US5761445A (en) 1996-04-26 1998-06-02 Unisys Corporation Dual domain data processing network with cross-linking data queues and selective priority arbitration logic
DE69632634T2 (de) 1996-12-13 2005-06-09 Bull S.A. Arbitrierungseinheit zum Multiprozessorsystembuszugriff mit Wiederholungsfähigkeit
US5875472A (en) * 1997-01-29 1999-02-23 Unisys Corporation Address conflict detection system employing address indirection for use in a high-speed multi-processor system
US6073182A (en) 1998-04-30 2000-06-06 International Business Machines Corporation Method of resolving deadlocks between competing requests in a multiprocessor using global hang pulse logic

Also Published As

Publication number Publication date
US6516393B1 (en) 2003-02-04
JP2002182976A (ja) 2002-06-28
CN1222890C (zh) 2005-10-12
CN1347041A (zh) 2002-05-01

Similar Documents

Publication Publication Date Title
JP3871305B2 (ja) マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化
JP3624951B2 (ja) マルチプロセッサ・システム
US6279084B1 (en) Shadow commands to optimize sequencing of requests in a switch-based multi-processor system
US7047322B1 (en) System and method for performing conflict resolution and flow control in a multiprocessor system
US7533197B2 (en) System and method for remote direct memory access without page locking by the operating system
US6189078B1 (en) System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
US8024528B2 (en) Global address space management
US5860159A (en) Multiprocessing system including an apparatus for optimizing spin--lock operations
JP3987162B2 (ja) 読取り−共有トランザクションのための強化ブロッキング・メカニズムを含むマルチプロセス・システム
US7631150B2 (en) Memory management in a shared memory system
US6249520B1 (en) High-performance non-blocking switch with multiple channel ordering constraints
US20020083274A1 (en) Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
US8447905B2 (en) Dynamic multi-level cache including resource access fairness scheme
US20100115195A1 (en) Hardware memory locks
JPH07311741A (ja) 並列計算機システム
JP2005519391A (ja) 共有ベクトルの増加を伴わないdsmマルチプロセッサシステムにおけるキャッシュコヒーレンスのための方法およびシステム
US20040215773A1 (en) Distributed shared resource management
US20130061002A1 (en) Performance optimization and dynamic resource reservation for guaranteed coherency updates in a multi-level cache hierarchy
US11880304B2 (en) Cache management using cache scope designation
CN116685958A (zh) 一种访问数据的方法和装置
CN112306698A (zh) 一种numa系统中的临界区执行方法及装置
JP2000215185A (ja) プロセッサシステム
JP2000215187A (ja) マルチプロセッサシステム
JPH054711B2 (ja)
JP2000215186A (ja) マルチプロセッサシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20010928

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20020624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040525

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040820

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050607

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050831

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051129

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20051129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20051129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060926

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20060927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061016

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091027

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101027

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101027

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111027

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121027

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121027

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131027

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees