(57)【要約】【課題】不揮発性メモリへアクセスする際のレイテンシを低減する。【解決手段】メモリシステム１は、データを格納する不揮発性メモリ２２と、不揮発性メモリ２２からのデータを一時的に格納するバッファ２０と、バッファ２０からのデータの誤りを訂正する訂正回路１９と、訂正回路１９からのデータを一時的に格納するバッファ１７と、バッファ１７からのデータを受けるバス１２と、モジュール間のデータ転送のためのコマンドを発行するコマンドシーケンス部１４と、コマンドをデコードし、データ転送を制御するための制御信号を生成するコマンドデコード部１５とを含む。【選択図】      図１
2010277352.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する不揮発性メモリと、
前記不揮発性メモリからのデータを一時的に格納する第１のバッファと、
前記第１のバッファからのデータの誤りを訂正する訂正回路と、
前記訂正回路からのデータを一時的に格納する第２のバッファと、
前記第２のバッファからのデータを受けるバスと、
モジュール間のデータ転送のためのコマンドを発行するコマンドシーケンス部と、
前記コマンドをデコードし、データ転送を制御するための制御信号を生成するコマンドデコード部と、
を具備することを特徴とするメモリシステム。
【請求項２】
前記コマンドシーケンス部は、モジュール間のデータ転送毎に設けられた複数のコマンドシーケンサを含み、
前記コマンドデコード部は、前記複数のコマンドシーケンサに対応して設けられた複数のコマンドデコーダを含むことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記訂正回路は、特定のデータサイズからなるフレーム毎に誤りを訂正し、
前記コマンドシーケンス部は、フレーム単位でコマンドを発行することを特徴とする請求項１又は２に記載のメモリシステム。
【請求項４】
前記コマンドデコード部は、コマンドに対応したデータ転送が終了した場合にレディ信号を活性化し、
前記コマンドシーケンス部は、前記レディ信号が活性化された場合に、次のコマンドを発行することを特徴とする請求項１乃至３のいずれかに記載のメモリシステム。
【請求項５】
前記バスに接続されたＣＰＵ（Central Processing Unit）と、
前記訂正回路により訂正不能と判断された場合に、割込みを発生して前記ＣＰＵに通知する割込回路をさらに具備することを特徴とする請求項１乃至４のいずれかに記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに係り、例えばデータ転送を制御するシーケンサを備えたメモリシステムに関する。
【背景技術】
【０００２】
不揮発性半導体メモリとしては、データの書き込み及び消去を電気的に行うＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）の一種であるＮＡＮＤ型フラッシュメモリが知られている。
【０００３】
このＮＡＮＤ型フラッシュメモリを備えたメモリシステムは、１つ（又は複数）のシステムバスに複数のモジュールが接続され、そのモジュール間のデータ転送の切り替えをＣＰＵ（Central Processing Unit）によるファームウェア（ＦＷ）処理が介在しながら行う。そのため、１つのモジュール間のデータ転送が完了する毎に、転送動作の完了を通知する割込みが発生し、ＦＷ処理による次の動作設定を行った後で次の転送動作を行うことができる。
【０００４】
従って、ＮＡＮＤ型フラッシュメモリから読み出したデータをエラー訂正するエラー訂正回路や、複数のメモリバッファなどが存在すると、モジュール間のデータ転送を切り替える処理が増える。このため、非常に多くの割込みがモジュール間の転送が完了する毎に発生し、言い換えればＦＷ処理が介在している時間が非常に長くなる。これにより、データ転送のレイテンシが非常に悪くなってしまう。
【０００５】
また、この種の関連技術として、ＣＰＵバスや汎用バスへ直接接続できるストレージ用の半導体記憶装置が開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１４１８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、不揮発性メモリへアクセスする際のレイテンシを低減することが可能なメモリシステムを提供する。
【課題を解決するための手段】
【０００８】
本発明の一態様に係るメモリシステムは、データを格納する不揮発性メモリと、前記不揮発性メモリからのデータを一時的に格納する第１のバッファと、前記第１のバッファからのデータの誤りを訂正する訂正回路と、前記訂正回路からのデータを一時的に格納する第２のバッファと、前記第２のバッファからのデータを受けるバスと、モジュール間のデータ転送のためのコマンドを発行するコマンドシーケンス部と、前記コマンドをデコードし、データ転送を制御するための制御信号を生成するコマンドデコード部とを具備する。
【発明の効果】
【０００９】
本発明によれば、不揮発性メモリへアクセスする際のレイテンシを低減することが可能なメモリシステムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態に係るメモリシステム１の構成を示すブロック図。
【図２】コマンドシーケンス部１４の構成を示すブロック図。
【図３】コマンドデコード部１５の構成を示すブロック図。
【図４】コマンドシーケンサＳＥＱとモジュール間のデータ転送との関係を説明する概略図。
【図５】コマンドシーケンサＳＥＱ４の動作を示すフローチャート。
【図６】メモリバッファ１７、誤り訂正回路１９及びメモリバッファ２０のデータの様子を説明する概略図。
【図７】コマンドシーケンサＳＥＱ５の動作を示すフローチャート。
【図８】コマンドシーケンサＳＥＱ１の動作を示すフローチャート。
【図９】本発明の第２の実施形態に係るメモリシステム１の構成を示すブロック図。
【図１０】本発明の第３の実施形態に係るコマンドシーケンサ群の構成を示す概略図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１２】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るメモリシステム１の構成を示すブロック図である。メモリシステム１は、中央演算処理装置（ＣＰＵ）１０、ＲＯＭ（Read Only Memory）１１、システムバス１２、レジスタ１３、コマンドシーケンス部１４、コマンドデコード部１５、バスブリッジ１６、第１のメモリバッファ１７、第１の誤り訂正回路（ＥＣＣ：Error Checking and Correcting）１８、第２の誤り訂正回路（ＥＣＣ）１９、第２のメモリバッファ２０、フラッシュインタフェース２１、及び不揮発性メモリであるフラッシュメモリ２２を備えている。
【００１３】
ＣＰＵ１０は、ＲＯＭ１１に格納されたファームウェア（ＦＷ）を用いて、メモリシステム１全体の動作を統括的に制御する。ＣＰＵ１０は、システムバス１２に接続されており、システムバス１２を経由して各種モジュールとの間でデータの受け渡しを行う。モジュールとは、所望の動作及び機能を実現する機能単位であり、本実施形態では、図１に示した各機能ブロックを指している。
【００１４】
フラッシュメモリ２２は、例えばＮＡＮＤ型フラッシュメモリからなる。フラッシュメモリ２２は、データ消去の単位である複数のブロックを備えている。各ブロックは、複数のフラッシュメモリセルがマトリクス状に配列されて構成されており、また、複数ビットからなるページを備えている。フラッシュメモリ２２は、このページ単位で、データの読み出し及び書き込みが行われる。
【００１５】
フラッシュインタフェース２１は、フラッシュメモリ２２との間のインタフェース処理を実行し、具体的には、フラッシュメモリ２２に対して、データの消去、書き込み、及び読み出し処理を実行する。このために、フラッシュインタフェース２１は、フラッシュメモリ２２の列を選択するカラムデコーダ、フラッシュメモリ２２の行を選択するロウデコーダ、メモリセルからデータを読み出すためのセンスアンプ回路、読み出し及び書き込みデータを保持するデータキャッシュなどを含む。
【００１６】
コマンドシーケンス部１４は、モジュール間のデータ転送を命令するためのコマンドを発行する。また、コマンドシーケンス部１４は、レジスタ１３に設定された動作モードに応じて、コマンドを発行する。レジスタ１３への動作モードの設定は、ＣＰＵ１０によって実行される。
【００１７】
コマンドデコード部１５は、コマンドシーケンス部１４から送られるコマンドをデコードし、このコマンドに応じてモジュール間のデータ転送を制御するための制御信号を生成する。
【００１８】
第１の誤り訂正回路１８は、書き込みデータを受け、この書き込みデータに対してパリティコードを生成する。また、第１の誤り訂正回路１８は、所定のデータサイズであるフレームを計算単位としてパリティコードを生成する。このパリティコードは、書き込みデータに付加され、書き込みデータと共に転送される。第２の誤り訂正回路１９は、読み出しデータを受け、この読み出しデータに付加されたパリティコードを用いて、読み出しデータの誤りを訂正する。
【００１９】
メモリバッファ１７は、パリティコードを付加する直前の書き込みデータ、或いは誤り訂正回路１９で訂正を終えた読み出しデータを一時的に格納する。メモリバッファ２０は、フラッシュメモリ２２からの読み出しデータ、或いはフラッシュメモリ２２に書き込む直前の、誤り訂正回路１８によってパリティコードが付加された書き込みデータを一時的に格納する。メモリバッファ１７及び２０の各々は、例えばＲＡＭ（Random Access Memory）から構成される。バスブリッジ１６は、メモリバッファ１７とシステムバス１２とのインタフェース処理を実行する。
【００２０】
割込回路２３は、ＣＰＵ１０に対して割込みを発生し、この割込みにおいて、データ転送が異常終了したことをＣＰＵ１０に通知する。具体的には、割込回路２３は、誤り訂正回路１９によって誤り訂正不能と判断された場合に、この旨、及び誤り訂正不能となったフレーム番号を通知する。
【００２１】
図２は、コマンドシーケンス部１４の構成を示すブロック図である。コマンドシーケンス部１４は、複数のコマンドシーケンサＳＥＱからなるコマンドシーケンサ群、及びこのコマンドシーケンサ群を統括的に制御する制御回路１４Ａを備えている。図２では、一例として、６個のコマンドシーケンサＳＥＱ１〜ＳＥＱ６を示している。
【００２２】
コマンドシーケンサ群は、モジュール間のデータ転送に対応する数のコマンドシーケンサＳＥＱを備えている。コマンドシーケンサ群は、レジスタ１３に設定された動作モードに基づいて、モジュール間を制御する特定のコマンド列を発行する仕組みになっており、このコマンド列はそれぞれのモジュール間毎に独立して発生する。そして、それぞれのモジュールが並列にコマンド列に対応した動作を実行する。
【００２３】
コマンドシーケンサＳＥＱ１は、これに対応するモジュール間のデータ転送処理に必要なコマンド列を発行する。すなわち、コマンドシーケンサＳＥＱ１は、コマンドデコード部１５からレディ信号１を受ける毎に、順次、コマンド１をコマンドデコード部１５へ送る。レディ信号は、コマンドに対して一連の動作が完了したことを示すものであり、この一連の動作が完了した場合に活性化される。さらに、コマンドシーケンサＳＥＱ１は、発行したコマンド１と共に、このコマンド１が有効であるか否かを示す有効信号１を生成する。この有効信号１は、コマンドデコード部１５及び制御回路１４Ａにそれぞれ送られる。他のコマンドシーケンサＳＥＱ２〜ＳＥＱ６についても、基本的な構成はコマンドシーケンサＳＥＱ１と同じである。
【００２４】
制御回路１４Ａは、レジスタ１３から送られるレジスタ情報（動作モード）に基づいて、どのコマンドシーケンサＳＥＱを動作させるかを決定する。この制御のために、制御回路１４Ａは、コマンドシーケンサＳＥＱの動作を開始するための開始信号と、コマンドシーケンサＳＥＱの動作を停止するための停止信号とを生成し、これら開始信号及び停止信号をコマンドシーケンサＳＥＱに送る。また、制御回路１４Ａは、開始信号及び停止信号を送るタイミングを、各コマンドシーケンサＳＥＱから受けた有効信号、及び一部のコマンドシーケンサ、例えばＳＥＱ５、ＳＥＱ６から受けたフレーム番号（後述）に基づいて決定する。
【００２５】
図３は、コマンドデコード部１５の構成を示すブロック図である。コマンドデコード部１５は、複数のコマンドシーケンサＳＥＱにそれぞれ対応する複数のコマンドデコーダＤＥＣからなるコマンドデコーダ群、及びこのコマンドデコーダ群によって生成される制御信号を調停する調停回路１５Ａを備えている。図３では、一例として、６個のコマンドシーケンサＳＥＱ１〜ＳＥＱ６にそれぞれ対応する６個のコマンドデコーダＤＥＣ１〜ＤＥＣ６を示している。
【００２６】
コマンドコーダＤＥＣ１は、コマンドシーケンサＳＥＱ１からコマンド１及び有効信号１を受け、このコマンド１を解釈する。そして、有効信号１が活性化されている場合に、コマンドコーダＤＥＣ１は、このコマンド１に応じて、これに対応するモジュール間の書き込み制御、及び読み出し制御を実行する。具体的には、コマンドデコーダＤＥＣ１は、コマンドシーケンサＳＥＱ１からコマンド１が発行されると、コマンド１に該当するアドレスからデータを読み出すためのアドレス信号及び読み出し信号（これらをあわせてＲＤ系信号１という）を生成し、このＲＤ系信号１をデータの送り元（ソース側）のモジュールに送る。また、コマンドデコーダＤＥＣ１は、読み出してきたデータを送り先（デスティネーション側）のモジュールに書き込むためのアドレス信号及び書き込み信号（これらをあわせてＷＲ系信号１という）を生成し、このＷＲ系信号１をデスティネーション側のモジュールに送る。
【００２７】
さらに、コマンドデコーダＤＥＣ１は、モジュールのフラグ制御を行う。各モジュールは、フラグを格納する領域を有しており、このフラグによってモジュールの状態が確認できるようになっている。具体的には、データ転送が終了すると、コマンドデコーダＤＥＣ１は、ソース側のモジュールのフラグをクリア（空き状態）し、デスティネーション側のモジュールのフラグをセット（データが埋まっている状態）する制御を行う。なお、このフラグ制御に必要な制御信号も、ＲＤ系信号１及びＷＲ系信号１に含まれる。そして、この一連の動作が完了したところで、コマンドシーケンサＳＥＱ１にレディ信号を返す。他のコマンドデコーダＤＥＣ２〜ＤＥＣ６についても、基本的な構成はコマンドデコーダＤＥＣ１と同じである。
【００２８】
調停回路１５Ａは、各コマンドデコーダＤＥＣから送られるＲＤ系信号及びＷＲ系信号を受け、これらＲＤ系信号及びＷＲ系信号を調停する。そして、調停回路１５Ａは、調停したＲＤ系信号及びＷＲ系信号をこれに対応するモジュールに送る。この調停回路１５Ａの動作によって、ソース側のモジュールでは読み出し動作が実行され、デスティネーション側のモジュールでは書き込み動作が実行される。
【００２９】
（動作）
次に、このように構成されたメモリシステム１の動作について説明する。ここでは、一例として、フラッシュメモリ２２からデータを読み出し、この読み出しデータがシステムバス１２に転送されるまでの動作を説明する。まず、ＣＰＵ１０は、レジスタ１３に動作モードを設定する。これにより、コマンドシーケンス部１４がこの動作モードを開始する。
【００３０】
図４は、コマンドシーケンサＳＥＱとモジュール間のデータ転送との関係を説明する概略図である。読み出し時に動作するコマンドシーケンサは、ＳＥＱ１、ＳＥＱ４、ＳＥＱ５及びＳＥＱ６である。データの流れる方向にコマンドシーケンサの動きを表現すると、ＳＥＱ４→ＳＥＱ５→ＳＥＱ６→ＳＥＱ１の順になる。なお、ここでは説明を省略するが、ＳＥＱ２及びＳＥＱ３は、書き込み時に動作するコマンドシーケンサである。
【００３１】
コマンドシーケンサＳＥＱ４は、フラッシュインタフェース２１とメモリバッファ２０との間のデータ転送に関して、コマンド列を発行する。コマンドシーケンサＳＥＱ５は、メモリバッファ２０と誤り訂正回路１９との間のデータ転送に関して、コマンド列を発行する。コマンドシーケンサＳＥＱ６は、誤り訂正回路１９とメモリバッファ１７との間のデータ転送に関して、コマンド列を発行する。コマンドシーケンサＳＥＱ１は、メモリバッファ１７とシステムバス１２との間のデータ転送に関して、コマンド列を発行する。コマンドデコーダＤＥＣ１、ＤＥＣ４、ＤＥＣ５及びＤＥＣ６はそれぞれ、コマンドシーケンサから受けたコマンドをデコードして、データ転送処理に移る。
【００３２】
フラッシュメモリ２２からのデータの読み出し処理は、フラッシュインタフェース２１によって実行される。この処理には、コマンドシーケンサは関わっていない。
【００３３】
本実施形態では、パリティコードの計算単位であるフレームは、例えば３ページに跨って存在している。前述したように、１ページは、フラッシュメモリ２２の読み出し及び書き込み単位であり、例えば８ｋバイトである。スタート直後は、データが揃っていないので、実行状態としては、データの待ち状態となる。まず、コマンドシーケンサＳＥＱ４は、３回のコマンドにわけてコマンドを発行し、フラッシュインタフェース２１からメモリバッファ２０へデータを転送する。
【００３４】
図５は、コマンドシーケンサＳＥＱ４の動作を示すフローチャートである。３ページは、下位（Lower）ページ、中位（Middle）ページ、及び上位（Upper）ページからなるものとする。コマンドシーケンサＳＥＱ４は、下位ページ転送コマンドを発行する（ステップＳ１００）。これに対してコマンドデコーダＤＥＣ４からレディ信号４を受けると（ステップＳ１０１）、続いて、コマンドシーケンサＳＥＱ４は、中位ページ転送コマンドを発行する（ステップＳ１０２）。これに対してコマンドデコーダＤＥＣ４からレディ信号４を受けると（ステップＳ１０３）、続いて、コマンドシーケンサＳＥＱ４は、上位ページ転送コマンドを発行する（ステップＳ１０４）。これに対してコマンドデコーダＤＥＣ４からレディ信号４を受けると（ステップＳ１０１）、コマンドシーケンサＳＥＱ４のデータ転送処理は終了する。
【００３５】
図６は、メモリバッファ１７、誤り訂正回路１９及びメモリバッファ２０のデータの様子を説明する概略図である。コマンドデコーダＤＥＣ４は、コマンドシーケンサＳＥＱ４から下位ページ転送コマンドを受けると、これに対応するＷＲ系信号を生成する。コマンドデコーダＤＥＣ４からのＷＲ系信号は、調停回路１５Ａによって調停された後、メモリバッファ２０に送られる。前述したコマンドシーケンサＳＥＱ４の一連の動作によって、メモリバッファ２０には、３ページ分のデータ（下位ページ、中位ページ及び上位ページ）が格納される。すなわち、メモリバッファ２０の記憶容量は、２４ｋバイトである。図６では、３ページは、メモリバッファ２０内に３行に渡って横方向に配列されている。一定のデータがメモリバッファ２０に格納されると、データが揃ったことを示す有効フラグがコマンドデコーダＤＥＣ４によってセットされ、メモリバッファ２０から誤り訂正回路１９へのデータ転送が可能となる。
【００３６】
続いて、コマンドシーケンサＳＥＱ５は、フレーム毎にコマンドを発行し、メモリバッファ２０から誤り訂正回路１９へデータを転送する。図７は、コマンドシーケンサＳＥＱ５の動作を示すフローチャートである。
【００３７】
メモリバッファ２０から誤り訂正回路１９へのデータ転送において、このときのデータの転送量は、誤り訂正回路の処理サイズと同じになり、コマンドの発行もそのサイズ毎となる。１コマンドのデータ転送量を誤り訂正回路の処理単位（１フレームと表現）で定義しているのは、途中で発生した訂正不能による割込みなどの中断から再開処理に移るのに最適であるためである。１フレームは、例えば１．５ｋバイトである。よって、３ページ分のデータは、１６フレーム（Ｆ０〜Ｆ１５）に分けて転送されることになる。ここで、シーケンサ（例えば図２のＳＥＱ５、ＳＥＱ６）から制御回路１４Ａに出力されるフレーム番号は、フレームＦｉ（ｉ＝０〜１５）の番号ｉに対応する。
【００３８】
コマンドシーケンサＳＥＱ５は、フレームＦ０転送コマンドを発行する（ステップＳ２００）。これに対してコマンドデコーダＤＥＣ５からレディ信号５を受けると（ステップＳ２０１）、続いて、コマンドシーケンサＳＥＱ５は、フレームＦ１転送コマンドを発行する（ステップＳ２０２）。同様の処理を、１６フレーム（Ｆ０〜Ｆ１５）分繰り返す。フレームＦ１５に対応するレディ信号５を受けると（ステップＳ２０５）、コマンドシーケンサＳＥＱ５のデータ転送処理は終了する。
【００３９】
図６において、コマンドデコード部１５内のコマンドデコーダＤＥＣ５（図３を参照）は、コマンドシーケンサＳＥＱ５からフレームＦ０転送コマンドを受けると、これに対応するＲＤ系信号及びＷＲ系信号を生成する。ＲＤ系信号及びＷＲ系信号はそれぞれ、調停回路１５Ａによって調停された後、メモリバッファ２０及び誤り訂正回路１９に送られる。その後、コマンドデコーダＤＥＣ５は、フレームＦ０の有効ビットをクリアする。
【００４０】
誤り訂正回路１９は、メモリバッファ２０からフレームＦ０を受ける。そして、誤り訂正回路１９は、フレームＦ０をこれに含まれるパリティコードを用いて訂正する。この時、誤り訂正が不能であった場合、誤り訂正回路１９は、誤り訂正不能である旨の信号を割込回路２３に送る。これを受けて、割込回路２３は、ＣＰＵ１０に対して割込みを発生して通知する。さらに、割込回路２３は、この割込みに際して、誤り訂正不能となったフレーム番号を通知する。
【００４１】
誤り訂正回路１９によって、フレームＦ０に誤りが存在しないかフレームＦ０の誤り訂正が正常に行われた場合、すなわち、誤り訂正不能による割込みが発生しなければ、コマンドデコーダＤＥＣ５は、誤り訂正回路１９に対して、データの準備ができたことを示す有効フラグをセットする。
【００４２】
同様に、フレームＦ１〜Ｆ１５についても、データ転送及び誤り訂正が行われる。メモリバッファ２０には、この段階で１６フレーム分のデータが既に格納されているので、途中で誤り訂正不能による割込みが発生しない限りには、連続して１６フレーム分のデータ転送が出来ることになる。
【００４３】
続いて、コマンドシーケンサＳＥＱ６の動作について説明する。コマンドシーケンサＳＥＱ５によるデータ転送に並行して、コマンドシーケンサＳＥＱ６は、フレーム毎にコマンドを発行し、誤り訂正回路１９からメモリバッファ１７へデータを転送する。コマンドシーケンサＳＥＱ６の動作は、コマンドで示されるソース及びデスティネーションが変わる以外は、図７のコマンドシーケンサＳＥＱ５と同じである。
【００４４】
図６において、コマンドデコーダＤＥＣ６は、コマンドシーケンサＳＥＱ６からフレームＦ０転送コマンドを受けると、これに対応するＲＤ系信号及びＷＲ系信号を生成する。ＲＤ系信号及びＷＲ系信号はそれぞれ、調停回路１５Ａによって調停された後、誤り訂正回路１９及びメモリバッファ１７に送られる。これにより、フレームＦ０がメモリバッファ１７のＲＡＭ１に転送される。その後、コマンドデコーダＤＥＣ６は、誤り訂正回路１９の有効ビットをクリアする。
【００４５】
続いて、フレームＦ０と同様に、フレームＦ１に対して誤り訂正が行われる。そして、コマンドデコーダＤＥＣ６は、フレームＦ１をメモリバッファ１７のＲＡＭ１に転送する。例えばメモリバッファ１７は、２個のＲＡＭ１及びＲＡＭ２から構成されており、ＲＡＭ１及びＲＡＭ２の各々は、２フレーム分のデータを格納する。すなわち、ＲＡＭ１及びＲＡＭ２の各々は、その容量が３ｋバイトである。ＲＡＭ１に２フレーム分のデータが転送されると、コマンドデコーダＤＥＣ６は、ＲＡＭ１の有効フラグをセットする。
【００４６】
フレームＦ０及びＦ１と同様に、フレームＦ２及びＦ３に対して、誤り訂正及びデータ転送が行われる。そして、フレームＦ２及びＦ３は、メモリバッファ１７のＲＡＭ２に転送される。同様に、フレームＦ４〜Ｆ１５についても、誤り訂正が行われた後、ＲＡＭ１及びＲＡＭ２に交互にデータが転送される。
【００４７】
続いて、コマンドシーケンサＳＥＱ１の動作について説明する。コマンドシーケンサＳＥＱ６によるデータ転送に並行して、コマンドシーケンサＳＥＱ１は、ＲＡＭ毎にコマンドを発行し、メモリバッファ１７からシステムバス１２へデータを転送する。図８は、コマンドシーケンサＳＥＱ１の動作を示すフローチャートである。
【００４８】
コマンドシーケンサＳＥＱ１は、ＲＡＭ１転送コマンドを発行する（ステップＳ３００）。これに対してコマンドデコーダＤＥＣ１からレディ信号１を受けると（ステップＳ３０１）、続いて、コマンドシーケンサＳＥＱ１は、ＲＡＭ２転送コマンドを発行する（ステップＳ３０２）。そして、コマンドシーケンサＳＥＱ１は、コマンドデコーダＤＥＣ１からレディ信号１を受ける（ステップＳ３０３）。この時点で、２フレーム分のデータがシステムバス１２へ転送されたことになる。
【００４９】
このステップＳ３００〜Ｓ３０３の処理を８回繰り返すことで（ステップＳ３０４）、１６フレーム（Ｆ０〜Ｆ１５）分のデータをメモリバッファ１７からシステムバス１２に転送することができる。
【００５０】
図６において、コマンドデコーダＤＥＣ１は、コマンドシーケンサＳＥＱ１からＲＡＭ１転送コマンドを受けると、これに対応するＲＤ系信号を生成する。ＲＤ系信号は、調停回路１５Ａによって調停された後、メモリバッファ１７に送られる。これにより、メモリバッファ１７のＲＡＭ１に格納されている２フレームがシステムバス１２に転送される。その後、コマンドデコーダＤＥＣ１は、ＲＡＭ１の有効ビットをクリアする。メモリバッファ１７のＲＡＭ２の転送動作についても、ＲＡＭ１と同じである。この転送動作を繰り返すことで、１６フレーム（Ｆ０〜Ｆ１５）分のデータがメモリバッファ１７からシステムバス１２に転送される。
【００５１】
最後に、全てのデータ転送が正常に終了すると、フラッシュインタフェース２１は、コマンドシーケンス部１４にこの旨を通知する。これを受けて、制御回路１４Ａは、ＣＰＵ１０に割込みを発生し、データ転送が正常終了したことを通知する。
【００５２】
以上詳述したように第１の実施形態では、ＣＰＵ１０とは別に、フラッシュメモリ２２から誤り訂正回路を経由してシステムバス１２までのデータ転送制御、或いはこの逆の経路のデータ転送制御を、コマンドシーケンス部１４及びコマンドデコード部１５を新たに設けて実行するようにしている。コマンドシーケンス部１４は、モジュール間のデータ転送に対応する数のコマンドシーケンサからなるコマンドシーケンサ群を備えており、各コマンドシーケンサは、これに対応するデータ転送を命令するコマンド列を発行する。コマンドデコード部１５は、コマンドシーケンサ群に対応した数のコマンドデコーダ群を備えており、各コマンドデコーダは、コマンドシーケンサから発行されるコマンドに応じて、これに対応するモジュール間の書き込み及び読み出しを制御する制御信号を生成する。
【００５３】
従って第１の実施形態によれば、システムを起動してからの間、誤り訂正回路１９による誤り訂正不能である割込みが発生しない限りには、ＣＰＵ１０によるＦＷ処理は一切なしでフラッシュメモリ２２からシステムバス１２に連続してデータを転送することができる。これにより、ＣＰＵ１０の処理負荷を低減できると共に、従来のＦＷ処理によるレイテンシ悪化が著しく改善できることになる。
【００５４】
また、誤り訂正回路１９によって誤り訂正不能であると判定された場合に、割込回路２３は、割込みを発生し、データ転送が異常終了したこと、及び訂正不能であるフレーム番号をＣＰＵ１０に通知するようにしている。これにより、ＣＰＵ１０は、異常終了を即座に知ることができ、その後のＦＷ処理を適切に行うことが可能となる。
【００５５】
また、データ転送の単位を、誤り訂正回路の処理単位であるフレームと同じに設定している。これにより、異常終了により一時的にデータ転送処理が中断した場合でも、誤り訂正不能であるフレームの次のフレームから転送処理を再開することが可能となる。この結果、異常終了以前の誤り訂正処理及びデータ転送処理が無駄になるのを防ぐことができる。
【００５６】
また、各モジュールの状態管理を有効フラグを用いて行うようにしている。これにより、あるモジュールがソース側であるかデスティネーション側であるかが容易に判断できるため、データ転送処理を正確に行うことができる。
【００５７】
なお、第１の実施形態では、１６フレーム分のデータを転送する場合について説明しているが、それ以上のフレーム数を転送することもコマンドシーケンス群の設定内容によって可能である。
【００５８】
（第２の実施形態）
第１の実施形態で説明したように、フラッシュメモリ２２から読み出してきたデータをメモリバッファ２０に格納し、誤り訂正回路１９を使って１６フレーム分の訂正処理を行う。ところが、１６フレーム分の訂正処理は非常に長い時間を要する。このため、１６フレーム以上のデータを読み出す場合、もしメモリバッファ２０が１個ならばフラッシュメモリ２２の読み出し動作は非常に長い時間待たされることになり、レイテンシを著しく悪化させることになる。そこで、第２の実施形態では、フラッシュメモリ２２から読み出してきたデータを格納するメモリバッファを２個設ける。すなわち、メモリバッファ２０をバンク構造にすることで、フラッシュメモリ２２からの読み出し処理と、誤り訂正回路１９による訂正処理とを並列動作させるようにしている。
【００５９】
図９は、本発明の第２の実施形態に係るメモリシステム１の構成を示すブロック図である。メモリバッファ２０は、バンク構造を有しており、すなわち、２個のメモリバッファ２０Ａ及び２０Ｂから構成されている。メモリバッファ２０Ａ及び２０Ｂの各々は、３ページ分のデータを格納し、すなわち、２４ｋバイトの記憶容量を有している。その他の構成は、第１の実施形態と同じである。
【００６０】
コマンドシーケンサＳＥＱ４は、フラッシュメモリ２２から読み出されたデータを、３ページ単位でメモリバッファ２０Ａ及び２０Ｂに交互に転送する。デスティネーション側のメモリバッファの選択は、これに設けられた有効フラグを用いて行われる。
【００６１】
コマンドシーケンサＳＥＱ５は、メモリバッファ２０から誤り訂正回路１９にデータを転送する場合、１６フレーム毎に、メモリバッファ２０Ａ及び２０Ｂを切り替えて使用する。その他のデータ転送動作は、第１の実施形態と同じである。
【００６２】
以上詳述したように第２の実施形態によれば、メモリバッファ２０をバンク構造にすることで、フラッシュメモリ２２からの読み出し処理と、誤り訂正回路１９による訂正処理とを並列動作させることができる。これにより、レイテンシを改善することができる。
【００６３】
なお、フラッシュメモリ２２からのメモリバッファへの転送時間と、誤り訂正回路１９による訂正処理時間とが概略同じであれば、メモリバッファ２０は２個で十分であるが、この割合が著しく異なる、例えば訂正処理時間が著しく長いようであれば、メモリバッファの数をさらに増やすことで、レイテンシ悪化を防ぐことができる。
【００６４】
また、第２の実施形態では、メモリシステム１がメモリバッファ２０を２個以上備えている場合を説明したが、これは、１ポートのメモリバッファを使うことが前提となっている。しかし、２ポートを有するメモリバッファを使用することで、このメモリバッファは読み出しと書き込みとが同時に行なえるようになる。このような２ポートを有するメモリバッファを使用すれば、メモリバッファは１個のままであってもよい。
【００６５】
（第３の実施形態）
第１の実施形態では、コマンドシーケンサ群は、動作モードに応じて、特定のコマンド列を発行している。これに変えて、第３の実施形態では、コマンドシーケンサ群にコマンドテーブル方式（命令ＲＡＭなど）を採用することで、コマンドテーブルにコマンドをプログラムすることができるようにする。
【００６６】
図１０は、本発明の第３の実施形態に係るコマンドシーケンサ群の構成を示す概略図である。コマンドシーケンサ群は、第１の実施形態と同様に、モジュール間のデータ転送に対応する数のコマンドシーケンサＳＥＱを備えている。
【００６７】
各コマンドシーケンサＳＥＱは、コマンドテーブルを備えている。このコマンドテーブルに含まれるコマンドは、自由に書き換えが可能である。すなわち、第３の実施形態では、各コマンドシーケンサＳＥＱは、ＲＡＭなどのメモリによって構成される。図１０には、一例として、コマンドシーケンサＳＥＱ１及びＳＥＱ５の詳細を示している。
【００６８】
図１０に示したコマンドシーケンサＳＥＱ１において、例えば“コマンド（MB1_F0→BUS）”は、第１のメモリバッファ１７（MB1）からシステムバス１２（BUS）へフレームＦ０を転送する命令を示すコマンドである。コマンドシーケンサＳＥＱ１に含まれるコマンドテーブルを順に実行することで、メモリバッファ１７からシステムバス１２へ、１６フレーム（Ｆ０〜Ｆ１５）を転送することができる。
【００６９】
図１０に示したコマンドシーケンサＳＥＱ５において、例えば“コマンド（MB2_F0→ECC2）”は、第２のメモリバッファ２０（MB2）から第２の誤り訂正回路１９（ECC2）へフレームＦ０を転送する命令を示すコマンドである。コマンドシーケンサＳＥＱ５に含まれるコマンドテーブルを順に実行することで、メモリバッファ２０から誤り訂正回路１９へ、１６フレーム（Ｆ０〜Ｆ１５）を転送することができる。
【００７０】
以上詳述したように第３の実施形態によれば、ＣＰＵ１０の処理負荷を低減できることに加えて、コマンドテーブルに格納されたコマンドの一部を書き換えることが可能となる。これにより、データの転送順を柔軟に切り換えることができ、多種多様のデータ転送やフラッシュメモリへのアクセスに対応できるようになる。
【００７１】
本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を構成することができる。例えば、実施形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施形態の構成要素を適宜組み合わせてもよい。
【符号の説明】
【００７２】
１…メモリシステム、１０…ＣＰＵ、１１…ＲＯＭ、１２…システムバス、１３…レジスタ、１４…コマンドシーケンス部、１４Ａ…制御回路、ＳＥＱ…コマンドシーケンサ、１５…コマンドデコード部、１５Ａ…調停回路、ＤＥＣ…コマンドデコーダ、１６…バスブリッジ、１７，２０…メモリバッファ、１８，１９…誤り訂正回路、２１…フラッシュインタフェース、２２…フラッシュメモリ、２３…割込回路。
【図１】
2010277352.tif 000003
【図２】
2010277352.tif 000004
【図３】
2010277352.tif 000005
【図４】
2010277352.tif 000006
【図５】
2010277352.tif 000007
【図６】
2010277352.tif 000008
【図７】
2010277352.tif 000009
【図８】
2010277352.tif 000010
【図９】
2010277352.tif 000011
【図１０】
2010277352.tif 000012