(57)【特許請求の範囲】
【請求項１】
メモリデバイスであって、
複数のＮＡＮＤフラッシュチップを含み、前記複数のＮＡＮＤフラッシュチップの各々はメモリセクションを含み、各メモリセクションは複数のページを含み、各ＮＡＮＤフラッシュチップは第１のストレージキャパシティを有し、
前記メモリデバイスはさらに、前記複数のＮＡＮＤフラッシュチップとデータ通信を行うダイナミックランダムアクセスメモリ（ＤＲＡＭ）部を含み、前記ＤＲＡＭ部は、前記複数のＮＡＮＤフラッシュチップの各々の前記第１のストレージキャパシティと少なくとも同じ大きさの第２のストレージキャパシティを有し、前記ＤＲＡＭ部は、前記複数のＮＡＮＤフラッシュチップをスワップ空間として利用し、
前記メモリデバイスはさらに少なくとも１つのコントローラを含み、
前記少なくとも１つのコントローラは、
データを書き込むために、現在選択されているＮＡＮＤフラッシュチップとして前記複数のＮＡＮＤフラッシュチップのうちの１つを選択することと、
前記現在選択されているＮＡＮＤフラッシュチップにおけるすべての有効なページを前記ＤＲＡＭ部へコピーすることと、
前記ＮＡＮＤフラッシュチップのうちの１つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、前記特定の物理的位置を含む特定のページへの書込のために、前記現在選択されているＮＡＮＤフラッシュチップを割り当てることとを行うように構成される、メモリデバイス。
【請求項２】
前記少なくとも１つのコントローラは、
前記現在選択されているＮＡＮＤフラッシュチップが満杯であると識別された後、データを書き込むために、キューに登録されているＮＡＮＤフラッシュチップとして、前記複数のＮＡＮＤフラッシュチップのうちの別のものを選択することと、
前記キューに登録されているＮＡＮＤフラッシュチップにおけるすべての有効なページを前記ＤＲＡＭ部へコピーすることとを行うように構成される、請求項１に記載のメモリデバイス。
【請求項３】
前記複数のＮＡＮＤフラッシュチップのうちの前記別のものは、前記複数のＮＡＮＤフラッシュチップのうち最も少ない数の有効なページを有していることに基づいて、キューに登録されているＮＡＮＤフラッシュチップとして選択される、請求項２に記載のメモリデバイス。
【請求項４】
前記現在選択されているＮＡＮＤフラッシュチップへデータを書き込むべき前記特定の物理的位置は、（ｉ）最もアクセスされていないページおよび（ｉｉ）最も長く用いられていないページのうちの少なくとも１つに基づいて決定される、請求項１〜３のいずれか１項に記載のメモリデバイス。
【請求項５】
前記メモリセクションは、前記それぞれのＮＡＮＤフラッシュチップのパーティションを含み、パーティションは、同じそれぞれのＮＡＮＤフラッシュチップの別のパーティションにおける書込動作の間、前記それぞれのＮＡＮＤフラッシュチップの第１のパーティションにおける読出の動作を可能にする、請求項１〜４のいずれか１項に記載のメモリデバイス。
【請求項６】
前記メモリセクションはそれぞれの構成要素であるＮＡＮＤフラッシュチップを含む、請求項１〜５のいずれか１項に記載のメモリデバイス。
【請求項７】
前記複数のＮＡＮＤフラッシュチップは、入出力（Ｉ／Ｏ）バスに結合されたモジュールの部分であり、前記モジュールはさらに前記ＤＲＡＭ部を含み、前記ＤＲＡＭ部の前記第２のストレージキャパシティは、各ＮＡＮＤフラッシュチップの前記第１のストレージキャパシティの約２倍のサイズである、請求項１〜６のいずれか１項に記載のメモリデバイス。
【請求項８】
前記複数のＮＡＮＤフラッシュチップは入出力（Ｉ／Ｏ）バスに結合され、前記ＤＲＡＭ部は、ＤＲＡＭを含むメインメモリの部分である、請求項１〜６のいずれか１項に記載のメモリデバイス。
【請求項９】
前記複数のＮＡＮＤフラッシュチップおよび前記ＤＲＡＭ部は、メモリバスに結合されたモジュールの部分であり、前記ＤＲＡＭ部の前記第２のストレージキャパシティは、各ＮＡＮＤフラッシュチップの前記第１のストレージキャパシティの２倍と少なくとも同じ大きさである、請求項１〜６のいずれか１項に記載のメモリデバイス。
【請求項１０】
前記少なくとも１つのコントローラは、
前記複数のＮＡＮＤフラッシュチップに格納された特定のページにアクセスする要求に応答して、前記特定のページを前記複数のＮＡＮＤフラッシュチップからＤＲＡＭを含むメインメモリに読み込むように構成される、請求項１〜９のいずれか１項に記載のメモリデバイス。
【請求項１１】
方法であって、
データを書き込むために、現在選択されているＮＡＮＤフラッシュチップとして、複数のＮＡＮＤフラッシュチップのうちの１つを選択することを含み、前記複数のＮＡＮＤフラッシュチップの各々はメモリセクションを含み、各メモリセクションは複数のページを含み、各ＮＡＮＤフラッシュチップは第１のストレージキャパシティを有し、
前記方法はさらに、前記現在選択されているＮＡＮＤフラッシュチップにおけるすべての有効なページを、前記ＮＡＮＤフラッシュチップとデータ通信を行うダイナミックランダムアクセスメモリ（ＤＲＡＭ）部へコピーすることを含み、前記ＤＲＡＭ部は、前記複数のＮＡＮＤフラッシュチップの各々の前記第１のストレージキャパシティと少なくとも同じ大きさの第２のストレージキャパシティを有し、前記ＤＲＡＭ部は、前記複数のＮＡＮＤフラッシュチップをスワップ空間として利用し、
前記方法はさらに、前記ＮＡＮＤフラッシュチップのうちの１つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、前記特定の物理的位置を含む特定のページへの書込のために、前記現在選択されているＮＡＮＤフラッシュチップを割り当てることを含む、方法。
【請求項１２】
前記現在選択されているＮＡＮＤフラッシュチップが満杯であると識別された後、データを書き込むために、キューに登録されているＮＡＮＤフラッシュチップとして、前記複数のＮＡＮＤフラッシュチップのうちの別のものを選択することと、
前記キューに登録されているＮＡＮＤフラッシュチップにおけるすべての有効なページを前記ＤＲＡＭ部へコピーすることとをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記複数のＮＡＮＤフラッシュチップのうちの前記別のものは、前記複数のＮＡＮＤフラッシュチップのうち最も少ない数の有効なページを有していることに基づいて、キューに登録されているＮＡＮＤフラッシュチップとして選択される、請求項１２に記載の方法。
【請求項１４】
前記現在選択されているＮＡＮＤフラッシュチップへデータを書き込むべき前記特定の物理的位置は、（ｉ）最もアクセスされていないページおよび（ｉｉ）最も長く用いられていないページのうちの少なくとも１つに基づいて決定される、請求項１１〜１３のいずれか１項に記載の方法。
【請求項１５】
前記メモリセクションは、前記それぞれのＮＡＮＤフラッシュチップのパーティションを含み、パーティションは、同じそれぞれのＮＡＮＤフラッシュチップの別のパーティションにおける書込動作の間、前記それぞれのＮＡＮＤフラッシュチップの第１のパーティションにおける読出の動作を可能にする、請求項１１〜１４のいずれか１項に記載の方法。
【請求項１６】
前記メモリセクションはそれぞれの構成要素であるＮＡＮＤフラッシュチップを含む、請求項１１〜１５のいずれか１項に記載の方法。
【請求項１７】
前記複数のＮＡＮＤフラッシュチップは、入出力（Ｉ／Ｏ）バスに結合されたモジュールの部分であり、前記モジュールはさらに前記ＤＲＡＭ部を含み、前記ＤＲＡＭ部の前記第２のストレージキャパシティは、各ＮＡＮＤフラッシュチップの前記第１のストレージキャパシティの約２倍のサイズである、請求項１１〜１６のいずれか１項に記載の方法。
【請求項１８】
前記複数のＮＡＮＤフラッシュチップは入出力（Ｉ／Ｏ）バスに結合され、前記ＤＲＡＭ部はＤＲＡＭを含むメインメモリの部分である、請求項１１〜１６のいずれか１項に記載の方法。
【請求項１９】
前記複数のＮＡＮＤフラッシュチップおよび前記ＤＲＡＭ部はモジュールの部分であり、前記ＤＲＡＭ部の前記第２のストレージキャパシティは、各ＮＡＮＤフラッシュチップの前記第１のストレージキャパシティの２倍と少なくとも同じ大きさである、請求項１１〜１６のいずれか１項に記載の方法。
【請求項２０】
前記複数のＮＡＮＤフラッシュチップに格納された特定のページにアクセスする要求に応答して、前記特定のページを前記複数のＮＡＮＤフラッシュチップからＤＲＡＭを含むメインメモリに読み込むことをさらに含む、請求項１１〜１９のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
分野
本明細書は一般にメモリシステムに関する。
【背景技術】
【０００２】
背景
さまざまなコンピュータおよび同様のシステムのために、さまざまなメモリデバイスがデータおよび命令を維持および格納するように使用され得る。従来のコンピューティングシステムにおいて、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）技術は、アプリケーションが高速に動作するためにコンピュータのダイナミックメモリを動作するために典型的に使用されている。しかしながら、コンピュータシステムにおいてメインメモリとして使用されるＤＲＡＭは、もはや過去においてほど急速にスケール（scaling）していない。結果として、ＤＲＡＭストレージはコンピューティング環境における制限されたリソースになっている。
【０００３】
制限されたＤＲＡＭに対処するために、頻繁には使用されないメモリデータをＤＲＡＭからディスクドライブにコピーするようディスクドライブがスワップ空間として使用され得る。当該データは、次に使用される際に、ＤＲＡＭに戻るようにコピーされ得る。しかしながら、一般に、そのプロセスは厳しい性能結果を有する。したがって、そのプロセスは、現代のサーバにおいてめったに使用されない。それらの性能結果に対処するために、ＮＡＮＤフラッシュベースのソリッドステートドライブ（ＳＳＤ： solid-state drive）がスワップ空間として使用され得る。しかしながら、ＮＡＮＤフラッシュベースのＳＳＤの使用も、性能に望ましくない影響を及ぼし得る。たとえば、フラッシュベースのメモリは、データについての書込時間が遅いことと、メインメモリのために完全にＤＲＡＭを使用する従来のシステムにおけるような個々のアドレスの代わりに全セクターを更新する必要があることに関連付けられるレイテンシーとを含む、ある制限を有する。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
この明細書に記載される主題の革新的な１つの局面は、複数のＮＡＮＤフラッシュチップと、ＮＡＮＤフラッシュチップとデータ通信を行うダイナミックランダムアクセスメモリ（ＤＲＡＭ）部と、コントローラとを含む、メモリデバイスにおいて具現化される。複数のＮＡＮＤフラッシュチップの各々はメモリセクションを含み、各メモリセクションは複数のページを含み、各ＮＡＮＤフラッシュチップは第１のストレージキャパシティを有する。ＤＲＡＭ部は、複数のＮＡＮＤフラッシュチップの各々の第１のストレージキャパシティと少なくとも同じ大きさの第２のストレージキャパシティを有する。コントローラは、データを書き込むために、現在選択されているＮＡＮＤフラッシュチップとして、ＮＡＮＤフラッシュチップのうちの１つを選択することと、現在選択されているＮＡＮＤフラッシュチップにおけるすべての有効なページをＤＲＡＭ部へコピーすることとを行うように構成される。コントローラはさらに、ＮＡＮＤフラッシュチップのうちの１つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、その特定の物理的位置を含む特定のページへの書込のために、現在選択されているＮＡＮＤフラッシュチップを割り当てることを行うように構成される。
【０００５】
ある実現例において、コントローラは、現在選択されているＮＡＮＤフラッシュチップが満杯（full）であると識別された後、データを書き込むために、キューに登録されているＮＡＮＤフラッシュチップとして、複数のＮＡＮＤフラッシュチップのうちの別のものを選択することと、キューに登録されているＮＡＮＤフラッシュチップにおけるすべての有効なページをＤＲＡＭ部へコピーすることとを行うように構成される。ある実現例において、コントローラは複数のＮＡＮＤフラッシュチップに格納される特定のページにアクセスする要求に応答して、その特定のページを複数のＮＡＮＤフラッシュチップからＤＲＡＭを含むメインメモリに読み込むように構成される。
【０００６】
この明細書に記載される主題の革新的な１つの局面は、方法において具現化される。上記方法は、データを書き込むために、現在選択されているＮＡＮＤフラッシュチップとして、複数のＮＡＮＤフラッシュチップのうちの１つを選択するアクションを含み、各ＮＡＮＤフラッシュチップは第１のストレージキャパシティを有し、かつ、メモリセクションを含んでおり、各メモリセクションは複数のページを含み、上記方法はさらに、現在選択されているＮＡＮＤフラッシュチップにおけるすべての有効なページを、ＮＡＮＤフラッシュチップとデータ通信を行うダイナミックランダムアクセスメモリ（ＤＲＡＭ）部へコピーするアクションを含み、ＤＲＡＭ部は、複数のＮＡＮＤフラッシュチップの各々の第１のストレージキャパシティと少なくとも同じ大きさの第２のストレージキャパシティを有し、上記方法はさらに、ＮＡＮＤフラッシュチップのうちの１つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、その特定の物理的位置を含む特定のページへの書込のために、現在選択されているＮＡＮＤフラッシュチップを割り当てるアクションを含む。
【０００７】
一般に、この明細書に記載される主題の別の局面は、方法において具現化される。上記方法は、現在選択されているＮＡＮＤフラッシュチップが満杯であると識別された後、データを書き込むために、キューに登録されているＮＡＮＤフラッシュチップとして、複数のＮＡＮＤフラッシュチップのうちの別のものを選択するアクションと、キューに登録されているＮＡＮＤフラッシュチップにおけるすべての有効なページをＤＲＡＭ部へコピーするアクションとを含む。
【０００８】
この明細書に記載される主題の別の局面は、方法において具現化され得る。上記方法は、複数のＮＡＮＤフラッシュチップに格納される特定のページにアクセスする要求に応答して、特定のページを複数のＮＡＮＤフラッシュチップからＤＲＡＭを含むメインメモリに読み出すアクションを含む。
【０００９】
これらの局面の他の実施形態は、対応するシステム、装置、および、コンピュータストレージデバイス上でエンコードされる、上記方法のアクションを実行するように構成されるコンピュータプログラムを含む。
【００１０】
これらおよび他の実現例は各々、随意に以下の特徴の１つ以上を含み得る。たとえば、複数のＮＡＮＤフラッシュチップのうちの別のものは、複数のＮＡＮＤフラッシュチップのうち最も少ない数の有効なページを有していることに基づいて、キューに登録されているＮＡＮＤフラッシュチップとして選択される。ある実現例では、現在選択されているＮＡＮＤフラッシュチップへデータを書き込むべき特定の物理的位置は、（ｉ）最もアクセスされていないページおよび（ｉｉ）最も長く用いられていない（least recently used）ページのうちの少なくとも１つに基づいて決定される。
【００１１】
ある実現例では、メモリセクションは、それぞれのＮＡＮＤフラッシュチップのパーティションを含み、パーティションは、同じＮＡＮＤフラッシュチップの別のパーティションにおける書込動作の間、それぞれのＮＡＮＤフラッシュチップの第１のパーティションにおける読出の動作を可能にする。ある実現例において、メモリセクションはそれぞれの構成要素であるＮＡＮＤフラッシュチップを含む。
【００１２】
ある実現例において、各ＮＡＮＤフラッシュチップは複数のパーティションを含んでおり、各パーティションは特定のストレージキャパシティを有し、ＤＲＡＭ部の第２のストレージキャパシティは、各パーティションの特定のストレージキャパシティと少なくとも同じ大きさである。ある実現例において、各ＮＡＮＤフラッシュチップは、複数のパーティションを含み、各パーティションは特定のストレージキャパシティを有し、ＤＲＡＭ部の第２のストレージキャパシティは、各パーティションの特定のストレージキャパシティのサイズとほぼ等しいか、または、ほぼ２倍であるかのいずれかである。
【００１３】
ある実現例において、複数のＮＡＮＤフラッシュチップは、入出力（Ｉ／Ｏ）バスに結合されたモジュールの部分であり、モジュールはさらにＤＲＡＭ部を含み、ＤＲＡＭ部の第２のストレージキャパシティは、各ＮＡＮＤフラッシュチップの第１のストレージキャパシティの約２倍のサイズである。ある実現例において、複数のＮＡＮＤフラッシュチップは入出力（Ｉ／Ｏ）バスに結合され、ＤＲＡＭ部はＤＲＡＭを含むメインメモリの部分である。ある実現例において、複数のＮＡＮＤフラッシュチップおよびＤＲＡＭ部はモジュールの一部であり、ＤＲＡＭ部の第２のストレージキャパシティは、各ＮＡＮＤフラッシュチップの第１のストレージキャパシティの２倍と少なくとも同じ大きさである。
【００１４】
本発明の１つ以上の実施形態の詳細は、添付の図面および以下の説明において記載される。本発明の他の特徴および利点は、説明、図および請求の範囲から明白になるであろう。
【図面の簡単な説明】
【００１５】
【図１】本開示の実現例に従ったメモリデバイスを含むシステムの例を示す図である。
【図２Ａ】本開示の実現例に従ったメモリデバイスを含むシステムの例を示す図である。
【図２Ｂ】本開示の実現例に従ったメモリデバイスを含むシステムの例を示す図である。
【図２Ｃ】本開示の実現例に従ったメモリデバイスを含むシステムの例を示す図である。
【図３】本開示の実現例に従ったＮＡＮＤフラッシュモジュールの例を示す図である。
【図４】本開示の実現例に従った方法のための例示的なフローチャートを示す図である。
【発明を実施するための形態】
【００１６】
さまざまな図における同様の参照番号および指定は同様の要素を示す。
詳細な説明
以下に記載されるメモリシステムは、ＤＲＡＭの部分とのデータ通信を行うＮＡＮＤフラッシュチップを含む。各ＮＡＮＤフラッシュチップは、複数のページを有するメモリセクションを規定しており、各ＮＡＮＤフラッシュチップは第１のストレージキャパシティを有する。ＤＲＡＭ部はＮＡＮＤフラッシュチップとデータ通信を行う。ＤＲＡＭ部は、ＮＡＮＤフラッシュチップの各々の第１のストレージキャパシティと少なくとも同じ大きさの第２のストレージキャパシティを有する。
【００１７】
メモリシステムはさらにコントローラを含む。当該コントローラは、ＮＡＮＤフラッシュチップのうちの１つを、データを書き込むために、現在選択されているＮＡＮＤフラッシュチップとして選択し、次いで、現在選択されているＮＡＮＤフラッシュチップにおけるすべての有効なページをＤＲＡＭ部へコピーするように構成される。
【００１８】
ＮＡＮＤフラッシュチップのうちの１つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、コントローラは、当該特定の物理的位置を含む特定のページへの書込のために、現在選択されているＮＡＮＤフラッシュチップを割り当てる。
【００１９】
ある実現例では、ページは、メインメモリ（たとえばＤＲＡＭ）から除去され、最もアクセスされていないページ、最も長く用いられていない（least recently used）ページなど、または、その任意の組合せといったあるメトリックに基づいてＮＡＮＤフラッシュチップに書き込まれるように選択され得る。
【００２０】
これらのメモリシステムは単一のパッケージ化されたデバイスに含まれてもよく、または、コンピュータデバイス内に分散されてもよい。図１〜図２Ｃは、異なる変形例においてメモリシステムがどのように実現され得るかについての例示的な図である。
【００２１】
図１は、本開示の実現例に従ったメモリデバイスを含むシステム１００の例を示す。システム１００は、中央処理装置（ＣＰＵ）１１０のようなプロセッサと、ＤＲＡＭ部１２０と、入出力（Ｉ／Ｏ）バス１３０と、ハードディスクドライブ（ＨＤＤ）のようなディスクドライブ１４０と、ＮＡＮＤフラッシュチップ部１５０とを含み得る。Ｉ／Ｏバス１３０は、入出力デバイスがＣＰＵ１１０と通信するために使用される経路であり得る。Ｉ／Ｏバスはたとえばペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ： Peripheral Component Interconnect Express）であり得る。ディスクドライブ１４０はデータの長期ストレージのために使用され得る。
【００２２】
システム１００は、コンピューティングデバイスのような電子デバイスにおいて具現化され得る。ＤＲＡＭ部１２０はメインメモリであり得、ＣＰＵ１１０に直接的にアクセス可能であり得る。メインメモリは、たとえば所望の位置のメモリアドレスを伝達するアドレスバスと、データを読み出すかまたは書き込むために使用されるデータバスとを用いて、プロセッサ（たとえばＣＰＵ１１０）に接続する１次ストレージであり得る。
【００２３】
スワップ空間デバイスとしてフラッシュメモリを使用する場合、フラッシュメモリへの書込には、消去動作が必要とされ、その後にプログラム動作が行われる。それらの動作は典型的に読出動作よりはるかに遅く、それらの動作が発生している間、読出動作がブロックされる。したがって、読出の平均およびテールレイテンシー（tail latency）は不利益に増加され得る。
【００２４】
前述の段落に記載された問題に対処するために、任意の所与の時間において、１つのＮＡＮＤフラッシュチップが書込のために選択され得る。選択されたＮＡＮＤフラッシュチップにおけるすべての有効なページは、そのＮＡＮＤフラッシュチップから読み出す必要がないようにＤＲＡＭ部に読み込まれ得る。むしろ、読出は、選択されたＮＡＮＤフラッシュチップにおける有効なページが読み込まれたＤＲＡＭ部から発生し得る。すべての新しい書込は、選択されたＮＡＮＤフラッシュチップに対してなされ得る。
【００２５】
さらに、いくつかの実現例において、別のＮＡＮＤフラッシュチップが、次に書き込むためにキューに登録され得る。第２のＮＡＮＤフラッシュチップがキューに登録されているＮＡＮＤフラッシュチップとして選択されている場合、選択されているＮＡＮＤフラッシュチップおよびキューに登録されているＮＡＮＤフラッシュチップの両方におけるすべての有効なページは、それらの２つのＮＡＮＤフラッシュチップから読み出す必要がないように、ＤＲＡＭ部に読み込まれ得る。すべての新しい書込は、第１の選択されているＮＡＮＤフラッシュチップになされ得る。当該第１のＮＡＮＤフラッシュチップが満杯になると、その後の書込は、キューに登録されているＮＡＮＤフラッシュチップになされ得、次いで、当該ＮＡＮＤフラッシュチップが書込のための現在のＮＡＮＤフラッシュチップになり得る。新しいＮＡＮＤフラッシュチップは、キューに登録された次のチップとして選択され得、キューに登録された次のＮＡＮＤフラッシュチップにおけるすべての有効なページは、ＤＲＡＭ部に読み込まれ得る。
【００２６】
もはや書き込まれない第１の選択されているＮＡＮＤフラッシュチップからのページは、必要に応じてＤＲＡＭから取り除かれ得る。たとえば、各ページは、ダーティでなければ、廃棄されるか、または、フラッシュメモリに書き戻されてもよい。
【００２７】
あるＮＡＮＤフラッシュチップが、キューに登録され、キューに登録されている次のＮＡＮＤフラッシュチップとなるように選択される場合、当該選択は、選択される資格がある複数のＮＡＮＤフラッシュチップのうち最も少ない数の有効なページを有するＮＡＮＤフラッシュチップに基づき得る。時に、ウェアレベリングの理由により、ウェアレベリングポリシーまたはプロシージャに基づいて異なる選択がなされ得る。ウェアレベリングのためのそのような技術は、当該技術において公知でありたとえば動的なウェアレベリングおよび静的なウェアレベリングの技術を含む。
【００２８】
上述したように、システムは、ＮＡＮＤフラッシュメモリと別個であるメインメモリ（たとえばＤＲＡＭ）を有し得、ＮＡＮＤフラッシュメモリはＩ／Ｏバスに接続されており、ＤＲＡＭはＩ／Ｏバスに直接的に接続されておらず、ＮＡＮＤフラッシュメモリはＤＲＡＭとデータ通信を行う。しかしながら、ある実現例では、ＮＡＮＤフラッシュメモリとキャッシュとして機能するＤＲＡＭ部との両方は、メインメモリＤＲＡＭと別個のＩ／Ｏバスを通じて接続され得る。たとえば、図２Ａにおいて、ＤＲＡＭキャッシュは、Ｉ／Ｏバスに接続されるＮＡＮＤフラッシュメモリと共に示される。
【００２９】
図２Ａは、本開示の実現例に従ったメモリデバイスを含むシステムの例を示す。図２Ａにおいて示されるように、本開示のメモリデバイスは、通常のＤＲＡＭ  ＤＩＭＭが使用される態様と同様にたとえばサーバにプラグインするデュアルインラインメモリモジュール（ＤＩＭＭ： dual in-line memory module）であり得る。しかしながら、本開示のＤＩＭＭは、第１の量のＤＲＡＭ２５５と、第２のより大きな量のＮＡＮＤフラッシュメモリ２５０とを含み得る。例示的なシステムは、３２ＧＢのＤＲＡＭおよび１２８ＧＢの使用可能なＮＡＮＤフラッシュメモリを有し得る。
【００３０】
図１に関する上記の記載と同様に、図２Ａにおいて示されるシステム２００はさらに、中央処理装置（ＣＰＵ）２１０のようなプロセッサと、ＤＲＡＭ２２０と、入出力（Ｉ／Ｏ）バス２３０と、ハードディスクドライブ（ＨＤＤ）のようなディスクドライブ２４０とを含み得る。メモリデバイスは、ＮＡＮＤフラッシュメモリ２５０およびＤＲＡＭ部２５５を含み得る。
【００３１】
ＤＩＭＭはさらに、ＤＲＡＭ部２５５およびＮＡＮＤフラッシュメモリ２５０の両方を制御するように構成されるコントローラを有し得る。ＤＩＭＭおよびコントローラは、本願明細書に記載されるように、スワップ空間としてＮＡＮＤフラッシュメモリ２５０を使用するように構成され得る。ＤＲＡＭ部２５５は、現在書き込まれているＮＡＮＤフラッシュチップをキャッシュするために必要とされる量とほぼ等しいストレージキャパシティを有し得る。代替的には、ＤＲＡＭ部２５５は、現在書き込まれているＮＡＮＤフラッシュチップと、キューに登録されている次に書き込まれるべきＮＡＮＤフラッシュチップとをキャッシュするのに必要とされる量とほぼ等しいストレージキャパシティを有し得る。ＤＲＡＭ２２０は、たとえばページが要求されると、ＮＡＮＤフラッシュメモリ２５０から読み込まれたページを格納するために使用され得る。典型的なページサイズはたとえば４ＫＢであり得る。
【００３２】
３２ＧＢのＤＲＡＭおよび１２８ＧＢの使用可能なＮＡＮＤフラッシュメモリを有するシステムの上記の例において、システムは、実際には３２ＧＢのＤＲＡＭしか存在しなくても、１２８ＧＢのＤＲＡＭを有するシステムと同様の態様で動作し得る。その性能は、本願明細書において記載された態様で使用される１２８ＧＢのフラッシュメモリを有することによって作り出される。
【００３３】
仮想メモリ（ＶＭ： virtual memory）システムまたはマネージャは、１つ以上のプログラムがオペレーティングシステムに従って実行することによって、プログラムメモリがどのように利用されるか制御し得る。一般に、データがメインメモリからフェッチされると、読出または書込アクセスが検出されるかどうかに関して判定がなされる。ページフォールトメカニズムまたは他のイベントからそのような判定が引き起こされ得る。ページが最初にアクセスされると、ページはフラッシュメモリからＤＲＡＭにコピーされ得る。ＶＭシステムは、これが起こると、ページフォールトを取り得る。ページへの読出および書込が次いで、ＤＲＡＭコピーから供される。異なるページがＤＲＡＭへ移される必要がある場合、現在のページは、ダーティでなければ、単純に廃棄されるか、または、フラッシュメモリに書き戻される。たとえば、メインメモリが満杯でありフラッシュメモリからの新しいページがもたらされる必要がある場合、ページは置換アルゴリズムに基づいて選択され得、廃棄されるか、または、ダーティであれば、すなわち、メインメモリにおける保有の間に変更されていれば、フラッシュに戻される。
【００３４】
任意の新しいメモリが割り当てられる必要がある場合、フラッシュメモリから割り当てられ得る。メモリは、キャッシングポリシーに従って、ＤＲＡＭにキャッシュされても、されなくてもよい。最もアクセスされていないページ、最も長く用いられていないページなど、または、その任意の組合せといったさまざまなそのようなキャッシングポリシーが使用され得る。キャッシングは、ページ単位で動作し得るＶＭシステムによって管理され得る。
【００３５】
フラッシュメモリを使用することは、「コピーオンライト（copy on write）」を必要とし得る。すなわち論理アドレスが書き込まれるたびに、当該データが新しい物理アドレスに存在することになる。これは、既知であるマッピングテーブルを必要とする。しかしながら、本開示の実現例は、このマッピングを達成するために仮想メモリページテーブルに依拠し得る。
【００３６】
上記の図２Ａを参照して記載されるように、システムは、ＮＡＮＤフラッシュチップと同じパッケージに統合されるＤＲＡＭキャッシュを有し得る。しかしながら、同じパッケージにすべてのメモリコンポーネントが含まれる必要はない。たとえば図２Ｂにおいて、ＤＲＡＭキャッシュはＮＡＮＤフラッシュチップと別個であるとして示されるが、それでもＮＡＮＤフラッシュチップとデータ通信する。
【００３７】
特に、図２Ｂは、本開示の実現例に従ったメモリデバイスを含むシステムの例を示す。図２Ｂに示されるシステム２００は、中央処理装置（ＣＰＵ）２１０のようなプロセッサと、ＤＲＡＭ２２０と、ＤＲＡＭ部２２５と、入出力（Ｉ／Ｏ）バス２３０と、ハードディスクドライブ（ＨＤＤ）のようなディスクドライブ２４０と、ＮＡＮＤフラッシュメモリ２５０とを含み得る。
【００３８】
図２Ｂに示されるように、ＮＡＮＤフラッシュメモリ２５０はＩ／Ｏバス２３０上に存在し、ＤＲＡＭ部２２５は、現在書き込まれているＮＡＮＤフラッシュチップのためのキャッシュとして利用されるべきメインメモリＤＲＡＭ２２０から配分され得る。ある実現例において、ＤＲＡＭ部２２５は必要に応じて動的に配分され得る。さらに、ＤＲＡＭ部２２５は、現在書き込まれているＮＡＮＤフラッシュチップと、キューに登録されている次に書き込まれるべきＮＡＮＤフラッシュチップとのためのキャッシュとして利用されるべきメインメモリＤＲＡＭ２２０から配分され得る。ＤＲＡＭ２２０は、たとえば、ページが要求されると、ＮＡＮＤフラッシュメモリ２５０から読み込まれるページを格納するように使用され得る。
【００３９】
上記の図２Ｂを参照して記載されるように、システムは、Ｉ／Ｏバスに別々に接続されるＮＡＮＤフラッシュメモリを有するメインメモリＤＲＡＭから配分されるＤＲＡＭキャッシュを有し得る。しかしながら、ある実現例では、ＮＡＮＤフラッシュメモリおよびＤＲＡＭの両方を含むハイブリッドＤＩＭＭが、メインメモリＤＲＡＭとは別々に使用され得る。たとえば、図２Ｃにおいて、ＤＩＭＭは、ＮＡＮＤフラッシュメモリおよびＤＲＡＭを有することが示されており、ＤＲＡＭの一部は、キャッシュとして利用されるべきＤＲＡＭ部として配分され得る。
【００４０】
図２Ｃは、本開示の実現例に従ったメモリデバイスを含むシステムの例を示す。図２Ｃに示されるシステム２００は、中央処理装置（ＣＰＵ）２１０のようなプロセッサと、ＤＲＡＭ２２０と、入出力（Ｉ／Ｏ）バス２３０と、ハードディスクドライブ（ＨＤＤ）のようなディスクドライブ２４０とを含み得る。ＮＡＮＤフラッシュメモリ２５０およびＤＲＡＭ部２７０の両方を含むＤＩＭＭ２８０は、ＤＲＡＭ２２０を含むメインメモリＤＩＭＭと共にメモリバス上に設置され得る。
【００４１】
ＤＩＭＭ２８０は、ＤＲＡＭ部２７０およびＮＡＮＤフラッシュメモリ２５０の両方を制御するように構成されるコントローラ２６０を含み得る。ＤＲＡＭ部２７０は、現在書き込まれているＮＡＮＤフラッシュチップのためのキャッシュとして利用されるそのストレージキャパシティの部分のみを有し得る。したがって、現在書き込まれているＮＡＮＤフラッシュチップのためのキャッシュとして利用されないＤＲＡＭ部２７０の部分は、通常のＤＲＡＭとして利用され得る。たとえば、キャッシュとして利用されないＤＲＡＭ部２７０のその部分は、ＮＡＮＤフラッシュメモリ２５０からスワップ空間に読み込まれたページを格納し得る。
【００４２】
ある実現例では、ＤＲＡＭ部２７０は、現在書き込まれているＮＡＮＤフラッシュチップと、キューに登録されている次に書き込まれるべきＮＡＮＤフラッシュチップとのためのキャッシュとして利用されるそのストレージキャパシティの部分のみを有し得る。したがって、現在書き込まれているＮＡＮＤフラッシュチップと、キューに登録されている次に書き込まれるべきＮＡＮＤフラッシュチップとのためのキャッシュとして利用されないＤＲＡＭ部２７０の部分は、上で記載されるように、通常のＤＲＡＭとして利用され得る。
【００４３】
図１〜図２Ｃに関して上で参照されたＮＡＮＤフラッシュメモリは、いくつかのＮＡＮＤフラッシュチップを含み得る。たとえば図３において、ＮＡＮＤフラッシュメモリは、いくつかのＮＡＮＤフラッシュチップを含むメモリモジュールとして示され、当該モジュールはＩ／Ｏバスに接続される。
【００４４】
図３は、本開示の実現例に従ったＮＡＮＤフラッシュモジュールの例を示す。ＮＡＮＤフラッシュメモリ部１５０／２５０は、コントローラ１６０とｎ個のＮＡＮＤフラッシュチップ１７０ａ〜１７０ｎのセットとを含み得る。ＮＡＮＤフラッシュメモリ部１５０／２５０は、ＤＲＡＭ部１２０とのデータ通信を行い得る。ＮＡＮＤフラッシュメモリ部１５０／２５０の所望のストレージキャパシティを達成するために、任意のサイズの任意のｎ個のＮＡＮＤフラッシュチップが使用されてもよい。ＮＡＮＤフラッシュメモリ部１５０／２５０の所望のストレージスペースを作り出すために、何らかのオーバープロビジョニング（overprovisioning）が必要であり得る。たとえば、特定のＮＡＮＤフラッシュメモリ部１５０／２５０において、各ＮＡＮＤフラッシュチップは４ＧＢであり得る。したがって、１２８ＧＢのストレージスペースがＮＡＮＤフラッシュメモリ部１５０／２５０について所望であれば、１２８ＧＢのために、そのような４ＧＢのＮＡＮＤフラッシュチップが３２個必要とされる。たとえば、２５パーセントのオーバープロビジョニングを想定すると、合計４０個のＮＡＮＤフラッシュチップが提供され得る。たとえばこれは、１２８ＧＢのメモリすべてが使用される場合、各ＮＡＮＤフラッシュチップは平均で８０％、そうでなければより少なく占められることになるということを保証する。
【００４５】
ｎ個のＮＡＮＤフラッシュチップ１７０ａ〜１７０ｎの各々は１つ以上のメモリセクションを含み得る。言いかえれば、メモリセクションはそれぞれの構成要素であるＮＡＮＤフラッシュチップであり得るか、または、各ＮＡＮＤフラッシュチップはメモリセクションとして１つ以上のパーティションを含み得る。ＮＡＮＤフラッシュチップがパーティションを含む場合、書込動作が１つのパーティションにおいて進行中であると、その書込動作は、同じＮＡＮＤフラッシュチップ上の任意の他のパーティションへの読出動作を防止しない。言いかえれば、当該パーティションは、それぞれのＮＡＮＤフラッシュチップの別のパーティションにおける書込動作の間に、それぞれのＮＡＮＤフラッシュチップの第１のパーティションにおける読出動作が可能になる。
【００４６】
ある実現例において、各ＮＡＮＤフラッシュチップは複数のパーティションを含んでおり、各パーティションは特定のストレージキャパシティを有する。そのような実現例において、たとえば第２のストレージキャパシティのようなＤＲＡＭ部のストレージキャパシティは、各パーティションの特定のストレージキャパシティと少なくとも同じ大きさであり得るが、構成要素であるＮＡＮＤフラッシュチップのストレージキャパシティより小さくあり得る。特に、ある実現例では、ＤＲＡＭ部の第２のストレージキャパシティは、各パーティションの特定のストレージキャパシティのサイズとほぼ等しいか、または、またはほぼ２倍であるかのいずれかである。
【００４７】
ＮＡＮＤフラッシュチップがパーティションを含む場合、ＮＡＮＤフラッシュチップがパーティションを含まない場合よりも、キャッシュとして機能するＤＲＡＭ部に必要とされるＤＲＡＭの量が少なくなり得る。たとえば、各ＮＡＮＤフラッシュチップが１６ＧＢであり、各々４ＧＢの４つのパーティションに分割される場合、ＮＡＮＤフラッシュメモリのためのキャッシュとしてのＤＲＡＭ部は、１つのパーティションのサイズとほぼ同等である４ＧＢまたは２つのパーティションのサイズとほぼ同等である８ＧＢのストレージキャパシティを有し得る。対照的に、パーティションがない場合、ＤＲＡＭ部は、１つのＮＡＮＤフラッシュチップのサイズとほぼ同等である１６ＧＢまたは２つのＮＡＮＤフラッシュチップのサイズとほぼ同等である３２ＧＢを有し得る。
【００４８】
図４は、本開示の実現例に従った方法４００のための例示的なフローチャートを示す。スワップ空間としてフラッシュメモリを実現するために、ダイレベルでのフラッシュメモリへの書込が以下のプロセス４００に従って行なわれ得る。ＮＡＮＤフラッシュメモリを構成するＮＡＮＤフラッシュチップのうちの１つが、４１０において、データを書き込むために、現在選択されているＮＡＮＤフラッシュチップとして、選択され得る。上述したように、各ＮＡＮＤフラッシュチップは特定のストレージキャパシティを有し得、１つ以上のページを含むメモリセクションを有し得る。たとえば、ページサイズは４ＫＢであり得る。たとえば、代替的には、ページサイズは４ＫＢより大きくあり得、たとえば８ＫＢ、２５６ＫＢ、２ＭＢといった４ＫＢの任意の倍数であり得る。
【００４９】
ある実現例では、現在選択されているＮＡＮＤフラッシュチップが満杯であると識別された後、４２０において、データを書き込むために、キューに登録されているＮＡＮＤフラッシュチップとして、ＮＡＮＤフラッシュメモリを構成するＮＡＮＤフラッシュチップのうちの別のものが選択され得る。ある実現例において、キューに登録されているＮＡＮＤフラッシュチップは使用されなくてもよく、プロセスは４２０を含まなくてもよい。キューに登録されているＮＡＮＤフラッシュチップが選択される場合、４３０において、現在選択されているＮＡＮＤフラッシュチップおよびキューに登録されているＮＡＮＤフラッシュチップにおいてすべての有効なページが、ＮＡＮＤフラッシュチップとデータ通信を行うＤＲＡＭ部にコピーされる。キューに登録されているＮＡＮＤフラッシュチップが使用されない場合、４３０において、現在選択されているＮＡＮＤフラッシュチップにおけるすべての有効なページが、ＮＡＮＤフラッシュチップとデータ通信を行うＤＲＡＭ部にコピーされる。上述したように、ＤＲＡＭ部は、ＮＡＮＤフラッシュチップの各々のストレージキャパシティと少なくとも同じ大きさであるストレージキャパシティを有し得る。
【００５０】
４４０においてＮＡＮＤフラッシュチップのうちの１つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、４５０において、その特定の物理的位置を含む特定のページへの書込のために、現在選択されているＮＡＮＤフラッシュチップが割り当てられる。したがって、現在選択されているＮＡＮＤフラッシュチップおよびキューに登録されているＮＡＮＤフラッシュチップに格納されたページへの読出および書込は、現在選択されているＮＡＮＤフラッシュチップと、キューに登録されているＮＡＮＤフラッシュチップとから読出が行われる必要がないように、ＤＲＡＭコピーから供される。むしろ、たとえば、すべての新しい書込は、現在選択されているＮＡＮＤフラッシュチップによってそれが満杯になるまで行われ得る。その後の書込は、キューに登録されているＮＡＮＤフラッシュチップに向かい得、当該ＮＡＮＤフラッシュチップは書込のためのＮＡＮＤフラッシュチップになり、新しいＮＡＮＤフラッシュチップが、キューに登録されているＮＡＮＤフラッシュチップとして選択され得る。当該プロセスは、キューに登録された新しいＮＡＮＤフラッシュチップにおけるすべての有効なページがＤＲＡＭに読み込まれた状態で繰り返す。さらに、もはや書き込まれていない、第１の現在選択されているＮＡＮＤフラッシュチップからのページが、必要に応じてＤＲＡＭから取り除かれ得る。
【００５１】
本開示の実現例の記載は単一のコントローラおよび単一のアセンブリを含んでいるが、ある実現例は２つの別個のコントローラおよびアセンブリを含んでもよい。たとえば、コントローラを有する１つのアセンブリがフラッシュメモリを含み、コントローラを有する別のアセンブリがＤＲＡＭを含み得る。さらに、ある実現例は、ＤＲＡＭキャッシュ部のために既存のシステムＤＲＡＭを使用し得る。
【００５２】
本開示の実現例に従うと、設計され得るアクセスタイムがより速いＮＡＮＤフラッシュチップによれば、より良好な性能が提供される。たとえば、ＮＡＮＤフラッシュチップ自体の回路デザインを変化させることによって、アクセス時間は１０マイクロ秒以下まで向上され得る。さらに、本開示の実現例に従うと、ＮＡＮＤフラッシュチップは、ページトランスファがより速く完了することを可能にするより広くより速いインターフェイスを有するように設計され得る。
【００５３】
多くの実現例が記載された。しかしながら、さまざまな修正が本開示の精神および範囲から逸脱することなくなされるということが理解されるであろう。たとえば、上に示されるフローのさまざまな形態は、ステップが別の順序を割り当てられるか、追加されるか、または、除去された状態で使用されてもよい。
【００５４】
本発明の実現例およびこの明細書に記載される機能動作のすべては、デジタル電子回路において、または、この明細書において開示された構造およびそれらの構造的等価物を含むかまたはそれらの１つ以上を組合せたコンピュータソフトウェア、ファームウェアもしくはハードウェアにおいて、実現され得る。本発明の実現例は、１つ以上のコンピュータプログラムプロダクトとして実現され得る。すなわち、データ処理装置による実行のためのまたはデータ処理装置の動作を制御するためのコンピュータ読取可能媒体上でエンコードされたコンピュータプログラム命令の１つ以上のモジュールとして実現され得る。コンピュータ読取可能媒体は、マシン読取可能なストレージデバイス、マシン読取可能なストレージ基板、メモリデバイス、マシン読取可能な伝播された信号をもたらす組成物、または、それらの１つ以上の組合せであり得る。「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータまたは複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての装置、デバイスおよびマシンを包含する。当該装置は、ハードウェアに加えて、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステムまたはそれらの１つ以上の組合せを構成するコードといったような、該当するコンピュータプログラムのための実行環境を作り出すコードを含み得る。伝播される信号は、たとえばマシンによって生成された電気信号、光学信号、または電磁信号といった、好適な受信装置への送信のために情報をエンコードするように生成される人工的に生成された信号である。
【００５５】
この開示は多くの詳細を含んでいるが、これらは、本発明の範囲または特許請求され得る範囲に対する限定として解釈されるべきでなく、本発明の特定の実現例に特有の特徴の記載として解釈されるべきである。別個の実現例の文脈でこの明細書において記載されるある特徴も、単一の実現例において組合せで実現され得る。反対に、単一の実現例の文脈において記載されるさまざまな特徴はさらに、複数の実現例において別々に実現され得るか、または、任意の好適なサブコンビネーションにおいて実現され得る。さらに、特徴はある組合せにおいて作用するように上で記載され、最初はそのように特許請求され得るが、特許請求された組合せからの１つ以上の特徴は、いくつかの場合において組合せから削除され得、また、特許請求された組合せは、サブコンビネーションまたはサブコンビネーションの変形例に関し得る。
【００５６】
同様に、図において動作が特定の順に示されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順または連続した順で実行される必要があると理解されるべきではなく、または、すべての示された動作が実行される必要があると理解されるべきではない。ある状況において、マルチタスキングおよび並列処理が有利であり得る。さらに、上に記載された実現例におけるさまざまなシステムコンポーネントの分離は、すべての実現例においてそのような分離を必要とすると理解されるべきでなく、記載されたプログラムコンポーネントおよびシステムが一般に単一のソフトウェアプロダクトに一緒に統合され得るか、または、複数のソフトウェアプロダクトへパッケージ化され得るということが理解されるべきである。
【００５７】
このように、本開示の特定の実現例は記載された。他の実現例は以下の請求の範囲内である。たとえば、請求の範囲において記載されるアクションは異なる順で実行され得、それでも望ましい結果を達成し得る。多くの実現例が記載された。しかしながら、さまざまな修正が本開示の精神および範囲から逸脱することなくなされてもよいということが理解されるであろう。たとえば、上に示されるフローのさまざまな形態は、ステップが別の順序を割り当てられるか、追加されるか、または、除去された状態で使用されてもよい。したがって、他の実現例は添付の請求の範囲内である。
【図１】
0006339645.tif 000002
【図２Ａ】
0006339645.tif 000003
【図２Ｂ】
0006339645.tif 000004
【図２Ｃ】
0006339645.tif 000005
【図３】
0006339645.tif 000006
【図４】
0006339645.tif 000007