JP4756553B2 - 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム - Google Patents

分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム Download PDF

Info

Publication number
JP4756553B2
JP4756553B2 JP2006335130A JP2006335130A JP4756553B2 JP 4756553 B2 JP4756553 B2 JP 4756553B2 JP 2006335130 A JP2006335130 A JP 2006335130A JP 2006335130 A JP2006335130 A JP 2006335130A JP 4756553 B2 JP4756553 B2 JP 4756553B2
Authority
JP
Japan
Prior art keywords
task
tasks
sub
processor
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.)
Active
Application number
JP2006335130A
Other languages
English (en)
Other versions
JP2008146503A (ja
JP2008146503A5 (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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
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 Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Priority to JP2006335130A priority Critical patent/JP4756553B2/ja
Publication of JP2008146503A publication Critical patent/JP2008146503A/ja
Publication of JP2008146503A5 publication Critical patent/JP2008146503A5/ja
Application granted granted Critical
Publication of JP4756553B2 publication Critical patent/JP4756553B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、複数のプロセッサを含むマルチプロセッサシステムにおける分散処理技術に関する。
CPU(Central Processing Unit)の処理速度の高速化のために、CPUの動作周波数を上げる工夫がなされてきた。動作周波数を上げるためにRISC(Reduced Instruction Set Computer)アーキテクチャが採用され、CPUの各処理ステージの処理速度を均一化して並列度を高めるために深いパイプラインが形成されてきた。また、基板上の配線幅や配線間隔を小さくしてより多くの論理をチップ内に組み込んで高密度化を図るとともに、チップの消費電力を抑える工夫もなされてきた。
しかしながら、配線が細かくなったことでリーク電流が増加し、消費電力が下がらなくなってきた。また、消費電力を下げることができないため、CPUの動作周波数を上げることができず、従来のように動作周波数を上げることでCPUの高速化を図るのは難しくなってきている。
また、CPU単体の高速化とは別に、複数のCPUをもつマルチプロセッサシステムによって処理の高速化が図られている。特にゲームのように複数のプロセスが動作するアプリケーションの高速化にはマルチプロセッサシステムが適している。
図1(a)、(b)はCPUの高速化の一手法であるパイプライン処理の原理を説明する図である。図1(a)に示すように、CPUでは、一つの命令(Instruction)が、フェッチ(IF;Instruction Fetch)、デコード(ID;Instruction Decode)、レジスタフェッチ(RF;Register Fetch)、実行(EXE;Execution)、メモリアクセス(MEM;Memory Access)、書き戻し(WB;Write Back)といった6つのステージを経て処理される。通常は、一つ前の命令の処理ステージがすべて完了しなければ次の命令の処理を開始することができないが、パイプライン処理では、各ステージの処理機構を独立して動作させることにより、流れ作業のように、一つ前の命令について全処理ステージの実行が完了する前に次の命令を処理し始めることができる。これにより、複数の命令からなるプログラム全体の処理時間の短縮を図ることができる。
図1(b)は、6個の命令1〜6がパイプライン処理される様子を示している。各ステージが1クロックサイクルで処理されるとすると、命令1は第1サイクルでIFステージに投入され、以降、1サイクル毎に後続のステージに結果が渡されて各ステージの処理が実行される。命令2は、命令1についてIFステージの処理が終わった後、第2サイクルでIFステージに投入され、以降、同様に1サイクル毎に後続の各ステージに送られ、処理される。同様に命令3〜6は、それぞれ第3〜第6サイクルでIFステージに投入されて各ステージの処理がなされる。第6サイクルにおいては、6つのステージが並列に動作して各命令を処理することになるから、CPUのスループットが最大化される。
特許文献1には、プログラムの処理時間を短縮することのできる命令パイプライン処理方法が開示されている。
特開2000−172502号公報
マルチプロセッサシステムにおいてプログラムを並列に実行させるためには、プログラムを並列に動作する複数のタスクに分解し、タスクをプロセッサに割り当てることにより、並列に実行させる必要がある。プログラムを並列に動作するタスクに分解する作業は自動化が難しく、プログラマの手作業によるしかなく、並列処理のプログラミングはたいへん手間と時間がかかる。また、パイプライン処理は各ステージの処理時間が均一であることが前提となるため、処理時間の異なる複数のタスクからなるプログラムの処理にパイプライン処理の原理をそのまま適用することはできない。
本発明はこうした課題に鑑みてなされたものであり、その目的は、マルチプロセッサシステムにおいて分散処理を効率的に実行するための技術を提供することにある。
上記課題を解決するために、本発明のある態様は、複数のプロセッサを含むマルチプロセッサシステムにおける分散処理方法である。この方法では、各プロセッサの計算資源を時分割して複数のタスクに割り当てることにより、複数のタスクが並列に実行されるマルチタスク環境において、タスクの実行結果を別のタスクに与えることにより、負荷の異なる複数のタスクからなる特定処理を実行するためのパイプライン処理系を構築し、当該パイプライン処理系を複数動作させ、メインメモリにコンテキストが退避されて実行可能状態にあるタスクをいずれのタスクも実行していないプロセッサに割り当てて実行させることにより、複数のパイプライン処理系で実行される前記特定処理の複数のタスクの内、処理時間が所定の閾値よりも長い高負荷タスクが異なるプロセッサに割り当てられて実行される。
本発明の別の態様は、オペレーティングシステムである。このオペレーティングシステムは、複数のプロセッサを含むマルチプロセッサシステム上で動作するオペレーティングシステムであって、各プロセッサの計算資源を時分割して複数のタスクに割り当てることにより、複数のタスクが並列に実行されるマルチタスク環境において、タスクの実行結果を別のタスクに与えることにより、負荷の異なる複数のタスクからなる特定処理を実行するためのパイプライン処理系を構築し、当該パイプライン処理系を複数動作させる機能と、メインメモリにコンテキストが退避されて実行可能状態にあるタスクをいずれのタスクも実行していないプロセッサに割り当てて実行させる機能とを前記マルチプロセッサシステムに実現させる。
本発明のさらに別の態様は、マルチプロセッサシステムである。このマルチプロセッサシステムは、制御用のメインプロセッサと、それぞれがローカルメモリをもつ複数の演算用のサブプロセッサと、共有メモリとを含む。前記複数の演算用のサブプロセッサ上で動作するオペレーティングシステムは、各サブプロセッサの計算資源を時分割して複数のタスクに割り当てることにより、複数のタスクが並列に実行されるマルチタスク環境において、タスクの実行結果を別のタスクに与えることにより、負荷の異なる複数のタスクからなる特定処理を実行するためのパイプライン処理系を構築し、当該パイプライン処理系を複数動作させる機能と、前記共有メモリにコンテキストが退避されて実行可能状態にあるタスクをいずれのタスクも実行していないサブプロセッサの前記ローカルメモリにロードして実行させる機能とを含む。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、マルチプロセッサシステムにおいて分散処理を効率的に実行することができる。
実施の形態1
図2は、実施の形態1に係るマルチプロセッサシステム100の構成図である。マルチコアプロセッサ110は、複数のプロセッサを一つのパッケージに集積したものであり、一つのプロセッサユニット(PU)10、複数(ここでは8個)のサブプロセッサユニット(SPU)20a〜20h、メモリインタフェース40、I/Oインタフェース50がリングバス30で接続された構成である。PU10およびSPU20a〜20hは、メモリインタフェース40を介してメインメモリ120にアクセスすることができる。I/Oインタフェース50は、外部デバイスとのインタフェースである。
PU10はマルチプロセッサシステム100全体を制御するためのメインプロセッサであり、キャッシュメモリ12をもつ。SPU20a〜20hは演算用のプロセッサであり、内部にローカルメモリ22a〜22hをもつ。SPU20a〜20hは、DMA(Direct Memory Access)コントローラ(DMAC)24a〜24hをもち、DMAC24a〜24hは、メインメモリ120とローカルメモリ22a〜22hの間でデータをDMA転送する。以下、SPU20a〜20hを総称するときは添え字a〜hを省略して単にSPU20と表記する。また、8個のSPU20a〜20hをSPU1〜SPU8と表記することもある。
各SPU20上では分散オペレーティングシステムが動作する。分散オペレーティングシステムにおけるカーネルプログラムが複数のSPU20上で協調して動作し、各SPU20上で動作するユーザプログラムを時分割で切り替えながら実行する。プログラムの時分割切り替えにはPU10が介在しないため、非常に小さいオーバーヘッドでプログラムの切り替えが可能である。
SPU20上で動作するカーネルプログラムは、SPU20の計算資源、具体的にはCPUタイムを時分割して複数のタスクに割り当てることにより、SPU20上で仮想的に複数のタスクが並列に実行されるマルチタスク環境を実現する。一つのユーザプログラムを複数のSPU20で実行することも可能であり、複数のSPU20は、PU10を介さずに互いに直接通信することができる。
ユーザプログラムは複数のタスクに分割され、メインメモリ120に保持される。各SPU20は、メインメモリ120に保持された実行可能状態にあるタスクをローカルメモリ22にDMA転送し、そのタスクを実行する。各SPU20は、時分割されたCPUタイムをタスクの実行に割り当て、タスクを実行し、割り当てられたCPUタイムを消費すると、タスクをローカルメモリ22からメインメモリ120にDMA転送して退避する。タスクのコンテキストの退避処理はカーネルプログラムが自動的に実行するため、プログラマは意識する必要はない。
タスク間でデータのやりとりをするために、タスクを実行するSPU20は互いに通信する。SPU20間の通信帯域は非常に広帯域であるため、一つのプログラムをタスクに分割して複数のSPU20で分散処理してもレーテンシが問題となることはなく、むしろ複数のSPU20で並列にタスクを処理することによりスループットが向上して、プログラムの処理時間が短くなる。また、タスクはメインメモリ120とローカルメモリ22の間をDMA転送され、プロセッサは転送に関わらないため、プロセッサに負荷がかからない。
複数のSPU20上で実現されるマルチタスク環境において、タスクの実行結果を別のタスクの入力として与えることにより、複数のタスクからなる特定処理を実行するためのパイプライン処理系が構築される。
パイプライン処理系で実行される特定処理のタスク間でデータストリームをやりとりするための入出力チャネルが構築され、入出力チャネルを介したタスク間のストリーム通信が実現される。各タスクは、当該タスクを割り当てられたプロセッサによって互いに非同期に実行され、各プロセッサは、割り当てられたタスクの入力チャネルから入力を受け取って当該タスクを処理し、そのタスクの出力チャネルに実行結果を出力する。
図3は、タスクがスケジュールされてプロセッサに割り当てられる様子を説明する図である。ここでは4つのSPU1〜SPU4にタスクが割り当てられる場合を示す。特定の処理が複数のタスクに分割され、これらのタスクはカーネルに実装されたタスクスケジューラによりスケジュールされ、いずれかのSPU20に割り当てられて実行される。
いずれかのSPU20によって実行されているタスクは、実行中状態(Running状態)にあるという。SPU20が実行中状態にあるタスクを解放すると、そのタスクのコンテキストはメインメモリ120に退避される。メインメモリ120にコンテキストが退避されたタスクは、実行可能状態(Ready状態)または待ち状態(Waiting)にある。
実行可能状態とは、タスクの入力チャネルに入力値が与えられており、タスクがいつでもSPU20によって実行可能な状態にあることである。実行可能状態にあるタスクを割り当て可能なSPU20が確保されると、そのタスクは実行中状態に遷移する。
待ち状態とは、タスクの実行に必要な条件が満たされていないため、タスクはまだ実行可能ではなく、待機している状態である。たとえば、タスクの入力チャネルにまだ入力値が与えられていない場合は、入力値が与えられるまではタスクは待ち状態にある。待ち状態にあるタスクの実行に必要な条件が満たされると、そのタスクは実行可能状態に遷移する。
図3では、SPU1、SPU2およびSPU4のローカルメモリ22a、22b、22dにはタスクがロードされて実行されている。SPU3にはタスクが割り当てられていない。メインメモリ120の待ち行列には、待ち状態のタスクが1つ、実行可能なタスクが2つがキューイングされている。タスクスケジューラは、メインメモリ120に退避されている最初の実行可能なタスクをSPU3に割り当てる。割り当てられたタスクはSPU3のDMAC24cによりローカルメモリ22cにDMA転送される。
メインメモリ120に退避されたタスクは待ち行列にキューイングされ、ラウンドロビン方式などによりスケジュールされ、タスクが割り当てられていないアイドル状態のSPU20に割り当てられる。
図4(a)、(b)は、特定処理を複数のタスクに分割してパイプライン処理する様子を説明する図である。マルチコアプロセッサ110内のSPUが4個(SPU1〜SPU4)であるとする。特定処理は4つのタスクA、B、C、Dに分割され、それぞれのタスクの処理時間Tは共通であるとする。
図4(a)には、6つの特定処理(P1〜P6)がパイプライン処理される様子が示されている。各処理P1〜P6を構成する4つのタスクA〜Dには、ジョブ番号の添え字をつけている。処理P1について、時刻T0においてタスクA1が実行され、タスクA1の処理結果はタスクB1に渡され、時刻T1においてタスクB1が実行される。以降、同様にして処理結果を引き継ぎながら、時刻T2においてタスクC1が実行され、時刻T3においてタスクD1が実行される。
処理P2については、時刻T0においてジョブ1のタスクA1が実行された後、時刻T1においてタスクA2が実行され、以降、時刻T2、T3、T4において、タスクB2、C2、D2が順次実行される。
以下、同様に、処理P3〜P6について、時刻T2〜T5においてタスクA3〜A6の実行が開始され、以降、処理時間T毎に後続のタスクが順次実行される。
図4(b)は、時刻T3、T4、T5における各SPUのタスク割り当て状況を示す。タスクAはSPU1、タスクBはSPU2、タスクCはSPU3、タスクDはSPU4にそれぞれ割り当てられたとする。その割り当てのもとで処理P1〜P6が図4(a)に示すようにパイプライン処理されたとする。
時刻T3では、SPU1にはタスクA4、SPU2にはタスクB3、SPU3にはタスクC2、SPU4にはタスクD1がそれぞれ割り当てられる。
時刻T4では、SPU1にはタスクA5、SPU2にはタスクB4、SPU3にはタスクC3、SPU4にはタスクD2がそれぞれ割り当てられる。
時刻T5では、SPU1にはタスクA6、SPU2にはタスクB5、SPU3にはタスクC4、SPU4にはタスクD3がそれぞれ割り当てられる。
このように、時刻T3〜T5の間、4つのSPU1〜SPU4には一つずつタスクが割り当てられているから、負荷の比率は1:1:1:1である。
図4(a)、(b)の例では、各タスクの処理時間が同じであったが、これは特殊な場合であり、一般には特定処理は負荷の異なる複数のタスクに分割される。
図5(a)、(b)は、負荷の異なる複数のタスクから構成される特定処理がパイプライン処理される様子を説明する図である。特定処理は4つのタスクA、B、C、Dに分割される。タスクCの処理時間は、タスクA、B、Dの処理時間Tの3倍であるとする。
図5(a)には、8つの特定処理P1〜P8がパイプライン処理される様子が示されている。各処理は処理時間Tだけずらして投入される。タスクAはSPU1、タスクBはSPU2、タスクCはSPU3、タスクDはSPU4にそれぞれ割り当てられたとする。タスクCの処理時間が他のタスクよりも長いため、スループットが最大化される時刻T5〜T7において、特定のSPUにタスクCが複数個割り当てられることになる。
図5(b)は、時刻T5、T6、T7における各SPUのタスク割り当て状況を示す。
時刻T5では、SPU1にはタスクA6、SPU2にはタスクB5、SPU3にはタスクC4、C3、C2、SPU4にはタスクD1がそれぞれ割り当てられる。
時刻T6では、SPU1にはタスクA7、SPU2にはタスクB6、SPU3にはタスクC5、C4、C3、SPU4にはタスクD2がそれぞれ割り当てられる。
時刻T7では、SPU1にはタスクA8、SPU2にはタスクB7、SPU3にはタスクC6、C5、C4、SPU4にはタスクD3がそれぞれ割り当てられる。
このように、時刻T5〜T7の間、SPU1、SPU2、SPU4には一つずつタスクが割り当てられているが、SPU3には3つのタスクが割り当てられている。したがって、SPU1〜SPU4の負荷の比率は1:1:3:1になる。
このように、特定処理を構成する各タスクの処理時間が異なる場合に、パイプライン処理を実行すると、高負荷のタスクが割り当てられたSPUに負荷が集中してしまい、マルチコアプロセッサ110の演算処理のスループットを上げることができなくなる。そこで本実施の形態では、特定処理を実行するパイプライン処理系を複数動作させ、各パイプライン処理で実行される特定処理の高負荷タスクを異なるSPUに割り当てることで負荷分散を図る。
図6(a)は、1つのパイプライン処理系をマルチプロセッサシステム100で動作させた場合のタスクのプロセッサへの割り当てを説明する図である。タスクA、B、C、Dを順次実行するパイプライン処理系150を4つのSPU1〜SPU4で実行する場合、たとえば、タスクAはSPU1に、タスクBはSPU2に、タスクCはSPU3に、タスクDはSPU4にそれぞれ割り当てられる。したがって、タスクCの処理時間が長い場合、SPU3に負荷が集中する。
図6(b)は、複数のパイプライン処理系をマルチプロセッサシステム100で動作させた場合のタスクのプロセッサへの割り当てを説明する図である。4つのパイプライン処理系#1〜#4(符号151〜154)を並列に実行させるとする。
4つのパイプライン処理系#1〜#4のそれぞれのタスクA〜Dのすべてがタスクスケジューリングの対象となる。パイプライン処理系#1の高負荷タスクCがSPU3に割り当てられたとする。このとき、SPU3は高負荷タスクCの実行に時間がかかり、他のタスクのためにアイドル状態になるまでに時間がかかる。したがって、パイプライン処理系#2の高負荷タスクCは同じSPU3に割り当てられることはなく、別のSPU、たとえばSPU4に割り当てられる。
同様に、高負荷タスクCを割り当てられたSPU4はアイドル状態になるまでに時間を要するため、パイプライン処理系#3の高負荷タスクCはSPU3、SPU4には割り当てることができず、それ以外のSPU、たとえばSPU1に割り当てられる。さらに、パイプライン処理系#4の高負荷タスクCは、既に高負荷タスクCを割り当てられたSPU3、SPU4、SPU1を避けて、SPU2に割り当てられる。このように、4つのパイプライン処理系#1〜#4を動作させれば、各パイプライン処理系の高負荷タスクCを異なるSPUに割り当てることができるようになり、特定のSPUに負荷が集中するのを避けることができる。
なお、マルチプロセッサシステム100において、タスクのSPU20への割り当ては、PU10が行うのではなく、各SPU20が自律的にメインメモリ120の待ち行列から実行可能なタスクを取り出すことで行われる。したがって、図6(b)の4つのパイプライン処理系#1〜#4のそれぞれの高負荷タスクCのSPU1〜SPU4への割り当ては事前に決まっているのではない。SPU1〜SPU4がそれぞれ、待ち行列から実行可能なタスクを取り出して実行することで、結果的に、4つの高負荷タスクCが4つのSPU1〜SPU4に分散されて割り当てられることになる。
図7(a)〜(e)は、複数のパイプライン処理系を実行するマルチプロセッサシステム100において、各プロセッサのタスク割り当て状況と全プロセッサの負荷比率を説明する図である。
図7(a)は、図6(b)のパイプライン処理系#1について、時刻T5、T6、T7における各SPUのタスク割り当て状況を示す。これは図4(b)のタスク割り当て状況と同じである。図7(b)は、パイプライン処理系#2について、時刻T5、T6、T7における各SPUのタスク割り当て状況を示す。パイプライン処理系#2ではタスクCはSPU4に割り当てられるから、SPU4にタスクCが3つ割り当てられることになる。同様に、図7(c)に示すように、パイプライン処理系#3についてはSPU1にタスクCが3つ割り当てられ、図7(d)に示すように、パイプライン処理系#4についてはSPU2にタスクCが3つ割り当てられる。
図7(e)は、SPU1〜SPU4の負荷比率を説明する図である。図7(a)〜図7(d)に示したパイプライン処理系#1〜#4のタスク割り当てにより、高負荷タスクCはSPU1〜SPU4に分散され、負荷が均一化されるから、SPU1〜SPU4の負荷比率は1:1:1:1になる。
以上述べたように、特定処理を実行するためのパイプライン処理系を複数動作させれば、各パイプライン処理系の高負荷タスクが異なるSPUに分散されて割り当てられることになり、マルチプロセッサシステム100のスループットを向上させることができる。
図1(a)、(b)で説明したように、CPUは、命令のフェッチ、デコードなどの専用の回路をもち、これらの専用回路を並列に動作させてパイプライン処理を実行する。パイプライン処理の各ステージの処理時間を等しくするために、これらの専用回路における処理時間は等しくなるように(たとえば、1クロックサイクルで実行が完了するように)設計されている。このように、一般的なCPUにおけるパイプライン処理では、命令を実行時間が同じサイクル数で実行できるステージに細分化し、並列処理を行うことでスループットの向上を図っている。パイプライン処理を実現するためには、各ステージの処理サイクル数が揃うように機能を分割する必要がある。
それに対して、マルチプロセッサシステム100の複数のSPU20は、汎用のプロセッサであるため、どんな処理でも実行可能である。したがって、特定処理を複数の異なるタスクに分割してパイプライン処理するとき、各SPU20にはどのタスクを割り当ててもかまわない。したがって、特定処理を実行するためのパイプライン処理系を複数動作させて、各パイプライン処理系の高負荷タスクをアイドル状態にある異なる複数のSPU20に分散させて割り当てることが可能である。それにより、特定のSPU20に負荷が集中する事態を避けることができ、全体のスループットを上げることができる。
SPU20に割り当てられるタスクの負荷を均一にする必要はないから、特定処理が負荷の異なるタスクに分割されるという一般的な状況に対応することができ、並列プログラミングが容易になる。また、タスクの数とタスクを割り当てるプロセッサの数は独立しているため、プログラマは、物理的なプロセッサの構成を気にする必要もない。
特定処理を構成する高負荷タスクが2つあり、この特定処理を実行するためパイプライン処理系を4つ動作させるとすると、高負荷タスクが全体で8個あることになる。高負荷タスクを割り当てるプロセッサ数も8個あると、各プロセッサに高負荷タスクを1つずつ割り当てることができるため、好都合である。一般にはプロセッサの数はシステムによって決まっているから、特定処理を構成する高負荷タスクの数が与えられると、プロセッサの数を特定処理の高負荷タスクの数で除算して得られる値を超えない整数値の数だけパイプライン処理系を動作させればよい。
実施の形態2
実施の形態2は、実施の形態1のマルチプロセッサシステム100におけるパイプライン処理をビデオやオーディオからメタ情報を抽出する処理に応用したものである。
図8は、実施の形態2に係るメタ情報処理装置200の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現することができる。すなわち、これらの機能構成ブロックの少なくとも一部は、図2で説明したマルチプロセッサシステム100のハードウェア構成により実現され、ハードウェア構成で実現されない機能ブロックは、メインメモリ120にロードされたプログラムをPU10またはSPU20が実行することにより実現される。
メタ情報処理装置200は、ビデオやオーディオなどを含むコンテンツからメタ情報を抽出する装置であり、メタ情報抽出ブロック210と、ジョブデータベース220と、メタ情報データベース230とを有する。
メタ情報抽出ブロック210は、ジョブデータベース220からジョブを取り出し、コンテンツに含まれるビデオ、オーディオ、テキストからそれぞれメタ情報を抽出し、抽出したメタ情報をメタ情報データベース230に登録する。メタ情報抽出ブロック210によるメタ情報抽出処理は、複数のタスクに分解される。メタ情報抽出処理を構成するタスクをマルチプロセッサシステム100の複数のSPU20に割り当て、パイプライン処理によって実行する。
メタ情報抽出ブロック210の各機能構成を説明する。リクエスト処理部240は、ジョブデータベース220からジョブを取り出し、ファイル転送部242に与える。ファイル転送部242はジョブによって指定されたファイルをデータベースから読み出し、ファイル解析・分割部244に与える。ファイル解析・分割部244は、ファイルを解析し、オーディオデータをオーディオデコーダ250に、テキストデータをテキスト変換部264に、画像データを画像デコーダ252に与える。
オーディオデコーダ250は、オーディオデータを復号し、12音解析部260に与え得る。画像デコーダ252は、画像データを復号し、画像解析部262に与える。
12音解析部260は、復号されたオーディオデータを12音解析技術により周波数分析して特徴量を抽出する。12音解析部260は、抽出した特徴量にもとづいてオーディオのメタデータを生成し、データベース登録部270に与える。
テキスト変換部264は、テキストデータからキーワードなどを抽出することでテキストのメタデータを生成し、データベース登録部270に与える。
画像解析部262は、復号された画像データを画像処理して特徴量を抽出し、抽出した特徴量にもとづいてメタデータを生成する。生成された画像のメタデータはデータベース登録部270に与えられる。
データベース登録部270は、オーディオのメタデータ、テキストのメタデータ、画像のメタデータをコンテンツのメタ情報としてメタ情報データベース230に登録する。データベース登録部270による登録が終わると、結果通知部272は、ジョブデータベース220にジョブの完了を通知する。
メタ情報抽出ブロック210の各機能構成がタスクに対応し、各機能構成の入出力がそのままタスクの入出力チャネルに対応する。
図9は、メタ情報抽出パイプライン処理系300を1つだけ動作させてメタ情報抽出処理を実行した場合の各タスクのプロセッサへの割り当てを説明する図である。このパイプライン処理系300で実行されるメタ情報抽出処理は、リクエスト処理部240、ファイル転送部242、ファイル解析・分割部244、オーディオデコーダ250、12音解析部260、データベース登録部270、および結果通知部272の7つのタスクからなり、それぞれのタスクは、SPU1〜SPU7に割り当てられ、SPU8はアイドル状態である。12音解析部260がもっとも負荷の高いタスクであるため、このタスクを割り当てられたSPU5は稼働率が100%になる。オーディオデコーダ250は次に負荷の高いタスクであり、このタスクを割り当てられたSPU4は稼働率が50%となる。それ以外の処理時間が短いタスクを割り当てられたSPUの稼働率は極めて低いものとなっている。
図10(a)〜(d)は、4つのメタ情報抽出パイプライン処理系#1〜#4(符号300a〜300d)を動作させてメタ情報抽出処理を実行した場合の高負荷タスクのプロセッサへの割り当てを説明する図である。各パイプライン処理系#1〜#4において、12音解析部260a〜260dと画像解析部262a〜画像解析部262dが高負荷タスクであり、合計すると8個の高負荷タスクがある。

8つのSPU1〜SPU8は、処理時間の短いタスクを実行していることもあるが、そのタスクの実行が終わると、アイドル状態になる。8個の高負荷タスクは、アイドル状態のSPUに割り当てられていくことになり、いったん高負荷タスクが割り当てられたSPUは再びアイドル状態になるまで時間がかかる。結果的に、8個のSPUに均等に8個の高負荷タスクが割り当てられることになる。
同図に示すように、パイプライン処理系#1の12音解析部260aはSPU1に、画像解析部262aはSPU2にそれぞれ割り当てられる。パイプライン処理系#2の12音解析部260bはSPU3に、画像解析部262bはSPU4にそれぞれ割り当てられる。パイプライン処理系#3の12音解析部260cはSPU5に、画像解析部262cはSPU6にそれぞれ割り当てられる。パイプライン処理系#4の12音解析部260dはSPU7に、画像解析部262dはSPU8にそれぞれ割り当てられる。これにより、SPU1〜SPU8はすべて稼働率100%になり、マルチプロセッサシステム100の処理スループットが最大化する。
図11(a)〜(c)は、メタ情報抽出パイプライン処理系のバリエーションを説明する図である。図11(a)のパイプライン処理系A(符号300)は、オーディオのメタデータを抽出するタスクで構成される。これに対して、図11(b)のパイプライン処理系B(符号310)は、オーディオ解析と画像解析を行い、オーディオのメタデータと画像のメタデータを抽出するタスクで構成される。図11(a)と比べると、画像デコーダ252と画像解析部262のタスクが、オーディオデコーダ250と12音解析部260のタスクに対して並列に追加されている。
このようなタスクの追加は、実行ファイルを変更することなく、タスクの接続関係を記述した設定ファイルを変更するだけで行うことができ、設定ファイルの変更により動的にパイプライン処理系のタスクを自由自在に変更できる。この設定ファイルはたとえば、XML(Extensible Markup Language)により記述される。設定ファイルは、タスク間でやりとりされるデータの入出力関係を記述したものであり、これをもとにタスク間の入出力チャネルが構築され、入出力チャネルを介してタスク間のストリーム通信が実行される。
たとえば、タスクAの出力をタスクBの入力に接続するには、「タスクAの出力チャネルをタスクBの入力チャネルに接続する」という記述を設定ファイルに設ければよい。図11(a)のパイプライン処理系Aの例で言えば、オーディオデコーダ250の出力チャネルを12音解析部260の入力チャネルに接続するという記述を設けることになる。
図11(b)のパイプライン処理系Bを構築するには、図11(a)のパイプライン処理系Aの設定ファイルを一部変更するだけでよい。ファイル解析・分割部244の出力チャネルをオーディオデコーダ250の入力チャネルだけでなく、画像デコーダ252の入力チャネルにもつなげる。そして、画像デコーダ252の出力チャネルを画像解析部262の入力チャネルにつなげる。さらに、画像解析部262の出力チャネルをデータベース登録部270の入力チャネルにつなげる。以上の設定ファイルの変更により、図11(a)の処理系Aが図11(b)の処理系Bに変更される。
図11(c)は、図11(a)の12音解析部260を12音低レベル解析部260aと12音高レベル解析部260bにタスク分解したパイプライン処理系Cを示す。12音低レベル解析部260aは、人間の聴覚能力に応じた低レベルの特徴を解析するものであり、一例としてビート検出、コード進行検出、楽曲構造解析、キー(調)検出などを行い、ビート、コード、曲構造などの低レベルの特徴量を抽出する。12音高レベル解析部260bは、人間の知的な理解能力に応じた高レベルの特徴を解析するものであり、一例として統計解析、ジャンル判別、楽器音検出、ムード検出、音質検出などを行い、ジャンル、楽器音、ムード、音質などの高レベルの特徴量を抽出する。
12音低レベル解析部260aと12音高レベル解析部260bは両方とも高負荷タスクであるが、このように2つのタスクに分解すれば、別々のSPUに割り当てられることになるから、負荷の分散を図ることができる。図11(c)のパイプライン処理系Cを構築するには、図11(a)のパイプライン処理系Aの設定ファイルを一部変更する。図11(a)のオーディオデコーダ250から12音解析部260を経てデータベース登録部270に至るデータストリームの経路において、12音解析部260を削除し、12音低レベル解析部260aと12音高レベル解析部260bを直列につなぎ直す。
このようにパイプライン処理系の新たにタスクを追加したり、タスクの構成を変更する際、一般にはタスクの負荷を考慮してパイプライン処理系を適切に設計する必要がある。しかし、本実施の形態では、複数のパイプライン処理系を動作させてタスクをプロセッサに割り当てる構成であり、負荷が自動的に均一化されて複数のプロセッサに分散される。そのため、プログラマはタスクの負荷に注意を払うことなく、単に設定ファイルを変更するだけで簡単にパイプライン処理系を設計し直すことができ、プログラミングに柔軟性をもたせることができる。
図12は、4つのメタ情報抽出パイプライン処理系#1〜#4が互いに独立にデータベースにアクセスしながら並列に動作する構成を説明する図である。マルチプロセッサシステム100の複数のSPU20は、PU10の介在なしに、互いに独立に自律的に動作し、必要に応じてタスク間通信により協調動作する。PU10が集中管理すると、PU10に負荷が集中してボトルネックになるからである。
図12に示すように、各パイプライン処理系#1〜#4のリクエスト処理部240a〜240dは互いに独立にジョブデータベース220をポーリングし、未処理のジョブがジョブデータベース220に登録されると、SPU20はその未処理ジョブを開始する。
各パイプライン処理系#1〜#4のデータベース登録部270a〜270dは互いに独立にメタ情報データベース230にメタデータを登録する。また、結果通知部272a〜272dも、互いに独立にジョブデータベース220にジョブの終了を通知する。
ジョブの投入とジョブの実行結果の登録は同期させる必要がないため、制御用のPU10が介在して同期を取ったり、排他制御をすることはない。そのため、メタ情報抽出処理を複数のタスクに分割し、複数のSPU20がタスクを自律的に実行するという複雑な処理系を構成しても、制御用のPU10に負荷が集中してボトルネックとなる事態を避けることができる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
図1(a)、(b)はCPUの高速化の一手法であるパイプライン処理の原理を説明する図である。 実施の形態1に係るマルチプロセッサシステムの構成図である。 タスクがスケジュールされてプロセッサに割り当てられる仕組みを説明する図である。 図4(a)、(b)は、特定処理を複数のタスクに分割してパイプライン処理する様子を説明する図である。 図5(a)、(b)は、負荷の異なる複数のタスクから構成される特定処理がパイプライン処理される様子を説明する図である。 図6(a)は、1つのパイプライン処理系をマルチプロセッサシステムで動作させた場合のタスクのプロセッサへの割り当てを説明する図であり、図6(b)は、複数のパイプライン処理系をマルチプロセッサシステムで動作させた場合のタスクのプロセッサへの割り当てを説明する図である。 図7(a)〜(e)は、複数のパイプライン処理系を実行するマルチプロセッサシステムにおいて、各プロセッサのタスク割り当て状況と全プロセッサの負荷比率を説明する図である。 実施の形態2に係るメタ情報処理装置の機能構成図である。 メタ情報抽出パイプライン処理系を1つだけ動作させてメタ情報抽出処理を実行した場合の各タスクのプロセッサへの割り当てを説明する図である。 図10(a)〜(d)は、4つのメタ情報抽出パイプライン処理系#1〜#4(符号300a〜300d)を動作させてメタ情報抽出処理を実行した場合の高負荷タスクのプロセッサへの割り当てを説明する図である。 図11(a)〜(c)は、メタ情報抽出パイプライン処理系のバリエーションを説明する図である。 4つのメタ情報抽出パイプライン処理系が互いに独立にデータベースにアクセスしながら並列に動作する構成を説明する図である。
符号の説明
1 プロセッサユニット、 20 サブプロセッサユニット、 22 ローカルメモリ、 24 DMAコントローラ、 30 リングバス、 40 メモリインタフェース、 50 I/Oインタフェース、 100 マルチプロセッサシステム、 110 マルチコアプロセッサ、 120 メインメモリ、 150 パイプライン処理系、 200 メタ情報処理装置、 210 メタ情報抽出ブロック、 220 ジョブデータベース、 230 メタ情報データベース、 240 リクエスト処理部、 242 ファイル転送部、 244 ファイル解析・分割部、 250 オーディオデコーダ、 252 画像デコーダ、 260 12音解析部、 262 画像解析部、 264 テキスト変換部、 270 データベース登録部、 272 結果通知部、 300 メタ情報抽出パイプライン処理系。

Claims (8)

  1. 制御用のメインプロセッサ、複数の演算用のサブプロセッサ、およびメモリインタフェースがバスで接続されたマルチコアプロセッサと、共有メモリとを含み、前記メインプロセッサと複数の前記サブプロセッサが前記メモリインタフェースを介して前記共有メモリにアクセス可能なマルチプロセッサシステムにおける分散処理方法であって、
    サブプロセッサの計算資源を時分割して複数のタスクに割り当てることにより、複数のタスクが並列に実行されるマルチタスク環境において、タスクの実行結果を別のタスクに与えることにより、負荷の異なる複数のタスクからなる特定処理を実行するためのパイプライン処理系を構築し、当該パイプライン処理系を複数動作させ、前記共有メモリにコンテキストが退避されて実行可能状態にあるタスクをいずれのタスクも実行していないサブプロセッサに割り当てて実行させることにより、複数のパイプライン処理系で実行される前記特定処理の複数のタスクの内、処理時間が所定の閾値よりも長い各パイプライン処理系の高負荷タスクが異なるサブプロセッサに割り当てられて実行され、その結果、各サブプロセッサの負荷が均一化されることを特徴とする分散処理方法。
  2. 前記サブプロセッサの数を前記特定処理を構成する前記高負荷タスクの数で除算して得られる値を超えない整数値の数だけ前記パイプライン処理系を動作させることを特徴とする請求項1に記載の分散処理方法。
  3. 前記パイプライン処理系で実行される前記特定処理のタスク間でやりとりされるデータの入出力関係を記述した設定ファイルをもとにタスク間の入出力チャネルを構築し、前記入出力チャネルを介したタスク間のストリーム通信を実行することを特徴とする請求項1または2に記載の分散処理方法。
  4. 前記設定ファイルに記述されたタスクの入出力経路に新たなタスクを直列または並列に挿入することにより、前記設定ファイルを動的に変更する手順をさらに含むことを特徴とする請求項3に記載の分散処理方法。
  5. 前記パイプライン処理系で実行される前記特定処理の各タスクは、当該タスクを割り当てられたサブプロセッサによって互いに実行され、各サブプロセッサは、割り当てられたタスクの入力チャネルから入力を受け取って当該タスクを処理し、そのタスクの出力チャネルに実行結果を出力することを特徴とする請求項3に記載の分散処理方法。
  6. 制御用のメインプロセッサ、複数の演算用のサブプロセッサ、およびメモリインタフェースがバスで接続されたマルチコアプロセッサと、共有メモリとを含み、前記メインプロセッサと複数の前記サブプロセッサが前記メモリインタフェースを介して前記共有メモリにアクセス可能なマルチプロセッサシステム上で動作するオペレーティングシステムであって、
    サブプロセッサの計算資源を時分割して複数のタスクに割り当てることにより、複数のタスクが並列に実行されるマルチタスク環境において、タスクの実行結果を別のタスクに与えることにより、負荷の異なる複数のタスクからなる特定処理を実行するためのパイプライン処理系を構築し、当該パイプライン処理系を複数動作させる機能と、
    前記共有メモリにコンテキストが退避されて実行可能状態にあるタスクをいずれのタスクも実行していないサブプロセッサに割り当てて実行させることにより、複数のパイプライン処理系で実行される前記特定処理の複数のタスクの内、処理時間が所定の閾値よりも長い各パイプライン処理系の高負荷タスクを異なるサブプロセッサに割り当てて実行させ、その結果、各サブプロセッサの負荷を均一化させる機能とを前記マルチプロセッサシステムに実現させることを特徴とするオペレーティングシステム。
  7. 制御用のメインプロセッサ、それぞれがローカルメモリをもつ複数の演算用のサブプロセッサ、およびメモリインタフェースがバスで接続されたマルチコアプロセッサと、共有メモリとを含み、前記メインプロセッサと複数の前記サブプロセッサが前記メモリインタフェースを介して前記共有メモリにアクセス可能なマルチプロセッサシステムであって、
    前記複数の演算用のサブプロセッサ上で動作するオペレーティングシステムは、
    各サブプロセッサの計算資源を時分割して複数のタスクに割り当てることにより、複数のタスクが並列に実行されるマルチタスク環境において、タスクの実行結果を別のタスクに与えることにより、負荷の異なる複数のタスクからなる特定処理を実行するためのパイプライン処理系を構築し、当該パイプライン処理系を複数動作させる機能と、
    前記共有メモリにコンテキストが退避されて実行可能状態にあるタスクをいずれのタスクも実行していないサブプロセッサの前記ローカルメモリにロードして実行させることにより、複数のパイプライン処理系で実行される前記特定処理の複数のタスクの内、処理時間が所定の閾値よりも長い各パイプライン処理系の高負荷タスクを異なるサブプロセッサに割り当てて実行させ、その結果、各サブプロセッサの負荷を均一化させる機能とを含むことを特徴とするマルチプロセッサシステム。
  8. 前記サブプロセッサに割り当てられた各タスクは、前記メインプロセッサを介在させることなく、通信チャネルを介して互いにデータをやりとりしながら実行されることを特徴とする請求項7に記載のマルチプロセッサシステム。
JP2006335130A 2006-12-12 2006-12-12 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム Active JP4756553B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006335130A JP4756553B2 (ja) 2006-12-12 2006-12-12 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006335130A JP4756553B2 (ja) 2006-12-12 2006-12-12 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム

Publications (3)

Publication Number Publication Date
JP2008146503A JP2008146503A (ja) 2008-06-26
JP2008146503A5 JP2008146503A5 (ja) 2010-01-21
JP4756553B2 true JP4756553B2 (ja) 2011-08-24

Family

ID=39606588

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006335130A Active JP4756553B2 (ja) 2006-12-12 2006-12-12 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JP4756553B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101275698B1 (ko) * 2008-11-28 2013-06-17 상하이 신하오 (브레이브칩스) 마이크로 일렉트로닉스 코. 엘티디. 데이터 처리 방법 및 장치
JP5354007B2 (ja) * 2009-03-23 2013-11-27 日本電気株式会社 分散処理システム、インタフェース、記憶装置、分散処理方法、分散処理プログラム
JP5718558B2 (ja) * 2009-09-16 2015-05-13 富士ゼロックス株式会社 画像データ処理装置
KR101710910B1 (ko) 2010-09-27 2017-03-13 삼성전자 주식회사 프로세싱 유닛의 동적 자원 할당을 위한 방법 및 장치
JP5630396B2 (ja) * 2011-07-27 2014-11-26 高田 周一 Dma制御装置
US20150032922A1 (en) * 2012-02-28 2015-01-29 Nec Corporation Computer system, method of processing the same, and computer readble medium
WO2014041673A1 (ja) * 2012-09-14 2014-03-20 株式会社日立製作所 ストリームデータ多重処理方法
JP2015088112A (ja) 2013-11-01 2015-05-07 ソニー株式会社 制御装置、処理装置及び情報処理方法
CN112261314B (zh) * 2020-09-24 2023-09-15 北京美摄网络科技有限公司 一种视频描述数据生成系统、方法、存储介质及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353099A (ja) * 1999-06-01 2000-12-19 Tektronix Inc アクティブ・パイプラインにおける流れ制御方法
JP2004509386A (ja) * 2000-06-30 2004-03-25 タレス ネデルラント ベー.フェー. 複数のプロセッサにソフトウェア機能を自動的に割り当てる方法
JP2004199674A (ja) * 2002-12-13 2004-07-15 Hewlett-Packard Development Co Lp 複数の優先順位グループに関連付けられたプロセスを複数のリソース間に分散する方法
JP2006099579A (ja) * 2004-09-30 2006-04-13 Toshiba Corp 情報処理装置及び情報処理方法
JP2006106859A (ja) * 2004-09-30 2006-04-20 Toshiba Corp 情報処理システムにおける資源割当装置及び資源割当方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612392A (ja) * 1992-03-19 1994-01-21 Fujitsu Ltd 計算機資源分散方法及びシステム
JPH0784967A (ja) * 1993-09-14 1995-03-31 Hitachi Ltd プロセスパイプライン処理方式
JP3680446B2 (ja) * 1996-10-11 2005-08-10 富士ゼロックス株式会社 パイプライン制御装置およびデータ処理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353099A (ja) * 1999-06-01 2000-12-19 Tektronix Inc アクティブ・パイプラインにおける流れ制御方法
JP2004509386A (ja) * 2000-06-30 2004-03-25 タレス ネデルラント ベー.フェー. 複数のプロセッサにソフトウェア機能を自動的に割り当てる方法
JP2004199674A (ja) * 2002-12-13 2004-07-15 Hewlett-Packard Development Co Lp 複数の優先順位グループに関連付けられたプロセスを複数のリソース間に分散する方法
JP2006099579A (ja) * 2004-09-30 2006-04-13 Toshiba Corp 情報処理装置及び情報処理方法
JP2006106859A (ja) * 2004-09-30 2006-04-20 Toshiba Corp 情報処理システムにおける資源割当装置及び資源割当方法

Also Published As

Publication number Publication date
JP2008146503A (ja) 2008-06-26

Similar Documents

Publication Publication Date Title
JP4756553B2 (ja) 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム
JP4936517B2 (ja) ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US10268609B2 (en) Resource management in a multicore architecture
EP1730628B1 (en) Resource management in a multicore architecture
Wang et al. Exploiting concurrent kernel execution on graphic processing units
AU2019392179B2 (en) Accelerating dataflow signal processing applications across heterogeneous CPU/GPU systems
US10402223B1 (en) Scheduling hardware resources for offloading functions in a heterogeneous computing system
CN113326066B (zh) 量子控制微体系结构、量子控制处理器及指令执行方法
US20140143524A1 (en) Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus
Karim et al. A multilevel computing architecture for embedded multimedia applications
KR100694212B1 (ko) 다중-프로세서 구조에서 데이터 처리 수행성능을증가시키기 위한 분산 운영 시스템 및 그 방법
KR20140126195A (ko) 배치 쓰레드 처리 기반의 프로세서, 그 프로세서를 이용한 배치 쓰레드 처리 방법 및 배치 쓰레드 처리를 위한 코드 생성 장치
US20220207643A1 (en) Implementing heterogenous wavefronts on a graphics processing unit (gpu)
US9760969B2 (en) Graphic processing system and method thereof
WO2022161013A1 (zh) 处理器装置及其指令执行方法、计算设备
Zagan Improving the performance of CPU architectures by reducing the Operating System overhead
US10133578B2 (en) System and method for an asynchronous processor with heterogeneous processors
WO2019188175A1 (ja) デッドロック回避方法、デッドロック回避装置
Ino et al. GPU-Chariot: A programming framework for stream applications running on multi-GPU systems
Blechmann Supernova-A scalable parallel audio synthesis server for SuperCollider.
WO2022137838A1 (ja) プロセス割当制御装置、プロセス割当制御方法、及び、プロセス割当制御プログラムが格納された記録媒体
CN112214443B (zh) 设置于图形处理器中的二次卸载装置和方法
WO2019188179A1 (ja) デッドロック回避方法、デッドロック回避装置
CN116010090A (zh) 一种基于任务分配机制的cpu与gpu数据同步方法
Namyst Programming heterogeneous, accelerator-based machines with StarPU

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091127

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091127

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101125

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110425

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4756553

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

Year of fee payment: 3

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

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