(57)【特許請求の範囲】
【請求項１】
選択された時間インターバルが終わるたびにタイマーイベント信号をパルス付勢するように構成されたタイマーユニットであって、前記タイマーユニットへの入力クロックの多クロック周期として使用中に前記選択された時間インターバルをプログラムする当該タイマーユニットと、
前記タイマーユニットからタイマーイベント信号を受信するように結合されたプロセッサとを備えた装置であって、
前記プロセッサは、前記プロセッサにより具現化されるインストラクションセットアーキテクチャーで定義された第１のインストラクションを実行するように構成され、前記第１のインストラクションは、前記第１のインストラクションを含むスレッドに対して前記プロセッサを低電力状態に入れさせるように定められ、且つ当該スレッドを低電力状態にさせ、更に、前記プロセッサは、前記タイマーユニットからの信号におけるパルスに応答して前記スレッドに対して低電力状態を退出し、そして前記第１のインストラクションに続くインストラクションで実行を続け、前記選択された時間インターバルはスレッドがロックを保持する典型的な予想時間に基づいており、及び、前記選択された時間インターバルは、ロックの取得を試み、且つ、スレッドをブロッキングする前にロックの取得失敗に応答して前記第１のインストラクションを実行する繰り返しの数であるように構成された前記装置。
【請求項２】
前記インストラクションセットアーキテクチャーを具現化する第２のプロセッサを更に備え、この第２のプロセッサも、前記タイマーユニットからタイマーイベント信号を受信するように結合されると共に、そのタイマーイベント信号におけるパルスに応答して前記スレッドに対して低電力状態を退出するように構成された、請求項１に記載の装置。
【請求項３】
前記インストラクションセットアーキテクチャーを具現化する第２のプロセッサと、前記選択された時間インターバルが終わるたびに第２のタイマーイベント信号をパルス付勢するように構成された第２のタイマーユニットとを更に備え、その第２のプロセッサは、前記第２のタイマーユニットから第２のタイマーイベント信号を受信するように結合されると共に、その第２のタイマーイベント信号におけるパルスに応答して前記スレッドに対して低電力状態を退出するように構成された、請求項１に記載の装置。
【請求項４】
前記プロセッサは、更に、別のプロセッサからの送信イベントメッセージを受信するのに応答して低電力状態を退出するように構成された、請求項１に記載の装置。
【請求項５】
前記プロセッサは、
ロックを取得するように試み、
ロックの取得失敗に応答して、付加的な繰り返しが許されるかどうか決定し、
付加的な繰り返しが許されるという決定に応答して、別の繰り返しを開始する前にイベントを待機し、イベントを待機することで、プロセッサを低電力状態に入れさせ、複数のインストラクションがロックの取得を試みる間の電力消費を減少させる、
ように構成された、請求項１に記載の装置。
【請求項６】
前記プロセッサは、低電力状態からの退出に応答して、
ロックを取得するよう試み、
ロックの取得に応答して、ロックを要求した１つ以上のオペレーションを遂行し、
ロックを解除する、
ように構成された、請求項５に記載の装置。
【請求項７】
前記ロックを解除することは、送信イベントメッセージを送信し、その送信イベントメッセージを受け取るプロセッサにおいて低電力状態から退出させることを含む、請求項６に記載の装置。
【請求項８】
前記プロセッサは、低電力状態からの退出に応答して実行されるとき、
ロックを取得するよう試み、
ロックの取得失敗に応答して、別の付加的な繰り返しが許されるかどうか決定し、
別の付加的な繰り返しが許されないという決定に応答して、スレッドをブロックする、ように構成された、請求項５に記載の装置。
【請求項９】
前記付加的な繰り返しが許されるかどうか決定することは、繰り返しカウントを更新し、そしてそのカウントを終了についてテストすることを含む、請求項５に記載の装置。
【請求項１０】
前記付加的な繰り返しが許されるかどうか決定することは、プロセッサにより実行中のオペレーティングシステムによって提供される時間サービスを読み取り、そしてロックの取得を試みる間に経過する時間量を決定することを含む、請求項５に記載の装置。
【請求項１１】
前記プロセッサは、
ロックの取得を繰り返し試み、ロックの取得の失敗に応答して、イベントを待機し、
前記イベントを待機することは、イベント待機を含むスレッドのために前記プロセッサにおいて低電力状態に入り、且つ当該スレッドを低電力状態にさせ、前記低電力状態から退出する第１のイベントは、選択された時間インターバルが前記タイマーへの入力クロックの多クロック周期としてあらわされるようプログラムしたタイマーの満了であり、前記選択された時間インターバルはスレッドがロックを保持する典型的な予想時間に基づいており、及び、前記選択された時間インターバルは、ロックの取得を試み且つスレッドをブロッキングする前にロックの取得失敗に応答して前記第１のインストラクションを実行する繰り返しの数であり、
繰り返しの数が終わりになるのに応答して、前記イベントを待つ代わりにスレッドのスケジュールを解除し、
少なくともロックの解除が生じるまでスレッドの再スケジューリングをブロックする、ことを含む方法。
【請求項１２】
前記ロックの解除を検出し、
前記スレッドを再スケジュールし、
前記ロックの取得を試みる、
ことを更に含む請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ及びプロセッサを具現化するシステムの分野に係り、より詳細には、プロセッサを含むシステムにおけるロックの管理に係る。
【背景技術】
【０００２】
複数のスレッドが同時にアクティブになるシステムでは、スレッドが同じリソース（例えば、メモリ位置、メモリのデータ構造体、システム内の装置、等）にアクセスできる。共有リソースへのアクセスを論理的に制御された形態で実行することを保証するために、共有リソースをロックにより保護することができる。ロックは、例えば、マルチプロセッサシステムでは、異なるプロセッサで実行されるスレッドによるリソースへの重畳アクセスを防止することに使用できる。マルチスレッドシステムでは、１つのプロセッサしかなくても、１つのスレッドがリソースをアクセス／更新するプロセスにある間に別のスレッドがスケジュールされる場合には、複数のアクティブなスレッド間に重畳アクセスが生じる。
【０００３】
ロックがリソースを保護しているときにリソースにアクセスするか又はリソースを更新するために、アクセスするスレッドは、ロックを取得し、望ましいアクセス／更新を遂行し、そしてロックを解除することができる。現在スレッドがロックを保持する間に、他のスレッドがロックを取得することはできない。（一般的に「スピンロック」と称される）あるロックでは、ロックを取得できないスレッドは、解除が検出されるまでロックにアクセスし続けるループに入る（「ロックに対してスピンしている」としばしば称される）。ループは、非常に緊密なもので、典型的に、ロックを読み取りそして取得すべき能力についてそれをテストするための幾つかのインストラクションしか含まない。従って、ループ及びそれに対応するデータアクセスは、プロセッサのキャッシュにおいてヒットする傾向がある。従って、プロセッサは、スピンロックが解除されるのを待機して著しい電力を燃焼するが、本質的に有用な仕事は行わない。別の形式のロックは、「ミューテックスロック」と称される。ミューテックスロックでは、スレッドがロックを取得するように試み、その試みが失敗した場合には、スレッドがロックの解除を待機する間はプロセッサが他の仕事を実行できないようにスレッドがブロックする。
【０００４】
多くのケースにおいて、特に、マルチプロセッサシステムでは、あるスレッドが非常に短い期間中ミューテックスロックをしばしば保持する。その期間は、例えば、ロックの取得を試みているブロックされたスレッドに代わって別のスレッドをスケジュールするために必要とされる時間量より短い。従って、ミューテックスロックの最適化は、典型的な保持期間にほぼ等しい時間、又はおそらくそれより若干長い時間中、ロックにおいてスピンループに入ることである。スレッドがまだスピンループにある間にロックが解除された場合には、ロックを取得し、そしてその後の時点でのスレッドのスケジュール解除及びスレッドの再スケジューリングのオーバーヘッドを回避することができる。スレッドがスピンループにある間には、プロセッサは、再び著しい電力を消費し得る。
【０００５】
あるシステムで具現化される別のメカニズムは、イベント待機インストラクション及び送信イベントインストラクションの使用を含む。イベント待機インストラクションは、スレッドを実行するプロセッサを低電力状態に入れるのに使用できる。プロセッサは、低電力状態において別のプロセッサ（例えば、ロックを保持するプロセッサ）における送信イベントインストラクションの実行を待機し、これは、送信イベントメッセージを送信する。送信イベントメッセージの受信に応答して、プロセッサは、高電力状態に復帰し、ロックの取得を試みる。
【発明の概要】
【０００６】
一実施形態において、選択された時間インターバル又はウェイクアップインターバルにプログラムされるタイマーユニットが設けられる。プロセッサは、イベント待機インストラクションを実行し、そしてそのインストラクションを含むスレッドに対して低電力状態に入る。タイマーユニットは、ウェイクアップインターバルの終わりにタイマーイベントを信号し、そしてプロセッサは、そのタイマーイベントに応答して低電力状態を出る。スレッドは、イベント待機インストラクションに続くインストラクションで実行を続けることができる。
【０００７】
一実施形態において、タイマー及びイベント待機インストラクションは、ミューテックスロックを取得するための電力管理型最適化を具現化するのに使用される。ウェイクアップインターバルは、スレッドがロックを保持する典型的な予想時間に基づき決定される。例えば、典型的なロック保持時間は、ウェイクアップインターバルの倍数（又はほぼ倍数）であり、ロックの取得を試み、失敗し、そしてイベント待機インストラクションを実行する最大繰り返し数が決定されるようにする。最大繰り返し数にウェイクアップインターバルを乗算したものは、ほぼ典型的なロック保持時間（又は典型的なロック保持時間より若干長い）である。従って、典型的なロック保持時間内にロックが解除された場合には、ロックの取得を試みるスレッドは、まだブロックされていない。典型的なロック保持時間内にロックが解除されない場合には、スレッドがブロックされ、スレッドに指定されたプロセッサリソースは、他の生産的使用に供される。
【０００８】
以下、添付図面を参照して、本発明を詳細に説明する。
【図面の簡単な説明】
【０００９】
【図１】１つ以上のプロセッサ及びタイマーユニットを含むシステムの一部分の一実施形態ブロック図である。
【図２】１つ以上のプロセッサ及びタイマーユニットを含むシステムの一部分の別の実施形態ブロック図である。
【図３】図１又は２に示す実行コアの一実施形態のオペレーションを示す状態マシンである。
【図４】図１又は２に示すイベントコントロールユニットの一実施形態のオペレーションを示すフローチャートである。
【図５】初期化コードの一実施形態の一部分を示すフローチャートである。
【図６】ロックコードの一実施形態を示すフローチャートである。
【図７】スレッドスケジューラの一実施形態のオペレーションを示すフローチャートである。
【図８】ロックコードの第１の実施例を示すタイミング図である。
【図９】ロックコードの第２の実施例を示すタイミング図である。
【図１０】ロックコードの第３の実施例を示すタイミング図である。
【図１１】システムの１つの実施形態のブロック図である。
【図１２】コンピュータ記憶装置アクセス媒体の１つの実施形態を示すブロック図である。
【図１３】１つ以上のプロセッサ、イベントコントロールユニット及びタイマーユニットを含むシステムの一部分の別の実施形態のブロック図である。
【発明を実施するための形態】
【００１０】
本発明は、種々の変更や代替え的な形態を受けるが、その特定の実施形態を添付図面に一例として示して、以下に詳細に説明する。しかしながら、添付図面及びその詳細な説明は、本発明をここに開示する特定の形態に限定するものではなく、逆に、本発明は、特許請求の範囲に規定された本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅する。又、ここに使用する見出しは、編成上の目的だけのためであり、説明の範囲を限定するものではない。本明細書全体にわたり使用される語「してもよい(may)」は、許容の意味（即ち、潜在性をもつという意味）で使用され、必須の意味（即ち、ねばならないの意味）で使用されるのではない。同様に、「含む(“include”、”including”及び”includes”)」という語は、含むことを意味するが、それに限定されない。
【００１１】
種々のユニット、回路、又は他のコンポーネントは、１つ又は複数のタスクを遂行するように「構成される」として述べる。このような文脈において、「構成される」は、オペレーション中に１つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表す。従って、ユニット／回路／コンポーネントは、そのユニット／回路／コンポーネントが現在オンでないときでもタスクを遂行するように構成できる。一般的に、「構成される」に対応する構造体を形成する回路は、オペレーションを具現化するためのハードウェア回路を含む。同様に、種々のユニット／回路／コンポーネントは、説明の便宜上、１つ又は複数のタスクを遂行するものとして説明される。このような説明は、「構成される」という句を含むものとして解釈されねばならない。１つ以上のタスクを遂行するように構成されたユニット／回路／コンポーネントを言及することは、そのユニット／回路／コンポーネントについて３５Ｕ.Ｓ.Ｃ.§１１２、パラグラフ６の解釈に依存しないことが明確に意図される。
【００１２】
図１を参照すれば、プロセッサ１０Ａ、任意の付加的なプロセッサ１０Ｂ、及びタイマーユニット１２の一実施形態を示すブロック図が示されている。プロセッサ１０Ａ−１０Ｂは、タイマーユニット１２からタイマーイベント信号を受信するように結合される。ここに示す実施形態において、プロセッサ１０Ａは、イベントコントロールユニット１６Ａに結合された実行コア１４Ａを備え、イベントコントロールユニット１６Ａは、タイマーイベント信号を受信するように結合される。プロセッサ１０Ｂも、同様に、イベントコントロールユニット１６Ｂに結合された実行コア１４Ｂを備え、イベントコントロールユニット１６Ｂは、タイマーイベント信号を受信するように結合される。又、実行コア１４Ａ−１４Ｂは、送信イベントメッセージを送信するように構成され、これは、図１に示すように、他方のプロセッサ１０Ａ−１０Ｂのイベントコントロールユニット１６Ａ−１６Ｂにより受け取られる。ここに示す実施形態では、タイマーユニット１２は、タイマー１８と、このタイマー１８に結合されたタイマーコントロールユニット２０とを備えている。
【００１３】
プロセッサ１０Ａ−１０Ｂは、それらプロセッサにより具現化されるインストラクションセットアーキテクチャー（ＩＳＡ）において定義されたインストラクションを実行するように構成される。一般的に、ＩＳＡは、インストラクション、それらのオペレーション、それらのコード、等を指定する。従って、プログラマー又はコンパイラーは、ＩＳＡにおいて指定されたインストラクションを与え、そしてプロセッサ１０Ａ−１０Ｂは、それらインストラクションを実行して、指定のオペレーションを結果として発生する。
【００１４】
より詳細には、図１の実施形態において、実行コア１４Ａ−１４Ｂは、ＩＳＡにおいてインストラクションを実行するように構成される。従って、実行コア１４Ａ−１４Ｂは、各インストラクションをフェッチし、デコードし、実行し、そしてその結果をコミットするための回路を含む。実行コア１４Ａ−１４Ｂは、スーパースカラー及び／又はスーパーパイプラインマイクロアーキテクチャーを含むマイクロアーキテクチャー、順序正しい実行又は順序ずれした実行、推論的実行、単一スレッド又はマルチスレッド実行、等を具現化することができる。種々の実施形態において、実行コア１４Ａ−１４Ｂは、前記具現化のいずれかに加えて、マイクロコード化技術を具現化することができる。
【００１５】
ＩＳＡは、イベント待機インストラクションを含む。一般的に、イベント待機インストラクションは、少なくともそのインストラクションを含むスレッドに対してプロセッサ１０Ａ−１０Ｂを低電力状態に入れさせるようにＩＳＡにおいて定義される。例えば、実行コア１４Ａ−１４Ｂは、スレッド間で動的にスイッチしないプロセッサにおいて、全体として低電力状態に入る。或いは又、複数のスレッドをサポートする実施形態において、インストラクションを含むスレッド専用のリソースが低電力状態に入る。他のスレッド専用のリソースは、通常の（低ではない）電力状態に留まり、そして共有リソースは、低電力状態に選択的に入る（例えば、まだアクティブな他のスレッドによりそれらが使用されない場合に低電力状態に入る）。
【００１６】
一般的に、低電力状態とは、プロセッサの通常の状態より低い電力が消費されると予想される状態である。異なる具現化により低電力状態を異なる仕方で定義することができる。例えば、低電力状態に入るリソースに対してクロックを「ターンオフ」する（定常状態に保持する）ことができる。クロックがトグルされず、従って、状態が変化しないので、動的な電力消費が減少される。それとは別に又はそれに加えて、リソース（又はリソースのサブセット）が電源オフされる。一実施形態において、アレイのようなメモリ装置は、状態を保持するように付勢されたままとなるが、他の回路は、電源オフされる。回路を電源オフすると、静的な電力消費（例えば、漏洩電流）が減少される。それとは別に又はそれに加えて、プロセッサは、その動作周波数及び動作電圧を減少して低電力状態に入る。このような実施形態では、電力節約のために性能が切り換えられてもよい。
【００１７】
タイマーユニット１２を設け、そしてタイマーユニット１２に対して選択される時間インターバルを、ミューテックスロックのようなロックをスレッドが保持する典型的な予想時間に基づいて選択することにより、スレッドをブロッキングするまでの典型的なロック保持時間にほぼ等しい期間中にミューテックスロックの取得を試みる比較的低電力の具現化が達成される。例えば、選択される時間インターバルは、ほぼ、典型的なロック保持時間を小さな整数で除算したものである。その整数は、ロックの取得を試み、そしてロックの取得失敗に応答して、イベント待機命令を実行する繰り返しの数であり、これは、スレッドをブロッキングする前に実行されるものである。例えば、一実施形態において、選択された時間インターバルは、約１マイクロ秒であり、そして典型的な保持時間は、約１０マイクロ秒以下である。従って、繰り返しの数は、この例では、約１０である。典型的なロック保持時間、選択された時間インターバル、及び／又は繰り返しの数は、他の例では、それより大きくても小さくてもよい。
【００１８】
プロセッサ１０Ａ−１０Ｂを低電力状態から退出させる（又は「ウェイクアップ」させる）イベントを検出するためにイベントコントロールユニット１６Ａ−１６Ｂが設けられる。従って、イベントコントロールユニット１６Ａ−１６Ｂは、それに対応するプロセッサ１０Ａ−１０Ｂが低電力状態に入るときには動作状態に保たれる。イベントコントロールユニット１６Ａ−１６Ｂは、選択された時間インターバルが満了になったときを指示するタイマーイベント信号をタイマーユニット１２から受信するように結合される。イベントコントロールユニット１６Ａ−１６Ｂは、タイマーイベント信号、及びプロセッサを低電力状態から退出させるように定義された他のイベントに応答して、実行コア１４Ａ−１４Ｂへウェイクアップ信号を各々アサートするように構成される。このウェイクアップに応答して、プロセッサは、イベント待機インストラクションを含むスレッドの実行を、イベント待機インストラクションに続くインストラクションにおいて継続することができる。あるケースでは（例えば、割り込みがシグナリングされた場合に）、スレッドは、異なるインストラクションへ移動するが、選択された時間インターバル又は送信イベントメッセージ（以下に述べる）の満了によるウェイクアップは、一般的に、イベント待機インストラクションに続くインストラクションへ復帰するための実行を生じさせる。
【００１９】
一実施形態では、ＩＳＡにおける別のインストラクションは、送信イベントインストラクションである。この送信イベントインストラクションは、送信イベントメッセージをシステムの他のプロセッサへ送信させるように定義される。送信イベントメッセージを受け取るプロセッサは、手前のイベント待機インストラクションからウェイクアップする。従って、イベントコントロールユニット１６Ａ−１６Ｂは、図１に示すように、プロセッサ１０Ｂ−１０Ａから送信イベントメッセージを受け取るように結合される。より詳細には、実行コア１４Ａ−１４Ｂが送信イベントメッセージを送信する。送信イベントメッセージの形態及びそのメッセージを通信するためのメカニズムは、具現化に依存するもので、変化し得る。例えば、プロセッサ１０Ａ−１０Ｂは、バス構造体に結合され、そして送信イベントメッセージは、バストランザクションである。或いは又、プロセッサ１０Ａ−１０Ｂは、パケットベースの相互接続部に結合され、そして送信イベントメッセージは、パケット相互接続部を経てブロードキャストされるパケットである。別の例では、プロセッサ１０Ａ−１０Ｂは、システム・オン・ア・チップ又はマルチ・コア・チップで具現化されるコアであり、この場合、送信イベントメッセージは、コア間の信号又はプライベートインターフェイスである。送信イベントメッセージは、受信側プロセッサをウェイクアップさせるように定義されたプロセッサ間の通信である。
【００２０】
タイマーユニット１２は、一般的に、選択された時間インターバルを計時し、その選択された時間インターバルが満了になることを指示する出力を与えるように構成された回路を含む。又、タイマーユニット１２は、現在インターバルの満了時に次のインターバルの計時を開始し、従って、タイマーユニット１２の出力は、別のインターバルが満了になったことを周期的に指示する。一実施形態では、タイマーユニット１２は、満了になるのに応答してタイマーイベント信号をパルス付勢する。そのパルス巾は、各プロセッサ１０Ａ−１０Ｂに適切に受け取られることを保証するために、１つ以上のクロックサイクルとなる。
【００２１】
図１に示すように、タイマーユニット１２は、クロック入力に応答してインクリメント又はデクリメントするタイマー１８を含む。例えば、タイマー１８は、ある値に初期化され、値が０に達するまでクロック入力のクロックサイクルごとにデクリメントする。タイマーコントロールユニット２０は、０を検出し、タイマーイベントを信号する。更に、タイマーコントロールユニット２０は、タイマーをその値に再初期化することができる。或いは又、カウンタが０に初期化されて、クロック入力のクロックサイクルごとにインクリメントしてもよい。タイマーコントロールユニット２０は、タイマー値を希望の値と比較して、タイマーイベントを信号すると共に、タイマー１８を０にクリアする。
【００２２】
従って、タイマーユニット１２は、入力クロックの粒度で時間インターバルを信号する。選択された時間インターバルを計時するため、タイマーユニット１２は、クロック周期で乗算したときに希望の時間量に等しくなるか又はそれを近似する値にセットされる。タイマーユニット１２のクロックは、任意の周期／周波数を有する。例えば、数十キロヘルツの範囲の周波数を有するクロックが使用されてもよい。
【００２３】
一実施形態において、タイマーユニット１２は、選択された時間インターバルでプログラムすることができる。タイマーコントロールユニット２０は、選択された時間インターバル（又は選択された時間インターバルをタイマー１８への入力クロックのクロック周期に関して表す値）をタイマーユニット１２に書き込むためにプロセッサ１０Ａ−１０Ｂからの通信を受け取るように構成され、そしてその通信に応答してその値でタイマー１８及び／又は別のレジスタを更新するように構成される。
【００２４】
イベント待機インストラクションは、種々のＩＳＡにおいて異なる形態で定義され、そして上述したものに対して付加的なオペレーションを含むのも任意である。例えば、イベント待機インストラクションは、ＡＲＭ  ＩＳＡにおけるＷＦＥインストラクションと同様である。ＷＦＥインストラクションは、退出すべき別のプロセッサからの送信イベントメッセージの受信を待機する。一実施形態において、プロセッサ１０Ａ−１０Ｂは、選択された時間インターバルの満了を、低電力状態を退出するためのイベントとして検出してもよい。タイマーユニット１２は、各選択された時間インターバルの満了時にタイマーイベント信号をアサートし、そして選択された時間インターバルの次の繰り返しの計時を開始する。
【００２５】
別の実施例として、イベント待機インストラクションは、（インテルアーキテクチャー（ＩＡ）−３２としても知られた）インテル社からのｘ８６ＩＳＡにおけるＭＷＡＩＴインストラクションと同様でもよい。ＭＷＡＩＴインストラクションは、監視されるべきキャッシュライン（例えば、ロックを含むキャッシュライン）を識別するＭＯＮＩＴＯＲインストラクションが先行する。ＭＷＡＩＴインストラクションは、プロセッサが低電力状態に入るようにさせ、そして監視されるキャッシュライン上のコヒレンシーヒットにより目覚めさせられる。イベント待機インストラクションは、ＭＷＡＩＴインストラクションと同様であるが、選択された時間インターバルの満了に応答して低電力状態を退出する。或いは又、ＭＷＡＩＴインストラクションからの個別のインストラクションは、イベント待機インストラクションとして使用されるｘ８６ＩＳＡに対して定義されてもよい。又、他のＩＳＡがイベント待機インストラクションを具現化してもよい。例えば、ＰｏｗｅｒＩＳＡ、ＭＩＰＳ  ＩＳＡ、ＳＰＡＲＣ  ＩＳＡ、等が含まれる。
【００２６】
本開示の残り部分では、明細書及び／又は添付図面においてイベント待機インストラクションを参照するのにアクロニウムＷＦＥが使用される。このアクロニウムは、イベント待機インストラクションを、ＡＲＭ  ＩＳＡで定義されたＷＦＥインストラクションに限定することを意図しておらず、上述したプロパティを有するＩＳＡでイベント待機インストラクションを参照するものである。
【００２７】
図１は、２つのプロセッサ１０Ａ−１０Ｂを示しているが、それより多数のプロセッサがあってもよいことに注意されたい。更に、プロセッサ１０Ｂは、任意であり、他の実施形態では、１つのプロセッサしかなくてもよい。３つ以上のプロセッサを有する実施形態では、２つ以上のタイマーユニット１２があってもよく、そしてプロセッサの非重畳サブセットが異なるタイマーユニットを共有してもよい。或いは又、各プロセッサがそれ自身のタイマーユニットを有してもよい。
【００２８】
種々の実施形態において、プロセッサ１０Ａ−１０Ｂは、個別の集積回路でもよいし、或いはマルチコア集積回路又はシステム・オン・ア・チップ（ＳＯＣ）集積回路上のプロセッサコアとして一体化されてもよいことに注意されたい。タイマーユニット１２も、マルチコア又はＳＯＣ集積回路に一体化されてもよい。従って、ここで使用するプロセッサは、個別の集積回路を含み、並びに他のコンポーネント及び／又はプロセッサコアを伴う集積回路上のプロセッサコアを含む。
【００２９】
図２は、各個々のプロセッサ１０Ａ−１０Ｂに対してタイマーユニット１２Ａ−１２Ｂがあり、そしてタイマーユニット１２Ａ−１２Ｂがプロセッサ１０Ａ−１０Ｂに一体化された別の実施形態のブロック図である。タイマーコントロールユニット２０の機能の幾つか又は全部が、必要に応じて、イベントコントロールユニット１６Ａ−１６Ｂに一体化される。
【００３０】
図３は、プロセッサ（例えば、プロセッサ１０Ａ又は１０Ｂ）、より詳細には、イベント待機インストラクションに関する実行コア（例えば、実行コア１４Ａ又は１４Ｂ）の一実施形態のオペレーションを示す状態マシン図である。
【００３１】
イベント待機インストラクションが実行されなかった場合には、プロセッサは、スレッド実行状態３０にある。このスレッド実行状態３０は、通常の動作状態である。例えば、スレッド実行状態は、プロセッサが全電力又は性能で実行するか、又はイベント待機インストラクション以外の理由でソフトウェアにより選択された電力／性能レベルで実行する状態である。例えば、プロセッサが経験するワークロードに基づいて、ソフトウェアは、適当な電力／性能レベルを選択する（低い性能で充分であるときに低い電力を使用して）。別の例では、ソフトウェアは、残りのバッテリ寿命に基づいて電力／性能レベルを選択する。種々の実施形態では、任意のファクタが考慮されてもよい。
【００３２】
イベント待機インストラクション（弧３２）の実行に応答して、プロセッサ／実行コアは、スレッドのための低電力状態、例えば、スレッドスリーピング状態３４に入る。スレッドスリーピング状態３４において、イベント待機インストラクションを含むスレッドに指定されるリソースは、低電力状態（例えば、クロックオフ、電源オフ、等）にある。プロセッサのマルチスレッド実施形態では、プロセッサ内の各アクティブなスレッド専用のリソースに対して複数の低電力状態がある。プロセッサ／実行コアは、イベントコントロールユニット１６Ａ又は１６Ｂによりウェイクアップが信号されるまで（弧３６）、スレッドスリーピング状態３４に留まり、この場合、イベント待機インストラクションに続くインストラクションにおいてスレッドのためのインストラクション実行が再開される。
【００３３】
図４は、イベントコントロールユニット（例えば、イベントコントロールユニット１６Ａ又は１６Ｂ）の一実施形態のオペレーションを示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。更に、ブロックは、イベントコントロールユニットの組み合わせロジックにおいて並列に遂行されてもよい。ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン化されてもよい。
【００３４】
イベントコントロールユニットは、タイマーユニット１２によりタイマーイベント信号を検出する（判断ブロック４０）。タイマーイベントが検出された場合には（判断ブロック４０「イエス」岐路）、イベントコントロールユニットは、ウェイクアップ信号を実行コアにアサートする（ブロック４２）。更に、上述した送信イベントインストラクションを具現化する実施形態において、イベントコントロールユニットは、送信イベントメッセージを検出する（判断ブロック４４）。送信イベントメッセージが受け取られた場合には（判断ブロック４４「イエス」岐路）、イベントコントロールユニットは、ウェイクアップ信号をアサートする（ブロック４２）。ある実施形態（例えば、低電力状態中にそのクロックを停止し及び／又は電源ダウンされる単一スレッドプロセッサ）において、割り込みを受け取ると、割り込みを適時にサービスさせるためにウェイクアップを生じさせる。割り込みが受け取られた場合には（判断ブロック４６「イエス」岐路）、イベントコントロールユニットがウェイクアップ信号をアサートする（ブロック４２）。ある実施形態において、システムは、ウェイクアップを生じさせるシステム時間切れタイマー（図示せず）を備えている。システム時間切れは、割り込みの形態でプロセッサに提示され、従って、システム時間切れは、割り込みのサブセットである。例えば、システム時間切れは、スレッドの実行微粒が満了となり、新たなスレッドをスケジュールしなければならないときに生じる。システム時間切れ割り込みが生じた場合には（判断ブロック４８の「イエス」岐路）、イベントコントロールユニットがウェイクアップ信号をアサートする（ブロック４２）。
【００３５】
他の実施形態において、イベントコントロールユニットがウェイクアップ信号をアサートするようにさせる付加的なイベントが生じ得る。他の実施形態において、付加的なイベントは、図４に示すイベントのサブセットと共に含まれる。イベントの組み合わせが使用されてもよい。一実施形態では、判断ブロック４０、４４、４６及び４８が独立しており、従って、並列に又は任意の順序で遂行されてもよいことに注意されたい。
【００３６】
図５は、プロセッサを含むシステムの初期化中にプロセッサ１０Ａ又は１０Ｂにより実行される初期化コードの一実施形態の一部分を示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。初期化コードは、図示されたオペレーションを具現化するためにプロセッサにより実行できるインストラクションを含む。
【００３７】
初期化コードは、タイマーイベントを希望のウェイクアップインターバルで信号するために１つ又は複数のタイマーユニットを初期化する（ブロック５０）。即ち、希望のウェイクアップインターバルは、上述した選択された時間インターバルである。希望のウェイクアップインターバルは、システムに含まれた不揮発性記憶装置（例えば、リードオンリメモリ、フラッシュメモリ、ディスク記憶装置、等）から読み取られる。不揮発性記憶装置が変更可能なものである場合に、所与のシステムにおいて実際のロック保持時間を良好に反映させるために、希望のウェイクアップインターバルを時間と共に変化することができる。
【００３８】
初期化コードは、一般的に、システムを使用準備する（例えば、システムを「ブート」する）ために他のオペレーションを含んでもよい。あるケースでは、希望のウェイクアップインターバルを他の時点で変更／プログラムしてもよい。例えば、システムのワークロード、ロックで保護されるデータの性質、等に基づいて、希望のウェイクアップインターバルを変化させてもよい。従って、ある実施形態では、タイマーユニットは、オペレーション中に動的にプログラムされてもよい。
【００３９】
図６は、ロックを管理するためにプロセッサ１０Ａ又は１０Ｂにより実行されるロックコードの一実施形態の一部分を示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。ロックコードは、図示されたオペレーションを具現化するためにプロセッサにより実行できるインストラクションを含む。一実施形態において、ロックコードは、ロックを使用するアプリケーション／スレッドに使用される。別の実施形態では、ロックコードは、オペレーティングシステムの一部分であり、アプリケーションにより使用するためにアプリケーションプログラムインターフェイス（ＡＰＩ）として露出されてもよい。或いは又、フローチャートの一部分がオペレーティングシステムにおいて具現化され、ＡＰＩであってもよい。
【００４０】
ロックコードは、スレッドブロックの前にロックを取得する試みの不成功な繰り返しの最大数である繰り返しカウントを初期化する（ブロック５２）。この繰り返しカウントに選択された時間インターバルを乗算したものは、典型的なロック保持時間にほぼ等しく（例えば、タイマーユニット１２に利用できる粒度内）、又は典型的なロック保持時間より若干長い。
【００４１】
次いで、ロックコードは、ロックを取得するよう試みる（ブロック５４）。一般的に、ロックを取得するとは、コードがロックのコントロールを行えるようにする状態にロックがあることを決定するために行われるオペレーション、及び他のコードがコントロールを行うことを除外するようにロックの状態を変化させるオペレーションを指す。ロックを取得したコードは、その後、ロックを解除することができ、これは、ロックの状態を、ロックを取得できることを指示する状態に戻すよう変化させることを含む。ロックの状態及びそれらの解釈は、ロックの形式に基づいて変化する。単純なロックは、取得可能であることを指示するためにクリアであり且つ取得不能である（又は現在保持されている）ことを指示するためにセットされるか、又はその逆であるビットである。あるロックは、取得可能であることを指示するためにゼロであり、非ゼロ値は、現在保持されていることを指示し、そしてその保持者を（例えば、スレッド識別子、プロセス識別子、等により）識別する。他のロックは、アクセス性についての異なる状態を含んでもよい（例えば、読み取り専用・対・読み取り／書き込み、又はノーアクセス）。
【００４２】
ロックが首尾良く取得されない場合には（判断ブロック５６「ノー」岐路）、ロックコードが繰り返しカウントをデクリメントし（ブロック５８）、そして繰り返しの数が満了になったかどうか決定する（判断ブロック６０）。もしそうでなければ（判断ブロック６０「ノー」岐路）、ロックコードは、イベント待機インストラクションを実行する（ブロック６２）。スレッドは、ウェイクアップイベントがプロセッサによって検出されるまで（例えば、タイマーイベント−点線６３）低電力状態にストールされ、その検出時に、再びロックを試みることができる。例えば、ロックコードは、イベント待機インストラクションと、それに続いて、ロックの取得を試みる１つ以上のインストラクションのうちの第１インストラクションへの分岐インストラクションとを含む（ブロック５４）。ウェイクアップイベントが割り込みである場合には、次のインストラクションが割り込みハンドラーである。割り込みハンドラーがイベント待機インストラクションへ復帰するかどうかに関わらず、次のインストラクションは、実施に依存し、或いはそのどちらでもない。他方、繰り返しの数が満了となった場合には（判断ブロック６０「イエス」岐路）、スレッドは、ブロックする（ブロック６４）。スレッドをブロックすることは、例えば、スレッドのスケジュールを解除し、そしてブロックの理由がクリアされるまでスレッドの再スケジューリングを禁止することを含む。例えば、一実施形態では、スレッドは、オペレーティングシステムのＡＰＩをコールして、それ自身をブロックし、そしてブロックの理由を指示する（例えば、このケースでは、取得を試みているロックに対する待機）。或いは又、オペレーティングシステムがスレッドをブロックしてもよい（例えば、ロックコード、又は繰り返しカウントのチェックを含む部分が、オペレーティングシステムの一部分である場合には）。オペレーティングシステムは、スレッドブロックに対する種々の他の理由をサポートすることができる。
【００４３】
ロックが首尾良く取得された場合には（判断ブロック５６「イエス」岐路）、スレッドは、ロックの取得を経て許される希望の処理を遂行することができる（ブロック６６）。次いで、スレッドは、ロックを解除する（ブロック６８）。送信イベントインストラクションを具現化する実施形態では、スレッドは、任意であるが、送信イベントインストラクションを含む（ブロック７０）。送信イベントインストラクションは、待機中のスレッド（１つ又は複数）が次のタイマーイベントでウェイクアップするので、任意である。イベントを送信することは、単にプロセスの速度を上げるだけである。
【００４４】
ある実施形態では、ロックを首尾良く取得すると、ロックコードを、ロックが補足されたという指示と共にアプリケーションに復帰させることに注意されたい。このような実施形態では、ブロック６６、６８及び７０は、ロックコードの一部分ではない。ある実施形態では、ブロック６８及び７０は、解除ロックＡＰＩの一部分である。更に、他の実施形態では、繰り返しカウントが排除され、それに代わって、ロックコードの開始時に時間を読み取り（例えば、ブロック５２に代わって）そしてロックの取得に失敗するたびに再び時間を読み取るためにオペレーティングシステムによって提供されるタイマーサービスを利用することに注意されたい。現在時間と開始時間との間の差を典型的なロック保持時間と比較して、ロックを取得する失敗に応答してイベント待機インストラクション又はスレッドブロックの実行がなされるかどうか決定する。
【００４５】
図７は、プロセッサ１０Ａ−１０Ｂのようなプロセッサにおいて実行するためにスレッドをスケジュールするスレッドスケジューラの一実施形態のオペレーションを示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。スレッドスケジューラは、図示されたオペレーションを具現化するためにプロセッサにより実行できるインストラクションを含む。スレッドスケジューラは、例えば、オペレーティングシステムの一部分でもよい。
【００４６】
スレッドスケジューラは、各スレッドを検査する。スレッドがブロックされた場合には（判断ブロック８０「イエス」岐路）、スレッドスケジューラは、ブロックの理由をチェックする。ブロックが特定のロックに対するものである場合には（判断ブロック８２「イエス」岐路）、スレッドスケジューラは、ロックが解除されたかどうか決定する（判断ブロック８４）。例えば、スレッドスケジューラは、ロックの状態を読み取り、そしてその状態を検査して、ロックが解除されたかどうか決定する。もしそうであれば（判断ブロック８４「イエス」岐路）、スレッドスケジューラは、スレッドを、スケジューリングの資格があるとマークする（ブロック８６）。さもなければ（判断ブロック８４「ノー」岐路）、スレッドは、使用不能のままである。ロックに対する待機以外の理由でスレッドがブロックされた場合には（判断ブロック８２「ノー」岐路）、スレッドスケジューラは、他のブロック理由を処理し、そしてその結果に基づいてスレッドを使用可能又は使用不能とマークする（ブロック８８）。
【００４７】
次いで、スレッドスケジューラは、スケジューリングに使用できるスレッドを検査し、そしてそのスレッドを実行のためにスケジューリングする（ブロック９０）。
【００４８】
図８−１０は、スレッドがロックを取得する種々の例のタイミング図である。Ｔ１及びＴ２と示された２つのスレッドが図面の上部に示されている。時間は、図中下向きの方向に増加する。各図において、３つのタイマーイベントが矢印１００、１０２及び１０４で示されている。アクティビティ間の実線は、スレッドの実行を指示し、そして点線は、スレッドに対する低電力状態を指示する。
【００４９】
図８は、スレッドがロックを取得する第１の例を示す。この例において、スレッドＴ２は、ロックを取得し（参照番号１０６）、そしてスレッドＴ１は、スレッドＴ２がロックを取得した後にロックの取得を試みる（参照番号１０８）。スレッドＴ２がロックを有するので、スレッドＴ１は、ロックを取得する試みに失敗し、そしてイベント待機インストラクションを実行する（参照番号１１０）。プロセッサは、第１のタイマーイベント（矢印１００）が生じるまで低電力状態に留まる。イベント待機インストラクションの実行は、タイマーユニット１２と同期されず、従って、低電力状態で費やされる時間量は、選択された時間インターバルの限界内で変化することに注意されたい。
【００５０】
タイマーイベント（矢印１００）に応答して、プロセッサは、スレッドＴ１に対してウェイクアップし、そしてスレッドＴ１は、ロックを再び取得するように試みる（参照番号１１２）。スレッドＴ２は、ロックで許されるように依然処理を行い、まだロックを解除していない。従って、スレッドＴ１は、ロックを得ることに失敗し、イベント待機インストラクションを再び実行する（参照番号１１４）。スレッドＴ１が低電力状態にある間に、スレッドＴ２は、その処理を完了し、ロックを解除する（参照番号１１６）。
【００５１】
第２のタイマーイベント（矢印１０２）に応答して、スレッドＴ１は、ウェイクアップし、最近解除されたロックを首尾良く取得する（参照番号１１８）。この例では、スレッドＴ２は、送信イベントインストラクションを含み、そして送信イベントメッセージを送信する（参照番号１２０）。しかしながら、このケースでは、スレッドＴ１は、送信イベントメッセージの到着（矢印１２２）の前にロックを取得する。他の実施形態では、送信イベントメッセージが具現化されなくてもよい。
【００５２】
図９は、スレッドがロックを取得する第２の例を示す。第１の例と同様に、スレッドＴ２は、ロックを取得し（参照番号１０６）、その後、スレッドＴ１は、ロックの取得を試み、ロックの取得失敗に応答してイベント待機インストラクションを実行する（参照番号１０８及び１１０）。スレッドＴ１は、第１のタイマーイベント（矢印１００）まで低電力状態にあり、その後、スレッドＴ１は、ウェイクアップし、ロックの取得を試み（参照番号１１２）、そしてイベント待機インストラクションを実行する（参照番号１１４）。
【００５３】
この例では、スレッドＴ２は、スレッドＴ１がロックの取得を試みて失敗した直後に、ロックを解除し（参照番号１２４）、そして送信イベントメッセージを送信する（ブロック１２６）。スレッドＴ１は、送信イベントメッセージに応答してウェイクアップし、そしてスレッドＴ１は、矢印１０２における第２のタイマーイベントの前にロックを取得する（参照番号１２８）。図９の例は、任意の送信イベントメッセージを使用することで、ロックハンドオフにおける待ち時間がどのように短縮されるか示す。この例の送信イベントメッセージ内では、スレッドＴ１は、矢印１０２のタイマーイベントの後まで、ロックを取得しない。
【００５４】
図１０は、スレッドがロックを取得する第３の例を示す。第１の例と同様に、スレッドＴ２は、ロックを取得し（参照番号１０６）、その後、スレッドＴ１は、ロックの取得を試み、ロックの取得失敗に応答してイベント待機インストラクションを実行する（参照番号１０８及び１１０）。スレッドＴ１は、第１のタイマーイベント（矢印１００）まで低電力状態にあり、その後、スレッドＴ１は、ウェイクアップし、ロックの取得を試み（参照番号１１２）、そしてイベント待機インストラクションを実行する（参照番号１１４）。
【００５５】
この例では、スレッドＴ２は、典型的なロック保持時間より長くロックを保持する。従って、第２のタイマーイベント（矢印１０２）において、スレッドＴ１は、再びロックの取得を試みて失敗し、イベント待機インストラクションを実行する（参照番号１３０及び１３２）。第３のタイマーイベント（矢印１０４）において、スレッドＴ１は、ロックの取得を試みて失敗する（参照番号１３４）。しかしながら、この例のこの時点において、繰り返しの数を越え、スレッドがブロックする（参照番号１３６）。スレッド専用のプロセッサリソースは、別のスレッドに指定される。
【００５６】
ある時点で、スレッドＴ２は、その処理を完了して、ロックを解除する（参照番号１３８）。スレッドスケジューラは、ロックが空きであることを検出し、スレッドＴ１をスケジューリングの資格があるものとし、そしてスレッドＴ１をスケジューリングする（参照番号１４０）。次いで、スレッドＴ１は、首尾良くロックを取得する（参照番号１４２）。従って、最後の繰り返しが試みられる（及びスレッドがブロックされる）時間と、スレッドが再びスケジューリングされる時間との間に、スレッドに指定されたプロセッサリソースは、生産的使用に供されて、他の作業を行う（又は減少電力モードに不定に入れられる）。その期間中に消費される電力は、スレッドＴ１がウェイクアップし続けてロックの取得に失敗する場合より賢明に使用される。
【００５７】
スレッドＴ２は、送信イベントメッセージを送信するものとして示されていることに注意されたい。しかしながら、この例では、送信イベントメッセージは、何の作用も及ぼさない。スレッドＴ１が最終的にスケジュールされるところのプロセッサに送信イベントメッセージが到着しそしてロックを取得する場合でも（参照番号１４０及び１４２）、送信イベントメッセージは、ロックを取得するスレッドＴ１に加速作用を及ぼさない。というのは、スレッドＴ１は、イベント待機インストラクション及びその時点から低電力状態にないからである。
【００５８】
図１１は、システム１５０の一実施形態のブロック図である。ここに示す実施形態において、システム１５０は、１つ以上の周辺機器１２４及び外部メモリ１２２に結合された集積回路１５８の少なくとも１つの例を含む。集積回路１５８に供給電圧を供給すると共に、メモリ１１２及び／又は周辺機器１１４に１つ以上の供給電圧を供給する電源１５６も設けられる。ある実施形態では、集積回路１５８の２つ以上の例が含まれてもよい。
【００５９】
集積回路１５８は、プロセッサ１０Ａ−１０Ｂのような１つ以上のプロセッサと、タイマーユニット１２のような１つ以上のタイマーユニット（又はプロセッサに一体化されたタイマーユニット１２Ａ−１２Ｂ）とを備えている。
【００６０】
外部メモリ１５２は、いかなる望ましいメモリでよい。例えば、このメモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、フラッシュメモリ、又はその組み合わせを含む。ＤＲＡＭは、同期ＤＲＡＭ（ＳＤＲＡＭ）、倍データレート（ＤＤＲ）ＳＤＲＡＭ、ＤＤＲ２  ＳＤＲＡＭ、ＤＤＲ３  ＳＤＲＡＭ、等を含む。
【００６１】
周辺機器１５４は、システム１５０の形式に基づいていかなる望ましい回路を含んでもよい。例えば、一実施形態において、システム１５０は、移動装置であって、周辺機器１５４は、ｗｉｆｉ、ブルーツース、セルラー、グローバルポジショニングシステム、等の種々の形式のワイヤレス通信のための装置を含む。又、周辺機器１５４は、ＲＡＭ記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む付加的な記憶装置を含む。更に、周辺機器１５４は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他のキー、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。
【００６２】
図１２は、コンピュータアクセス可能な記憶媒体２００のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、インストラクション及び／又はデータをコンピュータに与えるために使用中にコンピュータによってアクセス可能ないかなる記憶媒体を含んでもよい。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体、例えば、ディスク（固定又は取り外し可能）、テープ、ＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷを含む。更に、記憶媒体は、ＲＡＭ（例えば、同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、Ｒａｍｂｕｓ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、等）、ＲＯＭ、フラッシュメモリのような揮発性又は不揮発性メモリ媒体、ユニバーサルシリアルバス（ＵＳＢ）インターフェイスのような周辺インターフェイスを経てアクセスできる不揮発性メモリ（例えば、フラッシュメモリ）、等を含む。又、記憶媒体は、マイクロ電気機械的システム（ＭＥＭＳ）を含むと共に、ネットワーク及び／又はワイヤレスリンクのような通信媒体を経てアクセスできる記憶媒体を含む。図１２のコンピュータアクセス可能な記憶媒体２００は、初期化コード２０２、ロックコード２０４、及び／又はスレッドスケジューラコード２０６の１つ以上を記憶することができる。初期化コード２０２は、実行されたときに図５のフローチャートを具現化するインストラクションを含む。ロックコード２０４は、実行時に図６のフローチャートの一部分を具現化するインストラクションを含む。スレッドスケジューラ２０６は、実行時に図７のフローチャートの一部分を具現化するインストラクションを含む。一般的に、コンピュータアクセス可能な記憶媒体２００は、実行時に図５、６、７に示すフローチャートの一部分又は全部を具現化するインストラクションのセットを含む。キャリア媒体は、コンピュータアクセス可能な記憶媒体、及びワイヤード又はワイヤレス送信のような送信媒体を含む。
【００６３】
図１３は、タイマーユニット１２と、このタイマーユニット１２からタイマーイベントを受け取るように結合されたイベントコントロールユニット１６Ａと、このイベントコントロールユニット１６Ａからウェイクアップイベントを受け取るように結合された実行コア１４Ａ−１４Ｂを含むプロセッサ１０Ａ−１０Ｂとを備えたシステムの一部分の別の実施形態のブロック図である。実行コア１４Ａ−１４Ｂは、更に、イベントコントロールユニット１６Ａに送信イベント指示を送信するように構成される。図１３の実施形態では、１つ以上のプロセッサ１０Ａ−１０Ｂがイベントコントロールユニット１６Ａ及びそれに対応するウェイクアップイベントを共有し、従って、共有されたウェイクアップイベントに応答して各々ウェイクアップする。ある実施形態では、システム内の全てのプロセッサがイベントコントロールユニット１６Ａ／ウェイクアップイベントを共有し、そしてウェイクアップイベントを発生しなければならないという指示（例えば、送信イベント指示、タイマー、割り込み、等）が、共有されたイベントコントロールユニット１６Ａへ送信される。他の実施形態は、２つ以上のイベントコントロールユニット１６Ａを含み、そして各イベントコントロールユニット１６Ａは、システム内の２つ以上のプロセッサによって共有される。
【００６４】
当業者であれば、以上の開示が完全に理解されると、多数の変更や修正が明らかとなろう。そのような全ての変更や修正は、特許請求の範囲内に包含されることが意図される。
【符号の説明】
【００６５】
１０Ａ、１０Ｂ：プロセッサ
１２：タイマーユニット
１４Ａ、１４Ｂ：実行コア
１６Ａ、１６Ｂ：イベントコントロールユニット
１８：タイマー
２０：タイマーコントロールユニット
１５２：外部メモリ
１５４：周辺機器
１５６：電源
１５８：集積回路
２００：コンピュータアクセス可能な記憶媒体
２０２：初期化コード
２０４：ロックコード
２０６：スレッドスケジューラ
【図１】
0005491622.tif 000002
【図２】
0005491622.tif 000003
【図３】
0005491622.tif 000004
【図４】
0005491622.tif 000005
【図５】
0005491622.tif 000006
【図６】
0005491622.tif 000007
【図７】
0005491622.tif 000008
【図８】
0005491622.tif 000009
【図９】
0005491622.tif 000010
【図１０】
0005491622.tif 000011
【図１１】
0005491622.tif 000012
【図１２】
0005491622.tif 000013
【図１３】
0005491622.tif 000014