JP2009259113A - 不揮発性メモリ管理装置 - Google Patents
不揮発性メモリ管理装置 Download PDFInfo
- Publication number
- JP2009259113A JP2009259113A JP2008109456A JP2008109456A JP2009259113A JP 2009259113 A JP2009259113 A JP 2009259113A JP 2008109456 A JP2008109456 A JP 2008109456A JP 2008109456 A JP2008109456 A JP 2008109456A JP 2009259113 A JP2009259113 A JP 2009259113A
- Authority
- JP
- Japan
- Prior art keywords
- data
- nonvolatile memory
- read
- byte
- mode
- 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.)
- Withdrawn
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】不揮発性メモリ装置への付加回路を少なくしてメモリ装置の信頼性を部分的に高めることを可能とする。
【解決手段】アドレス/モード記憶部110を設け、アドレスにより決定される管理モードによりデータバッファ200と不揮発性メモリ30との間で入出力されるデータ部分のデータ長を変更できるように制御することで、読み出されたデータに付加されるECCコードで訂正可能なデータの割合を増加させることができて、指定した領域に記憶されたデータの信頼性を向上させる。
【選択図】図1
【解決手段】アドレス/モード記憶部110を設け、アドレスにより決定される管理モードによりデータバッファ200と不揮発性メモリ30との間で入出力されるデータ部分のデータ長を変更できるように制御することで、読み出されたデータに付加されるECCコードで訂正可能なデータの割合を増加させることができて、指定した領域に記憶されたデータの信頼性を向上させる。
【選択図】図1
Description
本発明は、不揮発性メモリのメモリ管理技術に係り、信頼性向上技術に関する。
近年、不揮発性メモリでは、メモリセルに多値技術を適用して記憶容量を増加させるものがある。また、計算機システムで使用される不揮発性メモリの容量も年々増加している。さらに、不揮発性メモリを用いた計算機システム全体の信頼性を高める技術が求められている。そんな中で、CPUや不揮発性メモリの回路の変更を少なくして、不揮発性メモリの信頼性向上を行うECC機能の強化が可能なECC制御回路技術が発明されている(例えば、特許公報1参照。)。
特開2004−280790号公報
しかしながら、引用文献1のように、CPUと不揮発性メモリの間に設けたECC制御回路のECC回路を変更することで、不揮発性メモリの信頼性強化を行う方法は、エラー訂正できるデータの数を増加させるとECC制御回路の増加が訂正可能数に比例する以上に大きくなる問題があることと、またECCコードのサイズが増加するため、ECCコードの占める割合が不揮発性メモリ全体で大きくなる問題がある。
本発明は、上記問題を解決するためになされたもので、指定された領域の不揮発性メモリの信頼性を、ECC回路を変更することなく、高めることができる不揮発性メモリ管理装置を提供することを目的とする。
上記目的を達成するために、本発明の不揮発性メモリ管理装置は、ブロック単位で読み書きを行う不揮発性メモリの不揮発性メモリ管理装置であって(以下のm、n(m>n)、i、jは1以上の整数)、メモリ管理モードを記憶するモード記憶手段と、前記不揮発性メモリとの間で読み書きするデータを一時記憶する一時記憶手段と、前記モード記憶手段が第1のモードである時は前記一時記憶手段から前記mバイト長のデータをi回読み出し、第2のモードである時は前記一時記憶手段から前記nバイト長のデータをj回読み出す一時記憶読出し手段と、前記一時記憶読出し手段で読み出されたmバイト長又はnバイト長のデータを受信し、同じビット長のエラー訂正コードを生成して当該データに付加するエラー訂正コード生成付加手段と、前記mバイト長又はnバイト長のデータと対応する前記エラー訂正コードとを前記不揮発性メモリに書き込む不揮発性メモリ書込み手段と、前記モード記憶手段の前記第1乃至第2のモードに基づき、前記不揮発性メモリから前記mバイト長又はnバイト長のデータと対応する前記エラー訂正コードとを読み出す不揮発性メモリ読出し手段と、前記不揮発性メモリ読出し手段で読み出された前記mバイト長又はnバイト長のデータを前記一時記憶手段に書き込む一時記憶書込み手段と、前記mバイト長又はnバイト長のデータと対応する前記エラー訂正コードとに基づいて、前記一時記憶手段に書き込んだデータのエラーを検出した場合、前記一時記憶手段のデータのエラー訂正を行うエラー訂正手段とを具備することを特徴とする。
本発明によれば、メモリから読み出されるデータのエラー訂正を行うECC回路を変更することなく、アドレス/モード情報で設定したアドレスのデータのエラー訂正能力を向上させることができるので、信頼性の高い不揮発性メモリ管理装置を提供することができる。
以下、本発明に係る不揮発性メモリ管理装置の実施例について説明する。
本発明に係る不揮発性メモリ管理装置の実施例を、図1乃至図11を参照して説明する。
図1は、実施例に係るホストCPUの不揮発性メモリへのメモリアクセスを管理する不揮発性メモリ管理装置の構成を示すブロック図である。図2は、ECCコード生成付加回路の構成を示すブロック図である。図3は、エラー訂正回路の構成を示すブロック図である。図4と図6は、データバッファに書き込まれたデータと不揮発性メモリに書き込まれるデータのフォーマットを示す図である。図5と図7は、不揮発性メモリから読み出されたデータとデータバッファに書き込まれるデータのフォーマットを示す図である。図8乃至図11は、不揮発性メモリ管理装置の制御処理手順を示すフローチャートである。
図1に示す不揮発性メモリ管理装置10は、ホストCPU20が不揮発性メモリ30にシステムバス40を経由してデータの読み取りおよび書き込みを行うことを管理する管理装置である。
ホストCPU20は、システムバス40を介して標準的なコンピュータシステムに装備されるプログラムやデータ記憶用の図示しないメインメモリ(1次記憶装置)や、図示しない外部補助記憶装置(不揮発性の2次記憶装置)とともにシステム外部の入出力装置や表示装置などが接続されていて、メインメモリにインストールされたプログラムを実行してデータ処理などの情報処理を行う。
不揮発性メモリ管理装置10は、主としてコントローラ100と、データバッファ200と、ECC生成付加回路300と、エラー訂正回路400とから構成され、システムバス40とはバスインターフェース500を介して接続され、不揮発性メモリ30とはバッファインターフェース510を介して接続されている。
コントローラ100は、アドレス/モード記憶部110を有し、図示しない制御信号で不揮発性メモリ管理装置10内の各ブロックの動作を制御するとともに、不揮発性メモリ管理装置10がホストCPU20および不揮発性メモリ30とインターフェース動作する時のデータやアドレスや各種制御信号の入出力動作を制御する。アドレス/モード記憶部110は、ホストCPU20から設定されるアドレス情報と管理モード情報を記憶する。そして、データバッファ200のデータ管理や不揮発性メモリ30と入出力するデータのエラー訂正符号生成およびエラー訂正の制御において使用される。
データバッファ200は、ホストCPU20が不揮発性メモリ30との間で読み書きするデータを一時記憶するバッファとして使用される。
ECC生成付加回路300は、図2に示すようにECCコード生成回路310とセレクタ320から構成され、データバッファ200から順次読み出されたデータを入力し、入力したデータに基づくECCコードを生成付加してバッファインターフェース510に出力する。
すなわち、データバッファ200から順次読み出されたデータは、セレクタ320に入力され、コントローラ100の制御信号に基づいてセレクタ320から順次出力されるとともに、同時にECCコード生成回路310に入力されてECCコードが生成される。そして、初期設定パラメータと管理モード情報で定められた数のデータの読み出しが終了すると、コントローラ100の制御信号に基づいてセレクタ320による選択が切り替えられて、ECCコード生成回路310で生成されたECCコードがセレクタ320から出力される。これによりECC生成付加回路300は、読出しデータに連続するようにECCコードをバッファインターフェース510に出力することになる。
エラー訂正回路400は、図3に示すようにシンドローム生成回路410と訂正回路420から構成され、不揮発性メモリ30から順次読み出されたデータとECCコードとをバッファインターフェース510を介して受信する。エラー訂正回路400では、不揮発性メモリ30から読み出されたデータをデータバッファ200に出力すると同時に、シンドローム生成回路410に供給する。そして、不揮発性メモリ30からデータに続き読み出されるECCコードは、シンドローム生成回路410のみに供給される。
データとECCコードを受信したシンドローム生成回路410は、シンドロームを生成し、誤り位置多項式と誤り評価多項式の演算を行ってエラーの個数、エラー発生アドレス、エラーデータを求め、そのエラー発生アドレスとエラーデータを訂正回路420に出力する。
エラー発生アドレスとエラーデータを受信した訂正回路420は、エラー発生アドレスに基づいてエラーの発生したデータを読み出し、そのデータと受信入力したエラーデータを用いてエラー訂正演算を行う。そして、データバッファ200にエラー発生アドレスを出力し、エラー訂正したデータを当該アドレスのデータバッファ200に書き込む。このエラー訂正動作は、シンドローム生成回路410で求められたエラー回数だけ繰り返される。
バスインターフェース500は、システムバス40と不揮発性メモリ管理装置10のコントローラ100やデータバッファ200などが接続される内部バスとのインターフェース回路である。
バッファインターフェース510は、不揮発性メモリ30と不揮発性メモリ管理装置10との入出力信号のインターフェース回路である。
不揮発性メモリ30は、例えばNANDフラッシュメモリであってブロック単位で読み書きが行われるメモリである。そして、1ブロックに2Kバイトのデータ領域と、240バイト以上の冗長領域を記憶できるメモリであり、データバッファ200は、1ブロックのデータ領域のデータが記憶できるように、少なくとも2Kバイトの容量を有する。
次に、不揮発性メモリ管理装置10の動作を図4乃至図7のデータフォーマットと、図8乃至図11の制御処理手順を参照しながら説明する。
(初期設定)
最初に、不揮発性メモリ管理装置10は、電源投入やリセット操作の後にホストCPU20から出力される初期パラメータを受信して、主としてコントローラ100内の図示されない制御用テーブルやレジスタなどに書き込み記憶する(図8のステップS100)。
最初に、不揮発性メモリ管理装置10は、電源投入やリセット操作の後にホストCPU20から出力される初期パラメータを受信して、主としてコントローラ100内の図示されない制御用テーブルやレジスタなどに書き込み記憶する(図8のステップS100)。
初期パラメータには、例えば不揮発性メモリ30のメモリの個数やメモリのバッファサイズなどのメモリ構成情報なども含まれる。
次に、ホストCPU20から出力されるアドレス/モード情報をコントローラ100内のアドレス/モード記憶部110に書き込み記憶する(図8のステップS110)。
アドレス/モード情報は、アドレス情報と管理モード情報が組となったもので、不揮発性メモリ30のアドレスとそのアドレスのブロックに記憶されるデータに対する管理モードを指定するものである。例えば、以降の説明において管理モードが「0」の場合は、不揮発性メモリ30の指定されたアドレスでは、その1ブロックのデータサイズと同容量のデータが読み書きされるものとし、管理モードが「1」の場合は、不揮発性メモリ30の指定されたアドレスでは、その1ブロックのデータサイズの半分の容量のデータが読み書きされるように制御管理されるものとする。なお、ブロックアドレスとモードを組とするテーブル形式で記憶するのではなく、コントローラ100の制御方法を変更することで、例えば与えられたアドレスで区切られたブロックアドレスでは管理モードを変更する形で記憶するようにしてもよい。
(書き込み動作)
書き込みアドレスの管理モードが「0」で、ホストCPU20から不揮発性メモリ30へ2Kバイトのデータを書き込む様子を例に、図4と図9を参照しながら説明する。
書き込みアドレスの管理モードが「0」で、ホストCPU20から不揮発性メモリ30へ2Kバイトのデータを書き込む様子を例に、図4と図9を参照しながら説明する。
まず、不揮発性メモリ管理装置10は、データバッファ200の記憶領域にホストCPU20から入力された2Kバイトのデータを受信して記憶する(図9のステップS200)。
次に、不揮発性メモリ管理装置10は、データバッファ200に記憶した2Kバイトのデータを書き込む不揮発性メモリ30の書き込みアドレスをホストCPU20から受信し、コントローラ100内に記憶する。そして、ホストCPU20から書き込みコマンドを受信する(図9のステップS210)。
書き込みコマンドを受信すると、不揮発性メモリ管理装置10は、不揮発性メモリ30への書き込み準備動作を開始する。まず、不揮発性メモリ30に書き込みアドレスを出力した後、アドレス/モード情報110を調べる。ここでは、該当アドレスの管理モードが「0」であるので、ホストCPU20からの2Kバイトのデータが既にデータバッファ200に記憶されているとして、データバッファ200に記憶されたデータを図4(a)に示すように、512バイト毎の4つのサブブロックデータ(600、610、620、630)に分割する。
次に、データバッファ200からデータを順次読み出し、読み出したデータをECC生成付加回路300、バッファインターフェース510を介して不揮発性メモリ30に出力する。また、ECC生成付加回路300ではECCコードが生成される(図9のステップS220)。
即ち、データバッファ200から最初に読み出されたサブブロックデータ600は、不揮発性メモリ30に出力されるとともに、ECCコード生成回路310にてECCコードが生成される。ECCの符号化方式は、例えばリードソロモン符号(Reed Solomon Code)を使用し、例えば、サブブロックデータに対して8シンボル(1シンボルが10ビット)のエラー訂正を行うものとすると、512バイトのサブブロックデータ600に対して、16シンボル(160ビット)、すなわち20バイトのECCコード601が生成される。
次に、ECCコード601がバッファインターフェース510を介して不揮発性メモリ30に出力される(図9のステップS230)。
これにより、ECCコード生成回路310から20バイトのECCコード601が出力されて、不揮発性メモリ30に書き込まれる。先頭のサブブロックデータ600に対応するECCコード601は、図4(b)に示すようにサブブロックデータ600に続き不揮発性メモリ30に書き込まれる。
次に、ホストCPU20からデータバッファ200に記憶されたデータの不揮発性メモリ30への書き込みが終了したか否かを調べ(図9のステップS240)、終了していない時は、次のサブブロックデータ610、620、630に対して同じ動作を繰り返し実行する。その実行のために、コントローラ100のデータバッファ200へのアクセスアドレスやカウンタ等に所定のパラメータを設定してステップS220に戻る。
このようにして、不揮発性メモリ30には、図4(b)の矢印で示す進行方向に512バイト毎のサブブロックデータとそれに対応するECCコードが交互(600、601、610、611、620、621、630、631)に出力されて、不揮発性メモリ30に書き込まれる。不揮発性メモリ管理装置10は、不揮発性メモリ30への書き込みが終了すると、例えば、ホストCPU20に書き込みが終了したことを図示しない割込み信号で通知する。
続いて、書き込みアドレスの管理モードが「1」で、ホストCPU20から不揮発性メモリ30へ1Kバイトのデータを書き込む様子を例に、図6と図9を参照しながら管理モードが「0」と異なる点を中心に説明する。
まず、不揮発性メモリ管理装置10は、データバッファ200にホストCPU20から入力された1Kバイト分のデータを受信して記憶する(図9のステップS200)。
次に、不揮発性メモリ管理装置10は、データバッファ200に記憶したデータを書き込む不揮発性メモリ30の書き込みアドレスをホストCPU20から受信し、コントローラ100内に記憶する。そして、ホストCPU20から書き込みコマンドを受信する(図9のステップS210)。
書き込みコマンドを受信すると、不揮発性メモリ管理装置10は、不揮発性メモリ30への書き込み準備動作を開始する。まず、不揮発性メモリ30に書き込みアドレスを出力した後、アドレス/モード情報110を調べる。ここでは、管理モードが「1」であるので、ホストCPU20からの1Kバイトのデータがデータバッファ200に記憶されているとして、データバッファ200に記憶されたデータを図6(a)に示すように、256バイト毎の4つのサブブロック(700、710、720、730)に分割する。
次に、データバッファ200からデータを順次読み出し、読み出したデータをECC生成付加回路300、バッファインターフェース510を介して不揮発性メモリ30に出力する。また同様に、ECC生成付加回路300ではECCコードが生成される(図9のステップS220)。
即ち、データバッファ200から最初のサブブロックデータ700が読み出され、不揮発性メモリ30に出力されるとともに、ECCコード生成回路310にて対応するECCコードが生成される。ここでもサブブロックデータ700に対して8シンボルのエラー訂正を行うので、256バイトのサブブロックデータに対して、16シンボル(160ビット)、すなわち20バイトのECCコード701が生成される。
次に、ECCコード701のデータがバッファインターフェース510を介して不揮発性メモリ30に出力される(図9のステップS230)。
これにより、ECCコード生成回路310からの20バイトのECCコード701が出力されて、不揮発性メモリ30に書き込まれる。先頭のサブブロックデータ700に対応するECCコード701は、図6(b)に示すようにサブブロックデータ700に続き不揮発性メモリ30に書き込まれる。
次に、データバッファ200に記憶されたデータの不揮発性メモリ30への書き込みが終了したか否かを調べ(図9のステップS240)、終了していない時は、次のサブブロックデータ710、720、730に対して同じ動作を繰り返し実行する。その実行のために、コントローラ100のデータバッファ200へのアクセスアドレスやカウンタなどに等に所定のパラメータを設定してステップS220に戻る。
このようにして、不揮発性メモリ30には図6(b)の矢印で示す進行方向に256バイト毎のサブブロックデータとそれに対応するECCコードが交互(700、701、710、711、720、721、730、731)に出力されて、不揮発性メモリ30に書き込まれる。不揮発性メモリ管理装置10は、不揮発性メモリ30への書き込みが終了すると、管理モードが「0」の書き込みと同様に、ホストCPU20に書き込みが終了したことを図示しない割込み信号で通知する。
(読み出し動作)
次に、読み出しアドレスの管理モードが「0」で、不揮発性メモリ30からホストCPU20へ2Kバイトのデータを読み出す様子を例に、図5と図10と図11を参照しながら説明する。
次に、読み出しアドレスの管理モードが「0」で、不揮発性メモリ30からホストCPU20へ2Kバイトのデータを読み出す様子を例に、図5と図10と図11を参照しながら説明する。
まず、不揮発性メモリ管理装置10は、不揮発性メモリ30からデータを読み出す読み出しアドレスをホストCPU20から受信し、コントローラ100内に記憶する。そして、ホストCPU20からの読み出しコマンドを受信する(図10のステップS300)。
読み出しコマンドを受信すると、不揮発性メモリ管理装置10は、不揮発性メモリ30からの読み出し準備動作を開始する。まず、不揮発性メモリ30に読み出しアドレスと読み出し開始コマンドを出力した後、アドレス/モード情報110を調べる。ここでは、該当アドレスの管理モードが「0」であるので、不揮発性メモリ30から512バイトのサブブロックデータ650、660、670、680とそれに対応する20バイトのECCコード651、661、671、681を順次読み出し、サブブロック毎にエラー検査と訂正処理を行って2Kバイト分のデータとして構築するようデータバッファ200に書き込むためにコントローラ100内の制御パラメータを設定する。
次に、不揮発性メモリ30より読み出された512バイトのサブブロックデータ650とそれに対応するECCコード651は、バッファインターフェース510、エラー訂正回路400を介してデータバッファ200に出力される(図10のステップS310)。
エラー訂正回路400では、読み出された512バイトのサブブロックデータ650がデータバッファ200にそのまま出力されて書き込まれるとともに、シンドローム生成回路410に入力される(図10のステップS320)。
次に、不揮発性メモリ30より読み出された20バイトのECCコード651がシンドローム生成回路410に入力される。
シンドローム生成回路410は、512バイトのサブブロックデータ650と20バイトのECCコード651とに基づいてシンドロームを生成する(図10のステップS330)。
次に、生成されたシンドロームに基づいて、エラー訂正回路400はデータバッファ200に書き込まれたデータのエラー訂正を行う(図10のステップS340)。
ここで、エラー訂正の手順を詳しく説明する。なお、このエラー訂正回路400の処理手順での計算は、処理高速化のため、例えば今井秀樹著「符号理論」(2003年11月10日発行:電子情報通信学会)の165頁乃至173頁に説明されている「ユークリッド演算回路やチェン探索回路」などの専用の演算回路が使用される。
そして、エラー訂正回路400は生成されたシンドロームが「0」であるか否かによってエラーが検出されたか調べる(図11のステップS341)。そして、エラーが検出された場合はステップS342に進み、エラーの検出がなければ、ステップS340のエラーデータの訂正ステップを終了してステップS350に進む。すなわち、読み出した512バイトのサブブロックデータ650とECCコード651とにより生成されたシンドローム(剰余)が「0」であれば、読み出したデータにエラー発生がないことを示しているので、エラー訂正回路400はデータバッファ200に書き込まれたデータの訂正処理は行ない。一方、生成されたシンドローム(剰余)が「1」であれば、エラー訂正回路400は生成されたシンドロームを用いて、誤り位置多項式と誤り評価多項式の計算を行う(図11のステップS342)。
即ち、シンドローム生成回路410のシンドローム演算回路で生成されたシンドロームは、ユークリッド演算回路に入力されて、誤り位置多項式と誤り評価多項式が求められ出力される。
次に、シンドローム生成回路410は、誤り位置と誤りの値を求める(図11のステップS343)。シンドローム生成回路410のチェン探索回路は、ユークリッド演算回路が出力する誤り位置多項式と誤り評価多項式からそれぞれの係数を求め、その係数から誤り位置と誤りの値を求める。
次に、訂正回路420は、誤りデータの訂正を行う(図11のステップS344)。コントローラ100は、シンドローム生成回路410から出力された誤り位置の情報を用いてデータバッファ200に於けるアドレスを計算して、そのアドレスを用いてデータバッファ200からデータを読み出し、そのデータを訂正回路420に入力する。
訂正回路420は、シンドローム生成回路410から上記誤り位置に対応して出力された誤りの値を予め受信していて、データバッファ200より読み出されたデータを受信すると当該誤りの値を用いてデータのエラー訂正を行うように演算して、その結果を記憶する。次に、コントローラ100は、先程計算したアドレスをデータバッファ200に出力して、訂正回路420から演算結果の訂正されたデータをデータバッファ200の当該アドレスに書き込む。
次に、全てのエラー訂正が終了したか否かを調べる(図11のステップS345)。そして、シンドローム生成回路410から出力された誤りの個数のエラー訂正処理が終了していない場合は、ステップS343に戻り次のエラー発生位置と誤りの値を求めて、当該位置のデータのエラー訂正を行う。20バイトのECCコードで訂正可能な8シンボル分のエラー訂正が終了した場合は、図10のステップS340を終了してステップS350に進む。
このように、バッファメモリ200に読み出したサブブロックの全データのエラー訂正が終了すると、次に、不揮発性メモリ30からの読み出しとデータバッファ200への書き込みが終了したか調べる(図10のステップS350)。そして、終了していない時は、データバッファ200の次のサブブロックのデータの読み出しと書き込みを行う。そのため、コントローラ100のデータバッファ200へのアクセスアドレスやカウンタなどに必要なパラメータを設定してステップS310に戻る。
このようにして、不揮発性メモリ30から図5(a)の矢印で示す進行方向にサブブロックデータとそれに対応するECCコードが交互(650、651、660、661、670、671、680、681)に読み出し、データバッファ200に書き込む。そして、エラー訂正回路400によってエラーを検出すると、当該データをデータバッファ200から読み出し、エラー訂正を施してデータバッファ200に書き戻し、正しいデータ(652、662、672、682)を生成する。
なお、生成された正しいデータに対し異なる番号を付与しているが、例えば読み出されたデータ650にエラー発生が無い時は、データ652とデータ650の内容は同じである。不揮発性メモリ管理装置10は、不揮発性メモリ30からの読み出しとデータバッファ200への書き込みが終了すると、例えば、上述の不揮発性メモリ30へデータの書き込みが終了した場合と同様に、ホストCPU20に読み出しが終了したことを図示しない割込み信号で、通知する。ホストCPU20は、読み出し終了を検知すると、データバッファ200から2Kバイトのデータを読み出す。
続いて、読み出しアドレスの管理モードが「1」で、不揮発性メモリ30からホストCPU20へ1Kバイトのデータを読み出す様子を例に、図7と図10と図11を参照しながら管理モードが「0」と異なる点を中心に説明する。
まず、不揮発性メモリ管理装置10は、不揮発性メモリ30からデータを読み出す読み出しアドレスと、読み出しコマンドをホストCPU20から受信する(図10のステップS300)。
読み出しコマンドを受信すると、不揮発性メモリ管理装置10は、不揮発性メモリ30からの読み出し準備動作を開始する。まず、不揮発性メモリ30に読み出しアドレスと読み出し開始コマンドを出力した後、アドレス/モード情報110を調べる。ここでは、該当アドレスの管理モードが「1」であるので、不揮発性メモリ30から256バイトのサブブロックデータ750、760、770、780とそれに対応するECCコード751、761、771、781を順次読み出し、サブブロック毎にエラー検査と訂正処理を行って1Kバイト分のデータとして構築するようデータバッファ200に書き込むためにコントローラ100内の制御パラメータを設定する。
次に、不揮発性メモリ30より読み出された256バイトのサブブロックデータ750とそれに対応するECCコード751は、バッファインターフェース510、エラー訂正回路400を介してデータバッファ200に出力される(図10のステップS310)。
エラー訂正回路400では、読み出された256バイトのサブブロックデータ750がデータバッファ200にそのまま出力されて書き込まれるとともに、シンドローム生成回路410に入力される(図10のステップS320)。
次に、不揮発性メモリ30より読み出された20バイトのECCコード751がシンドローム生成回路410に入力される。
シンドローム生成回路410は、256バイトのサブブロックデータ750と20バイトのECCコード751とに基づいてシンドロームを生成する(図10のステップS330)。
次に、生成されたシンドロームに基づいて、エラー訂正回路400はデータバッファ200に書き込まれたデータのエラー訂正を行う(図10のステップS340)。
まず、エラー訂正回路400では、生成されたシンドロームが「0」である否かによってエラーが検出されたか調べる(図11のステップS341)。そして、エラーが検出された場合(シンドロームが「1」)は、ステップS342に進み、エラーの検出がなければ、ステップS340を終了してステップS350に進む。
シンドロームが「1」である場合、エラー訂正回路400は生成されたシンドロームを用いて、誤り位置多項式と誤り評価多項式の計算を行う(図11のステップS342)。
即ち、シンドローム生成回路410のシンドローム演算回路で生成されたシンドロームは、ユークリッド演算回路に入力されて、誤り位置多項式と誤り評価多項式が求められ出力される。
次に、シンドローム生成回路410は、誤り位置と誤りの値を求める(図10のステップS343)。シンドローム生成回路410のチェン探索回路は、ユークリッド演算回路が出力する誤り位置多項式と誤り評価多項式からそれぞれの係数を求め、その係数から誤り位置と誤りの値を求め、コントローラ100に出力する。
次に、コントローラ100は、エラー検出したデータをバッファメモリ200から訂正回路420へ読み出し、訂正回路420にてエラー訂正処理を施してバッファメモリ200に書き戻す処理によって誤りデータの訂正を行う(図11のステップS344)。
次に、全てのエラー訂正が終了したかを調べる(図11のステップS345)。そして、シンドローム生成回路410から出力された誤りの個数のエラー訂正処理が終了していない場合は、ステップS343に戻り次のエラー発生位置と誤りの値を求めて、当該位置のデータのエラー訂正を行う。20バイトのECCコードで訂正可能な8シンボル分のエラー訂正が終了した場合は、図10のステップS340を終了してステップS350に進む。
このように、バッファメモリ200に読み出したサブブロックデータのエラー訂正が終了すると、次に、不揮発性メモリ30からの読み出しとデータバッファ200への書き込みが終了したか調べる(図10のステップS350)。そして、終了していない時は、データバッファ200の次のサブブロックのデータの読み出しと書き込みを行う。そのためにコントローラ100のデータバッファ200へのアクセスアドレスやカウンタなどに所定のパラメータを設定してステップS310に戻る。
このようにして、不揮発性メモリ30から図5(a)の矢印で示す進行方向にサブブロックデータとそれに対応するECCコードが交互(750、751、760、761、770、771、780、781)に読み出し、データバッファ200に書き込み。そして、エラー訂正回路400によってエラーを検出すると、当該データをデータバッファ200から読み出し、エラー訂正を施してデータバッファ200に書き戻し、正しいデータ(752、762、772、782)を生成する。
不揮発性メモリ管理装置10は、不揮発性メモリ30からの読み出しとデータバッファへ200の書き込みが終了すると、例えば、管理モードが「0」のアドレスからのデータ読み出しと同様に、ホストCPU20に読み出しが終了したことを図示しない割込み信号で、通知する。ホストCPU20は、読み出し終了を検知すると、データバッファ200から1Kバイトのデータを読み出す。
なお、読み出し動作において、読み出したデータに20バイトのECCコードで訂正できない数のエラーが発生した時の不揮発性メモリ管理装置10のエラー処理手順は、使用される計算機システムに依存する部分が多いため省略している。
不揮発性メモリ管理装置10を上述のように、アドレス/モード情報を用いて、ホストCPU20と不揮発性メモリ30とのデータの読み書きにおいて、データのサイズを変更できるように構成することで、読み書きするデータの訂正可能な数は、管理モードが「0」の場合は、2Kバイトのデータに対して32シンボル(8シンボル*4)であるが、管理モードが「1」の場合は、1Kバイトのデータに対して32シンボルとなる。これにより、管理データを「1」と設定したアドレスに記憶させたデータに対するエラー訂正能力をほぼ2倍に向上させることができる。この不揮発性メモリ管理装置10を用いたシステムでは、ホストCPU20が、特に高い信頼性が必要となるデータやプログラム(例えば、BootプログラムやOSなど)を記憶させる領域のアドレスのみの管理モードを「1」とすることで、システム全体の信頼性を向上させることができる。
本発明は、上記実施例に限定されるものではなく、発明の要旨を逸脱しない範囲で、種々、変形して実施できることは勿論である。
例えば、管理モードが「1」の場合の、256バイトのサブブロックのデータのサイズを「256」ではなく管理モードが「0」の場合のサブブロックのデータのサイズ512バイト未満のサイズにまで増加させることが可能であり、この場合は、信頼性の高いデータを記憶する不揮発性メモリ30の記憶容量を増加させることができる。
また、管理モードが「1」の場合の、256バイトのサブブロックの数を「4」ではなくデータバッファ200と不揮発性メモリ30のアクセスのブロックサイズに収まる数に増加させることが可能であり、信頼性の高いデータを記憶する不揮発性メモリ30の記憶容量を増加させることができる。
また、管理モードに「2」を設けて、128バイトのデータと20バイトのECCコードを単位として不揮発性メモリ30と読み書きするようにすれば、管理モード「1」に比べて訂正能力を更に2倍とすることができて、信頼性の要求レベルに応じて、管理モードを使い分けることができるので更に柔軟で信頼性の高いデータ管理が可能となる。なお、管理モード「2」は、管理モード「0」「1」と適宜組み合わせて使用することができ、例えば、管理モード「0」と「2」を組み合わせ、管理モード「0」と「1」と「2」を組み合わせて使用しても良い。
また、不揮発性メモリ管理装置10のアドレス/モード情報を不揮発性メモリ30に記憶させて読み書きすることを可能とすれば、不揮発性メモリ30が取り外し取り付け可能な不揮発性メモリとすることができ、不揮発性メモリ管理装置10は不揮発性メモリ30が取り付けられた時に、その不揮発性メモリ30に記憶されたモード管理情報を読み込み記憶しホストCPU20に管理情報を読み込ませることで、その不揮発性メモリ30に書き込まれたデータに信頼性レベルの異なるものが混在している場合も適切に読み書きが行えるようになり、利便性と信頼性の高いシステムを提供することができる。
10 不揮発性メモリ管理装置
20 ホストCPU
30 不揮発性メモリ
40 バス
100 コントローラ
110 アドレス/モード記憶部
200 データバッファ
300 ECC生成付加回路
310 ECCコード生成回路
320 セレクタ
400 エラー訂正回路
410 シンドローム生成回路
420 訂正回路
500 バスインターフェース
510 バッファインターフェース
20 ホストCPU
30 不揮発性メモリ
40 バス
100 コントローラ
110 アドレス/モード記憶部
200 データバッファ
300 ECC生成付加回路
310 ECCコード生成回路
320 セレクタ
400 エラー訂正回路
410 シンドローム生成回路
420 訂正回路
500 バスインターフェース
510 バッファインターフェース
Claims (2)
- ブロック単位で読み書きを行う不揮発性メモリの不揮発性メモリ管理装置であって(以下のm、n(m>n)、i、jは1以上の整数)、
メモリ管理モードを記憶するモード記憶手段と、
前記不揮発性メモリとの間で読み書きするデータを一時記憶する一時記憶手段と、
前記モード記憶手段が第1のモードである時は前記一時記憶手段から前記mバイト長のデータをi回読み出し、第2のモードである時は前記一時記憶手段から前記nバイト長のデータをj回読み出す一時記憶読出し手段と、
前記一時記憶読出し手段で読み出されたmバイト長又はnバイト長のデータを受信し、同じビット長のエラー訂正コードを生成して当該データに付加するエラー訂正コード生成付加手段と、
前記mバイト長又はnバイト長のデータと対応する前記エラー訂正コードとを前記不揮発性メモリに書き込む不揮発性メモリ書込み手段と、
前記モード記憶手段の前記第1乃至第2のモードに基づき、前記不揮発性メモリから前記mバイト長又はnバイト長のデータと対応する前記エラー訂正コードとを読み出す不揮発性メモリ読出し手段と、
前記不揮発性メモリ読出し手段で読み出された前記mバイト長又はnバイト長のデータを前記一時記憶手段に書き込む一時記憶書込み手段と、
前記mバイト長又はnバイト長のデータと対応する前記エラー訂正コードとに基づいて、前記一時記憶手段に書き込んだデータのエラーを検出した場合、前記一時記憶手段のデータのエラー訂正を行うエラー訂正手段と
を具備することを特徴とする不揮発性メモリ管理装置。 - 前記不揮発性メモリは、前記不揮発性メモリ管理装置より取り外し可能なもので、前記不揮発性メモリに前記メモリ管理モードを記憶させて、前記不揮発性メモリから読み込んだモード情報に応じて、前記不揮発性メモリのアクセスモードを決定する手段を具備することを特徴とする請求項1に記載の不揮発性メモリ管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008109456A JP2009259113A (ja) | 2008-04-18 | 2008-04-18 | 不揮発性メモリ管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008109456A JP2009259113A (ja) | 2008-04-18 | 2008-04-18 | 不揮発性メモリ管理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009259113A true JP2009259113A (ja) | 2009-11-05 |
Family
ID=41386434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008109456A Withdrawn JP2009259113A (ja) | 2008-04-18 | 2008-04-18 | 不揮発性メモリ管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009259113A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010218447A (ja) * | 2009-03-18 | 2010-09-30 | Renesas Electronics Corp | データ処理装置 |
JP2011039585A (ja) * | 2009-08-06 | 2011-02-24 | Sony Corp | 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム |
US8856613B2 (en) | 2010-09-22 | 2014-10-07 | Kabushiki Kaisha Toshiba | Semiconductor storage device, memory control device, and control method of semiconductor memory |
CN106371761A (zh) * | 2015-07-23 | 2017-02-01 | 株式会社东芝 | 内存系统以及非易失性内存的控制方法 |
JP2019049995A (ja) * | 2018-10-22 | 2019-03-28 | 東芝メモリ株式会社 | メモリシステムおよび不揮発性メモリの制御方法 |
CN110262916A (zh) * | 2018-03-12 | 2019-09-20 | 点序科技股份有限公司 | 系统码的管理装置及其管理方法 |
-
2008
- 2008-04-18 JP JP2008109456A patent/JP2009259113A/ja not_active Withdrawn
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010218447A (ja) * | 2009-03-18 | 2010-09-30 | Renesas Electronics Corp | データ処理装置 |
JP2011039585A (ja) * | 2009-08-06 | 2011-02-24 | Sony Corp | 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム |
US8856613B2 (en) | 2010-09-22 | 2014-10-07 | Kabushiki Kaisha Toshiba | Semiconductor storage device, memory control device, and control method of semiconductor memory |
CN106371761A (zh) * | 2015-07-23 | 2017-02-01 | 株式会社东芝 | 内存系统以及非易失性内存的控制方法 |
JP2017027388A (ja) * | 2015-07-23 | 2017-02-02 | 株式会社東芝 | メモリシステムおよび不揮発性メモリの制御方法 |
CN106371761B (zh) * | 2015-07-23 | 2019-07-05 | 东芝存储器株式会社 | 内存系统以及非易失性内存的控制方法 |
CN110262916A (zh) * | 2018-03-12 | 2019-09-20 | 点序科技股份有限公司 | 系统码的管理装置及其管理方法 |
CN110262916B (zh) * | 2018-03-12 | 2023-06-13 | 点序科技股份有限公司 | 系统码的管理装置及其管理方法 |
JP2019049995A (ja) * | 2018-10-22 | 2019-03-28 | 東芝メモリ株式会社 | メモリシステムおよび不揮発性メモリの制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8006165B2 (en) | Memory controller and semiconductor memory device | |
US9424126B2 (en) | Memory controller | |
JP3272903B2 (ja) | 誤り訂正検出回路と半導体記憶装置 | |
KR20090028507A (ko) | 비휘발성 메모리 에러 보정 시스템 및 방법 | |
JP2013003656A (ja) | メモリコントローラ | |
JP2004234545A (ja) | 制御回路及びメモリコントローラ | |
JP2005242797A (ja) | エラー訂正回路 | |
JP2009259113A (ja) | 不揮発性メモリ管理装置 | |
JP2009301194A (ja) | 半導体記憶装置の制御システム | |
KR20110025524A (ko) | 반도체 메모리 장치 및 그것의 데이터 처리 방법 | |
US20220180961A1 (en) | Memory device and read method thereof | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
KR20140018095A (ko) | 에러 검출 정정 회로 및 메모리 장치 | |
JP2012003569A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
CN110795271A (zh) | 对用户数据执行纠错的纠错电路和使用其的纠错方法 | |
JP6054753B2 (ja) | 半導体装置及びデータアクセス方法 | |
JP5446931B2 (ja) | 誤り検出訂正装置及びメモリ装置 | |
JP4692843B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
CN111427717A (zh) | 用于在存储器系统中编码和解码数据的方法和装置 | |
US11088711B2 (en) | Memory apparatus and data accessing method thereof | |
JPH0434786B2 (ja) | ||
CN112540866B (zh) | 存储器装置及其数据存取方法 | |
US20240275408A1 (en) | Memory system, memory controller, and method of controlling non-volatile memory | |
US20140245101A1 (en) | Semiconductor memory | |
JP2010140132A (ja) | メモリシステム及びメモリコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20110705 |