JP2012043232A - プログラム実行装置およびプログラム実行方法 - Google Patents

プログラム実行装置およびプログラム実行方法 Download PDF

Info

Publication number
JP2012043232A
JP2012043232A JP2010184509A JP2010184509A JP2012043232A JP 2012043232 A JP2012043232 A JP 2012043232A JP 2010184509 A JP2010184509 A JP 2010184509A JP 2010184509 A JP2010184509 A JP 2010184509A JP 2012043232 A JP2012043232 A JP 2012043232A
Authority
JP
Japan
Prior art keywords
processing
variable
processing time
value
program
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
JP2010184509A
Other languages
English (en)
Other versions
JP5379765B2 (ja
Inventor
Satoru Kondo
悟 近藤
Junichi Akahani
淳一 赤埴
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2010184509A priority Critical patent/JP5379765B2/ja
Publication of JP2012043232A publication Critical patent/JP2012043232A/ja
Application granted granted Critical
Publication of JP5379765B2 publication Critical patent/JP5379765B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】プロセッサの処理速度を向上する技術を提供する。
【解決手段】プログラム実行装置は、プロセッサの処理速度を向上させるように、スレッドを固定的に特定のコア(占有コア)に割り当てて実行させる独立化処理を決定する解析部を備え、解析部は、ステップS403において、キャッシュヒット係数Pを算出して、閾値と比較し、独立化処理の候補を絞る。ステップS406では、独立化判定値Fを算出して、閾値と比較し、候補の中から独立化処理を確定する。ステップS411では、スループット係数THを算出して、コア占有処理の方が通常処理よりスループット係数THが大きい場合に、コア占有処理を実行させるためのコア割当情報を作成し、そのコア割当情報に基づいて、コア割当処理(高速処理)を実行する。
【選択図】図4

Description

本発明は、プロセッサの処理速度を向上する技術に関する。
特許文献1には、マルチコアプロセッサにおける処理速度の向上を目的として、キャッシュミスを防ぐために、マルチコアプロセッサのどのコアにどのスレッドをどのタイミングで動作させるかをスケジューリングする技術が開示されている。具体的には、L2(Level 2)キャッシュ内に既に格納されているデータを再利用可能なように、スレッドを以前動作したコアで割り当てるスケジューリングを行うことによって、データをロードする時間を削減し高速化を実現する技術である。
特開2000−148518号公報
しかし、1つのスレッドが処理中に扱うデータのバリエーション(データアドレス、データのサイズ、データのビットパターン等の相違のこと)が多く、かつ、それらのデータが均等に処理に使用される場合には、データがキャッシュアウトした(データがキャッシュ上に存在しない)状態になるケースがほとんどである。また、特定のスレッド単独で見ればデータのバリエーションが少なく、キャッシュヒット率が高くなり得る場合であっても、同一コアで動作する他のスレッドが使用するデータのバリエーションが大きい場合には、他のスレッドのデータがL2キャッシュ内で支配的になり、単独ならばキャッシュヒット率が高いデータがキャッシュアウトした状態になる可能性が高い。つまり、特許文献1に記載の技術では、プロセッサの処理速度の向上を確実には望めないケースがあるといった問題がある。
また、プロセッサの処理効率向上のため、並行動作可能な処理をスレッド群として複数のコアで並行動作させることも考えられるが、この場合、バリエーションが少なく、本来キャッシュヒット率が高くなり得るデータであっても、複数のコアでスレッドが動作するが故に、同じアドレスのデータを複数のコア間で参照し合い、結果的にデータロードの時間を多く必要としてしまう可能性がある。このように、複数のコアのキャッシュ上に同じアドレスのキャッシュデータが存在してしまうと、キャッシュコヒーレンシ(複数のキャッシュに格納されている同一のデータの一貫性)を保つためのオーバヘッドが大きくなるため、プロセッサの処理速度の向上を損ねる原因となる。
そこで、本発明は、前記した問題を解決し、プロセッサの処理速度を向上する技術を提供することを課題とする。
本発明は、プログラムをスレッドに分割し、前記スレッドそれぞれをCPU(Central Processing Unit)を構成するコアに割り当てて前記プログラムを実行するプログラム実行装置であって、任意の前記コアに任意の前記スレッドを割り当てて前記プログラムの処理を行う通常処理の実行時に所定の周期で収集される、前記プログラムに記述されている変数の処理開始時刻と、その変数の処理がキャッシュヒットしたことを示すキャッシュヒット情報と、を関連付けて記憶しているとともに、前記CPUのコア数と、キャッシュヒットの効果の判定に用いる閾値とを記憶している記憶部と、(1)前記変数の中の第1の変数の前記処理開始時刻およびその第1の変数の次に処理される第2の変数の前記処理開始時刻を読み出して差分を算出し、収集された回数分の前記差分の平均値を算出し、その算出した平均値を第1の処理時間とし、(2)前記変数の中の、前記キャッシュヒット情報が関連付けられた前記第1の変数の前記処理開始時刻および当該第1の変数の次に処理される第2の変数の前記処理開始時刻を読み出して差分を算出し、収集された回数分の前記差分の平均値を算出し、その算出した平均値を第2の処理時間とし、(3)前記第1の処理時間を前記第2の処理時間で除算して、独立化判定値を算出し、(4)前記独立化判定値が前記第1の変数の処理に用いるスレッド数を示す前記閾値より大きいか否かを判定し、その判定結果において大きいという判定の場合に、前記第1の変数の前記処理時間を前記第2の処理時間とし、その判定結果において否という判定の場合に、前記第1の変数の前記処理時間を前記第1の処理時間とし、(5)前記(1)〜前記(4)の処理を前記プログラムの変数について実行し、(6)前記CPUのコア数を、前記通常処理の実行時の前記プログラムの前記変数について前記第1の処理時間を合計した合計値で除算し、その値を第1のスループット係数とし、(7)前記CPUの1つのコアに、前記第2の処理時間を処理時間とする1つの前記変数の処理を実行させるように割り当てたときのスループットを、コア数の1を分子とし、前記第2の処理時間と当該変数の処理から次の処理までの待ち時間との合算値を分母とする第1の除算値を算出し、前記CPUのコア数から前記第2の処理時間を処理時間とする前記変数の数を減算して、その減算値を分子とし、前記プログラムの前記変数の中から前記第2の処理時間とならなかった前記変数の前記第1の処理時間と当該変数の処理の次の処理までの待ち時間との合計値を分母とする第2の除算値を算出し、前記第1の除算値および前記第2の除算値の中で最も小さい値を第2のスループット係数とし、(8)前記第2のスループット係数が前記第1のスループット係数より大きい場合、前記第2の処理時間を処理時間とする前記変数を処理するスレッドを固定の前記コアに割り当てることを示したコア割当情報を生成する解析部と、前記解析部によって生成された前記コア割当情報に基づいて、前記第2の処理時間を処理時間とする前記変数を処理するスレッドを固定の前記コアに割り当てて、前記プログラムを実行する実行部とを備えることを特徴とする。
また、本発明は、プログラムをスレッドに分割し、前記スレッドそれぞれをCPUを構成するコアに割り当てて前記プログラムを実行するプログラム実行装置において用いられるプログラム実行方法であって、前記プログラム実行装置が、任意の前記コアに任意の前記スレッドを割り当てて前記プログラムの処理を行う通常処理の実行時に所定の周期で収集される、前記プログラムに記述されている変数の処理開始時刻と、その変数の処理がキャッシュヒットしたことを示すキャッシュヒット情報と、を関連付けて記憶しているとともに、前記CPUのコア数と、キャッシュヒットの効果の判定に用いる閾値とを記憶している記憶部と、解析部と、実行部と、を備え、前記解析部が、(1)前記変数の中の第1の変数の前記処理開始時刻およびその第1の変数の次に処理される第2の変数の前記処理開始時刻を読み出して差分を算出し、収集された回数分の前記差分の平均値を算出し、その算出した平均値を第1の処理時間とするステップ、(2)前記変数の中の、前記キャッシュヒット情報が関連付けられた前記第1の変数の前記処理開始時刻および当該第1の変数の次に処理される第2の変数の前記処理開始時刻を読み出して差分を算出し、収集された回数分の前記差分の平均値を算出し、その算出した平均値を第2の処理時間とするステップ、(3)前記第1の処理時間を前記第2の処理時間で除算して、独立化判定値を算出するステップ、(4)前記独立化判定値が前記第1の変数の処理に用いるスレッド数を示す前記閾値より大きいか否かを判定し、その判定結果において大きいという判定の場合に、前記第1の変数の前記処理時間を前記第2の処理時間とし、その判定結果において否という判定の場合に、前記第1の変数の前記処理時間を前記第1の処理時間とするステップ、(5)前記(1)〜前記(4)の処理を前記プログラムの変数について実行するステップ、(6)前記CPUのコア数を、前記通常処理の実行時の前記プログラムの前記変数について前記第1の処理時間を合計した合計値で除算し、その値を第1のスループット係数とするステップ、(7)前記CPUの1つのコアに、前記第2の処理時間を処理時間とする1つの前記変数の処理を実行させるように割り当てたときのスループットを、コア数の1を分子とし、前記第2の処理時間と当該変数の処理から次の処理までの待ち時間との合算値を分母とする第1の除算値を算出し、前記CPUのコア数から前記第2の処理時間を処理時間とする前記変数の数を減算して、その減算値を分子とし、前記プログラムの前記変数の中から前記第2の処理時間とならなかった前記変数の前記第1の処理時間と当該変数の処理の次の処理までの待ち時間との合計値を分母とする第2の除算値を算出し、前記第1の除算値および前記第2の除算値の中で最も小さい値を第2のスループット係数とするステップ、(8)前記第2のスループット係数が前記第1のスループット係数より大きい場合、前記第2の処理時間を処理時間とする前記変数を処理するスレッドを固定の前記コアに割り当てることを示したコア割当情報を生成するステップ、を実行し、前記実行部が、前記解析部によって生成された前記コア割当情報に基づいて、前記第2の処理時間を処理時間とする前記変数を処理するスレッドを固定の前記コアに割り当てて、前記プログラムを実行するステップを実行することを特徴とする。
このような構成によれば、実測した値を用いて前記(1)〜(8)の処理を実行して変数のバリエーションを考慮した上で、キャッシュヒットによる効果が明らかな変数の処理のためのスレッドを特定している。例えば、前記(1)〜(5)の処理では、処理速度の向上のために、キャッシュヒットすることの効果の判定指標として、独立化判定値を算出している。そして、前記(6)〜(8)の処理では、独立化判定値によってキャッシュヒットすることの効果があると判定されたケースについて、スループット係数を算出して、前記効果を検証している。そして、前記検証結果に基づいて、そのスレッドを固定のコアに割り当てることができる。すなわち、変数のバリエーションを考慮しつつ、プロセッサの処理速度を向上することができる。
本発明は、前記記憶部が、前記CPUのコアのキャッシュサイズと、前記通常処理実行時に所定の周期で収集される、前記変数の、配列長、前記通常処理実行時に格納されるメモリのアドレス、およびデータサイズと、キャッシュヒット率の第2の閾値と、をさらに記憶しており、前記解析部が、前記変数について、前記記憶部から前記アドレスを読み出して異なるアドレスの数を集計した前記異なるアドレスの数と、前記記憶部から読み出した前記キャッシュサイズ、前記配列長、および前記データサイズとをパラメータとして、前記異なるアドレスの数の減少、前記配列長の減少、前記データサイズの減少、前記キャッシュサイズの増大、にしたがって大きな値となる前記キャッシュヒット率を算出する算出手段と、前記キャッシュヒット率が前記記憶部に記憶している前記第2の閾値より大きいか否かを判定する判定手段と、をさらに備え、前記解析部が、前記判定手段において前記キャッシュヒット率が前記第2の閾値より大きいと判定された場合、当該変数を、前記(1)および前記(2)の処理に用いる前記第1の変数として、前記(1)〜前記(8)の処理を実行することを特徴とする。
また、本発明は、前記プログラム実行装置が、前記CPUのコアのキャッシュサイズと、前記通常処理実行時に所定の周期で収集される、前記変数の、配列長、前記通常処理実行時に格納されるメモリのアドレス、およびデータサイズと、キャッシュヒット率の第2の閾値と、をさらに記憶している前記記憶部を備え、前記解析部が、前記変数について、前記記憶部から前記アドレスを読み出して異なるアドレスの数を集計した前記異なるアドレスの数と、前記記憶部から読み出した前記キャッシュサイズ、前記配列長、および前記データサイズとをパラメータとして、前記異なるアドレスの数の減少、前記配列長の減少、前記データサイズの減少、前記キャッシュサイズの増大、にしたがって大きな値となるキャッシュヒット率を算出する算出ステップ、前記キャッシュヒット率が前記記憶部に記憶している前記第2の閾値より大きいか否かを判定する判定ステップ、前記判定ステップにおいて前記キャッシュヒット率が前記第2の閾値より大きいと判定された場合、当該変数を、前記(1)および前記(2)の処理に用いる前記第1の変数として、前記(1)〜前記(8)の処理を実行するステップを実行することを特徴とする。
このような構成によれば、キャッシュヒット率に基づいて、前記(1)〜前記(8)の処理に用いる変数の候補を大まかに絞ることができる。したがって、特定のコアにスレッドを割り当て実行する変数を決定するために掛かる時間を短縮することができるので、短時間でプロセッサの処理速度の向上を図ることができる。
本発明によれば、プロセッサの処理速度を向上する技術を提供することができる。
本実施形態における高速処理システムの構成例を示す図である。 高速処理システムの処理シーケンス例を示す図である。 プログラム解析の例およびデータの解析例を示す図である。 高速処理システムの解析部における処理フロー例を示す図である。 独立化処理するか否かの判定例を示す図である。 本実施形態において、スレッドのコア割り当ての例を示す図である。 高速処理システムの適用例を示す図である。
本発明を実施するための形態(以降、「本実施形態」と称す。)におけるプログラム実行装置は、プロセッサ上でのソフトウェアの処理速度を向上させるために、バリエーションが少ないデータを扱うスレッドを決定し、そのスレッドをマルチコアプロセッサのコアに固定的に割り当てつつ、パイプライン状(後記)に並列処理する構成を備えている。以下に、それらの構成および処理フローについて、適宜図面を参照しながら詳細に説明する。
本実施形態におけるプログラム実行装置の構成について、図1を用いて説明する。
図1に示すように、プログラム実行装置10は、ネットワーク20内に配置され、ネットワーク20に接続しているPC(Personal Computer)等の端末30(30A,30B,30C)との間で、情報を送受信可能になっている。プログラム実行装置10は、端末30からデプロイされたプログラムに基づいて、その処理動作が決定される。なお、プログラム実行装置10は、例えば、汎用コンピュータ、サーバ、ルータ等である。
プログラム実行装置10は、端末30Cからデプロイされたプログラムを受信し、そのプログラムを動作させて、端末30Aから受信したデータに処理を施し、端末30Bに処理後の処理データを送信する。
なお、図1では、端末30を3台しか記載していないが、4台以上がネットワーク20に接続していても構わない。
次に、プログラム実行装置10の構成例について説明する。
図1に示すように、プログラム実行装置10は、入力部11、実行部12、出力部13、解析部14、記憶部15、および受付部16を備える。プログラム実行装置10は、図示しないCPUおよびメインメモリによって構成される処理部(不図示)とアプリケーションプログラム等を記憶する記憶部15とで構成される。処理部は、記憶部15に記憶されているアプリケーションプログラムをメインメモリに展開して、実行部12および解析部14を具現化する。
入力部11は、通信インタフェースであり、端末30から処理用のデータを含むデータ情報を受信する。
実行部12は、解析部14によって生成されたプログラムのスレッドを記憶部15から取得して、その取得したスレッドを実行し、入力部11を介して取得したデータに対して、処理を実行する。
出力部13は、通信インタフェースであり、端末30へ処理結果をデータとして含むデータ情報を送信する。
解析部14は、端末30からデプロイされたプログラムをスレッドに分割するコンパイル処理を実行し、その分割したスレッド(分割プログラム)を記憶部15に記憶する。また、解析部14は、スレッドを、どのようにコアに割り当てるかを決定する処理を実行し、その割り当てに関するコア割当情報(後記)を記憶部15に記憶する。
受付部16は、通信インタフェースであり、端末30からデプロイされたプログラムを含むプログラム情報を受信する。なお、受付部16は、ネットワーク20を介さずに、端末30Cに通信ケーブルを介して直接接続するインタフェースであっても構わない。
記憶部15は、解析部14によって処理された結果等を記憶している。
次に、プログラム実行装置10の処理シーケンス例について、図2を用いて説明する(適宜、図1参照)。
ステップS201では、端末30Cが、プログラム実行装置10に実行させるプログラムをプログラム実行装置10へデプロイ(送信)し、受付部16がそのプログラムを受け付ける。なお、プログラムは、逐次処理用のプログラムであっても構わない。
ステップS202では、受付部16が、記憶部15に受け付けたプログラムを記憶する。
ステップS203では、解析部14が、記憶部15からプログラムを取得する。この取得のタイミングは、例えば、新しくプログラムが記憶されたタイミングとする。
ステップS204では、解析部14が、コンパイラレベルの解析を実行する。具体的には、解析部14は、プログラムをコンパイルし、スレッドに分割した分割プログラムを生成する。
ステップS205では、解析部14は、解析結果(分割プログラム)を記憶部15に記憶する。
ステップS206では、実行部12が、記憶部15から、分割プログラムを取得する。この取得のタイミングは、例えば、新しく解析結果が記憶されたタイミングとする。そして、実行部12は、分割プログラムに基づいて、太線に示すように、通常処理(逐次処理)を実行状態にする。
ステップS207では、端末30Aが、データを含むデータ情報をプログラム実行装置10へ送信し、入力部11がそのデータ情報を受け付ける。
ステップS208では、実行部12が、入力部11を介してデータを取得する。
ステップS209では、実行部12が、取得したデータに対して、通常処理(逐次処理)を実行する。
ステップS210〜S211では、実行部12が、出力部13を介して、処理結果を含むデータ情報を端末30Bへ出力する。
ステップS212では、実行部12が、予め設定された周期ごとに、通常処理によって処理したデータの処理経過状況および処理開始時刻を、解析用データとして収集し、記憶部15に記憶する。処理経過状況とは、例えば、プログラムに記述されている関数の引数(変数)のデータサイズ、その変数が格納されたメモリ上のアドレス等である。例えば変数が配列になっている場合は、配列長×各要素のデータサイズが、変数としてのデータサイズになる。処理開始時刻とは、例えば、その変数について処理が開始された時刻である。
ステップS213では、解析部14が、記憶部15に記憶された解析用データを取得する。
ステップS214では、解析部14が、記憶部15に記憶されている解析用データを読み出して、解析する。この解析によって、高速処理を実施できるか否かを判定し、高速処理を実施できると判定した場合に、どのスレッドをコアに占有して割り当てるかを表すコア割当情報を作成する。なお、解析部14は、高速処理を実施できないと判定した場合には、コア割当情報を作成しない。
ステップS215では、解析部14が、ステップS214において作成したコア割当情報を記憶部15に記憶する。なお、解析部14は、高速処理を実施できないと判定した場合に、既に記憶部15にコア割当情報が記憶されているとき、当該コア割当情報を消去する。
ステップS216では、実行部12が、記憶部15から、コア割当情報を取得する。そして、実行部12は、当該コア割当情報に基づいて、太い点線に示すように、高速処理(コア占有処理)を実行状態にする。なお、記憶部15にコア割当情報が記憶されていない場合には、高速処理(コア占有処理)は実行状態とならず、通常処理(逐次処理)を継続することになる。
ステップS217では、端末30Aが、データを含むデータ情報をプログラム実行装置10へ送信し、入力部11がそのデータ情報を受け付ける。
ステップS218では、実行部12が、入力部11を介してデータを取得する。
ステップS219では、実行部12が、取得したデータに対して、高速処理(コア占有処理)を実行する。
ステップS220〜S221では、実行部12が、出力部13を介して、処理結果を含むデータ情報を端末30Bへ出力する。
なお、ステップS214における解析部14は、記憶部15から、少なくとも繰返し2回以上の解析用データを取得した上で、その解析用データに対して統計処理を施して平均値を算出する等の前処理を行った後、解析を行うことが好ましい。
ここで、図2のステップS212において、実行部12が解析用データを収集する方法の一例について、図3を用いて説明する。
図3の左側は、プログラムの一例を示している。ただし、プログラム言語は、限定されなくてもよい。プログラム中の実行文および変数に対して、処理経過状況および処理開始時刻を収集する動作を有する指定子(図3では、analyzeと表している。)が付加される。そして、実行部12は、この指定子に基づいて、プログラムに記述されている関数の変数のデータサイズ(変数が配列の場合は配列長×各要素のデータサイズ)、その変数が格納されたアドレス、および処理開始時刻を予め設定された周期で収集する。
図3の右側は、収集結果の例を示している。本実施形態では、配列(例えば、a0,a1等)の要素数や木の葉数(例えば、tree0,tree1等)が計測可能なデータ構造を収集対象としているが、これに限られることはなく、規模が計測可能なものであれば、他の要素であっても構わない。なお、以降の説明では、木構造は配列で表現することができるので、木と配列とを区別せずに、配列と表記することにする。
図3に示すように、配列の配列長(配列の要素の数)、配列の各要素のデータサイズ、キャッシュヒット(hitと表示)であったか、キャッシュミス(missと表示)であったか、処理開始時刻、通常処理(逐次処理)の中で呼び出しているアドレス、および配列のデータサイズを集計対象としている。
次に、図2のステップS214における解析部14の処理フローについて、図4を用いて説明する(適宜、図2,3参照)。
ステップS401では、解析部14は、記憶部15に記憶されている解析用データを取得する。そして、解析部14は、解析用データに統計処理を施して、解析用データのうち異なるアドレスの数(Kと表記)を集計し、配列長の平均値(Lと表記)、各要素のデータサイズの平均値(Eと表記)を算出する。また、解析部14は、プログラム実行装置10のシステム情報(不図示)等から、コアのキャッシュサイズCを取得する。
ステップS402では、解析部14は、キャッシュヒット係数P(=(1/K+1/L)×C/E)を算出する。ここで、キャッシュヒット係数Pの特性について、以下に説明する。例えば、キャッシュヒット係数Pは、Kが大きい場合、すなわち、演算するたびに毎回異なるアドレスとなる場合には、スレッドが使用するアドレス領域が広いため、L2キャッシュにヒットする確率も小さくなると考えられ、値として小さくなるように見積もる。また、キャッシュヒット係数Pは、Lが大きい場合に関しても、該当箇所の処理が扱うデータがL2キャッシュに入りきらない可能性が高くなるため、値として小さくなるように見積もる。また同様に、キャッシュヒット係数Pは、Eが大きい場合にも、該当箇所の処理が扱うデータがL2キャッシュに入りきらない可能性が高くなるため、値として小さくなるように見積もる。また、キャッシュヒット係数Pは、Cが大きいほど、該当箇所の処理が扱うデータのL2キャッシュに入りきる可能性が高くなるため、値として大きくなるように見積もる。すなわち、キャッシュヒット係数Pを用いることで、スレッド処理化した際にキャッシュに収まり得るデータを扱う処理箇所の候補を、大まかに抽出することができる。
ステップS403では、解析部14は、キャッシュヒット係数Pが予め設定してある閾値Th0(第2の閾値)より大きいか否かを判定する。なお、閾値Th0(第2の閾値)は、独立化処理を分類するための閾値であり、記憶部15に記憶されている。
そして、Pが閾値Th0(第2の閾値)より大きい場合(ステップS403でYes)には、ステップS404では、解析部14は、その指定子の振られた処理を独立化処理(コアに占有して割り当てて実行する処理)の候補に設定する。
また、Pが閾値Th0(第2の閾値)以下の場合(ステップS403でNo)には、処理はステップS413へ進む。
このステップS401〜S404の処理は、独立化処理のスレッドを確定するための前処理であって、独立化処理に当てはまらないものを大まかに振るい落とす効果がある。すなわち、独立化処理のスレッドを確定するためのステップS405以降の処理時間を短縮する効果もある。したがって、変数が少ない場合等には、ステップS401〜S404の処理を省略することも可能である。
ステップS405では、解析部14は、独立化処理の候補について、記憶部15に記憶している解析用データ中から処理開始時刻を読み出して、独立化判定値Fを算出する。ただし、F=通常処理時の処理時間M/キャッシュヒット時の処理時間Hである。
ここで、その処理の具体例について、図5を用いて説明する。
図5(a)の上段は、通常処理における指定子の振られた処理[a1]の処理時間を表している。すなわち、処理[a1]の処理開始時刻(=101001)から処理[a2]の処理開始時刻(=101250)までの時間を、通常処理における指定子の振られた処理時間(M)として表す。図5(a)では、そのMの値は「249」である。なお、Mの値は、キャッシュヒットおよびキャッシュミスのいずれであっても区別せずに、統計処理によって算出される。例えば、Mの値は、平均値である。
次に、図5(a)の下段は、キャッシュヒットした場合の処理[a1]の処理時間を表している。すなわち、処理[a1]の処理開始時刻(=318741)から処理[a2]の処理開始時刻(=318806)までの時間を、キャッシュヒットした場合の処理時間(H)として表す。図5(a)では、そのHの値は「55」である。なお、Hの値は、キャッシュヒットした場合の処理時間のみを対象として、統計処理によって算出される。例えば、Hの値は、平均値である。
そして、図5(a)のケースでは、独立化判定値Fは、M/H=249/55=4.53として求まる。
また、図5(b)の上段は、通常処理における指定子の振られた処理[a2]の処理時間を表している。すなわち、処理[a2]の処理開始時刻(=101250)から処理[a3]の処理開始時刻(=101510)までの時間を、通常処理における指定子の振られた処理時間(M)として表す。図5(b)では、そのMの値は「260」である。
次に、図5(b)の下段は、キャッシュヒットした場合の処理[a2]の処理時間を表している。すなわち、処理[a2]の処理開始時刻(=318806)から処理[a3]の処理開始時刻(=318846)までの時間を、キャッシュヒットした場合の処理時間(H)として表す。図5(b)では、そのHの値は「40」である。
そして、図5(b)のケースでは、独立化判定値Fは、M/H=260/40=6.5として求まる。
図4へ戻って、ステップS406では、解析部14は、独立化処理の候補の処理に含まれるスレッド数を閾値として、独立化判定値Fが、当該閾値より大きいか否かを判定する。なお、この閾値は、ステップS204のコンパイラレベルの解析において算出され、ステップS205の解析結果(分割プログラム)とともに記憶部15に記憶される。
例えば、図5に示す例において、閾値が5である場合には、図5(a)の場合は、独立化判定値F=4.53<閾値(=5)であるので、独立化処理にしないと判定する。また、図5(b)の場合は、独立化判定値F=6.5>閾値(=5)であるので、独立化処理にすると判定する。
すなわち、この判定では、独立化判定値F=閾値の場合は、元の並列度倍の高速化となることを意味している。そして、独立化判定値F>閾値の場合であれば、独立化処理の候補は、1コアで捌ききることができ、コアを占有させる効果(処理速度の向上)を期待できる。
ステップS406において、独立化判定値Fが閾値以下の場合(ステップS406でNo)、処理はステップS413へ進む。
また、独立化判定値Fが閾値より大きい場合(ステップS406でNo)、ステップS407では、解析部14は、当該候補を独立化処理に確定する。なお、独立化判定値Fが閾値より大きい場合は、確定した独立化処理におけるスレッドは、キャッシュ内に収まり得るデータを扱う高速処理可能なスレッドとなっている。
ステップS408では、解析部14は、独立化処理が連続、かつPが予め設定された所定の閾値(Th1)より小さいか、またはそうでないかを判定する。なお、閾値(Th1)は、独立化処理を連結するか否かの判定に用いる閾値であり、記憶部15に記憶されている。
独立化処理が連続しており、かつPが予め設定された所定の閾値(Th1)より小さいと判定された場合(ステップS408でYes)、ステップS409では、解析部14は、連続する独立化処理を1つの独立化処理にまとめる。閾値(Th1)に充分小さい値を設定した場合、その閾値(Th1)より小さくなるということは、1つのコアにおけるL2キャッシュのサイズで領域が余り得ることを示唆している。したがって、このような独立化領域が連続する限り分割をせずに1つのスレッドとする。このような処理を行うことで、スレッドの粒度を大きくすることによって、パイプライン処理(後記)で発生し得るデメリットを低減できるようになる。すなわち、パイプライン処理において、処理間でのデータの入出力の調整のために設けられるキューにおける待ち時間を小さくすることができる。つまり、処理速度を向上させることができる。
また、ステップS408でNoの場合、処理は、ステップS409をスキップして、ステップS410へ進む。
ステップS410では、解析部14は、独立化処理について、スループット係数THを算出する。
スループット係数THの算出の具体例について、図6を用いて説明する。なお、図6の例では、プロセッサのコアが16であるとし、1コアに1スレッドを割り当てるものとする。
図6の上段は、通常処理(16スレッド使用)における処理時間と、コア占有処理の場合における処理時間とを示している。なお、コア占有処理とは、CPUのコアを、独立化処理を占有的に配置する領域と、それ以外の領域とに分けてスレッドを割り当てるようにしたものである。例えば、図6の左下の図のように、1つの独立化処理を、1つの占有コア(斜め線を付したコア)に固定的に配置する。そして、それ以外の処理は、通常処理の分割スレッド用コアの領域(斜め線を付していないコア)に、特に制限なくスレッド配置するものとする。また、コア占有処理を用いる場合には、独立化処理と通常処理(分割スレッド処理)とが混在するため、図6中の右下に示す、パイプライン状に分割された処理が実行される。
このパイプライン状の処理は、分割したスレッドごとに、独立に次々に処理を実行していくため、並列処理を実行することができ、処理速度を向上させることができる。例えば、公知例(Matt Welsh, etal.,「SEDA:An Architecture for Well-Conditioned, Scalable Internet Services」,SOSP2001, October, 2001)に開示されている方法を用いて行うことができる。そこで、本実施形態では、コア占有処理を実行する場合に、図6に示すように、パイプライン状の処理を適用する。
図6に示すように、指定子の振られた処理b0,b1,b2,b3,b4について、通常処理における処理時間は、それぞれ、80,90,80,100である。それに対して、コア占有処理における処理時間は、独立化処理スレッド0および独立化処理スレッド2をそれぞれ占有コアに割り当てて処理を行うことを想定した場合、接続遅延(処理間でのデータの入出力の調整のための待ち時間)を5と仮定すると、それぞれ5,5,90,5,5,5,100である。なお、独立化処理スレッドの処理時間には、キャッシュヒットした場合の処理時間を用いる。
ここで、スループット係数THは、コア数Cと、処理時間の合計Tとを用いて、コア数Cを処理時間の合計Tで除算する演算によって算出することができる。なお、コア数Cは、記憶部15に記憶されている。
通常処理の場合のスループット係数THは、C/T=(16−0)/(80+90+80+100)=0.046となる。また、コア占有処理の場合のスループット係数THは、C/T=min{1/(5(スレッド0)+5(接続遅延))=0.1,1/(5(スレッド2)+5(接続遅延))=0.1,(16−2)/(90(スレッド1)+5(接続遅延)+100(スレッド3))=0.072}=0.072となる。ただし、minは、最小値を選択する関数である。この関数は、コア割り当てをした際に最もボトルネックとなる箇所が、最終的なスループットとなることを決定している。この例では、コア占有側ではない方でボトルネックが発生していることが分かる。
図4へ戻って、ステップS411では、解析部14は、コア占有処理のスループット係数THが通常処理のスループット係数THより大きいか否かを判定する。
コア占有処理のスループット係数THが通常処理のスループット係数THより大きい場合(ステップS411でYes)、ステップS412では、解析部14は、コア占有処理(高速処理)のために、前記したコア割当情報を記憶部15に記憶する。
また、コア占有処理のスループット係数THが通常処理のスループット係数TH以下の場合(ステップS411でNo)、ステップS413では、解析部14は、通常処理のために、コア割当情報を記憶部15から消去する。なお、ステップS413において、記憶部15にコア割当情報が記憶されていない状態であれば、解析部14は、消去処理を行わない。
以上、本実施形態で説明したプログラム実行装置10は、プロセッサの処理速度を向上させるように、スレッドを固定的に特定のコア(占有コア)に割り当てて実行させる独立化処理を決定する解析部14を備えている。具体的には、解析部14は、図4のステップS403において、キャッシュヒット係数Pを算出して、閾値と比較し、独立化処理の候補を絞る。解析部14は、図4のステップS406では、独立化判定値Fを算出して、閾値と比較し、候補の中から独立化処理を確定する。図4のステップS411では、解析部14は、スループット係数THを算出して、コア占有処理の方が通常処理よりスループット係数THが大きい場合に、コア占有処理を実行させるためのコア割当情報を作成する。そして、実行部12は、そのコア割当情報に基づいて、コア割当処理(高速処理)を実行する。したがって、本実施形態におけるプログラム実行装置10は、処理速度を向上させることができる。また、パイプライン状の処理を用いることによって、分割したスレッドごとに、独立に次々に処理を実行していくため、処理を並列に実行することができ、さらに処理速度を向上させることができる。
ここで、プログラム実行装置10を呼処理に適用した例について、図7を用いて説明する。
図7に示すように、サーバまたはルータ50がネットワーク20内に配置されている。サーバまたはルータ50は、ネットワーク20に接続している端末30Aから接続要求を受け付けて、呼処理を行って、接続先の端末30Bに接続要求を送信する。
図7では、サーバまたはルータ50は、負荷分散装置40と2台以上のプログラム実行装置10とを備え、プログラム実行装置10同士が並列に呼処理を実行する構成を備えている。なお、ネットワーク20の管理者が操作する管理端末31は、プログラム実行装置10に対して、プログラムをデプロイするために用いられる。そして、プログラム実行装置10は、デプロイされたプログラムに対して、前記した通常処理および高速処理を実行する。
なお、従来の呼処理のプログラムは、一般的に繰返し演算が少なく、逐次処理用に生成されている。したがって、呼処理は、スレッドがキャッシュヒットしたかどうかによって、処理速度が大きく異なっていた。それに対して、管理者等によってデプロイされたプログラムをプログラム実行装置10に適用することによって、安定して高速処理を実現させることができる。また、2台以上のプログラム実行装置10に対して、それぞれ担当する処理を決めておいて、それぞれのプログラム実行装置10に跨ってパイプライン状に並列処理させることによって、分散かつ並列度を高めることができ、処理速度を向上させることができる。
10 プログラム実行装置
12 実行部
14 解析部
15 記憶部
E データサイズ
F 独立化判定値
H キャッシュヒット時の処理時間
K 異なるアドレスの数
L 配列長
M 通常処理時の処理時間
P キャッシュヒット係数
TH スループット係数
Th0 閾値(第2の閾値)
Th1 閾値

Claims (4)

  1. プログラムをスレッドに分割し、前記スレッドそれぞれをCPU(Central Processing Unit)を構成するコアに割り当てて前記プログラムを実行するプログラム実行装置であって、
    任意の前記コアに任意の前記スレッドを割り当てて前記プログラムの処理を行う通常処理の実行時に所定の周期で収集される、前記プログラムに記述されている変数の処理開始時刻と、その変数の処理がキャッシュヒットしたことを示すキャッシュヒット情報と、を関連付けて記憶しているとともに、前記CPUのコア数と、キャッシュヒットの効果の判定に用いる閾値とを記憶している記憶部と、
    (1)前記変数の中の第1の変数の前記処理開始時刻およびその第1の変数の次に処理される第2の変数の前記処理開始時刻を読み出して差分を算出し、収集された回数分の前記差分の平均値を算出し、その算出した平均値を第1の処理時間とし、
    (2)前記変数の中の、前記キャッシュヒット情報が関連付けられた前記第1の変数の前記処理開始時刻および当該第1の変数の次に処理される第2の変数の前記処理開始時刻を読み出して差分を算出し、収集された回数分の前記差分の平均値を算出し、その算出した平均値を第2の処理時間とし、
    (3)前記第1の処理時間を前記第2の処理時間で除算して、独立化判定値を算出し、
    (4)前記独立化判定値が前記第1の変数の処理に用いるスレッド数を示す前記閾値より大きいか否かを判定し、その判定結果において大きいという判定の場合に、前記第1の変数の前記処理時間を前記第2の処理時間とし、その判定結果において否という判定の場合に、前記第1の変数の前記処理時間を前記第1の処理時間とし、
    (5)前記(1)〜前記(4)の処理を前記プログラムの変数について実行し、
    (6)前記CPUのコア数を、前記通常処理の実行時の前記プログラムの前記変数について前記第1の処理時間を合計した合計値で除算し、その値を第1のスループット係数とし、
    (7)前記CPUの1つのコアに、前記第2の処理時間を処理時間とする1つの前記変数の処理を実行させるように割り当てたときのスループットを、コア数の1を分子とし、前記第2の処理時間と当該変数の処理から次の処理までの待ち時間との合算値を分母とする第1の除算値を算出し、前記CPUのコア数から前記第2の処理時間を処理時間とする前記変数の数を減算して、その減算値を分子とし、前記プログラムの前記変数の中から前記第2の処理時間とならなかった前記変数の前記第1の処理時間と当該変数の処理の次の処理までの待ち時間との合計値を分母とする第2の除算値を算出し、前記第1の除算値および前記第2の除算値の中で最も小さい値を第2のスループット係数とし、
    (8)前記第2のスループット係数が前記第1のスループット係数より大きい場合、前記第2の処理時間を処理時間とする前記変数を処理するスレッドを固定の前記コアに割り当てることを示したコア割当情報を生成する解析部と、
    前記解析部によって生成された前記コア割当情報に基づいて、前記第2の処理時間を処理時間とする前記変数を処理するスレッドを固定の前記コアに割り当てて、前記プログラムを実行する実行部と
    を備えることを特徴とするプログラム実行装置。
  2. 前記記憶部は、前記CPUのコアのキャッシュサイズと、前記通常処理実行時に所定の周期で収集される、前記変数の、配列長、前記通常処理実行時に格納されるメモリのアドレス、およびデータサイズと、キャッシュヒット率の第2の閾値と、をさらに記憶しており、
    前記解析部は、
    前記変数について、前記記憶部から前記アドレスを読み出して異なるアドレスの数を集計した前記異なるアドレスの数と、前記記憶部から読み出した前記キャッシュサイズ、前記配列長、および前記データサイズとをパラメータとして、前記異なるアドレスの数の減少、前記配列長の減少、前記データサイズの減少、前記キャッシュサイズの増大、にしたがって大きな値となる前記キャッシュヒット率を算出する算出手段と、
    前記キャッシュヒット率が前記記憶部に記憶している前記第2の閾値より大きいか否かを判定する判定手段と、
    をさらに備え、
    前記解析部は、
    前記判定手段において前記キャッシュヒット率が前記第2の閾値より大きいと判定された場合、当該変数を、前記(1)および前記(2)の処理に用いる前記第1の変数として、前記(1)〜前記(8)の処理を実行する
    ことを特徴とする請求項1に記載のプログラム実行装置。
  3. プログラムをスレッドに分割し、前記スレッドそれぞれをCPUを構成するコアに割り当てて前記プログラムを実行するプログラム実行装置において用いられるプログラム実行方法であって、
    前記プログラム実行装置は、
    任意の前記コアに任意の前記スレッドを割り当てて前記プログラムの処理を行う通常処理の実行時に所定の周期で収集される、前記プログラムに記述されている変数の処理開始時刻と、その変数の処理がキャッシュヒットしたことを示すキャッシュヒット情報と、を関連付けて記憶しているとともに、前記CPUのコア数と、キャッシュヒットの効果の判定に用いる閾値とを記憶している記憶部と、解析部と、実行部と、を備え、
    前記解析部は、
    (1)前記変数の中の第1の変数の前記処理開始時刻およびその第1の変数の次に処理される第2の変数の前記処理開始時刻を読み出して差分を算出し、収集された回数分の前記差分の平均値を算出し、その算出した平均値を第1の処理時間とするステップ、
    (2)前記変数の中の、前記キャッシュヒット情報が関連付けられた前記第1の変数の前記処理開始時刻および当該第1の変数の次に処理される第2の変数の前記処理開始時刻を読み出して差分を算出し、収集された回数分の前記差分の平均値を算出し、その算出した平均値を第2の処理時間とするステップ、
    (3)前記第1の処理時間を前記第2の処理時間で除算して、独立化判定値を算出するステップ、
    (4)前記独立化判定値が前記第1の変数の処理に用いるスレッド数を示す前記閾値より大きいか否かを判定し、その判定結果において大きいという判定の場合に、前記第1の変数の前記処理時間を前記第2の処理時間とし、その判定結果において否という判定の場合に、前記第1の変数の前記処理時間を前記第1の処理時間とするステップ、
    (5)前記(1)〜前記(4)の処理を前記プログラムの変数について実行するステップ、
    (6)前記CPUのコア数を、前記通常処理の実行時の前記プログラムの前記変数について前記第1の処理時間を合計した合計値で除算し、その値を第1のスループット係数とするステップ、
    (7)前記CPUの1つのコアに、前記第2の処理時間を処理時間とする1つの前記変数の処理を実行させるように割り当てたときのスループットを、コア数の1を分子とし、前記第2の処理時間と当該変数の処理から次の処理までの待ち時間との合算値を分母とする第1の除算値を算出し、前記CPUのコア数から前記第2の処理時間を処理時間とする前記変数の数を減算して、その減算値を分子とし、前記プログラムの前記変数の中から前記第2の処理時間とならなかった前記変数の前記第1の処理時間と当該変数の処理の次の処理までの待ち時間との合計値を分母とする第2の除算値を算出し、前記第1の除算値および前記第2の除算値の中で最も小さい値を第2のスループット係数とするステップ、
    (8)前記第2のスループット係数が前記第1のスループット係数より大きい場合、前記第2の処理時間を処理時間とする前記変数を処理するスレッドを固定の前記コアに割り当てることを示したコア割当情報を生成するステップ、
    を実行し、
    前記実行部は、
    前記解析部によって生成された前記コア割当情報に基づいて、前記第2の処理時間を処理時間とする前記変数を処理するスレッドを固定の前記コアに割り当てて、前記プログラムを実行するステップ
    を実行することを特徴とするプログラム実行方法。
  4. 前記プログラム実行装置は、
    前記CPUのコアのキャッシュサイズと、前記通常処理実行時に所定の周期で収集される、前記変数の、配列長、前記通常処理実行時に格納されるメモリのアドレス、およびデータサイズと、キャッシュヒット率の第2の閾値と、をさらに記憶している前記記憶部を備え、
    前記解析部は、
    前記変数について、前記記憶部から前記アドレスを読み出して異なるアドレスの数を集計した前記異なるアドレスの数と、前記記憶部から読み出した前記キャッシュサイズ、前記配列長、および前記データサイズとをパラメータとして、前記異なるアドレスの数の減少、前記配列長の減少、前記データサイズの減少、前記キャッシュサイズの増大、にしたがって大きな値となるキャッシュヒット率を算出する算出ステップ、
    前記キャッシュヒット率が前記記憶部に記憶している前記第2の閾値より大きいか否かを判定する判定ステップ、
    前記判定ステップにおいて前記キャッシュヒット率が前記第2の閾値より大きいと判定された場合、当該変数を、前記(1)および前記(2)の処理に用いる前記第1の変数として、前記(1)〜前記(8)の処理を実行するステップ
    を実行することを特徴とする請求項3に記載のプログラム実行方法。
JP2010184509A 2010-08-20 2010-08-20 プログラム実行装置およびプログラム実行方法 Expired - Fee Related JP5379765B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010184509A JP5379765B2 (ja) 2010-08-20 2010-08-20 プログラム実行装置およびプログラム実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010184509A JP5379765B2 (ja) 2010-08-20 2010-08-20 プログラム実行装置およびプログラム実行方法

Publications (2)

Publication Number Publication Date
JP2012043232A true JP2012043232A (ja) 2012-03-01
JP5379765B2 JP5379765B2 (ja) 2013-12-25

Family

ID=45899445

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010184509A Expired - Fee Related JP5379765B2 (ja) 2010-08-20 2010-08-20 プログラム実行装置およびプログラム実行方法

Country Status (1)

Country Link
JP (1) JP5379765B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484537A (zh) * 2016-09-30 2017-03-08 网易(杭州)网络有限公司 一种cpu核资源的分配方法和设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612395A (ja) * 1992-06-29 1994-01-21 Canon Inc マルチプロセサシステムにおけるタスク割り付け方法
JP2007316710A (ja) * 2006-05-23 2007-12-06 Nec Corp マルチプロセッサシステム、ワークロード管理方法
WO2010093003A1 (ja) * 2009-02-13 2010-08-19 日本電気株式会社 演算資源割当装置、演算資源割当方法、及び、演算資源割当プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612395A (ja) * 1992-06-29 1994-01-21 Canon Inc マルチプロセサシステムにおけるタスク割り付け方法
JP2007316710A (ja) * 2006-05-23 2007-12-06 Nec Corp マルチプロセッサシステム、ワークロード管理方法
WO2010093003A1 (ja) * 2009-02-13 2010-08-19 日本電気株式会社 演算資源割当装置、演算資源割当方法、及び、演算資源割当プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484537A (zh) * 2016-09-30 2017-03-08 网易(杭州)网络有限公司 一种cpu核资源的分配方法和设备
CN106484537B (zh) * 2016-09-30 2019-07-19 网易(杭州)网络有限公司 一种cpu核资源的分配方法和设备
US10514955B2 (en) 2016-09-30 2019-12-24 Netease (Hangzhou) Network Co., Ltd. Method and device for allocating core resources of a multi-core CPU

Also Published As

Publication number Publication date
JP5379765B2 (ja) 2013-12-25

Similar Documents

Publication Publication Date Title
US11403220B2 (en) Method and apparatus for adaptive cache load balancing for SSD-based cloud computing storage system
US9767006B2 (en) Deploying trace objectives using cost analyses
US9658936B2 (en) Optimization analysis using similar frequencies
Bi et al. Dynamic provisioning modeling for virtualized multi-tier applications in cloud data center
KR101600129B1 (ko) 애플리케이션 효율 엔진
EP2956858B1 (en) Periodicity optimization in an automated tracing system
US9021447B2 (en) Application tracing by distributed objectives
US20230418997A1 (en) Comprehensive contention-based thread allocation and placement
US9965329B2 (en) Method and apparatus for workload placement on heterogeneous systems
JP6428476B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
US11188348B2 (en) Hybrid computing device selection analysis
US11716384B2 (en) Distributed resource management by improving cluster diversity
JP6252140B2 (ja) タスク割り付けプログラム及びタスク割り付け方法
JPH11259433A (ja) 並列実行システム
CN112000460A (zh) 一种基于改进贝叶斯算法的服务扩缩容的方法及相关设备
Tariq et al. Execution time prediction model that considers dynamic allocation of spark executors
JP5379765B2 (ja) プログラム実行装置およびプログラム実行方法
CN111367632B (zh) 一种基于周期特征的容器云调度方法
JP2011141703A (ja) 資源配置システム、資源配置方法、及び資源配置用プログラム
CN109992382A (zh) 任务调度方法、装置及任务调度器
Radojković et al. Thread to strand binding of parallel network applications in massive multi-threaded systems
Swain et al. Efficient straggler task management in cloud environment using stochastic gradient descent with momentum learning-driven neural networks
KR101810572B1 (ko) 멀티코어에서 태스크 및 가상 머신 성능의 온라인 특성 분류 장치 및 최적 배치 방법
Kelley et al. Rapid in-situ profiling of colocated workloads
WO2023039711A1 (en) Efficiency engine in a cloud computing architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121001

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130918

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130927

R150 Certificate of patent or registration of utility model

Ref document number: 5379765

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees