IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル コーポレイションの特許一覧

特許7069036動的クロックゲーティング周波数スケーリング
<>
  • 特許-動的クロックゲーティング周波数スケーリング 図1
  • 特許-動的クロックゲーティング周波数スケーリング 図2
  • 特許-動的クロックゲーティング周波数スケーリング 図3
  • 特許-動的クロックゲーティング周波数スケーリング 図4
  • 特許-動的クロックゲーティング周波数スケーリング 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-09
(45)【発行日】2022-05-17
(54)【発明の名称】動的クロックゲーティング周波数スケーリング
(51)【国際特許分類】
   G06F 1/3237 20190101AFI20220510BHJP
   H03K 5/15 20060101ALI20220510BHJP
【FI】
G06F1/3237
H03K5/15 Z
【請求項の数】 26
(21)【出願番号】P 2018555180
(86)(22)【出願日】2017-04-24
(65)【公表番号】
(43)【公表日】2019-06-20
(86)【国際出願番号】 US2017029154
(87)【国際公開番号】W WO2017204966
(87)【国際公開日】2017-11-30
【審査請求日】2020-04-20
(31)【優先権主張番号】15/165,501
(32)【優先日】2016-05-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ロイチョウドゥーリ,アロジット
(72)【発明者】
【氏名】ドゥルグ,アジャヤ
(72)【発明者】
【氏名】フッダル,シルパ
(72)【発明者】
【氏名】シャンバグ,スニル
(72)【発明者】
【氏名】サルルカル,ヴィシュラム
(72)【発明者】
【氏名】シン,テジパル
【審査官】松浦 かおり
(56)【参考文献】
【文献】特開2013-027050(JP,A)
【文献】特開2004-295450(JP,A)
【文献】特開2000-039932(JP,A)
【文献】特開2009-267548(JP,A)
【文献】特開平11-184554(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/26-1/3296
G06F 1/04-1/14
H03K 5/00-5/02
H03K 5/08-5/1254
H03K 5/15-5/26
(57)【特許請求の範囲】
【請求項1】
クロック信号を供給するクロックデバイスと、
前記クロック信号を受け取るクロックゲートであって、イネーブル状態またはディスエーブル状態で選択的に設けられるクロックゲートと、
前記クロック信号の周波数を判定するコントローラであって、判定された周波数が第1の周波数であるとき、前記クロックゲートを前記イネーブル状態になるように制御し、判定された周波数が前記第1の周波数とは異なる第2の周波数であるとき、前記クロックゲートを前記ディスエーブル状態になるように制御するコントローラとを有する、
電子装置。
【請求項2】
前記クロックゲートがイネーブル状態であるとき、前記クロック信号を受け取る第1の論理ブロックをさらに有する、請求項1に記載の電子装置。
【請求項3】
前記クロックゲートがディスエーブル状態にあるとき、前記クロック信号は前記第1の論理ブロックで受け取られない、請求項2に記載の電子装置。
【請求項4】
前記第1の論理ブロックは前記クロック信号の受け取りに応じて特定機能を実行する、
請求項2に記載の電子装置。
【請求項5】
前記コントローラは判定された新しい周波数に基づいて前記クロックゲートの状態を変更する、請求項1に記載の電子装置。
【請求項6】
異なる複数の周波数に基づいて前記クロックゲートのイネーブルまたはディスエーブルに関する情報を記憶するメモリをさらに有する、請求項1に記載の電子装置。
【請求項7】
前記コントローラは、帯域幅の大きさを決定し、決定された帯域幅の大きさに少なくとも部分的に基づいて周波数を決定する、請求項1に記載の電子装置。
【請求項8】
クロック信号を供給するクロック手段と、
前記クロック信号を受け取るゲート手段であって、イネーブル状態またはディスエーブル状態で選択的に設けられるゲート手段と、
前記クロック信号の周波数を決定する制御手段であって、決定された周波数が第1の周波数であるとき、前記ゲート手段を前記イネーブル状態になるよう制御し、決定された周波数が前記第1の周波数とは異なる第2の周波数であるとき、前記ゲート手段を前記ディスエーブル状態になるよう制御する制御手段とを有する、
電子装置。
【請求項9】
前記ゲート手段がイネーブル状態であるとき、前記クロック信号を受け取る第1の論理ブロックをさらに有する、請求項8に記載の電子装置。
【請求項10】
前記ゲート手段がディスエーブル状態にあるとき、前記クロック信号は前記第1の論理ブロックで受け取られない、請求項9に記載の電子装置。
【請求項11】
前記第1の論理ブロックは前記クロック信号の受け取りに応じて特定機能を実行する、
請求項9に記載の電子装置。
【請求項12】
前記制御手段は判定された新しい周波数に基づいて前記ゲート手段の状態を制御する、請求項9に記載の電子装置。
【請求項13】
異なる複数の周波数に基づいて前記ゲート手段のイネーブルまたはディスエーブルに関する情報を記憶する記憶手段をさらに有する、請求項9に記載の電子装置。
【請求項14】
前記制御手段は、帯域幅の大きさを決定し、決定された帯域幅の大きさに少なくとも部分的に基づいて周波数を決定する、請求項9に記載の電子装置。
【請求項15】
波数を決定する、少なくともその一部はハードウェアである第1のロジックと、
決定された周波数が第1の周波数であるとき、クロックゲートをイネーブル状態にするように制御し、決定された周波数が前記第1の周波数とは異なる第2の周波数であるとき、前記クロックゲートをディスエーブル状態にするように制御する、少なくともその一部はハードウェアである第2のロジックとを有する、
電子装置。
【請求項16】
前記クロックゲートがイネーブル状態であるとき、クロック信号を受け取る第1の論理ブロックをさらに有する、請求項15に記載の電子装置。
【請求項17】
前記クロックゲートがディスエーブル状態にあるとき、前記クロック信号は前記第1の論理ブロックで受け取られない、請求項16に記載の電子装置。
【請求項18】
前記第1の論理ブロックは前記クロック信号の受け取りに応じて特定機能を実行する、
請求項16に記載の電子装置。
【請求項19】
異なる複数の周波数に基づいて前記クロックゲートのイネーブルまたはディスエーブルに関する情報を記憶するメモリをさらに有する、請求項15に記載の電子装置。
【請求項20】
前記第1のロジックは、帯域幅の大きさを決定し、決定された帯域幅の大きさに少なくとも部分的に基づいて周波数を決定する、請求項15に記載の電子装置。
【請求項21】
前記第1のロジックは、新しい周波数を決定し、決定された新しい周波数に基づいて前記クロックゲートの状態を変更する、請求項15に記載の電子装置。
【請求項22】
コントローラにより実行されると、前記コントローラに
クロック信号の周波数を決定することと、
定された周波数が第1の周波数であるとき、クロックゲートをイネーブル状態になるよう制御し、決定された周波数が前記第1の周波数とは異なる第2の周波数であるとき、前記クロックゲートをディスエーブル状態になるよう制御することと
を実行させる、コンピュータプログラム。
【請求項23】
第1の論理ブロックは、前記クロックゲートがイネーブル状態であるときクロック信号を受け取る、請求項22に記載のコンピュータプログラム。
【請求項24】
前記コントローラに、帯域幅の大きさを決定し、決定された帯域幅の大きさに少なくとも部分的に基づいて周波数を決定することをさらに実行させる、
請求項22に記載のコンピュータプログラム。
【請求項25】
前記コントローラに、新しい周波数を決定し、決定された新しい周波数に基づいて前記クロックゲートの状態を変更することをさらに実行させる、請求項22に記載のコンピュータプログラム。
【請求項26】
請求項22ないし25いずれか一項に記載のコンピュータプログラムを記憶した非一時的な機械可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
複数の実施形態には、クロック信号の特有の周波数に基づくクロックゲートの制御に関するものもある。
【背景技術】
【0002】
クロックゲーティング(clock gating)は、アイドル状態の論理回路の電力消費を低減する技術である。クロックゲーティングは、電力を節約するために、実行すべき作業があるときにだけ、論理ブロックにおいてクロックをアクティブ化することを言う。しかし、クロックゲーティングはさらにタイミング制約を生じることがある。例えば、複雑な論理回路(logic)に、タイミングマージンが極端に狭いクロックゲーティングを含めることは難しい場合がある。
【図面の簡単な説明】
【0003】
次の図面を参照して構成と実施形態を詳細に説明する。図中、同じ参照数字は同じ要素を指す。
図1】例示的構成による電子システムを示すブロック図である。
図2】例示的な実施形態によるクロック源とIP(intellectual property)とを示す図である。
図3】例示的な実施形態によるクロック源とIP(intellectual property)とを示す図である。
図4】例示的実施形態による動作を示すフローチャートである。
図5】例示的構成による電子システムを示す図である。
【発明を実施するための形態】
【0004】
以下の詳細な説明では、同じ数字及び文字を用いて、複数の異なる図中の同じ、対応する、及び/又は類似したコンポーネントを示す。さらに、以下の詳細な説明では、サイズ/モデル/値/範囲の例を与えるが、実施形態はそれらに限定されない。実施例を説明するために具体的な詳細事項を記載するが、当業者には言うまでもなく、実施形態はこれらの具体的な詳細事項が無くても実施することができる。
【0005】
複数の実施形態は電子システムと、電子装置及び/又は電子デバイスとに応用可能である。電子システム及び/又は電子デバイスは、モバイル端末、モバイルデバイス、モバイル計算プラットフォーム、モバイルプラットフォーム、サーバ、ラップトップコンピュータ、タブレット、ウルトラモバイルパーソナルコンピュータ、モバイルインターネットデバイス、スマートフォン、パーソナルデジタルアシスタント、ディスプレイデバイス、テレビジョン(TV)などのうちどれであってもよい。
複数の実施形態は電子システム及び/又は電子デバイスに関するものであってもよい。これらはプラットフォームと呼ばれることもある。プラットフォームはハードウェア及びソフトウェアを含み得る。プロセッサはプラットフォームのコンポーネントであり得る。
【0006】
図1は例示的構成による電子システムを示すブロック図である。他の構成(configurations and arrangements)を提供してもよい。
【0007】
より具体的には、図1は、システムオンチップ(SOC)120、システムメモリ150及びディスプレイ160を含む得る電子システム100を示す。図1に示すコンポーネントは説明を容易にするための単なる例である。他のコンポーネントを設けてもよい。電子システム100は電子装置及び/又は電子デバイスと呼ばれることもある。
【0008】
一例として、システムオンチップ120はプロセッサ122、電力管理部(PMU)124、メモリコントローラ126、ビデオコントローラ128及びクロックデバイス140を含んでいてもよい。これらの要素は単なる例として示したものであり、他のコンポーネントが設けられてもよい。
【0009】
クロックデバイス140はSOC120が使用するクロック信号を提供する。クロック信号を用いてSOC120の論理回路を駆動してもよい。一例として、論理回路は機能ブロック(論理ブロック)として提供されてもよく、機能ブロックはクロック信号により駆動されてもよい。少なくとも1つの構成において、クロックデバイスはクロック信号を提供するフェーズロックループ(PLL)を含んでもよい。クロック信号は単一周波数で供給されてもよい。しかし、クロック信号の周波数クロックデバイスで変更されてもよく、PMU124のコンポーネントにより変更されてもよい。
【0010】
電力管理部(PMU)124はクロックデバイス140に結合され、それからクロック信号を受信してもよい。少なくとも1つの構成において、PMU124は、クロック信号を管理し、プロセッサ122(及び/又はプロセッサ122の(複数の)機能ブロック)、メモリコントローラ126及びビデオコントローラ128などの各コンポーネントにクロック信号を提供してもよい。
【0011】
プロセッサ122は、受信したクロック信号に基づいて動作することができる論理回路(logic)を含んでいてもよい。少なくとも1つの実施例では、(プロセッサ122の)論理回路は、少なくとも1つの機能ブロック(又は論理ブロック)を含んでいてもよい。少なくとも1つの実施例では、(プロセッサ122の)論理回路は、複数の機能ブロックを含んでいてもよい。各機能ブロックは、クロック信号を別々に受け取り、受け取ったクロック信号に基づいて特有の機能を実行することができる。
【0012】
機能ブロックは異なる周波数で動作してもよい。例えば、機能ブロック(又は論理ブロック)は、(第1の周波数のクロック信号を用いる)第1のモードで動作してもよく、(第2の周波数のクロック信号を用いる)第2のモードで動作してもよい。換言すると、機能ブロックが第1のモード(すなわち、第1の動作モード)で動作するため、クロック信号は第1の周波数でそのブロックに供給されねばならず、そのブロックが第2のモード(すなわち、第2の動作モード)で動作するため、クロック信号は第2の周波数でそのブロックに供給されねばならない。
【0013】
メモリコントローラ126は、SOC120に設けられてもよく、システムメモリ150と通信してもよい。システムメモリ150はシステムメモリ150内に情報を格納してもよく、及び/又は情報はシステムメモリ150からSOC120に提供されてもよい。メモリコントローラ126はPMU124から信号及び/又は情報を受け取ることができる。
【0014】
ビデオコントローラ128は、SOC120に設けられてもよく、ディスプレイ160と動作して画像、オブジェクトなどを表示してもよい。ディスプレイ160はSOC120の外部にあってもよい。ビデオコントローラ128はディスプレイ160を制御できる。ビデオコントローラ128はPMU124から信号及び/又は情報を受け取ることができる。
【0015】
図2は、例示的な構成によるクロック源とIP(intellectual property)とを示す図である。クロック源及びIPは電子デバイス、電子装置又は電子システムに設けられてもよい。1つの実施例として、クロック源とIPとが図1の電子システム100に設けられてもよい。他の構成(configurations and arrangements)も可能である。
【0016】
より具体的に、図2はクロックデバイス140とIP(intellectual property)200とを示す。IP200は複数の異なる論理回路、回路などのうちどれを含んでいてもよい。IPは機能モジュール、プロセッサ、ビデオコントローラ、メモリコントローラ、インターコネクト(interconnect)などを指すことができる。
【0017】
少なくとも1つの実施例では、IP200はSOC120のプロセッサ122に対応してもよい。IP200は、電子システム及び/又は電子デバイス/装置の他のコンポーネントに対応してもよい。少なくとも1つの構成において、IP200はプロセッサ122及び/又はPMU124の一部であってもよい。IPは論理回路を含んでいてもよい。論理回路は、所望のタスクや機能を実行するために、回路、ファームウェア、機能ブロックなどを含んでいてもよい。
【0018】
IP200のコンポーネント/要素は、複数の異なるやり方で提供及び/又は構成されてもよい。このように、図2は1つの構成を示すが、他の構成やコンポーネントが設けられてもよい。
【0019】
図2に示すように、IP200はクロックゲート210と論理ツリーとを含んでいてもよい。一例として、論理ツリー(logic tree)は論理ブロック220、論理ブロック230及び論理ブロック240を含んでいてもよい。設けられる論理ブロックの数は異なっても良い。複数の異なる機能、動作及び/又はアプリケーションのどれかを実行する論理ブロックが設けられてもよい。各論理ブロックは論理ブロックの特有の機能を実行する論理回路及び/又は回路を含んでいてもよい。
【0020】
一例として、論理ブロック220はクロック信号を受け取って第1の機能(又は動作又はアプリケーション)を実行するように設計されていてもよく、論理ブロック230はクロック信号を受け取って第2の機能(又は動作又はアプリケーション)を実行するように設計されていてもよく、論理ブロック240はクロック信号を受け取って第4の機能(又は動作又はアプリケーション)を実行するように設計されていてもよい。各論理ブロックは、クロック信号の受け取りに応じて、別の機能やアプリケーションを実行してもよい。
【0021】
クロックデバイス140は特定周波数のクロック信号を供給してもよい。クロック信号はクロックデバイス140からIP200のクロックゲートに供給されてもよい。クロック信号の特定の周波数は、変化しても、変更されてもよい。
【0022】
クロックゲート210は異なる2つの状態で、すなわち(1)イネーブル状態で、及び(2)ディスエーブル状態になってもよい。イネーブル状態はイネーブルモードまたはクローズモードと呼ばれることもある。ディスエーブル状態はディスエーブルモードまたはオープンモードと呼ばれることもある。
【0023】
クロックゲート210がイネーブル状態にあるとき、クロック信号はクロックゲート210を通り、論理ツリーの各論理ブロック220、230、240に送られても良い。換言すると、クロック信号は、クロックゲートがイネーブル状態にあるとき、論理ブロックに供給される。一方、クロックゲート210がディスエーブル状態にあるとき、クロック信号はクロックゲート210を通らず、論理ツリーの各論理ブロック220、230、240に送られない。言い換えると、クロック信号は、クロックゲートがディスエーブル状態にあるとき、論理ツリーの論理ブロックに供給される(又は到達する)ことを阻止(又は拒絶)されてもよい。
【0024】
少なくとも一例では、クロックゲート210は、オープンまたはクローズしてクロックゲートをそれぞれイネーブル状態またはディスエーブル状態にするスイッチを含み得る。例えば、(クロックゲート210の)スイッチがクローズされると、クロックゲートはイネーブル状態(またはクローズ状態)になると考えられる。クロックゲート140がイネーブル状態にあるとき、クロックデバイス140からのクロック信号はクロックゲート210(すなわちスイッチ)を通り、論理ツリーの各論理ブロック220、230、240に送られ得る。他方、(クロックゲート210の)スイッチがオープンされると、クロックゲートはディスエーブル状態(またはオープン状態)になると考えられる。クロックゲートがディスエーブル状態にあるとき、クロックデバイス140からのクロック信号は、クロックゲート210を通れず(拒絶され)、論理ブロックはクロック信号を受け取れない。よって、クロックゲート210がディスエーブル状態にあるとき、論理ブロック220、230、240は動作しない。
【0025】
実施形態によっては、動的クロックゲーティング周波数スケーリング(Dynamic Clock gating Frequency Scaling(DCFS))を実装してもよい。実施形態によっては、IP(プロセッサ、チップなど)に、特定周波数のみで、クロックゲーティングを実装してもよい。ある周波数はクロックゲーティングパス(clock gating path)のタイミングに合わず、一定の高周波ではクロックゲーティングがディスエーブルされるので、特定周波数が供給されてもよい。時間が長くなる低周波では、クロックゲーティングタイミングパス(clock gating timing path)により大きなタイミングマージンを設け、それにより低周波におけるクロックゲーティングをイネーブルしてもよい。実施形態によっては、特定の動作周波数を判定することと、クロックゲートをイネーブル状態またはディスエーブル状態にするか判定することとを含んでもよい。例えば、コントローラは周波数遷移(frequency transition)を判定してもよい。周波数遷移はクロック信号の周波数が変化する時点である。コントローラは、判定された周波数(及び/又は周波数遷移)に基づいて、クロックゲートを制御してイネーブル状態またはディスエーブル状態にする。
【0026】
少なくとも一例では、IPの動作時間中に、ファームウェア(又はソフトウェア)がクロックデバイスの各周波数に基づいてクロックゲートを選択的にイネーブル及び/又はディスエーブルしてもよい。これにより、クロック信号が複数の論理ブロック(又は機能ブロック)の少なくとも1つに供給されるか制御される。このように、論理ブロックは特定周波数に基づき特定機能を実行することができる。クロックゲートを選択的にイネーブル及び/又はディスエーブルすることは、コントローラ、ファームウェア、論理回路及び/又は回路により実行されてもよい。選択的にイネーブルまたはディスエーブルすることは、特定の周波数及び/又は周波数遷移(クロック信号周波数の変更など)に基づいてもよい。
【0027】
動作中、IP(又は電子装置)で利用される帯域幅が判定される。言い換えると、IP(又は電子装置/システム)で利用される(又は利用されている)帯域幅の大きさがモニタまたは判定されてもよい。電力を節約するため、利用されるデータ量に基づいて、異なる周波数を利用してもよい。一例として、アプリケーションが実行されてもよく、一定のデータ量を消費してもよい。アプリケーションは異なる複数の周波数のどれで動作してもよい。したがって、判定された帯域幅と可能性のある周波数とに基づいて、特定周波数(及びそれによる周波数遷移)を決定してもよい。周波数(及び/又は周波数遷移)に基づいて、IPのクロックゲートは選択的にイネーブルまたはディスエーブルされてもよい。クロックゲート(及びクロック信号)のイネーブル及び/又はディスエーブルは、クロック信号が各論理ブロックに供給されるかどうかを制御することができる。言い換えると、論理ブロックは、クロックゲートの選択的にイネーブルまたはディスエーブルに基づき、クロック信号を受け取る(又はクロック信号を受け取らない)ことができる。選択的なイネーブルまたはディスエーブルは、特定の周波数(及び/又は周波数遷移)に基づいても良い。
【0028】
少なくとも1つの実施形態では、コントローラは、帯域幅をモニタするために(Pコードなどの)ファームウェアを用いて動作してもよく、(クロック信号の)周波数を判定して、各論理ブロックにクロック信号を供給する(クロック信号を供給しない)ためにクロックゲートをイネーブル/ディスエーブルしてもよい。ファームウェア(又はPコード)はIPのメモリなどのメモリに記憶されてもよい。
【0029】
少なくとも1つの実施形態では、コントローラは(プロセッサ、チップ、SOCなどの)IPで利用されているデータ量をモニタしてもよい。例えば、コントローラは、IPの(論理ブロックにある)特定のアプリケーションが利用されている(又は利用される)ときに、データをモニタしてもよい。したがって、コントローラは利用されている(利用される)帯域幅の大きさを決定することができる。コントローラは、決定された帯域幅の大きさに基づいて、利用され得る異なる複数の周波数のうち少なくとも1つを決定してもよい。異なる複数の周波数は事前に記憶されていてもよい。一例として、新たに決定された周波数は、IP(又は電子装置/システム)による消費電力の点で、より効率的であり得る。新しい周波数に基づいて、コントローラはクロックゲートのイネーブル及び/又はディスエーブルを制御してもよい。
【0030】
より具体的に、コントローラは(ファームウェア及び/又はソフトウェアを用いて)特定の動作周波数を決定してもよい。特定の動作周波数は、(周波数が異なるクロック信号を供給できる)クロックデバイスからのクロック信号の周波数に基づいてもよい。それゆえ、クロックゲートは、決定された新しい周波数に基づいて、選択的にイネーブルまたはディスエーブルされてもよい。
【0031】
実施形態によっては、利用可能なタイミングマージンに基づき、適切な周波数でクロックゲーティングを選択的にイネーブル/ディスエーブルするサポートをファームウェアに追加して、特定周波数でのクロックゲーティングを実装してもよい。これにより、異なる周波数範囲にわたり、動作するワークロードにわたり、最適パワーが得られる。
【0032】
上記の通り、異なる周波数など、異なるクロック信号がクロックデバイスから提供され得る。様々なクロック信号を、1つ又は複数のクロックデバイス(様々なフェーズロックループなど)及び/又はPMU120から供給してもよい。
【0033】
図3は、例示的な実施形態によるクロック源とIP(intellectual property)とを示す図である。クロック源及びIPは、電子装置、電子デバイス、電子装置又は電子システムに設けられてもよい。他の構成や実施形態も可能である。図3は、図2に示したコンポーネントも含んでいるかも知れない。説明を容易にするため、類似または同一のコンポーネントはこれ以上説明しない。
【0034】
より具体的に、図3はクロックデバイス140とIP200とを示す。IP200は例えばプラットフォームまたはSOCであってもよい。図3は、ファームウェア(Pコードなど)に基づき動作し得るコントローラ300(又は制御デバイス)も示す。ファームウェア(Pコードなど)は例えばメモリ310に設けられてもよい。メモリ310はメモリ帯域幅(memory bandwidth)を提供する論理回路であってもよい。コントローラ300は、クロックゲート210のイネーブルまたはディスエーブルを選択的に制御することができる。少なくとも1つの実施形態では、複数のクロックゲートを設けてもよく、各ゲートはコントローラ300や他のデバイス(プロセッサなど)により別々に選択的に制御されてもよい。
【0035】
クロックゲート210はブート中に統計的に設定されるレジスタ設定により制御されてもよい。これはハードウェア(HW)設定を制御するために行われてもよい。レジスタはブート中に値をプリセットする一組のフリップフロップであってもよい。
【0036】
コントローラ300はファームウェア(Pコードなど)に基づいてクロックゲート210の状態(イネーブルまたはディスエーブル)を制御することもできる。コントローラ300は、IP周波数及び/又は(IPのコンポーネントを作動させる)クロック信号の周波数に基づき、クロックゲーティングをイネーブル/ディスエーブルすることができる。一例として、メモリ(又は記憶部)はIP周波数(またはクロック信号周波数)及びクロックゲーティングのイネーブル/ディスエーブルに関する情報を含んでいてもよい。この情報は後ほど表1の情報として参照する。(下に示す)ルックアップテーブルは、IP周波数と、クロックゲーティングのイネーブル/ディスエーブルとに関する表1のこの情報を含んでいてもよい。この情報は、事前に決定され、電子装置、デバイスまたはシステムに格納されてもよい。一例として、ルックアップテーブルの情報はPコード(p-code)に予め格納されていてもよい。Pコード(p-code)はコントローラ(又はその他のデバイス)により実行されるソフトウェア(SW)コードである。表1の情報は、メモリ310及び/又はSOCのその他のメモリに格納されてもよい。
【0037】
【表1】
(上に示した)表1の情報は、クロックゲート210がIP周波数に基づき制御されてもよいことを示す。IP周波数はIPの論理ブロックを作動させるのに利用される特定周波数である。周波数は、決定され、利用されている(又は利用される)帯域幅に基づき決定されてもよい。上記の通り、決定は次のどれか、すなわちコントローラ300、ファームウェア、Pコード(p-code)などにより行われ得る。
【0038】
実施形態によっては、(特定周波数の)クロック信号をIPの論理回路(又は論理ブロック)に供給するか、クロックゲートが制御してもよい。この決定は表1に示したような事前に得られた情報に基づいて行われても良い。表1の情報は、特定のIPの各周波数で利用可能なタイミングマージンに基づくものであってもよい。
【0039】
表1に示すように、クロックゲート210は、特定の周波数でのみイネーブル状態に選択的に設けられてもよい。例えば、クロック信号の特定の周波数が1.35GHzまたは1.1GHzである場合、クロックゲート210を選択的にイネーブル状態(またはクローズ状態)にすることができる。したがって、クロック信号が1.35GHzまたは1.1GHzで供給される場合、クロック信号はクロックゲート210を通過して論理ブロックに供給される。
【0040】
一方、クロック信号の特定の周波数が1.6GHzまたは2.1GHzである場合、クロックゲート210を選択的にディスエーブル状態(またはオープン状態)にすることができる。したがって、クロック信号は、1.6GHzまたは2.1GHzで供給される場合、クロックゲート210を通過せず、(論理ブロックがクロック信号を受信しないので)それぞれの論理ブロックは動作しなくてもよい。
【0041】
図4は、例示的実施形態による動作を示すフローチャートである。他の動作、動作順序、及び実施形態も使用できるだろう。説明を容易にするために、図4は、図3に示すような電子システム(図1の電子システムの構成要素であってもよい)の実施形態に関する動作を示す。図4は、電子システムの全ての動作を示すものではない。
【0042】
図4のフローチャートは、少なくとも部分的に、コントローラ、ファームウェア、Pコードなどによって実行されてもよい。これは、ランタイムIP周波数に基づいて、IPのクロックゲーティングを動的に制御することができる。
【0043】
より具体的には、図4は、電子装置、デバイスまたはシステムを制御する方法を示す。電子装置、デバイスまたはシステムは、最初に動作402で電源が投入されてもよい。動作404において、クロック信号が(クロック装置などから)供給されてもよい。最初のクロック信号は、例えばデフォルト設定であってもよい。
【0044】
動作406では、クロックゲート(クロックゲート210など)でクロックゲーティングを選択的にイネーブル(またはイネーブル状態のままに)することができる。これは、クロック信号がIPの論理ブロックに供給されることを可能にする。クロックゲーティングは最初に、電子システムの最初の起動時にデフォルトでイネーブルにされてもよい。
【0045】
動作408において、帯域幅は、例えば、コントローラによって監視(または決定)されてもよい。コントローラは、電子装置、デバイスまたはシステムがクロック信号の周波数で動作している間に、使用されている(または使用される)データの量を監視する(または決定する)ことができる。
【0046】
監視に基づいて、コントローラ(またはファームウェア)は、新しい周波数が効率の目的のために使用され得ることを決定することができる。動作410において、コントローラは、(新しい周波数が使用されると判定されたとき)周波数遷移を決定することができる。例えば、周波数遷移点において、ファームウェア(またはPコード)は、表1のような情報を参照することができる。この情報は、クロックゲーティングがイネーブルされるべきかディスエーブルされるべきかを決定するために使用され得る。
【0047】
動作412において、クロックゲートをイネーブル状態またはディスエーブル状態に選択的に提供するかどうかに関する決定が行われる。この決定は、コントローラ、ファームウェア、Pコードなどに基づいて行うことができる。例えば、クロック信号の周波数に基づいて、クロックゲートをイネーブルまたはディスエーブルにするかどうかの決定を行うことができる。
【0048】
動作414はクロックゲートのディスエーブルを伴う。この結果、論理ブロックにクロック信号が供給されなくなる。従って、論理ブロックは特定の機能を実行しない。例えば、IPが新しい決定された周波数でクロックゲーティングをサポートできない場合、動作414でクロックゲートをディスエーブル(「0」)にすることができる。動作420に戻り、電子システム(または電子システムの一部)が再起動されてもよい。動作416はクロックゲートのイネーブルを伴う。これにより、論理ブロックに(特定の周波数で)クロック信号が供給されることになる。したがって、論理ブロック(または機能ブロック)はそれぞれ特定の機能を実行する。例えば、IPが新しい決定された周波数でクロックゲーティングをサポートできる場合、動作416でクロックゲートをイネーブル(「1」)にすることができる。次に動作408に戻り、帯域幅を監視することができる。
【0049】
図5は、例示的実施形態による電子システムを示す図である。他の実施形態及び構成を提供してもよい。電子システムは、上述のように動作し得るシステムのコンポーネントを示すために提供される。
【0050】
図5は、プロセッサ510、電源520、ディスプレイ525およびメモリ530を含むシステム500を示す。プロセッサ510は、例えば、算術論理ユニットおよび内部キャッシュを含むことができる。プロセッサ510は、非一時的なコンピュータ可読媒体(または機械可読媒体)を介して受け取った命令など、受け取った命令を使用することによって動作を実行することができる。プロセッサ510は、前述の任意のプロセッサに対応することができる。コントローラを設けてもよい。
上述の特徴は、図5に示す電気システム500内に提供されてもよい。
【0051】
またシステム500は、グラフィカルインターフェース540、チップセット550、キャッシュ560、ネットワークインターフェース570および無線通信ユニット580を含むことができる。無線通信ユニット580はネットワークインターフェース570内に組み込まれていてもよい。代替的にまたは追加的に、無線通信ユニット590は、プロセッサ510に結合されてもよく、メモリ530とプロセッサ510との間には直接接続が存在してもよい。
【0052】
プロセッサ510は、CPU、マイクロプロセッサ、またはその他の任意のタイプの処理回路または演算回路であってもよく、残りの機能のすべてまたは任意の組み合わせを有するチップダイに含まれてもよく、または残りの機能の1つまたは複数は、既知の接続およびインターフェースを介してマイクロプロセッサダイと電気的に結合していてもよい。図示されている接続は単なる例示であり、例えばチッププラットフォーム、機能またはアプリケーション要件に応じて、図示されている要素間のその他の接続が存在する可能性がある。
【0053】
少なくとも1つの実施形態では、プロセッサ510は、上述のようなシステムオンチップのようなチップ上に設けられてもよい。プロセッサは、メモリコントローラおよびグラフィックスデバイスなどのコンポーネントを含むことができ、および/またはそれらに結合されてもよい。
【0054】
少なくとも1つの実施形態において、コンピュータ可読媒体(または機械可読媒体)は、クロックゲートを制御するためのプログラムを格納することができる。プログラムはシステムメモリに格納されてもよい。システムメモリは、例えば、プロセッサの内部にあっても外部にあってもよい。プログラムは命令またはコードを含むことができる。
【0055】
プロセッサ(又はコントローラ)により実行される命令またはコードは、機械読み取り可能媒体、または一以上の電子的にアクセス可能な媒体などへのアクセスを提供するリモート接続(例えば、アンテナ及び/又はネットワークインターフェースを介してネットワークにより)を介してアクセスできる外部ストレージデバイスからメモリに提供されてもよい。機械読み取り可能媒体には、機械(例えば、コンピュータ)による読み取りが可能な形式で情報を提供(すなわち、格納及び/又は伝送)する任意のメカニズムが含まれる。例えば、機械読み取り可能媒体には、ランダムアクセスメモリ(RAM)、読出専用メモリ(ROM)、磁気または光記憶媒体、フラッシュメモリデバイス、電子的、光学的、音響的その他の形式の伝送信号(例えば搬送波、赤外線信号、デジタル信号等)などが含まれる。別の実施形態では、命令またはコードの替わりに、またはそれと組み合わせてハードワイヤード回路を用いてもよく、このように実施形態はハードウェア回路とソフトウェア命令との特定の組み合わせには限定されない。
【0056】
プログラムは、前述の実施形態で実行される動作または機能のどれを実行するコードまたは命令を含み得る。
【0057】
上記の実施形態の機能はタスクを実行するコードセグメントまたは命令で提供されてもよい。コードセグメントまたはタスクは、プロセッサ又はコントローラ可読媒体(または機械可読媒体)に記憶されても、または搬送波中の計算データ信号により伝送媒体または通信リンクを介して伝送されてもよい。プロセッサまたはコントローラ可読媒体、機械可読媒体、又はコンピュータ可読媒体は、情報を格納または伝送できる任意の媒体を含み得る。
【0058】
以下の例はさらに別の実施形態に関する。
【0059】
実施例1は、電子装置であって、クロック信号を供給するクロックデバイスと、前記クロック信号を受け取るクロックゲートであって、イネーブル状態またはディスエーブル状態で選択的に設けられるクロックゲートと、前記クロック信号の特定周波数を判定し、判定された特定周波数に基づいて前記クロックゲートを前記イネーブル状態またはディスエーブル状態になるように制御するコントローラとを有する。
【0060】
実施例2において、実施例1の主題は任意的に、前記クロックゲートがイネーブル状態であるとき、前記クロック信号を受け取る第1の論理ブロックをさらに有してもよい。
【0061】
実施例3において、実施例1及び実施例2の主題は任意的に、前記クロックゲートがイネーブル状態であるとき、前記クロック信号を受け取る第2の論理ブロックをさらに有してもよい。
【0062】
実施例4において、実施例1及び実施例2の主題は任意的に、前記クロックゲートがディスエーブル状態にあるとき、前記クロック信号は前記第1の論理ブロックで受け取られなくてもよい。
【0063】
実施例5において、実施例1及び実施例2の主題は任意的に、前記第1の論理ブロックは前記クロック信号の受け取りに応じて特定機能を実行してもよい。
【0064】
実施例6において、実施例1の主題は任意的に、前記コントローラは判定された新しい周波数に基づいて前記クロックゲートの状態を変更してもよい。
【0065】
実施例7において、実施例1の主題は任意的に、異なる複数の周波数に基づいて前記クロックゲートのイネーブルまたはディスエーブルに関する情報を記憶するメモリをさらに有してもよい。
【0066】
実施例8において、実施例1の主題は任意的に、前記コントローラは、帯域幅の大きさを決定し、決定された帯域幅の大きさに少なくとも部分的に基づいて特定周波数を決定してもよい。
【0067】
実施例9において、実施例1の主題は任意的に、前記コントローラは、新しい周波数を決定し、決定された新しい周波数に基づいて前記クロックゲートの状態を変更してもよい。
【0068】
実施例10は、電子装置であって、クロック信号を供給するクロック手段と、前記クロック信号を受け取るゲート手段であって、イネーブル状態またはディスエーブル状態で選択的に設けられるゲート手段と、前記クロック周波数の特定周波数を決定する制御手段であって、決定された特定周波数に基づいて前記ゲート手段をイネーブル状態またはディスエーブル状態に制御する制御手段とを有する。
【0069】
実施例11において、実施例10の主題は任意的に、前記ゲート手段がイネーブル状態であるとき、前記クロック信号を受け取る第1の論理ブロックをさらに有してもよい。
【0070】
実施例12において、実施例10及び実施例11の主題は任意的に、前記ゲート手段がイネーブル状態であるとき、前記クロック信号を受け取る第2の論理ブロックをさらに有してもよい。
【0071】
実施例13において、実施例10及び実施例11の主題は任意的に、前記ゲート手段がディスエーブル状態にあるとき、前記クロック信号は前記第1の論理ブロックで受け取られなくてもよい。
【0072】
実施例14において、実施例10及び実施例11の主題は任意的に、前記第1の論理ブロックは前記クロック信号の受け取りに応じて特定機能を実行してもよい。
【0073】
実施例15において、実施例10の主題は任意的に、前記制御手段は判定された新しい周波数に基づいて前記ゲート手段の状態を制御してもよい。
【0074】
実施例16において、実施例10の主題は任意的に、異なる複数の周波数に基づいて前記ゲート手段のイネーブルまたはディスエーブルに関する情報を記憶する記憶手段をさらに有してもよい。
【0075】
実施例17において、実施例10の主題は任意的に、前記制御手段は、帯域幅の大きさを決定し、決定された帯域幅の大きさに少なくとも部分的に基づいて特定周波数を決定してもよい。
【0076】
実施例18において、実施例10の主題は任意的に、前記制御手段は、新しい周波数を決定し、決定された新しい周波数に基づいて前記クロックゲートの状態を変更してもよい。
【0077】
実施例19は、電子装置を制御する方法であって、クロック信号を供給することと、前記クロック信号の特定の周波数を決定することと、決定された特定の周波数に基づいて、イネーブル状態またはディスエーブル状態になるようクロックゲートを制御することと、前記クロックゲートが選択的にイネーブル状態であるとき、前記クロック信号を第1の論理ブロックに供給することと、前記クロックゲートが前記ディスエーブル状態に選択的に設けられている場合、前記クロック信号が前記第1の論理ブロックに到達しないようにすることとを含む。
【0078】
実施例20において、実施例19の主題は任意的に、前記クロックゲートがイネーブル状態であるとき、前記第1の論理ブロックが、前記クロック信号を受け取ることをさらに含んでいてもよい。
【0079】
実施例21において、実施例19及び実施例20の主題は任意的に、前記クロックゲートがイネーブル状態であるとき、前記第2の論理ブロックが、前記クロック信号を受け取ることをさらに含んでいてもよい。
【0080】
実施例22において、実施例19及び実施例20の主題は任意的に、前記クロックゲートがディスエーブル状態にあるとき、前記クロック信号は前記第1の論理ブロックで受け取られなくてもよい。
【0081】
実施例23において、実施例19及び実施例20の主題は任意的に、前記第1の論理ブロックが前記クロック信号を受け取ることに応じて、特定機能を実行することを含んでも良い。
【0082】
実施例24において、実施例19の主題は任意的に、前記クロックゲートを制御することは、決定された新しい周波数に基づいてもよい。
【0083】
実施例25において、実施例19の主題は任意的に、異なる複数の周波数に基づいて前記クロックゲートのイネーブルまたはディスエーブルに関する情報を記憶することを含んでもよい。
【0084】
実施例26において、実施例19の主題は任意的に、帯域幅の大きさを決定することと、決定された帯域幅の大きさに少なくとも部分的に基づいて特定周波数を決定することとを含んでもよい。
【0085】
実施例27において、実施例19の主題は任意的に、新しい周波数を決定することと、決定された新しい周波数に基づいて前記クロックゲートの状態を変更することとを含んでもよい。
【0086】
実施例28は、電子装置であって、複数の周波数に関する情報を記憶するメモリと、クロック信号を供給するクロックデバイスと、イネーブル状態またはディスエーブル状態で選択的にもうけられるクロックゲートと、記憶された情報に基づいて特定周波数を判定し、判定された特定周波数に基づいて前記クロックゲートを前記イネーブル状態またはディスエーブル状態になるように制御するコントローラと、前記クロックゲートがイネーブル状態に設けられている場合、前記クロックゲートからクロック信号を受け取る第1の論理ブロックであって、受け取ったクロック信号に基づいて特定の機能を実行する第1の論理ブロックとを有してもよい。
【0087】
実施例29において、実施例28の主題は任意的に、前記クロックゲートがイネーブル状態であるとき、前記クロック信号を受け取る第2の論理ブロックをさらに有してもよい。
【0088】
実施例30において、実施例28の主題は任意的に、前記クロックゲートがディスエーブル状態にあるとき、前記クロック信号は前記第1の論理ブロックで受け取られなくてもよい。
【0089】
実施例31において、実施例28の主題は任意的に、前記メモリは、記憶された複数の周波数に基づいて前記クロックゲートのイネーブルまたはディスエーブルに関する情報を記憶してもよい。
【0090】
実施例32において、実施例28の主題は任意的に、前記コントローラは、帯域幅の大きさを決定し、決定された帯域幅の大きさに少なくとも部分的に基づいて特定周波数を決定してもよい。
【0091】
実施例33において、実施例28の主題は任意的に、前記コントローラは、新しい周波数を決定し、決定された新しい周波数に基づいて前記クロックゲートの状態を変更してもよい。
【0092】
実施例34は、電子装置であって、特定周波数を決定する、その少なくとも一部はハードウェアである第1のロジックと、決定された特定周波数に基づいて、クロックゲートをイネーブル状態またはディスエーブル状態にするように制御する、少なくともその一部はハードウェアである第2のロジックとを有する。
【0093】
実施例35において、実施例34の主題は任意的に、前記クロックゲートがイネーブル状態であるとき、前記クロック信号を受け取る第1の論理ブロックをさらに有してもよい。
【0094】
実施例36において、実施例34及び実施例35の主題は任意的に、前記クロックゲートがイネーブル状態であるとき、前記クロック信号を受け取る第2の論理ブロックをさらに有してもよい。
【0095】
実施例37において、実施例34及び実施例35の主題は任意的に、前記クロックゲートがディスエーブル状態にあるとき、前記クロック信号は前記第1の論理ブロックで受け取られなくてもよい。
【0096】
実施例38において、実施例34及び実施例35の主題は任意的に、前記第1の論理ブロックは前記クロック信号の受け取りに応じて特定機能を実行してもよい。
【0097】
実施例39において、実施例34の主題は任意的に、異なる複数の周波数に基づいて前記クロックゲートのイネーブルまたはディスエーブルに関する情報を記憶するメモリをさらに有してもよい。
【0098】
実施例40において、実施例34の主題は任意的に、前記第1のロジックは、帯域幅の大きさを決定し、決定された帯域幅の大きさに少なくとも部分的に基づいて特定周波数を決定してもよい。
【0099】
実施例41において、実施例34の主題は任意的に、前記第1のロジックは、新しい周波数を決定し、決定された新しい周波数に基づいて前記クロックゲートの状態を変更する、
実施例42は、1つまたは複数の命令を含む非一時的な機械可読媒体であって、実行されるとコントローラに1つまたは複数の動作を実行させて、クロック信号の特定の周波数を決定し、クロック信号の決定された特定の周波数に基づいて、イネーブル状態またはディスエーブル状態になるようクロックゲートを制御する。
【0100】
実施例43において、実施例42の主題は任意的に、第1の論理ブロックは、前記クロックゲートがイネーブル状態であるとき、前記クロック信号を受け取ってもよい。
【0101】
実施例44において、実施例42及び実施例43の主題は任意的に、第2の論理ブロックは、前記クロックゲートがイネーブル状態であるとき、前記クロック信号を受け取ってもよい。
【0102】
実施例45において、実施例42及び実施例43の主題は任意的に、前記クロックゲートがディスエーブル状態にあるとき、前記クロック信号は前記第1の論理ブロックで受け取られなくてもよい。
【0103】
実施例46において、実施例42及び実施例43の主題は任意的に、前記第1の論理ブロックは前記クロック信号の受け取りに応じて特定機能を実行してもよい。
【0104】
実施例47において、実施例42の主題は任意的に、前記1つまたは複数の動作は、帯域幅の大きさを決定し、決定された帯域幅の大きさに少なくとも部分的に基づいて特定周波数を決定してもよい。
【0105】
実施例48において、実施例42の主題は任意的に、前記1つまたは複数の動作は、新しい周波数を決定し、決定された新しい周波数に基づいて前記クロックゲートの状態を変更してもよい。
【0106】
本明細書において「一実施形態」とは、その実施形態に関して説明する機能、構造、特徴が少なくとも1つの実施形態に含まれることを意味している。本明細書ではいろいろな箇所でかかるフレーズを記載するが、必ずしも同じ実施形態を指すものではない。さらに、ある機能、構造、または特徴をある実施形態について説明した場合、他の実施形態に関するそれらの機能、構造、または特徴に影響が及ぶことは、当業者には自明である。
【0107】
多くの例示を参照して実施形態を説明したが、言うまでもなく、当業者にはその他の多数の修正や実施形態を工夫でき、それらは本開示の原理の精神と範囲内に含まれる。より具体的には、本開示、図面、及び特許請求の範囲において、主題の組み合わせ構成のコンポーネントパーツ及び/又は構成においてさまざまなバリエーション及び修正が可能である。また、コンポーネントパーツ及び/又は構成におけるバリエーションと修正に加えて、代替的利用も当業者には明らかである。
図1
図2
図3
図4
図5