(57)【要約】【課題】  マルチプロセッサ・データ処理システムにおいて、同じメモリ・データ・ロケーションに対する複数の同時複製オペレーションが存在するときのライブロックを回避するための方法を提供する。【解決手段】  ファブリックにおける複製オペレーションを行う前に、メモリ複製機構内に一組のトークンが定義される。トークンは、ソース・トークン及び宛先トークンを含む。それらのトークンは、データ複製オペレーションを開始する前にメモリ複製機構によってファブリック上に送出される。トークンは、複製オペレーションを完了するために必要なソース・アドレス及び宛先アドレスの使用可能性を見つける。他のデータ複製オペレーションを行うために宛先アドレスが、現在、他のメモリ複製機構によって利用されることになっていないということを、宛先アドレス・トークンに対する応答が表さないと、メモリ複製機構はメモリ複製オペレーションを開始するためのコマンドを送出する。【選択図】  図２
2004185610.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリ複製機構を有する第１のプロセッサと、
第２のメモリ複製機構を有する第２のプロセッサと、
メモリ・サブシステムと、
前記第１及び第２のプロセッサと前記メモリ・サブシステムとを相互接続するための手段と、
データ複製オペレーションの前に、前記第１のメモリ複製機構及び前記第２のメモリ複製機構のうちの特定のメモリ複製機構から送出される複数のトークン・オペレーションと、
を含み、
前記トークン・オペレーションは、前記特定のメモリ複製機構から生じるデータ複製オペレーションのためのソース・アドレス及び宛先アドレスをリザーブする、マルチプロセッサ・データ処理システム。
【請求項２】
前記トークン・オペレーションは、
複製オペレーションのデータが調達されるメモリ・アドレスを含むソース・トークンと、
複製オペレーションのデータが送られるメモリ・アドレスを含む宛先トークンと、
を含む、請求項１に記載のマルチプロセッサ・データ処理システム。
【請求項３】
前記ソース・トークン及び前記宛先トークンの各々は、単に前記データ処理システムのファブリックにおけるアドレス・オンリ保有権である、請求項２に記載のマルチプロセッサ・データ処理システム。
【請求項４】
前記ソース・トークン及び前記宛先トークンは、それぞれのソース及び宛先アドレスが他の複製オペレーションを行うために他のメモリ複製機構によって利用されるかどうかを決定するためにそれぞれのソース及び宛先アドレスを照会する、請求項２に記載のマルチプロセッサ・データ処理システム。
【請求項５】
前記メモリ複製機構内にあって、データ複製オペレーションを開始する前に、前記データ処理システムのファブリック上に前記ソース・トークン及び前記宛先トークンを送出するための手段を更に含む、請求項４に記載のマルチプロセッサ・データ処理システム。
【請求項６】
前記ソース・トークン及び前記宛先トークンは、前記ソース・トークン及び前記宛先トークンを送出したメモリ複製機構にメモリ・アドレスの使用可能性に関する表示を返送する、請求項５に記載のマルチプロセッサ・データ処理システム。
【請求項７】
前記メモリ複製機構内にあって、前記表示がヌル応答であるときにデータ複製オペレーションを開始するためのリクエストを送出するための手段を更に含み、
前記ヌル応答は、現在、他のメモリ複製機構がそれぞれのソース及び宛先アドレスを利用しようとしていないことを表す、請求項６に記載のマルチプロセッサ・データ処理システム。
【請求項８】
前記データ複製オペレーションを開始することは、現在、前記宛先アドレスを他のプロセスが利用しようとしていないと直ちにネーキッド・ライト・リクエストを送出し、それによって、複数の複製オペレーションのためのデータが同じソース・アドレスから調達される、請求項５に記載のマルチプロセッサ・データ処理システム。
【請求項９】
前記メモリ複製機構内にあって、他のメモリ複製機構から送出された各ソース及び宛先トークンをスヌープするための手段と、
前記スヌープに対して応答を供給するための手段と、
を更に含む、請求項６に記載のマルチプロセッサ・データ処理システム。
【請求項１０】
前記応答を供給するための手段は、
前記ソース・トークン及び宛先トークンの前記ソース・アドレス及び宛先アドレスと未だ完了していないデータ複製オペレーションのソース・アドレス及び宛先アドレスとを比較するための手段と、
スヌープされた宛先アドレスが、未だ完了していないデータ複製オペレーションのソース・アドレス又は宛先アドレスと同じであるとき、再試行応答を供給するための手段と、
を含む、請求項９に記載のマルチプロセッサ・データ処理システム。
【請求項１１】
マルチプロセッサ・データ処理システムのファブリックにおける複数の同時複製オペレーション時のライブロックを回避するための、前記データ処理システムにおける方法であって、
データ複製オペレーションを開始する前に、前記データ複製オペレーションを完了するために必要なソース・アドレス及び宛先アドレスの使用可能性をチェックするトークン・オペレーションを前記ファブリック上に送出するステップと、
現在、他のデータ複製オペレーションが前記ソース及び宛先アドレスを利用しようとしていないことを表す応答を前記トークン・オペレーションが供給するときだけ前記データ複製オペレーションを開始するステップと、
を含む方法。
【請求項１２】
前記送出するステップは、
データ複製オペレーションのデータが調達されるメモリ・アドレスを含むソース・トークンを送出するステップと、
データ複製オペレーションが送られるメモリ・アドレスを含む宛先トークンを送出するステップと、
を含む、請求項１１に記載の方法。
【請求項１３】
前記送出するステップにおける前記ソース・トークン及び前記宛先トークンがファブリックにおいて保有権を与える、請求項１１に記載の方法。
【請求項１４】
更に、前記ファブリックにおける前記トーク・オペレーションをスヌープするステップを含む、請求項１１に記載の方法。
【請求項１５】
スヌープされたトークン・オペレーションのソース・アドレス及び宛先アドレスと現在実装されることになっている第２のデータ複製オペレーションの第２のソース・アドレス及び第２の宛先アドレスとを比較するステップと、
前記スヌープされたトークン・オペレーションに応答を供給するステップと、
を更に含む、請求項１４に記載の方法。
【請求項１６】
前記供給するステップは、スヌープされた宛先トークンの宛先アドレスが第２のデータ複製オペレーションの第２のソース・アドレス又は第２の宛先アドレスと同じであるときに再試行応答を供給するステップを含む、請求項１５に記載の方法。
【請求項１７】
前記開始するステップは、宛先トークン・オペレーションが宛先アドレスの使用可能性を表すと直ちに前記データ複製オペレーションを含み、
複数の複製オペレーションに対するデータが同じソース・アドレスから調達される、
請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に云えば、データ処理システムに関し、詳しくは、データ処理システム内のデータの移動に関するものである。更に詳しく言えば、本発明は、データ処理システムのメモリ・サブシステム内にあるデータを複数のコンポーネントがアクセスしようとする時のライブロック（live-lock）を回避するための方法及びシステムに関するものである。
【背景技術】
【０００２】
高速且つ少量のハードウェアによるデータの処理及びデータ・オペレーションに対する要求は、データ処理システムの分野において見られる改良を支える原動力になっている。最近の動向は、より高速の、より小型の、且つより複雑なプロセッサの開発、及び複数の相互接続されたプロセッサが所与のタスクの複数部分を同時に実行することを可能にするマルチプロセッサ構成の実装を予見している。マルチプロセッサ構成の実装に加えて、より効率的なメモリ・アクセスのために分散メモリ・システムを持ったシステムが開発された。更に、伝統的なバス相互接続を置換するために、スイッチ・ベースの相互接続部（又は、スイッチ）が実装された。
【０００３】
分散メモリは、データが複数の別々のメモリ・モジュールにストアされることを可能にし、マルチプロセッサ構成におけるメモリ・アクセスを機能強化した。スイッチ・ベースの相互接続部は、処理システムの種々のコンポーネントが相互に直接接続することを可能にし、従って、コンポーネント相互間のより速い／より多くのダイレクト・コミュニケーション及びデータ伝送を行うことを可能にした。
【０００４】
図１は、分散メモリ及びスイッチ・ベースの相互接続部（スイッチ）を備えた一般的なマルチプロセッサ・システムのブロック図である。図示のように、マルチプロセッサ・データ処理システム１００がは複数のプロセッサ・チップ１０１Ａ−１０１Ｄを含み、それらのプロセッサ・チップは、スイッチ１０３を介して相互に及び他のシステム・コンポーネントに相互接続される。他のシステム・コンポーネントは、分散メモリ１０５、１０７（関連のメモリ・コントローラ（ＭＣ）１０６、１０８を伴なう）及び入出力（Ｉ／Ｏ）コンポーネント１０４を含む。更なるコンポーネント（図示されてない）がスイッチ１０３を介して図示のコンポーネントに相互接続可能である。プロセッサ・チップ１０１Ａ−１０１Ｄは、それぞれ、Ｐ１−ＰＮと順次ラベル付けされた２つのプロセッサ・コア（プロセッサ）を含む。プロセッサ・チップ１０１Ａ−１０１Ｄは、プロセッサＰ１−ＰＮのほかに、データ処理システム１００における処理オペレーションをプロセッサＰ１−ＰＮと共に制御する更なるコンポーネント／ロジックを含む。図１は、そのようなコンポーネントの１つであるハードウェア・エンジン１１１を示す。なお、ハードウェア・エンジン１１１の機能は後述される。
【０００５】
図１に示されたようなマルチプロセッサ・データ処理システムでは、１つ又はそれ以上のメモリ／メモリ・モジュールが、一般的には、複数のプロセッサ（又は、プロセッサ・オペレーション）にアクセス可能であり、メモリが、一般的には、処理リソースによって共用される。処理リソースの各々は独立して作用し得るので、システム内で共用メモリ・リソースに対する競合が起こり得る。例えば、特定のメモリ・アドレスが第１のプロセッサによってアクセスされつつある時、第２のプロセッサがその特定のメモリ・アドレスへの書き込み（又は、そこからの読み取り）を試みることがある。前のアクセスが進行中である時、アクセスを求める後のリクエストが生じる場合、前のリクエストが完了するまで後のリクエスタが遅延させられるか又は阻止されなければならない。従って、特定のメモリ・ロケーションからデータを読み取るためには、又は特定のメモリ・ロケーションにデータを書き込むためには、読み取り／書き込みオペレーションが完全に完了するまで、プロセッサはその特定のメモリ・アドレスにおけるロックを得ることが必要である。これは、システムが妥当でない（例えば、盗まれた）データを知らずに処理するときに生じ得るエラーを排除する。
【０００６】
更に、より高速の、より複雑なマイクロプロセッサに関しては、複数のデータ・リクエストが同時に発生されることがあり、しかも、それが種々なステージの完了時に存在することがある。コヒーレンシの心配に加えて、プロセッサは、特定のデータ・ブロックがオペレーションのシーケンスから外れて変更されないようにしなければならない。例えば、アドレスＡにデータ・ブロックが書き込まれることをプロセッサＰ１が要求し、プロセッサＰ２が同じデータ・ブロックを読み取らなければならない場合、及びプログラム・シーケンスではその読み取りが書き込み前に生じる場合、正しい結果を得るようにそれら２つのオペレーションの順序が維持されることが重要である。
【０００７】
データ処理システムの標準的オペレーションは、処理コンポーネント及び他のコンポーネントによるデータへのアクセス及びデータの移動又は操作を必要とする。一般的には、データは、特定のプロセッサがプログラム・コードを実行することによって送出（issue）されたコマンドを使用して、メモリにストアされ、アクセスされ／読み取られ、検索され、操作され、ストアされ／書き込まれ、及び（又は）単に移動させられる。
【０００８】
データ移動オペレーションは、データの価値／内容に対する変更／修正には関与しない。むしろ、データ移動オペレーションは、第１の物理アドレスを有する或るメモリ・ロケーションから異なる物理アドレスを有する他のメモリ・ロケーションにデータを転送する。分散メモリ・システムでは、データは、単一のメモリ／メモリ・モジュール内の移動も可能であるけれども、或るメモリ・モジュールから他のメモリ・モジュールにも移動可能である。
【０００９】
現在のシステムではいずれのタイプの移動を完了するためにも、次のようなステップが完了する：
（１）プロセッサ・エンジンがロード命令及びストア命令を発生し、それらの命令の結果、キャッシュ・ライン（ＣＬ）読み取りがプロセッサ・チップからスイッチ／相互接続線を介してメモリ・コントローラに送られる；
（２）メモリ・コントローラが宛先メモリ・ロケーションにおけるロックを獲得する；
（３）プロセッサが（メモリ・コントローラによって）ロック宛先メモリ・ロケーションを割り当てられる；
（４）データがメモリ（ソース・アドレス）からスイッチ／相互接続部を介してプロセッサ・チップ（エンジン）に送られる；
（５）データがプロセッサ・エンジンからスイッチ／相互接続部を介して宛先ロケーションのメモリ・コントローラに送られる；
（６）データが宛先ロケーションに書き込まれる；
（７）他のプロセッサに対して、宛先のロックがリリースされる。
データをソース・メモリ・ロケーションからプロセッサ・チップに、しかる後、プロセッサ・チップから宛先メモリ・ロケーションに転送する際の組込み待ち時間（built in latency）は、スイッチが利用されるときでも、このプロセスにおいて固有のものである。
【００１０】
典型的には、各ロード及びストア・オペレーションは、８バイトのデータ・ブロックを移動させる。この移動を完了するには、キャッシュのローリング及び有効アドレスから読み取りへのアドレス変換（effective-to-read address translations）を遂行するための変換索引緩衝機構（translationlook-aside buffer &#8211; ＴＬＢ）の利用を必要とし、更に、データを受領及び送出するためのプロセッサ及び他のハードウェア・リソースの利用を必要とする。少なくとも或るプロセッサ・システム製造業者は、キャッシュ・ラインにおけるバイト・レベルの同期オペレーションを可能にするために、ＴＬＢと共にハードウェア加速（hardware-accelerated）ロード・ライン及びストア・ラインを導入した。
【００１１】
ところで、図１は、メモリにおける或る領域／ロケーション（即ち、物理アドレス）から他の領域／ロケーションへのプロセッサＰ１によるデータの移動を説明するために利用される。図１において、パス１及び２を表す方向矢印で示されるように、データ移動オペレーション中、メモリ１０５におけるアドレス・ロケーションＡからのデータは、そのデータをバス（又は、スイッチ）１０３上に置くことによって、データ・パス１を介してプロセッサ・チップ１０１Ａに移動させられる。しかる後、そのデータは、プロセッサ・チップ１０１Ａからデータ・パス２に沿って且つスイッチ１０３を介してメモリ１０７における所望のアドレス・ロケーションＢに送られる。
【００１２】
上記のデータ移動オペレーションを完了するために、現在（及び、従来）のシステムは、ハードウェア・エンジン（即ち、ハードウェア・モデル）及び（又は）ソフトウェア・プログラミング・モデル（又は、インターフェース）を利用している。
【００１３】
そのハードウェア・エンジンの実装では、仮想アドレスが利用され、ハードウェア・エンジン１１１がデータ移動オペレーションを制御し、移動するデータを受け取る。そのハードウェア・エンジン１１１（ハードウェア・アクセラレータとも呼ばれる）は、ロック獲得プロセスを開始する。それは、複数のプロセッサがメモリ・アドレスにおけるデータを同時にアクセスするのを回避するために、ソース及び宛先メモリ・アドレスにおけるロックを得るプロセスである。データをプロセッサまで送る代わりに、そのデータがハードウェア・エンジン１１１に送られる。ハードウェア・エンジン１１１は、キャッシュ・ライン読み取りを利用して、書き込みがパイプライン態様で完了することを可能にする。その最終的な結果は、非常に速い移動オペレーションである。
【００１４】
ソフトウェア・プログラミング・モデルに関しては、ソフトウェアがロケーションＡ及びロケーションＢをプロセッサ・ハードウェアに知らせ、しかる後、プロセッサ・ハードウェアが移動を完了する。このプロセスでは、実アドレス（即ち、仮想アドレスではない）を利用することも可能である。従って、上記のハードウェア・モデルによって必要とされる仮想アドレス／実アドレス変換（又は、ヒストリカル・パターン・マッチング）のために必要な付加的時間が排除され得る。また、このソフトウェア・モデルでは、アドレスがオフセットを含んでもよい（例えば、アドレスＢが数バイトだけオフセットされ得る）。
【００１５】
このデータ移動オペレーションを遂行するためにプロセッサＰ１によって実行される典型的な擬似シーケンスは、次のようなものである：
ＬＯＣＫ  ＤＳＴ    ：宛先をロックする
ＬＯＣＫ  ＳＲＣ    ：ソースをロックする
ＬＤ Ａ（バイト０） ：ＡＢ０（４Ｂ又は８Ｂの量）
ＳＴ Ｂ（バイト０） ：ＢＢ０（４Ｂ／８Ｂ）
ＩＮＣ              ：バイト数をインクリメントする
ＣＭＰ              ：終了したかどうかを知るために比較する
ＢＣ                ：終了しない場合にブランチする
ＳＹＮＣ            ：同期化を遂行する
ＲＬ ＬＯＣＫ       ：ロックをリリースする
【００１６】
バイト数（Ｂ０、Ｂ１、Ｂ２等）は、アドレスＡによって識別されるメモリ領域に記憶されたすべてのデータがアドレスＢによって識別されるメモリ領域に移動してしまうまで、インクリメントされる。ロック及びリリース・オペレーションは、メモリ・コントローラ及びバス・アービタによって実行され、それらは、ロックを与えられるリクエスティング・プロセッサに特定のアドレスに関する一時的なアクセス及びコントロールを割り当てる。
【００１７】
データ移動オペレーションに続いて、プロセッサＰ１は、そのプロセッサがその後の他のオペレーションに関する処理を回復することができる前にすべてのデータがメモリ・ロケーションＢに物理的に移動してしまったことを表す完了応答（又は、信号）を受け取らなければならない。これは、処理ユニット間にコヒーレンシが存在すること及びデータ・コヒーレンシが維持されることを保証するものである。その完了信号は、すべてのプロセッサがデータ移動オペレーションの通知（及び、肯定応答）を受け取ることを保証するために、データ移動オペレーション後にプロセッサＰ１によって発生される。
【００１８】
従って、図１では、プロセッサＰ１によって送出された命令が、ロケーションＡからロケーションＢへのデータの移動を開始させる。ＳＹＮＣがプロセッサＰ１によって送出され、そして最後のデータ・ブロックがロケーションＢに移動してしまったとき、その物理的移動を表す信号がプロセッサＰ１に送られる。それに応答して、プロセッサＰ１はアドレスＢにおけるロックをリリースする。そして、プロセッサＰ１は他の命令の処理を回復することができる。
【００１９】
特に、プロセッサＰ１は、移動オペレーションが開始する前にメモリ・ロケーションＢ、しかる後、Ａにおけるロックを得なければならないので、完了信号はロックのリリースも信号し、メモリ・ロケーションＡ及びＢをアクセスしようとする他のプロセッサがいずれのアドレスに関するロックを得ることも可能にする。
【００２０】
ハードウェア・モデル及びソフトウェア・モデルの各々が種々の機能的な利益を提供するけれども、両方とも幾つかの制限を持っている。例えば、ハードウェア・モデル及びソフトウェア・モデルの両方ともメモリ（ソース）からプロセッサ・チップまでのデータのローディング、その後のプロセッサ・チップからメモリ（宛先）までの逆ローディングの組込み待ち時間を有する。更に、いずれのモデルに関しても、プロセッサは、移動全体が完了し、メモリ・コントローラからの完了応答が発生されるまで待たなければならず、しかる後、プロセッサはその後の命令／オペレーションの処理を回復する。
【発明の開示】
【発明が解決しようとする課題】
【００２１】
従って、本発明は、より効率的なデータ移動オペレーションのための方法及びシステムを提供するものである。メモリ・リソースに対して競合する複数のメモリ複製機構（cloner）をサポートするマルチプロセッサ・データ処理システムにおいてライブロック（livelock）を排除する方法及びシステムは歓迎されるべき改良であろう。本発明によって、これら及び幾つかの他の利益が提供される。
【課題を解決するための手段】
【００２２】
マルチプロセッサ・データ処理システムにおいて同じメモリ・データ・ロケーションに対して複数の同時的複製オペレーションが存在するとき、そのデータ処理システムにおけるライブロックを回避するためのハードウェア方法が開示される。ファブリック上でデータ複製オペレーションを行うときに使用するための命令セット・アーキテクチャにおけるトークンのセットが定義される。トークンは、ソース・トークン及び宛先トークンを含む。それらのトークンは、データ複製オペレーションを開始する前に、メモリ複製機構により前記ファブリック上に発生される。トークンは、複製オペレーションを完了するために必要なソース・アドレス及び宛先アドレスの使用可能性を見つける。宛先アドレスが他のデータ複製オペレーションを行うために、現在他のメモリ複製機構によって利用されることになっていないことを、宛先アドレス・トークンに対する応答が表す場合、メモリ複製機構は、メモリ移動オペレーションを開始するためのコマンドを送出し得る。
【００２３】
ソース・トークン及び宛先トークン・オペレーションは、データ処理システムにおける他のメモリ複製機構によるスヌープ可能なファブリックに関するアドレス・オンリの保有権（address only tenure）を伴なう。トークンがスヌープされるとき、スヌーパ（メモリ複製機構）は、スヌープされたトークン・オペレーションのソース・アドレス及び宛先アドレスを、そのときスヌーパによって完了することになっているすべてのデータのソース・アドレス及び宛先アドレスと比較する。次に、スヌーパは、ヌル応答又は再試行応答を供給する。再試行応答は、スヌープされた宛先トークンの宛先アドレスが次のデータ複製オペレーションのソース・アドレスと同じであるときに供給される。
【００２４】
一旦、すべてのスヌーパからヌル応答が戻されると、データ複製オペレーションを開始するためにネーキッド・ライト（naked write）リクエストが直ちにファブリックに送出される。
【発明を実施するための最良の形態】
【００２５】
Ａ．概要
本発明は、プロセッサ（又は、プロセッサ・チップ）に関連した高速メモリ複製機構及びその高速メモリ複製機構によって提供される特徴を利用したデータ複製オペレーションを完了する効率的な方法を提供する。高速メモリ複製機構は、実際のデータ移動が完了することを必要とすることなく第１のメモリ・ロケーションから他のメモリ・ロケーションにデータを移動させるためのリクエストに続いてプロセッサが処理オペレーションを継続することを可能にする。
【００２６】
本発明は、移動オペレーションに対するアーキテクチャ的に終了した状態（Architecturally Done State）を紹介する。メモリ複製機構によって与えられる機能的な特徴は、ネーキッド・ライト・オペレーション、ネーキッド・ライト及びダイレクト・メモリ・ツー・メモリ・データ移動をサポートするための高機能コヒーレンシ・オペレーション、命令セット・アーキテクチャ（例えば、割り込みのないパイプライン化命令発生による最適化結合命令セット）における新しい命令、及びデータ処理のために仮想アドレシング・モードと実アドレシング・モードとの間を動的に切り替えるためのモード・ビットを含む。データ処理システムの更なる新規なオペレーション上の特徴が本発明によって与えられる。
【００２７】
本発明は、現在の処理システムに存在するスイッチ・トポロジおよびメモリ・コントローラの機能を利用する。データがリクエスティング・プロセッサ・モジュールに返送され、しかる後、そのプロセッサ・モジュールから宛先に送られることを必要とする移動オペレーションを実行するための現在のハードウェア・ベース・モデル又はソフトウェア・ベース・モデルとは違って、本発明は、データが宛先に直接経路指定されることを可能にする更なる特徴を持った結合ソフトウェア・モデル及びハードウェア・モデルを実装する。本発明の実装は、後述の種々のハードウェア及びソフトウェア・ロジック／コンポーネントを含むメモリ複製機構と共に設計されたプロセッサ・チップを利用して実現されることが望ましい。
【００２８】
本発明の説明は、幾つかの新たな用語を規定する。それらのうちの重要なものが、高速メモリ複製機構によって遂行される「複製」オペレーションである。本願において使用されるように、複製オペレーションは、高速メモリ複製機構内で、ファブリック上で、並びに、メモリ・ロケーションで生じ、アーキテクチャ的に終了した状態及び実際の物理的なデータ移動を共に可能にするすべてのオペレーションを指す。データは、ポイントＡからポイントＢに移動するが、データ移動オペレーションを完了する既知に方法とは非常に異なる態様で移動する。データ「移動」という参照は、特に、プロセッサから高速メモリ・コントローラに送出される命令を指す。場合によっては、「移動」という用語は、データ複製オペレーションの一部分としてのデータの物理的移動を特定的に指すときに使用される。従って、例えば、物理的データ移動の完了は、データ複製オペレーションの一部分と考えられる。
【００２９】
Ｂ．ハードウェアの特徴
次に、図面、特に、図２を参照すると、本発明を実装し得るマルチプロセッサ式スイッチ接続データ処理システム２００が示される。データ処理システム２００は複数のプロセッサ・モジュール／チップを含み、それらのうちの２つのチップ２０１Ａ及び２０１Ｄが示される。プロセッサ・チップ２０１Ａ及び２０１Ｄの各々は１つ又はそれ以上のプロセッサ（Ｐ１、Ｐ２、ＰＭ、ＰＮ等）を含む。プロセッサ・チップの少なくとも１つ（例えば、例示のためのプロセッサ・チップ２０１Ａ）には、メモリ複製機構２１１があり、そのメモリ複製機構に関しては、図３を参照して後述する。プロセッサ・チップ２０１Ａ及び２０１Ｄは、スイッチ２０３を介して相互に及びデータ処理システム２００の更なるコンポーネントに相互接続される。これらの更なるコンポーネントは分散メモリ・モジュールを含み、それらのモジュールのうちの２つであるメモリ２０５及び２０７が示される。それらのメモリの各々は、それぞれのメモリ・コントローラ２０６及び２０８を有する。メモリ・コントローラ２０８にはメモリ・キャッシュ２１３が関連付けられる。メモリ・キャッシュ２１３の機能は、下記のネーキッド・ライト・オペレーションの説明と関連して説明される。
【００３０】
データ複製オペレーション時、データがメモリ２０５のメモリ・ロケーションＡ２０９からスイッチ２０３を介してメモリ２０７のメモリ・ロケーションＢ２１０に直接に移動する。従って、データは、プロセッサ又はプロセッサ・モジュールを含まないダイレクト・パス３に沿って移動する。即ち、移動するデータは、最初にメモリ複製機構２１１又はプロセッサＰ１には送られない。データの実際の移動は、メモリ・コントローラ２０６及び２０８（又は、後述のモデルによれば、コヒーレンシに基づいたキャッシュ・コントローラ）によってそれぞれ制御される。それらのメモリ・コントローラは、物理的移動を完了すると同時に、それぞれ、メモリ２０５及び２０７へのアクセスも制御する。
【００３１】
データ処理システムにおけるプロセッサ及びメモリの図示の構成は、本願では、単に例示目的で示される。非分散メモリ及び（又は）単一のプロセッサ／プロセッサ・チップを含むシステム構成に本発明の種々の機能的特徴が十分に適用可能であることは、当業者には明らかであろう。従って、本願において開示された本発明の機能的特徴は、データ処理システムが、本願において開示された種々の機能的特徴を有する高速メモリ複製機構及び（又は）同様のコンポーネントを含む限り、種々な構成のデータ処理システムに適用する。
【００３２】
（ａ）．高速メモリ複製機構
メモリ複製機構２１１は、本発明のプロセスを制御及び（又は）開始するハードウェア・コンポーネント及びソフトウェア・コンポーネントを含む。特に、図３に示されるように、メモリ複製機構２１１は、制御ロジック３０３及び変換索引緩衝機構（ＴＬＢ）３１９を含む。メモリ複製機構２１１は、ソース（ＳＲＣ）アドレス・レジスタ３０５、宛先（ＤＳＴ）アドレス・レジスタ３０７、カウント（ＣＮＴ）レジスタ３０９、アーキテクチャ的終了レジスタ３１３、及び複製完了レジスタ３１７を含む幾つかのレジスタから成る。更に、メモリ複製機構には、モード・ビット３１５も含まれる。メモリ複製機構２１１における図示の各コンポーネントの機能は、本明細書の関連セクションにおいて説明される。
【００３３】
特に、ハードウェア・アクセラレータ又は同様のコンポーネントと違って、メモリ複製機構はアドレス・オンリ・オペレーションを受け、そしてそれを送出する。本発明は、１チップ当たり１つのメモリ複製機構を実装することが可能である。別の方法として、各マイクロプロセッサが、それぞれのメモリ複製機構にアクセスすることも可能である。
【００３４】
ＴＬＢ３１９は、仮想アドレス・バッファ３２１及び実アドレス・バッファ３２３を含む。プロセッサＰ１、Ｐ２等によって利用されるＩ−ＴＬＢ及びＤ−ＴＬＢとは別のＴＬＢ３１９が固定され、Ｉ−ＴＬＢ及びＤ−ＴＬＢと提携して動作する。バッファ３２１及び３２３は、始動時にＯＳによってロードされ、ＯＳによって参照されるすべてのアドレスに対する変換値を記憶し、メモリにおけるＯＳページ・テーブルを読み出す必要がないように処理する。
【００３５】
（ｂ）．ＳＲＣ、ＤＳＴ、及びＣＮＴレジスタ
図３の例示的実施例では、メモリ複製機構２１１は、ソース（ＳＲＣ）アドレス・レジスタ３０５、宛先（ＤＳＴ）アドレス・レジスタ３０７、及びカウント（ＣＮＴ）レジスタ３０９を含む。それらの名称が意味するように、宛先アドレス・レジスタ３０７及びソース・アドレス・レジスタ３０５は、それぞれ、移動するデータの宛先となるメモリ・ロケーションを表す宛先アドレス、及び移動するデータのソースとなるメモリ・ロケーションを表すソース・アドレスを記憶する。カウント・レジスタ３０９は、データ複製オペレーションにおいて転送されるキャッシュ・ラインの数を記憶する。
【００３６】
宛先アドレス及びソース・アドレスは、データ複製オペレーションのために宛先アドレス及びソース・アドレスを記憶するために利用されるメモリ内のロケーション（Ｘ及びＹ）から読み出される。ソース・アドレス及び宛先アドレスの読み出しは、詳細に後述されるようなデータ複製オペレーションをメモリ複製機構に開始させる１つ又はそれ以上の命令をプロセッサ（例えば、Ｐ１）が送出することによってトリガされる。
【００３７】
Ｃ．データ複製オペレーションのための一般的なプロセス
図６は、上述のハードウェア・コンポーネントを利用して本発明が完了するプロセス全体の主要なステップの幾つかを示す。そのプロセスは、ブロック５０１において開始し、しかる後、ブロック５０３に示されるように、メモリ・ロケーションＡからメモリ・ロケーションＢにデータを複製するためのリクエストを構成する命令がプロセッサＰ１によって送出される。メモリ複製機構は、ブロック５０５に示されるように、データ複製リクエストを受け取り、仮想ソース・アドレス及び宛先アドレスを検索し、対応する実アドレスをルックアップし、そしてネーキッド・ライト（ＷＲ）オペレーションを開始する。ブロック５０７に示されるように、ネーキッドＷＲオペレーションがファブリックにおいて実行され、メモリ複製機構がアーキテクチャ的に終了した状態を監視する。複製オペレーションがアーキテクチャ的に終了したという表示に続いて、ブロック５０９に示されるように、複製オペレーションが完了したことをメモリ複製機構がプロセッサに信号し、プロセッサは、データ移動があたかも物理的に完了してしまったが如く処理を継続する。そして、ブロック５１１に示されるように、メモリ複製機構がバックグラウンドにおいて実際のデータ移動を完了し、データが物理的に移動しつつあるときにキャッシュ・ラインの必要な保護を遂行する。しかる後、ブロック５１３に示されるように、プロセスが終了する。図６の個々のブロックによって行われるプロセスは拡張され、本願において提供される幾つかの他のフロー・チャートに関連して後述される。
【００３８】
次に図７を参照すると、図６のブロック５０５を完了する時に関連する幾つかのステップが示される。プロセスは、ブロック５２１において開始し、しかる後、ブロック５２３に移る。ブロック５２３は、リクエストされたデータ複製オペレーションに対する宛先アドレス及びソース・アドレスがメモリ・ロケーションＸ及びＹから検索され、メモリ複製機構におけるそれぞれのレジスタに入れられることを示している。ブロック５２５に示されるように、カウント値（即ち、データのキャッシュ・ラインの数）がＣＮＴレジスタに入れられる。しかる後、ブロック５２６に示されるように、ソース及び宛先トークン・オペレーションが完了する。それに続いて、ブロック５２７に示されるように、ネーキッドＣＬ  ＷＲがファブリック上に置かれる。各ネーキッドＣＬ  ＷＲがメモリ・コントローラからファブリックを介して応答を受け取る。ブロック５２９において、その応答がヌルであるかどうかの決定が行われる。応答がヌルでない場合、ブロック５３１に示されるように、ネーキッドＣＬ  ＷＲオペレーションが再試行される。しかし、応答がヌルである場合、ブロック５３３に示されるように、ネーキッドＣＬ  ＷＲがメモリ複製機構２１１において完了したものとしてマークされる。図７に示された種々のステップが以下のセクションで更に詳細に説明される。
【００３９】
（ａ）．オペランドの移動及び移動アドレスの検索
本発明の明確な理解を可能にするために、小さいブロックのプログラム・コードと、メモリ・ロケーションＡ（仮想アドレスＡ及び実アドレスＡ１を有する）から他のメモリ・ロケーション（仮想アドレスＢ及び実アドレスＢ１を有する）へのデータのクローニングとに関連したデータ複製オペレーションの実装を説明することにする。従って、例えば、結果としてメモリ・ロケーションＡからメモリ・ロケーションＢへのデータのクローニングを生じる、プロセッサＰ１において実行されるプログラム・コードのサンプル・ブロックは次のようになる：
ＳＴ    Ｘ      （アドレスＸが仮想ソース・アドレスＡを保持する）
ＳＴ    Ｙ      （アドレスＹが仮想宛先アドレスＢを保持する）
ＳＴ    ＣＮＴ  （ＣＮＴは複製すべきデータ・ラインの数である）
ＳＹＮＣ
ＡＤＤ
【００４０】
上記コードは、複製オペレーションを開始させるためにメモリ複製機構が受け取ったサンプル命令を表す。ＡＤＤ命令は、データ複製オペレーションが完了するまでプロセッサによって実行されない例示的命令として利用される。メモリ複製機構は、ＳＹＮＣまでの上記命令シーケンスをプロセッサが受け取ったときにはいつもデータ複製オペレーションを開始する。メモリ複製機構における上記命令シーケンスの実行は、メモリ複製機構への仮想ソース及び宛先アドレスの返送を生じさせ、更に、移動すべきデータ・ラインの数を供給する。本実施例では、ＣＮＴの値は１ページのメモリにおけるラインの数に等しく、複製オペレーションは、アドレスＡにある単一ページのメモリを複製するものとして説明される。
【００４１】
図４は、Ｘ及びＹメモリ・ロケーションのブロック表示を有するメモリ４０５を示し、そのメモリ４０５は、メモリ・サブシステム内の任意のメモリ２０５、２０７（図２）であってもよい。なお、それらのメモリ・ロケーションには、データ複製オペレーションのためのソース・アドレスＡ及び宛先アドレスＢが存在する。１つの実施例では、メモリ複製オペレーションのためのＡ及びＢアドレスは、プロセッサにより初期の実行時間にＸ及びＹメモリ・ロケーションにストアされる。各ロケーションは、３２ビットのアドレス・データ及びそれに続く１２個の予約ビットを含む。図示の実施例によれば、これら付加的な１２ビットのうちの最初の５ビットは、ソース又は宛先ページ・アドレス範囲内の３２個の可能なページのうちのどのページがリクエスト／アクセスされようとしているかを選択するために、データ処理システムの状態マシンによって利用される。
【００４２】
図４に示されるように、Ｘ及びＹアドレスは、Ａ及びＢ仮想アドレスを記憶するメモリ・ロケーションであり、それらがストア・リクエスト（ＳＴ）に含まれているとき、そのリクエストが（通常のストア・オペレーションではなく）データ複製オペレーションのためのものであることをプロセッサ及びメモリ複製機構に対して表す。仮想アドレスＡ及びＢは、データ複製オペレーションのソース及び宛先の実メモリ・アドレスＡ１及びＢ１に対応し、メモリ複製機構２１１のＳＲＣアドレス・レジスタ３０５及びＤＳＴアドレス・レジスタ３０７にストアされる。後述のメモリ複製オペレーションにおいて利用されるように、Ａ及びＢは、メモリ複製機構内に記憶されたデータ・アドレスであるアドレスを指し、一方、Ａ１及びＢ１は、ファブリックに対して（即ち、スイッチの外に）送出された実メモリ・アドレスを指す。Ａ及びＡ１並びにＢ及びＢ１の両方とも、それぞれ、データ複製オペレーションのソース・メモリ・ロケーション及び宛先メモリ・ロケーションを表す。
【００４３】
図示の実施例では、メモリ複製機構２１１がプロセッサから一連のＳＴコマンド及びそれに続くＳＹＮＣを受け取るとき、ＴＬＢ３１９は仮想アドレスＸ及びＹから、それぞれ、実アドレスＸ１及びＹ１をルックアップする。Ｘ１及びＹ１は、メモリ複製オペレーションのためのソース及び宛先アドレスの記憶専用のメモリ・ロケーションである。メモリ複製機構２１１は、スイッチを介して（即ち、ファブリック上に）メモリにオペレーションを送出し、そしてそれらオペレーションはそれぞれのロケーションをアクセスし、宛先及びソース・アドレスをメモリ複製機構２１１に戻す。メモリ複製機構２１１は、ソース（Ａ）及び宛先（Ｂ）に対する仮想アドレスを、それぞれ、ロケーションＸ１及びＹ１から受け取る。供給された実際のアドレスは第１ページ・メモリ・アドレスである。
【００４４】
メモリ複製機構２１１は、プロセッサＰ１から受け取ったソース及び宛先アドレス、並びにキャッシュ・ライン・カウントを、それぞれ、レジスタ３０５、３０７、３０９にストアする。ＣＮＴレジスタ３０９にストアされた値に基づいて、メモリ複製機構は、ＳＲＣレジスタ３０５及びＤＳＴレジスタ３０７におけるアドレスでもって始まり、０から３１まで順次に番号付けられたる連続したアドレスを、１２個の予約ビットにおける最初の５個の付加ビットを利用して発生することができる。
【００４５】
例えば、１２８バイトのラインを有するデータの４Ｋバイト・ページがメモリ・アドレスＡ１（４Ｋの揃ったアドレスを有する）からメモリ・アドレスＢ１（これも４Ｋの揃ったアドレスを有する）に移動する複製オペレーションに関しては、最初の５ビットにおいてソース・アドレスに付加される状態マシン・アドレス拡張子 0000 乃至 1111 に対応した３２のカウント値がＣＮＴレジスタ３０９にストアされる。これらのアドレス拡張子は、状態マシン（即ち、メモリ複製機構によって利用されるカウンタ）によって設定可能であり、ページ内のどのアドレス・ブロックが移動することになっているかを識別する。
【００４６】
また、本発明の更なる特徴は、ページ全体に加えて部分的なメモリ・ページのクローニングも可能にする。この特徴は、例えば、異なるサイズのキャッシュ・ラインを有するメモリ・コンポーネント相互間で移動オペレーションが生じる場合の実施例に関連するものである。
【００４７】
仮想ソース・アドレス及び宛先アドレスの受け取りに応答して、メモリ複製機構２１１は、
（１）ソース・アドレス（即ち、アドレスＡ）をＳＲＣレジスタ３０５にストアするという機能、及び
（２）宛先アドレス（即ち、アドレスＢ）をＤＳＴレジスタ３０７にストアするという機能
を遂行する。メモリ複製機構２１１は、プロセッサから受け取ったＣＮＴ値をＣＮＴレジスタ３０９にストアする。ストアされたソース及び宛先アドレスは、前の処理中にプロセッサによって発生された仮想アドレスである。これらのアドレスは、メモリにおける対応する実アドレスを決定するためにＴＬＢ３１９によってルックアップ可能である。その後、それらのアドレスは、後述するデータ複製オペレーションを実行するために使用される。
【００４８】
Ｄ．トークン・オペレーション
図７のブロック５２６に説明を戻すと、メモリ複製機構に対する書き込み及び読み取りオペレーションを開始する前に、メモリ複製機構が、本実施例ではソース（ＳＲＣ）トークン及び宛先（ＤＳＴ）トークンと呼ばれる一組のトークン（又は、アドレス保有権）を発生する。ＳＲＣトークンは、他のいずれかのメモリ複製機構がその時点でＳＲＣページ・アドレスを利用しようとしているかどうかを知るためにシステムに照会を行うファブリックにおけるオペレーションである。同様に、ＤＳＴトークンは、他のいずれかのメモリ複製機構がその時点でＤＳＴページ・アドレスを利用しようとしているかどうかを知るためにシステムに照会を行う、ファブリックにおけるオペレーションである。
【００４９】
ＳＲＣ及びＤＳＴトークンは、複製オペレーションを開始するオペレーションを送出する前に、メモリ複製機構によってファブリック上に送出される。各メモリ複製機構のトークンは、そのシステムにおける他のすべてのメモリ複製機構（又は、プロセッサ）によってスヌープされる。各スヌーパ（snooper）は、当該スヌーパがそのとき利用しようとしているいずれのアドレスに対してもトークンのソース及び宛先アドレスをチェックする。しかる後、各スヌーパは、それらのアドレスがスヌーパの１つによって利用されることになっているかどうかを、それらトークンを送出したメモリ複製機構に示す応答を送出する。トークン・オペレーションは、２つのメモリ複製機構が同じロケーションに対して読み取り／書き込みを試みようとしていないことを保証する。トークン・オペレーションは、データ複製オペレーションのためのメモリ・アドレス・スペースが使用可能であることも保証する。
【００５０】
トークンの使用は、複数のメモリ複製機構がデータを同じメモリ・ロケーションに同時に書き込まないようにする。異なるオペレーションによる１つのメモリ・ロケーションに対する複数の同時更新を防ぐことに加えて、トークン・オペレーションは、ライブロックの回避も支援し、メモリ内のコヒーレンシが維持されることを保証する。さらに、本発明は、後述するように、プロセッサがライブロックしないことを保証するために別の方法も提供する。
【００５１】
トークン・アドレス・オペランドを利用することは、メモリ複製機構が、一連の書き込みオペレーションを開始する前にソース及び宛先アドレスに関してクリア信号を受け取ることを可能にする。一旦メモリ複製機構がトークンからクリア信号を受け取ると、メモリ複製機構は、ネーキッド・キャッシュ・ライン（ＣＬ）書き込み（ＷＲ）オペレーション及びＣＬ読み取り（ＲＤ）オペレーションを送出することによって複製オペレーションを始めることができる。
【００５２】
次に、トークン・オペレーションは受け取ったソース・アドレス及び宛先アドレスから発生され、しかも、トーク・オペレーションは、それぞれのメモリ・ロケーションをアクセスするためのクリア応答を保証するために送出される。ＳＲＣ及びＤＳＴトークン・オペレーションは、リクエストされたメモリ・ロケーションが複製機構にとって使用可能なものである（即ち、他のプロセッサ又はメモリ複製機構等によって現在利用されてない）かどうかを決定するために、及び複製オペレーションが完了するまでその使用可能なアドレスを予約するために、ファブリック上に送出される。一旦ＤＳＴトークン・オペレーション及びＳＲＣトークン・オペレーションがクリアを返送すると、メモリ複製機構は、後述するように、対応するアドレス・スペースへのアクセスを求める他のリクエストをスヌープすることによってその対応するアドレス・スペースを保護し始める。
【００５３】
特に、１つの実施例では、（たとえＳＲＣトークンからクリアを受け取らなくても）一旦、ＤＳＴトークンからの応答が、宛先アドレスが複製オペレーションにとって明らかであることを表すと、複製オペレーションが開始することを許される。この実施例は、データが同じソース・アドレスから同時に得られることを可能にし、従って、同じソース・アドレスに関する複数の同時複製オペレーションを許容する。この実装に対する１つの主要な理由は、伝統的な移動オペレーションとは違って、メモリ複製機構によって制御される複製オペレーションが、詳細に後述されるように、一連のネーキッド・ライト・オペレーションでもって始まるということである。
【００５４】
次に、トークンの利用に基づいてできる可能なデータ調達（datasourcing）オペレーションの一例が示される。この例では、データが得られるソース・アドレスを表すために「Ａ」が利用される。「Ｂ」は、メモリ複製が完了する宛先のアドレスを表し、「Ｏ」は、アドレスＡ又はＢにそれぞれ対応するロケーションＡ又はＢをアクセスしようとしている他のプロセス（例えば、複製オペレーション）に対するメモリ・アドレスを表す。データがＡ又はＢから調達されるとき、データはＡからＯにも同時に調達される。しかし、データ複製が生じているときに可能である他の結合はない。これら他の結合の中には、Ａ対Ｂ及びＯ対Ｂ、Ａ対Ｂ及びＢ対Ｃ、並びに、Ａ対Ｂ及びＯ対Ａがある。各結合において、Ｓは、データが調達されるアドレスであると仮定される。従って、本発明は、複数のメモリ移動が同じメモリ・ロケーションから調達されることを可能にする。しかし、スヌープされたソース・アドレスと宛先アドレスが同じである場合、スヌーパは、どれが最初に受け取られたかに従って、混乱するＳＲＣトークン及びＤＳＴトークンに対する再試行を実行する。
【００５５】
Ｅ．ネーキッド・ライト・オペレーション
（ａ）ネーキッド・ライト
次に図７におけるブロック５２７を参照すると、本発明は、新たなライト（write）オペレーション及びメモリ複製における応答の関連セットを紹介する。このオペレーションは、データ保有権を持たないキャッシュ・ライン・ライトである（そのオペレーションがデータ保有権を含まない、従って、ネーキッド（naked）というアドレス・オンリ・オペレーションであるので、ネーキッド・ライトとも呼ばれる）。ネーキッド・ライトは、データ複製オペレーションを開始するためにメモリ複製機構によって送出され、データが移動すべき宛先メモリ・ロケーションを含むメモリのメモリ・コントローラによって受け取られる。そのメモリ・コントローラはネーキッド・ライトに対する応答を生成し、その応答はメモリ複製機構に返送される。
【００５６】
従って、メモリ複製機構は、移動するデータに対して、ファブリック上に置かれていて宛先バッファ等の割り振りを開始する、データを伴なわない書き込みコマンド（相互交換可能にネーキッド・ライトと呼ばれる）を送出する。メモリ複製機構は、アドレスＢに対応した第１宛先アドレスでもって始まる３２個のネーキッドＣＬライト及び３１個の他の順次ページ・レベル・アドレス拡張子の各々を送出する。ネーキッド・ライト及び関連する応答等のパイプライン化が図５によって示される。
【００５７】
メモリ複製機構は、順次パイプライン化態様でＣＬ ＷＲを送出する。パイプライン化プロセスは、データが直接的にメモリに書き込まれるので、ＤＭＡＣＬ ＷＲ（Ｂ０−Ｂ３１）を供給する。それら３２個のＣＬ ＷＲオペレーションは独立しており、ファブリック上でオーバラップする。
【００５８】
（ｂ）ネーキッドＣＬライトに対する応答
図５は、キャッシュ・ライン（ＣＬ）リード（ＲＤ）及びライト（ＷＲ）オペレーション及びファブリック上で伝送される対応したページ（即ち、Ａ０−Ａ３１及びＢ０−Ｂ３１）のシミュレートされたライン・セグメントを示す。各オペレーションが後述のコヒーレンシ応答を受け取る。図示のように、ネーキッドＣＬライトは、如何なる実際のデータも送られることなく送出される。一旦ネーキッドＣＬＷＲが送出されると、移動するデータを受け入れるためのメモリ・ロケーションＢがフリーであるかどうかを表すコヒーレンシ応答が各ネーキッド・ライトに対して発生される。その応答は、特定の宛先メモリ・ロケーションのメモリ・コントローラが、移動するデータを受け取るためのバッファを割り振ることができるか否かに従って、ヌル又は再試行となるであろう。
【００５９】
図示の実施例では、バッファは、宛先メモリ２０７のメモリ・キャッシュ２１３のキャッシュ・ラインを表す。標準的なメモリ・オペレーションのとき、メモリに送られるデータは、先ず、メモリ・キャッシュ２１３にストアされ、しかる後、物理的メモリ２０７へ移動させられる。従って、メモリ・コントローラは、特定のネーキッドＣＬＷＲオペレーションのメモリ・アドレスに対してデータをストアするために利用される特定のキャッシュ・ラインをチェックする。バッファという用語がキャッシュ・ラインと多少は相互交換可能に利用されるけれども、本発明は、バッファを構成し得る形式上のメモリ・キャッシュ構造なしでも実装され得る。
【００６０】
コヒーレンシ応答がメモリ複製機構に返送される。その応答は、データが（ソース・アドレスのコヒーレンシ・チェック及び使用可能性に従って）その時点で開始し得るかどうかの表示をメモリ複製機構に供給する。メモリ・コントローラがネーキッドＣＬＷＲに対してバッファを割り振ることができるとき、そのバッファが割り振られ、メモリ・コントローラがそのＣＬに対するデータの受け取りを待つ。ヌル／再試行の応答に加えて、宛先ＩＤタグが、図５に示されるように、各ネーキッドＣＬＷＲのために供給される。宛先ＩＤの利用は、図９を参照して説明されるＣＬＲオペレーションに関連して説明される。
【００６１】
Ｆ．アーキテクチャ的に終了した状態
図８は、アーキテクチャ的に終了した状態が生じるプロセス及びアーキテクチャ的に終了した状態に対するプロセッサによる応答を示す。そのプロセスは、ブロック５５１に示されるように開始し、ブロック５５３に示されるように、メモリ複製機構が、実行されたネーキッドＣＬＷＲオペレーションに対するヌル応答を監視する。すべての実行されたネーキッドＣＬ ＷＲがメモリ・コントローラからヌル応答を受け取ったかどうかの決定がブロック５５３において行われる。メモリ・コントローラがすべてのネーキッドＣＬＷＲオペレーションに対するヌル応答を送出してしまったとき、ブロック５５７に示されるように、移動全体が「アーキテクチャ的に終了した」とみなされる。そして、メモリ複製機構は、移動すべきデータがメモリ・サブシステムから完全には読み出されてなくても、データ複製オペレーションが完了したということをリクエスティング・プロセッサに信号する。そこで、ブロック５５９において、プロセスが終了する。プロセッサは、その後の命令（例えば、開示の命令シーケンスでは、ＳＹＮＣに続くＡＤＤ命令）の実行を回復する。
【００６２】
プロセッサ又はメモリ複製機構がデータを受け取っていないので、アーキテクチャ的に終了した状態の実施が可能にされる。即ち、移動すべきデータはプロセッサ・チップ又はメモリ・クリーナに送られる必要がないが、その代わりに、メモリ・ロケーションＡからメモリ・ロケーションＢに直接転送される。システムが、最早、「古い」宛先データをプロセッサに供給しなくなると、プロセッサは、複製オペレーションがアーキテクチャ的に終了したという表示を受け取る。
【００６３】
従って、プロセッサの観点から、いずれかのデータ・ラインが物理的に移動する前であっても（使用可能な帯域幅、データ・セグメントの数、オーバラップした移動の数、スイッチを横切る他のプロセス等に基づいてその物理的移動が完了し得る速さ次第で）、複製オペレーションは完了したように見えるかもしれない。アーキテクチャ的に終了した状態が得られるとき、宛先アドレス・バッファは、すべて、データを受け取るために割り振られてしまい、メモリ複製機構は、宛先アドレスへのデータの移動をトリガする対応した読み取りオペレーションを送出した。システム同期化の観点から、すべてのデータが移動を開始した又は移動を完了したわけではないけれども、プロセッサは、複製オペレーションが完了したことを知らされ、しかも、プロセッサは、プロセッサ実行のＳＹＮＣオペレーションが、複製オペレーションの完了を表すＡＣＫ応答を受け取っているものと仮定する。
【００６４】
アーキテクチャ的に終了した状態の実装における１つの利点は、プロセッサがメモリ待ち時間及びシステム・トポロジに影響されなくされることである。それは、実際のデータ複製オペレーションが完了するまでプロセッサが待つ必要がないためである。従って、データ複製オペレーションに割り振られ、ＡＣＫ応答を受け取るまでその後の命令を処理しないようにされるプロセッサ・リソースは速くリリースされ、データ複製命令がメモリ複製機構に送られた後に最少の遅れでもって他のオペレーションの処理を続けることができる。
【００６５】
（ａ）アーキテクチャ的に終了した状態のレジスタ・ベースのトラッキング
１つの実施例では、受け取ったヌル応答に関するソフトウェア又はハードウェア・レジスタ・ベースのトラッキングが実装される。レジスタは、図２に示されるように、メモリ複製機構２１１内に設けられる。例えば、３２というＣＮＴ値に関して、メモリ複製機構２１１は、３２個のネーキッドＣＬライトのうちのどれがヌル応答を受け取ったかをトラッキングするために３２ビットのソフトウェア・レジスタ３１３を設けられる。図１３は、複製オペレーションが少なくとも部分的に終了したか又はアーキテクチャ的に終了したという表示をメモリ複製機構に供給するために利用される。そのレジスタは、メモリ複製機構によって監視される進行状況表示バーとして作用する。ＳＹＮＣオペレーションを実装する代わりに、メモリ複製機構は、どのヌル応答が受け取られたかを監視／記録するためにレジスタ３１３を利用する。各ビットは、対応して番号付けられたネーキッドＣＬライト・オペレーションに対するヌル応答が受け取られると直ちに「１」にセットされる。図示の実施例によれば、ビット１，２、及び４に関連した宛先メモリ・アドレスに対するネーキッドＣＬライト・オペレーションは、レジスタ３１３の対応するビット・ロケーションに置かれた「１」によって明示されるように、完了している。
【００６６】
図示の実施例では、アーキテクチャ的に終了した状態の決定は、すべてのビットが「１」にセットされているかどうかを知るためにレジスタのビットをスキャンすることによって完了する。別の実装は、レジスタの各ビットに保持された値をＯＲすることを伴なう。この実施例では、メモリ複製機構は、ネーキッド・ライトに対するすべてのヌル応答をＯＲした後に終了状態をプロセッサに信号する。すべてのビット値が１であるとき、アーキテクチャ的に終了した状態が確認され、１つの表示がメモリ複製機構によってリクエスティング・プロセッサに送られる。しかる後、レジスタ３１３全体が０にリセットされる。
【００６７】
図示の実施例では、ネーキッド・ライトのうちのどれがヌル応答を受け取ったかをトラッキングするために、Ｎビット・レジスタが利用される。なお、Ｎは、複製オペレーションのために送出された最大数の書き込みをカバーするように十分に大きい設計パラメータである。しかし、場合によっては、プロセッサは、特定のキャッシュ・ラインがアーキテクチャ的に終了しているかどうかを知ることだけに関係する。これらの場合のために、関係あるキャッシュ・ラインと関連した特定のレジスタだけが読み取られ又はチェックされ、メモリ複製機構は、これらの特定のキャッシュ・ラインがアーキテクチャ的に終了すると直ちにオペレーションを回復するようにプロセッサに信号する。
【００６８】
Ｇ．宛先ＩＤタグによるダイレクト「メモリ・ツー・メモリ」移動
（ａ）読み取りリクエスト
次に図５の説明に戻り且つ図９のフロー・チャートを参照すると、ネーキッド・ライト・オペレーションの後に読み取りオペレーションを実行するプロセスが示される。このプロセスはブロック５７１で始まり、ブロック５７３に示されるように、メモリ複製機構がネーキッドＣＬＷＲに対するヌル応答を監視する。ブロック５７５において、ヌル応答が受け取られたかどうかに関する決定が行われる。各ネーキッドＣＬ ＷＲに対するヌル応答が受け取られるまで、メモリ複製機構は、ヌル応答を受け取ってないすべてのネーキッドＣＬＷＲを再試行する。ブロック５７７に示されるように、メモリ複製機構においてヌル応答が受け取られるとき、移動すべきデータ・セグメントがそのとき存在しているソース・メモリ・ロケーションに対して、対応する（アドレス）ＣＬ読み取りオペレーションが直ちにファブリック上に送出される。例えば、ネーキッドＣＬＷＲ（Ｂ０）に対する受け取られたヌル応答の結果、図５に示されるように、ファブリック上へのＣＬ ＲＤ（Ａ０）の配送が生じる。ソース・メモリ・ロケーションのためのメモリ・コントローラが、ＣＬ読み取りオペレーションによってリクエストされたソース・データに対するソース・メモリ内の特定アドレスの利用可能性（即ち、そのアドレス・ロケーション又はデータが他のプロセスによってそのとき利用されていないかどうか）をチェックする。このチェックの結果、ヌル応答（又は、再試行）が生じる。
【００６９】
１つの実施例では、複製されるデータのソースがＣＬ ＲＤオペレーションにとって使用可能でないとき、そのソースが使用可能になるまで、ＣＬＲＤオペレーションがキューに入れられる。従って、再試行は必要とされない。しかし、ＣＬ ＲＤオペレーションのキューイングではなく再試行を行う実施例に対しては、メモリ複製機構が特定のＣＬＲＤオペレーションを再試行するように信号される。
【００７０】
（ｂ）ファブリックにおける宛先ＩＤタグ
図５に示されるように、ネーキッドＣＬ ＷＲに対するヌル応答と共に、宛先ＩＤタグが宛先メモリのメモリ・コントローラによって送出される。次に、発生された宛先ＩＤタグが、（プロセッサのＩＤではなく或いはプロセッサのＩＤに加えて）ＣＤＲＤオペレーションに付加されるか又はＣＤ ＲＤオペレーション内に挿入可能である。図示の実施例によれば、宛先ＩＤタグが、それぞれのＣＬ ＲＤリクエストと共にファブリック上に置かれる。宛先ＩＤタグは、読み取りオペレーションによってリクエストされたデータが戻されるべきロケーションを識別するためにＣＬＲＤリクエストに与えられるルーティング・タグである。特に、宛先ＩＤタグは、関連するＣＬ ＲＤオペレーションによって移動させられるデータを受け取るためのメモリ・バッファ（ネーキッドＣＬＷＲオペレーションに対して割り振られた）を識別する。
【００７１】
図１２は、ファブリック上に送られる宛先ＩＤタグ７０１（メモリ複製機構・タグ７０３を含む）と共に読み取り及び書き込みアドレス・オペレーション７０５を示す。それら２つは、ファブリック上でオーバラップする複数の複製オペレーションを区別するために利用される。図１２に示されるように、アドレス・オペレーション７０５は、３２ビットのソース（ＳＲＣ）ページ・レベル・アドレス又は宛先（ＤＳＴ）ページ・レベル・アドレス及び追加の１２個の予約ビットを含む。それらの予約は、ページ・レベル・アドレシングを行うためにメモリ複製機構２１１の制御ロジック３０３によって利用される５ビットを含む。
【００７２】
宛先ＩＤタグ７０１がアドレス・オペレーション７０５に関連付けられている。宛先ＩＤタグ７０１は、オペレーションを送出するメモリ複製機構のＩＤ、オペレーションのタイプ（即ち、ＷＲ、ＲＤ、トークンＳＲＣ、又はトークンＤＳＴ）、カウント値（ＣＮＴ）、及びオペレーションの応答／データを送るための宛先ユニットのＩＤを含む。図示のように、書き込みオペレーションが、先ず、図１２のＷＲタグにおいて示されるようにＩＤフィールドにおけるメモリ・クリーナ・アドレスと共に送出される。ＳＲＣアドレスが、図１２のＲＤタグに示されるように宛先実メモリ・アドレスとＲＤオペレーションにおいて置換される。
【００７３】
（ｃ）ダイレクト「ソース・ツー・宛先」移動
リクエスティング・プロセッサ（又は、メモリ複製機構）を介して経路指定される移動ではないダイレクト「メモリ・ツー・メモリ」データ移動を完了するために、メモリ複製機構は、ＣＬＲＤオペレーションのタグにおける物理プロセッサＩＤを宛先メモリ・ロケーションＢ（即ち、宛先ＩＤ）の実メモリ・アドレスと置換する。これは、後述するように、データが（メモリ複製機構によって経路指定される必要なく）メモリ・ロケーションＢに直接送られることを可能にする。
【００７４】
現在のシステムでは、読み取りリクエストを発生するプロセッサ又はプロセッサ・チップのＩＤがその読み取りリクエストに含まれるか又はデータが戻されるべきコンポーネントを識別するための、その読み取りリクエストに対するタグとして供給される。即ち、そのＩＤは、読み取りオペレーションのソースを表し、データが移動する最終的な宛先を表すものではない。
【００７５】
メモリ・コントローラは、宛先タグ内の与えられたロケーションにデータを自動的に経路指定する。従って、現在のシステム関しては、データがプロセッサに送られる。しかし、本願において説明される実施例によれば、経路指定アドレスは最終的な（メモリ）宛先のアドレスであるので、ソース・メモリ・コントローラが必ずデータを宛先メモリに直接経路指定する。データは、ソース・メモリからスイッチを介して宛先メモリに直接転送される。データは、プロセッサ又はメモリ複製機構を介して送られるのではなく、従ってプロセッサからデータ経路指定オペレーションを排除する。特に、データが同じ物理メモリ・ブロック内で移動する実施例では、データが外部のスイッチ・ファブリックに送出されることなく、データ複製が完了し得る。
【００７６】
（ｄ）データ複製オペレーションの完了のトラッキング
１つの実施例では、複製オペレーションが完了するときをメモリ複製機構が知るために、どのキャッシュ・ラインが（如何に多くのデータ部分が）複製オペレーションを完了したかをトラッキングするソフトウェア・イネーブルド（software-enabled）複製完了オペレーションが行われる。アドレスが送出される時とデータがスイッチを介した宛先までそれの経路を作る時との間の不確定時間のために、ロード完了レジスタが、メモリ・ロケーションＢ０．．．Ｂｎにおいて受け取られたデータ部分Ａ０．．．Ａｎの数をカウントするカウンタとして利用される。１つの実施例では、すべてのデータが宛先メモリ・ロケーションへのファブリック上を移動中であることを表すヌル応答を読み取りアドレス・オペレーションがいつ受け取るかに基づいて、メモリ複製機構が実際の移動の完了をトラッキングする。
【００７７】
ソフトウェア・レジスタが利用される別の実施例では、そのレジスタは、等しいビット数をＣＮＴ値として含む。従って、各ビットが、移動すべきデータのページの特定セグメント（又は、ＣＬグラニュール（granule））に対応する。複製完了レジスタは、図３に示されるようなメモリ複製機構のコンポーネント部分であってもよい。複製オペレーションのデータすべてが宛先メモリ・ロケーションに複製されてしまうまでの複製オペレーションの進行をトラッキングするために、複製完了レジスタ３１７が利用される。
【００７８】
Ｈ．コヒーレンシ・プロトコル及びオペレーション
データ複製オペレーションを完了するときの１つの重要な考察事項は、データの最もコヒーレントなコピーを含むメモリ・ロケーション又はキャッシュからデータが調達されなければならないということである。従って、本発明はデータをメモリから直接に調達するものとして説明されるけれども、本発明の実際のアプリケーションは、キャッシュ／メモリ・サブシステムの任意のコヒーレントなロケーションからデータが調達されることを可能にする。メモリ・サブシステムの１つの可能な構成が図１０によって示される。
【００７９】
プロセッサ６１１、６１３及びメモリ・サブシステムの種々のコンポーネントを含むシステム６００のコンポーネントを連結するスイッチ６０３がバックグラウンドとして示される。本願において開示されるように、メモリ・サブシステムは、分散メイン・メモリ６０５、６０７、プロセッサ（Ｌ１）キャッシュ６１５、６１７、介入キャッシュでもよい低レベル（Ｌ２−ＬＮ）キャッシュ６１９、６２１、及び任意の同様のソースを指す。データを移動すべき時、これらのメモリ・コンポーネントのいずれかがそのデータの最もコヒーレントなコピーを含み得る。特に、図２に示されるように、及び上記したように、メモリ・コントローラ６０８は、複製されたデータが移動するメモリ・キャッシュ２１３（本願では、バッファとも呼ばれる）を含む。メモリに送られるデータが先ずメモリ・キャッシュ２１３にストアされ、しかる後、実際の物理メモリ６０７に移動するので、メモリ・キャッシュ２１３が宛先アドレスに対するデータ（即ち、Ｍ状態のデータ）の最もコヒーレントなコピーを含むことはまれなことではない。
【００８０】
或る先進システムでは、外部（ファブリック）バス６６３を介して接続された種々のシステム間でデータが共用される。本願で示されるように、外部メモリ・サブシステム６６１がメモリ・アドレスＣと関連したメモリ・ロケーションを含む。このメモリ・ロケーションにおけるデータは、データ複製オペレーションにおけるソース・データの最もコヒーレントなコピーを表し得る。外部メモリ・サブシステム６６１への接続部６６３は、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を介するものであってもよい。
【００８１】
コヒーレントなデータの調達に関する一般的なコヒーレンシ・プロトコル（例えば、修正（Modified &#8211; Ｍ）、排他的（Exclusive &#8211; Ｅ）、共用（Shared &#8211; Ｓ）、無効（Invalid &#8211; Ｉ）、即ち、ＭＥＳＩプロトコル）が使用可能である。しかし、本願において利用されるコヒーレンシ・プロトコルは、メモリ複製機構がキャッシュ・ラインの所有権を獲得してネーキッドＣＬ  ＷＲオペレーションを完了することを可能にするように、一般的なプロトコルを拡張する。
【００８２】
各下位レベル・キャッシュは、それぞれのキャッシュ・コントローラ６２０、６２２を有する。データが分散メイン・メモリ６０５、６０７以外のロケーション、例えば、下位レベル・キャッシュ６１９から直接調達されるとき、そのキャッシュに対する関連のコントローラ（キャッシュ・コントローラ６２０）が、メモリ・コントローラ６０６、６０８と同じ方法でそのキャッシュ６１９からのデータの転送を制御する。
【００８３】
（ａ）ネーキッド・ライト・オペレーションに対するメモリ・キャッシュ・コントローラ応答
メモリのほかに上位レベル・キャッシュ及び下位レベル・キャッシュを含むメモリ・サブシステムに関して、ソース・アドレス及び宛先アドレスの両方に対するコヒーレントなデータがそれらのキャッシュ間で共用され、いずれのアドレスに対するコヒーレントなデータも、メモリよりもそれらキャッシュの１つに存在し得る。即ち、メモリ・サブシステムは、完全な連想メモリ・サブシステムとして動作する。ソース・アドレスに関して、データは、いつも、最もコヒーレントなメモリ・ロケーションから調達される。しかし、宛先アドレスに関しては、後述するように、コヒーレンシ・オペレーションが標準ＭＥＳＩプロトコルから変化する。
【００８４】
宛先メモリ・ロケーションのメモリ・コントローラがネーキッド・ライト・オペレーションを受け取るとき、メモリ・コントローラは、３つのメイン・スヌープ応答の１つでもってネーキッド・ライトの各々に応答する。種々のネーキッド・ライトに関する個々の応答がメモリ複製機構に送られる。３つのメイン・スヌープ応答は次のような応答を含む：
１．メモリ・キャッシュがＭ状態にあるデータを有するが、Ｉ状態には進むことができず、或いは、メモリ・コントローラがＷＲリクエストを受容することができない／ＷＲリクエストにバッファを割り振ることができないことを表す再試行応答；
２．メモリ・コントローラがＷＲリクエストを受容することができ、すべての対応するキャッシュ・ラインに対するコヒーレンシ状態が直ちにＩ状態に進むことができることを表すヌル応答；
３．メモリ・キャッシュにおけるＣＬのコヒーレンシ状態がＭ状態からＩ状態に遷移したが、メモリ・コントローラがまだＷＲリクエストを受容することができないわけではない（即ち、メモリ・コントローラが、移動するデータを受け取るためのバッファをまだ割り振ることができない）ことを表すＡＣＫ再送応答。
【００８５】
後者の応答（ＡＣＫ再送）は、メモリ複製機構にＣＬデータの保護を開始させる（即ち、キャッシュ・ラインに対するアクセスをリクエストする他のコンポーネントに再試行を送る）結合応答である。キャッシュ・ラインは、後述のように、Ｉ状態に置かれているため、修正されたデータはそのキャッシュ・ラインから失われる。その後、メモリ・コントローラは、適切な読み取りオペレーションが完了するまで予約されているメモリ・キャッシュ内のアドレス・バッファを割り振る。
【００８６】
（ｂ）キャッシュ・ライン無効化及びラインのメモリ複製機構保護
説明している実施例によれば、ネーキッド・ライト・オペレーションは、完全な連想メモリ・サブシステムにおけるすべての対応するキャッシュ・ラインを無効にする。特に、メモリ複製機構がメモリ・キャッシュの修正キャッシュ・ラインをターゲットとするネーキッドＷＲを実行する（即ち、キャッシュ・ラインがＭＥＳＩ又は他の同様のコヒーレンシ・プロトコルのＭ状態にある）ときには、いつも、メモリ・コントローラが、ネーキッド・ライトのスヌーピングに応答して、キャッシュ・ラインのコヒーレンシ状態を無効（Ｉ）状態に更新する。
【００８７】
更に、ネーキッドＷＲは、メモリ・キャッシュによる「再試行／プッシュ」オペレーションを生じさせない。従って、標準的なコヒーレンシ・オペレーションとは違って、ネーキッド・ライト・オペレーションがメモリ・キャッシュにおいて受け取られるとき、修正データがメモリ・キャッシュからメモリに押し出される。ネーキッド・ライトは、直ちに、現在の修正データを無効にする。実際の移動オペレーションの後、複製されたデータのキャッシュ・ラインがＭコヒーレンシ状態を割り当てられ、しかる後、標準的なコヒーレンシ・オペレーションに従って、対応するアドレス・スペースにあるデータに対するその後のリクエストに応答してデータを調達するために利用される。
【００８８】
キャッシュ・ラインが無効にされるとき、メモリ複製機構は、キャッシュ・ラインの保護を開始し、修正スヌーパの役割を果たす。即ち、メモリ複製機構は、あたかもキャッシュ・ラインがＭ状態にあるように、キャッシュ・ラインのすべてのコヒーレンシ保護を完了する責任がある。例えば、図６のブロック５１１に示されるように、複製オペレーションが実際に終了する前にデータが他のプロセスによって必要とされる（例えば、Ａ０にストアされたデータの読み取りがスヌープされる）場合、メモリ・コントローラは、データの物理的移動が実際に完了するまで、そのデータの送出を再試行するか又は遅延させる。従って、他のコンポーネントからのキャッシュ・ラインに対するスヌープされたリクエストは、データが複製されてしまい、キャッシュ・ライン状態がＭに戻るように変化してしまうまで、再試行される。
【００８９】
図１５は、本発明の１つの実施例に従って、メモリ複製オペレーションのためのコヒーレンシ・オペレーションが完了するプロセスを示す。このプロセスは、ブロック８５１で始まり、それに続いて、ブロック８５３に示されるように、メモリ複製機構がネーキッドＣＬＷＲを送出する。図示のプロセスでは、ブロック８５５に示されるように、すべてのスヌーパがネーキッドＣＬ ＷＲをスヌープする。しかる後、ブロック８５７に示されるように、最高のコヒーレンシ状態を持ったスヌーパ（この場合、メモリ・キャッシュ）がキャッシュ・ライン状態を修正（Ｍ）から無効（Ｉ）に変化させる。
【００９０】
特に、一般的なコヒーレンシ・プロトコル・オペレーションとは違って、スヌーパは、データが無効にされる前にそのデータをメモリにプッシュする操作を開始しない。メモリ複製機構がキャッシュ・ラインに対する保護を行う必要があるということを、関連のメモリ・コントローラがメモリ複製機構に信号する。従って、メモリ複製機構がキャッシュ・ラインを保護するタスクを与えられる時、キャッシュ・ラインは、直ちに、Ｉ状態をタグされる。Ｉ状態におけるキャッシュ・ラインに関して、メモリ複製機構は、スヌープ等からのキャッシュ・ラインの保護に対する十分な責任を取る。
【００９１】
図１５の説明に戻ると、ブロック８５９において、キャッシュ・ラインのためのバッファが使用可能であるかどうかの決定が（宛先メモリ・コントローラによって）行われる。バッファが使用可能ではない場合、ブロック８６１において、再試行のスヌープ応答が発生される。しかる後、ブロック８６３において、メモリ複製機構がネーキッドＣＬ  ＷＲを再送する。しかし、バッファが使用可能である場合、メモリ・コントローラは、ブロック８６５に示されるように、スヌープされたネーキッドＣＬ  ＷＲにバッファを割り当てる。
【００９２】
次に、ブロック８６７に示されるように、データ複製プロセスが始まる。ブロック８６９に示されるように、データ複製プロセスが完了するとき、ブロック８７１に示されるように、複製されたデータを保持するキャッシュ・ラインのコヒーレンシ状態がＭに変更される。次に、ブロック８７３に示されるように、プロセスが終了する。１つの実装方法方法では、宛先メモリ・コントローラ（ＭＣ）は、ネーキッドＣＬＷＲにとって使用可能なアドレス・バッファを持たないことがあり、ＭＣがネーキッドＣＬ ＷＲを受容して対応するバッファを割り振ることができるまで、ネーキッドＣＬ ＷＲを再送させるＡＣＫ再送応答を発生する。
【００９３】
（ｃ）ライブロック回避
ライブロックを回避する新規な方法が提供される。この方法は、ネーキッドＷＲがライブロックを回避するために飛行している間、修正キャッシュ・ラインの無効化を必要とする。
【００９４】
図１４は、ネーキッド・ライト及びその後のデータの物理的移動が本発明に従って完了すべきときのロック競合を処理するプロセスを示す。そのプロセスはブロック８２１において始まり、次に、ブロック８２３に進む。ブロック８２３は、プロセッサＰ１がロケーションＡからロケーションＢへのキャッシュ・ライン移動をリクエストすることを表す。Ｐ１及び（又は）Ｐ１によって開始されたプロセスが、ネーキッドＷＲの前のメモリ・ロケーションにおけるロック及びソースからのデータの物理的移動を得る。しかる後、ブロック８２５に示されるように、プロセッサＰ２が宛先アドレス又はソース・アドレスにおけるキャッシュ・ラインへのアクセスをリクエストする。
【００９５】
ブロック８２７において、実際の移動が完了したか（即ち、Ｐ１がロックをリリースし得るか）どうかの決定が（宛先メモリ・コントローラによって）行われる。実際の移動が完了してしまった場合、ブロック８３１に示されるように、Ｐ２はメモリ・ロケーションへのアクセスを与えられ、しかる後、ロックを得ることができる。しかし、移動が依然として進行中である場合、実装される実施例次第で、２つのパスの１つが与えられる。第１の実施例では、ブロック８２９に示されるように、Ｐ１がキャッシュ・ラインにおけるロックを放棄するまで、再試行応答がＰ２リクエストに戻される。
【００９６】
もう１つの実施例では、実際の移動が未だ始まっておらず、リクエストがロケーションＡからのデータの読み取りのためのものである場合、データがロケーションＡから与えられる。これは、再試行を行うのではなく、複数のプロセスが同じソース・ロケーションからデータを調達することを可能にする。しかし、特に、データが移動しているときに宛先アドレスにアクセスすることを求めるリクエストは、そのデータが移動を完了してしまうまで常に再試行される。
【００９７】
Ｉ．多重同時データ移動及びタグ識別子
（ａ）複数メモリ複製機構及び複製オペレーションのオ−バラップ
ネーキッド・ライトを完了し且つＣＬ ＲＤにタグを割り当てるための方法に対する１つの主要な利点は、複数の複製オペレーションが多数のメモリ複製機構を介してシステム上に実装可能であることである。従って、本発明は、複数の独立したメモリ複製機構を可能にし、それによって、それらメモリ複製機構の各々が、ファブリック上で別のメモリ複製機構における別のデータ複製オペレーションとオーバラップするデータ複製オペレーションを遂行し得るようにするものである。特に、ロック（又は、ロック獲得）を必要としないメモリ複製機構のオペレーションは、これらの複数のメモリ複製機構が同時複製オペレーションを送出することを可能にする。
【００９８】
本実施例では、１チップ当たり１つのメモリ複製機構しか設けられず、その結果、各チップから一時に１つの複製オペレーションを完了するだけである。複数のプロセッサ・チップが単一のメモリ複製機構を共用するという別の実施例では、メモリ複製機構は、どのプロセッサが所与の時間にアクセスを与えられるかを決定するためのアービトレーション・ロジックを含む。アービトレーション・ロジックは、複数のメモリ移動オペレーションを、プロセッサから受け取った順序で完了するように保持することができるＦＩＦＯキューと置換可能である。別の実施例は、１プロセッサ・チップ当たりのメモリ複製機構の細分度（granularity）を高め得るし、１チップ当たりの複数のメモリ複製オペレーションを可能にする。この場合、各複製オペレーションは別々のメモリ複製機構によって制御される。
【００９９】
本発明は、複数のメモリ複製機構が同時に動作することを可能にする。メモリ複製機構は、トークン・オペレーションを介して相互にコミュニケーションを行い、各メモリ複製機構は、他のメモリ複製機構にそれの複製オペレーションのソース及び宛先アドレスを知らせる。第１のメモリ複製機構の宛先が、既にデータ複製オペレーションを行っている第２のメモリ複製機構のソース・アドレスと同じアドレスである場合、第１のメモリ複製機構は、第２のメモリ複製機構がそれの実際のデータ移動を完了するまで、複製オペレーションを遅らせる。
【０１００】
（ｂ）宛先ＩＤ及び追加タグを介した複数複製オペレーションの識別
ダイレクト「ソース・ツー・宛先」複製オペレーションを可能にすることに加えて、複数の複製オペレーションからのデータがオーバラップするか又は同時に完了するとき、ファブリックにおけるデータ保有権を一意的に識別するためにも、宛先ＩＤタグが利用される。単一の複製オペレーションからデータだけがいずれかの宛先メモリ・アドレスに一時に送られることがあるので、各宛先ＩＤは必ず一意的である。
【０１０１】
別の実装方法では、図１２のデータ・タグ７０１のデータ・ルーティング・セクションに追加のビット・セットが付加される。これらのビット（又は、複製ＩＤタグ）７０３は、特定の複製オペレーションからデータを一意的に識別し、（又は）その複製オペレーションと関連したメモリ複製機構を識別する。従って、追加ビットの実際の数は、システム設計者が希望する特定の実装方法に基づく。例えば、２つのメモリ複製機構しか持たない最も単純な実装方法では、第１複製オペレーションのデータ（第１メモリ複製機構に関連した）と第２複製オペレーションのデータ（第２メモリ複製機構に関連した）とを区別するために、単一のビットが利用可能である。
【０１０２】
明らかに、種々のデータ・ルーティング・オペレーションの識別のために少数のビットしか利用されないとき、複製ＩＤタグ７０３は、利用される各タグが一意的である場合に生じ得る同時複製オペレーションの数を厳しく制限する。
【０１０３】
（ｃ）宛先ＩＤ及び複製ＩＤタグの結合
種々の複製オペレーション／データを一意的に識別するもう１つの方法は、宛先ＩＤ及び複製ＩＤタグの結合を利用することによるものである。この実装に関しては、特定の複製オペレーションのための宛先ＩＤが（後述のコヒーレンシ及びロック競合問題のために）他の未処理の複製オペレーションに対する宛先ＩＤとは同じであり得ないので、複製ＩＤタグのサイズが比較的小さいことがあり得る。
【０１０４】
図１２に示されるように、タグが個々のデータ複製オペレーションに関連付けられる（リンクされる、付加される、又は別の状態にされる）。従って、第１データ複製オペレーションが１つのページからの１２個の個々のキャッシュ・ラインのデータ移動を伴なう場合、１２個のデータ複製オペレーションの各々が同じタグを与えられる。２０個のデータ・セグメントの移動を伴なう同時複製オペレーションも、第１複製オペレーション等のタグとは異なる第２のタグをタグ付けされた各データ移動オペレーションを有する。
【０１０５】
（ｄ）再使用可能なタグ識別子
メモリ複製機構によって利用された個々のキャッシュ・ライン・アドレスは、アドレス・フィールドにおける１２個の予約ビットのうちの最初の５ビットによって決定される。１２個の予約ビットがあるので、更に小さい又は大きい数のアドレスが可能である。１つの実施例では、タグを設けるために他の予約ビットが利用される。従って、本発明は別個の複製タグ識別子と関連して説明されたけれども、アドレス・フィールドの上位桁ビットが宛先ＩＤに割り当てられる場合、上記の特徴は、下位桁の予約ビットによって容易に与えられ得る。
【０１０６】
１つの実施例では、大きな数のメモリ複製オペレーション（例えば、大規模なマルチプロセッサ・システムにおける）を容易にするためには、前のデータが最早ファブリック上に経路指定されない場合、複製ＩＤタグ７０３が再使用される。１つの実施例では、タグの再使用は、データ移動が取り得る最大のインターバルを得るよう十分にタグを大きくすることによって達成される。
【０１０７】
図示の実施例では、再使用可能なビット・シーケンスとしてタグが設計され、タグ使用中の如何なるタグ衝突（tag collision）も回避するに必要な最少のビット数が選択される（即ち、設計パラメータとして決定される）。その決定は、プロセッサの数、オーバラップする複製オペレーションのおおよその数、及び完了すべき複製オペレーションの時間長を考慮することを伴なう。タグは順次割り当てられ、シーケンスにおける最後のタグが割り当てられるとき、第１タグが次の実行される複製オペレーションに割り当てられるようにフリーでなければならない。従って、第１の実行されたタグがリタイヤ（retire）されると（即ち、関連のデータ複製オペレーションが完了すると）直ちにタグ番号付けが再開するように、タグ・リタイヤメント（tagretirement）及び再使用のプロセスが１つのシステム・レベルにおいて実装される。
【０１０８】
別の実施例は、すべての複製オペレーション又はメモリ複製機構が一意的な数を割り当てられることによって、可能な最大数の同時複製オペレーションをカバーするに必要な数のビットを含む複製ＩＤタグを提供する。いずれの実施例にとっても、複製ＩＤタグのオーバラップは生じない。
【０１０９】
タグを再使用すべき時を含むタグ割り振り解除（tagdeallocation）を保証するための幾つかの可能な方法が使用され得る。１つの実施例では、タグが割り振り解除され、再使用され得ることを保証するための確認が必要である。データ複製オペレーションが完了すると直ちに、割り振り解除の確認が宛先メモリ・コントローラからメモリ複製機構によって受け取られる。
【０１１０】
（ｅ）タブ・ベースの衝突に対する再試行
１つの実施例はタグ・ベースの衝突に対する再試行の概念を導入する。この実施例によれば、タグは再使用可能であり、一意的である必要はない。従って、タグ「００１」を有する第１複製オペレーションは、依然として、その後の複製オペレーションがそのタグ番号を割り当てられるとき、完了することが可能である。これが生じるとき、第１複製オペレーションを所有する第１メモリ複製機構は、その後の複製オペレーションに対するタグの割り当てをスヌープする（又は、その割り当てに対する信号を受ける）。そこで、第１メモリ複製機構は、その後のメモリ複製機構・オペレーションを所有する第２メモリ複製機構のネーキッド・ライト・オペレーションに対するタグ・ベースの再試行を実行する。第１複製オペレーションが完了する（即ち、データが移動してしまう）まで、その後の複製オペレーションが次のメモリ複製機構によって遅らせられる。
【０１１１】
Ｊ．設計済みビット及びＳＴ複製オペレーション
ほとんどの現在のプロセッサは、ファブリックにおける命令の実行を遅らせる（hold up）外部割込みによって動作する。外部割込みの特徴は、オペレーティング・システム（ＯＳ）によってセットされるハードウェア・ビットによって行われる。ＯＳは、アサートされた（asserted）又はアサート解除された（de-asserted）割り込みビットでもってプロセッサの動作状態をセットする。アサートされるとき、割り込みが命令ストリームの実行中の任意の時間に生じ得るし、プロセッサ又はアプリケーションのいずれも、割り込みが生じたときに如何なる制御も行わない。
【０１１２】
外部割込み中の制御の欠如は、外部ファブリックにおける移動オペレーション時の考察事項である。特に、移動オペレーションは、プロセッサが一連の命令（例えば、６個の連続した命令）を実行することを必要とする。その命令シーケンスの実行時に割り込みを生じさせることなく移動オペレーションが完了するためには、プロセッサは、移動オペレーションを遂行する一連の命令を送出する前にファブリックにおけるロックを確保しなければならない。これは、ロックが１つのリクエスティング・プロセッサにしか与えられ得ないので、１つのプロセッサだけが移動オペレーションを実行し得ることを意味する。
【０１１３】
本発明の１つの実施例によれば、外部割込み（ＥＥ）ビットのアサーション（assertion）及びアサーション解除（de-assertion）を可能にする特徴が、割り込みビットがプロセッサにおいて実行されるソフトウェアによってアサート又はアサート解除されることを可能にするように修正される。即ち、命令のシーケンスが割り込みを受けることなくプロセッサが特定のシーケンスを実行することを可能にするために、外部割込み（ＥＥ）ビットをトグルできる特別の命令でもってアプリケーションがコード化される。
【０１１４】
ＥＥビットをアサート解除することは、命令のシーケンスを送出する前に、プロセッサが外部ファブリックにおけるロックを確保する必要がないようにする。その結果、複数のプロセッサが、それらの個々の命令シ−ケンスを同時に送出することができる。この特徴は、これがデータ複製オペレーションに適用されるとき、マルチプロセッサ・システムにおける複数のプロセッサが、それぞれロックを得ることを必要とせずに複製オペレーションを同時に実行することを可能にする。更に、この特徴は、プロセッサがデータ複製オペレーションを完了する必要があるときにいつも各プロセッサがデータ複製を始めることを可能にする。更に、後述するように、割り込みなしで命令を実行することは、メモリ複製機構がパイプライン態様で一連の命令を実行することを可能にする。
【０１１５】
図示の実施例では、割り込みを含むよう又は割り込みを含まないようプロセッサの動作状態を動的に切り替えるために、設計済みのＥＥ（外部割込み）ビットが利用される。複製オペレーションを構成する命令のシーケンスは、これらの命令相互間で割り込みを行うことなくファブリックにおいて実行される。アプリケーション内のプログラム・コードが外部割込みを動的にディセーブル及びイネーブルするようにＥＥビットをトグルする。ＯＳが選択した割り込み状態が、特定の命令シーケンスに対してアプリケーション・ソフトウェアによりオーバライド（over-ride）される。本実施例によれば、ＥＥビットは、プロセッサにおいて実行中のアプリケーションによって１又は０にセットされ得る。なお、各値は、プロセッサの設計及びＥＥビットと関連したソフトウェア・コード化値に依存した特定の割り込み状態に対応する。
【０１１６】
従って、本発明は、外部割り込みがディセーブルされるとき、複数の命令の実行を可能にするソフトウェア・プログラミング・モデルを提供する。本実施例に関して、移動又は複製オペレーションを完了する命令のシーケンスは、次のような例示コード・シーケンスによって示されるように、ＥＥビットをアサート解除するための命令によって先行される：
ＥＥビット＝０
ＳＴ Ａ
ＳＴ Ｂ
ＳＴ ＣＮＴ
ＥＥビット＝１
ＳＹＮＣ
【０１１７】
上記の実施例では、ＥＥビットが０の値を有するとき、外部割込みはオフに転換される。命令は、プロセッサからメモリ複製機構までパイプライン化される。しかる後、ＥＥビットの値は１に変更され、それは、プロセッサ状態が、外部割込みを可能にする割り込みイネーブル状態に戻ることを表す。しかる後、ＳＹＮＣオペレーションがファブリック上に送出される。
【０１１８】
（ａ）ＳＴ複製オペレーション
１つの実施例では、メモリ複製機構（又は、プロセッサ）が上記の命令シーケンスを、複製オペレーションを表すものとして認識し、外部割り込みがその命令シーケンスに割り込みを行わないようにＥＥビットをセットする。別の実施例では、上記命令シーケンスは、メモリ複製機構により、結合アトミック・ストレージ・オペレーションとして受け取られる。その結合オペレーションは、本願では、ストア（ＳＴ）複製と呼ばれ、３つの個別のストア・オペレーション及びＳＹＮＣオペレーションの上記シーケンスを単一のＳＴ複製オペレーションと置換する。
【０１１９】
ＳＴ複製は、メモリ複製機構に複製オペレーションを開始させるマルチバイト・ストレージ・オペレーションである。ＥＥビットをセットすることは、メモリ複製機構がＳＹＮＣに先行する上記ストア命令のシーケンスをＳＴ複製オペレーションと置換することを可能にする。
【０１２０】
従って、４つの個々のオペレーション（即ち、３つのストアに後続するＳＹＮＣ）が単一のＳＴ複製オペレーションと置換され得る。更に、本発明のこの実施例によれば、アーキテクチャ的に終了した状態がメモリ複製機構によって検出されると、プロセッサはデータ複製オペレーションが完了したことを信号されるので、ＳＹＮＣオペレーションはバーチャルである。アーキテクチャ的に終了した状態は、あたかも実行されたＳＹＮＣがメモリ複製オペレーションに続いてＡＣＫ応答を受け取ったが如くプロセッサを行動させる。
【０１２１】
Ｋ．予約ビットによる仮想／実アドレス動作モード
本発明は、処理ユニットのための仮想又は実アドレシング機能に関するアプリケーション・ベースの動的選択を可能にする。メモリにおけるデータのロケーションに影響を与え得る各命令（例えば、ＳＴ命令）において、プロセッサの動作モードを仮想アドレシング・モード又は実アドレシング・モードとして選択するために、ソフトウェア・アプリケーション（即ち、ＯＳではない）によってセット可能な予約（又は、リザーブ）ビットが与えられる。図１６は予約ビット９０１を伴なうアドレス・オペレーション９００を示す。予約ビット９０１は、プロセッサ上で実行されるソフトウェア・アプリケーションによって動的にセット可能である。プロセッサの動作モードは、そのプロセッサにおいて実行されているアプリケーション・プログラムによって与えられるコードに依存して仮想アドレシング・モードから実アドレシング・モードに及びその逆に変化する。
【０１２２】
予約ビット９０１は、実アドレシング又は仮想アドレシングのどちらが望ましいかを表示する。その予約ビットは、プロセッサにおいて実行中のソフトウェア・アプリケーションによって１つの値（１又は０）を割り当てられる。仮想アドレシングを表すために「０」のデフォルト値を利用することが可能であり、実アドレシング・モードが必要であるとき、ソフトウェアがその値を「１」に動的に変更することが可能である。プロセッサは、特定のアドレス・オペレーションに対してどちらの動作モードが必要であるかを決定するために、予約ビットの値を読み取る。
【０１２３】
仮想アドレシング・モード又は実アドレシング・モードの選択は、プロセッサによって実行されつつある特定のアプリケーション・プロセスによって決定可能である。アプリケーション・プロセスがデータの保護よりもむしろパフォーマンスを高められたシークを必要とするとき、アプリケーション・プロセスが有効アドレスをＯＳ及びファームウェアに直接に送ることを可能にする仮想動作モードが選択される。
【０１２４】
図１７は、典型的なソフトウェア環境及びアドレス・オペレーションのための関連デフォルト動作モードに関するソフトウェア層の図を示す。図示のように、ソフトウェア・アプリケーション９１１は仮想アドレシング・モードで動作し、一方、ＯＳ９１３及びファームウェア９１５は実アドレシング・モードで動作する。パフォーマンスの増加をもたらすモードの選択は、予約ビットを仮想アドレシング・モードに対する事前設定された値にセットすることによって達成される。同様に、データ保護が望ましいとき、予約ビットが、仮想アドレシング・モードを表す値にセットされ、仮想データ・アドレスがメモリ複製機構２１１に送られる。そこのＴＬＢ３１９が、その後、対応する実アドレスを提供する。従って、本発明は、パフォーマンス対データ保護に関するソフトウェア指向の平衡化を可能にする。
【０１２５】
仮想アドレシング・モードにおけるプロセッサ・オペレーションは、メモリ複製機構２１１の仮想・実アドレス変換ルックアサイド・バッファ（ＴＬＢ）によってサポートされる。ＴＬＢは、メモリ複製機構オペレーションがプロセッサからの仮想アドレスを受け取るとき、仮想アドレスから実アドレス（又は、物理アドレス）にアドレスを変換するために利用される。そこで、仮想アドレスは、ファブリック上に送出される前に実アドレスに変換される。ＯＳの観点から、仮想アドレシング・モードはユーザ・レベル特権を可能にし、一方、実アドレシング・モードはそれを可能にするものではない。従って、仮想アドレシング・モードは、データがユーザ・レベル・アプリケーションによって及びＯＳによってアクセスされることを可能にする。更に、仮想アドレシング・モードは、オペレーティング・システム（ＯＳ）及びユーザ・レベル・アプリケーションがメモリ複製機構をアクセスすることを可能にする。実アドレス動作モードは、命令がプロセッサから発生されると直ちにはアドレス変換の必要はないので、より速いパフォーマンスを可能にする。
【０１２６】
Ｌ．追加の特徴、概観、及び利点
データ移動オペレーションのターゲットであるデータは、実メモリ、プロセッサ・キャッシュ、低レベル・キャッシュ、介入キャッシュ等の間の最もコヒーレントなメモリ・ロケーションから調達される。従って、ソース・アドレスは、リクエストされたデータのコヒーレント・コピーを含むメモリ・サブシステムにおける正しいメモリ・モジュールを表す。
【０１２７】
本発明は、複数の複製オペレーションがファブリック上でオーバラップする（又は、同時に実行される）ことを可能にする。各個別の複製オペレーションが完了したことを監視及び一意的に判別するために、ソース・アドレスに送られた読み取りオペレーションのアドレス・タグに付加されるタグが与えられる。タグはＭビット・レジスタにストア可能である。なお、各複製オペレーションはそのレジスタに異なる値を入れられ、Ｍはそのシステムにおける可能な最大数の同時複製オペレーションをサポートするために選択された設計パラメータである。
【０１２８】
上述のように、ネーキッドＷＲプロセスが完了すると、直ちに移動がアーキテクチャ的に終了する。アーキテクチャ的に終了した状態及び他の関連する特徴の実装は、プロセッサをデータ移動オペレーションから比較的速くリリースする。メモリ移動に関連した待ち時間のかなりの部分を表すデータの物理的移動はすべてバックグラウンドにおいて生じる。プロセッサは、命令シーケンスにおけるＳＹＮＣに続く命令の処理をかなり速く再開することができる。それは、アーキテクチャ的に終了した状態を生成するネーキッド・ライト・プロセスにデータ伝送フェーズが含まれないためである。
【０１２９】
特に、データが同じメモリ・モジュールにおけるアドレス相互間で移動する場合、データが外部スイッチ・ファブリック上を伝送される必要がないので、時間的利点が更に明白である。そのような「内部」メモリ移動は、メモリ・モジュールの種々のサブ・コンポーネント（例えば、コントローラ等）を相互接続するメモリ・チップ上の上部層によって促進される。メモリ・モジュールのそのような構成が図１１に与えられる。従って、種々のモジュール相互間で実行する内部接続が存在するスイッチ実装では、メモリ・モジュール６０５の上部層金属６５１を介しても、ダイレクト内部データ・クローニングが可能である。
【０１３０】
本発明は、
（１）移動したデータが伝統的なプロセッサ開始の移動のようにキャッシュ（Ｌ２、Ｌ３等）をロールしない；
（２）アーキテクチャ的に終了したプロセッサ状態のために、実行中のソフトウェア・アプリケーションも極めて早く完了する；
ことを含む幾つかの他の識別可能な利点を提供する。例えば、従来技術では、１２８Ｂ ＣＬ移動（ＬＤ／ＳＴ）が、ＬＤ／ＳＴ：１ＣＬＲＤｘ（アドレス及びデータ）、３２ＣＬ ＷＲｙ（アドレス及びデータ）、３２ＣＬ ＷＲｙ（アドレス及びデータ）として実行される。このオペレーションは、３つのアドレス・オペレーション及び３８４バイトのデータ・トランザクションに有効である。しかし、本発明に関しては、同じプロセスが１つのネーキッドＣＬＷＲｙ（アドレスのみ）及び１つのＣＬ ＲＤｘ（アドレスのみ）バス・トランザクションによって完了する。従って、大きなパフォーマンス・ゲインが得られる。
【０１３１】
本発明は、分散メモリ構成を有するスイッチ・ベースのマルチプロセッサ・システムの現在使用可能な幾つかの特徴／オペレーションを活用して、プロセッサの立場から、データの移動における大きな有効性を提供する。例えば、伝統的に、ＭＣは、メモリ（キャッシュ・ライン）からのデータを実際にプロセッサに送ること及びプロセッサから受け取ることを制御する。ＭＣは、アドレス及びソースＩＤを与えられ、これら２つのパラメータを利用して、リクエストされたデータを送出する。キャッシュ・ライン読み取りに関連したアドレス・タグにおける宛先ＩＤでもってソースＩＤを置換することにより、本発明は、伝統的なＭＣロジック及び（又は）機能に対する変更を必要とすることなく、データが移動するダイレクト「ＭＣツーＭＣ（ＭＣ-to-ＭＣ）」伝送（即ち、送信及び受信すること）を可能にする。
【０１３２】
スイッチは、複数のメモリ複製オペレーションが同時に生じることも可能にする。その結果、更に、メモリ・キュー／バッファの効率的な利用が可能になる。ダイレクト・スイッチ接続に関して、データの移動に伴なう時間は、メモリ複製オペレーションの量に従属した距離でもカウントでもない。
【０１３３】
本発明は、ハードウェアの仮想化及び幾つかのソフトウェア制御された特徴によって、アクセラレータ・エンジンを備えた現在のプロセッサにおけるハードウェア・ベースの移動オペレーションを改良する。即ち、移動オペレーションを完了するために伝統的に割り当てられたハードウェア・コンポーネントを実際に利用することなく、ハードウェア・モデルのパフォーマンス上の利益が得られ且つ改良される。
【０１３４】
もう１つの例は、移動するキャッシュ・ラインが、最早、単一のポイントを通る（即ち、伝統的に、移動するすべてのデータを受け取り、しかる後、それを送出する単一のプロセッサ・チップに入力しそしてそのプロセッサ・チップから出力する）必要がないので、ファブリック上のより速いデータ移動を可能にする。更に、実際のデータ移動は、単一の収集ポイントに送ることを必要としないので、（複数の）キャッシュ・ラインの並行移動を可能にするためのスイッチが利用され、その結果、より高い帯域幅へのアクセス及びその後のすべての物理的移動を遥かに速く完了することを可能にする。従来のシステムは、一時に単一の移動しか完了することができない。
【０１３５】
本発明は、更に、バイト、キャッシュ・ライン、及びページの移動を可能にする。移動が実際に生じるときに対する実際の時間は与えられないけれども、この情報はメモリ複製機構によってトラッキングされ、プロセッサ・システムのコヒーレンシが維持される。プロセッサ・リソースは、データが或るメモリ・ロケーションから別のメモリ・ロケーションに移動するまで待たずに更なるタスクを完了するためにフリーである。というのは、特に、この移動は、実際の移動が完了しつつあるとき、実装された如何なる他のプロセスにも影響を与えないためである。
【０１３６】
特定の実施例に関連して本発明を説明したけれども、この説明は限定的な意味で解釈されてはならない。本発明の開示された実施例及び別の実施例に関する種々の修正は、本発明の説明を参照すれば当業者には明らかになるであろう。従って、特許請求の範囲において定義された本発明の精神及び範囲から逸脱することなくそのような修正が行われ得ることは明らかである。
【０１３７】
まとめとして、本発明の構成に関して以下の事項を開示する。
【０１３８】
（１）第１のメモリ複製機構を有する第１のプロセッサと、
第２のメモリ複製機構を有する第２のプロセッサと、
メモリ・サブシステムと、
前記第１及び第２のプロセッサと前記メモリ・サブシステムとを相互接続するための手段と、
データ複製オペレーションの前に、前記第１のメモリ複製機構及び前記第２のメモリ複製機構のうちの特定のメモリ複製機構から送出される複数のトークン・オペレーションと、
を含み、
前記トークン・オペレーションは、前記特定のメモリ複製機構から生じるデータ複製オペレーションのためのソース・アドレス及び宛先アドレスをリザーブする、マルチプロセッサ・データ処理システム。
（２）前記トークン・オペレーションは、
複製オペレーションのデータが調達されるメモリ・アドレスを含むソース・トークンと、
複製オペレーションのデータが送られるメモリ・アドレスを含む宛先トークンと、
を含む、請求項１に記載のマルチプロセッサ・データ処理システム。
（３）前記ソース・トークン及び前記宛先トークンの各々は、単に前記データ処理システムのファブリックにおけるアドレス・オンリ保有権である、請求項２に記載のマルチプロセッサ・データ処理システム。
（４）前記ソース・トークン及び前記宛先トークンは、それぞれのソース及び宛先アドレスが他の複製オペレーションを行うために他のメモリ複製機構によって利用されるかどうかを決定するためにそれぞれのソース及び宛先アドレスを照会する、請求項２に記載のマルチプロセッサ・データ処理システム。
（５）前記メモリ複製機構内にあって、データ複製オペレーションを開始する前に、前記データ処理システムのファブリック上に前記ソース・トークン及び前記宛先トークンを送出するための手段を更に含む、請求項４に記載のマルチプロセッサ・データ処理システム。
（６）前記ソース・トークン及び前記宛先トークンは、前記ソース・トークン及び前記宛先トークンを送出したメモリ複製機構にメモリ・アドレスの使用可能性に関する表示を返送する、請求項５に記載のマルチプロセッサ・データ処理システム。
（７）前記メモリ複製機構内にあって、前記表示がヌル応答であるときにデータ複製オペレーションを開始するためのリクエストを送出するための手段を更に含み、
前記ヌル応答は、現在、他のメモリ複製機構がそれぞれのソース及び宛先アドレスを利用しようとしていないことを表す、請求項６に記載のマルチプロセッサ・データ処理システム。
（８）前記データ複製オペレーションを開始することは、現在、前記宛先アドレスを他のプロセスが利用しようとしていないと直ちにネーキッド・ライト・リクエストを送出し、それによって、複数の複製オペレーションのためのデータが同じソース・アドレスから調達される、請求項５に記載のマルチプロセッサ・データ処理システム。
（９）前記メモリ複製機構内にあって、他のメモリ複製機構から送出された各ソース及び宛先トークンをスヌープするための手段と、
前記スヌープに対して応答を供給するための手段と、
を更に含む、請求項６に記載のマルチプロセッサ・データ処理システム。
（１０）前記応答を供給するための手段は、
前記ソース・トークン及び宛先トークンの前記ソース・アドレス及び宛先アドレスと未だ完了していないデータ複製オペレーションのソース・アドレス及び宛先アドレスとを比較するための手段と、
スヌープされた宛先アドレスが、未だ完了していないデータ複製オペレーションのソース・アドレス又は宛先アドレスと同じであるとき、再試行応答を供給するための手段と、
を含む、請求項９に記載のマルチプロセッサ・データ処理システム。
（１１）マルチプロセッサ・データ処理システムのファブリックにおける複数の同時複製オペレーション時のライブロックを回避するための、前記データ処理システムにおける方法であって、
データ複製オペレーションを開始する前に、前記データ複製オペレーションを完了するために必要なソース・アドレス及び宛先アドレスの使用可能性をチェックするトークン・オペレーションを前記ファブリック上に送出するステップと、
現在、他のデータ複製オペレーションが前記ソース及び宛先アドレスを利用しようとしていないことを表す応答を前記トークン・オペレーションが供給するときだけ前記データ複製オペレーションを開始するステップと、
を含む方法。
（１２）前記送出するステップは、
データ複製オペレーションのデータが調達されるメモリ・アドレスを含むソース・トークンを送出するステップと、
データ複製オペレーションが送られるメモリ・アドレスを含む宛先トークンを送出するステップと、
を含む、請求項１１に記載の方法。
（１３）前記送出するステップにおける前記ソース・トークン及び前記宛先トークンがファブリックにおいて保有権を与える、請求項１１に記載の方法。
（１４）更に、前記ファブリックにおける前記トーク・オペレーションをスヌープするステップを含む、請求項１１に記載の方法。
（１５）スヌープされたトークン・オペレーションのソース・アドレス及び宛先アドレスと現在実装されることになっている第２のデータ複製オペレーションの第２のソース・アドレス及び第２の宛先アドレスとを比較するステップと、
前記スヌープされたトークン・オペレーションに応答を供給するステップと、
を更に含む、請求項１４に記載の方法。
（１６）前記供給するステップは、スヌープされた宛先トークンの宛先アドレスが第２のデータ複製オペレーションの第２のソース・アドレス又は第２の宛先アドレスと同じであるときに再試行応答を供給するステップを含む、請求項１５に記載の方法。
（１７）前記開始するステップは、宛先トークン・オペレーションが宛先アドレスの使用可能性を表すと直ちに前記データ複製オペレーションを含み、
複数の複製オペレーションに対するデータが同じソース・アドレスから調達される、
請求項１２に記載の方法。
【図面の簡単な説明】
【０１３９】
【図１】従来技術に従ってデータを移動させるために利用されるハードウェア・エンジンを持ったマルチプロセッサ・データ処理システムを示すブロック図である。
【図２】本発明の１つの実施例に従って、メモリ複製機構を含めて構成された処理システムにおける例示的な「メモリ・ツー・メモリ」複製オペレーションを示すブロック図である。
【図３】本発明の１つの実施例に従って、図２におけるメモリ複製機構のコンポーネントを示すブロック図である。
【図４】本発明の１つの実施例に従って、メモリ複製オペレーションに対するソース・アドレス及び宛先アドレスをストアするために利用される、メイン・メモリにおけるメモリ・ロケーションＸ及びＹを表すブロック図である。
【図５】本発明の１つの実施例に従って、図２におけるデータ処理システムの（スイッチ）ファブリック上の、ネーキッド・ライトを含むメモリ・アドレス・オペランド及びタグのフローを示す図である。
【図６】本発明の例示的な実施例に従って動作するように構成されたデータ処理システムにおいてデータを複製する一般的なプロセスを示すフロー・チャートである。
【図７】本発明の１つの実装に従って、データ複製オペレーション中にネーキッド・ライトを送出するプロセスを示すフロー・チャートである。
【図８】本発明の１つの実施例に従って、アーキテクチャ的に終了した状態に先行するプロセス・ステップ及び後続するプロセス・ステップを示すフロー・チャートである。
【図９】本発明の１つの実施例に従って、読み取りオペレーションを送出することによってデータを物理的に移動させる読み取りオペレーションを送出するプロセスを示すフロー・チャートである。
【図１０】本発明の実装時にデータをコヒーレントにソーシング／ストアするための１つのモデルに従って、メイン・メモリ、幾つかのレベルのキャッシュ、及び外部システム・メモリを有する分散メモリ・サブシステムを示す図である。
【図１１】外部スイッチを利用することなく同じメモリ・モジュール内のソースから宛先へのデータのダイレクト・クローニングを容易にする上層金属を有するメモリ・モジュールを示す図である。
【図１２】本発明の１つの実施例に従って、正しい宛先メモリに複数の同時データ複製オペレーションを指示するために利用されるアドレス・タグのブロック表示を示す図である。
【図１３】本発明の１つの実施例に従ってネーキッド・ライトが完了し且つアーキテクチャ的に終了した状態が生じるとき、トラッキングするためにメモリ複製機構によって利用されるレジスタのブロック表示を示す図である。
【図１４】本発明の１つの実施例に従って動作するデータ処理システムにおけるロック競合のプロセスを示すフロー・チャートである。
【図１５】本発明の１つの実施例に従って、データ複製オペレーションの間データ・コヒーレンシを維持するプロセスを示すフロー・チャートである。
【図１６】本発明の１つの実施例に従って、命令のプロセッサ実行が実アドレシング・モード又は仮想アドレシング・モードのどちらで生じるかを表すためにソフトウェアによってトグルされる付加のモード・ビットを有する命令を示す図である。
【図１７】本発明の１つの実施例に従って、データ処理システムのアプリケーション・コード層、ＯＳ層、及びファームウェア層、並びに各層によりサポートされる関連のタイプのアドレス・オペレーションを示す図である。
【符号の説明】
【０１４０】
２００  データ処理システム
２０１Ａ、２０１Ｄ  プロセッサ・チップ
２０３  スイッチ
２０５、２０７  メモリ
２０６、２０８  メモリ・コントローラ
２０９、２１０  メモリ・ロケーション
２１１  メモリ複製機構
２１３  メモリ・キャッシュ
【図１】
2004185610.tif 000003
【図２】
2004185610.tif 000004
【図３】
2004185610.tif 000005
【図４】
2004185610.tif 000006
【図５】
2004185610.tif 000007
【図６】
2004185610.tif 000008
【図７】
2004185610.tif 000009
【図８】
2004185610.tif 000010
【図９】
2004185610.tif 000011
【図１０】
2004185610.tif 000012
【図１１】
2004185610.tif 000013
【図１２】
2004185610.tif 000014
【図１３】
2004185610.tif 000015
【図１４】
2004185610.tif 000016
【図１５】
2004185610.tif 000017
【図１６】
2004185610.tif 000018
【図１７】
2004185610.tif 000019