(57)【要約】【課題】  メモリコントローラ独自のコマンドを実行させる際に、システムコントローラのプログラムを書き換える必要のないシステムコントローラ、フラッシュメモリシステムおよびフラッシュメモリモジュールの制御方法を提供する。【解決手段】  フラッシュメモリシステム１は、ホストシステム４に接続されたシステムコントローラ３と、複数のフラッシュメモリ２０２とそれを制御するメモリコントローラ２０３とを有している。ホストシステム４が、システムコントローラ３に例えばレジスタ値１７１を入力すると、システムコントローラ３はスルーモードに移行する。移行後、システムコントローラ３は、ホストシステム４、メモリコントローラ２０３間のレジスタ値および実データを転送する。メモリコントローラ２０３は、転送されたレジスタ値に基づいて制御されるので、独自コマンドによる処理を行うことが可能である。【選択図】図１
2008027326.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリにアクセスするメモリコントローラとの間で情報を送受するとともに、ホストシステムとの間で情報を送受するシステムコントローラであって、
前記ホストシステムから与えられる動作を指示する情報である第１動作指示情報を解読する解読手段と、
前記解読手段の解読結果に基づいて、前記メモリコントローラに対して動作を指示する情報である第２動作指示情報を生成し、前記第２動作指示情報を前記メモリコントローラに送る第１の指示情報供給手段と、
前記ホストシステムから与えられる前記第１動作指示情報を前記メモリコントローラに転送する第２の指示情報供給手段と、
前記第１の指示情報供給手段と前記第２の指示情報供給手段とを択一的に動作させる制御手段とを備え、
前記解読手段が、前記第１動作指示情報が前記第２の指示情報供給手段の動作開始を指示する情報であると判別したときに、前記制御手段が前記第２の指示情報供給手段の動作を開始させると共に前記第１の指示情報供給手段の動作を停止させるスルーモードに移行し、
前記解読手段が、前記第１動作指示情報が前記第２の指示情報供給手段の動作停止を指示する情報であると判別したときに、前記制御手段が前記第２の指示情報供給手段の動作を停止させると共に前記第１の指示情報供給手段の動作を開始させる通常モードに復帰することを特徴とするシステムコントローラ。
【請求項２】
前記第２の指示情報供給手段が動作中に、前記メモリコントローラから与えられる前記第１動作指示情報に基づいた処理結果を示す情報を前記ホストシステムに転送する処理結果転送手段を更に備えることを特徴とする請求項１記載のシステムコントローラ。
【請求項３】
前記第１動作指示情報が前記第２の指示情報供給手段の動作開始を指示する情報であるとき、前記第１動作指示情報は、情報転送先のメモリコントローラの識別子、キーワード、およびスルーモードに移行するためのコマンドを含むことを特徴とする請求項１又は２記載のシステムコントローラ。
【請求項４】
請求項１乃至３のいずれか１項に記載のシステムコントローラと、
前記システムコントローラから与えられる情報に基づいてフラッシュメモリにアクセスするメモリコントローラと、
前記メモリコントローラによってアクセスされるフラッシュメモリを備えることを特徴とするフラッシュメモリシステム。
【請求項５】
ホストシステムから与えられる情報に基づいて、フラッシュメモリと前記フラッシュメモリにアクセスするメモリコントローラとを備えたフラッシュメモリモジュールの動作を制御するフラッシュメモリモジュールの制御方法であって、
前記ホストシステムから与えられる動作を指示する情報である第１動作指示情報を解読する解読ステップと、
前記解読ステップの解読結果に基づいて、前記メモリコントローラに対して動作を指示する情報である第２動作指示情報を生成し、前記第２動作指示情報を前記メモリコントローラに送る第１の制御ステップと、
前記ホストシステムから与えられる前記第１動作指示情報を前記メモリコントローラに転送する第２の制御ステップとを有し、
前記解読ステップで、前記第１動作指示情報が前記第２の制御ステップの実行開始を指示する情報であると判別したときに、前記第２の制御ステップの実行を開始し、前記第１の制御ステップの実行を停止するスルーモードに移行し、
前記解読ステップで、前記第１動作指示情報が前記第２の制御ステップの実行停止を指示する情報であると判別したときに、前記第２の制御ステップの実行を停止し、前記第１の制御ステップの実行を開始する通常モードに復帰することを特徴とするフラッシュメモリモジュールの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフラッシュメモリのシステムコントローラ、該システムコントローラを有するフラッシュメモリシステム、フラッシュメモリモジュールの制御方法に関する。
【背景技術】
【０００２】
従来、上位コントローラと複数の半導体ディスクを備えた情報記憶装置が提案されている。該上位コントローラが、半導体メモリと下位コントローラ（メモリコントローラ）で構成される半導体ディスクを制御することで、該複数の半導体ディスクを１つの半導体ディスクのように使用することができる（例えば、特許文献１参照）。また、上位コントローラが複数のディスク装置を制御するディスクアレイの制御方法が提案されている。該ディスクアレイにおいて、上位コントローラは、ホストシステムが発行したコマンドを解釈し、該コマンドを再構成してディスク装置に入力することにより、効率よくディスクアレイを制御している（例えば、特許文献２参照）。
【特許文献１】特開２０００−２０７１３７
【特許文献２】特開平５−２８９８１８
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、上記のような半導体メモリを用いた情報記憶装置では、例えばメモリの不具合の解析などを行うために、メモリコントローラ（下位コントローラ）独自のコマンドを実行する必要が生じた場合、上位コントローラの制御プログラムをその都度コーディングしなおす必要があった。特に、上位コントローラ、メモリコントローラ（下位コントローラ）、および半導体メモリを同一基板上に搭載して半導体ディスクとするような場合には、工場出荷時に半導体メモリの初期化を行う際にメモリコントローラ（下位コントローラ）独自のコマンドを使用することが必須となる。
【０００４】
そこで、本発明は、上位コントローラであるシステムコントローラの制御プログラムを、下位コントローラであるメモリコントローラの独自コマンドに応じて書き換える必要がなく、開発時間およびコストの削減が可能なシステムコントローラ、該システムコントローラを有するフラッシュメモリシステム、フラッシュメモリモジュールの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明によるシステムコントローラは、フラッシュメモリにアクセスするメモリコントローラとの間で情報を送受するとともに、ホストシステムとの間で情報を送受するシステムコントローラであって、ホストシステムから与えられる動作を指示する情報である第１動作指示情報を解読する解読手段と、解読手段の解読結果に基づいて、メモリコントローラに対して動作を指示する情報である第２動作指示情報を生成し、第２動作指示情報をメモリコントローラに送る第１の指示情報供給手段と、ホストシステムから与えられる第１動作指示情報をメモリコントローラに転送する第２の指示情報供給手段と、第１の指示情報供給手段と第２の指示情報供給手段とを択一的に動作させる制御手段とを備えている。このシステムコントローラにおいて、解読手段が、第１動作指示情報が第２の指示情報供給手段の動作開始を指示する情報であると判別したときに、制御手段が第２の指示情報供給手段の動作を開始させると共に第１の指示情報供給手段の動作を停止させるスルーモードに移行し、解読手段が、第１動作指示情報が第２の指示情報供給手段の動作停止を指示する情報であると判別したときに、制御手段が第２の指示情報供給手段の動作を停止させると共に第１の指示情報供給手段の動作を開始させる通常モードに復帰することを特徴としている。
【０００６】
このような構成によると、解読手段はホストシステムから入力された第１動作指示情報を解読し、第1動作指示情報が第２の指示情報供給手段の動作開始を指示する情報であると判別したときには、システムコントローラはスルーモードに移行する。スルーモードにおいて、システムコントローラは、ホストシステムから入力される第1動作指示情報をメモリコントローラへ転送する。よって、システムコントローラが解釈できない特殊なコマンドによってメモリコントローラを制御する際にも、システムコントローラ自体の制御プログラムを変更する必要なくメモリコントローラを動作させることができる。そのためシステムの開発のために要する時間およびコストを削減可能である。
【０００７】
ここで、第２の指示情報供給手段が動作中に、メモリコントローラから与えられる第１動作指示情報に基づいた処理結果を示す情報をホストシステムに転送する処理結果転送手段を更に備えていてもよい。
【０００８】
このような構成によれば、メモリコントローラからホストシステムへの情報送信を行うことができる。従って、ホストシステムとメモリコントローラ間の双方向の情報送信が可能である。
【０００９】
第１動作指示情報が第２の指示情報供給手段の動作開始を指示する情報であるとき、第１動作指示情報は、情報転送先のメモリコントローラの識別子、キーワード、およびスルーモードに移行するためのコマンドを含んでいてもよい。
【００１０】
このような構成によれば、スルーモードに移行するためのコマンドに加え、キーワードを確認した後に、情報転送先のメモリコントローラを対象としてスルーモードに移行することになり、より確実なモード移行処理を行うことができる。
【００１１】
また本発明によるフラッシュメモリシステムは、上記いずれかのシステムコントローラと、システムコントローラから与えられる情報に基づいてフラッシュメモリにアクセスするメモリコントローラと、メモリコントローラによってアクセスされるフラッシュメモリを備えている。
【００１２】
このような構成のフラッシュメモリシステムによれば、上記システムコントローラと同様の作用、効果を奏することができる。
【００１３】
本発明によるフラッシュメモリモジュールの制御方法は、ホストシステムから与えられる情報に基づいて、フラッシュメモリとフラッシュメモリにアクセスするメモリコントローラとを備えたフラッシュメモリモジュールの動作を制御する。このフラッシュメモリモジュールの制御方法は、ホストシステムから与えられる動作を指示する情報である第１動作指示情報を解読する解読ステップと、解読ステップの解読結果に基づいて、メモリコントローラに対して動作を指示する情報である第２動作指示情報を生成し、第２動作指示情報をメモリコントローラに送る第１の制御ステップと、ホストシステムから与えられる第１動作指示情報をメモリコントローラに転送する第２の制御ステップとを有している。このフラッシュメモリモジュールを制御方法において、解読ステップで、第１動作指示情報が第２の制御ステップの実行開始を指示する情報であると判別したときに、第２の制御ステップの実行を開始し、第１の制御ステップの実行を停止するスルーモードに移行し、解読ステップで、第１動作指示情報が第２の制御ステップの実行停止を指示する情報であると判別したときに、第２の制御ステップの実行を停止し、第１の制御ステップの実行を開始する通常モードに復帰することを特徴としている。
【００１４】
このようなフラッシュメモリモジュールの制御方法によれば、解読ステップはホストシステムから与えられる第１動作指示情報を解読し、解読ステップで第1動作指示情報が第２の指示情報供給手段の動作開始を指示する情報であると判別したときには、第２の制御ステップの実行を開始しスルーモードに移行する。スルーモードにおいて、ホストシステムから入力される第1動作指示情報はメモリコントローラへ転送される。よって、ホストシステムが特殊なコマンドを与えても制御プログラムを変更することなくメモリコントローラを制御させることができる。そのためシステムの開発のために要する時間およびコストを削減可能である。
【発明の効果】
【００１５】
本発明の請求項１〜５記載のシステムコントローラ、該システムコントローラを有するフラッシュメモリシステム、フラッシュメモリモジュールの制御方法によれば、フラッシュメモリ独自のコマンドを実行させる際に、システムコントローラの制御プログラム書き換えが不要になり、プログラム書き換えに要する手間および時間を減縮することにより、開発時間の短縮およびコスト削減が可能なシステムコントローラ、該システムコントローラを有するフラッシュメモリシステム、及びフラッシュメモリモジュールの制御方法を提供できる。
【発明を実施するための最良の形態】
【００１６】
本発明の一実施の形態によるシステムコントローラ、該システムコントローラを有するフラッシュメモリシステム、フラッシュメモリモジュールの制御方法について図１から図２０を参照しながら説明する。
【００１７】
まず、本実施の形態によるフラッシュメモリシステムの構成について説明する。図１のブロック図に示すように、本実施の形態によるフラッシュメモリシステム１は、２ｎ台（図１では４＝２２台）のフラッシュメモリモジュール２（２Ａ〜２Ｄ）と、それを制御するシステムコントローラ３とで構成されている。
【００１８】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１９】
フラッシュメモリモジュール２Ａ〜２Ｄは、互いに同一の構成を有する記憶装置であり、上位コントローラであるシステムコントローラ３によって制御される。
【００２０】
システムコントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリモジュールインタフェースブロック１０と、ＲＯＭ（Read Only Memory）１２と、の機能ブロックから構成される。これら機能ブロックによって構成されるシステムコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００２１】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、システムコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理等を定義したコマンドセットをＲＯＭ１２から読み出して、フラッシュメモリモジュールインタフェースブロック１０に供給し、フラッシュメモリモジュールインタフェースブロック１０に処理を実行させる。
【００２２】
ホストインタフェースブロック７は、図３に示すようにフィーチャ(Feature)レジスタ７１、セクタ数(Sector Count)レジスタ７２、セクタ番号(Sector Number)レジスタ７３、シリンダロー(Cylinder Low)レジスタ７４、シリンダハイ(Cylinder High)レジスタ７５、デバイスヘッド(Device Head)レジスタ７６及びコマンド(Command)レジスタ７７と図示していないデータレジスタ、ステータスレジスタ及びエラーレジスタを備えており、ホストシステム４との間で、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。尚、フィーチャレジスタ７１とエラーレジスタには同一のアドレスが割り当てられており、書き込み時はフィーチャレジスタ７１にレジスタ値が設定され、読み込み時はエラーレジスタに設定されているレジスタ値が読み出される。又、コマンドレジスタ７７とステータスレジスタには同一のアドレスが割り当てられており、書き込み時はコマンドレジスタ７７にレジスタ値が設定され、読み込み時はステータスレジスタに設定されているレジスタ値が読み出される。
【００２３】
ここで、モード移行時に、各レジスタに設定される情報について説明する。フィーチャレジスタ７１には、コマンドプロトコルの種類を示すレジスタ値が設定される。セクタ数レジスタ７２には、書き込みまたは読み出しを行うデータのセクタ数を示すレジスタ値が設定される。セクタ番号レジスタ７３には、スルーモード移行後にコマンドを実行させるメモリコントローラ２０３の識別子を示すレジスタ値が設定される。シリンダローレジスタ７４、シリンダハイレジスタ７５及びデバイスヘッドレジスタ７６には、モード変更のためのキーワードを示すレジスタ値が設定される。コマンドレジスタ７７は、後述するスルーモード移行コマンド、スルーモード終了コマンド、またはメモリコントローラ２０３への実行コマンドが設定される。ステータスレジスタには、ホストシステム４へのデータ要求等を示すレジスタ値が設定される。
【００２４】
ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインタフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインタフェースブロック７を出口としてホストシステム４に供給される。
【００２５】
ワークエリア８は、フラッシュメモリモジュール２Ａ〜２Ｄの制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００２６】
バッファ９は、フラッシュメモリモジュール２Ａ〜２Ｄからそれぞれ読み出されたデータ及びフラッシュメモリモジュール２Ａ〜２Ｄに書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリモジュール２Ａ〜２Ｄから読み出され、システムコントローラ３に送信されたデータは、ホストシステム４に送信されるまで一時的にバッファ９に保持された後、バッファ９からホストシステム４に転送される。また、フラッシュメモリモジュール２Ａ〜２Ｄに書き込むべきデータは、フラッシュメモリモジュール２Ａ〜２Ｄに送信されるまで一時的にバッファ領域９に保持される。
【００２７】
フラッシュメモリモジュールインタフェースブロック１０は、内部バス１４を介して、フラッシュメモリモジュール２Ａ〜２Ｄとデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行う。
【００２８】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。
【００２９】
次に、フラッシュメモリモジュール２Ａ〜２Ｄについて説明する。フラッシュメモリモジュール２Ａ〜２Ｄは、互いに同一の構成を有している。図２に、例として、フラッシュメモリモジュール２Ａの構成を示す。
【００３０】
フラッシュメモリモジュール２Ａは、図２に示すように、フラッシュメモリ２０２と、それを制御するメモリコントローラ２０３で構成されている。
【００３１】
メモリコントローラ２０３は、図２に示すように、マイクロプロセッサ２０６と、システムコントローラインタフェースブロック２０７と、ワークエリア２０８と、バッファ２０９と、フラッシュメモリインタフェースブロック２１０と、ＥＣＣ（エラー・コレクション・コード）ブロック２１１と、ＲＯＭ（Read Only Memory）２１２と、から構成され、内部バス１４を介してシステムコントローラ３と接続される。これら機能ブロックによって構成されるフラッシュメモリコントローラ２０３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００３２】
マイクロプロセッサ２０６は、ＲＯＭ２１２に記憶されているプログラムに従って、メモリコントローラ２０３の全体の動作を制御する。例えば、マイクロプロセッサ２０６は、各種処理等を定義したコマンドセットをＲＯＭ２１２から読み出してフラッシュメモリインタフェースブロック２１０に供給し、フラッシュメモリインタフェースブロック２１０に処理を実行させる。
【００３３】
システムコントローラインタフェースブロック２０７は、図４に示すようにフィーチャレジスタ２３１、セクタ数レジスタ２３２、セクタ番号レジスタ２３３、シリンダローレジスタ２３４、シリンダハイレジスタ２３５、デバイスヘッドレジスタ２３６及びコマンドレジスタ２３７と図示していないデータレジスタ、ステータスレジスタ及びエラーレジスタを備えており、システムコントローラ３との間で、データ、アドレス情報、ステータス情報、コマンド等の授受を行なう。
【００３４】
システムコントローラ３よりフラッシュメモリモジュール２Ａに供給されるデータ等は、システムコントローラインタフェースブロック２０７を入口としてフラッシュメモリモジュール２Ａの内部（例えば、バッファ２０９）に取り込まれる。また、フラッシュメモリモジュール２Ａからシステムコントローラ３に供給されるデータ等は、システムコントローラインタフェースブロック２０７を出口としてシステムコントローラ３に供給される。
【００３５】
ワークエリア２０８は、フラッシュメモリ２０２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００３６】
バッファ２０９は、フラッシュメモリ２０２からそれぞれ読み出されたデータ及びフラッシュメモリ２０２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２０２から読み出されたデータは、システムコントローラ３が受け取り可能な状態となるまでバッファ２０９に保持され、フラッシュメモリ２０２に書き込むべきデータは、フラッシュメモリ２０２が書き込み可能な状態となるまでバッファ２０９に保持される。
【００３７】
フラッシュメモリインタフェースブロック２１０は、内部バス２１４を介して、フラッシュメモリ２０２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。
【００３８】
ＥＣＣブロック２１１は、フラッシュメモリ２０２に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００３９】
ＲＯＭ２１２は、マイクロプロセッサ２０６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ２１２は、例えば、通常モードにおいて、ホストシステム４が入力した論理アドレスからフラッシュメモリ２０２における物理アドレスに変換するためのアドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。ここで、論理アドレスとは、ホストシステム４側にて管理されている論理アドレス空間におけるセクタ(５１２バイト)単位のアドレスである。また、物理アドレスとは、フラッシュメモリ２０２側にて管理されているブロック・ページのアドレスであり、フラッシュメモリ２０２において実際にデータを記憶する領域を示すアドレスである。フラッシュメモリ２０２では、特定の物理アドレスに何度もアクセスが集中することを避けるため、データを書き込む際に、論理アドレスは物理アドレスに変換される。変換された物理アドレスにデータが保存される。
【００４０】
図２に示すフラッシュメモリ２０２は、不揮発性メモリであり、レジスタと、メモリセルアレイ(共に図示せず)と、から構成される。フラッシュメモリ２０２は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００４１】
フラッシュメモリ２０２のメモリセルアレイは、複数のメモリセル群と、ワード線(共に図示せず)と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００４２】
このようなフラッシュメモリ２０２のアドレス空間は、“ページ”及び“ブロック（物理ブロック）”で構成されている。
【００４３】
ページは、フラッシュメモリ２０２にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは複数個のページで構成されている。例えば、１つのページは、１セクタ（５１２バイト）のユーザ領域と、１６バイトの冗長領域で構成され、１つの物理ブロックは３２個のページで構成されている。なお、１つのページが４セクタのユーザ領域と６４バイトの冗長領域で構成され、１つの物理ブロックが６４個のページで構成されているフラッシュメモリもある。ユーザ領域は、ホストシステム４から供給されるユーザデータを格納する。
【００４４】
上記のように構成されるフラッシュメモリシステム１による動作を説明する。本実施の形態によるフラッシュメモリシステム１の動作には、「通常モード」と「スルーモード」とがある。通常モードの場合は、ホストシステム４が、フラッシュメモリ２０２にデータを書き込む、または格納されているデータを消去あるいは読み出す場合に、システムコントローラ３がホストシステム４からのレジスタ値を解釈して変換し、メモリコントローラ２０３のレジスタ２３０にレジスタ値として設定することで、フラッシュメモリ２０２を制御する。
【００４５】
例えば、フラッシュメモリ２０２に書き込まれているデータを読み出す場合、ホストシステム４が、システムコントローラ３のレジスタ７０のセクタ数レジスタ７１に読み出すデータのセクタ数を設定し、シリンダローレジスタ７４およびシリンダハイレジスタ７５に、読み出すデータの論理アドレスの先頭値を設定し、コマンドレジスタ７７に読み出しを指示する外部コマンドを設定する。
【００４６】
システムコントローラ３は、コマンドレジスタ７７に読み出し処理を指示するレジスタ値が設定されると、そのアクセス対象データの割り振り先である各フラッシュメモリモジュール２Ａ〜２Ｄ内での先頭セクタの論理アドレスとセクタ数とを求める。続いて、各フラッシュメモリモジュール２Ａ〜２Ｄのシステムコントローラインタフェースブロック２０７のセクタ数レジスタ２３２に、各フラッシュメモリモジュール２Ａ〜２Ｄから読み出すデータのセクタ数を設定し、各フラッシュメモリモジュール２Ａ〜２Ｄのシリンダローレジスタ２３４およびシリンダハイレジスタ２３５に、各フラッシュメモリモジュール２Ａ〜２Ｄから読み出すデータの論理アドレスの先頭値を設定し、各フラッシュメモリモジュール２Ａ〜２Ｄのコマンドレジスタ２３７に読み出し処理を指示するコマンドを設定する。
【００４７】
各フラッシュメモリモジュール２Ａ〜２Ｄは、コマンドレジスタ２３７に読み出し処理を指示するコマンドが設定されると、アドレス変換テーブルを参照して上記論理アドレスから物理アドレスを特定し、読み出し処理を開始する。
【００４８】
フラッシュメモリ２０２にデータを書き込む場合には、ホストシステム４が、システムコントローラ３のレジスタ７０のセクタ数レジスタ７１に書き込むデータのセクタ数を設定し、シリンダローレジスタ７４およびシリンダハイレジスタ７５に、データを書き込む領域の論理アドレスの先頭値を設定し、コマンドレジスタ７７に書き込みを指示する外部コマンドを設定する。
【００４９】
システムコントローラ３は、コマンドレジスタ７７に書き込み処理を指示するレジスタ値が設定されると、各フラッシュメモリモジュール２Ａ〜２Ｄに割り振られる書き込み対象データの各フラッシュメモリモジュール２Ａ〜２Ｄ内での先頭セクタの論理アドレスとセクタ数を求める。
【００５０】
続いて、各フラッシュメモリモジュール２Ａ〜２Ｄのシステムコントローラインタフェースブロック２０７のセクタ数レジスタ２３２に、各フラッシュメモリモジュール２Ａ〜２Ｄに書き込むデータのセクタ数を設定し、各フラッシュメモリモジュール２Ａ〜２Ｄのシリンダローレジスタ２３４およびシリンダハイレジスタ２３５に、各フラッシュメモリモジュール２Ａ〜２Ｄに書き込むデータの論理アドレスの先頭値を設定し、各フラッシュメモリモジュール２Ａ〜２Ｄのコマンドレジスタ２３７に書き込み処理を指示するコマンドを設定する。
【００５１】
さらにシステムコントローラ３は、ホストシステム４から供給されるデータを各フラッシュメモリモジュール２Ａ〜２Ｄに割り振って供給する。各フラッシュメモリモジュール２Ａ〜２Ｄは、コマンドレジスタ２３７に書き込み処理を指示するコマンドが設定されると、上記論理アドレスに所定のアドレス変換を行って物理アドレスに変換する。フラッシュメモリモジュール２Ａ〜２Ｄは変換された物理アドレスにデータの書き込み処理を行う。なお、書き込みの際には、１６ビットの冗長領域に、ホストシステム４から指定された論理アドレスと、実際に各フラッシュメモリモジュール２Ａ〜２Ｄへの処理を行う際の物理アドレスとの対応関係を書き込むようにしている。
【００５２】
次に、スルーモードについて説明する。スルーモードは、通常モードにおいてシステムコントローラ３が解釈するようにプログラムされていない、フラッシュメモリ２０２独自のコマンドを用いた処理を行う場合に用いられる処理である。例えば、ブロック単位でのデータ消去のためのコマンド、エラー訂正をせずにデータを読み出すコマンド、フラッシュメモリ２０２の出荷時に特定領域に、シリアル番号、モデル番号、サポートする転送モード、サポートできるコマンド等を書き込むためのコマンド、またはフラッシュメモリ２０２の使用不可能な部分をマーキングするためのコマンド等が独自コマンドとして使用される。
【００５３】
よって、スルーモードにおいてシステムコントローラ３は、設定されたレジスタ値を適宜変換してメモリコントローラ２０３に出力するという動作は行わない。スルーモード移行を指示するレジスタ値が供給された後は、システムコントローラ３は、レジスタ値、および読み出したデータまたは書き込むデータなどの実データをホストシステム４からフラッシュメモリモジュール２（２Ａ〜２Ｄ）またはフラッシュメモリモジュール２（２Ａ〜２Ｄ）からホストシステム４にそのまま転送する。
【００５４】
以下、図５から図２３を参照しながら、本発明の一実施の形態によるフラッシュメモリシステム１のモード移行を含むスルーモードにおける動作、およびフラッシュメモリモジュール２を制御する方法について説明する。本実施の形態においては、３つのプロトコルにおける独自コマンドを例にして説明する。３つのプロトコルとは、データの消去に関するノンデータコマンドプロトコル（Non-data command protocol）、データの読み込みに関するＰＩＯデータインコマンドプロトコル(Programmed I／O data In command Protocol)、データの書き込みに関するＰＩＯデータアウトコマンドプロトコル(Programmed I／O data Out command Protocol)である。
【００５５】
図５のフローチャートでは、ホストシステム４、システムコントローラ３、およびメモリコントローラ２０３の３つの動作主体に分けて、全体の処理動作を示している。尚、図５において、点線で示されるステップ３０８，３０９はＰＩＯデータインコマンドプロトコル及びＰＩＯデータアウトコマンドプロトコルで行われる処理であり、ノンデータコマンドプロトコルでは行われない。
【００５６】
まず、ノンデータコマンドプロトコルにおけるスルーモード処理について説明する。通常モードではデータの消去はセクタ単位で指定するErase Sectorが使用できるが、以下に示すようにノンデータコマンドプロトコルで発行されるベンダーコマンドの一つではブロック単位で消去を行うことが可能である。また、この際にホストシステムはフラッシュメモリの物理ブロックアドレスを直接指定している。図５に示すように、ステップ３０１で、ホストシステム４はシステムコントローラ３へレジスタ値を送信する。レジスタ値は、上述したようにフィーチャレジスタ７１、セクタ数レジスタ７２、セクタ番号レジスタ７３、シリンダローレジスタ７４、シリンダハイレジスタ７５、デバイスヘッドレジスタ７６及びコマンドレジスタ７７に設定される。
【００５７】
例えば、フラッシュメモリモジュール２Ａを対象にノンデータコマンドプロトコルにおけるスルーモードに移行する場合には、レジスタ７０には、図１０に示すレジスタ値１７１（７つのレジスタ値を総称してレジスタ値１７１という。以下同様）が設定される。すなわちフィーチャレジスタ７１にノンデータコマンドプロトコルを示すレジスタ値「００ｈ」が設定され、セクタ数レジスタ７２に転送セクタ数がゼロであることを示すレジスタ値「００ｈ」が設定され、セクタ番号レジスタ７３に、スルーモード移行後のデータの転送先、ここではフラッシュメモリモジュール２Ａの識別子を示す「００ｈ」が設定され、シリンダローレジスタ７４にはモード移行を許可するキーワード「Ｋ」を示すレジスタ値「４Ｂｈ」が設定され、シリンダハイレジスタ７５にはモード移行を許可するキーワード「Ｅ」を示すレジスタ値「４５ｈ」が設定され、デバイスヘッドレジスタ７６にはモード移行を許可するキーワード「Ｙ」を示すレジスタ値「５９ｈ」が設定され、コマンドレジスタ７７には、スルーモード移行を指示するコマンドを示す「ＦＦｈ」が設定される。尚、ノンデータコマンドプロトコルの場合には、システムコントローラ３はセクタ数レジスタ７２を参照しないため「００ｈ」以外の任意の値を設定しても以下の処理に変化はない。
【００５８】
レジスタ７０にレジスタ値１７１が設定されると、ステップ３０３でシステムコントローラ３はレジスタ値を参照することにより、スルーモード移行処理を行う。スルーモード移行処理の詳細は、図６のフローチャートに示している。すなわち、ステップ３３１でシステムコントローラ３はレジスタ７０のそれぞれのレジスタ値を解釈して、スルーモードに移行するか否か、移行するときにはどのプロトコルでスルーモードに入るのかを判定する。
【００５９】
具体的には、ステップ３３１でシステムコントローラ３は、図１０に示したレジスタ値１７１の中で、フィーチャレジスタ７１、シリンダローレジスタ７４、シリンダハイレジスタ７５、デバイスヘッドレジスタ７６及びコマンドレジスタ７７のレジスタ値を参照し、ノンデータコマンドプロトコルのスルーモードに移行するか否かを判断する。システムコントローラ３はレジスタ値１７１の上述のレジスタ値を参照して、ノンデータインコマンドプロトコルでフラッシュメモリモジュール２Ａを対象としたスルーモードに移行する（ステップ３３１：Ｙｅｓ）と判断する。ステップ３３２で、システムコントローラ３はノンデータコマンドプロトコルのスルーモードに移行し、図５のＡに戻る。
【００６０】
続いて、ステップ３０４でホストシステム４は、メモリコントローラ２０３への所定動作を指示するレジスタ値を送信する。例えば、１０００番ブロックを消去するコマンドをメモリコントローラ２０３に与える場合には、図１１に示すレジスタ値１７３がシステムコントローラ３に送信される。
【００６１】
すなわち、シリンダローレジスタ７４には、消去を行うフラッシュメモリ２０２の領域の物理ブロックアドレスの下位２桁を示すレジスタ値「Ｅ８ｈ」が設定され、シリンダハイレジスタ７５には消去を行うフラッシュメモリ２０２の領域の物理ブロックアドレスの上位２桁を示すレジスタ値「０３ｈ」が設定され、コマンドレジスタ７７には、メモリコントローラ２０３にブロック消去を実行させるメモリコントローラの独自コマンド（通常モードのErase Sectorコマンドとは異なるコマンド）を示すレジスタ値「Ｆ１ｈ」が設定される。尚、フィーチャレジスタ７１、セクタ数レジスタ７２、セクタ番号レジスタ７３及びデバイスヘッドレジスタ７６は参照されない。
【００６２】
ステップ３０５でシステムコントローラ３は、コマンドレジスタ７７にスルーモード終了を示すレジスタ値が設定されていないことを確認すると、メモリコントローラ２０３にレジスタ値１７３を転送する。
【００６３】
ステップ３０６で、システムコントローラ３から転送されたレジスタ値１７３がフラッシュメモリモジュール２Ａのレジスタ２３０に設定される。
【００６４】
メモリコントローラ２０３は、コマンドレジスタ２３７に設定されたレジスタ値からブロック消去が指示されていることを解釈する。また、シリンダローレジスタ２３４およびシリンダハイレジスタ２３５のレジスタ値を解釈して、消去する物理ブロックのアドレス「０３Ｅ８ｈ」を認識する。そして、ステップ３０７において、メモリコントローラ２０３は、ステップ３０６で指示された所定動作を行う。すなわち、図７に示すように、ステップ３５１で、フラッシュメモリ２０２の「０３Ｅ８ｈ」ブロック、すなわち１０００番ブロックの消去を行う。
【００６５】
ステップ３１０でメモリコントローラ２０３のレジスタ２３０のレジスタ値がシステムコントローラ３のレジスタ７０に転送される。この転送によって、システムコントローラ３は、図１２に示すレジスタ値１７５を受信する。図１２に示すレジスタ値１７５では、エラーレジスタには、エラーが発生しなかったことを示すレジスタ値「００ｈ」が設定され、ステータスレジスタには、フラッシュメモリ２０２でのブロック消去処理が正常に完了したことを示すレジスタ値「５０ｈ」が設定されている。尚、セクタ数レジスタ７２、セクタ番号レジスタ７３、シリンダローレジスタ７４、シリンダハイレジスタ７５およびデバイスヘッドレジスタ７６は参照されない。
【００６６】
ステップ３１１では、システムコントローラ３は、メモリコントローラ２０３から受信したレジスタ値１７５をホストシステム４に転送する。ステップ３１２では、ホストシステム４は、システムコントローラ３から転送されたレジスタ値１７５を解釈してブロック消去動作が完了したことを確認する。
【００６７】
ステップ３１３では、ホストコントローラ３は、スルーモード終了を指示するレジスタ値１７７をシステムコントローラ３に送信する。すなわち、フィーチャレジスタ７１には、ノンデータコマンドプロトコルを示す「００ｈ」が設定され、セクタ番号レジスタ７３には、スルーモードにおけるデータ転送先のフラッシュメモリモジュール２Aを示す「００ｈ」が設定され、シリンダローレジスタ７４、シリンダハイレジスタ７５およびデバイスヘッドレジスタ７６には、それぞれモード移行を許可するキーワードを表す「４Ｂｈ」、「４５ｈ」、「５９ｈ」が設定され、コマンドレジスタ７７には、スルーモードから通常モードに復帰するコマンドを示す「ＦＥｈ」が設定される。尚、セクタ数レジスタ７２は参照されない。
【００６８】
ステップ３１４でシステムコントローラ３は、設定されたレジスタ値１７７の中で、シリンダローレジスタ７４、シリンダハイレジスタ７５、デバイスヘッドレジスタ７６及びコマンドレジスタ７７のレジスタ値を解釈してスルーモードを終了するコマンドであることを認識する。
【００６９】
続いて、フィーチャレジスタ７１を解釈してノンデータコマンドプロトコルであることを確認し、セクタ番号レジスタ７３のレジスタ値を解釈してスルーモード終了の対象がフラッシュメモリモジュール２Ａであることを確認すると、フラッシュメモリモジュール２Ａに対するノンデータコマンドプロトコルにおけるスルーモードを終了し、通常モードに戻る。以上が、ノンデータコマンドプロトコルにおける、フラッシュメモリモジュール２Ａを対象としたスルーモード処理動作である。
【００７０】
次に、ＰＩＯデータインコマンドプロトコルにおけるスルーモード処理について説明する。通常モードにおいてデータを読み出す場合には、フラッシュメモリ２０２から読み出されたデータは、ＥＣＣブロック２１１を解してエラー訂正がなされてシステムコントローラ３に転送される。しかし、以下に示すＰＩＯデータインコマンドプロトコルを用いれば、特定の物理アドレスにエラーが発生しているかどうかを確認したい場合などにエラー訂正を行わずにデータの読み出しを行うことができる。ノンデータコマンドプロトコルでの処理と同様、図５のステップ３０１で、ホストシステム４からシステムコントローラ３にレジスタ値が送信され、ステップ３０２でシステムコントローラ３のレジスタ７０にレジスタ値が設定される。
【００７１】
例えば、フラッシュメモリモジュール２Ｂを対象としてＰＩＯデータインコマンドプロトコルで２セクタのデータ転送を伴うスルーモードに移行する場合には、レジスタ７０に図１４に示すレジスタ値１７９が設定される。すなわちフィーチャレジスタ７１には、ＰＩＯデータインコマンドプロトコルを示すレジスタ値「０１ｈ」が設定され、セクタ数レジスタ７２には、転送セクタ数が２であることを示すレジスタ値「０２ｈ」が設定され、セクタ番号レジスタ７３には、スルーモード移行後のデータの転送先となるフラッシュメモリモジュール２Ｂの識別子を示す「０１ｈ」が設定され、シリンダローレジスタ７４には、モード移行を許可するキーワード「Ｋ」を示すレジスタ値「４Ｂｈ」が設定され、シリンダハイレジスタ７５には、モード移行を許可するキーワード「Ｅ」を示すレジスタ値「４５h」が設定され、デバイスヘッドレジスタ７６には、モード移行を許可するキーワード「Ｙ」を示すレジスタ値「５９h」が設定され、コマンドレジスタ７７には、スルーモード移行を指示するコマンドを示す「ＦＦｈ」が設定される。
【００７２】
レジスタ７０にレジスタ値が設定されると、ステップ３０３でシステムコントローラ３はレジスタ値を参照することにより、スルーモード移行処理を行う。スルーモード移行処理の詳細は、図６のフローチャートに示している。図６に示すように、システムコントローラ３はレジスタ７０のそれぞれのレジスタ値を解釈して、スルーモードに移行するか否か、移行するときにはどのプロトコルでスルーモードに入るのかを判定する。
【００７３】
具体的には、システムコントローラ３は、図１４に示したレジスタ値１７９の中で、フィーチャレジスタ７１、シリンダローレジスタ７４、シリンダハイレジスタ、デバイスヘッドレジスタ７６及びコマンドレジスタ７７のレジスタ値を参照し、スルーモードに移行するか否かを判断する。まず、ステップ３３１でシステムコントローラ３はレジスタ値１７９の上述のレジスタ値を参照し、ノンデータコマンドプロトコルのスルーモードには移行しない（ステップ３３１：Ｎｏ）と判断する。ステップ３３３で、システムコントローラ３はＰＩＯデータインコマンドプロトコルでフラッシュメモリモジュール２Ｂを対象としたスルーモードに移行すると判断する（ステップ３３３：Ｙｅｓ）。ステップ３３４でシステムコントローラ３はＰＩＯデータインコマンドプロトコルでスルーモードに移行し、図５のＡに戻る。
【００７４】
続いて、図５のステップ３０４でホストシステム４は、メモリコントローラ２０３への所定動作を指示するレジスタ値を送信する。例えば、ＰＩＯデータインコマンドプロトコルにおいて実行される１０００番アドレスの１５ページのデータ読み出しを行う指示をメモリコントローラ２０３に与える場合には、図１５に示すレジスタ値１８１がシステムコントローラ３に送信される。ここで、フラッシュメモリ２０２において１ページのユーザ領域のデータを冗長領域のデータと共に読み出す。従って、ユーザ領域５１２バイトと冗長領域１６バイト、つまり２セクタの転送が生じる。
【００７５】
セクタ番号レジスタ７３には、データ読み出しを行うページ番号を示すレジスタ値「０Ｆｈ」が設定され、シリンダローレジスタ７４には、データ読み出しを行うフラッシュメモリ２０２の領域の物理ブロックアドレスの下位２桁を示すレジスタ値「Ｅ８ｈ」が設定され、シリンダハイレジスタ７５には、データ読み出しを行うフラッシュメモリ２０２の領域の物理ブロックアドレスの上位２桁を示すレジスタ値「０３ｈ」が設定され、コマンドレジスタ７７には、メモリコントローラ２０３にデータ読み出し処理を実行させるメモリコントローラの独自コマンドを示すレジスタ値「Ｆ２ｈ」が設定される。尚、フィーチャレジスタ７１、セクタ数レジスタ７２及びデバイスヘッドレジスタ７６は参照されない。
【００７６】
このとき、ステップ３０５でシステムコントローラ３は、コマンドレジスタ７７にスルーモード終了を示すレジスタ値が設定されていないことを確認すると、メモリコントローラ２０３にレジスタ値１８１を転送する。
【００７７】
ステップ３０６でシステムコントローラ３から転送されたレジスタ値１８１が、フラッシュメモリモジュール２Ｂのレジスタ２３０に設定される。メモリコントローラ２０３は、コマンドレジスタ２３７に設定されたレジスタ値から、データ読み出しが指示されていることを解釈する。また、セクタ番号レジスタ２３３、シリンダローレジスタ２３４およびシリンダハイレジスタ２３５のレジスタ値を解釈して、読み出すブロックの物理アドレス「０３Ｅ８ｈ」、読み出すページの物理アドレスを「０Ｆｈ」を認識する。そしてステップ３０７でメモリコントローラ２０３は、ステップ３０６で指示された所定動作を行う。すなわち、図８に示すように、ステップ３６１で、メモリコントローラ２０３はフラッシュメモリ２０２の「０３Ｅ８ｈ」ブロックの「０Ｆｈ」ページ、すなわち１０００番ブロック１５ページのデータを読み出し、バッファ２０９に保持する。
【００７８】
なお、通常モードにおいては、読み出したデータはＥＣＣブロック２１１を介してエラー訂正されるように制御されているが、ここでは、エラーの原因が書き込み時にあるか読み出し時にあるかを特定するために、フラッシュメモリモジュール２Ｂはエラー訂正を行わないようにしている。
【００７９】
図８のステップ３６２でメモリコントローラ２０３は、読み出したデータをシステムコントローラ３側に送信準備完了であることを示すレジスタ値をシステムコントローラ３に転送する。この転送により、システムコントローラ３は図１６に示すレジスタ値１８３を受信する。この処理はシステムコントローラ３側では、図５のステップ３０８に相当し、ノンデータコマンドプロトコルでは行われなかった処理である。ステータスレジスタ７７には、データ転送準備完了を示す「５８ｈ」が設定される。
【００８０】
システムコントローラ３は、このレジスタ値１８３をホストシステム４に転送する。ステップ３０９でホストシステム４では、レジスタ値を受け取り、フラッシュメモリモジュール２Ｂがデータ送信準備完了であることを認識する。その後、ステップ３６３でメモリコントローラ２０３側から、バッファ２０９に保持していたデータをシステムコントローラ３に送信し、システムコントローラ３は、さらにホストシステム４にデータを転送する(ステップ３０９)。
【００８１】
データ読み出しが完了すると、ステップ３１０でメモリコントローラ２０３のレジスタ２３０のレジスタ値がシステムコントローラ３のレジスタ７０に転送される。この転送によって、システムコントローラ３は、図１７に示すレジスタ値１８５を受信する。すなわち、図１７に示すレジスタ値１８５では、エラーレジスタには、エラーが発生しなかったことを示すレジスタ値「００ｈ」が設定され、ステータスレジスタには、フラッシュメモリ２０２での読み出し処理が正常に完了したことを示すレジスタ値「５０ｈ」が設定されている。尚、セクタ数レジスタ７２、セクタ番号レジスタ７３、シリンダローレジスタ７４、シリンダハイレジスタ７５およびデバイスヘッドレジスタ７６は参照されない。
【００８２】
ステップ３１１でシステムコントローラ３は、メモリコントローラ２０３から転送された図１７に示すレジスタ値１８５を、ホストシステム４に転送する。ステップ３１２でホストシステム４は、システムコントローラ３から転送されたレジスタ値１８５を解釈してデータ読み出し動作が完了したことを確認する。ステップ３１３で図１８に示すスルーモード終了を指示するレジスタ値１８７をシステムコントローラ３に送信する。
【００８３】
ステップ３１３で図１８に示すスルーモード終了を指示するレジスタ値１８７をシステムコントローラ３に送信する。すなわち、セクタ番号レジスタ７３には、データ読み出し動作を行ったフラッシュメモリモジュール２Ｂを示す「０１ｈ」が設定され、シリンダローレジスタ７４、シリンダハイレジスタ７５およびデバイスヘッドレジスタ７６には、それぞれモード移行を許可するキーワードを表す「４Ｂｈ」、「４５ｈ」、「５９ｈ」が設定され、コマンドレジスタ７７には、スルーモードから通常モードに復帰するコマンドを示す「ＦＥｈ」が設定される。尚、セクタ数レジスタ７２は参照されない。
【００８４】
ステップ３１４でシステムコントローラ３は、入力されたレジスタ値１８７のシリンダローレジスタ７４、シリンダハイレジスタ７５、デバイスヘッドレジスタ７６及びコマンドレジスタ７７のレジスタ値を解釈してスルーモードを終了するコマンドであることを確認する。続いて、フィーチャレジスタ７１を解釈してＰＩＯデータインコマンドプロトコルであることを確認し、セクタ番号レジスタ７３のレジスタ値を解釈してスルーモード終了の対象がフラッシュメモリモジュール２Ｂであることを確認すると、フラッシュメモリモジュール２Ｂに対するＰＩＯデータインコマンドプロトコルにおけるスルーモードを終了し、通常モードに戻る。以上が、ＰＩＯデータインコマンドプロトコルにおいて、フラッシュメモリモジュール２Ｂに対するスルーモードにおける動作である。
【００８５】
次に、ＰＩＯデータアウトコマンドプロトコルにおけるスルーモード処理について説明する。ＰＩＯデータインコマンドプロトコルでの処理と同様、図５のステップ３０１で、ホストシステム４からシステムコントローラ３にレジスタ値が送信され、ステップ３０２でシステムコントローラ３のレジスタ７０にレジスタ値が設定される。
【００８６】
例えば、フラッシュメモリモジュール２Ｃを対象としてＰＩＯデータアウトコマンドプロトコルで２セクタのデータ転送を伴うスルーモードに移行する場合には、レジスタ７０に図１９に示すレジスタ値１８９が設定される。すなわちフィーチャレジスタ７１には、ＰＩＯデータアウトコマンドプロトコルを示すレジスタ値「０２ｈ」が設定され、セクタ数レジスタ７２には、転送セクタ数が２であることを示すレジスタ値「０２ｈ」が設定され、セクタ番号レジスタ７３には、スルーモード移行後のデータの転送先となるフラッシュメモリモジュール２Ｃの識別子を示す「０２ｈ」が設定され、シリンダローレジスタ７４には、モード移行を許可するキーワード「Ｋ」を示すレジスタ値「４Ｂｈ」が設定され、シリンダハイレジスタ７５にはモード移行を許可するキーワード「Ｅ」を示すレジスタ値「４５h」が設定され、デバイスヘッドレジスタ７６には、モード移行を許可するキーワード「Ｙ」を示すレジスタ値「５９h」が設定され、コマンドレジスタ７７には、スルーモード移行を指示するコマンドを示す「ＦＦｈ」が設定される。
【００８７】
レジスタ７０に図１９に示すレジスタ値１８９が設定されると、ステップ３０３でシステムコントローラ３はレジスタ値を参照することにより、スルーモード移行処理を行う。スルーモード移行処理の詳細は、図６のフローチャートに示している。図６に示すように、システムコントローラ３はレジスタ７０のそれぞれのレジスタ値を解釈して、スルーモードに移行するか否か、移行するときにはどのプロトコルでスルーモードに入るのかを判定する。
【００８８】
具体的には、システムコントローラ３は、図１９に示したレジスタ値１８９の中で、フィーチャレジスタ７１、シリンダローレジスタ７４、シリンダハイレジスタ、デバイスヘッドレジスタ７６及びコマンドレジスタ７７のレジスタ値を参照し、スルーモードに移行するか否かを判断する。まず、ステップ３３１及びステップ３３３でシステムコントローラ３はレジスタ値１８９の上述のレジスタ値を参照し、ノンデータコマンドプロトコル及びＰＩＯデータインコマンドプロトコルのスルーモードには移行しない（ステップ３３１：Ｎｏ、ステップ３３３：Ｎｏ）と判断する。ステップ３３５で、システムコントローラ３はＰＩＯデータアウトコマンドプロトコルでフラッシュメモリモジュール２Ｃを対象としたスルーモードに移行すると判断する。ステップ３３６でシステムコントローラ３はＰＩＯデータインコマンドプロトコルでスルーモードに移行し、図５のＡに戻る。尚、ステップ３３５でシステムコントローラ３がＰＩＯデータアウトコマンドプロトコルに移行しない（ステップ３３５：Ｎｏ）と判断した場合は、図５のＣに戻り、システムコントローラ３は通常モードを実行する。
【００８９】
続いて、図５のステップ３０４でホストシステム４は、メモリコントローラ２０３への所定動作を指示するレジスタ値を送信する。例えば、ＰＩＯデータアウトコマンドプロトコルにおいて実行される１０００番アドレスの１５ページにデータ書き込みを行う指示をメモリコントローラ２０３に与える場合には、図２０に示すレジスタ値１９１がシステムコントローラ３に送信される。
【００９０】
すなわち、セクタ番号レジスタ７３には、データ書き込みを行うページ番号を示すレジスタ値「０Ｆｈ」が設定され、シリンダローレジスタ７４には、データ読み出しを行うフラッシュメモリ２０２の領域の物理ブロックアドレスの下位２桁を示すレジスタ値「Ｅ８ｈ」が設定され、シリンダハイレジスタ７５には、データ書き込みを行うフラッシュメモリ２０２の領域の物理ブロックアドレスの上位２桁を示すレジスタ値「０３ｈ」が設定され、コマンドレジスタ７７には、メモリコントローラ２０３にデータ書き込み処理を実行させるメモリコントローラの独自コマンドを示すレジスタ値「Ｆ３ｈ」が設定される。尚、フィーチャレジスタ７１、セクタ数レジスタ７２及びデバイスヘッドレジスタ７６は参照されない。
【００９１】
このとき、ステップ３０５でシステムコントローラ３は、コマンドレジスタ７７にスルーモード終了を示すレジスタ値が設定されていないことを確認すると、メモリコントローラ２０３にレジスタ値１９１を転送する。
【００９２】
フラッシュメモリモジュール２Ｃのメモリコントローラ２０３においては、ステップ３０６でシステムコントローラ３から転送されたレジスタ値１９１が、レジスタ２３０に設定される。メモリコントローラ２０３は、コマンドレジスタ２３７に設定されたレジスタ値から、データ書き込みが指示されていることを解釈する。また、セクタ番号レジスタ２３３、シリンダローレジスタ２３４およびシリンダハイレジスタ２３５のレジスタ値を解釈して、データ書き込みする物理ブロックのアドレス「０３Ｅ８ｈ」、書き込むページの物理アドレス「０Ｆｈ」を認識する。
【００９３】
ステップ３０７でメモリコントローラ２０３は、ステップ３０６で指示された所定の動作を行う。すなわち、図９のステップ３７１でメモリコントローラ２０３は、書き込み準備完了であることを示すレジスタ値をシステムコントローラ３に転送する。この転送により、システムコントローラ３は図２１に示すレジスタ値１９３を受信する。この処理はシステムコントローラ３側では、図５のステップ３０８に相当し、ノンデータコマンドプロトコルでは行われなかった処理である。ステータスレジスタ７７には、データ書き込み準備完了を示す「５８ｈ」が設定される。
【００９４】
システムコントローラ３は、このレジスタ値１９３をホストシステム４に転送し、ホストシステム４では、ステップ３０９でレジスタ値を受け取り、フラッシュメモリモジュール２Ｃがデータ書き込み準備完了であることを認識する。その後、ホストシステム４は、書き込みデータをシステムコントローラ３に送信し、システムコントローラ３は、書き込みデータをメモリコントローラ２０３に転送する。
【００９５】
そして図９のステップ３７２に示すように、メモリコントローラ２０３は、書き込みデータを受信し、ステップ３７３でフラッシュメモリ２０２の物理アドレスである「０３Ｅ８ｈ」ブロックの「０Ｆｈ」ページ、すなわち１０００番ブロック１５ページに受信したデータを書き込む。
【００９６】
データ書き込みが完了すると、図５のステップ３１０でメモリコントローラ２０３のレジスタ２３０のレジスタ値がシステムコントローラ３のレジスタ７０に転送される。この転送によって、システムコントローラ３は、図２２に示すレジスタ値１９５を受信する。すなわち、図２２に示すレジスタ値１９５では、エラーレジスタには、エラーが発生しなかったことを示すレジスタ値「００ｈ」が設定され、ステータスレジスタには、フラッシュメモリ２０２での書き込み処理が正常に完了したことを示すレジスタ値「５０ｈ」が設定されている。尚、セクタ数レジスタ７２、セクタ番号レジスタ７３、シリンダローレジスタ７４、シリンダハイレジスタ７５およびデバイスヘッドレジスタ７６は参照されない。
【００９７】
ステップ３１１でシステムコントローラ３は、メモリコントローラ２０３から入力された図２２に示すレジスタ値１９５を、ホストシステム４に転送する。ステップ３１２でホストシステム４は、システムコントローラ３から転送されたレジスタ値１９５を解釈してデータ書き込み動作が完了したことを確認する。
【００９８】
ステップ３１３で図２３に示すスルーモード終了を指示するレジスタ値１９７をシステムコントローラ３に送信する。すなわち、フィーチャレジスタ７１には、ＰＩＯデータアウトコマンドプロトコルを示す「０２ｈ」が設定され、セクタ番号レジスタ７３には、書き込み動作を行ったフラッシュメモリモジュール２Ｃを示す「０２ｈ」が設定され、シリンダローレジスタ７４、シリンダハイレジスタ７５およびデバイスヘッドレジスタ７６には、それぞれモード移行を許可するキーワードを表す「４Ｂｈ」、「４５ｈ」、「５９ｈ」が設定され、コマンドレジスタ７７には、スルーモードから通常モードに復帰するコマンドを示す「ＦＥｈ」が設定される。尚、セクタ数レジスタ７２は参照しない。
【００９９】
ステップ３１４でシステムコントローラ３は、入力されたレジスタ値１９７のシリンダローレジスタ７４、シリンダハイレジスタ７５、デバイスヘッドレジスタ７６及びコマンドレジスタ７７のレジスタ値を解釈してスルーモードを終了するコマンドであることを確認する。続いて、フィーチャレジスタ７１のレジスタ値を解釈してＰＩＯデータアウトコマンドプロトコルであることを確認し、セクタ番号レジスタ７３のレジスタ値を解釈してスルーモード終了の対象がフラッシュメモリモジュール２Ｃであることを確認すると、フラッシュメモリモジュール２Ｃに対するＰＩＯデータアウトコマンドプロトコルにおけるスルーモードを終了し、通常モードに戻る。以上が、ＰＩＯデータアウトコマンドプロトコルにおいて、フラッシュメモリモジュール２Ｃに対するスルーモードにおける動作である。
【０１００】
なお、上記実施の形態において、レジスタ値が本発明の第１動作指示情報、第２動作指示情報であり、システムコントローラ３のマイクロプロセッサ６が解読手段及び制御手段である。また、マイクロプロセッサ６、ホストインタフェースブロック７、フラッシュメモリモジュールインタフェースブロック１０、ＲＯＭ１２が第１の指示情報供給手段として機能する。マイクロプロセッサ６、ホストインタフェースブロック７およびフラッシュメモリモジュールインタフェースブロック１０が第２の指示情報供給手段及び処理結果転送手段として機能する。
【０１０１】
また、フラッシュメモリ２０２及びメモリコントローラ２０３が本発明のフラッシュメモリモジュールである。ステップ３３１、３３３、３３５は解読ステップであり、スルーモードが第1の制御ステップである。通常モードが第2の制御ステップである。
【０１０２】
以上詳細に説明したように、本発明の一実施の形態によるシステムコントローラ、該システムコントローラを有するフラッシュメモリシステム、フラッシュメモリモジュールを制御する方法によれば、システムコントローラ３はホストシステム４から入力されるレジスタ値を解釈し、レジスタ値の値に応じて、ノンデータコマンドプロトコルまたはＰＩＯデータインコマンドプロトコルまたはＰＩＯデータアウトコマンドプロトコルのスルーモードに移行する。
【０１０３】
スルーモードにおいて、システムコントローラ３は、ホストシステム４から入力されるレジスタ値をメモリコントローラ２０３へ転送する。よって、フラッシュメモリ２０２を制御するコマンドが変更されたり、独自のコマンドであっても、システムコントローラ３自体の制御プログラムを変更する必要がなく、そのために要する時間およびコストを削減可能である。また、システムコントローラ３は、メモリコントローラ２０３から与えられるレジスタ値をホストシステム４に転送する。よって、スルーモードにおいて、システムコントローラ３とメモリコントローラ２０３との間の双方向の情報送受信が可能となる。またスルーモード移行後も、システムコントローラ３は、スルーモード終了を指示するレジスタ値の有無は判断している。システムコントローラ３は、スルーモード終了を指示するレジスタ値が設定されたと判断するとスルーモードを終了し、通常モードに復帰することができる。
【０１０４】
複数のメモリコントローラ２０３がシステムコントローラ３に接続されている場合には、ホストシステム４から入力する情報の転送先をセクタ番号レジスタ７３で指定することが可能である。
【０１０５】
また、通常モードとスルーモードとのモード移行の際には、コマンドレジスタ７７にスルーモード移行またはスルーモード終了のコマンドを入力するが、その際、シリンダローレジスタ７４、シリンダハイレジスタ７５、デバイスヘッドレジスタ７６にキーワードを入力することで、モード移行処理をより確実に行えるようになっている。
【０１０６】
以上詳細に説明したように、システムコントローラ３は、スルーモードまたは通常モードのいずれかで動作する。スルーモードの場合には、システムコントローラ３はホストシステム４とメモリコントローラ２０３の間の情報転送を行う。このとき、メモリコントローラ２０３はホストシステム４からシステムコントローラ３を介して入力されたレジスタ値に基づいて制御される。通常モードの場合には、ホストシステム４から入力されたレジスタ値をシステムコントローラ３が解釈および変換して新たなレジスタ値を生成し、メモリコントローラ２０３は生成されたレジスタ値に基づいて制御される。よって、システムコントローラ３側のモードを変更すれば、メモリコントローラ２０３の種類、仕様が変わっても制御が可能になる。
【０１０７】
本発明によるシステムコントローラ、該システムコントローラを有するフラッシュメモリシステム、フラッシュメモリモジュールの制御方法は、上述した実施の形態に限定されず、特許請求の範囲に記載した範囲で種々の変形や改良が可能である。例えば、スルーモードにおけるプロトコルとして３つのプロトコルを例にして説明したが、これらに限定されず他のプロトコルでもよい。また、各プロトコルで実行させるコマンドは上記に限定されず、変更が可能である。システムコントローラ３、メモリコントローラ２０３の機能構成は上記に限定されず、同様の機能を有するものであれば他の構成でもよい。
【図面の簡単な説明】
【０１０８】
【図１】本発明の一実施の形態によるフラッシュメモリシステムの構成を示すブロック図である。
【図２】フラッシュメモリモジュールの構成を示すブロック図である。
【図３】システムコントローラのホストインタフェースブロックの構成を示すブロック図である。
【図４】メモリコントローラのシステムコントローラインタフェースブロックの構成を示すブロック図である。
【図５】フラッシュメモリシステムの動作を説明するフローチャートである。
【図６】システムコントローラにおけるスルーモード移行処理を説明するフローチャートである。
【図７】メモリコントローラにおける消去処理を説明するフローチャートである。
【図８】メモリコントローラにおけるデータ読み出し処理を説明するフローチャートである。
【図９】メモリコントローラにおけるデータ書き込み処理を説明するフローチャートである。
【図１０】ノンデータコマンドプロトコルでのスルーモード移行を指示するレジスタ値を示す図である。
【図１１】データ消去を指示するレジスタ値を示す図である。
【図１２】メモリコントローラにおけるデータ消去動作完了を通知するレジスタ値を示す図である。
【図１３】ノンデータコマンドプロトコルでのスルーモード終了を指示するレジスタ値を示す図である。
【図１４】ＰＩＯデータインコマンドプロトコルでのスルーモード移行を指示するレジスタ値を示す図である。
【図１５】データ読み出しを指示するレジスタ値を示す図である。
【図１６】メモリコントローラにおけるデータ転送準備完了を通知するレジスタ値を示す図である。
【図１７】メモリコントローラにおけるデータ読み出し動作完了を通知するレジスタ値を示す図である。
【図１８】ＰＩＯデータインコマンドプロトコルでのスルーモード終了を指示するレジスタ値を示す図である。
【図１９】ＰＩＯデータアウトコマンドプロトコルでのスルーモード移行を指示するレジスタ値を示す図である。
【図２０】データ書き込みを指示するレジスタ値を示す図である。
【図２１】メモリコントローラにおけるデータ書き込み準備完了を通知するレジスタ値を示す図である。
【図２２】メモリコントローラにおけるデータ書き込み動作完了を通知するレジスタ値を示す図である。
【図２３】ＰＩＯデータアウトコマンドプロトコルでのスルーモード終了を指示するレジスタ値を示す図である。
【符号の説明】
【０１０９】
１  フラッシュメモリシステム
３  システムコントローラ
４  ホストシステム
１７１〜１９７  レジスタ値
２０２  フラッシュメモリ
２０３  メモリコントローラ
【図１】
2008027326.tif 000003
【図２】
2008027326.tif 000004
【図３】
2008027326.tif 000005
【図４】
2008027326.tif 000006
【図５】
2008027326.tif 000007
【図６】
2008027326.tif 000008
【図７】
2008027326.tif 000009
【図８】
2008027326.tif 000010
【図９】
2008027326.tif 000011
【図１０】
2008027326.tif 000012
【図１１】
2008027326.tif 000013
【図１２】
2008027326.tif 000014
【図１３】
2008027326.tif 000015
【図１４】
2008027326.tif 000016
【図１５】
2008027326.tif 000017
【図１６】
2008027326.tif 000018
【図１７】
2008027326.tif 000019
【図１８】
2008027326.tif 000020
【図１９】
2008027326.tif 000021
【図２０】
2008027326.tif 000022
【図２１】
2008027326.tif 000023
【図２２】
2008027326.tif 000024
【図２３】
2008027326.tif 000025