JPWO2003040948A1 - コンピュータ及び制御方法 - Google Patents
コンピュータ及び制御方法 Download PDFInfo
- Publication number
- JPWO2003040948A1 JPWO2003040948A1 JP2003542505A JP2003542505A JPWO2003040948A1 JP WO2003040948 A1 JPWO2003040948 A1 JP WO2003040948A1 JP 2003542505 A JP2003542505 A JP 2003542505A JP 2003542505 A JP2003542505 A JP 2003542505A JP WO2003040948 A1 JPWO2003040948 A1 JP WO2003040948A1
- Authority
- JP
- Japan
- Prior art keywords
- processor
- spin
- instruction
- spin wait
- detection unit
- 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
Links
- 238000000034 method Methods 0.000 title claims description 53
- 230000008859 change Effects 0.000 claims abstract description 102
- 238000001514 detection method Methods 0.000 claims abstract description 100
- 230000015654 memory Effects 0.000 claims abstract description 73
- 238000012544 monitoring process Methods 0.000 claims abstract description 33
- 230000006870 function Effects 0.000 claims description 5
- 230000007423 decrease Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 29
- 230000008569 process Effects 0.000 description 15
- 230000004888 barrier function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000012795 verification Methods 0.000 description 7
- 238000013468 resource allocation Methods 0.000 description 5
- 239000002699 waste material Substances 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30083—Power or thermal control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本発明は、キャッシュメモリを備えた複数のプロセッサを有する共有メモリ型マルチプロセッサ構成のコンピュータ及び制御方法に関し、特に、同期処理などに用いられるスピンウェイト命令の命令実行効率を改善するためのコンピュータ及び制御方法に関する。
背景技術
従来、キャッシュメモリを備えた複数のプロセッサでメインメモリを共有する共有メモリ型マルチプロセッサシステムにおいては、プロセッサ間の同期処理にスピンウェイトが用いられることが多い。
このプロセッサ間の同期処理にスピンウェイトを使用する代表的な例がスピンロックである。スピンロックの命令処理は図1のように、検証部100と設定部102の手順で実現されることが多い。検証部100は、ロック獲得ポイントに達したプロセス又はスレッドがステップS1で変数Xをロードし、ステップS2で変数Xが例えばX=0といったロック獲得が可能であることを示す値か否か判定し、X=0になるまでステップS1,S2の処理を繰り返すスピンを行って待つスピンウェイトを行う。設定部102は、「test_and_set」や「compare_and_jump」などのインターロック命令を用いて、ステップS3でロック変数値XをX=1に設定してスピンロック処理を抜ける。もしロック変数値X=1の設定に失敗したら検証部100に戻りスピンウェイトを継続する。このように、ロック獲得が可能であるかどうかをチェックするスピンロックの検証部100でスピンウェイトが用いられることが多い。
スピンロック以外では、共有メモリ型マルチプロセッサシステムにおけるプロセッサ間の同期処理にスピンウェイトを使用するバリア同期がある。バリア同期とは、同期対象であるプロセス又はスレッドが同期ポイントで待ち合わせを行うことであり、メモリベースのバリア同期の場合には、図2の手順で実現されることが多い。まず設定部104のステップS1において、プロセス又はスレッドが同期ポイントに達する前はロック変数XはX=0である。同期ポイントに達するとプロセス又はスレッドは、「test_and_set」や「compare_and_jump」などのインターロック命令を用いて該当するプロセス又はスレッドに対応するロック変数Xのビットを1に設定し、検証部106に進む。検証部106は、ステップS2でロック変数Xをロードし、ステップS3でバリア同期の対象となっている全プロセス又は全スレッドのビットが1になるまで、即ちall X=1までスピンして待つスピンウェイトを行う。全プロセス又は全スレッドが同期ポイントに達すると、all X=1になり、同期がとられた状態でスピンウェイトを抜けて次の処理に移行する。このようにバリア同期でも、全プロセス又は全スレッドが同期ポイントに達しているかどうかをチェックする検証部106でスピンウェイトが用いられることが多い。
また、I/Oデバイス(入出力デバイス)との同期にもスピンウェイトが使用されている。通常のI/O処理では、プロセッサとI/Oデバイス間の同期には割り込みを使うのが一般的であった。これは、I/Oデバイスがプロセッサと比べて非常に遅く、I/Oデバイスからの応答をプロセッサが待ち続けることの損失が大きかったためである。しかし、I/Oデバイスの高速化により、一部のI/Oデバイスにおいては割り込みを使うことによる弊害が出てきている。一般的に割り込みはオーバーヘッド(遅延)が大きいので、I/Oデバイス本来の速度を活かせない。そのため、一部の高速I/Oデバイスに関しては、スピンウェイトによる同期処理を採用し始めている。
しかしながら、スピンウェイトの実行には無駄が多い。スピンウェイトは、ウェイト終了条件となっている変数値が他のプロセッサやI/Oデバイスなどの他のエージェントにより所望の値に変更されるまで延々と同じ命令列の実行を繰り返す。繰り返しの回数となるスピン回数は、場合によっては数百回、数千回に及ぶこともめずらしくなく、ある意味でプロセッサを無駄に使用しているといえる。電力消費の観点から考えると、スピンウェイトのあいだは無駄に電力を消費していることになる。
また、複数スレッドの同時実行が可能なSMT(Simultaneous Multi−Threadingarchitecture)プロセッサにおいては、スピンウェイトを実行中のスレッドが他の実行スレッドの妨げとなる可能性がある。一般的にSMTプロセッサでは、プロセッサリソースはスレッド間で共有されている。このプロセッサリソースは、実行スレッド毎に均等に割当てられるのではなく、各スレッドの状態に応じて割当てられるプロセッサリソースの数や量が変わるというのが一般的である。プロセッサリソース割当てを決定する基準にはいろいろな方法が提案されているが、例えば次のようなアプローチがある。
(1)キャッシュミスを起こしたスレッドへのリソース割当てを減らす;
(2)投機的に実行している命令数が多いスレッドへのリソース割当てを減らする;
(3)リザベーションステーションに登録されている命令数の多いスレッドへのリソース割当てを減らす;
これらのアプローチは、よりスムーズに命令を実行できる可能性の高いスレッドに優先的にプロセッサリソースを割当てようという考えに基づいている。ここスピンウェイトは命令を非常にスムーズに実行することができる。なぜなら、同じ命令列の実行を繰り返しているだけなので、キャッシュミスも起らないし、分岐予測も外れることがないからである。したがって、SMTプロセッサにおいては、スピンウェイトを実行中のスレッドに期せずして優先的にプロセッサリソースを割当てることになる。すると、スピンウェイト実行中スレッドに比べ、生産性の高い命令列を実行していると思われる他のスレッドへのプロセッサリソースの割当てが減ってしまい、結果としてプロセッサの性能が下がる可能性がある。
この様に、スピンウェイトには
(1)電力を無駄に消費する;
(2)SMTプロセッサの性能が下げる可能性が高い;
といった問題がある。
この問題への対策として、スピンウェイトが始まったことを検出したら、スピンウェイトの実行を停止し、スピンウェイトから抜けられる条件が整ったら割り込みにより通知し、実行を再開するという手法もある。しかし、スピンウェイトから抜けられる条件が整ったことを、割り込みで通知してしまっては元も子もない。そもそもスピンウェイトは低遅延を実現するために採用しているのであり、割り込みを使ったら時間コストがが大きくなってしまう。
また、同期専用のハードウェアを備えるという手法もある。しかし、その場合にはハードウェアコストが高くなる。現在、メモリベースの同期処理が一般的となっている背景には、汎用デバイス(メモリ)を用いて同期処理を行うことによるコスト削減のメリットが大きいという歴史的な経緯がある。
本発明は、スピンウェイトの実行で生じる電力やプロセッサリソースの無駄を省いて命令実行効率を高めるコンピュータ及び制御方法を提供することを目的とする。
発明の開示
本発明は、キャッシュメモリを備えた複数のプロセッサを有するコンピュータにおいて、プロセッサによるスピンウェイト命令の実行中を検出した際に、スピンウェイトの終了条件となっている変数値の監視を指示した後にプロセッサの動作状態を変更させるスピンウェイト検出部と、スピンウェイト検出部から指示された変数値を監視し、この変数値が変更されたことを検出した場合にプロセッサに値変更を通知して動作状態を元に戻す値変更検出部とを設けたことを特徴とする。このように本発明は、スピンウェイトから脱出できる可能性がない時、もしくは可能性が低い時は、プロセッサの動作状態を変更することにより、スピンウェイト実行中に生ずる無駄を削減する。また本発明によれば、プロセッサにスピンウェイト検出部を設け、またキャッシュメモリに値変更検出部を設けるといった少量のハードウェアの追加により、スピンウェイトが終了する可能性が無いか又は低いときの無駄を削減し、スピンウェイトの低遅延という特徴を損ねることなく、プロセッサの命令実行効率を良くする。
スピンウェイト検出部は、プロセッサによるスピンウェイト命令の実行中を検出した際に、スピンウェイト命令の実行で参照している変数値が格納されたキャッシュメモリのキャッシュブロックの監視を値変更検出部に指示する。値変更検出部は、キャッシュブロックの状態が他のプロセッサ又は入出力ユニットにより無効化されたことを検出した場合に、プロセッサに値変更を通知する。変更検出部は、キャッシュブロックがキャッシュメモリから追い出されたことを検出した場合にも、プロセッサに値変更を通知する。
スピンウェイト検出部は、プロセッサによるスピンウェイト命令の実行中を検出した際に、スピンウェイト命令の実行で参照している変数値が格納されているメモリアドレスに対するバスリクエストの監視を値変更検出部に指示する。値変更検出部は、スピンウェイト検出部から指示された変数値が格納されているメモリアドレスに対するバスリクエストを監視し、他のプロセッサ又は入出力ユニットから前記メモリアドレスに対するバスリクエストを検出した場合に、プロセッサに値変更を通知する。
プロセッサは通常モードと低消費電力モードの少なくとも2つ以上の動作モードを持っている場合、スピンウェイト検出部は、スピンウェイト命令の実行中を検出した際にプロセッサの動作モードを低消費電力モードに変更する。また値変更検出部は、スピンウェイトの終了条件となっている変数値の変更を検出した際に、プロセッサの動作モードを通常モードに変更させる。これによりスピンウェイト実行中にプロセッサの消費電力量を削減できる。
プロセッサはプログラム実行を停止する機能を持っている場合、スピンウェイト検出部は、スピンウェイト命令の実行中を検出した際にプロセッサにプログラムの実行を停止させる。また値変更検出部は、スピンウェイトの終了条件となっている変数値の変更を検出した際に、プロセッサにプログラムの実行を再開させる。これによりスピンウェイト実行中にプログラムの実行が停止され、これに伴いプロセッサの消費電力量を削減できる。
プロセッサは、複数スレッドを同時実行できる構造(SMTプロセッサ)を持っている場合、スピンウェイト検出部は、スピンウェイト命令の実行中のスレッドを検出した際に、このスレッドへのプロセッサリソースの割当てを減少又は停止させる。また値変更検出部は、スピンウェイトの終了条件となっている変数値の変更を検出した際に、スレッドへのプロセッサリソースの割当てを増加又は再開させる。これによりSMPプロセッサにおけるスレッドのスピンウェイト実行中に、他のスレッドプログラムの実行が停止され、スピンウェイト実行スレッドによる他のスレッドへの悪影響を回避し、結果としてプロセッサの性能が上がる。
プロセッサはスピンウェイト専用命令を持っており、スピンウェイト検出部は、プロセッサによるスピンウェイト専用命令の実行からスピンウェイト実行中を検出する。またスピンウェイト検出部は、プロセッサによる実効済命令列を格納するバッファと、スピンウェイト専用命令の命令列を記録する命令列記録部と、バッファと命令列記録部とを比較して命令列が一致した際に、スピンウェイト実行中を検出する比較部とを備える。
本発明は、キャッシュメモリを備えた複数のプロセッサを有するコンピュータの制御方法を提供するものであり、
プロセッサによるスピンウェイト命令の実行中を検出した際に、スピンウェイトの終了条件となっている変数値の監視を開始した後にプロセッサの動作状態を変更させ、
監視中に変数値が変更されたことを検出した場合にプロセッサに値変更を通知して動作状態を元に戻させることを特徴とする。
この制御方法の詳細はコンピュータの場合と基本的に同じになる。
発明を実施するための最良の形態
図3は、本発明が適用される共有メモリ型マルチプロセッサシステムのブロック図である。図3において、マルチプロセッサシステムは、例えば4台のプロセッサ10−1〜10−4を備えており、プロセッサ10−1〜10−4ごとにキャッシュメモリ12−1〜12−4が設けられている。キャッシュメモリ12−1〜12−4はバス14を介して共有メモリとして使用されるメインメモリ16を接続している。またバス14には入出力ユニット18が接続され、この入出力ユニット18としては例えば入出力エージェントとして機能する入出力プロセッサであり、外部のハードディスクドライブHDDなどのサブシステムやネットワーク、更にはキーボード、マウス、ディスプレイなどの入出力機器を接続している。
図4は、図3のプロセッサ10−1の実施形態である。なお、他のプロセッサ10−2〜10−4も同じ実施形態となる。図4において、プロセッサ10−1は、プロセッサコア11、キャッシュメモリインタフェース20を備える。またキャッシュメモリ12−1は、プロセッサインタフェース24、キャッシュメモリ制御部26、バスインタフェース28及びキャッシュメモリアレイ30を備えている。このようなプロセッサ10−1及びキャッシュメモリ12−1の構成は従来のプロセッサと同じであるが、本発明にあってはプロセッサ10−1側に新たにスピンウェイト検出部22を設け、同時にキャッシュメモリ12−1側に値変更検出部32を設けている。プロセッサ10−1に設けられたスピンウェイト検出部22は、プロセッサコア11によるスピンウェイト命令の実行中を検出した際に、スピンウェイトの終了条件となっている変数値の監視をキャッシュメモリ12−1側に設けた値変更検出部32に指示した後に、プロセッサ10−1の動作状態を変更させる。スピンウェイト検出部22によるプロセッサ10−1の動作状態の変更としては、スピンウェイト命令の実行中に生ずる無駄を削減する動作状態に変更するものであり、具体的には次のようになる。
例えばプロセッサ10−1が通常モードと低消費電力モードの少なくとも2つの動作モードを持っている場合には、スピンウェイト検出部22でスピンウェイト命令の実行中を検出した際にはプロセッサの動作モードを低消費電力モードに変更する。またプロセッサがプログラム実行を停止する機能を持っている場合には、スピンウェイト検出部22でスピンウェイト命令の実行中を検出した際にプロセッサにプログラムの実行を停止させる。このスピンウェイト命令の実行を検出した際の低消費電力モードへの変更あるいはプログラムの実行停止のいずれも、スピンウェイトの終了条件が所定の値に変更されるまで延々とスピンウェイトの命令列の実行を繰り返すスピンにより、プロセッサの無駄な動作や無駄に使用している消費電力を防ぐようにする。もちろん、スピンウェイト命令検出時のプロセッサによるプログラムの実行停止は低消費電力モードの1つの形態に含まれると言うこともできる。
キャッシュメモリ12−1側に設けた値変更検出部32は、スピンウェイト検出部22から指示されたスピンウェイトの終了条件となっている変数値を監視し、この変数値が他のプロセッサ10−2〜10−4や入出力ユニット18により変更されたことを検出した場合に、プロセッサ10−1側に値変更を通知してプロセッサの動作状態を元に戻す。例えば、スピンウェイト命令実行中の検出でプロセッサか低消費電力モードに変更されていた場合には通常モードに戻す。またスピンウェイト命令の実行中の検出でプロセッサのプログラムの実行停止となっていた場合にはプログラムの実行を再開させる。
図5は、図4のプロセッサ10−1に設けているスピンウェイト検出部22の実施形態である。スピンウェイト検出部22は、実行済命令列バッファ34、スピンウェイト命令列記録部36及び比較部38を備える。この実施形態にあっては、既存の命令セットISA(Instruction Set Architecture)をそのまま使用した場合を例に取っている。スピンウェイト検出部22は、まずスピンウェイト命令列記録部36にスピンウェイトであることを示す命令列を予め記録する。この命令列の記録は複数個でもよく、また記録内容は予め定められたものであっても良い。実行済命令列バッファ34には、プロセッサコアで実行が完了した命令列が記録される。比較部38は、スピンウェイト命令列記録部36に記録している基準となる命令列と実行済命令列バッファ34に記録された命令列を比較し、両者が一致したら即ちスピンウェイト命令列が実行されていることを検出したら、キャッシュメモリインタフェース20に対しスピンウェイト命令列検出信号E1を出力する。
図6は、図4のキャッシュメモリ12−1側に設けている値変更検出部32の実施形態である。この実施形態において値変更検出部32には、監視対象先記録部40とキャッシュステート監視部42を設けている。プロセッサにおいてスピンウェイト命令の実行によりスピンウェイトが始まると、図5に示したスピンウェイト検出部22よりスピンウェイト命令列検出信号E1が出力され、図6の値変更検出部32に設けている監視対象アドレス記録部40にスピンウェイトの終了条件として参照している変数値を格納しているキャッシュブロック、具体的にはキャッシュメモリエントリを、キャッシュメモリ制御部26を経由して受けて記録する。キャッシュステート監視部42は監視対象アドレス記録部40に記録されたキャッシュメモリエントリを監視しており、このエントリのキャッシュステート(キャッシュ状態)が更新されたら、キャッシュメモリ制御部26を介してプロセッサ側に値変更検出信号E2を出力する。
この実施形態において、キャッシュプロトコルとしてはMESIプロトコルを例にとっており、この場合、キャッシュステート監視部42は監視対象となるエントリのキャッシュステートが無効Iに更新されたら値変更検出信号E2を出力する。なおキャッシュステート監視部42としては、スピンウェイト終了条件となっている変数値の書き換えに対応したキャッシュステートの無効Iの更新から値変更検出信号E2を出力しているが、キャッシュメモリのLRUアルゴリズムにより監視対象となっているキャッシュメモリエントリの追い出しが行われた場合にも値変更検出信号E2を出力する。
図7は、スピンウェイト検出時にスピンウェイト終了条件となっている変数値が格納されているキャッシュメモリエントリ(キャッシュブロック)を監視して値変更を検出する本発明の処理手順のタイムチャートである。まずスピンウェイト検出部22がステップS1でプロセッサ10−1でスピンウェイト命令を実行中か否かチェックしている。プロセッサ10−1でスピンウェイト命令が実行されると、図5の実施形態に示したようなスピンウェイト検出部22でスピンウェイト命令の実行が検出され、スピンウェイト命令検出信号E1が出力される。これによって、ステップS2でスピンウェイト検出部22は、スピンウェイトで参照している変数値が格納されたキャッシュブロックの監視をキャッシュメモリ12−1側の値変更検出部32に指示する。これと同時にスピンウェイト検出部22は、ステップS3でプロセッサ10−1によるスピンウェイト命令の実行を停止し、低消費電力の動作状態に入る。
スピンウェイト検出部22からキャッシュブロックの監視を指示された値変更検出部32は、ステップS101でプロセッサから指示されたキャッシュブロックの監視を開始する。即ち、ステップS102で監視対象となるキャッシュブロックにおけるキャッシュステート即ちキャッシュ状態の状態変化、具体的には無効化が行われたか否かを検出している。この状態で他のプロセッサ10−1〜10−4のいずれか、あるいは入出力ユニット18によるキャッシュブロックの更新があると、監視しているキャッシュブロックのキャッシュステートが無効状態に更新される。これをステップS102で検出すると、ステップS103に進み、キャッシュブロックの状態変化を図6の値変更検出部30より値変更検出信号E2として出力し、キャッシュブロックの状態変化即ち無効化をプロセッサ側に通知する。この値変更検出信号を受けて、スピンウェイト検出部22にあっては、ステップS4でプロセッサ10−1によるスピンウェイト命令の実行を再開する。
図8は、マルチプロセッサシステムにおけるバリア同期処理を例にとって本発明の処理手順を示した説明図である。図8(A)はバリア同期処理の対象となるマルチプロセッサシステムの一部であり、説明を簡単にするため2台のプロセッサ10−1,10−2のバリア同期処理を例にとっている。またプロセッサ10−1,10−2に設けたキャッシュメモリ12−1,12−2にあっては、スピンウェイト命令の実行で参照しているスピンウェイトの終了条件となっている2ビットの変数値とキャッシュブロックにおけるキャッシュステートを示している。このキャッシュステートはMESIプロトコルに対応しており、また変数値は2台のプロセッサ10−1,10−2のバリア同期であることから、それぞれに対応した2ビットの情報であり、同期ポイントに達する前の状態では「00」となっている。
図8(B)〜(G)は、図7に示した本発明の処理手順に従ったバリア同期処理の動作の遷移状態を時間的に分けて表わしている。図8(B)はバリア同期の対象となっている2台のプロセッサ10−1,10−2の内、プロセッサ10−1が同期ポイントに達してスピンウェイトした状態である。即ちプロセッサ10−1は、同期ポイントへの到達で図2に示した設定部104の処理により、キャッシュメモリ12−1の対象エントリの変数値のうち自分の対応ビットを1にセットし、これにより変数値は「00」から「01」となる。このキャッシュメモリ12−1の変数値の更新に際し、同じキャッシュブロックを持っているプロセッサ10−2のキャッシュメモリ12−2にあっては、キャッシュステートの無効化が行われる。なおキャッシュメモリ12−1にあっては、該当するキャッシュブロックのキャッシュステートは変更Mに更新される。
この図8(B)のようにプロセッサ10−1でスピンウェイト状態になると、図4のようにプロセッサ10−1に設けているスピンウェイト検出部22がスピンウェイト命令の実行中を検出し、キャッシュメモリ12−1に対し該当するキャッシュブロックのキャッシュステートが無効Iになるか否かの監視を指示する。同時にプロセッサ10−1に対し例えばスピンウェイトのプログラム実行を停止させる。これにより図8(C)のように、プロセッサ10−1はスピンウェイトのプログラム実行を停止した状態となり、一方、プロセッサ10−2は通常モードでプログラム実行を続けている。
図8(D)はプロセッサ10−2が同期ポイントに達したときの処理である。プロセッサ10−2が同期ポイントに達すると、スピンウェイト命令の実行によりキャッシュメモリ12−2からスピンウェイト終了条件となる変数値の読み込みを行う。このときキャッシュメモリ12−2の該当キャッシュブロックは無効I状態にあることから、キャッシュプロトコルによりプロセッサ10−1のキャッシュメモリ12−2から変数値を読み出してキャッシュステートを共有S状態にした後にプロセッサ10−2で読み取る。続いて図8(E)のように、プロセッサ10−2は自分に割り当てられているビットを1に書き換えることで変数値を「11」とする。この変数値の更新により、プログラムの実行停止にあるプロセッサ10−1のキャッシュメモリ12−1に対し変数値の無効化が行われ、キャッシュステートはそれまでの共有Sから無効Iに更新される。このキャッシュメモリ12−1における無効Iへの状態変化を図4のキャッシュメモリ12−1側に設けている値変更検出部32で検出すると、プロセッサ10−1に対し値変更通知を行い、これによって、それまで停止していたプログラムの実行が再開される。
このため、プログラムの実行を再開したプロセッサ10−1は、図8(F)でスピンウェイト命令の実行によりキャッシュメモリ12−1の該当キャッシュブロックの変数値「11」を読み込み、これによってスピンウェイト終了条件が成立したことを認識する。このときプロセッサ12−2側にあっても、変数値「11」の認識でスピンウェイト終了条件を判定しており、これにより2台のプロセッサ10−1,10−2のバリア同期が取られ、図8(G)のようにスピンウェイトを終了して、次のプログラムの実行処理に移行することになる。
図9は、図4のキャッシュメモリ12−1側に設けている値変更検出部32の他の実施形態であり、この実施形態にあってはスピンウェイトの終了条件となっている変数値を格納しているキャッシュブロックに対する他のプロセッサ、あるいは入出力ユニットによる変数値変更のためのバストランザクション(バスリクエスト)を監視して値変更を検出するようにしたことを特徴とする。
図9の値変更検出部32は、図6と同じ監視対象アドレス記録部40に対しバストランザクション監視部44を設けている。プロセッサ側でスピンウェイト命令の実行が開始されると、スピンウェイトで参照しているデータアドレスが監視対象アドレス記録部40に記録される。バストランザクション監視部44は、監視対象アドレスに対する他のプロセッサあるいは入出力ユニットからのバス14によるトランザクションをバスインタフェースス28を介して監視しており、監視しているバストランザクションを検出すると、値変更検出信号E2をキャッシュメモリ制御部26を経由してプロセッサ側に出力する。このバストランザクションの監視による値変更検出は、スピンウェイトの終了条件となっている変数値の変更を直接検出するものではなく、正確には変数値が変更される可能性があることを検出していると言うことができる。
図10は、図9のバストランザクションの監視により値変更を検出する場合の本発明の処理手順のタイムチャートである。スピンウェイト検出部22は、ステップS1でプロセッサでのスピンウェイト命令実行中を検出すると、ステップS2で、スピンウェイト命令で参照している変数値が格納されているキャッシュブロック、即ちデータアドレスの監視の指示をキャッシュメモリ側の値変更検出部32に対し行う。またステップS3で、スピンウェイト検出部22はプロセッサに対しスピンウェイト命令列検出実行を出力して、プロセッサによるスピンウェイト命令の実行を停止させる。
キャッシュメモリ側の値変更検出部32にあっては、ステップS101でプロセッサ側から指示されたデータアドレスに対するバストランザクションを監視し、監視対象のキャッシュブロックに対するバストランザクションをステップS102で検出すると、ステップS103でバストランザクションによる状態変化(可能性)を値変更検出信号の出力によりプロセッサ側に通知する。これを受けてスピンウェイト検出部22にあっては、ステップS4でプロセッサによるスピンウェイト命令の実行を再開することになる。
次に図3のプロセッサ10−1〜10−4としてSMTプロセッサを使用した場合について、スピンウェイト命令実行中のプロセッサに対するプロセッサリソースの割当てを削減する本発明の他の実施形態を説明する。
図11は、本発明が適用されるSMTプロセッサの概略構成である。SMTプロセッサは、命令ポインタ46−1,46−2、フェッチ/デコード48−1,48−2、実行ユニット50、リタイヤメントユニット52、1次命令キャッシュユニット54、1次データキャッシュユニット56及び2次キャッシュユニット58を備えている。このような概略構成を持つSMTプロセッサは、同時に複数スレッドを実行するため通常は命令ポインタを複数持っており、この例では2つの命令ポインタ46−1,46−2を持った場合を示している。この命令ポインタ46−1,46−2及びフェッチ/デコード48−1,48−2で実現される2つのスレッドの実行にあっては、実行ユニット50などのリソースをスレッド間で共有することにより、リソースの有効利用率を高めており、これがSMTプロセッサの狙いである。このように複数のスレッドでプロセッサリソースを共有するSMTプロセッサにあっては、次にどのスレッドの命令を実行ユニット50に割り当てるかを極める方針がいろいろ提案されている。そこで本発明は、この実行ユニットなどのプロセッサリソースをどのスレッドの命令に割り当てるかを決める方針の決定に利用することができる。具体的には、スピンウェイト実行中のスレッドを検出したら、スピンウェイト命令を実行中のスレッドに対する実行ユニットなどのプロセッサリソースの割当てを削減もしくは停止する。これによってスピンウェイトではない、より意味のある命令を実行している他のスレッドの命令を実行ユニットに割り当てる機会が増え、その結果、SMTプロセッサの処理性能の向上が期待できる。
図12は、SMTプロセッサについてスピンウェイトを検出してプロセッサリソースを削減する本発明の処理手順のタイムチャートである。SMTプロセッサ側のスピンウェイト検出部22は、ステップS1で複数のスレッドの内のあるスレッドでスピンウェイト実行中か否かをチェックしており、実行中を検出すると、ステップS2に進み、スピンウェイトで参照している変数値が格納されたキャッシュブロックの監視をキャッシュメモリ側の値変更検出部32に指示する。またステップS3で、スピンウェイト命令を実行中のスレッドの命令を割り当てるプロセッサリソースの削減または停止を行う。具体的には、例えば命令ポインタ46−1及びフェッチ/デコード48−1側で実行されるスレッドの命令でスピンウェイト実行中が検出された場合には、このスレッドによる命令の実行ユニット50に対する割当てを削減または停止し、スピンウェイト命令以外の命令を実行している命令ポインタ46−2,フェッチ/デコード48−2側となる他のスレッドの命令に実行ユニット50を割り当てる。
キャッシュメモリ側の値変更検出部32にあっては、ステップS101でプロセッサ側から指示されたキャッシュブロックのキャッシュステートを監視し、ステップS102でキャッシュステート即ち状態が無効Iに更新されたことを検出すると、ステップS103でキャッシュブロックの状態変化をプロセッサ側に通知する。これを受けてスピンウェイト検出部22側にあっては、ステップS4でスピンウェイト命令を実行中のスレッドに対するそれまでのプロセッサリソースの割当ての削減または停止を解除する。
なお上記の実施形態にあっては、キャッシュプロトコルとしてMESIプロトコルを例にとるものであったが、無効Iへの更新を含むものであれば適宜のキャッシュプロトコルであってもよい。また上記の実施形態にあっては、スピンウェイト終了条件のための変更値として該当するキャッシュブロックのキャッシュステートの無効化、あるいはこのステートに対するバストランザクションからキャッシュ終了条件となっている変数値を直接または間接的に監視しているが、これ以外の変数値の直接または間接的な監視であっても良いことはもちろんである。
また上記の実施形態にあっては、スピンウェイト実行中を検出した際のプロセッサの動作状態の変更として、低消費電力モードへの変更、プログラムの実行停止、更にはSMTプロセッサにあってはプロセッサリソースの割当て減少または停止を例に取るものであったが、これ以外に適宜のスピンウェイト命令の実行で生ずる無駄を省くプロセッサの動作状態の変更であれば適宜のものを含む。
また本発明は上記の実施形態に限定されず、その利点と目的を損なうことのない適宜の変形を含む。更に本発明は上記の実施形態に示した数値による限定は受けない。
【産業上の利用可能性】
以上説明してきたように本発明によれば、スピンウェイトの特徴である遅延の低さを犠牲にすることなく、スピンウェイト命令実行によって発生する無駄な命令実行やプロセッサの動作を制限することができ、その結果としてプロセッサの電力消費を節減することができる。
またSMTプロセッサにあっては、スピンウェイト実行スレッドによる他のスレッドへの悪影響を回避することができ、SMTプロセッサの処理能力を向上させることができる。
【図面の簡単な説明】
図1は従来のスピンロック処理の説明図;
図2は従来のバリア同期処理の説明図;
図3は本発明が適用される共有メモリ型マルチプロセッサシステムのブック図;
図4は本発明によるプロセッサの実施形態のブロック図
図5は図4におけるスピンウェイト検出部の実施形態ブロック図;
図6はキャッシュブロックを監視する図4における値変更検出部の実施形態のブロック図;
図7はスピンウェイト検出時にキャッシュブロックを監視して値変更を検出する本発明の処理手順のタイムチャート;
図8は本発明による同期処理の説明図
図9はバストランザクションを監視する図4における値変更検出部の他の実施形態のブロック図;
図10は本発明によるスピンウェイト検出時にバストランザクションを監視して値変更を検出する本発明の処理手順のタイムチャート;
図11は本発明が適用されるSMTプロセッサの概略構成のブロック図;
図12はスピンウェイトを検出してプロセッサリソースを削減する本発明の処理手順のタイムチャート;
Claims (20)
- キャッシュメモリを備えた複数のプロセッサを有するコンピュータに於いて、
前記プロセッサによるスピンウェイト命令の実行中を検出した際に、前記スピンウェイトの終了条件となっている変数値の監視を指示した後に前記プロセッサの動作状態を変更させるスピンウェイト検出部と、
前記スピンウェイト検出部から指示された変数値を監視し、該変数値が変更されたことを検出した場合に前記プロセッサに値変更を通知して動作状態を元に戻す値変更検出部と、
を備えたことを特徴とするコンピュータ。 - 請求の範囲1のコンピュータにおいて、前記スピンウェイト検出部は、前記プロセッサによるスピンウェイト命令の実行中を検出した際に、前記スピンウェイト命令の実行で参照している前記変数値が格納された前記キャッシュメモリのキャッシュブロックの監視を前記値変更検出部に指示し、
前記値変更検出部は、前記スピンウェイト検出部から指示されたキャッシュブロックを監視し、該キャッシュブロックの状態が変更されたことを検出した場合に前記プロセッサに値変更を通知することを特徴とするコンピュータ。 - 請求の範囲2のコンピュータに於いて、前記値変更検出部は、前記キャッシュブロックの状態が他のプロセッサ又は入出力ユニットにより無効化されたことを検出した場合に、前記プロセッサに値変更を通知することを特徴とするコンピュータ。
- 請求の範囲2のコンピュータに於いて、前記値変更検出部は、前記キャッシュブロックがキャッシュメモリから追い出されたことを検出した場合に、前記プロセッサに値変更を通知することを特徴とするコンピュータ。
- 請求の範囲1のコンピュータに於いて、
前記スピンウェイト検出部は、前記プロセッサによるスピンウェイト命令の実行中を検出した際に、前記スピンウェイト命令の実行で参照している変数値が格納されているメモリアドレスに対するバスリクエストの監視を前記値変更検出部に指示し、
前記値変更検出部は、前記スピンウェイト検出部から指示された変数値が格納されているメモリアドレスに対するバスリクエストを監視し、他のプロセッサ又は入出力ユニットから前記メモリアドレスに対するバスリクエストを検出した場合に、前記プロセッサに値変更を通知することを特徴とするコンピュータ。 - 請求の範囲1のコンピュータに於いて、
前記プロセッサは通常モードと低消費電力モードの少なくとも2つ以上の動作モードを持っており、
前記スピンウェイト検出部は、スピンウェイト命令の実行中を検出した際に前記プロセッサの動作モードを低消費電力モードに変更し、
前記値変更検出部は、前記スピンウェイトの終了条件となっている変数値の変更を検出した際に、前記プロセッサの動作モードを通常モードに変更させることを特徴とするコンピュータ。 - 請求の範囲1のコンピュータに於いて、
前記プロセッサはプログラム実行を停止する機能を持っており、
前記スピンウェイト検出部は、スピンウェイト命令の実行中を検出した際に前記プロセッサにプログラムの実行を停止させ、
前記値変更検出部は、前記スピンウェイトの終了条件となっている変数値の変更を検出した際に、前記プロセッサにプログラムの実行を再開させることを特徴とするコンピュータ。 - 請求の範囲1のコンピュータに於いて、
前記プロセッサは、複数スレッドを同時実行できる構造を持っており、
前記スピンウェイト検出部は、スピンウェイト命令の実行中のスレッドを検出した際に、該スレッドへのプロセッサリソースの割当てを減少又は停止させ、
前記値変更検出部は、前記スピンウェイトの終了条件となっている変数値の変更を検出した際に、前記スレッドへのプロセッサリソースの割当てを増加又は再開させることを特徴とするコンピュータ。 - 請求の範囲1のコンピュータに於いて、前記プロセッサはスピンウェイト専用命令を持っており、前記スピンウェイト検出部は、前記プロセッサによるスピンウェイト専用命令の実行からスピンウェイト実行中を検出することを特徴とするコンピュータ。
- 請求の範囲1のコンピュータに於いて、前記スピンウエイト検出部は、
前記プロセッサによる実効済命令列を格納するバッファと、
前記スピンウェイト専用命令の命令列を記録するスピンウェイト命令列記録部と、
前記バッファとスピンウェイト命令列記録部とを比較して命令列が一致した際に、スピンウェイト実行中を検出することを特徴とするコンピュータ。 - キャッシュメモリを備えた複数のプロセッサを有するコンピュータの制御方法に於いて、
前記プロセッサによるスピンウェイト命令の実行中を検出した際に、前記スピンウェイトの終了条件となっている変数値の監視を開始した後に前記プロセッサの動作状態を変更させ、
前記変数値が変更されたことを検出した場合に前記プロセッサに値変更を通知して動作状態を元に戻すことを特徴とするコンピュータの制御方法。 - 請求の範囲11のコンピュータの制御方法に於いて、
前記プロセッサによるスピンウェイト命令の実行中を検出した際に、前記スピンウェイト命令の実行で参照している前記変数値が格納された前記キャッシュメモリのキャッシュブロックの監視を開始し、
前記キャッシュブロックの監視中に、該キャッシュブロックの状態が変更されたことを検出した場合に前記プロセッサに値変更を通知することを特徴とするコンピュータの制御方法。 - 請求の範囲12のコンピュータの制御方法に於いて、前記キャッシュブロックの状態が他のプロセッサ又は入出力ユニットにより無効化されたことを検出した場合に、前記プロセッサに値変更を通知することを特徴とするコンピュータの制御方法。
- 請求の範囲12のコンピュータの制御方法に於いて、前記キャッシュブロックがキャッシュメモリから追い出されたことを検出した場合に、前記プロセッサに値変更を通知することを特徴とするコンピュータの制御方法。
- 請求の範囲11のコンピュータの制御方法に於いて、
前記プロセッサによるスピンウェイト命令の実行中を検出した際に、前記スピンウェイト命令の実行で参照している変数値が格納されているメモリアドレスに対するバスリクエストの監視を開始し、
前記メモリアドレスに対するバスリクエストの監視中に、他のプロセッサ又は入出力ユニットから前記メモリアドレスに対するバスリクエストを検出した場合に、前記プロセッサに値変更を通知することを特徴とするコンピュータの制御方法。 - 請求の範囲11のコンピュータの制御方法に於いて、
前記プロセッサは通常モードと低消費電力モードの少なくとも2つ以上の動作モードを持っており、
前記スピンウェイト命令の実行中を検出した際に前記プロセッサの動作モードを低消費電力モードに変更させ、
前記スピンウェイトの終了条件となっている変数値の変更を検出した際に、前記プロセッサの動作モードを通常モードに変更させることを特徴とするコンピュータの制御方法。 - 請求の範囲11のコンピュータの制御方法に於いて、
前記プロセッサはプログラム実行を停止する機能を持っており、
前記スピンウェイト命令の実行中を検出した際に前記プロセッサにプログラムの実行を停止させ、
前記スピンウェイトの終了条件となっている変数値の変更を検出した際に、前記プロセッサにプログラムの実行を再開させることを特徴とするコンピュータの制御方法。 - 請求の範囲11のコンピュータの制御方法に於いて、
前記プロセッサは、複数スレッドを同時実行できる構造を持っており、
前記スピンウェイト命令の実行中のスレッドを検出した際に、該スレッドへのプロセッサリソースの割当てを減少又は停止させ、
スピンウェイトの終了条件となっている変数値の変更を検出した際に、前記スレッドへのプロセッサリソースの割当てを増加又は再開させることを特徴とするコンピュータの制御方法。 - 請求の範囲11のコンピュータの制御方法に於いて、前記プロセッサはスピンウェイト専用命令を持っており、前記プロセッサによるスピンウェイト専用命令の実行からスピンウェイト実行中を検出することを特徴とするコンピュータの制御方法。
- 請求の範囲19のコンピュータの制御方法に於いて、前記スピンウェイト検出は、
前記スピンウェイト専用命令の命令列をスピンウェイト命令列記録部に記録し、
前記プロセッサによる実行済命令列を順次バッファに格納し、
前記バッファとスピンウェイト命令列記録部とを比較して命令列が一致した際に、スピンウェイト実行中を検出することを特徴とするコンピュータの制御方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2001/009788 WO2003040948A1 (fr) | 2001-11-08 | 2001-11-08 | Ordinateur et procede de commande |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008303592A Division JP4878050B2 (ja) | 2008-11-28 | 2008-11-28 | コンピュータ及び制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2003040948A1 true JPWO2003040948A1 (ja) | 2005-03-03 |
JP4253796B2 JP4253796B2 (ja) | 2009-04-15 |
Family
ID=11737921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003542505A Expired - Lifetime JP4253796B2 (ja) | 2001-11-08 | 2001-11-08 | コンピュータ及び制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7337274B2 (ja) |
JP (1) | JP4253796B2 (ja) |
WO (1) | WO2003040948A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7213093B2 (en) * | 2003-06-27 | 2007-05-01 | Intel Corporation | Queued locks using monitor-memory wait |
US20050120185A1 (en) * | 2003-12-01 | 2005-06-02 | Sony Computer Entertainment Inc. | Methods and apparatus for efficient multi-tasking |
JP4376692B2 (ja) | 2004-04-30 | 2009-12-02 | 富士通株式会社 | 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ |
US8607241B2 (en) | 2004-06-30 | 2013-12-10 | Intel Corporation | Compare and exchange operation using sleep-wakeup mechanism |
US7475385B2 (en) * | 2004-09-29 | 2009-01-06 | Hewlett-Packard Development Company, L.P. | Cooperating test triggers |
US7899663B2 (en) * | 2007-03-30 | 2011-03-01 | International Business Machines Corporation | Providing memory consistency in an emulated processing environment |
JP4878050B2 (ja) * | 2008-11-28 | 2012-02-15 | 富士通株式会社 | コンピュータ及び制御方法 |
US9021502B2 (en) * | 2008-12-29 | 2015-04-28 | Oracle America Inc. | Method and system for inter-thread communication using processor messaging |
WO2011161884A1 (ja) | 2010-06-25 | 2011-12-29 | パナソニック株式会社 | 集積回路、コンピュータシステム、制御方法 |
JP6070150B2 (ja) * | 2012-12-14 | 2017-02-01 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム |
KR102476357B1 (ko) | 2015-08-06 | 2022-12-09 | 삼성전자주식회사 | 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6944779B2 (en) * | 1999-07-14 | 2005-09-13 | Visteon Global Technologies, Inc. | Power management fault strategy for automotive multimedia system |
US6721892B1 (en) * | 2000-05-09 | 2004-04-13 | Palmone, Inc. | Dynamic performance adjustment of computation means |
-
2001
- 2001-11-08 WO PCT/JP2001/009788 patent/WO2003040948A1/ja active Application Filing
- 2001-11-08 JP JP2003542505A patent/JP4253796B2/ja not_active Expired - Lifetime
-
2004
- 2004-05-10 US US10/841,619 patent/US7337274B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP4253796B2 (ja) | 2009-04-15 |
US7337274B2 (en) | 2008-02-26 |
WO2003040948A1 (fr) | 2003-05-15 |
US20040210723A1 (en) | 2004-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8898435B2 (en) | Optimizing system throughput by automatically altering thread co-execution based on operating system directives | |
US6871264B2 (en) | System and method for dynamic processor core and cache partitioning on large-scale multithreaded, multiprocessor integrated circuits | |
EP1421490B1 (en) | Methods and apparatus for improving throughput of cache-based embedded processors by switching tasks in response to a cache miss | |
US9384040B2 (en) | Scheduling computer jobs for execution | |
US9047120B2 (en) | Virtual queue processing circuit and task processor | |
JP4119945B2 (ja) | タスク処理装置 | |
US8499010B2 (en) | Garbage collection in a multiple virtual machine environment | |
US8612730B2 (en) | Hardware assist thread for dynamic performance profiling | |
US20110078702A1 (en) | Multiprocessor system | |
JP4253796B2 (ja) | コンピュータ及び制御方法 | |
JPWO2008023427A1 (ja) | タスク処理装置 | |
US8954969B2 (en) | File system object node management | |
JPH10301794A (ja) | 情報処理システムおよびキャッシュ・メモリのロード方法 | |
KR100856144B1 (ko) | 프로세서 내에서의 다수의 동시 물리 스레드로부터의다수의 논리 스레드의 디커플링 | |
JP4965638B2 (ja) | タスクの切り換えを制御するシステムおよび方法 | |
US6678794B1 (en) | Smoothing bursts of disk load in a file system | |
KR101271211B1 (ko) | 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 | |
WO2015096031A1 (zh) | 线程共享资源分配方法及装置 | |
JP4878050B2 (ja) | コンピュータ及び制御方法 | |
JP2004192052A (ja) | ソフトウェア処理方法およびソフトウェア処理システム | |
EP4034992A1 (en) | Soft watermarking in thread shared resources implemented through thread mediation | |
JP5376042B2 (ja) | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム | |
JP3839259B2 (ja) | マルチスレッド制御方法、マルチスレッド制御装置、記録媒体、及びプログラム | |
JP2008269597A (ja) | タスク処理装置 | |
Xu et al. | iNUMAlloc: Towards Intelligent Memory Allocation for AI Accelerators with NUMA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070306 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071106 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080930 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081128 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20081204 |
|
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: 20081224 |
|
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: 20090115 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120206 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4253796 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130206 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130206 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140206 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |