JP2007517328A - 動作モデルベースマルチスレッドアーキテクチャ - Google Patents

動作モデルベースマルチスレッドアーキテクチャ Download PDF

Info

Publication number
JP2007517328A
JP2007517328A JP2006547392A JP2006547392A JP2007517328A JP 2007517328 A JP2007517328 A JP 2007517328A JP 2006547392 A JP2006547392 A JP 2006547392A JP 2006547392 A JP2006547392 A JP 2006547392A JP 2007517328 A JP2007517328 A JP 2007517328A
Authority
JP
Japan
Prior art keywords
thread
semaphore
instructions
execution
message
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
JP2006547392A
Other languages
English (en)
Other versions
JP4584935B2 (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 JP2007517328A publication Critical patent/JP2007517328A/ja
Application granted granted Critical
Publication of JP4584935B2 publication Critical patent/JP4584935B2/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
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

複数の命令の複数の並列な受動的なスレッドは、複数の共有リソースへのアクセスを"能動的な"および"主体的な"複数のセマフォを用いて調整する。能動的な複数のセマフォは、複数のメッセージを、実行および/または制御回路に、スレッドの状態を変化させるために送信する。スレッドは、未解決の依存性に応答して、スレッドスケジューラにより、非アクティブな状態に置かれ、それは、セマフォにより示されることができる。依存性に対応するスレッド状態変数は、スレッドが非アクティブなモードであることを示すために使用される。依存性が解決された場合、メッセージが制御回路に渡され、依存性変数がクリアされることを引き起こす。クリアされた依存性変数に応答して、スレッドは、アクティブな状態に置かれる。実行は、アクティブな状態の複数のスレッド上で進行することができる。実行のためにスレッドが実行回路にディスパッチされる前または後に、セマフォがスレッドディスパッチャにより構成されることを除いて、主体的なセマフォは、同様な方法で動作する。

Description

本発明は、マルチスレッドプロセッシングのための複数の技術および複数のアーキテクチャに関する。より具体的には、本発明は、マルチスレッドプロセッシングのために複数のセマフォを用いる複数の技術および複数のアーキテクチャに関する。
"セマフォ"("クリティカルセクション"または"ミューテックス"とも称される)は、複数のプロセスが複数の共有リソース(例えば、メモリ、複数のファイル)を奪い合う複数の動作の調整または同期化を可能にするハードウェアおよびソフトウェア構造物である。一般的に、セマフォは、複数のプロセスがチェックおよび変更できるオペレーティングシステムメモリ内の指定されたロケーションに記憶される値である。セマフォの値に基づいて、プロセスは、共有リソースにアクセスするか、ある期間待機し、再度セマフォをチェックするかのどちらかができる。
従来の複数のコンピュータシステムの複数のセマフォは、一般的に、複数のソフトウェアルーチンとして、アトミック"テストアンドセット"または複数の命令の同様の複数のタイプ(例えば、ロック、ビットテスト、ビットテストアンドセット、ビットテストアンドリセット)のハードウェアサポートを用いて実装される。このセマフォ実装を用いて、生産者−消費者通信関係は、共有(例えば、グローバル)データおよび1つ以上のセマフォを通して構築される。セマフォは、共有データが、データを修正することを試みている複数のプロセスの選択された1つにより修正されることを可能にし、これは、データの一貫性を提供する。
複数のスレッドが、セマフォを取得するために複数のポーリング動作を実行しなければならないので、このセマフォ構造物は、"受動的"である。ポーリング要求は、さもなければ他の複数の目的に使用されるプロセッサおよびシステムの複数のリソースを消費する。したがって、従来の複数のセマフォは、非効率性をもたらし得る。
本発明は、同様の複数の参照番号が同様の複数の要素を参照する添付の複数の図面の複数の図において、制限としてではなく、例として説明される。
大規模マルチスレッドプロセッサアーキテクチャの1つの実施形態のブロック図である。
複数のスレッドディスパッチおよびセマフォ初期化動作の調整の1つの実施形態のフロー図である。
依存性の概念的な説明であり、ここで、複数のセマフォは、スレッド実行を同期させるために使用されることができる。 依存性の概念的な説明であり、ここで、複数のセマフォは、スレッド実行を同期させるために使用されることができる。 依存性の概念的な説明であり、ここで、複数のセマフォは、スレッド実行を同期させるために使用されることができる。 依存性の概念的な説明であり、ここで、複数のセマフォは、スレッド実行を同期させるために使用されることができる。
発明の詳細な説明
下記の説明において、本発明の深い理解を提供するために、説明の複数の目的のために、多数の特定の詳細が説明される。しかしながら、これら特定の複数の詳細なしに本発明が実施できることは、当業者には明白である。他の複数の例では、本発明をあいまいにすることを避けるために、複数の構造および複数のデバイスは、ブロック図形式で示される。
能動的な複数のセマフォの一例の使用の概要
ここで説明されているのは、複数の命令の複数の並列の受動的なスレッド(以下"複数のスレッド"と称する)が、複数の共有リソースへのアクセスを、"能動的"な複数のセマフォを用いて調整する、アーキテクチャおよび関連する複数の方法である。セマフォエンティティが、スレッドの状態を変更させるために、実行および/またはコントロール回路に複数のメッセージを送るので、複数のセマフォは、能動的と称される。例えば、スレッドは、未解決の依存性に応答して、スレッドスケジューラにより、スリープ(または非アクティブ)モードに置かれることができ、これは、セマフォにより示される。依存性に対応するスレッド状態変数は、スレッドがスリープモードであることを示すために使用される。
依存性が解決される場合、メッセージがコントロール回路(例えば、スレッドスケジューラ)に渡され、依存性変数は、クリアされる。クリアされた依存性変数に応答して、スレッドは、アクティブ(または覚醒)状態に置かれる。実行は、アクティブ状態の複数のスレッド上で進行することができる。
上記の例を続けて、スレッドがセマフォを取得することを試みて、できない場合、そのスレッドは、非アクティブ状態に置かれる。スレッドが非アクティブなので、それは、先行技術で要求されるように、セマフォにより示された依存性が解決される時を判断するために、セマフォをポーリングすることはできない。依存性が解決されたことを示すメッセージが受信されるまで(例えば、セマフォエンティティから)、スレッドは、非アクティブの状態のままである。メッセージに応答して、スレッドはアクティブ状態に置かれ、それは、実行が進行することを可能にする。
図1は、大規模マルチスレッドプロセッサアーキテクチャの1つの実施形態のブロック図である。ここで用いられるように、ラベル"大規模マルチスレッド"アーキテクチャは、マルチスレッド実行をサポートできる複数のプロセッサを備えるアーキテクチャを示す。1つの実施形態において、それぞれのプロセッサは、1つまたは複数のスレッドをサポートする。1つのプロセッサ上のマルチスレッディングは、他の複数のスレッドが非アクティブ状態の間に、アクティブな複数のスレッドが実行されることを可能にすることにより、高い実行効率を達成する。セマフォ待ちの非アクティブなスレッドは、複数のプロセッサリソースを消費/浪費しない。大規模マルチスレッドアーキテクチャに関する説明だが、複数のセマフォ構造物および関連する複数の方法は、サポートされる複数のスレッドの数にかかわらず任意のマルチスレッドアーキテクチャに適応できる。
大規模マルチスレッドシステム100は、実行の間に1つ以上のプロセッシングコアにより使用されるデータおよび命令を記憶するメモリヒエラルキー110を備える。メモリヒエラルキー110は、ダイナミックランダムアクセスメモリ(DRAM)、複数の命令キャッシュの1つのまたは多くのレベル、複数のデータキャッシュの1つまたは多くのレベル、ならびに/または技術的に知られる任意の方法の複数の共有およびデータキャッシュの1つのまたは多くのレベルを有する。スレッドディスパッチャ120は、メモリヒエラルキー110に結合され、命令ポインタおよびデータならびに/または新しいスレッドに関連したデータポインタなどの情報を受信する。スレッドディスパッチャ120は、同様に、メッセージバス125を経由して、複数のプロセッシングコアに結合される。1つの実施形態において、スレッドディスパッチャ120は、複数のプロセッシングコアの複数のスレッドリソースを管理することに責任を持つ。新しい保留のスレッドを受信すると、スレッドディスパッチャ120は、保留のスレッドを実行すべきリソースを有するプロセッシングコアを選択し、スレッドを、選択されたプロセッシングコアにディスパッチする。プロセッシングコア上に存在するスレッドが完了すると、スレッドディスパッチャ120は、報告され、その後、プロセッシングコア上のスレッドリソースを、今後の保留の複数のスレッドのために利用可能にする。
システム100は、複数のプロセッサコア(130、131、139、150、151および159)を伴い説明され、複数のプロセッサコアのそれぞれは、関連したコントロール回路と共に複数の実行回路を備える。複数のプロセッサコアは、同一でよく、または複数のプロセッサコアは、さまざまな機能を有してよい。複数のプロセッサコアの任意の数が、システム100に備えられることができる。1つの実施形態において、複数のプロセッサコアは、複数の行で構成され、それぞれの行は、行コントローラを備える。例えば、行コントローラ140は、複数のプロセッサコア130、131および139に、行コントロールバス145を経由して結合されることができる。同様に、行コントローラ160は、複数のプロセッサコア150、151および159に、行コントロールバス165を経由して結合されることができる。
複数のプロセッサコアは、同様にセマフォエンティティ170に、メッセージバス125を経由して結合されることができる。セマフォエンティティ170は、ここで説明されるようにセマフォ機能を提供するために、メモリおよびコントロールロジックを備える。1つの実施形態において、セマフォエンティティ170は、下記に詳細に説明されるように、複数のメッセージを送信および受信することにより、複数のプロセッサコアと情報のやり取りをする。
スレッドディスパッチャ120は、同様に、セマフォエンティティ170にメッセージバス125を経由して結合される。1つの実施形態において、スレッドディスパッチャは、スレッドの代わりに、下記に詳細に説明されるように、複数のメッセージを送信および受信することにより、セマフォエンティティ170と情報のやり取りをする。
それぞれのプロセッシングコア内のコントロール回路は、同じプロセッシングコア上で実行している複数のスレッドの状態を管理するためのスレッドスケジューリング回路を有し、また同様に、複数の命令のアクティブなスレッドを実行するための命令スケジューリング回路を有する。命令実行の間、複数のプロセッシングコアの1つ以上は、複数の共有システムリソースにアクセスすることを試みる。共有システムリソースのコントロールを得るために、対応する実行コアを通して、スレッドは、アクセスされる共有システムリソースに対応するセマフォのコントロールを得なければならない。
1つの実施形態において、セマフォのコントロールを得るために、要求しているプロセッシングコアは、セマフォ要求メッセージをセマフォエンティティ170に、メッセージバス125経由して送る。セマフォ要求メッセージを送信した後、要求しているスレッドは、非アクティブな状態に置かれ、実行および関連する複数の動作(例えば、複数のセマフォのポーリング)は、停止する。
セマフォ要求メッセージを受信することに応答して、セマフォエンティティ170は、要求しているスレッドにセマフォのコントロールを与えるかどうかを判断する。セマフォが与えられる場合、セマフォエンティティ170は、セマフォ承認メッセージを要求しているスレッドに送る。セマフォ承認メッセージに応答して、要求しているスレッドは、アクティブな状態に戻り、要求されたリソースを用いた実行が継続する。スレッドが共有リソースの使用を完了した場合、スレッドは、セマフォ解放メッセージをセマフォエンティティ170に送る。セマフォ解放メッセージに応答して、セマフォエンティティ170は、セマフォを解放し、他の複数のスレッドがシステムリソースへのアクセスを得ることを可能にする。
1つの実施形態において、複数のセマフォは、複数の命令(複数のセマフォ命令)によりサポートされ、その複数の命令は、複数のプロセッシングコアとセマフォエンティティとの間で例えば、メッセージバス125を経由して渡される複数のメッセージ(複数のセマフォメッセージ)と同様にプロセッシングコアにより実行される。代わりの複数の実施形態において、異なるおよび/または追加の複数メッセージまたは複数の命令がサポートされることができる。
連結リストに基づくセマフォエンティティ
1つの実施形態において、従来のセマフォ毎の複数のキューは、それぞれのセマフォのための連結リストを形成するために使用される複数のエントリを有するバッファプールにより置き換えられる。したがって、それぞれのセマフォは、バッファプール内の複数のエントリから形成される連結リストへのヘッドポインタであることができる。連結リストは、双方向連結リストまたは単方向連結リストのどちらかであることができる。
1つの実施形態において、セマフォテーブルは、サポートされるそれぞれのセマフォのためのポインタを有する。1つの実施形態において、セマフォテーブル内の複数のポインタは、対応するセマフォのために使用される連結リストのヘッドを示す複数のヘッドポインタである。フリープールポインタは、バッファプールのヘッドを示し、使用されない複数のセマフォエントリは、NULLポインタを有する。
1つの実施形態において、それぞれのセマフォエントリは、解放状態領域、ack抑制領域、スレッド識別子領域、前ポインタおよび次ポインタを含む。代わりの複数の実施形態において、他のおよび/または異なる複数の領域が使用され、例えば、前ポインタは、省かれることができる。1つの実施形態において、それぞれのセマフォは、セマフォに対応する連結リストが空かどうかを示すために、同様に1つのビット(または他の標識)を含むことができる。
複数のセマフォメッセージ
セマフォ取得メッセージ(ACQ_MSG)は、スレッドまたはスレッドの代わりのスレッドディスパッチャのために、セマフォの所有権をセマフォエンティティへ要求をするために使用される。1つの実施形態において、ACQ_MSGは、セマフォ識別子領域、スレッド識別子領域、"自動解放"領域および"承認抑制"(ack抑制)領域を含む。自動解放領域は、ヘッド依存性のみを伴うスレッドのために使用される。つまり、スレッドは、前の複数のスレッドに依存するが、次の複数のスレッドは、そのスレッドに依存しない。ack抑制領域は、テール依存のみを伴うスレッドのために使用される。つまり、スレッドは、任意の前の複数のスレッドに依存しないが、スレッドは、それに依存する次の複数のスレッドを有する。ACQ_MSGは、スレッドディスパッチャまたはスレッドに関連する他のコントロール回路により発行されることができる。
1つの実施形態において、ACQ_MSGを受信すると、セマフォエンティティは、フリープールリストからヘッドエントリを取り除きおよびそれを選択されたセマフォのテールに加えることにより、要求スレッドのためのセマフォエントリを対象のセマフォ(セマフォ識別子領域により指定される)の連結リストにエンキューする。セマフォエントリの複数の領域は、ACQ_MSG内の情報に基づいて更新され、スレッド識別子領域、解放状態領域およびack抑制領域は、ACQ_MSG内の要求者のスレッド識別子、自動解放領域およびack抑制領域により置き換えられる。ACQ_MSGの前にセマフォ連結リストが空ではない場合、セマフォエンティティによりメッセージは送られない。あるいは、ACQ_MSGが受信される前にセマフォ連結リストが空の場合、以下の複数のアクションの1つがとられる。
ack抑制領域がセットされない場合、スレッド識別子と共にACK_MSGが、セマフォエンティティからメッセージバス125を経由して要求するスレッドに送られる。ack抑制領域がセットされる場合、ACK_MSGは、セマフォエンティティから送られない。自動解放領域がセットされない場合、エンキューされたセマフォエントリは、セマフォ連結リスト内に維持される。したがって、セマフォ連結リストは、空ではなく、セマフォは、スレッドにより現在所有される。自動解放領域がセットされる場合、エンキューされたセマフォエントリは、セマフォ連結リストから取り除かれ、したがって、セマフォ連結リストは空である。
セマフォ解放メッセージ(REL_MSG)は、スレッドが、セマフォの所有権を解放するようにセマフォエンティティに要求するために使用される。1つの実施形態において、REL_MSGは、セマフォ識別子領域およびスレッド識別子領域を有する。1つの実施形態において、REL_MSGは、セマフォの所有権を有するスレッドに関連する制御回路にのみ発行されることができ、すなわち、スレッド識別子は、セマフォ連結リストのトップである。REL_MSGを受信すると、セマフォエンティティは、セマフォ連結リストのヘッドからエントリを取り除く。
他の実施形態において、REL_MSGは、セマフォを共有している任意のスレッドに関連するコントロール回路により発行されることができる。REL_MSGを受信すると、セマフォエンティティは、連結リスト内のエントリの位置にかかわらず、セマフォ連結リスト内の対応するエントリへの解放状態領域をアンセットする。セマフォエントリが連結リストのヘッドの場合、エントリは、セマフォ連結リストのヘッドから取り除かれる。次のエントリは、連結リストのヘッドになる。次のエントリがNULLでない場合、それは調べられる。連結リストの新しいヘッドがセットされた解放状態領域を有する場合、それは、再度、セマフォ連結リストのヘッドから除外される。
1つの実施形態において、この再帰プロセスは、連結リストのヘッドがNULL(セマフォキューが空)または連結リストのヘッドがアンセットされた解放状態領域を有する(エントリに対応するスレッドからのセマフォの解放を待つ)のどちらかまで続く。連結リストのヘッドがNULLではないおよびack抑制領域がセットされない場合、ACK_MSGは、セマフォエンティティにより、エントリのスレッド識別子領域により識別されるスレッドへ送られる。連結リストのヘッドがNULLではなくおよびack抑制領域がセットされる場合、ACK_MSGは、送られない。
セマフォ承認メッセージ(ACK_MSG)は、要求されたセマフォが取得されたことをスレッドに通知するために、セマフォエンティティにより生成される。1つの実施形態において、ACK_MSGは、セマフォ識別子領域およびスレッド識別子領域を有する。ACK_MSGは、セマフォエンティティによりのみ発行され、スレッド識別子領域内により識別されるスレッドを実行しているプロセッシングコアにより受信される。
ACK_MSGを受信すると、受信するプロセッシングコアは、スレッド識別子領域により識別されるスレッドのセマフォ待ち状態領域をアンセットする。スレッドが非アクティブな状態の場合、スレッド状態は、アクティブな状態に変更される。
複数のセマフォ命令
セマフォ取得(ACS)命令は、ACQ_MSGメッセージが、要求されるセマフォのセマフォ識別子、要求するスレッドのスレッド識別子と共におよびアンセットされた自動解放領域と共にセマフォエンティティに送られることを引き起こす。スレッドは、セットされたセマフォ待ち状態領域と共に非アクティブな状態に置かれる。ACS命令は、セマフォ解放(RLS)命令(下記で説明される)と対をなす(後に続く)。ACS−RLS命令対は、例えば、複数のクリティカルセクションアプリケーションのために使用される。
自動解放(ASR)命令を伴うセマフォ取得命令は、ACQ_MSGが、要求されるセマフォのためのセマフォ識別子、要求するスレッドのスレッド識別子と共におよびセットされた自動解放領域と共にセマフォエンティティに送られることを引き起こす。スレッドは、セットされたセマフォ待ち状態領域と共に、非アクティブな状態に置かれる。1つの実施形態において、ASR命令はRLS命令と対をなすことはできない。1つの実施形態において、ASR命令は、ヘッド依存性のみを伴う複数のスレッドのために使用される。
セマフォ待ち(WTS)命令は、セマフォ待ちスレッド状態領域がチェックされることを引き起こす。状態領域がセットされる場合、スレッドは、非アクティブな状態に置かれる。状態領域がセットされない場合、スレッドは、アクティブな状態のままである。WTS命令に応答して、セマフォエンティティにメッセージは送られない。WTS命令の使用は、セマフォが、スレッドディスパッチャにより、ACQ_MSGを用いてスレッドの代わりに、スレッドディスパッチ時刻に予め取得されたことを暗に意味する。スレッドディスパッチャにより以前発行されたACQ_MSG内でack抑制領域がセットされる場合、WTS命令は、使用されない。
セマフォ解放(RLS)命令は、REL_MSGが、解放されるセマフォのためのセマフォ識別子および解放するスレッドのためのスレッド識別子と共にセマフォエンティティに送られることを引き起こす。解放するスレッドは、アクティブな状態のままである。ACS命令が解放するスレッドのために予め発行された場合、1つのRLS命令のみが発行される。ASR命令が解放するスレッドのために予め発行された場合、RLS命令は発行されない。WTS命令が解放するスレッドのために発行された場合、WTS命令は、スレッドディスパッチャにより送られるACQ_MSGの自動解放領域に依存して、RLS命令に続かれあるいは続かれない。自動解放領域がアンセットされる場合、RLS命令は、発行されるべきではない。自動解放領域がセットされる場合、RLS命令は、WTS命令に続くべきである。
能動的なセマフォの例の取得
複数の命令のスレッドがプロセッシングコアにより実行されるので、複数の命令は、複数のリソースが利用可能な場合に実行される。例えば、共有メモリロケーションなどのセマフォを有するリソースが要求された場合、セマフォの所有者は、リソースにアクセスすることを要求される。したがって、複数の命令のスレッドの実行は、セマフォが必要とされるまで、技術的に知られる任意の方法で成し遂げられる。
1つの実施形態において、セマフォが必要とされる場合、セマフォ取得(ACS)命令が実行される。ACS命令は、セマフォを要求する複数の命令のスレッドを実行するプロセッシングコアにより実行されることができる。ACS命令の実行の一部としてまたはACS命令の実行に応答して、セマフォ取得メッセージ(ACQ_MSG)が、セマフォエンティティへ、スレッドを実行しているプロセッシングコアにより、メッセージバスを経由して送られる。ACQ_MSGのための1つのフォーマットは、上記で説明される。他の複数のフォーマットも同様に使用されることができる。
ACS命令の実行の一部としてまたはACS命令の実行に応答して、セマフォを要求するスレッドは、セットされたセマフォ待ち状態領域を伴い非アクティブな状態に置かれる。スレッドを非アクティブな状態に置くことにより、スレッド内の複数の命令は、実行されず、スレッドは、最初のセマフォ要求が拒絶されるなら要求されるセマフォをポーリングすることを含む。スレッドを非アクティブな状態に置くことにより、複数のプロセッサリソースおよびシステムバンド幅は、セマフォを待つスレッドにより消費されない。マルチスレッドをサポートするプロセッシングコアのために、複数のプロセッサリソースおよびシステムバンド幅は、他のアクティブな複数のスレッドにより使用されることができる。
セマフォエンティティは、ACQ_MSGを受信し、要求者情報エントリを、対象セマフォの連結リスト内に置く。セマフォが所有されないまたは他のスレッドにより制御される場合、他の複数のエントリが存在しないので、セマフォエントリは、セマフォ連結リストのヘッドに配置される。セマフォが所有されるまたは他のスレッドにより制御される場合、セマフォエントリは、セマフォ連結リストのテールに配置される。1つの実施形態において、連結リストのテールは、バッファプール内の複数の連結リストエントリをヘッドからテールまで詳細に検討することにより識別され、新しいエントリは、新しいテールエントリになる。他の実施形態において、連結リストのテールは、セマフォテーブルに記憶される連結リストのテールポインタにより直接識別される。
複数のスレッドがセマフォに対応するリソースの使用を完了した時に、セマフォを有するスレッドは、セマフォのコントロールを解放し、これは下記において詳細に説明される。セマフォが解放される場合、セマフォ連結リストのヘッドの対応するセマフォエントリは、取り除かれ、連結リスト内の次のセマフォエントリが、連結リストのヘッドになる。
セマフォエントリがセマフォ連結リストのヘッドになる場合、その複数の状態領域が、セマフォエンティティにより調べられる。ack抑制領域がセットされない場合、承認メッセージ(ACK_MSG)が、セマフォエンティティからセマフォエントリに関連するスレッドまで送信される。ACK_MSGのための1つのフォーマットは、上記で説明される。他の複数のフォーマットも同様に使用されることができる。ACK_MSGは、受信するエンティティ(例えば、スレッド)に、受信するエンティティに対応するセマフォのコントロールが与えられたことを示す。
ACK_MSGに応答して、対応するスレッドは、アクティブにされる。アクティブにされた場合、スレッド内の複数の命令の処理は、再開し、セマフォに関連する共有リソースは、アクセスされることができる。スレッドが共有リソースへのアクセスを完了した場合、セマフォは、解放され、それは、下記においてより詳細に説明される。
能動的なセマフォの例の解放
1つの実施形態において、セマフォ解放(RLS)命令が実行された場合、セマフォは、解放される。RLS命令は、セマフォを要求する複数の命令のスレッドを実行するプロセッシングコアにより実行されることができる。RLS命令の実行の一部として、またはRLS命令の実行に応答して、セマフォ解放メッセージ(REL_MSG)が、セマフォエンティティに送信される。REL_MSGのための1つのフォーマットは、上記で説明される。他の複数のフォーマットも同様に使用されることができる。
REL_MSGに応答して、セマフォエンティティは、REL_MSGのスレッド識別子領域をセマフォ連結リストと適合させる。セマフォエンティティは、対応するセマフォエントリが連結リストのヘッドかどうかをチェックする。対応するセマフォエントリが連結リストのヘッドである場合、セマフォエンティティは、連結リストのヘッドからスレッドエントリを取り除く。連結リスト内の次のエントリは、ヘッドエントリとなる。セマフォは、その後、新しいヘッドエントリに対応するスレッドに与えられる。対応するセマフォエントリが連結リストのヘッドではない場合、セマフォエンティティは、セマフォエントリの解放状態領域をセットする。
複数の動作モデル
使用される連結リストの構造に基づいて、複数のセマフォは、連想的な複数のセマフォまたは順序的な複数のセマフォとしてクラス分けをされることができる。セマフォエンティティからのACK_MSGの送信に基づいて、複数のセマフォは、能動的な複数のセマフォまたは主体的な複数のセマフォとしてクラス分けをされることができる。したがって、複数のセマフォの4つのタイプがサポートされることができる。
連想的な複数のセマフォの1つの実施形態の概要
連想的なセマフォは、現在の複数のスレッドがセマフォに任意の順序でアクセスすることを可能にする。1つの実施形態において、セマフォは、セッションの始めにNULL連結リスト(または空の連結リストを示す1つのビット)と共に、スレッドディスパッチャにより初期化される。スレッドディスパッチャからセマフォエンティティに他のメッセージは送られない。セマフォ連結リストは、複数の命令の複数のスレッドを実行している実行回路により、すぐさま構築される。
1つの実施形態において、スレッドは、ACSまたはASR命令を実行することにより、連想的なセマフォを要求する。スレッドは、RLS命令を実行することにより、連想的なセマフォを解放する。1つの実施形態において、新しいACQ_MSGは、要求するスレッドに対応するエントリがセマフォ連結リストのテールに置かれることをもたらす。これは、到着順サービス(FCFS)セマフォモデルを提供する。
順序的な複数のセマフォの1つの実施形態の概要
順序的なセマフォは、現在の複数のスレッドがセマフォに、所定の順序でアクセスすることを可能にする。順序は、ディスパッチの時に、スレッドディスパッチャにより予定される。順序は、アプリケーション依存となり得る。スレッドディスパッチは、本来逐次的であるので、スレッドディスパッチャは、ACQ_MSGを、それぞれのディスパッチされるスレッドの代わりに、セマフォエンティティに、その順序に従ってセマフォ連結リストを構築するために送信する。
クリティカルセクションに入ってくるスレッドは、セマフォの所有権を待つために、WTS命令を使用する。スレッドがすでにセマフォ連結リストに配置されているので、ACSおよびASR命令は、使用されない。1つの実施形態において、セマフォエンティティは、連結リスト順序に従って、セマフォのコントロールを提供することのみができる。セマフォを待っている複数のスレッドは、連結リストの順序でACQ_MSGを受信する。
能動的な複数のセマフォの1つの実施形態の概要
上記で説明されたように、能動的なセマフォと共にACQ_MSGは、非アクティブな状態からアクティブな状態へのスレッドの遷移を引き起こすために使用される。セマフォエンティティは、1つまたは多数のACQ_MSGを、複数のスレッドを実行している実行回路から受信する。セマフォエンティティは、1つのACK_MSGを、セマフォ連結リストのヘッドのスレッドに対応する実行回路に送信のみをする。セマフォ連結リストのヘッドを取り除くと、セマフォエンティティは、連結リストの新しいヘッドの状態を調べ、次のACK_MSGを、セマフォ連結リストの新しいヘッドに対応する実行回路に送信する。能動的なセマフォは、同様に連想的なセマフォであることができる。
主体的な複数のセマフォの1つの実施形態の概要
主体的なセマフォは、唯一のACK_MSGを、スレッドが非アクティブな状態であるにせよないにせよ、セマフォ連結リストのヘッドのスレッドに送信する。これは、唯一のACK_MSGがスレッドに送信されるように、スレッドディスパッチャにより予め送信されたACQ_MSGと共に、順序的な複数のセマフォを用いる複数のスレッドに適用する。順序的なセマフォを用いるスレッドは、WTSおよび/またはRLS命令を有する。
主体的なセマフォのために、ACK_MSGは、セマフォエンティティにより、セマフォ連結リストのヘッドのスレッドに自動的に送られる。1つの実施形態において、"リスク条件"の可能性が存在し、リスク条件は、スレッドからのエントリのタイミングがスレッドディスパッチャによりセマフォ連結リストにエンキューされ、その時に、スレッドが実行回路に可視である場合に生じる。両方のアクションは、スレッドディスパッチャにより開始されるが、異なる複数のデータパスを通じて生じるため、これら複数のイベントのタイミングは考慮されなければならない。
スレッド実行がセマフォ構成の前に開始する場合、スレッド内にWTS命令がある場合、リスク条件はない。セマフォ待ちスレッド状態変数は、スレッドディスパッチャによりセットされるので、たとえスレッドのWTS命令が、スレッドがセマフォ連結リストにエンキューされる前に到着されても、リスク条件は、生じない。WTS命令は、メッセージをセマフォエンティティに送ることなくスレッドを非アクティブな状態に入らせる。セマフォエンティティがACK_MSGをスレッドに送る場合、実行回路は、スレッドを再度アクティブにする。
セマフォが、スレッドディスパッチャにより、セットされたack抑制領域と共に構成される場合、リスク条件は起こる。この状況において、スレッドは、非アクティブな状態に置かれない。代わりに、スレッドのためのセマフォが構成される前にスレッドがRLS命令に到達し、REL_MSGをセマフォエンティティに送る場合、セマフォエンティティは、REL_MSGを処理する状態ではない。このリスク条件を避けるために、スレッド実行およびセマフォエンティティは、REL_MSGがスレッドディスパッチャにより発行されたACQ_MSGを通過しないことを保証することができる。
したがって、1つの実施形態において、リスク条件を避けるために、ack抑制領域がセットされない場合、スレッドディスパッチャは、セマフォ構成の完了の前に、スレッド構成を完了させる。ack抑制領域がセットされる場合、スレッドディスパッチャは、スレッド構成の完了の前にセマフォ構成を完了させる。スレッドディスパッチャは、用意のできたスレッドを連続的にディスパッチするので、逐次的な複数の動作は、必要な複数の順序づけを保証できる。
セマフォ構成の前にスレッド構成が完了される場合、スレッドディスパッチャは、スレッドをディスパッチでき、セマフォの構成を引き起こすためのメッセージを送る前にスレッド構成が完全であることを示す信号を待つ。スレッド構成の前にセマフォ構成が完了される場合、スレッドディスパッチャは、セマフォの構成を開始するためのメッセージを送信でき、スレッドをディスパッチする前にセマフォが完全であることを示す信号を待つ。連続的な複数の構成は、不必要にディスパッチャからのスループットを制限するので、複構成の複数の動作は、パイプラインにされることができる。
図2は、複数のスレッドディスパッチおよびセマフォ初期化動作の調整の1つの実施形態のフロー図である。1つの実施形態において、スレッドディスパッチャは、セマフォメッセージが送信されるためにack抑制領域がセットされているかどうかを判断する(210)。代わりの複数の実施形態において、他の複数のシステムコンポーネントが、ack抑制領域がセットされているまたはされるかどうかを判断できる。
ack抑制領域がセットされる場合(210)、スレッドディスパッチャは、セマフォ要求メッセージ(例えば、ACQ_MSG)をセマフォエンティティに送る(220)。セマフォエンティティは、要求メッセージを処理し、要求メッセージが処理された場合(例えば、要求するスレッドのための連結リストエントリがエンキューされた)、"セマフォ構成完了"信号をスレッドディスパッチャに送信する。"セマフォ構成完了"信号は、任意の形式をとることができ、例えば、1ビット信号を送信するために信号ラインが使用されることができ、またはメッセージバスを経由してメッセージが送信されることができる。
スレッドディスパッチャは、セマフォエンティティからの"セマフォ構成完了"信号を待つ(230)。"セマフォ構成完了"信号を待つ間、スレッドディスパッチャは、例えば、他の複数のスレッドをディスパッチまたはスレッドがディスパッチされない複数の動作を実行することができる。"セマフォ構成完了"メッセージを受信後、スレッドディスパッチャは、スレッドを実行回路にディスパッチする(240)。スレッドは、その後、実行回路により実行される(250)。
ack抑制領域がセットされていない場合(210)、スレッドディスパッチャは、スレッドを実行回路にディスパッチする(215)。スレッドを実行回路にディスパッチした後、スレッドディスパッチャは、実行回路からの"スレッド構成完了"信号を待つ(225)。1つの実施形態において、実行回路がスレッドの実行を開始しはじめる時、実行回路は、"スレッド構成完了"信号をスレッドディスパッチャに送る。"スレッド構成完了"信号は、任意の形式をとることができ、例えば、1ビット信号を送信するために1つのラインが使用されることができ、またはメッセージバスを経由してメッセージが送信されることができる。スレッドは、その後、実行回路により実行される(250)。
"スレッド構成完了"信号を待つ間、スレッドディスパッチャは、例えば、他の複数のスレッドをディスパッチしまたはセマフォ要求メッセージが送信されない複数の動作を実行することができる。"スレッド構成完了"メッセージを受信した後、スレッドディスパッチャは、セマフォエンティティに、セマフォ要求メッセージを送信する(235)。これは、スレッド実行が開始されたまたはスレッド実行の開始と同時に生じる。
図2の例は、スレッド実行および主体的なセマフォを伴うセマフォ構成の調整の逐次的な例を提供する。上記で述べられたように、図2に関して説明された複数の動作は、パイプライン方式でも同様に実行されることができる。
スレッド同期化
複数の図3a−3dは、複数のセマフォがスレッド実行を同期させるために使用されることができる依存性の概念的な複数の説明である。図3aは、1:1:1(一対一)依存性を説明する。図3aの依存性は、強い逐次的で順序的な依存性または連想的な依存性である。強い逐次的で順序的な依存性に対し、1つの主体的な、順序的なセマフォが使用されることができる。1つの実施形態において、セマフォを要求するためにスレッドディスパッチャからセマフォエンティティに送られるACQ_MSGにおいて、ack抑制領域および自動解放領域は、共にアンセットされる。複数の命令のスレッドは、セマフォを得ておよび解放するためにWTS−RLS命令対を有する。
連想的な依存性に対し、1つの能動的な、連想的なセマフォが使用されることができる。1つの実施形態において、セマフォを要求するためにスレッドを実行する実行回路からセマフォエンティティに送られるACQ_MSGにおいて、ack抑制領域および自動解放領域は、共にアンセットされる。複数の命令のスレッドは、セマフォを得ておよび解放するためにACS−RLS命令対を有する。
図3bは、1:N(1対多数)依存性を説明し、ここで1つのスレッドはN個の他のスレッドに対するヘッド依存性を有し、ここでN個の他のスレッドは、それぞれに対し依存性を有さない。ここで、Nは、1以上の正の整数である。1:N依存性に対し、1つの主体的な、順序的なセマフォが使用されることができる。1つの実施形態において、N個の依存しないスレッドに対し、複数のACQ_MSGがNスレッドを代表してスレッドディスパッチャにより送られる。スレッドディスパッチャからセマフォエンティティに、セマフォを要求するために送られるACQ_MSGにおいて、ack抑制領域は、セットされ、自動解放領域は、アンセットされる。他のNスレッドへのヘッド依存性を有する1つのスレッドに対し、ACQ_MSGは、スレッドディスパッチャにより同様に送られる。セマフォを要求するためのACQ_MSGにおいて、ack抑制領域は、アンセットされ、自動解放領域は、セットされる。複数の命令のNスレッドは、セマフォを解放するためにRLS命令のみを有する。複数の命令の1つのスレッドは、セマフォを得ておよび解放するためのWTS−RLS命令対を有する。
図3cは、N:1(多数対1)依存性を説明し、ここでNスレッドは、1つのスレッドへのヘッド依存性を有するが、Nスレッドは、それぞれへの依存性は有さない。N:1依存性に対し、1つの主体的な、順序的なセマフォが使用されることができる。1つの実施形態において、スレッドディスパッチャは、N個の依存するスレッドおよび1つの依存したスレッドの両方の代わりにACQ_MSGを送信することに責任を持つ。1つの実施形態において、1つの依存したスレッドのために、セマフォを要求するためのACQ_MSGにおいて、ack抑制領域は、セットされ、および自動解放領域は、アンセットされる。N個の依存するスレッドのために、セマフォを要求するためのACQ_MSGにおいて、ack抑制領域は、アンセットされ、および自動解放領域は、セットされる。複数の命令の1つの依存したスレッドは、セマフォを解放するためのRLS命令のみを有する。複数の命令のN個の依存するスレッドは、セマフォを得ておよび解放するためのWTS−RLS命令対を有する。
図3dは、N:M(多数対多数)依存性を説明し、ここで、N個の依存するスレッドは、M個の依存したスレッドへのヘッド依存性を有する。この場合、N個の依存するスレッドは、互いに依存せず、およびM個の依存したスレッドは、互いに依存しない。N:M依存性のケースは、上記で説明された1:1:1、1:NおよびN:1の複数のケースと比較して、より一般的なケースである。N:M依存性のために、1つの主体的な、順序的なセマフォが使用されることができる。1つの実施形態において、スレッドディスパッチャは、N個の依存するスレッドおよびM個の依存したスレッドの両方の代わりに、ACQ_MSGを送信することに責任を持つ。1つの実施形態において、M個の依存したスレッドのために、セマフォを要求するためのACQ_MSGにおいて、ack抑制領域は、セットされ、自動解放領域は、アンセットされる。N個の依存するスレッドのために、セマフォを要求するためのACQ_MSGにおいて、ack抑制領域は、アンセットされ、および自動解放領域は、セットされる。複数の命令のM個の依存したスレッドは、セマフォを解放するためにRLS命令のみを有する。複数の命令のN個の依存するスレッドは、セマフォを得ておよび解放するために、WTS−RLS命令対を有する。
複数の図3a−3dの依存性は、より複雑な複数の依存性をサポートするために使用されることができる。例えば、N:1:N依存性のために、2つの主体的な、順序的な複数のセマフォが使用される。N:1依存性は、上記で説明されたように、図3cに関して処理され、1:N依存性は、上記で説明されたように、図3bに関して処理される。
結論
明細書における"1つの実施形態"または"一実施形態"への参照は、実施形態に関連して説明された特定の特徴、構造、または特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。本明細書のさまざまな場所での語句"1つの実施形態において"の複数の出現は、必ずしも全て同じ実施形態を参照していない。
前述の明細書において、本発明は、特定のその複数の実施形態を参照して説明された。しかしながら、さまざまな修正および変更が、本発明の上位精神および範囲に反することなくそれになされ得ることは、明白である。したがって、本明細書および複数の図面は、制約ではなく説明的な意義と見なされるべきである。

Claims (34)

  1. セマフォに対応する変数の状態を決定する段階、
    前記変数が第一の状態の場合、実行のためのスレッドのディスパッチに先立って、複数の命令の前記スレッドのためのセマフォエントリを生成する段階、および
    前記変数が第二の状態の場合、前記スレッドのための前記セマフォエントリを生成することに先立って、実行のために複数の命令の前記スレッドをディスパッチする段階
    を備える方法。
  2. 前記変数が第三の状態の場合、実行のために複数の命令の前記スレッドをディスパッチし、前記スレッドの実行の間に、前記スレッドのためのセマフォエントリを生成する段階をさらに備える請求項1に記載の方法。
  3. 前記セマフォに対応する前記変数は、セマフォエントリが、複数の命令の前記スレッドに対応する実行回路に、前記セマフォのコントロールを示すメッセージを自動的に送信するかどうかを示す請求項1に記載の方法。
  4. 前記変数が前記第一の状態の場合、複数の命令の前記スレッドのディスパッチに先立って、複数の命令の前記スレッドのための前記セマフォエントリを生成する段階は、
    複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するために、セマフォエンティティにメッセージを送信する段階、および
    前記セマフォエンティティが前記メッセージを処理したことを示す信号を受信することに応答して、複数の命令の前記スレッドを実行回路にディスパッチする段階
    を備える請求項1に記載の方法。
  5. 前記メッセージを前記セマフォエンティティに送信する段階および複数の命令の前記スレッドをディスパッチする段階は、パイプライン型である請求項4に記載の方法。
  6. 前記メッセージは、セマフォ識別子領域、スレッド識別子領域、および前記変数に対応する領域を備える請求項4に記載の方法。
  7. 前記変数が第二の状態の場合、前記スレッドのために前記セマフォエントリを生成することに先立って、実行のために複数の命令の前記スレッドをディスパッチする段階は、
    複数の命令の前記スレッドを実行回路にディスパッチする段階、および
    複数の命令の前記スレッドの実行が開始したことを示す信号に応答して、複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するために、メッセージをセマフォエンティティに送信する段階
    を備える請求項1に記載の方法。
  8. 複数の命令の前記スレッドの前記ディスパッチする段階および前記メッセージを前記セマフォエンティティに送信する段階は、パイプライン型である請求項7に記載の方法。
  9. 前記メッセージは、セマフォ識別子領域、スレッド識別子領域、および前記変数に対応する領域を備える請求項7に記載の方法。
  10. 前記変数が第三の状態の場合、実行のために複数の命令の前記スレッドをディスパッチし、前記スレッドの実行の間に、前記スレッドのための前記セマフォエントリを生成する段階は、
    複数の命令の前記スレッドを実行回路にディスパッチする段階、および
    複数の命令の一式の前記実行に応答して、複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するためにメッセージをセマフォエンティティに送信する段階
    を備える請求項2に記載の方法。
  11. 複数の命令の前記一式は、セマフォ取得命令を備える請求項10に記載の方法。
  12. 複数の命令の前記一式は、自動解放を伴うセマフォ取得命令を備える請求項10に記載の方法。
  13. セマフォに対応する変数の状態を決定するための手段、
    前記変数が第一の状態の場合、実行のためのスレッドのディスパッチに先立って、複数の命令の前記スレッドのためにセマフォエントリを生成するための手段、および
    前記変数が第二の状態の場合、前記スレッドのために前記セマフォエントリを生成することに先立って、実行のために複数の命令の前記スレッドをディスパッチするための手段、ならびに
    前記変数が第三の状態の場合、実行のために複数の命令の前記スレッドをディスパッチし、前記スレッドの実行の間に前記スレッドのためにセマフォエントリを生成する段階
    を備える装置。
  14. 前記変数が第三の状態の場合、実行のために複数の命令の前記スレッドをディスパッチし、前記スレッドの実行の間に、前記スレッドのためのセマフォエントリを生成するための手段をさらに備える請求項13に記載の装置。
  15. 前記変数が前記第一の状態の場合、複数の命令の前記スレッドのディスパッチに先立って、複数の命令の前記スレッドのための前記セマフォエントリを生成するための手段は、
    複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するために、セマフォエンティティにメッセージを送信するための手段、および
    前記セマフォエンティティが前記メッセージを処理したことを示す信号を受信することに応答して、複数の命令の前記スレッドを実行回路にディスパッチするための手段
    をさらに備える請求項13に記載の装置。
  16. 前記変数が第二の状態の場合、前記スレッドのために前記セマフォエントリを生成することに先立って、実行のために複数の命令の前記スレッドをディスパッチするための手段は、
    複数の命令の前記スレッドを実行回路にディスパッチするための手段、および
    複数の命令の前記スレッドの実行が開始したことを示す信号に応答して、複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するために、メッセージをセマフォエンティティに送信するための手段
    をさらに備える請求項13に記載の装置。
  17. 前記変数が第三の状態の場合、実行のために複数の命令の前記スレッドをディスパッチし、前記スレッドの実行の間に、前記スレッドのための前記セマフォエントリを生成するための手段は、
    複数の命令の前記スレッドを実行回路にディスパッチするための手段、および
    複数の命令の一式の前記実行に応答して、複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するためにメッセージをセマフォエンティティに送信するための手段
    を備える請求項14に記載の装置。
  18. セマフォのコントロールを要求する複数の命令の1つ以上のスレッドを示す前記セマフォのための複数のエントリを維持するためのセマフォエンティティ、
    複数の命令の1つ以上のスレッドを実行するための実行回路、および
    前記セマフォエンティティおよび前記実行回路に結合されたスレッドディスパッチャであって、前記スレッドディスパッチャは、前記セマフォに対応する変数の状態を決定し、前記変数が第一の状態の場合、実行のための前記実行回路への複数の命令のスレッドのディスパッチに先だって、複数の命令の前記スレッドのためのセマフォエントリが生成されることを引き起こすように前記セマフォエンティティにメッセージを生成し、および前記変数が第二の状態の場合、前記スレッドのための前記セマフォエントリが生成されることを引き起こすために前記セマフォエンティティにメッセージを生成することに先立って、実行のために複数の命令の前記スレッドを前記実行回路にディスパッチするスレッドディスパッチャ
    を備える装置。
  19. 前記変数が第三の状態の場合、前記スレッドディスパッチャは、実行のために複数の命令の前記スレッドをさらにディスパッチし、前記スレッドのためにセマフォエントリを生成しない請求項18に記載の装置。
  20. 前記セマフォエンティティは、1つ以上のセマフォを維持する請求項18に記載の装置。
  21. 前記メッセージは、セマフォ識別子領域、スレッド識別子領域、および前記変数に対応する領域を備える請求項18に記載の装置。
  22. 前記セマフォに対応する前記変数は、セマフォエントリが、複数の命令の前記スレッドに対応する実行回路に、前記セマフォのコントロールを示すメッセージを自動的に送信するかどうかを示す請求項18に記載の装置。
  23. 前記変数が第一の状態の場合、実行のための前記実行回路への複数の命令のスレッドのディスパッチに先だって、複数の命令の前記スレッドのためのセマフォエントリが生成されることを引き起こすために、メッセージを前記セマフォエンティティに生成することは、複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するために、メッセージをセマフォエンティティに送信すること、および前記セマフォエンティティが前記メッセージを処理したことを示す信号を受信することに応答して、複数の命令の前記スレッドを、前記実行回路にディスパッチすることを備える請求項18に記載の装置。
  24. 前記セマフォエンティティに前記メッセージを送信することおよび複数の命令の前記スレッドをディスパッチすることの前記複数の動作は、パイプライン型である請求項23に記載の装置。
  25. 前記変数が第二の状態の場合、前記スレッドのための前記セマフォエントリが生成されることを引き起こすために前記セマフォエンティティにメッセージを生成することに先立って、実行のために複数の命令の前記スレッドを前記実行回路にディスパッチすることは、複数の命令の前記スレッドを前記実行回路にディスパッチすること、および複数の命令の前記スレッドの実行が開始したことを示す信号に応答して、複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するために、メッセージをセマフォエンティティに送信することを備える請求項18に記載の装置。
  26. 前記メッセージを前記セマフォエンティティに送信することおよび複数の命令の前記スレッドをディスパッチすることの前記複数の動作は、パイプライン型である請求項25に記載の装置。
  27. 前記実行回路は、複数の命令の一式の前記実行に応答して、複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するためにメッセージをセマフォエンティティに生成する請求項19に記載の装置。
  28. メモリコントローラ、
    セマフォのコントロールを要求する複数の命令の1つ以上のスレッドを示す前記セマフォのための複数のエントリを維持するためのセマフォエンティティ、
    複数の命令の1つ以上のスレッドを実行するための実行回路、ならびに
    前記セマフォに対応する変数の状態を決定すること、前記変数が第一の状態の場合、実行のための前記実行回路への複数の命令のスレッドのディスパッチに先だって、複数の命令の前記スレッドのためのセマフォエントリが生成されることを引き起こすように前記セマフォエンティティにメッセージを生成すること、前記変数が第二の状態の場合、前記スレッドのための前記セマフォエントリが生成されることを引き起こすために前記セマフォエンティティにメッセージを生成することに先立って、実行のために複数の命令の前記スレッドを前記実行回路にディスパッチすること、および前記変数が第三の状態の場合、実行のための複数の命令の前記スレッドをディスパッチし、前記スレッドのためのセマフォエントリを生成しないことを目的とする前記セマフォエンティティ、前記実行回路、および前記メモリコントローラに結合されたスレッドディスパッチャ
    を備えるシステム。
  29. 前記変数が第三の状態の場合、前記スレッドディスパッチャは、実行のための複数の命令の前記スレッドをさらにディスパッチし、前記スレッドのためのセマフォエントリを生成しない請求項28に記載のシステム。
  30. 前記メッセージは、セマフォ識別子領域、スレッド識別子領域、および前記変数に対応する領域を備える請求項28に記載のシステム。
  31. 前記セマフォに対応する前記変数は、セマフォエントリが、複数の命令の前記スレッドに対応する実行回路に、前記セマフォのコントロールを示すメッセージを自動的に送信するかどうかを示す請求項28に記載のシステム。
  32. 前記変数が第一の状態の場合、実行のための前記実行回路への複数の命令のスレッドのディスパッチに先だって、複数の命令の前記スレッドのためのセマフォエントリが生成されることを引き起こすために、メッセージを前記セマフォエンティティに生成することは、複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するために、メッセージをセマフォエンティティに送信すること、および前記セマフォエンティティが前記メッセージを処理したことを示す信号を受信することに応答して、複数の命令の前記スレッドを、前記実行回路にディスパッチすることを備える請求項28に記載のシステム。
  33. 前記変数が第二の状態の場合、前記スレッドのための前記セマフォエントリが生成されることを引き起こすために前記セマフォエンティティにメッセージを生成することに先立って、実行のために複数の命令の前記スレッドを前記実行回路にディスパッチすることは、複数の命令の前記スレッドを前記実行回路にディスパッチすること、および複数の命令の前記スレッドの実行が開始したことを示す信号に応答して、複数の命令の前記スレッドにより、前記セマフォのコントロールを要求するために、メッセージをセマフォエンティティに送信することを備える請求項28に記載のシステム。
  34. 前記セマフォエンティティに前記メッセージを送信することおよび複数の命令の前記スレッドをディスパッチすることの前記複数の動作は、パイプライン型である請求項28に記載のシステム。
JP2006547392A 2003-12-31 2004-12-23 動作モデルベースマルチスレッドアーキテクチャ Expired - Fee Related JP4584935B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/750,090 US7614054B2 (en) 2003-12-31 2003-12-31 Behavioral model based multi-threaded architecture
PCT/US2004/043395 WO2005066768A2 (en) 2003-12-31 2004-12-23 Behavioral model based multi-threaded architecture

Publications (2)

Publication Number Publication Date
JP2007517328A true JP2007517328A (ja) 2007-06-28
JP4584935B2 JP4584935B2 (ja) 2010-11-24

Family

ID=34711206

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006547392A Expired - Fee Related JP4584935B2 (ja) 2003-12-31 2004-12-23 動作モデルベースマルチスレッドアーキテクチャ

Country Status (7)

Country Link
US (2) US7614054B2 (ja)
EP (1) EP1700203B1 (ja)
JP (1) JP4584935B2 (ja)
CN (2) CN102622271B (ja)
AT (1) ATE554444T1 (ja)
TW (1) TWI279717B (ja)
WO (1) WO2005066768A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914800B2 (en) 2003-12-31 2014-12-16 Intel Corporation Behavioral model based multi-threaded architecture

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0519597D0 (en) * 2005-09-26 2005-11-02 Imagination Tech Ltd Scalable multi-threaded media processing architecture
US7792864B1 (en) * 2006-06-14 2010-09-07 TransUnion Teledata, L.L.C. Entity identification and/or association using multiple data elements
US8701111B2 (en) * 2008-07-09 2014-04-15 International Business Machines Corporation Lock windows for reducing contention
US9348644B2 (en) 2014-10-08 2016-05-24 International Business Machines Corporation Application-level dispatcher control of application-level pseudo threads and operating system threads
CN104572277B (zh) * 2014-12-17 2018-04-27 大唐移动通信设备有限公司 一种线程流控方法和装置
CN109254834B (zh) * 2017-07-13 2021-05-14 普天信息技术有限公司 一种多线程启动同步方法
US20190042332A1 (en) * 2017-08-03 2019-02-07 Next Silicon, Ltd. Hardware locking primitive system for hardware and methods for generating same
US11119782B2 (en) * 2018-05-07 2021-09-14 Micron Technology, Inc. Thread commencement using a work descriptor packet in a self-scheduling processor
US11099899B2 (en) * 2019-11-14 2021-08-24 Sas Institute Inc. Atomic pool manager for a data pool using a memory slot for storing a data object
CN112612582B (zh) * 2020-12-14 2024-05-28 北京和利时控制技术有限公司 信号量功能实现方法和装置
US11915001B1 (en) * 2022-12-26 2024-02-27 Rebellions Inc. Neural processor and method for fetching instructions thereof
CN117076139B (zh) * 2023-10-17 2024-04-02 北京融为科技有限公司 数据处理方法及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0381859A (ja) * 1989-08-25 1991-04-08 Nec Corp マルチプロセッサシステム
JP2001084235A (ja) * 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
JP2001297008A (ja) * 1999-11-22 2001-10-26 Sun Microsyst Inc オブジェクトごとのロック履歴に基づくロック方針選択方法および装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9123264D0 (en) * 1991-11-01 1991-12-18 Int Computers Ltd Semaphone arrangement for a data processing system
US6018785A (en) * 1993-12-30 2000-01-25 Cypress Semiconductor Corp. Interrupt-generating hardware semaphore
US5852731A (en) * 1995-06-05 1998-12-22 International Business Machines Corporation Computer program product for synchronizing static variable initialization and reference under a multi-threaded computer environment
CA2201275A1 (en) * 1997-03-27 1998-09-27 Chris L. Brealey Locking tool data objects in a framework environment
US7240058B2 (en) * 2002-03-01 2007-07-03 Sun Microsystems, Inc. Lock mechanism for a distributed data system
CN1212569C (zh) * 2002-11-01 2005-07-27 英业达股份有限公司 多线程自动测试方法
US7614054B2 (en) 2003-12-31 2009-11-03 Intel Corporation Behavioral model based multi-threaded architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0381859A (ja) * 1989-08-25 1991-04-08 Nec Corp マルチプロセッサシステム
JP2001084235A (ja) * 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
JP2001297008A (ja) * 1999-11-22 2001-10-26 Sun Microsyst Inc オブジェクトごとのロック履歴に基づくロック方針選択方法および装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914800B2 (en) 2003-12-31 2014-12-16 Intel Corporation Behavioral model based multi-threaded architecture

Also Published As

Publication number Publication date
ATE554444T1 (de) 2012-05-15
US7614054B2 (en) 2009-11-03
CN101189579A (zh) 2008-05-28
US20100115518A1 (en) 2010-05-06
WO2005066768A3 (en) 2007-02-22
EP1700203B1 (en) 2012-04-18
EP1700203A2 (en) 2006-09-13
WO2005066768A2 (en) 2005-07-21
CN102622271B (zh) 2016-08-24
TWI279717B (en) 2007-04-21
TW200535694A (en) 2005-11-01
CN101189579B (zh) 2012-03-07
JP4584935B2 (ja) 2010-11-24
US8914800B2 (en) 2014-12-16
US20050149928A1 (en) 2005-07-07
CN102622271A (zh) 2012-08-01

Similar Documents

Publication Publication Date Title
US8448179B2 (en) Processing architecture having passive threads and active semaphores
US8914800B2 (en) Behavioral model based multi-threaded architecture
US8368701B2 (en) Metaprocessor for GPU control and synchronization in a multiprocessor environment
US5434975A (en) System for interconnecting a synchronous path having semaphores and an asynchronous path having message queuing for interprocess communications
EP0563624B1 (en) Method and apparatus for performing conditional operations on externally shared data
JP5516398B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
JPH03126158A (ja) スケジユーリング方法及び装置
US10331500B2 (en) Managing fairness for lock and unlock operations using operation prioritization
US8271986B2 (en) Visual and graphical data processing using a multi-threaded architecture
KR20150065803A (ko) 고-효율 원자적 연산들을 사용하는 방법 및 장치
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
WO2001016740A2 (en) Efficient event waiting
US10713188B2 (en) Inter-process signaling system and method
US20060143511A1 (en) Memory mapped spin lock controller
CN112749020A (zh) 一种物联网操作系统的微内核优化方法
CN113778700A (zh) 消息处理方法、系统、介质和计算机系统
CN117370042A (zh) 用于核间远程调用的方法、嵌入式多核系统和存储介质
CN116128704A (zh) 数据处理方法、数据处理装置以及计算机可读存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090602

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090902

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091002

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100317

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100722

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100902

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130910

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees