説明

メモリシステム及びそのデータ転送方法

【課題】不揮発性メモリからの読み出し動作においてレイテンシを短縮する。
【解決手段】メモリシステム10は、データを格納する不揮発性メモリ11と、不揮発性メモリ11からのデータを一時的に格納するバッファ15と、バッファ15からのデータの誤りを訂正する訂正回路17と、訂正回路17からのデータを一時的に格納するバッファ18と、バッファ18からのデータを受けるバス20と、不揮発性メモリ11及びバス20間のデータ転送のための複数のコマンドを発行するコマンドシーケンサ群と、複数のコマンドをデコードし、データ転送を制御するための複数の制御信号を生成するコマンドデコーダ群と、誤り訂正不能による読み出しエラーが発生した場合に、CPU22に割り込みを発生する割込回路21とを含む。コマンドシーケンサ群は、割り込みが発生した場合でも、不揮発性メモリ11からのデータ転送を継続する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム及びそのデータ転送方法に関する。
【背景技術】
【0002】
不揮発性半導体メモリとしては、データの書き込み及び消去を電気的に行うEEPROM(Electrically Erasable Programmable Read Only Memory)の一種であるNAND型フラッシュメモリが知られている。
【0003】
このNAND型フラッシュメモリを備えたメモリシステムは、1つ(又は複数)のシステムバスに複数のモジュールが接続され、そのモジュール間のデータ転送の切り替えをCPU(Central Processing Unit)によるファームウェア処理が介在しながら行う。そのため、1つのモジュール間のデータ転送が完了する毎に、転送動作の完了を通知する割込みが発生し、ファームウェア処理による次の動作設定を行った後で次の転送動作を行うことができる。
【0004】
従って、NAND型フラッシュメモリから読み出したデータの誤りを訂正する誤り訂正回路や、複数のメモリバッファなどが存在すると、モジュール間のデータ転送を切り替える処理が増える。このため、非常に多くの割込みがモジュール間の転送が完了する毎に発生し、言い換えればファームウェア処理が介在している時間が非常に長くなる。これにより、データ転送のレイテンシが非常に悪くなってしまう。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2003−141888号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
不揮発性メモリからの読み出し動作においてレイテンシを短縮する。
【課題を解決するための手段】
【0007】
実施形態に係るメモリシステムは、データを格納する不揮発性メモリと、前記不揮発性メモリから転送されたデータを一時的に格納する第1のバッファと、前記第1のバッファから転送されたデータの誤りを訂正する訂正回路と、前記訂正回路から転送されたデータを一時的に格納する第2のバッファと、前記第2のバッファから転送されたデータを受けるバスと、前記不揮発性メモリ及び前記バス間のデータ転送のための複数のコマンドを発行するコマンドシーケンサ群と、前記複数のコマンドをデコードし、データ転送を制御するための複数の制御信号を生成するコマンドデコーダ群と、前記バスに接続されたCPUと、誤り訂正不能による読み出しエラーが発生した場合に、前記CPUに割り込みを発生する割込回路とを具備し、前記コマンドシーケンサ群は、前記読み出しエラーに関する割り込みが発生した場合でも、前記不揮発性メモリからのデータ転送を継続する。
【図面の簡単な説明】
【0008】
【図1】比較例に係るメモリシステムの読み出し動作を示すフローチャート。
【図2】実施形態に係るメモリシステム10の構成を示すブロック図。
【図3】データ転送制御部13の構成を示すブロック図。
【図4】コマンドシーケンサSEQが割り当てられるデータ転送を説明する図。
【図5】シーケンサ制御回路30の一部の構成を示す回路図。
【図6】データ構造を説明する概略図。
【図7】コントローラ12の動作を示すフローチャート。
【図8】コマンドシーケンサSEQ1〜SEQ4の動作を示すタイミングチャート。
【発明を実施するための形態】
【0009】
(比較例)
図1は、比較例に係るメモリシステムの読み出し動作を示すフローチャートである。メモリシステムは、NAND型フラッシュメモリ及びコントローラを備えている。コントローラは、CPU及びデータ転送制御部を備えている。
【0010】
NAND型フラッシュメモリからデータを読み出す際に、まずファームウェア処理によって複数ページを読み出すための読み出し設定が行われ(ステップS101)、CPUは、データ転送制御部に対してデータ転送を開始するように指示する(ステップS102)。データ転送が開始されると、ハードウェア処理により、NAND型フラッシュメモリから読み出したデータをECCデコーダに渡して誤り訂正を行い、正常な値が返されると、システム内部に転送される(ステップS103)。
【0011】
この時、読み出しエラーが発生した場合は、割込みを発生してデータ転送を停止する(ステップS104)。ファームウェア処理による割込み応答処理が行われ(ステップS106)、CPUは、発生した割込み要因のチェックを行う。そして、その要因が読み出しエラー割込みと確認されると、CPUは、該当するやり直しページ位置、フレーム位置、転送ページ数(1ページ分のみ)などリトライ動作に必要な読み出し設定を行い(ステップS107)、再びデータ転送を開始する(ステップS108、S109)。このファームウェア処理による設定が行われている間は、内部のシーケンサなどは停止状態(リセット状態)となっている。
【0012】
このリトライ動作では、1ページ分のデータ転送しかできない。読み出しエラーが発生せずに無事1ページ分のデータ転送が完了すると(ステップS111)、転送完了割込みが発生し、再びファームウェア処理に切り替わる。ファームウェア処理による割込み応答処理が行われ(ステップS112)、CPUは、発生した割込み要因のチェックを行う。そして、CPUは、1ページ分のデータ転送が完了したことを確認すると、残りのページ分の転送に必要な読み出し設定を行う(ステップS113)。その後、データ転送を開始し(ステップS1114)、データ転送処理が引き続き行われる(ステップS115)。以降、読み出しエラーが発生した際は同様の手順で転送動作を繰り返していくことになる。
【0013】
この比較例によれば、読み出しエラーによる割込みが発生すると、1ページ分のデータ転送のやり直し動作と、残りページ分のデータ転送動作とを行いながら、最初に設定された複数ページの転送を行うようになっている。このため、ファームウェア処理の介在の多さや、データ転送のページ分割処理などが必要となり、読み出しエラーが発生することによって、データ転送のレイテンシが長くなっている。
【0014】
(実施形態)
以下、実施形態について図面を参照して説明する。以下に示す幾つかの実施形態は、本発明の技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置などによって、本発明の技術思想が特定されるものではない。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【0015】
図2は、実施形態に係るメモリシステム10の構成を示すブロック図である。メモリシステム10は、不揮発性半導体メモリであるNAND型フラッシュメモリ11と、このNAND型フラッシュメモリ11を制御するコントローラ12とを備えている。
【0016】
NAND型フラッシュメモリ11は、データ消去の単位である複数のブロックを備えている。各ブロックは、複数のフラッシュメモリセルがマトリクス状に配列されて構成されており、また、複数ビットからなる複数のページを備えている。NAND型フラッシュメモリ11は、このページ単位で、データの読み出し及び書き込みが行われる。さらに、NAND型フラッシュメモリ11は、メモリセルアレイの列を選択するカラムデコーダ、メモリセルアレイの行を選択するロウデコーダ、メモリセルからデータを読み出すためのセンスアンプ回路、読み出し及び書き込みデータを保持するデータキャッシュなどを含む。
【0017】
コントローラ12は、データ転送制御部13、フラッシュインタフェース14、第1のメモリバッファ15、ECC(Error Checking and Correcting)エンコーダ16、ECCデコーダ17、第2のメモリバッファ18、バスブリッジ19、システムバス20、割込回路21、中央演算処理装置(CPU)22、及び制御バス23を備えている。
【0018】
CPU22は、システムバス20及び制御バス23に接続されている。CPU22は、同じくシステムバス20に接続されたROM(図示せず)に格納されたファームウェア(FW)を用いて、メモリシステム10全体の動作を統括的に制御する。CPU22は、制御バス23を経由してデータ転送制御部13に制御信号を送り、また、システムバス20を経由して各種モジュールとの間でデータの受け渡しを行う。モジュールとは、所望の動作及び機能を実現する機能単位であり、本実施形態では、図2に示した各機能ブロックを指している。なお、図示は省略するが、システムバス20には、メモリシステム10の動作に必要なRAM(Random Access Memory)やホストインタフェースなども接続されている。
【0019】
フラッシュインタフェース14は、NAND型フラッシュメモリ11との間のインタフェース処理を実行し、具体的には、NAND型フラッシュメモリ11に対して、データの消去、書き込み、及び読み出し処理を実行する。このために、フラッシュインタフェース14は、NAND型フラッシュメモリ11に対してコマンド及びアドレスを供給し、NAND型フラッシュメモリ11との間で書き込みデータ及び読み出しデータの受け渡しを行う。
【0020】
ECCエンコーダ16は、書き込みデータを受け、この書き込みデータに対して誤り訂正符号(パリティビット)を生成する。また、ECCエンコーダ16は、所定のデータサイズを計算単位としてパリティビットを生成する。このパリティビットは、書き込みデータに付加され、書き込みデータと共にNAND型フラッシュメモリ11に書き込まれる。本実施形態では、ECC計算単位としてのデータ列とパリティビットとを合わせてフレームを呼ぶ。
【0021】
ECCデコーダ17は、読み出しデータを受け、この読み出しデータに付加されたパリティビットを用いて、読み出しデータの誤りを訂正する。ECCデコーダ17は、パリティビットを用いた誤り訂正処理において、2種類の訂正方式を用いることができる。2種類の訂正方式による誤り訂正を実現するために、ECCデコーダ17は、2種類の訂正方式に対応した2種類のECCパラメータテーブルTB1及びTB2を備えている。2種類の訂正方式の切り替えは、ECCデコーダ17が有する2種類のECCパラメータテーブルTB1及びTB2を切り替えることで実現できる。2種類の訂正方式の差異は、パリティの計算方式(尤度比など)が異なるようにしてもよいし、誤り訂正能力が異なるようにしてもよい。このような構成を有するECCデコーダ17は、NAND型フラッシュメモリ11の特性に応じて訂正方式を使い分けることで、誤り訂正できる確率を向上させることが可能である。
【0022】
第1のメモリバッファ15は、NAND型フラッシュメモリ11からの読み出しデータ、或いはNAND型フラッシュメモリ11に書き込む直前の、ECCエンコーダ16によってパリティビットが付加された書き込みデータを一時的に格納する。第2のメモリバッファ18は、パリティビットを付加する直前の書き込みデータ、或いはECCデコーダ17で訂正を終えた読み出しデータを一時的に格納する。メモリバッファ15及び18の各々は、例えばRAMから構成される。バスブリッジ19は、第2のメモリバッファ18とシステムバス20とのインタフェース処理を実行する。
【0023】
割込回路21は、CPU22に対して割込みを要求する。例えば、NAND型フラッシュメモリ11からのデータ読み出し動作において、誤り訂正不能等により読み出しエラーが発生した場合に、割込回路21は、読み出しエラーが発生したことをCPU22に通知し、誤り訂正不能となったフレーム番号を通知する。
【0024】
データ転送制御部13は、ハードウェア処理により、NAND型フラッシュメモリ11とシステムバス20との間のデータ転送処理を実行する。これにより、CPU22がNAND型フラッシュメモリ11とシステムバス20との間のデータ転送処理を担わずに済むため、CPU22の処理負荷を低減することができる。図3は、データ転送制御部13の構成を示すブロック図である。
【0025】
データ転送制御部13は、コマンドシーケンサ群31、コマンドシーケンサ群31を制御するシーケンサ制御回路30、及びコマンドデコーダ群32を備えている。
【0026】
コマンドシーケンサ群31は、モジュール間のデータ転送に対応する数のコマンドシーケンサSEQからなる。図3では、一例として、6個のコマンドシーケンサSEQ1〜SEQ6を示している。コマンドシーケンサSEQは、動作モードに基づいて、モジュール間を制御する特定のコマンド列を発行する仕組みになっており、このコマンド列はそれぞれのモジュール間毎に独立して発生する。そして、それぞれのモジュールが並列にコマンド列に対応したデータ転送処理を実行する。
【0027】
各コマンドシーケンサSEQは、これに対応するモジュール間のデータ転送処理に必要なコマンド列を発行する。すなわち、コマンドシーケンサSEQは、コマンドデコーダDECからレディ信号39を受ける毎に、順次、コマンド37をコマンドデコーダDECに送る。レディ信号39は、コマンド37に対して一連の動作が完了したことを示すものであり、この一連の動作が完了した場合に活性化される。さらに、コマンドシーケンサSEQは、発行したコマンド37と共に、このコマンド37が有効であるか否かを示す有効信号38をコマンドデコーダDECに送る。
【0028】
図4は、コマンドシーケンサSEQが割り当てられるデータ転送を説明する図である。データ読み出し時に動作するコマンドシーケンサは、SEQ1〜SEQ4である。コマンドシーケンサSEQ5及びSEQ6は、例えばデータ書き込み時に動作する。
【0029】
コマンドシーケンサSEQ3は、フラッシュインタフェース14から第1のメモリバッファ15へ、及びその逆方向のデータ転送を制御している。コマンドシーケンサSEQ4は、第1のメモリバッファ15からECCデコーダ17へ、及びその逆方向のデータ転送を制御している。コマンドシーケンサSEQ1は、ECCデコーダ17から第2のメモリバッファ18へ、及びその逆方向のデータ転送を制御している。コマンドシーケンサSEQ2は、第2のメモリバッファ18からバスブリッジ19を介してシステムバス20へ、及びその逆方向のデータ転送を制御している。
【0030】
シーケンサ制御回路30は、CPU22によって設定されるレジスタを備えており、このレジスタに設定された動作モードに基づいて、どのコマンドシーケンサSEQを動作させるかを決定する。この制御のために、シーケンサ制御回路30は、コマンドシーケンサSEQの動作を開始するための開始信号33と、コマンドシーケンサSEQの動作を停止するための停止信号34とを生成し、これら開始信号33及び停止信号34をコマンドシーケンサSEQに送る。また、シーケンサ制御回路30は、開始信号33及び停止信号34を送るタイミングを、コマンドシーケンサSEQから受けた有効信号35及びフレーム番号36に基づいて決定する。
【0031】
コマンドデコーダ群32は、複数のコマンドシーケンサSEQに対応した複数のコマンドデコーダDECからなる。各コマンドデコーダDECは、コマンドシーケンサSEQから送られるコマンド37をデコードし、このコマンド37と共に送られる有効信号38が活性化されている場合に、コマンド37に応じてモジュール間のデータ転送を制御するための制御信号40を生成する。この制御信号40は、データの送り元(ソース側)と送り先(デスティネーション側)とに供給される。コマンドデコーダDECは、モジュールから状態フラグ信号41を受けることで、モジュールの状態を確認できるようになっている。1つのコマンド37に対応する処理が終了すると、コマンドデコーダDECは、コマンドシーケンサSEQにレディ信号39を返し、コマンドシーケンサSEQから次のコマンドを受ける。
【0032】
図5は、シーケンサ制御回路30の一部の構成を示す回路図である。図5には、コマンドシーケンサSEQを停止するための停止信号を生成する回路を抽出して示している。シーケンサ制御回路30は、レジスタ50、及び3個のANDゲート51〜53を備えている。
【0033】
レジスタ50は、データSUSPEND_RDを格納する。レジスタ50のデータは、CPU22によって設定される。データSUSPEND_RDは、読み出し動作時に、一部のコマンドシーケンサの一時停止処理を無効にするためのものである。レジスタ50のデータが“1”の時、一部のコマンドシーケンサ(本実施形態では、コマンドシーケンサSEQ1〜SEQ3)の一時停止処理を無効にする動作モードが実行される。
【0034】
ANDゲート51の第1の入力端子には、割込回路21から割込イネーブル信号INTENが入力され、ANDゲート51の第2の入力端子には、ECCデコーダ17から割込要求信号ECC_REQが入力される。ANDゲート51は、コマンドシーケンサSEQ4を停止するための停止信号SEQ4_STOPを出力する。割込イネーブル信号INTENは、割込み処理をイネーブルにするためのものであり、割込イネーブル信号INTENがハイレベルの場合に、割込み処理が可能となる。割込イネーブル信号INTENは、CPU22によって、割込回路21が備えるレジスタに設定される。割込要求信号ECC_REQは、ECCデコーダ17によって誤り訂正ができない、すなわち割込みが必要である場合にハイレベルにされる。これにより、停止信号SEQ4_STOPは、割込み処理がイネーブルであり、かつECCに起因する割込みが要求された場合に、活性化(ハイレベル)される。
【0035】
ANDゲート52の第1の入力端子には、ANDゲート51の出力が入力され、ANDゲート52の第2の入力端子(ローアクティブ)には、レジスタ50の出力が入力される。ANDゲート52は、コマンドシーケンサSEQ1及びSEQ3を停止するための停止信号SEQ_STOPを出力する。これにより、停止信号SEQ_STOPは、停止信号SEQ4_STOPがハイレベルになり、かつ一時停止処理が無効である場合に、活性化(ハイレベル)される。
【0036】
ANDゲート53の第1の入力端子には、ANDゲート51の出力が入力され、ANDゲート53の第2の入力端子には、割込回路21からフレームヒット信号FRAME_HITが入力され、ANDゲート53の第3の入力端子(ローアクティブ)には、レジスタ50の出力が入力される。ANDゲート53は、コマンドシーケンサSEQ2を停止するための停止信号SEQ2_STOPを出力する。フレームヒット信号FRAME_HITは、コマンドシーケンサSEQ2によって転送が行われているフレームと、誤りが発生したフレームとが一致した場合にハイレベルになる。これにより、停止信号SEQ2_STOPは、誤りが発生したフレームの前までのデータを転送した後に、活性化(ハイレベル)される。また、本実施形態では、レジスタ50の出力がハイレベルである場合、フレームヒット信号FRAME_HITの状態に関わらず、停止信号SEQ2_STOPは、非活性(ローレベル)のままである。
【0037】
(動作)
次に、このように構成されたメモリシステム10の動作を説明する。本実施形態では、図6に示すように、NAND型フラッシュメモリ11の読み出し単位である1ページは、8個のフレームF0〜F8で構成されているものとする。図7は、コントローラ12の動作を示すフローチャートである。図8は、コマンドシーケンサSEQ1〜SEQ4の動作を示すタイミングチャートである。
【0038】
最初に、CPU22は、ファームウェア処理によって、NAND型フラッシュメモリ11からデータを読み出すために必要な読み出し設定をデータ転送制御部13に対して行う(ステップS201)。読み出し設定には、ページ位置、フレーム位置、ECCパラメータテーブル、及び転送ページ数などが含まれる。また、読み出し設定の段階で、図5のレジスタにデータ“1”をセットし、コマンドシーケンサSEQ1〜SEQ3の一時停止処理を無効にする。読み出しエラーが検出された場合に、比較例であればコマンドシーケンサを全て停止させていたが、一時停止処理を無効にすることで、コマンドシーケンサを停止させないように制御することができる。
【0039】
続いて、CPU22は、データ転送制御部13に対してデータ転送を開始するように指示する(ステップS202)。この指示に応答して、データ転送制御部13は、NAND型フラッシュメモリ11からシステムバス20へのデータ転送処理を実行する(ステップS203)。この時のデータ転送は、SEQ3→SEQ4→SEQ1→SEQ2の順で処理される。
【0040】
すなわち、フラッシュインタフェース14は、NAND型フラッシュメモリ11にコマンド及びアドレスを供給し、NAND型フラッシュメモリ11からページ単位でデータを読み出す。コマンドシーケンサSEQ3は、フラッシュインタフェース14から第1のメモリバッファ15へデータを転送するためのコマンドを発行する。このコマンドは、有効信号と共にコマンドデコーダDEC3に送られる。コマンドデコーダDEC3は、コマンドに基づいてフラッシュインタフェース14及び第1のメモリバッファ15に制御信号を送る。この制御信号により、フラッシュインタフェース14及び第1のメモリバッファ15間で、データ転送が行われる。
【0041】
続いて、コマンドシーケンサSEQ4は、第1のメモリバッファ15からECCデコーダ17へデータを転送するためのコマンドを発行する。このコマンドは、有効信号と共にコマンドデコーダDEC4に送られる。コマンドデコーダDEC4は、コマンドに基づいて第1のメモリバッファ15及びECCデコーダ17に制御信号を送る。この制御信号により、第1のメモリバッファ15及びECCデコーダ17間で、データ転送が行われる。ECCデコーダ17は、ECCパラメータテーブルTB1を用いて、フレーム単位で誤り訂正を行う。
【0042】
続いて、コマンドシーケンサSEQ1は、ECCデコーダ17から第2のメモリバッファ18へデータを転送するためのコマンドを発行する。このコマンドは、有効信号と共にコマンドデコーダDEC1に送られる。コマンドデコーダDEC1は、コマンドに基づいてECCデコーダ17及び第2のメモリバッファ18に制御信号を送る。この制御信号により、ECCデコーダ17及び第2のメモリバッファ18間で、データ転送が行われる。
【0043】
続いて、コマンドシーケンサSEQ2は、第2のメモリバッファ18からバスブリッジ19を介してシステムバス20へデータを転送するためのコマンドを発行する。このコマンドは、有効信号と共にコマンドデコーダDEC2に送られる。コマンドデコーダDEC2は、コマンドに基づいて第2のメモリバッファ18及びバスブリッジ19に制御信号を送る。この制御信号により、第2のメモリバッファ18及びシステムバス20間で、データ転送が行われる。
【0044】
ECCデコーダ17によって転送データ内の誤りが訂正された場合、若しくは転送データ内に誤りが検出されなかった場合には、データ転送が完了する(ステップS205)。
【0045】
一方、ECCデコーダ17により訂正可能ビット数を超えた誤りがフレーム内に発生した場合、読み出しエラーとなる(ステップS204)。この場合、読み出しエラーの原因となったフレームの転送をやり直すために、CPU22に対して割込みが要求される。
【0046】
図8は、1ページ目のフレームF4で誤り訂正が失敗し、読み出しエラーとなった場合を例示している。割込み要求の前に、コマンドシーケンサSEQ2は、すでに誤り訂正が正常に行われたフレームF0〜F3の転送動作(割込み応答前処理)を実行する。
【0047】
続いて、シーケンサ制御回路30は、コマンドシーケンサSEQ4を停止する(ステップS206)。すなわち、図5において、割込イネーブル信号INTEN及び割込要求信号ECC_REQがともにハイレベルになり、停止信号SEQ4_STOPがハイレベルになる。また、コマンドシーケンサSEQ1〜SEQ3用の停止信号は、非活性化(ローレベル)である。よって、コマンドシーケンサSEQ1〜SEQ3は、動作を継続する。
【0048】
続いて、割込回路21は、CPU22に対して割込みを要求する(ステップS207)。この割込み要求に応答して、CPU22は、割込み応答処理(ファームウェア処理)、すなわち、発生した割込み要因のチェックを行う(ステップS208)。そして、その要因が読み出しエラー割込みと確認されると、CPU22は、読み出し設定処理を行う(ステップS209)。さらに、CPU22は、読み出し設定処理とともに、ECCデコーダ17のECCパラメータテーブルを切り替える(ステップS210)。読み出し設定には、該当するやり直しページ位置、及びフレーム位置が含まれる。その他の設定内容は、最初に設定した内容で内部は動作しつづけているので変更する必要はない。具体的には、コマンドシーケンサSEQ1〜SEQ3の設定は、割込みが発生した場合でも再設定する必要はなく、コマンドシーケンサSEQ4のみ再設定される。
【0049】
続いて、CPU22は、データ転送制御部13に対してデータ転送を開始するように指示する(ステップS211)。この段階でデータ転送を再スタートすると、途中で読み出しエラーが発生しない限りは所定のページまで転送を行うことができる。そのため、CPU22による余計なファームウェア処理の介在がなくてすむ。この指示に応答して、データ転送制御部13は、NAND型フラッシュメモリ11からシステムバス20へのデータ転送処理を実行する(ステップS212)。その後のフローは、ステップS204及びS205と同じである。
【0050】
図8に示すように、コマンドシーケンサSEQ1及びSEQ2は、フレームF3のデータ転送が完了した後、フレームF4の転送待ち状態で待機している。コマンドシーケンサSEQ3は、先読みできる限りNAND型フラッシュメモリ11をアクセスし続けており、2ページ目のフレームF3を転送したところで、第1のメモリバッファ15が一杯になり、2ページ目のフレームF4の転送待ち状態で待機している。そのため、割込み応答処理を開始した時点においてもNAND型フラッシュメモリ11のアクセスを実行しているので、割込み応答(ファームウェア処理)とNAND型フラッシュメモリ11の先読み(ハードウェア処理)との並列処理でレイテンシの改善が出来ており、この場合において、“ファームウェア処理時間 < ハードウェア処理時間”の関係が成り立てば、読み出しエラーによる転送ペナルティはゼロとなる。
【0051】
なお、読み出しエラーに関する割込みが発生した場合に、コマンドシーケンサSEQ1〜SEQ4の動作を全て停止するように制御することも可能である。この場合、CPU22は、図5に示したレジスタ50にデータ“0”を書き込む。これにより、シーケンサ制御回路30は、コマンドシーケンサSEQ1及びSEQ3用の停止信号SEQ_STOP、コマンドシーケンサSEQ2用の停止信号SEQ2_STOP、及びコマンドシーケンサSEQ4用の停止信号SEQ4_STOPを全て活性化(ハイレベル)する。この場合は、データ転送制御部13は、図1の動作フローを実行する。このように、CPU22が設定するレジスタ50のデータに応じて、読み出しエラーに関する割り込みが発生した場合に、NAND型フラッシュメモリ11及びシステムバス20間のデータ転送を継続する第1のモードと、NAND型フラッシュメモリ11及びシステムバス20間のデータ転送を停止する第2のモードとを切り替えることができる。
【0052】
(効果)
以上詳述したように本実施形態では、メモリシステム10は、CPU22によるファームウェア処理とは別に、ハードウェア処理により、NAND型フラッシュメモリ11及びシステムバス20間のデータ転送を実行しかつコマンドシーケンサ群31を含むデータ転送制御部13と、読み出しエラーが発生した場合に、CPU22に対して割込みを要求する割込回路21とを備えている。そして、読み出しエラーに関する割込みが発生した場合に、第1のメモリバッファ15及びECCデコーダ17間のデータ転送を担うコマンドシーケンサSEQ4の動作のみを停止し、それ以外で読み出しに関係するコマンドシーケンサSEQ1〜SEQ3の動作を継続するようにしている。
【0053】
従って本実施形態によれば、CPU22による割込み応答処理の間もコマンドシーケンサSEQ1〜SEQ3がデータ転送を継続することができるため、NAND型フラッシュメモリ11からの読み出し動作においてレイテンシを短縮することができる。これにより、NAND型フラッシュメモリ11へのアクセス性能を向上させることができる。
【0054】
また、読み出しエラーに関する割込みが発生した場合でも、CPU22による割込み応答処理の後に、コマンドシーケンサSEQ1〜SEQ3の再設定を行う必要がない。これにより、CPU22によるファームウェア処理を低減することができるため、NAND型フラッシュメモリ11へのアクセス性能を向上させることができる。
【0055】
また、シーケンサ制御回路30が備えるレジスタ50にデータを設定することで、読み出しエラーに関する割り込みが発生した場合に、NAND型フラッシュメモリ11及びシステムバス20間のデータ転送を継続する第1のモードと、NAND型フラッシュメモリ11及びシステムバス20間のデータ転送を停止する第2のモードとを切り替えることができる。
【0056】
また、NAND型フラッシュメモリ11及びシステムバス20間のデータ転送をデータ転送制御部13が担っているため、CPU22の処理負荷を低減することができる。
【0057】
本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、構成要素を変形して具体化することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、1つの実施形態に開示される複数の構成要素の適宜な組み合わせ、若しくは異なる実施形態に開示される構成要素の適宜な組み合わせにより種々の発明を構成することができる。例えば、実施形態に開示される全構成要素から幾つかの構成要素が削除されても、発明が解決しようとする課題が解決でき、発明の効果が得られる場合には、これらの構成要素が削除された実施形態が発明として抽出されうる。
【符号の説明】
【0058】
SEQ…コマンドシーケンサ、DEC…コマンドデコーダ、TB…ECCパラメータテーブル、10…メモリシステム、11…NAND型フラッシュメモリ、12…コントローラ、13…データ転送制御部、14…フラッシュインタフェース、15…第1のメモリバッファ、16…ECCエンコーダ、17…ECCデコーダ、18…第2のメモリバッファ、19…バスブリッジ、20…システムバス、21…割込回路、22…CPU、23…制御バス、30…シーケンサ制御回路、31…コマンドシーケンサ群、32…コマンドデコーダ群、33…開始信号、34…停止信号、35…有効信号、36…フレーム番号、37…コマンド、38…有効信号、39…レディ信号、40…制御信号40、41…状態フラグ信号、50…レジスタ、51〜53…ANDゲート。

【特許請求の範囲】
【請求項1】
データを格納する不揮発性メモリと、
前記不揮発性メモリから転送されたデータを一時的に格納する第1のバッファと、
前記第1のバッファから転送されたデータの誤りを訂正する訂正回路と、
前記訂正回路から転送されたデータを一時的に格納する第2のバッファと、
前記第2のバッファから転送されたデータを受けるバスと、
前記不揮発性メモリ及び前記バス間のデータ転送のための複数のコマンドを発行するコマンドシーケンサ群と、
前記複数のコマンドをデコードし、データ転送を制御するための複数の制御信号を生成するコマンドデコーダ群と、
前記バスに接続されたCPUと、
誤り訂正不能による読み出しエラーが発生した場合に、前記CPUに割り込みを発生する割込回路と、
を具備し、
前記コマンドシーケンサ群は、前記読み出しエラーに関する割り込みが発生した場合でも、前記不揮発性メモリからのデータ転送を継続することを特徴とするメモリシステム。
【請求項2】
前記コマンドシーケンサ群は、前記不揮発性メモリから前記第1のバッファへのデータ転送を制御する第1のコマンドシーケンサと、前記第1のバッファから前記訂正回路へのデータ転送を制御する第2のコマンドシーケンサと、前記訂正回路から前記第2のバッファへのデータ転送を制御する第3のコマンドシーケンサと、前記第2のバッファから前記バスへのデータ転送を制御する第4のコマンドシーケンサとを含むことを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記割り込みが発生した場合に、前記第1のコマンドシーケンサ、前記第3のコマンドシーケンサ及び前記第4のコマンドシーケンサの動作を継続し、かつ前記第2のコマンドシーケンサシーケンサの動作を停止する制御回路をさらに具備することを特徴とする請求項2に記載のメモリシステム。
【請求項4】
前記制御回路は、前記割り込みが発生した場合に、前記不揮発性メモリからのデータ転送を継続する第1のモードと、前記不揮発性メモリからのデータ転送を停止する第2のモードとを有し、前記第1のモードと前記第2のモードとを切り替えるレジスタを含むことを特徴とする請求項3に記載のメモリシステム。
【請求項5】
メモリシステムのデータ転送方法であって、
前記メモリシステムは、
データを格納する不揮発性メモリと、
前記不揮発性メモリから転送されたデータを一時的に格納する第1のバッファと、
前記第1のバッファから転送されたデータの誤りを訂正する訂正回路と、
前記訂正回路から転送されたデータを一時的に格納する第2のバッファと、
前記第2のバッファから転送されたデータを受けるバスと、
を具備し、
前記データ転送方法は、
前記不揮発性メモリ及び前記バス間のデータ転送のための複数のコマンドを発行する工程と、
前記複数のコマンドをデコードし、データ転送を制御するための複数の制御信号を生成する工程と、
誤り訂正不能による読み出しエラーが発生した場合に、CPUに割り込みを発生する工程と、
前記読み出しエラーに関する割り込みが発生した場合でも、前記不揮発性メモリからのデータ転送を継続する工程と、
を具備することを特徴とするメモリシステム。
【請求項6】
前記複数のコマンドは、前記不揮発性メモリから前記第1のバッファへのデータ転送を制御する第1のコマンドと、前記第1のバッファから前記訂正回路へのデータ転送を制御する第2のコマンドと、前記訂正回路から前記第2のバッファへのデータ転送を制御する第3のコマンドと、前記第2のバッファから前記バスへのデータ転送を制御する第4のコマンドとを含むことを特徴とする請求項5に記載のメモリシステム。
【請求項7】
前記データ転送を継続する工程は、前記割り込みが発生した場合に、前記第1のコマンド、前記第3のコマンド及び前記第4のコマンドの発行を継続し、かつ前記第2のコマンドの発行を停止する工程を含むことを特徴とする請求項6に記載のメモリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−242884(P2011−242884A)
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2010−112470(P2010−112470)
【出願日】平成22年5月14日(2010.5.14)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】