(57)【特許請求の範囲】
【請求項１】
メモリデバイスのための物理メモリインタフェースを制御するための方法であって、
第１および第２の電力コンテキストを格納することと、
前記メモリデバイスからのデータ読取りおよび前記メモリデバイスへのデータ書込みのためにタイミング遅延を提供するように構成された複数の調整可能な遅延素子を提供することであって、各調整可能な遅延素子が、前記第１および第２の電力コンテキストのうちの選択された１つに応答する遅延時間を有する、複数の調整可能な遅延素子を提供することと、
電力コンテキスト変更要求を受信することと、
前記電力コンテキスト変更要求に基づいて、前記第１および第２の電力コンテキストのうちの１つを選択することと
を含む方法。
【請求項２】
前記第１および第２の電力コンテキストのうちの１つを選択する前に、前記メモリデバイスに関連したセルフリフレッシュモードを選択するように構成されたセルフリフレッシュ出力を生成することをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１の電力コンテキストを格納するように構成された第１のセットのレジスタを提供することと、
前記第２の電力コンテキストを格納するように構成された第２のセットのレジスタを提供することと、
前記電力コンテキスト変更要求に応答して、前記第１および前記第２のセットのレジスタのうちの１つを選択することと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記電力コンテキスト変更要求に応答して、前記物理インタフェースの少なくとも１つのドライバに対する選択可能なドライブ強度を調整することをさらに含む、請求項１に記載の方法。
【請求項５】
前記電力コンテキスト変更要求に応答して、前記物理インタフェースの少なくとも１つの受信器に対する選択可能な終端インピーダンスを調整することをさらに含む、請求項１に記載の方法。
【請求項６】
第１のメモリトレーニング段階を経て前記第１の電力コンテキストを生成することと、
第２のメモリトレーニング段階を経て前記第２の電力コンテキストを生成することとをさらに含む、請求項１に記載の方法。
【請求項７】
電力制御インタフェース（ＡＣＰＩ）Ｓ３電力状態から復帰すると、前記第１および第２の電力コンテキストのうちの少なくとも１つを復元することをさらに含む、請求項１に記載の方法。
【請求項８】
前記第１および第２の電力コンテキストをサウスブリッジ上のメモリ位置から取り出すことをさらに含む、請求項１に記載の方法。
【請求項９】
前記第１および第２の電力コンテキストをノースブリッジ上のメモリ位置から取り出すことをさらに含む、請求項１に記載の方法。
【請求項１０】
メモリデバイスのための物理メモリインタフェースであって、
第１の電力コンテキストおよび第２の電力コンテキストを受信するように構成された複数のレジスタと、
前記第１および第２の電力コンテキストのうちの１つを選択するように構成された選択回路と、
前記メモリデバイスからのデータ読取りおよび前記メモリデバイスへのデータ書込みのためにタイミング遅延を提供するように構成された複数の調整可能な遅延素子であって、各調整可能な遅延素子が、前記第１および第２の電力コンテキストのうちの前記選択された１つに応答する遅延時間を有する、複数の調整可能な遅延素子と
を含む、物理メモリインタフェース。
【請求項１１】
前記選択回路が、前記第１および第２の電力コンテキストのうちの前記選択された１つをメモリ位置から取り出す、請求項１０に記載の物理メモリインタフェース。
【請求項１２】
前記第１の電力コンテキストを格納するように構成された第１のセットのレジスタと、
前記第２の電力コンテキストを格納するように構成された第２のセットのレジスタとをさらに含み、
前記選択回路が前記第１と第２のセットのレジスタとの間で選択するように構成されている、請求項１０に記載の物理メモリインタフェース。
【請求項１３】
各々が、前記第１および第２の電力コンテキストのうちの前記選択された１つに応答して選択可能なドライブ強度を有する、複数のドライバをさらに含む、請求項１０に記載の物理メモリインタフェース。
【請求項１４】
各々が前記第１および第２の電力コンテキストのうちの前記選択された１つに応答して選択可能な終端インピーダンスを有する複数の受信器をさらに含む、請求項１０に記載の物理メモリインタフェース。
【請求項１５】
前記第１の電力コンテキストが第１のメモリトレーニング段階を経て決定され、かつ、前記第２の電力コンテキストが第２のメモリトレーニング段階を経て決定される、請求項１０に記載の物理メモリインタフェース。
【請求項１６】
物理メモリデバイスの複数のチャネルのためのインタフェースをさらに含む、請求項１０に記載の物理メモリインタフェース。
【請求項１７】
前記物理メモリインタフェースが、中央処理装置（ＣＰＵ）のダイ上に配置されている、請求項１０に記載の物理メモリインタフェース。
【請求項１８】
電力制御インタフェース（ＡＣＰＩ）Ｓ３電力状態から復帰すると、前記第１および第２の電力コンテキストのうちの少なくとも１つを取り出すように構成されたメモリインタフェースをさらに含む、請求項１０に記載の物理メモリインタフェース。
【請求項１９】
前記第１および第２の電力コンテキストをメモリ位置からロードするように構成されたメモリインタフェースをさらに含む、請求項１０に記載の物理メモリインタフェース。
【請求項２０】
前記物理メモリインタフェースに結合されたメモリデバイスをさらに含み、前記メモリデバイスが、前記第１および第２の電力コンテキストのうちの前記選択された１つに関連する前記タイミング遅延を用いて、データの読取りおよび書込みのために構成されている、請求項１０に記載の物理メモリインタフェース。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスと直接インタフェースをとる物理層を含むメモリサブシステムに関する。
【０００２】
〔関連出願の相互参照〕
本願は、２０１０年９月１３日に出願された、米国仮出願第６１／３８２，０８９号、および２０１０年１０月２２日に出願された、米国非仮出願第１２／９１０，４１２号の利益を主張し、それらは、本明細書中に完全に明記されているかのように、参照により組み込まれる。
【背景技術】
【０００３】
典型的なメモリシステムは、メモリコントローラとメモリデバイスとの間でデータを伝送するために、非同期クロック方式または同期クロック方式のいずれかを使用する。同期クロックは、メモリデバイスが、制御入力に応答する前にクロック信号を待ち、従って、コンピュータのシステムバスと同期されることを意味する。同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）は、通常非同期メモリデバイスよりも高いクロック速度をサポートするので、幅広く使用される。
【０００４】
ダブルデータレート（ＤＤＲ）ＳＤＲＡＭは、クロック信号の立ち上がりエッジおよび立ち下がりエッジの両方でデータを伝送する。かかるメモリデバイスは、より低いクロック周波数を使用するが、電気データおよびクロック信号のタイミングの厳格な制御を必要とする。かかるデバイスの第１のバージョン（ＤＤＲ１）は、同じクロック周波数で動作するシングルデータレート（ＳＤＲ）ＳＤＲＡＭの帯域幅のほぼ２倍を達成した。ＤＤＲ２およびＤＤＲ３  ＳＤＲＡＭデバイスは、ＤＤＲ１デバイスに関する後続の改善である。どのタイプのＤＤＲメモリが使用されているか（ＤＤＲ１／ＤＤＲ２／ＤＤＲ３）に関わらず、物理インタフェース（Ｐｈｙ）が、メモリコントローラとＤＤＲ  ＳＤＲＡＭデバイスとの間に直接結合される。Ｐｈｙインタフェースは、一般に、ＤＤＲ  ＳＤＲＡＭデータストローブのタイミング要件を処理するための回路機構を含む。典型的なＰｈｙインタフェースの実装は、メモリ性能レベルまたは要求される電力を迅速に調整するための機構を提供しない。
【発明の概要】
【課題を解決するための手段】
【０００５】
物理メモリインタフェース（Ｐｈｙ）が提供される。Ｐｈｙは、メモリコントローラと物理メモリデバイスとの間のインタフェースをとる。Ｐｈｙインタフェースは、第１の電力コンテキストおよび第２の電力コンテキストを受信するように構成されたコマンドおよび状態レジスタ（ＣＳＲ）を含む。選択回路が提供される。選択回路は、第１と第２の電力コンテキストの間で切り替えるように構成される。Ｐｈｙインタフェースは、複数の調整可能な遅延素子を含み、各々が、選択された電力コンテキストに応答する遅延時間を有する。電力コンテキスト間での切替えは、１つまたは複数の調整可能な遅延素子の調整という結果になる。
【０００６】
別の実施形態では、Ｐｈｙインタフェースは、第１の電力コンテキストを格納するように構成された第１のセットのＣＳＲおよび第２の電力コンテキストを格納するように構成された第２のセットのＣＳＲを含む。Ｐｈｙインタフェースは、各々が、選択された電力コンテキストに応答する選択可能なドライブ強度を有する複数のドライバも含む。Ｐｈｙインタフェースは、各々が、選択された電力コンテキストに応答する選択可能な終端インピーダンスを有する複数の受信器も含む。電力コンテキスト間での切替えは、１つまたは複数のドライバ／受信器のドライブ強度および／または終端インピーダンスの調整という結果になり得る。
【０００７】
第１および第２の電力コンテキストは、ＢＩＯＳトレーニング手順を経て決定され得る。かかる手順は、複数の段階をもち得る。例えば、第１の電力コンテキストは、第１のメモリトレーニング段階を経て決定され得、第２の電力コンテキストは、第２のメモリトレーニング段階を経て決定され得る。
【０００８】
Ｐｈｙインタフェースは、ＣＳＲへの読取り／書込みアクセスを可能にするように構成されている構成バスを含み得る。Ｐｈｙインタフェースは、物理メモリデバイスの複数のチャネルをサポートするようにも構成され得る。Ｐｈｙインタフェースは、中央処理装置（ＣＰＵ）のダイ上を含め、様々な場所に配置され得る。
【図面の簡単な説明】
【０００９】
【図１】典型的なコンピュータシステムの一部を示す。
【図２】Ｐｈｙの高レベルアーキテクチャを示す。
【図３】Ｐｈｙインタフェース構成バス上のアドレス、コマンド（例えば、読取り、書込み）、およびデータを示すタイミング図である。
【図４】ＣＳＲアドレス指定の内訳を示す。
【発明を実施するための形態】
【００１０】
図１は、中央処理装置（ＣＰＵ）１２、コア理論チップセット１４、１６およびメインメモリ２８へのメモリインタフェース１８を含む、コンピュータシステム１０の一部を示す。コア理論チップセットは、ノースブリッジ１４（または統合メモリコントローラ）とサウスブリッジ（または入出力コントローラハブ）１６との間で分割され得る。メモリコントローラ１８は、しばしばノースブリッジ１４に配置される。かかる回路機構は、単一チップまたはＣＰＵ内など、様々な場所に物理的に配置され得ることを理解すべきである。メモリコントローラ１８は、通常、メインメモリ３０との間を行き来するデータの論理的な流れを管理する。ダイナミックランダムアクセスメモリは、様々なメモリ記憶セル内のチャージを保持するために定期的なリフレッシュ信号も必要とし得る。メモリコントローラ１８は、一般に、これらのリフレッシュ操作を管理する。ＣＰＵアーキテクチャおよび／またはオペレーティングシステムに応じて、メインメモリ３０は、データを３２ビットまたは６４ビットデータ単位で伝送し得る。他のサイズのデータ単位がサポートされ得ることを理解すべきである。いくつかのメモリシステムは、ブロック２０、２４、および３０で示される、複数のチャネル（例えば、２つ以上の独立したメモリコントローラ）を含む。明確にするために、本明細書に含まれる例は、単一のメモリチャネルのみを示し得る。本開示の範囲から逸脱することなく、複数のチャネルが使用され得ることを理解すべきである。
【００１１】
Ｐｈｙインタフェース２２は、メモリコントローラ１８と物理メモリデバイスとの間に存在する。Ｐｈｙインタフェースは、一般に、中央処理装置内に配置されるが、他の場所に配置され得る。明確にするために、Ｐｈｙインタフェース２２は、図１では別個のブロックとして示す。Ｐｈｙインタフェースは、通常、メインメモリデータストローブのタイミング要件を処理するための回路機構を含む。本開示では、ダブルデータレート（ＤＤＲ）という用語は、ＤＤＲ１／ＤＤＲ２／ＤＤＲ３および／またはかかるメモリデバイスの次の世代を包含する。ＤＤＲメモリデバイスは、一般に、電子デバイス技術合同協議会（ＪＥＤＥＣ：Ｊｏｉｎｔ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅｓ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｃｏｕｎｃｉｌｓ）規格に準拠する。これらの規格は、ＤＤＲメモリデータがどのようにアクセスされ（読み取られ）、格納される（書き込まれる）のかを定義する。Ｐｈｙインタフェースは、他のメモリタイプおよび／または他のメモリ規格と共に動作するように構築され得ることを理解すべきである。典型的なＤＤＲ  ＳＤＲＡＭメモリデバイスへのインタフェースは、主として２つの信号クラス、ＤＱ（データ）３２およびＤＱＳ（データストローブ）３４を通して達成される。他の信号は、メモリクロック（ＭＥＭＣＬＫ）３８、ならびにアドレスおよびコマンド信号（通常、ＡＤＤＲ／ＣＭＤ  ３６として示す）を含む。典型的なメモリデバイスは、図に示されていない、追加の信号を使用し得ることを理解すべきである。かかる信号は、明確さのみのために省略されている。例えば、電力および接地信号は示されていない。かかる信号は、典型的な実施態様に含まれるであろうことを理解すべきである。
【００１２】
読取り操作中、ＤＤＲ  ＳＤＲＡＭは、ＤＱおよびＤＱＳを、一般に「エッジアライン（ｅｄｇｅ  ａｌｉｇｎｅｄ）」と呼ばれる方法で、同時に発行する。メモリコントローラが、ＤＤＲ  ＳＤＲＡＭから送信されているデータを正しく取得するため、Ｐｈｙインタフェース２２は、遅延ロックループ（ＤＬＬ）などの遅延回路を利用して、有効なデータウィンドウまたは「データアイ（ｄａｔａ  ｅｙｅ）」の間に、ＤＱ信号を正しくラッチするためにＤＱＳ信号が使用され得るように、ＤＱＳ信号を遅延させる。同様に、Ｐｈｙインタフェース２２は、データのＤＤＲ  ＤＲＡＭへの書込みをサポートするためにも遅延回路を利用し得る。データ読取りのため、ＤＱＳ  ３４を遅延させる必要がある。データ書込みのため、ＤＱＳおよびＤＱ  ３４、３２を遅延させる必要がある。Ｐｈｙは、ＤＱＳ  ３４を、エッジアラインよりむしろ、ＤＱ  ３２データアイの中央に合わせる。ＤＱＳ  ３４は、書込み平準化（ｗｒｉｔｅ  ｌｅｖｅｌｉｎｇ）のために遅延されて、データアイの中央要件を満足する。他の遅延も使用され得る（例えば、データバスの３状態制御の読取り／書込みのため）。Ｐｈｙインタフェース２２は、以下でさらに詳述する、遅延タイミング、ドライブ強度、および様々な他のパラメータを制御するために利用される複数のコマンドおよび状態レジスタ（ＣＳＲ）４２を含む。かかる回路機構は、チャネルベース毎でも重複され得ることを理解すべきである。
【００１３】
Ｐｈｙインタフェースは、また、送信器のドライブ強度および受信器の終端インピーダンスの調整または選択も行い得る。固定のタイミング遅延、送信器ドライブ強度および受信器終端インピーダンスを使用するよりも、これらのパラメータは、コンピュータシステムが作動されるたびに調整され得る。これは、通常、トレーニングプログラムの支援を受けて達成される。トレーニングプログラムは、通常、基本入出力システム（ＢＩＯＳ）メモリデバイス２６に格納されるが、装置ハードウェア内にも実装され得る。トレーニングプログラムは、パワーオンセルフテスト（ＰＯＳＴ）中にアルゴリズムを実行し、それが、多数のメモリインタフェース信号に関連した、適切なタイミング遅延、ドライブ強度および終端インピーダンスを決定する。これらのパラメータは、Ｐｈｙへの、およびＰｈｙからの様々な信号経路の全体的なタイミングを定義する複数のレジスタでＰｈｙインタフェース内に保存される。別の方法では、これらのパラメータは、別の場所（例えば、ノースブリッジ１４またはサウスブリッジ１６内）に格納され得る。
【００１４】
図２は、Ｐｈｙインタフェース２２の高レベルアーキテクチャを示す。Ｐｈｙインタフェースは、通常、クロックソース（例えば、ＰＬＬ  ７０）およびコマンドおよび状態レジスタ（ＣＳＲ）４２を含む制御インタフェースを含む。Ｐｈｙインタフェース２０は、ＤＱ  ３２、ＤＱＳ  ３４、アドレス／コマンド線３６およびクロック入力３８を含め、デュアルインラインメモリモジュール（ＤＩＭＭ）などの典型的なメモリデバイス上の大多数のピンに対して物理接続を提供する。
【００１５】
典型的なメモリデバイスは、クロック可能（セルフリフレッシュ）入力４０も備え得る。クロック可能入力４０は、メモリデバイスをセルフリフレッシュモードにするために使用される。このモードでは、メモリデバイスは、必要に応じて内部のリフレッシュサイクルを生成するために、オンチップタイマーを使用する。外部クロックもこの間、停止され得る。この入力は、メインメモリデータを失うことなくメモリコントローラを無効にできるので、通常、電源ダウンモードに関連して使用される。
【００１６】
図２に示すように、ＤＱ  ３２（データ）およびＤＱＳ  ３４（ストローブ）線は双方向である。各ＤＩＭＭは、複数のＤＱ線（例えば、６４データビット）および複数のＤＱＳ線を有することを理解すべきである。これらの線の各々は、Ｐｈｙインタフェース２２内に、関連するドライバ５２、５６および受信器５４、５８を有する。図２では、明確にするために、単一のドライバ／受信器の対を示す。各ドライバは、選択可能または調整可能なドライブ出力を有する。同様に、各受信器は、選択可能または調整可能な終端インピーダンス（例えば、オンダイ終端（ｏｎ  ｄｉｅ  ｔｅｒｍｉｎａｔｉｏｎ））を有する。ＤＱおよびＤＱＳ線３２、３４は、遅延ロックループ（ＤＬＬ）７２、７４、７６などの遅延素子にも関連する。遅延素子（例えば、７０〜７６）、ドライブ強度または終端インピーダンス値に対する調整は、以下でさらに詳細に説明するように、適切な値を、関連するＣＳＲ  ４２の適切なフィールド内にプログラミングすることによって達成される。ＣＳＲ間の論理結合および遅延素子、ドライブ強度または終端インピーダンスにおける調整は、一般に、点線で示される。
【００１７】
この例では、ドライバ５２および５６は、ＤＬＬ  ７２および７４とそれぞれ関連する。受信器５８は、ＤＬＬ  ７６と関連する。前述のように、ＤＬＬは、読取りおよび書込み操作のために、適切なタイミング遅延を提供するように調整される。Ｐｈｙインタフェースは、平準化の有無にかかわらず、読取りおよび書込み操作を実行するようにも構成され得る。平準化を行うＤＤＲ３  ＤＩＭＭＳへのメモリ書き込み操作中に、Ｐｈｙインタフェースは、各ＤＲＡＭチップにおいて、ＤＱＳがメモリクロック５８と合体する（ｃｏａｌｅｓｃｅ）のが見られるように、ＤＩＭＭに進む各ＤＱＳの開始を遅延させる。平準化を行う読取り操作中、Ｐｈｙインタフェースは、フライバイトポロジによって取り込まれた遅延の補償も行い得る。
【００１８】
より高いデータレートでの操作の信号品位の問題に起因して、Ｐｈｙインタフェースは、ＤＬＬ設定をバーストごと（またはトランザクション）のベースで動的に変更し得る。Ｐｈｙインタフェースは、システム内の各ＤＩＭＭに対してＤＱおよびＤＱＳに対する遅延設定の最適な組（ｔｕｐｐｌｅ）を格納し得る。アクセスされているＤＩＭＭに応じて、Ｐｈｙインタフェースは、適切なＤＬＬ設定を取り出し、それらを適用する。
【００１９】
Ｐｈｙインタフェースは、所望の性能レベルに基づき、その要求される電力を調整し得る。電力コンテキストをいつ変更すべきかの決定は、様々な情報源に由来し得ることを理解すべきである。例えば、オペレーティングシステムは、コンテキスト変更が要求されることを（例えば、アイドル時間の設定期間後、ユーザーコマンド、時間スケジュールまたは同様のものによって）判断し得る。別の方法では、コンテキスト変更がいつ要求されるかを判断するためにハードウェアが使用され得る。コンテキスト変更は、異なる電力状態に関連する、異なるセットのＰｈｙインタフェースパラメータ間で切り替えることにより達成される。例えば、高電力状態（例えば、より高いメモリ速度）および低電力状態（例えば、より低いメモリ速度）。各電力状態は、Ｐｈｙインタフェースパラメータまたはコンテキストの関連するセット（つまり、各信号線に対する遅延素子設定、ドライブ強度および終端インピーダンス）を有する。以降で詳述するように、電力状態間の切替えは、いくつかの方法で達成され得る。本明細書で開示するように、複数の電力状態間の切替えは、任意のメモリタイプに適用でき、以下の例で使用されるように、ＤＤＲメモリとの使用に限定されないことを理解すべきである。
【００２０】
この例では、メモリコントローラ１８は、３２ビットの、時間インターリーブされた、一方向の構成バス８０を介して、ＣＳＲ  ４２にアクセスし得る。アドレスおよびコマンド（例えば、読取り、書込み、何もしない）は、図３に示すように、第１のパイプステージ内に送信され、その後、第２のパイプステープ内のデータが続く。ＣＳＲは、他の通信リンクを介してアクセスできることを理解すべきである。
【００２１】
この例では、ＣＳＲアドレス空間は１６ビット幅で、６５，５３６の一意の１６ビットレジスタの空間を可能にする。かかる大空間を可能にする代わりに、アドレスは、次の機能を可能にするためにマッピングされる：すなわち、チップレット識別、イントラチップレットブロードキャスト（ｉｎｔｒａ−ｃｈｉｐｌｅｔ  ｂｒｏｄｃａｓｔ）、補償ブロードキャスト（ｃｏｍｐｅｎｓａｔｉｏｎ  ｂｒｏａｄｃａｓｔ）、チップレットインスタンス識別（Ｄ３ＤＢＹＴＥ、Ｄ３ＣＬＫ、およびＤ３ＣＭＰは、２回以上配置されるチップレットである）。図４は、ＣＳＲアドレス指定に対する内訳を示す。
【００２２】
ＣＳＲの一部のみが所与の電力状態に関連する値を含む。電力状態間での低遅延の切替えを容易にするため、各電力状態に対して電力コンテキスト依存のＣＳＲのセットが提供される。図２に戻ると、ＣＳＲの第１のセットが第１の電力コンテキストと関連する―ＰｈｙＰＳ［０］  ４４。ＣＳＲの別のセットが第２の電力コンテキストと関連する―ＰｈｙＰＳ［１］  ４６。ＰｈｙＰＳ［ｎ］  ４８によって示されるように、３つ以上の電力コンテキストをサポートするために、ＣＳＲの追加のセットが提供され得ることを理解すべきである。ＣＳＲの異なるセット間で選択するために、マルチプレクサまたは選択回路５０が提供される。Ｐｈｙインタフェースは、電力コンテキスト依存でないＣＳＲも含む。かかるＣＳＲは、全ての電力状態で適用可能である。
【００２３】
各ＰｈｙＰＳ内の各ＣＳＲに対するプログラム可能フィールドの要約を以下の表１に示す。
【表１】
0005955323.tif 000002
【００２４】
この例では、Ｐｈｙインタフェースの関連するフィールドのプログラミングは、構成バス８０を介して、コマンドを発行するか、またはＣＳＲ内の個々のフィールドをプログラミングすることによって達成される。例えば、１つのＰｈｙＰＳから別への変更は、ＤＤＲ  Ｐｈｙインタフェース間接レジスタ空間に発行された単一のコマンドで達成され得る。ＰｈｙＰＳコンテキスト依存ＣＳＲのプログラミングは、適切なＰｈｙＰＳコンテキストを設定し、次いで、正常な間接ＣＳＲ書込みまたは読取りを行うことによって達成され得る。あるいは、直接ＣＳＲ書込みまたは読取りは、ＰｈｙＰＳコンテキストを考慮することなく、任意のＣＳＲに達し得る。
【００２５】
Ｐｈｙインタフェースは、Ｍａｓｔｅｒ＿０ｘ０８［１２］−ＰｈｙＰＳ、Ｍａｓｔｅｒ＿０ｘ０８［８］−ＰｓｔａｔｅＴｏＡｃｃｅｓｓおよびＭａｓｔｅｒ＿０ｘ１８［８］−ＰｈｙＰＳＭａｓｔｅｒＣｈａｎｎｅｌを含む、一連のコマンドで制御され得る。用語体系［１２］、［８］および同様のものは、コマンド内のビット位置を指す。Ｍａｓｔｅｒ＿０ｘ０８［１２］コマンドは、現在のＰｈｙインタフェースＰ状態（０または１）に対応する。このコマンドは、電力コンテキスト（例えば、ＣＳＲのどのセットが現在アクティブであるか）を制御する。Ｍａｓｔｅｒ＿０ｘ０８［８］コマンドは、ＣＳＲアクセス中に、どのＰ状態の読取りまたは書込みを行うかを選択する。ＢＩＯＳは、実際のＰ状態変更を行う必要なく、どのＰ状態を書き込むかを制御するために、この方法を使用し得る。３つ以上の電力コンテキストをサポートするために、追加のビットが使用され得ることを理解すべきである。Ｍａｓｔｅｒ＿０ｘ１８［８］コマンドはマスターチャネルを選択する。この実施形態では、このビットによって指定されたチャネル（マスターチャネル）のみが、０ｘ０Ｂ［ＰｈｙＰＳ変更］コマンドの発行を許可される。他のチャネルから発行されたどの０ｘ０Ｂ［ＰｈｙＰＳ変更］コマンドも無視されるであろう。３つ以上のチャネルをサポートするために、追加のビットが追加され得ることを理解すべきである。この実施形態では、以下の０ｘ０Ｂコマンドが定義される：
【表２】
0005955323.tif 000003
【００２６】
完全な０ｘ０Ｂデータパケットを以下の表３に示す。
【表３】
0005955323.tif 000004
【００２７】
この例では、電力コンテキストが単一ビット（すなわち、ＰｈｙＰＳ［０］およびＰｈｙＰＳ［１］―ビット位置２６）で選択される。３つ以上のコンテキストをサポートするために、追加のビットが追加され得ることを理解すべきである。ＰｈｙＰＳＲｅｑｕｅｓｔビット（ビット位置３０）は、コマンドがコンテキスト変更を含むことを示すために使用される。電力コンテキストは、通常、以下のように変更され得る。コンテキスト変更要求を受信すると、各アクティブなチャネルがセルフリフレッシュ（ＳＲ）モード（０ｘ０Ｂ［ＰｈｙＳＲ＝１］）にされる。この「セーフモード」では、メモリデバイスは、必要に応じて内部のリフレッシュサイクルを生成するために、オンチップタイマーを使用する。選択したＳＲモードに応じて、外部クロックもこの間、停止され得る。ＳＲモードに入るのは、異なる時に起こり得るが、全てのチャネルは、コンテキスト変更の前にＳＲモードでなければならない。電力コンテキスト変更が開始される（０ｘ０Ｂ［ＰｈｙＰＳ＝Ｘ］、［ＰｈｙＰＳＲｅｑｕｅｓｔ＝１］）。アクティブなチャネルの各々は、ＳＲモードから正常モード（０ｘ０Ｂ［ＰｈｙＳＲ＝０］）に切り替えられる。
【００２８】
コンテキスト変更コマンドを受信すると、Ｐｈｙインタフェースは、ＰｈｙＰＳコンテキストを変更し、ＤＤＲ  ＰＬＬ乗算器およびドライバが更新され、そして、ＰＬＬが再ロックされる。これが全て完了すると、ＣｆｇＤｏｎｅが設定される。その後、ＳＲモードから出ると、ＤＬＬが再ロックする。ＰｈｙＰＳ変更が生じている間、メモリコントローラは、Ｐｈｙインタフェースへの全ての入力に対する制御（具体的には、ＣＫＥ、ＭｅｍＲｅｓｅｔ、ＲｅａｄＰｅｎｄｉｎｇ、ＷｒｉｔｅＰｅｎｄｉｎｇ、他の３状態制御の全て）を維持する。
【００２９】
意図は、ＰｈｙＰＳを可能な限り迅速に変更することにあるので、ＰｈｙＰＳ変更はＰＬＬを電源の入ったままにすることが一般に予期される。従って、ＰｈｙＰＳの変更は、直ちにＰＬＬ再ロック（および再ロックの待機）をトリガーし、ＳＲから出た後にＤＬＬ再ロックが生じる。しかし、ＰＬＬ（ＶＣＯまたは調整器のいずれか）の電源を落としているＳＲモード中にあり、かつ、このＳＲモードにある間にＰｈｙＰＳを変更することは可能である。この場合、Ｐｈｙインタフェースはまだ、ＰｈｙＰＳ変更の直後にＰＬＬ再ロック時間を待機するが、後にＳＲから出ると、Ｐｈｙインタフェースは、ＰＬＬ再ロック（ＰＬＬが電源を入れ戻す過程にあるので）およびＤＬＬ再ロックの両方を待機するであろう。
【００３０】
Ｐｈｙインタフェースセルフリフレッシュ（ＰｈｙＳＲ）に入って出る０ｘ０Ｂコマンドは、チャネル０または１のいずれかで発行され得；１つのＤＲＡＭチャネルをＳＲモードにするが、他はそうではないことを可能にする。Ｐｈｙ内のＰＣｌｋグローバルグリッドの電源を完全に落とすために、チャネル０および１の両方がＰｈｙＳＲにある必要がある。ＰｈｙＳＲを変更する０ｘ０Ｂを、以下の表４に示す：
【表４】
0005955323.tif 000005
【００３１】
０ｘ０Ｂ［２３＝ＰｈｙＳＲ］とともに０ｘ０Ｂ［３１＝ＰｈｙＳＲＲｅｑｕｅｓｔ］を設定すると、Ｐｈｙインタフェースがセルフリフレッシュに入るか、または出るようにする。０ｘ０Ｂ［２５：２４］は、ＳＲにある間、ＰＬＬの動作を制御する。ＳＲモードに入るのは非常に迅速であり、０ｘ０Ｂコマンドの受信からＣｆｇＤｏｎｅがアサートされる時間まで〜３００ｎｓかかる。メモリコントローラが可能な限り迅速に前進できるようにするため、メモリコントローラは、ＣｆｇＤｏｎｅが１から０へ遷移するのをモニタし得る。これは、Ｐｈｙインタフェースがメモリコントローラからの入力を遮断して、すべてのＣＫＥを低下させ、ＭｅｍＲｅｓｅｔを適切にドライブし、残りの全てのＤＤＲバスピンを３状態にすることを示す。この時点で、メモリコントローラが狂うのは安全である。ＣｆｇＤｏｎｅがアサートされるまでＶｄｄｒレールをドロップして、必要なＣＳＲトランザクションの全てが完了していることを示すことは安全ではない。
【００３２】
ＰｈｙＳＲから出ることは、はるかに潜在的であり、Ｐｈｙインタフェースクロックグリッド（ＰＣｌｋ）がオンに戻され、ＤＬＬが再ロックされることを必要とする。ＰＬＬは、ＳＲの間、オンのままにされるか、またはオフにされ得る。この実施形態では、ＰｈｙＳＲ変更の実行中、０ｘ０Ｂ［３０＝ＰｈｙＰＳＲｅｑｕｅｓｔ］は０でなければならない。０ｘ０Ｂ［３１＝ＰｈｙＳＲＲｅｑｕｅｓｔ］または０ｘ０Ｂ［３０＝ＰｈｙＰＳＲｅｑｕｅｓｔ］のいずれかを設定すると、０ｘ０Ｂ［２２：０］を無効にし、それは、ＤＤＲレートフィールドを更新するために０ｘ０Ｂ［３＝ＤｄｒＲａｔｅＲｅｑｕｅｓｔ］を設定することはできなことを意味する。ＰｈｙインタフェースＰＬＬ乗算器およびドライバを含むＣＳＲをロードするために、ＤＤＲレートを第１に設定する。０ｘ０Ｂ［ＰｈｙＰＳ変更］を送信すると、ＤＤＲ  ＰＬＬ乗算器およびドライバをロードする。他の実施形態では、複数の高レベル０ｘ０Ｂコマンドを同時に実行することが可能であり得る。０ｘ０Ｂ［３１＝ＰｈｙＳＲＲｅｑｕｅｓｔ］＝１かつ０ｘ０Ｂ［２３＝ＰｈｙＳＲ］が結果的にＰｈｙＳＲ状態に対して変更を行わない場合、ＣｆｇＤｏｎｅをアサートする前に、ＤＬＬロック時間がまだ従われる。
【００３３】
この実施形態では、ＤＤＲバス上のＤＲＡＭデータレートに対する０ｘ０Ｂコマンドは、チャネル０においてのみＢＩＯＳによって設定される。チャネル１におけるＤＲＡＭデータレートを設定するために０ｘ０Ｂコマンドを送信しても、効果がない。他の実施形態は、各チャネル上で独自のＤＤＲデータレートをサポートし得ることを理解すべきである。０ｘ０Ｂ  ＤＤＲレートコマンドを以下の表５に示す：
【表５】
0005955323.tif 000006
【００３４】
この０ｘ０Ｂ［ＤｄｒＲａｔｅ］コマンドを介して実際のＤＤＲレートおよびＰＬＬ周波数を変更することは、レガシーＢＩＯＳのために含まれている。ＰｈｙインタフェースＰ状態を理解するＢＩＯＳは、代わりに、直接ＣＳＲ  Ｍａｓｔｅｒ＿０ｘ００［ＤｄｒＲａｔｅ］およびＭａｓｔｅｒ＿０ｘ４０［ＤｄｒＲａｔｅ］を通じてＰｈｙインタフェースＰ状態の両方に対してＤＤＲレートをプログラムすべきである。これらの（直接ＣＳＲを通じた）レート変更は、以降の０ｘ０Ｂ［ＰｈｙＰＳ変更］の後にのみ影響を及ぼすであろう。
【００３５】
この実施形態では、ＤＤＲレートに対する更新を実行する場合、０ｘ０Ｂ［３１＝ＰｈｙＳＲＲｅｑｕｅｓｔ］および０ｘ０Ｂ［３０＝ＰｈｙＰＳＲｅｑｕｅｓｔ］は両方とも０でなければならない。実施形態は、複数の高レベル０ｘ０Ｂコマンドを同時にサポートし得ることを理解すべきである。
【００３６】
コールドリセット、ウォームリセット後のＰｈｙＰＳ状態、または高度構造及び電力制御インタフェース（ＡＣＰＩ）電力状態Ｓ３（一般に、ＲＡＭに対するスタンバイ（Ｓｔａｎｂｙ）、スリープ（Ｓｌｅｅｐ）、またはサスペンド（Ｓｕｓｐｅｎｄ）と呼ばれる）を以下の表６に示す。全ての状態は、ウォームリセットを通して持続する。それ故、以下のウォームリセットの項目では、値は、ウォームリセットの前のままである。
【表６】
0005955323.tif 000007
【００３７】
典型的なコンピュータ電力供給が最初に通電される場合、様々な電圧が安定するのに時間がかかる。電圧が安定する前に、コンピュータを起動しようとすることが許可された場合、予測できない結果が生じ得る。コンピュータが時期尚早に起動するのを防ぐため、電力供給が使える状態であれば、電力供給はＰｗｒＯＫ信号を出力する。この信号が送信されるまで、マザーボードはコンピュータを起動するのを拒否する。
【００３８】
コールドブート（〜ＰｗｒＯＫがアサートされ、同様にＲｅｓｅｔがアサートされる）時には、ＰｈｙＰＳが自動的に０に設定され、ＰｈｙインタフェースはＰｈｙＳＲではないであろう（全てのＤＬＬの電源が入れられる）。ウォームブート（ＰｗｒＯＫは継続的にアサートされ、Ｒｅｓｅｔのみがアサートされる）時には、ＰｈｙＰＳおよびＰｈｙＳＲ状態が、ウォームリセットの直前の状態によって決定される。ウォームリセットからの復帰は、ＢＩＯＳが適切なＰｈｙＰＳおよびＰｈｙＳＲ状態を設定することを必要とする（時間最適化ソリューションは、これらの状態の直接ＣＳＲ読取りを実行し、次いで必要であれば、書込みを実行することである）。ＢＩＯＳは、ウォームリセットの後、Ｐｈｙインタフェースが、ＳＲモードにないことを確実にすべきである。
【００３９】
ＤＤＲ３は、書込み平準化（ＷＬ）およびＲｘＥｎの曖昧でない収束を有するために、２つのパスのトレーニング手順を必要とするので、より高出力のＰ状態に対するトレーニングの過程の一部として低周波数Ｐ状態に対してトレーニングすることが可能である。その手順は、ＢＩＯＳは既に、ウォームリセットまたはＳ３からの退出とは対照的に、これはコールドリセット（従って、トレーニングを必要とする）である判断しているとも仮定する。
【００４０】
メモリトレーニングの第１のパスは、以下の表７に示すような曖昧でないトレーニングに対して必要な初期のＤＤＲレートを使用する。以下の表の全てで設定されるステップの特定の順番は、本開示の範囲から逸脱することなく、変更し得ることを理解すべきである。
【表７】
0005955323.tif 000008
【００４１】
この時点で、ＤＤＲ  ＰＬＬおよびＤＬＬが、使用するために適切に構成されている。ＰｈｙＰＳコンテキストはＰｈｙＰＳ０である。メモリが存在する場合、両方のチャネルがトレーニングを開始する準備ができている。トレーニングは、表８に大まかに示すように、ＡＭＤ  Ｇｅｎｅｒｉｃ  Ｅｎｃａｐｓｕｌａｔｅｄ  Ｓｏｆｔｗａｒｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  （ＡＧＥＳＡ）ブートストラッププロトコルなどの、周知のプロトコルに従う：
【表８】
0005955323.tif 000009
【００４２】
この時点で、曖昧でないトレーニングに対する初期ＤＤＲレートのトレーニングおよびプログラミングが完了する。この初期トレーニングプロトコル中に確立されたこのＤＤＲレートおよび他のパラメータが、第１の電力コンテキスト（例えば、より低速度―ＰｈｙＰＳ［１］）として使用され得る。ＰｈｙＰＳ［１］は、別のＤＤＲレートに基づき設定され得る（すなわち、この周波数に対してステップ４〜１５を繰り返す）ことを理解すべきである。次の段階は、より高い（ＰｈｙＰＳ［０］）ＤＤＲレートに対してトレーニングする。前述したパスは、書込み平準化およびＲｘＥｎハードウェアのトレーニングアルゴリズムにおけるエイリアシングを解決した。書込み平準化およびＲｘＥｎトレーニング値は、ＭｅｍＣｌｋデータレート比ＰｈｙＰＳ０／ＰｈｙＰＳ１によってスケーリングされ、ＰｈｙＰＳ［０］におけるトレーニングの第２の段階に対するシードとして使用される。手順は、表９に示すように開始される。
【表９】
0005955323.tif 000010
【００４３】
この時点で、ＤＤＲ  ＰＬＬおよびＤＬＬが、使用するために適切に構成される。ＰｈｙＰＳコンテキストはまだＰｈｙＰＳ［０］であり、ＰｈｙインタフェースはＰｈｙＰＳ［０］  ＤＤＲレートで実行する。両方のチャネルは、メモリが存在する場合、表８に大まかに示すように、トレーニングの次の段階を開始する準備ができている：
【表１０】
0005955323.tif 000011
【００４４】
これで、電力コンテキスト―ＰｈｙＰＳ［０］の第２の段階のトレーニングおよびプログラミングが完了する。この時点で、両方のＰｈｙＰＳ空間に対するレートがトレーニングされ、トレーニングされた値が、トレーニングの一部としてＰｈｙインタフェースＰｈｙＰＳ［０］  ＣＳＲに対して既に書き込まれている。Ｐｈｙインタフェースは、現在、ＰｈｙＰＳ［０］コンテキスト内である。ＰｈｙＰＳ［１］トレーニング値はトレーニングされているが、ＰｈｙＰＳ［１］  ＣＳＲにまだ書き込まれていない。ＰｈｙＰＳ［０］  ＣＳＲは、表１１に大まかに示すように更新される：
【表１１】
0005955323.tif 000012
【００４５】
１つのＰｈｙＰＳのみが必要とされる場合には、ＢＩＯＳがどのＰｈｙＰＳコンテキストを使用すべきかを選択し得る。歴史的な意味を維持するため、ＢＩＯＳはＰｈｙＰＳ［０］に対してＰｈｙインタフェースを構成し得る。
【００４６】
Ｓ３からの復帰は、いかなるＤＲＡＭトレーニングも伴わず、不揮発性状態（通常、サウスブリッジにおける）からのトレーニング値の復元のみである。Ｓ３からの復帰は、一般に、（〜ＰｗｒＯｋのために）ＰｈｙＰＳコンテキストがＰｈｙＰＳ０であり、Ｍａｓｔｅｒ＿０ｘ０８［ＰＳｔａｔｅＴｏＡｃｃｅｓｓ］が０であること、両方のチャネルがＰｈｙＳＲから出ていること、およびマスターチャネルがチャネル０である（たとえ、メモリがチャネル０上に存在しなくても）ことを保証する。Ｓ３からの復帰に対する手順を大まかに表１２に示す：
【表１２】
0005955323.tif 000013
【００４７】
ウォームリセットの復帰は、Ｓ３からの復帰とほぼ同一である。Ｓ３からの復帰は、〜ＰｗｒＯｋで、ＰｈｙＰＳコンテキストをＰｈｙＰＳ０に設定し、ＰｈｙＰＳ変更を伝達するためにチャネル０をマスターチャネルとして指定し、両方のチャネルでＰｈｙインタフェースをＰｈｙＳＲから出す。対照的に、ウォームリセットは、ＰｈｙＰＳおよびＰｈｙＳＲをマスターチャネルと同様に未知の状態のままにしておく。ウォームリセットの復帰には構造上の穴が存在することにさらに留意すべきである。システがコールドブートし、メモリトレーニングを完了し、全てのトレーニング値を不揮発性メモリに格納し得る前にウォームリセット復帰が発行されると、復帰は失敗するであろう。この問題を回避するため、ＢＩＯＳは、トレーニング値が計算され、うまく格納されているか否かを示すために（コールドリセット時にリセットされるが、ウォームリセットを通じて持続する）フラグを使用すべきであり、ウォームリセット中に、ＢＩＯＳがこのフラグが設定されているのを見ると、トレーニングされた状態を復元することによって復帰し得る。トレーニングされた状態は、Ｍａｓｔｅｒ＿０ｘ１８［ＰｈｙＰＳＭａｓｔｅｒＣｈａｎｎｅｌ］も含み、同様に、どの未実装のチャネルもＳＲモードのままにされる。このフラグが設定されていなければ、ＢＩＯＳはＰｈｙを（再）トレーニングする必要がある。以下の開示では、このフラグが設定されていて、トレーニング値が格納されていると仮定する。従って、ウォームリセット復帰はいかなるＤＲＡＭトレーニングも伴わず、（通常、サウスブリッジ内の）不揮発性状態からトレーニング値を復元するだけである。ウォームリセット復帰を実行するための手順を大まかに表１３に示す：
【表１３】
0005955323.tif 000014
【００４８】
表１４は、各電力コンテキストに対して重複されている全てのＰｈｙＰＳ  ＣＳＲのリストを示す。
【表１４】
0005955323.tif 000015
【００４９】
本明細書の開示に基づいて、多数の変形形態が可能であることを理解すべきである。例えば、複数の電力コンテキストが他のメモリ位置（例えば、ノースブリッジ１４またはサウスブリッジ１６内）に格納できる。このシナリオでは、標準的なＰｈｙインタフェースは、コンテキスト依存ＣＳＲの専用セットを必要とせずに、電力コンテキストを切り替え得る。かかるシナリオは、ＣＳＲの複数のセットに対する必要性を取り除き得るが、コンテキスト変更に対する待機時間を増加させる。
【００５０】
特徴および要素は特定の組合せで前述されているが、各特徴または要素は、他の特徴および要素なしで単独で、または他の特徴および要素の有無に関わらず様々な組合せで使用され得る。本明細書で提供する方法または流れ図は、汎用コンピュータまたはプロセッサによる実行のために、コンピュータ可読記憶媒体内に組み込まれた、コンピュータプログラム、ソフトウェア、またはファームウェアで実装され得る。コンピュータ可読記憶媒体の例には、読取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵されたハードディスクおよび取り外し可能ディスクなどの磁気媒体、光磁気媒体、ならびにＣＤ−ＲＯＭディスク、およびデジタル多用途ディスク（ＤＶＤ）などの光媒体を含む。
【００５１】
適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来型のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアと関連した１つまたは複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、任意の他のタイプの集積回路（ＩＣ）、および／または状態マシンを含む。かかるプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令（コンピュータ可読媒体上に格納可能なかかる命令）の結果を用いて、製造プロセスを構成することにより製造され得る。かかる処理の結果は、本発明の態様を実施するプロセッサを製造するために、その後、半導体製造プロセスで使用されるマスクワークであり得る。
【図１】
0005955323.tif 000016
【図２】
0005955323.tif 000017
【図３】
0005955323.tif 000018
【図４】
0005955323.tif 000019