(57)【特許請求の範囲】
【請求項１】
ＤＩＭＭ（Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）ソケットに装着されたＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）と、
ホストプロセッサ上で動作する装置ドライバと、を有し、
前記ＮＶＤＩＭＭは、メモリ及び露出メモリを含み、前記露出メモリは露出メモリの第１サイズ及び前記露出メモリの基本アドレスを含み、
前記装置ドライバは、ホストメモリコントローラに伝送されるメモリアドレスをインターセプトし、前記ホストメモリコントローラに要求が到着する前に、前記メモリアドレスを事前マッピングされたメモリアドレスに変換するように動作し、
前記事前マッピングされたメモリアドレスは、前記メモリアドレスと異なり、前記露出メモリは直接アクセス可能なメモリを含むことを特徴とするＮＶＤＩＭＭを含む装置。
【請求項２】
前記ＮＶＤＩＭＭは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｅｖｉｃｅ）を含むことを特徴とする請求項１に記載のＮＶＤＩＭＭを含む装置。
【請求項３】
前記事前マッピングされたメモリアドレスは、前記ホストメモリコントローラがターゲットメモリアドレスを前記事前マッピングされたメモリアドレスに対する前記ＮＶＤＩＭＭに伝送するように設計され、
前記ターゲットメモリアドレスは、前記メモリアドレスに格納された値の物理的位置を示すことを特徴とする請求項１に記載のＮＶＤＩＭＭを含む装置。
【請求項４】
前記装置ドライバは、前記ＮＶＤＩＭＭ内の前記露出メモリの第１サイズ、前記ＮＶＤＩＭＭ内の露出メモリの基本アドレス、前記ＮＶＤＩＭＭ内の露出メモリの論理セグメントの第２サイズ、及び前記ホストメモリコントローラのメモリコントローラ動作モードに基づいて前記メモリアドレスから前記事前マッピングされたメモリアドレスを生成するように動作することを特徴とする請求項３に記載のＮＶＤＩＭＭを含む装置。
【請求項５】
前記事前マッピングされたメモリアドレスは、第２の事前マッピングされたメモリアドレスのエイリアス（Ａｌｉａｓ）であり、
前記事前マッピングされたメモリアドレスは、前記第２の事前マッピングされたメモリアドレスとは異なり、
前記ホストメモリコントローラは、前記事前マッピングされたメモリアドレス、前記第２の事前マッピングされたメモリアドレスの両方を前記ターゲットメモリアドレスにマッピングすることを特徴とする請求項３に記載のＮＶＤＩＭＭを含む装置。
【請求項６】
前記事前マッピングされたメモリアドレスは、前記第２の事前マッピングされたメモリアドレスに対する少なくとも１つの変更されたビットを含み、
前記少なくとも１つの変更されたビットは、前記ホストメモリコントローラから前記ＮＶＤＩＭＭに伝送された前記ターゲットメモリアドレスに影響しないことを特徴とする請求項５に記載のＮＶＤＩＭＭを含む装置。
【請求項７】
ＮＶＤＩＭＭを含む装置のアクセス方法において、
前記ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階と、
前記メモリアドレスを中間アドレスに事前マッピングする段階と、
前記中間アドレスをホストメモリコントローラに伝送する段階と、を有し、
前記ＮＶＤＩＭＭは、メモリ及び露出メモリを含み、前記露出メモリは、前記露出メモリの第１サイズ及び前記露出メモリの基本アドレスを含み、
前記中間アドレスは、前記メモリアドレスと異なり、
前記ホストメモリコントローラは、ターゲットメモリアドレスを前記ＮＶＤＩＭＭに伝送し、
前記ターゲットメモリアドレスは、前記メモリアドレスに格納された値の物理的位置を示すことを特徴とするＮＶＤＩＭＭを含む装置のアクセス方法。
【請求項８】
前記ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階は、前記ＮＶＤＩＭＭであるＳＳＤの前記メモリアドレスにアクセスするための前記要求を受信する段階を含むことを特徴とする請求項７に記載のＮＶＤＩＭＭを含む装置のアクセス方法。
【請求項９】
前記メモリアドレスを中間アドレスに事前マッピングする段階は、前記ＮＶＤＩＭＭ内の前記露出メモリの第１サイズ、前記ＮＶＤＩＭＭ内の露出メモリの基本アドレス、前記ＮＶＤＩＭＭ内の露出メモリの論理セグメントの第２サイズ、及び前記ホストメモリコントローラのメモリコントローラ動作モードに基づいて前記メモリアドレスを前記中間アドレスに事前マッピングする段階を含むことを特徴とする請求項７に記載のＮＶＤＩＭＭを含む装置のアクセス方法。
【請求項１０】
前記メモリアドレスを中間アドレスに事前マッピングする段階は、前記メモリアドレスを前記メモリアドレスのエイリアス（Ａｌｉａｓ）に事前マッピングする段階を含み、
前記中間アドレスは、第２の中間アドレスとは異なり、前記ホストメモリコントローラは、前記中間アドレスと前記第２の中間アドレスの両方を前記ターゲットメモリアドレスにマッピングすることを特徴とする請求項７に記載のＮＶＤＩＭＭを含む装置のアクセス方法。
【請求項１１】
前記メモリアドレスを中間アドレスに事前マッピングする段階は、
前記第２の中間アドレスに関連した前記中間アドレス内の少なくとも１つのビットを変更する段階を含み、前記変更された少なくとも１つのビットは、前記ターゲットメモリアドレスが前記ホストメモリコントローラから前記ＮＶＤＩＭＭに移動されることに影響を与えないことを特徴とする請求項１０に記載のＮＶＤＩＭＭを含む装置のアクセス方法。
【請求項１２】
前記ホストメモリコントローラに前記露出メモリを露出する段階をさらに有することを特徴とする請求項７に記載のＮＶＤＩＭＭを含む装置のアクセス方法。
【請求項１３】
前記ホストメモリコントローラに前記露出メモリを露出する段階は、
前記第１サイズを有する前記メモリの連続したブロックを確認する段階と、
前記メモリの連続したブロックを複数の論理セグメントに分割する段階と、
前記複数の論理セグメントを前記ホストメモリコントローラに露出する段階と、を含み、
前記複数の論理セグメントの各々は、第２サイズを有することを特徴とする請求項１２に記載のＮＶＤＩＭＭを含む装置のアクセス方法。
【請求項１４】
命令が格納された非一時的（Ｎｏｎ−Ｔｒａｎｓｉｔｏｒｙ）なストレージ媒体、実在のストレージ媒体を含む装置において、
前記命令が、システムによって実行される時、
ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階と、
前記メモリアドレスを中間アドレスに事前マッピングする段階と、
前記中間アドレスをホストメモリコントローラに伝送する段階を実行し、
前記ＮＶＤＩＭＭは、メモリ、及び露出メモリを含み、前記露出メモリは、前記露出メモリの第１サイズ及び前記露出メモリの基本アドレスを含み、
前記中間アドレスは、前記メモリアドレスと異なり、
前記ホストメモリコントローラは、ターゲットメモリアドレスを前記ＮＶＤＩＭＭに伝送し、
前記ターゲットメモリアドレスは、前記中間アドレスに対応し、前記メモリアドレスに格納された値の物理的位置を示し、前記露出メモリは、直接アクセス可能なメモリを含むことを特徴とする装置。
【請求項１５】
前記メモリアドレスを中間アドレスに事前マッピングする段階は、前記ＮＶＤＩＭＭ内の前記露出メモリの第１サイズ、前記ＮＶＤＩＭＭ内の露出メモリの基本アドレス、前記ＮＶＤＩＭＭ内の露出メモリの論理セグメントの第２サイズ、及び前記ホストメモリコントローラのメモリコントローラ動作モードに基づいて前記メモリアドレスを中間アドレスに事前マッピングする段階を含むことを特徴とする請求項１４に記載の装置。
【請求項１６】
前記メモリアドレスを中間アドレスに事前マッピングする段階は、前記メモリアドレスを第２の中間アドレスのエイリアス（Ａｌｉａｓ）に事前マッピングする段階を含み、
前記中間アドレスは、前記第２の中間アドレスとは異なり、前記ホストメモリコントローラは、前記中間アドレスと、前記第２の中間アドレスの両方を前記ターゲットメモリアドレスにマッピングすることを特徴とする請求項１４に記載の装置。
【請求項１７】
前記メモリアドレスを中間アドレスに事前マッピングする段階は、
第２の中間アドレスに関連した前記中間アドレス内の少なくとも１つのビットを変更する段階を含み、前記変更された少なくとも１つのビットは、前記ターゲットメモリアドレスが前記ホストメモリコントローラから前記ＮＶＤＩＭＭに移動されることに影響を与えないことを特徴とする請求項１４に記載の装置。
【請求項１８】
前記ターゲットメモリアドレスは前記中間アドレスに対応し、前記メモリアドレスに格納された値の物理的位置を含むことを特徴とする請求項７に記載のＮＶＤＩＭＭを含む装置のアクセス方法。
【請求項１９】
前記露出メモリは、直接アクセス可能なメモリを含むことを特徴とする請求項７に記載のＮＶＤＩＭＭを含む装置のアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ装置に関し、さらに具体的にＮＶＤＩＭＭを含む装置及びそのアクセス方法に関する。
【背景技術】
【０００２】
ＤＩＭＭに対する要求事項は数年間確立されてきた。１９４４年に設立され、１９５８年に現在の名前を持つようになったＪＥＤＥＣ（Ｊｏｉｎｔ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｃｏｕｎｃｉｌ）はＤＩＭＭ装置に対する技術仕様（Ｓｐｅｃｉｆｉｃａｔｉｏｎｓ）を提供する。ＤＩＭＭ装置の多様な変形が存在するので、ＪＥＤＥＣはＤＩＭＭが動作する方法に対する多様な標準に対する草案を作成してきた。
ＤＩＭＭはＤＩＭＭスロット（Ｓｌｏｔ）コネクタに連結され、メモリチャンネルのアドレス信号ラインを通じてホストプロセッサと通信する。また、ホストプロセッサ（さらに詳細にはメモリコントローラ）とＤＩＭＭとの間の通信する方式はよく確立されている。
【０００３】
ＤＩＭＭは一般的に揮発性メモリを含む。即ち、メモリセル内のデータ値は周期的にリフレッシュ（Ｒｅｆｒｅｓｈ）される必要があり、そうでなければ、メモリセルはメモリに格納されたデータの値を失うことになる。リフレッシュと関連して、ＤＩＭＭはＪＥＤＥＣによって定められた最小のリフレッシュ周期を支援することができなければならない。
ＤＩＭＭのような揮発性メモリとは対照的に、不揮発性メモリ（ＮＶＭ：Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）の形態も存在する。不揮発性メモリの形態は周期的なリフレッシュ無しでもメモリに格納されたデータ値を維持することができる。不揮発性メモリの１つの例示的な形態はＮＡＮＤ（Ｎａｎｄ）フラッシュメモリである。ＮＡＮＤフラッシュメモリはＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）キー及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｅｖｉｃｅｓ）等で容易に見つけることができる。
【０００４】
ＤＩＭＭスロットに互換される不揮発性メモリの形態は持続的に開発されてきた。しかし、不揮発性メモリはＤＩＭＭとは異なる原理によって動作する。不揮発性メモリの形態がＤＩＭＭソケット（Ｓｏｃｋｅｔ）で動作するようにするためには、不揮発性メモリはホストプロセッサ及びメモリコントローラにＤＩＭＭとして認識されなければならない。ＤＩＭＭ内のメモリアドレッシング（Ａｄｄｒｅｓｓｉｎｇ）は不揮発性メモリ形態とは異なる形で遂行されるので、これは解決されるべき幾つかの問題を発生させる。
したがって、ＤＩＭＭスロットで不揮発性メモリ形態を使用することに伴って発生するメモリアドレッシング方法及び多様な問題を解決するための方法が要求される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許公開第２０１１／００３５５４０号明細書
【特許文献２】米国特許公開第２０１４／０２３７１７６号明細書
【特許文献３】米国特許公開第２０１４／０２３７２０５号明細書
【特許文献４】米国特許公開第２０１４／０１８１３６４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記従来のＤＩＭＭにおける問題点に鑑みてなされたものであって、本発明の目的はメモリアドレスをインターセプトする装置ドライバを利用してＤＩＭＭスロット上のインターフェイスを支援するＮＶＤＩＭＭを含む装置及びそのアクセス方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の実施形態による装置はＮＶＤＩＭＭ及び装置ドライバを含むことができる。ＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）はＤＩＭＭ（Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）ソケットに装着されることができる。装置ドライバはホストプロセッサ上で動作することができる。ＮＶＤＩＭＭはメモリ及びメモリマッピングされたホストデータの伝送に使用されるメモリチャンネル上でアクセス可能であるように露出される露出メモリを含み、露出メモリは露出メモリの第１サイズ及び露出メモリの基本アドレスを含むことができる。装置ドライバはホストメモリコントローラに伝送されるメモリアドレスをインターセプトし、メモリアドレスを事前マッピングされたメモリアドレスに変換するように動作することができる。事前マッピングされたメモリアドレスはメモリアドレスと異なってもよい。
【０００８】
本発明の実施形態によるＮＶＤＩＭＭを含む装置のアクセス方法はＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階、メモリアドレスを中間アドレスに事前マッピングする段階、中間アドレスをホストメモリコントローラに伝送する段階を含むことができる。ＮＶＤＩＭＭはメモリ及びメモリマッピングされたホストデータの伝送に使用されるメモリチャンネル上でアクセス可能であるように露出される露出メモリを含み、露出メモリは露出メモリの第１サイズ及び露出メモリの基本アドレスを含むことができる。中間アドレスはメモリアドレスと異なってもよい。ホストメモリコントローラはターゲットメモリアドレスをＮＶＤＩＭＭに伝送することができる。ターゲットメモリアドレスはメモリアドレスに格納された値の物理的位置を示すことができる。
【０００９】
非一時的（Ｎｏｎ−Ｔｒａｎｓｉｔｏｒｙ）命令を格納する類型のストレージ媒体を含む装置において、非一時的命令はシステムによって実行される時、ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階、メモリアドレスを中間アドレスに事前マッピングする段階、中間アドレスをホストメモリコントローラに伝送する段階を実行することができる。ＮＶＤＩＭＭはメモリ及びメモリマッピングされたホストデータの伝送に使用されるメモリチャンネル上でアクセス可能であるように露出される露出メモリを含み、露出メモリは露出メモリの第１サイズ及び露出メモリの基本アドレスを含むことができる。中間アドレスはメモリアドレスと異なってもよい。ホストメモリコントローラはターゲットメモリアドレスをＮＶＤＩＭＭに伝送することができる。ターゲットメモリアドレスはメモリアドレスに格納された値の物理的位置を示すことができる。
【発明の効果】
【００１０】
本発明に係るＮＶＤＩＭＭを含む装置によれば、複数の不揮発性メモリ装置を含むＮＶＤＩＭＭがＤＩＭＭスロット上で動作することができる。これを通じて、ＮＶＤＩＭＭは速度が速いメモリチャンネルを利用することができ、結果的にメモリの通信速度が向上される。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態によるホストプロセッサと通信するＮＶＤＩＭＭを示すブロック図である。
【図２】図１の装置ドライバの設計において考慮される多様な事項を示す図面である。
【図３】図１のホストプロセッサ及びＮＶＤＩＭＭを支援することができるコンピュータシステムを示す図面である。
【図４】図１のＮＶＤＩＭＭを使用することができるシステムの構造を示す図面である。
【図５】本発明の実施形態による図１のＮＶＤＩＭＭのメモリ空間のレイアウトを例示的に示す図面である。
【図６】本発明の実施形態による図１のＮＶＤＩＭＭ内のメモリアドレスにアクセスするための要求をインターセプトし、要求されたメモリアドレスを事前にマッピングする図１の装置ドライバを示す図面である。
【図７】本発明の実施形態によるアドレスエイリアスを実行する図１の装置ドライバを示す図面である。
【図８】本発明の他の実施形態による図１のＮＶＤＩＭＭのメモリ空間のレイアウトを例示的に示す図面である。
【図９】本発明の実施形態による図１のＮＶＤＩＭＭ及び装置ドライバが図１のＮＶＤＩＭＭ内のメモリアドレスに対する要求を処理する方法を説明するためのフローチャートである。
【図１０】本発明の実施形態による図１のＮＶＤＩＭＭが図１のホストコンピュータにメモリを露出させる方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
次に、本発明に係るＮＶＤＩＭＭを含む装置及びそのアクセス方法を実施するための形態の具体例を、図面を参照しながら説明する。
本発明の実施形態は制限的な方法ではなく、例として図示されており、添付図面で類似な参照番号は類似な要素を参照する。
先の一般的な説明及び次の詳細な説明のすべてが例示的であることを理解されなければならず、請求された発明の付加的な説明が提供されることとして理解されるべきである。参照符号が本発明の望ましい実施形態に詳細に表示されており、その例が参照図面に表示されている。可能であるどんな場合にも、同一の参照番号が同一又は類似な部分を参照するために説明及び図面に使用される。
【００１３】
以下では、不揮発性メモリ装置が本発明の特徴及び機能を説明するための例として使用される。しかし、この技術分野に精通する人はここに記載された内容によって本発明の他の長所及び性能を容易に理解することができる。また、本発明は他の実施形態を通じて具現されるか、或いは適用され得る。その上に、詳細な説明は本発明の範囲、技術的思想、そして他の目的から相当に逸脱することのない観点及び応用によって修正されるか、或いは変更され得る。
【００１４】
ストレージ媒体としてＮＡＮＤフラッシュメモリを使用するＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｅｖｉｃｅｓ）のようなソリッドステートコンピュータストレージ装置は恒久的なデータストレージサービスを提供し、多様な方法を通じてホストコンピュータと接続される。運用的な観点で、重要な構成要素としては、恒久的な格納能力のためにストレージ装置が利用するＮＡＮＤフラッシュメモリ回路、ホストインターフェイスロジック、そしてプロセシング及び媒体コントロールロジック等がある。
【００１５】
１つの重要なホストインターフェイス方法としてＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）がある。ホストはＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）チャンネルを通じてＮＶＭｅストレージ装置とインターフェイスする。これは複数の標準化された方式にメモリマッピングされたサブミッションキュー（Ｓｕｂｍｉｓｓｉｏｎ  Ｑｕｅｕｅ）及び完了キューペア（Ｃｏｍｐｌｅｔｉｏｎ  Ｑｕｅｕｅ  ｐａｉｒ）を利用して実行される。
【００１６】
ホストのＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）アドレス空間内の割当されたメモリ位置と関連付けられたデータ及びコマンドを通じて、ホストプロセッサはＮＶＭｅストレージ装置にデータＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）要求を伝送する。このような割当された位置アドレスはＮＶＭｅサブミッションキューとホストメモリマッピングされる。ＮＶＭｅ装置は伝送された要求を感知し、装置プロセシングロジックが要求の移行のために要求を装置に移すまでこれを保管する。
ＮＶＭｅ装置が要求を実行した場合、ＮＶＭｅ装置はホストが要求を配置するサブミッションキューと関連付けられた完了キューに応答を伝送する。サブミッションキューのように、完了キューはホストメモリマッピングされる。ホストは応答の存在を感知し、メモリマッピングされたデータの移動方法を利用して応答にアクセスし、それが応答を受信したか否かを示す方法を有している。
【００１７】
ＮＶＭｅと対照的に、ＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）はホストと接続するためにホストＤＲＡＭメモリチャンネルを利用する。ＮＶＤＩＭＭはＮＶＭｅを利用するＳＳＤより著しく速くホストプロセッサと通信する。これはＮＶＤＩＭＭが著しく速いホストプロセッサ接続方法を使用するためである。メモリチャンネルの伝送速度は相対的にＰＣＩｅ接続より速い。
しかし、このような形態は追加的な問題を有する。ＮＶＤＩＭＭがホストメモリチャンネルに存在するので、ＮＶＤＩＭＭはホストメモリコントローラにＪＥＤＥＣ（Ｊｏｉｎｔ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｃｏｕｎｃｉｌ）標準に準拠するＤＲＡＭＤＩＭＭに認識されなければならず、標準ＤＲＡＭＤＩＭＭソケットを利用してホストメモリチャンネルと接続されなければならない。特に、ＮＶＤＩＭＭは完全にＪＥＤＥＣＤＩＭＭ技術仕様に準拠しなければならない。
【００１８】
ＪＥＤＥＣＤＩＭＭ技術仕様に準拠するために、ＮＶＤＩＭＭはホストにそれが特定なメモリ容量を有するＤＲＡＭＤＩＭＭであると報告しなければならず、報告されるＤＲＡＭＤＩＭＭタイプと区別されないように動作しなければならない。また、ＮＶＤＩＭＭはホストにメモリマップ動作のためのインターフェイスを提供しなければならない。このようなインターフェイスはメモリチャンネルの速度で動作し、システムメモリとして見分けがつかないように動作する。一般的に、ＮＶＤＩＭＭは少ない量のメモリのみを、メモリマッピングされたホストデータの伝送に使用されるメモリチャンネル上でアクセス可能であるように露出（ｅｘｐｏｓｅ）する。このように露出されるメモリはＤＲＡＭ、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような揮発性メモリ又はＮＶＤＩＭＭ内の不揮発性メモリの一部分であり、以下露出メモリと称する。
【００１９】
図１は本発明の実施形態によるホストプロセッサと通信するＮＶＤＩＭＭを示すブロック図である。図１は、ホストメモリコントローラ１１５、及びメモリ信号ライン１２０を通じてホストプロセッサ１１０と通信するＮＶＤＩＭＭ１０５を示す。
ホストメモリコントローラ１１５はＮＶＤＩＭＭ１０５が提供するメモリとの読出し及び書込み動作を実行する。ＮＶＤＩＭＭ１０５はＤＩＭＭソケット１２５を通じてホストメモリコントローラ１１５、及びホストプロセッサ１１０と通信する。ＤＩＭＭソケット１２５はホストプロセッサ１１０、及びＮＶＤＩＭＭ１０５を含むコンピュータ内に装着された標準ＤＩＭＭソケットである。
【００２０】
ＮＶＤＩＭＭ１０５は不揮発性メモリ１３０、ホストインターフェイスロジック１３５、プロセシング及びコントロールロジック１４０、内蔵ＤＲＡＭ１４５、及び露出メモリ１５０を含む。不揮発性メモリ１３０は何らかの形態の不揮発性メモリであってもよい。本発明の一実施形態として、不揮発性メモリ１３０はＮＡＮＤフラッシュストレージを含む。他の実施形態として、不揮発性メモリ１３０はＮＯＲフラッシュストレージ、ＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）、ＳＴＴ（Ｓｐｉｎ−Ｔｒａｎｓｆｅｒ  Ｔｏｒｑｕｅ）、そしてＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）のような他の形態の不揮発性メモリを含むことができる。ホストインターフェイスロジック１３５はホストプロセッサ１１０とＮＶＤＩＭＭ１０５との間の通信の制御を担当する。プロセシング及びコントロールロジック１４０は不揮発性メモリ１３０の使用の制御を担当する。
【００２１】
また、露出メモリ１５０はメモリマッピング動作のためにホストプロセッサ１１０に露出されたメモリを含む。露出メモリ１５０は内蔵ＤＲＡＭ１４５の一部、不揮発性メモリ１３０の一部、又はＮＶＤＩＭＭ１０５とは別の構成要素であってもよい。例えば、本発明の一実施形態として、不揮発性メモリ１３０は露出メモリ１５０として割り当てられた１ＭＢ及びこれを含む８ＧＢの全体メモリを含む。本発明の他の実施形態は不揮発性メモリ１３０の総メモリの概ね大部分であるか、或いは露出メモリ１５０の概ね大部分、又は両方の全てを含む。
【００２２】
ＮＶＤＩＭＭ１０５を利用してＤＩＭＭをシミュレーション（Ｓｉｍｕｌａｔｉｏｎ）することにおいて発生する１つの問題はホストプロセッサ１１０及びさらに具体的にはホストプロセッサ１１０上で実行されるプログラムがメモリに対する特別なヴュー（ｖｉｅｗ）を有しているということである。このような特別なヴューは多様なアプリケーションの各々がそれぞれの用途に対してあたかもすべての利用可能なメモリを有するように動作することを許容する。ホストメモリコントローラ１１５はメモリアドレスの論理−物理変換を実行してこのようなメモリのヴューを收容する。即ち、アプリケーションがメモリからデータを読み出すか、或いは書込むためにメモリ位置にアクセスを要求する場合、アプリケーションはそれが認識しているメモリアドレスを提供する。このメモリアドレスは所望するメモリセルが位置する装置上の実際メモリアドレスではない場合がしばしばある。ホストメモリコントローラ１１５はこのような論理的なメモリヴュー（アプリケーションの各々が自体の論理的なヴューを有しているので）とメモリモジュールの物理的アドレスとの間の変換を処理する。
【００２３】
問題はＮＶＤＩＭＭ１０５内の露出メモリ１５０が直接メモリにアドレスすることができ、ホストメモリコントローラ１１５によるこのような論理−物理変換を要求しないことである。ホストメモリコントローラ１１５がこのような論理−物理変換を実行する場合、ホストメモリコントローラ１１５は所望するメモリセルの正確な位置を防ぐ方法にてアドレスをコンボルブ（Ｃｏｎｖｏｌｖｅ）する。
このような問題に対する解決策は装置ドライバ１６０を導入することである。装置ドライバ１６０は要求されたメモリアドレスを事前にマッチングし、これにホストメモリコントローラ１１５がその論理−物理変換を実行した後にＮＶＤＩＭＭ１０５が予想する直接的なメモリアドレスを受信する。
装置ドライバ１６０がこのような事前マッピングを実行する方法は様々な要素に依存する。
【００２４】
図２は図１の装置ドライバの設計において考慮される多様な事項を示す図面である。装置ドライバ１６０の動作に入る要素は、露出メモリのサイズ２０５、露出メモリの基本アドレス２１０、露出メモリの論理セグメント（Ｓｅｇｍｅｎｔ）のサイズ２１５、メモリコントローラ動作モード２２０、そしてメモリコントローラによって利用される論理−物理変換２２５等を含む。論理セグメントは図５及び図８を参照して説明する。
装置ドライバ１６０は、メモリコントローラ動作モード２２０、及びホストメモリコントローラ１１５の論理−物理変換２２５を決定するために基本システムのバスを探索する。他の要素は図１のＮＶＤＩＭＭ１０５の設計において決定され、装置ドライバ１６０は事前にこのことを認知する。
【００２５】
本発明の一実施形態として、メモリコントローラ動作モード２２０はページオープンコントローラモードにて動作する。ページオープンコントローラモードはホストメモリコントローラ１１５が、メモリアクセスアドレスが互いに接近して離隔されていると仮定するモードである。例えば、このような要求はしばしばデスクトップコンピュータシステムやＩ／Ｏ要求で発生する。
【００２６】
本発明の他の実施形態として、メモリコントローラ動作モード２２０はページクローズ（Ｃｌｏｓｅｄ）コントローラモードにて動作する。ページクローズコントローラモードはホストメモリコントローラ１１５がメモリ要求の中でアクセスの減少された局所性（Ｌｏｃａｌｉｔｙ）があると仮定するモードである。
一般的に、ホストメモリコントローラ１１５は基本システムが再び開始する時、他の動作モードに変更することができるとしても、ホストメモリコントローラ１１５は基本システムの動作の中でモードを変更せずただ１つのモードにて動作する。論理−物理変換２２５は自体にランクアドレス（Ｒａｎｋ  Ａｄｄｒｅｓｓ）、バンクグループアドレス（Ｂａｎｋ  Ｇｒｏｕｐ  Ａｄｄｒｅｓｓ）、バンクアドレス（Ｂａｎｋ  Ａｄｄｒｅｓｓ）、ロウアドレス（Ｒｏｗ  Ａｄｄｒｅｓｓ）、そしてカラムアドレス（Ｃｏｌｕｍｎ  Ａｄｄｒｅｓｓ）等の多様な要素を含む。
【００２７】
図１の装置ドライバ１６０が事前マッピングを実行する方法の例を説明する前に追加的な情報に言及することは有用である。
図３は図１のホストプロセッサ及びＮＶＤＩＭＭを支援することができるコンピュータシステムを示す図面である。図３を参照すると、コンピュータシステム３０５はコンピュータ３１０、モニタ３１５、キーボード３２０、及びマウス３２５を含む。当業者はコンピュータシステム３０５に他の構成要素が含まれることを容易に理解できる。例えば、コンピュータシステム３０５はプリンタのようなＩ／Ｏ装置等をさらに含む。さらに、コンピュータシステム３０５は図１に示した既存の内部構成要素を含む。例えば、既存の内部構成要素は図１のホストプロセッサ１１０、図１のＮＶＤＩＭＭ１０５、及び追加的なストレージ等を含む。
【００２８】
図３に示していないが、当業者はコンピュータシステム３０５がグラフィックカード、モデム等の他の内部構成要素を含み得ることを容易に理解できる。また、当業者はコンピュータシステム３０５が他のコンピュータシステムと直接的に或いは他のタイプのネットワーク（図示せず）を通じて相互作用できることを容易に理解できる。また、図３はコンピュータシステム３０５が既存デスクトップ（Ｄｅｓｋｔｏｐ）コンピュータとして示したが、当業者はコンピュータシステム３０５が何らかの形態のマシン又はコンピューティング装置であることを容易に理解できる。例えば、上述したマシン又はコンピューティング装置はラップトップ（Ｌａｐｔｏｐ）コンピュータ、タブレットコンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、又はスマートフォン等を含む。
【００２９】
図４は図１のＮＶＤＩＭＭを使用することができるシステムの構造を示す図面である。図４を参照すると、一般的にコンピュータシステム３０５は１つ又は１つ以上のホストプロセッサ１１０を含む。ホストプロセッサ１１０はホストメモリコントローラ１１５及びクロック４０５を含む。クロック４０５はコンピュータシステム３０５の構成要素の動作を同期化するために使用される。また、ホストプロセッサ１１０はメモリ４３５と接続される。例えば、メモリ４３５はＮＶＤＩＭＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、又は他の状態格納媒体等を含む。ホストプロセッサ１１０はまたストレージ装置４１０、及びネットワークコネクタ４１５と接続される。例えば、ネットワークコネクタ４１５はイーサーネット（登録商標）（Ｅｔｈｅｒｎｅｔ）コネクタであってもよい。ホストプロセッサ１１０はまたバス４２０と接続される。バス４２０は他の構成要素の中でＩ／Ｏエンジン４３０を利用して制御され得るＩ／Ｏインターフェイスポート、及びユーザーインターフェイス４２５と接続される。
【００３０】
図５は本発明の実施形態による図１のＮＶＤＩＭＭのメモリ空間のレイアウトを例示的に示す図面である。図５は、不揮発性メモリ１３０を示す。不揮発性メモリ１３０は基本アドレス２１０で始まる総メモリ容量５０５を含む。不揮発性メモリ１３０は論理セグメント５１０、５１５、５２０、５２５、５３０のような論理セグメントに区分される。論理セグメントは不揮発性メモリ１３０が細分化された区画である。一般的には論理セグメント（５１０、５１５、５２０、５２５、５３０）は２の累乗形態に構成された多数のバイトを含むが、論理セグメント（５１０、５１５、５２０、５２５、５３０）は何らかの所望されるサイズ２１５であってもよい。
【００３１】
論理セグメント（５１０、５１５、５２０、５２５、５３０）のサイズ２１５と不揮発性メモリ１３０の総メモリ容量５０５との間には如何なる関係も要求されない。また、論理セグメント（５１０、５１５、５２０、５２５、５３０）のサイズ２１５と露出メモリ１５０のサイズ２０５との間にも如何なる関係も要求されない。しかし、仮に論理セグメント（５１０、５１５、５２０、５２５、５３０）のサイズ２１５があまりにも小さい場合、論理セグメント（５１０、５１５、５２０、５２５、５３０）の各々はメモリ要求に対して十分でないストレージを有することになる。
【００３２】
本発明の一実施形態として、図５は８ＧＢの不揮発性メモリ１３０の総メモリ容量５０５、１ＭＢの露出メモリ１５０のサイズ２０５、そして４ｋＢの論理セグメント（５１０、５１５、５２０、５２５、５３０）の各々のサイズ２１５を示す。しかし、本発明の他の実施形態は、不揮発性メモリ１３０の総メモリ容量５０５、露出メモリ１５０のサイズ２０５、そして論理セグメント（５１０、５１５、５２０、５２５、５３０）の各々のサイズ２１５の中で一部或いは全てに対してその他の値も支援する。図５、及び図８はいずれも露出メモリ１５０を不揮発性メモリ１３０の一部として図示しているが、露出メモリ１５０は不揮発性メモリ１３０と分離されて具現されてもよい。
【００３３】
図６は本発明の実施形態による図１のＮＶＤＩＭＭ内のメモリアドレスにアクセスするための要求をインターセプトし、要求されたメモリアドレスを事前にマッピングする図１の装置ドライバを示す図面である。図６を参照すると、アプリケーション又は他のプロセスはメモリアドレス６０５を生成する。メモリアドレス６０５は図１のＮＶＤＩＭＭ１０５内のメモリアドレスに該当する。
メモリアドレス６０５を図２の論理−物理変換２２５を実行するホストメモリコントローラ１１５が処理するように許用するよりも、装置ドライバ１６０はメモリアドレス６０５をインターセプトし、メモリアドレスを事前マッピングする。事前マッピングの結果は事前マッピングされたメモリアドレス６１０である。事前マッピングされたメモリアドレス６１０は中間アドレス（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ａｄｄｒｅｓｓ）とも称する。
【００３４】
続いて、装置ドライバ１６０は事前マッピングされたメモリアドレス６１０をホストメモリコントローラ１１５に提供する。ホストメモリコントローラ１１５は事前マッピングされたメモリアドレス６１０上の論理−物理変換２２５を実行する。該当結果はターゲットメモリアドレス６１５である。ターゲットメモリアドレス６１５は図１のＮＶＤＩＭＭ１０５が所望するメモリセルに格納した所の実際アドレスである。
【００３５】
図１に戻って、ホストシステム内で、すべてのＤＲＡＭサブシステム（Ｓｕｂ−Ｓｙｓｔｅｍ）のアドレス信号はＤＩＭＭソケットの各々に到達する。ＤＩＭＭソケットの各々はＮＶＤＩＭＭ１０５が装着されたＤＩＭＭソケット１２５を含む。アドレス分散をするため、装置ドライバ１６０は論理メモリセグメントに露出された正確なＮＶＤＩＭＭを探すために一部信号を使用する。たとえ，残った信号が図１のＮＶＤＩＭＭ１０５によって使用され得るとしても、残った信号の値はマッピングとは関係ない。上述したように、正確なマッピングはこれとは異なることがあり、論理セグメントサイズ２１５、及びホストメモリコントローラ動作モード２２０に依存する。
【００３６】
装置ドライバ１６０が事前マッピングを実行するように動作する方法の一例として、ＮＶＤＩＭＭ１０５が図５の８ＧＢの総メモリ容量５０５、図２の１ＭＢの露出メモリ１５０のサイズ２０５、そして図２の４ｋＢの論理セグメント（５１０、５１５、５２０、５２５、５３０）の各々のサイズ２１５を含むと仮定する。また、露出メモリ１５０がメモリ信号ライン１２０上で次の入力アドレスビット（ｒｏｗ［２：０］、ｃｏｌｕｍｎ［９：０］、ｂａ［１：０］、ｂｇ［１：０］、３’ｂ０００）とマッピングされると仮定する。上述の記載は容易に理解するためにヴェリログ（Ｖｅｒｉｌｏｇ）コード列で記述されただけで、マッピング方法が必ずハードウェア技術事項の文書として表現される必要はない。
【００３７】
例えば、仮にメモリコントローラ動作モード２２０がページオープンモードである場合、図１の論理−物理変換２２５は次の変換（ｒａｎｋ［１：０］、ｒｏｗ［１６：０］、ｂａ［１：０］、ｂｇ［１：０］、ｃｏｌｕｍｎ［９：０］、３‘ｈ０）にしたがってビットをマッピングする。また、装置ドライバ１６０は次のマッピング（１６’ｈｘｘｘｘ、ｒｏｗ［２：０］、ｂａ［１：０］、ｂｇ［１：０］、ｃｏｌｕｍｎ［９：０］、３’ｈ０）を利用してメモリアドレスを事前マッピングする。ここで、‘ｘ’は任意（‘Ｄｏｎ’ｔ  ｃａｒｅ’）を意味する値であり、‘ｘ’の代わりに結果に影響を及ぼさない任意の値であっても使用され得る。
【００３８】
一方、例えば、仮にメモリコントローラ動作モード２２０がページクローズモードである場合、図１の論理−物理変換２２５は次の変換（ｒａｎｋ［１：０］、ｃｏｌｕｍｎ［９：３］、ｒｏｗ［１６：０］、ｂａ［１：０］、ｂｇ［１：０］、ｃｏｌｕｍｎ［２：０］、３’ｈ０）にしたがってビットをマッピングする。また、装置ドライバ１６０は次のマッピング（２’ｈｘ、ｃｏｌｕｍｎ［９：３］、１４’ｈｘｘｘｘ、ｒｏｗ［２：０］、ｂａ［１：０］、ｂｇ［１：０］、ｃｏｌｕｍｎ［２：０］、３’ｈ０）を利用してメモリアドレスを事前マッピングする。また、ここで‘ｘ’は‘Ｄｏｎ’ｔ  ｃａｒｅ’を意味する値である。
【００３９】
上述した事前マッピングの例は必然的に現実的なマッピングであるというより、構成のみである。各々のグループ内のアドレスビットはＤＲＡＭ技術仕様として使用され、相対的にシステムアドレスに対する例示的な内訳（Ｂｒｅａｋｄｏｗｎ）として選択される。例えば、ＤＲＡＭ技術仕様はロウ（Ｒｏｗ）ビットの数、カラム（Ｃｏｌｕｍｎ）ビットの数、バンクビットの数、そしてバンクグループビットの数を含む。但し、現実のメモリコントローラに対する事前マッピングは類似な方法で実行される。
【００４０】
メモリ信号ライン１２０を通じて、ＮＶＤＩＭＭ１０５はＮＶＭｅを利用して動作する不揮発性メモリ装置より著しく速くホストプロセッサ１１０と通信する。これはメモリチャンネルの伝送速度は相対的にＰＣＩｅ接続より速いからである。しかし、ここには潜在的な問題が存在する。すべてのメモリマッピングされたＩ／Ｏの動作は非常に狭いアドレス範囲（例えば、図５で示すように１ＭＢ）でなされるため、ＮＶＤＩＭＭ１０５は潜在的にロウハンマ（Ｒｏｗ  Ｈａｍｍｅｒ）のようなＤＲＡＭＤＩＭＭ標準不足によって発生する深刻な性能制約にさらされる。
【００４１】
簡単に説明すると、特定メモリセルに反復的にアクセスが実行される場合、ロウハンマは付近の１つ又は１つ以上のメモリセルに変化を誘発して発生する。ロウハンマはＤＲＡＭ標準が最初に開発されたときＪＥＤＥＣ標準委員会に知られていなかった。ロウハンマ問題に対して、新しいＪＥＤＥＣ技術仕様はメモリコントローラ（例えば、図１のホストメモリコントローラ１１５）に同一のＤＲＡＭのロウアドレスにアクセスする周期を減少させて抑制（Ｔｈｒｏｔｔｌｅ）するようにした。これはターゲットロウリフレッシュ（Ｔａｒｇｅｔ  Ｒｏｗ  Ｒｅｆｒｅｓｈ）と呼ぶ。
【００４２】
ＤＲＡＭの特定ロウアドレスへのアクセスを遅くすることがロウハンマを防止する反面、アクセス周期を減少させることはメモリ動作を遅くする。また、図１のＮＶＤＩＭＭ１０５のようにロウハンマが問題とされないメモリが使用される場合、抑制（Ｔｈｒｏｔｔｌｉｎｇ）は必要としない。しかし、図１のＮＶＤＩＭＭ１０５はＪＥＤＥＣ技術仕様に準拠し、ホストプロセッサ１１０と正しくインターフェイスするために一般的なＤＩＭＭに見せるため、ホストメモリコントローラ１１５はロウハンマが問題にならないことを認識しない。
【００４３】
図１の露出メモリ１５０のアドレス範囲が狭いほど、図１のホストメモリコントローラ１１５がロウハンマを避けるために図１のＮＶＤＩＭＭ１０５への要求を抑制（Ｔｈｒｏｔｔｌｅ）する確率が増加する。したがって、ホストメモリコントローラ１１５が、ロウハンマが問題になると認識しないようにすることが必要である。
図１のホストメモリコントローラ１１５が、ロウハンマが問題になると認識しないようにする１つの方法はメモリアドレスが図１のメモリコントローラ１１５に到達する前にメモリアドレスをエイリアス（Ａｌｉａｓ）することである。図７を参照して、装置ドライバ１６０がエイリアスを使用する方法を説明する。
【００４４】
図７は本発明の実施形態によるアドレスエイリアスを実行する図１の装置ドライバを示す図面である。図７を参照すると、装置ドライバ１６０はメモリアドレス６０５を事前マッピングされたメモリアドレス６１０に事前マッピングする。しかし、事前マッピングの例として上述したように、事前マッピングは関連ない値を有するビットを含む。それらのビットには如何なる値も利用され得る。図１のホストメモリコントローラ１１５内の物理ロウビットにマッピングされた１つ又は１つ以上の‘Ｄｏｎ’ｔ  ｃａｒｅ’ビットを変更することによって、エイリアス（Ａｌｉａｓ）は図６のターゲットメモリアドレス６１５に対して生成される。したがって、例えば、事前マッピングメモリアドレスエイリアス７０５、７１０の各々は所望するメモリアドレスに対するエイリアスを代表するが、他のビットパターンを含む。特に、‘Ｄｏｎ’ｔ  ｃａｒｅ’ビット内の他のビットパターンを含む。
【００４５】
装置ドライバ１６０は‘Ｄｏｎ’ｔ  ｃａｒｅ’ビットを変更してエイリアスを生成するために望ましい如何なるテクニックも使用することができる。一実施形態として、装置ドライバ１６０は‘Ｄｏｎ’ｔ  ｃａｒｅ’ビットに対するランダム値（或いは、擬似ランダム（Ｐｓｅｕｄｏ−ｒａｎｄｏｍ）値）を生成する。他の実施形態として、装置ドライバ１６０は‘Ｄｏｎ’ｔ  ｃａｒｅ’ビットに対する順次的な値を生成することができる。他の実施形態は‘Ｄｏｎ’ｔ  ｃａｒｅ’ビットに対する値を生成する他の方法を含むことができる。
【００４６】
他の実施形態として、装置ドライバ１６０はアクセスされたメモリアドレスを追跡することができる。また、図１のホストメモリコントローラ１１５が図１のＮＶＤＩＭＭ１０５に対するアクセスを抑制（Ｔｈｒｏｔｔｌｅ）しようとする場合に、装置ドライバ１６０は‘Ｄｏｎ’ｔ  ｃａｒｅ’ビットのみを変更することができる。他の実施形態として、図１のホストメモリコントローラ１１５が図１のＮＶＤＩＭＭ１０５に対するアクセスを抑制（Ｔｈｒｏｔｔｌｅ）しようとすることと関係なく、装置ドライバ１６０の各々のメモリアクセスに‘Ｄｏｎ’ｔ  ｃａｒｅ’ビットの値を変更することができる。
図１のホストメモリコントローラ１１５が、ロウハンマが問題であると認識することを防止するための他の方法は図１の露出メモリ１５０を不連続的なメモリアドレスを有する論理セグメントにパーティション（Ｐａｒｔｉｔｉｏｎ）することである。
【００４７】
図８は本発明の他の実施形態による図１のＮＶＤＩＭＭのメモリ空間のレイアウトを例示的に示す図面である。図８は図１の露出メモリ１５０が不連続的なメモリアドレスを有する論理セグメントにパーティションされる方法を例示的に示す。図８を参照すると、図１の露出メモリ１５０はサイズ２０５の論理セグメントの一部のみを含む。サイズ２０５は図１の露出メモリ１５０の実際サイズより大きい。例えば、図１の露出メモリ１５０は論理セグメント８０５、８１０、８１５、８２０のみを含む。一方、サイズ２０５範囲内の論理セグメント８２５、８３０、８３５は図１の露出メモリ１５０の一部ではない。露出メモリ１５０内の論理セグメントに対するメモリアドレスが連続的ではないため、ロウハンマはそれ以上問題にならない。
【００４８】
図９は本発明の実施形態による図１のＮＶＤＩＭＭ、及び装置ドライバが図１のＮＶＤＩＭＭ内のメモリアドレスに対する要求を処理する方法を説明するためのフローチャートである。図９を参照すると、Ｓ９０５段階で、図１のＮＶＤＩＭＭ１０５は図１の露出メモリ１５０をホストコンピュータ（さらに、詳細には図１のホストメモリコントローラ１１５）に公開（Ｏｐｅｎ）する。
Ｓ９１０段階で、図１の装置ドライバ１６０は図１のホストメモリコントローラ１１５に伝送される予定である図１のメモリアドレス６０５にアクセスするための要求をインターセプトする。
【００４９】
Ｓ９１５段階で、図１の装置ドライバ１６０は図６のメモリアドレス６０５にアクセスするための要求を受信する。Ｓ９２０段階で、図１の装置ドライバ１６０は図６の事前マッピングされたメモリアドレス６１０を生成するために図６のメモリアドレス６０５を事前マッピングする。
【００５０】
Ｓ９２５段階で、メモリアドレス６０５の図７の事前マッピングされたメモリアドレスエイリアス（７０５、７１０）を生成するために、図１の装置ドライバ１６０は図６の事前マッピングされたメモリアドレス６１０内の１つ又は１つ以上のビットを変形する。図７を参照して上述したように、図６の事前マッピングされたメモリアドレス６１０の図７の事前マッピングされたメモリアドレスエイリアス（７０５、７１０）を生成することは選択的なことであり、したがってＳ９２５段階もまた選択的である。
Ｓ９３０段階で、結果的に図１の装置ドライバ１６０は事前マッピングされたメモリアドレスエイリアス（７０５、７１０）又は図６の事前マッピングされたメモリアドレス６１０を図１のホストメモリコントローラ１１５に伝送する。
【００５１】
図１０は本発明の実施形態による図１のＮＶＤＩＭＭが図１のホストコンピュータにメモリを露出させる方法を説明するためのフローチャートである。図１０を参照すると、Ｓ１００５段階で、図１のＮＶＤＩＭＭ１０５は図１の不揮発性メモリ１３０内の連続したメモリブロックを選択する。また、上述したように、図１の露出メモリ１５０は図１の不揮発性メモリ１３０とは別の所に格納される。図１の露出メモリ１５０が格納された所を変更することを除き、図１０のフローチャートはこのような状況でも変形すること無く使用される。
図１のＮＶＤＩＭＭ１０５は何らかの望ましい方式でメモリの連続的なブロックを選択する。例えば、図１のＮＶＤＩＭＭ１０５は基本アドレス‘０’から始まる連続的なブロック、図５の総メモリ容量５０５の上端で終わる連続的なブロック、或いは他の形態のメモリの連続的なブロックを選択する。
【００５２】
Ｓ１０１０段階で、図１のＮＶＤＩＭＭ１０５はメモリの連続したブロックを論理セグメントに分割する。例えば、論理セグメントは図５の論理セグメント（５１０、５１５、５２０、５２５、５３０）である。Ｓ１０１５段階で、図１のＮＶＤＩＭＭ１０５は図１の露出メモリ１５０のように論理セグメント（例えば、図５の論理セグメント（５１０、５１５、５２０、５２５、５３０））を露出させる。
【００５３】
Ｓ１０１５段階の代わりにＳ１０２０段階で、図１のＮＶＤＩＭＭ１０５は図１の不揮発性メモリ１３０内のメモリの不連続的なブロックを選択する。ブロックの各々は図２の同一のサイズ２１５を有する。Ｓ１００５段階のように、図１のＮＶＤＩＭＭ１０５は何らかの望ましい方式でメモリの不連続的なブロックを選択する。Ｓ１０２５段階で、図１のＮＶＤＩＭＭ１０５は不連続なメモリのブロックを論理セグメント（８０５、８１０、８１５、８２０）として露出させる。
【００５４】
図１０は図１のＮＶＤＩＭＭ１０５がメモリの不連続的なブロック又は連続的なブロックの中で１つを露出することとして提案しているが、他の実施形態は２つの変形を結合する。例えば、図１の不揮発性メモリ１３０の４つの大きい部分の各々は連続的なブロックに識別されることができ、各々の部分は図１のＮＶＤＩＭＭ１０５によって露出されることができる論理セグメントに分離される。
図９及び図１０を参照すると、１つの実施形態が図示される。しかし、当業者は上述した段階の順序を変更するか、一部段階を省略するか、或いは図面で図示されない連結を含んで他の実施形態が具現できることは容易に理解できる。明視的に説明されたか否かに関係無く、このようなフローチャートの変形は本発明の実施形態として看做される。
【００５５】
以下で、本発明の特定の実施形態が適用され得る適合なシステム又はシステムに対する簡略で、一般的な説明が提供される。システムは少なくとも部分的に既存の入力装置からの入力によって制御される。例えば、既存の入力装置はキーボード、マウスを含む。また、このような制御は他のマシンから受信されたガイドライン、ＶＲ（Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ）環境との相互作用、生体認識フィードバック、仮想マシン、又は他の入力信号によって実行される。
【００５６】
ここで、使用した‘システム’という用語は幅広く単一マシン或いはシステム、仮想マシン、又は通信結合マシンのシステム、仮想マシン、又は共に動作する装置を含む。例示的なシステムはパーソナル（Ｐｅｒｓｏｎａｌ）コンピュータ、ワークステーション、サーバー、ポータブル（Ｐｏｒｔａｂｌｅ）コンピュータ、携帯（Ｈａｎｄｈｅｌｄ）装置、携帯電話、タブレット等を含む。また、例示的なシステムは自動車、汽車、タクシーのような個人用又は公共交通等のような交通装置を含む。
システムは内蔵コントローラ等を含む。例えば、内蔵コントローラはプログラムが可能であるか、或いは不可能なロジック装置又はアレイ（Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）、内蔵コンピュータ、スマトカード等を含む。システムは１つ又は１つ以上の遠隔マシンとの１つ又は１つ以上の接続を使用することができる。例えば、このような接続はネットワークインターフェイス、モデム、又は他の擬似伝達接続を通じてなされる。
【００５７】
システムはイントラネット、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のような物理的及び／又は論理的ネットワーク方法によって相互設続される。当業者はネットワーク通信が多様な有線及び／又は無線近距離又は長距離キャリヤ、及びプロトコルを利用できることを容易に理解できる。例えば、キャリヤ及びプロトコルはＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）、衛星（Ｓａｔｅｌｌｉｔｅ）、マイクロウェーブ（Ｍｉｃｒｏｗａｖｅ）、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）８０２．１１、Ｂｌｕｅｔｏｏｔｈ（登録商標）、光学、赤外線、ケーブル、レーザー等を含む。
【００５８】
本発明の実施形態は機能、段階、データ構造、アプリケーションプログラムを含む関連データを参照して説明される。機能、段階、データ構造、アプリケーションプログラムはシステムによってアクセスされる場合にシステムがタスクを実行するか、或いは抽象的なデータタイプ又はローレベル（Ｌｏｗ−Ｌｅｖｅｌ）のハードウェアコンテキスト（Ｃｏｎｔｅｘｔ）を定義するようにする。例えば、上述した関連データはＲＡＭ、ＲＯＭのような揮発性及び／又は不揮発性メモリに格納される。また、関連データは他のストレージ装置及びそれらの関連ストレージ媒体に格納される。例えば、関連ストレージ媒体はハードディスクドライブ、フロッピー（登録商標）ディスク（Ｆｌｏｐｐｙ−Ｄｉｓｋｓ）、光学ストレージ（Ｏｐｔｉｃａｌ  Ｓｔｏｒａｇｅ）、テープ（Ｔａｐｅｓ）、フラッシュメモリ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）、メモリスティック（Ｍｅｍｏｒｙ  Ｓｔｉｃｋｓ）、デジタルビデオディスク（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｋｓ）、生体ストレージ（Ｂｉｏｌｏｇｉｃａｌ  Ｓｔｏｒａｇｅ）等を含む。
【００５９】
関連データはパケット、シリアル（Ｓｅｒｉａｌ）データ、パラレル（Ｐａｒａｌｌｅｌ）データ、電波信号等の形態に物理的及び／又は論理的ネットワークを含む通信環境を通じて伝送される。また、関連データは圧縮されるか、或いは暗号化された形態に利用される。関連データは分散環境で利用されることができ、システムアクセスに対して近くに及び／又は遠く格納される。
本発明の実施形態は類型の非一時的（Ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）のシステムリーダブル（Ｒｅａｄａｂｌｅ）媒体を含む。システムリーダブル媒体は１つ又は１つ以上のプロセッサによって実行される命令、ここで記述された本発明の要素を実行する命令で構成された命令を含む。
【００６０】
本発明の実施形態は制限無しで次の例示に拡張され得る。
第１例にしたがう本発明の実施形態は装置を含むことができる。
前記装置はＤＩＭＭソケットに装着されたＮＶＤＩＭＭ、そして
ホストプロセッサ上で動作する装置ドライバを含み、
ＮＶＤＩＭＭはメモリ及び露出メモリを含み、露出メモリは露出メモリの第１サイズ及び露出メモリの基本アドレスを含み、
装置ドライバはホストメモリコントローラに伝送されるメモリアドレスをインターセプトし、メモリアドレスを事前マッピングされたメモリアドレスに変換するように動作し、
事前マッピングされたメモリアドレスはメモリアドレスとは異なる装置である。
【００６１】
第２例は第１例にしたがう装置を含む。ＮＶＤＩＭＭはＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｅｖｉｃｅ）を含む。
第３例は第１例にしたがう装置を含む。事前マッピングされたメモリアドレスはホストメモリコントローラがターゲットメモリアドレスをＮＶＤＩＭＭに伝送するように設計され、ターゲットメモリアドレスはメモリアドレスに格納された値の物理的位置を示す。
第４例は第３例にしたがう装置を含む。装置ドライバはＮＶＤＩＭＭ内の露出メモリの第１サイズ、ＮＶＤＩＭＭ内の露出メモリの基本アドレス、ＮＶＤＩＭＭ内の露出メモリの論理セグメントの第２サイズ、及びホストメモリコントローラのメモリコントローラ動作モードに基づいてメモリアドレスから事前マッピングされたメモリアドレスを生成するように動作する。
【００６２】
第５例は第４例にしたがう装置を含む。装置ドライバはホストメモリコントローラによるメモリアドレスの論理−物理変換に基づいてメモリアドレスから事前マッピングされたメモリアドレスを生成するように動作する。
第６例は第３例にしたがう装置を含む。ターゲットメモリアドレスはメモリアドレスである。
第７例は第３例にしたがう装置を含む。ターゲットメモリアドレスはメモリアドレスのエイリアス（Ａｌｉａｓ）である。
【００６３】
第８例は第７例にしたがう装置を含む。事前マッピングされたメモリアドレスはメモリアドレスに対する少なくとも１つの変更されたビットを含む。少なくとも１つの変更されたビットはＮＶＤＩＭＭによって使用されない。
第９例は第３例にしたがう装置を含む。ＮＶＤＩＭＭの露出メモリはＮＶＤＩＭＭのメモリ内の不連続的な論理セグメントに分割される。
第１０例は第３例にしたがう装置を含む。露出メモリはメモリの集合である。
【００６４】
第１１例にしたがう本発明の実施形態は方法を含む。方法は
ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階、
メモリアドレスを中間アドレスに事前マッピングする段階、
中間アドレスをホストメモリコントローラに伝送する段階を含み、
ＮＶＤＩＭＭはメモリ及び露出メモリを含み、露出メモリは露出メモリの第１サイズ及び露出メモリの基本アドレスを含み、
中間アドレスはメモリアドレスと異なり、
ホストメモリコントローラはターゲットメモリアドレスをＮＶＤＩＭＭに伝送し、ターゲットメモリアドレスはメモリアドレスに格納された値の物理的位置を意味する方法である。
【００６５】
第１２例は第１１例による方法を含む。ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階はホストメモリコントローラに要求が到着する前に、メモリアドレスにアクセスするための要求をホストプロセッサでホストメモリコントローラにインターセプトする段階を含む。
第１３例は第１１例による方法を含む。ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階はＳＳＤのメモリアドレスにアクセスするための要求を受信する段階を含む。
【００６６】
第１４例は第１１例にしたがう方法を含む。メモリアドレスを中間アドレスに事前マッピングする段階はＮＶＤＩＭＭ内の露出メモリの第１サイズ、ＮＶＤＩＭＭ内の露出メモリの基本アドレス、ＮＶＤＩＭＭ内の露出メモリの論理セグメントの第２サイズ、そしてホストメモリコントローラのメモリコントローラ動作モードに基づいてメモリアドレスを中間アドレスに事前マッピングする段階を含む。
第１５例は第１４例にしたがう方法を含む。メモリアドレスを中間アドレスに事前マッピングする段階はＮＶＤＩＭＭ内の露出メモリの第１サイズ、ＮＶＤＩＭＭ内の露出メモリの基本アドレス、ＮＶＤＩＭＭ内の露出メモリの論理セグメントの第２サイズ、ホストメモリコントローラのメモリコントローラ動作モード、そしてホストメモリコントローラによって使用される論理−物理変換に基づいてメモリアドレスを中間アドレスに事前マッピングする段階を含む。
【００６７】
第１６例は第１１例にしたがう方法を含む。ホストメモリコントローラはＮＶＤＩＭＭにメモリアドレスを伝送する。
第１７例は第１１例にしたがう方法を含む。メモリアドレスを中間アドレスに事前マッピングする段階はメモリアドレスのエイリアスをメモリアドレスに事前マッピングする段階を含む。
第１８例は第１１例にしたがう方法を含む。メモリアドレスを中間アドレスに事前マッピングする段階はメモリアドレスに対して中間アドレス内の少なくとも１つのビットを変更する段階を含む。少なくとも１つの変更されたビットはＮＶＤＩＭＭによって使用されない。
【００６８】
第１９例は第１１例にしたがう方法を含む。方法はホストメモリコントローラに露出メモリを露出する段階をさらに含む。
第２０例は第１９例にしたがう方法を含む。ホストメモリコントローラに露出メモリを露出する段階は、
第１サイズを有するメモリの連続されたブロックを確認する段階、
メモリの連続されたブロックを論理セグメントに分割する段階、そして
論理セグメントをホストメモリコントローラに露出する段階を含み、
論理セグメントの各々は第２サイズを有する。
【００６９】
第２１例は第１９例にしたがう方法を含む。ホストメモリコントローラに露出メモリを露出する段階は、
メモリの不連続的なブロックのセットを探す段階、そして
メモリの不連続的なブロックをホストメモリコントローラに論理セグメントとして露出する段階を含む。
【００７０】
第２２例にしたがう本発明の実施形態は類型のストレージ媒体を含む装置を含む。類型のストレージ媒体はシステムによって実行される場合、そこに格納された非一時的な命令を有する。非一時的な命令はシステムによって実行される時、
ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階、
メモリアドレスを中間アドレスに事前マッピングする段階、
中間アドレスをホストメモリコントローラに伝送する段階を実行し、
ＮＶＤＩＭＭはメモリ及び露出メモリを含み、露出メモリは露出メモリの第１サイズ及び露出メモリの基本アドレスを含み、
中間アドレスはメモリアドレスと異なり、
ホストメモリコントローラはターゲットメモリアドレスをＮＶＤＩＭＭに伝送し、ターゲットメモリアドレスはメモリアドレスに格納された値の物理的位置を意味する。
【００７１】
第２３例は第２２例による装置を含む。ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階はホストメモリコントローラに要求が到着する前に、メモリアドレスにアクセスするための要求をホストプロセッサでホストメモリコントローラにインターセプトする段階を含む。
第２４例は第２２例にしたがう装置を含む。ＮＶＤＩＭＭのメモリアドレスに対してアクセスするための要求を受信する段階はＳＳＤのメモリアドレスにアクセスするための要求を受信する段階を含む。
【００７２】
第２５例は第２２例にしたがう装置を含む。メモリアドレスを中間アドレスに事前マッピングする段階はＮＶＤＩＭＭ内の露出メモリの第１サイズ、ＮＶＤＩＭＭ内の露出メモリの基本アドレス、ＮＶＤＩＭＭ内の露出メモリの論理セグメントの第２サイズ、そしてホストメモリコントローラのメモリコントローラ動作モードに基づいてメモリアドレスを中間アドレスに事前マッピングする段階を含む。
第２６例は第２５例にしたがう装置を含む。メモリアドレスを中間アドレスに事前マッピングする段階はＮＶＤＩＭＭ内の露出メモリの第１サイズ、ＮＶＤＩＭＭ内の露出メモリの基本アドレス、ＮＶＤＩＭＭ内の露出メモリの論理セグメントの第２サイズ、ホストメモリコントローラのメモリコントローラ動作モード、そしてホストメモリコントローラによって使用される論理−物理変換に基づいてメモリアドレスを中間アドレスに事前マッピングする段階を含む。
【００７３】
第２７例は第２２例にしたがう装置を含む。ホストメモリコントローラはＮＶＤＩＭＭにメモリアドレスを伝送する。
第２８例は第２２例にしたがう装置を含む。メモリアドレスを中間アドレスに事前マッピングする段階はメモリアドレスのエイリアスをメモリアドレスに事前マッピングする段階を含む。
第２９例は第２２例にしたがう装置を含む。メモリアドレスを中間アドレスに事前マッピングする段階はメモリアドレスに対して中間アドレス内の少なくとも１つのビットを変更する段階を含む。少なくとも１つの変更されたビットはＮＶＤＩＭＭによって使用されない。
【００７４】
第３０例は第２２例にしたがう装置を含む。非一時的な命令はホストメモリコントローラに露出メモリを露出する段階をさらに実行する。
第３１例は第３０例にしたがう装置を含む。ホストメモリコントローラに露出メモリを露出する段階は、
第１サイズを有するメモリの連続されたブロックを確認する段階、
メモリの連続されたブロックを論理セグメントに分割する段階、そして
論理セグメントをホストメモリコントローラに露出する段階を含み、
論理セグメントの各々は第２サイズを有する。
第３２例は第３０例にしたがう装置を含む。ホストメモリコントローラに露出メモリを露出する段階は、
メモリの不連続的なブロックのセットを探す段階、そして
メモリの不連続的なブロックをホストメモリコントローラに論理セグメントとして露出する段階を含む。
【００７５】
以上のように図面と明細書で最適の実施形態を開示した。ここで、特定な用語を使用したが、これは単に本発明を説明するための目的で使用したものであり、意味の限定や特許請求範囲に記載された本発明の範囲を制限するために使用したものではない。したがって、本技術分野の通常の知識を有する者であれば、これからの多様な変形及び均等な他の実施形態が可能である点を理解できる。したがって、本発明の真正なる技術的な保護範囲は添付された特許請求範囲の技術的思想によって定められなければならない。
【符号の説明】
【００７６】
１０５    ＮＶＤＩＭＭ
１１０    ホストプロセッサ
１１５    ホストメモリコントローラ
１２０    メモリ信号ライン
１２５    ＤＩＭＭソケット
１３０    不揮発性メモリ
１３５    ホストインターフェイスロジック
１４０    プロセシング及びコントロールロジック
１４５    内蔵ＤＲＡＭ
１５０    露出メモリ
１５５    ＤＲＡＭＤＩＭＭ
１６０    装置ドライバ
３０５    コンピュータシステム
３１０    コンピュータ
３１５    モニタ
３２０    キーボード
３２５    マウス
４０５    クロック
４１０    ストレージ装置
４１５    ネットワークコネクタ
４２０    バス
４２５    ユーザーインターフェイス
４３０    Ｉ／Ｏエンジン
４３５    メモリ
【図１】
0006799427.tif 000002
【図２】
0006799427.tif 000003
【図３】
0006799427.tif 000004
【図４】
0006799427.tif 000005
【図５】
0006799427.tif 000006
【図６】
0006799427.tif 000007
【図７】
0006799427.tif 000008
【図８】
0006799427.tif 000009
【図９】
0006799427.tif 000010
【図１０】
0006799427.tif 000011