(57)【要約】【課題】  持続性メモリにアクセスするための改良された方法を提供する。【解決手段】  本開示は、ストレージＩ／Ｏの永続性および回復可能性を、システムメモリの速度および微細粒度アクセスと組み合わせた持続性メモリデバイスを記述する。ストレージと同様、その内容は、停電やシステム再起動があっても存続することができる。また、リモートメモリと同様、ＳＡＮを超えてアクセスされる。しかし、直接接続メモリとは異なり、本デバイスは、それにアクセスするプロセッサに障害が生じた後であっても、アクセスし続けることができる。【選択図】  図１
2004227568.tif 000002
【特許請求の範囲】
【請求項１】
通信リンクアタッチド持続性メモリを有するシステムであって、
通信リンク（１０６）と、
持続性メモリ仮想アドレス空間（５６０）に対して持続性メモリ動作を開始するプロセッサノード（１０２）であって、第１インタフェース（１０４）経由で前記通信リンクに通信可能に結合するプロセッサノード（１０２）と、
第２インタフェース（１０８）経由で前記通信リンク（１０６）に通信可能に結合する持続性メモリユニット（１１０）であって、該通信リンクアタッチド持続性メモリ内で前記持続性メモリ仮想アドレス空間（５６０）と持続性メモリ物理アドレス空間（５６２）の間の変換を行うように構成される持続性メモリユニット（１１０）と
を備える通信リンクアタッチド持続性メモリを有するシステム。
【請求項２】
前記プロセッサノード（１０２）は、中央処理装置（３０６）を含む
請求項１に記載の通信リンクアタッチド持続性メモリを有するシステム。
【請求項３】
前記通信リンク（１０６）は、ネットワークおよびバスからなる群から選択される
請求項１に記載の通信リンクアタッチド持続性メモリを有するシステム。
【請求項４】
前記ネットワークは、
システムエリアネットワーク、
ＳｅｒｖｅｒＮｅｔネットワーク、
ＧｉｇａＮｅｔネットワーク、
Ｉｎｆｉｎｉｂａｎｄネットワーク、
Ｉｎｆｉｎｉｂａｎｄ、
ＰＣＩ  Ｅｘｐｒｅｓｓ、
イーサネット、
ＲＤＭＡ対応イーサネットおよび
仮想インタフェースアーキテクチャ（ＶＩＡ）ネットワーク
からなる群から選択される
請求項３に記載の通信リンクアタッチド持続性メモリを有するシステム。
【請求項５】
前記通信リンクアタッチド持続性メモリは、
磁気ランダムアクセスメモリ、
磁気抵抗ランダムアクセスメモリ、
ポリマー強誘電体ランダムアクセスメモリ、
オボニックスユニファイドメモリ、
フラッシュメモリおよびバッテリバックド揮発性メモリ
からなる群から選択される
請求項１に記載の通信リンクアタッチド持続性メモリを有するシステム。
【請求項６】
通信リンク（１０６）経由で持続性メモリにアクセスする方法であって、
プロセッサノード（１０２）で持続性メモリコマンドを開始することであって、該メモリコマンドは持続性メモリ仮想アドレス（５６０）への参照を含む持続性メモリコマンドを開始することと、
前記通信リンク（１０６）経由で持続性メモリユニット（１１０）へ前記持続性メモリコマンドを通信することと、
前記持続性メモリユニット（１１０）で、前記持続性メモリ内で前記持続性メモリ仮想アドレス（５６０）を持続性メモリ物理アドレス（５６２）に変換することと、
前記物理アドレス（５６２）の内容に対して前記メモリコマンドを実行することと
を含む持続性メモリにアクセスする方法。
【請求項７】
前記持続性メモリ仮想アドレスは、複数の持続性メモリ仮想アドレス空間（６７０，６７２）に対応し、
前記持続性メモリユニット（１１０）はさらに、該複数の持続性メモリ仮想アドレス空間（６７０，６７２）を持続性メモリ物理アドレス（６７４）に変換する
請求項６に記載の持続性メモリにアクセスする方法。
【請求項８】
前記通信リンク（１０６）は、ネットワークおよびバスからなる群から選択される
請求項６に記載の持続性メモリにアクセスする方法。
【請求項９】
前記ネットワークは、
システムエリアネットワーク、
ＳｅｒｖｅｒＮｅｔネットワーク、
ＧｉｇａＮｅｔネットワーク、
Ｉｎｆｉｎｉｂａｎｄネットワーク、
Ｉｎｆｉｎｉｂａｎｄ、
ＰＣＩ  Ｅｘｐｒｅｓｓ、
イーサネット、
ＲＤＭＡ対応イーサネットおよび
仮想インタフェースアーキテクチャ（ＶＩＡ）ネットワーク
からなる群から選択される
請求項８に記載の持続性メモリにアクセスする方法。
【請求項１０】
前記通信リンクアタッチド持続性メモリは、
磁気ランダムアクセスメモリ、
磁気抵抗ランダムアクセスメモリ、
ポリマー強誘電体ランダムアクセスメモリ、
オボニックスユニファイドメモリ、
フラッシュメモリおよび
バッテリバックド揮発性メモリ
からなる群から選択される
請求項６に記載の持続性メモリにアクセスする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信リンクアタッチド持続性メモリを有するシステムおよび持続性メモリにアクセスする方法に関する。
【背景技術】
【０００２】
従来、コンピュータは、メモリに、または磁気テープやディスクのような他の入出力（Ｉ／Ｏ）ストレージデバイスにデータを格納している。
Ｉ／Ｏストレージデバイスは、ＰＣＩ（当初Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔと名付けられた）のようなＩ／Ｏバスを通じて、またはファイバチャネル、Ｉｎｆｉｎｉｂａｎｄ、ＳｅｒｖｅｒＮｅｔ、またはイーサネット（登録商標）のようなネットワークを通じて、システムにアタッチすることができる。
Ｉ／Ｏストレージデバイスは通常低速であり、アクセス時間が１ミリ秒より大きい。
Ｉ／Ｏストレージデバイスは、ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍｓ  ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）プロトコルやｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ／ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ（ＴＣＰ／ＩＰ）のような特別のＩ／Ｏプロトコルを利用し、通常はブロック交換デバイスとして動作する（例えば、データは固定サイズのデータブロック単位で読み書きされる）。
これらのタイプのストレージＩ／Ｏデバイスの特徴は、持続性があるため、電源が切れた場合や再起動された場合に、以前に格納されていた情報を保持していることである。
さらに、Ｉ／Ｏストレージデバイスは、いくつかのプロセッサに障害が生じた後であっても、共有Ｉ／Ｏネットワークを通じて複数のプロセッサからアクセスすることができる。
【０００３】
システムメモリは一般にシステムバスを通じてプロセッサに接続されるが、このようなメモリは比較的高速であり、１０ナノ秒単位で測定される保証アクセス時間を有する。
さらに、システムメモリはバイトレベルの粒度で直接アクセスすることができる。
しかし、システムメモリは通常は揮発性であるため、電源が切れた場合やこのようなメモリを具現化するシステムが再起動された場合にその内容が失われる。
また、システムメモリは通常、プロセッサと同じフォルトドメイン内にあるため、プロセッサに障害が生じれば、アタッチされているメモリにも障害が生じて、もはやアクセス不能になり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来技術のシステムは、バッテリバックド・ダイナミック・ランダムアクセスメモリ（ＢＢＤＲＡＭ）、固体ディスク、およびネットワークアタッチド揮発性メモリを使用している。
例えば従来のＢＢＤＲＡＭは、真の持続性メモリを超えるいくつかの性能上の利点を有するかもしれないが、グローバルにアクセス可能でない。
さらに、ＢＢＤＲＡＭはアタッチされているＣＰＵと同じフォルトドメイン内にあるため、ＣＰＵ障害やオペレーティングシステムクラッシュの場合にＢＢＤＲＡＭはアクセス不能となる。
よって、ＢＢＤＲＡＭは、停電またはリブート後にシステムが迅速に再起動されるように全システムメモリが持続性とされるような状況で使用されることが多い。
ＢＢＤＲＡＭは、長期の停電中にはやはり揮発性であるため、バッテリが切れる前にその内容を格納するための代替手段を設けなければならない。
さらに、ＢＢＤＲＡＭのＲＤＭＡアタッチメントは存在が知られていない。
重要なことであるが、ＢＢＤＲＡＭのこの用途は非常に限定的であり、例えばネットワークアタッチド持続性メモリアプリケーションにおける使用になじまない。
【０００５】
いくつかのバッテリバックド固体ディスク（ＢＢＳＳＤ）もまた他の実施態様として提案されている。
これらのＢＢＳＳＤは持続性メモリを提供するが、機能的にはディスクドライブをエミュレートしている。
この手法の重大な欠点は、Ｉ／Ｏアダプタを通じてこれらのデバイスにアクセスすることに伴う追加のレイテンシである。
【０００６】
このレイテンシは、ディスクによって、したがってＢＢＳＳＤによって使用されるブロック指向およびファイル指向のストレージモデルに固有である。
それらは、オペレーティングシステムをバイパスしない次善のデータパスを通る。
いくつかの欠点を除去するように固体ディスクを改良することは可能であるが、固有のレイテンシを除去することはできない。
というのは、パフォーマンスがＩ／Ｏプロトコルおよびそれに関連するデバイスドライバによって制限されるからである。
ＢＢＤＲＡＭの場合と同様、長期間の停電に対処するための追加的技術が必要である。
【課題を解決するための手段】
【０００７】
本開示は、ストレージＩ／Ｏの永続性および回復可能性を、システムメモリの速度および微細粒度アクセスと組み合わせた持続性メモリデバイスを記述する。
ストレージと同様、その内容は、停電やシステム再起動があっても存続することができる。
また、リモートメモリと同様、ＳＡＮを超えてアクセスされる。
しかし、直接接続メモリとは異なり、本デバイスは、それにアクセスするプロセッサに障害が生じた後であっても、アクセスし続けることができる。
【０００８】
リモート・ダイレクトメモリアクセス（ＲＤＭＡ）は、ＳＡＮを他のクラスのネットワークから区別する重要な機能である。
すなわちそれは、メモリがリモートに配置されている（すなわち、プロセッサに直接接続されていない）場合であっても、連続使用メモリセマンティクスをサポートする。
したがって、ＳＡＮはＲＤＭＡ対応ネットワークとも呼ばれる。
それは、特徴として、バイト粒度での高速ゼロコピーメモリ動作を可能にする。
【０００９】
ネットワークアタッチド持続性メモリデバイスは通常、ディスク型の持続特性を使用する。
ここで、メモリの内容は、停電のみならず、オペレーティングシステムクラッシュ、他のソフトウェア障害、ハードウェアまたはソフトウェアのアップグレード、およびシステム保守リブートがあっても存続しなければならない。
本教示は、その持続性（または不揮発性）メモリの使用において独特であり、揮発性メモリに比べて非常に異なる設計および実施態様制約のセットを課する。
例えば、メタデータ（すなわち、メモリの状態に関するデータ）の管理は、仮想アドレスから物理アドレスへの変換のための情報の管理とともに、２つの場合で極めて異なる。
さらに、本教示は、ＲＤＭＡ読み書き動作を用いたＲＤＭＡ対応ネットワークへの持続性メモリのアタッチメントにおいて独特である。
【００１０】
一実施態様では、システムが、ネットワークアタッチド持続性メモリユニットを含む。
システムは、読み書き動作のようなメモリ動作を開始するプロセッサノードを含む。
プロセッサユニットは、持続性メモリアドレス空間に対応する仮想アドレス空間に対してそのアドレス動作を参照する。
プロセッサノードはさらに、持続性メモリユニットと通信するために使用されるネットワークインタフェースを含む。
ここで持続性メモリユニットはそれ自身のネットワークインタフェースを有する。
よって、プロセッサノードおよび持続性メモリユニットは、ネットワークおよび好ましくはシステムエリアネットワークのような通信リンクを通じて通信する。
持続性メモリユニットはさらに、プロセッサノードに既知の仮想アドレス空間と持続性メモリユニットのみに既知の物理アドレス空間との間の変換を行うように構成される。
他の実施形態では、複数のアドレス空間が提供され、持続性メモリユニットはこれらの複数のアドレス空間から物理アドレス空間への変換も提供する。
【００１１】
他の実施形態では、持続性メモリ仮想アドレスから持続性メモリ物理アドレスへの変換は、それぞれのプロセッサノード内で行われる。
さらに他の実施形態では、その変換はＳＡＮに関連するリンク、ポート、スイッチ、ルータ、ブリッジ、ファームウェア、ソフトウェアまたはサービスのいずれかの内部で行われる。
本教示は、このような変換に必要なマッピング情報が持続性メモリに格納されたデータと整合して維持され、格納されているマッピング情報を用いてエンティティが効率的にアドレス変換を実行することができ、情報を持続性メモリから回復することが必要とされる時はいつでもそのエンティティおよび必要なマッピング情報が利用可能であるということのみを仮定する。
【００１２】
さらに他の実施形態では、ＳｅｒｖｅｒＮｅｔ、ＧｉｇａＮｅｔ、Ｉｎｆｉｎｉｂａｎｄ、ＰＣＩ  Ｅｘｐｒｅｓｓ、ＲＤＭＡ対応イーサネット、および仮想インタフェースアーキテクチャ（ＶＩＡ）ネットワークのような他のタイプのネットワークが使用される。
さらに、磁気ランダムアクセスメモリ（ＭＲＡＭ）、磁気抵抗ランダムアクセスメモリ（ＭＲＲＡＭ）、ポリマー強誘電体ランダムアクセスメモリ（ＰＦＲＡＭ）、オボニックスユニファイドメモリ（ＯＵＭ）、およびフラッシュメモリのような種々のタイプの持続性メモリが使用される。
【００１３】
これらおよびその他の実施形態は、関連技術の当業者が本開示を理解すれば、理解されるであろう。
【００１４】
添付図面は、本明細書に組み込まれて本明細書の一部をなし、本発明の好ましい実施形態を図示し、本明細書の記載とともに本発明の原理を説明する役割を果たす。
【発明を実施するための最良の形態】
【００１５】
従来技術のシステムは比較的大きいレイテンシを有するブロック指向およびファイル指向のＩ／Ｏアーキテクチャに関連してのみ持続性メモリを使用してきているのに対して、本教示は、従来のＩ／Ｏストレージデバイスと同様に持続性であるが微細粒度および低レイテンシのシステムメモリと同様にアクセス可能なメモリを記述する。
図１に示すように、ネットワークアタッチド持続性メモリを用いたシステム１００は、ＲＤＭＡ対応システムエリアネットワーク（ＳＡＮ）１０６を通じて１つまたは複数のプロセッサノード１０２によりアクセス可能なネットワークアタッチド持続性メモリユニット（ｎＰＭＵ）１１０を備える。
ｎＰＭＵ１１０の持続性メモリにアクセスするため、プロセッサノード１０２上で実行されるソフトウェアが、プロセッサノードのネットワークインタフェース（ＮＩ）１０４を通じてリモートリードまたはライト動作を開始する。
このようにして、リードまたはライトコマンドがＲＤＭＡ対応ＳＡＮ１０６上をｎＰＭＵのネットワークインタフェース（ＮＩ）１０８へ伝送される。
よって、処理後、適当なデータがＲＤＭＡ対応ＳＡＮ１０６を通じて通信される。
ＲＤＭＡデータ移動動作に加えて、ｎＰＭＵ１１０は、下記の種々の管理コマンドに応答するように構成され得る。
例えば、プロセッサノード１０２によって開始されるライト動作において、データがｎＰＭＵに格納されることに成功すると、それらのデータは永続性であり、停電やプロセッサノード１０２の障害があっても存続する。
特に、電源が長期間切断されたり、プロセッサノード１０２上のオペレーティングシステムがリブートされたりした後であっても、ｎＰＭＵが正しく機能し続ける限りメモリ内容が維持される。
【００１６】
本実施形態では、プロセッサノード１０２は、少なくとも１つの中央処理装置（ＣＰＵ）およびメモリを備えるコンピュータシステムであり、ＣＰＵはオペレーティングシステムを実行するように構成される。
プロセッサノード１０２はさらに、データベースプログラムのようなアプリケーションソフトウェアを実行するように構成される。
プロセッサノード１０２は、ＳＡＮ１０６を使用して、ｎＰＭＵ１１０およびＩ／Ｏコントローラ（図示せず）のようなデバイスとのみならず他のプロセッサノード１０２とも通信する。
【００１７】
本実施形態の一実施態様では、ＲＤＭＡ対応ＳＡＮは、２つのプロセッサノード間、またはプロセッサノードとデバイスの間で、プロセッサノード１０２のＣＰＵに通知することなしに、コピー動作のようなバイトレベルのメモリ動作を実行することが可能なネットワークである。
この場合、ＳＡＮ１０６は、隣接するネットワーク仮想アドレス空間を隣接しない物理アドレス空間の上にマッピングすることを可能にするために、仮想アドレスから物理アドレスへの変換を実行するように構成される。
このタイプのアドレス変換は、ｎＰＭＵ１１０の動的管理を可能にする。
ＲＤＭＡ機能を有する市販のＳＡＮ１０６としては、以下のものには限定されないが、ＳｅｒｖｅｒＮｅｔ、ＧｉｇａＮｅｔ、Ｉｎｆｉｎｉｂａｎｄ、およびすべての仮想インタフェースアーキテクチャ準拠ＳＡＮがある。
【００１８】
プロセッサノード１０２は一般的にＮＩ１０４を通じてＳＡＮ１０６にアタッチされるが、多くの変形が可能である。
しかし、より一般的には、プロセッサノードはリードおよびライト（あるいはロードおよびストア）動作を通信する装置に接続されればよい。
例えば、本実施形態のもう１つの実施態様では、プロセッサノード１０２はマザーボード上の種々のＣＰＵであり、ＳＡＮを使用する代わりに、例えばＰＣＩバスのようなデータバスが使用される。
本教示は、必要に応じて、より大きい、またはより小さい実施態様を収容するために拡大または縮小され得ることが留意される。
【００１９】
ネットワークインタフェース（ＮＩ）１０８は、ｎＰＭＵ１１０とともに含まれる持続性メモリへのアクセスを可能にするためにｎＰＭＵ１１０に通信可能に結合する。
持続性メモリのタイプを含め、図１の種々のコンポーネントのために多くの技術が利用可能である。
よって、図１の実施形態は、持続性メモリを実現するための特定の技術に限定されない。
実際、磁気ランダムアクセスメモリ（ＭＲＡＭ）、磁気抵抗ランダムアクセスメモリ（ＭＲＲＡＭ）、ポリマー強誘電体ランダムアクセスメモリ（ＰＦＲＡＭ）、オボニックスユニファイドメモリ（ＯＵＭ）、ＢＢＤＲＡＭ、およびすべての種類のフラッシュメモリを含む複数のメモリ技術が適当である。
ＢＢＳＳＤはブロックレベルの転送を実行するのに対して、本手法は、バイトレベルのメモリアクセスを含む、より微細な粒度のメモリアクセスを可能にする。
特に、メモリアクセス粒度は、本手法を用いて、より微細にも、より粗にもすることができる。
ＳＡＮ１０６が使用される場合、メモリはＲＤＭＡアクセスに十分なほど高速でなければならない。
こうして、ＲＤＭＡ読み書き動作がＳＡＮ１０６を通じて可能となる。
別のタイプの通信装置が使用される場合も、使用されるメモリのアクセス速度はその通信装置に対応するほど十分に高速でなければならない。
留意されるべきであるが、使用中の持続性メモリがデータを保持し得る範囲で持続性情報が提供される。
例えば、多くのアプリケーションでは停電時間の長さにかかわらずデータを格納するために持続性メモリが必要とされるかもしれないが、別のアプリケーションでは数分間または数時間のために持続性メモリが必要とされるだけかもしれない。
【００２０】
本手法とともに、単一または複数独立の間接アドレス指定されるメモリ領域を作成するために、メモリ管理機能が提供される。
さらに、停電またはプロセッサ障害後のメモリ回復のためにｎＰＭＵメタデータが提供される。
メタ情報は、例えば、ｎＰＭＵ内の保護メモリ領域の内容およびレイアウトを含む。
こうして、ｎＰＭＵは、データおよびデータの使用法を格納する。
必要が生じた時に、ｎＰＭＵは電源またはシステム障害からの回復を可能にすることができる。
【００２１】
図２に、バスのような通信リンク経由でＮＩ２０４に通信可能に結合した不揮発性メモリ２０２を使用するｎＰＭＵ２００の一実施形態を示す。
ここで、不揮発性メモリ２０２は、例えば、ＭＲＡＭまたはフラッシュメモリであってよい。
ＮＩ２０４は、それ自身のＲＤＭＡ要求を開始せず、代わりにＮＩ２０４はネットワークから管理コマンドを受信し、要求された管理動作を実行する。
具体的には、ｎＰＭＵ２００は、入力された要求に関するアドレスを変換してから要求された動作を実行する。
コマンド処理に関してさらに詳細には後述する。
【００２２】
図３に、揮発性メモリ３０２とバッテリ３０４および不揮発性２次ストア３１０との組合せを使用するｎＰＭＵ３００のもう１つの実施形態を示す。
本実施形態では、停電になると、揮発性メモリ３０２内のデータは、当該データが不揮発性２次ストア３１０に保存することができるようになるまで、バッテリ３０４の電力を用いて保持される。
不揮発性２次ストアは、例えば、磁気ディスクまたは低速フラッシュメモリであってよい。
ｎＰＭＵ３００が正しく動作するためには、揮発性メモリ３０２から不揮発性２次メモリストア３１０への転送が、外部の介入やバッテリ３０４から以外のいかなる別電源もなしに行われなければならない。
よって、要求されるいかなるタスクも、バッテリ３０４が放電し得る前に完了しなければならない。
図示のように、ｎＰＭＵ３００は、組込みオペレーティングシステムを実行するオプションのＣＰＵ３０６を含む。
よって、バックアップタスク（すなわち、揮発性メモリ３０２から不揮発性２次メモリストア３１０へのデータ転送）は、ＣＰＵ３０６上で実行されるソフトウェアによって実行することができる。
ＣＰＵ３０６上で実行されるソフトウェアの制御下でＲＤＭＡ要求を開始するためにＮＩ３０８も含まれる。
ここでも再び、ＣＰＵ３０６はネットワークから管理コマンドを受信し、要求された管理動作を実行する。
【００２３】
ｎＰＭＵ２００または３００のようなｎＰＭＵは、リソースの割当ておよび共有を容易にするために、管理されたエンティティでなければならない。
本実施形態では、ｎＰＭＵ管理は持続性メモリマネージャ（ＰＭＭ）によって実行される。
ＰＭＭは、ｎＰＭＵの内部に配置されても、前述のプロセッサノードの１つのようにｎＰＭＵの外部に配置されてもよい。
プロセッサノードがｎＰＭＵの持続性メモリの割当てもしくは解放を必要とする場合、または持続性メモリの既存の領域を使用する必要がある場合、プロセッサノードはまずＰＭＭと通信して、要求された管理タスクを実行する。
なお、ｎＰＭＵは（ディスクのように）永続性であり、しかもｎＰＭＵは一連の自己記述的な持続性データを維持するので、既存の持続性メモリ領域に関するメタデータはｎＰＭＵデバイス自体に格納されなければならないことに留意されたい。
したがってＰＭＭは、ｎＰＭＵ上のメタデータがｎＰＭＵに格納されている持続性データと整合した状態を常に保つような方法で管理タスクを実行して、ｎＰＭＵの格納データが、ｎＰＭＵの格納メタデータを用いて常に解釈され得るようにすることにより、可能性のあるシステムシャットダウンまたは障害の後に回復され得るようにする。
こうして、ｎＰＭＵは操作中のデータのみならずこのようなデータの処理の状態も持続的な方法で維持する。
したがって、回復のために必要な場合、ｎＰＭＵ１１０を使用するシステム１００は、停電またはオペレーティングシステムクラッシュが生じた際のメモリ状態から動作を回復し継続することができる。
【００２４】
図１に関連して説明したように、ＳＡＮ１０６は、基本的メモリ管理および仮想メモリサポートを提供する。
このような実施態様では、ＰＭＭは、リモート読み書き動作を可能にするためにｎＰＭＵ１１０のＮＩ１０８にロジックをプログラムすることができなければならない一方で、同時に、ＳＡＮ１０６上のエンティティの所定のセットを除くすべてのエンティティによる無権限または不慮のアクセスから持続性メモリを保護しなければならない。
さらに、図４に示すように、ｎＰＭＵが仮想アドレスから物理アドレスへの変換をサポートすることが可能である。
例えば、持続性メモリ（ＰＭ）仮想アドレス４０２〜４１６のような連続的な仮想アドレス空間が、不連続な持続性メモリ物理アドレス４１８〜４４８にマッピングすなわち変換されてもよい。
ＰＭ仮想アドレスは、ベースアドレス相対でＮだけ大きいアドレスまで参照される。
しかし、このようなＰＭ仮想アドレスは、隣接しないＰＭ物理アドレスに対応する。
図示のように、ＰＭ仮想アドレス４０２は実際にはＰＭ物理アドレス４３６に対応することが可能である。
よって、ｎＰＭＵはＰＭ仮想アドレス空間からＰＭ物理アドレス空間へ、およびその逆への適当な変換を提供することができなければならない。
こうして、変換メカニズムは、ｎＰＭＵが隣接する仮想アドレス範囲をプロセッサノードに提示することを可能にする一方で、依然としてｎＰＭＵの物理メモリの動的管理を可能にする。
これは、ｎＰＭＵ上のデータの持続性のゆえに特に重要である。
構成の変更により、特定のｎＰＭＵにアクセスするプロセスの個数、またはことによるとそれらのそれぞれの割当てのサイズが、時間とともに変わるかもしれない。
アドレス変換メカニズムは、ｎＰＭＵがデータの損失なしにこのような変更に容易に対応することを可能にする。
アドレス変換メカニズムはさらに、割当て前に将来のメモリ需要をプロセッサノードに予想させることも、悲観的割当てにより持続性メモリ容量をプロセッサノードに浪費させることもしないことによって、持続性メモリ容量の容易で効率的な使用を可能にする。
【００２５】
再び図１を参照すると、ネイティブのアクセス検証変換／ブロック転送エンジン（ＡＶＴ／ＢＴＥ）モードで動作するＳｅｒｖｅｒＮｅｔ  ＳＡＮは、単一アドレス空間ＳＡＮ１０６の一例である。
このようなＳＡＮ上の各ターゲットは、同一のフラットなネットワーク仮想アドレス空間を、プロセッサノード１０２のようなそのすべてのＲＤＭＡ要求イニシエータに提示する。
ネットワーク仮想アドレス範囲は、ターゲットによってＰＭ仮想アドレスからＰＭ物理アドレス範囲へページ粒度でマッピングされる。
ネットワークＰＭ仮想アドレス範囲は、単一イニシエータ（例えばプロセッサノード１０２）に排他的に割り当てられてもよく、複数のＰＭ仮想アドレスが同一物理ページを指してもよい。
【００２６】
プロセッサノード１０２がＰＭＭに対してｎＰＭＵ内の持続性メモリのある領域をオープンする（すなわち、割り当ててから使用を開始する）ように要求する時、そのｎＰＭＵのＮＩ１０８は、プロセッサノード１０２が適当な領域にアクセスことを可能にするようにＰＭＭによってプログラムされる。
このプログラミングは、ネットワーク仮想アドレスのあるブロックを割り当て、それらのアドレスを物理メモリ内の物理ページのセットにマッピング（すなわち変換）する。
その場合、ＰＭ仮想アドレスの範囲は、ＰＭ物理アドレスのいくつのページがアクセスされるかにかかわらず隣接していることが可能である。
しかし、物理ページはＰＭ物理メモリ内のどこにあってもよい。
変換のセットアップが成功すると、ＰＭＭは要求側のプロセッサノード１０２に隣接ブロックのＰＭ仮想アドレスを通知する。
オープン後、プロセッサノード１０２は、ＲＤＭＡリードまたはライト動作をｎＰＭＵへ発行することによってｎＰＭＵメモリページにアクセスすることができる。
【００２７】
次に図５を参照して、単一仮想アドレス空間との関連でｎＰＭＵ５２０の動作について説明する。
ＰＭ物理アドレス空間５６２へ変換される単一のＰＭ仮想アドレス空間５６０が示されている。
持続性メモリのある範囲がオープンされると、ＣＰＵ０（５５０）は、ＮＩ５５２およびＮＩ５５８の動作と協働して持続性メモリの当該範囲にアクセスすることができる。
ＰＭＭは、ＣＰＵに対して仮想アドレスのある範囲を利用可能にすることによって、持続性メモリのある範囲をオープンする。
ＰＭ仮想アドレス空間のオープンされた範囲へのアクセスを要求する際に、ＣＰＵ０（５５０）はＮＩ５５２を通じてＮＩ５５８にコマンド（例えばリードまたはライト）を渡す。
正常な動作において、ＣＰＵ０（５５０）は、ＰＭ仮想アドレスの指定された範囲にのみアクセスすることができる。
よって、そのＰＭＭ構成の機能の一部として、ＮＩ５５８はまず、ＣＰＵ０（５５０）の能力を検証して、要求されたＰＭ仮想アドレス５６０の目標を定める。
ＣＰＵ０（５５０）の許容範囲内にある場合、ＮＩ５５８は必要なアドレス変換を実行し、最終的に、ＰＭ物理アドレス５６２に対する要求された動作（例えばリードまたはライト）を切り出す。
【００２８】
図６に示すように、ｎＰＭＵ６２０は、複数のアドレスコンテキスト（空間）６７０および６７２を、それらのそれぞれのＰＭ仮想アドレス空間とともに収容することも可能であり、それぞれの空間を独立にＰＭ物理アドレス空間６７４に変換する。
複数のアドレス空間を実装するＳＡＮは、ＶＩアーキテクチャ（ＶＩＡ）ＳＡＮを含む。
このＳＡＮとしては、ＩｎｆｉｎｉｂａｎｄだけでなくＧｉｇａＮｅｔおよびＳｅｒｖｅｒＮｅｔ  ＩＩ（ＶＩＡモードの）がある。
図６のｎＰＭＵ６２０と図５のｎＰＭＵ５２０の間には類似点がある。
しかし、ｎＰＭＵ６２０では、ＰＭＭはまず、複数のアドレスコンテキスト６７０および６７２を認識してから、仮想アドレスコンテキスト６７０および６７２を適当なＰＭ物理アドレス６７４に変換する必要がある。
【００２９】
本実施形態では、ＮＩ６６８はＰＭ仮想メモリ、また同様にＰＭ物理メモリへのカーネルモードアクセスとともにユーザモードアクセスのために設計される。
よって、ＮＩ６６８は、プロセス相当の仮想アドレスを提供する。
こうして、多くの独立のネットワーク仮想アドレス空間が利用可能となる。
２つのアドレスコンテキストのみが図示されているが、さらに多数でも可能である。
実際、本教示がインターネットアプリケーションに適用可能な範囲で、何千ものアドレスコンテキストが可能である。
特定のアドレス空間を指定するため、ＲＤＭＡコマンド（例えばリードまたはライト）が、所望の仮想アドレスとともにコンテキスト識別子を指定する。
したがって、ＮＩ６６８は、種々のプロセッサノード（例えばＣＰＵ０（６６０）およびＣＰＵ１（６６４））に対応して同じコンテキスト識別子を共有することができる。
さらに、異なるコンテキストからの別個の仮想ページが同じ物理メモリページに変換されることが可能である。
【００３０】
前と同様に、ノードが持続性メモリのある領域をアクセスのためにオープンする時、ＮＩ６６８がそのＰＭＭによってプログラムされる。
また、ＮＩ６６８は、要求側プロセッサノードが要求された仮想アドレスへのアクセス権を有することを確認する。
しかしここで、プログラミングは、ＮＩ６６８にコンテキストを作成する。
コンテキストは、物理ページのセットに変換されるネットワーク仮想アドレスのブロックを含む。
例えば、コンテキスト０（６７０）のＰＭ仮想アドレス６０２はＰＭ物理アドレス６１２に変換され、コンテキスト１（６７２）のＰＭ仮想アドレス６０６はＰＭ物理アドレス６１０に変換される。
一実施形態では、ＰＭ仮想アドレスは、割り当てられたＰＭ物理ページの個数にかかわらず隣接している。
しかし、物理ページはＰＭ物理メモリ内のどこに配置されてもよい。
【００３１】
ここで、例えば図１に示したような本手法のさらなる機能を理解することができる。
例えば、プロセッサノード１０２が、メモリ領域をオープンするためにＰＭＭと通信した後、再びＰＭＭを経由せずにｎＰＭＵ１１０のメモリに直接アクセスすることができる。
例えば、リモートリードコマンドが、コンテキスト識別子とともに（複数のアドレス空間の場合）、開始ネットワーク仮想アドレスおよびオフセットを提供する。
正しい動作のためには、このアドレス範囲は、ＰＭＭによって割り当てられた範囲内になければならない。
プロセッサノード１０２は、ノード１０２におけるローカル物理メモリ位置へのポインタを含むリモートリードコマンドをＮＩ１０４に提供する。
次に、要求側プロセッサノード１０２内のＮＩ１０４は、ＳＡＮ１０６経由でｎＰＭＵ１１０のＮＩ１０８へそのリモートリードコマンドを送信する。
ＮＩ１０８は、開始ネットワーク仮想アドレスをｎＰＭＵ１１０内の物理アドレスへ、その領域に関連する変換テーブルを用いて変換する。
次に、ｎＰＭＵ１１０は、ＮＩ１０８を用いて、変換された物理アドレスから始まるデータを読み出し側プロセッサノードに返す。
ＮＩ１０８は、ｎＰＭＵ１１０がページ境界に到達した場合であってもアドレス変換を続ける。
というのは、隣接するＰＭ仮想アドレスの物理ページは必ずしも隣接するＰＭ物理アドレスに変換されるわけではないからである。
リードコマンドが完了すると、ＮＩ１０４はリード転送を完了したものとしてマークする。
さらに、待機中のプロセスがあればそれに通知し、同様に処理することができる。
【００３２】
持続性メモリへのリモートライトも同様である。
プロセッサノード１０２が、ｎＰＭＵ１１０に対して、コンテキスト識別子とともに（複数のアドレス空間の場合）、開始ＰＭネットワーク仮想アドレスおよびオフセットを提供する。
前と同様に、ＰＭネットワーク仮想アドレス範囲は割り当てられた範囲内に入らなければならない。
プロセッサノード１０２は、送信されるべきデータの物理アドレスへのポインタも提供する。
次に、プロセッサノード１０２内のＮＩ１０４が、ｎＰＭＵ１１０内のＮＩ１０８へリモートライトコマンドを発行し、データの送信を開始する。
ＮＩ１０８は、開始アドレスをｎＰＭＵ１１０内の物理アドレスへ、その領域に関連する変換テーブルを用いて変換する。
また、ｎＰＭＵ１１０は、変換された物理アドレスから開始してデータを格納する。
ＮＩ１０８は、ｎＰＭＵ１１０がページ境界に到達した場合であってもアドレス変換を続ける。
というのは、隣接するＰＭネットワーク仮想アドレスの物理ページは必ずしも隣接するＰＭ物理アドレスに変換されるわけではないからである。
ライトコマンドが完了すると、ＮＩ１０４はライト転送を完了したものとしてマークする。
待機中のプロセスがあればそれに通知し、同様に処理することができる。
【００３３】
留意されるべきであるが、本教示によるｎＰＭＵのレイテンシ試験では、メモリアクセスが優に８０マイクロ秒以内に達成可能であることがわかった。
これは、８００マイクロ秒超を必要とするＩ／Ｏ動作に比べてはるかに優れている。
実際、この結果が可能であるのは、Ｉ／Ｏ動作のレイテンシが、それに必要な割込みを含めて回避されているからである。
したがって、本教示によるｎＰＭＵは、ストレージの持続性と、システムメモリの微細粒度アクセスを兼ね備えている。
【００３４】
ディスク読み書きを加速するアプリケーションを含めて、ｎＰＭＵのための種々のアプリケーションが存在する。
また、ｎＰＭＵは電源やプロセッサの障害からの回復も容易にすることができる。
リード動作とライト動作の間の固有の相違のゆえに、ｎＰＭＵはリード動作においてよりもライト動作において、より顕著な改善を提供する。
というのは、ｎＰＭＵは、はるかに高速なバス上のシステムＲＡＭよりも、ネットワーク越しにより低速で小さいメモリを使用するからである。
頻繁に読み出されるデータ構造は、たとえコピーがｎＰＭＵに存在しても、システムＲＡＭにキャッシュされるかもしれないが故に、あまり頻繁に使用されないデータ構造はｎＰＭＵに適している。
【００３５】
例えば、トランザクションごとに保持されるデータベースロックは、ｎＰＭＵに格納するのに適している。
トランザクションによりｎＰＭＵに保持される更新されたロックを追跡することによって、予定外の停電（およびおそらくは予定されたトランザクションマネージャのシャットダウン）からの回復を加速することができる。
さらに、ｎＰＭＵは、障害を越えて持続する新しいロックタイプの出現を容易にすることにより、クラッシュ時に進行中のトランザクションにより不整合状態のままに残されたデータベース資源を保護することができる。
【００３６】
物理リドゥーキャッシュもまた、ｎＰＭＵ実施態様に適している。
汚染された（すなわち部分的に処理された）が最後から２番目の制御ポイントの前でフラッシュされていないデータベースブロックのキャッシュを維持することは、ファジーチェックポインティングを用いたボリューム回復中の物理リドゥーを加速する。
一実施態様では、このようなキャッシュは、各制御ポイントに進むごとに除去される。
回復中に、オーディットトレイル内のリドゥーレコードに関連するデータに対して、しばしばランダムに、ディスクボリュームを読み出す代わりに、ｎＰＭＵ内のリドゥーキャッシュを参照することにより、回復をはるかに高速に達成することができる。
これは、データベースキャッシュが大きく、トランザクションは比較的小さいが高いレートで発生する場合に特に重要となり得る。
このような状況では、大量のオーディット情報が引き続く制御ポイント間に蓄積することがあるが、それにもかかわらず、回復促進のためにそれをｎＰＭＵに格納することが可能である。
【００３７】
ｎＰＭＵは、持続性ログテイルの使用を通じて効率的なデータベースコミットを提供することも可能である。
例えば、データベーストランザクションをコミットする前のフラッシュのための補助オーディットトレイルに対応するディスクライト動作を待機する代わりに、ｎＰＭＵは、ｎＰＭＵへのライト後、他のフラッシュ動作を待機することを必要としないデータベースコミットを可能にすることができる。
ｎＰＭＵはディスクストレージの１０分の１以下のレイテンシを有し得るため、データベーストランザクションレイテンシを大幅に短縮することができる。
さらに、トランザクションスループットも同様に改善される。
例えば、情報がともかくディスクにコミットされなければならない範囲で、ｎＰＭＵは相当大量の情報を蓄積し、さらにそれをディスクに効率的に書き込むことができる。
【００３８】
データベースキューおよびイベント処理もまた、ｎＰＭＵの使用を通じて改善することができる。
例えば、企業間または企業規模の配備において障害やストールを避けるために、ｎＰＭＵ内のリストデータ構造を使用して、キューおよびイベントを維持することができる。
イベントおよびキューをｎＰＭＵに維持することにより、活発に情報を処理しているＣＰＵが障害に遭遇した場合であっても、スムーズなワークフロー処理および適時のイベント処理が可能となる。
【００３９】
一実施形態では、本手法は図７に示すようなコンピュータシステム７００上で実施される。
図７を参照すると、本教示が実施され得る例示的コンピュータシステム７００（例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等）が示されている。
コンピュータシステム７００は、種々のコンポーネントに通信可能に結合したデータバス７１４を備えて構成される。
図７に示すように、プロセッサ７０２がバス７１４に結合し、情報および命令を処理する。
ＲＡＭ７０４のようなコンピュータ可読揮発性メモリもまたバス７１４に結合し、プロセッサ７０２のための情報および命令を格納する。
さらに、コンピュータ可読読み出し専用メモリ（ＲＯＭ）７０６もまたバス７１４に結合し、プロセッサ７０２のための静的情報および命令を格納する。
磁気または光ディスク媒体のようなデータストレージデバイス７０８もまたバス７１４に結合する。
データストレージデバイス７０８は、大量の情報および命令を格納するために使用される。
英数字キーおよびファンクションキーを含む英数字入力デバイス７１０がバス７１４に結合し、情報およびコマンド選択をプロセッサ７０２に通信する。
マウスのようなカーソルコントロールデバイス７１２がバス７１４に結合し、ユーザの入力情報およびコマンド選択を中央プロセッサ７０２に通信する。
入出力通信ポート７１６がバス７１４に結合し、例えばネットワーク、他のコンピュータ、または他のプロセッサと通信する。
ディスプレイ７１８がバス７１４に結合し、情報をコンピュータユーザに対して表示する。
ディスプレイデバイス７１８は、ユーザにより認識可能なグラフィック画像および英数字を生成するのに好適な液晶デバイス、ブラウン管や他のディスプレイデバイスでよい。
英数字入力７１０およびカーソルコントロールデバイス７１２により、コンピュータユーザは、ディスプレイ７１８上の可視シンボル（ポインタ）の２次元的移動を動的に通知することができる。
【００４０】
種々の実施形態および利点について説明したが、認識されるように、多数の変形が容易に明らかとなるであろう。
例えば、持続性メモリを実施する際に、多くの技術が利用可能である。
したがって、本手法は、本明細書の開示および添付の特許請求の範囲に整合する範囲で広く適用され得る。
【図面の簡単な説明】
【００４１】
【図１】ネットワークアタッチド持続性メモリユニット（ｎＰＭＵ）を含むシステムのブロック図である。
【図２】ネットワークアタッチド持続性メモリユニット（ｎＰＭＵ）の一実施形態のブロック図である。
【図３】バッテリバックアップを用いたネットワークアタッチド持続性メモリユニット（ｎＰＭＵ）の一実施形態のブロック図である。
【図４】持続性メモリ仮想アドレス空間から持続性メモリ物理アドレス空間へのマッピングを説明するブロック図である。
【図５】１つの持続性メモリ仮想アドレス空間を有するネットワークアタッチド持続性メモリユニット（ｎＰＭＵ）の一実施形態のブロック図である。
【図６】複数の持続性メモリ仮想アドレス空間を有するネットワークアタッチド持続性メモリユニット（ｎＰＭＵ）の一実施形態のブロック図である。
【図７】ネットワークアタッチド持続性メモリユニット（ｎＰＭＵ）が実施される例示的コンピュータシステムのブロック図である。
【符号の説明】
【００４２】
１００・・・ネットワークアタッチド持続性メモリを用いたシステム、
１０２・・・プロセッサノード、
１０４・・・ネットワークインタフェース（ＮＩ）、
１０６・・・ＲＤＭＡ対応システムエリアネットワーク（ＳＡＮ）、
１０８・・・ネットワークインタフェース（ＮＩ）、
１１０・・・メモリユニット（ｎＰＭＵ）、
２００・・・ｎＰＭＵ、
２０４・・・ＮＩ、
３０２・・・揮発性メモリ、
３０４・・・バッテリ、
３０６・・・ＣＰＵ、
３０８・・・ＮＩ、
３１０・・・不揮発性２次ストア、
４０２〜４１６・・・持続性メモリ（ＰＭ）仮想アドレス、
４１８〜４４８・・・持続性メモリ物理アドレス、
５２０・・・ｎＰＭＵ、
５５０・・・ＣＰＵ（０）、
５５２，５５８・・・ＮＩ
５６２・・・ＰＭ物理アドレス空間、
５６０・・・ＰＭ仮想アドレス空間、
６０２・・・ＰＭ仮想アドレス、
６１２・・・ＰＭ物理アドレス、
６２０・・・ｎＰＭＵ、
６７０・・・アドレスコンテキスト（空間）、
７００・・・コンピュータシステム、
７０２・・・プロセッサ、
７０４・・・ＲＡＭ、
７０６・・・コンピュータ可読読み出し専用メモリ（ＲＯＭ）、
７０８・・・データストレージデバイス、
７１０・・・英数字入力デバイス、
７１２・・・カーソルコントロールデバイス、
７１４・・・バス、
７１６・・・入出力通信ポート、
７１８・・・ディスプレイ、
【図１】
2004227568.tif 000003
【図２】
2004227568.tif 000004
【図３】
2004227568.tif 000005
【図４】
2004227568.tif 000006
【図５】
2004227568.tif 000007
【図６】
2004227568.tif 000008
【図７】
2004227568.tif 000009