説明

NANDフラッシュメモリ・システム・アーキテクチャ

【課題】ブート・サポートと、コントローラに基づくメモリ管理との両方を提供するデータ記憶デバイスを得る。
【解決手段】データ記憶デバイスは、NANDフラッシュメモリ、実行可能なインターフェイス、そしてホストから実行可能なインターフェイスを介して、仮想アドレスでNANDフラッシュメモリにアクセスするインストラクション受信するための、そして仮想アドレスを揮発性メモリの物理アドレスへ変換するためのコントローラを含む。コントローラは、また、ホストへブート機能を提供することが好ましい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、NANDフラッシュメモリ・デバイスに関し、より詳しくは、ホスト・プロセッサとの統合が容易で、また、ホスト・プロセッサの、メモリ・デバイスからのブートを可能にするNANDフラッシュメモリ・デバイスに関する。
【背景技術】
【0002】
フラッシュデバイスは、フラッシュタイプ、フローティングゲート・トランジスタから形成された電気的に消去可能でプログラム可能な読出し専用メモリ(EEPROM)であり、機能および性能の点でEPROMメモリに類似する不揮発性メモリであり、インサーキットのプログラム可能なオペレーションによってメモリを部分的に消去することを可能にする追加の機能を持つ。フラッシュデバイスには、比較的安価で、従来の磁気記憶ディスクに比べて小さな電力を必要とするという長所がある。しかしながら、フラッシュデバイスには、物理アドレス・レベルでの使用に少し問題があるという、特定な限界がある。フラッシュデバイスにおいては、領域を先に消去することなく、メモリの以前に書き込んだ領域を書き換えることは実用的ではない。すなわち、再プログラムする前に、フラッシュ・セルを消去しなければならない(例えば、「1」へプログラムする)。消去は、一般に「消去ブロック」と呼ぶ、(典型的に、現在市販のNANDデバイスでは16から256キロバイトのサイズ、そしてNORデバイスではより大きなサイズの)比較的大きなグループのセルに対してのみ実行できる。したがって、単一バイトあるいは1キロバイトの塊の内容を更新するには、「ハウスキーピング」オペレーションが必要である。このオペレーションは、消去ブロックの非更新部分を、最初に、どこか他の箇所へ移動させなければならない。そうすることによって、消去中にそれらを維持し、その後、元の箇所へ戻すことができる。
【0003】
さらに、デバイスのいくつかのブロックは、信頼性のない「不良ブロック」である可能性がある。そのようなブロックの使用は、回避すべきである。そのようなブロックは、最初にデバイスをテストしたときに製造業者が、または現場でデバイスの使用中、ブロックの障害を検出したアプリケーション・ソフトウェアが、「不良ブロック」と宣言する。
【0004】
背景技術のこれらの限界を克服するために、バン氏の米国特許第5,404,485号で開示されたような、フラッシュファイル・システム(FFS)が具現されている。この特許は、本出願の譲受人へ譲渡されており、参照によって、本文に完全に記述したものと見なす。FFSは、フラッシュデバイスに対するデータ記憶および操作に関するシステムを提供し、これらのデバイスが磁気ディスクをエミュレートすることを可能にする。既存の技術においては、アプリケーションまたはオペレーティングシステムは、物理アドレスを使用せずに仮想アドレスを使用してフラッシュ記憶サブシステムに相互作用する。ソフトウェア・アプリケーションと物理デバイスとの間に、仮想アドレスから物理アドレスへのマッピング(本文では「変換」とも称する)を提供する中間層が存在する。アプリケーションまたはオペレーティングシステム・ソフトウェアは、記憶システムを、制約なしでランダムに読み書きできる連続な、欠陥のないメディアを持つものと見なすが、物理アドレス指定スキームは、そのアドレス範囲内に(例えば、不良ブロックに起因する)「孔」を持ち、また仮想アドレス範囲内で相互に隣接するデータ・ピースは、物理アドレス範囲内では遠く離れる可能性もある。上述のマッピングを実行する中間層は、アプリケーションを実行する同じCPU上で実行できるソフトウェア・ドライバであってもよい。代替的に、中間層は、フラッシュデバイスを制御する、そしてホスト・コンピュータが記憶装置にアクセスするときにホスト・コンピュータのメインCPUに対するインターフェイス・ポイントとして機能するコントローラ内に埋め込まれてもよい。これは、例えば、セキュアデジタル(SD)カードまたはマルチメディア・メモリ・カード(MMC)等の、リムーバブル・メモリ・カードの状況である。この場合、カードは、他の機能も含むが、上述のタイプのマッピングを実現するファームウエア・プログラムを実行するオンボード・コントローラを持つ。
【0005】
そのようなアドレス・マッピングを実行するソフトウェアまたはファームウェア・インプリメンテーションは、通常「フラッシュ管理システム」または「フラッシュファイル・システム」と呼ぶ。用語「フラッシュファイル・システム」は、実は誤った名称である。その理由は、インプリメンテーションが、オペレーティングシステムまたはパソコンでファイルを使用する感覚で「ファイル」を必ずしもサポートするわけではなく、むしろ、ハードディスク・ソフトウェア・ドライバによってエクスポートするものに類似したブロック・デバイス・インターフェイスをサポートするものであるからである。依然として、この用語は一般的に使用されている。本文では「フラッシュファイル・システム」および「フラッシュ管理システム」を置換可能に使用する。
【0006】
仮想アドレスから物理アドレスへのマッピングを実現する、他の、従来の技術によるシステムが、バン氏の米国特許第5,937,425号、そしてラッサー氏の米国特許第6,591,330号に開示されている。これら両特許も、すべての目的のために、参照によって完全に記述したものとして本文に含むものとする。
【0007】
特にNANDタイプ・フラッシュデバイスに適当な米国特許第5,937,425号においては、マッピングは、図1(従来の技術)を参照して、以下の通りに実行される。物理アドレス・スペース13は、ユニット111から構成される。これらは、実際、消去可能な最小塊である消去ブロックである。各物理ユニット111は、一つ以上の物理ページ113を含み、1ページが、書き込みが可能な最小塊である。仮想アドレス・スペース11は、物理ユニットと同じサイズを持つ仮想ユニット121から構成される。各仮想ユニットは、物理ページ113と同じサイズを持つ一つ以上の仮想ページ123を含む。読み書きのために、アプリケーションが仮想アドレスを提供すると、そのアドレスが属する仮想ユニット番号が、仮想アドレスから抽出される。各仮想ユニット121へ、一つの物理ユニット111、あるいは一連の複数の物理ユニット111を指定するマッピングがあり、それから、仮想ページ123を物理ページ113へ関連づける「ローカル」マッピング・ルールを使用する、または物理ページ113と共に記憶した制御情報を使用することによって、仮想ユニット121内の要求仮想ページ123に対応する物理ページ113が、対応する物理ユニット111内に位置づけられる。
【0008】
US5,937,425に開示された方法の利点の一つは、ユニットがページよりも非常に少ないことから、メイン・マッピングが、ページではなくユニットに対して実行されるので、仮想ページが物理ページに直接的にマップされた場合よりも、変換テーブルが非常に小さくなることである。もう一つの利点は、一つの仮想ユニット121へ複数の物理ユニット111を割り当て可能なことから生じる、書き込み性能の改善である。
【0009】
NANDフラッシュはNORフラッシュよりも安価であるため、ほとんどの、フラッシュに基づくデータ集中記憶デバイスは、今日、NANDフラッシュを使用する。先に論じた考慮から、現在普及しているNANDフラッシュメモリに基づく記憶デバイスの多くは、一方の側でオペレーティングシステム、そして記憶デバイスを使用するソフトウェア・アプリケーションを実行するホストプロセッサと、他方の側で記憶を行うフラッシュメモリ・メディアとの間に、フラッシュメモリ・コントローラが位置するというアーキテクチャを持つ。コントローラは、フラッシュ管理システムの機能を含み、また、先に述べたようなアドレス・マッピングの機能を含む。コントローラは、エラー補正、暗号法等の、追加の機能を含んでもよいが、これらの追加の機能は、本発明との密接な関係はない。
【0010】
そのようなアーキテクチャを採用するほとんどの周知のNANDフラッシュメモリ記憶デバイスは、例えばSDまたはMMCカード等の、デジタルカメラや携帯電話内で使用するメモリ・カードである。しかし、このアーキテクチャを採用する、USBフラッシュドライブ(UFD)、コンパクトフラッシュ(CF)(登録商標)カード等の、多くの他のデバイスもある。
【0011】
フラッシュ管理、より具体的にはアドレス・マッピングが、分離コントローラ内で実行されると共にソフトウェア・アプリケーションを実行するホスト・プロセッサから隠されている、そのようなメモリ・アーキテクチャの利点は、記憶デバイスへホスト・プロセッサを統合する単純さにある。ホストの観点から、ホストには、不良ブロックのない、そして各記憶セクタへのランダムアクセスが可能な、理想的な記憶デバイスが提示される。記憶デバイスをホストへ統合するために唯一やるべきことは、USB、SD等の、コントローラが必要なインターフェイス・プロトコルを実現することである。ほとんどのオペレーティングシステムは、それらのインターフェイス・プロトコルのための既製のドライバを提供するため、統合化の努力は最小限である。
【0012】
しかしながら、このアーキテクチャを採用するすべての現在の解決策に共通する一つの欠点は、ホスト・プロセッサが記憶デバイスからブートできないことである。本文における用語「ブート」は、電源オンの直後に、記憶デバイス内に記憶されたコードでコード実行を開始するホスト・プロセッサの機能を意味する。換言すれば、記憶デバイスは、電源オン後の「リセット」モードを通過したホスト・プロセッサが実行するその最初のコマンドが、その記憶デバイスから読み込まれるならば、ブート可能である。ホスト・プロセッサが、USBに基づく、またはSDに基づく記憶デバイスから、そのオペレーティングシステム・コードをロードするシステムがあることは事実である(例えば、米国特許出願第11/102,814号を参照)。しかし、すべてのそのようなケースでは、ホスト・プロセッサは、上記定義の「ブート」という意味においては記憶デバイスからブートしない。すべてのそれらのケースでは、電源オンの後にプロセッサが実行するその最初のコマンドは、別個のソース、すなわち、別のフラッシュデバイス(例えば、PC内のBIOS)、内部ROM、または他のソースから読み込まれる。他のソースからブート・コードを実行した後にのみ、ホスト・プロセッサは、フラッシュ管理システムを含むフラッシュ記憶デバイスへアクセスし、そこから、実行すべき追加コードを読み込む。典型的に、その追加コードは、オペレーティングシステムのコードであり、そして「記憶デバイスからオペレーティングシステムをブートする」、または「記憶デバイスからホスト・プロセッサをブートする」とさえ言うのが一般的であるが、それは、本文における用語「ブート」の意味ではない。本発明の目的のため、用語「ブート」は、ホスト・プロセッサをパワーアップした後の、その最初のコマンドの実行に関して上記に説明した制限的で限定された意味を持つと、常に理解すべきである。
【0013】
ブート機能を提供しないこの欠点は、実は、上記アーキテクチャの従来の技術によるインプリメンテーションのもう一つの特性から生じるものである。すなわち、コントローラがホストへエクスポートするインターフェイス(または「バス」)は、実行可能ではない。「実行可能なインターフェイス」または「実行可能なバス」は、プロセッサがコンピュータ・マシン・コードを読み込んで直接的に実行できるインターフェイスである。この場合、最初にプロセッサ外の他のメモリ・デバイスへコピーしてから、実行のために再び読み込むことを必要としない。例えば、PCがそのSRAMまたはBIOSデバイスにアクセスするパラレル・インターフェイスは、実行可能なインターフェイスであるが、USBおよびSDインターフェイスは、実行可能なインターフェイスではない。
【0014】
実行可能でないインターフェイスは、ブート機能を提供することはできない。これは偶然の一致ではないが、実行可能なインターフェイスの概念に固有のものである。すなわち、インターフェイスがブート機能を提供するのであれば、定義上、それは実行可能であろう。
【0015】
図2は、上記に論じたアーキテクチャを持つフラッシュメモリ・デバイス44を含む模範的な、従来の技術によるコンピュータ・システム20を部分的に示す高度な概略ブロック図である。具体的には、システム20はパソコン(PC)である。PC20は、また、プロセッサ22、BIOS24、RAM26およびハードディスク28を含み、すべては、バス30を介して相互に通信する。ハードディスク28は、PC20のメイン不揮発性メモリとして機能する。PC20のオペレーティングシステム32は、ハードディスク28内に記憶されている。電源オンで、プロセッサ22は、BIOS24からブートして、それからハードディスク28からRAM26へオペレーティングシステム28をコピーし、RAM26からオペレーティングシステム28を実行する。
【0016】
オペレーティングシステム32は、フラッシュメモリ・デバイス44のためのドライバ34を含む。ドライバ34は、二層のソフトウェア、上層36および下層38を持つ。下層38は、ホスト側USBコントローラ40を介して、本質的にフラッシュメモリ・デバイス44との通信を管理する。上層36は、下層およびメモリ・アクセス・コマンド(セクタの読み込み、セクタの書き込み)が取り扱うデータ・ストリームと、PC20上で実行されるアプリケーションが理解可能な、それらのコマンドへのフラッシュメモリ・デバイス44の応答との間の変換を行う。
【0017】
フラッシュメモリ・デバイス44は、USBプロトコルに従ってホスト側USBコントローラ40を介してPC20の他の部分と通信するためのデバイス側USBコントローラ46、NANDフラッシュメモリ50およびフラッシュコントローラ48を含む。フラッシュコントローラ48は、先に述べたように、NANDフラッシュメモリ50に対する、フラッシュ管理システムを具現する。フラッシュメモリ・デバイス44に対して、PC20の他の部分は、フラッシュメモリ・デバイス44のホストである。
【0018】
上記の結果として、コントローラで具現したフラッシュ管理のアーキテクチャを採用するすべての、従来の技術によるNANDフラッシュ記憶デバイスは、実行可能なインターフェイスもブート機能も持たないと、私たちは結論を下す。これは、それらの記憶デバイスを使用するどのシステムも、システムの最初のブート過程をサポートするためには他の記憶素子を含まなければならないので、重大な欠点と言える。
【0019】
ブート機能を提供する異なるアーキテクチャを採用した従来の技術によるNANDフラッシュ記憶デバイスも、いくつかはある。それらのシステムでは、ホスト・プロセッサとNANDフラッシュデバイスとの間にコントローラがあるのだが、(アドレス・マッピングを含む)フラッシュ管理機能は、コントローラではなく、ホスト・プロセッサで具現されている。コントローラは、本発明に関連しないエラー補正等の、他の機能を提供し、またブート機能を提供する。コントローラは、SRAMインターフェイス等の、実行可能なインターフェイスを実現してエクスポートする。コントローラは、また、ホストがSRAMインターフェイスを介してアクセス可能な、SRAMメモリの小さなセクションを含む。システムの電源オンで、コントローラは、自動的に、そしてホスト・プロセッサから独立して、NAND記憶セルからSRAMのそのセクションへ、初期ブート・コードをコピーする。ホストが、その「リセット」電源オン状態を経た後、コード実行を開始するとき、その実行すべき最初のコードが、そのSRAMセクションのコードである。この第二のアーキテクチャを採用するデバイスの例としては、イスラエル、クファル・サバのMシステムズ・フラッシュディスク・パイオニア社のディスク・オン・チップ(商標)製品、そして韓国、ソウルのサムスン電子のワンNAND(商標)製品がある。両社は、NANDフラッシュメモリ・ダイとは別のダイ上にコントローラを設けた両製品、そしてコントローラおよびフラッシュメモリを共通のダイ上に統合した製品を提供する、あるいは提供してきた。本発明の目的では、同じ第二のアーキテクチャを持つ両異形態を考慮する。コントローラおよびNANDフラッシュメモリを別々のダイ上、または同じダイ上のいずれにも設けることができるため、本発明は、両ケースに等しく適用できる。また、このアプリケーションでは、用語「記憶デバイス」が、コントローラが記憶素子から物理的に分離しているかどうかに拘わらず、常に、コントローラ(それが存在する場合)と実際にデータを記憶するデバイスとの組み合わせに言及する、と理解すべきであることに注意すべきである。
【0020】
上記第二のアーキテクチャを採用するデバイスは、ブート・サポートの問題を解決する。しかしながら、これらのデバイスは、ホスト・プロセッサ上で実行するフラッシュメモリ管理を使用するため、ホスト・プロセッサとの統合化は、より複雑である。典型的に、そのような統合化は、記憶デバイス・ベンダーが、使用するプロセッサのタイプに対してコンパイル可能なソフトウェア・ドライバを提供することを必要とする。また、システムの実現に関する特定な詳細事項に応じて、そのソフトウェア・ドライバ・コードを少々仕立てる必要がある。
【0021】
従来の技術は、上記二つのアーキテクチャの利点を組み合わせる記憶デバイスを全く提案していない。これは、驚くべきことではない。第一のアーキテクチャを採用するすべての解決策に関する設計者のメイン・ゴールは、統合化が非常に容易なインターフェイスを達成することであった。そういうわけで、彼らは、コントローラ内部のフラッシュ管理作動を隠すことを選択した。ホストと記憶デバイスとの間のインターフェイスとして実行可能なインターフェイスを選択することは、それらのデザイン目的を破ることになっただろう。実行可能なインターフェイスは、プロセッサと記憶デバイスとの間の相互作用のレベルを高めるため、それらの間の、より複雑な統合化を生じる。そういうわけで、ブート・サポートと、コントローラに基づくフラッシュ管理との両方を提供する、従来の技術による記憶デバイスは全く存在しない。
【0022】
したがって、ブート・サポートと、コントローラに基づくメモリ管理との両方を提供するデータ記憶デバイスに対する必要性が広く認識されるため、そのようなものを得ることは非常に有利である。
【発明の概要】
【課題を解決するための手段】
【0023】
本発明によれば、次のものを含むデータ記憶デバイスが提供される。(a)NANDフラッシュメモリ。(b)実行可能なインターフェイス。そして(c)ホストから実行可能なインターフェイスを介して、仮想アドレスでNANDフラッシュメモリにアクセスするインストラクションを受信するための、そして仮想アドレスをNANDフラッシュメモリ内の物理アドレスへ変換するためのコントローラ。
【0024】
本発明によれば、次のステップを含む、システムを作動させるための方法が提供される。(a)システム内に、ブート・コードを記憶したNANDフラッシュメモリを含むデータ記憶デバイスを含ませるステップ。(b)電源オンで、ブート・コードを実行するステップ。(c)その後、仮想アドレスでメモリにアクセスするインストラクションをデータ記憶デバイスへ出すステップ。そして(d)データ記憶デバイスによって、仮想アドレスをメモリの物理アドレスへ変換するステップ。
【0025】
本発明によれば、次のステップを含む、メモリを含むデータ記憶デバイスがデータ記憶デバイスのホストと相互作用するための方法が提供される。(a)ホストへ実行可能なインターフェイスを提示するステップ。(b)ホストから、仮想アドレスでメモリにアクセスするインストラクションを受信するステップ。そして(c)仮想アドレスをメモリの物理アドレスへ変換するステップ。
【0026】
本発明の基本的なデータ記憶デバイスは、NANDフラッシュメモリ、実行可能なインターフェイスおよびコントローラを含む。コントローラは、データ記憶デバイスのホストから実行可能なインターフェイスを介して、仮想アドレスでNANDフラッシュメモリにアクセスするインストラクションを受信するための、そして仮想アドレスをNANDフラッシュメモリ内の物理アドレスへ変換するためのものである。NANDフラッシュメモリに「アクセスする」ことは、少なくとも、NANDフラッシュメモリからデータを読み込むこと、そしてNANDフラッシュメモリへデータを書き込むことを含む。
【0027】
コントローラは、また、ブート機能をホストへ提供するように作動可能であることが好ましい。コントローラがそのようなブート機能を提供する一つの好適な方法は、それ自体内に揮発性メモリを含ませ、ホストの起動時に、NANDフラッシュメモリから揮発性メモリへブート・コードをコピーすることである。揮発性メモリがSRAMであり、そして実行可能なインターフェイスがSRAMインターフェイスであることが最も好ましい。
【0028】
NANDフラッシュメモリは、その中に、ホストが実行可能なインターフェイスを介してコントローラへインストラクションを送信するために実行するドライバのためのコードを記憶していることが好ましい。
【0029】
本発明の一つの方法によれば、コンピュータ・システムを作動させるために、NANDフラッシュメモリを含むデータ記憶デバイスは、システム内に含まれる。ブート・コードは、そのメモリ内に記憶される。電源オンで、ブート・コードが実行される。その後、仮想アドレスでメモリにアクセスするインストラクションがデータ記憶デバイスへ出され、そしてデータ記憶デバイスが、仮想アドレスをメモリの物理アドレスへ変換する。
【0030】
本発明のもう一つの方法によれば、メモリを含むデータ記憶デバイスは、ホストへ実行可能なインターフェイスを提示すること、仮想アドレスでメモリにアクセスするインストラクションをホストから受信すること、そして仮想アドレスをメモリの物理アドレスへ変換することによって、データ記憶デバイスのホストと相互作用する。
【図面の簡単な説明】
【0031】
【図1】従来の技術による、仮想アドレスから物理アドレスへのマッピングを示す。
【図2】従来の技術によるコンピュータ・システムを部分的に示す、高度なブロック図である。
【図3】本発明のコンピュータ・システムを部分的に示す、高度なブロック図である。
【図4】本発明のコンピュータ・システムを部分的に示す、高度なブロック図である。
【発明を実施するための形態】
【0032】
本発明を、例としてのみ、添付の図面を参照して説明する。
【0033】
本発明は、それ自身の仮想アドレスから物理アドレスへの変換を実行すると共に、ホストへ実行可能なインターフェイスを提示するデータ記憶デバイスに関する。特に本発明は、ブート・メモリおよびメイン不揮発性メモリの両方として、そのホストが使用できる。
【0034】
本発明によるデータ記憶デバイスの原理および作用は、図面とその説明文を参照することによって、よく理解することができる。
【0035】
本発明は、前述の従来の技術によるアーキテクチャの両方とも異なり、それら二つの従来の技術によるアーキテクチャ間の一種のハイブリッド・アーキテクチャであるアーキテクチャを採用することによって、ブート・サポートと内部フラッシュ管理との両方を提供する。
【0036】
本発明の記憶デバイスは、一方でデバイスの記憶メディアと、そして他方でホスト・プロセッサとインターフェイスするコントローラを含む。第一の従来の技術によるアーキテクチャの場合のように、コントローラは、フラッシュ管理の機能を含み、アドレス・マッピングの機能を含む。しかし、第一のアーキテクチャのデバイスとは異なり、コントローラがホスト・プロセッサへエクスポートするインターフェイスは、例えばSRAMインターフェイス等の、実行可能なインターフェイスである。第二のアーキテクチャの場合のように、コントローラは、また、SRAMインターフェイスを介してホストがアクセス可能な、SRAMメモリの小さなセクションを含む。システムの電源オンで、コントローラは、自動的に、そしてホスト・プロセッサから独立して、NAND記憶セルからSRAMのそのセクションへ、初期ブート・コードをコピーする。ホストが、その「リセット」電源オン状態を経た後にコード実行を開始するとき、実行すべき最初のコードが、そのSRAMセクションのコードである。
【0037】
再び図面を参照する。図3は、本発明のコンピュータ・システム60を部分的に示す、高度な概略ブロック図である。図示のアーキテクチャが適当なコンピュータ・システムの例としては、例えばパソコン等のコンピュータ、コンピュータに基づく機器、そして携帯電話等のポータブル機器がある。システム60と従来の技術によるシステム20との両方に共通するコンポーネント(プロセッサ22、RAM26およびバス30)は、同一の参照番号を持つ。システム60とシステム20との間の主要な相違は、システム60において、システム20の三つの不揮発性メモリ・デバイス(BIOS24、ハードディスク28およびフラッシュメモリ・デバイス44)が、単一のフラッシュメモリ・デバイス62で置換されていることである。
【0038】
フラッシュメモリ・デバイス62は、NANDフラッシュメモリ64、フラッシュコントローラ66および実行可能なインターフェイス、特にSRAMインターフェイス68を含む。NANDフラッシュメモリ内には、ブート・コード70と、システム60のオペレーティングシステム72が記憶されている。オペレーティングシステム72は、フラッシュメモリ・デバイス62のためのドライバ76を含む。フラッシュコントローラ48のように、フラッシュコントローラ66は、NANDフラッシュメモリ64のためのフラッシュ管理システムを具現する。フラッシュコントローラ66は、また、電源オンでフラッシュコントローラ66がブート・コード70をコピーする、コピー先のSRAM74を含む。SRAMインターフェイス68が実行可能であることは、システム60がフラッシュメモリ・デバイス62からブートすることを可能にする。これは、あたかも、第二の従来の技術によるアーキテクチャのフラッシュメモリ・デバイスを持つシステムのようである。フラッシュメモリ・デバイス62に対して、システム60の他の部分は、フラッシュメモリ・デバイス62のホスト78である。
【0039】
システム60が起動すると、フラッシュコントローラ66は、ブート・コード70をSRAM74へコピーする。プロセッサ22は、SRAMインターフェイス68を介してSRAM74からブートし、それからRAM26へオペレーティングシステム72をコピーする。システム60上で実行されるオペレーティングシステム72による、そしてアプリケーションによるフラッシュメモリ・デバイス62への、それ以降のアクセスは、ドライバ76を介して行われる。ただし、ブート・コード70を実行した後に、プロセッサ22がオペレーティングシステム72をRAM26へコピーできるためには、ブート・コード70が、ドライバ76をRAM26へコピーするためのインストラクションを含んでいなければならない。そうすれば、以降のオペレーティングシステム72のRAM26へのコピーは、単に、オペレーティングシステム72の残部に関する。
【0040】
システム60の一つの欠点は、ドライバ76が、SRAMインターフェイス68を介するフラッシュコントローラ66との通信をサポートするよう、最初から書かれていなければならないことである。実行可能なインターフェイスに関連したより複雑な統合化を解決するために、本発明は、ホストと記憶デバイスとの間の実行可能な物理インターフェイス上で、USBインターフェイスまたはSDインターフェイス等の、標準インターフェイス・プロトコルをエミュレートすることが好ましい。そのようなエミュレーションは、ホスト上で実行しているソフトウェア・アプリケーションまたはオペレーティングシステムが、標準インタフェースを物理的に持つデバイスへのアクセスのためにオペレーティングシステムが備える標準ドライバを使用することによって、記憶デバイスに容易にアクセスすることを可能にする。したがって、統合化のすべての努力は、エミュレーション・ソフトウェアへ局所化でき、エミュレーション・ソフトウェアは、記憶デバイス・タイプとホスト・プロセッサ・タイプとのいずれの組み合わせに対しても、僅かに一度だけ仕立てて統合させなければならない。
【0041】
図4は、このエミュレーションを行う一つの方法を示す。図4は、本発明のもう一つのコンピュータ・システム80を部分的に示す、高度な概略ブロック図である。システム80は、システム60の改良バージョンであり、システム20、60および/あるいは80に共通するコンポーネントは、同一の参照番号を持つ。システム60および80の相違は、システム80がフラッシュメモリ・デバイス62にアクセスするために使用するドライバ82が、システム20の従来の技術によるドライバ34を改良して書かれていることである。ドライバ82は、上層36を維持しているが、上層36とSRAMインターフェイス68との間の通信を管理するための、本発明の新しい下層84を持つ。
【0042】
本発明を限られた数の実施例に関して説明したが、本発明の多くの変形、修正、そして他の応用が可能であることは明らかである。

【特許請求の範囲】
【請求項1】
ブート・コードを記憶するNANDフラッシュメモリ、
ホスト・プロセッサによって実行可能に構成されている揮発性メモリ、
揮発性メモリをホストに接続する物理インターフェイス、および
前記揮発性メモリに対する動作を制御するコントローラを備えるデータ記憶デバイスであって、
前記データ記憶デバイスがホスト装置の前記ホスト・プロセッサに作動可能に接続された状態で、電源が投入されると、前記コントローラが前記NANDフラッシュメモリから前記ブート・コードを前記揮発性メモリにコピーするよう構成され、
電源投入されると、ブート・コード以外の他のコードを実行する前に、前記ホスト・プロセッサが前記物理インターフェイスを介して前記コピーされたブート・コードを実行するよう構成され、
前記ホスト・プロセッサが前記物理インターフェイスを介して、仮想アドレスを含むインストラクションを前記NANDフラッシュメモリに送信するよう構成され、
前記コントローラが前記仮想アドレスを前記NANDフラッシュメモリの物理アドレスに変換するように構成され、
前記仮想アドレスの物理アドレスへの変換が前記データ記憶デバイス内で行われ、
前記NANDフラッシュメモリに記憶されるドライバは、
前記ホスト装置のオペレーティングシステムによって利用可能であり、前記ホスト装置が前記データ記憶デバイスとは異なる物理デバイスにアクセスするよう作動させ、
前記ドライバに応答するデータ流を生成し、前記物理インターフェイスからのデータを送信するよう作動させることで、前記第一のインターフェイスを前記物理インターフェイス上にエミュレートし、
前記物理インターフェイスに対応する通信を管理し、
前記ホスト装置が前記物理インターフェイスを用いて通信するよう作動する、データ記憶デバイス。
【請求項2】
前記第一のインターフェイスはUSBインターフェイスである、請求項1に記載のデータ記憶デバイス。
【請求項3】
前記コントローラが、前記フラッシュメモリから前記ブート・コードを取得し、前記揮発性メモリに記憶し、
前記ホスト装置に電源が投入されると、前記物理インターフェイスを経由して前記ホスト装置が前記揮発性メモリのブート・コードを実行し、
前記ホスト装置が前記ブート・コードを実行することで、前記ホスト装置が前記ドライバを前記ホスト装置にコピーする、請求項1または2に記載のデータ記憶デバイス。
【請求項4】
ブート・コードを記憶するNANDフラッシュメモリと、ホスト・プロセッサによって実行可能に構成されている揮発性メモリと、コントローラとを有するデータ記憶デバイスを作動させるためにコントローラが実行する方法であって、
前記データ記憶デバイスがホスト装置の前記ホスト・プロセッサに作動可能に接続された状態で、前記ホスト・プロセッサが電源投入されると、前記コントローラが前記NANDフラッシュメモリから前記揮発性メモリにブート・コードをコピーすることで、ブート・コード以外の他のコードを実行する前に、前記ホスト・プロセッサが前記ブート・コードを実行するステップと、
前記ホスト・プロセッサが前記物理インターフェイスを介して前記NANDフラッシュメモリに仮想アドレスを含むインストラクションを送信するステップと、
前記データ記憶デバイス内において、前記ホスト・プロセッサから前記インストラクションと共に受信した前記仮想アドレスを前記NANDフラッシュメモリの物理アドレスへ変換するステップと、
前記ホスト装置のオペレーティングシステムによって利用可能であり、前記ホスト装置が前記データ記憶デバイスとは異なる物理デバイスにアクセスするよう作動し、前記ドライバに応答するデータ流を生成して前記物理インターフェイスからのデータを送信するよう作動することで、前記第一のインターフェイスを前記物理インターフェイス上にエミュレートし、前記物理インターフェイスに対応する通信を管理し、前記ホスト装置が前記物理インターフェイスを用いて通信することを可能にする、前記NANDフラッシュメモリに記憶されているドライバを、前記ホスト装置が前記ブート・コードを実行することに応答して、前記ホスト装置にコピーするステップと、
を備える、方法。
【請求項5】
前記ドライバをコピーするステップの後で、前記ドライバによって前記NANDフラッシュメモリから前記ホスト装置へオペレーティングシステムをコピーする、請求項4の方法。
【請求項6】
不揮発性メモリをホスト装置へ接続する物理インターフェイスと、ドライバを記憶する不揮発性メモリとを有する不揮発性記憶デバイスのホスト装置が実行する方法であって、
前記不揮発性メモリによって提供されるブート・コードを実行するステップと、
前記ホスト装置のホスト・プロセッサが前記ブート・コードを実行することによって、前記物理インターフェイスを経由して前記不揮発性メモリから前記ドライバを受信するステップと、
前記不揮発性メモリから前記ドライバを受信するステップの後で、前記物理インターフェイスを管理する前記ドライバが、前記ホスト装置のオペレーティングシステムが前記NANDフラッシュメモリとは異なる物理デバイスにアクセスするよう作動し、前記ドライバによって、データ流を生成し、前記物理インターフェイスからのデータを送信するよう作動し、第一のインターフェイスを前記物理インターフェイス上にエミュレートすることで、前記ホスト装置が前記不揮発性メモリと前記物理インターフェイスを経由して通信するステップと、
を備える、方法。






【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2011−258236(P2011−258236A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−198168(P2011−198168)
【出願日】平成23年9月12日(2011.9.12)
【分割の表示】特願2007−554739(P2007−554739)の分割
【原出願日】平成18年2月9日(2006.2.9)
【出願人】(502111536)サンディスク アイエル リミテッド (64)
【住所又は居所原語表記】Central Park 2000,Atir Yeda Street 7,44425 Kfar Sabad,Israel
【Fターム(参考)】