(57)【要約】  一実施形態では、ＳＯＣ（又は更に個別チップシステム）などの集積回路は、様々な場所に１つ以上のローカルタイムベースを含む。タイムベースは、相応の使用中に変動を受けることがある高周波ローカルクロックに基づいてインクリメントすることができる。周期的に、変動を受けることの少ない低周波クロックに基づいて、ローカルタイムベースを、ハードウェア回路を使用して正確な時間に同期させることができる。具体的には、次の同期用の正確なタイムベース値を、それぞれのローカルタイムベースに送信することができ、ローカルタイムベースの制御回路は、同期が発生する前にローカルタイムベースが正確な値に到達する場合に、ローカルタイムベースを正確な値に飽和させるように構成することができる。同様に、同期が発生し、かつローカルタイムベースが正確な値に到達していない場合、制御回路は、正確なタイムベース値をロードするように構成することができる。
2019504423.tif 000002
【特許請求の範囲】
【請求項１】
第１のタイムベースレジスタと、
前記第１のタイムベースレジスタに結合された第１の制御回路であって、
第１のクロックに応じて前記第１のタイムベースレジスタにおける第１のタイムベース値をインクリメントし、
同期イベントの前に、前記第１のタイムベース値が第１の値に到達したことに応じて、前記第１の値に前記第１のタイムベース値を飽和させ、
前記同期イベント、及び前記同期イベントの前に前記第１のタイムベース値が前記第１の値に到達しないことに応じて、前記第１のタイムベースレジスタに前記第１の値をロードする、
ように構成された、第１の制御回路と、
前記第１の制御回路に結合された第２の制御回路であって、
前記第１の値を生成し、
第２のクロックに応じて前記同期イベントを生成する、
ように構成された、第２の制御回路と、
を備える装置。
【請求項２】
第２のタイムベースレジスタと、
前記第２のタイムベースレジスタ及び前記第２の制御回路に結合された第３の制御回路であって、
第３のクロックに応じて、前記第２のタイムベースレジスタにおける第２のタイムベース値をインクリメントし、
前記同期イベントの前に、前記第２のタイムベース値が前記第１の値に到達したことに応じて、前記第１の値に前記第２のタイムベース値を飽和させ、
前記同期イベント、及び前記同期イベントの前に前記第２のタイムベース値が前記第１の値に到達しないことに応じて、前記第２のタイムベースレジスタに前記第１の値をロードする、
ように構成された、第３の制御回路と、
を更に備える、請求項１に記載の装置。
【請求項３】
前記第１のクロック及び前記第３のクロックが同じ周波数を有し、前記第２のクロックは、前記同じ周波数未満の第２の周波数を有する、請求項２に記載の装置。
【請求項４】
前記第１のクロックが第１の周波数を有し、前記第２のクロックが前記第１の周波数未満の第２の周波数を有し、連続する同期イベントにおける前記第１の値の間の差が前記第１の周波数と前記第２の周波数との比に依存する、請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記同期イベントが、前記第２のクロックのエッジである、請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記エッジが立ち上がりエッジであり、前記第２の制御回路は、前記第２のクロックの立ち下がりエッジに応じて前記第１の値を送信するように構成された、請求項５に記載の装置。
【請求項７】
前記第１のクロックは、第１のクロック発生源によって生成され、前記第２のクロックは、第２のクロック発生源によって生成され、前記第１のクロック発生源は、使用中に第１の変動を受け、前記第２のクロック発生源は、使用中に第２の変動を受け、前記第１の変動の第１の範囲は、前記第２の変動の第２の範囲よりも大きい、請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記第２の制御回路に結合された第３のタイムベースレジスタを更に備え、前記第２の制御回路が、
前記第１のクロックに応じて前記第３のタイムベースレジスタにおける第３のタイムベース値をインクリメントし、
前記同期イベントの前に、前記第３のタイムベース値が前記第１の値に到達したことに応じて、前記第１の値に前記第３のタイムベース値を飽和させ、
前記同期イベント、及び前記同期イベントの前に前記第３のタイムベース値が前記第１の値に到達しないことに応じて、前記第３のタイムベースレジスタに前記第１の値をロードする、
ように構成された、請求項１に記載の装置。
【請求項９】
複数の構成要素であって、前記構成要素のそれぞれがローカルタイムベース回路を含み、前記構成要素のそれぞれが前記ローカルタイムベース回路から時間を測定するように構成されており、前記ローカルタイムベース回路が、請求項１に記載の装置の前記第１のタイムベースレジスタ及び前記第１の制御回路のインスタンスである、複数の構成要素と、
各ローカルタイムベース回路において前記第１のタイムベースレジスタを同期させるように構成されたグローバルタイムベース回路と、
を備える集積回路であって、前記グローバルタイムベース回路は、請求項１に記載の前記第２のタイムベースレジスタ及び前記第２の制御回路のインスタンスである、集積回路。
【請求項１０】
前記第１のクロックを生成するように構成されたクロック発生回路を更に備え、前記第２のクロックは、前記集積回路への入力から受信される、請求項９に記載の集積回路。
【請求項１１】
前記第１のクロックは、第１のクロック周波数を有し、前記第２のクロックは、前記第１のクロック周波数未満の第２のクロック周波数を有し、前記第２のクロック周波数と前記第１のクロック周波数との前記比は、連続する次のタイムベース値の差を示す、請求項９に記載の集積回路。
【請求項１２】
第１のクロックに応じて第１のタイムベースレジスタにおける第１のタイムベース値をインクリメントすることと、
同期イベントの前に前記第１のタイムベース値が第１の値に到達したことに応じて、前記第１の値に前記第１のタイムベース値を飽和させることと、
前記同期イベント、及び前記同期イベントの前に前記第１のタイムベース値が前記第１の値に到達しないことに応じて、前記第１のタイムベースレジスタに前記第１の値をロードすることと、
前記第１の値を生成することと、
第２のクロックに応じて前記同期イベントを生成することと、
を含む方法。
【請求項１３】
第３のクロックに応じて第２のタイムベースレジスタにおける第２のタイムベース値をインクリメントすることと、
前記同期イベントの前に、前記第２のタイムベース値が前記第１の値に到達したことに応じて、前記第１の値に前記第２のタイムベース値を飽和させることと、
前記同期イベント、及び前記同期イベントの前に前記第２のタイムベース値が前記第１の値に到達しないことに応じて、前記第２のタイムベースレジスタに前記第１の値をロードすることと、
を更に含む、請求項１２に記載の方法。
【請求項１４】
前記第１のクロック及び前記第３のクロックが同じ周波数を有し、前記第２のクロックは、前記同じ周波数未満の第２の周波数を有する、請求項１３に記載の方法。
【請求項１５】
前記第１のクロックが第１の周波数を有し、前記第２のクロックが前記第１の周波数未満の第２の周波数を有し、連続する同期イベントにおける前記第１の値の間の差が前記第１の周波数と前記第２の周波数との比に依存する、請求項１２から１４のいずれか一項に記載の方法。
【請求項１６】
前記同期イベントが、前記第２のクロックの第１のエッジである、請求項１５に記載の方法。
【請求項１７】
前記第１のエッジの反対側の前記第２のクロックの第２のエッジに応じて前記第１の値を送信することを更に含み、前記送信することは、前記第１のクロックに応じて実行される、請求項１６に記載の方法。
【請求項１８】
前記第１のエッジが前記立ち上がりエッジであり、前記第２のエッジが前記立ち下がりエッジである、請求項１７に記載の方法。
【請求項１９】
第１のクロック発生源によって前記第１のクロックを生成することと、
第２のクロック発生源によって前記第２のクロックを生成することと、
を更に含み、前記第１のクロック発生源は、第１の変動を受け、前記第２のクロック発生源は、第２の変動を受け、前記第１の変動の第１の範囲は、前記第２の変動の第２の範囲よりも大きい、請求項１２から１８のいずれか一項に記載の方法。
【請求項２０】
前記第１のクロックに応じて第３のタイムベースレジスタにおける第３のタイムベース値をインクリメントすることと、
同期イベントの前に、前記第３のタイムベース値が前記第１の値に到達したことに応じて、前記第１の値に前記第３のタイムベース値を飽和させることと、
前記同期イベント、及び前記同期イベントの前に前記第３のタイムベース値が前記第１の値に到達しないことに応じて、前記第３のタイムベースレジスタに前記第１の値をロードすることと、
を更に含む、請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載の実施形態は、システムオンチップ（systems on a chip）（ＳＯＣ）などの集積回路におけるタイムベースの同期に関する。
〔関連技術の説明〕
【０００２】
デジタルシステムにおいて、実時間（又は「ウォールクロックタイム（wall clock time）」）は、タイムベースによって表される。典型的には、タイムベースは、システム起動時にゼロにリセットされ、システム内のクロックに従ってインクリメントされる。システム起動時の実時間が既知である（通常はソフトウェアで維持されている）場合は、タイムベース値を実時間に加算して現在時刻を決定することができる。
【０００３】
より大きいシステム、又はシステム内の集積回路に関しては、短待ち時間で単一のグローバルタイムベースにアクセスすることは、困難である。過去には、グローバルタイムベースバスは、ＳＯＣにわたって、タイムベースへのアクセスが必要とされる場所に送られた。この手法は、短待ち時間のアクセスを提供することができるが、所望の全てのアクセスポイントにバスをルーティングするために面積オーバーヘッドを増大させ、バス上の信号伝搬の待ち時間のために物理的設計のタイミングを閉じることは困難である。別の手法は、ＳＯＣにわたってローカルタイムベースを追加することを含む。しかし、ローカルクロックの変動、更に様々なポイントでのクロック用の異なるクロック発生源にも起因して、グローバルタイムベースとローカルタイムベースとの間の同期は、容易に失われることがある。ソフトウェアによって、グローバルタイムベースを読み出し、このタイムベースをローカルタイムベースに伝搬させて、ローカルタイムベースに同期させることができるが、新たな値を伝搬する待ち時間を考慮しなければならず、これを正確に判定することは困難である。更に、ソフトウェアの同期は、望ましいより相当頻度が低いことがあり、ローカルタイムベースに、同期の間の時間周期の間に大きな変動を経験させる。
【０００４】
更に、タイムベース精度を維持するために、高品質な水晶クロック信号を必要とする。低周波水晶クロック信号が利用可能であり得るが、そのようなクロックは、ＳＯＣの種々の構成要素の動作クロック周波数に比べてタイムベース更新があまりにもまれに発生するので、より高いタイムベースの精度／粒度を提供しない。水晶信号を介して必要な周波数を得ることは困難である。更に、低周波水晶クロック信号に基づいて外部タイムベースを維持することができるが、外部タイムベースとＳＯＣ内の様々なタイムベースとの間の同期は、実現することが困難なことがある。
【発明の概要】
【０００５】
一実施形態では、ＳＯＣ（又は更に個別チップシステム）などの集積回路は、様々な場所に１つ以上のローカルタイムベースを含む。タイムベースは、使用中に変動を受けることがある高周波ローカルクロックに基づいてインクリメントすることができる。周期的に、変動を受けることの少ない低周波クロックに基づいて、ローカルタイムベースを、ハードウェア回路を使用して正確な時間に同期させることができる。具体的には、次の同期用の正確なタイムベース値を、それぞれのローカルタイムベースに送信することができ、ローカルタイムベースの制御回路は、同期が発生する前にローカルタイムベースが正確な値に到達する場合に、ローカルタイムベースを正確な値に飽和させるように構成することができる。同様に、同期が発生し、かつローカルタイムベースが正確な値に到達していない場合、制御回路は、正確なタイムベース値をロードするように構成することができる。したがって、ソフトウェアの同期の必要性を取り除くと同時に、タイムベースの高い分解能／粒度、タイムベースへの短待ち時間のアクセス、及びタイムベースの高精度をサポートすることができる。外部タイムベースへの同期もまた、例えば、次の同期イベントにおける外部タイムベースに対する正確なタイムベース値をローカルタイムベースに送信し、それらのローカルタイムベースに飽和／更新することにより、実行することができる。
以下の詳細な説明は、次に簡単に記述する添付の図面を参照する。
【図面の簡単な説明】
【０００６】
【図１】ＳＯＣを含む集積回路の一実施形態のブロック図である。
【図２】ローカルタイムベース回路の一実施形態のブロック図である。
【図３】グローバルタイムベース回路の一実施形態のブロック図である。
【図４】タイムベース同期の一実施形態を示すタイミング図である。
【図５】タイムベースを同期させるためのローカルタイムベース回路の一実施形態の動作を示すフローチャートである。
【図６】タイムベースを同期させるためのグローバルタイムベース回路の一実施形態の動作を示すフローチャートである。
【図７】タイムベースを初期化するためのグローバルタイムベース回路及びローカルタイムベース回路の一実施形態の動作を示すフローチャートである。
【図８】システムの一実施形態のブロック図である。
【０００７】
この開示に記述する実施形態には、各種の変更形態及び代替形態の余地があり得るが、その具体的な実施形態を例として図面に示し、本明細書で詳細に説明する。しかし、図面及び図面に関する詳細な説明は、開示する特定の形態に実施形態を限定することを意図しておらず、むしろその意図は、添付の請求項の主旨及び範囲に含まれる全ての変更形態、均等形態、及び代替形態を網羅することであることを理解されたい。本明細書で使用する見出しは、構成を目的とするにすぎず、説明の範囲を限定するために使用することを意図してはいない。この出願を通して使用するとき、「〜し得る（may）」という語は、義務的な意味（即ち、〜しなければならない（must）を意味する）ではなく、許容的な意味（即ち、〜する可能性を有することを意味する）で使用される。同様に、「含む（include）」、「含んでいる（including）」及び「含む（includes）」という語は、何かを含むことを意味するが、その何かに限定されることを意味しない。
【０００８】
種々のユニット、回路、又は他の構成要素については、１タスク（単数又は複数）を実行「するように構成される（configured to）」ものとして述べる場合がある。このような状況では、「〜するように構成される」は、動作中にタスク（単数又は複数）を実行する「回路を備えている（having circuitry）」ことを広く意味する構造の広義な記述である。よって、ユニット／回路／構成要素は、そのユニット／回路／構成要素が現在動作していないときでも、タスクを実施するように構成することができる。一般的に、「〜ように構成される」に対応する構造を形成する回路は、ハードウェア回路を含み得る。ハードウェア回路は、組み合わせ論理回路、フロップ、レジスタ、ラッチ等のクロックド記憶デバイス、有限状態マシン、スタティックランダムアクセスメモリ又は埋め込みダイナミックランダムアクセスメモリなどのメモリ、カスタム設計回路、アナログ回路、プログラマブル論理アレイなどの任意の組み合わせを含むことができる。同様に、種々のユニット／回路／構成要素は、説明を簡便にするために、タスク（単数又は複数）を実行するものとして述べる場合がある。そのような説明は、「〜ように構成される」という語句を含むものとして解釈されるべきである。１つ以上のタスクを実行するように構成されているユニット／回路／構成要素の記載は、そのユニット／回路／構成要素について米国特許法第１１２条（ｆ）の解釈を援用しないことを明示的に意図している。
【０００９】
一実施形態では、本開示に従ったハードウェア回路は、回路の記述を、Ｖｅｒｉｌｏｇ又はＶＨＤＬなどのハードウェア記述言語（hardware description language）（ＨＤＬ）でコーディングすることによって実装されてもよい。ＨＤＬ記述は、所与の集積回路製造技術のために設計されたセルのライブラリに対して合成されてもよく、タイミング、電力、その他の理由のために修正されて、結果としてファウンドリに送信することができる最終設計データベースとなり、マスクを生成し、最終的に集積回路を製造することができる。いくつかのハードウェア回路又はその一部も、回路図エディタでカスタム設計して、合成された回路とともに集積回路設計に取り込むことができる。集積回路は、トランジスタを含んでもよく、他の回路素子（例えば、コンデンサ、抵抗、インダクタなどの受動素子）、及びトランジスタと回路素子との間の相互接続を更に含むことができる。いくつかの実施形態は、ハードウェア回路を実装するために一体に結合された複数の集積回路を実装することができ、及び／又は、いくつかの実施形態では、個別素子を使用することができる。あるいは、ＨＤＬ設計は、フィールドプログラマブルゲートアレイ（field programmable gate array）（ＦＰＧＡ）などのプログラム可能な論理アレイに合成されてもよく、ＦＰＧＡに実装されてもよい。
【００１０】
この明細書は、「一実施形態」又は「ある実施形態」に対する参照を含む。特徴の任意の組み合わせを含む実施形態が概して意図されるが、本明細書で明示的に否定しない限り、「一実施形態で」又は「ある実施形態で」のフレーズの形態は、必ずしも同じ実施形態を指していない。特定の機能、構造又は特性は、本開示に整合する任意の好適な方法で組み合わせられてもよい。
【発明を実施するための形態】
【００１１】
次に図１を参照すると、メモリ１２及び外部クロック発生源３４に結合されたＳＯＣ１０の一実施形態のブロック図が示されている。名前が暗示するように、ＳＯＣ１０の構成要素は、集積回路「チップ」として、単一の半導体基板上に集積化することができる。いくつかの実施形態では、構成要素は、システム内の２つ以上の個別のチップ上に実装してもよい。しかし、本明細書では、ＳＯＣ１０を例として用いる。例示する実施形態では、ＳＯＣ１０の構成要素は、中央処理装置（central processing unit）（ＣＰＵ）コンプレックス１４、「常時オン」構成要素１６、周辺構成要素１８Ａ〜１８Ｂ（より簡単に、「周辺装置」）、メモリコントローラ２２、電力マネージャ（ＰＭＧＲ）３２、内部クロック発生回路３６、及び通信ファブリック２７を含む。構成要素１４、１６、１８Ａ〜１８Ｂ、２２、３２、及び３６は、通信ファブリック２７に全て結合することができる。メモリコントローラ２２は、使用中にメモリ１２に結合することができる。常時オン構成要素１６は、外部クロック発生源３４に接続することができる。例示する実施形態では、ＣＰＵコンプレックス１４は、１つ以上のプロセッサ（図１のＰ３０）を含み得る。プロセッサ３０は、ＳＯＣ１０内のＣＰＵコンプレックス１４のＣＰＵ（単数又は複数）を形成することができる。いくつかの実施形態では、第２の内部クロック発生回路３７が含まれてもよく、１つ以上のローカルタイムベース（例えば、図１のローカルタイムベース２６Ｂ）に結合されてもよい。このような実施形態では、ローカルタイムベース２６Ｂは、クロック発生回路３６に結合されなくてもよい。更に他の実施形態では、追加の複数のクロック発生回路が含まれてもよい。
【００１２】
ＳＯＣ１０内の様々な構成要素は、時間を決定するためにタイムベースへのアクセスを有してもよい。タイムベースを使用して、イベントのタイムスタンプを生成する（例えば、イベントの時間的順序を確認することができるように、又は所与のイベントを特定の実時間（ウォールクロックタイム）に関連付けることができるように）ことができる。タイムベースを使用して、アプリケーションに時間を提供する（例えば、ユーザに表示する、又はアラート若しくはアラームなどの時間に基づく通知を可能にする）ことができる。タイムベースを使用して、経過時間を測定する（例えば、マルチタスキング・オペレーティング・システムにおけるタスクの実行をスケジュールする）ことができる。一般に、タイムベースは、任意の時間の単位とすることができる。一実施形態では、タイムベースは、特定の粒度の時間を表す値（例えば、最下位の桁が特定の時間を表すことができる）であってよい。最下位の桁のいくつかは、実際に実装されなくてもよい（例えば、タイムベース値が、ＳＯＣ１０のクロックが許可することができるよりも高い粒度で時間を測定する場合）。他の実施形態では、タイムベース値は、ＳＯＣ１０のクロックのティックを測定してもよい。クロックの周波数に基づいて、実時間を計算することができる。
【００１３】
タイムベースを使用する構成要素は、ローカルタイムベース回路（例えば、図１のＣＰＵコンプレックス１４内のローカルタイムベース回路２６Ａ〜２６Ｄ、周辺装置１８Ａ、メモリコントローラ２２、及びＰＭＧＲ３２）を含むことができる。一実施形態では、構成要素は、複数のローカルタイムベース回路を有することができる（例えば、ＣＰＵコンプレックス１４内のそれぞれのＣＰＵ３０に対してローカルタイムベース回路２６Ａ〜２６Ｄが存在してもよい）、及び／又は複数の構成要素が、ローカルタイムベース回路２６Ａ〜２６Ｄを共有してもよい。常時オン構成要素１６内のグローバルタイムベース回路２０は、ローカルタイムベース回路２６Ａ〜２６Ｄによって維持されるローカルタイムベースを同期させるように構成されてもよい。いくつかの実施形態では、グローバルタイムベース回路２０は、グローバルタイムベースを維持することもできる。
【００１４】
クロック発生器３６は、ローカルタイムベース（及び、任意選択的に、含まれる場合はグローバルタイムベース）を更新するために使用することができる比較的高い周波数クロック（Ｆｒ＿ｃｌｋ）を生成するように構成されてもよい。これにより、クロック発生器３６とローカルタイムベース回路２６Ａ〜２６Ｄと任意選択的にグローバルタイムベース回路２０との間にＦｒ＿ｃｌｋが結合される。クロック発生器３６は、位相ロックループ（phase−locked−loop）（ＰＬＬ）、遅延ロックループ（delay−locked−loop）（ＤＬＬ）などの任意の設計及び構成を有していてもよい。一般に、クロック発生器３６は、使用中にＦｒ＿ｃｌｋのクロック周波数の変動をまねく種々の不正確さの発生源の影響下にあることがある。例えば、クロック発生器３６内の回路は、温度変化、回路の遅延を変化させる電源電圧変動、ジッタ、ノイズ等に起因する変動を受けやすいことがある。電源電圧変動としては、ノイズ、負荷等による過渡変動、及び使用時の動的電圧変化などの意図的な変動を挙げることができる。Ｆｒ＿ｃｌｋの周波数は、経時的にドリフトすることがあり、所望の周波数よりも高速かつ／又は低速である。これにより、ローカルタイムベースに誤りが存在することがある。
【００１５】
回路解析、経験的データ、及び／又はシミュレーションに基づいて、周波数変動は、所望の周波数の周囲の範囲内にあると判定することができる。所望の周波数（すなわち、クロック発生器３６から予期される周波数）を公称周波数と称することができる。クロックは、公称周波数の周囲に何らかの変動が存在し得ることが既知の所与の周波数を名目上有すると称することができる。クロックは、その公称周波数を比較することによって、変動が周波数を変化させることがあることを知ることによって、より高い又はより低い周波数を名目上有すると称することができる。
【００１６】
低周波クロック（Ｒｔ＿ｃｌｋ）は、ＳＯＣ１０への入力（例えば、外部クロック発生源３４用）上で受信することができる。外部クロック発生源３４は、例えば、水晶発振器などの「高品質」クロック発生源とすることができる。クロック品質は、様々な方法で測定することができるが、一般に、使用中に低い変動を経験するクロックを指すことがある。これにより、Ｒｔ＿ｃｌｋは、例えば、Ｆｒ＿ｃｌｋより使用中の低い変動を有することができる。すなわち、Ｒｔ＿ｃｌｋの公称周波数の周囲のクロック周波数の変動の範囲は、Ｆｒ＿ｃｌｋの変動の範囲よりも小さくすることができる。
【００１７】
したがって、同期イベントをＲｔ＿ｃｌｋからトリガして、ローカルタイムベースを（互い及び正確なタイムベース値の両方に）同期させることができる。同期イベントは、タイムベースの同期を行なわせる任意の通信とすることができる。例えば、グローバルタイムベース回路２０は、Ｒｔ＿ｃｌｋからトリガされた信号をローカルタイムベース回路２６Ａ〜２６Ｃにアサートするように構成することができる。グローバルタイムベース回路２０はまた、ローカルタイムベースが更新のための同期値を有するように、Ｒｔ＿ｃｌｋに基づいて次のタイムベース同期値を通信することができる。一実施形態では、グローバルタイムベース回路２０は、Ｒｔ＿ｃｌｋ信号の各期間に１回、同期イベントをトリガすることができる。例えば、同期イベントは、クロックのエッジでトリガされてもよい。この説明の一例として立ち上がりエッジを用いてもよいが、立ち下がりエッジを用いてもよい。グローバルタイムベース回路２０はまた、エッジ（例えば、同期イベントのエッジの反対側のエッジ、又は立ち上がりエッジの例に対する立ち下がりエッジ）に応じて、次のタイムベース同期値を送信することができる。他の実施形態は、所望により、Ｒｔ＿ｃｌｋの複数の期間、又はＲｔ＿ｃｌｋの各エッジ上に一度に発生するように同期イベントを定義することができる。
【００１８】
次のタイムベース同期値は、前回の同期値、及びＦｒ＿ｃｌｋとＲｔ＿ｃｌｋとの周波数の比に依存する値から各同期期間を生成してもよい。この比率は整数値ではないため、タイムベースは、Ｒｔ＿ｃｌｋ周期に関して整数部と小数部とを有していてもよい。例えば、一実施形態では、Ｆｒ＿ｃｌｋは２４メガヘルツ（ＭＨｚ）であってもよく、Ｒｔ＿ｃｌｋは３２，７６８Ｈｚであってもよい。この例では、最も単純な数学的形式で、比は、２４ＭＨｚ／３２，７６８Ｈｚ、又は４６８７５／６４である。したがって、連続する同期タイムベース値の間の差は、４６８７５であってもよく、Ｆｒ＿ｃｌｋの各クロック周期は、ローカルタイムベース上の６４の増分であってもよい。小数部分は、各増分が６４であるために５ビットであってもよく、各種実施形態では、小数部分は、所望により、実装されてもよい、又は実装されなくてもよい。いくつかの実施形態では、小数部分は、外部クロック発生源から導出されるタイムベースに対するローカルタイムベースのドリフトを防止するために使用することができる。これにより、Ｆｒ＿ｃｌｋの増分及び連続する同期値の差の両方を、周波数の比に依存させることができる。
【００１９】
一実施形態では、少なくとも１つのローカルタイムベース回路２６Ａ〜２６Ｄは、グローバルタイムベース回路２０によって送信される次のタイムベース同期値を取り込むように構成され、ローカルタイムベースが所与の同期期間内にインクリメントされると、ローカルタイムベースを次のタイムベース同期値と比較することができる。Ｆｒ＿ｃｌｋが予期されるより高い周波数で動作している場合、ローカルタイムベースは、同期期間の終了前に次のタイムベース同期値に到達することができる。ローカルタイムベース回路２６Ａ〜２６Ｄは、同期期間の残部に対して、ローカルタイムベース値を次のタイムベース同期値に飽和させることができる。これにより、ローカルタイムベースは、同期期間の終了でタイムベースが有することになるのを上回るだけ、正確なタイムベース値の「前方」にならなくてよい。加えて、同期イベントに応じて、ローカルタイムベース回路２６Ａ〜２６Ｄは、ローカルタイムベースに次のタイムベース同期値をロードしてもよい（ローカルタイムベースが次の同期値に到達していないと仮定して）。次のタイムベース同期値のロードは、ローカルタイムベースが同期期間を上回るだけ正確なタイムベースの「後」に来ることを防止することができる。
【００２０】
任意の通信機構を使用して、グローバルタイムベース回路２０からローカルタイムベース回路２６Ａ〜２６Ｄに次のタイムベース同期値を送信することができる。一実施形態では、Ｆｒ＿ｃｌｋの速度でのシリアルインターフェースを用いて、その値を送信することができる。この例では、Ｆｒ＿ｃｌｋがＲｔ＿ｃｌｋより大幅に高い周波数であるため、同期期間の終了のずっと前にローカルタイムベース回路２６Ａ〜２６Ｂで、次のタイムベース同期値を受信することができる。
【００２１】
例示的な実施形態は、クロック発生回路３６からローカルタイムベース回路２６Ａ〜２６Ｄ及びグローバルタイムベース回路２０に提供される１つのＦｒ＿ｃｌｋを示しているが、他の実施形態は、図１に鎖線形式で示すＦｒ＿ｃｌｋ２をローカルタイムベース回路２６Ｂに提供するクロック発生回路３７などの、複数のＦｒ＿ｃｌｋの発生源を有することができる。このような実施形態では、ローカルタイムベース回路２６Ｂは、クロック発生回路３６からＦｒ＿ｃｌｋを受信しなくてもよい。更に他の実施形態では、様々なローカルタイムベース回路２６Ａ〜２６Ｄに他のＦｒ＿ｃｌｋを提供する、より多くの内部クロック発生回路が存在してもよい。発生源は、使用時にクロックの位相及び周波数が異なることができるように、互いに独立していてもよい。
【００２２】
前述したように、インクリメントは、所与の同期期間の間、次のタイムベース同期値に飽和させることができる。一般に、値を飽和させることは、その値までインクリメントするが、その後インクリメントした結果を追加のインクリメントにおいてもその値で定常的に保持することを指すことがある。インクリメントすることは、一般に、使用中に一定量だけ値を増加させることを指し得る。一定量は、いくつかの実施形態では、１若しくは他の任意の整数又は他の値であってよい。上述した例では、増分は６４であってもよい。
【００２３】
一実施形態では、常時オン構成要素１６は、ＳＯＣ１０の他の構成要素（例えば、ＣＰＵコンプレックス１４、周辺装置１８Ａ〜１８Ｂ、及びＰＭＧＲ３２）が電源切断されているときに、電源投入されたままであるように構成することができる。より具体的には、常時オン構成要素１６は、ＳＯＣ１０が外部の電力管理ユニット（power management unit）（ＰＭＵ）から電力を受けているときは常にオンとすることができる。よって、常時オン構成要素は、ＳＯＣ１０がなんらかの電力を受けている場合（例えば、ＳＯＣ１０を含むデバイスがスタンバイモードにあるとき、又はアクティブに動作しているとき）に電源がオンにすることができるが、ＳＯＣ１０がなんらかの電力を受けていないとき（例えば、デバイスの電源が完全にオフにされているとき）には電源がオンにされていなくてもよいという意味で「常時オン」である。常時オン構成要素１６は、ＳＯＣ１０の残り部分がオフである間に特定の機能をサポートし、低電力動作を可能にし得る。加えて、グローバルタイムベース回路２０は、システムに対するグローバルタイムベースを維持し続けることができるので、ＳＯＣ１０の次の電源投入時にグローバルタイムベースを再設定する必要がない。
【００２４】
図１では、常時オン構成要素１６を他の構成要素から隔てる点線２４が、常時オン構成要素１６のための独立したパワードメインを示し得る。他の構成要素、構成要素の群、及び／又は下位構成要素もまた独立したパワードメインを有し得る。一般に、パワードメインは、他のパワードメインから独立して、電源電圧を受ける（すなわち電源オンされる）、又は電源電圧を受けない（すなわち電源オフされる）ように構成することができる。いくつかの実施形態では、複数のパワードメインに、異なる大きさの電源電圧を同時に供給することができる。独立性は、各種のやり方でもたらされ得る。例えば、独立性は、外部ＰＭＵからの別個の電源電圧入力を設けることによって、電源電圧入力と構成要素の間に電源スイッチを設け、ユニットとしての所与のドメインのための電源スイッチを制御することによって、及び／又は上記の組み合わせによってもたらされ得る。図１に例示するよりも多くのパワードメインもまた存在し得る。例えば、ＣＰＵコンプレックス１４は、ある実施形態では、独立したパワードメインを有し得る（各ＣＰＵプロセッサ３０もまた独立したパワードメインを有し得る）。ある実施形態では、１つ以上の周辺構成要素１８Ａ〜１８Ｂが、１つ以上の独立したパワードメイン内にあり得る。
【００２５】
概して、構成要素は、電源オンされる又は電源オフされると称され得る。構成要素は、設計されたように動作し得るように、電源電圧を受けている場合に電源オンされ得る。構成要素は、電源オフされる場合に、電源電圧を受けておらず、動作していない。構成要素は、電源オンされる場合に電源投入されるとも称され得、電源オフされる場合に電源切断されるとも称され得る。構成要素の電源投入は、電源オフされている構成要素に電源電圧を供給することを意味し得、構成要素の電源切断は、構成要素への電源電圧の供給を終了することを意味し得る。同様に、任意の下位構成要素及び／又はＳＯＣ１０の全体は、電源投入される／電源切断されるなどと称され得る。構成要素は、ＳＯＣ１０内の指定された機能を提供し、ＳＯＣ１０の残り部分に対する特定のインターフェースを有する、回路の予め定められたブロックであり得る。よって、常時オン構成要素１６、周辺装置１８Ａ〜１８Ｂ、及びＣＰＵコンプレックス１４、メモリコントローラ２２、並びにＰＭＧＲ３２は、それぞれ構成要素の例であり得る。
【００２６】
構成要素は、電源投入されクロックゲートされていない場合、アクティブであり得る。よって、例えば、ＣＰＵコンプレックス１４内のプロセッサは、アクティブである場合、命令実行のために利用可能であり得る。構成要素は、電源オフされている場合、又は命令が実行され得る前に著しい遅延が経験され得る別の低電力状態にある場合に、非アクティブであり得る。例えば、構成要素は、位相ロックループ（ＰＬＬ）のリセット又は再ロックを必要とする場合、電源供給されたままでも非アクティブであり得る。構成要素はまた、クロックゲートされている場合、非アクティブであり得る。クロックゲートは、構成要素内のデジタル回路へのクロックが一時的に「オフにされ」、フロップ、レジスタなどのクロック制御される記憶デバイス内のデジタル回路から状態がキャプチャされることを妨げる技術を意味し得る。
【００２７】
上述したように、ＣＰＵコンプレックス１４は、ＳＯＣ１０内のＣＰＵコンプレックス１４のＣＰＵ（単数又は複数）として機能することができる、１つ以上のプロセッサ３０を含むことができる。システムのＣＰＵは、オペレーティングシステムなどの、システムの主制御ソフトウェアを実行するプロセッサ（単数又は複数）を含む。概して、使用中にＣＰＵにより実行されるソフトウェアは、システムの所望の機能を実現するために、システムの他の構成要素を制御し得る。プロセッサは、アプリケーションプログラムなどの他のソフトウェアも実行し得る。アプリケーションプログラムは、ユーザ機能を提供し得、低レベルデバイス制御、スケジューリング、メモリ管理などについてオペレーティングシステムに依存し得る。したがって、プロセッサは、アプリケーションプロセッサとも称され得る。ＣＰＵコンプレックス１４は、Ｌ２キャッシュ及び／又はシステムの他の構成要素に対するインターフェース（例えば、通信ファブリック２７に対するインターフェース）などの他のハードウェアを更に含み得る。
【００２８】
動作点は、電源電圧の大きさと、ＣＰＵコンプレックス１４、常時オン構成要素１６、ＳＯＣ１０の他の構成要素などの動作周波数との組み合わせを意味し得る。動作周波数は、構成要素をクロック制御するクロックの周波数であり得る。動作周波数は、クロック周波数又は単に周波数とも称され得る。動作点は、動作状態又は電力状態とも称され得る。動作点は、常時オン構成要素１６に記憶され、再設定が生じるときに構成要素内に再プログラミングされ得る、プログラミング可能な設定データの一部分であり得る。
【００２９】
概して、プロセッサは、プロセッサにより実装される命令セットアーキテクチャ内に定義された命令を実行するように構成された任意の回路及び／又はマイクロコードを含み得る。プロセッサは、集積回路上に他の構成要素とともにシステムオンチップ（ＳＯＣ  １０）又は他の一体化レベルとして実装されるプロセッサコアを包含してもよい。プロセッサは、別個のマイクロプロセッサ、マルチチップモジュール実装内に集積化されるプロセッサコア及び／又はマイクロプロセッサ、複数の集積回路として実装されるプロセッサなどを更に包含し得る。
【００３０】
メモリコントローラ２２は、概して、ＳＯＣ１０の他の構成要素からメモリ操作を受信し、メモリ操作を完了するためにメモリ１２にアクセスするための回路を含み得る。メモリコントローラ２２は、任意の形式のメモリ１２にアクセスするように構成することができる。例えば、メモリ１２は、スタティックランダムアクセスメモリ（static random access memory）（ＳＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４など）ＤＲＡＭを含むシンクロナスＤＲＡＭ（synchronous DRAM）（ＳＤＲＡＭ）などのダイナミックＲＡＭ（dynamic RAM）（ＤＲＡＭ）であり得る。ＤＤＲ  ＤＲＡＭの低電力／モバイルバージョン（例えば、ＬＰＤＤＲ、ｍＤＤＲなど）がサポートされ得る。メモリコントローラ２２は、操作を順序付けし（及び場合によっては再順序付けし）、メモリ１２へ操作を提示するための、メモリ操作用の待ち行列を含み得る。メモリコントローラ２２は、メモリへの書き込みを待っている書き込みデータ、及びメモリ操作の送信元への返送を待っている読み出しデータを記憶するためのデータバッファを更に含んでもよい。いくつかの実施形態では、メモリコントローラ２２は、最近アクセスされたメモリデータを記憶するためのメモリキャッシュを含み得る。ＳＯＣ実装形態では、例えば、メモリキャッシュは、データがほどなく再びアクセスされると予想される場合、メモリ１２からのデータの再アクセスを回避することによって、ＳＯＣ内の電力消費を低減させ得る。幾つかの場合、メモリキャッシュは、Ｌ２キャッシュ又はプロセッサ内のキャッシュなど特定の構成要素のみに役立つプライベートキャッシュとは異なり、システムキャッシュとも称され得る。加えて、幾つかの実施形態では、システムキャッシュはメモリコントローラ２２内に位置する必要がない。
【００３１】
周辺装置１８Ａ〜１８Ｂは、ＳＯＣ１０内に含まれる追加ハードウェア機能の任意のセットであり得る。例えば、周辺装置１８Ａ〜１８Ｂは、カメラ若しくは他の画像センサからの画像キャプチャデータを処理するように構成された画像信号プロセッサなどの映像周辺装置、１つ以上の表示デバイスに映像データを表示するように構成された表示コントローラ、グラフィック処理ユニット（graphics processing units）（ＧＰＵ）、映像エンコーダ／デコーダ、スケーラ、ローテータ、ブレンダなどを含み得る。周辺装置は、マイクロフォン、スピーカ、マイクロフォン及びスピーカに対するインターフェース、音声プロセッサ、デジタル信号プロセッサ、ミキサなどの音声周辺装置を含み得る。周辺装置は、ユニバーサルシリアルバス（Universal Serial Bus）（ＵＳＢ）、ＰＣＩエクスプレス（PCI Express）（ＰＣＩｅ）を含むペリフェラルコンポーネント相互接続（peripheral component interconnect）（ＰＣＩ）、シリアルポート及びパラレルポートなどのインターフェースを含む、ＳＯＣ１０（例えば周辺装置１８Ｂ）の外部の各種のインターフェースのためのインターフェースコントローラを含み得る。周辺装置は、メディアアクセスコントローラ（media access controllers）（ＭＡＣ）などのネットワーク用周辺装置を含み得る。ハードウェアの任意のセットが含まれてもよい。
【００３２】
通信ファブリック２７は、ＳＯＣ１０の構成要素間で通信するための任意の通信相互接続及び通信プロトコルであり得る。通信ファブリック２７は、共有バス構成、クロスバー構成、及びブリッジを有する階層化バス、を含むバスベースであり得る。通信ファブリック２７は、またパケットベースとすることもでき、ブリッジを有する階層構造、クロスバー、ポイントツーポイント、又は他の相互接続とすることもできる。
【００３３】
ＰＭＧＲ３２は、外部のＰＭＵから要求される電源電圧の大きさを制御するように構成されてもよい。外部のＰＭＵによってＳＯＣ１０のために生成される複数の電源電圧が存在してもよい。例えば、ＣＰＵコンプレックス１４用の電源電圧、ＳＯＣの残部用の電源電圧、メモリ１２用の電源電圧などが存在してもより。ＰＭＧＲ３２は、直接ソフトウェア制御下にしてもよい（例えば、ソフトウェアは、構成要素の電源投入及び／又は電源切断を直接要求してもよい）、及び／又は、ＳＯＣ１０を監視して、様々な構成要素がいつ電源投入若しくは電源切断されるべきかを判定するように構成してもよい。
【００３４】
ＳＯＣ１０の構成要素の数（及びＣＰＵコンプレックス１４内などの、図１に示すものに関する下位構成要素の数）が実施形態によって異なり得ることに留意されたい。各構成要素／下位構成要素の数は、図１に示すよりも多くても少なくてもよい。
【００３５】
図２は、ローカルタイムベース回路２６Ａの一実施形態のブロック図である。他のローカルタイムベース回路２６Ｂ〜２６Ｄも同様とすることができる。図２の実施形態では、ローカルタイムベース回路２６Ａは、制御回路４０と、次の同期値レジスタ４２と、ローカルタイムベースレジスタ４４と、インクリメントレジスタ４６とを含む。制御回路４０は、グローバルタイムベース回路２０からＦｒ＿ｃｌｋ入力及びグローバルタイムベースインターフェースに結合され、更に次の同期値レジスタ４２、ローカルタイムベースレジスタ４４、及びインクリメントレジスタ４６に結合される。
【００３６】
制御回路４０は、Ｆｒ＿ｃｌｋに応じて、レジスタ４２内の次のタイムベース同期値（「次の同期値」）での飽和に従うローカルタイムベースレジスタ４４をインクリメントするように構成することができる。例えば、Ｆｒ＿ｃｌｋの各立ち上がりエッジに応じて増分を適用することができる。前述したように、例示的な実施形態では、増分の大きさは、Ｆｒ＿ｃｌｋ周波数とＲｔ＿ｃｌｋ周波数との比に依存することができる。増分の大きさは、例えば、インクリメントレジスタ４６にプログラムされてもよい。制御回路４０は、現在のローカルタイムベースに増分を加算し、その結果（次の同期値で飽和した）をローカルタイムベースレジスタ４４に書き込むことができる。
【００３７】
一実施形態では、次の同期値は、同期イベントの間の期間の間にグローバルタイムベースインターフェースを介してローカルタイムベース回路２６Ａに送信してもよい。上記の例では、Ｒｔ＿ｃｌｋの立ち上がりエッジで、同期イベントが発生し、Ｒｔ＿ｃｌｋの立ち下がりエッジで、次の同期値が送信される。より具体的には、グローバルタイムベースインターフェースは、Ｆｒ＿ｃｌｋ周波数で動作するシリアルインターフェースであってもよく、一実施形態では、Ｒｔ＿ｃｌｋの立ち下がりエッジで始まるＦｒ＿ｃｌｋの複数のクロック周期にわたって次の同期値を送信してもよい。制御回路４０は、次の同期値が提供されているときに次の同期値レジスタ４２をシフトレジスタとして動作させるように構成することができ、次の同期値レジスタ４２にシフトした後に次の同期値が有効であることを示すように構成することができる。制御回路４０は、更新された値が送信されるまで、同期イベントに応じて、次の同期値を無効に処理するように構成されてもよい。他の実施形態は、値を並列バスとして、又は他の機構を使用して送信することができる。
【００３８】
他の実施形態では、ローカルタイムベース回路２６Ａは、グローバルタイムベース回路２０からの同期値間の差を受信してもよく、その差を以前の値に加算することによって、ローカルで次の同期値を生成するように構成されてもよい。
【００３９】
次に図３に移ると、グローバルタイムベース回路２０の一実施形態のブロック図が示されている。図３の実施形態では、グローバルタイムベース回路２０は、制御回路５０と、次の同期値レジスタ５２と、グローバルタイムベースレジスタ５４と、インクリメントレジスタ５６と、同期インクリメントレジスタ５８とを含む。制御回路５０は、Ｒｔ＿ｃｌｋ入力、Ｆｒ＿ｃｌｋ入力、及びローカルタイムベース回路２６Ａ〜２６Ｄへのグローバルタイムベースインターフェースに結合される。制御回路５０は更に、次の同期値レジスタ５２、グローバルタイムベースレジスタ５４、インクリメントレジスタ５６、及び同期インクリメントレジスタ５８に結合される。
【００４０】
ローカルタイムベース回路２６Ａに関する上記の議論と同様に、制御回路５０は、レジスタ５２内の次のタイムベース同期値（「次の同期値」）での飽和に従うグローバルタイムベースレジスタ５４をインクリメントするように構成することができる。増分の大きさは、例えば、インクリメントレジスタ５６にプログラムされてもよい。制御回路５０は、現在のグローバルタイムベースにインクリメントを加算し、その結果（次の同期値で飽和した）をグローバルタイムベースレジスタ５４に書き込むことができる。他の実施形態では、グローバルタイムベースレジスタ５４は提供されないでもよい。例えば、タイムベースにアクセスする全ての構成要素がローカルタイムベース回路２６Ａ〜２６Ｄへのアクセスを有する場合、グローバルタイムベースレジスタ５４は、必要でなくてよい。代わりに、グローバルタイムベース回路２０は、Ｒｔ＿ｃｌｋに応じてローカルタイムベースの同期を担当することができる。
【００４１】
一実施形態では、制御回路５０は、レジスタ５８からの同期インクリメントを次の同期値レジスタ５２の現在の内容に加えて、その結果を次の同期値レジスタ５２に書き込むことにより、同期イベントに応じて次の同期値を生成してもよい。同期インクリメントは、同期インクリメントレジスタ５８にプログラムされてもよく、Ｆｒ＿ｃｌｋとＲｔ＿ｃｌｋとの周波数の比に依存してもよい。制御回路５０は、ローカルタイムベース回路２６Ａに関して上述したように、同期イベント間の期間に、グローバルタイムベースインターフェースを介してローカルタイムベース回路２６Ａ〜２６Ｄに次の同期値を送信するように構成することができる。
【００４２】
図４は、ローカルタイムベース回路２６Ａ〜２６Ｄ及びグローバルタイムベース回路２０の一実施形態の動作を示すタイミング図である。図４では、Ｆｒ＿ｃｌｋだけでなく、Ｒｔ＿ｃｌｋが示されている（しかし、Ｆｒ＿ｃｌｋに関して、大きな周波数比に対して正確な縮尺ではない）。ｓｙｎｃ＿ｔｉｍｅは、グローバルタイムベース回路５０内の次の同期値レジスタ５６における次の同期値とすることができる。これにより、ｓｙｎｃ＿ｔｉｍｅは、現在の立ち上がりＲｔ＿ｃｌｋエッジで次の同期値（その後の立ち上がりＲｔ＿ｃｌｋエッジに有効）に変化することができる。これにより、ｓｙｎｃ＿ｔｉｍｅは、図４のＲｔ＿ｃｌｋの第１の期間では、ＮからＮ＋Ｍ（ここで、Ｍは同期インクリメントレジスタ５８での同期インクリメントである）に変化し、第２の期間ではＮ＋２Ｍに、第３の期間ではＮ＋３Ｍに変化する。グローバルタイムベース回路２０は、Ｒｔ＿ｃｌｋの立ち下がりエッジに応じて、ｓｙｎｃ＿ｔｉｍｅをローカルタイムベース回路２６Ａ〜２６Ｄに送信することができ、したがって、図４に示す次の同期値（ローカルタイムベース回路２６Ａ〜２６Ｄのレジスタ４２における次の同期値）は、Ｒｔ＿ｃｌｋ期間のほぼ途中で更新することができる。
【００４３】
グローバルタイムベース及びローカルタイムベース値も、それぞれの期間において示されている。図示する第１の期間の最初（点線６０）では、両方のタイムスベースはＮに同期される。第１のクロック期間で、Ｆｒ＿ｃｌｋは、遅れていることがあり、したがって、この期間の終了（点線６２）で、タイムベースは、次の同期値を下回っている（例えば、グローバルタイムベースに対してＮ＋Ｍ−ｘ、及びローカルタイムベースに対してＮ＋Ｍ−ｙ）。グローバル及びローカルタイムベースは、Ｆｒ＿ｃｌｋ用の異なるクロック発生源、又はＦｒ＿ｃｌｋの他の変動に起因して（例えば、Ｆｒ＿ｃｌｋ用の不平衡クロックツリー又は他のローカル変動に起因して）異なることがある。他の場合には、ｘ及びｙは、等しくてもよい。
【００４４】
グローバルタイムベース回路２０及びローカルタイムベース回路２６Ａ〜２６Ｄは、同期イベントに応じて次の同期値をロードし（次の期間に対する次の同期値を更新する前に）、したがって、グローバルタイムベース及びローカルタイムベースの両方を、第２の期間の開始時にＮ＋Ｍに移行させてもよい。第２の期間では、Ｆｒ＿ｃｌｋは予期されるよりも速く動作することがあり、これにより、グローバルタイムベース及びローカルタイムベースは、第２の期間の終了（例えば、点線６４）によりＮ＋２Ｍで飽和してもよい。
【００４５】
図４のタイミング図は、同期値の飽和とロードの両方を示すために単に例示するものであることが留意される。実際の動作では、隣接する期間は、多くの場合、同じ挙動（例えば、飽和又はロード）を有することがあり、反対側の同期への切り替えは頻繁に行われない。
【００４６】
図５は、ローカルタイムベース回路２６Ａ〜２６Ｄ（より具体的には、図２の実施形態では、制御回路４０）の一実施形態の動作を示すフローチャートである。理解を容易にするために、特定の順序でブロックを示しているが、他の順序を用いてもよい。ブロックは、制御回路４０内の組み合わせ論理回路で、並列に実行されてもよい。ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロック周期にわたって、パイプライン化することができる。制御回路４０は、図５に示す動作を実行するように構成することができる。
【００４７】
グローバルタイムベース回路２０から次の同期値を受信している場合（判定ブロック７０の「はい」の分岐）、制御回路４０は、次の同期値レジスタ４２内の次の同期値を取り込むように構成してもよい（ブロック７２）。例えば、上述したように、グローバルタイムベース回路２０は、Ｆｒ＿ｃｌｋクロック速度で次の同期値をシリアルビットストリームとして送信してもよい。このような実施形態では、次の同期値を取り込むことは、シリアルデータで次の同期値レジスタ４２にシフトすることを含むことができる。次の同期値は、データがレジスタ４２に取り込まれるまで、同期期間の最初から無効とすることができる。
【００４８】
Ｆｒ＿ｃｌｋクロック立ち上がりエッジが検出され（判定ブロック７４の「はい」の分岐）、かつ、次の同期値が有効でない（判定ブロック７６の「いいえ」の分岐）又は次の同期値が有効であり（判定ブロック７６の「はい」の分岐）かつローカルタイムベース値が次の同期値に到達していない（判定ブロック７８の「いいえ」の分岐）のいずれかの場合、制御回路４０は、レジスタ４４のローカルタイムベースを更新するように構成することができる（ブロック  ８０）。より具体的には、一実施形態では、更新は、レジスタ４６内のインクリメント値によるレジスタ４４における値の増分であってよい。一方、Ｆｒ＿ｃｌｋクロック立ち上がりエッジが検出され（判定ブロック７４の「はい」の分岐）、次の同期値が有効であり（判定ブロック７６の「はい」の分岐）、かつローカルタイムベース値が次の同期値に到達している（判定ブロック７８の「はい」の分岐）場合、制御回路４０は、レジスタ４４のローカルタイムベースを次の同期値に飽和させるように構成することができる（ブロック８２）。
【００４９】
グローバルタイムベース回路２０により同期イベントが信号伝達されている場合（判定ブロック８４の「はい」の分岐）、制御回路４０は、ローカルタイムベースが既に飽和していない場合に、次の同期値をローカルタイムベースにロードするように構成することができる（ブロック８６）。飽和が次の同期値にあるので、同期イベント時のローカルタイムベースの内容に依存せずにロードを実行することができる。ローカルタイムベースが飽和している場合には、既に次の同期値にあり、したがってロードは必要ではないが、いずれにせよロードを実行することができる。
【００５０】
図６は、グローバルタイムベース回路２０（より具体的には、図３の実施形態では、制御回路５０）の一実施形態の動作を示すフローチャートである。理解を容易にするために、特定の順序でブロックを示しているが、他の順序を用いてもよい。ブロックは、制御回路５０内の組み合わせ論理回路で、並列に実行されてもよい。ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロック周期にわたって、パイプライン化することができる。制御回路５０は、図６に示す動作を実行するように構成することができる。
【００５１】
Ｒｔ＿ｃｌｋ立ち下がりエッジが検出される（判定ブロック９０の「はい」の分岐）場合、制御回路５０は、次の同期値レジスタ５２の次の同期値をローカルタイムベース回路２６Ａ〜２６Ｄに送信するように構成することができる（ブロック９２）。例えば、上述したように、グローバルタイムベース回路２０は、Ｆｒ＿ｃｌｋのクロック速度で次の同期値をシリアルビットストリームとして送信してもよい。
【００５２】
Ｆｒ＿ｃｌｋクロック立ち上がりエッジが検出され（判定ブロック９４の「はい」の分岐）、かつグローバルタイムベース値が次の同期値に到達していない（判定ブロック９６の「いいえ」の分岐）場合、制御回路５０は、レジスタ５４のグローバルタイムベースを更新するように構成することができる（ブロック９８）。より具体的には、一実施形態では、更新は、レジスタ５６内のインクリメント値によるレジスタ５４における値の増分であってよい。一方、Ｆｒ＿ｃｌｋクロック立ち上がりエッジが検出され（判定ブロック９４の「はい」の分岐）、かつグローバルタイムベース値が次の同期値に到達している（判定ブロック９６の「はい」の分岐）場合、制御回路５０は、レジスタ５４のグローバルタイムベースを次の同期値に飽和させるように構成することができる（ブロック１００）。
【００５３】
Ｒｔ＿ｃｌｋ立ち上がりエッジが検出される（判定ブロック１０２の「はい」の分岐）場合、同期イベントが発生する。制御回路５０は、グローバルタイムベースが既に飽和していない場合には、次の同期値をグローバルタイムベースにロードするように構成されてもよい（ブロック１０４）。飽和は次の同期値にあるので、同期イベント時のグローバルタイムベースの内容に依存せずにロードを実行することができる。制御回路５０は、同期イベントをローカルタイムベース回路２６Ａ〜２６Ｄに信号伝達するように構成されてもよい（ブロック１０６）。加えて、制御回路５０は、レジスタ５８からの同期インクリメントに現在の値を加算することにより、レジスタ５２における次の同期値を更新するように構成することができる（ブロック１０８）。
【００５４】
図７は、一実施形態（より具体的には、図２及び図３の実施形態それぞれに対する、制御回路４０及び５０）に対するグローバル及びローカルタイムベースの初期化を示すフローチャートである。理解を容易にするために、特定の順序でブロックを示しているが、他の順序を用いてもよい。ブロックは、制御回路４０及び５０内の組み合わせ論理回路で、並列に実行されてもよい。ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロック周期にわたって、パイプライン化することができる。制御回路４０及び５０は、図７に示す動作を実行するように構成することができる。
【００５５】
グローバルタイムベース回路２０は、常時オン構成要素１６の一部であってもよく、これにより、常時オン構成要素１６へのリセットの放出に基づいてリセットされてもよい。具体的には、無電源期間後にＳＯＣ１０に最初に電力が供給されたとき、常時オン構成要素１６をリセットするようにしてもよい。一般に、ＳＯＣ１０に電力が供給されている限り、ＳＯＣ１０の他の部分が電源オフされた場合でも、常時オン構成要素１６は、オンであり、リセットされる必要がなくてよい。常時オン構成要素１６がリセットされてリセットが放出される（判定ブロック１１０の「はい」の分岐）場合、制御回路５０は、Ｆｒ＿ｃｌｋに基づいて、０で開始して、グローバルタイムベースレジスタ５４を更新してもよい（ブロック１１２）。この更新は、図６に関して上述したように実行してもよい。
【００５６】
ＳＯＣ１０内の別の構成要素（常時オン構成要素１６以外の）がリセットされていて、かつリセットが放出される（判定ブロック１１４の「はい」の分岐）場合、対応するローカルタイムベース回路２６Ａ〜２６Ｄ内の制御回路４０は、グローバルタイムベース回路２０からの送信毎に次の同期値レジスタ４２における次の同期値の取り込みを開始することができる（ブロック１１６）。しかし、次の同期値がシリアルに送信される実施形態では、送信中にリセットが放出され、したがって、次の同期値が正しく取り込まれないことがあり得る。したがって、制御回路４０は、リセット放出後に第２の同期イベントを検出するのを待つことができ（ブロック１１８）、その後、次の同期レジスタ４２から次の同期値をローカルタイムベースレジスタ４４にロードしてもよい（ブロック１２０）。その後、制御回路４０は、図５に関して説明したように、Ｆｒ＿ｃｌｋの値でレジスタの更新を開始してもよい（ブロック１２２）。
【００５７】
次に図８に移ると、システム１５０の一実施形態のブロック図が示されている。例示する実施形態では、システム１５０は、１つ以上の周辺装置１５４及び外部メモリ１２に結合された、ＳＯＣ１０の少なくとも１つのインスタンスを含む。ＳＯＣ１０に電源電圧を供給するとともに、メモリ１２及び／又は周辺装置１５４に１つ以上の電源電圧を供給する電力管理ユニット（ＰＭＵ）１５６が提示されている。いくつかの実施形態では、ＳＯＣ１０の２つ以上のインスタンスが含まれ得る（及び２つ以上のメモリ１２もまた含まれ得る）。
【００５８】
ＰＭＵ１５６は、概して、電源電圧を生成し、それらの電源電圧をＳＯＣ１０、メモリ１２、ディスプレイデバイス、画像センサ、ユーザインターフェースデバイスなどの各種のオフチップ周辺構成要素１５４などのシステムの他の構成要素に提供するための回路を含み得る。ＰＭＵ１５６は、よって、プログラム可能な電圧レギュレータ、電圧要求などを受信するためにＳＯＣ１０、より具体的にはＳＯＣのＰＭＧＲ１６に対してインターフェースするためのロジックを含み得る。
【００５９】
周辺装置１５４は、システム１５０の種類に応じて任意の所望の回路を含み得る。例えば、一実施形態では、システム１５０は、モバイルデバイス（例えば、パーソナルデジタルアシスタント（personal digital assistant）（ＰＤＡ）、スマートフォンなど）であり得、周辺装置１５４は、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、セルラー、全地球測位システムなどの各種の無線通信のためのデバイスを含み得る。周辺装置１５４は、ＲＡＭ記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む追加記憶装置も含み得る。周辺装置１５４は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力デバイス、マイクロフォン、スピーカなどのユーザインターフェースデバイスを含み得る。他の実施形態では、システム１５０は、任意の種類のコンピューティングシステム（例えば、デスクトップパーソナルコンピュータ、ラップトップコンピュータ、ワークステーション、ネットトップなど）とすることができる。
【００６０】
外部メモリ１２として、任意の種類のメモリを挙げることができる。例えば、外部メモリ１２は、ＳＲＡＭ、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３など）ＳＤＲＡＭ、ＲＡＭＢＵＳ  ＤＲＡＭ、ＤＤＲ  ＤＲＡＭの低電力バージョン（例えばＬＰＤＤＲ、ｍＤＤＲなど）などのダイナミックＲＡＭ（ＤＲＡＭ）であり得る。外部メモリ１２は、シングルインラインメモリモジュール（single inline memory modules）（ＳＩＭＭ）、デュアルインラインメモリモジュール（dual inline memory modules）（ＤＩＭＭ）などのメモリデバイスが装着される１つ以上のメモリモジュールを含み得る。代わりに、外部メモリ１２は、チップオンチップ又はパッケージオンパッケージ実装でＳＯＣ１０に装着される１つ以上のメモリデバイスを含んでもよい。
【００６１】
上述の開示内容が十分に理解されれば、多くの変形及び修正が当業者にとって明らかになるであろう。以下の「特許請求の範囲」は、そのような変形及び修正の全てを包含するように解釈されることを意図するものである。
【図１】
2019504423.tif 000003
【図２】
2019504423.tif 000004
【図３】
2019504423.tif 000005
【図４】
2019504423.tif 000006
【図５】
2019504423.tif 000007
【図６】
2019504423.tif 000008
【図７】
2019504423.tif 000009
【図８】
2019504423.tif 000010
【手続補正書】
【提出日】平成30年5月30日(2018.5.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のタイムベースレジスタと、
前記第１のタイムベースレジスタに結合された第１の制御回路であって、
第１のクロックに応じて前記第１のタイムベースレジスタにおける第１のタイムベース値をインクリメントし、
同期イベントの前に、前記第１のタイムベース値が第１の値に到達したことに応じて、前記第１の値に前記第１のタイムベース値を飽和させ、
前記同期イベント、及び前記同期イベントの前に前記第１のタイムベース値が前記第１の値に到達しないことに応じて、前記第１のタイムベースレジスタに前記第１の値をロードする、
ように構成された、第１の制御回路と、
前記第１の制御回路に結合された第２の制御回路であって、
前記第１の値を生成し、
第２のクロックの第１のエッジに応じて前記同期イベントを生成し、
前記第２のクロックの第２のエッジに応じて前記第１の制御回路に前記第１の値を送信する、
ように構成された、第２の制御回路と、
を備える装置であって、前記第２のエッジは、前記第１のエッジの反対側のエッジである、装置。
【請求項２】
第２のタイムベースレジスタと、
前記第２のタイムベースレジスタ及び前記第２の制御回路に結合された第３の制御回路であって、
第３のクロックに応じて、前記第２のタイムベースレジスタにおける第２のタイムベース値をインクリメントし、
前記同期イベントの前に、前記第２のタイムベース値が前記第１の値に到達したことに応じて、前記第１の値に前記第２のタイムベース値を飽和させ、
前記同期イベント、及び前記同期イベントの前に前記第２のタイムベース値が前記第１の値に到達しないことに応じて、前記第２のタイムベースレジスタに前記第１の値をロードする、
ように構成された、第３の制御回路と、
を更に備える、請求項１に記載の装置。
【請求項３】
前記第１のクロック及び前記第３のクロックが同じ周波数を有し、前記第２のクロックは、前記同じ周波数未満の第２の周波数を有する、請求項２に記載の装置。
【請求項４】
前記第１のクロックが第１の周波数を有し、前記第２のクロックが前記第１の周波数未満の第２の周波数を有し、連続する同期イベントにおける前記第１の値の間の差が前記第１の周波数と前記第２の周波数との比に依存する、請求項１に記載の装置。
【請求項５】
前記第１のエッジが、前記第２のクロックの立ち上がりエッジである、請求項１に記載の装置。
【請求項６】
前記第２のエッジが、前記第２のクロックの立ち下がりエッジである、請求項５に記載の装置。
【請求項７】
前記第１のクロックは、第１のクロック発生源によって生成され、前記第２のクロックは、第２のクロック発生源によって生成され、前記第１のクロック発生源は、使用中に第１の変動を受け、前記第２のクロック発生源は、使用中に第２の変動を受け、前記第１の変動の第１の範囲は、前記第２の変動の第２の範囲よりも大きい、請求項１に記載の装置。
【請求項８】
前記第２の制御回路に結合された第３のタイムベースレジスタを更に備え、前記第２の制御回路が、
前記第１のクロックに応じて前記第３のタイムベースレジスタにおける第３のタイムベース値をインクリメントし、
前記同期イベントの前に、前記第３のタイムベース値が前記第１の値に到達したことに応じて、前記第１の値に前記第３のタイムベース値を飽和させ、
前記同期イベント、及び前記同期イベントの前に前記第３のタイムベース値が前記第１の値に到達しないことに応じて、前記第３のタイムベースレジスタに前記第１の値をロードする、
ように構成された、請求項１に記載の装置。
【請求項９】
複数の構成要素であって、前記構成要素のそれぞれがローカルタイムベース回路を含み、前記構成要素のそれぞれが前記ローカルタイムベース回路から時間を測定するように構成されており、前記ローカルタイムベース回路が、請求項１に記載の装置の前記第１のタイムベースレジスタ及び前記第１の制御回路のインスタンスである、複数の構成要素と、
各ローカルタイムベース回路において前記第１のタイムベースレジスタを同期させるように構成されたグローバルタイムベース回路と、
を備える集積回路であって、前記グローバルタイムベース回路は、請求項１に記載の前記第２の制御回路のインスタンスである、集積回路。
【請求項１０】
前記第１のクロックを生成するように構成されたクロック発生回路を更に備え、前記第２のクロックは、前記集積回路への入力から受信される、請求項９に記載の集積回路。
【請求項１１】
前記第１のクロックは、第１のクロック周波数を有し、前記第２のクロックは、前記第１のクロック周波数未満の第２のクロック周波数を有し、前記第２のクロック周波数と前記第１のクロック周波数との前記比は、連続する次のタイムベース値の差を示す、請求項９に記載の集積回路。
【請求項１２】
第１のクロックに応じて第１のタイムベースレジスタにおける第１のタイムベース値をインクリメントすることと、
同期イベントの前に前記第１のタイムベース値が第１の値に到達したことに応じて、前記第１の値に前記第１のタイムベース値を飽和させることと、
前記同期イベント、及び前記同期イベントの前に前記第１のタイムベース値が前記第１の値に到達しないことに応じて、前記第１のタイムベースレジスタに前記第１の値をロードすることと、
前記第１の値を生成することと、
前記第２のクロックの第１のエッジに応じて前記同期イベントを生成することと、
前記第２のクロックの第２のエッジに応じて前記第１の値を送信することと、
を含む方法であって、前記第１のエッジは、前記第２のエッジの反対側である、方法。
【請求項１３】
第３のクロックに応じて第２のタイムベースレジスタにおける第２のタイムベース値をインクリメントすることと、
前記同期イベントの前に、前記第２のタイムベース値が前記第１の値に到達したことに応じて、前記第１の値に前記第２のタイムベース値を飽和させることと、
前記同期イベント、及び前記同期イベントの前に前記第２のタイムベース値が前記第１の値に到達しないことに応じて、前記第２のタイムベースレジスタに前記第１の値をロードすることと、
を更に含む、請求項１２に記載の方法。
【請求項１４】
前記第１のクロック及び前記第３のクロックが同じ周波数を有し、前記第２のクロックは、前記同じ周波数未満の第２の周波数を有する、請求項１３に記載の方法。
【請求項１５】
前記第１のクロックが第１の周波数を有し、前記第２のクロックが前記第１の周波数未満の第２の周波数を有し、連続する同期イベントにおける前記第１の値の間の差が前記第１の周波数と前記第２の周波数との比に依存する、請求項１２に記載の方法。
【請求項１６】
前記第１のエッジが、前記第２のクロックの立ち上がりエッジである、請求項１５に記載の方法。
【請求項１７】
前記第２のエッジが、前記第２のクロックの立ち下がりエッジである、請求項１６に記載の方法。
【請求項１８】
第１のクロック発生源によって前記第１のクロックを生成することと、
第２のクロック発生源によって前記第２のクロックを生成することと、
を更に含み、前記第１のクロック発生源は、第１の変動を受け、前記第２のクロック発生源は、第２の変動を受け、前記第１の変動の第１の範囲は、前記第２の変動の第２の範囲よりも大きい、請求項１２に記載の方法。
【請求項１９】
前記第１のクロックに応じて第３のタイムベースレジスタにおける第３のタイムベース値をインクリメントすることと、
同期イベントの前に、前記第３のタイムベース値が前記第１の値に到達したことに応じて、前記第１の値に前記第３のタイムベース値を飽和させることと、
前記同期イベント、及び前記同期イベントの前に前記第３のタイムベース値が前記第１の値に到達しないことに応じて、前記第３のタイムベースレジスタに前記第１の値をロードすることと、
を更に含む、請求項１２に記載の方法。
【国際調査報告】
2019504423.tif 000011
2019504423.tif 000012