(57)【要約】多重アクセスを用いたＲＡＭバッファを使用することにより、フラッシュベース記憶システムの読み書き性能を向上させる方法およびシステムに関する。フラッシュベース記憶システムの読み書き性能の向上は、「ＲＡＭから」および「ＲＡＭへ」の転送操作を同時に行うことにより達成される。本発明の好ましい実施形態によれば、本発明は、ホストインタフェースからフラッシュ媒体へおよびフラッシュ媒体からホストインタフェースへの同時データ転送を可能にするシステムを提供する。また、本発明は、ホスト読取り操作中にメモリ／ホスト間およびフラッシュ／メモリ間転送を同期化するシステムを提供する。さらに、ホスト書込み操作中にホスト／メモリ間およびメモリ／フラッシュ間転送を同期化するシステムを提供する。【特許請求の範囲】
【請求項１】
ｉ．ホストとの対話を可能にする処理システムと、
ｉｉ．前記処理システムのデータを記憶する少なくとも１つのフラッシュメモリ素子と、
ｉｉｉ．少なくとも２つのＲＡＭ構成要素であって、別々のデータバスを有する前記ＲＡＭ構成要素の各々が前記処理システムと前記フラッシュメモリ素子との間の同時読み書き操作を可能にするＲＡＭ構成要素と、
を含む、ホストインタフェースとフラッシュ媒体との間の同時データ転送を可能にするシステム。
【請求項２】
前記フラッシュメモリ素子に書込まれたデータおよび前記フラッシュメモリ素子から読取られたデータのシンドロームを計算する誤り検出（ＥＤＣ）回路をさらに含む、請求項１に記載のシステム。
【請求項３】
前記フラッシュメモリ素子から読取られたデータを訂正する誤り訂正（ＥＣＣ）回路をさらに含む、請求項１に記載のシステム。
【請求項４】
前記ＲＡＭ構成要素のうち少なくとも１つが各フラッシュメモリ制御器の内部に存在するように少なくとも２つのフラッシュメモリ制御器を含む、請求項１に記載のシステム。
【請求項５】
前記ＲＡＭ構成要素が少なくとも１つのデュアルポートメモリ構成要素の代わりに使用される、請求項１に記載のシステム。
【請求項６】
前記ＲＡＭ構成要素が大規模集積回路の一部になっている、請求項１に記載のシステム。
【請求項７】
前記データが読取り操作中にホストに転送された後、次の読取り操作中に前記ホストが同じ前記データを要求した場合、前記ＲＡＭ構成要素に残された同じ前記データが前記ホストシステムに直接転送されるように、前記ＲＡＭ構成要素がデータキャッシュシステムの少なくとも一部を形成する、請求項１に記載のシステム。
【請求項８】
前記データが書込み操作中にホストから受信された後、次の読取り操作中に前記ホストが同じ前記データを要求した場合、前記ＲＡＭ構成要素に残された同じ前記データが前記ホストシステムから直接転送されるように、前記ＲＡＭ構成要素がデータキャッシュシステムの少なくとも一部である、請求項１に記載のシステム。
【請求項９】
ｉ．ホストシステムとフラッシュ素子との間のデータを記憶する複数のメモリバッファと、
ｉｉ．メモリ／ホスト間およびフラッシュ／メモリ間の制御スレッドを同期化するために状態が使用されるように前記バッファの状態を示す、各々の前記メモリバッファ用のメモリレジスタと、
ｉｉｉ．ホストへのユーザデータのデータ転送を開始し、前記データ転送の完了時に前記メモリバッファに空のマークを付ける、メモリ／ホスト間データ転送制御スレッドと、
ｉｖ．前記データを含むフラッシュメモリ素子に読取り指令を出し、続いて前記フラッシュ素子が前記データを生成する準備ができた場合、フラッシュから前記メモリバッファにユーザデータの前記データ転送を開始する、フラッシュ／メモリ間制御スレッドと、
を含む、ホスト読取り操作中に固体記憶システムにおいてメモリ／ホスト間およびフラッシュ素子／メモリ間データ転送を同期化するシステム。
【請求項１０】
前記フラッシュ／メモリ間制御スレッドが前記メモリ／ホスト間制御スレッドとは無関係に動作する、請求項９に記載のシステム。
【請求項１１】
ステップｉｉｉ．が、
ａ）前記転送の完了時に、誤り検出機構により計算されたデータ正当性状態を調べるステップと、
ｂ）前記データが破損され、訂正可能である場合、訂正アルゴリズムを使用するステップと、
ｃ）前記メモリバッファに存在する前記データが正しい場合、特定の論理ブロックのデータを含むものとしてそのメモリバッファにマークを付けるステップと、
ｄ）前記メモリバッファに存在する前記データが正しくない場合、破損データを含むものとしてそのメモリバッファにマークを付けるステップと、
を含む、請求項９に記載のシステム。
【請求項１２】
前記状態が、
（ａ）新しいデータの受信が可能である空状態と、
（ｂ）前記システムが特定の論理ブロックのデータを含む状態と、
（ｃ）前記システムが前記論理ブロックの破損データを含む状態と、
を含む、前記各メモリバッファの現状態を示す、請求項９に記載のメモリレジスタ。
【請求項１３】
ｉ．ホストシステムとフラッシュ素子との間のデータを記憶する複数のメモリバッファと、
ｉｉ．ホスト／メモリ間およびメモリ／フラッシュ間の制御スレッドを同期化するために状態が使用されるように各々の前記メモリバッファ用の状態を示すメモリレジスタと、
ｉｉｉ．ホスト／メモリ間データ転送制御スレッドであって、各々の特定の論理ブロックのデータに関して、ホストから転送されるべきそのデータの一部があるメモリバッファを待って空状態を取得してから、データ転送の完了時に前記データ転送制御スレッドが前記特定の論理ブロックの前記データを含むものとして前記メモリバッファにマークを付けるように前記ホストからのユーザデータのデータ転送を開始するホスト／メモリ間データ転送制御スレッドと、
ｉｖ．メモリ／フラッシュ間データ転送制御スレッドであって、各々の特定の論理ブロックのデータに関して、前記ホストから転送されているそのデータの一部があるメモリバッファを待って前記特定の論理ブロックの前記データを含む状態を取得し、フラッシュ記憶アルゴリズムに従って少なくとも１つのフラッシュメモリ素子に少なくとも１つの書込み指令を出すメモリ／フラッシュ間データ転送制御スレッドと、
を含む、ホスト書込み操作中に固体記憶システムにおいてホスト／メモリ間およびメモリ／フラッシュ素子間データ転送を同期化するシステム。
【請求項１４】
前記メモリ／フラッシュ間制御スレッドが前記ホスト／メモリ間制御スレッドとは無関係に動作する、請求項１３に記載のシステム。
【請求項１５】
前記状態が、
（ａ）新しいデータの受信が可能である空状態と、
（ｂ）前記システムが特定の論理ブロックのデータを含む状態と、
を含む、前記各メモリバッファの現状態を示す、請求項１３に記載のメモリレジスタ。
【請求項１６】
前記ホスト／メモリ間データ転送制御スレッドの機能が、前記ホストから転送された前記データが前記フラッシュアレイのアクセス単位サイズと一致しない場合に前記ホストから転送されていない内容を前記データのフラッシュ部分から読取るステップをさらに含む、請求項１３に記載のシステム。
【請求項１７】
ｉ．ホストシステムとフラッシュ素子との間のデータを記憶する複数のメモリバッファを設けるステップと、
ｉｉ．前記メモリバッファの状態を示す、各々の前記メモリバッファ用のメモリレジスタに指令するステップと、
ｉｉｉ．メモリ／ホスト間データ転送制御スレッドに指令するステップであって、転送される各論理ブロックが前記メモリバッファを待って論理ブロックのデータを含む状態を取得し、続いて前記ホストへの前記論理ブロックのデータ転送を開始し、そのデータ転送の完了時に前記制御スレッドが前記メモリバッファに空のマークを付けるステップと、
ｉｖ．フラッシュ／メモリ間データ転送制御スレッドに指令するステップであって、各論理ブロックのデータがある前記メモリバッファを待って空である状態を取得し、前記データを含むフラッシュメモリ素子に読取り指令を出すステップと、
ｖ．前記読取り指令が完了した場合、および前記フラッシュメモリ素子が前記データを生成する準備ができた場合、前記フラッシュ／メモリ間データ転送制御スレッドにより前記メモリバッファへの前記ユーザデータのデータ転送を開始するステップと、
を含む、ホスト読取り操作中に固体記憶システムにおいてメモリ／ホスト間およびフラッシュ素子／メモリ間データ転送を同期化する方法。
【請求項１８】
メモリレジスタに指令するステップが、各々の前記メモリバッファ用の変数に指令するステップをさらに伴う、請求項１７に記載の方法。
【請求項１９】
ａ）前記データの正当性状態を調べるステップと、
ｂ）前記データが破損しているが、訂正可能である場合、訂正機構を使用するステップと、
ｃ）前記バッファに存在する前記データが正しい場合、前記論理ブロックのデータを含むものとして前記メモリバッファにマークを付けるステップと、
ｄ）前記データが破損している場合、前記論理ブロックの破損データを含むものとして前記メモリバッファにマークを付けるステップと、
をさらに含む、請求項１７に記載の方法。
【請求項２０】
ｉ．ホストシステムとフラッシュ素子との間のデータを記憶する複数のメモリバッファを設けるステップと、
ｉｉ．前記メモリバッファの状態を示す、各メモリバッファ用のメモリレジスタに指令するステップと、
ｉｉｉ．ホスト／メモリ間データ転送制御スレッドに指令するステップであって、各論理ブロックがある前記メモリバッファを待って空状態を取得してから、前記ホストからのユーザデータのデータ転送を開始し、前記データ転送の完了時に前記論理ブロックの前記データを含むものとしてその前記メモリバッファにマークを付け、その後、前記ホストから転送された前記データがフラッシュアレイのアクセス単位サイズと一致しない場合に前記スレッドが前記ホストから転送されていないページの一部の内容を前記フラッシュ素子から読取るステップと、
ｉｖ．メモリ／フラッシュ間データ転送制御スレッドに指令するステップであって、各論理ブロックのデータがある前記メモリバッファを待って特定の論理ブロックのデータを含む状態を取得してから、フラッシュ素子記憶アルゴリズムに従って少なくとも１つのフラッシュメモリ素子に少なくとも１つの書込み指令を出し、その後、前記ユーザデータがフラッシュ上にうまく書込まれている場合に前記スレッドが前記メモリバッファに空のマークを付け、それ以外の場合に前記スレッドが前記ホストに書込み指令失敗を通知するように、書込み指令が失敗した場合にオプションとして前記データを前記フラッシュ素子記憶アルゴリズムに従って異なる位置に再度書込むことができるステップと、
を含む、ホスト書込み操作中に固体記憶システムにおいてホスト／メモリ間およびメモリ／フラッシュ間転送を同期化する方法。
【請求項２１】
メモリレジスタに指令するステップが、各々の前記メモリバッファ用の変数に指令するステップをさらに伴う、請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
序論および分野
本発明は、フラッシュベース記憶システムにおいて多重アクセスを用いたＲＡＭバッファを使用する方法に関する。そのようなＲＡＭバッファは、読み書き操作をＲＡＭにオーバーラップさせることにより達成される、フラッシュベース記憶システムの読み書き性能の向上を可能にする。
【背景技術】
【０００２】
記憶媒体としてフラッシュメモリを使用することは通常、下記の２つの特徴を有する。
【０００３】
１．フラッシュに書込まれたデータは一般に、誤り検出符号および／又は誤り訂正符号（ＥＤＣ／ＥＣＣ）により保護されるべきである。前記データを前記フラッシュから読取ると、ＥＤＣ／ＥＣＣにより、システムは、誤りが存在するか否か、およびオプションとしてその誤りを訂正すべきか否かを判定することができる。訂正は、前記ＥＤＣ／ＥＣＣ保護データの任意の部分で行われることがあり、従ってランダムアクセスメモリで行われるべきである。従って、データを、ホストインタフェース（例えば、ＳＣＳＩ又はＡＴＡバス）に直接送信することができず、最初にＲＡＭに読取るべきである。この処理に続いて、ＥＤＣ／ＥＣＣ状態を調べるべきである。誤りがないことを前記ＥＤＣ／ＥＣＣ状態が示す場合、前記データを手渡すことができる。ＥＤＣ／ＥＣＣ機構が訂正可能な誤りを示す場合、データをさらに渡す前に訂正作業を行うべきである。前記ＥＤＣ／ＥＣＣ機構が訂正不可能な誤りを示す場合、オプションとしてこの誤りを前記ホストインタフェースに渡すこともできる。
【０００４】
２．前記フラッシュへの書込み操作が、失敗する場合もある。しかし、データを別の位置に書込むことにより、この失敗をホストインタフェース（例えば、ＳＣＳＩ又はＡＴＡ）から隠すことができる。前記書込み操作を繰り返すために、前記ホストインタフェースから到来するデータを、前記書込み操作を開始する前にＲＡＭバッファに入れるべきである。
【０００５】
これらの２つの特徴により、前記ホストインタフェースと前記フラッシュ媒体との間の直接データ転送が阻止される。媒体としてメモリバッファを使用することは通常、２つの連続転送操作、すなわち、メモリへの操作およびメモリからの操作を行う。これらの２つの連続データ転送の必要性は、必要悪として通常容認され、従って、ほとんどのフラッシュベース記憶システムにおいて有効である。
【０００６】
従って、前記メモリバッファへの操作および同メモリバッファからの操作の両方を同時に可能にするシステムに対して広く認められた必要性があり、前記システムを有することは非常に有利である。
【０００７】
本発明は、フラッシュベース記憶システムにおいてこれらの２つの転送操作を同時に行うことにより、前記システムの読み書き性能を向上させる方法を記載する。本発明の前記システムは、下記の要因のために既知の代替技術および解決策と区別される。
ｉ）ホストメモリ間およびメモリフラッシュ間転送の同期化、および異なるフラッシュ関連失敗操作からの訂正回復は、本発明で記載のように実現するのが困難である。
ｉｉ）読み書き操作のために媒体としてＲＡＭバッファを使用することは一般的なことであるのに対して、複数のＲＡＭバッファを用いたこれらの転送操作を同時に行う具体的な記載の方法は、フラッシュベースシステムにおいて特有であり、従って革新的である。
ｉｉｉ）本発明は、持続読み書き性能をほぼ２倍向上させることができる。
【０００８】
ほんの一例として添付図面を参照して、本発明をここに説明する。
【発明の開示】
【課題を解決するための手段】
【０００９】
本発明は、多重アクセスを用いた複数のＲＡＭバッファを使用して、フラッシュベース記憶システムの読み書き性能を大幅に向上させる方法およびシステムに関する。フラッシュベース記憶システムの読み書き性能の向上は、「ＲＡＭから」および「ＲＡＭへ」の転送操作を同時に行うことにより達成される。
【００１０】
本発明の好ましい実施形態によれば、本発明は、
１．ホストシステムとの対話を可能にする処理システムと、
２．データ記憶用の少なくとも１つのフラッシュメモリ素子と、
３．フラッシュメモリに書込まれたデータおよびフラッシュから読取られたデータのシンドローム又は検査合計又はＣＲＣ（巡回冗長検査）を計算することにより誤り検出を行うオプション手段と、
４．フラッシュメモリから読取られたデータの誤り訂正を行うオプション手段と、
５．各ＲＡＭ構成要素上で同時読み書き操作を可能にする別々のデータバスを有する少なくとも２つのＲＡＭ構成要素と、
を含む、ホストインタフェースと中間ＲＡＭバッファとの間および前記中間ＲＡＭバッファとフラッシュ媒体との間の同時データ転送を可能にするシステムを提供する。
【００１１】
本発明の更なる特徴によれば、ホスト読取り操作中にメモリ／ホスト間およびフラッシュ／メモリ間転送を同期化するシステムを提供する。
【００１２】
さらに、ホスト書込み操作中にホスト／メモリ間およびメモリ／フラッシュ間転送を同期化するシステムを提供する。
【００１３】
本発明の更なる特徴によれば、ホスト読取り操作中に固体記憶システムにおいてメモリ／ホスト間およびフラッシュ／メモリ間転送を同期化する方法を提供する。
【００１４】
さらに、ホスト書込み操作中に固体記憶システムにおいてホスト／メモリ間およびメモリ／フラッシュ間転送を同期化する方法を提供する。
【００１５】
明細書に記載の本発明の方法およびシステムを用いてさらに実施形態を展開することができることは、固体記憶システム開発の当業者に理解されるはずである。上述の実施形態は、例として理解されるべきであり、ここに記載の技術をこれらの例だけに制限することを決して意味しない。
【発明を実施するための最良の形態】
【００１６】
本発明は、多重アクセスを用いた複数のＲＡＭバッファを使用することにより、フラッシュベース記憶システムの性能を向上させる方法およびシステムに関する。
【００１７】
より詳しくは、本発明は、「ＲＡＭから」および「ＲＡＭへ」の転送操作を同時に行うシステムに関する。
【００１８】
本発明による前記システムおよび方法の原理および動作は、図面および付随する説明を参照してよく分かるであろうが、これらの図面は、あくまでも例示の目的で与えられたものであり、限定を意味するものではない。
【００１９】
図１および図２は、本発明によるそのようなシステムの動作を示す。図１は、ホストインタフェース１０から１つのメモリバッファ１２に新しいデータを受信すると同時に、前記新しいデータの前の部分を別のメモリバッファ１４からフラッシュメモリ１６に書込むシステムの例である。図２は、１つのメモリバッファ２２からホストインタフェース２０にデータを送信すると同時に、（送信されるべき）前記データの次の部分をフラッシュ２６から別のメモリバッファ２４に受信するシステムの例である。
【００２０】
図１および図２について、中間メモリは、論理的に独立した２つ以上（Ａ、Ｂ、Ｃ．．．）のメモリバッファの何れかから成る。論理的独立性により、一方のバッファに書込むことができると同時に、他方のバッファから読取ることができるようになっている。物理的に、これらのバッファは、多重化バスを有するメモリ構成要素又はデュアルポートＲＡＭ構成要素の何れかであってもよい。前記メモリ構成要素は、個別チップ又は大規模集積構成要素の一部の何れかであってもよい。デュアルポートＲＡＭの実装の場合、メモリバッファは、デュアルポートＲＡＭ内部のメモリの指定された重複しない領域である。
【００２１】
システムの論理ブロックＮのデータをメモリバッファＡからフラッシュ媒体に書込む（図１）場合、論理ブロックＮ＋１のデータをホストインタフェースからメモリバッファＢに同時に受信している。ここで次の説明において、「論理ブロック」は、１つ以上のホストシステム転送単位（セクタ）を表す。「論理ブロック」のサイズは、フラッシュ操作の便宜および性能により決められる。例えば、ＡＮＤ又はＮＡＮＤ技術フラッシュの場合、そのサイズを、使用されるフラッシュアレイのページサイズに設定することもできる。ホストから転送されるデータのストリームは、一連の論理ブロックＮ、Ｎ＋１、Ｎ＋２等として前記記憶システムにより見られる。
【００２２】
論理的に独立したメモリバッファが２つだけある場合、Ｂへのデータ転送の完了時に、ソフトウェアは、Ａからのフラッシュ書込み操作の完了を待ってフラッシュ書込み状態を検査すべきである。前記書込み操作が失敗している場合、フラッシュ媒体の別の場所で再試行することができる。前記書込み操作が成功している場合、メモリバッファＡが空であると考えることができ、２つの新しい同時転送（メモリバッファＢからフラッシュ媒体へのブロックＮ＋１およびホストインタフェースからメモリバッファＡへのブロックＮ＋２）を開始することができる。
【００２３】
２つを超える論理的に独立したメモリバッファがある場合、フラッシュ書込み又は再試行操作の完了を待つことなく、メモリへの新しい転送を開始することができる。新しいデータは、図５から分かるように、使用可能な空メモリバッファＣ５６、Ｄ５８等に収容される。すべての空メモリバッファが使用されている場合、新しいデータをさらに受信するのに別のメモリバッファを空にするために、フラッシュ書込み又は再試行操作の完了の待ちを実行するものとする。
【００２４】
フラッシュ媒体にまだうまく書込まれていない（即ち、書込み状態がまだ受信されていない）データは、失敗書込み操作を再試行するのにそのデータを必要とする場合があるので、交換されるべきでない。
【００２５】
ホストシステム転送単位（セクタ）のサイズがフラッシュアレイのアクセス単位サイズ（あるフラッシュ技術における「ページ」）と異なる場合、前記システムは、データのどの部分が書込み工程中にホストから転送されていないかを記録する、又はこの部分を転送前にフラッシュ媒体から多分メモリバッファに読取るべきであることにも留意すべきである。
【００２６】
システムの論理ブロックＮ＋１のデータをフラッシュ媒体２６からメモリバッファＡ２４に読取る（図２）場合、論理ブロックＮのデータをメモリバッファＢ２２からホストインタフェース２０に同時に送信している。
【００２７】
論理的に独立したメモリバッファが２つだけある場合、Ｂからのデータ転送の完了時に、ソフトウェアは、Ａへの読取り操作の完了を待って読取りデータのＥＤＣ／ＥＣＣ状態を検査すべきである。（ソフトウェア又は回路である）ＥＤＣ／ＥＣＣ機構が訂正可能な誤りを示す場合、メモリバッファＡ内のデータに関して訂正作業を行うことができ、前記ＥＤＣ／ＥＣＣ機構が訂正不可能な誤りを示す場合、オプションとしてその誤りをホストインタフェースに渡すこともできる。正しいデータが読取られている場合、又は破損データがうまく訂正されている場合、「読取り」指令を、次の論理ブロックのためにフラッシュ媒体に出すべきであり、フラッシュシステムは、必要ならば転送の準備ができるようにするために新しいデータを待つべきである。次に、２つの新しい同時転送（メモリバッファＡ（メモリモジュールＡ）からホストインタフェースへのブロックＮ＋１およびフラッシュ媒体からメモリバッファＢ（メモリモジュールＢ）へのブロックＮ＋２）を開始することができる。
【００２８】
２つを超える論理的に独立したメモリバッファがある場合、ホストへの転送の完了を待つことなく、メモリへの新しい転送を開始することができる。新しいデータは、図６から分かるように、使用可能な空メモリバッファＣ６６、Ｄ６８等に入れられる。すべての空メモリバッファが使用されている場合、次のユーザデータを読取るのに別のメモリバッファを空にするために、ホスト操作への転送の完了の待ちを実行するものとする。ホストにまだうまく転送されていないデータを交換すべきでない。
【００２９】
前記システムの読み書き性能を向上させるために、（メモリバッファへおよび同メモリバッファからの）２つの転送操作は、正確に同時であるべきであり、２つの異なるデータバスが同時に動作可能であることを意味する。当然、それは、特定の読取り又は書込み操作中にホストへ又は同ホストから転送される論理ブロックの数が１つを超える場合に可能なだけである。
【００３０】
図３は、１つのメモリモジュール３２からホストインタフェース３０にデータを送信すると同時に、（送信されるべき）前記データの次の部分をフラッシュ３６から別のメモリモジュール３４に受信するシステムの例である。このシステムは、図１における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器３８内に位置するという点が異なる。
【００３１】
図４は、ホストインタフェース４０から１つのメモリモジュール４２に新しいデータを受信すると同時に、前記新しいデータの前の部分を別のメモリモジュール４４からフラッシュメモリ４６に書込むシステムの例である。このシステムは、図２における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器４８内に位置するという点が異なる。
【００３２】
本発明の好ましい実施形態では、ホスト読取り操作中にメモリ／ホスト間およびフラッシュ／メモリ間転送を同期化するシステムを組み込む。このシステムは、下記を含む。
ｉ．各メモリバッファ用のメモリレジスタ又は変数（この文脈における用語「メモリレジスタ」は、用語「変数」の使用を含んでもよい）であって、前記バッファの状態を示し、前記状態は、「空」、「データ受信の処理中」、「論理ブロックＮのデータを含む」および「論理ブロックＮの破損データを含む」であることもできる。
ｉｉ．メモリ／ホスト間制御スレッドであって、各論理ブロックＮのデータに関して、ホストに転送されるべきそのデータの一部があるメモリバッファを待って「論理ブロックＮのデータを含む」状態を取得してから、前記ホストへのユーザデータのデータ転送を開始し、前記転送の完了時にそのメモリバッファに「空」のマークを付ける。ここでおよび他の場合、用語「制御スレッド」は、特定のタスクに関するソフトウェア又はハードウェア制御流れをさす。
ｉｉｉ．フラッシュ／メモリ間制御スレッドであって、各論理ブロックＮのデータに関して、ホストに転送されるべきそのデータの一部があるメモリバッファを待って「空」の状態を取得し、オプションとしてそのメモリバッファに「データ受信の処理中」のマークを付けてから、前記データを含むフラッシュメモリ素子に読取り指令を出す。前記フラッシュ素子が前記データを生成する準備ができた場合、前記制御スレッドがフラッシュから前記メモリバッファに前記ユーザデータの前記データ転送を開始する。前記転送の完了時に、前記スレッドがＥＣＣ／ＥＤＣ機構（ソフトウェア又は回路）により計算されたデータ正当性状態を調べる。前記データが破損しているが、訂正可能である場合、訂正アルゴリズムを使用することができる。前記バッファに存在する前記データが正しい又は訂正されている場合、前記スレッドが、そのメモリバッファに「論理ブロックＮのデータを含む」のマークを付け、それ以外の場合、そのメモリバッファに「論理ブロックＮの破損データを含む」のマークを付ける。
ｉｖ．前記フラッシュ／メモリ間制御スレッドは、全く同時に又は制御の先取りで前記メモリ／ホスト間制御スレッドとは無関係に動作する。前記制御スレッド間の同期化は、ＲＡＭバッファ状態のレジスタ又は変数を用いて行われる。スレッドによりこのメモリレジスタ又は変数を変更する処理は、他のスレッドが前記変更の結果全体を知るだけであり、部分的に変更された状態を知ることができないという意味で、微小であるべきである。
【００３３】
本発明の好ましい実施形態では、ホスト書込み操作中にホスト／メモリ間およびメモリ／フラッシュ間転送を同期化するシステムをさらに組み込む。このシステムは、下記を含む。
ｉ．各メモリバッファ用のメモリレジスタ又は変数であって、前記バッファの状態を示し、前記状態は、「空」、「データ受信の処理中」又は「論理ブロックＮのデータを含む」であることもできる。
ｉｉ．ホスト／メモリ間制御スレッドであって、各論理ブロックＮのデータに関して、ホストから転送されるべきそのデータの一部があるメモリバッファを待って「空」の状態を取得し、オプションとしてそのメモリバッファに「データ受信の処理中」のマークを付けてから、前記ホストからのユーザデータのデータ転送を開始し、前記転送の完了時にそのメモリバッファに「論理ブロックＮのデータを含む」のマークを付ける。ホストから転送された前記データがフラッシュアレイのアクセス単位サイズ（あるフラッシュ技術では「ページ」）と一致しない場合、前記ホストから転送されていない前記ページの一部の内容を前記スレッドが前記フラッシュから読取る。
ｉｉｉ．メモリ／フラッシュ間制御スレッドであって、各論理ブロックＮのデータに関して、ホストから転送されているそのデータの一部があるメモリバッファを待って「論理ブロックＮのデータを含む」状態を取得してから、フラッシュ記憶アルゴリズムに従って（複数の）フラッシュメモリ素子に（複数の）書込み指令を出す。前記書込み指令が失敗した場合、前記データを、前記フラッシュ記憶アルゴリズムに従って多分フラッシュ媒体の異なる位置に多分複数回再度書込むことができる。前記ユーザデータがフラッシュ上にうまく書込まれている場合、前記スレッドは、そのメモリバッファに「空」のマークを付け、それ以外の場合、前記ホストにホスト書込み指令失敗を通知すべきである。
ｉｖ．このメモリ／フラッシュ間制御スレッドは、全く同時に又は制御の先取りで前記ホスト／メモリ間制御スレッドとは無関係に動作する。前記制御スレッド間の同期化は、ＲＡＭバッファ状態のレジスタ又は変数を用いて行われる。スレッドによりこのメモリレジスタ又は変数を変更する処理は、他のスレッドが前記変更の結果全体を知るだけであり、部分的に変更された状態を知ることができないという意味で、微小であるべきである。
【００３４】
本発明のさらに好ましい実施形態では、図３および図４に示すように、そのようなシステムに関する構成は各フラッシュメモリ制御器内にメモリモジュールを含む。図３は、１つのメモリモジュールからディスクインタフェースにデータを送信すると同時に、（送信されるべき）前記データの次の部分をフラッシュから別のメモリモジュールに受信するシステムの例である。前記システムは、図１における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。図４は、ディスクインタフェースから１つのメモリモジュールに新しいデータを受信すると同時に、前記新しいデータの前の部分を別のメモリモジュールからフラッシュメモリに書込むシステムの例である。このシステムは、図２における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。これは、前記システムの設計をかなり単純化できる。当然、すべての上記構成の組合せを実現することもできる。
【００３５】
本発明の別の好ましい実施形態によれば、これらのメモリバッファはデータキャッシュシステムの一部の役割を果たすこともできる。例えば、データが読取り操作中にホストに転送された又は書込み操作中にホストから受信された後、次の読取り操作中に前記ホストが同じデータを要求した場合、前記バッファに残された同じデータを、フラッシュメモリにアクセスすることなく前記ホストに転送することもできる。代わりに、データが書込み操作中にホストから受信された後、前記データを、そのデータをフラッシュ媒体に書込むことなくある時間の間前記バッファに残すこともできる。これは、前記ホストへ／からの直接転送と呼ばれる。
【００３６】
本発明は制限された数の実施形態について説明されているが、本発明の多くの変更、修正および他の応用を行うことができることが分かるであろう。
【図面の簡単な説明】
【００３７】
【図１】ホストインタフェースから１つのメモリバッファに新しいデータを受信すると同時に、新しいデータの前の部分を別のメモリバッファからフラッシュメモリに書込むシステムの例である。
【図２】１つのメモリバッファからホストインタフェースにデータを送信すると同時に、（送信されるべき）データの次の部分をフラッシュから別のメモリバッファに受信するシステムの例である。
【図３】１つのメモリモジュールからディスクインタフェースにデータを送信すると同時に、（送信されるべき）データの次の部分をフラッシュから別のメモリモジュールに受信するシステムの例である。このシステムは、図１におけるシステムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。
【図４】ディスクインタフェースから１つのメモリモジュールに新しいデータを受信すると同時に、新しいデータの前の部分を別のメモリモジュールからフラッシュメモリに書込むシステムの例である。このシステムは、図２におけるシステムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。
【図５】図示されたシステムが２つを超えるメモリバッファを有するという点を除いて、図１と同様である。
【図６】図示されたシステムが２つを超えるメモリバッファを有するという点を除いて、図２と同様である。
【図１】
2004523049.tif 000002
【図２】
2004523049.tif 000003
【図３】
2004523049.tif 000004
【図４】
2004523049.tif 000005
【図５】
2004523049.tif 000006
【図６】
2004523049.tif 000007
【国際公開パンフレット】
2004523049.tif 000008
2004523049.tif 000009
2004523049.tif 000010
2004523049.tif 000011
2004523049.tif 000012
2004523049.tif 000013
2004523049.tif 000014
2004523049.tif 000015
2004523049.tif 000016
2004523049.tif 000017
2004523049.tif 000018
2004523049.tif 000019
2004523049.tif 000020
2004523049.tif 000021
2004523049.tif 000022
2004523049.tif 000023
2004523049.tif 000024
2004523049.tif 000025
2004523049.tif 000026
2004523049.tif 000027
2004523049.tif 000028
2004523049.tif 000029
2004523049.tif 000030
2004523049.tif 000031
【国際調査報告】
2004523049.tif 000032
2004523049.tif 000033