JP5223869B2 - 半導体記憶装置、制御装置、制御方法 - Google Patents

半導体記憶装置、制御装置、制御方法 Download PDF

Info

Publication number
JP5223869B2
JP5223869B2 JP2009549922A JP2009549922A JP5223869B2 JP 5223869 B2 JP5223869 B2 JP 5223869B2 JP 2009549922 A JP2009549922 A JP 2009549922A JP 2009549922 A JP2009549922 A JP 2009549922A JP 5223869 B2 JP5223869 B2 JP 5223869B2
Authority
JP
Japan
Prior art keywords
data
cells
determined
threshold value
value
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
JP2009549922A
Other languages
English (en)
Other versions
JPWO2009090731A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2009090731A1 publication Critical patent/JPWO2009090731A1/ja
Application granted granted Critical
Publication of JP5223869B2 publication Critical patent/JP5223869B2/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/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
    • 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/1072Adding 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 multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input 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/10Programming or data input circuits

Landscapes

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

Description

本発明は、2値または多値によりセルにデータを記憶させる半導体記憶装置、半導体制御装置、半導体制御方法に関するものである。
近年、USBメモリ、フラッシュメモリカード、フラッシュディスクなどの不揮発性メモリによるメモリデバイスが広く普及している。また、これらのメモリデバイスを大容量化させるための技術として、図28に示すように各メモリセルの電圧の閾値を増やし、例えば4値型メモリセルの場合、“11”、“10”、“01”、“00”の各2ビットデータを電圧の各レベルに対応させることで1つのメモリセルに3値以上を記憶させる多値化技術が知られている。
なお、本発明の関連ある従来技術として、大容量であって、高信頼性かつ高速動作を確保できる不揮発性半導体記憶装置およびデータ記憶システムが知られている(例えば、特許文献1参照)。
特開2001−210082号公報
しかしながら、多値化技術によって大容量化された多値メモリデバイスは信頼性が低いという問題がある。以下、図29〜図31を用いて、多値化技術の問題点を説明する。
図29は2値型メモリセルと4値型メモリセルのマージンを示す図であり、図30は2値型メモリセルのセル分布と閾値の関係を示す図であり、図31は4値型メモリセルのセル分布と閾値の関係を示す図である。
図29に示すように2値型メモリセルは、“0”と“1”を判定する電圧の閾値に十分なマージンがあるために、データ反転の可能性が低く、高信頼性を実現している。一方、4値型メモリセルは、“00”、“01”、“10”、“11”を判定する電圧の閾値に十分なマージンがないため、データ反転の可能性が高く、信頼性が低い。
具体的には、図30に示すような2値型メモリセルの場合、閾値Ref−1、Ref−2、Ref−3のうち、Ref−2を閾値として、電圧がRef−2よりも低ければ電圧がLevel−0であってもLevel−1であってもデータは“1”と判定され、電圧がRef−2よりも高ければ電圧がLevel−2であってもLevel−3であってもデータは“0”と判定される。これに対し、図31に示すような4値型メモリセルの場合、電圧がRef−1よりも低ければデータは“11”と判定され、電圧がRef−1より高く且つRef−2より低ければデータは“10”と判定され、電圧がRef−2より高く且つRef−3より低ければデータは“01”と判定され、電圧がRef−3より高ければデータは“00”と判定される。このため、2値型メモリセルのように電圧がLevel−0であってもLevel−1であっても同じデータと判定されることがない。例えば、“11”のデータを書き込むべきメモリセルに、Level−1の電圧で印加されると、そのメモリセルのデータは読み出し時に“10”と判定されてしまう。なお、図30に示すRef−2及びRef−3は、4値型メモリセルと比較するために図示しているものであり、2値型メモリセルにおいては実際にはRef−2のみが閾値として存在する。
上述のように多値メモリデバイスは大容量化を実現しているが記憶されたデータの信頼性は低い。しかし、画像や映像などのユーザデータの大容量化によって、より大容量なメモリデバイスが求められていることから、高い信頼性と大容量を実現するメモリデバイスが必要とされている。
本発明は上述した問題点を解決するためになされたものであり、管理情報に基づいて2値または多値によりデータを保存する半導体記憶装置、制御装置、制御方法を提供することを目的とする。
上述した課題を解決するため、半導体記憶装置は、データを記憶することができる複数のセルと、データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を2値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部とを備える。
また、制御装置は、データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する装置であって、データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を2値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部とを備える。
また、制御方法は、データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する方法であって、データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を2値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定ステップと、前記閾値決定ステップにより決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込みステップとを実行する。
実施の形態1に係る情報処理装置を示す図である。 実施の形態1に係る情報処理装置のハードウェア構成を示す図である。 実施の形態1に係るNANDフラッシュメモリの構成を示すブロック図である。 コントロールICの構成を示すブロック図である。 NANDフラッシュアレイを構成する複数のセルを示す回路図である。 センスアンプ/コンパレータ回路を示す回路図である。 センスアンプ/コンパレータ回路を示す回路図である。 NANDフラッシュアレイに格納されるデータの構成を示す図である。 設定テーブルを示す図である。 ファイルシステム識別処理の動作を示すフローチャートである。 実施の形態1に係る書き込み処理の動作を示すフローチャートである。 属性情報識別処理の動作を示すフローチャートである。 切り替え処理の動作を示すフローチャートである。 電源投入時に変換処理を行う処理の動作を示すフローチャートである。 アイドル時に変換処理を行う処理の動作を示すフローチャートである。 一定時間コマンドがない時に変換処理を行う処理の動作を示すフローチャートである。 変換処理の動作を示すフローチャートである。 書き換え処理の動作を示すフローチャートである。 サブディレクトリチェック処理の動作を示すフローチャートである。 2値と多値それぞれの使用量を送信する処理の動作を示すフローチャートである。 2値の使用量を多値の使用量に変換してホストに送信する処理の動作を示すフローチャートである。 空き容量算出処理の動作を示すフローチャートである。 空き容量以上のデータに対してエラーを返す処理の動作を示すフローチャートである。 閾値補正処理の動作を示すフローチャートである。 実施の形態2における書き込み処理の動作を示すフローチャートである。 実施の形態3における書き込み処理の動作を示すフローチャートである。 実施の形態4における書き込み処理の動作を示すフローチャートである。 2値型メモリセル、4値型メモリセル及び8値型メモリセルに保存されるビットを示す図である。 2値型メモリセルと4値型メモリセルのマージンを示す図である。 2値型メモリセルのセル分布と閾値の関係を示す図である。 4値型メモリセルのセル分布と閾値の関係を示す図である。
以下、本発明の実施の形態の例について図面を参照しつつ説明する。
実施の形態1.
まず、本実施の形態に係る情報処理装置について図面を参照しつつ説明する。図1は、本実施の形態に係る情報処理装置を示す図であり、図2は、本実施の形態に係る情報処理装置のハードウェア構成を示す図である。
図1に示すように、本実施の形態に係る情報処理装置1は補助憶装置としてNANDフラッシュメモリ10を搭載するパーソナルコンピュータである。また、図2に示すように、情報処理装置1は、主記憶装置であるメモリ14、中央演算装置であるCPU13を備える。また情報処理装置1は、CPU13、メモリ14等との間で高速に情報通信および制御を行うチップセット(North Bridge)11、周辺機器の最も低レベルの入出力を制御するプログラム群を格納したBIOS19を備える。
また、情報処理装置1は、上述以外にも、CPU13、メモリ14に比べ比較的低速な周辺機器間の情報通信および制御を行うチップセット(South Bridge)12、音源の出力制御をするオーディオボード17、USB対応機器またはPCIバス対応機器との接続を行うUSB/PCIインターフェイス18、ネットワークボードとの接続を行い外部との通信を可能にするLANインターフェイス16、NANDフラッシュメモリ10を備える。また、NANDフラッシュメモリ10は不揮発性メモリであるNANDフラッシュアレイ101とNANDフラッシュメモリを制御するコントロールIC20を備える。なお、情報処理装置1はパーソナルコンピュータに限らず、例えば携帯電話やPDAなどの記憶装置を必要とする機器であればどんなものであっても良い。
次に、本実施の形態に係るNANDフラッシュメモリについて説明する。図3は本実施の形態に係るNANDフラッシュメモリの構成を示すブロック図である。
NANDフラッシュメモリ10は、NANDフラッシュアレイ101(複数のセル、半導体記憶装置)、Xデコーダ102、Yデコーダ103、センスアンプ/コンパレータ回路104、アドレスレジスタ/カウンタ105、コマンドレジスタ106、入出力バッファ107、コントロールIC20(制御装置、閾値決定部、検出部、閾値変換部、閾値補正部、書き込み部)を備えるものである。
NANDフラッシュアレイ101は、複数のセルからなる不揮発性メモリである。また、Xデコーダ102は、NANDフラッシュアレイ101を構成する2次元に配列された複数のセルの行方向の選択を行うものである。また、Yデコーダ103は、複数のセルの列方向の選択を行うものである。また、センスアンプ/コンパレータ回路104は、入力された電圧を所定の閾値に基づいてデジタル情報に変換するものである。また、アドレスレジスタ/カウンタ105は、NANDフラッシュアレイ101にアクセスする際にアドレスを指定するものである。また、コマンドレジスタ106は、受信したコマンドを保持するものである。また、入出力バッファ107は、ホストとしての情報処理装置1とのデータ及びアドレスの入出力におけるデータを一時的に記憶する記憶領域である。また、コントロールIC20は、NANDフラッシュメモリ10を制御するものである。
また、コマンドレジスタ106及びコントロールIC20は、入出力用の制御信号として、コマンドラッチイネーブル信号、アドレスラッチイネーブル信号、チップイネーブル信号、リードイネーブル信号、ライトイネーブル信号、ライトプロテクト信号をホストから受信し、これらの信号の組合せをコマンドとする。また、コントロールIC20はレディ・ビジー信号及びエラー信号を出力するものである。
次にコントロールICについて説明する。図4はコントロールICの構成を示すブロック図である。
コントロールIC20は、ホストインターフェイスユニット201、コントロールレジスタ202、バッファ203、ECCユニット204、NANDインターフェイスユニット205、マイクロプロセッサ206、ROM207、RAM208を備えるものである。
また、ホストインターフェイスユニット201は、ホストとコマンドの送受信を行うものである。また、コントロールレジスタ202は、各種パラメータを保持する領域である。また、NANDインターフェイスユニット205は、NANDフラッシュアレイ101とコマンドの送受信を行うものである。また、バッファ203は、NANDインターフェイスユニット205によりNANDフラッシュアレイ101から読み出されたコマンドと、ホストインターフェイスユニットによりホストから受信したコマンドを一時的に保持する領域である。また、ECCユニット204は、データの書き込み時にECCを生成し、データの読み出し時にECCに基づいてデータの誤りを検出し訂正するものである。
また、マイクロプロセッサ206は、コントロールIC20全体を制御するものである。また、ROM207は、マイクロプロセッサ206が処理を行うためのファームウェアが記憶されているものである。また、RAM208は、マイクロプロセッサ206が使用するメモリである。
次に、NANDフラッシュアレイを構成する複数のセルとセンスアンプ/コンパレータ回路について説明する。図5は、NANDフラッシュアレイを構成する複数のセルを示す回路図である。また、図6及び図7はセンスアンプ/コンパレータ回路を示す回路図である。
図5に示すように、NANDフラッシュアレイ101は、ビット線とソース線によりセルのコントロールゲートに正の電圧を加え、電子がフローティングゲートに蓄えられることによりデータの書き込みを行う。また、ビット線とソース線は複数のセル単位で接続されているため、NANDフラッシュアレイ101は、複数のセルにより構成されたセルグループ単位でデータを書き込む。
また、セルに接続されたセンスアンプ/コンパレータ回路104は、図6に示すように、設定された閾値(Ref−1〜Ref−3)と入力された電圧を比較して結果を出力するセンスアンプ104a〜104cとセンスアンプ104a〜104cによる出力結果を比較してデジタルデータに変換するコンパレータ回路104dにより構成される。また、コンパレータ回路104dは、コントロールIC20より送信されるMLC信号により、2値または4値を切り替えることができ、MLC信号を受信しない場合、図30に示したように、電圧がRef−2よりも低いと“1”を出力し、電圧がRef−2より高いと“0”を出力するが、理想的な電圧はRef−3より高い電圧、またはRef−1より低い電圧であり、2値においてそれ以外の電圧が印加されている場合、コンパレータ回路はRef−2を閾値としてデータを出力するが、セルが劣化していると見做し、コントロールIC20に対してエラーを返す。
また、コンパレータ回路104dは、MLC信号を受信した場合、図31に示したように、電圧がRef−1より低いと“11”を出力し、電圧がRef−1より高く且つRef−2よりも低いと“10”を出力し、電圧がRef−2より高く且つRef−3よりも低いと“01”を出力し、電圧がRef−3より高いと“00”を出力する。
また、センスアンプ/コンパレータ回路104は、図7に示すように、MLC信号を受信した場合にのみ、センスアンプ104a及びセンスアンプ104cに比較結果を出力させる構成であっても良い。
次に、NANDフラッシュアレイに格納されるデータの構成について説明する。図8は、NANDフラッシュアレイに格納されるデータの構成を示す図である。
NANDフラッシュメモリ10において読み書きされるデータは、図8に示すように、データ領域にセクタ単位で格納され、冗長領域にそれぞれのセクタに対応する冗長データであるスペアが格納される。また、セクタA〜Dとそれぞれのセクタに対応するスペアA’〜D’により構成されるブロック単位でデータが消去される。また、それぞれのセクタのスペアは、対応するセクタの番号を示すデータであるLSN(Logical Sector Number)と、バリディティチェックのためのデータであるDV(Data Validity)と、セルの劣化によりデータの記録ができない不良ブロックであることを示すBBI(Bad Block Infomation)と、セクタの誤り訂正符号であるECC(Error Correction Code for Data Field)と、スペアの誤り訂正符号であるECCS(Error Correction Code for Spare Field)と、4値でデータが保存されていることを示すフラグであるMLCフラグ(Multi Level Cell Flag)と、セクタにデータが書き込まれた回数を示すWF(Write Frequency)と、センスアンプ/コンパレータ回路104からエラーが返されたセクタであることを示すEIが書き込まれている。
なお、MLCフラグはYまたはNに設定され、Yはセクタが4値で保存されていることを示し、Nはセクタが2値で保存されていることを示す。また、EIは0または1に設定され、0は閾値に関してセクタに問題がないことを示し、1は閾値に関してセクタに問題があることを示し、初期状態は0である。
次に、NANDフラッシュアレイに格納されている設定テーブルについて説明する。図9は設定テーブルを示す図である。
NANDフラッシュアレイ101には、図9に示すような設定テーブルが格納されている。設定テーブルはNANDフラッシュアレイ101のファイルシステムに応じた属性情報と、書き込みモードが対応付けられて格納されている。この書き込みモードは2値での保存を意味するSLC(Single Level Cell)または4値での保存を意味するMLC(Multi Level Cell)に設定される。また、この設定テーブルによれば、データの属性情報がArchiveの場合にのみ、データは4値でNANDフラッシュアレイ101に保存される。
なお、この設定テーブルはファイルシステムとしてFAT16に対応したものであるが、様々なファイルシステムに対して用意されているものとする。また、この設定テーブルはコントロールIC20のROM207に格納されていても良い。
次に、本実施の形態に係るNANDフラッシュメモリの動作について説明する。コントロールIC20のマイクロプロセッサ206はデータの属性情報を識別するために、まず、NANDフラッシュアレイのファイルシステムを識別する。図10はファイルシステム識別処理の動作を示すフローチャートである。
まず、マイクロプロセッサ206は、NANDインターフェイスユニット205にNANDフラッシュアレイ101からファイルシステムの種類を示す情報であるパーティションテーブルの5thByteを読み込ませ(S101)、5thByteが01hであるかどうかを判断する(S102)。
thByteが01hではない場合(S102,NO)、マイクロプロセッサ206は、5thByteが04hであるかどうかを判断する(S103)。
thByteが04hではない場合(S103,NO)、マイクロプロセッサ206は、5thByteが06hであるかどうかを判断する(S104)。
thByteが06hではない場合(S104,NO)、マイクロプロセッサ206は、5thByteが07hであるかどうかを判断する(S105)。
thByteが07hではない場合(S105,NO)、マイクロプロセッサ206は、5thByteが0Chであるかどうかを判断する(S106)。
thByteが0Chではない場合(S106,NO)、マイクロプロセッサ206は、処理を終了する。
一方、5thByteが0Chである場合(S106,YES)、マイクロプロセッサ206は、ファイルの属性情報を判断するための設定テーブルとしてFAT32に準じた設定テーブルをNANDフラッシュアレイ101から読み込んでRAMに格納する(S111)。
また、ステップS105の判断において、5thByteが07hである場合(S105,YES)、マイクロプロセッサ206は、ファイルの属性情報を判断するための設定テーブルとしてNTFSに準じた設定テーブルをNANDフラッシュアレイ101から読み込んでRAMに格納する(S110)。
また、ステップS104の判断において、5thByteが06hである場合(S104,YES)、マイクロプロセッサ206は、ファイルの属性情報を判断するための設定テーブルとしてFAT16(32MB〜2GB)に準じた設定テーブルをNANDフラッシュアレイ101から読み込んでRAMに格納する(S109)。
また、ステップS103の判断において、5thByteが04hである場合(S103,YES)、マイクロプロセッサ206は、ファイルの属性情報を判断するための設定テーブルとしてFAT16(〜32MB)に準じた設定テーブルをNANDフラッシュアレイ101から読み込んでRAMに格納する(S108)。
また、ステップS102の判断において、5thByteが01hである場合(S102,YES)、マイクロプロセッサ206は、ファイルの属性情報を判断するための設定テーブルとしてFAT12に準じた設定テーブルをNANDフラッシュアレイ101から読み込んでRAMに格納する(S107)。
以上の動作によって、マイクロプロセッサ206はNANDフラッシュアレイ101のファイルシステムを識別し、ファイルシステムに応じた設定テーブルをRAMにセットする。また、上述したファイルシステムは一例であり、NANDフラッシュメモリ10に格納するOSや環境に応じて、コントロールIC20が対応するファイルシステムがあらかじめ設定されていても良い。また、本実施の形態において、NANDフラッシュアレイ101のファイルシステムはFAT16(32MB〜2GB)とする。
上述の動作により予め適切なファイルシステムが設定されたNANDフラッシュメモリ10にホストからデータの書き込みを指示する書き込みコマンドが送信された場合、マイクロプロセッサ206は以下に説明する書き込み処理を実行する。図11は、書き込み処理の動作を示すフローチャートである。
まず、マイクロプロセッサ206は、ホストインターフェイスユニット201を介してホストから書き込みコマンドを受信すると(S201)、セクタの番号であるLSNを参照し(S202)、LSNがルートディレクトリ領域を示す番号であるかどうかを判断する(S203)。
LSNがルートディレクトリ領域を示す番号である場合(S203,YES)、マイクロプロセッサ206は、後述する属性情報識別処理を実行し(S204,閾値決定ステップ)、設定テーブルにおいて、属性情報が4値に設定されている属性、つまりArchiveであるかどうかを判断する(S205,閾値決定ステップ)。
属性情報がArchiveである場合(S205,YES)、マイクロプロセッサ206はNANDインターフェイスユニット205を介して、入出力バッファ107内にストアされたデータを4値でNANDフラッシュアレイ101に保存させ(S206,書き込みステップ)、NANDフラッシュアレイ101に書き込まれたデータのセクタの冗長データであるスペアのMLCフラグをYに設定し(S207)、入出力バッファ107にストアされているディレクトリデータをNANDフラッシュアレイ101に保存させる(S208)。
また、ステップS205の判断において、属性情報がArchiveではない場合(S205,NO)、マイクロプロセッサ206は、NANDインターフェイスユニット205を介して、入出力バッファ内にストアされたデータを2値でNANDフラッシュアレイ101に保存させ(S211,書き込みステップ)、NANDフラッシュアレイ101に書き込まれたデータのMLCフラグをNに設定し(S212)、入出力バッファ107にストアされているディレクトリデータをNANDフラッシュアレイ101に保存させる(S208)。
また、ステップS203の判断において、LSNがルートディレクトリ領域を示す番号ではない場合(S203,NO)、マイクロプロセッサ206は、入出力バッファにストアされたデータの12thByteの5thbitを参照し(S209)、12thByteの5thbitが1であるかどうかを判断する(S210)。
12thByteの5thbitが1である場合(S210,YES)、マイクロプロセッサ206は後述する属性情報識別処理を実行する(S204)。
一方、12thByteの5thbitが1ではない場合(S210,NO)、マイクロプロセッサ206は、NANDインターフェイスユニット205を介して、入出力バッファ内にストアされたデータを2値でNANDフラッシュアレイ101に保存させ(S211)、NANDフラッシュアレイ101に書き込まれたデータのMLCフラグをNに設定し(S212)、入出力バッファ107にストアされているディレクトリデータをNANDフラッシュアレイ101に保存させる(S208)。
次に、図11のステップS204の処理にあたる属性情報識別処理について説明する。図12は、属性情報識別処理の動作を示すフローチャートである。なお、図12において、コントロールICはすでに書き込みコマンドを受信し、データは入出力バッファにストアされているものとする。
まず、マイクロプロセッサ206は、入出力バッファ107にストアされているディレクトリデータの12thByteを参照し(S301)、12thByteの1stBitが1かどうかを判断する(S302)。
stBitが1ではない場合(S302,NO)、マイクロプロセッサ206は、12thByteの2ndBitが1かどうかを判断する(S303)。
ndBitが1ではない場合(S303,NO)、マイクロプロセッサ206は、12thByteの3rdBitが1かどうかを判断する(S304)。
rdBitが1ではない場合(S304,NO)、マイクロプロセッサ206は、12thByteの4thBitが1かどうかを判断する(S305)。
thBitが1ではない場合(S305,NO)、マイクロプロセッサ206は、12thByteの5thBitが1かどうかを判断する(S306)。
thBitが1ではない場合(S306,NO)、マイクロプロセッサ206は、12thByteの6thBitが1かどうかを判断する(S307)。
thBitが1ではない場合(S307,NO)、マイクロプロセッサ206は、属性情報識別処理を終了する。
一方、6thBitが1である場合(S307,YES)、マイクロプロセッサ206は、属性情報をArchiveとする(S313)。
また、ステップS306の判断において、5thBitが1である場合(S306,YES)、マイクロプロセッサ206は、属性情報をDirectlyとする(S312)。
また、ステップS305の判断において、4thBitが1である場合(S305,YES)、マイクロプロセッサ206は、属性情報をVolume Labelとする(S311)。
また、ステップS304の判断において、3rdBitが1である場合(S304,YES)、マイクロプロセッサ206は、属性情報をHiddenとする(S310)。
また、ステップS303の判断において、2ndBitが1である場合(S303,YES)、マイクロプロセッサ206は、属性情報をSystemとする(S309)。
また、ステップS302の判断において、1stBitが1である場合(S302,YES)、マイクロプロセッサ206は、属性情報をRead Onlyとする(S308)。
上述したように、予め設定された属性情報に基づいてデータの保存を2値または4値で行うことによって、例えばシステムデータなどの高い信頼性を必要とするデータを2値で保存しつつ、例えばユーザデータのような高い信頼性を必要としないデータを4値で保存することができ、高い信頼性と大容量を同時に実現することができる。また、データの重要度に応じて2値、4値、8値と段階的に保存方法を切り替えても良い。
次に、2値または4値でNANDフラッシュアレイに保存されたデータの読み出しにおける2値、4値の切り替え処理について説明する。図13は、切り替え処理の動作を示すフローチャートである。
まず、ホストインターフェイスユニット201がホストから読み出しコマンドを受信すると(S401)、マイクロプロセッサ206は、NANDインターフェイスユニット205を介して、読み出しコマンドにより指定されたNANDフラッシュアレイに格納されたデータのMLCフラグを参照し(S402)、MLCフラグの値がYであるかどうかを判断する(S403)。
MLCフラグの値がYである場合(S403,YES)、マイクロプロセッサ206は、NANDインターフェイスユニット205を介して、MLC信号をセンスアンプ/コンパレータ回路104に送信する(S404)。
一方、MLCフラグの値がYではない場合(S403,NO)、マイクロプロセッサ206は、処理を終了する。
上述したように、マイクロプロセッサ206は、データのMLCフラグを参照して、データの保存方法を判断し、図6及び図7で説明したように4値の場合にMLC信号をセンスアンプ/コンパレータ回路104に送ることで2値と4値を切り替える。また、読み出されたデータは入出力バッファ107を介してホストへ送信される。
次に、2値で書き込まれたデータを4値に変換する変換処理について図14〜図19を用いて説明する。図14は、電源投入時に変換処理を行う処理の動作を示すフローチャートである。
まず、情報処理装置1の電源が投入されると、コントロールIC20がリセットされ(S501)、リセットされたコントロールICのマイクロプロセッサ206は論理・物理マッピングテーブルを生成し(S502)、後述する変換処理を実行する(S503)。
図15は、アイドル時に変換処理を行う処理の動作を示すフローチャートである。
まず、マイクロプロセッサ206はステータスレジスタを読み込み(S601)、ステータスレジスタがアイドル状態であることを示す値RDYであるかどうかを判断する(S602)
ステータスレジスタがRDYである場合(S602,YES)、マイクロプロセッサ206は後述する変換処理を実行する(S603)。
一方ステータスレジスタがRDYではない場合(S602,NO)、マイクロプロセッサは処理を終了する。なお、本実施の形態において、ステータスレジスタの値は情報処理装置1のCPUのステータスレジスタから取得しても、マイクロプロセッサ206のステータスレジスタから取得しても構わない。
図16は、一定時間コマンドがない時に変換処理を行う処理の動作を示すフローチャートである。
まず、マイクロプロセッサ206は、ステータスレジスタを読み込み(S701)、ステータスレジスタがRDYであるかどうかを判断する(S702)。
ステータスレジスタがRDYである場合(S702,YES)、マイクロプロセッサ206はタイマをスタートして所定の時間待機し(S703)、ステータスレジスタがRDYであるかどうかを判断する(S704)。
ステータスレジスタがRDYである場合(S704,YES)、マイクロプロセッサ206は変換処理を実行する(S705)。
一方、ステータスレジスタがRDYではない場合(S704,NO)、マイクロプロセッサ206は処理を終了する。
また、ステップS702の判断において、ステータスレジスタがRDYではない場合(S702,NO)、マイクロプロセッサ206は処理を終了する。
図14〜図15に示したように、マイクロプロセッサ206は所定の条件をトリガとして変換処理を実行する。図17は、図14のステップS503、図15のステップS603、図16のステップS705にあたる変換処理の動作を示すフローチャートである。
まず、マイクロプロセッサ206は、NANDフラッシュアレイ101のルートディレクトリ領域から32Byteを読み込み(S801)、読み込んだ32Byteの1stByteが00hまたはE5hであるかどうかを判断する(S802)。
stByteが00hまたはE5hである場合(S802,YES)、マイクロプロセッサ206は、読み込んだ32Byteがルートディレクトリ領域の最後尾であるかどうかを判断する(S803)。
32Byteがルートディレクトリ領域の最後尾である場合(S803,YES)、マイクロプロセッサ206は処理を終了する。
一方、読み込んだ32Byteがルートディレクトリ領域の最後尾ではない場合(S803,NO)、マイクロプロセッサ206は、カレントポインタに32Byte足したものをリードポインタとして(S807)、再びルートディレクトリ領域から32Byte読み込む(S801)。
また、ステップ802の判断において、1stByteが00hまたはE5hのいずれでもない場合(S802,NO)、マイクロプロセッサ206は後述する書き換え処理を実行し(S804)、12thByteの5thbitが1であるかどうかを判断する(S805)。
12thByteの5thbitが1である場合(S805,YES)、マイクロプロセッサ206は後述するサブディレクトリチェック処理を実行し(S806)、読み込んだ32Byteがルートディレクトリ領域の最後尾であるかどうかを判断する(S803)。
一方、12thByteの5thbitが1でない場合(S805,NO)、マイクロプロセッサ206は読み込んだ32Byteがルートディレクトリ領域の最後尾であるかどうかを判断する(S803)。
次に、上述した変換処理における書き換え処理の動作を説明する。図18は、書き換え処理の動作を示すフローチャートである。なお、以下に説明する処理は図17におけるステップS804にあたり、すでにルートディレクトリ領域から32Byteが読み込まれているものとする。
まず、マイクロプロセッサ206は、26thByte〜27thByteからクラスタアドレスNを参照し(S901)、クラスタアドレスNが指定するデータのMLCフラグを読み込み(S902)、MLCフラグがYかどうかを判断する(S903)。
MLCフラグがYである場合(S903,YES)、マイクロプロセッサ206は、クラスタアドレスNが最後のクラスタを示すFFF8h以上、FFFFh以下かどうかを判断する(S904)。
クラスタアドレスNがFFF8h以上、FFFFh以下場合(S904,YES)、マイクロプロセッサ206はクラスタアドレスNからデータの次のクラスタアドレスNを読み込み(S908)、再度MLCフラグを読み込む(S902)。
一方、クラスタアドレスNがFFF8h以上、FFFFh以下ではない場合(SS904,NO)、マイクロプロセッサ206は処理を終了する。
また、ステップS903の判断において、MLCフラグがYではない場合(S903,NO)、マイクロプロセッサ206はNANDインターフェイスユニット205を介して、センスアンプ/コンパレータ回路104にフラッシュアレイからデータを読み出させ、読み出したデータを入出力バッファ107に格納させ、NANDフラッシュアレイ101に4値でデータを書き込み(S906)、MLCフラグをYに設定し(S907)、クラスタアドレスNが最後のクラスタを示すFFF8h以上、FFFFh以下かどうかを判断する(S904)。
次に、上述した変換処理におけるサブディレクトリチェック処理の動作を説明する。図19は、サブディレクトリチェック処理の動作を示すフローチャートである。なお、以下に説明する処理は図17におけるステップS806にあたり、すでにルートディレクトリ領域あるいは図19のサブディレクトリ領域から32Byte読み込まれているものとする。
まず、マイクロプロセッサ206は、26thByte〜27thByteからクラスタアドレスNを参照し(S1001)、クラスタアドレスNが指定するサブディレクトリ領域から32Byteを読み込み(S1002)、1stByteが00hまたはE5hであるかどうかを判断する(S1003)。
stByteが00hまたはE5hである場合(S1003,YES)、マイクロプロセッサ206は、クラスタアドレスNがFFF8h以上、FFFFh以下かどうかを判断する(S1004)。
クラスタアドレスNがFFF8h以上、FFFFh以下である場合(S1004,YES)、マイクロプロセッサ206は処理を終了する。
一方、クラスタアドレスNがFFF8h以上、FFFFh以下でない場合(S1004,NO)、マイクロプロセッサ206は、クラスタアドレスNからサブディレクトリの次のクラスタアドレスNを読み込み(S1007)、再度サブディレクトリ領域から32Byteを読み込む(S1002)。
また、ステップS1003の判断において、1stByteが00hまたはE5hではない場合(S1003,NO)、マイクロプロセッサ206は上述した書き換え処理を実行し(S1005)、12thByteの5thbitが1であるかどうかを判断する(S1006)。
12thByteの5thbitが1である場合(S1006,YES)、マイクロプロセッサ206は、26thByte〜27thByteから次のサブディレクトリのクラスタアドレスNを読み込む(S1001)。
一方、12thByteの5thbitが1でない場合(S1006,NO)、マイクロプロセッサ206は、クラスタアドレスNがFFF8h以上、FFFFh以下かどうかを判断する(S1004)。
上述した処理によって、NANDフラッシュメモリ10は2値で書き込まれたデータを4値で書き込み直すことができる。なお、2値で書き込まれたデータを4値で書き込み直す場合について説明したが、4値で書き込まれたデータを2値で書き込み直しても良い。
次に、本実施の形態に係るNANDフラッシュメモリの使用量をホストへ送信する処理について説明する。図20は、2値と多値それぞれの使用量を送信する処理の動作を示すフローチャートである。
まず、マイクロプロセッサ206は、ホストインターフェイスユニット201を介してホストから読み出しコマンドを受信すると(S1101)、LSNをカウントする変数SN、2値で保存されたセクタをカウントする変数S、4値で保存されたセクタをカウントする変数Mのそれぞれに0をセットし(S1102)、NANDインターフェイスユニット205を介してLSNSNのMLCフラグを読み込み(S1103)、MLCフラグがYかどうかを判断する(S1104)。
MLCフラグがYではない場合(S1104,NO)、マイクロプロセッサ206は、MLCフラグがNかどうかを判断する(S1105)。
MLCフラグがNではない場合(S1105,NO)、マイクロプロセッサ206は変数SNに1を加算し(S1106)、変数SNの値がNANDフラッシュアレイ101のセクタの最大値より大きいかどうかを判断する(S1107)。
変数SNの値がNANDフラッシュアレイ101のセクタの最大値より大きい場合(S1107,YES)、マイクロプロセッサ206は、ホストインターフェイスユニット201を介して変数Mの値をホストへ送信し(S1108)、ホストインターフェイスユニット201を介して変数Sの値をホストへ送信する(S1109)。
一方、変数SNの値がNANDフラッシュアレイ101のセクタの最大値以下である場合(S1107,NO)、マイクロプロセッサ206は、再度NANDインターフェイスユニット205を介してLSNSNのMLCフラグを読み込む(S1103)。
また、ステップS1105の判断において、MLCフラグがNである場合(S1105,YES)、マイクロプロセッサ206は、変数Sに1を加算し(S1111)、変数SNに1を加算する(S1106)。
また、ステップS1104の判断において、MLCフラグがYである場合(S1104,YES)、マイクロプロセッサ206は、変数Mに1を加算し(1110)、変数SNに1を加算する(S1106)。
上述のように2値で書き込まれたセクタと、4値で書き込まれたセクタのそれぞれの数を送信することで、ホストは変数M、変数S、セクタの情報量に基づいて、2値、4値それぞれのNANDフラッシュメモリ10の使用量を算出することができる。また、本実施の形態に係るNANDフラッシュメモリ10は2値の使用量を多値の使用量に変換してホストに送信することができる。図21は、2値の使用量を多値の使用量に変換してホストに送信する処理の動作を示すフローチャートである。なお、ステップS1101〜ステップS1111については、図20と同様の処理であるため説明を省略し、ステップS1112〜ステップS1114について説明する。
ステップS1107の判断において、変数SNの値がNANDフラッシュアレイ101のセクタの数より大きい場合(S1107,YES)、マイクロプロセッサ206は、変数Sの値を2倍し(S1112)、変数Mの値に変数Sの値を加算し(S1113)、ホストインターフェイスユニット201を介して変数Mの値をホストへ送信する(S1114)。
上述のように、2値でデータが保存されているセクタの数を2倍し、4値でデータが保存されているセクタの数に加算することで、4値の使用量を算出することができる。また、4値でデータが保存されているセクタの数を2で割り、2値でデータが保存されているセクタの数に加算することで、2値の使用量を算出することができる。
次に、空き容量算出処理について説明する。図22は、空き容量算出処理の動作を示すフローチャートである。
まず、マイクロプロセッサ206は、ホストインターフェイスユニット201を介して、読み出しコマンドをホストから受信し(S1201)、LSNをカウントする変数SN、データバリディティがValidであるセクタをカウントする変数V、空き容量を示す変数Eのそれぞれに0をセットし(S1202)、NANDインターフェイスユニット205を介してLSNSNのデータバリディティを読み込み(S1203)、データバリディティがValidかどうかを判断する(S1204)。
データバリディティがValidではない場合(S1204,NO)、マイクロプロセッサ206は、変数SNに1を加算し(S1205)、変数SNの値がメモリセルアレイ101のセクタの総数より大きいかどうかを判断する(S1106)。
変数SNの値がNANDフラッシュアレイ101のセクタの最大値より大きい場合(S1206,YES)、セクタの最大値からVの値を減算してEの値とし(S1207)、Eの値を2で割り(S1208)、Eの値をホストへ送信する(S1209)。
一方、変数SNの値がNANDフラッシュアレイ101のセクタの最大値以下である場合(S1206,NO)、マイクロプロセッサ206は、再度NANDインターフェイスユニット205を介してLSNSNのデータバリディティを読み込む(S1203)。
また、ステップ1204において、データバリディティがValidである場合(S1204,YES)、マイクロプロセッサ206は、Vの値に1を加算し(S1210)、SNの値に1を加算する(S1205)。
上述の動作によりNANDフラッシュメモリ10は、NANDフラッシュアレイ101に2値で書き込む場合の空き容量を算出することができる。この2値で書き込む場合の空き容量を利用することによって、2値でデータが書き込まれる場合に空き容量以上の情報量のデータが書き込まれる場合に、ホストに対してエラーを送信することができる。図23は空き容量以上のデータに対してエラーを返す処理の動作を示すフローチャートである。
まず、マイクロプロセッサ206は、ホストインターフェイスユニット201を介して、ホストから書き込みコマンドを受信し(S1301)、空き容量をチェックし(S1302)、変数Eに空き容量を代入し(S1303)、ホストより送信されたデータがEの値より大きいかどうかを判断する(S1304)。
ホストより送信されたデータがEの値以下である場合(S1304,NO)、マイクロプロセッサ206は、NANDインターフェイスユニット205を介して、NANDフラッシュアレイ101にデータを書き込む(S1305)。
一方、ホストより送信されたデータがEの値よりも大きい場合(S1304,YES)、マイクロプロセッサ206は、ホストインターフェイスユニット201を介して、ホストにエラーを送信する(S1306)。
以上の動作によって、本実施の形態に係るNANDフラッシュメモリ10は、書き込むデータの属性情報に基づいて2値または4値での書き込みを切り替えることができる。
次に、閾値補正処理について説明する。この閾値補正処理は、例えば2値に設定していたある属性に対して、4値に設定し、以前に書き込まれたデータに関しては、現在の設定と食い違いが生じるような場合、書き込まれたデータの属性とMLCフラグと現在の設定テーブルに基づいて、2値で書き込まれたデータを4値で書き込みなおすものである。図24は、閾値補正処理の動作を示すフローチャートである。
まず、マイクロプロセッサ206は、ホストインターフェイスユニット201を介して、ホストから補正コマンドを受信し(S1701)、NANDフラッシュアレイ101に書き込まれているデータを参照し(S1702)、データがディレクトリデータかどうかを判断する(S1703)。
データがディレクトリデータだった場合(S1703,YES)、マイクロプロセッサ206は、データの属性情報を参照し(S1704)、属性が現在の設定において4値で書き込むべき属性、つまりArchiveであるかどうかを判断する(S1705,閾値変換ステップ)。
属性がArchiveではない場合(S1705,NO)、マイクロプロセッサ206は、ディレクトリデータをNANDフラッシュアレイ101に書き込ませる(S1706)。
一方、属性がArchiveである場合(S1705,YES)、マイクロプロセッサ206は、データのMLCフラグを参照し(S1708,閾値変換ステップ)、MLCフラグがYに設定されているかどうかを判断する(S1709,閾値変換ステップ)。
MLCフラグがYに設定されていない場合(S1709,NO)、マイクロプロセッサ206は、NANDフラッシュアレイ101に書き込まれたデータを入出力バッファ107にストアし(S1710)、ストアされたデータをNANDフラッシュアレイ101に4値で書き込ませ(S1711,閾値変換ステップ)、書き込んだデータのMLCフラグをYに設定し(S1712)、ディレクトリデータをNANDフラッシュアレイ101に書き込ませる(S1706)。
一方、MLCフラグがYに設定されている場合(S1709,YES)、マイクロプロセッサ206は、ディレクトリデータをNANDフラッシュアレイ101に書き込ませる(S1706)。
また、ステップS1703の判断において、データがディレクトリデータではない場合、マイクロプロセッサ206は、データをNANDフラッシュアレイ101に2値で書き込ませる(S1707)。
上述のように、属性とMLCフラグを比較することによって、例えば、2値で書き込むように設定されていた属性情報に対して、4値で書き込むように設定を変更した場合に、データが現在の設定に準じた値でNANDフラッシュアレイ101に保存される。なお、図24においては、2値のデータを4値に書き直す場合について説明したが、同様に2値で書き込むべきデータが4値で書き込まれていた場合、4値で書き込まれたデータを読み込み、2値でNANDフラッシュアレイ101に保存する。
実施の形態2.
実施の形態1に係るNANDフラッシュメモリは、属性情報に基づいて2値と4値を切り替えたが、本実施の形態に係るNANDフラッシュメモリは、NANDフラッシュアレイの空き容量に基づいて2値と4値を切り替える。なお、本実施の形態に係るNANDフラッシュメモリの構成は、実施の形態1に係るNANDフラッシュメモリと同様であり、動作のみが異なる。以下、実施の形態1に係るNANDフラッシュメモリと異なる動作について説明する。図25は、実施の形態2における書き込み処理の動作を示すフローチャートである。なお、本実施の形態において、NANDフラッシュメモリの容量は2値で32MBとし、2値での空き容量が16MB以下になった場合に、セルに書き込む値を4値に切り替えるものとする。
まず、マイクロプロセッサ206は、ホストインターフェイスユニット201を介してホストから書き込みコマンドを受信すると(S1401)、図22に示した空き容量算出処理を実行し(S1402)、空き容量が16MBより多いかどうかを判断する(S1403,閾値決定ステップ)。
空き容量が16MBより多い場合(S1403,YES)、マイクロプロセッサ206は、入出力バッファ107内にストアされたデータをNANDフラッシュアレイに2値で書き込ませ(S1404,書き込みステップ)、NANDフラッシュアレイ101に書き込まれたデータのセクタの冗長データであるスペアのMLCフラグをNに設定する(S1405)。
一方、空き容量が16MB以下である場合(S1403,NO)、マイクロプロセッサ206は、入出力バッファ107内にストアされたデータをNANDフラッシュアレイに4値で書き込ませ(S140,書き込みステップ)、NANDフラッシュアレイ101に書き込まれたデータのセクタの冗長データであるスペアのMLCフラグをYに設定する(S140)。
以上の動作によって、本実施の形態に係るNANDフラッシュメモリ10は、空き容量に基づいて、2値と4値を切り替え、空き容量が一定量より多い場合は信頼性の高い2値によってデータを書き込み、空き容量が一定量以下の場合はより大容量でデータを保存できる4値によってデータを書き込むことにより、信頼性と大容量を同時に実現することができる。
実施の形態3.
実施の形態2に係るNANDフラッシュメモリは、空き容量に基づいて2値と4値を切り替えたが、本実施の形態に係るNANDフラッシュメモリは、NANDフラッシュアレイのセルにおける書き込み回数に基づいて2値と4値とを切り替える。なお、本実施の形態に係るNANDフラッシュメモリの構成は、実施の形態1及び実施の形態2に係るNANDフラッシュメモリと同様であり、動作のみが異なる。以下、実施の形態2に係るNANDフラッシュメモリと異なる動作について説明する。図26は、実施の形態3における書き込み処理の動作を示すフローチャートである。なお、本実施の形態において、説明上、NANDフラッシュメモリの書き込み回数の限度は4000回とし、書き込み回数が2000より少なければ4値で書き込み、書き込み回数が2000以上になった場合、セルに書き込む値を2値に切り替えるものとする。
まず、マイクロプロセッサ206は、ホストインターフェイスユニット201を介してホストから書き込みコマンドを受信すると(S1501)、図8に示した書き込み回数を示す情報であるWFを参照し(S1502)、書き込み回数が2000回より少ないどうかを判断する(S1503,閾値決定ステップ)。
書き込み回数が2000回より少ない場合(S1503,YES)、マイクロプロセッサ206は、入出力バッファ107内にストアされたデータをNANDフラッシュアレイに4値で書き込ませ(S1504,書き込みステップ)、NANDフラッシュアレイ101に書き込まれたデータのセクタの冗長データであるスペアのMLCフラグをYに設定し(S1505)、MFに1を加算する(S1506)。
一方、書き込み回数が2000回以上である場合(S1503,NO)、マイクロプロセッサ206は、入出力バッファ107内にストアされたデータをNANDフラッシュアレイに2値で書き込ませ(S1507,書き込みステップ)、NANDフラッシュアレイ101に書き込まれたデータのセクタの冗長データであるスペアのMLCフラグをYに設定し(S1508)、MFに1を加算する(S1506)。
以上の動作によって、本実施の形態に係るNANDフラッシュメモリ10は、書き込み回数に基づいて、2値と4値を切り替えることにより、書き込み回数が少ないセルには4値で書き込み、書き込み回数が多いセル、つまり劣化が進んだセルには信頼性の高い2値に書き込むことにより、信頼性と大容量を同時に実現することができる。
実施の形態4.
実施の形態3に係るNANDフラッシュメモリは、書き込み回数に基づいて2値と4値を切り替えたが、本実施の形態に係るNANDフラッシュメモリは、NANDフラッシュアレイのセルのエラー状況に基づいて2値と4値とを切り替える。なお、本実施の形態に係るNANDフラッシュメモリの構成は、実施の形態1、実施の形態2及び実施の形態3に係るNANDフラッシュメモリと同様であり、動作のみが異なる。以下、実施の形態3に係るNANDフラッシュメモリと異なる動作について説明する。図27は、実施の形態4における書き込み処理の動作を示すフローチャートである。なお、本実施の形態におけるエラーは、上述したデータの読み出しにおいて、センスアンプ/コンパレータ回路により返されたエラーを指し、このエラーを受けたマイクロプロセッサ206は、エラーを受けたセクタの冗長データであるスペアのEIを1に設定する。
まず、マイクロプロセッサ206は、ホストインターフェイスユニット201を介してホストから書き込みコマンドを受信すると(S1601)、図8に示したエラー状況を示す情報であるEIを参照し(S1602)、EIが0であるかどうかを判断する(S1603,閾値決定ステップ)。
EIが0である場合(S1603,YES)、マイクロプロセッサ206は、入出力バッファ107内にストアされたデータをNANDフラッシュアレイに4値で書き込ませ(S1604,書き込みステップ)、NANDフラッシュアレイ101に書き込まれたデータのセクタの冗長データであるスペアのMLCフラグをYに設定する(S1605)。
一方、EIが0ではない場合(S1603,NO)、マイクロプロセッサ206は、入出力バッファ107内にストアされたデータをNANDフラッシュアレイに2値で書き込ませ(S1606,書き込みステップ)、NANDフラッシュアレイ101に書き込まれたデータのセクタの冗長データであるスペアのMLCフラグをNに設定する(S1507)。
以上の動作によって、本実施の形態に係るNANDフラッシュメモリ10は、エラーがないセルには4値でデータを書き込み、エラーがあるセル、つまり劣化が進んだセルに対しては2値でデータを書き込むことにより、信頼性と大容量を同時に実現することができる。
なお、上述した実施の形態1、実施の形態2、実施の形態3及び実施の形態4において、上述した処理をコントロールIC20のマイクロプロセッサ206が実行しているが、情報処理装置1が備えるCPUがこれらの処理を実行しても構わない。その際、処理結果としての各種パラメータはコントロールIC20のコントロールレジスタ202に一時的に格納されるものとする。また、2値と4値の切り替えは一例であって、例えば2値と8値などであっても良い。
以上説明したように、本発明を適用する事で、管理情報に基づいて2値または多値によりデータを保存することができる。

Claims (4)

  1. データを記憶することができる複数のセルと、
    前記データに付加された該データの属性を示す情報である属性情報を検出する検出部と、
    前記検出部により検出されたデータの属性情報に基づいて、前記複数のセルの夫々に書き込む値を2値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、
    前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部と
    前記複数のセルのうち前記データが記憶されたセルの閾値と、該データの属性情報に基づいて、現在の前記閾値決定部により決定される閾値とが一致しない場合、前記複数のセルに書き込まれたデータを読み出し、該データの属性情報に基づいて前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを再度書き込む閾値変換部と
    を備える半導体記憶装置。
  2. データを記憶することができる複数のセルと、
    前記複数のセルの空き容量を示す情報に基づいて、前記複数のセルの夫々に書き込む値を2値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、
    前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部と
    を備える半導体記憶装置。
  3. データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する制御装置であって、
    前記データに付加された該データの属性を示す情報である属性情報を検出する検出部と、
    前記検出部により検出されたデータの属性情報に基づいて、前記複数のセルの夫々に書き込む値を2値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、
    前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部と
    前記複数のセルのうち前記データが記憶されたセルの閾値と、該データの属性情報に基づいて、現在の前記閾値決定部により決定される閾値とが一致しない場合、前記複数のセルに書き込まれたデータを読み出し、該データの属性情報に基づいて前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを再度書き込む閾値変換部と
    を備える制御装置。
  4. データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する制御方法であって、
    前記データに付加された該データの属性を示す情報である属性情報を検出する検出ステップと、
    前記検出ステップにより検出されたデータの属性情報に基づいて、前記複数のセルの夫々に書き込む値を2値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定ステップと、
    前記閾値決定ステップにより決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込みステップと
    前記複数のセルのうち前記データが記憶されたセルの閾値と、該データの属性情報に基づいて、現在の前記閾値決定ステップにより決定される閾値とが一致しない場合、前記複数のセルに書き込まれたデータを読み出し、該データの属性情報に基づいて前記閾値決定ステップにより決定された閾値に基づいて、前記複数のセルに前記データを再度書き込む閾値変換ステップと
    を実行する制御方法。
JP2009549922A 2008-01-16 2008-01-16 半導体記憶装置、制御装置、制御方法 Expired - Fee Related JP5223869B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/050394 WO2009090731A1 (ja) 2008-01-16 2008-01-16 半導体記憶装置、制御装置、制御方法

Publications (2)

Publication Number Publication Date
JPWO2009090731A1 JPWO2009090731A1 (ja) 2011-05-26
JP5223869B2 true JP5223869B2 (ja) 2013-06-26

Family

ID=40885142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009549922A Expired - Fee Related JP5223869B2 (ja) 2008-01-16 2008-01-16 半導体記憶装置、制御装置、制御方法

Country Status (5)

Country Link
US (1) US7978513B2 (ja)
JP (1) JP5223869B2 (ja)
KR (1) KR101092823B1 (ja)
CN (1) CN101911207B (ja)
WO (1) WO2009090731A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11735265B2 (en) 2021-02-16 2023-08-22 Kioxia Corporation Nonvolatile semiconductor memory device and operating method thereof

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7843728B2 (en) * 2007-11-20 2010-11-30 Kabushiki Kaisha Toshiba Nonvolatile semiconductor storage device
CN101673245B (zh) 2008-09-09 2016-02-03 株式会社东芝 包括存储器管理装置的信息处理装置和存储器管理方法
JP2011186555A (ja) * 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置及び方法
US8392384B1 (en) * 2010-12-10 2013-03-05 Symantec Corporation Method and system of deduplication-based fingerprint index caching
JP5971509B2 (ja) 2011-08-30 2016-08-17 ソニー株式会社 情報処理装置および方法、並びに記録媒体
CN102324249B (zh) * 2011-09-09 2013-10-30 黑龙江大学 K值存储单元嵌入dram的二多转换电路及其构建方法
JP2013196673A (ja) * 2012-03-23 2013-09-30 Toshiba Corp メモリシステム
JP2014142986A (ja) * 2012-12-26 2014-08-07 Semiconductor Energy Lab Co Ltd 半導体装置
US8990458B2 (en) 2013-02-28 2015-03-24 Kabushiki Kaisha Toshiba Controller, semiconductor storage device and method of controlling data writing
KR102031191B1 (ko) * 2013-04-17 2019-10-11 에스케이하이닉스 주식회사 비휘발성 메모리 및 이의 부트업 동작 방법
US20150169228A1 (en) * 2013-12-12 2015-06-18 Sandisk Technologies Inc. System and method of storing data at a non-volatile memory
WO2018002999A1 (ja) * 2016-06-28 2018-01-04 株式会社日立製作所 記憶デバイス及びストレージ装置
US10381075B2 (en) * 2017-12-14 2019-08-13 Micron Technology, Inc. Techniques to access a self-selecting memory device
US20190034105A1 (en) * 2017-12-28 2019-01-31 Intel Corporation Storage device having programmed cell storage density modes that are a function of storage device capacity utilization
TWI700635B (zh) * 2018-04-26 2020-08-01 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
CN110442299B (zh) * 2018-05-03 2022-12-13 群联电子股份有限公司 数据写入方法、存储器控制电路单元以及存储器储存装置
US11301168B2 (en) * 2019-12-13 2022-04-12 Western Digital Technologies, Inc. Storage system and method for user-defined data archiving
JP7451809B2 (ja) 2022-02-17 2024-03-18 キオクシア株式会社 方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09288896A (ja) * 1996-04-19 1997-11-04 Toshiba Corp 記憶システム
JP2001357683A (ja) * 2001-05-07 2001-12-26 Toshiba Corp 記憶システム
JP2005503640A (ja) * 2001-09-17 2005-02-03 サンディスク コーポレイション 二進モードでの多状態不揮発性メモリシステムの選択的動作
WO2006046425A1 (ja) * 2004-10-29 2006-05-04 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及び不揮発性記憶システム
WO2007134277A2 (en) * 2006-05-15 2007-11-22 Apple Inc. Maintenance operations for multi-level data storage cells

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2910745B2 (ja) * 1997-09-30 1999-06-23 ソニー株式会社 記憶装置及びデータ処理方法
TW439293B (en) * 1999-03-18 2001-06-07 Toshiba Corp Nonvolatile semiconductor memory
JP4282197B2 (ja) 2000-01-24 2009-06-17 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US7554842B2 (en) 2001-09-17 2009-06-30 Sandisk Corporation Multi-purpose non-volatile memory card
US6925007B2 (en) * 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP2005100527A (ja) * 2003-09-25 2005-04-14 Matsushita Electric Ind Co Ltd 半導体不揮発性記憶装置
JP4270994B2 (ja) * 2003-09-29 2009-06-03 株式会社東芝 不揮発性半導体記憶装置
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
JP2006286118A (ja) * 2005-04-01 2006-10-19 Matsushita Electric Ind Co Ltd 閾値電圧制御機能を有する不揮発性記憶装置
KR100732628B1 (ko) * 2005-07-28 2007-06-27 삼성전자주식회사 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치
KR100791325B1 (ko) * 2006-10-27 2008-01-03 삼성전자주식회사 비휘발성 메모리를 관리하는 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09288896A (ja) * 1996-04-19 1997-11-04 Toshiba Corp 記憶システム
JP2001357683A (ja) * 2001-05-07 2001-12-26 Toshiba Corp 記憶システム
JP2005503640A (ja) * 2001-09-17 2005-02-03 サンディスク コーポレイション 二進モードでの多状態不揮発性メモリシステムの選択的動作
WO2006046425A1 (ja) * 2004-10-29 2006-05-04 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及び不揮発性記憶システム
WO2007134277A2 (en) * 2006-05-15 2007-11-22 Apple Inc. Maintenance operations for multi-level data storage cells

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11735265B2 (en) 2021-02-16 2023-08-22 Kioxia Corporation Nonvolatile semiconductor memory device and operating method thereof

Also Published As

Publication number Publication date
WO2009090731A1 (ja) 2009-07-23
US7978513B2 (en) 2011-07-12
US20100265768A1 (en) 2010-10-21
KR20100089100A (ko) 2010-08-11
KR101092823B1 (ko) 2011-12-12
CN101911207A (zh) 2010-12-08
CN101911207B (zh) 2014-05-07
JPWO2009090731A1 (ja) 2011-05-26

Similar Documents

Publication Publication Date Title
JP5223869B2 (ja) 半導体記憶装置、制御装置、制御方法
US20200042223A1 (en) System and method for facilitating a high-density storage device with improved performance and endurance
US10977116B2 (en) Data access method, memory control circuit unit and memory storage device
US10424391B2 (en) Decoding method, memory controlling circuit unit and memory storage device
US10691534B2 (en) Data encoding method, data decoding method and storage controller
CN107146638B (zh) 译码方法、存储器储存装置及存储器控制电路单元
CN107436820B (zh) 解码方法、存储器存储装置及存储器控制电路单元
US20130091404A1 (en) Memory controller and storage device
US10984870B2 (en) Adjusting read voltage level in rewritable nonvolatile memory module
CN106205699B (zh) 存储器管理方法、存储器存储装置与存储器控制电路单元
CN105810246B (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
CN109783001B (zh) 数据编码方法、数据解码方法以及存储控制器
CN112799874B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
CN107179960B (zh) 解码方法、存储器控制电路单元及存储器存储装置
CN114822664A (zh) 基于数据优先级的风险评估方法、存储装置及控制电路
CN110874282B (zh) 数据存取方法、存储器控制电路单元与存储器存储装置
CN111831210B (zh) 存储器管理方法、存储器控制电路单元及存储器存储装置
KR20220122826A (ko) 비휘발성 메모리 장치, 메모리 컨트롤러, 및 이를 포함하는 스토리지 장치의 리드 방법
CN109710450B (zh) 数据编码方法、存储器控制电路单元与存储器存储装置
CN108428464B (zh) 解码方法、存储器储存装置及存储器控制电路单元
CN113434331B (zh) 跨框编码管理方法、存储器存储装置及存储器控制电路
CN107102814B (zh) 存储器管理方法、存储器控制电路单元与存储器存储装置
TWI376695B (ja)
CN111459704B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
CN114115739B (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120823

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130225

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees