(57)【要約】【課題】不揮発メモリからホストシステムへの読出しデータの転送性能を向上する。【解決手段】ホストシステムから与えられる読出しコマンドに基づいて不揮発メモリからのデータの読出しを制御するメモリコントローラが、不揮発メモリから読み出されたデータである読出しデータが格納される第１の記憶手段と、読出しデータの誤り訂正符号を基にその読出しデータの誤り位置を検出する誤り検出手段と、検出された誤り位置を表すデータである誤り位置データが格納される第２の記憶手段と、ホストシステムに出力される読出しデータが格納される第３の記憶手段と、第１の記憶手段から出力された読出しデータと第２の記憶手段から出力された誤り位置データとが入力され、その誤り位置データを用いて特定された誤り位置にある誤りを訂正した読出しデータを第３の記憶手段に出力する誤り訂正手段とを備える。【選択図】図３
2018055400.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられる読出しコマンドに基づいて不揮発メモリからのデータの読出しを制御するメモリコントローラであって、
前記不揮発メモリから読み出されたデータである読出しデータが格納される第１の記憶手段と、
前記読出しデータの誤り訂正符号を基に前記読出しデータの誤り位置を検出する誤り検出手段と、
検出された誤り位置を表すデータである誤り位置データが格納される第２の記憶手段と、
前記ホストシステムに出力される読出しデータが格納される第３の記憶手段と、
前記第１の記憶手段から出力された前記読出しデータと前記第２の記憶手段から出力された誤り位置データとが入力され、その誤り位置データを用いて特定された誤り位置にある誤りを訂正した読出しデータを前記第３の記憶手段に出力する誤り訂正手段と
を備えるメモリコントローラ。
【請求項２】
前記誤り訂正手段に入力される前記読出しデータは、複数のビットである複数の読出しビットで構成されており、
前記誤り訂正手段に入力される前記誤り位置データは、その誤り位置データと共に前記誤り訂正手段に入力される前記読出しデータを構成する前記複数の読出しビットにそれぞれ対応した複数の位置ビットで構成されているビットマップデータであり、
前記複数の位置ビットの各々は、その位置ビットに対応した読出しビットが誤りビットであるか否かを表すビットであり、
前記誤り訂正手段に入力される読出しデータ及びビットマップデータは、データサイズが同じであり、
前記誤り訂正手段は、前記複数の読出しビットのうち、誤りビットを意味する位置ビットに対応した読出しビットを反転する論理演算回路である、
請求項１記載のメモリコントローラ。
【請求項３】
位置データ変換手段を更に備え、
前記誤り検出手段は、前記検出された誤り位置を表す第１形式の誤り位置データを出力する既製の誤り検出手段であり、
前記位置データ変換手段は、前記第１形式の誤り位置データを前記ビットマップデータである第２形式の誤り位置データに変換するデコーダである、
請求項２記載のメモリコントローラ。
【請求項４】
前記不揮発メモリは、ＮＡＮＤ型フラッシュメモリである、
請求項１乃至３のうちのいずれか１項に記載のメモリコントローラ。
【請求項５】
請求項１乃至４のうちのいずれか１項に記載のメモリコントローラと、
前記メモリコントローラに接続された１以上の不揮発メモリである不揮発メモリ群と
を有するメモリシステム。
【請求項６】
ホストシステムから与えられる読出しコマンドに基づいて不揮発メモリからのデータの読出しを制御するメモリ制御方法であって、
前記不揮発メモリから読み出されたデータである読出しデータを第１の記憶手段に格納し、
誤り検出手段により、前記読出しデータの誤り訂正符号を基に前記読出しデータの誤り位置を検出し、
検出された誤り位置を表すデータである誤り位置データを第２の記憶手段に格納し、
前記第１の記憶手段から出力された前記読出しデータと前記第２の記憶手段から出力された誤り位置データとを誤り訂正手段に入力し、その誤り位置データを用いて特定された誤り位置にある誤りを前記誤り訂正手段により訂正した読出しデータを、前記誤り訂正手段から、前記ホストシステムに出力される読出しデータが格納される第３の記憶手段に出力する、
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、不揮発メモリから読み出されたデータの誤り訂正に関する。
【背景技術】
【０００２】
不揮発メモリとして、一般に、ＮＡＮＤ型フラッシュメモリ（以下、フラッシュメモリ）が知られている。フラッシュメモリは、複数の物理ブロックにより構成され、各物理ブロックは、複数の物理ページにより構成される。フラッシュメモリでは、ページ（物理ページ）単位でデータが入出力され、ブロック（物理ブロック）単位でデータが消去される。
【０００３】
フラッシュメモリから読み出されたデータ（以下、読出しデータ）に誤りがあることがある。読出しデータの誤りは、そのデータに関連付けられている誤り訂正符号（ＥＣＣ（Error  Correcting  Code））に基づいて検出および訂正される（例えば特許文献１〜３）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２２１３３４号公報
【特許文献２】特開２００８−１０２６９３号公報
【特許文献３】特開２００８−１６５５１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般に、読出しデータは、バッファと誤り訂正回路の両方に送られる。誤り訂正回路によって読出しデータの誤りが検出された場合、バッファから読出しデータを読み出し訂正された読出しデータをバッファへ書き戻すことが行われる。このような読み出し及び書き戻しは、誤りが検出された全ての読出しデータについて行われ、且つ、読出しデータにおける誤り数（訂正ビット数）が多い程時間がかかる。近年、フラッシュメモリの微細化が進む傾向や、セル当たりの情報量が増える傾向（例えばＭＬＣ（Multiple Level Cell）やＴＬＣ（Triple Level Cell））にあり、結果として、読出しデータが誤りのある読出しデータである確率が高く、読出しデータにおける誤りの数が多い傾向にある。このため、上述の書き戻しの頻度は増え、書き戻しに要する時間も長くなる傾向となる。上述の書き戻しの増加や長時間化は、フラッシュメモリからホストシステムへの読出しデータの転送性能を低下させることとなる。
【０００６】
この種の問題は、フラッシュメモリ以外の不揮発メモリについても有り得る。
【０００７】
従って、本発明の目的は、不揮発メモリからホストシステムへの読出しデータの転送性能を向上することにある。
【課題を解決するための手段】
【０００８】
ホストシステムから与えられる読出しコマンドに基づいて不揮発メモリからのデータの読出しを制御するメモリコントローラが、不揮発メモリから読み出されたデータである読出しデータが格納される第１の記憶手段と、読出しデータの誤り訂正符号を基にその読出しデータの誤り位置を検出する誤り検出手段と、検出された誤り位置を表すデータである誤り位置データが格納される第２の記憶手段と、ホストシステムに出力される読出しデータが格納される第３の記憶手段と、第１の記憶手段から出力された読出しデータと第２の記憶手段から出力された誤り位置データとが入力され、その誤り位置データを用いて特定された誤り位置にある誤りを訂正した読出しデータを第３の記憶手段に出力する誤り訂正手段とを備える。
【発明の効果】
【０００９】
不揮発メモリから第１の記憶手段を経由した読出しデータが誤り訂正手段に入力及び訂正されて第３の記憶手段に出力される。誤り検出手段によって読出しデータの誤りが検出されても、上述の書き戻し（第１の記憶手段への書き戻し）は不要である。このため、不揮発メモリからホストシステムへの読出しデータの転送性能が向上する。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るフラッシュメモリシステムの構成を示す。
【図２】本発明の一比較例に係る読出しデータ転送の模式図である。
【図３】本発明の一実施形態に係る読出しデータ転送の模式図である。
【発明を実施するための形態】
【００１１】
以下、不揮発メモリとしてＮＡＮＤ型フラッシュメモリ（以下、フラッシュメモリ）を例に取り、本発明の一実施形態を説明する。
【００１２】
図１は、本発明の一実施形態に係るフラッシュメモリシステムの構成を示す。
【００１３】
フラッシュメモリシステム１は、不揮発メモリの一例であるフラッシュメモリ２と、それを制御するフラッシュメモリコントローラ３とで構成されている。
【００１４】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central  Processing  Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１５】
フラッシュメモリコントローラ３は、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインタフェースブロック１０と、ＥＣＣ（Error  Correcting  Code）ブロック１１と、ＲＯＭ（Read  Only  Memory）１２とから構成される。フラッシュメモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。これら機能ブロックによって構成されるフラッシュメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００１６】
ホストインタフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインタフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインタフェースブロック７を出口としてホストシステム４に供給される。
【００１７】
ホストインタフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えている。コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書込みコマンド、読出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタＲ２には、アクセス対象領域のセクタ数が書き込まれる。ＬＢＡレジスタＲ３には、アクセス対象領域の先頭のＬＢＡ（Logical  Block  Address）が書き込まれる。
【００１８】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータを一時的に格納する作業領域であり、例えば複数のＳＲＡＭ（Static  Random  Access  Memory）セルによって構成されている。ワークエリア８には、例えば、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブル等が記憶される。アドレス変換テーブルを用いて、論理アドレスを物理アドレスに変換することができる（アクセス先の論理ブロックにマッピングされている物理ブロックを特定することができる）。
【００１９】
バッファ９は、例えばＲＡＭ（Random  Access  Memory）上に設けられた記憶領域である。バッファ９は、フラッシュメモリ２からの読出しデータをホストシステム４が受け取り可能な状態となるまで保持するバッファであるホスト側バッファと、フラッシュメモリ２への書込みデータをフラッシュメモリ２が書込み可能な状態となるまで保持するフラッシュ側バッファとを含む。
【００２０】
フラッシュメモリインタフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、フラッシュメモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、フラッシュメモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２１】
ＥＣＣブロック１１は、フラッシュメモリ２への書込みデータに付加される誤り訂正符号（ＥＣＣ：Error  Correcting  Code）を生成するとともに、読出しデータに付加されている誤り訂正符号に基づいてその読出しデータに含まれる誤りを検出及び訂正する。ＥＣＣブロック１１の詳細については後述する。
【００２２】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
【００２３】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、フラッシュメモリコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、ＲＯＭ１２から読出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインタフェースブロック１０に処理を実行させる。
【００２４】
以下、本発明の一比較例に係る読出しデータ転送と、本発明の一実施形態に係る読出しデータ転送とを説明する。以下の説明では、「読出しデータ」は、フラッシュメモリ２から読み出されたデータである。読出しデータは、複数のビットで構成されている。以下、読出しデータを構成する複数のビットの各々を、「読出しビット」と呼ぶ。読出しビットのうち、誤りのある読出しビットを、「誤りビット」と呼ぶ。
【００２５】
図２は、本発明の一比較例に係る読出しデータ転送の模式図である。
【００２６】
一比較例によれば、ＥＣＣブロックが、誤り訂正回路２３０を含む。誤り訂正回路２３０は、誤り検出部２１３、誤り訂正部２１１及びデコーダ２１４を含む。誤り検出部２１３、誤り訂正部２１１及びデコーダ２１４の各々は、ハードウェア回路である。
【００２７】
誤り検出部２１３は、読出しデータ及びそれの誤り訂正符号の入力を受け、その誤り訂正符号を用いて、その読出しデータのうちの誤りビットを検出する。誤り検出部２１３は、検出された誤りビットの位置を表す第１形式の誤り位置データを保持（記憶）する。
【００２８】
デコーダ２１４は、誤り検出部２１３から出力され入力された第１形式の誤り位置データをフラッシュ側バッファ９Ｂのアドレスデータに変換する。
【００２９】
誤り訂正部２１１は、読出しデータを、誤り検出部２１３に保持（記憶）されている第１形式の誤り位置データに基づいて訂正する。
【００３０】
一比較例に係る読出しデータ転送は、以下の通りである。
【００３１】
フラッシュメモリ２からの読出しデータがフラッシュ側バッファ９Ｂに格納される。また、フラッシュメモリ２からの読出しデータとそれの誤り訂正符号が、誤り訂正ユニット２３０内の誤り検出部２１３に入力される。
【００３２】
誤り検出部２１３は、入力された誤り訂正符号を用いて、入力された読出しデータに誤りビットがあればその誤りビットを検出する。誤り検出部２１３は、検出された誤りビットの位置を表す第１形式の誤り位置データを保持（記憶）する。第１形式の誤り位置データは、何ワード目の何ビット目が誤りビットであるかを表す。デコーダ２１４が、誤り検出部２１３からの第１形式の誤り位置データをフラッシュ側バッファ９Ｂのアドレスデータに変換する。誤り訂正回路２３０が、そのアドレスデータが表すアドレスに従う記憶領域（フラッシュ側バッファ９Ｂにおける記憶領域）から読出しデータを読み出す。読み出された読出しデータが、誤り訂正部２１１に入力される。誤り訂正部２１１が、入力された読出しデータを、誤り検出部２１３に保持（記憶）されている第１形式の誤り位置データに基づいて訂正し、訂正された読出しデータを出力する。出力された読出しデータが、誤り訂正回路２３０によってフラッシュ側バッファ９Ｂに書き戻される。
【００３３】
フラッシュ側バッファ９Ｂに書き戻された読出しデータが、フラッシュ側バッファ９Ｂからホスト側バッファ９Ａへと転送され格納される。ホスト側バッファ９Ａに格納された訂正済み読出しデータがホストシステム４へと転送される。
【００３４】
以上のように、一比較例によれば、フラッシュ側バッファ９Ｂから誤りビットを含んだ読出しデータを読み出して訂正し訂正された読出しデータをフラッシュ側バッファ９Ｂに書き戻すことが必要である。
【００３５】
一方、本実施形態によれば、そのような書き戻しが不要な読出しデータ転送が実現される。
【００３６】
図３は、本発明の一実施形態に係る読出しデータ転送の模式図である。
【００３７】
ＥＣＣブロック１１が、誤り検出部２１３、デコーダ３１４、及び、誤り訂正部３１１を含む。また、誤り位置記憶メモリ３２０が設けられる。誤り位置記憶メモリ３２０は、バッファ９Ａ及び９Ｂを含んだＲＡＭ上の記憶領域でもよいし、独立したメモリであってもよい。ホスト側バッファ９Ａが、第３の記憶手段の一例である。フラッシュ側バッファ９Ｂが、第１の記憶手段の一例である。誤り位置記憶メモリ３２０が、第２の記憶手段の一例である。デコーダ３１４が、位置データ変換手段の一例である。誤り訂正部３１１が、誤り訂正手段の一例である。
【００３８】
本実施形態では、一比較例に係る誤り検出部２１３をそのまま採用することができる。言い換えれば、既製の誤り検出部２１３を採用しても、上述の書き戻しが不要な読出しデータ転送を実現することができる。誤り検出部２１３が、誤り検出手段の一例である。
【００３９】
デコーダ３１４は、誤り検出部２１３から出力された第１形式の誤り位置データを第２形式の誤り位置データに変換する。第２形式の誤り位置データの一例として、読出しデータを構成する複数の読出しビットにそれぞれ対応した複数のビットで構成されたビットマップデータが採用される。ビットマップデータを構成する複数のビットの各々を、以下、「位置ビット」と言う。位置ビットは、その位置ビットに対応した読出しビットが誤りビットであるか否かを表す。例えば、位置ビット“０”は、その位置ビットに対応した読出しビットが正しいビットであることを意味し、位置ビット“１”は、その位置ビットに対応した読出しビットが誤りビットであることを意味する。このように、ビットマップデータは、読出しデータにおける誤りビットの位置を表す。
【００４０】
誤り位置記憶メモリ３２０には、デコーダ３１４から出力されたビットマップデータが格納される。誤り位置記憶メモリ３２０に入力されるビットマップデータのデータサイズと、フラッシュ側バッファ９Ｂに入力される読出しデータのデータサイズは同じでなくてよいが、後述するように、誤り訂正部３１１に入力される読出しデータ及びビットマップデータのデータサイズは同じである。このため、フラッシュ側バッファ９Ｂの容量と誤り位置記憶メモリ３２０の容量は同一であることが好ましい。また、本実施形態では、フラッシュ側バッファ９Ｂの容量は、ホスト側バッファ９Ａの容量よりも大きい。
【００４１】
誤り訂正部３１１には、フラッシュ側バッファ９Ｂから出力された読出しデータと、誤り位置記憶メモリ３２０から出力されたビットマップデータとが入力される。誤り訂正部３１１に入力された読出しデータ及びビットマップデータのデータサイズは同じであり、誤り訂正部３１１に入力された読出しビットと位置ビットは、１：１で対応している。誤り訂正部３１１は、入力された読出しデータを構成する複数の読出しビットと、入力されたビットマップデータを構成する複数の位置ビットとをそれぞれ比較し、比較結果を、訂正済み読出しデータにおけるビットとして出力する。具体的には、誤り訂正部３１１は、入力された位置ビットが“０”であれば（すなわち、位置ビットが、正しい読出しビットを意味していれば）、その位置ビットに対応する読出しビットを反転すること無しに出力する。一方、誤り訂正部３１１は、入力された位置ビットが“１”であれば（すなわち、位置ビットが、誤りビットを意味していれば）、その位置ビットに対応する読出しビットを反転して出力する。本実施形態では、誤り訂正部３１１は、論理演算回路である。誤り訂正部３１１には、読出しビットとその読出しビットに対応した位置ビットとが同時に入力されることが好ましい。
【００４２】
本実施形態に係る読出しデータ転送は、以下の通りである。
【００４３】
フラッシュメモリ２からの読出しデータがフラッシュ側バッファ９Ｂに格納される。また、フラッシュメモリ２からの読出しデータとそれの誤り訂正符号が、誤り検出部２１３に入力される。
【００４４】
誤り検出部２１３は、入力された誤り訂正符号を用いて、入力された読出しデータに誤りビットがあればその誤りビットを検出する。誤り検出部２１３は、検出された誤りビットの位置を表す第１形式の誤り位置データを出力する。デコーダ３１４が、誤り検出部２１３からの第１形式の誤り位置データをビットマップデータ（第２形式の誤り位置データ）
に変換する。デコーダ３１４から出力されたビットマップデータが、誤り位置記憶メモリ３２０に格納される。
【００４５】
誤り訂正部３１１に、フラッシュ側バッファ９Ｂから出力された読出しデータと、誤り位置記憶メモリ３２０から出力されたビットマップデータとが、同一のデータサイズ単位で入力される。誤り訂正部３１１は、位置ビット“１”が入力された場合にその位置ビットに対応する読出しビットを反転して出力する。
【００４６】
本実施形態によれば、誤りビットの位置を表すビットマップデータが格納される誤り位置記憶メモリ３２０が設けられ、誤り訂正部３１１に、フラッシュメモリ２からの読出しデータと、その読出しデータにおける誤りビットの位置を表すビットマップデータとが入力され、その読出しデータにおける読出しビットが、ビットマップデータにおける位置ビットに従い適宜訂正（反転）されながらホスト側バッファ９Ａへ出力される。つまり、読出しデータに誤りビットがあっても、読出しデータに誤りビットが無い場合と同じ転送手順で、読出しデータがホスト側バッファ９Ａへ転送される。このため、誤り訂正のための余計な時間を必要としない。また、誤りビット数が多くても、転送時間は変わらない。従って、フラッシュメモリ２からホストシステム４への読出しデータの転送性能は高い。
【００４７】
以上、本発明の一実施形態を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。例えば、デコーダ３１４及び既製の誤り検出部２１３に代えて、誤りビットの位置を表すビットマップデータを出力する誤り検出部が採用されてもよい。
【符号の説明】
【００４８】
１：フラッシュメモリシステム
【図１】
2018055400.tif 000003
【図２】
2018055400.tif 000004
【図３】
2018055400.tif 000005