JP3735524B2 - Table conversion by difference data in SIMD type microprocessor - Google Patents
Table conversion by difference data in SIMD type microprocessor Download PDFInfo
- 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
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
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
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
[0016]
(1)
The
[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
[0018]
Further, the register file 6 can be accessed from the outside of the
[0019]
(3) Arithmetic array
Processing of PE instruction is performed. All processes are controlled from the
[0020]
FIG. 2 is a block diagram showing a more detailed configuration of the
[0021]
The
[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
[0024]
In the
[0025]
The
[0026]
A 7 to 1 (7 to 1)
[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
[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
[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
[0032]
Steps S10, S12 and S04; Next, the section is counted up by “1”. The equivalent data before conversion (4) at the head of
[0033]
Step S08: In PE3 where the conversion target data held in PE3 is larger, the 8-bit converted data at the head of
[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
[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
[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
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
[0055]
The 8-bit data stored in the register of each PE is the pre-conversion data. The
[0056]
When the above comparison / loading in each section is completed, the difference data stored in the upper part of the
-The difference data in section 1 (between
The difference data in section 2 (between
The difference data in section 3 (between
Stored. The data stored in the registers R0 to R2 is masked (ie, ANDed with 3) by the
[0057]
In order to detect the position in the section, the
[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
[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
[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
[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
[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
[0066]
Step S112: Counting up the section is repeated up to the
[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
[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
[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
[0084]
In the above description, the lower 2 bits were cut out.
・ Cut out
-Extraction of
・ Cut out bits 6 to 7
In this case, a shift /
[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 ...
Claims (2)
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、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.
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、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.
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) |
-
2000
- 2000-09-21 JP JP2000286999A patent/JP3735524B2/en not_active Expired - Fee Related
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) | "or" 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 |