(57)【要約】【課題】ブート・サポートと、コントローラに基づくメモリ管理との両方を提供するデータ記憶デバイスを得る。【解決手段】データ記憶デバイスは、ＮＡＮＤフラッシュメモリ、実行可能なインターフェイス、そしてホストから実行可能なインターフェイスを介して、仮想アドレスでＮＡＮＤフラッシュメモリにアクセスするインストラクション受信するための、そして仮想アドレスを揮発性メモリの物理アドレスへ変換するためのコントローラを含む。コントローラは、また、ホストへブート機能を提供することが好ましい。【選択図】図３
2011258236.tif 000002
【特許請求の範囲】
【請求項１】
ブート・コードを記憶するＮＡＮＤフラッシュメモリ、
ホスト・プロセッサによって実行可能に構成されている揮発性メモリ、
揮発性メモリをホストに接続する物理インターフェイス、および
前記揮発性メモリに対する動作を制御するコントローラを備えるデータ記憶デバイスであって、
前記データ記憶デバイスがホスト装置の前記ホスト・プロセッサに作動可能に接続された状態で、電源が投入されると、前記コントローラが前記ＮＡＮＤフラッシュメモリから前記ブート・コードを前記揮発性メモリにコピーするよう構成され、
電源投入されると、ブート・コード以外の他のコードを実行する前に、前記ホスト・プロセッサが前記物理インターフェイスを介して前記コピーされたブート・コードを実行するよう構成され、
前記ホスト・プロセッサが前記物理インターフェイスを介して、仮想アドレスを含むインストラクションを前記ＮＡＮＤフラッシュメモリに送信するよう構成され、
前記コントローラが前記仮想アドレスを前記ＮＡＮＤフラッシュメモリの物理アドレスに変換するように構成され、
前記仮想アドレスの物理アドレスへの変換が前記データ記憶デバイス内で行われ、
前記ＮＡＮＤフラッシュメモリに記憶されるドライバは、
前記ホスト装置のオペレーティングシステムによって利用可能であり、前記ホスト装置が前記データ記憶デバイスとは異なる物理デバイスにアクセスするよう作動させ、
前記ドライバに応答するデータ流を生成し、前記物理インターフェイスからのデータを送信するよう作動させることで、前記第一のインターフェイスを前記物理インターフェイス上にエミュレートし、
前記物理インターフェイスに対応する通信を管理し、
前記ホスト装置が前記物理インターフェイスを用いて通信するよう作動する、データ記憶デバイス。
【請求項２】
前記第一のインターフェイスはＵＳＢインターフェイスである、請求項１に記載のデータ記憶デバイス。
【請求項３】
前記コントローラが、前記フラッシュメモリから前記ブート・コードを取得し、前記揮発性メモリに記憶し、
前記ホスト装置に電源が投入されると、前記物理インターフェイスを経由して前記ホスト装置が前記揮発性メモリのブート・コードを実行し、
前記ホスト装置が前記ブート・コードを実行することで、前記ホスト装置が前記ドライバを前記ホスト装置にコピーする、請求項１または２に記載のデータ記憶デバイス。
【請求項４】
ブート・コードを記憶するＮＡＮＤフラッシュメモリと、ホスト・プロセッサによって実行可能に構成されている揮発性メモリと、コントローラとを有するデータ記憶デバイスを作動させるためにコントローラが実行する方法であって、
前記データ記憶デバイスがホスト装置の前記ホスト・プロセッサに作動可能に接続された状態で、前記ホスト・プロセッサが電源投入されると、前記コントローラが前記ＮＡＮＤフラッシュメモリから前記揮発性メモリにブート・コードをコピーすることで、ブート・コード以外の他のコードを実行する前に、前記ホスト・プロセッサが前記ブート・コードを実行するステップと、
前記ホスト・プロセッサが前記物理インターフェイスを介して前記ＮＡＮＤフラッシュメモリに仮想アドレスを含むインストラクションを送信するステップと、
前記データ記憶デバイス内において、前記ホスト・プロセッサから前記インストラクションと共に受信した前記仮想アドレスを前記ＮＡＮＤフラッシュメモリの物理アドレスへ変換するステップと、
前記ホスト装置のオペレーティングシステムによって利用可能であり、前記ホスト装置が前記データ記憶デバイスとは異なる物理デバイスにアクセスするよう作動し、前記ドライバに応答するデータ流を生成して前記物理インターフェイスからのデータを送信するよう作動することで、前記第一のインターフェイスを前記物理インターフェイス上にエミュレートし、前記物理インターフェイスに対応する通信を管理し、前記ホスト装置が前記物理インターフェイスを用いて通信することを可能にする、前記ＮＡＮＤフラッシュメモリに記憶されているドライバを、前記ホスト装置が前記ブート・コードを実行することに応答して、前記ホスト装置にコピーするステップと、
を備える、方法。
【請求項５】
前記ドライバをコピーするステップの後で、前記ドライバによって前記ＮＡＮＤフラッシュメモリから前記ホスト装置へオペレーティングシステムをコピーする、請求項４の方法。
【請求項６】
不揮発性メモリをホスト装置へ接続する物理インターフェイスと、ドライバを記憶する不揮発性メモリとを有する不揮発性記憶デバイスのホスト装置が実行する方法であって、
前記不揮発性メモリによって提供されるブート・コードを実行するステップと、
前記ホスト装置のホスト・プロセッサが前記ブート・コードを実行することによって、前記物理インターフェイスを経由して前記不揮発性メモリから前記ドライバを受信するステップと、
前記不揮発性メモリから前記ドライバを受信するステップの後で、前記物理インターフェイスを管理する前記ドライバが、前記ホスト装置のオペレーティングシステムが前記ＮＡＮＤフラッシュメモリとは異なる物理デバイスにアクセスするよう作動し、前記ドライバによって、データ流を生成し、前記物理インターフェイスからのデータを送信するよう作動し、第一のインターフェイスを前記物理インターフェイス上にエミュレートすることで、前記ホスト装置が前記不揮発性メモリと前記物理インターフェイスを経由して通信するステップと、
を備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤフラッシュメモリ・デバイスに関し、より詳しくは、ホスト・プロセッサとの統合が容易で、また、ホスト・プロセッサの、メモリ・デバイスからのブートを可能にするＮＡＮＤフラッシュメモリ・デバイスに関する。
【背景技術】
【０００２】
フラッシュデバイスは、フラッシュタイプ、フローティングゲート・トランジスタから形成された電気的に消去可能でプログラム可能な読出し専用メモリ（ＥＥＰＲＯＭ）であり、機能および性能の点でＥＰＲＯＭメモリに類似する不揮発性メモリであり、インサーキットのプログラム可能なオペレーションによってメモリを部分的に消去することを可能にする追加の機能を持つ。フラッシュデバイスには、比較的安価で、従来の磁気記憶ディスクに比べて小さな電力を必要とするという長所がある。しかしながら、フラッシュデバイスには、物理アドレス・レベルでの使用に少し問題があるという、特定な限界がある。フラッシュデバイスにおいては、領域を先に消去することなく、メモリの以前に書き込んだ領域を書き換えることは実用的ではない。すなわち、再プログラムする前に、フラッシュ・セルを消去しなければならない（例えば、「１」へプログラムする）。消去は、一般に「消去ブロック」と呼ぶ、（典型的に、現在市販のＮＡＮＤデバイスでは１６から２５６キロバイトのサイズ、そしてＮＯＲデバイスではより大きなサイズの）比較的大きなグループのセルに対してのみ実行できる。したがって、単一バイトあるいは１キロバイトの塊の内容を更新するには、「ハウスキーピング」オペレーションが必要である。このオペレーションは、消去ブロックの非更新部分を、最初に、どこか他の箇所へ移動させなければならない。そうすることによって、消去中にそれらを維持し、その後、元の箇所へ戻すことができる。
【０００３】
さらに、デバイスのいくつかのブロックは、信頼性のない「不良ブロック」である可能性がある。そのようなブロックの使用は、回避すべきである。そのようなブロックは、最初にデバイスをテストしたときに製造業者が、または現場でデバイスの使用中、ブロックの障害を検出したアプリケーション・ソフトウェアが、「不良ブロック」と宣言する。
【０００４】
背景技術のこれらの限界を克服するために、バン氏の米国特許第５，４０４，４８５号で開示されたような、フラッシュファイル・システム（ＦＦＳ）が具現されている。この特許は、本出願の譲受人へ譲渡されており、参照によって、本文に完全に記述したものと見なす。ＦＦＳは、フラッシュデバイスに対するデータ記憶および操作に関するシステムを提供し、これらのデバイスが磁気ディスクをエミュレートすることを可能にする。既存の技術においては、アプリケーションまたはオペレーティングシステムは、物理アドレスを使用せずに仮想アドレスを使用してフラッシュ記憶サブシステムに相互作用する。ソフトウェア・アプリケーションと物理デバイスとの間に、仮想アドレスから物理アドレスへのマッピング（本文では「変換」とも称する）を提供する中間層が存在する。アプリケーションまたはオペレーティングシステム・ソフトウェアは、記憶システムを、制約なしでランダムに読み書きできる連続な、欠陥のないメディアを持つものと見なすが、物理アドレス指定スキームは、そのアドレス範囲内に（例えば、不良ブロックに起因する）「孔」を持ち、また仮想アドレス範囲内で相互に隣接するデータ・ピースは、物理アドレス範囲内では遠く離れる可能性もある。上述のマッピングを実行する中間層は、アプリケーションを実行する同じＣＰＵ上で実行できるソフトウェア・ドライバであってもよい。代替的に、中間層は、フラッシュデバイスを制御する、そしてホスト・コンピュータが記憶装置にアクセスするときにホスト・コンピュータのメインＣＰＵに対するインターフェイス・ポイントとして機能するコントローラ内に埋め込まれてもよい。これは、例えば、セキュアデジタル（ＳＤ）カードまたはマルチメディア・メモリ・カード（ＭＭＣ）等の、リムーバブル・メモリ・カードの状況である。この場合、カードは、他の機能も含むが、上述のタイプのマッピングを実現するファームウエア・プログラムを実行するオンボード・コントローラを持つ。
【０００５】
そのようなアドレス・マッピングを実行するソフトウェアまたはファームウェア・インプリメンテーションは、通常「フラッシュ管理システム」または「フラッシュファイル・システム」と呼ぶ。用語「フラッシュファイル・システム」は、実は誤った名称である。その理由は、インプリメンテーションが、オペレーティングシステムまたはパソコンでファイルを使用する感覚で「ファイル」を必ずしもサポートするわけではなく、むしろ、ハードディスク・ソフトウェア・ドライバによってエクスポートするものに類似したブロック・デバイス・インターフェイスをサポートするものであるからである。依然として、この用語は一般的に使用されている。本文では「フラッシュファイル・システム」および「フラッシュ管理システム」を置換可能に使用する。
【０００６】
仮想アドレスから物理アドレスへのマッピングを実現する、他の、従来の技術によるシステムが、バン氏の米国特許第５，９３７，４２５号、そしてラッサー氏の米国特許第６，５９１，３３０号に開示されている。これら両特許も、すべての目的のために、参照によって完全に記述したものとして本文に含むものとする。
【０００７】
特にＮＡＮＤタイプ・フラッシュデバイスに適当な米国特許第５，９３７，４２５号においては、マッピングは、図１（従来の技術）を参照して、以下の通りに実行される。物理アドレス・スペース１３は、ユニット１１１から構成される。これらは、実際、消去可能な最小塊である消去ブロックである。各物理ユニット１１１は、一つ以上の物理ページ１１３を含み、１ページが、書き込みが可能な最小塊である。仮想アドレス・スペース１１は、物理ユニットと同じサイズを持つ仮想ユニット１２１から構成される。各仮想ユニットは、物理ページ１１３と同じサイズを持つ一つ以上の仮想ページ１２３を含む。読み書きのために、アプリケーションが仮想アドレスを提供すると、そのアドレスが属する仮想ユニット番号が、仮想アドレスから抽出される。各仮想ユニット１２１へ、一つの物理ユニット１１１、あるいは一連の複数の物理ユニット１１１を指定するマッピングがあり、それから、仮想ページ１２３を物理ページ１１３へ関連づける「ローカル」マッピング・ルールを使用する、または物理ページ１１３と共に記憶した制御情報を使用することによって、仮想ユニット１２１内の要求仮想ページ１２３に対応する物理ページ１１３が、対応する物理ユニット１１１内に位置づけられる。
【０００８】
ＵＳ５，９３７，４２５に開示された方法の利点の一つは、ユニットがページよりも非常に少ないことから、メイン・マッピングが、ページではなくユニットに対して実行されるので、仮想ページが物理ページに直接的にマップされた場合よりも、変換テーブルが非常に小さくなることである。もう一つの利点は、一つの仮想ユニット１２１へ複数の物理ユニット１１１を割り当て可能なことから生じる、書き込み性能の改善である。
【０００９】
ＮＡＮＤフラッシュはＮＯＲフラッシュよりも安価であるため、ほとんどの、フラッシュに基づくデータ集中記憶デバイスは、今日、ＮＡＮＤフラッシュを使用する。先に論じた考慮から、現在普及しているＮＡＮＤフラッシュメモリに基づく記憶デバイスの多くは、一方の側でオペレーティングシステム、そして記憶デバイスを使用するソフトウェア・アプリケーションを実行するホストプロセッサと、他方の側で記憶を行うフラッシュメモリ・メディアとの間に、フラッシュメモリ・コントローラが位置するというアーキテクチャを持つ。コントローラは、フラッシュ管理システムの機能を含み、また、先に述べたようなアドレス・マッピングの機能を含む。コントローラは、エラー補正、暗号法等の、追加の機能を含んでもよいが、これらの追加の機能は、本発明との密接な関係はない。
【００１０】
そのようなアーキテクチャを採用するほとんどの周知のＮＡＮＤフラッシュメモリ記憶デバイスは、例えばＳＤまたはＭＭＣカード等の、デジタルカメラや携帯電話内で使用するメモリ・カードである。しかし、このアーキテクチャを採用する、ＵＳＢフラッシュドライブ（ＵＦＤ）、コンパクトフラッシュ（ＣＦ）（登録商標）カード等の、多くの他のデバイスもある。
【００１１】
フラッシュ管理、より具体的にはアドレス・マッピングが、分離コントローラ内で実行されると共にソフトウェア・アプリケーションを実行するホスト・プロセッサから隠されている、そのようなメモリ・アーキテクチャの利点は、記憶デバイスへホスト・プロセッサを統合する単純さにある。ホストの観点から、ホストには、不良ブロックのない、そして各記憶セクタへのランダムアクセスが可能な、理想的な記憶デバイスが提示される。記憶デバイスをホストへ統合するために唯一やるべきことは、ＵＳＢ、ＳＤ等の、コントローラが必要なインターフェイス・プロトコルを実現することである。ほとんどのオペレーティングシステムは、それらのインターフェイス・プロトコルのための既製のドライバを提供するため、統合化の努力は最小限である。
【００１２】
しかしながら、このアーキテクチャを採用するすべての現在の解決策に共通する一つの欠点は、ホスト・プロセッサが記憶デバイスからブートできないことである。本文における用語「ブート」は、電源オンの直後に、記憶デバイス内に記憶されたコードでコード実行を開始するホスト・プロセッサの機能を意味する。換言すれば、記憶デバイスは、電源オン後の「リセット」モードを通過したホスト・プロセッサが実行するその最初のコマンドが、その記憶デバイスから読み込まれるならば、ブート可能である。ホスト・プロセッサが、ＵＳＢに基づく、またはＳＤに基づく記憶デバイスから、そのオペレーティングシステム・コードをロードするシステムがあることは事実である（例えば、米国特許出願第１１/１０２，８１４号を参照）。しかし、すべてのそのようなケースでは、ホスト・プロセッサは、上記定義の「ブート」という意味においては記憶デバイスからブートしない。すべてのそれらのケースでは、電源オンの後にプロセッサが実行するその最初のコマンドは、別個のソース、すなわち、別のフラッシュデバイス（例えば、ＰＣ内のＢＩＯＳ）、内部ＲＯＭ、または他のソースから読み込まれる。他のソースからブート・コードを実行した後にのみ、ホスト・プロセッサは、フラッシュ管理システムを含むフラッシュ記憶デバイスへアクセスし、そこから、実行すべき追加コードを読み込む。典型的に、その追加コードは、オペレーティングシステムのコードであり、そして「記憶デバイスからオペレーティングシステムをブートする」、または「記憶デバイスからホスト・プロセッサをブートする」とさえ言うのが一般的であるが、それは、本文における用語「ブート」の意味ではない。本発明の目的のため、用語「ブート」は、ホスト・プロセッサをパワーアップした後の、その最初のコマンドの実行に関して上記に説明した制限的で限定された意味を持つと、常に理解すべきである。
【００１３】
ブート機能を提供しないこの欠点は、実は、上記アーキテクチャの従来の技術によるインプリメンテーションのもう一つの特性から生じるものである。すなわち、コントローラがホストへエクスポートするインターフェイス（または「バス」）は、実行可能ではない。「実行可能なインターフェイス」または「実行可能なバス」は、プロセッサがコンピュータ・マシン・コードを読み込んで直接的に実行できるインターフェイスである。この場合、最初にプロセッサ外の他のメモリ・デバイスへコピーしてから、実行のために再び読み込むことを必要としない。例えば、ＰＣがそのＳＲＡＭまたはＢＩＯＳデバイスにアクセスするパラレル・インターフェイスは、実行可能なインターフェイスであるが、ＵＳＢおよびＳＤインターフェイスは、実行可能なインターフェイスではない。
【００１４】
実行可能でないインターフェイスは、ブート機能を提供することはできない。これは偶然の一致ではないが、実行可能なインターフェイスの概念に固有のものである。すなわち、インターフェイスがブート機能を提供するのであれば、定義上、それは実行可能であろう。
【００１５】
図２は、上記に論じたアーキテクチャを持つフラッシュメモリ・デバイス４４を含む模範的な、従来の技術によるコンピュータ・システム２０を部分的に示す高度な概略ブロック図である。具体的には、システム２０はパソコン（ＰＣ）である。ＰＣ２０は、また、プロセッサ２２、ＢＩＯＳ２４、ＲＡＭ２６およびハードディスク２８を含み、すべては、バス３０を介して相互に通信する。ハードディスク２８は、ＰＣ２０のメイン不揮発性メモリとして機能する。ＰＣ２０のオペレーティングシステム３２は、ハードディスク２８内に記憶されている。電源オンで、プロセッサ２２は、ＢＩＯＳ２４からブートして、それからハードディスク２８からＲＡＭ２６へオペレーティングシステム２８をコピーし、ＲＡＭ２６からオペレーティングシステム２８を実行する。
【００１６】
オペレーティングシステム３２は、フラッシュメモリ・デバイス４４のためのドライバ３４を含む。ドライバ３４は、二層のソフトウェア、上層３６および下層３８を持つ。下層３８は、ホスト側ＵＳＢコントローラ４０を介して、本質的にフラッシュメモリ・デバイス４４との通信を管理する。上層３６は、下層およびメモリ・アクセス・コマンド（セクタの読み込み、セクタの書き込み）が取り扱うデータ・ストリームと、ＰＣ２０上で実行されるアプリケーションが理解可能な、それらのコマンドへのフラッシュメモリ・デバイス４４の応答との間の変換を行う。
【００１７】
フラッシュメモリ・デバイス４４は、ＵＳＢプロトコルに従ってホスト側ＵＳＢコントローラ４０を介してＰＣ２０の他の部分と通信するためのデバイス側ＵＳＢコントローラ４６、ＮＡＮＤフラッシュメモリ５０およびフラッシュコントローラ４８を含む。フラッシュコントローラ４８は、先に述べたように、ＮＡＮＤフラッシュメモリ５０に対する、フラッシュ管理システムを具現する。フラッシュメモリ・デバイス４４に対して、ＰＣ２０の他の部分は、フラッシュメモリ・デバイス４４のホストである。
【００１８】
上記の結果として、コントローラで具現したフラッシュ管理のアーキテクチャを採用するすべての、従来の技術によるＮＡＮＤフラッシュ記憶デバイスは、実行可能なインターフェイスもブート機能も持たないと、私たちは結論を下す。これは、それらの記憶デバイスを使用するどのシステムも、システムの最初のブート過程をサポートするためには他の記憶素子を含まなければならないので、重大な欠点と言える。
【００１９】
ブート機能を提供する異なるアーキテクチャを採用した従来の技術によるＮＡＮＤフラッシュ記憶デバイスも、いくつかはある。それらのシステムでは、ホスト・プロセッサとＮＡＮＤフラッシュデバイスとの間にコントローラがあるのだが、（アドレス・マッピングを含む）フラッシュ管理機能は、コントローラではなく、ホスト・プロセッサで具現されている。コントローラは、本発明に関連しないエラー補正等の、他の機能を提供し、またブート機能を提供する。コントローラは、ＳＲＡＭインターフェイス等の、実行可能なインターフェイスを実現してエクスポートする。コントローラは、また、ホストがＳＲＡＭインターフェイスを介してアクセス可能な、ＳＲＡＭメモリの小さなセクションを含む。システムの電源オンで、コントローラは、自動的に、そしてホスト・プロセッサから独立して、ＮＡＮＤ記憶セルからＳＲＡＭのそのセクションへ、初期ブート・コードをコピーする。ホストが、その「リセット」電源オン状態を経た後、コード実行を開始するとき、その実行すべき最初のコードが、そのＳＲＡＭセクションのコードである。この第二のアーキテクチャを採用するデバイスの例としては、イスラエル、クファル・サバのＭシステムズ・フラッシュディスク・パイオニア社のディスク・オン・チップ（商標）製品、そして韓国、ソウルのサムスン電子のワンＮＡＮＤ（商標）製品がある。両社は、ＮＡＮＤフラッシュメモリ・ダイとは別のダイ上にコントローラを設けた両製品、そしてコントローラおよびフラッシュメモリを共通のダイ上に統合した製品を提供する、あるいは提供してきた。本発明の目的では、同じ第二のアーキテクチャを持つ両異形態を考慮する。コントローラおよびＮＡＮＤフラッシュメモリを別々のダイ上、または同じダイ上のいずれにも設けることができるため、本発明は、両ケースに等しく適用できる。また、このアプリケーションでは、用語「記憶デバイス」が、コントローラが記憶素子から物理的に分離しているかどうかに拘わらず、常に、コントローラ（それが存在する場合）と実際にデータを記憶するデバイスとの組み合わせに言及する、と理解すべきであることに注意すべきである。
【００２０】
上記第二のアーキテクチャを採用するデバイスは、ブート・サポートの問題を解決する。しかしながら、これらのデバイスは、ホスト・プロセッサ上で実行するフラッシュメモリ管理を使用するため、ホスト・プロセッサとの統合化は、より複雑である。典型的に、そのような統合化は、記憶デバイス・ベンダーが、使用するプロセッサのタイプに対してコンパイル可能なソフトウェア・ドライバを提供することを必要とする。また、システムの実現に関する特定な詳細事項に応じて、そのソフトウェア・ドライバ・コードを少々仕立てる必要がある。
【００２１】
従来の技術は、上記二つのアーキテクチャの利点を組み合わせる記憶デバイスを全く提案していない。これは、驚くべきことではない。第一のアーキテクチャを採用するすべての解決策に関する設計者のメイン・ゴールは、統合化が非常に容易なインターフェイスを達成することであった。そういうわけで、彼らは、コントローラ内部のフラッシュ管理作動を隠すことを選択した。ホストと記憶デバイスとの間のインターフェイスとして実行可能なインターフェイスを選択することは、それらのデザイン目的を破ることになっただろう。実行可能なインターフェイスは、プロセッサと記憶デバイスとの間の相互作用のレベルを高めるため、それらの間の、より複雑な統合化を生じる。そういうわけで、ブート・サポートと、コントローラに基づくフラッシュ管理との両方を提供する、従来の技術による記憶デバイスは全く存在しない。
【００２２】
したがって、ブート・サポートと、コントローラに基づくメモリ管理との両方を提供するデータ記憶デバイスに対する必要性が広く認識されるため、そのようなものを得ることは非常に有利である。
【発明の概要】
【課題を解決するための手段】
【００２３】
本発明によれば、次のものを含むデータ記憶デバイスが提供される。（ａ）ＮＡＮＤフラッシュメモリ。（ｂ）実行可能なインターフェイス。そして（ｃ）ホストから実行可能なインターフェイスを介して、仮想アドレスでＮＡＮＤフラッシュメモリにアクセスするインストラクションを受信するための、そして仮想アドレスをＮＡＮＤフラッシュメモリ内の物理アドレスへ変換するためのコントローラ。
【００２４】
本発明によれば、次のステップを含む、システムを作動させるための方法が提供される。（ａ）システム内に、ブート・コードを記憶したＮＡＮＤフラッシュメモリを含むデータ記憶デバイスを含ませるステップ。（ｂ）電源オンで、ブート・コードを実行するステップ。（ｃ）その後、仮想アドレスでメモリにアクセスするインストラクションをデータ記憶デバイスへ出すステップ。そして（ｄ）データ記憶デバイスによって、仮想アドレスをメモリの物理アドレスへ変換するステップ。
【００２５】
本発明によれば、次のステップを含む、メモリを含むデータ記憶デバイスがデータ記憶デバイスのホストと相互作用するための方法が提供される。（ａ）ホストへ実行可能なインターフェイスを提示するステップ。（ｂ）ホストから、仮想アドレスでメモリにアクセスするインストラクションを受信するステップ。そして（ｃ）仮想アドレスをメモリの物理アドレスへ変換するステップ。
【００２６】
本発明の基本的なデータ記憶デバイスは、ＮＡＮＤフラッシュメモリ、実行可能なインターフェイスおよびコントローラを含む。コントローラは、データ記憶デバイスのホストから実行可能なインターフェイスを介して、仮想アドレスでＮＡＮＤフラッシュメモリにアクセスするインストラクションを受信するための、そして仮想アドレスをＮＡＮＤフラッシュメモリ内の物理アドレスへ変換するためのものである。ＮＡＮＤフラッシュメモリに「アクセスする」ことは、少なくとも、ＮＡＮＤフラッシュメモリからデータを読み込むこと、そしてＮＡＮＤフラッシュメモリへデータを書き込むことを含む。
【００２７】
コントローラは、また、ブート機能をホストへ提供するように作動可能であることが好ましい。コントローラがそのようなブート機能を提供する一つの好適な方法は、それ自体内に揮発性メモリを含ませ、ホストの起動時に、ＮＡＮＤフラッシュメモリから揮発性メモリへブート・コードをコピーすることである。揮発性メモリがＳＲＡＭであり、そして実行可能なインターフェイスがＳＲＡＭインターフェイスであることが最も好ましい。
【００２８】
ＮＡＮＤフラッシュメモリは、その中に、ホストが実行可能なインターフェイスを介してコントローラへインストラクションを送信するために実行するドライバのためのコードを記憶していることが好ましい。
【００２９】
本発明の一つの方法によれば、コンピュータ・システムを作動させるために、ＮＡＮＤフラッシュメモリを含むデータ記憶デバイスは、システム内に含まれる。ブート・コードは、そのメモリ内に記憶される。電源オンで、ブート・コードが実行される。その後、仮想アドレスでメモリにアクセスするインストラクションがデータ記憶デバイスへ出され、そしてデータ記憶デバイスが、仮想アドレスをメモリの物理アドレスへ変換する。
【００３０】
本発明のもう一つの方法によれば、メモリを含むデータ記憶デバイスは、ホストへ実行可能なインターフェイスを提示すること、仮想アドレスでメモリにアクセスするインストラクションをホストから受信すること、そして仮想アドレスをメモリの物理アドレスへ変換することによって、データ記憶デバイスのホストと相互作用する。
【図面の簡単な説明】
【００３１】
【図１】従来の技術による、仮想アドレスから物理アドレスへのマッピングを示す。
【図２】従来の技術によるコンピュータ・システムを部分的に示す、高度なブロック図である。
【図３】本発明のコンピュータ・システムを部分的に示す、高度なブロック図である。
【図４】本発明のコンピュータ・システムを部分的に示す、高度なブロック図である。
【発明を実施するための形態】
【００３２】
本発明を、例としてのみ、添付の図面を参照して説明する。
【００３３】
本発明は、それ自身の仮想アドレスから物理アドレスへの変換を実行すると共に、ホストへ実行可能なインターフェイスを提示するデータ記憶デバイスに関する。特に本発明は、ブート・メモリおよびメイン不揮発性メモリの両方として、そのホストが使用できる。
【００３４】
本発明によるデータ記憶デバイスの原理および作用は、図面とその説明文を参照することによって、よく理解することができる。
【００３５】
本発明は、前述の従来の技術によるアーキテクチャの両方とも異なり、それら二つの従来の技術によるアーキテクチャ間の一種のハイブリッド・アーキテクチャであるアーキテクチャを採用することによって、ブート・サポートと内部フラッシュ管理との両方を提供する。
【００３６】
本発明の記憶デバイスは、一方でデバイスの記憶メディアと、そして他方でホスト・プロセッサとインターフェイスするコントローラを含む。第一の従来の技術によるアーキテクチャの場合のように、コントローラは、フラッシュ管理の機能を含み、アドレス・マッピングの機能を含む。しかし、第一のアーキテクチャのデバイスとは異なり、コントローラがホスト・プロセッサへエクスポートするインターフェイスは、例えばＳＲＡＭインターフェイス等の、実行可能なインターフェイスである。第二のアーキテクチャの場合のように、コントローラは、また、ＳＲＡＭインターフェイスを介してホストがアクセス可能な、ＳＲＡＭメモリの小さなセクションを含む。システムの電源オンで、コントローラは、自動的に、そしてホスト・プロセッサから独立して、ＮＡＮＤ記憶セルからＳＲＡＭのそのセクションへ、初期ブート・コードをコピーする。ホストが、その「リセット」電源オン状態を経た後にコード実行を開始するとき、実行すべき最初のコードが、そのＳＲＡＭセクションのコードである。
【００３７】
再び図面を参照する。図３は、本発明のコンピュータ・システム６０を部分的に示す、高度な概略ブロック図である。図示のアーキテクチャが適当なコンピュータ・システムの例としては、例えばパソコン等のコンピュータ、コンピュータに基づく機器、そして携帯電話等のポータブル機器がある。システム６０と従来の技術によるシステム２０との両方に共通するコンポーネント（プロセッサ２２、ＲＡＭ２６およびバス３０）は、同一の参照番号を持つ。システム６０とシステム２０との間の主要な相違は、システム６０において、システム２０の三つの不揮発性メモリ・デバイス（ＢＩＯＳ２４、ハードディスク２８およびフラッシュメモリ・デバイス４４）が、単一のフラッシュメモリ・デバイス６２で置換されていることである。
【００３８】
フラッシュメモリ・デバイス６２は、ＮＡＮＤフラッシュメモリ６４、フラッシュコントローラ６６および実行可能なインターフェイス、特にＳＲＡＭインターフェイス６８を含む。ＮＡＮＤフラッシュメモリ内には、ブート・コード７０と、システム６０のオペレーティングシステム７２が記憶されている。オペレーティングシステム７２は、フラッシュメモリ・デバイス６２のためのドライバ７６を含む。フラッシュコントローラ４８のように、フラッシュコントローラ６６は、ＮＡＮＤフラッシュメモリ６４のためのフラッシュ管理システムを具現する。フラッシュコントローラ６６は、また、電源オンでフラッシュコントローラ６６がブート・コード７０をコピーする、コピー先のＳＲＡＭ７４を含む。ＳＲＡＭインターフェイス６８が実行可能であることは、システム６０がフラッシュメモリ・デバイス６２からブートすることを可能にする。これは、あたかも、第二の従来の技術によるアーキテクチャのフラッシュメモリ・デバイスを持つシステムのようである。フラッシュメモリ・デバイス６２に対して、システム６０の他の部分は、フラッシュメモリ・デバイス６２のホスト７８である。
【００３９】
システム６０が起動すると、フラッシュコントローラ６６は、ブート・コード７０をＳＲＡＭ７４へコピーする。プロセッサ２２は、ＳＲＡＭインターフェイス６８を介してＳＲＡＭ７４からブートし、それからＲＡＭ２６へオペレーティングシステム７２をコピーする。システム６０上で実行されるオペレーティングシステム７２による、そしてアプリケーションによるフラッシュメモリ・デバイス６２への、それ以降のアクセスは、ドライバ７６を介して行われる。ただし、ブート・コード７０を実行した後に、プロセッサ２２がオペレーティングシステム７２をＲＡＭ２６へコピーできるためには、ブート・コード７０が、ドライバ７６をＲＡＭ２６へコピーするためのインストラクションを含んでいなければならない。そうすれば、以降のオペレーティングシステム７２のＲＡＭ２６へのコピーは、単に、オペレーティングシステム７２の残部に関する。
【００４０】
システム６０の一つの欠点は、ドライバ７６が、ＳＲＡＭインターフェイス６８を介するフラッシュコントローラ６６との通信をサポートするよう、最初から書かれていなければならないことである。実行可能なインターフェイスに関連したより複雑な統合化を解決するために、本発明は、ホストと記憶デバイスとの間の実行可能な物理インターフェイス上で、ＵＳＢインターフェイスまたはＳＤインターフェイス等の、標準インターフェイス・プロトコルをエミュレートすることが好ましい。そのようなエミュレーションは、ホスト上で実行しているソフトウェア・アプリケーションまたはオペレーティングシステムが、標準インタフェースを物理的に持つデバイスへのアクセスのためにオペレーティングシステムが備える標準ドライバを使用することによって、記憶デバイスに容易にアクセスすることを可能にする。したがって、統合化のすべての努力は、エミュレーション・ソフトウェアへ局所化でき、エミュレーション・ソフトウェアは、記憶デバイス・タイプとホスト・プロセッサ・タイプとのいずれの組み合わせに対しても、僅かに一度だけ仕立てて統合させなければならない。
【００４１】
図４は、このエミュレーションを行う一つの方法を示す。図４は、本発明のもう一つのコンピュータ・システム８０を部分的に示す、高度な概略ブロック図である。システム８０は、システム６０の改良バージョンであり、システム２０、６０および／あるいは８０に共通するコンポーネントは、同一の参照番号を持つ。システム６０および８０の相違は、システム８０がフラッシュメモリ・デバイス６２にアクセスするために使用するドライバ８２が、システム２０の従来の技術によるドライバ３４を改良して書かれていることである。ドライバ８２は、上層３６を維持しているが、上層３６とＳＲＡＭインターフェイス６８との間の通信を管理するための、本発明の新しい下層８４を持つ。
【００４２】
本発明を限られた数の実施例に関して説明したが、本発明の多くの変形、修正、そして他の応用が可能であることは明らかである。
【図１】
2011258236.tif 000003
【図２】
2011258236.tif 000004
【図３】
2011258236.tif 000005
【図４】
2011258236.tif 000006
【外国語明細書】
2011258236000001.pdf
2011258236000002.pdf
2011258236000003.pdf
2011258236000004.pdf