JP2004054931A - System and method for memory migration in distributed memory multiprocessor system - Google Patents
System and method for memory migration in distributed memory multiprocessor system Download PDFInfo
- Publication number
- JP2004054931A JP2004054931A JP2003181949A JP2003181949A JP2004054931A JP 2004054931 A JP2004054931 A JP 2004054931A JP 2003181949 A JP2003181949 A JP 2003181949A JP 2003181949 A JP2003181949 A JP 2003181949A JP 2004054931 A JP2004054931 A JP 2004054931A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- cell
- line
- multiprocessor system
- migration
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 186
- 238000013508 migration Methods 0.000 title claims abstract description 54
- 230000005012 migration Effects 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000006870 function Effects 0.000 claims abstract description 5
- 230000007704 transition Effects 0.000 claims description 43
- 238000012546 transfer Methods 0.000 claims description 6
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 18
- 230000008859 change Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 230000002950 deficient Effects 0.000 description 4
- 230000023402 cell communication Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
Description
【0001】
【発明の属する技術分野】
本発明は、概してコンピュータシステムに関する。より詳細には、分散メモリマルチプロセッサシステムにおけるメモリ移行(migration)に関する。
【0002】
【従来の技術】
従来、メインメモリは、物理的に中央バス上に位置していた。このタイプのシステム内では、完全な物理アドレスからなるメモリ要求がメモリサブシステムに転送され、データが返されていた。分散メモリシステムでは、メインメモリは、物理的に多くの異なるセルにわたって分散される。セルは、複数のプロセッサと、1つまたは複数の入出力(I/O)装置と、セルコントローラと、メモリとからなり得る。各セルは、メインメモリ空間の異なる部分を保持する。各プロセッサは、ローカルメモリだけでなく、1つまたは複数のクロスバスイッチ等のセル通信リンク回路を介して他のセルのメモリにもアクセスすることができる。
【0003】
キャッシングは、メモリアクセスに関連するパフォーマンス上の制限を改良することができる。キャッシングは、メインメモリより小さく高速なキャッシュメモリに、メインメモリの内容のサブセットを格納することを含む。キャッシュ内容がデータに対する要求を予期する確率を増大させるために、あらゆる戦略が使用される。たとえば、メモリアドレス空間における要求されたワードに近いデータは、その要求されたワードと時間的に近接して要求される可能性が比較的高いため、大抵のキャッシュはマルチワードラインをフェッチし格納する。単一のキャッシュラインに格納されるワードの数は、システムのラインサイズを画定する。たとえば、キャッシュラインは、8ワード長であってよい。
【0004】
キャッシュは、通常、メインメモリよりはるかに少ないライン記憶ロケーションを有する。通常、キャッシュデータを所持するメインメモリラインアドレスを一意に指示するために、各キャッシュロケーションにおいてデータとともに「タグ」が格納される。
【0005】
シングルプロセッサシステムとマルチプロセッサシステムとの両方において、キャッシュとメインメモリとの間の「整合性(coherency:コヒーレンシ)」を保証するという課題がある。たとえば、プロセッサがキャッシュに格納されたデータを変更すると、その変更がメインメモリにおいて反映されなければならない。通常、キャッシュにおいてデータが変更される時刻とメインメモリにおいて変更が反映される時刻との間に幾分かのレイテンシがある。このレイテンシ中、メインメモリにおける未変更データは無効である。メインメモリデータが無効である間は読み出されないことを保証するための処置がとられなければならない。
【0006】
各プロセッサまたは入出力モジュールがキャッシュメモリを有する、分散メモリマルチプロセッサシステムの場合、キャッシュメモリを有するシングルプロセッサシステムの場合より状況は幾分か複雑である。マルチプロセッサシステムでは、特定のメインメモリアドレスに対応する現データを、1つまたは複数のキャッシュメモリおよび/またはメインメモリに格納してよい。キャッシュメモリのデータは、プロセッサによって操作された可能性があり、その結果、値がメインメモリに格納された値と異なることになる。このため、いかなるアドレスの現データ値も、そのデータ値がどこに存在するかとは無関係に提供されることを保証するために、「キャッシュ整合性方式(cache coherency scheme)」が実施される。
【0007】
通常、キャッシュデータを変更するためには「許可」が必要である。通常、データが正確に1つのキャッシュに格納されている場合にのみ、その許可は与えられる。複数のキャッシュに格納されたデータは、しばしば読取専用として扱われる。各キャッシュラインは、そのラインに格納されているデータを変更する許可が与えられるか否かを示す1つまたは複数の状態ビットを含むことができる。状態の正確な特質はシステムによって決まるが、通常、変更する許可を示すために「プライバシ(privacy)」状態ビットが使用される。プライバシビットが「プライベート(private)」を示す場合、1つのキャッシュのみがそのデータを保持し、関連するプロセッサはそのデータを変更する許可を有する。プライバシビットが「パブリック(public)」を示す場合、いかなる数のキャッシュもデータを保持することができ、いかなるプロセッサもデータを変更することができない。
【0008】
マルチプロセッサシステムでは、データを読み出すかまたは変更することを望むプロセッサに対し、通常、あるとすればいずれのキャッシュがそのデータのコピーを有するかと、そのデータの変更に対し許可が与えられるかとに関する判断がなされる。「スヌーピング(Snooping)」は、その判断を行うために複数のキャッシュの内容を検査することを含む。要求されたデータがローカルキャッシュにおいて見つからない場合、リモートキャッシュを「スヌーピングする」ことができる。プライベートデータを、別のプロセッサが読み出すことができるようにパブリックにするよう要求するリコール(recall)を発行することができ、もしくは、いくつかのキャッシュのパブリックデータを、別のキャッシュが変更することができるように無効にするリコールを発行することができる。
【0009】
多数のプロセッサおよびキャッシュに対し、網羅的なスヌーピングは、パフォーマンスを低下させる可能性がある。この理由により、分散メモリマルチプロセッサシステムによっては、セル内でスヌーピングし、セル間整合性についてはディレクトリベースのキャッシュ整合性に頼るものがある。ディレクトリベースのキャッシュ整合性を用いる分散メモリマルチプロセッサシステムは、1997年8月25日に出願され、2000年4月25日に発行され、「DISTRIBUTED MEMORY MULTIPROCESSOR COMUPUTER SYSTEM WITH DIRECTORY BASED CACHE COHERENCY WITH AMBIGUOUS MAPPING OF CACHED DATA TO MAIN−MEMORY LOCATIONS」と題された米国特許第6,055,610号に記載されている。
【0010】
ディレクトリベースのキャッシュ整合性を使用する分散メモリシステムでは、各セルのメインメモリは、通常、ディレクトリエントリをメモリの各ラインに関連付ける。各ディレクトリエントリは、通常、ラインをキャッシュするセルと、データのラインがパブリックであるかプライベートであるかとを特定する。また、ディレクトリエントリは、データをキャッシュするセル内の特定のキャッシュ(1つまたは複数)を特定してもよく、および/またはスヌーピングを使用してセル内のいずれのキャッシュ(1つまたは複数)がデータを有しているかを判断してよい。このように、各セルは、そのメインメモリに格納されたデータのキャッシュされたコピーのロケーションを示すディレクトリを含む。
【0011】
例として、8セルシステムでは、各ディレクトリエントリは9ビット長であってよい。8つのセルの各々について、各々の「サイト(site)」ビットは、各々のセルがラインのキャッシュされたコピーを含むか否かを示す。9番目の「プライバシ」ビットは、データがプライベートに保持されているかパブリックに保持されているかを示す。
【0012】
時に、セルからセルへまたは特定のセル内でメモリを移動または移行することが望ましい。たとえば、メモリを、欠陥のあるメモリデバイスから予備のメモリデバイスに移行させることができる。他の例として、1つまたは複数のメモリデバイスを含むボードを、恐らくはそのボードが欠陥のあるコンポーネントを含むため、そのボードがより新しい改訂版によって置き換えられているため、または他の何らかの理由により、システムから取り外す必要のある場合がある。ボードを取り外す前に、ボードからメモリを別のロケーションに移行することが望ましい場合がある。
【0013】
【発明が解決しようとする課題】
メモリ移行は、通常オペレーティングシステム介入によって発生し、メモリは、まず割付解除され、後に所望の宛先に再割付される。かかる従来技術によるメモリ移行技法では、移行されているメモリにアクセスしているプロセスが停止する可能性があり、もしくは、システムが、プロセスが終了するのを待たなければメモリを移行することができない可能性がある。このため、従来技術によるメモリ移行技法は、ソフトウェアの動作に影響を与え、時に、システムをある期間使用不可能にする。さらに、従来技術による移行技法を使用すると、オペレーティングシステムおよびファームウェアが必要とするいくつかのページを容易に移行することができない。
【0014】
また、メモリはインタリーブされる可能性もあり、従来の技法を使用するメモリ移行がさらに困難となる。メモリをデインタリーブすることは単純なタスクではなく、時に、デインタリーブソリューションは存在しない。
【0015】
【課題を解決するための手段】
本発明の一形態では、互いに通信可能に結合され、全体として複数のプロセッサとキャッシュとメインメモリとセルコントローラとを含む、複数のセルを有する、分散メモリマルチプロセッサシステムを提供する。セルの各々は、プロセッサのうちの少なくとも1つと、キャッシュのうちの少なくとも1つと、メインメモリのうちの1つと、セルコントローラのうちの1つとを含む。セルの各々は、本システムのオペレーティングシステムに対して不可視である方法で、メインメモリのうちの第1のメインメモリからメインメモリのうちの第2のメインメモリにメモリを移行させるメモリ移行機能を実行するように構成される。
【0016】
【発明の実施の形態】
好ましい実施形態の以下の詳細な説明では、実施形態の一部を形成し、本発明を実施することができる特定の実施形態を例示として示す、添付図面を参照する。他の実施形態を利用してよく、本発明の範囲から逸脱することなしに構造的変更または論理的変更を行ってよい、ということを理解しなければならない。したがって、以下の詳細な説明は、限定する意味でとられるべきものではなく、本発明の範囲は、併記特許請求項によって規定される。
【0017】
図1は、本発明の一実施形態による、オペレーティングシステム介入なしにメモリを移行するように構成された分散メモリマルチプロセッサシステム100を示すブロック図である。システム100は、8つのセル102、104、106、108、110、112、114および116を有し、それらはセル通信リンク118を介して通信可能に結合される。セル102は、4つのメモリアクセス装置120A〜120Dと、4つのキャッシュ124A〜124Dと、高速整合性ディレクトリまたはディレクトリキャッシュ126と、セルコントローラ128と、メインメモリ136とを有する。同様に、セル116は、4つのメモリアクセス装置164A〜164Dと、4つのキャッシュ168A〜168Dと、高速整合性ディレクトリ150と、セルコントローラ152と、メインメモリ160とを有する。
【0018】
一実施形態では、メモリアクセス装置120A〜120Bおよび164A〜164Bはプロセッサであり、メモリアクセス装置120C〜120Dおよび164C〜164Dは入出力(I/O)モジュールである。メモリアクセス装置120A〜120Dは、それぞれアドレスレジスタ122A〜122Dを有する。メモリアクセス装置164A〜164Dは、それぞれアドレスレジスタ166A〜166Dを有する。セルコントローラ128は、ファームウェア130と、コンフィギュレーション・ステータスレジスタ(CSR)132と、順序付きアクセスキュー(OAQ)134とを有する。セルコントローラ152は、ファームウェア154と、コンフィギュレーション・ステータスレジスタ156と、順序付きアクセスキュー158と、を有する。本発明の一形態では、セル104、106、108、110、112および114は、実質的にはセル102および116と同じである。
【0019】
本発明の一実施形態を、各セルが複数のプロセッサと複数のI/Oモジュールとを含むマルチセルシステムのコンテキストで説明するが、当業者には、本明細書で説明するメモリ移行技法は他のシステム構成にも適用可能である、ということが明らかとなろう。たとえば、本発明の代替実施形態は、図1に示すもののようなセルを有するのではなく、単一プロセッサ(キャッシュ付き)ビルディングブロック、単一I/Oモジュール(キャッシュ付き)ビルディングブロックまたは他のビルディングブロック等、他のシステムビルディングブロックを組み込んでよい。
【0020】
一実施形態によれば、標準動作時、システム100は、ディレクトリベースのキャッシュ整合性を使用して従来からの方法でメモリにアクセスするように構成される。たとえば、プロセッサ120Aによりメインメモリ136からワードがフェッチされると、そのワードはキャッシュ124Aのキャッシュラインに格納される。さらに、要求されたワードに隣接するワードもまた、要求されたワードとともにフェッチされキャッシュラインに格納される。
【0021】
プロセッサ120Aによるデータに対する要求には、システム100のメインメモリロケーションのうちの1つを一意に特定するメインメモリワードアドレスが含まれる。キャッシュ124Aは、メインメモリアドレスの複数の最下位ビットを除去することにより、プロセッサ120Aからのメインメモリワードアドレスをラインアドレスに変換する。このラインアドレスがセルコントローラ128に転送されることにより、要求されたデータの位置が特定される。要求が所有者セルに転送されなければならない場合、セルコントローラ128は、ラインアドレスの複数の最上位ビットをセルIDに復号し、要求を満たすことができるように、アドレスの残りのビットを適当なセルに転送する。一実施形態では、セルコントローラは、セル内およびセル間のすべてのメモリトランザクションを処理する。
【0022】
キャッシュ(たとえば、キャッシュ124A〜124Dおよび168A〜168D)は、ラインアドレスの複数のビットを使用してキャッシュラインを特定する。そして、ラインアドレスの残りのビットが、特定されたキャッシュラインに格納されたタグと比較される。「ヒット」の場合(すなわち、タグがラインアドレスの残りのビットと一致する場合)、ラインアドレスの複数の最下位ビットを使用して、プロセッサ(またはI/Oモジュール)に転送するために、特定されたキャッシュラインに格納されたワードのうちの1つが選択される。ミスの場合(すなわち、タグが一致しない場合)、最終的にメインメモリからフェッチされるラインは、特定されたキャッシュラインにおいてデータのラインに上書きし、特定されたキャッシュラインにおけるタグが更新される。最後に、要求されたワードは、キャッシュラインからプロセッサ(またはI/Oモジュール)に転送される。
【0023】
本発明の一形態では、キャッシュ(たとえば、キャッシュ124A〜124Dおよび168A〜168D)における各キャッシュラインについて状態ビットを含み、各セルのメインメモリの整合性ディレクトリ(たとえば、整合性ディレクトリ138および162)に整合性情報を格納し、各セルの高速整合性ディレクトリ(たとえば、高速整合性ディレクトリ126および150)に整合性情報を格納することにより、システム100において従来からの方法で整合性が実施される。
【0024】
一実施形態では、各キャッシュラインにタグビットおよびユーザデータビットを格納することに加えて、各キャッシュラインには「有効性」状態ビットおよび「プライバシ」状態ビットもまた格納される。有効性状態ビットは、キャッシュラインが有効であるか無効であるかを示す。プライバシ状態ビットは、キャッシュラインに格納されたデータがパブリックであるかプライベートであるかを示す。プロセッサは、そのキャッシュのいかなる有効データも読み出すことができる。しかしながら、一実施形態では、プロセッサは、そのキャッシュがプライベートに保持するデータしか変更することができない。プロセッサが、パブリックに保持するデータを変更する必要がある場合、そのデータはまずプライベートにされる。プロセッサがその関連するキャッシュにないデータを変更する必要がある場合、そのデータはそのキャッシュにプライベートとして入れられる。データは、他のキャッシュによって使用中である場合、プライベートにされる前にそのキャッシュからリコールされる。
【0025】
一実施形態では、スヌーピングを使用して、同じセルの他のプロセッサ(またはI/Oモジュール)に関連するキャッシュにおいて要求されたデータのコピーが突き止められる。このため、プロセッサ120Aが、パブリックに保持するデータを変更するよう要求する場合、セルコントローラ128は、スヌーピングを使用してローカルキャッシュ124A〜124Dのすべてのコピーのリコールを行う。リコールは、いかなるプライベートに保持されたコピーも可能な限り迅速にパブリックに変換されるように、およびパブリックなコピーが無効化されるように要求する役割を果たす。一旦未解決のデータのコピーがなくなると、データのプライベートなコピーをプロセッサ120Aに提供することができ、あるいは、データのパブリックなコピーをプライベートにすることができる。そして、プロセッサ120Aは、データのそのプライベートなコピーを変更することができる。
【0026】
一実施形態では、セル間整合性は、システム100においてディレクトリベースである。要求をセル内で満足させることができない場合、要求は要求されたデータを所有しているセルのセルコントローラに転送される。たとえば、プロセッサ120Aがメインメモリ160内のアドレスをアサートする場合、セル116は要求されたデータを所有する。セルコントローラ152には、要求されたデータのコピーをシステム全体で探す責任が課される。この探索に必要な情報は、メインメモリ160においてユーザデータとともにラインベースで格納される整合性ディレクトリ162に維持される。本発明の一形態では、メインメモリの各ラインは、サイトビットと状態ビットとを格納する。一実施形態では、サイトビットは、各セルに対しそのセルがラインのコピーを保持するか否かを示し、スヌーピングを使用して、ラインのコピーを保持するセル内の特定のキャッシュが特定される。代替実施形態では、サイトビットは、各セルの各キャッシュに対し、そのキャッシュがラインのコピーを保持しているか否かを示す。本発明の一形態では、メインディレクトリ状態ビットは、「プライバシ」状態ビットと「共有」状態ビットとを含む。プライバシメインディレクトリ状態ビットは、データがパブリックに保持されるかプライベートに保持されるかを示す。共有メインディレクトリ状態ビットは、データが「アイドル」であるか複数のキャッシュによってキャッシュされるか否かを示す。共有状態ビットが、データがアイドルであることを示す場合、そのデータはキャッシュされないか、または単一キャッシュのみによってキャッシュされる。
【0027】
セルコントローラ152は、整合性ディレクトリ162の状態ビットから、システム100のいずれのセルが要求されたデータのコピーを保持しているかと、要求されたデータがプライベートに保持されているかパブリックに保持されているかとを判断することができる。それにしたがって、リコールを、特定されたセルに向けることができる。
【0028】
高速ディレクトリ150は、予測リコールを起動することができる。一実施形態では、高速ディレクトリ150はユーザデータ情報を格納しないが、メインメモリ160のメインディレクトリ162に格納された整合性ディレクトリ情報のサブセットを格納する。当業者には、高速ディレクトリを実施し予測リコールを起動する技法は既知である。
【0029】
本発明の一形態では、整合性情報を格納することに加えて、システム100のメインメモリにおける整合性ディレクトリ(たとえば、ディレクトリ138および162)はまた、メモリ移行トランザクション中にラインの移行状態を特定するために使用される移行ステータス情報も格納する。一実施形態では、移行ステータス情報は、4つの移行状態、すなわち(1)Home_Cell_Ownership(ホームセル所有権)、(2)Waiting_For_Migration(移行待機)、(3)In_Migration(移行中)または(4)Migrated(移行済み)のうちの1つを特定する。これらの移行状態の各々については、図2および図3Aないし図3Cを参照して後により詳細に論考する。各セルコントローラ(たとえば、セル102のセルコントローラ128、およびセル116のセルコントローラ152)は、セルコントローラに対し本明細書で説明するようなメモリ移行機能を実行させるファームウェア(たとえば、セルコントローラ128のファームウェア130およびセルコントローラ152のファームウェア154)を含む。
【0030】
一実施形態では、メモリ移行は、キャッシュラインベースで行われる。代替実施形態では、単一ライン以外のメモリサイズを使用してよい。ラインが移行される先のセルを特定するために、「新セル」という用語を使用し、ラインが移行される元のセルを特定するために、「旧セル」という用語を使用する。一実施形態では、移行は同じセル内で発生する可能性があり、そこでは、ラインは、セル内のメモリの1つの物理的ロケーションから同じセル内のメモリの別の物理的ロケーションに移動される。
【0031】
図2は、本発明の一実施形態によるメモリ移行プロセス200を示すフローチャートである。メモリ移行プロセス200では、メモリがセル102からセル116に移行されており、そのためセル102を「旧セル」と呼び、セル116を「新セル」と呼ぶと仮定する。ステップ202において、セルコントローラ128のファームウェア130は、旧セル102のコンフィギュレーション・ステータスレジスタ132にビットが書き込まれるようにし、その後新セル116のコンフィギュレーション・ステータスレジスタ156にビットを書き込むことにより、移行を開始する。旧セル102のコンフィギュレーション・ステータスレジスタ132への書き込みは、セルに対し、メモリがそのセルから移行されていることを通知し、新セル116のコンフィギュレーション・ステータスレジスタ156への書き込みは、セルに対し、メモリがそのセルに移行されていることを通知する。この時点で、プロセッサおよびI/Oモジュールアドレス範囲レジスタ(たとえば、旧セル102のレジスタ122A〜122Dおよび新セル116のレジスタ166A〜166D)は、まだ、旧セル102を移行されるラインの所有者として指している。
【0032】
ステップ204において、セルコントローラ152は、メインメモリ160のメモリラインのうちの選択された1つ(すなわち、「新ライン」)に対しディレクトリ162の移行状態を「Waiting_For_Migration」に設定する。ステップ206において、高速ディレクトリ150の新ラインへのいかなる参照もフラッシュされる。一実施形態では、「Waiting_For_Migration」状態の新ラインに対するいかなる要求も不当であり、適当な誤り回復/ロギングステップが起動される。
【0033】
ステップ208において、新セル116のセルコントローラ152は、所望のライン(すなわち「旧ライン」)に対する所有者の変更の意図とともに「フェッチ要求」を旧セル102に送出する。フェッチ要求は、旧セル102に対し、新セル116がそのラインのホームセルとなるよう要求していることを指示する。代替実施形態では、フェッチ要求を、新セル116以外のエンティティによって起動することができる。
【0034】
ステップ210において、セルコントローラ128は、フェッチ要求をその順序付きアクセスキュー134に入れる。ステップ212において、旧ラインに対するいかなる先の要求も、セルコントローラ128によって通常の方法で処理される。フェッチ要求の順番に達すると、ステップ214において、セルコントローラ128はフェッチ要求を処理する。ステップ216において、セルコントローラ128は、旧ラインを、それを所有しているいかなるエンティティ(たとえば、プロセッサまたはI/Oモジュール)からもリコールする。
【0035】
ステップ218において、セルコントローラ128は、フェッチ要求に対する応答を返し、「Migrate_Idle_Data(アイドルデータ移行)」トランザクションを通してホームセル所有権とともに旧ラインデータを転送する。ステップ220において、セルコントローラ128は、旧ラインに対しディレクトリ138の移行状態を「In_Migration」に設定する。この時点で旧ラインに対するいかなる要求も、順序付きアクセスキュー134に入れられる(空きがある場合)か、または「否定応答(nack)される」(すなわち、肯定応答されない)。一実施形態では、旧セル102は、「In_Migration」状態にある間、旧ラインに対するいかなる要求も処理しない。
【0036】
ステップ222において、セルコントローラ152は、「Migrate_Idle_Data」トランザクションを受け取り、「Ack」(すなわち、肯定応答)トランザクションを送出する。ステップ224において、セルコントローラ152は、受け取ったラインデータを新ラインにコピーし、ラインのホーム所有権を想定し、ディレクトリ162においてラインを「アイドル」としてマークする。他のいずれのエンティティもこのラインを有していないため、ラインは「アイドル」としてマークされる。上述したように、ステップ216において、ラインは先のすべての保持者からリコールされた。
【0037】
ステップ226において、セルコントローラ128は、セルコントローラ152から「Ack」トランザクションを受け取り、旧ラインに対しディレクトリ138の移行状態を「Migrated」状態に遷移させる。ここで、ステップ228において、旧ラインに対する順序付きアクセスキューに保留中の任意のアクセスまたは旧ラインに対する任意の新たなアクセスは、セルコントローラ128により旧ラインのための新ホームセル116に向けられる。代替実施形態では、セルコントローラ128は、旧ラインに対する要求者に応答し、それらに対し、それらの要求を新セル116に送るように要求する。ステップ230において、旧セル102が旧ラインに対する順序付きアクセスキュー134にそれ以上保留中のエントリを有していない場合、セルコントローラ128は、旧ラインに対する保留中要求のすべてが処理されたことを示すために、そのコンフィギュレーション・ステータスレジスタ132にステータスビットを設定する。一実施形態では、この時点で、旧ラインに対するいかなる新たな要求も順序付きアクセスキュー134に入れられていない。旧ラインに対する新たな要求はすべて、セルコントローラ128により新セル116に転送される。
【0038】
ステップ232において、ファームウェア130は、コンフィギュレーション・ステータスレジスタ132を読み出し、ステータスビットが設定された(ステップ230)と判断する。そして、ファームウェア130は、ステータスビットをリセットする。ステップ234において、ファームウェア130は、旧セル102からさらなるラインが移行されるか否かを判断する。さらなるラインが移行される場合、かかるラインの各々に対しステップ202〜232が繰り返される。さらなるラインが移行されるか否かに関らず、ステップ236〜240が実行されることにより、第1のラインの移行が完了する。
【0039】
ステップ236において、ファームウェア130は、すべてのメモリアクセス装置(たとえば、プロセッサまたはI/Oモジュール)においてアドレス範囲レジスタ(たとえば、アドレス範囲レジスタ122A〜122Dおよび166A〜166D)を変更することにより、旧ラインに対する新しい要求がすべて新セル116に向かうことを保証する。アドレスレジスタの変更は、即時には発生しない。変更中、旧ラインに対するいずれかの要求が旧セル102に送出されると、これらの要求は、旧セル102によって新セル116に転送される。代替実施形態では、旧セル102は、かかる要求を要求者に戻し、要求者に対して要求を新セル116に送るように通知する。ステップ236における変更後、メモリアクセス装置のすべてに対するアドレス範囲レジスタは、移行されたラインに対するホームセルとして新セル116を指す。一実施形態では、アドレス範囲レジスタを、セルマップの形態で実施してよい。
【0040】
ステップ238において、旧ラインに対する未解決の要求(たとえば、まだ処理されていない、順序付きアクセスキューにおける保留中の要求)がまだいくつかある可能性があるため、ファームウェア130は、すべてのあり得る要求者から旧セル102に対し「プランジ(plunge)」を起動することにより、旧セル102に対するいかなる先の要求も旧セル102に達した(および新セル116に向けられた)ことを保証する。プランジトランザクションは、あり得るすべてのメモリアクセス装置から旧セル102に対して送出される。プランジトランザクションが他のメモリ要求トランザクションと同様に待ち行列に入れられるため、旧セル102がプランジトランザクションのすべてを受け取るまでに、ファームウェア130は、旧ラインに対するすべての要求が受け取られた(および新セル116に転送された)ことを知る。
【0041】
ステップ240において、ファームウェア130は、コンフィギュレーション・ステータスレジスタ132が、プランジが完了したことを示すまで待機する。
コンフィギュレーション・ステータスレジスタ132は、ファームウェア130に対し、旧ラインに対しそれ以上未解決の要求がないことを示す。代替実施形態では、ファームウェア130は、プランジトランザクションを使用するのではなく、旧ラインに対するすべての未解決の要求が旧セル102に達し新セル116に転送されるために十分長い所定期間待機する。
【0042】
ステップ242によって示すように、プランジトランザクションが完了した後(または所定期間が経過した後)、ラインの移行が完了する。
【0043】
図3Aは、本発明の一実施形態による、メモリ移行プロセス200中に旧セル102から移行されるメモリラインに対するディレクトリ138のディレクトリ状態遷移を示す状態図である。図3Aにおいて状態S1によって示すように、旧セル102における旧ラインに対するディレクトリ138の開始移行状態は、「Home_Cell_Ownership」であり、それは、旧セル102が、移行されるラインに対する現ホームセルであることを示す。旧ラインに対する第2の移行状態S2は、「In_Migration」である。上述したように、旧ラインの移行状態は、プロセス200のステップ220中に「Home_Cell_Ownership」から「In_Migration」に遷移する。旧ラインに対する第3の移行状態S3は、「Migrated」である。旧ラインの移行状態は、プロセス200のステップ226中に「In_Migration」から「Migrated」に遷移する。
【0044】
図3Bは、本発明の一実施形態による、メモリ移行プロセス200中に新セル116におけるメモリラインに対するディレクトリ162のディレクトリ状態遷移を示す状態図である。図3Bにおいて状態S4によって示すように、新セル116における新ラインに対するディレクトリ162の移行状態は、「Waiting_For_Migration」であり、それはプロセス200のステップ204中に設定される。新ラインに対する次の移行状態S5は、「Home_Cell_Ownership」であり、それはセル116が移行されたラインに対する新ホームセルであることを示す。新ラインの移行状態は、プロセス200のステップ224中に「Waiting_For_Migration」から「Home_Cell_Ownership」に遷移する。
【0045】
図3Cは、図3Aおよび図3Bに示す状態の時間順序を示す図である。図3Cに示すように、メモリ移行プロセス200は、状態S1(Home_Cell_Ownership)の旧セル102の旧ラインで開始する。次に、メモリ移行プロセス200中、新セル116の新ラインの移行状態は、状態S4(Waiting_For_Migration)に設定される。後に、移行プロセス200中、旧セル102における旧ラインの移行状態は、状態S2(In_Migration)に遷移する。次に、新セル116における新ラインの移行状態は、状態S5(Home_Cell_Ownership)に遷移する。最後に、旧セル102における旧ラインの移行状態は、状態S3(Migrated)に遷移する。
【0046】
一実施形態では、移行シーケンス中、メモリ1つまたは複数のアドレス範囲が移行されるが、移行の粒度は1メモリラインである。所望のアドレス範囲における複数のメモリラインは、常に種々の異なる移行状態にあってよい。本発明の一形態では、指定された範囲内のすべてのメモリラインが移行されるまで、アドレス範囲レジスタは移行を反映するように更新されない(たとえば、図2のステップ236)。
【0047】
本発明の実施形態は、従来技術によるメモリ移行技法に対し多くの利点を提供する。本発明の一形態は、ディレクトリベースのキャッシュ整合性を用いる分散メモリマルチプロセッサシステムにおいて、オペレーティングシステムの関与を必要とすることなしに、インタリーブされるか否かに関らずメモリをロケーションからロケーションに動的に移行させるシステムおよび方法を提供する。一実施形態では、システムファームウェアによるかまたはユーティリティファームウェアによって提供される何らかのソフトウェアの助けを借りて、移行の際にハードウェアを使用する。本発明の一形態では、移行されたメモリにアクセスするソフトウェアは、移行が発生している間にシームレスにメモリにアクセスし続けることができ、そのため、ユーザに対しサービスが中断されない。本発明の一形態では、オペレーティングシステムおよびアプリケーションソフトウェアの関与なしに、またはそれらに悪影響を及ぼすことなく、移行が発生する。一実施形態では、移行はオペレーティングシステムに対して「不可視」であり、オペレーティングシステムとアプリケーションソフトウェアとは、移行が発生しているかまたは発生したことが通知される必要がない。
【0048】
本発明の一形態は、プロセッサインタフェースから独立したメモリ移行プロセスを提供し、移行機能を実施するためにプロセッサインタフェースプロトコルがいかなる新たなトランザクションをサポートすることも必要としない。メモリ移行プロセスの一実施形態とともに、いかなるプロセッサまたはI/Oコントローラ設計をも使用することができる。
【0049】
一実施形態では、本明細書で説明した技法を使用して、さらなるメモリがシステムに追加された時にメモリを移行させることができ、従来からの誤り検出および訂正方式とともに使用して、欠陥のあるメモリロケーションを予備のメモリロケーションに移行させることができる。欠陥のあるメモリが置換されるかまたは他の方法で修復されると、予備のメモリロケーションを新たなまたは修復されたメモリに戻るように移行させることができる。
【0050】
本発明の好ましい実施形態の説明の目的のために、本明細書では、特定の実施形態を例示し説明したが、当業者には、本発明の範囲から逸脱することなく、示し説明した特定の実施形態を、多種多様の代替および/または等価実施態様に置き換えてよいことは認められよう。化学、機械、電子機械、電気およびコンピュータ技術における当業者は、本発明を多種多様な実施形態で実施してよい、ということを容易に認めるであろう。この出願は、本明細書で論考した好ましい実施形態のいかなる適用形態または変形形態をも包含するように意図される。したがって、この発明は、特許請求項の範囲とその等価物とによってのみ限定されることが明示的に意図されている。
【図面の簡単な説明】
【図1】本発明の一実施形態による、メモリを移行するように構成された分散メモリマルチプロセッサシステムを示すブロック図。
【図2】本発明の一実施形態によるメモリ移行プロセスを示すフローチャート。
【図3A】本発明の一実施形態によるメモリ移行シーケンス中の「旧セル」に対するディレクトリ状態遷移を示す状態図。
【図3B】本発明の一実施形態によるメモリ移行シーケンス中の「新セル」に対するディレクトリ状態遷移を示す状態図。
【図3C】図3Aおよび図3Bに示す状態の時間順序を示す図。[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates generally to computer systems. More particularly, it relates to memory migration in a distributed memory multiprocessor system.
[0002]
[Prior art]
Traditionally, the main memory was physically located on a central bus. In this type of system, a memory request consisting of a complete physical address was transferred to the memory subsystem and data was returned. In a distributed memory system, the main memory is physically distributed over many different cells. A cell may consist of multiple processors, one or more input / output (I / O) devices, a cell controller, and memory. Each cell holds a different part of the main memory space. Each processor can access not only local memory, but also memory of other cells via cell communication link circuits such as one or more crossbar switches.
[0003]
Caching can improve performance limitations associated with memory accesses. Caching involves storing a subset of the contents of main memory in a cache memory that is smaller and faster than main memory. Any strategy is used to increase the probability that the cache contents will expect a request for data. For example, most caches fetch and store multi-word lines because data near a requested word in the memory address space is relatively likely to be requested in close proximity to the requested word. . The number of words stored in a single cache line defines the line size of the system. For example, a cache line may be eight words long.
[0004]
Caches typically have much less line storage locations than main memory. Typically, a "tag" is stored with the data at each cache location to uniquely indicate the main memory line address holding the cache data.
[0005]
In both single-processor and multi-processor systems, there is the problem of guaranteeing "coherency" between the cache and the main memory. For example, when a processor changes data stored in a cache, the change must be reflected in main memory. Typically, there is some latency between the time the data is changed in the cache and the time the change is reflected in the main memory. During this latency, unmodified data in the main memory is invalid. Steps must be taken to ensure that main memory data is not read while it is invalid.
[0006]
In a distributed memory multiprocessor system where each processor or I / O module has a cache memory, the situation is somewhat more complicated than in a single processor system with a cache memory. In a multiprocessor system, current data corresponding to a particular main memory address may be stored in one or more cache memories and / or main memory. The data in the cache memory may have been manipulated by the processor, resulting in a value that is different from the value stored in main memory. Thus, a "cache coherency scheme" is implemented to ensure that the current data value at any address is provided independent of where the data value resides.
[0007]
Usually, "permission" is required to change cache data. Typically, permission is granted only if the data is stored in exactly one cache. Data stored in multiple caches is often treated as read-only. Each cache line may include one or more status bits that indicate whether permission to change the data stored on that line is granted. The exact nature of the state depends on the system, but typically a "privacy" state bit is used to indicate permission to change. If the privacy bit indicates "private", only one cache holds the data and the associated processor has permission to change the data. If the privacy bit indicates "public," any number of caches can hold the data and no processor can modify the data.
[0008]
In a multi-processor system, a processor that wants to read or modify data typically determines which cache, if any, has a copy of the data and is authorized to modify the data. Is made. "Snooping" involves examining the contents of multiple caches to make that determination. If the requested data is not found in the local cache, the remote cache can be "snooped". A recall may be issued requesting that the private data be made public so that another processor can read it, or another cache may change the public data of some caches. You can issue a recall to disable it.
[0009]
For many processors and caches, exhaustive snooping can degrade performance. For this reason, some distributed memory multiprocessor systems snoop within cells and rely on directory-based cache consistency for inter-cell consistency. A distributed memory multiprocessor system using directory-based cache coherence was filed on August 25, 1997, issued on April 25, 2000, and published in "DISTRIBUTED MEMORY MULTIPROCESSOR COMPUTER SYSTEM WITH DIRECTORY BASE FASHION CAMERA BUSINESS WHERE. CACHED DATA TO MAIN-MEMORY LOCATIONS "in U.S. Patent No. 6,055,610.
[0010]
In distributed memory systems that use directory-based cache coherency, the main memory of each cell typically associates a directory entry with each line of memory. Each directory entry typically specifies the cell that caches the line and whether the line of data is public or private. The directory entry may also identify the particular cache (s) in the cell that caches the data, and / or any cache (s) in the cell using snooping. You may determine whether you have the data. Thus, each cell includes a directory that indicates the location of a cached copy of the data stored in its main memory.
[0011]
As an example, in an 8-cell system, each directory entry may be 9 bits long. For each of the eight cells, a respective "site" bit indicates whether each cell contains a cached copy of the line. The ninth “privacy” bit indicates whether the data is kept private or public.
[0012]
It is sometimes desirable to move or migrate memory from cell to cell or within a particular cell. For example, memory can be migrated from a defective memory device to a spare memory device. As another example, a board containing one or more memory devices, possibly because the board contains defective components, because the board has been replaced by a newer revision, or for some other reason, May need to be removed from the system. Before removing the board, it may be desirable to migrate the memory from the board to another location.
[0013]
[Problems to be solved by the invention]
Memory migration usually occurs due to operating system intervention, where the memory is first deallocated and later reallocated to the desired destination. With such prior art memory migration techniques, processes accessing the memory being migrated may be stalled, or the system may be unable to migrate memory without waiting for the process to terminate. There is. Thus, prior art memory migration techniques affect the operation of software and sometimes render the system unusable for a period of time. Moreover, using the prior art migration techniques, some pages required by the operating system and firmware cannot be easily migrated.
[0014]
Also, memories can be interleaved, making memory migration using conventional techniques more difficult. Deinterleaving memory is not a simple task, and sometimes there is no deinterleaving solution.
[0015]
[Means for Solving the Problems]
One aspect of the present invention provides a distributed memory multiprocessor system having a plurality of cells communicably coupled to one another and including a plurality of processors, a cache, a main memory, and a cell controller as a whole. Each of the cells includes at least one of the processors, at least one of the caches, one of the main memory, and one of the cell controllers. Each of the cells performs a memory migration function to migrate memory from a first main memory of the main memory to a second main memory of the main memory in a manner that is invisible to an operating system of the system. It is configured to
[0016]
BEST MODE FOR CARRYING OUT THE INVENTION
In the following detailed description of the preferred embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the invention. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
[0017]
FIG. 1 is a block diagram illustrating a distributed
[0018]
In one embodiment,
[0019]
While one embodiment of the present invention is described in the context of a multi-cell system, where each cell includes multiple processors and multiple I / O modules, those skilled in the art will appreciate that the memory migration techniques described herein may use other techniques. It will be clear that the present invention can be applied to a system configuration. For example, alternative embodiments of the invention may have a single processor (with cache) building block, a single I / O module (with cache) building block, or other building blocks, rather than having cells like those shown in FIG. Other system building blocks, such as blocks, may be incorporated.
[0020]
According to one embodiment, during normal operation,
[0021]
The request for data by the
[0022]
Caches (e.g.,
[0023]
In one form of the invention, a status bit is included for each cache line in a cache (e.g.,
[0024]
In one embodiment, in addition to storing tag bits and user data bits in each cache line, each cache line also stores a "valid" status bit and a "privacy" status bit. The validity status bit indicates whether the cache line is valid or invalid. The privacy status bit indicates whether the data stored in the cache line is public or private. The processor can read any valid data in its cache. However, in one embodiment, the processor can only change data that the cache holds privately. When a processor needs to change data it holds publicly, it is first made private. If the processor needs to change data that is not in its associated cache, the data is placed in that cache as private. If the data is in use by another cache, it is recalled from that cache before being made private.
[0025]
In one embodiment, snooping is used to locate a copy of the requested data in a cache associated with another processor (or I / O module) in the same cell. Thus, when the
[0026]
In one embodiment, inter-cell consistency is directory-based in
[0027]
The
[0028]
The
[0029]
In one form of the invention, in addition to storing the consistency information, the consistency directories in the main memory of system 100 (eg, directories 138 and 162) also identify the migration status of the line during a memory migration transaction. It also stores the migration status information used for this purpose. In one embodiment, the transition status information includes four transition states: (1) Home_Cell_Ownership (home cell ownership), (2) Waiting_For_Migration (waiting for transition), (3) In_Migration (migrating) or (4) Migrated ( (Migrated). Each of these transition states will be discussed in more detail below with reference to FIGS. 2 and 3A-3C. Each cell controller (eg, cell controller 128 of
[0030]
In one embodiment, memory migration is performed on a cache line basis. In alternative embodiments, memory sizes other than a single line may be used. The term "new cell" is used to identify the cell to which the line is migrated, and the term "old cell" is used to identify the cell from which the line is migrated. In one embodiment, the transition may occur in the same cell, where the line is moved from one physical location of memory in the cell to another physical location of memory in the same cell. .
[0031]
FIG. 2 is a flowchart illustrating a
[0032]
In
[0033]
In
[0034]
At
[0035]
In
[0036]
At
[0037]
In
[0038]
In
[0039]
At
[0040]
At
[0041]
At
The
[0042]
As indicated by
[0043]
FIG. 3A is a state diagram illustrating directory state transitions of directory 138 for memory lines migrated from
[0044]
FIG. 3B is a state diagram illustrating directory state transitions of directory 162 for a memory line in
[0045]
FIG. 3C is a diagram showing a time sequence of the states shown in FIGS. 3A and 3B. As shown in FIG. 3C, the
[0046]
In one embodiment, during the transition sequence, one or more address ranges of memory are migrated, with a granularity of one memory line. The memory lines in the desired address range may always be in a variety of different transition states. In one form of the invention, the address range register is not updated to reflect the transition until all memory lines within the specified range have been transitioned (eg,
[0047]
Embodiments of the present invention provide a number of advantages over prior art memory migration techniques. One aspect of the present invention is a distributed memory multiprocessor system that uses directory-based cache coherency to move memory from location to location, whether or not interleaved, without the need for operating system involvement. A system and method for dynamically migrating is provided. In one embodiment, the hardware is used during the migration with the help of some software provided by the system firmware or by the utility firmware. In one aspect of the invention, software accessing the migrated memory can continue to access the memory seamlessly during the migration, so that service is not interrupted to the user. In one aspect of the invention, the migration occurs without the involvement of or adversely affecting the operating system and application software. In one embodiment, the migration is "invisible" to the operating system, and the operating system and application software need not be notified that the migration has occurred or has occurred.
[0048]
One aspect of the present invention provides a memory migration process that is independent of the processor interface and does not require that the processor interface protocol support any new transactions to perform the migration function. Any processor or I / O controller design can be used with one embodiment of the memory migration process.
[0049]
In one embodiment, the techniques described herein may be used to migrate memory as additional memory is added to the system, and may be used in conjunction with traditional error detection and correction schemes to remove defective memory. A memory location can be migrated to a spare memory location. When the defective memory is replaced or otherwise repaired, the spare memory location can be migrated back to the new or repaired memory.
[0050]
While specific embodiments have been illustrated and described herein for purposes of describing the preferred embodiments of the invention, those skilled in the art will recognize the specific embodiments shown and described without departing from the scope of the invention. It will be appreciated that the embodiments may be replaced by a wide variety of alternative and / or equivalent implementations. Those with skill in the chemical, mechanical, electro-mechanical, electrical, and computer arts will readily appreciate that the present invention may be implemented in a wide variety of embodiments. This application is intended to cover any adaptations or variations of the preferred embodiments discussed herein. Accordingly, it is expressly intended that this invention be limited only by the claims and the equivalents thereof.
[Brief description of the drawings]
FIG. 1 is a block diagram illustrating a distributed memory multiprocessor system configured to migrate memory, according to one embodiment of the invention.
FIG. 2 is a flowchart illustrating a memory migration process according to one embodiment of the present invention.
FIG. 3A is a state diagram illustrating directory state transitions for “old cells” during a memory transition sequence according to one embodiment of the present invention.
FIG. 3B is a state diagram illustrating directory state transitions for a “new cell” during a memory transition sequence according to one embodiment of the present invention.
FIG. 3C is a diagram showing a time sequence of the states shown in FIGS. 3A and 3B.
Claims (10)
複数のセルが互いに通信可能に結合され、該複数のセルは全体として複数のプロセッサとキャッシュとメインメモリとセルコントローラとを含み、
前記セルの各々は、前記プロセッサのうちの少なくとも1つと、前記キャッシュのうちの少なくとも1つと、前記メインメモリのうちの1つと、前記セルコントローラのうちの1つとを含み、
前記セルの各々は、当該マルチプロセッサシステムのオペレーティングシステムに対して不可視である方法で、前記メインメモリのうちの第1のメインメモリから前記メインメモリのうちの第2のメインメモリにメモリを移行させるメモリ移行機能を実行するように構成される分散メモリマルチプロセッサシステム。A distributed memory multiprocessor system, comprising:
A plurality of cells communicatively coupled to each other, the plurality of cells generally including a plurality of processors, a cache, a main memory, and a cell controller;
Each of the cells includes at least one of the processors, at least one of the caches, one of the main memories, and one of the cell controllers;
Each of the cells migrates memory from a first main memory of the main memory to a second main memory of the main memory in a manner that is invisible to an operating system of the multiprocessor system. A distributed memory multiprocessor system configured to perform a memory migration function.
各々が、少なくとも1つのプロセッサと、少なくとも1つのキャッシュと、メインメモリと、セルコントローラと、キャッシュ整合性ディレクトリとを含む、複数のセルを提供するステップと、
前記セルのうちの第1のセルと前記セルのうちの第2のセルとの間のメモリ移行トランザクションを開始するステップと、
該メモリ移行トランザクション中に、前記第1のセルの前記メインメモリにおける第1のメモリ部から前記第2のセルの前記メインメモリにおける第2のメモリ部に、データをコピーするステップと、
前記第1のセルと前記第2のセルとの前記キャッシュ整合性ディレクトリに、前記メモリ移行トランザクション中の前記第1のメモリ部と前記第2のメモリ部との移行状態を示す移行ステータス情報を格納するステップと
を含む方法。A method for migrating memory in a distributed memory multiprocessor system, comprising:
Providing a plurality of cells, each including at least one processor, at least one cache, main memory, a cell controller, and a cache coherency directory;
Initiating a memory transfer transaction between a first of said cells and a second of said cells;
Copying data from a first memory portion of the main memory of the first cell to a second memory portion of the main memory of the second cell during the memory transfer transaction;
In the cache coherency directory between the first cell and the second cell, migration status information indicating a migration state between the first memory unit and the second memory unit during the memory migration transaction is stored. The steps of:
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/201,180 US7103728B2 (en) | 2002-07-23 | 2002-07-23 | System and method for memory migration in distributed-memory multi-processor systems |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004054931A true JP2004054931A (en) | 2004-02-19 |
JP2004054931A5 JP2004054931A5 (en) | 2006-08-03 |
JP4500014B2 JP4500014B2 (en) | 2010-07-14 |
Family
ID=30769618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003181949A Expired - Fee Related JP4500014B2 (en) | 2002-07-23 | 2003-06-26 | System and method for memory migration in a distributed memory multiprocessor system |
Country Status (2)
Country | Link |
---|---|
US (1) | US7103728B2 (en) |
JP (1) | JP4500014B2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004213657A (en) * | 2003-01-03 | 2004-07-29 | Hewlett-Packard Development Co Lp | Method for migrating data between memories |
JP2009070013A (en) * | 2007-09-12 | 2009-04-02 | Nec Computertechno Ltd | Multiprocessor and memory replacement method |
WO2010052799A1 (en) * | 2008-11-10 | 2010-05-14 | 富士通株式会社 | Information processing device and memory control device |
US8015372B2 (en) | 2008-02-06 | 2011-09-06 | Nec Corporation | Apparatus and method for memory migration in a distributed memory multiprocessor system |
JP2013546095A (en) * | 2010-12-29 | 2013-12-26 | エンパイア テクノロジー ディベロップメント エルエルシー | Accelerating cache state migration on directory-based multi-core architectures |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3977803B2 (en) * | 2003-12-17 | 2007-09-19 | 株式会社日立製作所 | Backup system, method and program |
US8806103B2 (en) * | 2004-04-28 | 2014-08-12 | Hewlett-Packard Development Company, L.P. | System and method for interleaving memory |
US7882307B1 (en) * | 2006-04-14 | 2011-02-01 | Tilera Corporation | Managing cache memory in a parallel processing environment |
US8621120B2 (en) * | 2006-04-17 | 2013-12-31 | International Business Machines Corporation | Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism |
US20080010417A1 (en) * | 2006-04-28 | 2008-01-10 | Zeffer Hakan E | Read/Write Permission Bit Support for Efficient Hardware to Software Handover |
US7734843B2 (en) * | 2006-05-25 | 2010-06-08 | International Business Machines Corporation | Computer-implemented method, apparatus, and computer program product for stalling DMA operations during memory migration |
US20090144388A1 (en) * | 2007-11-08 | 2009-06-04 | Rna Networks, Inc. | Network with distributed shared memory |
US20090150511A1 (en) | 2007-11-08 | 2009-06-11 | Rna Networks, Inc. | Network with distributed shared memory |
US9239765B2 (en) * | 2010-08-31 | 2016-01-19 | Avaya Inc. | Application triggered state migration via hypervisor |
KR101534540B1 (en) | 2011-07-28 | 2015-07-07 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Method and device for implementing memory migration |
US9135172B2 (en) | 2012-08-02 | 2015-09-15 | Qualcomm Incorporated | Cache data migration in a multicore processing system |
US9549037B2 (en) | 2012-08-07 | 2017-01-17 | Dell Products L.P. | System and method for maintaining solvency within a cache |
US9495301B2 (en) | 2012-08-07 | 2016-11-15 | Dell Products L.P. | System and method for utilizing non-volatile memory in a cache |
US9852073B2 (en) | 2012-08-07 | 2017-12-26 | Dell Products L.P. | System and method for data redundancy within a cache |
ES2727818T3 (en) | 2013-11-22 | 2019-10-18 | Huawei Tech Co Ltd | Method, computer and device to migrate memory data |
CN105353980B (en) * | 2013-11-22 | 2019-10-22 | 华为技术有限公司 | A kind of moving method of internal storage data, computer and device |
US10526785B2 (en) * | 2017-04-26 | 2020-01-07 | Opterus Research and Development, Inc. | Deformable structures |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04211848A (en) * | 1990-01-18 | 1992-08-03 | Stc Internatl Computers Ltd | Memory control of multiprocessor system |
JPH10503310A (en) * | 1995-05-05 | 1998-03-24 | シリコン グラフィックス インコーポレイテッド | Page movement in non-uniform memory access (NUMA) systems |
JPH11154115A (en) * | 1997-08-25 | 1999-06-08 | Hewlett Packard Co <Hp> | Distributed memory multi-processor system |
JPH11238047A (en) * | 1998-02-20 | 1999-08-31 | Nec Corp | Distributed common memory system and recording medium which records program and which machine can read |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62206658A (en) * | 1986-03-07 | 1987-09-11 | Hitachi Ltd | Memory controller |
US5146605A (en) * | 1987-11-12 | 1992-09-08 | International Business Machines Corporation | Direct control facility for multiprocessor network |
US5293607A (en) * | 1991-04-03 | 1994-03-08 | Hewlett-Packard Company | Flexible N-way memory interleaving |
US6049851A (en) * | 1994-02-14 | 2000-04-11 | Hewlett-Packard Company | Method and apparatus for checking cache coherency in a computer architecture |
US5530933A (en) * | 1994-02-24 | 1996-06-25 | Hewlett-Packard Company | Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus |
US5530837A (en) * | 1994-03-28 | 1996-06-25 | Hewlett-Packard Co. | Methods and apparatus for interleaving memory transactions into an arbitrary number of banks |
DE69519816T2 (en) * | 1994-05-03 | 2001-09-20 | Hewlett-Packard Company (A Delaware Corporation), Palo Alto | Duplicate cache tag array arrangement |
JPH07311749A (en) * | 1994-05-19 | 1995-11-28 | Toshiba Corp | Multiprocessor system and kernel substituting method |
US6785783B2 (en) * | 2000-11-30 | 2004-08-31 | International Business Machines Corporation | NUMA system with redundant main memory architecture |
-
2002
- 2002-07-23 US US10/201,180 patent/US7103728B2/en not_active Expired - Fee Related
-
2003
- 2003-06-26 JP JP2003181949A patent/JP4500014B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04211848A (en) * | 1990-01-18 | 1992-08-03 | Stc Internatl Computers Ltd | Memory control of multiprocessor system |
JPH10503310A (en) * | 1995-05-05 | 1998-03-24 | シリコン グラフィックス インコーポレイテッド | Page movement in non-uniform memory access (NUMA) systems |
JPH11154115A (en) * | 1997-08-25 | 1999-06-08 | Hewlett Packard Co <Hp> | Distributed memory multi-processor system |
JPH11238047A (en) * | 1998-02-20 | 1999-08-31 | Nec Corp | Distributed common memory system and recording medium which records program and which machine can read |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004213657A (en) * | 2003-01-03 | 2004-07-29 | Hewlett-Packard Development Co Lp | Method for migrating data between memories |
JP4511824B2 (en) * | 2003-01-03 | 2010-07-28 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | How to migrate data between memories |
JP2009070013A (en) * | 2007-09-12 | 2009-04-02 | Nec Computertechno Ltd | Multiprocessor and memory replacement method |
US8015372B2 (en) | 2008-02-06 | 2011-09-06 | Nec Corporation | Apparatus and method for memory migration in a distributed memory multiprocessor system |
WO2010052799A1 (en) * | 2008-11-10 | 2010-05-14 | 富士通株式会社 | Information processing device and memory control device |
JP5136652B2 (en) * | 2008-11-10 | 2013-02-06 | 富士通株式会社 | Information processing apparatus and memory control apparatus |
US8725954B2 (en) | 2008-11-10 | 2014-05-13 | Fujitsu Limited | Information processing apparatus and memory control apparatus |
JP2013546095A (en) * | 2010-12-29 | 2013-12-26 | エンパイア テクノロジー ディベロップメント エルエルシー | Accelerating cache state migration on directory-based multi-core architectures |
US9336146B2 (en) | 2010-12-29 | 2016-05-10 | Empire Technology Development Llc | Accelerating cache state transfer on a directory-based multicore architecture |
US9760486B2 (en) | 2010-12-29 | 2017-09-12 | Empire Technology Development Llc | Accelerating cache state transfer on a directory-based multicore architecture |
Also Published As
Publication number | Publication date |
---|---|
JP4500014B2 (en) | 2010-07-14 |
US7103728B2 (en) | 2006-09-05 |
US20040019751A1 (en) | 2004-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4500014B2 (en) | System and method for memory migration in a distributed memory multiprocessor system | |
KR100194253B1 (en) | How to Use Mesh Data Coherency Protocol and Multiprocessor System | |
US5802582A (en) | Explicit coherence using split-phase controls | |
TWI432963B (en) | Low-cost cache coherency for accelerators | |
TW548545B (en) | Cache line pre-load and pre-own based on cache coherence speculation | |
TWI526829B (en) | Computer system,method for accessing storage devices and computer-readable storage medium | |
JP4316016B2 (en) | System and method for maintaining memory coherence in a computer system having multiple system buses | |
US6990559B2 (en) | Mechanism for resolving ambiguous invalidates in a computer system | |
JP4928812B2 (en) | Data processing system, cache system, and method for sending requests on an interconnect fabric without reference to a lower level cache based on tagged cache state | |
TWI237181B (en) | Non-uniform memory access (NUMA) computer system that grants exclusive ownership of data based on history information | |
US6636949B2 (en) | System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing | |
US7032074B2 (en) | Method and mechanism to use a cache to translate from a virtual bus to a physical bus | |
US6751720B2 (en) | Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy | |
JP5201514B2 (en) | Chip multiprocessor and method | |
US7680987B1 (en) | Sub-page-granular cache coherency using shared virtual memory mechanism | |
JP3924203B2 (en) | Decentralized global coherence management in multi-node computer systems | |
JP3900481B2 (en) | Method for operating a non-uniform memory access (NUMA) computer system, memory controller, memory system, node comprising the memory system, and NUMA computer system | |
JP4119380B2 (en) | Multiprocessor system | |
US7549025B2 (en) | Efficient marking of shared cache lines | |
JP2000250812A (en) | Memory cache system and managing method therefor | |
US20050160238A1 (en) | System and method for conflict responses in a cache coherency protocol with ordering point migration | |
TW201009578A (en) | Reducing back invalidation transactions from a snoop filter | |
US5713004A (en) | Cache control for use in a multiprocessor to prevent data from ping-ponging between caches | |
JP4577729B2 (en) | System and method for canceling write back processing when snoop push processing and snoop kill processing occur simultaneously in write back cache | |
JPH08249231A (en) | System and method for processing of old data in multiprocessor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060615 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060615 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091208 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100305 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20100305 |
|
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: 20100330 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100416 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 3 |
|
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: 20140423 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |