(57)【特許請求の範囲】
【請求項１】
複数のプロセッサと、
入力クロック信号を生成するように構成されたクロックデバイスと、
前記クロックデバイスから前記入力クロック信号を受信し、前記入力クロック信号に基づいて前記複数のプロセッサに出力クロック信号を出力するように構成された周波数調整器と、
前記プロセッサのうちの１つまたは複数の他のプロセッサがアクティブモードにある間、アイドルモードにある前記プロセッサのうちの１つまたは複数をアクティブ化するための信号を受信するように構成された電力マネージャと、ここにおいて、前記信号に応答して、前記電力マネージャは、前記出力クロック信号の周波数を第１のクロック周波数から第２のクロック周波数に低減するように前記周波数調整器に命令し、前記出力クロック信号の前記周波数が前記第２のクロック周波数にある間、前記アイドルモードにある前記プロセッサのうちの前記１つまたは複数をアクティブ化し、前記プロセッサのうちの前記１つまたは複数がアクティブ化された後に、前記出力クロック信号の前記周波数を前記第２のクロック周波数から前記第１のクロック周波数に増加させるように前記周波数調整器に命令するように構成された、
を備える、処理システム。
【請求項２】
前記第１のクロック周波数が、前記入力クロック信号の周波数にほぼ等しい、請求項１に記載の処理システム。
【請求項３】
前記第２のクロック周波数が、前記第１のクロック周波数の２０％から８０％の間である、請求項２に記載の処理システム。
【請求項４】
前記電力マネージャが、前記プロセッサのうちの前記１つまたは複数中の内部クロック経路をアンゲートすることによって、前記プロセッサのうちの前記１つまたは複数をアクティブ化するように構成された、請求項１に記載の処理システム。
【請求項５】
前記周波数調整器が、前記入力クロック信号のパルスを選択的にスワローすることによって前記出力クロック信号の前記周波数を低減するように構成された、請求項１に記載の処理システム。
【請求項６】
前記周波数調整器が、前記入力クロック信号の周波数を分割することによって前記出力クロック信号の前記周波数を低減するように構成された、請求項１に記載の処理システム。
【請求項７】
前記プロセッサのうちの前記１つまたは複数をアクティブ化するための前記信号が中断信号を備える、請求項１に記載の処理システム。
【請求項８】
前記電力マネージャが、中断まで待機（ＷＦＩ）命令の実行に応答して前記プロセッサのうちの前記１つまたは複数を前記アイドルモードに入れるように構成され、前記中断信号は、前記プロセッサのうちの前記１つまたは複数が前記アイドルモードに入れられた後に受信される、請求項７に記載の処理システム。
【請求項９】
前記電力マネージャは、前記信号に応答してアクティブ化されるべき前記プロセッサのうちの前記１つまたは複数と、前記信号が受信された時間において前記アクティブモードにある前記プロセッサのうちの前記１つまたは複数の他のプロセッサとに基づいて、前記第２のクロック周波数を決定するように構成された、請求項１に記載の処理システム。
【請求項１０】
前記電力マネージャが、前記第１のクロック周波数に基づいて前記第２のクロック周波数を決定するようにさらに構成された、請求項９に記載の処理システム。
【請求項１１】
複数のプロセッサにおいて１つまたは複数のプロセッサをアクティブ化するための方法であって、
前記複数のプロセッサのうちの１つまたは複数の他のプロセッサがアクティブモードにある間、アイドルモードにある前記１つまたは複数のプロセッサをアクティブ化するための信号を受信することと、
前記信号に応答して、クロック信号の周波数を第１のクロック周波数から第２のクロック周波数に低減することと、ここにおいて、前記クロック信号が、前記アイドルモードにある前記１つまたは複数のプロセッサと、前記アクティブモードにある前記プロセッサのうちの前記１つまたは複数の他のプロセッサとを含む前記複数のプロセッサに出力される、
前記信号に応答して、前記クロック信号の前記周波数が低減された後に前記アイドルモードにある前記１つまたは複数のプロセッサをアクティブ化することと、
前記１つまたは複数のプロセッサがアクティブ化された後に前記クロック信号の前記周波数を前記第２のクロック周波数から前記第１のクロック周波数に増加させることと
を備える、方法。
【請求項１２】
前記第２のクロック周波数が、前記第１のクロック周波数の２０％から８０％の間である、請求項１１に記載の方法。
【請求項１３】
前記１つまたは複数のプロセッサをアクティブ化することが、前記１つまたは複数のプロセッサ中の内部クロック経路をアンゲートすることを備える、請求項１１に記載の方法。
【請求項１４】
中断まで待機（ＷＦＩ）命令の実行に応答して前記１つまたは複数のプロセッサを前記アイドルモードに入れること
をさらに備え、
ここにおいて、前記信号が、中断信号である、請求項１１に記載の方法。
【請求項１５】
前記１つまたは複数のプロセッサと、前記第２のクロック周波数の決定が行われる時間においてすでに前記アクティブモードにある前記複数のプロセッサのうちの前記１つまたは複数の他のプロセッサとに基づいて、前記第２のクロック周波数を決定することをさらに備え、ここにおいて、前記第２のクロック周波数を決定することが、前記第１のクロック周波数に基づいて前記第２のクロック周波数を決定することをさらに備える、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[0001]本出願は、その内容全体が参照により本明細書に組み込まれる、２０１５年８月３日に米国特許商標庁に出願された非仮出願第１４／８１７，１７８号の優先権および利益を主張する。
【０００２】
[0002]本開示の態様は、一般に配電網（ＰＤＮ：power distribution network）に関し、より詳細には、ＰＤＮドループ／オーバーシュート緩和(droop/overshoot mitigation)に関する。
【背景技術】
【０００３】
[0003]チップが、チップ上の１つまたは複数のプロセッサへの電力を管理する電力マネージャを含み得る。たとえば、電力マネージャは、電力を温存するために、プロセッサが使用されていないとき、チップ上のプロセッサをアイドルモードに入れ得る。プロセッサが後で必要とされたとき、電力マネージャは、プロセッサをアクティブモードに入れるためにプロセッサを起動し得る。
【発明の概要】
【０００４】
[0004]以下は、１つまたは複数の実施形態の基本的理解を与えるために、そのような実施形態の簡略化された概要を提示する。この概要は、すべての企図された実施形態の包括的な概観ではなく、すべての実施形態の主要または重要な要素を識別するものでも、いずれかまたはすべての実施形態の範囲を定めるものでもない。その唯一の目的は、後で提示されるより詳細な説明の導入として、１つまたは複数の実施形態のいくつかの概念を簡略化された形で提示することである。
【０００５】
[0005]一態様によれば、処理システムが本明細書で説明される。本処理システムは、複数のプロセッサと、入力クロック信号を生成するように構成されたクロックデバイスと、クロックデバイスから入力クロック信号を受信し、入力クロック信号に基づいて複数のプロセッサに出力クロック信号を出力するように構成された周波数調整器とを備える。本処理システムは、プロセッサのうちの１つまたは複数をアクティブにする（active）ための信号を受信するように構成された電力マネージャをも備え、ここにおいて、信号に応答して、電力マネージャは、出力クロック信号の周波数を第１のクロック周波数から第２のクロック周波数に低減するように周波数調整器に命令し、出力クロック信号の周波数が第２のクロック周波数にある間、プロセッサのうちの１つまたは複数をアクティブにし、プロセッサのうちの１つまたは複数がアクティブ化された後に、出力クロック信号の周波数を第２のクロック周波数から第１のクロック周波数に増加させるように周波数調整器に命令するように構成される。
【０００６】
[0006]第２の態様は、１つまたは複数のプロセッサをアクティブ化するための方法に関する。本方法は、クロック信号の周波数を第１のクロック周波数から第２のクロック周波数に低減することを備え、ここにおいて、クロック信号は、１つまたは複数のプロセッサを含む複数のプロセッサに出力される。本方法はまた、クロック信号の周波数が低減された後に１つまたは複数のプロセッサをアクティブ化することと、１つまたは複数のプロセッサがアクティブ化された後に、クロック信号を第２のクロック周波数から第１のクロック周波数に増加させることとを備える。
【０００７】
[0007]第３の態様は、１つまたは複数のプロセッサをアクティブ化するための装置に関する。本装置は、クロック信号の周波数を第１のクロック周波数から第２のクロック周波数に低減するための手段を備え、ここにおいて、クロック信号は、１つまたは複数のプロセッサを含む複数のプロセッサに出力される。本装置はまた、クロック信号の周波数が低減された後に１つまたは複数のプロセッサをアクティブ化するための手段と、１つまたは複数のプロセッサがアクティブ化された後に、クロック信号を第２のクロック周波数から第１のクロック周波数に増加させるための手段とを備える。
【０００８】
[0008]上記および関連する目的を達成するために、１つまたは複数の実施形態は、以下で十分に説明され、特に特許請求の範囲で指摘される特徴を備える。以下の説明および添付の図面は、１つまたは複数の実施形態のいくつかの例示的な態様を詳細に記載する。ただし、これらの態様は、様々な実施形態の原理が採用され得る様々な方法のほんのいくつかを示すものであり、説明される実施形態は、すべてのそのような態様およびそれらの均等物を含むものとする。
【図面の簡単な説明】
【０００９】
【図１】[0009]電力管理をもつ例示的なマルチコア処理システムを示す図。
【図２】[0010]本開示の一実施形態による、電力管理をもつ例示的なマルチコア処理システムを示す図。
【図３Ａ】[0011]本開示の一実施形態による、１つまたは複数のプロセッサのアクティブ化中の例示的なクロック信号を示す図。
【図３Ｂ】[0012]本開示の一実施形態による、図３Ａ中のクロック信号のうちの１つの周波数を経時的に示す図。
【図４】[0013]本開示の一実施形態による、周波数ランプダウンの一例を示す図。
【図５】[0014]本開示の一実施形態による、周波数ランプアップの一例を示す図。
【図６】[0015]本開示の一実施形態による、周波数ランプダウンおよび周波数ランプアップの一例を示す図。
【図７】[0016]本開示の一実施形態による、電力マネージャに結合されたタイマーの一例を示す図。
【図８】[0017]本開示の一実施形態による、温度コントローラおよび電流コントローラの一例を示す図。
【図９】[0018]本開示の一実施形態による、複数のクロックソースを備えるクロックデバイスの一例を示す図。
【図１０】[0019]本開示の一実施形態による、１つまたは複数のプロセッサがアクティブ化される例示的なタイムラインを示す図。
【図１１】[0020]本開示の一実施形態による、複数のクロック信号を出力することが可能なクロックデバイスの一例を示す図。
【図１２】[0021]本開示の一実施形態による、例示的なクロックゲーティング回路を示す図。
【図１３】[0022]本開示の一実施形態による、１つまたは複数のプロセッサをアクティブ化するための方法を示す流れ図。
【発明を実施するための形態】
【００１０】
[0023]添付の図面に関して以下に記載される発明を実施するための形態は、様々な構成を説明するものであり、本明細書で説明される概念が実施され得る構成のみを表すものではない。発明を実施するための形態は、様々な概念の完全な理解を与えるための具体的な詳細を含む。ただし、これらの概念はこれらの具体的な詳細なしに実施され得ることが当業者には明らかであろう。いくつかの事例では、そのような概念を不明瞭にしないように、よく知られている構造および構成要素がブロック図の形式で示される。
【００１１】
[0024]図１は、第１のプロセッサ１１５（１）と、第２のプロセッサ１１５（２）と、第３のプロセッサ１１５（３）と、第４のプロセッサ１１５（４）とを備えるマルチコア処理システム１０５（たとえば、クワッドコア処理システム）の一例を示す。各プロセッサは、プロセッサコア、処理ユニットまたは他の用語で呼ばれることもある。処理システム１０５は、（「Ｃｌｋ」と示される）クロック信号を生成し、それをプロセッサ１１５（１）〜１１５（４）に出力するクロックデバイス１１０をも備える。クロックデバイス１１０は、たとえば、（たとえば、水晶発振器からの）基準クロック信号の周波数に所望の量を乗算す-ることによってクロック信号Ｃｌｋを生成する位相ロックループ（ＰＬＬ：phase-locked loop）を備え得る。各プロセッサは、プロセッサ中の論理ゲート（たとえば、トランジスタ）をスイッチングするためにクロック信号Ｃｌｋを使用し得る。
【００１２】
[0025]プロセッサ１１５（１）〜１１５（４）は、ＰＤＮ（図示せず）を介して外部電源（図示せず）から電力を受信し得る。外部電源は、電力管理集積回路（ＰＭＩＣ：power management integrated circuit）または別の電源を備え得る。また、他のデバイス（たとえば、論理デバイス、Ｉ／Ｏインターフェース、モデム、メモリなど）が、外部電源から電力を受信するためにＰＤＮに結合され得る。たとえば、処理システム１０５は、他のデバイスをも含むモバイルデバイス中に含まれ得る。
【００１３】
[0026]処理システム１０５は、処理システム１０５のための電力を管理するように構成された電力マネージャ１２０をさらに備える。この点について、電力マネージャ１２０は、電力を温存するために、プロセッサが使用されていないとき、プロセッサ１１５（１）〜１１５（４）のいずれか１つを（スリープモードとも呼ばれる）アイドルモードに入れ得る。プロセッサが後で必要とされたとき、電力マネージャ１２０は、プロセッサをアクティブモードに入れ得る。所与の時間において、任意の数（たとえば、０〜すべて）のプロセッサ１１５（１）〜１１５（４）がアイドルモードにあり得る。したがって、電力マネージャ１２０は、プロセッサ１１５（１）〜１１５（４）のアイドル／アクティブモードを管理することによって、処理システム１０５の電力を管理する。
【００１４】
[0027]プロセッサがアイドルモードにあるとき、プロセッサの内部クロック経路がゲートされ、これは、クロック信号Ｃｌｋが内部クロック経路を介してプロセッサ中の論理ゲートに伝搬するのを防ぐ。これは、論理ゲートによるスイッチングアクティビティを停止し、それにより、プロセッサの動的電力消費を著しく低減する。プロセッサがアクティブモードにあるとき、内部クロック経路はアンゲート（un-gate）され、クロック信号Ｃｌｋがプロセッサ中の論理ゲートに伝搬することが可能になる。アクティブモードでは、プロセッサは、命令をフェッチ、復号および／または実行し得る。
【００１５】
[0028]一例では、プロセッサは、プロセッサをアイドルモードに入れることを電力マネージャ１２０に要求する信号を電力マネージャ１２０に送り得る。プロセッサは、たとえば、中断まで待機（ＷＦＩ：wait-for-interrupt）またはイベントまで待機（ＷＦＥ：wait-for-event）命令を実行すると、信号を送り得る。プロセッサはまた、プロセッサが実行を現在待っているタスクを有しないとき、信号を送り得る。信号に応答して、電力マネージャ１２０は、プロセッサをアクティブモードからアイドルモードに遷移させ得る。電力マネージャ１２０は、電力マネージャ１２０が中断信号を受信するか、または特定のイベントが発生したとき、プロセッサをアクティブモードに後で遷移させ得る。
【００１６】
[0029]図１中の処理システム１０５に関する問題は、プロセッサがアイドルモードからアクティブモードに遷移するとき、プロセッサが、フルクロック周波数（すなわち、クロック信号Ｃｌｋの周波数）においてスイッチングアクティビティを直ちに再開し得ることである。これは、プロセッサ１１５（１）〜１１５（４）によって共有されるＰＤＮ上の電流負荷を急激に変化させ、ＰＤＮ上の電源電圧をドループさせることがある。電圧ドループが十分に大きい場合、電圧ドループは、他のプロセッサが誤動作すること、および／またはＰＤＮに結合された他のデバイス（図示せず）が誤動作することを引き起こし得る。電圧ドループは、２つまたはそれ以上のプロセッサがほぼ同時にアイドルモードからアクティブモードに遷移する場合、より悪くなり得る。したがって、１つまたは複数のプロセッサのアクティブ化によって引き起こされるＰＤＮ上の電圧ドループを緩和する必要がある。
【００１７】
[0030]図２は、本開示の一実施形態による、マルチコア処理システム２０５を示す。処理システム２０５は、さらに、電力マネージャ２２０の制御下でクロック信号Ｃｌｋの周波数を調整可能な量だけ低減するように構成されたクロック周波数調整器２１０を備える。一例では、クロック周波数調整器２１０は、クロック信号Ｃｌｋのパルスを選択的にスワローする（swallow）ことによってクロック信号Ｃｌｋの周波数を低減するパルススワロワ（swallower）を備え得る。たとえば、パルススワロワは、クロック信号Ｃｌｋの１つおきのパルスをスワローすることによって、クロック信号Ｃｌｋの周波数を５０％だけ低減し得る。別の例では、クロック周波数調整器２１０は、クロック信号Ｃｌｋの周波数を調整可能な量（除数）で除算することによってクロック信号Ｃｌｋの周波数を低減する周波数分割器（たとえば、フラクショナル周波数分割器）を備え得る。たとえば、周波数分割器は、クロック信号Ｃｌｋの周波数を２で除算することによって、クロック信号Ｃｌｋの周波数を５０％だけ低減し得る。
【００１８】
[0031]一実施形態では、電力マネージャ２２０は、以下でさらに説明されるように、プロセッサ１１５（１）〜１１５（４）のうちの少なくとも１つがアクティブモードにあり、他のプロセッサ１１５（１）〜１１５（４）のいずれもアイドルモードとアクティブモードとの間で遷移するプロセスにないとき、クロック信号Ｃｌｋを受け渡すように周波数調整器２１０に命令するように構成され得る。この場合、周波数調整器２１０によってプロセッサ１１５（１）〜１１５（４）に出力された（「Ｃｌｋ＿ｏｕｔ」と示される）クロック信号は、クロックデバイス１１０からのクロック信号Ｃｌｋと同じである。
【００１９】
[0032]プロセッサ１１５（１）〜１１５（４）のうちの１つまたは複数が（たとえば、中断信号またはイベントに応答して）アイドルモードからアクティブモードに遷移すべきであり、プロセッサ１１５（１）〜１１５（４）のうちの１つまたは複数の他のプロセッサがすでにアクティブモードにあるとき、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数をあらかじめ決定された量だけ低減するように周波数調整器２１０に命令し得る。以下で説明されるように、クロック周波数のこの低減は、１つまたは複数のプロセッサがアクティブ化されるときのＰＤＮ上の電圧ドループを低減する。
【００２０】
[0033]クロック周波数が低減された後に、電力マネージャ２２０は、１つまたは複数のプロセッサをアクティブ化するために１つまたは複数のプロセッサの内部クロック経路をアンゲートする。これは、１つまたは複数のプロセッサ中の論理ゲートが、クロック信号Ｃｌｋ＿ｏｕｔを使用してスイッチングを開始することを引き起こす。時間期間が経過した後に、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数（すなわち、クロックデバイス１１０からのクロック信号Ｃｌｋの周波数）に増加させるように周波数調整器２１０に命令する。時間期間は、以下でさらに説明される１つまたは複数のファクタに基づき得る。
【００２１】
[0034]したがって、電力マネージャ２２０は、１つまたは複数のプロセッサをアクティブ化するより前に、プロセッサ１１５（１）〜１１５（４）へのクロック信号Ｃｌｋ＿ｏｕｔの周波数を低減する。クロック周波数が低減された後に、電力マネージャ２２０は、１つまたは複数のプロセッサをアクティブにするために１つまたは複数のプロセッサの内部クロック経路をアンゲートする。時間期間が経過した後に、電力マネージャ１２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数に増加させるように周波数調整器２１０に命令する。クロック周波数の一時的低減は、１つまたは複数のプロセッサがアクティブ化されるときの電流負荷の変化におけるレートを低減する。これは、１つまたは複数のプロセッサがアクティブ化されるときのＰＤＮ上の電圧ドループを低減する。
【００２２】
[0035]図３Ａは、本開示の一実施形態による、クロックデバイス１１０からのクロック信号Ｃｌｋと周波数調整器２１０によって出力されたクロック信号Ｃｌｋ＿ｏｕｔとの例示的なタイムラインを示す。この例では、プロセッサのうちの１つまたは複数は、他のプロセッサのうちの１つまたは複数がすでにアクティブモードにある間、アイドルモードからアクティブモードに遷移する。最初に、クロック信号Ｃｌｋ＿ｏｕｔは、フルクロック周波数（すなわち、クロックデバイス１１０からのクロック信号Ｃｌｋの周波数）にある。時間ｔ１において、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数を２５％だけ低減して、フルクロック周波数の約７５％に等しい周波数にするように周波数調整器２１０に命令する。電力マネージャ２２０は、以下でさらに説明されるように、たとえば、中断信号またはイベントに応答してこれを行い得る。図３Ａに示されている例では、周波数調整器２１０は、クロックデバイス１１０からのクロック信号Ｃｌｋの４つごとのパルスの中から１つをスワローすることによって、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数の７５％に低減する。
【００２３】
[0036]周波数が低減された後に、電力マネージャ２２０は、時間ｔ２において、１つまたは複数のプロセッサをアクティブ化するために１つまたは複数のプロセッサの内部クロック経路をアンゲートする。これは、１つまたは複数のプロセッサ中の論理ゲートが、クロック信号Ｃｌｋ＿ｏｕｔを使用してスイッチングを開始することを引き起こす。電力マネージャ２２０は、時間ｔ３においてクロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数に増加させるように周波数調整器２１０に命令する前に、（図３Ａ中で「待機時間」と標示される）時間期間の間待機する。
【００２４】
[0037]図３Ｂは、図３Ａ中の例のために、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数の割合として示す。図３Ｂに示されているように、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、１つまたは複数のプロセッサのアクティブ化より前である時間ｔ１において、フルクロック周波数の７５％に低減される。１つまたは複数のプロセッサの内部クロック経路がアンゲートされた後に、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、時間ｔ３においてフルクロック周波数に復元される。
【００２５】
[0038]図３Ａ中の待機時間が、図３Ａに示されているクロック信号Ｃｌｋのサイクル（期間）よりも多くのサイクルにわたり得ることを諒解されたい。さらに、図３Ａは、クロック信号Ｃｌｋ＿ｏｕｔの周波数がクロックパルススワロー（clock pulse swallowing）を使用して低減される一例を示すが、クロック信号Ｃｌｋ＿ｏｕｔの周波数はまた、クロック信号Ｃｌｋの周波数を分割することによって低減され得ることを諒解されたい。また、本開示は、クロック信号Ｃｌｋ＿ｏｕｔがフルクロック周波数の７５％に低減される例に限定されず、クロック信号Ｃｌｋ＿ｏｕｔの周波数がフルクロック周波数の他の割合に低減され得ることを諒解されたい。たとえば、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数の２０％から８０％の間の周波数、またはフルクロック周波数の５０％〜８０％に低減され得る。
【００２６】
[0039]一実施形態では、電力マネージャ２２０は、アクティブ化されるべきであるプロセッサの数および／またはすでにアクティブモードにあるプロセッサの数に応じて、クロック信号Ｃｌｋ＿ｏｕｔの周波数を異なる量だけ低減し得る。たとえば、電力マネージャ２２０は、異なるシナリオをリストするテーブルをメモリ中に含み得、ここで、各シナリオは、アクティブ化されるべきである１つまたは複数のプロセッサおよび／またはすでにアクティブモードにある１つまたは複数の他のプロセッサに対応する。各シナリオについて、テーブルは、クロック信号Ｃｌｋ＿ｏｕｔのための対応する低減された周波数（たとえば、フルクロック周波数の７５％）を示し得る。
【００２７】
[0040]この例では、１つまたは複数のプロセッサがアクティブ化されるべきであるとき、電力マネージャ２２０は、アクティブ化されるべき１つまたは複数のプロセッサおよび／またはすでにアクティブモードにある１つまたは複数の他のプロセッサに基づいて、テーブル中のどのシナリオが適用されるかを決定し得る。適用可能なシナリオを決定した後に、電力マネージャ２２０は、テーブル中の対応する低減された周波数（たとえば、フルクロック周波数の７５％）をルックアップし、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、テーブル中の対応する低減された周波数に低減するように周波数調整器２１０に命令し得る。
【００２８】
[0041]テーブルは経験的に生成され得る。たとえば、各シナリオについて、ＰＤＮ上の電圧ドループは、（たとえば、テスト環境において外部測定デバイスによって）異なる低減された周波数について測定され得る。次いで、各測定された電圧ドループは、電圧ドループ限界（たとえば、ＰＤＮに結合されたプロセッサおよび／または他のデバイスによって、誤動作することなしに許容され得る電圧ドループの量）と比較され得る。この例では、電圧ドループ限界内の電圧ドループを生じる低減された周波数のうちの１つが、シナリオのために選定され、テーブルに記憶され得る。一態様では、電圧ドループ限界内の電圧ドループを生じる低減された周波数のうちの最も大きい周波数が、シナリオのために選定され、テーブルに記憶され得る。これは、クロック信号Ｃｌｋ＿ｏｕｔの周波数が低減されたときの性能損失を最小限に抑えるために行われ得る。したがって、各シナリオのための低減された周波数は、経験的に決定され、電力マネージャ２２０による後の使用のためにテーブルに記憶され得る。
【００２９】
[0042]一実施形態では、クロック信号Ｃｌｋ＿ｏｕｔの周波数が低減された周波数に低減されるべきであるとき、電力マネージャ２２０は、フルクロック周波数から対応する低減された周波数にジャンプする代わりに、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、フルクロック周波数から対応する低減された周波数にランプダウンするように周波数調整器２１０に命令し得る。これは、以下でさらに説明されるように、ＰＤＮ上の電圧オーバーシュートを緩和するために行われ得る。
【００３０】
[0043]クロック信号Ｃｌｋ＿ｏｕｔの周波数を低減することは、アクティブモードにある１つまたは複数のプロセッサからのＰＤＮ上の電流負荷を減少させる。電流負荷の減少は、ＰＤＮ上の電圧オーバーシュートを引き起こし、オーバーシュートの量は、電流負荷が減少するレートに依存し、より高いレートは、概して、より大きいオーバーシュートに対応する。クロック信号Ｃｌｋの周波数をランプダウンすることによって、電力マネージャ２２０は、電流負荷が減少するレートを低減し、それにより、オーバーシュートが低減する。
【００３１】
[0044]この点について、図４は、クロック信号Ｃｌｋ＿ｏｕｔの周波数がフルクロック周波数の５０％に低減される一例のために、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数の割合として経時的に示す。この例では、電力マネージャ２２０は、１つまたは複数のプロセッサがアクティブ化されるべきであり、１つまたは複数の他のプロセッサがすでにアクティブモードにあるとき、クロック信号Ｃｌｋ＿ｏｕｔを低減し得る。図４に示されているように、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、複数のステップにおいてランプダウンされ、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、各後続のステップにおいてより低い周波数に低減される。クロック信号Ｃｌｋ＿ｏｕｔの周波数は、この例における１つまたは複数のプロセッサがアクティブ化される前に、フルクロック周波数の５０％にランプダウンされる。
【００３２】
[0045]第１のステップにおいて、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数の８７．５％に低減される。これは、たとえば、クロック信号Ｃｌｋの８つのパルスごとに１つのパルスをスワローすることによって行われ得る。第２のステップにおいて、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数の７５％に低減される。第３のステップにおいて、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数の６７．５％に低減される。これは、たとえば、クロック信号Ｃｌｋの８つのパルスごとに３つのパルスをスワローすることによって行われ得る。最終的に、第４のステップにおいて、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数の５０％に低減される。各ステップの持続時間はあらかじめ決定され得る。クロック信号Ｃｌｋ＿ｏｕｔの周波数がフルクロック周波数の５０％に低減された後に、電力マネージャ２２０は、１つまたは複数のプロセッサをアクティブ化するために１つまたは複数のプロセッサの内部クロック経路をアンゲートし得る。
【００３３】
[0046]したがって、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、複数のステップにわたってランプダウンされ、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、各後続のステップにおいてより低い周波数に低減される。上記の図４の説明がクロックパルススワローの例を使用するが、本開示はこの例に限定されないことを諒解されたい。たとえば、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、周波数分割器を使用してランプダウンされ得る。この例では、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、クロック信号Ｃｌｋの周波数を増加する量（除数）で除算することによってランプダウンされ得る。
【００３４】
[0047]上記で説明されたように、電力マネージャ２２０は、異なるシナリオをリストするテーブルをメモリ中に含み得、ここで、各シナリオは、アクティブ化されるべきである１つまたは複数のプロセッサおよび／またはすでにアクティブモードにある１つまたは複数の他のプロセッサに対応する。各シナリオについて、テーブルは、クロック信号Ｃｌｋ＿ｏｕｔのための対応する低減された周波数（たとえば、フルクロック周波数の５０％）を示し得る。各シナリオについて、テーブルは、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、フルクロック周波数から対応する低減された周波数にランプダウンするための対応するランプダウンシーケンスをも示し得る。ランプダウンシーケンスは、フルクロック周波数と対応する低減された周波数との間の中間周波数のシーケンスを指定し得、中間周波数は、最も高い周波数から最も低い周波数に順序付けられ得る。
【００３５】
[0048]この例では、１つまたは複数のプロセッサがアクティブ化されるべきであるとき、電力マネージャ２２０は、テーブル中のどのシナリオが適用されるかを決定し得る。適用可能なシナリオを決定した後に、電力マネージャ２２０は、テーブル中の対応する低減された周波数とランプダウンシーケンスとをルックアップし得る。電力マネージャ２２０は、次いで、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、最も高い周波数から最も低い周波数の順のランプダウンシーケンスにおける中間周波数の各々に連続的に低減するように周波数調整器２１０に命令し得る。各中間周波数上で費やされる時間の量はあらかじめ決定され得る。最後の中間周波数が到達された後に、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、対応する低減された周波数（たとえば、フルクロック周波数の５０％）に低減するように周波数調整器２１０に命令し得る。電力マネージャ２２０は、次いで、シナリオの下でアクティブ化されるべき１つまたは複数のプロセッサをアクティブ化し得る。
【００３６】
[0049]テーブル中の異なるシナリオのためのランプダウンシーケンスは経験的に生成され得る。たとえば、各シナリオについて、ＰＤＮ上の電圧オーバーシュートは、異なるランプダウンシーケンスについて測定され得る。次いで、各測定された電圧オーバーシュートは、電圧オーバーシュート限界（たとえば、ＰＤＮに結合されたプロセッサおよび／または他のデバイスによって、誤動作することなしに許容され得る電圧オーバーシュートの量）と比較され得る。この例では、電圧オーバーシュート限界内の電圧オーバーシュートを生じるランプダウンシーケンスのうちの１つが、シナリオのために選定され、テーブルに記憶され得る。
【００３７】
[0050]一実施形態では、クロック信号Ｃｌｋ＿ｏｕｔの周波数が、１つまたは複数のプロセッサのアクティブ化の後にフルクロック周波数に復元されるとき、電力マネージャ２２０は、対応する低減された周波数からフルクロック周波数にジャンプする代わりに、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、対応する低減された周波数からフルクロック周波数にランプアップするように周波数調整器２１０に命令し得る。これは、以下でさらに説明されるように、ＰＤＮ上の電圧ドループを緩和するために行われ得る。
【００３８】
[0051]クロック信号Ｃｌｋ＿ｏｕｔの周波数を増加させることは、１つまたは複数のアクティブプロセッサからのＰＤＮ上の電流負荷を増加させる。電流負荷の増加は、ＰＤＮ上の電圧ドループを引き起こし、ドループの量は、電流負荷が増加するレートに依存し、より高いレートは、概して、より大きいドループに対応する。クロック信号Ｃｌｋの周波数をランプアップすることによって、電力マネージャ２２０は、電流負荷が増加するレートを低減し、それにより、ドループが低減する。
【００３９】
[0052]この点について、図５は、クロック信号Ｃｌｋ＿ｏｕｔの周波数がフルクロック周波数の５０％からフルクロック周波数に増加される一例のために、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数の割合として経時的に示す。この例では、電力マネージャ２２０は、１つまたは複数のプロセッサがアクティブ化された後にフルクロック周波数を復元するために、クロック信号Ｃｌｋ＿ｏｕｔの周波数を増加させ得る。図５に示されているように、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、複数のステップにおいてランプアップされ、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、各後続のステップにおいてより高い周波数に増加される。クロック信号Ｃｌｋ＿ｏｕｔの周波数は、この例における１つまたは複数のプロセッサがアクティブ化された後にランプアップされ得る。
【００４０】
[0053]第１のステップにおいて、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数の６７．５％に増加される。第２のステップにおいて、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数の７５％に増加される。第３のステップにおいて、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数の８７．５％に増加される。最終的に、第４のステップにおいて、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数に増加され、それにより、プロセッサにフルクロック周波数を復元する。各ステップの持続時間はあらかじめ決定され得る。
【００４１】
[0054]したがって、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、複数のステップにわたってランプアップされ、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、各後続のステップにおいてより高い周波数に増加される。一例では、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、クロックスワロワを使用してランプアップされ得る。この例では、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、クロックパルスの減少する割合をスワローすることによってランプアップされる。別の例では、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、周波数分割器を使用してランプアップされ得る。この例では、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、クロック信号Ｃｌｋの周波数を減少する量（除数）で除算することによってランプアップされる。
【００４２】
[0055]上記で説明されたように、電力マネージャ２２０は、異なるシナリオをリストするテーブルをメモリ中に含み得、ここで、各シナリオは、アクティブ化されるべきである１つまたは複数のプロセッサおよび／またはすでにアクティブモードにある１つまたは複数の他のプロセッサに対応する。各シナリオについて、テーブルは、クロック信号Ｃｌｋ＿ｏｕｔおよび／またはランプダウンシーケンスのための対応する低減された周波数（たとえば、フルクロック周波数の５０％）を示し得る。各シナリオについて、テーブルは、シナリオの下での１つまたは複数のプロセッサのアクティブ化の後に、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数にランプアップするための対応するランプアップシーケンスをも示し得る。ランプアップシーケンスは、対応する低減された周波数とフルクロック周波数との間の中間周波数のシーケンスを指定し得、中間周波数は、最も低い周波数から最も高い周波数に順序付けられ得る。
【００４３】
[0056]この例では、１つまたは複数のプロセッサがアクティブ化されるべきであるとき、電力マネージャ２２０は、テーブル中のどのシナリオが適用されるかを決定し得る。適用可能なシナリオを決定した後に、電力マネージャ２２０は、テーブル中の対応する低減された周波数とランプアップシーケンスとをルックアップし得る。電力マネージャ２２０は、次いで、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、対応する低減された周波数に低減し得る。これは、上記で説明されたように、クロック信号Ｃｌｋ＿ｏｕｔの周波数をランプダウンすることを伴い得る。クロック信号Ｃｌｋ＿ｏｕｔの周波数が低減された後に、電力マネージャ２２０は、シナリオの下でアクティブ化されるべき１つまたは複数のプロセッサをアクティブ化し得る。１つまたは複数のプロセッサがアクティブ化された後に、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、最も低い周波数から最も高い周波数の順のランプアップシーケンスにおける中間周波数の各々に連続的に増加させるように周波数調整器２１０に命令し得る。各中間周波数上で費やされる時間の量はあらかじめ決定され得る。最後の中間周波数が到達された後に、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数に増加させるように周波数調整器２１０に命令し得る。
【００４４】
[0057]テーブル中の異なるシナリオのためのランプアップシーケンスは経験的に生成され得る。たとえば、各シナリオについて、ＰＤＮ上の電圧ドループは、異なるランプアップシーケンスについて測定され得る。次いで、各測定された電圧ドループは、電圧ドループ限界と比較され得る。この例では、電圧ドループ限界内の電圧ドループを生じるランプアップシーケンスのうちの１つが、シナリオのために選定され、テーブルに記憶され得る。
【００４５】
[0058]図６は、（たとえば、中断信号またはイベントに応答して）１つまたは複数のプロセッサがアクティブ化され、１つまたは複数の他のプロセッサがすでにアクティブモードにある一例のために、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数の割合として経時的に示す。最初に、プロセッサへのクロック信号Ｃｌｋ＿ｏｕｔは、フルクロック周波数（すなわち、クロックデバイス１１０からのクロック信号Ｃｌｋの周波数）にある。時間ｔ１において、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフル周波数の５０％に等しい低減された周波数にランプダウンするように周波数調整器２１０に命令する。時間ｔ２において、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、低減された周波数に到達する。電力マネージャ２２０は、次いで、時間ｔ３において、１つまたは複数のプロセッサをアクティブにするために１つまたは複数のプロセッサの内部クロック経路をアンゲートする。（図６中の「待機時間」と標示される）待機期間の後に、電力マネージャ２２０は、時間ｔ４において、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数にランプアップするように周波数調整器２１０に命令する。時間ｔ５において、クロック信号Ｃｌｋ＿ｏｕｔの周波数はフル周波数に復元される。クロック信号Ｃｌｋ＿ｏｕｔの周波数がフルクロック周波数の５０％のほかに他の周波数に低減され得、したがって、フルクロック周波数の５０％の例に限定されないことを諒解されたい。
【００４６】
[0059]上記で説明されたように、１つまたは複数のプロセッサの内部クロック経路をアンゲートした後に、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数に増加させる前に待機期間の間待機し得る。一例では、待機期間は、以下で説明されるように、１つまたは複数のプロセッサの内部クロック経路がアンゲートされた後のＰＤＮのための電圧整定時間に依存し得る。
【００４７】
[0060]１つまたは複数のプロセッサの内部クロック経路をアンゲートすることは、１つまたは複数のプロセッサからのＰＤＮ上の電流負荷の増加により、ＰＤＮ上の電圧ドループを引き起こす。この電圧ドループは、上記で説明されたように、１つまたは複数のプロセッサの内部クロック経路をアンゲートするより前にクロック信号Ｃｌｋ＿ｏｕｔの周波数を低減することによって低減される。電圧ドループの後に、ＰＤＮの電圧は、ＰＤＮの公称電源電圧にほぼ等しい電圧に徐々に整定する。この例では、待機時間は、ＰＤＮの電圧が、ＰＤＮの公称電源電圧のある範囲内に（たとえば、５％以下内に）整定するのに要する時間によって決定され得る。整定時間は、以下でさらに説明されるように、経験的に決定され得る。
【００４８】
[0061]上記で説明されたように、電力マネージャ２２０は、異なるシナリオをリストするテーブルをメモリ中に含み得、ここで、各シナリオは、アクティブ化されるべきである１つまたは複数のプロセッサおよび／またはすでにアクティブモードにある１つまたは複数の他のプロセッサに対応する。各シナリオについて、テーブルは、対応する低減された周波数と、対応する待機時間とを含み得る。この例では、１つまたは複数のプロセッサがアクティブ化されるべきであるとき、電力マネージャ２２０は、テーブル中のどのシナリオが適用されるかを決定し得る。適用可能なシナリオを決定した後に、電力マネージャ２２０は、テーブル中の対応する低減された周波数と対応する待機時間とをルックアップし得る。電力マネージャ２２０は、次いで、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、対応する低減された周波数に低減し得る。クロック信号Ｃｌｋ＿ｏｕｔの周波数が低減された後に、電力マネージャ２２０は、シナリオの下でアクティブ化されるべき１つまたは複数のプロセッサの内部クロック経路をアンゲートし得る。クロック経路がアンゲートされた後に、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数に増加させる前に、対応する待機時間の間待機する。この例では、電力マネージャ２２０は、待機時間がいつ経過したかを決定するためにタイマーを使用し得る。
【００４９】
[0062]テーブル中の異なるシナリオのための待機時間は経験的に生成され得る。たとえば、各シナリオについて、ＰＤＮの電圧波形は、シナリオの下でアクティブ化されるべき１つまたは複数のプロセッサの内部クロック経路がアンゲートされるときに測定され得る。電圧波形は、次いで、ＰＤＮの電圧がＰＤＮの公称電源電圧のある範囲内に整定する時間を決定するために分析され得る。決定された時間（整定時間）は、シナリオのための待機時間を決定するために使用され得、決定された待機時間は、電力マネージャ２２０による後の使用のためにテーブルに記憶され得る。
【００５０】
[0063]上記で説明されたように、電力マネージャ２２０は、プロセッサが、中断まで待機（ＷＦＩ）命令、イベントまで待機（ＷＦＥ）命令、またはプロセッサがアイドルモードに入れられるべきであることを示す別の命令を実行したとき、プロセッサ１１５（１）〜１１５（４）のうちの１つをアイドルモードに入れ得る。命令を実行すると、プロセッサは、プロセッサをアイドルモードに入れるように電力マネージャ２２０にシグナリングし得る。プロセッサがアイドルモードに入れられた後に、電力マネージャ２２０は、電力マネージャ２２０が中断信号を受信するか、またはあるイベントが発生したとき、プロセッサをアクティブモードに遷移させ得る。中断信号は、（たとえば、データを処理するために）プロセッサを必要とするデバイス（たとえば、周辺デバイス）から来得る。
【００５１】
[0064]別の例では、中断信号はタイマーから来得る。この点について、図７は、処理システム７０５が、電力マネージャ２２０に結合されたタイマー７１０を含む一例を示す。この例では、プロセッサをアイドルモードに入れるようにとの信号を受信したことに応答して、電力マネージャ２２０はタイマー７１０をトリガし得る。トリガされた後に、タイマー７１０は、あらかじめ決定された時間期間が経過した後に、電力マネージャ２２０に中断信号を送り得る。タイマー７１０は、内部カウンタまたは別の回路を使用して時間を追跡し得る。タイマー７１０からの中断信号に応答して、電力マネージャ２２０は、上記で説明されたように、プロセッサをアクティブ化し得る。
【００５２】
[0065]電力マネージャ２２０は、あらかじめ決定された時間期間をタイマー７１０にプログラムし得る。あらかじめ決定された時間期間は、プロセッサが再び必要とされるまでの時間の量の推定値に基づき得る。たとえば、プロセッサは、時間フレームにおいてデータを処理するために使用され得る。この例では、プロセッサは、次の時間フレームのためのデータが受信される前に、現在の時間フレームのためのデータを処理することを終了し得る。この場合、プロセッサが、現在の時間フレームのためのデータを処理することを終了されたとき、プロセッサは、プロセッサをアイドルモードに入れるように電力マネージャ２２０にシグナリングし得る。応答して、電力マネージャ２２０は、電力を温存するために、プロセッサをアイドルモードに入れ得る。電力マネージャ２２０はまた、タイマー７１０が次のフレームの開始の直前に中断信号を送るように、次の時間フレームの開始までの時間の量を決定し、決定された時間の量に従ってタイマー７１０をプログラムし得る。代替的に、プロセッサは、次のフレームまでの時間の量を決定し、それに応じてタイマー７１０をプログラムするために、決定された時間の量を電力マネージャ２２０に送り得る。
【００５３】
[0066]別の例では、電力マネージャ２２０は、あるイベントが発生したとき、プロセッサをアクティブモードに遷移させ得る。この例では、イベントが発生したとき、電力マネージャ２２０は、イベントが発生したことを示すイベント信号をデバイス（たとえば、周辺デバイス）から受信し得る。イベント信号に応答して、電力マネージャ２２０は、上記で説明されたように、プロセッサをアクティブ化し得る。
【００５４】
[0067]イベントは、デバイス（たとえば、周辺デバイス）がプロセッサを使用する必要であり得る。この例では、デバイスが（たとえば、データ処理のために）プロセッサを使用する必要があるとき、デバイスは、プロセッサをアクティブ化するために電力マネージャ２２０にイベント信号を送り得る。デバイス（たとえば、カメラ）は、アクティブ化され、および／または処理システム２０５または７０５を備えるモバイルデバイス（たとえば、スマートフォン）に接続されたすぐ後に、電力マネージャ２２０にイベント信号を送り得る。また、デバイスは、デバイスが２つ以上のプロセッサを必要とする場合、２つまたはそれ以上のプロセッサをアクティブ化するためにイベント信号を送り得ることを諒解されたい。
【００５５】
[0068]上記の例では、周波数調整器２１０は、プロセッサ１１５（１）〜１１５（４）のうちの１つまたは複数のアクティブ化より前にクロック信号Ｃｌｋ＿ｏｕｔの周波数を低減するために使用される。しかしながら、周波数調整器２１０は、他の適用例においてクロック信号Ｃｌｋ＿ｏｕｔの周波数を低減するためにも使用され得ることを諒解されたい。たとえば、温度コントローラが、温度緩和中にクロック信号Ｃｌｋ＿ｏｕｔの周波数を低減するために周波数調整器２１０を使用し得る。この点について、図８は、温度コントローラ８１０が、１つまたは複数のオンチップ温度センサー８２０を使用して、プロセッサシステム８０５が存在するチップの温度を監視する、処理システム８０５の一例を示す。監視された温度が熱しきい値を上回り上昇した場合、温度コントローラ８１０は、温度を低減するために、クロック信号Ｃｌｋ＿ｏｕｔの周波数を低減するように周波数調整器２１０に命令し得る。低減された周波数は、アクティブプロセッサの動的電力散逸を低減することによって温度を低減する。
【００５６】
[0069]別の例では、電流コントローラ８３０は、ＰＤＮ上の電流が電流限界を超えるのを防ぐために周波数調整器２１０を使用し得る。この例では、電流コントローラ８３０は、１つまたは複数のオンチップ電流センサー８４０を使用して、ＰＤＮ上の電流を監視し得る。監視された電流が電流限界を超える場合、電流コントローラ８３０は、電流を低減するために、クロック信号Ｃｌｋ＿ｏｕｔの周波数を低減するように周波数調整器２１０に命令し得る。低減された周波数は、アクティブプロセッサの電流負荷を低減することによって電流を低減する。
【００５７】
[0070]したがって、１つまたは複数のプロセッサがアクティブ化されるべきであるとき、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、（たとえば、温度緩和により）クロック信号Ｃｌｋの周波数よりも低い周波数にすでにあり得る。この場合、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数をどのくらい低減すべきかを決定する際に、クロック信号Ｃｌｋ＿ｏｕｔの現在の周波数を考慮に入れ得る。
【００５８】
[0071]この点について、電力マネージャ２２０は、異なるシナリオをリストするテーブルをメモリ中に含み得、ここで、各シナリオは、アクティブ化されるべきである１つまたは複数のプロセッサ、すでにアクティブモードにある１つまたは複数の他のプロセッサ、および／またはクロック信号Ｃｌｋ＿ｏｕｔの現在の周波数に対応する。各シナリオについて、テーブルは、対応する低減された周波数、ランプダウンシーケンス、ランプアップシーケンス、および／または待機時間を示し得る。
【００５９】
[0072]この例では、１つまたは複数のプロセッサがアクティブ化されるべきであるとき、電力マネージャ２２０は、アクティブ化されるべき１つまたは複数のプロセッサ、すでにアクティブモードにある１つまたは複数の他のプロセッサ、および／またはクロック信号Ｃｌｋ＿ｏｕｔ現在の周波数に基づいて、テーブル中のどのシナリオが適用されるかを決定し得る。（クロック信号Ｃｌｋの周波数よりも低くなり得る）現在のクロック周波数は、現在の周波数が、１つまたは複数のプロセッサがアクティブ化される前の周波数であるので、「初期周波数」と呼ばれることがある。
【００６０】
[0073]適用可能なシナリオを決定した後に、電力マネージャ２２０は、テーブル中の対応する低減された周波数、ランプダウンシーケンス、ランプアップシーケンス、および／または待機時間をルックアップし得る。電力マネージャ２２０は、次いで、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、初期周波数から対応する低減された周波数に低減するように周波数調整器２１０に命令し得る。テーブルがシナリオのための対応するランプダウンシーケンスを含む場合、電力マネージャ２２０は、対応するランプダウンシーケンスに従って、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、初期周波数から対応する低減された周波数にランプダウンするように周波数調整器２１０に命令し得る。クロック信号Ｃｌｋ＿ｏｕｔの周波数が低減された後に、電力マネージャ２２０は、シナリオの下でアクティブ化されるべき１つまたは複数のプロセッサをアクティブ化し得る。電力マネージャ２２０は、次いで、クロック信号Ｃｌｋ＿ｏｕｔの周波数を初期クロック周波数に増加させる前に、対応する待機時間の間待機し得る。テーブルがシナリオのための対応するランプアップシーケンスを含む場合、電力マネージャ２２０は、対応するランプアップシーケンスに従って、クロック信号Ｃｌｋ＿ｏｕｔの周波数を初期クロック周波数にランプアップするように周波数調整器２１０に命令し得る。
【００６１】
[0074]テーブルは、上記で説明された技法を使用して経験的に生成され得る。より詳細には、各シナリオについて、ＰＤＮの電圧をドループ限界および／またはオーバーシュート限界内に保つ、低減された周波数、ランプダウンシーケンス、ランプアップシーケンス、および／または待機時間が、上記で説明された技法を使用して決定され得る。
【００６２】
[0075]１つまたは複数のプロセッサがアクティブ化された後に初期クロック周波数に戻る代わりに、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、低減された周波数から、低減された周波数と初期クロック周波数との間の周波数に増加させるように周波数調整器２１０に命令し得る。これは、たとえば、初期クロック周波数が、温度コントローラ８１０による温度緩和のためにフルクロック周波数よりも低い場合に行われ得る。これは、１つまたは複数のプロセッサのアクティブ化が、１つまたは複数のプロセッサが処理システムの総動的電力散逸の原因となることを引き起こすからであり、このことは、温度を増加させ得る。クロック信号Ｃｌｋ＿ｏｕｔの周波数を、低減された周波数から初期周波数よりも低い周波数に増加させることは、１つまたは複数のプロセッサからの追加された動的電力散逸を補償し得る。代替的に、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数を初期周波数に増加させるように周波数調整器２１０に命令し、温度コントローラ８１０が、１つまたは複数のプロセッサのアクティブ化から生じる温度の増加に基づいてクロック信号Ｃｌｋ＿ｏｕｔの周波数を再調整することに依拠し得る。
【００６３】
[0076]一実施形態では、クロックデバイス１１０は、プロセッサ１１５（１）〜１１５（４）のうちの１つまたは複数のための所望の処理速度に応じて、複数の異なるクロック周波数のうちの１つを出力するように構成され得る。この点について、図９は、クロックデバイス１１０が、第１のクロックソース９１５と、第２のクロックソース９２０と、マルチプレクサ９３０とを備える処理システム９０５の一例を示す。クロックソース９１５および９２０の各々は、位相ロックループ（ＰＬＬ）または別のタイプの回路を備え得る。第１のクロックソース９１５は、マルチプレクサ９３０に（「Ｃｌｋ＿ａ」と示される）第１の入力クロック信号を与え、第２のクロックソース９２０は、マルチプレクサ９３０に（「Ｃｌｋ＿ｂ」と示される）第２の入力クロック信号を与え、第１の入力クロック信号Ｃｌｋ＿ａは第２の入力クロック信号Ｃｌｋ＿ｂよりも高い周波数を有する。図９中の例におけるクロックデバイス１１０は２つのクロックソースを備えるが、クロックデバイス１１０は、３つ以上のクロックソースを備え得ることを諒解されたい。
【００６４】
[0077]マルチプレクサ９３０は、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂを受信し、クロックコントローラ９３５の制御下で入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちの１つを選択的に出力するように構成される。入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちの選択された１つは、クロックデバイス１１０の出力クロック信号Ｃｌｋを与える。
【００６５】
[0078]クロックコントローラ９３５は、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちのどちらがマルチプレクサ９３０によって選択されるかを制御することによって、使用事例に応じて、クロック信号Ｃｌｋの周波数を動的に変化させるように構成され得る。たとえば、プロセッサ１１５（１）〜１１５（４）のうちの１つまたは複数が、高い処理速度を必要とする１つまたは複数のアプリケーションを実行している場合、クロックコントローラ９３５は、第１の入力クロック信号Ｃｌｋ＿ａを選択するようにマルチプレクサ９３０に命令し得る。この場合、クロック信号Ｃｌｋは、第１の入力クロック信号Ｃｌｋ＿ａによってソーシングされ、したがって、第１の入力クロック信号Ｃｌｋ＿ａの周波数を有する。別の例では、プロセッサ１１５（１）〜１１５（４）のうちの１つまたは複数が、高い処理速度を必要としない１つまたは複数のアプリケーションを実行している場合、クロックコントローラ９３５は、電力を温存するために、第２の入力クロック信号Ｃｌｋ＿ｂを選択するようにマルチプレクサ９３０に命令し得る。この場合、クロック信号Ｃｌｋは、第２の入力クロック信号Ｃｌｋ＿ｂによってソーシングされ、したがって、第１の入力クロック信号Ｃｌｋ＿ａの周波数よりも低い、第２のクロック信号Ｃｌｋ＿ｂの周波数を有する。
【００６６】
[0079]一態様では、プロセッサ１１５（１）〜１１５（４）の各々は、プロセッサの処理必要に基づいてクロック信号Ｃｌｋの周波数を変化させるようにとの要求をクロックコントローラ９３５に送るように構成され得る。たとえば、プロセッサは、プロセッサが計算集約的アプリケーションを実行している場合、クロック信号Ｃｌｋの周波数を増加させるようにとの要求をクロックコントローラ９３５に送り得る。要求に応答して、クロックコントローラ９３５は、第２の入力クロック信号Ｃｌｋ＿ｂが現在選択されている場合、第１の入力クロック信号Ｃｌｋ＿ａを選択するようにマルチプレクサ９３０に命令し得る。別の例では、クロックコントローラ９３５は、プロセッサのうちの１つまたは複数がより高いクロック周波数を要求しない限り、第２の入力クロック信号Ｃｌｋ＿ｂを選択し得る。
【００６７】
[0080]電力マネージャ２２０はまた、入力クロック信号Ｃｌｋ＿ａ〜Ｃｌｋ＿ｂのうちのどちらを選択すべきかをクロックコントローラ９３５に命令し得る。たとえば、電力マネージャ２２０は、電力を温存するために、処理システム９０５に電力供給しているバッテリーが低で動作している場合、第２の入力クロック信号Ｃｌｋ＿ｂを選択するようにクロックコントローラ９３５に命令し得る。この場合、電力マネージャ２２０からの命令は、クロック周波数を増加させるようにとのプロセッサからの要求をオーバーライドし得る。一態様では、クロックコントローラ９３５は、以下でさらに説明されるように、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちのどちらが現在選択されているかを電力マネージャ２２０に通知し得る。
【００６８】
[0081]上記で説明されたように、１つまたは複数のプロセッサがアクティブ化されるべきであるとき、電力マネージャ２２０は、クロック信号Ｃｌｋ＿ｏｕｔの周波数をどのくらい低減すべきかを決定する際に、クロック信号Ｃｌｋ＿ｏｕｔの現在の周波数を考慮に入れ得る。この実施形態では、クロック信号Ｃｌｋ＿ｏｕｔの現在の周波数は、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちのどちらがマルチプレクサ９３０によって選択されるかに少なくとも部分的に依存する。したがって、電力マネージャ２２０によって使用されるテーブル中のシナリオは、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂの各々に対応するシナリオを含み得る。
【００６９】
[0082]この例では、１つまたは複数のプロセッサがアクティブ化されるべきであるとき、電力マネージャ２２０は、アクティブ化されるべき１つまたは複数のプロセッサ、すでにアクティブモードにある１つまたは複数の他のプロセッサ、および／またはクロック信号Ｃｌｋ＿ｏｕｔの現在の周波数に基づいて、テーブル中のどのシナリオが適用されるかを決定し得る。現在のクロック周波数は、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちのどちらが現在選択されているかに少なくとも部分的に依存する。上記で説明されたように、現在の周波数は、現在の周波数が、１つまたは複数のプロセッサがアクティブ化される前の周波数であるので、「初期周波数」と呼ばれることがある。
【００７０】
[0083]適用可能なシナリオを決定した後に、電力マネージャ２２０は、テーブル中の対応する低減された周波数、ランプダウンシーケンス、ランプアップシーケンス、および／または待機時間をルックアップし得る。電力マネージャ２２０は、次いで、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、初期周波数から対応する低減された周波数に低減するように周波数調整器２１０に命令し得る。テーブルがシナリオのための対応するランプダウンシーケンスを含む場合、電力マネージャ２２０は、対応するランプダウンシーケンスに従って、クロック信号Ｃｌｋ＿ｏｕｔの周波数を、初期周波数から対応する低減された周波数にランプダウンするように周波数調整器２１０に命令し得る。クロック信号Ｃｌｋ＿ｏｕｔの周波数が低減された後に、電力マネージャ２２０は、シナリオの下でアクティブ化されるべき１つまたは複数のプロセッサをアクティブ化し得る。電力マネージャ２２０は、次いで、クロック信号Ｃｌｋ＿ｏｕｔの周波数を初期周波数に増加させる前に、対応する待機時間の間待機し得る。テーブルがシナリオのための対応するランプアップシーケンスを含む場合、電力マネージャ２２０は、対応するランプアップシーケンスに従って、クロック信号Ｃｌｋ＿ｏｕｔの周波数を初期周波数にランプアップするように周波数調整器２１０に命令し得る。
【００７１】
[0084]テーブルは、上記で説明された技法を使用して経験的に生成され得る。より詳細には、各シナリオについて、ＰＤＮの電圧をドループ限界および／またはオーバーシュート限界内に保つ、低減された周波数、ランプダウンシーケンス、ランプアップシーケンス、および／または待機時間が、上記で説明された技法を使用して決定され得る。
【００７２】
[0085]一実施形態では、電力マネージャ２２０は、電力を温存するために、プロセッサ１１５（１）〜１１５（４）のすべてがアイドルモードにあるとき、クロック信号Ｃｌｋを無効にするように構成され得る。たとえば、電力マネージャ２２０は、クロックデバイス１１０中のクロックソース９１５および９２０（たとえば、ＰＬＬ）を遮断することによって、クロック信号Ｃｌｋを無効にし得る。この例では、クロックコントローラ９３５は、電力マネージャ２２０の制御下でクロックソース９１５および９２０を遮断するように構成され得る。別の例では、電力マネージャ２２０は、マルチプレクサ９３０を無効にすることによって、クロック信号Ｃｌｋを無効にし得る。
【００７３】
[0086]この実施形態では、１つまたは複数のプロセッサがアクティブ化されるべきであり、プロセッサ１１５（１）〜１１５（４）のすべてが最初にアイドルモードにあるとき、電力マネージャ２２０は、最初にクロック信号Ｃｌｋを有効にし得る。たとえば、電力マネージャ２２０は、クロックソース９１５および９２０をオンにし、および／またはマルチプレクサ９３０を有効にするようにクロックコントローラ９３５に命令し得る。電力マネージャ２２０はまた、クロック信号Ｃｌｋをソーシングするために、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちのどちらを選択すべきかをクロックコントローラ９３５に命令し得る。たとえば、電力マネージャ２２０は、最初に第２の入力クロック信号Ｃｌｋ＿ｂを選択するようにクロックコントローラ９３５に命令し得る。別の例では、電力マネージャ２２０は、プロセッサ１１５（１）〜１１５（４）のすべてがアイドルモードに入れられる前に最後に選択された入力クロック信号を選択するようにクロックコントローラ９３５に命令し得る。
【００７４】
[0087]クロック信号Ｃｌｋが有効にされたとき、電力マネージャ２２０は、所望の低減された周波数（すなわち、クロック信号Ｃｌｋの周波数よりも低い周波数）においてクロック信号Ｃｌｋ＿ｏｕｔを出力するように周波数調整器２１０に命令し得る。低減された周波数は、以下でさらに説明されるように、１つまたは複数のプロセッサがアクティブ化されるときのＰＤＮ上の電圧ドループを低減する。クロック信号Ｃｌｋ＿ｏｕｔの周波数が低減された周波数にある間、電力マネージャ２２０は、（たとえば、１つまたは複数のプロセッサの内部クロック経路をアンゲートすることによって）１つまたは複数のプロセッサをアクティブ化し得る。電力マネージャ２２０は、次いで、待機期間の間待機し、待機期間が経過した後に、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数に増加させ得る。一態様では、電力マネージャ２２０は、クロック信号の周波数を、低減された周波数からフルクロック周波数にランプアップし得る。
【００７５】
[0088]したがって、１つまたは複数のプロセッサは、フルクロック周波数（すなわち、クロック信号Ｃｌｋの周波数）の代わりに、低減されたクロック周波数においてアクティブ化される。低減された周波数は、１つまたは複数のプロセッサがアクティブ化されるときのＰＤＮ上の電流負荷の変化におけるレートを低減し、それにより、ＰＤＮ上の電圧ドループが低減する。
【００７６】
[0089]上記で説明されたように、電力マネージャ２２０は、異なるシナリオをリストするテーブルをメモリ中に含み得る。テーブル中のシナリオは、プロセッサ１１５（１）〜１１５（４）のすべてが最初にアイドルモードにある複数のシナリオを含み得る。これらのシナリオの各々は、アクティブ化されるべきである１つまたは複数のプロセッサ、および／またはクロック信号Ｃｌｋ（たとえば、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちの選択された１つ）の周波数に対応し得る。これらのシナリオの各々について、テーブルは、クロック信号Ｃｌｋ＿ｏｕｔのための対応する低減された周波数、ランプアップシーケンス、および／または待機時間を示し得る。
【００７７】
[0090]この例では、１つまたは複数のプロセッサがアクティブ化されるべきであり、プロセッサ１１５（１）〜１１５（４）のすべてが最初にアイドルモードにあるとき、電力マネージャ２２０は、アクティブ化されるべき１つまたは複数のプロセッサ、および／またはクロック信号Ｃｌｋの周波数（たとえば、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちの選択された１つの周波数）に基づいて、テーブル中の複数のシナリオのうちのどれが適用されるかを決定し得る。適用可能なシナリオを決定した後に、電力マネージャ２２０は、テーブル中の対応する低減された周波数、ランプアップシーケンス、および／または待機時間をルックアップし得る。電力マネージャ２２０は、次いで、クロック信号Ｃｌｋを有効にし、対応する低減された周波数における周波数を用いてクロック信号Ｃｌｋ＿ｏｕｔを出力するように周波数調整器２１０に命令し得る。電力マネージャ２２０は、次いで、シナリオの下でアクティブ化されるべき１つまたは複数のプロセッサをアクティブ化し、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数（すなわち、クロック信号Ｃｌｋの周波数）に増加させる前に、対応する待機時間の間待機し得る。テーブルがシナリオのための対応するランプアップシーケンスを含む場合、電力マネージャ２２０は、対応するランプアップシーケンスに従って、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数にランプアップするように周波数調整器２１０に命令し得る。
【００７８】
[0091]テーブルは、上記で説明された技法を使用して経験的に生成され得る。より詳細には、各シナリオについて、ＰＤＮの電圧をドループ限界および／またはオーバーシュート限界内に保つ、低減された周波数、ランプアップシーケンス、および／または待機時間が、上記で説明された技法を使用して決定され得る。
【００７９】
[0092]図１０は、（たとえば、中断信号またはイベントに応答して）１つまたは複数のプロセッサがアクティブ化され、プロセッサのすべてが最初にアイドルモードにある一例のために、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数の割合として経時的に示す。時間ｔ１において、電力マネージャ２２０は、クロック信号Ｃｌｋを有効にし、周波数調整器２１０は、フルクロック周波数の５０％に等しい低減された周波数においてクロック信号Ｃｌｋ＿ｏｕｔを出力する。この時点で、プロセッサのすべてはアイドルモードにあり得る。電力マネージャ２２０は、次いで、時間ｔ２において、１つまたは複数のプロセッサをアクティブにするために１つまたは複数のプロセッサの内部クロック経路をアンゲートする。（図１０中の「待機時間」と標示される）待機期間の後に、電力マネージャ２２０は、時間ｔ４において、クロック信号Ｃｌｋ＿ｏｕｔの周波数をフルクロック周波数にランプアップするように周波数調整器２１０に命令する。時間ｔ５において、クロック信号Ｃｌｋ＿ｏｕｔの周波数はフル周波数に到達する。他の低減された周波数がフルクロック周波数の５０％のほかに使用され得、したがって、本開示は、フルクロック周波数の５０％の例に限定されないことを諒解されたい。さらに、図１０には示されていないが、クロック信号Ｃｌｋ＿ｏｕｔは、クロック信号Ｃｌｋが有効にされたとき、約０ヘルツから、低減された周波数にランプアップされ得ることを諒解されたい。
【００８０】
[0093]一実施形態では、クロックデバイスは、２つ以上のクロック信号をプロセッサ１１５（１）〜１１５（４）に出力し得る。この点について、図１１は、クロックデバイス１１１０が、（「Ｃｌｋ１」と示される）第１のクロック信号を第１のプロセッサ１１５（１）および第２のプロセッサ１１５（２）に出力し、（「Ｃｌｋ２」と示される）第２のクロック信号を第３のプロセッサ１１５（３）および第４のプロセッサ１１５（４）に出力する処理システム１１０５の一例を示す。これは、以下でさらに説明されるように、第１のプロセッサ１１５（１）および第２のプロセッサ１１５（２）が、第３のプロセッサ１１５（３）および第４のプロセッサ１１５（４）とは異なるクロック速度において動作することを可能にする。
【００８１】
[0094]この例では、クロックデバイス１１１０は、第１のマルチプレクサ９３０（１）と第２のマルチプレクサ９３０（２）とを備える。第１のマルチプレクサ９３０（１）は、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂを、それぞれ、第１のクロックソース９１５および第２のクロックソース９２０から受信し、クロックコントローラ９３５の制御下で、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちの１つを、第１のプロセッサ１１５（１）および第２のプロセッサ１１５（２）に選択的に出力するように構成される。第２のマルチプレクサ９３０（２）は、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂを、それぞれ、第１のクロックソース９１５および第２のクロックソース９２０から受信し、クロックコントローラ９３５の制御下で、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちの１つを、第３のプロセッサ１１５（３）および第４のプロセッサ１１５（４）に選択的に出力するように構成される。この構成は、第１のマルチプレクサ９３０（１）および第２のマルチプレクサ９３０（２）の選択に応じて、プロセッサ１１５（１）〜１１５（４）が、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちの同じ１つを受信すること、または、第１のプロセッサ１１５（１）および第２のプロセッサ１１５（２）が、第３のプロセッサ１１５（３）および第４のプロセッサ１１５（４）とは異なる、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちの１つを受信することを可能にする。
【００８２】
[0095]クロックコントローラ９３５は、入力クロック信号Ｃｌｋ＿ａおよびＣｌｋ＿ｂのうちのどちらがそれぞれのマルチプレクサによって選択されるかを制御することによって、第１の出力クロック信号Ｃｌｋ１および第２の出力クロック信号Ｃｌｋ２の各々の周波数を動的に変化させるように構成され得る。たとえば、第１のプロセッサ１１５（１）および第２のプロセッサ１１５（２）の一方または両方が、高い処理速度を必要とする（たとえば、第１のプロセッサ１１５（１）および第２のプロセッサ１１５（２）の一方または両方が、高いクロック速度を要求する）場合、クロックコントローラ９３５は、第１の入力クロック信号Ｃｌｋ＿ａを選択するように第１のマルチプレクサ９３０（１）に命令し得る。この場合、第１の出力クロック信号Ｃｌｋ１は、第１の入力クロック信号Ｃｌｋ＿ａによってソーシングされる。同様に、第３のプロセッサ１１５（２）および第４のプロセッサ１１５（３）の一方または両方が、高い処理速度を必要とする（たとえば、第３のプロセッサ１１５（３）および第４のプロセッサ１１５（４）の一方または両方が、高いクロック速度を要求する）場合、クロックコントローラ９３５は、第１の入力クロック信号Ｃｌｋ＿ａを選択するように第２のマルチプレクサ９３０（２）に命令し得る。この場合、第２の出力クロック信号Ｃｌｋ２は、第１の入力クロック信号Ｃｌｋ＿ａによってソーシングされる。
【００８３】
[0096]別の例では、第１のプロセッサ１１５（１）および第２のプロセッサ１１５（２）の一方または両方が高い処理速度を必要としない場合、クロックコントローラ９３５は、電力を温存するために、第２の入力クロック信号Ｃｌｋ＿ｂを選択するように第１のマルチプレクサ９３０（１）に命令し得る。この場合、第１の出力クロック信号Ｃｌｋ１は、第１の入力クロック信号Ｃｌｋ＿ａよりも低い周波数を有する、第２の入力クロック信号Ｃｌｋ＿ｂによってソーシングされる。同様に、第３のプロセッサ１１５（３）および第４のプロセッサ１１５（４）の一方または両方が高い処理速度を必要としない場合、クロックコントローラ９３５は、電力を温存するために、第２の入力クロック信号Ｃｌｋ＿ｂを選択するように第２のマルチプレクサ９３０（２）に命令し得る。この場合、第２の出力クロック信号Ｃｌｋ２は、第２の入力クロック信号Ｃｌｋ＿ｂによってソーシングされる。
【００８４】
[0097]図１１中の例では、処理システム１１０５は、第１の周波数調整器２１０（１）と第２の周波数調整器２１０（２）とを備える。第１の周波数調整器２１０（１）は、電力マネージャ２２０の制御下で第１のクロック信号Ｃｌｋ１の周波数を調整可能な量だけ低減し、（「Ｃｌｋ＿ｏｕｔ１」と示される）得られたクロック信号を第１のプロセッサ１１５（１）および第２のプロセッサ１１５（２）に出力するように構成される。第２の周波数調整器２１０（２）は、電力マネージャ２２０の制御下で第２のクロック信号Ｃｌｋ２の周波数を調整可能な量だけ低減し、（「Ｃｌｋ＿ｏｕｔ２」と示される）得られたクロック信号を第３のプロセッサ１１５（３）および第４のプロセッサ１１５（４）に出力するように構成される。これは、電力マネージャ２２０が、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１の周波数と第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２の周波数とを独立して調整することを可能にする。
【００８５】
[0098]この例では、電力マネージャ２２０は、様々なシナリオの下でプロセッサ１１５（１）〜１１５（４）の１つまたは複数をアクティブにし得る。たとえば、１つの例示的なシナリオでは、電力マネージャ２２０は、他のプロセッサのうちの１つまたは複数がすでにアクティブモードにある間、第１のプロセッサ１１５（１）および／または第２のプロセッサ１１５（２）をアクティブにし得る。このシナリオでは、電力マネージャ２２０は、第１のプロセッサおよび／または第２のプロセッサをアクティブ化する前に、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１の周波数を低減し得る。別の例示的なシナリオでは、電力マネージャ２２０は、他のプロセッサのうちの１つまたは複数がすでにアクティブモードにある間、第３のプロセッサ１１５（３）および／または第４のプロセッサ１１５（４）をアクティブにし得る。このシナリオでは、電力マネージャ２２０は、第３のプロセッサおよび／または第４のプロセッサをアクティブ化する前に、第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２の周波数を低減し得る。また別の例示的なシナリオでは、電力マネージャ２２０は、第２のプロセッサおよび第４のプロセッサの一方または両方がすでにアクティブモードにある間、第１のプロセッサ１１５（１）および第３のプロセッサ１１５（３）をアクティブにし得る。このシナリオでは、電力マネージャ２２０は、第１のプロセッサおよび第３のプロセッサをアクティブ化する前に、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１の周波数および第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２の周波数を低減し得る。
【００８６】
[0099]異なるシナリオの下でプロセッサ１１５（１）〜１１５（４）のうちの１つまたは複数をアクティブ化するために、電力マネージャ２２０は、異なるシナリオをリストするテーブルをメモリ中に含み得る。これらのシナリオの各々は、アクティブ化されるべきプロセッサのうちの１つまたは複数、すでにアクティブモードにあるプロセッサのうちの１つまたは複数の他のプロセッサ、第１の出力クロックＣｌｋ＿ｏｕｔ１の周波数、および／または第２の出力クロックＣｌｋ＿ｏｕｔ２の周波数に対応し得る。これらのシナリオの各々について、テーブルは、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１のためのパラメータのセット（たとえば、対応する低減された周波数、ランプダウンシーケンス、ランプアップシーケンス、および／または待機時間）、および／または第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２のためのパラメータのセット（たとえば、対応する低減された周波数、ランプダウンシーケンス、ランプアップシーケンス、および／または待機時間）を含み得る。
【００８７】
[00100]いくつかのシナリオ（たとえば、プロセッサのうちの１つのみがアクティブ化されるべきであるシナリオ）について、テーブルは、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１および第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２のうちの１つのためのパラメータのセットのみを含み得る。これらのシナリオでは、電力マネージャ２２０は、出力クロック信号のうちの他の１つをそのままにしておくことがある。他のシナリオ（たとえば、第１および第３のプロセッサがアクティブ化されるべきであるシナリオ）について、テーブルは、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１および第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２の各々のためのパラメータのセットを含み得る。
【００８８】
[00101]１つまたは複数のプロセッサがアクティブ化されるべきであるとき、電力マネージャ２２０は、アクティブ化されるべき１つまたは複数のプロセッサ、すでにアクティブモードにあるプロセッサのうちの１つまたは複数の他のプロセッサ、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１の現在の周波数、および／または第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２の現在の周波数に基づいて、テーブル中の複数のシナリオのうちのどれが適用されるかを決定し得る。適用可能なシナリオを決定した後に、電力マネージャ２２０は、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１のためのテーブル中のパラメータのセット（たとえば、対応する低減された周波数、ランプダウンシーケンス、ランプアップシーケンスおよび／または待機時間）、および／または第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２のためのテーブル中のパラメータのセット（たとえば、対応する低減された周波数、ランプダウンシーケンス、ランプアップシーケンスおよび／または待機時間）をルックアップし得る。
【００８９】
[00102]電力マネージャ２２０は、次いで、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１の周波数を、対応する低減された周波数に低減し、および／または第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２の周波数を、対応する低減された周波数に低減し得る。出力クロック信号Ｃｌｋ＿ｏｕｔ１とＣｌｋ＿ｏｕｔ２の両方の周波数がランプダウンされた場合、周波数ランプダウンは時間的に重複し得る。代替的に、電力マネージャ２２０は、出力クロック信号のうちの他の１つの周波数をランプダウンする前に、出力クロック信号のうちの１つの周波数をランプダウンし得る。
【００９０】
[00103]第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１の周波数および／または第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２の周波数が低減された後に、電力マネージャ２２０は、シナリオの下でアクティブ化されるべき１つまたは複数のプロセッサをアクティブ化し得る。電力マネージャ２２０は、次いで、対応する待機時間の後に第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１の周波数を増加させ、および／または対応する待機時間の後に第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２の周波数を増加させ得る。出力クロック信号Ｃｌｋ＿ｏｕｔ１とＣｌｋ＿ｏｕｔ２の両方の周波数がランプアップされた場合、周波数ランプアップは時間的に重複し得る。代替的に、電力マネージャ２２０は、出力クロック信号のうちの他の１つの周波数をランプアップする前に、出力クロック信号のうちの１つの周波数をランプアップし得る。この場合、第１の出力クロック信号のための待機時間と第２の出力クロック信号のための待機時間とは異なり得る。
【００９１】
[00104]この例におけるテーブルは、上記で説明された技法を使用して経験的に生成され得る。より詳細には、異なるシナリオの各々について、第１の出力クロック信号Ｃｌｋ＿ｏｕｔ１のためのパラメータのセットが決定され得、および／または第２の出力クロック信号Ｃｌｋ＿ｏｕｔ２のためのパラメータのセットが決定され得、これらのパラメータのセットは、ＰＤＮ上の電圧を、上記で説明されたオーバーシュート限界および／またはドループ限界内に保つ。
【００９２】
[00105]本開示の実施形態が、４つのプロセッサを備える処理システムの例を使用して上記で説明されたが、本開示の実施形態はこの例に限定されないことを諒解されたい。たとえば、本開示の実施形態は、２つのプロセッサを備える処理システム、８つのプロセッサを備える処理システムなどにおいて使用され得る。
【００９３】
[00106]図１２は、本開示の一実施形態による、例示的なクロックゲーティング回路１２１０を示す。プロセッサ１１５（１）〜１１５（４）の各々は、プロセッサによって受信されたクロック信号Ｃｌｋ＿ｏｕｔを選択的にゲートするために、クロックゲーティング回路１２１０を含み得る。クロックゲーティング回路１２１０は、クロックゲーティング論理１２２０と、クロックゲート１２２５とを備える。クロックゲーティング論理１２２０は、以下でさらに説明されるように、電力マネージャ２２０の制御下でクロックゲート１２２５を有効または無効にするように構成される。
【００９４】
[00107]図１２中の例では、クロックゲート１２２５は、クロック信号Ｃｌｋ＿ｏｕｔに結合された第１の入力と、クロックゲーティング論理１２２０に結合された第２の入力と、それぞれのプロセッサの論理ゲートに結合されたクロック出力１２３０とを有するＡＮＤゲートを備える。クロック出力１２３０は、論理ゲート１２４０の様々なゲートにクロック信号を与えるために、複数のクロック経路（図示せず）に分岐し得る。論理ゲート１２４０は、命令をフェッチ、復号および実行し、ならびに／またはクロック信号Ｃｌｋ＿ｏｕｔを使用して他の動作を実行するように構成され得る。この例では、クロックゲート１２２５は、クロックゲーティング回路１２２０がクロックゲート１２２５に論理０を出力したときに無効にされ（すなわち、クロック信号Ｃｌｋ＿ｏｕｔをブロックし）、クロックゲーティング回路１２２０がクロックゲート１２２５に論理１を出力したときに有効にされる（すなわち、クロック信号Ｃｌｋ＿ｏｕｔが通過することを可能にする）。
【００９５】
[00108]クロックゲーティング論理１２２０は、アイドルモードに入るようにとの信号を電力マネージャ２２０から受信すると、クロックゲート１２２５を無効にする（すなわち、クロック信号Ｃｌｋ＿ｏｕｔをゲートする）ように構成され得る。クロックゲーティング論理１２２０は、クロックゲート１２２５を無効にする前に、論理ゲートが１つまたは複数の未解決の命令を完了したことを検証し得る。クロックゲーティング論理１２２０はまた、アイドルモードを出る（たとえば、アクティブモードに遷移する）ようにとの信号を電力マネージャ２２０から受信すると、クロックゲート１２２５を有効にするように構成され得る。クロックゲーティング論理１２２０は、クロック信号Ｃｌｋ＿ｏｕｔまたは別のクロック信号（図示せず）によってクロック制御され得る。
【００９６】
[00109]図１３は、本開示の一実施形態による、１つまたは複数のプロセッサをアクティブ化するための方法１３００を示す流れ図である。１つまたは複数のプロセッサは、マルチコア処理システムの複数のプロセッサ（たとえば、プロセッサ１１５（１）〜１１５（４））のうちの１つまたは複数であり得る。この例では、１つまたは複数のプロセッサは、マルチコア処理システムの１つまたは複数の他のプロセッサがすでにアクティブモードにある間、アクティブ化され得る。
【００９７】
[00110]ステップ１３１０において、クロック信号の周波数を第１のクロック周波数から第２のクロック周波数に低減する。たとえば、クロック信号（たとえば、クロック信号Ｃｌｋ＿ｏｕｔ）は、マルチコア処理システムのプロセッサに与えられる。一例では、周波数低減は、入力クロック信号（たとえば、クロック信号Ｃｌｋ）を受信し、プロセッサにクロック信号（たとえば、クロック信号Ｃｌｋ＿ｏｕｔ）を出力する周波数調整器（たとえば、周波数調整器２１０）によって実行され得る。この例では、周波数調整器は、パルスをスワローすること、および／または入力クロック信号（たとえば、クロック信号Ｃｌｋ）の周波数を分割することによって、クロック信号（たとえば、クロック信号Ｃｌｋ＿ｏｕｔ）の周波数を低減し得る。また、この例では、第１のクロック周波数は、入力クロック信号（たとえば、クロック信号Ｃｌｋ）の周波数にほぼ等しくなり得、第２のクロック周波数は、入力クロック信号の周波数よりも低くなり得る。
【００９８】
[00111]ステップ１３２０において、クロック信号の周波数が低減された後に、１つまたは複数のプロセッサをアクティブ化する。これは、クロック信号が１つまたは複数のプロセッサ中の論理ゲートに伝搬することを可能にするために１つまたは複数のプロセッサ中の内部クロック経路をアンゲートし、論理ゲートがスイッチングを開始することを引き起こすことによって、行われ得る。
【００９９】
[00112]ステップ１３３０において、１つまたは複数のプロセッサのアクティブ化の後に、クロック信号の周波数を第１のクロック周波数に増加させる。たとえば、第１のクロック周波数は、上記で説明された入力クロック信号（たとえば、クロック信号Ｃｌｋ）の周波数にほぼ等しくなり得る。
【０１００】
[00113]本開示の実施形態は、１つまたは複数のプロセッサがアイドルモードからアクティブモードに遷移する例を使用して上記で説明されたが、本開示の実施形態はまた、１つまたは複数のプロセッサがアクティブモードからアイドルモードに遷移するときに使用され得ることを諒解されたい。この場合、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、ＰＤＮ上の電圧オーバーシュートを低減するために、１つまたは複数のプロセッサをアクティブモードからアイドルモードに通過するより前に低減され得る。低減された周波数は、１つまたは複数のプロセッサがアイドルモードに遷移するときの電流負荷が減少するレートを低減することによってオーバーシュートを低減する。１つまたは複数のプロセッサがアイドルモードになった後に、クロック信号Ｃｌｋ＿ｏｕｔの周波数は、フルクロック周波数に増加され得る。
【０１０１】
[00114]上記で説明された実施形態のいずれかに記載のクロックコントローラおよび電力マネージャは、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明された機能を実行するように設計されたそれらの任意の組合せを用いて実装され得ることを諒解されたい。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサは、本明細書で説明された遅延コントローラの機能を実行するためのコードを備えるソフトウェアを実行することによって機能を実行し得る。ソフトウェアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、光ディスク、および／または磁気ディスクなど、コンピュータ可読記憶媒体に記憶され得る。
【０１０２】
[00115]本開示についての以上の説明は、いかなる当業者も本開示を作成または使用することができるように与えられたものである。本開示への様々な修正は当業者には容易に明らかになり、本明細書で定義された一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明された例に限定されるものではなく、本明細書で開示された原理および新規の特徴に合致する最も広い範囲を与えられるべきである。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
複数のプロセッサと、
入力クロック信号を生成するように構成されたクロックデバイスと、
前記クロックデバイスから前記入力クロック信号を受信し、前記入力クロック信号に基づいて前記複数のプロセッサに出力クロック信号を出力するように構成された周波数調整器と、
前記プロセッサのうちの１つまたは複数をアクティブにするための信号を受信するように構成された電力マネージャと、ここにおいて、前記信号に応答して、前記電力マネージャは、前記出力クロック信号の周波数を第１のクロック周波数から第２のクロック周波数に低減するように前記周波数調整器に命令し、前記出力クロック信号の前記周波数が前記第２のクロック周波数にある間、前記プロセッサのうちの前記１つまたは複数をアクティブにし、前記プロセッサのうちの前記１つまたは複数がアクティブ化された後に、前記出力クロック信号の前記周波数を前記第２のクロック周波数から前記第１のクロック周波数に増加させるように前記周波数調整器に命令するように構成された、を備える、処理システム。
［Ｃ２］
前記第１のクロック周波数が、前記入力クロック信号の周波数にほぼ等しい、Ｃ１に記載の処理システム。
［Ｃ３］
前記第２のクロック周波数が、前記第１のクロック周波数の２０％〜８０％にほぼ等しい、Ｃ２に記載の処理システム。
［Ｃ４］
前記プロセッサのうちの１つまたは複数の他のプロセッサは、前記電力マネージャが前記プロセッサのうちの前記１つまたは複数をアクティブにする間、アクティブモードにある、Ｃ１に記載の処理システム。
［Ｃ５］
前記電力マネージャが、前記プロセッサのうちの前記１つまたは複数中の内部クロック経路をアンゲートすることによって、前記プロセッサのうちの前記１つまたは複数をアクティブにする、Ｃ１に記載の処理システム。
［Ｃ６］
前記周波数調整器が、前記入力クロック信号のパルスを選択的にスワローすることによって前記出力クロック信号の前記周波数を低減するように構成された、Ｃ１に記載の処理システム。
［Ｃ７］
前記周波数調整器が、前記入力クロック信号の周波数を分割することによって前記出力クロック信号の前記周波数を低減するように構成された、Ｃ１に記載の処理システム。
［Ｃ８］
前記プロセッサのうちの前記１つまたは複数をアクティブにするための前記信号が中断信号を備える、Ｃ１に記載の処理システム。
［Ｃ９］
前記電力マネージャが、中断まで待機（ＷＦＩ）命令の実行に応答して前記プロセッサのうちの前記１つまたは複数をアイドルモードに入れるように構成され、前記中断信号は、前記プロセッサのうちの前記１つまたは複数が前記アイドルモードに入れられた後に受信される、Ｃ８に記載の処理システム。
［Ｃ１０］
前記電力マネージャは、前記信号に応答してアクティブ化されるべき前記プロセッサのうちの前記１つまたは複数と、前記信号が受信された時間においてアクティブ状態にある前記プロセッサのうちの１つまたは複数の他のプロセッサとに基づいて、前記第２のクロック周波数を決定するように構成された、Ｃ１に記載の処理システム。
［Ｃ１１］
前記電力マネージャが、前記第１のクロック周波数に基づいて前記第２のクロック周波数を決定するようにさらに構成された、Ｃ１０に記載の処理システム。
［Ｃ１２］
１つまたは複数のプロセッサをアクティブ化するための方法であって、
クロック信号の周波数を第１のクロック周波数から第２のクロック周波数に低減することと、ここにおいて、前記クロック信号が、前記１つまたは複数のプロセッサを含む複数のプロセッサに出力される、
前記クロック信号の前記周波数が低減された後に前記１つまたは複数のプロセッサをアクティブ化することと、
前記１つまたは複数のプロセッサがアクティブ化された後に前記クロック信号を前記第２のクロック周波数から前記第１のクロック周波数に増加させることと
を備える、方法。
［Ｃ１３］
前記第２のクロック周波数が、前記第１のクロック周波数の２０％〜８０％にほぼ等しい、Ｃ１２に記載の方法。
［Ｃ１４］
前記複数のプロセッサのうちの１つまたは複数の他のプロセッサは、前記１つまたは複数のプロセッサがアクティブ化される間、アクティブモードにある、Ｃ１２に記載の方法。
［Ｃ１５］
前記１つまたは複数のプロセッサをアクティブ化することが、前記１つまたは複数のプロセッサ中の内部クロック経路をアンゲートすることを備える、Ｃ１２に記載の方法。
［Ｃ１６］
中断まで待機（ＷＦＩ）命令の実行に応答して前記１つまたは複数のプロセッサをアイドルモードに入れることと、
前記１つまたは複数のプロセッサが前記アイドルモードに入れられた後に中断信号を受信することと
をさらに備え、
ここにおいて、前記１つまたは複数のプロセッサが前記中断信号に応答してアクティブ化される、Ｃ１２に記載の方法。
［Ｃ１７］
前記１つまたは複数のプロセッサと、前記第２のクロック周波数の決定が行われる時間においてすでにアクティブ状態にある前記複数のプロセッサのうちの１つまたは複数の他のプロセッサとに基づいて、前記第２のクロック周波数を決定することをさらに備える、Ｃ１２に記載の方法。
［Ｃ１８］
前記第２のクロック周波数を決定することが、前記第１のクロック周波数に基づいて前記第２のクロック周波数を決定することをさらに備える、Ｃ１７に記載の方法。
［Ｃ１９］
１つまたは複数のプロセッサをアクティブ化するための装置であって、
クロック信号の周波数を第１のクロック周波数から第２のクロック周波数に低減するための手段と、ここにおいて、前記クロック信号が、前記１つまたは複数のプロセッサを含む複数のプロセッサに出力される、
前記クロック信号の前記周波数が低減された後に前記１つまたは複数のプロセッサをアクティブ化するための手段と、
前記１つまたは複数のプロセッサがアクティブ化された後に前記クロック信号を前記第２のクロック周波数から前記第１のクロック周波数に増加させるための手段と
を備える、装置。
［Ｃ２０］
前記第２のクロック周波数が、前記第１のクロック周波数の２０％〜８０％にほぼ等しい、Ｃ１９に記載の装置。
［Ｃ２１］
前記複数のプロセッサのうちの１つまたは複数の他のプロセッサは、前記１つまたは複数のプロセッサがアクティブ化される間、アクティブモードにある、Ｃ１９に記載の装置。
［Ｃ２２］
前記１つまたは複数のプロセッサをアクティブ化するための前記手段が、前記１つまたは複数のプロセッサ中の内部クロック経路をアンゲートするための手段を備える、Ｃ１９に記載の装置。
［Ｃ２３］
中断まで待機（ＷＦＩ）命令の実行に応答して前記１つまたは複数のプロセッサをアイドルモードに入れるための手段と、
前記１つまたは複数のプロセッサが前記アイドルモードに入れられた後に中断信号を受信するための手段と
をさらに備え、
ここにおいて、前記１つまたは複数のプロセッサをアクティブ化するための前記手段が、前記中断信号に応答して前記１つまたは複数のプロセッサをアクティブ化する、Ｃ１９に記載の装置。
［Ｃ２４］
前記１つまたは複数のプロセッサと、前記第２のクロック周波数の決定が行われる時間においてすでにアクティブ状態にある前記複数のプロセッサのうちの１つまたは複数の他のプロセッサとに基づいて、前記第２のクロック周波数を決定するための手段をさらに備える、Ｃ１９に記載の装置。
［Ｃ２５］
前記第２のクロック周波数を決定するための前記手段が、前記第１のクロック周波数に基づいて前記第２のクロック周波数をさらに決定する、Ｃ２４に記載の装置。
【図１】
0006530134.tif 000002
【図２】
0006530134.tif 000003
【図３Ａ】
0006530134.tif 000004
【図３Ｂ】
0006530134.tif 000005
【図４】
0006530134.tif 000006
【図５】
0006530134.tif 000007
【図６】
0006530134.tif 000008
【図７】
0006530134.tif 000009
【図８】
0006530134.tif 000010
【図９】
0006530134.tif 000011
【図１０】
0006530134.tif 000012
【図１１】
0006530134.tif 000013
【図１２】
0006530134.tif 000014
【図１３】
0006530134.tif 000015