(57)【特許請求の範囲】
【請求項１】
複数の演算ユニットをもつＳＩＭＤ型マイクロプロセッサにおいて、
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、１つ又は複数設定されており、その対応付けはそれぞれ変換処理を定義しており、
個別の上記変換テーブルにおいて、複数の変換前データは昇順に若しくは降順に並ぶことが想定されており、且つ、複数の変換前データ及び複数の変換後データは、所定の区間に分割されており、
上記変換テーブルの変換後データにおいては、
各区間の区間先頭の変換後データは実際の値が格納され、区間先頭以外の変換後データに関しては直前の変換後データとの差分データが格納され、
変換対象演算データに対する変換後データを求める際には、
上記複数の演算ユニットに、上記変換対象データが格納され、
上記変換テーブルの変換前データと変換後データとの対応付けにより、上記変換対象データの変換後データが属するべき変換後データの区間を確定し、
更に、その変換後データが属する区間の区間先頭の変換後データに対して、差分データが必要分だけ加算されて、
上記変換対象データに対する変換後データを求める、
ＳＩＭＤ型マイクロプロセッサの処理方法。
【請求項２】
複数の演算ユニットをもつＳＩＭＤ型マイクロプロセッサにおいて、
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、１つ又は複数設定されており、その対応付けはそれぞれ変換処理を定義しており、
個別の上記変換テーブルにおいて、複数の変換前データは昇順に若しくは降順に並ぶことが想定されており、且つ、複数の変換前データ及び複数の変換後データは、所定の区間に同様に分割されており、
上記変換テーブルの変換後データにおいては、
各区間の区間先頭の変換後データに関しては直前の区間の区間先頭データとの第１の差分値が格納され、区間先頭以外の変換後データに関しては直前の変換後データとの第２の差分データが格納され、
変換対象演算データに対する変換後データを求める際には、
上記複数の演算ユニットに、上記変換対象データが格納され、
上記変換テーブルの変換前データと変換後データとの対応付けにより、上記変換対象データの変換後データが属するべき変換後データの区間を確定し、
まず、その変換後データが属する区間の区間先頭データが、第１の差分値の累積加算により求められ、
更に、その変換後データが属する区間の上記区間先頭データに対して、第２の差分データが必要分だけ加算されて、
上記変換対象データに対する変換後データを求める、
ＳＩＭＤ型マイクロプロセッサの処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサ、特に、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｎ−ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−ｓｔｒｅａｍ；単一命令多データ処理）型マイクロプロセッサに関する。
【０００２】
【従来の技術】
ＳＩＭＤ型マイクロプロセッサでは、複数のデータに対して１つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理（例えば、画像処理）に係る用途において、頻用される。
【０００３】
ＳＩＭＤ型マイクロプロセッサにおける通常の演算処理では、複数の演算ユニット（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ〔ＰＥ〕；プロセッサエレメント）を並べ同一の演算を同時に複数のデータに対して実行する。ところが、演算処理の内容を単一の演算式で表すことができない「非線形処理」では、演算対象のデータに応じて演算式が変更されるため、同じ処理を同時に実行することができない。そうすると、データ毎の逐次処理をせざるを得ず、結局ＳＩＭＤであることの効果が無くなってしまう。
【０００４】
通常のＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｎ−ｓｔｒｅａｍ  Ｓｉｎｇｌｅ  Ｄａｔａ−ｓｔｒｅａｍ；単一命令単一データ処理）型のプロセッサにおいても、演算対象データに応じて演算式が変更される非線形処理では、演算処理を行うプログラムが非常に複雑になりかねない。それを防ぐため、演算前データに対して演算後の処理済みデータを予め全て準備してそれらをテーブル化し、演算前データを元にテーブル変換を行ない演算後データを得る方式が一般的である。具体的にはＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）上に上記テーブルを格納し、演算前データにテーブルの先頭の番地を加算した値をアドレスポインタとしてＲＡＭから得られたデータを、演算後データとしている。例えば、演算データ（演算前データ／演算後データ）が８ビットの場合には、２５６バイトのサイズの変換テーブルが必要となる。
【０００５】
この変換テーブルのサイズは、演算データのビット幅の増加とともに２のベキ乗（の単位）で増加するため、演算データのビット幅が相当に大きい場合は、演算データを任意の区間に分け、その区間での近似式をテーブルとして持つような方式も開示されている。
【０００６】
さて、このテーブル変換をＳＩＭＤ型マイクロプロセッサで採用する場合には、個々の演算単位においてテーブルが必要となると考えられていた。例えば２５６ＳＩＭＤ（即ち、演算単位〔演算ユニット、ＰＥ〕が２５６個あるＳＩＭＤ）のプロセッサにおいて、８ビットの演算データ（演算前データ／演算後データ）のテーブル変換を行なう場合には、２５６バイトの（ＲＡＭ上の）テーブルが演算単位分即ち２５６個必要となる。よって、コスト面において大きな問題があった。そのため、ＳＩＭＤ型マイクロプロセッサの非線型演算のテーブル変換に対して、種々の発明が案出され開示されている。
【０００７】
特開平５−６７２０３号においては、各ＳＩＭＤ単位のＰＥ（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ；プロセッサエレメント）内蔵の出力レジスタから演算前データを順次外部に出力し、外部で逐次にテーブル変換を行ない、変換後のデータをＰＥ内蔵の入力レジスタに順次入力する方式が提案されている。この方式では変換テーブルが１個となるためコストの上昇は抑えられるが、結局は逐次処理であるため、演算処理時間は最低でもＰＥの個数相応までかかってしまい演算速度面で不利である。また、この変換処理をＰＥでの通常処理と並行に実行すれば演算処理時間はトータルとして削減できるが、入力・出力のレジスタがこの変換作業専用に使用され他の用途に使用できない、変換処理後のデータが必要な場合には演算処理時間だけ待つこととなり並行処理が不可能である、といった問題が依然残る。
【０００８】
また、特開平９−３０５５５０号において、外部から順次変換前データと変換後のデータを入力し、各ＰＥで入力された変換前データと演算前データを比較し、一致したＰＥには変換後のデータを格納しこの値を演算後データとする方式が提案されている。この場合には、演算処理時間は演算前データの取りうる値の組み合わせ数（即ち、変換テーブルのワード数）に依存するため、ＰＥの個数よりこのワード数が少ない場合には高速化が実現される。ところが、演算前データが８ビットデータの場合、ＰＥ数によらず２５６回程度のサイクル数となるため、この場合においても演算処理時間が長くなるという問題がある。また、他の通常の処理と並行にこの変換処理を行うという方式も想定され得るが、その場合にも上記特開平５−６７２０３号と同じ問題が生じる。なお、複数の区間に分けて個別の区間内の変換を近似する式を用い、近似式の係数をロードする方法も提案されているが、この場合は区間ごとに係数だけ異なる共通の式で表現できる非線型変換にしか対応できない、という問題がある。
【０００９】
さらに、特許第２８１２２９２号においては、ＰＥの個数と同数の出力ポートを持つ変換テーブル用のＲＡＭに対して、それぞれのＰＥから演算前データをアドレスポインタとして与えることで演算後データを得る方法が提案されている。この方式においては変換速度は１サイクル程度で終了するが、出力ポートの増加はＲＡＭのコストを押し上げることになり、特に数十個を超えるポートを持つことは実現不可能である。したがって、ＰＥ数が多いＳＩＭＤ型マイクロプロセッサに対応できない、という問題がある。
【００１０】
【発明が解決しようとする課題】
本発明は、ＳＩＭＤ型マイクロプロセッサにおける非線形な処理において、廉価な装置を用いてより高速に行なうことを目的とする。
【００１１】
【課題を解決するための手段】
本発明は、上記の目的を達成するためになされたものである。本発明に係る請求項１に記載のＳＩＭＤ型マイクロプロセッサの処理方法は、
複数の演算ユニットをもつＳＩＭＤ型マイクロプロセッサにおいて、
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、１つ又は複数設定されており、その対応付けはそれぞれ変換処理を定義しており、
個別の上記変換テーブルにおいて、複数の変換前データは昇順に若しくは降順に並ぶことが想定されており、且つ、複数の変換前データ及び複数の変換後データは、所定の区間に分割されており、
上記変換テーブルの変換後データにおいては、
各区間の区間先頭の変換後データは実際の値が格納され、区間先頭以外の変換後データに関しては直前の変換後データとの差分データが格納され、
変換対象演算データに対する変換後データを求める際には、
上記複数の演算ユニットに、上記変換対象データが格納され、
上記変換テーブルの変換前データと変換後データとの対応付けにより、上記変換対象データの変換後データが属するべき変換後データの区間を確定し、
更に、その変換後データが属する区間の区間先頭の変換後データに対して、差分データが必要分だけ加算されて、
上記変換対象データに対する変換後データを求める、
ＳＩＭＤ型マイクロプロセッサの処理方法である。
【００１２】
本発明に係る請求項２に記載のＳＩＭＤ型マイクロプロセッサの処理方法は、
複数の演算ユニットをもつＳＩＭＤ型マイクロプロセッサにおいて、
入力演算データである変換前データと出力演算データである変換後データを対応付ける変換テーブルが、１つ又は複数設定されており、その対応付けはそれぞれ変換処理を定義しており、
個別の上記変換テーブルにおいて、複数の変換前データは昇順に若しくは降順に並ぶことが想定されており、且つ、複数の変換前データ及び複数の変換後データは、所定の区間に同様に分割されており、
上記変換テーブルの変換後データにおいては、
各区間の区間先頭の変換後データに関しては直前の区間の区間先頭データとの第１の差分値が格納され、区間先頭以外の変換後データに関しては直前の変換後データとの第２の差分データが格納され、
変換対象演算データに対する変換後データを求める際には、
上記複数の演算ユニットに、上記変換対象データが格納され、
上記変換テーブルの変換前データと変換後データとの対応付けにより、上記変換対象データの変換後データが属するべき変換後データの区間を確定し、
まず、その変換後データが属する区間の区間先頭データが、第１の差分値の累積加算により求められ、
更に、その変換後データが属する区間の上記区間先頭データに対して、第２の差分データが必要分だけ加算されて、
上記変換対象データに対する変換後データを求める、
ＳＩＭＤ型マイクロプロセッサの処理方法である。
【００１４】
【発明の実施の形態】
以下、図面を参照して、本発明に係る好適な実施形態を説明する。
【００１５】
図１は、本発明に係るＳＩＭＤ型マイクロプロセッサ２の概略の構成を示すブロック図である。該ＳＩＭＤ型マイクロプロセッサ２は、概略、グローバルプロセッサ４、レジスタファイル６、及び演算アレイ８から構成される。
【００１６】
（１）グローバルプロセッサ４
このグローバルプロセッサ４そのものは、いわゆるＳＩＳＤ型のプロセッサであり、プログラムＲＡＭ１０とデータＲＡＭ１２を内蔵し（図２参照）、プログラムを解読し各種制御信号を生成する。この制御信号は内蔵する各種ブロックの以外に、レジスタファイル６、演算アレイ８にも供給される。また、ＧＰ（グローバルプロセッサ）命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）等を使用して各種演算処理、プログラム制御処理をおこなう。
【００１７】
（２）レジスタファイル６
ＰＥ（プロセッサエレメント）命令で処理されるデータを保持している。ＰＥ（プロセッサエレメント）３は、公知のように、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−Ｓｔｒｅａｍ，Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−Ｓｔｒｅａｍ）型プロセッサにおいて個別の演算を実行する構成単位である。図２のレジスタファイル６及び演算アレイ８が示すように、図２のＳＩＭＤ型マイクロプロセッサ２では２５６個のＰＥ３を含んでいる。上記のＰＥ命令はＳＩＭＤ型の命令であり、レジスタファイル６に保持されている複数のデータに対し、同時に同じ処理を行なう。このレジスタファイル６からのデータの読み出し／書き込みの制御はグローバルプロセッサ４からの制御によって行なわれる。読み出されたデータは演算アレイ８に送られ、演算アレイ８での演算処理後にレジスタファイル６に書き込まれる。
【００１８】
また、レジスタファイル６はプロセッサ２外部からのアクセスが可能であり、グローバルプロセッサ４の制御とは別に、外部から特定のレジスタに対し読み出し／書き込みが行なわれる。
【００１９】
（３）演算アレイ
ＰＥ命令の演算処理が行なわれる。処理の制御はすべてグローバルプロセッサ４から行なわれる。
【００２０】
図２は、本発明に係るＳＩＭＤ型マイクロプロセッサ２の、更に詳細な構成を示すブロック図である。
【００２１】
グロバールプロセッサ４には、本プロセッサ２のプログラム格納用のプログラムＲＡＭ１０と、演算データ格納用のデータＲＡＭ１２が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）１４、演算処理のデータ格納のための汎用レジスタであるＧ０、Ｇ１、Ｇ２及びＧ３レジスタ（１６、１８、２０、２２）、レジスタ退避・復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）２４、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）２６、同じくＩＲＱ（Ｉｎｔｅｒｒｕｐｔ  ＲｅＱｕｅｓｔ；割込み要求）時とＮＭＩ（Ｎｏｎ−Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  ＲｅＱｕｅｓｔ；禁止不能割込み要求）時の分岐元アドレスを保持するＬＩレジスタ２８及びＬＮレジスタ３０、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）３２が内蔵されている。
【００２２】
これらのレジスタと、（図示していない）命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路及びＧＰ演算制御回路とを使用して、ＧＰ命令の実行が行なわれる。
【００２３】
また、ＰＥ命令実行時には、命令デコーダ、（図６に示されている）レジスタファイル制御回路５６、ＰＥ演算制御回路５８を使用して、レジスタファイル６の制御と演算アレイ８の制御を行なう。さらに、データＲＡＭ１２から複数のＰＥレジスタファイル６にデータを転送できるように、設定されている。
【００２４】
レジスタファイル６においては、１つのＰＥ単位に８ビットのレジスタ３４が３２本内蔵されており、２５６個のＰＥ分の（３２本の）組が、アレイ構成になっている。レジスタ３４はＰＥ毎に、Ｒ０、Ｒ１、Ｒ２、．．．Ｒ３１と呼ばれる。それぞれのレジスタ３４は、演算アレイ８に対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバスで演算アレイ８からアクセスされる。３２本のレジスタの内、２４本（Ｒ０〜Ｒ２３）はプロセッサ外部からアクセス可能であり、外部からはクロック（ＣＬＫ）とアドレス（Ａｄｄｒｅｓｓ）、リード／ライト制御（ＲＷＢ）を入力することで、任意のレジスタ３４に対し、読み書きできる。残りの８本（Ｒ２４〜Ｒ３１）のレジスタ３４は、ＰＥ演算の一時的な演算データ保存用として使用される。
【００２５】
演算アレイ８は、１６ビットＡＬＵ３６と１６ビットＡレジスタ３８、Ｆレジスタ４０を内蔵している。ＰＥ命令による演算は、レジスタファイル６から読み出されたデータ若しくはグローバルプロセッサ４から与えられたデータをＡＬＵ３６の片側の入力とし、Ａレジスタ３８の内容をもう片側の入力として、行なわれるものである。その演算結果は、Ａレジスタ３８に格納される。したがって、Ｒ０〜Ｒ３１レジスタ３４若しくはグローバルプロセッサ４から与えられたデータと、Ａレジスタ３８に格納されるデータとの、演算が行なわれることになる。
【００２６】
レジスタファイル６と演算アレイ８との接続に、７ｔｏ１（７対１）のマルチプレクサ４２が置かれている。図２に示すように、あるマルチプレクサ４２から見て、左方向の３つのＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータと、右方向の３つのＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータと、自らが属するＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータを、演算対象として選択し得るように設定されている。また、レジスタファイル６の８ビットのデータは、シフト・拡張回路４４により任意のビット分だけ、左シフトしてＡＬＵ３６に入力する。さらに、８ビットの条件レジスタ５４（図６に示す）により、ＰＥ３別に演算実行の無効／有効の制御をしており、特定のＰＥ３だけを演算対象として選択できるようになっている。
【００２７】
≪第１の実施の形態≫
図３は、本発明に係る第１の実施の形態である、ＳＩＭＤ型マイクロプロセッサにおける差分データ利用テーブル変換の手順のフローチャートである。図３の手順は、図２及び図６のＳＩＭＤ型マイクロプロセッサ２を稼動するプログラムコードにより、実現されるものである。上記フローチャートを以下において説明する。
【００２８】
ステップＳ００；まず、図４に示すような変換後テーブル５０を準備しておく。本発明においては、変換前データ／変換後データの全体を、所定の区間に分割することを前提としている。よって、変換後テーブル５０においても同じ（所定の）区間に分割されている。分割の数は、
▲１▼変換後データ／変換後データのビット幅、
▲２▼変換後データの差分値に必要なビット数、
▲３▼各ＰＥ３に一時的にロード可能なレジスタのビット幅
で決定される。例えば、▲１▼変換前データと変換後データのビット幅が８ビット、▲２▼差分値が最大２ビット、▲３▼各ＰＥ３に一時的にロード可能なビット幅が１６ビットの場合は、図４に示すように、区間先頭変換後データに８ビット、それに続く差分値が各２ビットで３つの組み合わせ（４つ目に無効な２ビットのデータが挿入されているが、この２ビットにより８ビットの境界にデータが揃うことになり、テーブルに関する処理が簡単となる。）となり、１つの区間にて４つの変換後データが含まれる。よって、８ビットデータのテーブル変換であるので２５６のテーブルを分割することとなるが、２５６に対し４つずつのデータを１区間とするため全部で６４区間となる。
【００２９】
ステップＳ０２；上記の変換後テーブル５０が準備されているという条件の下で、図３のフローチャートの処理が実際に開始される。まず、区間指定数を、“０”に設定する。
【００３０】
ステップＳ０４；区間０の先頭における変換前（に相当する）データ（０）と、各ＰＥ３に保持されている変換対象データとの比較を行なう（ステップＳ０６）。
【００３１】
ステップＳ０８；ＰＥ３に保持されている変換対象データの方が大きいＰＥ３においては、区間０の先頭における変換後データの８ビットと３つの２ビット差分値（１つの２ビット無効データを含む）を変換後テーブル５０から読み出し、一時的なレジスタにロードする。
【００３２】
ステップＳ１０、Ｓ１２及びＳ０４；次に、区間を“１”だけカウントアップする。区間１の先頭における変換前相当データ（４）と、各ＰＥ３に保持されている変換対象データとの比較をおこなう（ステップＳ０６）。
【００３３】
ステップＳ０８；ＰＥ３に保持されている変換対象データの方が大きいＰＥ３においては、区間１の先頭における変換後データの８ビットと３つの２ビット差分値（１つの２ビット無効データを含む）を変換後テーブル５０から読み出し、一時的なレジスタにロードする。
【００３４】
ステップＳ１２；区間のカウントアップを、区間６３まで繰り返し、区間指定値ｎが６４となると、次の処理へ移行する。
【００３５】
なお、区間先頭データは、４つのデータの組が１つの区間であるため、０、４、８、１２、１６、２０と４の倍数となる。
【００３６】
ステップＳ１４；図３のフローチャートの後半の処理では、変換対象データが（変換前の）区間内のどの位置に相当するのかを求める。本実施の形態では、１区間には４つのデータが含まれるため、変換対象データの下位２ビットが区間内での位置（ｍ）を示している。
【００３７】
ステップＳ１６；この位置（ｍ）の値を、０と比較する。０であるならば、「終了」（Ｓ２２）に進む。
【００３８】
ステップＳ１８；ステップＳ１６の比較において、“ｍが０ではない”ＰＥ３では、区間での先頭の変換後データと１つ次の変換後データの差分値を、先頭変換後データに加算し累積値とする。ここで加算する差分値はロードされた差分値データの下位２ビットとなる。
【００３９】
ステップＳ２０；その後にｍから１を減算し、ステップＳ１６に戻る。
【００４０】
ステップＳ１６；次にこの位置（ｍ）の値を０と比較する。０であるならば、「終了」（Ｓ２２）に進む。
【００４１】
ステップＳ１８；上記ステップＳ１６にて、“ｍが０ではない”ＰＥ３では、区間での先頭の１つ次の変換後データと２つ次の変換後データの差分値を、累積値に加算する。ここで加算する差分値はロードされた差分値データのビット２〜３であるため、加算前に差分値データを２ビット右シフトすることにより下位２ビットとなる。
【００４２】
ステップＳ２０；その後にｍから１を減算し、ステップＳ１６に戻る。
【００４３】
ステップＳ１６；次にこの位置（ｍ）の値を０と比較する。０であるならば、「終了」（Ｓ２２）に進む。
【００４４】
ステップＳ１８；上記ステップＳ１６にて、“ｍが０ではない”ＰＥ３では、区間での先頭の２つ次の変換後データと３つ次の変換後データの差分値を、累積値に加算する。ここで加算する差分値はロードされた差分値データのビット４〜５であるため、加算前に差分値データを２ビット右シフト（４ビットのシフトが必要であるが、２ビットは前の処理でシフト済み）することにより下位２ビットとなる。
【００４５】
ステップＳ２０；その後にｍから１を減算し、ステップＳ１６に戻る。
【００４６】
ステップＳ１６；次にこの位置（ｍ）の値を０と比較する。本実施の形態では、ｍは最大３であるためここまでの繰り返しで必ず終了する。この処理により得られた累積値が変換後データとなる。
【００４７】
以上で、図３のフローチャートの説明を終了する。
【００４８】
本発明は、上記の形態に勿論限定されるものではない。即ち、区間の分割数、差分値は、他の所定の値での実現も考えられる。
【００４９】
また、図３のフローチャートの処理の前半における、区間を確定する方法としては、区間の先頭における変換前相当データと各ＰＥに保持されている変換前データとの大小比較以外にも数多く存在する。例えば、
・変換前データの区間内の位置を示している下位のビット（例では２ビット）をマスクして、区間の先頭の変換前相当データと一致比較させる方法、
・変換前データを区間内の位置を示している下位のビット（例では２ビット）だけ右シフトして、０から区間数までの整数と一致比較させる方法、
・最大区間から区間０へ小さい方へ順次比較する方法
などでも実現できる。また、ループによる繰り返し処理を行なう場合は、繰り返しの終了条件を検出する時間が必要となるため、ループによる繰り返し処理を行なわないで各区間検出処理を直列に並べて処理を行なう方が、高速化に適う。
【００５０】
図３のフローチャートの処理の後半における、差分値の加算では、変換前データの区間内位置を下位の２ビットから得ているが、他の方法も可能である。例えば、
・変換前データから、区間の先頭における変換前相当データを減算する方法、
・その減算を、（前半の）区間確定処理にて行なう方法
等で実現できる。また、差分値を右ビットシフトにより得ているが、
・差分値のパックされたデータから直接有効ビットを切り出す方法、
・位置を示す値を差分値が格納されているレジスタのポインタとして差分値を指定する方法
等でも実現可能である。ループによる繰り返し処理を行なう場合は、繰り返しの終了条件を検出する時間が必要となるため、ループによる繰り返し処理を行なわないで区間内位置による差分値の加算を直列に並べて処理を行なう方が、高速化に適う。
【００５１】
以上、第１の実施の形態での処理を、簡単に記述すると、
▲１▼変換対象データと、各区間の先頭における変換前に相当するデータを比較し、変換対象データが含まれる区間の先頭変換後データとその区間内の各データの差分値を、ロードする、
▲２▼変換対象データの（変換前の）区間内の位置に応じて、差分値を、変換対象データが含まれる区間の先頭変換後データに加算する、
となる。第１の実施の形態における変換後データを決定する際の考え方は、図９のグラフにて模式的に示されている。
【００５２】
第１の実施の形態である図３のフローチャートにおける処理ステップ数は、
▲１▼区間の比較が６４ステップ、データのロードが６４ステップ
▲２▼差分値の加算要／非検出が３ステップ、差分加算が６ステップ
となり、結局、１３７ステップに若干のその他のステップが加算されることになる。
【００５３】
これに対して、従来の公知例では、図５のようなフローチャートとなる。変換前データと変換後データのビット幅が８ビットの場合は、２５６のテーブルとなるため、ステップ数は、
▲１▼テーブルの比較が２５６ステップ、データのロードが２５６ステップ
となり、５１２ステップが必要となる。
【００５４】
図６において、第１の実施の形態を実現しうる、ＳＩＭＤ型マイクロプロセッサ２の構成のブロック図を示す。図２のＳＩＭＤ型マイクロプロセッサ２に対し、第１の実施の形態を実現するために必要な構成要素を、加えたものである。
【００５５】
各ＰＥのレジスタに格納された８ビットデータが、変換前データである。このデータと、グローバルプロセッサ（ＧＰ）４から即値データバス５２を介して転送される区間先頭変換前データとの大小比較を、ＡＬＵ３６にて行なう。比較の結果は、条件レジスタ５４に格納され、変換前データの方が大きいＰＥ３では条件成立となり、後に続くデータロードが実行される。データロードでは、グローバルプロセッサ（ＧＰ）４から即値データバス５２を介して、Ｆレジスタ４０下位８ビットに区間先頭変換後データと上位８ビットに差分データが格納される。
【００５６】
各区間での上記の比較・ロードが終了すると、Ｆレジスタ４０上位に格納された差分データは、各ＰＥ３に含まれるレジスタ３４に格納されるが、その格納の際にシフタ４４により、右にシフトされる。
・区間内１（区間ｎのデータ０とデータ１の間）の差分データはシフト無しで、例えばレジスタ（Ｒ０）へ、
・区間内２（区間ｎのデータ１とデータ２の間）の差分データは右２ビットシフトされて、例えばレジスタ（Ｒ１）へ、
・区間内３（区間ｎのデータ２とデータ３の間）の差分データは右４ビットシフトされて、例えばレジスタ（Ｒ２）へ
格納される。レジスタＲ０〜Ｒ２に格納されたデータは、ＡＬＵ３６により下位２ビットだけマスク処理（即ち、３とのＡＮＤ処理）が行われ、再びそれぞれのレジスタＲ０〜Ｒ２へ戻される。
【００５７】
区間内の位置を検出するため、最初に各ＰＥ３のレジスタ３４に格納された変換前データの下位２ビットにおいて、ＡＬＵ３６により比較を行なう。ここで、１以上ならば、条件レジスタ５４の所定のビット、例えばＴ１に対し、Ｔ１＝１となるように設定する。同様に、２以上ならば、条件レジスタ５４のＴ２＝１に、３以上ならば、条件レジスタ５４のＴ３＝１に、設定を行なう。Ｆレジスタ４０下位に格納された区間先頭変換後データは、Ａレジスタ３８にロードされ、その区間先頭変換後データに対し、（条件レジスタ５４において）「Ｔ１＝１」であるＰＥ３ではレジスタ（Ｒ０）に格納された差分値をＡＬＵ３６で加算、さらにＴ２＝１のＰＥ３ではレジスタ（Ｒ１）に格納された差分値をＡＬＵ３６で加算、さらにＴ３＝１のＰＥ３ではレジスタ（Ｒ２）に格納された差分値をＡＬＵ３６で加算する。こうして加算結果としてＡレジスタに残った値が、変換後の値となる。
【００５８】
≪第２の実施の形態≫
図７は、本発明に係る第２の実施の形態である、ＳＩＭＤ型マイクロプロセッサにおける差分データ利用テーブル変換の手順のフローチャートである。図７の手順は、図２のＳＩＭＤ型マイクロプロセッサ２を稼動するプログラムコードにより、実現されるものである。上記フローチャートを以下において説明する。
【００５９】
ステップＳ１００；まず、図８に示すような変換後テーブル６０を準備しておく。変換前データ／変換後データの全体を、所定の区間に分割することを前提としている。よって、変換後テーブル６０においても同じ（所定の）区間に分割されている。分割の数は、
▲１▼変換後データ／変換後データのビット幅、
▲２▼変換後データの差分値に必要なビット数、
▲３▼各ＰＥ３に一時的にロード可能なレジスタのビット幅
で決定される。例えば、▲１▼変換前データと変換後データのビット幅が８ビット、▲２▼差分値が最大２ビット、▲３▼各ＰＥ３に一時的にロード可能なビット幅が１６の場合は、図８に示すように、区間先頭変換後差分データに６ビット、それに続く差分値が各２ビットで５つの組み合わせとなり、１つの区間にて６つの変換後データが含まれる。よって、８ビットデータのテーブル変換であるので２５６のテーブルを分割することとなるが、２５６に対し６つずつのデータを１区間とするため全部で４３区間となる。
【００６０】
ここで、上記の区間先頭変換後差分データとは、その区間の先頭変換後データから１つ前の区間の先頭変換後データを減算した値である（図１０参照）。
【００６１】
ステップＳ１０２；上記の変換後テーブル６０が準備されているという条件の下で、図７のフローチャートの処理が実際に開始される。まず、区間指定数及び累積変換後データを、“０”に設定する。
【００６２】
ステップＳ１０４；区間０の先頭における変換前（に相当する）データ（０）と、各ＰＥ３に保持されている変換対象（変換前）データとの比較を行なう（ステップＳ１０６）。
【００６３】
ステップＳ１０８；ＰＥ３に保持されている変換対象データの方が大きいＰＥ３においては、区間０の先頭における変換後差分データの６ビットを累積変換後データに加算し、５つの２ビット差分値を変換後テーブル６０から読み出し一時的なレジスタにロードする。
【００６４】
ステップＳ１１０、Ｓ１１２及びＳ１０４；次に、区間を“１”だけカウントアップする。区間１の先頭における変換前相当データ（４）と、各ＰＥ３に保持されている変換対象（変換前）データとの比較をおこなう（ステップＳ１０６）。
【００６５】
ステップＳ１０８；ＰＥ３に保持されている変換対象データの方が大きいＰＥ３においては、区間１の先頭における変換後差分データの６ビットを累積変換後データに加算し、５つの２ビット差分値を変換後テーブル６０から読み出し一時的なレジスタにロードする。
【００６６】
ステップＳ１１２；区間のカウントアップを、区間４２まで繰り返し、区間指定値ｎが４３となると、次の処理へ移行する。
【００６７】
なお、区間先頭データは、６つのデータの組が１つの区間であるため、０、６、１２、１８、２４、３０と６の倍数となる。
【００６８】
ステップＳ１１４；図７のフローチャートの後半の処理では、変換対象データが（変換前の）区間内のどの位置に相当するのかを求める。本実施の形態では、１区間には６つのデータが含まれるため、変換対象データを“６”で割った余りが区間中のでの位置（ｍ）を示している。
【００６９】
ステップＳ１１６；この位置（ｍ）の値を、０と比較する。０であるならば、「終了」（Ｓ１２２）に進む。
【００７０】
ステップＳ１１８；ステップＳ１１６の比較において、“ｍが０ではない”ＰＥ３では、区間での先頭の変換後データと１つ次の変換後データの差分値を、累積変換後データに加算する。ここで加算する差分値はロードされた差分値データの下位２ビットとなる。
【００７１】
ステップＳ１２０；その後にｍから１を減算し、ステップＳ１１６に戻る。
【００７２】
ステップＳ１１６；次にこの位置（ｍ）の値を０と比較する。０であるならば、「終了」（Ｓ１２２）に進む。
【００７３】
ステップＳ１１８；上記ステップＳ１１６にて、“ｍが０ではない”ＰＥ３では、区間での先頭の１つ次の変換後データと２つ次の変換後データの差分値を、累積変換後データに加算する。ここで加算する差分値はロードされた差分値データのビット２〜３であるため、加算前に差分値データを２ビット右シフトすることにより下位２ビットとなる。
【００７４】
ステップＳ１２０；その後にｍから１を減算し、ステップＳ１１６に戻る。
【００７５】
ステップＳ１１６；次にこの位置（ｍ）の値を０と比較する。０であるならば、「終了」（Ｓ１２２）に進む。
【００７６】
ステップＳ１１８；上記ステップＳ１１６にて、“ｍが０ではない”ＰＥ３では、区間での先頭の２つ次の変換後データと３つ次の変換後データの差分値を、累積変換後データに加算する。ここで加算する差分値はロードされた差分値データのビット４〜５であるため、加算前に差分値データを更に２ビット右シフトすることにより下位２ビットとなる。
【００７７】
ステップＳ１２０；その後にｍから１を減算し、ステップＳ１１６に戻る。
【００７８】
ステップＳ１１６にて、“ｍ＝０”が成り立つまで、ステップＳ１１６からステップＳ１２０までの、ループ処理を継続する。但し、ステップＳ１１８にて加算される差分値は、ロードされた差分値データの、より上位の２ビットに移行していく。
【００７９】
以上の処理により得られた累積変換前データが、変換後データとなる。以上で、図７のフローチャートの説明を終了する。
【００８０】
以上、第２の実施の形態での処理を、簡単に記述すると、
▲１▼変換対象データと、各区間の先頭における変換前に相当するデータを比較し、変換対象データが含まれる区間の先頭変換後差分データを累積値に加算し、その区間内の各データの差分値をロードする、
▲２▼変換対象データの（変換前の）区間内の位置に応じて、差分値を、累積値に加算する、
となる。第２の実施の形態における変換後データを決定する際の考え方は、図１０のグラフにて模式的に示されている。
【００８１】
第２の実施の形態である図７のフローチャートにおける処理ステップ数は、
▲１▼区間の比較が４３ステップ、データのロード及び加算が４３ステップ
▲２▼差分値の加算要／非検出が５ステップ、差分加算が１０ステップ
となり、結局、１０１ステップに若干のその他のステップが加算されることになる。なお、上記▲１▼にてロード処理と加算処理とが同時に行なわれない場合は更に４３ステップが加算される。
【００８２】
≪差分値に抽出について≫
ここまでの実施の形態の説明では、差分値の切り出し方法については特に触れていなかったが、図６のブロック図の説明で示したような通常の処理では、加算対象以外のビットを０とするマスク処理をおこなう。例えば下位２ビットの加算であれば、２ビットの切り出しは、即値データの０ｘ３という値とのＡＮＤ処理をおこなうことにより可能となる。
【００８３】
これに対して、以下のようなマイクロプロセッサ２であれば、図６に係る説明で述べられているように差分データを個々に切り出して別々のレジスタに一時格納する、という処理を略することができる。即ち、ＡＬＵ３６の片側の入力部にはレジスタデータ、即値データが入力されるのであるが、そのとき同時に０のデータを適宜選択して入力することにより、ＡＬＵ３６への上記の入力において任意のビットを０と設定することが可能となる、というようなマイクロプロセッサ２である。図６に示される実施形態では、ＡＬＵ３６の入力の下位２ビットをレジスタに格納されるデータとし、残りのビットを０の入力とすることにより、マスク処理と同時に下位２ビットの加算処理も可能となる。
【００８４】
上記では下位２ビットの切り出しについて述べたが、
・ビット２〜ビット３の切り出し、
・ビット４〜ビット５の切り出し、
・ビット６〜ビット７の切り出し
の際には、ＡＬＵ３６の入力の直前に配置されるシフト・拡張器４４が適宜利用されて、所定ビットの切り出し及び加算が行なわれる。以上の構成により任意のビットだけを切り出して行なう加算が、より少ないステップ数で実現できるようになる。
【００８５】
≪差分データの持ち方について≫
以上の、本発明に係る第１の実施の形態、及び第２の実施の形態は、変換前データがカウントアップするのに応じて、変換後データも、滑らかに且つ単調に増加するような変換処理において、特に有効である。即ち、図９及び図１０のグラフに示されるような変換処理である。
【００８６】
本発明は、（図９や図１０のグラフと異なり）変換後データが減少するような変換処理においても、利用可能である。但しその場合、差分データが増加データであるか減少データであるかを示すビット、即ち符号ビットが、各差分データに対して必要になる。
【００８７】
【発明の効果】
これまでの説明から明白なように、本発明を利用することで以下のような効果を得ることができる。
【００８８】
本発明に係る請求項１に記載の方法を利用することにより、ＳＩＭＤ型マイクロプロセッサにおいて、一切の近似式を使用することなく、非線型変換を高速に行なうことができる。
【００８９】
本発明に係る請求項２に記載の方法を利用することにより、ＳＩＭＤ型マイクロプロセッサにおいて、非線型変換での必要なステップ数が削減され且つ変換後テーブルのサイズを小さくできる。
【００９０】
本発明に係る請求項３に記載のＳＩＭＤ型マイクロプロセッサを利用することにより、入力データの任意のビット位置のデータ切り出しと、そのビットに係る加算処理を、少ないステップ数で実現できる。
【図面の簡単な説明】
【図１】  本発明に係るＳＩＭＤ型マイクロプロセッサの概略の構成を示すブロック図である。
【図２】  本発明に係るＳＩＭＤ型マイクロプロセッサの、更に詳細な構成を示すブロック図である。
【図３】  本発明に係る第１の実施の形態である、ＳＩＭＤ型マイクロプロセッサにおける差分データ利用テーブル変換の手順のフローチャートである。
【図４】  変換後テーブルの構成の例（１）である。
【図５】  従来の公知例の、ＳＩＭＤ型マイクロプロセッサにおけるテーブル変換の手順のフローチャートである。
【図６】  第１の実施の形態を実現しうる、ＳＩＭＤ型マイクロプロセッサの構成のブロック図を示す。
【図７】  本発明に係る第２の実施の形態である、ＳＩＭＤ型マイクロプロセッサにおける差分データ利用テーブル変換の手順のフローチャートである。
【図８】  変換後テーブルの構成の例（２）である。
【図９】  第１の実施の形態における変換後データを決定する際の考え方を模式的に示すグラフである。
【図１０】  第２の実施の形態における変換後データを決定する際の考え方を模式的に示すグラフである。
【符号の説明】
２・・・ＳＩＭＤ型マイクロプロセッサ、３・・・プロセッサ・エレメント（ＰＥ）、４・・・グローバル・プロセッサ（ＧＰ）、６・・・レジスタファイル、８・・・演算アレイ、３４・・・レジスタ、３６・・・ＡＬＵ、３８・・・Ａレジスタ、４０・・・Ｆレジスタ、４２・・・マルチプレクサ、４４・・・シフト・拡張器、５０、６０・・・変換後データ。
【図１】
0003735524.tif 000002
【図２】
0003735524.tif 000003
【図３】
0003735524.tif 000004
【図４】
0003735524.tif 000005
【図５】
0003735524.tif 000006
【図６】
0003735524.tif 000007
【図７】
0003735524.tif 000008
【図８】
0003735524.tif 000009
【図９】
0003735524.tif 000010
【図１０】
0003735524.tif 000011