JP2016501403A - ソリッドステートドライブアーキテクチャ - Google Patents

ソリッドステートドライブアーキテクチャ Download PDF

Info

Publication number
JP2016501403A
JP2016501403A JP2015543117A JP2015543117A JP2016501403A JP 2016501403 A JP2016501403 A JP 2016501403A JP 2015543117 A JP2015543117 A JP 2015543117A JP 2015543117 A JP2015543117 A JP 2015543117A JP 2016501403 A JP2016501403 A JP 2016501403A
Authority
JP
Japan
Prior art keywords
flash
data
dram
flash memory
drive
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.)
Granted
Application number
JP2015543117A
Other languages
English (en)
Other versions
JP6465806B2 (ja
JP2016501403A5 (ja
Inventor
アイ. ペドル,チャールズ
アイ. ペドル,チャールズ
スネルグローブ,マーティン
マッケンジー,ロバート
スネルグローブ,ザビエル
Original Assignee
アイ. ペドル,チャールズ
アイ. ペドル,チャールズ
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 アイ. ペドル,チャールズ, アイ. ペドル,チャールズ filed Critical アイ. ペドル,チャールズ
Publication of JP2016501403A publication Critical patent/JP2016501403A/ja
Publication of JP2016501403A5 publication Critical patent/JP2016501403A5/ja
Application granted granted Critical
Publication of JP6465806B2 publication Critical patent/JP6465806B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
    • G11C14/0018Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell whereby the nonvolatile element is an EEPROM element, e.g. a floating gate or metal-nitride-oxide-silicon [MNOS] transistor
    • 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
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0408Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Retry When Errors Occur (AREA)

Abstract

ソリッドステートドライブはDRAM論理フラッシュ及びフラッシュメモリを備える。ここで、システムプロセッサはDRAM論理フラッシュにのみ読み出し及び書き込みを行い、フラッシュメモリへの書き込みを最小化する。ソリッドステートフラッシュデバイスの動作方法は、フラッシュコマンドを用いてコマンド及びデータをDRAM論理フラッシュに送信しフォーマッティングすることで、CPUによりソリッドステートドライブへの書き込みを行うことを含む。

Description

関連出願
[0001] 本願は、2012年11月20日に提出された米国仮出願第61/728,394号及び2013年3月8日に提出された米国仮出願第61/775,327号について、米国特許法第119条(e)に基づく利益を請求し、それらの全体が参照により本明細書に組み込まれる。
[0002] 演算装置は、プログラム実行可能物(program executables)及びデータを不揮発性メモリに保存する。これにより、演算装置は、再起動後又は電源遮断後にファイルを利用できる。従来、多数のファイルにとって好適な不揮発性記憶装置はハードディスクドライブであった。ハードディスクドライブは、モータ駆動されるスピンドル上で回転する硬性のプラッタを備えている。データは、プラッタの上方で空気の膜の上に浮いているヘッドによって、磁気的にプラッタから読み出されるとともにプラッタに書き込まれる。こうしたプラッタは、一般的には毎分4,200乃至15,000回転(rpm)の速度で回転する。ハードディスクドライブには、回転ディスク及び可動ヘッドの機械的な特性に関係するアクセスタイム、高い電力消費、機械的故障、低衝撃耐性など、多数の短所がある。
[0003] ソリッドステートドライブ(SSD)は、集積回路を用いてデータを記憶する不揮発性記憶装置であり、したがって何ら可動部分を含まない。SSDには、より高い衝撃耐性、より短いアクセスタイム、より可変的なフォームファクタなど、ハードディスクドライブに比べて多数の長所がある。また、SSDは一般的に、動作中、ハードディスクドライブよりもはるかに少ない電力を消費する。したがって、SSDによれば、より小さく薄い装置外形と、充電でのより長い動作とが可能である。
[0004] 添付の図面は本明細書に記載されている原理の様々な例を示すものであって、明細書の一部である。図示される例は単なる例に過ぎず、特許請求の範囲を限定しない。
[0005] 本明細書に記載された原理の一例による例示的なソリッドステートドライブアーキテクチャのブロック図である。 [0006] 本明細書に記載された原理の一例によるフラッシュメモリモジュールのブロック図である。 [0007] 本明細書に記載された原理の一例による、図2に示すフラッシュメモリモジュールを組み込んだ例示的なソリッドステートドライブアーキテクチャのブロック図である。 [0008] 本明細書に記載された原理の一例による、CPU/CPUメモリと、DRAM論理フラッシュと、フラッシュメモリとの間で発生する様々な相互作用及びプロセスの図である。 [0009] 本明細書に記載された原理の一例によるソリッドステートドライブへのデータの書き込み時のデータフローを示す。 [0010] 本明細書に記載された原理の一例によるソリッドステートドライブへのデータ書き込み方法を説明するフローチャートである。 [0011] 本明細書に記載された原理の一例によるソリッドステートドライブからCPUメモリへのデータの読み出し時のデータフローを示す。 [0012] 本明細書に記載された原理の一例によるソリッドステートドライブからCPUメモリへのデータ読み出し方法を説明するフローチャートである。 [0013] 本明細書に記載された原理の一例によるシステム状態のスナップショットの保存方法を示すフローチャートである。 [0014] 本明細書に記載された原理の一例による、SSDからCPUメモリへとプログラムファイルをファストロードする例示的な方法のフローチャートである。 [0015] 本明細書に記載された原理の一例によるデータダンプ/復元方法のフローチャートである。 [0016] 本明細書に記載された原理の一例による誤処理ファイルの復元方法のフローチャートである。
[0017] 図面全体を通じて、同一の参照番号は必ずしも同一ではないが類似の要素を指す。
[0018] ソリッドステートドライブ(SSD)は、NANDフラッシュメモリなどの集積回路を用いてデータを記憶する不揮発性記憶装置である。SSDには、高い衝撃耐性、低い所要電力、より速いアクセスタイム、より可変的なフォームファクタといった多数の長所がある。しかしながら、ソリッドステートドライブにおいて、メモリとして使用される集積回路の寿命は限られている。NANDフラッシュの標準的な仕様書は、NANDフラッシュが故障するまでに確実に使用できるのはたった1000乃至3000書き込み/消去サイクルであると規定している。現在のアーキテクチャでは、NANDフラッシュのブロックは、そのブロックに含まれているデータのどこか一部分が変更されるたびに消去及び書き換えられなければならないため、この寿命限界は特に厄介である。したがって、SSDドライブは、頻繁に使われれば使われるほど、急速に故障するであろう。多くのオペレーティングシステムは、頻繁に不揮発性メモリへの書き込みを行う。例えば、ファイルアクセステーブル(FATテーブル)は、ファイル変更のたびに書き換えられる。FATテーブル更新は、その都度複数の消去/書き込みサイクルを含む。また、多くのオペレーティングシステムは、演算装置の現在の状態の「スナップショット」を不揮発性メモリに定期的に保存する。これは演算装置の動作の復元において有益であり得るが、その一方で、多数のスナップショットをNANDフラッシュ上にルーチン的に保存することは、SSDの寿命を顕著に縮めることになり得る。その結果、SSDは、顧客の期待に応えることができず、頻繁な交換を必要とする可能性がある。
[0019] 以下には、フラッシュメモリが、消去/書き込みサイクルの回数が限られているにもかかわらず、不揮発性記憶装置として効果的に使用され得る多数の原理を説明する。以下に説明するソリッドステートドライブ(SSD)アーキテクチャは、DRAM論理フラッシュにフラッシュメモリとの間の仲介として機能させ、その後データがいつNANDフラッシュメモリに書き込まれるべきかを独立して見極めることにより、NANDフラッシュメモリの制限に対処する。これは、SSDの動作速度及び寿命を顕著に向上させるとともに、SDDがハードディスクドライブに代わるプラグアンドプレイ式の代替物として用いられることを可能にする。
[0020] 演算装置におけるデータ利用は、一般に2つのカテゴリに分類される。すなわち、データの作成/操作中の大量利用と、それよりも遥かに少量の、機能しているプログラムとしてデータがアーカイブ又は記憶されるときの利用である。例示的なSSDは、演算装置の過渡状態に関するデータを記憶するプロセスと、フラッシュに対する永久的な記憶能力とを分ける。
[0021] 演算装置がパワーダウンされると、演算装置の揮発性メモリにより記憶されたデータは失われる。後述のSSDは、データがプログラム又はデータファイルの開発中に記憶されることを可能にするとともに演算装置のパワーダウン時のデータ損失に対する保護を行うことによって、データファイルの作成を容易にする。
[0022] SSDは、最適な数のフラッシュメモリ装置を管理するいくつかのフラッシュインタフェースコントローラを含む。USB2デバイスのような単純なシステムにおいては、1つの中間コントローラを用いてフラッシュを直接管理することができる。しかしながら、高速システムにおいては、いくつかのコントローラを並列で動作させて、はるかに迅速にデータを管理することが可能である。後述する原理は、SATA3(毎秒500メガバイト)などの幅広い種類のバス及びデバイス技術、USB3.0ソリッドステートドライブなどのUSB3.0「超高速」装置及び記憶装置にも適用可能である。USB3.0仕様書は、最大で毎秒4.8ギガビットの転送レート、増大された最大バスパワー及びより効率的な電力管理を規定している。
[0023] 以下の記述においては、説明の目的で、本システム及び方法の完全な理解をもたらすために多数の特定の詳細が記載されている。しかしながら、当業者には、本装置、システム及び方法がこれらの特定の詳細なしに実施されてもよいことが自明であろう。本明細書において「例」又は類似の文言を参照する場合には、その例に関連して記載されている特定の特徴、構造又は特性が、少なくともその1つの例には含まれるが必ずしも他の例には含まれないことを意味する。
[0024] 下記のいくつかの事例では、少なくとも1つのマイクロプロセッサ、リードオンリーメモリ(ROM)及びランダムアクセスメモリ(RAM)を備えたコントローラが説明される。これらのマイクロプロセッサ、ROM及びRAMは、協働してコントローラの機能を実行する。本明細書に記載の原理を実行するためには、異なる制御及び/又はハードウェア実装を備えた異なるマイクロプロセッサが用いられてもよい。
[0025] 図1は、論理フラッシュ及び不揮発性フラッシュメモリを備えたソリッドステートドライブの一実装形態を示す。論理フラッシュは、独立コントローラと揮発性メモリの1セグメントとを含む。論理フラッシュは、実際には論理フラッシュへの読み出し及び書き込みを行っているときにフラッシュへの読み出し及び書き込みを行っていると中央処理装置(CPU)が考えるように、フラッシュコントローラのすべての機能を実行するよう構成されている。論理フラッシュは、フラッシュメモリの挙動を実行するが、フラッシュメモリの寿命、速度、アドレス指定という制限は有さない。論理フラッシュは、フラッシュメモリと同じようにファイルを記憶し、フラッシュコマンドに応答する。また、論理フラッシュは、FATテーブルを使用し、論理レコードを更新し、ファイルを結合し、SATA3バスに取り付けられる。論理フラッシュの揮発性メモリは事実上無限数の書き込み/読み出しサイクルを有するため、システムプロセッサ及びオペレーティングシステムは所望の限り多くの更新及びスナップショットを記憶できる。また、論理フラッシュはデータの読み出し及び書き込みの両方において極めて速い。CPUは専ら論理フラッシュからの読み出し及び論理フラッシュへの書き込みを行い、その一方でフラッシュメモリへの書き込み及び読み出しはソリッドステートドライブのみによって制御される。論理フラッシュの使用により、すべてのフラッシュコマンドが最大インタフェース速度で処理可能となるとともに、フラッシュメモリへの書き込みが最小化される。これはキャッシングとは異なる。なぜなら、キャッシングは結局のところ、すべてをフラッシュメモリに書き込み、加速と短い読み出し及び書き込みの処理とのためだけに実行されるものであるためである。
[0026] SSD内のマスタコントローラは、データがいつフラッシュメモリへ/から転送されるべきかを独立して判断する。これによりフラッシュメモリの書き込み/消去サイクルが著しく少なくなる。なぜなら、CPUがフラッシュメモリに直接アクセスしないためである。
[0027] フラッシュメモリは多数のフラッシュメモリモジュールを備えている。各フラッシュメモリモジュールは、独立コントローラと、多数のフラッシュダイとを含む。独立コントローラを用いることにより、SSDは複数の動作を並列で実行することができる。その結果、読み出し及び書き込み時間が顕著に速くなる。
[0028] 以降の段落では、論理フラッシュ及び複数のコントローラを内蔵するSSDを作成するための種々の原理を説明する。SSDは、現在のところ、ギガバイト当たりがハードディスクドライブよりも高価な記憶装置である。これは主に、SSDにデータを記憶するために用いられる不揮発性メモリダイ(die)のコストに起因する。メモリダイは、強誘電体ランダムアクセスメモリ(FeRAM)、磁気抵抗ランダムアクセスメモリ(MRAM)、プログラマブル金属化セル(PMC)、相変化メモリ(PCM)及び他の技術など、他の種類のメモリが提案されてはいるものの、一般的にはフラッシュメモリである。これらの種類の不揮発性メモリには、各々長所と短所とがある。しかしながら、フラッシュメモリが最も成熟した技術であり、記憶容量の単位当たりのコストが最も低い。フラッシュメモリには2つの主な種類、NOR型及びNAND型がある。NORフラッシュ及びNANDフラッシュはいずれも、フローティングゲートトランジスタでできたメモリセルにデータを記憶する。これらのフローティングゲートトランジスタは、摩耗が始まり記憶装置の完全性が劣化するまでのプログラム・消去サイクル数が有限である。例えば、NORフラッシュメモリが有する典型的な耐久定格は100,000サイクル、NANDフラッシュメモリが有する典型的な耐久定格は1,000乃至3000サイクルであり得る。
[0029] NOR型フラッシュメモリによれば、1バイトが独立して書き込み及び/又は読み出しされることが可能となる。しかしながら、このランダムアクセス特性は、NORメモリの単位面積当たりをより低密度にするとともに、記憶装置の単位当たりをより高価にする。NAND型フラッシュは非常に高密度であり、それに対応して記憶装置の単位当たりがより低コストである。しかしながら、現在のチップアーキテクチャにおいては、NAND型フラッシュはブロックと称されるより大きなセグメントで読み出し、及びプログラムされなければならない。こうした制限は、あるブロック内の1ビットの変更がブロック内の書き込まれたスペース全体の消去及び書き換えを必要とするため、深刻である。説明の目的で、ソリッドステートドライブアーキテクチャの例示的な例においてはNAND型フラッシュを用いることとする。しかしながら、本明細書に記載の原理は、幅広い不揮発性メモリの種類に適用可能である。
[0030] 上述のように、NAND型フラッシュは安価で小型であるが、摩耗が始まり記憶装置の完全性が劣化するまでのプログラム・消去サイクル数が有限であるという短所を有する。この難問は、NAND型フラッシュがビットレベルで読み出し可能であるのに対し、NAND型フラッシュはビットレベルではなくより大きなセグメント(「ブロック」)で書き込み及び消去されなければならないという事実によって悪化する。したがって、ブロック内のいずれかのビットが変化すると、そのブロック内のすべてのデータが新たなブロックへとコピーされなければならない。コピーのプロセスの際に、新たなビットは、新たなブロックに記憶されたデータに組み込まれる。その後、古いブロックは消去されて再び用いられる。多くの演算装置上のプログラム及びオペレーティングシステムは頻繁にハードドライブへの読み出し及び書き込みを行うもので、これはNANDフラッシュの急速な劣化に繋がり得る。こうした業界標準の動作においては、ブロック内のたとえ1ビットを変更しても、ブロック全体のコピー及び消去が必要となる。以下の検討においては、いっぱいになるまでブロックを保留し、既に書き込まれたページを更新するだけの原理を説明する。
[0031] いくつかのApple(登録商標)のオペレーティングシステムでは、ユーザがマシンを以前の状態に修復できるようにするために、ユーザのファイルがハードドライブに連続的に書き込まれる。システムが最新の状態に復元するだけでなく、「タイムマシン」と呼ばれるプログラムがあり、これが、システムが数か月前の任意の過去の状態に修復されることを可能にする。このプログラムはスナップショットを圧縮し、ある日までの復元を可能にするが、その日の任意の時間までとはいかない。けれども、スナップショットが維持され得るため、過去数日間の特定の時点までの復元が可能である。このタイムマシン特性は、誤処理されたり、喪失したファイルを復元したりするには非常に有用であり得る。誤りが発生したよりも前の時刻に復元することで、ファイル及びシステム状態の完全な復元が可能になる。
[0032] これら及び他の頻繁な書き込み動作は、限られた量の書き込み/消去サイクルがすぐに超過されてしまうため、フラッシュメモリの早期の故障を招き得る。新しい書き込みの度に、新しいデータを追加するために古いデータを新しいブロックにコピーする必要がある。上述のように、NANDメモリの各メモリ位置が実質的に故障の尤度を上げることなく更新され得るのは、たったの約1,000乃至3,000回である。メモリへのスペアのオーバープロビジョニングや、摩耗を同じブロックに集中させるのではなくフラッシュメモリ全体にわたって均等に分散しようとするウェアレベリングアルゴリズムなど、この問題を克服しようとする多くのアルゴリズムが存在する。しかしながら、これらの技術は、コストを増大させ、ソリッドステートドライブの性能を低下させるおそれがある。
[0033] 下記の例は様々なソリッドステートドライブ(SSD)アーキテクチャ、方法及び原理を説明する。これらのSSDは、不揮発性記憶装置としてフラッシュメモリを内蔵しており、従来のSSDよりも1桁長い寿命を有するとともに、フラッシュメモリの制限にもかかわらず最大バス速度で動作するよう設計されている。
例示的なフラッシュメモリモジュール
[0034] 図2は例示的なフラッシュメモリモジュールの図である。上述のように、フラッシュメモリは、電気的に消去され再プログラムされることの可能な不揮発性コンピュータ記憶装置である。上述のように、フラッシュメモリは、機械的衝撃に対する高い耐性と、小さな設置面積と、ダイナミックランダムアクセスメモリ(RAM)に匹敵する比較的速い読み出し時間とを有し、エネルギ効率が高く、電力を用いずにデータを何年も記憶することができる。フラッシュメモリは、パーソナルコンピュータ、モバイル機器、デジタルカメラ、ビデオゲーム、科学装置、産業ロボット、電子医療機器及び他のデバイスなど、種々の用途で用いられる。フラッシュメモリには、遅い書き込み時間や限られた寿命など、いくつかの制限がある。フラッシュメモリに関しては、書き込み時間が一般的に読み出し時間よりも1桁大きい。様々な種類のフラッシュメモリの寿命は、典型的には1000乃至3000消去サイクルの範囲に及ぶ。フラッシュメモリの消去は逐次増加する損傷を引き起こし、これが最終的にはフラッシュメモリのメモリ機構の故障に繋がる。
[0035] 図2に示す例示的なフラッシュメモリモジュールは多数のNANDフラッシュダイを備える。メモリコントローラはプロセッサと、少量のランダムアクセスメモリ(RAM)と、少量のリードオンリーメモリ(ROM)と、多数のメモリバッファとを備える。このメモリコントローラの例は、チャールズ・I・ぺドルの「高速USBコントローラ」と題された米国特許出願第61/774,175号;代理人整理番号034901−303891に挙げられている。同文献は上記参照によりその全体が本明細書に組み込まれる。例えば、メモリコントローラは、20キロバイトのプロセッサによるアドレス指定可能なRAMと、オペレーティングコードを記憶するための40キロバイトのROMと、8つのメモリバッファとを有する6502プロセッサに基づいていてもよい。メモリコントローラは、外部バスからのデータを受け付け、そのデータをバッファに蓄積し、そのデータをNANDフラッシュダイに書き込む。外部バスはUSBバス又は高速内部バスであってもよい。
[0036] メモリコントローラは、高速ダイレクトメモリアクセス(DMA)及びフラッシュDMAも備える。一般に、DMAプロトコルは、データ転送中にメモリアドレスを自動的に漸次インクリメントするアドレスカウンタを含む。DMAプロトコルは、転送されたバイト数の変化を記録するカウンタも含む。DMA転送を開始するためには2つのコマンド、開始するメモリ位置と、何バイトを転送するのかをDMAに通知するカウントとが与えられる。DMAは、指定されたメモリ位置から始めてカウントが尽きるまで、データを独立して転送する。DMAプロトコルの目的は、メモリクロック及びイネーブル以外の外部入力を要さずに、メモリへ及びメモリからの最大速度での転送を可能にすることである。これにより、マイクロプロセッサがデータ転送に直接携わる必要が完全になくなる。このことは、より高い転送速度を可能にする。なぜなら、データ転送が、マイクロプロセッサ速度によって制限されたり、MPUが異なるタスクにリダイレクトされるときに中断されたりしないためである。
[0037] 本願においては、異なる機能性を有する2つの独立したDMAが存在している。高速DMA(「バスDMA」)は高速バスからメモリバッファ群へのデータの転送を制御し、フラッシュDMAはデータをフラッシュへ及びフラッシュから転送する。一実施形態においては、高速バスからメモリバッファへのデータ転送は最も優先度の高いプロセスであり、割り込み駆動される。フラッシュへ又はフラッシュからのデータ移動はポーリングにより行われる。これは、このプロセスがわずかな妨害により中断され得るためである。また、ポーリングは、フラッシュメモリへのタイミング信号に対するポジティブ制御(positive control)を生成する。
[0038] 2つの別々のDMAモジュール(高速DMAモジュール及びフラッシュDMAモジュール)の使用はいくつかの利点を提供する。第一に、2つの別々のDMAモジュールを備えることによって、データが同時にメモリバッファに書き込まれ得るとともにメモリバッファから読み出され得る。また、別々のDMAモジュールは別々に動作可能であるとともに別々に制御可能であり、データ転送を容易にする。例えば、高速DMAは、フラッシュDMAが異なるメモリバッファからより低速でデータを読み出している間に、高速クロックで動作してデータを1つのメモリバッファに書き込んでいてもよい。対照的に、フラッシュDMAは、フラッシュクロックで動作するとともに、ポーリングによって操作されてもよい。さらに、フラッシュメモリモジュールは、誤り訂正符号(ECC)を生成し、記憶し、使用して、書き込み及び/又は記憶不良に起因する有限数のエラーを有するデータを自動的に復元する。高速バスで受信されたデータに加え、フラッシュメモリモジュールは、摩耗回数、論理レコード番号、更新回数、及び他のデータなどの追加的な情報もフラッシュメモリに書き込む。このプロセスを以下に詳述する。レジスタは様々なクロックレートで作動可能であり、様々な機能の間で切り替えられる。
[0039] 上述の構造及びアーキテクチャはフラッシュメモリ装置の一例に過ぎない。種々の他の構造が用いられ得る。例えば、より大きなメモリバッファ、より大きなセクタサイズ、より多くのメモリバッファ、異なる数のメモリバッファ及び異なる数のフラッシュダイがアーキテクチャに含まれ得る。
例示的なソリッドステートドライブアーキテクチャ
[0040] 図3は、図2に関して上述したもののような多数のフラッシュメモリモジュールを内蔵するSSDアーキテクチャの例示的な例を示す。SSDアーキテクチャはSATAデータレートを維持するとともにNANDフラッシュメモリの寿命の制限を軽減することができる。本例においては、SSD外部の中央処理装置(CPU)は、SATAバスに接続されている。SSDドライブはデータ入力を受け付け、コマンドを出し、SATAバスを介してデータを出力する。この出力データは、当初はDRAM論理フラッシュに記憶される。DRAM論理フラッシュは、DRAMコントローラと、ダイナミックランダムアクセスメモリ(DRAM)の大群とを含む。DRAM論理フラッシュは高速内部バスに接続されている。高速内部バスは、DRAM論理フラッシュとの接続に加え、フラッシュメモリ装置群と、マスタコントローラとに接続されている。実施形態によっては、高速内部バスの動作を制御する別個のバスコントローラがあってもよい。代替的には、マスタコントローラがバスコントローラの機能を実行するように、マスタコントローラ及びバスコントローラの機能性が結合されてもよい。高速内部バスはこれらのエンティティのいずれの間でも双方向通信を可能にする。バスコントローラ(又はバスコントローラとしての機能を果たすマスタコントローラ)はデータを受信又は転送する装置を独立して選択する。これにより、各装置につき個別に(及びいくつかの例においては連続的に)データフローが制御されることが可能になる。例えば、DRAMコントローラは、バスコントローラがデータをDRAMからフラッシュメモリ装置へと転送している間に、SATAバスからのデータを受け付けることができる。こうした同時動作により、より効率的な動作及びより高い全体のスループットが可能になる。フラッシュ動作には時間的な変動があり得るため、データの最後の同期は、高速バスを管理し論理フラッシュコントローラと協調するマスタ/バスコントローラによって行われる。このようなバランスを調整するアプローチは、SATAインタフェース又は他のインタフェースがSSDへの読み出し又は書き込み時に最大バス速度で作動することを可能にする。
コントローラ
[0041] SSDアーキテクチャは多数のコントローラを用いて内部データフローを管理する。マスタコントローラは演算装置の中央処理装置から命令を受信し、その命令を実行するようソリッドステートフラッシュドライブの動作を管理する。マスタコントローラは、バス、各フラッシュメモリ装置のフラッシュメモリコントローラ、及び論理フラッシュコントローラの動作を指揮する。一実装形態においては、これらのコントローラの各々は、既に述べたように、単純なマイクロプロセッサシステムである。例示的な一例によれば、コントローラ(マスタコントローラ及び任意的なバスコントローラ、DRAMコントローラ、8つのフラッシュコントローラ)の各々は、独自のマイクロプロセッサ、コードを記憶するためのROM、RAM、及びレジスタ群を備えた完全に独立したシステムである。例えば、コントローラは、32キロバイトのRAM及び24キロバイトのROMと組み合わせた6502プロセッサに基づいていてもよい。論理フラッシュコントローラは、DMA転送を制御し論理フラッシュコントローラとインタフェースをとることによって、DRAMへの及びDRAMからのデータ転送を管理する。論理フラッシュコントローラはマスタコントローラの指揮に基づいてDRAM論理フラッシュを管理する。マスタコントローラはDRAMとフラッシュメモリとの間でのデータの転送を管理する。個々のフラッシュコントローラはフラッシュメモリのページモード構造、誤り訂正、及びウェアレベリングを扱う。各フラッシュメモリ装置内のメモリコントローラは高速内部バスとNANDフラッシュダイとの間でのデータの転送を管理する。
[0042] 複数の内部コントローラの使用は多数の利点をもたらす。コントローラは、他のコントローラと柔軟に協調しながら、自身が制御している装置に特に適合された専用の機能を実行することができる。例えば、メモリコントローラは、第1のクロック速度では高速バスとインタフェースをとり、異なるクロック速度ではNANDフラッシュダイに書き込まれているデータを管理してもよい。また、メモリコントローラは、タスクを完了したときには、マスタコントローラに合図してもよい。これにより、マスタコントローラは、データ転送レートが最大となるように資源をインテリジェントに分配することができる。
ダイレクトメモリアクセスインタフェース
[0043] ダイレクトメモリアクセス(DMA)インタフェースは、バスに接続された各コントローラについてデータの転送を管理する。上述のように、DMAはハードウェア実装されたプロトコルであり、コンピュータ内のハードウェアサブシステムがコントローラとは無関係にシステムメモリにアクセスすることを可能にする。コントローラは、転送を開始し、転送の進行中には他の作業を行い、転送が完了するとDMAコントローラからフィードバックを受信することができる。例えば、SATA DMAはSATAバスからDRAM論理フラッシュへのデータの転送を処理する。バスDMAはDRAM論理フラッシュと高速内部バスとの間でのデータの転送を処理する。同様に、高速内部バスとフラッシュメモリ装置の各々との間のDMAインタフェースは、フラッシュメモリ装置へ及びフラッシュメモリ装置からのデータ転送を管理する。
[0044] DMA技術を用いることで、フラッシュの書き込みと、インタフェースへ/からのデータの転送との両方の速度が維持される。上述のように、DMAプロトコルはデータ転送中にメモリアドレスを自動的に漸次インクリメントするアドレスカウンタを含む。DMAプロトコルの目的は、メモリクロック及びイネーブル以外の外部入力なしにインタフェースを介した全速での転送を可能にすることである。これにより、マイクロプロセッサがデータ転送に直接携わる必要が完全になくなるとともに、より高い転送速度が可能になる。なぜなら、データ転送が、制御プロセッサにより制限されたり、制御プロセッサが異なるタスクにリダイレクトされるときに中断されたりしないためである。
[0045] DMA転送を開始するために、制御プロセッサが制御レジスタにアドレス、DMA動作の回数のカウント、及び他のイネーブリング機能をロードしてもよい。すると、データ転送は制御レジスタのパラメータの機能として発生する。DMAは、転送中に誤り訂正データ、論理レコード、及びハウスキーピング機能などの他のデータが追加されてもよいように設定され得る。DMAプロトコルは種々の応答をトリガしてデータ転送が完了したことを制御プロセッサに合図するか、あるいはステータスアップデートを提供することができる。これにより、DMA転送が完了するとすぐにデータがアクセス可能となる。また、割り込みを使用してデータ転送の状態を合図することにより、SSD内の複数のメモリ記憶コンポーネント間でのデータのポーリング式の並列分散が可能となる。
DRAM論理フラッシュ
[0046] DRAM論理フラッシュ内のDRAMはコンデンサの配列を利用してデータを記憶する。コンデンサは充電状態又は放電状態のいずれかであり得る。これらの2つの状態はビットの2つの値を表す。コンデンサは電荷をリークするので、コンデンサの状態は、コンデンサの電荷が定期的にリフレッシュされない限り、ゆくゆくはフェードする。このリフレッシュは、約10乃至100ミリ秒間隔で発生する。DRAMは非常に単純で、書き込み/読み出しサイクル摩耗は無視できる程度であり、ダイ上に非常に密にパックされ(packed)得る。また、DRAMは極めて速い書き込み及び読み出し時間を提供する(約10乃至100ナノ秒)。DRAMの動作はDRAMコントローラにより制御される。本例においては、DRAMは、総容量8ギガバイトのダブルデータレート型3シンクロナスダイナミックランダムアクセスメモリ(DDR3 SDRAM)を有する。他の実装形態においては、DRAMはより大きい(例えば16GB:ギガバイト)又はより小さいメモリ容量を有していてもよい。電力管理については、DRAMは800メガヘルツのクロック速度で動作することができる。しかしながら、設計には任意の適切なクロック速度及びDRAM容量が含まれ得る。DRAM論理フラッシュは、フラッシュと同じようにファイルを記憶し、フラッシュコマンドに応答する。また、DRAM論理フラッシュは、ファイル割り当てテーブルを使用し、論理レコードを更新し、ファイルを結合し、SATAバスに取り付けられる。
[0047] DRAM論理フラッシュは、多くの理由により、キャッシュではない。例えば、キャッシュはCPUがデータを探すための代替的な場所である。CPUは、データがキャッシュになければ、基礎をなす不揮発性メモリにアクセスする。対照的に、DRAM論理フラッシュは、CPUに直接アクセス可能なSSD内の唯一のメモリである。実際のNANDフラッシュはマスタコントローラの制御下にあり、CPUに直接アクセス可能ではない。DRAM論理フラッシュはCPUとNANDフラッシュとの間のゲートキーパとして機能する。NANDフラッシュをCPU命令から分離することにより、NANDフラッシュは、頻繁な書き込みなど、オペレーティングシステムの多数の特殊性にさらされない。これにより、オペレーティングシステムは、NANDフラッシュの寿命を保護しながら、修正なしに作動することができる。
[0048] データ及びファイルは、削除されるか又は何の活動も観察されなくなるまで、DRAM論理フラッシュのみに記憶される。一般に、DRAM論理フラッシュ内のデータは、データのユーザ制御のために論理レコードに基づいて編成され、様々なデータ記録の動作を制御するべくFATテーブルにより参照される。しかし、場合によっては、DRAM論理フラッシュは論理レコードを用いることなくデータを受信、記憶及び転送し得る。例えば、後述のスナップショット及びファストロード手順は論理レコードを用いない。しかしながら、DRAM論理フラッシュからフラッシュメモリへのデータの移動のすべてのデータ転送モードは、マスタコントローラのみによって支配される。マスタコントローラは、データ又はファイルがいつDRAM論理フラッシュから出されるのかについての決定を、ファイルの不使用など、多数の要素に基づいて下し得る。マスタコントローラにより受信されたCPUコマンドは、データをフラッシュへ/から移動させるマスタコントローラにいくらかの影響を有するかもしれないが、データの取得又は書き込みついて実際に決定を下すのはマスタコントローラである。例えば、CPUがデータファイルを要求すると、マスタコントローラが、そのファイルがDRAM論理フラッシュ内にあるかどうかを判断する。要求されたデータがDRAM論理フラッシュ内にない場合には、マスタコントローラがそのデータをフラッシュから取得してDRAM論理フラッシュに記憶する。
[0049] 場合によっては、ファイル及び/又はデータは、DRAM論理フラッシュ上にのみ記憶されてフラッシュメモリに転送されなくてもよい。例えば、過渡動作(検索など)用の一時データファイルが作成されてもよい。他の例においては、別のシステムに送信され又は遠隔システムにより記憶される手紙又は電子メール用のファイルが作成されてもよい。そのファイルは、遠隔システムに送信されると削除されてもよい。
[0050] キャッシュは、CPUには、キャッシュ内に実際に存在している物理メモリと全く同じ容量を有するように見える。それに対し、DRAM論理フラッシュは、DRAM論理フラッシュを構成するメモリの物理容量よりもはるかに大きい容量を有するように見える。DRAM論理フラッシュは、NANDフラッシュの作業用不揮発性メモリの合計に等しい容量を有するように見える。
[0051] キャッシュは、CPUには、揮発性メモリであるように見える。対照的に、DRAM論理フラッシュは、極めて速い不揮発性メモリであるように見える。CPUがデータをキャッシュに書き込むとき、CPUはデータが実際には不揮発性記憶装置内にあるとは思わない。CPUは、データが実際にキャッシュに従った不揮発性記憶装置に記憶されるまで、データフローを管理し続ける。キャッシュへの電力が予期せず喪失すると、キャッシュ内のデータは失われ、CPUはそれを用いずに復元しなければならない。すべてのキャッシュトランザクションは、フェイルするか、又はシステムの摩耗及び遅延を増大させる不揮発性フラッシュメモリに書き込まれる。
[0052] 一方、CPU及びオペレーティングシステムは、DRAM論理フラッシュが不揮発性メモリ記憶装置であると考える。DRAM論理フラッシュは、書き込まれたデータが、実際にはDRAM論理フラッシュに記憶されていても、不揮発性フラッシュメモリに記憶されていると報告する。SSDへの電力が喪失すると、CPUは、DRAM論理フラッシュに記憶されたデータは不揮発性メモリに記憶されているのだと正しく考える。SSDはDRAM論理フラッシュ内のデータをNANDフラッシュにダンプする内蔵式で電源内蔵型のシステムを有するので、これは正しい。一実装形態においては、NANDフラッシュは、DRAM論理フラッシュに記憶できるすべてのデータのデータダンプを収容するためのスペアを追加で設けて構成される。
[0053] キャッシュは、低速のメモリに記憶されたデータへのアクセスタイムを最小化するよう設計される。典型的なキャッシュ動作では、キャッシュは不揮発性記憶装置にできる限り迅速にデータを書き込むが、アクセスタイムを最小化するために、書き込まれたデータを保持し続ける。それに対して、DRAM論理フラッシュは、基礎をなすメモリへの書き込みを最小化するよう設計される。SSDのマスタコントローラは、DRAM論理フラッシュからフラッシュメモリへの転送に用いられていないデータのみを標的にする。
高速内部バス
[0054] 上述のように、高速内部バスは、バスと接続されたこれらのコンポーネントのいずれとの間でも双方向通信可能である。一例においては、マスタコントローラは、高速内部バスを介して、データを個々にメモリコントローラに向ける。フラッシュへの書き込み転送を実行するために、論理フラッシュコントローラ/インタフェースはDRAM論理フラッシュを高速内部バスに接続し、DRAM DMAを用いて指定されたファイルの場所への転送を行う。この技術を利用して、データは、CPUからDRAM論理フラッシュを通じてフラッシュメモリへと直接転送され得る。例えば、高速内部バスは8ビット幅で、少なくとも毎秒400メガバイト(MB)の速度で動作可能であってもよい。400メガヘルツで(又はそれを上回って)動作する8ビットバスを介するデータ転送レートは、毎秒約400メガバイトであろう。
フラッシュメモリ装置
[0055] 図2に関して上述したように、各フラッシュメモリ装置はメモリコントローラと、フラッシュメモリを構成する多数のNANDフラッシュダイとを含む。フラッシュメモリはセクタ、ページ、ブロック、及びプレーンに分けられる。本例においては、セクタは約512バイトで、ヘッダ及び誤り訂正符号(ECC)情報のための追加空間を備えている。他の実装形態においては、セクタはもっと大きくてもよい。ページはセクタの集合であり、ブロックはページの集合であり、プレーンはページを収集したものである。一例においては、ページは、データ用の8192バイトと、ヘッダ情報用の追加空間とを含む。ブロックは256ページの集合であってもよく、プレーンは2096ブロックの集合である。装置は任意の数のプレーンを含み得る。例えば、32ギガバイトの装置は2プレーン又は8,192ブロックを含み得る。256ギガバイトの装置は16プレーン又は65,536ブロックを含み得る。一般的に、あるセクタにおいて復元不可能又は修理不可能なフラッシュデータエラーが発生すると、ブロック全体が不良であるとしてマークされる。しかしながら、ページモードコントローラを用いれば、問題となっているページのみが不良であるとしてマークされ、マップされる。これは、チャールズ・I・ペドルの米国特許第8,122,319号にさらに説明されている。同文献は参照によりその全体が本明細書に組み込まれる。
[0056] 上述のように、従来、ブロック内の1つのページの1つのビットが動作不能である場合には、フラッシュメモリのブロック全体が使用不能であると考えられている。したがって、1つの不良ビットはフラッシュメモリの記憶容量を128KB以上減少させ得る。多くのブロックに複数の不良ビットが分散されていると、フラッシュメモリは容量基準を満たすことができず、破棄され得る。しかしながら、多くの完全に機能しているページはフェイルが発生したブロックに留まる。以下に示すように、動作不能なブロックではなく動作不能なページを識別することによって、フラッシュメモリの記憶容量の大部分は再利用され得る。
[0057] フラッシュメモリにアクセスするためには様々なコマンドが用いられる。例えば、フラッシュメモリへの読み出し及び書き込みコマンドが単一のページ上で動作してもよい。しかしながら、消去コマンドはブロック全体に影響を及ぼす。ブロック消去動作は例外として、ほとんどすべての動作は単一のページ上で行われる。ブロック内のページは、一旦消去されると、動作不能なページを回避するように選択的に書き込まれてもよい。
[0058] フラッシュメモリ自体はブロック内の動作可能なページのみを選択する論理を含まなくてもよいが、メモリコントローラは、動作可能なページのみを識別し、選択し、ページで動作するよう構成されていてもよい。メモリコントローラは、フラッシュメモリとは別個の異なる半導体チップとして実装されてもよい。メモリコントローラは、フラッシュメモリへ及びフラッシュメモリからのデータの転送を調整する。メモリコントローラは、外部装置からの要求を、適切なコマンド及びメモリアドレスを1つ以上のフラッシュデバイスに送信することによって処理する。一実施形態によれば、メモリコントローラは、チップ選択、ブロック選択、列選択、及び行選択信号を生成して1つ以上のフラッシュメモリに転送してもよい。また、メモリコントローラは、制御信号、ステータス信号、タイミング制約、及びフラッシュメモリ装置へ及びフラッシュメモリ装置からのデータ転送の他の態様を監視してもよい。
[0059] メモリコントローラは外部システムからの仮想メモリアドレス(論理レコードなど)を1つ以上のフラッシュメモリ装置上の物理アドレスに変換してもよい。メモリコントローラは、プロセッサから特定のデータを要求するクエリを受信し得る。メモリコントローラは、それに応じて、1つ以上のフラッシュメモリ装置において要求されたデータが物理的に記憶される、対応するブロック、ページ、及びバイトを判断してもよい。メモリコントローラはそれからフラッシュメモリ装置に向けて正しい順序の制御信号及びメモリアドレス値を発し、要求されたデータを取得してもよい。
[0060] 同様に、メモリコントローラは、書き込み要求を適切な順序のブロック消去、アドレス選択、及び書き込みコマンドに変換して、データをフラッシュメモリ装置上に記憶してもよい。実際には、メモリコントローラは、フラッシュメモリ装置とのページモードインタフェースの複雑さを隠しながら、様々なシステム及びコンポーネントがフラッシュメモリ装置の記憶装置にアクセスできるようにしてもよい。例えば、フラッシュメモリ装置に先に書き込まれたデータが更新されると、古いデータは新しいデータと同様に新しいブロックに書き込まれ、古いブロックは消去される。メモリコントローラは正しい順序で動作を発生及び実行して記憶動作を行ってもよい。また、メモリコントローラは、どのブロックが動作を完了するのに十分な数の動作可能なページを含んでいるのかを識別してもよい。データが転送元ブロックから転送先ブロックへと転送される場合には、転送先ブロックは、転送元ブロックと少なくとも同じ記憶容量を含むように選択されるが、転送先ブロックは依然として1つ以上の動作不能なページ又はセクタを含み得る。
[0061] 各ブロック内の動作可能なページの数を追跡するために、メモリコントローラは「優良ページ」テーブル、「不良ページ」テーブル、メモリの各ページについて「優良」又は「不良」指定を有するテーブル、又は他のインジケータを構築してもよい。「不良ブロック」テーブルは、動作不能なページを識別し、ひいては間接的に動作可能なページを識別してもよい。すると、メモリコントローラ又は他の要素は、動作不能であると見なされたページを除きいずれのページにも読み出し及び書き込みを行うよう構成されてもよい。動作不能なページの表示は、1つ以上の参照、ポインタ、アドレス、テーブル、リスト、セット、識別子、ラベル、標示、トークン、コード、又は方程式、あるいは動作可能なページを識別可能にする他の情報を含み得る。
[0062] 一実施形態においては、動作可能なページのテーブルは、フラッシュメモリの指定された単数又は複数のブロックに記憶されてもよい。例えば、表示が不完全、判読不能、欠如、又は損傷している場合には、メモリコントローラによるフラッシュメモリ装置全体の徹底的な検査が発生してもよい。この種の検査は、メモリコントローラ及び/又はフラッシュメモリ装置が初めて電源を投入された時に発生し得る。使用中にフェイルするページを検出するために、例えば誤り訂正符号(ECC)モジュールによる追加的な検査が、フラッシュメモリ装置の動作中に実行されてもよい。フラッシュメモリ動作中に用いられる誤り検出方法は、チェックサムの生成、チェックサムの比較、冗長検査の実施、パリティ値の生成、パリティ検査の実施、他の誤り検出アルゴリズムの実行を含み得るが、これらに限定されない。ページ中に不具合が検出された場合には、ECCモジュールが、不具合が発生したこと又は進行中の動作が不成功であったことをフラッシュコントローラに警告してもよい。次いで、フラッシュコントローラは、新しいページで動作を繰り返すか、さもなければ誤りを訂正してもよい。ページに復元可能且つ繰り返し可能な誤りがある場合には、そのページは破棄される。すると、マスタコントローラが、これらのページをテーブル中で指定することによって除外するべく適切な対応をとる。この時点以後、不良ページは用いられない。
[0063] 1つ以上の表示が更新されると、内部動作及びデータ転送は完了され、フラッシュメモリ装置にアクセスするシステム及び最終的にはフラッシュメモリ装置の人間のユーザから不具合及び再設定を隠し得る。したがって、不具合はユーザの全体的なエクスペリエンスを妨害しないであろうし、外部システムによる補償を要さないであろう。一実施形態によれば、これは、初期化、検査、又は他の局面の間に確保され得るスペアのブロック、ページ、及び/又はセクタによって達成されてもよい。不具合が発生すると、不具合を起こしているブロック、ページ、及び/又はセクタのデータ及びアドレスは、スペアのブロック、ページ、及び/又はセクタによって置き換えられてもよい。そのとき、そのデータの新たな論理メモリアドレス及び物理メモリアドレスを反映するべく、1つ以上の表示が更新されてもよい。
[0064] 要約すれば、フラッシュメモリコントローラにおけるページベースの不具合の管理によって、メモリコントローラが「優良ページ」テーブル又はフラッシュメモリブロック内の各ページの機能性の他のインジケータにアクセスすることが可能になる。すると、メモリコントローラは、そのブロックが1つ以上の動作可能なページを含んでいる場合であっても、各ブロックの動作可能なページを利用して読み出し、書き込み、及び消去コマンドを実行することができる。ページモードの利用により、フラッシュメモリの寿命の大幅な延長が可能となる。さらに、ページモードの利用によって、より低い寿命定格及び/又はより多数のエラーを有するフラッシュメモリをもっと効率的に使用することが可能になる。誤りを有するこれらのフラッシュメモリチップは、破棄されるのではなく、上述のページモード不具合管理を実行する装置において効果的に使用されるとともに、延長された寿命を有することができる。
[0065] メモリコントローラは、DMAプロトコルを用いて高速内部バスからのデータを受け付け、そのデータを内部バッファに蓄積し、そのデータをNANDフラッシュダイに書き込む。各フラッシュメモリモジュールは、フラッシュダイへ及びフラッシュダイからの毎秒約40メガバイトのデータ転送速度を提供するよう構成されている。これらの並列フラッシュメモリモジュールは、チャールズ・ぺドルの「高速USBコントローラ」と題された米国特許出願第61/774,175号;代理人整理番号034901−303891を含め、多数の構成を有し得るものである。同文献は参照によりその全体が本明細書に組み込まれる。例えば、並列の8つのフラッシュメモリモジュールがあってもよい。一実装形態においては、フラッシュドライブの各々は4つのフラッシュダイを含む。各フラッシュダイは8ギガバイトの記憶容量を含み、結果として256ギガバイトの合計フラッシュストレージが得られる。これらのドライブは並列で動作するよう構成されており、データ書き込みに関しては毎秒約320メガバイトの転送レートを提供する。フラッシュメモリからのデータの読み出しはフラッシュメモリへのデータの書き込みよりも顕著に速い。したがって、フラッシュメモリモジュールは、読み出し動作中にはそれに準じてより高いデータ転送レートを示し得る。
CPUメモリ、DRAM論理フラッシュ、及びフラッシュメモリの間でのデータの移動
[0066] 図4は、CPUメモリと、DRAM論理フラッシュと、フラッシュメモリとの間でのデータの転送に用いられる様々な方法の要旨を示す図である。データを転送するための各方法を、図面及び下記の説明において詳細に述べる。
[0067] 図4に示すシステムは、動作可能にCPUメモリに接続されたCPUを備える。図3に示すように、CPU及びCPUメモリはシステムバス(SATAバス)によってソリッドステートドライブ内のDRAM論理フラッシュに接続されている。DRAM論理フラッシュは高速内部バスによってフラッシュメモリに接続されている。
[0068] 上述のように、DRAM論理フラッシュとフラッシュメモリとの間でのデータの移動は、マスタコントローラにより独立して管理される。マスタコントローラはCPUから受信したコマンドに応答して機能してもよいが、CPUはフラッシュメモリへの転送については直接的な制御は有さず、これらの転送の発生を認識しない。
[0069] システムはメモリ間での種々のデータ転送を実行して特定の目的を達成することができる。一般に、演算装置はファイルと呼ばれるデータ収集についてのコマンドを送信する。コマンドは至って単純である。すなわち、このファイルを読み出せ、ファイルを書き込め、あるいは既存のファイルを更新せよ、というものである。コマンドは、マスタコントローラにより解釈されるSATAコマンドとしてSSDに来る。外部バスからのデータは全速で論理フラッシュに流入され、論理フラッシュコントローラは関連するデータファイルの以前のバージョンを記憶するか又は置き換えるよう指示される。外部バスは、SATAバス、USBバス、又は任意の他の適切なプロトコル又は技術であってもよい。演算装置がファイル又はファイルの一部を読み直したい場合には、初めに読み出しコマンドが論理コントローラに与えられ、論理コントローラは自身のメモリに記憶されているデータから所望のデータを取得するよう指示される。データは、DRAM論理フラッシュにない場合には、マスタコントローラの指揮のもとでフラッシュデバイスからDRAM論理フラッシュに記憶され、その後高速で演算装置に転送される。このデータは更新及び再ロードされる可能性があるため、DRAM論理フラッシュにおいて維持される。
[0070] 図4は5つの異なるデータ転送技術の例示的な例を示す。第1の技術は論理レコードを用いたデータ転送であり、図5A,5B,6A及び6Bに詳細に説明されている。コントローラが物理レコードを扱う一方で、プロセッサは論理レコードを扱う。変換テーブルを用いて論理レコードと物理レコードとの間の関係が変換/インデックス化される。SSDのために用いられる変換テーブルは、ハードディスク記憶システムにおいて用いられる変換テーブルとは異なる。このデータ転送技術は、論理レコードを用いて、CPUにより指示される通りにCPUメモリからDRAM論理フラッシュの作業領域へとデータをインデックス化して記憶し、続いて、使用されていないデータファイルを、マスタコントローラの指揮の下でフラッシュメモリの作業領域に保存する。マスタコントローラは、CPUメモリによる直接取得のために、フラッシュメモリの作業領域からDRAM論理フラッシュの作業領域へのデータの取得も指示する。
[0071] 第2のデータ転送技術はスナップショットフローであり、これは、システムが以前の状態に復元され得るように、システム状態のスナップショットが定期的に保存されることを可能にする。この技術を図7により詳細に示す。この実装形態においては、データは、DRAM論理フラッシュ内の特定のスナップショット領域に、論理レコードを用いることなく転送される。テーブルなどの他の技術を用いてスナップショットデータをインデックス化及び復元することが可能である。一例においては、スナップショットは時刻に基づいてインデックス化される。演算装置の状態を復元する際には、最新のスナップショットが最も重要である。古いスナップショットはシステムの使用中に新しいスナップショットによって上書きされる。これにより、最新のスナップショットが将来の復元動作のために記憶される。スナップショットはDRAM論理フラッシュに記憶され、パワーダウンまでフラッシュメモリに転送されない。パワーダウン時には、選択された数のスナップショットのみがダンププロセスの一部としてフラッシュメモリに記憶される。これは、フラッシュメモリに対して行われる書き込みの回数を減らすことによって、フラッシュメモリの寿命を顕著に増加させる。これに対し、Appleのノートブックはスナップショットを直接フラッシュメモリに記憶する。このスナップショット動作はノートブックの使用中に頻繁に発生し、その結果重大なフラッシュの摩耗を引き起こす。
[0072] 第3のデータ転送/記憶技術は、図8に説明するファストロードプロセスである。ファストロードプロセスは、フラッシュメモリ内に、プログラムファイルを記憶する保護されたプログラム領域を備える。本例においては、フラッシュメモリ内の保護されたプログラム領域は2つの区域を有し、1つは記憶されたプログラム用、1つはアクティブなプログラム用である。ファストロードプロセスは、DRAMフラッシュを用いる標準的なコントローラの一部ではない追加的な回路及び論理によって実行される。ユーザが記憶されたプログラムへのアクセスの許可を得た場合、ファストロードプロセスを用いてプログラムファイルをDRAM論理フラッシュの保護されたプログラム領域へと移動させることができる。CPUは、プログラムファイルが実行のためにそこからCPUメモリへと転送されるよう要求することができる。
[0073] 第4のデータ転送/記憶技術は、図9により詳細に説明するダンプ/復元プロセスである。ダンプ/復元プロセスは、パワーダウン又は電源喪失の際に発生する。ダンプ/復元プロセスはデータをDRAM論理フラッシュからフラッシュメモリ内の特定のダンプ領域に移動させる。復元のためには、演算装置への電力が回復され、ダンプ領域内のデータがDRAM論理フラッシュへと戻し転送され、その後CPUメモリに戻される。
[0074] 第5のデータ転送技術は、図10に説明する誤処理ファイル復元技術である。「誤処理された」とは、意図せず望ましくない変更がファイルに対して行われるどのような場合をも指す。例えば、ファイルのすべて又は一部が削除されたり、あるいは所望のファイルが別のファイルによって上書きされたりし得る。誤処理ファイル復元技術はファイルの復元を提供するもので、CPUがDRAM論理フラッシュから削除されるべきであると命令したファイルがDRAM論理フラッシュから復元される。DRAM論理フラッシュには待ち時間があり、その間誤処理ファイルはDRAM論理フラッシュに記憶されたままであってもよい。限られた履歴ファイルを用いて、依然としてDRAM論理フラッシュにあるこれらの誤処理ファイルをインデックス化及び復元する。これらの技術の各々を以下に説明する。
[0075] DRAM論理フラッシュはSSDと一体の物理的部分として描写されているが、実装形態によっては、DRAM論理フラッシュはCPU揮発性メモリ内に構築され、CPUがDRAM論理フラッシュの読み出し、書き込み、及びフラッシュ動作を制御してもよい。しかしながら、従来のCPU/CPUメモリシステムには、パワーダウンの際に、データを不揮発性CPUメモリにダンプする間電力を維持する機構が存在しない。本明細書において検討されている原理を成功裏に実行するためには、演算装置が独立の電源を備えて、CPUメモリに記憶されたデータがDRAM論理フラッシュからソリッドステートドライブのフラッシュにダンプされることを可能にしてもよい。
[0076] また、DRAM論理フラッシュは、上述の機能のうち一部のみを実行するために用いられ、あるいは実行するよう構成されていてもよい。例えば、DRAM論理フラッシュは、論理レコード型のデータ転送に用いられることなく、ファストロード動作又はスナップショット動作を提供するよう構成されていてもよい。これにより、DRAM論理フラッシュの動作は大幅に単純化され得る。他の実装形態においては、DRAM論理フラッシュは動作的に特定の部分に断片化されてもよい。マイクロコントローラに関連する揮発性メモリは、スナップショット/ファストロードセグメント(領域)と論理レコードセグメント(領域)とにマップされてもよい。スナップショット/ファストロードセグメントは、特別なプロトコルを用いてフラッシュに転送されるデータを記憶してもよく、論理レコードに基づいてインデックス化されてもされなくてもよい。場合によっては、DRAM論理フラッシュの容量が、この別個のセグメント/領域へのマッピングに適合するよう増大されてもよい。
[0077] 例えば、非論理レコード領域がスナップショットデータ又はファストロードデータを記憶してもよい。非論理レコード領域中のデータはフラッシュにロードされてもされなくてもよい。例えば、メモリの非論理レコード領域が演算装置の状態の復元に用いることのできる4つのスナップショットを含んでいる場合、パワーダウン時には最新のスナップショットのうち1つ又は2つのみが実際にフラッシュに保存され得る。他の、より古いスナップショットは単に破棄される。
[0078] 別の例においては、ファストロードプログラムが揮発性メモリの非論理レコード領域にロードされてもよい。これらのファストロードプログラムは、一般的には通常動作時に修正される実行可能物であって、フラッシュメモリには書き戻されない。プログラムの更新のためには代替的な論理パスがある。この代替的な論理パスは、ソフトウェアプログラマがソフトウェアを更新することを可能にする。制限及びプロトコルによって、ソフトウェア販売業者以外の何者かが権限のあるソフトウェアプログラマに接近しこの領域にアクセスすることを規制してもよい。これは、これらの領域については、権限のない個人又は団体には開示されていない特定のコマンドが存在するためである。
[0079] ソフトウェアのコピーを防止するため、オペレーティングシステムは、ファストロードにロードされたコードのユーザポート又はシステム内の任意の他のポートへのコピーを許可してはならない。ファストロードは、一般に、ユーザのための読み出し専用の機能である。これにより、ユーザによるプログラムの修正及び販売が防止される。上述のように、プロトコルには、ソフトウェア発行者(又は他の権限のあるユーザ)だけがソフトウェアを更新できるように、彼らにのみ利用可能な別個のコマンドがあってもよい。
[0080] 他の例においては、複数の別個のメモリコントローラがあってもよい。一実装形態においては、メモリ装置に備えられた標準的な揮発性メモリ用の1つのコントローラと、DRAM論理フラッシュ用の1つのコントローラとがあってもよい。また、標準的な揮発性メモリは、保護されていてもよく、ユーザ及び/又は演算装置に直接アドレス可能又はアクセス可能でない。場合によっては、標準的な揮発性には、特別な制限又は利用があってもよい。実施形態によっては、メモリはシステム揮発性メモリの延長線上にあるように見えてもよい。
ソリッドステートドライブへのファイルの書き込み
[0081] 通常動作時、CPUは、一般的なハードドライブにデータを書き込むために用いるであろうものと同一のプロトコルを用いてSSDにファイルを書き込む。例えば、CPUは、論理レコードを用いたSSDへの書き込み及び読み出しの技術を利用してもよい。SSDドライブの内部動作はCPUの動作とは無関係であり、CPUから隠されている。上述のように、SSDドライブはCPUからのデータを受け付けるが、内部ではそのデータを、NANDフラッシュメモリの速度及び寿命の制限を克服する独自の手法で管理及び記憶する。しかしながら、SSDドライブは、SSDドライブとCPUとの間のインタフェースを、CPUには完全にハードドライブ又は通常のフラッシュドライブへの書き込みを行っているように見えるように制御する。したがって、SSDは、種々の演算装置のいずれにおいても使用可能なプラグアンドプレイメモリ記憶装置であり、優れたデータ転送レート、長寿命、及び低消費電力を透過的に提供する。
[0082] 図5Aは、極めて高速のデータ転送レートを可能にするSSDアーキテクチャを通じた例示的なデータフローを示す図である。データは、まずCPUの動作によりシステムバスを介して転送される。例えば、システムバスはSATAバスであってもよい。データはDMAプロセスを用いてシステムバスを離れDRAM論理フラッシュに転送される。上述のように、DRAM論理フラッシュはCPUによる後の取得のためにデータを記憶する。CPUが認識しているのはDRAM論理フラッシュのみで、これはフラッシュメモリのメモリ容量を有する極めて高速な不揮発性ソリッドステートメモリであるように見える。
[0083] マスタコントローラは、適切であると判断する場合には、DRAM論理フラッシュからフラッシュメモリへとデータを書き込むことを決定する。SSD内には任意の数のフラッシュメモリモジュールがあってよい。例えば、SSDアーキテクチャは、8つのフラッシュメモリモジュールを含んでいてもよい。図解の目的で、図5Aにはこれらの装置のうち4つのみを示す。図3に関して上述したように、フラッシュメモリ装置の各々は、バッファを備えたメモリコントローラと多数のフラッシュメモリダイとを含む。例えば、各フラッシュメモリコントローラは、4個、8個、又は16個の別々のダイへの分配を制御してもよい。多数のフラッシュメモリコントローラ間でのデータの分配は、複数のフラッシュダイへの同時書き込みを含め、多数の利点を提供する。これにより、フラッシュメモリの現在の実装形態につきものの、比較的遅い書き込み時間が埋め合わせされる。マスタコントローラ及び種々のフラッシュメモリコントローラの独立により、最小限の待ち時間での並列データ転送が可能となる。並列書き込み及び並列読み出し動作を可能にするために、ファイルは様々なフラッシュメモリダイにまたがって配置される。これは、図5Aにおいては、フラッシュメモリダイの各々における番号を付されたボックスとして図示されている。ファイルが書き込まれると、マスタコントローラは連続的に個々のフラッシュメモリコントローラをアドレスし、次にフラッシュメモリコントローラが、自身が制御するフラッシュダイを連続的にアドレスする。その結果、ファイルはダイにまたがって分配され、ファイルの様々な部分が同時に異なるフラッシュダイに書き込まれる。ファイルは、フラッシュダイから取得されるときには、ダイから並列で読み出され得る。これを図6Aに示す。
[0084] SSDにファイルを書き込むための例示的な方法を図5Bに示す。最初のステップにおいて、CPUが書き込みコマンドを送信し、SSDに書き込まれるべきデータをSATAバスに載せる(ステップ505)。書き込みコマンドはマスタコントローラに転送され、マスタコントローラは、DRAMコントローラに、データを受け付けDRAMメモリに転送するよう命令する(ステップ510)。DRAMコントローラは、コマンドと他のデータとを区別し、コマンドを別個のバスを介してマスタコントローラに送信するよう構成されていてもよい。本例では、DRAMコントローラは書き込みコマンドをマスタコントローラに送信する。マスタコントローラは、書き込みコマンドを解釈すると、新しいデータが受信されていることをDRAMコントローラに警告する。DRAMコントローラはコマンド中の論理レコードを探し、自身のテーブル内で論理レコードを検索して、そのデータが既にDRAM論理フラッシュに含まれているかどうか判断する。例えば、現在の論理レコードは、別のより大きなファイルの一部であり得る。DRAMコントローラは、各ファイルの先頭と終わりの論理レコードを検索することによって、そのデータが既にDRAM論理フラッシュにあるかどうかを判断する。現在の論理レコードが各ファイルの先頭と終わりの論理レコードの間にある場合には、データは現在DRAM論理フラッシュに記憶されており、上書きされるであろう。後述のように誤処理ファイルの復元を可能にするために、論理レコードデータは、置き換えられたファイルのアドレスの表記とともに、DRAM論理フラッシュ内の新しい空間に書き込まれる。しかしながら、論理レコードがDRAM論理フラッシュ内になく、新しいデータを表す場合には、新しい論理レコードのために新しいレコードが作成され、DRAM論理フラッシュ内でデータが収集される。書き込みが完了すると、ファイル割り当てテーブル(FAT)が更新され、CPUによりSATAインタフェースを介して送信される。オペレーティングシステムによっては、各FATテーブルエントリの記憶は複数の冗長書き込みサイクルを伴い得る。SSDからFATテーブルが要求されると、その要求はDRAM論理フラッシュにより処理される。FATテーブルはDRAM論理フラッシュに記憶され、パワーダウン時にのみフラッシュメモリに保存される。これにより、フラッシュメモリにおける何千もの消去/書き込みサイクルが省かれる。
[0085] 論理フラッシュコントローラはSATA DMAをセットアップし、DRAM論理フラッシュへのデータの転送を管理する(ステップ515)。上述のように、DRAM論理フラッシュにおいて用いられるDRAMメモリは、きわめて高速のランダムアクセスメモリである。DMA転送と、専用のDRAMコントローラと、きわめて高速のDRAMメモリとの組み合わせは、DRAM論理フラッシュに記憶されたデータが、一般的にはSATAバスにより限定された速度で、容易且つ迅速にCPUにアクセス可能であることを意味する。DRAM論理フラッシュは、頻繁にアクセスされるデータを記憶するために用いられる。これにより、SSD内のフラッシュメモリ装置は過度の書き込みサイクルから防護される。論理フラッシュコントローラは、フラッシュ技術を用いてデータを集約及び更新することを含め、DRAM内のデータをフラッシュファイルとして管理する(ステップ520)。これにより、DRAM論理フラッシュは、標準的なフラッシュメモリと同様に、ただしはるかに高速で、SATAバスとインタフェースをとることができる。
[0086] SATAデータとフラッシュデータとの間には時間的相関関係は存在しない。フラッシュメモリ及びフラッシュメモリ上に記憶されたデータは、CPUに直接アクセス可能ではなく、マスタコントローラにより制御される。CPUはDRAM論理フラッシュとのみインタフェースをとり、コマンドデータはDRAM論理フラッシュからマスタコントローラに転送される。論理フラッシュコントローラは定期的にデータの利用を評価し、データがDRAM論理フラッシュからNANDフラッシュメモリに書き込まれるべきか否かを判断する(ステップ525)。例えば、CPUにより使用中のファイルは、ユーザがそのファイルを用いて作業している期間中は、規則的にSSDドライブに保存されてもよい。ユーザが用を終えた後、そのファイルは、再びアクセスされるまで数日間あるいは数ヶ月間休止状態となり得る。DRAM論理フラッシュに記憶されたデータは特定の保存ポイントでNANDフラッシュメモリに書き込まれる。例えば、DRAM論理フラッシュに記憶されたデータは、ファイルが閉じられたとき又はコンピュータがパワーダウンされたときにNANDフラッシュメモリに転送されてもよい。他の保存ポイントは、DRAM論理フラッシュの容量が大部分消費されたときに発生してもよい。その場合、保存頻度の低いファイルはフラッシュメモリに転送され得る。
[0087] 次に、マスタコントローラの制御に基づくDRAM論理フラッシュからNANDフラッシュメモリへのデータの転送を説明する。マスタコントローラは、DRAM論理フラッシュからフラッシュメモリ装置にデータを書き込む決定をすると、転送対象のデータを識別するコマンドを論理フラッシュコントローラに送信し、バスコントローラにデータ転送を警告する(ステップ530)。マスタコントローラは、フラッシュコントローラが所望のデータを受信/取得できるように、内部バスに、フラッシュコントローラに警告する/フラッシュコントローラをイネーブルするコマンドデータを載せる。論理フラッシュコントローラは、転送に適したレジスタ値をセットして内部バスDMAを設定し、マスタコントローラにより識別されたデータがバスDMAによって高速内部バスに載せられる(ステップ535)。次に、マスタコントローラ(又はそれに代えて任意的なバスコントローラ)が、個々のフラッシュコントローラを宛先とする特定のデータセグメントを有するデータの転送を開始する(ステップ540)。高速内部バスを介したデータの転送を管理するためには、種々の技術を用いることができる。一実装形態においては、内部バスにロードされたデータは、データシーケンスの先頭を示すマーカと、データシーケンスの終わりを示すマーカと、データの宛先となっているコンポーネントを識別する構造とを含む。各フラッシュコントローラはデータストリーム中の識別子を監視し、適切なデータセグメントを自身の内部記憶装置に回す。他の実装形態においては、メモリコントローラの各々に接続された別個のコマンド/イネーブルラインがあってもよい。データが特定のフラッシュメモリモジュールに向けられているとき、他のメモリコントローラ用のイネーブルラインがアサートされないのに対し、このメモリコントローラに接続されたイネーブルラインはアサートされる。この構成を図3に示す。
[0088] 高速バスは、バスへ及びバスからのデータ転送が毎秒400MBで行われることを確実にするクロックに基づいて動作する。バスコントローラは、毎秒300MB以上の最大のデータレートでのDRAM論理からフラッシュメモリ装置へのデータの転送を指示する。データ転送中、マスタコントローラは、第1のDMAサイクル中は第1のフラッシュレジスタに、次いで第2のDMAサイクル中は第2のフラッシュレジスタに、…といった具合に、連続的にデータを向ける。マスタコントローラは、8つの異なるフラッシュコントローラにまたがって連続的にデータを分配する(ステップ545)。データは、フラッシュコントローラ内のレジスタからフラッシュダイへと、毎秒40MBで並列に連続的に読み出される(ステップ550)。ロードされたレジスタ(フラッシュメモリバッファ)は、クロックをバス速度からフラッシュ速度に切り替えさせる。(各々が毎秒40MBで)並列動作している8つのフラッシュコントローラにより、毎秒320MBの全体の転送レートがもたらされる。しかしながら、追加の毎秒20MBにより、誤り訂正符号(ECC)などの追加的なオーバヘッドデータがフラッシュメモリに書き込まれることが可能となる。また、フラッシュメモリのメンテナンス中に行われる追加の書き込み又は読み出しといった、多数の追加的な動作が存在し得る。こうした追加的なオーバヘッドは、8つの並列のフラッシュドライブの40乃至50MBの転送レートを、内部バス上の毎秒400MBの転送レートに概ね等しくする。
[0089] SSDは多数の追加的な特徴も有し得る。例えば、SSDはアクセス及びセキュリティレベルの異なる様々なセクションに分割されていてもよい。例えば、SSDの保護された部分がソフトウェア実行可能物用に指定されてもよい。この、SSDの保護された部分は、ユーザ又はオペレーティングシステムにより直接アクセス可能であってはならない。例えば、SSDの保護された部分は、論理レコード番号によってインデックス化されてはならない。したがって、ユーザ又はオペレーティングシステムには、保護された部分にアクセスするための機構がない。その代わり、保護された部分は、新しいソフトウェアをロードしたり、既存のソフトウェアを更新したりするために、ソフトウェア供給者のみが利用可能であってもよい。保護された部分は、この種のデータに特有の特別なコマンドを備えた異なる技術によってアドレス可能である。例えば、論理レコードに相当するアドレスは、用いられ得るが、異なるルックアップテーブルでインデックス化される。
[0090] 保護された部分に含まれているソフトウェアを作動するためには、そのソフトウェアは第2の「読み出し専用」セクションに転送されてオペレーティングシステムによりアクセスされてもよい。この技術の有利な点の1つは、ソフトウェア実行可能物が、ユーザが何をしているかに関係なく更新され得るということである。例えば、ユーザは、文書を編集するために、Windows(登録商標)のオペレーティングシステム及びMicrosoft Office(登録商標)のアプリケーションを使用しているかもしれない。バックグラウンドでは、ソフトウェア供給者がSSDの保護された部分に記憶されたWindows(登録商標)のオペレーティングシステムの実行可能物の更新をプッシュしているかもしれない。ユーザの作業は中断されない。文書の準備やインターネットへのアクセスなど、大抵のユーザ状況では、SSDへ/からの通信トラヒックはほとんど又はまったく存在しない。
[0091] したがって、新しいデータは、フラッシュドライブの性能に悪影響を及ぼすことなく、SSDの保護された部分に流入され得る。ユーザが次にシステムを起動したときには、新しいバージョンのオペレーティングシステムがドライブの保護された部分から「読み出し専用」セクションにロードされ、DRAM論理フラッシュを通じてCPUに転送されるであろう。シャットダウン又は停電時には、コンピューティングシステムは、これらの実行可能なファイルを保存しようとする必要はない。なぜなら、これらの実行可能なファイルは変更されておらず、ドライブの保護された部分に既に記憶されているからである。
[0092] 追加的又は代替的には、スナップショットの記憶のために指定された、ドライブの特別なセクションがあってもよい。上述のように、スナップショットとは、ある時点における演算装置の完全な状態の記録である。スナップショットは、演算装置をその状態まで復元することを可能にする。
ソリッドステートドライブからのファイルの取得
[0093] 図6Aは演算装置における読み出し動作の図である。上述のように、CPUはSATAバス及びSATA DMAを介してDRAM論理フラッシュと直接通信しデータを取得する。読み出しコマンドを受信すると、マスタコントローラは、そのデータがDRAM論理フラッシュに記憶されているか否かを判断する。記憶されていれば、そのデータはDRAM論理フラッシュからCPUに送信される。記憶されていなければ、マスタコントローラは、フラッシュメモリモジュールのどこに記憶されているのかを判断してそのデータを取得する。多くの場合、データは複数のフラッシュメモリモジュール及び各モジュール内の複数のダイにまたがって配置され得る。したがって、データファイルは、複数の独立コントローラを用いて複数のダイからデータを同時に読み出すことにより、迅速に取得され得る。
[0094] 図6Bは、フラッシュメモリからデータを読み出すための例示的な方法(600)のフローチャートである。新しいファイル又は更新されたファイルが必要なとき、CPUは必要なデータに対応した論理レコード番号を有する読み出しコマンドを、SATAインタフェースを介してSSDに送信する(ステップ605)。読み出しコマンドはDRAM論理フラッシュで受信されマスタコントローラに転送される(ステップ610)。例えば、DRAMコントローラは、コマンドを認識し特別な高速バスを介してマスタコントローラに送信するよう構成されていてもよく、マスタコントローラに新しいコマンドが受信されたことを警告する。マスタコントローラ又はDRAMコントローラは、要求されたデータがDRAM論理フラッシュに記憶されているか否かを判断する(判断612)。実装形態によっては、DRAMコントローラは、CPU又はマスタコントローラからの要求に応答して正しいデータをSATAインタフェースに送信できるよう、読み出され又は書き込まれたファイルをすべて追跡する。DRAMコントローラはコマンド中の論理レコードを探し、自身テーブル内で論理レコードを検索して、そのデータが既にDRAM論理フラッシュに含まれているかどうか判断する。要求されたデータがDRAM論理フラッシュにある場合(「はい」)には、マスタコントローラは、要求されたデータをSATAバスに載せるようDRAMコントローラに命令する(ステップ614)。DRAMはデータの転送のためにSATA DMAを設定する(ステップ616)。データはSATAバスに載せられ、CPUにより受信される(ステップ618)。
[0095] 要求されたデータがDRAM論理フラッシュに記憶されていない場合(「いいえ」)には、マスタコントローラは様々なフラッシュコントローラに、データを内部バスに載せるよう命令を送信する。フラッシュコントローラは、NANDフラッシュダイから内部バスへのデータの転送を行うよう、個々のDMAを設定する(ステップ620)。論理フラッシュコントローラは、データを受信してDRAM論理フラッシュに転送するようバスDMAを設定する。また、論理フラッシュコントローラは、DRAM論理フラッシュからSATAバスにデータを転送するようSATA DMAを設定する(ステップ625)。フラッシュメモリからのこの転送は、毎秒300乃至400メガバイトの速度で行われる。同じデータについてのその後の要求は、フラッシュメモリからの代わりにDRAM論理フラッシュによって、最大SATAレートで満足される(ステップ630)。フラッシュメモリからのデータの転送後、DRAM論理フラッシュは、続くすべてのトランザクションが最大のSATA速度(毎秒300乃至1000MB)で実行されることを可能にする。
[0096] CPUは、プログラム動作においてデータを使用し、データをSSDに定期的に書き換えてもよい(ステップ635)。論理フラッシュコントローラはデータへの変更を追跡し、常に1回の書き込みでNANDフラッシュデバイスに書き込むことができるようファイルを集約する(ステップ640)。新しいファイルがCPUから受信され、それがDRAM論理フラッシュに現在存在しているファイルに対する更新である場合には、その新しいファイルに関連のある論理レコードのすべてがDRAM論理フラッシュ内の新しい場所に書き込まれるとともに、新しいファイルが書き込まれる。古いデータファイルの場所は、将来の書き込みに含まれるデータのために利用可能にされる。これは、現在のファイルのすべてが、パワーダウン時に効率的にフラッシュメモリに記憶され得るよう、DRAM内の1箇所にあることを意味する。しかしながら、(多くの実行可能なファイルを有する場合のように)DRAM論理フラッシュ内のデータが変更されていなければ、そのデータをNANDフラッシュメモリに書き戻す必要はない。なぜなら、同一のコピーが既にフラッシュメモリに記憶されているからである。DRAM論理フラッシュに記憶されたデータへの変更は、「ダーティビット」を用いて指定可能である。DRAM論理フラッシュに記憶されたファイルが変更されなければ、ダーティビットは不変のままであり、ファイルは保存ポイントでフラッシュメモリに書き換えられない。データがDRAM論理フラッシュにある間に変更されていれば、それはダーティビットにより表示され、データはシステムのパワーダウンの前に不揮発性フラッシュメモリに書き込まれる(ステップ645)。ダーティビットを用いてDRAM論理フラッシュに記憶されたデータへの変更を追跡することによって、システムがNANDフラッシュメモリにおける時間及び磨耗を節約することが可能になる。上述のプロセスの全体を通じて、すべての通信は論理レコードレベルで処理される。これは、すべてのコントローラ及びCPUについて、データ処理プロセスを均一且つ透過的にする。
スナップショット
[0097] 図7は、システム状態のスナップショットを記憶するための例示的な方法のフローチャートである。上述のように、DRAM論理フラッシュをSSDに内蔵することにより、システム「スナップショット」及び他の頻繁な書き込み動作が、フラッシュメモリの寿命に悪影響を及ぼすことなくオペレーティングシステムによって実行されることが可能になる。スナップショットは論理レコードとしては転送/記憶されない。図4に関して上述したように、スナップショットの記憶及び取得には特別なパスが別個の命令とともに用いられる。スナップショットはDRAM論理フラッシュのスナップショット領域に記憶され、パワーダウン時にのみフラッシュメモリに転送される。スナップショットは論理レコードを用いては記憶されない。その代わりに、スナップショットレコードと呼ばれるテーブルが用いられる。スナップショットの記憶及び取得には、特別なパスが特別な命令とともに用いられる。スナップショットの管理には別個のパス及び命令が用いられるため、スナップショットは、論理レコードを用いる通常のデータストリームを妨げることなく保存されることができる。スナップショットのほとんどは不揮発性フラッシュメモリ上に永久的に記憶されるのではなく、DRAM論理フラッシュに一時的に記憶される。演算装置がシャットダウンされたり電源を喪失した場合には、選択されたスナップショットがDRAM論理フラッシュからフラッシュメモリに転送される。この転送及び復元プロセスは、オペレーティングシステムにより調整される。
[0098] 次に図7を参照すると、ユーザ/オペレーティングシステム/CPUは、スナップショットが保存されるべきであることを決定する(705)。演算装置の状態は、DRAM論理フラッシュ上の保護された領域(「スナップショット領域」)に保存される。オペレーティングシステムは、どのデータが保存されるかについての決定を行う。例えば、以前にファイルに保存されたデータをスナップショットに含める理由はない。スナップショット転送は論理レコードを用いては行われず、データは論理レコード又はブロックルックアップテーブルを用いては記憶されない。スナップショット領域のデータとともに記憶されたテーブル(「スナップショットレコード」)が、様々なスナップショットをインデックス化/編成するのに用いられる。典型的には、スナップショットは、スナップショットが取得された時刻に基づいて編成される(710)。
[0099] CPUがシャットダウンコマンドを送信するか、電源回路が電源喪失を感知して中断を送信すると、スナップショット保存シーケンスが最後の2つのスナップショットを優先してフラッシュメモリに記憶する。このプロセスも論理レコード又はブロックルックアップテーブルを用いない。指定されたブロックはスナップショットデータを受信できる状態にある。スナップショットの編成及びスナップショットをどうやって取得するかについての関連するデータがスナップショットとともにテーブルに記憶される(715)。
[00100] システムが復旧/再起動すると、スナップショット復元コードがフラッシュからスナップショットを取得し、DRAM論理フラッシュ及びCPUメモリに戻す(720)。演算装置はその後、スナップショットによって保存された状態から動作を再開する。
ファストロード動作
[00101] 図8はファストロード動作のための例示的な方法(800)のフローチャートである。製造/設定中、プログラムはSSD内のフラッシュメモリの保護されたプログラム領域の記憶部に記憶される。ユーザは保護されたプログラム領域には直接アクセスできない(805)。ユーザが特定のプログラムを使用する適切な許可を得ると、そのプログラムが記憶部から保護されたプログラム領域のアクティブ部に転送される(810)。
[00102] アクティブ領域の1つ以上のプログラムの使用を準備するため、プログラムファイルがDRAM論理フラッシュの保護されたプログラム領域に移動される。この転送は論理レコードを使用するものではなく、バルク転送である。保護されたプログラム領域は、同様にユーザには直接アクセス可能ではない(815)。
[00103] DRAM論理フラッシュの保護されたプログラム領域にあるプログラムは、実行のためCPUメモリに転送される。プログラムファイルは、実行中には変更されないため、一般的にはスナップショット又はダンプ/修復動作には含まれない。プログラムファイルにより生成されたファイルは、設定及びデータファイルを含め、スナップショット及び/復元動作に含まれ得る(820)。
[00104] ユーザがまだアクセスの許可を得ていないプログラムファイルを含むプログラムファイルの更新は、ネットワークからSSDの保護されたプログラム領域へ、バックグラウンド動作を利用してストリーミングされ得る(825)。これらの更新されたプログラムはその後、ユーザによる支払い又は真正な要求に応じて迅速に利用可能にされる。
パワーダウン時のデータ保存
[00105] 図9は、マシンがオフになったとき又は電源を喪失したときにDRAM論理フラッシュに記憶されているデータを不揮発性フラッシュメモリに保存するための例示的な方法(700)のフローチャートである。電源コンデンサ回路又は他のエネルギ貯蔵装置もSSD内に備えられ得る。エネルギ貯蔵装置は、揮発性DRAMメモリに記憶されているすべてのデータを不揮発性NANDフラッシュメモリに書き込むのに十分なエネルギを貯蔵する(ステップ905)。SSDへの停電があると、電源内のセンサがパワーダウン貯蔵動作を開始する。また、パワーダウン貯蔵動作はユーザ又はオペレーティングシステムによりトリガされてもよい(ステップ910)。パワーダウン貯蔵動作中、電源コンデンサからのエネルギは、DRAMをリフレッシュしてデータを維持し、コントローラを操作し、データをメモリコントローラに転送し、そのデータをNANDフラッシュメモリに書き込むために使用される。マスタコントローラはデータパスをセットアップし、DRAMコントローラは内部バスを介してメモリコントローラへのデータの送信を開始する。データは全速で各メモリモジュールに書き込まれる。各データファイルは、そのファイルをパワーダウン貯蔵動作の一部として識別するヘッダを含む(ステップ915)。データの各セグメントは、ダンプ及び復元プログラムが論理フラッシュデータをまったく保存されたとおりに修復することを可能にする論理レコードフラグを含む。8つのフラッシュメモリコントローラの各々は自身の論理レコードフラグを監視する。フラッシュコントローラは、自身の論理レコードフラグを識別すると、それに続くデータをフラッシュメモリに記憶する(ステップ920)。ダンプはフラッシュメモリ全体を順にロードするので、消去サイクルは存在せず、書き込み速度は毎秒300MBに近くなり得る。理論的には、8GBのDRAMメモリの全部が24秒でフラッシュにダンプされることが可能である。DRAM論理フラッシュが完全にいっぱいではないか、又は変更されていないファイルを含む場合には、転送時間は顕著に少なくなり得る。エネルギ貯蔵装置は、DRAM論理フラッシュ内のすべてのデータをフラッシュメモリに全速でデータ転送するためのSSDドライブへの電力を維持するよう設計された容量性電源回路を有する。
[00106] 一実施形態においては、パワーダウン貯蔵動作中にデータを記憶するために、フラッシュダイのスペアのブロックが用いられる。スペアブロックは既に空であるため、消去遅延は発生しない。スペアブロックは各ダイの全体に分散されている。したがって、スナップショットは物理的に1つの近接した場所には位置しない。しかし、データセグメントの各々に含まれたヘッダが次のデータセグメントを識別する。よって、最初のデータセグメントを既知の場所に記憶することにより、マスタコントローラはデータファイルのすべてを、書き込まれたのと同じ順序(先入れ先出し)で復元することができる。
[00107] 容量性電源回路が消耗する前に、ポインタが記憶されて再起動を助けることが可能である。一実装形態においては、マスタプロセッサが、フラッシュにロードされた論理レコードのディレクトリを蓄積する。このディレクトリは保護された領域のフラッシュメモリに書き込まれる。演算装置が再起動されると、ディレクトリは保護された領域から取得される。そして、マスタコントローラがテーブルを用いて論理フラッシュの動作を制御する。
[00108] 修復プロセスはパワーダウン記憶プロセスの逆である。オペレーティングシステムが再起動を感知して、スナップショットを取得する。任意の必要なテーブル又は他のインデックス化データがまずフラッシュのダンプ領域から取得される(935)。これらのテーブルはマスタコントローラのメモリに記憶されてもよいし、あるいはDRAM論理フラッシュに記憶されてもよい。次に、マスタコントローラがこれらのテーブルを用いてスナップショットにアクセスし、パワーダウン貯蔵動作の前のオペレーティングシステムの状態を再構築する(940)。一実装形態においては、記憶されたデータの第1のセグメントが論理フラッシュに戻し転送され、すべてのデータが再びDRAM論理フラッシュ上に記憶されるまで、データの第2のセグメント及び以降のセグメントがこれに続く。この動作は、クリーンアップされたバージョンのデータをDRAM論理フラッシュに修復する。修復されたオペレーティングシステムは次に、論理レコードテーブルを用いて、マスタコントローラに、論理フラッシュから要求されたファイルを取得するよう命令する。
[00109] 一般に、復元シーケンスはCPU及びオペレーティングシステムの制御下となる。オペレーティングシステムは、必要に応じて様々なファイルのロードを命令するであろう。実装形態によっては、オープンであったプログラムのダンプ参照(dump references)があってもよい。ダンプ参照は、一定であれば書き換えられない。マスタコントローラは、復元プロセスが最後に作動していた位置にコードをリセットできるように、各オープンプログラムについて一連のパンくずリスト(bread crumbs)を維持してもよい。しかしながら、すべてのプログラムがパンくずリストを有するわけではなく、復元シーケンスの一部としてロードされるであろう。
誤処理ファイル復元
[00110] 図10は、DRAM論理フラッシュに記憶された誤処理データファイルを復元するための例示的な方法(1000)のフローチャートである。例えば、ユーザは、ファイルを適切に保存することなくうっかり閉じてしまうかもしれない。CPUはSSDに、そのファイルを削除するよう命令を送信する(1005)。
[00111] ファイルの削除はFATテーブルに記録される。しかし、ファイル内のデータは一定の期間DRAM論理フラッシュに記憶されたままであり、限られたファイル履歴によりインデックス化される(1010)。ユーザは、ファイルが適切に保存することなく閉じられたことを発見し、オペレーティングシステムがそのファイルを復元することを要求する(1015)。オペレーティングシステムは限られたファイル履歴にアクセスし、「削除された」ファイルを構成するデータが依然としてDRAM論理フラッシュ上に存在しているか否かを判断する(1020)。「削除された」ファイルが依然として存在していれば、そのファイルはDRAM論理フラッシュから取得されCPUメモリに送信される(1025)。
結び
[00112] つまり、上述の例示的なSSDアーキテクチャは、ハードディスクドライブに代わるプラグアンドプレイ式の代替案を提供するものである。フラッシュメモリがその有限の消去/書き込みサイクル数にもかかわらず不揮発性記憶装置として効果的に用いられることを可能にする多数の原理を上述した。DRAM論理フラッシュの利用は、フラッシュの挙動を真似し、すべてのフラッシュコマンドが最大インタフェース速度で処理されることを可能にするとともに、NANDフラッシュメモリへの書き込みを最小化する。システムプロセッサに関して言えば、システムプロセッサは常にSSD内のフラッシュメモリに書き込みを行っている。しかし、システムプロセッサが書き込みを行っているのは、論理フラッシュとして機能するがNANDフラッシュメモリの寿命やアドレス指定という制限のないDRAMである。DRAM論理フラッシュはフラッシュと同じようにファイルを記憶し、フラッシュコマンドに応答する。さらに、DRAM論理フラッシュはFATテーブルを使用し、論理レコードを更新し、ファイルを結合し、SATAバスに取り付けられる。DRAM論理フラッシュは事実上無限数の書き込み/読み出しサイクルを有するため、システムプロセッサ及びオペレーティングシステムは所望の限り多くの更新及びスナップショットを記憶できる。また、DRAM論理フラッシュはデータの読み出し及び書き込みの両方において極めて速い。SSDは、外部電源が遮断された場合にDRAM論理フラッシュに記憶されたデータコンテンツ全体をフラッシュメモリに移動させるのに十分な電力を貯蔵する。
[00113] SSD内のフラッシュコントローラは、論理レコード変換、誤り検出及び復元、ならびにデバイス最適化を扱う。実施形態によっては、フラッシュインタフェースデバイスの各々は、速度と使いやすさのため、2乃至4個のダイを制御してもよい。マスタコントローラ(及び実施形態によってはバスコントローラ)は、DRAM論理フラッシュと各フラッシュコントローラとの間でのデータ転送を制御する。
[00114] 上述のように、DRAMメモリ及びそのコントローラがDRAM論理フラッシュを構成する。DRAM論理フラッシュ内のデータは、完全にフラッシュドライブであるように見えるようにローカルマイクロプロセッサ(DRAMコントローラ、論理フラッシュコントローラ、及びマスタコントローラ)によって管理される。SATAシステムとのすべての通信のためのすべてのトランザクションは、このインタフェースを通してのみ発生する。DRAM論理フラッシュは常に最大SATA速度でSATAバスから読み出しSATAバスに書き込む。したがって、DRAM論理フラッシュは完全にフラッシュデバイスであるように見えるが、はるかに高いデータ転送レートを有する。これはSSD動作を演算装置に対して透過的にし、演算装置はまるで標準的なフラッシュ又はハードドライブ装置に書き込みを行っているかのように機能することができる。
[00115] DRAM論理フラッシュはキャッシュではなく、キャッシュとしては機能しない。DRAM論理フラッシュ内のファイルは、フラッシュ内にあるかのように、論理レコードとともに物理的な位置マッピング及びファイル管理に書き込まれる。DRAMコントローラは、CPUが常にフラッシュメモリドライブに書き込んでいると信じるように、フラッシュコマンドを受け付け、実行する。しかし、CPUはいつもDRAM論理フラッシュに読み出し及び書き込んでいるのである。CPUはフラッシュメモリに直接アクセスしない。フラッシュは、マスタコントローラにより判断された特定の所定のポイントでのみ、書き込まれる。これらのポイントはCPUコマンドとは無関係であり、CPUにより直接トリガされることはできない。
[00116] 上述の実装形態は、本明細書に記載した原理の例示的な例に過ぎない。種々の他の構成及びアーキテクチャが用いられ得る。例えば、DRAMコントローラ及び論理フラッシュコントローラの機能は、結合して単一のコントローラとされてもよい。他の実装形態においては、マスタコントローラ及びバスコントローラの機能が結合されてもよい。バス、揮発性メモリ、及び不揮発性メモリ装置の数及び種類は、様々な設計パラメータ及び新しい技術に適合するよう変更され得る。例えば、上記の例にはSATAバス、DRAMメモリ、及びNANDメモリが記載されているが、種々の他のバス及びメモリ技術が用いられてもよい。
[00117] また、図1乃至4に示す上述したアーキテクチャは一例に過ぎない。多数の代替的なアーキテクチャが用いられ得る。上述の原理はCPUとフラッシュメモリ群との間のゲートキーパとして機能するDRAM論理フラッシュを示すが、DRAM論理フラッシュはCPUと従来の回転するプラッタハードドライブ又は他の不揮発性メモリとの間に介在されてもよい。
[00118] したがって、SSDは、標準的なハードドライブの完全互換品(drop in replacement)であり、演算装置へのプログラミング又は物理的な変更を何ら要さない。
[00119] 以上の説明は、記載された原理の例を例示及び説明するためにのみ提示されている。この説明は網羅的であること又はこれらの原理を開示されたいずれかの精密な形に限定することを意図するものではない。上述の教示に照らして多くの修正及び変更が可能である。

Claims (63)

  1. DRAM論理フラッシュと、
    フラッシュメモリと、
    を備えたソリッドステートドライブにおいて、
    システムバスが、前記フラッシュメモリではなく前記DRAM論理フラッシュに読み出し及び書き込みを行う、ドライブ。
  2. 前記システムのプロセッサは、前記ソリッドステートドライブに、前記フラッシュメモリに書き込みを行うよう直接命令することができない、請求項1のドライブ。
  3. 前記ソリッドステートドライブが、前記システムのプロセッサにより出されるコマンドとは無関係の所定のポイントで、前記DRAM論理フラッシュから前記フラッシュメモリにデータを書き込む、請求項1のドライブ。
  4. 前記所定のポイントは前記ソリッドステートドライブに含まれている論理により判断される、請求項3のドライブ。
  5. 前記DRAM論理フラッシュはNANDフラッシュと同じようにファイルを記憶することによりフラッシュメモリを真似し、フラッシュコマンドに応答する、請求項1のドライブ。
  6. 前記DRAM論理フラッシュはFATテーブルを使用し、論理レコードを更新し、ファイルを結合し、SATAバスに直接接続することによってフラッシュメモリを真似する、請求項5のドライブ。
  7. 前記ソリッドステートドライブへの外部電源が遮断された場合に前記DRAM論理フラッシュに記憶されたデータコンテンツをフラッシュメモリに移動させるのに十分な電力を貯蔵するエネルギ貯蔵装置をさらに備える、請求項1のドライブ。
  8. 前記エネルギ貯蔵装置が前記ドライブの物理的な外被の中に収容されている、請求項7のドライブ。
  9. 前記DRAM論理フラッシュがすべてのフラッシュコマンドを最大インタフェース速度で実行する、請求項1のドライブ。
  10. 前記DRAM論理フラッシュがプログラムトレースポイント及び動作スナップショットを記憶し、前記フラッシュメモリへの書き込みを最小化する、請求項1のドライブ。
  11. 前記ソリッドステートドライブが、どんなパワーダウンについても、取り付けられた演算装置の最後の状態の完全な復元を提供するよう構成されている、請求項1のドライブ。
  12. 前記DRAM論理フラッシュの管理のための独立したマイクロプロセッサをさらに備える、請求項1のドライブ。
  13. 複数のフラッシュメモリ装置へ及び前記複数の複数のフラッシュメモリ装置からのデータ転送を、並列で、且つ前記ソリッドステートドライブとの外部インタフェースの設計された動作速度に等しい速度で管理するための、複数のマイクロプロセッサをさらに備える、請求項1のドライブ。
  14. 前記NANDフラッシュのページが誤りを有するものとして個々に識別されブロックから除去される一方で、前記ブロック内の他のページは使用され続ける、請求項1のドライブ。
  15. 前記フラッシュメモリがマルチレベルセルNANDフラッシュを備えており、誤りを有するものとしてページを個々に識別し前記ページをブロックから除去する一方で前記セクタ内の他のページが使用され続けることが、前記フラッシュメモリの寿命を、前記セクタ内のページにおいて誤りが検出された場合に前記セクタ全体を除去するフラッシュメモリの少なくとも10倍増大させる、請求項14のドライブ。
  16. すべてのデータが、前記データが前記フラッシュメモリに正しく書き込まれるまで前記DRAM論理フラッシュ内に保持される、請求項1のドライブ。
  17. 前記DRAM論理フラッシュへの独立した読み出し及び書き込み動作のための高速DMAをさらに備える、請求項1のドライブ。
  18. 高速内部バスをさらに備え、前記DRAM論理フラッシュ及び前記フラッシュメモリが別々に前記高速内部バスに接続され、前記フラッシュメモリが別々のモジュールに分けられ、各モジュールが前記高速内部バスと独立してインタフェースをとるよう構成された異なるマイクロプロセッサにより制御される、請求項1のドライブ。
  19. 前記マイクロプロセッサが、6502命令の新しい実装形態を作動させる6502チップセットに基づいている、請求項18のドライブ。
  20. 前記DRAM論理フラッシュが、前記フラッシュメモリへのすべての転送を記憶し前記転送を選択的に保持することによりフラッシュメモリ記憶装置を真似して、前記フラッシュメモリの書き込み摩耗を最小化する、請求項1のドライブ。
  21. 前記フラッシュメモリからの読み出し速度が少なくとも毎秒300メガバイトである、請求項1のドライブ。
  22. 前記DRAM論理フラッシュへの読み出し及び書き込みを行うSATAインタフェースを管理するための独立したマイクロプロセッサをさらに備える、請求項1のドライブ。
  23. マスタマイクロプロセッサが前記ソリッドステートドライブの外部の中央処理装置からコマンドを受信し、前記マスタマイクロプロセッサがデータ転送を直接管理することなく他のマイクロプロセッサにサブコマンドを送信することによって前記コマンドの実行を制御し、各マイクロプロセッサが独立して動作する、請求項1のドライブ。
  24. ファイルについての読み出し及び書き込み活動を測定するよう構成されたDRAMコントローラをさらに備え、前記ファイルについての読み出し及び書き込み活動が所定の期間停止すると、前記DRAMコントローラがマスタコントローラコマンドに、前記ファイルが前記フラッシュメモリに移動されるよう命令することを要求する、請求項1のドライブ。
  25. 前記DRAM論理フラッシュと前記フラッシュメモリとを動作可能に接続する内部バスと、
    前記内部バスを介して前記DRAM論理フラッシュと前記フラッシュメモリとの間で送信されるデータを制御するマスタコントローラと、
    をさらに備える、請求項1のドライブ。
  26. 別々のフラッシュメモリモジュールが並列で書き込まれ得るように、各々が前記別々のフラッシュメモリモジュール内にある複数の独立したフラッシュコントローラをさらに備える、請求項1のドライブ。
  27. 前記フラッシュメモリモジュールの各々が、
    マイクロプロセッサと、
    フラッシュメモリと、
    前記マイクロプロセッサ及びフラッシュメモリに直接アクセス可能なメモリバッファと、
    前記メモリバッファにデータを直接書き込むためのインタフェースと、
    を備える、請求項26のドライブ。
  28. 前記フラッシュメモリモジュールの各々が、第1のメモリバッファへのデータの書き込みと第2のメモリバッファからの読み出しとを同時に行うよう構成されている、請求項27のドライブ。
  29. 前記メモリバッファへの転送レートが最大バス速度であってバスクロックの制御に基づいており、前記メモリバッファからの転送レートがフラッシュ又はプロセッサバス速度であってポーリングを用いて行われる、請求項27のドライブ。
  30. 前記メモリコントローラが、前記インタフェースからのデータと、内部制御データと、誤り訂正符号とを含むデータをフラッシュダイに転送するよう構成されており、前記インタフェースからのデータと、前記内部制御データと、前記誤り訂正符号とが単一のDMAアクションにより前記フラッシュダイに転送される、請求項27のドライブ。
  31. 前記メモリバッファをヌル状態への遷移により外部バスと内部バスとの間で切り替えるためのバッファ型スイッチをさらに備える、請求項27のドライブ。
  32. 前記DRAM論理フラッシュが、
    論理フラッシュコントローラと、
    DRAMメモリと、
    DRAMインタフェースと、
    SATA DMAと、
    バスDMAと、
    を備える、請求項1のドライブ。
  33. フラッシュコマンドを用いてコマンド及びデータをDRAM論理フラッシュに送信しフォーマッティングすることで、CPUによりソリッドステートドライブへの書き込みを行うことを備える、ソリッドステートフラッシュデバイスの動作方法において、前記DRAM論理フラッシュが前記ソリッドステートデバイス内の複数の別々のフラッシュメモリモジュールの結合された作業領域の容量を有するように見える、方法。
  34. 前記CPUは、前記ソリッドステートドライブに、前記フラッシュメモリモジュールへの書き込みを行うよう直接命令することができない、請求項33の方法。
  35. マスタコントローラが、前記CPUにより出されるコマンドとは無関係の所定のポイントで、前記DRAM論理フラッシュから前記フラッシュメモリモジュールへのデータの書き込みを命令する、請求項34の方法。
  36. NANDフラッシュと同じように前記DRAM論理フラッシュにファイルを記憶すること、及び
    前記DRAM論理フラッシュによりフラッシュコマンドに応答すること、
    によって、前記DRAM論理フラッシュによりフラッシュメモリを真似することをさらに備える、請求項33の方法。
  37. FATテーブルを使用すること、
    論理レコードを更新すること、
    ファイルを結合すること、及び
    SATAバスに直接接続すること、
    によって、前記DRAM論理フラッシュによりフラッシュメモリを真似することをさらに備える、請求項36の方法。
  38. 前記ソリッドステートフラッシュデバイスへの電力が失われた場合に、
    前記DRAM論理フラッシュに記憶されたデータコンテンツ全体をフラッシュメモリに移動させるのに十分な電力を貯蔵するエネルギ貯蔵装置を活性化すること、及び
    前記DRAM論理フラッシュに記憶されたデータを前記フラッシュメモリに移動させること、
    をさらに備える、請求項33の方法。
  39. センス回路を用いて前記ソリッドステートフラッシュデバイスへの電力の喪失を感知すること、及び、
    マスタコントローラによって前記DRAM論理フラッシュと前記フラッシュメモリモジュールとの間のデータパスをセットアップすること、
    をさらに備える、請求項38の方法。
  40. 前記フラッシュメモリの指定された場所にテーブルを送信すること、
    選択されたシステムスナップショットを前記フラッシュメモリのダンプ領域に送信すること、及び
    記憶されていない論理レコードに関連するデータを前記フラッシュメモリに書き込むこと、
    をさらに備える、請求項39の方法。
  41. 前記ソリッドステートフラッシュデバイスへの電力喪失後の復元のために、
    前記フラッシュメモリの前記指定された場所からテーブルを取得すること、
    前記マスタプロセッサを用いて、前記フラッシュメモリ内のスナップショットにアクセスするために前記テーブルを使用すること、
    前記ソリッドステートフラッシュデバイスへの前記電力喪失の前のオペレーティングシステム状態を再構築すること、及び
    前記再構築されたオペレーティングシステムにより、前記フラッシュメモリからファイルを取得するべく、前記論理レコードを使用すること、
    をさらに備える、請求項40の方法。
  42. 前記フラッシュメモリモジュールの保護されたプログラム領域にプログラムを記憶すること、
    前記記憶されたプログラムのうち1つを前記保護されたプログラム領域から前記フラッシュメモリモジュールのアクティブなプログラム領域に転送すること、
    前記プログラムファイルを前記アクティブなプログラム領域から前記DRAM論理フラッシュ内の保護されたプログラム領域に移動させること、及び
    オペレーティングシステムの要求に応じて前記プログラムファイルを前記DRAM論理フラッシュからCPUメモリへ移動させること、
    をさらに備える、請求項33の方法。
  43. システム状態のスナップショットが保存されるべきであると判断すること、及び、
    前記スナップショットを、論理レコード番号を使用しない専用のファイル転送ルートを利用して、前記DRAM論理フラッシュのスナップショット領域に保存すること、
    ソリッドステートドライブがシャットダウンすると、少なくとも1つの選択されたスナップショットを前記フラッシュメモリモジュールに保存すること、
    をさらに備える、請求項33の方法。
  44. 前記ソリッドステートフラッシュデバイス内のマスタコントローラによって前記CPUから読み出しコマンドを受信すること、
    前記マスタコントローラを用いて、前記読み出しコマンドにより要求されたファイルが前記DRAM論理フラッシュに記憶されているか否かを判断すること、
    前記ファイルが前記DRAM論理フラッシュに保存されているのであれば、前記ファイルを前記CPUに転送すること、及び
    前記ファイルが前記DRAM論理フラッシュに保存されていないのであれば、前記マスタコントローラから前記フラッシュメモリモジュール内のフラッシュコントローラへ、前記データを取得して前記DRAM論理フラッシュに保存し、その後前記データを前記DRAM論理フラッシュから前記CPUに転送するよう命令を送信すること、
    によって前記ソリッドステートフラッシュデバイスからデータを読み出すことをさらに備える、請求項33の方法。
  45. 以前に要求したデータについてその後の要求を受信すると、前記データを前記DRAM論理フラッシュから前記CPUへ転送すること、
    前記データへの変更を監視すること、及び
    前記データが変化すると、所定のポイントで前記データを前記フラッシュメモリモジュールに戻し転送すること、
    をさらに備える、請求項44の方法。
  46. 前記CPUによって書き込みコマンドを送信し、書き込まれるべきデータをシステムバスに載せること、
    前記ソリッドステートフラッシュデバイスによって前記書き込みコマンドを受信し、前記システムバスからの前記データを受け付けること、
    前記データを前記DRAM論理フラッシュ上に記憶すること、及び
    前記CPUに不揮発性メモリへの書き込みが完了したことを報告すること、
    により前記ソリッドステートフラッシュデバイスへの書き込みを行うことをさらに備える、請求項33の方法。
  47. マスタコントローラを用いて、前記DRAM論理フラッシュ上に記憶された前記データが前記フラッシュメモリモジュールに記憶されるべきか否かを判断することをさらに備える、請求項46の方法。
  48. 前記書き込みコマンド及びデータがFATテーブルの更新を含むのであれば、前記データを前記DRAM論理フラッシュに記憶し、前記ソリッドステートドライブがシャットダウンするまで前記データを前記フラッシュメモリモジュールに送信しない、請求項47の方法。
  49. 前記マスタコントローラが、前記DRAM論理フラッシュ内の前記データが使用されていないと判断すると、前記データを、
    フラッシュメモリモジュールを連続的にイネーブルすること、及び
    前記高速内部バス上のデータをイネーブルされたフラッシュメモリモジュールに連続的に転送すること、
    によって前記フラッシュメモリモジュールに送信することをさらに備える、請求項46の方法。
  50. 前記データが、前記フラッシュメモリモジュールへの並列書き込みを可能にするために、前記フラッシュメモリモジュールのすべてにまたがって配置される、請求項49の方法。
  51. 前記DRAM論理フラッシュが揮発性CPUメモリを備える、請求項33の方法。
  52. 前記DRAM論理フラッシュへの書き込みを行う前記CPUが前記ソリッドステートドライブ内の不揮発性フラッシュメモリの摩耗を最小化し、前記DRAM論理フラッシュが前記不揮発性フラッシュメモリよりもはるかに速い読み出し及び書き込み時間を有する、請求項33の方法。
  53. 前記ユーザにアクセス可能でない前記DRAM論理フラッシュの保護された領域上にソフトウェア実行可能物を記憶することを含むファストロード動作をさらに備える、請求項33の方法。
  54. 前記ソフトウェア実行可能物は論理レコード番号を用いてはインデックス化されない、請求項53の方法。
  55. 論理レコードデータ転送パスとは別のプロトコルパスを用いて前記ソフトウェア実行可能物をCPUメモリにロードすることをさらに備える、請求項53の方法。
  56. 前記DRAM論理フラッシュの前記保護された領域上の前記ソフトウェア実行可能物をバックグラウンド動作として更新することをさらに備える、請求項53の方法。
  57. ソリッドステートドライブ内のフラッシュメモリモジュールであって、前記フラッシュメモリモジュールは、
    複数のフラッシュダイと、
    フラッシュメモリコントローラと、
    を備え、前記フラッシュメモリコントローラは、
    マイクロプロセッサと、
    複数のメモリバッファと、
    外部バスからのデータを前記複数のメモリバッファに直接預けるためのバスDMAインタフェースと、
    前記複数のメモリバッファ内のデータに直接アクセスし、前記データを、前記バスインタフェースが前記外部バスからのデータを第2のメモリバッファに預けている間に、第1のメモリバッファからフラッシュダイに転送するためのフラッシュDMAモジュールと、
    を備える、フラッシュメモリモジュール。
  58. 前記DRAM論理フラッシュが少なくとも以下のうち一方のモードで動作するよう構成されている、請求項1のドライブ。:論理レコードによりインデックス化されたデータ転送及び論理レコードによりインデックス化されていないデータ転送。
  59. 前記DRAM論理フラッシュに書き込まれたデータの一部が前記フラッシュメモリには書き込まれない、請求項58のドライブ。
  60. DRAM論理フラッシュに書き込まれたデータはスナップショットであり、前記スナップショットは前記フラッシュメモリには書き込まれない、請求項59のドライブ。
  61. DRAM論理フラッシュに書き込まれたデータはファストロードプログラムであり、前記ファストロードプログラムは前記フラッシュメモリに書き戻されない、請求項59のドライブ。
  62. 前記DRAM論理フラッシュは論理レコードによってインデックス化されていないデータ転送により動作するよう構成されており、前記データ転送は、前記CPUによるより迅速な取得のために、実行可能なファイルを前記DRAM論理フラッシュ内に置くファストロード動作を備える、請求項58のドライブ。
  63. 前記DRAM論理フラッシュは論理レコードによりインデックス化されていないデータ転送により動作するよう構成されており、前記データ転送はシステム復元用のホスト動作設定を保存するためのスナップショット動作を備える、請求項58のドライブ。
JP2015543117A 2012-11-20 2013-11-19 ソリッドステートドライブアーキテクチャ Active JP6465806B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261728394P 2012-11-20 2012-11-20
US61/728,394 2012-11-20
US201361775327P 2013-03-08 2013-03-08
US61/775,327 2013-03-08
PCT/US2013/070789 WO2014081719A1 (en) 2012-11-20 2013-11-19 Solid state drive architectures

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018034288A Division JP2018106746A (ja) 2012-11-20 2018-02-28 ソリッドステートドライブアーキテクチャ

Publications (3)

Publication Number Publication Date
JP2016501403A true JP2016501403A (ja) 2016-01-18
JP2016501403A5 JP2016501403A5 (ja) 2016-12-08
JP6465806B2 JP6465806B2 (ja) 2019-02-06

Family

ID=50776495

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015543117A Active JP6465806B2 (ja) 2012-11-20 2013-11-19 ソリッドステートドライブアーキテクチャ
JP2018034288A Pending JP2018106746A (ja) 2012-11-20 2018-02-28 ソリッドステートドライブアーキテクチャ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018034288A Pending JP2018106746A (ja) 2012-11-20 2018-02-28 ソリッドステートドライブアーキテクチャ

Country Status (8)

Country Link
US (4) US9941007B2 (ja)
EP (1) EP2923358A4 (ja)
JP (2) JP6465806B2 (ja)
CN (1) CN105103234A (ja)
CA (1) CA2891355C (ja)
MX (1) MX364783B (ja)
TW (1) TWI636396B (ja)
WO (1) WO2014081719A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102258139B1 (ko) * 2021-01-22 2021-05-28 스톤플라이코리아 주식회사 가상 스토리지의 데이터를 효율적으로 처리하는 방법 및 그 시스템
KR102289937B1 (ko) * 2020-08-26 2021-08-13 스톤플라이코리아(주) 가상 스토리지의 데이터 처리 방법

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
CN107341071A (zh) * 2013-08-23 2017-11-10 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
US9766823B2 (en) 2013-12-12 2017-09-19 Memory Technologies Llc Channel optimized storage modules
JP2015185103A (ja) * 2014-03-26 2015-10-22 ソニー株式会社 記憶装置、情報処理装置、データアクセス方法、およびプログラム
US20150362980A1 (en) * 2014-06-16 2015-12-17 Apple Inc. Always-On Processor as a Coprocessor
US9542118B1 (en) * 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
JP2016103112A (ja) * 2014-11-27 2016-06-02 株式会社リコー データ転送制御装置、情報処理装置、画像形成装置
US20160291887A1 (en) * 2015-03-30 2016-10-06 Kabushiki Kaisha Toshiba Solid-state drive with non-volatile random access memory
US10332613B1 (en) 2015-05-18 2019-06-25 Microsemi Solutions (Us), Inc. Nonvolatile memory system with retention monitor
US9442839B1 (en) * 2015-05-26 2016-09-13 Sandisk Technologies Llc Nonvolatile storage with automated response to program faults
US10152413B2 (en) 2015-06-08 2018-12-11 Samsung Electronics Co. Ltd. Nonvolatile memory module and operation method thereof
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
WO2017069773A1 (en) 2015-10-23 2017-04-27 Hewlett-Packard Development Company, L.P. Write commands filtering
US9880783B2 (en) 2015-10-28 2018-01-30 Sandisk Technologies Llc System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller
US20170123991A1 (en) * 2015-10-28 2017-05-04 Sandisk Technologies Inc. System and method for utilization of a data buffer in a storage device
US10474570B2 (en) * 2015-11-24 2019-11-12 Cisco Technology, Inc. Flashware usage mitigation
US10095618B2 (en) 2015-11-25 2018-10-09 Intel Corporation Memory card with volatile and non volatile memory space having multiple usage model configurations
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US9934090B2 (en) * 2015-12-22 2018-04-03 Intel Corporation Apparatus and method for enforcement of reserved bits
US9990311B2 (en) * 2015-12-28 2018-06-05 Andes Technology Corporation Peripheral interface circuit
CN105677239A (zh) * 2015-12-30 2016-06-15 中航网信(北京)科技有限公司 数据存储方法、装置和服务器
CN105607874B (zh) * 2015-12-31 2017-03-22 湖南国科微电子股份有限公司 Sata协议加速模块、主机与硬盘通信方法及固态硬盘控制器
US9892794B2 (en) 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US9899092B2 (en) 2016-01-27 2018-02-20 Ip Gem Group, Llc Nonvolatile memory system with program step manager and method for program step management
KR20170094674A (ko) * 2016-02-11 2017-08-21 에스케이하이닉스 주식회사 데이터 저장 장치
US20170271030A1 (en) * 2016-03-18 2017-09-21 Alibaba Group Holding Limited Method and system for using downgraded flash die for cache applications
US10175896B2 (en) 2016-06-29 2019-01-08 Western Digital Technologies, Inc. Incremental snapshot based technique on paged translation systems
US11216361B2 (en) 2016-06-29 2022-01-04 Western Digital Technologies, Inc. Translation lookup and garbage collection optimizations on storage system with paged translation table
US10229048B2 (en) 2016-06-29 2019-03-12 Western Digital Technologies, Inc. Unified paging scheme for dense and sparse translation tables on flash storage systems
US10235287B2 (en) 2016-06-29 2019-03-19 Western Digital Technologies, Inc. Efficient management of paged translation maps in memory and flash
US10353813B2 (en) 2016-06-29 2019-07-16 Western Digital Technologies, Inc. Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices
US10509592B1 (en) * 2016-07-26 2019-12-17 Pavilion Data Systems, Inc. Parallel data transfer for solid state drives using queue pair subsets
US10157677B2 (en) 2016-07-28 2018-12-18 Ip Gem Group, Llc Background reference positioning and local reference positioning using threshold voltage shift read
US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US10236915B2 (en) 2016-07-29 2019-03-19 Microsemi Solutions (U.S.), Inc. Variable T BCH encoding
CN106294026A (zh) * 2016-08-19 2017-01-04 浪潮(北京)电子信息产业有限公司 一种固态盘异常掉电后的映射表恢复方法及其系统
US9965356B2 (en) * 2016-09-02 2018-05-08 Alibaba Group Holding Limited Method and system of high-availability PCIE SSD with software-hardware jointly assisted implementation to enhance immunity on multi-cell upset
US11586565B2 (en) 2016-10-03 2023-02-21 Samsung Electronics Co., Ltd. Non-volatile storage system and data storage access protocol for non-volatile storage devices
CN106844229B (zh) * 2017-01-07 2020-01-03 苏州浪潮智能科技有限公司 固态硬盘固件映射表的组织方法、系统及装置
CN106815156A (zh) * 2017-01-22 2017-06-09 联想(北京)有限公司 一种实现固态硬盘交互的装置、方法和和电子设备
US10418115B2 (en) 2017-07-07 2019-09-17 Micron Technology, Inc. Managed NAND performance throttling
US20190035445A1 (en) * 2017-07-31 2019-01-31 CNEX Labs, Inc. a Delaware Corporation Method and Apparatus for Providing Low Latency Solid State Memory Access
TWI626541B (zh) * 2017-08-31 2018-06-11 慧榮科技股份有限公司 將資料寫入至快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
CN108182154A (zh) * 2017-12-22 2018-06-19 深圳大普微电子科技有限公司 一种基于固态硬盘的日志文件的读写方法及固态硬盘
US10402112B1 (en) * 2018-02-14 2019-09-03 Alibaba Group Holding Limited Method and system for chunk-wide data organization and placement with real-time calculation
US10534551B1 (en) * 2018-06-22 2020-01-14 Micron Technology, Inc. Managing write operations during a power loss
CN109582523B (zh) * 2018-11-26 2022-03-25 深圳忆联信息系统有限公司 有效分析SSD前端NVMe模块性能的方法及系统
CN109683813B (zh) * 2018-12-03 2022-02-18 郑州云海信息技术有限公司 一种nvme ssd自动格式化方法、装置、终端及存储介质
US20200201566A1 (en) * 2018-12-19 2020-06-25 Micron Technology, Inc. Module processing resource
US11003396B2 (en) * 2019-03-01 2021-05-11 Micron Technology, Inc. Dual speed memory
CN109918352B (zh) * 2019-03-04 2021-11-05 北京百度网讯科技有限公司 存储器系统和存储数据的方法
CN110674608B (zh) * 2019-06-13 2020-08-04 深圳市芯天下技术有限公司 一种nand闪存存储单元的建模方法及系统
US11768613B2 (en) * 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
CN110427171B (zh) * 2019-08-09 2022-10-18 复旦大学 可扩展的定点数矩阵乘加运算的存内计算设备和方法
TWI715162B (zh) * 2019-08-26 2021-01-01 點序科技股份有限公司 記憶體驗證方法及記憶體驗證系統
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
CN111158604B (zh) * 2019-12-31 2022-02-11 西南科技大学 一种闪存颗粒阵列的物联网时间序列数据存储与检索方法
US20210233585A1 (en) * 2020-01-29 2021-07-29 Micron Technology, Inc. Multichip memory package with internal channel
EP4100839A4 (en) * 2020-02-07 2024-03-13 Sunrise Memory Corp QUASI-VOLATILE SYSTEM LEVEL MEMORY
US11714897B2 (en) * 2020-09-02 2023-08-01 Mobileye Vision Technologies Ltd. Secure distributed execution of jobs
CN112286717B (zh) * 2020-10-28 2023-08-01 四川效率源信息安全技术股份有限公司 一种固态硬盘启用trim命令后的数据恢复方法
US11755237B2 (en) * 2021-08-31 2023-09-12 Micron Technology, Inc. Overwriting at a memory system
US20230075055A1 (en) * 2021-09-08 2023-03-09 Quanta Computer Inc. Method and system for providing life cycle alert for flash memory device
TWI829378B (zh) * 2022-02-15 2024-01-11 威盛電子股份有限公司 通用序列匯流排控制裝置及其控制方法
US20230325275A1 (en) * 2022-04-07 2023-10-12 Kioxia Corporation Method and device for assessing operational effectiveness of solid-state drive (ssd) memory device
US11789819B1 (en) 2022-04-29 2023-10-17 Micron Technology, Inc. Seamless recovery of a hardware-based I/O path in a multi-function NVMe SSD

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216775A (ja) * 1991-10-29 1993-08-27 Hitachi Ltd 半導体記憶装置
JPH07201190A (ja) * 1993-12-28 1995-08-04 Mitsubishi Electric Corp 不揮発性メモリファイルシステム
JPH08129509A (ja) * 1994-11-01 1996-05-21 Canon Inc メモリ制御装置及び方法
JP2000076148A (ja) * 1998-08-31 2000-03-14 Matsushita Electric Ind Co Ltd 記録再生装置
US20050132128A1 (en) * 2003-12-15 2005-06-16 Jin-Yub Lee Flash memory device and flash memory system including buffer memory
JP2007087388A (ja) * 2005-09-21 2007-04-05 Samsung Electronics Co Ltd メモリコントローラ及びそれを含んだデータ処理システム
US20070288683A1 (en) * 2006-06-07 2007-12-13 Microsoft Corporation Hybrid memory device with single interface
WO2008018258A1 (fr) * 2006-08-09 2008-02-14 Hitachi Ulsi Systems Co., Ltd. Dispositif de stockage
US20080155185A1 (en) * 2006-12-20 2008-06-26 Jin-Ki Kim Hybrid solid-state memory system having volatile and non-volatile memory
JP2009301128A (ja) * 2008-06-10 2009-12-24 Dainippon Printing Co Ltd 不揮発性メモリの劣化軽減方法
US20110161569A1 (en) * 2009-12-25 2011-06-30 Montage Technology (Shanghai) Co., Ltd. Memory module and method for exchanging data in memory module
US8122319B2 (en) * 2007-01-24 2012-02-21 Charles I. Peddle Page-based failure management for flash memory

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US8296467B2 (en) * 2000-01-06 2012-10-23 Super Talent Electronics Inc. Single-chip flash device with boot code transfer capability
US7039074B1 (en) * 2000-09-14 2006-05-02 Agiletv Corporation N-way demultiplexer
US6782410B1 (en) * 2000-08-28 2004-08-24 Ncr Corporation Method for managing user and server applications in a multiprocessor computer system
FR2820850B1 (fr) * 2001-02-15 2003-05-09 Bull Sa Controleur de coherence pour ensemble multiprocesseur, module et ensemble multiprocesseur a architecture multimodule integrant un tel controleur
JP2003122644A (ja) * 2001-10-11 2003-04-25 Hitachi Ltd 計算機及びその記憶装置
JP2003308698A (ja) * 2002-04-12 2003-10-31 Toshiba Corp 不揮発性半導体メモリ装置
US7003635B2 (en) * 2002-10-03 2006-02-21 Hewlett-Packard Development Company, L.P. Generalized active inheritance consistency mechanism having linked writes
TWI240863B (en) * 2003-09-05 2005-10-01 Megawin Technology Co Ltd Method for efficiently controlling flash memory read/write
US20050125607A1 (en) * 2003-12-08 2005-06-09 International Business Machines Corporation Intelligent caching of working directories in auxiliary storage
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
JP4429780B2 (ja) * 2004-03-31 2010-03-10 富士通株式会社 記憶制御装置、制御方法、および制御プログラム。
US7472222B2 (en) * 2004-10-12 2008-12-30 Hitachi Global Storage Technologies Netherlands B.V. HDD having both DRAM and flash memory
US7196942B2 (en) * 2004-10-20 2007-03-27 Stmicroelectronics Pvt. Ltd. Configuration memory structure
US7631219B2 (en) * 2004-10-22 2009-12-08 Broadcom Corporation Method and computer program product for marking errors in BIOS on a RAID controller
KR100578143B1 (ko) * 2004-12-21 2006-05-10 삼성전자주식회사 버퍼 메모리에 저장된 데이터를 무효화시키는 스킴을 갖는저장 시스템 및 그것을 포함한 컴퓨팅 시스템
US20090172269A1 (en) * 2005-02-04 2009-07-02 Samsung Electronics Co., Ltd. Nonvolatile memory device and associated data merge method
JP4282612B2 (ja) * 2005-01-19 2009-06-24 エルピーダメモリ株式会社 メモリ装置及びそのリフレッシュ方法
US7269715B2 (en) * 2005-02-03 2007-09-11 International Business Machines Corporation Instruction grouping history on fetch-side dispatch group formation
US7339591B2 (en) * 2005-03-10 2008-03-04 Microsoft Corporation Method to manage graphics address remap table (GART) translations in a secure system
US7454566B1 (en) * 2005-05-02 2008-11-18 Nvidia Corporation System and method for adaptive RAID configuration
US20080250189A1 (en) * 2005-05-18 2008-10-09 Ziyi Cheng Circuit and Method for Improving Operation Life of Memory
US8041881B2 (en) * 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8397013B1 (en) * 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US20080028136A1 (en) * 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US7872892B2 (en) * 2005-07-05 2011-01-18 Intel Corporation Identifying and accessing individual memory devices in a memory channel
US20070016721A1 (en) * 2005-07-18 2007-01-18 Wyse Technology Inc. Flash file system power-up by using sequential sector allocation
KR100644223B1 (ko) * 2005-12-06 2006-11-10 삼성전자주식회사 리프레쉬 전류소모를 최소화하는 반도체 메모리 장치 및이에 대한 구동방법
US20070147115A1 (en) * 2005-12-28 2007-06-28 Fong-Long Lin Unified memory and controller
US8095931B1 (en) * 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
JP4768504B2 (ja) * 2006-04-28 2011-09-07 株式会社東芝 不揮発性フラッシュメモリを用いる記憶装置
CN101454745B (zh) * 2006-05-24 2012-09-05 克姆佩棱特科技公司 用于raid管理、重新分配以及重新分段的系统和方法
US7711890B2 (en) * 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
JP4888184B2 (ja) * 2007-03-26 2012-02-29 ティアック株式会社 記憶装置
US7535787B2 (en) * 2007-06-06 2009-05-19 Daniel Elmhurst Methods and apparatuses for refreshing non-volatile memory
US8990527B1 (en) * 2007-06-29 2015-03-24 Emc Corporation Data migration with source device reuse
JP4109313B2 (ja) * 2007-08-27 2008-07-02 オリンパス株式会社 医療用カプセル装置
CN101398745B (zh) * 2007-09-29 2011-12-21 群联电子股份有限公司 并行数据存取架构的固态盘存储系统与固态盘控制器
US20090094413A1 (en) * 2007-10-08 2009-04-09 Lehr Douglas L Techniques for Dynamic Volume Allocation in a Storage System
US8209465B2 (en) * 2007-10-30 2012-06-26 Hagiwara Sys-Com Co., Ltd. Data writing method
US7945825B2 (en) * 2007-11-25 2011-05-17 Spansion Isreal, Ltd Recovery while programming non-volatile memory (NVM)
US20130086311A1 (en) * 2007-12-10 2013-04-04 Ming Huang METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS
US7822913B2 (en) * 2007-12-20 2010-10-26 Unity Semiconductor Corporation Emulation of a NAND memory system
US8938655B2 (en) * 2007-12-20 2015-01-20 Spansion Llc Extending flash memory data retension via rewrite refresh
US7978516B2 (en) * 2007-12-27 2011-07-12 Pliant Technology, Inc. Flash memory controller having reduced pinout
JP4745356B2 (ja) * 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
KR101102136B1 (ko) * 2008-03-01 2012-01-02 가부시끼가이샤 도시바 메모리 시스템
US7970994B2 (en) * 2008-03-04 2011-06-28 International Business Machines Corporation High performance disk array rebuild
US9547589B2 (en) * 2008-06-18 2017-01-17 Super Talent Technology, Corp. Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US9223642B2 (en) * 2013-03-15 2015-12-29 Super Talent Technology, Corp. Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
TWI385516B (zh) * 2008-08-12 2013-02-11 Phison Electronics Corp 快閃記憶體儲存系統及其資料寫入方法
US8130528B2 (en) * 2008-08-25 2012-03-06 Sandisk 3D Llc Memory system with sectional data lines
US8595449B2 (en) * 2008-09-02 2013-11-26 Qimonda Ag Memory scheduler for managing maintenance operations in a resistive memory in response to a trigger condition
US8103842B2 (en) * 2008-11-17 2012-01-24 Hitachi, Ltd Data backup system and method for virtual infrastructure
US8169839B2 (en) * 2009-02-11 2012-05-01 Stec, Inc. Flash backed DRAM module including logic for isolating the DRAM
KR20100097454A (ko) * 2009-02-26 2010-09-03 삼성전자주식회사 복수의 상 변화 메모리들, 버퍼램, 및 낸드 플래시 메모리를 구비한 메모리 모듈
TWI385518B (zh) * 2009-03-20 2013-02-11 Phison Electronics Corp 用於快閃記憶體的資料儲存方法及儲存系統
US8478928B2 (en) * 2009-04-23 2013-07-02 Samsung Electronics Co., Ltd. Data storage device and information processing system incorporating data storage device
US8180981B2 (en) * 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
JP5104817B2 (ja) * 2009-06-30 2012-12-19 富士通株式会社 ストレージシステム、ストレージ制御装置及び方法
US8291131B2 (en) * 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8250319B2 (en) * 2009-09-29 2012-08-21 Freescale Semiconductor, Inc. Operating an emulated electrically erasable (EEE) memory
WO2011070611A1 (en) * 2009-12-08 2011-06-16 Hitachi, Ltd. Storage system and storage control apparatus provided with cache memory group including volatile memory and nonvolatile memory
KR20110066697A (ko) * 2009-12-11 2011-06-17 삼성전자주식회사 어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
JP5183650B2 (ja) * 2010-02-17 2013-04-17 株式会社日立製作所 計算機システム,計算機システムにおけるバックアップ方法及びプログラム
US9619472B2 (en) * 2010-06-11 2017-04-11 International Business Machines Corporation Updating class assignments for data sets during a recall operation
JP2012063884A (ja) * 2010-09-14 2012-03-29 Toshiba Corp 記憶装置、電子機器、および記憶装置の制御方法
US8566546B1 (en) * 2010-09-27 2013-10-22 Emc Corporation Techniques for enforcing capacity restrictions of an allocation policy
US8850156B2 (en) * 2010-11-03 2014-09-30 Huawei Technologies Co., Ltd. Method and system for managing virtual machine storage space and physical host
US8478911B2 (en) * 2011-01-31 2013-07-02 Lsi Corporation Methods and systems for migrating data between storage tiers
JP5405513B2 (ja) * 2011-03-22 2014-02-05 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
KR101717081B1 (ko) * 2011-03-23 2017-03-28 삼성전자주식회사 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치
WO2012168962A1 (en) * 2011-06-07 2012-12-13 Hitachi, Ltd. Storage system comprising flash memory, and storage control method
US20130007373A1 (en) * 2011-06-30 2013-01-03 Advanced Micro Devices, Inc. Region based cache replacement policy utilizing usage information
US10089017B2 (en) 2011-07-20 2018-10-02 Futurewei Technologies, Inc. Method and apparatus for SSD storage access
US8793443B2 (en) * 2011-09-09 2014-07-29 Lsi Corporation Methods and structure for improved buffer allocation in a storage controller
US9098309B2 (en) * 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
US8954671B2 (en) * 2011-10-28 2015-02-10 Hitachi, Ltd. Tiered storage device providing for migration of prioritized application specific data responsive to frequently referenced data
US9329901B2 (en) * 2011-12-09 2016-05-03 Microsoft Technology Licensing, Llc Resource health based scheduling of workload tasks
US20130290605A1 (en) * 2012-04-30 2013-10-31 Moon J. Kim Converged memory and storage system
US8918672B2 (en) * 2012-05-31 2014-12-23 International Business Machines Corporation Maximizing use of storage in a data replication environment
US8885382B2 (en) * 2012-06-29 2014-11-11 Intel Corporation Compact socket connection to cross-point array
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10645032B2 (en) 2013-02-28 2020-05-05 Texas Instruments Incorporated Packet processing match and action unit with stateful actions
US9785545B2 (en) 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
JP5811167B2 (ja) * 2013-12-20 2015-11-11 オンキヨー株式会社 電子機器
US20160026399A1 (en) * 2014-07-23 2016-01-28 Lsi Corporation Block i/o interface for a host bus adapter that utilizes nvdram

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05216775A (ja) * 1991-10-29 1993-08-27 Hitachi Ltd 半導体記憶装置
JPH07201190A (ja) * 1993-12-28 1995-08-04 Mitsubishi Electric Corp 不揮発性メモリファイルシステム
JPH08129509A (ja) * 1994-11-01 1996-05-21 Canon Inc メモリ制御装置及び方法
JP2000076148A (ja) * 1998-08-31 2000-03-14 Matsushita Electric Ind Co Ltd 記録再生装置
US20050132128A1 (en) * 2003-12-15 2005-06-16 Jin-Yub Lee Flash memory device and flash memory system including buffer memory
JP2005182983A (ja) * 2003-12-15 2005-07-07 Samsung Electronics Co Ltd バッファメモリを内蔵したフラッシュメモリ装置及びフラッシュメモリシステム
JP2007087388A (ja) * 2005-09-21 2007-04-05 Samsung Electronics Co Ltd メモリコントローラ及びそれを含んだデータ処理システム
JP2009540431A (ja) * 2006-06-07 2009-11-19 マイクロソフト コーポレーション 1つのインターフェースを有するハイブリッド・メモリ・デバイス
US20070288683A1 (en) * 2006-06-07 2007-12-13 Microsoft Corporation Hybrid memory device with single interface
WO2008018258A1 (fr) * 2006-08-09 2008-02-14 Hitachi Ulsi Systems Co., Ltd. Dispositif de stockage
US20100180068A1 (en) * 2006-08-09 2010-07-15 Masahiro Matsumoto Storage device
US20080155185A1 (en) * 2006-12-20 2008-06-26 Jin-Ki Kim Hybrid solid-state memory system having volatile and non-volatile memory
JP2010514017A (ja) * 2006-12-20 2010-04-30 モサイド・テクノロジーズ・インコーポレーテッド 揮発性メモリおよび不揮発性メモリを有するハイブリッド固体メモリシステム
US8122319B2 (en) * 2007-01-24 2012-02-21 Charles I. Peddle Page-based failure management for flash memory
JP2009301128A (ja) * 2008-06-10 2009-12-24 Dainippon Printing Co Ltd 不揮発性メモリの劣化軽減方法
US20110161569A1 (en) * 2009-12-25 2011-06-30 Montage Technology (Shanghai) Co., Ltd. Memory module and method for exchanging data in memory module

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102289937B1 (ko) * 2020-08-26 2021-08-13 스톤플라이코리아(주) 가상 스토리지의 데이터 처리 방법
KR102258139B1 (ko) * 2021-01-22 2021-05-28 스톤플라이코리아 주식회사 가상 스토리지의 데이터를 효율적으로 처리하는 방법 및 그 시스템
KR102417848B1 (ko) * 2021-01-22 2022-07-07 주식회사 넷아스 가상 스토리지 관리 시스템
KR20220106652A (ko) * 2021-01-22 2022-07-29 주식회사 넷아스 가상화된 데이터를 배포하는 방법 및 그 시스템
KR102523876B1 (ko) 2021-01-22 2023-04-21 주식회사 넷아스 가상화된 데이터를 배포하는 방법 및 그 시스템

Also Published As

Publication number Publication date
EP2923358A1 (en) 2015-09-30
US9941007B2 (en) 2018-04-10
CN105103234A (zh) 2015-11-25
TWI636396B (zh) 2018-09-21
US20210020245A1 (en) 2021-01-21
US20150046625A1 (en) 2015-02-12
JP2018106746A (ja) 2018-07-05
CA2891355C (en) 2022-04-05
WO2014081719A1 (en) 2014-05-30
US20180182459A1 (en) 2018-06-28
JP6465806B2 (ja) 2019-02-06
CA2891355A1 (en) 2014-05-30
US20220139455A1 (en) 2022-05-05
MX2015006298A (es) 2015-12-09
MX364783B (es) 2019-05-07
EP2923358A4 (en) 2016-06-29
US10796762B2 (en) 2020-10-06
TW201435729A (zh) 2014-09-16

Similar Documents

Publication Publication Date Title
US20220139455A1 (en) Solid state drive architectures
US11037625B2 (en) Solid state drive architectures
TWI546818B (zh) 一種具有綠能資料持續模式的裝置驅動器
US9720616B2 (en) Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED)
US9405621B2 (en) Green eMMC device (GeD) controller with DRAM data persistence, data-type splitting, meta-page grouping, and diversion of temp files for enhanced flash endurance
US10776153B2 (en) Information processing device and system capable of preventing loss of user data
US8738846B2 (en) File system-aware solid-state storage management system
US9158700B2 (en) Storing cached data in over-provisioned memory in response to power loss
US8527693B2 (en) Apparatus, system, and method for auto-commit memory
CN109643275B (zh) 存储级存储器的磨损均衡设备和方法
TWI424319B (zh) 用於操作一固態驅動器之方法及固態記憶體裝置
US20020091965A1 (en) System and method for early detection of impending failure of a data storage system
US8909855B2 (en) Storage system employing MRAM and physically addressed solid state disk
US10521148B2 (en) Data storage device backup
WO2020154352A1 (en) Solid state drive architectures
US20170010810A1 (en) Method and Apparatus for Providing Wear Leveling to Non-Volatile Memory with Limited Program Cycles Using Flash Translation Layer
CN105404468B (zh) 绿能与非固态硬盘应用及其驱动器

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161021

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161021

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20171201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180725

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: 20181114

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190108

R150 Certificate of patent or registration of utility model

Ref document number: 6465806

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