JP5263561B2 - ソリッドステート大容量記憶装置のためのデータストリーミング - Google Patents

ソリッドステート大容量記憶装置のためのデータストリーミング Download PDF

Info

Publication number
JP5263561B2
JP5263561B2 JP2011529124A JP2011529124A JP5263561B2 JP 5263561 B2 JP5263561 B2 JP 5263561B2 JP 2011529124 A JP2011529124 A JP 2011529124A JP 2011529124 A JP2011529124 A JP 2011529124A JP 5263561 B2 JP5263561 B2 JP 5263561B2
Authority
JP
Japan
Prior art keywords
user data
data
metadata
linked list
received
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
JP2011529124A
Other languages
English (en)
Other versions
JP2012503828A (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 JP2012503828A publication Critical patent/JP2012503828A/ja
Application granted granted Critical
Publication of JP5263561B2 publication Critical patent/JP5263561B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/7207Details relating to flash memory management management of metadata or control data

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)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本開示は、概して、半導体メモリに関し、特に、1つ以上の実施形態において、本開示は、方法およびソリッドステート大容量記憶装置のためのデータストリーミングの制御を提供する装置に関する。
電子装置は、一般に、それに対して利用可能である、いくつかのタイプの大容量記憶装置を有する。一般的例は、ハードディスクドライブ(HDD)である。HDDは、比較的低価格で大量の記憶が可能であり、現在の消費者用のHDDは、1テラバイトを超える容量を使用することができる。
HDDは、概して、回転磁気媒体またはプラター上にデータを記憶する。データは、典型的に、プラター上に磁束反転のパターンとして記憶される。典型的なHDDへデータを書き込むためには、プラターが高速で回転し、それと同時に、プラター上で浮動している書き込みヘッドが、一連の磁気パルスを生成して、そのデータを表すようにプラター上で磁粉を整列させる。典型的なHDDからデータを読み込むためには、高速で回転したプラター上で浮動する磁気抵抗読み込みヘッドにおいて、抵抗変化が誘導される。実践において、得られたデータ信号は、アナログ信号であり、上がり下がりは、データパターンの磁束反転の結果である。次いで、PRML方式(partial response maximum likelihood)と呼ばれるデジタル信号処理技術が用いられ、データ信号を生成することに関わった可能性のあるデータパターンを決定するために、アナログデータ信号をサンプリングする。
HDDは、それらの機械的特性のために、ある欠点を有する。HDDは、衝撃、振動、または強磁場により、破損または過度の読み込み/書き込みエラーを起こしやすい。加えて、それらは、携帯電子装置において、比較的大きな電力を消費する部品である。
大容量記憶装置の別の例は、ソリッドステートドライブ(SSD)である。回転媒体上においてデータを記憶する代わりに、SSDは、それらのデータを記憶するのに、半導体メモリ装置を用いるが、多くの場合、それらのホストシステムには、典型的なHDDであるかのように見えるインターフェースおよびフォームファクターを含む。SSDのメモリ装置は、典型的に、非揮発性フラッシュメモリ装置である。
フラッシュメモリ装置は、広範の電子応用に対する、非揮発性メモリの一般的ソースへと発展した。フラッシュメモリ装置は、典型的に、高密度メモリ、高信頼性、および低消費電力を可能とする1トランジスタメモリセルを使用する。セルのしきい電圧における変化は、電荷蓄積ノード(例えば、フローティングゲートまたはトラップ層)、もしくは他の物理現象(例えば、相位変化または分極)のプログラミングを通して、各セルのデータ値を決定する。フラッシュメモリおよび他の非揮発性メモリの一般的な用途は、パーソナルコンピュータ、携帯端末(PDA)、デジタルカメラ、デジタルメディアプレーヤー、デジタルレコーダー、ゲーム、家庭用電気器具、車両、無線装置、携帯電話、およびリムーバブルメモリモジュールを含み、かつその非揮発性メモリの用途は、拡大し続けている。
HDDとは異なり、SSDの操作は、概して、それらのソリッドステートの特質のため、振動、衝撃、または磁場関連には影響されない。同様に、可動部が無いので、SSDは、HDDよりも必要とする電力が少ない。しかしながら、SSDは、現在、HDDの同じフォームファクターと比較した場合、かなり低い記憶容量を有し、かつ同等の記憶容量に対し、大いに高価格である。
電子システムのデータ記憶装置およびデータ製作/消費装置間のデータの効率的な動きにおいて、直接メモリアクセス(DMA)は、記憶装置への直接アクセスを可能にし、その間電子システムの主プロセッサが他のタスクを行うことを可能とする。かかるシステムにおいて、データは、たびたび、定義されたサイズのパケットで、記憶装置へ転送、または記憶装置から転送される。これらパケットは、大容量記憶装置により受け取られると、多くの場合、連結リストプロトコルを使用することにより、揮発性記憶へと記憶される。これは、大容量記憶装置の非揮発性記憶域にデータが書き込まれることを待つことなく、効率的なデータ転送を容易にする。
フラッシュメモリ装置は、概して、ユーザデータと共に記憶され、多くの場合メタデータと呼ばれる、ある種の非ユーザデータを用いる。一例として、大容量記憶装置により生成される、状態表示器、エラー訂正符号データ、マッピング情報等は、ユーザデータと共に記憶され得る。これら2つのデータタイプを一緒に記憶することで、メモリ装置に対しユーザデータの定義された単位のストリーミングをもたらし、次いで、メタデータによって、続く書き込みラッチを充たすため、ユーザデータのストリーミングをインタラプトする。メタデータが、メモリ装置へ一度書き込まれると、ユーザデータの、別の定義されたユニットが、ストリーミングされ得る。この周期的なユーザデータのインタラプトは、大容量記憶装置が、その非揮発性記憶域の異なるデータタイプ間のトラフィックを、管理する際に、非効率を引き起こす。
上述の理由、および本明細書を読み、かつ理解すると当業者に明白となる他の理由のため、大容量記憶装置のためのデータストリーミングの代替的な制御の必要性が、当技術分野に存在する。
本開示の実施形態に従う、少なくとも1つのメモリモジュールを有する電子システムの機能ブロック図である。 本開示の実施形態に従う、図1のマスターコントローラのさらなる細部を表した回路ブロックである。 本開示の実施形態に従う、一実施形態のデータ構造のページの表示である。 本開示の実施形態に従う、連結リストの表示である。 本開示の実施形態に従って、種々のデータユニットが、どのように記憶され、かつアクセスされるかを概念的に表す揮発性メモリの一部の表示である。 本開示の実施形態に従う、大容量記憶装置へデータを書き込む方法のフローチャートである。 本開示の実施形態に従う、大容量記憶装置からデータを読み込む方法のフローチャートである。
以下の本実施形態の詳細説明において、本明細書の一部を形成し、実施形態が実践され得る具体的な実施形態の例証の手段として示される、付随の図面が参照される。これらの実施形態は、当業者が本発明を実践することを可能にするために、十分細部にわたり説明されており、かつ他の実施形態を用いることが可能であり、その過程、電気的または機械的変更を、本開示の範囲から逸脱することなくなし得ることを理解されたい。以下の詳細説明は、したがって、限定的意味に解釈されるべきではない。
図1は、ソリッドステートドライブ(SSD)100のブロック図であり、すなわち、本開示の一実施形態に従う、電子システム120の一部としてプロセッサ130と通信(例えば、接続されて)する大容量記憶装置である。該電子システム120は、それが、そのプロセッサ130を通し、SSDの操作を制御するという点で、SSD100のホストであるとみなすことができる。電子システムのいくつかの例は、パーソナルコンピュータ、ノートパソコン、携帯端末(PDA)、デジタルカメラ、デジタルメディアプレーヤー、デジタルレコーダー、電子ゲーム等を含む。プロセッサ130は、ディスクドライブコントローラまたは他の外部プロセッサで有り得る。典型的に、プロセッサ130およびSSD100を接続するために使用される、標準プロトコルを利用する通信バス132がそこに存在する。通信バス132は、典型的に、複数信号より成り、アドレス、データ、電力、および種々のI/O信号を含む。通信バス132のタイプは、システム120で用いられるドライブインターフェースのタイプに依存する。いくつかの従来のディスクドライブインターフェースバスプロトコルの例は、IDE、ATA、SATA、PATA、ファイバーチャンネル、およびSCSIである。他のドライブインターフェースが存在し、かつ当技術分野において公知である。図1は、本開示の実施形態に焦点を合わせるために、単純化されていることが理解されるべきである。付加の、または異なる構成要素、接続、およびI/O信号が、当技術分野において公知であるように、本開示の範囲から逸脱することなく実装され得る。例えば、SSD100は、揮発性メモリ114のための専用コントローラである電力調節/配電回路等を含み得る。しかしながら、かかる付加コンポーネントは、本開示の理解のためには必要ではない。
本開示の一実施形態に従う、SSD100は、図1で示されるように、プロセッサ130、例えば、ドライブコントローラが通信バス132を介し、SSD100と相互作用することを可能とするインターフェース102を含む。インターフェース102は、当業者には周知の多くの標準コネクタのうちの1つで有り得る。これらのインターフェース102コネクタのいくつかの例は、IDE、ATA、SATA、およびPCMCIAコネクタである。種々の本開示の実施形態は、多種多様のHDD従来タイプを模倣するように構成され得るので、他のディスクドライブコネクタもまた、インターフェース102において用いられ得る。
図1のSSD100はまた、マスターコントローラ104、いくつかのメモリモジュール1061〜106N、および揮発性メモリ114を含む。マスターコントローラ104により実行されるいくつかの機能は、SSD100内での操作を管理し、通信バス132を介し、SSD100にとって外部装置であるプロセッサ130等と通信することである。メモリモジュール1061〜106Nは、SSD100のための、大容量記憶媒体として作動する。揮発性メモリ114は、SSD100へのデータ転送、かつSSD100からのデータ転送のためのバッファ記憶装置として作動する。
マスターコントローラ104は、SSD100の種々の操作を管理する。説明されたように、SSDは、標準HDDの簡単に取り替えられる代替として使用され得、標準インターフェースおよび通信プロトコルを有する多くの標準HDDがそこに存在する。したがって、マスターコントローラ104の多くの機能の1つは、これら標準HDDプロトコルの1つの操作を模倣することである。マスターコントローラ104の別の機能は、SSD100にインストールされたメモリモジュール106の操作を管理することである。マスターコントローラ104は、多種多様の標準通信プロトコルを使用し、メモリモジュール106と通信するように構成可能である。例えば、本開示の一実施形態において、マスターコントローラ104は、SATAプロトコルを使用し、メモリモジュール106とやりとりする。他の実施形態は、メモリモジュール106と通信するために、他の通信プロトコルを用い得る。マスターコントローラ104はまた、誤り訂正符号(ECC)検査等のメモリモジュールに関する付加的機能を実行し得る。マスターコントローラ104の実装は、ハードウェアまたはハードウェア/ソフトウェアの組み合わせの使用により達成され得る。例えば、マスターコントローラ104は、状態機械により、全体が、または部分的に実装され得る。マスターコントローラ104はさらに、本開示の1つ以上の方法を実行するように構成される。
メモリモジュール106は、内部通信バス112を使用し、マスターコントローラ104と接続される。マスターコントローラ104およびメモリモジュール106間の通信は、示されている、一般的バス112、および/またはマスターコントローラ104および各メモリモジュール106間の個別接続を用いることによって、実装され得る。
制御回路110は、非揮発性メモリ装置116の、その対応するメモリモジュール1061〜106N上での操作を管理する。メモリ装置116は、フラッシュメモリ装置で有り得る。制御回路110はまた、メモリモジュール1061〜106Nと通信するために、マスターコントローラ104により用いられる、通信プロトコルを変換するように作動する。例えば、本開示の一実施形態において、マスターコントローラ104は、メモリモジュール1061〜106Nと相互作用するために、SATAプロトコルを用い得る。かかる実施形態では、制御回路110は、SATAインターフェースを模倣するように構成される。制御回路110はまた、メモリモジュールに記憶されるデータへのアクセス、および摩耗均一化を調節するために、セキュリティー機能記憶等の他のメモリ機能を管理する。
上述のように、外部装置から受け取られたユーザデータのストリームへの、大容量記憶装置で生成されたデータの挿入は、その挿入が大容量記憶装置で実行される間に、ストリーミングがインタラプトされるので非効率を引き起こし得る。種々の実施形態は、その2つのデータタイプの入力を包含する連結リストを生成することによって、この問題を対処する。その入力は、定義された順序を有する。例えば、連結リストは、ユーザデータのための3つの項目を有し、その後にメタデータのための1つの項目が続くように定義され得る。これは、定義されたデータ構造を有するデータのストリーミングを促進する。
連結リストプロトコルは、転送するデータのユニットのサイズ、およびそのデータのユニットに対する開始アドレスを定義することによって、データの効率的なストリーミングを提供する。このようにして、データは、開始アドレスからストリーミングを開始し、およびその後の連続アドレスを通して、定義されたサイズが転送されるまで続けられる。連結リストにおける次の項目は、次いで、データの次のユニットのサイズ、およびその開始アドレスを定義し、その処理が繰り返され得る。
前システムにおいて、大容量記憶装置によりユーザデータが受け取られると、それは揮発性メモリへと記憶されることとなる。連結リストが生成され、揮発性メモリで記憶されるデータユニットのサイズ、およびそれらの各データユニットが記憶されるであろう開始アドレスを定義することとなる。マスターコントローラが、その後、それらのデータユニットを、その非揮発性メモリモジュールへストリーミングすると、いくつかの転送されたユニットに対してポーリングすることとなり、次いで、ユーザデータの特定の数のユニットが転送された後、メタデータの転送を開始するために、メモリモジュールへのデータ転送をインタラプトすることとなる。メタデータ転送の完了後、そのマスターコントローラは、次いで、連結リストを再び参照して、連結リストの次の項目に従って、ユーザデータのストリーミングを再開始することとなる。
本明細書で説明される種々の実施形態は、ユーザデータ項目内に、メタデータに対する連結リスト項目を挿入する。メタデータ項目が挿入される前に作成される、ユーザデータ項目の数についての値が定義される。例えば、ユーザデータは、特定のサイズのユニットで、SDD100により受け取られる。したがって、ユーザデータの各連結リスト項目は、受け取られるユーザデータのユニットを示すサイズ、および、マスターコントローラ104により選択される、その受け取られたユニットの、揮発性メモリ114内における記憶のための開始アドレスを定義することとなる。セクターによりデータユニットを定義する、または512バイトをセクターサイズとして使用するための条件は存在しないが、セクターは、多くの場合512バイトであることを理解されたい。この例を続けると、ページごとに4KBのユーザデータおよび80バイトのメタデータのために構成されたメモリ装置へユーザデータを書き込むこと、およびそのページを、各2KBの2つのセクションのユーザデータへ分割することを所望する場合、ユーザデータの各セクションの後に、各40バイトのメタデータのセクションが続く場合、この例における値は、4が選択され、それにより、受け取られたユーザデータに対する4つの連結リスト項目が作成され、それらはそれぞれ、定義された512バイトのサイズを有し、40バイトのサイズを定義するメタデータの連結リスト項目が続く。
ユーザデータの受け取り、メタデータ項目の挿入のためにインタラプトされる必要はなく、その入力に対応するメタデータは、連結リスト項目の作成前に生成されなくてもよい。マスターコントローラ104が、対応するメタデータユニットのサイズを知っているため、マスターコントローラは、メタデータユニットサイズおよび開始アドレスにより定義されるその揮発性メモリ114における記憶域を、単に確保するにすぎない。あるメタデータが、受け取られたユーザデータに基づいて計算、例えば、エラー訂正符号(ECC)データの生成を要求し得る際、マスターコントローラは、次のユーザデータを受け取ることができる前に、そのデータの計算を要求するために、データの流れをインタラプトする。そのデータの記憶場所を単に確保し、説明されたように、その連結リスト項目を作成することにより、メタデータが一度、生成ならびに記憶されると、ユーザデータおよびその対応するメタデータは、インタラプトなしで、メモリモジュール106へストリーミングすることができ、それにより、マスターコントローラ104が、摩耗均一化、および信号処理等の他のタスクに対して、その処理リソースを用いることを可能にする。
前述の例は、メモリモジュールへの書き込みのためのユーザデータの受け取りに対する実施形態を説明したが、本明細書で説明される概念はまた、メモリモジュールからのユーザデータを読み込むことに適用することができる。したがって、連結リストは、メモリモジュールから受け取るユーザデータユニットおよびメタデータユニットのサイズおよび場所を定義するように、作成されることとなる。データは、次いで、メモリモジュールからストリーミングされ、連結リストにおいて定義されたアドレスへと記憶されることとなる。ユーザデータは、次いで、通信バス132上での出力に対し利用可能となる。
図2は、本開示の一実施形態に従う図1のマスターコントローラ104のさらなる細部を表す回路ブロックである。図2において、マスターコントローラ104は、プロセッサ218を含む。プロセッサ218は、SSD100の一般操作を提供する。例えば、プロセッサ218は、信号処理を行って、メモリモジュール106から受け取った信号を評価し、摩耗均一化を行って、種々のメモリ装置の、比較的均一な使用量を維持することができる。プロセッサ218はさらに、外部装置から受け取ったコマンドを復号することができる。一実施形態では、プロセッサ218は、本明細書で説明されるように、連結リストを生成する。
マスターコントローラ104はさらに、揮発性メモリ114および非揮発性メモリモジュール106の制御およびアクセスのために、それぞれ揮発性メモリコントローラ222および非揮発性メモリコントローラ224を含み得る。種々の実施形態では、プロセッサ218が連結リストを生成するように構成され得、非揮発性メモリコントローラ224を、プロセッサ218による、さらなるトラフィックなしで、連結リストにより定義されたように、メモリモジュール106から、およびメモリモジュール106へ、データをストリーミングするように構成することができる。
図3は、本開示の実施形態に従った、ページ330のデータ構造の一実施形態の表示である。ページ330は、1つ以上のユーザデータ部分332および1つ以上のメタデータ部分334を有する。メタデータ部分334は、概して、外部装置によるその後の読み出しのため、メモリ装置上での記憶のために、外部装置から受け取られることがないデータを含有する。例としては、ページ330の論理アドレス、ECCデータ、状態表示情報を含まれる。一例として、各ユーザデータ部分332は、2,048バイトのユーザデータを含有し、各メタデータ部分334は、48バイトのメタデータを含有する。ページ330はさらに、設計者が選択し得る、他の目的のための付加データ部分(未表示)を含み得る。
書き込み操作中、ユーザデータをSSD100へ提供する外部装置は、概して、メタデータを認識しないため、それは、典型的に、ユーザデータを、このデータのストリーム中の論理アドレス、例えば、ページ330に対応するアドレスへとプログラムされるように、提供することとなる。上述のように、このユーザデータのストリームは、定義されたサイズの1つ以上のユニット、例えば、データのセクターのユニットを含有し得る。種々の実施形態では、ユーザデータを論理アドレスへ書き込むコマンドを受け取ることに応答して、マスターコントローラ104は、ユーザデータのユニットサイズ、および記憶のための場所を定義するように、連結リストを生成する。マスターコントローラ104はさらに、メタデータのユニットサイズ、および記憶のために場所を定義するように、連結リストでの項目を作成する。連結リストの構造は、ページ330の所望のデータ構造に従うこととなる。例えば、ユーザデータ部分332aおよび332bが、それぞれ2,048バイトであり、メタデータ部分334aおよび334bが、それぞれ48バイトであり、ユーザデータユニットは、それぞれ512バイトであり、メタデータユニットが、それぞれ48バイトである場合、ページ330の読み込みまたは書き込みのための連結リストは、4つ(2,048バイト/512バイト)のユーザデータ項目を含有し、その後1つのメタデータ項目が続き、その後4つのユーザデータ項目が続き、その後1つのメタデータ項目が続くこととなる。各ユーザデータ項目は、512バイトのサイズを定義し、各メタデータ項目は、48バイトのサイズを定義することとなる。
図4Aは、本開示の一実施形態に従った、連結リスト440の表示である。連結リスト440は、1つ以上のユーザデータ項目442および1つ以上のメタデータ項目444を含む。各ユーザデータ入力442およびメタデータ項目444における破線は、各項目が、その項目に対するデータユニットのサイズおよびそのデータユニットに対する開始アドレスの双方を定義することを示す。
図4Bは、種々のデータユニットが、メモリモジュールへ転送するために、どのように記憶およびアクセスされるかを概念的に示す、揮発性メモリ114の一部の表示である。揮発性メモリ114は、1つ以上のサブセグメント446を有する。各サブセグメント446は、揮発性メモリ114内での、隣接アドレス空間を表すが、個々のサブセグメント446は、同じサイズを有する必要はない。ユーザデータユニット、例えば、図4Bのユーザデータ0〜7がSSD100により受け取られると、各ユーザデータユニットは、連結リスト440により定義されるように、サブセグメント446に記憶される。サブセグメント446は、隣接アドレス空間を表すが、個々のユーザデータユニットは、隣接するサブセグメント446に記憶される必要がないことを理解されたい。例えば、そこには、ユーザデータ2の終了する場所とユーザデータ3が開始する場所の間に記憶場所が存在し得る。これらの記憶場所は、未使用、もしくは、それらはすでに、プロセッサ218により使用される他のデータの記憶のために、指定されているかもしれない。
メタデータユニット、例えば、図4Bのメタデータ0〜1は、ユーザデータユニットが受け取られている間、またはそのデータ転送が終了した後に、揮発性メモリ114へ書き込まれ得る。メタデータユニットは、連結リスト440により定義されたように、サブセグメント446に記憶される。ユーザデータと同様に、個々のメタデータユニットは、隣接サブセグメント446へ記憶される必要はない。しかしながら、メタデータユニットのデータは、個々のサブセグメント446の連続アドレス空間で記憶される。
連結リスト440の項目は、それらの項目に対応するデータが受け取られる前に、プログラムされる。しかしながら、連結リスト440全体が、データ転送完了前に生成される必要はない。例えば、ホスト装置が、書き込みコマンドをSSD100に発行する場合、該書き込みコマンドの後に、8つのユーザデータユニットが続き得る。したがって、連結リスト項目は、第1のユーザデータユニットに対しては、第1のユーザデータユニットを受け取る前に作成されるが、その後の連結リスト項目は、第1のユーザデータユニットが受け取られている間に作成され得る。また、メタデータユニットに対する連結リスト項目は、その後のストリーミングのため、メタデータを揮発性メモリ114へ書き込む前に作成されるが、メタデータの生成前に、作成される必要はない。
種々の実施形態はさらに、メタデータユニットが、いつ揮発性メモリ114へ転送されるのか、もしくはそれらがいつメモリモジュール106へ転送されるのかを制御する。例えば、メタデータは、その対応する連結リスト項目が、有効な開始アドレスでプログラムされるまでは、揮発性メモリ114へと転送されるべきではない。加えて、あるメタデータは、ユーザデータの転送が完了する後まで生成され得ないため、かかるメタデータのメモリモジュール106へのストリーミングは、連結リストにより定義されるサブセグメントが、有効なメタデータを含有する後まで、遅延すべきである。したがって、非揮発性メモリコントローラ224は、メタデータの揮発性メモリ114のストリーミングに対するメタデータの記憶を、対応する連結リスト項目444が生成されるまで禁止し、揮発性メモリ114からのメタデータのストリーミングを、連結リストにより定義されるサブセグメント446が、有効なメタデータを含有する後まで、禁止するように構成され得る。
ユーザデータユニットおよびメタデータユニットの、データの非揮発性記憶のメモリモジュールへの転送のために、メモリコントローラ224は、次いで、連結リスト440に従って、非揮発性揮発性メモリからデータをストリーミングする。したがって、図4Bで描写されるように、ユーザデータ0が、メモリモジュールへと提供され、ユーザデータ1〜3がその後に続く。ユーザデータ3の転送の完了次第、メタデータ0が転送され、ユーザデータ4〜7、および次いでメタデータ1が続く。このようにして、ユーザデータおよびメタデータが、メタデータの挿入のために、プロセッサ218による、データストリーミング操作のインタラプトを必要とせずに、定義されたデータ構造を有して、メモリモジュールへと提供される。メタデータは、概して、外部装置へと提供されないため、SSD100の読み込みコマンドに応答する際、揮発性メモリ114から通信バス132へのデータストリーミングは、連結リスト440においてメタデータ項目444を省くべきである。
図5は、本開示の実施形態に従った、大容量記憶装置へのデータ書き込みの方法のフローチャートである。550で、書き込みコマンドが、復号される。該復号は、概して、大容量記憶装置のマスターコントローラのプロセッサにより実行される。
書き込みコマンドは、少なくともユーザデータが書き込まれる論理アドレスを定義する、外部提供されるコマンドである。書き込みコマンドはさらに、大容量記憶装置へと書き込まれる、ユーザデータを提供する。書き込みコマンドは、ユーザデータユニットサイズを定義し得るが、これは、プロトコルにより定義され得る。したがって、所与のプロトコルの書き込みコマンドは、コマンドに続くユーザデータユニットの数、および各ユニットのサイズを、コマンドと共にその情報を明示的に提供する必要なしに、定義し得る。
552で、書き込みコマンドの復号に応答して、連結リストが生成される。連結リストは、定義された数の、ユーザデータに対する項目、定義された数の、メタデータに対する項目、および定義された項目の順序を有する。上述のように、各連結リスト項目は、記憶されるデータのユニットサイズ、およびそのデータのユニットが記憶される開始アドレスを定義する。連結リスト項目は、対応するアドレスで記憶されるデータのタイプを定義する必要はない。例えば、大容量記憶装置のマスターコントローラのプロセッサは、特定の数の項目のアドレスにおいて、ユーザデータユニットを記憶するため、連結リストを、次の項目のアドレスにおいてメタデータを記憶する前に、生成するように、構成され得る。連結リストは、十分な項目を、すなわち、ある数の項目と、それぞれの項目のサイズの組み合わせを、書き込みコマンドと関連したすべてのユーザデータが、定義された記憶場所を有するように、含有すべきである。連結リストはまた、メタデータのために少なくとも1つの項目を含有する。
554で、書き込みコマンドに応答して受け取られたユーザデータは、ユーザデータに対する連結リスト項目よって定義されたアドレスおよびユニットサイズに従って、記憶される。例えば、ホストは、大容量記憶装置へユーザデータユニットの転送を開始し得る。第1のユーザデータユニットが受け取られると、第1のユーザデータユニットのデータは、開始アドレスにより定義された場所より始めて、揮発性メモリへ書き込まれ、第1のユーザデータユニットのデータは、次いで、連結リスト項目によって定義されたサイズに達するまで、隣接メモリ空間のその後のアドレスへと書き込まれる。受け取られた次のユーザデータユニットは、そこで、書き込みコマンドに関連したすべてのユーザデータが受け取られるまで、ユーザデータに対する次の連結リスト項目に従って、揮発性メモリへと記憶される等、となる。
556で、メタデータは、受け取られたユーザデータに関連する大容量記憶装置により生成されるメタデータは、メタデータに対する連結リスト項目により定義されたユニットサイズとアドレスに従って、記憶される。図5では、メタデータは、ユーザデータの受け取りに続くように描写されているが、いくつか、またはすべてのメタデータは、すべてのユーザデータが受け取られる前に、その連結リスト項目に従って、記憶され得る。例えば、該書き込みコマンドは、8つのユーザデータユニットに関連し得る。この例については、大容量記憶装置は、最初の4つのユーザデータユニットを受け取り、それらのユーザデータユニットに対するメタデータを生成し、最後の4つのユーザデータユニットが受け取られる前に、揮発性メモリへそのメタデータを記憶することができる。
558で、ユーザデータおよびメタデータは、連結リストにより定義されたデータ構造を有して、非揮発性メモリへストリーミングされ得る。例えば、連結リストが、各512バイトの4つのユーザデータ項目、1つの48バイトのメタデータ項目、各512バイトの4つのユーザデータ入力、および1つの48バイトのメタデータ項目を有する場合、非揮発性メモリに提供されるデータの構造は、2,048バイトのユーザデータを有し、48バイトのメタデータが続き、その後2,048バイトのユーザデータが続き、さらに48バイトのメタデータが続くこととなる。
図6は、本開示の実施形態に従う、大容量記憶装置からデータを読み込む方法のフローチャートである。660で、読み込みコマンドが、復号される。該復号は、概して、大容量記憶装置のマスターコントローラのプロセッサにより実行することができる。
読み込みコマンドは、ユーザデータが読み込まれる、少なくとも1つの論理アドレスを定義する、外部から提供されるコマンドである。読み込みコマンドは、ユーザデータユニットサイズを定義し得るが、これは、データを含有する記憶装置のデータ構造により定義され得る。したがって、記憶装置のデータ構造は、読み込むべきユーザデータユニットの数および各ユニットのサイズを、その情報をコマンドと共に明示的に提供することを必要とすることなく、定義し得る。
662で、読み込みコマンドの復号に応答して、連結リストが生成される。連結リストは、ユーザデータに対する定義された数の項目、メタデータに対する定義された数の項目、および定義された項目の順序を有する。上述のように、各連結リスト項目は、記憶されるデータのユニットサイズおよびデータのユニットが記憶される開始アドレスを定義し、そのデータは、外部装置から受け取られるか、大容量記憶装置のメモリモジュールから受け取られるかである。連結リスト項目は、それらの対応するアドレスで記憶されるデータのタイプを定義する必要はない。例えば、大容量記憶装置のマスターコントローラのプロセッサは、次の入力のアドレスでメタデータユニットが記憶される前に、入力の特定の数のアドレスでユーザデータユニットを記憶するために、連結リストを生成するように構成されることが可能である。連結リストは、十分な項目、すなわち、ある数の項目と、それぞれの項目のサイズの組み合わせを、読み込みコマンドに関連したすべてのデータが、定義された記憶場所を有するように、含有するべきである。連結リストはまた、メタデータに対する少なくとも1つの項目を含有する。
664で、データは、読み込みコマンドに応答して、大容量記憶装置のメモリ装置から読み込まれ、そのデータに対する連結リスト項目により定義されたアドレスおよびユニットサイズにより、揮発性メモリへストリーミングされる。例えば、読み込みコマンドは、メモリ装置から読み込まれるデータのページをもたらし得る。このデータのページは、次いで、連結リスト項目に従って、揮発性メモリへ書き込まれる。例えば、連結リストが、各512バイトの4つのユーザデータ入力、48バイトの1つのメタデータ項目、各512バイトの4つのユーザデータ入力、および48バイトの1つのメタデータ項目を有する場合、第1の2,048バイトのデータは、最初の4つのユーザデータ入力に従って記憶され、次の48バイトのデータは、最初のメタデータ項目に従って記憶され、次の2,048バイトのデータは、最後の4つのユーザデータ入力に従って記憶され、次の48バイトのデータは、最後のメタデータ項目に従って記憶される。一実施形態では、非揮発性メモリコントローラは、マスターコントローラのプロセッサによる介入なしで、非揮発性メモリ装置からデータを揮発性メモリコントローラへストリーミングするように構成される。このようにして、データが、連結リストに従って揮発性メモリへ追加されている間、プロセッサは、他のタスクを操作することが自由にでき、揮発性メモリへのデータ転送に関与する必要がない。
666で、ユーザデータは、外部装置へ出力される。メタデータは、概して、大容量記憶装置により内部で使用され、外部装置による使用を意図しない。故に、連結リストは、メタデータに対する連結リスト項目を単に省くことにより、読み出されたデータのユーザデータ部分のみを転送するためのみに用いることができる。
本明細書で具体的な実施形態を例証かつ説明したが、表示された具体的な実施形態に対し、同じ目的を達成するように意図されたいずれの設定も代用され得ることが、当業者によって理解されるであろう。本開示の多くの改変は、当業者には明白である。故に、本出願は、本開示のいずれの改変または変形をも網羅することを意図する。

Claims (10)

  1. 大容量記憶装置へのデータの書き込み方法であって、
    前記大容量記憶装置において受け取られた書き込みコマンドを復号することと、
    前記書き込みコマンドの復号に応答して、連結リストを生成することであって、前記連結リストは、外部装置から受け取られるべきユーザデータのための2つ以上の項目と、前記大容量記憶装置により生成されたメタデータのための2つ以上の項目とを有し前記ユーザデータのための2つ以上の項目および前記メタデータのための2つ以上の項目は定義されたデータ構造に対応する定義された順序を有する、ことと、
    前記書き込みコマンドに応答して、前記外部装置からユーザデータを受け取り、ユーザデータのための前記連結リストの前記2つ以上の項目に従って、揮発性メモリへ前記ユーザデータを記憶させることと、
    前記外部装置からの前記ユーザデータの受け取りを中断することなく、受け取った前記ユーサデータに関するメタデータを生成することと、
    メタデータのための前記連結リストの前記2つ以上の項目に従って、前記受け取られたユーザデータに関連したメタデータを前記揮発性メモリへ記憶させることと、
    前記ユーザデータおよび前記メタデータを、前記連結リストにより定義されるデータ構造を有するように、前記揮発性メモリから非揮発性メモリへストリーミングすることと、を含む、方法。
  2. 前記連結リストを生成することが、各項目に対応するデータのユニットのサイズおよび対応するデータが記憶される前記揮発性メモリの開始アドレスを定義する、項目を生成することを含む、請求項1に記載の方法。
  3. メタデータを記憶させることが、前記書き込みコマンドに関連した前記ユーザデータのすべてを受け取る前に、前記メタデータの少なくとも一部分を記憶させることを含む、請求項1〜2のいずれかに記載の方法。
  4. 前記受け取られたデータに応答して、前記メタデータの少なくとも一部分を生成することをさらに含む、請求項1〜2のいずれかに記載の方法。
  5. ユーザデータの第1および第2の部分として前記外部装置から前記ユーザデータを受け取り、ユーザデータに対する前記連結リストの前記2つ以上の項目に従って、ユーザデータの前記第1および第2の部分を揮発性メモリへ記憶させることと、
    前記ユーザデータの受け取られた前記第1の部分の状態表示情報、前記ユーザデータの受け取られた前記第1の部分のエラー訂正符号データ、および前記ユーザデータの受け取られた前記第1の部分のマッピング情報のうちの少なくとも1つを含む、ユーザデータの前記受け取られた第1の部分に関連した第1のメタデータを生成することと、
    前記ユーザデータの受け取られた前記第2の部分の状態表示情報、前記ユーザデータの受け取られた前記第2の部分のエラー訂正符号データ、および前記ユーザデータの受け取られた前記第2の部分のマッピング情報のうちの少なくとも1つを含む、前記受け取られた第2の部分のユーザデータに関連した第2のメタデータを生成することと、
    前記ユーザデータの前記第2の部分のすべてを受取る前に、メタデータに対する前記連結リストの2つ以上の項目に従って、前記第1のメタデータを前記揮発性メモリへ記憶させることと、
    前記ユーザデータの前記第2の部分を受け取った後、メタデータに対する前記連結リストの前記2つ以上の項目に従って、前記第2のメタデータを前記揮発性メモリへ記憶させることと、
    をさらに含む、請求項1〜2のいずれかに記載の方法。
  6. 前記連結リストを生成することが、各項目に対応するデータのユニットのサイズ、および対応するデータが記憶される前記揮発性メモリの開始アドレスを定義する項目を生成することを含み、ユーザデータに対するデータのユニットのサイズが、メタデータに対するデータのユニットのサイズとは異なる、請求項5に記載の方法。
  7. 前記定義されたデータ構造は、前記非揮発性メモリの前記ページの前記データ構造であり、前記非揮発性メモリの前記ページの前記データ構造が、ユーザデータ部分とインターリーブされたメタデータ部分を含む、請求項5に記載の方法。
  8. 大容量記憶装置であって、
    マスターコントローラと、
    前記マスターコントローラに接続された揮発性メモリと、
    前記マスターコントローラに接続され、非揮発性メモリ装置を含む、1つ以上のメモリモジュールと、を含み、
    前記マスターコントローラが、受け取られた書き込みコマンドに応答して連結リストを生成するように構成され、
    前記連結リストが、外部装置から受け取られるか、または外部装置へ出力されるユーザデータに対する2つ以上の項目を含み、
    前記連結リストが、前記大容量記憶装置により生成されるメタデータに対する2つ以上の項目を含み、
    前記ユーザデータに対する2つ以上の前記項目および前記メタデータに対する2つ以上の項目が、定義されたデータ構造に対応する定義された順序を有し、
    前記マスターコントローラは、さらに、前記書き込みコマンドに応答した前記ユーサデータの受け取りを中断することなく、前記書き込みコマンドに応答して受け取られた前記ユーサデータに関する前記メタデータを生成するように構成されている、大容量記憶装置。
  9. 前記定義されたデータ構造が、前記受け取られた書き込みコマンドによりアドレス指定される非揮発性メモリ装置の物理ページのデータ構造に対応している、請求項に記載の大容量記憶装置。
  10. それぞれの連結リスト項目が、その項目に対応するデータのユニットのサイズ、およびデータの対応するユニットが記憶される前記揮発性メモリの開始アドレスの表示を含む、請求項のいずれかに記載の大容量記憶装置。
JP2011529124A 2008-09-26 2009-09-18 ソリッドステート大容量記憶装置のためのデータストリーミング Active JP5263561B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN0810211463.7 2008-09-26
CN2008102114637A CN101685381B (zh) 2008-09-26 2008-09-26 固态大容量存储装置的数据串流
US12/327,879 2008-12-04
US12/327,879 US8930645B2 (en) 2008-09-26 2008-12-04 Method and apparatus using linked lists for streaming of data for soild-state bulk storage device
PCT/US2009/057451 WO2010036572A2 (en) 2008-09-26 2009-09-18 Data streaming for solid-state bulk storage devices

Publications (2)

Publication Number Publication Date
JP2012503828A JP2012503828A (ja) 2012-02-09
JP5263561B2 true JP5263561B2 (ja) 2013-08-14

Family

ID=42048553

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011529124A Active JP5263561B2 (ja) 2008-09-26 2009-09-18 ソリッドステート大容量記憶装置のためのデータストリーミング

Country Status (6)

Country Link
US (3) US8930645B2 (ja)
EP (1) EP2342644A4 (ja)
JP (1) JP5263561B2 (ja)
KR (1) KR101359772B1 (ja)
CN (1) CN101685381B (ja)
WO (1) WO2010036572A2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713066B1 (en) * 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists
US8638602B1 (en) * 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
US8392635B2 (en) 2010-12-22 2013-03-05 Western Digital Technologies, Inc. Selectively enabling a host transfer interrupt
WO2012092347A2 (en) 2010-12-28 2012-07-05 Digital Storage Solutions, Inc. System for writing and dispensing solid-state storage devices
KR101861247B1 (ko) * 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
US9158461B1 (en) * 2012-01-18 2015-10-13 Western Digital Technologies, Inc. Measuring performance of data storage systems
KR102036348B1 (ko) * 2012-02-27 2019-10-24 삼성전자 주식회사 메모리 컨트롤러 및 이의 동작 방법
US9146856B2 (en) * 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
US20130297877A1 (en) * 2012-05-02 2013-11-07 Jack B. Dennis Managing buffer memory
US8984247B1 (en) * 2012-05-10 2015-03-17 Western Digital Technologies, Inc. Storing and reconstructing mapping table data in a data storage system
JP6000732B2 (ja) * 2012-08-03 2016-10-05 キヤノン株式会社 データ転送装置及びその制御方法、プログラム
US9582213B2 (en) 2013-02-21 2017-02-28 Netapp, Inc. Object store architecture for distributed data processing system
JP5695126B2 (ja) * 2013-05-14 2015-04-01 株式会社日立製作所 計算機システム、サーバモジュール及びストレージモジュール
CN104572432B (zh) * 2013-10-24 2018-09-04 杭州迪普科技股份有限公司 一种无锁链表管理装置
TWI530954B (zh) * 2013-11-22 2016-04-21 新唐科技股份有限公司 保護非揮發性記憶體中儲存之程式碼的裝置
JP6318769B2 (ja) * 2014-03-28 2018-05-09 富士通株式会社 ストレージ制御装置、制御プログラム、および制御方法
US20150339069A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
JP6050794B2 (ja) * 2014-08-22 2016-12-21 株式会社日立製作所 フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置
US9811456B2 (en) * 2014-11-26 2017-11-07 Advanced Micro Devices, Inc. Reliable wear-leveling for non-volatile memory and method therefor
US10089339B2 (en) * 2016-07-18 2018-10-02 Arm Limited Datagram reassembly
US10409518B1 (en) 2017-04-20 2019-09-10 Seagate Technology Llc Reordered local data deduplication in storage devices
GB201709499D0 (en) * 2017-06-15 2017-08-02 Microsoft Technology Licensing Llc Memory management in non-volatile memory
CN115328856B (zh) * 2022-07-05 2023-05-09 荣耀终端有限公司 一种文件页管理的方法、装置及电子设备

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103225A (ja) * 1992-09-18 1994-04-15 Fujitsu Ltd チェーン式dma方式及びそのためのdmaコントローラ
JPH07336408A (ja) * 1994-06-06 1995-12-22 Hitachi Ltd 通信制御システム及び通信制御装置
US5996054A (en) * 1996-09-12 1999-11-30 Veritas Software Corp. Efficient virtualized mapping space for log device data storage system
JP3563541B2 (ja) * 1996-09-13 2004-09-08 株式会社東芝 データ格納装置及びデータ格納方法
EP0837397B1 (en) * 1996-10-18 2006-04-05 Matsushita Electric Industrial Co., Ltd. Data transfer apparatus and data transfer system for arbitrating a plurality of I/O ports in DMA
US6378035B1 (en) * 1999-04-06 2002-04-23 Microsoft Corporation Streaming information appliance with buffer read and write synchronization
JP2000347815A (ja) * 1999-06-07 2000-12-15 Hitachi Ltd ディスクアレイシステム
JP2002140286A (ja) * 2000-10-31 2002-05-17 Ricoh Co Ltd 情報処理装置及びdma転送方法
JP3979486B2 (ja) * 2001-09-12 2007-09-19 株式会社ルネサステクノロジ 不揮発性記憶装置およびデータ格納方法
JP2004021811A (ja) * 2002-06-19 2004-01-22 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
US7127465B2 (en) * 2002-09-30 2006-10-24 Sun Microsystems, Inc. Memory-efficient metadata organization in a storage array
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
EP1640872B1 (en) * 2003-06-27 2008-10-15 Fujitsu Limited Data transfer method and system
US20060031628A1 (en) * 2004-06-03 2006-02-09 Suman Sharma Buffer management in a network device without SRAM
US8327099B2 (en) * 2005-04-27 2012-12-04 Incomm Technologies Co., Ltd Method for soft configuring a memory device
WO2006133597A1 (en) * 2005-06-15 2006-12-21 Intel Corporation Using transacted writes and caching mechanism to improve write performance in multi-level cell flash memoty
US20060294300A1 (en) * 2005-06-22 2006-12-28 Seagate Technology Llc Atomic cache transactions in a distributed storage system
EP1739672A1 (en) * 2005-07-01 2007-01-03 Deutsche Thomson-Brandt Gmbh Method and apparatus for managing memory accesses in an AV decoder
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
JP2007310627A (ja) * 2006-05-18 2007-11-29 Konica Minolta Business Technologies Inc 画像処理装置
US7822891B2 (en) * 2006-06-13 2010-10-26 Broadcom Corporation System and method for transferring a multidimensional array of data to a non-contiguous buffer
JP4883797B2 (ja) * 2006-09-08 2012-02-22 キヤノン株式会社 記録装置
WO2008070172A2 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for remote direct memory access to a solid-state storage device
US7802005B2 (en) * 2007-03-30 2010-09-21 Motorola, Inc. Method and apparatus for configuring buffers for streaming data transfer
JP2008293484A (ja) * 2007-04-27 2008-12-04 Panasonic Corp バッファメモリ共有装置
US8386630B1 (en) * 2007-09-09 2013-02-26 Arris Solutions, Inc. Video-aware P2P streaming and download with support for real-time content alteration
US20090125726A1 (en) * 2007-11-14 2009-05-14 Mcm Portfolio Llc Method and Apparatus of Providing the Security and Error Correction Capability for Memory Storage Devices
US7962452B2 (en) * 2007-12-28 2011-06-14 International Business Machines Corporation Data deduplication by separating data from meta data

Also Published As

Publication number Publication date
US20170153817A1 (en) 2017-06-01
KR101359772B1 (ko) 2014-02-06
US8930645B2 (en) 2015-01-06
US9575674B2 (en) 2017-02-21
CN101685381B (zh) 2013-07-24
US20150113357A1 (en) 2015-04-23
WO2010036572A2 (en) 2010-04-01
EP2342644A2 (en) 2011-07-13
WO2010036572A3 (en) 2010-06-17
JP2012503828A (ja) 2012-02-09
KR20110059792A (ko) 2011-06-03
EP2342644A4 (en) 2012-10-24
US20100082919A1 (en) 2010-04-01
CN101685381A (zh) 2010-03-31
US10007431B2 (en) 2018-06-26

Similar Documents

Publication Publication Date Title
JP5263561B2 (ja) ソリッドステート大容量記憶装置のためのデータストリーミング
JP5413691B2 (ja) メモリ装置のための組み込みマッピング情報
US10509602B2 (en) Data storage device and operating method thereof
US9923562B1 (en) Data storage device state detection on power loss
TWI432965B (zh) 具有複數個結構之記憶體系統及其操作方法
US11055176B1 (en) Storage devices hiding parity swapping behavior
US9037778B2 (en) Method and apparatus to interface semiconductor storage device and host to provide performance throttling of semiconductor storage device
TWI467372B (zh) 指令執行方法、記憶體控制器與記憶體儲存裝置
US20150254015A1 (en) Method of operating a flash memory system using a migration operation
CN108280033A (zh) 数据存储设备及其操作方法
TWI591635B (zh) 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
TWI569139B (zh) 有效資料合併方法、記憶體控制器與記憶體儲存裝置
US8417879B2 (en) Method for suppressing errors, and associated memory device and controller thereof
JP6994136B1 (ja) メモリにおける単調カウンタ
US10747462B2 (en) Data processing system and operating method thereof
JP2013037666A (ja) 記憶装置をサニタイズする方法及び装置
US11656984B2 (en) Keeping zones open with intermediate padding
JP2012521032A (ja) Ssdコントローラおよびssdコントローラの動作方法
US9785563B1 (en) Read command processing for data storage system based on previous writes
KR20210079894A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210056625A (ko) 데이터 저장 장치 및 이를 이용한 스토리지 시스템
CN106980464B (zh) 利用过采样读取的系统最优化方法
US20230185470A1 (en) Method of operating memory system and memory system performing the same
TW202321926A (zh) 儲存裝置及其操作方法、以及控制器的操作方法
KR20240069386A (ko) 스토리지 장치 시험 장치 및 시험 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120828

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120828

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120928

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120928

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121026

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121026

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130416

R150 Certificate of patent or registration of utility model

Ref document number: 5263561

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250