JP2018055400A - メモリコントローラ、メモリシステム及びメモリ制御方法 - Google Patents
メモリコントローラ、メモリシステム及びメモリ制御方法 Download PDFInfo
- Publication number
- JP2018055400A JP2018055400A JP2016190678A JP2016190678A JP2018055400A JP 2018055400 A JP2018055400 A JP 2018055400A JP 2016190678 A JP2016190678 A JP 2016190678A JP 2016190678 A JP2016190678 A JP 2016190678A JP 2018055400 A JP2018055400 A JP 2018055400A
- Authority
- JP
- Japan
- Prior art keywords
- error
- data
- read
- memory
- read 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
- Detection And Correction Of Errors (AREA)
- Read Only Memory (AREA)
Abstract
【課題】不揮発メモリからホストシステムへの読出しデータの転送性能を向上する。【解決手段】ホストシステムから与えられる読出しコマンドに基づいて不揮発メモリからのデータの読出しを制御するメモリコントローラが、不揮発メモリから読み出されたデータである読出しデータが格納される第1の記憶手段と、読出しデータの誤り訂正符号を基にその読出しデータの誤り位置を検出する誤り検出手段と、検出された誤り位置を表すデータである誤り位置データが格納される第2の記憶手段と、ホストシステムに出力される読出しデータが格納される第3の記憶手段と、第1の記憶手段から出力された読出しデータと第2の記憶手段から出力された誤り位置データとが入力され、その誤り位置データを用いて特定された誤り位置にある誤りを訂正した読出しデータを第3の記憶手段に出力する誤り訂正手段とを備える。【選択図】図3
Description
本発明は、概して、不揮発メモリから読み出されたデータの誤り訂正に関する。
不揮発メモリとして、一般に、NAND型フラッシュメモリ(以下、フラッシュメモリ)が知られている。フラッシュメモリは、複数の物理ブロックにより構成され、各物理ブロックは、複数の物理ページにより構成される。フラッシュメモリでは、ページ(物理ページ)単位でデータが入出力され、ブロック(物理ブロック)単位でデータが消去される。
フラッシュメモリから読み出されたデータ(以下、読出しデータ)に誤りがあることがある。読出しデータの誤りは、そのデータに関連付けられている誤り訂正符号(ECC(Error Correcting Code))に基づいて検出および訂正される(例えば特許文献1〜3)。
一般に、読出しデータは、バッファと誤り訂正回路の両方に送られる。誤り訂正回路によって読出しデータの誤りが検出された場合、バッファから読出しデータを読み出し訂正された読出しデータをバッファへ書き戻すことが行われる。このような読み出し及び書き戻しは、誤りが検出された全ての読出しデータについて行われ、且つ、読出しデータにおける誤り数(訂正ビット数)が多い程時間がかかる。近年、フラッシュメモリの微細化が進む傾向や、セル当たりの情報量が増える傾向(例えばMLC(Multiple Level Cell)やTLC(Triple Level Cell))にあり、結果として、読出しデータが誤りのある読出しデータである確率が高く、読出しデータにおける誤りの数が多い傾向にある。このため、上述の書き戻しの頻度は増え、書き戻しに要する時間も長くなる傾向となる。上述の書き戻しの増加や長時間化は、フラッシュメモリからホストシステムへの読出しデータの転送性能を低下させることとなる。
この種の問題は、フラッシュメモリ以外の不揮発メモリについても有り得る。
従って、本発明の目的は、不揮発メモリからホストシステムへの読出しデータの転送性能を向上することにある。
ホストシステムから与えられる読出しコマンドに基づいて不揮発メモリからのデータの読出しを制御するメモリコントローラが、不揮発メモリから読み出されたデータである読出しデータが格納される第1の記憶手段と、読出しデータの誤り訂正符号を基にその読出しデータの誤り位置を検出する誤り検出手段と、検出された誤り位置を表すデータである誤り位置データが格納される第2の記憶手段と、ホストシステムに出力される読出しデータが格納される第3の記憶手段と、第1の記憶手段から出力された読出しデータと第2の記憶手段から出力された誤り位置データとが入力され、その誤り位置データを用いて特定された誤り位置にある誤りを訂正した読出しデータを第3の記憶手段に出力する誤り訂正手段とを備える。
不揮発メモリから第1の記憶手段を経由した読出しデータが誤り訂正手段に入力及び訂正されて第3の記憶手段に出力される。誤り検出手段によって読出しデータの誤りが検出されても、上述の書き戻し(第1の記憶手段への書き戻し)は不要である。このため、不揮発メモリからホストシステムへの読出しデータの転送性能が向上する。
以下、不揮発メモリとしてNAND型フラッシュメモリ(以下、フラッシュメモリ)を例に取り、本発明の一実施形態を説明する。
図1は、本発明の一実施形態に係るフラッシュメモリシステムの構成を示す。
フラッシュメモリシステム1は、不揮発メモリの一例であるフラッシュメモリ2と、それを制御するフラッシュメモリコントローラ3とで構成されている。
フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
フラッシュメモリコントローラ3は、マイクロプロセッサ6と、ホストインタフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインタフェースブロック10と、ECC(Error Correcting Code)ブロック11と、ROM(Read Only Memory)12とから構成される。フラッシュメモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。これら機能ブロックによって構成されるフラッシュメモリコントローラ3は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
ホストインタフェースブロック7は、ホストシステム4との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインタフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインタフェースブロック7を出口としてホストシステム4に供給される。
ホストインタフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えている。コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書込みコマンド、読出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタR2には、アクセス対象領域のセクタ数が書き込まれる。LBAレジスタR3には、アクセス対象領域の先頭のLBA(Logical Block Address)が書き込まれる。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータを一時的に格納する作業領域であり、例えば複数のSRAM(Static Random Access Memory)セルによって構成されている。ワークエリア8には、例えば、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブル等が記憶される。アドレス変換テーブルを用いて、論理アドレスを物理アドレスに変換することができる(アクセス先の論理ブロックにマッピングされている物理ブロックを特定することができる)。
バッファ9は、例えばRAM(Random Access Memory)上に設けられた記憶領域である。バッファ9は、フラッシュメモリ2からの読出しデータをホストシステム4が受け取り可能な状態となるまで保持するバッファであるホスト側バッファと、フラッシュメモリ2への書込みデータをフラッシュメモリ2が書込み可能な状態となるまで保持するフラッシュ側バッファとを含む。
フラッシュメモリインタフェースブロック10は、内部バス14を介して、フラッシュメモリ2との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、フラッシュメモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、フラッシュメモリコントローラ3から与えられる内部コマンドに従って動作する。
ECCブロック11は、フラッシュメモリ2への書込みデータに付加される誤り訂正符号(ECC:Error Correcting Code)を生成するとともに、読出しデータに付加されている誤り訂正符号に基づいてその読出しデータに含まれる誤りを検出及び訂正する。ECCブロック11の詳細については後述する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、フラッシュメモリコントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、ROM12から読出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインタフェースブロック10に処理を実行させる。
以下、本発明の一比較例に係る読出しデータ転送と、本発明の一実施形態に係る読出しデータ転送とを説明する。以下の説明では、「読出しデータ」は、フラッシュメモリ2から読み出されたデータである。読出しデータは、複数のビットで構成されている。以下、読出しデータを構成する複数のビットの各々を、「読出しビット」と呼ぶ。読出しビットのうち、誤りのある読出しビットを、「誤りビット」と呼ぶ。
図2は、本発明の一比較例に係る読出しデータ転送の模式図である。
一比較例によれば、ECCブロックが、誤り訂正回路230を含む。誤り訂正回路230は、誤り検出部213、誤り訂正部211及びデコーダ214を含む。誤り検出部213、誤り訂正部211及びデコーダ214の各々は、ハードウェア回路である。
誤り検出部213は、読出しデータ及びそれの誤り訂正符号の入力を受け、その誤り訂正符号を用いて、その読出しデータのうちの誤りビットを検出する。誤り検出部213は、検出された誤りビットの位置を表す第1形式の誤り位置データを保持(記憶)する。
デコーダ214は、誤り検出部213から出力され入力された第1形式の誤り位置データをフラッシュ側バッファ9Bのアドレスデータに変換する。
誤り訂正部211は、読出しデータを、誤り検出部213に保持(記憶)されている第1形式の誤り位置データに基づいて訂正する。
一比較例に係る読出しデータ転送は、以下の通りである。
フラッシュメモリ2からの読出しデータがフラッシュ側バッファ9Bに格納される。また、フラッシュメモリ2からの読出しデータとそれの誤り訂正符号が、誤り訂正ユニット230内の誤り検出部213に入力される。
誤り検出部213は、入力された誤り訂正符号を用いて、入力された読出しデータに誤りビットがあればその誤りビットを検出する。誤り検出部213は、検出された誤りビットの位置を表す第1形式の誤り位置データを保持(記憶)する。第1形式の誤り位置データは、何ワード目の何ビット目が誤りビットであるかを表す。デコーダ214が、誤り検出部213からの第1形式の誤り位置データをフラッシュ側バッファ9Bのアドレスデータに変換する。誤り訂正回路230が、そのアドレスデータが表すアドレスに従う記憶領域(フラッシュ側バッファ9Bにおける記憶領域)から読出しデータを読み出す。読み出された読出しデータが、誤り訂正部211に入力される。誤り訂正部211が、入力された読出しデータを、誤り検出部213に保持(記憶)されている第1形式の誤り位置データに基づいて訂正し、訂正された読出しデータを出力する。出力された読出しデータが、誤り訂正回路230によってフラッシュ側バッファ9Bに書き戻される。
フラッシュ側バッファ9Bに書き戻された読出しデータが、フラッシュ側バッファ9Bからホスト側バッファ9Aへと転送され格納される。ホスト側バッファ9Aに格納された訂正済み読出しデータがホストシステム4へと転送される。
以上のように、一比較例によれば、フラッシュ側バッファ9Bから誤りビットを含んだ読出しデータを読み出して訂正し訂正された読出しデータをフラッシュ側バッファ9Bに書き戻すことが必要である。
一方、本実施形態によれば、そのような書き戻しが不要な読出しデータ転送が実現される。
図3は、本発明の一実施形態に係る読出しデータ転送の模式図である。
ECCブロック11が、誤り検出部213、デコーダ314、及び、誤り訂正部311を含む。また、誤り位置記憶メモリ320が設けられる。誤り位置記憶メモリ320は、バッファ9A及び9Bを含んだRAM上の記憶領域でもよいし、独立したメモリであってもよい。ホスト側バッファ9Aが、第3の記憶手段の一例である。フラッシュ側バッファ9Bが、第1の記憶手段の一例である。誤り位置記憶メモリ320が、第2の記憶手段の一例である。デコーダ314が、位置データ変換手段の一例である。誤り訂正部311が、誤り訂正手段の一例である。
本実施形態では、一比較例に係る誤り検出部213をそのまま採用することができる。言い換えれば、既製の誤り検出部213を採用しても、上述の書き戻しが不要な読出しデータ転送を実現することができる。誤り検出部213が、誤り検出手段の一例である。
デコーダ314は、誤り検出部213から出力された第1形式の誤り位置データを第2形式の誤り位置データに変換する。第2形式の誤り位置データの一例として、読出しデータを構成する複数の読出しビットにそれぞれ対応した複数のビットで構成されたビットマップデータが採用される。ビットマップデータを構成する複数のビットの各々を、以下、「位置ビット」と言う。位置ビットは、その位置ビットに対応した読出しビットが誤りビットであるか否かを表す。例えば、位置ビット“0”は、その位置ビットに対応した読出しビットが正しいビットであることを意味し、位置ビット“1”は、その位置ビットに対応した読出しビットが誤りビットであることを意味する。このように、ビットマップデータは、読出しデータにおける誤りビットの位置を表す。
誤り位置記憶メモリ320には、デコーダ314から出力されたビットマップデータが格納される。誤り位置記憶メモリ320に入力されるビットマップデータのデータサイズと、フラッシュ側バッファ9Bに入力される読出しデータのデータサイズは同じでなくてよいが、後述するように、誤り訂正部311に入力される読出しデータ及びビットマップデータのデータサイズは同じである。このため、フラッシュ側バッファ9Bの容量と誤り位置記憶メモリ320の容量は同一であることが好ましい。また、本実施形態では、フラッシュ側バッファ9Bの容量は、ホスト側バッファ9Aの容量よりも大きい。
誤り訂正部311には、フラッシュ側バッファ9Bから出力された読出しデータと、誤り位置記憶メモリ320から出力されたビットマップデータとが入力される。誤り訂正部311に入力された読出しデータ及びビットマップデータのデータサイズは同じであり、誤り訂正部311に入力された読出しビットと位置ビットは、1:1で対応している。誤り訂正部311は、入力された読出しデータを構成する複数の読出しビットと、入力されたビットマップデータを構成する複数の位置ビットとをそれぞれ比較し、比較結果を、訂正済み読出しデータにおけるビットとして出力する。具体的には、誤り訂正部311は、入力された位置ビットが“0”であれば(すなわち、位置ビットが、正しい読出しビットを意味していれば)、その位置ビットに対応する読出しビットを反転すること無しに出力する。一方、誤り訂正部311は、入力された位置ビットが“1”であれば(すなわち、位置ビットが、誤りビットを意味していれば)、その位置ビットに対応する読出しビットを反転して出力する。本実施形態では、誤り訂正部311は、論理演算回路である。誤り訂正部311には、読出しビットとその読出しビットに対応した位置ビットとが同時に入力されることが好ましい。
本実施形態に係る読出しデータ転送は、以下の通りである。
フラッシュメモリ2からの読出しデータがフラッシュ側バッファ9Bに格納される。また、フラッシュメモリ2からの読出しデータとそれの誤り訂正符号が、誤り検出部213に入力される。
誤り検出部213は、入力された誤り訂正符号を用いて、入力された読出しデータに誤りビットがあればその誤りビットを検出する。誤り検出部213は、検出された誤りビットの位置を表す第1形式の誤り位置データを出力する。デコーダ314が、誤り検出部213からの第1形式の誤り位置データをビットマップデータ(第2形式の誤り位置データ)
に変換する。デコーダ314から出力されたビットマップデータが、誤り位置記憶メモリ320に格納される。
に変換する。デコーダ314から出力されたビットマップデータが、誤り位置記憶メモリ320に格納される。
誤り訂正部311に、フラッシュ側バッファ9Bから出力された読出しデータと、誤り位置記憶メモリ320から出力されたビットマップデータとが、同一のデータサイズ単位で入力される。誤り訂正部311は、位置ビット“1”が入力された場合にその位置ビットに対応する読出しビットを反転して出力する。
本実施形態によれば、誤りビットの位置を表すビットマップデータが格納される誤り位置記憶メモリ320が設けられ、誤り訂正部311に、フラッシュメモリ2からの読出しデータと、その読出しデータにおける誤りビットの位置を表すビットマップデータとが入力され、その読出しデータにおける読出しビットが、ビットマップデータにおける位置ビットに従い適宜訂正(反転)されながらホスト側バッファ9Aへ出力される。つまり、読出しデータに誤りビットがあっても、読出しデータに誤りビットが無い場合と同じ転送手順で、読出しデータがホスト側バッファ9Aへ転送される。このため、誤り訂正のための余計な時間を必要としない。また、誤りビット数が多くても、転送時間は変わらない。従って、フラッシュメモリ2からホストシステム4への読出しデータの転送性能は高い。
以上、本発明の一実施形態を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。例えば、デコーダ314及び既製の誤り検出部213に代えて、誤りビットの位置を表すビットマップデータを出力する誤り検出部が採用されてもよい。
1:フラッシュメモリシステム
Claims (6)
- ホストシステムから与えられる読出しコマンドに基づいて不揮発メモリからのデータの読出しを制御するメモリコントローラであって、
前記不揮発メモリから読み出されたデータである読出しデータが格納される第1の記憶手段と、
前記読出しデータの誤り訂正符号を基に前記読出しデータの誤り位置を検出する誤り検出手段と、
検出された誤り位置を表すデータである誤り位置データが格納される第2の記憶手段と、
前記ホストシステムに出力される読出しデータが格納される第3の記憶手段と、
前記第1の記憶手段から出力された前記読出しデータと前記第2の記憶手段から出力された誤り位置データとが入力され、その誤り位置データを用いて特定された誤り位置にある誤りを訂正した読出しデータを前記第3の記憶手段に出力する誤り訂正手段と
を備えるメモリコントローラ。 - 前記誤り訂正手段に入力される前記読出しデータは、複数のビットである複数の読出しビットで構成されており、
前記誤り訂正手段に入力される前記誤り位置データは、その誤り位置データと共に前記誤り訂正手段に入力される前記読出しデータを構成する前記複数の読出しビットにそれぞれ対応した複数の位置ビットで構成されているビットマップデータであり、
前記複数の位置ビットの各々は、その位置ビットに対応した読出しビットが誤りビットであるか否かを表すビットであり、
前記誤り訂正手段に入力される読出しデータ及びビットマップデータは、データサイズが同じであり、
前記誤り訂正手段は、前記複数の読出しビットのうち、誤りビットを意味する位置ビットに対応した読出しビットを反転する論理演算回路である、
請求項1記載のメモリコントローラ。 - 位置データ変換手段を更に備え、
前記誤り検出手段は、前記検出された誤り位置を表す第1形式の誤り位置データを出力する既製の誤り検出手段であり、
前記位置データ変換手段は、前記第1形式の誤り位置データを前記ビットマップデータである第2形式の誤り位置データに変換するデコーダである、
請求項2記載のメモリコントローラ。 - 前記不揮発メモリは、NAND型フラッシュメモリである、
請求項1乃至3のうちのいずれか1項に記載のメモリコントローラ。 - 請求項1乃至4のうちのいずれか1項に記載のメモリコントローラと、
前記メモリコントローラに接続された1以上の不揮発メモリである不揮発メモリ群と
を有するメモリシステム。 - ホストシステムから与えられる読出しコマンドに基づいて不揮発メモリからのデータの読出しを制御するメモリ制御方法であって、
前記不揮発メモリから読み出されたデータである読出しデータを第1の記憶手段に格納し、
誤り検出手段により、前記読出しデータの誤り訂正符号を基に前記読出しデータの誤り位置を検出し、
検出された誤り位置を表すデータである誤り位置データを第2の記憶手段に格納し、
前記第1の記憶手段から出力された前記読出しデータと前記第2の記憶手段から出力された誤り位置データとを誤り訂正手段に入力し、その誤り位置データを用いて特定された誤り位置にある誤りを前記誤り訂正手段により訂正した読出しデータを、前記誤り訂正手段から、前記ホストシステムに出力される読出しデータが格納される第3の記憶手段に出力する、
メモリ制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016190678A JP2018055400A (ja) | 2016-09-29 | 2016-09-29 | メモリコントローラ、メモリシステム及びメモリ制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016190678A JP2018055400A (ja) | 2016-09-29 | 2016-09-29 | メモリコントローラ、メモリシステム及びメモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018055400A true JP2018055400A (ja) | 2018-04-05 |
Family
ID=61834117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016190678A Pending JP2018055400A (ja) | 2016-09-29 | 2016-09-29 | メモリコントローラ、メモリシステム及びメモリ制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018055400A (ja) |
-
2016
- 2016-09-29 JP JP2016190678A patent/JP2018055400A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10361722B2 (en) | Semiconductor memory device performing randomization operation | |
US8949690B2 (en) | Memory controller | |
US7899980B2 (en) | Flash memory system and data writing method thereof | |
US9424126B2 (en) | Memory controller | |
JP6164712B1 (ja) | フラッシュメモリ | |
JP2008226245A (ja) | フラッシュメモリに基づくメモリシステム | |
US20160070507A1 (en) | Memory system and method of controlling memory device | |
US20080082872A1 (en) | Memory controller, memory system, and data transfer method | |
JP2012137994A (ja) | メモリシステムおよびその制御方法 | |
US10782920B2 (en) | Data access method, memory storage apparatus and memory control circuit unit | |
US20110060965A1 (en) | Semiconductor memory device and data processing method thereof | |
JP2009301194A (ja) | 半導体記憶装置の制御システム | |
US11467758B2 (en) | Data writing method using different programming modes based on the number of available physical erasing units, memory control circuit unit and memory storage device | |
US8738989B2 (en) | Method and apparatus for detecting free page and a method and apparatus for decoding error correction code using the method and apparatus for detecting free page | |
JP2010079856A (ja) | 記憶装置およびメモリ制御方法 | |
JP2009282923A (ja) | 半導体記憶装置及び不揮発性メモリ | |
JP4956230B2 (ja) | メモリコントローラ | |
JP2006221334A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US10546640B2 (en) | Data protecting method and memory storage device | |
JP4655034B2 (ja) | メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法 | |
JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4692843B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2018055400A (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 | |
US9208863B1 (en) | Memory system and method of controlling memory system | |
US9104596B2 (en) | Memory system |