(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-07
(45)【発行日】2024-08-16
(54)【発明の名称】低電力状態におけるオンダイタイマの正確なシャドーイング及び調整
(51)【国際特許分類】
G06F 1/324 20190101AFI20240808BHJP
【FI】
G06F1/324
(21)【出願番号】P 2023577878
(86)(22)【出願日】2022-06-08
(86)【国際出願番号】 US2022032658
(87)【国際公開番号】W WO2022271450
(87)【国際公開日】2022-12-29
【審査請求日】2024-01-31
(32)【優先日】2021-06-24
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ベンジャミン チェン
(72)【発明者】
【氏名】プラベッシュ グプタ
【審査官】漆原 孝治
(56)【参考文献】
【文献】米国特許出願公開第2016/0380769(US,A1)
【文献】米国特許第08624627(US,B1)
【文献】米国特許第05987614(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/324
(57)【特許請求の範囲】
【請求項1】
集積回路であって、
調整可能なクロック信号を受信するタイマを含む第1の回路であって、前記第1の回路は、前記調整可能なクロック信号が失われる非動作電力状態を有する、第1の回路を備え、
前記調整可能なクロック信号が基準クロック信号よりも低い周波数を有する電力状態に入るために前記非動作電力状態を離れることに応じて、前記第1の回路は、前記調整可能なクロック信号の周波数を、前記低い周波数よりも高い周波数に調整し、次いで、前記非動作電力状態に関連付けられた経過時間値を受信し、調整されたタイマ値を使用して前記タイマを開始する、
集積回路。
【請求項2】
前記基準クロック信号を受信するシャドータイマを含む電力状態コントローラを備え、
前記電力状態コントローラは、前記タイマからのタイマ値をメモリに記憶し、前記非動作電力状態に関連付けられた経過時間値を測定するために前記シャドータイマを開始し、前記非動作電力状態に続いて前記調整されたタイマ値で前記タイマを復元する、
請求項1の集積回路。
【請求項3】
前記基準クロック信号を受信するシャドータイマを含む電力状態コントローラを備え、
前記電力状態コントローラは、前記タイマからのタイマ値をメモリに記憶し、前記非動作電力状態に関連付けられた経過時間値を測定するために前記シャドータイマを開始し、前記非動作電力状態に続いて前記調整されたタイマ値で前記タイマを復元する、
請求項1の集積回路。
【請求項4】
前記第1の回路は、前記経過時間値を受信する前に前記電力状態コントローラと同期するように動作可能なクロスドメイン同期回路を含み、
前記第1の回路は、前記電力状態コントローラと同期する場合に、前記クロスドメイン同期回路を介してタイマ読み取り信号を前記電力状態コントローラに送信し、前記クロスドメイン同期回路を介して確認応答信号を前記電力状態コントローラから受信するように動作可能である、
請求項3の集積回路。
【請求項5】
前記第1の回路は、前記メモリに記憶された前記タイマ値、前記シャドータイマ、前記クロスドメイン同期回路の同期時間、前記タイマ値の受信に関連する第1のエラー値、及び、前記タイマの復元に関連する第2のエラー値に基づいて、前記調整されたタイマ値を計算する、
請求項4の集積回路。
【請求項6】
前記調整可能なクロック信号が基準クロック信号よりも低い周波数を有する電力状態は、前記調整可能なクロック信号が前記タイマに供給されるが、前記第1の回路の少なくとも一部からゲーティングされるライトアイドル状態である、
請求項1の集積回路。
【請求項7】
第2の調整可能なクロック信号を受信する第2のタイマを含む第2の回路であって、前記第2の回路は、前記第2の調整可能なクロック信号が失われる非動作電力状態と、前記第2の調整可能なクロック信号が異なる周波数で動作する複数の電力状態と、を有する、第2の回路を備え、
前記電力状態コントローラは、前記非動作電力状態に入るように前記第2の回路に命令し、前記第2のタイマからのタイマ値をメモリに記憶し、前記タイマ及び前記第2のタイマの中から選択された最も早いウェイクアップ時間及び非動作電力状態抜け出し待ち時間値に基づいて、前記シャドータイマのタイマウェイクアップ値を設定するように動作可能である、
請求項3の集積回路。
【請求項8】
第1の回路を、前記第1の回路の調整可能なクロック信号がゲーティングされるか又は電力切断される非動作電力状態に入らせることと、
前記第1の回路を、前記非動作電力状態から離れさせ、調整されたタイマ値でタイマを復元させることと、
前記第1の回路が、前記非動作電力状態を離れて、前記調整可能なクロック信号が基準クロック信号よりも低い周波数を有する電力状態に入ると、前記調整可能なクロック信号を前記低い周波数よりも高い周波数に調整し、次いで、前記非動作電力状態に関連付けられた経過時間値を受信することと、を含む、
方法。
【請求項9】
前記調整可能なクロック信号が基準クロック信号よりも低い周波数を有する電力状態は、前記調整可能なクロック信号が前記タイマに供給されるが、前記第1の回路の少なくとも一部からゲーティングされるライトアイドル状態である、
請求項8の方法。
【請求項10】
電力状態コントローラが、前記第1の回路からタイマ値を受信することと、前記タイマ値をメモリに記憶することと、前記非動作電力状態に関連付けられた経過時間値を測定するために、基準クロック信号で動作するシャドータイマを開始することと、を含む、
請求項8の方法。
【請求項11】
前記経過時間値を受信する前に、クロスドメイン同期回路を使用して前記第1の回路を前記電力状態コントローラと同期させることと、
前記第1の回路を前記電力状態コントローラと同期させる場合に、前記クロスドメイン同期回路を介してタイマ読み取り信号を前記電力状態コントローラに送信することと、前記クロスドメイン同期回路を介して確認応答信号を前記電力状態コントローラから受信することと、を含む、
請求項10の方法。
【請求項12】
前記第1の回路が、前記調整可能なクロック信号が基準クロック信号よりも低い周波数を有する電力状態を離れると、前記調整可能なクロック信号の周波数を前記低い周波数よりも高い周波数に調整し、次いで、前記タイマ値を電力状態コントローラに送信することを含む、
請求項8の方法。
【請求項13】
データ処理システムであって、
複数のプロセッサコアと、
前記複数のプロセッサコアに結合され、調整可能なクロック信号を受信するタイマを含む第1の回路であって、前記第1の回路は、前記調整可能なクロック信号が失われる非動作電力状態を有する、第1の回路と、を備え、
前記調整可能なクロック信号が基準クロック信号よりも低い周波数を有する電力状態に入るために前記非動作電力状態を離れることに応じて、前記第1の回路は、前記調整可能なクロック信号の周波数を、前記低い周波数よりも高い周波数に調整し、次いで、経過時間値を受信し、調整されたタイマ値を使用して前記タイマを開始するように動作可能である、
データ処理システム。
【請求項14】
前記調整可能なクロック信号が基準クロック信号よりも低い周波数を有する電力状態は、前記調整可能なクロック信号が前記タイマに供給されるが、前記第1の回路の少なくとも一部からゲーティングされるライトアイドル状態である、
請求項13のデータ処理システム。
【請求項15】
前記第1の回路は、前記経過時間値を受信する前に電力状態コントローラと同期するように動作可能なクロスドメイン同期回路を含み、
前記第1の回路は、前記電力状態コントローラと同期する場合に、前記クロスドメイン同期回路を介してタイマ読み取り信号を前記電力状態コントローラに送信し、前記クロスドメイン同期回路を介して確認応答信号を前記電力状態コントローラから受信するように動作可能である、
請求項14のデータ処理システム。
【請求項16】
前記第1の回路は、メモリに記憶された前記タイマ値、前記経過時間値、前記クロスドメイン同期回路の同期時間、前記タイマ値の受信に関連する第1のエラー値、及び、前記タイマの復元に関連する第2のエラー値に基づいて、前記調整されたタイマ値を計算する、
請求項15のデータ処理システム。
【請求項17】
前記基準クロック信号を受信するシャドータイマを含む電力状態コントローラを備え、
前記電力状態コントローラは、前記タイマからのタイマ値をメモリに記憶し、前記非動作電力状態に関連付けられた経過時間値を測定するために前記シャドータイマを開始し、前記非動作電力状態に続いて前記調整されたタイマ値で前記タイマを復元する、
請求項13のデータ処理システム。
【請求項18】
前記第1の回路は、前記調整可能なクロック信号が基準クロック信号よりも低い周波数を有する電力状態を離れると、前記調整可能なクロック信号の周波数を前記低い周波数よりも高い周波数に調整し、次いで、前記タイマ値を前記電力状態コントローラに送信するように動作可能である、
請求項17のデータ処理システム。
【請求項19】
第2の調整可能なクロック信号を受信する第2のタイマを含む第2の回路であって、前記第2の回路は、前記第2の調整可能なクロック信号が失われる非動作電力状態と、前記第2の調整可能なクロック信号が異なる周波数で動作する複数の電力状態と、を有する、第2の回路を備え、
前記電力状態コントローラは、前記第2の回路が前記非動作電力状態に入ることにより、前記第2のタイマからのタイマ値をメモリに記憶し、前
記タイマ及び前記第2のタイマの中から選択された最も早いウェイクアップ時間及び非動作電力状態抜け出し待ち時間値に基づいて、前記シャドータイマのタイマウェイクアップ値を設定するように動作可能である、
請求項17のデータ処理システム。
【請求項20】
前記第1の回路は、データファブリックであり、前記第2の回路は、メモリコントローラ、入力/出力コントローラ及びプロセッサコアのうち何れかである、
請求項19のデータ処理システム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、異なる入力/出力及び通信機能のために様々な周辺構成要素を利用する。システムオンチップ(system-on-chip、SOC)は、単一の集積回路チップ上で中央処理ユニット(central processing unit、CPU)コア及びグラフィックス処理ユニット(graphics processing unit、GPU)等のデータ処理回路を周辺コントローラ及びメモリインターフェースと組み合わせており、携帯型の電池駆動式動作によく適している。例えば、SOCは、ディスプレイコントローラ、画像信号プロセッサ(image signal processor、ISP)及びSOC上の他の周辺コントローラを組み込んで、コンピュータシステムへの情報の入力及びコンピュータシステムからの情報の出力を可能にし得る。そのような大規模且つ複雑なSOCでは、デバイスは、通常、大型のオンチップルーティング回路又は「データファブリック」を介してアクセスをルーティングすることによって、メモリ等のリソース間でデータを転送する。
【0002】
典型的なSOC上の回路の多様性は、省電力モードを実装するための問題を提示する。動作モード及び省電力モードは、コンピュータシステムの多くの部分に対して用いられ、異なるモードは、プロセッサコアに対する処理電力、通信バスに対するシグナリングデータレート等の異なる動作容量、又は、使用されていない場合の省電力の異なるレベルを提供する。動作モード及び非動作省電力モードの両方は、本明細書では「電力状態」と称される。このような電力モードを管理するための一般的な標準の1つは、高度構成及び電力インターフェース(Advanced Configuration and Power Interface、ACPI)であり、これは、パーソナルコンピュータ(personal computer、PC)及びサーバ等のコンピュータの電力管理及び構成モデルである。ACPIは、コンピュータオペレーティングシステムが、限られたセットのモードの中からデバイスの動作モードを変更することによって、各デバイスが消費する電力量を制御することを可能にする。例えば、そのような変更は、デバイスのクロック速度をより高い周波数若しくはより低い周波数に変更すること、又は、デバイスをスタンバイモード若しくは電力オフモードにすることを含み得る。ACPIは、オペレーティングシステムに公開される制御の一般化されたセットを提供する業界標準であるが、特定のデータ処理システムの電力消費又は性能を最適化することを目的とした特定の機能を含まない。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、知られている加速処理ユニット(accelerated processing unit、APU)及びメモリシステムのブロック図である。
【
図2】例示的な実施形態による、タイマを有する回路についての電力状態遷移を管理するための要素を示すAPUの一部のブロック図である。
【
図3】いくつかの実施形態による、非動作電力状態に遷移するためのプロセスのフロー図である。
【
図4】いくつかの実施形態による、非動作電力状態から遷移するためのプロセスのフロー図である。
【
図5】いくつかの実施形態による、非動作電力状態のためのバックアップ及び復元タイマ値に関与する信号を含むタイミング図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0005】
集積回路は、電力状態コントローラと、第1の回路と、を含む。第1の回路は、調整可能なクロック信号を受信するタイマを含み、調整可能なクロック信号が失われる非動作電力状態を有する。非動作電力状態を離れて、調整可能なクロックが基準クロックよりも低い周波数を有する電力状態に入ることに応じて、第1の回路は、調整可能なクロックの周波数を低い周波数よりも高い周波数に調整し、次いで、非動作電力状態に関連付けられた調整されたタイマ値を受信し、調整されたタイマ値を使用してタイマを開始する。
【0006】
方法は、第1の回路を、第1の回路に対する調整可能なクロック信号がゲーティングされるか又は電力切断される、非動作電力状態に入らせることを含む。方法は、第1の回路に非動作電力状態を離れさせることと、調整されたタイマ値を用いてタイマを復元させることと、を含む。第1の回路が非動作電力状態を離れて、調整可能なクロックが基準クロックよりも低い周波数を有する電力状態に入ると、方法は、まず、調整可能なクロックをより低い周波数よりも高い周波数に調整し、次いで、非動作電力状態に関連付けられた経過時間値(elapsed time value)を受信する。
【0007】
データ処理システムは、複数のプロセッサコアと、複数のプロセッサコアに結合された第1の回路と、電力状態コントローラと、を含む。第1の回路は、調整可能なクロック信号を受信するタイマを含み、調整可能なクロック信号が失われる非動作電力状態を有する。非動作電力状態を離れて、調整可能なクロックが基準クロックよりも低い周波数を有する電力状態に入ることに応じて、第1の回路は、調整可能なクロックの周波数を低い周波数よりも高い周波数に調整し、次いで、非動作電力状態に関連付けられた経過時間を受信し、調整されたタイマ値を使用してタイマを開始する。
【0008】
図1は、いくつかの実施形態による、加速処理ユニット(APU)100及びメモリシステム130のブロック図を示している。APU100は、ホストデータ処理システムにおけるプロセッサとして使用するのに好適な集積回路であり、概して、中央処理ユニット(CPU)コア複合体110と、グラフィックスコア120と、ディスプレイエンジンのセット122と、データファブリック125と、メモリ管理ハブ140と、周辺コントローラのセット160と、周辺バスコントローラのセット170と、システム管理ユニット(system management unit、SMU)180と、システム電力状態コントローラ182と、を含む。
【0009】
CPUコア複合体110は、CPUコア112及びCPUコア114を含む。この例では、CPUコア複合体110が2つのCPUコアを含むが、他の実施形態では、CPUコア複合体110が任意の数のCPUコアを含むことができる。CPUコア112及び114の各々は、制御ファブリックを形成するシステム管理ネットワーク(system management network、SMN)及びデータファブリック125に双方向に接続されており、データファブリック125にメモリアクセス要求を提供することができる。CPUコア112及び114の各々は、単体のコアであってもよいし、更にキャッシュ等の特定のリソースを共有する2つ以上の単体のコアを有するコア複合体であってもよい。
【0010】
グラフィックスコア120は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を高度に統合された並列方式で実行することができる高性能グラフィックス処理ユニット(graphics processing unit、GPU)である。グラフィックスコア120は、SMN及びデータファブリック125に双方向に接続されており、メモリアクセス要求をデータファブリック125に提供することができる。これに関して、APU100は、CPUコア複合体110とグラフィックスコア120とが同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体110とグラフィックスコア120とがメモリ空間の一部を共有する一方でグラフィックスコア120がCPUコア複合体110によりアクセスできないプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。
【0011】
ディスプレイエンジン122は、モニタ上に表示するために、グラフィックスコア120によって生成されたオブジェクトをレンダリング及びラスタライズする。グラフィックスコア120及びディスプレイエンジン122は、メモリシステム130内の適切なアドレスへの一様な変換のために、データファブリック125を介して共通メモリ管理ハブ140に双方向に接続されている。
【0012】
データファブリック125は、任意のメモリアクセスエージェントとメモリ管理ハブ140との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を判定するために基本入出力システム(basic input/output system、BIOS)によって規定されるシステムメモリマップ、及び、各仮想接続のためのバッファも含む。
【0013】
周辺コントローラ160は、ユニバーサルシリアルバス(universal serial bus、USB)コントローラ162及びシリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)インターフェースコントローラ164を含み、これらのそれぞれは、システムハブ166及びSMNバスに対して双方向で接続されている。これらの2つのコントローラは、APU100で使用され得る周辺コントローラの単なる典型例である。
【0014】
周辺バスコントローラ170は、システムコントローラ又は「サウスブリッジ(Southbridge、SB)」172と、周辺構成要素相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe)コントローラ174と、を含み、これらのそれぞれは、入出力(input/output、I/O)ハブ176及びSMNバスに対して双方向で接続されている。また、I/Oハブ176は、システムハブ166及びデータファブリック125に対して双方向で接続されている。したがって、例えば、CPUコアは、データファブリック125がI/Oハブ176を介してルーティングするアクセスにより、USBコントローラ162、SATAインターフェースコントローラ164、SB172、又は、PCIeコントローラ174内のレジスタをプログラムすることができる。APU100のためのソフトウェア及びファームウェアは、リードオンリーメモリ(read-only memory、ROM)、フラッシュ電気的消去可能プログラマブルROM(electrically erasable programmable ROM、EEPROM)等の様々な不揮発性メモリタイプの何れかであり得るシステムデータドライブ又はシステムBIOSメモリ(図示せず)に記憶される。概して、BIOSメモリは、PCIeバスを介してアクセスされ、システムデータドライブは、SATAインターフェースを介してアクセスされる。
【0015】
SMU180は、APU100上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU180は、APU100上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU180は、APU100の構成要素のそれぞれにクロック信号を与えるために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU180は、様々なプロセッサ及び他の機能ブロックのためのACPI電力状態を管理し、適切な電力状態を判定するためにCPUコア112及び114並びにグラフィックスコア120から測定された電力消費値を受信し得る。
【0016】
システム電力状態コントローラ182は、APU200の様々な部分でローカル電力状態コントローラと通信するために、SMNに双方向に接続されており、SMU180によって制御されるACPI電力状態とは無関係にAPU200における周辺回路の電力状態を制御する。システム電力状態コントローラ182によって制御される電力状態は、ACPI仕様で定義されるように、典型的には、オペレーティングシステムに公開されない、又は、ACPI仕様下でそのOSPM(Operating System-directed configuration and Power Management)システムを介して制御可能である追加の電力状態であるという点で、様々なACPIプロセッサ状態及びパフォーマンス状態とは異なる。ローカル電力状態コントローラ270によって制御される電力状態は、以下で更に説明するように、システム電力状態コントローラ182によってAPU100内の他のブロックの電力状態と調整される(指定された回路ブロックの電力切断することを含む)アイドル状態及び「ディープアイドル」状態を含む。
【0017】
メモリ管理ハブ140、並びに、その関連する物理インターフェース(physical interface、PHY)151及び152は、この実施形態では、APU100と統合される。メモリ管理ハブ140は、メモリチャネル141及び142と、パワーエンジン149と、を含む。メモリチャネル141は、ホストインターフェース145と、メモリチャネルコントローラ143と、物理インターフェース147と、を含む。ホストインターフェース145は、メモリチャネルコントローラ143を、シリアルプレゼンス検出リンク(serial presence detect、SDP)を介してデータファブリック125に対して双方向で接続する。物理インターフェース147は、メモリチャネルコントローラ143をPHY151に対して双方向で接続し、PHY151を構成するためのDDR PHYインターフェース(DDR PHY Interface、DFI)仕様に準拠する。メモリチャネル142は、ホストインターフェース146、メモリチャネルコントローラ144、及び、物理インターフェース148を含む。ホストインターフェース146は、別のSDPを介してメモリチャネルコントローラ144をデータファブリック125に対して双方向で接続する。物理インターフェース148は、メモリチャネルコントローラ144をPHY152に対して双方向で接続し、DFI仕様に準拠する。パワーエンジン149は、SMNバスを介してSMU180に対して、アドバンスト周辺バス(advanced peripheral bus、APB)インターフェース254を介してPHY151及び152に対して双方向で接続されているとともに、メモリチャネルコントローラ143及び144に対して双方向で接続されている。PHY151は、メモリチャネル131への双方向接続を有する。PHY152は、双方向接続メモリチャネル133を有する。
【0018】
メモリ管理ハブ140は、2つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、共有パワーエンジン149を使用して、以下で更に説明する態様でメモリチャネルコントローラ143及びメモリチャネルコントローラ144の両方の動作を制御する。メモリチャネル141及び142のそれぞれは、DDRバージョン5(DDR version five、DDR5)、DDRバージョン4(DDR version four、DDR4)、低電力DDR4(low power DDR4、LPDDR4)、グラフィックスDDRバージョン5(graphics DDR version five、GDDR5)、及び、高帯域幅メモリ(high bandwidth memory、HBM)等の最先端DDRメモリに接続することができ、将来のメモリ技術に適合され得る。これらのメモリは、高いバス帯域幅及び高速動作をもたらす。同時に、それらのメモリは、ラップトップコンピュータ等のバッテリ駆動用途のための電力を節約するための低電力モードを提供するとともに、内蔵熱監視も行う。
【0019】
様々なプロセッサコア、コントローラ及びインターフェースは、高度なプログラム可能割り込みコントローラ(Advanced Programmable Interrupt Controller、APIC)等の割り込みコントローラを含み得る。APICは、マルチプロセッサシステムにおいて使用され得る割り込みコントローラのファミリーである。これは、マルチプロセッサコンピュータシステムにおける割り込みルーティング効率問題を解決することを意図したいくつかのアーキテクチャ設計の1つである。APICは、スプリットアーキテクチャ設計であり、通常はプロセッサ自体に統合されるローカル構成要素APIC(local component APIC、LAPIC)と、システムバス上のオプションのI/O APICと、を有する。
【0020】
メモリシステム130は、メモリチャネル131及びメモリチャネル133を含む。メモリチャネル131は、DDRxバス132に接続されるデュアルインラインメモリモジュール(dual inline memory module、DIMM)のセットを含み、これには、本例では個別のランクに対応する代表的なDIMM134、136、138が含まれる。同様に、メモリチャネル133は、代表的なDIMM135、137、139を含む、DDRxバス129に接続されるDIMMのセットを含む。
【0021】
APU100は、ホストデータ処理システムの中央処理ユニット(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインターフェースを与える。これらのインターフェースは、2つのダブルデータレート(double data rate、DDRx)メモリチャネル、PCIeリンクへの接続のためのPCIeルート複合体、USBネットワークへの接続のためのUSBコントローラ、及び、SATA大容量記憶デバイスへのインターフェースを含む。
【0022】
また、APU100は、様々なシステム監視機能及び節電機能も実装する。特に、1つのシステム監視機能は、熱監視である。例えば、APU100が高温になる場合、SMU180は、CPUコア112及び114並びに/又はグラフィックスコア120の周波数及び電圧を低減することができる。APU100が高温になりすぎる場合、SMUを完全にシャットダウンすることができる。SMNバスを介してSMU180によって外部センサから熱イベントを受けることもでき、SMU180は、それに応じてクロック周波数及び/又は電力供給電圧を低減することができる。
【0023】
図2は、例示的な実施形態による、タイマを有する回路についての電力状態遷移を管理するための要素を示すAPU200の一部のブロック図を示している。APU200の図示された部分は、中央処理ユニット(CPU)コア複合体110と、データファブリック125と、SMU180と、SMNと、システム電力状態コントローラ182と、I/Oハブ176と、メモリチャネルコントローラ144と、本明細書で説明されるタイマ同期技術とともに使用するのに好適なタイマも含む他の周辺機器240を示すブロックと、を含む。
【0024】
CPUコア112及び114の各々は、データファブリック125に双方向に接続されている。また、CPUコア複合体110は、典型的には個々のコアレベルでSMNに双方向に接続されている。省略記号によって示されるように、CPUコア複合体110は、通常、2つより多くのコアを含む。いくつかの実施形態では、GPUコア及び人工知能又はニューラルネットワーク処理コア等の他のタイプのプロセッサコアも用いられる。いくつかの実施形態では、プロセッサコアは、本明細書のタイマ同期技術とともに使用するのに好適なAPICタイマ等のタイマを含む。
【0025】
システム電力状態コントローラ182は、APU200の様々な部分でローカル電力状態コントローラと通信するために、SMNに双方向に接続されており、SMU180によって制御されるACPI電力状態とは無関係にAPU200における周辺回路の電力状態を制御する。これらの電力状態遷移のうち少なくともいくつかは、オペレーティングシステムに対して透過的であり、システム性能に大きな影響を与えることなく電力を節約するためにシステム作業負荷に基づいて頻繁に用いることができるように、低い抜け出し待ち時間(low exit latency)を有する。例えば、システム電力状態コントローラ182によって制御される2つの非動作電力状態は、それぞれ、350μs及び1msの抜け出し待ち時間を有し、それらが、ACPI電力状態(典型的には、より高い抜け出し待ち時間を有する)又はより高い抜け出し待ち時間を伴う他の電力状態よりもはるかに高い頻度で使用されることを可能にする。また、システム電力状態コントローラ182は、ローカルAPICタイマ等の特定の回路への直接サイドバンド接続を含み得る。ここでは特定のシステム周辺機器のみが
図2に示されているが、様々な他のシステムブロックも、システム電力状態コントローラ182からのコマンドに応じてそれぞれのシステムブロックの構成及び状態データを保存及び復元することを含めて、電力状態の開始及び抜け出しを制御するように構成されたローカル電力状態コントローラを含む。システム電力状態コントローラ182は、システムDRAMに保存することによって、又は、オンチップSRAM204に保存することによって、構成及び状態データを保存及び復元する2つの方法を提供する。
【0026】
オンチップSRAM204は、低電力状態中に記憶されるAPU200内の様々な回路から構成データ及び状態データを受信するために、SMNへの双方向接続を有する。この実施形態では、SRAMが用いられているが、SRAM速度程度の速度で動作する任意の好適な形態のRAMが、構成及び状態データを保存するために用いられ得る。
【0027】
基準クロック186(REFCLK)は、システム電力状態コントローラ182にクロック信号を提供し、指定された非動作電力状態中に動作し続ける。好ましくは、REFCLK186は、システムイベントの粗いタイミングのために典型的に用いられるタイムスタンプカウンタ(time stamp counter、TSC)クロックと比較して比較的高い周波数のクロック信号を提供する水晶発振器、非拡散スペクトルクロック回路である。このクロック信号は、APU200のAPICタイマに対する基本タイマレートを生成するための基礎として使用される。基本タイマレートは、周辺構成要素の動作電力状態に応じて、各特定の周辺構成要素において、典型的には分割することによって更に変更することができる。この実施形態ではAPICタイマが説明されているが、他の実施形態では他のタイプのタイマが使用される。APICという用語は、一般に、タイマを含む周辺コントローラを指すが、APICタイマは、完全なAPIC周辺コントローラなしで様々な実施形態において用いられ、APICタイマに関連する特徴のサブセットのみを含み得る。
【0028】
データファブリック125は、ファブリックコントローラ220と、ローカルAPICタイマ230と、データファブリック位相ロックループ(DF PLL)236と、を含む。ポート及びクロスバールータ等のデータファブリック125の他の部分は、関連する特徴に焦点を当てるために示されていないが、データファブリックは、概して、データファブリック125に接続されたリクエスタの代わりにメモリアクセス要求を生成するための複数のマスターポートと、データファブリック125に接続されたメモリデバイスからのそのような要求を満たすための複数のスレーブポートと、要求の宛先アドレスに基づいてマスターポートとスレーブポートとの間に仮想接続を形成するクロスバールータと、を含む。ファブリックコントローラ220は、SMNに双方向に接続されており、ローカルAPICタイマ230及びDF PLL236を含む、データファブリックを制御及び構成するための様々な制御回路に接続される。ローカルAPICタイマ230は、カウンタ234及びクロスドメイン同期回路232(SYNC)を含む。カウンタ234は、DF PLL236に接続されており、カウンタが動作する基準となるクロック源としてDF PLLを使用する。DF PLL236は、少なくともローカルAPICタイマ230に調整可能なクロック信号を供給する調整可能なPLLであり、好ましくは、データファブリック125の全てにクロック信号を供給する。クロスドメイン同期回路232は、システム電力状態コントローラ182のシャドータイマ(shadow timer)184及びカウンタ234に接続されている。クロスドメイン同期回路232は、クロックドメインにわたって準安定状態が発生するのを防止するための複数の同期フリップフロップと、以下で更に説明するように、あるクロック同期プロセス中に回路をシステム電力状態コントローラ182と同期させるように動作可能な制御論理と、を含む、シンクロナイザとして構成されることが好ましい。
【0029】
ファブリックコントローラ220は、システム電力状態コントローラ182からのコマンドに応じて動作して、データファブリック125を選択された動作電力状態及び非動作電力状態にする。いくつかの実施形態では、ファブリックコントローラ220は、データファブリック125上のトラフィックを監視し、データファブリック125がアイドル状態であり得る状態を検出することに基づいて、データファブリック125を、ライトアイドル状態等の選択された電力状態に置く。例えば、いくつかの実施形態では、あるポートが切断され、他のポートが、トラフィックがバッファ内に蓄積することを可能にすることによってトラフィックを「スタッター(stutter)」することを可能にされる条件は、ライトアイドル状態を可能にする。いくつかの指定された非動作電力状態では、DF PLL236の信号は、ゲーティングされるか、又は、PLLが電力切断されるかの何れかのために失われる。いくつかの指定された非動作電力状態では、ファブリックコントローラ等の周辺回路又は知的財産(intellectual property、IP)ブロック全体が電力切断される。APICタイマ230は、システム電力状態コントローラ182によって指示される非動作電力状態への遷移及び非動作電力状態からの遷移の間に、調整されたタイマ値でバックアップされ、追跡され、復元されることが可能である。これらの遷移において、システム電力状態コントローラ182は、APICタイマ230からのタイマ値をオンチップSRAM 204等のメモリに記憶し、指定された非動作電力状態に関連付けられた時間を測定するためにシャドータイマ184を開始し、指定された非動作電力状態に続く調整されたタイマ値でAPICタイマ320を復元する。動作電力状態は、DF PLL236の周波数がREFCLK186以上であり、DF PLL236のクロック信号エッジがREFCLKのクロックエッジと同期している状態を含む。そのような状態は、ローカルAPICタイマ230のタイマ値の保存及び復元におけるエラーが低いので、「低エラー」状態と称され得る。また、他の電力状態は、DF PLL236の周波数がREFCLK186より低い動作電力状態及びアイドル電力状態を含む。これらの状態のうちいくつかにおけるDF PLL236周波数は、タイマ精度のための十分な粒度を提供するが、これらの電力状態は、不明なサイズの潜在的に高い累積エラーが、これらの状態からタイマ値を保存及び復元する場合に生じ得ることから、本明細書では「高エラー」電力状態と称される。そのようなエラーは、DF PLL236のより遅いクロック信号及びREFCLK186のクロック信号エッジとのその非同期関係によるものである。重要なことに、このようなエラーは増分的であるため、時間とともに増大し、最終的にはタイマの特定の用途に応じて予測不可能な動作上の問題を引き起こす可能性がある。非動作電力状態が頻繁に使用されるほど、そのような増分エラーが大きくなる。この実施形態では、図示されたローカルAPICタイマ230及びシャドータイマ184は、増分エラーを緩和するためのプロセスとともに使用される。
【0030】
I/Oハブ176、並びに、メモリコントローラ、グラフィカル処理ユニット(graphical processing unit、GPU)及びディープラーニング処理ユニット(deep-learning processing unit、DLP)等の他の周辺回路240は、クロスドメイン同期回路232を含むローカルAPICタイマ230ーと同様に構成されたタイマを含み得る。本明細書のタイマ追跡及び調整プロセスは、タイマの電力又はクロック信号が失われる非動作電力状態を有する回路の一部である任意の好適なタイマとともに使用され得る。
【0031】
図3は、いくつかの実施形態による、非動作電力状態に遷移するためのプロセスのフロー
図300を示している。このプロセスは、上記のAPU100及びAPU200、又は、タイマを有する周辺回路を含む別の好適な集積回路とともに使用するのに好適であり、システム電力状態コントローラ182及びファブリックコントローラ220等のような、問題のIPブロック用のローカル電力状態コントローラの制御下で実行される。このプロセスは、ブロック302においてシステム電力状態コントローラによって開始され、通常、APU200内の回路又は知的財産(IP)ブロックについてアイドル状態又は非動作電力状態に入ることを可能にする条件を検出することに応じて、非動作電力状態への遷移を開始する。概して、データファブリック125等の関連するIPブロック全体は、非動作電力状態に置かれる。しかしながら、いくつかの実施形態では、「回路」は、IPブロックの一部のみを指し得る。
【0032】
ブロック304に示されるように、タイマ保存及び復元シーケンスを必要とする各IPブロックについて、プロセスはブロック306、308、310、312、314を実行する。関係する特定のIPブロックに応じて、状態デートの保存及びバッファの消去等の様々な他のステップ(図示せず)が含まれる。
【0033】
ブロック306において、プロセスは、IPブロックのPLLがすでに低エラー状態にあるかどうかを判定し、低エラー状態では、PLLは、REFCLK周波数又は別の好適な周波数で動作しており、REFCLK186との同期を低エラーで実行することができる。例えば、特定のIPブロックが、REFCLK186のクロック周波数に対して低減されたクロック周波数を有するライトアイドル状態等の低電力状態にある場合、ブロック310において、そのような低減された周波数は高エラー状態とみなされる。低エラー状態の場合、プロセスは、ブロック310に進む。高エラー状態の場合、プロセスは、ブロック308に進み、そこで、回路PLL周波数を調整することによって、IPブロックのPLLを低エラー状態にする。ブロック308から、プロセスは、ブロック310に進む。
【0034】
ブロック310において、プロセスは、システム電力状態コントローラ182において遷移中の回路からタイマ値を受信し、タイマ値をメモリに記憶する。いくつかの実施形態では、SRAMメモリ204(
図2)等のオンチップメモリが使用されるか、又は、システム電力状態コントローラ182内のローカルメモリも使用することができる。
【0035】
次に、ブロック312において、プロセスは、指定された非動作電力状態に関連付けられた時間を測定するために、REFCLK信号上で動作するシャドータイマ184を開始する。ブロック312において、プロセスは、非動作電力状態に遷移されているIPブロックの中で必要とされる最も早いウェイクアップ時間のためのウェイクアップタイマを開始する。このウェイクアップ時間は、ウェイクアップ待ち時間を考慮して調整される。次に、ブロック314において、プロセスは、回路が遷移されているIPブロックを、回路のPLL若しくは調整可能なクロックがゲーティングされるか又は電力切断される非動作電力状態に入らせる。
【0036】
図3のプロセスは、非動作電力状態に入り、バックアップ及び復元されるように構成されたタイマを有する各IPブロックに対して使用される。概して、プロセスが使用するのに好適なタイマは、非動作電力状態に移行されているIPブロック内の全てのAPICタイマ又は他の同様のタイマを含む。サイドバンド接続(
図2)によって図示されるように、タイマバックアッププロセスは、タイマ値の保存及び復元の両方において予測可能な待ち時間を達成するために、SMNを介してではなく、各IPブロックに対する専用サイドバンドシグナリングを介して行われることが好ましい。
【0037】
図4は、いくつかの実施形態による、非動作電力状態から遷移するためのプロセスのフロー
図400を示している。このプロセスは、APU200及び
図3の遷移プロセスを用いるか、又は、より正確なバックアップ及び復元プロセスから利益を得ることができるローカルタイマとともに調整可能なクロックを使用する、他のシステム設計とともに使用するのに好適である。
【0038】
ブロック402において、プロセスは、少なくとも1つのタイマ値が保存され、シャドータイマ184によってシャドーされたIPブロックの回路に対する非動作電力状態からの終了を開始する。ブロック404に示すように、抜け出しプロセスは、通常、シャドータイマ184上のタイマウェイクアップイベントで開始し、これが電力状態変更及びクロック復元をトリガする。しかしながら、低電力状態から抜け出したことを必要とする条件を検出するシステム電力状態コントローラ182等の他のトリガイベントも、電力状態変更及びクロック復元をトリガし得る。
【0039】
ブロック404におけるトリガに応じて、ブロック406において、システム電力状態コントローラ182は、メモリから復元されているタイマのタイマ値を取り出す。システム電力状態コントローラ182は、図示されたプロセスと並行して、復元されているIPブロック内の他の電力状態遷移回路を開始し得る。例えば、非動作電力状態から抜け出した特定の回路に依存して、他の回路が電力投入され、初期化され、キュー及びレジスタの内容等の状態データがロードされる。
【0040】
ブロック408において、プロセスは、回路のPLL又は復元される第1の回路のための他の調整可能なクロックを、クロックがREFCLK信号と正確に同期され得る低エラー状態にする。次に、ブロック410において、シャドータイマによって追跡された時間を示す経過時間が電力状態コントローラから読み取られる。
【0041】
ブロック412において、プロセスは、クロスドメイン同期回路を使用して第1の回路を電力状態コントローラと同期させることを含む。ブロック412は、いくつかの実施形態では、ブロック410と同時に又は順不同に行われ得る。好ましくは、第1の回路をシステム電力状態コントローラ182と同期させることは、クロスドメイン同期回路232を介してシステム電力状態コントローラ182にタイマ読み取り信号を送信することと、クロスドメイン同期回路232を介してシステム電力状態コントローラ182から確定応答信号を受信することと、を含む。
【0042】
ブロック414において、プロセスは、クロスドメイン同期回路の同期時間、タイマ値を受信する待ち時間に関連する第1のエラー値、及び、タイマ値を復元する待ち時間に関連する第2のエラー値を含むいくつかの要因を使用して計算された経過時間に基づいて、調整されたタイマ値を計算する。第1及び第2のエラー値は、好ましくは、推定され、組み合わされて、調整されたタイマ値を計算する際に第1の回路で用いられる構成値である単一の調整値を形成する。このような設計により、各IPブロックは、それ自身の調整されたタイマ値を計算することができる。この実施形態では、調整されたタイマ値は、取り出されたタイマ値、経過時間及び上記で説明した他の調整に基づいて、IPブロックにおいて計算されるが、調整されたタイマ値が計算される特定の位置が変わり得る。いくつかの実施形態では、調整されたタイマ値は、システム電力状態コントローラ182において計算される。
【0043】
ブロック416において、調整されたタイマ値がタイマにロードされ、非動作電力状態中のシャドータイミングの期間を含む値にタイマを復元するために、タイマが初期化される。好ましくは、このステップは、タイマをロードすることに関連する遅延が予測可能であるように、ブロック412における同期の直後に行われる。
【0044】
ブロック418において、プロセスは、回路が非動作電力状態を離れて、調整可能なクロックが基準クロックよりも低い周波数を有する動作電力状態に入るかどうかを判定する。もしそうであれば、プロセスはブロック420に進み、PLL又は調整可能なクロックを、回路が高エラー状態で駆動される所望のより低い周波数に調整する。例えば、回路が非動作電力状態から離れて、REFCLKよりも低いクロック周波数を有するライトアイドル状態又は低電力動作電力状態に入る場合、ブロック408~420は、調整可能なクロックをターゲットのより低い周波数よりも高い周波数に調整し、調整されたタイマ値を受信し、次いで、調整可能なクロックをより低い周波数に調整する。この技術は、タイマシャドーイングプロセスの精度及び正確度を増加させる。次に、プロセスはブロック422で終了する。ブロック418において回路が高エラー状態に移行していない場合、例えば、非動作電力状態から抜け出して、PLLが低エラー状態の周波数にある動作電力状態に入る場合に、プロセスはブロック418からブロック42241に進む。
【0045】
図5は、いくつかの実施形態による、非動作電力状態のためのタイマ値のバックアップ及び復元に関与する信号を含むタイミングダイアグラム(タイミング図)500を示している。ダイアグラム500は、「CPU Wake」信号、「Shadow TimerWake」信号、「TimerSet」信号、「TimerRead」信号、「TimerAck」信号、「APICTimer[n]」信号、「ApicSnapshot[n]」信号、「WakeTime」信号、「Shadow Timer」値、「ElapsedTime」信号、「DRAM値[n]」信号、及び、「Voltage Rail」供給電圧を示す。ダイアグラム500に図示される非動作電力状態は、APU200等のホストシステムがACPI「PC6」(パッケージC6)アイドル状態等の電力状態にある場合に入る。先行技術のシステムでは、PC6からの抜け出しがAPICタイマによってトリガされるので、PC6アイドル状態では、APICタイマを電力切断することができない。本明細書の技術を使用して、改善された抜け出し待ち時間は、選択されたIPブロックをPC6中に非動作電力状態に置き、システムがPC6状態を終了するための適切な時間にそれを抜け出すことによって、より多くの電力節約を可能にする。
【0046】
ブロック502において、タイマを含む1つ以上のIPブロックが非動作電力状態に入り得ると判定すると、システム電力状態コントローラ182は、ブロック504においてDRAM値[n]として示されるメモリ位置に記憶される値「FC」を有するApicSnapshot[n]信号によって示されるように、「n」個のAPICタイマの各々のスナップショットタイマ値をメモリに記憶させる。また、システム電力状態コントローラ182は、電力投入待ち時間を考慮するために、全てのAPICタイマの最も早いウェイクアップ時間からプログラム可能なウェイクアップ時間オフセットを減算する。WakeTime信号上で「EA」とラベル付けされたこのウェイクアップ時間値は、シャドータイマ184のウェイクアップ時間を提供する。また、この時点で、ブロック502に示すように、TimerSet信号はシャドータイマ184を開始する。
【0047】
次に、Voltage RailがON状態からOFF状態に変更され、関係するIPブロックに対する電圧供給がオフにされる。(関係する各IPブロックが非動作電力状態に入るためには追加のシグナリングが必要であるが、このようなシグナリングは、タイマバックアッププロセスに焦点を当てるためにここでは図示されていない。)この時点で、IPブロックは、シャドータイマ184が動作している間、IPブロックの信号に関連付けられた図の陰影領域によって示されるように、非動作電力状態にある。
【0048】
ブロック506において、シャドータイマ184の値は、シャドータイマ信号上の「EA」とラベル付けされたクロックサイクル上に示されるようにウェイクアップ設定に達する。それに応じて、電圧供給Voltage Railは、OFF状態からON状態に変更され、非動作電力状態において電力切断されたIPブロックを電力投入し、それらのPLLを復元する。
【0049】
次に、ブロック508で、APICタイマスナップショットがメモリから復元される。初期化プロセスにおいて好適なポイントに到達すると、各IPブロックは、クロスドメイン同期回路232を介してTimerRead信号をアサートする。IPブロックのタイマが動作していない間に経過した時間を測定するために、経過時間値がシャドータイマによって提供される。ブロック510に示されるように、システム電力状態コントローラ182は、標識「F4」によって図示される経過時間をカウンタ234へのElapsedTime信号接続にラッチし、クロスドメイン同期回路232を介してTimerAck信号をアサートして、ElapsedTime信号が有効であることを示す。
【0050】
次に、ブロック512において、TimerAck信号のエッジで、各APICタイマが、調整されたタイマ値で初期化される。次に、ブロック514に示すように、最も早いウェイクアップ時間設定を有するAPICタイマが、そのウェイクアップタイマ値に達し、CPU Wake信号をトリガする。この例では、PC6アイドル電力状態等のCPU低電力状態からの抜け出しを開始するために、CPU Wake信号が、SMU180に進む。しかしながら、他のタイプのイベントは、他の実施形態では、IPブロックのタイマウェイクアップによって開始される。
【0051】
この特定のシグナリング及びタイミング構成は、例として示されているが、多くの他のシグナリング及びタイミング構成が、本明細書で説明されるタイマバックアップ及び復元能力並びにプロセスを実装するために用いられ得る。
【0052】
図2のAPU200又はシステム電力状態コントローラ182及びデータファブリック125等の任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であり得る。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクは、集積回路を製造するために、様々な半導体製造ステップで使用され得る。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望される際、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0053】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な変更が当業者には明らかである。例えば、APICタイマが説明されているが、様々なタイプのタイマが様々な実施形態においてバックアップされ、復元される。
図1に示されるIPブロックの何れも、本明細書で説明されるように、ローカルタイマがバックアップ及び復元される電力状態をサポートすることができる。したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。