(57)【特許請求の範囲】
【請求項１】
多ノードシステム内で共用リストを備えたメモリの書き込み動作を行う方法であって、
前記共用リストに新たなノードを連結するＤＭＡ書き込みリンク・コマンドを発行し、該共用リストが、各ノード内のキャッシュメモリ中にコピーされた共通のメモリ行を有するノードのリストであり、
前記新たなノードを前記共用リストに連結している間に前記メモリと前記共用リストとの間の接続を維持し、該維持ステップが前記ＤＭＡ書き込みリンク・コマンドにより実行可能となる、
という各ステップを含む方法。
【請求項２】
前記リンク・コマンドが前記新たなノードにより発行される、請求項１に記載の方法。
【請求項３】
前記共用リスト、前記新たなノード、及び前記メモリが、複数のポインタによって接続される、請求項１に記載の方法。
【請求項４】
前記新たなノードが、前記メモリと前記共用リストとの間に接続される、請求項１に記載の方法。
【請求項５】
前記共用リスト中の各ノードにパージ・コマンドを発行し、
各ノードに対する該パージ・コマンドの発行が完了した後に前記メモリから前記共用リストを切り離すためのコラプス・コマンドを発行する、
という各ステップを更に含む、請求項１に記載の方法。
【請求項６】
データパケットを用いて前記システム全体にわたり前記書き込み動作のためのコマンドを分配するステップを更に含む、請求項１に記載の方法。
【請求項７】
共用リストを備えたメモリのＤＭＡ書き込み動作を用いる多ノードシステムであって、
前記共用リストに新たなノードを連結するＤＭＡ書き込みリンク・コマンドであって、前記共用リストが、各ノード内のキャッシュメモリ中にコピーされた共通のメモリ行を有するノードのリストである、ＤＭＡ書き込みリンク・コマンドと、
前記新たなノードを前記共用リストに連結している間に前記メモリと前記共用リストとの間の接続を維持する手段であって、前記ＤＭＡ書き込みリンク・コマンドにより実行可能となる手段と
を備えているシステム。
【請求項８】
前記共用リスト、前記新たなノード、及び前記メモリが、複数のポインタにより接続され、
前記接続が、前記新たなノードと前記メモリとの間で行なわれる、
請求項７に記載のシステム。
【請求項９】
前記共用リスト中の各ノードをパージする手段と、
各ノードのパージが完了した後に前記メモリから前記共用リストを切り離す手段と
を更に含む、請求項７に記載のシステム。
【請求項１０】
前記共用リスト中の各ノードを互いに切り離す手段を更に含む、請求項９に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的には、多ノード、多重プロセッサ、キャッシュコヒーレント、不均一アクセスシステムにおけるメモリアクセスに関し、特定的には、かかるシステムにおいて書き込みパージ動作を実行するシステムおよび方法に関する。
【０００２】
【従来の技術】
標準スケーラブル・コヒーレント・インターフェース（SCI)仕様でのSCI ダイレクト・メモり・アクセス（DMA)書き込み動作は、キャッシュ行を完全に上書きするものである。DMA 装置が行の一部のバイトの更新のみを行なっている場合、他のバイトのメモリに含まれる情報が、完全な上書きによって失われる。
【０００３】
【発明が解決しようとする課題】
DMA 書き込み動作は又、キャッシュのコヒーレンシーを維持するのに、ソフトウエアに頼っている。２つの装置が同じ行に書き込みを行なっている場合、第２の装置は、行が第１の装置のためにパージされている場合でさえも、古いデータを含むすべてのキャッシュのパージを完了したものと見なす可能性がある。そうならば、この第２の装置が、他のソフトウエアに陳腐化したデータを読み出させる可能性がある。ソフトウエアが陳腐化したデータを使用すると、プログラムエラーが生じることになる。
【０００４】
部分行を書き込む他の従来技術の方法では、指定されたバイトを更新する前に、行を局所キャッシュに読み込むことに頼っている。この結果、記憶された読み出しデータとの衝突のために、他の所望のデータがキャッシュからスワップアウトされる。最後には、この結果、現在実行中の他の処理の性能が低下する。これは、余分なメモリ動作と影響を受けたデータの再取り出しに関連した待ち時間に起因する。
【０００５】
したがって、当該技術分野において、ソフトウエアに陳腐化したデータを使用させない書き込みコマンドを有する方法およびシステムが必要とされている。
【０００６】
さらに、当該技術分野において、メモリバイトの更新前に、メモリ行を局所キャッシュに読み込む必要のない方法及びシステムが必要とされている。
【０００７】
【課題を解決するための手段】
以上の及び他の目的及び特徴は、SCI 仕様に記載されるDMA 書き込みと同じ概略フローにしたがうシステムにおいて達成されるが、本発明のシステム及び方法では、メモリからキャッシュ共用リストは消去されない。その代わりに、共用リストが結合される。これによって、メモリ行がキャッシュに依然として入れられている間、他のノードからの他の書き込みパージが、その動作を終了したものと見なすことが防止される。共用リストが存在しない場合、コマンドによって供給されるマスクを用いて、新たなデータがメモリに併合される。本システム及び方法は、遠隔キャッシュ内の陳腐化したデータを突き止め、該データを破棄する代わりに、マスクを用いて該データをメモリ行に併合する。
【０００８】
本発明の１つの技術的利点は、メモリと共用リストとの間の接続を維持しながら、新たなノードを共用リストに結合する書き込みパージ・コマンドを発行することにある。
【０００９】
本発明の他の技術的利点は、メモリと共用リストとの間の接続を維持しながら、新たなノードに、共用リスト中の各ノードへとパージ・コマンドを発行させることにある。
【００１０】
本発明の他の技術的利点は、各ノードにパージ・コマンドが発行された後、新たなノードに、メモリから共用リストを切り離すためのコラプス・コマンドを送らせることにある。このコラプス・コマンドは、共用リストの破壊を完了させるものである。
【００１１】
本発明の他の技術的利点は、書き込みパージ・コマンドと共に書き込みマスクを用いることにある。
【００１２】
以上は、以下の本発明の詳細な説明を更に良く理解できるように、本発明の特徴及び技術的利点をかなり大まかに概説したものである。本発明の更なる特徴及び利点についても以下に説明するが、それらは、本願の特許請求の範囲の内容を形成するものである。当業者には明らかであろうが、本明細書に開示される概念及び特定の実施形態は、本発明の同じ目的を達成するために、変更あるいは他の構造の設計の基礎として容易に利用することができる。また、当業者には理解されるであろうが、かかる等価な構成は、特許請求の範囲に記載の本発明の精神及び範囲から逸脱するものではない。
【００１３】
【発明の実施の形態】
図１から図３は、従来技術のSCI 仕様により、共用リストを用いて、フレッシュな行へのDMA 書き込みが如何に行われるかを示す。このリストは、フレッシュ状態にあるメモリ101 のポインタが、ノード０ 102を指すことで始まる。ノード０ 102は、head_freshであり、mid_valid であるノード１ 103への順方向ポインタを有する。ノード１ 103は、先頭すなわちノード０ 102に戻る逆方向ポインタ、及びノード２ 104への順方向ポインタを有する。ノード２ 104は、tail_validであり、中間すなわちノード１ 103への逆方向ポインタを有する。
【００１４】
標準SCI フローによって実行される第１のステップは、このメモリ行の書き込みを他のノードが希望するか否かを判定することであり、希望する場合、MWRITE_FRESH_TO_HOMEが発行される。図１に示すように、ノード３ 105が、メモリ行への書き込みを希望しており、MWRITEコマンドを発行して書き込み動作を始める。図２は、リストfresh_to_home が、実際にメモリ101 から切り離されるので、ノード０ 102、ノード１ 103及びノード２ 104の共用リストが、もはやメモリ101 に接続されないことを示す。したがって、メモリはホームとしてマークされ、任意の新たなアクセスが、メモリ101 から直接メモリ行を検索することができる。
【００１５】
次に、ノード３ 105が入り、共用リストを片付けるすなわちパージする。ノード３ 105は、ノード３からノード０に、CREAD00_FRESH_TO_INVALIDを送る。ノード３ 105は、応答を受け取ると、その応答を用いて順方向ポインタを得る。ノード３ 105は、この順方向ポインタを用いて、ノード３ 105からノード１ 103に、CREAD00_VALID_TO_INVALIDを送る。ノード３ 105が応答を受け取ると、この応答からの順方向ポインタを用いて、ノード３ 105からノード２ 104に、CREAD00_VALID_TO_INVALIDを送る。この動作が完了する又は行われると、ホーム状態のメモリにのみデータのコピーが保持される。
【００１６】
SCI 仕様は、リストが完全にパージされるまで、フレッシュなメモリにアクセスしないようなソフトウエア・インターロックを頼りとしている。これは、同じメモリ行に対して、多数の書き込みパージがほとんど同時に発生する場合、非常に困難となり得る。というのは、２番目の書き込みパージは、その行がHOMEとマークされていることをただちに知り、ソフトウエアに、陳腐化したコピーを依然として持っている可能性のあるこの行をアクセスさせるためである。
【００１７】
図４から図６は、本発明の動作が図１に示す動作と同様に開始する、すなわちメモリ101 がフレッシュとマークされ、そのポインタがノード０ 102を指している初期状態で始まることを示す。ノード０ 102は、head_freshとマークされ、mid_valid であるノード１ 103への順方向ポインタを有する。mid_valid は、先頭への逆方向ポインタ、及びtail_validであるノード２ 104への順方向ポインタを有する。この場合も、ノード３ 105は、write_purge 又は新たなデータによるupdate_memory を希望している。したがって、ノード３ 105は、ノード３ 105からメモリ101 に、MWRITE_purgeコマンドである、MWRITE_PU_ATTACH_TO_LISTを送る。図５に示すように、メモリ101及びノード３ 105は、write_purge_partialコマンドからのマスク500 を用いて新たなデータに併合し、図２のようにリストを切り離さない。
【００１８】
したがってここで、リストは、フレッシュとマークされたメモリ101 に接続されたままである。メモリ101 の順方向ポインタがノード３ 105を指す。ノード３ 105がノード０ 102を指す。ノード０ 102は、ノード３ 105から何の通信も受け取っていないためhead_fresh状態にとどまる。ノード０ 102は、mid_valid ノード１ 103を指す順方向ポインタを有し、このmid_valid は、tail_validノード２ 104への順方向ポインタを有する。
【００１９】
ノード３ 105がmwrite_purgeコマンドからの応答を受け取ると、CREAD ではなくPURGE を実行する。というのは、この場合この行はFRESH であり、新たなデータを必要としないためである。したがって、mwrite_purge応答の後、ノード３ 105は、ノード３ 105からノード０ 102へのCPURGE_FRESH_TO_INVALID で、このリストのパージングを開始する。次に、ノード３ 105は、次の順方向ポインタを含むノード０からの応答を受け取り、ノード３ 105からノード１ 103に、CPURGE_VALID_TO_INVALID を送る。
【００２０】
ノード３ 105が、次の順方向ポインタを有するノード１ 103からの応答を受け取ると、ノード３ 105は、ノード３ 105からノード２ 104に、CPURGE_VALID_TO_INVALID を送る。ノード３ 105は、tail_validノードであるノード２ 104に達したことを知ると、ノード３ 105は、ノード３ 105からメモリ101に、MUPDATE_LIST_TO_HOME を送り、メモリは図６に示すようにホーム状態にとどまる。かくして、本発明の方法によって、図３に示すものと同じ結果が得られる。
【００２１】
図７から図６は、SCI コントローラ内部の各種の状態マシーンがwrite_purge_partial フローを実行するために処理する動作を記述している。
【００２２】
図７は、メモリアクセスコントローラの要求状態マシーン論理に関する動作を記述している。この状態マシーンは、メモリアクセスコントローラからの要求を受け取り、メモリアクセスコントローラによって渡された状態とフローにしたがって、SCI コントローラ内の第１の状態を決定する。たとえば、write_purge の場合、メモリアクセスコントローラはhead_freshで要求し、SCI コントローラはこの要求をCS_HF_MODS_HD状態に初期化するか、別の場合には、head_fresh_MODS_only_head_dirty状態に初期化する。
【００２３】
図８は、その状態がリング上で要求に如何に変更されるかを記述している。状態がCS_HF_MODS_HD である前述の場合、この状態マシーンは次いで、mupdate_list_to_goneのリング要求を行なう。
【００２４】
図９から図１４は、応答状態マシーンに関する動作を記述している。この状態マシーンは、遠隔メモリ又はキャッシュから応答を受けたときに、何を行うかを記述している。この状態マシーンは、リングへの他の要求を行なうべきか、又はメモリアクセスコントローラへの応答を行なうべきかの決定を行い、場合によってはその両方を行う。やはり前述のCS_HF_MODS_HD 状態の場合に従うと、応答が無効にならずFRESH である場合、状態マシーンはOS_HD_INVAL_OD状態に遷移し、次に、図４の状態マシーンがこの状態をとり、新たな要求を生成する。
【００２５】
図１５から図１７の状態マシーンは、書き込みパージフローが活動状態にある間、他のノードから同じ行に対する要求を受け取った場合に、何が起きるかを記述している。やはり前述のOS_HF_MODS_HD 状態の場合に従うと、この状態マシーンは、cupdate_prevmid 又はcupdate_prevtailを完了させる。他の要求はすべて無効となる。prev-TAIL は、順方向ポインタを更新して、状態を変化させる。
【００２６】
図１８は、SCI リング上の送出要求パケット400 中の記号を示す。この特定パケット内の有意フィールドは第２の記号であり、バイトマスク401 と称するフィールドを含む。バイトマスク・フィールド401 は、write_purge_partial のためのバイトマスク情報の保持に用いられる。
【００２７】
図１９は、マスク500をより詳細に示す。このマスクは、それぞれが５ビットの開始部501と終了部502からなる。開始部がすべて０であり、終了部がすべて１である場合、これは０で始まり、31で終わったことを意味し、その行全体をwrite_purge で書き込んだことを意味する。他の値の使用すること、たとえば開始部を５、終了部を20とすることも可能であるが、サブフィールドは常に連続するバイトでなければならない。
【００２８】
本発明及びその利点を詳細に説明したが、特許請求の範囲に規定される本発明の精神及び範囲から逸脱することなく、各種の修正、置換及び変更が可能であることを理解されたい。
【００２９】
以下に、本発明の実施態様を列挙する。
【００３０】
１．多ノードシステム内で共用リストを備えたメモリの書き込み動作を行う方法において、
前記共用リストに新たなノードを連結する書き込みリンク・コマンドを発行するステップと、
前記新たなノードを前記共用リストに連結している間、前記メモリと前記共用リストとの間の接続を維持するステップと、
を含むことを特徴とする方法。
【００３１】
２．前記リンク・コマンドは、前記新たなノードによって発行されることを特徴とする、前項１記載の方法。
【００３２】
３．前記共用リスト、前記新たなノード、及び前記メモリは、複数のポインタによって接続されることを特徴とする、前項１記載の方法。
【００３３】
４．前記新たなノードは、前記メモリと前記共用リストとの間に接続されることを特徴とする、前項１記載の方法。
【００３４】
５．前記方法は更に、
前記共用リスト中の各ノードに、パージ・コマンドを発行するステップと、
前記パージ・コマンドが各ノードに発行された後、前記メモリから前記共用リストを分離するためのコラプス・コマンドを発行するステップとを含み、
前記パージ・コマンドは、各ノードに記憶されたデータを無効にし、
前記パージ・コマンドは、前記新たなノードによって発行され、
前記コラプス・コマンドを発行するステップは又、前記共用リスト中の各ノードも互いに分離し、
前記コラプス・コマンドを発行するステップは又、前記新たなコマンドも前記メモリから分離し、
前記コラプス・コマンドは、前記新たなノードから発行されることを特徴とする前項１記載の方法。
【００３５】
６．前記方法は更に、
データパケットを用いて、前記システム全体に渡って、前記書き込み動作のためのコマンドを分配することを特徴とする、前項１記載の方法。
【００３６】
７．共用リストを備えたメモリの書き込み動作を用いる多ノードシステムにおいて、
共用リストに新たなノードを連結する手段と、
前記新たなノードを前記共用リストに連結している間、前記メモリと前記共用リストとの間の接続を維持する手段と、
からなることを特徴とするシステム。
【００３７】
８．前記共用リスト、前記新たなノード、及び前記メモリは、複数のポインタによって接続され、
前記接続は、前記新たなノードと前記メモリとの間で行なわれることを特徴とする、前項７記載のシステム。
【００３８】
９．前記システムは更に、
前記共用リスト中の各ノードをパージする手段と、
各ノードがパージされた後、前記メモリから前記共用リストを分離する手段とからなることを特徴とする、前項７記載の方法。
【００３９】
10．前記パージ手段は、各ノードに記憶されたデータを無効にし、前記システムは更に、
前記共用リスト中の各ノードを互いに分離する手段を含み、
前記システムは、キャッシュコヒーレント不均一メモリアクセスを有するSCI システムであることを特徴とする、前項９記載のシステム。
【００４０】
【発明の効果】
本発明は上述のように、メモリからキャッシュ共用リストを消去せに結合することによって、メモリ行がキャッシュに依然として入れられている間、他のノードからの他の書き込みパージが、その動作を終了したものと見なすことが防止される。共用リストが存在しない場合、コマンドによって供給されるマスクを用いて、新たなデータをメモリに併合する。遠隔キャッシュ内の陳腐化したデータを突き止め、該データを破棄する代わりに、マスクを用いて該データをメモリ行に併合する。従って、他のソフトウエアに陳腐化したデータを読み出させることがないので、プログラムエラーの発生を防止することが可能になる。また、メモリバイトの更新前に、メモリ行を局所キャッシュに読み込む必要がないので、他の所望のデータがキャッシュからスワップアウトされて現在実行中の他の処理性能が低下する可能性が排除される。
【図面の簡単な説明】
【図１】  SCI 仕様の書き込みパージ動作の一例を示す。
【図２】  SCI 仕様の書き込みパージ動作の一例を示す。
【図３】  SCI 仕様の書き込みパージ動作の一例を示す。
【図４】本発明の書き込みパージ部分動作の一例を示す。
【図５】本発明の書き込みパージ部分動作の一例を示す。
【図６】本発明の書き込みパージ部分動作の一例を示す。
【図７】書き込みパージ動作を実行するために、初期化状態マシーンにより行われる動作を記述する。
【図８】書き込みパージ動作を実行するために、要求状態マシーンにより行われる動作を記述する。
【図９】書き込みパージ動作を実行するために、応答状態マシーンにより行われる動作を記述する。
【図１０】書き込みパージ動作を実行するために、応答状態マシーンにより行われる動作を記述する。
【図１１】書き込みパージ動作を実行するために、応答状態マシーンにより行われる動作を記述する。
【図１２】書き込みパージ動作を実行するために、応答状態マシーンにより行われる動作を記述する。
【図１３】書き込みパージ動作を実行するために、応答状態マシーンにより行われる動作を記述する。
【図１４】書き込みパージ動作を実行するために、応答状態マシーンにより行われる動作を記述する。
【図１５】書き込みパージ動作を実行するために、衝突状態マシーンにより行われる動作を記述する。
【図１６】書き込みパージ動作を実行するために、衝突状態マシーンにより行われる動作を記述する。
【図１７】書き込みパージ動作を実行するために、衝突状態マシーンにより行われる動作を記述する。
【図１８】バイトマスクに書き込みパージコマンドを持たせるための送出要求データパケットを示す。
【図１９】書き込みマスクを示す。
【符号の説明】
101   メモリ
102   共有リストのノード０
103   共有リストのノード１
104   共有リストのノード２
105   ノード３
400   送出要求パケット
401   バイトマスク
【図１】
0003745108.tif 000002
【図２】
0003745108.tif 000003
【図３】
0003745108.tif 000004
【図４】
0003745108.tif 000005
【図５】
0003745108.tif 000006
【図６】
0003745108.tif 000007
【図７】
0003745108.tif 000008
【図８】
0003745108.tif 000009
【図９】
0003745108.tif 000010
【図１０】
0003745108.tif 000011
【図１１】
0003745108.tif 000012
【図１２】
0003745108.tif 000013
【図１３】
0003745108.tif 000014
【図１４】
0003745108.tif 000015
【図１５】
0003745108.tif 000016
【図１６】
0003745108.tif 000017
【図１７】
0003745108.tif 000018
【図１８】
0003745108.tif 000019
【図１９】
0003745108.tif 000020