(57)【要約】      （修正有）【課題】不揮発性メモリからの読み出し動作においてレイテンシを短縮する。【解決手段】メモリシステム１０は、データを格納する不揮発性メモリ１１と、不揮発性メモリ１１からのデータを一時的に格納するバッファ１５と、バッファ１５からのデータの誤りを訂正する訂正回路１７と、訂正回路１７からのデータを一時的に格納するバッファ１８と、バッファ１８からのデータを受けるバス２０と、不揮発性メモリ１１及びバス２０間のデータ転送のための複数のコマンドを発行するコマンドシーケンサ群と、複数のコマンドをデコードし、データ転送を制御するための複数の制御信号を生成するコマンドデコーダ群と、誤り訂正不能による読み出しエラーが発生した場合に、ＣＰＵ２２に割り込みを発生する割込回路２１とを含む。コマンドシーケンサ群は、割り込みが発生した場合でも、不揮発性メモリ１１からのデータ転送を継続する。【選択図】図２
2011242884.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する不揮発性メモリと、
前記不揮発性メモリから転送されたデータを一時的に格納する第１のバッファと、
前記第１のバッファから転送されたデータの誤りを訂正する訂正回路と、
前記訂正回路から転送されたデータを一時的に格納する第２のバッファと、
前記第２のバッファから転送されたデータを受けるバスと、
前記不揮発性メモリ及び前記バス間のデータ転送のための複数のコマンドを発行するコマンドシーケンサ群と、
前記複数のコマンドをデコードし、データ転送を制御するための複数の制御信号を生成するコマンドデコーダ群と、
前記バスに接続されたＣＰＵと、
誤り訂正不能による読み出しエラーが発生した場合に、前記ＣＰＵに割り込みを発生する割込回路と、
を具備し、
前記コマンドシーケンサ群は、前記読み出しエラーに関する割り込みが発生した場合でも、前記不揮発性メモリからのデータ転送を継続することを特徴とするメモリシステム。
【請求項２】
前記コマンドシーケンサ群は、前記不揮発性メモリから前記第１のバッファへのデータ転送を制御する第１のコマンドシーケンサと、前記第１のバッファから前記訂正回路へのデータ転送を制御する第２のコマンドシーケンサと、前記訂正回路から前記第２のバッファへのデータ転送を制御する第３のコマンドシーケンサと、前記第２のバッファから前記バスへのデータ転送を制御する第４のコマンドシーケンサとを含むことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記割り込みが発生した場合に、前記第１のコマンドシーケンサ、前記第３のコマンドシーケンサ及び前記第４のコマンドシーケンサの動作を継続し、かつ前記第２のコマンドシーケンサシーケンサの動作を停止する制御回路をさらに具備することを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記制御回路は、前記割り込みが発生した場合に、前記不揮発性メモリからのデータ転送を継続する第１のモードと、前記不揮発性メモリからのデータ転送を停止する第２のモードとを有し、前記第１のモードと前記第２のモードとを切り替えるレジスタを含むことを特徴とする請求項３に記載のメモリシステム。
【請求項５】
メモリシステムのデータ転送方法であって、
前記メモリシステムは、
データを格納する不揮発性メモリと、
前記不揮発性メモリから転送されたデータを一時的に格納する第１のバッファと、
前記第１のバッファから転送されたデータの誤りを訂正する訂正回路と、
前記訂正回路から転送されたデータを一時的に格納する第２のバッファと、
前記第２のバッファから転送されたデータを受けるバスと、
を具備し、
前記データ転送方法は、
前記不揮発性メモリ及び前記バス間のデータ転送のための複数のコマンドを発行する工程と、
前記複数のコマンドをデコードし、データ転送を制御するための複数の制御信号を生成する工程と、
誤り訂正不能による読み出しエラーが発生した場合に、ＣＰＵに割り込みを発生する工程と、
前記読み出しエラーに関する割り込みが発生した場合でも、前記不揮発性メモリからのデータ転送を継続する工程と、
を具備することを特徴とするメモリシステム。
【請求項６】
前記複数のコマンドは、前記不揮発性メモリから前記第１のバッファへのデータ転送を制御する第１のコマンドと、前記第１のバッファから前記訂正回路へのデータ転送を制御する第２のコマンドと、前記訂正回路から前記第２のバッファへのデータ転送を制御する第３のコマンドと、前記第２のバッファから前記バスへのデータ転送を制御する第４のコマンドとを含むことを特徴とする請求項５に記載のメモリシステム。
【請求項７】
前記データ転送を継続する工程は、前記割り込みが発生した場合に、前記第１のコマンド、前記第３のコマンド及び前記第４のコマンドの発行を継続し、かつ前記第２のコマンドの発行を停止する工程を含むことを特徴とする請求項６に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム及びそのデータ転送方法に関する。
【背景技術】
【０００２】
不揮発性半導体メモリとしては、データの書き込み及び消去を電気的に行うＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）の一種であるＮＡＮＤ型フラッシュメモリが知られている。
【０００３】
このＮＡＮＤ型フラッシュメモリを備えたメモリシステムは、１つ（又は複数）のシステムバスに複数のモジュールが接続され、そのモジュール間のデータ転送の切り替えをＣＰＵ（Central Processing Unit）によるファームウェア処理が介在しながら行う。そのため、１つのモジュール間のデータ転送が完了する毎に、転送動作の完了を通知する割込みが発生し、ファームウェア処理による次の動作設定を行った後で次の転送動作を行うことができる。
【０００４】
従って、ＮＡＮＤ型フラッシュメモリから読み出したデータの誤りを訂正する誤り訂正回路や、複数のメモリバッファなどが存在すると、モジュール間のデータ転送を切り替える処理が増える。このため、非常に多くの割込みがモジュール間の転送が完了する毎に発生し、言い換えればファームウェア処理が介在している時間が非常に長くなる。これにより、データ転送のレイテンシが非常に悪くなってしまう。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１４１８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
不揮発性メモリからの読み出し動作においてレイテンシを短縮する。
【課題を解決するための手段】
【０００７】
実施形態に係るメモリシステムは、データを格納する不揮発性メモリと、前記不揮発性メモリから転送されたデータを一時的に格納する第１のバッファと、前記第１のバッファから転送されたデータの誤りを訂正する訂正回路と、前記訂正回路から転送されたデータを一時的に格納する第２のバッファと、前記第２のバッファから転送されたデータを受けるバスと、前記不揮発性メモリ及び前記バス間のデータ転送のための複数のコマンドを発行するコマンドシーケンサ群と、前記複数のコマンドをデコードし、データ転送を制御するための複数の制御信号を生成するコマンドデコーダ群と、前記バスに接続されたＣＰＵと、誤り訂正不能による読み出しエラーが発生した場合に、前記ＣＰＵに割り込みを発生する割込回路とを具備し、前記コマンドシーケンサ群は、前記読み出しエラーに関する割り込みが発生した場合でも、前記不揮発性メモリからのデータ転送を継続する。
【図面の簡単な説明】
【０００８】
【図１】比較例に係るメモリシステムの読み出し動作を示すフローチャート。
【図２】実施形態に係るメモリシステム１０の構成を示すブロック図。
【図３】データ転送制御部１３の構成を示すブロック図。
【図４】コマンドシーケンサＳＥＱが割り当てられるデータ転送を説明する図。
【図５】シーケンサ制御回路３０の一部の構成を示す回路図。
【図６】データ構造を説明する概略図。
【図７】コントローラ１２の動作を示すフローチャート。
【図８】コマンドシーケンサＳＥＱ１〜ＳＥＱ４の動作を示すタイミングチャート。
【発明を実施するための形態】
【０００９】
（比較例）
図１は、比較例に係るメモリシステムの読み出し動作を示すフローチャートである。メモリシステムは、ＮＡＮＤ型フラッシュメモリ及びコントローラを備えている。コントローラは、ＣＰＵ及びデータ転送制御部を備えている。
【００１０】
ＮＡＮＤ型フラッシュメモリからデータを読み出す際に、まずファームウェア処理によって複数ページを読み出すための読み出し設定が行われ（ステップＳ１０１）、ＣＰＵは、データ転送制御部に対してデータ転送を開始するように指示する（ステップＳ１０２）。データ転送が開始されると、ハードウェア処理により、ＮＡＮＤ型フラッシュメモリから読み出したデータをＥＣＣデコーダに渡して誤り訂正を行い、正常な値が返されると、システム内部に転送される（ステップＳ１０３）。
【００１１】
この時、読み出しエラーが発生した場合は、割込みを発生してデータ転送を停止する（ステップＳ１０４）。ファームウェア処理による割込み応答処理が行われ（ステップＳ１０６）、ＣＰＵは、発生した割込み要因のチェックを行う。そして、その要因が読み出しエラー割込みと確認されると、ＣＰＵは、該当するやり直しページ位置、フレーム位置、転送ページ数（１ページ分のみ）などリトライ動作に必要な読み出し設定を行い（ステップＳ１０７）、再びデータ転送を開始する（ステップＳ１０８、Ｓ１０９）。このファームウェア処理による設定が行われている間は、内部のシーケンサなどは停止状態（リセット状態）となっている。
【００１２】
このリトライ動作では、１ページ分のデータ転送しかできない。読み出しエラーが発生せずに無事１ページ分のデータ転送が完了すると（ステップＳ１１１）、転送完了割込みが発生し、再びファームウェア処理に切り替わる。ファームウェア処理による割込み応答処理が行われ（ステップＳ１１２）、ＣＰＵは、発生した割込み要因のチェックを行う。そして、ＣＰＵは、１ページ分のデータ転送が完了したことを確認すると、残りのページ分の転送に必要な読み出し設定を行う（ステップＳ１１３）。その後、データ転送を開始し（ステップＳ１１１４）、データ転送処理が引き続き行われる（ステップＳ１１５）。以降、読み出しエラーが発生した際は同様の手順で転送動作を繰り返していくことになる。
【００１３】
この比較例によれば、読み出しエラーによる割込みが発生すると、１ページ分のデータ転送のやり直し動作と、残りページ分のデータ転送動作とを行いながら、最初に設定された複数ページの転送を行うようになっている。このため、ファームウェア処理の介在の多さや、データ転送のページ分割処理などが必要となり、読み出しエラーが発生することによって、データ転送のレイテンシが長くなっている。
【００１４】
（実施形態）
以下、実施形態について図面を参照して説明する。以下に示す幾つかの実施形態は、本発明の技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置などによって、本発明の技術思想が特定されるものではない。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１５】
図２は、実施形態に係るメモリシステム１０の構成を示すブロック図である。メモリシステム１０は、不揮発性半導体メモリであるＮＡＮＤ型フラッシュメモリ１１と、このＮＡＮＤ型フラッシュメモリ１１を制御するコントローラ１２とを備えている。
【００１６】
ＮＡＮＤ型フラッシュメモリ１１は、データ消去の単位である複数のブロックを備えている。各ブロックは、複数のフラッシュメモリセルがマトリクス状に配列されて構成されており、また、複数ビットからなる複数のページを備えている。ＮＡＮＤ型フラッシュメモリ１１は、このページ単位で、データの読み出し及び書き込みが行われる。さらに、ＮＡＮＤ型フラッシュメモリ１１は、メモリセルアレイの列を選択するカラムデコーダ、メモリセルアレイの行を選択するロウデコーダ、メモリセルからデータを読み出すためのセンスアンプ回路、読み出し及び書き込みデータを保持するデータキャッシュなどを含む。
【００１７】
コントローラ１２は、データ転送制御部１３、フラッシュインタフェース１４、第１のメモリバッファ１５、ＥＣＣ（Error Checking and Correcting）エンコーダ１６、ＥＣＣデコーダ１７、第２のメモリバッファ１８、バスブリッジ１９、システムバス２０、割込回路２１、中央演算処理装置（ＣＰＵ）２２、及び制御バス２３を備えている。
【００１８】
ＣＰＵ２２は、システムバス２０及び制御バス２３に接続されている。ＣＰＵ２２は、同じくシステムバス２０に接続されたＲＯＭ（図示せず）に格納されたファームウェア（ＦＷ）を用いて、メモリシステム１０全体の動作を統括的に制御する。ＣＰＵ２２は、制御バス２３を経由してデータ転送制御部１３に制御信号を送り、また、システムバス２０を経由して各種モジュールとの間でデータの受け渡しを行う。モジュールとは、所望の動作及び機能を実現する機能単位であり、本実施形態では、図２に示した各機能ブロックを指している。なお、図示は省略するが、システムバス２０には、メモリシステム１０の動作に必要なＲＡＭ（Random Access Memory）やホストインタフェースなども接続されている。
【００１９】
フラッシュインタフェース１４は、ＮＡＮＤ型フラッシュメモリ１１との間のインタフェース処理を実行し、具体的には、ＮＡＮＤ型フラッシュメモリ１１に対して、データの消去、書き込み、及び読み出し処理を実行する。このために、フラッシュインタフェース１４は、ＮＡＮＤ型フラッシュメモリ１１に対してコマンド及びアドレスを供給し、ＮＡＮＤ型フラッシュメモリ１１との間で書き込みデータ及び読み出しデータの受け渡しを行う。
【００２０】
ＥＣＣエンコーダ１６は、書き込みデータを受け、この書き込みデータに対して誤り訂正符号（パリティビット）を生成する。また、ＥＣＣエンコーダ１６は、所定のデータサイズを計算単位としてパリティビットを生成する。このパリティビットは、書き込みデータに付加され、書き込みデータと共にＮＡＮＤ型フラッシュメモリ１１に書き込まれる。本実施形態では、ＥＣＣ計算単位としてのデータ列とパリティビットとを合わせてフレームを呼ぶ。
【００２１】
ＥＣＣデコーダ１７は、読み出しデータを受け、この読み出しデータに付加されたパリティビットを用いて、読み出しデータの誤りを訂正する。ＥＣＣデコーダ１７は、パリティビットを用いた誤り訂正処理において、２種類の訂正方式を用いることができる。２種類の訂正方式による誤り訂正を実現するために、ＥＣＣデコーダ１７は、２種類の訂正方式に対応した２種類のＥＣＣパラメータテーブルＴＢ１及びＴＢ２を備えている。２種類の訂正方式の切り替えは、ＥＣＣデコーダ１７が有する２種類のＥＣＣパラメータテーブルＴＢ１及びＴＢ２を切り替えることで実現できる。２種類の訂正方式の差異は、パリティの計算方式（尤度比など）が異なるようにしてもよいし、誤り訂正能力が異なるようにしてもよい。このような構成を有するＥＣＣデコーダ１７は、ＮＡＮＤ型フラッシュメモリ１１の特性に応じて訂正方式を使い分けることで、誤り訂正できる確率を向上させることが可能である。
【００２２】
第１のメモリバッファ１５は、ＮＡＮＤ型フラッシュメモリ１１からの読み出しデータ、或いはＮＡＮＤ型フラッシュメモリ１１に書き込む直前の、ＥＣＣエンコーダ１６によってパリティビットが付加された書き込みデータを一時的に格納する。第２のメモリバッファ１８は、パリティビットを付加する直前の書き込みデータ、或いはＥＣＣデコーダ１７で訂正を終えた読み出しデータを一時的に格納する。メモリバッファ１５及び１８の各々は、例えばＲＡＭから構成される。バスブリッジ１９は、第２のメモリバッファ１８とシステムバス２０とのインタフェース処理を実行する。
【００２３】
割込回路２１は、ＣＰＵ２２に対して割込みを要求する。例えば、ＮＡＮＤ型フラッシュメモリ１１からのデータ読み出し動作において、誤り訂正不能等により読み出しエラーが発生した場合に、割込回路２１は、読み出しエラーが発生したことをＣＰＵ２２に通知し、誤り訂正不能となったフレーム番号を通知する。
【００２４】
データ転送制御部１３は、ハードウェア処理により、ＮＡＮＤ型フラッシュメモリ１１とシステムバス２０との間のデータ転送処理を実行する。これにより、ＣＰＵ２２がＮＡＮＤ型フラッシュメモリ１１とシステムバス２０との間のデータ転送処理を担わずに済むため、ＣＰＵ２２の処理負荷を低減することができる。図３は、データ転送制御部１３の構成を示すブロック図である。
【００２５】
データ転送制御部１３は、コマンドシーケンサ群３１、コマンドシーケンサ群３１を制御するシーケンサ制御回路３０、及びコマンドデコーダ群３２を備えている。
【００２６】
コマンドシーケンサ群３１は、モジュール間のデータ転送に対応する数のコマンドシーケンサＳＥＱからなる。図３では、一例として、６個のコマンドシーケンサＳＥＱ１〜ＳＥＱ６を示している。コマンドシーケンサＳＥＱは、動作モードに基づいて、モジュール間を制御する特定のコマンド列を発行する仕組みになっており、このコマンド列はそれぞれのモジュール間毎に独立して発生する。そして、それぞれのモジュールが並列にコマンド列に対応したデータ転送処理を実行する。
【００２７】
各コマンドシーケンサＳＥＱは、これに対応するモジュール間のデータ転送処理に必要なコマンド列を発行する。すなわち、コマンドシーケンサＳＥＱは、コマンドデコーダＤＥＣからレディ信号３９を受ける毎に、順次、コマンド３７をコマンドデコーダＤＥＣに送る。レディ信号３９は、コマンド３７に対して一連の動作が完了したことを示すものであり、この一連の動作が完了した場合に活性化される。さらに、コマンドシーケンサＳＥＱは、発行したコマンド３７と共に、このコマンド３７が有効であるか否かを示す有効信号３８をコマンドデコーダＤＥＣに送る。
【００２８】
図４は、コマンドシーケンサＳＥＱが割り当てられるデータ転送を説明する図である。データ読み出し時に動作するコマンドシーケンサは、ＳＥＱ１〜ＳＥＱ４である。コマンドシーケンサＳＥＱ５及びＳＥＱ６は、例えばデータ書き込み時に動作する。
【００２９】
コマンドシーケンサＳＥＱ３は、フラッシュインタフェース１４から第１のメモリバッファ１５へ、及びその逆方向のデータ転送を制御している。コマンドシーケンサＳＥＱ４は、第１のメモリバッファ１５からＥＣＣデコーダ１７へ、及びその逆方向のデータ転送を制御している。コマンドシーケンサＳＥＱ１は、ＥＣＣデコーダ１７から第２のメモリバッファ１８へ、及びその逆方向のデータ転送を制御している。コマンドシーケンサＳＥＱ２は、第２のメモリバッファ１８からバスブリッジ１９を介してシステムバス２０へ、及びその逆方向のデータ転送を制御している。
【００３０】
シーケンサ制御回路３０は、ＣＰＵ２２によって設定されるレジスタを備えており、このレジスタに設定された動作モードに基づいて、どのコマンドシーケンサＳＥＱを動作させるかを決定する。この制御のために、シーケンサ制御回路３０は、コマンドシーケンサＳＥＱの動作を開始するための開始信号３３と、コマンドシーケンサＳＥＱの動作を停止するための停止信号３４とを生成し、これら開始信号３３及び停止信号３４をコマンドシーケンサＳＥＱに送る。また、シーケンサ制御回路３０は、開始信号３３及び停止信号３４を送るタイミングを、コマンドシーケンサＳＥＱから受けた有効信号３５及びフレーム番号３６に基づいて決定する。
【００３１】
コマンドデコーダ群３２は、複数のコマンドシーケンサＳＥＱに対応した複数のコマンドデコーダＤＥＣからなる。各コマンドデコーダＤＥＣは、コマンドシーケンサＳＥＱから送られるコマンド３７をデコードし、このコマンド３７と共に送られる有効信号３８が活性化されている場合に、コマンド３７に応じてモジュール間のデータ転送を制御するための制御信号４０を生成する。この制御信号４０は、データの送り元（ソース側）と送り先（デスティネーション側）とに供給される。コマンドデコーダＤＥＣは、モジュールから状態フラグ信号４１を受けることで、モジュールの状態を確認できるようになっている。１つのコマンド３７に対応する処理が終了すると、コマンドデコーダＤＥＣは、コマンドシーケンサＳＥＱにレディ信号３９を返し、コマンドシーケンサＳＥＱから次のコマンドを受ける。
【００３２】
図５は、シーケンサ制御回路３０の一部の構成を示す回路図である。図５には、コマンドシーケンサＳＥＱを停止するための停止信号を生成する回路を抽出して示している。シーケンサ制御回路３０は、レジスタ５０、及び３個のＡＮＤゲート５１〜５３を備えている。
【００３３】
レジスタ５０は、データＳＵＳＰＥＮＤ_ＲＤを格納する。レジスタ５０のデータは、ＣＰＵ２２によって設定される。データＳＵＳＰＥＮＤ_ＲＤは、読み出し動作時に、一部のコマンドシーケンサの一時停止処理を無効にするためのものである。レジスタ５０のデータが“１”の時、一部のコマンドシーケンサ（本実施形態では、コマンドシーケンサＳＥＱ１〜ＳＥＱ３）の一時停止処理を無効にする動作モードが実行される。
【００３４】
ＡＮＤゲート５１の第１の入力端子には、割込回路２１から割込イネーブル信号ＩＮＴＥＮが入力され、ＡＮＤゲート５１の第２の入力端子には、ＥＣＣデコーダ１７から割込要求信号ＥＣＣ_ＲＥＱが入力される。ＡＮＤゲート５１は、コマンドシーケンサＳＥＱ４を停止するための停止信号ＳＥＱ４_ＳＴＯＰを出力する。割込イネーブル信号ＩＮＴＥＮは、割込み処理をイネーブルにするためのものであり、割込イネーブル信号ＩＮＴＥＮがハイレベルの場合に、割込み処理が可能となる。割込イネーブル信号ＩＮＴＥＮは、ＣＰＵ２２によって、割込回路２１が備えるレジスタに設定される。割込要求信号ＥＣＣ_ＲＥＱは、ＥＣＣデコーダ１７によって誤り訂正ができない、すなわち割込みが必要である場合にハイレベルにされる。これにより、停止信号ＳＥＱ４_ＳＴＯＰは、割込み処理がイネーブルであり、かつＥＣＣに起因する割込みが要求された場合に、活性化（ハイレベル）される。
【００３５】
ＡＮＤゲート５２の第１の入力端子には、ＡＮＤゲート５１の出力が入力され、ＡＮＤゲート５２の第２の入力端子（ローアクティブ）には、レジスタ５０の出力が入力される。ＡＮＤゲート５２は、コマンドシーケンサＳＥＱ１及びＳＥＱ３を停止するための停止信号ＳＥＱ_ＳＴＯＰを出力する。これにより、停止信号ＳＥＱ_ＳＴＯＰは、停止信号ＳＥＱ４_ＳＴＯＰがハイレベルになり、かつ一時停止処理が無効である場合に、活性化（ハイレベル）される。
【００３６】
ＡＮＤゲート５３の第１の入力端子には、ＡＮＤゲート５１の出力が入力され、ＡＮＤゲート５３の第２の入力端子には、割込回路２１からフレームヒット信号ＦＲＡＭＥ_ＨＩＴが入力され、ＡＮＤゲート５３の第３の入力端子（ローアクティブ）には、レジスタ５０の出力が入力される。ＡＮＤゲート５３は、コマンドシーケンサＳＥＱ２を停止するための停止信号ＳＥＱ２_ＳＴＯＰを出力する。フレームヒット信号ＦＲＡＭＥ_ＨＩＴは、コマンドシーケンサＳＥＱ２によって転送が行われているフレームと、誤りが発生したフレームとが一致した場合にハイレベルになる。これにより、停止信号ＳＥＱ２_ＳＴＯＰは、誤りが発生したフレームの前までのデータを転送した後に、活性化（ハイレベル）される。また、本実施形態では、レジスタ５０の出力がハイレベルである場合、フレームヒット信号ＦＲＡＭＥ_ＨＩＴの状態に関わらず、停止信号ＳＥＱ２_ＳＴＯＰは、非活性（ローレベル）のままである。
【００３７】
（動作）
次に、このように構成されたメモリシステム１０の動作を説明する。本実施形態では、図６に示すように、ＮＡＮＤ型フラッシュメモリ１１の読み出し単位である１ページは、８個のフレームＦ０〜Ｆ８で構成されているものとする。図７は、コントローラ１２の動作を示すフローチャートである。図８は、コマンドシーケンサＳＥＱ１〜ＳＥＱ４の動作を示すタイミングチャートである。
【００３８】
最初に、ＣＰＵ２２は、ファームウェア処理によって、ＮＡＮＤ型フラッシュメモリ１１からデータを読み出すために必要な読み出し設定をデータ転送制御部１３に対して行う（ステップＳ２０１）。読み出し設定には、ページ位置、フレーム位置、ＥＣＣパラメータテーブル、及び転送ページ数などが含まれる。また、読み出し設定の段階で、図５のレジスタにデータ“１”をセットし、コマンドシーケンサＳＥＱ１〜ＳＥＱ３の一時停止処理を無効にする。読み出しエラーが検出された場合に、比較例であればコマンドシーケンサを全て停止させていたが、一時停止処理を無効にすることで、コマンドシーケンサを停止させないように制御することができる。
【００３９】
続いて、ＣＰＵ２２は、データ転送制御部１３に対してデータ転送を開始するように指示する（ステップＳ２０２）。この指示に応答して、データ転送制御部１３は、ＮＡＮＤ型フラッシュメモリ１１からシステムバス２０へのデータ転送処理を実行する（ステップＳ２０３）。この時のデータ転送は、ＳＥＱ３→ＳＥＱ４→ＳＥＱ１→ＳＥＱ２の順で処理される。
【００４０】
すなわち、フラッシュインタフェース１４は、ＮＡＮＤ型フラッシュメモリ１１にコマンド及びアドレスを供給し、ＮＡＮＤ型フラッシュメモリ１１からページ単位でデータを読み出す。コマンドシーケンサＳＥＱ３は、フラッシュインタフェース１４から第１のメモリバッファ１５へデータを転送するためのコマンドを発行する。このコマンドは、有効信号と共にコマンドデコーダＤＥＣ３に送られる。コマンドデコーダＤＥＣ３は、コマンドに基づいてフラッシュインタフェース１４及び第１のメモリバッファ１５に制御信号を送る。この制御信号により、フラッシュインタフェース１４及び第１のメモリバッファ１５間で、データ転送が行われる。
【００４１】
続いて、コマンドシーケンサＳＥＱ４は、第１のメモリバッファ１５からＥＣＣデコーダ１７へデータを転送するためのコマンドを発行する。このコマンドは、有効信号と共にコマンドデコーダＤＥＣ４に送られる。コマンドデコーダＤＥＣ４は、コマンドに基づいて第１のメモリバッファ１５及びＥＣＣデコーダ１７に制御信号を送る。この制御信号により、第１のメモリバッファ１５及びＥＣＣデコーダ１７間で、データ転送が行われる。ＥＣＣデコーダ１７は、ＥＣＣパラメータテーブルＴＢ１を用いて、フレーム単位で誤り訂正を行う。
【００４２】
続いて、コマンドシーケンサＳＥＱ１は、ＥＣＣデコーダ１７から第２のメモリバッファ１８へデータを転送するためのコマンドを発行する。このコマンドは、有効信号と共にコマンドデコーダＤＥＣ１に送られる。コマンドデコーダＤＥＣ１は、コマンドに基づいてＥＣＣデコーダ１７及び第２のメモリバッファ１８に制御信号を送る。この制御信号により、ＥＣＣデコーダ１７及び第２のメモリバッファ１８間で、データ転送が行われる。
【００４３】
続いて、コマンドシーケンサＳＥＱ２は、第２のメモリバッファ１８からバスブリッジ１９を介してシステムバス２０へデータを転送するためのコマンドを発行する。このコマンドは、有効信号と共にコマンドデコーダＤＥＣ２に送られる。コマンドデコーダＤＥＣ２は、コマンドに基づいて第２のメモリバッファ１８及びバスブリッジ１９に制御信号を送る。この制御信号により、第２のメモリバッファ１８及びシステムバス２０間で、データ転送が行われる。
【００４４】
ＥＣＣデコーダ１７によって転送データ内の誤りが訂正された場合、若しくは転送データ内に誤りが検出されなかった場合には、データ転送が完了する（ステップＳ２０５）。
【００４５】
一方、ＥＣＣデコーダ１７により訂正可能ビット数を超えた誤りがフレーム内に発生した場合、読み出しエラーとなる（ステップＳ２０４）。この場合、読み出しエラーの原因となったフレームの転送をやり直すために、ＣＰＵ２２に対して割込みが要求される。
【００４６】
図８は、１ページ目のフレームＦ４で誤り訂正が失敗し、読み出しエラーとなった場合を例示している。割込み要求の前に、コマンドシーケンサＳＥＱ２は、すでに誤り訂正が正常に行われたフレームＦ０〜Ｆ３の転送動作（割込み応答前処理）を実行する。
【００４７】
続いて、シーケンサ制御回路３０は、コマンドシーケンサＳＥＱ４を停止する（ステップＳ２０６）。すなわち、図５において、割込イネーブル信号ＩＮＴＥＮ及び割込要求信号ＥＣＣ_ＲＥＱがともにハイレベルになり、停止信号ＳＥＱ４_ＳＴＯＰがハイレベルになる。また、コマンドシーケンサＳＥＱ１〜ＳＥＱ３用の停止信号は、非活性化（ローレベル）である。よって、コマンドシーケンサＳＥＱ１〜ＳＥＱ３は、動作を継続する。
【００４８】
続いて、割込回路２１は、ＣＰＵ２２に対して割込みを要求する（ステップＳ２０７）。この割込み要求に応答して、ＣＰＵ２２は、割込み応答処理（ファームウェア処理）、すなわち、発生した割込み要因のチェックを行う（ステップＳ２０８）。そして、その要因が読み出しエラー割込みと確認されると、ＣＰＵ２２は、読み出し設定処理を行う（ステップＳ２０９）。さらに、ＣＰＵ２２は、読み出し設定処理とともに、ＥＣＣデコーダ１７のＥＣＣパラメータテーブルを切り替える（ステップＳ２１０）。読み出し設定には、該当するやり直しページ位置、及びフレーム位置が含まれる。その他の設定内容は、最初に設定した内容で内部は動作しつづけているので変更する必要はない。具体的には、コマンドシーケンサＳＥＱ１〜ＳＥＱ３の設定は、割込みが発生した場合でも再設定する必要はなく、コマンドシーケンサＳＥＱ４のみ再設定される。
【００４９】
続いて、ＣＰＵ２２は、データ転送制御部１３に対してデータ転送を開始するように指示する（ステップＳ２１１）。この段階でデータ転送を再スタートすると、途中で読み出しエラーが発生しない限りは所定のページまで転送を行うことができる。そのため、ＣＰＵ２２による余計なファームウェア処理の介在がなくてすむ。この指示に応答して、データ転送制御部１３は、ＮＡＮＤ型フラッシュメモリ１１からシステムバス２０へのデータ転送処理を実行する（ステップＳ２１２）。その後のフローは、ステップＳ２０４及びＳ２０５と同じである。
【００５０】
図８に示すように、コマンドシーケンサＳＥＱ１及びＳＥＱ２は、フレームＦ３のデータ転送が完了した後、フレームＦ４の転送待ち状態で待機している。コマンドシーケンサＳＥＱ３は、先読みできる限りＮＡＮＤ型フラッシュメモリ１１をアクセスし続けており、２ページ目のフレームＦ３を転送したところで、第１のメモリバッファ１５が一杯になり、２ページ目のフレームＦ４の転送待ち状態で待機している。そのため、割込み応答処理を開始した時点においてもＮＡＮＤ型フラッシュメモリ１１のアクセスを実行しているので、割込み応答（ファームウェア処理）とＮＡＮＤ型フラッシュメモリ１１の先読み（ハードウェア処理）との並列処理でレイテンシの改善が出来ており、この場合において、“ファームウェア処理時間  ＜  ハードウェア処理時間”の関係が成り立てば、読み出しエラーによる転送ペナルティはゼロとなる。
【００５１】
なお、読み出しエラーに関する割込みが発生した場合に、コマンドシーケンサＳＥＱ１〜ＳＥＱ４の動作を全て停止するように制御することも可能である。この場合、ＣＰＵ２２は、図５に示したレジスタ５０にデータ“０”を書き込む。これにより、シーケンサ制御回路３０は、コマンドシーケンサＳＥＱ１及びＳＥＱ３用の停止信号ＳＥＱ_ＳＴＯＰ、コマンドシーケンサＳＥＱ２用の停止信号ＳＥＱ２_ＳＴＯＰ、及びコマンドシーケンサＳＥＱ４用の停止信号ＳＥＱ４_ＳＴＯＰを全て活性化（ハイレベル）する。この場合は、データ転送制御部１３は、図１の動作フローを実行する。このように、ＣＰＵ２２が設定するレジスタ５０のデータに応じて、読み出しエラーに関する割り込みが発生した場合に、ＮＡＮＤ型フラッシュメモリ１１及びシステムバス２０間のデータ転送を継続する第１のモードと、ＮＡＮＤ型フラッシュメモリ１１及びシステムバス２０間のデータ転送を停止する第２のモードとを切り替えることができる。
【００５２】
（効果）
以上詳述したように本実施形態では、メモリシステム１０は、ＣＰＵ２２によるファームウェア処理とは別に、ハードウェア処理により、ＮＡＮＤ型フラッシュメモリ１１及びシステムバス２０間のデータ転送を実行しかつコマンドシーケンサ群３１を含むデータ転送制御部１３と、読み出しエラーが発生した場合に、ＣＰＵ２２に対して割込みを要求する割込回路２１とを備えている。そして、読み出しエラーに関する割込みが発生した場合に、第１のメモリバッファ１５及びＥＣＣデコーダ１７間のデータ転送を担うコマンドシーケンサＳＥＱ４の動作のみを停止し、それ以外で読み出しに関係するコマンドシーケンサＳＥＱ１〜ＳＥＱ３の動作を継続するようにしている。
【００５３】
従って本実施形態によれば、ＣＰＵ２２による割込み応答処理の間もコマンドシーケンサＳＥＱ１〜ＳＥＱ３がデータ転送を継続することができるため、ＮＡＮＤ型フラッシュメモリ１１からの読み出し動作においてレイテンシを短縮することができる。これにより、ＮＡＮＤ型フラッシュメモリ１１へのアクセス性能を向上させることができる。
【００５４】
また、読み出しエラーに関する割込みが発生した場合でも、ＣＰＵ２２による割込み応答処理の後に、コマンドシーケンサＳＥＱ１〜ＳＥＱ３の再設定を行う必要がない。これにより、ＣＰＵ２２によるファームウェア処理を低減することができるため、ＮＡＮＤ型フラッシュメモリ１１へのアクセス性能を向上させることができる。
【００５５】
また、シーケンサ制御回路３０が備えるレジスタ５０にデータを設定することで、読み出しエラーに関する割り込みが発生した場合に、ＮＡＮＤ型フラッシュメモリ１１及びシステムバス２０間のデータ転送を継続する第１のモードと、ＮＡＮＤ型フラッシュメモリ１１及びシステムバス２０間のデータ転送を停止する第２のモードとを切り替えることができる。
【００５６】
また、ＮＡＮＤ型フラッシュメモリ１１及びシステムバス２０間のデータ転送をデータ転送制御部１３が担っているため、ＣＰＵ２２の処理負荷を低減することができる。
【００５７】
本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、構成要素を変形して具体化することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、１つの実施形態に開示される複数の構成要素の適宜な組み合わせ、若しくは異なる実施形態に開示される構成要素の適宜な組み合わせにより種々の発明を構成することができる。例えば、実施形態に開示される全構成要素から幾つかの構成要素が削除されても、発明が解決しようとする課題が解決でき、発明の効果が得られる場合には、これらの構成要素が削除された実施形態が発明として抽出されうる。
【符号の説明】
【００５８】
ＳＥＱ…コマンドシーケンサ、ＤＥＣ…コマンドデコーダ、ＴＢ…ＥＣＣパラメータテーブル、１０…メモリシステム、１１…ＮＡＮＤ型フラッシュメモリ、１２…コントローラ、１３…データ転送制御部、１４…フラッシュインタフェース、１５…第１のメモリバッファ、１６…ＥＣＣエンコーダ、１７…ＥＣＣデコーダ、１８…第２のメモリバッファ、１９…バスブリッジ、２０…システムバス、２１…割込回路、２２…ＣＰＵ、２３…制御バス、３０…シーケンサ制御回路、３１…コマンドシーケンサ群、３２…コマンドデコーダ群、３３…開始信号、３４…停止信号、３５…有効信号、３６…フレーム番号、３７…コマンド、３８…有効信号、３９…レディ信号、４０…制御信号４０、４１…状態フラグ信号、５０…レジスタ、５１〜５３…ＡＮＤゲート。
【図１】
2011242884.tif 000003
【図２】
2011242884.tif 000004
【図３】
2011242884.tif 000005
【図４】
2011242884.tif 000006
【図５】
2011242884.tif 000007
【図６】
2011242884.tif 000008
【図７】
2011242884.tif 000009
【図８】
2011242884.tif 000010
【手続補正書】
【提出日】平成23年2月2日(2011.2.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項５
【補正方法】変更
【補正の内容】
【請求項５】
メモリシステムのデータ転送方法であって、
前記メモリシステムは、
データを格納する不揮発性メモリと、
前記不揮発性メモリから転送されたデータを一時的に格納する第１のバッファと、
前記第１のバッファから転送されたデータの誤りを訂正する訂正回路と、
前記訂正回路から転送されたデータを一時的に格納する第２のバッファと、
前記第２のバッファから転送されたデータを受けるバスと、
を具備し、
前記データ転送方法は、
前記不揮発性メモリ及び前記バス間のデータ転送のための複数のコマンドを発行する工程と、
前記複数のコマンドをデコードし、データ転送を制御するための複数の制御信号を生成する工程と、
誤り訂正不能による読み出しエラーが発生した場合に、ＣＰＵに割り込みを発生する工程と、
前記読み出しエラーに関する割り込みが発生した場合でも、前記不揮発性メモリからのデータ転送を継続する工程と、
を具備することを特徴とするメモリシステムのデータ転送方法。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項６
【補正方法】変更
【補正の内容】
【請求項６】
前記複数のコマンドは、前記不揮発性メモリから前記第１のバッファへのデータ転送を制御する第１のコマンドと、前記第１のバッファから前記訂正回路へのデータ転送を制御する第２のコマンドと、前記訂正回路から前記第２のバッファへのデータ転送を制御する第３のコマンドと、前記第２のバッファから前記バスへのデータ転送を制御する第４のコマンドとを含むことを特徴とする請求項５に記載のメモリシステムのデータ転送方法。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
前記データ転送を継続する工程は、前記割り込みが発生した場合に、前記第１のコマンド、前記第３のコマンド及び前記第４のコマンドの発行を継続し、かつ前記第２のコマンドの発行を停止する工程を含むことを特徴とする請求項６に記載のメモリシステムのデータ転送方法。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
このリトライ動作では、１ページ分のデータ転送しかできない。読み出しエラーが発生せずに無事１ページ分のデータ転送が完了すると（ステップＳ１１１）、転送完了割込みが発生し、再びファームウェア処理に切り替わる。ファームウェア処理による割込み応答処理が行われ（ステップＳ１１２）、ＣＰＵは、発生した割込み要因のチェックを行う。そして、ＣＰＵは、１ページ分のデータ転送が完了したことを確認すると、残りのページ分の転送に必要な読み出し設定を行う（ステップＳ１１３）。その後、データ転送を開始し（ステップＳ１１４）、データ転送処理が引き続き行われる（ステップＳ１１５）。以降、読み出しエラーが発生した際は同様の手順で転送動作を繰り返していくことになる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
（動作）
次に、このように構成されたメモリシステム１０の動作を説明する。本実施形態では、図６に示すように、ＮＡＮＤ型フラッシュメモリ１１の読み出し単位である１ページは、８個のフレームＦ０〜Ｆ７で構成されているものとする。図７は、コントローラ１２の動作を示すフローチャートである。図８は、コマンドシーケンサＳＥＱ１〜ＳＥＱ４の動作を示すタイミングチャートである。