(57)【要約】【課題】メモリ・コントローラを、異なるタイプのメモリ（例えば、ＳＤＲＡＭおよびフラッシュ・メモリ）を内部に有するハイブリッド・メモリ・デバイスの一構成要素とする技術について記載する。【解決手段】コントローラは、一方のタイプのメモリに合わせて定められた電圧およびアクセス・プロトコルに関して、メモリ・デバイスが１つのメモリ・インターフェースのみを有すればよいように動作する。例えば、コントローラは、標準的なＳＤＲＡＭインターフェースを有するメモリ・デバイスがＳＤＲＡＭおよび不揮発性メモリ双方へのアクセスを与えることを可能にし、揮発性メモリ・アドレス空間の１つ以上の指定ブロックにおいて、不揮発性メモリを無効にする（またはその逆）。コマンド・プロトコルは、メモリ・ページを揮発性メモリ・インターフェース・アドレス空間にマッピングし、例えば、不揮発性ストレージを設けることを望むいずれの計算機においても、１つのピン互換マルチチップ・パッケージと、既存の揮発性メモリ・デバイスとを交換することが可能となるが、フラッシュにアクセスするためには、デバイスにソフトウェアの変更を行うだけで済む。【選択図】図３Ｂ
2009540431.tif 000002
【特許請求の範囲】
【請求項１】
メモリ・デバイスにおいて、
前記メモリ・デバイスと関連した第１タイプのメモリに対し定めたインターフェースを通じて、前記メモリ・デバイスにおけるコマンド、アドレス、およびデータを、コントローラにおいて受信するステップと、
前記コントローラにおいて、前記メモリ・デバイスにおいて受信した情報が、前記メモリ・デバイスと関連した第２タイプのメモリに対応するか判定を行い、そうである場合、少なくとも１つのコマンドを前記第２タイプのメモリに伝達するためおよび前記第２タイプのメモリ上において少なくとも１つのデータ入力／出力（Ｉ／Ｏ）動作を実行するための一方または双方のために、前記第２タイプのメモリに信号を出力するステップと、
を備えている、方法。
【請求項２】
請求項１記載の方法であって、更に、前記受信した情報が前記第２タイプのメモリに対応する場合、前記第１タイプのメモリをディスエーブルするステップを備えている、方法。
【請求項３】
請求項１記載の方法であって、更に、前記受信した情報が前記第２タイプのメモリに対応する場合、ビジー指示を出力し、前記第２タイプのメモリ上においてデータＩ／Ｏ動作を実行し、前記Ｉ／Ｏ動作が完了したときにレディ指示を出力するステップを備えている、方法。
【請求項４】
請求項１記載の方法であって、更に、前記受信した情報が前記第２タイプのメモリに対応する場合、前記メモリ・デバイスの１つ以上のロケーションの別の集合において、コマンド情報およびデータ・アドレシング情報の一方または双方にアクセスするステップを備えている、方法。
【請求項５】
請求項４記載の方法において、前記受信した情報は、データ・アドレシング情報に対応し、前記方法は、更に、前記第２タイプのメモリの複数の可能なセクションの中から１つのセクションに、受信したアドレスをマッピングするために、前記データ・アドレシング情報を読み取るステップを備えている、方法。
【請求項６】
メモリ・デバイスにおいて、
第１タイプのメモリと、
前記第１タイプのメモリに対応するインターフェースであって、前記メモリ・デバイスが前記第１タイプのメモリのアクセス・プロトコルで動作するようにする、インターフェースと、
第２タイプのメモリと、
前記インターフェース、前記第１タイプのメモリ、および前記第２タイプのメモリに結合されているコントローラであって、前記インターフェースにおいて受信した情報に基づいて、前記インターフェースを通じて受信した他の情報が、前記第１タイプのメモリまたは前記第２タイプのメモリのどちらに該当するのか判定を行う、コントローラと、
を備えている、システム。
【請求項７】
請求項６記載のシステムにおいて、前記第１タイプのメモリは揮発性メモリを含み、前記第２タイプのメモリは不揮発性メモリを含み、前記インターフェースにおいて受信し、前記インターフェースを通じて受信した前記関連情報が、前記第１タイプのメモリまたは前記第２タイプのメモリのどちらに該当するのか前記コントローラが判定を行う基となる情報の少なくとも一部は、前記第１タイプのメモリに対応するメモリ・アドレスにおいて受信する、システム。
【請求項８】
請求項７記載のシステムにおいて、前記揮発性メモリは、ＳＤＲＡＭタイプまたはＤＲＡＭタイプ・メモリを含み、前記インターフェースを通じて受信する前記メモリ・アドレスおよび関連情報は、行アクセス・ストローブ、列アクセス・ストローブ、および制御情報を含む、システム。
【請求項９】
請求項７記載のシステムにおいて、前記不揮発性メモリは、フラッシュ・メモリを含み、前記システムは、更に、前記フラッシュ・メモリを用いて実行するデータＩ／Ｏ動作をバッファするために、前記コントローラと関連したバッファを備えている、システム。
【請求項１０】
請求項９記載のシステムであって、更に、ステータス・インディケータを備えており、前記コントローラは、前記ステータス・インディケータを通じて、データＩ／Ｏ動作がビジーかまたは完了したかを通知する、システム。
【請求項１１】
請求項６記載のシステムにおいて、前記メモリ・デバイスをデュアル・インライン・メモリ・モジュールに組み込んだ、システム。
【請求項１２】
請求項６記載のシステムにおいて、前記コントローラは、更に、メモリ管理手段を含む、システム。
【請求項１３】
請求項６記載のシステムにおいて、前記コントローラは、前記第１タイプのメモリに対応する１つ以上のロケーションの集合において、コマンド情報およびデータ・アドレシング情報の一方または双方にアクセスする、システム。
【請求項１４】
計算機において、
第１タイプのメモリ、第２タイプのメモリ、およびコントローラに対応するインターフェースを含むハイブリッド・メモリ・デバイスと、
コマンド関連データを前記第１タイプのメモリの１つ以上のアドレスに書き込むことを含んで、前記第２タイプのメモリ上におけるデータ入力／出力動作を目的とする少なくとも１つのコマンドを含む、前記インターフェースを通じて、前記コントローラに対するコマンドを開始するコンポーネントと、
を備えている、システム。
【請求項１５】
請求項１４記載のシステムにおいて、前記コントローラは、ステータス関連データを前記第１タイプのメモリの１つ以上のアドレスに書き込むことによって、前記第２タイプのメモリのデータ入力／出力動作のステータス情報を、前記コンポーネントに通知する、システム。
【請求項１６】
請求項１４記載のシステムにおいて、前記コンポーネントは、前記計算機のファームウェア上で実行するコードを備えている、システム。
【請求項１７】
請求項１４記載のシステムにおいて、前記第１タイプのメモリは揮発性メモリに対応し、前記第２タイプのメモリは不揮発性メモリを含み、前記第１タイプのメモリにおける一定のロケーションにアドレスされるデータは、前記第２タイプのメモリにアクセスするために、前記コントローラによって制御される、システム。
【請求項１８】
請求項１４記載のシステムであって、更に、前記第２タイプのメモリを用いて実行するデータＩ／Ｏ動作をバッファするために、前記コントローラと関連したバッファを備えている、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
種々の既存の計算機および新しい計算機は、高速揮発性メモリ（例えば、ダイナミック・ランダム・アクセス・メモリ、即ち、ＤＲＡＭ）を利用して、動作命令やデータを保持する。このようなデバイスは、移動体電話機、テレビジョン・セット・トップ・ボックス、パーソナル・コンピュータのメモリ等を含む。また、計算機は、アプリケーションやデータを格納するために、大量の比較的安価な不揮発性ＮＡＮＤフラッシュ・メモリも増々含みつつある。
【０００２】
しかしながら、多くの既存のＤＲＡＭ主体計算機は、ＮＡＮＤフラッシュ・メモリをサポートするためのしかるべきバス・インターフェースがない設計となっており、ＮＡＮＤフラッシュ・メモリをサポートするには、デバイス・チップセットの設計しなおしが必要となるが、これにはコストも時間もかかる。同様に、殆どのＮＡＮＤフラッシュ主体デバイスも単純にＤＲＡＭを追加することができない。例えば、ＤＲＡＭ主体デバイスであったものを最新式モデルにして、フラッシュ・メモリを組み込むには、デバイスの物理的アーキテクチャに多大な変更が必要となり、その逆も言える。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
揮発性および不揮発性メモリを組み合わせると、多くの状況において便益が得られるが、多くの場合、デバイス・チップセットを設計し直す費用がベンダにとってはかかり過ぎであり、危険が大きいために、ベンダは、本来ならば揮発性および不揮発性メモリをデバイスの中に有することによって可能になるはずの新たな特徴やビジネス・モデルを放棄しているのである。更に、既存のアーキテクチャ・モデルを用い、例えば、既存のＤＲＡＭ主体デバイスをＮＡＮＤフラッシュ・メモリによって最新にする単純な方法などなく、例えば、回路ボード全体を設計しなおして交換する必要があり、単純に既存のデバイスにメモリを追加したり、その中にあるメモリを変更する（そして適宜ソフトウェアを更新する）という訳にはいかない。更に、不揮発性およびＤＲＡＭ主体メモリの間には、バス速度に大きな差がある。
【課題を解決するための手段】
【０００４】
この摘要は、以下に詳細な説明において更に説明する代表的概念から選択して、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の鍵となる特徴または必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するようないずれの方法でも用いられることも意図していない。
【０００５】
端的に言うと、ここに記載する主題の種々の形態は、第１タイプのメモリ（例えば、揮発性ＤＲＡＭタイプ・メモリ）と、第１タイプのメモリに対応するインターフェースと、第２タイプのメモリ（例えば、不揮発性フラッシュ・タイプ・メモリ）とを含む、ハイブリッド・メモリ・デバイスを対象とする。メモリ・デバイスは、インターフェース、第１タイプのメモリ、および第２タイプのメモリに結合されているコントローラを含む。インターフェースにおいて受信したコマンドおよび／またはメモリ・アドレスのような情報に基づいて、コントローラは、Ｉ／Ｏ要求（例えば、リードまたはライト）のようなコマンドが、第１タイプのメモリまたは第２タイプのメモリのどちらに向けられているのか判定を行う。
【０００６】
つまり、ハイブリッド・メモリ・デバイスのコントローラにおいてコマンド、アドレス、およびデータを受信することにより、１つのタイプのメモリに合わせて定めた１つのインターフェースを通じて、ソフトウェア（例えば、デバイスのファームウェアまたはプログラム）は異なるタイプのメモリにアクセスすることができる。コントローラは、第１タイプのメモリのインターフェース上で受信したコマンド／アドレスが、メモリ・デバイスと関連した第２タイプのメモリに向けられているのか否か判定を行い、そうであれば、少なくとも１つのコマンドを第２タイプのメモリに伝達するため、および／または第２タイプのメモリ上で少なくとも１つのデータ入力／出力（Ｉ／Ｏ）動作を実行するために、第２タイプのメモリに信号を出力する。
【０００７】
その他の利点は、図面と合わせて、以下の詳細な説明を検討することから明白となろう。
【図面の簡単な説明】
【０００８】
添付図面において、限定ではなく一例として、本発明を例示する。図面においては、同様の参照番号は同様の要素を示すこととする。
【図１】図１は、本発明の種々の形態を組み込むことができる計算機の代表例を示す。
【図２】図２は、コントローラと、メモリ・タイプの一方に合わせて定めた１つのインターフェースによって各々アクセスすることができる２タイプのメモリとを含む、ハイブリッド・メモリ・デバイスの一例の図である。
【図３Ａ】図３Ａは、ＳＤＲＡＭ、およびＳＤＲＡＭアクセス可能空間における指定メモリ・ブロックを通じてアクセスするフラッシュ・メモリとのＳＤＲＡＭインターフェースを有するハイブリッド・メモリ・デバイスの一例の図である。
【図３Ｂ】図３Ｂは、ＳＤＲＡＭ、およびＳＤＲＡＭアクセス可能空間における複数の指定メモリ・ブロックを通じてアクセスするおよびフラッシュ・メモリとのＳＤＲＡＭインターフェースを有するハイブリッド・メモリ・デバイスの一例の図である。
【図４】図４は、第２タイプのメモリとデータおよびコマンドを通信筒真するために用いられるセクションを有する、第１タイプのメモリに対応するアクセス可能メモリ空間の図である。
【図５】図５は、ハイブリッド・メモリ・デバイスに組み込むことができる１つの適したタイプのＳＤＲＡＭデバイスの一例の図である。
【図６】図６は、図５のデバイスのようなＳＤＲＡＭおよびフラッシュ・デバイスを内蔵したＳＤＲＡＭインターフェースを有するハイブリッド・メモリ・デバイスの一例の図である。
【図７】図７は、ＳＤＲＡＭデバイスおよびフラッシュ・デバイスを制御するためのタイミング図の一例を示す。
【図８】図８は、バースト・データ出力に合わせて構成されたＳＤＲＡＭに、コントローラがどのようにフラッシュ・データを出力することができるかに対応するステップ例の図である。
【図９】図９は、フラッシュのＤＲＡＭ主体（ＳＤＲＡＭを含む）パーソナル・コンピュータのメモリに追加するために、どのようにフラッシュをデュアル・インライン・メモリ・モジュール（ＤＩＭＭＭ）に追加すればよいかの図である。
【発明を実施するための形態】
【０００９】
動作環境の一例
【００１０】
図１は、計算機１８８の適した機能コンポーネントの一部の例を示し、ハンドヘルド／ポケット・サイズ／タブレット型パーソナル・ディジタル・アシスタント、機器、移動体電話機等において見ることができ、プロセッサ１８９、メモリ１９０、ディスプレイ１９２、およびキーボード１９３（実体または仮想キーボードでもよい）を含む。メモリ１９０は、一般に、揮発性メモリ（例えば、ＲＡＭ）および不揮発性メモリ（例えば、ＲＯＭ、ＰＣＭＣＩＡカード等）の双方を含む。更に、以下で説明するが、例示のメモリ１９０は、ハイブリッド・メモリ・デバイス（１つ以上のチップに対応する）を含む。ハイブリッド・メモリ・デバイスは、フラッシュおよびＤＲＡＭまたはフラッシュおよびＳＤＲＡＭ（同期ＤＲＡＭ）というように、１つよりも多いタイプのメモリを内蔵し、一方のタイプが他方のタイプのインターフェースを共有する。Microsoft（登録商標）Windows（登録商標）系オペレーティング・システムまたはその他のオペレーティング・システムのような、オペレーティング・システム１９３が、メモリ１９０内に常駐することができ、プロセッサ１８９上で実行する。
【００１１】
１つ以上のアプリケーション・プログラム１９４およびデータ１９５がメモリ１９０の中にあってもよく、プログラム１９４はオペレーティング・システム１９３上で走る。アプリケーションの例には、電子メール・プログラム、スケジューリング・プログラム、ＰＩＭ（個人情報管理）プログラム、ワープロ・プログラム、表計算プログラム、インターネット・ブラウザ・プログラム等が含まれる。また、計算機１８８は、メモリ１９０にロードしプロセッサ１８９上で実行する通知管理部のような、他のコンポーネント１９６も含むことができる。例えば、通知管理部は、例えば、アプリケーション・プログラム１９５からの通知要求を処理することができる。
【００１２】
計算機１８８は、例えば、１つ以上のバッテリまたは光給電システム(light-powered system)として実施される、電源１９７を有する。電源１９７は、更に、ＡＣアダプタまたは給電ドッキング・クレードルのような、内蔵バッテリを無効にするまたは再充電する外部電源も含むことができる。
【００１３】
図１に表す一例の計算機１８８は、３つのタイプの外部デバイス例と共に示されており、これらはディスプレイ１９２、その他の出力メカニズム１９８（例えば、１つ以上の発光ダイオード、即ち、ＬＥＤ）、ならびに例えば、一体化スピーカおよび／またはオーディオ・ジャックに結合されるオーディオ発生器１９９を含む。これらの出力デバイスの１つ以上は直接電源１９７に結合することができるので、活性化すると、バッテリ電力を保存するためにプロセッサ１８９およびその他のコンポーネントを停止しても、通知機構が指令する期間はオンのまま留まる。例えば、ＬＥＤは、ユーザが行動を起こすまでは、オンのまま留まることができる（何らかの電力が得られる限り）。その他は、システムの残りがオフになったとき、または活性化後のある有限期間でオフになるように構成するとよい。
１つのインターフェースを有するハイブリッド・メモリ・デバイス
【００１４】
ここに記載する技術の種々の形態は、総合的に、計算機の既存の物理的アーキテクチャに変更を加える必要なく、当該計算機において比較的大量の揮発性および不揮発性メモリを有することに対して、計算機（例えば、デバイス１８８）のメモリを拡張することを対象とする。一般に、この中の説明では、ＳＤＲＡＭおよびＮＡＮＤフラッシュを内蔵するハイブリッド・メモリ（例えば、１つ以上のチップを備えている）を追加または交換することによって、ＮＡＮＤフラッシュ・メモリをＳＤＲＡＭ主体デバイスに組み込む例をあげる。ハイブリッド・メモリ・デバイスは、従来のＳＤＲＡＭコンポーネントと同じインターフェース（ピンアウト、電圧プロトコル、およびアクセス・プロトコルを含む）を有する。しかしながら、言うまでもないことであるが、これらの形態および概念は、任意の１つ以上のタイプの揮発性および／または不揮発性メモリに適用され、例えば、種々のタイプのＤＲＡＭ（例えば、ＥＤＯ）を、ＳＤＲＡＭ、ＤＲＡＭの代わりに用いることができ、あるいはＳＤＲＡＭを逆にフラッシュ主体デバイスに組み込むこともでき、ＮＯＲ主体フラッシュ・メモリをＳＤＲＡＭおよび／またはＮＡＮＤ主体フラッシュ、スタティックＲＡＭ（ＳＲＡＭ）と混合することもでき、あるいは他のタイプのＲＡＭが前述のタイプのメモリの１つであってもよく、更に多くの揮発性メモリを、既存の揮発性メモリ・デバイスの代わりに追加することができ、更に多くの不揮発性メモリを、既存の不揮発性メモリ・デバイスの代わりに追加することができる等である。尚、異なるメモリ・タイプを（所与の設計に合わせて元のメモリ・タイプに通常対応するインターフェースを有する）ハイブリッド・メモリ・デバイスに組み込む際、通例、メモリ全体をデバイスに追加するが、必ずしも元のメモリ・タイプの量および／またはメモリ量全体が増大しなくてもよい（そして、設計者が望むのであれば、減少する可能性がある）ことを記しておく。
【００１５】
更に、言うまでもないであろうが、ここに記載する概念は、従来の計算機（例えば、デスクトップ、ノートブック、ラップトップ、またはタブレット型コンピュータ・システム、パーソナル・ディジタル・アシスタント、ポケット・サイズ・パーソナル・コンピュータ等）と見なされるものに限定されるのではなく、逆に、揮発性または不揮発性メモリにデータを格納する必要性があるデバイスであればいずれにでも用いてもよく、移動体電話機、セット・トップ・ボックス、ハイブリッド・ハード・ディスク、テレビジョン受像機、リモート・コントローラ、オーディオビジュアル・デバイス、電気器具、家電製品等が含まれる。これらのデバイスの各々は、不揮発性メモリを揮発性メモリ設計に追加すること、またはその逆、あるいはコストがかかり危険が多いハードディスクの設計し直しをせずに、メモリを増大することができる。このように、例えば、移動体電話機のような、揮発性メモリを有するデバイスは、単にメモリ・チップ（または複数のメモリ・チップ）を置き換え、不揮発性ストレージで動作するようにファームウェアの一部を更新することにより、今やその内部に大量の不揮発性ストレージを含み、プログラム、音楽、画像等を格納することが可能となる。これについては、以下で説明する。
【００１６】
このように、本発明は、ここに記載する例、構造、機能のいずれにも限定されない。逆に、ここに記載する例、構造、または機能のいずれもが非限定的であり、本発明は、計算およびデータ・ストレージ一般において便益や利点を提供する種々の方法で用いることができる。
【００１７】
図面の図２に移ると、揮発性メモリ２０４（例えば、ＳＤＲＡＭ）および不揮発性メモリ２０６（例えば、ＮＡＮＤフラッシュ）を含むハイブリッド・メモリ・デバイス２０２デバイスの総合的な概念の一例が示されている。コントローラ２０８は、例えば、ファームウェア／ソフトウェアにおいて発生しＣＰＵを通じてアドレスされるアドレスおよびコマンドに基づいて、アクセスすべきメモリ２０４または２０６を決定するロジックを内蔵する。
【００１８】
図２に示すように、コントローラ２０８は、１つ以上のバッファを備えているバッファ・セット２１０を含むか、またそうでなければこれと関連付けることができる。バッファ・セット２１０は、一実現例では、速度一致プロセスに用いられる。例えば、現在では、ＳＤＲＡＭはフラッシュよりも遥かに速く、したがって外部コンポーネットにはＳＤＲＡＭデバイスのように見えるインターフェースを有するハイブリッド・メモリ・チップは、データをバッファ・セット２１０（例えば、ＳＤＲＡＭ、ＤＲＡＭ、またはＳＲＡＭ）にバッファして、速度やバースト・モード要件を含むその他の要件に関して、ＳＤＲＡＭプロトコルに準拠する必要がある。つまり、バッファ・セット２１０は、通例、ＳＤＲＡＭまたはスタティックＲＡＭ（ＳＲＡＭ）のようなメモリを備えているが、少なくとも所与のＳＤＲＡＭチップおよびそのプロトコルが要求する速度でなければならず、そうでなければ、ハイブリッド・デバイスはときとして外部コンポーネントには粗悪なメモリであるように見える。尚、ハイブリッド・メモリ・デバイスが高速メモリ（例えば、ＳＤＲＡＭ）をそれよりも遅い（例えば、フラッシュ）インターフェースに追加する場合、必ずしもこのようなバッファは必要でないことを記しておく。
【００１９】
図３Ａは、１つのハイブリッド・メモリ・デバイス３０２Ａが概略的にどのように動作するかの概念の一例を示し、ここでは、フラッシュ・メモリ３０６がある数のブロック（例えば、ブロックＦ−１からＦ−ｎまで）として配列されており、ＳＤＲＡＭインターフェースを通じてアクセスされる。また、ハイブリッド・メモリ・デバイス３０２Ａは、ＳＤＲＡＭデバイス３０４も含む。以下で説明するが、１つのオンチップ・コントローラ３０８Ａ（例えば、図２のコントローラ２０８に対応する）が、ＣＰＵ３８９において発生した現在のアドレスに関して、ＳＤＲＡＭ３０４またはフラッシュのどのセクションにアクセスするか決定する。一般に、コントローラ３０８Ａは、コマンド、データ、およびアドレスをＣＰＵ３８９から受信する。これらは、従来のＳＤＲＡＭプロトコルにしたがって出力される。尚、ＣＰＵはハイブリッド・チップ上にある異なるタイプのメモリについて何も知る必要はなく、その既存のＳＤＲＡＭ主体バス上で通常通りに動作することを記しておく。
【００２０】
図３Ａにおいて、コントローラ３０８は、そのインターフェースの一部であるハイブリッド・デバイスのＳＤＲＡＭアドレス線に送られるアドレスを検出することができるロジックを含む。アドレス可能なアドレス範囲におけるアドレスの一部は、ＳＤＲＡＭに対応し、これらのアドレスについては、コントローラ３０８Ａは、アドレス、コマンド、およびデータをＳＤＲＡＭデバイス３０４に処理させる（例えば、同等の０および１を転送する、またはデバイスが１および０を見ることを禁止しない(disable)）。その結果、これらのアドレスに対して、ハイブリッド・デバイスは従来のＳＤＲＡＭデバイスのように作用する。
【００２１】
アドレス可能範囲におけるある種のアドレスは、しかしながら、（通例、指定ブロック３２０と呼ばれる連続範囲を含む）コントローラ３０８には、フラッシュと関連があることが分かっており、本質的にフラッシュ・メモリ３０６へのウィンドウとして作用する。例えば、指定ブロックは、１つのタイプのフラッシュ・デバイスではフラッシュ・ブロック・サイズ、例えば、１２８ＫＢに対応するとよい。指定ブロック３２０内にあるアドレスを転送する場合、コントローラ３０８によってＳＤＲＡＭデバイス３０４を（実際にまたは事実上）ディスエーブルする。代わりに、コントローラ３０８は、コマンドをフラッシュ・メモリ・デバイス３０６に送り、フラッシュ・メモリ・デバイス３０６へのリードおよびライト・データの流れを制御する。設計に応じて、コントローラ３０８は、デバイス３０４のしかるべきデバイス入力線（例えば、チップ・イネーブル）をディスエーブルに変化させることによって、受信したアドレスをデバイス３０４に転送しないことによって、および／またはアドレスを転送するが（例えば、リフレッシュのために必要な場合）データライトを許可せず、あるいはどのデータもリードのために返送しないことによって、ＳＤＲＡＭコンポーネント３０４をディスエーブルすることができる。
【００２２】
尚、フラッシュ３０６の量は、指定ブロック３２０のサイズに限定されるのではなく、むしろ、複数のフラッシュ・ブロック（または、フラッシュ・メモリのその他の配列）があり、フラッシュ３０６全体の内どの部分（例えば、ブロック）にアクセスするのかを識別する追加のマッピング情報に応じて、コントローラ３０８が各ブロックなどをアクセスするようにしてもよいことを記しておく。この追加のマッピング情報は、コントローラ３０８に分かっている他のメモリ位置、例えば、アドレス可能なメモリの上位端部(high end)に書き込んでもよい（または、恐らくは、指定ブロックの補追として）。ファームウェア３３０は、既に本質的に全ての計算機上にあるが、ＣＰＵ３８９を通じて適したプロトコルに応じてこの情報を読み取るまたは書き込むために更新することもでき、（ファームウェア３３０からＣＰＵ３８９を通じてコントローラ３０８Ａまでの破線によって図３Ａに示す通り。このように、コマンド、データ、およびステータス情報３３２をデバイス・ファームウェア３３０（および／またはその他の要求コード、以下簡略にするためにファームウェア３３０と呼ぶ）とハイブリッド・メモリ・デバイス３０２Ａとの間で伝達することができる。
【００２３】
図３Ｂは、図３Ａと同様の概念の図であるが、図３Ｂでは、代わりのコントローラ３０８Ｂが、複数のフラッシュ・ブロック（例えば、現在では図３Ｂにおけるフラッシュ・ブロックＡ１およびフラッシュ・ブロックＢ０）に別個にマップされている複数のウィンドウ３２０Ａおよび３２０Ｂに対応する、複数のバッファ３１０−１および３１０−２を有することを除く。容易に認めることができるであろうが、図３Ｂには、フラッシュ・メモリ・デバイスに対するこのような２つのみの並列な（したがって、通例では、高速化した）アクセスが示されているが、実用的な数であればいずれでも用いることができる。
【００２４】
コントローラがどのように１つのウィンドウ（図３Ａ）または複数のウィンドウ（図３Ｂ）をフラッシュの１つまたは複数の正しいセクションにマッピングするのかの一例として、図４は、従来のＳＤＲＡＭデバイスの範囲に対応するアドレス範囲４４０を、線形に表して示す。この例では、ＳＤＲＡＭデバイスは４Ｍワード×１６ビットである。簡略化のために、マッピングについては、図３Ａの１つの指定ブロック３２０に関して説明するが、別個のマッピングも本質的に同様に行うことができることも容易に理解できよう。
【００２５】
図４の例では、ＳＤＲＡＭアドレス空間に対応する最後の２ブロックが、コントローラ３０８およびファームウェア３３０によって、フラッシュ・メモリ・デバイス３０６へのコマンド・チャネル４４４およびデータ・チャネル４４２として用いられる。これらのブロック４４２および４４４におけるマッピングおよびその他の情報３３２（図３）は、コントローラ３０８が理解するいずれかの適したプロトコルおよびその追加情報（例えば、ファームウェア・コード３３０）のソースを通じて、コントローラ３０８によってリードおよびライトを行うことができる。つまり、コントローラ３０８において追加情報３３２（または図３Ｂにおける３３３）、例えば、最後の２つの１キロバイト・ワード・ブロックにアクセスすることにより、フラッシュ・デバイス３０６と通信するコマンドおよびデータ経路が確立される。他の情報も、これらの空間にあってもよい。例えば、デバイス・ファームウェア３３０は、ブートストラップ・プロトコルを採用するためにメモリのこのセクションを用いることができ、これによって、ファームウェア３３０は、メモリ・デバイスが本当にハイブリッド・デバイスであるか否か判定することができる。これは、一般に、図３のハイブリッド・メモリ・デバイス３０２Ａは、他の方法では従来のＳＤＲＡＭデバイスから区別できないからである。その他に、これらのブロックを通じて伝達される可能性があるデータは、例えば、コントローラ３０８Ａに、アドレス可能メモリ内部において指定ブロック３２０（または図３Ｂでは複数のブロック）がどこに位置するか知らせることができる。例えば、このように、指定ブロックは、望ましければ動的な場合も含めて、移動することができる。
【００２６】
ハイブリッド・メモリ・デバイスの一例の動作の説明に移ると、１つの適したコマンド・プロトコルは、フラッシュ・デバイスのアドレス・ブロックおよびコマンド情報（例えば、図３Ａにおける３３２）を転送するために用いられるシリアル・プロトコルを備えている。尚、コントローラ３０８Ａはコマンドおよびアドレス情報の変換を責務とするので、プロトコルは、異なるタイプのフラッシュ・デバイスにアクセスするように構成可能であり、例えば、１つのタイプのＮＡＮＤデバイスはＮＯＲ  ＳＲＡＭインターフェースを用い、これによって制御ロジックはデータのブロックにアクセスし、次いでＳＤＲＡＭデータ配信プロトコルに合うようにデータのブロックをシリアル化する。フラッシュ３０６へのライト・データも同様に、フラッシュ・プロトコルの要求に応じて、コントローラ３０８Ａによって変換する。例えば、一度にこのようなフラッシュ・デバイスに２ＫＢが書き込まれる。
【００２７】
容易に認めることができようが、ＳＤＲＡＭは現在フラッシュよりも１桁以上速いので、プロトコルは、コントローラ３０８Ａが、フラッシュ・リードまたはライト要求がビジーであるとき、および要求が準備できたときをファームウェア３３０に通知する方法を含む。ロケーション３３２におけるステータス・レジスタを用いることもできる。例えば、ファームウェア３３０は、リードまたはライト・コマンドをコマンド・ブロック３３２を通じて送り、このコマンドの一部であるビットとするとよいステータスを、フラッシュ要求を受信したときにコントローラによって０にセットして、ビジーであることを示す。尚、コントローラ３０８Ａは、リード要求上において、コントローラ３０８Ａが、指定ブロックが既に現在のマッピングについての正しいデータを収容していることを知っているのであれば、ステータスをビジーに変化させなくてもよいことを記しておく。
【００２８】
典型的な状況では、コントローラ３０８Ａは、ステータスをビジーにセットし、そしてリードに対しては、バッファ３１０に要求されたデータを充填し始める。バッファが正しいデータを収容すると、（後続のリード要求を予期して、要求を上回るのであってもよい）、コントローラ３０８Ａはステータスをレディに切り換える。ファームウェア３３０は、要求を送って以来ステータスをポーリングしており、要求データを読めることを知る。次いで、コントローラ３０８Ａはデータをバッファ３１０から出力する。例えば、ＳＤＲＡＭプロトコルによれば、コントローラは、１つの出力が要求されたときは、要求されたアドレスに対して１つのデータ集合（例えば、バイト）を出力するか、またはそのアドレスから開始する複数のデータ集合のバースト出力を適時に出力する。出力される集合の数は、現在のバースト・モードに対応する。尚、現バースト・モードは、ハードワイヤ設定によって確立することができ、バースト・モードがソフト制御されていることを示す設定を含む。いずれにしても、ＳＤＲＡＭ等価設定線および／またはコマンド（ソフト制御バーストに対する）によって、モードをコントローラ３０８Ａに知らせる。
【００２９】
ライトも同様に処理され、コントローラ３０８Ａは指定ブロックにあるデータをバッファ３１０にコピーしつつ、コントローラはビジー信号を供給する。ビジー信号は、遅い方のフラッシュに書き込むことによってライト要求が実際に完了するまで、ファームウェアによってポーリングされている。リード要求と同様に、ライト要求についても、ハイブリッド・メモリ・デバイス３０２Ａは、ＣＰＵ３８９には、正しいＳＤＲＡＭ速度で動作しているように見え、ＣＰＵはファームウェア３３０とコントローラ３０８Ａとの間で行われつつあるステータス・ポーリングについては全くしらない。プロトコルを通じて、ＣＰＵの観点から同期メモリをこのように適正に動作させるが、実際には、要求側エンティティの観点からは、非同期に動作させている。
【００３０】
つまり、ＳＤＲＡＭおよびフラッシュを備え標準的なＳＤＲＡＭインターフェースを有するハイブリッド・メモリ・デバイスにメモリ・コントローラを追加することにより、フラッシュ・メモリはＳＤＲＡＭアドレス空間において無効とされる。フラッシュ・ブロック／ページのＳＤＲＡＭアドレス空間に対するマッピングを管理するために、コマンド・プロトコル（例えば、シリアル）を用いる。これによって、フラッシュ・ストレージを設けたいいずれの計算機においても、１つのピン互換マルチチップ・パッケージを既存のＳＤＲＡＭデバイスと交換することが可能となり、しかもデバイスに対してはファームウェアの変更のみで、これを行うことができる。例えば、従来のディスク・ドライブのバッファを、フラッシュ・ストレージを設ける単一チップ・アップグレードと交換することができ、これによって、既存のドライブをハイブリッドドライブにアップグレードする新たなファームウェアと共に、フラッシュ・ストレージを用いることが可能になる。更に別の例では、不揮発性ストレージをセット・トップ・ボックスの設計に追加することや、または、当時は大容量ストレージを内蔵する設計としなかったが、例えば、何らかの新たなアプリケーションまたはビジネス・モデルのために今になってそれが望ましくなった移動体電話機の設計に追加することも含む。
【００３１】
具体的なアーキテクチャの一例として、図５および図６は、実際のＳＤＲＡＭおよびＮＡＮＤフラッシュ・デバイスの使用を例証する。インターフェースおよび内部コンポーネントは、ＳＤＲＡＭ電圧プロトコルおよびＳＤＲＡＭアクセス・プロトコルの一例に合わせて構成されており、これによって、パッケージ内にある不揮発性メモリを今利用するには、ソフトウェアの変更（例えば、デバイスのファームウェアの中にある）だけで済む。しかしながら、アドレシング特性が定められているのであれば、本質的にいずれのデバイスでも用いることができることは言うまでもない。尚、図５および図６におけるアーキテクチャは、慣例的な用途である１６ビット・データ経路の使用を示すが、容易に認められるように、他のデータ経路幅でも同様に動作することを記しておく。この例では、マルチチップ・パッケージは、計算機においてＳＤＲＡＭチップと物理的に交換することができ、その上揮発性ＳＤＲＡＭメモリおよび不揮発性ＮＡＮＤフラッシュ・メモリの双方を組み込むように記載されている。
【００３２】
図５に表すＳＤＲＡＭデバイス５０４は、１バイト、２バイト、８バイト、またはページ転送をサポートするバースト・モード・デバイス（例えば、Micron（登録商標）のMT48LC4M16A2デバイス）を備えており、例えば、２ギガビットのＮＡＮＤフラッシュ６０６を含むハイブリッド・メモリ・デバイス６０２（図６）において用いることができる。図５のＳＤＲＡＭデバイスについてのアーキテクチャ例において表されているように、従来のＳＤＲＡＭデバイスに関して、ハイブリッド・メモリ・デバイスは、アドレス線（例えば、Ａ０〜Ａ１１、ＢＡ０〜ＢＡ１）上でＲＡＳ／ＣＡＳ（周知の行アドレス・ストローブおよび列アドレス・ストローブ）信号を受入、単一バイトのリードまたはライト以外では、ＲＡＳ／ＣＡＳ開始アドレスからデータを順次読み取るかまたは書き込む。尚、このタイプのメモリを用いる計算機は、シリアルにアクセスしたデータをバッファするが、これは通例多くの計算機においてオンボード・キャッシュによって行われることを記しておく。
【００３３】
開始アドレスに基づいてデータをシリアルに供給するので、ホスト（例えば、ＣＰＵ）とＳＤＲＡＭ５０４との間にある（比較的レイテンシが低い）メモリ・コントローラ３０８は、チップに送られるアドレスを検出することができる。特定のアドレス範囲を検出することによって、ＳＤＲＡＭインターフェースに対するＣＥ＃（イネーブル）を用いて、デバイス５０４をリフレッシュ・サイクルに入れて、データを別のデータ源によって供給することが可能になる。
【００３４】
図５において、コントローラ３０８の制御ロジックは、ＳＤＲＡＭに送られるアドレスを検出する。前述のように、指定ブロック内部のアドレスを転送するとき、コントローラは、要求がフラッシュに向けられていることを知っている。このアーキテクチャ例では、ＳＤＲＡＭデバイスは、ＣＥ＃が当該デバイスに達することを防止することによって、ディスエーブルされていることを記しておく。次いで、コントローラの制御ロジックは、コマンドをフラッシュ・デバイス６０６に送るか、またはデータ転送ロジックによって、リードおよびライト・データのフラッシュ・デバイスへの流れを制御することができる。尚、ＳＤＲＡＭデバイスへのコマンド・ストリームは中断されず、マルチチップ・パッケージ・デバイスの初期化には、制御ロジックがＳＤＲＡＭに対する動作バースト・モードを検出し、フラッシュ・データをメモリ・データ・バスに転送するときにデータ・バーストを用いることを把握すればよいことを記しておく。
【００３５】
このように、別個のアドレス・バス上においてＲＡＳ／ＣＡＳ転送によってアドレスをＳＤＲＡＭに送るこのアーキテクチャでは、制御ロジックにおいてＲＡＳ／ＣＡＳサイクルを検出することによって、コマンドおよびデータをフラッシュ６０６にそしてフラッシュ６０６から、適宜転送することができる。フラッシュ６０６に対するコマンド・ブロックへのライトのシリアル・プロトコルによって、フラッシュ・デバイスのプロトコルをサポートすることが可能になる。
【００３６】
図６に示すフラッシュ・デバイス（例えば、Micron（登録商標）のMT29F2G16AABWPデバイス）は、多重化バスを有し、これによって、データＩ／Ｏ、アドレス、およびコマンドが同じピンを共有する。尚、Ｉ／ＯピンＩ／Ｏ［１５：８］は、ｘ１６構成におけるデータのみに用いられ、アドレスおよびコマンドはＩ／Ｏ［７：０］上で供給されることを記しておく。コマンド・シーケンスは、通常、コマンド・ラッチ・サイクル、アドレス・ラッチ・サイクル、および、リードまたはライトのデータ・サイクルを含む。制御信号ＣＥ＃、ＷＥ＃、ＲＥ＃、ＣＬＥ、ＡＬＥ、およびＷＰ＃は、フラッシュ・デバイスのリードおよびライト動作を制御する。尚、異なるフラッシュ、例えば、Micron（登録商標）のGb MT29F8G08FABデバイス上では、ＣＥ＃およびＣＥ２＃は各々独立した４Ｇｂのアレイを制御することを記しておく。ＣＥ２＃は、それ自体のアレイに対してＣＥ＃と同じように機能し、ＣＥ＃について説明した動作は、ＣＥ２＃にも該当する。
【００３７】
ＣＥ＃は、デバイスをイネーブルするために用いられる。ＣＥ＃がローであり、デバイスがビジー状態ではない場合、フラッシュ・メモリはコマンド、データ、およびアドレス情報を受け入れる。デバイスが動作を実行していないとき、ＣＥ＃ピンは通例ハイに駆動されており、デバイスはスタンバイ・モードに入る。メモリがスタンバイになるのは、データが転送されておりデバイスがビジーでない間にＣＥ＃がハイになるときである。これは、電力消費を削減するのに役立つ。
【００３８】
ＣＥ＃の"Don't Care"動作によって、ＮＡＮＤフラッシュが他のフラッシュまたはＳＲＡＭデバイスと同じ非同期メモリ上に常駐することが可能になる。そして、ＮＡＮＤフラッシュが内部動作でビジーの間は、メモリ・バス上にある他のデバイスにアクセスすることができる。この能力は、同一バス上に複数のＮＡＮＤデバイスを必要とする設計のためにあり、例えば、他のデバイスからリードを行っている間に、１つのデバイスをプログラムすることができる。HIGH CLE信号は、コマンド・サイクルが行われていることを示す。HIGH ALE信号は、アドレス入力サイクルが発生していることを意味する。コマンドは、ＣＥ＃およびＡＬＥがローであり、ＣＬＥがハイであり、デバイスがビジーでないときに、ＷＥ＃の立ち上がりエッジにおいて、コマンド・レジスタに書き込まれる。これに対する例外は、リード・ステータスおよびリセット・コマンドである。
【００３９】
この特定的なコンポーネントでは、ＷＥ＃の立ち上がりエッジにおいてコマンドをコマンド・レジスタに転送する。コマンドは、線Ｉ／Ｏ［７：０］上のみで入力される。ｘ１６インターフェースを有するデバイスでは、コマンドを発行するときには、線Ｉ／Ｏ［１５：８］には０を書き込む必要がある。ＣＥ＃およびＣＬＥがローであり、ＡＬＥがハイであり、更にデバイスがビジーでないときに、ＷＥ＃の立ち上がりエッジにおいて、アドレスをアドレス・レジスタに書き込む。アドレスを入力するのはＩ／Ｏ［７：０］上のみである。ｘ１６インターフェースを有するインターフェースでは、アドレスを発行するときにはＩ／Ｏ［１５：８］にゼロを書き込む必要がある。一般に、５回のアドレス・サイクル全てでデバイスに書き込む。これに対する例外は、ブロック消去コマンドであり、これは３回のアドレス・サイクルだけで済む。
【００４０】
ここに例示するフラッシュ・デバイスは、多重化デバイスであり、これによってアドレス、コマンド、およびデータが単純な１６ビット・インターフェースを経由してシリアルに流れる。図７は、アドレス・コマンドおよびデータ転送プロトコルのタイミングの、例示するフラッシュ・デバイスに対するシリアル性を例示する。尚、アドレス、コマンド、およびデータは、順次コマンドよびデータ・ブロックに書き込むことによって、ＳＤＲＡＭインターフェース（これは多重化されていない）から送られることを記しておく。
【００４１】
前述のように、ＳＤＲＡＭのアドレス空間にあるコマンド・ブロックへのライトを検出することによって、要求されるデータをコントローラ５０８によってフラッシュ・デバイスに転送することができる。先に示したアドレス転送を拡大すると、アドレス情報のフラッシュ・デバイスへの転送を示すことができる。また、前述のように、フラッシュ・メモリのためのアドレス情報を転送するには、ＳＤＲＡＭ上のコマンド・ブロック・アドレスに対して複数回のライトを実行する。このエリアにあるＳＤＲＡＭデータは利用できない。何故なら、デバイスがこれらのライトでは選択解除されている(deselected)からである。このシリアル様式では、アドレス・データおよびコマンド情報は、フラッシュ・デバイスから書き込みそして読み取ることができる。制御ロジックは、前述のように、更に別のコマンド・プロトコルも実装して、例えば、フラッシュ・デバイスがＳＤＲＡＭデバイスの速度問題(consideration)には関与しないで済むようにする。例えば、フラッシュ・デバイスのステータスを制御ロジックにバッファすることによって、ビジーおよび実行ステータスを示す追加のコマンド応答をシリアル・プロトコルに追加することができる。フラッシュ・デバイスから返送されるデータおよびステータス・を、データ転送ロジックにおいてＳＲＡＭの小ブロックにバッファし、フラッシュに対するリードおよびライト速度がＳＤＲＡＭのそれと一致するようにする。
【００４２】
フラッシュ・デバイスへのシリアル転送の典型的な例を図８に示す。これは、ファームウェア３３０によるＳＤＲＡＭアドレス空間３３２（図３）に対するリードおよびライトの例を表す。ＳＤＲＡＭアドレス空間３３２は、フラッシュ３０６を制御するために確保されている。一般に、ファームウェアは、IDLEコマンドを、コントローラが検出したアドレス空間３３２に書き込むことによって、ステップ８０２においてフラッシュ・コマンドを送る。
【００４３】
ステップ８０４において、ファームウェアはフラッシュ・ブロック・アドレス要求を送る。この要求は、コマンド・アドレス空間に対する１つのライト・コマンドと共に、どのブロックそしてどのアドレスを用いるか示す５つのアドレス・ライトを含む。こうして、コントローラは、ライトを実行するために必要となる情報を有することになる。
【００４４】
ステップ８０６および８０８の各々において、ファームウェア３３０は、ライト・コマンドおよびバースト・リードを発行し、ステップ８１０を経由してループすることによって、ステータスについてポーリングし、フラッシュ・リード・バースト（ステップ８１２）を送る。
【００４５】
代替実現例では、レジスタに基づくプロトコルが、一連のレジスタにロードすることによって、フラッシュに対するアクセスを与える。これには、コマンドの実行を開始するようにセットしたビジー・ワードをレジスタに書き込むことを含む。これによって、１回のページ・ライトで１つまたは複数のフラッシュ・ブロックのライトまたはフェッチを開始することが可能となる。この代替案では、ビジー・ワードは、コマンドを完了したときにコントローラによって切り換えられる。サポートされるコマンドには、アドレス／ブロック・フェッチ（またはアドレス範囲フェッチ）、アドレス／ブロック・ライト（またはアドレス範囲ライト）、およびアドレス／ブロック削除（またはアドレス範囲削除）が含まれる。
【００４６】
更に、コントローラはロジックを含むので、コントローラはフラッシュ管理を行うことができる。例えば、フラッシュは、何回かのリードおよびライトの後にはへたる(wear out)ので、コントローラは種々の利用可能なフラッシュ・ブロックの使用を均衡にするために、アクセスをリマップ(remap)することができる。これを、へたれ均等化(wear leveling)と呼ぶ。また、コントローラ・ロジックは、誤り検出および訂正を実行し、更に既知の不良ブロックを論理的に利用可能から除去することによって、不良ブロック管理を実行することができる。
【００４７】
図９は、デュアル・インライン・メモリ・モジュール（ＤＩＭＭ）９０２の一例の図であり、従来のパーソナル・コンピュータのシステム・メモリにどのようにしてフラッシュを追加できるかを例示する。フラッシュ・チップの実体は、ＳＤＲＡＭチップと同じ側、逆側、または双方にあってもよい。コントローラは、ＤＩＭＭ自体にあってもよく、あるいはその外部にあり、必要に応じてＳＤＲＡＭをディスエーブルしてフラッシュ・データに交換できるようにしてもよい。
【００４８】
パーソナル・コンピュータをオンにすると、ＢＩＯＳ（ファームウェア）がハイブリッドＤＩＭＭメモリの存在を検査し、存在する場合、フラッシュからＳＤＲＡＭメモリの少なくとも一部（そのコード）をロードする。不揮発性フラッシュ・メモリが存在すれば、ブート、即ち、フラッシュに格納されているデータから動作を再開することが可能になる。例えば、メモリの複数のブロックにマッピングされており、ＳＤＲＡＭまたはフラッシュのいずれとも区別される(resolve)ＣＰＵメモリ・キャッシュから、データをアクセスする。十分なフラッシュがあれば、冬眠の目的でＳＤＲＡＭ全体を保存することができ、あるいはハード・ディスク・ドライブのような周辺デバイスにアクセスすることなく、オペレーティング・システム全体をロードすることもできる。
【００４９】
本発明には種々の修正や代替構造を取り入れることができるが、その内ある種の実施形態を例示して、図面に示しこれまで詳細に説明した。しかしながら、開示した具体的な形態に本発明を限定する意図はなく、逆に、本発明の主旨および範囲に該当するあらゆる修正、代替構造、および同等物を包含することを意図していることは言うまでもない。
【図１】
2009540431.tif 000003
【図２】
2009540431.tif 000004
【図３Ａ】
2009540431.tif 000005
【図３Ｂ】
2009540431.tif 000006
【図４】
2009540431.tif 000007
【図５】
2009540431.tif 000008
【図６】
2009540431.tif 000009
【図７】
2009540431.tif 000010
【図８】
2009540431.tif 000011
【図９】
2009540431.tif 000012
【国際調査報告】
2009540431.tif 000013
2009540431.tif 000014