JP3768516B1 - マルチプロセッサシステムとそのシステムにおけるプログラム実行方法 - Google Patents

マルチプロセッサシステムとそのシステムにおけるプログラム実行方法 Download PDF

Info

Publication number
JP3768516B1
JP3768516B1 JP2004350702A JP2004350702A JP3768516B1 JP 3768516 B1 JP3768516 B1 JP 3768516B1 JP 2004350702 A JP2004350702 A JP 2004350702A JP 2004350702 A JP2004350702 A JP 2004350702A JP 3768516 B1 JP3768516 B1 JP 3768516B1
Authority
JP
Japan
Prior art keywords
processor
address
instruction
interrupt
return
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
JP2004350702A
Other languages
English (en)
Other versions
JP2006163552A (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 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
Priority to JP2004350702A priority Critical patent/JP3768516B1/ja
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to DE602005020063T priority patent/DE602005020063D1/de
Priority to AT09011692T priority patent/ATE522863T1/de
Priority to US10/587,553 priority patent/US7805596B2/en
Priority to AT05805443T priority patent/ATE461482T1/de
Priority to EP05805443A priority patent/EP1840736B1/en
Priority to PCT/JP2005/020000 priority patent/WO2006059444A1/ja
Priority to EP09011692A priority patent/EP2124147B1/en
Application granted granted Critical
Publication of JP3768516B1 publication Critical patent/JP3768516B1/ja
Publication of JP2006163552A publication Critical patent/JP2006163552A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

【課題】 小規模回路で柔軟に処理を実行する。
【解決手段】 マルチプロセッサシステム100において、第1のプロセッサの割込発生部24は、実行中のメインルーチンにおいて所定のコール命令を実行したとき第2のプロセッサに対して割込を発生させる。第2のプロセッサのアドレス退避部44は、割込発生部24から割込を受けたとき、コール命令によって呼び出されるサブルーチンの処理が完了したときメインルーチンへ戻るための戻りアドレスを所定のメモリ領域に退避する。割込発生部24は、サブルーチンにおいて所定のリターン命令を実行したとき第2のプロセッサに対して再度割込を発生させ、第2のプロセッサのアドレス通知部48は、再度発生された割込を受けたとき、戻りアドレスを第1のプロセッサへ通知する。
【選択図】 図1

Description

本発明は、コンピュータのプロセッサにマルチプロセッサ構成を用いたシステムと、そのシステムにおいてプログラムを実行する方法に関する。
リアルタイムマルチメディアアプリケーションの重要性は、より一層高まってきている。こうしたアプリケーションは、マルチプロセッサシステムで処理されることが多くなってきている。例えば、ゲーム機など高速かつ高精細な画像表示が要求される装置では、グラフィックプロセッサ(GPU;Graphics Processing Unit)とメインプロセッサとが連携して、高速性が要求されるグラフィック処理を実行する。
一方、ゲーム機、携帯電話、個人情報端末(PDA;Personal Digital Assistance)など、携帯型の電子装置は、ますます小型化する傾向にあり、プロセッサやメモリなどを実装する制御回路の小面積化、高集積化が要請される。
制御回路が小面積化、高集積化されてくると、プログラムの実行などを円滑に行うために実装されるレジスタなどのハードウェア資源を実装する面積も縮小していく。このようなハードウェア資源を少なくしていくと、コマンドによっては、円滑に実行することが難しくなる場合も生じてくる。
本発明は、このような状況に鑑みてなされたものであり、その目的は、小規模な回路で柔軟に処理を実行することができるマルチプロセッサシステムとそのシステムにおけるプログラム実行方法を提供することにある。
上記課題を解決するために、本発明のある態様は、マルチプロセッサシステムにおけるプログラム実行方法である。この方法は、第1のプロセッサが、実行中のメインルーチンにおいてコール命令を実行したとき、そのコール命令によって呼び出されるサブルーチンの処理が完了したときメインルーチンへ戻るための戻りアドレスの退避を第2のプロセッサに委託する。
本発明のさらに別の態様もまた、マルチプロセッサシステムにおけるプログラム実行方法である。この方法は、第1のプロセッサがコール命令またはジャンプ命令を実行したとき、コール先アドレスまたはジャンプ先アドレスのフルアドレスの取得を第2のプロセッサに委託する。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、小規模な回路で柔軟に処理を実行することができる。
まず、実施形態を詳細に説明する前に、概要を以下に示す。
ある態様は、第1のプロセッサと第2のプロセッサを含む。第1のプロセッサは、実行中のメインルーチンにおいて所定のコール命令を実行したとき第2のプロセッサに対して割込を発生する割込発生部を備える。第2のプロセッサは、当該割込発生部から割込を受けたとき、コール命令によって呼び出されるサブルーチンの処理が完了したときメインルーチンへ戻るための戻りアドレスを所定のメモリ領域に退避するアドレス退避部を備える。ここで、「メインルーチン」および「サブルーチン」とは、コール元のルーチンとコール先のルーチンとの関係を示した記載表現であり、例えば、特定のルーチンがコール元のルーチンとの関係では「サブルーチン」と、コール先のルーチンとの関係では「メインルーチン」と表現されてもよい。
上記割込発生部は、サブルーチンにおいて所定のリターン命令を実行したとき第2のプロセッサに対して再度割込を発生し、第2のプロセッサは、再度発生された割込を受けたとき、戻りアドレスを第1のプロセッサへ通知するアドレス通知部をさらに備えてもよい。第1のプロセッサは、命令をフェッチするフェッチャーを備え、このフェッチャーによるアクセスの対象アドレスとして戻りアドレスが設定されてもよい。
別の態様も、第1のプロセッサと第2のプロセッサを含む。第1のプロセッサは、所定のコール命令またはジャンプ命令を実行したとき第2のプロセッサに対して割込を発生する割込発生部を備える。第2のプロセッサは、第1のプロセッサから割込を受けたとき、コール命令またはジャンプ命令と、その後に置かれる実行停止命令のフォーマット中に分割して格納されたコール先アドレスまたはジャンプ先アドレスを抽出するアドレス抽出部と、取得したコール先アドレスまたはジャンプ先アドレスを第1のプロセッサに通知するアドレス通知部とを備える。ここで、「ジャンプ命令」は、条件付ジャンプ命令、無条件ジャンプ命令のいずれであってもよい。第1のプロセッサは、命令をフェッチするフェッチャーを備え、このフェッチャーによるアクセスの対象アドレスとしてコール先アドレスまたはジャンプ先アドレスが設定されてもよい。
別の態様は、グラフィックプロセッサとメインプロセッサを含む。グラフィックプロセッサは、メモリからディスプレイリストとして記述される命令を順次読み出すDMAC(Direct Memory Access Controller)と、読み出された命令を順次解読するデコーダと、解読された命令がディスプレイリストのメインルーチンに含まれる所定のコール命令であるときメインプロセッサに対して移行用割込を発生し、かつ、解読された命令がコール命令によって呼び出されるサブルーチンに含まれるリターン命令であるときメインプロセッサに対して復帰用割込を発生する割込発生部とを備える。メインプロセッサは、割込発生部から移行用割込を受けたとき、サブルーチンの処理が完了したときメインルーチンへ戻るための戻りアドレスを所定のメモリへ退避するアドレス退避部と、割込発生部から復帰用割込を受けたとき、戻りアドレスを所定のメモリから読み出してグラフィックプロセッサへ通知するアドレス通知部とを備える。グラフィックプロセッサへ通知された戻りアドレスがDMACのアクセスの対象アドレスとして設定される。
別の態様も、グラフィックプロセッサとメインプロセッサを含む。グラフィックプロセッサは、メモリからディスプレイリストとして記述される命令を順次読み出すDMACと、読み出された命令を順次解読するデコーダと、解読された命令がディスプレイリストに含まれる所定のコール命令またはジャンプ命令であるときメインプロセッサに対して割込を発生する割込発生部とを備える。メインプロセッサは、割込発生部から割込を受けたとき、コール命令またはジャンプ命令と、その後に置かれる実行停止命令のフォーマット中に分割して格納されたコール先アドレスまたはジャンプ先アドレスを取得してグラフィックプロセッサへ通知するアドレス通知部を備える。グラフィックプロセッサへ通知されたコール先アドレスまたはジャンプ先アドレスがDMACのアクセスの対象アドレスとして設定される。
第1のプロセッサ内部のスタック領域に空きがある場合は第1のプロセッサが自らそのスタック領域へ戻りアドレスを退避してもよい。一方、スタック領域に空きがない場合は第2のプロセッサに戻りアドレスの退避を委託してもよい。コール命令が、戻りアドレスの退避を第2のプロセッサへ委託する旨を明示しない命令であるとき、第1のプロセッサは、自身内蔵するスタック領域へ戻りアドレスを退避してもよい。一方、コール命令が、戻りアドレスの退避を第2のプロセッサへ委託する旨を明示する命令であるとき、第1のプロセッサは、第2のプロセッサに戻りアドレスの退避を委託してもよい。
コール先アドレスまたはジャンプ先アドレスのビット数が第1のプロセッサによって取得可能なビット数を超えているとき、コール先アドレスまたはジャンプ先アドレスのフルアドレスの取得を第2のプロセッサに委託してもよい。コール命令またはジャンプ命令が、コール先アドレスまたはジャンプ先アドレスの取得を第2のプロセッサへ委託する旨を明示する命令であるとき、コール先アドレスまたはジャンプ先アドレスのフルアドレスの取得を第2のプロセッサに委託してもよい。
以下、本発明の実施形態を詳細に説明する。
図1は、本発明の実施形態におけるマルチプロセッサシステム100の構成を示す図である。本実施形態におけるマルチプロセッサシステム100は、同一バス32上にGPU12、CPU14、およびメインメモリ16が接続された構成である。なお図1のブロック図では、GPU12、CPU14、およびメインメモリ16に関し、本実施形態の説明に必要な範囲で、それぞれの機能やデータ構造を記載しており、それらの一般的な機能やデータ構造は省略してある。
GPU12は、主に、3次元グラフィック表示に必要な計算やレンダリングを行うグラフィック処理用のプロセッサであり、ワンチップ化された半導体集積回路で構成されてもよい。GPU12は、DMAC20、デコーダ22、および割込発生部24を備える。DMAC20は、メインメモリ16との間で直接データ転送を行う。本実施形態では、メインメモリ16からコマンドをフェッチするフェッチャーとして機能する。
DMAC20は、アドレススタック26、アドレスカウンタ28、およびメモリ制御部30を含む。アドレススタック26は、GPU12が現在実行中の描画処理を割込の発生により一時中断し、コールバック関数などを実行する場合、当該コールバック関数に係るサブルーチンを終了し、上記描画処理を再開する際に戻るべき戻りアドレスを格納する。本実施形態では、GPU12の小規模化の要請により、小さな領域とする。例えば、レジスタを2個設け、2つの戻りアドレスを格納可能な設計にしてもよい。この設計では、2回コール命令が実行され、2段のサブルーチンが構築された場合も、このアドレススタック26に2つの戻りアドレスを格納することができる。それ以上のコール命令が実行された場合、その他の領域に戻りアドレスを格納する必要が生じるが、その領域の確保する手法については後述する。アドレスカウンタ28は、アクセス先のアドレス、本実施形態ではメインメモリ16のアドレスを保持し、データ読み出しタイミングにしたがい、そのアドレスをインクリメントしていく。メモリ制御部30は、メインメモリ16との間のデータ転送を制御し、具体的には、アドレスカウンタ28の指示するアドレスからデータを読み出す。
デコーダ22は、DMAC20にフェッチされたコマンドを順次解読する。その解読にしたがい、図示しない加算器などを備える実行ユニットは、コマンドを実行し、図示しないフレームメモリなどに演算結果を書き出す。デコーダ22は、解読したコマンドが、割込を発生させて、後述するディスプレイリスト50のコール命令であった場合、割込ハンドラ52を読み出す。割込ハンドラ52が実行されると、デコーダ22は、現在実行中の描画処理を一時中断して、その処理に復帰するための戻りアドレスをアドレススタック26に格納する。なお、描画処理を一時中断しない場合は、戻りアドレスを格納しなくてもよい。また、アドレススタック26に空き領域がない場合、割込発生部24に指示して、CPU14に戻りアドレスの格納を依頼する。
戻りアドレスの格納と共に、デコーダ22は、初期設定によりフックされているコールバック関数を読み出す。例えば、解読したコマンドフォーマットの下位16ビットに設定された引数を用いて、当該コールバック関数を呼び出す。この際、現在実行中の描画処理を一時中断させてもよいし、現在実行中の描画処理を継続してもよい。また、描画処理を一時中断した場合、コールバック処理から戻ってきた際、その中断していた処理を再開してもよいし、描画処理の再開を指示する別のコマンドを解読した際に、その処理を再開してもよい。これらは、予めコマンドフォーマットに、コマンドタイプとして設定することができる。また、ホルト命令などの実行停止命令の有無によって、設定してもよい。
また、デコーダ22は、解読したコマンドが割込を発生させて、後述するディスプレイリスト50のコール命令またはジャンプ命令を発生させるものであり、かつ、アクセスすべき対象アドレスの一部しか設定されていないタイプであった場合、デコーダ22が割込発生部24に指示して、CPU14にディスプレイリスト50の対象アドレスの抽出を依頼する。なお、コール命令であった場合、上記と同様に戻りアドレスを格納する。本実施形態では、この対象アドレスを、1つのコマンドフォーマット中に設定しきれない場合、複数コマンドに跨って設定する。例えば、ディスプレイリスト50に割込を発生させるためのコール命令やジャンプ命令のコマンドと、その後にホルト命令やエンドマーカが設定されたコマンドとがセットで記述されるコマンド体系を用いている場合、それら2つのコマンドに分割して設定することができる。そして、上記対象アドレスが32ビットで指定すべきものであり、1つのコマンドにアドレスを設定可能な領域が24ビット以下の場合、上記対象アドレスを16ビットずつに分割して、2つのコマンドフォーマット中に設定されてもよい。
なお、当該アドレスが1つのコマンドに設定可能なデータ長であり、1つのコマンドに設定されている場合、デコーダ22は、アドレスの抽出をCPU14に依頼しない。通常通り、デコーダ22は、そのアドレスをアドレスカウンタ28に設定すればよい。対象アドレスが複数のコマンドに分割されて設定されているか否かは、コマンドタイプとして、予めコマンドのフォーマット中に設定しておき、それを解読して判断してもよいし、実行停止コマンドの有無で判断してもよい。
また、デコーダ22は、解読したコマンドが割込を発生させて、上記コール命令に対応したリターン命令を発生させてるものであり、そのコール命令に対応する戻りアドレスをアドレススタック26または後述するメインメモリ16の補助スタック領域54から読み出す。その戻りアドレスが補助スタック領域54に格納されいている場合、割込発生部24に指示して、CPU14に戻りアドレスの読み出しを依頼する。
割込発生部24の以上の動作をまとめると、以下のイベントが発生した場合、CPU14に割込信号を発生させる。それは、戻りアドレスの格納をCPU14に依頼する場合である。また、複数のコマンドに分割して設定されたアドレスの抽出をCPU14に依頼する場合である。さらに、サブルーチンにおいて、コール元に戻るためのリターン命令が実行された際、戻りアドレスがメインメモリ16の補助スタック領域54に格納されている場合、その戻りアドレスの転送をCPU14に依頼する場合である。以下、本明細書中では、ディスプレイリスト50のメインルーチンに含まれる所定のコール命令を解読、実行したとき、CPU14に発生させる割込信号を移行用割込と呼ぶ。また、コール命令によって呼び出されたサブルーチンに含まれるリターン命令を解読、実行したとき、CPU14に発生させる割込信号を復帰用割込と呼ぶ。なお、割込を発生させるイベントには、キーボードからの入力など、種々存在するが、ここでは、本実施形態に関連するGPU12における描画処理実行中に、コール命令やジャンプ命令を解読、実行した際に発生する割込に限定して説明している。
CPU14は、割込制御部40、アドレス抽出部42、アドレス退避部44、アドレス読出部46、およびアドレス通知部48を備える。これらは、後述する割込ハンドラ52の機能を実現する機能ブロックを示す。割込制御部40は、GPU12の割込発生部24から移行用割込および復帰用割込を受け付ける。アドレス抽出部42は、移行用割込により、複数のコマンドに跨る対象アドレスの抽出を依頼されたとき、それぞれのコマンドからアドレスの一部を抽出する。例えば、コール命令またはジャンプ命令などのコマンド、およびその後に置かれるホルト命令などのコマンドのフォーマット中に分離して設定されたアドレスを抽出する。この対象アドレスは、メインメモリ16内のコール先アドレスまたはジャンプ先アドレスなどを指す。
CPU14は、GPU12より図示しないレジスタ群を多く備える。シフトレジスタを備えてもよい。例えば、1つのコマンドフォーマットが32ビット仕様で、アドレスの設定可能ビット数が24ビットまでと規定される場合、2つのコマンドのそれぞれの下位16ビットを利用して、32ビットで規定されるアドレスを16ビットずつに分割して、2つのコマンドに設定する。そして、当該アドレスの上位16ビットを先のコマンドに設定し、その下位16ビットを後のコマンドに設定する。アドレス抽出部42は、先のコマンドからアドレスの上位16ビットを抽出し、シフトレジスタに入れる。そのシフトレジスタでMSB(Most Significant Bit)側に16桁分シフトさせ、それと共に、後のコマンドからアドレスの下位16ビットを抽出し、シフトレジスタ内のデータと組み合わせることにより、分割前のアドレスに復元することができる。
アドレス通知部48は、アドレス抽出部42が生成した対象アドレスをGPU12に転送し、アドレスカウンタ28にそれを設定する。アドレスカウンタ28は、この処理により保持データが更新され、以降、この設定されたアドレスからインクリメントしていく。
アドレス退避部44は、移行用割込により、上記戻りアドレスの格納を依頼された場合、後述するメインメモリ16内の補助スタック領域54に、その戻りアドレスを格納する。複数の戻りアドレスを格納する場合、LIFO(Last-In First-Out)方式で補助スタック領域54に格納していくとよい。
アドレス読出部46は、復帰用割込により、戻りアドレスの転送を依頼された場合、メインメモリ16内の補助スタック領域54から、その戻りアドレスを読み出す。アドレス読出部46は、補助スタック領域54がLIFO方式で制御されている場合、最後に格納された戻りアドレスを読み出す。この読み出す順番は、GPU12からの戻りアドレス転送の依頼順にも合致する。
アドレス通知部48は、アドレス読出部46が読み出した戻りアドレスをGPU12に転送し、アドレスカウンタ28にそれを設定する。アドレスカウンタ28は、この処理により保持データが更新され、以降、この設定されたアドレスからインクリメントしていく。
メインメモリ16は、各種のコマンドやデータを格納する。本実施形態では、主に、ディスプレイリスト50、割込ハンドラ52を格納する。その他、テクスチャデータなどが格納されてもよい。また、メインメモリ16には、補助スタック領域54が確保される。ディスプレイリスト50とは、描画実行時に効率的に処理できるよう、描画に関するコマンド群をひとまとめにリスト化したものである。本実施形態では、GPU12にフェッチされて実行される。割込ハンドラ52は、割込を処理、制御するために待機しているプログラムである。本実施形態では、主に、ディスプレイリスト50の実行中にコール命令やジャンプ命令が実行される場合の、GPU12およびCPU14の動作を制御するものである。
補助スタック領域54は、本実施形態では、上記戻りアドレスを格納するために確保される領域である。例えば、メインメモリ16の最終の領域から先頭アドレスに戻る方向に、転送されてきた戻りアドレスを順々に格納していく。例えば、コール命令により実行されるサブルーチンの段数に対応して、補助スタック領域54を確保しておけばよい。
図2は、ディスプレイリスト50の一例を示す図である。DMAC20は、メインメモリ内のディスプレイリスト50の先頭アドレスから順番にフェッチしていく。図2において、コマンド”cmd"は、描画コマンドを総称したものであり、プリミティブを規定するためのワイヤー・フレームやポリゴンの指定、色の指定などを行うコマンドが該当する。
GPU12は、デコーダ22がアドレス#1に格納されたコマンド”call id"を解読すると、引数iDを利用して、予めフックしてあるコールバックス関数を呼び出す(処理s)。ここで、#記号は16進数表記を示す。図2では、予めアドレス#1000にコールバック関数が設定されている。そして、アドレス#1000から始まるサブルーチンを実行していき、デコーダ22がその終了を示すコマンド”return"を解読すると、戻りアドレス#2に移行し、コール元のメインルーチンへ復帰する(処理t)。なお、この戻りアドレスは、アドレススタック26またはメインメモリ16内の補助スタック領域54に格納されている。上記サブルーチンをコールした際に格納されたものである。
次に、GPU12は、デコーダ22がアドレス#100に格納されたコマンド”cpu call #20"を解読すると、そのコマンドと次のアドレス#101に格納されたコマンド”halt #FF"に分割されて設定されているアドレス#20FFをCPU14に抽出してもらい、そのアドレス#20FFから始まるサブルーチンを呼び出す(処理u)。そして、そのアドレス#20FFから始まるサブルーチンを実行していき、デコーダ22がその終了を示すコマンド”return"およびそれとセットのコマンド”halt”を解読すると、戻りアドレス#102に移行し、メインルーチンに復帰する(処理v)。
次に、GPU12は、デコーダ22がアドレス#1に格納されたコマンド”jmp #220"を解読すると、アドレス#220にジャンプする(w)。この場合、同一ルーチン内の分岐などによるジャンプであり、サブルーチンを呼び出し、その終了後にコール元に復帰させるという処理ではないため、戻りアドレスの格納は必要ない。ここでは、アドレスが24ビット以内で規定できる場合、複数のコマンドに分割して設定する必要はなく、1つのコマンドでアドレスを設定することができる。この処理、一般のジャンプ命令の処理と同様である。
次に、GPU12は、デコーダ22がアドレス#300に格納されたコマンド”cpu jmp #40"を解読すると、そのコマンドと次のアドレス#301に格納されたコマンド”halt #AA"に分割されて設定されているアドレス#40AAをCPU14に抽出してもらい、そのアドレス#40AAにジャンプする(処理x)。なお、コマンド中の”cpu"は、CPU14を介在させる処理であることを示す。
図3は、本実施形態におけるGPU12がCPU14にアドレス抽出を指示する第1コマンド例のフォーマットを示す。コマンド”cpu call"は、”halt"とセットで使用され、ディスプレイリスト50のコール命令を実行するものである。図3では、それぞれのコマンドが32ビットで規定され、上記8ビットすなわち31〜24桁にコマンドコードが、そこから下位に8ビットすなわち23〜16桁にコマンドタイプが、下位16ビットすなわち15〜0桁にデータフィールドとして、コール先アドレスの上位または下位16ビット分が記述されている。ここで、コマンドコードは、各コマンドをコード化したものである。コマンドタイプは、割込を発生させた場合に実行中の処理を中断するか否か、戻りアドレスの保存が必要か否か、GPU12単独の処理か否か、換言すればCPU14と協働する処理か否か、といったコマンドの実行に関する付随的情報を指定するものである。なお、これらのフォーマットは一例であり、デコーダ22が正確にコマンドを解読できれば、任意にフィールドを設定し、命令やデータを記述することができる。例えば、上位8ビットでコマンドの命令部を記述できる場合、残りの24ビットをデータフィールドとして、そこにアドレスや引数を記述してもよい。
図4は、本実施形態におけるGPU12がCPU14にアドレス抽出を指示する第2コマンド例のフォーマットを示す。コマンド”cpu jmp"は、”halt"とセットで使用され、ディスプレイリスト50のジャンプ命令を実行するものである。このジャンプ命令には、分岐によるジャンプ命令や無条件のジャンプ命令などが含まれる。図4も、図3と同様に、それぞれのコマンドの下位16ビット分のフィールドに、ジャンプ先アドレスの上位または下位16ビット分が記述されている。
図5は、本実施形態におけるコール命令を実行した際のフローチャートである。GPU12は、デコーダ22がコマンド”cpu call"を解読すると、そのコマンドを実行する(S10)。次に、デコーダ22がその次のコマンド”halt"を解読し、現在実行中の処理を一時中断する(S12)。GPU12は、これに平行して、CPU14に対して移行割込を発生させる(S14)。
CPU14は、この移行割込に応じて、GPU12が実行していたコール元のメインルーチンに復帰するための戻りアドレスをメインメモリ16内の補助スタック領域54に退避させる(S16)。それと共に、上記コマンド”cpu call"および コマンド”halt"に分割して格納されているコール先アドレスを抽出する(S18)。そして、そのコール先アドレスをGPU12に通知する(S20)。
GPU12は、コール先アドレスから始まるサブルーチンに移行する(S22)。そのサブルーチンを実行していき、デコーダ22がコマンド”return"を解読すると、そのコマンドを実行する(S24)。デコーダ22がその次のコマンド”halt"を解読し、現在実行中の処理を終了する(S26)。GPU12は、これに平行して、CPU14に対して復帰割込を発生させる(S28)。
CPU14は、この復帰割込に応じて、補助スタック領域54に退避させていた戻りアドレスをメインメモリ16内の補助スタック領域54から読み出す(S30)。そして、その戻りアドレスをGPU12に通知する(S32)。GPU12は、その戻りアドレスから、コール元のメインルーチンに復帰し、処理を続行する(S34)。
なお、以上説明した処理は、GPU12のアドレススタック26に空き領域がないことが前提の処理である。この点、アドレススタック26に空き領域がある場合は、戻りアドレスをそこに退避してもよい。また、GPU12内にフラグレジスタなどを設け、アドレススタック26に空き領域があるか否かを示すフラグをそのレジスタに立ててもよい。この場合、デコーダ22は、そのフラグを参照して、CPU14に戻りアドレスの退避を依頼するか否かを判断することができる。戻りアドレスをGPU12のアドレススタック26に格納する場合、図5のステップS16、S28〜S32の処理は不要となり、GPU12内での処理となる。
図6は、本実施形態におけるジャンプ命令を実行した際のフローチャートである。GPU12は、デコーダ22がコマンド”cpu jmp"を解読すると、そのコマンドを実行する(S50)。デコーダ22がその次のコマンド”halt"を解読し、現在実行中の処理を終了する(S52)。GPU12は、これに平行して、CPU14に対して割込を発生させる(S54)。
CPU14は、この割込に応じて、上記コマンド”cpu jmp"および コマンド”halt"に分割して格納されているジャンプ先アドレスを抽出する(S56)。そして、そのジャンプ先アドレスをGPU12に通知する(S58)。GPU12は、ジャンプ先アドレスに移行し(S60)、そのアドレスから読み出しを再開する。
以上説明したように本実施形態によれば、コール命令が割込として発生した場合、割込が発生したコール元のメインルーチンに復帰するための戻りアドレスをGPU12外のメインメモリ16に退避することができることから、GPU12内の戻りアドレスを格納する領域を縮小させることができる。すなわち、コール先のルーチンでさらにコール命令が発生するという処理が複数回実行され、複数段のサブルーチンが構築される場合、コール元のルーチンに復帰するための戻りアドレスを複数、保持する必要がある。これをGPU12内にすべて格納しようとすると、それだけレジスタを多く設ける必要が生じ、GPU12の小規模化を難しくする。これに対し、GPU12のレジスタを削減し、小規模化を図ると、複数段のサブルーチンを構築することが難しくなり、処理の柔軟性が低下してしまう。この点、本実施形態では、戻りアドレスをメインメモリ16に退避することができることから、GPU12の小規模化と処理の柔軟性を両立することができる。具体的には、ハードウェア資源的に簡素なGPU12でも、多数段のコール命令を処理することができる。
また、1つのコマンドフィールド中に、コール先アドレスやジャンプ先アドレスが入りきらず、複数のコマンドに渡ってそれらのアドレスが設定される場合、そのアドレスの抽出をCPU14に委託することにより、GPU12のレジスタを削減することができる。すなわち、複数のコマンドに跨るアドレスを抽出するには、それぞれのコマンドに含まれるアドレスの一部を抽出し、それをシフトさせたり、合成させたりするためのレジスタが必要となる。そのレジスタは、1つのコマンドに設定された引数やアドレスを抽出する場合に必要なレジスタより大きな規模となる。この点、本実施形態では、複数のコマンドに分割して設定されたアドレスを抽出するなど、シフトや加算などの論理演算が必要なコマンドの解読をメインのCPU14に委託する。これにより、GPU12は、1コマンド単位で解読可能なコマンドを処理するに必要なレジスタを備えればよいことになり、回路面積を削減し、小規模化を図ることができる。また、GPU12のハードウェア資源では解読が難しいコマンドは、CPU14が代わりに解読することにより、様々な記述体系のコマンドに対応することもできる。よって、GPU12の小規模化と処理の柔軟性を両立することができる。GPU12が小規模化されれば、マルチプロセッサシステム全体を小規模化することができる。
以上、実施形態をもとに本発明を説明した。なお本発明はこれらの実施形態に限定されることなく、そのさまざまな変形例もまた、本発明の態様として有効である。例えば、実施形態では、GPU12にアドレススタック26を備えた構成を説明した。この点、GPU12にアドレススタック26を設けずに、すべての戻りアドレスをメインメモリ16のスタック領域に格納してもよい。これによれば、さらにGPU12を小規模化することができる。
また、実施形態では、コール先アドレスおよびジャンプ先アドレスを2つのコマンドに分割して設定した。この点、1つのコマンドのデータフィールドが小さい場合や、設定するアドレスのデータ長がさらに長い場合などには、3つ以上のコマンドに分割して設定してもよい。これによれば、コマンドの記述体系を柔軟に規定することができる。また、1つのコマンドフォーマットを短くした場合、さらにGPU12のハードウェア資源を小規模化することも可能になる。
本発明の実施形態におけるマルチプロセッサシステムの構成を示す図である。 本実施形態におけるディスプレイリストの一例を示す図である。 本実施形態におけるGPUがCPUにアドレス抽出を指示する第1コマンド例のフォーマットを示す図である。 本実施形態におけるGPUがCPUにアドレス抽出を指示する第2コマンド例のフォーマットを示す図である。 本実施形態におけるコール命令を実行した際のフローチャートである。 本実施形態におけるジャンプ命令を実行した際のフローチャートである。
符号の説明
12 GPU、 14 CPU、 16 メインメモリ、 20 DMAC、 22 デコーダ、 24 割込発生部、 26 アドレススタック、 28 アドレスカウンタ、 30 メモリ制御部、 40 割込制御部、 42 アドレス抽出部、 44 アドレス退避部、 46 アドレス読出部、 48 アドレス通知部、 50 ディスプレイリスト、 52 割込ハンドラ、 54 補助スタック領域、 100 マルチプロセッサシステム。

Claims (12)

  1. 第1のプロセッサと第2のプロセッサを含み、
    第1のプロセッサは、実行中のメインルーチンにおいて所定のコール命令を実行したとき第2のプロセッサに対して割込を発生する割込発生部を備え、
    第2のプロセッサは、割込発生部から割込を受けたとき、前記コール命令によって呼び出されるサブルーチンの処理が完了したときメインルーチンへ戻るための戻りアドレスを所定のメモリ領域に退避するアドレス退避部を備えることを特徴とするマルチプロセッサシステム。
  2. 請求項1に記載のシステムにおいて、
    前記割込発生部は、サブルーチンにおいて所定のリターン命令を実行したとき第2のプロセッサに対して再度割込を発生し、
    第2のプロセッサは、再度発生された割込を受けたとき、前記戻りアドレスを第1のプロセッサへ通知するアドレス通知部をさらに備えることを特徴とするマルチプロセッサシステム。
  3. 請求項2に記載のシステムにおいて、第1のプロセッサは、命令をフェッチするフェッチャーを備え、このフェッチャーによるアクセスの対象アドレスとして前記戻りアドレスが設定されることを特徴とするマルチプロセッサシステム。
  4. 第1のプロセッサと第2のプロセッサを含み、
    第1のプロセッサは、所定のコール命令またはジャンプ命令を実行したとき第2のプロセッサに対して割込を発生する割込発生部を備え、
    第2のプロセッサは、
    第1のプロセッサから割込を受けたとき、前記コール命令またはジャンプ命令と、その後に置かれる実行停止命令のフォーマット中に分割して格納されたコール先アドレスまたはジャンプ先アドレスを抽出するアドレス抽出部と、
    取得したコール先アドレスまたはジャンプ先アドレスを第1のプロセッサに通知するアドレス通知部と、
    を備えることを特徴とするマルチプロセッサシステム。
  5. 請求項4に記載のシステムにおいて、第1のプロセッサは、命令をフェッチするフェッチャーを備え、このフェッチャーによるアクセスの対象アドレスとして前記コール先アドレスまたはジャンプ先アドレスが設定されることを特徴とするマルチプロセッサシステム。
  6. グラフィックプロセッサとメインプロセッサを含み、
    グラフィックプロセッサは、
    メモリからディスプレイリストとして記述される命令を順次読み出すDMACと、
    読み出された命令を順次解読するデコーダと、
    解読された命令がディスプレイリストのメインルーチンに含まれる所定のコール命令であるときメインプロセッサに対して移行用割込を発生し、かつ、解読された命令が前記コール命令によって呼び出されるサブルーチンに含まれるリターン命令であるときメインプロセッサに対して復帰用割込を発生する割込発生部とを備え、
    メインプロセッサは、
    割込発生部から移行用割込を受けたとき、前記サブルーチンの処理が完了したときメインルーチンへ戻るための戻りアドレスを所定のメモリへ退避するアドレス退避部と、
    割込発生部から復帰用割込を受けたとき、前記戻りアドレスを前記所定のメモリから読み出してグラフィックプロセッサへ通知するアドレス通知部とを備え、
    グラフィックプロセッサへ通知された戻りアドレスがDMACのアクセスの対象アドレスとして設定されることを特徴とするマルチプロセッサシステム。
  7. グラフィックプロセッサとメインプロセッサを含み、
    グラフィックプロセッサは、
    メモリからディスプレイリストとして記述される命令を順次読み出すDMACと、
    読み出された命令を順次解読するデコーダと、
    解読された命令がディスプレイリストに含まれる所定のコール命令またはジャンプ命令であるときメインプロセッサに対して割込を発生する割込発生部とを備え、
    メインプロセッサは、割込発生部から割込を受けたとき、前記コール命令またはジャンプ命令と、その後に置かれる実行停止命令のフォーマット中に分割して格納されたコール命令またはジャンプ先アドレスを取得してグラフィックプロセッサへ通知するアドレス通知部を備え、
    グラフィックプロセッサへ通知されたコール先アドレスまたはジャンプ先アドレスがDMACのアクセスの対象アドレスとして設定されることを特徴とするマルチプロセッサシステム。
  8. 第1のプロセッサが、実行中のメインルーチンにおいてコール命令を実行したとき、そのコール命令によって呼び出されるサブルーチンの処理が完了したときメインルーチンへ戻るための戻りアドレスの退避を第2のプロセッサに委託することを特徴とするマルチプロセッサシステムにおけるプログラム実行方法。
  9. 請求項8に記載の方法において、
    第1のプロセッサ内部のスタック領域に空きがある場合は第1のプロセッサが自らそのスタック領域へ戻りアドレスを退避する一方、
    前記スタック領域に空きがない場合は第2のプロセッサに戻りアドレスの退避を委託することを特徴とするマルチプロセッサシステムにおけるプログラム実行方法。
  10. 請求項8に記載の方法において、
    前記コール命令が、戻りアドレスの退避を第2のプロセッサへ委託する旨を明示しない命令であるとき、第1のプロセッサは、自身内蔵するスタック領域へ戻りアドレスを退避する一方、
    前記コール命令が、戻りアドレスの退避を第2のプロセッサへ委託する旨を明示する命令であるとき、第1のプロセッサは、第2のプロセッサに戻りアドレスの退避を委託することを特徴とするマルチプロセッサシステムにおけるプログラム実行方法。
  11. 第1のプロセッサがコール命令またはジャンプ命令を実行したとき、コール先アドレスまたはジャンプ先アドレスのビット数が第1のプロセッサによって取得可能なビット数を超えているとき、コール先アドレスまたはジャンプ先アドレスのアドレスの取得を第2のプロセッサに委託することを特徴とするマルチプロセッサシステムにおけるプログラム実行方法。
  12. 第1のプロセッサがコール命令またはジャンプ命令を実行したとき、前記コール命令またはジャンプ命令が、コール先アドレスまたはジャンプ先アドレスの取得を第2のプロセッサへ委託する旨を明示する命令であるとき、コール先アドレスまたはジャンプ先アドレスのアドレスの取得を第2のプロセッサに委託することを特徴とするマルチプロセッサシステムにおけるプログラム実行方法。
JP2004350702A 2004-12-03 2004-12-03 マルチプロセッサシステムとそのシステムにおけるプログラム実行方法 Active JP3768516B1 (ja)

Priority Applications (8)

Application Number Priority Date Filing Date Title
JP2004350702A JP3768516B1 (ja) 2004-12-03 2004-12-03 マルチプロセッサシステムとそのシステムにおけるプログラム実行方法
AT09011692T ATE522863T1 (de) 2004-12-03 2005-10-31 Mehrprozessorsystem und programmausführungsverfahren im system
US10/587,553 US7805596B2 (en) 2004-12-03 2005-10-31 Highly integrated multiprocessor system
AT05805443T ATE461482T1 (de) 2004-12-03 2005-10-31 Mehrprozessorsystem und programmausführungsverfahren in dem system
DE602005020063T DE602005020063D1 (de) 2004-12-03 2005-10-31 Mehrprozessorsystem und programmausführungsverfahren in dem system
EP05805443A EP1840736B1 (en) 2004-12-03 2005-10-31 Multi-processor system and program execution method in the system
PCT/JP2005/020000 WO2006059444A1 (ja) 2004-12-03 2005-10-31 マルチプロセッサシステムとそのシステムにおけるプログラム実行方法
EP09011692A EP2124147B1 (en) 2004-12-03 2005-10-31 Multi-processor system and program execution method in the system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004350702A JP3768516B1 (ja) 2004-12-03 2004-12-03 マルチプロセッサシステムとそのシステムにおけるプログラム実行方法

Publications (2)

Publication Number Publication Date
JP3768516B1 true JP3768516B1 (ja) 2006-04-19
JP2006163552A JP2006163552A (ja) 2006-06-22

Family

ID=36383717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004350702A Active JP3768516B1 (ja) 2004-12-03 2004-12-03 マルチプロセッサシステムとそのシステムにおけるプログラム実行方法

Country Status (6)

Country Link
US (1) US7805596B2 (ja)
EP (2) EP2124147B1 (ja)
JP (1) JP3768516B1 (ja)
AT (2) ATE461482T1 (ja)
DE (1) DE602005020063D1 (ja)
WO (1) WO2006059444A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) * 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8269782B2 (en) * 2006-11-10 2012-09-18 Sony Computer Entertainment Inc. Graphics processing apparatus
JP2008228969A (ja) * 2007-03-20 2008-10-02 Seiko Epson Corp 画像表示装置及び遊技機
JP2009110455A (ja) * 2007-10-31 2009-05-21 Hakko Denki Kk プログラマブル操作表示器、そのプログラム
US8480398B1 (en) * 2007-12-17 2013-07-09 Tamer Yunten Yunten model computer system and lab kit for education
KR20090103070A (ko) * 2008-03-27 2009-10-01 삼성전자주식회사 멀티 링크 아키텍쳐에서 저장 상태정보의 다이렉트전송기능을 갖는 멀티 프로세서 시스템
AU2017285429B2 (en) 2016-06-16 2022-03-31 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4459659A (en) * 1981-02-04 1984-07-10 Burroughs Corporation Subroutine control circuitry for providing subroutine operations in a data processing system in which tasks are executed on a microprogrammed level
US5706478A (en) * 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
US5784638A (en) * 1996-02-22 1998-07-21 International Business Machines Corporation Computer system supporting control transfers between two architectures
US6505290B1 (en) * 1997-09-05 2003-01-07 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US6167504A (en) * 1998-07-24 2000-12-26 Sun Microsystems, Inc. Method, apparatus and computer program product for processing stack related exception traps
US6807620B1 (en) * 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
JP3338043B2 (ja) * 2000-11-02 2002-10-28 株式会社ソニー・コンピュータエンタテインメント 並列演算装置、エンタテインメント装置、演算処理方法、コンピュータプログラム、半導体デバイス
JP2003036169A (ja) * 2001-07-25 2003-02-07 Nec Software Tohoku Ltd 複数の小規模プロセッサによって並列処理を行なうシングルチップマイクロプロセッサ
US7024538B2 (en) * 2001-12-21 2006-04-04 Hewlett-Packard Development Company, L.P. Processor multiple function units executing cycle specifying variable length instruction block and using common target block address updated pointers
US6671196B2 (en) * 2002-02-28 2003-12-30 Sun Microsystems, Inc. Register stack in cache memory
US6996677B2 (en) * 2002-11-25 2006-02-07 Nortel Networks Limited Method and apparatus for protecting memory stacks
US8042179B2 (en) * 2003-09-04 2011-10-18 Science Park Corporation False code execution prevention method, program for the method, and recording medium for recording the program

Also Published As

Publication number Publication date
WO2006059444A1 (ja) 2006-06-08
EP1840736B1 (en) 2010-03-17
ATE461482T1 (de) 2010-04-15
DE602005020063D1 (de) 2010-04-29
EP1840736A4 (en) 2009-04-08
EP1840736A1 (en) 2007-10-03
JP2006163552A (ja) 2006-06-22
ATE522863T1 (de) 2011-09-15
US7805596B2 (en) 2010-09-28
EP2124147B1 (en) 2011-08-31
US20070283135A1 (en) 2007-12-06
EP2124147A1 (en) 2009-11-25

Similar Documents

Publication Publication Date Title
KR100733943B1 (ko) 프로세서 시스템, dma 제어 회로, dma 제어 방법,dma 제어기의 제어 방법, 화상 처리 방법, 및 화상처리 회로
EP1840736B1 (en) Multi-processor system and program execution method in the system
KR100385495B1 (ko) 워드정렬브랜치타겟을가지는처리시스템
JPH10505444A (ja) 処理システム、プロセッサ、命令ストリーム格納用メモリ及びコンパイラ
US8082429B2 (en) Information processing apparatus and exception control circuit
JPS62115542A (ja) 情報処理装置
US7246220B1 (en) Architecture for hardware-assisted context switching between register groups dedicated to time-critical or non-time critical tasks without saving state
JPS62226231A (ja) プロセツサ
JP5186802B2 (ja) マイクロプロセッサ
JP2553200B2 (ja) 情報処理装置
JPS6217773B2 (ja)
JPH0524537B2 (ja)
JP4389797B2 (ja) プロセッサおよび情報処理方法
JP2024022371A (ja) ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム
JPS61122754A (ja) マイクロプロセツサ
JPS62151936A (ja) マイクロプロセツサに内蔵されるキヤツシユ回路
CN114579264A (zh) 处理装置、处理系统和处理方法
JPS61118836A (ja) マイクロプログラム制御装置
JPH01234936A (ja) 命令プリフェッチ抑制装置
JPS61112240A (ja) デ−タ処理装置
JPH06295252A (ja) 計算機
JP2000215058A (ja) 計算機及び命令実行方法
JP2005227848A (ja) ベクトルプロセッサおよびメモリアクセス方法
JP2004094973A (ja) プロセッサ
JPH08328853A (ja) プロセッサ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060105

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060201

R150 Certificate of patent or registration of utility model

Ref document number: 3768516

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

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100210

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110210

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120210

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120210

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130210

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140210

Year of fee payment: 8

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250