JP2004523049A - フラッシュベース記憶システムにおいて多重アクセスを用いたramバッファを使用する方法 - Google Patents
フラッシュベース記憶システムにおいて多重アクセスを用いたramバッファを使用する方法 Download PDFInfo
- Publication number
- JP2004523049A JP2004523049A JP2002570084A JP2002570084A JP2004523049A JP 2004523049 A JP2004523049 A JP 2004523049A JP 2002570084 A JP2002570084 A JP 2002570084A JP 2002570084 A JP2002570084 A JP 2002570084A JP 2004523049 A JP2004523049 A JP 2004523049A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- flash
- host
- logical block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
多重アクセスを用いたRAMバッファを使用することにより、フラッシュベース記憶システムの読み書き性能を向上させる方法およびシステムに関する。フラッシュベース記憶システムの読み書き性能の向上は、「RAMから」および「RAMへ」の転送操作を同時に行うことにより達成される。本発明の好ましい実施形態によれば、本発明は、ホストインタフェースからフラッシュ媒体へおよびフラッシュ媒体からホストインタフェースへの同時データ転送を可能にするシステムを提供する。また、本発明は、ホスト読取り操作中にメモリ/ホスト間およびフラッシュ/メモリ間転送を同期化するシステムを提供する。さらに、ホスト書込み操作中にホスト/メモリ間およびメモリ/フラッシュ間転送を同期化するシステムを提供する。
Description
【技術分野】
【0001】
序論および分野
本発明は、フラッシュベース記憶システムにおいて多重アクセスを用いたRAMバッファを使用する方法に関する。そのようなRAMバッファは、読み書き操作をRAMにオーバーラップさせることにより達成される、フラッシュベース記憶システムの読み書き性能の向上を可能にする。
【背景技術】
【0002】
記憶媒体としてフラッシュメモリを使用することは通常、下記の2つの特徴を有する。
【0003】
1.フラッシュに書込まれたデータは一般に、誤り検出符号および/又は誤り訂正符号(EDC/ECC)により保護されるべきである。前記データを前記フラッシュから読取ると、EDC/ECCにより、システムは、誤りが存在するか否か、およびオプションとしてその誤りを訂正すべきか否かを判定することができる。訂正は、前記EDC/ECC保護データの任意の部分で行われることがあり、従ってランダムアクセスメモリで行われるべきである。従って、データを、ホストインタフェース(例えば、SCSI又はATAバス)に直接送信することができず、最初にRAMに読取るべきである。この処理に続いて、EDC/ECC状態を調べるべきである。誤りがないことを前記EDC/ECC状態が示す場合、前記データを手渡すことができる。EDC/ECC機構が訂正可能な誤りを示す場合、データをさらに渡す前に訂正作業を行うべきである。前記EDC/ECC機構が訂正不可能な誤りを示す場合、オプションとしてこの誤りを前記ホストインタフェースに渡すこともできる。
【0004】
2.前記フラッシュへの書込み操作が、失敗する場合もある。しかし、データを別の位置に書込むことにより、この失敗をホストインタフェース(例えば、SCSI又はATA)から隠すことができる。前記書込み操作を繰り返すために、前記ホストインタフェースから到来するデータを、前記書込み操作を開始する前にRAMバッファに入れるべきである。
【0005】
これらの2つの特徴により、前記ホストインタフェースと前記フラッシュ媒体との間の直接データ転送が阻止される。媒体としてメモリバッファを使用することは通常、2つの連続転送操作、すなわち、メモリへの操作およびメモリからの操作を行う。これらの2つの連続データ転送の必要性は、必要悪として通常容認され、従って、ほとんどのフラッシュベース記憶システムにおいて有効である。
【0006】
従って、前記メモリバッファへの操作および同メモリバッファからの操作の両方を同時に可能にするシステムに対して広く認められた必要性があり、前記システムを有することは非常に有利である。
【0007】
本発明は、フラッシュベース記憶システムにおいてこれらの2つの転送操作を同時に行うことにより、前記システムの読み書き性能を向上させる方法を記載する。本発明の前記システムは、下記の要因のために既知の代替技術および解決策と区別される。
i)ホストメモリ間およびメモリフラッシュ間転送の同期化、および異なるフラッシュ関連失敗操作からの訂正回復は、本発明で記載のように実現するのが困難である。
ii)読み書き操作のために媒体としてRAMバッファを使用することは一般的なことであるのに対して、複数のRAMバッファを用いたこれらの転送操作を同時に行う具体的な記載の方法は、フラッシュベースシステムにおいて特有であり、従って革新的である。
iii)本発明は、持続読み書き性能をほぼ2倍向上させることができる。
【0008】
ほんの一例として添付図面を参照して、本発明をここに説明する。
【発明の開示】
【課題を解決するための手段】
【0009】
本発明は、多重アクセスを用いた複数のRAMバッファを使用して、フラッシュベース記憶システムの読み書き性能を大幅に向上させる方法およびシステムに関する。フラッシュベース記憶システムの読み書き性能の向上は、「RAMから」および「RAMへ」の転送操作を同時に行うことにより達成される。
【0010】
本発明の好ましい実施形態によれば、本発明は、
1.ホストシステムとの対話を可能にする処理システムと、
2.データ記憶用の少なくとも1つのフラッシュメモリ素子と、
3.フラッシュメモリに書込まれたデータおよびフラッシュから読取られたデータのシンドローム又は検査合計又はCRC(巡回冗長検査)を計算することにより誤り検出を行うオプション手段と、
4.フラッシュメモリから読取られたデータの誤り訂正を行うオプション手段と、
5.各RAM構成要素上で同時読み書き操作を可能にする別々のデータバスを有する少なくとも2つのRAM構成要素と、
を含む、ホストインタフェースと中間RAMバッファとの間および前記中間RAMバッファとフラッシュ媒体との間の同時データ転送を可能にするシステムを提供する。
【0011】
本発明の更なる特徴によれば、ホスト読取り操作中にメモリ/ホスト間およびフラッシュ/メモリ間転送を同期化するシステムを提供する。
【0012】
さらに、ホスト書込み操作中にホスト/メモリ間およびメモリ/フラッシュ間転送を同期化するシステムを提供する。
【0013】
本発明の更なる特徴によれば、ホスト読取り操作中に固体記憶システムにおいてメモリ/ホスト間およびフラッシュ/メモリ間転送を同期化する方法を提供する。
【0014】
さらに、ホスト書込み操作中に固体記憶システムにおいてホスト/メモリ間およびメモリ/フラッシュ間転送を同期化する方法を提供する。
【0015】
明細書に記載の本発明の方法およびシステムを用いてさらに実施形態を展開することができることは、固体記憶システム開発の当業者に理解されるはずである。上述の実施形態は、例として理解されるべきであり、ここに記載の技術をこれらの例だけに制限することを決して意味しない。
【発明を実施するための最良の形態】
【0016】
本発明は、多重アクセスを用いた複数のRAMバッファを使用することにより、フラッシュベース記憶システムの性能を向上させる方法およびシステムに関する。
【0017】
より詳しくは、本発明は、「RAMから」および「RAMへ」の転送操作を同時に行うシステムに関する。
【0018】
本発明による前記システムおよび方法の原理および動作は、図面および付随する説明を参照してよく分かるであろうが、これらの図面は、あくまでも例示の目的で与えられたものであり、限定を意味するものではない。
【0019】
図1および図2は、本発明によるそのようなシステムの動作を示す。図1は、ホストインタフェース10から1つのメモリバッファ12に新しいデータを受信すると同時に、前記新しいデータの前の部分を別のメモリバッファ14からフラッシュメモリ16に書込むシステムの例である。図2は、1つのメモリバッファ22からホストインタフェース20にデータを送信すると同時に、(送信されるべき)前記データの次の部分をフラッシュ26から別のメモリバッファ24に受信するシステムの例である。
【0020】
図1および図2について、中間メモリは、論理的に独立した2つ以上(A、B、C...)のメモリバッファの何れかから成る。論理的独立性により、一方のバッファに書込むことができると同時に、他方のバッファから読取ることができるようになっている。物理的に、これらのバッファは、多重化バスを有するメモリ構成要素又はデュアルポートRAM構成要素の何れかであってもよい。前記メモリ構成要素は、個別チップ又は大規模集積構成要素の一部の何れかであってもよい。デュアルポートRAMの実装の場合、メモリバッファは、デュアルポートRAM内部のメモリの指定された重複しない領域である。
【0021】
システムの論理ブロックNのデータをメモリバッファAからフラッシュ媒体に書込む(図1)場合、論理ブロックN+1のデータをホストインタフェースからメモリバッファBに同時に受信している。ここで次の説明において、「論理ブロック」は、1つ以上のホストシステム転送単位(セクタ)を表す。「論理ブロック」のサイズは、フラッシュ操作の便宜および性能により決められる。例えば、AND又はNAND技術フラッシュの場合、そのサイズを、使用されるフラッシュアレイのページサイズに設定することもできる。ホストから転送されるデータのストリームは、一連の論理ブロックN、N+1、N+2等として前記記憶システムにより見られる。
【0022】
論理的に独立したメモリバッファが2つだけある場合、Bへのデータ転送の完了時に、ソフトウェアは、Aからのフラッシュ書込み操作の完了を待ってフラッシュ書込み状態を検査すべきである。前記書込み操作が失敗している場合、フラッシュ媒体の別の場所で再試行することができる。前記書込み操作が成功している場合、メモリバッファAが空であると考えることができ、2つの新しい同時転送(メモリバッファBからフラッシュ媒体へのブロックN+1およびホストインタフェースからメモリバッファAへのブロックN+2)を開始することができる。
【0023】
2つを超える論理的に独立したメモリバッファがある場合、フラッシュ書込み又は再試行操作の完了を待つことなく、メモリへの新しい転送を開始することができる。新しいデータは、図5から分かるように、使用可能な空メモリバッファC56、D58等に収容される。すべての空メモリバッファが使用されている場合、新しいデータをさらに受信するのに別のメモリバッファを空にするために、フラッシュ書込み又は再試行操作の完了の待ちを実行するものとする。
【0024】
フラッシュ媒体にまだうまく書込まれていない(即ち、書込み状態がまだ受信されていない)データは、失敗書込み操作を再試行するのにそのデータを必要とする場合があるので、交換されるべきでない。
【0025】
ホストシステム転送単位(セクタ)のサイズがフラッシュアレイのアクセス単位サイズ(あるフラッシュ技術における「ページ」)と異なる場合、前記システムは、データのどの部分が書込み工程中にホストから転送されていないかを記録する、又はこの部分を転送前にフラッシュ媒体から多分メモリバッファに読取るべきであることにも留意すべきである。
【0026】
システムの論理ブロックN+1のデータをフラッシュ媒体26からメモリバッファA24に読取る(図2)場合、論理ブロックNのデータをメモリバッファB22からホストインタフェース20に同時に送信している。
【0027】
論理的に独立したメモリバッファが2つだけある場合、Bからのデータ転送の完了時に、ソフトウェアは、Aへの読取り操作の完了を待って読取りデータのEDC/ECC状態を検査すべきである。(ソフトウェア又は回路である)EDC/ECC機構が訂正可能な誤りを示す場合、メモリバッファA内のデータに関して訂正作業を行うことができ、前記EDC/ECC機構が訂正不可能な誤りを示す場合、オプションとしてその誤りをホストインタフェースに渡すこともできる。正しいデータが読取られている場合、又は破損データがうまく訂正されている場合、「読取り」指令を、次の論理ブロックのためにフラッシュ媒体に出すべきであり、フラッシュシステムは、必要ならば転送の準備ができるようにするために新しいデータを待つべきである。次に、2つの新しい同時転送(メモリバッファA(メモリモジュールA)からホストインタフェースへのブロックN+1およびフラッシュ媒体からメモリバッファB(メモリモジュールB)へのブロックN+2)を開始することができる。
【0028】
2つを超える論理的に独立したメモリバッファがある場合、ホストへの転送の完了を待つことなく、メモリへの新しい転送を開始することができる。新しいデータは、図6から分かるように、使用可能な空メモリバッファC66、D68等に入れられる。すべての空メモリバッファが使用されている場合、次のユーザデータを読取るのに別のメモリバッファを空にするために、ホスト操作への転送の完了の待ちを実行するものとする。ホストにまだうまく転送されていないデータを交換すべきでない。
【0029】
前記システムの読み書き性能を向上させるために、(メモリバッファへおよび同メモリバッファからの)2つの転送操作は、正確に同時であるべきであり、2つの異なるデータバスが同時に動作可能であることを意味する。当然、それは、特定の読取り又は書込み操作中にホストへ又は同ホストから転送される論理ブロックの数が1つを超える場合に可能なだけである。
【0030】
図3は、1つのメモリモジュール32からホストインタフェース30にデータを送信すると同時に、(送信されるべき)前記データの次の部分をフラッシュ36から別のメモリモジュール34に受信するシステムの例である。このシステムは、図1における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器38内に位置するという点が異なる。
【0031】
図4は、ホストインタフェース40から1つのメモリモジュール42に新しいデータを受信すると同時に、前記新しいデータの前の部分を別のメモリモジュール44からフラッシュメモリ46に書込むシステムの例である。このシステムは、図2における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器48内に位置するという点が異なる。
【0032】
本発明の好ましい実施形態では、ホスト読取り操作中にメモリ/ホスト間およびフラッシュ/メモリ間転送を同期化するシステムを組み込む。このシステムは、下記を含む。
i.各メモリバッファ用のメモリレジスタ又は変数(この文脈における用語「メモリレジスタ」は、用語「変数」の使用を含んでもよい)であって、前記バッファの状態を示し、前記状態は、「空」、「データ受信の処理中」、「論理ブロックNのデータを含む」および「論理ブロックNの破損データを含む」であることもできる。
ii.メモリ/ホスト間制御スレッドであって、各論理ブロックNのデータに関して、ホストに転送されるべきそのデータの一部があるメモリバッファを待って「論理ブロックNのデータを含む」状態を取得してから、前記ホストへのユーザデータのデータ転送を開始し、前記転送の完了時にそのメモリバッファに「空」のマークを付ける。ここでおよび他の場合、用語「制御スレッド」は、特定のタスクに関するソフトウェア又はハードウェア制御流れをさす。
iii.フラッシュ/メモリ間制御スレッドであって、各論理ブロックNのデータに関して、ホストに転送されるべきそのデータの一部があるメモリバッファを待って「空」の状態を取得し、オプションとしてそのメモリバッファに「データ受信の処理中」のマークを付けてから、前記データを含むフラッシュメモリ素子に読取り指令を出す。前記フラッシュ素子が前記データを生成する準備ができた場合、前記制御スレッドがフラッシュから前記メモリバッファに前記ユーザデータの前記データ転送を開始する。前記転送の完了時に、前記スレッドがECC/EDC機構(ソフトウェア又は回路)により計算されたデータ正当性状態を調べる。前記データが破損しているが、訂正可能である場合、訂正アルゴリズムを使用することができる。前記バッファに存在する前記データが正しい又は訂正されている場合、前記スレッドが、そのメモリバッファに「論理ブロックNのデータを含む」のマークを付け、それ以外の場合、そのメモリバッファに「論理ブロックNの破損データを含む」のマークを付ける。
iv.前記フラッシュ/メモリ間制御スレッドは、全く同時に又は制御の先取りで前記メモリ/ホスト間制御スレッドとは無関係に動作する。前記制御スレッド間の同期化は、RAMバッファ状態のレジスタ又は変数を用いて行われる。スレッドによりこのメモリレジスタ又は変数を変更する処理は、他のスレッドが前記変更の結果全体を知るだけであり、部分的に変更された状態を知ることができないという意味で、微小であるべきである。
【0033】
本発明の好ましい実施形態では、ホスト書込み操作中にホスト/メモリ間およびメモリ/フラッシュ間転送を同期化するシステムをさらに組み込む。このシステムは、下記を含む。
i.各メモリバッファ用のメモリレジスタ又は変数であって、前記バッファの状態を示し、前記状態は、「空」、「データ受信の処理中」又は「論理ブロックNのデータを含む」であることもできる。
ii.ホスト/メモリ間制御スレッドであって、各論理ブロックNのデータに関して、ホストから転送されるべきそのデータの一部があるメモリバッファを待って「空」の状態を取得し、オプションとしてそのメモリバッファに「データ受信の処理中」のマークを付けてから、前記ホストからのユーザデータのデータ転送を開始し、前記転送の完了時にそのメモリバッファに「論理ブロックNのデータを含む」のマークを付ける。ホストから転送された前記データがフラッシュアレイのアクセス単位サイズ(あるフラッシュ技術では「ページ」)と一致しない場合、前記ホストから転送されていない前記ページの一部の内容を前記スレッドが前記フラッシュから読取る。
iii.メモリ/フラッシュ間制御スレッドであって、各論理ブロックNのデータに関して、ホストから転送されているそのデータの一部があるメモリバッファを待って「論理ブロックNのデータを含む」状態を取得してから、フラッシュ記憶アルゴリズムに従って(複数の)フラッシュメモリ素子に(複数の)書込み指令を出す。前記書込み指令が失敗した場合、前記データを、前記フラッシュ記憶アルゴリズムに従って多分フラッシュ媒体の異なる位置に多分複数回再度書込むことができる。前記ユーザデータがフラッシュ上にうまく書込まれている場合、前記スレッドは、そのメモリバッファに「空」のマークを付け、それ以外の場合、前記ホストにホスト書込み指令失敗を通知すべきである。
iv.このメモリ/フラッシュ間制御スレッドは、全く同時に又は制御の先取りで前記ホスト/メモリ間制御スレッドとは無関係に動作する。前記制御スレッド間の同期化は、RAMバッファ状態のレジスタ又は変数を用いて行われる。スレッドによりこのメモリレジスタ又は変数を変更する処理は、他のスレッドが前記変更の結果全体を知るだけであり、部分的に変更された状態を知ることができないという意味で、微小であるべきである。
【0034】
本発明のさらに好ましい実施形態では、図3および図4に示すように、そのようなシステムに関する構成は各フラッシュメモリ制御器内にメモリモジュールを含む。図3は、1つのメモリモジュールからディスクインタフェースにデータを送信すると同時に、(送信されるべき)前記データの次の部分をフラッシュから別のメモリモジュールに受信するシステムの例である。前記システムは、図1における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。図4は、ディスクインタフェースから1つのメモリモジュールに新しいデータを受信すると同時に、前記新しいデータの前の部分を別のメモリモジュールからフラッシュメモリに書込むシステムの例である。このシステムは、図2における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。これは、前記システムの設計をかなり単純化できる。当然、すべての上記構成の組合せを実現することもできる。
【0035】
本発明の別の好ましい実施形態によれば、これらのメモリバッファはデータキャッシュシステムの一部の役割を果たすこともできる。例えば、データが読取り操作中にホストに転送された又は書込み操作中にホストから受信された後、次の読取り操作中に前記ホストが同じデータを要求した場合、前記バッファに残された同じデータを、フラッシュメモリにアクセスすることなく前記ホストに転送することもできる。代わりに、データが書込み操作中にホストから受信された後、前記データを、そのデータをフラッシュ媒体に書込むことなくある時間の間前記バッファに残すこともできる。これは、前記ホストへ/からの直接転送と呼ばれる。
【0036】
本発明は制限された数の実施形態について説明されているが、本発明の多くの変更、修正および他の応用を行うことができることが分かるであろう。
【図面の簡単な説明】
【0037】
【図1】ホストインタフェースから1つのメモリバッファに新しいデータを受信すると同時に、新しいデータの前の部分を別のメモリバッファからフラッシュメモリに書込むシステムの例である。
【図2】1つのメモリバッファからホストインタフェースにデータを送信すると同時に、(送信されるべき)データの次の部分をフラッシュから別のメモリバッファに受信するシステムの例である。
【図3】1つのメモリモジュールからディスクインタフェースにデータを送信すると同時に、(送信されるべき)データの次の部分をフラッシュから別のメモリモジュールに受信するシステムの例である。このシステムは、図1におけるシステムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。
【図4】ディスクインタフェースから1つのメモリモジュールに新しいデータを受信すると同時に、新しいデータの前の部分を別のメモリモジュールからフラッシュメモリに書込むシステムの例である。このシステムは、図2におけるシステムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。
【図5】図示されたシステムが2つを超えるメモリバッファを有するという点を除いて、図1と同様である。
【図6】図示されたシステムが2つを超えるメモリバッファを有するという点を除いて、図2と同様である。
【0001】
序論および分野
本発明は、フラッシュベース記憶システムにおいて多重アクセスを用いたRAMバッファを使用する方法に関する。そのようなRAMバッファは、読み書き操作をRAMにオーバーラップさせることにより達成される、フラッシュベース記憶システムの読み書き性能の向上を可能にする。
【背景技術】
【0002】
記憶媒体としてフラッシュメモリを使用することは通常、下記の2つの特徴を有する。
【0003】
1.フラッシュに書込まれたデータは一般に、誤り検出符号および/又は誤り訂正符号(EDC/ECC)により保護されるべきである。前記データを前記フラッシュから読取ると、EDC/ECCにより、システムは、誤りが存在するか否か、およびオプションとしてその誤りを訂正すべきか否かを判定することができる。訂正は、前記EDC/ECC保護データの任意の部分で行われることがあり、従ってランダムアクセスメモリで行われるべきである。従って、データを、ホストインタフェース(例えば、SCSI又はATAバス)に直接送信することができず、最初にRAMに読取るべきである。この処理に続いて、EDC/ECC状態を調べるべきである。誤りがないことを前記EDC/ECC状態が示す場合、前記データを手渡すことができる。EDC/ECC機構が訂正可能な誤りを示す場合、データをさらに渡す前に訂正作業を行うべきである。前記EDC/ECC機構が訂正不可能な誤りを示す場合、オプションとしてこの誤りを前記ホストインタフェースに渡すこともできる。
【0004】
2.前記フラッシュへの書込み操作が、失敗する場合もある。しかし、データを別の位置に書込むことにより、この失敗をホストインタフェース(例えば、SCSI又はATA)から隠すことができる。前記書込み操作を繰り返すために、前記ホストインタフェースから到来するデータを、前記書込み操作を開始する前にRAMバッファに入れるべきである。
【0005】
これらの2つの特徴により、前記ホストインタフェースと前記フラッシュ媒体との間の直接データ転送が阻止される。媒体としてメモリバッファを使用することは通常、2つの連続転送操作、すなわち、メモリへの操作およびメモリからの操作を行う。これらの2つの連続データ転送の必要性は、必要悪として通常容認され、従って、ほとんどのフラッシュベース記憶システムにおいて有効である。
【0006】
従って、前記メモリバッファへの操作および同メモリバッファからの操作の両方を同時に可能にするシステムに対して広く認められた必要性があり、前記システムを有することは非常に有利である。
【0007】
本発明は、フラッシュベース記憶システムにおいてこれらの2つの転送操作を同時に行うことにより、前記システムの読み書き性能を向上させる方法を記載する。本発明の前記システムは、下記の要因のために既知の代替技術および解決策と区別される。
i)ホストメモリ間およびメモリフラッシュ間転送の同期化、および異なるフラッシュ関連失敗操作からの訂正回復は、本発明で記載のように実現するのが困難である。
ii)読み書き操作のために媒体としてRAMバッファを使用することは一般的なことであるのに対して、複数のRAMバッファを用いたこれらの転送操作を同時に行う具体的な記載の方法は、フラッシュベースシステムにおいて特有であり、従って革新的である。
iii)本発明は、持続読み書き性能をほぼ2倍向上させることができる。
【0008】
ほんの一例として添付図面を参照して、本発明をここに説明する。
【発明の開示】
【課題を解決するための手段】
【0009】
本発明は、多重アクセスを用いた複数のRAMバッファを使用して、フラッシュベース記憶システムの読み書き性能を大幅に向上させる方法およびシステムに関する。フラッシュベース記憶システムの読み書き性能の向上は、「RAMから」および「RAMへ」の転送操作を同時に行うことにより達成される。
【0010】
本発明の好ましい実施形態によれば、本発明は、
1.ホストシステムとの対話を可能にする処理システムと、
2.データ記憶用の少なくとも1つのフラッシュメモリ素子と、
3.フラッシュメモリに書込まれたデータおよびフラッシュから読取られたデータのシンドローム又は検査合計又はCRC(巡回冗長検査)を計算することにより誤り検出を行うオプション手段と、
4.フラッシュメモリから読取られたデータの誤り訂正を行うオプション手段と、
5.各RAM構成要素上で同時読み書き操作を可能にする別々のデータバスを有する少なくとも2つのRAM構成要素と、
を含む、ホストインタフェースと中間RAMバッファとの間および前記中間RAMバッファとフラッシュ媒体との間の同時データ転送を可能にするシステムを提供する。
【0011】
本発明の更なる特徴によれば、ホスト読取り操作中にメモリ/ホスト間およびフラッシュ/メモリ間転送を同期化するシステムを提供する。
【0012】
さらに、ホスト書込み操作中にホスト/メモリ間およびメモリ/フラッシュ間転送を同期化するシステムを提供する。
【0013】
本発明の更なる特徴によれば、ホスト読取り操作中に固体記憶システムにおいてメモリ/ホスト間およびフラッシュ/メモリ間転送を同期化する方法を提供する。
【0014】
さらに、ホスト書込み操作中に固体記憶システムにおいてホスト/メモリ間およびメモリ/フラッシュ間転送を同期化する方法を提供する。
【0015】
明細書に記載の本発明の方法およびシステムを用いてさらに実施形態を展開することができることは、固体記憶システム開発の当業者に理解されるはずである。上述の実施形態は、例として理解されるべきであり、ここに記載の技術をこれらの例だけに制限することを決して意味しない。
【発明を実施するための最良の形態】
【0016】
本発明は、多重アクセスを用いた複数のRAMバッファを使用することにより、フラッシュベース記憶システムの性能を向上させる方法およびシステムに関する。
【0017】
より詳しくは、本発明は、「RAMから」および「RAMへ」の転送操作を同時に行うシステムに関する。
【0018】
本発明による前記システムおよび方法の原理および動作は、図面および付随する説明を参照してよく分かるであろうが、これらの図面は、あくまでも例示の目的で与えられたものであり、限定を意味するものではない。
【0019】
図1および図2は、本発明によるそのようなシステムの動作を示す。図1は、ホストインタフェース10から1つのメモリバッファ12に新しいデータを受信すると同時に、前記新しいデータの前の部分を別のメモリバッファ14からフラッシュメモリ16に書込むシステムの例である。図2は、1つのメモリバッファ22からホストインタフェース20にデータを送信すると同時に、(送信されるべき)前記データの次の部分をフラッシュ26から別のメモリバッファ24に受信するシステムの例である。
【0020】
図1および図2について、中間メモリは、論理的に独立した2つ以上(A、B、C...)のメモリバッファの何れかから成る。論理的独立性により、一方のバッファに書込むことができると同時に、他方のバッファから読取ることができるようになっている。物理的に、これらのバッファは、多重化バスを有するメモリ構成要素又はデュアルポートRAM構成要素の何れかであってもよい。前記メモリ構成要素は、個別チップ又は大規模集積構成要素の一部の何れかであってもよい。デュアルポートRAMの実装の場合、メモリバッファは、デュアルポートRAM内部のメモリの指定された重複しない領域である。
【0021】
システムの論理ブロックNのデータをメモリバッファAからフラッシュ媒体に書込む(図1)場合、論理ブロックN+1のデータをホストインタフェースからメモリバッファBに同時に受信している。ここで次の説明において、「論理ブロック」は、1つ以上のホストシステム転送単位(セクタ)を表す。「論理ブロック」のサイズは、フラッシュ操作の便宜および性能により決められる。例えば、AND又はNAND技術フラッシュの場合、そのサイズを、使用されるフラッシュアレイのページサイズに設定することもできる。ホストから転送されるデータのストリームは、一連の論理ブロックN、N+1、N+2等として前記記憶システムにより見られる。
【0022】
論理的に独立したメモリバッファが2つだけある場合、Bへのデータ転送の完了時に、ソフトウェアは、Aからのフラッシュ書込み操作の完了を待ってフラッシュ書込み状態を検査すべきである。前記書込み操作が失敗している場合、フラッシュ媒体の別の場所で再試行することができる。前記書込み操作が成功している場合、メモリバッファAが空であると考えることができ、2つの新しい同時転送(メモリバッファBからフラッシュ媒体へのブロックN+1およびホストインタフェースからメモリバッファAへのブロックN+2)を開始することができる。
【0023】
2つを超える論理的に独立したメモリバッファがある場合、フラッシュ書込み又は再試行操作の完了を待つことなく、メモリへの新しい転送を開始することができる。新しいデータは、図5から分かるように、使用可能な空メモリバッファC56、D58等に収容される。すべての空メモリバッファが使用されている場合、新しいデータをさらに受信するのに別のメモリバッファを空にするために、フラッシュ書込み又は再試行操作の完了の待ちを実行するものとする。
【0024】
フラッシュ媒体にまだうまく書込まれていない(即ち、書込み状態がまだ受信されていない)データは、失敗書込み操作を再試行するのにそのデータを必要とする場合があるので、交換されるべきでない。
【0025】
ホストシステム転送単位(セクタ)のサイズがフラッシュアレイのアクセス単位サイズ(あるフラッシュ技術における「ページ」)と異なる場合、前記システムは、データのどの部分が書込み工程中にホストから転送されていないかを記録する、又はこの部分を転送前にフラッシュ媒体から多分メモリバッファに読取るべきであることにも留意すべきである。
【0026】
システムの論理ブロックN+1のデータをフラッシュ媒体26からメモリバッファA24に読取る(図2)場合、論理ブロックNのデータをメモリバッファB22からホストインタフェース20に同時に送信している。
【0027】
論理的に独立したメモリバッファが2つだけある場合、Bからのデータ転送の完了時に、ソフトウェアは、Aへの読取り操作の完了を待って読取りデータのEDC/ECC状態を検査すべきである。(ソフトウェア又は回路である)EDC/ECC機構が訂正可能な誤りを示す場合、メモリバッファA内のデータに関して訂正作業を行うことができ、前記EDC/ECC機構が訂正不可能な誤りを示す場合、オプションとしてその誤りをホストインタフェースに渡すこともできる。正しいデータが読取られている場合、又は破損データがうまく訂正されている場合、「読取り」指令を、次の論理ブロックのためにフラッシュ媒体に出すべきであり、フラッシュシステムは、必要ならば転送の準備ができるようにするために新しいデータを待つべきである。次に、2つの新しい同時転送(メモリバッファA(メモリモジュールA)からホストインタフェースへのブロックN+1およびフラッシュ媒体からメモリバッファB(メモリモジュールB)へのブロックN+2)を開始することができる。
【0028】
2つを超える論理的に独立したメモリバッファがある場合、ホストへの転送の完了を待つことなく、メモリへの新しい転送を開始することができる。新しいデータは、図6から分かるように、使用可能な空メモリバッファC66、D68等に入れられる。すべての空メモリバッファが使用されている場合、次のユーザデータを読取るのに別のメモリバッファを空にするために、ホスト操作への転送の完了の待ちを実行するものとする。ホストにまだうまく転送されていないデータを交換すべきでない。
【0029】
前記システムの読み書き性能を向上させるために、(メモリバッファへおよび同メモリバッファからの)2つの転送操作は、正確に同時であるべきであり、2つの異なるデータバスが同時に動作可能であることを意味する。当然、それは、特定の読取り又は書込み操作中にホストへ又は同ホストから転送される論理ブロックの数が1つを超える場合に可能なだけである。
【0030】
図3は、1つのメモリモジュール32からホストインタフェース30にデータを送信すると同時に、(送信されるべき)前記データの次の部分をフラッシュ36から別のメモリモジュール34に受信するシステムの例である。このシステムは、図1における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器38内に位置するという点が異なる。
【0031】
図4は、ホストインタフェース40から1つのメモリモジュール42に新しいデータを受信すると同時に、前記新しいデータの前の部分を別のメモリモジュール44からフラッシュメモリ46に書込むシステムの例である。このシステムは、図2における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器48内に位置するという点が異なる。
【0032】
本発明の好ましい実施形態では、ホスト読取り操作中にメモリ/ホスト間およびフラッシュ/メモリ間転送を同期化するシステムを組み込む。このシステムは、下記を含む。
i.各メモリバッファ用のメモリレジスタ又は変数(この文脈における用語「メモリレジスタ」は、用語「変数」の使用を含んでもよい)であって、前記バッファの状態を示し、前記状態は、「空」、「データ受信の処理中」、「論理ブロックNのデータを含む」および「論理ブロックNの破損データを含む」であることもできる。
ii.メモリ/ホスト間制御スレッドであって、各論理ブロックNのデータに関して、ホストに転送されるべきそのデータの一部があるメモリバッファを待って「論理ブロックNのデータを含む」状態を取得してから、前記ホストへのユーザデータのデータ転送を開始し、前記転送の完了時にそのメモリバッファに「空」のマークを付ける。ここでおよび他の場合、用語「制御スレッド」は、特定のタスクに関するソフトウェア又はハードウェア制御流れをさす。
iii.フラッシュ/メモリ間制御スレッドであって、各論理ブロックNのデータに関して、ホストに転送されるべきそのデータの一部があるメモリバッファを待って「空」の状態を取得し、オプションとしてそのメモリバッファに「データ受信の処理中」のマークを付けてから、前記データを含むフラッシュメモリ素子に読取り指令を出す。前記フラッシュ素子が前記データを生成する準備ができた場合、前記制御スレッドがフラッシュから前記メモリバッファに前記ユーザデータの前記データ転送を開始する。前記転送の完了時に、前記スレッドがECC/EDC機構(ソフトウェア又は回路)により計算されたデータ正当性状態を調べる。前記データが破損しているが、訂正可能である場合、訂正アルゴリズムを使用することができる。前記バッファに存在する前記データが正しい又は訂正されている場合、前記スレッドが、そのメモリバッファに「論理ブロックNのデータを含む」のマークを付け、それ以外の場合、そのメモリバッファに「論理ブロックNの破損データを含む」のマークを付ける。
iv.前記フラッシュ/メモリ間制御スレッドは、全く同時に又は制御の先取りで前記メモリ/ホスト間制御スレッドとは無関係に動作する。前記制御スレッド間の同期化は、RAMバッファ状態のレジスタ又は変数を用いて行われる。スレッドによりこのメモリレジスタ又は変数を変更する処理は、他のスレッドが前記変更の結果全体を知るだけであり、部分的に変更された状態を知ることができないという意味で、微小であるべきである。
【0033】
本発明の好ましい実施形態では、ホスト書込み操作中にホスト/メモリ間およびメモリ/フラッシュ間転送を同期化するシステムをさらに組み込む。このシステムは、下記を含む。
i.各メモリバッファ用のメモリレジスタ又は変数であって、前記バッファの状態を示し、前記状態は、「空」、「データ受信の処理中」又は「論理ブロックNのデータを含む」であることもできる。
ii.ホスト/メモリ間制御スレッドであって、各論理ブロックNのデータに関して、ホストから転送されるべきそのデータの一部があるメモリバッファを待って「空」の状態を取得し、オプションとしてそのメモリバッファに「データ受信の処理中」のマークを付けてから、前記ホストからのユーザデータのデータ転送を開始し、前記転送の完了時にそのメモリバッファに「論理ブロックNのデータを含む」のマークを付ける。ホストから転送された前記データがフラッシュアレイのアクセス単位サイズ(あるフラッシュ技術では「ページ」)と一致しない場合、前記ホストから転送されていない前記ページの一部の内容を前記スレッドが前記フラッシュから読取る。
iii.メモリ/フラッシュ間制御スレッドであって、各論理ブロックNのデータに関して、ホストから転送されているそのデータの一部があるメモリバッファを待って「論理ブロックNのデータを含む」状態を取得してから、フラッシュ記憶アルゴリズムに従って(複数の)フラッシュメモリ素子に(複数の)書込み指令を出す。前記書込み指令が失敗した場合、前記データを、前記フラッシュ記憶アルゴリズムに従って多分フラッシュ媒体の異なる位置に多分複数回再度書込むことができる。前記ユーザデータがフラッシュ上にうまく書込まれている場合、前記スレッドは、そのメモリバッファに「空」のマークを付け、それ以外の場合、前記ホストにホスト書込み指令失敗を通知すべきである。
iv.このメモリ/フラッシュ間制御スレッドは、全く同時に又は制御の先取りで前記ホスト/メモリ間制御スレッドとは無関係に動作する。前記制御スレッド間の同期化は、RAMバッファ状態のレジスタ又は変数を用いて行われる。スレッドによりこのメモリレジスタ又は変数を変更する処理は、他のスレッドが前記変更の結果全体を知るだけであり、部分的に変更された状態を知ることができないという意味で、微小であるべきである。
【0034】
本発明のさらに好ましい実施形態では、図3および図4に示すように、そのようなシステムに関する構成は各フラッシュメモリ制御器内にメモリモジュールを含む。図3は、1つのメモリモジュールからディスクインタフェースにデータを送信すると同時に、(送信されるべき)前記データの次の部分をフラッシュから別のメモリモジュールに受信するシステムの例である。前記システムは、図1における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。図4は、ディスクインタフェースから1つのメモリモジュールに新しいデータを受信すると同時に、前記新しいデータの前の部分を別のメモリモジュールからフラッシュメモリに書込むシステムの例である。このシステムは、図2における前記システムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。これは、前記システムの設計をかなり単純化できる。当然、すべての上記構成の組合せを実現することもできる。
【0035】
本発明の別の好ましい実施形態によれば、これらのメモリバッファはデータキャッシュシステムの一部の役割を果たすこともできる。例えば、データが読取り操作中にホストに転送された又は書込み操作中にホストから受信された後、次の読取り操作中に前記ホストが同じデータを要求した場合、前記バッファに残された同じデータを、フラッシュメモリにアクセスすることなく前記ホストに転送することもできる。代わりに、データが書込み操作中にホストから受信された後、前記データを、そのデータをフラッシュ媒体に書込むことなくある時間の間前記バッファに残すこともできる。これは、前記ホストへ/からの直接転送と呼ばれる。
【0036】
本発明は制限された数の実施形態について説明されているが、本発明の多くの変更、修正および他の応用を行うことができることが分かるであろう。
【図面の簡単な説明】
【0037】
【図1】ホストインタフェースから1つのメモリバッファに新しいデータを受信すると同時に、新しいデータの前の部分を別のメモリバッファからフラッシュメモリに書込むシステムの例である。
【図2】1つのメモリバッファからホストインタフェースにデータを送信すると同時に、(送信されるべき)データの次の部分をフラッシュから別のメモリバッファに受信するシステムの例である。
【図3】1つのメモリモジュールからディスクインタフェースにデータを送信すると同時に、(送信されるべき)データの次の部分をフラッシュから別のメモリモジュールに受信するシステムの例である。このシステムは、図1におけるシステムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。
【図4】ディスクインタフェースから1つのメモリモジュールに新しいデータを受信すると同時に、新しいデータの前の部分を別のメモリモジュールからフラッシュメモリに書込むシステムの例である。このシステムは、図2におけるシステムと同様であるが、メモリモジュールがフラッシュメモリ制御器内に位置するという点が異なる。
【図5】図示されたシステムが2つを超えるメモリバッファを有するという点を除いて、図1と同様である。
【図6】図示されたシステムが2つを超えるメモリバッファを有するという点を除いて、図2と同様である。
Claims (21)
- i.ホストとの対話を可能にする処理システムと、
ii.前記処理システムのデータを記憶する少なくとも1つのフラッシュメモリ素子と、
iii.少なくとも2つのRAM構成要素であって、別々のデータバスを有する前記RAM構成要素の各々が前記処理システムと前記フラッシュメモリ素子との間の同時読み書き操作を可能にするRAM構成要素と、
を含む、ホストインタフェースとフラッシュ媒体との間の同時データ転送を可能にするシステム。 - 前記フラッシュメモリ素子に書込まれたデータおよび前記フラッシュメモリ素子から読取られたデータのシンドロームを計算する誤り検出(EDC)回路をさらに含む、請求項1に記載のシステム。
- 前記フラッシュメモリ素子から読取られたデータを訂正する誤り訂正(ECC)回路をさらに含む、請求項1に記載のシステム。
- 前記RAM構成要素のうち少なくとも1つが各フラッシュメモリ制御器の内部に存在するように少なくとも2つのフラッシュメモリ制御器を含む、請求項1に記載のシステム。
- 前記RAM構成要素が少なくとも1つのデュアルポートメモリ構成要素の代わりに使用される、請求項1に記載のシステム。
- 前記RAM構成要素が大規模集積回路の一部になっている、請求項1に記載のシステム。
- 前記データが読取り操作中にホストに転送された後、次の読取り操作中に前記ホストが同じ前記データを要求した場合、前記RAM構成要素に残された同じ前記データが前記ホストシステムに直接転送されるように、前記RAM構成要素がデータキャッシュシステムの少なくとも一部を形成する、請求項1に記載のシステム。
- 前記データが書込み操作中にホストから受信された後、次の読取り操作中に前記ホストが同じ前記データを要求した場合、前記RAM構成要素に残された同じ前記データが前記ホストシステムから直接転送されるように、前記RAM構成要素がデータキャッシュシステムの少なくとも一部である、請求項1に記載のシステム。
- i.ホストシステムとフラッシュ素子との間のデータを記憶する複数のメモリバッファと、
ii.メモリ/ホスト間およびフラッシュ/メモリ間の制御スレッドを同期化するために状態が使用されるように前記バッファの状態を示す、各々の前記メモリバッファ用のメモリレジスタと、
iii.ホストへのユーザデータのデータ転送を開始し、前記データ転送の完了時に前記メモリバッファに空のマークを付ける、メモリ/ホスト間データ転送制御スレッドと、
iv.前記データを含むフラッシュメモリ素子に読取り指令を出し、続いて前記フラッシュ素子が前記データを生成する準備ができた場合、フラッシュから前記メモリバッファにユーザデータの前記データ転送を開始する、フラッシュ/メモリ間制御スレッドと、
を含む、ホスト読取り操作中に固体記憶システムにおいてメモリ/ホスト間およびフラッシュ素子/メモリ間データ転送を同期化するシステム。 - 前記フラッシュ/メモリ間制御スレッドが前記メモリ/ホスト間制御スレッドとは無関係に動作する、請求項9に記載のシステム。
- ステップiii.が、
a)前記転送の完了時に、誤り検出機構により計算されたデータ正当性状態を調べるステップと、
b)前記データが破損され、訂正可能である場合、訂正アルゴリズムを使用するステップと、
c)前記メモリバッファに存在する前記データが正しい場合、特定の論理ブロックのデータを含むものとしてそのメモリバッファにマークを付けるステップと、
d)前記メモリバッファに存在する前記データが正しくない場合、破損データを含むものとしてそのメモリバッファにマークを付けるステップと、
を含む、請求項9に記載のシステム。 - 前記状態が、
(a)新しいデータの受信が可能である空状態と、
(b)前記システムが特定の論理ブロックのデータを含む状態と、
(c)前記システムが前記論理ブロックの破損データを含む状態と、
を含む、前記各メモリバッファの現状態を示す、請求項9に記載のメモリレジスタ。 - i.ホストシステムとフラッシュ素子との間のデータを記憶する複数のメモリバッファと、
ii.ホスト/メモリ間およびメモリ/フラッシュ間の制御スレッドを同期化するために状態が使用されるように各々の前記メモリバッファ用の状態を示すメモリレジスタと、
iii.ホスト/メモリ間データ転送制御スレッドであって、各々の特定の論理ブロックのデータに関して、ホストから転送されるべきそのデータの一部があるメモリバッファを待って空状態を取得してから、データ転送の完了時に前記データ転送制御スレッドが前記特定の論理ブロックの前記データを含むものとして前記メモリバッファにマークを付けるように前記ホストからのユーザデータのデータ転送を開始するホスト/メモリ間データ転送制御スレッドと、
iv.メモリ/フラッシュ間データ転送制御スレッドであって、各々の特定の論理ブロックのデータに関して、前記ホストから転送されているそのデータの一部があるメモリバッファを待って前記特定の論理ブロックの前記データを含む状態を取得し、フラッシュ記憶アルゴリズムに従って少なくとも1つのフラッシュメモリ素子に少なくとも1つの書込み指令を出すメモリ/フラッシュ間データ転送制御スレッドと、
を含む、ホスト書込み操作中に固体記憶システムにおいてホスト/メモリ間およびメモリ/フラッシュ素子間データ転送を同期化するシステム。 - 前記メモリ/フラッシュ間制御スレッドが前記ホスト/メモリ間制御スレッドとは無関係に動作する、請求項13に記載のシステム。
- 前記状態が、
(a)新しいデータの受信が可能である空状態と、
(b)前記システムが特定の論理ブロックのデータを含む状態と、
を含む、前記各メモリバッファの現状態を示す、請求項13に記載のメモリレジスタ。 - 前記ホスト/メモリ間データ転送制御スレッドの機能が、前記ホストから転送された前記データが前記フラッシュアレイのアクセス単位サイズと一致しない場合に前記ホストから転送されていない内容を前記データのフラッシュ部分から読取るステップをさらに含む、請求項13に記載のシステム。
- i.ホストシステムとフラッシュ素子との間のデータを記憶する複数のメモリバッファを設けるステップと、
ii.前記メモリバッファの状態を示す、各々の前記メモリバッファ用のメモリレジスタに指令するステップと、
iii.メモリ/ホスト間データ転送制御スレッドに指令するステップであって、転送される各論理ブロックが前記メモリバッファを待って論理ブロックのデータを含む状態を取得し、続いて前記ホストへの前記論理ブロックのデータ転送を開始し、そのデータ転送の完了時に前記制御スレッドが前記メモリバッファに空のマークを付けるステップと、
iv.フラッシュ/メモリ間データ転送制御スレッドに指令するステップであって、各論理ブロックのデータがある前記メモリバッファを待って空である状態を取得し、前記データを含むフラッシュメモリ素子に読取り指令を出すステップと、
v.前記読取り指令が完了した場合、および前記フラッシュメモリ素子が前記データを生成する準備ができた場合、前記フラッシュ/メモリ間データ転送制御スレッドにより前記メモリバッファへの前記ユーザデータのデータ転送を開始するステップと、
を含む、ホスト読取り操作中に固体記憶システムにおいてメモリ/ホスト間およびフラッシュ素子/メモリ間データ転送を同期化する方法。 - メモリレジスタに指令するステップが、各々の前記メモリバッファ用の変数に指令するステップをさらに伴う、請求項17に記載の方法。
- a)前記データの正当性状態を調べるステップと、
b)前記データが破損しているが、訂正可能である場合、訂正機構を使用するステップと、
c)前記バッファに存在する前記データが正しい場合、前記論理ブロックのデータを含むものとして前記メモリバッファにマークを付けるステップと、
d)前記データが破損している場合、前記論理ブロックの破損データを含むものとして前記メモリバッファにマークを付けるステップと、
をさらに含む、請求項17に記載の方法。 - i.ホストシステムとフラッシュ素子との間のデータを記憶する複数のメモリバッファを設けるステップと、
ii.前記メモリバッファの状態を示す、各メモリバッファ用のメモリレジスタに指令するステップと、
iii.ホスト/メモリ間データ転送制御スレッドに指令するステップであって、各論理ブロックがある前記メモリバッファを待って空状態を取得してから、前記ホストからのユーザデータのデータ転送を開始し、前記データ転送の完了時に前記論理ブロックの前記データを含むものとしてその前記メモリバッファにマークを付け、その後、前記ホストから転送された前記データがフラッシュアレイのアクセス単位サイズと一致しない場合に前記スレッドが前記ホストから転送されていないページの一部の内容を前記フラッシュ素子から読取るステップと、
iv.メモリ/フラッシュ間データ転送制御スレッドに指令するステップであって、各論理ブロックのデータがある前記メモリバッファを待って特定の論理ブロックのデータを含む状態を取得してから、フラッシュ素子記憶アルゴリズムに従って少なくとも1つのフラッシュメモリ素子に少なくとも1つの書込み指令を出し、その後、前記ユーザデータがフラッシュ上にうまく書込まれている場合に前記スレッドが前記メモリバッファに空のマークを付け、それ以外の場合に前記スレッドが前記ホストに書込み指令失敗を通知するように、書込み指令が失敗した場合にオプションとして前記データを前記フラッシュ素子記憶アルゴリズムに従って異なる位置に再度書込むことができるステップと、
を含む、ホスト書込み操作中に固体記憶システムにおいてホスト/メモリ間およびメモリ/フラッシュ間転送を同期化する方法。 - メモリレジスタに指令するステップが、各々の前記メモリバッファ用の変数に指令するステップをさらに伴う、請求項20に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/797,580 US6691205B2 (en) | 2001-03-05 | 2001-03-05 | Method for using RAM buffers with simultaneous accesses in flash based storage systems |
PCT/US2002/006454 WO2002071228A1 (en) | 2001-03-05 | 2002-03-04 | A method for using ram buffers with multiple accesses in flash-based storage systems |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004523049A true JP2004523049A (ja) | 2004-07-29 |
Family
ID=25171233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002570084A Pending JP2004523049A (ja) | 2001-03-05 | 2002-03-04 | フラッシュベース記憶システムにおいて多重アクセスを用いたramバッファを使用する方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6691205B2 (ja) |
JP (1) | JP2004523049A (ja) |
WO (1) | WO2002071228A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012091234A1 (ko) * | 2010-12-31 | 2012-07-05 | 세종대학교산학협력단 | 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6954929B2 (en) * | 2001-07-30 | 2005-10-11 | Hewlett-Packard Development Company, L.P. | Method for just-in-time updating of programming parts |
US6918027B2 (en) * | 2001-07-30 | 2005-07-12 | Hewlett-Packard Development Company, L.P. | System and method for in-system programming through an on-system JTAG bridge of programmable logic devices on multiple circuit boards of a system |
US20040225783A1 (en) * | 2001-07-30 | 2004-11-11 | Erickson Michael John | Bus to multiple jtag bus bridge |
US6883109B2 (en) * | 2001-07-30 | 2005-04-19 | Hewlett-Packard Development Company, L.P. | Method for accessing scan chains and updating EEPROM-resident FPGA code through a system management processor and JTAG bus |
KR100498508B1 (ko) * | 2003-09-16 | 2005-07-01 | 삼성전자주식회사 | 데이터 전송시간을 감소시키는 듀얼 버퍼링(Dualbuffering) 메모리 시스템 및 이에 대한 제어방법 |
WO2005050453A1 (ja) * | 2003-11-18 | 2005-06-02 | Matsushita Electric Industrial Co., Ltd. | ファイル記録装置 |
US7173863B2 (en) * | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
KR100606242B1 (ko) * | 2004-01-30 | 2006-07-31 | 삼성전자주식회사 | 불휘발성 메모리와 호스트간에 버퍼링 동작을 수행하는멀티 포트 휘발성 메모리 장치, 이를 이용한 멀티-칩패키지 반도체 장치 및 이를 이용한 데이터 처리장치 |
DE102004055013A1 (de) * | 2004-11-15 | 2006-05-24 | Infineon Technologies Ag | Computereinrichtung |
JP4695385B2 (ja) | 2004-11-30 | 2011-06-08 | 株式会社東芝 | メモリカードおよびカードコントローラ |
DE102004058528B3 (de) | 2004-12-04 | 2006-05-04 | Hyperstone Ag | Speichersystem mit Sektorbuffern |
US7245527B2 (en) * | 2005-05-16 | 2007-07-17 | Freescale Semiconductor, Inc. | Nonvolatile memory system using magneto-resistive random access memory (MRAM) |
JP5130646B2 (ja) * | 2005-06-06 | 2013-01-30 | ソニー株式会社 | 記憶装置 |
US7441102B2 (en) * | 2006-02-28 | 2008-10-21 | Freescale Semiconductor, Inc. | Integrated circuit with functional state configurable memory and method of configuring functional states of the integrated circuit memory |
US7904639B2 (en) * | 2006-08-22 | 2011-03-08 | Mosaid Technologies Incorporated | Modular command structure for memory and memory system |
US8230154B2 (en) * | 2007-01-19 | 2012-07-24 | Spansion Llc | Fully associative banking for memory |
WO2008101316A1 (en) * | 2007-02-22 | 2008-08-28 | Mosaid Technologies Incorporated | Apparatus and method for using a page buffer of a memory device as a temporary cache |
US8086785B2 (en) * | 2007-02-22 | 2011-12-27 | Mosaid Technologies Incorporated | System and method of page buffer operation for memory devices |
US8694714B2 (en) * | 2008-01-18 | 2014-04-08 | Spansion Llc | Retargeting of a write operation retry in the event of a write operation failure |
US20090254705A1 (en) * | 2008-04-07 | 2009-10-08 | International Business Machines Corporation | Bus attached compressed random access memory |
US8423592B2 (en) * | 2008-04-11 | 2013-04-16 | Sandisk Technologies Inc. | Method and system for accessing a storage system with multiple file systems |
US20090327535A1 (en) * | 2008-06-30 | 2009-12-31 | Liu Tz-Yi | Adjustable read latency for memory device in page-mode access |
US8468417B2 (en) * | 2009-02-18 | 2013-06-18 | Micron Technology, Inc. | Data integrity in memory controllers and methods |
KR101175250B1 (ko) | 2009-06-29 | 2012-08-21 | 에스케이하이닉스 주식회사 | 낸드 플래시 메모리 장치와 그의 컨트롤러 및 이들의 라이트 오퍼레이션 방법 |
US8683456B2 (en) | 2009-07-13 | 2014-03-25 | Apple Inc. | Test partitioning for a non-volatile memory |
JP5209793B2 (ja) * | 2009-08-21 | 2013-06-12 | パナソニック株式会社 | 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム |
WO2011036230A2 (en) * | 2009-09-23 | 2011-03-31 | St-Ericsson Sa | Data transfer method |
US8725977B2 (en) | 2010-02-17 | 2014-05-13 | Seagate Technology Llc | NVMHCI attached hybrid data storage |
US8650446B2 (en) * | 2010-03-24 | 2014-02-11 | Apple Inc. | Management of a non-volatile memory based on test quality |
US8645776B2 (en) * | 2010-03-24 | 2014-02-04 | Apple Inc. | Run-time testing of memory locations in a non-volatile memory |
US8751903B2 (en) * | 2010-07-26 | 2014-06-10 | Apple Inc. | Methods and systems for monitoring write operations of non-volatile memory |
EP2418584A1 (en) | 2010-08-13 | 2012-02-15 | Thomson Licensing | Method and apparatus for storing at least two data streams into an array of memories, or for reading at least two data streams from an array of memories |
JP5547701B2 (ja) * | 2011-09-21 | 2014-07-16 | 日立オートモティブシステムズ株式会社 | 自動車用電子制御装置 |
KR101934519B1 (ko) * | 2012-11-26 | 2019-01-02 | 삼성전자주식회사 | 저장 장치 및 그것의 데이터 전송 방법 |
WO2016054640A1 (en) * | 2014-10-03 | 2016-04-07 | Ezuniverse Inc. | Data management system |
KR102461453B1 (ko) | 2015-06-10 | 2022-11-02 | 삼성전자주식회사 | 스토리지 장치 |
US10521118B2 (en) * | 2016-07-13 | 2019-12-31 | Sandisk Technologies Llc | Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB) |
US10216685B1 (en) * | 2017-07-19 | 2019-02-26 | Agiga Tech Inc. | Memory modules with nonvolatile storage and rapid, sustained transfer rates |
JP7155028B2 (ja) * | 2019-01-29 | 2022-10-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN116931842B (zh) * | 2023-09-12 | 2023-12-08 | 合肥康芯威存储技术有限公司 | 一种存储器、数据处理方法、电子设备及介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6474649A (en) * | 1987-09-16 | 1989-03-20 | Nec Corp | Sector buffer control system |
US5359569A (en) * | 1991-10-29 | 1994-10-25 | Hitachi Ltd. | Semiconductor memory |
JPH06195258A (ja) * | 1992-07-08 | 1994-07-15 | Nec Corp | 半導体記憶装置 |
US5588112A (en) * | 1992-12-30 | 1996-12-24 | Digital Equipment Corporation | DMA controller for memory scrubbing |
US5539345A (en) * | 1992-12-30 | 1996-07-23 | Digital Equipment Corporation | Phase detector apparatus |
JPH06332664A (ja) * | 1993-03-23 | 1994-12-02 | Toshiba Corp | 表示制御システム |
US5438549A (en) * | 1994-02-28 | 1995-08-01 | Intel Corporation | Nonvolatile memory with volatile memory buffer and a backup power supply system |
US5603001A (en) * | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
JPH08235852A (ja) * | 1995-02-28 | 1996-09-13 | Mitsubishi Electric Corp | 半導体記憶装置 |
US5884055A (en) * | 1996-11-27 | 1999-03-16 | Emc Corporation | Method and apparatus including a shared resource and multiple processors running a common control program accessing the shared resource |
US6418506B1 (en) * | 1996-12-31 | 2002-07-09 | Intel Corporation | Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array |
US5928370A (en) * | 1997-02-05 | 1999-07-27 | Lexar Media, Inc. | Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure |
US6016472A (en) * | 1997-09-29 | 2000-01-18 | Lucent Technologies Inc. | System and method for interfacing a digital audio processor to a low-speed serially addressable storage device |
-
2001
- 2001-03-05 US US09/797,580 patent/US6691205B2/en not_active Expired - Lifetime
-
2002
- 2002-03-04 WO PCT/US2002/006454 patent/WO2002071228A1/en active Application Filing
- 2002-03-04 JP JP2002570084A patent/JP2004523049A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012091234A1 (ko) * | 2010-12-31 | 2012-07-05 | 세종대학교산학협력단 | 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법 |
US9411719B2 (en) | 2010-12-31 | 2016-08-09 | Seong University Industry Academy Cooperation Foundation | Memory system including nonvolatile and volatile memory and operating method thereof |
US10140060B2 (en) | 2010-12-31 | 2018-11-27 | Sejong University Industry Academy Cooperation Foundation | Memory system including a nonvolatile memory and a volatile memory, and processing method using the memory system |
US10558395B2 (en) | 2010-12-31 | 2020-02-11 | Sejong University Industry Academy Cooperation Foundation | Memory system including a nonvolatile memory and a volatile memory, and processing method using the memory system |
US11188262B2 (en) | 2010-12-31 | 2021-11-30 | SK Hynix Inc. | Memory system including a nonvolatile memory and a volatile memory, and processing method using the memory system |
Also Published As
Publication number | Publication date |
---|---|
US20020124129A1 (en) | 2002-09-05 |
US6691205B2 (en) | 2004-02-10 |
WO2002071228A1 (en) | 2002-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004523049A (ja) | フラッシュベース記憶システムにおいて多重アクセスを用いたramバッファを使用する方法 | |
JP6882115B2 (ja) | Ddr sdramインタフェイスのためのdram支援エラー訂正方法 | |
US5195100A (en) | Non-volatile memory storage of write operation identifier in data sotrage device | |
TWI509623B (zh) | 用於內建錯誤更正的儲存架構 | |
US6151641A (en) | DMA controller of a RAID storage controller with integrated XOR parity computation capability adapted to compute parity in parallel with the transfer of data segments | |
US11157357B2 (en) | Operation methods of memory system and host, and computing system | |
US7676729B2 (en) | Data corruption avoidance in DRAM chip sparing | |
JP2008226245A (ja) | フラッシュメモリに基づくメモリシステム | |
JP2003516598A (ja) | 誤り訂正装置 | |
US20130304970A1 (en) | Systems and methods for providing high performance redundant array of independent disks in a solid-state device | |
US7076686B2 (en) | Hot swapping memory method and system | |
US8713410B2 (en) | Data storage apparatus, memory control apparatus and method for controlling flash memories | |
US7308601B2 (en) | Program, method and apparatus for disk array control | |
US20190312600A1 (en) | Area efficient implementation of a product code error correcting code decoder | |
JPS6230664B2 (ja) | ||
JP4390694B2 (ja) | Dma回路及びこれを用いたディスクアレイ装置 | |
JP2010536112A (ja) | 中断された書込みの回復のためのデータ記憶方法、機器およびシステム | |
US20080155193A1 (en) | Staging method for disk array apparatus | |
JPH10240453A (ja) | ディスクアレイ装置 | |
JP3281980B2 (ja) | 磁気ディスク装置 | |
KR100328818B1 (ko) | 플래시 메모리의 데이타 저장방법 | |
JP3798773B2 (ja) | ディスク制御装置及び冗長化論理ディスクドライブの一貫性回復方法 | |
JP2003296199A (ja) | 記憶装置、データ処理方法及びデータ処理プログラム | |
JP3615250B2 (ja) | ディスクアレイ装置 | |
JPH0528667A (ja) | 磁気デイスク制御部 |