JP5213965B2 - 1セル当り単一ビットnandフラッシュメモリをエミュレートする1セル当り多ビットnandフラッシュメモリ用コントローラ - Google Patents

1セル当り単一ビットnandフラッシュメモリをエミュレートする1セル当り多ビットnandフラッシュメモリ用コントローラ Download PDF

Info

Publication number
JP5213965B2
JP5213965B2 JP2010540215A JP2010540215A JP5213965B2 JP 5213965 B2 JP5213965 B2 JP 5213965B2 JP 2010540215 A JP2010540215 A JP 2010540215A JP 2010540215 A JP2010540215 A JP 2010540215A JP 5213965 B2 JP5213965 B2 JP 5213965B2
Authority
JP
Japan
Prior art keywords
data
host
controller
flash memory
page
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.)
Expired - Fee Related
Application number
JP2010540215A
Other languages
English (en)
Other versions
JP2011508357A (ja
Inventor
バー−オア,シャハ
マーカ,アロン
スターン,オリ
インバー,ダン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Israel Ltd
Original Assignee
SanDisk IL Ltd
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 SanDisk IL Ltd filed Critical SanDisk IL Ltd
Publication of JP2011508357A publication Critical patent/JP2011508357A/ja
Application granted granted Critical
Publication of JP5213965B2 publication Critical patent/JP5213965B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/08Address circuits; Decoders; Word-line control circuits
    • 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/26Sensing or reading circuits; Data output circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Description

本発明は、一般的にはフラッシュメモリデバイスに関し、より具体的には、ある種のNANDフラッシュメモリデバイス(1セル当り単一ビット(「SBC」)フラッシュメモリデバイス等)を別種のNANDフラッシュメモリデバイス(1セル当り多ビット(「MBC」)フラッシュメモリデバイス等)でエミュレートすることに関する。
フラッシュメモリデバイスは、不揮発性メモリデバイスの一種で、長年にわたり知られている。フラッシュメモリデバイスのメモリセルアレイを構成する各メモリセルは、フローティングゲート領域と、ドレイン領域と、ソース領域とを通常具備する半導体トランジスタによって実装される。メモリセルは2つ以上の異なる状態をとることができ、それらの状態はフローティングゲートの中に記憶される電荷の量によって実現される。つまり、フローティングゲートに記憶される異なる電荷量を各状態に対応付ける。実際にメモリセルを使用するには、それぞれの状態に2進値を対応付ける。
フラッシュメモリデバイスの1種に「1セル当り単一ビット」(SBC)として一般に知られる技術に基づくものがある。これは、SBCメモリデバイスの各メモリセルに1ビットが記憶されることを意味する。1セル当り1ビットを記憶するということは、2通りある状態のいずれか一方の状態をとるように(2通りある状態のいずれか一方を記憶するように)セルが構成されることを意味する。通常、一方の状態はセルのフローティングゲートに記憶されるゼロ電荷に対応する。これは「書き込まれていない」セル状態であり、通常は2進数「1」に相当する。通常、もうひとつの状態はフローティングゲート内のある程度の負電荷に対応する。これは「書き込み済み」のセル状態であり、通常は2進数「0」に相当する。フローティングゲートに負電荷があるとセルのトランジスタのしきい値電圧が増加し、結果的に、トランジスタを導通させるにあたってトランジスタのコントロールゲートに印加しなければならない電圧が増加する。
フラッシュメモリデバイスは3つの操作を実行できる。つまり、メモリセルにデータを書き込む(歴史的な理由からしばしば「プログラムする」という)操作と、メモリセルからデータを読み出す操作と、メモリセルからデータを消去する操作とが可能である。これらの操作は外部のホストデバイスから始まるが、フラッシュメモリデバイスのコントローラによって処理される。メモリセルに2進数(「0」または「1」)を書き込むには、トランジスタのフローティングゲートで電荷を変化させ、セルのしきい値電圧を変える。メモリセルに記憶された2進数を読み出すには、セルのしきい値電圧レベルをチェックする。このしきい値電圧が高い状態にあるならば、ビット値を論理値「0」と解釈する。しかし、しきい値電圧が低い状態にあるならば、ビット値を論理値「1」と解釈する。実際にはセルのしきい値電圧を正確に読み出す必要はなく、セルが現在2つの状態のどちらにあるかを正確に識別すればよい。それには、2つの状態の中間にあたる基準電圧にセルのしきい値電圧を比較し、セルのしきい値電圧がこの基準値より低いか高いかを判断しなければならない。
多くのタイプのフラッシュメモリ、例えばNANDフラッシュメモリでは、書き込み操作と消去操作を個々のメモリセルに対して行うのではなく、メモリセルの集団に対して行う。書き込み操作は比較的小さい「ページ」(NANDフラッシュメモリデバイスの場合は通常512バイト、2キロバイト、または4キロバイト)に対して行われ、消去操作はページより大きい「ブロック」(NANDフラッシュメモリデバイスの場合は通常32キロバイトか128キロバイト)に対して行われる。
「1セル当り多ビット」(MBC)として一般に知られる技術に基づくタイプのフラッシュメモリデバイスもある。MBCメモリデバイスでは、それぞれのメモリセルにN個のビット(N≧2)が記憶される。つまり、MBCメモリセルは2N通りの状態を記憶するように構成される。例えば2ビットを記憶するメモリセルは4通りの状態を記憶し、それぞれの状態には4つの2進値「00」、「01」、「10」、「11」のいずれか1つが対応付けられている。
セルの状態はセルのしきい値電圧によって表されるため、2ビットを記憶するMBCセルなら4通りのしきい値電圧範囲をサポートする。SBCセルと同様に、MBCセルの各状態は、実際にはひとつの電圧ではなく電圧範囲である。セルの内容(記憶された2進値)を読み出すときには、セルのしきい値電圧に適切な電圧範囲を適切に対応付けなければならない。例えば、Harariの米国特許第5,434,825号(特許文献1)では、MBCフラッシュデバイスが説明されている。
フラッシュメモリ技術の概念が最初に考案された当時、MBC NANDフラッシュデバイスは比較的珍しく、SBCデバイスが標準だった。したがって、フラッシュメモリ技術を利用する従来のホスト設計はSBC向けで、MBCデバイスには適合しない。このため、MBC NAND技術が成熟し、SBCデバイスより費用効果的で(少なくとも1ドル当りのメガバイト数の点では費用効果的)、既に市販されてはいるが、SBC対応ホストデバイスではMBCベースのNANDデバイスを使用できないため、同じ物理的面積でもSBCデバイスよりMBCデバイスのほうが面積当りの記憶容量が大きいにもかかわらず、MBC技術のさらなる普及は妨げられている。NANDインターフェイスには規格がなく、ストレージデバイスの供給元で使用するNANDインターフェイスは供給元によって種類が異なることがあり、事実異なっているから、たとえ1セル当りのビット数が同じメモリセルでも、供給元が異なれば技術的なミスマッチがほかにも生じるおそれがある。
SBCデバイスとMBCデバイスは数々の技術的態様において本質的に異なるため、適合性の問題を克服する(MBCフラッシュデバイスとSBC対応ホストが互いにやり取りできるようにする)のは容易ではない。例えば、データページとデータブロックのサイズはSBCデバイスとMBCデバイスとで異なる。また、SBCセルの2状態間の電圧間隔(「エラーマージン」)はMBCの2つの近傍状態間のエラーマージンより大きいため、SBCセルのほうが信頼性の水準が高く、コンピュータシステムの起動にはSBCセルを使うのが普通である。比較的低い信頼性の埋め合わせとして、MBCデバイスではより強力な誤り訂正方式を採用している。例えば、より強力な誤り訂正符合(ECC)を採用している。
SBCフラッシュメモリデバイスのほうが、信頼性が高く応答が速いため、SBCの能力をMBCに組み合わせる取り組みがこれまでなされてきた。しかし、そのような改善への取り組みは、MBCフラッシュメモリデバイスの特定の技術的態様に限ったものであった。一部の先行技術では起動の態様に取り組んでいる。つまり、「純粋な」SBC技術とほぼ同等の起動信頼性を得るため、MBCフラッシュメモリデバイスの特定領域に初期化(起動)プログラムを記憶することを提案している。他の先行技術には信頼性の態様に取り組み、強力な誤り訂正メカニズムを提供するものもある。応答速度の態様に取り組み専用のSLCキャッシュをMBCデバイスに用意するものもある。しかし、先行技術には、SBCデータを通常のMBCデータとしてMBCフラッシュメモリデバイスに書き込むことや、MBCデータの中からSBCデータを読み出すことを教示するものはない。
米国特許第5,434,825号
以下、例示的な実施形態とその態様をシステム、ツール、方法との関係で説明、例証するが、これらは典型的かつ例証的なものであって範囲を制限するものではない。
本開示の一部として、ホストデータをフラッシュメモリデバイスに書き込む方法が提供され、この方法は、個別に書き込み可能なデバイスページにグループ化されたNANDフラッシュメモリセルアレイにホストデータを書き込む書き込み命令を、ホストデバイスからフラッシュメモリデバイスのコントローラにより受信することを含む。コントローラは、ホストデータに補足データを統合することにより1つ以上のデバイスページに記憶可能なデバイスデータを作成し、そのデバイスデータを1つ以上のデバイスページに書き込む。
本開示の一部として、フラッシュメモリデバイスからホストデータを読み出す方法が提供され、この方法は、個別に読み出し可能なデバイスページにグループ化されたNANDフラッシュメモリセルアレイから、デバイスデータの一部としてデバイスページに記憶されているホストデータを読み出す読み出し命令を、ホストデバイスから受信するステップと、デバイスデータからホストデータを解析するステップと、解析されたホストデータをホストデバイスへ送信するステップとを含む。
本開示の一部として、フラッシュメモリデバイスからホストデータを消去する消去命令を実行する方法が提供され、この方法は、個別に消去可能なデバイスブロックにグループ化されたNANDフラッシュメモリセルアレイから、デバイスデータの一部としてデバイスブロックに記憶されているホストデータを消去する消去命令を、ホストデバイスから受信するステップと、ホストデータを消去済みとマークするステップと、ホストデータが消去されたことを伝えるメッセージをホストデバイスへ送信するステップとを含む。この方法は、ホストデータを収容するデバイスブロックを実際に消去するステップをさらに含む。
本開示の一部として、書き込む方法と、読み出す方法と、消去する方法とを実現するフラッシュメモリデバイス用コントローラが提供される。このコントローラは、NANDホストデバイスからホストデータを受信するホストNANDインターフェイスと、ホストデータに補足データを統合することでデバイスデータを作成するデータ統合部とを含む。コントローラは、フラッシュメモリデバイスのNANDフラッシュメモリセルアレイのデバイスページにデバイスデータを書き込む。コントローラはまた、データ書き込み操作を実行するときに補足データを解析し、かつデータ読み出し操作を実行するときにデバイスデータからホストデータを解析するデータ解析部を含む。
ホストデータは、1セル当りMビットのデータを記憶するNANDメモリセルアレイ向けにフォーマットされ、NANDフラッシュメモリセルは、1セル当りNビットのデータを記憶するように設計され、NとMは整数であり、NはMより大きい。一例示的な実施形態において、Nは2に等しく、Mは1に等しい。別の例示的な実施形態において、Nは4に等しく、Mは1に等しい。さらに別の例示的な実施形態において、Nは4に等しく、Mは2に等しい。
図を参照し以降の詳細な説明を精査することにより、前述した典型的な態様と実施形態のほかにさらなる態様と実施形態が明らかになる。
参照する図には典型的な実施形態が描かれている。ここに開示する例示的な実施形態は制限ではなく例証のためのものである。しかし、以降の詳細な説明を添付の図と併せて読むことにより開示の内容をより良く理解できるはずである。
図解を簡潔明瞭にするために、図に見られる要素が必ずしも一定の縮尺で描かれていないことが理解されるはずである。また、同様の要素、対応する要素、類似する要素を指示するために図の中で参照番号が適宜繰り返されることがある。
本開示の一例示的な実施形態によるフラッシュメモリデバイスを概略的に示す。 本開示の一例示的な実施形態によるフラッシュメモリデバイスによりホストコマンド列を処理する典型的な方法を示す。 本開示の一例示的な実施形態による擬似PPPの使用を示す。
添付の特許請求の範囲は、本発明の例示的な実施形態の詳細な説明を参照することにより、より良く理解されるはずである。この説明は、特許請求の範囲の範囲を制限するのではなく、例を提示するためのものである。
前述したように、NANDフラッシュメモリデバイスは個別に扱われるページにデータを記憶するようになっている。ホストデバイスから始まる操作の種類に応じて(すなわち、フラッシュメモリデバイスへのホストデータ書き込み、フラッシュメモリデバイスからのホストデータ読み出し、フラッシュメモリデバイスからのホストデータ消去)、「個別に扱われるページ」は「個別に書き込み可能な」ページか「個別に読み出し可能な」ページを指すことができる。「消去」操作の場合は、データがブロック単位で消去され、それぞれのブロックは数個のページからなる。「ページ」のサイズとブロックのサイズはNANDフラッシュメモリデバイスのタイプによって異なり、前述したように、NANDフラッシュメモリデバイスは通常、特定のページサイズとブロックサイズ向けに設計されるため、あるいは少なくとも特定のページサイズとブロックサイズ向けに最適化されるため、様々なサイズのデータページを同じフラッシュメモリデバイスで扱うのは簡単ではない。このため、ある特定のページサイズ向けに設計されたホストデバイスは普通、別のページサイズ向けに設計されたフラッシュメモリデバイスと、少なくとも効率的には、やり取りできない。
通常、ホストデバイスから出る「コマンド列」は、データ(これ以降「ホストデータ」と呼ぶ)と、フラッシュメモリデバイス内の物理ページに対応する論理ページアドレスと、その論理アドレスを使って物理ページにホストデータを書き込むためのフラッシュメモリデバイス向け書き込み命令とを含む。ホスト論理アドレスからデバイスページの物理アドレスへのマッピングを行うには、ホスト論理アドレスを対応するデバイスページの論理アドレスにマッピングし、さらにその後デバイスページの論理アドレスをデバイスページの物理アドレスにマッピングする。これとは別に、「コマンド列」は論理アドレスと、その論理アドレスを使ってフラッシュメモリデバイスの物理ページからホストデータを読み出すためのフラッシュメモリデバイス向け読み出し命令とを含むこともあれば、論理アドレスと、その論理アドレスを使ってフラッシュメモリデバイスからホストデータを消去するための消去命令とを含むこともある。「コマンド列」はまた、管理データと、フラッシュメモリデバイスによって使用されるその他のデータもしくは情報を含むこともある。ホストデバイスからフラッシュメモリデバイスへ転送されるコマンド列のことを、これ以降は「ホストコマンド列」と呼ぶ。NANDフラッシュデバイスのデータはページにグループ化されるから、「ホストデータ」は「ホストページ」にグループ化されると言うこともできる。
図1に、本開示の一例示的な実施形態によるフラッシュメモリデバイス(102に示される)を示す。NANDフラッシュメモリシステム100は、NANDホストデバイス101と、ホストデバイス101と連絡するNANDフラッシュメモリデバイス102とを含む。フラッシュメモリデバイス102は、ホストインターフェイス(I/F)105と、コントローラ103と、NANDメモリセルアレイ130とを含み、このNANDメモリセルアレイは1セル当りNビットのデータを記憶し、Nは2以上である。
ホストデバイス101は、ホストI/F 105を通じてフラッシュメモリデバイス102へホストコマンド列を転送(104に示される)する。ホストコマンド列はフラッシュメモリデバイス102に記憶するホストデータを含み、このホストデータは、デバイスページのサイズより小さいホストサイズのページにまとめられている。例えば、ホストデバイス101がSBCフラッシュメモリデバイスとやり取りするように設計されたSBCデバイスならば、ホストデータのサイズやその他の特性はSBCデータのものとなり、ホストコマンド列はSBCコマンド列になるか、またはそれに似たものとなる。SBCページのサイズは通常4キロバイトに満たない(例えば、2キロバイト)。
メモリセルアレイ130に記憶できるデータはこれ以降「デバイスデータ」と呼び、メモリセルアレイ130の中でデバイスデータの記憶に用いるメモリセル群はこれ以降「デバイスページ」と呼ぶ。デバイスページには、メモリセルアレイ130の中でページの相対的位置を示す物理アドレスと、ホストデバイス101から見たページの相対的位置を示す論理アドレスがある。通常は、翻訳表を用いて1タイプのアドレスを別タイプのアドレスに翻訳する。
例えば、フラッシュメモリデバイスがMBCデバイスならば、デバイスページのサイズやその他の特性はMBCページのサイズや特性となり、同様に、コントローラ103によって内部で使用されるデバイスコマンド列は、MBC技術に準拠するように構築もしくはフォーマットされる。MBCページのサイズは通常、少なくとも4キロバイトである。関係する技術(例えば、SBC、MBC等)が何であれ、本開示の文脈ではホストデータがデバイスデータより小さいことに留意するべきである。
フラッシュメモリデバイスは通常、メモリデバイスとホストデバイスとのデータ交換や様々な内部処理(例えば、ウェアレベリング)を管理する一体形フラッシュコントローラ(図1に示されていない)を含む。フラッシュメモリデバイスとホストデバイスとで使用するページとブロックのサイズが同じならば、フラッシュメモリデバイスは、図1のコントローラ103等のコントローラを使わずにホストデバイスとやり取りできる。しかし、本開示は、それぞれ異なる技術(例えば、SBC対MBC)に準拠するホストデバイス101とフラッシュメモリデバイス102に当てはまるほか、技術(MBC等)は同じであっても使用するNANDインターフェイスが合わないホストデバイスとフラッシュメモリデバイスにも当てはまる。前述したように、ホストデバイス101がSBC技術に準拠し、フラッシュメモリデバイス102がMBC技術に準拠することもある。コントローラ103が、ホスト101とフラッシュメモリデバイス102との技術的な食い違いを、以下に述べるような方法で解決する。
コントローラ103は、ホストコマンド解析部(「HCP」)110と、制御回路150と、データ統合部120と、データ解析部140とを含む。HCP 110は、ホストI/F 105へ接続され(106に示される)、データ統合部120へ接続され(121に示される)、かつ制御回路150へ接続される(151に示される)。ホストデータや場合によってはその他のデータ(ダミーデータ等)を一時的に記憶するため、データ統合部120はRAM 160等のランダムアクセスメモリ(「RAM」)へ接続できる。データ統合部120はデータ解析部140へ接続される(142に示される)。データ統合部120とデータ解析部140はNANDメモリセルアレイ130へ接続される(131と141にそれぞれ示される)。「ダミーデータ」とは、デバイスページ内の空白を代表する以外何ら意味を持たないデータとしてコントローラ103によって識別される特別なデータであり、ホストデバイス101等の外部デバイスはこれにアクセスできない。
コントローラ103はホストデバイス101からホストI/F 105を通じてホストコマンド列(例えば、SBCコマンド列)を受信し、SBCデータ等のホストデータを処理するように構成される。メモリセルアレイ130のデバイスページ操作(例えば、MBC操作)に合わせてホストデータを処理するため、ホストコマンド解析部(HCP)110は、ホストコマンド列からデバイスコマンド列を生成するように構成される。ここで「ホストデータを処理する」とは、フラッシュメモリデバイスに記憶する(書き込む、プログラムする)ホストデータがホストコマンド列の中に実際にあるか、ホストデータが既にフラッシュメモリデバイスに記憶されていてメモリセルアレイ130から読み出すか消去する必要がある状況を指す。
ホストコマンド解析部(HCP)110は、ホストコマンド列をホストオペコード(「HOC」)111と、ホスト論理アドレス(「HLA」)112と、ホストデータ113とに解析し、さらに(必要に応じ)オペコードをフラッシュメモリデバイス102で使えるように翻訳することにより、デバイスコマンド列を生成する。ホストコマンド列から解析されたデータ(ホストデータ)は後述するように処理される。「ホストデータ」はデータ、メタデータ、および/またはデータ処理(書き込み、読み出し、消去)に関連する管理データを指すことがある。
代替の実施形態は、より多くの、より少ない、別の、そうでなくて機能的に同等の、モジュール、構成品、素子を含むことがある。例えば、従来のフラッシュメモリデバイスはフラッシュマネージャを内蔵する。フラッシュマネージャは、着信・発信データや、ウェアレベリング、論理アドレスから物理アドレスへの翻訳、物理アドレスから論理アドレスへの翻訳等の内部処理を管理するコントローラの一種である。図1のコントローラ103が独立したデバイスとしてフラッシュマネージャとやり取りすることもあれば、フラッシュマネージャの機能がコントローラ103に一体化、内蔵、併合されることもある。ホストインターフェイス105は、図1では独立した構成品として示されているが、コントローラ103の一部であってもよい。RAM 160と翻訳表154は、図1ではコントローラ103の一部として示されているが、コントローラ103の外部にあってもよい。
「書き込み」操作
HCP 110は、ホストオペコード111をチェックした後にホストデータをメモリセルアレイ130に書き込む書き込み命令がホストコマンド列の中にあると判断し、その書き込み命令がメモリデバイスに適合しないものである場合に、ホストの書き込みコマンドをフラッシュメモリデバイス102で使用できる書き込み命令に翻訳する。そうでなければ(すなわち、命令の翻訳が不要であれば)、制御回路150はそのホスト書き込み命令を現状のまま利用できる。したがって、HCP 110は当初の書き込み命令を、または(すなわち、フラッシュメモリデバイス102で使用できない場合には)その翻訳を、制御回路150へ転送する(151に示される)。次に、制御回路150はデータ統合部120の動作を制御し(153に示される)、さらにホストデバイスによって発行された書き込み命令に適合するため、必要であれば、データ解析部140の動作も制御する(152に示される)ことができる。
参照番号170は、受信ホストコマンド列の中でホストデバイス101から受け取る典型的なホストデータを示す。オペコード111が書き込み命令ならば、コントローラ103はホストデータ170をメモリセルアレイ130に書き込まなければならないということを意味する。この場合、HCP 110は、ホストデータ170、すなわち典型的なホストデータ113を処理するためにデータ統合部120へ転送する(121に示される)。
参照番号173、174、および175は、典型的なデバイスページを示す。これらのデバイスページには、サイズがデバイスページと同じ(すなわち、4KB)デバイスデータしか書き込めない。あるいはデバイスページとサイズが同じデータしか読み出せない。簡潔を図るために、図1には3つの典型的なデバイスページ(デバイスページ173、174、および175)しか示されていないが、メモリセルアレイ130は実際には多数のデバイスページを有する。ホストデータ170はデバイスページ(すなわち、デバイスページ175)より小さく、ページサイズには様々な技術的事情があるため、現状のままメモリセルアレイ130に書き込むことはできず、メモリセルアレイ130への書き込みに先立ちコントローラ103でこれを処理しなければならない。
ホストデータ170(あるいは他の何らかのホストデータ)をメモリセルアレイ130に書き込むため、コントローラ103のデータ統合部120は、メモリセルアレイ130にある1つ以上のデバイスページ、例えばデバイスページ175に記憶可能なデバイスデータを作成するように構成されている。データ統合部120は、ホストデータ170に補足データを統合することによってデバイスデータを作る。データ統合処理を完了したデータ統合部120は、例えば、新たに作成されたデバイスデータを1つ以上のデバイスページ173、174、および175に書き込む(131に示される)。
データ統合部120によるホストデータと補足データとの統合にあたっては様々なオプションがある。第1のオプションでは、補足データは、ホストデバイス101から受信しフラッシュメモリデバイス102のキューに投入されている別のホストデータである。このオプションは、十分な数の新規ホストデータがホストデバイス101から受信され、例えばランダムアクセスメモリ(RAM)160のキューに投入するまで待つことが含まれる。
フラッシュメモリデバイス102のキューに十分な数のホストデータが投入されない場合は、第2のオプションを使うことができる。このオプションは、残っている補足データをメモリセルアレイ130から読み出すことが含まれる。第2のオプションを促進するため、制御回路150はデバイスページ173、174、および175の物理アドレスを必要なだけデータ解析部140へ送信する(152に示される)。データ解析部140はこれらのデバイスページから残っている補足データを読み出すことができる。(この第2のオプションは、フラッシュメモリデバイス102のキューに入っているホストデータが不足していない場合にも使用することが可能である。)データ解析部140は、物理アドレスによって指定されたデバイスページから該当するデバイスデータを引き出すことによってメモリセルアレイ130からデータを読み出す。読み出すべきデータがホストデータならば、データ解析部140がデバイスデータからホストデータを解析する。
第3のオプションでは、所定の時間内に新たなホストデータが到着しない場合に限り、メモリセルアレイ130から補足データを引き出す。第4のオプションでは、現在受信しているホストデータをメモリセルアレイ130内のいずれかのデバイスページ(すなわち、デバイスページ173、174、175か他のデバイスページ)に一時的に記憶し、後ほど追加のホストデータを受信した後に補足データと統合する。
デバイスページの物理アドレスに関していうと、制御回路150は、例えば翻訳表154を使用して、ある1つのデバイスページに記憶された補足データの存在に気づいた場合には、そのデバイスページ(例えば、デバイスページ175)の物理アドレスだけをデータ解析部140へ送信すればよい(152に示される)。しかし、制御回路150は、メモリセルアレイ130内の複数のデバイスページに補足データが分散されていることに気づいた場合には、それらのデバイスページに対応する複数の物理アドレスをデータ解析部140へ送信する(152に示す)。
データ解析部140は制御回路150から送信された物理アドレスを使ってメモリセルアレイ130からデバイスデータを引き出し(141に示される)、そこから必要な補足データを解析する。次に、データ解析部140はデータ統合部120へ補足データを転送し(142に示される)、データ統合部120は、これをホストデータに統合し、新たなデバイスデータを作成する。次に、制御回路150から送信(153に示される)された物理アドレスに該当する目標デバイスページ(例えば、デバイスページ175)にデータ統合部120がデバイスデータを書き込むと(131に示される)、「書き込み」命令111は完了する。図3との関係で後述するダミーデータが補足データとなることもあるので留意するべきである。つまり、デバイスページに記憶すべきホストデータにはダミーデータを統合することもでき、コントローラ103は、このデバイスページにホストデータしか入っていないものとみなす。例えば、デバイスページ175にはホストデータ176と、ホストデータ177と、ダミーデータ178とが見られる。この例のデータ統合部120はホストデータ176を受信し、さらなるホストデータ177を待ってからホストデータ176とホストデータ177の両方をメモリセルアレイのフラッシュメモリセルアレイ130に書き込むことにした。データ統合部120はさらなるホストデータ(すなわち、ホストデータ177)を待っている間、RAM 160にホストデータ176を一時的に保管した。そして、データ統合部120はホストデータ177を受信し、ホストデータ176にホストデータ177とダミーデータ178を統合した。最後にデータ統合部120は、図1に示すように統合済みのデータをデバイスページ175に書き込んだ。
デバイスページの物理アドレスをデータ解析部140に送信(152に示される)し、かつデータ統合部120に送信(153に示される)する代わりに、制御回路150は、デバイスページの物理アドレスを使ってメモリセルアレイ130から該当するデバイスデータを読み出し、これをデータ解析部140かデータ統合部120へ送信することもできる。
「読み出し」操作
受信オペコード111が、制御回路150によって、「読み出し」命令と解釈される場合に、制御回路150は「読み出し」命令を実行するが、このとき制御回路150は、メモリセルアレイ130の中でホストデータ(これ以降「要求ホストデータ」と呼ぶ)の読み出し先にあたるデバイスページ(これ以降「要求デバイスページ」と呼ぶ)の物理アドレスにホスト論理アドレス112を翻訳する。ホストデータはデバイスデータの一部としてデバイスページに記憶されるため、該当するデバイスページに記憶されたデバイスデータから要求ホストデータ(すなわち、読み出すべきホストデータ)を解析しなければならない。そこで制御回路150は、要求デバイスページの物理アドレスをデータ解析部140へ転送する(152に示される)。データ解析部140は要求デバイスページの物理アドレスを使って所望のデバイスデータを読み出す(141に示される)。データ解析部140が引き出したデバイスデータから要求ホストデータを解析し、ホストI/F 105を通じてホストデバイス101へ要求ホストデータを送信(143に示される)すると、それによって「読み出し」コマンド111を完了する。
要求デバイスページの物理アドレスをデータ解析部140へ送信(152に示される)する代わりに、制御回路150が要求デバイスページの物理アドレスを使って所望のデバイスデータを取り出し、データ解析部140へ送信することもできる。
「消去」操作
受信オペコード111が制御回路150によって「消去」命令と解釈される場合に、制御回路150は「消去」命令を実行する。「ページ」に対して実行される「書き込み」操作や「読み出し」操作と違って、NANDフラッシュデバイスでは「ブロック」単位でデータを消去する。「ホストブロック」は複数のホストページからなり、「デバイスブロック」は複数のデバイスページからなる。したがって、制御回路150はホストデータを消去する消去命令を識別する場合に、制御回路150は、メモリセルアレイ130の中で、消去対象のホストデータを含むデバイスデータを記憶しているデバイスブロックのアドレスを翻訳表154で調べる。制御回路150は翻訳表154の中でそのホストデータを消去済みとマークし、ホストデータが消去されたことを伝えるメッセージをホストデバイス101へ送信する。制御回路150は、後ほど適当なときに、あるいは都合のよいときに、メモリセルアレイ130から実際にホストデータを消去することができる。制御回路150はホストデータを実際に消去するにあたって、ホストデータのホスト論理アドレス112を、ホストデータが入っているデバイスブロックの物理アドレスに翻訳し、そのデバイスブロックを消去する。
図2は、本開示によるフラッシュメモリデバイスによりホストコマンド列を処理する典型的な方法を示す。図2は、図1と関連して説明され、ホストデバイス101がSBC技術に準拠し、フラッシュメモリデバイス102がMBC技術に準拠すると仮定している。前に説明したように、デバイスに違いを生じさせる様々な技術的態様に配慮しない限り、SBCホストデバイスとMBCフラッシュメモリデバイスは互いにやり取りできない。ページサイズとブロックサイズの違いのほかに、SBCフラッシュメモリデバイスでは、新たなデータをページに書き込む前にそのページ全体を消去する。しかし、そのページに十分に大きい空きスペースがあって新規データを書き込めるならば、「消去」ステップは省略される。当該技術分野でパーシャルページプログラミング(「PPP」)と一般に呼ばれている機能である。SBCフラッシュメモリデバイスとは対照的に、MBCフラッシュメモリデバイスでは常にページへの新規データ書き込みに先立ちページ全体を消去する。加えて、SBCフラッシュメモリデバイスはデータをページにランダムに書き込むが、MBCフラッシュメモリデバイスはデータをページに順次書き込む。つまり、データはページ0へ書き込まれ、次にページ1、ページ2へと書き込まれていく。図1との関係で前に説明したように、コントローラ103はホストコマンド解析部110と、データ統合部120と、データ解析部140とを使用することによってこれらの技術的違いを解決する。
ステップ201では、NANDフラッシュメモリデバイス102のコントローラ103がホストデバイス101からホストコマンド列を受信する(図1に104として示す)。この例のホストコマンド列はSBCコマンド列である。ステップ202では、ホストコマンド解析部(HCP)110がSBCコマンド列をSBCオペコード111と、SBC論理アドレス112と、この例ではSBCデータであるホストデータ113とに解析する。ステップ203では、オペコードが「書き込み」命令か否かをチェックする。SBCオペコードが「書き込み」命令ならば(203にて「Yes(はい)」と示される)、次に、制御回路150はステップ204で、SBCデータ113に補足データを統合もしくは併合するようにデータ統合部120に指示し(153に示される)、補足データは他のSBCデータでよく、この統合により、MBCセルアレイ130の1つ以上のデバイスページに記憶可能なデバイスデータ(この例では、MBCデータ)ができあがる。SBCデータを含むこのデバイスデータ(すなわち、MBCデータ)をMBCセルアレイ130のデバイスページに書き込むことを制御回路150がデータ統合部120に指示すると、ステップ205でSBCデータが該当するMBCページに書き込まれる。
補足データは、ホストデバイス101から受信しフラッシュメモリデバイス102のキューに投入されている別のホストデータであることができる。補足データは、他のデバイスデータの一部として予めNANDフラッシュメモリセルアレイ130に記憶され、そこから解析されるホストデータであることができる。補足データはダミーデータであることができる。書き込み操作についていうと、メモリセルアレイ130のデバイスページはブロックにグループ化され、それぞれのブロックの中で論理的観点から逐次書き込まれていくから、デバイスページの物理アドレスは必ずしも連続しない。換言すると、データを、不連続のデバイスページ、散在するデバイスページ、あるいは配置が不規則なデバイスページに書き込むことができ、不連続のデバイスページ、散在するデバイスページ、あるいは配置が不規則なデバイスページに書き込まれたデータは、あたかも隣接するデバイスページに記憶されていたかのように、論理的にホストデバイスに導入される。
コントローラ103は、パーシャルプログラミング(「PPP」)方式を使ってホストデータを書き込もうとするホストデバイス101に応じて、擬似パーシャルページプログラミング方式を使ってこれをフラッシュメモリセルアレイ130に書き込むことができる。擬似PPP方式を使用すると、補足データとしてダミーデータを使用することを含むことができる。例えば、停電保護を改善するため、書き込み済みデバイスページに隣接しないデバイスページにホストデータをコントローラ103によって書き込むことができる。
しかし、SBCオペコード111が「書き込み」命令でなければ(ステップ203にて「No(いいえ)」と示される)、オペコードが「読み出し」命令か否かをステップ204でチェックする。SBCオペコードがMBCデータの一部としてデバイスページに記憶されているSBCデータをメモリセルアレイ130から読み出す「読み出し」命令ならば(ステップ206にて「Yes(はい)」と示される)、次に制御回路150はステップ207で、メモリセルアレイ130からMBCデータを読み出し(141に示される)、MBCデータからSBCデータを解析することをデータ解析部140に指示する(152に示される)。ステップ208で制御回路150が解析されたSBCデータをホストデバイス101へ送信することをデータ解析部140に指示すると(152に示される)、それによって読み出し操作を完了する。
しかし、SBCオペコード111が「読み出し」命令でなければ(206にて「No(いいえ)」と示される)、オペコード111は、MBCデータの一部としてデバイスブロックに記憶されているSBCデータをメモリセルアレイ130から消去する「消去」命令である。ステップ209では、コントローラ103が内部で(例えば、翻訳表154で)SBCデータを消去済みとマークし、SBCデータが消去されたことを伝えるメッセージをホストデバイス101へ送信する。コントローラ103は、論理アドレス112を用いてMBCブロックの物理アドレスを特定した後、オプションステップ210で、SBCデータが入っているMBCブロックからSBCデータを実際に消去する。
図1のコントローラ103のようなコントローラを使用することにより、あたかもMBCフラッシュメモリデバイスがSBCフラッシュメモリデバイスであるかのように、SBCホストデバイスがMBCフラッシュメモリデバイスと連動できる(つまり、MBCフラッシュメモリデバイスに向けて「書き込み」、「読み出し」、「消去」命令を発行できる)ことに留意するべきである。また、本開示がNAND MBCフラッシュメモリデバイスと連動するNAND SBCホストデバイスに限定されないことに留意するべきである。ホストデータがデバイスページより小さいホストページにグループ化されるのならば、どんなNANDホストデバイスならびにNANDフラッシュメモリデバイスにも本開示を適用できる。例えば、MBCホストデバイスのデータページがMBCフラッシュメモリデバイスのデータページより小さいならば、MBCフラッシュメモリデバイスと連動するMBCホストデバイスにも本開示を適用できる。
SBCパーシャルページプログラミング(「PPP」)のエミュレーション
図3は、SBCフラッシュメモリデバイスで使われているパーシャルページプログラミング(「PPP」)の本開示による典型的なエミュレーションを示す。ホストデバイス101(一例において、SBCデバイス)は、PPPの使用を望む場合にこれを通常どおり使用でき、フラッシュメモリデバイス102は、後述する擬似PPP方式を用いてホストデバイスから発行される「書き込み」命令に応じる。通常、ホストデバイスが様々なデータ要素を1つの論理SBCページに書き込むことを望む場合には、擬似PPP方式によりMBCフラッシュメモリデバイスの1つの物理MBCページにそれらのデータ要素が書き込まれる。
図3を図1と関連して説明する。簡潔を図るために、ホストデバイス101はSBCデバイスと仮定し(つまり、ホストデバイス101はSBCページにグループ化されたデータを扱う)、フラッシュメモリデバイス102はMBCデバイスと仮定する。ホストデバイス101はSBCデータ(310、311、および312と指示)をフラッシュメモリデバイス102へ一度に1データ要素ずつ送信する。SBCホストデバイスはパーシャルページプログラミング(PPP)を使用できるため、従来のMBCフラッシュメモリデバイスはそのような操作を処理できるようにはなっていなくても、図3はMBCフラッシュメモリデバイス102がどのようにしてPPPを処理するかを示す。
ホストデバイス101は、MBCフラッシュメモリデバイス102へSBCデータ310を送信するため、論理アドレス301のSBCページに典型的なSBCデータ310を書き込み、時間t1にSBCページ301を「書き込み」コマンド列に埋め込んでフラッシュメモリデバイス102へ送信する。データページ301内の記憶スペース320はデータがない、すなわち、空の状態で、SBCストレージデバイスでは、データ310を消去せずともページ301に追加のデータを1つずつ書き込むことができるため、ここで説明するやり方でページ301にデータを書き込むことは「パーシャルページプログラミング」と呼ばれている。MBCフラッシュメモリデバイス102はホストインターフェイス105を通じてデータ310を受信する。MBCセルアレイ130にデータ310を書き込んでホストデバイス101から発行された書き込みコマンドを完了するにあたっては、数通りのオプションがある。1オプションでは、データ統合部120を使ってデータ310に補足データを統合し、メモリセルアレイ130のMBCページに書き込めるデータ構造(すなわち、デバイスデータ)を作る。このオプションでは、前述したように、補足データはフラッシュメモリデバイス102でこれから受信する別のホストデータか、フラッシュメモリデバイス102のキューに入っているホストデータか、予めメモリセルアレイ130に記憶されているデータである。後ほど詳述する第2のオプションでは、フラッシュメモリデバイス102でPPPに似たやり方でデータ310を扱う(PPP操作に似ていることを、ここでは「擬似PPP」と呼ぶ)。この擬似PPPオプションを実施するには、MBCページ330にデータ310を記憶して記憶スペース331を空のまま放置するか、データ統合部120でデータ310にダミーデータを統合してMBCデータを作成し、作成したMBCデータをメモリセルアレイ130に書き込む。
SBCホストデバイス101は時間t2に、論理ページ301の空きスペース320にデータ311を書き込み、ページ301を記憶するためにフラッシュメモリデバイス102へ送信する。データ311をページ301に書き込むことにより、ページ301の空きスペースは小さくなる(321に示される)。一部のMBCフラッシュメモリデバイスでは事前に物理ページを消去しない限り物理ページへの書き込みは1回しか行えないため、メモリセルアレイ130の物理ページ330に空きスペースが残っていても(すなわち、スペース331)、物理ページ330にはデータ311を書き込めない。つまり、フラッシュメモリデバイスは、受信するデータをメモリセルアレイ130内の別の空きMBC物理ページに書き込むことを余儀なくされる。しかし、PPP操作のように振舞うため、データ解析部140は物理ページ330からデータ310を抽出し、データ統合部120がこれに受信したデータ311を統合する(すなわち、付け足す)。そして、データ統合部120はデータ310と付け足されたデータ311をメモリセルアレイ130内の別の空き物理ページ340に書き込む。同様に、ホストデバイス101は時間t3にデータ312をフラッシュメモリデバイス102へ送信するが、たとえ物理ページ340に十分な空きスペース(すなわち、スペース341)が残っていても、物理ページ340にはデータ312を書き込めない。代わりに、データ解析部140が物理ページ340からデータ310とデータ311を抽出し、データ統合部120がデータ310とデータ311に受信データ312を統合する(すなわち、付け足す)。そして、データ統合部120はデータ310と、データ311と、新たに付け足されたデータ312とをメモリセルアレイ130内の別の空き物理ページ350に書き込む。代替の操作モードとして、データ310、311、および312を物理ページ330、340、および350にそれぞれ書き込み、それらをデータ統合部120で統合し、メモリセルアレイ130内の別の空き物理ページに書き込むこともできる。図3の例ではMBCページへの書き込みが相次いで行われるので、物理MBCページ330、340、および350は物理的に互いに隣接している。
ホストデバイス101等のホストデバイスは、パーシャルプログラミング(すなわち、PPP)を使ってデータ310、311、および312等のデータ要素を論理ページ301等の論理ページに書き込む場合に、相手方のフラッシュメモリデバイス(フラッシュメモリデバイス102等)があたかもSBCフラッシュメモリデバイスであるかのごとく、書き込みを果たすことができる。相手方のフラッシュメモリデバイスは、前述した擬似PPP方式を用いて個々のホストデバイスデータ要素を同じ物理MBCページ(この例では、MBCページ350)に書き込むことでホストが発行した書き込み命令に応じる。ホストデバイス101が擬似PPP方式を意識することはなく、ホストデバイス101にとっては、フラッシュメモリデバイス102がデータ要素310、311、および312を1つの物理SBCページに書き込んだことになる。
コントローラ103は、ホストデバイス101から届くSBCページの論理アドレスをメモリアレイ14内のMBCページ(すなわち、デバイスページ)の物理アドレスに翻訳する翻訳表154を管理する。コントローラ103はメモリセルアレイ130の中でデータを記憶するデバイスページの物理アドレスを翻訳表154から絶えず把握し、データ解析部140がメモリセルアレイ130からデータを抽出したり、データ統合部120がメモリセルアレイ130にデータを書き込むたびに、翻訳表154を更新したりする。また、場合によってはホストデバイスからメモリコマンドを受信次第直ちに、あるいはメモリコマンドに応じて、コントローラ103がメモリセルアレイ130の中でデバイスデータの一部または全部を一時的にまたは永久的に配置換えする必要がある。このときコントローラ103は、データの一部または全部の配置換えにともない一時的な論理および物理アドレスや最終的な論理および物理アドレスにより翻訳表154を更新する。フラッシュメモリ管理における翻訳表の取り扱いは当該技術分野で周知であり、ここでは詳述しない。
ページ間依存、P/Eサイクル、信頼性
フラッシュメモリでは、個々のフラッシュセルに記憶できるビットが多いほど動作上の問題が増え、フラッシュセルが有用になるようにするには、それらの問題を解決する必要がある。ここではMBCフラッシュメモリとSBCフラッシュメモリに言及するが、1セル当り2ビットを記憶するMBCデバイスや1セル当り3ビット以上を記憶するMBCデバイスにも同じ原理が当てはまる。
ページ間依存に関していうと、MBCフラッシュメモリは停電時に致命的なデータ書き込み/読み出しエラーを被りやすい。これは、2ページ間の物理的な近さに部分的に起因する。他方、SBCフラッシュメモリでそのようなエラーが生じる度合いは低い。このためMBCホストデバイスの場合は、SBCホストデバイスと違って、停電に対して特別な対策を講じる必要がある。データ統合部は、SBCホストデバイスが連続するホストページの形でホストデータを送信する場合に、停電の影響を最小限にとどめるように特別な物理デバイスページ順序(通常は隣接しない順序)でホストページを書き込む。換言すると、連続して受け取るホストページが連続するデバイスページ順序でデバイスページに記憶されるとは限らない。ときには(すなわち、ホストデバイスによって送信されるデータのタイプによっては)、さらなる停電対策としてデータの少なくとも一部分については内部でバックアップをとる必要がある。
プログラミング/消去(P/E)サイクルと信頼性に関していうと、MBCフラッシュメモリの最大成功P/Eサイクル数はSBCフラッシュメモリより格段に低く、その信頼性は低P/Eサイクル数によって損なわれている。一部のSBCホストデバイスではさほど厳密ではないフラッシュ管理アルゴリズムが使われているが、これはSBCデバイスのP/E限界が高く信頼性に優れるという前提によるもので、実際、多くのタイプのSBCフラッシュメモリに当てはまる。制御回路150は、結果的にP/Eサイクル数が増えるようなやり方でメモリセルアレイ130のデバイスページにホストデータを移す。つまり、制御回路150は、翻訳表154に入っている情報をもとに各デバイスページのP/Eサイクル数を割り出し、データ統合部120を使って消耗が少ないデバイスページにホストデータを書き込む。さもないと(前述した対策がコントローラ103で実施されないと)、いわゆる「標準」SLCフラッシュメモリで、後ほどSBCホストデバイスが読み出すことになるかもしれないデータが、思ったより早く壊れてしまう。「早く」とはP/Eサイクルが少ないことを意味する。
P/Eサイクルのほかにもフラッシュメモリデバイスの信頼性を左右する要因はある。例えば、エラー数やフラッシュセルのデータ保持能力に左右される。ホストデバイスが期待する信頼性を達成するには、場合によっては制御回路150で1つ以上の内部パラメータ(デバイスページの機能に関するパラメータ)を使ってメモリセルアレイ130の中でデバイスデータを再配置しなければならない。
前述した対策を促進するため(すなわち、ホストデータを特別な順序で物理デバイスページに書き込むこと、ホストデータをデバイスページに移すこと、デバイスページ内でデバイスデータを再配置すること)、データ統合部はマッピングアルゴリズムを使用し、関係する論理・物理アドレスとデータ位置に関する情報により翻訳表154を更新する。この情報は、前述した種々の性能態様に関連する。
本願の説明と特許請求の範囲で動詞「備える」、「含む」、および「有する」とこれらの同根語が使われる場合には、動詞の目的語は必ずしも動詞の主語の部材、構成品、要素、部品を網羅しているとは限らない。
ここで使用する冠詞「a 」および「an」は、冠詞の文法的対象が文脈次第で1つであったり、2つ以上であったりすること(少なくとも1つであること)を意味する。例えば、「an element(要素)」は、文脈次第で1つの要素を意味することもあれば2つ以上の要素を意味することもある。
ここで使用する用語「含まれる」は、句「含まれるが限定されるわけではない」を意味し、かつこれと互換的に使われる。
ここで使用する用語「または」と「および」は、文脈から別様が明白でない限り用語「および/または」を意味し、かつこれと互換的に使われる。
ここで使用する用語「例えば」は、句「例えるが、限定されるわけではない」ことを意味し、かつこれと互換的に使われる。
これまで本発明の典型的な実施形態を説明してきたが、開示された例示的な実施形態の修正が本発明の範囲内にあることは当業者にとって明白である。例えば、ホストデバイスは必ずしもSBCホストデバイスでなくともよく、本開示は、タイプの異なるホストデバイスやタイプの異なるNANDフラッシュデバイスにも、変更すべきところは変更し、同様に応用できる。開示された発明のさらなる変更、修正、改良は、前述した説明に明記されていないが本発明の趣旨と範囲の中にある。

Claims (18)

  1. 1セル当たりMビットが記憶させられるホストデータを、1セル当たりNビットが記憶させられるデータ(ただし、M,Nは整数で、N>M)としてフラッシュメモリデバイスに書き込む方法であって、
    a)個別に書き込み可能なデバイスページにグループ化されたNANDフラッシュメモリセルアレイにホストデータを書き込む書き込み命令を、フラッシュメモリデバイスのコントローラにより、ホストデバイスから受信するステップと、
    b)1つ以上の前記デバイスページに記憶可能なデバイスデータを作成するため、前記コントローラにより前記ホストデータに補足データを統合するステップと、
    c)前記コントローラにより1つ以上の前記デバイスページに前記デバイスデータを書き込むステップと、を含み、
    デバイスページに空きの記憶スペースがある場合、該デバイスページに追加のデータを書き込むパーシャルページプログラミング方式を用いてホストデータを書き込む前記ホストデバイスに応答し、個別に書き込み可能なデバイスページからデータを抽出し、該抽出したデータを受信データと統合する擬似パーシャルページプログラミング方式を用いて前記ホストデータは、前記NANDフラッシュメモリセルアレイに前記コントローラにより書き込まれる方法。
  2. 請求項1記載の方法において、
    前記補足データは、前記ホストデバイスから受信され、かつ前記フラッシュメモリデバイスのキューに投入されている別のホストデータである方法。
  3. 請求項1記載の方法において、
    前記補足データは、他のデバイスデータの一部として予め前記NANDフラッシュメモリセルアレイに記憶されていて、かつそこから解析されるホストデータである方法。
  4. 請求項1記載の方法において、
    前記デバイスページはブロックにグループ化され、各ブロック内で論理的観点から逐次書き込まれていくため、それらの物理アドレスは必ずしも連続しない方法。
  5. 請求項1記載の方法において、
    前記コントローラによる前記擬似パーシャルページプログラミング方式を用いることは、前記補足データとしてダミーデータを用いることを含む方法。
  6. 請求項1記載の方法において、
    前記ホストデータは、書き込み済みデバイスページに隣接しないデバイスページに前記コントローラにより書き込まれる方法。
  7. 1セル当たりMビットが記憶させられるホストデバイスと、1セル当たりNビットが記憶させられるフラッシュメモリデバイスとを備え、該フラッシュメモリデバイス用コントローラであって、
    a)ホストデバイスからホストデータを受信するように構成されたホストNANDインターフェイスと、
    b)前記ホストデータに補足データを統合することでデバイスデータを作成し、かつ前記フラッシュメモリデバイスのNANDフラッシュメモリセルアレイのデバイスページに前記デバイスデータを書き込むように構成されたデータ統合部と、
    c)デバイスページに空きの記憶スペースがある場合、該デバイスページに追加のデータを書き込むパーシャルページプログラミング方式を用いてホストデータを書き込む前記ホストデバイスに応答し、個別に書き込み可能なデバイスページからデータを抽出し、該抽出したデータを受信データと統合する擬似パーシャルページプログラミング方式を用いて前記ホストデータを、前記NANDフラッシュメモリセルアレイに書き込むように構成された制御回路と、
    を備えるコントローラ。
  8. 請求項7記載のコントローラにおいて、
    前記補足データは、前記ホストデバイスから受信され、かつ前記NANDフラッシュメモリセルアレイに記憶するために前記フラッシュメモリデバイスのキューに投入されている別のホストデータであるコントローラ。
  9. 請求項7記載のコントローラにおいて、
    d)デバイスデータから補足データを解析するように構成されたデータ解析部をさらに備えるコントローラ。
  10. 請求項9記載のコントローラにおいて、
    前記補足データは、デバイスデータから解析される別のホストデータであるコントローラ。
  11. 請求項9記載のコントローラにおいて、
    前記データ解析部は、所定のホストデータを読み出すコマンドを前記ホストデバイスから受信すると、制御回路から送られる要求デバイスページの物理アドレスを使って所望のデバイスデータを読み出し、該デバイスデータより要求ホストデータを解析する動作によりフラッシュメモリデバイスのMBCデータから1セル当たり1〜多値のデータを読み出すようにさらに構成されるコントローラ。
  12. 請求項7記載のコントローラにおいて、
    前記デバイスページは、デバイスブロックにグループ化され、前記データ統合部は、各ブロック内でデータを論理的観点から逐次デバイスページに書き込むようにさらに構成されるため、それらの物理アドレスは必ずしも連続しないコントローラ。
  13. 請求項7記載のコントローラにおいて、
    所定のホストデータを消去する命令を前記ホストデバイスから受信すると、前記所定のホストデータは前記コントローラにより「消去済み」とマークされ、前記所定のホストデータが消去されたことを伝えるメッセージが前記ホストデバイスへ送信されるコントローラ。
  14. 請求項7記載のコントローラにおいて、
    前記擬似パーシャルページプログラミング方式を用いるにあたって、前記制御回路は前記補足データとしてダミーデータを用いるコントローラ。
  15. 請求項7記載のコントローラにおいて、
    前記制御回路は、所定のホストデータを消去する命令を前記ホストデバイスから受信すると、前記所定のホストデータを消去済みとマークし、かつ前記所定のホストデータが消去されたことを伝えるメッセージを前記ホストデバイスへ送信するように構成されるコントローラ。
  16. 請求項7記載のコントローラにおいて、
    Nは2に等しく、Mは1に等しいコントローラ。
  17. 請求項7記載のコントローラにおいて、
    Nは4に等しく、Mは1に等しいコントローラ。
  18. 請求項7記載のコントローラにおいて、
    Nは4に等しく、Mは2に等しいコントローラ。
JP2010540215A 2007-12-27 2008-01-08 1セル当り単一ビットnandフラッシュメモリをエミュレートする1セル当り多ビットnandフラッシュメモリ用コントローラ Expired - Fee Related JP5213965B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/964,741 2007-12-27
US11/964,741 US8001316B2 (en) 2007-12-27 2007-12-27 Controller for one type of NAND flash memory for emulating another type of NAND flash memory
PCT/IL2008/000040 WO2009083945A1 (en) 2007-12-27 2008-01-08 A controller for a multiple bit per cell nand flash memory for emulating a single bit per cell nand flash memory

Publications (2)

Publication Number Publication Date
JP2011508357A JP2011508357A (ja) 2011-03-10
JP5213965B2 true JP5213965B2 (ja) 2013-06-19

Family

ID=39708308

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010540215A Expired - Fee Related JP5213965B2 (ja) 2007-12-27 2008-01-08 1セル当り単一ビットnandフラッシュメモリをエミュレートする1セル当り多ビットnandフラッシュメモリ用コントローラ

Country Status (7)

Country Link
US (3) US8001316B2 (ja)
EP (1) EP2225759B1 (ja)
JP (1) JP5213965B2 (ja)
KR (1) KR101517416B1 (ja)
CN (1) CN101946286B (ja)
TW (1) TWI375151B (ja)
WO (1) WO2009083945A1 (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
TWI494756B (zh) * 2009-08-26 2015-08-01 Phison Electronics Corp 下達讀取指令的方法、快閃記憶體控制器與快閃記憶體儲存系統
EP2317442A1 (en) * 2009-10-29 2011-05-04 Thomson Licensing Solid state memory with reduced number of partially filled pages
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US8924629B1 (en) * 2011-06-07 2014-12-30 Western Digital Technologies, Inc. Mapping table for improving write operation efficiency
EP2745203B1 (en) 2011-08-19 2016-09-21 Kabushiki Kaisha Toshiba Information processing apparatus
US9588883B2 (en) 2011-09-23 2017-03-07 Conversant Intellectual Property Management Inc. Flash memory system
US9588762B2 (en) * 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
WO2014071497A1 (en) * 2012-11-09 2014-05-15 Mosaid Technologies Incorporated Method and apparatus for pll locking control in daisy chained memory system
KR102272228B1 (ko) * 2014-05-13 2021-07-06 삼성전자주식회사 불휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US9423961B2 (en) 2014-09-08 2016-08-23 Apple Inc. Method to enhance programming performance in multilevel NVM devices
US9588701B2 (en) * 2014-09-09 2017-03-07 Sandisk Technologies Llc Multi-stage programming at a storage device using multiple instructions from a host
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US10063569B2 (en) * 2015-03-24 2018-08-28 Intel Corporation Custom protection against side channel attacks
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
JP6453729B2 (ja) 2015-08-17 2019-01-16 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
KR102480016B1 (ko) 2015-08-18 2022-12-21 삼성전자 주식회사 다수의 맵핑 단위를 이용하는 불휘발성 메모리 시스템 및 그 동작방법
US9904543B2 (en) * 2015-10-26 2018-02-27 Hewlett-Packard Development Company, L.P. Setting a build indicator to enable or disable a feature
US10521118B2 (en) * 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
US10049764B2 (en) 2016-12-13 2018-08-14 Macronix International Co., Ltd. Control method for memory device and memory controller
US9823961B1 (en) * 2016-12-13 2017-11-21 Macronix International Co., Ltd. Memory controller and operating method thereof
JP6403130B2 (ja) * 2017-08-03 2018-10-10 東芝メモリ株式会社 情報記録システム
US10732838B2 (en) 2017-11-29 2020-08-04 Western Digital Technologies, Inc. Logical grouping for hybrid dual write
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11874768B1 (en) * 2019-11-14 2024-01-16 Xilinx, Inc. Flash memory emulation
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
DE69033438T2 (de) * 1989-04-13 2000-07-06 Sandisk Corp., Santa Clara Austausch von fehlerhaften Speicherzellen einer EEprommatritze
US5541886A (en) 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US8108590B2 (en) * 2000-01-06 2012-01-31 Super Talent Electronics, Inc. Multi-operation write aggregator using a page buffer and a scratch flash block in each of multiple channels of a large array of flash memory to reduce block wear
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
JP2005092923A (ja) * 2003-09-12 2005-04-07 Renesas Technology Corp 半導体記憶装置
ITMI20032134A1 (it) * 2003-11-06 2005-05-07 St Microelectronics Srl Dispositivo integrato di memoria con comando di cancellazione multisettore
KR100719380B1 (ko) 2006-03-31 2007-05-18 삼성전자주식회사 향상된 신뢰성 특성을 갖는 다치 플래시 메모리 장치 및그것을 포함한 메모리 시스템
US8180931B2 (en) * 2004-01-20 2012-05-15 Super Talent Electronics, Inc. USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch
US7336531B2 (en) 2004-06-25 2008-02-26 Micron Technology, Inc. Multiple level cell memory device with single bit per cell, re-mappable memory block
US20060143368A1 (en) * 2004-12-23 2006-06-29 M-Systems Flash Disk Pioneers Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7752382B2 (en) 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
CN101273413B (zh) * 2005-09-29 2011-11-16 特科2000国际有限公司 使用单层单元和多层单元闪速存储器的便携式数据存储
SG130988A1 (en) * 2005-09-29 2007-04-26 Trek 2000 Int Ltd Portable data storage device incorporating multiple flash memory units
JP2007141376A (ja) * 2005-11-18 2007-06-07 Matsushita Electric Ind Co Ltd 半導体記憶装置及びその制御方法
US7366013B2 (en) 2005-12-09 2008-04-29 Micron Technology, Inc. Single level cell programming in a multiple level cell non-volatile memory device
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7646636B2 (en) * 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation

Also Published As

Publication number Publication date
CN101946286B (zh) 2014-06-18
WO2009083945A1 (en) 2009-07-09
TWI375151B (en) 2012-10-21
US8683116B2 (en) 2014-03-25
US8296509B2 (en) 2012-10-23
TW200928736A (en) 2009-07-01
CN101946286A (zh) 2011-01-12
KR20100113083A (ko) 2010-10-20
KR101517416B1 (ko) 2015-05-04
EP2225759A1 (en) 2010-09-08
JP2011508357A (ja) 2011-03-10
US20090172247A1 (en) 2009-07-02
US20130024611A1 (en) 2013-01-24
US8001316B2 (en) 2011-08-16
US20110271045A1 (en) 2011-11-03
EP2225759B1 (en) 2014-03-05

Similar Documents

Publication Publication Date Title
JP5213965B2 (ja) 1セル当り単一ビットnandフラッシュメモリをエミュレートする1セル当り多ビットnandフラッシュメモリ用コントローラ
US11237765B2 (en) Data writing method and storage device
KR101856506B1 (ko) 데이터 저장 장치 및 그것의 데이터 쓰기 방법
US8909986B2 (en) Data storing method for solid state drive to preserve data integrity after power failure
US20110099323A1 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US10990325B2 (en) Write control method, associated data storage device and controller thereof
US10338841B2 (en) Block management for data streams
KR20120030137A (ko) 영구 가비지 컬렉션을 갖는 메모리 시스템
US20100030948A1 (en) Solid state storage system with data attribute wear leveling and method of controlling the solid state storage system
JP2009099149A (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
CN106598479A (zh) 闪速存储器的故障安全擦除的方法和装置
TWI512609B (zh) 讀取命令排程方法以及使用該方法的裝置
US9378130B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
TWI697009B (zh) 寫入控制方法以及資料儲存裝置及其控制器
CN115346592A (zh) 存储装置
US10170179B2 (en) Data storage device and operating method for data storage device
JP2006338083A (ja) メモリコントローラ
WO2014185038A1 (ja) 半導体記憶装置およびその制御方法
CN110888820A (zh) 数据储存装置以及非挥发式存储器控制方法
CN109933467A (zh) 存储器系统及其操作方法
CN108255437B (zh) 数据贮存装置及方法
US20120198126A1 (en) Methods and systems for performing selective block switching to perform read operations in a non-volatile memory
KR20240112167A (ko) 스토리지 장치, 스토리지 장치의 동작 방법 및 비휘발성 메모리의 동작 방법
KR20230115195A (ko) 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법
TW201426302A (zh) 記憶體資料存取方法及記憶體資料存取控制器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120918

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121217

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130226

R150 Certificate of patent or registration of utility model

Ref document number: 5213965

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

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

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

LAPS Cancellation because of no payment of annual fees