JP2012531001A - 複数のコアおよびスレッドについてのタイムスタンプカウンタ(tsc)のオフセットの制御 - Google Patents

複数のコアおよびスレッドについてのタイムスタンプカウンタ(tsc)のオフセットの制御 Download PDF

Info

Publication number
JP2012531001A
JP2012531001A JP2012517934A JP2012517934A JP2012531001A JP 2012531001 A JP2012531001 A JP 2012531001A JP 2012517934 A JP2012517934 A JP 2012517934A JP 2012517934 A JP2012517934 A JP 2012517934A JP 2012531001 A JP2012531001 A JP 2012531001A
Authority
JP
Japan
Prior art keywords
core
value
tsc
thread
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012517934A
Other languages
English (en)
Other versions
JP5438215B2 (ja
Inventor
ディクソン、マーティン
ジェー. シュラル、ジェルミー
エス. パーササラシー、ラジェッシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2012531001A publication Critical patent/JP2012531001A/ja
Application granted granted Critical
Publication of JP5438215B2 publication Critical patent/JP5438215B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Power Sources (AREA)
  • Debugging And Monitoring (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Picture Signal Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

【解決手段】 一実施形態によると、本発明は、システム一時停止の前にプロセッサの第1のTSCカウンタのタイムスタンプカウンタ(TSC)値を記録する段階と、システム一時停止の後に、格納されているTSC値にアクセスする段階と、プロセッサの複数のコアの間で同期を実行することなく、格納されているTSC値を用いてプロセッサの第1のコアで実行されている第1のスレッドに対応付けられているスレッドオフセット値を直接更新する段階とを備える方法を含む。他の実施形態も記載すると共に請求する。
【選択図】 図1

Description

多くのプロセッサは、固定レートでインクリメントされるカウンタとして通常実現されるタイムスタンプカウント(TSC)カウンタを備えている。一部の公知のTSCカウンタは、バスクロックレートをクロックとして、バスクロックサイクル毎に乗算値が追加される。つまり、バスクロックが100メガヘルツ(MHz)で、且つ、プロセッサの動作が2000MHzでスタンプを記録する場合、バスクロック毎にTSCカウントには「20」の値が追加される。一般的に、マルチコアプロセッサの場合、当該プロセッサ内に含まれている複数のコアについて、1つのハードウェアTSCカウンタを用意している。一の所与のコアについての当該TSCの値は、このTSCカウンタ値にコアオフセットを加算した結果となる。
マルチソケットシステム、マルチコアシステム、および、マルチスレッドシステムにおいて各コアのTSC値を同期させておくことは、ソフトウェアにとって重要な点であり得る。特定のソフトウェアでは、例えば、データベーストランザクションにおいて、イベントの順序を記録するためのスタンプとしてTSC値を利用する。2つのプロセッサの間で時間軸を逆戻りすると、問題となり得る場合があり、一部の処理では致命的な影響も発生し得る。また、複数のコアの間でTSC値を同期させるのは非常に複雑になってしまう可能性がある。
ソフトウェアが所与のコアについてのTSC値を更新する場合、プロセッサがTSCカウンタを読み出して新しい値を算出する。つまり、ハードウェアTSCカウンタに書き込みが行われることは決してない。この処理で書き込みを行う対象は変化するので、ソフトウェアは受信する値が何であるか決して保証されない。つまり、所与のコアについてTSC値を更新する複数のソフトウェア処理は、無限に遅延させられる可能性がある。ソフトウェアが新しい値を算出する処理と、この値を書き込む処理との間で遅延が発生すると、算出結果は無効となり、再度処理を行う必要がある。このような処理は、単一プロセッサシステムでは一般的である。
複数のプロセッサのTSC値を更新する際にはより複雑になり、特に、ソフトウェア処理を正しく行うためには複数のプロセッサのTSC値を同期させる必要がある場合には、複雑になってしまう。マルチプロセッサシステムのコアのTSC値に対してこのように書き込みを行う場合には、バリアおよび同期を含むより複雑なフロー、例えば、対単位での同期が必要となり、さらに複雑になるとともに時間がかかってしまう可能性がある。
本発明の一実施形態に係るプロセッサの一部分を示すブロック図である。 コアのタイムスタンプカウント(TSC)カウンタと実際の時刻とを比較した様子を示すタイミング図である。 本発明の一実施形態に係る方法を説明するためのフローチャートである。 本発明の一実施形態に係るプロセッサコアを示すブロック図である。 本発明の一実施形態に係るプロセッサを示すブロック図である。 本発明の別の実施形態に係るプロセッサを示すブロック図である。 本発明の一実施形態に係るシステムを示すブロック図である。
さまざまな実施形態において、所与のコア(および/または当該コアで実行されている1以上のスレッド)についてのタイムスタンプカウント(TSC)値は、他のコアとは無関係に算出することが可能である。このようなコアのTSC値は、以下で説明するように、さまざまなオフセットと共に、独立したコアTSCカウンタに部分的に基づいて算出され得る。このため、コアオフセットを直接読み書きできることになり、マルチコアプロセッサの複数のコアを同期させる必要がなくなる。ソケット内の全てのコア/スレッドは単一のハードウェアカウンタを共有するので、コアについてのオフセットに直接書き込みを行うことによって、ソフトウェアは、自由時間に、コアのオフセットを更新できるようになる。尚、以下で詳細に説明するが、このように直接書き込みを行う対象は、1以上のコアで実行されている複数のスレッドのそれぞれのスレッドオフセットであってよい。また、コアのTSC値は、例えば、トランザクションの順序を決定する、または、現在時刻を決定する軽量スタンプ記録機構として利用され得る。
図1には、本発明の一実施形態に係るプロセッサの一部分のブロック図を示している。図1に示すように、プロセッサ100は、非コアロジック110およびコアロジック150を備えるとしてよい。一般的に、非コアロジック110は、電力管理、他の構成要素とのインターフェース処理、クロック等に関する一般的なプロセッサ処理を実行するさまざまな回路、ロジック等を有するとしてよい。一方、コアロジック150は、プロセッサのうち、さまざまな命令を実行するための主要実行ユニットを有するとしてよい。多くの実施例では、プロセッサ100は、コアロジック150が複数設けられるが、非コアロジックは1つのみであるマルチコアプロセッサであってよい。
図1を参照しつつ説明すると、タイムスタンプカウント処理に関するクロック動作のために用いられる構成要素を主に図示しており、プロセッサのその他の回路およびロジックの大半は便宜上、図示を省略している。非コアロジック110については、非コアTSCカウンタ120が設けられているとしてよい。一般的に、非コアTSCカウンタ120は、例えば、バスクロック、つまり、プロセッサが結合されているバスのレートで、インクリメント部125によってインクリメントされるとしてよい。一実施形態によると、このバスはフロントサイドバス(FSB)であってよいが、本発明の範囲はこれに限定されない。つまり、「バス」という用語は一般的に、任意の種類のインターコネクトを意味するために用いられ、ポイント・ツー・ポイント・インターコネクト等のシリアルインターコネクトを含む。一例を挙げると、プロセッサは、ポイント・ツー・ポイント・インターコネクトで結合されるとしてよく、非コアTSCカウンタは、本明細書ではバスクロックレートと見なす、通常のクロックレートに従ってカウントする。非コアTSCカウンタ120が出力する値は、非コア内のさまざまな処理で利用されるとしてよい。また、以下でさらに説明するが、非コアTSCカウンタ120からの値は、複数のコアおよび/または当該複数のコアで実行されるスレッドを同期させるために各コアで利用されるとしてよい。
さらに図1を参照して説明を続けると、非コアロジック110には他の回路がさらに設けられているとしてよい。具体的には、スナップショットコントローラ130が設けられるとしてよく、1以上のコアのスナップショットを取得するために用いられるとしてよい。以下で説明するが、このスナップショットは、対応するコアTSCカウンタのリセット時の非コアTSCカウンタの値であってよい。同図から分かるように、複数のスナップショットストレージ140−140が設けられているとしてよく、各スナップショットストレージはプロセッサの所与のコアと対応付けられている。スナップショットコントローラ130の制御下で、これらのスナップショットストレージは、スナップショットコントローラ130によってイネーブルされると、非コアTSCカウンタ120の現在の値を格納するとしてよい。所与のコアについて格納されたこの値は、対応するコアロジック自体のTSCカウンタがリセットされたタイミングに対応するとしてよい。つまり、スナップショットコントローラ130は、スナップショットストレージ140に対する非コアTSCカウンタ値を取得するための信号と同時に、対応するコアのTSCカウンタをリセットするリセット信号を生成するとしてよい。このため、所与のスナップショットストレージ140に格納されている値は、所与のコアTSCカウンタ180のリセット時の非コアTSCカウンタ値に対応するとしてよい。つまり、非コアTSCカウンタは、基準であり、スナップショットはコアTSCカウンタがゼロにリセットされるのと同時に取得される。このスナップショット値は、非コアTSCカウンタからTSC値を取得するためのクリーンポイントを示すとしてよい。そして、所与のコアのスナップショット値は、中間タイミングでアクセス可能であり、コアTSC値に加算される。これは、非コアTSC値とコアTSC値とを一致させるための時間軸上の基準となる。
非コアTSCカウンタ120は、コアの状態に関係なく、所定の比率および周波数でカウントを継続する。複数のコアがさまざまな低電力状態(例えば、いわゆるアドバンスド・コンフィギュレーション・アンド・パワー・インターフェース(ACPI)仕様書、修正第4版(2009年6月16日)のC状態)またはその他の別の周波数状態を開始および終了する場合、スナップショット制御機構はコアの周波数を更新するために用いられるとしてよい。
一実施形態によると、プロセッサのマイクロコードを用いてレジスタに書き込みを行ってスナップショット処理を発生させるとしてよく、その後、スナップショット値を読み出してスナップショット処理が発生したことを確認するべくポーリングを行う。図1から分かるように、一実施形態によると、このレジスタは、非コアロジック110に設けられている複数のコアレジスタ135のうちの1つのコアレジスタであってよい。このため、プロセッサマイクロコードで実装するこのTSC書込命令は、非コアロジックに設けられているこのコアの対応するレジスタの値を更新するとしてよい。一方、この更新によって、スナップショットコントローラ130による、対応するコアスナップショットの更新の実行がトリガされるとしてよい。このため、スナップショットコントローラ130に対するこの制御信号によって、非コアTSCカウンタ120の現在のTSC値を、対応するコアスナップショットストレージ140へと書き込ませる。(可能性として)これより後のタイミングにおいて、読み出された値がコアにローカルに書き込まれる。この値は、スナップショットストレージから、コア内の対応するストレージに書き込まれるとしてよい。このため、このスナップショット値は静的な値である。さらに以下で説明するように、あるコアの有効なTSC値は、コアTSC値、コアオフセット(つまり、このコアスナップショット値)、および、現在実行されているスレッドのスレッドオフセットの合計値である。
さらに図1を参照して説明を続けて、次にコアロジック150について説明する。一般的に、コアロジック150は、命令を実行するために設けられている全ての構成要素を含むとしてよく、さまざまなストレージ、順序決定ロジック、実行ユニット、退避ロジック等を含む。図1の上位図面では、このような構成要素は、コアパイプライン190と総称して図示しているとしてよい。一般的に、アウト・オブ・オーダ型の機械のコアパイプラインは、命令をフェッチしてデコードするフロントエンド部と、パイプラインの1以上の実行ユニットでの実行のために命令を並び替えるアウトオブオーダエンジンとを有するとしてよい。結果はこの後、命令を並び替えて退避させるバックエンド部に供給されるとしてよい。実行されるタイミング処理については、パイプライン190は算術論理演算ユニット(ALU)192を含むものとして図示されている。しかし、コアパイプライン190にはより多くの同様の実行ユニットおよびロジックが設けられ得ると理解されたい。また、コアロジックに設けられている同様のストレージの1つは、マイクロコードによって利用されるレジスタをベースとするストレージを提供するために用いられるスクラッチパッドストレージ195であってよい。例えば、上述したようなプロセッサマイクロコードによるコアレジスタ135への書込みを参照して説明すると、当該書込みはスナップショットコントローラ130によるスナップショットをトリガするが、対応するコアスナップショットストレージ140へ書き込まれる値はコアロジック150に書き戻され、より具体的には、スクラッチパッドストレージ195に格納され得るものと理解されたい。
また、コアロジック150はコアTSCカウンタ180を有するとしてよい。このカウンタは、プロセッサに対してスタンプで記録された周波数で実行されているように見えるように制御されるとしてよい。このカウンタは、制御可能な加算器160で更新されるとしてよい。一般的に、コアTSCカウンタ180は、所与のレートのコアクロック周波数をクロックとするとしてよい。また、コアが実際にはスタンプで記録される周波数とは異なる周波数で実行されている場合には、所定の間隔で、調整ストレージ165および170に格納されている大調整値および/または小調整値のうちいずれか一方をカウント値に加算して、コアTSCカウンタ180をインクリメントして、調整を行なうとしてよい。
つまり、プロセッサには、特定の周波数、例えば、2ギガヘルツ(GHz)または3GHzがスタンプで記録される。コアTSCカウンタは、この特定の周波数で実行されているように見える。しかし、コアは、ターボモードおよび低電力状態等、実装時に考慮すべき事項のために、別の周波数、例えば、1GHz、4GHz等の値で実行される場合がある。さまざまなソフトウェアのために、スタンプで記録された周波数でコアが実行されているという「幻想」を維持する必要がある。コアが実行されている比率とスタンプで記録されている周波数に対応する比率とは、互いに倍数の関係にはないので、上記のような小調整値および大調整値をコアTSC値に加算することができる。一実施形態によると、小調整値はXコアクロック毎に加算することができ、大調整値は、例えば、一のXコアクロックがバスクロックに並ぶ最小公倍数として加算されるとしてよい。このため、コアTSCの出力は一般的に、階段状パターンとなる。一実施形態によると、大調整値および小調整値は、プログラムで所定値として算出されるとしてよく、例えば、周波数が変化するとプロセッサマイクロコードで算出されるとしてよい。一実施形態によると、この計算は以下の数1に従って行なわれるとしてよい。
Figure 2012531001
式中、StampedRatioは、スタンプで記録されたプロセッサの周波数であり、CurrentRatioはコアが動作している周波数である。
数1を用いた結果として得られる整数の商が小調整値であり、整数の剰余が大調整値である。分かりやすく説明すると、これらの値は数2に従ってやや簡潔な方法で算出することもできる。
Figure 2012531001
どちらの式でも、「4」はコアTSCカウンタのアーチファクトであり、4クロック毎に加算を行なう。このレートは単に、コアTSCカウンタを読み出されるレートより高いレートでクロッキングすることを回避することによって電力を節約するためである。修正期間は、4(カウントを取るのは4Mclk毎なので)および現在の比率の最小公倍数を現在の比率で除算した結果であり、4および現在の比率の最大公約数(GCD)を現在の比率で乗算した結果である。尚、この実施例では「4」という数値を用いたが、TSCカウンタを読み出す分解能に応じて、クロックレートを下げることで節約される電力との兼ね合いも図りながら、他の値を用いることも可能である。以下に示す表1は、本発明の一実施形態に係る大調整値および小調整値を算出するための擬似コードの一例を示す。
Figure 2012531001
尚、小調整値および大調整値は、一部の実施形態によると、スナップショットコントローラ130によってリセット信号に応じて調整されるとしてもよい。
一実施形態によると、制御可能な加算器160は、4コアクロック毎にストレージ170に格納されている小インクリメント値を加算して、バスクロックと並ぶ4コアクロック毎にストレージ165に格納されている大調整値を加算する。図2には、コアTSCカウンタと実際の時間とを比較した様子を示す。同図に示すように、スタンプで記録された周波数の奇数倍でコアが実行されている場合、大調整値が用いられるバスクロックと並ぶ時点まで全クロックにおいて小インクリメント値を用いる。
さまざまな実施形態によると、ストレージ165および170に格納されているこれら2つの調整値は、OSが時間軸上で長時間にわたって断続することなくわずかに高速化できるように、ソフトウェアに公開することができる。つまり、OSまたはその他のスーパーバイザソフトウェアは、小調整量または大調整量をプログラムすることができ、ソフトウェアはコアTSCカウンタが徐々に実際の時間に追いつくように調整することができる。
さらに図1を参照して説明を続けると、コアロジック150には複数のスレッドオフセットストレージ185および185が設けられており、各スレッドオフセットストレージはスレッドオフセット値を格納するとしてよい。これらのスレッドオフセット値は、所与のスレッドについての、コアTSCカウンタ値と対応するコアオフセットとの間のオフセットに対応するとしてよい。対応するコアオフセットは、対応するコアスナップショットストレージ140から取得される。一般的に、コアTSCカウンタ180は、電力がコアに対して維持されてきたリセット以降の時間の長さを(コアオフセットを加算することによって)示すために用いることができる。スレッドオフセットは、スリープ状態での期間を考慮するために、または、時刻の値を調整するために、コアで実行されているアプリケーションに対して異なる時間の見方を提示するようにソフトウェア制御され得る。尚、図1に具体的な実施形態を示しているが、本発明の範囲はこれに限定されない。例えば、以下で説明するような同期処理は、コアスナップショットストレージを設けることなく実行することができる。
一実施形態によると、TSC読出命令が実行されると、マイクロコードによってコアTSC値を読み出して、コアTSC値、スレッドオフセット、および、コアスナップショットの合計を算出して、このスレッドについての有効TSC値を取得する。一部の実施形態によると、TSC書込命令は、特権命令であってよく、マイクロコードに、コアスナップショットとコアTSCカウンタとの合計を算出させて、スレッドが所望している任意の値、つまり、ユーザが定める値をスレッドオフセットとして書き込むためにはスレッドオフセットの値が何であればよいかを算出するとしてよい。このため、スレッドオフセット値は、正の数でも負の数であってもよい。例えば、コアスナップショットが1000で、コアTSCは2000で、プログラムが5000という書込値を指示した場合、スレッドオフセット値は2000となる。尚、このTSC書込処理は、スレッドオフセット値に対する直接書込処理となる。さまざまな実施形態によると、所望のコアTSC値の書込を実行した後にソフトウェアが可能な場合にスレッドオフセット値を生成する代わりに、スレッドオフセット値への直接アクセスは、所望値をスレッドオフセット値ストレージに直接書き込むように行なうことができる。一実施形態によると、スレッドオフセット値は、モデル固有レジスタ(MSR)に格納されているとしてよい。このため、これらの実施形態では、スレッドオフセットストレージ185はMSRとして実現されるとしてよい。したがって、このMSRへの書込みは、MSR命令への書込みを用いて実行されるとしてよい。一部の実施形態によると、スーパーバイザソフトウェア、例えば、OS、VMMまたはその他の特権ソフトウェアを用いてこのMSRへの書込みを実行するとしてよい。
このため、さまざまな実施形態では、このスレッドオフセット値は直接書き込まれるので、複数のスレッド間で複雑且つ時間のかかる同期処理を実行する必要がなくなるとしてよい。図3には、本発明の一実施形態に係る、スレッドオフセット値を更新する方法のフローチャートを示す。尚、さまざまな実施形態によると、図3に示す方法は、バリア処理または同期処理を一切必要とすることなくスレッド間およびコア間でのコンシステンシの実現を可能とするべく実行され得る。方法200は、例えば、OSまたはVMM等のスーパーバイザソフトウェアを用いて実現されるとしてよいが、本発明の範囲はこれに限定されない。具体的な一実施例によると、1つの命令、例えば、TSC更新命令によって、図3に示す複数の処理が実行されるとしてよい。
同図に示すように、方法200は、TSC値を記録することから開始されるとしてよい(ブロック210)。一部の実施形態によると、図3の方法は、低電力状態に対するユーザ要求に応じて開始されるとしてよい。例えば、ユーザは、(例えば、ラップトップキーボードのF4ファンクションキーによって)冬眠処理を選択して、システムのスタンバイ状態または冬眠状態を開始するとしてよい。この選択に応じて、OSまたはその他のスーパーバイザソフトウェアは、所与の低電力状態に応じて、システムメモリまたは大容量ストレージ(例えば、ディスク)に現在の非コアTSC値を記録するとしてよい。そして、当該システムを一時停止するとしてよい(ブロック220)。例えば、OSは、いわゆるS状態を開始して、当該システムを、ACPIのS3状態またはS4状態等の一時停止状態とするとしてよい。S3状態またはS4状態では、コアロジックおよび非コアロジックの両方を含むさまざまなプロセッサエンティティを、プロセッサへの電力供給が完全にオフにされるスリープ状態とする。
所定時間が経過した後(ブロック230)、当該システムは一時停止状態から再開されるとしてよい(ブロック240)。この所定時間は、ユーザが処理を再開した場合、または、プラットフォームタイマが切れることに応じて、終了するとしてよい。この時点において、非コアおよびコアの両方のさまざまなタイムスタンプカウンタは、リセット時に、ゼロに初期化されるとしてよい。さまざまな実施形態によると、全てのTSCカウンタが初期化されるとしてよい(例えば、全てのTSCカウンタが同時にリセットされる)。さらにマルチソケットシステムでは、全てのソケットが同時にリセットされるとしてよい。
一時停止前に実行されていたソフトウェアはTSCカウンタを読み出しており、時間が経過することで値が増加していると推測するので、OSは、TSCカウンタを一時停止前の値または現在の実測時間へと復元することができる。この判断は、例えば制御値に基づき、OSによって行われるとしてよい。一実施形態によると、実測時間は、システムの実際の時間のクロックから取得されるとしてよい。このため、記録されたTSC値を読み出すとしてよい(ブロック250)。そして、この記録されていたTSC値(前から格納されていた値または取得された実際の時間のクロックの値)をスレッドオフセット値に直接書き込むとしてよい(ブロック260)。一実施形態によると、このスレッドオフセット値は、リセット時においてアクティブな全てのコアで実行中のアクティブな全てのスレッドについて、各スレッドオフセットストレージに直接書き込まれるとしてよい。尚、この書込処理を実行する際には、複数のスレッド間および/または複数のコア間で同期させる必要はないとしてよい。
このように、バリア処理またはその他の同期処理を必要とすることなく、スレッドの同期を効率的に実行し得る(ブロック270)。このようにスレッドオフセット値を記録する場合、所与のスレッドはこの後コアにおいて実行される際には、コアTSCカウンタ(および非コアTSCカウンタ)に関してスレッドから見た時間を反射するべく、当該スレッドオフセット値が利用され得る。このため、この時点において、通常のカウント処理は非コアTSCカウンタおよびアクティブなコアTSCカウンタの両方で継続して行なわれ、ゼロからカウントを開始する。一実施形態によると、同じくこの時点において、コアスナップショットストレージ140もまたゼロにリセットされるとしてよい。このため、同期値およびコアTSCカウンタ値に関して上述したさまざまな計算結果を受信すること、および、スレッドオフセット値(および、所与のコアについて周波数が更新される場合には更新された任意のスナップショット値)によって、さまざまなスレッドから見た時間を維持するとしてよい。システムと同時には電力供給を受けないコアまたはその他のスレッドオフセット値については、記録されたTSC値は後に当該スレッド/コアの実行が開始されると書き込まれるとしてよい。このため、このように記録されたTSC値は、複数の異なるスレッド/コアのオフセットの更新について、発生するタイミングを異ならせるが同じ同期値を受信させるための同期値として扱われる。さらに、この同期値は、同期処理/バリア処理を必要とすることなく、複数の異なるタイミングで供給することができる。図3の実施形態で具体的な実施例を図示するが、本発明の範囲はこれに限定されない。
図4には、本発明の一実施形態に係るプロセッサコアのブロック図を示す。図4に示すように、プロセッサコア300は、マルチステージ・パイプライン方式のアウト・オブ・オーダ・プロセッサであってよい。プロセッサコア300は、本発明の一実施形態に係るプロセッサ待機状態に関連付けて用いられるさまざまな特徴を説明するべく、図4では比較的簡略化して図示している。
図4に示すように、コア300は、実行すべき命令をフェッチして、後にプロセッサで利用できるように準備するべく用いられるフロントエンドユニット310を備える。例えば、フロントエンドユニット310は、フェッチ部301、命令キャッシュ303、および、命令デコーダ305を有するとしてよい。一部の実施例では、フロントエンドユニット310はさらに、マイクロコードストレージおよびマイクロ演算ストレージと共に、トレースキャッシュを有するとしてよい。フェッチ部301は、例えば、メモリまたは命令キャッシュ303からマクロ命令をフェッチして、命令デコーダ305に供給してプリミティブ、つまり、プロセッサが実行するマイクロ演算にデコードさせるとしてよい。フロントエンドユニット310で処理されるべき命令の1つに、本発明の一実施形態に係るTSC更新命令があるとしてよい。この命令によって、フロントエンドユニットは、同期処理/バリア処理を必要とすることなくスレッドオフセット値を直接更新する技術に対応付けられて上述したような処理の実行を可能とするさまざまなマイクロ演算にアクセスできるようになるとしてよい。
フロントエンドユニット310と実行ユニット320との間には、マイクロ命令を受信して実行のために用意するアウト・オブ・オーダ(OOO)エンジン315が結合されている。より具体的に説明すると、OOOエンジン315は、マイクロ命令フローを並び替えて実行のために必要なさまざまなリソースを割り当てると共に、レジスタファイル330および拡張レジスタファイル335等のさまざまなレジスタファイル内の格納位置に論理レジスタをリネームするためのさまざまなバッファを有するとしてよい。レジスタファイル330は、整数処理および浮動小数点処理について別々のレジスタファイルを有するとしてよい。拡張レジスタファイル335は、ベクトルサイズのユニットについて、例えば、1レジスタにつき256ビットまたは512ビットを格納するとしてよい。
実行ユニット320にはさまざまなリソースが設けられているとしてよく、例えば、さまざまな整数ロジックユニット、浮動小数点ロジックユニット、および、単一命令多重データ処理(SIMD)ロジックユニット等の専用ハードウェアを含む。例えば、このような実行ユニットは、1以上の算術論理演算ユニット(ALU)322を含むとしてよい。また、本発明の一実施形態に係るタイミングロジック324が設けられているとしてよい。このようなタイミングロジックは、TSCの更新を実行するために用いられる処理のうち所定のものを実行するために、そして、スレッドオフセット値を直接更新するためのさまざまな処理を実行するために用いられるとしてよい。TSCの更新には、1以上のALU322を制御することを含む。以下でさらに説明するが、このような更新を処理するロジックをさらに、プロセッサの別の部分、例えば非コア等に設けるとしてよい。図4にはさらに、タイマ群326を図示している。本明細書における分析に関連するタイマには、コアTSCタイマおよびタイマ値を調整するためのさまざまなストレージがある。結果は、退避ロジック、つまり、リオーダバッファ(ROB)340に供給されるとしてよい。より具体的には、ROB340は、実行される命令に対応付けられている情報を受信するためのさまざまなアレイおよびロジックを含むとしてよい。この情報はこの後、ROB340によって分析されて、命令が有効に退避させられて結果のデータがプロセッサのアーキテクチャ状態にコミットされているか否か、または、命令を適切に退避させることを妨げるような1以上の例外が発生したか否かを判断する。言うまでも無く、ROB340は退避に対応付けられている他の処理も実行するとしてよい。
図4に示すように、ROB340は、キャッシュ350に結合されている。キャッシュ350は、一実施形態によると、低レベルキャッシュ(例えば、L1キャッシュ)であってよいが、本発明の範囲はこれに限定されない。また、実行ユニット320は、キャッシュ350に直接結合され得る。キャッシュ350からは、高位レベルのキャッシュ、システムメモリ等との間でデータ通信が実行されるとしてよい。図4の実施形態ではこのような上位図が図示されているが、本発明の範囲はこれに限定されないと理解されたい。
図5には、本発明の一実施形態に係るプロセッサのブロック図を示している。図5に示すように、プロセッサ400は、複数のコア410から410を備えるマルチコアプロセッサであってよい。一実施形態によると、各コアは、図4を参照して上述したコア300として構成されているとしてよい。さまざまな構成要素から構成されている非コア420には、インターコネクト415を介して、さまざまなコアが結合されているとしてよい。同図に示すように、非コア420は、共有キャッシュ430を有するとしてよい。共有キャッシュ430は、最終レベルキャッシュであってよい。また、非コアは、集積化されているメモリコントローラ440、さまざまなインターフェース450、および、タイミング制御部455を有するとしてよい。コアTSCの更新に対応付けられている機能のうち少なくとも一部は、タイミング制御部455で実現されるとしてよい。例えば、タイミング制御部455は、図1を参照しつつ上述したような非コアTSCカウンタ、スナップショットコントローラ、および、スナップショットストレージを含むとしてよい。同図に示すように、プロセッサ400は、例えば、メモリバスを介して、システムメモリ460と通信を行うとしてよい。また、インターフェース450によって、周辺デバイス、大容量格納装置等のさまざまなチップ外素子との間で接続を行うことができる。図5の実施形態でこの具体的な実施例を図示しているが、本発明の範囲はこれに限定されない。
他の実施形態によると、プロセッサアーキテクチャは、ターゲットISAと呼ばれる第2のISAに準拠しており、プロセッサがソースISAと呼ばれる第1のISAの命令を実行できるようにエミュレーションフィーチャを含むとしてよい。一般的に、OSおよびアプリケーションプログラムの両方を含むソフトウェアが、ソースISAにコンパイルされて、ハードウェアが、特別な性能および/またはエネルギー効率を特徴とする所与のハードウェア実装用に特別に設計されたターゲットISAを実装する。
図6は、本発明の別の実施形態に係るプロセッサのブロック図を示す。図6に示すように、システム500は、プロセッサ510およびメモリ520を備える。メモリ520は、システムソフトウェアおよびアプリケーションソフトウェアの両方を保持する従来のメモリ522と、ターゲットISAを備えるソフトウェアを保持する隠しメモリ524とを有する。同図に示すように、プロセッサ510は、ソースコードをターゲットコードに変換するエミュレーションエンジン530を有する。エミュレーションは、インタープリテーションまたはバイナリトランスレーションで実行するとしてよい。インタープリテーションは通常、最初にコードを発見した場合にコードに対して用いられる。その後、頻繁に実行されるコード領域(例えば、ホットスポット)がダイナミックプロファイリングによって発見されると、ターゲットISAに変換されて、隠しメモリ524内のコードキャッシュに格納される。当該変換プロセスの一環として最適化が行なわれ、利用が非常に多いコードは後に、さらに最適化されるとしてよい。変換後のコードブロックは、コードキャッシュ524に保持されて、繰り返し再利用され得る。
さらに図6を参照して説明を続けると、プロセッサ510は、マルチコアプロセッサのコアの1つであってよいが、命令キャッシュ(Iキャッシュ)550に対して命令ポインタアドレスを供給するプログラムカウンタ540を有する。同図に示すように、Iキャッシュ550はさらに、所与の命令アドレスについてミスすると、隠しメモリ部分524からターゲットISA命令を直接受信するとしてよい。したがって、Iキャッシュ550は、入力命令を受信するターゲットISAのデコーダであるデコーダ560に供給され得るターゲットISA命令を格納しているとしてよい。デコーダ560は、マクロ命令レベルのデコーダであってよく、当該命令をプロセッサパイプライン570内で実行するためのマイクロ命令に変換する。本発明の範囲はこれに限定されないが、パイプライン570は、命令を実行および退避させるためのさまざまなステージを含むアウト・オブ・オーダ・パイプラインであってよい。上述したものと同様のさまざまな実行ユニット、タイマ、カウンタ、およびストレージをパイプライン570内に設けて、TSC更新処理を実行するとしてよい。
実施形態は多くの異なる種類のシステムで実現するとしてよい。図7には、本発明の一実施形態に係るシステムのブロック図を示す。図7に示すように、マルチプロセッサシステム700は、ポイント・ツー・ポイント・インターコネクト・システムであり、ポイント・ツー・ポイント・インターコネクト750を介して結合されている第1のプロセッサ770および第2のプロセッサ780を備える。図7に示すように、プロセッサ770およびプロセッサ780はそれぞれ、マルチコアプロセッサであってよく、第1のプロセッサコアおよび第2のプロセッサコア(つまり、プロセッサコア774aおよび774b、ならびに、プロセッサコア784aおよび784b)を有する。しかし、プロセッサが備えるコアの数はこれより多くするとしてもよい。プロセッサコアはそれぞれ、同期/バリア処理を必要とすることなく所与の実行中のスレッドについて更新可能なコアTSCカウンタを含むとしてよい。
さらに図7を参照しつつ説明を続けると、第1のプロセッサ770はさらに、メモリコントローラハブ(MCH)772、ならびに、ポイント・ツー・ポイント(P−P)インターフェース776および778を有する。同様に、第2のプロセッサ780は、MCH782、ならびに、P−Pインターフェース786および788を有する。図7に示すように、MCH772および782はそれぞれ、プロセッサを対応するメモリ、つまり、メモリ732およびメモリ734に結合する。メモリ732およびメモリ734は、メインメモリ(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM))のうち対応するプロセッサにローカルに取り付けられている一部分であってよい。第1のプロセッサ770および第2のプロセッサ780はそれぞれ、P−Pインターコネクト752および754を介してチップセット790に結合されているとしてよい。図7に示すように、チップセット790は、P−Pインターフェース794および798を有する。
チップセット790はさらに、チップセット790をP−Pインターコネクト739を介して高性能グラフィクスエンジン738に結合するインターフェース792を有する。また、チップセット790は、インターフェース796を介して第1のバス716に結合されるとしてよい。図7に示すように、さまざまな入出力(I/O)デバイス714は、第1のバス716を第2のバス720に結合しているバスブリッジ718と共に、第1のバス716に結合されているとしてよい。一実施形態によると、第2のバス720には、例えば、キーボード/マウス722、通信デバイス726、および、コード730を含むディスクドライブ等の大容量格納装置であるデータ格納部728を含むさまざまなデバイスが結合されているとしてよい。また、オーディオI/O724が第2のバス720に結合されているとしてよい。
限られた数の実施形態を参照しつつ本発明を説明してきたが、当業者であれば、多くの点で変形および変更し得ることに想到するであろう。特許請求の範囲では、このような変形例および変更例も全て本発明の真の意図および範囲に入るものとする。

Claims (24)

  1. バスクロック周波数に応じてカウントする第1のタイムスタンプカウント(TSC)カウンタ、第1のコアスナップショットストレージ、および、前記第1のコアスナップショットストレージに結合されているスナップショットコントローラを有する第1のロジックと、
    コアクロック周波数に応じてカウントする第2のTSCカウンタ、および、前記第1のコアで実行される第1のスレッドについての第1のスレッドオフセット値を格納する第1のスレッドオフセットストレージを有する第1のコアと
    を備え、
    前記第1のスレッドオフセット値は、システム一時停止の発生前に記録された前記第1のTSCカウンタの値に対応する同期値で直接、更新を実行する装置。
  2. 前記第1のコアはさらに、前記第1のコアで実行される第2のスレッドについて第2のスレッドオフセット値を格納する第2のスレッドオフセットを有し、
    前記第2のスレッドオフセット値は、前記同期値で直接、更新が実行される請求項1に記載の装置。
  3. 前記第2のスレッドオフセット値は、前記第1のスレッドオフセット値とは異なるタイミングで、且つ、同じ前記同期値で更新が実行される請求項2に記載の装置。
  4. 前記第1のスレッドオフセット値および前記第2のスレッドオフセット値の前記更新は、前記第1のスレッドと前記第2のスレッドとの間で同期処理を行うことなく実行される請求項3に記載の装置。
  5. 前記第1のコアはさらに、第1の調整値を格納する第1の調整ストレージ、および、第2の調整値を格納する第2の調整ストレージを有し、前記第1の調整ストレージおよび前記第2の調整ストレージは、前記第2のTSCカウンタに結合されている加算器に結合されており、
    前記加算器は、前記第1の調整値または前記第2の調整値を前記第2のTSCカウンタに適用する請求項1に記載の装置。
  6. システム一時停止の前に、プロセッサの非コアTSCカウンタのタイムスタンプカウンタ(TSC)値をメモリに格納する段階と、
    前記システム一時停止の後に、前記メモリに格納されている前記TSC値にアクセスする段階と、
    前記プロセッサの複数のコアの間で同期を実行することなく、前記格納されているTSC値を用いて前記プロセッサの第1のコアで実行されている第1のスレッドに対応付けられている第1のスレッドオフセット値を直接更新する段階と
    を備える方法。
  7. 前記プロセッサを含むシステムについて低電力状態の開始を要求するユーザ要求に応じて、前記TSC値を格納する段階をさらに備える請求項6に記載の方法。
  8. 前記システム一時停止の終了後に、複数のコアTSCカウンタおよび前記非コアTSCカウンタをリセットする段階と、
    前記格納されているTSC値で前記第1のコアで実行されている第2のスレッドに対応付けられている第2のスレッドオフセット値を直接更新する段階と
    さらに備え、
    前記第2のスレッドオフセット値を直接更新する段階は、前記第1のスレッドオフセット値を直接更新する段階とは異なるタイミングで実行される請求項6に記載の方法。
  9. 前記格納されているTSC値で、前記プロセッサの第2のコアで実行されている第2のスレッドと対応付けられている第2のスレッドオフセット値を、前記第1のコアと前記第2のコアとの間で同期を実行することなく、直接更新する段階をさらに備える請求項6に記載の方法。
  10. 前記システム一時停止が終了すると、複数のコアTSCカウンタおよび前記非コアTSCカウンタをリセットする段階と、
    前記リセットする段階と同時に、前記プロセッサの非コアの対応するコアオフセットストレージに、前記複数のコアのそれぞれのコアオフセット値を記録する段階と
    をさらに備える請求項6に記載の方法。
  11. 前記複数のコアの間で同期処理を実行することなく、前記複数のコアTSCカウンタを同期させる段階をさらに備える請求項10に記載の方法。
  12. 記録される前記コアオフセット値はそれぞれ、前記リセット時にゼロである請求項10に記載の方法。
  13. 前記第1のコアについて周波数を更新することに応じて、複数の前記コアオフセット値のうち第1のコアオフセット値を更新する段階と、
    更新した前記第1のコアオフセット値を前記第1のコアに提供する段階と
    をさらに備える請求項12に記載の方法。
  14. 前記更新した第1のコアオフセット値を用いて、前記第1のスレッドに対応付けられている前記第1のスレッドオフセット値を更新する段階をさらに備える請求項13に記載の方法。
  15. バスクロック周波数に応じてカウントする第1のタイムスタンプカウント(TSC)カウンタと、
    コアクロック周波数に応じてカウントする第2のTSCカウンタ、および、第1のコアで実行される第1のスレッドについてスレッドオフセット値を格納する第1のスレッドオフセットストレージを有する第1のコアと
    を備えるプロセッサであって、
    前記スレッドオフセット値は、前記プロセッサを含むシステムの一時停止の前に記録される前記第1のTSCカウンタの値で、直接更新されるプロセッサ。
  16. 前記第1のTSCカウンタと、前記第1のコアに対応付けられているスナップショットストレージとに結合されているスナップショットコントローラをさらに備え、
    前記スナップショットコントローラは、前記第2のTSCカウンタがリセットされると、前記第1のTSCカウンタの値を前記スナップショットストレージに格納させる請求項15に記載のプロセッサ。
  17. 前記第1のコアは、TSC読出命令に応じて、前記第2のTSCカウンタの値と、前記スレッドオフセット値と、前記スナップショットストレージに格納されている値とを合計した総計に対応するTSC値を算出する第1のロジックを有する請求項16に記載のプロセッサ。
  18. 前記第1のコアは、TSC書込命令に応じて、前記スナップショットストレージに格納されている値と、前記第2のTSCカウンタの値と、ユーザが定義した書込値とに基づいて、前記スレッドオフセット値を更新する第2のロジックを有する請求項17に記載のプロセッサ。
  19. 前記プロセッサは、前記システムの一時停止が終了した後、前記第1のTSCカウンタおよび前記第2のTSCカウンタをリセットして、記録されている前記第1のTSCカウンタの値で、前記第1のコアで実行される第2のスレッドに対応付けられている第2のスレッドオフセット値を直接更新して、
    前記第2のスレッドオフセット値を直接更新することは、前記スレッドオフセット値を直接更新することとは異なるタイミングで実行される請求項15に記載のプロセッサ。
  20. プロセッサと、
    前記プロセッサに結合されているダイナミックランダムアクセスメモリ(DRAM)と
    を備えるシステムであって、
    前記プロセッサは、
    バスクロック周波数に応じてカウントする第1のタイムスタンプカウント(TSC)カウンタと、
    第1のスレッドについての第1のスレッドオフセット値を格納する第1のスレッドオフセットストレージ、および、コアクロック周波数に応じてカウントする第2のTSCカウンタを含む第1のコアと、
    第2のスレッドについての第2のスレッドオフセット値を格納する第2のスレッドオフセットストレージ、および、前記コアクロック周波数に応じてカウントする第3のTSCカウンタを含む第2のコアと
    を有し、
    前記第1のスレッドオフセット値および前記第2のスレッドオフセット値は、前記システムの一時停止の発生前に記録された前記第1のTSCカウンタの値で直接更新され、
    前記第1のスレッドオフセット値を直接更新することは、前記第2のスレッドオフセット値を直接更新することとは異なるタイミングで行うシステム。
  21. 前記プロセッサはさらに、スナップショットストレージと、前記スナップショットストレージに結合されているスナップショットコントローラとを有する請求項20に記載のシステム。
  22. 前記スナップショットコントローラは、前記第2のTSCカウンタがリセットされると、前記第1のTSCカウンタの値を前記スナップショットストレージに格納させる請求項21に記載のシステム。
  23. 前記第1のコアはさらに、第1の調整値を格納する第1の調整ストレージおよび第2の調整値を格納する第2の調整ストレージを含み、
    前記第1の調整ストレージおよび前記第2の調整ストレージは、前記第2のTSCカウンタに結合されている加算器に結合されており、
    前記加算器は、前記第1の調整値または前記第2の調整値を前記第2のTSCカウンタに適用する請求項21に記載のシステム。
  24. 前記第1のスレッドオフセット値および前記第2のスレッドオフセット値のそれぞれを直接更新することは、前記第1のコアと前記第2のコアとの間で同期を実行することなく、行われる請求項20に記載のシステム。
JP2012517934A 2009-12-22 2010-11-10 複数のコアおよびスレッドについてのタイムスタンプカウンタ(tsc)のオフセットの制御 Expired - Fee Related JP5438215B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/644,989 2009-12-22
US12/644,989 US8700943B2 (en) 2009-12-22 2009-12-22 Controlling time stamp counter (TSC) offsets for mulitple cores and threads
PCT/US2010/056165 WO2011087558A2 (en) 2009-12-22 2010-11-10 Controlling time stamp counter (tsc) offsets for mulitple cores and threads

Publications (2)

Publication Number Publication Date
JP2012531001A true JP2012531001A (ja) 2012-12-06
JP5438215B2 JP5438215B2 (ja) 2014-03-12

Family

ID=44152847

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012517934A Expired - Fee Related JP5438215B2 (ja) 2009-12-22 2010-11-10 複数のコアおよびスレッドについてのタイムスタンプカウンタ(tsc)のオフセットの制御

Country Status (9)

Country Link
US (1) US8700943B2 (ja)
JP (1) JP5438215B2 (ja)
KR (1) KR101404824B1 (ja)
CN (1) CN102103525B (ja)
BR (1) BR112012018326A2 (ja)
DE (1) DE112010004965T5 (ja)
GB (1) GB2482457B (ja)
TW (1) TWI481993B (ja)
WO (1) WO2011087558A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014174998A (ja) * 2013-03-12 2014-09-22 Intel Corp 協調設計されたプロセッサへの、隔離された実行環境の作成
KR20220085579A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 멀티 코어 환경에서 태스크 수행 타이밍 동기화 시스템 및 방법

Families Citing this family (136)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799687B2 (en) 2005-12-30 2014-08-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including optimizing C-state selection under variable wakeup rates
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
FR2960314B1 (fr) * 2010-05-19 2012-07-27 Bull Sas Procede d'optimisation de gestion de veille d'un microprocesseur permettant la mise en oeuvre de plusieurs coeurs logiques et programme d'ordinateur mettant en oeuvre un tel procede
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US9069555B2 (en) 2011-03-21 2015-06-30 Intel Corporation Managing power consumption in a multi-core processor
US8793515B2 (en) 2011-06-27 2014-07-29 Intel Corporation Increasing power efficiency of turbo mode operation in a processor
US8769316B2 (en) 2011-09-06 2014-07-01 Intel Corporation Dynamically allocating a power budget over multiple domains of a processor
US8688883B2 (en) 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor
US8914650B2 (en) 2011-09-28 2014-12-16 Intel Corporation Dynamically adjusting power of non-core processor circuitry including buffer circuitry
US9074947B2 (en) 2011-09-28 2015-07-07 Intel Corporation Estimating temperature of a processor core in a low power state without thermal sensor information
US8954770B2 (en) 2011-09-28 2015-02-10 Intel Corporation Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US9026815B2 (en) 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor
US8832478B2 (en) 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
US9158693B2 (en) 2011-10-31 2015-10-13 Intel Corporation Dynamically controlling cache size to maximize energy efficiency
US8943340B2 (en) 2011-10-31 2015-01-27 Intel Corporation Controlling a turbo mode frequency of a processor
US9239611B2 (en) 2011-12-05 2016-01-19 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including balancing power among multi-frequency domains of a processor based on efficiency rating scheme
US8972763B2 (en) 2011-12-05 2015-03-03 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including determining an optimal power state of the apparatus based on residency time of non-core domains in a power saving state
US9052901B2 (en) 2011-12-14 2015-06-09 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including configurable maximum processor current
US9098261B2 (en) 2011-12-15 2015-08-04 Intel Corporation User level control of power management policies
US9372524B2 (en) 2011-12-15 2016-06-21 Intel Corporation Dynamically modifying a power/performance tradeoff based on processor utilization
JP5819184B2 (ja) * 2011-12-28 2015-11-18 富士通株式会社 情報処理装置及び情報処理装置の制御方法
US9436245B2 (en) 2012-03-13 2016-09-06 Intel Corporation Dynamically computing an electrical design point (EDP) for a multicore processor
WO2013137859A1 (en) 2012-03-13 2013-09-19 Intel Corporation Providing energy efficient turbo operation of a processor
WO2013137862A1 (en) 2012-03-13 2013-09-19 Intel Corporation Dynamically controlling interconnect frequency in a processor
US9547027B2 (en) 2012-03-30 2017-01-17 Intel Corporation Dynamically measuring power consumption in a processor
US10185566B2 (en) 2012-04-27 2019-01-22 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
US9571215B2 (en) 2012-07-18 2017-02-14 Intel Corporation Measuring time offsets between devices with independent silicon clocks
US9063727B2 (en) 2012-08-31 2015-06-23 Intel Corporation Performing cross-domain thermal control in a processor
US8984313B2 (en) 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US9342122B2 (en) 2012-09-17 2016-05-17 Intel Corporation Distributing power to heterogeneous compute elements of a processor
US9582276B2 (en) * 2012-09-27 2017-02-28 Apple Inc. Processor and method for implementing barrier operation using speculative and architectural color values
US9423858B2 (en) 2012-09-27 2016-08-23 Intel Corporation Sharing power between domains in a processor package using encoded power consumption information from a second domain to calculate an available power budget for a first domain
US10554505B2 (en) 2012-09-28 2020-02-04 Intel Corporation Managing data center resources to achieve a quality of service
WO2014051615A1 (en) * 2012-09-28 2014-04-03 Hewlett-Packard Development Company, L.P. Synchronizing timestamp counters
DE102013110899B4 (de) * 2012-10-04 2019-07-04 Cognex Corporation Symbologie-Lesegerät mit Multicore-Prozessor und Systeme und Verfahren zum Betrieb desselben
US9575543B2 (en) 2012-11-27 2017-02-21 Intel Corporation Providing an inter-arrival access timer in a processor
US9183144B2 (en) 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
US9405351B2 (en) 2012-12-17 2016-08-02 Intel Corporation Performing frequency coordination in a multiprocessor system
US9292468B2 (en) 2012-12-17 2016-03-22 Intel Corporation Performing frequency coordination in a multiprocessor system based on response timing optimization
US9235252B2 (en) 2012-12-21 2016-01-12 Intel Corporation Dynamic balancing of power across a plurality of processor domains according to power policy control bias
US9075556B2 (en) 2012-12-21 2015-07-07 Intel Corporation Controlling configurable peak performance limits of a processor
US9164565B2 (en) 2012-12-28 2015-10-20 Intel Corporation Apparatus and method to manage energy usage of a processor
US9081577B2 (en) 2012-12-28 2015-07-14 Intel Corporation Independent control of processor core retention states
US9335803B2 (en) 2013-02-15 2016-05-10 Intel Corporation Calculating a dynamically changeable maximum operating voltage value for a processor based on a different polynomial equation using a set of coefficient values and a number of current active cores
US9367114B2 (en) 2013-03-11 2016-06-14 Intel Corporation Controlling operating voltage of a processor
US9395784B2 (en) 2013-04-25 2016-07-19 Intel Corporation Independently controlling frequency of plurality of power domains in a processor system
US9377841B2 (en) 2013-05-08 2016-06-28 Intel Corporation Adaptively limiting a maximum operating frequency in a multicore processor
US9823719B2 (en) 2013-05-31 2017-11-21 Intel Corporation Controlling power delivery to a processor via a bypass
US9348401B2 (en) 2013-06-25 2016-05-24 Intel Corporation Mapping a performance request to an operating frequency in a processor
US9471088B2 (en) 2013-06-25 2016-10-18 Intel Corporation Restricting clock signal delivery in a processor
US9348407B2 (en) 2013-06-27 2016-05-24 Intel Corporation Method and apparatus for atomic frequency and voltage changes
US9377836B2 (en) 2013-07-26 2016-06-28 Intel Corporation Restricting clock signal delivery based on activity in a processor
US9495001B2 (en) 2013-08-21 2016-11-15 Intel Corporation Forcing core low power states in a processor
US10386900B2 (en) 2013-09-24 2019-08-20 Intel Corporation Thread aware power management
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9405345B2 (en) 2013-09-27 2016-08-02 Intel Corporation Constraining processor operation based on power envelope information
US9594560B2 (en) 2013-09-27 2017-03-14 Intel Corporation Estimating scalability value for a specific domain of a multicore processor based on active state residency of the domain, stall duration of the domain, memory bandwidth of the domain, and a plurality of coefficients based on a workload to execute on the domain
US9697005B2 (en) 2013-12-04 2017-07-04 Analog Devices, Inc. Thread offset counter
US9494998B2 (en) 2013-12-17 2016-11-15 Intel Corporation Rescheduling workloads to enforce and maintain a duty cycle
US9459689B2 (en) 2013-12-23 2016-10-04 Intel Corporation Dyanamically adapting a voltage of a clock generation circuit
WO2015116980A1 (en) 2014-01-31 2015-08-06 University Of North Dakota Network clock skew estimation and calibration
US9323525B2 (en) 2014-02-26 2016-04-26 Intel Corporation Monitoring vector lane duty cycle for dynamic optimization
US10108454B2 (en) 2014-03-21 2018-10-23 Intel Corporation Managing dynamic capacitance using code scheduling
US9665153B2 (en) 2014-03-21 2017-05-30 Intel Corporation Selecting a low power state based on cache flush latency determination
US9395788B2 (en) 2014-03-28 2016-07-19 Intel Corporation Power state transition analysis
US9760158B2 (en) 2014-06-06 2017-09-12 Intel Corporation Forcing a processor into a low power state
US10417149B2 (en) 2014-06-06 2019-09-17 Intel Corporation Self-aligning a processor duty cycle with interrupts
US9513689B2 (en) 2014-06-30 2016-12-06 Intel Corporation Controlling processor performance scaling based on context
US9606602B2 (en) 2014-06-30 2017-03-28 Intel Corporation Method and apparatus to prevent voltage droop in a computer
US9575537B2 (en) 2014-07-25 2017-02-21 Intel Corporation Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states
US9760136B2 (en) 2014-08-15 2017-09-12 Intel Corporation Controlling temperature of a system memory
US9671853B2 (en) 2014-09-12 2017-06-06 Intel Corporation Processor operating by selecting smaller of requested frequency and an energy performance gain (EPG) frequency
US9541949B2 (en) * 2014-09-22 2017-01-10 Intel Corporation Synchronization of domain counters
US10339023B2 (en) 2014-09-25 2019-07-02 Intel Corporation Cache-aware adaptive thread scheduling and migration
US9977477B2 (en) 2014-09-26 2018-05-22 Intel Corporation Adapting operating parameters of an input/output (IO) interface circuit of a processor
US9684360B2 (en) 2014-10-30 2017-06-20 Intel Corporation Dynamically controlling power management of an on-die memory of a processor
US9703358B2 (en) 2014-11-24 2017-07-11 Intel Corporation Controlling turbo mode frequency operation in a processor
US10048744B2 (en) 2014-11-26 2018-08-14 Intel Corporation Apparatus and method for thermal management in a multi-chip package
US9710043B2 (en) 2014-11-26 2017-07-18 Intel Corporation Controlling a guaranteed frequency of a processor
US20160147280A1 (en) 2014-11-26 2016-05-26 Tessil Thomas Controlling average power limits of a processor
US10877530B2 (en) 2014-12-23 2020-12-29 Intel Corporation Apparatus and method to provide a thermal parameter report for a multi-chip package
US20160224098A1 (en) 2015-01-30 2016-08-04 Alexander Gendler Communicating via a mailbox interface of a processor
US9639134B2 (en) 2015-02-05 2017-05-02 Intel Corporation Method and apparatus to provide telemetry data to a power controller of a processor
US10234930B2 (en) 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
US9910481B2 (en) 2015-02-13 2018-03-06 Intel Corporation Performing power management in a multicore processor
US9874922B2 (en) 2015-02-17 2018-01-23 Intel Corporation Performing dynamic power control of platform devices
US9842082B2 (en) 2015-02-27 2017-12-12 Intel Corporation Dynamically updating logical identifiers of cores of a processor
US9710054B2 (en) 2015-02-28 2017-07-18 Intel Corporation Programmable power management agent
US9760160B2 (en) 2015-05-27 2017-09-12 Intel Corporation Controlling performance states of processing engines of a processor
US9710041B2 (en) 2015-07-29 2017-07-18 Intel Corporation Masking a power state of a core of a processor
US10001822B2 (en) 2015-09-22 2018-06-19 Intel Corporation Integrating a power arbiter in a processor
US9983644B2 (en) 2015-11-10 2018-05-29 Intel Corporation Dynamically updating at least one power management operational parameter pertaining to a turbo mode of a processor for increased performance
US9910470B2 (en) 2015-12-16 2018-03-06 Intel Corporation Controlling telemetry data communication in a processor
US9898351B2 (en) * 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
US10146286B2 (en) 2016-01-14 2018-12-04 Intel Corporation Dynamically updating a power management policy of a processor
US10289188B2 (en) 2016-06-21 2019-05-14 Intel Corporation Processor having concurrent core and fabric exit from a low power state
US10324519B2 (en) 2016-06-23 2019-06-18 Intel Corporation Controlling forced idle state operation in a processor
US10281975B2 (en) 2016-06-23 2019-05-07 Intel Corporation Processor having accelerated user responsiveness in constrained environment
US10379596B2 (en) 2016-08-03 2019-08-13 Intel Corporation Providing an interface for demotion control information in a processor
US10379904B2 (en) 2016-08-31 2019-08-13 Intel Corporation Controlling a performance state of a processor using a combination of package and thread hint information
US10234920B2 (en) 2016-08-31 2019-03-19 Intel Corporation Controlling current consumption of a processor based at least in part on platform capacitance
US10423206B2 (en) 2016-08-31 2019-09-24 Intel Corporation Processor to pre-empt voltage ramps for exit latency reductions
FR3055984B1 (fr) * 2016-09-15 2018-10-05 Alstom Transp Tech Procede de synchronisation d'un systeme par determination d'un intervalle de temps local commun
US10168758B2 (en) 2016-09-29 2019-01-01 Intel Corporation Techniques to enable communication between a processor and voltage regulator
US9720441B1 (en) * 2016-09-30 2017-08-01 International Business Machines Corporation Generating time-of-day values without causing execution stalls
JP6504190B2 (ja) * 2017-03-14 2019-04-24 オムロン株式会社 制御装置および情報処理方法
US11550820B2 (en) * 2017-04-28 2023-01-10 Oracle International Corporation System and method for partition-scoped snapshot creation in a distributed data computing environment
TWI632461B (zh) * 2017-05-25 2018-08-11 緯穎科技服務股份有限公司 獲取時間戳記的方法以及使用該方法的電腦裝置
US10429919B2 (en) 2017-06-28 2019-10-01 Intel Corporation System, apparatus and method for loose lock-step redundancy power management
US10592383B2 (en) * 2017-06-29 2020-03-17 Intel Corporation Technologies for monitoring health of a process on a compute device
US10122484B1 (en) * 2017-06-30 2018-11-06 Intel Corporation Technologies for internal time syncrhonization
WO2019040054A1 (en) 2017-08-23 2019-02-28 Intel Corporation SYSTEM, APPARATUS, AND METHOD FOR ADAPTIVE OPERATING VOLTAGE IN A USER-PROGRAMMED (FPGA) PREDIFFUSED NETWORK
CN107590016B (zh) * 2017-09-14 2023-08-15 成都西加云杉科技有限公司 掉电重启识别方法及装置
US10620266B2 (en) 2017-11-29 2020-04-14 Intel Corporation System, apparatus and method for in-field self testing in a diagnostic sleep state
US10620682B2 (en) 2017-12-21 2020-04-14 Intel Corporation System, apparatus and method for processor-external override of hardware performance state control of a processor
US10620969B2 (en) 2018-03-27 2020-04-14 Intel Corporation System, apparatus and method for providing hardware feedback information in a processor
US10739844B2 (en) 2018-05-02 2020-08-11 Intel Corporation System, apparatus and method for optimized throttling of a processor
US10955899B2 (en) 2018-06-20 2021-03-23 Intel Corporation System, apparatus and method for responsive autonomous hardware performance state control of a processor
US10976801B2 (en) 2018-09-20 2021-04-13 Intel Corporation System, apparatus and method for power budget distribution for a plurality of virtual machines to execute on a processor
US10860083B2 (en) 2018-09-26 2020-12-08 Intel Corporation System, apparatus and method for collective power control of multiple intellectual property agents and a shared power rail
CN111158867B (zh) * 2018-11-07 2023-05-16 阿里巴巴集团控股有限公司 时间同步处理方法、线程调度方法、装置及电子设备
US11656676B2 (en) 2018-12-12 2023-05-23 Intel Corporation System, apparatus and method for dynamic thermal distribution of a system on chip
US11256657B2 (en) 2019-03-26 2022-02-22 Intel Corporation System, apparatus and method for adaptive interconnect routing
US11442529B2 (en) 2019-05-15 2022-09-13 Intel Corporation System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor
US11698812B2 (en) 2019-08-29 2023-07-11 Intel Corporation System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor
US11366506B2 (en) 2019-11-22 2022-06-21 Intel Corporation System, apparatus and method for globally aware reactive local power control in a processor
US11579650B2 (en) * 2019-12-19 2023-02-14 Advanced Micro Devices, Inc. Method and apparatus for synchronizing the time stamp counter
US11132201B2 (en) 2019-12-23 2021-09-28 Intel Corporation System, apparatus and method for dynamic pipeline stage control of data path dominant circuitry of an integrated circuit
US11526415B2 (en) 2020-04-22 2022-12-13 StreamSets, Inc. Progressive error handling
US11880231B2 (en) 2020-12-14 2024-01-23 Microsoft Technology Licensing, Llc Accurate timestamp or derived counter value generation on a complex CPU
EP4092532A1 (en) * 2021-05-17 2022-11-23 Bayerische Motoren Werke Aktiengesellschaft Generating a timestamp at a control unit
US11921564B2 (en) 2022-02-28 2024-03-05 Intel Corporation Saving and restoring configuration and status information with reduced latency
CN115309234B (zh) * 2022-10-10 2023-01-31 北京奥星贝斯科技有限公司 确定tsc频率的方法及装置、计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008518367A (ja) * 2004-10-29 2008-05-29 インテル コーポレイション 仮想マシン環境におけるタイマ・オフセット機構

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6823516B1 (en) * 1999-08-10 2004-11-23 Intel Corporation System and method for dynamically adjusting to CPU performance changes
US6941482B2 (en) * 2002-09-10 2005-09-06 Finisar Corporation Systems and methods for synchronizing time stamps
US7043654B2 (en) 2002-12-31 2006-05-09 Intel Corporation Selecting a first clock signal based on a comparison between a selected first clock signal and a second clock signal
US8074059B2 (en) * 2005-09-02 2011-12-06 Binl ATE, LLC System and method for performing deterministic processing
US20070260907A1 (en) * 2006-05-02 2007-11-08 Dixon Martin G Technique to modify a timer
US8139069B1 (en) * 2006-11-03 2012-03-20 Nvidia Corporation Method and system for improving data coherency in a parallel rendering system
US8230203B2 (en) * 2007-03-30 2012-07-24 Intel Corporation Detecting spin loops in a virtual machine environment
CN100476694C (zh) 2007-09-28 2009-04-08 中国科学院计算技术研究所 一种多核处理器及其变频装置和核间通信方法
US8020020B2 (en) * 2008-02-28 2011-09-13 Globalfoundries Inc. Fast, automatically scaled processor time stamp counter
US7941684B2 (en) * 2008-02-28 2011-05-10 Advanced Micro Devices, Inc. Synchronization of processor time stamp counters to master counter
US7921317B2 (en) * 2008-09-02 2011-04-05 Unisys Corporation Method and apparatus for synchronizing central processing units in a multiprocessor apparatus
US8122278B2 (en) * 2009-04-28 2012-02-21 Oracle America, Inc. Clock skew measurement for multiprocessor systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008518367A (ja) * 2004-10-29 2008-05-29 インテル コーポレイション 仮想マシン環境におけるタイマ・オフセット機構

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014174998A (ja) * 2013-03-12 2014-09-22 Intel Corp 協調設計されたプロセッサへの、隔離された実行環境の作成
KR20220085579A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 멀티 코어 환경에서 태스크 수행 타이밍 동기화 시스템 및 방법
KR102497256B1 (ko) 2020-12-15 2023-02-06 현대오토에버 주식회사 멀티 코어 환경에서 태스크 수행 타이밍 동기화 시스템 및 방법

Also Published As

Publication number Publication date
WO2011087558A3 (en) 2011-09-22
GB201119725D0 (en) 2011-12-28
TWI481993B (zh) 2015-04-21
GB2482457A (en) 2012-02-01
BR112012018326A2 (pt) 2016-04-19
TW201140281A (en) 2011-11-16
DE112010004965T5 (de) 2012-11-29
US20110154090A1 (en) 2011-06-23
CN102103525B (zh) 2013-09-25
GB2482457B (en) 2017-06-21
US8700943B2 (en) 2014-04-15
CN102103525A (zh) 2011-06-22
WO2011087558A2 (en) 2011-07-21
JP5438215B2 (ja) 2014-03-12
KR20120112626A (ko) 2012-10-11
KR101404824B1 (ko) 2014-06-09

Similar Documents

Publication Publication Date Title
JP5438215B2 (ja) 複数のコアおよびスレッドについてのタイムスタンプカウンタ(tsc)のオフセットの制御
TWI613588B (zh) 在核心間同步運作的方法、微處理器及電腦程式產品
TWI808506B (zh) 用於使用者等級執行緒暫止的方法、處理器及系統
TWI613593B (zh) 在微處理器中至多核心的微碼傳播
TW201508635A (zh) 多核心微處理器動態重新配置
US8572573B2 (en) Methods and apparatus for interactive debugging on a non-preemptible graphics processing unit
Gwennap Adapteva: More flops, less watts
KR20130126717A (ko) 낮은 오버헤드를 갖는 전력 프로파일 정보의 획득
JP2008210107A (ja) シミュレーション方法及びシミュレーション装置
Long et al. Minimal multi-threading: Finding and removing redundant instructions in multi-threaded processors
US20220100512A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
Schöne et al. Software controlled clock modulation for energy efficiency optimization on Intel processors
CN108984464B (zh) 微处理器及在微处理器的处理核间同步的方法
CN107729055B (zh) 微处理器及其执行方法
CN109240481B (zh) 多核微处理器及使用其省电的方法
US8312309B2 (en) Technique for promoting determinism among multiple clock domains
JP7495422B2 (ja) 適応的な相互接続ルーティングのためのシステム、装置及び方法
CN109165189B (zh) 微处理器及其配置方法、以及计算机可读存储介质
CN110046126B (zh) 多核微处理器及其重新配置方法、计算机可读存储介质
Weber et al. Decoupled access-execute on ARM big. LITTLE
US11880231B2 (en) Accurate timestamp or derived counter value generation on a complex CPU
Weinstock et al. Accelerating MPSoC Simulation Using Parallel SystemC and Processor Sleep Models
Wickramasinghe et al. Effective hardware-level thread synchronization for high performance and power efficiency in application specific multi-threaded embedded processors
Fan et al. OTR: A Fine-Grained Dynamic Power Scaling Pipeline Based on Trace
Jooya et al. Using synchronization stalls in power-aware accelerators

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130725

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131015

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131113

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131212

R150 Certificate of patent or registration of utility model

Ref document number: 5438215

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees