(58)【調査した分野】(Int.Cl.,DB名)
DIMM(Dual In−Line Memory Module)ソケットに装着されたNVDIMM(Non−Volatile Dual In−Line Memory Module)と、
ホストプロセッサ上で動作する装置ドライバと、を有し、
前記NVDIMMは、メモリ及び露出メモリを含み、前記露出メモリは露出メモリの第1サイズ及び前記露出メモリの基本アドレスを含み、
前記装置ドライバは、ホストメモリコントローラに伝送されるメモリアドレスをインターセプトし、前記ホストメモリコントローラに要求が到着する前に、前記メモリアドレスを事前マッピングされたメモリアドレスに変換するように動作し、
前記事前マッピングされたメモリアドレスは、前記メモリアドレスと異なり、前記露出メモリは直接アクセス可能なメモリを含むことを特徴とするNVDIMMを含む装置。
【発明を実施するための形態】
【0012】
次に、本発明に係るNVDIMMを含む装置及びそのアクセス方法を実施するための形態の具体例を、図面を参照しながら説明する。
本発明の実施形態は制限的な方法ではなく、例として図示されており、添付図面で類似な参照番号は類似な要素を参照する。
先の一般的な説明及び次の詳細な説明のすべてが例示的であることを理解されなければならず、請求された発明の付加的な説明が提供されることとして理解されるべきである。参照符号が本発明の望ましい実施形態に詳細に表示されており、その例が参照図面に表示されている。可能であるどんな場合にも、同一の参照番号が同一又は類似な部分を参照するために説明及び図面に使用される。
【0013】
以下では、不揮発性メモリ装置が本発明の特徴及び機能を説明するための例として使用される。しかし、この技術分野に精通する人はここに記載された内容によって本発明の他の長所及び性能を容易に理解することができる。また、本発明は他の実施形態を通じて具現されるか、或いは適用され得る。その上に、詳細な説明は本発明の範囲、技術的思想、そして他の目的から相当に逸脱することのない観点及び応用によって修正されるか、或いは変更され得る。
【0014】
ストレージ媒体としてNANDフラッシュメモリを使用するSSD(Solid State Devices)のようなソリッドステートコンピュータストレージ装置は恒久的なデータストレージサービスを提供し、多様な方法を通じてホストコンピュータと接続される。運用的な観点で、重要な構成要素としては、恒久的な格納能力のためにストレージ装置が利用するNANDフラッシュメモリ回路、ホストインターフェイスロジック、そしてプロセシング及び媒体コントロールロジック等がある。
【0015】
1つの重要なホストインターフェイス方法としてNVMe(Non−Volatile Memory Express)がある。ホストはPCIe(Peripheral Component Interconnect Express)チャンネルを通じてNVMeストレージ装置とインターフェイスする。これは複数の標準化された方式にメモリマッピングされたサブミッションキュー(Submission Queue)及び完了キューペア(Completion Queue pair)を利用して実行される。
【0016】
ホストのDRAM(Dynamic Random Access Memory)アドレス空間内の割当されたメモリ位置と関連付けられたデータ及びコマンドを通じて、ホストプロセッサはNVMeストレージ装置にデータI/O(Input/Output)要求を伝送する。このような割当された位置アドレスはNVMeサブミッションキューとホストメモリマッピングされる。NVMe装置は伝送された要求を感知し、装置プロセシングロジックが要求の移行のために要求を装置に移すまでこれを保管する。
NVMe装置が要求を実行した場合、NVMe装置はホストが要求を配置するサブミッションキューと関連付けられた完了キューに応答を伝送する。サブミッションキューのように、完了キューはホストメモリマッピングされる。ホストは応答の存在を感知し、メモリマッピングされたデータの移動方法を利用して応答にアクセスし、それが応答を受信したか否かを示す方法を有している。
【0017】
NVMeと対照的に、NVDIMM(Non−Volatile Dual In−Line Memory Module)はホストと接続するためにホストDRAMメモリチャンネルを利用する。NVDIMMはNVMeを利用するSSDより著しく速くホストプロセッサと通信する。これはNVDIMMが著しく速いホストプロセッサ接続方法を使用するためである。メモリチャンネルの伝送速度は相対的にPCIe接続より速い。
しかし、このような形態は追加的な問題を有する。NVDIMMがホストメモリチャンネルに存在するので、NVDIMMはホストメモリコントローラにJEDEC(Joint Electron Device Engineering Council)標準に準拠するDRAMDIMMに認識されなければならず、標準DRAMDIMMソケットを利用してホストメモリチャンネルと接続されなければならない。特に、NVDIMMは完全にJEDECDIMM技術仕様に準拠しなければならない。
【0018】
JEDECDIMM技術仕様に準拠するために、NVDIMMはホストにそれが特定なメモリ容量を有するDRAMDIMMであると報告しなければならず、報告されるDRAMDIMMタイプと区別されないように動作しなければならない。また、NVDIMMはホストにメモリマップ動作のためのインターフェイスを提供しなければならない。このようなインターフェイスはメモリチャンネルの速度で動作し、システムメモリとして見分けがつかないように動作する。一般的に、NVDIMMは少ない量のメモリのみを、メモリマッピングされたホストデータの伝送に使用されるメモリチャンネル上でアクセス可能であるように露出(expose)する。このように露出されるメモリはDRAM、SRAM(Static Random Access Memory)のような揮発性メモリ又はNVDIMM内の不揮発性メモリの一部分であり、以下露出メモリと称する。
【0019】
図1は本発明の実施形態によるホストプロセッサと通信するNVDIMMを示すブロック図である。
図1は、ホストメモリコントローラ115、及びメモリ信号ライン120を通じてホストプロセッサ110と通信するNVDIMM105を示す。
ホストメモリコントローラ115はNVDIMM105が提供するメモリとの読出し及び書込み動作を実行する。NVDIMM105はDIMMソケット125を通じてホストメモリコントローラ115、及びホストプロセッサ110と通信する。DIMMソケット125はホストプロセッサ110、及びNVDIMM105を含むコンピュータ内に装着された標準DIMMソケットである。
【0020】
NVDIMM105は不揮発性メモリ130、ホストインターフェイスロジック135、プロセシング及びコントロールロジック140、内蔵DRAM145、及び露出メモリ150を含む。不揮発性メモリ130は何らかの形態の不揮発性メモリであってもよい。本発明の一実施形態として、不揮発性メモリ130はNANDフラッシュストレージを含む。他の実施形態として、不揮発性メモリ130はNORフラッシュストレージ、PCM(Phase Change Memory)、STT(Spin−Transfer Torque)、そしてMRAM(Magnetic RAM)のような他の形態の不揮発性メモリを含むことができる。ホストインターフェイスロジック135はホストプロセッサ110とNVDIMM105との間の通信の制御を担当する。プロセシング及びコントロールロジック140は不揮発性メモリ130の使用の制御を担当する。
【0021】
また、露出メモリ150はメモリマッピング動作のためにホストプロセッサ110に露出されたメモリを含む。露出メモリ150は内蔵DRAM145の一部、不揮発性メモリ130の一部、又はNVDIMM105とは別の構成要素であってもよい。例えば、本発明の一実施形態として、不揮発性メモリ130は露出メモリ150として割り当てられた1MB及びこれを含む8GBの全体メモリを含む。本発明の他の実施形態は不揮発性メモリ130の総メモリの概ね大部分であるか、或いは露出メモリ150の概ね大部分、又は両方の全てを含む。
【0022】
NVDIMM105を利用してDIMMをシミュレーション(Simulation)することにおいて発生する1つの問題はホストプロセッサ110及びさらに具体的にはホストプロセッサ110上で実行されるプログラムがメモリに対する特別なヴュー(view)を有しているということである。このような特別なヴューは多様なアプリケーションの各々がそれぞれの用途に対してあたかもすべての利用可能なメモリを有するように動作することを許容する。ホストメモリコントローラ115はメモリアドレスの論理−物理変換を実行してこのようなメモリのヴューを收容する。即ち、アプリケーションがメモリからデータを読み出すか、或いは書込むためにメモリ位置にアクセスを要求する場合、アプリケーションはそれが認識しているメモリアドレスを提供する。このメモリアドレスは所望するメモリセルが位置する装置上の実際メモリアドレスではない場合がしばしばある。ホストメモリコントローラ115はこのような論理的なメモリヴュー(アプリケーションの各々が自体の論理的なヴューを有しているので)とメモリモジュールの物理的アドレスとの間の変換を処理する。
【0023】
問題はNVDIMM105内の露出メモリ150が直接メモリにアドレスすることができ、ホストメモリコントローラ115によるこのような論理−物理変換を要求しないことである。ホストメモリコントローラ115がこのような論理−物理変換を実行する場合、ホストメモリコントローラ115は所望するメモリセルの正確な位置を防ぐ方法にてアドレスをコンボルブ(Convolve)する。
このような問題に対する解決策は装置ドライバ160を導入することである。装置ドライバ160は要求されたメモリアドレスを事前にマッチングし、これにホストメモリコントローラ115がその論理−物理変換を実行した後にNVDIMM105が予想する直接的なメモリアドレスを受信する。
装置ドライバ160がこのような事前マッピングを実行する方法は様々な要素に依存する。
【0024】
図2は
図1の装置ドライバの設計において考慮される多様な事項を示す図面である。装置ドライバ160の動作に入る要素は、露出メモリのサイズ205、露出メモリの基本アドレス210、露出メモリの論理セグメント(Segment)のサイズ215、メモリコントローラ動作モード220、そしてメモリコントローラによって利用される論理−物理変換225等を含む。論理セグメントは
図5及び
図8を参照して説明する。
装置ドライバ160は、メモリコントローラ動作モード220、及びホストメモリコントローラ115の論理−物理変換225を決定するために基本システムのバスを探索する。他の要素は
図1のNVDIMM105の設計において決定され、装置ドライバ160は事前にこのことを認知する。
【0025】
本発明の一実施形態として、メモリコントローラ動作モード220はページオープンコントローラモードにて動作する。ページオープンコントローラモードはホストメモリコントローラ115が、メモリアクセスアドレスが互いに接近して離隔されていると仮定するモードである。例えば、このような要求はしばしばデスクトップコンピュータシステムやI/O要求で発生する。
【0026】
本発明の他の実施形態として、メモリコントローラ動作モード220はページクローズ(Closed)コントローラモードにて動作する。ページクローズコントローラモードはホストメモリコントローラ115がメモリ要求の中でアクセスの減少された局所性(Locality)があると仮定するモードである。
一般的に、ホストメモリコントローラ115は基本システムが再び開始する時、他の動作モードに変更することができるとしても、ホストメモリコントローラ115は基本システムの動作の中でモードを変更せずただ1つのモードにて動作する。論理−物理変換225は自体にランクアドレス(Rank Address)、バンクグループアドレス(Bank Group Address)、バンクアドレス(Bank Address)、ロウアドレス(Row Address)、そしてカラムアドレス(Column Address)等の多様な要素を含む。
【0027】
図1の装置ドライバ160が事前マッピングを実行する方法の例を説明する前に追加的な情報に言及することは有用である。
図3は
図1のホストプロセッサ及びNVDIMMを支援することができるコンピュータシステムを示す図面である。
図3を参照すると、コンピュータシステム305はコンピュータ310、モニタ315、キーボード320、及びマウス325を含む。当業者はコンピュータシステム305に他の構成要素が含まれることを容易に理解できる。例えば、コンピュータシステム305はプリンタのようなI/O装置等をさらに含む。さらに、コンピュータシステム305は
図1に示した既存の内部構成要素を含む。例えば、既存の内部構成要素は
図1のホストプロセッサ110、
図1のNVDIMM105、及び追加的なストレージ等を含む。
【0028】
図3に示していないが、当業者はコンピュータシステム305がグラフィックカード、モデム等の他の内部構成要素を含み得ることを容易に理解できる。また、当業者はコンピュータシステム305が他のコンピュータシステムと直接的に或いは他のタイプのネットワーク(図示せず)を通じて相互作用できることを容易に理解できる。また、
図3はコンピュータシステム305が既存デスクトップ(Desktop)コンピュータとして示したが、当業者はコンピュータシステム305が何らかの形態のマシン又はコンピューティング装置であることを容易に理解できる。例えば、上述したマシン又はコンピューティング装置はラップトップ(Laptop)コンピュータ、タブレットコンピュータ、PDA(Personal Digital Assistant)、又はスマートフォン等を含む。
【0029】
図4は
図1のNVDIMMを使用することができるシステムの構造を示す図面である。
図4を参照すると、一般的にコンピュータシステム305は1つ又は1つ以上のホストプロセッサ110を含む。ホストプロセッサ110はホストメモリコントローラ115及びクロック405を含む。クロック405はコンピュータシステム305の構成要素の動作を同期化するために使用される。また、ホストプロセッサ110はメモリ435と接続される。例えば、メモリ435はNVDIMM、RAM(Random Access Memory)、ROM(Read−Only Memory)、又は他の状態格納媒体等を含む。ホストプロセッサ110はまたストレージ装置410、及びネットワークコネクタ415と接続される。例えば、ネットワークコネクタ415はイーサーネット(登録商標)(Ethernet)コネクタであってもよい。ホストプロセッサ110はまたバス420と接続される。バス420は他の構成要素の中でI/Oエンジン430を利用して制御され得るI/Oインターフェイスポート、及びユーザーインターフェイス425と接続される。
【0030】
図5は本発明の実施形態による
図1のNVDIMMのメモリ空間のレイアウトを例示的に示す図面である。
図5は、不揮発性メモリ130を示す。不揮発性メモリ130は基本アドレス210で始まる総メモリ容量505を含む。不揮発性メモリ130は論理セグメント510、515、520、525、530のような論理セグメントに区分される。論理セグメントは不揮発性メモリ130が細分化された区画である。一般的には論理セグメント(510、515、520、525、530)は2の累乗形態に構成された多数のバイトを含むが、論理セグメント(510、515、520、525、530)は何らかの所望されるサイズ215であってもよい。
【0031】
論理セグメント(510、515、520、525、530)のサイズ215と不揮発性メモリ130の総メモリ容量505との間には如何なる関係も要求されない。また、論理セグメント(510、515、520、525、530)のサイズ215と露出メモリ150のサイズ205との間にも如何なる関係も要求されない。しかし、仮に論理セグメント(510、515、520、525、530)のサイズ215があまりにも小さい場合、論理セグメント(510、515、520、525、530)の各々はメモリ要求に対して十分でないストレージを有することになる。
【0032】
本発明の一実施形態として、
図5は8GBの不揮発性メモリ130の総メモリ容量505、1MBの露出メモリ150のサイズ205、そして4kBの論理セグメント(510、515、520、525、530)の各々のサイズ215を示す。しかし、本発明の他の実施形態は、不揮発性メモリ130の総メモリ容量505、露出メモリ150のサイズ205、そして論理セグメント(510、515、520、525、530)の各々のサイズ215の中で一部或いは全てに対してその他の値も支援する。
図5、及び
図8はいずれも露出メモリ150を不揮発性メモリ130の一部として図示しているが、露出メモリ150は不揮発性メモリ130と分離されて具現されてもよい。
【0033】
図6は本発明の実施形態による
図1のNVDIMM内のメモリアドレスにアクセスするための要求をインターセプトし、要求されたメモリアドレスを事前にマッピングする
図1の装置ドライバを示す図面である。
図6を参照すると、アプリケーション又は他のプロセスはメモリアドレス605を生成する。メモリアドレス605は
図1のNVDIMM105内のメモリアドレスに該当する。
メモリアドレス605を
図2の論理−物理変換225を実行するホストメモリコントローラ115が処理するように許用するよりも、装置ドライバ160はメモリアドレス605をインターセプトし、メモリアドレスを事前マッピングする。事前マッピングの結果は事前マッピングされたメモリアドレス610である。事前マッピングされたメモリアドレス610は中間アドレス(Intermediate Address)とも称する。
【0034】
続いて、装置ドライバ160は事前マッピングされたメモリアドレス610をホストメモリコントローラ115に提供する。ホストメモリコントローラ115は事前マッピングされたメモリアドレス610上の論理−物理変換225を実行する。該当結果はターゲットメモリアドレス615である。ターゲットメモリアドレス615は
図1のNVDIMM105が所望するメモリセルに格納した所の実際アドレスである。
【0035】
図1に戻って、ホストシステム内で、すべてのDRAMサブシステム(Sub−System)のアドレス信号はDIMMソケットの各々に到達する。DIMMソケットの各々はNVDIMM105が装着されたDIMMソケット125を含む。アドレス分散をするため、装置ドライバ160は論理メモリセグメントに露出された正確なNVDIMMを探すために一部信号を使用する。たとえ,残った信号が
図1のNVDIMM105によって使用され得るとしても、残った信号の値はマッピングとは関係ない。上述したように、正確なマッピングはこれとは異なることがあり、論理セグメントサイズ215、及びホストメモリコントローラ動作モード220に依存する。
【0036】
装置ドライバ160が事前マッピングを実行するように動作する方法の一例として、NVDIMM105が
図5の8GBの総メモリ容量505、
図2の1MBの露出メモリ150のサイズ205、そして
図2の4kBの論理セグメント(510、515、520、525、530)の各々のサイズ215を含むと仮定する。また、露出メモリ150がメモリ信号ライン120上で次の入力アドレスビット(row[2:0]、column[9:0]、ba[1:0]、bg[1:0]、3’b000)とマッピングされると仮定する。上述の記載は容易に理解するためにヴェリログ(Verilog)コード列で記述されただけで、マッピング方法が必ずハードウェア技術事項の文書として表現される必要はない。
【0037】
例えば、仮にメモリコントローラ動作モード220がページオープンモードである場合、
図1の論理−物理変換225は次の変換(rank[1:0]、row[16:0]、ba[1:0]、bg[1:0]、column[9:0]、3‘h0)にしたがってビットをマッピングする。また、装置ドライバ160は次のマッピング(16’hxxxx、row[2:0]、ba[1:0]、bg[1:0]、column[9:0]、3’h0)を利用してメモリアドレスを事前マッピングする。ここで、‘x’は任意(‘Don’t care’)を意味する値であり、‘x’の代わりに結果に影響を及ぼさない任意の値であっても使用され得る。
【0038】
一方、例えば、仮にメモリコントローラ動作モード220がページクローズモードである場合、
図1の論理−物理変換225は次の変換(rank[1:0]、column[9:3]、row[16:0]、ba[1:0]、bg[1:0]、column[2:0]、3’h0)にしたがってビットをマッピングする。また、装置ドライバ160は次のマッピング(2’hx、column[9:3]、14’hxxxx、row[2:0]、ba[1:0]、bg[1:0]、column[2:0]、3’h0)を利用してメモリアドレスを事前マッピングする。また、ここで‘x’は‘Don’t care’を意味する値である。
【0039】
上述した事前マッピングの例は必然的に現実的なマッピングであるというより、構成のみである。各々のグループ内のアドレスビットはDRAM技術仕様として使用され、相対的にシステムアドレスに対する例示的な内訳(Breakdown)として選択される。例えば、DRAM技術仕様はロウ(Row)ビットの数、カラム(Column)ビットの数、バンクビットの数、そしてバンクグループビットの数を含む。但し、現実のメモリコントローラに対する事前マッピングは類似な方法で実行される。
【0040】
メモリ信号ライン120を通じて、NVDIMM105はNVMeを利用して動作する不揮発性メモリ装置より著しく速くホストプロセッサ110と通信する。これはメモリチャンネルの伝送速度は相対的にPCIe接続より速いからである。しかし、ここには潜在的な問題が存在する。すべてのメモリマッピングされたI/Oの動作は非常に狭いアドレス範囲(例えば、
図5で示すように1MB)でなされるため、NVDIMM105は潜在的にロウハンマ(Row Hammer)のようなDRAMDIMM標準不足によって発生する深刻な性能制約にさらされる。
【0041】
簡単に説明すると、特定メモリセルに反復的にアクセスが実行される場合、ロウハンマは付近の1つ又は1つ以上のメモリセルに変化を誘発して発生する。ロウハンマはDRAM標準が最初に開発されたときJEDEC標準委員会に知られていなかった。ロウハンマ問題に対して、新しいJEDEC技術仕様はメモリコントローラ(例えば、
図1のホストメモリコントローラ115)に同一のDRAMのロウアドレスにアクセスする周期を減少させて抑制(Throttle)するようにした。これはターゲットロウリフレッシュ(Target Row Refresh)と呼ぶ。
【0042】
DRAMの特定ロウアドレスへのアクセスを遅くすることがロウハンマを防止する反面、アクセス周期を減少させることはメモリ動作を遅くする。また、
図1のNVDIMM105のようにロウハンマが問題とされないメモリが使用される場合、抑制(Throttling)は必要としない。しかし、
図1のNVDIMM105はJEDEC技術仕様に準拠し、ホストプロセッサ110と正しくインターフェイスするために一般的なDIMMに見せるため、ホストメモリコントローラ115はロウハンマが問題にならないことを認識しない。
【0043】
図1の露出メモリ150のアドレス範囲が狭いほど、
図1のホストメモリコントローラ115がロウハンマを避けるために
図1のNVDIMM105への要求を抑制(Throttle)する確率が増加する。したがって、ホストメモリコントローラ115が、ロウハンマが問題になると認識しないようにすることが必要である。
図1のホストメモリコントローラ115が、ロウハンマが問題になると認識しないようにする1つの方法はメモリアドレスが
図1のメモリコントローラ115に到達する前にメモリアドレスをエイリアス(Alias)することである。
図7を参照して、装置ドライバ160がエイリアスを使用する方法を説明する。
【0044】
図7は本発明の実施形態によるアドレスエイリアスを実行する
図1の装置ドライバを示す図面である。
図7を参照すると、装置ドライバ160はメモリアドレス605を事前マッピングされたメモリアドレス610に事前マッピングする。しかし、事前マッピングの例として上述したように、事前マッピングは関連ない値を有するビットを含む。それらのビットには如何なる値も利用され得る。
図1のホストメモリコントローラ115内の物理ロウビットにマッピングされた1つ又は1つ以上の‘Don’t care’ビットを変更することによって、エイリアス(Alias)は
図6のターゲットメモリアドレス615に対して生成される。したがって、例えば、事前マッピングメモリアドレスエイリアス705、710の各々は所望するメモリアドレスに対するエイリアスを代表するが、他のビットパターンを含む。特に、‘Don’t care’ビット内の他のビットパターンを含む。
【0045】
装置ドライバ160は‘Don’t care’ビットを変更してエイリアスを生成するために望ましい如何なるテクニックも使用することができる。一実施形態として、装置ドライバ160は‘Don’t care’ビットに対するランダム値(或いは、擬似ランダム(Pseudo−random)値)を生成する。他の実施形態として、装置ドライバ160は‘Don’t care’ビットに対する順次的な値を生成することができる。他の実施形態は‘Don’t care’ビットに対する値を生成する他の方法を含むことができる。
【0046】
他の実施形態として、装置ドライバ160はアクセスされたメモリアドレスを追跡することができる。また、
図1のホストメモリコントローラ115が
図1のNVDIMM105に対するアクセスを抑制(Throttle)しようとする場合に、装置ドライバ160は‘Don’t care’ビットのみを変更することができる。他の実施形態として、
図1のホストメモリコントローラ115が
図1のNVDIMM105に対するアクセスを抑制(Throttle)しようとすることと関係なく、装置ドライバ160の各々のメモリアクセスに‘Don’t care’ビットの値を変更することができる。
図1のホストメモリコントローラ115が、ロウハンマが問題であると認識することを防止するための他の方法は
図1の露出メモリ150を不連続的なメモリアドレスを有する論理セグメントにパーティション(Partition)することである。
【0047】
図8は本発明の他の実施形態による
図1のNVDIMMのメモリ空間のレイアウトを例示的に示す図面である。
図8は
図1の露出メモリ150が不連続的なメモリアドレスを有する論理セグメントにパーティションされる方法を例示的に示す。
図8を参照すると、
図1の露出メモリ150はサイズ205の論理セグメントの一部のみを含む。サイズ205は
図1の露出メモリ150の実際サイズより大きい。例えば、
図1の露出メモリ150は論理セグメント805、810、815、820のみを含む。一方、サイズ205範囲内の論理セグメント825、830、835は
図1の露出メモリ150の一部ではない。露出メモリ150内の論理セグメントに対するメモリアドレスが連続的ではないため、ロウハンマはそれ以上問題にならない。
【0048】
図9は本発明の実施形態による
図1のNVDIMM、及び装置ドライバが
図1のNVDIMM内のメモリアドレスに対する要求を処理する方法を説明するためのフローチャートである。
図9を参照すると、S905段階で、
図1のNVDIMM105は
図1の露出メモリ150をホストコンピュータ(さらに、詳細には
図1のホストメモリコントローラ115)に公開(Open)する。
S910段階で、
図1の装置ドライバ160は
図1のホストメモリコントローラ115に伝送される予定である
図1のメモリアドレス605にアクセスするための要求をインターセプトする。
【0049】
S915段階で、
図1の装置ドライバ160は
図6のメモリアドレス605にアクセスするための要求を受信する。S920段階で、
図1の装置ドライバ160は
図6の事前マッピングされたメモリアドレス610を生成するために
図6のメモリアドレス605を事前マッピングする。
【0050】
S925段階で、メモリアドレス605の
図7の事前マッピングされたメモリアドレスエイリアス(705、710)を生成するために、
図1の装置ドライバ160は
図6の事前マッピングされたメモリアドレス610内の1つ又は1つ以上のビットを変形する。
図7を参照して上述したように、
図6の事前マッピングされたメモリアドレス610の
図7の事前マッピングされたメモリアドレスエイリアス(705、710)を生成することは選択的なことであり、したがってS925段階もまた選択的である。
S930段階で、結果的に
図1の装置ドライバ160は事前マッピングされたメモリアドレスエイリアス(705、710)又は
図6の事前マッピングされたメモリアドレス610を
図1のホストメモリコントローラ115に伝送する。
【0051】
図10は本発明の実施形態による
図1のNVDIMMが
図1のホストコンピュータにメモリを露出させる方法を説明するためのフローチャートである。
図10を参照すると、S1005段階で、
図1のNVDIMM105は
図1の不揮発性メモリ130内の連続したメモリブロックを選択する。また、上述したように、
図1の露出メモリ150は
図1の不揮発性メモリ130とは別の所に格納される。
図1の露出メモリ150が格納された所を変更することを除き、
図10のフローチャートはこのような状況でも変形すること無く使用される。
図1のNVDIMM105は何らかの望ましい方式でメモリの連続的なブロックを選択する。例えば、
図1のNVDIMM105は基本アドレス‘0’から始まる連続的なブロック、
図5の総メモリ容量505の上端で終わる連続的なブロック、或いは他の形態のメモリの連続的なブロックを選択する。
【0052】
S1010段階で、
図1のNVDIMM105はメモリの連続したブロックを論理セグメントに分割する。例えば、論理セグメントは
図5の論理セグメント(510、515、520、525、530)である。S1015段階で、
図1のNVDIMM105は
図1の露出メモリ150のように論理セグメント(例えば、
図5の論理セグメント(510、515、520、525、530))を露出させる。
【0053】
S1015段階の代わりにS1020段階で、
図1のNVDIMM105は
図1の不揮発性メモリ130内のメモリの不連続的なブロックを選択する。ブロックの各々は
図2の同一のサイズ215を有する。S1005段階のように、
図1のNVDIMM105は何らかの望ましい方式でメモリの不連続的なブロックを選択する。S1025段階で、
図1のNVDIMM105は不連続なメモリのブロックを論理セグメント(805、810、815、820)として露出させる。
【0054】
図10は
図1のNVDIMM105がメモリの不連続的なブロック又は連続的なブロックの中で1つを露出することとして提案しているが、他の実施形態は2つの変形を結合する。例えば、
図1の不揮発性メモリ130の4つの大きい部分の各々は連続的なブロックに識別されることができ、各々の部分は
図1のNVDIMM105によって露出されることができる論理セグメントに分離される。
図9及び
図10を参照すると、1つの実施形態が図示される。しかし、当業者は上述した段階の順序を変更するか、一部段階を省略するか、或いは図面で図示されない連結を含んで他の実施形態が具現できることは容易に理解できる。明視的に説明されたか否かに関係無く、このようなフローチャートの変形は本発明の実施形態として看做される。
【0055】
以下で、本発明の特定の実施形態が適用され得る適合なシステム又はシステムに対する簡略で、一般的な説明が提供される。システムは少なくとも部分的に既存の入力装置からの入力によって制御される。例えば、既存の入力装置はキーボード、マウスを含む。また、このような制御は他のマシンから受信されたガイドライン、VR(Virtual Reality)環境との相互作用、生体認識フィードバック、仮想マシン、又は他の入力信号によって実行される。
【0056】
ここで、使用した‘システム’という用語は幅広く単一マシン或いはシステム、仮想マシン、又は通信結合マシンのシステム、仮想マシン、又は共に動作する装置を含む。例示的なシステムはパーソナル(Personal)コンピュータ、ワークステーション、サーバー、ポータブル(Portable)コンピュータ、携帯(Handheld)装置、携帯電話、タブレット等を含む。また、例示的なシステムは自動車、汽車、タクシーのような個人用又は公共交通等のような交通装置を含む。
システムは内蔵コントローラ等を含む。例えば、内蔵コントローラはプログラムが可能であるか、或いは不可能なロジック装置又はアレイ(Array)、ASIC(Application Specific Integrated Circuits)、内蔵コンピュータ、スマトカード等を含む。システムは1つ又は1つ以上の遠隔マシンとの1つ又は1つ以上の接続を使用することができる。例えば、このような接続はネットワークインターフェイス、モデム、又は他の擬似伝達接続を通じてなされる。
【0057】
システムはイントラネット、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等のような物理的及び/又は論理的ネットワーク方法によって相互設続される。当業者はネットワーク通信が多様な有線及び/又は無線近距離又は長距離キャリヤ、及びプロトコルを利用できることを容易に理解できる。例えば、キャリヤ及びプロトコルはRF(Radio Frequency)、衛星(Satellite)、マイクロウェーブ(Microwave)、IEEE(Institute of Electrical and Electronics Engineers)802.11、Bluetooth(登録商標)、光学、赤外線、ケーブル、レーザー等を含む。
【0058】
本発明の実施形態は機能、段階、データ構造、アプリケーションプログラムを含む関連データを参照して説明される。機能、段階、データ構造、アプリケーションプログラムはシステムによってアクセスされる場合にシステムがタスクを実行するか、或いは抽象的なデータタイプ又はローレベル(Low−Level)のハードウェアコンテキスト(Context)を定義するようにする。例えば、上述した関連データはRAM、ROMのような揮発性及び/又は不揮発性メモリに格納される。また、関連データは他のストレージ装置及びそれらの関連ストレージ媒体に格納される。例えば、関連ストレージ媒体はハードディスクドライブ、フロッピー(登録商標)ディスク(Floppy−Disks)、光学ストレージ(Optical Storage)、テープ(Tapes)、フラッシュメモリ(Flash Memory)、メモリスティック(Memory Sticks)、デジタルビデオディスク(Digital Video Disks)、生体ストレージ(Biological Storage)等を含む。
【0059】
関連データはパケット、シリアル(Serial)データ、パラレル(Parallel)データ、電波信号等の形態に物理的及び/又は論理的ネットワークを含む通信環境を通じて伝送される。また、関連データは圧縮されるか、或いは暗号化された形態に利用される。関連データは分散環境で利用されることができ、システムアクセスに対して近くに及び/又は遠く格納される。
本発明の実施形態は類型の非一時的(Non−transitory)のシステムリーダブル(Readable)媒体を含む。システムリーダブル媒体は1つ又は1つ以上のプロセッサによって実行される命令、ここで記述された本発明の要素を実行する命令で構成された命令を含む。
【0060】
本発明の実施形態は制限無しで次の例示に拡張され得る。
第1例にしたがう本発明の実施形態は装置を含むことができる。
前記装置はDIMMソケットに装着されたNVDIMM、そして
ホストプロセッサ上で動作する装置ドライバを含み、
NVDIMMはメモリ及び露出メモリを含み、露出メモリは露出メモリの第1サイズ及び露出メモリの基本アドレスを含み、
装置ドライバはホストメモリコントローラに伝送されるメモリアドレスをインターセプトし、メモリアドレスを事前マッピングされたメモリアドレスに変換するように動作し、
事前マッピングされたメモリアドレスはメモリアドレスとは異なる装置である。
【0061】
第2例は第1例にしたがう装置を含む。NVDIMMはSSD(Solid State Device)を含む。
第3例は第1例にしたがう装置を含む。事前マッピングされたメモリアドレスはホストメモリコントローラがターゲットメモリアドレスをNVDIMMに伝送するように設計され、ターゲットメモリアドレスはメモリアドレスに格納された値の物理的位置を示す。
第4例は第3例にしたがう装置を含む。装置ドライバはNVDIMM内の露出メモリの第1サイズ、NVDIMM内の露出メモリの基本アドレス、NVDIMM内の露出メモリの論理セグメントの第2サイズ、及びホストメモリコントローラのメモリコントローラ動作モードに基づいてメモリアドレスから事前マッピングされたメモリアドレスを生成するように動作する。
【0062】
第5例は第4例にしたがう装置を含む。装置ドライバはホストメモリコントローラによるメモリアドレスの論理−物理変換に基づいてメモリアドレスから事前マッピングされたメモリアドレスを生成するように動作する。
第6例は第3例にしたがう装置を含む。ターゲットメモリアドレスはメモリアドレスである。
第7例は第3例にしたがう装置を含む。ターゲットメモリアドレスはメモリアドレスのエイリアス(Alias)である。
【0063】
第8例は第7例にしたがう装置を含む。事前マッピングされたメモリアドレスはメモリアドレスに対する少なくとも1つの変更されたビットを含む。少なくとも1つの変更されたビットはNVDIMMによって使用されない。
第9例は第3例にしたがう装置を含む。NVDIMMの露出メモリはNVDIMMのメモリ内の不連続的な論理セグメントに分割される。
第10例は第3例にしたがう装置を含む。露出メモリはメモリの集合である。
【0064】
第11例にしたがう本発明の実施形態は方法を含む。方法は
NVDIMMのメモリアドレスに対してアクセスするための要求を受信する段階、
メモリアドレスを中間アドレスに事前マッピングする段階、
中間アドレスをホストメモリコントローラに伝送する段階を含み、
NVDIMMはメモリ及び露出メモリを含み、露出メモリは露出メモリの第1サイズ及び露出メモリの基本アドレスを含み、
中間アドレスはメモリアドレスと異なり、
ホストメモリコントローラはターゲットメモリアドレスをNVDIMMに伝送し、ターゲットメモリアドレスはメモリアドレスに格納された値の物理的位置を意味する方法である。
【0065】
第12例は第11例による方法を含む。NVDIMMのメモリアドレスに対してアクセスするための要求を受信する段階はホストメモリコントローラに要求が到着する前に、メモリアドレスにアクセスするための要求をホストプロセッサでホストメモリコントローラにインターセプトする段階を含む。
第13例は第11例による方法を含む。NVDIMMのメモリアドレスに対してアクセスするための要求を受信する段階はSSDのメモリアドレスにアクセスするための要求を受信する段階を含む。
【0066】
第14例は第11例にしたがう方法を含む。メモリアドレスを中間アドレスに事前マッピングする段階はNVDIMM内の露出メモリの第1サイズ、NVDIMM内の露出メモリの基本アドレス、NVDIMM内の露出メモリの論理セグメントの第2サイズ、そしてホストメモリコントローラのメモリコントローラ動作モードに基づいてメモリアドレスを中間アドレスに事前マッピングする段階を含む。
第15例は第14例にしたがう方法を含む。メモリアドレスを中間アドレスに事前マッピングする段階はNVDIMM内の露出メモリの第1サイズ、NVDIMM内の露出メモリの基本アドレス、NVDIMM内の露出メモリの論理セグメントの第2サイズ、ホストメモリコントローラのメモリコントローラ動作モード、そしてホストメモリコントローラによって使用される論理−物理変換に基づいてメモリアドレスを中間アドレスに事前マッピングする段階を含む。
【0067】
第16例は第11例にしたがう方法を含む。ホストメモリコントローラはNVDIMMにメモリアドレスを伝送する。
第17例は第11例にしたがう方法を含む。メモリアドレスを中間アドレスに事前マッピングする段階はメモリアドレスのエイリアスをメモリアドレスに事前マッピングする段階を含む。
第18例は第11例にしたがう方法を含む。メモリアドレスを中間アドレスに事前マッピングする段階はメモリアドレスに対して中間アドレス内の少なくとも1つのビットを変更する段階を含む。少なくとも1つの変更されたビットはNVDIMMによって使用されない。
【0068】
第19例は第11例にしたがう方法を含む。方法はホストメモリコントローラに露出メモリを露出する段階をさらに含む。
第20例は第19例にしたがう方法を含む。ホストメモリコントローラに露出メモリを露出する段階は、
第1サイズを有するメモリの連続されたブロックを確認する段階、
メモリの連続されたブロックを論理セグメントに分割する段階、そして
論理セグメントをホストメモリコントローラに露出する段階を含み、
論理セグメントの各々は第2サイズを有する。
【0069】
第21例は第19例にしたがう方法を含む。ホストメモリコントローラに露出メモリを露出する段階は、
メモリの不連続的なブロックのセットを探す段階、そして
メモリの不連続的なブロックをホストメモリコントローラに論理セグメントとして露出する段階を含む。
【0070】
第22例にしたがう本発明の実施形態は類型のストレージ媒体を含む装置を含む。類型のストレージ媒体はシステムによって実行される場合、そこに格納された非一時的な命令を有する。非一時的な命令はシステムによって実行される時、
NVDIMMのメモリアドレスに対してアクセスするための要求を受信する段階、
メモリアドレスを中間アドレスに事前マッピングする段階、
中間アドレスをホストメモリコントローラに伝送する段階を実行し、
NVDIMMはメモリ及び露出メモリを含み、露出メモリは露出メモリの第1サイズ及び露出メモリの基本アドレスを含み、
中間アドレスはメモリアドレスと異なり、
ホストメモリコントローラはターゲットメモリアドレスをNVDIMMに伝送し、ターゲットメモリアドレスはメモリアドレスに格納された値の物理的位置を意味する。
【0071】
第23例は第22例による装置を含む。NVDIMMのメモリアドレスに対してアクセスするための要求を受信する段階はホストメモリコントローラに要求が到着する前に、メモリアドレスにアクセスするための要求をホストプロセッサでホストメモリコントローラにインターセプトする段階を含む。
第24例は第22例にしたがう装置を含む。NVDIMMのメモリアドレスに対してアクセスするための要求を受信する段階はSSDのメモリアドレスにアクセスするための要求を受信する段階を含む。
【0072】
第25例は第22例にしたがう装置を含む。メモリアドレスを中間アドレスに事前マッピングする段階はNVDIMM内の露出メモリの第1サイズ、NVDIMM内の露出メモリの基本アドレス、NVDIMM内の露出メモリの論理セグメントの第2サイズ、そしてホストメモリコントローラのメモリコントローラ動作モードに基づいてメモリアドレスを中間アドレスに事前マッピングする段階を含む。
第26例は第25例にしたがう装置を含む。メモリアドレスを中間アドレスに事前マッピングする段階はNVDIMM内の露出メモリの第1サイズ、NVDIMM内の露出メモリの基本アドレス、NVDIMM内の露出メモリの論理セグメントの第2サイズ、ホストメモリコントローラのメモリコントローラ動作モード、そしてホストメモリコントローラによって使用される論理−物理変換に基づいてメモリアドレスを中間アドレスに事前マッピングする段階を含む。
【0073】
第27例は第22例にしたがう装置を含む。ホストメモリコントローラはNVDIMMにメモリアドレスを伝送する。
第28例は第22例にしたがう装置を含む。メモリアドレスを中間アドレスに事前マッピングする段階はメモリアドレスのエイリアスをメモリアドレスに事前マッピングする段階を含む。
第29例は第22例にしたがう装置を含む。メモリアドレスを中間アドレスに事前マッピングする段階はメモリアドレスに対して中間アドレス内の少なくとも1つのビットを変更する段階を含む。少なくとも1つの変更されたビットはNVDIMMによって使用されない。
【0074】
第30例は第22例にしたがう装置を含む。非一時的な命令はホストメモリコントローラに露出メモリを露出する段階をさらに実行する。
第31例は第30例にしたがう装置を含む。ホストメモリコントローラに露出メモリを露出する段階は、
第1サイズを有するメモリの連続されたブロックを確認する段階、
メモリの連続されたブロックを論理セグメントに分割する段階、そして
論理セグメントをホストメモリコントローラに露出する段階を含み、
論理セグメントの各々は第2サイズを有する。
第32例は第30例にしたがう装置を含む。ホストメモリコントローラに露出メモリを露出する段階は、
メモリの不連続的なブロックのセットを探す段階、そして
メモリの不連続的なブロックをホストメモリコントローラに論理セグメントとして露出する段階を含む。
【0075】
以上のように図面と明細書で最適の実施形態を開示した。ここで、特定な用語を使用したが、これは単に本発明を説明するための目的で使用したものであり、意味の限定や特許請求範囲に記載された本発明の範囲を制限するために使用したものではない。したがって、本技術分野の通常の知識を有する者であれば、これからの多様な変形及び均等な他の実施形態が可能である点を理解できる。したがって、本発明の真正なる技術的な保護範囲は添付された特許請求範囲の技術的思想によって定められなければならない。