(57)【特許請求の範囲】
【請求項１】
固定周波数クロック信号によって駆動される第１回路部分と、
前記第１回路部分に結合され、スケーラブル周波数コア・クロック信号によって駆動される第２回路部分であって、前記第１回路部分が、前記固定周波数クロック信号に基づいて内部タイムベース・カウンタまたはサンプリングされた外部タイムベース信号のうちの１つのティックの合計を累算し、前記スケーラブル周波数コア・クロック信号に基づいて前記第２回路部分にティックの前記累算された合計を供給する、前記第２回路部分と
を含む回路。
【請求項２】
前記第１回路部分が、前記固定周波数クロック信号によって駆動され、ティック（タイムベース値の１つ分の増分）の前記合計を累算するタイムベース・アキュムレータを含む、請求項１に記載の回路。
【請求項３】
前記タイムベース・アキュムレータが、前記スケーラブル周波数コア・クロック信号に基づいて、前記第２回路部分から送られるリセット信号のエッジを検出するエッジ検出回路要素を含み、ティックの前記累算された合計が、前記リセット信号の前記エッジの検出に応答して前記第２回路部分に供給される、請求項２に記載の回路。
【請求項４】
前記第１回路部分が、前記固定周波数クロック信号によって駆動される前記内部タイムベース・カウンタを含み、前記内部タイムベース・カウンタが、前記固定周波数クロック信号のサイクルの所定の個数おきに１つのティックを生成する、請求項１に記載の回路。
【請求項５】
前記第１回路部分が、タイムベース信号入力ピンと、前記タイムベース信号入力ピンを介して受け取られたタイムベース入力信号のエッジを検出するエッジ検出回路要素とを含む外部タイムベース回路を含む、請求項１に記載の回路。
【請求項６】
前記エッジ検出回路要素が、前記タイムベース入力信号の立ち上がりエッジの検出に応答してティックを生成する、請求項５に記載の回路。
【請求項７】
前記第２回路部分が、第１入力として前記第１回路部分からティックの前記累算された合計を受け取り、第２入力として前記第２回路部分に保管されたタイムベース値の現在の値を受け取る加算器を含み、前記加算器が、更新されたタイムベース値を出力する、請求項１に記載の回路。
【請求項８】
前記更新されたタイムベース値が、時間ベースの動作を実行するためのマイクロプロセッサによる使用のために前記第２回路部分によって出力される、請求項７に記載の回路。
【請求項９】
前記回路が、マイクロプロセッサの一部である、請求項１に記載の回路。
【請求項１０】
前記マイクロプロセッサが、玩具、ゲーム・マシン、ゲーム・コンソール、ハンドヘルド・コンピューティング・デバイス、携帯情報端末、通信デバイス、無線電話機、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、またはサーバ・コンピューティング・デバイスのうちの１つの一部である、請求項９に記載の回路。
【請求項１１】
データ処理デバイスで、時間ベースの動作を実行する際に使用されるタイムベース値を判定する方法であって、
固定周波数クロック信号を生成することと、
スケーラブル周波数コア・クロック信号を生成することと、
前記固定周波数クロック信号に基づいて内部タイムベース・カウンタまたはサンプリングされた外部タイムベース信号のうちの１つのティックの合計を累算することと、
更新されたタイムベース値を生成するために、前記スケーラブル周波数コア・クロック信号に基づいて、以前に保管されたタイムベース値にティックの前記累算された合計を加算することと、
時間ベースの動作を実行するためのマイクロプロセッサによる使用のために前記更新されたタイムベース値を出力することと
を含む方法。
【請求項１２】
ティックの合計を累算することが、前記固定周波数クロック信号によって駆動され、ティックの前記合計を累算するタイムベース・アキュムレータを使用することを含む、請求項１１に記載の方法。
【請求項１３】
前記タイムベース・アキュムレータが、前記スケーラブル周波数コア・クロック信号に基づいて、前記第２回路部分から送られるリセット信号のエッジを検出するエッジ検出回路要素を含み、ティックの前記累算された合計が、前記リセット信号の前記エッジの検出に応答して前記保管されたタイムベース値に加算される、請求項１２に記載の方法。
【請求項１４】
第１回路部分が、前記固定周波数クロック信号によって駆動される前記内部タイムベース・カウンタを含み、前記内部タイムベース・カウンタが、前記固定周波数クロック信号のサイクルの所定の個数おきに１つのティックを生成する、請求項１１に記載の方法。
【請求項１５】
前記内部タイムベース・カウンタが、タイムベース信号入力ピンと、前記タイムベース信号入力ピンを介して受け取られたタイムベース入力信号のエッジを検出するエッジ検出回路要素とを含む第１回路部分の一部である、請求項１１に記載の方法。
【請求項１６】
前記エッジ検出回路要素が、前記タイムベース入力信号の立ち上がりエッジの検出に応答してティックを生成する、請求項１５に記載の方法。
【請求項１７】
前記累算された合計を加算することが、第１入力としてティックの前記累算された合計を受け取り、第２入力としてタイムベース値の現在の値を受け取る加算器を使用することを含み、前記加算器が、前記更新されたタイムベース値を出力する、請求項１１に記載の方法。
【請求項１８】
前記データ処理デバイスが、マイクロプロセッサの一部である、請求項１１に記載の方法。
【請求項１９】
前記マイクロプロセッサが、玩具、ゲーム・マシン、ゲーム・コンソール、ハンドヘルド・コンピューティング・デバイス、携帯情報端末、通信デバイス、無線電話機、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、またはサーバ・コンピューティング・デバイスのうちの１つの一部である、請求項１８に記載の方法。
【請求項２０】
固定周波数クロック信号によって駆動される第１回路部分を設けることと、
前記第１回路部分に結合され、スケーラブル周波数コア・クロック信号によって駆動される第２回路部分であって、前記第１回路部分が、前記固定周波数クロック信号に基づいて内部タイムベース・カウンタまたはサンプリングされた外部タイムベース信号のうちの１つのティックの合計を累算し、前記スケーラブル周波数コア・クロック信号に基づいて前記第２回路部分にティックの前記累算された合計を供給する、第２回路部分を設けることと
を含む、回路を設ける方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサを対象とする。具体的には、本発明は、マイクロプロセッサの動作周波数をスケーリングする正確なタイムベースト・カウンタを提供するシステム、装置、および方法を対象とする。
【背景技術】
【０００２】
トランジスタの密度および速度のすばやい向上に伴って、チップが消費し得る電力の量が、ますます、チップ設計のクリティカルな判断基準になりつつある。具体的には、テクノロジでの各連続する縮小が、密度の増加をもたらし、チップ・フットプリントの縮小を可能にする。これは、チップがより高い周波数で動作することを可能にする。チップ・フットプリントは、ますます縮小されつつあるので、より少ない電力が、チップ自体を介して消費されつつある。したがって、チップによって消費される電力を減らすのに使用できるどのような方法であっても、性能の向上を引き起こすことができる。
【０００３】
チップの電力消費を減らすのに使用できる方法の１つが、周波数スケーリングである。周波数スケーリングは、チップが、高性能が必要な短い時間スパンの間に最高周波数で動作し、他の時により低い周波数で動作することを可能にする。具体的には、チップの電力消費は、次の式によって表すことができる。
電力＝ＫαＣ（Ｖ２）Ｆ＋ＱＶ２
ここで、Ｖは、チップのコア電圧であり、Ｆは、チップの動作周波数であり、αは、チップのアクティビティ・ファクタ（activity factor）であり、Ｃは、チップの実効キャパシタンス、ＫおよびＱは、他の要因の中でも製造プロセスに依存する定数である。この式から、チップの動作周波数が、その電力消費に直接に比例することがわかる。したがって、周波数の減少は、それに対応する電力消費の減少につながる。
【０００４】
チップの動作周波数を上下にスケーリングすべきか否かを判定するために、ある経過時間にわたってチップ内で発生する平均アクティビティを計算する必要がある。その経過時間にわたるチップ内のアクティビティが高い場合に、チップをより高い周波数で動作させることができる。その一方で、チップ内のアクティビティが低い場合には、チップをより低い周波数で動作させることができる。
【０００５】
コンピュータ・システム内では、タイムベースト・カウンタを使用して、経過時間を測定する。明らかに、このカウンタは、一定の速度で増分しなければならない。この速度は、通常、周波数クロックから導出される。より具体的には、このカウンタが増分する速度は、コア周波数クロックの１／ｎ（ｎは整数）（内部タイムベースト・カウンタの場合）とする、または、たとえばPowerPC Architecture Book IIIに記載のように、システムによって供給される外部クロック信号の立ち上がりエッジによって決定する（外部タイムベースト・カウンタの場合）のいずれかとすることができる。
【０００６】
図１は、既知の回路構成によるタイムベースト・カウンタの例示的な図である。図１に示されているように、この回路構成に、外部タイムベース部分１１０、内部タイムベース部分１２０、およびタイムベース値生成部分１３０が含まれる。外部タイムベース部分１１０に、タイムベース（tbase）入力ピン１１２およびエッジ検出回路１１４が含まれる。図１に示された回路内で使用されるすべての回路要素が、内部クロック信号またはコア・クロック信号によってクロッキングされる、すなわち、コア周波数クロック・ドメイン１８０内にある。
【０００７】
外部タイムベース部分１１０は、外部デバイスが、タイムベース入力ピン１１２を介してタイムベースト・カウンタにクロッキング信号を供給することを可能にする。外部タイムベース部分１１０のエッジ検出回路１１４は、外部タイムベース信号の立ち上がりエッジが検出されるたびに、外部タイムベース信号から「ティック（tick）」すなわち、タイムベース値の１つ分の増分を生成する。内部タイムベース部分１２０は、８つの内部クロック・サイクルまたはコア・クロック・サイクルおきに１つのティックを生成する、モジュロ８（または他の任意の個数のサイクル）カウンタである。内部タイムベース部分１２０に、インクリメンタ１２２、ラッチ１２４、およびコンパレータ１２６が含まれる。
【０００８】
外部タイムベース部分１１０および内部タイムベース部分１２０からの出力は、マルチプレクサ１４０に供給される。ＰｏｗｅｒＰＣアーキテクチャでは、システムが内部タイムベースまたは外部タイムベースを使用する場合を選択するアーキテクテッド・レジスタ（architected register）が設けられる。この選択に基づいて、対応する外部タイムベース部分１１０または内部タイムベース部分１２０が、マルチプレクサ１４０を介して選択されて、ティックを生成する。
【０００９】
タイムベース値生成部分１３０に、インクリメンタ１３２およびラッチ１３４が含まれる。インクリメンタ１３２は、マルチプレクサ１４０からの入力に応答して出力タイムベース値を増分する。タイムベース値生成部分１３０のインクリメンタ１３２は、受け取るティックごとに１つずつタイムベース値を増分する。結果のタイムベース値は、マイクロプロセッサの動作周波数を上下にスケーリングするかどうかを判定するのに使用することのできる、周波数独立時間期間に行われた作業の量を測定するためなど、経過時間を測定するのにマイクロプロセッサによって使用される出力である。
【００１０】
周波数スケーリング中に経過時間を測定するのに外部タイムベースまたは内部タイムベースのいずれかを使用することは、不正確な結果につながる場合がある。たとえば、内部タイムベースト・カウンタが使用される場合に、このカウンタは、より低いコア・クロック周波数ではより低速に、より高いコア・クロック周波数ではより高速にカウントする。したがって、タイムベースト・カウンタ回路１００が、一定の速度で増分しなくなる。
【００１１】
さらに、コア周波数は、最大電力削減のために非常に低い値にスケーリングされる場合がある。この周波数値は、正確な時間測定のためにシステム内で必要なタイムベース増加周波数（timebase increased frequency）より小さくなる場合がある。この場合に、タイムベース値生成部分１３０は、内部タイムベースが選択された場合に、内部タイムベース部分１２０が、コア・クロックが遅すぎることに起因して正確にティックを生成できないので、不正確になる。その代わりに、外部タイムベースが選択される場合に、外部タイムベース部分１１０は、タイムベース入力ピン１１２の信号のエッジを検出するのに使用されるコア周波数がタイムベース入力ピン１１２の信号自体より遅いので、タイムベース入力ピン１１２の信号の立ち上がりエッジのうちのいくつかを検出できなくなる。これが、やはり、タイムベース値生成部分１３０の不正確さにつながる。
【００１２】
１つの自明な解決策は、固定周波数クロックを使用することである。図２は、既知の回路構成による、固定周波数クロックを使用するタイムベースト・カウンタの図である。図２に示されているように、固定周波数クロックを、クロック生成部分２１０内の位相ロック・ループ（ＰＬＬ）２１２から直接に導出することができる。ＰＬＬは、発振器を制御し、その結果、この発振器が基準信号の周波数に対して一定の位相角を維持する（すなわち、ロックする）ようにする電子回路である。
【００１３】
図２に示された回路では、クロック生成部分２１０に、ＰＬＬ  ２１２、分周器２１４、およびマルチプレクサ２１６が含まれ、マルチプレクサ２１６は、ＰＬＬ  ２１２の固定周波数クロック信号出力と、分周器２１４によって出力される、ＰＬＬ  ２１２の分周された出力またはスケール・ダウンされた出力との間で選択する。周波数選択信号（ｆｒｅｑ＿ｓｅｌ）は、この２つの出力の間で選択するのに使用され、ここで選択された出力が、スケーラブル・コア周波数クロック２２０として供給される。
【００１４】
周波数選択信号は、内部タイムベース部分内のマルチプレクサ２３０にも供給されて、８サイクル入力信号とスケール・ダウンされた８サイクル入力信号すなわち、８／ｎとの間で選択する。このようにして、スケーラブル・コア周波数クロックがスケール・ダウンされる場合に、サイクル数も、内部タイムベース値の生成について同一の量だけスケール・ダウンされる。言い換えると、クロック周波数が、ｆｒｅｑ＿ｓｅｌ信号を介してスケーリングされ、たとえば半分にされるときに、内部タイムベース・カウンタの最大値も、その変更を反映するために半分にされる。
【００１５】
図示の例では、外部タイムベース部分１１０のエッジ検出回路１１４が、ＰＬＬ  ２１２によって生成される固定周波数で動作し、これは、タイムベース入力ピン１１２を介して受け取られる外部タイムベース・クロック信号より高い周波数である。したがって、外部タイムベース・クロック信号の立ち上がりエッジを、正しくサンプリングすることができる。しかし、コア・クロック周波数が、外部タイムベース部分１１０のティック周波数より低くなった場合に、エッジ検出回路１１４によって作られるティックのうちのいくつかが、コア周波数クロック・ドメイン１８０内で失われ、加算されるべきタイムベース値に加算されなくなるという点で、問題が生じる。
【００１６】
上で説明した内部タイムベース技法が使用される場合に、モジュロ・カウンタを変更して、コア・クロック周波数を半分にするときに、最大値の一部、たとえば半分だけをカウントする、たとえば、図示の例では８ではなく４にすることができる。これは、ティックの一定の周波数での生成を引き起こす。しかし、このオプションには、２つの主な制限がある。第１に、モジュロ・カウンタの最大値より大きい倍率、たとえば８倍に、周波数をスケーリングすることができない。第２に、たとえばコア・クロック周波数およびチップ製造パラメータに依存して、０コア・クロック・サイクルと３コア・クロック・サイクルとの間で変化する可能性があるクロック・メッシュのアナログ遅延の原因により、内部タイムベースのマルチプレクサ２３０と正確に同時にコア・クロック周波数を変更することは不可能である。したがって、マイクロプロセッサが、マイクロプロセッサの電力消費を減らすのに望ましいように、通常動作中に複数の周波数スケーリング動作を実行する場合に、１つまたは複数のティックが、最終的に時間とともに失われる。
【００１７】
言い換えると、プロセッサ周波数が低く、アナログ・メッシュ遅延が１サイクル未満であり、内部タイムベースが０のときに周波数スケーリングが行われる場合には、ティックは失われないはずである。しかし、プロセッサが非常に高い周波数で動作している場合に、図２でアナログ・メッシュ遅延として表されている、クロック・メッシュ上のアナログ遅延は、１つまたは複数のクロック・サイクルを超える。したがって、内部タイムベースが０のときにｆｒｅｑ＿ｓｅｌ信号を切り替えることは、メッシュ上のクロックが効果的に１つまたは複数のサイクルだけ後に低速化することをもたらし、したがって、タイムベース・カウンタは、正しくカウントしなくなる。高性能マイクロプロセッサでの限界ぎりぎりの電力管理では、クロック・メッシュ周波数も、外部タイムベース更新レート未満に下げられる。その結果、コアは、そのタイムベース値を十分高速に増分することができず、上の前の例と同様に、この回路が「ティック」を失う場合がある。
【非特許文献１】PowerPC Architecture Book III
【発明の開示】
【発明が解決しようとする課題】
【００１８】
この発明の目的は、マイクロプロセッサの動作周波数をスケーリングするための正確なタイムベースト・カウンタを提供するシステム、装置、および方法を提供することにある。
【課題を解決するための手段】
【００１９】
本システム、装置、および方法は、固定周波数クロックが、マイクロプロセッサのクロック生成回路のＰＬＬから導出され、外部タイムベース・ロジックおよび内部タイムベース・ロジックならびにタイムベース・アキュムレータ・カウンタに供給するのに使用される、タイムベースト・カウンタ回路構成を利用する。タイムベース・アキュムレータ・カウンタは、２つのコア・クロックの間にタイムベース・ロジックからのティック・イベントを累算する。累算された値は、スケーラブル・クロックのすべてのクロック・エッジにコア・クロック・ドメインに転送され、アキュムレータは、その後にリセットされる。累算されたティックが、アキュムレータがリセットされる前にコア・クロック・ドメインに転送されるので、ティックは、例示的実施形態の回路を使用すれば絶対に失われない。
【００２０】
この回路の内部タイムベース部分に関して、ティックすなわち、タイムベース値の１つ分の増分は、クロック生成回路の位相ロック・ループ（ＰＬＬ）によって生成される固定周波数クロック信号の所定の個数のサイクルおきに、たとえば８サイクルおきに、タイムベース・アキュムレータに送られる。アキュムレータは、この回路の内部タイムベース部分からティックを受け取ることに応答して増分する。
【００２１】
この回路のタイムベース値生成部分では、リセット信号が、スケーラブル・コア周波数クロックのサイクルごとにトリガされる。スケーラブル・コア周波数クロックの遷移すなわち立ち上がりエッジまたは立ち下がりエッジが、タイムベース・アキュムレータ内のエッジ検出器によって検出されるときに、現在のアキュムレータ値が、スケーラブル・コア・クロック・ドメインにコピーされ、そこにある現在のタイムベース値に加算される。それと同時に、アキュムレータ値が、リセットされ、新しいティックを累算する準備ができる。
【００２２】
ここで例として示す実施形態の機構は、既知の回路配置で経験される失われるティックの問題を解決するものである。この実施形態の機構は、この解決策を提供するためにごくわずかなロジックを追加し、コア内、固定クロック・ドメイン内、およびタイムベース入力ピン上のクロック周波数に非常に独立なタイムベース・ロジックの包括的アーキテクチャを作成する。
【００２３】
１つの例の実施形態では、固定周波数クロック信号によって駆動される第１回路部分と、前記第１回路部分に結合され、スケーラブル周波数コア・クロック信号によって駆動される第２回路部分とを含む回路が提供される。前記第１回路部分は、前記固定周波数クロック信号に基づいて内部タイムベース・カウンタまたはサンプリングされた外部タイムベース信号のうちの１つのティックの合計を累算することができ、前記スケーラブル周波数コア・クロック信号に基づいて前記第２回路部分にティックの前記累算された合計を供給することができる。
【００２４】
前記第１回路部分は、前記固定周波数クロック信号によって駆動され、ティックの前記合計を累算するタイムベース・アキュムレータを含むことができる。前記タイムベース・アキュムレータは、前記スケーラブル周波数コア・クロック信号に基づいて、前記第２回路部分から送られるリセット信号のエッジを検出するエッジ検出回路要素を含むことができる。ティックの前記累算された合計は、前記リセット信号の前記エッジの検出に応答して前記第２回路部分に供給されることができる。
【００２５】
前記第１回路部分は、前記固定周波数クロック信号によって駆動される前記内部タイムベース・カウンタを含むことができる。前記内部タイムベース・カウンタは、前記固定周波数クロック信号のサイクルの所定の個数おきに１つのティックを生成することができる。
【００２６】
前記第１回路部分は、タイムベース信号入力ピンと、前記タイムベース信号入力ピンを介して受け取られたタイムベース入力信号のエッジを検出するエッジ検出回路要素とを含む外部タイムベース回路を含むことができる。前記エッジ検出回路要素は、前記タイムベース入力信号の立ち上がりエッジの検出に応答してティックを生成することができる。
【００２７】
前記第２回路部分は、第１入力として前記第１回路部分からティックの前記累算された合計を受け取り、第２入力として前記第２回路部分に保管されたタイムベース値の現在の値を受け取る加算器を含むことができる。前記加算器は、更新されたタイムベース値を出力することができる。前記更新されたタイムベース値は、時間ベースの動作を実行するためのマイクロプロセッサによる使用のために前記第２回路部分によって出力されることができる。
【００２８】
前記回路は、マイクロプロセッサの一部とすることができる。前記マイクロプロセッサは、玩具、ゲーム・マシン、ゲーム・コンソール、ハンドヘルド・コンピューティング・デバイス、携帯情報端末、通信デバイス、無線電話機、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、またはサーバ・コンピューティング・デバイスのうちの１つの一部とすることができる。
【００２９】
もう１つの例示的実施形態では、時間ベースの動作を実行する際に使用されるタイムベース値を判定する方法が提供される。前記方法は、固定周波数クロック信号を生成することと、スケーラブル周波数コア・クロック信号を生成することと、前記固定周波数クロック信号に基づいて内部タイムベース・カウンタまたはサンプリングされた外部タイムベース信号のうちの１つのティックの合計を累算することとを含むことができる。前記方法は、さらに、更新されたタイムベース値を生成するために、前記スケーラブル周波数コア・クロック信号に基づいて、以前に保管されたタイムベース値にティックの前記累算された合計を加算することと、時間ベースの動作を実行するためのマイクロプロセッサによる使用のために前記更新されたタイムベース値を出力することとを含むことができる。
【００３０】
ティックの合計を累算することは、前記固定周波数クロック信号によって駆動され、ティックの前記合計を累算するタイムベース・アキュムレータを使用することを含むことができる。前記タイムベース・アキュムレータは、前記スケーラブル周波数コア・クロック信号に基づいて、前記第２回路部分から送られるリセット信号のエッジを検出するエッジ検出回路要素を含むことができる。ティックの前記累算された合計は、前記リセット信号の前記エッジの検出に応答して前記保管されたタイムベース値に加算されることができる。
【００３１】
第１回路部分は、前記固定周波数クロック信号によって駆動される前記内部タイムベース・カウンタを含むことができる。前記内部タイムベース・カウンタは、前記固定周波数クロック信号のサイクルの所定の個数おきに１つのティックを生成することができる。
【００３２】
前記第１回路部分は、タイムベース信号入力ピンと、前記タイムベース信号入力ピンを介して受け取られたタイムベース入力信号のエッジを検出するエッジ検出回路要素とを含むことができる。前記エッジ検出回路要素は、前記タイムベース入力信号の立ち上がりエッジの検出に応答してティックを生成することができる。
【００３３】
前記累算された合計を加算することは、第１入力としてティックの前記累算された合計を受け取り、第２入力としてタイムベース値の現在の値を受け取る加算器を使用することを含みむことができる。前記加算器は、前記更新されたタイムベース値を出力することができる。
【００３４】
前記データ処理デバイスは、マイクロプロセッサの一部とすることができる。前記マイクロプロセッサは、玩具、ゲーム・マシン、ゲーム・コンソール、ハンドヘルド・コンピューティング・デバイス、携帯情報端末、通信デバイス、無線電話機、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、またはサーバ・コンピューティング・デバイスのうちの１つの一部とすることができる。
【００３５】
さらに別の例の実施形態では、回路を設ける方法が提供される。この方法は、固定周波数クロック信号によって駆動される第１回路部分を設けることと、前記第１回路部分に結合され、スケーラブル周波数コア・クロック信号によって駆動される第２回路部分を設けることとを含むことができる。前記第１回路部分は、前記固定周波数クロック信号に基づいて内部タイムベース・カウンタまたはサンプリングされた外部タイムベース信号のうちの１つのティックの合計を累算することができ、前記スケーラブル周波数コア・クロック信号に基づいて前記第２回路部分にティックの前記累算された合計を供給することができる。
【００３６】
本発明の上記および他の特徴および利点は、本発明の例として示す、いくつかの実施形態の次の詳細な説明で説明され、あるいは、その説明に鑑みて当業者に明らかになるであろう。
【００３７】
本発明に特有と思われる新規の特徴を、添付の特許請求の範囲に示す。しかし、本発明自体ならびにその使用の好ましい態様、さらなる目的、および利点は、添付図面と共に読まれるときの例示的実施形態の次の詳細な説明への参照によって最もよく理解されるであろう。
【発明を実施するための最良の形態】
【００３８】
上で述べたように、例として示す実施形態は、マイクロプロセッサの動作周波数をスケーリングするための正確なタイムベースト・カウンタを提供する機構を提供する。例示的実施形態の機構を、動作周波数を切り替えることのできるすべてのマイクロプロセッサに一体化することができるものである。そのようなマイクロプロセッサの１例が、米国ニューヨーク州アーモンクのInternational Business Machines, Inc.社から入手できるＰｏｗｅｒＰＣ９７０ＦＸマイクロプロセッサである。図３は、例示的実施形態の例示的諸態様を実施できるマイクロプロセッサの例示的なブロック図である。図３は、例として示されており、この実施形態を実施できるマイクロプロセッサ・アーキテクチャのタイプに関する限定を述べ、または示唆するものではないことに留意されたい。
【００３９】
図面を参照すると、図３は、この実施形態のタイムベースト・カウンタ回路構成を実施できるマイクロプロセッサの例示的なブロック図である。図３に示されているように、マイクロプロセッサ３００に、実行コア３１０およびフロント・エンド３２０が含まれ、フロント・エンド３２０は、命令フェッチ・ユニット３２２と、命令キュー・ユニットと、デコード、クラック、およびグループ・ユニット３２４と、分岐ユニット３２６とを有する。命令を、Ｌ１命令キャッシュ３３０からフェッチし、分岐ユニット３２６によって提供される情報に従って命令キューにキューイングすることができる。その後、命令を、実行コア３１０にディスパッチすることができる。
【００４０】
実行コア３１０に、ベクトル処理ユニット３４０、浮動小数点実行ユニット３４２、第１整数実行ユニット３４４、ロード−ストア実行ユニット３４６、第２整数ユニット３４８、条件レジスタ・ユニット３５０、および分岐実行ユニット３５２が含まれる。ベクトル処理ユニット３４０は、たとえばＳＩＭＤ実行ユニットとすることができる。フロント・エンド３２０からディスパッチされた命令を実行するときのこれらのさまざまな要素の動作は、当技術分野で一般に既知であり、詳細な説明は、本明細書では示さない。本発明の好ましい実施形態に関して、時間を測定するのに使用される例示的実施形態のタイムベース・カウンタの値は、たとえば第２整数ユニット３４８内に置かれる特殊レジスタへのアクセスを介して（たとえば、ｍｆｓｐｒ命令を介して）読み取られる。
【００４１】
例示的実施形態は、マイクロプロセッサ３００の要素が動作するクロッキング周波数をスケーリングする際に使用される正確なタイムベースト・カウンタを提供する機構を提供する。そのようなスケーリングは、低い使用率または使用なしの期間中の電力消費を節約するために、より低い周波数へのクロッキング周波数の切替をサポートするマイクロプロセッサ設計で特に有用である。上で述べたように、そのような設計では、タイムベースト・カウンタを提供する既知の機構は、「ティック」またはタイムベースト・カウンタの増分がクロック周波数の切替に起因して失われる問題をこうむる。失われるティックは、タイムベースト・カウンタのタイムベース値を増分しなければならなかったが、なんらかの理由でそうしなかったティックである。例示的実施形態の機構は、クロッキング周波数が切り替えられるときであってもティックが失われない改善されたタイムベースト・カウンタを提供することによって、この問題を解決する。
【００４２】
本システム、装置、および方法は、固定周波数クロックが、マイクロプロセッサのクロック生成回路のＰＬＬから導出され、外部タイムベース・ロジックおよび内部タイムベース・ロジックならびにタイムベース・アキュムレータ・カウンタに供給するのに使用される、タイムベースト・カウンタ回路構成を利用する。タイムベース・アキュムレータ・カウンタは、２つのコア・クロックの間にタイムベース・ロジックからのティック・イベントを累算する。累算された値は、スケーラブル・クロックのすべてのクロック・エッジにコア・クロック・ドメインに転送され、アキュムレータは、その後にリセットされる。累算されたティックが、アキュムレータがリセットされる前にコア・クロック・ドメインに転送されるので、ティックは、例示的実施形態の回路を使用すれば絶対に失われない。
【００４３】
図４は、１つの実施形態に従う回路構成の例示的なブロック図である。図４からわかるように、回路構成４００は、図２に示された回路構成に似ているが、タイムベース・アキュムレータ部分４３０と、タイムベース値ジェネレータ部分４５０内のラッチ４５２、加算器４５４、ラッチ４５８、およびインバータ４５９とが追加されている。図からわかるように、クロック生成回路４６０内のＰＬＬ  ４６２によって生成される固定クロック周波数が、外部タイムベース・カウンタ部分４１０のエッジ検出器４１４を使用してタイムベース入力ピン４１２の外部タイムベース信号の立ち上がりエッジをサンプリングするのに使用される。これと同一の固定クロック周波数が、内部タイムベース・カウンタ部分４２０に供給するのに使用される。図示の例では、固定クロック周波数が、タイムベース入力ピン４１２でサンプリングされる外部タイムベース信号の周波数より高い周波数を有する。
【００４４】
回路構成４００の内部タイムベース・カウンタ部分４２０に関して、ティックは、クロック生成回路４６０のＰＬＬ  ４６２によって生成される固定周波数クロック信号の所定のサイクル数おきに、たとえば８サイクルおきに、タイムベース・アキュムレータ部分４３０に送られる。内部タイムベース・カウンタ部分４２０は、クロック生成回路４６０のＰＬＬ  ４６２からの固定周波数クロックの受取に応答して増分する。この固定周波数クロックは、コア・クロック周波数と独立に選択することができ、したがって、内部タイムベース・カウンタ部分４２０は、コア・クロック周波数と独立で外部タイムベース信号を正しくサンプリングするのに十分な固定周波数でタイムベース・アキュムレータ部分４３０に累算されるティックを生成することができる。これによって、正確であり、クロック周波数の切替に起因してティックを失うことのないタイムベースが保証される。
【００４５】
タイムベース・アキュムレータ部分４３０は、内部タイムベース・カウンタ部分４２０によって生成されたティックを累算する。タイムベース・アキュムレータ部分４３０と内部タイムベース・カウンタ部分４２０の両方が、固定周波数クロック・ドメイン４８０内にあり、したがって、ＰＬＬ  ４６２からの固定周波数クロックに起因する固定周波数で動作する。タイムベース・アキュムレータ部分４３０は、累算された値がコア・クロック周波数ドメイン４９０内のタイムベース値ジェネレータ部分４５０に安全に転送されるまで、マルチプレクサ４４０でのセッティングに基づく内部タイムベース・カウンタ部分４２０または外部タイムベース・カウンタ部分４１０のいずれかからのＴＡｉｎｃ信号に基づいて、ラッチ４３４にティックを累算する。タイムベース・アキュムレータ部分４３０内の累算された値が、ラッチ４３４からタイムベース値ジェネレータ部分４５０のラッチ４５２にＴａｖａｌ信号によって転送されるときに、タイムベース値ジェネレータ部分４５０は、累算された値を、加算器４５４を介して、タイムベース値ジェネレータ部分４５０のラッチ４５６に以前に保管された値に加算する。したがって、タイムベース値ジェネレータ部分４５０によって生成され、出力されるタイムベース値は、タイムベース・アキュムレータ部分４３０によって累算されたティック数に応じて、１つまたは複数だけ増分される場合がある。
【００４６】
スケーリングされたコア周波数クロックの遷移すなわち立ち上がりエッジまたは立ち下がりエッジが、タイムベース・アキュムレータ部分４３０のエッジ検出器４３６によって検出されるときに、ラッチ４３４に保管された現在のアキュムレータ値が、スケーラブルなコア・クロック周波数ドメイン４９０のラッチ４５２にコピーされ、加算器４５４を使用して、ラッチ４５６内の現在のタイムベース値に加算される。同時に、回路構成４００のタイムベース値ジェネレータ部分４５０内で、リセット信号すなわちＴＡｒｓｔ信号が、ラッチ４５８およびインバータ４５９によって、スケーリングされたコア周波数クロックの検出された遷移に応答してトグルされる。このリセット信号は、ラッチ４５８内で生成され、同一サイクルにラッチ４３４をリセットするためにエッジ検出器４３６内で使用される。
【００４７】
図４に示された回路によって提供される解決策は、すべての任意に選択されたコア・クロック周波数について働く。固定周波数クロックを、コア・クロック周波数と独立に選択し、セットすることができ、その結果、外部タイムベース信号をタイムベース入力ピン４１２で正しくサンプリングできるようになるので、回路構成４００は、正確でティックを失わないタイムベースを保証する。さらに、タイムベース値ジェネレータ部分４５０によって生成されるタイムベース値を、スケーリングされたコア・クロック周波数に基づいて更新できるので、このタイムベース値に、マイクロプロセッサが、高性能マイクロプロセッサによって一般に要求されるように、高速な形で、スケーリングされたコア・クロック周波数によって決定される周波数で、アクセスすることができる。
【００４８】
図５は、１つの例の実施形態による、図４に示された回路構成の動作を示すタイミング図である。固定クロック周波数５１０は、内部タイムベース・カウンタ部分４２０を使用してティックを生成することまたは外部タイムベース信号をサンプリングすることのいずれかに使用される。前に述べたように、例としてのＰｏｗｅｒＰＣアーキテクチャでは、システムが内部タイムベースまたは外部タイムベースを使用する場合を選択するアーキテクテッド・レジスタが設けられる。このセッティングが、マルチプレクサ４４０を制御する。しかし、本発明が、そのようなアーキテクチャに限定されず、本発明の趣旨および範囲から逸脱せずに、特定の実施態様に応じて、さまざまな外部タイムベース生成方式または内部タイムベース生成方式を本発明の機構と共に使用することができることに留意されたい。
【００４９】
マルチプレクサ４４０によるなど、ティックが検出されるたびに、ＴＡｉｎｃ信号５２０が、１サイクルの間だけパルスを送られる。すべてのＴＡｉｎｃパルスで、アキュムレータ・カウンタ信号値すなわちＴＡｖａｌ  ５３０が、１つだけ増分される。スケーラブル・クロック周波数５４０で動作するタイムベース値ジェネレータ部分４５０内のタイムベース・ロジックは、最終的に、現在のＴＡｖａｌ  ５３０の値を転送し、ＴＡｒｓｔ信号５５０をセットして、固定クロック周波数５１０で動作するロジックに通知する。固定周波数クロック・ロジック、たとえばエッジ検出器４３６は、ｒｅｓｅｔ信号５６０を生成して、アキュムレータ・カウント値、たとえばラッチ４３４に保管された値を初期値、たとえば０にリセットする。
【００５０】
タイムベース入力ピン４１２を介して入力される外部タイムベース信号の最高周波数は、固定周波数クロックで動作する、立ち上がりエッジを検出するエッジ検出器４１４によって決定される。非同期信号である外部タイムベース入力信号は、２つのラッチとその後の３つのラッチからなるデバウンシング・ロジック（図示せず）を通過して、論理「１」が検出され、グリッチがフィルタリングされる。追加のラッチを使用して、エッジ変化を検出することができる。これから、固定周波数クロックに対する最低タイムベース入力信号周波数の比を、次のように述べることができる。
最小Ｔｂａｓｅ−固定周波数クロック比：（３（論理「１」検出）×２（２つの半期間）＝１：６
【００５１】
１つの例示的実施形態で、加算器４５４の実施態様によって、この加算器が、フル・コア・クロック周波数の１／ｎで動作するときに８／ｎサイクルおきにのみ加算できるという要件を導入することができる。ワースト・ケースすなわちｎ＝１について、この加算器は、８サイクルを必要とし、したがって、上の比を１：８に制限しなければならない。しかし、これは、簡単に満足することができる。というのは、外部タイムベース信号が、通常は約１３３ＭＨｚの周波数を有し、ＰＬＬ  ４６２が、通常は約１ＧＨｚのコア・クロック周波数を送るからである。
【００５２】
例示的実施形態では、固定周波数クロックとスケーラブル・コア周波数クロックとの間の最大比を、次の条件によって制限することができる。まず、固定周波数クロックは、エッジ検出器４１４の正しい動作を保証するために、少なくともスケーラブル・コア周波数クロックと同等の速さである必要があるものとすることができる。第２に、コア・クロック周波数が固定クロック周波数と比較したときに遅いほど、アキュムレータをより幅広くしなければならない。
【００５３】
第１の条件は、簡単に満足することができる。というのは、ＰＬＬによって送られるコア・クロック周波数を、固定周波数クロックとして使用することができるからである。タイムベース・アキュムレータ増分と固定周波数クロックとの間の８：１の最大比を与えられれば、タイムベース・アキュムレータの幅は、次の式を用いて計算することができる。
アキュムレータ幅＝ｃｅｉｌ（ｌｎ  ２（固定周波数クロック−スケーラブル周波数クロック−比×２＋１））
【００５４】
たとえば、ＰｏｗｅｒＰＣ９７０＋マイクロプロセッサは、６４：１の最大クロック・スケーリング比をサポートする。例示的実施形態の回路構成を実施するときに、ＰｏｗｅｒＰＣ９７０＋マイクロプロセッサは、タイムベース・アキュムレータとして使用される８ビット・カウンタを必要とするはずである。
【００５５】
図６は、１つの例示的実施形態によるタイムベースト・カウンタの例示的動作の概要を示す流れ図である。図６に、ステップの特定の順序が示されているが、本発明が、図６のステップが実行される特定の順序に限定されないことを諒解されたい。逆に、図６のステップの多くを、本発明の趣旨および範囲から逸脱せずに、異なる順序で、あるいは実質的に同時に実行することができる。
【００５６】
図６からわかるように、この動作は、クロック生成回路が固定周波数クロック信号を生成することによって開始される（ステップ６１０）。外部タイムベース回路のエッジ検出器によって外部タイムベース信号をサンプリングするか、固定周波数クロック信号に基づいて内部タイムベース・カウンタを増分する（どちらが行われるかは、特定の実施態様に依存する）（ステップ６２０）。外部時間基準信号のサンプリングまたは内部タイムベース・カウンタの増分に基づいて、ティックを生成し、タイムベース・アキュムレータに送る（ステップ６３０）。
【００５７】
タイムベース・アキュムレータが、以前に保管された累算されたティック値にティックを加算する（ステップ６４０）。タイムベース・アキュムレータが、累算されたティック値をタイムベース値ジェネレータ回路に転送すべきかどうかを判定する（ステップ６５０）。前に説明したように、この判定には、スケーラブル・コア・クロック信号のエッジ遷移すなわち立ち上がりエッジまたは立ち下がりエッジの検出を用いることができる。しかし、これは、１つの可能な実施態様にすぎず、本発明は、リセット信号のトグルに限定されない。
【００５８】
累算されたティック値をタイムベース値ジェネレータ回路に転送する場合には、その値を、タイムベース値ジェネレータ回路にコピーする（ステップ６６０）。次に、タイムベース・アキュムレータ内で、累算されたティック値をリセットする（ステップ６７０）。
【００５９】
タイムベース値ジェネレータは、累算されたティック値を以前に保管されたタイムベース値に加算し（ステップ６８０）、マイクロプロセッサによる使用のために、更新されたタイムベース値を出力する（ステップ６９０）。その後、動作が終了する。マイクロプロセッサが動作している間に、この動作を継続的に繰り返すことができることに留意されたい。
【００６０】
したがって、この例の実施形態は、既知の回路構成によって経験されるティックの遺失の問題を解決する回路構成を提供する。この例の実施形態の回路を用いると、回路の第１部分が、固定周波数クロックに基づいて動作し、固定周波数でティックを累算するのに使用される。回路の第２部分では、タイムベース値が、スケーラブル・コア・クロック周波数に基づいて生成され、スケーラブル・コア・クロック周波数によって決定される周波数で、回路の第１部分の累算されたティックを使用して更新される。その結果、ティックは、失われず、スケーラブル・コア・クロック周波数で動作するマイクロプロセッサは、マイクロプロセッサによって望まれる周波数で正しいタイムベース値にアクセスすることができる。
【００６１】
上で説明した回路は、集積回路チップの設計の一部とすることができる。チップ設計は、グラフィカル・コンピュータ・プログラミング言語で作成され、コンピュータ記憶媒体（ディスク、テープ、物理ハード・ドライブ、またはストレージ・アクセス・ネットワークなどの仮想ハード・ドライブなど）に保管される。設計者が、チップを製造しないか、チップ製造に使用されるフォトリソグラフィ・マスクを製造しない場合に、その設計者は、物理的手段によって（たとえば、設計を保管した記憶媒体のコピーを提供することによって）または電子的に（たとえば、インターネットを介して）、結果の設計を直接にまたは間接にそのような実体に送ることができる。保管された設計は、その後、フォトリソグラフィ・マスクの製造に適当なフォーマット（たとえば、ＧＤＳＩＩ）に変換され、このマスクには、通常、ウェハ上に形成される当のチップ設計の複数のコピーが含まれる。フォトリソグラフィ・マスクは、エッチングされまたは他の形で処理されるウェハの区域（またはその上のレイヤあるいはその両方）を画定するのに利用される。
【００６２】
結果の集積回路チップは、粗ウェハの形で（すなわち、複数の未パッケージングのチップを有する単一のウェハとして）、むき出しのダイとして、またはパッケージ化された形で、製造者によって配布することができる。後者の場合に、このチップは、シングル・チップ・パッケージ（マザーボードまたは他の上位レベル・キャリアに固定されるリードを有するプラスチック・キャリアなど）またはマルチチップ・パッケージ（表面相互接続または埋め込み相互接続の一方または両方を有するセラミック・キャリアなど）に取り付けられる。どの場合でも、チップは、（ａ）マザーボードなどの中間製品または（ｂ）最終製品のいずれかの一部として、他のチップ、ディスクリート回路要素、または他の信号処理デバイスあるいはこれらの組合せと一体化される。
【００６３】
最終製品は、玩具および他のローエンド・アプリケーションから、ディスプレイ、キーボードまたは他の入力デバイス、および中央プロセッサを有する高度なコンピュータ製品までの範囲にわたる、集積回路チップを含むすべての製品とすることができる。さらに、集積回路チップを設けることのできる最終製品に、ゲーム・マシン（game machine）、ゲーム・コンソール（game console）、ハンドヘルド・コンピューティング・デバイス、携帯情報端末、無線電話機および類似物などの通信デバイス、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、またはすべての他のコンピューティング・デバイスを含めることができる。
【００６４】
本発明の説明は、例示および説明のために提示されたものであり、網羅的であること、または開示された形態の発明に限定することを意図されたものではない。多数の修正形態および変形形態が、当業者に明らかであろう。ここに示す実施形態は、本発明および実用的応用例の原理を最もよく説明するために、および当業者が企図される特定の使用に適するさまざま変更を伴うさまざまな実施形態のために本発明を理解することを可能にするために選択され、説明されたものである。
【図面の簡単な説明】
【００６５】
【図１】既知の回路構成によるタイムベースト・カウンタを示す例示的な図である。
【図２】既知の回路構成による、固定周波数クロックを使用するタイムベースト・カウンタを示す図である。
【図３】例示的実施形態のタイムベースト・カウンタ回路構成を実施できるマイクロプロセッサを示す例示的なブロック図である。
【図４】１つの例示的実施形態による回路構成を示す例示的なブロック図である。
【図５】１つの例示的実施形態による、図４に示された回路構成の動作を示すタイミング図である。
【図６】１つの例示的実施形態によるタイムベースト・カウンタの例示的動作の概要を示す流れ図である。
【符号の説明】
【００６６】
１００  タイムベースト・カウンタ回路
１１０  外部タイムベース部分
１１２  タイムベース（tbase）入力ピン
１１４  エッジ検出回路
１２０  内部タイムベース部分
１２２  インクリメンタ
１２４  ラッチ
１２６  コンパレータ
１３０  タイムベース値生成部分
１３２  インクリメンタ
１３４  ラッチ
１４０  マルチプレクサ
１８０  コア周波数クロック・ドメイン
２１０  クロック生成部分
２１２  位相ロック・ループ（ＰＬＬ）
２１４  分周器
２１６  マルチプレクサ
２２０  スケーラブル・コア周波数クロック
２３０  マルチプレクサ
３００  マイクロプロセッサ
３１０  実行コア
３２０  フロント・エンド
３２２  命令フェッチ・ユニット
３２４  デコード、クラック、およびグループ・ユニット
３２６  分岐ユニット
３３０  Ｌ１命令キャッシュ
３４０  ベクトル処理ユニット
３４２  浮動小数点実行ユニット
３４４  第１整数実行ユニット
３４６  ロード−ストア実行ユニット
３４８  第２整数ユニット
３５０  条件レジスタ・ユニット
３５２  分岐実行ユニット
４００  回路構成
４１０  外部タイムベース・カウンタ部分
４１２  タイムベース入力ピン
４１４  エッジ検出器
４２０  内部タイムベース・カウンタ部分
４３０  タイムベース・アキュムレータ部分
４３４  ラッチ
４３６  エッジ検出器
４４０  マルチプレクサ
４５０  タイムベース値ジェネレータ部分
４５２  ラッチ
４５４  加算器
４５６  ラッチ
４５８  ラッチ
４５９  インバータ
４６０  クロック生成回路
４６２  ＰＬＬ
４８０  固定周波数クロック・ドメイン
４９０  コア・クロック周波数ドメイン
５１０  固定クロック周波数
５２０  ＴＡｉｎｃ信号
５３０  ＴＡｖａｌ
５４０  スケーラブル・クロック周波数
５５０  ＴＡｒｓｔ信号
５６０  ｒｅｓｅｔ信号
６１０  固定周波数クロック信号を生成するステップ
６２０  外部タイムベース信号をサンプリングする／固定周波数クロック信号に基づいて内部タイムベース・カウンタを増分するステップ
６３０  ティックを生成し、タイムベース・アキュムレータに送るステップ
６４０  以前に保管された累算されたティック値にティックを加算するステップ
６５０  累算されたティック値を転送するかどうかを判定するステップ
６６０  累算されたティック値をタイムベース値ジェネレータにコピーするステップ
６７０  累算されたティック値をリセットするステップ
６８０  累算されたティック値を以前に保管されたタイムベース値に加算するステップ
６９０  マイクロプロセッサによる使用のためにタイムベース値を出力するステップ
【図１】
0004843480.tif 000002
【図２】
0004843480.tif 000003
【図３】
0004843480.tif 000004
【図４】
0004843480.tif 000005
【図５】
0004843480.tif 000006
【図６】
0004843480.tif 000007