JP4945792B2 - フラッシュメモリシステム及びプログラミング方法 - Google Patents
フラッシュメモリシステム及びプログラミング方法 Download PDFInfo
- Publication number
- JP4945792B2 JP4945792B2 JP2002508803A JP2002508803A JP4945792B2 JP 4945792 B2 JP4945792 B2 JP 4945792B2 JP 2002508803 A JP2002508803 A JP 2002508803A JP 2002508803 A JP2002508803 A JP 2002508803A JP 4945792 B2 JP4945792 B2 JP 4945792B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- logical block
- flash memory
- programming
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、フラッシュメモリシステム及びプログラミング方法に関する。詳しくは、本発明は、ホストシステムとインタフェースするフラッシュメモリシステム及びプログラミング方法に関する。
【0002】
【従来の技術】
フラッシュメモリは、電気的に書込可能な不揮発性デジタルメモリ媒体である。フラッシュメモリは、不揮発性であるため、メモリ内に記憶されているデジタルデータを保持するための保持電圧(sustained voltage)を必要としない。フラッシュメモリセルは、通常、浮遊ゲートに電荷を注入することにより、バイナリ状態方式における第1の論理状態を表し、また、浮遊ゲートから電荷を取り除くことにより、バイナリ状態方式における第2の論理状態を表す。フラッシュメモリセルは、通常、書込動作、読出動作及び消去動作をサポートしている。
【0003】
フラッシュメモリ技術の進歩に伴い、様々なアプリケーションが実現されている。特に、従来の回転磁気媒体、例えばホストコンピュータシステム又は他のホストデジタルシステムに接続されたハードディスクドライブ又はフロッピディスクドライブの大容量記憶機能をエミュレートするフラッシュメモリの実現が広く受け入れられている。ハードディスクドライブ及びフロッピディスクドライブは、フラッシュメモリ技術では生じない幾つかの問題を有している。先ず、ハードディスクドライブ及びフロッピディスクドライブは、多くの可動部品、例えば電動モータ、スピンドルシャフト、読出/書込ヘッド、回転磁気ディスクを備えている。これらの部品のために信頼性に問題が生じ、ハードディスクドライブやフロッピディスクドライブは、落下又は衝突による振動及び衝撃により故障しやすい。次に、モータにより駆動されるディスクドライブは、消費電力が大きく、このため、バッテリの充電から次の充電までの動作時間を実質的に短くしている。最後に、ハードディスク又はフロッピディスクに記録されたデータへのアクセス時間が長いという問題もある。
【0004】
一方、フラッシュメモリシステムは、これらの回転記録ディスクに対して多くの利点を有している。一般的なフラッシュメモリシステムは、可動部品を有しておらず、このため信頼性が高い。更に、フラッシュメモリシステムの構造は簡単であるため、フラッシュメモリシステムは、ハードディスクドライブやフロッピディスクドライブの場合であれば深刻な結果を招くような環境条件及び物理的誤操作にも耐えることができる。また、ユーザは、フラッシュメモリシステムに記憶されているデータに非常に高速にアクセスすることができる。更に、フラッシュメモリシステムの消費電力は、ハードディスクドライブ及びフロッピディスクドライブの消費電力よりも著しく少ない。
【0005】
【発明が解決しようとする課題】
回転記録媒体、例えばハードディスクドライブが市場に浸透し、汎用的に用いられているので、市場のシェア獲得を模索するより高性能な処理又は装置も、既存のソフトウェア及びオペレーティングシステムに互換性を有する必要がある。従来の回転大容量記憶装置にデータを記録するシステムとの互換性を保つために、フラッシュメモリは、512バイトのユーザデータと、16バイトのオーバヘッドデータとを格納する一連のデータフィールドに分割され、これにより、市販されているハードディスクにおいて利用できるデータフィールドのサイズがエミュレートされている。図1は、フラッシュメモリ素子内の不揮発性メモリアレイを示している。一連の物理セクタ(Physical Sectors)、すなわち物理ページ(Physical Pages)108〜112は、一般的回転大容量記憶装置のセクタの記憶容量に一致するように、512バイトのユーザデータと、16バイトのオーバヘッドデータとを格納する。複数の、通常16個又は32個の物理ページ108〜112は、物理データブロック(Physical Data Block)102〜106を構成している。
【0006】
従来のフラッシュメモリシステムは、複数の物理データブロック102〜106を備える1つのメモリ構造100を有している。各物理データブロック102〜106には、フラッシュメモリシステムを構成する複数の物理データブロックを識別及び区別する固有の仮想物理ブロックアドレス(Virtual Physical Block Address:以下、VPBAという。)が割り当てられる。各物理データブロック102〜106は、通常、選択的にプログラム可能であり、消去可能である。
【0007】
従来のフラッシュメモリアーキテクチャの一具体例を図2に示す。ホスト215、例えばコンピュータ又はデジタルカメラは、リムーバブルフラッシュメモリカード201とデータを送受信する。ホスト215からフラッシュメモリシステム200へのデータの送信中、ホスト215は、データに論理ブロックアドレスを割り当てる。データの読出時には、ホスト215は、以前に割り当てた論理ブロックアドレスに基づいてデータを要求する。データは、通常、パラレルバスアーキテクチャを有するホストインタフェースバス220を介して、フラッシュメモリコントローラ(以下、単にコントローラという。)202のホストインタフェース回路203に供給される。ホストインタフェース回路203は、RAMデータバッファ204を用いて、入力データの記憶を制御する。RAMデータバッファ204に所定のデータ量が格納されたとき、メモリインタフェース回路205は、データバス230を介して、図1にその詳細を示す不揮発性のフラッシュメモリユニット206にデータを供給する。データバス230は、通常、パラレルバス構造を有している。RAMデータバッファ204のサイズは、幾つかの不揮発性メモリフィールド、例えば図1に示す合計約528バイトのデータを含む物理ページの倍数に等しいデータ量を格納するように設計することが望ましい。
【0008】
現在までの技術では、フラッシュメモリシステムは、「消耗(wearing out)」までのプログラミングサイクルの数が制限されている。消耗の問題を改善するために、図2を用いて後で詳細に説明するコントローラ202は、第1の位置に戻る前に、利用可能なメモリ位置を巡回(cycle through)するように試みる。セル間の消耗率を調整することにより、コントローラ202は、フラッシュメモリシステムの一領域に消耗が集中するような不均一な消耗を防止する。このような消耗均等化プログラム(wear-leveling program)により、フラッシュメモリシステム内の全てのセルは、通常、同じ速度で消耗する。すなわち、消耗均等化プログラムにより、1つの領域が過剰に使用されることによる局所的なメモリ領域の劣化が生じないようにされる。これにより、フラッシュメモリシステム全体が、その寿命に亘って均等な信頼性を有するようになる。ハードディスクの記憶機構では、性能を劣化させることなく、事実上、無制限にプログラミング/書込動作を行うことができるので、ハードディスクの場合は、このような消耗均等化は不要である。このような相異から、フラッシュメモリにおいて使用されているアドレス指定方式と、ハードディスクドライブ又はフロッピディスクドライブにおいて使用されているアドレス指定方式とは異なるものとなる。
【0009】
ハードディスクドライブ及びフラッシュメモリシステムのいずれにおいても、メモリに割り当てられる物理アドレスは、メモリ装置内の幾何学的構造に従っている。すなわち、物理アドレスは、通常、連続したメモリ位置に亘って順次インクリメントするように付される。メモリ装置にユーザデータが供給されると、このメモリ装置がフラッシュメモリであってもハードディスクであっても、ホストシステムは、通常、入力データにアドレスを割り当てる。ハードディスクドライブでは、データは、通常、ホストシステムによって定義された論理アドレスに物理アドレスが一致するセクタに記録される。特定の論理アドレスによって以前に定義したユーザデータをホストシステムが更新すると、新たなデータは、先に指定されたアドレスにおいて、元のデータに上書きされる。
【0010】
一方、フラッシュメモリシステムにおいては、消耗均等化アルゴリズムに基づいてフラッシュメモリ内の様々な領域を巡回する必要があるため、新たな物理アドレスによって定義される物理領域が、絶えず埋められる。したがって、ホストシステムが特定の論理アドレスによって定義されているユーザデータを更新し、この更新されたデータをフラッシュメモリに供給すると、消耗均等化プログラムは、入力ユーザデータを、同じ論理アドレスを有するユーザデータが以前に格納されていた物理位置とは無関係な物理位置に書き込む。すなわち、特定の論理アドレスに関連付けられている古いデータは、同じ論理アドレスを有する入力データによって、直ちには上書きされない。この古いデータは、単に使用されなくなるだけであり、入力データは、次に利用可能な物理データブロック、すなわち次にアドレス可能な空いている欠陥がない物理データブロックに書き込まれる。この結果、ホストは、フラッシュメモリがそのデータを最終的に書き込むアドレスとは何の関係も有さないアドレスを、データに割り当てることとなる。一般的なフラッシュメモリシステムによって実現される消耗均等化データ記憶プログラムの顕著な特徴は、ホストによって割り当てられる論理アドレスと、フラッシュメモリシステムによって実際に使用される物理アドレスとの間の関係が絶えず変化する点にある。フラッシュメモリシステムは、この二重メモリ処理(dual memory process)によって、データの書込及び読出に関するハードディスクドライブと、ホストとの間の関係を機能的にエミュレートし、これにより、既存のソフトウェアとの互換性を保っている。
【0011】
図3は、入力データを受け取り、受け取ったデータをフラッシュメモリユニット206(図2)内に保存するために使用される様々なレジスタ及びフィールドを示している。ここで、ホストシステムによってユーザデータの読出を容易にするために、論理アドレスと物理アドレスとの間に相互関係(correlation)が存在しなければならない。この相互関係は、通常、フラッシュメモリシステム200内の各物理ページ108〜112のオーバヘッド部及びRAM空間マネージャ(RAM Space Manager)370に記憶される。ホスト215が、1組の論理ブロックアドレス302〜308によって識別されるユーザデータ310〜316をフラッシュメモリシステム200に送信したとき、フラッシュメモリシステム200は、ある物理位置(以下、物理ページともいう。)322〜328にデータを格納し、そして、特別に指定された関連付けレジスタ又はフィールド、例えばRAM空間マネージャ370に、そのデータの論理ブロックアドレス302〜308と物理ブロックアドレス330〜336とを関連付ける。その後、ホスト215が特定の論理ブロックアドレスによって識別されるデータを要求したとき、フラッシュメモリシステム200は、論理ブロックアドレスと物理ブロックアドレスとを関連付ける様々なレジスタ、フィールド又はファイルを調べる。ホスト215によって要求された論理ブロックアドレスを見つけると、フラッシュメモリシステム200は、その論理ブロックアドレスに関連した物理ブロックアドレスを特定することができる。フラッシュメモリシステム200は、その物理ブロックアドレスから、ユーザデータを読み出す。
【0012】
書込及び読出処理は、様々なアドレスレジスタ内の様々なビットをマスキング及び連結(concatenating)する一連の動作を含む。論理ブロックアドレス(Logical Block Address:以下、LBAともいう。)を格納するために使用されるビットレジスタは、一時的LBAレジスタ(LBA temporary register)340における上位ビットフィールド342と下位ビットフィールド344とである2つのサブレジスタに分割されている。通常16個又は32個のユーザデータ310〜316からなる論理ブロック(以下、論理ブロック310〜316ともいう。)のグループは、上位ビットフィールド342内の共通アドレスによって定義され、仮想論理ブロック(Virtual Logical Block)300を構成している。すなわち、上位ビットフィールド342の値は、仮想論理ブロックアドレスである。構成要素である論理ブロック(component Logical Blocks)間の下位ビットフィールド344の値は、個々の論理ブロックを区別するLBAオフセットである。下位ビットフィールド344のアドレス、すなわちLBAオフセットは、通常、0〜15又は0〜31の間でインクリメントされる。なお、仮想論理ブロック300のサイズは、これらに限定されず、いかなるサイズであってもよい。このように、一時的LBAレジスタ340によって示す上位ビットフィールド342と下位ビットフィールド344とにより論理ブロックアドレスが定義される。したがって、仮想論理ブロック300内の構成要素である論理ブロック310〜316は、論理ブロックアドレス(LBA)によって定義される。
【0013】
仮想論理ブロックアドレス(Virtual Logical Block Address:以下、VLBAともいう。)によって定義されるデータの仮想論理ブロック(Virtual Logical Block:以下、VLBともいう。)300は、仮想物理ブロックアドレス(Virtual Physical Block Address:以下、VPBAともいう。)によって定義される物理データブロック320として知られている物理領域に等しいデータ量を表している。VPBAは、相補的(complement)物理ページからなっている。VPBA内の連続した物理ページは、PBAオフセットによって区別される。VPBA及びPBAオフセットは、各物理ページ毎の固有のPBA、すなわち物理ブロックアドレス330〜336を定義している。各論理ブロック310〜316は、物理ページ322〜328に等しいデータ量を表している。論理アドレスと物理アドレスを関連付ける専用のデータフィールド又はレジスタ、例えばRAM空間マネージャ370は、本来ユーザデータを格納することができるはずの、フラッシュメモリシステム200内の貴重なメモリ空間を消費する。フラッシュメモリシステム200において、各VLBA345、346等を各PBA330〜336に関連付けるために十分な数の関連付けレジスタ380〜384を設けてしまうと、フラッシュメモリの多くの部分が関連付け機能のために消費され、ユーザデータを格納するために使用できるメモリが少なくなってしまう。このような詳細な関連付けは、例えば仮想論理ブロック300のユーザデータが16個又は32個の構成要素であるLBA302〜308に分割され、フラッシュメモリシステム200内の異なる物理アドレスデータブロック内に分散された16個又は32個の異なる物理ページに格納される場合に、必要となる。
【0014】
関連付けをより大きなデータのグループのみに制限する、例えば仮想論理ブロックアドレスを、物理メモリの大きなブロックを定義する仮想物理ブロックアドレスに関連付けることにより、関連付けデータ専用に消費されるメモリ空間を最小化することができる。また、VLB300の連続してアドレスが付された論理ブロックのユーザデータ310〜316を、物理データブロック320内の連続してアドレスが付された物理ページ322〜328に順次格納することにより、全ての論理ブロックを含む関連付けレジスタの数を乗算的に増加させることなく、VLB300の構成要素である論理ブロックと、物理データブロック320の個々の物理ページとの間の相互関係を維持することができる。したがって、物理データブロック320内の連続した物理ブロックアドレス330〜336と、仮想論理ブロック300内の連続した論理ブロックアドレス302〜308との間の一対一の関係は、空間的配列又は準空間的配列(quasi-spacial arrangement)によって維持される。この場合、個々のLBAを個々の物理ページアドレスに関連付ける専用のレジスタは不要である。上位ビットフィールド342のVLBAのみを、物理データブロックを表すVPBAに関連付けるだけでよい。
【0015】
図4は、入力ユーザデータを、図3に示すデータフィールド及びレジスタに基づいて保存する処理を説明するためのフローチャートである。ステップ402において、不揮発性のフラッシュメモリユニット206(図2)に書き込む仮想論理ブロック300(図3)の17がホスト215から供給される。次のステップ404において、コントローラ202は、第1のLBA302を一時的LBAレジスタ340に移動する。ステップ406において、コントローラ202は、一時的LBAレジスタ340内の下位ビットフィールド344をマスクし、上位ビットフィールド342のVLBAを一時的VLBAレジスタ360に移動する。ステップ408において、コントローラ202は、RAM空間マネージャ370を調べ、一時的VLBAレジスタ360に示されている現在のVLBA349に対応するVPBAの関連付けレジスタ384を識別する。ステップ412において、コントローラ202は、新たなVPBAによって識別される欠陥がない空きの物理データブロック320を識別する。ステップ414において、コントローラ202は、RAM空間マネージャ370の関連付けレジスタ384に新たなVPBAを書き込む。
【0016】
ここで、コントローラ202は、選択された物理データブロック320内において、入力仮想論理ブロック300内の入力ユーザデータを格納する特定の物理ページ322〜328を識別することができるようになる。仮想論理ブロック300内の連続した論理ブロック310〜316と、連続した物理ブロックアドレス330〜336との間の一対一の関係を達成するために、コントローラ202は、物理データブロック320のVPBAと現在のLBA302〜308のLBAオフセットとを組み合わせる。ステップ415において、コントローラ202は、選択された物理データブロック320のVPBAを一時的PBAレジスタ351に格納する。ステップ416において、コントローラ202は、一時的LBAレジスタ340の上位ビットフィールド(以下、上位ビットレジスタという。)342をマスクし、LBAオフセットが格納された下位ビットフィールド(以下、下位ビットレジスタという。)344を一時的PBAレジスタ351の下位ビットレジスタ354に連結する。一時的PBAレジスタ351から組み合わされた上位ビットレジスタ352及び下位ビットレジスタ354は、物理ブロックアドレスを形成する。そして、ステップ418において、コントローラ202は、一時的LBAレジスタ340によって識別される論理ブロックのユーザデータ310〜316を、一時的PBAレジスタ351によって識別される物理ページ322〜328にプログラミングする。
【0017】
ステップ420において、コントローラ202は、入力データの次の論理ブロックを調べ、入力論理ブロックのLBAを一時的LBAレジスタ340に移動する。ステップ422において、一時的VLBAレジスタ360の値が変更されていない場合、コントローラ202は、ステップ416に戻る。一方、ホスト215から、新たなVLBAを有する新たなユーザデータが供給された場合、コントローラ202は、ステップ402に戻り、上述の処理を繰り返す。
【0018】
図4に示すステップの一部の順序を入れ替えても、同様の結果を得ることができる。特定の記憶機構は、多数の同等な手法により実現できるものであり、図4に示す処理は、従来の全ての相互関係がある記憶処理が厳密にここに示す手順で行われていることを示すものではない。ここで説明した詳細は、LBAとPBAの自然な相互関係を維持するデータ記憶処理を実現するための一例を例示的に示したにすぎない。上述の処理では、下位ビットレジスタ344のLBAオフセットは、VLBを物理ページに格納する際のPBAオフセットとして使用されている。この手法では、記憶、すなわち書込処理において所定の順序を維持しているので、フラッシュメモリシステム200は、ホスト215によって要求された個々のLBAを読み出すことができる。
【0019】
図5は、ホスト215からの要求に応じて、フラッシュメモリユニット206からデータを読み出す従来の処理を説明するためのフローチャートである。なお、ここに説明する読出動作も、従来の処理の一例にすぎない。ステップ502において、コントローラ202(図2)は、LBAのグループ、すなわち特定のLBA302〜308(図3)に基づいて定義されるデータの読出を要求する。ステップ504において、コントローラ202は、要求されたLBA302〜308を、概念的に上位ビット用の上位ビットレジスタ342と下位ビット用の下位ビットレジスタ344から構成される一時的LBAレジスタ340に移動する。ステップ506において、コントローラ202は、一時的LBAレジスタ340の下位ビットレジスタ344をマスクし、上位ビットレジスタ342内の値に基づいて、要求されたVLBAを一時的VLBAレジスタ360に定義する。ステップ508において、コントローラ202は、RAM空間マネージャ370を、一時的VLBAレジスタ360内のVLBAにインクリメントし、これにより、一時的VLBAレジスタ360内で検出されるVLBAに対応する現在の関連付けレジスタ384にアクセスする。ステップ510において、コントローラ202は、現在の関連付けレジスタ384に記憶されているVPBAを、一時的PBAレジスタ351の上位ビットレジスタ352にコピーする。ステップ512において、コントローラ202は、一時的LBAレジスタ340の上位ビットレジスタ342内の上位ビットをマスクし、LBAオフセットを含む下位ビットレジスタ344内の下位ビットを、一時的PBAレジスタ351の下位ビットレジスタ354に連結する。このようにして形成された一時的PBAレジスタ351の上位ビットレジスタ352及び下位ビットレジスタ354は、物理ブロックアドレスを形成する。これにより、コントローラ202は、ステップ514において、一時的PBAレジスタ351内に形成された物理ブロックアドレスによって定義される物理データブロックにアクセスし、この物理データブロックに格納されているユーザデータをホスト215に転送することができる。ステップ516において、コントローラ202は、また、一時的LBAレジスタ340内の論理ブロックアドレスをホスト215に転送し、これにより、ホスト215によってユーザデータに割り当てられていた元のアドレスに基づいて、ユーザデータの論理ブロックを定義する。
【0020】
書込処理及び読出処理中に、LBAオフセットをVPBAに連結することにより、コントローラ202は、要求に応じて、PBAに対するLBAの相互関係を形成することができ、フラッシュメモリシステム200にはVLBAとVPBAの相互関係のみを保存すればよく、本来保存すべき相互関係の一部のみを保存すればよくなり、相互関係を保存するために使用されるメモリ量が削減される。したがって、ホストが一連の論理ブロックアドレスによって定義されるデータを要求したとき、フラッシュメモリシステムは、物理位置からユーザデータを読み出し、このユーザデータをホストに返す。したがって、ホストがデータを読み出すとき、ホストに送られるデータは、ホストが要求したアドレスと同じアドレスによって識別される。フラッシュメモリシステム内で用いられている二重アドレス方式(dual addressing scheme)及び相互参照(cross referencing)は、ホスト側からは見えない。
【0021】
フラッシュメモリは、通常、回転記録媒体よりも非常に高速のアクセス速度を有しているが、フラッシュメモリにおける「読出」速度と「書込」速度との間には、大きな差がある。フラッシュメモリの読出速度は、マイクロ秒程度であり、ランダムアクセスメモリ(random access memory:RAM)に引けを取らない。一方、フラッシュメモリのプログラミング速度、すなわち書込速度は、ミリ秒程度であり、これは、一般的なRAMのプログラミング速度の1/10程度の速度である。したがって、RAMデータバッファ204は、不揮発性のフラッシュメモリユニット206がデータを受信できるよりも遙かに高速にデジタルデータを受信して、転送する。したがって、フラッシュメモリのプログラミングフェーズは、フラッシュメモリ素子を組み込んだ集積回路及びMOSシステムにおける潜在的な処理速度を制限する主要な要因となっている。
【0022】
フラッシュメモリのプログラミング速度は、図6に示すようなマルチバンクフラッシュメモリシステム(multi bank Flash Memory System)の開発によって、実質的に向上されている。フラッシュメモリシステム600は、ホストシステム601、例えばコンピュータ又はデジタルカメラに機能的に接続されている。フラッシュメモリコントローラ604は、ホストインタフェース回路605と、RAMデータバッファ607と、メモリインタフェース回路609とを備え、フラッシュメモリユニット602に機能的に接続されている。フラッシュメモリユニット602は、複数のメモリバンク621〜627を備える。第1のメモリバンク621は、複数の物理データブロック631〜637と、1つのRAMデータレジスタ613とを備える。第2のメモリバンク623は、複数の物理データブロック641〜647と、1つのRAMデータレジスタ615とを備える。第3のメモリバンク625は、複数の物理データブロック651〜657と、1つのRAMデータレジスタ617とを備える。第4のメモリバンク627は、複数の物理データブロック661〜667と、1つのRAMデータレジスタ619とを備える。各メモリバンク621〜627は、通常、同数の物理データブロックを備える。各RAMデータレジスタ613〜619は、通常、物理メモリの1ページ分に等しいデータ容量を有し、このデータ容量は、通常、ユーザデータの512バイトに、オーバヘッドデータの16バイトを加えた値である。図6に示すフラッシュメモリユニット602は、4つのメモリバンク621〜627を備えているが、この構成は例示的なものである。マルチバンクフラッシュメモリシステムは、幾つのメモリバンクを備えていてもよい。同様に、データフィールド及びメモリ領域のサイズも、従来より用いられている一般的な構成に基づいて例示的に示しているにすぎない。ここに示す従来の技術及びこの技術の本発明への応用の説明は、いずれも本発明におけるメモリバンクの数を特定の数に限定するものではない。同様に、この説明は、物理的又は論理的データフィールド又はレジスタのサイズを限定するものではなく、及び書き込まれ又は処理される入力データのデータ量を制限するものでもない。特定のパラメータ、例えばデータフィールドのサイズ、より大きなメモリ素子を構成する物理メモリのサブグループの数、すなわちデータのより大きなグループを構成するサブグループの数は、当該分野において一般的に用いられている値に基づいて選択されたものであり、例示的に示しているにすぎない。
【0023】
マルチバンクのフラッシュメモリシステム600においては、RAMデータバッファ607は、データを、直接物理データブロック631〜667に格納しない。ここでは、RAMデータバッファ607は、データを、複数のRAMデータレジスタ613〜619にロードさせ、そして、RAMデータレジスタ613〜619は、同時にユーザデータをそれぞれ対応するメモリバンク621〜627にロードさせる。各RAMデータレジスタ613、615、617、619は、通常、1ページのデータを格納又はプログラミングする容量を有している。
【0024】
フラッシュメモリコントローラ604がホストシステム601から情報を受け取ると、ホストインタフェース回路605は、この情報をRAMデータバッファ607の待ち行列に入れる(queue)。RAMデータバッファ607が所定のデータ量によって満たされたとき、メモリインタフェース回路609は、RAMデータバッファ607からのデータを、フラッシュメモリユニット602内の複数のRAMデータレジスタ613、615、617、619のうちの選択されたRAMデータレジスタに書き込む処理を開始する。図6に示す4バンクのフラッシュメモリユニット602では、RAMデータバッファ607は、通常、4ページのデータを格納する。最も効率的な設計では、選択されるRAMデータレジスタの数は、入力データの仮想論理ブロックの数に等しい。データバス611は、RAMデータバッファ607からRAMデータレジスタ613、615、617、619にデータを供給するパラレルバス構造を有している。RAMデータバッファ607及びRAMデータレジスタ613、615、617、619は、ランダムアクセスメモリ構造を有しているので、これらの構造間の読出及び書込時間は極めて速い。選択されたRAMデータレジスタ613〜619が満たされ後、個々のRAMデータレジスタ613〜619は、同時に、それぞれのメモリバンク621〜627内のフラッシュメモリ領域へのデータの書込を開始する。4バンクシステムにおいては、プログラミング時間は、従来のフラッシュメモリユニットにおいて必要とされる時間の約1/4に短縮される。同様に、10バンクシステムにおいては、プログラミング時間は、従来のフラッシュメモリユニットにおいて必要とされる時間の約1/10に短縮される。したがって、マルチバンクシステムは、従来のフラッシュメモリユニットよりも、ユーザデータをフラッシュメモリユニットに同時にプログラミングする際に係わるRAMデータレジスタの数に等しい係数倍速い。
【0025】
RAMデータバッファ607からRAMデータレジスタ613〜619への転送及びプログラミング時間は、フラッシュメモリセルへのプログラミング時間に比べれば無視できるが、最新設計では、RAMデータバッファ607からRAMデータレジスタ613〜619にユーザデータを書き込むために費やされる時間を実質的に短縮することができる。図7は、複数のメモリバンク702、704、706、708を備えるメモリユニットの構成を示している。なお、この実施の形態の特徴は、個々のメモリバンク702〜708にそれぞれ割り当てられた二重RAMデータレジスタ(dual RAM Data Registers)710・720、712・722、714・724、716・726が存在する点である。各メモリバンク702〜708は、それぞれ主RAMデータレジスタ710、712、714、716と、補助RAMデータレジスタ720、722、724、726とを備える。この実施の形態では、RAMデータバッファ730は、それぞれのメモリバンク702、704、706、708のフラッシュメモリセルに記憶するデータを、4つのそれぞれの主RAMデータレジスタ710、712、714、716にロードさせる。また、比較のために、入力ユーザデータの合計4つの仮想論理ブロックがあり、各VLBは、ユーザデータの32個の論理ブロックからなり、32個の論理ブロックのユーザデータは、4つのメモリバンク702、704、706、708に亘って分散されて格納されるものとする。したがって、各メモリバンク702、704、706、708は、1つの仮想論理ブロック、すなわち32個の論理ブロックのデータを受け取り、これらは、各ページに関連するオーバヘッドとともに、1ページに同時にプログラミングされる。この処理は、32サイクルに亘って繰り返される。
【0026】
主RAMデータレジスタ710、712、714、716と、補助RAMデータレジスタ720、722、724、726とを交互に使用することにより、RAMデータバッファ730からRAMデータレジスタ710〜726への書込における時間遅延は、最初の4ページのデータを4つのそれぞれのRAMデータレジスタに書き込む最初のサイクルにおいてのみ生じる。それぞれのメモリバンク702〜708のフラッシュメモリにプログラミングする時間は、1ページのデータをRAMデータレジスタにローディングさせる時間よりも遙かに長い。したがって、主RAMデータレジスタ710〜716が、それぞれのページのデータを各メモリバンク702〜708の対応するフラッシュメモリセルにプログラミングしている間に、RAMデータバッファ730は、次の4ページのデータを4つの補助RAMデータレジスタ720〜726にロードさせることができる。この処理は、フラッシュメモリセルがそれぞれの主RAMデータレジスタ710〜716によってプログラミングされている間に行われるので、補助RAMデータレジスタ720〜726へのデータの書込による実際の遅延は生じない。主RAMデータレジスタ710〜716によるそれぞれのページのデータの各メモリバンク702〜708のフラッシュメモリセルへのローディングが完了したとき、補助RAMデータレジスタ720〜726は、それぞれのページのデータの対応するメモリバンク702〜708のフラッシュメモリセルへのローディングを直ちに開始する。補助RAMデータレジスタ720〜726からそれぞれの物理データブロックへのプログラミング中に、RAMデータバッファ730は、同時に、次のサイクルのデータを主RAMデータレジスタ710〜716にロードさせることができる。一方の組のRAMデータレジスタにデータをロードするのと同時に、他方の組のRAMデータレジスタが、選択されたフラッシュメモリセルをプログラミングするこの処理は、選択されたデータがフラッシュメモリセルにロードされるまで繰り返される。上述のように、RAMデータバッファ730からそれぞれの主RAMデータレジスタ710〜716へのデータのローディングによる遅延は、最初のサイクルにおいてのみ生じる。
【0027】
各RAMデータレジスタが、1論理ブロックのユーザデータに略等しい1ページのデータの容量を有しているとすると、Nを本発明に基づくプログラミング動作において使用されるメモリバンクの総数とし、pをロードするページの総数とし、tを1ページのデータを1つのRAMデータレジスタ又はRAMデータバッファにロードする時間とし、Tを1ページのデータをフラッシュメモリにプログラミングするために必要な時間として、図2に示す従来のプログラミング速度と、本発明に基づくメモリバンク毎に1つのRAMデータレジスタを有する複数のメモリバンク(図6)のプログラミング速度と、本発明に基づく二重RAMデータレジスタを有する複数のメモリバンクにおけるプログラミング速度との関係は、以下のようになる。
総プログラミング時間(ProgTime)
A.図2に示す従来のフラッシュメモリシステム
ProgTime=p(t+T)
B.図6に示すマルチバンクフラッシュメモリシステム
ProgTime=p(t+T/N)
C.図7に示す二重RAMフラッシュメモリシステム
ProgTime=Nt+p(T/N)
この表のプログラミング時間は、マルチバンクフラッシュメモリシステムのデータバス611、740が、従来のフラッシュメモリユニットのデータバス230と同じ速度でデータを搬送するものとして算出されたものである。本発明に基づくデータバス611、740が、パラレル構成によって、全ての主RAMデータレジスタ710〜716を同時にプログラミングできる場合、上述の式は、若干変更される。
【0028】
この説明からわかるように、図6に示す構成では、フラッシュメモリユニット毎にN個のメモリバンクを用いることにより、総プログラミング速度は、従来のフラッシュメモリシステムの場合に比べて、N倍に向上する。このため、メモリバンクの数は多ければ多いほどよいかのように見える。実際、マルチバンクフラッシュメモリユニットに組み込まれるメモリバンクの数については、理論上の制限はないが、特定の用途に基づく動作パラメータにより、通常、効率的に使用できるメモリバンクの数は、現実的な数に制限される。
【0029】
従来の技術に基づくマルチバンクフラッシュメモリユニットは、図8に示すインタリーブ処理によってプログラミングされていた。以下では、説明のために、各VLB803、804、805、806が、4つの物理データブロックにおいて32個のそれぞれの論理ブロックを有するものとする。更に、説明のために、各RAMデータレジスタ840〜846は、1サイクル毎に、1論理ブロックのユーザデータに対応した1ページのユーザデータをプログラミングするものとする。4つの連続したVLBのユーザデータは、128個の論理ブロック810〜826のデータを含み、これらの論理ブロック810〜826は、アドレス、あるいは入力ユーザデータのセット800における論理ブロックの総数に対して計ったオフセット番号によって表すことができる。例えば、第4の仮想論理ブロック806内の第3の論理ブロック825は、VLBAが24、オフセットが2を表すアドレス24:2によって表すことができ、あるいは単に入力ユーザデータのセット800における128個の全ての論理ブロックに対して計った総オフセット番号98によって表すことができる。入力ユーザデータのセット800を構成する4つの連続したVLB803、804、805、806は、フラッシュメモリコントローラ604(図6)によって処理され、実質的に1つの連続した入力データのスタックを形成している。
【0030】
このような従来のマルチバンク構造にデータが格納されるとき、インタリーブ処理によって、1つの仮想論理ブロックのデータが複数の物理データブロックに分割される。以下、図8を参照して、この処理を説明する。同じ仮想論理ブロック803内の連続した論理ブロック810、811、812、813は、データ格納のために、RAMデータレジスタ840、842、844、846に連続してロードされる。第1のサイクルにおいて、アドレスが21:0の論理ブロック810が、第1のRAMデータレジスタ840にロードされ、アドレスが21:1の論理ブロック811が、第2のRAMデータレジスタ842にロードされ、アドレスが21:2の論理ブロック812が、第3のRAMデータレジスタ844にロードされ、アドレスが21:3の論理ブロック813が、第4のRAMデータレジスタ846にロードされる。そして、4つのRAMデータレジスタ840〜846の内容は、それぞれのメモリバンク832、834、836、838内の4つの独立した異なる物理データブロック850、852、854、856の第1の物理ページ858、861、864、870に同時にプログラミングされる。したがって、このインタリーブ処理によってデータを格納することにより、1つの仮想論理ブロックのデータは、4つの独立したメモリバンク832、834、836、838内に設けられた4つの独立した物理データブロック850、852、854、856に亘って断片化(fragment)される。データを読み出すときには、この逆の処理によって、データを正確に再構築することができる。しかしながら、逆インタリーブ処理を用いない場合、ユーザデータの再構築に問題が生じることになる。LBAとPBAとを関連付ける詳細な関連付けフィールドによって、ユーザデータを再構築することができるが、結果としてメモリを消費し、この選択肢は、ほとんど実行不可能である。
【0031】
インタリーブ処理は、ホストの動作の一部として行われるので、標準の、すなわちシングルバンクフラッシュメモリユニットと連携して動作するように設計されたホストは、1つのVLBを1つのVPBに格納し、LBAとPBA間に一対一の関係を確立したときだけ、ユーザデータのファイルを再構築することができる。したがって、従来のホストは、断片化、すなわちインタリーブ方式により、データを格納した複数のメモリバンクからはデータを読み出すことはできない。すなわち、システムは、単に互換性を有していない。この問題は、理論的には、図8に示すように、4つの入力仮想論理ブロック803〜806のデータを格納するのに十分な容量を有するRAMデータバッファ830を備えるマルチバンクフラッシュメモリスティックを設計し、このマルチバンクフラッシュメモリスティック内においてインタリーブ処理を透過的に行うことにより、解決することができる。この場合、ホストは、単に、データをフラッシュメモリシステムのRAMデータバッファに連続してロードさせる。フラッシュメモリシステムがどのようにデータを処理するかは、ホストに対して透過的になり、したがって、無関係となる。しかしながら、明らかな欠点は、RAMデータバッファとして使用するために、多くのメモリ容量を確保しなくてはならないことである。同様に、上述の問題は、フラッシュメモリシステム内の多くのメモリ容量をRAM空間マネージャに割り当てることによって、解決することができる。全てのLBAが全てのPBAに関連付けられている場合、断片化は、データの再構築の妨げとはならない。しかしながら、貴重なメモリの多くの容量がフラッシュメモリシステム内のランダムアクセスメモリに割り当てられ、フラッシュメモリ自体の実容量が低減される。これらの解決方法のいずれも、様々なホストに互換性を有するようにフラッシュメモリシステムを設計する際の問題を解決するが、フラッシュメモリの用途には余り役に立たない。
【0032】
そこで、速度の利点がある速いマルチバンクフラッシュメモリユニットを備えるとともに、従来のシングルバンクメモリスティック用に設計された従来のホストに対して下位互換性を有するマルチバンクフラッシュメモリスティックが必要とされている。更に、マルチバンクフラッシュメモリユニットの速度の利点を利用できるとともに、後に従来のホストによってデータを読み出すことができるような配置で、データを格納できるホストが必要とされている。更に、データを格納するためにデータを供給するホストの能力及びフォーマットに基づいて、適切な配置でデータを格納するフラッシュメモリシステムを構成するユーザフレンドリな手法(User friendly means)が必要とされている。更に、従来のシングルバンクフラッシュメモリスティック及びマルチバンクフラッシュメモリスティックの両方に対して互換性を有するフォーマット又はプロトコルで、データを書き込み及び読み出すホストを構成するユーザフレンドリな手法が必要とされている。更に、互換性を達成するとともに、RAMデータバッファに費やされるメモリ容量を最小にする手法が必要とされている。更に、多種多様なホストに対して互換性を達成するとともに、RAM空間マネージャに費やされるメモリ容量を最小にする手法が必要とされている。
【0033】
【課題を解決するための手段】
本発明は、入力ユーザデータをマルチバンクフラッシュメモリシステムに格納するプログラミング方法及びフラッシュメモリシステムを提供する。このマルチバンクフラッシュメモリシステムは、速度の利点があるマルチバンクユニットを備えるとともに、仮想論理ブロックのデータを断片化せずに格納し、これにより、従来のシングルメモリバンクスティックに対応して設計された従来のソフトウェアに対する下位互換性を維持している。更に、本発明は、処理速度の点で優れたマルチバンクユニットの速度の利点を利用するとともに、従来のホストによってアクセス可能な配置でデータを格納するプログラミング方法及びフラッシュメモリシステムを提供する。更に、本発明は、格納のためにデータを供給するホストの能力及びフォーマットに応じて、適切にデータを格納するマルチバンクフラッシュメモリシステムを構成するプログラミング方法及びフラッシュメモリシステムを提供する。更に、本発明は、従来のシングルバンクメモリスティック及びマルチバンクフラッシュメモリスティックの両方に互換性を有するフォーマット又はプロトコルでデータを書き込み又は読み出す高性能ホストを構成するプログラミング方法及びフラッシュメモリシステムを提供する。更に、本発明は、RAMデータバッファによって占有されるメモリ量を最小化するとともに、従来型ホスト及び高性能ホストの両方に対する互換性を実現するプログラミング方法及びフラッシュメモリシステムを提供する。更に、本発明は、RAM空間マネージャによって占有されるメモリ量を最小化するとともに、従来型ホスト及び高性能ホストの両方に対する互換性を実現するプログラミング方法及びフラッシュメモリシステムを提供する。
【0034】
本発明の一実施の形態では、本発明に基づくフラッシュメモリシステムは、フラッシュメモリユニットと、フラッシュメモリユニットに接続されたコントローラとを備える。コントローラは、RAMデータバッファを備える。フラッシュメモリユニットは、個別の、独立してアドレス可能な複数のメモリバンクを備える。各メモリバンクは、独立してアドレス可能であり、独立してプログラム可能な不揮発性の複数のデータ記憶領域と、少なくとも1つのRAMデータレジスタとを備える。複数のメモリバンク内のそれぞれのデータ記憶領域は、複数のページからなる複数の物理データブロックを含む。コントローラは、スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードしてホストに送信する。当該フラッシュメモリシステムは、ホストに送信したハンドシェイクデータパケットに対する応答であるハンドシェイク応答をホストから受信しない場合、入力ユーザデータを第1のデータ記憶モードに従って記憶し、ハンドシェイク応答を受信した場合、入力ユーザデータを上記第2のデータ記憶モードに従って記憶する。第1のデータ記憶モードでは、1プログラミングサイクルで、1ページにプログラミングするデータを、1つのメモリバンクのRAMデータレジスタに記憶し、第2のデータ記憶モードでは、1プログラミングサイクルで、複数のページに記憶するデータを、RAMデータバッファから複数のメモリバンクのRAMデータレジスタに記憶する。
【0035】
本発明の一実施の形態では、本発明に基づくフラッシュメモリシステムは、個別の、独立してアドレス可能な複数のメモリバンクと、RAMデータレジスタと、スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードするロード手段と、ハンドシェイクデータパケットをホストに送信する送信手段と、ホストからハンドシェイク応答を受信したとき、RAMデータレジスタからの複数のデータを、インタリーブして、複数のメモリバンクに同時に記憶する手段と、ホストからハンドシェイク応答を受信しないとき、データを、インタリーブしないで、複数のメモリバンクに順次記憶する手段とを備える。また、本発明に基づくフラッシュメモリシステムは、個別の、独立してアドレス可能な複数のメモリバンクと、RAMデータレジスタと、スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードするロード手段と、ハンドシェイクデータパケットをホストに送信する手段と、ホストからハンドシェイク応答を受信しないとき、データを、インタリーブしないで、複数のメモリバンクに順次記憶する記憶手段とを備える。ホストが高性能フラッシュメモリ動作が可能なホストであるとき、記億手段は、複数のページのデータを、複数のメモリバンクに同時にプログラムする。
【0036】
本発明の一実施の形態では、本発明に基づくプログラミング方法は、スラッシュメモリシステムは、販売業者固有の値と、フラッシュメモリユニットと、フラッシュメモリユニットに接続されたコントローラとを備え、コントローラは、メモリインタフェース回路に接続されたRAMデータバッファを備え、フラッシュメモリユニットは、個別の、独立してアドレス可能な複数のメモリバンクを備え、各メモリバンクは、RAMデータレジスタと、独立してアドレス可能であり、独立してプログラム可能な複数の物理データブロックとを備え、各物理データブロックは、独立してアドレス可能であり、独立してプログラム可能な複数のページを備え、ハンドシェイクデータエンベロープを生成するステップと、フラッシュメモリシステム内の販売業者固有の値を、ハンドシェイクデータエンベロープにロードするステップと、フラッシュメモリシステムからホストにハンドシェイクデータエンベロープを送信するステップと、フラッシュメモリシステムを第1のデータ記憶モードにディフォルト設定するステップと、入力データをフラッシュメモリシステムに、第1のデータ記憶モード又は第2のデータ記憶モードに従ってプログラミングするステップとを有する。フラッシュメモリシステムは、ホストに送信したハンドシェイクデータパケットに対する応答であるハンドシェイク応答をホストから受信しない場合、データ記憶のディフォルトモードである第1のデータ記憶モードで動作し、ハンドシェイク応答を受信した場合、第2のデータ記憶モードで動作する。第1のデータ記憶モードは、プログラミングサイクル毎に、1ページのユーザデータをプログラミングするモードである。一方、第2のデータ記憶モードは、各プログラムサイクル毎に、複数のページのユーザデータを複数のメモリバンクに同時にプログラミングするモードである。第2のデータ記憶モードでは、プログラミングは、インタリーブなしで行われ、すなわち、同一の仮想論理ブロック内の連続した論理ブロックアドレスのデータは、同一の物理データブロック内の連続した物理ブロックアドレスに格納される。
【0037】
本発明の一実施の形態では、本発明に基づくプログラミング方法は、フラッシュメモリユニットを上記ホストに接続するステップと、フラッシュメモリシステムによって送信されてきたハンドシェイクデータパケットを調べるステップとを有する。フラッシュメモリシステムは、販売業者固有の値に応じて、データ記憶のディフォルトモードである第1のデータ記憶モードと、第2のデータ記憶モードとで選択的に動作する。このプログラミング方法は、ハンドシェイクデータパケットに、販売業者固有の値が含まれていないとき、ホストの動作モードを標準モードに設定し、フラッシュメモリシステムは、第1のデータ記憶モードに従ってデータを記憶するステップと、ハンドシェイクデータパケットに、販売業者固有の値が含まれているとき、ホストの動作モードを高性能モードに設定し、フラッシュメモリシステムは、第2のデータ記憶モードに従ってデータを記憶するステップとを更に有する。第1のデータ記憶モードは、プログラミングサイクル毎に、1ページのユーザデータをプログラミングするモードである。一方、第2のデータ記憶モードは、プログラムサイクル毎に、複数のページのデータを複数のメモリバンクに同時にプログラミングするモードである。標準モードでは、ホストは、1つの仮想論理ブロックからのデータをプログラミングサイクル毎に送信し、高性能モードでは、ホストは、複数の仮想論理ブロックからのデータをプログラミングサイクル毎に送信する。第2のデータ記憶モードでは、プログラミングは、インタリーブなしで行われ、すなわち、同一の仮想論理ブロック内の連続した論理ブロックアドレスのデータは、同一の物理データブロック内の連続した物理ブロックアドレスに格納される。連続したプログラミングサイクルは、主RAMデータレジスタと補助RAMデータレジスタを交互に用いてデータを格納する。
【0038】
【発明の実施の形態】
以下、本発明の好ましい実施の実施の形態について、図面に示す具体例を参照して詳細に説明する。以下では、本発明を好ましい実施の形態に基づいて説明するが、本発明は、これらの実施の形態に限定されるものではない。すなわち、本発明は、請求の範囲によって定義された本発明の思想及び範囲に含まれる変形例、変更例及び等価物の全てを包含する。例えば、以下の説明では、データの集合を、構成要素である論理ブロックのデータからなる仮想論理ブロックのデータと呼ぶことができる。これらの用語を用いた説明は、本発明を、現在当該分野で一般的に使用されている特定のユニットのデータに限定するものではなく、当業者に馴染みの用語によって、データをグループ化及びサブグループ化する機能を単に示すものである。これは、物理メモリ、例えば物理データブロック及び物理データブロック内の構成要素であるページの特定のグループ化についても同様であり、このグループ化は、アドレス可能なメモリ領域がより小さなメモリ領域によってどのように構成されるかを示す一例にすぎない。更に、以下の説明では、本発明をより明瞭にするために、様々な特定の詳細について述べる。しかしながら、本発明は、これらの詳細によらず実施できることは、当業者にとって明らかである。一方、本発明の特徴を明瞭にするために、周知の方法、処理、部品、回路については、詳細には説明しない。
【0039】
以下の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する手続(procedure)、論理ブロック(logic block)、処理(processing)及び動作の抽象的表現(symbolic representation)として表される。これらの説明及び表記は、データ処理技術分野の技術者が当業者に技術内容を最も効率的に伝えるために用いる手法である。手続、論理ブロック、処理等は、ここでも、一般的にも、所望の結果を導く一貫したステップ又はインストラクションのシーケンスであると考えられる。これらのステップは、物理量の物理的操作を必要とするステップである。コンピュータ等の装置、部品、構造又は動作を説明するとき、主に共通して使用するとき、これらの信号をビット(bit)、ビットストリーム(bit stream)、エンベロープ(envelope)、パケット(packet)、レジスタ(register)、フィールド(field)、バイト(byte)、値(value)、要素(element)、記号(symbol)、文字(character)、用語(term)、数字(number)等として表すことが便利である。
【0040】
なお、電気部品の説明において、用語「接続(connected)された」、「機能的に接続された(operatively connected)」、「電気的に接続された(electrically connected)」等は、2つの部品間の電気経路を示している。なお、これらの用語は、2つの元の部品間に更なる部品が存在することを否定するものではなく、更なる部品が、2つの元の部品間の信号又はデータ伝送を中断し又は影響する可能性がある場合であっても、同様である。用語「直接接続された」等のみが、2つの元の部品間に電気導体以外の更なる部品が挿入されないことを表している。更に、伝送するデータは、少なくとも3つの異なる要素、すなわち、データと、多くの場合論理ブロック又は仮想論理ブロックと呼ばれるデータを含むエンベロープと、アドレスとを含んでいる。アドレス、例えばLBAは、データの集合又はデータが格納されているエンベロープ(論理ブロック)を識別するものとみなすことができる。実アドレスは、データパケット内のビットとして存在してもよく、又は受信プロセッサが、受信データパケットを連続してカウントすることによって発生されてもよい。この場合、アドレスは、実体(real entity)としては存在しない。論理ブロック自体は、データの集合又はデータの集合を含むエンベロープとみなすことができる。連続した論理ブロックアドレスは、データの共通エンベロープ(仮想論理ブロック)又は共通アドレス(仮想論理ブロックアドレス)に属するものとみなされる。用語「連続した(consecutive)」は、それ自体で、連続したアドレス(例えば、連続したLBA)、連続したデータエンベロープ(例えば、連続した論理ブロック)、又は連続したアドレスによって定義される連続したエンベロープ内の連続したデータの集合を表すこともある。例えばここに示すように、データ、特に伝送中のデータの短命性(ephemeral nature)のために、多くの場合、データ、データエンベロープ及びデータ/エンベロープアドレス間の関係を記述する「正しい(right)」方法が1つのみではない場合がある。ここに説明する処理又は構造が最も明瞭なるように、慎重に用語を選択しているが、データ、エンベロープ及びこれらのそれぞれのアドレスの関係、処理及び格納に関する説明は、常に、その説明が行われている文脈に照らし合わせて理解されなければならない。
【0041】
本発明の一目的は、一単位の仮想論理ブロックのデータが一単位の物理データブロック内に格納され、連続した論理ブロックアドレスのデータが連続した物理ブロックアドレスに格納されて、これにより、従来の技術によってデータを読み出すために必要な連続した一対一の関係が維持されるように、マルチバンクフラッシュメモリカードを同時にプログラミングする方法を提供することである。この高性能プログラミング方法は、従来の技術に基づいたデータ処理を説明した図8を用いて説明することができる。本発明においては、4つの入力仮想論理ブロック803、804、805、806のデータは、格納又はプログラミング処理中には、断片化されない。格納される前に同じ仮想論理ブロック内で連続してアドレスが付されていた論理ブロックのデータは、物理メモリに格納されるときに、連続した物理アドレスを維持する。例えば、VLBAが21の仮想論理ブロック803を構成する連続してアドレスが付された論理ブロック810、811・・・814は、同じ物理データブロック850内の連続して物理ブロックアドレスが付けられた物理ページ858、859・・・860にそれぞれ格納される。物理メモリ内において、非断片化格納(non-fragmented storage)を行うためには、データをRAMデータバッファ830から複数のRAMデータレジスタ840〜846に供給するときに、データをインタリーブすることはできない。マルチバンクメモリシステム内で非断片化格納を行うことができる処理は、プログラミングサイクル毎に、各VLBからの1つの論理ブロックを保存する処理を含む。ある所定のサイクルにおいてプログラミングされる複数の論理ブロックアドレスは、同一である。次のプログラミングステップでは、処理は、連続してアドレスが付された論理ブロック間を移動する。共通のVLBAによって定義される論理ブロックアドレスのデータは、常に、同じRAMデータレジスタに供給され、共通の物理データブロックに格納され、以下に説明するように、連続した論理ブロックアドレスからのデータは、連続した物理ブロックアドレスに格納される。
【0042】
第1のサイクルにおいて、第1のVLB803の第1の論理ブロック810からのデータは、第1のRAMデータレジスタ840にロードされる。第2のVLB804の第1の論理ブロック815は、第2のRAMデータレジスタ842にロードされる。第3のVLB805の第1の論理ブロック819は、第3のRAMデータレジスタ844にロードされ、第4のVLB806の第1の論理ブロック823は、第4のRAMデータレジスタ846にロードされる。そして、4つのRAMデータレジスタ840〜846は、それぞれの内容をそれぞれ物理ページ858、861、864、870に同時にプログラミングする。
【0043】
第2のサイクルにおいては、4つの仮想論理ブロック803、804、805、806のそれぞれの第2の論理ブロック811、816、820、824からのデータは、それぞれ4つのRAMデータレジスタ840〜846にロードされ、そして、RAMデータレジスタ840〜846は、それぞれの内容をそれぞれ物理ページ859、862、865、871に同時にプログラミングする。
【0044】
この処理は、4つの仮想論理ブロック803、804、805、806のそれぞれの最後の論理ブロック814、818、822、826からのデータが、4つのメモリバンク832、834、836、838に亘って分散されている4つの物理データブロック850、852、854、856のそれぞれの最後の物理ページ860、863、866、872にプログラミングされるまで、繰り返される。この処理により、各VLB内の連続した論理ブロックの元の配置(original orientation)は、物理データブロックの連続した物理ページにおいても維持される。
【0045】
このデータ配置を達成する一方法を図9に示すフローチャートを用いて説明する。なお、このフローチャートは、上述の目的を達成するためのイベントのシーケンスの一例を示しているにすぎない。当業者は、ここに示すステップと異なる特定のステップによって、機能的には同一であるアルゴリズムを想到することができる。したがって、図9に示すフローチャートは、本発明に基づくデータ記憶方法を限定するものではない。ホストが、記憶する入力データを識別したとき、処理は、データのファイルの第1の仮想論理ブロックから開始する。ステップ902において、ホストのプロセッサは、入力データに含まれる最小の論理ブロックアドレスを識別する。このアドレスが、選択された論理ブロックアドレス(select Logical Block Address)となる。ステップ904において、フラッシュメモリシステムのコントローラは、現在の仮想論理ブロック内の現在の論理ブロックからのデータを、RANデータバッファの第1の「ページ」に記憶する。ステップ906において、仮想論理ブロックアドレスが1インクリメントされる(ここでは、説明を簡単にするために、入力データのファイルを構成する仮想論理ブロックは、連続した仮想論理ブロックアドレスを有するものとするが、以下の説明により、当業者は、本発明のアルゴリズムを用いて、連続しない仮想論理ブロックアドレスを有するユーザデータをどのように格納するかについても容易に知ることができる。)。ステップ908において、RAMデータバッファ内の「ページ」が1インクリメントされる。ステップ907において、プロセッサは、LBAオフセットをVLBAに連結して、選択されたLBA(select LBA)を形成する。ステップ910において、現在のLBA及び現在のVLBAに基づいて定義されるデータが、RAMデータバッファの現在のページに記憶される。ステップ912において、プロセッサは、現在のVLBAが入力データファイル内の最後のVLBAであるか否かを判定する。現在のVLBAが最後のVLBAではない場合、プロセッサは、ステップ906に戻り、ここから上述の手順を繰り返す。一方、現在のVLBAが入力データファイルの最後のVLBAである場合、処理は、ステップ914に進み、RAMデータバッファ内の連続したページのデータが、連続したRAMデータレジスタに記憶される。ステップ916において、コントローラは、現在のデータファイルを格納する仮想物理ブロックアドレスを既に選択しているか否かを判定する。VPBAが選択されていない場合、コントローラは、ステップ918において、空いているVPBAを選択する。一方、コントローラが空いているVPBAを既に選択しているとき、ステップ920において、コントローラは、現在のVLBオフセットを現在のVPBAに連結して、現在のPBAを形成する。ステップ922において、RAMデータレジスタは、それぞれの内容を、現在の物理ブロックアドレスによって定義されるそれぞれのメモリバンク内のページにプログラミングする。ステップ924においては、コントローラは、現在のLBAが入力データファイルの最後のLBAであるか否かを判定する。最後の論理ブロックのデータが格納された場合、処理はステップ932に進み、終了する。一方、格納されたデータが、入力データファイルの最後のLBAでない場合、プロセッサは、ステップ926において、LBAをインクリメントし、ステップ928において、VLBAを、入力データファイルの最初のVLBAにリセットし、ステップ930において、RAMデータバッファ内の最初のページをリセットする。そして、プロセッサは、ステップ907に戻り、データ記憶処理を継続する。
【0046】
ここに説明する高性能データ記憶アルゴリズムは、データ記憶の各サイクルにおいて、入力ユーザデータのファイル全体に亘る複数の仮想論理ブロックからデータを取り出すので、上述のような処理が、図6に示すフラッシュメモリシステム600だけで行われる場合、RAMデータバッファ607、830は、入力ユーザデータ800のファイル全体を保持するのに十分な容量を有している必要がある。したがって、本発明の好ましい実施の形態において、データの論理ブロックは、プログラミングサイクル毎に、ホストシステム601によって選択され、RAMデータバッファ607に供給される。これにより、RAMデータバッファ607のサイズを実質的に小さくすることができ、フラッシュメモリシステム600内の貴重なメモリ空間を解放することができる。好ましい実施の形態において、RAMデータバッファ607は、フラッシュメモリシステム600内のRAMデータレジスタ613〜619の全メモリ容量に等しいメモリ容量を有している。フラッシュメモリシステム600内のランダムアクセスメモリの容量は、フラッシュメモリシステム600から図3に示すRAM空間マネージャ370を削除し、図10に示すように、関連付けデータ1006をホスト10002内に格納することにより、更に低減することができる。
【0047】
本発明に基づく高性能非インタリーブデータ記憶処理(high-performance non interleaved data storage process)では、従来の「シングルバンク」フラッシュメモリシステム又は従来のホストとの互換性に問題が残る。この本発明では、プログラミングサイクル毎に、複数のVLBから論理ブロックのデータを選択する。一方、従来のフラッシュメモリシステムは、1サイクル毎に、1つの論理ブロックを保存し、論理ブロックを連続して選択している。すなわち、第1のVLBの全てのデータが格納されるまでは、第2のVLBのデータの格納は開始されない。
【0048】
したがって、従来のホストを用いても、高性能ホストを用いても、物理メモリ内に格納されるデータの配置は類似又は同一であるが、両方の場合におけるデータを格納する処理は、根本的に異なる。従来のホストを用いた例では、順次受信された論理ブロックのデータは、同じ物理データブロック内の連続した物理ブロックアドレスにプログラミングされる。一方、高性能ホストを用いた実施の形態では、順次受信された論理ブロックのデータは、独立したメモリバンク間に分散された独立した物理データブロックに同時にプログラミングされる。フラッシュメモリシステムが、従来のホストからの入力データを、上述した本発明に基づく高性能プログラミング方法に基づいて格納する場合、従来のホストから供給されるデータは、インタリーブ処理の場合と同様に断片化されてしまい、本発明の本来の目的が達成できなくなる。フラッシュメモリシステムは、従来のホストと高性能ホストの異なるデータアルゴリズムの両方に適応しなければならないので、フラッシュメモリシステムは、接続されたホストが従来のホストであるか、高性能ホストであるかを判定しなければならない。この判定の後、フラッシュメモリシステムは、接続されたホストに適した方法に基づいてデータを記憶するように、それ自体を設定する(configure)ことができなければならない。本発明では、電源投入時に、ハンドシェイク処理及び設定処理が実行される。ハンドシェイク処理中に、フラッシュメモリシステムとホスト間で情報が交換される。図11は、スタートアップ時にフラッシュメモリシステムからホストに転送されるデータのエンベロープ(以下、データエンベロープという。)1100を示している。データエンベロープ1100は、通常、512バイトからなり、ヘッダ1102と、通常スタートアップ時に転送される従来のデータ1104と、大きな未使用領域1106とを含んでいる。従来のホストがスタートアップ時にデータエンベロープ1100を受信したとき、従来のホストは、データエンベロープ1100の未使用領域1106を処理せず、あるいは未使用領域1106に何が保存されているかを感知しない。したがって、本発明に基づくマルチバンクメモリシステムは、販売業者固有の値(Vendor Unique Value)をデータエンベロープ1100の未使用領域1106に挿入し、この販売業者固有の値は、スタートアップ時にホストに送信される。スタートアップには、3つのシナリオがある。
【0049】
第1のシナリオにおいては、従来の「メモリスティック」又はフラッシュメモリシステムは、スタートアップ時に、ハンドシェイクエンベロープを高性能ホストに送信する。従来のメモリスティックは、販売業者固有の値を有しておらず、また、そのような値をデータエンベロープ1100の未使用領域1106に書き込む機能も有していない。高性能ホストは、ハンドシェイクエンベロープであるデータエンベロープ1100を受信したとき、データエンベロープ1100の未使用領域1106を調べ、メモリスティックが従来のメモリスティックであるかを判定する。そして、高性能ホストは、それ自体を、連続した論理ブロックアドレスからのデータを送信する従来の構成にディフォルト設定する。
【0050】
第2のシナリオにおいては、高性能メモリスティックは、スタートアップ時に、販売業者固有の値をデータエンベロープ1100の未使用領域1106に書き込み、このパケットを従来のホストに送信する。このホストは、高性能ホストではないので、従来のホストは、販売業者固有の値を読み出し、又は処理することができず、それ自体を高性能ホストとして識別することによる応答を行わない。高性能メモリスティックのディフォルト状態は、標準モードであり、この標準モードでは、連続した論理ブロックアドレスのデータは、連続した物理ブロックアドレスに格納される。従来のホストは、ハンドシェイク応答において、販売業者固有の値に対する肯定応答を行わないので、高性能メモリスティックは、ディフォルトの標準モードで動作し、独立した複数のメモリバンクに対する同時のプログラミングは行われない。
【0051】
第3のシナリオにおいては、高性能メモリスティックは、スタートアップ時に、販売業者固有の値をデータエンベロープ1100の未使用領域1106に書き込み、このパケットを高性能ホストに送信する。高性能ホストは、パケットを受信したとき、データエンベロープ1100の未使用領域1106に書き込まれた販売業者固有の値を読み出し、高性能メモリスティックに対して、それ自体が高性能ホストであることを示すハンドシェイク応答を送信する。また、高性能ホストは、それ自体を、複数のVLBからのデータをプログラミングサイクル毎に送信するように設定する。高性能メモリスティックは、高性能ホストからの適切な応答を受信したとき、それ自体を、本発明に基づいて、入力データを上述したように連続したメモリバンクに格納するように設定する。
【0052】
他の実施の形態において、高性能フラッシュメモリシステム内のRAMデータバッファ607は、入力ユーザデータのファイル全体を格納するのに十分な容量を有する。この実施の形態の不利な点は、RAMデータバッファ607によって多くのメモリ容量が消費されることである。この実施の形態の利点は、従来のホストからユーザデータのファイル全体をダウンロードして、ユーザデータをマルチバンクに同時に格納することができ、それによって、従来のホストがマルチバンクフラッシュメモリシステムの速度の利点を利用できることである。
【0053】
以上、本発明の構成及び動作の原理を明瞭に説明するために、本発明の特定の具体例を多くの特定の詳細とともに記述した。ここで説明した特定の具体例及びその詳細は、添付の請求の範囲を制限するものではない。本発明の思想及び範囲から逸脱することなく、上述した具体例を様々に変形できることは、当業者にとって明らかである。
【図面の簡単な説明】
【図1】 複数のページを有する物理データブロックのグループを示す図である。
【図2】 従来の技術に基づく、ホストに接続されたリムーバブルフラッシュメモリの構成を示す図である。
【図3】 データの関連付け及び格納に用いられる様々なレジスタ及びフィールドを示す図である。
【図4】 データの記憶中に物理アドレスと論理アドレスを関連付ける処理を説明するフローチャートである。
【図5】 データを読み出す方法を説明するフローチャートである。
【図6】 1つのRAMデータレジスタをそれぞれ有する複数のメモリバンクを備えるフラッシュメモリシステムの構成を示す図である。
【図7】 2つのRAMデータレジスタをそれぞれ有する複数のメモリバンクを備えるフラッシュメモリシステムの構成を示す図である。
【図8】 複数のメモリバンクを備えるフラッシュメモリユニットの構成を示す図である。
【図9】 本発明に基づく、高性能の複数のメモリバンク記憶アルゴリズムを実現する方法を示すフローチャートである。
【図10】 関連付けデータを有するホストを含むフラッシュメモリシステムの構成を示す図である。
【図11】 ハンドシェイクデータエンベロープのデータ構成を示す図である。
Claims (34)
- フラッシュメモリユニットと、
上記フラッシュメモリユニットに接続されたコントローラとを備え、
上記コントローラは、
RAMデータバッファを備え、
上記フラッシュメモリユニットは、
個別の、独立してアドレス可能な複数のメモリバンクを備え、
上記複数のメモリバンクのそれぞれは、
少なくとも1つのRAMデータレジスタと、
独立してアドレス可能であり、独立してプログラム可能な不揮発性の複数のデータ記憶領域とを備え、
上記複数のメモリバンク内のそれぞれのデータ記憶領域は、複数のページからなる複数の物理データブロックを含み、
上記コントローラは、スタートアップ時に、上記販売業者固有の値をハンドシェイクデータパケットにロードしてホストに送信し、
当該フラッシュメモリシステムは、上記ホストに送信したハンドシェイクデータパケットに対する応答であるハンドシェイク応答を該ホストから受信しない場合、入力ユーザデータを第1のデータ記憶モードに従って記憶し、該ハンドシェイク応答を受信した場合、入力ユーザデータを上記第2のデータ記憶モードに従って記憶し、
上記第1のデータ記憶モードでは、1プログラミングサイクルで、1ページにプログラミングするデータを、1つのメモリバンクのRAMデータレジスタに記憶し、
上記第2のデータ記憶モードでは、上記1プログラミングサイクルで、複数のページに記憶するデータを、上記RAMデータバッファから上記複数のメモリバンクのRAMデータレジスタに記憶することを特徴とするフラッシュメモリシステム。 - 上記コントローラは、
ホストインタフェース回路と、
メモリインタフェース回路とを更に備え、
上記RAMデータバッファは、上記ホストインタフェース回路と上記メモリインタフェース回路とに接続されており、上記メモリインタフェース回路は、データバスを介して、上記複数のメモリバンクのそれぞれのRAMデータレジスタに接続されており、
上記コントローラは、上記複数のメモリバンクのそれぞれに関連したRAMデータレジスタを介して、該複数のメモリバンクに亘って分散された上記複数のデータ記憶領域へのデータのプログラミングを制御することを特徴とする請求項1記載のフラッシュメモリシステム。 - 上記第2のデータ記憶モードでは、複数のRAMデータレジスタに記憶されたデータを、上記複数のページのそれぞれに同時にプログラミングすることを特徴とする請求項2記載のフラッシュメモリシステム。
- 上記RAMデータレジスタは、1つの物理ページをプログラミングするのに十分なメモリ容量を有することを特徴とする請求項3記載のフラッシュメモリシステム。
- 当該フラッシュメモリシステム内の別々のページにプログラミングする入力データの複数の論理ブロックを選択する選択手段を更に備える請求項3記載のフラッシュメモリシステム。
- 上記複数の論理ブロックを選択する選択手段は、上記ホスト内に配設されていることを特徴とする請求項5記載のフラッシュメモリシステム。
- 上記ホストは、デジタルカメラであることを特徴とする請求項6記載のフラッシュメモリシステム。
- 上記複数の論理ブロックを選択する選択手段は、当該フラッシュメモリシステム内に配設されていることを特徴とする請求項5記載のフラッシュメモリシステム。
- 上記RAMデータバッファは、入力ユーザデータのファイル全体を格納するのに十分なメモリ容量を有することを特徴とする請求項7記載のフラッシュメモリシステム。
- 上記複数のメモリバンクのそれぞれのRAMデータレジスタは、主RAMデータレジスタであり、各メモリバンクは、補助RAMデータレジスタを更に備え、
上記複数のメモリバンクのうちの第1のメモリバンク内の第1の補助RAMデータレジスタは、該第1のメモリバンク内のデータ記憶領域にデータをプログラミングし、該複数のメモリバンクのうちの第2のメモリバンク内の第2の補助RAMデータレジスタは、該第2のメモリバンク内のデータ記憶領域にデータをプログラミングすることを特徴とする請求項7記載のフラッシュメモリシステム。 - 入力データをフラッシュメモリシステムにプログラミングするプログラミング方法において、
上記フラッシュメモリシステムは、販売業者固有の値と、フラッシュメモリユニットと、該フラッシュメモリユニットに接続されたコントローラとを備え、該コントローラは、メモリインタフェース回路に接続されたRAMデータバッファを備え、該フラッシュメモリユニットは、個別の、独立してアドレス可能な複数のメモリバンクを備え、該複数のメモリバンクのそれぞれは、RAMデータレジスタと、独立してアドレス可能であり、独立してプログラム可能な複数の物理データブロックとを備え、該複数の物理データブロックのそれぞれは、独立してアドレス可能であり、独立してプログラム可能な複数のページを備え、
ハンドシェイクデータパケットを生成するステップと、
上記フラッシュメモリシステム内の販売業者固有の値を、上記ハンドシェイクデータパケットにロードするステップと、
上記フラッシュメモリシステムから上記ハンドシェイクデータパケットをホストに送信するステップと、
上記フラッシュメモリシステムを第1のデータ記憶モードにディフォルト設定するステップと、
上記入力データを上記フラッシュメモリシステムに、上記第1のデータ記憶モード又は第2のデータ記憶モードに従ってプログラミングするステップとを有し、
上記フラッシュメモリシステムは、上記ホストに送信したハンドシェイクデータパケットに対する応答であるハンドシェイク応答を該ホストから受信しない場合、データ記憶のディフォルトモードである上記第1のデータ記憶モードで動作し、該ハンドシェイク応答を受信した場合、上記第2のデータ記憶モードで動作し、
上記第1のデータ記憶モードは、プログラミングサイクル毎に、1ページのユーザデータをプログラミングするモードであり、
上記第2のデータ記憶モードは、各プログラミングサイクル毎に、複数のページのユーザデータを上記複数のメモリバンクに同時にプログラミングするモードであることを特徴とするプログラミング方法。 - 上記ホストから上記ハンドシェイク応答を受信した場合、上記フラッシュメモリシステムを上記第2のデータ記憶モードに設定するステップと、
上記入力データを上記フラッシュメモリシステムに上記第2のデータ記憶モードに従ってプログラミングするステップとを更に有する請求項11記載のプログラミング方法。 - 上記入力データをフラッシュメモリシステムに第2のデータ記憶モードに従ってプログラミングするステップは、
第1の仮想論理ブロックアドレスによって定義される第1の最初の論理ブロックのデータを、上記複数のメモリバンクのうちの第1のメモリバンク内の第1のRAMデータレジスタにロードするステップと、
第2の仮想論理ブロックアドレスによって定義される第2の最初の論理ブロックのデータを、上記複数のメモリバンクのうちの第2のメモリバンク内の第2のRAMデータレジスタにロードするステップと、
(1)上記第1のRAMデータレジスタ内の上記第1の最初の論理ブロックのデータを、上記第1のメモリバンク内の第1の物理データブロックの第1の最初のページにプログラミングする処理と、(2)上記第2のRAMデータレジスタ内の上記第2の最初の論理ブロックのデータを、上記第2のメモリバンク内の第2の物理データブロックの第2の最初のページにプログラミングする処理とを同時に実行するステップとを更に有することを特徴とする請求項12記載のプログラミング方法。 - 上記入力データをフラッシュメモリシステムに第2のデータ記憶モードに従ってプログラミングするステップは、
上記第1の仮想論理ブロックアドレスによって定義される第1の後続する論理ブロックのデータを、上記第1のメモリバンク内の上記第1のRAMデータレジスタにロードするステップと、
上記第2の仮想論理ブロックアドレスによって定義される第2の後続する論理ブロックのデータを、上記第2のメモリバンク内の上記第2のRAMデータレジスタにロードするステップと、
(1)上記第1のRAMデータレジスタ内の上記第1の後続する論理ブロックのデータを、上記第1のメモリバンク内の上記第1の物理データブロック内の第1の後続するページにプログラミングする処理と、(2)上記第2のRAMデータレジスタ内の上記第2の後続する論理ブロックのデータを、上記第2のメモリバンク内の上記第2の物理データブロック内の第2の後続するページにプログラミングする処理とを同時に実行するステップとを更に有することを特徴とする請求項13記載のプログラミング方法。 - 上記第1の最初の論理ブロックと上記第1の後続する論理ブロックは、上記第1の仮想論理ブロック内の連続した論理ブロックアドレスによって定義され、
上記第2の最初の論理ブロックと上記第2の後続する論理ブロックは、上記第2の仮想論理ブロック内の連続した論理ブロックアドレスによって定義され、
上記第1の後続する論理ブロックのデータを第1のRAMデータレジスタにロードするステップは、上記第1の最初の論理ブロックのデータを第1のRAMデータレジスタにロードするステップに連続して実行され、
上記第2の後続する論理ブロックのデータを第2のRAMデータレジスタにロードするステップは、上記第2の最初の論理ブロックのデータを第2のRAMデータレジスタにロードするステップに連続して実行され、
上記第1の最初のページと上記第1の後続するページは、上記第1の物理データブロック内の連続した物理ブロックアドレスによって定義され、
上記第2の最初のページと上記第2の後続するページは、上記第2の物理データブロック内の連続した物理ブロックアドレスによって定義されることを特徴とする請求項14記載のプログラミング方法。 - 上記フラッシュメモリシステムの複数のメモリバンク内の各物理データブロックは、同数のページを有し、各物理データブロックの各ページは、同一のページアドレス方式によってアドレス指定されることを特徴とする請求項15記載のプログラミング方法。
- 上記第1の物理データブロック内の第1の最初のページと上記第2の物理データブロック内の第2の最初のページは、同じページアドレスによって定義されることを特徴とする請求項16記載のプログラミング方法。
- 上記複数のメモリバンクのそれぞれは、同数の物理データブロックを有し、各メモリバンク内の各物理データブロックは、同一のブロックアドレス方式によってアドレス指定されることを特徴とする請求項17記載のプログラミング方法。
- 上記第1の物理データブロックと上記第2の物理データブロックは、同じ物理ブロックアドレスによって定義されることを特徴とする請求項18記載のプログラミング方法。
- 上記第1のメモリバンクのアドレスと上記第2のメモリバンクのアドレスは、連続したアドレスであることを特徴とする請求項19記載のプログラミング方法。
- 上記複数のメモリバンクのそれぞれのRAMデータレジスタは、主RAMデータレジスタであり、各メモリバンクは、補助RAMデータレジスタを更に備え、
上記入力データをフラッシュメモリシステムに第2のデータ記憶モードに従ってプログラミングするステップは、
上記第1の仮想論理ブロック内の上記第1の後続する論理ブロックのデータを、上記第1のメモリバンク内の第1の補助RAMデータレジスタにロードするステップと、
上記第2の仮想論理ブロック内の上記第2の後続する論理ブロックのデータを、上記第2のメモリバンク内の第2の補助RAMデータレジスタにロードするステップと、
(1)上記第1の補助RAMデータレジスタ内の上記第1の後続する論理ブロックのデータを、上記第1のメモリバンク内の上記第1の物理データブロック内の第1の後続するページにプログラミングする処理と、(2)上記第2の補助RAMデータレジスタ内の上記第2の後続する論理ブロックのデータを、上記第2のメモリバンク内の上記第2の物理データブロック内の第2の後続するページにプログラミングする処理とを同時に実行するステップとを更に有することを特徴とする請求項20記載のプログラミング方法。 - 上記第1の最初の論理ブロックと上記第1の後続する論理ブロックは、上記第1の仮想論理ブロック内で連続してアドレスが付けられており、
上記第2の最初の論理ブロックと上記第2の後続する論理ブロックは、上記第2の仮想論理ブロック内で連続してアドレスが付けられており、
上記第1の最初の論理ブロックのデータをロードするステップ及び上記第1の後続する論理ブロックのデータをロードするステップは、上記第1のメモリバンク内の第1の主RAMデータレジスタと第1の補助RAMデータレジスタにデータを連続してロードするステップを含み、
上記第2の最初の論理ブロックのデータをロードするステップ及び上記第2の後続する論理ブロックのデータをロードするステップは、上記第2のメモリバンク内の第2の主RAMデータレジスタと第2の補助RAMデータレジスタにデータを連続してロードするステップを含み、
上記第1の最初のページと上記第1の後続するページは、上記第1の物理データブロック内で連続してアドレスが付けられており、
上記第2の最初のページと上記第2の後続するページは、上記第2の物理データブロック内で連続してアドレスが付けられていることを特徴とする請求項21記載のプログラミング方法。 - 上記入力データをフラッシュメモリシステムに第1のデータ記憶モードに従ってプログラミングするステップは、
第1の論理ブロックアドレスによって定義されるデータを、物理データブロックの第1のページにプログラミングするステップと、
第2の論理ブロックアドレスによって定義されるデータを、上記物理データブロックの第2のページにプログラミングするステップとを有し、
上記第1の論理ブロックアドレスと上記第2の論理ブロックアドレスは、同じ仮想論理ブロックアドレス内の連続したアドレスによって定義され、
上記第1のページと上記第2のページは、同じ物理データブロック内の連続した物理ブロックアドレスによって定義されることを特徴とする請求項12記載のプログラミング方法。 - ホストからの入力データをフラッシュメモリシステムにプログラミングするプログラミング方法において、
上記フラッシュメモリユニットを上記ホストに接続するステップと、
上記フラッシュメモリシステムによって送信されてきたハンドシェイクデータパケットを調べるステップとを有し、
上記フラッシュメモリシステムは、販売業者固有の値に応じて、データ記憶のディフォルトモードである第1のデータ記憶モードと、第2のデータ記憶モードとで選択的に動作し、
上記ハンドシェイクデータパケットに、上記販売業者固有の値が含まれていないとき、上記ホストの動作モードを標準モードに設定し、上記フラッシュメモリシステムは、上記第1のデータ記憶モードに従ってデータを記憶するステップと、
上記ハンドシェイクデータパケットに、上記販売業者固有の値が含まれているとき、上記ホストの動作モードを高性能モードに設定し、上記フラッシュメモリシステムは、上記第2のデータ記憶モードに従ってデータを記憶するステップとを更に有し、
上記第1のデータ記憶モードは、プログラミングサイクル毎に、1ページのユーザデータをプログラミングするモードであり、
上記第2のデータ記憶モードは、上記プログラミングサイクル毎に、複数のページのデータを複数のメモリバンクに同時にプログラミングするモードであり、
上記標準モードでは、上記ホストは、1つの仮想論理ブロックからのデータをプログラミングサイクル毎に送信し、
上記高性能モードでは、上記ホストは、複数の仮想論理ブロックからのデータをプログラミングサイクル毎に送信することを特徴とするプログラミング方法。 - 上記フラッシュメモリシステムが第2のデータ記憶モードに従ってデータを記憶するステップは、
第1の仮想論理ブロックアドレスによって定義される第1の最初の論理ブロックのデータを、第1のメモリバンク内の第1のRAMデータレジスタにロードするステップと、
第2の仮想論理ブロックアドレスによって定義される第2の最初の論理ブロックのデータを、第2のメモリバンク内の第2のRAMデータレジスタにロードするステップと、
(1)上記第1のRAMデータレジスタ内の上記第1の最初の論理ブロックのデータを、上記第1のメモリバンク内の第1の物理データブロックの第1の最初のページにプログラミングする処理と、(2)上記第2のRAMデータレジスタ内の上記第2の最初の論理ブロックのデータを、上記第2のメモリバンク内の第2の物理データブロックの第2の最初のページにプログラミングする処理とを同時に実行するステップとを有する請求項24記載のプログラミング方法。 - 上記フラッシュメモリシステムが第2のデータ記憶モードに従ってデータを記憶するステップは、
上記第1の仮想論理ブロックアドレスによって定義される第1の後続する論理ブロックのデータを、上記第1のメモリバンク内の上記第1のRAMデータレジスタにロードするステップと、
上記第2の仮想論理ブロックアドレスによって定義される第2の後続する論理ブロックのデータを、上記第2のメモリバンク内の上記第2のRAMデータレジスタにロードするステップと、
(1)上記第1のRAMデータレジスタ内の上記第1の後続する論理ブロックのデータを、上記第1のメモリバンク内の上記第1の物理データブロックの第1の後続するページにプログラミングする処理と、(2)上記第2のRAMデータレジスタ内の上記第2の後続する論理ブロックのデータを、上記第2のメモリバンク内の上記第2の物理データブロックの第2の後続するページにプログラミングする処理とを同時に実行するステップとを更に有することを特徴とする請求項25記載のプログラミング方法。 - 上記第1の最初の論理ブロックと上記第1の後続する論理ブロックは、上記第1の仮想論理ブロック内の連続した論理ブロックアドレスによって定義され、
上記第2の最初の論理ブロックと上記第2の後続する論理ブロックは、上記第2の仮想論理ブロック内の連続した論理ブロックアドレスによって定義され、
上記第1の後続する論理ブロックのデータを第1のRAMデータレジスタにロードするステップは、上記第1の最初の論理ブロックのデータを第1のRAMデータレジスタにロードするステップに連続して実行され、
上記第2の後続する論理ブロックのデータを第2のRAMデータレジスタにロードするステップは、上記第2の最初の論理ブロックのデータを第2のRAMデータレジスタにロードするステップに連続して実行され、
上記第1の最初のページと上記第1の後続するページは、上記第1の物理データブロック内の連続した物理ブロックアドレスによって定義され、
上記第2の最初のページと上記第2の後続するページは、上記第2の物理データブロック内の連続した物理ブロックアドレスによって定義されることを特徴とする請求項26記載のプログラミング方法。 - 上記フラッシュメモリシステムの複数のメモリバンク内の各物理データブロックは、同数のページを有し、各物理データブロックの各ページは、同一のページアドレス方式によってアドレス指定されることを特徴とする請求項27記載のプログラミング方法。
- 上記第1の物理データブロック内の第1の最初のページと上記第2の物理データブロック内の第2の最初のページは、同じページアドレスによって定義されることを特徴とする請求項28記載のプログラミング方法。
- 上記複数のメモリバンクのそれぞれは、同数の物理データブロックを有し、各メモリバンク内の各物理データブロックは、同一のブロックアドレス方式によってアドレス指定されていることを特徴とする請求項29記載のプログラミング方法。
- 上記第1の物理データブロックと上記第2の物理データブロックは、同じ物理ブロックアドレスによって定義されることを特徴とする請求項30記載のプログラミング方法。
- 上記フラッシュメモリシステムが第1のデータ記憶モードに従ってデータを記憶するステップは、
第1の論理ブロックアドレスからのデータを、物理データブロックの第1のページにプログラミングするステップと、
第2の論理ブロックアドレスからのデータを、上記物理データブロックの第2のページにプログラミングするステップとを有し、
上記第1の論理ブロックアドレスと上記第2の論理ブロックアドレスは、同じ仮想論理ブロック内の連続したアドレスであり、
上記第1のページと上記第2のページは、連続した物理ブロックアドレスによって定義されることを特徴とする請求項24記載のプログラミング方法。 - 個別の、独立してアドレス可能な複数のメモリバンクと、
RAMデータレジスタと、
スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードするロード手段と、
上記ハンドシェイクデータパケットをホストに送信する送信手段と、
上記ホストからハンドシェイク応答を受信したとき、上記RAMデータレジスタからの複数のデータを、インタリーブして、上記複数のメモリバンクに同時に記憶する手段と、
上記ホストからハンドシェイク応答を受信しないとき、データを、インタリーブしないで、上記複数のメモリバンクに順次記憶する手段とを備えるフラッシュメモリシステム。 - 個別の、独立してアドレス可能な複数のメモリバンクと、
RAMデータレジスタと、
スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードするロード手段と、
上記ハンドシェイクデータパケットをホストに送信する手段と、
上記ホストからハンドシェイク応答を受信しないとき、データを、インタリーブしないで、上記複数のメモリバンクに順次記憶する記憶手段とを備え、
上記ホストが高性能フラッシュメモリ動作が可能なホストであるとき、上記記億手段は、複数のページのデータを、上記複数のメモリバンクに同時にプログラムすることを特徴とするフラッシュメモリシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/611,676 | 2000-07-07 | ||
US09/611,676 US6721843B1 (en) | 2000-07-07 | 2000-07-07 | Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible |
PCT/US2001/040768 WO2002005285A2 (en) | 2000-07-07 | 2001-05-17 | Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004511030A JP2004511030A (ja) | 2004-04-08 |
JP2004511030A5 JP2004511030A5 (ja) | 2008-07-10 |
JP4945792B2 true JP4945792B2 (ja) | 2012-06-06 |
Family
ID=24449984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002508803A Expired - Lifetime JP4945792B2 (ja) | 2000-07-07 | 2001-05-17 | フラッシュメモリシステム及びプログラミング方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6721843B1 (ja) |
EP (2) | EP1299884B1 (ja) |
JP (1) | JP4945792B2 (ja) |
AT (2) | ATE373843T1 (ja) |
AU (1) | AU2001263509A1 (ja) |
DE (2) | DE60130593T2 (ja) |
ES (1) | ES2297787T3 (ja) |
WO (1) | WO2002005285A2 (ja) |
Families Citing this family (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728851B1 (en) * | 1995-07-31 | 2004-04-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US8171203B2 (en) * | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
US6978342B1 (en) | 1995-07-31 | 2005-12-20 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US7877542B2 (en) * | 2000-01-06 | 2011-01-25 | Super Talent Electronics, Inc. | High integration of intelligent non-volatile memory device |
US20070168614A1 (en) * | 2000-01-06 | 2007-07-19 | Super Talent Electronics Inc. | Secure-Digital (SD) Flash Card with Auto-Adaptive Protocol and Capacity |
US8341332B2 (en) * | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US8037234B2 (en) * | 2003-12-02 | 2011-10-11 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
US8452912B2 (en) * | 2007-10-11 | 2013-05-28 | Super Talent Electronics, Inc. | Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read |
US8266367B2 (en) * | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US7167944B1 (en) | 2000-07-21 | 2007-01-23 | Lexar Media, Inc. | Block management for mass storage |
US7020739B2 (en) * | 2000-12-06 | 2006-03-28 | Tdk Corporation | Memory controller, flash memory system having memory controller and method for controlling flash memory device |
US6938144B2 (en) * | 2001-03-22 | 2005-08-30 | Matsushita Electric Industrial Co., Ltd. | Address conversion unit for memory device |
JP4256600B2 (ja) * | 2001-06-19 | 2009-04-22 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
GB0123410D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system for data storage and retrieval |
GB0123417D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Improved data processing |
GB0123421D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Power management system |
GB0123415D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
JP3967121B2 (ja) * | 2001-12-11 | 2007-08-29 | 株式会社ルネサステクノロジ | ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム |
JP2003223792A (ja) * | 2002-01-25 | 2003-08-08 | Hitachi Ltd | 不揮発性メモリ及びメモリカード |
JP3866635B2 (ja) | 2002-08-26 | 2007-01-10 | 株式会社東芝 | メモリカード及び記憶領域切り替え方法 |
JP3806077B2 (ja) | 2002-08-26 | 2006-08-09 | 株式会社東芝 | メモリカード認識システム、容量切り替え型メモリカード・ホスト機器、容量切り替え型メモリカード、記憶容量設定方法及び記憶容量設定プログラム |
KR100944054B1 (ko) * | 2002-08-29 | 2010-02-24 | 파나소닉 주식회사 | 반도체메모리장치 및 플래시메모리에의 데이터기입방법 |
US6944063B2 (en) * | 2003-01-28 | 2005-09-13 | Sandisk Corporation | Non-volatile semiconductor memory with large erase blocks storing cycle counts |
FI117489B (fi) * | 2003-02-07 | 2006-10-31 | Nokia Corp | Menetelmä muistikortin osoittamiseksi, muistikorttia käyttävä järjestelmä, ja muistikortti |
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 |
US20090193184A1 (en) * | 2003-12-02 | 2009-07-30 | Super Talent Electronics Inc. | Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System |
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US8504798B2 (en) | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
US7631138B2 (en) * | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
US7173863B2 (en) * | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US8250295B2 (en) | 2004-01-05 | 2012-08-21 | Smart Modular Technologies, Inc. | Multi-rank memory module that emulates a memory module having a different number of ranks |
US7289386B2 (en) | 2004-03-05 | 2007-10-30 | Netlist, Inc. | Memory module decoder |
US7916574B1 (en) | 2004-03-05 | 2011-03-29 | Netlist, Inc. | Circuit providing load isolation and memory domain translation for memory module |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US20110145489A1 (en) * | 2004-04-05 | 2011-06-16 | Super Talent Electronics, Inc. | Hybrid storage device |
US7464306B1 (en) * | 2004-08-27 | 2008-12-09 | Lexar Media, Inc. | Status of overall health of nonvolatile memory |
US20060069896A1 (en) * | 2004-09-27 | 2006-03-30 | Sigmatel, Inc. | System and method for storing data |
US7882299B2 (en) | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
KR100590388B1 (ko) * | 2005-03-10 | 2006-06-19 | 주식회사 하이닉스반도체 | 멀티-플레인 타입 플래쉬 메모리 장치와, 그 프로그램 동작및 리드 동작 제어 방법 |
ITMI20050799A1 (it) * | 2005-05-03 | 2006-11-04 | Atmel Corp | Metodo e sistema di configurazione dei parametri per una memoria flash |
ATE467893T1 (de) * | 2005-11-22 | 2010-05-15 | Sandisk Corp | Verfahren und speichersystem für legacy-hosts |
US7877540B2 (en) * | 2005-12-13 | 2011-01-25 | Sandisk Corporation | Logically-addressed file storage methods |
JP5137413B2 (ja) * | 2006-11-28 | 2013-02-06 | 株式会社日立製作所 | 半導体記憶装置 |
US8151060B2 (en) | 2006-11-28 | 2012-04-03 | Hitachi, Ltd. | Semiconductor memory system having a snapshot function |
US20100115175A9 (en) * | 2006-12-18 | 2010-05-06 | Zhiqing Zhuang | Method of managing a large array of non-volatile memories |
US20080235438A1 (en) * | 2007-03-20 | 2008-09-25 | Sony Corporation And Sony Electronics Inc. | System and method for effectively implementing a multiple-channel memory architecture |
US8856423B1 (en) * | 2007-04-10 | 2014-10-07 | Marvell International Ltd. | Dual-purpose nonvolatile memory for code and data storage |
US8429352B2 (en) | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
CN100530138C (zh) * | 2007-06-28 | 2009-08-19 | 忆正存储技术(深圳)有限公司 | 基于多通道闪存设备逻辑条带的自适应控制方法 |
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
US8516185B2 (en) | 2009-07-16 | 2013-08-20 | Netlist, Inc. | System and method utilizing distributed byte-wise buffers on a memory module |
US8417870B2 (en) * | 2009-07-16 | 2013-04-09 | Netlist, Inc. | System and method of increasing addressable memory space on a memory board |
US8154901B1 (en) | 2008-04-14 | 2012-04-10 | Netlist, Inc. | Circuit providing load isolation and noise reduction |
US8452934B2 (en) * | 2008-12-16 | 2013-05-28 | Sandisk Technologies Inc. | Controlled data access to non-volatile memory |
US8700840B2 (en) * | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US8040744B2 (en) * | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8244960B2 (en) * | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
KR101581679B1 (ko) * | 2009-03-18 | 2015-12-31 | 삼성전자주식회사 | 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법 |
US8285917B2 (en) * | 2009-03-26 | 2012-10-09 | Scaleo Chip | Apparatus for enhancing flash memory access |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
US9128632B2 (en) | 2009-07-16 | 2015-09-08 | Netlist, Inc. | Memory module with distributed data buffers and method of operation |
US8473669B2 (en) | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
JP5060574B2 (ja) * | 2010-03-16 | 2012-10-31 | 株式会社東芝 | メモリシステム |
US8452911B2 (en) | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
US8713242B2 (en) * | 2010-12-30 | 2014-04-29 | Solid State System Co., Ltd. | Control method and allocation structure for flash memory device |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9336133B2 (en) | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
US8873284B2 (en) | 2012-12-31 | 2014-10-28 | Sandisk Technologies Inc. | Method and system for program scheduling in a multi-layer memory |
US9734050B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
CN105706064B (zh) | 2013-07-27 | 2019-08-27 | 奈特力斯股份有限公司 | 具有本地分别同步的内存模块 |
JP5996497B2 (ja) * | 2013-08-22 | 2016-09-21 | 株式会社東芝 | ストレージ装置 |
US9440086B2 (en) | 2013-09-11 | 2016-09-13 | Medtronic, Inc. | Optimized flash memory device for miniaturized devices |
US20170031838A1 (en) * | 2015-07-28 | 2017-02-02 | Qualcomm Incorporated | Method and apparatus for using context information to protect virtual machine security |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US10824376B2 (en) | 2017-12-08 | 2020-11-03 | Sandisk Technologies Llc | Microcontroller architecture for non-volatile memory |
US10622075B2 (en) | 2017-12-12 | 2020-04-14 | Sandisk Technologies Llc | Hybrid microcontroller architecture for non-volatile memory |
US10777240B1 (en) | 2019-03-07 | 2020-09-15 | Sandisk Technologies Llc | Efficient control of memory core circuits |
US10971199B2 (en) | 2019-06-20 | 2021-04-06 | Sandisk Technologies Llc | Microcontroller for non-volatile memory with combinational logic |
US11507498B2 (en) | 2020-03-05 | 2022-11-22 | Sandisk Technologies Llc | Pre-computation of memory core control signals |
WO2021224660A1 (fr) | 2020-05-07 | 2021-11-11 | Achidi Valentin Agon | Inhibition de l'infection a coronavirus covid-19 par apivirine extrait - dichrostachys glomerata |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5877034A (ja) | 1981-10-30 | 1983-05-10 | Hitachi Ltd | 記録方法 |
US4710871A (en) | 1982-11-01 | 1987-12-01 | Ncr Corporation | Data transmitting and receiving apparatus |
US4736341A (en) | 1985-06-28 | 1988-04-05 | Xebec Development Partners, Ltd. | Intelligent hard disk drive subsystem |
US4907162A (en) * | 1987-07-16 | 1990-03-06 | Pitney Bowes | System for indicating the balance of stored value |
US5200864A (en) | 1989-06-28 | 1993-04-06 | International Business Machines Corporation | Combining small records into a single record block for recording on a record media |
US5200959A (en) | 1989-10-17 | 1993-04-06 | Sundisk Corporation | Device and method for defect handling in semi-conductor memory |
US5255136A (en) | 1990-08-17 | 1993-10-19 | Quantum Corporation | High capacity submicro-winchester fixed disk drive |
US5303198A (en) | 1990-09-28 | 1994-04-12 | Fuji Photo Film Co., Ltd. | Method of recording data in memory card having EEPROM and memory card system using the same |
US5283882A (en) | 1991-02-22 | 1994-02-01 | Unisys Corporation | Data caching and address translation system with rapid turnover cycle |
US5270979A (en) | 1991-03-15 | 1993-12-14 | Sundisk Corporation | Method for optimum erasing of EEPROM |
JP2625609B2 (ja) | 1991-07-10 | 1997-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ディスク記憶装置 |
US5430859A (en) * | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
JP3328321B2 (ja) * | 1992-06-22 | 2002-09-24 | 株式会社日立製作所 | 半導体記憶装置 |
US5341330A (en) | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for writing to a flash memory array during erase suspend intervals |
US5357475A (en) | 1992-10-30 | 1994-10-18 | Intel Corporation | Method for detaching sectors in a flash EEPROM memory array |
JP3641280B2 (ja) | 1992-10-30 | 2005-04-20 | インテル・コーポレーション | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 |
US5485595A (en) | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
US5388083A (en) | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US5523903A (en) | 1993-12-23 | 1996-06-04 | International Business Machines Corporation | Sector architecture for fixed block disk drive |
US5455721A (en) | 1994-03-03 | 1995-10-03 | Cirrus Logic, Inc. | Method and apparatus for automatic sector pulse generation and split field calculation in disk drives |
US5603001A (en) | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
JP3507132B2 (ja) | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
US5604880A (en) * | 1994-08-11 | 1997-02-18 | Intel Corporation | Computer system with a memory identification scheme |
JPH08137634A (ja) | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | フラッシュディスクカード |
US5678056A (en) * | 1995-02-27 | 1997-10-14 | Nec Corporation | Method and apparatus for control of serial communication by changing address conditions during and after communication start up |
US5907856A (en) | 1995-07-31 | 1999-05-25 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US6081878A (en) | 1997-03-31 | 2000-06-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US5838614A (en) | 1995-07-31 | 1998-11-17 | Lexar Microsystems, Inc. | Identification and verification of a sector within a block of mass storage flash memory |
US5835935A (en) | 1995-09-13 | 1998-11-10 | Lexar Media, Inc. | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory |
US5687114A (en) * | 1995-10-06 | 1997-11-11 | Agate Semiconductor, Inc. | Integrated circuit for storage and retrieval of multiple digital bits per nonvolatile memory cell |
US6026293A (en) | 1996-09-05 | 2000-02-15 | Ericsson Inc. | System for preventing electronic memory tampering |
JPH10124381A (ja) | 1996-10-21 | 1998-05-15 | Mitsubishi Electric Corp | 半導体記憶装置 |
JP2982728B2 (ja) * | 1996-12-06 | 1999-11-29 | 日本電気株式会社 | アプリケーション共有システム |
US6279069B1 (en) | 1996-12-26 | 2001-08-21 | Intel Corporation | Interface for flash EEPROM memory arrays |
US5920731A (en) | 1997-02-21 | 1999-07-06 | Vlsi Technology, Inc. | Single-housing electrical device self-configurable to connect to PCMCIA compliant or non-PCMCIA compliant host interfaces |
US5822245A (en) * | 1997-03-26 | 1998-10-13 | Atmel Corporation | Dual buffer flash memory architecture with multiple operating modes |
JP3820682B2 (ja) * | 1997-05-30 | 2006-09-13 | カシオ計算機株式会社 | メモリ制御装置、データ書き込み読み出し方法、及び撮像装置 |
JP3718578B2 (ja) | 1997-06-25 | 2005-11-24 | ソニー株式会社 | メモリ管理方法及びメモリ管理装置 |
US6073205A (en) * | 1997-07-10 | 2000-06-06 | National Instruments Corporation | System and method of write posting in a universal serial bus system |
US6138180A (en) | 1997-09-12 | 2000-10-24 | Symbol Technologies, Inc. | Adaptive computer peripheral for selecting a communications protocol by cycling through a plurality of given protocols |
US6076137A (en) | 1997-12-11 | 2000-06-13 | Lexar Media, Inc. | Method and apparatus for storing location identification information within non-volatile memory devices |
US6360220B1 (en) | 1998-08-04 | 2002-03-19 | Microsoft Corporation | Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries |
JP2000200213A (ja) * | 1999-01-06 | 2000-07-18 | Mitsubishi Electric Corp | マイクロコンピュ―タ、デ―タ書換システム及びデ―タ書換方法 |
US6125058A (en) | 1999-10-19 | 2000-09-26 | Advanced Micro Devices, Inc. | System for optimizing the equalization pulse of a read sense amplifier for a simultaneous operation flash memory device |
-
2000
- 2000-07-07 US US09/611,676 patent/US6721843B1/en not_active Expired - Lifetime
-
2001
- 2001-05-17 AT AT06009719T patent/ATE373843T1/de not_active IP Right Cessation
- 2001-05-17 AT AT01937811T patent/ATE336065T1/de not_active IP Right Cessation
- 2001-05-17 WO PCT/US2001/040768 patent/WO2002005285A2/en active IP Right Grant
- 2001-05-17 JP JP2002508803A patent/JP4945792B2/ja not_active Expired - Lifetime
- 2001-05-17 AU AU2001263509A patent/AU2001263509A1/en not_active Abandoned
- 2001-05-17 EP EP01937811A patent/EP1299884B1/en not_active Expired - Lifetime
- 2001-05-17 ES ES06009719T patent/ES2297787T3/es not_active Expired - Lifetime
- 2001-05-17 DE DE60130593T patent/DE60130593T2/de not_active Expired - Lifetime
- 2001-05-17 EP EP06009719A patent/EP1693759B1/en not_active Expired - Lifetime
- 2001-05-17 DE DE60122155T patent/DE60122155T2/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
ATE373843T1 (de) | 2007-10-15 |
EP1693759B1 (en) | 2007-09-19 |
EP1693759A2 (en) | 2006-08-23 |
ES2297787T3 (es) | 2008-05-01 |
DE60122155D1 (de) | 2006-09-21 |
EP1299884A2 (en) | 2003-04-09 |
WO2002005285A3 (en) | 2002-06-20 |
EP1299884B1 (en) | 2006-08-09 |
US6721843B1 (en) | 2004-04-13 |
AU2001263509A1 (en) | 2002-01-21 |
DE60130593T2 (de) | 2008-01-31 |
ATE336065T1 (de) | 2006-09-15 |
DE60122155T2 (de) | 2007-06-28 |
EP1693759A3 (en) | 2006-09-13 |
JP2004511030A (ja) | 2004-04-08 |
DE60130593D1 (de) | 2007-10-31 |
WO2002005285A2 (en) | 2002-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4945792B2 (ja) | フラッシュメモリシステム及びプログラミング方法 | |
US10078449B2 (en) | Flash memory architecture with separate storage of overhead and user data | |
EP1451673B1 (en) | Non-volatile memory control | |
JPH11511879A (ja) | メモリシステム | |
JP2010152913A (ja) | セクタ書き込み操作時間を効果的に減少させるための不揮発性メモリユニット内のブロックの構成 | |
WO1999031592A1 (fr) | Systeme de memoire flash | |
CN103558993A (zh) | 具有易失性和非易失性存储器的混合固态存储器系统 | |
JP2012513647A (ja) | 管理型不揮発性メモリのアドレスマッピングのためのアーキテクチャー | |
JP2012514809A (ja) | コマンドの変更 | |
TWI436210B (zh) | 操作一可再程式化的非揮發性記憶體系統之方法以及非揮發性記憶體系統 | |
CN108231119B (zh) | 用每单元分数比特低延迟读取快闪存储设备的方法和装置 | |
CN111610929B (zh) | 数据储存装置以及非挥发式存储器控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080519 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080519 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110426 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110726 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110802 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110826 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110902 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110926 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20111003 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111026 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120117 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120126 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20120126 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120215 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150316 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4945792 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |