(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-11
(45)【発行日】2024-10-22
(54)【発明の名称】マルチクロック制御
(51)【国際特許分類】
G06F 1/08 20060101AFI20241015BHJP
G06F 9/30 20180101ALI20241015BHJP
G06F 15/78 20060101ALI20241015BHJP
【FI】
G06F1/08 510
G06F9/30 330B
G06F15/78 517
(21)【出願番号】P 2023502894
(86)(22)【出願日】2020-12-22
(86)【国際出願番号】 EP2020087564
(87)【国際公開番号】W WO2022012771
(87)【国際公開日】2022-01-20
【審査請求日】2023-03-10
(32)【優先日】2020-07-17
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】518371892
【氏名又は名称】グラフコアー リミテッド
【氏名又は名称原語表記】Graphcore Limited
【住所又は居所原語表記】11-19 Wine Street,Bristol,BS1 2PH,United Kingdom
(74)【代理人】
【識別番号】100169904
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】サイモン ダグラス チェインバーズ
(72)【発明者】
【氏名】スティーブン フィリックス
(72)【発明者】
【氏名】イアン マルコム キング
【審査官】征矢 崇
(56)【参考文献】
【文献】米国特許第06194940(US,B1)
【文献】国際公開第2008/114414(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F1/04-1/08
G06F9/30
G06F15/78
(57)【特許請求の範囲】
【請求項1】
処理ユニットのクロック信号の周波数を
管理制御ユニットモジュールによって制御する方法であって、
アプリケーションを実行するための処理ユニットクロック信号を提供するための第1のクロックジェネレータと、前記アプリケーションを実行するために、前記第1のクロックジェネレータによって提供される処理ユニットクロック信号の周波数よりも低い周波数を有する処理ユニットクロック信号を提供するための第2のクロックジェネレータと、を選択的に切り替えることと、
メモリ内において、それぞれが、前記第1のクロックジェネレータの最大周波数と前記第2のクロックジェネレータの最小周波数とを含む複数の設定にアクセスすることと、
前記クロック信号の周波数を増加させる要求を示す、検出された少なくとも1つの条件に応答して、現在の設定から、より高い設定に変更することと、
前記クロック信号の周波数を減少させる要求を示す、検出された少なくとも1つの条件に応答して、前記より高い設定から、より低い設定に変更することと、を含み、
前記より高い設定は、前記現在の設定よりも高い前記第1のクロックジェネレータの最大周波数と、前記現在の設定よりも高い前記第2のクロックジェネレータの最小周波数と、を有し、
前記より高い設定は、前記より低い設定よりも高い前記第1のクロックジェネレータの最大周波数と、前記より低い設定よりも高い前記第2のクロックジェネレータの最小周波数と、を有
し、
前記複数の設定の隣接した設定は周波数のオーバラップを有している、
方法。
【請求項2】
前記設定の各々について、前記第2のクロックジェネレータによって提供されるクロック信号の周波数は、対応する設定の前記第2のクロックジェネレータの前記最小周波数に固定される、請求項1に記載の方法。
【請求項3】
前記クロック信号の周波数を増加させる要求を示す、検出された少なくとも1つの条件は、既定の時間量を超えて前記処理ユニットクロック信号を提供するために、前記第1のクロックジェネレータが選択されているという決定を含む、請求項1又は2に記載の方法。
【請求項4】
前記クロック信号の周波数を増加させる要求を示す、検出された少なくとも1つの条件は、前記第1のクロックジェネレータの周波数が、前記現在の設定における前記第1のクロックジェネレータの前記最大周波数に設定されるという決定をさらに含む、請求項3に記載の方法。
【請求項5】
前記クロック信号の周波数を減少させる要求を示す、検出された少なくとも1つの条件は、事前に定義された時間量を超えて前記第2のクロックジェネレータが選択されているという決定を含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記クロック信号の周波数を減少させる要求を示す、検出された少なくとも1つの条件は、前記第1のクロックジェネレータの周波数が前記第2のクロックジェネレータの周波数以下に設定されているという決定を含む、請求項1~4のいずれか一項に記載の方法。
【請求項7】
前記現在の設定は、前記より低い設定よりも高い前記第1のクロックジェネレータの最大周波数と、前記より低い設定よりも高い前記第2のクロックジェネレータの最小周波数とを有する、請求項6に記載の方法。
【請求項8】
前記より低い設定と前記現在の設定とは同じである、請求項1~6のいずれか一項に記載の方法。
【請求項9】
比較器において、前記処理ユニットによって引き込まれる電流を測定して、前記処理ユニットが電力バジェットを超過しているかどうかを判断することと、
前記比較器からの出力信号を使用して、前記第1のクロックジェネレータ及び前記第2のクロックジェネレータの選択を制御することと、
コントローラ装置において前記出力信号を受信することと、
前記コントローラ装置において、前記比較器からの前記出力信号を使用して、前記クロック信号の周波数を増加させる要求を示す少なくとも1つの条件を検出す
ることと、
前記クロック信号の周波数を減少させる要求を示す少なくとも1つの条件を検出す
ることと、を実行することと、
を含む、請求項1~8のいずれか一項に記載の方法。
【請求項10】
検出された過電流事象に応答して、前記設定のうち最低の設定に変更することを含み、前記設定のうち前記最低の設定は、前記複数の設定のいずれよりも低い最小及び最大周波数を有する、請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記電力バジェットを超過しているかどうかを判断するための前記比較器は、第1の比較器であり、前記過電流事象を検出することは、第2の比較器によって実行され、前記第1の比較器と前記第2の比較器とは、異なり、前記第2の比較器は、前記第1の比較器よりも高い閾値を有する、請求項9に従属する場合の請求項10に記載の方法。
【請求項12】
前記設定のうち前記最低の設定について、前記第2のクロックジェネレータの最小周波数と、前記第1のクロックジェネレータの最大周波数とは、同じ周波数であり、
前記設定のうち前記最低の設定に変更す
ることは、
前記処理ユニットクロック信号を提供するために前記第2のクロックジェネレータを選択することと、
その後、前記第1のクロックジェネレータによって提供される前記クロック信号の周波数を同じ周波数に設定することと、
その後、前記処理ユニットクロック信号を提供するために前記第1のクロックジェネレータを選択することと、
その後、前記第2のクロックジェネレータによって提供される前記クロック信号の周波数を同じ周波数に設定することと、
を含む、請求項10又は11に記載の方法。
【請求項13】
前記第2のクロックジェネレータの最小周波数と、前記第1のクロックジェネレータの最大周波数との間のギャップは、前記設定のうち前記より高い設定について、前記現在の設定よりも大きく、
前記第2のクロックジェネレータの最小周波数と、前記第1のクロックジェネレータの最大周波数との間のギャップは、前記より高い設定について、前記より低い設定よりも大きい、請求項1~12のいずれか一項に記載の方法。
【請求項14】
前記切り替えることは、
前記アプリケーションを実行するための処理ユニットクロック信号を提供するために前記第1のクロックジェネレータを選択することと、
前記アプリケーションが、その実行に割り当てられた電力バジェットを超過していることを示す閾値事象を検出することと、
前記アプリケーションを実行するための前記処理ユニットクロック信号を提供するために前記第2のクロックジェネレータを選択することと、
前記処理ユニットクロック信号が前記第2のクロックジェネレータによって提供されている間、前記第1のクロックジェネレータによって生成される前記クロック信号の周波数を低減することと、
前記第2のクロックジェネレータを選択してから既定の時間後、前記処理ユニットクロック信号を提供するために前記第1のクロックジェネレータを再選択することと、
を含む、請求項1~13のいずれか一項に記載の方法。
【請求項15】
前記切り替えることは、
サイクルの第1の部分中にアプリケーションを実行するための処理ユニットクロック信号を提供するための第1のクロックジェネレータと、
前記サイクルの第2の部分中に前記アプリケーションを実行するための前記処理ユニットクロック信号を提供するための第2のクロックジェネレータと、
を循環して選択することと、
前記サイクルの前記第1の部分の持続時間と、前記サイクルの前記第2の部分の持続時間との間の割合を増加させることにより、前記処理ユニットの平均クロック周波数を増加させることと、
前記サイクルの前記第1の部分の前記持続時間と、前記サイクルの前記第2の部分の前記持続時間との間の前記割合を減少させることにより、前記処理ユニットの平均クロック周波数を減少させることと、
を含む、請求項1~13のいずれか一項に記載の方法。
【請求項16】
前記より高い設定から、前記設定のうちより低い設定に変更す
ることは、
前記処理ユニットクロック信号を提供するために前記第2のクロックジェネレータを選択することと、
その後、前記第1のクロックジェネレータによって提供される前記クロック信号の周波数を、前記より低い設定によって定義された前記第1のクロックジェネレータの最大周波数よりも低い周波数に設定することと、
その後、前記処理ユニットクロック信号を提供するために前記第1のクロックジェネレータを選択することと、
その後、前記第2のクロックジェネレータによって提供される前記クロック信号の周波数を、前記より低い設定によって定義された前記第2のクロックジェネレータの最小周波数に設定することと、
その後、前記処理ユニットクロック信号を提供するために前記第2のクロックジェネレータを選択することと、
を含む、請求項1~15のいずれか一項に記載の方法。
【請求項17】
前記第1のクロックジェネレータの最大周波数よりも低い周波数は、前記より低い設定によって定義された前記第2のクロックジェネレータの最小周波数である、請求項16に記載の方法。
【請求項18】
その後、前記第1のクロックジェネレータによって提供されるクロック信号の周波数を、前記より低い設定によって定義された前記第1のクロックジェネレータの最大周波数に設定することを含む、請求項16又は17に記載の方法。
【請求項19】
前記処理ユニットは、複数のプロセッサを含み、前記方法は、前記処理ユニットのクロックツリーのワイヤに沿って前記複数のプロセッサの各々にプロセッサクロック信号を分配することを含む、請求項1~18のいずれか一項に記載の方法。
【請求項20】
前記ワイヤは、0.2マイクロメートルより大きい厚さを有する銅ワイヤである、請求項19に記載の方法。
【請求項21】
アプリケーションを実行するための処理ユニットクロック信号を提供するための第1のクロックジェネレータと、
前記アプリケーションを実行するための前記処理ユニットクロック信号を提供するための第2のクロックジェネレータであって、前記第2のクロックジェネレータによって提供されるクロック信号の周波数は、前記第1のクロックジェネレータによって提供される前記クロック信号の周波数よりも低い、第2のクロックジェネレータと、
前記処理ユニットクロック信号を提供するための前記第1のクロックジェネレータと、前記処理ユニットクロック信号を提供するための前記第2のクロックジェネレータとを選択的に切り替えるように構成されたスイッチング回路と、
複数の設定を格納するように構成された少なくとも1つのメモリであって、各設定は、
前記第1のクロックジェネレータの最大周波数と、前記第2のクロックジェネレータの最小周波数と、を含む、少なくとも1つのメモリと、
少なくとも1つのプロセッサであって、
前記クロック信号の周波数を増加させる要求を示す、検出された少なくとも1つの条件に応答して、前記第1のクロックジェネレータ及び前記第2のクロックジェネレータの周波数を修正して、前記設定のうち現在の設定から、より高い設定に変更することと、
前記クロック信号の前記周波数を減少させる要求を示す、検出された少なくとも1つの条件に応答して、前記第1のクロックジェネレータ及び前記第2のクロックジェネレータの周波数を修正して、前記より高い設定から、より低い設定に変更することと、を行うように構成され、
前記より高い設定は、前記現在の設定よりも高い前記第1のクロックジェネレータの最大周波数と、前記現在の設定よりも高い前記第2のクロックジェネレータの最小周波数と、を有し、
前記より高い設定は、前記より低い設定よりも高い前記第1のクロックジェネレータの最大周波数と、前記より低い設定よりも高い前記第2のクロックジェネレータの最小周波数と、を有する、
少なくとも1つのプロセッサと、
を含
み、
前記複数の設定の隣接した設定は周波数のオーバラップを有している、
システム。
【請求項22】
システムの少なくとも1つのプロセッサによる実行のためのコンピュータプログラムであって、前記システムは、
アプリケーションを実行するための処理ユニットクロック信号を提供するための第1のクロックジェネレータと、
前記アプリケーションを実行するための前記処理ユニットクロック信号を提供するための第2のクロックジェネレータであって、前記第2のクロックジェネレータによって提供されるクロック信号の周波数は、前記第1のクロックジェネレータによって提供されるクロック信号の周波数よりも低い、第2のクロックジェネレータと、
前記処理ユニットクロック信号を提供するための前記第1のクロックジェネレータと、前記処理ユニットクロック信号を提供するための前記第2のクロックジェネレータとを選択的に切り替えるように構成されたスイッチング回路と、
を含み、
前記コンピュータプログラムは、前記少なくとも1つのプロセッサによって実行されると、
メモリ内において、それぞれが前記第1のクロックジェネレータの最大周波数と前記第2のクロックジェネレータの最小周波数とを含む複数の設定にアクセスすることと、
前記クロック信号の前記周波数を増加させる要求を示す、検出された少なくとも1つの条件に応答して、前記第1のクロックジェネレータ及び前記第2のクロックジェネレータの周波数を修正して、前記設定のうち現在の設定から、より高い設定に変更することと、
前記クロック信号の前記周波数を減少させる要求を示す、検出された少なくとも1つの条件に応答して、前記第1のクロックジェネレータ及び前記第2のクロックジェネレータの前記周波数を修正して、前記より高い設定から、より低い設定に変更することと、を含む方法を実行させるように構成され、
前記より高い設定は、前記現在の設定よりも高い前記第1のクロックジェネレータの最大周波数と、前記現在の設定ものよりも高い前記第2のクロックジェネレータの最小周波数とを有し、
前記より高い設定は、前記より低い設定よりも高い前記第1のクロックジェネレータの最大周波数と、前記より低い設定よりも高い前記第2のクロックジェネレータの最小周波数と、を有
し、
前記複数の設定の隣接した設定は周波数のオーバラップを有している、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理ユニットにクロック信号を提供するための2つのクロックジェネレータを制御する方法及び装置に関する。
【背景技術】
【0002】
処理ユニット上でアプリケーションを実行する際、そのアプリケーションを実行するときの処理ユニットの性能に影響を及ぼす多くの異なる変数が存在する。これらの変数は、処理ユニットが作動している電圧、処理ユニットによって引き込まれる電流、処理ユニットの温度及び処理ユニットクロック信号によって制御されるクロック周波数を含む。これらの要因が相互依存するようになる多くの状況が存在する。これにより、処理ユニットクロック信号の最適な周波数を選択するうえでの難易度が非常に高くなる。
【0003】
処理ユニットクロック周波数を選択する場合、潜在的に対立する2つの考慮事項が存在する。一方では、「電力の浪費」をなくすという一般的な要望がある。クロックが高速で作動するほど、処理ユニット上で実行しているアプリケーションによって消費される電力が多くなる。他方では、「ホット」(すなわち高い電力バジェット(power budget))で作動する能力を有するように構築されている処理ユニットが一層増えている。処理ユニットのクロックが高速で作動するほど、特定のアプリケーションの実行及びその出力の伝達が効率的になる。これは、特に、人工知能/機械学習アプリケーションにおいて要求の高い作業負荷を処理するためにアクセラレータとしての役割を果たす処理ユニットの場合に当てはまる。
【0004】
最適なクロック周波数の選択を試みるうえでの難易度を上げる要因の1つは、処理ユニット上で実行している任意の所定のアプリケーションの電力要件がその実行全体にわたって異なり得ることである。例えば、アプリケーションの演算集約的なフェーズに入ると、クロックサイクルごとに切り替えられる処理ユニットのスイッチング素子の数が増加する。処理ユニットにおけるそのような切り替え量の増加は、処理ユニットの動作における故障を防ぐために処理ユニットによって引き込まれる必要がある電力量の増加につながる。
【0005】
アプリケーションの実行全体にわたって処理ユニットの電力要件が異なるため、ある時間中、処理ユニットによって引き込まれる電力が処理ユニットの電力バジェットを超過し得る危険性が存在する。これらの状況では、電力バジェットを超過しないようにするために、クロック周波数を低くすることが望ましい。他方では、処理ユニットが、それほど演算集約的ではないコードをより低い電力使用量で実行する場合、アプリケーションをより迅速に実行できるようにクロック周波数を増加させることができる。
【0006】
処理ユニットに供給されるクロック信号を修正することができる方法の1つは、複数のクロックジェネレータを提供し、それらの間で切り替えることである。例えば、アプリケーションが演算集約的なコードを実行しているとき、電力バジェットを超過しないようにするために、低周波数クロックジェネレータからのクロック信号を処理ユニットに供給することができる。他方では、アプリケーションがそれほど演算集約的ではないコードを実行しているとき、アプリケーションを実行する速度を増加させるために、高周波数クロックジェネレータからのクロック信号を処理ユニットに供給することができる。
【発明の概要】
【発明が解決しようとする課題】
【0007】
いくつかの事例では、論じられるようにクロックジェネレータ間で切り替えを行う際、処理ユニットの適切な周波数範囲をカバーするために、切り替えが起こる2つのクロックジェネレータ間の周波数のギャップが極めて大きくなり得る。超低速クロック信号と超高速クロックとの間で切り替えを行うとき、電圧低下及び過渡電流が生じ得る。これらの影響を低減するため、高速クロックと低速クロックとの間のギャップのサイズを特定の最大サイズに制約することが提案されている。しかし、一方では、処理ユニットに提供されるクロック信号の動的周波数範囲が低減されるという問題がある。
【課題を解決するための手段】
【0008】
本出願の実施形態によれば、処理ユニットのクロック信号の周波数を制御する方法であって、アプリケーションを実行するための処理ユニットクロック信号を提供するための第1のクロックジェネレータと、アプリケーションを実行するために、第1のクロックジェネレータによって提供される処理ユニットクロック信号の周波数よりも低い周波数を有する処理ユニットクロック信号を提供するための第2のクロックジェネレータと、を選択的に切り替えることと、メモリ内において、それぞれが、第1のクロックジェネレータの最大周波数と第2のクロックジェネレータの最小周波数とを含む複数の設定にアクセスすることと、クロック信号の周波数を増加させる要求を示す、検出された少なくとも1つの条件に応答して、設定のうち現在の設定から、より高い設定に変更することと、クロック信号の周波数を減少させる要求を示す、検出された少なくとも1つの条件に応答して、より高い設定から、より低い設定に変更することと、を含む方法が提供される。この方法において、より高い設定は、現在の設定よりも高い第1のクロックジェネレータの最大周波数と、現在の設定よりも高い第2のクロックジェネレータの最小周波数と、を有する。また、より高い設定は、より低い設定よりも高い第1のクロックジェネレータの最大周波数と、より低い周波数の設定よりも高い第2のクロックジェネレータの最小周波数と、を有する。
【0009】
従って、2つのクロックが提供されるシステムでは、クロックは、異なる設定間で調整され、各設定は、クロックのうちのより低速のものの最小周波数及びクロックのうちのより高速のものの最大周波数を有する。そうすることにより、より大きい過渡現象につながることになるクロック間のギャップの増加の制約を受けることなく、クロックによって以前に提供された範囲外であり得る新しい周波数で処理ユニットをクロック制御することが可能になる。
【0010】
いくつかの実施形態では、設定の各々について、第2のクロックジェネレータによって提供されるクロック信号の周波数は、対応する設定の第2のクロックジェネレータの最小周波数に固定される。
【0011】
いくつかの実施形態では、クロック信号の周波数を増加させる要求を示す、検出された少なくとも1つの条件は、既定の時間量を超えて処理ユニットクロック信号を提供するために、第1のクロックジェネレータが選択されているという決定を含む。
【0012】
いくつかの実施形態では、クロック信号の周波数を増加させる要求を示す、検出された少なくとも1つの条件は、第1のクロックジェネレータの周波数が、現在の設定における第1のクロックジェネレータの最大周波数に設定されるという決定をさらに含む。
【0013】
いくつかの実施形態では、クロック信号の周波数を減少させる要求を示す、検出された少なくとも1つの条件は、事前に定義された時間量を超えて第2のクロックジェネレータが選択されているという決定を含む。
【0014】
いくつかの実施形態では、クロック信号の周波数を減少させる要求を示す、検出された少なくとも1つの条件は、第1のクロックジェネレータの周波数が第2のクロックジェネレータの周波数以下に設定されているという決定を含む。
【0015】
いくつかの実施形態では、現在の設定は、より低い設定よりも高い第1のクロックジェネレータの最大周波数と、より低い設定よりも高い第2のクロックジェネレータの最小周波数とを有する。
【0016】
いくつかの実施形態では、より低い設定と現在の設定とは同じである。
【0017】
いくつかの実施形態では、方法は、比較器において、処理ユニットによって引き込まれる電流を測定して、処理ユニットが電力バジェットを超過しているかどうかを判断することと、比較器からの出力信号を使用して、第1のクロックジェネレータ及び第2のクロックジェネレータの選択を制御することと、コントローラ装置において出力信号を受信することと、コントローラ装置において、比較器からの出力信号を使用して、クロック信号の周波数を増加させる要求を示す少なくとも1つの条件を検出するステップと、クロック信号の周波数を減少させる要求を示す少なくとも1つの条件を検出するステップと、を実行することと、を含む。
【0018】
いくつかの実施形態では、方法は、検出された過電流事象に応答して、設定のうち最低の設定に変更することを含み、最低の設定は、複数の設定のいずれよりも低い最小及び最大周波数の値を有する。
【0019】
いくつかの実施形態では、電力バジェットを超過しているかどうかを判断するための比較器は、第1の比較器であり、過電流事象を検出することは、第2の比較器によって実行され、第1の比較器と第2の比較器とは、異なり、第2の比較器は、第1の比較器よりも高い閾値を有する。
【0020】
いくつかの実施形態では、設定のうち最低の設定について、第2のクロックジェネレータの最小周波数と、第1のクロックジェネレータの最大周波数とは、同じ周波数であり、設定のうち最低の設定に変更するステップは、処理ユニットクロック信号を提供するために第2のクロックジェネレータを選択することと、その後、第1のクロックジェネレータによって提供されるクロック信号の周波数を同じ周波数に設定することと、その後、処理ユニットクロック信号を提供するために第1のクロックジェネレータを選択することと、その後、第2のクロックジェネレータによって提供されるクロック信号の周波数を同じ周波数に設定することと、を含む。
【0021】
いくつかの実施形態では、第2のクロックジェネレータの最小周波数と、第1のクロックジェネレータの最大周波数との間のギャップは、設定のうちより高い設定について、現在の設定よりも大きく、第2のクロックジェネレータの最小周波数と、第1のクロックジェネレータの最大周波数との間のギャップは、設定のうちのより高いものについて、設定のうちのより低いものよりも大きい。
【0022】
いくつかの実施形態では、切り替えることは、アプリケーションを実行するための処理ユニットクロック信号を提供するために第1のクロックジェネレータを選択することと、アプリケーションが、その実行に割り当てられた電力バジェットを超過していることを示す閾値事象を検出することと、アプリケーションを実行するための処理ユニットクロック信号を提供するために第2のクロックジェネレータを選択することと、処理ユニットクロック信号が第2のクロックジェネレータによって提供されている間、第1のクロックジェネレータによって生成されるクロック信号の周波数を低減することと、第2のクロックジェネレータを選択してから既定の時間後、処理ユニットクロック信号を提供するために第1のクロックジェネレータを再選択することとを含む。
【0023】
いくつかの実施形態では、切り替えることは、サイクルの第1の部分中にアプリケーションを実行するための処理ユニットクロック信号を提供するための第1のクロックジェネレータと、サイクルの第2の部分中にアプリケーションを実行するための処理ユニットクロック信号を提供するための第2のクロックジェネレータとを循環して選択することと、サイクルの第1の部分の持続時間と、サイクルの第2の部分の持続時間との間の割合を増加させることにより、処理ユニットの平均クロック周波数を増加させることと、サイクルの第1の部分の持続時間と、サイクルの第2の部分の持続時間との間の割合を減少させることにより、処理ユニットの平均クロック周波数を減少させることとを含む。
【0024】
いくつかの実施形態では、より高い設定から、より低い設定に変更するステップは、処理ユニットクロック信号を提供するために第2のクロックジェネレータを選択することと、その後、第1のクロックジェネレータによって提供されるクロック信号の周波数を、より低い設定によって定義された第1のクロックジェネレータの最大周波数よりも低い周波数に設定することと、その後、処理ユニットクロック信号を提供するために第1のクロックジェネレータを選択することと、その後、第2のクロックジェネレータによって提供されるクロック信号の周波数を、より低い設定によって定義された第2のクロックジェネレータの最小周波数に設定することと、その後、処理ユニットクロック信号を提供するために第2のクロックジェネレータを選択することとを含む。
【0025】
いくつかの実施形態では、第1のクロックジェネレータの最大周波数よりも低い周波数は、より低い設定によって定義された第2のクロックジェネレータの最小周波数である。
【0026】
いくつかの実施形態では、その後、第1のクロックジェネレータによって提供されるクロック信号の周波数を、より低い設定によって定義された第1のクロックジェネレータの最大周波数に設定することを含む。
【0027】
いくつかの実施形態では、処理ユニットは、複数のプロセッサを含み、方法は、処理ユニットのクロックツリーのワイヤに沿って複数のプロセッサの各々にプロセッサクロック信号を分配することを含む。
【0028】
いくつかの実施形態では、ワイヤは、0.2マイクロメートルより大きい厚さを有する銅ワイヤである。
【0029】
第2の態様によれば、アプリケーションを実行するための処理ユニットクロック信号を提供するための第1のクロックジェネレータと、アプリケーションを実行するための処理ユニットクロック信号を提供するための第2のクロックジェネレータであって、第2のクロックジェネレータによって提供されるクロック信号の周波数は、第1のクロックジェネレータによって提供されるクロック信号の周波数よりも低い、第2のクロックジェネレータと、処理ユニットクロック信号を提供するための第1のクロックジェネレータと、処理ユニットクロック信号を提供するための第2のクロックジェネレータとの選択的に切り替えるように構成されたスイッチング回路と、複数の設定を格納するように構成された少なくとも1つのメモリであって、各設定は、第1のクロックジェネレータの最大周波数と、第2のクロックジェネレータの最小周波数と、を含む、少なくとも1つのメモリと、少なくとも1つのプロセッサであって、クロック信号の周波数を増加させる要求を示す、検出された少なくとも1つの条件に応答して、第1のクロックジェネレータ及び第2のクロックジェネレータの周波数を修正して、設定のうち現在の設定から、より高い設定に変更することと、クロック信号の周波数を減少させる要求を示す、検出された少なくとも1つの条件に応答して、第1のクロックジェネレータ及び第2のクロックジェネレータの周波数を修正して、より高い設定から、より低い設定に変更することと、を行うように構成され、より高い設定は、現在の設定よりも高い第1のクロックジェネレータの最大周波数と、現在の設定よりも高い第2のクロックジェネレータの最小周波数と、を有し、より高い設定は、より低い設定よりも高い前記第1のクロックジェネレータの最大周波数と、より低い設定よりも高い第2のクロックジェネレータの最小周波数と、を有するシステムが提供される。
【0030】
第3の態様によれば、システムの少なくとも1つのプロセッサによる実行のためのコンピュータプログラムであって、システムは、アプリケーションを実行するための処理ユニットクロック信号を提供するための第1のクロックジェネレータと、アプリケーションを実行するための処理ユニットクロック信号を提供するための第2のクロックジェネレータであって、第2のクロックジェネレータによって提供されるクロック信号の周波数は、第1のクロックジェネレータによって提供されるクロック信号の周波数よりも低い、第2のクロックジェネレータと、処理ユニットクロック信号を提供するための第1のクロックジェネレータと、処理ユニットクロック信号を提供するための第2のクロックジェネレータとを選択的に切り替えるように構成されたスイッチング回路とを含み、コンピュータプログラムは、少なくとも1つのプロセッサによって実行されると、メモリ内において、それぞれが第1のクロックジェネレータの最大周波数と第2のクロックジェネレータの最小周波数とを含む複数の設定にアクセスすることと、クロック信号の周波数を増加させる要求を示す、検出された少なくとも1つの条件に応答して、第1のクロックジェネレータ及び第2のクロックジェネレータの周波数を修正して、設定のうち現在の設定から、より高い設定に変更することと、クロック信号の周波数を減少させる要求を示す、検出された少なくとも1つの条件に応答して、第1のクロックジェネレータ及び第2のクロックジェネレータの周波数を修正して、より高い設定から、より低い設定に変更することと、を含む方法を実行させるように構成され、より高い設定は、現在の設定よりも高い第1のクロックジェネレータの最大周波数と、現在の設定ものよりも高い第2のクロックジェネレータの最小周波数とを有し、より高い設定は、より低い設定よりも高い第1のクロックジェネレータの最大周波数と、より低い設定よりも高い第2のクロックジェネレータの最小周波数と、を有するコンピュータプログラムが提供される。
【0031】
第4の態様によれば、第3の態様によるコンピュータプログラムを格納する非一時的なコンピュータ可読媒体が提供される。
【0032】
本発明をよりよく理解するため及び本発明をどのように実施できるかを示すため、ここで、例として添付の図面を参照する。
【図面の簡単な説明】
【0033】
【
図1】クロック制御システムを備える処理ユニットの概略ブロック図である。
【
図2】クロックジェネレータモジュールの概略ブロック図である。
【
図3】クロックの制御装置の概略ブロック図である。
【
図4】クロックディザリング方法が採用される場合、処理ユニットに対して提供されるクロック信号の周波数が経時的にどのように変化し得るかの例を示す。
【
図5】提案に従い、処理ユニットに対して提供されるクロック信号の周波数が経時的にどのように変化し得るかの例を示す。
【
図6】提案に従い、処理ユニットに対して提供されるクロック信号の周波数が経時的にどのように変化し得るかを示すさらなる例を示す。
【
図7】ギア間でシフトするためのマルチクロック制御スキームが提供される場合、処理ユニットに対して提供されるクロック信号の周波数が経時的にどのように変化し得るかの例を示す。
【
図8】ギア間でシフトするためのマルチクロック制御スキームが提供される場合、処理ユニットに対して提供されるクロック信号の周波数が経時的にどのように変化し得るかを示すさらなる例を示す。
【
図9】システムにおいて2つのクロックジェネレータに対して使用することができるギアセットの例を示す。
【
図10A】クロックジェネレータの周波数のギアをシフトダウンするプロセスを示す。
【
図10B】クロックジェネレータの周波数のギアをシフトアップするプロセスを示す。
【
図11】ギアボックススキームが使用される場合、クロック信号の周波数が経時的にどのように変化するかを示すタイムラインの例を示す。
【
図12】電力管理コントローラの例をより詳細に示す。
【
図13】ギアボックス概念とディザリング概念とが組み合わされる場合、プロセッサに供給されるクロック信号の周波数が経時的にどのように変化するかを示す例を示す。
【
図14】複数のタイルを含むプロセッサチップの概略ブロック図である。
【
図15】バルク同期並列(BSP)演算モデルの概略図である。
【
図17】ワイヤに沿ったクロックツリー構造に配列されたタイルへのクロック信号の分配を示す概略である。
【発明を実施するための形態】
【0034】
以下では、添付の図を参照して、第1の発明の実施形態及び第2の発明の実施形態の両方を説明する。これらの2つの発明は、互いに独立して又は組み合わせて機能し得る。最初に、
図1及び2を参照して、第1及び/又は第2の発明を実装することができるシステムについて説明する。
【0035】
図1は、処理ユニット2を含むコンピュータシステムの概略ブロック図である。コンピュータシステムは、例えば、複数のプロセッサ(タイル)3を含む単一チップ処理ユニットであり得る。処理ユニット2は、ベース周波数で参照クロックref_clkを処理ユニット2に提供するクロック4によってクロック制御される。処理ユニット2は、管理制御ユニット(MCU)モジュール6に接続され、MCU 6は、オン又はオフチップで実装することができる。MCU 6は、処理ユニット2の複数のサービスを管理し、これに関連してクロック信号の周波数を制御し、それにより処理ユニット2上のタイル3の動作が統制される。電力管理集積回路(PMIC)7は、V
DDとラベル付けされた供給レールを通して処理ユニット2に電力を提供し、双方向シリアルバス30及び割り込みピン(物理ワイヤ)32を介してMCU 6に接続される。処理ユニット2は、ホスト8によって処理ユニット2に割り当てられた作業負荷を処理するために使用されるアクセラレータであり得る。ホスト8は、インタフェース10を介して処理ユニット2に作業負荷データを供給することができる。単一の処理ユニット2又は1つのカード上及びラックの複数のカード上で接続された処理ユニット2の複数のインスタンスが存在する。処理ユニット2は、人工知能又は機械学習の分野において作業負荷を取り扱うように設計された知能プロセッサユニット(IPU)として知られているタイプのものであり得る。IPUの説明については、参照により組み込まれる米国特許出願公開第15/886065号明細書に提供されている。
【0036】
クロック4は、1つの処理ユニット2又は複数の処理ユニット2に役立ち得る。クロックは、カードコネクタを介してオンチップクロックジェネレータモジュール12に参照クロックref_clkを供給する。オンチップクロックジェネレータモジュール12は、IPUクロック信号Φを生成し、IPUクロック信号Φは、処理ユニット2上のタイル3に供給される。
図1では、図を必要以上に複雑にすることを避けるため、各タイル3への供給を行う物理クロックラインは示されていない。処理ユニット2の他の部分(例えば、タイル間通信を制御する交換部5)は、クロック信号Φ又は参照クロック(若しくは他の何らかのクロック)によってクロック制御され得ることに留意されたい。
【0037】
カードコネクタ又は同様のものを介して供給しているクロック4の代替として、オンボードクロックソースが存在し得る。すなわち、クロック4は、処理ユニット2内に実装することができる。クロックソース4からのクロック信号は、処理ユニットを動作するためのクロック信号Φの導出元である参照クロックref_clkである。チップ論理のいくつかの態様に対するシステムクロックもref_clkから導出することができる。
【0038】
本発明の実施形態によれば、クロックジェネレータモジュール12は、本明細書で説明されるように、ref_clk信号を受信し、IPUクロック信号Φを生成する。
【0039】
オンチップクロックジェネレータモジュール12は、PMIC 7の割り込みピン32に接続されたIPUクロック選択パッド22から入力を受信する。オンチップクロックジェネレータモジュール12は、JTAGインタフェース38を介してMCU 6から周波数制御信号も受信する。
【0040】
クロックジェネレータモジュール12は、
図2に示される2つの位相ロックループ(PLL)14、16を含む。クロックジェネレータモジュール12は、様々な回路を含むものとして説明される一方、これらの回路(PLL、ORゲート、MUX、レジスタ)は、必ずしも特定のブロックに位置する必要はなく、チップにおいて分散できることが理解されるであろう。従って、クロックコントローラ12は、IPUクロックΦの生成を制御するために本発明の実施形態がどのように動作するかを説明する便利な方法として説明される。クロック信号ジェネレータ14、16は、PLL 14、16と呼ばれるが、これらのコンポーネントは、より一般的には、いかなるタイプのクロック信号ジェネレータでもあり得ることにも留意されたい。
【0041】
PLL 14、16は、参照クロックref_clkを受信する。第1のPLL 14は、ref_clkからいわゆる高速クロックを生成し、第2のPLL 16は、ref_clkからいわゆる低速クロックを生成する。グリッチフリーマルチプレクサ18は、PLL 14、16から出力を受信し、高速クロックと低速クロックとの間で切り替えを行い、IPUクロックΦを提供することができる。マルチプレクサ18は、MUX制御信号34によって制御される。本明細書では、MUX制御信号34は、低速PLL 16の出力を選択するようにマルチプレクサ18を制御するために高にアサートされ、逆の条件ではアサートされない(低にアサートされる)ことが説明されている。当然のことながら、逆のプロトコルの使用が可能であり、MUX制御信号34は、低速PLL 16の出力を選択するために低にアサートされ、逆の条件では高にアサートされる。
【0042】
MUX制御信号34をアサートすることができ、従ってそれにより高速PLL 14又は低速PLL 16の選択を行うことができるメカニズムが2つ存在する。第1のメカニズムによれば、PMIC 7からの警告(割り込みピン32上でアサートされ、MCU 6に送られる)は、入力パッド22にも供給され、入力パッド22は、ORゲート36の一方の入力をフィードする。これにより、電流が電流閾値を超えたことが検出された場合、即時の「抑制」が提供される。
図2では、入力パッド22において受信されるこの信号は、IPUCKSELとして示されている。第2のメカニズムは、マルチプレクサ18が低速PLL 16からアプリケーションを実行するように制御されるように(入力パッド22のIPUCKSEL信号がアサートされない場合でも)、MCU 6がレジスタ23に「1」を書き込むことを伴う。
【0043】
PLL 14、16が動作する周波数は、ワイヤ14a、16a上でMCU 6から受信される信号に基づいて設定することができる。ワイヤ14a、16aは、PLL 14、16を調整するための2つの異なる適応信号を運ぶための2つのワイヤを含み得る。これらの信号は、示されるように、MCU 6により、JTAGインタフェース38を介してクロックジェネレータモジュール12に提供される。
図2では、参照数字14aは、高速PLL 14向けの適応信号を示し、参照数字16aは、低速PLL 16向けの適応信号を示す。高速PLL及び低速PLLは、同じ又は異なるタイプのものであり得る。
【0044】
図3を参照すると、
図3は、MCU 6をより詳細に示す。MCU 6は、本明細書で説明されるようにその機能を実行するための処理回路310及び少なくとも1つのメモリ320を含む。好ましくは、処理回路310は、説明されるその機能を実行するためにメモリ320に格納された命令を実行するように構成されたプロセッサ(CPUなど)である。加えて又は代替として、処理回路310は、説明される機能を実行するように構成されたフィールドプログラマブルゲートアレイ(FPGA)又は特定用途向け集積回路(ASIC)を含み得る。
【0045】
ここで、第1の発明の実施形態について説明する。
【0046】
第1の発明の実施形態では、高速PLL 14と低速PLL 16との間のサイクルが繰り返される。換言すれば、高速PLL 14と低速PLL 16との間の切り替えが繰り返される。この結果、処理ユニット2は、高速PLL 14のクロック周波数と、低速PLL 16のクロック周波数との間の値を有する平均クロック周波数でクロック制御される。平均クロック周波数は、低速PLL 16の信号が処理ユニット2に提供されるサイクルの時間の割合と比較した、高速PLL 14の信号が処理ユニット2に提供されるサイクルの時間の割合に依存する。高速PLL 14対低速PLL 16の時間の割合は、クロック生成回路12において受信される制御信号に依存する。従って、平均クロック周波数は、制御信号における高速PLL 14に費やす時間の割合が上がることに応答して増加する。同様に、平均クロック周波数は、制御信号における高速PLL 14対低速PLL 16に費やす時間の割合が下がることに応答して減少する。
【0047】
クロック生成回路12において受信される各制御信号は、処理ユニット2が設定電力バジェットを超過しているか否かを示す。電力バジェットは、処理ユニット2によって実行される特定のアプリケーション又は作業負荷に対して設定される。電力バジェットは、通常、ホスト8によって設定され、MCU 6に(処理ユニット2を介して又は直接)伝達されるが、他の可能性も存在する。例えば、MCU 6は、そのチップに対して実行された以前の同様のアプリケーションを認識し、そのような過去のデータの格納に基づいて電力バジェットを設定できる場合がある。いかなる場合にも、MCU 6は、電力バジェットを理解している。カード上に複数のチップが存在する場合、MCU 6は、各チップについて、そのチップに対する電力バジェットがどのようなものであり得るかを決定する。機械学習及び人工知能の分野でアプリケーションを実行する際、処理要件に対して課される要求は、電力バジェットに達するべきであるが、超えてはならないことを含意する。すなわち、その目的は、電力バジェットの制約内において、チップをできる限り「ホット」で作動することである。MCU 6は、電力バジェットに基づいて、PMIC 7によって管理される電流閾値を決定する。MCU 6は、電力バジェットの表示を提供するために、バス30上でPMIC 7と通信する。これにより、PMIC 7は、適用される電流閾値を決定することができる。いくつかの実施形態では、PMIC 7は、処理ユニット2の供給レールに一定の供給電圧VDD(例えば、0.8ボルト)を供給し、その結果、電力バジェットを供給電圧VDDで除することにより、電流閾値を導出することができる。他の状況では、PMIC 7によって使用される電流閾値を決定するために必要ないくつかの複雑な計算が存在する。PMIC 7は、電流閾値を計算するための適切な回路を含む。
【0048】
PMIC 7は、処理ユニット2に引き込まれる電流が電流閾値を超えた際にその検出が可能な電流計11又は他の種類のセンサを含む。PMIC 7は、電流を測定するために処理ユニット2に適切に接続されるが、これらの接続は、
図1に示されていない。電流は、アプリケーション又は作業負荷を実行するために処理ユニット2に引き込まれている電流である。
【0049】
PMIC 7は、比較器15及びフィルタリング回路13も含む。比較器15は、電流閾値の表示を受信するように構成される。比較器15は、閾値を超えた際にそれを決定するために、処理ユニット2に供給される電流の表示と電流閾値を比較するように構成される。比較器15に入力される、処理ユニット2に供給される電流の表示は、フィルタリング回路13から受信される。フィルタリング回路13は、電流計11から電流の測定値を受信するように構成される。フィルタリング回路13は、電流の移動平均を提供するために電流測定値をフィルタリングする。フィルタリング回路13は、60マイクロ秒の時定数に電流をフィルタリングすることができる。
【0050】
比較器15自体は、特定の遅延と関連付けられる。遅延のサイズは、比較器15のコンデンサの充電/放電に必要な時間に依存する。遅延は、比較器の受信電流表示が電流閾値を上回る場合、比較器15が、一定の時間を超えて受信電流表示が閾値を上回るまで、そのように示す出力信号をアサートしないようなものである。同様に、比較器の受信電流表示が電流閾値を下回る場合、比較器15は、一定の時間を超えて受信電流表示が閾値を下回るまで、そのように示す出力信号をアサートしない。電流が閾値を下回って下降した後に比較器がトリガされるまでの時間量は、比較器15のコンデンサの放電に必要な時間に依存する。電流が閾値を上回って上昇した後に比較器がトリガされるまでの時間量は、比較器15のコンデンサの充電に必要な時間に依存する。
【0051】
比較器15は、電流の表示を受信し、これを電流閾値と比較する。電流閾値を超える場合、比較器15は、ワイヤ32上で信号(IPUCKSEL)を発信させる。この信号は、クロック入力選択パッド22において受信され、そこからクロックジェネレータモジュール12に提供される。
図2を参照すると、IPUCKSEL信号は、マルチプレクサ18において受信され、低速PLL 16を選択するために使用され、その結果、低速PLL 16の出力は、処理ユニット2に対するクロック信号として提供される。従って、PMIC 7は、過電流事象が検出された事例では低速PLL 16を選択させる。
【0052】
他方では、処理ユニット2に提供される電流の表示が電流閾値を下回ると比較器15が決定した場合、比較器15の出力は、ワイヤ32上でIPUCLSEL信号がアサートされないようなものである。結果として、マルチプレクサ18は、IPUCLSEL信号を受信せず、従って高速PLL 14が選択される。高速PLL 14の出力は、処理ユニット2へのクロック信号として処理ユニット2に提供される。従って、PMIC 7は、過電流事象が検出されない事例では高速PLL 14を選択させる。
【0053】
フィルタリング回路13によって提供されるフィルタリング及び比較器15の遅延は、電流計11によって測定される電流の変化に応答して、比較器の出力を高と低との間で繰り返し切り替えるために必要な時間量を増加し、従って高速PLL 14と低速PLL 16との間の切り替え率を適切に低減する。
【0054】
高速PLL 14及び低速PLL 16の周波数は、処理ユニット2の動作中、過電流事象が起こる閾値クロック周波数が高速PLL 14の周波数と低速PLL 16の周波数との間に位置するように設定される。従って、高速PLL 14及び低速PLL 16は、アプリケーションのダイナミックレンジをカバーすることができる。例えば、高速PLLの出力周波数は、1.6GHzであり得、低速PLLの出力周波数は、800MHzであり得る。しかし、処理ユニット2上で実行しているアプリケーションの実行の特定のフェーズ中、それを超えると過電流事象が起こる閾値周波数は、例えば、1.2GHzであり得る。処理ユニット2がこの周波数を上回ってクロック制御される場合、処理ユニット2は、設定電力バジェットを超過することになる。処理ユニット2がこの周波数を下回ってクロック制御される場合、処理ユニット2は、設定電力バジェットを超過しない。
【0055】
閾値周波数は、処理ユニット2の動作全体を通して一定の量ではなく、処理ユニット2によって実行されるアプリケーションのフェーズに応じて変化し得ることが理解されるであろう。具体的には、アプリケーションが演算集約的なフェーズである場合、閾値周波数は、低くなる。アプリケーションがそれほど演算集約的ではないフェーズである場合、閾値周波数は、高くなる。
【0056】
クロック信号Φは、低速PLL 16の出力と高速PLL 14の出力との間でサイクルし、その結果、平均クロック周波数は、閾値周波数に近づく。結果として得られる平均クロック周波数は、閾値周波数をわずかに下回るものであり、処理ユニット2によって消費される平均電力は、電力バジェットを少量下回るように維持される。
【0057】
高速PLL 14が最初に選択される事例を検討する。この事例では、クロック信号Φの周波数は、閾値周波数を上回るため、電流計11は、閾値電流を上回る電流の表示を出力する。比較器15は、電流の表示のフィルタリングされたバージョンから、閾値を超えていると決定し、それに応答して、ライン32上で低速PLL 16を選択させる信号を出力する。低速PLL 16が選択された時点で、クロック信号Φの周波数は、閾値周波数を下回るため、電流計11は、閾値電流を下回る電流の表示を出力する。比較器15は、電流の表示のフィルタリングされたバージョンから、閾値を超えていないと決定し、それに応答して、高速PLL 14が再び選択されるように、ライン32上で信号をデアサートする。この方法では、高速PLL 14と低速PLL 16との選択のディザリング(すなわちサイクリング)がある。
【0058】
マルチプレクサ18は、電力消費量が十分に長い時間にわたって平均化される場合、電力バジェットを超過する電力消費量を回避しながら、処理ユニット2に対する平均電流が閾値に近づくように、高速PLL 14出力と低速PLL 16出力との選択間でディザリングして良好な性能を提供する。
【0059】
処理ユニット2上でのアプリケーションの実行中に行うことができるディザリングプロセスの例は、
図4に示されている。グラフ400は、アプリケーションの実行時間全体にわたってクロック信号Φの周波数がどのように変化するかを示す。ライン420は、t=0を起点とするクロック信号Φの平均周波数を示す。この例では、電流閾値は、125アンペアに設定される。この電流閾値を上回ると、電力バジェットを超過することになる。
【0060】
図4のアプリケーションの例は、1msの活動時間区間を呈する。各時間区間内では、アプリケーションは、高い演算強度のフェーズ及び低い演算強度のフェーズを有する。高い演算強度のフェーズ及び低い演算強度のフェーズのパターンは、1msの時間区間ごとに繰り返される。このタイプのパターンは、同じ動作セットをサイクルで繰り返し実行することを伴うアプリケーションを実行する際に起こり得る。そのようなアプリケーションの一例は、ニューラルネットワークを訓練するためのアプリケーションであり、複数の訓練反復が実行され、各訓練反復は、異なるデータを使用して同じプロセスを繰り返すことを伴う。アプリケーションが同じ動作セットを繰り返し実行する際、繰り返しパターンは、アプリケーションの活動レベルに現れる。
図4に示される例では、活動パターンは、1msの時間区間を有する。活動パターンの時間区間の例は、時間区間430によって示されている。
図4は、時間区間430の一部として、高い演算強度のフェーズ440と、低い演算強度のフェーズ450とを示す。示されるように、高い演算強度の各フェーズ及び低い演算強度の各フェーズは、1msごとに繰り返される。
【0061】
図4の例では、アプリケーションの各時間区間は、高い演算強度の1つのフェーズと、低い演算強度の1つのフェーズとを含むが、他のアプリケーションでは、異なる活動パターンを呈することができ、各時間区間には、より多くの異なるフェーズがある。
【0062】
グラフ400に示されるように、初期のt=0では、クロック信号Φの周波数は、高速PLL 14の周波数に設定される。アプリケーションの開始前に、処理ユニット2を通る電流は、ゼロであり、比較器15によって測定される電流は、フィルタリングされた電流であり、比較器15は、関連付けられた遅延を有するため、高い強度のフェーズでアプリケーションを実行している場合でも、比較器15は、アプリケーションを動作してからある程度の時間が経つまで、電流が閾値を超えたことを検出しない。これは、
図4で反映されており、電流閾値を超えたことを示す信号を比較器15がアサートするまで、ある時間中、周波数は、高速PLL 14の周波数のままであることを示す。
【0063】
フィルタリングされた電流が閾値を超えたことを比較器15が検出した時点で、比較器15は、低速PLL 16を選択させる信号をアサートする。これは、
図4の周波数の第1の立ち下がりエッジに示されている。周波数が減少した時点で、フィルタリングされた電流が閾値を下回って下降したことを比較器15が検出し、それに応答して、低速PLL 16を選択する信号をデアサートし、その結果、高速PLL 14が再び選択され、クロック信号Φが処理ユニット2に提供される。特定の持続時間にわたって高速PLL 14が選択された後、比較器15は、フィルタリングされた電流が閾値を超えたことを再び検出し、それに応答して低速PLL 16に切り替えるための信号をアサートする。
【0064】
アプリケーションの活動のフェーズ440は、処理ユニット2が演算集約的なコードを実行する比較的高い活動フェーズである。これは、
図4に示されるアプリケーションの他のフェーズ450と比較して、高速クロックに費やす時間の比較的小さい割合によって明示されている。フェーズ440後、アプリケーションは、それほど演算集約的ではないフェーズであるフェーズ450に入る。示されるように、フェーズ450における高速クロックに費やす時間の割合は、フェーズ440における高速クロックに費やす時間の割合よりも大きい。従って、フェーズ450中に処理ユニット2が動作する平均クロック周波数は、フェーズ440中に処理ユニット2が動作する平均クロック周波数よりも高い。これにより、性能上の利点が提供され、これは、アプリケーションの低い強度のフェーズ中、アプリケーションの電力バジェットを超過することなく、処理ユニット2をより高速にクロック制御できるために望ましい。
【0065】
図4に示されるように、クロック信号Φの平均周波数420は、経時的に特定の値に向けて収束する。この例では、その値は、1190MHzである。実行しているアプリケーションに対して、この平均クロック周波数は、112.5アンペアの平均電流に対応する。この平均電流は、
図4の例において処理ユニット2に対して設定された125アンペアの電流閾値を下回る。従って、第1の発明は、処理ユニット2の性能と、処理ユニット2の電力バジェットの非超過との間の良好なトレードオフを達成する。
【0066】
いくつかの事例では、アプリケーションの活動レベルは、非常に短い時間スケールにわたって変化し得、その結果、高い活動レベルの時間区間の持続時間が非常に短い場合、高速PLL 14から低速PLL 16への切り替えを起こす必要がない。これは、比較器15の遅延によって可能になり、それにより、一定の時間を超えて閾値を上回る電流の変化がある場合にのみ、その出力が切り替わる。例えば、短い持続時間中、アプリケーションが非常に演算集約的なフェーズに入ると想定する。この変化に応答して、処理ユニット2に引き込まれる電流は、設定閾値を超え、その結果、一定の時間量が経過した後、フィルタリング回路13によって提供される電流のフィルタリングされたバージョンも閾値を超える。比較器15は、電流のフィルタリングされた表示を受信し、フィルタリングされた電流が、閾値を上回った状態が比較器15の設定された時定数以上には続かないことを示す場合、比較器15は、低速PLL 16を選択するための信号をアサートしない。従って、比較器15と関連付けられた遅延により、低速PLL 16への切り替えが起こることなく、アプリケーションは、短い持続時間中、演算集約的なフェーズに入ることができる。
【0067】
本発明は、電流比較器を使用して、閾値を超える電流が検出され次第、信号をアサートすることによって低速クロックを選択させると説明されている。しかし、他の実装形態も可能である。例えば、比較器15は、電流が閾値を下回ると決定され次第、高速クロックを選択させるための信号をアサートし、表示が閾値を上回って上昇した際に信号をデアサートすることができる。他の例では、比較器15以外の別のデバイス(例えば、別の入力電流モニタ又はサーミスタ)を使用して、電力バジェットを超過しているか否かを表示し、従って高速PLL 14と低速PLL 16との間の切り替えを制御することができる。他の例では、MCU 6のソフトウェア又はファームウェアにプログラムされた既定のスケジュールに従い、高速PLL 14と低速PLL 16との間のサイクルを制御するようにMCU 6をプログラムすることができる。
【0068】
ここで、第2の発明の実施形態について説明する。第2の発明の実施形態は、高速及び低速クロックジェネレータ(例えば、
図2に示される高速PLL 14及び低速PLL 16など)を有するシステムにおいて実装される。説明されるように、高速PLL 14及び低速PLL 16は、電力バジェットを超過しないようにしながら、処理ユニット2の性能を最大化するために使用することができる。これに対して説明してきた例は、2つのPLL 14、16の選択間でサイクルするためのディザリングメカニズムを使用するものである。しかし、2つのPLL 14、16を利用する他のスキームを実装することもできる。例えば、そのようなスキームでは、PLL 14、16の一方が処理ユニット2の大部分の通常の作業負荷処理動作に対するプロセッサクロックΦを提供するように割り当てられるように提供することができる。しかし、そのPLLが新しい周波数への調整を必要とする場合、システムは、他のPLLに切り替え、その間にメインPLLの調整を行う。調整が完了した時点で、システムは、メインPLLに戻す。そのようなスキームは、本明細書では「ステップ変更」スキームと呼ばれ、参照により組み込まれる米国特許出願公開第16/428797号明細書に詳細に説明されている。従って、第2の発明は、処理ユニットをクロック制御するために、高速クロックジェネレータと低速クロックジェネレータとの間で切り替えるいかなるシステムでも実装することができる。
【0069】
以下の説明では、第2の発明の実施形態は、
図1に示されるシステムにおいて実装されるものとして説明される。
【0070】
処理ユニット2をクロック制御するために2つのPLL 14、16を使用する際に起こり得る問題の1つは、高速クロック周波数と低速クロック周波数との間の周波数ギャップが大き過ぎる場合、低速クロックPLL 16から高速PLL 14に切り替えるうえで不必要に大きい電圧低下が起こる恐れがあることである。そのような電圧低下は、処理ユニット2全体にわたるインピーダンスの降下により生じる。処理ユニット2全体にわたるインピーダンスZは、以下の関係で周波数f及び切り替え静電容量C
Sに依存する。
【数1】
【0071】
数1から、高速PLL 14が選択された際のクロック信号Φの周波数の急増は、処理ユニット2全体にわたるインピーダンスの急落につながることを理解することができる。このインピーダンスの急落は、PMIC 7が反応する隙を与えずに、処理ユニット2全体にわたる電圧の低下をもたらす。電圧低下は、クロック信号Φの周波数が増加する瞬間にアプリケーションが高い活動フェーズに入る事例において特に激しい。アプリケーションが高い活動フェーズに入ると、処理ユニットの切り替え静電容量CSが増加する。式1から理解できるように、クロック周波数及び切り替え静電容量の両方の急増は、処理ユニット2のインピーダンスの大きい降下、従って大きい電圧低下につながる。
【0072】
この問題に対処するため、高速クロック周波数と低速クロック周波数との間の最大ギャップを実施することができる。これらの周波数間のギャップが制約される場合、2つの周波数間の切り替えから生じる電圧低下を、より管理し易いレベルに制限できる。しかし、この方法でギャップを制約すると、処理ユニット2を作動させる適切な周波数の選択を試みる際に問題が生じ得る。この問題は、
図5及び6に示されている。
【0073】
図5を参照すると、
図5は、処理ユニット2の周波数が経時的にどのように変化し得るかを示す例示的なグラフ500を示す。グラフ500は、示される時間区間中の処理ユニット2の閾値周波数(これを上回ると、過電流事象が起こる)を示す。論じられるように、閾値周波数を超えることなく(電力バジェットを超過しないようにするため)、閾値周波数近くで作動させることが望ましい(性能上の理由のため)。
図5に見られるように、高速クロック周波数及び低速クロック周波数は、両方とも閾値周波数をはるかに下回るレベルに設定され、処理ユニット2の性能は、準最適状態になっている。そのような状況は、処理ユニット2上で実行しているアプリケーションが低い活動フェーズに入った際に起こり得る。このフェーズ中の処理ユニット2の性能を改善するため、可能な解決策の1つは、
図5に示されるように、高速PLL 14の周波数をより高い新しい周波数に増加させるであろう。しかし、電圧低下を制限するために課される最大ギャップ制約は、性能を最適化するであろう高周波数レベルへの高速PLL 14の調整を妨げる。
【0074】
図6を参照すると、
図6は、処理ユニット2の周波数が経時的にどのように変化し得るかを示すさらなる例示的なグラフ600を示す。グラフ600は、示される時間区間中の処理ユニット2の閾値周波数を示す。論じられるように、性能上の理由で処理ユニット2を高速で作動させることが望ましいが、超えてはならない設定電力バジェットがある。グラフ600によって示されるように、高速クロック周波数及び低速クロック周波数は、両方とも閾値周波数をはるかに上回るレベルに設定され、これは、電力バジェットを超過することを意味する。これは、処理ユニット2上で実行しているアプリケーションが高い活動フェーズに入った際に起こり得る。処理ユニット2の性能を改善するため、
図6に示されるように、低速PLL 16の周波数をより低い新しい周波数に更新することができる。しかし、電圧低下を低減するために課される最大ギャップ制約は、閾値周波数を下回る低速クロックの低減を妨げる。従って、低速PLL 16の周波数を更新した後でも、処理ユニット2の電力消費量は、依然として電力バジェットを超過している。
【0075】
第2の発明の実施形態によれば、複数の周波数設定が定義され、これらの設定の各々は、高速PLL 14の最大周波数及び低速PLL 16の最小周波数を示し、それにより、2つの周波数間のギャップは、管理し易いレベルに維持される。設定の各々は、この説明では「ギア」と呼ばれる。システムは、必要に応じてギア間で切り替える。クロック信号Φの周波数を増加させるという決定に応答して、より高いギアであって、そのギアに対して定義された最大及び最小周波数は、以前に選択されたギアよりも高い、より高いギアが選択される。同様に、クロック信号Φの周波数を減少させるという決定に応答して、より低いギアであって、そのギアに対して定義された最大及び最小周波数は、以前のギアよりも高い、より低いギアが選択される。
【0076】
図1及び2を参照して上記で説明されるように、MCU 6は、高速PLL 14及び低速PLL 16の周波数を調整するために、JTAGインタフェース38を介してクロックジェネレータ回路12に制御信号を提供するように構成される。これらの制御信号は、ワイヤ14a、16a上で高速PLL 14及び低速PLL 16に提供されるように示されている。第2の発明の実施形態では、情報の受信に応答して、より高いギアに変更することをMCU 6が決定すると、MCU 6は、ワイヤ14a、16a上で信号を発信することにより、PLL 14、16の両方の周波数を新しいギアのレベルに調整する。新しいギアに変更する際、MCU 6は、高速PLL 14の周波数を、そのギアに対して定義された高速PLL 14の最大周波数に設定し、低速PLL 16の周波数を、新しいギアに対して定義された低速PLL 16の最小周波数に設定することができる。
【0077】
図7を参照すると、
図7は、MCU 6から受信された制御信号に応答して、高速クロック周波数及び低速クロック周波数を、より低いギアからより高いギアにどのように調整することができるかを示す。
図7に示されるように、初期の低速及び高速クロック周波数は、閾値周波数をはるかに下回っている。初期の低速及び高速クロック周波数は、より低いギアに対する最小低速クロック周波数及び最大高速クロック周波数にそれぞれ設定される。高速PLL 14及び低速PLL 16における制御信号の受信に続いて、それらのPLL 14、16の周波数は、示されるように更新される。これらの制御信号は、低速及び高速クロック周波数をより高いギアに対する最小低速クロック周波数及び最大高速クロック周波数にそれぞれ設定する。低速PLL 16は、その初期の周波数よりも高い周波数であるが、初期の高速クロック周波数の周波数よりも低い周波数を有するように更新される。高速PLL 14は、その初期の周波数よりも高い周波数を有するように更新される。
【0078】
図7に示されるように、高速PLL 14の更新周波数は、閾値周波数よりも高いものであり得る。この事例では、高速PLL 14の周波数は、閾値周波数を下回るまで漸進的に低減することができる。代わりに、高速PLLの周波数よりも低く、閾値周波数よりも低いが、低速PLLの周波数よりも高い、クロック信号Φの平均クロック周波数を提供するように、第1の発明に対して説明される高速PLL 14と低速PLL 16との間のディザリングを実行することができる。
【0079】
図8を参照すると、
図8は、MCU 6から受信された制御信号に応答して、高速クロック周波数及び低速クロック周波数をより高いギアからより低いギアにどのように調整することができるかを示す。
図8に示されるように、初期の低速及び高速クロックは、閾値周波数をはるかに下回っている。この例では、初期の低速及び高速クロック周波数は、より高いギアに対する最小低速クロック周波数及び最大高速クロック周波数にそれぞれ設定される。高速PLL 14及び低速PLL 16における制御信号の受信に続いて、それらのPLL 14、16の周波数は、示されるように更新される。これらの制御信号は、低速及び高速クロック周波数をより低いギアに対する最小低速クロック周波数及び最大高速クロック周波数にそれぞれ設定する。低速PLL 16は、その初期の周波数よりも低い周波数を有するように更新される。高速PLL 14は、その初期の周波数よりも低い周波数であるが、初期の低速クロック周波数の周波数よりも高い周波数を有するように更新される。
【0080】
図8に示されるように、更新された高速クロック周波数は、閾値周波数よりも高いものであり得る。この事例では、高速PLL 14の周波数は、閾値周波数を下回るまで漸進的に低減することができる。代わりに、閾値周波数よりも低いクロック信号Φの平均クロック周波数を提供するように、第1の発明に対して説明されるディザリングを実行することができる。
【0081】
より低いギアからより高いギアに移動するプロセス(より高いギアは、最大高速クロック周波数及び最小フロークロック周波数について、より低いギアより高い値を有する)は、本明細書では「ギアをシフトアップする」、「ギアを上げる」又は同様のものと呼ばれる。同様に、より高いギアからより低いギアに移動するプロセス(より高いギアは、最大高速クロック周波数及び最小フロークロック周波数について、より低いギアより高い値を有する)は、「ギアをシフトダウンする」、「ギアを下げる」又は同様のものと呼ばれる。ギアの上げ下げは、MCU 6による特定の条件の検出に応答して実行することができる。
【0082】
図7及び8に示されるように、隣接するギアは、オーバーラップしており、その結果、高速PLL 14及び低速PLL 16の周波数のギアを上げると、更新された低速PLL 16の周波数は、より低いギアにおける前の高速PLL 14の周波数よりも低くなる。同様に、高速PLL 14及び低速PLL 16の周波数のギアを下げると、更新された高速PLL 14の周波数は、より高いギアにおける前の低速PLL 16の周波数よりも高くなる。このオーバーラップにより、ギアによるアプリケーションのダイナミックレンジのフルカバーが可能になり、クロック信号Φのいかなる周波数(高速PLL 14によって達成することができる考えられる最大値より低い)も提供することができる。
【0083】
図7及び8に示されるように、各ギアに対する最大及び最小周波数を定義することにより、MCU 6によって初期の高速クロック周波数と低速クロック周波数との間の最大ギャップが実施される。
図10から理解されるように、ギアを変更するプロセス中、2つのPLL 14、16間の最大周波数ギャップを超えることができることに留意されたい。しかし、このギア変更プロセス中、低速PLL 16から高速PLL 14への切り替えは起こらず、従って大きい周波数ギャップと関連付けられる低下問題に遭遇しない。ギア変更プロセスが完了した時点で、PLL 14、16の新しい周波数値は、新しいギアに対して定義された最大値を超えない。
【0084】
いくつかの実施形態では、最大周波数と最小周波数との間のギャップは、一定であり得る(すなわち、各ギアに対して定義された周波数ギャップは、同じである)。他の実施形態では、ギャップは、ギアに応じて異なり得る。この事例では、より低いギアは、より高いギアより、最大の高速PLL 14の周波数と最小の低速PLL 16の周波数との間のギャップが小さい。低周波数では、プロセッサクロック周波数の変化は、インピーダンスの大きい変化(式1から理解できるように)、従って大きい電圧低下効果をもたらすため、これは、許容される。
【0085】
記述されるように、MCU 6は、ギアの各々を定義する設定を格納する。これらのギアの各々は、高速PLL 14の最大周波数及び低速PLL 16の最小周波数によって定義される。いくつかの実施形態では、特定のギアにある際、MCU 6は、高速PLL 14の周波数をそのギアに対して設定されたその最大周波数よりも低い周波数に設定することができる。他方では、低速PLL 16の周波数は、固定することができる(すなわち、MCU 6は、低速PLL 16の周波数をそのギアに対して定義された最小値より高く調整しない)。他の実施形態では、MCU 6は、あるギアにある際、高速PLL 14の周波数を固定しながら、低速PLL 16の周波数を変化させることができる。いくつかの実施形態では、両方のPLLの周波数は、特定のギアにある際、固定したままにすることができる。
【0086】
従って、ギアに対して定義された周波数は、「最大」及び「最小」周波数と呼ばれるが、いくつかの実施形態では、高速PLL 14及び低速PLL 16の周波数は、特定のギアにある際、これらの周波数から逸脱しない。換言すれば、「最大」及び「最小」周波数は、そのギアに対する唯一の周波数であり得る。これは、ギアにある際にディザリングスキームが適用される際に当てはまる。他の実施形態では、高速PLL 14の周波数は、ギアに対して定義された最大周波数を下回って低減することができる。これは、ギアにある際にステップ変更スキームが適用される際に当てはまる。
【0087】
図9を参照すると、
図9は、高速PLL 14及び低速PLL 16の周波数を調整する際にMCU 6によって適用することができる異なるギアの例を示す。図は、4つの異なるギアを示し、各ギアは、高速PLL 14の異なる最大周波数及び低速PLL 16の異なる最小周波数を有する。示されるように、複数のギアに対して、最小周波数と最大周波数との間のギャップは、最小及び最大周波数の大きさの増加と共に単調に増加する。
【0088】
ここで、異なる実施形態においてギアMCU 6がギアを変更することをどのように決定するか及び変更の更新をどのように実施できるかについて説明する。簡潔に要約すると、MCU 6は、事前に定義された持続時間を超えて高速PLL 14が選択されているという決定に応答して、ギアを1つシフトアップすることを決定する。MCU 6がギアを1つ又は複数シフトダウンすることを決定できる方法は2つある。一実施形態では、MCU 6は、事前に定義された時間量を超えて低速PLL 16が選択されていると決定することに応答して、ギアをシフトダウンすることを決定する。この技法は、ディザリングスキームを使用して第2の発明が実装される際に使用される。別の実施形態では、MCU 6は、高速PLL 14の周波数が低速PLL 16の周波数以下であると決定することに応答して、ギアを2つシフトダウンすることを決定する。この技法は、ステップ変更スキームを使用して第2の発明が実装される際に使用される。
【0089】
事前に定義された時間量を超えて高速PLL 14又は低速PLL 16が選択されているという決定は、MCU 6によって以下の方法で決定される。
図1に関して上記で説明されるように、比較器15は、電流計11によって測定された電流の表示を受信する。この表示は、フィルタリング回路13から受信される電流のフィルタリングされた測定値である。電流閾値を超えていると決定することに応答して、比較器15は、ワイヤ32上でクロックジェネレータ回路12及びMCU 6に信号を提供することを行わせる。その信号は、クロックジェネレータ回路12において受信されると、低速PLL 16を選択させる。信号がデアサートされると、高速PLL 14が再び選択される。
【0090】
MCU 6は、クロック選択を制御する同じ信号をワイヤ32上で受信するため、MCU 6は、いずれの時点で高速PLL 14を選択するか及びいずれの時点で低速PLL 16を選択するかを決定することができる。MCU 6は、この情報を使用して、いずれの時点で周波数のギアシフトが必要であるかを決定する。MCU 6は、既定の時間長を超えてPLL 14、16の1つが選択されている際、ギアシフトを実行すべきであると決定する。例えば、MCU 6は、既定の時間量(例えば、200マイクロ秒)を超えて高速PLL 14が選択されている際、PLL 14、16の周波数をシフトアップすべきであると決定することができる。同様に、MCU 6は、低速PLL 16の選択が既定の時間量(例えば、200マイクロ秒)以上には続かない際、PLL 14、16の周波数をシフトダウンすべきであると決定することができる。
【0091】
図10Aを参照すると、
図10Aは、事前に定義された時間量を超えて低速PLL 16が選択されていると決定することに応答して、ギアをシフトダウンするためのプロセスの例を示す。このメカニズムは、クロックが高速PLL 14と低速PLL 16との間でディザリングする際に適用することができる。
図10Aでは、高速PLL周波数は、破線で示されており、低速PLL周波数は、実線で示されている。初期には、MCU 6は、レジスタ23に書き込むことにより、低速PLL 16を選択する。
図10Aに示されるステップ(1)では、MCU 6は、高速PLL 14の周波数を低速PLL 16の新しい周波数に下方調整するための信号をワイヤ14a上で送信する。これに続いて、MCU 6は、レジスタ23をクリアすることにより、低速PLL 16の選択を解除し、その結果、高速PLL 14が選択される。次いで、
図10Aに示されるステップ(2)では、MCU 6は、低速PLL 16を低速PLL 16の新しい周波数に下方調整するための信号をワイヤ16a上で送信する。ステップ(2)に続いて、MCU 6は、低速PLL 16を選択するために再びレジスタ23に書き込む。次いで、ステップ(3)では、MCUは、高速PLL 14を高速PLL 14の新しい周波数に上方調整するための信号をワイヤ14a上で送信する。次いで、ギアを下方移動するプロセスが完了する。ギアを下方変更するためのこの技法により、高速クロック周波数と低速クロック周波数との間のギャップが最大値を超えることはなくなり、ギア移行プロセス中、最も低い周波数で2つのPLL 14、16の1つによってクロック信号Φが提供されるようになる。
【0092】
図10Aの例は、高速PLL 14の周波数が更新された低速PLL周波数まで低減されること(ステップ(1)で)を示すが、他の実施形態では、高速PLL 14の周波数は、異なる周波数まで低減することができ、その周波数は、更新された高速PLL 14の周波数よりも低いが、依然として、移行プロセス中に高速PLL 14の周波数と低速PLL 16の周波数との間のギャップを低減するものである。
【0093】
説明全体を通して、高速PLL 14は、「高速クロック」と呼ばれるが、
図10Aに示される移行プロセスの一部では、高速PLL 14が生成するクロック信号は、低速PLL 16によって生成される信号より低い周波数のものであることに留意されたい。従って、ギアをシフトダウンしない際にはそうであるとしても、高速PLL 14が常に低速PLL 16の信号より高い周波数の信号を出力する必要はない。
【0094】
図10Bを参照すると、
図10Bは、事前に定義された時間量を超えて高速PLL 14が選択されていると決定することに応答して、ギアをシフトアップするためのプロセスの例を示す。このメカニズムは、クロックが高速PLL 14と低速PLL 16との間でディザリングする場合と、高速PLL 14の周波数におけるステップ変更スキームが適用される場合との両方に適用することができる。
図10Bでは、高速PLL周波数は、破線で示されており、低速PLL周波数は、実線で示されている。初期には、MCU 6は、高速PLL 14を選択する。
図10Bに示されるステップ(1)では、MCU 6は、低速PLL 16を新しい低速周波数に調整するための信号をワイヤ16a上で送信する。次いで、MCU 6は、レジスタ23に書き込むことにより、低速PLL 16を選択する。次いで、ステップ(2)では、MCU 6は、高速PLL 14を新しい高速周波数に調整するための信号をワイヤ14a上で送信する。次いで、ギアを上方移動するプロセスが完了する。
【0095】
いくつかの事例では、ギアシフトが起こった後、ギアシフトを引き起こした条件は、取り除かれる。例えば、より高いギアに移動するギア変更が起こる際(より高いギアは、閾値周波数が更新された高速周波数と低速周波数との間に収まるようなものであり得る)は、既定の時間量(例えば、200マイクロ秒)を超えて高速PLL 14の出力が選択される。この事例では、クロック信号Φは、もはや高速PLL 14にとどまらず、システムは、高速PLL 14と低速PLL 16との間でディザリングするか、又はクロック信号Φの周波数を適切に管理できるようにステップ変更スキームに従って高速PLL 14の周波数を低減することができる。しかし、条件が取り除かれず、既定の時間量(例えば、200マイクロ秒)の別の例にわたって、クロック信号Φが高速PLL 14の出力にとどまる場合、MCU 6は、より高いギアへのさらなるギア変更を引き起こすための信号を発信することができる。MCU 6は、条件が取り除かれるまで又は最も高いギアに達する(例えば、高速PLL 14がその考えられる最高の周波数を出力する)までギア変更を続ける。
【0096】
上記では、
図10Aに関して、ディザリングスキームが使用される際にギアを下方移動するために使用されるプロセスについて説明してきた。ここで、
図11を参照すると、
図11は、ギアをシフトダウンするための代替のプロセスを示す。この例では、より低いギアへのシフトは、高速PLL 14の周波数が実質的に低速PLL 16の周波数以下に設定されることに応答して実行される。このメカニズムは、高速PLL 14が適切な周波数を提供するように段階的に調整される際に適用することができる。
図11では、高速PLL周波数は、破線で示されており、低速PLL周波数は、実線で示されている。
【0097】
図11に示される例では、各ギアシフトは、ギアを2つシフトダウンすることを伴う。しかし、他の実施形態では、各ギアシフトは、ギアを異なる数だけシフトダウンすることを伴い得る。
【0098】
初期には、PLL 14、16は、ギア5と呼ばれるギアに設定される。比較器15によって過電流事象が検出され次第、低速PLL 16が選択され、MCU 6は、高速PLL 14の周波数を25MHz下方調整する。次いで、高速PLL 14が再び選択される。過電流事象が持続する場合、高速PLL 14の周波数を25MHz低減するプロセスが再び実行される。
【0099】
過電流事象を取り除くことなく、このプロセスが何度も繰り返された後、高速PLL 14の周波数は、低速PLL 16の周波数まで低減し得ることが分かる。これは、
図11のポイント(1)でマーク付けされている。高速PLL 14の周波数が低速PLL 16の周波数と同じであると決定され次第、MCU 6は、より低いギアへのギア変更を実施する。これを達成するため、高速PLL 14が選択され、その間、低速PLL 16の周波数は、ギア3に対して定義された低速PLL 16の周波数まで低減される。次いで、低速PLL 16が選択され、その間、MCU 6は、高速PLL 14の周波数をギア3に対する最大の高速PLL 14の周波数まで増加する。次いで、高速PLL 14が選択される。
【0100】
ギア変更に続いて、過電流事象が再びトリガされ、高速PLL 14の周波数が再び段階的に低減される。
図11に示されるポイント(2)では、高速PLL 14の周波数を段階的に低減した後、高速PLL 14が選択される場合、過電流事象は、もはや起こらなくなる。その結果、高速PLL 14は、過電流事象をトリガすることなく選択されたままとなり得る。
【0101】
一定の時間量が経過した後、アプリケーション挙動は、より演算集約的なフェーズに移動し得る。これにより、
図11のポイント(3)に示されるように、高速PLL 14の周波数が再び段階的に低減される。高速PLL 14の周波数が再び低速PLL 16の周波数に等しくなった時点で、MCU 6は、示されるように、ギア1へのギア変更を実行することを決定する。高速PLL 14の周波数は、ギア1の最大周波数まで増加され、次いで高速PLL 14が選択される際に過電流事象が取り除かれるまで段階的に低下する。
【0102】
いくつかの実施形態では、その出力がギアのシフトアップ及びダウンを制御する比較器15に加えて、PMIC 7は、さらなる比較器(
図1では図示せず)を含み得る。
図12を参照すると、
図12は、第2の発明の実施形態によるPMIC 7の例を示す。PMIC 7は、電流計11、フィルタリング回路13及び比較器15を含み、それらは、
図1に示され、既に論じている。加えて、PMIC 7は、電流計11によって測定された電流の表示を受信するさらなる比較器17を含む。比較器17によって受信されるこの電流の表示は、比較器15によって受信されるようなフィルタリング回路13のフィルタリングされた出力と同じである。
【0103】
比較器17は、比較器15より高い閾値を有する。比較器は、比較器15よりわずかに高い時定数も有する。比較器17は、より大きい過電流事象に応答してトリガされる非常用比較器17であると考えることができる。
【0104】
比較器17がトリガされると、そのように示される信号がMCU 6に提供される。この信号は、バス30又は
図1に示されない異なる接続上で提供することができる。信号の受信に応答して、MCU 6は、高速及び低速PLL 14、16の周波数を低減して、MCU 6によって格納されている考えられるギアセットの最も低いギア状態にする。
【0105】
いくつかの実施形態では、比較器15、17に加えて又はその代替として、他のデバイスは、最も低いギアへのクロック周波数の低減をMCU 6に行わせる信号を提供することができる。そのような信号は、例えば、システムの異なるコンポーネント(処理ユニット2など)又は処理ユニット2と同じ集積回路の一部である他のコンポーネントのための入力電流モニタ(
図1では図示せず)によって提供することができる。これらの入力電流モニタの1つが閾値を上回る電流を検出した場合、考えられる最も低いギアへの高速PLL 14及び低速PLL 16の周波数の低減をMCU 6に行わせる信号をMCU 6に発信する。
【0106】
最も低いギアへのシフトを引き起こす信号は、処理ユニット2に取り付けられた又はその一部であるサーミスタ(
図1では図示せず)によって提供することができる。サーミスタは、処理ユニット2の温度があるレベルを上回って上昇しているかどうか(過熱条件)を判断する。そのような条件を検出することに応答して、サーミスタは、考えられる最も低いギアへの高速PLL 14及び低速PLL 16の周波数の低減をMCU 6に行わせる信号をMCU 6に発信する。
【0107】
いくつかの実施形態では、最も低いギアにおける最大の高速PLL 14の周波数と最小の低速PLL 16の周波数とは、同じであり得る。この事例では、最も低いギアにある際、高速PLL 14と低速PLL 16とは、両方とも同じ周波数(例えば、200MHz)で固定される。これにより、高速PLL 14が閾値を超える高い周波数及びリスクに設定され得るより低いギアを有する場合より高いレベルの安全性が提供される。最も低いギアに切り替えるためのプロセスは、
図10Aに示されるより低いギアに切り替えるためのプロセスと同様であるが、プロセスからステップ(3)が取り除かれる。具体的には、初期には低速PLL 16が選択され、次いで、MCU 6は、高速PLL 14の周波数を最も低いギアの周波数(例えば、200MHz)まで低減する。次いで、MCU 6は、高速PLL 14を選択させ、次いで低速PLL 16の周波数を高速PLL 14と同じ周波数(例えば、200MHz)まで低減する。次いで、この最も低いギアにある際、高速PLL 14と低速PLL 16とは、両方とも同じ周波数に設定されるため、高速PLL 14及び低速PLL 16のいずれでも選択することができる。
【0108】
上記では、第1及び第2の発明の説明を提供した。いくつかの実施形態では、第1の発明及び第2の発明は、共に組み合わせることができる。
図13を参照すると、
図13は、説明されるディザリング技法とギアボックス技法との組み合わせの使用例を示す。
【0109】
図13は、アプリケーションの挙動の変化と共に変化する閾値周波数(破線)、及び、クロック信号Φの周波数(実線)を示す。高速PLL 14の出力は、現在のギアに対する最大高速クロック周波数である。低速PLL 16の出力は、現在のギアに対する最小低速クロック周波数である。グラフ1300は、3つの異なる時間区間1310、1320、1330に分けて示されており、クロック周波数の変化によって示されるようなアプリケーションの挙動の変化に応答して、PLL 14、16がギア間でどのように切り替えられるかを示す。
【0110】
大部分の第1の時間区間1310中、クロック信号Φは、クロック信号Φの適切な平均周波数を生成するために、高速PLL 14の出力と低速PLL 16の出力との間で切り替わる。示されるように、一定の時間が経過した後、アプリケーションの挙動の変化に応答して、閾値周波数は、低速PLLの周波数のレベルを下回る低減レベルまで降下する。その結果、比較器15は、過電流事象を示すためにその信号をアサートし、それは、低速PLL 16にとどまることにより、取り除かれることはない。MCU 6は、既定の時間量を超えて低速PLL 16が選択されていることを検出し、それに応答して現在選択されているギアからより低いギアに変更することを決定する。MCU 6は、上記で説明されるギア変更プロセスを実行する。
【0111】
図13では、ギア変更プロセスが完了した時点で、クロック生成回路12は、クロック信号Φを提供する際、低速PLL 16の出力と高速PLL 14の出力との間で変化させる。これは、時間区間1320中に示されている。一定の時間が経過した後、閾値周波数は、選択されたギアにおける高速PLL 14の周波数を上回って増加する。その結果、比較器15が過電流事象を検出することはなく、高速PLL 14が選択されたままとなる。既定の時間量を超えて高速PLL 14が選択されていると決定することに応答して、MCU 6は、より高いギアにギアを上げることを決定する。MCU 6は、
図10Bに関して上記で説明されるように、ギアを上げる。時間区間1330中に選択されたこのより高いギアは、時間区間1310において選択されたギアと同じである。しかし、示されるように、大部分の時間区間1330中、閾値周波数は、低いため、高速PLL 14に費やす時間の割合と比較した、低速PLL 16に費やす時間の割合は、時間区間1310よりも時間区間1330中の方が大きい。
【0112】
上記で説明される電力管理技法は、マルチタイル処理ユニット2の電力を管理するために実施することができる。ここで、
図14~17を参照して、例示的なマルチタイル処理ユニット2についてより詳細に説明する。
【0113】
図14を参照すると、
図14は、例示的なマルチタイル処理ユニット2を示す。処理ユニット2は、複数のプロセッサタイル3のアレイ46と、タイル3間を接続する相互接続部44とを含む。処理ユニット2は、同じICパッケージにパッケージ化された複数のダイの1つとして単独で実装することができる。相互接続部44は、本明細書では、タイル3がデータを交換できるようにするためのものであるため、「交換ファブリック」44と呼ぶこともできる。各タイル3は、プロセッサ及びメモリのそれぞれのインスタンスを含む。例えば、例示として、処理ユニット2は、何百ものタイル3又はさらに千超のタイル3を含み得る。完全を期すため、本明細書で言及される「アレイ」は、必ずしも特定の次元数又は物理的なレイアウトのタイル3を含意するとは限らないことも留意されたい。
【0114】
実施形態では、各処理ユニット2は、1つ又は複数の外部のリンク48も含み、処理ユニット2を1つ又は複数の他の処理ユニット(例えば、同じ処理ユニット2の1つ又は複数の他のインスタンス)に接続できるようにする。これらの外部のリンク48は、処理ユニット2をホストプロセッサに接続するための1つ又は複数のプロセッサ-ホスト間リンク並びに/或いは同じICパッケージ若しくはカード上又は異なるカード上の処理ユニット2の1つ又は複数の他のインスタンスとまとめて接続するための1つ又は複数のプロセッサ間リンクの1つ又は複数を含み得る。例示的な一配列では、処理ユニット2は、処理ユニット2が処理する入力データという形態において、プロセッサ-ホスト間リンクの1つを介して、処理ユニットに接続されたホストプロセッサ(図示せず)から作業を受信する。処理ユニット2の複数のインスタンスは、プロセッサ間リンクにより、カードにまとめて接続することができる。従って、ホストは、ホストアプリケーションに必要な作業負荷に応じて、マルチタイルシステムオンチップとして設計されたコンピュータにアクセスする。
【0115】
相互接続部44は、アレイ46の異なるタイル3が互いに通信できるように構成される。しかし、同じタイル3上のスレッド間の依存性が潜在的に存在するのと同様に、アレイ46の異なるタイル3上で実行しているプログラムの部分間の依存性も存在し得る。従って、先に実行しているあるタイル3上のコード片の依存データが、別のタイル3上の別のコード片によって利用できるようになるのを防ぐための技法が必要とされる。
【0116】
各タイル3は、それ自体、ローカル命令メモリからの命令(コード)の実行及びローカルデータメモリ内のデータの取扱いが可能なプロセッサである。タイル3は、バレルスレッドプロセッサ及びメモリのそれぞれのインスタンスを含み得る。例えば、例として、処理ユニット2は、何百ものタイル3又はさらに千超のタイル3を含み得る。完全を期すため、本明細書で言及される「アレイ」は、必ずしも特定の次元数又は物理的なレイアウトのタイル3を含意するとは限らないことも留意されたい。
【0117】
処理ユニット2上のタイル3間の通信は、時間決定論的に起こる。しかし、タイル間交換の他の形態も可能である。アレイ46の異なるタイル3上で実行しているプログラムの部分間の依存性が存在し得る。すなわち、あるタイル上の処理データは、別のタイルからの結果に依存し得る(例えば、別のタイルが依存する結果を提供し得る)。従って、先に実行しているあるタイル3上のコード片の依存データが、別のタイル3上の別のコード片によって利用できるようになるのを防ぐための技法が必要とされる。
【0118】
AI及びデータ科学の並列プログラミングモデルは、通常、演算、バリア及び交換の3フェーズの反復実行モデルに従う。その意味は、処理ユニットへの及び処理ユニットからのデータ転送が、通常、処理ユニット間及び各処理ユニットとホストとの間のデータ一貫性を提供するためにバリア依存性を有するというものである。典型的に使用されるデータ一貫性モデルは、バルク同期並列(BSP)、ステイル同期並列(SSP)及び非同期である。本明細書で説明される実施形態は、BSPモデルを使用するが、代替形態として他の同期モデルを利用できることが明らかであろう。
【0119】
図15及び16を参照すると、
図15及び16は、BSP交換スキームの実装形態を示し、各タイル3は、交互サイクルで演算フェーズ43及び交換フェーズ42を実行し、演算フェーズ43及び交換フェーズ42は、タイル間でバリア同期40によって相互に分離される。
図15及び16によって示される事例では、バリア同期は、各演算フェーズ43と、それに続く交換フェーズ42との間に配置される。
【0120】
演算フェーズ43中、各タイル3は、タイル上で局所的に1つ又は複数の演算タスクを実行するが、他のいかなるタイル3ともこれらの演算の結果を通信しない。交換フェーズ42では、各タイル3は、先行する演算フェーズからの演算の1つ又は複数の結果を1つ又は複数の他のタイルと交換できるが、そのタスクが依存性を有するデータを他のタイル3から受信するまで新しい演算を実行しない。また、先行する演算フェーズにおいて演算されたもの以外のデータを他のタイルに送信することもない。交換フェーズ42において内部制御関連動作などの他の動作を実行できることも除外されない。タイルグループの外部との通信は、BSPメカニズムを任意に利用できるが、代替として、BSPを利用せずに、それ自体の他の何らかの同期メカニズムを代わりに使用することができる。
【0121】
BSP原理によれば、バリア同期40は、演算フェーズ43から交換フェーズ42に移行する接合点、交換フェーズ42から演算フェーズ43に移行する接合点又はその両方に配置される。すなわち、(a)グループのいずれかのタイルが次の交換フェーズ42に進めるようになる前に、すべてのタイル3がそれらのそれぞれの演算フェーズ43を完了する必要があるか、(b)グループのいずれかのタイルが次の演算フェーズ43に進めるようになる前に、グループのすべてのタイル3がそれらのそれぞれの交換フェーズ42を完了する必要があるか、又は(c)これらの条件の両方が実施されるかのいずれかである。3つのすべての変形形態では、フェーズを交互に行うのは、個々のタイルであり、同期するのは、アセンブリ全体である。次いで、交換フェーズ及び演算フェーズのシーケンスは、複数の繰り返しにわたって繰り返すことができる。BSPの専門用語では、交換フェーズ及び演算フェーズの各繰り返しは、「スーパーステップ」と呼ばれる場合がある(ただし、文献上、専門用語が常に一貫して使用されるとは限らないことに留意されたい。すなわち、個々の交換フェーズ及び演算フェーズの各々が個別にスーパーステップと呼ばれる場合があるのに対して、本明細書で採用される専門用語のように、交換フェーズ及び演算フェーズが合わせてスーパーステップと呼ばれる場合もある)。
【0122】
同じ処理ユニット2又は異なる処理ユニット上のタイル3の複数の異なる独立したグループの各々は、互いに非同期的に動作する別個のそれぞれのBSPグループを形成することができ、演算、同期及び交換のBSPサイクルは、所定の各グループ内でのみ課されるが、各グループは、他のグループから独立してそれを行うことが除外されないことにも留意されたい。すなわち、マルチタイルアレイ46は、複数の内部同期グループを含み得、各々は、他のそのようなグループから独立して及び非同期的に動作する(後にさらに詳細に論じられる)。いくつかの実施形態では、後にさらに詳細に論じられるように、同期及び交換の階層的分類がある。
【0123】
図16は、(a)演算フェーズ43から交換フェーズ42へのバリア同期(上記を参照されたい)が課される事例における、アレイ46のタイルのいくつか又はすべてのグループ3i、3ii、3iii間で実装されるようなBSP原理を示す。この配列では、いくつかの他のタイルが依然として交換を行っている間、いくつかのタイル3が演算43を開始できることに留意されたい。
【0124】
図17は、クロックジェネレータ回路12から処理ユニット2のタイル3にクロック信号Φをどのように分配することができるかを示す。例では、タイル3は、列に配列されるように示されている。タイル3の各々は、銅ワイヤ112に接続され、銅ワイヤ112は、タイル3の各々にクロック信号を提供する。銅ワイヤ112は、処理ユニット2のクロックツリーを提供する。銅ワイヤ112の厚さは、0.2マイクロメートル~2マイクロメートルで選択される。銅ワイヤ112は、例えば、1マイクロメートルの厚さ及び0.5マイクロメートルの幅を有し得る。銅ワイヤ112の厚さが大きいと、クロック信号の挿入遅延が低減し、クロック信号は、タイル3の各々に非常に急速に伝播することができる。
【0125】
図18を参照すると、
図18は、第1の発明の実施形態による方法1800を示す。方法1800のステップは、順次に示されているが、ステップ間にある程度の時間的なオーバーラップが存在することが理解されるであろう。具体的には、ステップS1810は、方法1800中にわたって実行することができ、ステップS1820及びS1830とオーバーラップする。
【0126】
S1810では、スイッチング回路は、処理ユニットをクロック制御するための第1のクロックジェネレータと、処理ユニットをクロック制御するための第2のクロックジェネレータとを循環して選択する。第1のクロックジェネレータは、サイクルの第1の部分中に選択される一方、第2のクロックジェネレータは、サイクルの第2の部分中に選択される。第1のクロックジェネレータによって提供されるクロック信号の周波数は、第2のクロックジェネレータによって提供されるクロック信号の周波数よりも高い。
【0127】
S1820では、スイッチング回路は、サイクルの第1の部分の持続時間と、サイクルの第2の部分の持続時間との間の割合を増加させることにより、処理ユニットの平均クロック周波数を増加させる。
【0128】
S1830では、スイッチング回路は、サイクルの第1の部分の持続時間と、サイクルの第2の部分の持続時間との間の割合を減少させることにより、処理ユニットの平均クロック周波数の減少を増加させる。
【0129】
図19を参照すると、
図19は、第2の発明の実施形態による方法1900を示す。示される順番で方法1900のステップを実行する必要がないことと、ステップの実行が時間的にオーバーラップし得ることとが理解されるであろう。具体的には、ステップS1910及びS1920は、方法1900全体を通して異なる時点で繰り返し実行することができる。
【0130】
S1910では、スイッチング回路は、プロセッサクロック信号を提供するための第1のクロックジェネレータと、プロセッサクロック信号を提供するための第2のクロックジェネレータとを選択的に切り替えるように構成される。
【0131】
S1920では、少なくとも1つのプロセッサは、システムのメモリにおいて複数の設定にアクセスする。各設定は、第1のクロックジェネレータの最大周波数と、第2のクロックジェネレータの最小周波数と、を含む。
【0132】
S1930では、少なくとも1つのプロセッサは、クロック信号の周波数を増加させる要求を示す少なくとも1つの条件を検出する。
【0133】
S1940では、S1930に応答して、少なくとも1つのプロセッサは、現在選択されている設定から、設定のうちより高い設定に変更する。より高い設定は、現在選択されている設定よりも高い第1のクロックジェネレータの最大周波数と、現在選択されている設定よりも高い第2のクロックジェネレータの最小周波数とを有する。
【0134】
S1950では、少なくとも1つのプロセッサは、クロック信号の周波数を減少させる要求を示す少なくとも1つの条件を検出する。
【0135】
S1960では、少なくとも1つのプロセッサは、S1940において選択されたより高い設定から、より低い設定に変更する。より高い設定は、より低い設定よりも高い第1のクロックジェネレータの最大周波数と、より低い設定よりも高い第2のクロックジェネレータの最小周波数とを有する。
【0136】
上記の実施形態は、単なる例として説明されていることが理解されるであろう。