JP2011059907A - 端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム - Google Patents

端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム Download PDF

Info

Publication number
JP2011059907A
JP2011059907A JP2009207607A JP2009207607A JP2011059907A JP 2011059907 A JP2011059907 A JP 2011059907A JP 2009207607 A JP2009207607 A JP 2009207607A JP 2009207607 A JP2009207607 A JP 2009207607A JP 2011059907 A JP2011059907 A JP 2011059907A
Authority
JP
Japan
Prior art keywords
data
nonvolatile memory
management level
determination
block
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.)
Pending
Application number
JP2009207607A
Other languages
English (en)
Inventor
Akira Sato
彰 佐藤
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2009207607A priority Critical patent/JP2011059907A/ja
Publication of JP2011059907A publication Critical patent/JP2011059907A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 メモリの利用効率を向上させることが可能な端末装置を提供する。
【解決手段】 端末装置(1)は、少なくともNANDデバイスからなる不揮発メモリ[不揮発メモリ(#1)13]と、不揮発メモリのデータのエラーの訂正を行うECC訂正回路(14)と、ECC訂正回路で訂正を行ったエラービット数とNANDデバイスのリード回数とを記録する記録用テーブル[揮発メモリ12]と、記録用テーブルに記録されたエラービット数及びリード回数が、エラービット数及びリード回数が不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定手段(CPU11)と、判定手段の判定結果に基づいて不揮発メモリのデータの書込み先でありかつNANDデバイスのイレース最小単位を示すブロックを決定する決定手段(CPU11)とを有する。
【選択図】 図1

Description

本発明は端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラムに関し、特に大容量なMLC(Multi Level Cell)−NAND(否定論理積)デバイス等の比較的信頼性の低い不揮発メモリの管理方法に関する。
携帯端末装置や情報端末装置等においては、大容量なMLC−NANDデバイス等の比較的信頼性の低い不揮発メモリを使用する場合がある。このような不揮発メモリで、リード時のビット化けが発生した場合は、ECC(Error Correcting Code)訂正回路で、NANDデバイスの冗長セルに記録されたパリティービットを用いて、正しいデータに訂正する方法が一般的である。
ECC訂正回路としては、例えば、下記の特許文献1に開示されたエラー訂正回路がある。
しかしながら、NANDデバイスは、リード動作を繰り返すことで、リードディスターブ現象により、ビット化けが増加し続けるという特徴がある。ここで、リードディスターブ現象とは、任意のページを数多くリードすると、同一ブロックの他のページのデータに影響がでる現象のことである。リードディスターブ現象は、下記の非特許文献1に示すNANDデバイスを用いた製品SSD(ソリッド・ステート・ドライブ)の論文中にあるように、NANDデバイスの特徴の一つである。
近年のNANDデバイスの製造プロセスの微細化では、本リードディスターブ現象によるビット化けの発生が顕在化してきている。また、NANDセルの製造ばらつきに起因し、同じデバイス内でも、リードディスターブ耐性の強いブロックと弱いブロックとが存在している。
上記の端末装置を動作させる上で必要なプログラムデータ部分では、ビット化けが多発し、ECC訂正回路で正しいデータに訂正することができなくなると、端末装置の異常動作を引き起こすことになる。また、高いセキュリティ確保が必要なデータ部分で(例えば、課金情報等)、ビット化けが多発し、ECC訂正回路で正しいデータに訂正することができなくなると、セキュリティ上の重大な問題を引き起こすことになる。
従来、携帯端末装置や情報端末装置等で、大容量なMLC−NANDデバイスを使用する場合に、ビット化けが多発し、ECC訂正回路で正しいデータに訂正することができなくなることを想定し、プログラムデータや高いセキュリティ確保が必要データは、同じデータを複数のNANDブロックへ多重化して記録する等の方法をとっている(例えば、特許文献2参照)。
特開2005−242797号公報 特開2008−097403号公報
「小型・軽量・高信頼性のモバイルノートPC(Personal Computer)用多値NAND型ソリッドステートドライブ」(塚澤 寿夫,東芝レビュー Vol.63 No.7(2008),P.54 http://www.toshiba.co.jp/tech/review/2008/07/63_07pdf/f03.pdf)
上記の端末装置では、仮に、ビット化けが多発し、ECC訂正回路で正しいデータに訂正することができなくなると、多重化された他のブロックのデータを代用することになる。
上記の端末装置では、信頼性を向上させるため、このNANDデータの多重化を多用すると、NANDデバイスの記録容量を重複して消費することになり、メモリの利用効率が悪くなるという欠点がある。そのため、上記の端末装置では、リードディスターブ現象に対する信頼性を確保する他の手段を考案し、多重化率を下げ、メモリ利用効率を向上する必要がある。
そこで、本発明の目的は上記の問題点を解消し、メモリの利用効率を向上させることができる端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラムを提供することにある。
本発明による端末装置は、少なくともNANDデバイスからなる不揮発メモリと、
前記不揮発メモリのデータのエラーの訂正を行うECC(Error Correcting Code)訂正回路と、
前記ECC訂正回路で訂正を行ったエラービット数と前記NANDデバイスのリード回数とを記録する記録用テーブルと、
前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定手段と、
前記判定手段の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記NANDデバイスのイレース最小単位を示すブロックを決定する決定手段とを備えている。
本発明による不揮発メモリ管理方法は、少なくともNANDデバイスからなる不揮発メモリと、前記不揮発メモリのデータのエラーの訂正を行うECC(Error Correcting Code)訂正回路とを含む端末装置に用いる不揮発メモリ管理方法であって、
前記端末装置に、前記ECC訂正回路で訂正を行ったエラービット数と前記NANDデバイスのリード回数とを記録する記録用テーブルを設け、
前記端末装置が、前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定処理と、前記判定処理の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記NANDデバイスのイレース最小単位を示すブロックを決定する決定処理とを実行している。
本発明によるプログラムは、少なくともNANDデバイスからなる不揮発メモリと、前記不揮発メモリのデータのエラーの訂正を行うECC(Error Correcting Code)訂正回路とを含む端末装置内の中央処理装置に実行させるプログラムであって、
前記端末装置に、前記ECC訂正回路で訂正を行ったエラービット数と前記NANDデバイスのリード回数とを記録する記録用テーブルを設け、
前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定処理と、前記判定処理の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記NANDデバイスのイレース最小単位を示すブロックを決定する決定処理とを含むことを特徴とする。
本発明は、上記のような構成及び動作とすることで、メモリの利用効率を向上させることができるという効果が得られる。
本発明の第1の実施の形態による端末装置の構成例を示すブロック図である。 本発明の第1の実施の形態で用いるデータ用途別の管理レベル設定テーブルを示す図である。 本発明の第1の実施の形態に用いる管理レベル定義情報テーブルを示す図である。 本発明の第1の実施の形態に用いる記録用テーブルを示す図である。 本発明の第1の実施の形態におけるリード時の動作を示すフローチャートである。 本発明の第1の実施の形態におけるプログラム時の動作を示すフローチャートである。 本発明の第1の実施の形態におけるイレース時の動作を示すフローチャートである。 本発明の第1の実施の形態におけるブロック・リプレース時の動作を示すフローチャートである。
次に、本発明の実施の形態について図面を参照して説明する。まず、本発明による携帯端末装置に用いる不揮発メモリの管理方法の概要について説明する。
本発明による端末装置に用いる不揮発メモリの管理方法では、端末装置で信頼性の低いMLC(Multi Level Cell)−NAND(否定論理積)デバイスを使用する場合、端末装置を動作させる上で必要なプログラムデータや高いセキュリティ確保が必要なデータを、リードディスターブ耐性のあるNANDブロックに動的に割り当てることで、システムの信頼性を高めることを特徴としている。
本発明による不揮発メモリ管理方法では、NANDのリード動作の回数をブロック毎にカウントしながら、リード時に発生したビットエラー数[ECC(Error Correcting Code)訂正回路でのビット訂正情報]をNANDの読出し単位(ページ)で記録しておく。
このリード回数及びページ毎のビットエラー情報は、揮発メモリに設けた記録用テーブルに格納しておく。この記録用テーブルは、電源OFF時に不揮発メモリにバックアップが行われる。また、データの用途別に決めてある管理レベル(データの用途別にリード回数とページ毎のエラー数とが定義されている)を満たさない場合は、ブロック・リプレースを行う。
ここで、ブロック・リプレースとは、あるブロックのデータを他のブロックへコピーすることである。一般的なNANDデバイスでは、Copy Back Programというコマンドでその機能が提供されているものもある。NANDデバイスでは、ビット化けに対応するため、ビット化けが発生したブロックの内容を他のブロックへコピーする必要があるため、デバイスの機能としてサポートされているものもある。
新たに行うプログラム動作やブロック・リプレース動作を行う場合は、記録用テーブルに過去のリードで発生したビットエラー情報から判定したブロック毎の信頼性情報となる判定管理レベルを用いて、データの管理レベルに応じて、最適な書込み先のブロックを決定する。
これによって、重要なデータは、ビットエラーに対する信頼性の高いブロックへの書込みを行うことができる。この結果、従来、NANDデータの信頼性を確保するために、データの多重化を行っているが、本発明によりデータ多重化数を減らすことができ、メモリの利用効率を向上させることができる。
図1は本発明の第1の実施の形態による端末装置の構成例を示すブロック図である。図1においては、携帯端末装置や情報端末装置等の端末装置1の構成を示している。
端末装置1は、CPU(中央処理装置)11と、揮発メモリ(DRAM:Dynamic Random Access Memory)12と、不揮発メモリ(#1)(大容量のMLC−NANDメモリ)13と、ECC訂正回路14と、不揮発メモリ(#2)15と、周辺回路16とから構成されている。
揮発メモリ(DRAM)12は、アプリケーションを動作させるためのメモリであり、不揮発メモリ(#1)13は、プログラムコードやデータを格納するメモリであり、不揮発メモリ(#2)15は、信頼性の高い小容量のメモリである。
ECC訂正回路14は、不揮発メモリ(#1)13の読出しデータのビット訂正を行う。周辺回路16は、各種センサ、無線回路、LCD(Liquid Crystal Display)、キー入出力装置等の回路である。
端末装置1のブート時、CPU11は、不揮発メモリ(#1)13に格納してあるプログラムコードやアプリケーションプログラム等を、ECC訂正回路14を通して読出しデータのビット訂正を行いながら、揮発メモリ12に展開する。不揮発メモリ(#1)13の読出しは、読出し単位(ページ)毎に、データとパリティーデータとをECC訂正回路14に送り、ECC訂正回路14でこれらを演算し、訂正したデータを読出し単位(ページ)で、揮発メモリ12に展開する。
次に、CPU11は、ECC訂正回路14が訂正したビット数を読出し、訂正したビット数を揮発メモリ12に記録していく。CPU11は、揮発メモリ12に展開されたプログラムコードやアプリケーションプログラムを用い、プログラムを実行する仕組みになっている。プログラムコードやアプリケーションプログラムが必要とするデータも、同様に不揮発メモリ(#1)13からECC訂正回路14を通して読出され、CPU11で使用される。
プログラムコードやアプリケーションプログラムで、データを保存する場合は、不揮発メモリ(#1)13の書込み単位(ページ)毎に、データ部とビット訂正に必要なパリティーデータとを不揮発メモリ(#1)13に書込む。CPU11は、プログラムコードやアプリケーションプログラムの記述に従って、様々な周辺回路16を制御することにより、端末装置1に求められる機能を実現している。
例えば、端末装置で行われる通話の動作は以下のように実現される。ユーザが通話の操作のために、周辺回路16のダイヤルキーと通話ボタンとを押下すると、周辺回路16の中のキー入力でその操作を検知し、CPU11が通話に必要なアプリケーションプログラムを、不揮発メモリ(#1)13からECC訂正回路14を通して揮発メモリ12に展開する。ECC訂正回路14で訂正したビット数は、揮発メモリ12に記録される。
次に、CPU11は、そのアプリケーションプログラムで、周辺回路16の無線回路を制御し、基地局(図示せず)との無線通信が行われる。CPU11は、その無線通信の通話履歴を不揮発メモリ(#1)13に書込むため、通話履歴のデータ部とそのデータのパリティーデータとを不揮発メモリ(#1)13に書込む。
図2は本発明の第1の実施の形態で用いるデータ用途別の管理レベル設定テーブルを示す図である。図2において、データ用途別の管理レベル設定テーブル150は、端末装置1の不揮発メモリ(#1)13に書込まれているプログラムコードやデータを用途別に分類したものであり、信頼性の高い、小容量の不揮発メモリ(#2)15に格納されている。
本実施の形態では、用途として、「プログラムデータ」、「セキュリティデータ(課金情報等)」、「メールデータ」、「動画像データ」の4つを示す。また、それぞれの用途別に、NANDのリード時のビット化けをどの程度まで許容するかの管理レベルを設定してある。「Level1」がビット化けに対して、最も高い信頼性が必要なものであり、「Level3」は、通常レベルである。「Level2」は、「Level1」と「Level3」との間の信頼性を必要とするものである。
上記のように、本実施の形態では、端末装1の不揮発メモリ(#1)13に書込まれているプログラムコードやデータを用途別に分類し、高い信頼性を必要とするものと、そうでないものとを区別しておく。そして、この分類に基づき、重要なデータは、ビットエラーに対する信頼性の高いブロックへ書込むようにする。
本実施の形態では、不揮発メモリ(#1)13の読出し時に、ECC訂正回路14で訂正したビット数をページ毎にCPU11で読出し、所定回数のリード時に達した場合に、どの程度のビット数が発生するブロックであるかを判別して記録する。そして、本実施の形態は、高い信頼性を求められるデータをプログラム、またはブロック・リプレースする場合に、そのデータの重要度から最適なブロックを選択することを特徴としている。
図3は本発明の第1の実施の形態に用いる管理レベル定義情報テーブルを示す図である。図3において、管理レベル定義情報テーブル151は、データ用途別の管理レベル設定テーブル150で用いた管理レベル(「Level1」、「Level2」、「Level3」)に対する具体的な定義情報である。
判定リード回数152は、ある管理レベルのブロックの判定を行うリード回数を示している。判定ブロック内訂正数153は、ある管理レベルのブロックが判定リード回数152で満たすべきECC訂正回路14でのError訂正回数を示している。また、制限リード回数154は、ある管理レベルのブロックで許されるリード回数を示している。
本実施の形態では、管理レベル「Level1」は、ブロックあたり10k回のリードが行われる間に、ECC訂正回路14でのError訂正が10箇所以下であることを要求している。また、管理レベル「Level1」のブロックは、リード回数を100K回に制限することを示している。
管理レベル「Level2」は、ブロックあたり10k回のリードが行われる間に、ECC訂正回路14でのError訂正が50箇所以下であることを要求している。また、管理レベル「Level2」のブロックは、リード回数を100K回に制限することを示している。
管理レベル「Level3は、ECC訂正回路14でのError訂正数に制限はないが、リード回数を100K回に制限することを示している。
それぞれの管理レベルの要求を満たさなくなったブロックは、他のブロックへブロック・リプレースが行われることになる。例えば、「Level3」でリード回数の制限を越えたリードが行われた場合や、「Level1」で10K回以下のリードの間に、10箇所を超えたECC訂正回路14でのError訂正が行われた場合は、ブロック・リプレースが行われることになる。管理レベル定義情報テーブル151は、信頼性の高い、小容量の不揮発メモリ(#2)15に格納されている。
図4は本発明の第1の実施の形態に用いる記録用テーブルを示す図である。図4において、記録用テーブル121は、不揮発メモリ(#1)13のMLC−NANDの使用状況をブロック単位で示したテーブルであり、揮発メモリ12に置かれている。
本実施の形態では、MLC−NANDが4096個のブロック(ブロック番号0〜ブロック番号4095)をもち、1ブロックあたり128ページ(ページ番号0〜ページ番号127)である8Gbit MLC NANDデバイスを用いた場合を記述してある。ブロックとは、MLC−NANDのイレース動作の最小単位であり、ページとは、MLC−NANDのリード動作及びプログラム動作の最小単位である。
記録用テーブル121には、ブロック毎に、
・ページ毎のECC訂正数(122)・・・ECC訂正回路14で訂正されたビット数(例えば、4bitECC訂正回路であれば、4以下の値がライトされる
・ブロック内訂正数(123)・・・上記のページ毎のECC訂正数(122)の総和
・リード回数(124)・・・あるブロックがリードされた回数を示す
・要求管理レベル(125)・・・ブロックに要求される管理レベルを示す
・判定管理レベル(126)・・・過去の判定結果でブロックの信頼性の程度を示し、初期状態は未判定を示す「Level0」とする
・イレースフラグ(127)・・・‘1’の場合、イレース済みを示し、‘0’の場合、プログラムが行われたことを示す
という6種類の情報が記録してある。
ページ毎のECC訂正数(122)は、不揮発メモリ(#1)13のMLC−NANDをリードする時に、ECC訂正回路14から訂正した数をCPU11が読出し、記録用テーブル121内のそのブロック番号とページ番号とに相当する部分に書込む。また、ブロックがイレースされた場合、そのブロックのページ毎のECC訂正数(122)は0にリセットされる。
ブロック内訂正数(123)は、上記ページ毎のECC訂正数(122)の総和であり、MLC−NANDをリードする時に、CPU11で演算してその値を書込む。
リード回数(124)は、不揮発メモリ(#1)13のMLC−NANDをリードする時にCPU11で演算し、+1する。また、ブロックがイレースされた場合には、0にリセットされる。
要求管理レベル(125)は、ブロック・リプレースやプログラムを行う場合に、そのブロックのデータがどの程度の信頼性を必要としているかを示すものであり、ブロック・リプレースやプログラムを行う場合に書込む。
判定管理レベル(126)は、要求管理レベル(125)で決められた判定リード回数152に達した時点で判定される。具体的には、リード回数(124)が判定リード回数152になった場合、判定管理レベルの条件である判定ブロック内訂正数153を満たしているかどうかを、ブロック内訂正数(123)で判定し、その結果でブロックの判定管理レベル(126)を書込む。初期状態では、判定がなされていないので、判定管理レベル(126)に未判定を示す「Level0」が書込まれている。
イレースフラグ(127)は、ブロックがイレースされた場合に‘1’にセットされ、ブロックにプログラムが行われた場合に‘0’にリセットされる。イレースフラグ(127)は、リプレース動作やプログラム動作時、プログラム先のブロックを素早く探すために必要である。すなわち、要求にあった管理レベルのブロックを探す場合には、イレースフラグ(127)が‘1’にセットされたブロックだけを確認する。
図5は本発明の第1の実施の形態におけるリード時の動作を示すフローチャートであり、図6は本発明の第1の実施の形態におけるプログラム時の動作を示すフローチャートであり、図7は本発明の第1の実施の形態におけるイレース時の動作を示すフローチャートであり、図8は本発明の第1の実施の形態におけるブロック・リプレース時の動作を示すフローチャートである。これら図1〜図8を参照して本発明の第1の実施の形態による端末装置1の動作について説明する。
端末装置1は、ブート時、不揮発メモリ(#1)13に格納してあるプログラムコードやアプリケーションプログラム等を、ECC訂正回路14を通して揮発メモリ12に展開し、揮発メモリ12に展開されたプログラムコードやアプリケーションプログラムで、CPU11はプログラムを実行する。
不揮発メモリ(#2)15には、予めデータ用途別の管理レベル設定テーブル150、管理レベル定義情報テーブル151が保管され、揮発メモリ12には、記録用テーブル121が保管されている。
初期状態で、管理レベル設定テーブル150及び管理レベル定義情報テーブル151は、各用途別に不揮発メモリ(#1)13の信頼性や、予想した読出し頻度により必要な管理レベル及び判定条件が設定されている。
また、記録用テーブル121は、初期状態では過去の記録がないため、ページ毎のECC訂正数(122)、ブロック内訂正数(123)、リード回数(124)は、0にリセットされている。
ブロックの判定管理レベル(126)は、未判定を示す「Level0」がセットされている。ブロックの要求管理レベル(125)は、不揮発メモリ(#1)13に格納してあるデータの用途にあわせて、各ブロックの判定Levelを設定してある。
イレースフラグ(127)は、不揮発メモリ(#1)13の利用状況にあわせて、イレースされたブロックであれば‘1’が、プログラム済みのブロックであれば‘0’が設定されている。
次に、不揮発メモリ(#1)13にアクセスが発生した場合の動作について説明する。動作としては、4つあり、「リード動作」、「プログラム動作」、「イレース動作」、「ブロック・リプレース動作」である。これらの動作について順次説明する。
まず、図5を参照して「リード動作」について説明する。
CPU11は、不揮発メモリ(#1)13のデータをリードする場合、リードしたいメモリのブロック番号(bl)とページ番号(p)とを指定し、読出し単位(ページ)毎に、データとパリティーデータとをECC訂正回路14に送る(図5ステップS1)。
CPU11は、ECC訂正回路14でこれらを演算し、訂正したデータを読出し単位(ページ)で、揮発メモリ12に展開する。また、CPU11は、ECC訂正回路14の訂正したビット数(err)を読出す(図5ステップS2)。
CPU11は、記録用テーブル121のブロック(bl)のページ毎のECC訂正数(122)のページ(p)の値を読出す。CPU11は、読出した値を訂正数(err)と比較し、訂正数(err)の方が大きい場合、err値をブロック(bl)、ページ(p)の値として書込む(図5ステップS3)。訂正数(err)の方が小さい場合は、そのままの値を維持する。
CPU11は、記録用テーブル121のブロック(bl)のリード回数(124)の値を読出し、+1してブロック(bl)のリード回数(124)に書込む(図5ステップS4)。
CPU11は、記録用テーブル121のブロック(bl)のページ毎のECC訂正数(122)の総和であるブロック内訂正数(123)を更新し、要求管理レベル(125)の判定条件を管理レベル定義情報テーブル151から求める。
CPU11は、ブロック(bl)のリード回数(124)の値が、判定リード回数(152)と等しい場合(図5ステップS5)、ブロック内訂正数(410)がどの管理レベルに相当するブロックであるかを判定し、ブロックの判定管理レベル(413)にその判定結果を書き込む(図5ステップS8)。
CPU11は、ブロック(bl)のリード回数(124)の値が、レベルに応じた判定リード回数(152)以下で、ブロック内訂正数(123)がブロック内訂正数(153)よりも大きい場合、要求レベルを満たせないと判断し(図5ステップS6)、ブロック・リプレース処理を行う(図5ステップS9)。
CPU11は、ブロック(bl)のリード回数(124)の値が、制限リード回数(154)に達した場合(図5ステップS7)、ブロック・リプレース処理を行う(図5ステップS9)。
次に、図6を参照して「プログラム動作」について説明する。
CPU11は、不揮発メモリ(#1)13にデータをプログラムする場合、プログラムしたいデータの用途から、データ用途別の管理レベル設定テーブル150を参照し、管理レベルを求める(図6ステップS11)。
CPU11は、記録用テーブル121のイレースフラグ(127)が‘1’であるブロック番号の中から、要求レベルを満たすブロックを探し、プログラム対象ブロック(bl)を決定する(図6ステップS12)。
CPU11は、記録用テーブル121のプログラム対象ブロック(bl)の要求レベルを書込み(図6ステップS13)、記録用テーブル121のプログラム対象ブロック(bl)のイレースフラグ(127)を‘0’にする(図6ステップS14)。
CPU11は、プログラムしたいメモリのブロック番号(bl)とページ番号(p)とを指定し、プログラム単位(ページ)毎に、データとパリティーデータとを不揮発メモリ(#1)13に転送する(図6ステップS15)。
続いて、図7を参照して「イレース動作」について説明する。
CPU11は、不揮発メモリ(#1)13のデータをイレースする場合、NANDのメモリのイレースの最小単位であるブロック番号(bl)を指定する(図7ステップS21)。
CPU11は、記録用テーブル121のイレースフラグ(127)にイレース済みであることを示す‘1’を書き込む(図7ステップS22)。
CPU11は、記録用テーブル121のリード回数(124)とブロック内訂正数(123)とから管理レベル定義情報テーブル151を参照し、どの管理レベルに相当するブロックであるのかを判定し、ブロックの判定管理レベル(126)にそのレベルを書込む(図7ステップS23)。
CPU11は、記録用テーブル121のブロック番号(bl)について、ページ毎のECC訂正数(122)、ブロック内訂正数(123)、リード回数(124)を0にリセットする(図7ステップS24)。
さらに、図8を参照して「ブロック・リプレース動作」について説明する。図8において、記号bl_sはリプレース元ブロック(Source Block)を、記号bl_dはリプレース先ブロック(Destination Block)をそれぞれ表している。
CPU11は、不揮発メモリ(#1)13のリプレース元ブロック(bl_s)からリプレース先にデータをリプレースする場合、記録用テーブル121のイレースフラグ(127)が‘1’であるブロック番号の中から、リプレース元ブロック(bl_s)のデータの要求管理レベルを満たすブロックを探し、リプレース先ブロック(bl_d)を決定する(図8ステップS31)。
CPU11は、記録用テーブル121のリプレース先のブロック(bl_d)の要求管理レベルに、リプレース元ブロック(bl_s)の要求管理レベルを書込む(図8ステップS32)。CPU11は、記録用テーブル121のリプレース先のブロック(bl_d)のイレースフラグ(127)を‘0’にする(図8ステップS33)。
CPU11は、リプレース元ブロック(bl_s)からリプレース先ブロック(bl_d)へデータを転送する(図8ステップS34)。CPU11は、リプレース元ブロック(bl_s)のイレース処理を行う(図8ステップS35)。
また、端末装置1の電源OFF時は、不揮発メモリ(#2)15へ揮発メモリ12にある記録用テーブル121を退避(バックアップ)する。端末装置1の電源ON時は、逆に不揮発メモリ(#2)15へ退避した記録用テーブル121を揮発メモリ12へ読戻し、処理を再開する。
上記のように、不揮発メモリ(#1)13への4つの動作(「リード動作」、「プログラム動作」、「イレース動作」、「ブロック・リプレース動作」)が繰り返し行われる。不揮発メモリ(#1)13の読出し時に、ECC訂正回路14で訂正した数を記録し続けることで、どの程度の訂正数が発生するブロックであるかが次第に明らかになり、ブロック毎に判定管理レベルが記録されることから、高い信頼性を求められるデータをプログラム、またはブロック・リプレースの時に、そのデータの重要度から最適なブロックを選択することができる。
従来、携帯端末装置や情報端末装置等で、大容量なMLC−NANDデバイスを使用する場合に、ECC訂正回路で正しいデータに訂正することができなくなることを想定し、プログラムデータや高いセキュリティ確保が必要データは、同じデータを複数のNANDブロックへ多重化して記録する等の方法がとられている。NANDデータの多重化を多用すると、NANDデバイスの記録容量を重複して消費することになり、メモリの利用効率が悪くなる。
そこで、本実施の形態では、ブロック毎の信頼性情報となる判定管理レベルを用いて、必要な信頼性の確保に最適な書込み先のブロックを決定することができるから、重要なデータをビットエラーに対する信頼性の高いブロックに書込みを行うことによって、従来、NANDデータの信頼性を確保するためのデータの多重化率を減らすことができる。この結果、本実施の形態では、メモリの利用効率を向上させることができる。
例えば、図2に示すデータ用途別の管理レベル設定テーブル150にあるように、重要なデータ(管理レベル「Level1」)であるプログラムデータ、セキュリティデータがNANDデバイスの容量に対して5%のデータ量、中程度の重要なデータ(管理レベル「Level2」)のメールデータ他が5%のデータ量とし、「Level1」、「Level2」のデータ多重化率をそれぞれ4倍、3倍とした場合、従来方式であると、NAND容量全体の35%(=5%×4+5%×3)の容量を消費することになる。
本実施の形態では、重要なデータほどビットエラーに対する信頼性の高いブロックに書込む方式であるから、多重化率を下げて、2倍にしたとすると、NAND容量全体の20%(=5%×2+5%×2)となる。この結果、本実施の形態では、15%(=35%−20%)分、メモリの利用効率をあげることができる。
また、多重化を行わない場合は、NAND容量全体の10%(=5%×1+5%×1)となる。この場合、本実施の形態では、25%(=35%−10%)分、メモリの利用効率をあげることができる。
本発明は、上記の実施の形態のように、記録用テーブル121を揮発メモリ12に格納し、不揮発メモリ(#1)13の読出し時に、ECC訂正回路14で訂正したビット数を記録しつづける方式であるので、端末装置1の電源OFF時に不揮発メモリ(#2)15へ記録用テーブル121を退避(パックアップ)する必要がある。
本発明は、上記の実施の形態と異なり、記録用テーブル121を不揮発性メモリ(#2)15に格納したまま、不揮発メモリ(#1)13の読出し時に、ECC訂正回路14で訂正した数を記録しつづけることも可能である。不揮発性メモリ(#2)15は、PCM(Phase Change Memory)等のビット毎の書き換えが可能で、書き換え回数の多いデバイスを用いる例である。この場合、端末の電源OFF時もデータ退避(バックアップ)が不用になる利点がある。
1 端末装置
11 CPU
12 揮発メモリ
13 不揮発メモリ(#1)
14 ECC訂正回路
15 不揮発性メモリ(#2)
16 周辺回路
121 記録用テーブル
122 ページ毎のECC訂正数
123 ブロック内訂正数
124 リード回数
125 要求管理レベル
126 判定管理レベル
127 イレースフラグ
150 管理レベル設定テーブル
151 管理レベル定義情報テーブル
152 判定リード回数
153 判定ブロック内訂正数
154 制限リード回数

Claims (19)

  1. 少なくともNANDデバイスからなる不揮発メモリと、
    前記不揮発メモリのデータのエラーの訂正を行うECC(Error Correcting Code)訂正回路と、
    前記ECC訂正回路で訂正を行ったエラービット数と前記NANDデバイスのリード回数とを記録する記録用テーブルと、
    前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定手段と、
    前記判定手段の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記NANDデバイスのイレース最小単位を示すブロックを決定する決定手段と
    を有することを特徴とする端末装置。
  2. 前記データの用途別に当該データの重要度を示す管理レベルを格納するデータ用途別の管理レベル設定テーブルを前記不揮発メモリに保管することを特徴とする請求項1記載の端末装置。
  3. 前記データ用途別の管理レベル設定テーブルで用いた管理レベルの具体的な判定条件と前記リード回数の制限条件とを示す管理レベル定義情報テーブルを前記不揮発メモリに保管することを特徴とする請求項2記載の端末装置。
  4. 前記管理レベルの具体的な判定条件は、前記データの用途別の判定リード回数と判定ブロック内訂正数とからなる定義情報を示し、
    前記リード回数の制限条件は、前記データの用途別にリードしてよい回数の定義情報を示すことを特徴とする請求項3記載の端末装置。
  5. 前記判定手段は、前記NANDデバイスのリードを行う際に前記記録用テーブルに記録された前記エラービット数及び前記リード回数が前記管理レベルを満たすか否かを判定し、
    その判定結果を前記記録用テーブルの判定管理レベルに記録することを特徴とする請求項1から請求項4のいずれか記載の端末装置。
  6. 前記決定手段は、前記前記NANDデバイスのプログラム動作を行う場合に前記判定管理レベルを参照し、当該プログラムを行うデータの要求管理レベル以上になるように書込み先のブロックを決定することを特徴とする請求項5記載の端末装置。
  7. 前記記録用テーブルを揮発メモリに配置し、
    前記記録用テーブルに、プログラムの最小単位を示すページ単位で前記エラービット数を記録するとともに、前記ブロック単位で前記NANDデバイスのリード回数を記録することを特徴とする請求項1から請求項6のいずれか記載の端末装置。
  8. 前記記録用テーブルの記録内容は、電源断の場合に前記不揮発メモリに退避し、電源が投入された場合に前記不揮発メモリから前記揮発メモリに読み戻すことを特徴とする請求項7記載の端末装置。
  9. 前記記録用テーブルを、ビット毎の書き換えが可能なPCM(Phase Change Memory)に配置したことを特徴とする請求項1から請求項6のいずれか記載の端末装置。
  10. 少なくともNANDデバイスからなる不揮発メモリと、前記不揮発メモリのデータのエラーの訂正を行うECC(Error Correcting Code)訂正回路とを含む端末装置に用いる不揮発メモリ管理方法であって、
    前記端末装置に、前記ECC訂正回路で訂正を行ったエラービット数と前記NANDデバイスのリード回数とを記録する記録用テーブルを設け、
    前記端末装置が、前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定処理と、前記判定処理の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記NANDデバイスのイレース最小単位を示すブロックを決定する決定処理とを実行することを特徴とする不揮発メモリ管理方法。
  11. 前記データの用途別に当該データの重要度を示す管理レベルを格納するデータ用途別の管理レベル設定テーブルを前記不揮発メモリに保管することを特徴とする請求項10記載の不揮発メモリ管理方法。
  12. 前記データ用途別の管理レベル設定テーブルで用いた管理レベルの具体的な判定条件と前記リード回数の制限条件とを示す管理レベル定義情報テーブルを前記不揮発メモリに保管することを特徴とする請求項11記載の不揮発メモリ管理方法。
  13. 前記管理レベルの具体的な判定条件は、前記データの用途別の判定リード回数と判定ブロック内訂正数とからなる定義情報を示し、
    前記リード回数の制限条件は、前記データの用途別にリードしてよい回数の定義情報を示すことを特徴とする請求項12記載の不揮発メモリ管理方法。
  14. 前記判定処理において、前記NANDデバイスのリードを行う際に前記記録用テーブルに記録された前記エラービット数及び前記リード回数が前記管理レベルを満たすか否かを判定し、
    その判定結果を前記記録用テーブルの判定管理レベルに記録することを特徴とする請求項10から請求項13のいずれか記載の不揮発メモリ管理方法。
  15. 前記決定処理において、前記前記NANDデバイスのプログラム動作を行う場合に前記判定管理レベルを参照し、当該プログラムを行うデータの要求管理レベル以上になるように書込み先のブロックを決定することを特徴とする請求項14記載の不揮発メモリ管理方法。
  16. 前記記録用テーブルを揮発メモリに配置し、
    前記記録用テーブルに、プログラムの最小単位を示すページ単位で前記エラービット数を記録するとともに、前記ブロック単位で前記NANDデバイスのリード回数を記録することを特徴とする請求項10から請求項15のいずれか記載の不揮発メモリ管理方法。
  17. 前記記録用テーブルの記録内容は、電源断の場合に前記不揮発メモリに退避し、電源が投入された場合に前記不揮発メモリから前記揮発メモリに読み戻すことを特徴とする請求項16記載の不揮発メモリ管理方法。
  18. 前記記録用テーブルを、ビット毎の書き換えが可能なPCM(Phase Change Memory)に配置したことを特徴とする請求項10から請求項15のいずれか記載の不揮発メモリ管理方法。
  19. 少なくともNANDデバイスからなる不揮発メモリと、前記不揮発メモリのデータのエラーの訂正を行うECC(Error Correcting Code)訂正回路とを含む端末装置内の中央処理装置に実行させるプログラムであって、
    前記端末装置に、前記ECC訂正回路で訂正を行ったエラービット数と前記NANDデバイスのリード回数とを記録する記録用テーブルを設け、
    前記記録用テーブルに記録された前記エラービット数及び前記リード回数が、前記エラービット数及び前記リード回数が前記不揮発メモリのデータの用途別に予め定義された管理レベルを満たすか否かを判定する判定処理と、前記判定処理の判定結果に基づいて前記不揮発メモリのデータの書込み先でありかつ前記NANDデバイスのイレース最小単位を示すブロックを決定する決定処理とを含むことを特徴とするプログラム。
JP2009207607A 2009-09-09 2009-09-09 端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム Pending JP2011059907A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009207607A JP2011059907A (ja) 2009-09-09 2009-09-09 端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009207607A JP2011059907A (ja) 2009-09-09 2009-09-09 端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム

Publications (1)

Publication Number Publication Date
JP2011059907A true JP2011059907A (ja) 2011-03-24

Family

ID=43947474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009207607A Pending JP2011059907A (ja) 2009-09-09 2009-09-09 端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム

Country Status (1)

Country Link
JP (1) JP2011059907A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013196673A (ja) * 2012-03-23 2013-09-30 Toshiba Corp メモリシステム
JP2013222315A (ja) * 2012-04-17 2013-10-28 Sony Corp 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2014505941A (ja) * 2011-04-28 2014-03-06 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
JP2014059946A (ja) * 2012-09-15 2014-04-03 Lsi Corp 不揮発性メモリの耐久性平準化のためのセル損傷の測定
WO2015151261A1 (ja) * 2014-04-03 2015-10-08 株式会社日立製作所 不揮発メモリシステム及び情報処理システム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014505941A (ja) * 2011-04-28 2014-03-06 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
JP2013196673A (ja) * 2012-03-23 2013-09-30 Toshiba Corp メモリシステム
JP2013222315A (ja) * 2012-04-17 2013-10-28 Sony Corp 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2014059946A (ja) * 2012-09-15 2014-04-03 Lsi Corp 不揮発性メモリの耐久性平準化のためのセル損傷の測定
WO2015151261A1 (ja) * 2014-04-03 2015-10-08 株式会社日立製作所 不揮発メモリシステム及び情報処理システム

Similar Documents

Publication Publication Date Title
US8037232B2 (en) Data protection method for power failure and controller using the same
US8078923B2 (en) Semiconductor memory device with error correction
US8296501B2 (en) Memory management method for non-volatile memory and controller using the same
EP2162822B1 (en) Emerging bad block detection
US8103820B2 (en) Wear leveling method and controller using the same
US8332576B2 (en) Data reading method for flash memory and controller and storage system using the same
US8046526B2 (en) Wear leveling method and controller using the same
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
US8533385B2 (en) Method for preventing read-disturb happened in non-volatile memory and controller thereof
JP5492679B2 (ja) 記憶装置およびメモリコントローラ
US20090100290A1 (en) Memory controller, nonvolatile memory device, nonvolatile memory system, and data writing method
US20090307413A1 (en) Data writing method for flash memory and storage system and controller using the same
US7649794B2 (en) Wear leveling method and controller using the same
US8417879B2 (en) Method for suppressing errors, and associated memory device and controller thereof
US11467758B2 (en) Data writing method using different programming modes based on the number of available physical erasing units, memory control circuit unit and memory storage device
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
JP2011059907A (ja) 端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム
JP2012058770A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9778862B2 (en) Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus
US10289334B2 (en) Valid data merging method, memory controller and memory storage apparatus
TWI785571B (zh) 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置
JP2008158908A (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
US11687444B2 (en) Data managing method. memory controlling circuit unit and memory storage device
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP2007048191A (ja) メモリカード