JP5626690B2 - マルチプロセス間のバリアの物理マネージャ - Google Patents

マルチプロセス間のバリアの物理マネージャ Download PDF

Info

Publication number
JP5626690B2
JP5626690B2 JP2011540156A JP2011540156A JP5626690B2 JP 5626690 B2 JP5626690 B2 JP 5626690B2 JP 2011540156 A JP2011540156 A JP 2011540156A JP 2011540156 A JP2011540156 A JP 2011540156A JP 5626690 B2 JP5626690 B2 JP 5626690B2
Authority
JP
Japan
Prior art keywords
barrier
computing device
block
call
executed
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.)
Expired - Fee Related
Application number
JP2011540156A
Other languages
English (en)
Other versions
JP2012512452A (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 JP2012512452A publication Critical patent/JP2012512452A/ja
Application granted granted Critical
Publication of JP5626690B2 publication Critical patent/JP5626690B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Description

本発明は、並列実行されるプロセス処理に関する。
コンピュータのソフトウェアまたはプログラムのなかには、与えられたタスクを実行または達成するのに膨大な時間がかかるものがある。効率を上げ、計算時間を短縮するため、このようなプログラムは、実行されるコンピュータの並列性から利点を引き出すことができる。コンピュータの並列性とは、複数のプロセッサあるいは複数のコアを有する少なくとも1つのプロセッサ、または複数の実行ファイル(スレッド、threads)を有する少なくとも1つのプロセッサが搭載されているコンピュータのことである。
並列性を活かすため、コンピュータプログラムがタスク(またはメインタスク)を複数のサブタスクに分割し、さまざまなプロセスによって計算を並列実行することができる。そのため、各プロセスは、このサブタスクのうちの1つを実行してこれを完了することを目的とする。プロセスが実行中のサブタスクを終了すると、完了すべき第2のサブタスクをこのプロセスに割り当てることが可能となり、その後は必要に応じて次のサブタスクを割り当て、このように次々と割り当てることができる。
多数のプロセスを使用することにより(マルチプロセス処理)、これらのプロセスの同期をとる必要が生じる。この同期は、とりわけサブタスクが完了した際にメインタスクを順序付けして再編成できるようにすることを目的とする。
このような同期は一般に、いわゆる「プロセス間同期機構」という機構によって行われる。この機構は、並列実行されるプロセスを使用することによって引き出される時間上の利点を無駄にしないために迅速である必要がある。
上述した同期を実施するにあたり、「バリア機構」と呼ばれるソフトウェアの性質を持つ機構が知られている。この機構は、以下で説明する同じ主要図に沿うさまざまなアルゴリズムに基づくものとすることができる。
はじめに、1つのタスクを完了するように設計されているコンピュータプログラムがn個のプロセスを介して実行され、これらのプロセス自体もサブタスク全体を実行することができる。各サブタスクは、たとえば中間計算などのジョブステップを完了するように設計されている一連のブロックに分割される。そのため、さまざまに異なるプロセスのブロックまたは中間計算は並列実行される。1つのブロックを終了した各プロセスは、ほかのプロセスのほかの並列ブロックがすべて終了して自らがバリアに到達するまでバリア(同期バリア)で待ち状態となる。これは、すべてのプロセスがバリアに到達したときのみに、次のブロックが次のジョブステップで実行される。この原理については、タイムチャートを用いて以下で説明する。
図1は、バリア機構およびバリアの一般的動作を示す。メインタスクTから始まり、プロセスマネージャPMがまずタスクTをn個のサブタスクSTに分解する。このn個のサブタスクSTは、n個のプロセスPによって実行される。換言すると、複合的なメインタスクTは複数の単一のサブタスクSTに分解され、これらのサブタスクのそれぞれが別々のプロセスによって完了される。
プロセスPによって実行されるさまざまに異なるサブタスクSTから得られる結果は、メインタスクTを完了するために最終的には統合される。
プロセスマネージャPMの概念は広い意味で解釈するべきであることに注意する。そのため、マネージャPMは必ずしもユニット自体である必要はない。実際に、プロセスマネージャは一般に、プロセス同士がサブタスクを互いに分類することができるように、コンピュータプログラムが受動または能動的な分割方法を実装する処理能力と考えることができる。処理能力は、プロセスのうちの1つによって決定される暗黙的なものか、ユーザがあらかじめ定義した一区分に相当することもある。
上で言及したように、1つのタスクを多数のプロセスPに分解する際に、このさまざまなプロセスの並列実行に同期が必要となる。そのため、n個のプロセス自体もブロックBに分割され、時間内に順次実行されていく。同時に実行されている(かつさまざまなプロセスPに属する)ブロックBの部分集合は、ジョブステップWを構成する。その結果、同一列iのブロックBの各集合は別々のジョブステップWを構成する。
と表記している列iのジョブステップのブロックBは、並列実行される。さまざまなプロセスPに属するブロックBを実行する時間tはさまざまに異なる。前述の同期を行うため、ブロックBをバリアBS(100)で同期させる。各プロセスPが実行中のブロックBを実行し終わると、このバリアBS(100)は各プロセスPから呼び出される。次列のブロックBi+1への移行を許可するのはこのバリアBS(100)であり、これは、実行中のブロックBすべてがバリアに「到達」したときのみ、すなわちこのバリアに実行が終了したことを通知したときのみに許可される。
終了した第1のブロックB、すなわち最短の実行時間tのブロックは、要求によってバリアBS(100)に自らのジョブが終了したことを通知するとともに、同じジョブステップで残っている実行中のブロック数を通知する。一般に、ジョブステップでのブロック数は、プロセスPの数nと同数である。
バリアは、通常カウンタを備えている。カウンタは、第1のブロックBがバリアに到達すると初期化される。次に、カウンタは、別のブロックBがバリアBS(100)に到達するたびにデクリメントされる。このように、バリアBS(100)はジョブステップの進行(または前進)、さらに正確には実行中の各ブロックBの終了を推進することができる。最後のブロックB、つまり最長実行時間がtであるブロックがバリアBS(100)に到達すると、このバリアは各プロセスPに情報を与えて次のジョブステップWに移ることを許可する。また、次のこのジョブステップWは、並列実行されてさまざまなプロセスPに属するブロックBで構成される。次のこのジョブステップでは、バリア機構BS(100)は前のものと同じである。これが各ジョブステップで繰り返され、プロセスPが終了するまで続けられる。そのためタスクTは、プロセスPの結果を再編成することによって完了する。
このようなアルゴリズムは、プロセスとブロックとバリアとの間に特定数の相互作用を必要とする。これらの相互作用は、特に、バリアの初期化、ブロックがジョブを終了した際にバリアに与える情報、すべてのサブプロセスが実行中のブロックを終了したことの確認を含み、これについては後の説明文で詳述する。これらの相互作用がソフトウェアの性質を持つバリアで管理される場合、この相互作用は比較的遅い上に伝送帯の消費量は非常に多い。
先行技術に関する図2は、周知のバリアBS(100)の実装を示す。周知の機構はソフトウェアに実装される。したがって、バリアBS(100)を定義するデータは、コンピュータ(またはその他のコンピューティングデバイス)のRAMメモリ(202)(英語のRandom Access Memory)に格納され、さまざまに異なるプロセスPはこのRAMメモリ(202)に(読み取り/書き込み、R/Wから)アクセスして前記バリアBS(100)と相互に作用する。このアクセスは、アドレス空間およびアドレスADR(のちに詳述)によって行う。アクセスには、先ほど説明したように、バリアBS(100)の初期化(カウンタの初期化を含む)、同じジョブステップWでブロックBがジョブを終了するたびにバリアBS(100)に情報を与えること、すべてのプロセスPが実行中のジョブステップWのブロックBを終了したかどうかを確認することなどが含まれる。これらの関数を実行するように設計されているプログラム自体も、特に関数ライブラリを呼び出すことによってRAMで動作する。
アドレス空間は、独立したセグメントに区分することができる。セグメントとは一般に、次の2つの値によって定義されるメモリセグメントのことである。
− このセグメントが始まるアドレス(基本アドレス)、および
− セグメントのサイズ。
したがって、1つのセグメントが1つの(物理的または仮想の)主メモリに連続したアドレス範囲を構成する。
図2は、複数のプロセッサPZ〜PZ(200)と、メモリへのアクセスマネージャCACHE COHER MGR(206)と、ソフトウェアの性質を持つバリアBS(100)のあるプログラム領域を含むRAMメモリ(202)とを有するコンピューティングデバイスを示す。よって図2のデバイスは、マルチプロセスを処理することができる処理ユニットを有する。プロセスは、さまざまなプロセッサ、プロセッサのさまざまなコア(cores)、および/または実行スレッド(threads)で実行される。処理ユニットは、これらのプロセッサに「アドレス空間」と呼ばれるものを与え、特にRAMに対して与える。このアドレス空間には、特定のアドレスADRに関連する領域にソフトウェアによるバリアBS(100)を定義するコードおよびデータがあり、このアドレスは、この領域の最初のアドレスとすることができる。図2のデバイスはこのほか、タスクTをn個のプロセスPに分解するためであって、このプロセスP自体も一連のブロックBに分割される上に定義したようなタイプのプロセス(208)のマネージャを有する。
先行技術のバリア(図2)によってさまざまなプロセスP間の同期を実現することができる。しかし、すでに述べたように、バリアがソフトウェア性質であることによって特定の要求に対して同期の実現が遅くなってしまう。実際に、1つのプロセスPがこのバリアと相互に作用するたびに、バリアBS(100)の関数ライブラリが要求される。さらに、ライブラリの中では、バリアを更新するデータを読み取って書き込むためにメモリとの数々の相互作用が必要とされ、これはすべてのプロセスが集まるポイント(「バリア」)に到達するのを検知するまで続く。次に、いったんプロセスPがバリアBS(100)に通知すると、プロセスPはほかの実行中のブロックBがジョブを終了したかどうかを知るためにバリアBS(100)に定期的に問い合わせる必要がある。
以上のことすべて、とりわけ上に挙げた数々の相互作用によって、ソフトウェアの性質を持つバリアBS(100)が遅くなり、伝送帯の消費量が多くなる。これによってクロックサイクルが失われることになり、さらに迅速にするためにマルチプロセスモードを使用することはなお困難になる。
さらに、それぞれが異なるプロセスに属するさまざまなブロックが同時にバリアに通知するということが生じるおそれがあり、そこからメモリアクセスの競合によって待ち時間および伝送帯の新たな問題が生じる(CACHE COHER MGRによる競合の管理)。
本発明は、この状況を改善するものである。
そのために、本発明は、バリアを有するコンピューティングデバイスであって、メモリと、さまざまなプロセッサでマルチプロセスを処理することができ、プロセスによるブロックの並列実行を可能にする処理ユニットであって、前記ブロックが一連のジョブステップグループに関連する処理ユニットと、メモリに対して使用可能なアドレス空間を有するハードウェア回路であって、実行中のブロックの実行が完了したことを示す各プロセスからの呼び出しを受信することができ、各呼び出しがデータを含むハードウェア回路とを有するコンピューティングデバイスにおいて、前記ハードウェア回路が、実行中のジョブステップのブロック全体が実行されたときに、そのあとのジョブステップのブロックの実行を許可するように配置され、各呼び出しの前記データから引き出されるセグメントによってアドレス空間にアクセスするコンピューティングデバイスを紹介するものである。
一実施形態では、デバイスのハードウェア回路は、少なくとも1つの呼び出しのデータから引き出した処理を実行するためのマイクロプログラムを有する。この場合、この処理は特に、すべてのプロセスが実行中のジョブステップのブロックの実行が完了したことを表示したのを示す完了条件を確認するまで、各呼び出しへの応答を保留する段階を含んでもよい。完了条件が確認されると、つまりすべてのプロセスが実行中のジョブステップのブロックの実行が完了したことを表示したとき、ハードウェア回路はデータを出力することによって各呼び出しに応答することができ、プロセスに対してそのあとのジョブステップに移ることを許可する。
別の実施形態では、上述の処理は、最初の呼び出しからプロセス数を抽出したのち、完了条件を確認するまでほかの呼び出しからこの数を逆算する工程を含む。各呼び出しはこのプロセス数を示すことができることがわかる。
同じく、本発明は、プロセス階層での情報処理方法であって、
a.1つのタスクを一連のブロックからなるプロセスとして実行されるサブタスクに分解するステップと、
b.バリアの物理マネージャに、プロセス数に関係するカウンタを備えるバリアを設定するステップと、
c.各プロセスに、最初のブロックを実行中のブロックと定義してこれを実行するとともに、実行中のこのブロックの実行が終了した際に前記カウンタをデクリメントするために前記バリアにアクセスするステップと、
d.実行中のブロックの実行が終了した各プロセスで前記バリアからの応答を待つステップであって、現在のブロックすべてが実行されていることをカウンタが示すと、この応答がカウンタに直接つながって発信されるステップと、
e.現在のブロックすべてが実行されているときに、実行中のブロックを各プロセスの次のブロックに基づいて再度定義し、これらの新たな実行中のブロックでステップcおよびdを繰り返すステップ
とを含むタイプの情報処理方法を紹介するものである。
本発明のその他の特徴および利点は、以下の説明および添付の図面を検証すれば明らかになるだろう。
バリア機構の一般的動作を示す時間的なブロック図である。 先行技術のソフトウェアのバリアを実装する原理を示す図である。 メモリおよびさまざまなプロセッサでマルチプロセスを処理することができる処理ユニットを有するコンピューティングデバイスと、バリアマネージャを形成するハードウェア回路とを示す図である。 専用メモリおよびマイクロプログラムを有するバリアマネージャを形成するハードウェア回路を示す図である。 本発明の一実施形態によるバリアの自動化を示す図である。 本発明の一実施形態による演算原理のフローチャートである。
図面および以下の説明文は本質的に、確実性の要素を含む。そのため、この要素は本発明をさらによく理解する一助となるだけでなく、必要であれば本発明の定義にも寄与するものである。
出願者は、前述した先行技術の問題を解決するに至り、物理バリア、すなわちハードウェアによるバリアを提供する。次に、図3を参照しながらこのバリアについて説明する。図3は、このような物理バリア、すなわちハードウェアによるバリアを示している。このように、図3のコンピューティングデバイスは、RAMメモリ(202)と、さまざまなプロセッサPZ〜PZ(200)でマルチプロセスを処理することができる処理ユニットと、前記RAMメモリ(202)とプロセッサPZ(200)との間にあるメモリへのアクセスマネージャCOHER CACHE MGR(206)とを有する。
ここに記載する実施形態では、デバイスはこのほかに、バリアマネージャHBM(400)を形成するハードウェア回路を有し、このマネージャは、専用メモリDed_MEM(404)および図4に示すようなマイクロプログラムmicro−Prog(402)を有する。この段階では、マネージャHBM(400)はデータの出力部「D(unidir、一方向)」を1つしか必要としない。実際には、これは特に接続されるバスとの互換性(読み取り/書き込み、R/W)を理由とする1つの入出力部のことである。
記載する実施形態では、アドレスとデータとのハードウェア回路(HBM、400)へのリンクは、メモリへのアクセスマネージャCOHER CACHE MGR(206)を回避している。
一般に、バリアマネージャHBM(400)は、バリアBS(100)に参加するプロセスPと直接相互に作用する。相互に作用したのち、専用メモリDed_MEM(404)にデータを格納することができる。
バリアマネージャHBM(400)は、たとえばチップセット(chipsetまたはその他)内のプロセッサ、または図3に示すようにハードウェア回路などの補足的コンポーネントの中に見られる。マネージャHBM(400)は、バリアBS(100)に参加してこのマネージャを標的とするプロセスPに属するあらゆるトランザクションに対してアクセス可能である必要がある。したがって、マネージャHBM(400)は、そのメモリ空間を標的とするあらゆる要求からアクセスされたり呼び出されたりすることができる。これは、多数のアドレスが同じバリアBS(100)を標的とすることができるのと同じである(アドレス・エイリアシング(address aliasing))。
換言すると、バリアBS(100)に対して要求を発信する各プロセスPは、
− この要求の重みの大きい部分に、バリアのアドレスを持ち、
− 重みの小さい部分に、追加データを持つ。
当然のことだが、これよりも重みの大きいまたは小さい部分(選択した重み)に、前述した情報(アドレスおよびデータ)の位置設定を自由に編成することができる。このように、要求のうちの重みの大きい部分は前記追加データを持ち、重みの小さい部分はバリアのアドレスを持つ。
追加データの例には、バリアBS(100)に参加するプロセスPの数を挙げることができる。プロセスPはそれぞれ、同期に必要な情報を連絡して1つの同じバリアBS(100)を標的とすることができる。これらの情報は、専用メモリDed_MEM(404)内のマイクロプログラムmicro−Prog(402)に格納したのちに、バリアマネージャHBM(400)のマイクロプログラムmicro−Prog(402)によって処理することができる。
この原理を適用して、バリアマネージャHBM(400)は、複数のバリアBS(100)を同時に管理することができる。特定の適用ではこの可能性が大きくなる。
次に、同期するために物理バリアを使用するn個のプロセスPのグループを検討する。第1のステップでは、バリアBS(100)は初期状態にあり、n個のプロセスPのうちのいずれもバリアにアクセスしていない。プロセスPは第1のジョブステップWにあり、それぞれが第1のブロックBを実行する(図1を参照)。上に説明したものとほぼ同じように、ブロックBを終了した第1のプロセスPは、要求によってバリアBS(100)に通知する。この要求は重みの小さい部分に、バリアに参加するプロセスPの数nを有し、このバリアは、第1の要求を受信するとバリアBS(100)のカウンタCNT(406)を始動させることができる。バリアBS(100)が作動モード(または状態)に移るのは、この第1の要求を受信するときである。そこから、要求がバリアBS(100)を標的とするたびに、バリアマネージャHBM(400)はカウンタCNT(406)をデクリメントする(逆算)。バリアマネージャHBM(400)がバリアBS(100)に参加するn個のプロセスPから発行される要求をすべて受信したときのみ、データDからの要求に応答する。このときに、同期が有効とみなされる。そのためプロセスPの集合は、次のジョブステップWに移ることを許可される。
ブロックがいったん終了すると、それに対応するプロセスはジョブステップWの進行を決定するのにバリアBSに1度しか問い合わせないことがわかる。これは、バリアBSがメモリDed_MEM(404)自体のスペースに、すでに受信した要求数を格納することができるためである。各プロセスは、バリアBSからの応答を受信するまで待ち状態となる。したがって、バリアにプロセスに関して(定期的にまたは不定期に)何度も問い合わせる必要はない。さらに、各問い合わせは、伝送帯の観点からすればそれほどコストはかからない。これは、本発明によって得られる伝送帯に関する利点によるものである。
ついでにここで、ブロックBの実行時間tは必ずしもこのブロックのバリアBSへの到達と関連している必要はないことに気づく。実際に、通信路がスケジューリングされていないために起こる競合または調停の競争上の理由から、第1の要求よりもあとに発信された第2の要求が前記第1の要求よりも先にバリアBSに到達することができる。しかしながら、これは本発明によるバリアの動作を何ら変更するものではない。簡略化のため、本明細書では、第2のプロセスよりも実行時間tが短い第1のプロセスから発信された要求が、第2のプロセスから発信された要求よりも先にバリアBSに到達すると考える。
本発明の一実施形態では、バリアBS(100)のメモリ空間は、コンピュータのPCIバス専用のメモリ空間に実装される。
この例では、「要求」と呼んでいるものがPCIバスのメモリ空間のアドレスとともにプロセッサのインストラクション「ロード(load)」からくる。この要求は、バスシステムに関するメッセージである。このメモリ空間によって、プロセスPおよび/または要求とバリアBS(100)との間の迅速な相互作用が可能になる。
複数のバリアが要求された場合、バリアマネージャが、たとえばメモリページなどのメモリセグメントと関連のあるこれらのバリアを管理することが有利となることがある。この複数のバリアを同じ1つの回路または異なる回路に接続することができる。
このように、PCIメモリは、バリア同士の間で保護されたアクセスを提供することができるとともに、各バリアに対して所定サイズのメモリページを設定するのに十分な空間を提供する。
たとえば、64KB(キロバイト)のページには、1つの要求(呼び出し)の16の重みの小さい部分(ビット)を使用してデータ(特にADR)を伝送することができる。したがって、バリアマネージャHBM(400)は、M×64KBページを収容することができ、ここでのMはバリアHBMのマネージャ(400)に実装される物理バリアBS(100)の数である。Mは特に512とすることができ、これは合計32MB(メガバイト)のメモリ空間に及ぶ。この32MBはもちろん仮想タイプのメモリに相当するため、「実際の」MBとして考えるものではないが、同期するアプリケーションからは単純にそのようなものとして見られる。以下の表は、メモリにアクセスするのに使用することができる要求の構成例を示す(R[J..I]=I〜Jの要求のビット)。この要求は特に、バリアBS(100)のアドレスと、実行中のコマンド(これについては後述する)と、1つまたは複数の階層(以下に詳述)での同期の場合は指示と、同期およびバリアに参加するプロセス数とを含む。
ビットR[8]では、値0または1はそれぞれ1つの階層での同期および2つの階層での同期に相当する。上位の同期階層については以下の実施例で詳述する。
図5は、同期マネージャHBM(400)の実施例に関し、上位の階層の同期、さらに正確にはここでは2つの階層での同期を管理することができる。プロセスPの複数の異なるグループが同期する必要があり、それぞれのグループが1つの物理(またはハードウェアの)バリアBS(100)を有するとき、2つの階層での同期を使用することができる。この場合、同期マネージャHBM(400)は、各グループが単独で同期する必要がある場合に管理する必要があり、グループ全体はこのグループ間で同期する必要がある。
準備完了状態PREにあるバリアBS(100)が受信した第1の要求は、1つの階層で同期するのか2つの階層で同期するのかを示す情報を重みの小さい部分に含んでいる。1つの階層で同期する場合、この同期は1つの階層のバリアで管理されるか、さらに正確には1つの階層(状態ACT_1_N)用に設計されたバリアの作動状態ACTによって管理される。逆に2つの階層で同期する場合は、同じこのバリアは2つの階層(状態ACT_2_N)用に設計された作動状態ACTとなり、この場合この動きは次のようになる。
すべての要求がバリアBS(100)に受信された場合、このバリアは、バリアBS(100)に参加するすべてのプロセスPの中からマスターMとしてプロセスPのうちの1つを選択する。はじめに、マスターMの要求のみが、それがグループのマスターであることを示す特別なデータDによって応答を受ける。それを基にマスターは、同期の第2階層を自由に完了することができる。この同期の第2階層は、たとえばソフトウェアの性質を持つバリアBS(100)とすることができる。マスターMはこの同期の第2階層を終了すると、バリアBS(100)に最後の要求を伝送する。この最後の要求への応答には、バリアはバリアBS(100)に参加するほかの(マスターMを含む)プロセスPから発行されるすべての要求に応答し、準備完了状態PREに戻る。マスターMは動態で、各同期で再定義される。
図5に示すバリアのさまざまな自動性状態は以下のとおりである。
− スタンバイ状態INACT、
− 準備完了状態PRE、
− 1つの階層で同期する作動状態ACT_1_N、
− 2つの階層で同期する作動状態ACT_2_N、
− 同期状態SYNC、
− 取り消し状態ANN。
各状態について以下に説明する。
INACT
物理バリアは、スタンバイ状態で作動していない。唯一可能性のある移行は、移行T0である。この移行は、バリアを作動させるためのいわゆるPREPA(コマンド=PREPAという準備完了状態PREにするコマンドを含む要求をバリアが受信することに相当する。バリアは準備完了状態PREに移る。
PRE
物理バリアは、バリアに参加するプロセスの要求を受信する準備ができている状態である。
記載した実施形態によれば、3つの移行が起こる可能性がある。T1、T2またはT13である。要求に従って、バリアは実行すべき移行を選択する。
移行T1:この移行は、バリアを初期化するための記録コマンドENREGISTRER(コマンド=ENREGISTRER)を含む要求をバリアが受信することに相当する。この要求は重みの小さい部分に、1つの階層のみで同期する(SYNC_1_N)必要があるという情報を含んでいる。そのためバリアは作動し、1つの階層で同期する作動状態ACT_1_Nとなる。
移行T2:T1と同じように、この移行は、バリアを初期化するための記録コマンドENREGISTRERを含む要求をバリアが受信することに相当する。ただし、この要求は重みの小さい部分に、2つの階層で同期する(SYNC_2_N)必要があるという情報を含んでいる。バリアは作動して2つの階層で同期する作動状態ACT_2_Nに移る。
移行T13:この移行は、バリアを作動させずにスタンバイ状態INACT(上記を参照)に移るための切断コマンドETEINDRE(コマンド=ETEINDRE)を含む要求のバリアの受信に相当する。
ACT_1_N
バリアは1つの階層のみで同期を実行する。この状態からの移行は複数存在する。
移行T3:この移行は、バリアBS(100)が記録コマンドENREGISTRER(コマンド=ENREGISTRER)を含むn個のプロセスPの要求を受信するたびに起こり、これは所定のタイムリミットとなる前に起こる(詳細は後述)。内部カウンタCNT(406)はT3(CNT>閾値)に移行するたびにデクリメントされる。T3は、同じジョブステップWで現在のブロックBが終了するたびに起こる移行に概ね相当する。ブロックBは、現在のブロックBがすべて実行されたことをカウンタCNT(406)が示すまで(CNT=閾値)、バリアBS(100)の階層で「蓄積される」(T3)。移行T4:この移行は、現在のブロックBがすべて実行されたことをカウンタCNT(406)が示すと起こる。バリアは最後の記録コマンドENREGISTRER(コマンド=ENREGISTRER)を受信し、カウンタは閾値(CNT=閾値)までデクリメントされる。バリアBS(100)に参加するプロセスPから発行される要求に応答する。この応答は、同期が成功したことを示すものである。バリアBS(100)は準備完了状態PREに戻る。
移行T5:カウンタは、所定のタイムリミットとなる前に閾値に達していなければならない。タイムリミットの閾値をどのように決定するかはさまざまであり、適用例によって決定する。この所定のタイムリミットを超えると、移行T5により同期が取り消される。オプションとして、たとえばエラーメッセージを返すか、タイムリミットの延長を命令する。タイムリミットは、時間の単位で(たとえばμs)逆算することができるタイマー(「時系列カウンタ」)を備える制御ユニットにあらかじめ登録することができる。
移行T14:この移行は、バリアを作動させずにスタンバイ状態INACTに移るための切断コマンドおよびEINDRE(コマンド=およびEINDRE)を含む要求のバリアの受信に相当する。
ACT_2_N
バリアは、2つの階層で同期を実行する。この状態からの移行は複数存在する。
移行T6:移行T3と同様(上記を参照)。
移行T7:はじめは移行T7はT4と同じである。実際にT7は、現在のブロックBがすべて実行されたことをカウンタCNT(406)が示すと起こる。バリアは最後の記録コマンドENREGISTRER(コマンド=ENREGISTRER)を受信し、カウンタはさらにデクリメントされて閾値(CNT=閾値)に達する。移行T4とは異なり、ここではプロセスPから発行される全要求には応答せずに、そのうちの1つのみに応答する。この応答は、プロセスPのうちのいずれか任意のものをマスターMとして選ぶことである。そのため、バリアは同期状態SYNCへと進む(詳細は後述)。T7では、所定のタイムリミットは再び初期化される。
移行T8:移行T5と同様(上記を参照)。
移行T15:移行T13と同様(上記を参照)。
SYNC
以下の3つの移行が起こり得る。
移行T9:マスターMは、所定のタイムリミット(CNT=閾値)になる前に記録コマンドENREGISTRER(コマンド=ENREGISTRER)を含む要求を受信する。プロセスP全体に応答する。この応答は、同期の成立を示すものである。バリアBS(100)は準備完了状態PREに戻る。
移行T10:移行T5と同様(上記を参照)。
移行T16:移行T13と同様(上記を参照)。
ANN
同期を完了させるための最適時間(許容できる最長時間)を設定するため、バリアBS(100)は時系列カウンタとも呼ばれるタイマーを備えている。このタイマーは環境設定が可能で、タイムリミットを記述することができる。タイマーは、最初の要求を受信すると逆算を開始する(単位は通常μs)。すると時間が流れ出す。最後の要求がバリアBS(100)に受信される前に所定のタイムリミットを超えると、このバリアは取り消し状態ANNに移行する。
タイムリミットはバリアによって異なり、さらに正確にはバリアのさまざまな状態、特にACT_1_N、ACT_2_N、SYNCによって変化する。
換言すると、バリアBS(100)が取り消し状態ANNになったとすれば、それは前の状態ですべての要求を受信する前にタイムリミットを超えたことが原因である。よって、バリアは同期のエラーメッセージによってすでに受信した要求に対して応答する。
実際には、このタイムリミットはプログラムすることができる。特にプロセッサの「タイムアウト」と競合しないように、背景に応じてこれよりも長いリミットを設定してもよい。
取り消し状態ANNには次の3つの移行がある。
移行T11:記録コマンドENREGISTRER”(コマンド=ENREGISTRER)を含む要求が受信される。この場合、上に記載したようなエラーメッセージによって要求に対して応答する。
移行T12:準備完了状態PRE(コマンド=PREPA)に戻ることを示すコマンドを含む要求を受信する。バリアは準備完了状態PRE(上記を参照)に戻る。これによって、たとえばプロセス(P)全体が以前のジョブステップ(W)の実行終了時に遡る。
移行T17:移行T13と同様(上記を参照)。
図6のフローチャートは、本発明の実施形態によるバリアBSの主な演算を再度説明するものである。このフローチャートは、準備完了状態PRE(演算700)にあるバリアBS(100)を示す。ブロックBを終了した第1のプロセスPは、(呼び出しによって)マネージャHBM(400)(演算702)を標的とする要求でバリアBS(100)に通知する。要求は同期の階層に関する情報を含んでいる(たとえばACT_1_NまたはACT_2_Nにはコマンド=ENREGISRTER)。カウンタCNT(406)は初期化され(通常はn=プロセスPの数に初期化)、バリアBS(100)は前記第1のプロセスPに対応する識別子SVE_ID_Reqを格納するとともに、同期の階層に関する情報SVE_Nを格納する(演算704)。作動中のバリアBS(100)は、ほかのプロセスPからの次の呼び出しを待つ(演算706)。所定のタイムリミットを超えるか、バリアBS(100)が切断コマンド(コマンド=およびEINDRE)を含む要求を受信すると(演算714)、どちらの場合もバリアは取り消し状態ANNまたはスタンバイ状態INACTへと移る(演算716)。ただし、別のプロセスPがバリアに実行中のブロックが終了したことを通知すると(タイムリミットt_Limを超えることもコマンド=およびEINDREもなしに)、カウンタCNT(406)はデクリメントされる(演算708、m=ジョブステップWが実行中でブロックBがまだ終了していないプロセス数)。デクリメントと同じく、バリアは、最後にバリアBS(100)に通知したプロセスPに対応する識別子SVE_ID_Reqを格納する(演算708)。次にバリアBS(100)は、カウンタCNT(406)が閾値に達したかどうかを確認する(演算710および712)。達していなければ(演算710;CNT>0)、バリアは待ち状態に戻る(演算706)。達していれば(演算712;CNT=0)、バリアは同期するために先に進む(設定階層に応じて演算704)。1つの階層に設定された同期ののち(演算720;ACT_1_N)、バリアは、たとえば次のジョブステップWに進めるコマンドを含むデータDによって各プロセスPに応答する(演算740)。同期の階層が2つの階層に設定されているとき(演算730;ACT_1_N)、つまりたとえばプロセスPの複数のグループに対して設定されているとき(上記を参照)、バリアBS(100)は、実行中のプロセスPの中から1つのマスターMを選び(演算732;CH_M)、データDで応答する(演算740)前に、第2の同期を実行する(演算734;SYNC)。同期は、準備完了状態PRE(コマンド=PREPA)に戻るか、バリアが作動しなくなった時点(コマンド=およびEINDRE)で終了となる(演算750)。
当然ながら、本発明はこれまでに記載した実施形態に限定されるものではなく、添付の特許請求の範囲内で当業者が検討し得るあらゆる実施形態を含むものである。
したがって、記載した実施形態では、プロセスを同期するのにバリアBSを1つのみ使用する。コンピュータシステムに複数のバリアBSを搭載すると有用となり、特にプロセスの各グループが別々のタスクの実行を同時に行うような複数のグループを同期するのに有用となる。たとえば、コアが16個のマシンでの科学技術計算では、コアを各8個ずつ使用する独立した2つの計算を検討することができるため、8つのプロセスが2グループとなり、各プロセスが別々のコアで実行される。この例では2つのバリアが必要となる。
複数のバリアBSを使用すると、これらのバリアは当然ながら同じ1つのコンポーネントまたは複数の異なるコンポーネントに実装される。実際に、デバイスは複数のハードウェア回路を有することができ、各呼び出しの前記データから引き出されたセグメントによってアドレス空間にアクセスする。この場合、それぞれのハードウェア回路が1つの同じ回路に接続されるか、別の回路に接続されるように設定することができる。
また、ソフトウェアタイプのバリアと本発明によるバリアであるハードウェア回路とを混合させたものを容易に考案できることがわかる。ここに記載したコンピューティングデバイスはこのほかに、ソフトウェアによるバリアを有して前記ハードウェア回路と併用して演算することもできる。

Claims (14)

  1. バリアを有するコンピューティングデバイスであって、
    − メモリ(RAM、202)と、
    − さまざまなプロセッサ(PZ、200)でマルチプロセスを処理することができ、プロセス(P)によるブロック(B)の並列実行を可能にする処理ユニットであって、前記ブロック(B)が一連のジョブステップ(W)のグループに関連する処理ユニットと、
    −1つのバスによって前記処理ユニットの前記プロセッサ(PZ、200)と接続された1つのハードウェア回路(HBM、400)によって実行されるバリアと、を有するコンピューティングデバイスであって、
    前記ハードウェア回路(HBM、400)は、前記バス専用とされた、使用可能なアドレス空間内に1つのアドレスを有し、実行中のブロック(B)の実行が完了したことを示す各プロセス(P)からの呼び出しを受信することができ、各呼び出しが、前記バスを介して送信される読み取り/書き込み命令に対応し、および、データを含み、前記ハードウェア回路(HBM、400)が、実行中のジョブステップ(W)のブロック(B)全体が実行されたときに、そのあとのジョブステップのブロック(B)の実行を許可するように配置され、各呼び出しの前記データから引き出されるセグメントによってアドレス空間にアクセスし、前記各呼び出しの前記データは、使用可能なアドレス空間における前記ハードウェア回路のアドレスを含むことを特徴とするコンピューティングデバイス。
  2. 前記ハードウェア回路は、少なくとも1つの呼び出しのデータから引き出した処理を実行するためのマイクロプログラム(micro−Prog、402)を有する、請求項1に記載のコンピューティングデバイス。
  3. 前記処理は、すべてのプロセス(P)が実行中のジョブステップ(W)のブロック(B)の実行が完了したことを表示したのを示す完了条件を確認するまで、各呼び出しへの応答を保留する段階を含む、請求項2に記載のコンピューティングデバイス。
  4. すべてのプロセスが実行中のジョブステップ(W)のブロック(B)の実行が完了したことを表示したとき、ハードウェア回路(HBM、400)はデータ(D)の出力部から各呼び出しに応答するように配置され、プロセス(P)に対してそのあとのジョブステップ(W)に移ることを許可する、請求項2または3に記載のコンピューティングデバイス。
  5. 前記処理は、最初の呼び出しからプロセス数を抽出したのち、前記完了条件を確認するまでほかの呼び出しから前記数を逆算する工程を含む、請求項に記載のコンピューティングデバイス。
  6. 各呼び出しは、前記プロセス数を示す、請求項5に記載のコンピューティングデバイス。
  7. 呼び出しの集合は、各呼び出しのデータによって定義される同じタイプ(ENREGISRTER)のものである、請求項2から6のいずれか一項に記載のコンピューティングデバイス。
  8. 前記コンピューティングデバイスは、複数のハードウェア回路を有することができ、各呼び出しの前記データから引き出されたセグメントによってアドレス空間にアクセスする、請求項1〜7のいずれか一項に記載のコンピューティングデバイス。
  9. 前記ハードウェア回路のそれぞれが同じ1つの回路に接続される、請求項8に記載のコンピューティングデバイス。
  10. 前記ハードウェア回路のそれぞれが別の回路に接続される、請求項8に記載のコンピューティングデバイス。
  11. 前記コンピューティングデバイスはさらに、ソフトウェアによるバリアを有して前記ハードウェア回路と併用して演算する、請求項1〜10のいずれか一項に記載のコンピューティングデバイス。
  12. 前記コンピューティングデバイスはさらに、前記メモリ(RAM、202)と、前記処理ユニットの前記プロセッサ(PZ、200)との間に、メモリへのアクセスマネージャ(CACHE COHER MGR、206)を有し、前記ハードウェア回路(HBM、400)に対する、前記プロセッサ(PZ、200)からの呼び出しは直接行われ、前記マネージャのメモリへのアクセスを回避する、請求項1〜11のいずれか一項に記載のコンピューティングデバイス。
  13. 前記コンピューティングデバイスはさらに、前記マイクロプログラム(micro−Prog、402)と接続する専用メモリ(Ded_MEM、404)を有する、請求項2からのいずれか一項に記載のコンピューティングデバイス。
  14. プロセス階層での情報処理方法であって、
    a.1つのタスク(T)を一連のブロック(B)からなるプロセス(P)として、処理ユニットのさまざまなプロセッサ(PZ、200)よって実行されるサブタスクに分解するステップと、
    b.1つのバスによって前記処理ユニットの前記プロセッサ(PZ、200)と接続された1つのハードウェア回路(HBM、400)によって実行される物理バリアマネージャ(HBM、400)に、プロセス(P)の数に関係するカウンタ(CNT、406)を備えるバリア(BS、100)を設定するステップであって、前記ハードウェア回路(HBM、400)は、前記バス専用とされた、使用可能なアドレス空間内に1つのアドレスを有している、バリア(BS、100)を設定するステップと、
    c.各プロセス(P)に、最初のブロック(B)を実行中のブロックと定義してこれを実行するとともに、実行中のこのブロック(B)の実行が終了した際に前記カウンタ(CNT、406)をデクリメントするために前記バリア(BS、100)にアクセスするステップであって、各プロセス(P)から前記バリアへのアクセスは、呼び出しを用いて実施され、各呼び出しが、前記バスを介して送信される読み取り/書き込み命令に対応し、および、データを含み、前記各呼び出しの前記データは、使用可能なアドレス空間における前記ハードウェア回路のアドレスを含む、前記バリア(BS、100)にアクセスするステップと、
    d.実行中のブロック(B)の実行が終了した各プロセス(P)で前記バリア(BS、100)からの応答を待つステップであって、現在のブロック(B)すべてが実行されていることをカウンタが示すと、この応答がカウンタ(CNT、406)に直接つながって発信されるステップと、
    e.現在のブロック(B)すべてが実行されているときに、実行中のブロック(B)を各プロセス(P)の次のブロックに基づいて再度定義し、これらの新たな実行中のブロック(B)でステップcおよびdを繰り返すステップ
    とを含むタイプの情報処理方法。
JP2011540156A 2008-12-16 2009-11-27 マルチプロセス間のバリアの物理マネージャ Expired - Fee Related JP5626690B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0807089A FR2939922B1 (fr) 2008-12-16 2008-12-16 Gestionnaire physique de barriere de synchronisation entre processus multiples
FR0807089 2008-12-16
PCT/FR2009/052322 WO2010070222A1 (fr) 2008-12-16 2009-11-27 Gestionnaire physique de barriere de synchronisation entre processus multiples

Publications (2)

Publication Number Publication Date
JP2012512452A JP2012512452A (ja) 2012-05-31
JP5626690B2 true JP5626690B2 (ja) 2014-11-19

Family

ID=40785419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011540156A Expired - Fee Related JP5626690B2 (ja) 2008-12-16 2009-11-27 マルチプロセス間のバリアの物理マネージャ

Country Status (7)

Country Link
US (1) US9218222B2 (ja)
EP (1) EP2366147B1 (ja)
JP (1) JP5626690B2 (ja)
BR (1) BRPI0917747A2 (ja)
ES (1) ES2689125T3 (ja)
FR (1) FR2939922B1 (ja)
WO (1) WO2010070222A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5568048B2 (ja) * 2011-04-04 2014-08-06 株式会社日立製作所 並列計算機システム、およびプログラム
US9195516B2 (en) 2011-12-01 2015-11-24 International Business Machines Corporation Determining collective barrier operation skew in a parallel computer
US9092272B2 (en) * 2011-12-08 2015-07-28 International Business Machines Corporation Preparing parallel tasks to use a synchronization register
US8924763B2 (en) * 2011-12-15 2014-12-30 International Business Machines Corporation Synchronizing compute node time bases in a parallel computer
JP5994601B2 (ja) * 2012-11-27 2016-09-21 富士通株式会社 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法
US20150033234A1 (en) * 2013-07-23 2015-01-29 Qualcomm Incorporated Providing queue barriers when unsupported by an i/o protocol or target device
US9501300B2 (en) * 2013-09-16 2016-11-22 General Electric Company Control system simulation system and method
WO2015163780A1 (en) * 2014-04-23 2015-10-29 Sciensys Sas Program parallelization on procedure level in multiprocessor systems with logically shared memory
US10318355B2 (en) * 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
US11353868B2 (en) * 2017-04-24 2022-06-07 Intel Corporation Barriers and synchronization for machine learning at autonomous machines
US10678925B2 (en) * 2017-06-26 2020-06-09 Microsoft Technology Licensing, Llc Data quarantine and recovery
JP7159696B2 (ja) * 2018-08-28 2022-10-25 富士通株式会社 情報処理装置,並列計算機システムおよび制御方法
US10824481B2 (en) * 2018-11-13 2020-11-03 International Business Machines Corporation Partial synchronization between compute tasks based on threshold specification in a computing system
US11409579B2 (en) * 2020-02-24 2022-08-09 Intel Corporation Multiple independent synchonization named barrier within a thread group
US11531565B2 (en) * 2020-05-08 2022-12-20 Intel Corporation Techniques to generate execution schedules from neural network computation graphs
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data
US11720360B2 (en) 2020-09-11 2023-08-08 Apple Inc. DSB operation with excluded region

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3482897B2 (ja) * 1999-01-20 2004-01-06 日本電気株式会社 クラスタ型並列計算機システムおよびプロセッサ間バリア同期方法
US6766437B1 (en) * 2000-02-28 2004-07-20 International Business Machines Corporation Composite uniprocessor
US7100021B1 (en) * 2001-10-16 2006-08-29 Cisco Technology, Inc. Barrier synchronization mechanism for processors of a systolic array
JP4448784B2 (ja) * 2005-03-15 2010-04-14 株式会社日立製作所 並列計算機の同期方法及びプログラム
US8645959B2 (en) * 2005-03-30 2014-02-04 Intel Corporaiton Method and apparatus for communication between two or more processing elements
US7865911B2 (en) * 2005-11-08 2011-01-04 Microsoft Corporation Hybrid programming
US7587555B2 (en) * 2005-11-10 2009-09-08 Hewlett-Packard Development Company, L.P. Program thread synchronization
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
TWI318750B (en) * 2006-09-22 2009-12-21 Nuvoton Technology Corp Software development methods, systems, and storage media storing software developed thereby
US20080109604A1 (en) * 2006-11-08 2008-05-08 Sicortex, Inc Systems and methods for remote direct memory access to processor caches for RDMA reads and writes
JP2008234074A (ja) * 2007-03-16 2008-10-02 Fujitsu Ltd キャッシュ装置

Also Published As

Publication number Publication date
ES2689125T3 (es) 2018-11-08
EP2366147B1 (fr) 2018-05-09
WO2010070222A1 (fr) 2010-06-24
US9218222B2 (en) 2015-12-22
US20110252264A1 (en) 2011-10-13
FR2939922A1 (fr) 2010-06-18
FR2939922B1 (fr) 2011-03-04
BRPI0917747A2 (pt) 2016-02-16
JP2012512452A (ja) 2012-05-31
EP2366147A1 (fr) 2011-09-21

Similar Documents

Publication Publication Date Title
JP5626690B2 (ja) マルチプロセス間のバリアの物理マネージャ
EP3073374B1 (en) Thread creation method, service request processing method and related device
EP2851807B1 (en) Method and system for supporting resource isolation under multi-core architecture
TWI273495B (en) Information processing device, process control method, and computer program
US20050097384A1 (en) Data processing system with fabric for sharing an I/O device between logical partitions
US8943294B2 (en) Software architecture for service of collective memory and method for providing service of collective memory using the same
US20110265093A1 (en) Computer System and Program Product
CN103297456A (zh) 一种分布式系统下共享资源的访问方法及分布式系统
WO2007084700A2 (en) System and method for thread handling in multithreaded parallel computing of nested threads
WO2011060366A2 (en) Distributed symmetric multiprocessing computing architecture
TW201413456A (zh) 處理巢狀串流事件的方法和系統
JP2002182976A (ja) マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化
JP2002117002A (ja) 共用型ペリフェラルアーキテクチャ
US10423467B2 (en) Data processing apparatus and method for performing lock-protected processing operations for multiple threads
EP2375324A2 (en) Virtualization apparatus for providing a transactional input/output interface
CN102081557A (zh) 云计算操作系统中资源管理方法及系统
US11366689B2 (en) Hardware for supporting OS driven observation and anticipation based on more granular, variable sized observation units
WO2012052775A1 (en) Data processing systems
JPH06161950A (ja) 複式バス・アーキテクチャを有する計算システムに使用するデータ伝送の管理方法。
US20100064073A1 (en) Input/output completion system and method for a data processing platform
CN108733585B (zh) 缓存系统及相关方法
EP3702911B1 (en) Hardware for supporting os driven load anticipation based on variable sized load units
JP4734348B2 (ja) 共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体
CN1333346C (zh) 一种访问文件的方法
JPH09146904A (ja) アドレス空間共有システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130501

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140108

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140801

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140919

R150 Certificate of patent or registration of utility model

Ref document number: 5626690

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

LAPS Cancellation because of no payment of annual fees