JP2009543170A - マルチスレッドプロセッサ上の実行スレッドの同期 - Google Patents

マルチスレッドプロセッサ上の実行スレッドの同期 Download PDF

Info

Publication number
JP2009543170A
JP2009543170A JP2009517429A JP2009517429A JP2009543170A JP 2009543170 A JP2009543170 A JP 2009543170A JP 2009517429 A JP2009517429 A JP 2009517429A JP 2009517429 A JP2009517429 A JP 2009517429A JP 2009543170 A JP2009543170 A JP 2009543170A
Authority
JP
Japan
Prior art keywords
thread
execution
synchronization
threads
synchronization point
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
JP2009517429A
Other languages
English (en)
Other versions
JP2009543170A5 (ja
JP5710878B2 (ja
Inventor
チャート フー ユーン
Original Assignee
イマジネイション テクノロジーズ リミテッド
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 イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2009543170A publication Critical patent/JP2009543170A/ja
Publication of JP2009543170A5 publication Critical patent/JP2009543170A5/ja
Application granted granted Critical
Publication of JP5710878B2 publication Critical patent/JP5710878B2/ja
Active 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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/522Barrier synchronisation
    • 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/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/458Synchronisation, e.g. post-wait, barriers, locks
    • 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/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/3009Thread control 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/461Saving or restoring of program or task context

Landscapes

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

Abstract

マルチスレッドプロセッサ上で複数のスレッドの実行を同期させるための方法及び装置が提供される。各々のスレッドには、その実行が別のスレッドと同期されるべきであることが有利な又は好ましい点に対応する多数の同期点が与えられる。スレッドの実行は、同期点に到達したときに、同期されることが意図される少なくとも1つの他のスレッドが対応する同期点に到達するまで停止される。実行は後で再開される。スレッドの実行が、同期点を含むコードのセクション上に分岐する場合は、少なくとも1つの他のスレッドが対応する分岐の終わりにおける同期点に到達するまで、実行は分岐の終わりで停止される。

Description

本発明は、マルチスレッドプロセッサ上の実行スレッドの同期方法及び装置に関する。
出願人の米国特許番号第6,971,084号においては、同時に実行される幾つかのスレッドを有するマルチスレッドプロセッサが説明されている。プロセッサは、より多い又はより少ない時間を各々に配分するため、これらのスレッドは、異なる速度で実行されることができる。こうしたシステムにおいては、各々が実行スレッドのための命令のパイプラインを供給する複数のデータ入力がある。制御手段は、実行スレッドを適当なデータ処理手段に経路指定し、これは次いで、供給されたスレッドの実行を開始するようにされる。どの経路指定動作及びどの経路指定スレッドが実施されることができるかに関して、反復的に判断がなされ、次いで、実施できると考えられる動作の少なくとも1つが開始される。システムは、1つ又はそれ以上のスレッドの実行が、適当なリソースが使用可能である他のスレッドより優位になるように、優先権をスレッドに割り当てるための手段を含むことにより修正することができる。
米国特許番号第6,971,084号の発明を具現するシステムは、典型的には、1つ又はそれ以上の異なるプロセッサ上で同時に実行される多数のスレッドを有する。スレッドが実行されているプロセッサは、リソースの使用可能性により、より多い又はより少ない時間をこれらに配分するため、スレッドは、異なる速度で実行されることができる。
幾つかの適用例においては、例えば、共有リソースへのアクセスを管理するために、2つ又はそれ以上のスレッドの実行を調整して、これらのプログラムのセクションが、同時に(同期して)実行されるようにすることが望ましい。このことは、処理手段が、停止しなければならない点として認識する、実行スレッドに与えられる同期点を使用することにより実現することができる。各々の自由継続スレッドは、同期点まで実行され、次いで停止する。すべてのスレッドが同期点で停止したとき、これらは同期されて、同時に再開されることができる。
すべてのソフトウェアにおけるように、実行スレッドは、フロー制御分岐と、その中のループを有することができ、したがって、プログラムを通して、スレッドがどの実行経路を進むかを予測することは必ずしも可能ではない。したがって、1つのスレッドが分岐して同期点を避けた場合には、同期されることが意図されるスレッドは、対応する同期点において無期限にストールされることになる。第1のスレッドがプログラムのそのセクションを実行していないため、関連のある同期点に到達することはない。
或いは、こうした状況においては、第1の同期点を抜かすように分岐された1つのスレッドは、不用意に、第2の同期点において第2のスレッドと同期することがある。例えば、スレッドが、中に同期点Aを含み、その後で同期点Bを含む分岐点「if...end」分岐を含む場合には、「if...end」分岐を飛ばさないスレッドは、分岐内の同期点Aにおいて停止し、これを飛ばすスレッドは、分岐後の同期点Bで停止する。
本発明の好ましい実施形態は、各々が多数の同期点を備えた、マルチスレッドプロセッサ上の複数のスレッドの実行を同期させるための方法及び装置を提供する。いずれかのスレッドが同期点に到達したときに、同じ同期点に到達するように同期されることが意図される他のスレッドを待機し、次いで実行が再開できるようになる。コードのセクション上で同期点を含むスレッドが分岐するときは、停止され、分岐しているとフラグが立てられる。次いで、同期点に到達するいずれかのスレッドは、分岐されているとフラグが立てられていないスレッドだけを待機する。このことは、分岐されなかったあらゆるスレッドが互いに同期することを保証する。
分岐ターゲットで(すなわち、分岐後に)停止されるスレッドは、いずれかの他のスレッドが、分岐のない通常の実行により同じ点に到達したときに実行を再開できる。すべての他のスレッドが分岐した場合には、実行は、すべてのスレッドがその分岐ターゲットに到達したときに実行を再開する。
いずれの分岐点においても、分岐された場合に、いずれかの同期点が抜かされるかどうか予測できることが好ましい。どの同期点も抜かされない場合には、分岐スレッドが後で停止されるようにする要求はない。
図1においては、複数のデータ入力4が媒体制御コア2に与えられる。各々のデータ入力は、実行されるスレッドに対する一組の命令を与える。媒体制御コア2は、どのスレッドが、使用可能なリソースに基づいて実行されることができるかを反復的に判断する。媒体制御コア2は、複数のキャッシュメモリ14をもつマルチバンクキャッシュ12に結合される。これは、実行スレッドのいずれかによりアクセスされることができるデータの格納のために用いられる。
さらに、複数のデータ処理パイプラインユニット6が媒体制御コアに接続される。1つ又は多数のこれらがあるとすることができ、通常は、データ入力4の数より少ない。各々のパイプラインユニット6は、データ処理コア8と、必要とされるあらゆる後処理を実施し、出力を与える下流側データパイプライン10とを含む。
図1のシステムに対する入力及び出力は、リアルタイムの映像入力及び出力、リアルタイムの音声入力及び出力、データソース、格納装置等とすることができる。
媒体制御コアは、データを入力4からデータ処理コア8又は格納部に向け、次いで、データを出力部に与えるマルチスレッディングユニットである。これは、タスクをすべてのクロックサイクルにおいて切り換えることができるように構成される。したがって、各々のクロックサイクルにおいて、入力4で与えられたどの実行スレッドが、これらが実行されるのに必要なすべてのリソースを有するか、及び最高優先度を有するかをチェックする。実施されることができるスレッドの実行が、次いで開始できることになる。
リソースのチェックは、スレッドがストールしないことを保証するように反復的に実施される。
本発明の実施形態によれば、同期されるスレッドは、同期点に遭遇したときに媒体制御に示して、同期が媒体制御コアにより制御されることができるようにする。したがって、同期されることが意図される2つ又はそれ以上のスレッドが媒体制御コアに供給されるときには、これらのスレッドを同期させるのに必要な動作を実施することができる。媒体制御コア2は、各々のスレッドのプログラムに対する命令を処理し、実行される各々のスレッドの状態を監視する。通常の実行状態又はストール状態(リソースの使用可能性の待機)に加えて、2つの特別な状態がある(これらは、「同期開始待機」及び「同期終了待機」として知られる)。これらの状態においては、この時点で実行が停止されるため、どのような処理も行われない。
同期点の動作は、図2を参照してより詳細に説明される。20において、媒体制御コアは、特定のスレッドに対して、ここで次の命令を処理できることを識別する。その第1のタスクは、22において、その命令が同期点を含むかどうか判断することである。同期点がある場合には、実行スレッドは、24の同期開始待機状態に移動する。この状態は、26において、媒体制御コアがすべての他のスレッドを反復的に調査して、同期開始/終了待機状態にあるかどうかを判断するようにする。これらのすべてが、これらの状態の1つにない場合には、システムは、反復的に周りをループして、同期されるすべてのスレッドがストールされるまでチェックする。すべての他のスレッドがこれらの状態の1つに入ると、媒体制御コアは、再び20において、次の命令を処理し、再び22において、同期点を探すことができる。同期点はないと判断された場合には、28において、スレッドが、同期点上で分岐されたかどうかについて判断がなされる。こうした分岐が生じていなかった場合には、システムは20に戻り、次の命令を処理する。
システムが同期点上で分岐された場合には、ビットは、同期点上で分岐が生じたことをMCCに示すように設定され、30において、すべての他のスレッドが同期終了待機状態にあるかどうかについて判断がなされる。分岐スレッドが、他のスレッドの実行を再開しないようにする唯一のスレッドであると示す場合には、次の命令が20において処理される。すべての他のスレッドが同期終了待機状態にない場合には、32において、実行スレッドが同期終了待機状態になり、34において、他のスレッドが同期終了状態に到達したかどうか判断するループに入る。別のスレッドがこの点に到達すると、システムは、20において、次の命令を処理するようにループを戻る。
同期点及び分岐点の検出は、そのコンパイラによりスレッドに含まれるデータに応答して、媒体制御コア2において生じることができる。或いは、情報は、命令を処理するときに、データ処理コア8により媒体制御コアにフィードバックされることができる。
同期開始待機状態と同期終了待機状態との間の違いは、同期開始待機状態は、同期点がスレッドの通常のフローにおいて処理されるときに生じることである。
同期点上で分岐されると知られる分岐命令が処理された場合に、いずれかの他のスレッドがプログラムにおける同じ点に到達していてもいなくても、同期終了待機状態になる。したがって、スレッドが同期点上で分岐されると、別のスレッドがその実行において追いつくまで、すなわち、プログラムの同じ点に到達するまで、効率的にストールされる。
スレッドの前の可能性のある実行シーケンスを通してトレースする例示的なコードフラグメントを図3に示す。スレッド0及び2は、条件コードを実行するが、コード1及び3はこれを抜かす。本発明を具現するときの同期点をもつこのコードブロックの効果は、条件ループに入るか又はその周りで分岐した後で、同期開始待機状態又は同期終了待機状態のいずれかにおけるすべてのスレッドを停止させることである。この時点で、スレッド0及び2は、命令Yを実行することにより、実行を再開することができる。これらは、同時に再開され、同じ速度で実行されるべきであることが好ましい。スレッド1及び3は、0又は2が命令Zに到達するまで実行を再開できない。
上述から、本発明は、同期を維持しながら、多数の実行スレッドを分岐点で実行することを可能にすることが理解される。
より詳細なMCC2及びデータ処理ユニット30のブロック図を図4に示す。ここでは、MCC2は、複数の入力スレッド38を受信する。例えば、16の入力スレッドを受信することができる。これら16のスレッドのうち、4つが同期され、それらの命令において適切な同期点を含むものとされる。
MCC2は、同期される4つのスレッドに必要なリソースが使用可能であり、これらが、これらのスレッドの実行を開始するかどうか判断する。図3に示す単一の処理ユニットシステムにおいては、スレッドは、周期的にデータ処理ユニット30に与えられ、例えば、各々のスレッドからの1つの命令が順番に、データ処理ユニットに供給される。命令取り出しユニット32は、MCC2により与えられた各々のスレッドから命令を順番に取り出し、これらを命令デコードユニットに供給し、このユニットは、これらをデコードした後で、これらをCPU36に進めることができる。
MCC2は、レジスタのバンクを含み、管理している各々のスレッドに対して1つのレジスタがある。各々のレジスタは、そのそれぞれのスレッドの種々の態様のステータスを示す複数のビットを格納する。レジスタの各々は、スレッドが、同期開始待機状態にあるのか又は同期終了待機状態にあるのかを示すように設定されるビットを含む。このデータは、MCC2が、スレッドの同期状態を監視し、スレッドが現在同期されているか、又は、同期開始待機状態或いは同期終了待機状態にあることにより、同期に到達するように待機しているかどうか判断する。
MCC2は、命令デコードユニット34からのフィードバック経路40により、データを受信して、各々のスレッドに対して含むレジスタを更新する。このことは、スレッドがコードのセクション上で分岐したときを認識し、したがって、このスレッドは、他のスレッドが分岐の終わり又は分岐内の同期点に到達するのを待機する間、同期終了待機状態に入る必要がある。さらに、スレッドが分岐することができるコードを実行したときを認識し、スレッドを、コードのセクションの終わりにおける、又は、コードのセクション内の同期点における同期終了待機状態に入れる。この状態は、さらに、MCC2にフィードバックされ、そのスレッドに対するレジスタ内に格納される。
スレッドが同期開始/終了待機状態に入ったとき、MCCは、他のスレッドは、したがって、ストールされたスレッドに以前に割り当てられたスロットにおいて実行されることができることを認識する。したがって、それが有する、実行に使用可能な16スレッドの別のものに切り換わる。同期されるスレッドのすべてが同期点に到達したときには、これが認識され、MCC2は、実行が続けられることが要求されるリソースが使用可能であるかどうか、及び、いずれかの他のスレッドが実行のためにより高い優先度を有するかどうか判断する。適切な時間において、同期されるスレッドの実行が再開される。
本発明の実施形態に用いられるスレッドがコンパイルされるときには、コンパイラは、スレッドのどこで同期点が生じるかを検出し、コンパイルされたスレッドにおいて、MCCに対して同期点の存在を示す命令を含む。分岐がある場合には、コンパイラは、分岐が同期点を含むかどうか判断しなければならない。含む場合には代替的な分岐、含まない場合には対応する同期点が、同期点上で分岐したことをMCCに示し、分岐の終わりにおいて実行を停止する命令を含む。
マルチスレッドプロセッサシステムの例のブロック図を示す。 本発明の実施形態における各々のスレッドに必要とされる決定論理の不ローズを示す。 本発明の実施形態に用いられるコードのフラグメントを示す。 図1のMCC及びデータ処理ユニットのブロック図を示す。

Claims (8)

  1. 各々が多数の同期点を備えた、マルチスレッドプロセッサ上の複数のスレッドの実行を同期させるための方法であって、
    同期点に到達したときに、同期されることが意図される少なくとも1つの他のスレッドが対応する同期点に到達するのを待機してスレッドの実行を停止し、次いで、実行を再開するステップを含み、分岐の終わりに同期点を含むコードのセクション上で分岐するスレッドの実行を、前記少なくとも1つの他のスレッドが前記同期点又は前記分岐の終わりを読み込むまで停止するステップをさらに含むことを特徴とする方法。
  2. 同期点に到達するスレッドは、同期開始待機状態に入ることを特徴とする請求項1に記載の方法。
  3. 停止されたスレッドと同期されるスレッドもまた停止されたかどうか反復的にチェックするステップを含むことを特徴とする請求項2に記載の方法。
  4. 前記スレッドが停止されたかどうか反復的にチェックするステップは、各々のスレッドに対するステータスレジスタにおいて、少なくとも1つのビットのステータスをチェックするステップを含むことを特徴とする請求項3に記載の方法。
  5. 各々が多数の同期点を備えた、マルチスレッドプロセッサ上の複数のスレッドの実行を同期させるための装置であって、
    同期点に到達したときに、同期されることが意図される少なくとも1つの他のスレッドが対応する同期点に到達するのを待機してスレッドの実行を停止するための手段と、次いで、実行を再開するための手段を含み、分岐の終わりに同期点を含むコードのセクション上で分岐するスレッドの実行を、前記少なくとも1つの他のスレッドが前記同期点又は前記分岐の終わりを読み込むまで停止するための手段をさらに含むことを特徴とする方法。
  6. 同期点に到達するスレッドは、同期開始待機状態に入ることを特徴とする請求項5に記載の装置。
  7. 停止されたスレッドと同期されるスレッドもまた停止されたかどうか反復的にチェックするための手段を含むことを特徴とする請求項6に記載の装置。
  8. 前記スレッドが停止されたかどうか反復的にチェックするための手段は、各々のスレッドに対するステータスレジスタにおいて、少なくとも1つのビットのステータスをチェックするための手段を含むことを特徴とする請求項7に記載の装置。
JP2009517429A 2006-07-04 2007-07-04 マルチスレッドプロセッサ上の実行スレッドの同期 Active JP5710878B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0613289.8A GB0613289D0 (en) 2006-07-04 2006-07-04 Synchronisation of execution threads on a multi-threaded processor
GB0613289.8 2006-07-04
PCT/GB2007/002504 WO2008003968A1 (en) 2006-07-04 2007-07-04 Synchronisation of execution threads on a multi-threaded processor

Publications (3)

Publication Number Publication Date
JP2009543170A true JP2009543170A (ja) 2009-12-03
JP2009543170A5 JP2009543170A5 (ja) 2013-02-28
JP5710878B2 JP5710878B2 (ja) 2015-04-30

Family

ID=36926447

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009517429A Active JP5710878B2 (ja) 2006-07-04 2007-07-04 マルチスレッドプロセッサ上の実行スレッドの同期

Country Status (5)

Country Link
US (6) US20080010640A1 (ja)
EP (1) EP2035929B1 (ja)
JP (1) JP5710878B2 (ja)
GB (2) GB0613289D0 (ja)
WO (1) WO2008003968A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011134145A (ja) * 2009-12-25 2011-07-07 Fujitsu Ltd マルチスレッド処理方法及びマルチスレッド処理装置

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0613289D0 (en) * 2006-07-04 2006-08-16 Imagination Tech Ltd Synchronisation of execution threads on a multi-threaded processor
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US8866827B2 (en) * 2008-06-26 2014-10-21 Microsoft Corporation Bulk-synchronous graphics processing unit programming
US8412889B2 (en) * 2008-10-16 2013-04-02 Microsoft Corporation Low-level conditional synchronization support
US8756562B2 (en) * 2008-12-11 2014-06-17 The Mathworks, Inc. Subgraph execution control in a graphical modeling environment
US8549470B2 (en) 2008-12-11 2013-10-01 The Mathworks, Inc. Multi-threaded subgraph execution control in a graphical modeling environment
US8850436B2 (en) * 2009-09-28 2014-09-30 Nvidia Corporation Opcode-specified predicatable warp post-synchronization
US8421162B2 (en) 2009-09-30 2013-04-16 Suvolta, Inc. Advanced transistors with punch through suppression
US8273617B2 (en) 2009-09-30 2012-09-25 Suvolta, Inc. Electronic devices and systems, and methods for making and using the same
US8530286B2 (en) 2010-04-12 2013-09-10 Suvolta, Inc. Low power semiconductor transistor structure and method of fabrication thereof
US8569128B2 (en) 2010-06-21 2013-10-29 Suvolta, Inc. Semiconductor structure and method of fabrication thereof with mixed metal types
US8759872B2 (en) 2010-06-22 2014-06-24 Suvolta, Inc. Transistor with threshold voltage set notch and method of fabrication thereof
US8404551B2 (en) 2010-12-03 2013-03-26 Suvolta, Inc. Source/drain extension control for advanced transistors
US8461875B1 (en) 2011-02-18 2013-06-11 Suvolta, Inc. Digital circuits having improved transistors, and methods therefor
US8525271B2 (en) 2011-03-03 2013-09-03 Suvolta, Inc. Semiconductor structure with improved channel stack and method for fabrication thereof
US8748270B1 (en) 2011-03-30 2014-06-10 Suvolta, Inc. Process for manufacturing an improved analog transistor
US8796048B1 (en) 2011-05-11 2014-08-05 Suvolta, Inc. Monitoring and measurement of thin film layers
US8999861B1 (en) 2011-05-11 2015-04-07 Suvolta, Inc. Semiconductor structure with substitutional boron and method for fabrication thereof
US8811068B1 (en) 2011-05-13 2014-08-19 Suvolta, Inc. Integrated circuit devices and methods
US8569156B1 (en) 2011-05-16 2013-10-29 Suvolta, Inc. Reducing or eliminating pre-amorphization in transistor manufacture
US8735987B1 (en) 2011-06-06 2014-05-27 Suvolta, Inc. CMOS gate stack structures and processes
US8995204B2 (en) 2011-06-23 2015-03-31 Suvolta, Inc. Circuit devices and methods having adjustable transistor body bias
US8629016B1 (en) 2011-07-26 2014-01-14 Suvolta, Inc. Multiple transistor types formed in a common epitaxial layer by differential out-diffusion from a doped underlayer
US8748986B1 (en) 2011-08-05 2014-06-10 Suvolta, Inc. Electronic device with controlled threshold voltage
WO2013022753A2 (en) 2011-08-05 2013-02-14 Suvolta, Inc. Semiconductor devices having fin structures and fabrication methods thereof
US8645878B1 (en) 2011-08-23 2014-02-04 Suvolta, Inc. Porting a circuit design from a first semiconductor process to a second semiconductor process
US8614128B1 (en) 2011-08-23 2013-12-24 Suvolta, Inc. CMOS structures and processes based on selective thinning
US20130055273A1 (en) * 2011-08-30 2013-02-28 Samsung Electronics Co., Ltd. Terminal and application management method thereof
US8713511B1 (en) 2011-09-16 2014-04-29 Suvolta, Inc. Tools and methods for yield-aware semiconductor manufacturing process target generation
US9236466B1 (en) 2011-10-07 2016-01-12 Mie Fujitsu Semiconductor Limited Analog circuits having improved insulated gate transistors, and methods therefor
US8895327B1 (en) 2011-12-09 2014-11-25 Suvolta, Inc. Tipless transistors, short-tip transistors, and methods and circuits therefor
US8819603B1 (en) 2011-12-15 2014-08-26 Suvolta, Inc. Memory circuits and methods of making and designing the same
US8883600B1 (en) 2011-12-22 2014-11-11 Suvolta, Inc. Transistor having reduced junction leakage and methods of forming thereof
US8599623B1 (en) 2011-12-23 2013-12-03 Suvolta, Inc. Circuits and methods for measuring circuit elements in an integrated circuit device
US8877619B1 (en) 2012-01-23 2014-11-04 Suvolta, Inc. Process for manufacture of integrated circuits with different channel doping transistor architectures and devices therefrom
US8970289B1 (en) 2012-01-23 2015-03-03 Suvolta, Inc. Circuits and devices for generating bi-directional body bias voltages, and methods therefor
US9093550B1 (en) 2012-01-31 2015-07-28 Mie Fujitsu Semiconductor Limited Integrated circuits having a plurality of high-K metal gate FETs with various combinations of channel foundation structure and gate stack structure and methods of making same
US9406567B1 (en) 2012-02-28 2016-08-02 Mie Fujitsu Semiconductor Limited Method for fabricating multiple transistor devices on a substrate with varying threshold voltages
US8863064B1 (en) 2012-03-23 2014-10-14 Suvolta, Inc. SRAM cell layout structure and devices therefrom
US9299698B2 (en) 2012-06-27 2016-03-29 Mie Fujitsu Semiconductor Limited Semiconductor structure with multiple transistors having various threshold voltages
US8637955B1 (en) 2012-08-31 2014-01-28 Suvolta, Inc. Semiconductor structure with reduced junction leakage and method of fabrication thereof
US9112057B1 (en) 2012-09-18 2015-08-18 Mie Fujitsu Semiconductor Limited Semiconductor devices with dopant migration suppression and method of fabrication thereof
US9041126B2 (en) 2012-09-21 2015-05-26 Mie Fujitsu Semiconductor Limited Deeply depleted MOS transistors having a screening layer and methods thereof
CN104854698A (zh) 2012-10-31 2015-08-19 三重富士通半导体有限责任公司 具有低变化晶体管外围电路的dram型器件以及相关方法
US8816754B1 (en) 2012-11-02 2014-08-26 Suvolta, Inc. Body bias circuits and methods
US9093997B1 (en) 2012-11-15 2015-07-28 Mie Fujitsu Semiconductor Limited Slew based process and bias monitors and related methods
JP5994601B2 (ja) * 2012-11-27 2016-09-21 富士通株式会社 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法
US9070477B1 (en) 2012-12-12 2015-06-30 Mie Fujitsu Semiconductor Limited Bit interleaved low voltage static random access memory (SRAM) and related methods
US9112484B1 (en) 2012-12-20 2015-08-18 Mie Fujitsu Semiconductor Limited Integrated circuit process and bias monitors and related methods
US9268885B1 (en) 2013-02-28 2016-02-23 Mie Fujitsu Semiconductor Limited Integrated circuit device methods and models with predicted device metric variations
US9299801B1 (en) 2013-03-14 2016-03-29 Mie Fujitsu Semiconductor Limited Method for fabricating a transistor device with a tuned dopant profile
US9117021B2 (en) * 2013-03-14 2015-08-25 Intel Corporation Methods and apparatus to manage concurrent predicate expressions
US9478571B1 (en) 2013-05-24 2016-10-25 Mie Fujitsu Semiconductor Limited Buried channel deeply depleted channel transistor
FR3021429B1 (fr) * 2014-05-23 2018-05-18 Kalray Barriere de synchronisation materielle entre elements de traitement
US9710006B2 (en) 2014-07-25 2017-07-18 Mie Fujitsu Semiconductor Limited Power up body bias circuits and methods
US9319013B2 (en) 2014-08-19 2016-04-19 Mie Fujitsu Semiconductor Limited Operational amplifier input offset correction with transistor threshold voltage adjustment
US10402235B2 (en) * 2016-04-15 2019-09-03 Nec Corporation Fine-grain synchronization in data-parallel jobs for distributed machine learning
US10402234B2 (en) * 2016-04-15 2019-09-03 Nec Corporation Fine-grain synchronization in data-parallel jobs
US11356334B2 (en) * 2016-04-15 2022-06-07 Nec Corporation Communication efficient sparse-reduce in distributed machine learning
US9940226B2 (en) 2016-05-26 2018-04-10 International Business Machines Corporation Synchronization of hardware agents in a computer system
US11353868B2 (en) * 2017-04-24 2022-06-07 Intel Corporation Barriers and synchronization for machine learning at autonomous machines
US10963299B2 (en) * 2018-09-18 2021-03-30 Advanced Micro Devices, Inc. Hardware accelerated dynamic work creation on a graphics processing unit
US11086672B2 (en) * 2019-05-07 2021-08-10 International Business Machines Corporation Low latency management of processor core wait state
US20220012598A1 (en) * 2020-07-09 2022-01-13 Femtosense, Inc. Methods and apparatus for matrix and vector storage and operations
CN113284038B (zh) * 2021-03-05 2022-10-18 上海壁仞智能科技有限公司 用于执行计算的方法、计算设备、计算系统和存储介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68927946T2 (de) * 1988-08-02 1997-10-16 Philips Electronics Nv Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre
JPH0630094B2 (ja) * 1989-03-13 1994-04-20 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセツサ・システム
US5261063A (en) * 1990-12-07 1993-11-09 Ibm Corp. Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs
US5515490A (en) * 1993-11-05 1996-05-07 Xerox Corporation Method and system for temporally formatting data presentation in time-dependent documents
US5504898A (en) * 1994-06-20 1996-04-02 Candle Distributed Solutions, Inc. Threaded environment for AS/400
US5721921A (en) * 1995-05-25 1998-02-24 Cray Research, Inc. Barrier and eureka synchronization architecture for multiprocessors
US5797004A (en) * 1995-12-08 1998-08-18 Sun Microsystems, Inc. System and method for caching and allocating thread synchronization constructs
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6216174B1 (en) * 1998-09-29 2001-04-10 Silicon Graphics, Inc. System and method for fast barrier synchronization
US6378124B1 (en) * 1999-02-22 2002-04-23 International Business Machines Corporation Debugger thread synchronization control points
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
JP3571976B2 (ja) * 1999-11-08 2004-09-29 富士通株式会社 デバッグ装置及び方法並びにプログラム記録媒体
US6766437B1 (en) * 2000-02-28 2004-07-20 International Business Machines Corporation Composite uniprocessor
US6971084B2 (en) * 2001-03-02 2005-11-29 National Instruments Corporation System and method for synchronizing execution of a batch of threads
US6754850B2 (en) * 2001-03-02 2004-06-22 National Instruments Corporation System and method for performing batch synchronization for a test sequence
US7493615B2 (en) * 2003-05-01 2009-02-17 Sun Microsystems, Inc. Apparatus and method for synchronizing multiple threads in an out-of-order microprocessor
US7512950B1 (en) * 2003-08-14 2009-03-31 Sun Microsystems, Inc. Barrier synchronization object for multi-threaded applications
JP4276028B2 (ja) * 2003-08-25 2009-06-10 株式会社日立製作所 マルチプロセッサシステムの同期方法
US7418576B1 (en) * 2004-11-17 2008-08-26 Nvidia Corporation Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US7937709B2 (en) * 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
JP4448784B2 (ja) * 2005-03-15 2010-04-14 株式会社日立製作所 並列計算機の同期方法及びプログラム
US7770170B2 (en) * 2005-07-12 2010-08-03 Microsoft Corporation Blocking local sense synchronization barrier
US7543136B1 (en) * 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
US7353369B1 (en) * 2005-07-13 2008-04-01 Nvidia Corporation System and method for managing divergent threads in a SIMD architecture
US7555607B2 (en) * 2005-11-10 2009-06-30 Hewlett-Packard Development Company, L.P. Program thread syncronization for instruction cachelines
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US7584342B1 (en) * 2005-12-15 2009-09-01 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and SIMD instruction issue
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US20070143755A1 (en) * 2005-12-16 2007-06-21 Intel Corporation Speculative execution past a barrier
GB0613289D0 (en) * 2006-07-04 2006-08-16 Imagination Tech Ltd Synchronisation of execution threads on a multi-threaded processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011134145A (ja) * 2009-12-25 2011-07-07 Fujitsu Ltd マルチスレッド処理方法及びマルチスレッド処理装置

Also Published As

Publication number Publication date
US20140331029A1 (en) 2014-11-06
EP2035929B1 (en) 2017-10-04
US20120240131A1 (en) 2012-09-20
US20190155607A1 (en) 2019-05-23
US8656400B2 (en) 2014-02-18
GB0613289D0 (en) 2006-08-16
EP2035929A1 (en) 2009-03-18
US20200285473A1 (en) 2020-09-10
GB2439840B (en) 2010-02-03
US8286180B2 (en) 2012-10-09
US10698690B2 (en) 2020-06-30
US20080010640A1 (en) 2008-01-10
US10481911B2 (en) 2019-11-19
GB2439840A (en) 2008-01-09
WO2008003968A1 (en) 2008-01-10
GB0712975D0 (en) 2007-08-15
US20080059963A1 (en) 2008-03-06
JP5710878B2 (ja) 2015-04-30

Similar Documents

Publication Publication Date Title
JP5710878B2 (ja) マルチスレッドプロセッサ上の実行スレッドの同期
JP2009543170A5 (ja)
US9436475B2 (en) System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same
JP5263844B2 (ja) パイプラインプロセッサにおける長い待ち時間命令の処理
JP5047542B2 (ja) マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム)
JP5631976B2 (ja) マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置
JPH10149285A (ja) 命令実行制御方法および情報処理装置
US20070143581A1 (en) Superscalar data processing apparatus and method
US20150074353A1 (en) System and Method for an Asynchronous Processor with Multiple Threading
JP2002508568A (ja) 不適正順序マルチスレッド実行を実行するロード命令およびストア命令を順序付けるシステム
JP2015122063A (ja) マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法
EP2352082B1 (en) Data processing device for performing a plurality of calculation processes in parallel
CN116414464A (zh) 调度任务的方法和装置、电子设备和计算机可读介质
JP2008269114A (ja) マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
US6721873B2 (en) Method and apparatus for improving dispersal performance in a processor through the use of no-op ports
JP2008197943A (ja) コンピュータシステム
JP2015036855A (ja) 演算処理装置及び演算処理装置の制御方法
CN108255587A (zh) 一种同步多线程处理器
CN108255516A (zh) 顺序同步多线程处理器及其指令执行控制方法、装置
KR20140124453A (ko) 재구성 가능 프로세서 및 그 재구성 가능 프로세서에서 문맥 교환 방법
JP2010211741A (ja) システムlsi及びシステムlsiのデバッグ方法
JPH04326425A (ja) ループ処理制御方式
JPH06230968A (ja) 分岐制御装置
JP2004362026A (ja) 動的な命令列生成方法および装置
KR20110113230A (ko) 마이크로프로세서

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120704

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121002

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121228

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20121228

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130712

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130722

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150305

R150 Certificate of patent or registration of utility model

Ref document number: 5710878

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