コントローラを有するハイブリッドメモリデバイスとCPUとを備える計算機において、少なくとも2つのタイプのメモリに対し、メモリ拡張のために物理的メモリユニットの変更なしで、単一のインターフェースでデータ処理を取り扱うための方法であって、前記コントローラにおいて、前記ハイブリッドメモリデバイスと関連したインターフェースを通じてコマンド、アドレス、およびデータを受信するステップであって、前記ハイブリッドメモリデバイスが、少なくとも第1タイプのメモリと第2タイプのメモリとを含み、前記インターフェースは、前記第1タイプのメモリに対し定めたものであり、前記ハイブリッドメモリデバイスは、前記第1タイプのメモリのみを有するメモリデバイスに対するソフトウェア変更のみを含んでいて、前記第1タイプのメモリと前記第2タイプのメモリとを取り扱うために前記ハイブリッドメモリデバイスに対する物理的変更を不要とするステップと、前記コントローラにおいて、前記CPUから送出されて前記ハイブリッドメモリデバイスにおいて受信した情報が、前記ハイブリッドメモリデバイスと関連した前記第1タイプのメモリに対応するか判定を行い、対応する場合、前記第1タイプのメモリに信号を出力して、前記CPUが少なくとも1つのコマンドを前記第1タイプのメモリに伝達できるようにするステップと、前記コントローラにおいて、前記CPUから送出されて前記ハイブリッドメモリデバイスにおいて受信した情報が、前記ハイブリッドメモリデバイスと関連した前記第2タイプのメモリに対応するか判定を行い、対応する場合、前記第2タイプのメモリに信号を出力して前記CPUが少なくとも1つのコマンドを前記第2タイプのメモリに伝達できるようにするステップと、を備えた、方法。請求項1記載の方法であって、前記受信した情報が前記第2タイプのメモリに対応する場合、前記第1タイプのメモリをディスエーブルするステップを備えた方法。請求項1記載の方法であって、前記受信した情報が前記第2タイプのメモリに対応する場合、ビジー指示を出力し、前記第2タイプのメモリにおいてデータI/O動作を実行し、前記I/O動作が完了したときにレディー指示を出力するステップを備えた方法。請求項1記載の方法であって、前記受信した情報が前記第2タイプのメモリに対応する場合、前記ハイブリッドメモリデバイスの1つ以上のロケーションの別の集合において、コマンド情報およびデータアドレシング情報の一方または双方にアクセスするステップを備えた方法。請求項4記載の方法において、前記受信した情報は、データアドレシング情報に対応し、前記方法は、前記第2タイプのメモリの複数の可能なセクションの中から1つのセクションに、受信したアドレスをマッピングするために、前記データアドレシング情報を読み取るステップを備えてなる方法。計算機システムであって、CPUと、ハイブリッドメモリデバイスとを備え、前記ハイブリッドメモリデバイスが、ハードウェアタイプのメモリである第1のタイプのメモリと、ハードウェアタイプのメモリである第2タイプのメモリと、前記第1タイプのメモリに対応するインターフェースであって、前記ハイブリッドメモリデバイスが前記第1タイプのメモリのアクセスプロトコルで動作し、前記第1タイプのメモリのみを有するメモリデバイスに関しては前記ハイブリッドメモリデバイスに対する物理的変更なしで、前記第1タイプのメモリと前記第2タイプのメモリの両方に対し前記インターフェースを動作させるためにソフトウェア変更のみが必要であるインターフェースと、前記インターフェース、前記第1タイプのメモリおよび前記第2タイプのメモリに結合されたコントローラであって、前記CPUから送出されて前記インターフェースを介して受信した情報が、前記第1タイプのメモリまたは前記第2タイプのメモリに該当するのかの判定を行って、前記CPUが前記第1タイプのメモリ及び前記第2タイプのメモリと選択的に通信できるよう動作するコントローラと、を備えた計算機システム。請求項6記載の計算機システムであって、前記第1タイプのメモリは揮発性メモリを含み、前記第2タイプのメモリは不揮発性メモリを含み、前記インターフェースを介して受信した前記情報が、前記第1タイプのメモリまたは前記第2タイプのメモリに該当するのか前記コントローラが判定を行う基となる情報の少なくとも一部は、前記第1タイプのメモリに対応するメモリアドレスにおいて受信するシステム。請求項7記載の計算機システムであって、前記揮発性メモリは、SDRAMタイプまたはDRAMタイプのメモリを含み、前記インターフェースを通じて受信する前記メモリアドレスおよび前記関連情報は、行アクセスストローブ、列アクセスストローブ、および制御情報を含むシステム。請求項7記載の計算機システムであって、前記不揮発性メモリは、フラッシュメモリを含み、前記システムは、前記フラッシュメモリを用いて実行されるデータI/O動作をバッファするために、前記コントローラと関連したバッファを備えているシステム。請求項9記載の計算機システムであって、更にステータスインディケータを備えており、前記コントローラは、前記ステータスインディケータを通じて、データI/O動作がビジーかまたは完了したかを通知するシステム。請求項6記載の計算機システムであって、前記ハイブリッドメモリデバイスをデュアルインラインメモリモジュールに組み込んでなるシステム。請求項6記載の計算機システムであって、前記コントローラは、前記第1タイプのメモリに対応する1つ以上のロケーションの集合において、コマンド情報およびデータアドレシング情報の一方または双方にアクセスするシステム。請求項6記載の計算機システムであって、前記コントローラは、a前記第1タイプのメモリと直接通信し、かつb前記第2タイプのメモリと通信するのに使用されるバッファセットを有するシステム。計算機であって、1中央処理ユニットCPUと、2ハイブリッドメモリデバイスであって、DRAMベースのメモリと、前記DRAMベースのメモリの速度未満の速度を有するフラッシュタイプのメモリと、DRAMベースのメモリのみを有するメモリデバイスに対するファームウェア変更のみを含む物理的アーキテクチャであって、前記ハイブリッドメモリデバイスにおいて前記フラッシュタイプのメモリを取り扱うために物理的変更を行わない物理的アーキテクチャと、前記DRAMベースのメモリに対応するインターフェースと、少なくとも前記DRAMベースのメモリの速度の速度一致バッファセットを有するコントローラと、を含むハイブリッドメモリデバイスと、3コンポーネントであって、I/O関係のデータを前記DRAMベースのメモリの1つ以上のアドレスに書き込むことを含む入力/出力I/O動作を、前記コントローラに対し、前記インターフェースを通じて開始し、前記DRAMベースのメモリの前記1つ以上のアドレスを前記フラッシュタイプのメモリに対しマッピングすることを前記コントローラに行わせ、これにより、前記I/O関係のデータが前記フラッシュタイプのメモリで使用されるべきことを示し、前記コントローラに状態をビジーにセットさせ、該状態が前記コントローラのビジー状態を前記ファームウェアに対して示し、前記速度一致バッファセットにデータを入れ、前記DRAMベースのメモリにおける速度の差を補償するに足るデータを前記速度一致バッファセットが有するときに前記状態をレディーにセットし、前記状態がレディーにセットされていると判定されたときに前記速度一致バッファセットから前記データを出力するよう動作するコンポーネントと、を備えてなり、前記コントローラが、前記CPUから送出されて前記インターフェースを介して前記ハイブリッドメモリデバイスにおいて受信された情報が前記RAMベースのメモリと前記フラッシュタイプのメモリとのいずれに適用されるかを決定して、前記CPUが前記RAMベースのメモリ及び前記フラッシュタイプのメモリと選択的に通信できるように動作する計算機。請求項14記載の計算機であって、前記I/O関係のデータには、読み取りコマンドに関連し、前記速度一致バッファセットをデータで充填することは、前記フラッシュタイプのメモリから前記データを入手することを含み、前記データを出力することは、前記フラッシュタイプのメモリから入手した前記データを出力することを含む計算機。請求項14記載の計算機であって、前記I/O関係のデータには、書き込みコマンドが関連し、前記速度一致バッファセットをデータで充填することは、前記ファームウェアから前記データを入手することを含み、前記データを出力することは、前記フラッシュタイプのメモリに前記データを書き込むことを含む計算機。請求項14記載の計算機であって、前記CPUは、前記フラッシュタイプのメモリに気づかないシステム。揮発性および不揮発性メモリを組み合わせると、多くの状況において便益が得られるが、多くの場合、デバイスチップセットを設計し直す費用がベンダにとってはかかり過ぎであり、危険が大きいために、ベンダは、本来ならば揮発性および不揮発性メモリをデバイスの中に有することによって可能になるはずの新たな特徴やビジネスモデルを放棄しているのである。更に、既存のアーキテクチャモデルを用い、例えば、既存のDRAM主体デバイスをNANDフラッシュメモリによって最新にする単純な方法などなく、例えば、回路ボード全体を設計しなおして交換する必要があり、単純に既存のデバイスにメモリを追加したり、その中にあるメモリを変更するそして適宜ソフトウェアを更新するという訳にはいかない。更に、不揮発性およびDRAM主体メモリの間には、バス速度に大きな差がある。この摘要は、以下に詳細な説明において更に説明する代表的概念から選択して、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の鍵となる特徴または必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するようないずれの方法でも用いられることも意図していない。端的に言うと、ここに記載する主題の種々の形態は、第1タイプのメモリ例えば、揮発性DRAMタイプメモリと、第1タイプのメモリに対応するインターフェースと、第2タイプのメモリ例えば、不揮発性フラッシュタイプメモリとを含む、ハイブリッドメモリデバイスを対象とする。メモリデバイスは、インターフェース、第1タイプのメモリ、および第2タイプのメモリに結合されているコントローラを含む。インターフェースにおいて受信したコマンドおよび/またはメモリアドレスのような情報に基づいて、コントローラは、I/O要求例えば、リードまたはライトのようなコマンドが、第1タイプのメモリまたは第2タイプのメモリのどちらに向けられているのか判定を行う。つまり、ハイブリッドメモリデバイスのコントローラにおいてコマンド、アドレス、およびデータを受信することにより、1つのタイプのメモリに合わせて定めた1つのインターフェースを通じて、ソフトウェア例えば、デバイスのファームウェアまたはプログラムは異なるタイプのメモリにアクセスすることができる。コントローラは、第1タイプのメモリのインターフェース上で受信したコマンド/アドレスが、メモリデバイスと関連した第2タイプのメモリに向けられているのか否か判定を行い、そうであれば、少なくとも1つのコマンドを第2タイプのメモリに伝達するため、および/または第2タイプのメモリ上で少なくとも1つのデータ入力/出力I/O動作を実行するために、第2タイプのメモリに信号を出力する。その他の利点は図面と合わせて以下の詳細な説明を検討することから明白となろう。動作環境の一例図1は、計算機188の適した機能コンポーネントの一部の例を示し、ハンドヘルド/ポケットサイズ/タブレット型パーソナルディジタルアシスタント、機器、移動体電話機等において見ることができ、プロセッサ189、メモリ190、ディスプレイ192、およびキーボード193実体または仮想キーボードでもよいを含む。メモリ190は、一般に、揮発性メモリ例えば、RAMおよび不揮発性メモリ例えば、ROM、PCMCIAカード等の双方を含む。更に、以下で説明するが、例示のメモリ190は、ハイブリッドメモリデバイス1つ以上のチップに対応するを含む。ハイブリッドメモリデバイスは、フラッシュおよびDRAMまたはフラッシュおよびSDRAM同期DRAMというように、1つよりも多いタイプのメモリを内蔵し、一方のタイプが他方のタイプのインターフェースを共有する。Microsoft登録商標Windows登録商標系オペレーティングシステムまたはその他のオペレーティングシステムのような、オペレーティングシステム193が、メモリ190内に常駐することができ、プロセッサ189上で実行する。1つ以上のアプリケーションプログラム194およびデータ195がメモリ190の中にあってもよく、プログラム194はオペレーティングシステム193上で走る。アプリケーションの例には、電子メールプログラム、スケジューリングプログラム、PIM個人情報管理プログラム、ワープロプログラム、表計算プログラム、インターネットブラウザプログラム等が含まれる。また、計算機188は、メモリ190にロードしプロセッサ189上で実行する通知管理部のような、他のコンポーネント196も含むことができる。例えば、通知管理部は、例えば、アプリケーションプログラム195からの通知要求を処理することができる。計算機188は、例えば、1つ以上のバッテリまたは光給電システムとして実施される、電源197を有する。電源197は、更に、ACアダプタまたは給電ドッキングクレードルのような、内蔵バッテリを無効にするまたは再充電する外部電源も含むことができる。図1に表す一例の計算機188は、3つのタイプの外部デバイス例と共に示されており、これらはディスプレイ192、その他の出力メカニズム198例えば、1つ以上の発光ダイオード、即ち、LED、ならびに例えば、一体化スピーカおよび/またはオーディオジャックに結合されるオーディオ発生器199を含む。これらの出力デバイスの1つ以上は直接電源197に結合することができるので、活性化すると、バッテリ電力を保存するためにプロセッサ189およびその他のコンポーネントを停止しても、通知機構が指令する期間はオンのまま留まる。例えば、LEDは、ユーザが行動を起こすまでは、オンのまま留まることができる何らかの電力が得られる限り。その他は、システムの残りがオフになったとき、または活性化後のある有限期間でオフになるように構成するとよい。1つのインターフェースを有するハイブリッドメモリデバイスここに記載する技術の種々の形態は、総合的に、計算機の既存の物理的アーキテクチャに変更を加える必要なく、当該計算機において比較的大量の揮発性および不揮発性メモリを有することに対して、計算機例えば、デバイス188のメモリを拡張することを対象とする。一般に、この中の説明では、SDRAMおよびNANDフラッシュを内蔵するハイブリッドメモリ例えば、1つ以上のチップを備えているを追加または交換することによって、NANDフラッシュメモリをSDRAM主体デバイスに組み込む例をあげる。ハイブリッドメモリデバイスは、従来のSDRAMコンポーネントと同じインターフェースピンアウト、電圧プロトコル、およびアクセスプロトコルを含むを有する。しかしながら、言うまでもないことであるが、これらの形態および概念は、任意の1つ以上のタイプの揮発性および/または不揮発性メモリに適用され、例えば、種々のタイプのDRAM例えば、EDOを、SDRAM、DRAMの代わりに用いることができ、あるいはSDRAMを逆にフラッシュ主体デバイスに組み込むこともでき、NOR主体フラッシュメモリをSDRAMおよび/またはNAND主体フラッシュ、スタティックRAMSRAMと混合することもでき、あるいは他のタイプのRAMが前述のタイプのメモリの1つであってもよく、更に多くの揮発性メモリを、既存の揮発性メモリデバイスの代わりに追加することができ、更に多くの不揮発性メモリを、既存の不揮発性メモリデバイスの代わりに追加することができる等である。尚、異なるメモリタイプを所与の設計に合わせて元のメモリタイプに通常対応するインターフェースを有するハイブリッドメモリデバイスに組み込む際、通例、メモリ全体をデバイスに追加するが、必ずしも元のメモリタイプの量および/またはメモリ量全体が増大しなくてもよいそして、設計者が望むのであれば、減少する可能性があることを記しておく。更に、言うまでもないであろうが、ここに記載する概念は、従来の計算機例えば、デスクトップ、ノートブック、ラップトップ、またはタブレット型コンピュータシステム、パーソナルディジタルアシスタント、ポケットサイズパーソナルコンピュータ等と見なされるものに限定されるのではなく、逆に、揮発性または不揮発性メモリにデータを格納する必要性があるデバイスであればいずれにでも用いてもよく、移動体電話機、セットトップボックス、ハイブリッドハードディスク、テレビジョン受像機、リモートコントローラ、オーディオビジュアルデバイス、電気器具、家電製品等が含まれる。これらのデバイスの各々は、不揮発性メモリを揮発性メモリ設計に追加すること、またはその逆、あるいはコストがかかり危険が多いハードディスクの設計し直しをせずに、メモリを増大することができる。このように、例えば、移動体電話機のような、揮発性メモリを有するデバイスは、単にメモリチップまたは複数のメモリチップを置き換え、不揮発性ストレージで動作するようにファームウェアの一部を更新することにより、今やその内部に大量の不揮発性ストレージを含み、プログラム、音楽、画像等を格納することが可能となる。これについては、以下で説明する。このように、本発明は、ここに記載する例、構造、機能のいずれにも限定されない。逆に、ここに記載する例、構造、または機能のいずれもが非限定的であり、本発明は、計算およびデータストレージ一般において便益や利点を提供する種々の方法で用いることができる。図面の図2に移ると、揮発性メモリ204例えば、SDRAMおよび不揮発性メモリ206例えば、NANDフラッシュを含むハイブリッドメモリデバイス202デバイスの総合的な概念の一例が示されている。コントローラ208は、例えば、ファームウェア/ソフトウェアにおいて発生しCPUを通じてアドレスされるアドレスおよびコマンドに基づいて、アクセスすべきメモリ204または206を決定するロジックを内蔵する。図2に示すように、コントローラ208は、1つ以上のバッファを備えているバッファセット210を含むか、またそうでなければこれと関連付けることができる。バッファセット210は、一実現例では、速度一致プロセスに用いられる。例えば、現在では、SDRAMはフラッシュよりも遥かに速く、したがって外部コンポーネットにはSDRAMデバイスのように見えるインターフェースを有するハイブリッドメモリチップは、データをバッファセット210例えば、SDRAM、DRAM、またはSRAMにバッファして、速度やバーストモード要件を含むその他の要件に関して、SDRAMプロトコルに準拠する必要がある。つまり、バッファセット210は、通例、SDRAMまたはスタティックRAMSRAMのようなメモリを備えているが、少なくとも所与のSDRAMチップおよびそのプロトコルが要求する速度でなければならず、そうでなければ、ハイブリッドデバイスはときとして外部コンポーネントには粗悪なメモリであるように見える。尚、ハイブリッドメモリデバイスが高速メモリ例えば、SDRAMをそれよりも遅い例えば、フラッシュインターフェースに追加する場合、必ずしもこのようなバッファは必要でないことを記しておく。図3Aは、1つのハイブリッドメモリデバイス302Aが概略的にどのように動作するかの概念の一例を示し、ここでは、フラッシュメモリ306がある数のブロック例えば、ブロックF-1からF-nまでとして配列されており、SDRAMインターフェースを通じてアクセスされる。また、ハイブリッドメモリデバイス302Aは、SDRAMデバイス304も含む。以下で説明するが、1つのオンチップコントローラ308A例えば、図2のコントローラ208に対応するが、CPU389において発生した現在のアドレスに関して、SDRAM304またはフラッシュのどのセクションにアクセスするか決定する。一般に、コントローラ308Aは、コマンド、データ、およびアドレスをCPU389から受信する。これらは、従来のSDRAMプロトコルにしたがって出力される。尚、CPUはハイブリッドチップ上にある異なるタイプのメモリについて何も知る必要はなく、その既存のSDRAM主体バス上で通常通りに動作することを記しておく。図3Aにおいて、コントローラ308は、そのインターフェースの一部であるハイブリッドデバイスのSDRAMアドレス線に送られるアドレスを検出することができるロジックを含む。アドレス可能なアドレス範囲におけるアドレスの一部は、SDRAMに対応し、これらのアドレスについては、コントローラ308Aは、アドレス、コマンド、およびデータをSDRAMデバイス304に処理させる例えば、同等の0および1を転送する、またはデバイスが1および0を見ることを禁止しない。その結果、これらのアドレスに対して、ハイブリッドデバイスは従来のSDRAMデバイスのように作用する。アドレス可能範囲におけるある種のアドレスは、しかしながら、通例、指定ブロック320と呼ばれる連続範囲を含むコントローラ308には、フラッシュと関連があることが分かっており、本質的にフラッシュメモリ306へのウィンドウとして作用する。例えば、指定ブロックは、1つのタイプのフラッシュデバイスではフラッシュブロックサイズ、例えば、128KBに対応するとよい。指定ブロック320内にあるアドレスを転送する場合、コントローラ308によってSDRAMデバイス304を実際にまたは事実上ディスエーブルする。代わりに、コントローラ308は、コマンドをフラッシュメモリデバイス306に送り、フラッシュメモリデバイス306へのリードおよびライトデータの流れを制御する。設計に応じて、コントローラ308は、デバイス304のしかるべきデバイス入力線例えば、チップイネーブルをディスエーブルに変化させることによって、受信したアドレスをデバイス304に転送しないことによって、および/またはアドレスを転送するが例えば、リフレッシュのために必要な場合データライトを許可せず、あるいはどのデータもリードのために返送しないことによって、SDRAMコンポーネント304をディスエーブルすることができる。尚、フラッシュ306の量は、指定ブロック320のサイズに限定されるのではなく、むしろ、複数のフラッシュブロックまたは、フラッシュメモリのその他の配列があり、フラッシュ306全体の内どの部分例えば、ブロックにアクセスするのかを識別する追加のマッピング情報に応じて、コントローラ308が各ブロックなどをアクセスするようにしてもよいことを記しておく。この追加のマッピング情報は、コントローラ308に分かっている他のメモリ位置、例えば、アドレス可能なメモリの上位端部に書き込んでもよいまたは、恐らくは、指定ブロックの補追として。ファームウェア330は、既に本質的に全ての計算機上にあるが、CPU389を通じて適したプロトコルに応じてこの情報を読み取るまたは書き込むために更新することもでき、ファームウェア330からCPU389を通じてコントローラ308Aまでの破線によって図3Aに示す通り。このように、コマンド、データ、およびステータス情報332をデバイスファームウェア330および/またはその他の要求コード、以下簡略にするためにファームウェア330と呼ぶとハイブリッドメモリデバイス302Aとの間で伝達することができる。図3Bは、図3Aと同様の概念の図であるが、図3Bでは、代わりのコントローラ308Bが、複数のフラッシュブロック例えば、現在では図3BにおけるフラッシュブロックA1およびフラッシュブロックB0に別個にマップされている複数のウィンドウ320Aおよび320Bに対応する、複数のバッファ310-1および310-2を有することを除く。容易に認めることができるであろうが、図3Bには、フラッシュメモリデバイスに対するこのような2つのみの並列なしたがって、通例では、高速化したアクセスが示されているが、実用的な数であればいずれでも用いることができる。コントローラがどのように1つのウィンドウ図3Aまたは複数のウィンドウ図3Bをフラッシュの1つまたは複数の正しいセクションにマッピングするのかの一例として、図4は、従来のSDRAMデバイスの範囲に対応するアドレス範囲440を、線形に表して示す。この例では、SDRAMデバイスは4Mワード×16ビットである。簡略化のために、マッピングについては、図3Aの1つの指定ブロック320に関して説明するが、別個のマッピングも本質的に同様に行うことができることも容易に理解できよう。図4の例では、SDRAMアドレス空間に対応する最後の2ブロックが、コントローラ308およびファームウェア330によって、フラッシュメモリデバイス306へのコマンドチャネル444およびデータチャネル442として用いられる。これらのブロック442および444におけるマッピングおよびその他の情報332図3は、コントローラ308が理解するいずれかの適したプロトコルおよびその追加情報例えば、ファームウェアコード330のソースを通じて、コントローラ308によってリードおよびライトを行うことができる。つまり、コントローラ308において追加情報332または図3Bにおける333、例えば、最後の2つの1キロバイトワードブロックにアクセスすることにより、フラッシュデバイス306と通信するコマンドおよびデータ経路が確立される。他の情報も、これらの空間にあってもよい。例えば、デバイスファームウェア330は、ブートストラッププロトコルを採用するためにメモリのこのセクションを用いることができ、これによって、ファームウェア330は、メモリデバイスが本当にハイブリッドデバイスであるか否か判定することができる。これは、一般に、図3のハイブリッドメモリデバイス302Aは、他の方法では従来のSDRAMデバイスから区別できないからである。その他に、これらのブロックを通じて伝達される可能性があるデータは、例えば、コントローラ308Aに、アドレス可能メモリ内部において指定ブロック320または図3Bでは複数のブロックがどこに位置するか知らせることができる。例えば、このように、指定ブロックは、望ましければ動的な場合も含めて、移動することができる。ハイブリッドメモリデバイスの一例の動作の説明に移ると、1つの適したコマンドプロトコルは、フラッシュデバイスのアドレスブロックおよびコマンド情報例えば、図3Aにおける332を転送するために用いられるシリアルプロトコルを備えている。尚、コントローラ308Aはコマンドおよびアドレス情報の変換を責務とするので、プロトコルは、異なるタイプのフラッシュデバイスにアクセスするように構成可能であり、例えば、1つのタイプのNANDデバイスはNORSRAMインターフェースを用い、これによって制御ロジックはデータのブロックにアクセスし、次いでSDRAMデータ配信プロトコルに合うようにデータのブロックをシリアル化する。フラッシュ306へのライトデータも同様に、フラッシュプロトコルの要求に応じて、コントローラ308Aによって変換する。例えば、一度にこのようなフラッシュデバイスに2KBが書き込まれる。容易に認めることができようが、SDRAMは現在フラッシュよりも1桁以上速いので、プロトコルは、コントローラ308Aが、フラッシュリードまたはライト要求がビジーであるとき、および要求が準備できたときをファームウェア330に通知する方法を含む。ロケーション332におけるステータスレジスタを用いることもできる。例えば、ファームウェア330は、リードまたはライトコマンドをコマンドブロック332を通じて送り、このコマンドの一部であるビットとするとよいステータスを、フラッシュ要求を受信したときにコントローラによって0にセットして、ビジーであることを示す。尚、コントローラ308Aは、リード要求上において、コントローラ308Aが、指定ブロックが既に現在のマッピングについての正しいデータを収容していることを知っているのであれば、ステータスをビジーに変化させなくてもよいことを記しておく。典型的な状況では、コントローラ308Aは、ステータスをビジーにセットし、そしてリードに対しては、バッファ310に要求されたデータを充填し始める。バッファが正しいデータを収容すると、後続のリード要求を予期して、要求を上回るのであってもよい、コントローラ308Aはステータスをレディーに切り換える。ファームウェア330は、要求を送って以来ステータスをポーリングしており、要求データを読めることを知る。次いで、コントローラ308Aはデータをバッファ310から出力する。例えば、SDRAMプロトコルによれば、コントローラは、1つの出力が要求されたときは、要求されたアドレスに対して1つのデータ集合例えば、バイトを出力するか、またはそのアドレスから開始する複数のデータ集合のバースト出力を適時に出力する。出力される集合の数は、現在のバーストモードに対応する。尚、現バーストモードは、ハードワイヤ設定によって確立することができ、バーストモードがソフト制御されていることを示す設定を含む。いずれにしても、SDRAM等価設定線および/またはコマンドソフト制御バーストに対するによって、モードをコントローラ308Aに知らせる。ライトも同様に処理され、コントローラ308Aは指定ブロックにあるデータをバッファ310にコピーしつつ、コントローラはビジー信号を供給する。ビジー信号は、遅い方のフラッシュに書き込むことによってライト要求が実際に完了するまで、ファームウェアによってポーリングされている。リード要求と同様に、ライト要求についても、ハイブリッドメモリデバイス302Aは、CPU389には、正しいSDRAM速度で動作しているように見え、CPUはファームウェア330とコントローラ308Aとの間で行われつつあるステータスポーリングについては全く知らない。プロトコルを通じて、CPUの観点から同期メモリをこのように適正に動作させるが、実際には、要求側エンティティの観点からは、非同期に動作させている。つまり、SDRAMおよびフラッシュを備え標準的なSDRAMインターフェースを有するハイブリッドメモリデバイスにメモリコントローラを追加することにより、フラッシュメモリはSDRAMアドレス空間において無効とされる。フラッシュブロック/ページのSDRAMアドレス空間に対するマッピングを管理するために、コマンドプロトコル例えば、シリアルを用いる。これによって、フラッシュストレージを設けたいいずれの計算機においても、1つのピン互換マルチチップパッケージを既存のSDRAMデバイスと交換することが可能となり、しかもデバイスに対してはファームウェアの変更のみで、これを行うことができる。例えば、従来のディスクドライブのバッファを、フラッシュストレージを設ける単一チップアップグレードと交換することができ、これによって、既存のドライブをハイブリッドドライブにアップグレードする新たなファームウェアと共に、フラッシュストレージを用いることが可能になる。更に別の例では、不揮発性ストレージをセットトップボックスの設計に追加することや、または、当時は大容量ストレージを内蔵する設計としなかったが、例えば、何らかの新たなアプリケーションまたはビジネスモデルのために今になってそれが望ましくなった移動体電話機の設計に追加することも含む。具体的なアーキテクチャの一例として、図5および図6は、実際のSDRAMおよびNANDフラッシュデバイスの使用を例証する。インターフェースおよび内部コンポーネントは、SDRAM電圧プロトコルおよびSDRAMアクセスプロトコルの一例に合わせて構成されており、これによって、パッケージ内にある不揮発性メモリを今利用するには、ソフトウェアの変更例えば、デバイスのファームウェアの中にあるだけで済む。しかしながら、アドレシング特性が定められているのであれば、本質的にいずれのデバイスでも用いることができることは言うまでもない。尚、図5および図6におけるアーキテクチャは、慣例的な用途である16ビットデータ経路の使用を示すが、容易に認められるように、他のデータ経路幅でも同様に動作することを記しておく。この例では、マルチチップパッケージは、計算機においてSDRAMチップと物理的に交換することができ、その上揮発性SDRAMメモリおよび不揮発性NANDフラッシュメモリの双方を組み込むように記載されている。図5に表すSDRAMデバイス504は、1バイト、2バイト、8バイト、またはページ転送をサポートするバーストモードデバイス例えば、Micron登録商標のMT48LC4M16A2デバイスを備えており、例えば、2ギガビットのNANDフラッシュ606を含むハイブリッドメモリデバイス602図6において用いることができる。図5のSDRAMデバイスについてのアーキテクチャ例において表されているように、従来のSDRAMデバイスに関して、ハイブリッドメモリデバイスは、アドレス線例えば、A0~A11、BA0~BA1上でRAS/CAS周知の行アドレスストローブおよび列アドレスストローブ信号を受入、単一バイトのリードまたはライト以外では、RAS/CAS開始アドレスからデータを順次読み取るかまたは書き込む。尚、このタイプのメモリを用いる計算機は、シリアルにアクセスしたデータをバッファするが、これは通例多くの計算機においてオンボードキャッシュによって行われることを記しておく。開始アドレスに基づいてデータをシリアルに供給するので、ホスト例えば、CPUとSDRAM504との間にある比較的レイテンシが低いメモリコントローラ308は、チップに送られるアドレスを検出することができる。特定のアドレス範囲を検出することによって、SDRAMインターフェースに対するCEイネーブルを用いて、デバイス504をリフレッシュサイクルに入れて、データを別のデータ源によって供給することが可能になる。図5において、コントローラ308の制御ロジックは、SDRAMに送られるアドレスを検出する。前述のように、指定ブロック内部のアドレスを転送するとき、コントローラは、要求がフラッシュに向けられていることを知っている。このアーキテクチャ例では、SDRAMデバイスは、CEが当該デバイスに達することを防止することによって、ディスエーブルされていることを記しておく。次いで、コントローラの制御ロジックは、コマンドをフラッシュデバイス606に送るか、またはデータ転送ロジックによって、リードおよびライトデータのフラッシュデバイスへの流れを制御することができる。尚、SDRAMデバイスへのコマンドストリームは中断されず、マルチチップパッケージデバイスの初期化には、制御ロジックがSDRAMに対する動作バーストモードを検出し、フラッシュデータをメモリデータバスに転送するときにデータバーストを用いることを把握すればよいことを記しておく。このように、別個のアドレスバス上においてRAS/CAS転送によってアドレスをSDRAMに送るこのアーキテクチャでは、制御ロジックにおいてRAS/CASサイクルを検出することによって、コマンドおよびデータをフラッシュ606にそしてフラッシュ606から、適宜転送することができる。フラッシュ606に対するコマンドブロックへのライトのシリアルプロトコルによって、フラッシュデバイスのプロトコルをサポートすることが可能になる。図6に示すフラッシュデバイス例えば、Micron登録商標のMT29F2G16AABWPデバイスは、多重化バスを有し、これによって、データI/O、アドレス、およびコマンドが同じピンを共有する。尚、I/OピンI/O[15:8]は、x16構成におけるデータのみに用いられ、アドレスおよびコマンドはI/O[7:0]上で供給されることを記しておく。コマンドシーケンスは、通常、コマンドラッチサイクル、アドレスラッチサイクル、および、リードまたはライトのデータサイクルを含む。制御信号CE、WE、RE、CLE、ALE、およびWPは、フラッシュデバイスのリードおよびライト動作を制御する。尚、異なるフラッシュ、例えば、Micron登録商標のGbMT29F8G08FABデバイス上では、CEおよびCE2は各々独立した4Gbのアレイを制御することを記しておく。CE2は、それ自体のアレイに対してCEと同じように機能し、CEについて説明した動作は、CE2にも該当する。CEは、デバイスをイネーブルするために用いられる。CEがローであり、デバイスがビジー状態ではない場合、フラッシュメモリはコマンド、データ、およびアドレス情報を受け入れる。デバイスが動作を実行していないとき、CEピンは通例ハイに駆動されており、デバイスはスタンバイモードに入る。メモリがスタンバイになるのは、データが転送されておりデバイスがビジーでない間にCEがハイになるときである。これは、電力消費を削減するのに役立つ。CEのDontCare動作によって、NANDフラッシュが他のフラッシュまたはSRAMデバイスと同じ非同期メモリ上に常駐することが可能になる。そして、NANDフラッシュが内部動作でビジーの間は、メモリバス上にある他のデバイスにアクセスすることができる。この能力は、同一バス上に複数のNANDデバイスを必要とする設計のためにあり、例えば、他のデバイスからリードを行っている間に、1つのデバイスをプログラムすることができる。HIGHCLE信号は、コマンドサイクルが行われていることを示す。HIGHALE信号は、アドレス入力サイクルが発生していることを意味する。コマンドは、CEおよびALEがローであり、CLEがハイであり、デバイスがビジーでないときに、WEの立ち上がりエッジにおいて、コマンドレジスタに書き込まれる。これに対する例外は、リードステータスおよびリセットコマンドである。この特定的なコンポーネントでは、WEの立ち上がりエッジにおいてコマンドをコマンドレジスタに転送する。コマンドは、線I/O[7:0]上のみで入力される。x16インターフェースを有するデバイスでは、コマンドを発行するときには、線I/O[15:8]には0を書き込む必要がある。CEおよびCLEがローであり、ALEがハイであり、更にデバイスがビジーでないときに、WEの立ち上がりエッジにおいて、アドレスをアドレスレジスタに書き込む。アドレスを入力するのはI/O[7:0]上のみである。x16インターフェースを有するインターフェースでは、アドレスを発行するときにはI/O[15:8]にゼロを書き込む必要がある。一般に、5回のアドレスサイクル全てでデバイスに書き込む。これに対する例外は、ブロック消去コマンドであり、これは3回のアドレスサイクルだけで済む。ここに例示するフラッシュデバイスは、多重化デバイスであり、これによってアドレス、コマンド、およびデータが単純な16ビットインターフェースを経由してシリアルに流れる。図7は、アドレスコマンドおよびデータ転送プロトコルのタイミングの、例示するフラッシュデバイスに対するシリアル性を例示する。尚、アドレス、コマンド、およびデータは、順次コマンドよびデータブロックに書き込むことによって、SDRAMインターフェースこれは多重化されていないから送られることを記しておく。前述のように、SDRAMのアドレス空間にあるコマンドブロックへのライトを検出することによって、要求されるデータをコントローラ508によってフラッシュデバイスに転送することができる。先に示したアドレス転送を拡大すると、アドレス情報のフラッシュデバイスへの転送を示すことができる。また、前述のように、フラッシュメモリのためのアドレス情報を転送するには、SDRAM上のコマンドブロックアドレスに対して複数回のライトを実行する。このエリアにあるSDRAMデータは利用できない。何故なら、デバイスがこれらのライトでは選択解除されているからである。このシリアル様式では、アドレスデータおよびコマンド情報は、フラッシュデバイスから書き込みそして読み取ることができる。制御ロジックは、前述のように、更に別のコマンドプロトコルも実装して、例えば、フラッシュデバイスがSDRAMデバイスの速度問題には関与しないで済むようにする。例えば、フラッシュデバイスのステータスを制御ロジックにバッファすることによって、ビジーおよび実行ステータスを示す追加のコマンド応答をシリアルプロトコルに追加することができる。フラッシュデバイスから返送されるデータおよびステータスを、データ転送ロジックにおいてSRAMの小ブロックにバッファし、フラッシュに対するリードおよびライト速度がSDRAMのそれと一致するようにする。フラッシュデバイスへのシリアル転送の典型的な例を図8に示す。これは、ファームウェア330によるSDRAMアドレス空間332図3に対するリードおよびライトの例を表す。SDRAMアドレス空間332は、フラッシュ306を制御するために確保されている。一般に、ファームウェアは、IDLEコマンドを、コントローラが検出したアドレス空間332に書き込むことによって、ステップ802においてフラッシュコマンドを送る。ステップ804において、ファームウェアはフラッシュブロックアドレス要求を送る。この要求は、コマンドアドレス空間に対する1つのライトコマンドと共に、どのブロックそしてどのアドレスを用いるか示す5つのアドレスライトを含む。こうして、コントローラは、ライトを実行するために必要となる情報を有することになる。ステップ806および808の各々において、ファームウェア330は、ライトコマンドおよびバーストリードを発行し、ステップ810を経由してループすることによって、ステータスについてポーリングし、フラッシュリードバーストステップ812を送る。代替実現例では、レジスタに基づくプロトコルが、一連のレジスタにロードすることによって、フラッシュに対するアクセスを与える。これには、コマンドの実行を開始するようにセットしたビジーワードをレジスタに書き込むことを含む。これによって、1回のページライトで1つまたは複数のフラッシュブロックのライトまたはフェッチを開始することが可能となる。この代替案では、ビジーワードは、コマンドを完了したときにコントローラによって切り換えられる。サポートされるコマンドには、アドレス/ブロックフェッチまたはアドレス範囲フェッチ、アドレス/ブロックライトまたはアドレス範囲ライト、およびアドレス/ブロック削除またはアドレス範囲削除が含まれる。更に、コントローラはロジックを含むので、コントローラはフラッシュ管理を行うことができる。例えば、フラッシュは、何回かのリードおよびライトの後にはへたるので、コントローラは種々の利用可能なフラッシュブロックの使用を均衡にするために、アクセスをリマップすることができる。これを、へたれ均等化と呼ぶ。また、コントローラロジックは、誤り検出および訂正を実行し、更に既知の不良ブロックを論理的に利用可能から除去することによって、不良ブロック管理を実行することができる。図9は、デュアルインラインメモリモジュールDIMM902の一例の図であり、従来のパーソナルコンピュータのシステムメモリにどのようにしてフラッシュを追加できるかを例示する。フラッシュチップの実体は、SDRAMチップと同じ側、逆側、または双方にあってもよい。コントローラは、DIMM自体にあってもよく、あるいはその外部にあり、必要に応じてSDRAMをディスエーブルしてフラッシュデータに交換できるようにしてもよい。パーソナルコンピュータをオンにすると、BIOSファームウェアがハイブリッドDIMMメモリの存在を検査し、存在する場合、フラッシュからSDRAMメモリの少なくとも一部そのコードをロードする。不揮発性フラッシュメモリが存在すれば、ブート、即ち、フラッシュに格納されているデータから動作を再開することが可能になる。例えば、メモリの複数のブロックにマッピングされており、SDRAMまたはフラッシュのいずれとも区別されるCPUメモリキャッシュから、データをアクセスする。十分なフラッシュがあれば、冬眠の目的でSDRAM全体を保存することができ、あるいはハードディスクドライブのような周辺デバイスにアクセスすることなく、オペレーティングシステム全体をロードすることもできる。本発明には種々の修正や代替構造を取り入れることができるが、その内ある種の実施形態を例示して、図面に示しこれまで詳細に説明した。しかしながら、開示した具体的な形態に本発明を限定する意図はなく、逆に、本発明の主旨および範囲に該当するあらゆる修正、代替構造、および同等物を包含することを意図していることは言うまでもない。