JP2011134031A - 半導体記録装置および半導体記録システム - Google Patents
半導体記録装置および半導体記録システム Download PDFInfo
- Publication number
- JP2011134031A JP2011134031A JP2009291709A JP2009291709A JP2011134031A JP 2011134031 A JP2011134031 A JP 2011134031A JP 2009291709 A JP2009291709 A JP 2009291709A JP 2009291709 A JP2009291709 A JP 2009291709A JP 2011134031 A JP2011134031 A JP 2011134031A
- Authority
- JP
- Japan
- Prior art keywords
- block
- logical
- parity
- data
- user data
- 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
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】NAND型フラッシュメモリにおける最適な積符号構成により、誤り耐性と、ライトおよびリードにおける転送性能を両立できる半導体記録装置を提供することを目的とする。
【解決手段】半導体記録装置は、ユーザデータが入力される入力部1と、物理ブロックが複数ページによって構成される複数の不揮発性メモリ10a〜10dにアクセスするアクセス制御部9a〜9dと、入力部1で入力されたユーザデータよりパリティデータを生成し、ユーザデータとパリティデータとを含むECC符号を生成するECC符号生成部2、8a〜8dと、不揮発性メモリ10a〜10dの複数の物理ブロックからなる拡張ブロックに対してECC符号を構成するユーザデータとパリティデータを夫々異なる拡張ブロックに記録するよう制御する記録制御部4と、を備える。
【選択図】図2
【解決手段】半導体記録装置は、ユーザデータが入力される入力部1と、物理ブロックが複数ページによって構成される複数の不揮発性メモリ10a〜10dにアクセスするアクセス制御部9a〜9dと、入力部1で入力されたユーザデータよりパリティデータを生成し、ユーザデータとパリティデータとを含むECC符号を生成するECC符号生成部2、8a〜8dと、不揮発性メモリ10a〜10dの複数の物理ブロックからなる拡張ブロックに対してECC符号を構成するユーザデータとパリティデータを夫々異なる拡張ブロックに記録するよう制御する記録制御部4と、を備える。
【選択図】図2
Description
本発明は、メモリカードなどの半導体記録装置において、内部の不揮発性メモリのデータ保持特性のバラツキ及び書き換え回数に伴う劣化を抑制する制御手法に関する。
従来、フラッシュメモリが内蔵されたカード型の記録媒体であるSD(Secure Digital)カード等の半導体記録装置は、超小型、超薄型であり、その取り扱い易さから、ディジタルカメラ、携帯機器等において画像等のデータを記録するために広く利用されている。
半導体記録装置に内蔵されているフラッシュメモリは、一定サイズの多数の物理ブロックから成り、物理ブロックの単位でデータを消去できるメモリである。昨今の大容量化の要請に対応すべく、フラッシュメモリは1セルで2ビット以上のデータが蓄積できる多値フラッシュメモリが商品化されている。
図1に、多値フラッシュメモリのフローティングゲートに蓄積する電子の数と閾値電圧(Vth)の関係の一例を示す。図1に示すように、4値のフラッシュメモリでは、フローティングゲートの電子の蓄積状態をその閾値電圧(Vth)に従って4状態で管理する。消去状態は電位が一番低く、これを(1,1)とする。そして電子が蓄積していくにつれて閾値電圧が離散的に上昇し、その状態を夫々(1,0)(0,0)(0,1)とする。このように、蓄積する電子の数に比例して電位が上昇するので、所定の電位の閾値に収まるように制御することによって、1つのメモリセルに2ビットのデータを記録することができる。
しかしながら、多値フラッシュメモリにおいては、電子のチャージ量によって4状態を識別するために、各状態間の閾値電圧の差が、2値フラッシュメモリより小さい。また、データの書き換えを繰り返すと、電子の注入と引き抜きによってゲート酸化膜にわずかな損傷が発生する。この損傷が積み重なると電子トラップが数多く形成されるため、実際のフローティングゲートに蓄積される電子数が減少してしまう。半導体プロセスの微細化に比例して、フローティングゲートに蓄積される電子数が少なくなるため、電子トラップの影響は大きくなる。
このように、フラッシュメモリの大容量化を支える多値記録および半導体プロセスの微細化に従い、フラッシュメモリのデータ保持特性の劣化といった課題が顕著になってきた。
上記のフラッシュメモリのデータ保持特性の改善手法として、エラー訂正能力を強化する手法が考案されている。
特許文献1では、複数チップで構成されたフラッシュメモリにおいて、フラッシュメモリの互いに異なるチップ内のブロックを関連付け、関連付けられた複数のブロックを共通のグループとして取り扱い、グループ内の1ブロックを当該グループ内の他のブロックに書き込まれたユーザデータのパリティ用のブロックに割当てることにより、誤り訂正能力を強化し、フラッシュメモリのデータ保持特性の劣化を抑制している。
そして、ホストから発行される論理アドレスと当該論理アドレスに対応するユーザデータライト領域とパリティデータライト領域との関連付けに関して、以下の2方式が提案されている。
「従来方式1」
4個のフラッシュメモリチップを内蔵した半導体記録装置において、3個のフラッシュメモリチップをユーザデータライト領域、1個のフラッシュメモリをパリティデータライト領域とする(本方式は、ハードディスクのRAID4に相当する)。
4個のフラッシュメモリチップを内蔵した半導体記録装置において、3個のフラッシュメモリチップをユーザデータライト領域、1個のフラッシュメモリをパリティデータライト領域とする(本方式は、ハードディスクのRAID4に相当する)。
「従来方式2」
ユーザデータライト領域及びパリティデータライト領域をフラッシュメモリのページ単位で区分けし、パリティデータライト領域にかかるフラッシュチップを順番に移動することによって、パリティデータを各フラッシュチップに略均等に割り当てる。そして、ホスト機器が発行する論理アドレスとの対応関係を一意に定めたテーブルを記録する(本方式は、ハードディスクのRAID5に相当する)。
ユーザデータライト領域及びパリティデータライト領域をフラッシュメモリのページ単位で区分けし、パリティデータライト領域にかかるフラッシュチップを順番に移動することによって、パリティデータを各フラッシュチップに略均等に割り当てる。そして、ホスト機器が発行する論理アドレスとの対応関係を一意に定めたテーブルを記録する(本方式は、ハードディスクのRAID5に相当する)。
しかしながら、従来の構成の半導体記録装置においては、付加したパリティデータによる誤り訂正が発生しない場合に、パリティを付加しない方式よりもリード速度が低下するといった課題がある。
具体的には、「従来方式1」の場合は、4チップのフラッシュメモリを実装しているにも関わらず、3個のフラッシュメモリを並列に動作させた分しかリード速度が得られない。
また、「従来方式2」の場合は、4個のフラッシュチップからユーザデータの並列リードは実施できる。しかしながら、ユーザデータのみをリードする場合、各フラッシュメモリの連続する4ページに1ページ分のパリティデータがライトされているため、リードアドレスをジャンプする必要がある。このため、各フラッシュメモリに内蔵されている先読みキャッシュが有効に動作しないことになり、十分なリード性能を得ることができない。
また、従来の手法では、フラッシュメモリの物理ブロックへのアクセスのうち、ユーザデータの占める割合が3/4となる。一般のホスト機器は、物理ブロックサイズの2の階乗のブロックを前提に、連続する論理アドレスにかかるライトコマンドを発行するため、ライト時の性能が劣化するといった課題がある。
本発明は、上記問題を解決するものであり、適切な積符号構成により、NAND型フラッシュメモリにおける誤り耐性と、ライトおよびリードにおける転送性能を両立できる半導体記録装置を提供することを目的とする。
この課題を解決するために、本発明の半導体記録装置は、ユーザデータが入力される入力部と、物理ブロックが複数ページによって構成される複数の不揮発性メモリにアクセスするアクセス制御部と、前記入力部で入力されたユーザデータより、パリティデータを生成し、前記ユーザデータと前記パリティデータとを含むECC符号を生成するECC符号生成部と、前記不揮発性メモリの複数の物理ブロックからなる拡張ブロックに対して、前記ECC符号を構成するユーザデータとパリティデータを、夫々異なる前記拡張ブロックに記録するよう制御する記録制御部と、を備える。
上記構成によって、ユーザデータとパリティデータ夫々が、複数の物理ブロックで構成される別の拡張ブロックにライトされるので、ユーザデータで構成された拡張ブロックをリードすれば、物理ブロックを連続アドレスでアクセスできるため、内蔵不揮発性メモリのリード転送性能を最大限発揮することができる。
(実施の形態1)
図2は実施の形態1における半導体記録装置の構成を示すブロック図である。半導体記録装置は、外部インターフェイス手段1と、第1のECC処理手段2と、パリティ保持手段3と、ブロック管理手段4と、論物変換テーブル5と、空ブロックテーブル6と、テンプブロックテーブル7と、第2のECC処理手段8a〜8dと、フラッシュメモリアクセス手段9a〜9dと、フラッシュメモリ10a〜10dとを含む。
図2は実施の形態1における半導体記録装置の構成を示すブロック図である。半導体記録装置は、外部インターフェイス手段1と、第1のECC処理手段2と、パリティ保持手段3と、ブロック管理手段4と、論物変換テーブル5と、空ブロックテーブル6と、テンプブロックテーブル7と、第2のECC処理手段8a〜8dと、フラッシュメモリアクセス手段9a〜9dと、フラッシュメモリ10a〜10dとを含む。
外部インターフェイス手段1は、図示しないホスト機器からのコマンドやユーザデータを受信し、ユーザデータの転送を行うインターフェイスである。第1のECC処理手段2は、ライト時に外部インターフェイス手段1より入力されたユーザデータより第1のECC符号を生成し、リード時に後述する第2のECC処理手段8a〜8dにおいて誤り訂正が不可であったデータについて誤り訂正するものである。第1のECC符号におけるパリティ数は限定されるものではないが、例えば4バイトのユーザデータに対してEXOR演算を実施すれば1バイトのパリティデータを作成できる。データ保持特性は物理ブロックでばらつくことから、パリティデータを生成するユーザデータおよび作成したパリティデータは異なる物理ブロックにライトされることが望ましい。
パリティ保持手段3は、第1のECC処理手段2により生成されたパリティデータを一時保持する。ブロック管理手段4は、後述する論物変換テーブル5、後述する空ブロックテーブル6及び後述するテンプブロックテーブル7によりフラッシュメモリのブロックを管理するものである。第2のECC処理手段8a〜8dは、4並列で構成され、4個のフラッシュメモリ10a〜10dの物理ブロックを構成する各ページにおいて、ユーザデータ及びパリティデータに対して第2のECC符号の生成及び、第2のECC符号を利用した誤り訂正を実施する。リード時に誤り訂正が不可であった場合は、訂正不可の位置を第1のECC処理手段2に伝送する。フラッシュメモリアクセス手段9a〜9dは、ブロック管理手段4に示すアドレスに従い、4個のフラッシュメモリ10a〜10dのリード/ライトを行う。フラッシュメモリ10a〜10dは、ユーザデータ、パリティデータ及び論物変換テーブル5を保持する4個の不揮発性メモリである。
はじめに、本実施の形態におけるメモリ制御の要素となる論理ブロック、パリティブロック、論理ページ、拡張ブロック、拡張ページ、論物変換テーブル、空ブロックテーブル、テンプブロック及びテンプブロックテーブルについて詳細に説明する。
まず、本実施の形態で使用するフラッシュメモリ10a〜10dの構成について説明する。4個のフラッシュメモリ10a〜10dは同じ構成であるため、フラッシュメモリ10aについて、その構成を説明する。図3は、本実施の形態におけるフラッシュメモリ10aの内部構成図であり、同図(a)に物理ブロックの構成、同図(b)に物理ブロックの内部構成を示す。同図(a)におけるPBは物理ブロックを示し、PB0はブロックアドレス0の物理ブロックを示す。PB1、PB1023も同様に夫々ブロックアドレス0の物理ブロック、ブロックアドレス1023の物理ブロックを示す。各物理ブロックは同図(b)に示すように複数のページより構成されており、図中のページ0、ページ1等は、ページ番号0のページ、ページ番号1のページであることを示す。フラッシュメモリ10aのページにライトするデータサイズを4KBとすれば、1物理ブロックは64ページで構成されているので、各ブロックに256KB(4KB*64)のデータを格納できる。さらにフラッシュメモリ10aは1024個の物理ブロックから構成されているので、フラッシュメモリ当り256MBのデータを格納できる。そして、4個のフラッシュメモリ10a〜10dで構成するため、4096個の物理ブロックが存在する。
本実施の形態では、4バイトのユーザデータより1バイトのパリティデータを作成するため、フラッシュメモリにライトするユーザデータとパリティデータの割合は4:1になる。よって、4個のフラッシュメモリ10a〜10dの全4096個の物理ブロックは、3200個の物理ブロックをユーザデータ用、800個の物理ブロックをパリティデータ用、残りの96個を論物変換テーブルなどのシステムデータの記録や代替ブロックに割り当てる。後発不良ブロックが発生した場合は、当該ブロックをDefectブロックとして登録して、当該物理ブロックの使用を禁止し、代わりに上記代替ブロックを使用する。
次に、論理ブロックとパリティブロックについて説明する。図4は、本実施の形態における論理ブロックおよびパリティブロックの概念図である。論理ブロックにはユーザデータが記録され、パリティブロックには4個の論理ブロックにかかるユーザデータから生成されたパリティデータが記録される。
論理ブロックのサイズは1MBであり、連続する2048セクタ(セクタ=512B)に対応する。論理ブロックは0番から799番の連番で付されており、論理ブロック番号とセクタ番号の対応は
となる。
パリティブロックのサイズは論理ブロックと同様に1MBであり、パリティブロックの番号は0番から199番の連番で付されている。そして、論理ブロックと関連づけられたパリティブロックの番号は
となる。
また、論理ブロック及びパリティブロックは、夫々64ページの論理ページによって構成される。論理ページのサイズは16KB(=1MB/64)であり、各論理ページには0番から63番までの連番が付される。
セクタ番号と論理ブロックの論理ページ番号の関係は、
となる。
また、セクタ番号と、当該セクタに関連するパリティブロックの論理ページ番号との関係は、
となる。
次に、拡張ブロックと拡張ページについて説明する。拡張ブロックは、4個のフラッシュメモリ(フラッシュメモリ10a〜フラッシュメモリ10d)において、各フラッシュメモリから1物理ブロックずつ抽出した4個の物理ブロックによって構成される。物理ブロックのサイズは256KBなので、拡張ブロックのサイズは1MBとなる。ここで、拡張ブロックを構成する4個の物理ブロック番号は同一のブロック番号である必要はなく、各物理ブロックの書き換え回数を平均化できることからランダムに抽出されることが望ましい。拡張ページは、拡張ブロックを構成する4個の物理ブロックの同一番号のページを連結したものである。物理ブロックのページサイズは4KBなので、拡張ページのサイズは16KBとなる。物理ブロックは64ページで構成されているので、拡張ブロックも同様に64ページの拡張ページにより構成される。
次に、論物変換テーブル5について説明する。論物変換テーブル5は、論理ブロックと拡張ブロックとの対応テーブル、及びパリティブロックと拡張ブロックとの対応テーブルで構成される。拡張ブロックは、4個のフラッシュメモリから夫々1個抽出した4個の物理ブロックで構成されているので、論理ブロック番号およびパリティブロック番号とそれに対応する4個の物理ブロック番号をテーブル化する。
図5に論物変換テーブル5の一例を示す。同図(a)は論理ブロックにおける論物変換テーブルであり、0番〜799番の800個の論理ブロック夫々に対応する物理ブロック番号を登録してフラッシュメモリ10a〜10dの物理ブロックを管理する。同図(b)はパリティブロックの論物変換テーブルであり、0番〜199番の200個のパリティブロック夫々に対応する物理ブロック番号を登録してフラッシュメモリ10a〜10dの物理ブロックを管理する。同図(a)に示すように、1個の論理ブロック番号に対応して、フラッシュメモリ10a〜10dの夫々より1個ずつ物理ブロックが割り当てられる。以下、フラッシュメモリ10a〜10dを、それぞれフラッシュメモリ0〜3で示す。同図の符号0−0、1−300、2−600、3−900は、夫々フラッシュメモリ0の0番の物理ブロック、フラッシュメモリ1の300番の物理ブロック、フラッシュメモリ2の600番の物理ブロック、フラッシュメモリ3の900番の物理ブロックを示す。また、0−1024、1−1024、2−1024、3−1024は、フラッシュメモリ0〜3の夫々の1024番の物理ブロックであるが、フラッシュメモリにおける有効な物理ブロック番号は0〜1023であるため、1024番の符号は当該論理ブロックには物理ブロックが割り当てられていない、あるいはライトされているが使用していないことを示す。
同図(a)によると、0番の論理ブロックに、0−0、1−300、2−600、3−900の番号の物理ブロック、1番の論理ブロックに、0−100、1−400、2−700、3−1000の番号の物理ブロック、2番の論理ブロックに、0−200、1−500、2−800、3−0の番号の物理ブロック、3番の論理ブロックに、0−300、1−600、2−900、3−100の番号の物理ブロックが割り当てられ、799番の論理ブロックには物理ブロックが割り当てられていないことを示す。同様に同図(b)によると、0番のパリティブロックに、0−400、1−700、2−1000、3−200の4個の物理ブロックが割り当てられ、1番、199番のパリティブロックには物理ブロックが割り当てられていないことを示す。
論物変換テーブル5は、ライトの工程において論理ブロックが書き換えられる毎に更新される。更新においては論物変換テーブル5における1024番が割り当てられた未使用の物理ブロックがフラッシュメモリ10a〜10dの夫々から1個ずつ新たに抽出され、新論理ブロックが生成される。当該論理ブロックにユーザデータをライトしてから、論物変換テーブル5は更新される。その際に、以前に使用していた物理ブロックは未使用ブロックとなる。フラッシュメモリの全物理ブロックから論物変換テーブル5に使用されている有効物理ブロックを除いた物理ブロックが未使用ブロックとなる。
未使用ブロックの抽出はライトする毎に実施しても良いが、後述する空ブロックテーブル6を電源投入時に作成しておき、空ブロックテーブル6を管理することにより、未使用ブロックの抽出を実施する。
空ブロックテーブル6は、フラッシュメモリ10a〜10dの全物理ブロックが新規にライト可能かどうかを示すテーブルであり、物理ブロック毎に使用中ブロックに「1」、未使用ブロックに「0」が格納される。より具体的には、論物変換テーブル5で使用されている物理ブロックおよび後述するテンプブロックに使用されている物理ブロック、さらに使用不可と判断された不良物理ブロックには使用中の「1」が格納される。そして、未ライトの物理ブロック、ライトされているが論物変換テーブル5及び後述するテンプブロックテーブル7の更新により未使用となった物理ブロックには「0」が格納される。
電源投入時に論物変換テーブル5とテンプブロックテーブル7、さらに不良物理ブロックをリスト化した不良物理ブロックテーブルがリードされ、空ブロックテーブル6が作成される。そして、論物変換テーブル5とテンプブロックテーブル7の更新と同期して空ブロックテーブル6を更新することにより、未使用ブロックの抽出処理が高速化される。
次に、テンプブロックとテンプブロックテーブルについて説明する。メモリカード等の半導体記録装置では、ホスト機器から連続した論理アドレスにユーザデータを連続してライトすることにより、高速記録を実現している。そこで、ホスト機器からライト指令を受けたセクタにかかる論理ブロックにおいて、新たにテンプブロックが作成される。通常、1個の論理ブロックには1個の拡張ブロックが割り当てられるが、ライト中の論理ブロックにおいては、それとは別に新規の拡張ブロックが割り当てられる。このように、ホストのライト命令を受けて、新規に割り当てられた拡張ブロックのことをテンプブロックと定義する。
テンプブロックテーブル7には、論理ブロックまたはパリティブロックと新たに対応づけられた4個の物理ブロック番号と、夫々の論理ページと対応づけられたテンプブロックの拡張ページ番号が格納される。テンプブロックテーブル7を用いて、ライト中の論理ブロックまたはパリティブロックと夫々に対応づけられたテンプブロックの管理が行われる。
図6にテンプブロックテーブル7の一例を示す。同図は、テンプブロックを2個作成する場合の例であり、論理ブロック0とパリティブロック0がテンプブロックとして割り当てられていることを示す。論理ブロック0とパリティブロック0は図5の論物変換テーブル5においても拡張ブロックが与えられているので、テンプブロックと合わせて2個の拡張ブロックが割り与えられている。そして、図6に示すように、拡張ページ0、拡張ページ1、拡張ページ2、拡張ページ3には夫々対応する論理ブロックの論理ページ0、論理ページ1、論理ページ2、論理ページ3がライトされている。拡張ページ4以降は未ライト状態であるので、存在しない論理ページ番号64が格納されている。同様にパリティブロックには、拡張ページ0にのみ論理ページ0がライトされている。
図7に論理ブロック0に対応づけられている2個の拡張ブロックの状態を示す。同図に示すように論理ブロック0には既存の拡張ブロックとテンプブロックが対応付けられており、既存の拡張ブロックの全拡張ページには対応する論理ページが全てライト済みになっている。本例では拡張ページと同一の番号の論理ページがライト済みになっている。また、テンプブロックは、拡張ページ0〜拡張ページ3のみに対応する論理ページ0〜論理ページ3がライト済みである。本状態において、論理ページ0〜論理ページ3は既存の拡張ブロックとテンプブロックに重複したライトされた重複論理ページである。この場合はテンプブロックの論理ページを正規の論理ページとし、既存の拡張ブロックの論理ページが消去可能な論理ページとして扱われる。
次に、図7の状態において、論理ブロック1にかかるセクタにライトする場合の動作について説明する。論理ブロックに対応するテンプブロックが1個に制限されている状態では、論理ブロック0のテンプブロックを解消しない限り、論理ブロック1のテンプブロックを新たに登録することはできない。図8に論理ブロック0のテンプブロックを解消された状態の拡張ブロックの状態図を示す。同図に示すように、既存拡張ブロックの拡張ページ4〜拡張ページ63にライトされていた論理ページ4〜論理ページ63のデータをテンプブロックの拡張ページ4〜拡張ページ63に移すことによって、テンプブロックが解消される。論理ブロック0のテンプブロックを解消した後の論物変換テーブル5を図9に、テンプブロックテーブル7を図10に示す。図示した論物変換テーブル5においては、論理ブロック0に対応づけられている物理ブロック番号が、解消する前のテンプブロック0の物理ブロック番号に置き換わっている。そして、図示したテンプブロックテーブル7においては、テンプブロック0に対応する論理ブロックが論理ブロック1となり、対応する物理ブロックが新規に割り与えられ、拡張ページは全て未ライトのページに更新される。
このように、テンプブロックに対応する論理ブロックは、ホスト機器が発行するライトセクタ番号によって更新されていく。ホスト機器が、同一論理ブロックの論理ページ0から論理ページ63までを順番にライトする間は、テンプブロックテーブル7において拡張ページに対応する論理ページ番号が順次更新されるだけであり、既存拡張ブロックからテンプブロックへのデータの移動は発生しない。そして、新規の論理ブロックにライトする場合における処理も、既存拡張ブロックからテンプブロックへのデータの移動は発生せず、論物変換テーブル5とテンプブロックテーブル7の更新を実施すれば十分である。よって、論理ブロックにかかるデータを順番にライトすれば、ライトを高速に実施することができる。
本実施の形態ではテンプブロックを2個準備し、テンプブロックは論理ブロックとパリティブロックに対して1個ずつ割り当てられる。よって、テンプブロックに対応づけられた論理ブロックとパリティブロックとにかかる夫々の論理ページをマルチプレクスしてライトしても、ライト速度は劣化することはない。例えば論理ブロック0の論理ページ0〜論理ページ3をテンプブロック0にライトした後に、パリティブロック0の論理ページ0をライトした場合も、2個のテンプブロックにかかる拡張ページへのライトとテンプブロックテーブル7の更新が発生するのみで、既存の拡張ブロックにライト済みのデータをテンプブロックに移動する処理は発生しない。ゆえに、論理ブロックをライトしながら、対応するパリティブロックをライトする際においては高速ライトが実現できる。
以上が、本実施の形態におけるメモリ制御の要素となる論理ブロック、パリティブロック、論理ページ、拡張ブロック、拡張ページ、論物変換テーブル、空ブロックテーブル、テンプブロック、テンプブロックテーブルについての説明である。
以下、図2を参照にしながら、本半導体記録装置のライト時の動作について、さらに詳細に説明する。
本半導体記録装置におけるライト命令とライト対象のセクタ番号とそのセクタ番号にかかるユーザデータは、外部インターフェイス手段1を介して入力される。説明を簡単にするため、ライト対象のセクタは、上述した論理ページのアライメントと一致した16KBの整数倍に限定して説明する。外部インターフェイス手段1を介して入力される論理ページにかかるユーザデータは第1のECC処理手段2に入力される。
第1のECC処理手段2は、メモリとECCエンジンによって構成されており、入力された16KBのユーザデータをメモリにライトする。そして、4KB間隔で1バイトずつリードし、合計4バイトのユーザデータをECCエンジンに入力する。ECCエンジンは、4バイトのEXOR演算をして1バイトのECCパリティを生成する。このように順次ECCパリティを生成すれば、論理ページ当り4KBのECCパリティが生成されることになる。そして、作成した4KBのパリティは、パリティ保持手段3のメモリに格納される。4KB単位で1バイトずつ抽出すれば、ECC符号を構成する1バイトのシンボルが異なる物理ブロックにライトされることになり、物理ブロックの後発不良、データ保持特性の劣化に対する誤り耐性を強化することができる。
一方、第1のECC処理手段2の内部メモリに格納されているECCパリティを生成済みのユーザデータは、ブロック管理手段4により読み出され、4個のフラッシュメモリ10a〜10d夫々にライトするユーザデータに分割される。論理ページに対応する16KBのユーザデータの分割をセクタ番号で示すと、分割されたユーザデータは、(セクタ番号%32)/4=0の場合はフラッシュメモリ0に、(セクタ番号%32)/4=1の場合はフラッシュメモリ1に、(セクタ番号%32)/4=2の場合はフラッシュメモリ2に、(セクタ番号%32)/4=3の場合はフラッシュメモリ3にそれぞれライトされる。
ブロック管理手段4では、外部インターフェイス手段1を介して受信したライト命令で指定されたセクタ番号を、本半導体記録装置のフラッシュメモリ10a〜10dのアドレスに変換する。フラッシュメモリ10a〜10dのアドレスは物理ブロック番号とページ番号によって一意で定まる。
そこで、ブロック管理手段4では、ホスト機器が指定するセクタ番号を当該半導体記録装置の論理ブロック番号と論理ページ番号に変換する。そして、論物変換テーブル5、空ブロックテーブル6、テンプブロックテーブル7を参照しながら、ブロック管理手段4は、論理ブロック番号と論理ページ番号をフラッシュメモリ10a〜10dの夫々の物理ブロック番号とページ番号に変換し、フラッシュメモリ10a〜10dの夫々のユーザデータとともに第2のECC処理手段8a〜8dに転送する。
さらに、パリティ保持手段3に保持されているECCパリティも同様に、ブロック管理手段4により読み出され、4個のフラッシュメモリ10a〜10d夫々にライトするパリティデータに分割される。論理ページに対応する16KBのパリティデータの分割をセクタ番号で示すと、分割されたパリティデータは、(セクタ番号%128)/32=0の場合はフラッシュメモリ0に、(セクタ番号%128)/32=1の場合はフラッシュメモリ1に、(セクタ番号%128)/32=2の場合はフラッシュメモリ2に、(セクタ番号%128)/32=3の場合はフラッシュメモリ3に、それぞれライトされる。
ユーザデータの4分割とパリティデータの4分割における計算式の違いは、パリティデータは16KBのユーザデータに対して4KBのパリティデータが生成され、論理ページ分の16Kバイトのパリティデータを作成するには64KBのユーザデータを要するからである。
そして、パリティ保持手段3から読み出されたパリティデータも同様に、ブロック管理手段4は、当該パリティデータが関連するセクタ番号をパリティブロック番号とその論理ページ番号に変換する。さらにブロック管理手段4は、論物変換テーブル5、空ブロックテーブル6、テンプブロックテーブル7を参照しながら、フラッシュメモリ10a〜10dの夫々の物理ブロック番号とページ番号に変換する。そして、フラッシュメモリ10a〜10dの夫々のユーザデータとともに第2のECC処理手段8a〜8dに転送する。
図11にユーザデータとユーザデータに関連するパリティデータのフラッシュメモリにおけるアライメントを示す。同図(a)は1個の論理ブロックと4個のフラッシュメモリの物理ブロックとの関係を示しており、各論理ページのデータが同一の番号を有する拡張ページにライトされている。同図(a)では論理ブロックの全データがライト済みであることを示す。同図(b)は同図(a)の論理ブロックと関連しているパリティブロックと4個のフラッシュメモリの物理ブロックとの関係を示しており、各論理ページのデータが同一の番号を有する拡張ページにライトされている。1個の論理ブロックに関連するパリティデータは、パリティブロックの1/4のデータ量に相当し、論理ブロックの論理ページ0にかかるパリティデータは、パリティブロックの論理ページ0のフラッシュメモリ0の部分に相当する。同様に、論理ブロックの論理ページ1にかかるパリティデータは、パリティブロックの論理ページ0のフラッシュメモリ1の部分に相当し、論理ブロックの論理ページ2にかかるパリティデータは、パリティブロックの論理ページ0のフラッシュメモリ2の部分に相当し、論理ブロックの論理ページ3にかかるパリティデータは、パリティブロックの論理ページ0のフラッシュメモリ3の部分に相当し、論理ブロックの論理ページ63にかかるパリティデータは、パリティブロックの論理ページ15のフラッシュメモリ3の部分に相当する。
第2のECC処理手段8a〜8dは、4個のフラッシュメモリ10a〜10d夫々に対応して4系統実装する。夫々の第2のECC処理手段では、ホスト側からのアクセスの単位がセクタ(=512バイト)であることを考慮し、入力される4Kバイトのデータを8分割し、8分割した夫々の512バイトに対して16バイトのパリティを付加したリードソロモン符号を生成する。このような構成にすれば、512バイト当たり、最大8バイトのエラーを訂正することができる。
フラッシュメモリアクセス手段9a〜9dは、4個のフラッシュメモリ10a〜10d夫々に対応して4系統実装する。夫々のフラッシュメモリアクセス手段では、フラッシュメモリのアドレス、ライトに関するコマンドを発行し、第2のECC処理手段によって生成された第2のECCパリティ付データを夫々のフラッシュメモリにライトする。
次に、第1のECC処理手段2のメモリに格納されているユーザデータとパリティ保持手段3に格納されているパリティデータの処理シーケンスについて説明する。
図11に示すように、パリティデータを4個のフラッシュメモリ10a〜10dに並列にライトするには単位論理ページのデータサイズ(=16KB)に相当するパリティデータが必要である。よって、4個の論理ページに相当する64KBのユーザデータをライトした後に、それに対応する16KBのパリティデータをライトするのが効率がよい。そこで、64KBのユーザデータのライトと、関連づけられた16KBのパリティデータのライトを1ライトシーケンスとする。そして、上記ライトシーケンスを16回繰り返すと1個の論理ブロックのライトと対応するパリティデータのライトが完了する。
このとき、論理ブロックとパリティブロック夫々に対応づけられた2個の拡張ブロックに対して交互にライトを実施するように制御するのが望ましい。そのため、ライト対象の論理ブロックとパリティブロック夫々を、テンプブロックとしてテンプブロックテーブル7に登録してから、上記ライトシーケンスが繰り返し実施される。これにより、テンプブロックに対応づけられた論理ブロックまたはパリティブロックにかかるデータをライトする限りにおいては、論理ブロックまたはパリティブロックに対応づけられた夫々のテンプブロックの拡張ページに順次、夫々のブロックにかかるデータをライトすることが可能である。
さらに、(数2)に示すように、連続する4論理ブロックにかかるパリティデータが1パリティブロックとして対応づけられているので、上記シーケンスを連番の4個の論理ブロックを連続して実施するのが最も効率がよい。
図12に、連番の4個の論理ブロックと対応するパリティブロックのフラッシュメモリにおけるアライメントを示す。同図(a)は連番の4個の論理ブロックと4個のフラッシュメモリの関係を示す。ここで、1個の拡張ブロックを構成する4個の物理ブロックは同一の物理ブロック番号である必要はなく、4個のフラッシュメモリから抽出されていればよい。上述したように、フラッシュメモリ10a〜10dからの物理ブロックの抽出は空ブロックテーブル6を利用して行い、その結果を論物変換テーブル5、テンプブロックテーブル7に反映すれば良い。同図(b)は同図(a)の4個の論理ブロックと対応しているパリティブロックと4個のフラッシュメモリとの関係を示す。同図(b)によると、論理ブロック0にかかるパリティデータ(パリティブロックの論理ページ0〜論理ページ15に対応する)が、当該パリティブロックと対応づけられた拡張ブロックの拡張ページ0〜拡張ページ15にライトされる。また、論理ブロック1にかかるパリティデータ(パリティブロックの論理ページ16〜論理ページ31に対応する)が、当該パリティブロックと対応づけられた拡張ブロックの拡張ページ16〜拡張ページ31にライトされる。また、論理ブロック2にかかるパリティデータ(パリティブロックの論理ページ32〜論理ページ47に対応する)が、当該パリティブロックと対応づけられた拡張ブロックの拡張ページ32〜拡張ページ47にライトされる。さらに、論理ブロック3にかかるパリティデータ(パリティブロックの論理ページ48〜論理ページ63に対応する)が、当該パリティブロックと対応づけられた拡張ブロックの拡張ページ48〜拡張ページ63にライトされる。
次に、連番の4個の論理ブロックと関連づけられたパリティブロックを上記ライトシーケンスでライトする場合のテンプブロックの状態について説明する。テンプブロックの状態は、以下の8状態が発生する。
(S0)テンプブロック0に論理ブロック0、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S1)論理ブロック0のライトが終了し、テンプブロック0を論理ブロック0から論理ブロック1に更新している状態。
(S2)テンプブロック0に論理ブロック1、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S3)論理ブロック1のライトが終了し、テンプブロック0を論理ブロック1から論理ブロック2に更新している状態。
(S4)テンプブロック0に論理ブロック2、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S5)論理ブロック2のライトが終了し、テンプブロック0を論理ブロック2から論理ブロック3に更新している状態。
(S6)テンプブロック0に論理ブロック3、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S7)論理ブロック3のライトが終了し、パリティブロック0のライトが終了し、テンプブロック0およびテンプブロック1を、ホスト機器が発行する新規の論理ブロックとそれに関連づけられたパリティブロックに更新している状態。
(S0)テンプブロック0に論理ブロック0、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S1)論理ブロック0のライトが終了し、テンプブロック0を論理ブロック0から論理ブロック1に更新している状態。
(S2)テンプブロック0に論理ブロック1、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S3)論理ブロック1のライトが終了し、テンプブロック0を論理ブロック1から論理ブロック2に更新している状態。
(S4)テンプブロック0に論理ブロック2、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S5)論理ブロック2のライトが終了し、テンプブロック0を論理ブロック2から論理ブロック3に更新している状態。
(S6)テンプブロック0に論理ブロック3、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S7)論理ブロック3のライトが終了し、パリティブロック0のライトが終了し、テンプブロック0およびテンプブロック1を、ホスト機器が発行する新規の論理ブロックとそれに関連づけられたパリティブロックに更新している状態。
上記の遷移によれば、ユーザデータをライトしたテンプブロック0は4回更新され、パリティデータをライトしたテンプブロック1は1回のみ更新される。この場合の4論理ブロックとそのパリティデータをライトする時間の総和は、1拡張ブロックにかかる時間をT0とすれば、5*T0となる。
なお、パリティ保持手段3にパリティブロック相当分のメモリを実装し、連番の4個の論理ブロックをライトした後に、パリティブロックをライトしても同様の時間でライトが終了することはいうまでもない。この場合のテンプブロック数は1個あれば十分であり、テンプブロックの遷移もより単純になることは明らかである。
また、連番の4個の論理ブロックは順番にライトする場合について説明したが、同一パリティブロックと関連している論理ブロックの順番は、ランダムであっても逆順であっても、同様の効果が得られる。その場合はテンプブロックテーブル7における各拡張ページにライトされた論理ページ番号の項目は連番とならない。
つぎに、ランダムな番号の4個の論理ブロックと関連づけられたパリティデータをライトする場合のテンプブロックの状態遷移とライトに要する時間について説明する。一例として、ブロック番号0、4、8、12の論理ブロックとそのパリティデータをライトする場合について説明する。ブロック番号0、4、8、12の論理ブロックに対応するパリティブロックの番号は夫々、0、1、2、3となる。よってテンプブロックの状態は以下のように遷移する。
(S0)テンプブロック0に論理ブロック0、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S1)論理ブロック0のライトが終了し、テンプブロック0を論理ブロック0から論理ブロック1に更新している状態。
(S10)テンプブロック1において、パリティブロック0の論理ブロック0と関連づけられた部分のライトが終了し、論理ブロック1〜論理ブロック3と関連づけられたパリティブロック0の残データをライト済みの拡張ブロックからテンプブロック1に移動している状態。
(S11)S10の処理が終了し、テンプブロック1をパリティブロック0からパリティブロック1に更新している状態。
(S2)テンプブロック0に論理ブロック4、テンプブロック1にパリティブロック1が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S3)論理ブロック4のライトが終了し、テンプブロック0を論理ブロック4から論理ブロック8に更新している状態。
(S30)テンプブロック1において、パリティブロック1の論理ブロック4と関連づけられた部分のライトが終了し、論理ブロック5〜論理ブロック7と関連づけられたパリティブロック1の残データをライト済みの拡張ブロックからテンプブロック1に移動している状態。
(S31)S30の処理が終了し、テンプブロック1をパリティブロック1からパリティブロック2に更新している状態。
(S4)テンプブロック0に論理ブロック8、テンプブロック1にパリティブロック2が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S5)論理ブロック8のライトが終了し、テンプブロック0を論理ブロック8から論理ブロック12に更新している状態。
(S50)テンプブロック1において、パリティブロック2の論理ブロック8と関連づけられた部分のライトが終了し、論理ブロック9〜論理ブロック11と関連づけられたパリティブロック2の残データをライト済みの拡張ブロックからテンプブロック1に移動している状態。
(S51)S50の処理が終了し、テンプブロック1をパリティブロック2からパリティブロック3に更新している状態。
(S6)テンプブロック0に論理ブロック12、テンプブロック1にパリティブロック3が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S7)論理ブロック12のライトが終了し、テンプブロック0を、ホスト機器が発行する新規の論理ブロックに更新している状態。
(S70)テンプブロック1において、パリティブロック3の論理ブロック12と関連づけられた部分のライトが終了し、論理ブロッ13〜論理ブロック15と関連づけられたパリティブロック3の残データをライト済みの拡張ブロックからテンプブロック1に移動している状態。
(S71)S70の処理が終了し、テンプブロック1をパリティブロック3からホスト機器が発行する新規の論理ブロックと対応づけられたパリティブロックに更新している状態。
(S0)テンプブロック0に論理ブロック0、テンプブロック1にパリティブロック0が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S1)論理ブロック0のライトが終了し、テンプブロック0を論理ブロック0から論理ブロック1に更新している状態。
(S10)テンプブロック1において、パリティブロック0の論理ブロック0と関連づけられた部分のライトが終了し、論理ブロック1〜論理ブロック3と関連づけられたパリティブロック0の残データをライト済みの拡張ブロックからテンプブロック1に移動している状態。
(S11)S10の処理が終了し、テンプブロック1をパリティブロック0からパリティブロック1に更新している状態。
(S2)テンプブロック0に論理ブロック4、テンプブロック1にパリティブロック1が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S3)論理ブロック4のライトが終了し、テンプブロック0を論理ブロック4から論理ブロック8に更新している状態。
(S30)テンプブロック1において、パリティブロック1の論理ブロック4と関連づけられた部分のライトが終了し、論理ブロック5〜論理ブロック7と関連づけられたパリティブロック1の残データをライト済みの拡張ブロックからテンプブロック1に移動している状態。
(S31)S30の処理が終了し、テンプブロック1をパリティブロック1からパリティブロック2に更新している状態。
(S4)テンプブロック0に論理ブロック8、テンプブロック1にパリティブロック2が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S5)論理ブロック8のライトが終了し、テンプブロック0を論理ブロック8から論理ブロック12に更新している状態。
(S50)テンプブロック1において、パリティブロック2の論理ブロック8と関連づけられた部分のライトが終了し、論理ブロック9〜論理ブロック11と関連づけられたパリティブロック2の残データをライト済みの拡張ブロックからテンプブロック1に移動している状態。
(S51)S50の処理が終了し、テンプブロック1をパリティブロック2からパリティブロック3に更新している状態。
(S6)テンプブロック0に論理ブロック12、テンプブロック1にパリティブロック3が割り当てられ、夫々のテンプブロックに交互にライトが発生している状態。
(S7)論理ブロック12のライトが終了し、テンプブロック0を、ホスト機器が発行する新規の論理ブロックに更新している状態。
(S70)テンプブロック1において、パリティブロック3の論理ブロック12と関連づけられた部分のライトが終了し、論理ブロッ13〜論理ブロック15と関連づけられたパリティブロック3の残データをライト済みの拡張ブロックからテンプブロック1に移動している状態。
(S71)S70の処理が終了し、テンプブロック1をパリティブロック3からホスト機器が発行する新規の論理ブロックと対応づけられたパリティブロックに更新している状態。
このように、ランダムな番号の4個の論理ブロックをライトする場合は、連番の4個の論理ブロックをライトする場合と比較して、上記(S10)(S11)(S30)(S31)(S50)(S51)(S70)(S71)の状態が追加される。(S11)(S31)(S51)(S71)は、テーブル更新処理であり、比較的高速な処理が実現可能であるが、(S10)(S30)(S50)(S70)は、データのブロック間移動を伴う処理であり、各状態で、拡張ブロックの75%相当分のライトが発生する。単位拡張ブロックのライトにかかる時間はT0なので、(S10)(S30)(S50)(S70)の状態における処理時間は、0.75*T0となる。ゆえに、ランダムな番号の4個の論理ブロックとそのパリティデータをライトするのに要する時間の総和は8*T0(=5*T0+4*0.75*T0)となる。これは、連番の4個の論理ブロックをライトするのに要する時間の1.6倍である。
ランダムな番号の4個の論理ブロックとそのパリティデータをライトする場合に要する時間を緩和する手法について、以下説明する。例えば、フラッシュメモリ10a〜10dが1セルに2ビットを記録する4値NANDフラッシュメモリである場合は、パリティブロックに対応づけられた拡張ブロックにおいて、物理ブロックの半分のページのみをライトするように制御すればよい。
フラッシュセルに2ビット記録するフラッシュメモリでは、(ビット0,ビット1)の2ビットにおいて、フラッシュセルのフローティングゲートに注入する電子数をVthと比較して以下のように定義されている。
(1,1):電子未注入状態
(0,1):1/3*Vthまで電子注入
(0,0):2/3*Vthまで電子注入
(1,0):Vthまで電子注入
そして、64ページからなる物理ブロックのページを32ページの1stページと32ページの2ndページに分類し、1stページのライトでは(1,1)→(0,1)の電子注入のみが実施される。2ndページのライトでは(0,1)→(0,0)の遷移および(1,1)→(1,0)の遷移が実行される。ゆえに、ライトに要する時間は電子注入数に比例するため、1stページのライトは2ndページのライトよりも約3倍高速に実行することができる。この性質を利用して、パリティブロックに割り当てられた拡張ブロックにおいて、ライトするページをNANDフラッシュメモリの1stページに限定すれば、上記(S10)(S30)(S50)(S70)にかかる処理を半分の時間で実行できる。
(1,1):電子未注入状態
(0,1):1/3*Vthまで電子注入
(0,0):2/3*Vthまで電子注入
(1,0):Vthまで電子注入
そして、64ページからなる物理ブロックのページを32ページの1stページと32ページの2ndページに分類し、1stページのライトでは(1,1)→(0,1)の電子注入のみが実施される。2ndページのライトでは(0,1)→(0,0)の遷移および(1,1)→(1,0)の遷移が実行される。ゆえに、ライトに要する時間は電子注入数に比例するため、1stページのライトは2ndページのライトよりも約3倍高速に実行することができる。この性質を利用して、パリティブロックに割り当てられた拡張ブロックにおいて、ライトするページをNANDフラッシュメモリの1stページに限定すれば、上記(S10)(S30)(S50)(S70)にかかる処理を半分の時間で実行できる。
次に、図2を参照にしながら、本実施の形態の半導体記録装置のリード時の動作について詳細に説明する。本実施の形態におけるリード命令とリード対象のセクタ番号は、外部インターフェイス手段1を介して入力され、ブロック管理手段4に転送される。ブロック管理手段4では、外部インターフェイス手段1を介して受信したライト命令で指定されたセクタ番号を、本半導体記録装置のフラッシュメモリ10a〜10dのアドレスに変換する。フラッシュメモリ10a〜10dのアドレスは、物理ブロック番号とページ番号によって一意で定まる。そこで、ブロック管理手段4では、ホスト機器が指定するセクタ番号を当該半導体記録装置の論理ブロック番号と論理ページ番号に変換する。そして、論物変換テーブル5、テンプブロックテーブル7を参照しながら、ブロック管理手段4は、論理ブロック番号と論理ページ番号をフラッシュメモリ10a〜10d夫々の物理ブロック番号とページ番号に変換し、フラッシュメモリアクセス手段9a〜9dに転送する。夫々のフラッシュメモリアクセス手段9a〜9dでは、フラッシュメモリ10a〜10dにアドレス、リードに関するコマンドを発行することによりデータをリードする。
フラッシュメモリ10a〜10dよりリードされたデータは、第2のECC処理手段8a〜8dに入力され、第2のECC符号を利用して誤り訂正を実施する。第2のECC処理手段8a〜8dで訂正可能であった場合は、リードしたデータを、外部インターフェイス手段1を介して出力する。
第2のECC処理手段8a〜8dで、誤り訂正が不可と判定された場合について以下説明する。第2のECC処理手段8a〜8dは、誤り訂正結果が不可であったことをブロック管理手段4に報告する。第1のECC処理手段2で第2のECC処理手段8a〜8dで訂正不可であったデータの誤り訂正を行うには、訂正不可であったセクタに対応する論理ブロックのデータとパリティブロックのデータが必要である。よって、ブロック管理手段4は、論物変換テーブル5およびテンプブロックテーブル7を参照にしながら、第2のECC処理手段8a〜8dで誤り訂正が不可であったフラッシュメモリ番号と物理ブロック番号のページ番号より、エラー発生ページと対応する論理ブロック番号とパリティブロック番号と夫々の論理ページ番号を導出する。
より具体的には、フラッシュメモリ0の300番の物理ブロックのページ0の先頭のセクタ(=512B)で誤りが検出されたとする。これに対応する論理ブロックと論理ページは図5(a)に示す論物変換テーブル5と(数3)より、ブロック番号3の論理ブロックの論理ページ0の最初の512バイトであると判定される。セクタ番号に換算すると、6144番(=2048*3+0)となる。6144のセクタに対応するパリティブロック番号は、(数1)(数2)より導出され、0番のパリティブロックとなる。そして、その論理ページ番号は、(数4)より導出され48番の論理ページとなる。パリティブロックの1論理ページに、論理ブロック4ページ分のパリティデータが順番に格納されている。よって、6144番のセクタに対応するパリティデータは0番の論理ページのフラッシュ0の最初の512バイトとなる。
そこで、当該パリティブロックに対応する物理ブロック位置を図5(b)の論物変換テーブル5を参照しながら導出すると、フラッシュメモリ0の400番の物理ブロックがそれに対応していることがわかる。
以上より、フラッシュメモリ0の300番の物理ブロックのページ0の先頭のセクタ(=512B)での誤りを、第1のECC処理手段2により訂正するには、フラッシュメモリ1の600番の物理ブロックの0ページ、フラッシュメモリ2の900番の物理ブロックの0ページ、フラッシュメモリ3の100番の物理ブロックの0ページ及びフラッシュメモリ0の400番の物理ブロックの48ページにおいて、各ページの先頭の512バイトをリードし、各ページから1バイト抽出した4バイトのEXOR計算を512回実行すれば、フラッシュメモリ0の300番の物理ブロックのページ0の先頭のセクタ(=512B)での誤りを訂正することができる。
以上説明したように、本実施の形態における半導体記録装置は、4個のフラッシュメモリの物理ブロックにより拡張ブロックを構成し、連続する2048個のセクタのユーザデータが割り当てられた論理ブロックを、第2のECC符号を付加して拡張ブロックにライトし、第1のECC処理手段2により4個の論理ブロックのユーザデータと関連づけられたパリティデータを作成し、パリティデータによって構成されるパリティブロックを、第2のECC符号を付加して拡張ブロックにライトする。そして、半導体記録装置は、拡張ブロックからユーザデータを連続に読み出し、第2のECC符号で誤り訂正が可能であった場合は、誤り訂正を行い、誤り訂正を行ったユーザデータを外部インターフェイス手段1より出力する。そして、半導体記録装置は、第2のECC処理手段8a〜8dでエラー訂正不可の場合は、拡張ブロックよりエラー訂正不可のユーザデータと第1のECC符号を構成しているユーザデータとパリティデータを拡張ブロックよりリードし、第1のECC処理手段2によりエラー訂正した後に、ユーザデータを外部インターフェイス手段1より出力する。
以上説明したように、第2のECC処理手段8a〜8dでエラー訂正可能な場合は、フラッシュメモリ10a〜10dからのリードを常時4並列で実施でき、かつフラッシュメモリに発行するリードアドレスの不連続点は物理ブロック境界に限定される。ゆえに、第2のECC処理手段8a〜8dでエラー訂正可能な場合は、従来の方式と比較して高速にデータを読み出すことが可能となる。
また、パリティブロックと関連づけられた4個の論理ブロックを連番にすれば、連番の論理ブロックにかかるライトコマンドを連続して発行された場合に、連番の論理ブロックに対応づけられたパリティブロックを単一拡張ブロックにライトすることができるため、パリティブロックのデータを高速にライトすることができ、ライト速度を高速化することができる。
また、論理ブロックおよびパリティブロック夫々と対応づけられている拡張ブロックに加えて、ライトコマンドの実行中は、ライトコマンドに対応する新規の拡張ブロックとしてテンプブロックを2個割り当て、夫々のテンプブロックをユーザデータ用のテンプブロック、パリティデータ用のテンプブロックとして使用すれば、ユーザデータと、それに対応するパリティデータを交互に2個の拡張ブロックにライトすることができる。これにより、ユーザデータとパリティデータを交互にライトできるので、パリティ保持手段3に要するメモリ量を抑制しつつ、高速なライトが実現できる。
また、ECC符号を構成するユーザデータを、拡張ブロックを構成する複数の物理ブロックに均等に分散してライトすれば、何れかの物理ブロックが後発半導体不良となった場合でもECC符号によりエラー訂正できるので、良好なエラー耐性の半導体記録装置を提供することができる。
また、拡張ブロックを構成する複数の物理ブロックを、並列にアクセスができるように抽出すれば、拡張ブロックを構成する物理ブロック数倍のライトおよびリードの転送性能が実現できる。
また、拡張ブロックを構成する物理ブロック数は2の階乗であれば、汎用のホスト機器で管理している論理ブロックとの整合性がとれるため、本半導体記録装置を汎用ホストで使用した場合も、良好な転送性能を保持することができる。
さらに、パリティブロック用に割り与えられた拡張ブロックを、多値メモリの1stページのみに限定すれば、論理ブロックをランダムにライトされた場合に発生するパリティデータが部分ライトされた拡張ブロックの更新処理を高速化できるため、ライト転送レートの劣化を抑制することができる。
なお、本実施の形態では半導体記録装置を構成するメモリをフラッシュメモリとして説明したが、不揮発性メモリであれば同様の効果が得られることはいうまでもない。また、第1のECC符号が単純パリティにしたが複数バイトのパリティにすればエラー訂正能力が向上することはいうまでもない。
また、第1のECC符号を構成するシンボル数はパリティを含め5個にしたが、それに限定されるものではない。
さらに、拡張ブロックを構成する4個の物理ブロックを別のフラッシュメモリとしたが、並列にライト可能な物理ブロックであれば同様の効果が得られることはいうまでもない。
(実施の形態2)
本実施の形態は実施の形態1の変形であり、実施の形態1ではパリティデータを半導体記録装置内部で発生したが、ホスト機器側でパリティデータを発生して所定のセクタ番号に記録するものである。
本実施の形態は実施の形態1の変形であり、実施の形態1ではパリティデータを半導体記録装置内部で発生したが、ホスト機器側でパリティデータを発生して所定のセクタ番号に記録するものである。
図13に本実施の形態の半導体記録システムについて説明する。同図において、データメモリ20は、半導体記録装置へ書き込むデータあるいは半導体記録装置からリードされたデータを蓄積する。ドライバ21は、パリティデータの処理シーケンスと、パリティデータをライト/リードするセクタ番号を管理する。外部インターフェイス手段22は、半導体記録装置に対してライト/リードコマンドを発生すると共に、コマンドと関連するデータの送受信を行う。なお、図2と同一の符号を付したブロックは図2と同様の機能であるため説明を省略する。
以上のように構成された半導体記録システムの動作について以下説明する。
図13の半導体記録装置は図2と同様に、256KBのサイズの物理ブロック4個で構成される1MBの拡張ブロックをブロック管理の基本単位とし、論理ブロックと拡張ブロックを対応づけ、1000個の論理ブロックに対応するデータを、外部インターフェイス手段1を介してライト/リードする。
そして、実施の形態1で説明したテンプブロックとして拡張ブロックが2個割り与えられる。このような半導体記録装置では、任意の2個の論理ブロックに対して交互にライトを実施した場合においても、夫々の論理ブロックと対応づけられたテンプブロックは更新されることはなく、同一の拡張ブロックのサイズ分データを連続してライトできる。
本実施の形態の半導体記録システムでは、0番〜799番の論理ブロックにユーザデータをライトし、800番〜999番の論理ブロックにパリティデータをライトする。以下、0〜799番の論理ブロックをユーザブロック、800〜999番の論理ブロックをパリティブロックと定義する。パリティブロックは、ドライバ21により管理する。
パリティデータは、実施の形態1と同様に、第1のECC処理手段2により4バイトのユーザデータをEXOR計算することにより生成される。そして、第1のECC符号を構成するシンボルを異なる物理ブロックにライトするのが、エラー耐性の点から考えると望ましい。論理ブロックが4個の物理ブロックで構成されている場合は、第1のECC符号を構成するユーザデータは、論理ブロック内部で、4個の物理ブロックに分散されるように配置される。
いいかえれば、第1のECC符号を構成するユーザデータシンボル数と、論理ブロックを構成する物理ブロック数が一致するように論理ブロックを定義すればよい。
つぎに、ユーザブロックとパリティブロックの関連づけを(数5)に示す。
たとえば、0〜3番のユーザブロックと対応する800番のパリティブロックにデータをライトする場合には、64KBのユーザデータと16KBのパリティデータのライトを単位シーケンスとし、本シーケンスが64回繰り返して実施される。このとき、最初の16シーケンスのテンプブロックは、0番の論理ブロックと800番の論理ブロックであり、次の16シーケンスは1番の論理ブロックと800番の論理ブロック、その次の16シーケンスは2番の論理ブロックと800番の論理ブロック、最終16シーケンスは3番の論理ブロックと800番の論理ブロックとなる。
上記シーケンスが成立するには、ライトの初期状態においてテンプブロックがアサインされていないことが条件である。具体的には、初期に2個の論理ブロックが割り与えられていて、0番の論理ブロックに新規にライトする場合、0番の論理ブロックと初期に割り与えられていた論理ブロックがテンプブロックとなり、次の800番の論理ブロックのライトにおいて、初期に割り与えられていた論理ブロックの替わりとして、800番の論理ブロックがテンプブロックになるとは限らないからである。
この課題は、4個の連番のユーザブロックをライトする直前に、テンプブロックを開放するコマンドをホスト機器が発行することにより解決できる。
次に、本半導体記録システムのリード動作について説明する。ユーザデータのリードはホスト装置から0番〜799番の論理ブロックにかかるリードコマンドを発行することにより行われる。半導体記録装置において第2のECC処理手段8a〜8dで誤り訂正可能である場合は、実施の形態1と同様にユーザデータを外部インターフェイス手段1よりリードすることができる。
第2のECC処理手段8a〜8dで誤り訂正が不可であった場合、ドライバ21は、外部インターフェイス手段1からの割り込み等により、ECCエラーの報告を受信する。そして、ステータスリードコマンドを発行し、ECCエラーが発生したセクタ番号をリードする。実施の形態1と同様に、ECCエラーとなったセクタと第1のECC符号で関連づけられているユーザデータのセクタ番号及びパリティデータのセクタ番号は予め定められている。そこで、ドライバ21はECCエラーとなったセクタと関連づけられている他のセクタ番号を算出し、外部インターフェイス手段22を介して関連するセクタのリードコマンドを発行する。半導体記録装置よりリードされたECCエラーとなったセクタと関連づけられている他のセクタのデータは、第1のECC処理手段2により誤り訂正される。誤り訂正の手法は実施の形態1と同様なので説明を省略する。
なお、ホスト機器のデータメモリ20のサイズに余裕がある場合は、4連番のユーザブロックと関連づけられたパリティデータをデータメモリ20に格納し、4連番のユーザブロックをライトした後に、パリティブロックをライトしても同様の効果が得られることはいうまでもない。この場合は、特定の論理ブロックに対してライトコマンドを連続して発行する場合にのみ高速ライトが可能であれば良いため、テンプブロックが1個の半導体記録装置にも適応可能となる。
以上説明したように、本実施の形態の半導体記録システムのホスト機器は、所定バイトのユーザデータよりECCパリティを生成してECC符号を生成し、半導体記録装置の複数の物理ブロックで構成される論理ブロックをユーザデータ用の論理ブロックとユーザデータから生成されるパリティデータ用の論理ブロックに区分し、ユーザデータ用の論理ブロックは、ECC符号のユーザデータシンボルが異なる物理ブロックに配置されるようにアサインされていることを特徴とし、パリティデータ用の論理ブロックは連番からなるユーザデータ用の論理ブロックのデータと関連づけられていることを特徴としている。
これにより、ユーザデータ用の論理ブロックとパリティデータ用の論理ブロックが区分けされているため、フラッシュメモリ10a〜10dの連続したアドレスをリードすることができるので、半導体記録装置にライトされたユーザデータを高速にアップロードすることができる。
また、汎用PCのドライバでECC符号を生成すれば、リード性能を劣化させることなく、汎用の半導体記録装置のエラー耐性を強化することも可能である。
さらに、本実施の形態のように、複数個の論理ブロックの部分データにかかるライトコマンドを混在させてもライト性能を保証できる半導体記録装置であれば、ホスト機器は、ユーザデータ用の論理ブロックとパリティデータ用の論理ブロックの部分データにかかるライトコマンドを混在して発行することが可能となり、ホスト機器におけるパリティデータ保持用のメモリ量を抑制することができる。
本実施の形態における半導体記録装置は、メモリカードなどの半導体記録装置に関し、特に内部の不揮発性メモリのデータ保持特性の低下および後発半導体不良に対応し、不揮発性メモリの物理ブロックに跨るECC符号を生成してライトすることで、物理ブロックの後発不良、データ保持特性のブロックバラツキを抑制することができる。よって、データ保持特性が良好でない多値フラッシュメモリを使用した半導体記録装置や高信頼性が要求される業務用映像記録分野で使用される。
1、22 外部インターフェイス手段
2 第1のECC処理手段
3 パリティ保持手段
4 ブロック管理手段
5 論物変換テーブル
6 空ブロックテーブル
7 テンプブロックテーブル
8a〜8d 第2のECC処理手段
9a〜9d フラッシュメモリアクセス手段
10a〜10d フラッシュメモリ
20 データメモリ
21 ドライバ
2 第1のECC処理手段
3 パリティ保持手段
4 ブロック管理手段
5 論物変換テーブル
6 空ブロックテーブル
7 テンプブロックテーブル
8a〜8d 第2のECC処理手段
9a〜9d フラッシュメモリアクセス手段
10a〜10d フラッシュメモリ
20 データメモリ
21 ドライバ
Claims (10)
- ユーザデータが入力される入力部と、
物理ブロックが複数ページによって構成される複数の不揮発性メモリにアクセスするアクセス制御部と、
前記入力部で入力されたユーザデータより、パリティデータを生成し、前記ユーザデータと前記パリティデータとを含むECC符号を生成するECC符号生成部と、
前記不揮発性メモリの複数の物理ブロックからなる拡張ブロックに対して、前記ECC符号を構成するユーザデータとパリティデータを、夫々異なる前記拡張ブロックに記録するよう制御する記録制御部と、
を備える半導体記録装置。 - 前記記録制御部は、
所定数の連続する論理アドレス空間を持つ論理ブロックと前記拡張ブロックとを関連づけ、連続する論理ブロックに対する前記ユーザデータを、複数の前記拡張ブロックに記録するとともに、
前記ユーザデータと関連づけられたパリティデータで構成されるパリティブロックと前記連続する論理ブロックとを関連付け、前記パリティデータを、単一の前記拡張ブロックに記録する
請求項1に記載の半導体記録装置。 - 前記記録制御部は、
前記論理ブロック及び前記パリティブロックと前記拡張ブロックとを関連づける論物変換テーブルと、
前記論理ブロック及び前記パリティブロックに対して、前記論物変換テーブルに登録された前記拡張ブロックとは異なる拡張ブロックをテンプブロックとして関連づけ、前記論理ブロックの論理ブロック番号および前記パリティブロックのパリティブロック番号によって管理するテンプブロックテーブルと、
を保持し、
前記ユーザデータ及び前記パリティデータを前記テンプブロックに記録する
請求項2に記載の半導体記録装置。 - 前記記録制御部は、
前記論理ブロックに対する前記ユーザデータと前記パリティブロックに対する前記パリティデータとを、前記物理ブロックを構成するページの整数倍のページサイズで混在させて記録する
請求項3に記載の半導体記録装置。 - 前記記録制御部は、
前記ECC符号を構成する前記ユーザデータを、前記拡張ブロックを構成する複数の物理ブロックに均等に分散して記録する
請求項1に記載の半導体記録装置。 - 前記アクセス制御部は、
前記拡張ブロックを構成する複数の物理ブロックに、並列にアクセス可能である
請求項1に記載の半導体記録装置。 - 前記記録制御部は、
前記拡張ブロックを構成する物理ブロック数を2の階乗とする
請求項1に記載の半導体記録装置。 - 前記不揮発性メモリは、1セルに2ビット以上保持できる多値不揮発性メモリであり、
前記記録制御部は、
前記不揮発性メモリのページとセルに格納するビットとを対応づけ、前記パリティデータに対する前記拡張ブロックを、前記不揮発性メモリの所定のビットに対応づけられたページで構成する
請求項3に記載の半導体記録装置。 - 半導体記録装置と、前記半導体記録装置へデータの記録要求を発行するホスト機器とで構成される半導体記録システムであって、
前記半導体記録装置は、
論理ブロックを複数の物理ブロックで構成し、
前記ホスト機器は、
所定バイトのユーザデータより、パリティデータを生成し、前記ユーザデータと前記パリティデータとを含むECC符号を生成するECC符号生成部と、
前記論理ブロックを、前記ユーザデータ用の論理ブロックと前記パリティデータ用に論理ブロックに区分し、連番からなるユーザデータ用の前記論理ブロックと前記パリティデータ用の論理ブロックとを関連付けて記録する記録要求を発行する記録要求発行部と、
を備える半導体記録システム。 - 前記記録要求発行部は、
前記ユーザデータ用の論理ブロックと前記パリティデータ用の論理ブロックの部分データにかかる記録要求を混在して発行する
請求項9に記載の半導体記録システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009291709A JP2011134031A (ja) | 2009-12-24 | 2009-12-24 | 半導体記録装置および半導体記録システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009291709A JP2011134031A (ja) | 2009-12-24 | 2009-12-24 | 半導体記録装置および半導体記録システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011134031A true JP2011134031A (ja) | 2011-07-07 |
Family
ID=44346706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009291709A Pending JP2011134031A (ja) | 2009-12-24 | 2009-12-24 | 半導体記録装置および半導体記録システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011134031A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541677A (zh) * | 2011-12-29 | 2012-07-04 | 苏州国芯科技有限公司 | 提高nandflash存储设备对照表加载速度的实现方法 |
KR20140093159A (ko) * | 2013-01-17 | 2014-07-25 | 가부시끼가이샤 도시바 | 기억 장치 및 기억 방법 |
US11977775B2 (en) | 2021-09-15 | 2024-05-07 | Kioxia Corporation | Memory system |
-
2009
- 2009-12-24 JP JP2009291709A patent/JP2011134031A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541677A (zh) * | 2011-12-29 | 2012-07-04 | 苏州国芯科技有限公司 | 提高nandflash存储设备对照表加载速度的实现方法 |
KR20140093159A (ko) * | 2013-01-17 | 2014-07-25 | 가부시끼가이샤 도시바 | 기억 장치 및 기억 방법 |
KR101581086B1 (ko) | 2013-01-17 | 2015-12-29 | 가부시끼가이샤 도시바 | 기억 장치 및 기억 방법 |
US10691542B2 (en) | 2013-01-17 | 2020-06-23 | Toshiba Memory Corporation | Storage device and storage method |
US11977775B2 (en) | 2021-09-15 | 2024-05-07 | Kioxia Corporation | Memory system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4787266B2 (ja) | スクラッチパッドブロック | |
US9292428B2 (en) | Memory system | |
JP5789767B2 (ja) | 半導体記録装置及び半導体記録装置の制御方法 | |
US7441067B2 (en) | Cyclic flash memory wear leveling | |
JP5686516B2 (ja) | Nandメモリのためのプログラミング管理データ | |
TWI498898B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US20110252187A1 (en) | System and method for operating a non-volatile memory including a portion operating as a single-level cell memory and a portion operating as a multi-level cell memory | |
JP2013114679A (ja) | ウェアレベル制御ロジックを含むメモリシステム | |
KR20070102485A (ko) | 클러스터 자동-정렬 | |
JP2009110548A (ja) | 不揮発性メモリおよびマルチストリーム更新追跡を伴う方法 | |
JP2012022422A (ja) | 半導体記録再生装置 | |
US20110238891A1 (en) | Method for suppressing errors, and associated memory device and controller thereof | |
US8433981B1 (en) | Coding across data blocks to reduce write amplification in NAND flash | |
JP5259138B2 (ja) | 記憶装置 | |
JP5929485B2 (ja) | 制御装置、記憶装置、データ書込方法 | |
JP2010079485A (ja) | 半導体記録装置 | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
CN112099985A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US8819332B2 (en) | Nonvolatile storage device performing periodic error correction during successive page copy operations | |
JP2010079486A (ja) | 半導体記録装置 | |
TW201526006A (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
JP2013093012A (ja) | メモリコントローラ、記憶装置 | |
JP2011134031A (ja) | 半導体記録装置および半導体記録システム | |
JP7177338B2 (ja) | メモリコントローラ装置、メモリコントローラ装置を有するメモリ装置及びメモリコントロール方法 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |