JP2004005613A - 専用フラッシュコントローラを使用してフラッシュベースストレージシステムの性能を改善するための方法 - Google Patents
専用フラッシュコントローラを使用してフラッシュベースストレージシステムの性能を改善するための方法 Download PDFInfo
- Publication number
- JP2004005613A JP2004005613A JP2003120383A JP2003120383A JP2004005613A JP 2004005613 A JP2004005613 A JP 2004005613A JP 2003120383 A JP2003120383 A JP 2003120383A JP 2003120383 A JP2003120383 A JP 2003120383A JP 2004005613 A JP2004005613 A JP 2004005613A
- Authority
- JP
- Japan
- Prior art keywords
- flash
- chip
- data
- controller
- dma
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Bus Control (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】専用フラッシュメモリコントローラを使用してフラッシュベースストレージシステムの性能を高めるためのシステムおよび方法を提供する。
【解決手段】データを格納するための少なくとも1個のフラッシュメモリチップと、フラッシュメモリチップを制御するための少なくとも1個のフラッシュコントローラであって、システムがDMAデータ転送を実行できる状態になったときにアクティブになる出力DMA REQUEST信号を含むDMAインタフェースを有するフラッシュコントローラと、フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号をアクティブにするための少なくとも1個のマイクロコントローラと、を含むシステム。
【選択図】図1
【解決手段】データを格納するための少なくとも1個のフラッシュメモリチップと、フラッシュメモリチップを制御するための少なくとも1個のフラッシュコントローラであって、システムがDMAデータ転送を実行できる状態になったときにアクティブになる出力DMA REQUEST信号を含むDMAインタフェースを有するフラッシュコントローラと、フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号をアクティブにするための少なくとも1個のマイクロコントローラと、を含むシステム。
【選択図】図1
Description
【0001】
【発明の属する技術分野】
本発明は専用フラッシュコントローラを使用してフラッシュベースストレージシステムの読取りおよび書込み性能を高めるためのシステムと方法とに関する。
【0002】
【従来の技術】
既存のフラッシュベースストレージシステムは、様々な種類のロジックを使用してフラッシュアレイにデータおよび制御信号を提供する。それらの方法のうち、(イスラエル国テルアビブのM−Systems Flash Disk Pioneers社が何年も使用してきた)1つは、片側からはCPUデータと、アドレスバスと、制御信号とに接続され、他方の側からは要求信号の提供先となるフラッシュ構成要素に接続された専用コントローラを有するものである。CPUは、メモリ内の「ウィンドウ」を通じてフラッシュコントローラおよびフラッシュアレイにアクセスする。いくつかのアドレスへの読取りおよび書込みアクセスは、構成レジスタ、チップセレクタレジスタ、状態レジスタ、あるいはECCレジスタなどのその内部レジスタへのアクセスとしてコントローラによって復号される。他のアドレスへのアクセスは、フラッシュアレイへの直接アクセスとして復号される。例えば、CPUは、特定のフラッシュチップから読取り動作を実行する場合、
a)特定のチップを指すようチップセレクタレジスタを設定し、
b)選択したチップに読取りコマンドを送信し(必要に応じて、該当コントローラのレジスタにCommandまたはAddressモードを指定し、フラッシュアレイウィンドウへコマンドおよび/またはアドレスを書き込む)、
c)当該フラッシュチップが(それからのデータ読取りを行なう)準備を整えるまで待機し、
d)フラッシュアレイウィンドウからRAMへデータを読み取る。
【0003】
【発明が解決しようとする課題】
このシステムの限界の1つは、フラッシュアレイがメモリのようなデバイスとして扱われるときに、CPUが「フライバイ」ダイレクトメモリアクセス(DMA)動作を利用してデータ転送を行うことができないことである。ダイレクト・メモリ・アクセス(DMA)は、付加されたデバイス(ディスクドライブなど)からコンピュータのマザーボード上のメモリにデータを直接送信することを可能にする、一定のコンピュータバスアーキテクチャが提供する機能である。マイクロプロセッサはデータ転送への関与から解放され、従ってコンピュータ全体の動作を高速化する(Winn L.Rosch, The Winn L.Rosch Hardware Bible (第3版)、Sams Pusblishing, 1994, 最新版:1999年10月13日)。2個のメモリのようなデバイスがこの転送に関与している場合(フラッシュアレイおよびRAMなど)、「フライバイ」転送を行なうことはできない。その理由は、システムは一度に読取り動作または書込み動作のいずれかを指示できるのみであり、2個のデバイスの転送方向を同時に指示することができない。そのため、2個のメモリのようなデバイス間でのすべてのDMA転送は「バッファ格納」される。各DMAサイクル中、DMAコントローラはまず1個のデバイスから読取りを行ってから、そのデータを他のデバイスへ書き込む。DMA転送がメモリのようなデバイスとDMA対応入出力(I/O)デバイスとの間で行なわれる場合、各DMAサイクル時には、データは1個のデバイスから読み取られ、他方のデバイスへ書き込まれる。このような動作は、メモリのようなデバイスがシステムバスの読取りおよび書込み信号に従いながら、DMA対応I/Oデバイスが他の手段による転送の方向(読取りまたは書込み)を知っていることから可能になる。「フライバイ」モードが「バッファ格納」モードより高速なのは明らかである。
【0004】
既存システムの他の限界は、フラッシュアレイが「Not Ready」(動作不能)状態のときにシステムがアイドル状態になることである。ページアクセスを有するフラッシュチップがページ読取りコマンドを与えられると、その内部処理のための時間を必要とする。この時間中、システムはフラッシュとの間で情報を転送したり、またはフラッシュとともに他の動作を実行することができず、従って、「Not Ready」状態が終わるまで待機しなければならない。同様に、ページ書込みやブロック削除のコマンドが与えられると、フラッシュチップは内部処理を実行し、その間、フラッシュチップは「Not Ready」状態になる。この間、システムはフラッシュとの間で情報を転送したり、またはフラッシュとともに他の動作を行なうことができず、従って、完全な効率で動作しない。
【0005】
既存システムのさらに別の制限は、データのコピー方法である。フラッシュストレージシステムの正常動作時には、いくつかのページが1個のブロックから他のブロックにコピーされるはずである。既存のシステムでは、データはまずソースページから中間のRAMバッファへ読み込まれ、その結果、宛先ページに書き込まれる。このような方法は、データ転送が二度行なわれることから、あまり効率的ではない。
【0006】
従って、フラッシュコントローラにDMA機能を追加して、フラッシュアレイとの間でより高速な「フライバイ」DMA転送を可能にするためのシステムおよび方法に対するニーズが存在することが広く認識されており、またこれらを有することは非常に有利となるだろう。
【0007】
更に、フラッシュチップが「Not Ready」状態にある間、データの転送あるいはフラッシュシステムの動作を継続するための方法に対する更なるニーズが存在する。
【0008】
更に、中間RAMバッファへの読込みを必ずしも必要とせずに、1個のフラッシュチップから他のフラッシュチップへのデータの直接転送を可能し、それによってコピー動作の時間を短縮できる方法に対するニーズが存在する。
【0009】
【課題を解決するための手段】
本発明では、専用フラッシュコントローラを使用してフラッシュベースストレージシステムの読取りおよび書込みの性能を高めるためのシステムと方法とが提供される。
【0010】
本発明によると、フラッシュコントローラにDMA機能を追加してフラッシュアレイとの間でのより高速な「フライバイ」DMA転送を可能にする方法を記載することによって、上述の限界に対する解決策を提供する。
【0011】
別の実施形態では、1個以上のフラッシュチップが「Not Ready」(動作不能)状態である間、他のフラッシュチップがデータを転送したり、あるいはフラッシュシステムの動作を継続できるように複数のフラッシュコントローラを使用するための方法について記載する。
【0012】
更に別の実施形態では、本発明は、DMA機能を備えた複数のフラッシュコントローラを使用して、データを中間RAMバッファに必ずしも読み込まずに、データが1個のフラッシュチップから他のフラッシュチップへと(1回の動作で)直接転送されるようにし、それによってコピー動作の時間を短縮するための方法について記載する。
【0013】
本発明の他の実施形態は、フラッシュベースストレージシステムの設計が簡素化される、複数のフラッシュコントローラの機能を組み合わせて1個のマルチコントローラを作る方法を記載している。
【0014】
本発明はこのため4つの主な方法から構成される。第1に、ページプログラミング時間とページ読取り時間が効率的に短縮される、複数のフラッシュコントローラを使用する方法が記載される。第2に、データ転送サイクルを減らすフラッシュコントローラとのDMAインタフェースが記載される。第3に、ページコピー時間が効果的に短縮される、複数のフラッシュコントローラを使用する方法が記載される。第4に、複数のフラッシュコントローラの機能を組み合わせて1個のマルチコントローラを作る方法も提供される。
【0015】
その好適な形態において、本発明は、ページプログラミングおよびページコピー時間を短縮するように編成された、複数のフラッシュコントローラまたはDMAインタフェース付きマルチコントローラを備えたソリッドステートストレージシステムを含む。
【0016】
【発明の実施の形態】
本発明は、専用フラッシュコントローラを使用して、フラッシュベースストレージシステムの読取りおよび書込み性能を高めるためのシステムと方法に関するものである。
【0017】
具体的には、本発明は、フラッシュチップが「Ready」(動作可能)状態に戻るのを待機せずにデータを転送するためのシステムに関する。更に、フラッシュアレイとの間でのより高速な「フライバイ」DMA転送が可能となるように、フラッシュコントローラにDMA機能を追加するためのシステムおよび方法が記載される。その結果、フラッシュメモリシステムが、中間RAMバッファにデータを必ずしも読み込むことなく、1個のフラッシュチップから別のフラッシュチップへのデータの直接転送を可能にし、それによってコピー動作の時間を短縮できる方法について記載される。更に、複数のフラッシュコントローラの機能を1個のマルチコントローラに組み合わせるための方法が記載される。
【0018】
本発明のシステムは、その好適な実施形態においては、少なくとも1個のマイクロコントローラ(CPU)と、フラッシュコントローラと、少なくとも1個のフラッシュメモリチップとを含む。フラッシュメモリチップの制御およびデータ信号は、フラッシュコントローラへ接続される。CPUは、フラッシュコントローラのインタフェースを使用して、アクティブにするフラッシュメモリチップの制御およびデータ信号を指定する。CPUがRead(読取り)またはWrite(書込み)アクセス動作を実行すると、それに対応するフラッシュチップのReadまたはWrite信号がアクティブになる。この方式は、その簡単さと便利さが一般的に受け入れられているが、こうした方式では、CPUはRAMとの間でのデータ転送に「フライバイ」ダイレクト・メモリ・アクセス(DMA)動作を使用できない。2個のメモリのようなデバイスが転送に係わっている場合(フラッシュアレイとRAMなど)、「フライバイ」転送ができない。これは、システムが一度に示せるのはReadまたはWrite動作のいずれかであり、2個のデバイスの転送方向を同時に示すことはできないためである。このため、2個のメモリのようなデバイス間でのすべてのDMA転送は「バッファ格納」される。つまり、各DMAサイクルの間、DMAコントローラは最初に1個のデバイスから読取りを行ない、次いでそのデータを他方のデバイスに書き込む。DMA転送がメモリのようなデバイスとDMA対応入出力(I/O)デバイスとの間で行なわれる場合は、各DMAサイクルの間、データは1個のデバイスから読み取られ、他方のデバイスに書き込まれる。メモリのようなデバイスがシステムバスのReadおよびWrite信号に従い、方、DMA対応I/Oデバイスが他の手段によって転送の方向(読取りまたは書込み)を知ることから、こうした動作が可能になる。この「フライバイ」モードは「バッファ格納」モードよりも高速になることは明白である。本発明は、フラッシュアレイとの間でのより高速な「フライバイ」DMA転送が可能となるようにフラッシュコントローラにDMA機能を追加する方法を記載する。
【0019】
本発明の別の実施形態は、上記のシステムに類似しているが、複数のフラッシュメモリチップを含むシステムを含むものである。この実施形態は、フラッシュアレイが「NotReady」状態のときにシステムがアイドル状態になる、システムの限界に対応する。ページアクセスを有するフラッシュチップは、ページ読取りコマンドを与えられると、その内部処理のための時間を必要とする。この時間中、一般的なシステムでは、フラッシュとの間で情報を転送することも、またはそれとともに他の動作を実行することもできず、従って、「Not Ready」状態が完了するまで待機しなくてはならない。同様に、ページ書込みコマンド、またはブロック削除コマンドを与えられると、フラッシュチップは内部処理を実行し、その間、フラッシュチップは「Not Ready」状態になる。この時間中、一般的なシステムでは、フラッシュとの間で情報を転送することも、またフラッシュとともに他の動作を実行することもできず、その結果、完全な効率で動作しない。本実施形態は、1個以上のフラッシュチップがNot Readyのときにその他のフラッシュチップがデータの転送を継続するように、複数のフラッシュコントローラを使用する方法を記載している。
【0020】
本発明の他の実施形態は、データがコピーされる方法を改善する。一般的なフラッシュストレージシステムが正常に機能しているときは、いくつかのページが1個のブロックから他のブロックへコピーされるはずである。既存システムでは、データはまず最初にソースページから中間RAMバッファの中で読み込まれ、その後、宛先ページに書き込まれる。このような方法はデータ転送が二度行なわれるため十分に効率的ではないのに対して、本発明の本実施形態による方法は、データ転送が一度のみで済むよう考案されている。この実施形態は、中間RAMバッファに必ずしもデータを読み込むことなく、1個のフラッシュチップから他のフラッシュチップへ直接データを転送し、それによりコピー動作の時間を短縮するよう、DMA機能を有する複数のフラッシュコントローラを使用するための方法について記載している。
【0021】
本発明は、次の実施形態によるフラッシュベースストレージシステムの効率を最大化する。
1)本発明の第1の実施形態では、ページプログラミング時間を部分的に「隠す」ことによってシステムアイドル時間を短縮するために2個以上のフラッシュメモリコントローラが提供される。各「フラッシュメモリコントローラ」は、多数のフラッシュチップに接続される。各コントローラは、それにコマンド、アドレス、またはデータを送信する目的で特定のフラッシュチップを選択することができ、エラー補正コード(ECC)シンドロームを計算および検証することができる。
【0022】
この方法では、各々それ自身のフラッシュチップバンクに接続された2個以上のフラッシュメモリコントローラが必要である。書込み動作時、データはすべてのフラッシュコントローラに付加されたフラッシュメディア上に書き込まれる。それぞれの単一のコントローラが一度にアドレス指定できるフラッシュチップは1個のみであり、従って、そのフラッシュチップのみがChip Select(チップ選択)信号を受信することから、複数のフラッシュコントローラを有することが重要である。Chip Selectはそのフラッシュコントローラに付加されたその他すべてのフラッシュチップについて削除されるため、ChipSelectを削除すると、選択したフラッシュチップ以外のフラッシュチップで書込み動作が行なわれる場合はその書込み動作を阻害する場合がある。
【0023】
番号が0〜N−1のN個(N>1)のフラッシュメモリコントローラを有するこのようなシステムを実行するためのアルゴリズムは(データ経路幅はフラッシュメモリコントローラによりサポートされるデータビット数に等しい)、以下の通りである。
a)第1のフラッシュメモリコントローラで動作を開始するようシステムを設定する。換言すると、「現行の」フラッシュメモリコントローラを番号0に設定する。
b)予め与えられたページプログラミングコマンドにより、付加されたフラッシュメディアがまだReady(動作可能)状態になっていない場合は、フラッシュメディアがReady(動作可能)になるまで待機し、その後必要に応じて変数またはメモリレジスタの状態を受信および記録する。「現行」フラッシュメモリ上のフラッシュメディアが新しいデータを受信できる状態になったらすぐに、データ転送を開始する(フラッシュメディアに書き込む)。
c)「現行」フラッシュメモリコントローラ上のフラッシュメディアが新規データの受信を完了するとすぐに、それにページプログラムコマンドを与え、次に循環的に次にくるフラッシュメモリコントローラと協働するようシステムを設定する。換言すると、「現行」フラッシュメモリコントローラを(CurrentNumber+1)mod Nに設定し、書き込むデータが他にある場合は、パラグラフb)から動作を継続する。
d)新規データの書込みがすべて終わったら、必要に応じて、すべてのフラッシュメモリコントローラのフラッシュメディア上でのページプログラミング動作が完了するまで待機し、必要に応じてこれらの動作の状態を受信および記録する。データストレージシステムによって、障害状態の報告をホストに返すか、あるいは書込み動作をフラッシュメディアの異なる場所で再試行するのに、このページプログラミング状態(変数、変数のアレイ、またはメモリレジスタに記録)を使用してデータストレージシステムページプログラム状態を使用することができる。
【0024】
本発明によるこのような実施形態の原理および動作は、以下の図とそれに付随する説明を参照して更によく理解される。
【0025】
図1、2、および3は、上記アルゴリズムを示す種々のタイムチャートである。
【0026】
図1は、書込みプロセス時のフラッシュシステムの活動を示す。フラッシュシステムは、CPU、フラッシュコントローラ、RAM等を含む。CPUは、ページプログラムコマンドを第1のコントローラに送信し、それによりアドレス指定されたフラッシュチップへのデータ転送を開始する。特定のフラッシュページへのデータの転送が完了すると、そのフラッシュチップに「Start Programming」(プログラム開始)コマンドが送信される。その瞬間、第1のコントローラに付加されたフラッシュチップは状態を「Not Ready」(動作不能)に変更し、その内部フラッシュセルへのデータのプログラミング動作を開始する。しかし、システムは、そのページプログラミング動作の完了まで待機せず、第二のフラッシュコントローラにページプログラムコマンドを送信し、それによってアドレス指定されるフラッシュチップへのデータ転送を開始する。このようにして、データ転送とページプログラミング動作が第1と第二のコントローラ上で循環的に開始されて、事実上、ページプログラミング時間が完全に「隠され」て、性能を大幅に改善する。更に、このようにして、データバスの転送速度と等しい書込み速度を有するフラッシュデータストレージシステムを構築できる。
【0027】
しかし、1つのページのデータ転送時間は、図2の「動作していない時間」で示されるように、ページプログラミング時間を完全にカバーすることが保証されるわけではない。しかし、この場合、システムアーキテクトは、図3に示すように、単に、他のフラッシュコントローラをシステムに追加することで性能を高められる。ここにおいて、ページプログラミング時間は、他の2個のコントローラへのデータ転送の時間によって隠される。実際上、フラッシュデータストレージシステムがページプログラミング時間に関連する「動作していない」時間を有するかぎり、これはフラッシュコントローラの数を増やすことで隠すことができる。
【0028】
データ経路幅がフラッシュメモリコントローラによりサポートされるデータビット数の倍数である場合には、システムは、データ経路上の複数のフラッシュメモリコントローラをインターリーブすることによって細部まで一般化される。この場合には、各データ転送は、複数のインターリーブされたフラッシュメモリコントローラを、同時に、同じ方法でアクティブ化する。
【0029】
2)本発明の第2の実施形態では、ページフェッチ時間を隠すのに2個以上のフラッシュメモリコントローラの使用を必要とする。一定のフラッシュチップにおいては、読取りコマンドの発行直後にページの内容を読み取ることはできず、読み取りが可能になるのは当該チップが内部読取り動作を実行してからであり、その間、チップは「Busy」(ビジー状態)になる。ページを「フェッチ」する動作が完了するまでデータ転送を開始できないため、ページフェッチ時間もまたシステム非効率の原因となる。図8に示すように、複数のフラッシュメモリコントローラを伴う設計を使用すると、システムは、ページプログラミング時間を「隠す」方法と同様、ページフェッチ時間を「隠す」ことができる。
【0030】
番号が0...N−1のN(N>1)個のフラッシュメモリコントローラを備えたこのようなシステムを実行するためのアルゴリズム(データ経路幅はフラッシュメモリコントローラによりサポートされるデータビット数に等しい)は、以下の通りである。
a)第1のフラッシュメモリコントローラで動作を開始するようシステムを設定する。換言すると、「現行」フラッシュメモリコントローラを0に設定し、次いで読取りコマンドを、当該コントローラに付加されたフラッシュメディアに送信する。
b)循環的に「現行」コントローラ、すなわち、番号が(CurrentNumber+1)mod Nのコントローラの後にくるフラッシュコントローラに読取りコマンドを送信する。
c)「現行」フラッシュメモリコントローラ上のフラッシュメディアがデータ送信できる状態になったらすぐに、「現行」フラッシュメモリコントローラからのデータ転送を開始する(フラッシュメディアからの読取り)。
d)「現行」フラッシュメモリコントローラ上のフラッシュメディアがデータ送信を完了したらすぐに、必要に応じてECC検証および補正を実行し、次に、「現行」フラッシュメモリコントローラを「次の」フラッシュメモリコントローラに設定し、読取りデータがまだ他にある場合はパラグラフb)に進む。
【0031】
このような方法を実行することにより、1個のフラッシュコントローラに付加されたフラッシュメディア上でのページフェッチ時間は、他のフラッシュメディアコントローラに付加されたフラッシュメディアからのデータ送信を継続することにより、部分的に「隠される」。
【0032】
データ経路幅がフラッシュメモリコントローラによりサポートされるデータビット数の倍数である場合は、システムは、データ経路上の複数のフラッシュメモリコントローラをインターリーブすることによって細部まで一般化される。この場合、それぞれのデータ転送は、複数のインターリーブされたフラッシュメモリコントローラを、同時に、同一の方法でアクティブにする。
【0033】
3)本発明の第3の実施形態は、データ転送時間の短縮のため少なくとも1個のDMA対応フラッシュメモリコントローラの使用を必要とする。通常、CPUベースのシステムにおけるフラッシュメモリアレイへのアクセスを制御/実行するコントローラは、片側からはCPUデータ、アドレスバス、および制御信号へ接続され、他方の側からはフラッシュ構成部品に接続されて、必要な信号を提供する。CPUは、そのメモリ内のアドレス範囲からフラッシュコントローラとフラッシュアレイにアクセスする。一定のアドレスへの読取りおよび書込みアクセスは、構成レジスタ、チップセレクタレジスタ、状態レジスタ、またはECCレジスタなどの内部レジスタへのアクセスとしてコントローラにより復号される。他のアドレスへのアクセスは、フラッシュアレイへの直接のアクセスとして復号される。「DMA対応」フラッシュメモリコントローラは、「非DMA対応」フラッシュメモリコントローラが所有していない以下の追加機能を有する。
i)コントローラが新規データ転送を実行または受諾できる状態になると常にアクティブにされるDMA REQUEST信号を提供する。
ii)フラッシュメモリコントローラがDMAおよび非DMAデータ転送の両方を実行できる場合、以下のデータ転送がDMAプロトコルを使用すべきかどうかの指定を可能にする内部レジスタを有している必要がある。
iii)このコントローラがCPUまたはマイクロコントローラの信号を必ずしも使用することなく、そのレジスタ設定によってデータ転送の方向を任意に判別することを可能にする内部レジスタを必要に応じて有する。
iv)フラッシュチップへのRead/Write信号を論理的に生成すること、および/またはDMAコントローラによって確認された転送数を計数することによって使用できるDMA ACKNOWLEDGE信号(DMAコントローラが生成)の任意入力。
v)必要に応じて転送対象データの量を計数できる。この目的のため、コントローラは、必要に応じて、転送動作前に転送するデータの量を設定し、またそれをその動作時および/または動作後に検査することを可能にする1個以上の内部レジスタを有する。
vi)必要に応じてデータ転送が行なわれる内部フラッシュメディアアドレスを増やすことができる。この目的のため、コントローラは、転送動作前のこのアドレスの設定と、その動作中および/または動作後のその検査を可能にする1個以上の内部レジスタを必要に応じて有する。
vii)必要に応じて外部信号を受信して転送を終了できる。
viii)転送動作が何らかの理由(転送の完了などを含む)で停止したときに(多くの場合、割込を行なうために)信号を必要に応じてアクティブにすることができる。
ix)検査を行なってデータ転送の状態と、また必要に応じてすべての遭遇したエラーとを判別できる内部状態レジスタを必要に応じて有する。この状態レジスタを必要に応じて書き込むことで、「厄介な」ステータスビットをクリアできるようにしてもよい。
x)フラッシュチップがデータ転送動作中に正しいアドレスの提供を求める場合には、フラッシュメモリコントローラは、フラッシュチップ内でのDMA転送の開始アドレスの設定を可能にする内部レジスタと、DMA転送時にそのフラッシュチップにアドレスを提供する機能とを必要に応じて有する。フラッシュチップに提供されるアドレスは、このレジスタに提供された開始値から、各DMA転送サイクル後に増やされる。
xi)あるいは、フラッシュチップが、データ転送動作時に正しいアドレスの提供を要求する場合には、フライバイDMAデータ転送動作の宛先またはソースであるRAMバッファは、転送時にDMAコントローラによって生成されるアドレスバス上の値がフラッシュチップ内の正しい位置をアドレス指定するように、このようなシステムのアドレス内に配置する必要がある。
【0034】
RAMと非DMA対応フラッシュメモリコントローラとの間のデータ転送サイクルは、(ソースからの)読取りと(宛先への)書込みという少なくとも2つの動作からなる。このデータ転送サイクルはCPUによって実行でき、この場合、データはCPUレジスタ内に一時的に格納される。あるいは、データ転送サイクルは、「バッファ格納」モードで一定のDMAコントローラにより実行でき、その場合、データはDMAコントローラ内部レジスタ内に一時的に格納される(DMAコントローラは、CPU、チップセット、またはその他の制御ロジックの一部として実装できる)。いずれの場合にも、データ転送サイクルは、読取り1回と書込み1回という2回の動作を必要とする。これは、このシステムで一度に指示できるのはReadまたはWrite動作のいずれかのみであり、2台のデバイスの転送方向を同時に指示できないためである。それとは対照的に、RAMとDMA対応フラッシュメモリコントローラ間でのデータ転送は1回の(「フライバイ」)動作を必要とするのみであり、このとき、データはソースからの読取りと宛先への書込みが同時に行なわれる。このような動作は、RAMがシステムバスRead/Write信号に従う一方、DMA対応フラッシュメモリコントローラがその追加レジスタにより指示される転送(読取りまたは書込み)の方向を知り、それに付加されたフラッシュチップについての適正な信号を生成することから可能となる。このReadおよびWrite動作は通常同時に行なわれるため、「フライバイ」転送サイクルは、通常、「バッファ格納」転送サイクルよりも約2倍高速となる。
【0035】
図4aと4bは、メモリと非DMA対応フラッシュメモリコントローラ間での読取りおよび書込みのデータ転送サイクルを示す。図4aに示す通り、RAMからフラッシュアレイへデータを転送するプロセスは2つの段階を伴う。第1の段階で、データはRAMから内部DMAコントローラのレジスタへ読み込まれ、第二の段階では、データは内部DMAコントローラのレジスタからフラッシュアレイへ読み込まれる。同様に、図4bは、フラッシュアレイからRAMへデータ転送する動作を示しているが、これも2つの段階を伴う。つまり、第1にデータがフラッシュアレイから内部DMAコントローラのレジスタへ読み込まれ、第二にデータは内部DMAコントローラのレジスタからRAMへ書き込まれる。
【0036】
図5aと5bはそれぞれ、図4aと4bとの比較用に、メモリとDMA対応フラッシュメモリコントローラとの間の読取りおよび書込みデータ転送サイクルを示す。図5aに示すように、RAMからフラッシュメモリへデータを転送するプロセスは、1つの段階のみを伴う。つまり、(システムのRead信号をアクティブにすることによって)データがRAMから読み取られ、データがデータバス上に置かれると、DMAコントローラのレジスタ内に中間格納されることなく、フラッシュメモリに直接書き込まれる。フラッシュメモリへの必要なWrite信号は、DMA対応フラッシュメモリコントローラの論理によって内部で生成される。それと同様に、図5bは、フラッシュメモリからRAMへのデータ転送のプロセスが1つの段階のみを伴うことを示している。つまり、データはフラッシュメモリから読み取られ、そのデータがデータバス上に置かれると、DMAコントローラのレジスタ内に中間格納されることなく、RAMに直接書き込まれるのである。
【0037】
4)本発明の第4の実施形態は、1個のフラッシュメモリコントローラに付加されたフラッシュチップから他のフラッシュメモリコントローラに付加されたフラッシュチップへデータを直接転送するDMA対応フラッシュメモリコントローラを提供する。フラッシュシステムソフトウェアは、フラッシュメモリ管理プロセスの一部として、1個のブロックのフラッシュメディアから他のブロックのフラッシュメディアへデータをコピーする必要があることが多い。通常、このプロセスは、
i)データソースとなるフラッシュチップへReadコマンドを送信する工程と、
ii)データが利用可能になるまで待機する工程と(ページフェッチ時間)、
iii)メモリへのデータの読取りを行なう工程と、
iv)宛先フラッシュチップへデータを書き込む工程と、
v)宛先フラッシュチップへページプログラムコマンドを送信する工程と、
vi)宛先チップがそのページプログラミングを完了するまで待機する工程(ページプログラミング時間)と、
から構成される。
【0038】
DMA対応フラッシュメモリコントローラを使用すると、メモリへのデータの中間格納を伴わないデータ転送動作が可能であり、それによりデータ転送時間が大幅に短縮される。フラッシュメモリコントローラの1個はメモリのようなデバイスとして機能するのに対して、その他のフラッシュメモリコントローラはDMAリクエスタとして機能する。
【0039】
1個のフラッシュチップから別のフラッシュチップへデータを直接コピーすることによってデータ転送時間を短縮することに加えて、複数のDMA対応フラッシュメモリコントローラを使用して、好適な実施形態1および2で説明したのと同様のやり方で、ページプログラミング時間および/またはページフェッチ時間を部分的あるいは完全に隠すことができる。
【0040】
システムの最適な性能は、システムがフラッシュチップへまたはフラッシュチップから絶えずデータを転送しているときに得られる。フラッシュチップは、ページプログラミングでビジー状態になっている間、新規データを受信することができず、またページフェッチでビジー状態になっている間はデータを生成できないため、本発明に基づく目標は、複数のフラッシュメモリコントローラの間におけるページフェッチフェーズ、データ転送フェーズ、およびページプログラミングフェーズを、ページフェッチフェーズとページプログラミングフェーズがデータ転送フェーズと常にオーバーラップするように構成することである。
【0041】
2個のDMA対応フラッシュメモリコントローラについては、データ転送フェーズをページプログラミングおよびページフェッチフェーズと完全にオーバーラップすることは不可能である。その理由は、ページ転送完了後、データを受信したフラッシュチップがページプログラミング時間の間、ビジー状態になるからである。
【0042】
しかし、DMA対応フラッシュメモリコントローラの数が3個以上の場合は、一定のフラッシュメモリコントローラのデータ転送段階は、他のフラッシュメモリコントローラのページプログラミング時間またはページフェッチ時間とオーバーラップさせる場合がある。このようにして、上記の第1および第2の好適な実施形態で説明したものと同様に、これらの非効率なプログラミングまたはページフェッチ時間は完全にまたは部分的に隠すことができる。
【0043】
図6および7は、それぞれ3個および4個のDMA対応フラッシュメモリコントローラ間でのコピー動作を示している。(上記および図9に示す)「従来型」の動作とは対照的に、性能は、
a)転送元からの読取り時間と転送先への書込み時間を別に取らずに、2個のフラッシュチップ(転送元と転送先)間で共通のデータ転送時間を取ることと、
b)データ転送時間をページプログラミングおよび/またはページフェッチ時間とにオーバーラップさせて、システムの「動作していない」時間を減らすことと、
により大幅に改善される。
【0044】
N(N>2)個のDMA対応コントローラ間での読取りおよび書込み動作を割り当てる上での利用可能な方式の一つは、以下の通りである。
a)任意の瞬間において、2個のフラッシュメモリコントローラは、以下のデータ転送動作の便宜上、「転送元」および「転送先」と指定される。
b)「転送元」フラッシュメモリコントローラを0に、「転送先」フラッシュメモリコントローラをN−1に設定した状態でシステムが起動する。「転送元」コントローラに付加されたフラッシュメディアに読取りコマンドを送信する。
c)「転送元」フラッシュメモリコントローラがページプログラミングフェーズにある場合は、それが完了するまで、すなわち、付加されたフラッシュメディアがReadyになるまで待機し、次にその状態を取得および記録する。
d)「転送元」コントローラに付加されたフラッシュメディアにまだ「Read」コマンドが送信されていない場合は、それをここで送信する。
e)「転送元」フラッシュメディアコントローラ上のフラッシュメディアがデータ送信できる状態になったらすぐに、「転送元」フラッシュメモリコントローラから「転送先」フラッシュメモリコントローラへDMAデータ転送を開始し、DMAの完了まで待機する。
f)データの元レイアウトに関する情報を必要に応じて記録する(以下も参照のこと)。
g)「転送先」=「転送元」と設定し、「転送元」を循環的に次に来る数字に設定するか、「転送元」=(「転送元」+1) mod Nに設定する。
h)他にコピーするデータがあれば、パラグラフc)に進む。
i)すべてのデータの書込みが終わった後で、すべてのフラッシュメモリコントローラのフラッシュメディア上のページプログラミング動作の完了まで必要に応じて待機し、またこれらの動作の状態を必要に応じて受信および記録する。
【0045】
この方式は、ページプログラミング段階の完了直後に「Read」コマンドがフラッシュメディアへ与えられると更に効率が良くなる。
【0046】
フラッシュシステムソフトウェアは、このような動作の後に1個のフラッシュメモリコントローラのフラッシュメディア上に予め書き込まれたデータの一部が他のフラッシュメモリコントローラのフラッシュメディア上に常駐するという事実に対応できなければならない。その目的に向けて、各ページまたは論理ブロックに格納された情報に必要に応じて制御フラグを追加することができる。このフラグにより、フラッシュシステムソフトウェアは、ユーザがデータを要求したときに必要となるデータの「元」レイアウトを導出することができる。このようなフラグの最も簡単な例は、N個のフラッシュメモリコントローラ上でつなぎ合わされたデータのブロックに対して実行されるDMAコピー動作の数である。そのフラグの値ゼロのときに、データがN個のフラッシュメモリコントローラ0、1、2、...N−1の間で配分される場合は、フラグの値がxのときに、上記のコピー方式が使用された場合、データはN個のフラッシュメモリコントローラ間でx、x+1、x+2...(N−1まで循環的に)...x−1として配分される。
【0047】
5)本発明による第五の実施形態は、複数のフラッシュメモリコントローラの機能をどのように効果的に組み合わせて1個のマルチコントローラに組み合わせるかについて説明する。このマルチコントローラは、ページフェッチ時間とページプログラミング時間を隠すことを可能にし、1個のフラッシュメモリコントローラから他のフラッシュメモリコントローラへデータを直接転送する。
【0048】
既存のフラッシュコントローラ技術では、すべての付加されたフラッシュチップは、Chip Select(チップ選択)信号を除いて、同じデータおよび制御信号を共有している。読取りまたは書込み信号がアクティブになると、その時点でChip Select線がアクティブになっているフラッシュチップのみがその読取りまたは書込み動作を実行する。同様に、各チップのReady信号は、任意の1個のチップがNot Readyである場合にコントローラが「Not Ready」状態を指示するよう組み合わされる。そのようなシステムの例は、図10に示される。そのような接続は簡単かつ便利であるが、各フラッシュチップ上での同時かつ異種の動作の実行を可能にすることができない。各チップの同時かつ異種のフラッシュ動作は、それらを別個のフラッシュコントローラに付加するか(前記実施形態に記載)、あるいは特別の/異なる種類のフラッシュメモリコントローラ(ここではマルチコントローラと称される)を設計することによって可能になる。
【0049】
ここに提示したフラッシュメモリマルチコントローラは、次のオプションを有していてもよい。
i)2個の別個のChip Selectorレジスタを有し、2個の異なるChip Select信号を同時にアクティブにする機能を有する(Chip
Select信号の総数は付加されたフラッシュチップの数に等しい)。
ii)複数のRead/Write出力信号を有することから、すべての付加されたチップに対してではなく、特定の選択済みチップに対するRead/Write信号をアクティブにする機能を有する。
iii)必要に応じて、異なる選択済みチップへの2個の異なるRead/Write信号をアクティブにする機能を有する。
iv)レジスタ内の「Ready」インジケータは、付加されたすべてのフラッシュチップではなく、1個の特定の選択されたフラッシュチップの信号のみを反映してもよい。
v)DMA Request(リクエスト)およびAcknowledge(確認)信号、構成レジスタ、状態レジスタ、および制御レジスタなどの第3の実施形態で説明したDMA対応フラッシュメモリコントローラの機能を含む。
【0050】
このようなマルチコントローラでは、第1の実施形態と同様にページプログラミング時間を部分的に「隠す」ことによってシステムアイドル時間の短縮を可能にして(1)、第2の実施形態と同様にページフェッチ時間を短縮し(2)、第3の実施形態と同様にDMAインタフェースの使用により転送時間を短縮し(3)、また、第4の実施形態と同様に、1個のフラッシュメモリコントローラから他のフラッシュメモリコントローラへデータを直接転送する(4)ことができる。
【0051】
マルチコントローラの重要なパラメータは、それが生成するRead/Write信号の数である。システムが(図11上に示すように)複数(N個)のフラッシュメモリコントローラで構築される場合、そのRead/Write信号の数はN個になり、またそれは付加されたフラッシュチップをN個の独立したバンクを通じてアドレス指定できるのに対して、各フラッシュチップは常に同一バンクに属している。1個のフラッシュチップから他のフラッシュチップへのDMA転送は、これらのチップが異なるバンク上に配置される場合にのみ行なわれても
よい。
【0052】
それと比較して、マルチコントローラシステムは、図12に示す通り、すべての付加されたフラッシュチップに対して別のRead/Write信号を有していてもよい。この場合、このシステム内の独立バンクの数は事実上フラッシュチップの数に等しく、システムはこれらのフラッシュチップを任意の数の「仮想」バンクに自由に分割して使いやすくすることができる。また、任意の2個のフラッシュチップ間からのDMA転送は、このような分割にかかわらず行なうことができる。
【0053】
(Read/WriteまたはChip Select以外にも他のフラッシュ制御信号が存在するが、それらのレベルはReadまたはWrite動作の実行中にのみ重要となる。従って、これらの信号はすべてのフラッシュチップについて共通化でき、これらの信号のアクティブ化は、各バンク用のRead/〜Writeおよび/またはChip Select信号のアクティブ化と調整することができる。)
【0054】
限定された数の実施形態に関して本発明を説明してきたが、当業者は、本発明の変更例、修正例、およびその他の適用例を数多く作成できることを理解するであろう。
【図面の簡単な説明】
【図1】ページプログラミング時間を完全に隠すことを可能にする2個のメモリコントローラの使用を示している。
【図2】データ転送時間に対するページプログラミング時間の比率の影響を示している。この図ではこの比率が高くなっているのがわかる。つまり、2個のメモリコントローラを使用すると、ページプログラミング時間を部分的に隠すことができる。
【図3】データ転送時間に対するページプログラミング時間の比率が図2と同一でである場合も、3個のメモリコントローラを使用してページプログラミング時間を完全に隠せることを示している。
【図4a】メモリと非DMA対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「RAMからの読込み、フラッシュメモリへの書込み」のプロセスに焦点を当てている。
【図4b】メモリと非DMA対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「フラッシュメモリからの読込み、RAMへの書込み」のプロセスを焦点を当てている。
【図5a】メモリとDMA対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「RAMからの読み込み、フラッシュメモリへの書込み」のプロセスに焦点を当てている。
【図5b】メモリとDMA対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「フラッシュメモリからの読込み、RAMへの書込み」に焦点を当てている。
【図6】3個のDMA対応フラッシュメモリコントローラを使用したコピー動作を示している。データ転送時間に対するページプログラミング時間のこの比率では、ページプログラミング時間が部分的にのみ隠される。
【図7】ページプログラミング時間が完全に隠される、4個のDMA対応フラッシュメモリコントローラを使用したコピー動作を示している。
【図8】ページフェッチ時間を隠すことを可能にする2個のメモリコントローラの使用を示している。
【図9】1個のフラッシュメモリコントローラを使用した通常のコピー動作であり、この動作では、データ読取り時間がデータ書込み時間と重なり合うことはなく、ページプログラミング時間とページフェッチ時間も重なり合うことがない。
【図10】従来のフラッシュメモリコントローラのフラッシュチップへの信号付加を示す。
【図11】複数の従来型またはDMA対応フラッシュメモリコントローラのシステムにおける信号付加を示す。
【図12】マルチコントローラを備えたシステムにおける信号付加を示す。
【発明の属する技術分野】
本発明は専用フラッシュコントローラを使用してフラッシュベースストレージシステムの読取りおよび書込み性能を高めるためのシステムと方法とに関する。
【0002】
【従来の技術】
既存のフラッシュベースストレージシステムは、様々な種類のロジックを使用してフラッシュアレイにデータおよび制御信号を提供する。それらの方法のうち、(イスラエル国テルアビブのM−Systems Flash Disk Pioneers社が何年も使用してきた)1つは、片側からはCPUデータと、アドレスバスと、制御信号とに接続され、他方の側からは要求信号の提供先となるフラッシュ構成要素に接続された専用コントローラを有するものである。CPUは、メモリ内の「ウィンドウ」を通じてフラッシュコントローラおよびフラッシュアレイにアクセスする。いくつかのアドレスへの読取りおよび書込みアクセスは、構成レジスタ、チップセレクタレジスタ、状態レジスタ、あるいはECCレジスタなどのその内部レジスタへのアクセスとしてコントローラによって復号される。他のアドレスへのアクセスは、フラッシュアレイへの直接アクセスとして復号される。例えば、CPUは、特定のフラッシュチップから読取り動作を実行する場合、
a)特定のチップを指すようチップセレクタレジスタを設定し、
b)選択したチップに読取りコマンドを送信し(必要に応じて、該当コントローラのレジスタにCommandまたはAddressモードを指定し、フラッシュアレイウィンドウへコマンドおよび/またはアドレスを書き込む)、
c)当該フラッシュチップが(それからのデータ読取りを行なう)準備を整えるまで待機し、
d)フラッシュアレイウィンドウからRAMへデータを読み取る。
【0003】
【発明が解決しようとする課題】
このシステムの限界の1つは、フラッシュアレイがメモリのようなデバイスとして扱われるときに、CPUが「フライバイ」ダイレクトメモリアクセス(DMA)動作を利用してデータ転送を行うことができないことである。ダイレクト・メモリ・アクセス(DMA)は、付加されたデバイス(ディスクドライブなど)からコンピュータのマザーボード上のメモリにデータを直接送信することを可能にする、一定のコンピュータバスアーキテクチャが提供する機能である。マイクロプロセッサはデータ転送への関与から解放され、従ってコンピュータ全体の動作を高速化する(Winn L.Rosch, The Winn L.Rosch Hardware Bible (第3版)、Sams Pusblishing, 1994, 最新版:1999年10月13日)。2個のメモリのようなデバイスがこの転送に関与している場合(フラッシュアレイおよびRAMなど)、「フライバイ」転送を行なうことはできない。その理由は、システムは一度に読取り動作または書込み動作のいずれかを指示できるのみであり、2個のデバイスの転送方向を同時に指示することができない。そのため、2個のメモリのようなデバイス間でのすべてのDMA転送は「バッファ格納」される。各DMAサイクル中、DMAコントローラはまず1個のデバイスから読取りを行ってから、そのデータを他のデバイスへ書き込む。DMA転送がメモリのようなデバイスとDMA対応入出力(I/O)デバイスとの間で行なわれる場合、各DMAサイクル時には、データは1個のデバイスから読み取られ、他方のデバイスへ書き込まれる。このような動作は、メモリのようなデバイスがシステムバスの読取りおよび書込み信号に従いながら、DMA対応I/Oデバイスが他の手段による転送の方向(読取りまたは書込み)を知っていることから可能になる。「フライバイ」モードが「バッファ格納」モードより高速なのは明らかである。
【0004】
既存システムの他の限界は、フラッシュアレイが「Not Ready」(動作不能)状態のときにシステムがアイドル状態になることである。ページアクセスを有するフラッシュチップがページ読取りコマンドを与えられると、その内部処理のための時間を必要とする。この時間中、システムはフラッシュとの間で情報を転送したり、またはフラッシュとともに他の動作を実行することができず、従って、「Not Ready」状態が終わるまで待機しなければならない。同様に、ページ書込みやブロック削除のコマンドが与えられると、フラッシュチップは内部処理を実行し、その間、フラッシュチップは「Not Ready」状態になる。この間、システムはフラッシュとの間で情報を転送したり、またはフラッシュとともに他の動作を行なうことができず、従って、完全な効率で動作しない。
【0005】
既存システムのさらに別の制限は、データのコピー方法である。フラッシュストレージシステムの正常動作時には、いくつかのページが1個のブロックから他のブロックにコピーされるはずである。既存のシステムでは、データはまずソースページから中間のRAMバッファへ読み込まれ、その結果、宛先ページに書き込まれる。このような方法は、データ転送が二度行なわれることから、あまり効率的ではない。
【0006】
従って、フラッシュコントローラにDMA機能を追加して、フラッシュアレイとの間でより高速な「フライバイ」DMA転送を可能にするためのシステムおよび方法に対するニーズが存在することが広く認識されており、またこれらを有することは非常に有利となるだろう。
【0007】
更に、フラッシュチップが「Not Ready」状態にある間、データの転送あるいはフラッシュシステムの動作を継続するための方法に対する更なるニーズが存在する。
【0008】
更に、中間RAMバッファへの読込みを必ずしも必要とせずに、1個のフラッシュチップから他のフラッシュチップへのデータの直接転送を可能し、それによってコピー動作の時間を短縮できる方法に対するニーズが存在する。
【0009】
【課題を解決するための手段】
本発明では、専用フラッシュコントローラを使用してフラッシュベースストレージシステムの読取りおよび書込みの性能を高めるためのシステムと方法とが提供される。
【0010】
本発明によると、フラッシュコントローラにDMA機能を追加してフラッシュアレイとの間でのより高速な「フライバイ」DMA転送を可能にする方法を記載することによって、上述の限界に対する解決策を提供する。
【0011】
別の実施形態では、1個以上のフラッシュチップが「Not Ready」(動作不能)状態である間、他のフラッシュチップがデータを転送したり、あるいはフラッシュシステムの動作を継続できるように複数のフラッシュコントローラを使用するための方法について記載する。
【0012】
更に別の実施形態では、本発明は、DMA機能を備えた複数のフラッシュコントローラを使用して、データを中間RAMバッファに必ずしも読み込まずに、データが1個のフラッシュチップから他のフラッシュチップへと(1回の動作で)直接転送されるようにし、それによってコピー動作の時間を短縮するための方法について記載する。
【0013】
本発明の他の実施形態は、フラッシュベースストレージシステムの設計が簡素化される、複数のフラッシュコントローラの機能を組み合わせて1個のマルチコントローラを作る方法を記載している。
【0014】
本発明はこのため4つの主な方法から構成される。第1に、ページプログラミング時間とページ読取り時間が効率的に短縮される、複数のフラッシュコントローラを使用する方法が記載される。第2に、データ転送サイクルを減らすフラッシュコントローラとのDMAインタフェースが記載される。第3に、ページコピー時間が効果的に短縮される、複数のフラッシュコントローラを使用する方法が記載される。第4に、複数のフラッシュコントローラの機能を組み合わせて1個のマルチコントローラを作る方法も提供される。
【0015】
その好適な形態において、本発明は、ページプログラミングおよびページコピー時間を短縮するように編成された、複数のフラッシュコントローラまたはDMAインタフェース付きマルチコントローラを備えたソリッドステートストレージシステムを含む。
【0016】
【発明の実施の形態】
本発明は、専用フラッシュコントローラを使用して、フラッシュベースストレージシステムの読取りおよび書込み性能を高めるためのシステムと方法に関するものである。
【0017】
具体的には、本発明は、フラッシュチップが「Ready」(動作可能)状態に戻るのを待機せずにデータを転送するためのシステムに関する。更に、フラッシュアレイとの間でのより高速な「フライバイ」DMA転送が可能となるように、フラッシュコントローラにDMA機能を追加するためのシステムおよび方法が記載される。その結果、フラッシュメモリシステムが、中間RAMバッファにデータを必ずしも読み込むことなく、1個のフラッシュチップから別のフラッシュチップへのデータの直接転送を可能にし、それによってコピー動作の時間を短縮できる方法について記載される。更に、複数のフラッシュコントローラの機能を1個のマルチコントローラに組み合わせるための方法が記載される。
【0018】
本発明のシステムは、その好適な実施形態においては、少なくとも1個のマイクロコントローラ(CPU)と、フラッシュコントローラと、少なくとも1個のフラッシュメモリチップとを含む。フラッシュメモリチップの制御およびデータ信号は、フラッシュコントローラへ接続される。CPUは、フラッシュコントローラのインタフェースを使用して、アクティブにするフラッシュメモリチップの制御およびデータ信号を指定する。CPUがRead(読取り)またはWrite(書込み)アクセス動作を実行すると、それに対応するフラッシュチップのReadまたはWrite信号がアクティブになる。この方式は、その簡単さと便利さが一般的に受け入れられているが、こうした方式では、CPUはRAMとの間でのデータ転送に「フライバイ」ダイレクト・メモリ・アクセス(DMA)動作を使用できない。2個のメモリのようなデバイスが転送に係わっている場合(フラッシュアレイとRAMなど)、「フライバイ」転送ができない。これは、システムが一度に示せるのはReadまたはWrite動作のいずれかであり、2個のデバイスの転送方向を同時に示すことはできないためである。このため、2個のメモリのようなデバイス間でのすべてのDMA転送は「バッファ格納」される。つまり、各DMAサイクルの間、DMAコントローラは最初に1個のデバイスから読取りを行ない、次いでそのデータを他方のデバイスに書き込む。DMA転送がメモリのようなデバイスとDMA対応入出力(I/O)デバイスとの間で行なわれる場合は、各DMAサイクルの間、データは1個のデバイスから読み取られ、他方のデバイスに書き込まれる。メモリのようなデバイスがシステムバスのReadおよびWrite信号に従い、方、DMA対応I/Oデバイスが他の手段によって転送の方向(読取りまたは書込み)を知ることから、こうした動作が可能になる。この「フライバイ」モードは「バッファ格納」モードよりも高速になることは明白である。本発明は、フラッシュアレイとの間でのより高速な「フライバイ」DMA転送が可能となるようにフラッシュコントローラにDMA機能を追加する方法を記載する。
【0019】
本発明の別の実施形態は、上記のシステムに類似しているが、複数のフラッシュメモリチップを含むシステムを含むものである。この実施形態は、フラッシュアレイが「NotReady」状態のときにシステムがアイドル状態になる、システムの限界に対応する。ページアクセスを有するフラッシュチップは、ページ読取りコマンドを与えられると、その内部処理のための時間を必要とする。この時間中、一般的なシステムでは、フラッシュとの間で情報を転送することも、またはそれとともに他の動作を実行することもできず、従って、「Not Ready」状態が完了するまで待機しなくてはならない。同様に、ページ書込みコマンド、またはブロック削除コマンドを与えられると、フラッシュチップは内部処理を実行し、その間、フラッシュチップは「Not Ready」状態になる。この時間中、一般的なシステムでは、フラッシュとの間で情報を転送することも、またフラッシュとともに他の動作を実行することもできず、その結果、完全な効率で動作しない。本実施形態は、1個以上のフラッシュチップがNot Readyのときにその他のフラッシュチップがデータの転送を継続するように、複数のフラッシュコントローラを使用する方法を記載している。
【0020】
本発明の他の実施形態は、データがコピーされる方法を改善する。一般的なフラッシュストレージシステムが正常に機能しているときは、いくつかのページが1個のブロックから他のブロックへコピーされるはずである。既存システムでは、データはまず最初にソースページから中間RAMバッファの中で読み込まれ、その後、宛先ページに書き込まれる。このような方法はデータ転送が二度行なわれるため十分に効率的ではないのに対して、本発明の本実施形態による方法は、データ転送が一度のみで済むよう考案されている。この実施形態は、中間RAMバッファに必ずしもデータを読み込むことなく、1個のフラッシュチップから他のフラッシュチップへ直接データを転送し、それによりコピー動作の時間を短縮するよう、DMA機能を有する複数のフラッシュコントローラを使用するための方法について記載している。
【0021】
本発明は、次の実施形態によるフラッシュベースストレージシステムの効率を最大化する。
1)本発明の第1の実施形態では、ページプログラミング時間を部分的に「隠す」ことによってシステムアイドル時間を短縮するために2個以上のフラッシュメモリコントローラが提供される。各「フラッシュメモリコントローラ」は、多数のフラッシュチップに接続される。各コントローラは、それにコマンド、アドレス、またはデータを送信する目的で特定のフラッシュチップを選択することができ、エラー補正コード(ECC)シンドロームを計算および検証することができる。
【0022】
この方法では、各々それ自身のフラッシュチップバンクに接続された2個以上のフラッシュメモリコントローラが必要である。書込み動作時、データはすべてのフラッシュコントローラに付加されたフラッシュメディア上に書き込まれる。それぞれの単一のコントローラが一度にアドレス指定できるフラッシュチップは1個のみであり、従って、そのフラッシュチップのみがChip Select(チップ選択)信号を受信することから、複数のフラッシュコントローラを有することが重要である。Chip Selectはそのフラッシュコントローラに付加されたその他すべてのフラッシュチップについて削除されるため、ChipSelectを削除すると、選択したフラッシュチップ以外のフラッシュチップで書込み動作が行なわれる場合はその書込み動作を阻害する場合がある。
【0023】
番号が0〜N−1のN個(N>1)のフラッシュメモリコントローラを有するこのようなシステムを実行するためのアルゴリズムは(データ経路幅はフラッシュメモリコントローラによりサポートされるデータビット数に等しい)、以下の通りである。
a)第1のフラッシュメモリコントローラで動作を開始するようシステムを設定する。換言すると、「現行の」フラッシュメモリコントローラを番号0に設定する。
b)予め与えられたページプログラミングコマンドにより、付加されたフラッシュメディアがまだReady(動作可能)状態になっていない場合は、フラッシュメディアがReady(動作可能)になるまで待機し、その後必要に応じて変数またはメモリレジスタの状態を受信および記録する。「現行」フラッシュメモリ上のフラッシュメディアが新しいデータを受信できる状態になったらすぐに、データ転送を開始する(フラッシュメディアに書き込む)。
c)「現行」フラッシュメモリコントローラ上のフラッシュメディアが新規データの受信を完了するとすぐに、それにページプログラムコマンドを与え、次に循環的に次にくるフラッシュメモリコントローラと協働するようシステムを設定する。換言すると、「現行」フラッシュメモリコントローラを(CurrentNumber+1)mod Nに設定し、書き込むデータが他にある場合は、パラグラフb)から動作を継続する。
d)新規データの書込みがすべて終わったら、必要に応じて、すべてのフラッシュメモリコントローラのフラッシュメディア上でのページプログラミング動作が完了するまで待機し、必要に応じてこれらの動作の状態を受信および記録する。データストレージシステムによって、障害状態の報告をホストに返すか、あるいは書込み動作をフラッシュメディアの異なる場所で再試行するのに、このページプログラミング状態(変数、変数のアレイ、またはメモリレジスタに記録)を使用してデータストレージシステムページプログラム状態を使用することができる。
【0024】
本発明によるこのような実施形態の原理および動作は、以下の図とそれに付随する説明を参照して更によく理解される。
【0025】
図1、2、および3は、上記アルゴリズムを示す種々のタイムチャートである。
【0026】
図1は、書込みプロセス時のフラッシュシステムの活動を示す。フラッシュシステムは、CPU、フラッシュコントローラ、RAM等を含む。CPUは、ページプログラムコマンドを第1のコントローラに送信し、それによりアドレス指定されたフラッシュチップへのデータ転送を開始する。特定のフラッシュページへのデータの転送が完了すると、そのフラッシュチップに「Start Programming」(プログラム開始)コマンドが送信される。その瞬間、第1のコントローラに付加されたフラッシュチップは状態を「Not Ready」(動作不能)に変更し、その内部フラッシュセルへのデータのプログラミング動作を開始する。しかし、システムは、そのページプログラミング動作の完了まで待機せず、第二のフラッシュコントローラにページプログラムコマンドを送信し、それによってアドレス指定されるフラッシュチップへのデータ転送を開始する。このようにして、データ転送とページプログラミング動作が第1と第二のコントローラ上で循環的に開始されて、事実上、ページプログラミング時間が完全に「隠され」て、性能を大幅に改善する。更に、このようにして、データバスの転送速度と等しい書込み速度を有するフラッシュデータストレージシステムを構築できる。
【0027】
しかし、1つのページのデータ転送時間は、図2の「動作していない時間」で示されるように、ページプログラミング時間を完全にカバーすることが保証されるわけではない。しかし、この場合、システムアーキテクトは、図3に示すように、単に、他のフラッシュコントローラをシステムに追加することで性能を高められる。ここにおいて、ページプログラミング時間は、他の2個のコントローラへのデータ転送の時間によって隠される。実際上、フラッシュデータストレージシステムがページプログラミング時間に関連する「動作していない」時間を有するかぎり、これはフラッシュコントローラの数を増やすことで隠すことができる。
【0028】
データ経路幅がフラッシュメモリコントローラによりサポートされるデータビット数の倍数である場合には、システムは、データ経路上の複数のフラッシュメモリコントローラをインターリーブすることによって細部まで一般化される。この場合には、各データ転送は、複数のインターリーブされたフラッシュメモリコントローラを、同時に、同じ方法でアクティブ化する。
【0029】
2)本発明の第2の実施形態では、ページフェッチ時間を隠すのに2個以上のフラッシュメモリコントローラの使用を必要とする。一定のフラッシュチップにおいては、読取りコマンドの発行直後にページの内容を読み取ることはできず、読み取りが可能になるのは当該チップが内部読取り動作を実行してからであり、その間、チップは「Busy」(ビジー状態)になる。ページを「フェッチ」する動作が完了するまでデータ転送を開始できないため、ページフェッチ時間もまたシステム非効率の原因となる。図8に示すように、複数のフラッシュメモリコントローラを伴う設計を使用すると、システムは、ページプログラミング時間を「隠す」方法と同様、ページフェッチ時間を「隠す」ことができる。
【0030】
番号が0...N−1のN(N>1)個のフラッシュメモリコントローラを備えたこのようなシステムを実行するためのアルゴリズム(データ経路幅はフラッシュメモリコントローラによりサポートされるデータビット数に等しい)は、以下の通りである。
a)第1のフラッシュメモリコントローラで動作を開始するようシステムを設定する。換言すると、「現行」フラッシュメモリコントローラを0に設定し、次いで読取りコマンドを、当該コントローラに付加されたフラッシュメディアに送信する。
b)循環的に「現行」コントローラ、すなわち、番号が(CurrentNumber+1)mod Nのコントローラの後にくるフラッシュコントローラに読取りコマンドを送信する。
c)「現行」フラッシュメモリコントローラ上のフラッシュメディアがデータ送信できる状態になったらすぐに、「現行」フラッシュメモリコントローラからのデータ転送を開始する(フラッシュメディアからの読取り)。
d)「現行」フラッシュメモリコントローラ上のフラッシュメディアがデータ送信を完了したらすぐに、必要に応じてECC検証および補正を実行し、次に、「現行」フラッシュメモリコントローラを「次の」フラッシュメモリコントローラに設定し、読取りデータがまだ他にある場合はパラグラフb)に進む。
【0031】
このような方法を実行することにより、1個のフラッシュコントローラに付加されたフラッシュメディア上でのページフェッチ時間は、他のフラッシュメディアコントローラに付加されたフラッシュメディアからのデータ送信を継続することにより、部分的に「隠される」。
【0032】
データ経路幅がフラッシュメモリコントローラによりサポートされるデータビット数の倍数である場合は、システムは、データ経路上の複数のフラッシュメモリコントローラをインターリーブすることによって細部まで一般化される。この場合、それぞれのデータ転送は、複数のインターリーブされたフラッシュメモリコントローラを、同時に、同一の方法でアクティブにする。
【0033】
3)本発明の第3の実施形態は、データ転送時間の短縮のため少なくとも1個のDMA対応フラッシュメモリコントローラの使用を必要とする。通常、CPUベースのシステムにおけるフラッシュメモリアレイへのアクセスを制御/実行するコントローラは、片側からはCPUデータ、アドレスバス、および制御信号へ接続され、他方の側からはフラッシュ構成部品に接続されて、必要な信号を提供する。CPUは、そのメモリ内のアドレス範囲からフラッシュコントローラとフラッシュアレイにアクセスする。一定のアドレスへの読取りおよび書込みアクセスは、構成レジスタ、チップセレクタレジスタ、状態レジスタ、またはECCレジスタなどの内部レジスタへのアクセスとしてコントローラにより復号される。他のアドレスへのアクセスは、フラッシュアレイへの直接のアクセスとして復号される。「DMA対応」フラッシュメモリコントローラは、「非DMA対応」フラッシュメモリコントローラが所有していない以下の追加機能を有する。
i)コントローラが新規データ転送を実行または受諾できる状態になると常にアクティブにされるDMA REQUEST信号を提供する。
ii)フラッシュメモリコントローラがDMAおよび非DMAデータ転送の両方を実行できる場合、以下のデータ転送がDMAプロトコルを使用すべきかどうかの指定を可能にする内部レジスタを有している必要がある。
iii)このコントローラがCPUまたはマイクロコントローラの信号を必ずしも使用することなく、そのレジスタ設定によってデータ転送の方向を任意に判別することを可能にする内部レジスタを必要に応じて有する。
iv)フラッシュチップへのRead/Write信号を論理的に生成すること、および/またはDMAコントローラによって確認された転送数を計数することによって使用できるDMA ACKNOWLEDGE信号(DMAコントローラが生成)の任意入力。
v)必要に応じて転送対象データの量を計数できる。この目的のため、コントローラは、必要に応じて、転送動作前に転送するデータの量を設定し、またそれをその動作時および/または動作後に検査することを可能にする1個以上の内部レジスタを有する。
vi)必要に応じてデータ転送が行なわれる内部フラッシュメディアアドレスを増やすことができる。この目的のため、コントローラは、転送動作前のこのアドレスの設定と、その動作中および/または動作後のその検査を可能にする1個以上の内部レジスタを必要に応じて有する。
vii)必要に応じて外部信号を受信して転送を終了できる。
viii)転送動作が何らかの理由(転送の完了などを含む)で停止したときに(多くの場合、割込を行なうために)信号を必要に応じてアクティブにすることができる。
ix)検査を行なってデータ転送の状態と、また必要に応じてすべての遭遇したエラーとを判別できる内部状態レジスタを必要に応じて有する。この状態レジスタを必要に応じて書き込むことで、「厄介な」ステータスビットをクリアできるようにしてもよい。
x)フラッシュチップがデータ転送動作中に正しいアドレスの提供を求める場合には、フラッシュメモリコントローラは、フラッシュチップ内でのDMA転送の開始アドレスの設定を可能にする内部レジスタと、DMA転送時にそのフラッシュチップにアドレスを提供する機能とを必要に応じて有する。フラッシュチップに提供されるアドレスは、このレジスタに提供された開始値から、各DMA転送サイクル後に増やされる。
xi)あるいは、フラッシュチップが、データ転送動作時に正しいアドレスの提供を要求する場合には、フライバイDMAデータ転送動作の宛先またはソースであるRAMバッファは、転送時にDMAコントローラによって生成されるアドレスバス上の値がフラッシュチップ内の正しい位置をアドレス指定するように、このようなシステムのアドレス内に配置する必要がある。
【0034】
RAMと非DMA対応フラッシュメモリコントローラとの間のデータ転送サイクルは、(ソースからの)読取りと(宛先への)書込みという少なくとも2つの動作からなる。このデータ転送サイクルはCPUによって実行でき、この場合、データはCPUレジスタ内に一時的に格納される。あるいは、データ転送サイクルは、「バッファ格納」モードで一定のDMAコントローラにより実行でき、その場合、データはDMAコントローラ内部レジスタ内に一時的に格納される(DMAコントローラは、CPU、チップセット、またはその他の制御ロジックの一部として実装できる)。いずれの場合にも、データ転送サイクルは、読取り1回と書込み1回という2回の動作を必要とする。これは、このシステムで一度に指示できるのはReadまたはWrite動作のいずれかのみであり、2台のデバイスの転送方向を同時に指示できないためである。それとは対照的に、RAMとDMA対応フラッシュメモリコントローラ間でのデータ転送は1回の(「フライバイ」)動作を必要とするのみであり、このとき、データはソースからの読取りと宛先への書込みが同時に行なわれる。このような動作は、RAMがシステムバスRead/Write信号に従う一方、DMA対応フラッシュメモリコントローラがその追加レジスタにより指示される転送(読取りまたは書込み)の方向を知り、それに付加されたフラッシュチップについての適正な信号を生成することから可能となる。このReadおよびWrite動作は通常同時に行なわれるため、「フライバイ」転送サイクルは、通常、「バッファ格納」転送サイクルよりも約2倍高速となる。
【0035】
図4aと4bは、メモリと非DMA対応フラッシュメモリコントローラ間での読取りおよび書込みのデータ転送サイクルを示す。図4aに示す通り、RAMからフラッシュアレイへデータを転送するプロセスは2つの段階を伴う。第1の段階で、データはRAMから内部DMAコントローラのレジスタへ読み込まれ、第二の段階では、データは内部DMAコントローラのレジスタからフラッシュアレイへ読み込まれる。同様に、図4bは、フラッシュアレイからRAMへデータ転送する動作を示しているが、これも2つの段階を伴う。つまり、第1にデータがフラッシュアレイから内部DMAコントローラのレジスタへ読み込まれ、第二にデータは内部DMAコントローラのレジスタからRAMへ書き込まれる。
【0036】
図5aと5bはそれぞれ、図4aと4bとの比較用に、メモリとDMA対応フラッシュメモリコントローラとの間の読取りおよび書込みデータ転送サイクルを示す。図5aに示すように、RAMからフラッシュメモリへデータを転送するプロセスは、1つの段階のみを伴う。つまり、(システムのRead信号をアクティブにすることによって)データがRAMから読み取られ、データがデータバス上に置かれると、DMAコントローラのレジスタ内に中間格納されることなく、フラッシュメモリに直接書き込まれる。フラッシュメモリへの必要なWrite信号は、DMA対応フラッシュメモリコントローラの論理によって内部で生成される。それと同様に、図5bは、フラッシュメモリからRAMへのデータ転送のプロセスが1つの段階のみを伴うことを示している。つまり、データはフラッシュメモリから読み取られ、そのデータがデータバス上に置かれると、DMAコントローラのレジスタ内に中間格納されることなく、RAMに直接書き込まれるのである。
【0037】
4)本発明の第4の実施形態は、1個のフラッシュメモリコントローラに付加されたフラッシュチップから他のフラッシュメモリコントローラに付加されたフラッシュチップへデータを直接転送するDMA対応フラッシュメモリコントローラを提供する。フラッシュシステムソフトウェアは、フラッシュメモリ管理プロセスの一部として、1個のブロックのフラッシュメディアから他のブロックのフラッシュメディアへデータをコピーする必要があることが多い。通常、このプロセスは、
i)データソースとなるフラッシュチップへReadコマンドを送信する工程と、
ii)データが利用可能になるまで待機する工程と(ページフェッチ時間)、
iii)メモリへのデータの読取りを行なう工程と、
iv)宛先フラッシュチップへデータを書き込む工程と、
v)宛先フラッシュチップへページプログラムコマンドを送信する工程と、
vi)宛先チップがそのページプログラミングを完了するまで待機する工程(ページプログラミング時間)と、
から構成される。
【0038】
DMA対応フラッシュメモリコントローラを使用すると、メモリへのデータの中間格納を伴わないデータ転送動作が可能であり、それによりデータ転送時間が大幅に短縮される。フラッシュメモリコントローラの1個はメモリのようなデバイスとして機能するのに対して、その他のフラッシュメモリコントローラはDMAリクエスタとして機能する。
【0039】
1個のフラッシュチップから別のフラッシュチップへデータを直接コピーすることによってデータ転送時間を短縮することに加えて、複数のDMA対応フラッシュメモリコントローラを使用して、好適な実施形態1および2で説明したのと同様のやり方で、ページプログラミング時間および/またはページフェッチ時間を部分的あるいは完全に隠すことができる。
【0040】
システムの最適な性能は、システムがフラッシュチップへまたはフラッシュチップから絶えずデータを転送しているときに得られる。フラッシュチップは、ページプログラミングでビジー状態になっている間、新規データを受信することができず、またページフェッチでビジー状態になっている間はデータを生成できないため、本発明に基づく目標は、複数のフラッシュメモリコントローラの間におけるページフェッチフェーズ、データ転送フェーズ、およびページプログラミングフェーズを、ページフェッチフェーズとページプログラミングフェーズがデータ転送フェーズと常にオーバーラップするように構成することである。
【0041】
2個のDMA対応フラッシュメモリコントローラについては、データ転送フェーズをページプログラミングおよびページフェッチフェーズと完全にオーバーラップすることは不可能である。その理由は、ページ転送完了後、データを受信したフラッシュチップがページプログラミング時間の間、ビジー状態になるからである。
【0042】
しかし、DMA対応フラッシュメモリコントローラの数が3個以上の場合は、一定のフラッシュメモリコントローラのデータ転送段階は、他のフラッシュメモリコントローラのページプログラミング時間またはページフェッチ時間とオーバーラップさせる場合がある。このようにして、上記の第1および第2の好適な実施形態で説明したものと同様に、これらの非効率なプログラミングまたはページフェッチ時間は完全にまたは部分的に隠すことができる。
【0043】
図6および7は、それぞれ3個および4個のDMA対応フラッシュメモリコントローラ間でのコピー動作を示している。(上記および図9に示す)「従来型」の動作とは対照的に、性能は、
a)転送元からの読取り時間と転送先への書込み時間を別に取らずに、2個のフラッシュチップ(転送元と転送先)間で共通のデータ転送時間を取ることと、
b)データ転送時間をページプログラミングおよび/またはページフェッチ時間とにオーバーラップさせて、システムの「動作していない」時間を減らすことと、
により大幅に改善される。
【0044】
N(N>2)個のDMA対応コントローラ間での読取りおよび書込み動作を割り当てる上での利用可能な方式の一つは、以下の通りである。
a)任意の瞬間において、2個のフラッシュメモリコントローラは、以下のデータ転送動作の便宜上、「転送元」および「転送先」と指定される。
b)「転送元」フラッシュメモリコントローラを0に、「転送先」フラッシュメモリコントローラをN−1に設定した状態でシステムが起動する。「転送元」コントローラに付加されたフラッシュメディアに読取りコマンドを送信する。
c)「転送元」フラッシュメモリコントローラがページプログラミングフェーズにある場合は、それが完了するまで、すなわち、付加されたフラッシュメディアがReadyになるまで待機し、次にその状態を取得および記録する。
d)「転送元」コントローラに付加されたフラッシュメディアにまだ「Read」コマンドが送信されていない場合は、それをここで送信する。
e)「転送元」フラッシュメディアコントローラ上のフラッシュメディアがデータ送信できる状態になったらすぐに、「転送元」フラッシュメモリコントローラから「転送先」フラッシュメモリコントローラへDMAデータ転送を開始し、DMAの完了まで待機する。
f)データの元レイアウトに関する情報を必要に応じて記録する(以下も参照のこと)。
g)「転送先」=「転送元」と設定し、「転送元」を循環的に次に来る数字に設定するか、「転送元」=(「転送元」+1) mod Nに設定する。
h)他にコピーするデータがあれば、パラグラフc)に進む。
i)すべてのデータの書込みが終わった後で、すべてのフラッシュメモリコントローラのフラッシュメディア上のページプログラミング動作の完了まで必要に応じて待機し、またこれらの動作の状態を必要に応じて受信および記録する。
【0045】
この方式は、ページプログラミング段階の完了直後に「Read」コマンドがフラッシュメディアへ与えられると更に効率が良くなる。
【0046】
フラッシュシステムソフトウェアは、このような動作の後に1個のフラッシュメモリコントローラのフラッシュメディア上に予め書き込まれたデータの一部が他のフラッシュメモリコントローラのフラッシュメディア上に常駐するという事実に対応できなければならない。その目的に向けて、各ページまたは論理ブロックに格納された情報に必要に応じて制御フラグを追加することができる。このフラグにより、フラッシュシステムソフトウェアは、ユーザがデータを要求したときに必要となるデータの「元」レイアウトを導出することができる。このようなフラグの最も簡単な例は、N個のフラッシュメモリコントローラ上でつなぎ合わされたデータのブロックに対して実行されるDMAコピー動作の数である。そのフラグの値ゼロのときに、データがN個のフラッシュメモリコントローラ0、1、2、...N−1の間で配分される場合は、フラグの値がxのときに、上記のコピー方式が使用された場合、データはN個のフラッシュメモリコントローラ間でx、x+1、x+2...(N−1まで循環的に)...x−1として配分される。
【0047】
5)本発明による第五の実施形態は、複数のフラッシュメモリコントローラの機能をどのように効果的に組み合わせて1個のマルチコントローラに組み合わせるかについて説明する。このマルチコントローラは、ページフェッチ時間とページプログラミング時間を隠すことを可能にし、1個のフラッシュメモリコントローラから他のフラッシュメモリコントローラへデータを直接転送する。
【0048】
既存のフラッシュコントローラ技術では、すべての付加されたフラッシュチップは、Chip Select(チップ選択)信号を除いて、同じデータおよび制御信号を共有している。読取りまたは書込み信号がアクティブになると、その時点でChip Select線がアクティブになっているフラッシュチップのみがその読取りまたは書込み動作を実行する。同様に、各チップのReady信号は、任意の1個のチップがNot Readyである場合にコントローラが「Not Ready」状態を指示するよう組み合わされる。そのようなシステムの例は、図10に示される。そのような接続は簡単かつ便利であるが、各フラッシュチップ上での同時かつ異種の動作の実行を可能にすることができない。各チップの同時かつ異種のフラッシュ動作は、それらを別個のフラッシュコントローラに付加するか(前記実施形態に記載)、あるいは特別の/異なる種類のフラッシュメモリコントローラ(ここではマルチコントローラと称される)を設計することによって可能になる。
【0049】
ここに提示したフラッシュメモリマルチコントローラは、次のオプションを有していてもよい。
i)2個の別個のChip Selectorレジスタを有し、2個の異なるChip Select信号を同時にアクティブにする機能を有する(Chip
Select信号の総数は付加されたフラッシュチップの数に等しい)。
ii)複数のRead/Write出力信号を有することから、すべての付加されたチップに対してではなく、特定の選択済みチップに対するRead/Write信号をアクティブにする機能を有する。
iii)必要に応じて、異なる選択済みチップへの2個の異なるRead/Write信号をアクティブにする機能を有する。
iv)レジスタ内の「Ready」インジケータは、付加されたすべてのフラッシュチップではなく、1個の特定の選択されたフラッシュチップの信号のみを反映してもよい。
v)DMA Request(リクエスト)およびAcknowledge(確認)信号、構成レジスタ、状態レジスタ、および制御レジスタなどの第3の実施形態で説明したDMA対応フラッシュメモリコントローラの機能を含む。
【0050】
このようなマルチコントローラでは、第1の実施形態と同様にページプログラミング時間を部分的に「隠す」ことによってシステムアイドル時間の短縮を可能にして(1)、第2の実施形態と同様にページフェッチ時間を短縮し(2)、第3の実施形態と同様にDMAインタフェースの使用により転送時間を短縮し(3)、また、第4の実施形態と同様に、1個のフラッシュメモリコントローラから他のフラッシュメモリコントローラへデータを直接転送する(4)ことができる。
【0051】
マルチコントローラの重要なパラメータは、それが生成するRead/Write信号の数である。システムが(図11上に示すように)複数(N個)のフラッシュメモリコントローラで構築される場合、そのRead/Write信号の数はN個になり、またそれは付加されたフラッシュチップをN個の独立したバンクを通じてアドレス指定できるのに対して、各フラッシュチップは常に同一バンクに属している。1個のフラッシュチップから他のフラッシュチップへのDMA転送は、これらのチップが異なるバンク上に配置される場合にのみ行なわれても
よい。
【0052】
それと比較して、マルチコントローラシステムは、図12に示す通り、すべての付加されたフラッシュチップに対して別のRead/Write信号を有していてもよい。この場合、このシステム内の独立バンクの数は事実上フラッシュチップの数に等しく、システムはこれらのフラッシュチップを任意の数の「仮想」バンクに自由に分割して使いやすくすることができる。また、任意の2個のフラッシュチップ間からのDMA転送は、このような分割にかかわらず行なうことができる。
【0053】
(Read/WriteまたはChip Select以外にも他のフラッシュ制御信号が存在するが、それらのレベルはReadまたはWrite動作の実行中にのみ重要となる。従って、これらの信号はすべてのフラッシュチップについて共通化でき、これらの信号のアクティブ化は、各バンク用のRead/〜Writeおよび/またはChip Select信号のアクティブ化と調整することができる。)
【0054】
限定された数の実施形態に関して本発明を説明してきたが、当業者は、本発明の変更例、修正例、およびその他の適用例を数多く作成できることを理解するであろう。
【図面の簡単な説明】
【図1】ページプログラミング時間を完全に隠すことを可能にする2個のメモリコントローラの使用を示している。
【図2】データ転送時間に対するページプログラミング時間の比率の影響を示している。この図ではこの比率が高くなっているのがわかる。つまり、2個のメモリコントローラを使用すると、ページプログラミング時間を部分的に隠すことができる。
【図3】データ転送時間に対するページプログラミング時間の比率が図2と同一でである場合も、3個のメモリコントローラを使用してページプログラミング時間を完全に隠せることを示している。
【図4a】メモリと非DMA対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「RAMからの読込み、フラッシュメモリへの書込み」のプロセスに焦点を当てている。
【図4b】メモリと非DMA対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「フラッシュメモリからの読込み、RAMへの書込み」のプロセスを焦点を当てている。
【図5a】メモリとDMA対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「RAMからの読み込み、フラッシュメモリへの書込み」のプロセスに焦点を当てている。
【図5b】メモリとDMA対応フラッシュメモリコントローラとの間のデータ転送サイクルの概略図である。「フラッシュメモリからの読込み、RAMへの書込み」に焦点を当てている。
【図6】3個のDMA対応フラッシュメモリコントローラを使用したコピー動作を示している。データ転送時間に対するページプログラミング時間のこの比率では、ページプログラミング時間が部分的にのみ隠される。
【図7】ページプログラミング時間が完全に隠される、4個のDMA対応フラッシュメモリコントローラを使用したコピー動作を示している。
【図8】ページフェッチ時間を隠すことを可能にする2個のメモリコントローラの使用を示している。
【図9】1個のフラッシュメモリコントローラを使用した通常のコピー動作であり、この動作では、データ読取り時間がデータ書込み時間と重なり合うことはなく、ページプログラミング時間とページフェッチ時間も重なり合うことがない。
【図10】従来のフラッシュメモリコントローラのフラッシュチップへの信号付加を示す。
【図11】複数の従来型またはDMA対応フラッシュメモリコントローラのシステムにおける信号付加を示す。
【図12】マルチコントローラを備えたシステムにおける信号付加を示す。
Claims (31)
- フラッシュストレージメディアのデータ転送性能を改善するためのシステムであって、
i.データを格納するための少なくとも1個のフラッシュメモリチップと、
ii.前記フラッシュメモリチップを制御するための少なくとも1個のフラッシュコントローラであって、システムがDMAデータ転送を実行できる状態になったときにアクティブになる出力DMA REQUEST信号を含むDMAインタフェースを有するフラッシュコントローラと、
iii.前記フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号をアクティブにするための少なくとも1個のマイクロコントローラと、
を含むシステム。 - 前記DMA対応フラッシュメモリコントローラが、DMAデータ転送中にシステムバス上で行なわれる動作を逆転することにより、前記付加されたフラッシュチップに対して実行される動作の種類を判別する機能を更に含む、請求項1に記載のシステム。
- 前記DMA対応フラッシュメモリコントローラが、前記フラッシュメモリコントローラの制御レジスタに書き込まれた値に従って、前記付加されたフラッシュチップ上で実行される動作の種類を判別する機能を更に含む、請求項1に記載のシステム。
- 前記フラッシュコントローラ用の前記DMA対応インタフェースが、DMAコントローラに前記DMA REQUEST信号を提供することによって、および前記データ転送に関与する前記フラッシュチップに前記種類の動作を提供することによって、フライバイデータ転送を可能にする、請求項1に記載のシステム。
- RAMバッファが前記データ転送に関与しており、前記データ転送中に前記DMAコントローラにより生成されるアドレスバス上の各値が前記フラッシュチップ内の正しい位置をアドレス指定するように前記RAMバッファが前記システムの各アドレスに位置付けられる、請求項1に記載のシステム。
- 前記DMA対応フラッシュメモリコントローラが前記DMA転送中に前記フラッシュチップにアドレスを提供し、前記アドレスの初期値を設定し、毎DMA転送サイクルの後に前記アドレスを増やすための機能を更に含む、請求項1に記載のシステム。
- フラッシュストレージメディアの性能を改善するためのシステムであって、
i.データを格納するための複数のフラッシュメモリチップと、
ii.前記フラッシュメモリチップを制御するための複数のフラッシュメモリコントローラと、
iii.前記フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号をアクティブにするための少なくとも1個のマイクロコントローラと、
を含み、
少なくとも2個のフラッシュメモリチップが少なくとも2個の別個の前記フラッシュコントローラに接続されるように、前記フラッシュメモリチップが前記フラッシュメモリコントローラに接続されて、それによってデータ転送性能の改善を可能にするシステム。 - 前記複数のフラッシュメモリコントローラが組み合わされて少なくとも1個のマルチコントローラを形成する、請求項7に記載のシステム。
- フラッシュストレージシステムの書込み性能を改善するための方法であって、
i.第1のフラッシュコントローラに付加されたフラッシュチップの状態をチェックする工程と、
ii.予め与えられたページプログラミングコマンドのため前記付加されたフラッシュチップがまだReady状態になっていない場合には、前記フラッシュチップがReadyになるまで待機する工程と、
iii.データを前記フラッシュチップに転送する工程と、
iv.前記フラッシュメモリチップ上でプログラミング動作を開始する工程と、
v.第二のフラッシュコントローラに付加されたフラッシュチップの前記状態をチェックする工程と、
vi.予め与えられたページプログラミングコマンドのため前記付加されたフラッシュチップがまだReady状態になっていない場合は、前記フラッシュチップがReadyになるまで待機する工程と、
vii.前記データを前記フラッシュチップに転送する工程と、
viii.前記フラッシュメモリチップ上でプログラミング動作を開始する工程と、
ix.残りのフラッシュコントローラに付加された前記フラッシュチップ上で上記動作を継続する工程と、
を含む方法。 - 工程(ii.)および(vi.)の後に、前記完了したプログラミング動作の状態を受信および記録する工程を更に含む、請求項9に記載の方法。
- 工程(vii.)の後に、エラー補正およびエラー検出情報からなる群から選択されたデータを前記フラッシュチップに転送する工程を更に含む、請求項9に記載の方法。
- 工程(vii.)の後に、前記ユーザデータの論理および物理アドレスをマッピングするために前記フラッシュストレージシステムが使用するマッピング情報を前記フラッシュチップに転送する工程を含む、請求項9に記載の方法。
- データがすべて転送された後、書込みを行なった前記フラッシュチップ上での前記プログラミングが完了するまで待機する工程を更に含む、請求項9に記載の方法。
- 前記フラッシュチップの状態を受信および記録する工程を更に含む、請求項13に記載の方法。
- フラッシュストレージシステムの読取り性能を改善するための方法であって、
i.第1のフラッシュコントローラに付加されたフラッシュチップに読取りコマンドを送信する工程と、
ii.次のフラッシュコントローラに付加されたフラッシュチップに前記読取りコマンドを送信する工程と、
iii.データが前記第1のフラッシュコントローラに付加された前記フラッシュチップから転送できる状態になるまで待機する工程と、
iv.前記フラッシュチップからデータを転送する工程と、
v.残りのフラッシュコントローラに付加されたフラッシュチップについて段階(ii.)〜(iv.)を繰り返す工程と、
を含む方法。 - 工程(iv.)の後で、ECC検証および補正を実行する工程と、ECC回路からのデータの取得状態を記録する工程とを更に含む、請求項15に記載の方法。
- フラッシュストレージシステムのコピー性能を改善するためのシステムであって、
i.データを格納するための少なくとも2個のフラッシュメモリチップと、
ii.前記フラッシュメモリチップを制御するための少なくとも2個のフラッシュコントローラであって、そのうちの少なくとも1個が、前記コントローラが新規データ転送を実行できる状態になったときにアクティブになる出力DMA REQUEST信号を含むDMAインタフェースを有する少なくとも2個のフラッシュコントローラと、
iii.前記フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号とをアクティブにするための少なくとも1個のマイクロコントローラと、
を含み、
少なくとも2個の前記フラッシュメモリチップが少なくとも2個の別個の前記フラッシュコントローラに接続されるように、前記フラッシュメモリチップが前記フラッシュメモリコントローラに接続されるシステム。 - フラッシュストレージシステムのコピー性能を改善するための方法であって、
i.第1のフラッシュコントローラに付加されたフラッシュチップに読取りコマンドを送信する工程と、
ii.前記フラッシュチップからのDMA転送を実行するためのDMA対応フラッシュコントローラおよびシステムDMAコントローラをセットアップする工程と、
iii.データが前記第1のフラッシュコントローラに付加された前記フラッシュチップから転送できる状態になるまで待機する工程と、
iv.前記フラッシュチップから、第二のフラッシュコントローラに付加されたフラッシュチップへ前記DMA転送を使用して前記データを転送する工程と、
v.前記データを受信する前記フラッシュメモリチップ上でプログラミング動作を開始する工程と、
vi.前記プログラミング動作が完了するまで待機する工程と、
を含む方法。 - 工程(iv.)の後で、ECC検証および補正を実行する工程と、取得データの状態を記録する工程とを更に含み、データ補正が必要とされる場合には、
i)Resetコマンドを送信することにより、前記第二のフラッシュコントローラに付加された前記チップへの前記転送動作を打ち切る工程と、
ii)前記第1のフラッシュコントローラに付加された前記フラッシュチップにReadコマンドを送信し、前記フラッシュチップがReadyになるまで待機し、前記データを前記RAMバッファに転送することによって、RAMバッファへデータを読み込む工程と、
iii)前記RAMバッファ内の前記データを補正する工程と、
iv)前記第二のフラッシュコントローラに付加された前記チップに新規転送動作を開始し、前記RAMバッファからの補正データを前記チップへ転送する工程と、
v)請求項16に記載の工程(v.)を継続する工程と、
が実行される、請求項18に記載の方法。 - 工程(iv.)の後に、前記プログラミング動作の状態を受信および記録する工程を更に含む、請求項18に記載の方法。
- 工程(iv.)の後に、エラー補正とエラー検出情報からなる群から選択されたデータを前記フラッシュチップへ転送する工程を更に含む、請求項18に記載の方法。
- 工程(iv.)の後に、前記ユーザデータの論理および物理アドレスをマッピングするために前記フラッシュストレージシステムが使用するマッピング情報を前記フラッシュチップへ転送する工程を更に含む、請求項18に記載の方法。
- 各動作に関与する前記フラッシュコントローラのうち少なくとも1個がDMA対応となるように、すべてのフラッシュメモリコントローラに付加されたフラッシュチップについて前記動作を繰り返す工程を更に含む、請求項18に記載の方法。
- フラッシュストレージシステムのコピー性能を改善するためのシステムであって、
i.データを格納するための少なくとも3個のフラッシュメモリチップと、
ii.前記フラッシュメモリチップを制御するための少なくとも3個のフラッシュコントローラであって、そのうちの少なくとも2個が、前記コントローラが新規データ転送を実行できる状態になったときにアクティブになる出力DMA REQUEST信号を含むDMAインタフェースを有する、少なくとも3個のフラッシュコントローラと、
iii.前記フラッシュメモリチップと前記フラッシュコントローラの制御およびデータ信号をアクティブにするための少なくとも1個のマイクロコントローラと、
を含み、
少なくとも3個の前記フラッシュメモリチップが少なくとも3個の別個の前記フラッシュコントローラに接続されるように前記フラッシュメモリチップが前記フラッシュメモリコントローラに接続されたシステム。 - フラッシュストレージシステムのコピー性能を改善するための方法であって、
i.第1のフラッシュコントローラに付加されたフラッシュチップの状態をチェックする工程と、
ii.予め与えられたページプログラミングコマンドのため前記付加されたフラッシュメディアがまだReady状態になっていない場合に、前記フラッシュメディアがReadyになるまで待機する工程と、
iii.前記フラッシュチップに読取りコマンドを送信する工程と、
iv.前記フラッシュチップからのDMA転送を実行するためにDMA対応フラッシュコントローラおよびシステムDMAコントローラをセットアップする工程と、
v.データが前記フラッシュチップから転送できる状態になるまで待機する工程と、
vi.前記フラッシュチップから第二のフラッシュコントローラに付加されたフラッシュチップへ前記DMA転送を使用して前記データを転送する工程と、
vii.前記データを受信した前記フラッシュメモリチップ上でプログラミング動作を開始する工程と、
viii.残りのフラッシュコントローラに付加されたフラッシュチップ上で上記動作を継続しながら、「転送元」および「転送先」フラッシュコントローラの番号を循環的に1増やす工程と、
を含む方法。 - 前記データがすべて転送された後で、書込みを行なったフラッシュチップ上での前記プログラミングが完了するまで待機する工程を更に含む、請求項25に記載の方法。
- 前記プログラミング動作の状態を受信および記録する工程を更に含む、請求項26に記載の方法。
- 工程(ii.)の後に、前記プログラミング動作の状態を受信および記録する工程を更に含む、請求項25に記載の方法。
- 工程(v.)の後で、ECC検証および補正を実行する工程と、取得データの状態を記録する工程とを更に含み、データ補正が必要な場合に、
i)Resetコマンドを送信することにより、前記第二のフラッシュコントローラに付加された前記チップへの前記転送動作を打ち切る工程と、
ii)前記第1のフラッシュコントローラに付加された前記フラッシュチップにReadコマンドを送信し、前記フラッシュチップがReadyになるまで待機し、前記データを前記RAMバッファに転送することによってRAMバッファへデータを読み込む工程と、
iii)前記RAMバッファ内の前記データを補正する工程と、
iv)前記第二のフラッシュコントローラに付加された前記チップへの新規転送動作を開始し、前記RAMバッファからの補正データを前記チップへ転送する工程と、
v)請求項25に記載の工程(vi.)に従って更なる動作を継続する工程と、
が実行される、請求項25に記載の方法。 - 工程(v.)の後に、エラー補正およびエラー検出情報からなる群から選択されたデータを前記フラッシュチップに転送する工程を更に含む、請求項25に記載の方法。
- 工程(v.)の後で、前記ユーザデータの前記論理および物理アドレスをマッピングするために前記フラッシュストレージシステムが使用するマッピング情報を前記フラッシュチップへ転送する工程を更に含む、請求項25に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/144,985 US6721820B2 (en) | 2002-05-15 | 2002-05-15 | Method for improving performance of a flash-based storage system using specialized flash controllers |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004005613A true JP2004005613A (ja) | 2004-01-08 |
Family
ID=29418576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003120383A Pending JP2004005613A (ja) | 2002-05-15 | 2003-04-24 | 専用フラッシュコントローラを使用してフラッシュベースストレージシステムの性能を改善するための方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6721820B2 (ja) |
JP (1) | JP2004005613A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7710758B2 (en) | 2004-10-29 | 2010-05-04 | Samsung Electronics Co., Ltd. | Multichip system and method of transferring data therein |
JP2013515979A (ja) * | 2010-04-12 | 2013-05-09 | 株式会社日立製作所 | ストレージ装置 |
JP2016505914A (ja) * | 2012-11-08 | 2016-02-25 | クアルコム,インコーポレイテッド | インテリジェントデュアルデータレート(ddr)メモリコントローラ |
JP2018136922A (ja) * | 2017-02-23 | 2018-08-30 | ハネウェル・インターナショナル・インコーポレーテッドHoneywell International Inc. | メモリープールを有するコンピューティングシステムのためのメモリー分割 |
Families Citing this family (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040128414A1 (en) * | 2002-12-30 | 2004-07-01 | Rudelic John C. | Using system memory as a write buffer for a non-volatile memory |
US7353323B2 (en) * | 2003-03-18 | 2008-04-01 | American Megatrends, Inc. | Method, system, and computer-readable medium for updating memory devices in a computer system |
US20090204872A1 (en) * | 2003-12-02 | 2009-08-13 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
DE102004004796B4 (de) * | 2004-01-30 | 2007-11-29 | Infineon Technologies Ag | Vorrichtung zur Datenübertragung zwischen Speichern |
US20080147931A1 (en) * | 2006-10-17 | 2008-06-19 | Smart Modular Technologies, Inc. | Data striping to flash memory |
US20050262275A1 (en) * | 2004-05-19 | 2005-11-24 | Gil Drori | Method and apparatus for accessing a multi ordered memory array |
EP1811395A4 (en) * | 2004-09-28 | 2008-01-02 | Zentek Technology Japan Inc | HOST CONTROLLER |
US20060136668A1 (en) * | 2004-12-17 | 2006-06-22 | Rudelic John C | Allocating code objects between faster and slower memories |
JP4361033B2 (ja) * | 2005-04-27 | 2009-11-11 | 株式会社日立製作所 | ディスクアレイ装置 |
US7428603B2 (en) * | 2005-06-30 | 2008-09-23 | Sigmatel, Inc. | System and method for communicating with memory devices via plurality of state machines and a DMA controller |
KR100673013B1 (ko) * | 2005-09-21 | 2007-01-24 | 삼성전자주식회사 | 메모리 컨트롤러 및 그것을 포함한 데이터 처리 시스템 |
US8291295B2 (en) * | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US7631245B2 (en) | 2005-09-26 | 2009-12-08 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US7609561B2 (en) * | 2006-01-18 | 2009-10-27 | Apple Inc. | Disabling faulty flash memory dies |
US7793059B2 (en) * | 2006-01-18 | 2010-09-07 | Apple Inc. | Interleaving policies for flash memory |
US7752391B2 (en) * | 2006-01-20 | 2010-07-06 | Apple Inc. | Variable caching policy system and method |
US20070174641A1 (en) * | 2006-01-25 | 2007-07-26 | Cornwell Michael J | Adjusting power supplies for data storage devices |
US7702935B2 (en) * | 2006-01-25 | 2010-04-20 | Apple Inc. | Reporting flash memory operating voltages |
US7912994B2 (en) * | 2006-01-27 | 2011-03-22 | Apple Inc. | Reducing connection time for mass storage class peripheral by internally prefetching file data into local cache in response to connection to host |
US7594043B2 (en) * | 2006-01-27 | 2009-09-22 | Apple Inc. | Reducing dismount time for mass storage class devices |
US7861122B2 (en) * | 2006-01-27 | 2010-12-28 | Apple Inc. | Monitoring health of non-volatile memory |
US7849302B2 (en) * | 2006-04-10 | 2010-12-07 | Apple Inc. | Direct boot arrangement using a NAND flash memory |
US7639542B2 (en) * | 2006-05-15 | 2009-12-29 | Apple Inc. | Maintenance operations for multi-level data storage cells |
US8000134B2 (en) | 2006-05-15 | 2011-08-16 | Apple Inc. | Off-die charge pump that supplies multiple flash devices |
US7852690B2 (en) * | 2006-05-15 | 2010-12-14 | Apple Inc. | Multi-chip package for a flash memory |
US7911834B2 (en) * | 2006-05-15 | 2011-03-22 | Apple Inc. | Analog interface for a flash memory die |
US7701797B2 (en) * | 2006-05-15 | 2010-04-20 | Apple Inc. | Two levels of voltage regulation supplied for logic and data programming voltage of a memory device |
US7639531B2 (en) * | 2006-05-15 | 2009-12-29 | Apple Inc. | Dynamic cell bit resolution |
US7511646B2 (en) * | 2006-05-15 | 2009-03-31 | Apple Inc. | Use of 8-bit or higher A/D for NAND cell value |
US7613043B2 (en) * | 2006-05-15 | 2009-11-03 | Apple Inc. | Shifting reference values to account for voltage sag |
US7551486B2 (en) * | 2006-05-15 | 2009-06-23 | Apple Inc. | Iterative memory cell charging based on reference cell value |
US7568135B2 (en) | 2006-05-15 | 2009-07-28 | Apple Inc. | Use of alternative value in cell detection |
US8010740B2 (en) * | 2006-06-08 | 2011-08-30 | Bitmicro Networks, Inc. | Optimizing memory operations in an electronic storage device |
US7506098B2 (en) * | 2006-06-08 | 2009-03-17 | Bitmicro Networks, Inc. | Optimized placement policy for solid state storage devices |
US20080046641A1 (en) * | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
US20080046630A1 (en) * | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
US8001314B2 (en) | 2006-09-12 | 2011-08-16 | Apple Inc. | Storing a driver for controlling a memory |
US20100115175A9 (en) * | 2006-12-18 | 2010-05-06 | Zhiqing Zhuang | Method of managing a large array of non-volatile memories |
US7814304B2 (en) * | 2007-03-14 | 2010-10-12 | Apple Inc. | Switching drivers between processors |
KR20080084083A (ko) * | 2007-03-14 | 2008-09-19 | 삼성전자주식회사 | 효율적으로 메모리 포트를 사용할 수 있는 마이크로 컴퓨터시스템 |
US7613051B2 (en) * | 2007-03-14 | 2009-11-03 | Apple Inc. | Interleaving charge pumps for programmable memories |
US7996599B2 (en) * | 2007-04-25 | 2011-08-09 | Apple Inc. | Command resequencing in memory operations |
US7870327B1 (en) | 2007-04-25 | 2011-01-11 | Apple Inc. | Controlling memory operations using a driver and flash memory type tables |
US7869277B1 (en) | 2007-04-25 | 2011-01-11 | Apple Inc. | Managing data writing to memories |
US20080288712A1 (en) | 2007-04-25 | 2008-11-20 | Cornwell Michael J | Accessing metadata with an external host |
US7913032B1 (en) | 2007-04-25 | 2011-03-22 | Apple Inc. | Initiating memory wear leveling |
CN100458751C (zh) * | 2007-05-10 | 2009-02-04 | 忆正存储技术(深圳)有限公司 | 并行闪存控制器 |
CN101162449B (zh) * | 2007-10-08 | 2010-06-02 | 福州瑞芯微电子有限公司 | Nand flash控制器及其与nand flash芯片的数据交互方法 |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
WO2010013427A1 (ja) * | 2008-07-30 | 2010-02-04 | パナソニック株式会社 | 集積回路 |
US20100036999A1 (en) * | 2008-08-05 | 2010-02-11 | Zhiqing Zhuang | Novel method of flash memory connection topology in a solid state drive to improve the drive performance and capacity |
US8316201B2 (en) * | 2008-12-18 | 2012-11-20 | Sandisk Il Ltd. | Methods for executing a command to write data from a source location to a destination location in a memory device |
KR20100115583A (ko) * | 2009-04-20 | 2010-10-28 | 삼성전자주식회사 | 데이터 저장 시스템 |
KR20110013868A (ko) * | 2009-08-04 | 2011-02-10 | 삼성전자주식회사 | 멀티 코멘드 셋 동작 및 우선처리 동작 기능을 갖는 멀티 프로세서 시스템 |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
US20110040924A1 (en) * | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
US8595411B2 (en) | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
US8782362B2 (en) | 2011-03-08 | 2014-07-15 | International Business Machines Corporation | Cyclic point-in-time-copy architecture with data deduplication |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9858084B2 (en) | 2013-03-15 | 2018-01-02 | Bitmicro Networks, Inc. | Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9875205B1 (en) * | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
CN103594103B (zh) * | 2013-11-15 | 2017-04-05 | 腾讯科技(成都)有限公司 | 音频处理方法及相关装置 |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
KR102229970B1 (ko) * | 2014-06-27 | 2021-03-22 | 삼성전자주식회사 | 불휘발성 메모리, 랜덤 액세스 메모리 및 메모리 컨트롤러를 포함하는 솔리드 스테이트 드라이브 |
US20170315943A1 (en) * | 2016-04-29 | 2017-11-02 | Sandisk Technologies Inc. | Systems and methods for performing direct memory access (dma) operations |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
US10761999B1 (en) * | 2019-05-30 | 2020-09-01 | Western Digital Technologies, Inc. | Storage device with predictor engine of host turnaround time |
CN114168500A (zh) * | 2021-12-01 | 2022-03-11 | 武汉港迪技术股份有限公司 | 一种无系统的单片机多接口扩展方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812814A (en) * | 1993-02-26 | 1998-09-22 | Kabushiki Kaisha Toshiba | Alternative flash EEPROM semiconductor memory system |
JPH0877066A (ja) * | 1994-08-31 | 1996-03-22 | Tdk Corp | フラッシュメモリコントローラ |
KR100359414B1 (ko) * | 1996-01-25 | 2003-01-24 | 동경 엘렉트론 디바이스 주식회사 | 데이타독출/기록방법및그를이용한메모리제어장치및시스템 |
US5822251A (en) | 1997-08-25 | 1998-10-13 | Bit Microsystems, Inc. | Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers |
US5956743A (en) | 1997-08-25 | 1999-09-21 | Bit Microsystems, Inc. | Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations |
-
2002
- 2002-05-15 US US10/144,985 patent/US6721820B2/en not_active Expired - Lifetime
-
2003
- 2003-04-24 JP JP2003120383A patent/JP2004005613A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7710758B2 (en) | 2004-10-29 | 2010-05-04 | Samsung Electronics Co., Ltd. | Multichip system and method of transferring data therein |
JP2013515979A (ja) * | 2010-04-12 | 2013-05-09 | 株式会社日立製作所 | ストレージ装置 |
JP2016505914A (ja) * | 2012-11-08 | 2016-02-25 | クアルコム,インコーポレイテッド | インテリジェントデュアルデータレート(ddr)メモリコントローラ |
JP2018136922A (ja) * | 2017-02-23 | 2018-08-30 | ハネウェル・インターナショナル・インコーポレーテッドHoneywell International Inc. | メモリープールを有するコンピューティングシステムのためのメモリー分割 |
JP7242170B2 (ja) | 2017-02-23 | 2023-03-20 | ハネウェル・インターナショナル・インコーポレーテッド | メモリープールを有するコンピューティングシステムのためのメモリー分割 |
Also Published As
Publication number | Publication date |
---|---|
US20030217202A1 (en) | 2003-11-20 |
US6721820B2 (en) | 2004-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004005613A (ja) | 専用フラッシュコントローラを使用してフラッシュベースストレージシステムの性能を改善するための方法 | |
US7907469B2 (en) | Multi-port memory device for buffering between hosts and non-volatile memory devices | |
EP1488323B1 (en) | Memory system with burst length shorter than prefetch length | |
JP4711531B2 (ja) | 半導体記憶装置 | |
TWI776553B (zh) | 具有晶片內執行能力的串列式反及閘快閃記憶體 | |
US20040054864A1 (en) | Memory controller | |
EP3268864B1 (en) | High performance non-volatile memory module | |
JP4643729B2 (ja) | インタリーブ制御装置、インタリーブ制御方法及びメモリシステム | |
JPH0934740A (ja) | 外部記憶装置およびそのメモリアクセス制御方法 | |
JPH05205477A (ja) | 時間重複メモリ・アクセスを有するランダムにアクセス可能なメモリ | |
US11055220B2 (en) | Hybrid memory systems with cache management | |
US11526441B2 (en) | Hybrid memory systems with cache management | |
US8402233B2 (en) | Method and apparatus for high throughput mass storage device interface in a microprocessor for handheld systems | |
JP3078000B2 (ja) | 情報処理装置 | |
JP2004288147A (ja) | シリアルメモリに対するxipシステム及びその方法 | |
US11704258B2 (en) | Latency reduction in SPI flash memory devices | |
TWI701553B (zh) | 反及閘快閃記憶體的讀取方法 | |
JP3098363B2 (ja) | 記憶装置 | |
JP4319788B2 (ja) | マイクロコンピュータ | |
JPH07248927A (ja) | 入出力エミュレーション回路およびデータチェック回路 | |
JP3201439B2 (ja) | ダイレクト・メモリ・アクセス・制御回路 | |
JP5656589B2 (ja) | データ転送装置、データ転送方法及びデータ転送プログラム | |
JPS6321276B2 (ja) | ||
JPH01177151A (ja) | 情報処理システム | |
JPH01125621A (ja) | レジスタセット方式 |