Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP3735524B2 - Table conversion by difference data in SIMD type microprocessor - Google Patents
[go: Go Back, main page]

JP3735524B2 - Table conversion by difference data in SIMD type microprocessor - Google Patents

Table conversion by difference data in SIMD type microprocessor Download PDF

Info

Publication number
JP3735524B2
JP3735524B2 JP2000286999A JP2000286999A JP3735524B2 JP 3735524 B2 JP3735524 B2 JP 3735524B2 JP 2000286999 A JP2000286999 A JP 2000286999A JP 2000286999 A JP2000286999 A JP 2000286999A JP 3735524 B2 JP3735524 B2 JP 3735524B2
Authority
JP
Japan
Prior art keywords
data
conversion
section
post
converted
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
JP2000286999A
Other languages
Japanese (ja)
Other versions
JP2002099406A (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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2000286999A priority Critical patent/JP3735524B2/en
Publication of JP2002099406A publication Critical patent/JP2002099406A/en
Application granted granted Critical
Publication of JP3735524B2 publication Critical patent/JP3735524B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、マイクロプロセッサ、特に、SIMD(Single Instructin−stream Multiple Data−stream;単一命令多データ処理)型マイクロプロセッサに関する。
【0002】
【従来の技術】
SIMD型マイクロプロセッサでは、複数のデータに対して1つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理(例えば、画像処理)に係る用途において、頻用される。
【0003】
SIMD型マイクロプロセッサにおける通常の演算処理では、複数の演算ユニット(Processor Element〔PE〕;プロセッサエレメント)を並べ同一の演算を同時に複数のデータに対して実行する。ところが、演算処理の内容を単一の演算式で表すことができない「非線形処理」では、演算対象のデータに応じて演算式が変更されるため、同じ処理を同時に実行することができない。そうすると、データ毎の逐次処理をせざるを得ず、結局SIMDであることの効果が無くなってしまう。
【0004】
通常のSISD(Single Instructin−stream Single Data−stream;単一命令単一データ処理)型のプロセッサにおいても、演算対象データに応じて演算式が変更される非線形処理では、演算処理を行うプログラムが非常に複雑になりかねない。それを防ぐため、演算前データに対して演算後の処理済みデータを予め全て準備してそれらをテーブル化し、演算前データを元にテーブル変換を行ない演算後データを得る方式が一般的である。具体的にはRAM(Random Access Memory)上に上記テーブルを格納し、演算前データにテーブルの先頭の番地を加算した値をアドレスポインタとしてRAMから得られたデータを、演算後データとしている。例えば、演算データ(演算前データ/演算後データ)が8ビットの場合には、256バイトのサイズの変換テーブルが必要となる。
【0005】
この変換テーブルのサイズは、演算データのビット幅の増加とともに2のベキ乗(の単位)で増加するため、演算データのビット幅が相当に大きい場合は、演算データを任意の区間に分け、その区間での近似式をテーブルとして持つような方式も開示されている。
【0006】
さて、このテーブル変換をSIMD型マイクロプロセッサで採用する場合には、個々の演算単位においてテーブルが必要となると考えられていた。例えば256SIMD(即ち、演算単位〔演算ユニット、PE〕が256個あるSIMD)のプロセッサにおいて、8ビットの演算データ(演算前データ/演算後データ)のテーブル変換を行なう場合には、256バイトの(RAM上の)テーブルが演算単位分即ち256個必要となる。よって、コスト面において大きな問題があった。そのため、SIMD型マイクロプロセッサの非線型演算のテーブル変換に対して、種々の発明が案出され開示されている。
【0007】
特開平5−67203号においては、各SIMD単位のPE(Processor Element;プロセッサエレメント)内蔵の出力レジスタから演算前データを順次外部に出力し、外部で逐次にテーブル変換を行ない、変換後のデータをPE内蔵の入力レジスタに順次入力する方式が提案されている。この方式では変換テーブルが1個となるためコストの上昇は抑えられるが、結局は逐次処理であるため、演算処理時間は最低でもPEの個数相応までかかってしまい演算速度面で不利である。また、この変換処理をPEでの通常処理と並行に実行すれば演算処理時間はトータルとして削減できるが、入力・出力のレジスタがこの変換作業専用に使用され他の用途に使用できない、変換処理後のデータが必要な場合には演算処理時間だけ待つこととなり並行処理が不可能である、といった問題が依然残る。
【0008】
また、特開平9−305550号において、外部から順次変換前データと変換後のデータを入力し、各PEで入力された変換前データと演算前データを比較し、一致したPEには変換後のデータを格納しこの値を演算後データとする方式が提案されている。この場合には、演算処理時間は演算前データの取りうる値の組み合わせ数(即ち、変換テーブルのワード数)に依存するため、PEの個数よりこのワード数が少ない場合には高速化が実現される。ところが、演算前データが8ビットデータの場合、PE数によらず256回程度のサイクル数となるため、この場合においても演算処理時間が長くなるという問題がある。また、他の通常の処理と並行にこの変換処理を行うという方式も想定され得るが、その場合にも上記特開平5−67203号と同じ問題が生じる。なお、複数の区間に分けて個別の区間内の変換を近似する式を用い、近似式の係数をロードする方法も提案されているが、この場合は区間ごとに係数だけ異なる共通の式で表現できる非線型変換にしか対応できない、という問題がある。
【0009】
さらに、特許第2812292号においては、PEの個数と同数の出力ポートを持つ変換テーブル用のRAMに対して、それぞれのPEから演算前データをアドレスポインタとして与えることで演算後データを得る方法が提案されている。この方式においては変換速度は1サイクル程度で終了するが、出力ポートの増加はRAMのコストを押し上げることになり、特に数十個を超えるポートを持つことは実現不可能である。したがって、PE数が多いSIMD型マイクロプロセッサに対応できない、という問題がある。
【0010】
【発明が解決しようとする課題】
本発明は、SIMD型マイクロプロセッサにおける非線形な処理において、廉価な装置を用いてより高速に行なうことを目的とする。
【0011】
【課題を解決するための手段】
本発明は、上記の目的を達成するためになされたものである。本発明に係る請求項1に記載のSIMD型マイクロプロセッサの処理方法は、
複数の演算ユニットをもつSIMD型マイクロプロセッサにおいて、
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、1つ又は複数設定されており、その対応付けはそれぞれ変換処理を定義しており、
個別の上記変換テーブルにおいて、複数の変換前データは昇順に若しくは降順に並ぶことが想定されており、且つ、複数の変換前データ及び複数の変換後データは、所定の区間に分割されており、
上記変換テーブルの変換後データにおいては、
各区間の区間先頭の変換後データは実際の値が格納され、区間先頭以外の変換後データに関しては直前の変換後データとの差分データが格納され、
変換対象演算データに対する変換後データを求める際には、
上記複数の演算ユニットに、上記変換対象データが格納され、
上記変換テーブルの変換前データと変換後データとの対応付けにより、上記変換対象データの変換後データが属するべき変換後データの区間を確定し、
更に、その変換後データが属する区間の区間先頭の変換後データに対して、差分データが必要分だけ加算されて、
上記変換対象データに対する変換後データを求める、
SIMD型マイクロプロセッサの処理方法である。
【0012】
本発明に係る請求項2に記載のSIMD型マイクロプロセッサの処理方法は、
複数の演算ユニットをもつSIMD型マイクロプロセッサにおいて、
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、1つ又は複数設定されており、その対応付けはそれぞれ変換処理を定義しており、
個別の上記変換テーブルにおいて、複数の変換前データは昇順に若しくは降順に並ぶことが想定されており、且つ、複数の変換前データ及び複数の変換後データは、所定の区間に同様に分割されており、
上記変換テーブルの変換後データにおいては、
各区間の区間先頭の変換後データに関しては直前の区間の区間先頭データとの第1の差分値が格納され、区間先頭以外の変換後データに関しては直前の変換後データとの第2の差分データが格納され、
変換対象演算データに対する変換後データを求める際には、
上記複数の演算ユニットに、上記変換対象データが格納され、
上記変換テーブルの変換前データと変換後データとの対応付けにより、上記変換対象データの変換後データが属するべき変換後データの区間を確定し、
まず、その変換後データが属する区間の区間先頭データが、第1の差分値の累積加算により求められ、
更に、その変換後データが属する区間の上記区間先頭データに対して、第2の差分データが必要分だけ加算されて、
上記変換対象データに対する変換後データを求める、
SIMD型マイクロプロセッサの処理方法である。
【0014】
【発明の実施の形態】
以下、図面を参照して、本発明に係る好適な実施形態を説明する。
【0015】
図1は、本発明に係るSIMD型マイクロプロセッサ2の概略の構成を示すブロック図である。該SIMD型マイクロプロセッサ2は、概略、グローバルプロセッサ4、レジスタファイル6、及び演算アレイ8から構成される。
【0016】
(1)グローバルプロセッサ4
このグローバルプロセッサ4そのものは、いわゆるSISD型のプロセッサであり、プログラムRAM10とデータRAM12を内蔵し(図2参照)、プログラムを解読し各種制御信号を生成する。この制御信号は内蔵する各種ブロックの以外に、レジスタファイル6、演算アレイ8にも供給される。また、GP(グローバルプロセッサ)命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)等を使用して各種演算処理、プログラム制御処理をおこなう。
【0017】
(2)レジスタファイル6
PE(プロセッサエレメント)命令で処理されるデータを保持している。PE(プロセッサエレメント)3は、公知のように、SIMD(Single Instruction−Stream,Multiple Data−Stream)型プロセッサにおいて個別の演算を実行する構成単位である。図2のレジスタファイル6及び演算アレイ8が示すように、図2のSIMD型マイクロプロセッサ2では256個のPE3を含んでいる。上記のPE命令はSIMD型の命令であり、レジスタファイル6に保持されている複数のデータに対し、同時に同じ処理を行なう。このレジスタファイル6からのデータの読み出し/書き込みの制御はグローバルプロセッサ4からの制御によって行なわれる。読み出されたデータは演算アレイ8に送られ、演算アレイ8での演算処理後にレジスタファイル6に書き込まれる。
【0018】
また、レジスタファイル6はプロセッサ2外部からのアクセスが可能であり、グローバルプロセッサ4の制御とは別に、外部から特定のレジスタに対し読み出し/書き込みが行なわれる。
【0019】
(3)演算アレイ
PE命令の演算処理が行なわれる。処理の制御はすべてグローバルプロセッサ4から行なわれる。
【0020】
図2は、本発明に係るSIMD型マイクロプロセッサ2の、更に詳細な構成を示すブロック図である。
【0021】
グロバールプロセッサ4には、本プロセッサ2のプログラム格納用のプログラムRAM10と、演算データ格納用のデータRAM12が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ(PC)14、演算処理のデータ格納のための汎用レジスタであるG0、G1、G2及びG3レジスタ(16、18、20、22)、レジスタ退避・復帰時に退避先データRAMのアドレスを保持しているスタックポインタ(SP)24、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ(LS)26、同じくIRQ(Interrupt ReQuest;割込み要求)時とNMI(Non−Maskable Interrupt ReQuest;禁止不能割込み要求)時の分岐元アドレスを保持するLIレジスタ28及びLNレジスタ30、プロセッサの状態を保持しているプロセッサステータスレジスタ(P)32が内蔵されている。
【0022】
これらのレジスタと、(図示していない)命令デコーダ、ALU、メモリ制御回路、割り込み制御回路、外部I/O制御回路及びGP演算制御回路とを使用して、GP命令の実行が行なわれる。
【0023】
また、PE命令実行時には、命令デコーダ、(図6に示されている)レジスタファイル制御回路56、PE演算制御回路58を使用して、レジスタファイル6の制御と演算アレイ8の制御を行なう。さらに、データRAM12から複数のPEレジスタファイル6にデータを転送できるように、設定されている。
【0024】
レジスタファイル6においては、1つのPE単位に8ビットのレジスタ34が32本内蔵されており、256個のPE分の(32本の)組が、アレイ構成になっている。レジスタ34はPE毎に、R0、R1、R2、...R31と呼ばれる。それぞれのレジスタ34は、演算アレイ8に対して1つの読み出しポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバスで演算アレイ8からアクセスされる。32本のレジスタの内、24本(R0〜R23)はプロセッサ外部からアクセス可能であり、外部からはクロック(CLK)とアドレス(Address)、リード/ライト制御(RWB)を入力することで、任意のレジスタ34に対し、読み書きできる。残りの8本(R24〜R31)のレジスタ34は、PE演算の一時的な演算データ保存用として使用される。
【0025】
演算アレイ8は、16ビットALU36と16ビットAレジスタ38、Fレジスタ40を内蔵している。PE命令による演算は、レジスタファイル6から読み出されたデータ若しくはグローバルプロセッサ4から与えられたデータをALU36の片側の入力とし、Aレジスタ38の内容をもう片側の入力として、行なわれるものである。その演算結果は、Aレジスタ38に格納される。したがって、R0〜R31レジスタ34若しくはグローバルプロセッサ4から与えられたデータと、Aレジスタ38に格納されるデータとの、演算が行なわれることになる。
【0026】
レジスタファイル6と演算アレイ8との接続に、7to1(7対1)のマルチプレクサ42が置かれている。図2に示すように、あるマルチプレクサ42から見て、左方向の3つのPE3に含まれるR0〜R31レジスタ34のデータと、右方向の3つのPE3に含まれるR0〜R31レジスタ34のデータと、自らが属するPE3に含まれるR0〜R31レジスタ34のデータを、演算対象として選択し得るように設定されている。また、レジスタファイル6の8ビットのデータは、シフト・拡張回路44により任意のビット分だけ、左シフトしてALU36に入力する。さらに、8ビットの条件レジスタ54(図6に示す)により、PE3別に演算実行の無効/有効の制御をしており、特定のPE3だけを演算対象として選択できるようになっている。
【0027】
≪第1の実施の形態≫
図3は、本発明に係る第1の実施の形態である、SIMD型マイクロプロセッサにおける差分データ利用テーブル変換の手順のフローチャートである。図3の手順は、図2及び図6のSIMD型マイクロプロセッサ2を稼動するプログラムコードにより、実現されるものである。上記フローチャートを以下において説明する。
【0028】
ステップS00;まず、図4に示すような変換後テーブル50を準備しておく。本発明においては、変換前データ/変換後データの全体を、所定の区間に分割することを前提としている。よって、変換後テーブル50においても同じ(所定の)区間に分割されている。分割の数は、
▲1▼変換後データ/変換後データのビット幅、
▲2▼変換後データの差分値に必要なビット数、
▲3▼各PE3に一時的にロード可能なレジスタのビット幅
で決定される。例えば、▲1▼変換前データと変換後データのビット幅が8ビット、▲2▼差分値が最大2ビット、▲3▼各PE3に一時的にロード可能なビット幅が16ビットの場合は、図4に示すように、区間先頭変換後データに8ビット、それに続く差分値が各2ビットで3つの組み合わせ(4つ目に無効な2ビットのデータが挿入されているが、この2ビットにより8ビットの境界にデータが揃うことになり、テーブルに関する処理が簡単となる。)となり、1つの区間にて4つの変換後データが含まれる。よって、8ビットデータのテーブル変換であるので256のテーブルを分割することとなるが、256に対し4つずつのデータを1区間とするため全部で64区間となる。
【0029】
ステップS02;上記の変換後テーブル50が準備されているという条件の下で、図3のフローチャートの処理が実際に開始される。まず、区間指定数を、“0”に設定する。
【0030】
ステップS04;区間0の先頭における変換前(に相当する)データ(0)と、各PE3に保持されている変換対象データとの比較を行なう(ステップS06)。
【0031】
ステップS08;PE3に保持されている変換対象データの方が大きいPE3においては、区間0の先頭における変換後データの8ビットと3つの2ビット差分値(1つの2ビット無効データを含む)を変換後テーブル50から読み出し、一時的なレジスタにロードする。
【0032】
ステップS10、S12及びS04;次に、区間を“1”だけカウントアップする。区間1の先頭における変換前相当データ(4)と、各PE3に保持されている変換対象データとの比較をおこなう(ステップS06)。
【0033】
ステップS08;PE3に保持されている変換対象データの方が大きいPE3においては、区間1の先頭における変換後データの8ビットと3つの2ビット差分値(1つの2ビット無効データを含む)を変換後テーブル50から読み出し、一時的なレジスタにロードする。
【0034】
ステップS12;区間のカウントアップを、区間63まで繰り返し、区間指定値nが64となると、次の処理へ移行する。
【0035】
なお、区間先頭データは、4つのデータの組が1つの区間であるため、0、4、8、12、16、20と4の倍数となる。
【0036】
ステップS14;図3のフローチャートの後半の処理では、変換対象データが(変換前の)区間内のどの位置に相当するのかを求める。本実施の形態では、1区間には4つのデータが含まれるため、変換対象データの下位2ビットが区間内での位置(m)を示している。
【0037】
ステップS16;この位置(m)の値を、0と比較する。0であるならば、「終了」(S22)に進む。
【0038】
ステップS18;ステップS16の比較において、“mが0ではない”PE3では、区間での先頭の変換後データと1つ次の変換後データの差分値を、先頭変換後データに加算し累積値とする。ここで加算する差分値はロードされた差分値データの下位2ビットとなる。
【0039】
ステップS20;その後にmから1を減算し、ステップS16に戻る。
【0040】
ステップS16;次にこの位置(m)の値を0と比較する。0であるならば、「終了」(S22)に進む。
【0041】
ステップS18;上記ステップS16にて、“mが0ではない”PE3では、区間での先頭の1つ次の変換後データと2つ次の変換後データの差分値を、累積値に加算する。ここで加算する差分値はロードされた差分値データのビット2〜3であるため、加算前に差分値データを2ビット右シフトすることにより下位2ビットとなる。
【0042】
ステップS20;その後にmから1を減算し、ステップS16に戻る。
【0043】
ステップS16;次にこの位置(m)の値を0と比較する。0であるならば、「終了」(S22)に進む。
【0044】
ステップS18;上記ステップS16にて、“mが0ではない”PE3では、区間での先頭の2つ次の変換後データと3つ次の変換後データの差分値を、累積値に加算する。ここで加算する差分値はロードされた差分値データのビット4〜5であるため、加算前に差分値データを2ビット右シフト(4ビットのシフトが必要であるが、2ビットは前の処理でシフト済み)することにより下位2ビットとなる。
【0045】
ステップS20;その後にmから1を減算し、ステップS16に戻る。
【0046】
ステップS16;次にこの位置(m)の値を0と比較する。本実施の形態では、mは最大3であるためここまでの繰り返しで必ず終了する。この処理により得られた累積値が変換後データとなる。
【0047】
以上で、図3のフローチャートの説明を終了する。
【0048】
本発明は、上記の形態に勿論限定されるものではない。即ち、区間の分割数、差分値は、他の所定の値での実現も考えられる。
【0049】
また、図3のフローチャートの処理の前半における、区間を確定する方法としては、区間の先頭における変換前相当データと各PEに保持されている変換前データとの大小比較以外にも数多く存在する。例えば、
・変換前データの区間内の位置を示している下位のビット(例では2ビット)をマスクして、区間の先頭の変換前相当データと一致比較させる方法、
・変換前データを区間内の位置を示している下位のビット(例では2ビット)だけ右シフトして、0から区間数までの整数と一致比較させる方法、
・最大区間から区間0へ小さい方へ順次比較する方法
などでも実現できる。また、ループによる繰り返し処理を行なう場合は、繰り返しの終了条件を検出する時間が必要となるため、ループによる繰り返し処理を行なわないで各区間検出処理を直列に並べて処理を行なう方が、高速化に適う。
【0050】
図3のフローチャートの処理の後半における、差分値の加算では、変換前データの区間内位置を下位の2ビットから得ているが、他の方法も可能である。例えば、
・変換前データから、区間の先頭における変換前相当データを減算する方法、
・その減算を、(前半の)区間確定処理にて行なう方法
等で実現できる。また、差分値を右ビットシフトにより得ているが、
・差分値のパックされたデータから直接有効ビットを切り出す方法、
・位置を示す値を差分値が格納されているレジスタのポインタとして差分値を指定する方法
等でも実現可能である。ループによる繰り返し処理を行なう場合は、繰り返しの終了条件を検出する時間が必要となるため、ループによる繰り返し処理を行なわないで区間内位置による差分値の加算を直列に並べて処理を行なう方が、高速化に適う。
【0051】
以上、第1の実施の形態での処理を、簡単に記述すると、
▲1▼変換対象データと、各区間の先頭における変換前に相当するデータを比較し、変換対象データが含まれる区間の先頭変換後データとその区間内の各データの差分値を、ロードする、
▲2▼変換対象データの(変換前の)区間内の位置に応じて、差分値を、変換対象データが含まれる区間の先頭変換後データに加算する、
となる。第1の実施の形態における変換後データを決定する際の考え方は、図9のグラフにて模式的に示されている。
【0052】
第1の実施の形態である図3のフローチャートにおける処理ステップ数は、
▲1▼区間の比較が64ステップ、データのロードが64ステップ
▲2▼差分値の加算要/非検出が3ステップ、差分加算が6ステップ
となり、結局、137ステップに若干のその他のステップが加算されることになる。
【0053】
これに対して、従来の公知例では、図5のようなフローチャートとなる。変換前データと変換後データのビット幅が8ビットの場合は、256のテーブルとなるため、ステップ数は、
▲1▼テーブルの比較が256ステップ、データのロードが256ステップ
となり、512ステップが必要となる。
【0054】
図6において、第1の実施の形態を実現しうる、SIMD型マイクロプロセッサ2の構成のブロック図を示す。図2のSIMD型マイクロプロセッサ2に対し、第1の実施の形態を実現するために必要な構成要素を、加えたものである。
【0055】
各PEのレジスタに格納された8ビットデータが、変換前データである。このデータと、グローバルプロセッサ(GP)4から即値データバス52を介して転送される区間先頭変換前データとの大小比較を、ALU36にて行なう。比較の結果は、条件レジスタ54に格納され、変換前データの方が大きいPE3では条件成立となり、後に続くデータロードが実行される。データロードでは、グローバルプロセッサ(GP)4から即値データバス52を介して、Fレジスタ40下位8ビットに区間先頭変換後データと上位8ビットに差分データが格納される。
【0056】
各区間での上記の比較・ロードが終了すると、Fレジスタ40上位に格納された差分データは、各PE3に含まれるレジスタ34に格納されるが、その格納の際にシフタ44により、右にシフトされる。
・区間内1(区間nのデータ0とデータ1の間)の差分データはシフト無しで、例えばレジスタ(R0)へ、
・区間内2(区間nのデータ1とデータ2の間)の差分データは右2ビットシフトされて、例えばレジスタ(R1)へ、
・区間内3(区間nのデータ2とデータ3の間)の差分データは右4ビットシフトされて、例えばレジスタ(R2)へ
格納される。レジスタR0〜R2に格納されたデータは、ALU36により下位2ビットだけマスク処理(即ち、3とのAND処理)が行われ、再びそれぞれのレジスタR0〜R2へ戻される。
【0057】
区間内の位置を検出するため、最初に各PE3のレジスタ34に格納された変換前データの下位2ビットにおいて、ALU36により比較を行なう。ここで、1以上ならば、条件レジスタ54の所定のビット、例えばT1に対し、T1=1となるように設定する。同様に、2以上ならば、条件レジスタ54のT2=1に、3以上ならば、条件レジスタ54のT3=1に、設定を行なう。Fレジスタ40下位に格納された区間先頭変換後データは、Aレジスタ38にロードされ、その区間先頭変換後データに対し、(条件レジスタ54において)「T1=1」であるPE3ではレジスタ(R0)に格納された差分値をALU36で加算、さらにT2=1のPE3ではレジスタ(R1)に格納された差分値をALU36で加算、さらにT3=1のPE3ではレジスタ(R2)に格納された差分値をALU36で加算する。こうして加算結果としてAレジスタに残った値が、変換後の値となる。
【0058】
≪第2の実施の形態≫
図7は、本発明に係る第2の実施の形態である、SIMD型マイクロプロセッサにおける差分データ利用テーブル変換の手順のフローチャートである。図7の手順は、図2のSIMD型マイクロプロセッサ2を稼動するプログラムコードにより、実現されるものである。上記フローチャートを以下において説明する。
【0059】
ステップS100;まず、図8に示すような変換後テーブル60を準備しておく。変換前データ/変換後データの全体を、所定の区間に分割することを前提としている。よって、変換後テーブル60においても同じ(所定の)区間に分割されている。分割の数は、
▲1▼変換後データ/変換後データのビット幅、
▲2▼変換後データの差分値に必要なビット数、
▲3▼各PE3に一時的にロード可能なレジスタのビット幅
で決定される。例えば、▲1▼変換前データと変換後データのビット幅が8ビット、▲2▼差分値が最大2ビット、▲3▼各PE3に一時的にロード可能なビット幅が16の場合は、図8に示すように、区間先頭変換後差分データに6ビット、それに続く差分値が各2ビットで5つの組み合わせとなり、1つの区間にて6つの変換後データが含まれる。よって、8ビットデータのテーブル変換であるので256のテーブルを分割することとなるが、256に対し6つずつのデータを1区間とするため全部で43区間となる。
【0060】
ここで、上記の区間先頭変換後差分データとは、その区間の先頭変換後データから1つ前の区間の先頭変換後データを減算した値である(図10参照)。
【0061】
ステップS102;上記の変換後テーブル60が準備されているという条件の下で、図7のフローチャートの処理が実際に開始される。まず、区間指定数及び累積変換後データを、“0”に設定する。
【0062】
ステップS104;区間0の先頭における変換前(に相当する)データ(0)と、各PE3に保持されている変換対象(変換前)データとの比較を行なう(ステップS106)。
【0063】
ステップS108;PE3に保持されている変換対象データの方が大きいPE3においては、区間0の先頭における変換後差分データの6ビットを累積変換後データに加算し、5つの2ビット差分値を変換後テーブル60から読み出し一時的なレジスタにロードする。
【0064】
ステップS110、S112及びS104;次に、区間を“1”だけカウントアップする。区間1の先頭における変換前相当データ(4)と、各PE3に保持されている変換対象(変換前)データとの比較をおこなう(ステップS106)。
【0065】
ステップS108;PE3に保持されている変換対象データの方が大きいPE3においては、区間1の先頭における変換後差分データの6ビットを累積変換後データに加算し、5つの2ビット差分値を変換後テーブル60から読み出し一時的なレジスタにロードする。
【0066】
ステップS112;区間のカウントアップを、区間42まで繰り返し、区間指定値nが43となると、次の処理へ移行する。
【0067】
なお、区間先頭データは、6つのデータの組が1つの区間であるため、0、6、12、18、24、30と6の倍数となる。
【0068】
ステップS114;図7のフローチャートの後半の処理では、変換対象データが(変換前の)区間内のどの位置に相当するのかを求める。本実施の形態では、1区間には6つのデータが含まれるため、変換対象データを“6”で割った余りが区間中のでの位置(m)を示している。
【0069】
ステップS116;この位置(m)の値を、0と比較する。0であるならば、「終了」(S122)に進む。
【0070】
ステップS118;ステップS116の比較において、“mが0ではない”PE3では、区間での先頭の変換後データと1つ次の変換後データの差分値を、累積変換後データに加算する。ここで加算する差分値はロードされた差分値データの下位2ビットとなる。
【0071】
ステップS120;その後にmから1を減算し、ステップS116に戻る。
【0072】
ステップS116;次にこの位置(m)の値を0と比較する。0であるならば、「終了」(S122)に進む。
【0073】
ステップS118;上記ステップS116にて、“mが0ではない”PE3では、区間での先頭の1つ次の変換後データと2つ次の変換後データの差分値を、累積変換後データに加算する。ここで加算する差分値はロードされた差分値データのビット2〜3であるため、加算前に差分値データを2ビット右シフトすることにより下位2ビットとなる。
【0074】
ステップS120;その後にmから1を減算し、ステップS116に戻る。
【0075】
ステップS116;次にこの位置(m)の値を0と比較する。0であるならば、「終了」(S122)に進む。
【0076】
ステップS118;上記ステップS116にて、“mが0ではない”PE3では、区間での先頭の2つ次の変換後データと3つ次の変換後データの差分値を、累積変換後データに加算する。ここで加算する差分値はロードされた差分値データのビット4〜5であるため、加算前に差分値データを更に2ビット右シフトすることにより下位2ビットとなる。
【0077】
ステップS120;その後にmから1を減算し、ステップS116に戻る。
【0078】
ステップS116にて、“m=0”が成り立つまで、ステップS116からステップS120までの、ループ処理を継続する。但し、ステップS118にて加算される差分値は、ロードされた差分値データの、より上位の2ビットに移行していく。
【0079】
以上の処理により得られた累積変換前データが、変換後データとなる。以上で、図7のフローチャートの説明を終了する。
【0080】
以上、第2の実施の形態での処理を、簡単に記述すると、
▲1▼変換対象データと、各区間の先頭における変換前に相当するデータを比較し、変換対象データが含まれる区間の先頭変換後差分データを累積値に加算し、その区間内の各データの差分値をロードする、
▲2▼変換対象データの(変換前の)区間内の位置に応じて、差分値を、累積値に加算する、
となる。第2の実施の形態における変換後データを決定する際の考え方は、図10のグラフにて模式的に示されている。
【0081】
第2の実施の形態である図7のフローチャートにおける処理ステップ数は、
▲1▼区間の比較が43ステップ、データのロード及び加算が43ステップ
▲2▼差分値の加算要/非検出が5ステップ、差分加算が10ステップ
となり、結局、101ステップに若干のその他のステップが加算されることになる。なお、上記▲1▼にてロード処理と加算処理とが同時に行なわれない場合は更に43ステップが加算される。
【0082】
≪差分値に抽出について≫
ここまでの実施の形態の説明では、差分値の切り出し方法については特に触れていなかったが、図6のブロック図の説明で示したような通常の処理では、加算対象以外のビットを0とするマスク処理をおこなう。例えば下位2ビットの加算であれば、2ビットの切り出しは、即値データの0x3という値とのAND処理をおこなうことにより可能となる。
【0083】
これに対して、以下のようなマイクロプロセッサ2であれば、図6に係る説明で述べられているように差分データを個々に切り出して別々のレジスタに一時格納する、という処理を略することができる。即ち、ALU36の片側の入力部にはレジスタデータ、即値データが入力されるのであるが、そのとき同時に0のデータを適宜選択して入力することにより、ALU36への上記の入力において任意のビットを0と設定することが可能となる、というようなマイクロプロセッサ2である。図6に示される実施形態では、ALU36の入力の下位2ビットをレジスタに格納されるデータとし、残りのビットを0の入力とすることにより、マスク処理と同時に下位2ビットの加算処理も可能となる。
【0084】
上記では下位2ビットの切り出しについて述べたが、
・ビット2〜ビット3の切り出し、
・ビット4〜ビット5の切り出し、
・ビット6〜ビット7の切り出し
の際には、ALU36の入力の直前に配置されるシフト・拡張器44が適宜利用されて、所定ビットの切り出し及び加算が行なわれる。以上の構成により任意のビットだけを切り出して行なう加算が、より少ないステップ数で実現できるようになる。
【0085】
≪差分データの持ち方について≫
以上の、本発明に係る第1の実施の形態、及び第2の実施の形態は、変換前データがカウントアップするのに応じて、変換後データも、滑らかに且つ単調に増加するような変換処理において、特に有効である。即ち、図9及び図10のグラフに示されるような変換処理である。
【0086】
本発明は、(図9や図10のグラフと異なり)変換後データが減少するような変換処理においても、利用可能である。但しその場合、差分データが増加データであるか減少データであるかを示すビット、即ち符号ビットが、各差分データに対して必要になる。
【0087】
【発明の効果】
これまでの説明から明白なように、本発明を利用することで以下のような効果を得ることができる。
【0088】
本発明に係る請求項1に記載の方法を利用することにより、SIMD型マイクロプロセッサにおいて、一切の近似式を使用することなく、非線型変換を高速に行なうことができる。
【0089】
本発明に係る請求項2に記載の方法を利用することにより、SIMD型マイクロプロセッサにおいて、非線型変換での必要なステップ数が削減され且つ変換後テーブルのサイズを小さくできる。
【0090】
本発明に係る請求項3に記載のSIMD型マイクロプロセッサを利用することにより、入力データの任意のビット位置のデータ切り出しと、そのビットに係る加算処理を、少ないステップ数で実現できる。
【図面の簡単な説明】
【図1】 本発明に係るSIMD型マイクロプロセッサの概略の構成を示すブロック図である。
【図2】 本発明に係るSIMD型マイクロプロセッサの、更に詳細な構成を示すブロック図である。
【図3】 本発明に係る第1の実施の形態である、SIMD型マイクロプロセッサにおける差分データ利用テーブル変換の手順のフローチャートである。
【図4】 変換後テーブルの構成の例(1)である。
【図5】 従来の公知例の、SIMD型マイクロプロセッサにおけるテーブル変換の手順のフローチャートである。
【図6】 第1の実施の形態を実現しうる、SIMD型マイクロプロセッサの構成のブロック図を示す。
【図7】 本発明に係る第2の実施の形態である、SIMD型マイクロプロセッサにおける差分データ利用テーブル変換の手順のフローチャートである。
【図8】 変換後テーブルの構成の例(2)である。
【図9】 第1の実施の形態における変換後データを決定する際の考え方を模式的に示すグラフである。
【図10】 第2の実施の形態における変換後データを決定する際の考え方を模式的に示すグラフである。
【符号の説明】
2・・・SIMD型マイクロプロセッサ、3・・・プロセッサ・エレメント(PE)、4・・・グローバル・プロセッサ(GP)、6・・・レジスタファイル、8・・・演算アレイ、34・・・レジスタ、36・・・ALU、38・・・Aレジスタ、40・・・Fレジスタ、42・・・マルチプレクサ、44・・・シフト・拡張器、50、60・・・変換後データ。
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a microprocessor, and more particularly to a SIMD (Single Instruction-stream Multiple Data-stream) type microprocessor.
[0002]
[Prior art]
In the SIMD type microprocessor, the same arithmetic processing can be executed simultaneously on a plurality of data with one instruction. This structure is frequently used in applications related to processing (for example, image processing) that has the same calculation but a very large amount of data.
[0003]
In normal arithmetic processing in a SIMD type microprocessor, a plurality of arithmetic units (Processor Elements [PE]; processor elements) are arranged and the same arithmetic is simultaneously performed on a plurality of data. However, in “non-linear processing” in which the contents of the arithmetic processing cannot be expressed by a single arithmetic expression, the arithmetic expression is changed according to the data to be calculated, and therefore the same processing cannot be executed simultaneously. In this case, it is necessary to perform sequential processing for each data, and eventually the effect of being SIMD is lost.
[0004]
Even in a normal SISD (Single Instruction-stream Single Data-stream) type processor, in non-linear processing in which an arithmetic expression is changed in accordance with operation target data, a program for performing arithmetic processing is very Can be complicated. In order to prevent this, there is a general method in which all processed data after calculation is preliminarily prepared for pre-calculation data, and these are converted into a table, and table conversion is performed based on the pre-calculation data to obtain post-calculation data. Specifically, the table is stored in a RAM (Random Access Memory), and data obtained from the RAM is obtained by using the value obtained by adding the head address of the table to the pre-computation data as post-computation data. For example, when the operation data (pre-operation data / post-operation data) is 8 bits, a conversion table having a size of 256 bytes is required.
[0005]
Since the size of this conversion table increases by a power of 2 (unit) as the bit width of the operation data increases, if the bit width of the operation data is considerably large, the operation data is divided into arbitrary sections, There is also disclosed a method having an approximate expression in a section as a table.
[0006]
When this table conversion is adopted in a SIMD type microprocessor, it has been considered that a table is required for each operation unit. For example, in a processor of 256 SIMD (that is, SIMD having 256 arithmetic units [arithmetic unit, PE]), when converting table of 8-bit arithmetic data (pre-operation data / post-operation data), 256 bytes ( The table (on the RAM) is required for the operation unit, that is, 256 pieces. Therefore, there was a big problem in cost. Therefore, various inventions have been devised and disclosed for non-linear operation table conversion of SIMD type microprocessors.
[0007]
In Japanese Patent Laid-Open No. 5-67203, data before calculation is sequentially output to the outside from an output register built in PE (Processor Element) in each SIMD unit, and the table conversion is sequentially performed outside, and the converted data is converted into the converted data. There has been proposed a method of sequentially inputting to an input register built in PE. In this method, since the number of conversion tables is one, an increase in cost can be suppressed. However, since it is a sequential process in the end, the calculation processing time is at least appropriate for the number of PEs, which is disadvantageous in terms of calculation speed. Also, if this conversion process is executed in parallel with the normal process in PE, the processing time can be reduced as a whole, but the input / output registers are dedicated to this conversion work and cannot be used for other purposes. However, there is still a problem that parallel processing is impossible because it is necessary to wait for the calculation processing time.
[0008]
Further, in Japanese Patent Laid-Open No. 9-305550, data before conversion and data after conversion are sequentially input from the outside, the data before conversion input at each PE is compared with the data before calculation, and the matched PE is converted into the data after conversion. A method for storing data and using this value as post-computation data has been proposed. In this case, since the computation processing time depends on the number of combinations of values that can be taken by the pre-computation data (that is, the number of words in the conversion table), if this number of words is less than the number of PEs, speeding up is realized. The However, when the pre-computation data is 8-bit data, the number of cycles is about 256 times regardless of the number of PEs. Even in this case, there is a problem that the computation processing time becomes long. A method of performing this conversion processing in parallel with other normal processing can also be assumed, but in this case, the same problem as in the above-mentioned Japanese Patent Laid-Open No. 5-67203 arises. A method of loading the coefficients of the approximate expression by using an expression that approximates the transformation in each section divided into a plurality of sections has also been proposed, but in this case, it is expressed by a common expression that is different only by the coefficient for each section. There is a problem that it can only deal with non-linear conversion that can be done.
[0009]
Furthermore, Japanese Patent No. 2812292 proposes a method for obtaining post-computation data by giving pre-computation data from each PE as an address pointer to a conversion table RAM having the same number of output ports as the number of PEs. Has been. In this method, the conversion speed is completed in about one cycle, but an increase in output ports increases the cost of the RAM, and in particular, it is impossible to have more than several tens of ports. Therefore, there is a problem that it cannot cope with a SIMD type microprocessor having a large number of PEs.
[0010]
[Problems to be solved by the invention]
An object of the present invention is to perform non-linear processing in a SIMD type microprocessor at higher speed using an inexpensive apparatus.
[0011]
[Means for Solving the Problems]
The present invention has been made to achieve the above object. The processing method of the SIMD type microprocessor according to claim 1 according to the present invention is as follows:
Has multiple arithmetic units In SIMD type microprocessor,
input Calculation Data before conversion and output Calculation One or more conversion tables for associating post-conversion data, which is data, are set, and each association defines a conversion process,
In the individual conversion table, it is assumed that the plurality of pre-conversion data is arranged in ascending order or descending order, and the plurality of pre-conversion data and the plurality of post-conversion data are divided into predetermined sections,
In the converted data of the above conversion table,
The actual value is stored in the converted data at the beginning of each section, and the difference data from the previous converted data is stored for the converted data other than the section head,
Conversion target Calculation When obtaining post-conversion data for data,
For the above multiple arithmetic units , The above conversion target data is stored,
By associating the pre-conversion data and post-conversion data in the conversion table, the post-conversion data section to which the post-conversion data of the conversion target data should belong is determined,
Furthermore, the necessary difference data is added to the converted data at the beginning of the section to which the converted data belongs,
Obtaining converted data for the conversion target data,
This is a processing method of a SIMD type microprocessor.
[0012]
The processing method of the SIMD type microprocessor according to claim 2 according to the present invention is as follows:
Has multiple arithmetic units In SIMD type microprocessor,
input Calculation Data before conversion and output Calculation One or more conversion tables for associating post-conversion data, which is data, are set, and each association defines a conversion process,
In each of the above conversion tables, it is assumed that a plurality of pre-conversion data is arranged in ascending or descending order, and the plurality of pre-conversion data and the plurality of post-conversion data are similarly divided into predetermined sections. And
In the converted data of the above conversion table,
For the converted data at the head of each section, the first difference value from the section head data of the previous section is stored, and for the converted data other than the head of the section, second difference data from the previous converted data is stored. Is stored,
Conversion target Calculation When obtaining post-conversion data for data,
For the above multiple arithmetic units , The above conversion target data is stored,
By associating the pre-conversion data and post-conversion data in the conversion table, the post-conversion data section to which the post-conversion data of the conversion target data should belong is determined,
First, the section head data of the section to which the converted data belongs is obtained by cumulative addition of the first difference values,
Furthermore, the second difference data is added as much as necessary to the section head data of the section to which the converted data belongs,
Obtaining converted data for the conversion target data,
This is a processing method of a SIMD type microprocessor.
[0014]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, preferred embodiments of the present invention will be described with reference to the drawings.
[0015]
FIG. 1 is a block diagram showing a schematic configuration of a SIMD type microprocessor 2 according to the present invention. The SIMD type microprocessor 2 generally includes a global processor 4, a register file 6, and an arithmetic array 8.
[0016]
(1) Global processor 4
The global processor 4 itself is a so-called SISD type processor, which includes a program RAM 10 and a data RAM 12 (see FIG. 2), decodes the program, and generates various control signals. This control signal is supplied to the register file 6 and the arithmetic array 8 in addition to the various built-in blocks. When a GP (global processor) instruction is executed, various arithmetic processes and program control processes are performed using a built-in general-purpose register, an ALU (arithmetic logic unit), and the like.
[0017]
(2) Register file 6
It holds data processed by PE (processor element) instructions. As is well known, the PE (processor element) 3 is a structural unit that executes individual operations in a single instruction-stream (SIMD) type processor. As shown in the register file 6 and the operation array 8 in FIG. 2, the SIMD type microprocessor 2 in FIG. 2 includes 256 PE3. The PE instruction is a SIMD type instruction, and simultaneously performs the same processing on a plurality of data held in the register file 6. Control of reading / writing of data from the register file 6 is performed by control from the global processor 4. The read data is sent to the arithmetic array 8 and written into the register file 6 after arithmetic processing in the arithmetic array 8.
[0018]
Further, the register file 6 can be accessed from the outside of the processor 2, and reading / writing to a specific register is performed from the outside separately from the control of the global processor 4.
[0019]
(3) Arithmetic array
Processing of PE instruction is performed. All processes are controlled from the global processor 4.
[0020]
FIG. 2 is a block diagram showing a more detailed configuration of the SIMD type microprocessor 2 according to the present invention.
[0021]
The global processor 4 includes a program RAM 10 for storing the program of the processor 2 and a data RAM 12 for storing operation data. Furthermore, a program counter (PC) 14 that holds a program address, G0, G1, G2, and G3 registers (16, 18, 20, and 22), which are general-purpose registers for storing data for arithmetic processing, A stack pointer (SP) 24 that holds the address of the save destination data RAM, a link register (LS) 26 that holds the address of the call source at the time of a subroutine call, and an NMI (Non-Non−) when IRQ (Interrupt Request) A LI register 28 and an LN register 30 that hold a branch source address at the time of Maskable Interrupt ReQuest (prohibited interrupt request), and a processor status register (P) 32 that holds the state of the processor are incorporated.
[0022]
A GP instruction is executed using these registers, an instruction decoder (not shown), an ALU, a memory control circuit, an interrupt control circuit, an external I / O control circuit, and a GP operation control circuit.
[0023]
When executing the PE instruction, the instruction decoder, the register file control circuit 56 (shown in FIG. 6), and the PE operation control circuit 58 are used to control the register file 6 and the operation array 8. Furthermore, it is set so that data can be transferred from the data RAM 12 to a plurality of PE register files 6.
[0024]
In the register file 6, 32 8-bit registers 34 are built in one PE unit, and a set of 256 PEs (32) has an array configuration. Register 34 is R0, R1, R2,. . . It is called R31. Each register 34 has one read port and one write port for the arithmetic array 8 and is accessed from the arithmetic array 8 by an 8-bit read / write bus. Of the 32 registers, 24 (R0 to R23) can be accessed from the outside of the processor, and the clock (CLK), address (Address), and read / write control (RWB) can be input from the outside. Can be read from and written to the register 34. The remaining eight (R24 to R31) registers 34 are used for temporarily storing PE operation data.
[0025]
The arithmetic array 8 includes a 16-bit ALU 36, a 16-bit A register 38, and an F register 40. The operation by the PE instruction is performed by using the data read from the register file 6 or the data supplied from the global processor 4 as an input on one side of the ALU 36 and the content of the A register 38 as an input on the other side. The calculation result is stored in the A register 38. Therefore, an operation is performed on the data supplied from the R0 to R31 register 34 or the global processor 4 and the data stored in the A register 38.
[0026]
A 7 to 1 (7 to 1) multiplexer 42 is placed between the register file 6 and the operation array 8. As shown in FIG. 2, when viewed from a certain multiplexer 42, the data in the R0 to R31 register 34 included in the three PE3 in the left direction, the data in the R0 to R31 register 34 included in the three PE3 in the right direction, It is set so that the data in the R0 to R31 register 34 included in the PE 3 to which it belongs can be selected as an operation target. The 8-bit data of the register file 6 is shifted to the left by an arbitrary bit by the shift / extension circuit 44 and input to the ALU 36. Further, the execution / invalidation control of each PE 3 is controlled by the 8-bit condition register 54 (shown in FIG. 6), and only a specific PE 3 can be selected as an operation target.
[0027]
<< First Embodiment >>
FIG. 3 is a flowchart of the difference data utilization table conversion procedure in the SIMD type microprocessor according to the first embodiment of the present invention. The procedure in FIG. 3 is realized by program code that operates the SIMD type microprocessor 2 in FIGS. 2 and 6. The flowchart will be described below.
[0028]
Step S00: First, a post-conversion table 50 as shown in FIG. 4 is prepared. In the present invention, it is assumed that the entire pre-conversion data / post-conversion data is divided into predetermined sections. Therefore, the post-conversion table 50 is also divided into the same (predetermined) sections. The number of divisions is
(1) Converted data / converted data bit width,
(2) Number of bits required for the difference value of the converted data,
(3) Register bit width that can be temporarily loaded into each PE3
Determined by For example, (1) the bit width of the pre-conversion data and the post-conversion data is 8 bits, (2) the difference value is 2 bits at the maximum, and (3) the bit width that can be temporarily loaded into each PE 3 is 16 bits. As shown in FIG. 4, the data after the section head conversion is 8 bits, and the subsequent difference value is 2 bits each and 3 combinations (the 4th invalid 2-bit data is inserted. As a result, data is aligned on an 8-bit boundary, and processing relating to the table is simplified.) Four converted data are included in one section. Therefore, since the table conversion of 8-bit data is performed, 256 tables are divided. However, since four pieces of data for 256 are set as one section, there are 64 sections in total.
[0029]
Step S02: Under the condition that the post-conversion table 50 is prepared, the processing of the flowchart of FIG. 3 is actually started. First, the number of designated sections is set to “0”.
[0030]
Step S04: The data (0) before conversion (corresponding to) at the head of the section 0 is compared with the conversion target data held in each PE 3 (step S06).
[0031]
Step S08: In PE3 where the conversion target data held in PE3 is larger, convert 8 bits of converted data at the head of section 0 and three 2-bit difference values (including one 2-bit invalid data). After reading from the table 50, it is loaded into a temporary register.
[0032]
Steps S10, S12 and S04; Next, the section is counted up by “1”. The equivalent data before conversion (4) at the head of section 1 is compared with the conversion target data held in each PE 3 (step S06).
[0033]
Step S08: In PE3 where the conversion target data held in PE3 is larger, the 8-bit converted data at the head of section 1 and three 2-bit difference values (including one 2-bit invalid data) are converted. After reading from the table 50, it is loaded into a temporary register.
[0034]
Step S12: Counting up the section is repeated up to the section 63, and when the section specified value n reaches 64, the process proceeds to the next process.
[0035]
The section head data is a multiple of 0, 4, 8, 12, 16, 20, and 4 because a set of four data is one section.
[0036]
Step S14: In the latter half of the flowchart of FIG. 3, it is determined which position in the section (before conversion) the conversion target data corresponds to. In this embodiment, since one section includes four data, the lower 2 bits of the conversion target data indicate the position (m) in the section.
[0037]
Step S16: The value of this position (m) is compared with 0. If it is 0, the process proceeds to “END” (S22).
[0038]
Step S18: In the comparison of Step S16, in “m is not 0” PE3, the difference value between the first converted data and the next converted data in the section is added to the first converted data, and the accumulated value is obtained. To do. The difference value to be added here is the lower 2 bits of the loaded difference value data.
[0039]
Step S20: Thereafter, 1 is subtracted from m, and the process returns to Step S16.
[0040]
Step S16: Next, the value of the position (m) is compared with 0. If it is 0, the process proceeds to “END” (S22).
[0041]
Step S18: In step S16, in “m is not 0” PE3, the difference value between the first converted data at the head and the second converted data in the section is added to the accumulated value. Since the difference value to be added here is bits 2 to 3 of the loaded difference value data, the difference value data is shifted to the right by 2 bits before the addition to become the lower 2 bits.
[0042]
Step S20: Thereafter, 1 is subtracted from m, and the process returns to Step S16.
[0043]
Step S16: Next, the value of the position (m) is compared with 0. If it is 0, the process proceeds to “END” (S22).
[0044]
Step S18; In step S16, in “PE is not m” PE3, the difference value between the first second-order converted data and the third-order converted data in the section is added to the accumulated value. Since the difference value to be added here is bits 4 to 5 of the loaded difference value data, the difference value data is shifted to the right by 2 bits before addition (a 4-bit shift is necessary, but 2 bits are the previous processing) To the lower 2 bits.
[0045]
Step S20: Thereafter, 1 is subtracted from m, and the process returns to Step S16.
[0046]
Step S16: Next, the value of the position (m) is compared with 0. In the present embodiment, m is 3 at the maximum, so the process is always terminated by the repetition up to this point. The accumulated value obtained by this process becomes the converted data.
[0047]
Above, description of the flowchart of FIG. 3 is complete | finished.
[0048]
Of course, the present invention is not limited to the above-described embodiment. That is, the number of divisions and the difference value may be realized with other predetermined values.
[0049]
In addition, there are many methods for determining a section in the first half of the processing of the flowchart of FIG. 3 other than the size comparison between the pre-conversion equivalent data at the head of the section and the pre-conversion data held in each PE. For example,
A method in which the lower bits (2 bits in the example) indicating the position in the section of the pre-conversion data are masked and compared with the pre-conversion equivalent data at the beginning of the section;
A method in which the pre-conversion data is right-shifted by the lower bits (2 bits in the example) indicating the position in the section and is compared with an integer from 0 to the number of sections;
・ Sequential comparison from the largest section to section 0 in smaller order
It can also be realized. In addition, when iterative processing by a loop is performed, it takes time to detect the end condition of the iteration. Therefore, it is faster to perform processing by arranging each section detection process in series without performing the iterative processing by a loop. come true.
[0050]
In the second half of the processing of the flowchart of FIG. 3, in the difference value addition, the intra-section position of the pre-conversion data is obtained from the lower two bits, but other methods are also possible. For example,
A method of subtracting the pre-conversion equivalent data at the beginning of the section from the pre-conversion data,
-Method of performing the subtraction in the (first half) section determination process
Etc. Also, the difference value is obtained by right bit shift,
A method of cutting out valid bits directly from the packed data of difference values,
-Specifying the difference value using the position value as a pointer to the register that stores the difference value
Etc. are also feasible. When iterative processing is performed by a loop, it takes time to detect the end condition of the iteration. Therefore, it is faster to perform the processing by arranging the difference values in the intervals in series without performing the iterative processing by the loop. Suitable for conversion.
[0051]
The process in the first embodiment is briefly described above.
(1) Compare the conversion target data with the data corresponding to the data before conversion at the head of each section, and load the difference value between the head converted data of the section including the conversion target data and each data in the section.
(2) The difference value is added to the first converted data of the section including the conversion target data according to the position in the section (before conversion) of the conversion target data.
It becomes. The concept for determining the post-conversion data in the first embodiment is schematically shown in the graph of FIG.
[0052]
The number of processing steps in the flowchart of FIG. 3 which is the first embodiment is as follows.
(1) Comparison of sections is 64 steps, data loading is 64 steps
(2) Difference value addition required / non-detection is 3 steps, difference addition is 6 steps
As a result, some other steps are added to the 137 steps.
[0053]
On the other hand, in the conventional well-known example, it becomes a flowchart as shown in FIG. If the bit width of the pre-conversion data and the post-conversion data is 8 bits, there are 256 tables, so the number of steps is
(1) Table comparison is 256 steps, data loading is 256 steps
Thus, 512 steps are required.
[0054]
FIG. 6 shows a block diagram of the configuration of the SIMD type microprocessor 2 that can realize the first embodiment. Components necessary for realizing the first embodiment are added to the SIMD type microprocessor 2 of FIG.
[0055]
The 8-bit data stored in the register of each PE is the pre-conversion data. The ALU 36 performs a size comparison between this data and the pre-section conversion data transferred from the global processor (GP) 4 via the immediate data bus 52. The result of the comparison is stored in the condition register 54, and the condition is satisfied in PE3 where the pre-conversion data is larger, and the subsequent data load is executed. In the data load, the global processor (GP) 4 stores the section head converted data in the lower 8 bits of the F register 40 and the difference data in the upper 8 bits via the immediate data bus 52.
[0056]
When the above comparison / loading in each section is completed, the difference data stored in the upper part of the F register 40 is stored in the register 34 included in each PE 3, but is shifted to the right by the shifter 44 at the time of the storage. Is done.
-The difference data in section 1 (between data 0 and data 1 in section n) is not shifted, for example, to register (R0)
The difference data in section 2 (between data 1 and data 2 in section n) is shifted by 2 bits to the right, for example to register (R1)
The difference data in section 3 (between data 2 and data 3 in section n) is shifted 4 bits to the right, for example, to register (R2)
Stored. The data stored in the registers R0 to R2 is masked (ie, ANDed with 3) by the ALU 36 for only the lower 2 bits, and returned to the respective registers R0 to R2.
[0057]
In order to detect the position in the section, the ALU 36 compares the lower 2 bits of the pre-conversion data stored in the register 34 of each PE 3 first. Here, if it is 1 or more, it is set so that T1 = 1 with respect to a predetermined bit of the condition register 54, for example, T1. Similarly, if 2 or more, the setting is made to T2 = 1 in the condition register 54, and if 3 or more, the setting is made to T3 = 1 in the condition register 54. The section head converted data stored in the lower part of the F register 40 is loaded into the A register 38, and with respect to the section head converted data (in the condition register 54), the register (R0) in PE3 where “T1 = 1” is satisfied. The difference value stored in the ALU 36 is added by the ALU 36, the difference value stored in the register (R1) is added by the ALU 36 in the PE3 of T2 = 1, and the difference value stored in the register (R2) in the PE3 of the T3 = 1. Are added by ALU36. Thus, the value remaining in the A register as the addition result becomes the converted value.
[0058]
<< Second Embodiment >>
FIG. 7 is a flowchart of the difference data use table conversion procedure in the SIMD type microprocessor according to the second embodiment of the present invention. The procedure of FIG. 7 is implemented by program code that operates the SIMD type microprocessor 2 of FIG. The flowchart will be described below.
[0059]
Step S100: First, a post-conversion table 60 as shown in FIG. 8 is prepared. It is assumed that the entire pre-conversion data / post-conversion data is divided into predetermined sections. Therefore, the post-conversion table 60 is also divided into the same (predetermined) sections. The number of divisions is
(1) Converted data / converted data bit width,
(2) Number of bits required for the difference value of the converted data,
(3) Register bit width that can be temporarily loaded into each PE3
Determined by For example, (1) the bit width of the pre-conversion data and the post-conversion data is 8 bits, (2) the difference value is 2 bits at the maximum, and (3) the bit width that can be temporarily loaded into each PE 3 is 16. As shown in FIG. 8, the difference data after the section head conversion is 6 bits, and the subsequent difference values are 5 bits each in 2 bits, and 6 sections of converted data are included in one section. Therefore, since the table conversion of 8-bit data is performed, 256 tables are divided. However, since six pieces of data for 256 are set as one section, there are 43 sections in total.
[0060]
Here, the difference data after the section head conversion is a value obtained by subtracting the head converted data of the previous section from the head converted data of the section (see FIG. 10).
[0061]
Step S102: Under the condition that the post-conversion table 60 is prepared, the processing of the flowchart of FIG. 7 is actually started. First, the number of designated sections and the data after cumulative conversion are set to “0”.
[0062]
Step S104: The pre-conversion data (0) at the beginning of the section 0 is compared with the conversion target (pre-conversion) data held in each PE 3 (step S106).
[0063]
Step S108; In PE3 where the conversion target data held in PE3 is larger, 6 bits of the converted differential data at the head of section 0 are added to the cumulative converted data, and five 2-bit differential values are converted. Read from table 60 and load into temporary register.
[0064]
Steps S110, S112 and S104; Next, the section is counted up by “1”. The pre-conversion equivalent data (4) at the beginning of the section 1 is compared with the conversion target (pre-conversion) data held in each PE 3 (step S106).
[0065]
Step S108: In PE3 where the conversion target data held in PE3 is larger, 6 bits of the converted differential data at the head of section 1 are added to the cumulative converted data, and five 2-bit differential values are converted. Read from table 60 and load into temporary register.
[0066]
Step S112: Counting up the section is repeated up to the section 42, and when the section specified value n becomes 43, the process proceeds to the next process.
[0067]
The section head data is a multiple of 0, 6, 12, 18, 24, 30 and 6 because a set of 6 data is one section.
[0068]
Step S114: In the latter half of the flowchart of FIG. 7, it is determined which position in the section (before conversion) the conversion target data corresponds to. In this embodiment, since one section includes six data, the remainder obtained by dividing the conversion target data by “6” indicates the position (m) in the section.
[0069]
Step S116: The value of this position (m) is compared with 0. If it is 0, the process proceeds to “END” (S122).
[0070]
Step S118: In the comparison of step S116, in “PE is not m” PE3, the difference value between the first converted data and the first converted data in the section is added to the cumulative converted data. The difference value to be added here is the lower 2 bits of the loaded difference value data.
[0071]
Step S120: Thereafter, 1 is subtracted from m, and the process returns to Step S116.
[0072]
Step S116: Next, the value of the position (m) is compared with 0. If it is 0, the process proceeds to “END” (S122).
[0073]
Step S118; In step S116, in “PE is not m” PE3, the difference value between the first converted data at the head and the second converted data in the section is added to the cumulative converted data. To do. Since the difference value to be added here is bits 2 to 3 of the loaded difference value data, the difference value data is shifted to the right by 2 bits before the addition to become the lower 2 bits.
[0074]
Step S120: Thereafter, 1 is subtracted from m, and the process returns to Step S116.
[0075]
Step S116: Next, the value of the position (m) is compared with 0. If it is 0, the process proceeds to “END” (S122).
[0076]
Step S118; In step S116, "m is not 0" PE3, the difference value between the first second-order converted data and the third-order converted data in the section is added to the cumulative converted data. To do. Since the difference value to be added here is bits 4 to 5 of the loaded difference value data, the difference value data is shifted to the lower 2 bits by further shifting to the right by 2 bits before addition.
[0077]
Step S120: Thereafter, 1 is subtracted from m, and the process returns to Step S116.
[0078]
In step S116, the loop processing from step S116 to step S120 is continued until “m = 0” is satisfied. However, the difference value added in step S118 shifts to the higher 2 bits of the loaded difference value data.
[0079]
The cumulative pre-conversion data obtained by the above processing becomes post-conversion data. Above, description of the flowchart of FIG. 7 is complete | finished.
[0080]
The processing in the second embodiment is briefly described above.
(1) Compare the conversion target data with the data before conversion at the head of each section, add the difference data after the head conversion of the section including the conversion target data to the accumulated value, Load the difference value,
(2) The difference value is added to the accumulated value according to the position in the section (before conversion) of the conversion target data.
It becomes. The concept for determining the post-conversion data in the second embodiment is schematically shown in the graph of FIG.
[0081]
The number of processing steps in the flowchart of FIG. 7 that is the second embodiment is as follows.
(1) Section comparison is 43 steps, data loading and addition is 43 steps
(2) Difference value addition required / non-detection is 5 steps, difference addition is 10 steps
Eventually, some other steps are added to the 101 steps. If the load process and the addition process are not performed simultaneously in (1) above, 43 steps are added.
[0082]
≪About extraction to difference value≫
In the description of the embodiment so far, the method of extracting the difference value has not been particularly mentioned, but in the normal processing as shown in the description of the block diagram of FIG. 6, bits other than the addition target are set to 0. Perform mask processing. For example, in the case of addition of lower 2 bits, 2-bit clipping can be performed by performing AND processing with the value 0x3 of the immediate data.
[0083]
On the other hand, in the case of the microprocessor 2 as described below, as described in the description related to FIG. 6, the process of cutting out the differential data individually and temporarily storing them in separate registers may be omitted. it can. That is, register data and immediate data are input to the input unit on one side of the ALU 36. At that time, by appropriately selecting and inputting 0 data at the same time, an arbitrary bit can be set in the above input to the ALU 36. The microprocessor 2 can be set to 0. In the embodiment shown in FIG. 6, the lower 2 bits of the input of the ALU 36 are data stored in the register, and the remaining bits are input of 0, so that the lower 2 bits can be added simultaneously with the mask process. Become.
[0084]
In the above description, the lower 2 bits were cut out.
・ Cut out bits 2 to 3
-Extraction of bit 4 to bit 5,
・ Cut out bits 6 to 7
In this case, a shift / extension unit 44 disposed immediately before the input of the ALU 36 is appropriately used to cut out and add predetermined bits. With the above configuration, addition performed by cutting out only arbitrary bits can be realized with a smaller number of steps.
[0085]
≪How to have difference data≫
In the first embodiment and the second embodiment according to the present invention described above, the conversion is such that the post-conversion data increases smoothly and monotonously as the pre-conversion data counts up. It is particularly effective in processing. That is, the conversion process as shown in the graphs of FIGS.
[0086]
The present invention can also be used in a conversion process in which post-conversion data is reduced (unlike the graphs of FIGS. 9 and 10). In this case, however, a bit indicating whether the difference data is increase data or decrease data, that is, a sign bit is required for each difference data.
[0087]
【The invention's effect】
As is apparent from the above description, the following effects can be obtained by using the present invention.
[0088]
By using the method according to the first aspect of the present invention, nonlinear conversion can be performed at high speed without using any approximate expression in the SIMD type microprocessor.
[0089]
By using the method according to the second aspect of the present invention, the number of steps required for nonlinear conversion can be reduced and the size of the post-conversion table can be reduced in the SIMD type microprocessor.
[0090]
By using the SIMD type microprocessor according to the third aspect of the present invention, it is possible to realize data extraction at an arbitrary bit position of input data and addition processing related to the bit with a small number of steps.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a schematic configuration of a SIMD type microprocessor according to the present invention.
FIG. 2 is a block diagram showing a more detailed configuration of a SIMD type microprocessor according to the present invention.
FIG. 3 is a flowchart of a difference data utilization table conversion procedure in the SIMD type microprocessor according to the first embodiment of the present invention;
FIG. 4 is an example (1) of a configuration of a post-conversion table.
FIG. 5 is a flowchart of a table conversion procedure in a SIMD microprocessor according to a conventional example.
FIG. 6 is a block diagram showing a configuration of a SIMD type microprocessor capable of realizing the first embodiment.
FIG. 7 is a flowchart of a difference data utilization table conversion procedure in the SIMD type microprocessor according to the second embodiment of the present invention;
FIG. 8 is an example (2) of a configuration of a post-conversion table.
FIG. 9 is a graph schematically showing a concept for determining post-conversion data in the first embodiment.
FIG. 10 is a graph schematically showing a way of thinking when determining post-conversion data in the second embodiment.
[Explanation of symbols]
2 ... SIMD type microprocessor, 3 ... Processor element (PE), 4 ... Global processor (GP), 6 ... Register file, 8 ... Arithmetic array, 34 ... Register 36 ... ALU, 38 ... A register, 40 ... F register, 42 ... multiplexer, 44 ... shift / expander, 50, 60 ... converted data.

Claims (2)

複数の演算ユニットをもつSIMD型マイクロプロセッサにおいて、
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、1つ又は複数設定されており、その対応付けはそれぞれ変換処理を定義しており、
個別の上記変換テーブルにおいて、複数の変換前データは昇順に若しくは降順に並ぶことが想定されており、且つ、複数の変換前データ及び複数の変換後データは、所定の区間に分割されており、
上記変換テーブルの変換後データにおいては、
各区間の区間先頭の変換後データは実際の値が格納され、区間先頭以外の変換後データに関しては直前の変換後データとの差分データが格納され、
変換対象演算データに対する変換後データを求める際には、
上記複数の演算ユニットに、上記変換対象データが格納され、
上記変換テーブルの変換前データと変換後データとの対応付けにより、上記変換対象データの変換後データが属するべき変換後データの区間を確定し、
更に、その変換後データが属する区間の区間先頭の変換後データに対して、差分データが必要分だけ加算されて、
上記変換対象データに対する変換後データを求める、
SIMD型マイクロプロセッサの処理方法。
In a SIMD type microprocessor having a plurality of arithmetic units ,
One or more conversion tables for associating the pre-conversion data that is the input arithmetic data and the post-conversion data that is the output arithmetic data are set, and the correspondence defines the conversion process,
In the individual conversion table, it is assumed that the plurality of pre-conversion data is arranged in ascending order or descending order, and the plurality of pre-conversion data and the plurality of post-conversion data are divided into predetermined sections,
In the converted data of the above conversion table,
The actual value is stored in the converted data at the beginning of each section, and the difference data from the previous converted data is stored for the converted data other than the section head,
When calculating post-conversion data for conversion target operation data,
The conversion target data is stored in the plurality of arithmetic units ,
By associating the pre-conversion data and post-conversion data in the conversion table, the post-conversion data section to which the post-conversion data of the conversion target data should belong is determined,
Furthermore, the necessary difference data is added to the converted data at the beginning of the section to which the converted data belongs,
Obtaining converted data for the conversion target data,
Processing method of SIMD type microprocessor.
複数の演算ユニットをもつSIMD型マイクロプロセッサにおいて、
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、1つ又は複数設定されており、その対応付けはそれぞれ変換処理を定義しており、
個別の上記変換テーブルにおいて、複数の変換前データは昇順に若しくは降順に並ぶことが想定されており、且つ、複数の変換前データ及び複数の変換後データは、所定の区間に同様に分割されており、
上記変換テーブルの変換後データにおいては、
各区間の区間先頭の変換後データに関しては直前の区間の区間先頭データとの第1の差分値が格納され、区間先頭以外の変換後データに関しては直前の変換後データとの第2の差分データが格納され、
変換対象演算データに対する変換後データを求める際には、
上記複数の演算ユニットに、上記変換対象データが格納され、
上記変換テーブルの変換前データと変換後データとの対応付けにより、上記変換対象データの変換後データが属するべき変換後データの区間を確定し、
まず、その変換後データが属する区間の区間先頭データが、第1の差分値の累積加算により求められ、
更に、その変換後データが属する区間の上記区間先頭データに対して、第2の差分データが必要分だけ加算されて、
上記変換対象データに対する変換後データを求める、
SIMD型マイクロプロセッサの処理方法。
In a SIMD type microprocessor having a plurality of arithmetic units ,
One or more conversion tables for associating the pre-conversion data that is the input arithmetic data and the post-conversion data that is the output arithmetic data are set, and the correspondence defines the conversion process,
In each of the above conversion tables, it is assumed that a plurality of pre-conversion data is arranged in ascending or descending order, and the plurality of pre-conversion data and the plurality of post-conversion data are similarly divided into predetermined sections. And
In the converted data of the above conversion table,
For the converted data at the head of each section, the first difference value from the section head data of the previous section is stored, and for the converted data other than the head of the section, second difference data from the previous converted data is stored. Is stored,
When calculating post-conversion data for conversion target operation data,
The conversion target data is stored in the plurality of arithmetic units ,
By associating the pre-conversion data and post-conversion data in the conversion table, the post-conversion data section to which the post-conversion data of the conversion target data should belong is determined,
First, the section head data of the section to which the converted data belongs is obtained by cumulative addition of the first difference values,
Furthermore, the second difference data is added as much as necessary to the section head data of the section to which the converted data belongs,
Obtaining converted data for the conversion target data,
Processing method of SIMD type microprocessor.
JP2000286999A 2000-09-21 2000-09-21 Table conversion by difference data in SIMD type microprocessor Expired - Fee Related JP3735524B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000286999A JP3735524B2 (en) 2000-09-21 2000-09-21 Table conversion by difference data in SIMD type microprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000286999A JP3735524B2 (en) 2000-09-21 2000-09-21 Table conversion by difference data in SIMD type microprocessor

Publications (2)

Publication Number Publication Date
JP2002099406A JP2002099406A (en) 2002-04-05
JP3735524B2 true JP3735524B2 (en) 2006-01-18

Family

ID=18770821

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000286999A Expired - Fee Related JP3735524B2 (en) 2000-09-21 2000-09-21 Table conversion by difference data in SIMD type microprocessor

Country Status (1)

Country Link
JP (1) JP3735524B2 (en)

Also Published As

Publication number Publication date
JP2002099406A (en) 2002-04-05

Similar Documents

Publication Publication Date Title
JP3605181B2 (en) Data processing using multiply-accumulate instructions
US20040122887A1 (en) Efficient multiplication of small matrices using SIMD registers
US5128888A (en) Arithmetic unit having multiple accumulators
KR100859044B1 (en) Simd calculation mode capable of designating multiple registers
GB1575214A (en) Floating point data processor
US20120072704A1 (en) &#34;or&#34; bit matrix multiply vector instruction
US20210173648A1 (en) Processor for neural network operation
US8965946B2 (en) Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value
US4823258A (en) Index limited continuous operation vector processor
Buell et al. A multiprecise integer arithmetic package
JP3735524B2 (en) Table conversion by difference data in SIMD type microprocessor
US7747667B2 (en) Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation
WO2009042106A2 (en) Shift-add mechanism
JPH034936B2 (en)
JPS608933A (en) Arithmetic processing unit
JP3693556B2 (en) Method and apparatus for performing load bypass in a floating point unit
US10503691B2 (en) Associative computer providing semi-parallel architecture
CN119440634B (en) A SIMD instruction conversion optimization method based on instruction pipeline
US6792442B1 (en) Signal processor and product-sum operating device for use therein with rounding function
JP2708013B2 (en) Memory control circuit for N-point FFT processor
JP2708526B2 (en) Binary integer division processing method
SU756408A1 (en) Aritmetic device
JP2002108604A (en) Table conversion in SIMD type microprocessor
JPH04316127A (en) Information processor
JPH03189868A (en) Data processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040824

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050301

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050502

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051024

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091028

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101028

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111028

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121028

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131028

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees