JP2010097600A - 半導体記録装置 - Google Patents
半導体記録装置 Download PDFInfo
- Publication number
- JP2010097600A JP2010097600A JP2009210878A JP2009210878A JP2010097600A JP 2010097600 A JP2010097600 A JP 2010097600A JP 2009210878 A JP2009210878 A JP 2009210878A JP 2009210878 A JP2009210878 A JP 2009210878A JP 2010097600 A JP2010097600 A JP 2010097600A
- Authority
- JP
- Japan
- Prior art keywords
- error
- data
- write
- physical block
- ecc
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1072—Adding 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
【課題】書き込みエラーが多発した場合においても、連続して書き込みが可能な信頼性の高い半導体記録装置を提供する。
【解決手段】書き込むべきデータをECC符号として不揮発性メモリを構成する複数の物理ブロックに記録し、書き込みエラーが発生した場合は、直前に発生した書き込みエラーと現書き込みエラーとの時間間隔を検出する。そして、時間間隔が第1の基準時間以内であれば誤り位置管理手段に、書き込みエラー発生ブロック番号と、書き込みエラー発生ブロックとECCのグループになっているブロック番号とを登録する。そして、所定のタイミングで、誤り位置管理手段に登録された書き込みエラーを読み出し、ECC符号により誤り訂正することによって復元し、再書き込みを行う。これにより、ホスト機器のバッファメモリのオーバーフローを防止できるため、書き込みエラーが頻発した場合においても、映像信号のリアルタイム記録が可能である。
【選択図】図4
【解決手段】書き込むべきデータをECC符号として不揮発性メモリを構成する複数の物理ブロックに記録し、書き込みエラーが発生した場合は、直前に発生した書き込みエラーと現書き込みエラーとの時間間隔を検出する。そして、時間間隔が第1の基準時間以内であれば誤り位置管理手段に、書き込みエラー発生ブロック番号と、書き込みエラー発生ブロックとECCのグループになっているブロック番号とを登録する。そして、所定のタイミングで、誤り位置管理手段に登録された書き込みエラーを読み出し、ECC符号により誤り訂正することによって復元し、再書き込みを行う。これにより、ホスト機器のバッファメモリのオーバーフローを防止できるため、書き込みエラーが頻発した場合においても、映像信号のリアルタイム記録が可能である。
【選択図】図4
Description
本発明は、メモリカードなどの半導体記録装置に関し、特に内部の不揮発性メモリで発生する書き込みエラーを修復するようにした半導体記録装置に関する。
従来、フラッシュメモリが内蔵されたカード型の記録媒体であるSD(Secure Digital)カード等の半導体記録装置は、超小型、超薄型であり、その取り扱い易さから、ディジタルカメラ、携帯機器等において画像等のデータを記録するために広く利用されている。
半導体記録装置に内蔵されているフラッシュメモリは、一定サイズの多数の物理ブロックから成り、物理ブロックの単位でデータを消去できるメモリである。昨今の大容量化の要請に対応すべく、フラッシュメモリは1セルで2ビット以上のデータが蓄積できる多値フラッシュメモリが商品化されている。
図1に、多値フラッシュメモリのフローティングゲートに蓄積する電子の数と閾値電圧(Vth)の関係の一例を示す。図1に示すように、4値のフラッシュメモリでは、フローティングゲートの電子の蓄積状態をその閾値電圧(Vth)に従って4状態で管理する。消去状態は電位が一番低く、これを(1,1)とする。そして電子が蓄積していくにつれて閾値電圧が離散的に上昇し、その状態を夫々(1,0)(0,0)(0,1)とする。このように、蓄積する電子の数に比例して電位が上昇するので、所定の電位の閾値に収まるように制御することによって、1つのメモリセルに2ビットのデータを記録することができる。
図2に4値のフラッシュメモリの1つの物理ブロックの模式図を示す。図2に示す物理ブロックは、2K個(Kは自然数)のページによって構成されている。そして、書き込み処理は、ページ番号0から昇順に実施される。ここで、ページ番号m(0≦m<K)のページとページ番号(K+m)番のページは1つのメモリセルを共有している関係(以下、セル共有関係という)にあるとする。セル共有関係にあるページにおいて、最初に書き込むページを第1ページ、次に書き込むページを第2ページと呼ぶ。つまり、ページ番号mへの書き込み(第1ページへの書き込み)と、ページ番号(K+m)への書き込み(第2ページへの書き込み)は、同一のセルに電子をチャージしていることになる。図1を参照に説明すると、第1ページへの書き込みでは、電位は最大でも半分までしか上昇しないように制御し、次の第2ページへの書き込みでは、電位は半分から最大まで電位が上昇するように制御する。
図3に、フラッシュメモリセルの状態遷移を示す。図3に示すように、フラッシュメモリの物理ブロックの1つのメモリセルの状態は、以下のように遷移する。
(a)データを消去した後は、メモリセルの状態は(1,1)
(b)第1ページの書き込み後は、セルの状態は(1,1)又は(1,0)
(c)第2ページの書き込み後は、セルの状態は(1,1),(1,0),(0,0)又は(0,1)
このように、多値のフラッシュメモリでは、Vthに複数の閾値を設けてフラッシュメモリの電子の蓄積量を制御する多値記録を行い、大容量化を実現している。
(a)データを消去した後は、メモリセルの状態は(1,1)
(b)第1ページの書き込み後は、セルの状態は(1,1)又は(1,0)
(c)第2ページの書き込み後は、セルの状態は(1,1),(1,0),(0,0)又は(0,1)
このように、多値のフラッシュメモリでは、Vthに複数の閾値を設けてフラッシュメモリの電子の蓄積量を制御する多値記録を行い、大容量化を実現している。
上記の(b),(c)の状態遷移についてさらに詳細に説明する。(b)においては、第1ページのメモリセルに1を書き込んだ後の状態が(1,1)であり、0を書き込んだ後の状態が(1,0)となる。さらに(c)においては、(b)での状態によって遷移が限定される。即ち、(b)で(1,1)の状態からの遷移は、1を書き込んだ場合は(1,1)の状態が保持され、0を書き込んだ場合は(0,1)となる。一方、(b)で(1,0)の状態からの遷移は、1を書き込んだ場合は(1,0)の状態が保持され、0を書き込んだ場合は(0,0)となる。
しかしながら、(b)から(c)への遷移の過程において、書き込みエラーが書き込み済みの第1ページに伝搬するといった問題が発生する。即ち、(b)で(1,1)であったメモリセルを(0,1)の状態にすべく電子注入を実施している際に、セル寿命等により、電位が(0,1)に対応するVthにまで上昇せずに、途中で停止してしまう場合がある。例えば(1,0)で停止したとすると、書き込み済みであった第1ページが1から0に遷移してしまう。この場合エラーは、第2ページのみならず、第1ページにも伝搬するといった問題があった。
図2において、第1ページの書き込み、即ちページ0〜ページ(K−1)への書き込みの場合には、書き込みエラーはVthが(1,1)の状態から(1,0)に上昇しないエラーである。また、第2ページへの書き込み、即ちページK〜ページ(2K−1)の書き込みによってVthの状態は(1,1)(1,0)(0,0)(0,1)になる。この場合の書き込みエラーには、次の2つの種類がある。
(エラー1) Vth(1,0)が(0,0)に上昇しない。
(エラー2) Vth(1,1)が(0,1)に上昇しない。
エラー1の場合は、Vth(1,0)とVth(0,0)が隣接しており、エラーが第1ページに伝搬することはない。しかしエラー2の場合はVth(1,1)とVth(0,1)の間に2状態をはさんでいる。特に、Vth(1,0)は第1ページの書き込み後の値であり、第2ページの書き込みによってVthが(1,0)にまでしか上昇しなかった場合は、第2ページが書き込みエラーになるのみならず、第1ページのデータも破壊してしまうことになる。例えば、ページKの書き込み中に書き込みエラーが発生すると、書き込み済みであったページ0のデータを破壊する可能性がある。
(エラー1) Vth(1,0)が(0,0)に上昇しない。
(エラー2) Vth(1,1)が(0,1)に上昇しない。
エラー1の場合は、Vth(1,0)とVth(0,0)が隣接しており、エラーが第1ページに伝搬することはない。しかしエラー2の場合はVth(1,1)とVth(0,1)の間に2状態をはさんでいる。特に、Vth(1,0)は第1ページの書き込み後の値であり、第2ページの書き込みによってVthが(1,0)にまでしか上昇しなかった場合は、第2ページが書き込みエラーになるのみならず、第1ページのデータも破壊してしまうことになる。例えば、ページKの書き込み中に書き込みエラーが発生すると、書き込み済みであったページ0のデータを破壊する可能性がある。
この課題を解決するために、特許文献1では、フラッシュメモリを制御するメモリコントローラにバッファメモリを設け、第2ページの書き込みが完了するまで第1ページのデータをバッファメモリに格納しておき、第2ページの書き込みで書き込みエラーが発生した場合は、バッファメモリのデータをロードして第1ページのデータもフラッシュメモリに再度書き込むように制御している。
特開2006−38366号公報
しかしながら、従来の手法では第2ページの書き込みが終了するまで第1ページのデータをバッファメモリに保持し、第2ページの書き込み時に書き込みエラーが発生した場合は、第1ページまで遡って再書き込みしなければならない。
また、セル共有ページの情報が公開されていない場合には、第1ページと第2ページの区別がつかないため、あるページへの書き込みでエラーが発生した場合には、その時点でそのページを含む物理ブロックの全ての書き込み済みのページにデータを再度書き込む必要が生じる。
多値フラッシュメモリの物理ブロックのサイズはプロセスの微細化に従って増大しており、物理ブロック単位の再書き込みにかかる時間は、物理ブロックサイズに比例して大きくなる。よって、ビットレートの高い映像信号をフラッシュメモリを用いた半導体記録装置にリアルタイム記録する場合には、再書き込みが連続して発生すると、ホスト機器側のバッファメモリがオーバーフローしてしまうといった問題があった。即ち、従来の手法では、多値フラッシュメモリにおける書き込みエラーで発生するエラー伝搬の修復は可能であるが、それに伴う再書き込みデータが増加し、再書き込み処理時間が増加してしまうという新しい問題が生じる。
本発明は上記課題を解決するものであり、書き込みエラーが多発した場合においても、連続して書き込みが可能な信頼性の高い半導体記録装置を提供することを目的とする。
この課題を解決するために、本発明の半導体記録装置は、複数の物理ブロックにより構成され、且つ物理ブロックが複数ページによって構成される不揮発性メモリを内蔵し、所定数の前記物理ブロックを1つのグループとする半導体記録装置において、データの書き込みの際に入力されたデータに対して、ECCパリティを付加して、ECC符号を生成するECC生成手段と、前記ECC生成手段によって生成されたECC符号の構成要素を1つのグループの各物理ブロックに分配するデータ分配手段と、前記データ分配手段によって分配されたデータを、不揮発性メモリの1つのグループの各物理ブロックに書き込むデータ書き込み手段と、不揮発性メモリへのデータの書き込み時に書き込みエラーを検出する書き込みエラー検出手段と、書き込みエラーが発生した物理ブロックと同一グループを構成する全ての物理ブロックを登録する誤り位置管理手段と、前記不揮発性メモリの1つのグループの物理ブロックよりECC符号を読み出すデータ読み出し手段と、前記誤り位置管理手段に登録されている書き込みエラーが生じた物理ブロックのデータを、その物理ブロックが含まれるグループのエラーが生じていない物理ブロックのデータによって誤り訂正する誤り訂正手段と、前回の書き込みエラー発生から第1の基準時間T1の経過前に生じた書き込みエラーの位置情報について前記誤り位置管理手段により登録し、所定のタイミングで前記誤り位置管理手段に登録されたブロックを読み出し、前記誤り訂正手段によりエラー物理ブロックのデータを訂正し、新規物理ブロックに再書き込みするよう制御するシーケンサと、具備するものがある。
ここで前記シーケンサは、前回の書き込みエラーの発生から第1の基準時間T1の経過後に生じた書き込みエラーに対して前記誤り訂正手段によりエラー物理ブロックのデータを訂正し、新規物理ブロックに再書き込みするようにしてもよい。
ここで前記シーケンサの所定のタイミングは、前の書き込みエラーがあった再書き込み処理から第2の基準時間T2以上が経過したタイミングとしてもよい。
ここで前記シーケンサの所定のタイミングは、書き込みエラーの再書き込み処理から第2の基準時間T2以上が経過した後にホスト機器からライトコマンドが与えられたときに、当該ライトコマンドに基づくデータの書き込み終了後のタイミングとしてもよい。
ここで前記シーケンサの所定のタイミングは、書き込みエラーの再書き込みから処理から第2の基準時間T2以上が経過した後にホスト機器からライトコマンドが与えられたときに、当該ライトコマンドに基づくデータの書き込みが第3の基準時間以内に終了したタイミングとしてもよい。
ここで前記シーケンサの所定のタイミングは、半導体記録装置への電源の投入及び停止の少なくとも一方のタイミングとしてもよい。
ここで前記不揮発性メモリは、N+M個(N,Mは自然数)の物理ブロックを1つのグループとするものであり、前記ECC生成手段は、データの書き込みの際に入力された(A*N)ワード(Aは自然数)のデータに対して、Aワードの間隔で抽出したNワードにMワードのECCパリティを付加して、(N+M)ワードのECC符号をA個生成するものとしてもよい。
ここで前記データ分配手段は、前記ECC生成手段によって生成されたECC符号の(N+M)ワードを、1ワード毎に前記不揮発性メモリの物理ブロックのグループ内で異なる物理ブロックに分配を繰り返すことにより、1つのグループの物理ブロックにAワードずつ分配するものとしてもよい。
ここで前記第1の基準時間T1は、
Rin:映像信号の入力レート
Tout:半導体記録装置の1グループ当たりの書き込み保証時間
Terr:書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
D:1グループの物理ブロックに記録されるECCパリティを含まないデータ量、とすると、
(Rin*(Tout+Terr))/(D−Tout*Rin)
で示されるようにしてもよい。
Rin:映像信号の入力レート
Tout:半導体記録装置の1グループ当たりの書き込み保証時間
Terr:書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
D:1グループの物理ブロックに記録されるECCパリティを含まないデータ量、とすると、
(Rin*(Tout+Terr))/(D−Tout*Rin)
で示されるようにしてもよい。
ここで前記の第2の基準時間T2は、
Rin:映像信号の入力レート
Tout:半導体記録装置の1グループ当たりの書き込み保証時間
Terr:書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
D:1グループの物理ブロックに記録されるECCパリティを含まないデータ量、とすると、
(Rin*(Tout+Terr))/(D−Tout*Rin)
で示されるようにしてもよい。
Rin:映像信号の入力レート
Tout:半導体記録装置の1グループ当たりの書き込み保証時間
Terr:書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
D:1グループの物理ブロックに記録されるECCパリティを含まないデータ量、とすると、
(Rin*(Tout+Terr))/(D−Tout*Rin)
で示されるようにしてもよい。
上記構成によって、本発明によれば、不揮発性メモリを構成する複数の物理ブロックからECC符号を構成して不揮発性メモリに記録する。書き込みエラーが発生した場合は、直前に発生した書き込みエラーと現書き込みエラーとの時間間隔を検出する。そして、前記時間間隔が基準値以下であれば誤り位置管理手段に、書き込みエラー発生ブロック番号と、書き込みエラー発生ブロックとECCのグループになっているブロック番号とを登録する。そして、所定のタイミングで、前記誤り位置管理手段に登録された書き込みエラーをロードし、前記誤り位置管理手段に登録された書き込みエラーブロックのエラーをECC符号により誤り訂正することによって復元し、再書き込みを行う。このため書き込みエラーが比較的短い間隔で発生した場合においても、再書き込み処理を遅らせることができる。
これにより、ホスト機器からデータを続けて受け付けることができ、ホスト機器のバッファメモリのオーバーフローを防止することができる。従って、再書き込み処理に時間を要す多値フラッシュメモリにおいて、書き込みエラーの頻発が許容されることになる。ホスト機器が映像機器で映像信号を半導体記録装置に記録する場合においても、映像信号のリアルタイム記録が可能である。
図4に第1の実施の形態による半導体記録装置の構成図を示す。本実施の形態において、外部インターフェイス手段1は、図示しないホスト機器からのコマンドやデータを受信し、データの転送を行うインターフェイスである。
ECC生成手段2はホスト機器からライトコマンドを受信したときに、受信したライトデータに対してエラー訂正パリティを付加するものである。より詳細には、入力された(A*N)ワード(A、Nは自然数)のデータに対して、Aワードの間隔で抽出したNワードにMワード(Mは自然数)のECCパリティを付加して、(N+M)ワードの第1のECC符号をA個生成するものである。尚ECCパリティはエラー訂正の機能を持つコードである。ここで本実施の形態では、Nを4、Mを2、Aを512として説明する。
データ分配手段3はECC生成手段2でECCパリティを付加されたECC符号をワード単位でフラッシュメモリの各物理ブロックに分配するものである。より具体的にはECC生成手段2によって生成されたECC符号の(N+M)ワード、ここでは6ワードを、1ワード毎にフラッシュメモリの異なる物理ブロックに分配を繰り返すことにより、(N+M)個の物理ブロックにAワードずつ分配する。
データ書き込み手段4a〜4fは、データ分配手段3によって分配された物理ブロック当たりAワードのデータを、不揮発性メモリの各物理ブロックに記録するものである。ここでは(N+M)を6としているので、データ書き込み手段4a〜4fは6並列に実装し、6個のフラッシュメモリ5a〜5fの夫々1つの物理ブロックに夫々データを書き込むものである。
本実施の形態の半導体記録装置は、(N+M)個、ここでは6個のフラッシュメモリ5a〜5fを有している。フラッシュメモリ5a〜5fは4値のフラッシュメモリとし、夫々は多数の物理ブロックから構成される。物理ブロックは消去単位であって、夫々2K個(Kは自然数)のページを有する。フラッシュメモリの内部は前述した図2に示すように0〜2K−1までのページ番号で管理されている。このうちページ番号0〜K−1のKページはメモリセルの第1ページにより構成され、ページ番号K〜2K−1のKページはメモリセルの第2ページにより構成される。各ページはAワードの記憶容量を持っている。ここでは1ワードは例えば1バイト、即ち8ビットとする。ECC生成手段2で生成されるECC符号を構成する4つの論理ブロックを論理セグメント、各論理セグメントに対応する(N+M)個の物理ブロックをグループという。
テーブル管理手段6a〜6fは、論物変換テーブルとブロックエントリテーブルを管理するものであって、フラッシュメモリの数に対応して6個実装される。論物変換テーブルは外部インターフェイス手段1を介して指示される論理ブロックと、論理ブロックに対応するフラッシュメモリの物理ブロックのアドレスとを関連づけるものである。ブロックエントリテーブルは電源の投入後に生成されるもので、各物理ブロックの使用又は未使用を示すテーブルである。テーブル管理手段6a〜6fは独立に動作し、これらのテーブルを管理すると共にデータ書き込みの際論理ブロックに対応する新規物理ブロックを抽出するものである。
書き込みエラー検出手段7a〜7fは各フラッシュメモリ5a〜5fに書き込みを行ったときに生じる書き込みエラーを夫々検出するものであり、フラッシュメモリの数に対応して6個実装する。
誤り位置管理手段8は、書き込みエラー検出手段7a〜7fで検出されたエラーに対して、書き込みエラーが発生した物理ブロック及びこのブロックとグループを構成する他の物理ブロック(以下、エレメントブロックという)のブロック番号とを登録するものである。書き込みエラー発生直後に再書き込み処理を実施する場合は、誤り位置管理手段8を動作させる必要はない。一方、書き込みエラー発生直後に再書き込み処理を実施しない場合には、誤り位置管理手段8は、将来的に再書き込みを行う物理ブロックとして、書き込みエラーが発生した物理ブロックとそのエレメントブロックとを登録しておく。
データ読み出し手段9a〜9fは、ホスト機器より半導体記録装置に読み出しコマンドが与えられたときに、指定されたアドレスに対応する各フラッシュメモリ5a〜5fより、データを読み出すものである。またデータの書き込み時にエラーがあり、誤り位置管理手段8で管理されている書き込みエラーをECC符号に基づいて訂正する場合にもデータを読み出す。
誤り訂正手段10は、データの書き込み時にエラーがあったときに、データ読み出し手段9a〜9fを介して読み出されたデータと、誤り位置管理手段8で示すエラー位置とに基づいて、エラー訂正を実施し、データを復元するものである。復元したデータは、データ分配手段3、データ書き込み手段4a〜4fを介してフラッシュメモリ5a〜5fのいずれかに書き戻される。
シーケンサ11は、ホスト機器から発行されるライトコマンドが与えられ、データを書き込んだときに書き込みエラーが生じると、そのエラーの間隔を監視し、後述するシナリオを切り替える。より詳細には、シーケンサ11はライトコマンドのエラー間隔に応じてエラーブロックと当該エラーブロックのエレメントブロックのデータをデータ読み出し手段9a〜9fを介して読み出し、誤り訂正手段10により誤り訂正を実施する。更にシーケンサ11は修復されたエラーブロックのデータをデータ分配手段3、データ書き込み手段4a〜4fを介して新規物理ブロックに書き込むものである。
次に本実施の形態の半導体記録装置の動作について説明する。まずテーブル管理手段6a〜6fは、電源投入時に論物変換テーブルをリードし、全物理ブロックの使用状態(使用又は未使用)を示すブロックエントリテーブルを作成する。本実施の形態では、テーブル管理手段6a〜6fは、フラッシュメモリ6個を制御するため、ブロックエントリテーブルを6個作成する。
次にデータの書き込みについて説明する。データを書き込む場合には、ホスト機器は、半導体記録装置にライトコマンドと共に論理アドレス及び書き込みデータを転送する。ここで書き込みデータはワード単位で表示し、ワード0からワード8KAのデータを書き込みデータとして転送するものとする。外部インターフェイス手段1を介してライトコマンドを受けると、ECC生成手段2は、書き込みデータをワード単位でAワード毎に分離し、ECCパリティを付加する。データ分配手段3は、各フラッシュメモリに記録するためデータをAワード毎に分配して夫々データ書き込み手段4a〜4fに入力する。
図5は6つのフラッシュメモリ5a〜5fにストライピング記録される場合の並列の物理ブロックとデータ及びパリティの関係を示す図である。図中の物理ブロックPB0はフラッシュメモリ5aの物理ブロック、物理ブロックPB1はフラッシュメモリ5bの物理ブロックであり、以下同様に物理ブロックPB2,PB3,PB4,PB5は夫々フラッシュメモリ5c,5d,5e,5fの物理ブロックである。PNはページ番号を示す。外部のホスト機器により指定されるライトアドレスに対して、フラッシュメモリのページ内のワード番号、フラッシュメモリの番号、各フラッシュメモリの物理ブロックの番号、物理ブロック内のページ番号が一意で定まる。図5の物理ブロックPB0〜PB3の各ページには、そのページに書き込まれる先頭のワード番号が示されている。そして、フラッシュメモリ5e、5fの物理ブロックの各ページにはECC生成手段2により生成されたECCパリティが書き込まれる。
図6はECC生成手段2によるECCパリティの生成方法を示す。図6(a)に、各物理ブロックPB0,PB1,PB2,PB3及びPB4,PB5のページ0のワードのアサインメントを示す。図6(b)は各ページの最初のワードに関するECCパリティとの関連図、図6(c)は各ページの2番目のワードに関するECCパリティとの関連図、図6(d)は各ページの最終ワードに関するECCパリティとの関連図である。上記のように、複数のデータを夫々要素とし、複数の要素を夫々相異なる物理ブロック、ここではPB0〜PB3から抽出してECCパリティを生成し、2バイト分のECCパリティを1バイトづつ別の物理ブロック、ここではPB4、PB5に記録する。
ここでECC符号について説明する。ECC生成手段2では、1ワード、即ち1バイトを上位4ビットと下位4ビットに分割し、各4ビットを1シンボルとする。そして、X4+X+1を生成多項式とするGF(16)のガロア体において、(6,4)のリードソロモン符号を構成し、2シンボルのパリティを生成する。即ち、入力シンボルを(a3,a2,a1,a0)、パリティシンボルを(p1,p0)とすると、入力シンボルの情報多項式は次式で示される。
A(X)=a3*X3+a2*X2+a1*X1+a0 ・・・(1)
また符号生成多項式は次式で示される。
G(X)=(X−α0)(X−α) ・・・(2)
この符号生成多項式において、
A(X)*X2÷G(X)の剰余R(X)を求め、R(X)の1次項をp1、R(X)の0次項をp0とする。図6では物理ブロックPB4に1次項であるP1_0,P1_1,・・・P1_(A−1)が書き込まれ、物理ブロックPB5に0次項であるP0_0,P0_1,・・・P0_(A−1)が書き込まれることを示している。
A(X)=a3*X3+a2*X2+a1*X1+a0 ・・・(1)
また符号生成多項式は次式で示される。
G(X)=(X−α0)(X−α) ・・・(2)
この符号生成多項式において、
A(X)*X2÷G(X)の剰余R(X)を求め、R(X)の1次項をp1、R(X)の0次項をp0とする。図6では物理ブロックPB4に1次項であるP1_0,P1_1,・・・P1_(A−1)が書き込まれ、物理ブロックPB5に0次項であるP0_0,P0_1,・・・P0_(A−1)が書き込まれることを示している。
こうすればこのうちの最大2個の物理ブロックへの書き込みにエラーが生じて、a3,a2,a1,a0,p1,p0のうち2つの要素がエラーとなっても、ECC符号の他の要素に基づいて後述する誤り訂正を実施することにより、データを復元することができる。
データ書き込み手段4a〜4fは、データ分配手段3により分配されたデータをフラッシュメモリ5a〜5dの物理ブロックの各ページに書き込み、分配されたECCパリティをフラッシュメモリ5e,5fに書き込む。フラッシュメモリへの書き込みにおいては、所定の時間以内にVthが所望の電位に到達しない場合に、フラッシュメモリのセルエラーと判断する。書き込みエラー検出手段7a〜7fはフラッシュメモリより得られるエラーの出力を誤り位置とする。書き込みエラーが発生した場合は、以後は書き込みエラーが発生した物理ブロックを使用せず、続けて別の物理ブロックに書き込む。そのためエラーが発生した物理ブロックをバッドブロックとして登録し、新物理ブロックを抽出して再度書き込む処理が必要となる。
次に、書き込みエラーの発生後の処理について説明する。本実施の形態では、グループを構成する6個の物理ブロックのうち、2つの物理ブロックへの書き込みエラーがあっても訂正可能である。よって、1つのグループのうち書き込みエラーが発生した物理ブロック数に従って、以下のシナリオに従って動作させる。
(シナリオ1)1つのグループの書き込みエラーが生じた物理ブロック数が3以上の場合は、ホスト機器にエラーステータスを返し、ホスト機器は当該ライトコマンドにかかるデータのみ、再書き込みを実施する。
(シナリオ2)エラーブロック数が2以下であって前回の書き込みエラーが発生してからの第1の基準時間T1を経過して書き込みエラーが発生した場合は、当該コマンドより前に書き込み済みであった同一物理ブロックの以前のページ及びエラーページをECC訂正した後、新規物理ブロックに再度書き込む。
(シナリオ3)エラーブロック数が2以下であって、前回の書き込みエラーが発生してから第1の基準時間T1が経過するまでに書き込みエラーが発生した場合には、誤り位置管理手段8に書き込み物理エラーブロックとのエレメントブロックを登録する。この場合に、ホスト機器にはエラーを返さず、書き込みエラー物理ブロック数が1個の場合と2個の場合に分類して登録する。
(シナリオ4)前回の書き込みエラーが発生し、登録してからの第1の基準時間T1を経過して、更に書き込みエラーが発生しなかった場合、誤り位置管理手段8に登録されている書き込みブロックのエラーページ前に書き込み済みであった同一物理ブロックの以前のページ及びエラーページをECCで誤り訂正して再度書き込む。このとき2つの書き込みエラーを生じた物理ブロック数のグループを優先して誤り訂正する。
(シナリオ5)エラーブロック数が2以下であって、再書き込みから第2の基準時間T2が経過するまでに書き込みエラーが発生した場合には、誤り位置管理手段8に書き込み物理エラーブロックとのエレメントブロックを登録する。この場合に、ホスト機器にはエラーを返さず、書き込みエラー物理ブロック数が1個の場合と2個の場合に分類して登録する。
(シナリオ6)前回のエラーの復元と再書き込みから第2の基準時間T2が経過して書き込みエラーが発生しなかった場合、誤り位置管理手段8に登録されているエラーブロックのエラーページ前に書き込み済みであったページ及びエラーページをECCで誤り訂正した後、新規物理ブロックに再度書き込む。このときも2つの書き込みエラーが生じたグループの誤り訂正を優先する。
(シナリオ1)1つのグループの書き込みエラーが生じた物理ブロック数が3以上の場合は、ホスト機器にエラーステータスを返し、ホスト機器は当該ライトコマンドにかかるデータのみ、再書き込みを実施する。
(シナリオ2)エラーブロック数が2以下であって前回の書き込みエラーが発生してからの第1の基準時間T1を経過して書き込みエラーが発生した場合は、当該コマンドより前に書き込み済みであった同一物理ブロックの以前のページ及びエラーページをECC訂正した後、新規物理ブロックに再度書き込む。
(シナリオ3)エラーブロック数が2以下であって、前回の書き込みエラーが発生してから第1の基準時間T1が経過するまでに書き込みエラーが発生した場合には、誤り位置管理手段8に書き込み物理エラーブロックとのエレメントブロックを登録する。この場合に、ホスト機器にはエラーを返さず、書き込みエラー物理ブロック数が1個の場合と2個の場合に分類して登録する。
(シナリオ4)前回の書き込みエラーが発生し、登録してからの第1の基準時間T1を経過して、更に書き込みエラーが発生しなかった場合、誤り位置管理手段8に登録されている書き込みブロックのエラーページ前に書き込み済みであった同一物理ブロックの以前のページ及びエラーページをECCで誤り訂正して再度書き込む。このとき2つの書き込みエラーを生じた物理ブロック数のグループを優先して誤り訂正する。
(シナリオ5)エラーブロック数が2以下であって、再書き込みから第2の基準時間T2が経過するまでに書き込みエラーが発生した場合には、誤り位置管理手段8に書き込み物理エラーブロックとのエレメントブロックを登録する。この場合に、ホスト機器にはエラーを返さず、書き込みエラー物理ブロック数が1個の場合と2個の場合に分類して登録する。
(シナリオ6)前回のエラーの復元と再書き込みから第2の基準時間T2が経過して書き込みエラーが発生しなかった場合、誤り位置管理手段8に登録されているエラーブロックのエラーページ前に書き込み済みであったページ及びエラーページをECCで誤り訂正した後、新規物理ブロックに再度書き込む。このときも2つの書き込みエラーが生じたグループの誤り訂正を優先する。
以上の(シナリオ1)〜(シナリオ6)について、図7のフローチャートを参照にしながら詳細に説明する。
(シナリオ1)まず、S1において書き込みエラーが発生した物理ブロック数が3以上かどうかを判断し、3以上の場合に、ステップS2に進んでホスト機器から再書き込みを実施する。1つのグループに3物理ブロック以上のライトエラーが発生する確率はほぼ0であるため、不揮発性メモリの不良と考えられる。よってこの場合は、故障時に発生する異常処理として書き込みエラーの発生直後に、エラーステータスをホスト機器に返す。このときホスト機器は当該コマンドにかかるデータのリライトを実施する。シナリオ1は、書き込んだECC符号によってエラーの訂正が不可能な場合であり、セル共有部に伝搬したエラーの復元も不可能である。しかしながら、エラー発生確率が1E−06とすると、6個の物理ブロックの内3個がエラーになる確率は2E―17程度であり、生起確率が微少なため特に問題としない。
(シナリオ1)まず、S1において書き込みエラーが発生した物理ブロック数が3以上かどうかを判断し、3以上の場合に、ステップS2に進んでホスト機器から再書き込みを実施する。1つのグループに3物理ブロック以上のライトエラーが発生する確率はほぼ0であるため、不揮発性メモリの不良と考えられる。よってこの場合は、故障時に発生する異常処理として書き込みエラーの発生直後に、エラーステータスをホスト機器に返す。このときホスト機器は当該コマンドにかかるデータのリライトを実施する。シナリオ1は、書き込んだECC符号によってエラーの訂正が不可能な場合であり、セル共有部に伝搬したエラーの復元も不可能である。しかしながら、エラー発生確率が1E−06とすると、6個の物理ブロックの内3個がエラーになる確率は2E―17程度であり、生起確率が微少なため特に問題としない。
(シナリオ2)2ブロック以下の書き込みエラーが発生した場合は、S3において、前回の書き込みエラーが発生してから第1の基準時間T1を経過したかどうかを判定する。前回の書き込みエラーが発生してからの経過時間をT_Realとすると、次式(3)を満たす場合にS4に進んで誤り訂正手段10による誤り訂正を行う。
T_Real>T1 ・・・(3)
ここで基準時間T1について説明する。まず
Rin:映像信号の入力レート
Tout:半導体記録装置の1グループ当たりの書き込み保証時間
Terr:書き込みエラー発生からエラーステータスをホストに返すまでの時間とする。
1度書き込みエラーが発生した場合は、書き込みが成功した場合と比較して、(Tout+Terr)に相当する時間が余分に発生し、これをライト速度と考えることができる。このときRin*(Tout+Terr)分のデータがホスト機器のバッファメモリに蓄積される。従って、書き込みエラーが発生したときに、ホスト機器が再書き込みすることができる条件は、ホスト機器のバッファメモリの空き容量がRin*(Tout+Terr)以上あることである。
T_Real>T1 ・・・(3)
ここで基準時間T1について説明する。まず
Rin:映像信号の入力レート
Tout:半導体記録装置の1グループ当たりの書き込み保証時間
Terr:書き込みエラー発生からエラーステータスをホストに返すまでの時間とする。
1度書き込みエラーが発生した場合は、書き込みが成功した場合と比較して、(Tout+Terr)に相当する時間が余分に発生し、これをライト速度と考えることができる。このときRin*(Tout+Terr)分のデータがホスト機器のバッファメモリに蓄積される。従って、書き込みエラーが発生したときに、ホスト機器が再書き込みすることができる条件は、ホスト機器のバッファメモリの空き容量がRin*(Tout+Terr)以上あることである。
一方、論理セグメントのデータ量をDとすると、エラーが発生していない場合に、ホスト機器のバッファメモリに蓄積されたデータ量は、平均的にTout*(D/Tout−Rin)減少していく。よって、Rin*(Tout+Terr)分のデータがホスト機器のバッファメモリから解放される時間をT_REFで定義すると、この時間は次式で示される。
T_REF=(Rin*(Tout+Terr))/(D−Tout*Rin) ・・・(4)
従ってこの時間T_REFを第1の基準時間T1とする。後述する第2の基準時間T2についても同様とする。
T_REF=(Rin*(Tout+Terr))/(D−Tout*Rin) ・・・(4)
従ってこの時間T_REFを第1の基準時間T1とする。後述する第2の基準時間T2についても同様とする。
上記のように、シーケンサ11は入力されるコマンドと書き込みエラー発生の状態とを管理し、前回の書き込みエラーに起因してホスト機器のバッファメモリに蓄積されたデータが全て解放されるタイミングを予測し、発生した書き込みエラーにかかるエラー修復を実施する。その後S5において第1の経過時間の計数を開始する。
シナリオ2の誤り訂正と再書き込み処理について、以下詳細に説明する。本実施の形態では、4値フラッシュメモリを用いているため、各メモリセルを第1ページと第2ページの2ページで共有している。このため前述したように第2ページの書き込み時にエラーが生じると、メモリのセルを共有する第1ページにもエラーが伝搬する可能性がある。従って、書き込みエラー検出手段7a〜7fは、書き込み時に書き込みエラーが発生したかどうかを検出する。物理ブロックにおけるセル共有の状態は半導体プロセス、半導体製造会社によって異なるため、フラッシュメモリのセル共有情報は不明なものとして再書き込みを行う。例えば、第(K+1)ページの書き込みにおいてエラーが発生したとする。エラー発生ページが第2ページであれば、それより前のページ0〜ページKのうちのいずれかのページに、ページ(K+1)とセルを共有する第1ページが含まれている。
図8(a),(b),(c)はエラー発生ブロックを修復する際の説明図である。この場合は以下のステップに沿って処理を行う。
(S11)書き込みエラー検出手段により書き込みエラーが発生した物理ブロックと発生したページを検出する。図8(a)は、書き込み中にエラーが発生した場合に、そのージを示す模式図であり、物理ブロックのハッチングで示すページ(K+1)にデータを書き込んでいるときに書き込みエラーが発生したことを示す。
(S12)テーブル管理手段6a〜6fにより新物理ブロックを確保する。
(S13)エラー発生した以前のページをECC符号の要素としているグループの他の物理ブロックのページ(ページ0〜ページ(K+1))のデータをデータ読み出し手段8a〜8fを介して読み出す。図8(b)はエラーが発生した物理ブロックのエラー訂正の対象となるページを示す模式図である。
(S14)データ読み出し手段8a〜8fによって読み出されたページのデータと、エラー発生物理ブロックの位置情報を使用し、誤り訂正手段10により誤り訂正する。
(S15)誤り訂正されたページのデータを、新物理ブロックのページに書き込む。図8(c)はデータを修復した後の新物理ブロックの状態を示す。
(S11)書き込みエラー検出手段により書き込みエラーが発生した物理ブロックと発生したページを検出する。図8(a)は、書き込み中にエラーが発生した場合に、そのージを示す模式図であり、物理ブロックのハッチングで示すページ(K+1)にデータを書き込んでいるときに書き込みエラーが発生したことを示す。
(S12)テーブル管理手段6a〜6fにより新物理ブロックを確保する。
(S13)エラー発生した以前のページをECC符号の要素としているグループの他の物理ブロックのページ(ページ0〜ページ(K+1))のデータをデータ読み出し手段8a〜8fを介して読み出す。図8(b)はエラーが発生した物理ブロックのエラー訂正の対象となるページを示す模式図である。
(S14)データ読み出し手段8a〜8fによって読み出されたページのデータと、エラー発生物理ブロックの位置情報を使用し、誤り訂正手段10により誤り訂正する。
(S15)誤り訂正されたページのデータを、新物理ブロックのページに書き込む。図8(c)はデータを修復した後の新物理ブロックの状態を示す。
ここで誤り訂正手段10による誤り訂正について説明する。ここで誤り訂正手段10が受信した6個のシンボルをb3,b2,b1,b0,q1,q0とする。このシンボルにおいて、b3はPB0、b2はPB1、b1はPB2、b0はPB3、q1はPB4、q0はPB5の夫々の物理ブロックから読み出されたデータである。このうちエラーが検出されたブロックから読み出されたシンボルは誤りを含んでいる可能性がある。この場合、次式を受信符号多項式とする。
U(X)=b3*X5+b2*X4+b1*X3+b0*X2+q1*X+q0 ・・・(5)
そしてU(X)において、エラーの可能性のある2個のシンボルを0として、U(1)およびU(α)を計算する。ここで、誤りシンボル位置をy0、y1(0≦y0,y1≦5を満たす整数)、誤りの大きさをz0、z1とすると、下記の式(6),(7)が成立する。
z0+z1=U(α0)、 ・・・(6)
αy0*z0+αy1*z1=U(α) ・・・(7)
式(6),(7)において、誤り位置y0、y1は既知なので、2元連立方程式を解くことによって、誤りの大きさz0、z1を計算し、誤り位置y0、y1にかかるシンボルを夫々z0、z1に誤り訂正することができる。こうして1つのグループから読み出したECC訂正符号において最大2ページの誤り訂正が不可であった場合も、残りの4ページのデータと2個の誤り位置から計算して、誤り位置にかかるページのデータを誤り訂正することができる。
U(X)=b3*X5+b2*X4+b1*X3+b0*X2+q1*X+q0 ・・・(5)
そしてU(X)において、エラーの可能性のある2個のシンボルを0として、U(1)およびU(α)を計算する。ここで、誤りシンボル位置をy0、y1(0≦y0,y1≦5を満たす整数)、誤りの大きさをz0、z1とすると、下記の式(6),(7)が成立する。
z0+z1=U(α0)、 ・・・(6)
αy0*z0+αy1*z1=U(α) ・・・(7)
式(6),(7)において、誤り位置y0、y1は既知なので、2元連立方程式を解くことによって、誤りの大きさz0、z1を計算し、誤り位置y0、y1にかかるシンボルを夫々z0、z1に誤り訂正することができる。こうして1つのグループから読み出したECC訂正符号において最大2ページの誤り訂正が不可であった場合も、残りの4ページのデータと2個の誤り位置から計算して、誤り位置にかかるページのデータを誤り訂正することができる。
以上説明したように、(K+1)ページに書き込みエラーが発生した場合に、(K+1)ページより前のいずれかのページにセル共有しているページがあり、当該ページのデータにエラーが伝搬している可能性がある。従って、エラー訂正符号を構成している他の物理ブロックの対応するページのデータを読み出して誤り訂正を実施し、データを復元した後に再度書き込む。この処理を各ブロックのエラーが生じたページより前に書き込まれた全ページ、即ち0ページからKページまで実施する。こうすることにより、セル共有に基づくエラー伝搬を防止することができる。また、このシナリオ2は、式(3)を満たす場合、即ち書き込みエラーの発生間隔が比較的長い場合に限定して実施するので、ホスト機器のバッファメモリがオーバーフローすることはない。
尚、上記説明では、ホスト機器にエラーステータスを返さず、ライトコマンドで生じるエラーも誤り訂正をしながら再書き込んでいるが、ホスト機器にエラーステータスを返し、ホスト機器が当該コマンドにかかるデータを再度書き込むようにしてもよい。
次に、以降の書き込みエラーの発生時間が式(3)を満たさなかった場合について、図7のフローチャートを用いて説明する。
(シナリオ3)シナリオ3において、1つのグループの書き込みエラー物理ブロック数が2個以下の場合は、S6においてエラー毎に誤り位置管理手段8に、エラー物理ブロックとそのエレメントブロックとを登録する。このとき書き込みエラーの物理ブロック数が多いグループを優先してデータ復元処理を実施するため、図9に示すように書き込みエラー物理ブロック数が1個の場合と2個の場合に分類して登録しておく。
(シナリオ4)シナリオ4は、誤り位置管理手段8により登録されている書き込みエラーをECC訂正によって復元して再書き込みを実施するシナリオである。この場合S7,S8に示すように前回の書き込みエラーが発生してから第1の基準時間T1が経過した後に誤り訂正と再書き込みを行う。更にその後にS9において第2の経過時間の計数を開始する。この場合はシナリオ2と同様に、少なくともホスト機器のバッファメモリの空き容量がRin*(Tout+Terr)以上保証されており、シナリオ4の実施中にホスト機器のバッファメモリがオーバーフローすることはない。また、シナリオ4はホスト機器が発行した書き込みコマンドにかかる書き込み動作が成功した直後に実施するのが望ましい。そうすればホスト機器はデータ書き込み中と認識し、ホスト機器から命令したデータの書き込み時間が増加しているように検出されるからである。不揮発性メモリの書き込み時間は3倍以上のばらつきがあるので、書き込み時間が増加するのはホスト機器にとって想定内の事象である。
また、ホスト機器から命令されたデータの書き込み時間を計測し、書き込み時間が第3の基準時間T3以内に終了した後に限定して、再書き込み処理を実施すれば、本処理を隠すことができる。さらに、(シナリオ4)が実施されると、ホスト機器のバッファメモリにデータが蓄積されていくので、S5で開始した第1の経過時間の計数はリセットされることとなる。
エラーブロック数が2以下であって、再書き込みから第2の基準時間T2が経過するまでに書き込みエラーが発生した場合について説明する。
(シナリオ5)シナリオ5において、1つのグループの書き込みエラー物理ブロック数が2個以下の場合は、S6においてエラー毎に誤り位置管理手段8に、エラー物理ブロックとそのエレメントブロックとを登録する。このとき書き込みエラーの物理ブロック数が多いグループを優先してデータ復元処理を実施するため、図9に示すように書き込みエラー物理ブロック数が1個の場合と2個の場合に分類して登録しておく。
(シナリオ6)シナリオ6は、誤り位置管理手段8により登録されている書き込みエラーをECC訂正によって復元して再書き込みを実施するシナリオである。この場合S7,S8に示すように前回の書き込みエラーが発生してから第2の基準時間T2が経過した後に誤り訂正と再書き込みを行う。更にその後にS9において第2の経過時間の計数を開始する。この場合はシナリオ2と同様に、少なくともホスト機器のバッファメモリの空き容量がRin*(Tout+Terr)以上保証されており、シナリオ6の実施中にホスト機器のバッファメモリがオーバーフローすることはない。
シナリオ4,6で実施する誤り訂正と再書き込み処理は、以下のステップで実施される。
(S21)誤り位置管理手段8より、書き込みエラー物理ブロック数が2個発生したグループを優先して、当該グループの各物理ブロック番号と書き込みエラーが発生した物理ブロックの位置を読み出し
(S22)新物理ブロックを確保
(S23)S21で読み出したグループにおいて、書き込みエラーが発生していない物理ブロックのページをデータ読み出し手段8a〜8fを介してリード
(S24)データ読み出し手段8a〜8fによって読み出されたページのデータと、エラー発生物理ブロックの位置情報を使用し、誤り訂正手段10により誤り訂正
(S25)誤り訂正されたページのデータを、新物理ブロックのページに書き込み
(S26)ホスト機器に書き込み終了ステータスを返す。
(S21)誤り位置管理手段8より、書き込みエラー物理ブロック数が2個発生したグループを優先して、当該グループの各物理ブロック番号と書き込みエラーが発生した物理ブロックの位置を読み出し
(S22)新物理ブロックを確保
(S23)S21で読み出したグループにおいて、書き込みエラーが発生していない物理ブロックのページをデータ読み出し手段8a〜8fを介してリード
(S24)データ読み出し手段8a〜8fによって読み出されたページのデータと、エラー発生物理ブロックの位置情報を使用し、誤り訂正手段10により誤り訂正
(S25)誤り訂正されたページのデータを、新物理ブロックのページに書き込み
(S26)ホスト機器に書き込み終了ステータスを返す。
次にこのエラーが生じた後の誤り訂正と再書き込み処理について、タイムチャートを用いて説明する。図10A,図10Bにおいて横軸は時間軸を示し、1つのグループの物理ブロックのエラー数は2以下とする。図10Aにおいて、時刻t1のタイミングで第1のエラーE1が生じたものとする。このときシーケンサ11は以前にエラーがなければ、シナリオ2に従って誤り訂正を行う。次いで時刻t2に第2のエラーE2が生じたとする。この場合は基準時間T1以内に第2のエラーE2が生じているので、時刻t2の時点では誤り訂正を行わず、シナリオ3により誤り位置管理手段8に登録(R)する。そして時刻t3に基準時間T1を経過するので、その後の時刻t4のタイミングでシナリオ4に従って誤り訂正と再書き込み(RW)を行う。ここで再書き込みによってホスト機器からデータの転送を遅らせる必要があり、ホスト機器内のバッファにはデータが蓄積していく。従って更にエラーが生じた場合には、この再書き込み時間からの時間によって直ちにエラー訂正するか、登録しておき後に誤り訂正するかを判断する必要がある。そこで時刻t4より再書き込み時に時間の計測を開始する。その後、時刻t5に第2の基準時間T2の範囲内で第3のエラーE3が起これば、シナリオ5に従って誤り位置管理手段8に登録(R)する。そして時刻t6に第2の基準時間T2を経過するので、その後の時刻t7にシナリオ6に従って再書き込み(RW)を行う。ここで第1,第2の基準時間T1,T2はいずれもT_REFとすることができる。こうすればホスト機器内のバッファに転送すべきデータがあふれることがなく、連続してデータを転送することができる。
図10Bに示す時刻t1からt6までの処理については図10Aの場合と同様である。図10Bでは時刻t7の再書き込みに代えて、次に送られてきたライトコマンド(WC)によってデータを書き込んだ直後に、再書き込みを行う。この場合にライトコマンドに伴うデータの書き込み時間が長ければホスト機器のバッファにデータを蓄積しきれなくなる可能性がある。従ってこのライトコマンドの書き込み時間を第3の基準時間T3と比較し、第3の基準時間T3内であるときにのみデータの復元と再書き込みを実施するようにしてもよい。第3の基準時間T3はデータの書き込み時間として許容される時間より十分短い時間とする。
以上説明したように、本実施の形態によれば、データの書き込み時にエラー訂正符号を構成して不揮発性メモリに記録し、書き込みエラーが発生した場合は、直前に発生した書き込みエラーと現書き込みエラーとの時間間隔を検出する。そして、前記時間間隔が基準値以上であれば書き込みエラー直後に再書き込みを実施し、前記時間間隔が基準値以下であれば誤り位置管理手段に、書き込みエラー発生ブロック番号と、書き込みエラー発生ブロックとECCのグループになっているブロック番号とを登録する。そして、直前に発生した書き込みエラーとの間隔が基準時間以上経過した場合に、誤り位置管理手段に登録された書き込みエラーのブロックをロードし、そのブロックのエラーをECC符号により誤り訂正することによって復元し再書き込みを行う。このため、書き込みエラーが比較的短い間隔で発生した場合においても、再書き込み処理を遅らせることができ、ホスト機器のバッファメモリのオーバーフローを防止できる。従って、再書き込み処理に時間を要する多値フラッシュメモリにおいて書き込みエラーが頻発した場合においても、データを続けて書き込むことができる。ホスト機器が映像信号のリアルタイム記録機器の場合においても、リアルタイム記録が可能である。
なお、本実施の形態では、2つの書き込みエラーが生じたグループの復元を優先して再書き込みを実施したが、発生時間を優先してもよいし、場合によっては、1個の書き込みエラーのグループは訂正しなくてもよい。
上記説明では、シナリオ2の起動は、前回の書き込みエラーが発生からの基準時間T1を経過した場合の書き込みエラーの発生時として説明したが、周期的にライトコマンドが与えられる場合には、ライトコマンド数によって基準時間T1を規定してもよい。またシナリオ3における処理も、連続して書き込みエラーが発生しなかったライトコマンドの数で基準時間T1を規定してもよい。
また、シナリオ3の処理にかかる誤り位置管理手段で登録する誤り位置情報は、書き込みエラー発生の頻度に従って、不揮発性メモリに登録してもよいし、しなくてもよい。
また、シナリオ3の起動は、ホスト機器から所定時間以上コマンドが発行されなかった場合でもよい。更に、シナリオ3の起動は、電源投入直後あるいは、電源オフ時の処理として実施してもよい。
なお、上記説明では簡単のためにECC符号は2パリティとしたが、それ以上のパリティを付加しても良いし、1パリティであってもよいことはいうまでもない。即ちパリティの数Mは、1以上の任意の自然数とすることができる。
本実施の形態では、1つのメモリセルに格納するビット数が2ビットの4値フラッシュメモリを用いた半導体記録装置について説明したが、本発明はさらに状態を増加させ、1セルに3ビット以上格納できる多値フラッシュメモリにも適応することができる。さらに、多値フラッシュメモリのみならず、2値フラッシュメモリやその他の不揮発性メモリに適応しても同様の効果が得られる。
また本実施の形態では6つのフラッシュメモリを用いてECC符号の各要素を夫々のフラッシュメモリに記憶するようにしているが、1つのフラッシュメモリの中で異なる物理ブロックに記録するようにしてもよい。
又本実施の形態では、データ分配手段3は1つのグループを形成する物理ブロックに均等にデータを分配するようにしたが、必ずしも均等でなくてもよい。
更に本実施の形態では、誤り位置管理手段は図9に示すように書き込みエラーがあった物理ブロック、及びその物理ブロックとグループを構成するエレメントブロックとを登録するようにしたが、書き込みエラーがあった物理ブロックと同一グループを構成する全ての物理ブロックを登録しておいてもエラー訂正を行うことができる。
本発明の半導体記録装置は、メモリカードなどの半導体記録装置に関し、特に内部の不揮発性メモリで発生する書き込みエラーをエラーの後に修復することができ、フラッシュメモリに連続してデータを書き込む際に書き込み速度を維持することができるため、信頼性を必要とされる業務用分野で使用される可能性が大きい。
1 外部インターフェイス手段
2 ECC生成手段
3 データ分配手段
4a〜4f データ書き込み手段
5a〜5f フラッシュメモリ
6a〜6f ライトエラー検出手段
7 フラグ生成手段
8 誤り位置管理手段
9a〜9f データ読み出し手段
10 誤り訂正手段
11 シーケンサ
2 ECC生成手段
3 データ分配手段
4a〜4f データ書き込み手段
5a〜5f フラッシュメモリ
6a〜6f ライトエラー検出手段
7 フラグ生成手段
8 誤り位置管理手段
9a〜9f データ読み出し手段
10 誤り訂正手段
11 シーケンサ
Claims (10)
- 複数の物理ブロックにより構成され、且つ物理ブロックが複数ページによって構成される不揮発性メモリを内蔵し、所定数の前記物理ブロックを1つのグループとする半導体記録装置において、
データの書き込みの際に入力されたデータに対して、ECCパリティを付加して、ECC符号を生成するECC生成手段と、
前記ECC生成手段によって生成されたECC符号の構成単位を1つのグループの各物理ブロックに分配するデータ分配手段と、
前記データ分配手段によって分配されたデータを、不揮発性メモリの1つのグループの各物理ブロックに書き込むデータ書き込み手段と、
不揮発性メモリへのデータの書き込み時に書き込みエラーを検出する書き込みエラー検出手段と、
書き込みエラーが発生した物理ブロックと同一グループを構成する全ての物理ブロックを登録する誤り位置管理手段と、
前記不揮発性メモリの1つのグループの物理ブロックよりECC符号を読み出すデータ読み出し手段と、
前記誤り位置管理手段に登録されている書き込みエラーが生じた物理ブロックのデータを、その物理ブロックが含まれるグループのエラーが生じていない物理ブロックのデータによって誤り訂正する誤り訂正手段と、
前回の書き込みエラー発生から第1の基準時間T1の経過前に生じた書き込みエラーの位置情報について前記誤り位置管理手段により登録し、所定のタイミングで前記誤り位置管理手段に登録されたブロックを読み出し、前記誤り訂正手段によりエラー物理ブロックのデータを訂正し、新規物理ブロックに再書き込みするよう制御するシーケンサと、具備する半導体記録装置。 - 前記シーケンサは、前回の書き込みエラーの発生から第1の基準時間T1の経過後に生じた書き込みエラーに対して前記誤り訂正手段によりエラー物理ブロックのデータを訂正し、新規物理ブロックに再書き込みする請求項1記載の半導体記録装置。
- 前記シーケンサの所定のタイミングは、前の書き込みエラーがあった再書き込み処理から第2の基準時間T2以上が経過したタイミングである請求項1記載の半導体記録装置。
- 前記シーケンサの所定のタイミングは、書き込みエラーの再書き込み処理から第2の基準時間T2以上が経過した後にホスト機器からライトコマンドが与えられたときに、当該ライトコマンドに基づくデータの書き込み終了後のタイミングである請求項1記載の半導体記録装置。
- 前記シーケンサの所定のタイミングは、書き込みエラーの再書き込みから処理から第2の基準時間T2以上が経過した後にホスト機器からライトコマンドが与えられたときに、当該ライトコマンドに基づくデータの書き込みが第3の基準時間以内に終了したタイミングである請求項1記載の半導体記録装置。
- 前記シーケンサの所定のタイミングは、半導体記録装置への電源の投入及び停止の少なくとも一方のタイミングである請求項1記載の半導体記録装置。
- 前記不揮発性メモリは、N+M個(N,Mは自然数)の物理ブロックを1つのグループとするものであり、
前記ECC生成手段は、データの書き込みの際に入力された(A*N)ワード(Aは自然数)のデータに対して、Aワードの間隔で抽出したNワードにMワードのECCパリティを付加して、(N+M)ワードのECC符号をA個生成するものである請求項1に記載の半導体記録装置。 - 前記データ分配手段は、前記ECC生成手段によって生成されたECC符号の(N+M)ワードを、1ワード毎に前記不揮発性メモリの物理ブロックのグループ内で異なる物理ブロックに分配を繰り返すことにより、1つのグループの物理ブロックにAワードずつ分配するものである請求項7記載の半導体記録装置。
- 前記第1の基準時間T1は、
Rin:映像信号の入力レート
Tout:半導体記録装置の1グループ当たりの書き込み保証時間
Terr:書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
D:1グループの物理ブロックに記録されるECCパリティを含まないデータ量、とすると、
(Rin*(Tout+Terr))/(D−Tout*Rin)
で示される請求項1〜請求項8のいずれか1項記載の半導体記録装置。 - 前記の第2の基準時間T2は、
Rin:映像信号の入力レート
Tout:半導体記録装置の1グループ当たりの書き込み保証時間
Terr:書き込みエラー発生からエラーステータスをホスト機器に返すまでの時間
D:1グループの物理ブロックに記録されるECCパリティを含まないデータ量、とすると、
(Rin*(Tout+Terr))/(D−Tout*Rin)
で示される請求項3又は4記載の半導体記録装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2009210878A JP2010097600A (ja) | 2008-09-22 | 2009-09-11 | 半導体記録装置 |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008242593 | 2008-09-22 | ||
| JP2009210878A JP2010097600A (ja) | 2008-09-22 | 2009-09-11 | 半導体記録装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010097600A true JP2010097600A (ja) | 2010-04-30 |
Family
ID=42038845
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2009210878A Pending JP2010097600A (ja) | 2008-09-22 | 2009-09-11 | 半導体記録装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20100077280A1 (ja) |
| JP (1) | JP2010097600A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012081732A1 (en) * | 2010-12-15 | 2012-06-21 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method of controlling the same |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2013222272A (ja) * | 2012-04-13 | 2013-10-28 | Lapis Semiconductor Co Ltd | 半導体装置、機密データ管理システム、及び機密データ管理方法 |
| JP2016018473A (ja) * | 2014-07-10 | 2016-02-01 | 株式会社東芝 | 半導体記憶装置、メモリコントローラ、及びメモリコントローラの制御方法 |
| TWI537966B (zh) * | 2014-10-03 | 2016-06-11 | 群聯電子股份有限公司 | 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元 |
| CN115167754B (zh) * | 2021-04-01 | 2025-07-25 | 长鑫存储技术有限公司 | 半导体存储器和数据写入方法 |
| US12079079B2 (en) * | 2022-08-28 | 2024-09-03 | Micron Technology, Inc. | Proximity based parity data management |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003248631A (ja) * | 2002-02-26 | 2003-09-05 | Nec Microsystems Ltd | メモリ制御回路及びメモリ制御方法 |
| WO2007010189A2 (en) * | 2005-07-15 | 2007-01-25 | Gs Ip Limited Liability Company | Flash memory error correction |
| JP2007310916A (ja) * | 2007-09-03 | 2007-11-29 | Renesas Technology Corp | メモリカード |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3975245B2 (ja) * | 1999-12-16 | 2007-09-12 | 株式会社ルネサステクノロジ | 記録再生装置および半導体メモリ |
| JP4112849B2 (ja) * | 2001-11-21 | 2008-07-02 | 株式会社東芝 | 半導体記憶装置 |
| KR100955549B1 (ko) * | 2005-11-28 | 2010-04-30 | 미쓰비시덴키 가부시키가이샤 | 위치 검출 오차 보정 방법 |
| KR100833600B1 (ko) * | 2006-08-25 | 2008-05-30 | 삼성전자주식회사 | 에러 정정 회로, 그 방법 및 상기 회로를 구비하는 반도체메모리 장치 |
| KR101425957B1 (ko) * | 2007-08-21 | 2014-08-06 | 삼성전자주식회사 | 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템 |
| JP4856110B2 (ja) * | 2008-03-01 | 2012-01-18 | 株式会社東芝 | チェンサーチ装置およびチェンサーチ方法 |
-
2009
- 2009-09-11 JP JP2009210878A patent/JP2010097600A/ja active Pending
- 2009-09-21 US US12/563,264 patent/US20100077280A1/en not_active Abandoned
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003248631A (ja) * | 2002-02-26 | 2003-09-05 | Nec Microsystems Ltd | メモリ制御回路及びメモリ制御方法 |
| WO2007010189A2 (en) * | 2005-07-15 | 2007-01-25 | Gs Ip Limited Liability Company | Flash memory error correction |
| JP2009501380A (ja) * | 2005-07-15 | 2009-01-15 | ジーエス・アイピー・リミテッド・ライアビリティ・カンパニー | フラッシュエラー訂正 |
| JP2007310916A (ja) * | 2007-09-03 | 2007-11-29 | Renesas Technology Corp | メモリカード |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012081732A1 (en) * | 2010-12-15 | 2012-06-21 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method of controlling the same |
| JP2012128906A (ja) * | 2010-12-15 | 2012-07-05 | Toshiba Corp | 半導体記憶装置 |
| US9189323B2 (en) | 2010-12-15 | 2015-11-17 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method of controlling the same |
Also Published As
| Publication number | Publication date |
|---|---|
| US20100077280A1 (en) | 2010-03-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101659888B1 (ko) | 플래시 메모리 제어 방법, 제어기 및 전자 장치 | |
| US8464137B2 (en) | Probabilistic multi-tier error correction in not-and (NAND) flash memory | |
| TWI569273B (zh) | 非揮發性記憶體裝置讀取干擾管理方法 | |
| US8479062B2 (en) | Program disturb error logging and correction for flash memory | |
| TWI490871B (zh) | 防止讀取干擾的方法、記憶體控制電路單元與記憶體儲存裝置 | |
| US8417879B2 (en) | Method for suppressing errors, and associated memory device and controller thereof | |
| US8832527B2 (en) | Method of storing system data, and memory controller and memory storage apparatus using the same | |
| JP2012137994A (ja) | メモリシステムおよびその制御方法 | |
| CN105320464B (zh) | 防止读取干扰的方法、存储器控制电路单元与存储装置 | |
| JP2010079485A (ja) | 半導体記録装置 | |
| JP2010097600A (ja) | 半導体記録装置 | |
| TWI539282B (zh) | 非揮發性儲存裝置與控制器 | |
| JP5335779B2 (ja) | 半導体記録装置 | |
| CN101308706B (zh) | 适用于闪存的数据写入方法及错误修正编解码方法 | |
| CN106155582A (zh) | 非挥发性储存装置与控制器 | |
| US8392766B2 (en) | Operational method of a controller of a flash memory, and associated memory device and controller thereof | |
| KR102866396B1 (ko) | 비휘발성 메모리의 불량 행 관리를 수행하는 메모리 시스템 및 이의 동작 방법 | |
| CN111831486B (zh) | 半导体装置和包括该半导体装置的半导体系统 | |
| KR20200070686A (ko) | 저장 장치 및 그 동작 방법 | |
| JP7177338B2 (ja) | メモリコントローラ装置、メモリコントローラ装置を有するメモリ装置及びメモリコントロール方法 | |
| JP2010282369A (ja) | メモリシステム | |
| JP4849637B2 (ja) | メモリカード及びメモリコントローラ | |
| JP4641338B2 (ja) | 不揮発性半導体記憶装置及びシステム | |
| CN112562772B (zh) | 自适应低密度奇偶校验硬解码器 | |
| JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20120207 |
|
| RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20120210 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120508 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120911 |