(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5955323
(24)【登録日】2016年6月24日
(45)【発行日】2016年7月20日
(54)【発明の名称】構成可能な電力状態をもつダイナミックRAMPHYインタフェース
(51)【国際特許分類】
G06F 12/00 20060101AFI20160707BHJP
【FI】
G06F12/00 564C
【請求項の数】20
【全頁数】23
(21)【出願番号】特願2013-529258(P2013-529258)
(86)(22)【出願日】2011年9月13日
(65)【公表番号】特表2013-543612(P2013-543612A)
(43)【公表日】2013年12月5日
(86)【国際出願番号】US2011051345
(87)【国際公開番号】WO2012037086
(87)【国際公開日】20120322
【審査請求日】2014年8月19日
(31)【優先権主張番号】12/910,412
(32)【優先日】2010年10月22日
(33)【優先権主張国】US
(31)【優先権主張番号】61/382,089
(32)【優先日】2010年9月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ショーン サールズ
(72)【発明者】
【氏名】ニコラス ティー. ハンフリーズ
(72)【発明者】
【氏名】ブライアン ダブリュ. アミック
(72)【発明者】
【氏名】リチャード ダブリュ. リーブス
(72)【発明者】
【氏名】ハンウー チョウ
(72)【発明者】
【氏名】ロナルド エル. ペティジョン
【審査官】
滝谷 亮一
(56)【参考文献】
【文献】
特開2007−249738(JP,A)
【文献】
特開2010−160724(JP,A)
【文献】
特開2007−241799(JP,A)
【文献】
特表2004−528613(JP,A)
【文献】
米国特許出願公開第2003/0237056(US,A1)
【文献】
米国特許第06618791(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
メモリデバイスのための物理メモリインタフェースを制御するための方法であって、
第1および第2の電力コンテキストを格納することと、
前記メモリデバイスからのデータ読取りおよび前記メモリデバイスへのデータ書込みのためにタイミング遅延を提供するように構成された複数の調整可能な遅延素子を提供することであって、各調整可能な遅延素子が、前記第1および第2の電力コンテキストのうちの選択された1つに応答する遅延時間を有する、複数の調整可能な遅延素子を提供することと、
電力コンテキスト変更要求を受信することと、
前記電力コンテキスト変更要求に基づいて、前記第1および第2の電力コンテキストのうちの1つを選択することと
を含む方法。
【請求項2】
前記第1および第2の電力コンテキストのうちの1つを選択する前に、前記メモリデバイスに関連したセルフリフレッシュモードを選択するように構成されたセルフリフレッシュ出力を生成することをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1の電力コンテキストを格納するように構成された第1のセットのレジスタを提供することと、
前記第2の電力コンテキストを格納するように構成された第2のセットのレジスタを提供することと、
前記電力コンテキスト変更要求に応答して、前記第1および前記第2のセットのレジスタのうちの1つを選択することと
をさらに含む、請求項1に記載の方法。
【請求項4】
前記電力コンテキスト変更要求に応答して、前記物理インタフェースの少なくとも1つのドライバに対する選択可能なドライブ強度を調整することをさらに含む、請求項1に記載の方法。
【請求項5】
前記電力コンテキスト変更要求に応答して、前記物理インタフェースの少なくとも1つの受信器に対する選択可能な終端インピーダンスを調整することをさらに含む、請求項1に記載の方法。
【請求項6】
第1のメモリトレーニング段階を経て前記第1の電力コンテキストを生成することと、
第2のメモリトレーニング段階を経て前記第2の電力コンテキストを生成することとをさらに含む、請求項1に記載の方法。
【請求項7】
電力制御インタフェース(ACPI)S3電力状態から復帰すると、前記第1および第2の電力コンテキストのうちの少なくとも1つを復元することをさらに含む、請求項1に記載の方法。
【請求項8】
前記第1および第2の電力コンテキストをサウスブリッジ上のメモリ位置から取り出すことをさらに含む、請求項1に記載の方法。
【請求項9】
前記第1および第2の電力コンテキストをノースブリッジ上のメモリ位置から取り出すことをさらに含む、請求項1に記載の方法。
【請求項10】
メモリデバイスのための物理メモリインタフェースであって、
第1の電力コンテキストおよび第2の電力コンテキストを受信するように構成された複数のレジスタと、
前記第1および第2の電力コンテキストのうちの1つを選択するように構成された選択回路と、
前記メモリデバイスからのデータ読取りおよび前記メモリデバイスへのデータ書込みのためにタイミング遅延を提供するように構成された複数の調整可能な遅延素子であって、各調整可能な遅延素子が、前記第1および第2の電力コンテキストのうちの前記選択された1つに応答する遅延時間を有する、複数の調整可能な遅延素子と
を含む、物理メモリインタフェース。
【請求項11】
前記選択回路が、前記第1および第2の電力コンテキストのうちの前記選択された1つをメモリ位置から取り出す、請求項10に記載の物理メモリインタフェース。
【請求項12】
前記第1の電力コンテキストを格納するように構成された第1のセットのレジスタと、
前記第2の電力コンテキストを格納するように構成された第2のセットのレジスタとをさらに含み、
前記選択回路が前記第1と第2のセットのレジスタとの間で選択するように構成されている、請求項10に記載の物理メモリインタフェース。
【請求項13】
各々が、前記第1および第2の電力コンテキストのうちの前記選択された1つに応答して選択可能なドライブ強度を有する、複数のドライバをさらに含む、請求項10に記載の物理メモリインタフェース。
【請求項14】
各々が前記第1および第2の電力コンテキストのうちの前記選択された1つに応答して選択可能な終端インピーダンスを有する複数の受信器をさらに含む、請求項10に記載の物理メモリインタフェース。
【請求項15】
前記第1の電力コンテキストが第1のメモリトレーニング段階を経て決定され、かつ、前記第2の電力コンテキストが第2のメモリトレーニング段階を経て決定される、請求項10に記載の物理メモリインタフェース。
【請求項16】
物理メモリデバイスの複数のチャネルのためのインタフェースをさらに含む、請求項10に記載の物理メモリインタフェース。
【請求項17】
前記物理メモリインタフェースが、中央処理装置(CPU)のダイ上に配置されている、請求項10に記載の物理メモリインタフェース。
【請求項18】
電力制御インタフェース(ACPI)S3電力状態から復帰すると、前記第1および第2の電力コンテキストのうちの少なくとも1つを取り出すように構成されたメモリインタフェースをさらに含む、請求項10に記載の物理メモリインタフェース。
【請求項19】
前記第1および第2の電力コンテキストをメモリ位置からロードするように構成されたメモリインタフェースをさらに含む、請求項10に記載の物理メモリインタフェース。
【請求項20】
前記物理メモリインタフェースに結合されたメモリデバイスをさらに含み、前記メモリデバイスが、前記第1および第2の電力コンテキストのうちの前記選択された1つに関連する前記タイミング遅延を用いて、データの読取りおよび書込みのために構成されている、請求項10に記載の物理メモリインタフェース。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ダイナミックランダムアクセスメモリ(DRAM)デバイスと直接インタフェースをとる物理層を含むメモリサブシステムに関する。
【0002】
〔関連出願の相互参照〕
本願は、2010年9月13日に出願された、米国仮出願第61/382,089号、および2010年10月22日に出願された、米国非仮出願第12/910,412号の利益を主張し、それらは、本明細書中に完全に明記されているかのように、参照により組み込まれる。
【背景技術】
【0003】
典型的なメモリシステムは、メモリコントローラとメモリデバイスとの間でデータを伝送するために、非同期クロック方式または同期クロック方式のいずれかを使用する。同期クロックは、メモリデバイスが、制御入力に応答する前にクロック信号を待ち、従って、コンピュータのシステムバスと同期されることを意味する。同期ダイナミックランダムアクセスメモリ(SDRAM)は、通常非同期メモリデバイスよりも高いクロック速度をサポートするので、幅広く使用される。
【0004】
ダブルデータレート(DDR)SDRAMは、クロック信号の立ち上がりエッジおよび立ち下がりエッジの両方でデータを伝送する。かかるメモリデバイスは、より低いクロック周波数を使用するが、電気データおよびクロック信号のタイミングの厳格な制御を必要とする。かかるデバイスの第1のバージョン(DDR1)は、同じクロック周波数で動作するシングルデータレート(SDR)SDRAMの帯域幅のほぼ2倍を達成した。DDR2およびDDR3 SDRAMデバイスは、DDR1デバイスに関する後続の改善である。どのタイプのDDRメモリが使用されているか(DDR1/DDR2/DDR3)に関わらず、物理インタフェース(Phy)が、メモリコントローラとDDR SDRAMデバイスとの間に直接結合される。Phyインタフェースは、一般に、DDR SDRAMデータストローブのタイミング要件を処理するための回路機構を含む。典型的なPhyインタフェースの実装は、メモリ性能レベルまたは要求される電力を迅速に調整するための機構を提供しない。
【発明の概要】
【課題を解決するための手段】
【0005】
物理メモリインタフェース(Phy)が提供される。Phyは、メモリコントローラと物理メモリデバイスとの間のインタフェースをとる。Phyインタフェースは、第1の電力コンテキストおよび第2の電力コンテキストを受信するように構成されたコマンドおよび状態レジスタ(CSR)を含む。選択回路が提供される。選択回路は、第1と第2の電力コンテキストの間で切り替えるように構成される。Phyインタフェースは、複数の調整可能な遅延素子を含み、各々が、選択された電力コンテキストに応答する遅延時間を有する。電力コンテキスト間での切替えは、1つまたは複数の調整可能な遅延素子の調整という結果になる。
【0006】
別の実施形態では、Phyインタフェースは、第1の電力コンテキストを格納するように構成された第1のセットのCSRおよび第2の電力コンテキストを格納するように構成された第2のセットのCSRを含む。Phyインタフェースは、各々が、選択された電力コンテキストに応答する選択可能なドライブ強度を有する複数のドライバも含む。Phyインタフェースは、各々が、選択された電力コンテキストに応答する選択可能な終
端インピーダンスを有する複数の受信器も含む。電力コンテキスト間での切替えは、1つまたは複数のドライバ/受信器のドライブ強度および/または終
端インピーダンスの調整という結果になり得る。
【0007】
第1および第2の電力コンテキストは、BIOSトレーニング手順を経て決定され得る。かかる手順は、複数の段階をもち得る。例えば、第1の電力コンテキストは、第1のメモリトレーニング段階を経て決定され得、第2の電力コンテキストは、第2のメモリトレーニング段階を経て決定され得る。
【0008】
Phyインタフェースは、CSRへの読取り/書込みアクセスを可能にするように構成されている構成バスを含み得る。Phyインタフェースは、物理メモリデバイスの複数のチャネルをサポートするようにも構成され得る。Phyインタフェースは、中央処理装置(CPU)のダイ上を含め、様々な場所に配置され得る。
【図面の簡単な説明】
【0009】
【
図1】典型的なコンピュータシステムの一部を示す。
【
図3】Phyインタフェース構成バス上のアドレス、コマンド(例えば、読取り、書込み)、およびデータを示すタイミング図である。
【発明を実施するための形態】
【0010】
図1は、中央処理装置(CPU)12、コア理論チップセット14、16およびメインメモリ28へのメモリインタフェース18を含む、コンピュータシステム10の一部を示す。コア理論チップセットは、ノースブリッジ14(または統合メモリコントローラ)とサウスブリッジ(または入出力コントローラハブ)16との間で分割され得る。メモリコントローラ18は、しばしばノースブリッジ14に配置される。かかる回路機構は、単一チップまたはCPU内など、様々な場所に物理的に配置され得ることを理解すべきである。メモリコントローラ18は、通常、メインメモリ30との間を行き来するデータの論理的な流れを管理する。ダイナミックランダムアクセスメモリは、様々なメモリ記憶セル内のチャージを保持するために定期的なリフレッシュ信号も必要とし得る。メモリコントローラ18は、一般に、これらのリフレッシュ操作を管理する。CPUアーキテクチャおよび/またはオペレーティングシステムに応じて、メインメモリ30は、データを32ビットまたは64ビットデータ単位で伝送し得る。他のサイズのデータ単位がサポートされ得ることを理解すべきである。いくつかのメモリシステムは、ブロック20、24、および30で示される、複数のチャネル(例えば、2つ以上の独立したメモリコントローラ)を含む。明確にするために、本明細書に含まれる例は、単一のメモリチャネルのみを示し得る。本開示の範囲から逸脱することなく、複数のチャネルが使用され得ることを理解すべきである。
【0011】
Phyインタフェース22は、メモリコントローラ18と物理メモリデバイスとの間に存在する。Phyインタフェースは、一般に、中央処理装置内に配置されるが、他の場所に配置され得る。明確にするために、Phyインタフェース22は、
図1では別個のブロックとして示す。Phyインタフェースは、通常、メインメモリデータストローブのタイミング要件を処理するための回路機構を含む。本開示では、ダブルデータレート(DDR)という用語は、DDR1/DDR2/DDR3および/またはかかるメモリデバイスの次の世代を包含する。DDRメモリデバイスは、一般に、電子デバイス技術合同協議会(JEDEC:Joint Electron Devices Engineering Councils)規格に準拠する。これらの規格は、DDRメモリデータがどのようにアクセスされ(読み取られ)、格納される(書き込まれる)のかを定義する。Phyインタフェースは、他のメモリタイプおよび/または他のメモリ規格と共に動作するように構築され得ることを理解すべきである。典型的なDDR SDRAMメモリデバイスへのインタフェースは、主として2つの信号クラス、DQ(データ)32およびDQS(データストローブ)34を通して達成される。他の信号は、メモリクロック(MEMCLK)38、ならびにアドレスおよびコマンド信号(通常、ADDR/CMD 36として示す)を含む。典型的なメモリデバイスは、図に示されていない、追加の信号を使用し得ることを理解すべきである。かかる信号は、明確さのみのために省略されている。例えば、電力および接地信号は示されていない。かかる信号は、典型的な実施態様に含まれるであろうことを理解すべきである。
【0012】
読取り操作中、DDR SDRAMは、DQおよびDQSを、一般に「エッジアライン(edge aligned)」と呼ばれる方法で、同時に発行する。メモリコントローラが、DDR SDRAMから送信されているデータを正しく取得するため、Phyインタフェース22は、遅延ロックループ(DLL)などの遅延回路を利用して、有効なデータウィンドウまたは「データアイ(data eye)」の間に、DQ信号を正しくラッチするためにDQS信号が使用され得るように、DQS信号を遅延させる。同様に、Phyインタフェース22は、データのDDR DRAMへの書込みをサポートするためにも遅延回路を利用し得る。データ読取りのため、DQS 34を遅延させる必要がある。データ書込みのため、DQSおよびDQ 34、32を遅延させる必要がある。Phyは、DQS 34を、エッジアラインよりむしろ、DQ 32データアイの中央に合わせる。DQS 34は、書込み平準化(write leveling)のために遅延されて、データアイの中央要件を満足する。他の遅延も使用され得る(例えば、データバスの3状態制御の読取り/書込みのため)。Phyインタフェース22は、以下でさらに詳述する、遅延タイミング、ドライブ強度、および様々な他のパラメータを制御するために利用される複数のコマンドおよび状態レジスタ(CSR)42を含む。かかる回路機構は、チャネルベース毎でも重複され得ることを理解すべきである。
【0013】
Phyインタフェースは、また、送信器のドライブ強度および受信器の終
端インピーダンスの調整または選択も行い得る。固定のタイミング遅延、送信器ドライブ強度および受信器終
端インピーダンスを使用するよりも、これらのパラメータは、コンピュータシステムが作動されるたびに調整され得る。これは、通常、トレーニングプログラムの支援を受けて達成される。トレーニングプログラムは、通常、基本入出力システム(BIOS)メモリデバイス26に格納されるが、装置ハードウェア内にも実装され得る。トレーニングプログラムは、パワーオンセルフテスト(POST)中にアルゴリズムを実行し、それが、多数のメモリインタフェース信号に関連した、適切なタイミング遅延、ドライブ強度および終
端インピーダンスを決定する。これらのパラメータは、Phyへの、およびPhyからの様々な信号経路の全体的なタイミングを定義する複数のレジスタでPhyインタフェース内に保存される。別の方法では、これらのパラメータは、別の場所(例えば、ノースブリッジ14またはサウスブリッジ16内)に格納され得る。
【0014】
図2は、Phyインタフェース22の高レベルアーキテクチャを示す。Phyインタフェースは、通常、クロックソース(例えば、PLL 70)およびコマンドおよび状態レジスタ(CSR)42を含む制御インタフェースを含む。Phyインタフェース20は、DQ 32、DQS 34、アドレス/コマンド線36およびクロック入力38を含め、デュアルインラインメモリモジュール(DIMM)などの典型的なメモリデバイス上の大多数のピンに対して物理接続を提供する。
【0015】
典型的なメモリデバイスは、クロック可能(セルフリフレッシュ)入力40も備え得る。クロック可能入力40は、メモリデバイスをセルフリフレッシュモードにするために使用される。このモードでは、メモリデバイスは、必要に応じて内部のリフレッシュサイクルを生成するために、オンチップタイマーを使用する。外部クロックもこの間、停止され得る。この入力は、メインメモリデータを失うことなくメモリコントローラを無効にできるので、通常、電源ダウンモードに関連して使用される。
【0016】
図2に示すように、DQ 32(データ)およびDQS 34(ストローブ)線は双方向である。各DIMMは、複数のDQ線(例えば、64データビット)および複数のDQS線を有することを理解すべきである。これらの線の各々は、Phyインタフェース22内に、関連するドライバ52、56および受信器54、58を有する。
図2では、明確にするために、単一のドライバ/受信器の対を示す。各ドライバは、選択可能または調整可能なドライブ出力を有する。同様に、各受信器は、選択可能または調整可能な終
端インピーダンス(例えば、オンダイ終
端(on die termination))を有する。DQおよびDQS線32、34は、遅延ロックループ(DLL)72、74、76などの遅延素子にも関連する。遅延素子(例えば、70〜76)、ドライブ強度または終
端インピーダンス値に対する調整は、以下でさらに詳細に説明するように、適切な値を、関連するCSR 42の適切なフィールド内にプログラミングすることによって達成される。CSR間の論理結合および遅延素子、ドライブ強度または終
端インピーダンスにおける調整は、一般に、点線で示される。
【0017】
この例では、ドライバ52および56は、DLL 72および74とそれぞれ関連する。受信器58は、DLL 76と関連する。前述のように、DLLは、読取りおよび書込み操作のために、適切なタイミング遅延を提供するように調整される。Phyインタフェースは、平準化の有無にかかわらず、読取りおよび書込み操作を実行するようにも構成され得る。平準化を行うDDR3 DIMMSへのメモリ書き込み操作中に、Phyインタフェースは、各DRAMチップにおいて、DQSがメモリクロック58と合体する(coalesce)のが見られるように、DIMMに進む各DQSの開始を遅延させる。平準化を行う読取り操作中、Phyインタフェースは、フライバイトポロジによって取り込まれた遅延の補償も行い得る。
【0018】
より高いデータレートでの操作の信号品位の問題に起因して、Phyインタフェースは、DLL設定をバーストごと(またはトランザクション)のベースで動的に変更し得る。Phyインタフェースは、システム内の各DIMMに対してDQおよびDQSに対する遅延設定の最適な組(tupple)を格納し得る。アクセスされているDIMMに応じて、Phyインタフェースは、適切なDLL設定を取り出し、それらを適用する。
【0019】
Phyインタフェースは、所望の性能レベルに基づき、その要求される電力を調整し得る。電力コンテキストをいつ変更すべきかの決定は、様々な情報源に由来し得ることを理解すべきである。例えば、オペレーティングシステムは、コンテキスト変更が要求されることを(例えば、アイドル時間の設定期間後、ユーザーコマンド、時間スケジュールまたは同様のものによって)判断し得る。別の方法では、コンテキスト変更がいつ要求されるかを判断するためにハードウェアが使用され得る。コンテキスト変更は、異なる電力状態に関連する、異なるセットのPhyインタフェースパラメータ間で切り替えることにより達成される。例えば、高電力状態(例えば、より高いメモリ速度)および低電力状態(例えば、より低いメモリ速度)。各電力状態は、Phyインタフェースパラメータまたはコンテキストの関連するセット(つまり、各信号線に対する遅延素子設定、ドライブ強度および終
端インピーダンス)を有する。以降で詳述するように、電力状態間の切替えは、いくつかの方法で達成され得る。本明細書で開示するように、複数の電力状態間の切替えは、任意のメモリタイプに適用でき、以下の例で使用されるように、DDRメモリとの使用に限定されないことを理解すべきである。
【0020】
この例では、メモリコントローラ18は、32ビットの、時間インターリーブされた、一方向の構成バス80を介して、CSR 42にアクセスし得る。アドレスおよびコマンド(例えば、読取り、書込み、何もしない)は、
図3に示すように、第1のパイプステージ内に送信され、その後、第2のパイプステープ内のデータが続く。CSRは、他の通信リンクを介してアクセスできることを理解すべきである。
【0021】
この例では、CSRアドレス空間は16ビット幅で、65,536の一意の16ビットレジスタの空間を可能にする。かかる大空間を可能にする代わりに、アドレスは、次の機能を可能にするためにマッピングされる:すなわち、チップレット識別、イントラチップレットブロードキャスト(intra−chiplet brodcast)、補償ブロードキャスト(compensation broadcast)、チップレットインスタンス識別(D3DBYTE、D3CLK、およびD3CMPは、2回以上配置されるチップレットである)。
図4は、CSRアドレス指定に対する内訳を示す。
【0022】
CSRの一部のみが所与の電力状態に関連する値を含む。電力状態間での低遅延の切替えを容易にするため、各電力状態に対して電力コンテキスト依存のCSRのセットが提供される。
図2に戻ると、CSRの第1のセットが第1の電力コンテキストと関連する―PhyPS[0] 44。CSRの別のセットが第2の電力コンテキストと関連する―PhyPS[1] 46。PhyPS[n] 48によって示されるように、3つ以上の電力コンテキストをサポートするために、CSRの追加のセットが提供され得ることを理解すべきである。CSRの異なるセット間で選択するために、マルチプレクサまたは選択回路50が提供される。Phyインタフェースは、電力コンテキスト依存でないCSRも含む。かかるCSRは、全ての電力状態で適用可能である。
【0023】
各PhyPS内の各CSRに対するプログラム可能フィールドの要約を以下の表1に示す。
【表1】
【0024】
この例では、Phyインタフェースの関連するフィールドのプログラミングは、構成バス80を介して、コマンドを発行するか、またはCSR内の個々のフィールドをプログラミングすることによって達成される。例えば、1つのPhyPSから別への変更は、DDR Phyインタフェース間接レジスタ空間に発行された単一のコマンドで達成され得る。PhyPSコンテキスト依存CSRのプログラミングは、適切なPhyPSコンテキストを設定し、次いで、正常な間接CSR書込みまたは読取りを行うことによって達成され得る。あるいは、直接CSR書込みまたは読取りは、PhyPSコンテキストを考慮することなく、任意のCSRに達し得る。
【0025】
Phyインタフェースは、Master_0x08[12]−PhyPS、Master_0x08[8]−PstateToAccessおよびMaster_0x18[8]−PhyPSMasterChannelを含む、一連のコマンドで制御され得る。用語体系[12]、[8]および同様のものは、コマンド内のビット位置を指す。Master_0x08[12]コマンドは、現在のPhyインタフェースP状態(0または1)に対応する。このコマンドは、電力コンテキスト(例えば、CSRのどのセットが現在アクティブであるか)を制御する。Master_0x08[8]コマンドは、CSRアクセス中に、どのP状態の読取りまたは書込みを行うかを選択する。BIOSは、実際のP状態変更を行う必要なく、どのP状態を書き込むかを制御するために、この方法を使用し得る。3つ以上の電力コンテキストをサポートするために、追加のビットが使用され得ることを理解すべきである。Master_0x18[8]コマンドはマスターチャネルを選択する。この実施形態では、このビットによって指定されたチャネル(マスターチャネル)のみが、0x0B[PhyPS変更]コマンドの発行を許可される。他のチャネルから発行されたどの0x0B[PhyPS変更]コマンドも無視されるであろう。3つ以上のチャネルをサポートするために、追加のビットが追加され得ることを理解すべきである。この実施形態では、以下の0x0Bコマンドが定義される:
【表2】
【0026】
完全な0x0Bデータパケットを以下の表3に示す。
【表3】
【0027】
この例では、電力コンテキストが単一ビット(すなわち、PhyPS[0]およびPhyPS[1]―ビット位置26)で選択される。3つ以上のコンテキストをサポートするために、追加のビットが追加され得ることを理解すべきである。PhyPSRequestビット(ビット位置30)は、コマンドがコンテキスト変更を含むことを示すために使用される。電力コンテキストは、通常、以下のように変更され得る。コンテキスト変更要求を受信すると、各アクティブなチャネルがセルフリフレッシュ(SR)モード(0x0B[PhySR=1])にされる。この「セーフモード」では、メモリデバイスは、必要に応じて内部のリフレッシュサイクルを生成するために、オンチップタイマーを使用する。選択したSRモードに応じて、外部クロックもこの間、停止され得る。SRモードに入るのは、異なる時に起こり得るが、全てのチャネルは、コンテキスト変更の前にSRモードでなければならない。電力コンテキスト変更が開始される(0x0B[PhyPS=X]、[PhyPSRequest=1])。アクティブなチャネルの各々は、SRモードから正常モード(0x0B[PhySR=0])に切り替えられる。
【0028】
コンテキスト変更コマンドを受信すると、Phyインタフェースは、PhyPSコンテキストを変更し、DDR PLL乗算器およびドライバが更新され、そして、PLLが再ロックされる。これが全て完了すると、CfgDoneが設定される。その後、SRモードから出ると、DLLが再ロックする。PhyPS変更が生じている間、メモリコントローラは、Phyインタフェースへの全ての入力に対する制御(具体的には、CKE、MemReset、ReadPending、WritePending、他の3状態制御の全て)を維持する。
【0029】
意図は、PhyPSを可能な限り迅速に変更することにあるので、PhyPS変更はPLLを電源の入ったままにすることが一般に予期される。従って、PhyPSの変更は、直ちにPLL再ロック(および再ロックの待機)をトリガーし、SRから出た後にDLL再ロックが生じる。しかし、PLL(VCOまたは調整器のいずれか)の電源を落としているSRモード中にあり、かつ、このSRモードにある間にPhyPSを変更することは可能である。この場合、Phyインタフェースはまだ、PhyPS変更の直後にPLL再ロック時間を待機するが、後にSRから出ると、Phyインタフェースは、PLL再ロック(PLLが電源を入れ戻す過程にあるので)およびDLL再ロックの両方を待機するであろう。
【0030】
Phyインタフェースセルフリフレッシュ(PhySR)に入って出る0x0Bコマンドは、チャネル0または1のいずれかで発行され得;1つのDRAMチャネルをSRモードにするが、他はそうではないことを可能にする。Phy内のPClkグローバルグリッドの電源を完全に落とすために、チャネル0および1の両方がPhySRにある必要がある。PhySRを変更する0x0Bを、以下の表4に示す:
【表4】
【0031】
0x0B[23=PhySR]とともに0x0B[31=PhySRRequest]を設定すると、Phyインタフェースがセルフリフレッシュに入るか、または出るようにする。0x0B[25:24]は、SRにある間、PLLの動作を制御する。SRモードに入るのは非常に迅速であり、0x0Bコマンドの受信からCfgDoneがアサートされる時間まで〜300nsかかる。メモリコントローラが可能な限り迅速に前進できるようにするため、メモリコントローラは、CfgDoneが1から0へ遷移するのをモニタし得る。これは、Phyインタフェースがメモリコントローラからの入力を遮断して、すべてのCKEを低下させ、MemResetを適切にドライブし、残りの全てのDDRバスピンを3状態にすることを示す。この時点で、メモリコントローラが狂うのは安全である。CfgDoneがアサートされるまでVddrレールをドロップして、必要なCSRトランザクションの全てが完了していることを示すことは安全ではない。
【0032】
PhySRから出ることは、はるかに潜在的であり、Phyインタフェースクロックグリッド(PClk)がオンに戻され、DLLが再ロックされることを必要とする。PLLは、SRの間、オンのままにされるか、またはオフにされ得る。この実施形態では、PhySR変更の実行中、0x0B[30=PhyPSRequest]は0でなければならない。0x0B[31=PhySRRequest]または0x0B[30=PhyPSRequest]のいずれかを設定すると、0x0B[22:0]を無効にし、それは、DDRレートフィールドを更新するために0x0B[3=DdrRateRequest]を設定することはできなことを意味する。PhyインタフェースPLL乗算器およびドライバを含むCSRをロードするために、DDRレートを第1に設定する。0x0B[PhyPS変更]を送信すると、DDR PLL乗算器およびドライバをロードする。他の実施形態では、複数の高レベル0x0Bコマンドを同時に実行することが可能であり得る。0x0B[31=PhySRRequest]=1かつ0x0B[23=PhySR]が結果的にPhySR状態に対して変更を行わない場合、CfgDoneをアサートする前に、DLLロック時間がまだ従われる。
【0033】
この実施形態では、DDRバス上のDRAMデータレートに対する0x0Bコマンドは、チャネル0においてのみBIOSによって設定される。チャネル1におけるDRAMデータレートを設定するために0x0Bコマンドを送信しても、効果がない。他の実施形態は、各チャネル上で独自のDDRデータレートをサポートし得ることを理解すべきである。0x0B DDRレートコマンドを以下の表5に示す:
【表5】
【0034】
この0x0B[DdrRate]コマンドを介して実際のDDRレートおよびPLL周波数を変更することは、レガシーBIOSのために含まれている。PhyインタフェースP状態を理解するBIOSは、代わりに、直接CSR Master_0x00[DdrRate]およびMaster_0x40[DdrRate]を通じてPhyインタフェースP状態の両方に対してDDRレートをプログラムすべきである。これらの(直接CSRを通じた)レート変更は、以降の0x0B[PhyPS変更]の後にのみ影響を及ぼすであろう。
【0035】
この実施形態では、DDRレートに対する更新を実行する場合、0x0B[31=PhySRRequest]および0x0B[30=PhyPSRequest]は両方とも0でなければならない。実施形態は、複数の高レベル0x0Bコマンドを同時にサポートし得ることを理解すべきである。
【0036】
コールドリセット、ウォームリセット後のPhyPS状態、または高度構造及び電力制御インタフェース(ACPI)電力状態S3(一般に、RAMに対するスタンバイ(Stanby)、スリープ(Sleep)、またはサスペンド(Suspend)と呼ばれる)を以下の表6に示す。全ての状態は、ウォームリセットを通して持続する。それ故、以下のウォームリセットの項目では、値は、ウォームリセットの前のままである。
【表6】
【0037】
典型的なコンピュータ電力供給が最初に通電される場合、様々な電圧が安定するのに時間がかかる。電圧が安定する前に、コンピュータを起動しようとすることが許可された場合、予測できない結果が生じ得る。コンピュータが時期尚早に起動するのを防ぐため、電力供給が使える状態であれば、電力供給はPwrOK信号を出力する。この信号が送信されるまで、マザーボードはコンピュータを起動するのを拒否する。
【0038】
コールドブート(〜PwrOKがアサートされ、同様にResetがアサートされる)時には、PhyPSが自動的に0に設定され、PhyインタフェースはPhySRではないであろう(全てのDLLの電源が入れられる)。ウォームブート(PwrOKは継続的にアサートされ、Resetのみがアサートされる)時には、PhyPSおよびPhySR状態が、ウォームリセットの直前の状態によって決定される。ウォームリセットからの復帰は、BIOSが適切なPhyPSおよびPhySR状態を設定することを必要とする(時間最適化ソリューションは、これらの状態の直接CSR読取りを実行し、次いで必要であれば、書込みを実行することである)。BIOSは、ウォームリセットの後、Phyインタフェースが、SRモードにないことを確実にすべきである。
【0039】
DDR3は、書込み平準化(WL)およびRxEnの曖昧でない収束を有するために、2つのパスのトレーニング手順を必要とするので、より高出力のP状態に対するトレーニングの過程の一部として低周波数P状態に対してトレーニングすることが可能である。その手順は、BIOSは既に、ウォームリセットまたはS3からの退出とは対照的に、これはコールドリセット(従って、トレーニングを必要とする)である判断しているとも仮定する。
【0040】
メモリトレーニングの第1のパスは、以下の表7に示すような曖昧でないトレーニングに対して必要な初期のDDRレートを使用する。以下の表の全てで設定されるステップの特定の順番は、本開示の範囲から逸脱することなく、変更し得ることを理解すべきである。
【表7】
【0041】
この時点で、DDR PLLおよびDLLが、使用するために適切に構成されている。PhyPSコンテキストはPhyPS0である。メモリが存在する場合、両方のチャネルがトレーニングを開始する準備ができている。トレーニングは、表8に大まかに示すように、AMD Generic Encapsulated Software Architecture (AGESA)ブートストラッププロトコルなどの、周知のプロトコルに従う:
【表8】
【0042】
この時点で、曖昧でないトレーニングに対する初期DDRレートのトレーニングおよびプログラミングが完了する。この初期トレーニングプロトコル中に確立されたこのDDRレートおよび他のパラメータが、第1の電力コンテキスト(例えば、より低速度―PhyPS[1])として使用され得る。PhyPS[1]は、別のDDRレートに基づき設定され得る(すなわち、この周波数に対してステップ4〜15を繰り返す)ことを理解すべきである。次の段階は、より高い(PhyPS[0])DDRレートに対してトレーニングする。前述したパスは、書込み平準化およびRxEnハードウェアのトレーニングアルゴリズムにおけるエイリアシングを解決した。書込み平準化およびRxEnトレーニング値は、MemClkデータレート比PhyPS0/PhyPS1によってスケーリングされ、PhyPS[0]におけるトレーニングの第2の段階に対するシードとして使用される。手順は、表9に示すように開始される。
【表9】
【0043】
この時点で、DDR PLLおよびDLLが、使用するために適切に構成される。PhyPSコンテキストはまだPhyPS[0]であり、PhyインタフェースはPhyPS[0] DDRレートで実行する。両方のチャネルは、メモリが存在する場合、表8に大まかに示すように、トレーニングの次の段階を開始する準備ができている:
【表10】
【0044】
これで、電力コンテキスト―PhyPS[0]の第2の段階のトレーニングおよびプログラミングが完了する。この時点で、両方のPhyPS空間に対するレートがトレーニングされ、トレーニングされた値が、トレーニングの一部としてPhyインタフェースPhyPS[0] CSRに対して既に書き込まれている。Phyインタフェースは、現在、PhyPS[0]コンテキスト内である。PhyPS[1]トレーニング値はトレーニングされているが、PhyPS[1] CSRにまだ書き込まれていない。PhyPS[0] CSRは、表11に大まかに示すように更新される:
【表11】
【0045】
1つのPhyPSのみが必要とされる場合には、BIOSがどのPhyPSコンテキストを使用すべきかを選択し得る。歴史的な意味を維持するため、BIOSはPhyPS[0]に対してPhyインタフェースを構成し得る。
【0046】
S3からの復帰は、いかなるDRAMトレーニングも伴わず、不揮発性状態(通常、サウスブリッジにおける)からのトレーニング値の復元のみである。S3からの復帰は、一般に、(〜PwrOkのために)PhyPSコンテキストがPhyPS0であり、Master_0x08[PStateToAccess]が0であること、両方のチャネルがPhySRから出ていること、およびマスターチャネルがチャネル0である(たとえ、メモリがチャネル0上に存在しなくても)ことを保証する。S3からの復帰に対する手順を大まかに表12に示す:
【表12】
【0047】
ウォームリセットの復帰は、S3からの復帰とほぼ同一である。S3からの復帰は、〜PwrOkで、PhyPSコンテキストをPhyPS0に設定し、PhyPS変更を伝達するためにチャネル0をマスターチャネルとして指定し、両方のチャネルでPhyインタフェースをPhySRから出す。対照的に、ウォームリセットは、PhyPSおよびPhySRをマスターチャネルと同様に未知の状態のままにしておく。ウォームリセットの復帰には構造上の穴が存在することにさらに留意すべきである。システがコールドブートし、メモリトレーニングを完了し、全てのトレーニング値を不揮発性メモリに格納し得る前にウォームリセット復帰が発行されると、復帰は失敗するであろう。この問題を回避するため、BIOSは、トレーニング値が計算され、うまく格納されているか否かを示すために(コールドリセット時にリセットされるが、ウォームリセットを通じて持続する)フラグを使用すべきであり、ウォームリセット中に、BIOSがこのフラグが設定されているのを見ると、トレーニングされた状態を復元することによって復帰し得る。トレーニングされた状態は、Master_0x18[PhyPSMasterChannel]も含み、同様に、どの未実装のチャネルもSRモードのままにされる。このフラグが設定されていなければ、BIOSはPhyを(再)トレーニングする必要がある。以下の開示では、このフラグが設定されていて、トレーニング値が格納されていると仮定する。従って、ウォームリセット復帰はいかなるDRAMトレーニングも伴わず、(通常、サウスブリッジ内の)不揮発性状態からトレーニング値を復元するだけである。ウォームリセット復帰を実行するための手順を大まかに表13に示す:
【表13】
【0048】
表14は、各電力コンテキストに対して重複されている全てのPhyPS CSRのリストを示す。
【表14】
【0049】
本明細書の開示に基づいて、多数の変形形態が可能であることを理解すべきである。例えば、複数の電力コンテキストが他のメモリ位置(例えば、ノースブリッジ14またはサウスブリッジ16内)に格納できる。このシナリオでは、標準的なPhyインタフェースは、コンテキスト依存CSRの専用セットを必要とせずに、電力コンテキストを切り替え得る。かかるシナリオは、CSRの複数のセットに対する必要性を取り除き得るが、コンテキスト変更に対する待機時間を増加させる。
【0050】
特徴および要素は特定の組合せで前述されているが、各特徴または要素は、他の特徴および要素なしで単独で、または他の特徴および要素の有無に関わらず様々な組合せで使用され得る。本明細書で提供する方法または流れ図は、汎用コンピュータまたはプロセッサによる実行のために、コンピュータ可読記憶媒体内に組み込まれた、コンピュータプログラム、ソフトウェア、またはファームウェアで実装され得る。コンピュータ可読記憶媒体の例には、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵されたハードディスクおよび取り外し可能ディスクなどの磁気媒体、光磁気媒体、ならびにCD−ROMディスク、およびデジタル多用途ディスク(DVD)などの光媒体を含む。
【0051】
適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来型のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと関連した1つまたは複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、および/または状態マシンを含む。かかるプロセッサは、処理されたハードウェア記述言語(HDL)命令(コンピュータ可読媒体上に格納可能なかかる命令)の結果を用いて、製造プロセスを構成することにより製造され得る。かかる処理の結果は、本発明の態様を実施するプロセッサを製造するために、その後、半導体製造プロセスで使用されるマスクワークであり得る。