JP3583443B2 - 演算装置および演算方法 - Google Patents

演算装置および演算方法 Download PDF

Info

Publication number
JP3583443B2
JP3583443B2 JP54260298A JP54260298A JP3583443B2 JP 3583443 B2 JP3583443 B2 JP 3583443B2 JP 54260298 A JP54260298 A JP 54260298A JP 54260298 A JP54260298 A JP 54260298A JP 3583443 B2 JP3583443 B2 JP 3583443B2
Authority
JP
Japan
Prior art keywords
register
instruction
stored
arithmetic
data
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 - Lifetime
Application number
JP54260298A
Other languages
English (en)
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
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Application granted granted Critical
Publication of JP3583443B2 publication Critical patent/JP3583443B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

技術分野
本発明は、CPUを用いた算術論理演算を行うための演算装置および演算方法に関するものである。
背景技術
コンピュータなどに用いられる演算装置であるCPU(Central Processing Unit)のなかには、マルチメディア命令(以下では、MM命令または単に命令という。)と呼ばれる命令群を持つものがある。このMM命令は、CPUが備えている演算器を分割して複数の演算を同時に実行させるものである。
図1は、従来のCPUの一構成例を示している。この従来のCPUは、データ処理を実行するための算術論理演算手段である算術論理演算ユニット(ALU)130、データを左右にシフトさせるためのシフト処理手段であるシフト処理ユニット(SHT)140、およびレジスタユニット(REG)150を備えており、例えば64ビットのバス160,170,180と接続されてデータを相互に転送する。
図2は、上述した従来のCPUにおける、64ビット×64ビットの乗算器による乗算を示している。すなわち、レジスタAの64ビットのワードsと、レジスタBの64ビットのワードtとの積である128ビットのワードs*tが生成されてレジスタCに格納される。
図3は、上記の64ビットワードsおよびtを各々4個のフィールドに分割してそれぞれ4つのビットフィールドを形成し、対応するフィールドのビット、すなわち、16ビット×16ビットの乗算を行う様子を示している。すなわち、レジスタAの各々16ビットs0,s1,s2,s3と、レジスタBの各々16ビットt0,t1,t2,t3との積である各々32ビットのs0*t0,s1*t1,s2*t2,s3*t3が生成されてレジスタCに格納される。
このような4並列乗算は、CPUが備えている乗算器を4分割して4並列の乗算器を構成することにより実現できる。また同様に、CPUが備えている加算器を4分割して4並列加算器を構成することもできる。
図4は、上述した従来のCPUにおける、128ビット+128ビットの加算器による加算を示している。すなわち、レジスタAの128ビットsと、レジスタBの128ビットtとの和である128ビット(s+t)が生成されてレジスタCに格納される。
図5は、上記の各ワードを4分割して、各々32ビット+32ビットの加算を行う様子を示している。すなわち、レジスタAの各々32ビットs0,s1,s2,s3と、レジスタBの各々32ビットt0,t1,t2,t3との和である各々32ビットのs0+t0,s1+t1,s2+t2,s3+t3が生成されてレジスタCに格納される。
上記のように演算対象のデータ幅が16ビットや32ビット程度であるときには、一つの演算器を分割して構成される並列演算器を用いれば、演算処理を高速に行うことができる。図3および図5に示した並列演算を行わせる命令は、このために用いられるマルチメディア(MM)命令の一部である。
以下に、従来のMM命令を用いる並列演算の具体例を示す。
まず、第1の具体例として、以下の(1)式のようなn+1元連立一次方程式をクラーマー(cramer)の公式を用いて解く場合について説明する。
Figure 0003583443
Figure 0003583443
このクラーマーの公式を用いると、(2)式のように(n+1)×(n+1)行列式のj列目を順次置き換えることにより(1)式の連立一次方程式の解を得ることができる。つまり、行列式を計算できれば、連立一次方程式を解くことができる。
一般に、(n+1)×(n+1)行列式は、次数がn+1より低い小行列式を用いて(3)式のように展開される。ここで、Δijは、上記の(n+1)×(n+1)行列式のi行目およびj列目を取り去ったものに、(−1)i+jで与えられる符号を付したものである。
Figure 0003583443
すなわち、次数がより低い小行列式を順次計算すれば、もとの行列式を計算できる。従って、最低次の行列式である2×2行列式を計算できれば任意の次数の行列式を計算できることになる。2×2行列式を計算するためには(4)式で示される展開を用いればよい。
Figure 0003583443
また、3×3行列の行列式を計算する場合には、(3)式で示される展開が(5)式のようになる。
Figure 0003583443
図6は、3×3行列の各行ベクトル(a00,a01,a02),(a10,a11,a12),(a20,a21,a22)が、各々64ビットとしてレジスタA0,A1,A2に格納されている様子を示している。以下では、このように格納された行ベクトルに対して、従来のMM命令を用いて2×2の小行列式を計算する手順について説明する。
図7は、図6の3×3行列の行ベクトルに対して、従来のMM命令を用いて2×2の小行列式を計算する手順を示している。
まず、命令「SRL B,A1,16」により、レジスタA1に格納された行ベクトルが、右に16ビットだけシフトされてレジスタBに格納される。
次に、命令「ANDI B,0x000000000000ffff」により、レジスタBに格納された上記の行ベクトルと、000000000000ffffとの積(AND)が生成されてレジスタBに再び格納される。これにより、レジスタBのビット0からビット15までの下位の16ビットにa11のみが格納される。
次に、命令「SLL C,A1,16」により、レジスタA1に格納された行ベクトルが、左に16ビットだけシフトされてレジスタCに格納される。
次に、命令「ANDI C,0x00000000ffff0000」により、レジスタCに格納された上記の行ベクトルと、00000000ffff0000との積(AND)が生成されてレジスタCに再び格納される。これにより、レジスタCのビット16からビット31までの16ビットにa12のみが格納される。
次に、命令「OR D,B,C」により、レジスタBに格納されたデータと、レジスタCに格納されたデータの和(OR)が生成されてレジスタDに格納される。これにより、レジスタDの下位の32ビットにa12,a11が格納される。
次に、命令「PMUL E,A0,D」により、レジスタA0に格納された行ベクトルと、レジスタDに格納されたデータとが並列に乗算され、その結果がレジスタEに格納される。すなわち、レジスタEの上位の32ビットにa01*a12が格納され、下位の32ビットにa02*a11が格納される。
次に、命令「SRL F,E,32」により、レジスタEに格納されたデータが、右に32ビットだけシフトされてレジスタFに格納される。すなわち、レジスタFの下位の32ビットにa01*a12のみが格納される。
次に、命令「ANDI E,0x00000000ffffffff」により、レジスタEを格納された上記のデータと、00000000ffffffffとの積(AND)が生成されてレジスタEに再び格納される。これにより、レジスタEの下位の16ビットにa02*a11のみが格納される。
次に、命令「SUB G,F,E」により、レジスタFに格納されたデータから、レジスタEに格納されたデータが差し引かれて差が生成され、レジスタGに格納される。これにより、レジスタGの下位の32ビットに2×2行列の行列式a01*a12−a02*a11が格納される。
このように、従来のMM命令を用いて2×2行列の行列式を計算する場合には、上記の9ステップが必要であった。
次に、従来のMM命令を用いて並列演算を行う第2の具体例として、三角形の法線を求める場合について説明する。
3次元空間の3つの点は、一つの三角形を決める。また、三角形の面積と法線ベクトルは、外積ベクトルの絶対値と正規化ベクトルとで与えられる。このような2つの3次元ベクトルの外積は、(6)式で与えられる3次元ベクトルである。
Figure 0003583443
図8は、2つの3次元ベクトル(a00,a01,a02),(a10,a11,a12)が、各々64ビットの2つのワードとしてレジスタA0,A1に格納されている様子を示している。以下では、このように格納された2つの3次元ベクトルに対して、従来のMM命令を用いて外積を計算する手順について説明する。
図9は、図8の2つの3次元ベクトルに対して、従来のMM命令を用いて外積を計算する手順を示している。
まず、命令「SRL B,A0,16」により、レジスタA0に格納された行ベクトルが、右に16ビットだけシフトされてレジスタBに格納される。
次に、命令「SLL C,A0,32」により、レジスタA0に格納された行ベクトルが、左に32ビットだけシフトされてレジスタCに格納される。
次に命令「OR D,B,C」により、レジスタBに格納されたデータと、レジスタCに格納されたデータとの和(OR)が生成されてレジスタDに格納される。これにより、レジスタDに各々16ビットのa01,a02,a00,a01が格納される。
次に、命令「SLL E,A1,16」により、レジスタA1に格納された行ベクトルが、左に16ビットだけシフトされてレジスタEに格納される。
次に、命令「SRL F,A1,32」により、レジスタA1に格納された行ベクトルが、右に32ビットだけシフトされてレジスタFに格納される。
次に、命令「OR G,E,F」により、レジスタEに格納されたデータと、レジスタFに格納されたデータとの和(OR)が生成されてレジスタGに格納される。これにより、レジスタGに各々16ビットのa10,a11,a12,a10が格納される。
次に、命令「PMUL H,D,G」により、レジスタDに格納されたデータと、レジスタGに格納されたデータとが並列に乗算され、その結果がレジスタHに格納される。すなわち、レジスタHに各々32ビットのa01*a10,a02*a11,a00*a12,a01*a10が格納される。
次に、命令「SLL B,A0,16」により、レジスタA0に格納された行ベクトルが、左に16ビットだけシフトされてレジスタBに格納される。
次に、命令「SRL C,A0,32」により、レジスタA0に格納された行ベクトルが、右に32ビットだけシフトされてレジスタCに格納される。
次に、命令「OR D,B,C」により、レジスタBに格納されたデータと、レジスタCに格納されたデータとの和(OR)が生成されてレジスタDに格納される。これにより、レジスタDに各々16ビットのa00,a01,a02,a00が格納される。
次に、命令「SRL E,A1,16」により、レジスタA1に格納された行ベクトルが、右に16ビットだけシフトされてレジスタEに格納される。
次に、命令「SLL F,A1,32」により、レジスタA1に格納された行ベクトルが、左に32ビットだけシフトされてレジスタEに格納される。
次に、命令「OR G,E,F」により、レジスタEに格納されたデータと、レジスタFに格納されたデータとの和(OR)が生成されてレジスタGに格納される。これにより、レジスタGに各々16ビットのa11,a12,a10,a11が格納される。
次に、命令「PMUL H,D,G」により、レジスタDに格納されたデータと、レジスタGに格納されたデータとが並列に乗算され、その結果がレジスタHに格納される。すなわち、レジスタHに各々32ビットのa00*a11,a01*a12,a02*a10,a00*a11が格納される。
次に、命令「PSUB K,J,H」により、レジスタJに格納されたデータから、レジスタHに格納されたデータが並列に減算され、その結果がレジスタKに格納される。すなわち、レジスタKに各々32ビットのa00*a11−a01*a10,a01*a12−a02*a11,a02*a10−a00*a12,a00*a11−a01*a10が格納される。
このように、従来のMM命令を用いて2つの3次元ベクトルの外積を計算する場合には、上記の15ステップが必要であった。
次に、従来のMM命令を用いて並列演算を行う第3の具体例として、2つのベクトルの内積を計算する場合について説明する。
2つのベクトルの内積は、それらの相関の度合いを表す。このような2つのベクトルの内積として、例えば2つの4次元ベクトルの内積は、(7)式で与えられる。
(a0a1a2a3)*(b0b1b2b3
=a0*b0+a1*b1+a2*b2+a3*b3 (7)
図10は、64ビットワードの2つの4次元ベクトル(a0,a1,a2,a3),(b0,b1,b2,b3)が、それぞれ2つのワードとしてレジスタA,Bに格納されている様子を示している。以下では、このように格納された2つの4次元ベクトルに対して、従来のMM命令を用いて内積を計算する手順について説明する。
図11は、図10の2つの4次元ベクトルに対して、従来のMM命令を用いて内積を計算する手順を示している。なお、この図11の×印をつけた部分は、この演算に無関係な値が格納されていることを示している。
まず、命令「PMUL C,A,B」により、レジスタAに格納されたデータと、レジスタBに格納されたデータとが並列に乗算され、その結果がレジスタHに格納される。すなわち、レジスタCに各々16ビットのa0*b0,a1*b1,a2*b2,a3*b3が格納される。
次に、命令「SLL D,C,16」により、レジスタCに格納されたデータが、左に16ビットだけシフトされてレジスタDに格納される。
次に、命令「PADD E,C,D」により、レジスタCに格納されたデータと、レジスタDに格納されたデータとが並列に加算され、その結果がレジスタEに格納される。これにより、レジスタEには、ビット16からビット31に16ビットのa2*b2+a3*b3が格納され、ビット48からビット63に16ビットのa0*b0+a1*b1が格納される。
次に、命令「SLL F,E,32」により、レジスタEに格納されたデータが、左に32ビットだけシフトされてレジスタFに格納される。これにより、レジスタFには、最上位の16ビットにa2*b2+a3*b3のみが格納され、下位の2つの16ビットのデータ値はいずれも0になる。
次に、命令「PADD G,E,F」により、レジスタEに格納されたデータと、レジスタFに格納されたデータとが並列に加算され、その結果がレジスタGに格納される。これにより、レジスタGには、最上位の16ビットにa0*b0+a1*b1+a2*b2+a3*b3が格納される。
このように、従来のMM命令を用いて2つの4次元ベクトルの内積を計算する場合には、上記の5ステップが必要であった。
ところで、従来のMM命令を用いる演算装置および演算方法では、レジスタに複数のnビットのワードのデータを格納しているものの、それらのうちの同一のビットフィールド間でのみ演算が行われる。すなわち、複数フィールドからなる演算対象ワード内のフィールド間で直接に演算操作を施すことができないため、上述したような並列演算を行う際に所望のフィールド間で演算を行うための余分なフィールド操作を行う必要が生じ、演算速度を十分に高めることができなかった。
発明の開示
本発明は、上述した問題点に鑑みてなされたものであり、従来の演算装置よりも少ないステップ数で高速に並列演算が可能な演算装置および演算方法を提供することを目的としている。
本発明に係る演算装置は、複数のMビット(M≧1)からなるフィールドで構成される演算対象ワードに対して算術論理演算を行う算術論理演算手段と、上記演算対象ワードに対して所定のビット数だけシフトさせるシフト処理手段と、上記演算対象ワードおよび上記演算が行われたワードを格納するレジスタとを備え、上記同一の演算対象ワード内の上記複数フィールド間で並列演算を行う機能を有することを特徴とする。
また、本発明に係る演算方法は、複数のMビットからなるフィールドで構成される演算対象ワードに対してフィールド単位で算術論理演算を行う演算方法であって、同一演算対象ワード内の2以上のフィールドを交換するステップを有することを特徴とする。
このような演算装置および演算方法によれば、余分なフィールド操作を行う必要がないため、従来よりも少ないステップ数で高速に並列演算を行うことができる。
【図面の簡単な説明】
図1は、従来のCPUの構成例を示す図である。
図2は、64ビット×64ビットの乗算器による乗算について説明するための図である。
図3は、4分割された64ビット×64ビットの乗算器による並列乗算について説明するための図である。
図4は、64ビット×64ビットの加算器による加算について説明するための図である。
図5は、4分割された64ビット×64ビットの加算器による並列加算について説明するための図である。
図6は、3×3行列の行ベクトルが、各々64ビットワードとしてレジスタに格納されている様子を示す図である。
図7は、3×3行列の行ベクトルに対して、従来のMM命令を用いて2×2の小行列式を計算する手順を示す図である。
図8は、2つの3次元ベクトルが、各々64ビットのワードとしてレジスタに格納されている様子を示す図である。
図9は、2つの3次元ベクトルに対して、従来のMM命令を用いて外積を計算する手順を示す図である。
図10は、2つの4次元ベクトルが、各々2つのワードとしてレジスタに格納されている様子を示す図である。
図11は、2つの4次元ベクトルに対して、従来のMM命令を用いて内積を計算する手順を示す図である。
図12は、本発明の演算装置の一形態であるCPUの構成例を示す図である。
図13は、MM命令を有するCPUの基本的な構成例を示す図である。
図14A,B,Cは、命令「PMUL」と「PADD」について説明するための図である。
図15A〜Eは、本発明の演算装置のMM命令について説明するための図である。
図16は、データ交換ユニット(EXC回路)の構成例を示す図である。
図17は、EXC回路のマルチプレクサ(MUX)について説明するための図である。
図18は、MUXに送られる2つのコマンドと動作を示す図である。
図19は、EXC回路に送られるEXCコマンドと実現されるMM命令との対応を示す図である。
図20は、命令「PEXC」を実現するための回路を示す図である。
図21は、命令「PEXH」を実現するための回路を示す図である。
図22は、命令「PROT3」を実現するための回路を示す図である。
図23は、命令「PHADD」を実現するための回路を示す図である。
図24は、命令「PHSUB」を実現するための回路を示す図である。
図25は、本発明の演算装置により、各々格納された3×3行列の行ベクトルに対して2×2の小行列式を計算する手順を示す図である。
図26は、本発明の演算装置により2つの3次元ベクトルに対して外積を計算する手順を示す図である。
図27は、本発明の演算装置により2つの4次元ベクトルに対して内積を計算する手順を示す図である。
図28は、本発明に係る演算装置を適用した画像作成装置の構成例を示すブロック図である。
発明を実施するための最良の形態
以下、本発明の演算装置および演算方法の好ましい実施の形態について図を参照しながら説明する。以下では、まず本発明の演算装置の実施の形態の構成について説明し、その構成を参照しながら本発明の演算方法の実施の形態について説明する。
図12は、本発明の演算装置の実施の一形態としてのCPUの主要部の構成例を示している。このCPUは、算術論理演算手段である算術論理演算ユニット(ALU)330、シフト処理ユニット(SHT)340、およびレジスタユニット(REG)350を備えて構成されており、これらは64ビットのバス(BUS)360,370,380および16ビットのパラレルバスを介して互いにデータを転送することができる。上記のALU330,SHT340,REG350は、それぞれ4つに分割されて構成されている。
上記の各部は、図13に示すCPUの各部と同様の構成を有しているが、バス360,370とALU330の間に、ワード内のビットフィールド交換手段であるデータ交換ユニツト(EXC)310,320を備えている点が相違している。すなわち、このワード内のビットフィールド交換手段であるEXC310,320により、ALU330で同一の演算対象ワード内の複数フィールド間で演算を行う演算機能を実現している。なお、1フィールドはMビット(M≧1)から成っており、以下の実施の形態では、1フィールドを例えば16ビットとしている。
次に、上述した本発明の演算装置が有している新たなMM命令についての説明に先立って、本発明の演算装置の基本となる演算装置の構成例を参照しながら、前述したMM命令である「PMUL」と「PADD」について再度説明する。
図13は、MM命令を有するCPUの基本的な構成例を示している。このMM命令を有するCPUの構成例は、図1に示したMM命令を有していない従来のCPUの構成例に基づいているが、ALU230,SHT240,REG250が、それぞれ分割されて4つずつ構成されている点が異なっている。
そして、バス260とALU230との間のデータ転送路として、64ビットのパラレル転送路に代えて、4つの16ビットパラレル転送路265を備えている。
図14A〜Cは、図13の演算装置で実行されるMM命令「PMUL」と「PADD」について示している。
図14Aは、各々16ビットのデータがREG250の64ビットレジスタA,Bの4分割された16ビットの各フィールドにそれぞれ格納されている様子を示している。
図14Bは、命令「PMUL C,A,B」により、上記のレジスタAの4つのフィールドに個々に格納されている4つのデータと、レジスタBに格納されている4つのデータとがALU230で並列に乗算され、各々32ビットの積がREG250のレジスタCに格納される様子を示している。
また、図14Cは、命令「PADD C,A,B」により、上記のレジスタAに格納されている4つのデータと、レジスタBに格納されている4つのデータとが並列に加算され、各々16ビットの和がレジスタCに格納される様子を示している。
ところが、図13の演算装置における上述のようなMM命令による演算は、ワード単位で行われるものであり、フィールド単位で演算を行うためにはステップ数が余計に必要であった。そこで、本発明の演算装置は、新しいMM命令である「ワード内のビットフィールド交換命令」および「ワード内のデータ間の演算命令」をさらに有して、より少ないステップ数で演算を行うように構成されている。
以下では、本発明の演算装置のMM命令群について、図15A〜Eを参照しながら説明する。
図15Aは、命令「PEXC」について示している。すなわち、命令「PEXC B,A」は、4分割されたレジスタAの、最上位のフィールドのデータと最下位のフィールドのデータはそのままにして、中央の2つのフィールドのデータを交換して、レジスタBに格納するものである。
図15Bは、命令「PEXH」について示している。すなわち、命令「PEXH B,A」は、4分割されたレジスタAの、上位の2つのフィールドの各データを互いに交換し、下位の2つのフィールドの各データを互いに交換して、レジスタBに格納するものである。
図15Cは、命令「PROT3」について示している。すなわち、命令「PROT3 B,A,16」は、4分割されたレジスタAの、最上位のフィールドのデータはそのままにして、下位の3つのフィールドの各データを16ビットだけずらしてローテーションさせて、レジスタBに格納するものである。
図15Dは、命令「PHADD」について示している。すなわち、命令「PHADD B,A」は、4分割されたレジスタAの、上位の2つのフィールドの各データを互いに加算し、下位の2つのフィールドの各データを互いに加算して、レジスタBに格納するものである。
図15Eは、命令「PHSUB」について示している。すなわち、命令「PHSUB B,A」は、4分割されたレジスタAの、上位の2つのフィールドの各データを減算し、下位の2つのフィールドの各データを減算して、レジスタBに格納するものである。
このように、本発明の演算装置は、従来のMM命令に加えて、分割されたビットフィールド間の交換を行う命令、および同一レジスタ内の異なるビットフィールド間の演算を行う命令をさらに有することにより演算性能を向上させたものである。
次に、従来のMM命令に加えて、上述したような新たなMM命令をさらに有する本発明の演算装置の構成について具体的に説明する。
図16は、図12のデータ交換ユニツト(EXC回路)310の構成例を示している。このEXC回路310への各入力A0〜A3は、マルチプレクサ(MUX)311〜314のそれぞれに供給される。そして、上記の各MUXは、供給される2つのコマンドにより、出力するデータを選択する。これにより、EXC310の動作が、コマンドC0〜C7により制御される。
なお、ここではEXC310についてのみ説明したが、EXC回路320についても同様である。
次に、上述したEXC回路310,320のMUX311〜314について説明する。これらのMUXは、4入力1出力の構成を有しており、各々2つのコマンドにより動作が制御される。
図17は、上記のMUX311〜314のうちのMUX311を示している。このMUX311は、4入力1出力の構成を有しており、2つのコマンドC0,C1によって動作が制御される。
図18は、上記のMUX311に送られる2つのコマンドと動作の対応を示している。すなわち、コマンドC0,C1が共に0のときには入力A0が出力B0とされる。また、C0が0であり、C1が1のときには入力A1が出力B0とされる。同様に、C0が1であり、C1が0のときには入力A2が出力B0とされ、C0,C1が共に1のときには入力A3が出力B0とされる。
なお、ここでは、MUX311について説明したが、MUX312〜314についても同様である。すなわち、MUX312はコマンドC2,C3により、MUX313はコマンドC4,C5により、MUX314はコマンドC6,C7により、それぞれ動作が同様に制御される。
図19は、図16に示したEXC回路に送られるEXCコマンドC0〜C7と、これらのコマンドにより実現されるMM命令との対応を示している。すなわち、
C0,C1,C3,C4が0であり、C2,C5,C6,C7が1であるときには、命令「PEXC」が実現される。
C0,C2,C3,C7が0であり、C1,C4,C5,C6が1であるときには、命令「PEXH」が実現される。
C0,C1,C4,C7が0であり、C2,C3,C5,C6が1であるときには、命令「PROT3」が実現される。
C0,C2,C3,C7が0であり、C1,C4,C5,C6が1であるときには、命令「PHADD」が実現される。
C0,C2,C3,C7が0であり、C1,C4,C5,C6が1であるときには、命令「PHSUB」が実現される。
なお、上記の命令「PHADD」と「PHSUB」は、EXC命令が同一であるが、ALUのコマンドが異なっている。
次に、上述した本発明の演算装置が有する新しいMM命令を実現するための回路について具体的に説明する。なお、以下の説明において、a0〜a3は、各々16ビットまたは32ビットのデータ幅を持つ入力データであり、全体として1つのワードを構成している。また、b0〜b3は、それぞれ16ビットまたは32ビットのデータ幅を持つ出力データであり、全体として1つのワードを構成している。
図20は、命令「PEXC」を実現するための回路を示している。この回路は、交換回路「exchange」を備えて構成されている。この回路に入力される4つのデータa0,a1,a2,a3に対して、最上位のa0および最下位のa3は、そのままb0およびb3として出力される。また、最上位と最下位のデータの間の2つのデータは互いに交換されて、a1がb2とされ、a2がb1とされて出力される。
図21は、命令「PEXH」を実現するための回路を示している。この回路は、2つの交換回路「exchange」を備えて構成されている。この回路に入力される4つのデータa0,a1,a2,a3のうち、上位の2つのデータa0,a1が互いに交換されて、a0がb1とされ、a1がb0とされて出力される。また、入力される上記の4つのデータのうち、下位の2つのデータa2,a3が互いに交換されて、a2がb3とされ、a3がb2とされて出力される。
図22は、命令「PROT3」を実現するための回路を示している。ここで、「SELECT」は選択回路である。この回路に入力される4つのデータa0,a1,a2,a3のうち、最上位のデータa0は、そのままb0とされて出力される。また。他の3つのデータa1,a2,a3は、3入力1出力の選択回路「select」で、例えば、a1がb3とされ、a2がb1とされ、a3がb2とされて出力される。すなわち、最上位のデータa0を除く上記の3つのデータは、ローテーションされて出力される。
図23は、命令「PHADD」を実現するための回路を示している。この回路は、2つの足し算回路「ADD」を備えて構成されている。この回路に入力される4つのデータa0,a1,a2,a3のうち、上位の2つのデータa0,a1が互いに加算されてb0とされて出力される。また、入力される上記の4つのデータのうち、下位の2つのデータa2,a3が互いに交換されてb2とされて出力される。
図24は、命令「PHSUB」を実現するための回路を示している。この回路は、2つの引き算回路「SUB」を備えて構成されている。この回路に入力される4つのデータa0,a1,a2,a3のうち、上位の2つのデータa0からa1が減算されてb0とされて出力される。また、出力される上記の4つのデータのうち、下位の2つのデータa2からa3が減算されてb2とされて出力される。
次に、前述したような、同一ワード内の異なるビットフィールドどうしを交換したり演算する機能を有する本発明の演算装置により、演算を行う場合について説明する。
図25は、本発明の演算装置を用いて、3×3行列の行ベクトルに対して2×2の小行列式を計算する手順を示している。
まず、前述した命令「PEXH D,A1」により、4分割されたレジスタA1の、上位の2つのデータを互いに交換し、下位の2つのデータを互いに交換してレジスタDに格納する。
次に、命令「PMULH E,A0,D」により、レジスタA0に格納された行ベクトルと、レジスタDに格納されたデータとの並列乗算が、16ビット単位で行われ、その結果がレジスタEに格納される。この命令「PMULH」は、前述した命令「PMUL」と同様の操作を、ワード長の半分だけを単位として行う命令である。これにより、レジスタEの上位の32ビットにはa01*a12が格納され、下位の32ビットにはa02*a11が格納される。
次に、命令「PSUBW G,E」により、レジスタEに格納されたデータを32ビット単位で、レジスタHに格納された16ビット単位のデータを差し引く並列減算が行われ、その結果がレジスタKに格納される。この命令「PSUBW」は、命令「PSUB」と同様の操作を、ワード長を単位として行う命令である。これにより、レジスタGの上位の32ビットには0が格納され、下位のa01*a12−a02*a11が格納される。
このように、2×2行列式を計算するために、従来の演算装置では図7に示したように9ステップが必要であったが、本発明の演算装置によれば上記の3ステップのみで済む。
図26は、本発明の演算装置により、2つの3次元ベクトルの外積を計算する手順を示している。
まず、命令「PROT3 B,A0,16」により、レジスタA0の、最上位のデータはそのままにして、下位の3つのデータを16ビットだけずらしてローテーションさせてレジスタBに格納する。
次に、命令「PROT3 C,A1,32」により、レジスタA1の、最上位のデータはそのままにして、下位の3つのデータを32ビットだけずらしてローテーションさせてレジスタCに格納する。
次に、命令「PMUL D,B,C」により、レジスタBに格納された行ベクトルと、レジスタCに格納されたデータとの並列乗算が行われ、その結果がレジスタDに格納される。すなわち、レジスタDの最上位の32ビットには0が格納され、続く各々32ビットにはa02*a11,a00*a12,a01*a10が順次格納される。
次に、命令「PROT3 B,A0,32」により、レジスタA0の、最上位のデータはそのままにして、下位の3つのデータを32ビットだけずらしてローテーションさせてレジスタBに格納する。
次に、命令「PROT3 C,A1,16」により、レジスタA1の、最上位のデータはそのままにして、下位の3つのデータを16ビットだけずらしてローテーションさせてレジスタCに格納する。
次に、命令「PMUL E,B,C」により、レジスタBに格納されたデータと、レジスタCに格納されたデータとの並列乗算が行われ、その結果がレジスタEに格納される。すなわち、レジスタEの最上位の32ビットには0が格納され、続く各々32ビットにはa01*a12,a02*a10,a00*a11が順次格納される。
次に、命令「PSUB F,E,D」により、レジスタE格納されたデータから、レジスタDに格納されたデータを差し引く並列減算が行われ、その結果がレジスタKに格納される。すなわち、レジスタFの最上位の32ビットには0が格納され、続く各々32ビットにはa01*a12−a02*a11,a02*a10−a00*a12,a00*a11−a01*a10が格納される。
このように、2つの3次元ベクトルの外積を計算するために、従来の演算装置では図9に示したように15ステップが必要であったが、本発明の演算装置によれば上記の7ステップのみで済む。
図27は、本発明の演算装置により、2つの4次元ベクトルの内積を計算する手順を示している。
まず、命令「PMUL C,A,B」により、レジスタAに格納されたデータと、レジスタBに格納されたデータとの並列乗算が行われ、その結果がレジスタCに格納される。すなわち、レジスタCには、各々32ビットのa0*b0,a1*b1,a2*b2,a3*b3が格納される。
次に、命令「PHADD E,C」により、レジスタEの、上位の2つのデータを互いに加算し、下位の2つのデータを互いに加算してレジスタEに格納する。
次に、命令「PEXC E」によりレジスタEの、最上位のデータと最下位のデータはそのままにして、中央の2つのデータを交換して格納する。
次に、命令「PHADD G,E」により、レジスタEの、上位の2つのデータを互いに加算し、下位の2つのデータを互いに加算してレジスタGに格納する。これにより、レジスタGの最上位の32ビットには、a0*b0+a1*b1+a3*b3+a3*b3が格納される。
なお、この図27の×印をつけた部分は、この演算に無関係な値が格納されていることを示している。
このように、2つの4次元ベクトルの内積を計算するために、従来の演算装置では図11に示したように5ステップが必要であったが、本発明の演算装置によれば上記の4ステップのみで済む。
図28は、以上説明したMM命令を備える本発明に係る演算装置を用いて構成した画像作成装置の構成例を示している。
この図28において、マイクロプロセッサ等からなる中央処理装置であるCPU1は、入力パッドやジョイスティック等の入力デバイス4の操作情報をインタフェース3およびメインバス9を介して取り出すためのものであり、本発明の演算装置が用いられている。そして、上記CPU1は、取り出された操作情報に基づいて、第1のメモリであるメインメモリ2に記憶されている3次元画像の情報を上記メインバス9を介してグラフィックプロセッサ6に送る。
グラフィックプロセッサ6は、送られた3次元画像の情報を交換して画像データを生成するためのものであり、ここで生成された画像データによる3次元画像が第2のメモリであるビデオメモリ5上に描かれる。このビデオメモリ5上に描かれた3次元画像データは、ビデオ信号のスキャン時に読み出されて図示しない表示装置上に3次元画像が表示される。
また、上述のように3次元画像を表示すると同時に、上記CPU1によって取り出された操作情報中の上記表示された3次元画像に対応する音声情報が、オーディオプロセッサ7に送られる。上記オーディオプロセッサ7は、この送られた音声情報に基づいてオーディオメモリ8内に記憶されている音声データを表示する。
このような画像作成装置は、例えば、3次元画像を比較的高精度かつ高速度に表示することが要求される家庭用ゲーム機に使用されるものである。
家庭用ゲーム機において、上述のような画像作成装置を用いて3次元画像を表示する方法は、表示対象となる物体の陰影を付加するシェーディング法や、他の2次元画像を変形して貼り付けるテクスチャマッピングが代表的である。
また、3次元を示す座標計には、3次元の物体そのものに関する形状や寸法を表現するためのオブジェクト座標系、3次元の物体を空間に配置したときの物体の位置を示すワールド(世界)座標系、およびスクリーン上に表示した3次元の物体を表現するためのスクリーン座標系が使用されることが多い。特に、スクリーン座標系上の3次元物体の3次元画像を表す単位となる多角形領域、いわゆるポリゴンは、簡略化した三角形領域として扱われることが多い。
本発明に係る演算装置は、この三角形領域(ポリゴン)に対して、頂点座標を算出したり、対象物体の属性と光源データとから法線ベクトルと光源ベクトルとの内積計算等を行うために好適なものである。
以上説明したような演算装置によれば、従来のMM命令に加えて、演算対象の同一ワード内の複数フィールド間で演算を行う機能を有するMM命令をさらに有して構成されているために、従来より少ないステップ数で高速に並列演算を行うことができる。
なお、本発明は上記実施の形態のみに限定されるものではなく、例えばレジスタのビット数やフィールドのビット数は図示のものに限定されないことは勿論である。

Claims (5)

  1. それぞれMビット(M≧1)から成る複数のフィールドで構成される演算対象ワードに対して算術論理演算を行う算術論理演算手段と、
    上記演算対象ワードに対して所定のビット数だけシフトさせるシフト処理手段と、
    上記演算対象ワードおよび上記演算が行われたワードを格納するレジスタとを備え、
    上記同一の演算対象ワード内の上記複数フィールド間で並列演算を行うことを特徴とする演算装置。
  2. 上記算術論理演算手段は演算対象データに対して上記フィールド単位で算術論理演算を行う算術論理演算ユニットを複数有して成り、上記シフト処理手段は演算対象データに対して上記フィールド単位で所定のビット数だけシフトさせるシフト処理演算ユニットを有して成り、上記レジスタは演算対象および演算が行われたデータを上記フィールド単位で格納するレジスタユニットを複数有して成ることを特徴とする請求項1記載の演算装置。
  3. 上記複数フィールドからなる演算対象ワード内のフィールドを交換するフィールド交換手段を更に備えることを特徴とする請求項2記載の演算装置。
  4. 演算装置によって、複数のMビットからなるフィールドで構成される演算対象ワードに対してフィールド単位で算術論理演算を行う演算方法であって、
    前記演算装置に設けられたフィールド交換手段によって、同一演算対象ワード内の2以上のフィールドの交換を実行し、
    更に、前記演算装置は、上記フィールドを交換した演算 対象ワードのフィールド間での算術論理演算を実行し、 上記演算結果を上記演算対象フィールドの一方に格納す ることを特徴とする演算方法。
  5. 前記算術論理演算を行うステップでは、上記フィールドを交換した演算対象ワードのフィールド間で加算又は減算を行うことを特徴とする請求項記載の演算方法。
JP54260298A 1997-04-08 1998-04-08 演算装置および演算方法 Expired - Lifetime JP3583443B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP8975197 1997-04-08
PCT/JP1998/001626 WO1998045774A1 (en) 1997-04-08 1998-04-08 Arithmetic unit and arithmetic method

Publications (1)

Publication Number Publication Date
JP3583443B2 true JP3583443B2 (ja) 2004-11-04

Family

ID=13979457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP54260298A Expired - Lifetime JP3583443B2 (ja) 1997-04-08 1998-04-08 演算装置および演算方法

Country Status (6)

Country Link
EP (1) EP0930564B1 (ja)
JP (1) JP3583443B2 (ja)
KR (1) KR20000016448A (ja)
CN (1) CN1231038A (ja)
DE (1) DE69836408T2 (ja)
WO (1) WO1998045774A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2820523B1 (fr) * 2001-02-08 2003-05-16 St Microelectronics Sa Microprocesseur comportant une instruction d'inversion des bits d'un mot binaire
JP3753991B2 (ja) 2002-02-15 2006-03-08 株式会社ルネサステクノロジ プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4839845A (en) * 1986-03-31 1989-06-13 Unisys Corporation Method and apparatus for performing a vector reduction
JP3154542B2 (ja) * 1992-02-27 2001-04-09 株式会社日立製作所 データ処理装置
JPH07262010A (ja) * 1994-03-25 1995-10-13 Hitachi Ltd 演算処理装置および演算処理方法
GB9509989D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
US5673321A (en) * 1995-06-29 1997-09-30 Hewlett-Packard Company Efficient selection and mixing of multiple sub-word items packed into two or more computer words
GB9514695D0 (en) * 1995-07-18 1995-09-13 Sgs Thomson Microelectronics Combining data values
GB9514684D0 (en) * 1995-07-18 1995-09-13 Sgs Thomson Microelectronics An arithmetic unit

Also Published As

Publication number Publication date
DE69836408D1 (de) 2006-12-28
KR20000016448A (ko) 2000-03-25
WO1998045774A1 (en) 1998-10-15
DE69836408T2 (de) 2007-09-27
CN1231038A (zh) 1999-10-06
EP0930564A4 (en) 2002-11-06
EP0930564A1 (en) 1999-07-21
EP0930564B1 (en) 2006-11-15
WO1998045774A9 (fr) 1999-05-06

Similar Documents

Publication Publication Date Title
US7783860B2 (en) Load misaligned vector with permute and mask insert
US7724261B2 (en) Processor having a compare extension of an instruction set architecture
US5001662A (en) Method and apparatus for multi-gauge computation
US8332452B2 (en) Single precision vector dot product with “word” vector write mask
US20060149804A1 (en) Multiply-sum dot product instruction with mask and splat
JPH02289097A (ja) 画像表示データ処理装置
US6714197B1 (en) Processor having an arithmetic extension of an instruction set architecture
JP3954171B2 (ja) コンピュータにおけるスカラ値をベクトルに記入する方法
JP2001520775A (ja) 算術プロセッサ
TWI780116B (zh) 用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作
US20090015589A1 (en) Store Misaligned Vector with Permute
US6732259B1 (en) Processor having a conditional branch extension of an instruction set architecture
US6778188B2 (en) Reconfigurable hardware filter for texture mapping and image processing
US6674435B1 (en) Fast, symmetric, integer bezier curve to polygon conversion
JP3583443B2 (ja) 演算装置および演算方法
US5850227A (en) Bit map stretching using operand routing and operation selective multimedia extension unit
JPH09288722A (ja) 高性能バンド結合機能
JP3723115B2 (ja) 単一命令多重データ処理
JP2001222712A (ja) 画像処理装置、畳み込み積分回路及びその方法
JPS62134763A (ja) 3アドレス・コ−ドの指標づけ装置
JP5608932B2 (ja) 並列プロセッサ用のアドレス指定装置
CA2308249C (en) Triangle strip length maximization
JPH06309349A (ja) プログラム制御のプロセッサ
JP3691538B2 (ja) ベクトルデータ加算方法及びベクトルデータ乗算方法
JPH03268024A (ja) マイクロプロセッサ、情報処理装置及びそれを用いた図形表示装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040610

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040729

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20070806

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20080806

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080806

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090806

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090806

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100806

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110806

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110806

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120806

Year of fee payment: 8

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20120806

Year of fee payment: 8

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

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

Free format text: PAYMENT UNTIL: 20120806

Year of fee payment: 8

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

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

Free format text: PAYMENT UNTIL: 20120806

Year of fee payment: 8

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120806

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 9

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

EXPY Cancellation because of completion of term