JP6079518B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP6079518B2
JP6079518B2 JP2013188579A JP2013188579A JP6079518B2 JP 6079518 B2 JP6079518 B2 JP 6079518B2 JP 2013188579 A JP2013188579 A JP 2013188579A JP 2013188579 A JP2013188579 A JP 2013188579A JP 6079518 B2 JP6079518 B2 JP 6079518B2
Authority
JP
Japan
Prior art keywords
state
gate
thread
request
arithmetic processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013188579A
Other languages
English (en)
Other versions
JP2015055994A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013188579A priority Critical patent/JP6079518B2/ja
Priority to US14/475,089 priority patent/US9626230B2/en
Publication of JP2015055994A publication Critical patent/JP2015055994A/ja
Application granted granted Critical
Publication of JP6079518B2 publication Critical patent/JP6079518B2/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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
近年、プロセッサのコアの数を増やすことによりプロセッサの性能を向上させる方法が一般的になっており、1つのプロセッサが有するコア数が増加している(マルチコア化)。また、1つのコアで複数のスレッドを同時に実行可能なSMT(Simultaneous Multi-threading Technology)等の技術の採用も進んでいる(マルチスレッド化)。マルチコア化、マルチスレッド化が進展することにより、プロセッサ上で同時に実行されるスレッド数は増加する傾向にある。
同時に多数のスレッドを実行するプロセッサにおいて、キャッシュミスやTLB(Translation Look-aside Buffer)ミスが頻繁に発生すると、プログラムの実行性能は著しく低下する。例えば、プログラムの実行により同時にアクセスするメモリ領域(ページ)の数がTLBエントリ数以下であれば、そのメモリ領域にアクセスをしている間にTLBミスは発生しない。しかし、同時にアクセスするメモリ領域(ページ)の数がTLBエントリ数を超えると、TLBミスが頻繁に発生する(TLBスラッシング)。
同時に多数のスレッドを実行するプロセッサでは、キャッシュメモリやTLBは、複数のスレッドで共有される。そのため、複数のスレッドをデータ並列で使用する場合、キャッシュメモリやTLBの構成を考慮した適切な割り当てで各スレッドに対するデータの割り当てを行わないと、キャッシュミスやTLBミスの発生回数が増加する可能性がある。例えば、図10(A)に示すプログラムを、スレッド1〜スレッド4の4つのスレッドで並列して処理を実行する場合、ある時間内に各スレッドによりアクセスする箇所は、図10(B)に矢印で示すように、ブロック(Block)割り当てでは分散し、サイクリック(Cyclic)割り当てでは集中する。つまり、サイクリック割り当てでデータをスレッド1〜スレッド4に割り当てないと、キャッシュミスやTLBミスの発生頻度が高くなる。
また、同時に多数のスレッドを実行するプロセッサは、実行モデルとしてSIMD(Single Instruction Multiple Data)ではなく、SPMD(Single Program Multiple Data)を採用している。SIMDは、スレッド間の同期を頻繁にとる必要があり、スレッド数が多くなると同期コストが大きくなり、その結果、プログラムの実行性能が低下してしまう。一方、SPMDは、スレッド間の同期をとる必要がないため、実行準備の整ったスレッドをデータの順番とは無関係に実行させることにより、プロセッサのコアの空き時間(何も実行していない時間)を少なくすることができる。
複数のスレッドを並列実行するコンピュータにおいて、現行スレッドが同期点に達したときに、現行スレッドによりデータが参照される参照スレッドが同期点に達していない場合に、参照スレッドが同期点に到達するまでの現行スレッドの待機時間、及び参照スレッドの同期点でのデータを参照せずに現行スレッドが処理を行った場合の品質差分の大きさに応じて、現行スレッドの進行を制御する技術が提案されている(例えば、特許文献1参照)。
国際公開第2009/090964号 特開2003−108392号公報
同時に多数のスレッドを実行するプロセッサでは、実行モデルとしてSPMDを採用しているため、進行の速いスレッドと進行の遅いスレッドとが存在しうる。スレッド間の進行差が大きくなると、サイクリック割り当てのような適切な割り当てで各スレッドのデータの割り当てを行っていても、ある時間内に各スレッドによりアクセスするメモリ箇所が分散し、キャッシュミスやTLBミスの発生回数が増加する可能性がある。キャッシュミスやTLBミスの発生回数が増加した場合、プロセッサにおけるプログラムの実行性能が低下してしまう。
スレッド間の進行差が大きくならないように全スレッド間で同期をとることにより、スレッド間の進行差によるキャッシュミスやTLBミスの発生を抑制することは可能であるが、全スレッド間で同期をとると同期コストが大きくなる。また、同時に多数のスレッドを実行するプロセッサでは、図11に例示するようにソフトウェアスレッドが状態遷移する。待機状態(Waiting状態)のスレッドは、Activeプールに空きが発生すると実行状態(Active)に遷移する。実行状態(Active)のスレッドは、ハードウェアスレッドへの割り当てを頻繁に切り替えて実行される。そして、実行状態(Active)のスレッドは、処理の実行が完了すると完了状態(Done状態)に遷移する。このように、同時に多数のスレッドを実行するプロセッサにおいては、全スレッドが同時に実行状態であるアクティブ(Active)状態にならないことが多く、プログラムの実行が停止する可能性があるために、全スレッド間で同期をとることはできない。
1つの側面では、本発明の目的は、同時に多数のスレッドを実行する演算処理装置において、キャッシュミスやTLBミスの発生回数を削減し、演算処理装置のプログラムの実行性能を向上させることにある。
演算処理装置の一態様は、ループ状に配した複数のゲートの情報を保持し、ゲートの状態を第1の状態にするとき、そのゲートに対して1つ後に配したゲートの状態を第2の状態にし、第2の状態にしたゲートに対する状態の読み出しの最初の要求から所定の時間が経過したとき、そのゲートの状態を第1の状態にする進行制御部と、複数のスレッドの各々で一定処理毎に、1つのゲートを指定して進行制御部からゲートの状態を読み出し、指定したゲートの状態が第1の状態であれば次の処理を実行し、第1の状態でなければ第1の状態になるまで次の処理の実行を待機する命令実行部とを有する。
発明の一態様においては、実行状態になっているスレッドで進行の速いスレッドの次の処理の実行を遅らせることによりスレッド間の進行差の拡大を防ぐことができ、キャッシュミスやTLBミスの発生回数を削減し、演算処理装置のプログラムの実行性能を向上させることができる。
本発明の実施形態におけるスレッド進行制御機構の構成例を示す図である。 本実施形態における演算処理装置の構成例を示す図である。 本実施形態におけるスレッドの処理の例を示す図である。 本実施形態における進行制御ルーチンを説明するための図である。 本実施形態におけるゲートの状態移行の例を示す図である。 本実施形態における動作例を示す図である。 本実施形態における状態遷移の例を示す図である。 本実施形態における状態遷移の他の例を示す図である。 本実施形態における状態遷移の他の例を示す図である。 スレッドに対するデータの割り当ての例を示す図である。 ソフトウェアスレッドの状態遷移を示す図である。
以下、本発明の実施形態を図面に基づいて説明する。
本発明の実施形態における演算処理装置は、実行状態(Active状態)になっている複数のスレッド間の進行差を許容できる範囲内に収めるようにスレッドの進行を制御する。そこで、本実施形態における演算処理装置は、ループ状に配した複数(2つ以上)のゲートを用意し、実行状態にある複数のスレッドの各々で一定処理毎にゲートを指定してゲートの状態を読み出す。各スレッドでは、指定するゲートを順番に循環するように一定処理毎に切り替える。
各スレッドは、指定したゲートの状態が開状態(Opened状態)であれば次の処理を実行でき、指定したゲートの状態が開状態でなければ開状態になるまで次の処理の実行を待機する。また、各ゲートは、閉状態(Closed状態)に移行した後、最初に状態を読み出すためのアクセスを受けてから一定時間が経過するまで開状態に移行しない。このようにゲートによってスレッドでの処理の進行を制御して、進行の速いスレッドを適宜遅延させ、進行の速いスレッドと進行の遅いスレッドの進行差が拡大するのを抑える。
なお、各ゲートは、1つ前に配されたゲートの状態が開状態になったら閉状態に移行する。言い換えれば、ゲートの状態を開状態にするとき、それに対して1つ後に配されたゲートの状態を閉状態にする。例えば、ゲート数が2つ(ゲート0及びゲート1)の場合、ゲート0が開状態になったらゲート1が閉状態になり、ゲート1が開状態になったらゲート0が閉状態になる。また、ゲート数が3つ以上(ゲート0、ゲート1、ゲート2、ゲート3、・・・)の場合、ゲート0が開状態になったらゲート1が閉状態になり、ゲート1が開状態になったらゲート2が閉状態になり、ゲート2が開状態になったらゲート3が閉状態になる。
図1は、本実施形態における演算処理装置としてのプロセッサが有するスレッド進行制御機構の構成例を示す図である。スレッド進行制御部11は、複数のコア12とバス13を介して通信可能に接続されている。プロセッサが有する命令実行部としてのコア12は、それぞれが複数のスレッドを実行する。なお、スレッド進行制御部11とコア12とを接続するものはバス13に限らず、接続形態は何であっても良く、例えばクロスバー等であっても良い。
スレッド進行制御部11は、ゲート管理部(Gate Management Unit)14、カウンタ制御部(Counter Control Unit)15、及びゲート状態保持部16を有する。ゲート状態保持部17は、各ゲートの状態を保持するテーブル17と各ゲートに対応するカウンタ18とを有する。図1には、N個(Nは2以上の整数)のゲートを用意した例を示している。
ゲート管理部14は、各ゲートの状態を保持するテーブル17を管理する。また、ゲート管理部14は、コア12で実行しているスレッドからのゲート状態の読み出し要求を受けると、要求において指定されたゲートの状態をテーブル17より取得し、要求元のスレッドに対して返す。
ここで、ゲートの状態は、開状態(Opened状態)、閉状態(Closed状態)、及び切替状態(Changing状態)の3状態とし、各ゲートの初期状態は閉状態とする(図1に示した例は、初期状態からゲート0を開状態にした後を示している)。開状態は、そのゲートに対してアクセスしたスレッドが次の処理に進める状態である。ゲート管理部14は、あるゲートを開状態に移行させるとき、開状態に移行させるゲートの次のゲートを閉状態に移行させる。ゲート管理部14は、閉状態に移行させたゲートに対するアクセスをスレッドから受けると、ゲートを閉状態から切替状態に移行させる。ゲート管理部14は、切替状態のゲートに対応するカウンタ18の値が所定の値(図1に示す例では0)になると、ゲートを切替状態から開状態に移行させる。
すなわち、ゲート管理部14は、図5(A)に示すように、ゲート(i−1)を開状態に移行させるとき、次のゲート(i)を閉状態に移行させる。この状態で、ゲート管理部14は、ゲート(i)に対するアクセスをスレッドから受けると、図5(B)に示すようにゲート(i)を切替状態に移行させる。そして、ゲート管理部14は、ゲート(i)に対応するカウンタの値が所定の値になると、図5(C)に示すように、ゲート(i)を開状態に移行させるとともに、次のゲート(i+1)を閉状態に移行させる。
カウンタ制御部15は、各ゲートに対応するカウンタ18を制御する。カウンタ制御部15は、ゲートの状態が閉状態から切替状態に移行すると、対応するカウンタ18の値を初期値(図1に示す例ではmax)に設定してカウント動作を開始させる。なお、本実施形態では、カウンタ18のカウント動作は、1ずつデクリメントするカウントダウンとするが、1ずつインクリメントするカウントアップであっても良い。
図2(A)及び図2(B)は、本実施形態におけるプロセッサの構成例を示す図である。図2(A)及び図2(B)において、21はコアであり、22はコア21にそれぞれ対応して設けられるプライベートキャッシュ部である。23はすべてのコア21により共有される共有キャッシュ部であり、24は外部メモリにアクセスするための、すべてのコア21によりアクセス可能なメモリコントローラである。プライベートキャッシュ部22及び共有キャッシュ部23は、それぞれキャッシュコントローラ及びキャッシュメモリを有している。
図2(A)及び図2(B)に示したように、スレッド進行制御部11は、すべてのコア21からアクセス可能に配置する。図2(A)は、共有キャッシュ部23にスレッド進行制御部11を併設した例を示しており、図2(B)は、メモリコントローラ24にスレッド進行制御部11を併設した例を示している。
本実施形態では、図3に示すように、プロセッサのコアで実行する各スレッドの処理において、一定処理毎に制御点31を設ける。各スレッドの制御点31では、ゲートを指定してゲートに対するアクセスを行って状態を読み出す。その結果、スレッドは、指定したゲートの状態が開状態であれば次の処理に進み、開状態でなければ開状態になるまでゲートに対するアクセスを繰り返し行う。つまり、進行の速いスレッドは、ゲートが開状態になるまで比較的長い時間を待って次の処理に進み、進行の遅いスレッドは、ゲートが開状態になるまでの短い時間を待って又は待つことなく次の処理に進む。これにより、進行の速いスレッドと進行の遅いスレッドの進行差を縮めることができ、スレッド間の進行差が拡大することを抑えることができる。
前述したゲートに対するアクセスを行って状態を読み出す動作は、例えば図4(A)に一例を示すように、複数のスレッドで並列して処理を実行するプログラム内でスレッド間の進行差を縮めたいポイントに、進行制御ルーチンのloose_sync()を配置することで実現可能である。進行制御ルーチンのloose_sync()は、図4(B)に一例を示すように、gate_idで指定するゲートに対するアクセスをゲートの状態が開状態になるまで繰り返し行うループ処理である。進行制御ルーチンのloose_sync()の配置は、例えばソフトウェアを修正したり、コンパイラによって一定処理毎に自動挿入したりするようにすれば良い。また、ゲートに対するアクセスは、専用の命令を用いてアクセスするような形態であっても良いし、ゲートをメモリ空間にマッピングして、その領域に対するロード命令でアクセスするような形態であっても良い。
以上のようにして、プロセッサのコアは、並列に処理を実行する各スレッドにおいて、一定処理毎にゲートを指定して状態を読み出し、指定したゲートの状態が開状態であれば次の処理に進み、開状態でなければ開状態になるまで次の処理の実行を待機する。これにより、進行の速いスレッドは、ゲートが開状態になるまで比較的長い時間を待って次の処理に進み、進行の遅いスレッドは、ゲートが開状態になるまでの短い時間を待って又は待つことなく次の処理に進むことになり、進行の速いスレッドと進行の遅いスレッドの進行差を縮めることができる。例えば、スレッド0〜スレッド4において処理時間が異なり、単純に処理を実行すると図6(A)に示すようにスレッド間の進行差が拡大していくような場合、本実施形態を適用することにより、図6(B)に示すようにスレッド間の進行差の拡大を抑えることができる。したがって、進行の速いスレッドと進行の遅いスレッドとの間の進行差が拡大することを抑えることができ、キャッシュミスやTLBミスの発生回数を削減し、プログラムの実行性能を向上させることができる。また、実行状態(Active状態)になっているスレッドを特定し、特定されたスレッドのすべてが同期点に到達したことを確認するような仕組みと比べて、前述したスレッド進行制御機構は、構成が簡略であり同期コストを低減することができ、少ないハードウェア量での実装が可能である。
以下、本実施形態におけるゲートの状態の遷移を詳細に説明する。なお、以下の説明では、2つのゲート(ゲート0及びゲート1)を用意した場合を例に説明する。各ゲートの状態の制御は、スレッド進行制御部11のゲート管理部14が行い、各ゲートに対応するカウンタの制御は、スレッド進行制御部11のカウンタ制御部15が行う。また、以下では、ゲート0に対応するカウンタをカウンタ0と称し、ゲート1に対応するカウンタをカウンタ1と称す。
図7は、本実施形態におけるゲートの状態遷移の例を示す図である。状態ST11は、初期状態であり、すべてのゲート、すなわちゲート0及びゲート1がともに閉状態(Closed状態)である。
状態ST11において、あるスレッドからのゲート0に対するアクセスがあると、ゲート0が閉状態から切替状態(Changing状態)に移行されるとともにカウンタ0が初期化され、ゲート0が切替状態であり、ゲート1が閉状態である状態ST12になる。状態ST12ではカウンタ0のカウントダウン動作が行われる。状態ST12において、カウンタ0の値が0になる、すなわち状態ST12になって一定時間が経過すると、ゲート0が切替状態から開状態(Opened状態)に移行され、ゲート0が開状態であり、ゲート1が閉状態である状態ST13になる。
状態ST13において、あるスレッドからのゲート1に対するアクセスがあると、ゲート1が閉状態から切替状態に移行されるとともにカウンタ1が初期化され、ゲート0が開状態であり、ゲート1が切替状態である状態ST14になる。状態ST14ではカウンタ1のカウントダウン動作が行われる。状態ST14において、カウンタ1の値が0になる、すなわち状態ST14になって一定時間が経過すると、ゲート1が切替状態から開状態に移行されるとともに次のゲートとしてのゲート0が開状態から閉状態に移行され、ゲート0が閉状態であり、ゲート1が開状態である状態ST15になる。
状態ST15において、あるスレッドからのゲート0に対するアクセスがあると、ゲート0が閉状態から切替状態に移行されるとともにカウンタ0が初期化され、ゲート0が切替状態であり、ゲート1が開状態である状態ST16になる。状態ST16ではカウンタ0のカウントダウン動作が行われる。状態ST16において、カウンタ0の値が0になる、すなわち状態ST16になって一定時間が経過すると、ゲート0が切替状態から開状態に移行されるとともに次のゲートとしてのゲート1が開状態から閉状態に移行され、ゲート0が開状態であり、ゲート1が閉状態である状態ST13になる。
なお、状態ST11において、あるスレッドからのゲート1に対するアクセスがあると、ゲート1が閉状態から切替状態に移行されるとともにカウンタ1が初期化され、ゲート0が閉状態であり、ゲート1が切替状態である状態ST17になる。状態ST17ではカウンタ1のカウントダウン動作が行われる。状態ST17において、カウンタ1の値が0になる、すなわち状態ST17になって一定時間が経過すると、ゲート1が切替状態から開状態に移行され、ゲート0が閉状態であり、ゲート1が開状態である状態ST15になる。なお、図7に示す例では、あるゲートが切替状態(状態ST12、ST14、ST16、ST17)であるときは、どのゲートにアクセスしても状態遷移は起きない。
図8は、本実施形態におけるゲートの状態遷移の他の例を示す図である。図8に示す例は、状態ST14において、あるスレッドからのゲート0に対するアクセスがあった場合と、状態ST16において、あるスレッドからのゲート1に対するアクセスがあった場合の挙動が図7に示した例とは異なる。図7に示した例と重複する説明は省略する。
ゲート0が開状態であり、ゲート1が切替状態である状態ST14において、カウンタ1の値が0になる前に、あるスレッドからのゲート0に対するアクセスがあると、カウンタ1の値が一定量増加又は初期値される。このようにして、ゲート1を開状態にするまでの期間を延長することにより、1つ前のゲートであるゲート0の閉状態への移行を遅らせ、ゲート0が開状態である期間を延長する。これにより、遅れるスレッドの数が少なくなり、スレッド間の進行差を縮めることができる。
また、ゲート0が切替状態であり、ゲート1が開状態である状態ST16において、カウンタ0の値が0になる前に、あるスレッドからのゲート1に対するアクセスがあると、カウンタ0の値が一定量増加又は初期値される。このようにして、ゲート0を開状態にするまでの期間を延長することにより、1つ前のゲートであるゲート1の閉状態への移行を遅らせ、ゲート1が開状態である期間を延長する。これにより、遅れるスレッドの数が少なくなり、スレッド間の進行差を縮めることができる。
図9は、本実施形態におけるゲートの状態遷移の他の例を示す図である。図9に示す例は、状態ST13、ST15になってからの挙動が図7に示した例とは異なる。図7に示した例と重複する説明は省略する。
図9に示す例において、ゲート0が開状態であり、ゲート1が閉状態である状態ST13では、カウンタ0のカウントアップ動作が行われる。そして、状態ST13において、あるスレッドからのゲート1に対するアクセスがある前に、カウント0の値がある値(図9に示す例ではmax)に達する、すなわち状態ST13になって一定時間が経過すると、ゲート0が開状態から閉状態に移行され、ゲート0及びゲート1がともに閉状態である状態ST11になる。
また、ゲート0が閉状態であり、ゲート1が開状態である状態ST15では、カウンタ1のカウントアップ動作が行われる。そして、状態ST15において、あるスレッドからのゲート0に対するアクセスがある前に、カウント1の値がある値(図9に示す例ではmax)に達する、すなわち状態ST15になって一定時間が経過すると、ゲート1が開状態から閉状態に移行され、ゲート0及びゲート1がともに閉状態である状態ST11になる。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
11 スレッド進行制御部
12 コア
13 バス
14 ゲート管理部
15 カウンタ制御部
16 ゲート状態保持部
17 テーブル
18 カウンタ
21 コア
22 プライベートキャッシュ部
23 共有キャッシュ部
24 メモリコントローラ

Claims (4)

  1. ループ状に配した複数のゲートの情報を保持し、前記ゲートの状態を第1の状態にするとき、前記第1の状態にするゲートに対して1つ後に配した前記ゲートの状態を第2の状態にし、前記第2の状態にしたゲートに対する状態の読み出しの最初の要求から所定の時間が経過したとき、前記要求で指定された前記ゲートの状態を前記第1の状態にする進行制御部と、
    複数のスレッドで処理を実行し、各スレッドで一定処理毎に、前記複数のゲートの内の1つの前記ゲートを指定して前記進行制御部からゲートの状態を読み出し、指定した前記ゲートの状態が前記第1の状態であれば次の処理を実行し、指定した前記ゲートの状態が前記第1の状態でなければ第1の状態になるまで次の処理の実行を待機する命令実行部とを有することを特徴とする演算処理装置。
  2. 前記進行制御部は、
    前記第2の状態にしたゲートに対する状態の読み出しの最初の要求からカウント動作を開始するカウンタを有し、
    前記カウンタの値が所定の値になったとき、前記要求で指定された前記ゲートの状態を前記第1の状態にすることを特徴とする請求項1記載の演算処理装置。
  3. 前記進行制御部は、
    前記第2の状態にしたゲートに対する状態の読み出しの最初の要求から所定の時間が経過する前に、前記要求で指定されたゲートに対して1つ前に配した前記ゲートに対する状態の読み出しの要求があった場合、前記要求で指定された前記ゲートの状態を前記第1の状態にするまでの期間を延長することを特徴とする請求項1又は2記載の演算処理装置。
  4. 複数のスレッドで処理を実行する命令実行部を有する演算処理装置の制御方法において、
    前記演算処理装置の進行制御部が、ループ状に配した複数のゲートの情報を保持し、前記ゲートの状態を第1の状態にするとき、前記第1の状態にするゲートに対して1つ後に配した前記ゲートの状態を第2の状態にし、前記第2の状態にしたゲートに対する状態の読み出しの最初の要求から所定の時間が経過したとき、前記要求で指定された前記ゲートの状態を前記第1の状態にし、
    前記命令実行部が、各スレッドで一定処理毎に、前記複数のゲートの内の1つの前記ゲートを指定して前記進行制御部からゲートの状態を読み出し、指定した前記ゲートの状態が前記第1の状態であれば次の処理を実行し、指定した前記ゲートの状態が前記第1の状態でなければ第1の状態になるまで次の処理の実行を待機することを特徴とする演算処理装置の制御方法。
JP2013188579A 2013-09-11 2013-09-11 演算処理装置及び演算処理装置の制御方法 Active JP6079518B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013188579A JP6079518B2 (ja) 2013-09-11 2013-09-11 演算処理装置及び演算処理装置の制御方法
US14/475,089 US9626230B2 (en) 2013-09-11 2014-09-02 Processor and control method of processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013188579A JP6079518B2 (ja) 2013-09-11 2013-09-11 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2015055994A JP2015055994A (ja) 2015-03-23
JP6079518B2 true JP6079518B2 (ja) 2017-02-15

Family

ID=52626860

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013188579A Active JP6079518B2 (ja) 2013-09-11 2013-09-11 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US9626230B2 (ja)
JP (1) JP6079518B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2560059B (en) * 2017-06-16 2019-03-06 Imagination Tech Ltd Scheduling tasks
GB2563587B (en) 2017-06-16 2021-01-06 Imagination Tech Ltd Scheduling tasks

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108392A (ja) 2001-09-28 2003-04-11 Fujitsu Ltd 同期プログラムおよび同期方法
US7137118B2 (en) * 2002-09-27 2006-11-14 Texas Instruments Incorporated Data synchronization hardware primitive in an embedded symmetrical multiprocessor computer
US20050198475A1 (en) * 2004-02-06 2005-09-08 Infineon Technologies, Inc. Thread selection unit and method to fairly allocate processor cycles in a block multithreaded processor
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
JP2006268070A (ja) * 2005-03-22 2006-10-05 Hitachi Ltd 並列化コンパイル処理方法及び並列化されたオブジェクトコードを実行する並列計算機
US7945911B1 (en) * 2005-06-03 2011-05-17 Oracle America, Inc. Barrier synchronization method and apparatus for work-stealing threads
EP1977314A1 (en) * 2006-07-21 2008-10-08 Sony Service Centre (Europe) N.V. Demodulator device and method of operating the same
TW200943175A (en) 2008-01-17 2009-10-16 Nec Corp Synchronization control method and information processing device
JP5428617B2 (ja) * 2009-07-28 2014-02-26 富士通株式会社 プロセッサ及び演算処理方法
US20120284729A1 (en) * 2011-05-03 2012-11-08 Microsoft Corporation Processor state-based thread scheduling

Also Published As

Publication number Publication date
US9626230B2 (en) 2017-04-18
US20150074682A1 (en) 2015-03-12
JP2015055994A (ja) 2015-03-23

Similar Documents

Publication Publication Date Title
US9824011B2 (en) Method and apparatus for processing data and computer system
US20240004790A1 (en) Coordinated garbage collection in distributed systems
Bojnordi et al. PARDIS: A programmable memory controller for the DDRx interfacing standards
JP2017526996A5 (ja)
US9336564B2 (en) GPU enabled database systems
US20140359225A1 (en) Multi-core processor and multi-core processor system
US9141173B2 (en) Thread consolidation in processor cores
US10372493B2 (en) Thread and/or virtual machine scheduling for cores with diverse capabilities
TW201443783A (zh) 在單一指令多執行緒處理器上以函數呼叫編譯或執行時間執行一分叉-會合資料平行程式的系統及方法
JP2002163238A5 (ja)
US20120005457A1 (en) Using software-controlled smt priority to optimize data prefetch with assist thread
JP2012150583A5 (ja)
JP6079518B2 (ja) 演算処理装置及び演算処理装置の制御方法
Madhu et al. Compiling HPC kernels for the REDEFINE CGRA
WO2015096031A1 (zh) 线程共享资源分配方法及装置
JP6074932B2 (ja) 演算処理装置及び演算処理方法
Bojnordi et al. A programmable memory controller for the DDRx interfacing standards
KR20140081206A (ko) 컴퓨터 시스템
Karnagel et al. Limitations of intra-operator parallelism using heterogeneous computing resources
JP2017016250A (ja) バリア同期装置、バリア同期方法及びプログラム
Ilyas et al. Use of Symmetric Multiprocessor Architecture to achieve high performance computing
KR20080043349A (ko) 멀티-스레딩된 프로세서 구조
JP2020126477A (ja) 電子制御装置
Das et al. Performance analysis of a multi-tenant in-memory data grid
WO2017080021A1 (en) System and method for hardware multithreading to improve vliw dsp performance and efficiency

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170102

R150 Certificate of patent or registration of utility model

Ref document number: 6079518

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150