JP4692843B2 - メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents

メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDF

Info

Publication number
JP4692843B2
JP4692843B2 JP2006354777A JP2006354777A JP4692843B2 JP 4692843 B2 JP4692843 B2 JP 4692843B2 JP 2006354777 A JP2006354777 A JP 2006354777A JP 2006354777 A JP2006354777 A JP 2006354777A JP 4692843 B2 JP4692843 B2 JP 4692843B2
Authority
JP
Japan
Prior art keywords
error
group
error correction
data
flash memory
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
JP2006354777A
Other languages
English (en)
Other versions
JP2008165518A (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.)
TDK Corp
Original Assignee
TDK 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 TDK Corp filed Critical TDK Corp
Priority to JP2006354777A priority Critical patent/JP4692843B2/ja
Publication of JP2008165518A publication Critical patent/JP2008165518A/ja
Application granted granted Critical
Publication of JP4692843B2 publication Critical patent/JP4692843B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
従来より、磁気ディスク装置やフラッシュメモリを有する半導体記憶装置から読み出したデータに含まれる誤りを、誤り訂正符号(ECC:Error Correcting Code)に基づいて検出、訂正する方法が知られている。この誤り訂正符号としては、リードソロモン符号、ハミング符号、BCH符号等がある。
リードソロモン符号方式による誤り訂正では、最大符号長Nは、N=2−1で与えられる。ここでnは1シンボル当たりのビット数である。従って、例えば、n=8のときは255シンボルのエラー訂正が可能であり、n=10のときは、1023シンボルのエラー訂正が可能である。
従来の磁気ディスク装置におけるリードソロモン符号方式による誤り訂正では、1セクタ(512バイト)のデータを分割し、誤り訂正符号(ECC)を生成するインタリーブ構成と1セクタを一括して誤り訂正符号(ECC)を生成する非インタリーブ構成とがある(例えば、特許文献1参照)。
特開平9−274591
上述の特許文献1によるインタリーブ構成では、512バイトのデータを3つの誤り訂正符号生成回路に順次振分けて、各誤り訂正符号生成回路に振分けられたデータ毎に誤り訂正符号(ECC)を生成している。又、誤り訂正を行うときも同様に、512バイトのデータを3つの誤り訂正回路に順次振分けて、各誤り訂正回路に振分けられたデータ毎に誤り訂正を行っている。そのため、誤り訂正符号生成回路と誤り訂正回路がそれぞれ3回路ずつ必要であった。
非インタリーブ構成のエラー訂正では、誤り訂正符号(ECC)生成の前、及び、誤り訂正の前に、512バイトのデータを8ビットずつ切り出し、8ビットのデータに2ビットのダミーデータを付加して10ビットのシンボルデータに変換していた。この変換により、512バイトのデータは512シンボルのシンボルデータとなり、512シンボルのデータを基に誤り訂正符号(ECC)が生成される。生成した誤り訂正符号(ECC)はフラッシュメモリのデータバス幅である8ビットに変換する必要があった。かかる構成では、512バイトのデータに関して一括してリードソロモン符号方式の誤り訂正符号(ECC)の生成と、この誤り訂正符号(ECC)に基づく誤り訂正を行うことが可能であるが、8ビットのデータを10ビットのシンボルデータに変換し、10ビットのシンボルデータを8ビットのデータに変換するための特別な回路を設ける必要があり回路規模の巨大化という問題を招来していた。
本発明は、かかる実情に鑑み、上記変換回路を設けることなく、かつ、誤り訂正符号生成回路及び誤り訂正回路の回路規模を増大させることなく、リードソロモン符号方式の誤り訂正を行うことのできるメモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することにある。
上記目的を達成するために、本発明によるメモリコントローラは、ホストシステムから与えられる指示情報に応じて、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、ホストシステムから与えられるセクタ単位のユーザデータを、アドレスが連続した複数のグループに分割し、該グループ毎にシンボル長が8ビットの誤り訂正符号を生成する訂正符号生成手段と、前記誤り訂正符号に基づいて前記フラッシュメモリから読み出したユーザデータに含まれる誤りを、前記グループに含まれるユーザデータ毎に訂正する誤り訂正手段とを備え、前記グループに含まれるユーザデータと該グループに対応する誤り訂正符号を合わせたデータの容量は、255バイト以下になるように設定され、前記誤り訂正手段は、誤りの有無を判断する判断手段と、該判断手段が誤りが有ると判断したグループに対して訂正値を計算する計算手段とを有し、計算手段が前記グループのうち第1のグループの訂正値計算を行うのと並行して、判断手段が前記グループのうち第2のグループの誤り有無を判断することを特徴とする。
このような構成にすることにより、訂正符号生成手段が誤り訂正符号を生成するとき、または、誤り訂正手段が誤り訂正を行うとき、訂正符号生成手段及び、誤り訂正手段は、8ビット単位で読み出されたデータをそのまま用いることが出来るので、誤り訂正符号生成時にダミービットを付加する処理が不要になる。従って、データ変換を行う回路及びダミービットを付加する回路が不要となりメモリコントローラ3の回路規模を縮小できる。
判断手段と計算手段は流れ作業でそれぞれの処理を行うことが出来るためエラー訂正にかかる時間を短縮することができる。また、複数のグループにそれぞれ判断手段と計算手段を設ける必要が無いので、回路規模が増大するのを抑制することができる。
本発明によるフラッシュメモリシステムは、上記のメモリコントローラとフラッシュメモリとを備えることを特徴としている。
本発明による、フラッシュメモリの制御方法は、ホストシステムから与えられる指示情報に応じて、ホストシステムから与えられる1セクタ単位のユーザデータを、アドレスが連続した複数のグループに分割し、該グループ毎にシンボル長が8ビットの誤り訂正符号を生成する訂正符号生成ステップと、前記誤り訂正符号に基づいて前記フラッシュメモリから読み出したユーザデータに含まれる誤りを、前記グループに含まれるユーザデータ毎に訂正する誤り訂正ステップとを備え、前記グループに含まれるユーザデータと該グループに対応する誤り訂正符号を合わせたデータの容量は、255バイト以下になるように設定され、前記誤り訂正ステップは、誤りの有無を判断する判断ステップと、該判断ステップが誤りが有ると判断したグループに対して訂正値を計算する計算ステップとを有し、計算ステップが前記グループのうち第1のグループの訂正値計算を行うのと並行して、判断ステップが前記グループのうち第2のグループの誤り有無を判断することを特徴とする。
本発明のメモリコントローラ及びフラッシュシステムによれば、誤り訂正符号を生成するとき、又は誤り訂正を実行するときに、8ビット単位で読み出されたデータをそのままシンボルデータとして処理している。そのため、ユーザデータを所定のシンボル長に変換する処理が不要であると共に、誤り訂正符号を生成する際にダミービットを付加する処理が不要になる。そのため、回路規模を増大させることなく効率的にエラー訂正を行うことができる。また、計算手段がグループのうち第1のグループの訂正値計算を行うのと並行して、判断手段が前記グループのうち第2のグループの誤り有無を判断している。判断手段と計算手段は流れ作業でそれぞれの処理を行うことが出来るためエラー訂正にかかる時間を短縮することができる。また、複数のグループにそれぞれ判断手段と計算手段を設ける必要が無いので、回路規模が増大するのを抑制することができる。
以下、本発明の実施の形態を、図面を参照しながら説明する。図1は、本発明に係るフラッシュメモリシステム1を概略的に示すブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3で構成されている。
なお、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
メモリコントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインタフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインタフェースブロック10と、ECCブロック11と、ROM(Read Only Memory)12とから構成される。メモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
ホストインタフェースブロック7は、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインタフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインタフェースブロック7を出口としてホストシステム4に供給される。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成されている。
バッファ9は、フラッシュメモリ2から読み出されたデータを、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持する。また、フラッシュメモリ2に書き込むべきデータを、フラッシュメモリ2が書き込み可能な状態となるまで保持する。
フラッシュメモリインタフェースブロック10は、内部バス14を介して、フラッシュメモリ2との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。尚、本実施の形態では、内部バス14は8ビットのバス幅を有し、8ビット単位でデータが伝送される。
ECCブロック11は、フラッシュメモリ2にデータを書き込む際に用いられる誤り訂正符号生成器20と、フラッシュメモリ2からデータを読み出す際に用いられる誤り訂正器30とを有する。誤り訂正符号生成器20は、バッファ9から入力されたデータに基づいて誤り訂正符号(ECC)を生成する。誤り訂正器30は、誤り訂正符号(ECC)に基づいてデータの誤りを検出・訂正する。本実施の形態では、リードソロモン符号方式で符号化された誤り訂正符号(以下、リードソロモン符号の誤り訂正符号と言う)を用いて、誤りの検出と訂正を行っている。誤り訂正符号生成器20、誤り訂正器30の詳細については後述する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブル(後述)の作成等の処理手順を定義するプログラムが格納されている。
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、メモリコントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、各種処理等を定義したコマンドセットをROM12から読み出してフラッシュメモリインタフェースブロック10に供給し、フラッシュメモリインタフェースブロック10に処理を実行させる。
フラッシュメモリ2はNAND型フラッシュメモリからなる。NAND型フラッシュメモリは、不揮発性メモリでありレジスタとメモリセルを備えている。フラッシュメモリ2は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタによって構成される。ここで、一方のゲートが、コントロールゲートと呼ばれ、他方のゲートがフローティングゲートと呼ばれている。このフローティングゲートに電荷(電子)を注入若しくはこのフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。
NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック(物理ブロック)単位でおこなわれる。物理ブロックは、複数のページで構成される。フラッシュメモリの物理ブロックの構成は、大ブロックと小ブロックに大別することができ、本実施の形態では大ブロックを用いている。大ブロックでは、1個のページが4セクタ(2048バイト)のユーザ領域と64バイトの冗長領域とで構成され、1個の物理ブロックが64個のページで構成される。小ブロックは、1個のページが1セクタ(512バイト)のユーザ領域と16バイトの冗長領域とで構成され、1個の物理ブロックが32個のページで構成されている。大ブロックの場合は、ユーザ領域を4分割した512バイトの領域をサブページとし、各サブページに冗長領域内の一部の領域を割り当てて使用する。従って、大ブロックの場合は、1個の物理ブロックに256個のサブページが含まれていることになる。
一方、ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。メモリコントローラ3内では、複数個のセクタをまとめたものを論理ブロックとし、この論理ブロックと物理ブロックの対応関係を管理することにより、ホストシステム4側の論理アドレスをフラッシュメモリ2側の物理アドレスに変換している。
ユーザ領域はホストシステム4から与えられるデータを記憶するための領域である。冗長領域は、誤り訂正符号(ECC:Error Correcting Code)、論理アドレス情報、ブロックステータス(フラグ)等の付加データを記憶するための領域である。
論理アドレス情報は、ユーザ領域に有効なデータが格納されている物理ブロックと対応関係にある論理ブロックを特定するための情報である。ユーザ領域に有効なデータが格納されていない物理ブロックについては、そのブロックの冗長領域に、論理アドレス情報は格納されていない。したがって、冗長領域に論理アドレス情報が格納されているか否かを判定することにより、その冗長領域が含まれている物理ブロックに有効なデータが格納されているか否かを判定することができる。つまり、冗長領域に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断する。
尚、論理ブロックと物理ブロックとの対応関係は通常、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各物理ブロックの冗長領域に記憶されている論理アドレス情報に基づいて作成される。
ブロックステータス(フラグ)は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域には、不良ブロックであることを示すブロックステータス(フラグ)が書き込まれる。
このようなフラッシュメモリ2は、それぞれメモリコントローラ3から、データ、アドレス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。本実施の形態では、フラッシュメモリ2のデータバスは8ビットのバス幅を有し、8ビット単位でデータが伝送される。
以下、図2及び3を参照して本発明のECCブロック11の詳細な構成について説明する。図2は、ECCブロック11の構成のうち誤り訂正符号生成器20のみを記載し、図3はECCブロック11の構成のうち誤り訂正器30のみを記載している。誤り符号生成器20は、生成した誤り訂正符号(ECC)を保持しておくためのバッファ21を有している(図2)。誤り訂正器30は、フラッシュメモリ2から読み出した誤り訂正符号(ECC)を保持するためのバッファ31と、読み出したユーザデータと誤り訂正符号(ECC)とに誤りが有るかを判断する誤り有無計算回路32と、誤りが有った場合に正しい値を計算する訂正値計算回路33とを有する(図3)。訂正値計算回路33では、誤りの数を計算する誤り数計算、誤りがどのシンボルにあるかを計算する誤り位置計算、及び誤りが有るシンボルの正しい値を求める計算を行う。以下では、誤り数計算、誤り位置計算、及び正しい値を求める計算をまとめて訂正値計算と呼ぶ。
図4は本発明の実施の形態におけるフラッシュメモリ2のページ構成を示す説明図である。ユーザ領域は512バイトずつのサブページ60,61,62,63で構成され、冗長領域は、8バイトの共通領域50と、14バイトずつの分割冗長領域70,71,72,73とで構成されている。共通領域50にはブロックステータス、論理アドレス情報などが書き込まれる。分割冗長領域70,71,72,73はそれぞれサブページ60,61,62,63に対応した誤り訂正符号(ECC)が書き込まれる。
次に、フラッシュメモリ2にデータを書き込む際の、誤り訂正符号生成器20の動作を、図2を参照しながら説明する。本実施の形態では、1セクタの(512バイト)のユーザデータは、先頭のアドレスから順に8ビット単位でバッファ9から誤り訂正符号生成器20に転送される。誤り訂正符号生成器20は、512バイトのユーザデータをアドレスが連続する128バイトのデータが含まれる4つのグループに分割し、分割された4つのグループ毎にシンボル長が8ビットの誤り訂正符号(ECC)を2シンボル生成している。誤り訂正符号生成器20は、8ビットを1シンボルとするシンボル長で誤り訂正符号(ECC)を生成しているため、8ビット単位で転送されたユーザデータをそのまま扱うことができる。
以上の処理を具体的に説明する。まず、バッファ9に保持されている1セクタ(512バイト)のユーザデータがフラッシュメモリ2のサブページ60と誤り訂正符号生成器20の双方に転送される。
誤り訂正符号生成器20は、512バイトのユーザデータのうち、最初の128バイトのデータ(第1のグループのデータ)が転送された時点で、128バイト(128シンボル)のデータを基に2シンボルの誤り訂正符号(ECC)を生成し、バッファ21に保持する。
続いて、第1のグループのデータに後続するアドレスのユーザデータからアドレス順に128バイトのデータ(第2のグループのデータ)が誤り訂正符号生成器20に転送され、このデータに基づいて誤り訂正符号(ECC)が2シンボル生成され、バッファ21に保持される。同様に、第2のグループのデータに後続するアドレスの128バイトのデータ(第3のグループのデータ)に関しても2シンボルの誤り訂正符号(ECC)が生成される。最後に、512バイトのユーザデータのうち残る128バイトのデータ(第4のグループのデータ)に関しても2シンボルの誤り訂正符号(ECC)が生成される。
以上の誤り訂正符号(ECC)生成処理により、合計8シンボルの誤り訂正符号(ECC)がバッファ21に保持される。この8シンボルの誤り訂正符号(ECC)は、まとめてフラッシュメモリ2の分割冗長領域70に書き込まれる。
尚、消去状態の不整合を回避するため、1セクタのユーザデータの全ビットが消去状態(論理値の「1」)の場合には、生成された誤り訂正符号(ECC)は、誤り訂正符号(ECC)の全ビットが消去状態(論理値の「1」)になるような変換処理が施されたうえで、バッファ21に保持される。
サブページ61,62,63にユーザデータを書き込む際にもサブページ60に対して行ったのと同様に誤り訂正符号(ECC)が生成され、それぞれ分割冗長領域71,72,73に書き込まれる。
次に、フラッシュメモリ2からデータを読み出す際の、誤り訂正器30の動作を、図3を参照しながら説明する。フラッシュメモリ2から、データは8ビット単位で読み出される。データの読み出しにおいても、誤り訂正器30は、512バイトのユーザデータをアドレスが連続する128バイトのデータに4分割し、128バイトのデータと128バイトのデータに対応する2シンボルの誤り訂正符号(ECC)とを用いてエラー訂正を行っている。誤り訂正器30においても、8ビットを1シンボルとするシンボル長でエラー訂正を行っている。そのため、8ビット単位で転送されたユーザデータをそのまま扱うことが出来る。尚、書き込みと読み出しにおいてユーザデータの分割方法は同じである。
より具体的には、まず、分割冗長領域70から、8シンボルの誤り訂正符号(ECC)が、バッファ31に転送される。この際、消去状態の不整合を回避するために、上述した変換処理が施されている誤り訂正符号(ECC)については、誤り訂正器30において変換処理が施される前の誤り訂正符号(ECC)に戻す逆変換処理が施される。
次に、サブページ60から、512バイトのユーザデータが、内部バス14及びフラッシュメモリインタフェースブロック10を介してバッファ9に転送される。同時に、この512バイトのユーザデータは、訂正器30にも転送される。つまり、バッファ9に転送されるユーザデータは、8ビット単位で論理アドレス(サブページ60内でのアドレス)の順番で誤り訂正器30に入力される。
512バイトのユーザデータのうち、最初の128バイトのデータ(第1のグループのデータ)が誤り訂正器30の誤り有無計算回路32に入力された後に、第1のグループのデータに対応する2シンボルの誤り訂正符号がバッファ31から誤り有無計算回路32に入力される。誤り有無計算回路32は、第1のグループに含まれる128バイト(128シンボル)のデータと2シンボルの誤り訂正符号(ECC)との130シンボルに基づいて誤り有無計算を行う。
続いて、第1のグループのデータに後続するアドレスの128バイトのデータ(第2のグループのデータ)が誤り有無計算回路32に入力される。この後、第2のグループのデータに対応する2シンボルの誤り訂正符合(ECC)がバッファ31から誤り有無計算回路32に入力され、入力された第2のグループのデータと誤り訂正符合(ECC)に基づいて誤り有無計算が行われる。第2のグループのデータに後続するアドレスの128バイトのデータ(第3のグループのデータ)と第3のグループのデータに対応する2シンボルの誤り訂正符号(ECC)に関しても同様な誤り有無計算が行われる。最後に、残った128バイトのデータ(第4のグループのデータ)と第4のグループのデータに対応する2シンボルの誤り訂正符号(ECC)に関しても同様な誤り有無計算が行われる。
誤り有無計算回路32において、第1のグループのデータ(128シンボル)とこのデータに対応する2シンボルの誤り訂正符号(ECC)の130シンボルの中に誤りが含まれると判断された場合には、その誤り有無計算(第1のグループに関する誤り有無計算)の結果が訂正値計算回路33に送られ、訂正値計算が行われる。ここで、訂正値計算回路33で、第1のグループのデータ及び第1のグループのデータに対応する誤り訂正符号(ECC)に関する訂正値計算(第1のグループに関する訂正値計算)が行われている間に、誤り有無計算回路32で、第2のグループのデータ及び第2のグループのデータに対応する誤り訂正符号(ECC)に関する誤り有無計算(第2のグループに関する誤り有無計算)が行われる。更に、第2のグループのデータ(128シンボル)と第2のグループのデータに対応する2シンボルの誤り訂正符号(ECC)の中に誤りが検出されたときは、第1のグループに関する訂正値計算が終了した後に、第2のグループのデータ及びこのデータに対応する誤り訂正符号(ECC)に関する訂正値計算(第2のグループに関する訂正値計算)が行われる。つまり、第1のグループに関する訂正値計算が終了した後に、第2のグループに関する誤り有無計算の結果が訂正値計算回路33に送られ、第2のグループに関する訂正値計算が開始される。尚、バッファ9に保持されているユーザデータは、訂正値計算が終了した後に、訂正値計算の結果に基づいて訂正される。
第1のグループに関する誤り有無計算で誤りが無かった場合には、第1のグループに関する誤り有無計算の結果は訂正値計算回路33に送られず、誤り有無計算回路32には、引き続き、第2のグループのデータ及びこのデータに対応する誤り訂正符号(ECC)が入力される。つまり、誤り有無計算で誤りが無かった場合は、訂正値計算は行われない。また、訂正値計算において、誤り数が2以上であった場合(訂正できるシンボル数を超えた場合)や、誤り位置が誤り訂正符号(ECC)の2シンボルのみにあった場合はその時点でエラー訂正処理(訂正値計算)を終了する。
サブページ61,62,63及び対応する分割冗長領域71,72,73に関しても上記の処理が行われ、フラッシュメモリ2の1ページ分のユーザデータの読み出しが終了する。
尚、本実施の形態における誤り符号生成器20が本発明の訂正符号生成手段に、誤り訂正器30が誤り訂正手段に相当する。また、誤り有無計算回路32は判断手段に、訂正値計算回路は計算手段に相当する。
以上詳細に説明したように、本実施の形態によるメモリコントローラ3によれば、誤り訂正符号(ECC)を生成するとき、又はエラー訂正を実行するときに、8ビット単位で読み出されたデータをそのままシンボルとして処理している。そのため、ユーザデータをリードソロモン符号の所定のシンボル長に変換する処理が不要になる。また、データバス幅と1シンボル当たりのビット数とが共に8ビットとなるため、誤り訂正符号(ECC)生成時にユーザデータに対してダミービットを付加する処理が不要になる。更に、生成された誤り訂正符号(ECC)をデータバス幅に合わせて8ビットのデータに変換する処理も不要になる。従って、データ変換及びダミービットの付加に関する回路が不要となりメモリコントローラ3の回路規模を縮小できる。
エラー訂正処理は、グループ毎に行うことができる。従って、フラッシュメモリ2から1セクタのユーザデータを全て読み出す前に、グループ単位で誤り有無計算及び訂正値計算を開始することができる。
また、誤り訂正器30は、先に読み出されたグループのデータに誤りが有る場合は、先に読み出されたグループの訂正値計算の実行中に、後続するグループのデータに関する誤り有無計算を行う。先行するグループのデータに関する訂正値計算が終了したら、後続するグループのデータに関する訂正値計算が開始される。このような流れ作業で各グループのデータに関するエラー訂正が行われるため、エラー訂正にかかる時間を短縮することができる。また、分割されたグループ毎に誤り符号生成のための回路及びエラー訂正のための回路を設ける必要が無く、回路規模が増大するのを抑制することができる。
本発明によるメモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法は上述した実施の形態に限定されず、特許請求の範囲に記載した範囲で種々の変形や改良が可能である。本実施の形態では、512バイトのユーザデータを4つのグループに分割し、各グループに対して論理アドレスが連続する128バイトのデータを
割り当てたが、グループの数及び各グループに割り当てるデータの容量は、グループに割り当てられたデータとそのグループに対応する誤り訂正符号(ECC)を合わせた容量が255バイトを超えない範囲で適宜設定することができる。又、グループ毎に生成される誤り訂正符号(ECC)のシンボル数も冗長領域26に書き込める範囲内で適宜設定することができる(但し、グループに割り当てられたデータとそのグループに対応する誤り訂正符号(ECC)を合わせた容量は255バイトを超えない範囲で設定しなければならない)。例えば、512バイトのユーザデータを論理アドレスが連続する171バイト、171バイト、170バイトと3つのグループに分割し、各グループに対して誤り訂正符号(ECC)を4シンボルずつ生成するようにしてもよい。
本発明の一実施の形態によるフラッシュメモリシステムの概略構成を示すブロック図である。 本発明の一実施の形態による誤り訂正符号生成器の動作を説明するためのブロック図である。 本発明の一実施の形態による誤り訂正器の動作を説明するためのブロック図である。 本発明の一実施の形態によるフラッシュメモリのページの構成を示すブロック図である。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 メモリコントローラ
20 訂正符号生成器
30 誤り訂正器

Claims (3)

  1. ホストシステムから与えられる指示情報に応じて、フラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    ホストシステムから与えられるセクタ単位のユーザデータを、アドレスが連続した複数のグループに分割し、該グループ毎にシンボル長が8ビットの誤り訂正符号を生成する訂正符号生成手段と、
    前記誤り訂正符号に基づいて前記フラッシュメモリから読み出したユーザデータに含まれる誤りを、前記グループに含まれるユーザデータ毎に訂正する誤り訂正手段とを備え、
    前記グループに含まれるユーザデータと該グループに対応する誤り訂正符号を合わせたデータの容量は、255バイト以下になるように設定され、
    前記誤り訂正手段は、誤りの有無を判断する判断手段と、該判断手段が誤りが有ると判断したグループに対して訂正値を計算する計算手段とを有し、
    計算手段が前記グループのうち第1のグループの訂正値計算を行うのと並行して、判断手段が前記グループのうち第2のグループの誤り有無を判断することを特徴とするメモリコントローラ。
  2. 請求項1記載のメモリコントローラと、
    フラッシュメモリとを備えるフラッシュメモリシステム
  3. ホストシステムから与えられる指示情報に応じて、フラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    ホストシステムから与えられる1セクタ単位のユーザデータを、アドレスが連続した複数のグループに分割し、該グループ毎にシンボル長が8ビットの誤り訂正符号を生成する訂正符号生成ステップと、
    前記誤り訂正符号に基づいて前記フラッシュメモリから読み出したユーザデータに含まれる誤りを、前記グループに含まれるユーザデータ毎に訂正する誤り訂正ステップとを備え、
    前記グループに含まれるユーザデータと該グループに対応する誤り訂正符号を合わせたデータの容量は、255バイト以下になるように設定され、
    前記誤り訂正ステップは、誤りの有無を判断する判断ステップと、該判断ステップが誤りが有ると判断したグループに対して訂正値を計算する計算ステップとを有し、
    計算ステップが前記グループのうち第1のグループの訂正値計算を行うのと並行して、判断ステップが前記グループのうち第2のグループの誤り有無を判断することを特徴とするフラッシュメモリの制御方法。
JP2006354777A 2006-12-28 2006-12-28 メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Expired - Fee Related JP4692843B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006354777A JP4692843B2 (ja) 2006-12-28 2006-12-28 メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006354777A JP4692843B2 (ja) 2006-12-28 2006-12-28 メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2008165518A JP2008165518A (ja) 2008-07-17
JP4692843B2 true JP4692843B2 (ja) 2011-06-01

Family

ID=39694927

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006354777A Expired - Fee Related JP4692843B2 (ja) 2006-12-28 2006-12-28 メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP4692843B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012056491A1 (en) 2010-10-26 2012-05-03 Hitachi, Ltd. Storage apparatus and data control method
JP6050794B2 (ja) * 2014-08-22 2016-12-21 株式会社日立製作所 フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0272455A (ja) * 1988-09-08 1990-03-12 Mitsubishi Electric Corp エラー検出回路付記憶装置
JPH11213693A (ja) * 1998-01-27 1999-08-06 Sony Corp メモリ装置
JP2003115195A (ja) * 2001-07-25 2003-04-18 Hewlett Packard Co <Hp> 耐障害性を有する磁気抵抗固体記憶装置
JP2005085464A (ja) * 2003-09-10 2005-03-31 Hewlett-Packard Development Co Lp 誤り訂正符号化を有する磁気メモリ
JP2005216301A (ja) * 2004-01-29 2005-08-11 Hewlett-Packard Development Co Lp 誤り訂正符号を有する固体記憶装置を構成するシステムおよび方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0272455A (ja) * 1988-09-08 1990-03-12 Mitsubishi Electric Corp エラー検出回路付記憶装置
JPH11213693A (ja) * 1998-01-27 1999-08-06 Sony Corp メモリ装置
JP2003115195A (ja) * 2001-07-25 2003-04-18 Hewlett Packard Co <Hp> 耐障害性を有する磁気抵抗固体記憶装置
JP2005085464A (ja) * 2003-09-10 2005-03-31 Hewlett-Packard Development Co Lp 誤り訂正符号化を有する磁気メモリ
JP2005216301A (ja) * 2004-01-29 2005-08-11 Hewlett-Packard Development Co Lp 誤り訂正符号を有する固体記憶装置を構成するシステムおよび方法

Also Published As

Publication number Publication date
JP2008165518A (ja) 2008-07-17

Similar Documents

Publication Publication Date Title
JP5492679B2 (ja) 記憶装置およびメモリコントローラ
US9424126B2 (en) Memory controller
US9543983B2 (en) Decoding method, memory storage device and memory control circuit unit
US8756398B2 (en) Partitioning pages of an electronic memory
JP2012137994A (ja) メモリシステムおよびその制御方法
JP2015018451A (ja) メモリコントローラ、記憶装置およびメモリ制御方法
JP2009301194A (ja) 半導体記憶装置の制御システム
JP2010079856A (ja) 記憶装置およびメモリ制御方法
US10872667B2 (en) Decoding method, memory controlling circuit unit and memory storage device
JP4256307B2 (ja) メモリカード
JP4956230B2 (ja) メモリコントローラ
JP2006221334A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2007094639A (ja) メモリコントローラ及びフラッシュメモリシステム
WO2009139115A1 (ja) 半導体記録装置
JP4357305B2 (ja) 外部記憶装置
JP4692843B2 (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4582078B2 (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4655034B2 (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP2010128697A (ja) メモリシステム
JP4332132B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US9208863B1 (en) Memory system and method of controlling memory system
TWI500036B (zh) 非揮發性儲存裝置及其控制方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4332134B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110112

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110209

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

Free format text: PAYMENT UNTIL: 20140304

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4692843

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees