JP6339645B2 - メモリデバイスおよび方法 - Google Patents

メモリデバイスおよび方法 Download PDF

Info

Publication number
JP6339645B2
JP6339645B2 JP2016217980A JP2016217980A JP6339645B2 JP 6339645 B2 JP6339645 B2 JP 6339645B2 JP 2016217980 A JP2016217980 A JP 2016217980A JP 2016217980 A JP2016217980 A JP 2016217980A JP 6339645 B2 JP6339645 B2 JP 6339645B2
Authority
JP
Japan
Prior art keywords
nand flash
dram
flash chip
memory
chips
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.)
Active
Application number
JP2016217980A
Other languages
English (en)
Other versions
JP2017097861A (ja
Inventor
モニッシュ・シャー
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2017097861A publication Critical patent/JP2017097861A/ja
Application granted granted Critical
Publication of JP6339645B2 publication Critical patent/JP6339645B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Description

分野
本明細書は一般にメモリシステムに関する。
背景
さまざまなコンピュータおよび同様のシステムのために、さまざまなメモリデバイスがデータおよび命令を維持および格納するように使用され得る。従来のコンピューティングシステムにおいて、ダイナミックランダムアクセスメモリ(DRAM)技術は、アプリケーションが高速に動作するためにコンピュータのダイナミックメモリを動作するために典型的に使用されている。しかしながら、コンピュータシステムにおいてメインメモリとして使用されるDRAMは、もはや過去においてほど急速にスケール(scaling)していない。結果として、DRAMストレージはコンピューティング環境における制限されたリソースになっている。
制限されたDRAMに対処するために、頻繁には使用されないメモリデータをDRAMからディスクドライブにコピーするようディスクドライブがスワップ空間として使用され得る。当該データは、次に使用される際に、DRAMに戻るようにコピーされ得る。しかしながら、一般に、そのプロセスは厳しい性能結果を有する。したがって、そのプロセスは、現代のサーバにおいてめったに使用されない。それらの性能結果に対処するために、NANDフラッシュベースのソリッドステートドライブ(SSD: solid-state drive)がスワップ空間として使用され得る。しかしながら、NANDフラッシュベースのSSDの使用も、性能に望ましくない影響を及ぼし得る。たとえば、フラッシュベースのメモリは、データについての書込時間が遅いことと、メインメモリのために完全にDRAMを使用する従来のシステムにおけるような個々のアドレスの代わりに全セクターを更新する必要があることに関連付けられるレイテンシーとを含む、ある制限を有する。
概要
この明細書に記載される主題の革新的な1つの局面は、複数のNANDフラッシュチップと、NANDフラッシュチップとデータ通信を行うダイナミックランダムアクセスメモリ(DRAM)部と、コントローラとを含む、メモリデバイスにおいて具現化される。複数のNANDフラッシュチップの各々はメモリセクションを含み、各メモリセクションは複数のページを含み、各NANDフラッシュチップは第1のストレージキャパシティを有する。DRAM部は、複数のNANDフラッシュチップの各々の第1のストレージキャパシティと少なくとも同じ大きさの第2のストレージキャパシティを有する。コントローラは、データを書き込むために、現在選択されているNANDフラッシュチップとして、NANDフラッシュチップのうちの1つを選択することと、現在選択されているNANDフラッシュチップにおけるすべての有効なページをDRAM部へコピーすることとを行うように構成される。コントローラはさらに、NANDフラッシュチップのうちの1つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、その特定の物理的位置を含む特定のページへの書込のために、現在選択されているNANDフラッシュチップを割り当てることを行うように構成される。
ある実現例において、コントローラは、現在選択されているNANDフラッシュチップが満杯(full)であると識別された後、データを書き込むために、キューに登録されているNANDフラッシュチップとして、複数のNANDフラッシュチップのうちの別のものを選択することと、キューに登録されているNANDフラッシュチップにおけるすべての有効なページをDRAM部へコピーすることとを行うように構成される。ある実現例において、コントローラは複数のNANDフラッシュチップに格納される特定のページにアクセスする要求に応答して、その特定のページを複数のNANDフラッシュチップからDRAMを含むメインメモリに読み込むように構成される。
この明細書に記載される主題の革新的な1つの局面は、方法において具現化される。上記方法は、データを書き込むために、現在選択されているNANDフラッシュチップとして、複数のNANDフラッシュチップのうちの1つを選択するアクションを含み、各NANDフラッシュチップは第1のストレージキャパシティを有し、かつ、メモリセクションを含んでおり、各メモリセクションは複数のページを含み、上記方法はさらに、現在選択されているNANDフラッシュチップにおけるすべての有効なページを、NANDフラッシュチップとデータ通信を行うダイナミックランダムアクセスメモリ(DRAM)部へコピーするアクションを含み、DRAM部は、複数のNANDフラッシュチップの各々の第1のストレージキャパシティと少なくとも同じ大きさの第2のストレージキャパシティを有し、上記方法はさらに、NANDフラッシュチップのうちの1つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、その特定の物理的位置を含む特定のページへの書込のために、現在選択されているNANDフラッシュチップを割り当てるアクションを含む。
一般に、この明細書に記載される主題の別の局面は、方法において具現化される。上記方法は、現在選択されているNANDフラッシュチップが満杯であると識別された後、データを書き込むために、キューに登録されているNANDフラッシュチップとして、複数のNANDフラッシュチップのうちの別のものを選択するアクションと、キューに登録されているNANDフラッシュチップにおけるすべての有効なページをDRAM部へコピーするアクションとを含む。
この明細書に記載される主題の別の局面は、方法において具現化され得る。上記方法は、複数のNANDフラッシュチップに格納される特定のページにアクセスする要求に応答して、特定のページを複数のNANDフラッシュチップからDRAMを含むメインメモリに読み出すアクションを含む。
これらの局面の他の実施形態は、対応するシステム、装置、および、コンピュータストレージデバイス上でエンコードされる、上記方法のアクションを実行するように構成されるコンピュータプログラムを含む。
これらおよび他の実現例は各々、随意に以下の特徴の1つ以上を含み得る。たとえば、複数のNANDフラッシュチップのうちの別のものは、複数のNANDフラッシュチップのうち最も少ない数の有効なページを有していることに基づいて、キューに登録されているNANDフラッシュチップとして選択される。ある実現例では、現在選択されているNANDフラッシュチップへデータを書き込むべき特定の物理的位置は、(i)最もアクセスされていないページおよび(ii)最も長く用いられていない(least recently used)ページのうちの少なくとも1つに基づいて決定される。
ある実現例では、メモリセクションは、それぞれのNANDフラッシュチップのパーティションを含み、パーティションは、同じNANDフラッシュチップの別のパーティションにおける書込動作の間、それぞれのNANDフラッシュチップの第1のパーティションにおける読出の動作を可能にする。ある実現例において、メモリセクションはそれぞれの構成要素であるNANDフラッシュチップを含む。
ある実現例において、各NANDフラッシュチップは複数のパーティションを含んでおり、各パーティションは特定のストレージキャパシティを有し、DRAM部の第2のストレージキャパシティは、各パーティションの特定のストレージキャパシティと少なくとも同じ大きさである。ある実現例において、各NANDフラッシュチップは、複数のパーティションを含み、各パーティションは特定のストレージキャパシティを有し、DRAM部の第2のストレージキャパシティは、各パーティションの特定のストレージキャパシティのサイズとほぼ等しいか、または、ほぼ2倍であるかのいずれかである。
ある実現例において、複数のNANDフラッシュチップは、入出力(I/O)バスに結合されたモジュールの部分であり、モジュールはさらにDRAM部を含み、DRAM部の第2のストレージキャパシティは、各NANDフラッシュチップの第1のストレージキャパシティの約2倍のサイズである。ある実現例において、複数のNANDフラッシュチップは入出力(I/O)バスに結合され、DRAM部はDRAMを含むメインメモリの部分である。ある実現例において、複数のNANDフラッシュチップおよびDRAM部はモジュールの一部であり、DRAM部の第2のストレージキャパシティは、各NANDフラッシュチップの第1のストレージキャパシティの2倍と少なくとも同じ大きさである。
本発明の1つ以上の実施形態の詳細は、添付の図面および以下の説明において記載される。本発明の他の特徴および利点は、説明、図および請求の範囲から明白になるであろう。
本開示の実現例に従ったメモリデバイスを含むシステムの例を示す図である。 本開示の実現例に従ったメモリデバイスを含むシステムの例を示す図である。 本開示の実現例に従ったメモリデバイスを含むシステムの例を示す図である。 本開示の実現例に従ったメモリデバイスを含むシステムの例を示す図である。 本開示の実現例に従ったNANDフラッシュモジュールの例を示す図である。 本開示の実現例に従った方法のための例示的なフローチャートを示す図である。
さまざまな図における同様の参照番号および指定は同様の要素を示す。
詳細な説明
以下に記載されるメモリシステムは、DRAMの部分とのデータ通信を行うNANDフラッシュチップを含む。各NANDフラッシュチップは、複数のページを有するメモリセクションを規定しており、各NANDフラッシュチップは第1のストレージキャパシティを有する。DRAM部はNANDフラッシュチップとデータ通信を行う。DRAM部は、NANDフラッシュチップの各々の第1のストレージキャパシティと少なくとも同じ大きさの第2のストレージキャパシティを有する。
メモリシステムはさらにコントローラを含む。当該コントローラは、NANDフラッシュチップのうちの1つを、データを書き込むために、現在選択されているNANDフラッシュチップとして選択し、次いで、現在選択されているNANDフラッシュチップにおけるすべての有効なページをDRAM部へコピーするように構成される。
NANDフラッシュチップのうちの1つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、コントローラは、当該特定の物理的位置を含む特定のページへの書込のために、現在選択されているNANDフラッシュチップを割り当てる。
ある実現例では、ページは、メインメモリ(たとえばDRAM)から除去され、最もアクセスされていないページ、最も長く用いられていない(least recently used)ページなど、または、その任意の組合せといったあるメトリックに基づいてNANDフラッシュチップに書き込まれるように選択され得る。
これらのメモリシステムは単一のパッケージ化されたデバイスに含まれてもよく、または、コンピュータデバイス内に分散されてもよい。図1〜図2Cは、異なる変形例においてメモリシステムがどのように実現され得るかについての例示的な図である。
図1は、本開示の実現例に従ったメモリデバイスを含むシステム100の例を示す。システム100は、中央処理装置(CPU)110のようなプロセッサと、DRAM部120と、入出力(I/O)バス130と、ハードディスクドライブ(HDD)のようなディスクドライブ140と、NANDフラッシュチップ部150とを含み得る。I/Oバス130は、入出力デバイスがCPU110と通信するために使用される経路であり得る。I/Oバスはたとえばペリフェラルコンポーネントインターコネクトエクスプレス(PCIe: Peripheral Component Interconnect Express)であり得る。ディスクドライブ140はデータの長期ストレージのために使用され得る。
システム100は、コンピューティングデバイスのような電子デバイスにおいて具現化され得る。DRAM部120はメインメモリであり得、CPU110に直接的にアクセス可能であり得る。メインメモリは、たとえば所望の位置のメモリアドレスを伝達するアドレスバスと、データを読み出すかまたは書き込むために使用されるデータバスとを用いて、プロセッサ(たとえばCPU110)に接続する1次ストレージであり得る。
スワップ空間デバイスとしてフラッシュメモリを使用する場合、フラッシュメモリへの書込には、消去動作が必要とされ、その後にプログラム動作が行われる。それらの動作は典型的に読出動作よりはるかに遅く、それらの動作が発生している間、読出動作がブロックされる。したがって、読出の平均およびテールレイテンシー(tail latency)は不利益に増加され得る。
前述の段落に記載された問題に対処するために、任意の所与の時間において、1つのNANDフラッシュチップが書込のために選択され得る。選択されたNANDフラッシュチップにおけるすべての有効なページは、そのNANDフラッシュチップから読み出す必要がないようにDRAM部に読み込まれ得る。むしろ、読出は、選択されたNANDフラッシュチップにおける有効なページが読み込まれたDRAM部から発生し得る。すべての新しい書込は、選択されたNANDフラッシュチップに対してなされ得る。
さらに、いくつかの実現例において、別のNANDフラッシュチップが、次に書き込むためにキューに登録され得る。第2のNANDフラッシュチップがキューに登録されているNANDフラッシュチップとして選択されている場合、選択されているNANDフラッシュチップおよびキューに登録されているNANDフラッシュチップの両方におけるすべての有効なページは、それらの2つのNANDフラッシュチップから読み出す必要がないように、DRAM部に読み込まれ得る。すべての新しい書込は、第1の選択されているNANDフラッシュチップになされ得る。当該第1のNANDフラッシュチップが満杯になると、その後の書込は、キューに登録されているNANDフラッシュチップになされ得、次いで、当該NANDフラッシュチップが書込のための現在のNANDフラッシュチップになり得る。新しいNANDフラッシュチップは、キューに登録された次のチップとして選択され得、キューに登録された次のNANDフラッシュチップにおけるすべての有効なページは、DRAM部に読み込まれ得る。
もはや書き込まれない第1の選択されているNANDフラッシュチップからのページは、必要に応じてDRAMから取り除かれ得る。たとえば、各ページは、ダーティでなければ、廃棄されるか、または、フラッシュメモリに書き戻されてもよい。
あるNANDフラッシュチップが、キューに登録され、キューに登録されている次のNANDフラッシュチップとなるように選択される場合、当該選択は、選択される資格がある複数のNANDフラッシュチップのうち最も少ない数の有効なページを有するNANDフラッシュチップに基づき得る。時に、ウェアレベリングの理由により、ウェアレベリングポリシーまたはプロシージャに基づいて異なる選択がなされ得る。ウェアレベリングのためのそのような技術は、当該技術において公知でありたとえば動的なウェアレベリングおよび静的なウェアレベリングの技術を含む。
上述したように、システムは、NANDフラッシュメモリと別個であるメインメモリ(たとえばDRAM)を有し得、NANDフラッシュメモリはI/Oバスに接続されており、DRAMはI/Oバスに直接的に接続されておらず、NANDフラッシュメモリはDRAMとデータ通信を行う。しかしながら、ある実現例では、NANDフラッシュメモリとキャッシュとして機能するDRAM部との両方は、メインメモリDRAMと別個のI/Oバスを通じて接続され得る。たとえば、図2Aにおいて、DRAMキャッシュは、I/Oバスに接続されるNANDフラッシュメモリと共に示される。
図2Aは、本開示の実現例に従ったメモリデバイスを含むシステムの例を示す。図2Aにおいて示されるように、本開示のメモリデバイスは、通常のDRAM DIMMが使用される態様と同様にたとえばサーバにプラグインするデュアルインラインメモリモジュール(DIMM: dual in-line memory module)であり得る。しかしながら、本開示のDIMMは、第1の量のDRAM255と、第2のより大きな量のNANDフラッシュメモリ250とを含み得る。例示的なシステムは、32GBのDRAMおよび128GBの使用可能なNANDフラッシュメモリを有し得る。
図1に関する上記の記載と同様に、図2Aにおいて示されるシステム200はさらに、中央処理装置(CPU)210のようなプロセッサと、DRAM220と、入出力(I/O)バス230と、ハードディスクドライブ(HDD)のようなディスクドライブ240とを含み得る。メモリデバイスは、NANDフラッシュメモリ250およびDRAM部255を含み得る。
DIMMはさらに、DRAM部255およびNANDフラッシュメモリ250の両方を制御するように構成されるコントローラを有し得る。DIMMおよびコントローラは、本願明細書に記載されるように、スワップ空間としてNANDフラッシュメモリ250を使用するように構成され得る。DRAM部255は、現在書き込まれているNANDフラッシュチップをキャッシュするために必要とされる量とほぼ等しいストレージキャパシティを有し得る。代替的には、DRAM部255は、現在書き込まれているNANDフラッシュチップと、キューに登録されている次に書き込まれるべきNANDフラッシュチップとをキャッシュするのに必要とされる量とほぼ等しいストレージキャパシティを有し得る。DRAM220は、たとえばページが要求されると、NANDフラッシュメモリ250から読み込まれたページを格納するために使用され得る。典型的なページサイズはたとえば4KBであり得る。
32GBのDRAMおよび128GBの使用可能なNANDフラッシュメモリを有するシステムの上記の例において、システムは、実際には32GBのDRAMしか存在しなくても、128GBのDRAMを有するシステムと同様の態様で動作し得る。その性能は、本願明細書において記載された態様で使用される128GBのフラッシュメモリを有することによって作り出される。
仮想メモリ(VM: virtual memory)システムまたはマネージャは、1つ以上のプログラムがオペレーティングシステムに従って実行することによって、プログラムメモリがどのように利用されるか制御し得る。一般に、データがメインメモリからフェッチされると、読出または書込アクセスが検出されるかどうかに関して判定がなされる。ページフォールトメカニズムまたは他のイベントからそのような判定が引き起こされ得る。ページが最初にアクセスされると、ページはフラッシュメモリからDRAMにコピーされ得る。VMシステムは、これが起こると、ページフォールトを取り得る。ページへの読出および書込が次いで、DRAMコピーから供される。異なるページがDRAMへ移される必要がある場合、現在のページは、ダーティでなければ、単純に廃棄されるか、または、フラッシュメモリに書き戻される。たとえば、メインメモリが満杯でありフラッシュメモリからの新しいページがもたらされる必要がある場合、ページは置換アルゴリズムに基づいて選択され得、廃棄されるか、または、ダーティであれば、すなわち、メインメモリにおける保有の間に変更されていれば、フラッシュに戻される。
任意の新しいメモリが割り当てられる必要がある場合、フラッシュメモリから割り当てられ得る。メモリは、キャッシングポリシーに従って、DRAMにキャッシュされても、されなくてもよい。最もアクセスされていないページ、最も長く用いられていないページなど、または、その任意の組合せといったさまざまなそのようなキャッシングポリシーが使用され得る。キャッシングは、ページ単位で動作し得るVMシステムによって管理され得る。
フラッシュメモリを使用することは、「コピーオンライト(copy on write)」を必要とし得る。すなわち論理アドレスが書き込まれるたびに、当該データが新しい物理アドレスに存在することになる。これは、既知であるマッピングテーブルを必要とする。しかしながら、本開示の実現例は、このマッピングを達成するために仮想メモリページテーブルに依拠し得る。
上記の図2Aを参照して記載されるように、システムは、NANDフラッシュチップと同じパッケージに統合されるDRAMキャッシュを有し得る。しかしながら、同じパッケージにすべてのメモリコンポーネントが含まれる必要はない。たとえば図2Bにおいて、DRAMキャッシュはNANDフラッシュチップと別個であるとして示されるが、それでもNANDフラッシュチップとデータ通信する。
特に、図2Bは、本開示の実現例に従ったメモリデバイスを含むシステムの例を示す。図2Bに示されるシステム200は、中央処理装置(CPU)210のようなプロセッサと、DRAM220と、DRAM部225と、入出力(I/O)バス230と、ハードディスクドライブ(HDD)のようなディスクドライブ240と、NANDフラッシュメモリ250とを含み得る。
図2Bに示されるように、NANDフラッシュメモリ250はI/Oバス230上に存在し、DRAM部225は、現在書き込まれているNANDフラッシュチップのためのキャッシュとして利用されるべきメインメモリDRAM220から配分され得る。ある実現例において、DRAM部225は必要に応じて動的に配分され得る。さらに、DRAM部225は、現在書き込まれているNANDフラッシュチップと、キューに登録されている次に書き込まれるべきNANDフラッシュチップとのためのキャッシュとして利用されるべきメインメモリDRAM220から配分され得る。DRAM220は、たとえば、ページが要求されると、NANDフラッシュメモリ250から読み込まれるページを格納するように使用され得る。
上記の図2Bを参照して記載されるように、システムは、I/Oバスに別々に接続されるNANDフラッシュメモリを有するメインメモリDRAMから配分されるDRAMキャッシュを有し得る。しかしながら、ある実現例では、NANDフラッシュメモリおよびDRAMの両方を含むハイブリッドDIMMが、メインメモリDRAMとは別々に使用され得る。たとえば、図2Cにおいて、DIMMは、NANDフラッシュメモリおよびDRAMを有することが示されており、DRAMの一部は、キャッシュとして利用されるべきDRAM部として配分され得る。
図2Cは、本開示の実現例に従ったメモリデバイスを含むシステムの例を示す。図2Cに示されるシステム200は、中央処理装置(CPU)210のようなプロセッサと、DRAM220と、入出力(I/O)バス230と、ハードディスクドライブ(HDD)のようなディスクドライブ240とを含み得る。NANDフラッシュメモリ250およびDRAM部270の両方を含むDIMM280は、DRAM220を含むメインメモリDIMMと共にメモリバス上に設置され得る。
DIMM280は、DRAM部270およびNANDフラッシュメモリ250の両方を制御するように構成されるコントローラ260を含み得る。DRAM部270は、現在書き込まれているNANDフラッシュチップのためのキャッシュとして利用されるそのストレージキャパシティの部分のみを有し得る。したがって、現在書き込まれているNANDフラッシュチップのためのキャッシュとして利用されないDRAM部270の部分は、通常のDRAMとして利用され得る。たとえば、キャッシュとして利用されないDRAM部270のその部分は、NANDフラッシュメモリ250からスワップ空間に読み込まれたページを格納し得る。
ある実現例では、DRAM部270は、現在書き込まれているNANDフラッシュチップと、キューに登録されている次に書き込まれるべきNANDフラッシュチップとのためのキャッシュとして利用されるそのストレージキャパシティの部分のみを有し得る。したがって、現在書き込まれているNANDフラッシュチップと、キューに登録されている次に書き込まれるべきNANDフラッシュチップとのためのキャッシュとして利用されないDRAM部270の部分は、上で記載されるように、通常のDRAMとして利用され得る。
図1〜図2Cに関して上で参照されたNANDフラッシュメモリは、いくつかのNANDフラッシュチップを含み得る。たとえば図3において、NANDフラッシュメモリは、いくつかのNANDフラッシュチップを含むメモリモジュールとして示され、当該モジュールはI/Oバスに接続される。
図3は、本開示の実現例に従ったNANDフラッシュモジュールの例を示す。NANDフラッシュメモリ部150/250は、コントローラ160とn個のNANDフラッシュチップ170a〜170nのセットとを含み得る。NANDフラッシュメモリ部150/250は、DRAM部120とのデータ通信を行い得る。NANDフラッシュメモリ部150/250の所望のストレージキャパシティを達成するために、任意のサイズの任意のn個のNANDフラッシュチップが使用されてもよい。NANDフラッシュメモリ部150/250の所望のストレージスペースを作り出すために、何らかのオーバープロビジョニング(overprovisioning)が必要であり得る。たとえば、特定のNANDフラッシュメモリ部150/250において、各NANDフラッシュチップは4GBであり得る。したがって、128GBのストレージスペースがNANDフラッシュメモリ部150/250について所望であれば、128GBのために、そのような4GBのNANDフラッシュチップが32個必要とされる。たとえば、25パーセントのオーバープロビジョニングを想定すると、合計40個のNANDフラッシュチップが提供され得る。たとえばこれは、128GBのメモリすべてが使用される場合、各NANDフラッシュチップは平均で80%、そうでなければより少なく占められることになるということを保証する。
n個のNANDフラッシュチップ170a〜170nの各々は1つ以上のメモリセクションを含み得る。言いかえれば、メモリセクションはそれぞれの構成要素であるNANDフラッシュチップであり得るか、または、各NANDフラッシュチップはメモリセクションとして1つ以上のパーティションを含み得る。NANDフラッシュチップがパーティションを含む場合、書込動作が1つのパーティションにおいて進行中であると、その書込動作は、同じNANDフラッシュチップ上の任意の他のパーティションへの読出動作を防止しない。言いかえれば、当該パーティションは、それぞれのNANDフラッシュチップの別のパーティションにおける書込動作の間に、それぞれのNANDフラッシュチップの第1のパーティションにおける読出動作が可能になる。
ある実現例において、各NANDフラッシュチップは複数のパーティションを含んでおり、各パーティションは特定のストレージキャパシティを有する。そのような実現例において、たとえば第2のストレージキャパシティのようなDRAM部のストレージキャパシティは、各パーティションの特定のストレージキャパシティと少なくとも同じ大きさであり得るが、構成要素であるNANDフラッシュチップのストレージキャパシティより小さくあり得る。特に、ある実現例では、DRAM部の第2のストレージキャパシティは、各パーティションの特定のストレージキャパシティのサイズとほぼ等しいか、または、またはほぼ2倍であるかのいずれかである。
NANDフラッシュチップがパーティションを含む場合、NANDフラッシュチップがパーティションを含まない場合よりも、キャッシュとして機能するDRAM部に必要とされるDRAMの量が少なくなり得る。たとえば、各NANDフラッシュチップが16GBであり、各々4GBの4つのパーティションに分割される場合、NANDフラッシュメモリのためのキャッシュとしてのDRAM部は、1つのパーティションのサイズとほぼ同等である4GBまたは2つのパーティションのサイズとほぼ同等である8GBのストレージキャパシティを有し得る。対照的に、パーティションがない場合、DRAM部は、1つのNANDフラッシュチップのサイズとほぼ同等である16GBまたは2つのNANDフラッシュチップのサイズとほぼ同等である32GBを有し得る。
図4は、本開示の実現例に従った方法400のための例示的なフローチャートを示す。スワップ空間としてフラッシュメモリを実現するために、ダイレベルでのフラッシュメモリへの書込が以下のプロセス400に従って行なわれ得る。NANDフラッシュメモリを構成するNANDフラッシュチップのうちの1つが、410において、データを書き込むために、現在選択されているNANDフラッシュチップとして、選択され得る。上述したように、各NANDフラッシュチップは特定のストレージキャパシティを有し得、1つ以上のページを含むメモリセクションを有し得る。たとえば、ページサイズは4KBであり得る。たとえば、代替的には、ページサイズは4KBより大きくあり得、たとえば8KB、256KB、2MBといった4KBの任意の倍数であり得る。
ある実現例では、現在選択されているNANDフラッシュチップが満杯であると識別された後、420において、データを書き込むために、キューに登録されているNANDフラッシュチップとして、NANDフラッシュメモリを構成するNANDフラッシュチップのうちの別のものが選択され得る。ある実現例において、キューに登録されているNANDフラッシュチップは使用されなくてもよく、プロセスは420を含まなくてもよい。キューに登録されているNANDフラッシュチップが選択される場合、430において、現在選択されているNANDフラッシュチップおよびキューに登録されているNANDフラッシュチップにおいてすべての有効なページが、NANDフラッシュチップとデータ通信を行うDRAM部にコピーされる。キューに登録されているNANDフラッシュチップが使用されない場合、430において、現在選択されているNANDフラッシュチップにおけるすべての有効なページが、NANDフラッシュチップとデータ通信を行うDRAM部にコピーされる。上述したように、DRAM部は、NANDフラッシュチップの各々のストレージキャパシティと少なくとも同じ大きさであるストレージキャパシティを有し得る。
440においてNANDフラッシュチップのうちの1つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、450において、その特定の物理的位置を含む特定のページへの書込のために、現在選択されているNANDフラッシュチップが割り当てられる。したがって、現在選択されているNANDフラッシュチップおよびキューに登録されているNANDフラッシュチップに格納されたページへの読出および書込は、現在選択されているNANDフラッシュチップと、キューに登録されているNANDフラッシュチップとから読出が行われる必要がないように、DRAMコピーから供される。むしろ、たとえば、すべての新しい書込は、現在選択されているNANDフラッシュチップによってそれが満杯になるまで行われ得る。その後の書込は、キューに登録されているNANDフラッシュチップに向かい得、当該NANDフラッシュチップは書込のためのNANDフラッシュチップになり、新しいNANDフラッシュチップが、キューに登録されているNANDフラッシュチップとして選択され得る。当該プロセスは、キューに登録された新しいNANDフラッシュチップにおけるすべての有効なページがDRAMに読み込まれた状態で繰り返す。さらに、もはや書き込まれていない、第1の現在選択されているNANDフラッシュチップからのページが、必要に応じてDRAMから取り除かれ得る。
本開示の実現例の記載は単一のコントローラおよび単一のアセンブリを含んでいるが、ある実現例は2つの別個のコントローラおよびアセンブリを含んでもよい。たとえば、コントローラを有する1つのアセンブリがフラッシュメモリを含み、コントローラを有する別のアセンブリがDRAMを含み得る。さらに、ある実現例は、DRAMキャッシュ部のために既存のシステムDRAMを使用し得る。
本開示の実現例に従うと、設計され得るアクセスタイムがより速いNANDフラッシュチップによれば、より良好な性能が提供される。たとえば、NANDフラッシュチップ自体の回路デザインを変化させることによって、アクセス時間は10マイクロ秒以下まで向上され得る。さらに、本開示の実現例に従うと、NANDフラッシュチップは、ページトランスファがより速く完了することを可能にするより広くより速いインターフェイスを有するように設計され得る。
多くの実現例が記載された。しかしながら、さまざまな修正が本開示の精神および範囲から逸脱することなくなされるということが理解されるであろう。たとえば、上に示されるフローのさまざまな形態は、ステップが別の順序を割り当てられるか、追加されるか、または、除去された状態で使用されてもよい。
本発明の実現例およびこの明細書に記載される機能動作のすべては、デジタル電子回路において、または、この明細書において開示された構造およびそれらの構造的等価物を含むかまたはそれらの1つ以上を組合せたコンピュータソフトウェア、ファームウェアもしくはハードウェアにおいて、実現され得る。本発明の実現例は、1つ以上のコンピュータプログラムプロダクトとして実現され得る。すなわち、データ処理装置による実行のためのまたはデータ処理装置の動作を制御するためのコンピュータ読取可能媒体上でエンコードされたコンピュータプログラム命令の1つ以上のモジュールとして実現され得る。コンピュータ読取可能媒体は、マシン読取可能なストレージデバイス、マシン読取可能なストレージ基板、メモリデバイス、マシン読取可能な伝播された信号をもたらす組成物、または、それらの1つ以上の組合せであり得る。「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータまたは複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての装置、デバイスおよびマシンを包含する。当該装置は、ハードウェアに加えて、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステムまたはそれらの1つ以上の組合せを構成するコードといったような、該当するコンピュータプログラムのための実行環境を作り出すコードを含み得る。伝播される信号は、たとえばマシンによって生成された電気信号、光学信号、または電磁信号といった、好適な受信装置への送信のために情報をエンコードするように生成される人工的に生成された信号である。
この開示は多くの詳細を含んでいるが、これらは、本発明の範囲または特許請求され得る範囲に対する限定として解釈されるべきでなく、本発明の特定の実現例に特有の特徴の記載として解釈されるべきである。別個の実現例の文脈でこの明細書において記載されるある特徴も、単一の実現例において組合せで実現され得る。反対に、単一の実現例の文脈において記載されるさまざまな特徴はさらに、複数の実現例において別々に実現され得るか、または、任意の好適なサブコンビネーションにおいて実現され得る。さらに、特徴はある組合せにおいて作用するように上で記載され、最初はそのように特許請求され得るが、特許請求された組合せからの1つ以上の特徴は、いくつかの場合において組合せから削除され得、また、特許請求された組合せは、サブコンビネーションまたはサブコンビネーションの変形例に関し得る。
同様に、図において動作が特定の順に示されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順または連続した順で実行される必要があると理解されるべきではなく、または、すべての示された動作が実行される必要があると理解されるべきではない。ある状況において、マルチタスキングおよび並列処理が有利であり得る。さらに、上に記載された実現例におけるさまざまなシステムコンポーネントの分離は、すべての実現例においてそのような分離を必要とすると理解されるべきでなく、記載されたプログラムコンポーネントおよびシステムが一般に単一のソフトウェアプロダクトに一緒に統合され得るか、または、複数のソフトウェアプロダクトへパッケージ化され得るということが理解されるべきである。
このように、本開示の特定の実現例は記載された。他の実現例は以下の請求の範囲内である。たとえば、請求の範囲において記載されるアクションは異なる順で実行され得、それでも望ましい結果を達成し得る。多くの実現例が記載された。しかしながら、さまざまな修正が本開示の精神および範囲から逸脱することなくなされてもよいということが理解されるであろう。たとえば、上に示されるフローのさまざまな形態は、ステップが別の順序を割り当てられるか、追加されるか、または、除去された状態で使用されてもよい。したがって、他の実現例は添付の請求の範囲内である。

Claims (20)

  1. メモリデバイスであって、
    複数のNANDフラッシュチップを含み、前記複数のNANDフラッシュチップの各々はメモリセクションを含み、各メモリセクションは複数のページを含み、各NANDフラッシュチップは第1のストレージキャパシティを有し、
    前記メモリデバイスはさらに、前記複数のNANDフラッシュチップとデータ通信を行うダイナミックランダムアクセスメモリ(DRAM)部を含み、前記DRAM部は、前記複数のNANDフラッシュチップの各々の前記第1のストレージキャパシティと少なくとも同じ大きさの第2のストレージキャパシティを有し、前記DRAM部は、前記複数のNANDフラッシュチップをスワップ空間として利用し、
    前記メモリデバイスはさらに少なくとも1つのコントローラを含み、
    前記少なくとも1つのコントローラは、
    データを書き込むために、現在選択されているNANDフラッシュチップとして前記複数のNANDフラッシュチップのうちの1つを選択することと、
    前記現在選択されているNANDフラッシュチップにおけるすべての有効なページを前記DRAM部へコピーすることと、
    前記NANDフラッシュチップのうちの1つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、前記特定の物理的位置を含む特定のページへの書込のために、前記現在選択されているNANDフラッシュチップを割り当てることとを行うように構成される、メモリデバイス。
  2. 前記少なくとも1つのコントローラは、
    前記現在選択されているNANDフラッシュチップが満杯であると識別された後、データを書き込むために、キューに登録されているNANDフラッシュチップとして、前記複数のNANDフラッシュチップのうちの別のものを選択することと、
    前記キューに登録されているNANDフラッシュチップにおけるすべての有効なページを前記DRAM部へコピーすることとを行うように構成される、請求項1に記載のメモリデバイス。
  3. 前記複数のNANDフラッシュチップのうちの前記別のものは、前記複数のNANDフラッシュチップのうち最も少ない数の有効なページを有していることに基づいて、キューに登録されているNANDフラッシュチップとして選択される、請求項2に記載のメモリデバイス。
  4. 前記現在選択されているNANDフラッシュチップへデータを書き込むべき前記特定の物理的位置は、(i)最もアクセスされていないページおよび(ii)最も長く用いられていないページのうちの少なくとも1つに基づいて決定される、請求項1〜3のいずれか1項に記載のメモリデバイス。
  5. 前記メモリセクションは、前記それぞれのNANDフラッシュチップのパーティションを含み、パーティションは、同じそれぞれのNANDフラッシュチップの別のパーティションにおける書込動作の間、前記それぞれのNANDフラッシュチップの第1のパーティションにおける読出の動作を可能にする、請求項1〜4のいずれか1項に記載のメモリデバイス。
  6. 前記メモリセクションはそれぞれの構成要素であるNANDフラッシュチップを含む、請求項1〜5のいずれか1項に記載のメモリデバイス。
  7. 前記複数のNANDフラッシュチップは、入出力(I/O)バスに結合されたモジュールの部分であり、前記モジュールはさらに前記DRAM部を含み、前記DRAM部の前記第2のストレージキャパシティは、各NANDフラッシュチップの前記第1のストレージキャパシティの約2倍のサイズである、請求項1〜6のいずれか1項に記載のメモリデバイス。
  8. 前記複数のNANDフラッシュチップは入出力(I/O)バスに結合され、前記DRAM部は、DRAMを含むメインメモリの部分である、請求項1〜6のいずれか1項に記載のメモリデバイス。
  9. 前記複数のNANDフラッシュチップおよび前記DRAM部は、メモリバスに結合されたモジュールの部分であり、前記DRAM部の前記第2のストレージキャパシティは、各NANDフラッシュチップの前記第1のストレージキャパシティの2倍と少なくとも同じ大きさである、請求項1〜6のいずれか1項に記載のメモリデバイス。
  10. 前記少なくとも1つのコントローラは、
    前記複数のNANDフラッシュチップに格納された特定のページにアクセスする要求に応答して、前記特定のページを前記複数のNANDフラッシュチップからDRAMを含むメインメモリに読み込むように構成される、請求項1〜9のいずれか1項に記載のメモリデバイス。
  11. 方法であって、
    データを書き込むために、現在選択されているNANDフラッシュチップとして、複数のNANDフラッシュチップのうちの1つを選択することを含み、前記複数のNANDフラッシュチップの各々はメモリセクションを含み、各メモリセクションは複数のページを含み、各NANDフラッシュチップは第1のストレージキャパシティを有し、
    前記方法はさらに、前記現在選択されているNANDフラッシュチップにおけるすべての有効なページを、前記NANDフラッシュチップとデータ通信を行うダイナミックランダムアクセスメモリ(DRAM)部へコピーすることを含み、前記DRAM部は、前記複数のNANDフラッシュチップの各々の前記第1のストレージキャパシティと少なくとも同じ大きさの第2のストレージキャパシティを有し、前記DRAM部は、前記複数のNANDフラッシュチップをスワップ空間として利用し、
    前記方法はさらに、前記NANDフラッシュチップのうちの1つにおける特定の物理的位置にマッピングされている論理メモリ位置への書込要求に応答して、前記特定の物理的位置を含む特定のページへの書込のために、前記現在選択されているNANDフラッシュチップを割り当てることを含む、方法。
  12. 前記現在選択されているNANDフラッシュチップが満杯であると識別された後、データを書き込むために、キューに登録されているNANDフラッシュチップとして、前記複数のNANDフラッシュチップのうちの別のものを選択することと、
    前記キューに登録されているNANDフラッシュチップにおけるすべての有効なページを前記DRAM部へコピーすることとをさらに含む、請求項11に記載の方法。
  13. 前記複数のNANDフラッシュチップのうちの前記別のものは、前記複数のNANDフラッシュチップのうち最も少ない数の有効なページを有していることに基づいて、キューに登録されているNANDフラッシュチップとして選択される、請求項12に記載の方法。
  14. 前記現在選択されているNANDフラッシュチップへデータを書き込むべき前記特定の物理的位置は、(i)最もアクセスされていないページおよび(ii)最も長く用いられていないページのうちの少なくとも1つに基づいて決定される、請求項11〜13のいずれか1項に記載の方法。
  15. 前記メモリセクションは、前記それぞれのNANDフラッシュチップのパーティションを含み、パーティションは、同じそれぞれのNANDフラッシュチップの別のパーティションにおける書込動作の間、前記それぞれのNANDフラッシュチップの第1のパーティションにおける読出の動作を可能にする、請求項11〜14のいずれか1項に記載の方法。
  16. 前記メモリセクションはそれぞれの構成要素であるNANDフラッシュチップを含む、請求項11〜15のいずれか1項に記載の方法。
  17. 前記複数のNANDフラッシュチップは、入出力(I/O)バスに結合されたモジュールの部分であり、前記モジュールはさらに前記DRAM部を含み、前記DRAM部の前記第2のストレージキャパシティは、各NANDフラッシュチップの前記第1のストレージキャパシティの約2倍のサイズである、請求項11〜16のいずれか1項に記載の方法。
  18. 前記複数のNANDフラッシュチップは入出力(I/O)バスに結合され、前記DRAM部はDRAMを含むメインメモリの部分である、請求項11〜16のいずれか1項に記載の方法。
  19. 前記複数のNANDフラッシュチップおよび前記DRAM部はモジュールの部分であり、前記DRAM部の前記第2のストレージキャパシティは、各NANDフラッシュチップの前記第1のストレージキャパシティの2倍と少なくとも同じ大きさである、請求項11〜16のいずれか1項に記載の方法。
  20. 前記複数のNANDフラッシュチップに格納された特定のページにアクセスする要求に応答して、前記特定のページを前記複数のNANDフラッシュチップからDRAMを含むメインメモリに読み込むことをさらに含む、請求項11〜19のいずれか1項に記載の方法。
JP2016217980A 2015-11-09 2016-11-08 メモリデバイスおよび方法 Active JP6339645B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/936,486 2015-11-09
US14/936,486 US9880778B2 (en) 2015-11-09 2015-11-09 Memory devices and methods

Publications (2)

Publication Number Publication Date
JP2017097861A JP2017097861A (ja) 2017-06-01
JP6339645B2 true JP6339645B2 (ja) 2018-06-06

Family

ID=57256152

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016217980A Active JP6339645B2 (ja) 2015-11-09 2016-11-08 メモリデバイスおよび方法

Country Status (7)

Country Link
US (1) US9880778B2 (ja)
EP (1) EP3166019B1 (ja)
JP (1) JP6339645B2 (ja)
KR (1) KR101823983B1 (ja)
CN (1) CN107025179B (ja)
SG (1) SG10201609225QA (ja)
TW (1) TWI617972B (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606484B2 (en) 2017-06-23 2020-03-31 Google Llc NAND flash storage device with NAND buffer
CN110287128B (zh) * 2019-05-21 2021-06-04 北京融芯微科技有限公司 一种融合闪存的cpu虚拟dram控制器
CN114115507B (zh) * 2021-11-30 2023-08-08 杭州海康威视数字技术股份有限公司 存储器及写数据的方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07114500A (ja) 1993-10-19 1995-05-02 Matsushita Electric Ind Co Ltd 不揮発性メモリ記憶装置
JPH08129509A (ja) 1994-11-01 1996-05-21 Canon Inc メモリ制御装置及び方法
JP2002251884A (ja) * 2001-02-21 2002-09-06 Toshiba Corp 半導体記憶装置及びそのシステム装置
JP4049297B2 (ja) * 2001-06-11 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
KR100786603B1 (ko) * 2002-11-28 2007-12-21 가부시끼가이샤 르네사스 테크놀로지 메모리 모듈, 메모리시스템 및 정보기기
US7681004B2 (en) 2005-06-13 2010-03-16 Addmm, Llc Advanced dynamic disk memory module
JP2007041813A (ja) * 2005-08-02 2007-02-15 Toshiba Corp 情報処理システムおよび情報処理方法
US8060696B2 (en) * 2007-04-27 2011-11-15 Siemens Medical Solutions Usa, Inc. Positron emission tomography event stream buffering
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
CN100547566C (zh) 2007-06-28 2009-10-07 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的控制方法
JP2009032324A (ja) 2007-07-26 2009-02-12 Spansion Llc 複数のメモリブロックを備える不揮発性記憶装置
US8185685B2 (en) * 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
US8332572B2 (en) * 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
JP4745356B2 (ja) * 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
KR101067457B1 (ko) * 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP5032371B2 (ja) 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US8738840B2 (en) 2008-03-31 2014-05-27 Spansion Llc Operating system based DRAM/FLASH management scheme
KR101056560B1 (ko) 2009-02-11 2011-08-11 (주)인디링스 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치
US8566639B2 (en) 2009-02-11 2013-10-22 Stec, Inc. Flash backed DRAM module with state of health and/or status information accessible through a configuration data bus
EA027524B1 (ru) 2009-06-22 2017-08-31 Ампио Фармасьютикалс, Инк. Способ ингибирования гиперпроницаемости сосудов при отеке маклы
US8296496B2 (en) * 2009-09-17 2012-10-23 Hewlett-Packard Development Company, L.P. Main memory with non-volatile memory and DRAM
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
JP5010723B2 (ja) * 2010-09-22 2012-08-29 株式会社東芝 半導体記憶制御装置
WO2012048444A1 (en) * 2010-10-14 2012-04-19 Freescale Semiconductor, Inc. Are Memory controller and method for accessing a plurality of non-volatile memory arrays
JP2012133416A (ja) * 2010-12-17 2012-07-12 Toshiba Corp メモリシステム
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US20140281157A1 (en) 2013-03-13 2014-09-18 Kabushiki Kaisha Toshiba Memory system, memory controller and method
JP6021759B2 (ja) 2013-08-07 2016-11-09 株式会社東芝 メモリシステムおよび情報処理装置
KR20150055413A (ko) 2013-11-13 2015-05-21 에스케이하이닉스 주식회사 데이터 저장 장치

Also Published As

Publication number Publication date
KR20170058278A (ko) 2017-05-26
CN107025179A (zh) 2017-08-08
US20170131908A1 (en) 2017-05-11
CN107025179B (zh) 2020-12-08
SG10201609225QA (en) 2017-06-29
TWI617972B (zh) 2018-03-11
EP3166019B1 (en) 2021-07-07
US9880778B2 (en) 2018-01-30
TW201719381A (zh) 2017-06-01
JP2017097861A (ja) 2017-06-01
KR101823983B1 (ko) 2018-01-31
EP3166019A1 (en) 2017-05-10

Similar Documents

Publication Publication Date Title
US11620060B2 (en) Unified hardware and software two-level memory
US9009397B1 (en) Storage processor managing solid state disk array
CN109144887B (zh) 存储器系统及控制非易失性存储器的控制方法
US9304828B2 (en) Hierarchy memory management
CN114402282B (zh) 存取存储的元数据以识别存储数据的存储器装置
JP6384375B2 (ja) 情報処理装置、記憶装置制御方法、記憶装置制御プログラム及び情報処理システム
US20170083444A1 (en) Configuring fast memory as cache for slow memory
US10769074B2 (en) Computer memory content movement
KR20200121372A (ko) 하이브리드 메모리 시스템
JP6339645B2 (ja) メモリデバイスおよび方法
KR20160064720A (ko) 캐시 메모리 장치 및 이를 포함하는 전자 시스템
CN112286838A (zh) 存储设备可配置的映射粒度系统
KR20200117032A (ko) 하이브리드 메모리 시스템
CN114610654A (zh) 一种固态存储设备以及向其写入数据的方法
CN110119245B (zh) 用于操作nand闪存物理空间以扩展存储器容量的方法和系统
KR20220162605A (ko) 메모리 시스템에서 페이지 마이그레이션을 위한 시스템, 방법 및 장치
US20230153031A1 (en) Storage device supporting multi-host and operation method thereof
US11314650B2 (en) Operating method of memory system that checks stored data that is reused and generating a flag/bit signal
JP7167295B2 (ja) メモリシステムおよび制御方法
JP7337228B2 (ja) メモリシステムおよび制御方法
US20180074961A1 (en) Selective application of interleave based on type of data to be stored in memory
JPWO2018235149A1 (ja) ストレージ装置及び記憶領域管理方法
US20240069796A1 (en) Memory controller including memory manager for mapping buffer idnentifier to segment
EP4120087A1 (en) Systems, methods, and devices for utilization aware memory allocation
EP4033346A1 (en) Affinity-based cache operation for a persistent storage device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170303

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171107

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180404

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180417

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180510

R150 Certificate of patent or registration of utility model

Ref document number: 6339645

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250