JP2005276208A - 通信リンク接続の永久メモリシステム - Google Patents

通信リンク接続の永久メモリシステム Download PDF

Info

Publication number
JP2005276208A
JP2005276208A JP2005081015A JP2005081015A JP2005276208A JP 2005276208 A JP2005276208 A JP 2005276208A JP 2005081015 A JP2005081015 A JP 2005081015A JP 2005081015 A JP2005081015 A JP 2005081015A JP 2005276208 A JP2005276208 A JP 2005276208A
Authority
JP
Japan
Prior art keywords
npmu
region
permanent memory
mirror
primary
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.)
Withdrawn
Application number
JP2005081015A
Other languages
English (en)
Inventor
Fineberg Samuel
サミュエル・ファインバーグ
Pankaj Mehra
パンカジ・メラ
Roger Hansen
ロジャー・ハンセン
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2005276208A publication Critical patent/JP2005276208A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01DSEPARATION
    • B01D25/00Filters formed by clamping together several filtering elements or parts of such elements
    • B01D25/12Filter presses, i.e. of the plate or plate and frame type
    • B01D25/21Plate and frame presses
    • B01D25/215Construction of the filter plates, frames
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01DSEPARATION
    • B01D25/00Filters formed by clamping together several filtering elements or parts of such elements
    • B01D25/30Feeding devices ; Discharge devices
    • B01D25/305Feeding devices ; Discharge devices for discharging filtrate
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F1/00Treatment of water, waste water, or sewage
    • C02F1/28Treatment of water, waste water, or sewage by sorption
    • C02F1/281Treatment of water, waste water, or sewage by sorption using inorganic sorbents
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F1/00Treatment of water, waste water, or sewage
    • C02F1/28Treatment of water, waste water, or sewage by sorption
    • C02F1/285Treatment of water, waste water, or sewage by sorption using synthetic organic sorbents
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F1/00Treatment of water, waste water, or sewage
    • C02F1/58Treatment of water, waste water, or sewage by removing specified dissolved compounds
    • C02F1/62Heavy metal compounds
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F1/00Treatment of water, waste water, or sewage
    • C02F1/68Treatment of water, waste water, or sewage by addition of specified substances, e.g. trace elements, for ameliorating potable water
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F11/00Treatment of sludge; Devices therefor
    • C02F11/12Treatment of sludge; Devices therefor by de-watering, drying or thickening
    • C02F11/121Treatment of sludge; Devices therefor by de-watering, drying or thickening by mechanical de-watering
    • C02F11/122Treatment of sludge; Devices therefor by de-watering, drying or thickening by mechanical de-watering using filter presses

Landscapes

  • Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Hydrology & Water Resources (AREA)
  • Environmental & Geological Engineering (AREA)
  • Water Supply & Treatment (AREA)
  • Organic Chemistry (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Medicinal Chemistry (AREA)
  • Health & Medical Sciences (AREA)
  • Inorganic Chemistry (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】 永久メモリを使用して、改良されたコンピュータシステムを提供する。
【解決手段】 通信システムを介して少なくとも1つのクライアントプロセッサノードに通信可能に結合された一次ネットワーク永久メモリユニット(nPMU)の予め規定された部分に対応する一次領域であって、クライアントノード上で実行中のクライアントプロセスに割り当てられ、クライアントプロセスから受け取った情報を記憶するように構成される一次領域、および通信システムを介してクライアントプロセッサノードに通信可能に結合されたミラーnPMUの予め規定された部分に対応するミラー領域であって、クライアントプロセスに割り当てられ、クライアントプロセスから受け取った情報を記憶するように構成されるミラー領域を備える。
【選択図】図1

Description

本発明は、通信リンク接続の永久メモリシステムに関する。
従来、コンピュータはそれぞれのデータをメモリあるいは磁気テープや磁気ディスク等の他の入出力(I/O)記憶装置に記憶している。
I/O記憶装置は、PCI(元々の名称は周辺機器相互接続)等のI/Oバスを通して、またはファイバチャネル、インフィニバンド、サーバネットやイーサネット(登録商標)等のネットワークを通してシステムに接続することができる。
I/O記憶装置は通常遅く、アクセス時間は1ミリ秒を超える。
I/O記憶装置は、小型コンピュータシステムインタフェース(SCSI)プロトコルや伝送制御プロトコル/インターネットプロトコル(TCP/IP)等の特別なI/Oプロトコルを利用し、通常、ブロック交換装置として動作する(たとえば、データは固定サイズのデータブロックで読み書きされる)。
こういったタイプのI/O記憶装置の特徴は、電源を失う、または再開される場合に、それまで記憶されていた情報を保持するような永久性にある。
さらに、ネットワーク化されたI/O記憶装置には、いくつかのプロセッサが故障した後であっても、共有I/Oネットワークを通して複数のプロセッサからアクセスすることが可能である。
システムメモリは一般に、システムバスを通してプロセッサに接続され、このようなメモリは比較的高速であり、10ナノ秒単位で測定されるアクセス時間が保証される。
さらに、システムメモリには、バイトレベルの粒度で直接アクセスすることができる。
しかし、システムメモリは通常揮発性であり、したがって、電源が失われた場合、またはこのようなメモリを採用したシステムが再開される場合に内容が失われる。
また、システムメモリは通常、プロセッサと同じフォールトドメイン内にあり、したがって、プロセッサが故障した場合、接続されたメモリもまた故障し、それ以降アクセスすることはできなくなる場合がある。
したがって、I/O記憶装置の永久性および耐久性を、システムメモリの速度およびバイト粒度アクセスとともに提供する、こういった技術に対する代替物を有することが望ましい。
さらに、リモートダイレクトメモリアクセス(RDMA)可能なネットワークを有して、複数のプロセッサで動作中の複数のクライアントプロセスがメモリを共有することができ、したがってネットワーク化されたRDMAメモリの耐故障性を提供することが望ましい。
従来技術によるシステムは、バッテリバックダイナミックランダムアクセスメモリ(BBDRAM)、固体状態ディスク、およびネットワーク接続揮発性メモリを使用してきた。
たとえば、従来の直接接続BBDRAMは、真の永久(persistent;持続)メモリに勝るいくつかのパフォーマンスの利点を有することができる。
しかし、直接接続BBDRAMはグローバルにアクセス可能ではないため、接続されたCPUと同じフォールトドメイン内にある。
したがって、直接接続BBDRAMは、CPU故障時、またはオペレーティングシステムクラッシュ時にアクセス不能になる。
したがって、直接接続BBDRAMは多くの場合、すべてのシステムメモリが永久的であり、したがって電源故障または再起動後にシステムを素早く再開することができる状況において使用される。
BBDRAMは依然として、長時間停電中、バッテリが空になる前に、内容の記憶に代替の手段を提供しなければならないような揮発性のものである。
BBDRAMのRDMA接続は存在が知られていない。
重要なことに、この直接接続BBDRAMの使用は非常に制限的であり、たとえば、ネットワーク接続永久メモリ用途での使用に適さない。
バッテリバック固体状態ディスク(BBSSD)が他の実施態様に提案されてきた。
こういったBBSSDは永久メモリを提供するが、機能的にディスクドライブをエミュレートする。
この手法の重大な欠点は、I/Oアダプタを通してのこれら装置へのアクセスに関連する待ち時間の追加である。
この待ち時間は、ディスク、ひいてはBBSSDに使用されるブロック指向・ファイル指向ストレージモデルに固有のものである。
BBSSDは、オペレーティングシステムが迂回しない部分最適なデータパスを通る。
個体状態ディスクを変更していくつかの欠点を解消することは可能であるが、固有の待ち時間は、パフォーマンスがI/Oプロトコルおよびそれぞれに関連する装置ドライバによって制限されるため、なくすことができない。
直接接続BBDRAMのように、長時間期間にわたる停電に対処するために、さらなる技術が必要である。
したがって、長期間の停電を通して、あるいはオペレーティングシステムクラッシュを超えて永久的な(不揮発性の)メモリを提供することが望ましい。
さらに、プロセッサ故障に対して堅牢であるように、このようなメモリのすべてまたは一部をリモート(すなわち、故障したプロセッサのフォールトドメイン外)に配置することが望ましい。
必ずしも同時である必要はないが、多くのプロセッサが効率的にアクセスすることができるシステムエリアネットワーク(SAN)を介してこのような永久メモリに対する(リモート)アクセスを提供することがさらに望ましい。
このような永久メモリを使用して、改良されたコンピュータシステムを実施することができる。
ネットワーク永久メモリユニット(nPMU)にアクセスするシステムおよび方法について記載する。
一実施形態は、通信システムを介して少なくとも1つのクライアントプロセッサノードに通信可能に結合された一次ネットワーク永久メモリユニット(nPMU)の予め規定された部分に対応する一次領域であって、クライアントノード上で実行中のクライアントプロセスに割り当てられ、クライアントプロセスから受け取った情報を記憶するように構成される一次領域、および通信システムを介してクライアントプロセッサノードに通信可能に結合されたミラーnPMUの予め規定された部分に対応するミラー領域であって、クライアントプロセスに割り当てられ、クライアントプロセスから受け取った情報を記憶するように構成されるミラー領域を備える。
本発明の多くの態様は添付の図面を参照することでよりよく理解することができる。
図面中の構成要素は必ずしも一定の縮尺ではなく、代わりに本発明の実施形態の原理を明確に示すことに重点が置かれている。
さらに、図面中、同様の参照番号は何枚かの図を通して対応する部分を示す。
本開示には、I/O記憶装置の耐久性および回復性をシステムメモリの速度および細粒度アクセスと組み合わせる永久メモリ装置を記載する。
記憶装置のように、内容は停電またはシステム再開に耐え抜くことができる。
リモートメモリのように、システムエリアネットワーク(SAN)を経由してアクセスされる。
しかし、直接接続メモリと異なり、装置には、アクセス中のプロセッサが故障した後であっても引き続きアクセスすることができる。
リモートダイレクトメモリアクセス(RDMA)は、SANを他のクラスのネットワークから区別する鍵となる性能であり、メモリがリモートに配置される(すなわち、プロセッサに直接接続されない)場合であっても連続使用メモリセマンティクスをサポートする。
したがって、SANもまたRDMA対応ネットワークとして知られている。
SANは特徴的に、バイト粒度での高速ゼロコピーメモリ動作が可能である。
ネットワーク接続永久メモリ装置には、メモリの内容が電源故障だけではなくオペレーティングシステムクラッシュ、他のソフトウェア故障、ハードウェアまたはソフトウェアのアップグレード、およびシステム保守再起動にも耐え抜かなければならない、ディスクのような永久特徴が要求される。
本教示は、揮発性メモリとは非常に異なる設計および実施態様の制約セットを課す永久(すなわち不揮発性)メモリの使用法において独自である。
たとえば、メタデータ(すなわち、メモリの状態についてのデータ)の管理ならびに仮想アドレスから物理アドレスに変換する情報の管理は、2つの場合でかなり異なる。
さらに、本教示は、永久メモリをRDMA対応ネットワークに接続することにおいて独自である。
本明細書にさらに詳細に説明する一実施形態では、システムはネットワーク接続永久メモリユニット(nPMU)を備える。
システムは、読み書き動作等のメモリ動作を開始するプロセッサノードを備える。
プロセッサユニットは、永久メモリアドレス空間に対応する仮想アドレス空間をアドレス動作に関連付ける。
プロセッサノードは、nPMUと通信する際に使用されるネットワークインタフェースをさらに備え、nPMUは各自のネットワークインタフェースを有する。
したがって、プロセッサノードおよび永久メモリユニットは、ネットワーク、好ましくはシステムエリアネットワーク等の通信リンクを介して通信する。
永久メモリユニットは、プロセッサノードに既知の仮想アドレス空間と、nPMUのみに既知の物理アドレス空間との間で変換するようにさらに構成される。
他の実施形態では、複数のアドレス空間が提供され、nPMUはまたこれら複数のアドレス空間から物理アドレス空間への変換も提供する。
他の実施形態では、永久メモリ仮想アドレスから永久メモリ物理アドレスへの変換は、各プロセッサノード内で行われる。
さらに他の実施形態では、この変換はSANに関連するリンク、ポート、スイッチ、ルータ、ブリッジ、ファームウェア、ソフトウェア、またはサービス内で行われる。
本教示は、このような変換に必要なマッピング情報がnPMUに記憶されているデータと一貫して保持され、何らかのエンティティが記憶されているマッピング情報を使用してアドレス変換を効率的に実行することができ、エンティティおよび必要なマッピング情報は、情報をnPMUから回復する必要があるときはいつでも利用可能になるものとのみ仮定する。
さらに他の実施形態では、サーバネット、ギガネット、インフィニバンド、周辺機器相互接続(PCI)エクスプレス、RDMA対応イーサネット、および仮想インタフェースアーキテクチャ(VIA)ネットワーク等、他のタイプのネットワークが使用される。
さらに、磁気ランダムアクセスメモリ(MRAM)、磁気抵抗ランダムアクセスメモリ(MRRAM)、強誘電体ポリマーランダムアクセスメモリ(PFRAM)、OUM(ovonics unified memory)、およびフラッシュメモリ等、様々なタイプの永久メモリが使用される。
本教示には、従来のI/O記憶装置のように永久的であるが、システムメモリのように細かい粒度かつ短い待ち時間でアクセスすることが可能なメモリを記載する。
図1に示すように、ネットワーク接続永久メモリを使用する永久メモリシステム100は、RDMA対応システムエリアネットワーク(SAN)106を通して1つまたは複数のプロセッサノード102によりアクセス可能なネットワーク接続永久メモリユニット(nPMU)110からなる。
nPMU110の永久メモリにアクセスするには、プロセッサノード102で実行中のクライアントプロセス112(実行中のソフトウェア等)が、プロセッサノードのネットワークインタフェース(NI)104を通してリモート読み取りまたは書き込み動作を開始する。
このようにして、読み取りまたは書き込みコマンドは、RDMA対応SAN106でnPMUのネットワークインタフェース(NI)108に運ばれる。
したがって、処理後、しかるべきデータがRDMA対応SAN106を介して通信される。
RDMAデータ移動動作に加えて、nPMU110は、以下説明するように様々な管理コマンドに応答するように構成することができる。
たとえば、プロセッサノード102により開始された書き込み動作では、データは、nPMUに首尾よく記憶された後は、耐久性を有し、停電やプロセッサノード102の故障に耐え抜く。
特に、メモリの内容は、nPMU110が正しく機能し続ける限り、電源が長時間期間にわたって切断された、またはプロセッサノード102上のオペレーティングシステムが再起動した後であっても保持される。
この実施形態では、プロセッサノード102は、少なくとも1つの中央演算処理装置(CPU)およびメモリからなるコンピュータシステムであり、CPUはオペレーティングシステムを実行するように構成される。
プロセッサノード102は、データベース等のアプリケーションソフトウェアを実行するようにさらに構成される。
プロセッサノード102は、SAN106を使用して、他のプロセッサノード102、ならびにnPMU110およびI/Oコントローラ(図示せず)等の装置と通信する。
この実施形態の一実施態様では、RDMA対応SAN106は、プロセッサノード102のCPUに通知することなく、2つのプロセッサノード間またはプロセッサノードと装置の間でのコピー動作等のバイトレベルのメモリ動作を行うことができるネットワークである。
この場合、SAN106は、仮想アドレスから物理アドレスへの変換を行い、連続したネットワーク仮想アドレス空間を不連続の物理アドレス空間にマッピングすることができるように構成される。
このタイプのアドレス変換により、nPMU110の動的管理が可能である。
RDMA性能を備えた市販されているSAN106としては、サーバネット、ギガネット、インフィニバンド、および仮想インタフェースアーキテクチャ準拠SANが挙げられるがこれらに限定されない。
プロセッサノード102は一般に、NI104を通してSAN106に接続されるが、多くの変形形態が可能である。
しかし、より一般には、プロセッサノードを、読み書き動作を通信する装置に接続する必要があるだけである。
たとえば、この実施形態の別の実施態様では、プロセッサノード102はマザーボード上の様々なCPUであり、SANを使用する代わりに、データバス、たとえばPCIバスが使用される。
本教示は、必要に応じてスケールアップまたはダウンしてより大きなまたはより小さな実施態様に適応可能であることに留意する。
ネットワークインタフェース(NI)108がnPMU110に通信可能に結合されて、nPMU110に収容されている永久メモリにアクセスできるようにする。
永久メモリのタイプを含め、多くの技術を図1の様々な構成要素に利用することが可能である。
したがって、図1の実施形態は、永久メモリを実現する特定の技術に限定されるものではない。
実際には、多種多様な磁気ランダムアクセスメモリ(MRAM)、磁気抵抗ランダムアクセスメモリ(MRRAM)、強誘電体ポリマーランダムアクセスメモリ(PFRAM)、OUM(ovonics unified memory)、バッテリバックダイナミックランダムアクセスメモリ(BBDRAM)、およびフラッシュメモリを含む複数のメモリ技術が適している。
バッテリバック固体状態ディスク(BBSSD)はブロックレベル転送を行ってきているが、この手法は、バイトレベルのメモリアクセスを含め、粒度のより細かいメモリアクセスを可能にする。
特に、メモリアクセス粒度は、様々な実施形態を使用してより細かく、またはより粗くすることができる。
SAN106が使用される場合、メモリアクセスはRDMAアクセスをサポートするに十分高速であるべきである。
このようにして、SAN106を介してのRDMA読み書き動作が可能になる。
別のタイプの通信装置が使用される場合、使用されるメモリのアクセス速度もまた、通信装置に適応するに十分高速であるべきである。
永久情報は、使用中の永久メモリがデータを保持することができる程度まで提供されることに留意されたい。
たとえば、一実施形態では、永久メモリは電源が失われる時間量に関わりなくデータを記憶するが、別の実施形態では、永久メモリは数分間または数時間データを記憶する。
この手法と併せて、単一または複数の独立した、間接的にアドレス指定されるメモリ領域を作成するメモリ管理機能が提供される。
さらに、nPMUメタデータが、停電後、またはプロセッサ故障後のメモリ回復のために提供される。
メタ情報は、たとえば、nPMU110内の保護メモリ領域の内容およびレイアウトを含む。
このようにして、nPMU110はデータおよびデータ使用方法を記憶する。
必要なときに、nPMU110により電源またはシステムの故障から回復することができる。
図2に、バス等の通信リンクを介してNI204に通信可能に結合された不揮発性メモリ202を使用するnPMU110の単純な実施形態を示す。
ここで、不揮発性メモリ202は、たとえば、MRAMまたはフラッシュメモリであることができる。
NI204は各自のRDMA要求を開始せず、そうする代わりに、ネットワークからコマンドを受け取り、要求された動作を実行する。
具体的には、nPMU110は、入力要求のアドレスを変換し、次いで要求された動作を実行する。
コマンド処理についてのさらなる詳細を以下考察する。
図3に、バッテリ304を備えた揮発性メモリ302と不揮発性二次記憶装置310の組み合わせを使用するnPMU110の相対的により複雑な実施形態を示す。
この実施形態では、電源が落ちると、揮発性メモリ302内のデータは、各データを不揮発性二次記憶装置310に保存することができるまで、バッテリ304の電源を使用して保存される。
不揮発性二次記憶装置310は、たとえば、磁気ディスクまたは低速フラッシュメモリであることができる。
nPMU110(図1)が適宜動作するには、データの揮発性メモリ302から不揮発性二次メモリ記憶装置310への転送が、外部介入なしで、またはバッテリ304から以外のさらなる電源なしで行われるべきである。
したがって、バッテリ304が上がってしまう前に、要求されたいずれのタスクも完了されるべきである。
図示のように、nPMU110は、埋め込みオペレーティングシステムを実行するオプションのCPU306を備える。
したがって、バックアップタスク(すなわち、揮発性メモリ302から不揮発性二次メモリ記憶装置310へのデータ転送)は、CPU306上で実行されているソフトウェアによって行うことができる。
NI308も、CPU306上で実行されているソフトウェアの制御下でRDMA要求を開始するために備えられる。
ここでもまた、CPU306はネットワークから管理コマンドを受け取り、要求された管理動作を実行する。
nPMU110の実施形態は、資源の割り振りおよび共有をしやすくするために管理されるエンティティである必要がある。
この実施形態では、nPMU管理は永久メモリマネージャ(PMM)によって実行される。
PMMはnPMU内、または先に述べたプロセッサノードの1つ等、nPMU外に配置することができる。
プロセッサノードがnPMUの永久メモリを割り振る、または割り振り解除する必要がある場合、または永久メモリの既存の領域を使用する必要がある場合、プロセッサノードはまずPMMと通信して、要求された管理タスクを行う。
nPMUが耐久性のあるものであり(ディスクのように)、またnPMUは永久データの自己記述本体を保持するため、既存の永久メモリ領域に関連するメタデータはnPMU装置自体に記憶しなければならないことに留意する。
したがって、PMMは、nPMUの記憶データが常にnPMUの記憶メタデータを使用して解釈することができ、それによって発生し得るシステムのシャットダウンまたは故障後に回復できるようにするように、常にnPMU上のメタデータをnPMUに記憶されている永久データと一貫するように保つように管理タスクを行わなければならない。
このようにして、nPMUは、処理中のデータのみならず、このようなデータの処理状態も永久的に保持する。
回復が必要になると、nPMU110を使用する永久メモリシステム100(図1)はこのようにして、電源故障またはオペレーティングシステムクラッシュが発生したメモリ状態から回復し、動作を続けることができる。
図1を参照して述べたように、SAN106は、基本メモリ管理および仮想メモリサポートを提供する。
このような実施態様では、PMMは、リモート読み書き動作を可能にするために、nPMU110のNI108内のロジックをプログラムすることが、同時にnPMU110の永久メモリを、SAN106上の選択されたエンティティセットを除くすべてによる許可を受けていないまたは意図しないアクセスから保護しながら可能でなければならない。
さらに、図4に示すように、nPMUは仮想/物理アドレス変換をサポートすることができる。
たとえば、永久メモリ(PM)仮想アドレス402〜416等の連続した仮想アドレス空間を、不連続な永久メモリ物理アドレス418〜448にマッピングまたは変換することができる。
nPMUネットワーク仮想アドレスは、N増分アドレスを通して基本アドレスを参照する。
しかし、このようなnPMUネットワーク仮想アドレスは不連続なnPMU物理アドレスに対応する。
図示のように、nPMUネットワーク仮想アドレス402は実際には、nPMU物理アドレス436に対応することができる。
したがって、nPMUは、nPMUネットワーク仮想アドレス空間からnPMU物理アドレス空間への適切な変換を提供することができなければならない。
このようにして、変換メカニズムにより、nPMUは、依然としてnPMUの物理メモリの動的管理を可能にしながら、連続した仮想アドレス範囲をプロセッサノードに提示することができる。
これは、nPMU上のデータの永久的な性質により特に重要である。
コンフィギュレーション変更により、特定のnPMUにアクセス中のプロセスの数、またはおそらくそれぞれの割り振りサイズが経時的に変化し得る。
アドレス変換メカニズムは、nPMUがデータを失うことなくこのような変化に容易に適応できるようにする。
アドレス変換メカニズムはさらに、プロセッサノードに強制的に、割り振りに先立って将来のメモリニーズを予期させることなく、またプロセッサノードに強制的に、悲観的割り振りを通して永久メモリの容量を無駄にさせることもなく、永久メモリの容量を容易かつ効率的に使用できるようにする。
再び図1を参照すると、ネイティブアクセス検証および変換/ブロック転送エンジン(AVT/BTE)モードで動作しているサーバネットSANは、単一アドレス空間SAN106の一例である。
このようなSAN上の各ターゲットは、同じフラットなネットワーク仮想アドレス空間を、プロセッサノード102等のRDMA要求イニシエータのすべてに対して提示する。
ネットワーク仮想アドレス範囲は、ページ粒度で、nPMUネットワーク仮想アドレスからnPMU物理アドレス範囲にターゲットによりマッピングされる。
ネットワークnPMUネットワーク仮想アドレス範囲は、排他的に単一のイニシエータ(たとえば、プロセッサノード102)または複数のイニシエータ(たとえば、クライアントの一次プロセスおよびバックアッププロセスを実行中のプロセッサ)に割り振ることができる。
一実施形態はサーバネットのAVTエントリ保護の制約を受ける。
これが可能ではない場合、またはイニシエータが異なるアクセス権を必要とする場合、複数のnPMUネットワーク仮想アドレスは同じ物理ページを指すことができる。
プロセッサノード102で動作中のクライアントプロセス112がPMMにnPMU内の永久メモリ領域を開く(すなわち、使用を開始する)ように要求すると、nPMUのNI108はPMMにより、クライアントプロセス112を実行中のプロセッサノード102が適切な領域にアクセスできるようにするようにプログラムされる。
このプログラミングにより、ネットワーク仮想アドレスブロックが割り振られ、物理メモリ中の物理ページのセットにマッピング(すなわち、変換)される。
そして、nPMUネットワーク仮想アドレスの範囲は、PMの物理メモリ内のどこに存在するかに関わりなく、連続することができる。
変換のセットアップが成功すると、PMMは要求側のプロセッサノード102に、連続ブロックがマッピングされたnPMUネットワーク仮想アドレスを通知する。
開かれると、プロセッサノード102は、RDMA読み取りまたは書き込み動作をnPMUの、マッピングされた範囲内のネットワーク仮想アドレスに発行することによってnPMUメモリページにアクセスすることができる。
プロセッサノード102上のすべてのクライアントプロセスが開かれた領域を使用して完了した場合、マッピングは除去され、nPMUネットワーク仮想アドレスを将来の領域マッピングに再使用することができる。
これは、領域自体がそれ以上使用されないことを意味しないことに留意する。
そうではなく、別のプロセッサ(または、同じプロセッサ)上に存在する1つまたは複数のプロセスにより開かれたままであってもよいが、nPMUネットワーク仮想アドレスのマッピングは異なる。
これより図5を参照して、nPMU110の動作について、単一仮想アドレス空間のコンテキストの中で説明する。
nPMU物理アドレス空間562に変換される単一のnPMUネットワーク仮想アドレス空間560を示す。
或る範囲の永久メモリが開かれると、CPU0 550は、NI552およびNI558の動作と併せてこのような範囲の永久メモリにアクセスすることができる。
PMMは、CPUに或る範囲の仮想アドレスを提供することによって或る範囲の永久メモリを開く。
開かれた範囲のnPMUネットワーク仮想アドレス空間へのアクセスを要求する際に、CPU0 550はNI552を通してコマンド(たとえば、読み取りまたは書き込み)をNI558に渡す。
一実施形態の動作では、CPU0 550のみが、指定された範囲のnPMUネットワーク仮想アドレスにアクセスすることができる。
他の実施形態では、或る範囲のnPMUネットワーク仮想アドレスは、2つ以上のCPUで共有することができ、または1つまたは複数のCPU上のプロセスの部分集合にのみ制限することができる。
したがって、PMM構成機能の一環として、NI558はまず、要求されたnPMUネットワーク仮想アドレス560をターゲットとするCPU0 550の能力を検証する。
CPU0 550の許容範囲内の場合、NI558は必要なアドレス変換を行い、最後に、要求された動作(たとえば、読み取りまたは書き込み)をnPMU物理アドレス562に対して行う。
図6に示すように、nPMU620は、それぞれnPMUネットワーク仮想アドレス空間を有する複数の仮想アドレスコンテキスト(空間)670および672に適応することもでき、各空間を独立してnPMU物理アドレス空間674に変換する。
複数のアドレス空間を実施するSANとしては、VIアーキテクチャ(VIA)SANが挙げられ、そしてVIアーキテクチャSANとしては、ギガネットおよびサーバネットII(VIAモードで)ならびにインフィニバンドが挙げられる。
図6のnPMU620と図5のnPMU110の間には類似性がある。
しかし、nPMU620では、nPMU620、より具体的にはnPMUのNI668はまず、複数の仮想アドレスコンテキスト670と672とを識別し、それから仮想アドレスコンテキスト670および672を適切なnPMU物理アドレス674に変換する必要がある。
この実施形態におけるNI668は、プロセス等価仮想アドレスを提供する。
したがって、NI668は、nPMU仮想メモリ、ひいてはnPMU物理メモリへのユーザモードならびにカーネルモードアクセスに向けて設計される。
多くの独立したネットワーク仮想アドレス空間を、異なるアドレスコンテキストを使用して提供することができる。
2つのアドレスコンテキストしか示さないが、はるかに多くのアドレスコンテキストが可能である。
実際には、これをインターネットアプリケーションにおいて適用することが可能な範囲まで、何千ものアドレスコンテキストが可能である。
特定のアドレス空間を指定するために、RDMAコマンド(たとえば、読み取りまたは書き込み)が、コンテキスト識別子とともに所望の仮想アドレスを指定する。
したがって、NI668は、様々なプロセッサノード(たとえば、CPU0 660およびCPU1 664)に適応して、同じコンテキスト識別子を共有することができる。
さらに、異なるコンテキストからの別個の仮想ページを同じ物理メモリページに変換することができる。
従来通り、クライアントプロセス112(図1)がアクセスのために永久メモリの領域を開くと、NI668は、PMMが要求側プロセッサノードがその領域にアクセスすることができることを検証した後で、PMMによりプログラムされる。
次いで、従来通り、PMMはNI668をプログラムする。
しかし、この場合、プログラミングはここでNI668にコンテキストを作成する。
コンテキストは、物理ページのセットに変換されるネットワーク仮想アドレスブロックを含む。
しかし、図5に概略した場合と異なり、これら仮想アドレスは新しいコンテキスト内でのみ有効であり、これはいずれのネットワーク動作の一環としても識別されなければならない。
たとえば、コンテキスト0 670のnPMUネットワーク仮想アドレス602はnPMU物理アドレス612に変換され、コンテキスト1 672のnPMUネットワーク仮想アドレス606はnPMU物理アドレス610に変換される。
従来通り、nPMUネットワーク仮想アドレスは、割り振られるnPMU物理ページの数に関わりなく連続している。
しかし、物理ページは、nPMU物理メモリ内のどこにでも配置することができる。
たとえば、図1に示す本手法のさらなる機能をここで理解することができる。
たとえば、プロセッサノード102は、PMMと通信してメモリ領域を開くと、再びPMMを経由することなくnPMU110のメモリに直接アクセスすることができる。
たとえば、リモート読み取りコマンドは、より詳細に以下説明するように、開始ネットワーク仮想アドレスおよびオフセット、ならびにコンテキスト識別子(複数のアドレス空間の場合)を提供する。
適宜動作のためには、このアドレス範囲はPMMによって割り振られた範囲内にあるべきである。
プロセッサノード102は、NI104に、ノード102におけるローカル物理メモリロケーションへのポインタを含むリモート読み取りコマンドを提供する。
次いで、要求側プロセッサノード102におけるNI104は、SAN106を介してnPMU110のNI108にリモート読み取りコマンドを送る。
NI108は、領域に関連する変換テーブルエントリを使用して、開始ネットワーク仮想アドレスをnPMU110内の物理アドレスに変換する。
NI108を用いて、次いでnPMU110は、変換された物理アドレスで開始するデータを読み取り中のプロセッサノードに返す。
NI108は、アドレス変換ハードウェアが仮想ページアドレスを連続して見せるため、読み取りがページの境界をまたぐ場合であってもアドレスを変換し続ける。
読み取りコマンドが完了すると、NI104は読み取り転送を完了とマークする。
さらに、待機中のいずれのプロセスにも通知し、順に処理することができる。
より詳細に以下説明する永久メモリへのリモート書き込みも同様である。
プロセッサノード102は、開始PMネットワーク仮想アドレスおよびオフセット、ならびにコンテキスト識別子(複数のアドレス空間の場合)をnPMU110に提供する。
従来通り、PMネットワーク仮想アドレス範囲は、割り当てられた範囲内になければならない。
プロセッサノード102は、送るべきデータの物理アドレスへのポインタも提供する。
次いで、プロセッサノード102内のNI104はリモート書き込みコマンドをnPMU110内のNI108に発行し、データ送信を開始する。
NI108は、領域に関連する変換テーブルエントリを使用して、開始アドレスをnPMU110の物理アドレスに変換する。
また、nPMU110は、変換された物理アドレスで開始するデータを記憶する。
NI108は、アドレス変換ハードウェアが仮想ページを連続して見せるため、書き込みがページの境界をまたぐ場合であってもアドレスを変換し続ける。
書き込みコマンドが完了すると、NI104は書き込み転送を完了とマークする。
次いで、待機中のいずれのプロセスにも通知し、順に処理することができる。
本教示によるnPMUの待ち時間テストでは、メモリアクセスを80マイクロ秒以内で十分に実現することができることがわかり、これは800マイクロ秒以上を必要とするI/O動作と比較して非常に好ましいことに留意されたい。
実際、この結果は、I/O動作の待ち時間が回避されるために可能となる。
したがって、本教示によるnPMUは記憶の永続性を有し、システムメモリの細粒度アクセスを有する。
ディスクの読み書きを加速する用途を含め、nPMUに対して様々な用途が存在する。
また、nPMUは電源またはプロセッサの故障からの回復を容易にすることができる。
読み取り動作と書き込み動作の固有の相違により、nPMUは読み取り動作よりも書き込み動作においてより重要な改良を提供する。
これは、nPMUが、はるかに高速なバスを介するシステムRAMよりもネットワークを経由するより低速かつより小さいメモリを使用するためである。
したがって、頻繁に読み取るべきデータ構造は、nPMUにコピーが存在する場合であってもシステムRAMにキャッシュすることができ、あまり頻繁に使用されないデータ構造がnPMUに適している。
たとえば、トランザクション単位で保持されるデータベースロックは、nPMUに記憶するのに適している。
nPMUにおけるトランザクションにより保持されている、更新されたロックを追跡することにより、予期せぬ故障(および/またはおそらく予期されるトランザクションマネージャシャットダウン)からの回復を迅速化することができる。
さらに、nPMUは故障にまたがって永続的であり、それによってクラッシュ時に進行中のトランザクションにより一貫しない状態のまま残されたデータベース資源を保護する新しいロックタイプの登場を容易にすることができる。
物理再実行キャッシュもnPMUの実施に適している。
ダーティである(すなわち、一部処理済み)であるが、最後から2番目の制御ポイント以前にフラッシュされないデータベースブロックのキャッシュを保持することにより、ファジーチェックポイントを使用するボリューム回復中に物理的な再実行が迅速化する。
一実施態様では、このようなキャッシュは、各制御ポイントが進むにつれて剪定される。
回復中、ディスクボリュームを読み取るのではなく、多くの場合無作為に、監査証跡内の再実行記録に関連するデータに関してnPMU内の再実行キャッシュを調べることにより、回復をはるかに迅速に実現することができる。
これは、データベースキャッシュが大きく、トランザクションが相対的に小さいが高い率で発生する場合に特に重要であり得る。
このようなシナリオでは、大量の監査情報が連続した制御ポイント間に蓄積する場合があるが、これは回復迅速化のためにnPMUに記憶することができる。
nPMUは、永久ログテイル(log tail)の使用を通して効率的なデータベースコミットを提供することもできる。
たとえば、データベーストランザクションをコミットする前に補助監査証跡に対応するディスク書き込み動作がフラッシュするのを待つのではなく、nPMUは、nPMU書き込み時にデータベースコミットが可能であり、他のフラッシュ動作を待つ必要がない。
nPMUはディスク記憶装置の10分の1以下の待ち時間を有することができるため、データベーストランザクション待ち時間を大幅に短縮することができる。
さらに、トランザクションスループットも同様に向上する。
たとえば、それでもなお情報をディスクにコミットしなければならない程度まで、nPMUは大幅に大量の情報を累積し、ひいてはより効率的にその情報をディスクに書き込むことができる。
データベースキューおよびイベント処理も、nPMUの使用を通して改良することができる。
たとえば、キューおよびイベントは、リストデータ構造を使用してnPMUに保持し、企業間または企業規模の配備におけるいずれの故障またはストールも回避することができる。
イベントおよびキューをnPMUに保持することで、アクティブに情報を処理しているCPUが故障に直面した場合であっても、円滑なワークフロー処理およびイベントの適時処理が可能になる。
一実施形態では、本手法は図7に示すコンピュータシステム700において実施される。
図7を参照して、本教示を実施することができる例示的なコンピュータシステム700(たとえば、パーソナルコンピュータ、ワークステーション、メインフレーム等)を示す。
コンピュータシステム700には、様々な構成要素を通信可能に結合するデータバス714が構成される。
図7に示すように、プロセッサ702がバス714に結合され、情報および命令を処理する。
RAM704等のコンピュータ可読揮発性メモリもバス714に結合され、プロセッサ702のために情報および命令を記憶する。
さらに、コンピュータ可読読み取り専用メモリ(ROM)706もバス714に結合され、プロセッサ702のために静的情報および命令を記憶する。
磁気ディスク媒体または光ディスク媒体等のデータ記憶装置708もバス714に結合される。
データ記憶装置708は、大量の情報および命令の記憶に使用される。
英数字キーおよび機能キーを含む英数字入力装置710がバス714に結合され、情報およびコマンド選択をプロセッサ702に通信する。
マウス等のカーソル制御装置712がバス714に結合され、ユーザ入力情報およびコマンド選択を中央プロセッサ702に通信する。
入出力通信ポート716がバス714に結合され、たとえば、ネットワーク、他のコンピュータ、または他のプロセッサと通信する。
ディスプレイ718がバス714に結合され、情報をコンピュータユーザに表示する。
表示装置718は、液晶装置、陰極線管、またはユーザが認識可能なグラフィック画像および英数字文字の作成に適した他の表示装置であることができる。
英数字入力装置710およびカーソル制御装置712は、コンピュータユーザがディスプレイ718上の可視記号(ポインタ)の二次元の動きを動的に通知できるようにする。
図8は、一次ネットワーク接続永久メモリユニット(nPMU)802およびミラーnPMU804の実施形態を備えた例示的な永久メモリシステム100のブロック図である。
一次nPMU802およびミラーnPMU804は、NI806および808それぞれを介してRDMA対応SAN106に通信可能に結合される。
一次nPMU802およびミラーnPMU804は別個の装置である。
したがって、一次nPMU802およびミラーnPMU804は別個のフォールトドメインを有する。
すなわち、共有される物理構成要素がないため、一次nPMU802における故障(フォールト)も、またミラーnPMU804における故障(フォールト)も他方のnPMUに悪影響を及ぼさず、それによって耐故障性があり冗長性のある永久メモリシステムを提供する。
複数のプロセッサノードが、RDMA対応SAN106を介して一次nPMU802および/またはミラーnPMU804と通信する。
したがって、プロセッサノードA 810〜プロセッサノードi 812は、NI814および816それぞれを介してRDMA対応SAN106に通信可能に結合される。
各プロセッサノードは、メモリ1104(図11)に存在するソフトウェアとして実施される永久メモリユニット(PMU)ライブラリ818を備える。
一実施形態では、PMUライブラリ818は、プロセッサノード上で実行中のアプリケーションと一次nPMU802および/またはミラーnPMU804との間をインタフェースするアプリケーションプログラムインタフェース(API)820を備える。
別の実施形態では、API820はスタンドアロンソフトウェアとして存在する。
永久メモリマネージャ(PMM)822は、NI824を介してRDMA対応SAN106に通信可能に結合される。
本明細書において説明するように、PMM822は、プロセッサノードからの、永久メモリを使用するnPMU管理機能要求に応答する。
説明の便宜を図り、PMM822は装置826に存在するものとして示される。
装置826はPMM822の機能をサポートするプロセッサベースの装置であり、より詳細に本明細書において説明する。
他の実施形態では、PMM822は他の都合のよいロケーションに存在する。
たとえば、PMM822は、一次nPMU802またはミラーnPMU804に存在しても、またはプロセッサノードに存在してもよい。
別の実施形態ではPMM822は適した装置のファームウェアとして実施される。
PMM822は、プロセッサノードからの要求に応答して、一次nPMU802およびミラーnPMU804の管理機能を行う。
例示的な管理機能としては、nPMUメモリの部分の作成、削除、および開閉、ならびに一次nPMU802およびミラーnPMU804からの既存領域に割り振られた、またはそこから削除された永久メモリ領域はどれかのリスト等のメタデータ処理動作が挙げられるがこれらに限定されるものではない。
これら機能について以下より詳細に説明する。
柔軟なメモリ管理を可能にするために、PMM822は、プロセッサノードにおいてサポートされる仮想アドレス空間から一次nPMU802およびミラーnPMU804の物理メモリへのマッピングを作成する。
これらマッピングは、nPMU領域906(図9)にアクセス制御を行うためにも使用することができる。
これらマッピングの性質および/またはフォーマットは、プロセッサノードとnPMU802/804の間の相互接続に依存する。
非限定的な例として、RDMAスタイルの相互接続ネットワークの場合、マッピングの作成は、nPMU802/804のNI806/808に変換テーブルを作成することを含み得る。
直接接続メモリのシナリオでは、マッピングの作成はシステムのページテーブルを処理することを含み得る。
図9は、一次nPMU802および/またはミラーnPMU804の一実施形態をさらに詳細に示す実施形態のブロック図である。
nPMUは、他のすべてのシステム構成要素のように、故障することがある。
したがって、nPMUは、一次nPMU802およびミラーnPMU804の対で管理される。
一実施形態では、各PMM822(図8)は単一対のnPMU802/804を受け持つ。
代替の実施形態では、他のnPMU対を管理する他のPMMがあり得る。
さらに別の実施形態では、1つのPMM822が複数のnPMU対を制御することができる。
一次nPMU802およびミラーnPMU804のメモリの一部は、本明細書では、メタデータ902に対応する情報が記憶されるメタデータ領域とも呼ばれるメタデータ902を含む。
メタデータ902は、一次nPMU802および/またはミラーnPMU804に「何が」あるかを記述する。
たとえば、メタデータ902は、割り振られたnPMU領域906を識別する情報、ベースポインタ値情報、および/または各領域の所有者および他の属性の識別を含むが、これらに限定されない。
メタデータ902は一次nPMU802およびミラーnPMU804の両方に保存される。
したがって、一次nPMU802またはミラーnPMU804のいずれかが故障した場合、メタデータ902は保存される。
代替の実施形態では、メタデータ902は別の適した記憶媒体にも存在する。
一次nPMU802およびミラーnPMU804のメモリの別の部分は物理データ904を含む。
より詳細に本明細書において説明するように、PMMはPMクライアントに代わって、物理データ904の領域906を一次nPMU802およびミラーnPMU804の両方に作成する。
便宜上、一次nPMU802に存在する領域906を一次領域と呼び、便宜上、ミラーnPMU804に存在する領域906をミラー領域と呼ぶ。
したがって、「領域906」という語は、本明細書において、一次領域あるいはミラー領域を指すために同義に使用される。
一次nPMU802およびミラーnPMU804はクライアントプロセスによる直接メモリアクセスをサポートするため、データは、領域を開いたクライアントプロセスによりnPMUメモリ領域906に直接書き込むことができる。
さらに、nPMUメモリ領域906に存在するデータも、領域を開いたクライアントプロセスにより直接読み取ることができる。
領域906が作成される、開かれる、または閉じられると、動作は一次nPMU802およびミラーnPMU804の両方における領域906に影響を及ぼし、これを便宜上、本明細書では「ミラーリング」と呼ぶ。
管理コマンドは、PMM822により一次nPMU802およびミラーnPMU804にミラーリングされる。
したがって、PMM822は、一次nPMU802あるいはミラーnPMU804が故障した後に管理情報を回復することができる。
したがって、プロセスは既存の領域906を正しく開くことができる。
図10は、バッテリバックアップを使用する一次および/またはミラーネットワーク接続永久メモリユニット(nPMU)をさらに詳細に示す別の実施形態のブロック図である。
上に述べた揮発性メモリは、メタデータ902、物理データ904、および複数の領域906を含む。
一次nPMU802および/またはミラーnPMU804のこの実施形態の他の構成要素については上述し、図3に示している。
図11は、nPMU802/804(図8〜図10)が実施される例示的なプロセッサノード1100(上述し、図8において示したプロセッサノードA 810〜プロセッサノードi 812に対応する)のブロック図である。
プロセッサノード1100は、プロセッサ1102、メモリ1104、およびNI1106を備える。
プロセッサ1102、メモリ1104、およびNI1106は、バス1108、接続1110を介して通信可能に結合される。
プロセッサノード1100の代替の実施形態では、上述の構成要素は、図11に示す様式とは別の様式で互いに接続的に結合される。
たとえば、上述の構成要素の1つまたは複数はプロセッサ1102に直接結合しても、または介在構成要素(図示せず)を介してプロセッサ1102に結合してもよい。
メモリ1104は、PMUライブラリ818、API820、属性キャッシュ1112、領域ハンドル1114、および少なくとも1つのプロセス1116を含む。
プロセス1116は、本明細書に説明するようにnPMU802/804のメモリを利用するプログラム等であることができる。
他の実施形態では、上述の要素は他の適した記憶媒体に別個に存在することができる。
領域ハンドル1114は、ベースポインタ値1118、領域が一次nPMUにマッピングされた一次ベースネットワーク仮想アドレス1120、領域がミラーnPMUにマッピングされたミラーベースネットワーク仮想アドレス1122、一次nPMUネットワーク識別子(ID)1124、およびミラーnPMUネットワークID1126を含む。
一次nPMU ID1124およびミラーnPMU ID1126は、プロセッサノード1100とnPMU802/804(図8)の間で直接通信するためのネットワークIDに対応する。
領域ハンドル1114はまた、PMM822(図8)が存在する装置826のIDも含むことができる。
領域ハンドル1114(便宜上、本明細書ではパラメータ「region_handle」と呼ぶ)はファイル記述子に類似する。
領域ハンドル1114は、領域906の識別およびアクセスのために(図9)、以下述べる関数内のパラメータとして渡される。
領域ハンドル1114は、実行中のAPI1130が開かれた領域906を指定してアクセスするために必要とするすべての情報(便宜上、まとめてアクセス情報と呼ぶ)を含む、またはアクセス情報を指す。
領域906は複数の属性によって記述することができる。
領域属性は、nPMU802/804の領域906についての情報である。
領域属性の非限定的な例としては、領域サイズを示す情報(便宜上、本明細書ではパラメータ「region_size」と呼ぶ)、作成日等が挙げられる。
領域属性の性質は、永久メモリシステム100の特定および/または独自の要件に依存する。
領域のベースネットワーク仮想アドレスは、nPMU領域が、クライアントプロセスによって開かれたときにマッピングされた、開始ネットワーク仮想アドレスである。
このアドレスは、領域が開かれている場合のみ有効であり、複数のクライアントプロセスが同じネットワークの仮想アドレスマッピングを共有することが可能である。
ネットワーク仮想アドレスからnPMUにおける物理アドレスへのマッピングはPMMによって管理され、クライアントプロセスからの要求に応答してこういったマッピングの作成・抹消を行うのはPMMの担当である。
複数のアドレス空間NICを利用する実施形態では、ベースネットワーク仮想アドレスは、仮想アドレスおよびアドレスコンテキスト識別子(ID)の両方、またはコンテキストハンドルを含み、特定の範囲のnPMUネットワーク仮想アドレスを指定することができる。
複数アドレス空間対応のNICの場合、任意所与のnPMUネットワーク仮想アドレスの多くのインスタンスが存在し得る。
しかし、仮想アドレスは所与のコンテキストIDに対して一意である。
たとえば、仮想インタフェースアーキテクチャベースのシステムのコンテキストIDを「memory handle」と呼ぶ。
インフィニバンドベースのシステムのコンテキストIDは「R_key」と呼ぶ。
ネットワーク上のイニシエータ(すなわち、クライアントプロセッサ内のNI)がnPMU領域に対してデータの読み取りまたは書き込みを行いたい場合、イニシエータは、ネットワーク仮想アドレスを使用して、アクセスしたいロケーションを指定する。
nPMUベースポインタは、ポインタを含むデータ構造を記憶するクライアントプロセス1128を支援する。
領域906は、連続範囲のネットワーク仮想アドレスとしてアクセスされる。
クライアントプロセスがベースnPMUネットワーク仮想アドレス(領域を開く都度、異なり得る)を知る必要がないようにするために、クライアントのポインタ値は、領域が作成されたときに指定された範囲のアドレスに対応するように調整される。
したがって、領域ベースポインタ値1118は、クライアントプロセスがnPMU領域906の最初のバイトにアクセスするために使用するアドレスに対応する値である(便宜上、本明細書ではパラメータ「base_pointer」と呼ぶ)。
次いで、このベースポインタパラメータを使用して、続く読み取りおよび書き込みコマンドにおいて使用するオフセットのベースを設定する。
ベースポインタ値は、実施形態に応じて、領域のベースnPMUネットワーク仮想アドレスに対応しても、またはしなくてもよいことに留意する。
さらに、ベースポインタ値1118は、クライアントプロセスがどのCPUに存在するかに関わりなく、1つの領域を使用するすべてのクライアントプロセスで同じである。
さらに、ベースポインタ値1118は、領域906が作成されたときに指定され、後に変更することはできない。
非ゼロのベースポインタ値を利用して、ポインタを含む領域へのデータの記憶を容易にすることができる。
したがって、ベースポインタ値1118により、クライアントプロセスはnPMU領域データ内のポインタを辿ることができる。
代替の実施形態では、領域906には、ファイルのようなゼロベースのオフセットを使用してアクセスすべき場合、ベースポインタ値1118はゼロに設定される。
プロセッサ1102はプロセス1116を検索し、次いでプロセス1116を実行し、これを便宜上「クライアントプロセス」1128として示す(図1および図8のクライアントプロセス112に対応する)。
プロセッサノード1100のアクティブクライアントプロセスメモリ1132とnPMU802/804(図8)の間のRDMA書き込みまたは読み取りを容易にするために、プロセッサ1102はAPI820を検索し、次いでAPI820を実行し、これを便宜上「実行中API」1130として示す。
したがって、クライアントプロセスが永久メモリシステム100にアクセスしたい場合、実行中API1130は、実行中プロセスによって前に開かれていたnPMU802/804の領域906を識別する領域ハンドル1114を検索し、実行中プロセスが必要とする関数に関連する少なくとも1つの領域関数を検索し、関数に関連する少なくとも1つのパラメータを検索する。
これら関数およびパラメータについてより詳細に以下説明する。
この情報は必要であればフォーマットされ、次いでアクセス要求が永久メモリシステム100に通信される。
複数のクライアントプロセスをプロセッサノード上で同時に実行可能であることが理解される。
複数の実行中クライアントプロセスは、nPMUの同じ領域にアクセス(読み取り/書き込み)することができ、かつ/または同じnPMUおよび/または異なるnPMU内の異なる領域にアクセスすることができる。
クライアントプロセスメモリ1132は、プロセッサ1102内に存在するメモリ媒体であり、かつ/またはランダムアクセスメモリ(RAM)等の接続メモリ媒体ユニットであることができる。
クライアントプロセスメモリ1132は便宜上、実行中クライアントプロセス1128の動作を容易にするためにプロセッサ1102により使用される作業メモリとして示され、いずれの適した作業メモリ媒体であることができることが理解される。
図12は、実行中クライアントプロセス1128(図11)により使用されるクライアントプロセスメモリ1132のメモリバイト1204に存在する、ポインタおよびデータ等の情報のロケーションに対応するクライアントアドレス1202、およびnPMU802/804のメモリバイト1208に存在する、クライアントアドレスに対応する、ポインタおよびデータ等の情報の物理ロケーションに対応する仮想ネットワークアドレス1206の例示的な図である。
上に述べたように、nPMU802/804のメモリバイト1208の物理ロケーションを識別する物理アドレスは、必ずしもネットワーク仮想アドレス1206に対応する必要はない。
また、上に述べた領域906(図9)は、nPMU802/804における複数の物理メモリバイト1208を含むものと理解され、領域に割り振られるメモリバイト1208の数は、より詳細に以下説明するように、領域906が作成されるときに指定されるregion_sizeパラメータによって決まる。
便宜上、アドレス1202および1206は16進法(HEX)で表されるが、いずれの適した記進法も使用することができる。
実行API1130(図11)は、データを整列化する必要なく、nPMU領域906(図9および図10)内のポインタデータの記憶およびアクセスを行うメカニズムを提供する。
実行中クライアントプロセス1128が揮発性メモリベースのデータ構造の1つをnPMU領域906にミラーリングしたく、そのデータ構造が連続したメモリの固定アドレスに記憶されている場合、ベースポインタ値1118をデータ構造の開始アドレスに設定することができる。
次いで、図12に示すように、nPMU802/804に存在するデータ構造内のポインタは、実行中クライアントプロセス1128、および他の任意の許可を受けたクライアントプロセスにより領域を次に開くことの役に立つ。
図12に示すベースポインタ計算は、読み取り/書き込み動詞の内部で実現することも、または複数のメモリコンテキスト(たとえば、VIA、インフィニバンド、または直接メモリバス接続)をサポートするより柔軟な接続メカニズムを使用して実現することもでき、nPMU802/804は単純に、領域のベースアドレスを、ベースポインタの値に一致するようにマッピングすることができる。
一実施形態では、各nPMU対802/804はボリューム(便宜上、本明細書ではパラメータ「pm_volume」と呼ぶ)として識別される。
このパラメータは概ねディスクボリュームに類似する。
nPMUボリュームは、nPMU領域906の名前空間を含む。
一実施形態では、各nPMUボリュームは単一のPMM822によって制御され、永久メモリの単一ユニットとして管理される。
nPMUボリュームへのアクセスは、2つの物理的なnPMU802/804にわたってミラーリングされる。
便宜上、nPMUボリュームはnPMU対802/804にミラーリングされるため、以下列挙する動詞中のpm_volumeパラメータにおいて指定される単一の名前を使用して、単一のPMMによって管理されるnPMUのミラーリング対を識別する。
他の実施形態は、他の適した識別子を採用してnPMU対を識別する。
nPMU領域906は、nPMUボリュームの割り振られた部分(すなわち、永久メモリの割り振られた部分)である。
本明細書では便宜上、特定の領域はパラメータ「region_name」で参照される。
一実施形態では、領域906は、ミラーリング対として一次nPMU802およびミラーnPMU804の両方に作成されるため、同じ領域906がミラーリングの片割れの両方において作成される。
2つの領域は必ずしも、それぞれのnPMU802/804において物理的に連続する必要がなくてよいことが理解される。
しかし、クライアントプロセスは、本明細書に述べたようなネットワーク仮想アドレスの使用を通して、領域906に、あたかも連続しているかのようにアクセスする。
したがって、領域は連続範囲のネットワーク仮想アドレスにマッピングされる。
読み取りまたは書き込みがプロセッサノード1100上のクライアントプロセスとnPMU802/804の間で行われる場合、またはプロセッサノード1100上で実行中のクライアントプロセスが領域906の作成または削除を要求する場合、実行中API1130は、対応する永久メモリの関数を実行させる。
関数はnPMUライブラリ818において規定される。
これら関数についてより詳細に以下説明する。
「create_region」関数は、プロセッサノード1100上のクライアントプロセスによる要求があると開始され、nPMU802/804にメモリの領域906を作成する。
クライアントプロセスが永久メモリの新しい領域を要求する場合、実行中API1130は、領域906(図9)の作成を要求する通信をPMM822(図8)に向けて生成する。
実行中API1130は必要な命令および要求されたパラメータリストをnPMUライブラリ818から得る。
一実施形態では、pm_volumeパラメータ(領域を作成すべきボリュームの名前を指定する)、region_nameパラメータ(永久メモリ領域の名前を指定する)、region_sizeパラメータ(割り振るべき領域のサイズをバイト単位で指定し、最大でnPMUの空き空間までの任意の値であることができる)、およびbase_pointerパラメータ(新しい領域のベースポインタ値を指定する)がPMM822に通信される(便宜上、まとめて領域情報と呼ぶ)。
すなわち、クライアントプロセスは、実行中API1130によって決められた上述の命令および要求されたパラメータリストを含む初期領域作成要求を永久メモリシステム100に通信する。
nPMU領域906を識別する領域名は、1つのnPMUボリューム内で一意でなければならない。
既存の領域名を使用して別のnPMU領域を作成しようとすると、エラーが戻される。
PMM822は、その特定の要求側クライアントプロセスに領域906をセットアップし、base_pointerの値を設定し、新しい領域のメタデータにおける他のしかるべき属性を設定する。
ベースポインタパラメータは、続く読み取りおよび書き込みコマンドにおいて使用されるオフセットのベースポインタ値1118を設定するために使用される。
したがって、実行中API1130は後に、続く関数(書き込み、読み取り、および削除等であるがこれらに限定されない)の戻りパラメータにアクセスすることができる。
領域906のベースポインタは作成時に指定され、後に変更することはできない。
領域906の作成は、PMメタデータ902(図9)における領域のエントリとともに、要求された空間を一次nPMU802およびミラーnPMU804の両方の領域906に割り振る。
領域906が作成されると、領域906に「open_region」関数を使用してアクセスすることができる。
他の実施形態では、作成関数は、永久メモリシステム100上で実行中の或るプロセスが新しい領域を必要とする場合等、必要に応じて開始することができる。
「delete_region」関数は、クライアントによる要求があると開始され、nPMU802/804におけるメモリの領域906に対する任意のクライアントプロセスによるアクセスを永久的に終了させ、対応するnPMU物理メモリを解放する。
一実施形態では、クライアントプロセスが、領域に直接メモリアクセスする必要があるプロセスがないと判断する場合、実行中API1130は、領域906の削除を要求する通信をPMM822(図8)に対して生成する。
実行中API1130は必要な命令および要求されたパラメータリストをnPMUライブラリ818から得る。
一実施形態では、pm_volumeパラメータおよびregion_nameがPMM822に対して通信される。
領域が指定されたボリューム内に存在しない場合、エラーが戻される。
「delete_region」関数は、領域が存在しない場合、領域が別のクライアントプロセスによってまだ開かれている場合、またはクライアントプロセスが許可を受けていない場合、失敗する。
PMM822は、その特定のクライアントプロセスからの要求に応答して、識別された領域906を削除する。
領域906が削除されると、領域906にはもはや、いずれのクライアントプロセスも「open_region」関数を使用してアクセスすることはできない。
「open_region」関数は、クライアントプロセスによる要求があると開始され、nPMU802/804におけるメモリの割り当て領域906を開く。
実行中API1130は、必要な命令および要求されたパラメータリストをnPMUライブラリ818から得る。
一実施形態では、pm_volumeパラメータおよびregion_nameがPMM822に対して通信される。
open_region関数は、既存のメモリ領域しか開くことができない。
領域906が指定されたボリューム内に存在しない場合、エラーが戻される。
PMM822は、領域に対応する物理nPMUページを連続範囲のnPMU仮想アドレスにマッピングすることにより、識別された領域906をその特定のクライアントプロセスに向けて「開く」。
すなわち、クライアントプロセスは、実行中API1130によって決められた上述の命令および要求されたパラメータリストを含む、続くアクセス要求を永久メモリシステム100に通信する。
領域が首尾よく開かれた場合、PMM822はregion_sizeおよびbase_pointer値を戻す。
PMM822はまた、領域の一次およびミラーメモリ領域を含むnPMUのネットワークID、ならびに領域がクライアントプロセスによるアクセスのためにマッピングされたベースネットワーク仮想アドレスおよびメモリコンテキストハンドル(複数のアドレス空間ネットワークの場合)も戻す。
これら戻り値を使用して、APIはregion_handleを構築し、領域ハンドル1114をnPMUライブラリ818(または別の適したメモリロケーション)に保存する。
したがって、同じクライアントプロセスによる領域906への続く直接アクセスは、この領域ハンドル1114を使用して領域906を識別する。
「close_region」関数は、クライアントプロセスによる要求があると開始され、nPMU802/804におけるメモリの領域906を閉じる。
実行中API1130は、必要な命令および要求されるパラメータリストをnPMUライブラリ818から得る。
一実施形態では、region_handleパラメータまたは他の識別情報がPMM822に対して通信される。
close_region関数は、現在開かれている(ひいては存在している)メモリ領域906しか閉じることができない。
領域906が存在しない場合、または指定されたボリューム内で、呼び出し中のクライアントプロセスにより開かれていない場合、エラーが戻される。
領域906を閉じることにより、開かれている領域906に関連するいずれのクライアント資源も解放される。
領域906が閉じられた後、クライアントプロセス1128はもはや領域906にアクセスすることはできず、領域ハンドル1114のパラメータは無効になる。
クローズは、nPMU領域を前もって開いていたプロセスが、nPMU領域を明示的に閉じる前に実行を終了する場合に暗黙的に行われるべきである。
領域906が開かれると、「write_region」関数が、クライアントプロセスによる要求があると開始され、データまたはポインタをnPMU802/804における領域906に書き込む。
実行中API1130は、必要な命令および要求されるパラメータリストをnPMUライブラリ818から得る。
一実施形態では、region_handleパラメータ、bufパラメータ(領域906に書き込むべきデータがクライアントプロセッサのメモリに記憶されているバッファへのポインタを指定する)、lenパラメータ(領域906に書き込むべきバイト数を指定する)、write_pointerパラメータ(データの書き込みを開始する、領域906内のアドレスを指定する)、およびmirrorパラメータ(使用すべきミラーリング方法を指定する)が、API1130に通信される。
領域906は論理的にbase_pointerからbase_pointer+region_sizeの範囲のアドレスを有するregion_sizeのバイトを含む。
したがって、write_region関数は、nPMUライブラリにlenバイトを、bufによってポイントされたローカルクライアントバッファから永久メモリに書き込ませる。
いくつかの実施形態では、この書き込みは、いずれのコピーも介在することなく、クライアントプロセッサのメモリからnPMU802/804に対して直接行われる。
永久メモリの書き込みは、region_handleによって指定された、前もって開かれた領域に対してのものである。
データは、連続範囲の領域アドレスに、write_pointerにより指定されたアドレスから開始して書き込まれる。
領域内のアドレスの範囲はbase_pointerからbase_pointer+region_sizeまでであり、nPMU仮想または物理アドレスに対応しても、またはしなくてもよい。
しかし、領域アドレスが、領域がマッピングされたnPMU仮想アドレスに等しくない場合は、領域アドレスとnPMU仮想アドレスとの間の差を、一定のオフセット(base_pointer)−(network_virtual_address_base)として指定することができる。
したがって、write_pointer値Xを使用して書き込まれるデータは、[(nPMU仮想アドレスX)−(base_pointer)−(network_virtual_address_base)]に書き込まれる。
同様に、read_pointer値Xを使用して読み取られるデータも、より詳細に以下説明するように、[(nPMU仮想アドレスX)−(base_pointer)−(network_virtual_address_base)]から読み取られる。
したがって、図12は、
(ネットワークアドレス)=[読み取り/書き込み(R/W)ポインタ]−(ベースポインタ値)+(nPMUネットワーク仮想アドレス)
であることを示す。
mirrorパラメータは、ミラーリングされたPMボリュームのいずれの片割れ(一次nPMU802またはミラーnPMU804)に書き込むべきかを指定する。
通常の状況下では、mirrorパラメータは常にPM_BOTHであるべきである。
他の値は、回復の際、またはミラーリングが望まれない場合にのみ使用されるべきである。
例示的な有効mirror値は、
PM_BOTH:通常動作に使用され、データは一次領域およびミラー領域の両方に書き込まれる
PM_PRIMARY:データは一次領域にのみ書き込まれる
PM_MIRROR:データはミラー領域にのみ書き込まれる
である。
領域906が開かれると、「read_region」関数が、クライアントプロセスによる要求があると開始され、データまたはポインタをnPMU802/804における領域906から読み取る。
実行中API1130は、必要な命令および要求されるパラメータリストをnPMUライブラリ818から得る。
一実施形態では、region_handleパラメータ、bufパラメータ(領域906から読み取られるデータを配置する、クライアントプロセッサにおけるバッファへのポインタを指定する)、lenパラメータ(領域906から読み取るべきバイト数を指定する)、read_pointerパラメータ(データの読み取りを開始する、領域906内のアドレスを指定する)、およびmirrorパラメータ(使用すべきミラーリング方法を指定する)が、API1130に通信される。
領域906は、base_poinerからbase_pointer+region_sizeまでの範囲のアドレスを有するrgion_sizeのバイトからなる。
したがって、read_region関数は、API1130にlenバイトを、read_pointerのロケーションから開始して永久メモリから、bufによってポイントされたローカルクライアントバッファに読み取らせる。
いくつかの実施形態では、データは、いずれのコピーも介在することなくnPMU802/804の一方からクライアントメモリに直接読み取られる。
領域内のアドレスの範囲はbase_pointerからbase_pointer+region_sizeまでであり、nPMU仮想または物理アドレスに対応しても、またはしなくてもよい。
しかし、領域アドレスが、領域906がマッピングされたnPMU仮想アドレスに等しくない場合は、領域アドレスとnPMU仮想アドレスとの間の差を、一定のオフセットbase_pointer−network_virtual_address_baseとして指定することができる。
したがって、read_pointer値Xを使用して読み取られるデータは実際には、nPMU仮想アドレスX−(base_pointer−network_virtual_address_base)から読み取られる。
mirrorパラメータは、ミラーリングされたPMボリュームのいずれの片割れ(一次nPMU802またはミラーnPMU804)を読み取るべきかを指定する。
通常の状況下では、mirrorパラメータは常にPM_ANYであるべきである。
他の値は、回復の際、またはミラーリングが望まれない場合にのみ使用されるべきである。
例示的な有効mirror値は、
PM_ANY:通常動作に使用され、データは一次領域およびミラー領域のいずれかから読み取られる、
PM_PRIMARY:データは一次領域のみから読み取られる、
PM_MIRROR:データはミラー領域のみから読み取られる
である。
一実施形態では、読み取り要求が、永久メモリシステム100に記憶されている情報を一次nPMU802あるいはミラーnPMU804から検索すべきであると指定する(mirror=PM_ANY)場合、情報が一次nPMU802において利用可能であるか否かが判断される。
情報が一次nPMU802において利用可能でない場合、情報はミラーnPMU804から検索される。
このプロセスは実行中クライアントプロセス1128にトランスペアレントである。
たとえば、一次nPMU804が故障している場合、一次nPMU802メモリ空間の一部が不良またはその他の理由により動作不能である場合、または一次nPMU802へのアクセスを提供する通信リンクが故障している場合がある。
同様に、要求が、永久メモリシステム100に記憶されている情報を一次nPMU802あるいはミラーnPMU804から検索すべきであると指定し(mirror=PM_ANY)、永久メモリシステムが、おそらくパフォーマンスの理由により情報をミラーnPMU804から得たい場合、情報がミラーnPMU804において利用可能であるか否かが判断される。
情報がミラーnPMU804において利用可能でない場合、情報は一次nPMU802から検索される。
一実施形態では、読み取り要求が、永久メモリシステム100に記憶されている情報が一次nPMU802のみから検索されるべきであると指定する(mirror=PM_PRIMARY)場合、情報が一次nPMU802において利用可能であるか否かが判断される。
情報が一次nPMU802において利用可能でない場合、要求は果たされず、エラーが戻される。
同様に、読み取り要求が、永久メモリシステム100に記憶されている情報がミラーnPMU804のみから検索されるべきであると指定する(mirror=PM_MIRROR)場合、情報がミラーnPMU804において利用可能であるか否かが判断される。
情報がミラーnPMU804において利用可能でない場合、要求は果たされず、エラーが戻される。
「list_regions」関数が、pm_volumeにおいて指定されたボリューム内の領域のリスト1134(図11)を取得する。
リスト1134は、文字列変数のユーザ割り振りアレイで戻される。
リスト1134は、満杯になるまで、またはすべての領域が列挙されるまで埋められる。
ボリューム内の実際の領域の数はregion_cntパラメータ(ボリューム内の領域の数を指定する)で戻される。
実行中API1130は必要な命令および要求されるパラメータを、nPMUライブラリ818内のリスト1134から得る。
一実施形態では、pm_volumeパラメータ(内容を調べるべきボリュームの名前を指定する)、region_listパラメータ(ボリューム内の領域のリストのポインタアレイへのポインタを指定する)、およびlist_sizeパラメータ(region_listアレイ内の要素の数を指定する)。
リストサイズは所望の長さであることができる。
ボリューム内の実際の領域の数および/または他の関連情報(便宜上、まとめてリスト情報と呼ぶ)は、region_cntで戻される。
list_sizeがregion_cntよりも大きい場合、region_cntエントリのみがlist_regionsにより埋められる。
list_sizeがregion_cntよりも小さい場合、region_listアレイ全体が埋められる。
一実施形態では、クライアントプロセスは、既存の永久メモリ領域の属性を読み取ることができる。
こういった属性としては、領域サイズ、領域ベースポインタ、作成時間、最後に開かれた時間等のパラメータに対応する指示を挙げることができる。
クライアントプロセスはまず、属性(便宜上、まとめて属性情報と呼ぶ)の「読み取り」を要求しなければならない。
PMM822がメタデータ902(図9)を処理した後で、属性構造のコピーがPMM822から要求側クライアントプロセスに通信される。
次いで、以下説明する属性アクセッサ関数を使用して、実際の属性値にアクセスすることができる。
「読み取り属性」アクセッサ関数は、指定された領域906の属性情報をPMM822から要求し、これを便宜上属性要求と呼ぶ。
実行中API1130は、必要な命令および要求されるパラメータリストをnPMUライブラリ818から得る。
一実施形態では、pm_volumeパラメータ(内容を調べるべきボリュームの名前を指定する)およびregion_nameパラメータ(対象領域の名前を指定する)がPMM822に通信される。
各属性要素毎にクライアントがPMM822と通信する必要がないため、read_attributesは、関数呼び出し時に属性データをキャッシュする。
属性は、read_attributes関数によって戻されるattr_handleパラメータに示されるメモリロケーションの属性キャッシュ1112(図11)に記憶される。
したがって、nPMU802/804の続く属性の変更は、read_attributes関数が再び呼び出されるまで反映されない。
「get attr<datatype>」アクセッサ関数は、attr_handleによってポイントされた属性キャッシュ構造から属性値を読み取る。
これら属性は文字名によって指定され、戻り値はアクセッサ関数に固有のデータ型のものである。
実行中API1130は、必要な命令および要求されるパラメータリストをnPMUライブラリ818から得る。
一実施形態では、attr_handleパラメータ(read_region_attribsが実行されたときに、指定領域のキャッシュされた属性を含む構造へのポインタを指定する)およびオプションのmax_string_lenパラメータがAPI1130に通信される。
max_string_lenパラメータは文字列アクセッサに適用され、attr_valによってポイントされる文字列のサイズである。
文字列属性を読み取る場合、最大でmax_string_len文字が、attr_valによってポイントされるバッファ中にコピーされる。
attr_valのサイズが属性全体の格納に不適である場合、最初のmax_string_len文字はコピーされ、エラーが戻される。
attr_valパラメータ(attr_nameによって指定された属性の値を指定する)が戻される。
このパラメータの型は、どのアクセッサ関数を使用するかによって指定される(すなわち、<data type>)。
クライアントプロセスは属性値に空間を割り振らなければならないことに留意する。
加えて、誤ったアクセッサ関数が特定の属性に呼び出される場合(すなわち、符号なし16ビットアクセッサが64ビット属性に呼び出される場合)、エラーが戻される。
「free region attrs」関数は、attr_handleによってポイントされる属性キャッシュ1112構造に関連するいずれの資源も解放する。
この関数が呼び出された後、attr_handleはもやは有効ではない。
実行中API1130は、必要な命令および要求されるパラメータリストをnPMUライブラリ818から得る。
図13は、永久メモリシステム100の一実施形態により使用される、永久メモリ領域を作成するプロセスを示すフローチャート1300である。
図14は、クライアントプロセスにより使用される(図11)、永久メモリシステム100にアクセスするプロセスを示すフローチャート1400である。
図13および図14のフローチャート1300および1400はそれぞれ、永久メモリシステム100にアクセスするロジックを実施する一実施形態の構造、機能、および動作を示す。
代替の実施形態は、状態機械として構成されたハードウェアを使用してフローチャート1300および1400のロジックを実施する。
この点に関して、各ブロックは、指定の論理関数を実施する1つまたは複数の実行可能命令を含むモジュール、コードのセグメントまたは部分を表すことができる。
いくつかの代替の実施態様では、永久メモリシステム100の機能から逸脱することなく、ブロックに記された機能を図13または図14に記した順序とは別の順序で行うこともでき、または追加の機能を含むことができることにも留意されたい。
たとえば、図13および図14において連続して示す2つのブロックは、さらに以下明確にするように、関わる機能に応じて、実際には略同時に実行してもよく、時によっては逆順で実行されてもよく、またはブロックのいくつかをすべてのインスタンスで実行しなくてもよい。
PM領域を作成するプロセスは図13に示され、ブロック1302において開始する。
ブロック1304において、一次nPMUにおける第1の領域が割り振られ、この第1の領域は一次nPMUにおけるメモリの一部に対応する。
ブロック1306において、ミラーnPMUにおける第2の領域が割り振られ、この第2の領域は、ミラーnPMUにおけるメモリの一部に対応する。
ブロック1308において、第1の領域および第2の領域に対応する情報が求められる。
ブロック1310において、求められた情報は、一次nPMUにおける第1のメタデータ領域に記憶されるとともに、ミラーnPMUにおける第2のメタデータ領域に記憶される。
プロセスはブロック1312において終了する。
図14に示すプロセスはブロック1402において開始する。
ブロック1404において、永久メモリシステムにアクセスするプロセスが実行される。
ブロック1406において、アプリケーションプロセスインタフェース(API)が実行され、このAPIは、クライアントプロセッサノードに割り当てられた一次nPMUにおける第1の領域およびミラーnPMUにおける第2の領域を識別する領域ハンドルを検索し、実行中プロセスにより要求される関数に関連する少なくとも1つの領域関数を検索し、関数に関連する少なくとも1つのパラメータを検索する。
ブロック1408において、領域ハンドル、領域関数、およびパラメータを含むアクセス要求が生成される。
ブロック1410において、アクセス要求は永久メモリシステムに通信される。
プロセスはブロック1412において終了する。
様々な実施形態および利点を説明したが、複数の変形形態が容易に明らかになることが認識される。
たとえば、永久メモリの実施にあたり、多くの技術が利用可能である。
したがって、本手法は、本明細書における開示および添付の特許請求の範囲に一致して広く適用することが可能である。
ネットワーク接続永久メモリユニット(nPMU)を備えたシステムのブロック図である。 ネットワーク接続永久メモリユニット(nPMU)の一実施形態のブロック図である。 バッテリバックアップを使用するネットワーク接続永久メモリユニット(nPMU)の一実施形態のブロック図である。 永久メモリ仮想アドレス空間から永久メモリ物理アドレス空間へのマッピングを示すブロック図である。 1つの永久メモリ仮想アドレス空間を有するネットワーク接続永久メモリユニット(nPMU)の一実施形態のブロック図である。 複数の永久メモリ仮想アドレス空間を有するネットワーク接続永久メモリユニット(nPMU)の一実施形態のブロック図である。 ネットワーク接続永久メモリユニット(nPMU)が実施される例示的なコンピュータシステムのブロック図である。 一次およびミラーネットワーク接続永久メモリユニット(nPMU)を備えた例示的なシステムのブロック図である。 一次および/またはミラーネットワーク接続永久メモリユニット(nPMU)をさらに詳細に示す一実施形態のブロック図である。 バッテリバックアップを使用する一次および/またはミラーネットワーク接続永久メモリユニット(nPMU)をさらに詳細に示す別の実施形態のブロック図である。 ネットワーク接続永久メモリユニット(nPMU)が実施される例示的なプロセッサノードのブロック図である。 ネットワーク接続永久メモリユニット(nPMU)が実施される例示的なプロセッサノードのブロック図である。 永久メモリシステムの一実施形態により使用される、永久メモリ領域を作成するプロセスを示すフローチャートである。 クライアントプロセスにより使用される、永久メモリシステムにアクセスするプロセスを示すフローチャートである。
符号の説明
102・・・プロセッサノード
106・・・RDMA対応SAN
110・・・ネットワーク永久メモリユニット(nPMU)
112・・・クライアントプロセス
202・・・不揮発性メモリ
302・・・揮発性メモリ
304・・・バッテリ
310・・・不揮発性二次記憶装置
702・・・プロセッサ
708・・・データ記憶装置
710・・・英数字入力装置
712・・・カーソル制御装置
716・・・通信ポート
718・・・ディスプレイ
802・・・一次ネットワーク永久メモリユニット(nPMU)
804・・・ミラーネットワーク永久メモリユニット(nPMU)
810、812・・・プロセッサノード
818・・・PMUライブラリ
822・・・永久メモリマネージャ
826・・・装置
902・・・メタデータ
904・・・物理データ
906・・・領域
1100・・・プロセッサノード
1102・・・プロセッサ
1104・・・メモリ
1112・・・属性キャッシュ
1114・・・領域ハンドル
1116・・・プロセス
1118・・・ベースポインタ値
1120・・・一次ベースnPMUネットワーク仮想アドレス
1122・・・ミラーベースnPMUネットワーク仮想アドレス
1124・・・一次nPMUネットワークID
1126・・・ミラーnPMUネットワークID
1128・・・クライアントプロセス
1130・・・実行中API
1132・・・クライアントプロセスメモリ
1134・・・リスト

Claims (10)

  1. 永久(persistent)メモリアクセスシステム(100)であって、
    通信システム(106)を介して少なくとも1つのクライアントプロセッサノード(810)に通信可能に結合された一次ネットワーク永久メモリユニット(nPMU)(802)の予め規定された部分に対応する一次領域であって、前記クライアントプロセッサノード(810)上で実行中のクライアントプロセス(112)に割り当てられ、前記クライアントプロセス(112)から受け取った情報を記憶するように構成される一次領域と、
    前記通信システム(106)を介して前記クライアントプロセッサノード(810)に通信可能に結合されたミラーnPMU(804)の予め規定された部分に対応するミラー領域であって、前記クライアントプロセス(112)に割り当てられ、前記クライアントプロセス(112)から受け取った前記情報を記憶するように構成されるミラー領域と
    を備え、
    前記一次nPMU(802)および前記ミラーnPMU(804)は物理的に別個のユニットであり、別個のフォールトドメインを特徴とする
    永久メモリアクセスシステム。
  2. 前記一次領域は、
    前記情報が前記一次領域に記憶される複数の物理ロケーションに対応する複数の一次仮想アドレス
    を含み、
    前記ミラー領域は、前記情報が前記ミラー領域に記憶される別の複数の物理ロケーションに対応する複数のミラー仮想アドレス
    を含む
    請求項1記載の永久メモリアクセスシステム。
  3. 前記一次nPMU(802)は、前記情報に関連する前記一次仮想アドレスの1つと対応するクライアントアドレスの間で変換を行うように構成され、
    前記ミラーnPMU(804)は、前記情報に関連する前記ミラー仮想アドレスの1つと前記対応するクライアントアドレスの間で変換を行うように構成される
    請求項2記載の永久メモリアクセスシステム。
  4. ベースポインタ(118)
    をさらに備え、
    該ベースポインタ(118)は、前記一次nPMU(802)が変換する前記一次仮想アドレスと前記対応するクライアントアドアレスの差に対応し、
    該ベースポインタ(118)は、前記ミラーnPMU(804)が変換する前記ミラー仮想アドレスと前記対応するクライアントアドレスの差にさらに対応する
    請求項3記載の永久メモリアクセスシステム。
  5. 前記通信システムを介して、前記クライアントプロセッサノード(810)に、通信可能に結合された永久メモリマネージャ(PMM)(822)
    をさらに備え、
    該PMM(822)は、
    前記クライアントプロセス(112)からの永久メモリ割り当て要求に応答し、
    前記一次nPMU(802)に、前記一次領域を作成させ、
    前記ミラーnPMU(804)に、前記ミラー領域を作成させる
    請求項1記載の永久メモリアクセスシステム。
  6. 一次ネットワーク永久メモリユニット(nPMU)(802)およびミラーnPMU(804)における永久メモリに直接アクセスする方法であって、
    前記一次nPMU(802)におけるメモリの一部に対応する、前記一次nPMU(802)における第1の領域を割り振ることと、
    前記ミラーnPMU(804)におけるメモリの一部に対応する、前記ミラーnPMU(804)における第2の領域を割り振ることと、
    前記第1の領域および前記第2の領域に対応する領域情報を求めることと、
    該求められた領域情報をメタデータとして、前記一次nPMU(802)における第1のメタデータ領域(902)および前記ミラーnPMU(804)における第2のメタデータ領域(902)に記憶することと
    を含む永久メモリに直接アクセスする方法。
  7. クライアントプロセス(112)から、前記永久メモリにアクセスする初期要求を受け取ることと、
    前記割り振ることと、前記求めることと、前記記憶すること行う前に、前記第1の領域および前記第2の領域を作成することと
    をさらに含む請求項6記載の永久メモリに直接アクセスする方法。
  8. 前記クライアントプロセス(112)から、前記永久メモリにアクセスする後続要求を受け取ることと、
    前記第1の領域および前記第2の領域を開くことと、
    前記クライアントプロセス(112)から通信される前記永久メモリに対する書き込み要求を受け取ることと、
    前記永久メモリに記憶すべき情報を受け取ることと、
    前記情報を前記第1の領域に記憶することと、
    前記情報を前記第2の領域に記憶することと
    をさらに含む請求項6記載の永久メモリに直接アクセスする方法。
  9. クライアントプロセス(112)から、前記永久メモリにアクセスする後続要求を受け取ることと、
    前記第1の領域および前記第2の領域を開くことと、
    前記クライアントプロセス(112)から通信される前記永久メモリに対する読み取り要求を受け取ることと、
    前記情報が前記第1の領域に記憶されている第1の物理アドレスに対応する少なくとも1つの仮想アドレス、および、前記情報が前記第2の領域に記憶されている第2の物理アドレスに対応する少なくとも1つの仮想アドレスを指定する領域情報に基づいて、前記永久メモリに記憶されている情報を検索することと、
    該永久メモリから検索された情報を前記クライアントプロセスに通信することと
    をさらに含む請求項6記載の永久メモリに直接アクセスする方法。
  10. クライアントプロセッサノード(810)により永久メモリシステム(100)にアクセスするシステムであって、
    前記永久メモリシステム(100)にアクセスするクライアントプロセス(112)を実行する手段とと、
    アプリケーションプロセスインタフェース(API)(820)を実行する手段であって、該API(820)は、前記クライアントプロセッサノード(810)に割り当てられた一次ネットワーク永久メモリユニット(nPMU)(802)における第1の領域およびミラーnPMU(804)における第2の領域を識別する領域ハンドルを検索し、前記実行中のクライアントプロセスにより要求される関数に関連する少なくとも1つの領域関数を検索し、前記関数に関連する少なくとも1つのパラメータを検索する、クライアントプロセスを実行する手段と、
    アクセス要求を前記永久メモリシステム(100)に通信する手段と、
    要求を前記永久メモリシステム(100)に通信する手段と、
    前記一次nPMU(802)における前記第1の領域および前記ミラーnPMU(804)における前記第2の領域に対応する領域名を指定する手段と、
    前記永久メモリシステム(100)における情報を通信する手段であって、該情報のロケーションは、前記指定された領域と、前記第1の領域および前記第2の領域の仮想アドレスに対応するベースポインタ値とに基づいて求められる手段と
    を備える永久メモリシステムにアクセスするシステム。
JP2005081015A 2004-03-24 2005-03-22 通信リンク接続の永久メモリシステム Withdrawn JP2005276208A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/808,138 US20050216552A1 (en) 2004-03-24 2004-03-24 Communication-link-attached persistent memory system

Publications (1)

Publication Number Publication Date
JP2005276208A true JP2005276208A (ja) 2005-10-06

Family

ID=34991436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005081015A Withdrawn JP2005276208A (ja) 2004-03-24 2005-03-22 通信リンク接続の永久メモリシステム

Country Status (4)

Country Link
US (2) US20050216552A1 (ja)
JP (1) JP2005276208A (ja)
KR (1) KR20060044631A (ja)
TW (1) TW200602862A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133663A (ja) * 2005-11-10 2007-05-31 Konica Minolta Opto Inc メモリ制御装置及びメモリ制御方法
JP2016539397A (ja) * 2013-11-27 2016-12-15 インテル・コーポレーション 保守可能な不揮発性メモリモジュールを有効化するサーバプラットフォームアーキテクチャのための方法および装置

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8688800B2 (en) * 2005-10-05 2014-04-01 Hewlett-Packard Development Company, L.P. Remote configuration of persistent memory system ATT tables
US20080005727A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity
US20080005529A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space
US20080005528A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Using a Structured Data Storage System to Provide Access to Addressable Entities in Virtual Address Space
US20080127220A1 (en) * 2006-06-30 2008-05-29 Robert Paul Morris Methods, systems, and computer program products for creating an input-value-specific loadable instance of an application
US20080005752A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for generating application processes by linking applications
US20080005719A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, systems, and computer program products for providing a program execution environment
US20080005728A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US7734890B2 (en) * 2006-10-06 2010-06-08 Okralabs Llc Method and system for using a distributable virtual address space
US8706687B2 (en) * 2007-01-24 2014-04-22 Hewlett-Packard Development Company, L.P. Log driven storage controller with network persistent memory
US20080320282A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US20080320459A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Concurrency Control For Addressable Entities
US9102962B2 (en) * 2007-10-16 2015-08-11 Shiu Nan Chen Production method for solid cultured active mushroom mycelium and fruit-body metabolites (AMFM) products thereof
US8458433B2 (en) * 2007-10-29 2013-06-04 International Business Machines Corporation Management of persistent memory in a multi-node computer system
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US8429739B2 (en) * 2008-03-31 2013-04-23 Amazon Technologies, Inc. Authorizing communications between computing nodes
TW201035760A (en) * 2009-03-18 2010-10-01 Inventec Corp Method for backing up data of a server machine
US10114746B2 (en) * 2010-10-14 2018-10-30 Micron Technology, Inc. Nonvolatile storage using low latency and high latency memory
US9015426B2 (en) * 2011-02-28 2015-04-21 Kove Corporation High performance data storage using observable client-side memory access
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) * 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
CN102404398B (zh) * 2011-11-17 2015-03-25 曙光信息产业(北京)有限公司 一种支持多客户端的rdma消息发送方法
US11221967B2 (en) 2013-03-28 2022-01-11 Hewlett Packard Enterprise Development Lp Split mode addressing a persistent memory
US9727503B2 (en) * 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
CN105204774B (zh) * 2014-06-23 2019-01-15 联想(北京)有限公司 一种数据处理方法及电子设备
US10275171B2 (en) 2014-09-16 2019-04-30 Kove Ip, Llc Paging of external memory
US9626108B2 (en) 2014-09-16 2017-04-18 Kove Ip, Llc Dynamically provisionable and allocatable external memory
CN104252419B (zh) * 2014-09-16 2017-09-19 华为技术有限公司 一种内存分配的方法及装置
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
GB2533578A (en) * 2014-12-22 2016-06-29 Ibm Recovery of local resource
CN104767725A (zh) * 2014-12-31 2015-07-08 中兴仪器(深圳)有限公司 一种网络数据收发装置和方法
US9652344B2 (en) * 2015-06-11 2017-05-16 International Business Machines Corporation In-memory data store replication through remote memory sharing
JP2017027423A (ja) * 2015-07-24 2017-02-02 ソニー株式会社 手術用システム、手術用装置、および手術用方法
US9448901B1 (en) * 2015-12-15 2016-09-20 International Business Machines Corporation Remote direct memory access for high availability nodes using a coherent accelerator processor interface
US10691559B2 (en) * 2016-08-15 2020-06-23 Oracle International Corporation Persistent memory transactions with undo logging
US9794366B1 (en) * 2016-10-19 2017-10-17 Red Hat, Inc. Persistent-memory management
US11086525B2 (en) 2017-08-02 2021-08-10 Kove Ip, Llc Resilient external memory
US11436113B2 (en) * 2018-06-28 2022-09-06 Twitter, Inc. Method and system for maintaining storage device failure tolerance in a composable infrastructure
US11030459B2 (en) 2019-06-27 2021-06-08 Intel Corporation Methods and apparatus for projecting augmented reality enhancements to real objects in response to user gestures detected in a real environment
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11726666B2 (en) 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4590554A (en) * 1982-11-23 1986-05-20 Parallel Computers Systems, Inc. Backup fault tolerant computer system
US5179703A (en) * 1987-11-17 1993-01-12 International Business Machines Corporation Dynamically adaptive environment for computer programs
US5446857A (en) * 1992-06-12 1995-08-29 Unisys Corporation Method and apparatus for writing files on nonerasable storage medium
US5479628A (en) * 1993-10-12 1995-12-26 Wang Laboratories, Inc. Virtual address translation hardware assist circuit and method
JP3504763B2 (ja) * 1994-08-19 2004-03-08 富士通株式会社 分散システムに使用されるクライアント,サーバ及び記憶装置並びに分散システムにおける資源管理用サーバの復旧方法
US6044475A (en) * 1995-06-16 2000-03-28 Lucent Technologies, Inc. Checkpoint and restoration systems for execution control
US6105148A (en) * 1995-06-16 2000-08-15 Lucent Technologies Inc. Persistent state checkpoint and restoration systems
JP3086779B2 (ja) * 1995-06-19 2000-09-11 株式会社東芝 メモリ状態復元装置
US5864657A (en) * 1995-11-29 1999-01-26 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
US5721918A (en) * 1996-02-06 1998-02-24 Telefonaktiebolaget Lm Ericsson Method and system for fast recovery of a primary store database using selective recovery by data type
JP2916420B2 (ja) * 1996-09-04 1999-07-05 株式会社東芝 チェックポイント処理加速装置およびデータ処理方法
US5864849A (en) * 1996-12-16 1999-01-26 Lucent Technologies Inc. System and method for restoring a multiple checkpointed database in view of loss of volatile memory
US6393569B1 (en) * 1996-12-18 2002-05-21 Alexander S. Orenshteyn Secured system for accessing application services from a remote station
US6185702B1 (en) * 1997-01-24 2001-02-06 Kabushiki Kaisha Toshiba Method and system for process state management using checkpoints
US7082553B1 (en) * 1997-08-25 2006-07-25 At&T Corp. Method and system for providing reliability and availability in a distributed component object model (DCOM) object oriented system
US6170063B1 (en) * 1998-03-07 2001-01-02 Hewlett-Packard Company Method for performing atomic, concurrent read and write operations on multiple storage devices
DE19819205A1 (de) 1998-04-29 1999-11-04 Siemens Ag Datenhaltungssystem für persistente Daten
US6351754B1 (en) * 1998-06-23 2002-02-26 Oracle Corporation Method and system for controlling recovery downtime
US6141773A (en) * 1998-06-30 2000-10-31 Emc Corporation Method and apparatus for undoing changes to computer memory
US6266781B1 (en) * 1998-07-20 2001-07-24 Academia Sinica Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network
US6195760B1 (en) * 1998-07-20 2001-02-27 Lucent Technologies Inc Method and apparatus for providing failure detection and recovery with predetermined degree of replication for distributed applications in a network
US6272607B1 (en) 1998-08-28 2001-08-07 International Business Machines Corporation Method and apparatus for transactional writing of data into a persistent memory
US6449623B1 (en) * 1998-09-04 2002-09-10 Lucent Technologies Inc, Method and apparatus for detecting and recovering from data corruption of a database via read logging
US6622263B1 (en) * 1999-06-30 2003-09-16 Jack Justin Stiffler Method and apparatus for achieving system-directed checkpointing without specialized hardware assistance
US6493837B1 (en) 1999-07-16 2002-12-10 Microsoft Corporation Using log buffers to trace an event in a computer system
AU2001259403A1 (en) * 2000-05-02 2001-11-12 Sun Microsystem, Inc. Method and system for providing cluster replicated checkpoint services
WO2001093106A2 (en) * 2000-05-26 2001-12-06 Infolibria, Inc. High performance efficient subsystem for data object storage
US6957237B1 (en) * 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
WO2002008870A2 (en) * 2000-07-26 2002-01-31 David Dickenson Distributive access controller
US6691245B1 (en) * 2000-10-10 2004-02-10 Lsi Logic Corporation Data storage with host-initiated synchronization and fail-over of remote mirror
US7085742B2 (en) * 2000-10-30 2006-08-01 Xybo Systems, Inc. Authenticating software licenses
US6658656B1 (en) * 2000-10-31 2003-12-02 Hewlett-Packard Development Company, L.P. Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions
US6704831B1 (en) * 2000-11-16 2004-03-09 Sun Microsystems, Inc. Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
US20020103819A1 (en) * 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US6766471B2 (en) * 2000-12-28 2004-07-20 International Business Machines Corporation User-level checkpoint and restart for groups of processes
US6847983B2 (en) * 2001-02-28 2005-01-25 Kiran Somalwar Application independent write monitoring method for fast backup and synchronization of open files
US6601148B2 (en) * 2001-03-01 2003-07-29 International Business Machines Corporation Infiniband memory windows management directly in hardware
US6813623B2 (en) 2001-06-15 2004-11-02 International Business Machines Corporation Method and apparatus for chunk based transaction logging with asynchronous input/output for a database management system
US7251747B1 (en) * 2001-09-20 2007-07-31 Ncr Corp. Method and system for transferring data using a volatile data transfer mechanism such as a pipe
US6829685B2 (en) * 2001-11-15 2004-12-07 International Business Machines Corporation Open format storage subsystem apparatus and method
US6883068B2 (en) * 2001-12-17 2005-04-19 Sun Microsystems, Inc. Methods and apparatus for implementing a chche replacement scheme
US7047358B2 (en) * 2001-12-26 2006-05-16 Boon Storage Technologies, Inc. High-performance log-structured RAID
US6910160B2 (en) 2002-01-10 2005-06-21 International Business Machines Corporation System, method, and computer program product for preserving trace data after partition crash in logically partitioned systems
US7251713B1 (en) * 2002-03-18 2007-07-31 Xiotech Corporation System and method to transport data snapshots
AU2003251492A1 (en) * 2002-06-11 2003-12-22 Ashish A. Pandya High performance ip processor for tcp/ip, rdma and ip storage applications
JP3774826B2 (ja) * 2002-07-11 2006-05-17 日本電気株式会社 情報処理装置
FR2843209B1 (fr) * 2002-08-02 2006-01-06 Cimai Technology Procede de replication d'une application logicielle dans une architecture multi-ordinateurs, procede pour realiser une continuite de fonctionnement mettant en oeuvre ce procede de replication, et systeme multi-ordinateurs ainsi equipe.
US20040049580A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
US7299266B2 (en) * 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
US6721806B2 (en) * 2002-09-05 2004-04-13 International Business Machines Corporation Remote direct memory access enabled network interface controller switchover and switchback support
US7386694B1 (en) * 2002-12-17 2008-06-10 Symantec Operating Corporation System and method for reading mirrored data
US20040148360A1 (en) * 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US7266645B2 (en) * 2003-02-18 2007-09-04 Intel Corporation Reducing communication for reads and updates in distributed object systems
US7653796B2 (en) * 2003-02-20 2010-01-26 Panasonic Corporation Information recording medium and region management method for a plurality of recording regions each managed by independent file system
US7624112B2 (en) 2003-04-03 2009-11-24 Oracle International Corporation Asynchronously storing transaction information from memory to a persistent storage
US20040230862A1 (en) * 2003-05-16 2004-11-18 Arif Merchant Redundant data assigment in a data storage system
US7412460B2 (en) * 2003-06-19 2008-08-12 International Business Machines Corporation DBMS backup without suspending updates and corresponding recovery using separately stored log and data files
US7165186B1 (en) * 2003-10-07 2007-01-16 Sun Microsystems, Inc. Selective checkpointing mechanism for application components
US7188273B2 (en) * 2003-11-24 2007-03-06 Tsx Inc. System and method for failover
US7912979B2 (en) * 2003-12-11 2011-03-22 International Business Machines Corporation In-order delivery of plurality of RDMA messages
US20050129039A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation RDMA network interface controller with cut-through implementation for aligned DDP segments
US7206911B2 (en) * 2004-02-25 2007-04-17 International Business Machines Corporation Method, system, and program for a system architecture for an arbitrary number of backup components
US20050203974A1 (en) 2004-03-09 2005-09-15 Smith Gary S. Checkpoint methods and systems utilizing non-disk persistent memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133663A (ja) * 2005-11-10 2007-05-31 Konica Minolta Opto Inc メモリ制御装置及びメモリ制御方法
JP2016539397A (ja) * 2013-11-27 2016-12-15 インテル・コーポレーション 保守可能な不揮発性メモリモジュールを有効化するサーバプラットフォームアーキテクチャのための方法および装置
US10331614B2 (en) 2013-11-27 2019-06-25 Intel Corporation Method and apparatus for server platform architectures that enable serviceable nonvolatile memory modules

Also Published As

Publication number Publication date
KR20060044631A (ko) 2006-05-16
US9405680B2 (en) 2016-08-02
US20050216552A1 (en) 2005-09-29
US20110082992A1 (en) 2011-04-07
TW200602862A (en) 2006-01-16

Similar Documents

Publication Publication Date Title
US9405680B2 (en) Communication-link-attached persistent memory system
US11907200B2 (en) Persistent memory management
US20040148360A1 (en) Communication-link-attached persistent memory device
US7383290B2 (en) Transaction processing systems and methods utilizing non-disk persistent memory
US10817421B2 (en) Persistent data structures
US9767017B2 (en) Memory device with volatile and non-volatile media
US7035881B2 (en) Organization of read-write snapshot copies in a data storage system
US7783850B2 (en) Method and apparatus for master volume access during volume copy
USRE37601E1 (en) Method and system for incremental time zero backup copying of data
US7613889B2 (en) System, method, and program for determining if write data overlaps source data within a data migration scheme
US7085899B2 (en) System and method of an efficient snapshot for shared large storage
JP3641183B2 (ja) Raidデータ記憶システムにおける瞬時バックアップを提供する方法及びシステム
US8429363B2 (en) Multiple incremental virtual copies
US7743209B2 (en) Storage system for virtualizing control memory
KR20160048814A (ko) 지속적 데이터 구조
JP2004127294A (ja) 仮想記憶システムおよびその動作方法
US20100299512A1 (en) Network Boot System
US8140886B2 (en) Apparatus, system, and method for virtual storage access method volume data set recovery
EP1636690B1 (en) Managing a relationship between one target volume and one source volume
JP2004127295A (ja) 仮想記憶システムおよびその動作方法
US20050203974A1 (en) Checkpoint methods and systems utilizing non-disk persistent memory
US7552297B2 (en) Instant copy of data in a cache memory via an atomic command

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20080402