JP5458030B2 - 並列カウント処理装置、通信装置、並列カウント処理方法、およびプログラム - Google Patents

並列カウント処理装置、通信装置、並列カウント処理方法、およびプログラム Download PDF

Info

Publication number
JP5458030B2
JP5458030B2 JP2011009341A JP2011009341A JP5458030B2 JP 5458030 B2 JP5458030 B2 JP 5458030B2 JP 2011009341 A JP2011009341 A JP 2011009341A JP 2011009341 A JP2011009341 A JP 2011009341A JP 5458030 B2 JP5458030 B2 JP 5458030B2
Authority
JP
Japan
Prior art keywords
limit value
storage unit
range
count
count 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.)
Expired - Fee Related
Application number
JP2011009341A
Other languages
English (en)
Other versions
JP2012150679A (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.)
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 JP2011009341A priority Critical patent/JP5458030B2/ja
Publication of JP2012150679A publication Critical patent/JP2012150679A/ja
Application granted granted Critical
Publication of JP5458030B2 publication Critical patent/JP5458030B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、数をカウントするカウント処理の並列処理数の増加に応じた、スループットのスケーラビリティを確保する技術に関する。
インターネット上で、動画共有サイトやダウンロードサイト等として動作する複数のサーバによって構成されるサーバ群がある。このサーバ群では、特定のユーザや特定のデータで、そのリソースのすべてが消費されないようにするために、同時接続数やダウンロード回数等に上限を設定することが行われている。そのため、サーバは、自身の同時接続数やダウンロード回数をカウントしつつ、サーバ群全体として特定のユーザや特定のデータに関する同時接続数やダウンロード回数の合計数を更新したり、取得したりする必要がある。その際、サーバ群は、各サーバから共通にアクセスされる合計数の一貫性(コヒーレンス)を保つ必要がある。
前記したサーバ群に類似する構成として、マルチコアプロセッサがある。マルチコアプロセッサでは、メインメモリ上のデータとキャッシュメモリ上のデータとの間に違いがある場合には、正しい処理が行われなくなってしまう。そこで、メインメモリのデータとキャッシュメモリのデータとの間の一貫性(キャッシュコヒーレンス)が保たれる必要がある。例えば、キャッシュコヒーレンス機能を備えたプロトコルとして、MESI(Modified Exclusive Shared Invalid)プロトコル(非特許文献1参照)が挙げられる。
MESIプロトコルは、キャッシュラインに対して、Modified(変更)、Exclusive(排他)、Shared(共有)、Invalid(無効)のいずれの操作が必要かを判定し、メインメモリのデータとキャッシュメモリのデータとの間の一貫性を保つ手段を備えている。
T. Suh, D.M. Blough, H.-H.S. Lee,"Supporting cache coherence in heterogeneous multiprocessor systems", Design, Automation and Test in Europe Conference and Exhibition, 2004. Proceedings Vol.2, p.1150-1155 (2004)
前記サーバ群では同時接続数やダウンロード回数等の数をカウントする場合を例示したが、このカウント機能を前記したサーバにマルチコアプロセッサを備えて実現し、各コアが並列してカウントを実行した場合、サーバ群全体のカウント処理の速度が向上すると想定される。
しかしながら、MESIプロトコルは、マルチコアプロセッサのコア数(並列に処理するスレッドの数)の増加に伴って、キャッシュコヒーレンスの回数が増加するため、そのキャッシュコヒーレンスの処理に費やされる時間が増加し、マルチコアプロセッサのスループットの低下をまねく虞がある。
前記虞と同様に、サーバ群においても、サーバ数の増加に伴って、共通にアクセスされる合計数の一貫性を保つ処理(キャッシュコヒーレンス処理に相当)の回数が増加するため、その処理に費やされる時間が増加し、サーバ群全体のスループットの低下をまねく虞もある。
そこで、本発明は、数をカウントするカウント処理の並列処理数の増加に応じて、スループットのスケーラビリティを確保することを課題とする。
本発明は、数をカウントするカウント処理部を複数備える並列カウント処理装置であって、前記カウント処理部がカウントする数の第1の限界値の範囲と、前記並列カウント処理装置のカウントする数の第2の限界値の範囲と、当該カウント処理部がカウントした数値とを記憶している第1の記憶部と、各前記カウント処理部に設定された前記第1の限界値の範囲の上限値の合計を、前記第2の限界値の範囲の上限値から減算した数値を残数として記憶している第2の記憶部と、前記カウントした数値と前記第1の限界値の範囲とを比較し、当該カウントした数値が前記第1の限界値の範囲に入ると判定した場合、当該カウントした数値を前記第1の記憶部に記憶し、当該カウントした数値が前記第1の限界値の範囲に入らないと判定した場合、前記第1の限界値の範囲から外れた分の差分値を前記第2の記憶部の前記残数から減算した数値を新たな前記第2の記憶部の前記残数として記憶し、前記新たな前記第2の記憶部の前記残数と前記第2の限界値の範囲とを比較し、当該新たな前記第2の記憶部の前記残数が前記第2の限界値の範囲に入ると判定した場合、前記差分値を前記第1の限界値の範囲の上限値に加算して前記第1の記憶部の前記第1の限界値の範囲を更新し、当該新たな前記第2の記憶部の前記残数が前記第2の限界値の範囲に入らないと判定した場合、当該新たな前記第2の記憶部の前記残数に前記差分値を加算して前記第2の記憶部の前記残数を書き換えて更新する前記カウント処理部とを備えることを特徴とする。
また、本発明は、数をカウントするカウント処理部を複数備える並列カウント処理装置において用いられる並列カウント処理方法であって、前記並列カウント処理装置が、前記カウント処理部がカウントする数の第1の限界値の範囲と、前記並列カウント処理装置のカウントする数の第2の限界値の範囲と、当該カウント処理部がカウントした数値とを記憶している第1の記憶部と、各前記カウント処理部に設定された前記第1の限界値の範囲の上限値の合計を、前記第2の限界値の範囲の上限値から減算した数値を残数として記憶している第2の記憶部と、複数の前記カウント処理部と、を備え、前記カウント処理部が、前記カウントした数値と前記第1の限界値の範囲とを比較し、当該カウントした数値が前記第1の限界値の範囲に入ると判定した場合、当該カウントした数値を前記第1の記憶部に記憶し、当該カウントした数値が前記第1の限界値の範囲に入らないと判定した場合、前記第1の限界値の範囲から外れた分の差分値を前記第2の記憶部の前記残数から減算した数値を新たな前記第2の記憶部の前記残数として記憶し、前記新たな前記第2の記憶部の前記残数と前記第2の限界値の範囲とを比較し、当該新たな前記第2の記憶部の前記残数が前記第2の限界値の範囲に入ると判定した場合、前記差分値を前記第1の限界値の範囲の上限値に加算して前記第1の記憶部の前記第1の限界値の範囲を更新し、当該新たな前記第2の記憶部の前記残数が前記第2の限界値の範囲に入らないと判定した場合、当該新たな前記第2の記憶部の前記残数に前記差分値を加算して前記第2の記憶部の前記残数を書き換えて更新することを特徴とする。
このような構成によれば、並列カウント処理装置は、各カウント処理部のカウント数が第1の記憶部に記憶されている第1の限界値の範囲内であれば、第2の記憶部の残数が更新されないため、すなわち、キャッシュコヒーレンスのための処理が不要となるため、並列に処理するスレッドの数を増加させても、スループットのスケーラビリティを確保することが可能となる。
また、本発明は、前記カウント処理部が、前記第1の限界値の範囲の上限値から前記カウントした数値を減算した減算値と前記残数とを比較し、前記減算値が前記残数より大きいと判定した場合、前記第1の限界値の範囲の上限値から前記減算値に対する所定の割合の値を減算して前記第1の限界値の範囲を更新し、前記第2の記憶部の前記残数に前記減算値に対する所定の割合の値を加算して前記第2の記憶部の前記残数を更新することを特徴とする。
このような構成によれば、カウント処理部は、第1の記憶部に記憶している第1の限界値の範囲が実際のカウント数より大き過ぎるか否かを判定し、ローカルに持つ第1の限界値の範囲を設定変更することができる。言い換えると、カウント処理部は、第1の限界値の範囲が実際のカウント数より大き過ぎると判定した場合、第2の記憶部の残数を増加させ、他のカウント処理部が、より大きな第1の限界値の範囲に変更することが可能なようにすることができる。つまり、他のカウント処理部は、より大きく変更した第1の限界値の範囲内であれば、第2の記憶部の残数を更新する必要がないため、並列に処理するスレッドの数を増加させても、スループットのスケーラビリティを確保することが可能となる。
また、本発明は、ユーザの使用する装置とネットワークを介して通信可能に接続され、前記装置間の通信接続を制御する通信装置が、前記カウント処理部によってカウントされる前記数として、通信に用いるセッション数をカウントする前記並列カウント処理装置を備えることを特徴とする。
このような構成によれば、例えば、通信装置が通信接続の制御を実行するSIP(Session Initiation Protocol)サーバ等である場合には、前記並列カウント処理装置を備えているので、セッション数のカウントにおいて、並列に処理するスレッドの数を増加させても、スループットのスケーラビリティを確保することが可能となる。
また、本発明は、ユーザの使用する端末とネットワークを介して通信可能に接続され、サービス提供用の情報を蓄積している通信装置が、前記カウント処理部によってカウントされる前記数として、前記端末から前記サービス提供用の情報をダウンロードした回数をカウントする前記並列カウント処理装置を備えることを特徴とする。
このような構成によれば、例えば、通信装置がサービス提供用の情報を蓄積しているサーバ等である場合には、前記並列カウント処理装置を備えているので、ダウンロード数のカウントにおいて、並列に処理するスレッドの数を増加させても、スループットのスケーラビリティを確保することが可能となる。
また、本発明は、前記並列カウント処理方法を、コンピュータである前記並列カウント処理装置に実行させるためのプログラムとした。このようなプログラムをインストールされたコンピュータは、このプログラムに基づいた機能を実現することができる。
本発明によれば、数をカウントするカウント処理の並列処理数の増加に応じて、スループットのスケーラビリティを確保することができる。
比較例として同じキャッシュラインにアクセスする並列カウント処理装置(マルチコアプロセッサ)の機能例を示す図である。 比較例の並列カウント処理装置(マルチコアプロセッサ)の動作例を示す図であり、(a)は処理シーケンス例を表し、(b)は処理フロー例を表す。 第1実施形態の並列カウント処理装置(マルチコアプロセッサ)の構成例を示す図である。 第1実施形態の並列カウント処理装置(マルチコアプロセッサ)の処理シーケンス例を示す図である。 第1実施形態の並列カウント処理装置(マルチコアプロセッサ)の処理フロー例を示す図である。 第2実施形態において、第1実施形態の並列カウント処理装置(マルチコアプロセッサ)を備えた通信装置の構成例を示す図である。 第2実施形態における通信装置の処理シーケンス例を示す図である。 第3実施形態において、複数のサーバで構成されるサーバ群の構成例を示す図である。
本発明を実施するための形態(以降、「実施形態」と称す。)の比較例として、同じキャッシュラインにアクセスする並列カウント処理装置(マルチコアプロセッサ)について説明する。次に、第1実施形態として、スループットのスケーラビリティを確保可能な並列カウント処理装置(マルチコアプロセッサ)について説明し、第2実施形態として、第1実施形態の並列カウント処理装置(マルチコアプロセッサ)を通信装置に適用したケースについて説明し、第3実施形態として、複数のサーバによって構成されるサーバ群における並列カウント処理について説明する。以下に、比較例および各実施形態について、適宜図面を参照しながら詳細に説明する。
(カウント処理)
はじめに、数をカウントするカウント処理について説明する。本発明のカウント処理では、インクリメント処理またはデクリメント処理が定義でき、更に、交換法則および結合法則が成り立つものとする。
まず、インクリメント処理とは、これ以上砕くことのできない最小の演算処理を指すものとする。具体的には、ある空間において、原子的な値(シンボル)oが定義でき、その空間を満たす値が、すべて下記式の関数sのように表現できる場合をインクリメント処理と呼ぶことにする。ただし、下記式に示した関数sは、+1のインクリメントの場合を示している。なお、関数sは、例えば、3の倍数しか出現しない空間であれば+3のインクリメントを表すものであっても良い。
o≡0
s(o)≡1
s(s(o))=s(o)≡2
・・・
s(s(・・s(o)・・))=s(o)≡N
この場合、便宜的に関数sの再帰回数をそのまま、整数値として表現しても一般性は失われない。
また、マグニチュードのような対数空間ではs(x)=Aと表しても良い。
また、デクリメント処理は、下記式を満たすような関数s−1で表すことができる。
s(s(・・s(o)・・))=s(o)≡N
−1(N)=s−1(s(o))=sN−1(o)≡N−1
前記関数sとして、2項演算f(x,y)が定義できるとき、fについて交換・結合法則が成り立つとは、下記式のように、fをどのように入れ換えても、またどのような順番で演算を行っても結果が同じとなることを意味している。
f(f(x,y),z)=f(x,f(y,z))
f(x,y)=f(y,x)
例えば、f(x,y)=s(x)は、上記式を満足し、加減算の空間だけでなく、乗除算の(1次元)空間等も本発明の処理対象としても良い。
(比較例の並列カウント処理装置)
ここで、比較例の並列カウント処理装置(マルチコアプロセッサ)の機能例について、図1を用いて説明する。次に、比較例の並列カウント処理装置において、図2(a)では処理シーケンス例について説明し、図2(b)では処理フロー例について説明する。
比較例の並列カウント処理装置は、マルチコアプロセッサであり、図1に示すように論理的に表現した場合、複数のスレッドを並列に処理する並列スレッド処理部と、並列スレッド処理部からアクセスされる共有カウント記憶部とで構成される。図1の並列カウント処理装置は、複数のスレッド[0]〜[M−1]を並列に実行する。便宜的に、数をカウントするスレッドを実行しているコアをカウント処理部と称することにする。また、共有カウント記憶部は、L2(Level 2)キャッシュにおいて、メモリ上の所定のアドレスで指定されたキャッシュラインを表している。
図1の並列カウント処理装置は、カウント処理部のいずれかがカウント数を変更するたびに、共有カウント記憶部に記憶している累積カウント数(カウント処理部によってカウントされた数の合計数)を書き込み更新する。そして、並列カウント処理装置は、累積カウント数の更新のたびに、キャッシュコヒーレンスをとる必要がある。そのため、カウント処理部の数(言い換えると、並列処理するスレッドを実行するコアの数)を増加した場合、並列処理数の増加に応じて、カウント処理部間でキャッシュコヒーレンスをとる回数が増加し、キャッシュコヒーレンスに費やす処理時間が増大して、スループットのスケーラビリティを確保することが困難になる。
次に、図1の並列カウント処理装置における動作例について、図2を用いて説明する(適宜、図1参照)。なお、図2では、並列カウント処理装置の累積カウント数の上限値が30のケースを例示している。
まず、図1の並列カウント処理装置における処理シーケンス例について、図2(a)を用いて説明する(適宜、図1参照)。各スレッド[0]〜[M−1]は、累積カウント数30を限界値として、30未満であれば、+1の増加をカウントする。そのため、各スレッド[0]〜[M−1]は、共有カウント記憶部(同じキャッシュライン)に記憶されている累積カウント数をループで30以下か確認し続ける。
そして、数のカウントを開始してからある時間経過後に、スレッド[0]が+1の増加をカウントし、共有カウント記憶部の累積カウント数を10に更新する。この際、スレッド[0]は、他のスレッド[1]〜[M−1]とキャッシュコヒーレンスを一箇所ずつとる。そのため、スレッドの数(カウント処理部の数)が増加すると、キャッシュコヒーレンスに費やされる時間が増大する。
次に、スレッド[M−1]は、キャッシュコヒーレンスの後、+1の増加をカウントし、共有カウント記憶部の累積カウント数を11に更新する。この際、スレッド[M−1]は、他のスレッド[0]〜[M−2]とキャッシュコヒーレンスを一箇所ずつとる。
以降、同様にして、各スレッドがカウントアップしていく。なお、共有カウント記憶部への書き込み更新は、atomicな処理(変更中の状態があたかも存在しないように見せる処理)であり、キャッシュラインに早く書き込んだもの以外は、MESIプロコトル等によって破棄される。
図2(b)は、図2(a)の処理シーケンス例を、処理フロー形式で表したものである(適宜、図1参照)。
ステップS201では、カウント処理部は、共有カウント記憶部から累積カウント数Vを読み出し、カウント数の変化分xを、Vに加算し、仮の累積カウント数v’を算出する。ただし、変化分xは、正の場合には増加数を表し、負の場合には減少数を表す。
ステップS202では、カウント処理部は、仮の累積カウント数v’が累積カウント数の限界値の範囲(0以上、T未満)に入るか否かを判定する。ただし、Tは、並列カウント処理装置の累積カウント数の上限値を表す。
仮の累積カウント数v’が累積カウント数の限界値の範囲(0以上、T未満)に入ると判定した場合(ステップS202でYes)、ステップS203では、カウント処理部は、共有カウント記憶部に記憶されている累積カウント数Vを仮の累積カウント数v’で置き換え更新をする。なお、図2(b)中で、破線の四角で表示しているステップは、キャッシュコヒーレンスをともなう処理であることを表す。
そして、ステップS204では、並列カウント処理装置を備えたシステム(不図示)は、カウント範囲内の場合の処理Aを実行する。そして、処理は、ステップS201へ戻る。なお、処理Aは、例えば、並列カウント処理装置がダウンロードサイトに備えられている場合には、そのダウンロードサイトがダウンロードを受け付ける処理を表す。
また、ステップS202において、仮の累積カウント数v’が累積カウント数の限界値の範囲(0以上、T未満)に入らないと判定した場合(ステップS202でNo)、ステップS205では、並列カウント処理装置を備えたシステム(不図示)は、カウント範囲外の場合の処理Bを実行する。そして、処理は、ステップS201へ戻る。なお、処理Bは、例えば、並列カウント処理装置がダウンロードサイトに備えられている場合には、そのダウンロードサイトがダウンロードを受け付けないことを表す。
以上説明したように、比較例では、カウント処理部におけるカウント数が変化するたびに、キャッシュコヒーレンスの処理が発生するため、カウント処理の並列処理数の増加に応じて、スループットのスケーラビリティを確保することが困難である。
(第1実施形態)
そこで、第1実施形態では、カウント処理の並列処理数の増加に応じて、スループットのスケーラビリティを確保可能な並列カウント処理装置(マルチコアプロセッサ)の構成例について、図3を用いて説明する。
図3に示す並列カウント処理装置300は、構成を論理的に表現した場合、並列スレッド処理部310および共有カウント記憶部320で表される。並列スレッド処理部310は、複数のカウント処理部311と、カウント処理部311ごとに設けられるローカルカウント記憶部312(請求項に記載の第1の記憶部)とで論理的に形成される。
並列カウント処理装置300は、マルチコアプロセッサであり、複数のスレッド[0]〜[M−1]を並列に実行する。便宜的に、数をカウントするスレッドを実行しているコアをカウント処理部311と称する。また、共有カウント記憶部320は、L2キャッシュのメモリ上の所定のアドレスで指定されたキャッシュラインを表している。
ローカルカウント記憶部312は、コア[0]〜[N−1]ごとに設けられ、L2キャッシュのメモリ上の所定のアドレス(共有カウント記憶部320とは異なるアドレス)で指定されたキャッシュラインを表している。ここで、並列カウント処理装置300がカウントする累積カウント数Vの限界値の範囲を下限値0〜上限値Tとするとき、それぞれのコア[i]のローカルカウント記憶部312に対して、カウント数の限界値の範囲(下限値0〜上限値t)を配分する。
具体的には、カウント処理部311ごとのカウント数の限界値の範囲の上限値(以降、単に、上限値と称すこともある。)をtで表すと、コア数がN個の場合、上限値はt,・・、tN−1となる。なお、上限値tの合計値は、初期値として、T以下となるように設定される。例えば、任意のiに対して、t=T/(2N)のように、上限値tの合計値の初期値は、T未満であっても構わない。
そして、カウント処理部311は、カウント数が上限値t未満の場合おいては、スレッドの処理を実行しているコアに対応するローカルカウント記憶部312を用いて、カウントを実行する。そして、カウント処理部312は、カウントした数をローカルカウント記憶部312に記憶する。
また、共有カウント記憶部320(請求項に記載の第2の記憶部)は、次式(1)で示される残数rを記憶している。なお、残数rは、各カウント処理部311から共通にアクセス可能な共有変数である。
r=T−Σt (ただし、0≦i≦N−1) ・・式(1)
そして、カウント処理部311は、カウント数がローカルカウント記憶部312に記憶している限界値の範囲の上限値t未満の場合には、共有カウント記憶部320の残数rを更新する必要がない。なお、カウント処理部311は、カウント数がローカルカウント記憶部312に記憶している限界値の範囲の上限値tを超える場合には、共有カウント記憶部320の残数rを更新することになる。ただし、共有カウント記憶部320の残数rを更新する場合には、キャッシュコヒーレンスをとる必要がある。
つまり、図3に示す並列カウント処理装置300の構成は、カウントした数がローカルカウント記憶部312に記憶している限界値の範囲の上限値t未満の場合には、カウント処理の並列処理数の増加に応じて、スループットのスケーラビリティを確保することが可能である。
次に、第1実施形態の並列カウント処理装置300(マルチコアプロセッサ)の処理シーケンス例について、図4を用いて説明する(適宜、図3参照)。なお、図4は、複数のスレッド[0]〜[2]、すなわち、3個のカウント処理部311によって並列にカウントするケースを示している。また、各カウント処理部311のカウント数の上限値tが5であって、並列カウント処理装置300の累積カウント数の上限値Tが30の場合を表している。このとき、残数rは、式(1)を用いて、15と算出される。
各スレッド[0]〜[2]は、カウントした数v’が3+1=4までは、ローカルカウント記憶部312を用いてカウントする。したがって、このカウント数v’=4までは、カウント数の上限値t=5未満であるので、キャッシュコヒーレンスが必要とされない。
次に、スレッド[0]が、カウント数v’=3+1の後、+1の増加のカウントを実行する。具体的には、カウント数v’は4+1=5となる。カウント数v’=5では、カウント数の限界値の範囲(0以上、t=5未満)に入らないと判断されて、ローカルカウント記憶部312に記憶している限界値の範囲の上限値tを増加する処理が開始される。まず、スレッド[0]は、共有カウント記憶部320に記憶している残数rから必要とする分を減ずることが可能かを判定する。ただし、残数rの減算には、atomicな処理を用いる。これにより、他のスレッドが、次の判定処理(ステップS509)の前に残数rを減じてしまっても安全側に判定が行われるようにしている。言い換えると、並列カウント処理装置300が残数rを実際よりも大きいと誤認して、本来の並列カウント処理装置300の累積カウント数の上限値Tを超えるようなカウントアップが発生しないようにすることができる。
スレッド[0]は、カウント数v’=3+1の後、カウント数v’を+1増加するとともに、残数rを「1」減算する演算処理を実行する。すなわち、残数rは、r=r−1=15−1=14となる。次に、スレッド[0]は、残数r=14が、0以上でかつ累積カウント数の上限値T未満の範囲に入るか否かを判定する。スレッド[0]は、残数r=14が0以上でかつ累積カウント数の上限値T未満の範囲に入ると判定した場合、ローカルカウント記憶部312に記憶している限界値の範囲の上限値tを+1増加するように更新する。
次に、スレッド[1]は、前記したスレッド[0]の処理の場合と同様に、カウント数v’=3+1の後、カウント数v’を+1増加するとともに、共有カウント記憶部320に記憶されている残数rから「1」を減算する演算処理を実行して残数r=13とする。スレッド[1]は、残数r=13が0以上でかつ累積カウント数の上限値T未満の範囲に入ると判定した場合、ローカルカウント記憶部312に記憶している限界値の範囲の上限値tを+1増加するように更新する。
前記したように、共有カウント記憶部320の残数rを更新するときには、キャッシュコヒーレンスが必要とされる。しかし、残数rが変更されない間は、キャッシュコヒーレンスが必要とされないため、カウント処理の並列処理数の増加に応じて、スループットのスケーラビリティを確保することが可能となる。
そして、残数rが0未満になったときに、並列カウント処理装置300は、並列カウント処理装置300のカウント数の上限値Tに到達していると判定する。
次に、第1実施形態の並列カウント処理装置300における処理フロー例について、図5を用いて説明する(適宜、図3参照)。なお、図5に示す処理フロー例の中で、実線の矩形で表されたステップは、キャッシュコヒーレンスを必要としない処理を表す。また、破線の矩形で表されたステップは、キャッシュコヒーレンスを必要とする処理を表す。
また、図5で用いられる変数のうち、v、v’、およびtは、カウント処理部iにおいて用いられる変数であり、vはカウント済みの数値、v’は仮のカウント数を表し、tはカウント処理部iに設定されるカウント数の限界値の範囲(請求項に記載の第1の限界値の範囲)の上限値を表す。ただし、図5では、v’≧0である。rは共有カウント記憶部320に記憶されている残数(前記式(1)参照)を表し、Tは並列カウント処理装置300の累積カウント数の限定値の範囲(請求項に記載の第2の限界値の範囲)の上限値を表す。また、変数xは単位時間当たりのカウント数の変化分を表しており、正の場合は増加数を表し、負の場合は減少数を表すものとする。
ステップS500では、vとtとの初期値が設定される。すなわち、カウント処理部311は、v=0およびt=tを設定する。ただし、tは、並列カウント処理装置300の累積カウント数の上限値Tとコアの数Nとに基づいて予め決められた値である。例えば、t=T/(2N)としても良い。
ステップS501では、カウント処理部311は、現在のカウント数vに変化分xを加算し、加算した値をv’とする。
ステップS502では、カウント処理部311は、v’がカウント数の限界値の範囲(0以上t未満)に入るか否かを判定する。
v’がカウント数の限界値の範囲に入ると判定した場合(ステップS502でYes)、ステップS503では、カウント処理部311は、(t−v’)が残数rより大きいか否かを判定する。ここで、残数rは、共有変数であり、共有カウント記憶部320に記憶されている値である。
(t−v’)が残数r以下であると判定した場合(ステップS503でNo)、ステップS506では、カウント処理部311は、vをv’で置き換える。
ステップS507では、カウント処理部311は、カウント範囲内の場合の処理Aを実行する。そして、処理は、ステップS501へ戻る。なお、処理Aは、例えば、並列カウント処理装置300がダウンロードサイトに備えられている場合には、そのダウンロードサイトがダウンロードを受け付ける処理を表す。
また、ステップS503において、(t−v’)が残数rより大きいと判定した場合(ステップS503でYes)、ステップS504では、カウント処理部311は、tを{t−(t−v’)/2}で置き換える。
ステップS505では、カウント処理部311は、共有カウント記憶部320の残数rを{r+(t−v’)/2}で書き換え更新する。そして、処理はステップS506へ進む。
前記したステップ503の処理は、(t−v’)が残数rより大きい場合には、他のカウント処理部311においてカウント可能となるように、そのカウント処理部311が保持しているカウント数の限界値の範囲の上限値tを開放(減少)するためのものである。
次に、ステップS502において、v’がカウント数の限界値の範囲に入らないと判定した場合(ステップS502でNo)、ステップS508では、カウント処理部311は、共有カウント記憶部320の残数rをr−(v’−t+1)と書き換え更新する。このステップS508の処理は、atomicな処理で行われ、残数rから必要とする(v’−t+1)分を減ずることが可能かを確認するとともに、他のカウント処理部311によって同時に残数rが更新されて、キャッシュコヒーレンスがとれなくならないようにするためのものである。
ステップS509では、カウント処理部311は、残数rが累積カウント数の限界値の範囲(0以上T未満)に入るか否かを判定する。ただし、Tは、予めローカルカウント記憶部312に記憶されているものとする。
残数rが累積カウント数の限界値の範囲に入ると判断した場合(ステップS509でYes)、ステップS510では、カウント処理部311は、tをt+(v’−t+1)と書き換える。そして、処理はステップS506へ進む。
また、ステップS509において、残数rが累積カウント数の限界値の範囲に入らないと判断した場合(ステップS509でNo)、ステップS511では、カウント処理部311は、共有カウント記憶部320の残数rをr+(v’−t+1)と書き換え更新する。すなわち、カウント処理部311は、残数rを、ステップS508の処理前の数値に戻す処理を行う。
ステップS512では、カウント処理部311は、カウント範囲外の場合の処理Bを実行する。そして、処理は、ステップS501へ戻る。なお、処理Bは、例えば、並列カウント処理装置300がダウンロードサイトに備えられている場合には、そのダウンロードサイトがダウンロードを受け付けない処理を表す。
ここで、図5の処理フロー例について、いくつかの変形例について以下に説明する。
ステップS504およびステップS505では、(t−v’)/2を用いているが、これに限られず、(t−v’)に対する所定の割合の値を用いることとしても良い。
また、ステップS507の処理およびステップS512の処理は、カウント処理部311が行うものとして説明したが、並列スレッド処理部310または並列カウント処理装置300が実行しても構わない。具体的には、ステップS507では、カウント処理部311がステップS506の処理終了の情報を並列スレッド処理部310または並列カウント処理装置300に送信して、並列スレッド処理部310または並列カウント処理装置300がステップS507の処理を実行する。また、ステップS512では、カウント処理部311がステップS510の処理終了の情報を並列スレッド処理部310または並列カウント処理装置300に送信して、並列スレッド処理部310または並列カウント処理装置300がステップS512の処理を実行する。
また、図5では、v’≧0として説明したが、v’≦0の場合には、v、v’、t、r、およびTについて、正負の符号を反転させた上で、図5と同じ処理フロー例を実行すれば良い。
以上説明したように、第1実施形態の並列カウント処理装置300は、マルチコアプロセッサであり、例えば、1つのCPU(Central Processing Unit)に多数のコアを設けたメニーコアプロセッサと呼ばれるダイに、コア数を数十〜数百有するプロセッサが該当する。そして、各カウント処理部311は、ローカルカウント記憶部312に記憶しているカウント数の限界値の範囲内であれば、共有カウント記憶部320の残数rを更新する必要がないため、すなわち、キャッシュコヒーレンスの処理を不要とするため、並列に処理するスレッドの数を増加させても、スループットのスケーラビリティを確保することが可能となる。
(第2実施形態)
次に、第2実施形態では、第1実施形態の並列カウント処理装置(マルチコアプロセッサ)を通信装置に適用したケースについて、図6を用いて説明する。
図6は、第1実施形態の並列カウント処理装置300を備える通信装置600と、ユーザが使用する端末650とが、ネットワーク640を介して通信可能に接続されている構成を示している。
なお、図6では、通信装置600は、1台しか記載していないが、2台以上であっても構わない。また、端末650は、2台しか記載していないが、3台以上であっても構わない。
通信装置600は、例えば、動画共有サイトやダウンロードサイト等として動作するサーバである。この場合、通信装置600は、同時接続数やダウンロード回数等に上限を設定し、通信サービス等の情報提供を行う機能を備える。また、通信装置600は、例えば、SIPサーバであっても良い。この場合、通信装置600は、端末650間の通信接続を制御し、通信に用いるセッション数に上限を設定する機能を備える。
端末650は、例えば、PC(Personal Computer)であり、通信装置600にネットワーク640を介してアクセスする機能を備える。
図6に示すように、通信装置600は、少なくとも、情報受信部610、振分処理部620、並列カウント処理装置300、および情報送信部630を備える。通信装置600は、図示しないCPUおよびメインメモリによって構成される処理部(不図示)とアプリケーションプログラム等を記憶する記憶部(不図示)とで構成される。処理部は、記憶部に記憶されているアプリケーションプログラムをメインメモリに展開して、振分処理部620および並列カウント処理装置300を具現化する。また、処理部は、情報受信部610、振分処理部620、並列カウント処理装置300、および情報送信部630の間のデータの送受信等の制御を行う。
情報受信部610は、端末650から送信された情報を受信し、受信した情報を振分処理部620に受け渡す。
振分処理部620は、受信した情報の処理を担当するカウント処理部311を決定し、当該カウント処理部311に、受信した情報を受け渡す。担当するカウント処理部311の決定は、例えば、受信した情報の一部をハッシュ関数等に適用する処理に基づいて行われる。
並列カウント処理装置300は、図3に示した構成と同様であるので、その詳細を省略する。
情報送信部630は、情報受信部610が受信した情報に対応する応答情報を端末650に送信する。
通信装置600における処理シーケンス例について、図7を用いて説明する。
図7において、並列スレッド処理部310は、マルチスレッドプログラムの実行を開始する。その際、M本のスレッドを立ち上げるコアの個数Nが確定される。
そして、ステップS701では、並列スレッド処理部310は、共有カウント記憶部320とローカルカウント記憶部312との整合性をとるための初期設定を実行する。
ステップS702では、並列スレッド処理部310は、各カウント処理部311のカウント数の限界値の範囲(0以上、t未満)を設定する。
ステップS703では、情報受信部610は、端末650から情報qを受信する。
ステップS704では、情報受信部610は、情報qを振分処理部620に受け渡す。
ステップS705では、振分処理部620は、情報qの所定の箇所のデータに基づいて、担当するスレッドを決定する。具体的には、振分処理部620は、情報qの所定の箇所のデータをハッシュ関数等に適用して、担当するスレッドを決定する。
ステップS706では、カウント処理部311は、カウント数が限界値の範囲内(0以上、t未満)の処理では、ローカルカウント記憶部312を用いてカウント処理を実行する。
または、ステップS707のように、カウント処理部311は、カウント数が限界値の範囲外となる場合には、共有カウント記憶部320に記憶されている残数rの更新処理を実行し、キャッシュコヒーレンスの必要な処理を行う。
そして、ステップS708では、カウント処理部311は、残数rが通信装置600の累積カウント数の限界値の範囲(0以上T未満)内に入ると判定した場合、所定の処理を実行し、応答データを情報送信部630に受け渡す。所定の処理とは、例えば、受信した情報qに対応する応答データを生成することである。
また、ステップS708において、カウント処理部311は、残数rが通信装置600の累積カウント数の限界値の範囲(0以上T未満)内に入らないと判定した場合、受信した情報qを受け付けられない旨の応答データを生成し、情報送信部630に受け渡す。
ステップS709では、情報送信部630は、カウント処理部311から受け取った応答データを、応答情報としてネットワーク640を介して端末650に送信する。
以上説明したように、第2実施形態の通信装置600は、第1実施形態の並列カウント処理装置300を備えている。通信装置600がセッションを用いて通信を管理する装置である場合には、カウントする数は、センション数(接続回線数)となる。また、通信装置600が通信サービス等の情報提供を実行する装置である場合には、カウントする数は、端末650によってダウンロードされた回数となる。
そして、各カウント処理部311は、ローカルカウント記憶部312に記憶しているカウント数の限界値の範囲内であれば、共有カウント記憶部320の残数rを更新する必要がなく、キャッシュコヒーレンスのための処理を不要とする。そのため、通信装置600の並列カウント処理装置300は、並列に処理するスレッドの数を増加させても、スループットのスケーラビリティを確保することが可能となる。
(第3実施形態)
次に、第3実施形態では、複数のサーバによって構成されるクラスタ構成のサーバ群における並列カウント処理について、図8を用いて説明する。
図8に示すように、サーバ群800は、複数のサーバ810と1台のサーバ810aとによって構成される。なお、サーバ810とサーバ810aとの違いは、サーバ810aがサーバ共有カウント記憶部320bを備えていることである。
サーバ810は、図6に示した通信装置600と同様の構成を備えているが、図8では、情報受信部610、振分処理部620、および情報送信部630の記載を省略している。なお、サーバカウント記憶部320a(320)は、図6の共有カウント記憶部320の名称を変更しただけであり、サーバ810に割り当てられた累積カウント数の残数r1を記憶している。
また、サーバ810aが備えるサーバ共有カウント記憶部320b(320)は、サーバ群800全体に割り当てられた累積カウント数の残数r2を記憶しており、複数のサーバ810からコヒーレンスを必要とする残数r2の書き換え更新の対象となる。
まず、サーバ810のカウント処理部311は、ローカルカウント記憶部312に記憶されているカウント数の限界値の範囲内では、キャッシュコヒーレンスをともなわないカウント処理を実行する。そして、カウント処理部311は、ローカルカウント記憶部312に記憶されているカウント数の限界値の範囲外では、キャッシュコヒーレンスをともなう、サーバカウント記憶部320aの残数r1の更新(図8中の破線矢印)を実行しつつカウント処理を実行する。すなわち、サーバ810内では、ローカルカウント記憶部312が請求項に記載の第1の記憶部であり、サーバカウント記憶部320aが請求項に記載の第2の記憶部となる。
次に、カウント処理部311は、サーバカウント記憶部320aの残数r1が0未満になった場合、サーバ810aのサーバ共有カウント記憶部320b(320)の残数r2を更新しつつ(図8の一点鎖線)、コヒーレンスを必要とするカウント処理を実行する。
なお、図8では、1台のサーバ810aがサーバ共有カウント記憶部320bを備えるものとしたが、サーバ810のそれぞれが、サーバ810間で共通にアクセスされるサーバ共有カウント記憶部320bを備えるようにしても構わない。
以上、第3実施形態のサーバ群800は、第1実施形態の並列カウント処理装置300(図3参照)と対比したとき、サーバ810が並列スレッド処理部310(図3参照)に相当し、サーバ共有カウント記憶部320b(320)が共有カウント記憶部320(図3参照)に相当する。すなわち、サーバ群800全体としては、ローカルカウント記憶部312およびサーバカウント記憶部320aが請求項に記載の第1の記憶部に対応し、サーバ共有カウント記憶部320bが請求項に記載の第2の記憶部に対応する。ただし、サーバカウント記憶部320aが請求項に記載の第1の記憶部に対応するという意味は、サーバ810のカウント数の限界値の範囲内では、サーバ共有カウント記憶部320bの残数r2を更新しない、すなわち、サーバ810間のコヒーレンスを不要とするということである。
以上、第1実施形態で説明した並列カウント処理装置300では、各カウント処理部311は、ローカルカウント記憶部312に記憶されているカウント数の限界値の範囲内であれば、共有カウント記憶部320の残数rを更新する必要がないため、すなわち、キャッシュコヒーレンスのための処理を不要とするため、並列に処理するスレッドの数を増加させても、スループットのスケーラビリティを確保することが可能となる。
第2実施形態では、第1実施形態で説明した並列カウント処理装置300を備える通信装置600について説明した。すなわち、通信装置600においては、ローカルカウント記憶部312に記憶されている限界値の範囲内であれば、並列に処理するスレッドの数を増加させても、スループットのスケーラビリティを確保することが可能となる。
また、第3実施形態では、サーバ群800を構成する複数のサーバ810が第1実施形態の並列カウント処理装置300を備えるようにした。さらに、サーバ810aは、サーバ群800全体の残数r2を記憶しているサーバ共有カウント記憶部320bを備えた。そして、サーバ群800全体の構成は、第1実施形態の並列カウント処理装置300における並列カウント処理部310と共有カウント記憶部320との構成と類似するようにした。そのため、サーバ群800は、ローカルカウント記憶部312に記憶されている限界値の範囲内であれば、並列に処理するスレッドの数を増加させても、スループットのスケーラビリティを確保することが可能となる。
300 並列カウント処理装置
311 カウント処理部
312 ローカルカウント記憶部(第1および第3実施形態における第1の記憶部)
320 共有カウント記憶部(第1実施形態における第2の記憶部)
600 通信装置
800 サーバ群
810,810a サーバ
320a サーバカウント記憶部
320b サーバ共有カウント記憶部(第3実施形態における第2の記憶部)
r 残数
第1の限界値の範囲の上限値
T 第2の限界値の範囲の上限値

Claims (6)

  1. 数をカウントするカウント処理部を複数備える並列カウント処理装置であって、
    前記カウント処理部がカウントする数の第1の限界値の範囲と、前記並列カウント処理装置のカウントする数の第2の限界値の範囲と、当該カウント処理部がカウントした数値とを記憶している第1の記憶部と、
    各前記カウント処理部に設定された前記第1の限界値の範囲の上限値の合計を、前記第2の限界値の範囲の上限値から減算した数値を残数として記憶している第2の記憶部と、
    前記カウントした数値と前記第1の限界値の範囲とを比較し、当該カウントした数値が前記第1の限界値の範囲に入ると判定した場合、当該カウントした数値を前記第1の記憶部に記憶し、当該カウントした数値が前記第1の限界値の範囲に入らないと判定した場合、前記第1の限界値の範囲から外れた分の差分値を前記第2の記憶部の前記残数から減算した数値を新たな前記第2の記憶部の前記残数として記憶し、前記新たな前記第2の記憶部の前記残数と前記第2の限界値の範囲とを比較し、当該新たな前記第2の記憶部の前記残数が前記第2の限界値の範囲に入ると判定した場合、前記差分値を前記第1の限界値の範囲の上限値に加算して前記第1の記憶部の前記第1の限界値の範囲を更新し、当該新たな前記第2の記憶部の前記残数が前記第2の限界値の範囲に入らないと判定した場合、当該新たな前記第2の記憶部の前記残数に前記差分値を加算して前記第2の記憶部の前記残数を書き換えて更新する前記カウント処理部と
    を備えることを特徴とする並列カウント処理装置。
  2. 前記カウント処理部は、
    前記第1の限界値の範囲の上限値から前記カウントした数値を減算した減算値と前記残数とを比較し、前記減算値が前記残数より大きいと判定した場合、前記第1の限界値の範囲の上限値から前記減算値に対する所定の割合の値を減算して前記第1の限界値の範囲を更新し、前記第2の記憶部の前記残数に前記減算値に対する所定の割合の値を加算して前記第2の記憶部の前記残数を更新する
    ことを特徴とする請求項1に記載の並列カウント処理装置。
  3. ユーザの使用する装置とネットワークを介して通信可能に接続され、前記装置間の通信接続を制御する通信装置であって、
    前記カウント処理部によってカウントされる前記数として、通信に用いるセッション数をカウントする請求項1または請求項2に記載の前記並列カウント処理装置を備えることを特徴とする通信装置。
  4. ユーザの使用する端末とネットワークを介して通信可能に接続され、サービス提供用の情報を蓄積している通信装置であって、
    前記カウント処理部によってカウントされる前記数として、前記端末から前記サービス提供用の情報をダウンロードした回数をカウントする請求項1または請求項2に記載の前記並列カウント処理装置を備えることを特徴とする通信装置。
  5. 数をカウントするカウント処理部を複数備える並列カウント処理装置において用いられる並列カウント処理方法であって、
    前記並列カウント処理装置は、
    前記カウント処理部がカウントする数の第1の限界値の範囲と、前記並列カウント処理装置のカウントする数の第2の限界値の範囲と、当該カウント処理部がカウントした数値とを記憶している第1の記憶部と、
    各前記カウント処理部に設定された前記第1の限界値の範囲の上限値の合計を、前記第2の限界値の範囲の上限値から減算した数値を残数として記憶している第2の記憶部と、
    複数の前記カウント処理部と、を備え、
    前記カウント処理部は、
    前記カウントした数値と前記第1の限界値の範囲とを比較し、当該カウントした数値が前記第1の限界値の範囲に入ると判定した場合、当該カウントした数値を前記第1の記憶部に記憶し、当該カウントした数値が前記第1の限界値の範囲に入らないと判定した場合、前記第1の限界値の範囲から外れた分の差分値を前記第2の記憶部の前記残数から減算した数値を新たな前記第2の記憶部の前記残数として記憶し、前記新たな前記第2の記憶部の前記残数と前記第2の限界値の範囲とを比較し、当該新たな前記第2の記憶部の前記残数が前記第2の限界値の範囲に入ると判定した場合、前記差分値を前記第1の限界値の範囲の上限値に加算して前記第1の記憶部の前記第1の限界値の範囲を更新し、当該新たな前記第2の記憶部の前記残数が前記第2の限界値の範囲に入らないと判定した場合、当該新たな前記第2の記憶部の前記残数に前記差分値を加算して前記第2の記憶部の前記残数を書き換えて更新する
    ことを特徴とする並列カウント処理方法。
  6. 請求項5に記載の並列カウント処理方法を、コンピュータである前記並列カウント処理装置に実行させるためのプログラム。
JP2011009341A 2011-01-20 2011-01-20 並列カウント処理装置、通信装置、並列カウント処理方法、およびプログラム Expired - Fee Related JP5458030B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011009341A JP5458030B2 (ja) 2011-01-20 2011-01-20 並列カウント処理装置、通信装置、並列カウント処理方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011009341A JP5458030B2 (ja) 2011-01-20 2011-01-20 並列カウント処理装置、通信装置、並列カウント処理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2012150679A JP2012150679A (ja) 2012-08-09
JP5458030B2 true JP5458030B2 (ja) 2014-04-02

Family

ID=46792863

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011009341A Expired - Fee Related JP5458030B2 (ja) 2011-01-20 2011-01-20 並列カウント処理装置、通信装置、並列カウント処理方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP5458030B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8918596B2 (en) * 2012-12-20 2014-12-23 Oracle International Corporation System and method for implementing NUMA-aware statistics counters

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0214354A (ja) * 1988-07-01 1990-01-18 Fujitsu Ltd 共通データの管理処理方式
JP2002200359A (ja) * 2000-12-27 2002-07-16 Pioneer Electronic Corp ネットワークゲームシステム及びネットワークゲームの提供方法
JP4044855B2 (ja) * 2003-02-17 2008-02-06 日本電信電話株式会社 セッションフィルタリング方法および負荷分散装置

Also Published As

Publication number Publication date
JP2012150679A (ja) 2012-08-09

Similar Documents

Publication Publication Date Title
CN109729106B (zh) 处理计算任务的方法、系统和计算机程序产品
CN108920703B (zh) 一种http缓存优化方法与装置
US20130073601A1 (en) Remote process execution management
TW200901039A (en) Resource manager and method
KR20140004799A (ko) 피어 투 피어 데이터 마이그레이션
CN114327399B (zh) 分布式训练方法、装置、计算机设备、存储介质和产品
JPWO2018131556A1 (ja) リソース設定制御装置、リソース設定制御システム、リソース設定制御方法、および、リソース設定制御プログラム
CN111124644B (zh) 任务调度资源的确定方法、装置及系统
EP4060496A2 (en) Method, apparatus, device and storage medium for running inference service platform
CN106385377A (zh) 一种信息处理方法和系统
CN107608788B (zh) 一种控制方法、装置及设备
WO2018235739A1 (ja) 情報処理システムおよびリソース割り当て方法
US9921971B2 (en) Context based cache eviction
CN111831503B (zh) 一种基于监控代理的监控方法和监控代理装置
CN106843769B (zh) 一种接口数据缓存方法、装置和计算设备
JP5458030B2 (ja) 並列カウント処理装置、通信装置、並列カウント処理方法、およびプログラム
JP6957194B2 (ja) サービスシステム、その制御方法、およびそのプログラム
JP2009157437A (ja) 分散記憶システム
CN108446182A (zh) 一种基于共享内存的跨进程通信方法及装置
JP2011095869A (ja) リクエスト情報処理方法および計算機システム
JP6815975B2 (ja) Api管理システムおよびapi管理方法
CN110377645A (zh) 涉及区块链的点赞数据共享方法及其系统
US11886916B2 (en) System for adaptive multithreaded recalculation operations
CN112866355B (zh) 用于服务器故障转移和负荷平衡的系统和方法
JP6627475B2 (ja) 処理リソース制御プログラム、処理リソース制御装置、および処理リソース制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130204

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

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140110

R150 Certificate of patent or registration of utility model

Ref document number: 5458030

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