JP5491622B2 - 電力管理型ロック最適化 - Google Patents

電力管理型ロック最適化 Download PDF

Info

Publication number
JP5491622B2
JP5491622B2 JP2012510879A JP2012510879A JP5491622B2 JP 5491622 B2 JP5491622 B2 JP 5491622B2 JP 2012510879 A JP2012510879 A JP 2012510879A JP 2012510879 A JP2012510879 A JP 2012510879A JP 5491622 B2 JP5491622 B2 JP 5491622B2
Authority
JP
Japan
Prior art keywords
lock
thread
processor
event
timer
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.)
Active
Application number
JP2012510879A
Other languages
English (en)
Other versions
JP2012527042A (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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2012527042A publication Critical patent/JP2012527042A/ja
Application granted granted Critical
Publication of JP5491622B2 publication Critical patent/JP5491622B2/ja
Active 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/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)

Description

本発明は、プロセッサ及びプロセッサを具現化するシステムの分野に係り、より詳細には、プロセッサを含むシステムにおけるロックの管理に係る。
複数のスレッドが同時にアクティブになるシステムでは、スレッドが同じリソース(例えば、メモリ位置、メモリのデータ構造体、システム内の装置、等)にアクセスできる。共有リソースへのアクセスを論理的に制御された形態で実行することを保証するために、共有リソースをロックにより保護することができる。ロックは、例えば、マルチプロセッサシステムでは、異なるプロセッサで実行されるスレッドによるリソースへの重畳アクセスを防止することに使用できる。マルチスレッドシステムでは、1つのプロセッサしかなくても、1つのスレッドがリソースをアクセス/更新するプロセスにある間に別のスレッドがスケジュールされる場合には、複数のアクティブなスレッド間に重畳アクセスが生じる。
ロックがリソースを保護しているときにリソースにアクセスするか又はリソースを更新するために、アクセスするスレッドは、ロックを取得し、望ましいアクセス/更新を遂行し、そしてロックを解除することができる。現在スレッドがロックを保持する間に、他のスレッドがロックを取得することはできない。(一般的に「スピンロック」と称される)あるロックでは、ロックを取得できないスレッドは、解除が検出されるまでロックにアクセスし続けるループに入る(「ロックに対してスピンしている」としばしば称される)。ループは、非常に緊密なもので、典型的に、ロックを読み取りそして取得すべき能力についてそれをテストするための幾つかのインストラクションしか含まない。従って、ループ及びそれに対応するデータアクセスは、プロセッサのキャッシュにおいてヒットする傾向がある。従って、プロセッサは、スピンロックが解除されるのを待機して著しい電力を燃焼するが、本質的に有用な仕事は行わない。別の形式のロックは、「ミューテックスロック」と称される。ミューテックスロックでは、スレッドがロックを取得するように試み、その試みが失敗した場合には、スレッドがロックの解除を待機する間はプロセッサが他の仕事を実行できないようにスレッドがブロックする。
多くのケースにおいて、特に、マルチプロセッサシステムでは、あるスレッドが非常に短い期間中ミューテックスロックをしばしば保持する。その期間は、例えば、ロックの取得を試みているブロックされたスレッドに代わって別のスレッドをスケジュールするために必要とされる時間量より短い。従って、ミューテックスロックの最適化は、典型的な保持期間にほぼ等しい時間、又はおそらくそれより若干長い時間中、ロックにおいてスピンループに入ることである。スレッドがまだスピンループにある間にロックが解除された場合には、ロックを取得し、そしてその後の時点でのスレッドのスケジュール解除及びスレッドの再スケジューリングのオーバーヘッドを回避することができる。スレッドがスピンループにある間には、プロセッサは、再び著しい電力を消費し得る。
あるシステムで具現化される別のメカニズムは、イベント待機インストラクション及び送信イベントインストラクションの使用を含む。イベント待機インストラクションは、スレッドを実行するプロセッサを低電力状態に入れるのに使用できる。プロセッサは、低電力状態において別のプロセッサ(例えば、ロックを保持するプロセッサ)における送信イベントインストラクションの実行を待機し、これは、送信イベントメッセージを送信する。送信イベントメッセージの受信に応答して、プロセッサは、高電力状態に復帰し、ロックの取得を試みる。
一実施形態において、選択された時間インターバル又はウェイクアップインターバルにプログラムされるタイマーユニットが設けられる。プロセッサは、イベント待機インストラクションを実行し、そしてそのインストラクションを含むスレッドに対して低電力状態に入る。タイマーユニットは、ウェイクアップインターバルの終わりにタイマーイベントを信号し、そしてプロセッサは、そのタイマーイベントに応答して低電力状態を出る。スレッドは、イベント待機インストラクションに続くインストラクションで実行を続けることができる。
一実施形態において、タイマー及びイベント待機インストラクションは、ミューテックスロックを取得するための電力管理型最適化を具現化するのに使用される。ウェイクアップインターバルは、スレッドがロックを保持する典型的な予想時間に基づき決定される。例えば、典型的なロック保持時間は、ウェイクアップインターバルの倍数(又はほぼ倍数)であり、ロックの取得を試み、失敗し、そしてイベント待機インストラクションを実行する最大繰り返し数が決定されるようにする。最大繰り返し数にウェイクアップインターバルを乗算したものは、ほぼ典型的なロック保持時間(又は典型的なロック保持時間より若干長い)である。従って、典型的なロック保持時間内にロックが解除された場合には、ロックの取得を試みるスレッドは、まだブロックされていない。典型的なロック保持時間内にロックが解除されない場合には、スレッドがブロックされ、スレッドに指定されたプロセッサリソースは、他の生産的使用に供される。
以下、添付図面を参照して、本発明を詳細に説明する。
1つ以上のプロセッサ及びタイマーユニットを含むシステムの一部分の一実施形態ブロック図である。 1つ以上のプロセッサ及びタイマーユニットを含むシステムの一部分の別の実施形態ブロック図である。 図1又は2に示す実行コアの一実施形態のオペレーションを示す状態マシンである。 図1又は2に示すイベントコントロールユニットの一実施形態のオペレーションを示すフローチャートである。 初期化コードの一実施形態の一部分を示すフローチャートである。 ロックコードの一実施形態を示すフローチャートである。 スレッドスケジューラの一実施形態のオペレーションを示すフローチャートである。 ロックコードの第1の実施例を示すタイミング図である。 ロックコードの第2の実施例を示すタイミング図である。 ロックコードの第3の実施例を示すタイミング図である。 システムの1つの実施形態のブロック図である。 コンピュータ記憶装置アクセス媒体の1つの実施形態を示すブロック図である。 1つ以上のプロセッサ、イベントコントロールユニット及びタイマーユニットを含むシステムの一部分の別の実施形態のブロック図である。
本発明は、種々の変更や代替え的な形態を受けるが、その特定の実施形態を添付図面に一例として示して、以下に詳細に説明する。しかしながら、添付図面及びその詳細な説明は、本発明をここに開示する特定の形態に限定するものではなく、逆に、本発明は、特許請求の範囲に規定された本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅する。又、ここに使用する見出しは、編成上の目的だけのためであり、説明の範囲を限定するものではない。本明細書全体にわたり使用される語「してもよい(may)」は、許容の意味(即ち、潜在性をもつという意味)で使用され、必須の意味(即ち、ねばならないの意味)で使用されるのではない。同様に、「含む(“include”、”including”及び”includes”)」という語は、含むことを意味するが、それに限定されない。
種々のユニット、回路、又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」として述べる。このような文脈において、「構成される」は、オペレーション中に1つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表す。従って、ユニット/回路/コンポーネントは、そのユニット/回路/コンポーネントが現在オンでないときでもタスクを遂行するように構成できる。一般的に、「構成される」に対応する構造体を形成する回路は、オペレーションを具現化するためのハードウェア回路を含む。同様に、種々のユニット/回路/コンポーネントは、説明の便宜上、1つ又は複数のタスクを遂行するものとして説明される。このような説明は、「構成される」という句を含むものとして解釈されねばならない。1つ以上のタスクを遂行するように構成されたユニット/回路/コンポーネントを言及することは、そのユニット/回路/コンポーネントについて35U.S.C.§112、パラグラフ6の解釈に依存しないことが明確に意図される。
図1を参照すれば、プロセッサ10A、任意の付加的なプロセッサ10B、及びタイマーユニット12の一実施形態を示すブロック図が示されている。プロセッサ10A−10Bは、タイマーユニット12からタイマーイベント信号を受信するように結合される。ここに示す実施形態において、プロセッサ10Aは、イベントコントロールユニット16Aに結合された実行コア14Aを備え、イベントコントロールユニット16Aは、タイマーイベント信号を受信するように結合される。プロセッサ10Bも、同様に、イベントコントロールユニット16Bに結合された実行コア14Bを備え、イベントコントロールユニット16Bは、タイマーイベント信号を受信するように結合される。又、実行コア14A−14Bは、送信イベントメッセージを送信するように構成され、これは、図1に示すように、他方のプロセッサ10A−10Bのイベントコントロールユニット16A−16Bにより受け取られる。ここに示す実施形態では、タイマーユニット12は、タイマー18と、このタイマー18に結合されたタイマーコントロールユニット20とを備えている。
プロセッサ10A−10Bは、それらプロセッサにより具現化されるインストラクションセットアーキテクチャー(ISA)において定義されたインストラクションを実行するように構成される。一般的に、ISAは、インストラクション、それらのオペレーション、それらのコード、等を指定する。従って、プログラマー又はコンパイラーは、ISAにおいて指定されたインストラクションを与え、そしてプロセッサ10A−10Bは、それらインストラクションを実行して、指定のオペレーションを結果として発生する。
より詳細には、図1の実施形態において、実行コア14A−14Bは、ISAにおいてインストラクションを実行するように構成される。従って、実行コア14A−14Bは、各インストラクションをフェッチし、デコードし、実行し、そしてその結果をコミットするための回路を含む。実行コア14A−14Bは、スーパースカラー及び/又はスーパーパイプラインマイクロアーキテクチャーを含むマイクロアーキテクチャー、順序正しい実行又は順序ずれした実行、推論的実行、単一スレッド又はマルチスレッド実行、等を具現化することができる。種々の実施形態において、実行コア14A−14Bは、前記具現化のいずれかに加えて、マイクロコード化技術を具現化することができる。
ISAは、イベント待機インストラクションを含む。一般的に、イベント待機インストラクションは、少なくともそのインストラクションを含むスレッドに対してプロセッサ10A−10Bを低電力状態に入れさせるようにISAにおいて定義される。例えば、実行コア14A−14Bは、スレッド間で動的にスイッチしないプロセッサにおいて、全体として低電力状態に入る。或いは又、複数のスレッドをサポートする実施形態において、インストラクションを含むスレッド専用のリソースが低電力状態に入る。他のスレッド専用のリソースは、通常の(低ではない)電力状態に留まり、そして共有リソースは、低電力状態に選択的に入る(例えば、まだアクティブな他のスレッドによりそれらが使用されない場合に低電力状態に入る)。
一般的に、低電力状態とは、プロセッサの通常の状態より低い電力が消費されると予想される状態である。異なる具現化により低電力状態を異なる仕方で定義することができる。例えば、低電力状態に入るリソースに対してクロックを「ターンオフ」する(定常状態に保持する)ことができる。クロックがトグルされず、従って、状態が変化しないので、動的な電力消費が減少される。それとは別に又はそれに加えて、リソース(又はリソースのサブセット)が電源オフされる。一実施形態において、アレイのようなメモリ装置は、状態を保持するように付勢されたままとなるが、他の回路は、電源オフされる。回路を電源オフすると、静的な電力消費(例えば、漏洩電流)が減少される。それとは別に又はそれに加えて、プロセッサは、その動作周波数及び動作電圧を減少して低電力状態に入る。このような実施形態では、電力節約のために性能が切り換えられてもよい。
タイマーユニット12を設け、そしてタイマーユニット12に対して選択される時間インターバルを、ミューテックスロックのようなロックをスレッドが保持する典型的な予想時間に基づいて選択することにより、スレッドをブロッキングするまでの典型的なロック保持時間にほぼ等しい期間中にミューテックスロックの取得を試みる比較的低電力の具現化が達成される。例えば、選択される時間インターバルは、ほぼ、典型的なロック保持時間を小さな整数で除算したものである。その整数は、ロックの取得を試み、そしてロックの取得失敗に応答して、イベント待機命令を実行する繰り返しの数であり、これは、スレッドをブロッキングする前に実行されるものである。例えば、一実施形態において、選択された時間インターバルは、約1マイクロ秒であり、そして典型的な保持時間は、約10マイクロ秒以下である。従って、繰り返しの数は、この例では、約10である。典型的なロック保持時間、選択された時間インターバル、及び/又は繰り返しの数は、他の例では、それより大きくても小さくてもよい。
プロセッサ10A−10Bを低電力状態から退出させる(又は「ウェイクアップ」させる)イベントを検出するためにイベントコントロールユニット16A−16Bが設けられる。従って、イベントコントロールユニット16A−16Bは、それに対応するプロセッサ10A−10Bが低電力状態に入るときには動作状態に保たれる。イベントコントロールユニット16A−16Bは、選択された時間インターバルが満了になったときを指示するタイマーイベント信号をタイマーユニット12から受信するように結合される。イベントコントロールユニット16A−16Bは、タイマーイベント信号、及びプロセッサを低電力状態から退出させるように定義された他のイベントに応答して、実行コア14A−14Bへウェイクアップ信号を各々アサートするように構成される。このウェイクアップに応答して、プロセッサは、イベント待機インストラクションを含むスレッドの実行を、イベント待機インストラクションに続くインストラクションにおいて継続することができる。あるケースでは(例えば、割り込みがシグナリングされた場合に)、スレッドは、異なるインストラクションへ移動するが、選択された時間インターバル又は送信イベントメッセージ(以下に述べる)の満了によるウェイクアップは、一般的に、イベント待機インストラクションに続くインストラクションへ復帰するための実行を生じさせる。
一実施形態では、ISAにおける別のインストラクションは、送信イベントインストラクションである。この送信イベントインストラクションは、送信イベントメッセージをシステムの他のプロセッサへ送信させるように定義される。送信イベントメッセージを受け取るプロセッサは、手前のイベント待機インストラクションからウェイクアップする。従って、イベントコントロールユニット16A−16Bは、図1に示すように、プロセッサ10B−10Aから送信イベントメッセージを受け取るように結合される。より詳細には、実行コア14A−14Bが送信イベントメッセージを送信する。送信イベントメッセージの形態及びそのメッセージを通信するためのメカニズムは、具現化に依存するもので、変化し得る。例えば、プロセッサ10A−10Bは、バス構造体に結合され、そして送信イベントメッセージは、バストランザクションである。或いは又、プロセッサ10A−10Bは、パケットベースの相互接続部に結合され、そして送信イベントメッセージは、パケット相互接続部を経てブロードキャストされるパケットである。別の例では、プロセッサ10A−10Bは、システム・オン・ア・チップ又はマルチ・コア・チップで具現化されるコアであり、この場合、送信イベントメッセージは、コア間の信号又はプライベートインターフェイスである。送信イベントメッセージは、受信側プロセッサをウェイクアップさせるように定義されたプロセッサ間の通信である。
タイマーユニット12は、一般的に、選択された時間インターバルを計時し、その選択された時間インターバルが満了になることを指示する出力を与えるように構成された回路を含む。又、タイマーユニット12は、現在インターバルの満了時に次のインターバルの計時を開始し、従って、タイマーユニット12の出力は、別のインターバルが満了になったことを周期的に指示する。一実施形態では、タイマーユニット12は、満了になるのに応答してタイマーイベント信号をパルス付勢する。そのパルス巾は、各プロセッサ10A−10Bに適切に受け取られることを保証するために、1つ以上のクロックサイクルとなる。
図1に示すように、タイマーユニット12は、クロック入力に応答してインクリメント又はデクリメントするタイマー18を含む。例えば、タイマー18は、ある値に初期化され、値が0に達するまでクロック入力のクロックサイクルごとにデクリメントする。タイマーコントロールユニット20は、0を検出し、タイマーイベントを信号する。更に、タイマーコントロールユニット20は、タイマーをその値に再初期化することができる。或いは又、カウンタが0に初期化されて、クロック入力のクロックサイクルごとにインクリメントしてもよい。タイマーコントロールユニット20は、タイマー値を希望の値と比較して、タイマーイベントを信号すると共に、タイマー18を0にクリアする。
従って、タイマーユニット12は、入力クロックの粒度で時間インターバルを信号する。選択された時間インターバルを計時するため、タイマーユニット12は、クロック周期で乗算したときに希望の時間量に等しくなるか又はそれを近似する値にセットされる。タイマーユニット12のクロックは、任意の周期/周波数を有する。例えば、数十キロヘルツの範囲の周波数を有するクロックが使用されてもよい。
一実施形態において、タイマーユニット12は、選択された時間インターバルでプログラムすることができる。タイマーコントロールユニット20は、選択された時間インターバル(又は選択された時間インターバルをタイマー18への入力クロックのクロック周期に関して表す値)をタイマーユニット12に書き込むためにプロセッサ10A−10Bからの通信を受け取るように構成され、そしてその通信に応答してその値でタイマー18及び/又は別のレジスタを更新するように構成される。
イベント待機インストラクションは、種々のISAにおいて異なる形態で定義され、そして上述したものに対して付加的なオペレーションを含むのも任意である。例えば、イベント待機インストラクションは、ARM ISAにおけるWFEインストラクションと同様である。WFEインストラクションは、退出すべき別のプロセッサからの送信イベントメッセージの受信を待機する。一実施形態において、プロセッサ10A−10Bは、選択された時間インターバルの満了を、低電力状態を退出するためのイベントとして検出してもよい。タイマーユニット12は、各選択された時間インターバルの満了時にタイマーイベント信号をアサートし、そして選択された時間インターバルの次の繰り返しの計時を開始する。
別の実施例として、イベント待機インストラクションは、(インテルアーキテクチャー(IA)−32としても知られた)インテル社からのx86ISAにおけるMWAITインストラクションと同様でもよい。MWAITインストラクションは、監視されるべきキャッシュライン(例えば、ロックを含むキャッシュライン)を識別するMONITORインストラクションが先行する。MWAITインストラクションは、プロセッサが低電力状態に入るようにさせ、そして監視されるキャッシュライン上のコヒレンシーヒットにより目覚めさせられる。イベント待機インストラクションは、MWAITインストラクションと同様であるが、選択された時間インターバルの満了に応答して低電力状態を退出する。或いは又、MWAITインストラクションからの個別のインストラクションは、イベント待機インストラクションとして使用されるx86ISAに対して定義されてもよい。又、他のISAがイベント待機インストラクションを具現化してもよい。例えば、PowerISA、MIPS ISA、SPARC ISA、等が含まれる。
本開示の残り部分では、明細書及び/又は添付図面においてイベント待機インストラクションを参照するのにアクロニウムWFEが使用される。このアクロニウムは、イベント待機インストラクションを、ARM ISAで定義されたWFEインストラクションに限定することを意図しておらず、上述したプロパティを有するISAでイベント待機インストラクションを参照するものである。
図1は、2つのプロセッサ10A−10Bを示しているが、それより多数のプロセッサがあってもよいことに注意されたい。更に、プロセッサ10Bは、任意であり、他の実施形態では、1つのプロセッサしかなくてもよい。3つ以上のプロセッサを有する実施形態では、2つ以上のタイマーユニット12があってもよく、そしてプロセッサの非重畳サブセットが異なるタイマーユニットを共有してもよい。或いは又、各プロセッサがそれ自身のタイマーユニットを有してもよい。
種々の実施形態において、プロセッサ10A−10Bは、個別の集積回路でもよいし、或いはマルチコア集積回路又はシステム・オン・ア・チップ(SOC)集積回路上のプロセッサコアとして一体化されてもよいことに注意されたい。タイマーユニット12も、マルチコア又はSOC集積回路に一体化されてもよい。従って、ここで使用するプロセッサは、個別の集積回路を含み、並びに他のコンポーネント及び/又はプロセッサコアを伴う集積回路上のプロセッサコアを含む。
図2は、各個々のプロセッサ10A−10Bに対してタイマーユニット12A−12Bがあり、そしてタイマーユニット12A−12Bがプロセッサ10A−10Bに一体化された別の実施形態のブロック図である。タイマーコントロールユニット20の機能の幾つか又は全部が、必要に応じて、イベントコントロールユニット16A−16Bに一体化される。
図3は、プロセッサ(例えば、プロセッサ10A又は10B)、より詳細には、イベント待機インストラクションに関する実行コア(例えば、実行コア14A又は14B)の一実施形態のオペレーションを示す状態マシン図である。
イベント待機インストラクションが実行されなかった場合には、プロセッサは、スレッド実行状態30にある。このスレッド実行状態30は、通常の動作状態である。例えば、スレッド実行状態は、プロセッサが全電力又は性能で実行するか、又はイベント待機インストラクション以外の理由でソフトウェアにより選択された電力/性能レベルで実行する状態である。例えば、プロセッサが経験するワークロードに基づいて、ソフトウェアは、適当な電力/性能レベルを選択する(低い性能で充分であるときに低い電力を使用して)。別の例では、ソフトウェアは、残りのバッテリ寿命に基づいて電力/性能レベルを選択する。種々の実施形態では、任意のファクタが考慮されてもよい。
イベント待機インストラクション(弧32)の実行に応答して、プロセッサ/実行コアは、スレッドのための低電力状態、例えば、スレッドスリーピング状態34に入る。スレッドスリーピング状態34において、イベント待機インストラクションを含むスレッドに指定されるリソースは、低電力状態(例えば、クロックオフ、電源オフ、等)にある。プロセッサのマルチスレッド実施形態では、プロセッサ内の各アクティブなスレッド専用のリソースに対して複数の低電力状態がある。プロセッサ/実行コアは、イベントコントロールユニット16A又は16Bによりウェイクアップが信号されるまで(弧36)、スレッドスリーピング状態34に留まり、この場合、イベント待機インストラクションに続くインストラクションにおいてスレッドのためのインストラクション実行が再開される。
図4は、イベントコントロールユニット(例えば、イベントコントロールユニット16A又は16B)の一実施形態のオペレーションを示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。更に、ブロックは、イベントコントロールユニットの組み合わせロジックにおいて並列に遂行されてもよい。ブロック、ブロックの組み合わせ、及び/又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン化されてもよい。
イベントコントロールユニットは、タイマーユニット12によりタイマーイベント信号を検出する(判断ブロック40)。タイマーイベントが検出された場合には(判断ブロック40「イエス」岐路)、イベントコントロールユニットは、ウェイクアップ信号を実行コアにアサートする(ブロック42)。更に、上述した送信イベントインストラクションを具現化する実施形態において、イベントコントロールユニットは、送信イベントメッセージを検出する(判断ブロック44)。送信イベントメッセージが受け取られた場合には(判断ブロック44「イエス」岐路)、イベントコントロールユニットは、ウェイクアップ信号をアサートする(ブロック42)。ある実施形態(例えば、低電力状態中にそのクロックを停止し及び/又は電源ダウンされる単一スレッドプロセッサ)において、割り込みを受け取ると、割り込みを適時にサービスさせるためにウェイクアップを生じさせる。割り込みが受け取られた場合には(判断ブロック46「イエス」岐路)、イベントコントロールユニットがウェイクアップ信号をアサートする(ブロック42)。ある実施形態において、システムは、ウェイクアップを生じさせるシステム時間切れタイマー(図示せず)を備えている。システム時間切れは、割り込みの形態でプロセッサに提示され、従って、システム時間切れは、割り込みのサブセットである。例えば、システム時間切れは、スレッドの実行微粒が満了となり、新たなスレッドをスケジュールしなければならないときに生じる。システム時間切れ割り込みが生じた場合には(判断ブロック48の「イエス」岐路)、イベントコントロールユニットがウェイクアップ信号をアサートする(ブロック42)。
他の実施形態において、イベントコントロールユニットがウェイクアップ信号をアサートするようにさせる付加的なイベントが生じ得る。他の実施形態において、付加的なイベントは、図4に示すイベントのサブセットと共に含まれる。イベントの組み合わせが使用されてもよい。一実施形態では、判断ブロック40、44、46及び48が独立しており、従って、並列に又は任意の順序で遂行されてもよいことに注意されたい。
図5は、プロセッサを含むシステムの初期化中にプロセッサ10A又は10Bにより実行される初期化コードの一実施形態の一部分を示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。初期化コードは、図示されたオペレーションを具現化するためにプロセッサにより実行できるインストラクションを含む。
初期化コードは、タイマーイベントを希望のウェイクアップインターバルで信号するために1つ又は複数のタイマーユニットを初期化する(ブロック50)。即ち、希望のウェイクアップインターバルは、上述した選択された時間インターバルである。希望のウェイクアップインターバルは、システムに含まれた不揮発性記憶装置(例えば、リードオンリメモリ、フラッシュメモリ、ディスク記憶装置、等)から読み取られる。不揮発性記憶装置が変更可能なものである場合に、所与のシステムにおいて実際のロック保持時間を良好に反映させるために、希望のウェイクアップインターバルを時間と共に変化することができる。
初期化コードは、一般的に、システムを使用準備する(例えば、システムを「ブート」する)ために他のオペレーションを含んでもよい。あるケースでは、希望のウェイクアップインターバルを他の時点で変更/プログラムしてもよい。例えば、システムのワークロード、ロックで保護されるデータの性質、等に基づいて、希望のウェイクアップインターバルを変化させてもよい。従って、ある実施形態では、タイマーユニットは、オペレーション中に動的にプログラムされてもよい。
図6は、ロックを管理するためにプロセッサ10A又は10Bにより実行されるロックコードの一実施形態の一部分を示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。ロックコードは、図示されたオペレーションを具現化するためにプロセッサにより実行できるインストラクションを含む。一実施形態において、ロックコードは、ロックを使用するアプリケーション/スレッドに使用される。別の実施形態では、ロックコードは、オペレーティングシステムの一部分であり、アプリケーションにより使用するためにアプリケーションプログラムインターフェイス(API)として露出されてもよい。或いは又、フローチャートの一部分がオペレーティングシステムにおいて具現化され、APIであってもよい。
ロックコードは、スレッドブロックの前にロックを取得する試みの不成功な繰り返しの最大数である繰り返しカウントを初期化する(ブロック52)。この繰り返しカウントに選択された時間インターバルを乗算したものは、典型的なロック保持時間にほぼ等しく(例えば、タイマーユニット12に利用できる粒度内)、又は典型的なロック保持時間より若干長い。
次いで、ロックコードは、ロックを取得するよう試みる(ブロック54)。一般的に、ロックを取得するとは、コードがロックのコントロールを行えるようにする状態にロックがあることを決定するために行われるオペレーション、及び他のコードがコントロールを行うことを除外するようにロックの状態を変化させるオペレーションを指す。ロックを取得したコードは、その後、ロックを解除することができ、これは、ロックの状態を、ロックを取得できることを指示する状態に戻すよう変化させることを含む。ロックの状態及びそれらの解釈は、ロックの形式に基づいて変化する。単純なロックは、取得可能であることを指示するためにクリアであり且つ取得不能である(又は現在保持されている)ことを指示するためにセットされるか、又はその逆であるビットである。あるロックは、取得可能であることを指示するためにゼロであり、非ゼロ値は、現在保持されていることを指示し、そしてその保持者を(例えば、スレッド識別子、プロセス識別子、等により)識別する。他のロックは、アクセス性についての異なる状態を含んでもよい(例えば、読み取り専用・対・読み取り/書き込み、又はノーアクセス)。
ロックが首尾良く取得されない場合には(判断ブロック56「ノー」岐路)、ロックコードが繰り返しカウントをデクリメントし(ブロック58)、そして繰り返しの数が満了になったかどうか決定する(判断ブロック60)。もしそうでなければ(判断ブロック60「ノー」岐路)、ロックコードは、イベント待機インストラクションを実行する(ブロック62)。スレッドは、ウェイクアップイベントがプロセッサによって検出されるまで(例えば、タイマーイベント−点線63)低電力状態にストールされ、その検出時に、再びロックを試みることができる。例えば、ロックコードは、イベント待機インストラクションと、それに続いて、ロックの取得を試みる1つ以上のインストラクションのうちの第1インストラクションへの分岐インストラクションとを含む(ブロック54)。ウェイクアップイベントが割り込みである場合には、次のインストラクションが割り込みハンドラーである。割り込みハンドラーがイベント待機インストラクションへ復帰するかどうかに関わらず、次のインストラクションは、実施に依存し、或いはそのどちらでもない。他方、繰り返しの数が満了となった場合には(判断ブロック60「イエス」岐路)、スレッドは、ブロックする(ブロック64)。スレッドをブロックすることは、例えば、スレッドのスケジュールを解除し、そしてブロックの理由がクリアされるまでスレッドの再スケジューリングを禁止することを含む。例えば、一実施形態では、スレッドは、オペレーティングシステムのAPIをコールして、それ自身をブロックし、そしてブロックの理由を指示する(例えば、このケースでは、取得を試みているロックに対する待機)。或いは又、オペレーティングシステムがスレッドをブロックしてもよい(例えば、ロックコード、又は繰り返しカウントのチェックを含む部分が、オペレーティングシステムの一部分である場合には)。オペレーティングシステムは、スレッドブロックに対する種々の他の理由をサポートすることができる。
ロックが首尾良く取得された場合には(判断ブロック56「イエス」岐路)、スレッドは、ロックの取得を経て許される希望の処理を遂行することができる(ブロック66)。次いで、スレッドは、ロックを解除する(ブロック68)。送信イベントインストラクションを具現化する実施形態では、スレッドは、任意であるが、送信イベントインストラクションを含む(ブロック70)。送信イベントインストラクションは、待機中のスレッド(1つ又は複数)が次のタイマーイベントでウェイクアップするので、任意である。イベントを送信することは、単にプロセスの速度を上げるだけである。
ある実施形態では、ロックを首尾良く取得すると、ロックコードを、ロックが補足されたという指示と共にアプリケーションに復帰させることに注意されたい。このような実施形態では、ブロック66、68及び70は、ロックコードの一部分ではない。ある実施形態では、ブロック68及び70は、解除ロックAPIの一部分である。更に、他の実施形態では、繰り返しカウントが排除され、それに代わって、ロックコードの開始時に時間を読み取り(例えば、ブロック52に代わって)そしてロックの取得に失敗するたびに再び時間を読み取るためにオペレーティングシステムによって提供されるタイマーサービスを利用することに注意されたい。現在時間と開始時間との間の差を典型的なロック保持時間と比較して、ロックを取得する失敗に応答してイベント待機インストラクション又はスレッドブロックの実行がなされるかどうか決定する。
図7は、プロセッサ10A−10Bのようなプロセッサにおいて実行するためにスレッドをスケジュールするスレッドスケジューラの一実施形態のオペレーションを示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。スレッドスケジューラは、図示されたオペレーションを具現化するためにプロセッサにより実行できるインストラクションを含む。スレッドスケジューラは、例えば、オペレーティングシステムの一部分でもよい。
スレッドスケジューラは、各スレッドを検査する。スレッドがブロックされた場合には(判断ブロック80「イエス」岐路)、スレッドスケジューラは、ブロックの理由をチェックする。ブロックが特定のロックに対するものである場合には(判断ブロック82「イエス」岐路)、スレッドスケジューラは、ロックが解除されたかどうか決定する(判断ブロック84)。例えば、スレッドスケジューラは、ロックの状態を読み取り、そしてその状態を検査して、ロックが解除されたかどうか決定する。もしそうであれば(判断ブロック84「イエス」岐路)、スレッドスケジューラは、スレッドを、スケジューリングの資格があるとマークする(ブロック86)。さもなければ(判断ブロック84「ノー」岐路)、スレッドは、使用不能のままである。ロックに対する待機以外の理由でスレッドがブロックされた場合には(判断ブロック82「ノー」岐路)、スレッドスケジューラは、他のブロック理由を処理し、そしてその結果に基づいてスレッドを使用可能又は使用不能とマークする(ブロック88)。
次いで、スレッドスケジューラは、スケジューリングに使用できるスレッドを検査し、そしてそのスレッドを実行のためにスケジューリングする(ブロック90)。
図8−10は、スレッドがロックを取得する種々の例のタイミング図である。T1及びT2と示された2つのスレッドが図面の上部に示されている。時間は、図中下向きの方向に増加する。各図において、3つのタイマーイベントが矢印100、102及び104で示されている。アクティビティ間の実線は、スレッドの実行を指示し、そして点線は、スレッドに対する低電力状態を指示する。
図8は、スレッドがロックを取得する第1の例を示す。この例において、スレッドT2は、ロックを取得し(参照番号106)、そしてスレッドT1は、スレッドT2がロックを取得した後にロックの取得を試みる(参照番号108)。スレッドT2がロックを有するので、スレッドT1は、ロックを取得する試みに失敗し、そしてイベント待機インストラクションを実行する(参照番号110)。プロセッサは、第1のタイマーイベント(矢印100)が生じるまで低電力状態に留まる。イベント待機インストラクションの実行は、タイマーユニット12と同期されず、従って、低電力状態で費やされる時間量は、選択された時間インターバルの限界内で変化することに注意されたい。
タイマーイベント(矢印100)に応答して、プロセッサは、スレッドT1に対してウェイクアップし、そしてスレッドT1は、ロックを再び取得するように試みる(参照番号112)。スレッドT2は、ロックで許されるように依然処理を行い、まだロックを解除していない。従って、スレッドT1は、ロックを得ることに失敗し、イベント待機インストラクションを再び実行する(参照番号114)。スレッドT1が低電力状態にある間に、スレッドT2は、その処理を完了し、ロックを解除する(参照番号116)。
第2のタイマーイベント(矢印102)に応答して、スレッドT1は、ウェイクアップし、最近解除されたロックを首尾良く取得する(参照番号118)。この例では、スレッドT2は、送信イベントインストラクションを含み、そして送信イベントメッセージを送信する(参照番号120)。しかしながら、このケースでは、スレッドT1は、送信イベントメッセージの到着(矢印122)の前にロックを取得する。他の実施形態では、送信イベントメッセージが具現化されなくてもよい。
図9は、スレッドがロックを取得する第2の例を示す。第1の例と同様に、スレッドT2は、ロックを取得し(参照番号106)、その後、スレッドT1は、ロックの取得を試み、ロックの取得失敗に応答してイベント待機インストラクションを実行する(参照番号108及び110)。スレッドT1は、第1のタイマーイベント(矢印100)まで低電力状態にあり、その後、スレッドT1は、ウェイクアップし、ロックの取得を試み(参照番号112)、そしてイベント待機インストラクションを実行する(参照番号114)。
この例では、スレッドT2は、スレッドT1がロックの取得を試みて失敗した直後に、ロックを解除し(参照番号124)、そして送信イベントメッセージを送信する(ブロック126)。スレッドT1は、送信イベントメッセージに応答してウェイクアップし、そしてスレッドT1は、矢印102における第2のタイマーイベントの前にロックを取得する(参照番号128)。図9の例は、任意の送信イベントメッセージを使用することで、ロックハンドオフにおける待ち時間がどのように短縮されるか示す。この例の送信イベントメッセージ内では、スレッドT1は、矢印102のタイマーイベントの後まで、ロックを取得しない。
図10は、スレッドがロックを取得する第3の例を示す。第1の例と同様に、スレッドT2は、ロックを取得し(参照番号106)、その後、スレッドT1は、ロックの取得を試み、ロックの取得失敗に応答してイベント待機インストラクションを実行する(参照番号108及び110)。スレッドT1は、第1のタイマーイベント(矢印100)まで低電力状態にあり、その後、スレッドT1は、ウェイクアップし、ロックの取得を試み(参照番号112)、そしてイベント待機インストラクションを実行する(参照番号114)。
この例では、スレッドT2は、典型的なロック保持時間より長くロックを保持する。従って、第2のタイマーイベント(矢印102)において、スレッドT1は、再びロックの取得を試みて失敗し、イベント待機インストラクションを実行する(参照番号130及び132)。第3のタイマーイベント(矢印104)において、スレッドT1は、ロックの取得を試みて失敗する(参照番号134)。しかしながら、この例のこの時点において、繰り返しの数を越え、スレッドがブロックする(参照番号136)。スレッド専用のプロセッサリソースは、別のスレッドに指定される。
ある時点で、スレッドT2は、その処理を完了して、ロックを解除する(参照番号138)。スレッドスケジューラは、ロックが空きであることを検出し、スレッドT1をスケジューリングの資格があるものとし、そしてスレッドT1をスケジューリングする(参照番号140)。次いで、スレッドT1は、首尾良くロックを取得する(参照番号142)。従って、最後の繰り返しが試みられる(及びスレッドがブロックされる)時間と、スレッドが再びスケジューリングされる時間との間に、スレッドに指定されたプロセッサリソースは、生産的使用に供されて、他の作業を行う(又は減少電力モードに不定に入れられる)。その期間中に消費される電力は、スレッドT1がウェイクアップし続けてロックの取得に失敗する場合より賢明に使用される。
スレッドT2は、送信イベントメッセージを送信するものとして示されていることに注意されたい。しかしながら、この例では、送信イベントメッセージは、何の作用も及ぼさない。スレッドT1が最終的にスケジュールされるところのプロセッサに送信イベントメッセージが到着しそしてロックを取得する場合でも(参照番号140及び142)、送信イベントメッセージは、ロックを取得するスレッドT1に加速作用を及ぼさない。というのは、スレッドT1は、イベント待機インストラクション及びその時点から低電力状態にないからである。
図11は、システム150の一実施形態のブロック図である。ここに示す実施形態において、システム150は、1つ以上の周辺機器124及び外部メモリ122に結合された集積回路158の少なくとも1つの例を含む。集積回路158に供給電圧を供給すると共に、メモリ112及び/又は周辺機器114に1つ以上の供給電圧を供給する電源156も設けられる。ある実施形態では、集積回路158の2つ以上の例が含まれてもよい。
集積回路158は、プロセッサ10A−10Bのような1つ以上のプロセッサと、タイマーユニット12のような1つ以上のタイマーユニット(又はプロセッサに一体化されたタイマーユニット12A−12B)とを備えている。
外部メモリ152は、いかなる望ましいメモリでよい。例えば、このメモリは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックRAM(SRAM)、フラッシュメモリ、又はその組み合わせを含む。DRAMは、同期DRAM(SDRAM)、倍データレート(DDR)SDRAM、DDR2 SDRAM、DDR3 SDRAM、等を含む。
周辺機器154は、システム150の形式に基づいていかなる望ましい回路を含んでもよい。例えば、一実施形態において、システム150は、移動装置であって、周辺機器154は、wifi、ブルーツース、セルラー、グローバルポジショニングシステム、等の種々の形式のワイヤレス通信のための装置を含む。又、周辺機器154は、RAM記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む付加的な記憶装置を含む。更に、周辺機器154は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他のキー、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。
図12は、コンピュータアクセス可能な記憶媒体200のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、インストラクション及び/又はデータをコンピュータに与えるために使用中にコンピュータによってアクセス可能ないかなる記憶媒体を含んでもよい。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体、例えば、ディスク(固定又は取り外し可能)、テープ、CD−ROM又はDVD−ROM、CD−R、CD−RW、DVD−R、DVD−RWを含む。更に、記憶媒体は、RAM(例えば、同期ダイナミックRAM(SDRAM)、Rambus DRAM(RDRAM)、スタティックRAM(SRAM)、等)、ROM、フラッシュメモリのような揮発性又は不揮発性メモリ媒体、ユニバーサルシリアルバス(USB)インターフェイスのような周辺インターフェイスを経てアクセスできる不揮発性メモリ(例えば、フラッシュメモリ)、等を含む。又、記憶媒体は、マイクロ電気機械的システム(MEMS)を含むと共に、ネットワーク及び/又はワイヤレスリンクのような通信媒体を経てアクセスできる記憶媒体を含む。図12のコンピュータアクセス可能な記憶媒体200は、初期化コード202、ロックコード204、及び/又はスレッドスケジューラコード206の1つ以上を記憶することができる。初期化コード202は、実行されたときに図5のフローチャートを具現化するインストラクションを含む。ロックコード204は、実行時に図6のフローチャートの一部分を具現化するインストラクションを含む。スレッドスケジューラ206は、実行時に図7のフローチャートの一部分を具現化するインストラクションを含む。一般的に、コンピュータアクセス可能な記憶媒体200は、実行時に図5、6、7に示すフローチャートの一部分又は全部を具現化するインストラクションのセットを含む。キャリア媒体は、コンピュータアクセス可能な記憶媒体、及びワイヤード又はワイヤレス送信のような送信媒体を含む。
図13は、タイマーユニット12と、このタイマーユニット12からタイマーイベントを受け取るように結合されたイベントコントロールユニット16Aと、このイベントコントロールユニット16Aからウェイクアップイベントを受け取るように結合された実行コア14A−14Bを含むプロセッサ10A−10Bとを備えたシステムの一部分の別の実施形態のブロック図である。実行コア14A−14Bは、更に、イベントコントロールユニット16Aに送信イベント指示を送信するように構成される。図13の実施形態では、1つ以上のプロセッサ10A−10Bがイベントコントロールユニット16A及びそれに対応するウェイクアップイベントを共有し、従って、共有されたウェイクアップイベントに応答して各々ウェイクアップする。ある実施形態では、システム内の全てのプロセッサがイベントコントロールユニット16A/ウェイクアップイベントを共有し、そしてウェイクアップイベントを発生しなければならないという指示(例えば、送信イベント指示、タイマー、割り込み、等)が、共有されたイベントコントロールユニット16Aへ送信される。他の実施形態は、2つ以上のイベントコントロールユニット16Aを含み、そして各イベントコントロールユニット16Aは、システム内の2つ以上のプロセッサによって共有される。
当業者であれば、以上の開示が完全に理解されると、多数の変更や修正が明らかとなろう。そのような全ての変更や修正は、特許請求の範囲内に包含されることが意図される。
10A、10B:プロセッサ
12:タイマーユニット
14A、14B:実行コア
16A、16B:イベントコントロールユニット
18:タイマー
20:タイマーコントロールユニット
152:外部メモリ
154:周辺機器
156:電源
158:集積回路
200:コンピュータアクセス可能な記憶媒体
202:初期化コード
204:ロックコード
206:スレッドスケジューラ

Claims (12)

  1. 選択された時間インターバルが終わるたびにタイマーイベント信号をパルス付勢するように構成されたタイマーユニットであって、前記タイマーユニットへの入力クロックの多クロック周期として使用中に前記選択された時間インターバルをプログラムする当該タイマーユニットと、
    前記タイマーユニットからタイマーイベント信号を受信するように結合されたプロセッサとを備えた装置であって、
    前記プロセッサは、前記プロセッサにより具現化されるインストラクションセットアーキテクチャーで定義された第1のインストラクションを実行するように構成され、前記第1のインストラクションは、前記第1のインストラクションを含むスレッドに対して前記プロセッサを低電力状態に入れさせるように定められ、且つ当該スレッドを低電力状態にさせ、更に、前記プロセッサは、前記タイマーユニットからの信号におけるパルスに応答して前記スレッドに対して低電力状態を退出し、そして前記第1のインストラクションに続くインストラクションで実行を続け、前記選択された時間インターバルはスレッドがロックを保持する典型的な予想時間に基づいており、及び、前記選択された時間インターバルは、ロックの取得を試み、且つ、スレッドをブロッキングする前にロックの取得失敗に応答して前記第1のインストラクションを実行する繰り返しの数であるように構成された前記装置。
  2. 前記インストラクションセットアーキテクチャーを具現化する第2のプロセッサを更に備え、この第2のプロセッサも、前記タイマーユニットからタイマーイベント信号を受信するように結合されると共に、そのタイマーイベント信号におけるパルスに応答して前記スレッドに対して低電力状態を退出するように構成された、請求項1に記載の装置。
  3. 前記インストラクションセットアーキテクチャーを具現化する第2のプロセッサと、前記選択された時間インターバルが終わるたびに第2のタイマーイベント信号をパルス付勢するように構成された第2のタイマーユニットとを更に備え、その第2のプロセッサは、前記第2のタイマーユニットから第2のタイマーイベント信号を受信するように結合されると共に、その第2のタイマーイベント信号におけるパルスに応答して前記スレッドに対して低電力状態を退出するように構成された、請求項1に記載の装置。
  4. 前記プロセッサは、更に、別のプロセッサからの送信イベントメッセージを受信するのに応答して低電力状態を退出するように構成された、請求項1に記載の装置。
  5. 前記プロセッサは、
    ロックを取得するように試み、
    ロックの取得失敗に応答して、付加的な繰り返しが許されるかどうか決定し、
    付加的な繰り返しが許されるという決定に応答して、別の繰り返しを開始する前にイベントを待機し、イベントを待機することで、プロセッサを低電力状態に入れさせ、複数のインストラクションがロックの取得を試みる間の電力消費を減少させる、
    ように構成された、請求項1に記載の装置。
  6. 前記プロセッサは、低電力状態からの退出に応答して、
    ロックを取得するよう試み、
    ロックの取得に応答して、ロックを要求した1つ以上のオペレーションを遂行し、
    ロックを解除する、
    ように構成された、請求項5に記載の装置。
  7. 前記ロックを解除することは、送信イベントメッセージを送信し、その送信イベントメッセージを受け取るプロセッサにおいて低電力状態から退出させることを含む、請求項6に記載の装置。
  8. 前記プロセッサは、低電力状態からの退出に応答して実行されるとき、
    ロックを取得するよう試み、
    ロックの取得失敗に応答して、別の付加的な繰り返しが許されるかどうか決定し、
    別の付加的な繰り返しが許されないという決定に応答して、スレッドをブロックする、ように構成された、請求項5に記載の装置。
  9. 前記付加的な繰り返しが許されるかどうか決定することは、繰り返しカウントを更新し、そしてそのカウントを終了についてテストすることを含む、請求項5に記載の装置。
  10. 前記付加的な繰り返しが許されるかどうか決定することは、プロセッサにより実行中のオペレーティングシステムによって提供される時間サービスを読み取り、そしてロックの取得を試みる間に経過する時間量を決定することを含む、請求項5に記載の装置。
  11. 前記プロセッサは、
    ロックの取得を繰り返し試み、ロックの取得の失敗に応答して、イベントを待機し、
    前記イベントを待機することは、イベント待機を含むスレッドのために前記プロセッサにおいて低電力状態に入り、且つ当該スレッドを低電力状態にさせ、前記低電力状態から退出する第1のイベントは、選択された時間インターバルが前記タイマーへの入力クロックの多クロック周期としてあらわされるようプログラムしたタイマーの満了であり、前記選択された時間インターバルはスレッドがロックを保持する典型的な予想時間に基づいており、及び、前記選択された時間インターバルは、ロックの取得を試み且つスレッドをブロッキングする前にロックの取得失敗に応答して前記第1のインストラクションを実行する繰り返しの数であり、
    繰り返しの数が終わりになるのに応答して、前記イベントを待つ代わりにスレッドのスケジュールを解除し、
    少なくともロックの解除が生じるまでスレッドの再スケジューリングをブロックする、ことを含む方法。
  12. 前記ロックの解除を検出し、
    前記スレッドを再スケジュールし、
    前記ロックの取得を試みる、
    ことを更に含む請求項11に記載の方法。
JP2012510879A 2009-05-13 2010-05-07 電力管理型ロック最適化 Active JP5491622B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/465,182 2009-05-13
US12/465,182 US8156275B2 (en) 2009-05-13 2009-05-13 Power managed lock optimization
PCT/US2010/034050 WO2010132298A2 (en) 2009-05-13 2010-05-07 Power managed lock optimization

Publications (2)

Publication Number Publication Date
JP2012527042A JP2012527042A (ja) 2012-11-01
JP5491622B2 true JP5491622B2 (ja) 2014-05-14

Family

ID=43027664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012510879A Active JP5491622B2 (ja) 2009-05-13 2010-05-07 電力管理型ロック最適化

Country Status (6)

Country Link
US (3) US8156275B2 (ja)
EP (1) EP2261771B1 (ja)
JP (1) JP5491622B2 (ja)
KR (1) KR101165151B1 (ja)
CN (1) CN102918474B (ja)
WO (1) WO2010132298A2 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8156275B2 (en) 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US8560604B2 (en) 2009-10-08 2013-10-15 Hola Networks Ltd. System and method for providing faster and more efficient data communication
US8578384B2 (en) * 2009-10-28 2013-11-05 Freescale Semiconductor, Inc. Method and apparatus for activating system components
US8464035B2 (en) 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
CN102103523A (zh) * 2009-12-22 2011-06-22 国际商业机器公司 锁分配控制的方法和装置
US20120144218A1 (en) * 2010-12-03 2012-06-07 International Business Machines Corporation Transferring Power and Speed from a Lock Requester to a Lock Holder on a System with Multiple Processors
KR101686010B1 (ko) * 2010-12-21 2016-12-13 삼성전자주식회사 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법
US8972707B2 (en) 2010-12-22 2015-03-03 Via Technologies, Inc. Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin
US9030979B2 (en) * 2011-05-11 2015-05-12 Qualcomm Incorporated Reducing power consumption in multi-threaded processor mobile devices
JP5754301B2 (ja) * 2011-08-25 2015-07-29 日本電気株式会社 トランザクション同時実行制御システム、トランザクション同時実行制御方法、およびプログラム
US8862917B2 (en) * 2011-09-19 2014-10-14 Qualcomm Incorporated Dynamic sleep for multicore computing devices
TWI454905B (zh) 2011-09-30 2014-10-01 Intel Corp 在多核心平台中之受限制的啓動技術
CN102566979B (zh) * 2011-12-02 2014-12-03 华为技术有限公司 实现自适应锁的方法和装置以及多核处理器***
CN106909444B (zh) * 2011-12-22 2021-01-12 英特尔公司 用于指定应用线程性能状态的指令的指令处理装置及相关方法
DE112012006164B4 (de) * 2012-03-31 2020-03-19 Intel Corporation Steuern von Power-Management in Mikroservern
JP6000685B2 (ja) 2012-06-25 2016-10-05 京セラ株式会社 通信端末、通信制御プログラムおよび通信制御方法
US10007323B2 (en) 2012-12-26 2018-06-26 Intel Corporation Platform power consumption reduction via power state switching
US10133557B1 (en) * 2013-01-11 2018-11-20 Mentor Graphics Corporation Modifying code to reduce redundant or unnecessary power usage
US9304945B2 (en) * 2013-01-24 2016-04-05 Raytheon Company Synchronizing parallel applications in an asymmetric multi-processing system
US9396012B2 (en) * 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
CN103218033B (zh) * 2013-03-28 2015-11-25 小米科技有限责任公司 一种唤醒硬件设备的方法及装置
CN103336571B (zh) * 2013-06-13 2016-02-03 中国科学院计算技术研究所 一种降低多线程程序功耗的方法及***
CN103324269B (zh) * 2013-06-13 2016-01-27 中国科学院计算技术研究所 一种降低多线程程序功耗的方法及***
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US9519330B2 (en) * 2013-10-22 2016-12-13 Wisconsin Alumni Research Foundation Energy-efficient multicore processor architecture for parallel processing
US9696785B2 (en) * 2013-12-28 2017-07-04 Intel Corporation Electronic device having a controller to enter a low power mode
US9626228B1 (en) * 2014-02-04 2017-04-18 Emc Corporation Synchronizing stateless process across multiple instances
US9632569B2 (en) 2014-08-05 2017-04-25 Qualcomm Incorporated Directed event signaling for multiprocessor systems
US11057446B2 (en) 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
US9804666B2 (en) * 2015-05-26 2017-10-31 Samsung Electronics Co., Ltd. Warp clustering
KR102476357B1 (ko) 2015-08-06 2022-12-09 삼성전자주식회사 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
WO2017044097A1 (en) * 2015-09-10 2017-03-16 Hewlett Packard Enterprise Development Lp Request of an mcs lock by guests
US10169078B2 (en) 2015-10-16 2019-01-01 International Business Machines Corporation Managing thread execution in a multitasking computing environment
US10083068B2 (en) * 2016-03-29 2018-09-25 Microsoft Technology Licensing, Llc Fast transfer of workload between multiple processors
US10996737B2 (en) 2016-03-31 2021-05-04 Intel Corporation Method and apparatus to improve energy efficiency of parallel tasks
JP6790613B2 (ja) * 2016-09-05 2020-11-25 富士ゼロックス株式会社 情報処理装置、情報管理装置、及びプログラム
CN108255516A (zh) * 2016-12-29 2018-07-06 展讯通信(上海)有限公司 顺序同步多线程处理器及其指令执行控制方法、装置
US10627888B2 (en) 2017-01-30 2020-04-21 International Business Machines Corporation Processor power-saving during wait events
US10331500B2 (en) 2017-04-05 2019-06-25 Cavium, Llc Managing fairness for lock and unlock operations using operation prioritization
US10599430B2 (en) 2017-04-05 2020-03-24 Cavium, Llc Managing lock and unlock operations using operation prediction
US10210116B2 (en) * 2017-04-27 2019-02-19 Qualcomm Incorporated Method, apparatus, and system for semaphore-based protection of power-domain-crossing signals
EP4020940A1 (en) 2017-08-28 2022-06-29 Bright Data Ltd. Content fetching by selecting tunnel devices
US11190374B2 (en) 2017-08-28 2021-11-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US20190073243A1 (en) * 2017-09-07 2019-03-07 Alibaba Group Holding Limited User-space spinlock efficiency using c-state and turbo boost
CN110825514B (zh) * 2018-08-10 2023-05-23 昆仑芯(北京)科技有限公司 人工智能芯片以及用于人工智能芯片的指令执行方法
CN110825530B (zh) 2018-08-10 2022-12-23 昆仑芯(北京)科技有限公司 用于人工智能芯片的指令执行方法和装置
WO2020174460A2 (en) 2019-02-25 2020-09-03 Luminati Networks Ltd. System and method for url fetching retry mechanism
WO2020202135A2 (en) 2019-04-02 2020-10-08 Luminati Networks Ltd. System and method for managing non-direct url fetching service
CN113177422B (zh) * 2020-09-30 2024-02-20 深圳华智融科技股份有限公司 卡检测方法、计算机设备和计算机可读存储介质
CN113867518A (zh) * 2021-09-15 2021-12-31 珠海亿智电子科技有限公司 处理器低功耗阻塞式延时方法、装置及可读介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5133064A (en) 1987-04-27 1992-07-21 Hitachi, Ltd. Data processing system generating clock signal from an input clock, phase locked to the input clock and used for clocking logic devices
US6061803A (en) * 1993-11-15 2000-05-09 International Microcircuits, Inc. Variable frequency clock for an electronic system and method therefor
US6343338B1 (en) * 1997-04-01 2002-01-29 Microsoft Corporation System and method for synchronizing disparate processing modes and for controlling access to shared resources
US6826754B1 (en) * 2000-09-29 2004-11-30 International Business Machines Corporation Method for eliminating or reducing hang conditions in computer systems
US7124405B1 (en) * 2001-06-28 2006-10-17 Microsoft Corporation Class initialization method semantics
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US7237131B2 (en) 2003-12-30 2007-06-26 Intel Corporation Transaction-based power management in a computer system
JP4376692B2 (ja) 2004-04-30 2009-12-02 富士通株式会社 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
GB2414573B (en) * 2004-05-26 2007-08-08 Advanced Risc Mach Ltd Control of access to a shared resource in a data processing apparatus
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US7257679B2 (en) 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Sharing monitored cache lines across multiple cores
US7765547B2 (en) 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US20080256547A1 (en) * 2005-02-23 2008-10-16 Hewlett-Packard Development Company, L.P. Method and System For Managing a Common Resource In a Computing System
TW200708963A (en) 2005-08-26 2007-03-01 Ind Tech Res Inst Method and apparatus for synchronization in a multi-processor system
US8566827B2 (en) * 2005-10-27 2013-10-22 International Business Machines Corporation System and method of arbitrating access of threads to shared resources within a data processing system
US7882379B2 (en) * 2006-09-22 2011-02-01 Sony Computer Entertainment Inc. Power consumption reduction in a multiprocessor system
US8667198B2 (en) 2007-01-07 2014-03-04 Apple Inc. Methods and systems for time keeping in a data processing system
US8020166B2 (en) * 2007-01-25 2011-09-13 Hewlett-Packard Development Company, L.P. Dynamically controlling the number of busy waiters in a synchronization object
US7500037B2 (en) * 2007-01-30 2009-03-03 International Business Machines Corporation System, method and program for managing locks
CN101252720B (zh) * 2007-06-25 2011-08-03 浙江华立通信集团有限公司 3g和4g终端休眠模式控制方法和装置
US8156275B2 (en) 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization

Also Published As

Publication number Publication date
US8332559B2 (en) 2012-12-11
JP2012527042A (ja) 2012-11-01
US8578079B2 (en) 2013-11-05
US8156275B2 (en) 2012-04-10
US20120167107A1 (en) 2012-06-28
EP2261771B1 (en) 2021-04-21
WO2010132298A3 (en) 2014-03-20
US20130067257A1 (en) 2013-03-14
WO2010132298A2 (en) 2010-11-18
CN102918474B (zh) 2016-10-12
KR20100122875A (ko) 2010-11-23
EP2261771A2 (en) 2010-12-15
EP2261771A3 (en) 2015-04-22
CN102918474A (zh) 2013-02-06
US20100293401A1 (en) 2010-11-18
KR101165151B1 (ko) 2012-07-12

Similar Documents

Publication Publication Date Title
JP5491622B2 (ja) 電力管理型ロック最適化
JP4660591B2 (ja) アイドル同期による計算システム電力の低減
TWI334979B (en) Method and apparatus and machine-readable storage medium for a zero voltage processor sleep state
TWI512448B (zh) 用以啟用處理器等待狀態之指令
EP2656170B1 (en) Minimizing resource latency between processor application states in a portable computing device by scheduling resource set transitions
EP2758851B1 (en) Dynamic sleep for multicore computing devices
US8209559B2 (en) Low power polling techniques
KR101677820B1 (ko) 스케줄링된 리소스 셋트 천이들을 이용하여 휴대용 컴퓨팅 디바이스에 대한 워크 로드 추정을 통한 전력 절약
KR101551321B1 (ko) 휴대용 컴퓨팅 디바이스에서 요청들을 스케쥴링하기 위한 방법 및 시스템
US20090320031A1 (en) Power state-aware thread scheduling mechanism
CN103282854B (zh) 用于功率管理的***和方法
JP2010044770A (ja) モニタメモリ待機を用いたキューされたロック
TW200305820A (en) A method and apparatus for suspending execution of a thread until a specified memory access occurs
US7043729B2 (en) Reducing interrupt latency while polling
EP1890225B1 (en) Method, apparatus and computer program product for handling switching among threads within a multithread processor
TW201234270A (en) Apparatus, method, and system for early deep sleep state exit of a processing element
EP3129876B1 (en) Scheduling of global voltage/frequency scaling switches among asynchronous dataflow dependent processors
KR101285665B1 (ko) 수면 모드를 지원하는 멀티 코어 시스템 온 칩
WO2008066511A1 (en) Centralized interrupt controller
JP2001290664A (ja) マルチタスク制御プロセッサシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130501

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130726

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: 20140129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140227

R150 Certificate of patent or registration of utility model

Ref document number: 5491622

Country of ref document: JP

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250