(57)【要約】　　　（修正有）【課題】専用フラッシュメモリコントローラを使用してフラッシュベースストレージシステムの性能を高めるためのシステムおよび方法を提供する。【解決手段】データを格納するための少なくとも１個のフラッシュメモリチップと、フラッシュメモリチップを制御するための少なくとも１個のフラッシュコントローラであって、システムがＤＭＡデータ転送を実行できる状態になったときにアクティブになる出力ＤＭＡ　ＲＥＱＵＥＳＴ信号を含むＤＭＡインタフェースを有するフラッシュコントローラと、フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号をアクティブにするための少なくとも１個のマイクロコントローラと、を含むシステム。【選択図】図１
2004005613.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュストレージメディアのデータ転送性能を改善するためのシステムであって、
ｉ．データを格納するための少なくとも１個のフラッシュメモリチップと、
ｉｉ．前記フラッシュメモリチップを制御するための少なくとも１個のフラッシュコントローラであって、システムがＤＭＡデータ転送を実行できる状態になったときにアクティブになる出力ＤＭＡ　ＲＥＱＵＥＳＴ信号を含むＤＭＡインタフェースを有するフラッシュコントローラと、
ｉｉｉ．前記フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号をアクティブにするための少なくとも１個のマイクロコントローラと、
を含むシステム。
【請求項２】
前記ＤＭＡ対応フラッシュメモリコントローラが、ＤＭＡデータ転送中にシステムバス上で行なわれる動作を逆転することにより、前記付加されたフラッシュチップに対して実行される動作の種類を判別する機能を更に含む、請求項１に記載のシステム。
【請求項３】
前記ＤＭＡ対応フラッシュメモリコントローラが、前記フラッシュメモリコントローラの制御レジスタに書き込まれた値に従って、前記付加されたフラッシュチップ上で実行される動作の種類を判別する機能を更に含む、請求項１に記載のシステム。
【請求項４】
前記フラッシュコントローラ用の前記ＤＭＡ対応インタフェースが、ＤＭＡコントローラに前記ＤＭＡ　ＲＥＱＵＥＳＴ信号を提供することによって、および前記データ転送に関与する前記フラッシュチップに前記種類の動作を提供することによって、フライバイデータ転送を可能にする、請求項１に記載のシステム。
【請求項５】
ＲＡＭバッファが前記データ転送に関与しており、前記データ転送中に前記ＤＭＡコントローラにより生成されるアドレスバス上の各値が前記フラッシュチップ内の正しい位置をアドレス指定するように前記ＲＡＭバッファが前記システムの各アドレスに位置付けられる、請求項１に記載のシステム。
【請求項６】
前記ＤＭＡ対応フラッシュメモリコントローラが前記ＤＭＡ転送中に前記フラッシュチップにアドレスを提供し、前記アドレスの初期値を設定し、毎ＤＭＡ転送サイクルの後に前記アドレスを増やすための機能を更に含む、請求項１に記載のシステム。
【請求項７】
フラッシュストレージメディアの性能を改善するためのシステムであって、
ｉ．データを格納するための複数のフラッシュメモリチップと、
ｉｉ．前記フラッシュメモリチップを制御するための複数のフラッシュメモリコントローラと、
ｉｉｉ．前記フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号をアクティブにするための少なくとも１個のマイクロコントローラと、
を含み、
少なくとも２個のフラッシュメモリチップが少なくとも２個の別個の前記フラッシュコントローラに接続されるように、前記フラッシュメモリチップが前記フラッシュメモリコントローラに接続されて、それによってデータ転送性能の改善を可能にするシステム。
【請求項８】
前記複数のフラッシュメモリコントローラが組み合わされて少なくとも１個のマルチコントローラを形成する、請求項７に記載のシステム。
【請求項９】
フラッシュストレージシステムの書込み性能を改善するための方法であって、
ｉ．第１のフラッシュコントローラに付加されたフラッシュチップの状態をチェックする工程と、
ｉｉ．予め与えられたページプログラミングコマンドのため前記付加されたフラッシュチップがまだＲｅａｄｙ状態になっていない場合には、前記フラッシュチップがＲｅａｄｙになるまで待機する工程と、
ｉｉｉ．データを前記フラッシュチップに転送する工程と、
ｉｖ．前記フラッシュメモリチップ上でプログラミング動作を開始する工程と、
ｖ．第二のフラッシュコントローラに付加されたフラッシュチップの前記状態をチェックする工程と、
ｖｉ．予め与えられたページプログラミングコマンドのため前記付加されたフラッシュチップがまだＲｅａｄｙ状態になっていない場合は、前記フラッシュチップがＲｅａｄｙになるまで待機する工程と、
ｖｉｉ．前記データを前記フラッシュチップに転送する工程と、
ｖｉｉｉ．前記フラッシュメモリチップ上でプログラミング動作を開始する工程と、
ｉｘ．残りのフラッシュコントローラに付加された前記フラッシュチップ上で上記動作を継続する工程と、
を含む方法。
【請求項１０】
工程（ｉｉ．）および（ｖｉ．）の後に、前記完了したプログラミング動作の状態を受信および記録する工程を更に含む、請求項９に記載の方法。
【請求項１１】
工程（ｖｉｉ．）の後に、エラー補正およびエラー検出情報からなる群から選択されたデータを前記フラッシュチップに転送する工程を更に含む、請求項９に記載の方法。
【請求項１２】
工程（ｖｉｉ．）の後に、前記ユーザデータの論理および物理アドレスをマッピングするために前記フラッシュストレージシステムが使用するマッピング情報を前記フラッシュチップに転送する工程を含む、請求項９に記載の方法。
【請求項１３】
データがすべて転送された後、書込みを行なった前記フラッシュチップ上での前記プログラミングが完了するまで待機する工程を更に含む、請求項９に記載の方法。
【請求項１４】
前記フラッシュチップの状態を受信および記録する工程を更に含む、請求項１３に記載の方法。
【請求項１５】
フラッシュストレージシステムの読取り性能を改善するための方法であって、
ｉ．第１のフラッシュコントローラに付加されたフラッシュチップに読取りコマンドを送信する工程と、
ｉｉ．次のフラッシュコントローラに付加されたフラッシュチップに前記読取りコマンドを送信する工程と、
ｉｉｉ．データが前記第１のフラッシュコントローラに付加された前記フラッシュチップから転送できる状態になるまで待機する工程と、
ｉｖ．前記フラッシュチップからデータを転送する工程と、
ｖ．残りのフラッシュコントローラに付加されたフラッシュチップについて段階（ｉｉ．）〜（ｉｖ．）を繰り返す工程と、
を含む方法。
【請求項１６】
工程（ｉｖ．）の後で、ＥＣＣ検証および補正を実行する工程と、ＥＣＣ回路からのデータの取得状態を記録する工程とを更に含む、請求項１５に記載の方法。
【請求項１７】
フラッシュストレージシステムのコピー性能を改善するためのシステムであって、
ｉ．データを格納するための少なくとも２個のフラッシュメモリチップと、
ｉｉ．前記フラッシュメモリチップを制御するための少なくとも２個のフラッシュコントローラであって、そのうちの少なくとも１個が、前記コントローラが新規データ転送を実行できる状態になったときにアクティブになる出力ＤＭＡ　ＲＥＱＵＥＳＴ信号を含むＤＭＡインタフェースを有する少なくとも２個のフラッシュコントローラと、
ｉｉｉ．前記フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号とをアクティブにするための少なくとも１個のマイクロコントローラと、
を含み、
少なくとも２個の前記フラッシュメモリチップが少なくとも２個の別個の前記フラッシュコントローラに接続されるように、前記フラッシュメモリチップが前記フラッシュメモリコントローラに接続されるシステム。
【請求項１８】
フラッシュストレージシステムのコピー性能を改善するための方法であって、
ｉ．第１のフラッシュコントローラに付加されたフラッシュチップに読取りコマンドを送信する工程と、
ｉｉ．前記フラッシュチップからのＤＭＡ転送を実行するためのＤＭＡ対応フラッシュコントローラおよびシステムＤＭＡコントローラをセットアップする工程と、
ｉｉｉ．データが前記第１のフラッシュコントローラに付加された前記フラッシュチップから転送できる状態になるまで待機する工程と、
ｉｖ．前記フラッシュチップから、第二のフラッシュコントローラに付加されたフラッシュチップへ前記ＤＭＡ転送を使用して前記データを転送する工程と、
ｖ．前記データを受信する前記フラッシュメモリチップ上でプログラミング動作を開始する工程と、
ｖｉ．前記プログラミング動作が完了するまで待機する工程と、
を含む方法。
【請求項１９】
工程（ｉｖ．）の後で、ＥＣＣ検証および補正を実行する工程と、取得データの状態を記録する工程とを更に含み、データ補正が必要とされる場合には、
ｉ）Ｒｅｓｅｔコマンドを送信することにより、前記第二のフラッシュコントローラに付加された前記チップへの前記転送動作を打ち切る工程と、
ｉｉ）前記第１のフラッシュコントローラに付加された前記フラッシュチップにＲｅａｄコマンドを送信し、前記フラッシュチップがＲｅａｄｙになるまで待機し、前記データを前記ＲＡＭバッファに転送することによって、ＲＡＭバッファへデータを読み込む工程と、
ｉｉｉ）前記ＲＡＭバッファ内の前記データを補正する工程と、
ｉｖ）前記第二のフラッシュコントローラに付加された前記チップに新規転送動作を開始し、前記ＲＡＭバッファからの補正データを前記チップへ転送する工程と、
ｖ）請求項１６に記載の工程（ｖ．）を継続する工程と、
が実行される、請求項１８に記載の方法。
【請求項２０】
工程（ｉｖ．）の後に、前記プログラミング動作の状態を受信および記録する工程を更に含む、請求項１８に記載の方法。
【請求項２１】
工程（ｉｖ．）の後に、エラー補正とエラー検出情報からなる群から選択されたデータを前記フラッシュチップへ転送する工程を更に含む、請求項１８に記載の方法。
【請求項２２】
工程（ｉｖ．）の後に、前記ユーザデータの論理および物理アドレスをマッピングするために前記フラッシュストレージシステムが使用するマッピング情報を前記フラッシュチップへ転送する工程を更に含む、請求項１８に記載の方法。
【請求項２３】
各動作に関与する前記フラッシュコントローラのうち少なくとも１個がＤＭＡ対応となるように、すべてのフラッシュメモリコントローラに付加されたフラッシュチップについて前記動作を繰り返す工程を更に含む、請求項１８に記載の方法。
【請求項２４】
フラッシュストレージシステムのコピー性能を改善するためのシステムであって、
ｉ．データを格納するための少なくとも３個のフラッシュメモリチップと、
ｉｉ．前記フラッシュメモリチップを制御するための少なくとも３個のフラッシュコントローラであって、そのうちの少なくとも２個が、前記コントローラが新規データ転送を実行できる状態になったときにアクティブになる出力ＤＭＡ　ＲＥＱＵＥＳＴ信号を含むＤＭＡインタフェースを有する、少なくとも３個のフラッシュコントローラと、
ｉｉｉ．前記フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号をアクティブにするための少なくとも１個のマイクロコントローラと、
を含み、
少なくとも３個の前記フラッシュメモリチップが少なくとも３個の別個の前記フラッシュコントローラに接続されるように前記フラッシュメモリチップが前記フラッシュメモリコントローラに接続されたシステム。
【請求項２５】
フラッシュストレージシステムのコピー性能を改善するための方法であって、
ｉ．第１のフラッシュコントローラに付加されたフラッシュチップの状態をチェックする工程と、
ｉｉ．予め与えられたページプログラミングコマンドのため前記付加されたフラッシュメディアがまだＲｅａｄｙ状態になっていない場合に、前記フラッシュメディアがＲｅａｄｙになるまで待機する工程と、
ｉｉｉ．前記フラッシュチップに読取りコマンドを送信する工程と、
ｉｖ．前記フラッシュチップからのＤＭＡ転送を実行するためにＤＭＡ対応フラッシュコントローラおよびシステムＤＭＡコントローラをセットアップする工程と、
ｖ．データが前記フラッシュチップから転送できる状態になるまで待機する工程と、
ｖｉ．前記フラッシュチップから第二のフラッシュコントローラに付加されたフラッシュチップへ前記ＤＭＡ転送を使用して前記データを転送する工程と、
ｖｉｉ．前記データを受信した前記フラッシュメモリチップ上でプログラミング動作を開始する工程と、
ｖｉｉｉ．残りのフラッシュコントローラに付加されたフラッシュチップ上で上記動作を継続しながら、「転送元」および「転送先」フラッシュコントローラの番号を循環的に１増やす工程と、
を含む方法。
【請求項２６】
前記データがすべて転送された後で、書込みを行なったフラッシュチップ上での前記プログラミングが完了するまで待機する工程を更に含む、請求項２５に記載の方法。
【請求項２７】
前記プログラミング動作の状態を受信および記録する工程を更に含む、請求項２６に記載の方法。
【請求項２８】
工程（ｉｉ．）の後に、前記プログラミング動作の状態を受信および記録する工程を更に含む、請求項２５に記載の方法。
【請求項２９】
工程（ｖ．）の後で、ＥＣＣ検証および補正を実行する工程と、取得データの状態を記録する工程とを更に含み、データ補正が必要な場合に、
ｉ）Ｒｅｓｅｔコマンドを送信することにより、前記第二のフラッシュコントローラに付加された前記チップへの前記転送動作を打ち切る工程と、
ｉｉ）前記第１のフラッシュコントローラに付加された前記フラッシュチップにＲｅａｄコマンドを送信し、前記フラッシュチップがＲｅａｄｙになるまで待機し、前記データを前記ＲＡＭバッファに転送することによってＲＡＭバッファへデータを読み込む工程と、
ｉｉｉ）前記ＲＡＭバッファ内の前記データを補正する工程と、
ｉｖ）前記第二のフラッシュコントローラに付加された前記チップへの新規転送動作を開始し、前記ＲＡＭバッファからの補正データを前記チップへ転送する工程と、
ｖ）請求項２５に記載の工程（ｖｉ．）に従って更なる動作を継続する工程と、
が実行される、請求項２５に記載の方法。
【請求項３０】
工程（ｖ．）の後に、エラー補正およびエラー検出情報からなる群から選択されたデータを前記フラッシュチップに転送する工程を更に含む、請求項２５に記載の方法。
【請求項３１】
工程（ｖ．）の後で、前記ユーザデータの前記論理および物理アドレスをマッピングするために前記フラッシュストレージシステムが使用するマッピング情報を前記フラッシュチップへ転送する工程を更に含む、請求項２５に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は専用フラッシュコントローラを使用してフラッシュベースストレージシステムの読取りおよび書込み性能を高めるためのシステムと方法とに関する。
【０００２】
【従来の技術】
既存のフラッシュベースストレージシステムは、様々な種類のロジックを使用してフラッシュアレイにデータおよび制御信号を提供する。それらの方法のうち、（イスラエル国テルアビブのＭ−Ｓｙｓｔｅｍｓ　Ｆｌａｓｈ　Ｄｉｓｋ　Ｐｉｏｎｅｅｒｓ社が何年も使用してきた）１つは、片側からはＣＰＵデータと、アドレスバスと、制御信号とに接続され、他方の側からは要求信号の提供先となるフラッシュ構成要素に接続された専用コントローラを有するものである。ＣＰＵは、メモリ内の「ウィンドウ」を通じてフラッシュコントローラおよびフラッシュアレイにアクセスする。いくつかのアドレスへの読取りおよび書込みアクセスは、構成レジスタ、チップセレクタレジスタ、状態レジスタ、あるいはＥＣＣレジスタなどのその内部レジスタへのアクセスとしてコントローラによって復号される。他のアドレスへのアクセスは、フラッシュアレイへの直接アクセスとして復号される。例えば、ＣＰＵは、特定のフラッシュチップから読取り動作を実行する場合、
ａ）特定のチップを指すようチップセレクタレジスタを設定し、
ｂ）選択したチップに読取りコマンドを送信し（必要に応じて、該当コントローラのレジスタにＣｏｍｍａｎｄまたはＡｄｄｒｅｓｓモードを指定し、フラッシュアレイウィンドウへコマンドおよび／またはアドレスを書き込む）、
ｃ）当該フラッシュチップが（それからのデータ読取りを行なう）準備を整えるまで待機し、
ｄ）フラッシュアレイウィンドウからＲＡＭへデータを読み取る。
【０００３】
【発明が解決しようとする課題】
このシステムの限界の１つは、フラッシュアレイがメモリのようなデバイスとして扱われるときに、ＣＰＵが「フライバイ」ダイレクトメモリアクセス（ＤＭＡ）動作を利用してデータ転送を行うことができないことである。ダイレクト・メモリ・アクセス（ＤＭＡ）は、付加されたデバイス（ディスクドライブなど）からコンピュータのマザーボード上のメモリにデータを直接送信することを可能にする、一定のコンピュータバスアーキテクチャが提供する機能である。マイクロプロセッサはデータ転送への関与から解放され、従ってコンピュータ全体の動作を高速化する（Ｗｉｎｎ　Ｌ．Ｒｏｓｃｈ，　Ｔｈｅ　Ｗｉｎｎ　Ｌ．Ｒｏｓｃｈ　Ｈａｒｄｗａｒｅ　Ｂｉｂｌｅ　（第３版）、Ｓａｍｓ　Ｐｕｓｂｌｉｓｈｉｎｇ，　１９９４，　最新版：１９９９年１０月１３日）。２個のメモリのようなデバイスがこの転送に関与している場合（フラッシュアレイおよびＲＡＭなど）、「フライバイ」転送を行なうことはできない。その理由は、システムは一度に読取り動作または書込み動作のいずれかを指示できるのみであり、２個のデバイスの転送方向を同時に指示することができない。そのため、２個のメモリのようなデバイス間でのすべてのＤＭＡ転送は「バッファ格納」される。各ＤＭＡサイクル中、ＤＭＡコントローラはまず１個のデバイスから読取りを行ってから、そのデータを他のデバイスへ書き込む。ＤＭＡ転送がメモリのようなデバイスとＤＭＡ対応入出力（Ｉ／Ｏ）デバイスとの間で行なわれる場合、各ＤＭＡサイクル時には、データは１個のデバイスから読み取られ、他方のデバイスへ書き込まれる。このような動作は、メモリのようなデバイスがシステムバスの読取りおよび書込み信号に従いながら、ＤＭＡ対応Ｉ／Ｏデバイスが他の手段による転送の方向（読取りまたは書込み）を知っていることから可能になる。「フライバイ」モードが「バッファ格納」モードより高速なのは明らかである。
【０００４】
既存システムの他の限界は、フラッシュアレイが「Ｎｏｔ　Ｒｅａｄｙ」（動作不能）状態のときにシステムがアイドル状態になることである。ページアクセスを有するフラッシュチップがページ読取りコマンドを与えられると、その内部処理のための時間を必要とする。この時間中、システムはフラッシュとの間で情報を転送したり、またはフラッシュとともに他の動作を実行することができず、従って、「Ｎｏｔ　Ｒｅａｄｙ」状態が終わるまで待機しなければならない。同様に、ページ書込みやブロック削除のコマンドが与えられると、フラッシュチップは内部処理を実行し、その間、フラッシュチップは「Ｎｏｔ　Ｒｅａｄｙ」状態になる。この間、システムはフラッシュとの間で情報を転送したり、またはフラッシュとともに他の動作を行なうことができず、従って、完全な効率で動作しない。
【０００５】
既存システムのさらに別の制限は、データのコピー方法である。フラッシュストレージシステムの正常動作時には、いくつかのページが１個のブロックから他のブロックにコピーされるはずである。既存のシステムでは、データはまずソースページから中間のＲＡＭバッファへ読み込まれ、その結果、宛先ページに書き込まれる。このような方法は、データ転送が二度行なわれることから、あまり効率的ではない。
【０００６】
従って、フラッシュコントローラにＤＭＡ機能を追加して、フラッシュアレイとの間でより高速な「フライバイ」ＤＭＡ転送を可能にするためのシステムおよび方法に対するニーズが存在することが広く認識されており、またこれらを有することは非常に有利となるだろう。
【０００７】
更に、フラッシュチップが「Ｎｏｔ　Ｒｅａｄｙ」状態にある間、データの転送あるいはフラッシュシステムの動作を継続するための方法に対する更なるニーズが存在する。
【０００８】
更に、中間ＲＡＭバッファへの読込みを必ずしも必要とせずに、１個のフラッシュチップから他のフラッシュチップへのデータの直接転送を可能し、それによってコピー動作の時間を短縮できる方法に対するニーズが存在する。
【０００９】
【課題を解決するための手段】
本発明では、専用フラッシュコントローラを使用してフラッシュベースストレージシステムの読取りおよび書込みの性能を高めるためのシステムと方法とが提供される。
【００１０】
本発明によると、フラッシュコントローラにＤＭＡ機能を追加してフラッシュアレイとの間でのより高速な「フライバイ」ＤＭＡ転送を可能にする方法を記載することによって、上述の限界に対する解決策を提供する。
【００１１】
別の実施形態では、１個以上のフラッシュチップが「Ｎｏｔ　Ｒｅａｄｙ」（動作不能）状態である間、他のフラッシュチップがデータを転送したり、あるいはフラッシュシステムの動作を継続できるように複数のフラッシュコントローラを使用するための方法について記載する。
【００１２】
更に別の実施形態では、本発明は、ＤＭＡ機能を備えた複数のフラッシュコントローラを使用して、データを中間ＲＡＭバッファに必ずしも読み込まずに、データが１個のフラッシュチップから他のフラッシュチップへと（１回の動作で）直接転送されるようにし、それによってコピー動作の時間を短縮するための方法について記載する。
【００１３】
本発明の他の実施形態は、フラッシュベースストレージシステムの設計が簡素化される、複数のフラッシュコントローラの機能を組み合わせて１個のマルチコントローラを作る方法を記載している。
【００１４】
本発明はこのため４つの主な方法から構成される。第１に、ページプログラミング時間とページ読取り時間が効率的に短縮される、複数のフラッシュコントローラを使用する方法が記載される。第２に、データ転送サイクルを減らすフラッシュコントローラとのＤＭＡインタフェースが記載される。第３に、ページコピー時間が効果的に短縮される、複数のフラッシュコントローラを使用する方法が記載される。第４に、複数のフラッシュコントローラの機能を組み合わせて１個のマルチコントローラを作る方法も提供される。
【００１５】
その好適な形態において、本発明は、ページプログラミングおよびページコピー時間を短縮するように編成された、複数のフラッシュコントローラまたはＤＭＡインタフェース付きマルチコントローラを備えたソリッドステートストレージシステムを含む。
【００１６】
【発明の実施の形態】
本発明は、専用フラッシュコントローラを使用して、フラッシュベースストレージシステムの読取りおよび書込み性能を高めるためのシステムと方法に関するものである。
【００１７】
具体的には、本発明は、フラッシュチップが「Ｒｅａｄｙ」（動作可能）状態に戻るのを待機せずにデータを転送するためのシステムに関する。更に、フラッシュアレイとの間でのより高速な「フライバイ」ＤＭＡ転送が可能となるように、フラッシュコントローラにＤＭＡ機能を追加するためのシステムおよび方法が記載される。その結果、フラッシュメモリシステムが、中間ＲＡＭバッファにデータを必ずしも読み込むことなく、１個のフラッシュチップから別のフラッシュチップへのデータの直接転送を可能にし、それによってコピー動作の時間を短縮できる方法について記載される。更に、複数のフラッシュコントローラの機能を１個のマルチコントローラに組み合わせるための方法が記載される。
【００１８】
本発明のシステムは、その好適な実施形態においては、少なくとも１個のマイクロコントローラ（ＣＰＵ）と、フラッシュコントローラと、少なくとも１個のフラッシュメモリチップとを含む。フラッシュメモリチップの制御およびデータ信号は、フラッシュコントローラへ接続される。ＣＰＵは、フラッシュコントローラのインタフェースを使用して、アクティブにするフラッシュメモリチップの制御およびデータ信号を指定する。ＣＰＵがＲｅａｄ（読取り）またはＷｒｉｔｅ（書込み）アクセス動作を実行すると、それに対応するフラッシュチップのＲｅａｄまたはＷｒｉｔｅ信号がアクティブになる。この方式は、その簡単さと便利さが一般的に受け入れられているが、こうした方式では、ＣＰＵはＲＡＭとの間でのデータ転送に「フライバイ」ダイレクト・メモリ・アクセス（ＤＭＡ）動作を使用できない。２個のメモリのようなデバイスが転送に係わっている場合（フラッシュアレイとＲＡＭなど）、「フライバイ」転送ができない。これは、システムが一度に示せるのはＲｅａｄまたはＷｒｉｔｅ動作のいずれかであり、２個のデバイスの転送方向を同時に示すことはできないためである。このため、２個のメモリのようなデバイス間でのすべてのＤＭＡ転送は「バッファ格納」される。つまり、各ＤＭＡサイクルの間、ＤＭＡコントローラは最初に１個のデバイスから読取りを行ない、次いでそのデータを他方のデバイスに書き込む。ＤＭＡ転送がメモリのようなデバイスとＤＭＡ対応入出力（Ｉ／Ｏ）デバイスとの間で行なわれる場合は、各ＤＭＡサイクルの間、データは１個のデバイスから読み取られ、他方のデバイスに書き込まれる。メモリのようなデバイスがシステムバスのＲｅａｄおよびＷｒｉｔｅ信号に従い、方、ＤＭＡ対応Ｉ／Ｏデバイスが他の手段によって転送の方向（読取りまたは書込み）を知ることから、こうした動作が可能になる。この「フライバイ」モードは「バッファ格納」モードよりも高速になることは明白である。本発明は、フラッシュアレイとの間でのより高速な「フライバイ」ＤＭＡ転送が可能となるようにフラッシュコントローラにＤＭＡ機能を追加する方法を記載する。
【００１９】
本発明の別の実施形態は、上記のシステムに類似しているが、複数のフラッシュメモリチップを含むシステムを含むものである。この実施形態は、フラッシュアレイが「ＮｏｔＲｅａｄｙ」状態のときにシステムがアイドル状態になる、システムの限界に対応する。ページアクセスを有するフラッシュチップは、ページ読取りコマンドを与えられると、その内部処理のための時間を必要とする。この時間中、一般的なシステムでは、フラッシュとの間で情報を転送することも、またはそれとともに他の動作を実行することもできず、従って、「Ｎｏｔ　Ｒｅａｄｙ」状態が完了するまで待機しなくてはならない。同様に、ページ書込みコマンド、またはブロック削除コマンドを与えられると、フラッシュチップは内部処理を実行し、その間、フラッシュチップは「Ｎｏｔ　Ｒｅａｄｙ」状態になる。この時間中、一般的なシステムでは、フラッシュとの間で情報を転送することも、またフラッシュとともに他の動作を実行することもできず、その結果、完全な効率で動作しない。本実施形態は、１個以上のフラッシュチップがＮｏｔ　Ｒｅａｄｙのときにその他のフラッシュチップがデータの転送を継続するように、複数のフラッシュコントローラを使用する方法を記載している。
【００２０】
本発明の他の実施形態は、データがコピーされる方法を改善する。一般的なフラッシュストレージシステムが正常に機能しているときは、いくつかのページが１個のブロックから他のブロックへコピーされるはずである。既存システムでは、データはまず最初にソースページから中間ＲＡＭバッファの中で読み込まれ、その後、宛先ページに書き込まれる。このような方法はデータ転送が二度行なわれるため十分に効率的ではないのに対して、本発明の本実施形態による方法は、データ転送が一度のみで済むよう考案されている。この実施形態は、中間ＲＡＭバッファに必ずしもデータを読み込むことなく、１個のフラッシュチップから他のフラッシュチップへ直接データを転送し、それによりコピー動作の時間を短縮するよう、ＤＭＡ機能を有する複数のフラッシュコントローラを使用するための方法について記載している。
【００２１】
本発明は、次の実施形態によるフラッシュベースストレージシステムの効率を最大化する。
１）本発明の第１の実施形態では、ページプログラミング時間を部分的に「隠す」ことによってシステムアイドル時間を短縮するために２個以上のフラッシュメモリコントローラが提供される。各「フラッシュメモリコントローラ」は、多数のフラッシュチップに接続される。各コントローラは、それにコマンド、アドレス、またはデータを送信する目的で特定のフラッシュチップを選択することができ、エラー補正コード（ＥＣＣ）シンドロームを計算および検証することができる。
【００２２】
この方法では、各々それ自身のフラッシュチップバンクに接続された２個以上のフラッシュメモリコントローラが必要である。書込み動作時、データはすべてのフラッシュコントローラに付加されたフラッシュメディア上に書き込まれる。それぞれの単一のコントローラが一度にアドレス指定できるフラッシュチップは１個のみであり、従って、そのフラッシュチップのみがＣｈｉｐ　Ｓｅｌｅｃｔ（チップ選択）信号を受信することから、複数のフラッシュコントローラを有することが重要である。Ｃｈｉｐ　Ｓｅｌｅｃｔはそのフラッシュコントローラに付加されたその他すべてのフラッシュチップについて削除されるため、ＣｈｉｐＳｅｌｅｃｔを削除すると、選択したフラッシュチップ以外のフラッシュチップで書込み動作が行なわれる場合はその書込み動作を阻害する場合がある。
【００２３】
番号が０〜Ｎ−１のＮ個（Ｎ＞１）のフラッシュメモリコントローラを有するこのようなシステムを実行するためのアルゴリズムは（データ経路幅はフラッシュメモリコントローラによりサポートされるデータビット数に等しい）、以下の通りである。
ａ）第１のフラッシュメモリコントローラで動作を開始するようシステムを設定する。換言すると、「現行の」フラッシュメモリコントローラを番号０に設定する。
ｂ）予め与えられたページプログラミングコマンドにより、付加されたフラッシュメディアがまだＲｅａｄｙ（動作可能）状態になっていない場合は、フラッシュメディアがＲｅａｄｙ（動作可能）になるまで待機し、その後必要に応じて変数またはメモリレジスタの状態を受信および記録する。「現行」フラッシュメモリ上のフラッシュメディアが新しいデータを受信できる状態になったらすぐに、データ転送を開始する（フラッシュメディアに書き込む）。
ｃ）「現行」フラッシュメモリコントローラ上のフラッシュメディアが新規データの受信を完了するとすぐに、それにページプログラムコマンドを与え、次に循環的に次にくるフラッシュメモリコントローラと協働するようシステムを設定する。換言すると、「現行」フラッシュメモリコントローラを（ＣｕｒｒｅｎｔＮｕｍｂｅｒ＋１）ｍｏｄ　Ｎに設定し、書き込むデータが他にある場合は、パラグラフｂ）から動作を継続する。
ｄ）新規データの書込みがすべて終わったら、必要に応じて、すべてのフラッシュメモリコントローラのフラッシュメディア上でのページプログラミング動作が完了するまで待機し、必要に応じてこれらの動作の状態を受信および記録する。データストレージシステムによって、障害状態の報告をホストに返すか、あるいは書込み動作をフラッシュメディアの異なる場所で再試行するのに、このページプログラミング状態（変数、変数のアレイ、またはメモリレジスタに記録）を使用してデータストレージシステムページプログラム状態を使用することができる。
【００２４】
本発明によるこのような実施形態の原理および動作は、以下の図とそれに付随する説明を参照して更によく理解される。
【００２５】
図１、２、および３は、上記アルゴリズムを示す種々のタイムチャートである。
【００２６】
図１は、書込みプロセス時のフラッシュシステムの活動を示す。フラッシュシステムは、ＣＰＵ、フラッシュコントローラ、ＲＡＭ等を含む。ＣＰＵは、ページプログラムコマンドを第１のコントローラに送信し、それによりアドレス指定されたフラッシュチップへのデータ転送を開始する。特定のフラッシュページへのデータの転送が完了すると、そのフラッシュチップに「Ｓｔａｒｔ　Ｐｒｏｇｒａｍｍｉｎｇ」（プログラム開始）コマンドが送信される。その瞬間、第１のコントローラに付加されたフラッシュチップは状態を「Ｎｏｔ　Ｒｅａｄｙ」（動作不能）に変更し、その内部フラッシュセルへのデータのプログラミング動作を開始する。しかし、システムは、そのページプログラミング動作の完了まで待機せず、第二のフラッシュコントローラにページプログラムコマンドを送信し、それによってアドレス指定されるフラッシュチップへのデータ転送を開始する。このようにして、データ転送とページプログラミング動作が第１と第二のコントローラ上で循環的に開始されて、事実上、ページプログラミング時間が完全に「隠され」て、性能を大幅に改善する。更に、このようにして、データバスの転送速度と等しい書込み速度を有するフラッシュデータストレージシステムを構築できる。
【００２７】
しかし、１つのページのデータ転送時間は、図２の「動作していない時間」で示されるように、ページプログラミング時間を完全にカバーすることが保証されるわけではない。しかし、この場合、システムアーキテクトは、図３に示すように、単に、他のフラッシュコントローラをシステムに追加することで性能を高められる。ここにおいて、ページプログラミング時間は、他の２個のコントローラへのデータ転送の時間によって隠される。実際上、フラッシュデータストレージシステムがページプログラミング時間に関連する「動作していない」時間を有するかぎり、これはフラッシュコントローラの数を増やすことで隠すことができる。
【００２８】
データ経路幅がフラッシュメモリコントローラによりサポートされるデータビット数の倍数である場合には、システムは、データ経路上の複数のフラッシュメモリコントローラをインターリーブすることによって細部まで一般化される。この場合には、各データ転送は、複数のインターリーブされたフラッシュメモリコントローラを、同時に、同じ方法でアクティブ化する。
【００２９】
２）本発明の第２の実施形態では、ページフェッチ時間を隠すのに２個以上のフラッシュメモリコントローラの使用を必要とする。一定のフラッシュチップにおいては、読取りコマンドの発行直後にページの内容を読み取ることはできず、読み取りが可能になるのは当該チップが内部読取り動作を実行してからであり、その間、チップは「Ｂｕｓｙ」（ビジー状態）になる。ページを「フェッチ」する動作が完了するまでデータ転送を開始できないため、ページフェッチ時間もまたシステム非効率の原因となる。図８に示すように、複数のフラッシュメモリコントローラを伴う設計を使用すると、システムは、ページプログラミング時間を「隠す」方法と同様、ページフェッチ時間を「隠す」ことができる。
【００３０】
番号が０．．．Ｎ−１のＮ（Ｎ＞１）個のフラッシュメモリコントローラを備えたこのようなシステムを実行するためのアルゴリズム（データ経路幅はフラッシュメモリコントローラによりサポートされるデータビット数に等しい）は、以下の通りである。
ａ）第１のフラッシュメモリコントローラで動作を開始するようシステムを設定する。換言すると、「現行」フラッシュメモリコントローラを０に設定し、次いで読取りコマンドを、当該コントローラに付加されたフラッシュメディアに送信する。
ｂ）循環的に「現行」コントローラ、すなわち、番号が（ＣｕｒｒｅｎｔＮｕｍｂｅｒ＋１）ｍｏｄ　Ｎのコントローラの後にくるフラッシュコントローラに読取りコマンドを送信する。
ｃ）「現行」フラッシュメモリコントローラ上のフラッシュメディアがデータ送信できる状態になったらすぐに、「現行」フラッシュメモリコントローラからのデータ転送を開始する（フラッシュメディアからの読取り）。
ｄ）「現行」フラッシュメモリコントローラ上のフラッシュメディアがデータ送信を完了したらすぐに、必要に応じてＥＣＣ検証および補正を実行し、次に、「現行」フラッシュメモリコントローラを「次の」フラッシュメモリコントローラに設定し、読取りデータがまだ他にある場合はパラグラフｂ）に進む。
【００３１】
このような方法を実行することにより、１個のフラッシュコントローラに付加されたフラッシュメディア上でのページフェッチ時間は、他のフラッシュメディアコントローラに付加されたフラッシュメディアからのデータ送信を継続することにより、部分的に「隠される」。
【００３２】
データ経路幅がフラッシュメモリコントローラによりサポートされるデータビット数の倍数である場合は、システムは、データ経路上の複数のフラッシュメモリコントローラをインターリーブすることによって細部まで一般化される。この場合、それぞれのデータ転送は、複数のインターリーブされたフラッシュメモリコントローラを、同時に、同一の方法でアクティブにする。
【００３３】
３）本発明の第３の実施形態は、データ転送時間の短縮のため少なくとも１個のＤＭＡ対応フラッシュメモリコントローラの使用を必要とする。通常、ＣＰＵベースのシステムにおけるフラッシュメモリアレイへのアクセスを制御／実行するコントローラは、片側からはＣＰＵデータ、アドレスバス、および制御信号へ接続され、他方の側からはフラッシュ構成部品に接続されて、必要な信号を提供する。ＣＰＵは、そのメモリ内のアドレス範囲からフラッシュコントローラとフラッシュアレイにアクセスする。一定のアドレスへの読取りおよび書込みアクセスは、構成レジスタ、チップセレクタレジスタ、状態レジスタ、またはＥＣＣレジスタなどの内部レジスタへのアクセスとしてコントローラにより復号される。他のアドレスへのアクセスは、フラッシュアレイへの直接のアクセスとして復号される。「ＤＭＡ対応」フラッシュメモリコントローラは、「非ＤＭＡ対応」フラッシュメモリコントローラが所有していない以下の追加機能を有する。
ｉ）コントローラが新規データ転送を実行または受諾できる状態になると常にアクティブにされるＤＭＡ　ＲＥＱＵＥＳＴ信号を提供する。
ｉｉ）フラッシュメモリコントローラがＤＭＡおよび非ＤＭＡデータ転送の両方を実行できる場合、以下のデータ転送がＤＭＡプロトコルを使用すべきかどうかの指定を可能にする内部レジスタを有している必要がある。
ｉｉｉ）このコントローラがＣＰＵまたはマイクロコントローラの信号を必ずしも使用することなく、そのレジスタ設定によってデータ転送の方向を任意に判別することを可能にする内部レジスタを必要に応じて有する。
ｉｖ）フラッシュチップへのＲｅａｄ／Ｗｒｉｔｅ信号を論理的に生成すること、および／またはＤＭＡコントローラによって確認された転送数を計数することによって使用できるＤＭＡ　ＡＣＫＮＯＷＬＥＤＧＥ信号（ＤＭＡコントローラが生成）の任意入力。
ｖ）必要に応じて転送対象データの量を計数できる。この目的のため、コントローラは、必要に応じて、転送動作前に転送するデータの量を設定し、またそれをその動作時および／または動作後に検査することを可能にする１個以上の内部レジスタを有する。
ｖｉ）必要に応じてデータ転送が行なわれる内部フラッシュメディアアドレスを増やすことができる。この目的のため、コントローラは、転送動作前のこのアドレスの設定と、その動作中および／または動作後のその検査を可能にする１個以上の内部レジスタを必要に応じて有する。
ｖｉｉ）必要に応じて外部信号を受信して転送を終了できる。
ｖｉｉｉ）転送動作が何らかの理由（転送の完了などを含む）で停止したときに（多くの場合、割込を行なうために）信号を必要に応じてアクティブにすることができる。
ｉｘ）検査を行なってデータ転送の状態と、また必要に応じてすべての遭遇したエラーとを判別できる内部状態レジスタを必要に応じて有する。この状態レジスタを必要に応じて書き込むことで、「厄介な」ステータスビットをクリアできるようにしてもよい。
ｘ）フラッシュチップがデータ転送動作中に正しいアドレスの提供を求める場合には、フラッシュメモリコントローラは、フラッシュチップ内でのＤＭＡ転送の開始アドレスの設定を可能にする内部レジスタと、ＤＭＡ転送時にそのフラッシュチップにアドレスを提供する機能とを必要に応じて有する。フラッシュチップに提供されるアドレスは、このレジスタに提供された開始値から、各ＤＭＡ転送サイクル後に増やされる。
ｘｉ）あるいは、フラッシュチップが、データ転送動作時に正しいアドレスの提供を要求する場合には、フライバイＤＭＡデータ転送動作の宛先またはソースであるＲＡＭバッファは、転送時にＤＭＡコントローラによって生成されるアドレスバス上の値がフラッシュチップ内の正しい位置をアドレス指定するように、このようなシステムのアドレス内に配置する必要がある。
【００３４】
ＲＡＭと非ＤＭＡ対応フラッシュメモリコントローラとの間のデータ転送サイクルは、（ソースからの）読取りと（宛先への）書込みという少なくとも２つの動作からなる。このデータ転送サイクルはＣＰＵによって実行でき、この場合、データはＣＰＵレジスタ内に一時的に格納される。あるいは、データ転送サイクルは、「バッファ格納」モードで一定のＤＭＡコントローラにより実行でき、その場合、データはＤＭＡコントローラ内部レジスタ内に一時的に格納される（ＤＭＡコントローラは、ＣＰＵ、チップセット、またはその他の制御ロジックの一部として実装できる）。いずれの場合にも、データ転送サイクルは、読取り１回と書込み１回という２回の動作を必要とする。これは、このシステムで一度に指示できるのはＲｅａｄまたはＷｒｉｔｅ動作のいずれかのみであり、２台のデバイスの転送方向を同時に指示できないためである。それとは対照的に、ＲＡＭとＤＭＡ対応フラッシュメモリコントローラ間でのデータ転送は１回の（「フライバイ」）動作を必要とするのみであり、このとき、データはソースからの読取りと宛先への書込みが同時に行なわれる。このような動作は、ＲＡＭがシステムバスＲｅａｄ／Ｗｒｉｔｅ信号に従う一方、ＤＭＡ対応フラッシュメモリコントローラがその追加レジスタにより指示される転送（読取りまたは書込み）の方向を知り、それに付加されたフラッシュチップについての適正な信号を生成することから可能となる。このＲｅａｄおよびＷｒｉｔｅ動作は通常同時に行なわれるため、「フライバイ」転送サイクルは、通常、「バッファ格納」転送サイクルよりも約２倍高速となる。
【００３５】
図４ａと４ｂは、メモリと非ＤＭＡ対応フラッシュメモリコントローラ間での読取りおよび書込みのデータ転送サイクルを示す。図４ａに示す通り、ＲＡＭからフラッシュアレイへデータを転送するプロセスは２つの段階を伴う。第１の段階で、データはＲＡＭから内部ＤＭＡコントローラのレジスタへ読み込まれ、第二の段階では、データは内部ＤＭＡコントローラのレジスタからフラッシュアレイへ読み込まれる。同様に、図４ｂは、フラッシュアレイからＲＡＭへデータ転送する動作を示しているが、これも２つの段階を伴う。つまり、第１にデータがフラッシュアレイから内部ＤＭＡコントローラのレジスタへ読み込まれ、第二にデータは内部ＤＭＡコントローラのレジスタからＲＡＭへ書き込まれる。
【００３６】
図５ａと５ｂはそれぞれ、図４ａと４ｂとの比較用に、メモリとＤＭＡ対応フラッシュメモリコントローラとの間の読取りおよび書込みデータ転送サイクルを示す。図５ａに示すように、ＲＡＭからフラッシュメモリへデータを転送するプロセスは、１つの段階のみを伴う。つまり、（システムのＲｅａｄ信号をアクティブにすることによって）データがＲＡＭから読み取られ、データがデータバス上に置かれると、ＤＭＡコントローラのレジスタ内に中間格納されることなく、フラッシュメモリに直接書き込まれる。フラッシュメモリへの必要なＷｒｉｔｅ信号は、ＤＭＡ対応フラッシュメモリコントローラの論理によって内部で生成される。それと同様に、図５ｂは、フラッシュメモリからＲＡＭへのデータ転送のプロセスが１つの段階のみを伴うことを示している。つまり、データはフラッシュメモリから読み取られ、そのデータがデータバス上に置かれると、ＤＭＡコントローラのレジスタ内に中間格納されることなく、ＲＡＭに直接書き込まれるのである。
【００３７】
４）本発明の第４の実施形態は、１個のフラッシュメモリコントローラに付加されたフラッシュチップから他のフラッシュメモリコントローラに付加されたフラッシュチップへデータを直接転送するＤＭＡ対応フラッシュメモリコントローラを提供する。フラッシュシステムソフトウェアは、フラッシュメモリ管理プロセスの一部として、１個のブロックのフラッシュメディアから他のブロックのフラッシュメディアへデータをコピーする必要があることが多い。通常、このプロセスは、
ｉ）データソースとなるフラッシュチップへＲｅａｄコマンドを送信する工程と、
ｉｉ）データが利用可能になるまで待機する工程と（ページフェッチ時間）、
ｉｉｉ）メモリへのデータの読取りを行なう工程と、
ｉｖ）宛先フラッシュチップへデータを書き込む工程と、
ｖ）宛先フラッシュチップへページプログラムコマンドを送信する工程と、
ｖｉ）宛先チップがそのページプログラミングを完了するまで待機する工程（ページプログラミング時間）と、
から構成される。
【００３８】
ＤＭＡ対応フラッシュメモリコントローラを使用すると、メモリへのデータの中間格納を伴わないデータ転送動作が可能であり、それによりデータ転送時間が大幅に短縮される。フラッシュメモリコントローラの１個はメモリのようなデバイスとして機能するのに対して、その他のフラッシュメモリコントローラはＤＭＡリクエスタとして機能する。
【００３９】
１個のフラッシュチップから別のフラッシュチップへデータを直接コピーすることによってデータ転送時間を短縮することに加えて、複数のＤＭＡ対応フラッシュメモリコントローラを使用して、好適な実施形態１および２で説明したのと同様のやり方で、ページプログラミング時間および／またはページフェッチ時間を部分的あるいは完全に隠すことができる。
【００４０】
システムの最適な性能は、システムがフラッシュチップへまたはフラッシュチップから絶えずデータを転送しているときに得られる。フラッシュチップは、ページプログラミングでビジー状態になっている間、新規データを受信することができず、またページフェッチでビジー状態になっている間はデータを生成できないため、本発明に基づく目標は、複数のフラッシュメモリコントローラの間におけるページフェッチフェーズ、データ転送フェーズ、およびページプログラミングフェーズを、ページフェッチフェーズとページプログラミングフェーズがデータ転送フェーズと常にオーバーラップするように構成することである。
【００４１】
２個のＤＭＡ対応フラッシュメモリコントローラについては、データ転送フェーズをページプログラミングおよびページフェッチフェーズと完全にオーバーラップすることは不可能である。その理由は、ページ転送完了後、データを受信したフラッシュチップがページプログラミング時間の間、ビジー状態になるからである。
【００４２】
しかし、ＤＭＡ対応フラッシュメモリコントローラの数が３個以上の場合は、一定のフラッシュメモリコントローラのデータ転送段階は、他のフラッシュメモリコントローラのページプログラミング時間またはページフェッチ時間とオーバーラップさせる場合がある。このようにして、上記の第１および第２の好適な実施形態で説明したものと同様に、これらの非効率なプログラミングまたはページフェッチ時間は完全にまたは部分的に隠すことができる。
【００４３】
図６および７は、それぞれ３個および４個のＤＭＡ対応フラッシュメモリコントローラ間でのコピー動作を示している。（上記および図９に示す）「従来型」の動作とは対照的に、性能は、
ａ）転送元からの読取り時間と転送先への書込み時間を別に取らずに、２個のフラッシュチップ（転送元と転送先）間で共通のデータ転送時間を取ることと、
ｂ）データ転送時間をページプログラミングおよび／またはページフェッチ時間とにオーバーラップさせて、システムの「動作していない」時間を減らすことと、
により大幅に改善される。
【００４４】
Ｎ（Ｎ＞２）個のＤＭＡ対応コントローラ間での読取りおよび書込み動作を割り当てる上での利用可能な方式の一つは、以下の通りである。
ａ）任意の瞬間において、２個のフラッシュメモリコントローラは、以下のデータ転送動作の便宜上、「転送元」および「転送先」と指定される。
ｂ）「転送元」フラッシュメモリコントローラを０に、「転送先」フラッシュメモリコントローラをＮ−１に設定した状態でシステムが起動する。「転送元」コントローラに付加されたフラッシュメディアに読取りコマンドを送信する。
ｃ）「転送元」フラッシュメモリコントローラがページプログラミングフェーズにある場合は、それが完了するまで、すなわち、付加されたフラッシュメディアがＲｅａｄｙになるまで待機し、次にその状態を取得および記録する。
ｄ）「転送元」コントローラに付加されたフラッシュメディアにまだ「Ｒｅａｄ」コマンドが送信されていない場合は、それをここで送信する。
ｅ）「転送元」フラッシュメディアコントローラ上のフラッシュメディアがデータ送信できる状態になったらすぐに、「転送元」フラッシュメモリコントローラから「転送先」フラッシュメモリコントローラへＤＭＡデータ転送を開始し、ＤＭＡの完了まで待機する。
ｆ）データの元レイアウトに関する情報を必要に応じて記録する（以下も参照のこと）。
ｇ）「転送先」＝「転送元」と設定し、「転送元」を循環的に次に来る数字に設定するか、「転送元」＝（「転送元」＋１）　ｍｏｄ　Ｎに設定する。
ｈ）他にコピーするデータがあれば、パラグラフｃ）に進む。
ｉ）すべてのデータの書込みが終わった後で、すべてのフラッシュメモリコントローラのフラッシュメディア上のページプログラミング動作の完了まで必要に応じて待機し、またこれらの動作の状態を必要に応じて受信および記録する。
【００４５】
この方式は、ページプログラミング段階の完了直後に「Ｒｅａｄ」コマンドがフラッシュメディアへ与えられると更に効率が良くなる。
【００４６】
フラッシュシステムソフトウェアは、このような動作の後に１個のフラッシュメモリコントローラのフラッシュメディア上に予め書き込まれたデータの一部が他のフラッシュメモリコントローラのフラッシュメディア上に常駐するという事実に対応できなければならない。その目的に向けて、各ページまたは論理ブロックに格納された情報に必要に応じて制御フラグを追加することができる。このフラグにより、フラッシュシステムソフトウェアは、ユーザがデータを要求したときに必要となるデータの「元」レイアウトを導出することができる。このようなフラグの最も簡単な例は、Ｎ個のフラッシュメモリコントローラ上でつなぎ合わされたデータのブロックに対して実行されるＤＭＡコピー動作の数である。そのフラグの値ゼロのときに、データがＮ個のフラッシュメモリコントローラ０、１、２、．．．Ｎ−１の間で配分される場合は、フラグの値がｘのときに、上記のコピー方式が使用された場合、データはＮ個のフラッシュメモリコントローラ間でｘ、ｘ＋１、ｘ＋２．．．（Ｎ−１まで循環的に）．．．ｘ−１として配分される。
【００４７】
５）本発明による第五の実施形態は、複数のフラッシュメモリコントローラの機能をどのように効果的に組み合わせて１個のマルチコントローラに組み合わせるかについて説明する。このマルチコントローラは、ページフェッチ時間とページプログラミング時間を隠すことを可能にし、１個のフラッシュメモリコントローラから他のフラッシュメモリコントローラへデータを直接転送する。
【００４８】
既存のフラッシュコントローラ技術では、すべての付加されたフラッシュチップは、Ｃｈｉｐ　Ｓｅｌｅｃｔ（チップ選択）信号を除いて、同じデータおよび制御信号を共有している。読取りまたは書込み信号がアクティブになると、その時点でＣｈｉｐ　Ｓｅｌｅｃｔ線がアクティブになっているフラッシュチップのみがその読取りまたは書込み動作を実行する。同様に、各チップのＲｅａｄｙ信号は、任意の１個のチップがＮｏｔ　Ｒｅａｄｙである場合にコントローラが「Ｎｏｔ　Ｒｅａｄｙ」状態を指示するよう組み合わされる。そのようなシステムの例は、図１０に示される。そのような接続は簡単かつ便利であるが、各フラッシュチップ上での同時かつ異種の動作の実行を可能にすることができない。各チップの同時かつ異種のフラッシュ動作は、それらを別個のフラッシュコントローラに付加するか（前記実施形態に記載）、あるいは特別の／異なる種類のフラッシュメモリコントローラ（ここではマルチコントローラと称される）を設計することによって可能になる。
【００４９】
ここに提示したフラッシュメモリマルチコントローラは、次のオプションを有していてもよい。
ｉ）２個の別個のＣｈｉｐ　Ｓｅｌｅｃｔｏｒレジスタを有し、２個の異なるＣｈｉｐ　Ｓｅｌｅｃｔ信号を同時にアクティブにする機能を有する（Ｃｈｉｐ
Ｓｅｌｅｃｔ信号の総数は付加されたフラッシュチップの数に等しい）。
ｉｉ）複数のＲｅａｄ／Ｗｒｉｔｅ出力信号を有することから、すべての付加されたチップに対してではなく、特定の選択済みチップに対するＲｅａｄ／Ｗｒｉｔｅ信号をアクティブにする機能を有する。
ｉｉｉ）必要に応じて、異なる選択済みチップへの２個の異なるＲｅａｄ／Ｗｒｉｔｅ信号をアクティブにする機能を有する。
ｉｖ）レジスタ内の「Ｒｅａｄｙ」インジケータは、付加されたすべてのフラッシュチップではなく、１個の特定の選択されたフラッシュチップの信号のみを反映してもよい。
ｖ）ＤＭＡ　Ｒｅｑｕｅｓｔ（リクエスト）およびＡｃｋｎｏｗｌｅｄｇｅ（確認）信号、構成レジスタ、状態レジスタ、および制御レジスタなどの第３の実施形態で説明したＤＭＡ対応フラッシュメモリコントローラの機能を含む。
【００５０】
このようなマルチコントローラでは、第１の実施形態と同様にページプログラミング時間を部分的に「隠す」ことによってシステムアイドル時間の短縮を可能にして（１）、第２の実施形態と同様にページフェッチ時間を短縮し（２）、第３の実施形態と同様にＤＭＡインタフェースの使用により転送時間を短縮し（３）、また、第４の実施形態と同様に、１個のフラッシュメモリコントローラから他のフラッシュメモリコントローラへデータを直接転送する（４）ことができる。
【００５１】
マルチコントローラの重要なパラメータは、それが生成するＲｅａｄ／Ｗｒｉｔｅ信号の数である。システムが（図１１上に示すように）複数（Ｎ個）のフラッシュメモリコントローラで構築される場合、そのＲｅａｄ／Ｗｒｉｔｅ信号の数はＮ個になり、またそれは付加されたフラッシュチップをＮ個の独立したバンクを通じてアドレス指定できるのに対して、各フラッシュチップは常に同一バンクに属している。１個のフラッシュチップから他のフラッシュチップへのＤＭＡ転送は、これらのチップが異なるバンク上に配置される場合にのみ行なわれても
よい。
【００５２】
それと比較して、マルチコントローラシステムは、図１２に示す通り、すべての付加されたフラッシュチップに対して別のＲｅａｄ／Ｗｒｉｔｅ信号を有していてもよい。この場合、このシステム内の独立バンクの数は事実上フラッシュチップの数に等しく、システムはこれらのフラッシュチップを任意の数の「仮想」バンクに自由に分割して使いやすくすることができる。また、任意の２個のフラッシュチップ間からのＤＭＡ転送は、このような分割にかかわらず行なうことができる。
【００５３】
（Ｒｅａｄ／ＷｒｉｔｅまたはＣｈｉｐ　Ｓｅｌｅｃｔ以外にも他のフラッシュ制御信号が存在するが、それらのレベルはＲｅａｄまたはＷｒｉｔｅ動作の実行中にのみ重要となる。従って、これらの信号はすべてのフラッシュチップについて共通化でき、これらの信号のアクティブ化は、各バンク用のＲｅａｄ／〜Ｗｒｉｔｅおよび／またはＣｈｉｐ　Ｓｅｌｅｃｔ信号のアクティブ化と調整することができる。）
【００５４】
限定された数の実施形態に関して本発明を説明してきたが、当業者は、本発明の変更例、修正例、およびその他の適用例を数多く作成できることを理解するであろう。
【図面の簡単な説明】
【図１】ページプログラミング時間を完全に隠すことを可能にする２個のメモリコントローラの使用を示している。
【図２】データ転送時間に対するページプログラミング時間の比率の影響を示している。この図ではこの比率が高くなっているのがわかる。つまり、２個のメモリコントローラを使用すると、ページプログラミング時間を部分的に隠すことができる。
【図３】データ転送時間に対するページプログラミング時間の比率が図２と同一でである場合も、３個のメモリコントローラを使用してページプログラミング時間を完全に隠せることを示している。
【図４ａ】メモリと非ＤＭＡ対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「ＲＡＭからの読込み、フラッシュメモリへの書込み」のプロセスに焦点を当てている。
【図４ｂ】メモリと非ＤＭＡ対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「フラッシュメモリからの読込み、ＲＡＭへの書込み」のプロセスを焦点を当てている。
【図５ａ】メモリとＤＭＡ対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「ＲＡＭからの読み込み、フラッシュメモリへの書込み」のプロセスに焦点を当てている。
【図５ｂ】メモリとＤＭＡ対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「フラッシュメモリからの読込み、ＲＡＭへの書込み」に焦点を当てている。
【図６】３個のＤＭＡ対応フラッシュメモリコントローラを使用したコピー動作を示している。データ転送時間に対するページプログラミング時間のこの比率では、ページプログラミング時間が部分的にのみ隠される。
【図７】ページプログラミング時間が完全に隠される、４個のＤＭＡ対応フラッシュメモリコントローラを使用したコピー動作を示している。
【図８】ページフェッチ時間を隠すことを可能にする２個のメモリコントローラの使用を示している。
【図９】１個のフラッシュメモリコントローラを使用した通常のコピー動作であり、この動作では、データ読取り時間がデータ書込み時間と重なり合うことはなく、ページプログラミング時間とページフェッチ時間も重なり合うことがない。
【図１０】従来のフラッシュメモリコントローラのフラッシュチップへの信号付加を示す。
【図１１】複数の従来型またはＤＭＡ対応フラッシュメモリコントローラのシステムにおける信号付加を示す。
【図１２】マルチコントローラを備えたシステムにおける信号付加を示す。
【図１】
2004005613.tif 000003
【図２】
2004005613.tif 000004
【図３】
2004005613.tif 000005
【図４ａ】
2004005613.tif 000006
【図４ｂ】
2004005613.tif 000007
【図５ａ】
2004005613.tif 000008
【図５ｂ】
2004005613.tif 000009
【図６】
2004005613.tif 000010
【図７】
2004005613.tif 000011
【図８】
2004005613.tif 000012
【図９】
2004005613.tif 000013
【図１０】
2004005613.tif 000014
【図１１】
2004005613.tif 000015
【図１２】
2004005613.tif 000016