JP2004185610A - メモリ複製オペレーション時の不正確なキャッシュ・ライン保護機構 - Google Patents

メモリ複製オペレーション時の不正確なキャッシュ・ライン保護機構 Download PDF

Info

Publication number
JP2004185610A
JP2004185610A JP2003388587A JP2003388587A JP2004185610A JP 2004185610 A JP2004185610 A JP 2004185610A JP 2003388587 A JP2003388587 A JP 2003388587A JP 2003388587 A JP2003388587 A JP 2003388587A JP 2004185610 A JP2004185610 A JP 2004185610A
Authority
JP
Japan
Prior art keywords
memory
data
destination
address
token
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.)
Granted
Application number
JP2003388587A
Other languages
English (en)
Other versions
JP3836836B2 (ja
Inventor
Ravi Kumar Arimilli
ラビィ・クマール・アリミリ
Benjiman Lee Goodman
ベンジマン・リー・グッドマン
Jody Bern Joyner
ジョディ・バーン・ジョイナー
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 JP2004185610A publication Critical patent/JP2004185610A/ja
Application granted granted Critical
Publication of JP3836836B2 publication Critical patent/JP3836836B2/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Landscapes

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

Abstract

【課題】 マルチプロセッサ・データ処理システムにおいて、同じメモリ・データ・ロケーションに対する複数の同時複製オペレーションが存在するときのライブロックを回避するための方法を提供する。
【解決手段】 ファブリックにおける複製オペレーションを行う前に、メモリ複製機構内に一組のトークンが定義される。トークンは、ソース・トークン及び宛先トークンを含む。それらのトークンは、データ複製オペレーションを開始する前にメモリ複製機構によってファブリック上に送出される。トークンは、複製オペレーションを完了するために必要なソース・アドレス及び宛先アドレスの使用可能性を見つける。他のデータ複製オペレーションを行うために宛先アドレスが、現在、他のメモリ複製機構によって利用されることになっていないということを、宛先アドレス・トークンに対する応答が表さないと、メモリ複製機構はメモリ複製オペレーションを開始するためのコマンドを送出する。
【選択図】 図2

Description

本発明は、一般的に云えば、データ処理システムに関し、詳しくは、データ処理システム内のデータの移動に関するものである。更に詳しく言えば、本発明は、データ処理システムのメモリ・サブシステム内にあるデータを複数のコンポーネントがアクセスしようとする時のライブロック(live-lock)を回避するための方法及びシステムに関するものである。
高速且つ少量のハードウェアによるデータの処理及びデータ・オペレーションに対する要求は、データ処理システムの分野において見られる改良を支える原動力になっている。最近の動向は、より高速の、より小型の、且つより複雑なプロセッサの開発、及び複数の相互接続されたプロセッサが所与のタスクの複数部分を同時に実行することを可能にするマルチプロセッサ構成の実装を予見している。マルチプロセッサ構成の実装に加えて、より効率的なメモリ・アクセスのために分散メモリ・システムを持ったシステムが開発された。更に、伝統的なバス相互接続を置換するために、スイッチ・ベースの相互接続部(又は、スイッチ)が実装された。
分散メモリは、データが複数の別々のメモリ・モジュールにストアされることを可能にし、マルチプロセッサ構成におけるメモリ・アクセスを機能強化した。スイッチ・ベースの相互接続部は、処理システムの種々のコンポーネントが相互に直接接続することを可能にし、従って、コンポーネント相互間のより速い/より多くのダイレクト・コミュニケーション及びデータ伝送を行うことを可能にした。
図1は、分散メモリ及びスイッチ・ベースの相互接続部(スイッチ)を備えた一般的なマルチプロセッサ・システムのブロック図である。図示のように、マルチプロセッサ・データ処理システム100がは複数のプロセッサ・チップ101A−101Dを含み、それらのプロセッサ・チップは、スイッチ103を介して相互に及び他のシステム・コンポーネントに相互接続される。他のシステム・コンポーネントは、分散メモリ105、107(関連のメモリ・コントローラ(MC)106、108を伴なう)及び入出力(I/O)コンポーネント104を含む。更なるコンポーネント(図示されてない)がスイッチ103を介して図示のコンポーネントに相互接続可能である。プロセッサ・チップ101A−101Dは、それぞれ、P1−PNと順次ラベル付けされた2つのプロセッサ・コア(プロセッサ)を含む。プロセッサ・チップ101A−101Dは、プロセッサP1−PNのほかに、データ処理システム100における処理オペレーションをプロセッサP1−PNと共に制御する更なるコンポーネント/ロジックを含む。図1は、そのようなコンポーネントの1つであるハードウェア・エンジン111を示す。なお、ハードウェア・エンジン111の機能は後述される。
図1に示されたようなマルチプロセッサ・データ処理システムでは、1つ又はそれ以上のメモリ/メモリ・モジュールが、一般的には、複数のプロセッサ(又は、プロセッサ・オペレーション)にアクセス可能であり、メモリが、一般的には、処理リソースによって共用される。処理リソースの各々は独立して作用し得るので、システム内で共用メモリ・リソースに対する競合が起こり得る。例えば、特定のメモリ・アドレスが第1のプロセッサによってアクセスされつつある時、第2のプロセッサがその特定のメモリ・アドレスへの書き込み(又は、そこからの読み取り)を試みることがある。前のアクセスが進行中である時、アクセスを求める後のリクエストが生じる場合、前のリクエストが完了するまで後のリクエスタが遅延させられるか又は阻止されなければならない。従って、特定のメモリ・ロケーションからデータを読み取るためには、又は特定のメモリ・ロケーションにデータを書き込むためには、読み取り/書き込みオペレーションが完全に完了するまで、プロセッサはその特定のメモリ・アドレスにおけるロックを得ることが必要である。これは、システムが妥当でない(例えば、盗まれた)データを知らずに処理するときに生じ得るエラーを排除する。
更に、より高速の、より複雑なマイクロプロセッサに関しては、複数のデータ・リクエストが同時に発生されることがあり、しかも、それが種々なステージの完了時に存在することがある。コヒーレンシの心配に加えて、プロセッサは、特定のデータ・ブロックがオペレーションのシーケンスから外れて変更されないようにしなければならない。例えば、アドレスAにデータ・ブロックが書き込まれることをプロセッサP1が要求し、プロセッサP2が同じデータ・ブロックを読み取らなければならない場合、及びプログラム・シーケンスではその読み取りが書き込み前に生じる場合、正しい結果を得るようにそれら2つのオペレーションの順序が維持されることが重要である。
データ処理システムの標準的オペレーションは、処理コンポーネント及び他のコンポーネントによるデータへのアクセス及びデータの移動又は操作を必要とする。一般的には、データは、特定のプロセッサがプログラム・コードを実行することによって送出(issue)されたコマンドを使用して、メモリにストアされ、アクセスされ/読み取られ、検索され、操作され、ストアされ/書き込まれ、及び(又は)単に移動させられる。
データ移動オペレーションは、データの価値/内容に対する変更/修正には関与しない。むしろ、データ移動オペレーションは、第1の物理アドレスを有する或るメモリ・ロケーションから異なる物理アドレスを有する他のメモリ・ロケーションにデータを転送する。分散メモリ・システムでは、データは、単一のメモリ/メモリ・モジュール内の移動も可能であるけれども、或るメモリ・モジュールから他のメモリ・モジュールにも移動可能である。
現在のシステムではいずれのタイプの移動を完了するためにも、次のようなステップが完了する:
(1)プロセッサ・エンジンがロード命令及びストア命令を発生し、それらの命令の結果、キャッシュ・ライン(CL)読み取りがプロセッサ・チップからスイッチ/相互接続線を介してメモリ・コントローラに送られる;
(2)メモリ・コントローラが宛先メモリ・ロケーションにおけるロックを獲得する;
(3)プロセッサが(メモリ・コントローラによって)ロック宛先メモリ・ロケーションを割り当てられる;
(4)データがメモリ(ソース・アドレス)からスイッチ/相互接続部を介してプロセッサ・チップ(エンジン)に送られる;
(5)データがプロセッサ・エンジンからスイッチ/相互接続部を介して宛先ロケーションのメモリ・コントローラに送られる;
(6)データが宛先ロケーションに書き込まれる;
(7)他のプロセッサに対して、宛先のロックがリリースされる。
データをソース・メモリ・ロケーションからプロセッサ・チップに、しかる後、プロセッサ・チップから宛先メモリ・ロケーションに転送する際の組込み待ち時間(built in latency)は、スイッチが利用されるときでも、このプロセスにおいて固有のものである。
典型的には、各ロード及びストア・オペレーションは、8バイトのデータ・ブロックを移動させる。この移動を完了するには、キャッシュのローリング及び有効アドレスから読み取りへのアドレス変換(effective-to-read address translations)を遂行するための変換索引緩衝機構(translationlook-aside buffer – TLB)の利用を必要とし、更に、データを受領及び送出するためのプロセッサ及び他のハードウェア・リソースの利用を必要とする。少なくとも或るプロセッサ・システム製造業者は、キャッシュ・ラインにおけるバイト・レベルの同期オペレーションを可能にするために、TLBと共にハードウェア加速(hardware-accelerated)ロード・ライン及びストア・ラインを導入した。
ところで、図1は、メモリにおける或る領域/ロケーション(即ち、物理アドレス)から他の領域/ロケーションへのプロセッサP1によるデータの移動を説明するために利用される。図1において、パス1及び2を表す方向矢印で示されるように、データ移動オペレーション中、メモリ105におけるアドレス・ロケーションAからのデータは、そのデータをバス(又は、スイッチ)103上に置くことによって、データ・パス1を介してプロセッサ・チップ101Aに移動させられる。しかる後、そのデータは、プロセッサ・チップ101Aからデータ・パス2に沿って且つスイッチ103を介してメモリ107における所望のアドレス・ロケーションBに送られる。
上記のデータ移動オペレーションを完了するために、現在(及び、従来)のシステムは、ハードウェア・エンジン(即ち、ハードウェア・モデル)及び(又は)ソフトウェア・プログラミング・モデル(又は、インターフェース)を利用している。
そのハードウェア・エンジンの実装では、仮想アドレスが利用され、ハードウェア・エンジン111がデータ移動オペレーションを制御し、移動するデータを受け取る。そのハードウェア・エンジン111(ハードウェア・アクセラレータとも呼ばれる)は、ロック獲得プロセスを開始する。それは、複数のプロセッサがメモリ・アドレスにおけるデータを同時にアクセスするのを回避するために、ソース及び宛先メモリ・アドレスにおけるロックを得るプロセスである。データをプロセッサまで送る代わりに、そのデータがハードウェア・エンジン111に送られる。ハードウェア・エンジン111は、キャッシュ・ライン読み取りを利用して、書き込みがパイプライン態様で完了することを可能にする。その最終的な結果は、非常に速い移動オペレーションである。
ソフトウェア・プログラミング・モデルに関しては、ソフトウェアがロケーションA及びロケーションBをプロセッサ・ハードウェアに知らせ、しかる後、プロセッサ・ハードウェアが移動を完了する。このプロセスでは、実アドレス(即ち、仮想アドレスではない)を利用することも可能である。従って、上記のハードウェア・モデルによって必要とされる仮想アドレス/実アドレス変換(又は、ヒストリカル・パターン・マッチング)のために必要な付加的時間が排除され得る。また、このソフトウェア・モデルでは、アドレスがオフセットを含んでもよい(例えば、アドレスBが数バイトだけオフセットされ得る)。
このデータ移動オペレーションを遂行するためにプロセッサP1によって実行される典型的な擬似シーケンスは、次のようなものである:
LOCK DST :宛先をロックする
LOCK SRC :ソースをロックする
LD A(バイト0) :AB0(4B又は8Bの量)
ST B(バイト0) :BB0(4B/8B)
INC :バイト数をインクリメントする
CMP :終了したかどうかを知るために比較する
BC :終了しない場合にブランチする
SYNC :同期化を遂行する
RL LOCK :ロックをリリースする
バイト数(B0、B1、B2等)は、アドレスAによって識別されるメモリ領域に記憶されたすべてのデータがアドレスBによって識別されるメモリ領域に移動してしまうまで、インクリメントされる。ロック及びリリース・オペレーションは、メモリ・コントローラ及びバス・アービタによって実行され、それらは、ロックを与えられるリクエスティング・プロセッサに特定のアドレスに関する一時的なアクセス及びコントロールを割り当てる。
データ移動オペレーションに続いて、プロセッサP1は、そのプロセッサがその後の他のオペレーションに関する処理を回復することができる前にすべてのデータがメモリ・ロケーションBに物理的に移動してしまったことを表す完了応答(又は、信号)を受け取らなければならない。これは、処理ユニット間にコヒーレンシが存在すること及びデータ・コヒーレンシが維持されることを保証するものである。その完了信号は、すべてのプロセッサがデータ移動オペレーションの通知(及び、肯定応答)を受け取ることを保証するために、データ移動オペレーション後にプロセッサP1によって発生される。
従って、図1では、プロセッサP1によって送出された命令が、ロケーションAからロケーションBへのデータの移動を開始させる。SYNCがプロセッサP1によって送出され、そして最後のデータ・ブロックがロケーションBに移動してしまったとき、その物理的移動を表す信号がプロセッサP1に送られる。それに応答して、プロセッサP1はアドレスBにおけるロックをリリースする。そして、プロセッサP1は他の命令の処理を回復することができる。
特に、プロセッサP1は、移動オペレーションが開始する前にメモリ・ロケーションB、しかる後、Aにおけるロックを得なければならないので、完了信号はロックのリリースも信号し、メモリ・ロケーションA及びBをアクセスしようとする他のプロセッサがいずれのアドレスに関するロックを得ることも可能にする。
ハードウェア・モデル及びソフトウェア・モデルの各々が種々の機能的な利益を提供するけれども、両方とも幾つかの制限を持っている。例えば、ハードウェア・モデル及びソフトウェア・モデルの両方ともメモリ(ソース)からプロセッサ・チップまでのデータのローディング、その後のプロセッサ・チップからメモリ(宛先)までの逆ローディングの組込み待ち時間を有する。更に、いずれのモデルに関しても、プロセッサは、移動全体が完了し、メモリ・コントローラからの完了応答が発生されるまで待たなければならず、しかる後、プロセッサはその後の命令/オペレーションの処理を回復する。
従って、本発明は、より効率的なデータ移動オペレーションのための方法及びシステムを提供するものである。メモリ・リソースに対して競合する複数のメモリ複製機構(cloner)をサポートするマルチプロセッサ・データ処理システムにおいてライブロック(livelock)を排除する方法及びシステムは歓迎されるべき改良であろう。本発明によって、これら及び幾つかの他の利益が提供される。
マルチプロセッサ・データ処理システムにおいて同じメモリ・データ・ロケーションに対して複数の同時的複製オペレーションが存在するとき、そのデータ処理システムにおけるライブロックを回避するためのハードウェア方法が開示される。ファブリック上でデータ複製オペレーションを行うときに使用するための命令セット・アーキテクチャにおけるトークンのセットが定義される。トークンは、ソース・トークン及び宛先トークンを含む。それらのトークンは、データ複製オペレーションを開始する前に、メモリ複製機構により前記ファブリック上に発生される。トークンは、複製オペレーションを完了するために必要なソース・アドレス及び宛先アドレスの使用可能性を見つける。宛先アドレスが他のデータ複製オペレーションを行うために、現在他のメモリ複製機構によって利用されることになっていないことを、宛先アドレス・トークンに対する応答が表す場合、メモリ複製機構は、メモリ移動オペレーションを開始するためのコマンドを送出し得る。
ソース・トークン及び宛先トークン・オペレーションは、データ処理システムにおける他のメモリ複製機構によるスヌープ可能なファブリックに関するアドレス・オンリの保有権(address only tenure)を伴なう。トークンがスヌープされるとき、スヌーパ(メモリ複製機構)は、スヌープされたトークン・オペレーションのソース・アドレス及び宛先アドレスを、そのときスヌーパによって完了することになっているすべてのデータのソース・アドレス及び宛先アドレスと比較する。次に、スヌーパは、ヌル応答又は再試行応答を供給する。再試行応答は、スヌープされた宛先トークンの宛先アドレスが次のデータ複製オペレーションのソース・アドレスと同じであるときに供給される。
一旦、すべてのスヌーパからヌル応答が戻されると、データ複製オペレーションを開始するためにネーキッド・ライト(naked write)リクエストが直ちにファブリックに送出される。
A.概要
本発明は、プロセッサ(又は、プロセッサ・チップ)に関連した高速メモリ複製機構及びその高速メモリ複製機構によって提供される特徴を利用したデータ複製オペレーションを完了する効率的な方法を提供する。高速メモリ複製機構は、実際のデータ移動が完了することを必要とすることなく第1のメモリ・ロケーションから他のメモリ・ロケーションにデータを移動させるためのリクエストに続いてプロセッサが処理オペレーションを継続することを可能にする。
本発明は、移動オペレーションに対するアーキテクチャ的に終了した状態(Architecturally Done State)を紹介する。メモリ複製機構によって与えられる機能的な特徴は、ネーキッド・ライト・オペレーション、ネーキッド・ライト及びダイレクト・メモリ・ツー・メモリ・データ移動をサポートするための高機能コヒーレンシ・オペレーション、命令セット・アーキテクチャ(例えば、割り込みのないパイプライン化命令発生による最適化結合命令セット)における新しい命令、及びデータ処理のために仮想アドレシング・モードと実アドレシング・モードとの間を動的に切り替えるためのモード・ビットを含む。データ処理システムの更なる新規なオペレーション上の特徴が本発明によって与えられる。
本発明は、現在の処理システムに存在するスイッチ・トポロジおよびメモリ・コントローラの機能を利用する。データがリクエスティング・プロセッサ・モジュールに返送され、しかる後、そのプロセッサ・モジュールから宛先に送られることを必要とする移動オペレーションを実行するための現在のハードウェア・ベース・モデル又はソフトウェア・ベース・モデルとは違って、本発明は、データが宛先に直接経路指定されることを可能にする更なる特徴を持った結合ソフトウェア・モデル及びハードウェア・モデルを実装する。本発明の実装は、後述の種々のハードウェア及びソフトウェア・ロジック/コンポーネントを含むメモリ複製機構と共に設計されたプロセッサ・チップを利用して実現されることが望ましい。
本発明の説明は、幾つかの新たな用語を規定する。それらのうちの重要なものが、高速メモリ複製機構によって遂行される「複製」オペレーションである。本願において使用されるように、複製オペレーションは、高速メモリ複製機構内で、ファブリック上で、並びに、メモリ・ロケーションで生じ、アーキテクチャ的に終了した状態及び実際の物理的なデータ移動を共に可能にするすべてのオペレーションを指す。データは、ポイントAからポイントBに移動するが、データ移動オペレーションを完了する既知に方法とは非常に異なる態様で移動する。データ「移動」という参照は、特に、プロセッサから高速メモリ・コントローラに送出される命令を指す。場合によっては、「移動」という用語は、データ複製オペレーションの一部分としてのデータの物理的移動を特定的に指すときに使用される。従って、例えば、物理的データ移動の完了は、データ複製オペレーションの一部分と考えられる。
B.ハードウェアの特徴
次に、図面、特に、図2を参照すると、本発明を実装し得るマルチプロセッサ式スイッチ接続データ処理システム200が示される。データ処理システム200は複数のプロセッサ・モジュール/チップを含み、それらのうちの2つのチップ201A及び201Dが示される。プロセッサ・チップ201A及び201Dの各々は1つ又はそれ以上のプロセッサ(P1、P2、PM、PN等)を含む。プロセッサ・チップの少なくとも1つ(例えば、例示のためのプロセッサ・チップ201A)には、メモリ複製機構211があり、そのメモリ複製機構に関しては、図3を参照して後述する。プロセッサ・チップ201A及び201Dは、スイッチ203を介して相互に及びデータ処理システム200の更なるコンポーネントに相互接続される。これらの更なるコンポーネントは分散メモリ・モジュールを含み、それらのモジュールのうちの2つであるメモリ205及び207が示される。それらのメモリの各々は、それぞれのメモリ・コントローラ206及び208を有する。メモリ・コントローラ208にはメモリ・キャッシュ213が関連付けられる。メモリ・キャッシュ213の機能は、下記のネーキッド・ライト・オペレーションの説明と関連して説明される。
データ複製オペレーション時、データがメモリ205のメモリ・ロケーションA209からスイッチ203を介してメモリ207のメモリ・ロケーションB210に直接に移動する。従って、データは、プロセッサ又はプロセッサ・モジュールを含まないダイレクト・パス3に沿って移動する。即ち、移動するデータは、最初にメモリ複製機構211又はプロセッサP1には送られない。データの実際の移動は、メモリ・コントローラ206及び208(又は、後述のモデルによれば、コヒーレンシに基づいたキャッシュ・コントローラ)によってそれぞれ制御される。それらのメモリ・コントローラは、物理的移動を完了すると同時に、それぞれ、メモリ205及び207へのアクセスも制御する。
データ処理システムにおけるプロセッサ及びメモリの図示の構成は、本願では、単に例示目的で示される。非分散メモリ及び(又は)単一のプロセッサ/プロセッサ・チップを含むシステム構成に本発明の種々の機能的特徴が十分に適用可能であることは、当業者には明らかであろう。従って、本願において開示された本発明の機能的特徴は、データ処理システムが、本願において開示された種々の機能的特徴を有する高速メモリ複製機構及び(又は)同様のコンポーネントを含む限り、種々な構成のデータ処理システムに適用する。
(a).高速メモリ複製機構
メモリ複製機構211は、本発明のプロセスを制御及び(又は)開始するハードウェア・コンポーネント及びソフトウェア・コンポーネントを含む。特に、図3に示されるように、メモリ複製機構211は、制御ロジック303及び変換索引緩衝機構(TLB)319を含む。メモリ複製機構211は、ソース(SRC)アドレス・レジスタ305、宛先(DST)アドレス・レジスタ307、カウント(CNT)レジスタ309、アーキテクチャ的終了レジスタ313、及び複製完了レジスタ317を含む幾つかのレジスタから成る。更に、メモリ複製機構には、モード・ビット315も含まれる。メモリ複製機構211における図示の各コンポーネントの機能は、本明細書の関連セクションにおいて説明される。
特に、ハードウェア・アクセラレータ又は同様のコンポーネントと違って、メモリ複製機構はアドレス・オンリ・オペレーションを受け、そしてそれを送出する。本発明は、1チップ当たり1つのメモリ複製機構を実装することが可能である。別の方法として、各マイクロプロセッサが、それぞれのメモリ複製機構にアクセスすることも可能である。
TLB319は、仮想アドレス・バッファ321及び実アドレス・バッファ323を含む。プロセッサP1、P2等によって利用されるI−TLB及びD−TLBとは別のTLB319が固定され、I−TLB及びD−TLBと提携して動作する。バッファ321及び323は、始動時にOSによってロードされ、OSによって参照されるすべてのアドレスに対する変換値を記憶し、メモリにおけるOSページ・テーブルを読み出す必要がないように処理する。
(b).SRC、DST、及びCNTレジスタ
図3の例示的実施例では、メモリ複製機構211は、ソース(SRC)アドレス・レジスタ305、宛先(DST)アドレス・レジスタ307、及びカウント(CNT)レジスタ309を含む。それらの名称が意味するように、宛先アドレス・レジスタ307及びソース・アドレス・レジスタ305は、それぞれ、移動するデータの宛先となるメモリ・ロケーションを表す宛先アドレス、及び移動するデータのソースとなるメモリ・ロケーションを表すソース・アドレスを記憶する。カウント・レジスタ309は、データ複製オペレーションにおいて転送されるキャッシュ・ラインの数を記憶する。
宛先アドレス及びソース・アドレスは、データ複製オペレーションのために宛先アドレス及びソース・アドレスを記憶するために利用されるメモリ内のロケーション(X及びY)から読み出される。ソース・アドレス及び宛先アドレスの読み出しは、詳細に後述されるようなデータ複製オペレーションをメモリ複製機構に開始させる1つ又はそれ以上の命令をプロセッサ(例えば、P1)が送出することによってトリガされる。
C.データ複製オペレーションのための一般的なプロセス
図6は、上述のハードウェア・コンポーネントを利用して本発明が完了するプロセス全体の主要なステップの幾つかを示す。そのプロセスは、ブロック501において開始し、しかる後、ブロック503に示されるように、メモリ・ロケーションAからメモリ・ロケーションBにデータを複製するためのリクエストを構成する命令がプロセッサP1によって送出される。メモリ複製機構は、ブロック505に示されるように、データ複製リクエストを受け取り、仮想ソース・アドレス及び宛先アドレスを検索し、対応する実アドレスをルックアップし、そしてネーキッド・ライト(WR)オペレーションを開始する。ブロック507に示されるように、ネーキッドWRオペレーションがファブリックにおいて実行され、メモリ複製機構がアーキテクチャ的に終了した状態を監視する。複製オペレーションがアーキテクチャ的に終了したという表示に続いて、ブロック509に示されるように、複製オペレーションが完了したことをメモリ複製機構がプロセッサに信号し、プロセッサは、データ移動があたかも物理的に完了してしまったが如く処理を継続する。そして、ブロック511に示されるように、メモリ複製機構がバックグラウンドにおいて実際のデータ移動を完了し、データが物理的に移動しつつあるときにキャッシュ・ラインの必要な保護を遂行する。しかる後、ブロック513に示されるように、プロセスが終了する。図6の個々のブロックによって行われるプロセスは拡張され、本願において提供される幾つかの他のフロー・チャートに関連して後述される。
次に図7を参照すると、図6のブロック505を完了する時に関連する幾つかのステップが示される。プロセスは、ブロック521において開始し、しかる後、ブロック523に移る。ブロック523は、リクエストされたデータ複製オペレーションに対する宛先アドレス及びソース・アドレスがメモリ・ロケーションX及びYから検索され、メモリ複製機構におけるそれぞれのレジスタに入れられることを示している。ブロック525に示されるように、カウント値(即ち、データのキャッシュ・ラインの数)がCNTレジスタに入れられる。しかる後、ブロック526に示されるように、ソース及び宛先トークン・オペレーションが完了する。それに続いて、ブロック527に示されるように、ネーキッドCL WRがファブリック上に置かれる。各ネーキッドCL WRがメモリ・コントローラからファブリックを介して応答を受け取る。ブロック529において、その応答がヌルであるかどうかの決定が行われる。応答がヌルでない場合、ブロック531に示されるように、ネーキッドCL WRオペレーションが再試行される。しかし、応答がヌルである場合、ブロック533に示されるように、ネーキッドCL WRがメモリ複製機構211において完了したものとしてマークされる。図7に示された種々のステップが以下のセクションで更に詳細に説明される。
(a).オペランドの移動及び移動アドレスの検索
本発明の明確な理解を可能にするために、小さいブロックのプログラム・コードと、メモリ・ロケーションA(仮想アドレスA及び実アドレスA1を有する)から他のメモリ・ロケーション(仮想アドレスB及び実アドレスB1を有する)へのデータのクローニングとに関連したデータ複製オペレーションの実装を説明することにする。従って、例えば、結果としてメモリ・ロケーションAからメモリ・ロケーションBへのデータのクローニングを生じる、プロセッサP1において実行されるプログラム・コードのサンプル・ブロックは次のようになる:
ST X (アドレスXが仮想ソース・アドレスAを保持する)
ST Y (アドレスYが仮想宛先アドレスBを保持する)
ST CNT (CNTは複製すべきデータ・ラインの数である)
SYNC
ADD
上記コードは、複製オペレーションを開始させるためにメモリ複製機構が受け取ったサンプル命令を表す。ADD命令は、データ複製オペレーションが完了するまでプロセッサによって実行されない例示的命令として利用される。メモリ複製機構は、SYNCまでの上記命令シーケンスをプロセッサが受け取ったときにはいつもデータ複製オペレーションを開始する。メモリ複製機構における上記命令シーケンスの実行は、メモリ複製機構への仮想ソース及び宛先アドレスの返送を生じさせ、更に、移動すべきデータ・ラインの数を供給する。本実施例では、CNTの値は1ページのメモリにおけるラインの数に等しく、複製オペレーションは、アドレスAにある単一ページのメモリを複製するものとして説明される。
図4は、X及びYメモリ・ロケーションのブロック表示を有するメモリ405を示し、そのメモリ405は、メモリ・サブシステム内の任意のメモリ205、207(図2)であってもよい。なお、それらのメモリ・ロケーションには、データ複製オペレーションのためのソース・アドレスA及び宛先アドレスBが存在する。1つの実施例では、メモリ複製オペレーションのためのA及びBアドレスは、プロセッサにより初期の実行時間にX及びYメモリ・ロケーションにストアされる。各ロケーションは、32ビットのアドレス・データ及びそれに続く12個の予約ビットを含む。図示の実施例によれば、これら付加的な12ビットのうちの最初の5ビットは、ソース又は宛先ページ・アドレス範囲内の32個の可能なページのうちのどのページがリクエスト/アクセスされようとしているかを選択するために、データ処理システムの状態マシンによって利用される。
図4に示されるように、X及びYアドレスは、A及びB仮想アドレスを記憶するメモリ・ロケーションであり、それらがストア・リクエスト(ST)に含まれているとき、そのリクエストが(通常のストア・オペレーションではなく)データ複製オペレーションのためのものであることをプロセッサ及びメモリ複製機構に対して表す。仮想アドレスA及びBは、データ複製オペレーションのソース及び宛先の実メモリ・アドレスA1及びB1に対応し、メモリ複製機構211のSRCアドレス・レジスタ305及びDSTアドレス・レジスタ307にストアされる。後述のメモリ複製オペレーションにおいて利用されるように、A及びBは、メモリ複製機構内に記憶されたデータ・アドレスであるアドレスを指し、一方、A1及びB1は、ファブリックに対して(即ち、スイッチの外に)送出された実メモリ・アドレスを指す。A及びA1並びにB及びB1の両方とも、それぞれ、データ複製オペレーションのソース・メモリ・ロケーション及び宛先メモリ・ロケーションを表す。
図示の実施例では、メモリ複製機構211がプロセッサから一連のSTコマンド及びそれに続くSYNCを受け取るとき、TLB319は仮想アドレスX及びYから、それぞれ、実アドレスX1及びY1をルックアップする。X1及びY1は、メモリ複製オペレーションのためのソース及び宛先アドレスの記憶専用のメモリ・ロケーションである。メモリ複製機構211は、スイッチを介して(即ち、ファブリック上に)メモリにオペレーションを送出し、そしてそれらオペレーションはそれぞれのロケーションをアクセスし、宛先及びソース・アドレスをメモリ複製機構211に戻す。メモリ複製機構211は、ソース(A)及び宛先(B)に対する仮想アドレスを、それぞれ、ロケーションX1及びY1から受け取る。供給された実際のアドレスは第1ページ・メモリ・アドレスである。
メモリ複製機構211は、プロセッサP1から受け取ったソース及び宛先アドレス、並びにキャッシュ・ライン・カウントを、それぞれ、レジスタ305、307、309にストアする。CNTレジスタ309にストアされた値に基づいて、メモリ複製機構は、SRCレジスタ305及びDSTレジスタ307におけるアドレスでもって始まり、0から31まで順次に番号付けられたる連続したアドレスを、12個の予約ビットにおける最初の5個の付加ビットを利用して発生することができる。
例えば、128バイトのラインを有するデータの4Kバイト・ページがメモリ・アドレスA1(4Kの揃ったアドレスを有する)からメモリ・アドレスB1(これも4Kの揃ったアドレスを有する)に移動する複製オペレーションに関しては、最初の5ビットにおいてソース・アドレスに付加される状態マシン・アドレス拡張子 0000 乃至 1111 に対応した32のカウント値がCNTレジスタ309にストアされる。これらのアドレス拡張子は、状態マシン(即ち、メモリ複製機構によって利用されるカウンタ)によって設定可能であり、ページ内のどのアドレス・ブロックが移動することになっているかを識別する。
また、本発明の更なる特徴は、ページ全体に加えて部分的なメモリ・ページのクローニングも可能にする。この特徴は、例えば、異なるサイズのキャッシュ・ラインを有するメモリ・コンポーネント相互間で移動オペレーションが生じる場合の実施例に関連するものである。
仮想ソース・アドレス及び宛先アドレスの受け取りに応答して、メモリ複製機構211は、
(1)ソース・アドレス(即ち、アドレスA)をSRCレジスタ305にストアするという機能、及び
(2)宛先アドレス(即ち、アドレスB)をDSTレジスタ307にストアするという機能
を遂行する。メモリ複製機構211は、プロセッサから受け取ったCNT値をCNTレジスタ309にストアする。ストアされたソース及び宛先アドレスは、前の処理中にプロセッサによって発生された仮想アドレスである。これらのアドレスは、メモリにおける対応する実アドレスを決定するためにTLB319によってルックアップ可能である。その後、それらのアドレスは、後述するデータ複製オペレーションを実行するために使用される。
D.トークン・オペレーション
図7のブロック526に説明を戻すと、メモリ複製機構に対する書き込み及び読み取りオペレーションを開始する前に、メモリ複製機構が、本実施例ではソース(SRC)トークン及び宛先(DST)トークンと呼ばれる一組のトークン(又は、アドレス保有権)を発生する。SRCトークンは、他のいずれかのメモリ複製機構がその時点でSRCページ・アドレスを利用しようとしているかどうかを知るためにシステムに照会を行うファブリックにおけるオペレーションである。同様に、DSTトークンは、他のいずれかのメモリ複製機構がその時点でDSTページ・アドレスを利用しようとしているかどうかを知るためにシステムに照会を行う、ファブリックにおけるオペレーションである。
SRC及びDSTトークンは、複製オペレーションを開始するオペレーションを送出する前に、メモリ複製機構によってファブリック上に送出される。各メモリ複製機構のトークンは、そのシステムにおける他のすべてのメモリ複製機構(又は、プロセッサ)によってスヌープされる。各スヌーパ(snooper)は、当該スヌーパがそのとき利用しようとしているいずれのアドレスに対してもトークンのソース及び宛先アドレスをチェックする。しかる後、各スヌーパは、それらのアドレスがスヌーパの1つによって利用されることになっているかどうかを、それらトークンを送出したメモリ複製機構に示す応答を送出する。トークン・オペレーションは、2つのメモリ複製機構が同じロケーションに対して読み取り/書き込みを試みようとしていないことを保証する。トークン・オペレーションは、データ複製オペレーションのためのメモリ・アドレス・スペースが使用可能であることも保証する。
トークンの使用は、複数のメモリ複製機構がデータを同じメモリ・ロケーションに同時に書き込まないようにする。異なるオペレーションによる1つのメモリ・ロケーションに対する複数の同時更新を防ぐことに加えて、トークン・オペレーションは、ライブロックの回避も支援し、メモリ内のコヒーレンシが維持されることを保証する。さらに、本発明は、後述するように、プロセッサがライブロックしないことを保証するために別の方法も提供する。
トークン・アドレス・オペランドを利用することは、メモリ複製機構が、一連の書き込みオペレーションを開始する前にソース及び宛先アドレスに関してクリア信号を受け取ることを可能にする。一旦メモリ複製機構がトークンからクリア信号を受け取ると、メモリ複製機構は、ネーキッド・キャッシュ・ライン(CL)書き込み(WR)オペレーション及びCL読み取り(RD)オペレーションを送出することによって複製オペレーションを始めることができる。
次に、トークン・オペレーションは受け取ったソース・アドレス及び宛先アドレスから発生され、しかも、トーク・オペレーションは、それぞれのメモリ・ロケーションをアクセスするためのクリア応答を保証するために送出される。SRC及びDSTトークン・オペレーションは、リクエストされたメモリ・ロケーションが複製機構にとって使用可能なものである(即ち、他のプロセッサ又はメモリ複製機構等によって現在利用されてない)かどうかを決定するために、及び複製オペレーションが完了するまでその使用可能なアドレスを予約するために、ファブリック上に送出される。一旦DSTトークン・オペレーション及びSRCトークン・オペレーションがクリアを返送すると、メモリ複製機構は、後述するように、対応するアドレス・スペースへのアクセスを求める他のリクエストをスヌープすることによってその対応するアドレス・スペースを保護し始める。
特に、1つの実施例では、(たとえSRCトークンからクリアを受け取らなくても)一旦、DSTトークンからの応答が、宛先アドレスが複製オペレーションにとって明らかであることを表すと、複製オペレーションが開始することを許される。この実施例は、データが同じソース・アドレスから同時に得られることを可能にし、従って、同じソース・アドレスに関する複数の同時複製オペレーションを許容する。この実装に対する1つの主要な理由は、伝統的な移動オペレーションとは違って、メモリ複製機構によって制御される複製オペレーションが、詳細に後述されるように、一連のネーキッド・ライト・オペレーションでもって始まるということである。
次に、トークンの利用に基づいてできる可能なデータ調達(datasourcing)オペレーションの一例が示される。この例では、データが得られるソース・アドレスを表すために「A」が利用される。「B」は、メモリ複製が完了する宛先のアドレスを表し、「O」は、アドレスA又はBにそれぞれ対応するロケーションA又はBをアクセスしようとしている他のプロセス(例えば、複製オペレーション)に対するメモリ・アドレスを表す。データがA又はBから調達されるとき、データはAからOにも同時に調達される。しかし、データ複製が生じているときに可能である他の結合はない。これら他の結合の中には、A対B及びO対B、A対B及びB対C、並びに、A対B及びO対Aがある。各結合において、Sは、データが調達されるアドレスであると仮定される。従って、本発明は、複数のメモリ移動が同じメモリ・ロケーションから調達されることを可能にする。しかし、スヌープされたソース・アドレスと宛先アドレスが同じである場合、スヌーパは、どれが最初に受け取られたかに従って、混乱するSRCトークン及びDSTトークンに対する再試行を実行する。
E.ネーキッド・ライト・オペレーション
(a)ネーキッド・ライト
次に図7におけるブロック527を参照すると、本発明は、新たなライト(write)オペレーション及びメモリ複製における応答の関連セットを紹介する。このオペレーションは、データ保有権を持たないキャッシュ・ライン・ライトである(そのオペレーションがデータ保有権を含まない、従って、ネーキッド(naked)というアドレス・オンリ・オペレーションであるので、ネーキッド・ライトとも呼ばれる)。ネーキッド・ライトは、データ複製オペレーションを開始するためにメモリ複製機構によって送出され、データが移動すべき宛先メモリ・ロケーションを含むメモリのメモリ・コントローラによって受け取られる。そのメモリ・コントローラはネーキッド・ライトに対する応答を生成し、その応答はメモリ複製機構に返送される。
従って、メモリ複製機構は、移動するデータに対して、ファブリック上に置かれていて宛先バッファ等の割り振りを開始する、データを伴なわない書き込みコマンド(相互交換可能にネーキッド・ライトと呼ばれる)を送出する。メモリ複製機構は、アドレスBに対応した第1宛先アドレスでもって始まる32個のネーキッドCLライト及び31個の他の順次ページ・レベル・アドレス拡張子の各々を送出する。ネーキッド・ライト及び関連する応答等のパイプライン化が図5によって示される。
メモリ複製機構は、順次パイプライン化態様でCL WRを送出する。パイプライン化プロセスは、データが直接的にメモリに書き込まれるので、DMACL WR(B−B31)を供給する。それら32個のCL WRオペレーションは独立しており、ファブリック上でオーバラップする。
(b)ネーキッドCLライトに対する応答
図5は、キャッシュ・ライン(CL)リード(RD)及びライト(WR)オペレーション及びファブリック上で伝送される対応したページ(即ち、A−A31及びB−B31)のシミュレートされたライン・セグメントを示す。各オペレーションが後述のコヒーレンシ応答を受け取る。図示のように、ネーキッドCLライトは、如何なる実際のデータも送られることなく送出される。一旦ネーキッドCLWRが送出されると、移動するデータを受け入れるためのメモリ・ロケーションBがフリーであるかどうかを表すコヒーレンシ応答が各ネーキッド・ライトに対して発生される。その応答は、特定の宛先メモリ・ロケーションのメモリ・コントローラが、移動するデータを受け取るためのバッファを割り振ることができるか否かに従って、ヌル又は再試行となるであろう。
図示の実施例では、バッファは、宛先メモリ207のメモリ・キャッシュ213のキャッシュ・ラインを表す。標準的なメモリ・オペレーションのとき、メモリに送られるデータは、先ず、メモリ・キャッシュ213にストアされ、しかる後、物理的メモリ207へ移動させられる。従って、メモリ・コントローラは、特定のネーキッドCLWRオペレーションのメモリ・アドレスに対してデータをストアするために利用される特定のキャッシュ・ラインをチェックする。バッファという用語がキャッシュ・ラインと多少は相互交換可能に利用されるけれども、本発明は、バッファを構成し得る形式上のメモリ・キャッシュ構造なしでも実装され得る。
コヒーレンシ応答がメモリ複製機構に返送される。その応答は、データが(ソース・アドレスのコヒーレンシ・チェック及び使用可能性に従って)その時点で開始し得るかどうかの表示をメモリ複製機構に供給する。メモリ・コントローラがネーキッドCLWRに対してバッファを割り振ることができるとき、そのバッファが割り振られ、メモリ・コントローラがそのCLに対するデータの受け取りを待つ。ヌル/再試行の応答に加えて、宛先IDタグが、図5に示されるように、各ネーキッドCLWRのために供給される。宛先IDの利用は、図9を参照して説明されるCLRオペレーションに関連して説明される。
F.アーキテクチャ的に終了した状態
図8は、アーキテクチャ的に終了した状態が生じるプロセス及びアーキテクチャ的に終了した状態に対するプロセッサによる応答を示す。そのプロセスは、ブロック551に示されるように開始し、ブロック553に示されるように、メモリ複製機構が、実行されたネーキッドCLWRオペレーションに対するヌル応答を監視する。すべての実行されたネーキッドCL WRがメモリ・コントローラからヌル応答を受け取ったかどうかの決定がブロック553において行われる。メモリ・コントローラがすべてのネーキッドCLWRオペレーションに対するヌル応答を送出してしまったとき、ブロック557に示されるように、移動全体が「アーキテクチャ的に終了した」とみなされる。そして、メモリ複製機構は、移動すべきデータがメモリ・サブシステムから完全には読み出されてなくても、データ複製オペレーションが完了したということをリクエスティング・プロセッサに信号する。そこで、ブロック559において、プロセスが終了する。プロセッサは、その後の命令(例えば、開示の命令シーケンスでは、SYNCに続くADD命令)の実行を回復する。
プロセッサ又はメモリ複製機構がデータを受け取っていないので、アーキテクチャ的に終了した状態の実施が可能にされる。即ち、移動すべきデータはプロセッサ・チップ又はメモリ・クリーナに送られる必要がないが、その代わりに、メモリ・ロケーションAからメモリ・ロケーションBに直接転送される。システムが、最早、「古い」宛先データをプロセッサに供給しなくなると、プロセッサは、複製オペレーションがアーキテクチャ的に終了したという表示を受け取る。
従って、プロセッサの観点から、いずれかのデータ・ラインが物理的に移動する前であっても(使用可能な帯域幅、データ・セグメントの数、オーバラップした移動の数、スイッチを横切る他のプロセス等に基づいてその物理的移動が完了し得る速さ次第で)、複製オペレーションは完了したように見えるかもしれない。アーキテクチャ的に終了した状態が得られるとき、宛先アドレス・バッファは、すべて、データを受け取るために割り振られてしまい、メモリ複製機構は、宛先アドレスへのデータの移動をトリガする対応した読み取りオペレーションを送出した。システム同期化の観点から、すべてのデータが移動を開始した又は移動を完了したわけではないけれども、プロセッサは、複製オペレーションが完了したことを知らされ、しかも、プロセッサは、プロセッサ実行のSYNCオペレーションが、複製オペレーションの完了を表すACK応答を受け取っているものと仮定する。
アーキテクチャ的に終了した状態の実装における1つの利点は、プロセッサがメモリ待ち時間及びシステム・トポロジに影響されなくされることである。それは、実際のデータ複製オペレーションが完了するまでプロセッサが待つ必要がないためである。従って、データ複製オペレーションに割り振られ、ACK応答を受け取るまでその後の命令を処理しないようにされるプロセッサ・リソースは速くリリースされ、データ複製命令がメモリ複製機構に送られた後に最少の遅れでもって他のオペレーションの処理を続けることができる。
(a)アーキテクチャ的に終了した状態のレジスタ・ベースのトラッキング
1つの実施例では、受け取ったヌル応答に関するソフトウェア又はハードウェア・レジスタ・ベースのトラッキングが実装される。レジスタは、図2に示されるように、メモリ複製機構211内に設けられる。例えば、32というCNT値に関して、メモリ複製機構211は、32個のネーキッドCLライトのうちのどれがヌル応答を受け取ったかをトラッキングするために32ビットのソフトウェア・レジスタ313を設けられる。図13は、複製オペレーションが少なくとも部分的に終了したか又はアーキテクチャ的に終了したという表示をメモリ複製機構に供給するために利用される。そのレジスタは、メモリ複製機構によって監視される進行状況表示バーとして作用する。SYNCオペレーションを実装する代わりに、メモリ複製機構は、どのヌル応答が受け取られたかを監視/記録するためにレジスタ313を利用する。各ビットは、対応して番号付けられたネーキッドCLライト・オペレーションに対するヌル応答が受け取られると直ちに「1」にセットされる。図示の実施例によれば、ビット1,2、及び4に関連した宛先メモリ・アドレスに対するネーキッドCLライト・オペレーションは、レジスタ313の対応するビット・ロケーションに置かれた「1」によって明示されるように、完了している。
図示の実施例では、アーキテクチャ的に終了した状態の決定は、すべてのビットが「1」にセットされているかどうかを知るためにレジスタのビットをスキャンすることによって完了する。別の実装は、レジスタの各ビットに保持された値をORすることを伴なう。この実施例では、メモリ複製機構は、ネーキッド・ライトに対するすべてのヌル応答をORした後に終了状態をプロセッサに信号する。すべてのビット値が1であるとき、アーキテクチャ的に終了した状態が確認され、1つの表示がメモリ複製機構によってリクエスティング・プロセッサに送られる。しかる後、レジスタ313全体が0にリセットされる。
図示の実施例では、ネーキッド・ライトのうちのどれがヌル応答を受け取ったかをトラッキングするために、Nビット・レジスタが利用される。なお、Nは、複製オペレーションのために送出された最大数の書き込みをカバーするように十分に大きい設計パラメータである。しかし、場合によっては、プロセッサは、特定のキャッシュ・ラインがアーキテクチャ的に終了しているかどうかを知ることだけに関係する。これらの場合のために、関係あるキャッシュ・ラインと関連した特定のレジスタだけが読み取られ又はチェックされ、メモリ複製機構は、これらの特定のキャッシュ・ラインがアーキテクチャ的に終了すると直ちにオペレーションを回復するようにプロセッサに信号する。
G.宛先IDタグによるダイレクト「メモリ・ツー・メモリ」移動
(a)読み取りリクエスト
次に図5の説明に戻り且つ図9のフロー・チャートを参照すると、ネーキッド・ライト・オペレーションの後に読み取りオペレーションを実行するプロセスが示される。このプロセスはブロック571で始まり、ブロック573に示されるように、メモリ複製機構がネーキッドCLWRに対するヌル応答を監視する。ブロック575において、ヌル応答が受け取られたかどうかに関する決定が行われる。各ネーキッドCL WRに対するヌル応答が受け取られるまで、メモリ複製機構は、ヌル応答を受け取ってないすべてのネーキッドCLWRを再試行する。ブロック577に示されるように、メモリ複製機構においてヌル応答が受け取られるとき、移動すべきデータ・セグメントがそのとき存在しているソース・メモリ・ロケーションに対して、対応する(アドレス)CL読み取りオペレーションが直ちにファブリック上に送出される。例えば、ネーキッドCLWR(B)に対する受け取られたヌル応答の結果、図5に示されるように、ファブリック上へのCL RD(A)の配送が生じる。ソース・メモリ・ロケーションのためのメモリ・コントローラが、CL読み取りオペレーションによってリクエストされたソース・データに対するソース・メモリ内の特定アドレスの利用可能性(即ち、そのアドレス・ロケーション又はデータが他のプロセスによってそのとき利用されていないかどうか)をチェックする。このチェックの結果、ヌル応答(又は、再試行)が生じる。
1つの実施例では、複製されるデータのソースがCL RDオペレーションにとって使用可能でないとき、そのソースが使用可能になるまで、CLRDオペレーションがキューに入れられる。従って、再試行は必要とされない。しかし、CL RDオペレーションのキューイングではなく再試行を行う実施例に対しては、メモリ複製機構が特定のCLRDオペレーションを再試行するように信号される。
(b)ファブリックにおける宛先IDタグ
図5に示されるように、ネーキッドCL WRに対するヌル応答と共に、宛先IDタグが宛先メモリのメモリ・コントローラによって送出される。次に、発生された宛先IDタグが、(プロセッサのIDではなく或いはプロセッサのIDに加えて)CDRDオペレーションに付加されるか又はCD RDオペレーション内に挿入可能である。図示の実施例によれば、宛先IDタグが、それぞれのCL RDリクエストと共にファブリック上に置かれる。宛先IDタグは、読み取りオペレーションによってリクエストされたデータが戻されるべきロケーションを識別するためにCLRDリクエストに与えられるルーティング・タグである。特に、宛先IDタグは、関連するCL RDオペレーションによって移動させられるデータを受け取るためのメモリ・バッファ(ネーキッドCLWRオペレーションに対して割り振られた)を識別する。
図12は、ファブリック上に送られる宛先IDタグ701(メモリ複製機構・タグ703を含む)と共に読み取り及び書き込みアドレス・オペレーション705を示す。それら2つは、ファブリック上でオーバラップする複数の複製オペレーションを区別するために利用される。図12に示されるように、アドレス・オペレーション705は、32ビットのソース(SRC)ページ・レベル・アドレス又は宛先(DST)ページ・レベル・アドレス及び追加の12個の予約ビットを含む。それらの予約は、ページ・レベル・アドレシングを行うためにメモリ複製機構211の制御ロジック303によって利用される5ビットを含む。
宛先IDタグ701がアドレス・オペレーション705に関連付けられている。宛先IDタグ701は、オペレーションを送出するメモリ複製機構のID、オペレーションのタイプ(即ち、WR、RD、トークンSRC、又はトークンDST)、カウント値(CNT)、及びオペレーションの応答/データを送るための宛先ユニットのIDを含む。図示のように、書き込みオペレーションが、先ず、図12のWRタグにおいて示されるようにIDフィールドにおけるメモリ・クリーナ・アドレスと共に送出される。SRCアドレスが、図12のRDタグに示されるように宛先実メモリ・アドレスとRDオペレーションにおいて置換される。
(c)ダイレクト「ソース・ツー・宛先」移動
リクエスティング・プロセッサ(又は、メモリ複製機構)を介して経路指定される移動ではないダイレクト「メモリ・ツー・メモリ」データ移動を完了するために、メモリ複製機構は、CLRDオペレーションのタグにおける物理プロセッサIDを宛先メモリ・ロケーションB(即ち、宛先ID)の実メモリ・アドレスと置換する。これは、後述するように、データが(メモリ複製機構によって経路指定される必要なく)メモリ・ロケーションBに直接送られることを可能にする。
現在のシステムでは、読み取りリクエストを発生するプロセッサ又はプロセッサ・チップのIDがその読み取りリクエストに含まれるか又はデータが戻されるべきコンポーネントを識別するための、その読み取りリクエストに対するタグとして供給される。即ち、そのIDは、読み取りオペレーションのソースを表し、データが移動する最終的な宛先を表すものではない。
メモリ・コントローラは、宛先タグ内の与えられたロケーションにデータを自動的に経路指定する。従って、現在のシステム関しては、データがプロセッサに送られる。しかし、本願において説明される実施例によれば、経路指定アドレスは最終的な(メモリ)宛先のアドレスであるので、ソース・メモリ・コントローラが必ずデータを宛先メモリに直接経路指定する。データは、ソース・メモリからスイッチを介して宛先メモリに直接転送される。データは、プロセッサ又はメモリ複製機構を介して送られるのではなく、従ってプロセッサからデータ経路指定オペレーションを排除する。特に、データが同じ物理メモリ・ブロック内で移動する実施例では、データが外部のスイッチ・ファブリックに送出されることなく、データ複製が完了し得る。
(d)データ複製オペレーションの完了のトラッキング
1つの実施例では、複製オペレーションが完了するときをメモリ複製機構が知るために、どのキャッシュ・ラインが(如何に多くのデータ部分が)複製オペレーションを完了したかをトラッキングするソフトウェア・イネーブルド(software-enabled)複製完了オペレーションが行われる。アドレスが送出される時とデータがスイッチを介した宛先までそれの経路を作る時との間の不確定時間のために、ロード完了レジスタが、メモリ・ロケーションB...Bにおいて受け取られたデータ部分A...Aの数をカウントするカウンタとして利用される。1つの実施例では、すべてのデータが宛先メモリ・ロケーションへのファブリック上を移動中であることを表すヌル応答を読み取りアドレス・オペレーションがいつ受け取るかに基づいて、メモリ複製機構が実際の移動の完了をトラッキングする。
ソフトウェア・レジスタが利用される別の実施例では、そのレジスタは、等しいビット数をCNT値として含む。従って、各ビットが、移動すべきデータのページの特定セグメント(又は、CLグラニュール(granule))に対応する。複製完了レジスタは、図3に示されるようなメモリ複製機構のコンポーネント部分であってもよい。複製オペレーションのデータすべてが宛先メモリ・ロケーションに複製されてしまうまでの複製オペレーションの進行をトラッキングするために、複製完了レジスタ317が利用される。
H.コヒーレンシ・プロトコル及びオペレーション
データ複製オペレーションを完了するときの1つの重要な考察事項は、データの最もコヒーレントなコピーを含むメモリ・ロケーション又はキャッシュからデータが調達されなければならないということである。従って、本発明はデータをメモリから直接に調達するものとして説明されるけれども、本発明の実際のアプリケーションは、キャッシュ/メモリ・サブシステムの任意のコヒーレントなロケーションからデータが調達されることを可能にする。メモリ・サブシステムの1つの可能な構成が図10によって示される。
プロセッサ611、613及びメモリ・サブシステムの種々のコンポーネントを含むシステム600のコンポーネントを連結するスイッチ603がバックグラウンドとして示される。本願において開示されるように、メモリ・サブシステムは、分散メイン・メモリ605、607、プロセッサ(L1)キャッシュ615、617、介入キャッシュでもよい低レベル(L2−LN)キャッシュ619、621、及び任意の同様のソースを指す。データを移動すべき時、これらのメモリ・コンポーネントのいずれかがそのデータの最もコヒーレントなコピーを含み得る。特に、図2に示されるように、及び上記したように、メモリ・コントローラ608は、複製されたデータが移動するメモリ・キャッシュ213(本願では、バッファとも呼ばれる)を含む。メモリに送られるデータが先ずメモリ・キャッシュ213にストアされ、しかる後、実際の物理メモリ607に移動するので、メモリ・キャッシュ213が宛先アドレスに対するデータ(即ち、M状態のデータ)の最もコヒーレントなコピーを含むことはまれなことではない。
或る先進システムでは、外部(ファブリック)バス663を介して接続された種々のシステム間でデータが共用される。本願で示されるように、外部メモリ・サブシステム661がメモリ・アドレスCと関連したメモリ・ロケーションを含む。このメモリ・ロケーションにおけるデータは、データ複製オペレーションにおけるソース・データの最もコヒーレントなコピーを表し得る。外部メモリ・サブシステム661への接続部663は、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)を介するものであってもよい。
コヒーレントなデータの調達に関する一般的なコヒーレンシ・プロトコル(例えば、修正(Modified – M)、排他的(Exclusive – E)、共用(Shared – S)、無効(Invalid – I)、即ち、MESIプロトコル)が使用可能である。しかし、本願において利用されるコヒーレンシ・プロトコルは、メモリ複製機構がキャッシュ・ラインの所有権を獲得してネーキッドCL WRオペレーションを完了することを可能にするように、一般的なプロトコルを拡張する。
各下位レベル・キャッシュは、それぞれのキャッシュ・コントローラ620、622を有する。データが分散メイン・メモリ605、607以外のロケーション、例えば、下位レベル・キャッシュ619から直接調達されるとき、そのキャッシュに対する関連のコントローラ(キャッシュ・コントローラ620)が、メモリ・コントローラ606、608と同じ方法でそのキャッシュ619からのデータの転送を制御する。
(a)ネーキッド・ライト・オペレーションに対するメモリ・キャッシュ・コントローラ応答
メモリのほかに上位レベル・キャッシュ及び下位レベル・キャッシュを含むメモリ・サブシステムに関して、ソース・アドレス及び宛先アドレスの両方に対するコヒーレントなデータがそれらのキャッシュ間で共用され、いずれのアドレスに対するコヒーレントなデータも、メモリよりもそれらキャッシュの1つに存在し得る。即ち、メモリ・サブシステムは、完全な連想メモリ・サブシステムとして動作する。ソース・アドレスに関して、データは、いつも、最もコヒーレントなメモリ・ロケーションから調達される。しかし、宛先アドレスに関しては、後述するように、コヒーレンシ・オペレーションが標準MESIプロトコルから変化する。
宛先メモリ・ロケーションのメモリ・コントローラがネーキッド・ライト・オペレーションを受け取るとき、メモリ・コントローラは、3つのメイン・スヌープ応答の1つでもってネーキッド・ライトの各々に応答する。種々のネーキッド・ライトに関する個々の応答がメモリ複製機構に送られる。3つのメイン・スヌープ応答は次のような応答を含む:
1.メモリ・キャッシュがM状態にあるデータを有するが、I状態には進むことができず、或いは、メモリ・コントローラがWRリクエストを受容することができない/WRリクエストにバッファを割り振ることができないことを表す再試行応答;
2.メモリ・コントローラがWRリクエストを受容することができ、すべての対応するキャッシュ・ラインに対するコヒーレンシ状態が直ちにI状態に進むことができることを表すヌル応答;
3.メモリ・キャッシュにおけるCLのコヒーレンシ状態がM状態からI状態に遷移したが、メモリ・コントローラがまだWRリクエストを受容することができないわけではない(即ち、メモリ・コントローラが、移動するデータを受け取るためのバッファをまだ割り振ることができない)ことを表すACK再送応答。
後者の応答(ACK再送)は、メモリ複製機構にCLデータの保護を開始させる(即ち、キャッシュ・ラインに対するアクセスをリクエストする他のコンポーネントに再試行を送る)結合応答である。キャッシュ・ラインは、後述のように、I状態に置かれているため、修正されたデータはそのキャッシュ・ラインから失われる。その後、メモリ・コントローラは、適切な読み取りオペレーションが完了するまで予約されているメモリ・キャッシュ内のアドレス・バッファを割り振る。
(b)キャッシュ・ライン無効化及びラインのメモリ複製機構保護
説明している実施例によれば、ネーキッド・ライト・オペレーションは、完全な連想メモリ・サブシステムにおけるすべての対応するキャッシュ・ラインを無効にする。特に、メモリ複製機構がメモリ・キャッシュの修正キャッシュ・ラインをターゲットとするネーキッドWRを実行する(即ち、キャッシュ・ラインがMESI又は他の同様のコヒーレンシ・プロトコルのM状態にある)ときには、いつも、メモリ・コントローラが、ネーキッド・ライトのスヌーピングに応答して、キャッシュ・ラインのコヒーレンシ状態を無効(I)状態に更新する。
更に、ネーキッドWRは、メモリ・キャッシュによる「再試行/プッシュ」オペレーションを生じさせない。従って、標準的なコヒーレンシ・オペレーションとは違って、ネーキッド・ライト・オペレーションがメモリ・キャッシュにおいて受け取られるとき、修正データがメモリ・キャッシュからメモリに押し出される。ネーキッド・ライトは、直ちに、現在の修正データを無効にする。実際の移動オペレーションの後、複製されたデータのキャッシュ・ラインがMコヒーレンシ状態を割り当てられ、しかる後、標準的なコヒーレンシ・オペレーションに従って、対応するアドレス・スペースにあるデータに対するその後のリクエストに応答してデータを調達するために利用される。
キャッシュ・ラインが無効にされるとき、メモリ複製機構は、キャッシュ・ラインの保護を開始し、修正スヌーパの役割を果たす。即ち、メモリ複製機構は、あたかもキャッシュ・ラインがM状態にあるように、キャッシュ・ラインのすべてのコヒーレンシ保護を完了する責任がある。例えば、図6のブロック511に示されるように、複製オペレーションが実際に終了する前にデータが他のプロセスによって必要とされる(例えば、A0にストアされたデータの読み取りがスヌープされる)場合、メモリ・コントローラは、データの物理的移動が実際に完了するまで、そのデータの送出を再試行するか又は遅延させる。従って、他のコンポーネントからのキャッシュ・ラインに対するスヌープされたリクエストは、データが複製されてしまい、キャッシュ・ライン状態がMに戻るように変化してしまうまで、再試行される。
図15は、本発明の1つの実施例に従って、メモリ複製オペレーションのためのコヒーレンシ・オペレーションが完了するプロセスを示す。このプロセスは、ブロック851で始まり、それに続いて、ブロック853に示されるように、メモリ複製機構がネーキッドCLWRを送出する。図示のプロセスでは、ブロック855に示されるように、すべてのスヌーパがネーキッドCL WRをスヌープする。しかる後、ブロック857に示されるように、最高のコヒーレンシ状態を持ったスヌーパ(この場合、メモリ・キャッシュ)がキャッシュ・ライン状態を修正(M)から無効(I)に変化させる。
特に、一般的なコヒーレンシ・プロトコル・オペレーションとは違って、スヌーパは、データが無効にされる前にそのデータをメモリにプッシュする操作を開始しない。メモリ複製機構がキャッシュ・ラインに対する保護を行う必要があるということを、関連のメモリ・コントローラがメモリ複製機構に信号する。従って、メモリ複製機構がキャッシュ・ラインを保護するタスクを与えられる時、キャッシュ・ラインは、直ちに、I状態をタグされる。I状態におけるキャッシュ・ラインに関して、メモリ複製機構は、スヌープ等からのキャッシュ・ラインの保護に対する十分な責任を取る。
図15の説明に戻ると、ブロック859において、キャッシュ・ラインのためのバッファが使用可能であるかどうかの決定が(宛先メモリ・コントローラによって)行われる。バッファが使用可能ではない場合、ブロック861において、再試行のスヌープ応答が発生される。しかる後、ブロック863において、メモリ複製機構がネーキッドCL WRを再送する。しかし、バッファが使用可能である場合、メモリ・コントローラは、ブロック865に示されるように、スヌープされたネーキッドCL WRにバッファを割り当てる。
次に、ブロック867に示されるように、データ複製プロセスが始まる。ブロック869に示されるように、データ複製プロセスが完了するとき、ブロック871に示されるように、複製されたデータを保持するキャッシュ・ラインのコヒーレンシ状態がMに変更される。次に、ブロック873に示されるように、プロセスが終了する。1つの実装方法方法では、宛先メモリ・コントローラ(MC)は、ネーキッドCLWRにとって使用可能なアドレス・バッファを持たないことがあり、MCがネーキッドCL WRを受容して対応するバッファを割り振ることができるまで、ネーキッドCL WRを再送させるACK再送応答を発生する。
(c)ライブロック回避
ライブロックを回避する新規な方法が提供される。この方法は、ネーキッドWRがライブロックを回避するために飛行している間、修正キャッシュ・ラインの無効化を必要とする。
図14は、ネーキッド・ライト及びその後のデータの物理的移動が本発明に従って完了すべきときのロック競合を処理するプロセスを示す。そのプロセスはブロック821において始まり、次に、ブロック823に進む。ブロック823は、プロセッサP1がロケーションAからロケーションBへのキャッシュ・ライン移動をリクエストすることを表す。P1及び(又は)P1によって開始されたプロセスが、ネーキッドWRの前のメモリ・ロケーションにおけるロック及びソースからのデータの物理的移動を得る。しかる後、ブロック825に示されるように、プロセッサP2が宛先アドレス又はソース・アドレスにおけるキャッシュ・ラインへのアクセスをリクエストする。
ブロック827において、実際の移動が完了したか(即ち、P1がロックをリリースし得るか)どうかの決定が(宛先メモリ・コントローラによって)行われる。実際の移動が完了してしまった場合、ブロック831に示されるように、P2はメモリ・ロケーションへのアクセスを与えられ、しかる後、ロックを得ることができる。しかし、移動が依然として進行中である場合、実装される実施例次第で、2つのパスの1つが与えられる。第1の実施例では、ブロック829に示されるように、P1がキャッシュ・ラインにおけるロックを放棄するまで、再試行応答がP2リクエストに戻される。
もう1つの実施例では、実際の移動が未だ始まっておらず、リクエストがロケーションAからのデータの読み取りのためのものである場合、データがロケーションAから与えられる。これは、再試行を行うのではなく、複数のプロセスが同じソース・ロケーションからデータを調達することを可能にする。しかし、特に、データが移動しているときに宛先アドレスにアクセスすることを求めるリクエストは、そのデータが移動を完了してしまうまで常に再試行される。
I.多重同時データ移動及びタグ識別子
(a)複数メモリ複製機構及び複製オペレーションのオ−バラップ
ネーキッド・ライトを完了し且つCL RDにタグを割り当てるための方法に対する1つの主要な利点は、複数の複製オペレーションが多数のメモリ複製機構を介してシステム上に実装可能であることである。従って、本発明は、複数の独立したメモリ複製機構を可能にし、それによって、それらメモリ複製機構の各々が、ファブリック上で別のメモリ複製機構における別のデータ複製オペレーションとオーバラップするデータ複製オペレーションを遂行し得るようにするものである。特に、ロック(又は、ロック獲得)を必要としないメモリ複製機構のオペレーションは、これらの複数のメモリ複製機構が同時複製オペレーションを送出することを可能にする。
本実施例では、1チップ当たり1つのメモリ複製機構しか設けられず、その結果、各チップから一時に1つの複製オペレーションを完了するだけである。複数のプロセッサ・チップが単一のメモリ複製機構を共用するという別の実施例では、メモリ複製機構は、どのプロセッサが所与の時間にアクセスを与えられるかを決定するためのアービトレーション・ロジックを含む。アービトレーション・ロジックは、複数のメモリ移動オペレーションを、プロセッサから受け取った順序で完了するように保持することができるFIFOキューと置換可能である。別の実施例は、1プロセッサ・チップ当たりのメモリ複製機構の細分度(granularity)を高め得るし、1チップ当たりの複数のメモリ複製オペレーションを可能にする。この場合、各複製オペレーションは別々のメモリ複製機構によって制御される。
本発明は、複数のメモリ複製機構が同時に動作することを可能にする。メモリ複製機構は、トークン・オペレーションを介して相互にコミュニケーションを行い、各メモリ複製機構は、他のメモリ複製機構にそれの複製オペレーションのソース及び宛先アドレスを知らせる。第1のメモリ複製機構の宛先が、既にデータ複製オペレーションを行っている第2のメモリ複製機構のソース・アドレスと同じアドレスである場合、第1のメモリ複製機構は、第2のメモリ複製機構がそれの実際のデータ移動を完了するまで、複製オペレーションを遅らせる。
(b)宛先ID及び追加タグを介した複数複製オペレーションの識別
ダイレクト「ソース・ツー・宛先」複製オペレーションを可能にすることに加えて、複数の複製オペレーションからのデータがオーバラップするか又は同時に完了するとき、ファブリックにおけるデータ保有権を一意的に識別するためにも、宛先IDタグが利用される。単一の複製オペレーションからデータだけがいずれかの宛先メモリ・アドレスに一時に送られることがあるので、各宛先IDは必ず一意的である。
別の実装方法では、図12のデータ・タグ701のデータ・ルーティング・セクションに追加のビット・セットが付加される。これらのビット(又は、複製IDタグ)703は、特定の複製オペレーションからデータを一意的に識別し、(又は)その複製オペレーションと関連したメモリ複製機構を識別する。従って、追加ビットの実際の数は、システム設計者が希望する特定の実装方法に基づく。例えば、2つのメモリ複製機構しか持たない最も単純な実装方法では、第1複製オペレーションのデータ(第1メモリ複製機構に関連した)と第2複製オペレーションのデータ(第2メモリ複製機構に関連した)とを区別するために、単一のビットが利用可能である。
明らかに、種々のデータ・ルーティング・オペレーションの識別のために少数のビットしか利用されないとき、複製IDタグ703は、利用される各タグが一意的である場合に生じ得る同時複製オペレーションの数を厳しく制限する。
(c)宛先ID及び複製IDタグの結合
種々の複製オペレーション/データを一意的に識別するもう1つの方法は、宛先ID及び複製IDタグの結合を利用することによるものである。この実装に関しては、特定の複製オペレーションのための宛先IDが(後述のコヒーレンシ及びロック競合問題のために)他の未処理の複製オペレーションに対する宛先IDとは同じであり得ないので、複製IDタグのサイズが比較的小さいことがあり得る。
図12に示されるように、タグが個々のデータ複製オペレーションに関連付けられる(リンクされる、付加される、又は別の状態にされる)。従って、第1データ複製オペレーションが1つのページからの12個の個々のキャッシュ・ラインのデータ移動を伴なう場合、12個のデータ複製オペレーションの各々が同じタグを与えられる。20個のデータ・セグメントの移動を伴なう同時複製オペレーションも、第1複製オペレーション等のタグとは異なる第2のタグをタグ付けされた各データ移動オペレーションを有する。
(d)再使用可能なタグ識別子
メモリ複製機構によって利用された個々のキャッシュ・ライン・アドレスは、アドレス・フィールドにおける12個の予約ビットのうちの最初の5ビットによって決定される。12個の予約ビットがあるので、更に小さい又は大きい数のアドレスが可能である。1つの実施例では、タグを設けるために他の予約ビットが利用される。従って、本発明は別個の複製タグ識別子と関連して説明されたけれども、アドレス・フィールドの上位桁ビットが宛先IDに割り当てられる場合、上記の特徴は、下位桁の予約ビットによって容易に与えられ得る。
1つの実施例では、大きな数のメモリ複製オペレーション(例えば、大規模なマルチプロセッサ・システムにおける)を容易にするためには、前のデータが最早ファブリック上に経路指定されない場合、複製IDタグ703が再使用される。1つの実施例では、タグの再使用は、データ移動が取り得る最大のインターバルを得るよう十分にタグを大きくすることによって達成される。
図示の実施例では、再使用可能なビット・シーケンスとしてタグが設計され、タグ使用中の如何なるタグ衝突(tag collision)も回避するに必要な最少のビット数が選択される(即ち、設計パラメータとして決定される)。その決定は、プロセッサの数、オーバラップする複製オペレーションのおおよその数、及び完了すべき複製オペレーションの時間長を考慮することを伴なう。タグは順次割り当てられ、シーケンスにおける最後のタグが割り当てられるとき、第1タグが次の実行される複製オペレーションに割り当てられるようにフリーでなければならない。従って、第1の実行されたタグがリタイヤ(retire)されると(即ち、関連のデータ複製オペレーションが完了すると)直ちにタグ番号付けが再開するように、タグ・リタイヤメント(tagretirement)及び再使用のプロセスが1つのシステム・レベルにおいて実装される。
別の実施例は、すべての複製オペレーション又はメモリ複製機構が一意的な数を割り当てられることによって、可能な最大数の同時複製オペレーションをカバーするに必要な数のビットを含む複製IDタグを提供する。いずれの実施例にとっても、複製IDタグのオーバラップは生じない。
タグを再使用すべき時を含むタグ割り振り解除(tagdeallocation)を保証するための幾つかの可能な方法が使用され得る。1つの実施例では、タグが割り振り解除され、再使用され得ることを保証するための確認が必要である。データ複製オペレーションが完了すると直ちに、割り振り解除の確認が宛先メモリ・コントローラからメモリ複製機構によって受け取られる。
(e)タブ・ベースの衝突に対する再試行
1つの実施例はタグ・ベースの衝突に対する再試行の概念を導入する。この実施例によれば、タグは再使用可能であり、一意的である必要はない。従って、タグ「001」を有する第1複製オペレーションは、依然として、その後の複製オペレーションがそのタグ番号を割り当てられるとき、完了することが可能である。これが生じるとき、第1複製オペレーションを所有する第1メモリ複製機構は、その後の複製オペレーションに対するタグの割り当てをスヌープする(又は、その割り当てに対する信号を受ける)。そこで、第1メモリ複製機構は、その後のメモリ複製機構・オペレーションを所有する第2メモリ複製機構のネーキッド・ライト・オペレーションに対するタグ・ベースの再試行を実行する。第1複製オペレーションが完了する(即ち、データが移動してしまう)まで、その後の複製オペレーションが次のメモリ複製機構によって遅らせられる。
J.設計済みビット及びST複製オペレーション
ほとんどの現在のプロセッサは、ファブリックにおける命令の実行を遅らせる(hold up)外部割込みによって動作する。外部割込みの特徴は、オペレーティング・システム(OS)によってセットされるハードウェア・ビットによって行われる。OSは、アサートされた(asserted)又はアサート解除された(de-asserted)割り込みビットでもってプロセッサの動作状態をセットする。アサートされるとき、割り込みが命令ストリームの実行中の任意の時間に生じ得るし、プロセッサ又はアプリケーションのいずれも、割り込みが生じたときに如何なる制御も行わない。
外部割込み中の制御の欠如は、外部ファブリックにおける移動オペレーション時の考察事項である。特に、移動オペレーションは、プロセッサが一連の命令(例えば、6個の連続した命令)を実行することを必要とする。その命令シーケンスの実行時に割り込みを生じさせることなく移動オペレーションが完了するためには、プロセッサは、移動オペレーションを遂行する一連の命令を送出する前にファブリックにおけるロックを確保しなければならない。これは、ロックが1つのリクエスティング・プロセッサにしか与えられ得ないので、1つのプロセッサだけが移動オペレーションを実行し得ることを意味する。
本発明の1つの実施例によれば、外部割込み(EE)ビットのアサーション(assertion)及びアサーション解除(de-assertion)を可能にする特徴が、割り込みビットがプロセッサにおいて実行されるソフトウェアによってアサート又はアサート解除されることを可能にするように修正される。即ち、命令のシーケンスが割り込みを受けることなくプロセッサが特定のシーケンスを実行することを可能にするために、外部割込み(EE)ビットをトグルできる特別の命令でもってアプリケーションがコード化される。
EEビットをアサート解除することは、命令のシーケンスを送出する前に、プロセッサが外部ファブリックにおけるロックを確保する必要がないようにする。その結果、複数のプロセッサが、それらの個々の命令シ−ケンスを同時に送出することができる。この特徴は、これがデータ複製オペレーションに適用されるとき、マルチプロセッサ・システムにおける複数のプロセッサが、それぞれロックを得ることを必要とせずに複製オペレーションを同時に実行することを可能にする。更に、この特徴は、プロセッサがデータ複製オペレーションを完了する必要があるときにいつも各プロセッサがデータ複製を始めることを可能にする。更に、後述するように、割り込みなしで命令を実行することは、メモリ複製機構がパイプライン態様で一連の命令を実行することを可能にする。
図示の実施例では、割り込みを含むよう又は割り込みを含まないようプロセッサの動作状態を動的に切り替えるために、設計済みのEE(外部割込み)ビットが利用される。複製オペレーションを構成する命令のシーケンスは、これらの命令相互間で割り込みを行うことなくファブリックにおいて実行される。アプリケーション内のプログラム・コードが外部割込みを動的にディセーブル及びイネーブルするようにEEビットをトグルする。OSが選択した割り込み状態が、特定の命令シーケンスに対してアプリケーション・ソフトウェアによりオーバライド(over-ride)される。本実施例によれば、EEビットは、プロセッサにおいて実行中のアプリケーションによって1又は0にセットされ得る。なお、各値は、プロセッサの設計及びEEビットと関連したソフトウェア・コード化値に依存した特定の割り込み状態に対応する。
従って、本発明は、外部割り込みがディセーブルされるとき、複数の命令の実行を可能にするソフトウェア・プログラミング・モデルを提供する。本実施例に関して、移動又は複製オペレーションを完了する命令のシーケンスは、次のような例示コード・シーケンスによって示されるように、EEビットをアサート解除するための命令によって先行される:
EEビット=0
ST A
ST B
ST CNT
EEビット=1
SYNC
上記の実施例では、EEビットが0の値を有するとき、外部割込みはオフに転換される。命令は、プロセッサからメモリ複製機構までパイプライン化される。しかる後、EEビットの値は1に変更され、それは、プロセッサ状態が、外部割込みを可能にする割り込みイネーブル状態に戻ることを表す。しかる後、SYNCオペレーションがファブリック上に送出される。
(a)ST複製オペレーション
1つの実施例では、メモリ複製機構(又は、プロセッサ)が上記の命令シーケンスを、複製オペレーションを表すものとして認識し、外部割り込みがその命令シーケンスに割り込みを行わないようにEEビットをセットする。別の実施例では、上記命令シーケンスは、メモリ複製機構により、結合アトミック・ストレージ・オペレーションとして受け取られる。その結合オペレーションは、本願では、ストア(ST)複製と呼ばれ、3つの個別のストア・オペレーション及びSYNCオペレーションの上記シーケンスを単一のST複製オペレーションと置換する。
ST複製は、メモリ複製機構に複製オペレーションを開始させるマルチバイト・ストレージ・オペレーションである。EEビットをセットすることは、メモリ複製機構がSYNCに先行する上記ストア命令のシーケンスをST複製オペレーションと置換することを可能にする。
従って、4つの個々のオペレーション(即ち、3つのストアに後続するSYNC)が単一のST複製オペレーションと置換され得る。更に、本発明のこの実施例によれば、アーキテクチャ的に終了した状態がメモリ複製機構によって検出されると、プロセッサはデータ複製オペレーションが完了したことを信号されるので、SYNCオペレーションはバーチャルである。アーキテクチャ的に終了した状態は、あたかも実行されたSYNCがメモリ複製オペレーションに続いてACK応答を受け取ったが如くプロセッサを行動させる。
K.予約ビットによる仮想/実アドレス動作モード
本発明は、処理ユニットのための仮想又は実アドレシング機能に関するアプリケーション・ベースの動的選択を可能にする。メモリにおけるデータのロケーションに影響を与え得る各命令(例えば、ST命令)において、プロセッサの動作モードを仮想アドレシング・モード又は実アドレシング・モードとして選択するために、ソフトウェア・アプリケーション(即ち、OSではない)によってセット可能な予約(又は、リザーブ)ビットが与えられる。図16は予約ビット901を伴なうアドレス・オペレーション900を示す。予約ビット901は、プロセッサ上で実行されるソフトウェア・アプリケーションによって動的にセット可能である。プロセッサの動作モードは、そのプロセッサにおいて実行されているアプリケーション・プログラムによって与えられるコードに依存して仮想アドレシング・モードから実アドレシング・モードに及びその逆に変化する。
予約ビット901は、実アドレシング又は仮想アドレシングのどちらが望ましいかを表示する。その予約ビットは、プロセッサにおいて実行中のソフトウェア・アプリケーションによって1つの値(1又は0)を割り当てられる。仮想アドレシングを表すために「0」のデフォルト値を利用することが可能であり、実アドレシング・モードが必要であるとき、ソフトウェアがその値を「1」に動的に変更することが可能である。プロセッサは、特定のアドレス・オペレーションに対してどちらの動作モードが必要であるかを決定するために、予約ビットの値を読み取る。
仮想アドレシング・モード又は実アドレシング・モードの選択は、プロセッサによって実行されつつある特定のアプリケーション・プロセスによって決定可能である。アプリケーション・プロセスがデータの保護よりもむしろパフォーマンスを高められたシークを必要とするとき、アプリケーション・プロセスが有効アドレスをOS及びファームウェアに直接に送ることを可能にする仮想動作モードが選択される。
図17は、典型的なソフトウェア環境及びアドレス・オペレーションのための関連デフォルト動作モードに関するソフトウェア層の図を示す。図示のように、ソフトウェア・アプリケーション911は仮想アドレシング・モードで動作し、一方、OS913及びファームウェア915は実アドレシング・モードで動作する。パフォーマンスの増加をもたらすモードの選択は、予約ビットを仮想アドレシング・モードに対する事前設定された値にセットすることによって達成される。同様に、データ保護が望ましいとき、予約ビットが、仮想アドレシング・モードを表す値にセットされ、仮想データ・アドレスがメモリ複製機構211に送られる。そこのTLB319が、その後、対応する実アドレスを提供する。従って、本発明は、パフォーマンス対データ保護に関するソフトウェア指向の平衡化を可能にする。
仮想アドレシング・モードにおけるプロセッサ・オペレーションは、メモリ複製機構211の仮想・実アドレス変換ルックアサイド・バッファ(TLB)によってサポートされる。TLBは、メモリ複製機構オペレーションがプロセッサからの仮想アドレスを受け取るとき、仮想アドレスから実アドレス(又は、物理アドレス)にアドレスを変換するために利用される。そこで、仮想アドレスは、ファブリック上に送出される前に実アドレスに変換される。OSの観点から、仮想アドレシング・モードはユーザ・レベル特権を可能にし、一方、実アドレシング・モードはそれを可能にするものではない。従って、仮想アドレシング・モードは、データがユーザ・レベル・アプリケーションによって及びOSによってアクセスされることを可能にする。更に、仮想アドレシング・モードは、オペレーティング・システム(OS)及びユーザ・レベル・アプリケーションがメモリ複製機構をアクセスすることを可能にする。実アドレス動作モードは、命令がプロセッサから発生されると直ちにはアドレス変換の必要はないので、より速いパフォーマンスを可能にする。
L.追加の特徴、概観、及び利点
データ移動オペレーションのターゲットであるデータは、実メモリ、プロセッサ・キャッシュ、低レベル・キャッシュ、介入キャッシュ等の間の最もコヒーレントなメモリ・ロケーションから調達される。従って、ソース・アドレスは、リクエストされたデータのコヒーレント・コピーを含むメモリ・サブシステムにおける正しいメモリ・モジュールを表す。
本発明は、複数の複製オペレーションがファブリック上でオーバラップする(又は、同時に実行される)ことを可能にする。各個別の複製オペレーションが完了したことを監視及び一意的に判別するために、ソース・アドレスに送られた読み取りオペレーションのアドレス・タグに付加されるタグが与えられる。タグはMビット・レジスタにストア可能である。なお、各複製オペレーションはそのレジスタに異なる値を入れられ、Mはそのシステムにおける可能な最大数の同時複製オペレーションをサポートするために選択された設計パラメータである。
上述のように、ネーキッドWRプロセスが完了すると、直ちに移動がアーキテクチャ的に終了する。アーキテクチャ的に終了した状態及び他の関連する特徴の実装は、プロセッサをデータ移動オペレーションから比較的速くリリースする。メモリ移動に関連した待ち時間のかなりの部分を表すデータの物理的移動はすべてバックグラウンドにおいて生じる。プロセッサは、命令シーケンスにおけるSYNCに続く命令の処理をかなり速く再開することができる。それは、アーキテクチャ的に終了した状態を生成するネーキッド・ライト・プロセスにデータ伝送フェーズが含まれないためである。
特に、データが同じメモリ・モジュールにおけるアドレス相互間で移動する場合、データが外部スイッチ・ファブリック上を伝送される必要がないので、時間的利点が更に明白である。そのような「内部」メモリ移動は、メモリ・モジュールの種々のサブ・コンポーネント(例えば、コントローラ等)を相互接続するメモリ・チップ上の上部層によって促進される。メモリ・モジュールのそのような構成が図11に与えられる。従って、種々のモジュール相互間で実行する内部接続が存在するスイッチ実装では、メモリ・モジュール605の上部層金属651を介しても、ダイレクト内部データ・クローニングが可能である。
本発明は、
(1)移動したデータが伝統的なプロセッサ開始の移動のようにキャッシュ(L2、L3等)をロールしない;
(2)アーキテクチャ的に終了したプロセッサ状態のために、実行中のソフトウェア・アプリケーションも極めて早く完了する;
ことを含む幾つかの他の識別可能な利点を提供する。例えば、従来技術では、128B CL移動(LD/ST)が、LD/ST:1CLRDx(アドレス及びデータ)、32CL WRy(アドレス及びデータ)、32CL WRy(アドレス及びデータ)として実行される。このオペレーションは、3つのアドレス・オペレーション及び384バイトのデータ・トランザクションに有効である。しかし、本発明に関しては、同じプロセスが1つのネーキッドCLWRy(アドレスのみ)及び1つのCL RDx(アドレスのみ)バス・トランザクションによって完了する。従って、大きなパフォーマンス・ゲインが得られる。
本発明は、分散メモリ構成を有するスイッチ・ベースのマルチプロセッサ・システムの現在使用可能な幾つかの特徴/オペレーションを活用して、プロセッサの立場から、データの移動における大きな有効性を提供する。例えば、伝統的に、MCは、メモリ(キャッシュ・ライン)からのデータを実際にプロセッサに送ること及びプロセッサから受け取ることを制御する。MCは、アドレス及びソースIDを与えられ、これら2つのパラメータを利用して、リクエストされたデータを送出する。キャッシュ・ライン読み取りに関連したアドレス・タグにおける宛先IDでもってソースIDを置換することにより、本発明は、伝統的なMCロジック及び(又は)機能に対する変更を必要とすることなく、データが移動するダイレクト「MCツーMC(MC-to-MC)」伝送(即ち、送信及び受信すること)を可能にする。
スイッチは、複数のメモリ複製オペレーションが同時に生じることも可能にする。その結果、更に、メモリ・キュー/バッファの効率的な利用が可能になる。ダイレクト・スイッチ接続に関して、データの移動に伴なう時間は、メモリ複製オペレーションの量に従属した距離でもカウントでもない。
本発明は、ハードウェアの仮想化及び幾つかのソフトウェア制御された特徴によって、アクセラレータ・エンジンを備えた現在のプロセッサにおけるハードウェア・ベースの移動オペレーションを改良する。即ち、移動オペレーションを完了するために伝統的に割り当てられたハードウェア・コンポーネントを実際に利用することなく、ハードウェア・モデルのパフォーマンス上の利益が得られ且つ改良される。
もう1つの例は、移動するキャッシュ・ラインが、最早、単一のポイントを通る(即ち、伝統的に、移動するすべてのデータを受け取り、しかる後、それを送出する単一のプロセッサ・チップに入力しそしてそのプロセッサ・チップから出力する)必要がないので、ファブリック上のより速いデータ移動を可能にする。更に、実際のデータ移動は、単一の収集ポイントに送ることを必要としないので、(複数の)キャッシュ・ラインの並行移動を可能にするためのスイッチが利用され、その結果、より高い帯域幅へのアクセス及びその後のすべての物理的移動を遥かに速く完了することを可能にする。従来のシステムは、一時に単一の移動しか完了することができない。
本発明は、更に、バイト、キャッシュ・ライン、及びページの移動を可能にする。移動が実際に生じるときに対する実際の時間は与えられないけれども、この情報はメモリ複製機構によってトラッキングされ、プロセッサ・システムのコヒーレンシが維持される。プロセッサ・リソースは、データが或るメモリ・ロケーションから別のメモリ・ロケーションに移動するまで待たずに更なるタスクを完了するためにフリーである。というのは、特に、この移動は、実際の移動が完了しつつあるとき、実装された如何なる他のプロセスにも影響を与えないためである。
特定の実施例に関連して本発明を説明したけれども、この説明は限定的な意味で解釈されてはならない。本発明の開示された実施例及び別の実施例に関する種々の修正は、本発明の説明を参照すれば当業者には明らかになるであろう。従って、特許請求の範囲において定義された本発明の精神及び範囲から逸脱することなくそのような修正が行われ得ることは明らかである。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)第1のメモリ複製機構を有する第1のプロセッサと、
第2のメモリ複製機構を有する第2のプロセッサと、
メモリ・サブシステムと、
前記第1及び第2のプロセッサと前記メモリ・サブシステムとを相互接続するための手段と、
データ複製オペレーションの前に、前記第1のメモリ複製機構及び前記第2のメモリ複製機構のうちの特定のメモリ複製機構から送出される複数のトークン・オペレーションと、
を含み、
前記トークン・オペレーションは、前記特定のメモリ複製機構から生じるデータ複製オペレーションのためのソース・アドレス及び宛先アドレスをリザーブする、マルチプロセッサ・データ処理システム。
(2)前記トークン・オペレーションは、
複製オペレーションのデータが調達されるメモリ・アドレスを含むソース・トークンと、
複製オペレーションのデータが送られるメモリ・アドレスを含む宛先トークンと、
を含む、請求項1に記載のマルチプロセッサ・データ処理システム。
(3)前記ソース・トークン及び前記宛先トークンの各々は、単に前記データ処理システムのファブリックにおけるアドレス・オンリ保有権である、請求項2に記載のマルチプロセッサ・データ処理システム。
(4)前記ソース・トークン及び前記宛先トークンは、それぞれのソース及び宛先アドレスが他の複製オペレーションを行うために他のメモリ複製機構によって利用されるかどうかを決定するためにそれぞれのソース及び宛先アドレスを照会する、請求項2に記載のマルチプロセッサ・データ処理システム。
(5)前記メモリ複製機構内にあって、データ複製オペレーションを開始する前に、前記データ処理システムのファブリック上に前記ソース・トークン及び前記宛先トークンを送出するための手段を更に含む、請求項4に記載のマルチプロセッサ・データ処理システム。
(6)前記ソース・トークン及び前記宛先トークンは、前記ソース・トークン及び前記宛先トークンを送出したメモリ複製機構にメモリ・アドレスの使用可能性に関する表示を返送する、請求項5に記載のマルチプロセッサ・データ処理システム。
(7)前記メモリ複製機構内にあって、前記表示がヌル応答であるときにデータ複製オペレーションを開始するためのリクエストを送出するための手段を更に含み、
前記ヌル応答は、現在、他のメモリ複製機構がそれぞれのソース及び宛先アドレスを利用しようとしていないことを表す、請求項6に記載のマルチプロセッサ・データ処理システム。
(8)前記データ複製オペレーションを開始することは、現在、前記宛先アドレスを他のプロセスが利用しようとしていないと直ちにネーキッド・ライト・リクエストを送出し、それによって、複数の複製オペレーションのためのデータが同じソース・アドレスから調達される、請求項5に記載のマルチプロセッサ・データ処理システム。
(9)前記メモリ複製機構内にあって、他のメモリ複製機構から送出された各ソース及び宛先トークンをスヌープするための手段と、
前記スヌープに対して応答を供給するための手段と、
を更に含む、請求項6に記載のマルチプロセッサ・データ処理システム。
(10)前記応答を供給するための手段は、
前記ソース・トークン及び宛先トークンの前記ソース・アドレス及び宛先アドレスと未だ完了していないデータ複製オペレーションのソース・アドレス及び宛先アドレスとを比較するための手段と、
スヌープされた宛先アドレスが、未だ完了していないデータ複製オペレーションのソース・アドレス又は宛先アドレスと同じであるとき、再試行応答を供給するための手段と、
を含む、請求項9に記載のマルチプロセッサ・データ処理システム。
(11)マルチプロセッサ・データ処理システムのファブリックにおける複数の同時複製オペレーション時のライブロックを回避するための、前記データ処理システムにおける方法であって、
データ複製オペレーションを開始する前に、前記データ複製オペレーションを完了するために必要なソース・アドレス及び宛先アドレスの使用可能性をチェックするトークン・オペレーションを前記ファブリック上に送出するステップと、
現在、他のデータ複製オペレーションが前記ソース及び宛先アドレスを利用しようとしていないことを表す応答を前記トークン・オペレーションが供給するときだけ前記データ複製オペレーションを開始するステップと、
を含む方法。
(12)前記送出するステップは、
データ複製オペレーションのデータが調達されるメモリ・アドレスを含むソース・トークンを送出するステップと、
データ複製オペレーションが送られるメモリ・アドレスを含む宛先トークンを送出するステップと、
を含む、請求項11に記載の方法。
(13)前記送出するステップにおける前記ソース・トークン及び前記宛先トークンがファブリックにおいて保有権を与える、請求項11に記載の方法。
(14)更に、前記ファブリックにおける前記トーク・オペレーションをスヌープするステップを含む、請求項11に記載の方法。
(15)スヌープされたトークン・オペレーションのソース・アドレス及び宛先アドレスと現在実装されることになっている第2のデータ複製オペレーションの第2のソース・アドレス及び第2の宛先アドレスとを比較するステップと、
前記スヌープされたトークン・オペレーションに応答を供給するステップと、
を更に含む、請求項14に記載の方法。
(16)前記供給するステップは、スヌープされた宛先トークンの宛先アドレスが第2のデータ複製オペレーションの第2のソース・アドレス又は第2の宛先アドレスと同じであるときに再試行応答を供給するステップを含む、請求項15に記載の方法。
(17)前記開始するステップは、宛先トークン・オペレーションが宛先アドレスの使用可能性を表すと直ちに前記データ複製オペレーションを含み、
複数の複製オペレーションに対するデータが同じソース・アドレスから調達される、
請求項12に記載の方法。
従来技術に従ってデータを移動させるために利用されるハードウェア・エンジンを持ったマルチプロセッサ・データ処理システムを示すブロック図である。 本発明の1つの実施例に従って、メモリ複製機構を含めて構成された処理システムにおける例示的な「メモリ・ツー・メモリ」複製オペレーションを示すブロック図である。 本発明の1つの実施例に従って、図2におけるメモリ複製機構のコンポーネントを示すブロック図である。 本発明の1つの実施例に従って、メモリ複製オペレーションに対するソース・アドレス及び宛先アドレスをストアするために利用される、メイン・メモリにおけるメモリ・ロケーションX及びYを表すブロック図である。 本発明の1つの実施例に従って、図2におけるデータ処理システムの(スイッチ)ファブリック上の、ネーキッド・ライトを含むメモリ・アドレス・オペランド及びタグのフローを示す図である。 本発明の例示的な実施例に従って動作するように構成されたデータ処理システムにおいてデータを複製する一般的なプロセスを示すフロー・チャートである。 本発明の1つの実装に従って、データ複製オペレーション中にネーキッド・ライトを送出するプロセスを示すフロー・チャートである。 本発明の1つの実施例に従って、アーキテクチャ的に終了した状態に先行するプロセス・ステップ及び後続するプロセス・ステップを示すフロー・チャートである。 本発明の1つの実施例に従って、読み取りオペレーションを送出することによってデータを物理的に移動させる読み取りオペレーションを送出するプロセスを示すフロー・チャートである。 本発明の実装時にデータをコヒーレントにソーシング/ストアするための1つのモデルに従って、メイン・メモリ、幾つかのレベルのキャッシュ、及び外部システム・メモリを有する分散メモリ・サブシステムを示す図である。 外部スイッチを利用することなく同じメモリ・モジュール内のソースから宛先へのデータのダイレクト・クローニングを容易にする上層金属を有するメモリ・モジュールを示す図である。 本発明の1つの実施例に従って、正しい宛先メモリに複数の同時データ複製オペレーションを指示するために利用されるアドレス・タグのブロック表示を示す図である。 本発明の1つの実施例に従ってネーキッド・ライトが完了し且つアーキテクチャ的に終了した状態が生じるとき、トラッキングするためにメモリ複製機構によって利用されるレジスタのブロック表示を示す図である。 本発明の1つの実施例に従って動作するデータ処理システムにおけるロック競合のプロセスを示すフロー・チャートである。 本発明の1つの実施例に従って、データ複製オペレーションの間データ・コヒーレンシを維持するプロセスを示すフロー・チャートである。 本発明の1つの実施例に従って、命令のプロセッサ実行が実アドレシング・モード又は仮想アドレシング・モードのどちらで生じるかを表すためにソフトウェアによってトグルされる付加のモード・ビットを有する命令を示す図である。 本発明の1つの実施例に従って、データ処理システムのアプリケーション・コード層、OS層、及びファームウェア層、並びに各層によりサポートされる関連のタイプのアドレス・オペレーションを示す図である。
符号の説明
200 データ処理システム
201A、201D プロセッサ・チップ
203 スイッチ
205、207 メモリ
206、208 メモリ・コントローラ
209、210 メモリ・ロケーション
211 メモリ複製機構
213 メモリ・キャッシュ

Claims (17)

  1. 第1のメモリ複製機構を有する第1のプロセッサと、
    第2のメモリ複製機構を有する第2のプロセッサと、
    メモリ・サブシステムと、
    前記第1及び第2のプロセッサと前記メモリ・サブシステムとを相互接続するための手段と、
    データ複製オペレーションの前に、前記第1のメモリ複製機構及び前記第2のメモリ複製機構のうちの特定のメモリ複製機構から送出される複数のトークン・オペレーションと、
    を含み、
    前記トークン・オペレーションは、前記特定のメモリ複製機構から生じるデータ複製オペレーションのためのソース・アドレス及び宛先アドレスをリザーブする、マルチプロセッサ・データ処理システム。
  2. 前記トークン・オペレーションは、
    複製オペレーションのデータが調達されるメモリ・アドレスを含むソース・トークンと、
    複製オペレーションのデータが送られるメモリ・アドレスを含む宛先トークンと、
    を含む、請求項1に記載のマルチプロセッサ・データ処理システム。
  3. 前記ソース・トークン及び前記宛先トークンの各々は、単に前記データ処理システムのファブリックにおけるアドレス・オンリ保有権である、請求項2に記載のマルチプロセッサ・データ処理システム。
  4. 前記ソース・トークン及び前記宛先トークンは、それぞれのソース及び宛先アドレスが他の複製オペレーションを行うために他のメモリ複製機構によって利用されるかどうかを決定するためにそれぞれのソース及び宛先アドレスを照会する、請求項2に記載のマルチプロセッサ・データ処理システム。
  5. 前記メモリ複製機構内にあって、データ複製オペレーションを開始する前に、前記データ処理システムのファブリック上に前記ソース・トークン及び前記宛先トークンを送出するための手段を更に含む、請求項4に記載のマルチプロセッサ・データ処理システム。
  6. 前記ソース・トークン及び前記宛先トークンは、前記ソース・トークン及び前記宛先トークンを送出したメモリ複製機構にメモリ・アドレスの使用可能性に関する表示を返送する、請求項5に記載のマルチプロセッサ・データ処理システム。
  7. 前記メモリ複製機構内にあって、前記表示がヌル応答であるときにデータ複製オペレーションを開始するためのリクエストを送出するための手段を更に含み、
    前記ヌル応答は、現在、他のメモリ複製機構がそれぞれのソース及び宛先アドレスを利用しようとしていないことを表す、請求項6に記載のマルチプロセッサ・データ処理システム。
  8. 前記データ複製オペレーションを開始することは、現在、前記宛先アドレスを他のプロセスが利用しようとしていないと直ちにネーキッド・ライト・リクエストを送出し、それによって、複数の複製オペレーションのためのデータが同じソース・アドレスから調達される、請求項5に記載のマルチプロセッサ・データ処理システム。
  9. 前記メモリ複製機構内にあって、他のメモリ複製機構から送出された各ソース及び宛先トークンをスヌープするための手段と、
    前記スヌープに対して応答を供給するための手段と、
    を更に含む、請求項6に記載のマルチプロセッサ・データ処理システム。
  10. 前記応答を供給するための手段は、
    前記ソース・トークン及び宛先トークンの前記ソース・アドレス及び宛先アドレスと未だ完了していないデータ複製オペレーションのソース・アドレス及び宛先アドレスとを比較するための手段と、
    スヌープされた宛先アドレスが、未だ完了していないデータ複製オペレーションのソース・アドレス又は宛先アドレスと同じであるとき、再試行応答を供給するための手段と、
    を含む、請求項9に記載のマルチプロセッサ・データ処理システム。
  11. マルチプロセッサ・データ処理システムのファブリックにおける複数の同時複製オペレーション時のライブロックを回避するための、前記データ処理システムにおける方法であって、
    データ複製オペレーションを開始する前に、前記データ複製オペレーションを完了するために必要なソース・アドレス及び宛先アドレスの使用可能性をチェックするトークン・オペレーションを前記ファブリック上に送出するステップと、
    現在、他のデータ複製オペレーションが前記ソース及び宛先アドレスを利用しようとしていないことを表す応答を前記トークン・オペレーションが供給するときだけ前記データ複製オペレーションを開始するステップと、
    を含む方法。
  12. 前記送出するステップは、
    データ複製オペレーションのデータが調達されるメモリ・アドレスを含むソース・トークンを送出するステップと、
    データ複製オペレーションが送られるメモリ・アドレスを含む宛先トークンを送出するステップと、
    を含む、請求項11に記載の方法。
  13. 前記送出するステップにおける前記ソース・トークン及び前記宛先トークンがファブリックにおいて保有権を与える、請求項11に記載の方法。
  14. 更に、前記ファブリックにおける前記トーク・オペレーションをスヌープするステップを含む、請求項11に記載の方法。
  15. スヌープされたトークン・オペレーションのソース・アドレス及び宛先アドレスと現在実装されることになっている第2のデータ複製オペレーションの第2のソース・アドレス及び第2の宛先アドレスとを比較するステップと、
    前記スヌープされたトークン・オペレーションに応答を供給するステップと、
    を更に含む、請求項14に記載の方法。
  16. 前記供給するステップは、スヌープされた宛先トークンの宛先アドレスが第2のデータ複製オペレーションの第2のソース・アドレス又は第2の宛先アドレスと同じであるときに再試行応答を供給するステップを含む、請求項15に記載の方法。
  17. 前記開始するステップは、宛先トークン・オペレーションが宛先アドレスの使用可能性を表すと直ちに前記データ複製オペレーションを含み、
    複数の複製オペレーションに対するデータが同じソース・アドレスから調達される、
    請求項12に記載の方法。
JP2003388587A 2002-12-05 2003-11-18 メモリ複製オペレーション時の不正確なキャッシュ・ライン保護機構 Expired - Fee Related JP3836836B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/313,322 US6986013B2 (en) 2002-12-05 2002-12-05 Imprecise cache line protection mechanism during a memory clone operation

Publications (2)

Publication Number Publication Date
JP2004185610A true JP2004185610A (ja) 2004-07-02
JP3836836B2 JP3836836B2 (ja) 2006-10-25

Family

ID=32468220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003388587A Expired - Fee Related JP3836836B2 (ja) 2002-12-05 2003-11-18 メモリ複製オペレーション時の不正確なキャッシュ・ライン保護機構

Country Status (3)

Country Link
US (1) US6986013B2 (ja)
JP (1) JP3836836B2 (ja)
CN (1) CN100568197C (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006244388A (ja) * 2005-03-07 2006-09-14 Fujitsu Ltd アドレススヌープ方法及びマルチプロセッサシステム
JP2008197716A (ja) * 2007-02-08 2008-08-28 Nec Corp データ一貫性制御システム及びデータ一貫性制御方法
JP2011154735A (ja) * 2011-05-19 2011-08-11 Fujitsu Ltd アドレススヌープ方法及びマルチプロセッサシステム
JPWO2013001613A1 (ja) * 2011-06-28 2015-02-23 富士通株式会社 スケジューリング方法およびシステム
JP2016514882A (ja) * 2013-04-11 2016-05-23 クアルコム,インコーポレイテッド コヒーレントバスを介したセマフォ管理シーケンスのパフォーマンスを改善するための方法および装置
US10198365B2 (en) 2015-01-20 2019-02-05 Fujitsu Limited Information processing system, method and medium

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421698B2 (en) * 2003-12-22 2008-09-02 Sun Microsystems, Inc. System and method for dynamically and persistently tracking incremental profiling data in a process cloning application environment
US20070052715A1 (en) * 2005-09-07 2007-03-08 Konstantin Levit-Gurevich Device, system and method of graphics processing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1194787A (en) * 1967-04-01 1970-06-10 Fichtel & Sachs Ag Resistance Welded Connection, e.g. for Shock Absorbers
US6128714A (en) 1994-03-17 2000-10-03 Hitachi, Ltd. Method of processing a data move instruction for moving data between main storage and extended storage and data move instruction processing apparatus
US5881285A (en) * 1996-05-07 1999-03-09 Intel Corporation Associating a physical driver object with its logical contents
US6393540B1 (en) * 1998-06-30 2002-05-21 Emc Corporation Moving a logical object from a set of source locations to a set of destination locations using a single command
US6529968B1 (en) * 1999-12-21 2003-03-04 Intel Corporation DMA controller and coherency-tracking unit for efficient data transfers between coherent and non-coherent memory spaces
US6502170B2 (en) * 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
US6813522B1 (en) * 2000-12-29 2004-11-02 Emc Corporation Method of sharing memory in a multi-processor system including a cloning of code and data
US6721851B2 (en) * 2001-08-07 2004-04-13 Veritas Operating Corporation System and method for preventing sector slipping in a storage area network
US6941136B2 (en) * 2002-02-11 2005-09-06 The Chamberlain Group, Inc. Method and apparatus for memory cloning for a control device
JP4183443B2 (ja) * 2002-05-27 2008-11-19 株式会社日立製作所 データ再配置方法及び装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006244388A (ja) * 2005-03-07 2006-09-14 Fujitsu Ltd アドレススヌープ方法及びマルチプロセッサシステム
JP2008197716A (ja) * 2007-02-08 2008-08-28 Nec Corp データ一貫性制御システム及びデータ一貫性制御方法
JP2011154735A (ja) * 2011-05-19 2011-08-11 Fujitsu Ltd アドレススヌープ方法及びマルチプロセッサシステム
JPWO2013001613A1 (ja) * 2011-06-28 2015-02-23 富士通株式会社 スケジューリング方法およびシステム
JP2016514882A (ja) * 2013-04-11 2016-05-23 クアルコム,インコーポレイテッド コヒーレントバスを介したセマフォ管理シーケンスのパフォーマンスを改善するための方法および装置
US10198365B2 (en) 2015-01-20 2019-02-05 Fujitsu Limited Information processing system, method and medium

Also Published As

Publication number Publication date
CN1504904A (zh) 2004-06-16
JP3836836B2 (ja) 2006-10-25
US6986013B2 (en) 2006-01-10
CN100568197C (zh) 2009-12-09
US20040111581A1 (en) 2004-06-10

Similar Documents

Publication Publication Date Title
KR100360064B1 (ko) 고도로파이프라인된버스구조
US6636949B2 (en) System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
JP4316016B2 (ja) 複数のシステムバスを有するコンピュータシステムにおいてメモリコヒーレンスを維持するためのシステムおよび方法
US7343456B2 (en) Load-linked/store conditional mechanism in a CC-NUMA system
US6640287B2 (en) Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
US6633967B1 (en) Coherent translation look-aside buffer
US6996693B2 (en) High speed memory cloning facility via a source/destination switching mechanism
US7069394B2 (en) Dynamic data routing mechanism for a high speed memory cloner
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
US6892283B2 (en) High speed memory cloner with extended cache coherency protocols and responses
US20040117561A1 (en) Snoop filter bypass
JP2001147903A (ja) 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム
US6898677B2 (en) Dynamic software accessibility to a microprocessor system with a high speed memory cloner
EP0480858A2 (en) Hardware primary directory lock
EP0380842A2 (en) Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
CA2279138C (en) Non-uniform memory access (numa) data processing system that decreases latency by expediting rerun requests
JP3836836B2 (ja) メモリ複製オペレーション時の不正確なキャッシュ・ライン保護機構
US7502917B2 (en) High speed memory cloning facility via a lockless multiprocessor mechanism
US6915390B2 (en) High speed memory cloning facility via a coherently done mechanism
US6986011B2 (en) High speed memory cloner within a data processing system
US6928524B2 (en) Data processing system with naked cache line write operations
US8108618B2 (en) Method and apparatus for maintaining memory data integrity in an information handling system using cache coherency protocols
JP4965974B2 (ja) 半導体集積回路装置
JPH0816475A (ja) マルチプロセッサシステム
EP1363188B1 (en) Load-linked/store conditional mechanism in a cc-numa (cache-coherent nonuniform memory access) system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060110

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20060201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060407

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: 20060718

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20060718

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060727

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: 20100804

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110804

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120804

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130804

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees