JP6201242B2 - Nandフラッシュメモリにおけるデータの効率的な記憶を可能にするアーキテクチャ - Google Patents

Nandフラッシュメモリにおけるデータの効率的な記憶を可能にするアーキテクチャ Download PDF

Info

Publication number
JP6201242B2
JP6201242B2 JP2015500584A JP2015500584A JP6201242B2 JP 6201242 B2 JP6201242 B2 JP 6201242B2 JP 2015500584 A JP2015500584 A JP 2015500584A JP 2015500584 A JP2015500584 A JP 2015500584A JP 6201242 B2 JP6201242 B2 JP 6201242B2
Authority
JP
Japan
Prior art keywords
stripe
storage medium
page
data
pages
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
JP2015500584A
Other languages
English (en)
Other versions
JP2015511040A (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 JP2015511040A publication Critical patent/JP2015511040A/ja
Application granted granted Critical
Publication of JP6201242B2 publication Critical patent/JP6201242B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • 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
    • 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本開示は、NANDフラッシュ記憶媒体を含む記憶媒体に効率的にデータを書き込む技術に関する。
関連出願のクロスレファレンス. 本特許文書は、2012年3月16日に出願された米国仮出願61/612,140の利益及び優先権を主張し、ここでその開示はその全体が本明細書中に参照として組み込まれる。
本明細書において提供される背景説明は、本開示の文脈を一般的に提示することを目的とする。本明細書の発明者の成果は、出願時の従来技術として特にみなし得ない説明の態様だけでなく、この背景技術のセクション内に成果が記述されている範囲で、本開示に対する従来技術として明示的にも暗示的にも認められない。
ソリッドステートドライブ(SSD)は、例えばNANDフラッシュメモリデバイス又はダイナミック・ランダムアクセスメモリ(DRAM)デバイス等のデバイスからデータを読み書きする。NANDフラッシュメモリの場合、SSDは、典型的には、NANDフラッシュメモリから及びNANDフラッシュメモリにデータを転送するためのいくつかのデータチャネルを持つSSDコントローラを有する。更に、SSDコントローラは、典型的には、複数のアロケーションユニット(複数のAU)として知られる固定バイトサイズ単位でデータを管理するファームウェアを実行する。伝統的に、データはNANDフラッシュメモリの所与のページに単一のオペレーションで書き込まれ、書き込みオペレーションは、AUのバイトサイズの整数倍のバイト数を含む。NANDフラッシュのページサイズがAUサイズの整数倍でない場合、NANDフラッシュのメモリは、十分に利用されていないかもしれない。
システム、方法、装置及び技術が、記憶媒体にデータを書き込むために提供される。システムは、1又は複数のデータ転送チャネルを通じて記憶媒体のストライプと接続するよう構成され、ストライプが記憶媒体の複数のページを有するインタフェース回路を有する。システムは、データストリームを受信して、データストリームを複数のAUに区画化するよう構成された区画化回路を更に備える。複数のAUの各AUは、予め定められたバイト長を持つ。システムは、複数のAUから選択されたAUのバイトを複数のページのうちの第1ページ上の開始バイトから複数のページのうちの第2ページ上の終了バイトまで連続して書き込むことによって、選択されたAUの第1部分を第1ページに書き込み、選択されたAUの第2部分を第2ページに書き込むよう構成された書き込み回路を更に備える。
いくつかの実装において、書き込み回路は、複数のページの順序付けされたシーケンスに基づいて、複数のAUをストライプに書き込むよう構成される。いくつかの実装において、書き込み回路は、書き込みバッファを有し、書き込み回路は、ストライプの長さに等しいデータ量が書き込みバッファ内に蓄積した後に記憶媒体に書き込むよう構成される。いくつかの実装において、システムは、記憶媒体のストライプに記憶されているデータを読み出して、読み出されたデータに対応する誤り訂正シーケンスを計算するよう構成された誤り訂正(ECC)回路を有する。いくつかの実装において、書き込み回路は、誤り訂正シーケンスを受信し、誤り訂正シーケンスを記憶媒体のストライプの最後のページに書き込むよう構成される。
方法は、1又は複数のデータ転送チャネルを通じて記憶媒体のストライプと接続する段階であって、ストライプが記憶媒体の複数のページを有する段階を備える。方法は、データストリームを受信して、データストリームを複数のAUに区画化する段階を更に有する。複数のAUの各AUは、予め定められたバイト長を持つ。方法は、複数のAUから選択されたAUのバイトを複数のページのうちの第1ページ上の開始バイトから複数のページのうちの第2ページ上の終了バイトまで連続して書き込むことによって、選択されたAUの第1部分を第1ページに書き込み、選択されたAUの第2部分を第2ページに書き込む段階を更に有する。
上記及び他の態様並びにこの発明の利点は、同様の参照文字が全体を通して同様の部分を参照する下記の添付の図面と併せて、以下の詳細な説明を考慮することにより、明らかになるであろう。
いくつかの実施形態に従う、記憶媒体のためのデータ割り当て技術の例示的な従来技術を表す。
いくつかの実施形態に従う、記憶媒体内のページへのAUの2つの例示的な割り当てを表す。
いくつかの実施形態に従う、単一のストライプにページを割り当てるためのSSDコントローラのファームウェアによって用いられ得る例示的な技術を表す。
いくつかの実施形態に従う、2つの異なるAU値及び様々なストライプサイズのための記憶媒体上の記憶デバイスにおける低利用の割合("不使用")を表す。
いくつかの実施形態に従う、ストライプに含まれることになる記憶媒体のページ数を決定するためのSSDコントローラのファームウェアによって実行される例示的な処理を表す。
いくつかの実施形態に従う、SSDコントローラが書き込みバッファを用いるシステムのために部分的に書き込まれたストライプを含む記憶媒体のページを表す。
いくつかの実施形態に従う、SSDコントローラが書き込みバッファを用いないシステムのために部分的に書き込まれたストライプを含む記憶媒体のページを表す。
いくつかの実施形態に従う、単一のチャネル又は最大2個の隣接チャネルによって単一のAUがアクセス可能な場合を示す。
いくつかの実施形態に従う、7個のAU及びそれら各々の関連付けられるチャネルを表す。
いくつかの実施形態に従う、本明細書に記述された任意の処理を実行するコンピューティングデバイスの例示的なブロック図を示す。
本明細書に開示されたものは、ストライプベースの論理構造に基づいて、NANDフラッシュ記憶媒体を含む記憶媒体の利用を向上させる技術である。
図1は、いくつかの実施形態に従う、記憶媒体用のデータ割り当て技術の例示的な従来技術を表す。特に、イラスト100は、記憶媒体に属し、個々のページがP0、P1、P2及びP3でラベル付けされた4個のページ110のセットを表す。イラスト100は、更に、SSDコントローラによって、全部で12個のAUが4個のページ110のセットに書き込まれる様子を表す。例示的な目的で、4個のページ110のセットの各ページが、2,048バイトのサイズを持ち、各AUが520バイトのサイズを持つと仮定する。典型的なシステムにおいて、任意のAUは、記憶デバイスの複数のページに渡り得ず、代わりに、単一ページに完全に書き込まれなければならない。従って、イラスト100において、A0、A1及びA2を有するAUのブロック120は、記憶デバイスのページP0の最初の520×3=1,560バイトに書き込まれる。しかしながら、書き込みオペレーション後にページP0内に488バイトしか残らないので、ページP0にA3の全体を書き込むスペースがない。
従って、A3は、記憶媒体の新しいページP1に代わりに書き込まれる。特に、図1に表されるように、P0、P1、P2及びP3の各ページは、まさに3個のAUを記憶する。このように、個々のAUの記憶は記憶媒体の任意の2ページに渡り得ないので、記憶スペースはP0、P1、P2及びP3の各ページ上で低利用(underutilized)となる。具体的には、低利用のバイトは、図1内でバイト125、135、145及び155によって示される。特に、P0、P1、P2及びP3の各ページは、全2048バイトのうち488バイトの不使用スペースを有する。このように、P0、P1、P2及びP3の各ページは、およそ23パーセントほど低利用となる。
このように、記憶媒体のページサイズがAUサイズの整数倍でない用途において、AUの倍数のどれも正確に記憶媒体のページの全バイトを占めず、従って記憶媒体は低利用となるだろう。従って、本開示に記載されるようなストライプベースの技術は、そのような短所に対処し、ページサイズがAUサイズの整数倍でないシステムにおける、NANDフラッシュ記憶媒体を含む記憶媒体の利用を増大するために、提示される。
ストライプは、記憶媒体のページの特定数のグループである(例えば、2、5又は10ページ)。有利には、ストライプ論理のフレームワークを用いることによって、SSDコントローラのファームウェアは、そのようなAU内の全てのデータを依然として適切に読み出し及びアクセスしつつ、AUが記憶デバイスの複数のページに渡って突破することを可能にする。Mはストライプ内のページ数を意味し、Nがストライプ内のAU数を意味するとする。そして、理想的には、記憶媒体の完全な利用を達成するために、以下の式が保たれる。
M*(バイト内のページサイズ)=N*(バイト内のAUサイズ) (1)
しかしながら、実際には、(1)式を満たすのに必要なM及び/又はNの値は、非常に大きいか、他の場合は実装にとって実際的でない。しかし、上記の(1)式を満たさないM及びNの値が用いられる場合でも、記憶媒体は依然として、ストライプフレームワークに基づいて、個々のAUがページに渡って突破できないスキームの場合より効率的に利用される。これは以下で説明される。
ストライプベースのアプローチのいくつかの利点が、図2のイラスト200によって表される。具体的には、イラスト225は、2,048バイトのページサイズ及び1,030バイトのAUサイズの場合において、M=4及びN=7である場合を表す。イラスト225に示されるように、SSDコントローラのファームウェアは、個々のAU230が複数ページに渡って突破することを可能にし、記憶媒体の最初の3ページ(それぞれP0、P1及びP2でラベル付けされている)が完全に利用されている。しかしながら、(1)式は満たされていないので、最後のページP3に関してNAND記憶装置のいくらかの低利用が存在する。特に、図2に表されているように、ページP3は完全に書き込まれておらず、あるバイト数232が空のままである。イラスト225で表されるストライプの全8,192バイトのうちの7,210バイトを7個のAU230が占有し、総利用はおよそ88パーセントである。比較すると、もしAUが複数のページに渡って突破できない場合、NANDフラッシュストレージの総利用は、ページあたり2,048バイト毎に1,030、すなわち50パーセントの利用をわずかに超えるぐらいだろう。
ストライプベースのアプローチの第2の例示として、イラスト250は、832バイトのページサイズ及び520バイトのAUサイズの場合において、M=10及びN=16である場合を表す。この場合、(1)式が満たされ、したがってNAND記憶装置は完全に利用される。特に、ページP9(イラスト250に表されるストライプの最後のページ)が完全に書き込まれている。比較すると、もしAUが複数のページに渡って突破できない場合、NANDフラッシュストレージの総利用は、832バイト毎に520、すなわち62パーセントの利用をわずかに超えるぐらいだろう。
複数ページのストライプへの論理的なグルーピングは、SSDコントローラのファームウェアによって実行される。いくつかの実装では、ファームウェアは、単一の記憶デバイスのみからの複数のページをストライプに割り当て、一方、他の実装では、ファームウェアは複数の記憶デバイスからの複数のページを単一のストライプに割り当てる。追加的又は代替的に、ファームウェアは、単一のストライプに、複数の異なるデータ転送チャネルを通じてアクセス可能なページを割り当ててよい。
図3は、いくつかの実施形態に従う、単一のストライプにページを割り当てるためのSSDコントローラのファームウェアによって用いられ得る例示的な技術を表す。特に、イラスト300は、SSDコントローラが、2つの異なるチャネル(それぞれCH0及びCH1でラベル付けされている)を用いて、4個の異なるデバイス(それぞれDEV0、DEV1、DEV2及びDEV3でラベル付けされている)に渡って広がる96ページを書き込み得る場合を表す。図3の異なるデバイスは、例えば異なるメモリ又は記憶デバイスに対応するとしてよく、それぞれSSDコントローラが独立に読み書きできる。イラスト300は、複数のチャネル及び複数のデバイスに渡ってストライプにページを割り当てる2つの異なる方法について、M=8である場合を表す。
第1のストライプ割り当て方法は、複数のデバイス及び複数のチャネルの両方に渡ってストライプを割り当てることである。これは、図3にストライプ310及びストライプ320によって表されている。代替の第2のストライプ割り当て方法は、共通のチャネルに属する(一方で複数のデバイスに渡って広がっている)所与のストライプに全てのページが割り当てられることを要求することである。これは、チャネルがCH0の場合はストライプ330で、チャネルがCH1の場合はストライプ340で示されている。本明細書の開示及び教示に基づいて当業者に理解されるように、図3に表される割り当て方法は、割り当て方法の多くの種類のうちの2つに過ぎない。実際には、整数個のAU及び整数個のページを含む、任意の割り当て方法が用いられ得る(図3に表された任意のページのグループの、単一のストライプへのマッピング)。
複数のストライプに記憶されているデータにアクセスし、複数のストライプにデータを書き込むためには、ファームウェアは、記憶された各AUの最初のバイトのアドレス(又は等価なアドレス)を生成できなければならない。そのために、ファームウェアは、2つのアドレッシング要素を用いる。まず、記憶デバイスに記憶されたデータの各ストライプの開始を特定するために用いられるストライプIDであり、任意のAUに関連付けられるオフセットを特定するために用いられるAUインデックスである。例えば、P個の総ストライプとストライプ当たりN個のAUとを持つ記憶デバイスにおいて、任意のAUは、0からP−1までのストライプID値と0からN−1までのAUインデックス値によってアドレッシングされ得る。更に、物理メモリアドレスにアクセスするために、ファームウェアは、ストライプID及びAUインデックス値を物理メモリアドレスにマッピングするフラッシュ変換層(FTL)テーブルを参照してよい(また、物理メモリアドレスは、それ自身がページ識別番号及びページオフセットによって表されてよい)。
様々な用途のために、ファームウェアはアドレスのセットを任意のAUに関連付ける。単一のページ内に完全に書き込まれたAUについて、ファームウェアは、(ストライプID、先頭バイト、最終バイト)の形式の単一のエントリを維持してよい。例えば、再び図2を参照して、A0 257のAUについて、ファームウェアは、AUが先頭のストライプに属し、当該ストライプの0から519バイトを占有することを示す(0、0、519)の単一のエントリを維持してよい。一方、複数のストライプに渡って突破する図2のA1 259のAUについては、2個のエントリがファームウェアによって用いられる。したがって、A0 257のAUは、先頭ページ内でAUが占有するバイトに対応するエントリ(0、0、519)によって表すことができ、A1 259のAUは、先頭及び二番目のページ内でAUが占有するバイトにそれぞれ対応するエントリ(0、520、831)及び(1、0、207)によって表すことができる。
SSDコントローラは、ファームウェア及びハードウェアの好適な組み合わせを用いて、ストライプID及びAUインデックス値を、ページアドレス及びページオフセット(又は、AUが2個のページに及ぶ場合、場合によっては、ページアドレス及びページオフセットの2個のペア)に変換してよい。第1の実装において、ファームウェアは、ストライプID及びAUインデックスをSSDコントローラのハードウェアに供給する。それからハードウェアは、ストライプID及びAUインデックス値の1つ又は複数のページアドレス及び1つ又は複数のページオフセットへのデコードを行う。例えば、ハードウェアは、AUがページ境界を超える場合、2ページ読み出しを生成するだろう。第2の実装において、ファームウェア自身は、ストライプID及びAUインデックス値をページアドレス及び1つ又は複数のページオフセット値にデコードする。この場合、ファームウェア自身は、AUがページ境界を超える場合、2ページ読み出しを生成する。
アドレスデコーディングにハードウェアを用いる第1の実装の利点は、他のオペレーションを処理するためにファームウェアを自由にすることである。そのため、デコードにファームウェアを用いる第2の実装より、全体のシステム性能が高速になり得る。最初の実装の短所は、ハードウェアが潜在的な破壊又は使用不能なアドレス値に気づいていなければならないことであり、これは、そのような情報をハードウェアに提供するために莫大なリソースが用いられることを要求するだろう。有利なことに、開示されたストライプ構造は、SSDコントローラが複数のAUの読み出しを実行する方法に制約を加えない。
図4は、いくつかの実施形態に従う、2つの異なるAU値及び様々なストライプサイズのための記憶媒体における低利用の割合(不使用)を表す。特に、テーブル410は、4,680バイトのAUサイズ405及び1,2,3,4及び16ページのストライプサイズについての不使用値を表し、テーブル420は、4,752バイトのAUサイズ415及び1,2,3,4及び16ページのストライプサイズについての不使用値を表す。どちらの場合もページサイズは9,216バイトである。不使用値を計算する方法の例として、4,680バイトのAUサイズ及び3ページのストライプサイズ(すなわち、9,216×3=27,648バイト)に対応する行418を考える。この場合、最大5個のAUが、ストライプのバイトサイズを超えることなく、ストライプに書き込まれる(すなわち、全部で23,400バイト)。このように、ストライプの27,648バイトのうちの4,248が不使用のままとなり、したがっておよそ15パーセントの不使用となる。
図4に表されるように、AUサイズが4,680バイト及び4,752バイトの場合、ストライプサイズが16ページの長さに達するまで、ストライプサイズが増大するほど不使用が減少する。図4に表されるように、4、680バイトのAUサイズ405に対する不使用はおよそ1.6113パーセントであり、一方、4,752バイトのAUサイズ415に対する不使用はおよそ0.0977パーセントである。したがって、図4に関して本開示に記載されている技術を用いて、普通のストライプサイズであっても、概して不使用は比較的小さいパーセンテージ値にまで低減される。一構成において、不使用のバイトは空のままではないが、むしろ誤り訂正コード(ECC)のバイトを記憶するために使用される。例えば、また16ページのストライプサイズを持つテーブル410において、2,376バイトがAUに割り当てられない。これらのバイトは、使用されている147,456−2,376=145,080バイトの信頼性を保証するためのECCバイトを記憶するのに用いられてよい。
図5は、いくつかの実施形態に従う、ストライプに含まれることになる記憶媒体のページ数を決定するためのSSDコントローラのファームウェアによって実行される例示的な処理を表す。処理500は505で開始する。510で、共にバイトで計測されそれぞれAU_Size及びPage_Sizeで示されているAUのサイズ及びページのサイズが、ファームウェアによって取得される。例えば、一構成において、パラメータAU_Sizeは4,680バイトであってよく、パラメータPage_Sizeは9,216バイトであってよい。
520で、ファームウェアは、Page_Cntで示されているページカウンタの値を、値1に等しくなるようセットする。ページカウンタは、ストライプ内に含まれるページ総数の現在の候補値を表す。530で、ファームウェアは、AU_Size及びPage_Cntのパラメータに基づいて、Stripe_Size_Writeで示されている、ストライプサイズの現在のサイズをバイト単位で決定する。特に、ファームウェアは、この量を下記の関係に従って決定する。
Stripe_Size_Write = AU_Size × Page_Cnt
530で、ファームウェアは、Waste_Bytesで示され、ストライプサイズ及びAUサイズに関連付けられる不使用バイトの数を決定する。こうすることで、ファームウェアは、ストライプに収まるAUの最大数を整数で決定する。例えば、ストライプサイズが27,648バイトであり、AUサイズが4,680バイトである場合、ファームウェアは、最大5個のAUがストライプに収まるであろうことを決定する。次に、ストライプに収まるであろうAUの最大数のサイズに基づいて、ファームウェアは、不使用バイトの数を決定する。例えば、4,680バイトのサイズのAUが最大5個、27,648バイトのサイズのストライプにそれぞれ収まるので、上記の例では、27,648−5×(4,680)=4,248の不使用バイトがある。
540で、ファームウェアは、540で決定された不使用バイトの数及び530で決定されたストライプサイズに基づいて、Waste_Percentageで示されている不使用割合を決定する。具体的には、ファームウェアは、不使用割合を下記の関係に従って決定する。
Waste_Percentage = 100(Waste_Bytes/Stripe_Size_Write) 例えば、不使用バイトの数が4,248バイトであり、ストライプサイズが27,648バイトである場合、不使用割合はおよそ15パーセントと決定される。550において、540で決定された不使用割合が予め指定された値(例えば、1パーセント、3パーセント又は5パーセント)より小さいかが判断される。不使用割合が予め指定された値より小さいと560で判断された場合、処理500は570に進み、ファームウェアは、ストライプが、ページカウンタPage_Cntの現在の値に等しいページ数を含むことになると判断する。一方、不使用割合が予め指定された値より大きいと560で判断された場合、処理500は580に進み、ページカウンタが値1でインクリメントされる。この後者の場合、処理500は530に進む。
いくつかの実装において、本明細書に記載されたようなSSDコントローラのファームウェアは、記憶媒体のページへのデータの書き込みを制御する書き込みバッファを用いる。これらの実装において、書き込みバッファは、媒体に全て書き込む前に、完全なストライプを書き込むための十分なデータを蓄積する。しかしながら、書き込みバッファが用いられる場合でも、部分ストライプが書き込まれてよい。例えばストライプの書き込みが開始した後であって書き込みが完了する前にパワーダウンイベントが生じた場合に、部分ストライプが書き込まれてよい。更に、いくつかの実装において、SSDコントローラは、書き込みバッファを全く用いなくてよく、又は、ストライプのサイズより小さいサイズの書き込みバッファを用いてよい。この場合、部分ストライプが通常の手順で媒体に書き込まれるだろう。
図6は、いくつかの実施形態に従う、SSDコントローラが書き込みバッファを用いるシステムのために部分的に書き込まれたストライプを含む記憶媒体のページを表す。図6において、四角の各ボックスは記憶媒体のページを意味し、行は異なるデータ転送チャネルに対応する一方、列は異なるストライプに対応する(したがって、図6の例では、各ストライプが厳密に6個のページを含む)。更に、網掛けされたページ又は網掛けされたページの一部は、そのページ又はそのページの一部に、SSDコントローラによってそれぞれ書き込みされていることを意味する。網掛けされていないページ又はページの一部は、そのページ又はページの一部にそれぞれ書き込みされていないことを意味する。
図6のSSDコントローラは、データの全ストライプを蓄積して、データの全ストライプを一度に書き込む。従って、ストライプ605及び610は、図6の網掛けされた四角で示されるように、完全に書き込まれている。その一方で、SSDコントローラがストライプ615に書き込んでいる間にパワーダウンイベントが生じる。特に、SSDコントローラがページ620に書き込んでいる間にパワーダウンイベントが生じ、それによりページ620は、ページ620の部分的な網掛けで表されるように、部分的に書き込まれただけである。SSDコントローラがその後の時点(例えば、パワーオン後)で書き込みを再開した場合、ページ620が再び書き込まれることはない。むしろ、書き込みは、次のページの中間のアドレス、すなわちページ630で再開し、これは図6のページ630の部分的な網掛けで表されている。
図7は、いくつかの実施形態に従う、SSDコントローラが書き込みバッファを用いないシステムのために部分的に書き込まれたストライプを含む記憶媒体のページを表す。図6のように、図7の四角の各ボックスは記憶媒体のページを意味し、行は異なるデータ転送チャネルに対応する一方、列は異なるストライプに対応する。更に、網掛けされたページ(又は網掛けされたページの一部)は、そのページ(又はそのページの一部)にSSDコントローラによって書き込みされていることを意味する。 網掛けされていないページ又はページの部分は、そのページ又はページの部分に、書き込みされていないことを意味する。
図7のSSDコントローラは、書き込みバッファを用いずに記憶媒体にデータを書き込む。従って、図7のページには、書き込まれていない多くのギャップがある。例えば、ストライプ705及び708には、普通に書き込まれる一方、ページ710と715との間、ページ720と725との間、及びページ730と735との間に、未書き込みのデータのギャップがある。これらのギャップのそれぞれは、SSDコントローラの1回の書き込みセッションの終了、及び、他の開始に対応している。
SSDコントローラが書き込みバッファを用いるかそうでないかにかかわらず、ページ間に書き込まれたデータ内のギャップは、未書き込みのデータのギャップを埋めるためにデータを再書き込みするよう設計された定期的な再利用動作の実行を通じて、回収され得る。この処理は、ガーベッジコレクションとして知られている。ガーベッジコレクションを実行する第1のオプションによると、複数のページのユニットが選択される。当該ユニットは整数個のストライプではない。SSDコントローラのファームウェアは、ギャップを埋めるためにデータを再書き込みして、ガーベッジコレクション処理を通じて完全に解放されたストライプをトラックする。ガーベッジコレクションを実行する第2のオプションによると、消去ユニットは整数個のストライプである。
いくつかの実装において、AUの割り当ては、SSDコントローラによって用いられるデータ転送チャネルに基づいて制約が加えられる。特に、これらの実装において、単一のAUが、単一のチャネルによってアクセス可能、又はさもなくば最大2個の隣接チャネル(ここで、最初及び最終のチャネルが隣接していると考える)によってアクセス可能であってよい。この制約は、図8において、SSDコントローラが0から7でラベル付けされた8個のチャネルを用いる場合について、ダイアグラム825によって示される。ダイアグラム825に表されるように、任意のAUは、チャネル1及び2、チャネル2及び3、チャネル3及び4、チャネル4及び5、チャネル5及び6、チャネル6及び7、チャネル7及び0、又はチャネル0及び1を渡り得る。
この制約の理由は、誤り制御ユニット(ECU)とNANDフラッシュインタフェース(NFIF)860との間のデータのルーティングが簡単になるからである。特に、ダイアグラム850に示されるように、ECU851は、いくつかのECCエンジンを含む。ダイアグラム850には、ECCエンジン852、853及び854を含む全部で8個のECCエンジンが表されている。しかしながら、当業者に理解されるように、本明細書の開示及び教示に基づき、より多くの又はより少ないECCエンジンが可能である。単一のチャネルによって又はさもなくば最大2個の隣接チャネルによって各AUにアクセス可能にするという制約は、各エンジンの出力を、NFIF860における最大2個のNANDチャネルに制限する。例えば、図8に表されるように、エンジン853の出力は、NFIF860のチャネル4及び5に通信可能に結合されている。
各AUに対して、単一のチャネルによって又はさもなくば最大2個の隣接チャネルによってアクセス可能にするという制約を加えて各エンジンの出力をNFIF860における最大2個のNANDチャネルに制限することの他の利点は、読み出し処理の間にチャネルがスキップされた場合に(例えば、タイミング又はデータ破壊エラーにより)いくつかのAUが失われることを制限することである。これは図9に示されている特に、イラスト900は、AU0からAU6で示される7個のAUと、それら各々に関連付けけられたチャネルを表す(チャネルはCH0からCH3で示される)。例えば、AU0は、CH0のみに関連付けられ、一方、AU1はCH0及びCH1に関連付けられる。次に、読み出し又は書き込み処理中にCH1がスキップされなければならないと仮定する。この場合、AU1、AU2及びAU3の3個のAUのみがドロップされる。もし各AUが複数のチャネルに関連付けられるとした場合、チャネル1をスキップすることは、より多数のAUがドロップされる結果になるだろう。
図10は、いくつかの実施形態に従う、本明細書に記述された任意の処理を実行するコンピューティングデバイスの例示的なブロック図を示す。コンピューティングデバイス1000は、少なくとも1つの通信インタフェースユニットと、入出力コントローラ1010と、システムメモリと、1又は複数のデータ記憶デバイスとを備える。システムメモリは、少なくとも1つのランダムアクセスメモリ(RAM1002)と、少なくとも1つのリードオンリーメモリ(ROM1004)とを有する。これら全ての要素は、コンピューティングデバイス1000のオペレーションを促進するために中央処理装置(CPU1006)と、通信する。コンピューティングデバイス1000は、多くの異なる方法で構成されてよい。例えば、コンピューティングデバイス1000は、従来のスタンドアロンコンピュータであってよく、又は代替的に、コンピューティングデバイス1000の機能が、複数のコンピュータシステム及びアーキテクチャに渡って分散されてよい。図10において、コンピューティングデバイス1000は、ネットワーク1018又はローカルネットワークを通じて、他のサーバ又はシステムに接続される。
コンピューティングデバイス1000は、分散アーキテクチャで構成されてよく、データベース及びプロセッサは別個のユニット又は位置で収容されてよい。いくつかのユニットは、基本的な処理機能を実行し、最低でも一般的なコントローラ又はプロセッサとシステムメモリとを有する。分散アーキテクチャの実装において、これらのユニットのそれぞれは、通信インタフェースユニット1308を通じて、他のサーバ、クライアント又はユーザコンピュータ及び他の関連するデバイスとの一次通信リンクとして働く通信ハブ又はポート(図示せず)に接続されてよい。通信ハブ又はポートは、それ自身が最小限の処理能力を有し、本質的に通信ルータとして機能してよい。種々の通信プロトコルがシステムの部分であってよい。通信プロトコルは、イーサネット(登録商標)、SAP、SAS(登録商標)、ATP、Bluetooth(登録商標)、GSM(登録商標)及びTCP/IPを含むがそれらに限定されない。
CPU1006は、1又は複数の従来のマイクロプロセッサ、及び、CPU1006から作業負荷をオフロードする、数値演算コプロセッサのような1又は複数の補助的なコプロセッサのようなプロセッサを備える。CPU1006は、通信インタフェースユニット1008及び入出力コントローラ1010と通信し、それらを通じて、CPU1006が他のサーバ、ユーザ端末又はデバイスのような他のデバイスと通信する。通信インタフェースユニット1008及び入出力コントローラ1010は、例えば他のプロセッサ、サーバ又はクライアント端末との同時通信のための複数の通信チャネルを含んでよい。
CPU1006はまた、データ記憶デバイスと通信する。データ記憶デバイスは、適切な組み合わせの磁気、光又は半導体メモリを備えてよく、例えばRAM1002、ROM1004、フラッシュドライブ、コンパクトディスクのような光ディスク、又は、ハードディスク若しくはドライブを含んでよい。CPU1006及びデータ記憶デバイスの各々は、例えば、全体が単一のコンピュータ又は他のコンピューティングデバイス内に配置されてよく、又は、USBポート、シリアルポートケーブル、同軸ケーブル、イーサネット(登録商標)ケーブル、電話線、無線周波数トランシーバ又は他の同様の無線又は有線媒体若しくは上記の組み合わせのような通信媒体によって、相互に接続されてよい。例えば、CPU1006は、通信インタフェースユニット1008を通じて、データ記憶デバイスに接続されてよい。CPU1006は、1又は複数の特定の処理機能を実行するよう構成されてよい。
データ記憶デバイスは、例えば、(i)コンピューティングデバイス1000のためのオペレーティングシステム1012、(ii)本明細書に記載されたシステム及び方法に従って、特に、CPU1006に関連して詳細に記載された処理に従ってCPU1006に命令するのに適合した1又は複数のアプリケーション1014(例えば、コンピュータプログラムコード又はコンピュータプログラム製品)、又は、(iii)プログラムによって必要とされる情報を記憶するために用いられ得る情報を記憶するのに適合したデータベース1016を記憶してよい。
オペレーティングシステム1012及びアプリケーション1014は、例えば、圧縮、非コンパイル、及び暗号化された形式で記憶されてよく、コンピュータプログラムコードを含んでよい。プログラムの命令は、データ記憶デバイス以外のコンピュータ可読媒体から、例えばROM1004から又はRAM1002から、プロセッサのメインメモリに読み込まれてよい。プログラム内の命令シーケンスの実行が、CPU1006に、本明細書に記載された処理ステップを実行させる一方、本開示の処理を実装するためのソフトウェア命令に代えて又はそれと組み合わせて、有線回路が用いられてよい。したがって、記載されたシステム及び方法は、ハードウェア及びソフトウェアのある特定の組み合わせに限られない。
好適なコンピュータプログラムコードが、本明細書で記載されたようなピーク電力消費量を減らすことに関して1又は複数の機能を実行するために提供されてよい。プログラムはまた、プロセッサがコンピュータの周辺デバイス(例えば、ビデオディスプレイ、キーボード、コンピュータマウス等)と入出力コントローラ1010を通じてインタフェースすることを可能にする、オペレーティングシステム1012、データベース管理システム、及び「デバイスドライバ」のようなプログラム要素を有してよい。
本明細書で用いられるような「コンピュータ可読媒体」という用語は、コンピューティングデバイス1000のプロセッサ(又は本明細書に記載されたデバイスの任意の他のプロセッサ)に、実行のために命令を供給又は供給に関与する、任意の非一時的媒体をいう。そのような媒体は、多くの形式をとり得、不揮発性媒体及び揮発性媒体を含むが、それらに限られない。不揮発性媒体は、例えば、光、磁気又は光磁気ディスク、若しくはフラッシュメモリのような集積回路メモリを含む。揮発性媒体は、典型的にはメインメモリの構成要素となるダイナミック・ランダムアクセスメモリ(DRAM)を含む。コンピュータ可読媒体の一般的な形式は、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD−ROM、DVD、任意の他の光媒体、パンチカード、紙テープ、ホールパターンを持つ任意の他の物理媒体、RAM、PROM、EPROM又はEEPROM(electronically erasable programmable read−only memory)、FLASH−EEPROM、任意の他のメモリチップ又はカートリッジ、若しくはコンピュータが読み出せる任意の他の非一時的媒体を含む。
コンピュータ可読媒体の様々な形式は、1又は複数の命令の1又は複数のシーケンスを、CPU1006(又は、本明細書に記載されたデバイスの任意の他のプロセッサ)に実行のために送ることに関与してよい。例えば、命令は、最初に遠隔コンピュータ(図示せず)の磁気ディスク上に運ばれてよい。遠隔コンピュータは、そのダイナミックメモリ内に命令をロードでき、イーサネット(登録商標)接続、ケーブル線又はモデムを用いて更に電話線を通じて命令を送信できる。コンピューティングデバイス1000(例えば、サーバ)のローカルの通信デバイスは、それぞれの通信ライン上でデータを受信でき、プロセッサのためのシステムバス上にデータを出すことができる。システムバスは、データをメインメモリに搬送し、そこからプロセッサが命令を取り出して実行する。メインメモリによって受信された命令は、プロセッサによる実行前又は後に、必要に応じてメモリ内に記憶されてよい。更に、命令は、通信ポートを通じて、様々な種類の情報を搬送する無線通信又はデータストリームの例示的な形式である電気、電磁気又は光信号として受信されてよい。
本開示の様々な実施形態を本明細書で提示及び記載されたが、このような実施形態は例としてのみ提供されることが当業者には明らかであろう。ここで多数の変形、変更及び置換が、本開示から逸脱することなく当業者に見い出し得るだろう。本明細書に記載された開示の実施形態に対する様々な代替物が、本開示を実施する際に用いられ得ることが理解されるべきである。 以下の特許請求の範囲が本開示の範囲を定め、これらの特許請求の範囲及びそれらの同等の範囲内の方法及び構造がそれによりカバーされることを意図している。
[項目1]
記憶媒体にデータを書き込むシステムであって、前記システムは、
1又は複数のデータ転送チャネルを通じて前記記憶媒体のストライプと接続し、前記ストライプが前記記憶媒体の複数のページを有するインタフェース回路と、
データストリームを受信して、前記データストリームを複数のアロケーションユニット(複数のAU)に区画化する区画化回路と、
前記複数のAUから選択されたAUのバイトを前記複数のページのうちの第1ページ上の開始バイトから前記複数のページのうちの第2ページ上の終了バイトまで連続して書き込むことによって、前記選択されたAUの第1部分を前記第1ページに書き込み、前記選択されたAUの第2部分を前記第2ページに書き込む書き込み回路と
を備え、
前記複数のAUの各AUは、予め定められたバイト長を持つ
システム。
[項目2]
前記書き込み回路は、前記複数のページの順序付けされたシーケンスに基づいて、前記複数のAUを前記ストライプに書き込む
項目1に記載のシステム。
[項目3]
前記書き込み回路は、書き込みバッファを有し、前記書き込み回路は、前記ストライプの長さに等しいデータ量が前記書き込みバッファ内に蓄積した後に前記記憶媒体に書き込む
項目1又は2に記載のシステム。
[項目4]
前記複数のページは、複数の記憶デバイスに配置されている
項目1から3のいずれか1項に記載のシステム。
[項目5]
前記書き込み回路は、前記1又は複数のデータ転送チャネルのうちの1つめのデータ転送チャネルを用いて前記複数のページのうちの1つめにアクセスし、前記1又は複数のデータ転送チャネルのうちの2つめを用いて前記複数のページのうちの2つめにアクセスする
項目1から4のいずれか1項に記載のシステム。
[項目6]
前記複数のAUの各AUは、前記1又は複数のデータ転送チャネルからの最大2つのデータ転送チャネルに関連付けられ、前記2つのデータ転送チャネルは隣接している
項目1から5のいずれか1項に記載のシステム。
[項目7]
訂正回路
を更に備え、
前記訂正回路は、
前記記憶媒体に記憶されたデータを読み出し、
前記読み出しデータ中の複数の未書き込みのバイトを検出し、
前記読み出しデータを、前記記憶媒体に再書き込みし、
前記再書き込みは、前記複数の未書き込みのバイトに渡って書き込む
項目1から6のいずれか1項に記載のシステム。
[項目8]
前記記憶媒体のストライプに記憶されているデータを読み出して、前記読み出されたデータに対応する誤り訂正シーケンスを計算する誤り訂正回路(ECC回路)
を更に備える項目1から7のいずれか1項に記載のシステム。
[項目9]
前記書き込み回路は、前記誤り訂正シーケンスを受信し、前記誤り訂正シーケンスを前記記憶媒体の前記ストライプの最後のページに書き込む
項目8に記載のシステム。
[項目10]
前記書き込み回路は、前記ストライプの第2部分に書き込まれない状態にしたまま、前記複数のAUを前記ストライプの第1部分に書き込む
項目1から9のいずれか1項に記載のシステム。
[項目11]
記憶媒体にデータを書き込む方法であって、
1又は複数のデータ転送チャネルを通じて前記記憶媒体のストライプと接続する段階であって、前記ストライプが前記記憶媒体の複数のページを有する段階と、
データストリームを受信して、前記データストリームを複数のアロケーションユニット(複数のAU)に区画化する段階と、
前記複数のAUから選択されたAUのバイトを前記複数のページのうちの第1ページ上の開始バイトから前記複数のページのうちの第2ページ上の終了バイトまで連続して書き込むことによって、前記選択されたAUの第1部分を前記第1ページに書き込み、前記選択されたAUの第2部分を前記第2ページに書き込む段階と
を備え、
前記複数のAUの各AUは、予め定められたバイト長を持つ
方法。
[項目12]
前記複数のページの順序付けされたシーケンスに基づいて、前記複数のAUを前記ストライプに書き込む段階
を更に備える項目11に記載の方法。
[項目13]
前記ストライプの長さに等しいデータ量が書き込みバッファ内に蓄積したとの判断に応じて前記記憶媒体に書き込む段階
を更に備える項目11又は12に記載の方法。
[項目14]
前記複数のページは、複数の記憶デバイスに配置されている
項目11から13のいずれか1項に記載の方法。
[項目15]
前記1又は複数のデータ転送チャネルのうちの1つめのデータ転送チャネルを用いて前記複数のページのうちの1つめにアクセスし、前記1又は複数のデータ転送チャネルのうちの2つめを用いて前記複数のページのうちの2つめにアクセスする段階
を更に備える項目11から14のいずれか1項に記載の方法。
[項目16]
前記複数のAUの各AUは、前記1又は複数のデータ転送チャネルからの最大2つのデータ転送チャネルに関連付けられ、前記2つのデータ転送チャネルは隣接している
項目11から15のいずれか1項に記載の方法。
[項目17]
前記記憶媒体に記憶されたデータを読み出す段階と、
前記読み出しデータ中の複数の未書き込みのバイトを検出する段階と、
前記読み出しデータを、前記記憶媒体に再書き込みする段階と
を更に備え、
前記再書き込みする段階は、前記複数の未書き込みのバイトに渡って書き込む
項目11から16のいずれか1項に記載の方法。
[項目18]
前記記憶媒体のストライプに記憶されているデータを読み出す段階と、
前記読み出されたデータに対応する誤り訂正シーケンスを計算する段階と
を更に備える項目11から17のいずれか1項に記載の方法。
[項目19]
前記誤り訂正シーケンスを受信する段階と、
前記誤り訂正シーケンスを前記記憶媒体の前記ストライプの最後のページに書き込む段階と
を更に備える項目18に記載の方法。
[項目20]
前記ストライプの第2部分に書き込まれない状態にしたまま、前記複数のAUを前記ストライプの第1部分に書き込む段階
を更に備える項目11から19のいずれか1項に記載の方法。

Claims (20)

  1. 記憶媒体にデータを書き込むシステムであって、前記システムは、
    1又は複数のデータ転送チャネルを通じて前記記憶媒体のストライプと接続し、前記ストライプが前記記憶媒体の複数のページを有するインタフェース回路と、
    データストリームを受信して、前記データストリームを複数のアロケーションユニット(複数のAU)に区画化する区画化回路と、
    前記複数のAUから選択されたAUのバイトを前記複数のページのうちの第1ページ上の開始バイトから前記複数のページのうちの第2ページ上の終了バイトまで連続して書き込むことによって、前記選択されたAUの第1部分を前記第1ページに書き込み、前記選択されたAUの第2部分を前記第2ページに書き込む書き込み回路と
    を備え、
    前記複数のAUの各AUは、予め定められた同一のバイト長を持ち、
    前記書き込み回路は、前記記憶媒体の前記ストライプに記憶されているデータに対応する誤り訂正シーケンスを受信し、前記誤り訂正シーケンスを前記記憶媒体の前記ストライプの最後のページに書き込むよう構成される
    システム。
  2. 前記書き込み回路は、前記複数のページの順序付けされたシーケンスに基づいて、前記複数のAUを前記ストライプに書き込む
    請求項1に記載のシステム。
  3. 前記書き込み回路は、書き込みバッファを有し、前記書き込み回路は、前記ストライプの長さに等しいデータ量が前記書き込みバッファ内に蓄積した後に前記記憶媒体に書き込む
    請求項1又は2に記載のシステム。
  4. 前記複数のページは、複数の記憶デバイスに配置されている
    請求項1から3のいずれか1項に記載のシステム。
  5. 前記書き込み回路は、前記1又は複数のデータ転送チャネルのうちの1つめのデータ転送チャネルを用いて前記複数のページのうちの1つめにアクセスし、前記1又は複数のデータ転送チャネルのうちの2つめを用いて前記複数のページのうちの2つめにアクセスする
    請求項1から4のいずれか1項に記載のシステム。
  6. 前記複数のAUの各AUは、前記1又は複数のデータ転送チャネルからの最大2つのデータ転送チャネルに関連付けられ、前記2つのデータ転送チャネルは隣接している
    請求項1から5のいずれか1項に記載のシステム。
  7. 訂正回路
    を更に備え、
    前記訂正回路は、
    前記記憶媒体に記憶されたデータを読み出し、
    前記読み出しデータ中の複数の未書き込みのバイトを検出し、
    前記読み出しデータを、前記記憶媒体に再書き込みし、
    前記再書き込みは、前記複数の未書き込みのバイトに渡って書き込む
    請求項1から6のいずれか1項に記載のシステム。
  8. 前記記憶媒体の前記ストライプに記憶されているデータを読み出して、前記読み出されたデータに対応する前記誤り訂正シーケンスを計算する誤り訂正回路(ECC回路)
    を更に備える請求項1から7のいずれか1項に記載のシステム。
  9. 前記書き込み回路は、前記ストライプの第2部分に書き込まれない状態にしたまま、前記複数のAUを前記ストライプの第1部分に書き込む
    請求項1からのいずれか1項に記載のシステム。
  10. 記憶媒体にデータを書き込むシステムであって、前記システムは、
    1又は複数のデータ転送チャネルを通じて前記記憶媒体のストライプと接続し、前記ストライプが前記記憶媒体の複数のページを有するインタフェース回路と、
    データストリームを受信して、前記データストリームを複数のアロケーションユニット(複数のAU)に区画化する区画化回路と、
    前記複数のAUから選択されたAUのバイトを前記複数のページのうちの第1ページ上の開始バイトから前記複数のページのうちの第2ページ上の終了バイトまで連続して書き込むことによって、前記選択されたAUの第1部分を前記第1ページに書き込み、前記選択されたAUの第2部分を前記第2ページに書き込む書き込み回路と、
    訂正回路であって、
    前記記憶媒体に記憶されたデータを読み出し、
    前記読み出しデータ中の複数の未書き込みのバイトを検出し、
    前記読み出しデータを、前記記憶媒体に再書き込みし、
    前記再書き込みは、前記複数の未書き込みのバイトに渡って書き込む、訂正回路と
    を備え、
    前記複数のAUの各AUは、予め定められた同一のバイト長を持つ
    システム。
  11. 記憶媒体にデータを書き込む方法であって、
    1又は複数のデータ転送チャネルを通じて前記記憶媒体のストライプと接続する段階であって、前記ストライプが前記記憶媒体の複数のページを有する段階と、
    データストリームを受信して、前記データストリームを複数のアロケーションユニット(複数のAU)に区画化する段階と、
    前記複数のAUから選択されたAUのバイトを前記複数のページのうちの第1ページ上の開始バイトから前記複数のページのうちの第2ページ上の終了バイトまで連続して書き込むことによって、前記選択されたAUの第1部分を前記第1ページに書き込み、前記選択されたAUの第2部分を前記第2ページに書き込む段階と
    前記記憶媒体の前記ストライプに記憶されているデータに対応する誤り訂正シーケンスを受信する段階と、
    前記誤り訂正シーケンスを前記記憶媒体の前記ストライプの最後のページに書き込む段階と
    を備え、
    前記複数のAUの各AUは、予め定められた同一のバイト長を持つ
    方法。
  12. 前記複数のページの順序付けされたシーケンスに基づいて、前記複数のAUを前記ストライプに書き込む段階
    を更に備える請求項11に記載の方法。
  13. 前記ストライプの長さに等しいデータ量が書き込みバッファ内に蓄積したとの判断に応じて前記記憶媒体に書き込む段階
    を更に備える請求項11又は12に記載の方法。
  14. 前記複数のページは、複数の記憶デバイスに配置されている
    請求項11から13のいずれか1項に記載の方法。
  15. 前記1又は複数のデータ転送チャネルのうちの1つめのデータ転送チャネルを用いて前記複数のページのうちの1つめにアクセスし、前記1又は複数のデータ転送チャネルのうちの2つめを用いて前記複数のページのうちの2つめにアクセスする段階
    を更に備える請求項11から14のいずれか1項に記載の方法。
  16. 前記複数のAUの各AUは、前記1又は複数のデータ転送チャネルからの最大2つのデータ転送チャネルに関連付けられ、前記2つのデータ転送チャネルは隣接している
    請求項11から15のいずれか1項に記載の方法。
  17. 前記記憶媒体に記憶されたデータを読み出す段階と、
    前記読み出しデータ中の複数の未書き込みのバイトを検出する段階と、
    前記読み出しデータを、前記記憶媒体に再書き込みする段階と
    を更に備え、
    前記再書き込みする段階は、前記複数の未書き込みのバイトに渡って書き込む
    請求項11から16のいずれか1項に記載の方法。
  18. 前記記憶媒体の前記ストライプに記憶されているデータを読み出す段階と、
    前記読み出されたデータに対応する前記誤り訂正シーケンスを計算する段階と
    を更に備える請求項11から17のいずれか1項に記載の方法。
  19. 前記ストライプの第2部分に書き込まれない状態にしたまま、前記複数のAUを前記ストライプの第1部分に書き込む段階
    を更に備える請求項11から18のいずれか1項に記載の方法。
  20. 記憶媒体にデータを書き込む方法であって、
    1又は複数のデータ転送チャネルを通じて前記記憶媒体のストライプと接続する段階であって、前記ストライプが前記記憶媒体の複数のページを有する段階と、
    データストリームを受信して、前記データストリームを複数のアロケーションユニット(複数のAU)に区画化する段階と、
    前記複数のAUから選択されたAUのバイトを前記複数のページのうちの第1ページ上の開始バイトから前記複数のページのうちの第2ページ上の終了バイトまで連続して書き込むことによって、前記選択されたAUの第1部分を前記第1ページに書き込み、前記選択されたAUの第2部分を前記第2ページに書き込む段階と、
    前記記憶媒体に記憶されたデータを読み出す段階と、
    前記読み出しデータ中の複数の未書き込みのバイトを検出する段階と、
    前記読み出しデータを前記記憶媒体に再書き込みする段階であって、前記再書き込みする段階が、前記複数の未書き込みのバイトに渡って書き込む、段階と
    を備え、
    前記複数のAUの各AUは、予め定められた同一のバイト長を持つ
    方法。
JP2015500584A 2012-03-16 2013-03-14 Nandフラッシュメモリにおけるデータの効率的な記憶を可能にするアーキテクチャ Active JP6201242B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261612140P 2012-03-16 2012-03-16
US61/612,140 2012-03-16
PCT/US2013/031114 WO2013138540A1 (en) 2012-03-16 2013-03-14 Architecture to allow efficient storage of data on nand flash memory

Publications (2)

Publication Number Publication Date
JP2015511040A JP2015511040A (ja) 2015-04-13
JP6201242B2 true JP6201242B2 (ja) 2017-09-27

Family

ID=48014332

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015500584A Active JP6201242B2 (ja) 2012-03-16 2013-03-14 Nandフラッシュメモリにおけるデータの効率的な記憶を可能にするアーキテクチャ
JP2015500592A Active JP6175684B2 (ja) 2012-03-16 2013-03-14 Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015500592A Active JP6175684B2 (ja) 2012-03-16 2013-03-14 Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ

Country Status (4)

Country Link
US (2) US9081668B2 (ja)
JP (2) JP6201242B2 (ja)
CN (2) CN104246708B (ja)
WO (2) WO2013138552A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9081668B2 (en) 2012-03-16 2015-07-14 Marvell World Trade Ltd. Architecture to allow efficient storage of data on NAND flash memory
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
JP2014199591A (ja) * 2013-03-29 2014-10-23 株式会社東芝 記憶装置制御システム、記憶装置制御装置及びプログラム
KR102063566B1 (ko) * 2014-02-23 2020-01-09 삼성전자주식회사 메시지 운용 방법 및 이를 지원하는 전자 장치
CN105843746A (zh) * 2015-01-12 2016-08-10 广明光电股份有限公司 固态硬盘的写入方法
US9940034B2 (en) * 2016-01-25 2018-04-10 International Business Machines Corporation Reducing read access latency by straddling pages across non-volatile memory channels
CN108628752B (zh) * 2017-03-17 2021-10-01 北京兆易创新科技股份有限公司 一种数据存储方法和装置
US10564890B2 (en) * 2017-07-07 2020-02-18 Seagate Technology Llc Runt handling data storage system
CN108319429B (zh) * 2018-01-10 2021-02-19 北京思特奇信息技术股份有限公司 一种加快文件读取的方法及计算机设备
CN108804346A (zh) * 2018-05-30 2018-11-13 广东思诺伟智能技术有限公司 一种电池soc数据在flash存储器存储的方法
US11709623B2 (en) 2018-08-03 2023-07-25 Sk Hynix Nand Product Solutions Corp. NAND-based storage device with partitioned nonvolatile write buffer
KR20200053204A (ko) 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
CN109976673B (zh) * 2019-03-29 2023-04-25 新华三技术有限公司 一种数据写入方法和装置
CN111984441B (zh) 2019-05-21 2023-09-22 慧荣科技股份有限公司 瞬间断电回复处理方法及装置以及计算机可读取存储介质
US11693594B2 (en) * 2021-03-29 2023-07-04 Micron Technology, Inc. Zone striped zone namespace memory
US11347609B1 (en) * 2021-04-29 2022-05-31 International Business Machines Corporation Failed media channel recovery throttling
CN113448778A (zh) * 2021-07-15 2021-09-28 华东师范大学 一种混合式ssd中关键数据的备份方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2509297B2 (ja) * 1987-08-31 1996-06-19 沖電気工業株式会社 自己訂正機能付半導体記憶装置及びマイクロコンピュ―タ
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US7200715B2 (en) * 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US6985995B2 (en) * 2002-03-29 2006-01-10 Panasas, Inc. Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data
US8321650B2 (en) 2003-01-13 2012-11-27 Emulex Design & Manufacturing Corporation Alignment-unit-based virtual formatting methods and devices employing the methods
JP3884722B2 (ja) * 2003-04-28 2007-02-21 Necトーキン株式会社 データ管理方法、プログラム及び半導体装置
JP2006107311A (ja) 2004-10-08 2006-04-20 Hitachi Ltd ディスクアレイ装置およびその制御方法
JP4135747B2 (ja) * 2006-04-06 2008-08-20 ソニー株式会社 データ処理装置及びフラッシュメモリへのアクセス方法
US8019959B2 (en) * 2007-02-09 2011-09-13 Marvell World Trade Ltd. Nonvolatile memory system
US7904749B2 (en) * 2008-10-24 2011-03-08 Hitachi, Ltd. Fast data recovery from HDD failure
WO2010054410A2 (en) * 2008-11-10 2010-05-14 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for predicting failures in solid-state storage
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
CN102193745B (zh) * 2010-03-05 2015-01-14 群联电子股份有限公司 快闪存储器储存装置、其控制器与写入管理方法
JP4940322B2 (ja) * 2010-03-16 2012-05-30 株式会社東芝 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法
US8726126B2 (en) * 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US20110258380A1 (en) 2010-04-19 2011-10-20 Seagate Technology Llc Fault tolerant storage conserving memory writes to host writes
US9081668B2 (en) 2012-03-16 2015-07-14 Marvell World Trade Ltd. Architecture to allow efficient storage of data on NAND flash memory

Also Published As

Publication number Publication date
WO2013138540A1 (en) 2013-09-19
JP2015512110A (ja) 2015-04-23
CN104246708A (zh) 2014-12-24
US9081668B2 (en) 2015-07-14
US9158675B2 (en) 2015-10-13
CN104220991B (zh) 2017-08-29
CN104220991A (zh) 2014-12-17
WO2013138552A1 (en) 2013-09-19
US20130246892A1 (en) 2013-09-19
US20130246890A1 (en) 2013-09-19
CN104246708B (zh) 2017-12-05
JP2015511040A (ja) 2015-04-13
JP6175684B2 (ja) 2017-08-09

Similar Documents

Publication Publication Date Title
JP6201242B2 (ja) Nandフラッシュメモリにおけるデータの効率的な記憶を可能にするアーキテクチャ
US12032438B2 (en) SSD architecture supporting low latency operation
US10558383B2 (en) Storage system
US9632880B2 (en) Data storage device and flash memory control method
US8806108B2 (en) Semiconductor storage apparatus and method of controlling semiconductor storage apparatus
US8825947B1 (en) System and method for managing data access in non-volatile memory
US8595414B2 (en) Selectively combining commands for a system having non-volatile memory
US9298534B2 (en) Memory system and constructing method of logical block
US10061710B2 (en) Storage device
JP3942807B2 (ja) ブロックアラインメント機能付き半導体記憶装置
US9489409B2 (en) Rollover strategies in a N-bit dictionary compressed column store
US20110153917A1 (en) Storage apparatus and its control method
US8589768B2 (en) Memory system having multiple channels and write control method including determination of error correction channel in memory system
US20140181378A1 (en) Control device, control method, and program
US11442636B2 (en) Method, apparatus for managing the redundant array of independent disks (RAID) and related computer readable medium
CN111324461B (zh) 内存分配方法、装置、计算机设备和存储介质
JP2010097333A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20190004703A1 (en) Method and computer system for managing blocks
KR20100117295A (ko) 데이터 저장 장치의 동작 방법 및 이에 따른 데이터 저장 장치
US8671257B2 (en) Memory system having multiple channels and method of generating read commands for compaction in memory system
US10310758B2 (en) Storage system and storage control method
KR20090106221A (ko) 병렬 구조를 가지는 플래시 메모리 시스템 및 그 데이터기록방법 및 플래시 메모리
US11016848B2 (en) Distributed data storage system with initialization-less parity
CN108196790B (zh) 数据管理方法、存储设备及计算机可读存储介质
JP2013200722A (ja) 半導体記憶装置の論理ブロックの構築方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170508

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170530

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170719

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170809

R150 Certificate of patent or registration of utility model

Ref document number: 6201242

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250