(57)【特許請求の範囲】
【請求項１】
プログラムを解読しプロセッサ全体を制御するグローバルプロセッサと、データを処理するプロセッサエレメントを複数個備えて構成されるプロセッサエレメントブロックと、を有する並列プロセッサにおいて、各プロセッサエレメントは、変換前データを記憶する変換前データ用レジスタと、データバスから送られてくる変換後データを記憶する変換後データ用レジスタと、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データであるかを判別する判別手段と、を備え、
前記判別手段は、データバスから送られてくるデータの変換前にあたる変換前算出データを計算によって求め、該変換前算出データが前記変換前データ用レジスタに記憶された前記変換前データと一致すると、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データであると判別し、
前記判別手段がデータバスから送られてくるデータが記憶されている変換前データに相当する変換後データであると判別すると、データバスから送られてくる前記変換後データを前記変換後データ用レジスタに記憶させることを特徴とする並列プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、デジタル複写機やファクリミリ装置等の画像データのデジタル処理等に用いられる並列プロセッサに関するものであり、特に画像データの非線形変換処理に用いられるＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型マイクロプロセッサに関するものである。    
【背景技術】
【０００２】
近年、デジタル複写機やファクリミリ装置等の画像処理装置において、画素数を増加したり、或いはカラー対応にするなど画像の向上が図られている。そして、この画像の向上に伴い、処理すべきデータ数が増加している。ところで、複写機等の画像処理装置におけるデータ処理は全ての画素に対して同じ演算処理を施すことが多い。そこで、１つの命令で複数のデータに対して同時に同じ演算処理を行うＳＩＭＤ方式のプロセッサが用いられるようになっている。
【０００３】
上記したように、ＳＩＭＤ型マイクロプロセッサでは１つの命令で複数のデータに対して同時に同じ演算処理が実行可能である。ここで、通常の演算処理は複数の演算器を並べ同じ演算を同時に複数のデータに対して実行することで実現できる。しかし、画像処理においては、演算処理が式で表すことができない非線形な処理を行うことが多い。演算処理が式で表すことができない非線形な処理は演算対象のデータによって演算式が変更となるため同じ処理を同時に実行できない。したがって、データ毎の逐次処理となりＳＩＭＤ方式の効果が無くなってしまう。
【０００４】
通常のＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｓｉｎｇｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）方式のプロセッサにおいても演算データにより演算式が変更となる非線形処理はプログラムが非常に複雑になるため、演算前データに対して演算後の処理済みデータを全て準備しておきテーブル化し、演算データを元にテーブル変換を行い演算後データを得る方式が一般的である。具体的にはＲＡＭ上にテーブルを持ち演算前データにテーブルの先頭の番地を加算した値をアドレスポインタとしてＲＡＭから得られたデータを演算後のデータとしている。
【０００５】
演算データが８ビットの場合には２５６バイトの変換テーブルが必要となるが演算ビット幅の増加とともにテーブルのサイズは２のベキ乗で増加するため演算ビット幅が大きい場合は演算データを任意の区間に分けてその区間での近似式をテーブルとして持つ場合もある。
【０００６】
特許文献１においては、各ＳＩＭＤ単位のプロセッサエレメント内蔵の出力レジスタから演算前データを順次外部に出力し、外部で逐次にテーブル変換を行い、変換後のデータをプロセッサエレメント内蔵の入力レジスタに順次入力する方式が提案されている。この方式では、変換テーブルが１個となるためコストの上昇は抑えられるが、逐次処理であるため演算処理時間は最低でもプロセッサエレメント数だけかかってしまい演算速度面で不利であった。また、この変換処理をプロセッサエレメントでの通常処理と並行に実行すれば演算処理時間はトータルとして削減できるが、入力・出力のレジスタがこの変換作業専用に使用され他の用途に使用できない、変換処理後のデータが必要な場合には演算処理時間だけ待つこととなり並行処理が不可能であるといった問題があった。
【０００７】
また、特許文献２においては、各プロセッサエレメント（ＰＥ）毎に非線形変換テーブルの元データと変換対象データとの比較を行う比較器を設け、この比較器で両データを比較し、一致したプロセッサエレメントには変換後のデータを格納し、この値を演算後データとする方式が提案されている。この場合には演算処理時間は演算前データの取りうる値の組み合わせ（変換テーブルのワード数）となるため、プロセッサエレメント数よりこのワード数が少ない場合には高速化される。８ビットデータの場合ではプロセッサエレメント数によらず２５６回程度のサイクル数となる。この場合においても演算処理時間が長い問題がある。また、他の処理と並行に行った場合には、上記した特開平５−６７２０３号公報と同じ問題を持っている。
【０００８】
さらに、特許文献３においては、プロセッサエレメント数と同数の出力ポートを持つ変換テーブル用のＲＡＭに対して、それぞれのプロセッサエレメントから演算前データをアドレスポインタとして与えることで演算後データを得る方法が提案されている。この方式においては、変換速度は１サイクル程度で終了するが、出力ポートの増加はＲＡＭのコストを押し上げることとなり、特に数１０個を超えるポートを持つことは実現不可能である。したがって、プロセッサエレメント数が多いＳＩＭＤ型プロセッサに対応できないという問題があった。
【特許文献１】特開平５−６７２０３号公報
【特許文献２】特開平９−３０５５５０号公報
【特許文献３】特許第２８１２２９２号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
さて、このテーブル変換をＳＩＭＤ型マイクロプロセッサで採用する場合にはそれぞれの演算単位でテーブルが必要となる。例えば、２５６個のプロセッサエレメント（ＰＥ）を有するＳＩＭＤ型プロセッサで８ビットのテーブル変換を行う場合には２５６バイトのテーブルＲＡＭがそれぞれの演算単位つまり２５６個必要となりコスト面が増大する問題があった。そのため、ＳＩＭＤ型マイクロプロセッサのテーブル変換に対して数々の方式が考案されている。
【００１０】
上記したように、従来技術においては、ＳＩＭＤ型マイクロプロセッサのテーブル変換に代表される非線型処理はＳＩＭＤ型の最大の特徴である並列処理が困難であるため数々の方式が考案されているが、それらは、入出力レジスタを介した方法、専用のコンパレータを使用したもの、専用テーブル用メモリを使用したものであり、速度・コストのいずれかの面で問題があった。
【００１１】
すなわち、特許文献１は、出力レジスタからデータを出力し外部テーブルメモリのアドレスとして入力、メモリから出力されたデータを変換後のデータとして入力シフトレジスタから入力する。全データの変換にはプロセッサエレメント数以上のサイクルが必要であり処理時間が長い問題がある。また、テーブルメモリは専用のものとなり、さらに入力シフトレジスタ、入力シフトレジスタはテーブル変換専用に使用されることとなる。
【００１２】
また、特許文献２は、各プロセッサエレメントに変換前データの比較器を設け、外部から変換前データと変換後データを入力し変換前データと一致したプロセッサエレメントだけに変換後のデータを格納する。変換前データのデータ数だけのサイクル数が必要であり、さらに専用の比較器が必要である。
【００１３】
さらに、特許文献３では、テーブルメモリの出力ポート数をプロセッサエレメント数だけ用意してテーブル変換を行う。変換速度は最も速いがメモリのポート数が非常に多いためコストが高くなる。プロセッサエレメント数が数１０個までしか実現できないと思われる。
【００１４】
この発明は、上述した従来の問題点を解決するためになされたものにして、非線形処理を効率よく実現することができる並列プロセッサを提供することを課題とする。
【課題を解決するための手段】
【００１５】
この発明にかかる並列プロセッサは、プログラムを解読しプロセッサ全体を制御するグローバルプロセッサと、データを処理するプロセッサエレメントを複数個備えて構成されるプロセッサエレメントブロックと、を有する並列プロセッサにおいて、各プロセッサエレメントは、変換前データを記憶する変換前データ用レジスタと、データバスから送られてくる変換後データを記憶する変換後データ用レジスタと、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データであるかを判別する判別手段と、を備え、前記判別手段は、データバスから送られてくるデータの変換前にあたる変換前算出データを計算によって求め、該変換前算出データが前記変換前データ用レジスタに記憶された前記変換前データと一致すると、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データであると判別し、前記判別手段がデータバスから送られてくるデータが記憶されている変換前データに相当する変換後データであると判別すると、データバスから送られてくる前記変換後データを前記変換後データ用レジスタに記憶させることを特徴とする。
【００１６】
この発明にかかる並列プロセッサは、上記の構成に加え、前記判別手段は、加算器と、加算器の加算結果を記憶するレジスタと、加算結果を記憶するレジスタの内容と変換前データを記憶するレジスタの内容を比較する比較器と、を備え、前記比較器により両レジスタの内容が一致すると、データバスから送られてくる変換後データをレジスタに格納させることを特徴とするものである。
【００１７】
この発明にかかる並列プロセッサは、上記の構成に加え、各プロセッサエレメントの前記変換後データを記憶するレジスタに変換後データを格納する経路に接続される全プロセッサエレメント共有のデータバスを備え、前記データバスに対し変換後データを変換前データの値の順に従って送出する変換後データ送出手段を備えたことを特徴とするものである。
【００１８】
この発明にかかる並列プロセッサは、上記の構成に加え、前記変換後データ送出手段は、命令デコーダと、前記命令デコーダによって入力される任意の変換前データに対応した変換後データを前記データバスに送出する記憶手段と、を備えたことを特徴とするものである。
【００１９】
この発明にかかる並列プロセッサは、上記の構成に加え、前記変換後データ送出手段は、加算器と前記加算器器の加算結果を記憶するレジスタと、前記レジスタによって入力される任意の変換前データに対応した変換後データを前記データバスに送出する記憶手段と、を備えたことを特徴とするものである。
【００２０】
この発明にかかる並列プロセッサは、上記の構成に加え、前記変換後データを記憶するレジスタをｎ（ｎ＝２のべき乗）個持ち、プロセッサ外部から与えられる変換後データを前記変化後データを記憶するレジスタに格納する経路をｎ本それぞれ持つことを特徴とするものである。
【００２１】
この発明にかかる並列プロセッサは、上記の構成に加え、各プロセッサエレメントの前記変換後データを記憶するｎ（ｎ＝２のべき乗）個のレジスタに変換後データを格納する経路に接続される全プロセッサエレメント共有のデータバスをｎ本備え、前記データバスに対し、変換後データを変換前データの値の順に従ってｎ個のデータごとに送出する変換後データ送出手段を備えたことを特徴とするものである。
【００２２】
この発明にかかる並列プロセッサは、上記の構成に加え、前記ｎ（ｎ＝２のべき乗）本のデータバスに対して変換後データを変換前のデータの値の順に従って送出する手段として、命令デコーダと、前記命令デコーダによって入力される任意の変換前データに対応しｎ個の変換後データを前記データバスに送出する記憶手段と、を備えたことを特徴とするものである。
【００２３】
この発明にかかる並列プロセッサは、上記の構成に加え、前記ｎ（ｎ＝２のべき乗）本のデータバスに対して変換後データを変換前のデータの値の順に従って送出する手段として、加算器と前記加算器器の加算結果を記憶するレジスタと、前記レジスタによって入力される任意の変換前データに対応したｎ個の変換後データを前記データバスに送出する記憶手段とを備えたことを特徴とするものである。
【００２４】
この発明に利用される画像処理装置は、複数のプロセッサエレメントがアレイ状に設けられた並列プロセッサにＦＩＦＯを介して画像データが入力され、入力された画像データを並列演算処理し、演算処理された画像データがＦＩＦＯを介して並列プロセッサ外部に出力される画像処理装置であって、前記並列プロセッサの各プロセッサエレメントは、各プロセッサエレメントは、変換前データを記憶するレジスタと、データバスから送られてくる変換後データを記憶するレジスタと、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データか判別する手段と、を備え、前記判別手段の結果に基づき前記変換後データをレジスタに記憶させることにより、非線形演算を行うことを特徴とする。
【００２５】
前記した並列プロセッサとして、上記の構成に記載の並列プロセッサを用いることができる。
【発明の効果】
【００２６】
以上説明したように、この発明の上記の構成によれば、変換テーブルをプロセッサエレメントの内部に持たない方法で、プロセッサエレメントに入力できるデータバスの数が最小の数で、プロセッサエレメントのデータ変換が可能になる。そして、各プロセッサエレメントに変換テーブルを持たずに別の１箇所のみにテーブルをもつことによるコストの低減と、各プロセッサエレメントを結ぶ共通のデータバスの数を最小限に抑えることによるコストの低減と、それらを実現しながら、例えば、データ幅８ビットの場合２５６サイクルでの変換を実現できる。また、データバスを複数にした場合、データバスが２本の場合でも、約半分の１２８＋αサイクルでの変換を実現できる。
【００２７】
この発明の上記の構成によれば、プロセッサエレメントが基本的に備えている加算器（ＡＬＵ）、レジスタを利用できる構成を提供することで、専用ハードウエアの追加を抑制することできる。
【００２８】
また、上記の構成によれば、上記の効果に加え、データバスは、各プロセッサエレメント共通であるため、プロセッサエレメント数がどれだけ増えようとも変換に要する時間が一定で、プログラミングする際は実行時間が読みやすいというメリットがある。また、変換後データをグローバルプロセッサが送出することにより、データバスを即値のデータバスと共有でき、コスト削減できる。
【００２９】
更に、上記の構成によれば、上記の効果に加え、命令デコーダはグローバルプロセッサがもともと必要で備えている機能であり、変換テーブルはシステム全体で最低限１個は必要であることから、ほとんど余分なハードウエアをグローバルプロセッサに追加することなく上記の構成のメリットを実現できる。また、変換テーブルはプロセッサの持つプログラムメモリやデータメモリを利用できるため、さらにコスト削減が可能となる。
【００３０】
また、上記の構成によれば、上記の効果に加え、加算器はグローバルプロセッサが備えている加算器（ＡＬＵ）を使用し、レジスタはグローバルプロセッサが備えている汎用レジスタを使用などで、ほとんど余分なハードウエアをグローバルプロセッサに追加することなく上記のメリットを実現できる。また、変換テーブルはプロセッサの持つプログラムメモリやデータメモリを利用できるため、さらにコスト削減が可能となる。
【００３１】
また、上記の構成によれば、複数のデータバスで実現するにあたりプロセッサエレメントが基本的に備えている加算器（ＡＬＵ）、レジスタを利用できる構成を提供することで、専用ハードウエアの追加を抑制できる。
【００３２】
更に、上記の構成によれば、上記のメリットに加え、データバスは、各プロセッサエレメント共通であるため、プロセッサエレメント数がどれだけ増えようとも変換に要する時間が一定で、プログラミングする際は実行時間が読みやすいというメリットがある。また、変換後データをグローバルプロセッサが送出することにより、データバスを即値のデータバスと共有でき、コスト削減できる。
【００３３】
また、上記の構成によれば、上記の効果に加え、命令デコーダはグローバルプロセッサがもともと必要で備えている機能であり、変換テーブルはシステム全体で最低限１個は必要であることから、ほとんど余分なハードウエアをグローバルプロセッサに追加することなく上記のメリットを実現できる。また、変換テーブルはプロセッサの持つプログラムメモリやデータメモリを利用できるため、さらにコスト削減が可能となる。
【００３４】
上記の構成によれば、上記の効果に加え、加算器はグローバルプロセッサが備えている加算器（ＡＬＵ）を使用し、レジスタはグローバルプロセッサが備えている汎用レジスタを使用などで、ほとんど余分なハードウエアをグローバルプロセッサに追加することな上記のメリットを実現できる。また、変換テーブルはプロセッサの持つプログラムメモリやデータメモリを利用できるため、さらにコスト削減が可能となる。
【発明を実施するための最良の形態】
【００３５】
以下、この発明に係るＳＩＭＤ型プロセッサの実施の形態につき図面を参照して説明する。
【００３６】
まず、この発明にかかるＳＩＭＤ型プロセッサの全体構成について、図１に従い説明する。
【００３７】
この発明のＳＩＭＤ型プロセッサ１は、図１に示すように、グローバルプロセッサ２、本実施形態では２５６組の後述するプロセッサエレメント３ａからなるプロセッサエレメントブロック３と、インターフェース４から構成される。プロセッサエレメント３ａは、複数のレジスタファイル群とこれらレジスタファイル群に格納されたデータを演算する演算部を有する。インタフェース４はグローバルプロセッサ２の命令に基づき、イメージスキャナなどの外部入力部から演算対象となるデータを各プロセッサエレメント３ａのレジスタフィルに与えるとともに、演算処理されたデータをレジスタファイルからプリンタなどの外部出力部へ転送するものである。
【００３８】
この外部入出力装置は、デジタル画像データなどの演算データを入出力するものである。外部入力装置としては、イメージスキャナや画像が格納された画像メモリがあり、外部出力装置としては画像データを印字するプリンタ、データを格納する画像メモリなどがある。
【００３９】
グローバルプロセッサ２は、いわゆるＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｓｉｎｇｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）タイプのプロセッサであり、プログラムＲＡＭとデータＲＡＭを内蔵し、プログラムを解読し、各種制御信号を生成する。この制御信号は内蔵する各種ブロックの制御以外にもプロセッサエレメント３ａ…に供給される。また、ＧＰ（グローバルプロセッサ）命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）等を使用して各種演算処理、プログラム制御処理を行う。
【００４０】
プロセッサエレメント３ａのレジスタファイルはＰＥ（プロセッサエレメント）命令で処理されるデータを保持している。このＰＥ命令はＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）タイプの命令であり、各プロセッサエレメント３ａに同時に同じ処理を行う。各プロセッサエレメント３ａ…からのデータの読み出し／書き込みの制御はグローバルプロセッサ２からの制御によって行われる。
【００４１】
各プロセッサエレメント３ａ…の演算部にてＰＥ命令の演算処理が行われる。この処理の制御はすべてグローバルプロセッサ２から行われる。
【００４２】
次に、図２を参照して、ＳＩＭＤ型プロセッサ１のプロセッサエレメント３ａへのデータの読み出し／書き込みの一例につき説明する。
【００４３】
このグロバールプロセッサ２にはこのプロセッサのプログラム格納用のプログラムＲＡＭ２１と演算データ格納用のデータＲＡＭ２４が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ３レジスタ、レジスタ退避、復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）、同じくＩＲＱ時とＮＭＩ時の分岐元アドレスを保持するＬＩ、ＬＮレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）のレジスタ群２５が内蔵されている。さらに、グローバルプロセッサ２は、プログラムＲＡＭ２１に基づきグローバルプロセッサ２、プロセッサエレメントブロック３、インタフェース４を制御するシーケンスユニット２２を備える。
【００４４】
また、グローバルプロセッサ２は、これらのレジスタ群２５と図示していない命令デコーダ、算術論理演算器２３（以下、「ＡＬＵ２３」という。）、図示していないメモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、ＧＰ演算制御回路を使用してＧＰ命令の実行が行われる。
【００４５】
また、ＰＥ命令実行時は命令デコーダ、図示していないレジスタファイル制御回路、ＰＥ演算制御回路を使用して、各プロセッサエレメント３ａ…の制御を行う。
【００４６】
また、この実施形態では、後述するように、グローバルプロセッサ２の命令に従いテーブルＲＡＭから複数のプロセッサエレメント３ａにデータが転送可能に構成されている。
【００４７】
上記したように、シーケンスユニット２２は、プロセッサエレメントブロック３を構成する各プロセッサエレメント３ａ…レジスタファイル３１及び演算部３６を制御する。
【００４８】
この演算部３６は、マルチプレクサ３２、シフト拡張回路３３、算術論理演算器３４（以下、「ＡＬＵ３４」という）、及びＡレジスタ３５ａ及びＦレジスタ３５ｂを備える。なお、この図２には記載していないが、この実施形態においては、後述するように、テーブル変換後のデータを取得するための変換後データ取得手段を備える。
【００４９】
さらに、このシーケンスユニット２２は、インタフェース４に対してデータ転送のための動作設定用データ及びコマンド等を送る。インタフェース４は、シーケンスユニット２２の動作設定用データ及びコマンドに基づき、プロセッサエレメント３ａのアドレス指定のためのアドレス制御信号、プロセッサエレメント３ａを構成するレジスタ３１ｂにデータのリード／ライトを指示するためのリード／ライト制御信号、クロック信号を与えるためのクロック制御信号を生成する。
【００５０】
ここで、リード／ライト制御信号のうちライト制御信号とは、演算処理されるデータをデータバス４１ｄより取得して、プロセッサエレメント３ａのレジスタ３１ｂに保持させるための信号をいう。一方、リード／ライト制御信号のうちリード制御信号とは、プロセッサエレメント３ａのレジスタ３１ｂが保持している演算処理されたデータを、データバス４１ｄへ与えるようレジスタ３１ｂに指示するための信号をいう。
【００５１】
インタフェース４は、グローバルプロセッサ２からのコマンドを受けて、プロセッサエレメントブロック３を構成するプロセッサエレメント３ａのアドレスを指定する信号（以下、「アドレス指定信号」という。）を作成し、アドレスバス４１ａを介してプロセッサエレメント３ａのレジスタコントローラ３１ａヘ送る。また、インタフェース４は、後述するように、プロセッサエレメント３ａを構成するレジスタ３１ｂに対して、データのリード／ライトを指示するための信号（以下、「リード／ライト指示信号」という。）を、リード／ライト信号線４１ｂを介してプロセッサエレメント３ａの後述するレジスタコントローラ３１ａヘリード／ライト信号が与えられる。
【００５２】
また、インタフェース４は、クロック信号線４１ｃを介してプロセッサエレメント３ａの後述するレジスタコントローラ３１ａへクロック信号を与える。
【００５３】
さらに、外部入出力データバスからは、上述したように、ＳＩＭＤ型プロセッサ１の外部に設けられたイメージスキャナ等で読み込んだデータを、本実施形態では８ビットのパラレルデータとして、インタフェース４に与える。この８ビットのデータは、データバス４１ｄに与えられる。この８ビットのパラレルデータについては、データに応じて適宜変更しても問題ない。このデータバス４１ｄは、レジスタ３１ｂに保持されている演算処理されたデータが、ＳＩＭＤ型プロセッサ１の外部に転送される時にも使用される。
【００５４】
また、レジスタ群２５は、プロセッサエレメントブロック３の後述するレジスタ３５に接続されており、このレジスタ３５との間でシーケンスユニット２２の制御によりデータの交換が行われる。
【００５５】
プロセッサエレメントブロック３は、図２に示すように、レジスタファイル３１、マルチプレクサ３２、シフト・拡張回路３３、算術論理演算器３４（以下、「ＡＬＵ３４」という。）、レジスタ３５ａ、３５ｂを一単位とする複数のプロセッサエレメント３ａを備える。レジスタファイル３１には、１つのプロセッサエレメント３ａ単位に８ビットのレジスタが３２本内蔵されており、本実施形態では２５６のプロセッサエレメント分の組がアレイ構成になっている。レジスタファイル３１は１つのプロセッサエレメント（ＰＥ）３ａごとにＲ０、Ｒ１、Ｒ２．．．Ｒ３１と呼ばれているレジスタが内蔵されている。それぞれのレジスタファイル３１は演算部３６に対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバスで演算部３６からアクセスされる。３２本のレジスタの内、２４本はプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード／ライト制御を入力することで任意のレジスタを読み書きできる。
【００５６】
レジスタの外部からのアクセスは１つの外部ポートで各プロセッサエレメント３ａの１つのレジスタがアクセス可能であり、外部から入力されたアドレスでプロセッサエレメントの番号（０〜２５５）を指定する。したがって、レジスタアクセスの外部ポートは全部で２４組搭載されている。
【００５７】
本実施形態では、プロセッサエレメント３ａの数を２５６個として説明するが、これに限定されるものでなく適宜変更して使用してもよい。このプロセッサエレメント３ａには、グローバルプロセッサ２のシーケンスユニット２２により、インタフェース４に近い順に０から２５５までのアドレスが割り付けられる。
【００５８】
プロセッサエレメント３ａのレジスタファイル３１は、レジスタコントローラ３１ａ、２種類のレジスタ３１ｂ、３１ｃを備える。本実施形態では、図２に示すように、一単位のプロセッサエレメント３ａ毎に、レジスタコントローラ３１ａとレジスタ３１ｂとを２４組備え、さらにレジスタ３１ｃを８個備えている。図２中の１プロセッサエレメントとは１つのプロセッサエレメント３ａを表している。ここで、本実施形態では、レジスタ３１ｂ、３１ｃを８ビットのものとして扱うが、これに限定されるものでなく適宜変更して使用してもよい。
【００５９】
レジスタコントローラ３１ａは、図２に示すように、インタフェース４と、上述したアドレスバス４１ａ、リード／ライト信号線４１ｂ、クロック信号線４１ｃを介して接続されている。
【００６０】
インタフェース４は、グローバルプロセッサ２からデータ転送指示を受け取ると、アドレス指定信号をアドレスバス４１ａを介してプロセッサエレメントブロック３ヘ送る。これにより、プロセッサエレメント３ａがアドレス指定される。レジスタコントローラ３１ａは、送られてきたアドレス指定信号をデコードし、デコードしたアドレスと、自己に割り付けられたアドレスとが一致する場合には、クロック信号４１ｃを介して送られてきたクロック信号に同期して、リード／ライト信号４１ｂから送られてきたリード／ライト指示信号を得る。具体的には、レジスタコントローラ３１ａは、リード／ライト信号４１ｂを介してリード／ライト指示信号を得る。そして、このリード／ライト指示信号はレジスタ３１ｂに与えられる。
【００６１】
レジスタコントローラ３１ａからプロセッサエレメント３ａに対し、ライト指示信号が送られてきた場合には、プロセッサエレメント３ａのレジスタ３１ｂは、演算処理されるデータ（８ビット）をデータバス４１ｄより取得して保持する。また、レジスタコントローラ３１ａからプロセッサエレメント３ａに対し、リード指示信号が送られてきた場合には、プロセッサエレメント３ａのレジスタ３１ｂは、演算処理されたデータ（８ビット）をデータバス４１ｄへ送る。
【００６２】
レジスタ３１ｂは、後述するＡＬＵ３４でこれから演算される外部から入力されたデータを保持したり、或いはＡＬＵ３４で演算処理されたデータを外部へ出力するために保持するものであり、いわゆる入力レジスタとしても、或いは出力レジスタとしても機能する。また、演算処理されるデータ、或いは演算されたデータを一時的に保持するといった、後述するレジスタ３１ｃとしての機能も有する。なお、本実施形態では、レジスタ３１ｂは８ビットのデータを保持できるものとして扱うが、データに応じて適宜変更しても問題ない。上述したレジスタコントローラ３１ａからライト指示信号が与えられると、レジスタ３１ｂは演算処理されるデータをデータバス４１ｄより取得して保持する。一方、レジスタコントローラ３１ａからリード指示信号が送られてくると、レジスタ３１ｂは保持している演算処理されたデータをデータバス４１ｄへ与える。このデータはインタフェース４から外部データバスを介して外部のプリンタなどへ転送される。
【００６３】
また、レジスタ３１ｂは、本実施形態においては８ビットデータをパラレルで転送するデータバス３７を介してマルチプレクサ３２に接続されている。ＡＬＵ３４で演算処理されるデータ、或いはＡＬＵ３４で演算処理されたデータは、このデータバス３７を介して、レジスタ３１ｂとの間で転送される。この転送は、グローバルプロセッサ２のシーケンスユニット２２からの指示によって、グローバルプロセッサ２に接続されたリード信号線２６ａ、ライト信号線２６ｂを介して行われる。具体的には、グローバルプロセッサ２のシーケンスユニット２２から、リード信号線２６ａを介してリード指示信号が送られてくると、レジスタ３１ｂは保持している演算処理されるデータをデータバスへ置く。このデータはＡＬＵ３４へ送られ演算処理される。一方、グローバルプロセッサ２のシーケンスユニット２２から、ライト信号線２６ｂを介してライト指示信号が送られてくると、レジスタ３１ｂはデータバス３７を介して送られてきたＡＬＵ３４で演算処理されたデータを保持する。
【００６４】
レジスタ３１ｃは、レジスタ３１ｂより与えられた演算処理されるデータ、或いは演算されたデータがレジスタ３１ｂに与えられる前に、そのデータを一時的に保持するものである。さらに、この実施の形態においては、レジスタ３１ｃは後述するように、グローバルプロセッサ２からのデータが与えられる。
【００６５】
演算部３６は、マルチプレクサ３２、シフト／拡張回路３３、１６ビットＡＬＵ３４及び１６ビットのレジスタ３５ａ、３５ｂを備えている。このレジスタは、１６ビットのＡレジスタ３５ａ、Ｆレジスタ３５ｂである。
【００６６】
プロセッサエレメント３ａの命令による演算は、基本的にレジスタファイル３１から読み出されたデータをＡＬＵ３４の片側の入力としてもう片側にはレジスタ３５のＡレジスタの内容を入力として結果をＡレジスタに格納する。したがって、Ａレジスタ３５ａとレジスタファイル３１のＲ０〜Ｒ３１レジスタとの演算が行われることとなる。この実施形態においては、レジスタファイル３１と演算アレイ３６との接続に（７ｔｏ１）のマルチプレクサ３２を置いており、プロセッサエレメント方向で左に１、２、３つ離れたデータと右に１、２、３つ離れたデータ、中央のデータを演算対象として選択している。また、レジスタファイル３１の８ビットのデータはシフト／拡張回路３３により任意ビットの左シフトしてＡＬＵ３４に入力される。
【００６７】
上記したように、マルチプレクサ３２は、自己のプロセッサエレメント３ａに備えられた上記データバス３７に接続されるとともに、両隣３つのプロセッサエレメント３ａに備えられたデータバス３７にも接続されている。このマルチプレクサ３２は７つのプロセッサエレメント３ａから１つを選択し、その選択したプロセッサエレメント３ａにおけるレジスタ３１ｂ、３１ｃで保持されているデータをＡＬＵ３４へ送る。或いはＡＬＵ３４で演算処理されたデータを、選択したプロセッサエレメント３ａにおけるレジスタ３１ｂ、３１ｃへ送る。これによって、隣のプロセッサエレメント３ａにおけるレジスタ３１ｂ、３１ｃで保持されているデータを利用した演算処理が可能になり、ＳＩＭＤ型プロセッサ１の演算処理能力を高めることができる。
【００６８】
シフト／拡張回路３３は、マルチプレクサ３２から送られてきたデータを所定ビットシフトしてＡＬＵ３４へ送る。或いはＡＬＵ３４から送られてきた演算処理されたデータを所定ビットシフトしてマルチプレクサ３２へ送る。
【００６９】
ＡＬＵ３４は、シフト／拡張回路３３から送られてきたデータと、レジスタ３５に保持されているデータとに基づき算術論理演算を行う。なお、本実施形態では、ＡＬＵ３４は１６ビットのデータに対応できるものとして扱うが、データに応じて適宜変更しても問題ない。演算処理されたデータは、Ａレジスタ３５ａに保持され、シフト／拡張回路３３へ転送したり、或いはグローバルプロセッサ２の汎用レジスタ２５へ転送される。
【００７０】
グローバルプロセッサ２からインタフェース４へはＩ／Ｏ用のアドレス、データ、コントロール信号がバスを介して与えられる。
【００７１】
上記したように、この実施形態においては、レジスタファイル３１には１つのプロセッサエレメント３ａ単位に８ビットのレジスタが３２本内蔵されており、２５６プロセッサエレメント分の組みがアレイ構成になっている。レジスタはプロセッサエレメントごとにＲ０、Ｒ１、Ｒ２．．．Ｒ３１と呼ばれている。それぞれのレジスタは演算部３６に対して１つの読み出ししポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバス３７で演算アレイからアクセスされる。３２本のレジスタの内、２４本（Ｒ０〜Ｒ２３）のレジスタ３１ｂは、プロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード／ライト制御を入力することで任意のレジスタを読み書きできる。
【００７２】
残りの８本（Ｒ２４〜Ｒ３１）のレジスタ３１ｃはプロセッサエレメント演算の一時的な演算データ保存用として使用されるが、グローバルプロセッサ２のデータＲＡＭ２４からのデータを書き込むこともできる。グローバルプロセッサ２からのライト制御と演算部３６変換後データ取得手段により、レジスタファイル３１に内蔵される８本のレジスタ３１ｃにグローバルプロセッサ２のデータＲＡＭ２４のデータの書き込みが可能に構成されている。また、この実施形態では、データＲＡＭ２４にテーブル変換用データが格納されテーブルＲＡＭとして使用できる。例えば、このＲＡＭは６４ビットの出力ポートを持つことで、１つのプロセッサエレメント３ａに対しても８本のレジスタ３１ｃに同時に６４ビットの書き込みが可能に構成される。
【００７３】
上述したように、演算部３６は１６ビットＡＬＵ３４と１６ビットＡレジスタ３５ａ、Ｆレジスタ３５ｂを内蔵している。ＰＥ命令による演算はレジスタファイル３１から読み出されたデータもしくはグローバルプロセッサ２から与えられたデータをＡＬＵ３４の片側の入力としてもう片側にはＡレジスタ３５ａの内容を入力として結果をＡレジスタに格納する。したがって、Ａレジスタ３５ａとＲ０〜Ｒ３１レジスタ３１ｂ、３１ｃもしくはグローバルプロセッサ２から与えられたデータとの演算が行われることとなる。
【００７４】
次に、この発明の特徴であるグローバルプロセッサ２の命令に従いテーブルＲＡＭのデータをプロセッサエレメント３ａに書き込む態様につき参照して説明する。
【００７５】
レジスタファイル３１の中のレジスタ３１ｃはグローバルプロセッサ２のレジスタファイル制御回路を介して、テーブルＲＡＭのデータが入力される。テーブルＲＡＭは、非線形変換処理のためのデータメモリとして用いる。このテーブルＲＡＭからレジスタ３１ｃへの書き込みは後述する変換後データ取得手段により行われる。レジスタ３１ｃにはライトコントロール回路（図示しない）が設けられており、このライトコントロール回路に変換後データ取得手段からライト制御信号が与えられる。全てのプロセッサエレメント３ａのレジスタ３１ｃにテーブルデータバス４１を介してからテーブルＲＡＭ２６のデータを与え、変換後データ取得手段からライト制御信号が与えられている各プロセッサエレメント３ａのレジスタ３１ｃにデータが書き込まれる。
【００７６】
なお、レジスタ３１ｃは演算アレイ３６ともデータバス３７を介してデータの転送を行うため、もう一方の出力ポートを持ち、命令によりグローバルプロセッサ２で作成されたリード制御信号によりデータからデータの転送が行われる。
【００７７】
また、テーブルＲＡＭは例えば、グローバルプロセッサ２の汎用レジスタ（Ｇ０〜Ｇ３）をアドレスのポインタとしてアドレスが指定され、同様に汎用レジスタ（Ｇ０〜Ｇ３）のデータを書き込まれることで値が設定される。
【００７８】
次に、図２に示す実施の形態において非線形処理のためのテーブル変換について説明する。なお、演算対象データはレジスタファイル３１のレジスタ３１ｂのうちレジスタＲ０に格納されているものとして説明する。以下、この発明の動作の理解を容易にするために、１つのレジスタに変換前データが格納され、１つのレジスタに変換後データを格納する場合につきその要部を示す図面を用いて説明する。
【００７９】
図３は、図２で示されるようなＳＩＭＤプロセッサのうちの１個のプロセッサエレメント３ａと同様に構成されたプロセッサエレメント（ＰＥ）１００だけを示している。データバス４１は、各プロセッサエレメント１００…間を跨って配置されているデータ幅のバスである。例えば、８ビットのデータを扱う場合は８ビットのバスである。以下では、データ幅を８ビットであるとして説明する。レジスタ１０２は、８ビットの変換前データの格納用レジスタであり、レジスタ１０１は、８ビットの変換後データのレジスタである。レジスタ１０１，１０２は上記したレジスタファイル３１の中のレジスタで構成される。少なくともレジスタ１０１は、データバス４１から値を入力する経路を持つ。
【００８０】
図示していないレジスタファイル３１のレジスタ（Ｒ０）に格納された演算（演算前）対象データを各プロセッサエレメント１００のデータバス３７を介してレジスタ１０２にロードする。
【００８１】
変換後データ取得回路１０６は、レジスタ１０２の内容を参照して、レジスタ１０１へデータバス４１からデータを取得するか否か判断し、データバス４１に与えられているデータがレジスタ１０２に格納されている変換前データに対応する変換後データと一致する時に、そのデータをレジスタ１０１に格納させるものである。
【００８２】
なお、以下の説明では、変換前データ、変換後データともに８ビットのデータ幅であると仮定する。
【００８３】
図３で示されるプロセッサエレメント１００においては、レジスタ１０２に記憶されている変換前データを変換し、変換後データとしてレジスタ１０１に格納するものである。データバス４１上に、変換前データが“００Ｈ”の時の変換後データ、変換前データが“０１Ｈ”の時の変換後データ、変換前データが“０２Ｈ”の時の変換後データ、…、変換前データが“ＦＦＨ”の時の変換後データという順で２５６通りのデータが存在するとき、プロセッサエレメント１００…では変換後データ取得回路１０６がデータバス４１上の変換後データの変換前にあたる変換前データ（変換前算出データ）を計算によって求め、計算によって求められた変換前データが、レジスタ１０２の内容と一致したとき、所望の変換後データがデータバス４１２上にあることを知ることができる。そのタイミングでレジスタ１０１に入力されたデータは、レジスタ１０２を変換前データとしたときの変換後データとなる。このような変換後データ取得回路１０６につき図４を参照して説明する。
【００８４】
次に、上記した変換後データ取得回路１０６につき、図４のブロック図に従いさらに説明する。変換後データ取得回路１０６は、加算器１０５と、加算器１０５から演算結果を格納する８ビットのレジスタ１０３と、変換前データの格納レジスタ１０２と、レジスタ１０２とのデータを比較する比較器１０４と、を備える。比較器１０４からの出力により、レジスタ１０１にデータバス４１に与えられている変換後データが格納される。この加算器１０４は、プロセッサエレメントの演算部に備えている加算器（ＡＬＵ）を用い、レジスタ１０３もプロセッサエレメント内の演算部に設けられているレジスタ等を用いればよい。
【００８５】
加算器１０５は、２個のデータを入力し、１個の出力を得る。演算幅は８ビットである。２個の入力のうち１個は固定値“１”または“−１”とする。他方の入力にはレジスタ１０３の内容が入力可能となっている。レジスタ１０３は、加算器１０５の演算結果を記憶する８ビットのレジスタであり、その内容は加算器１０５の入力データとなるほかに比較器１０４へ出力される。比較器１０４は、レジスタ１０３とレジスタ１０２の内容を比較する。２つの入力データが一致した場合、比較器１０４はレジスタ１０１にデータ入力の指示が出される。
【００８６】
図４に示すプロセッサエレメント１００においては、レジスタ１０２に記憶されている変換前データを変換し、変換後データとしてレジスタ１０１に格納するものである。この図４に示す変換後データ取得回路１０６の加算器１０５は、２個のデータの加算を可能とするが、一方の入力データを固定値“１”とし、他方の入力データを前サイクルの加算結果、すなわちレジスタ１０３に記憶されている値としている。このように構成すれば、今サイクルの加算結果は、“前回の加算結果＋１”となる。加算器１０５の加算結果は、レジスタ１０３に毎サイクル記憶されるため、レジスタ１０３の記憶する値は、１サイクルにつき”１”上昇する。比較器１０４は、レジスタ１０２の８ビットデータとレジスタ１０３の８ビットデータを比較し、一致した場合、レジスタ１０１に一致信号を送くる。
【００８７】
レジスタ１０１は、この一致信号を受けとると、データバス４１上の８ビットデータを格納する。変換後データは、変換前データの昇べきの順にデータバス２上に存在するものとしたとき、レジスタ１０３の値とデータバス４１上のデータは、変換前データと変換後データであるという関係が保たれる。すなわち、データバス４１上には、変換前データが“００Ｈ”の時の変換後データ、変換前データが“０１Ｈ”の時の変換後データ、変換前データが“０２Ｈ”の時の変換後データ、…、変換前データが“ＦＦＨ”の時の変換後データというように２５６通りのデータが存在し、プロセッサエレメント１００には変換前データがどんな値であっても、必ず対応するべき変換後データがデータバス４１上に存在するサイクルがある。
【００８８】
プロセッサエレメント１００としては、レジスタ１０２に記憶されている変換前データの値がレジスタ１０３と一致しているタイミングで、変換後データがデータバス２上にあることを知ることができ、比較器１０４の一致信号のタイミングでレジスタ１０１に入力されたデータは、レジスタ１０２を変換前データとしたときの変換後データとなる。
【００８９】
図５は、図４で示されるプロセッサエレメント１００で構成されたＳＩＭＤプロセッサである。プロセッサエレメント１００、２００、３００は図４のプロセッサエレメント１００と同じ構成のプロセッサエレメントである。
【００９０】
この図５においては、３つのプロセッサエレメントだが、４個目以降のプロセッサエレメントは省略している。
【００９１】
データバス４１は、すべてのプロセッサエレメント１００…に共通のバスであり、すべてのプロセッサエレメント１００…に変換後データのレジスタ１０１にデータ入力する経路を有している。
【００９２】
プロセッサエレメント１００…を制御するこの実施形態のグローバルプロセッサ２は、変換後データ送出装置２０ａを備える。変換後データ送出装置２０ａは、データバス４１にデータを送出する経路を持つ。
【００９３】
グロバールプロセッサ２は変換後データをデータバス４１を介して全プロセッサエレメント１００…に与える。各プロセッサエレメント１００…は変換後データ取得回路１０６の比較器１０４が一致信号を出力するタイミングでレジスタ１０１に変換後データを格納する。
【００９４】
図６は、図５で示されるＳＩＭＤプロセッサと基本的には同じ構成である。相違する点は、図５では、グローバルプロセッサ２が変換後データを送出する部分が変換後データ送出装置２０ａとなっているのに対して、図６では変換テーブル２０ｂと命令デコーダ２０ｃという構成になっている。変換テーブル２０ｂは、入力として命令デコーダ２０ｃからデータを受け取り、データバス４１へデータを出力する。
【００９５】
図７は、図５で示されるＳＩＭＤプロセッサと基本的には同じ構成である。相違する点は、図５では変換前データ送出装置２０ａとなっている部分が、図７では変換テーブル２０ｂと加算器２０ｅとレジスタ２０ｄという構成になっている。
【００９６】
加算器２０ｅとレジスタ２０ｄは、アドレス発生回路を構成するもので、加算器２０ｅは、２個のデータを入力し、１個の出力を得る。演算幅は８ビットである。２個の入力のうち１個は固定値“１”または“−１”とすることが可能である。また、他方の入力にはレジスタ２０ｄの内容が入力可能となっている。この加算器２０ｅは、グローバルプロセッサに備えている加算器（ＡＬＵ）を用い、レジスタ２０ｄも内部に設けられているレジスタ等を用いればよい。
【００９７】
レジスタ２０ｄは、加算器２０ｅの演算結果を記憶する８ビットのレジスタであり、その内容は加算器２０ｅの入力データとなるほかに変換テーブルＲＡＭ２０ｂの入力となる。変換テーブル２０ｂは、入力としてレジスタ２０ｄのデータを受け取り、データバス４１へ対応するアドレスのデータを出力する。
【００９８】
図５、図６および図７で示した上記実施形態では、図４で説明したプロセッサエレメント１００を用いているので、図５、図６および図７の動作の説明においては、プロセッサエレメント１００、２００および３００の動作説明は省略する。
【００９９】
図５の実施形態では、プロセッサエレメント１００、２００および３００は、同一のデータバス４１に接続されている。グローバルプロセッサ２には、変換後データ送出装置２０ａがあり、変換後データを、変換前データの昇べきの順あるいは降べきの順にデータバス４１上に出力する。これにより、プロセッサエレメント１００、２００および３００は上記説明の通り動作することで、各プロセッサエレメントにおいてデータの変換という所望の動作を行うことができる。プロセッサエレメント１００、プロセッサエレメント２００およびプロセッサエレメント３００では、データバス４１を共通のものとしていることと、各プロセッサエレメントは独立して動作することから、プロセッサエレメントの数は図示している数より多くても、上記動作はまったく同じである。したがって、プロセッサエレメント数が多ければ多いほど変換するデータが多く、効率が良いことになる。
【０１００】
図６の実施形態では、図５で示された変換前データ送出装置２０ａを、変換テーブル２０ｂと命令デコーダ２０ｃで置き換えている。命令デコーダ２０ｃは、このＳＩＭＤプロセッサが持つ命令をデコードする部分である。ＳＩＭＤプロセッサの命令として、変換テーブル２０ｂに制御信号を入力するが、その命令コードの並び方、すなわちプログラムによって、データバス４１上には、変換前データが“００Ｈ”の時の変換後データ、変換前データが“０１Ｈ”の時の変換後データ、変換前データが“０２Ｈ”の時の変換後データ、…、変換前データが“ＦＦＨ”の時の変換後データというように変換前データの昇べきの順に２５６通りのデータが出力するように制御される。仮に、変換前データ“００Ｈ”を変換した変換後データをデータバス４１に出力する命令を、table #00h  というコードで表現するならば、図１２に示すプログラムによって昇べきの順にデータバス４１に変換後データを出力できる。図１３のプログラムであれば、降べきの順を実現できる。
【０１０１】
命令デコーダ２０ｃで、生成された制御信号は、変換テーブル２０ｂで変換後データに変換され、データバス４１に出力される。変換テーブル２０ｂは、ＲＡＭやＲＯＭのような記憶装置として構成しても構わない。たとえば、命令デコーダ２０ｃから入力される制御信号をアドレス入力とすれば、データ出力が丁度変換後データに相当する。さらに付け加えるならば、アドレス入力は変換前データそのものであっても構わない。この場合は、アドレス８ビット（２５６ワード）、データ８ビットのメモリに相当し、アドレス８ビットが変換前データの８ビットである。また、図６では変換テーブル２０ｂをグローバルプロセッサ２に内蔵するようになっているが、変換テーブル４をＲＡＭやＲＯＭで構成する場合、グローバルプロセッサ２の外に設けても構わない。すなわち、通常のＳＩＭＤプロセッサが動作するために必要であるプログラムメモリや、データメモリの一部として変換テーブル２０ｂが存在しても構わない。
【０１０２】
図７に示す実施形態では、図６で示したものと同様の変換テーブル２０ｂを備えているため、変換テーブル２０ｂの説明は省略する。図７の実施形態では、命令デコーダやプログラムによらず、変換前データの昇べきの順あるいは降べきの順を実現する。図７の例では各プロセッサエレメントと同様の加算器２０ｅと加算結果を記憶するレジスタ２０ｄを備え、加算器２０ｅで“１”または“−１”の加算を行なうことで、レジスタ２０ｄの内容を毎サイクル“＋１”または“−１”の値に変更できる。すなわち、これは変換前データの昇べきの順あるいは降べきの順に相当し、このデータを入力される変換テーブル２０ｂで変換後データに変換されデータバス４１に出力される。
【０１０３】
次に、この発明の更に異なる実施形態のプロセッサエレメント１００の構成につき図８に従い説明する。
【０１０４】
図８のプロセッサエレメント１００は、図1で示されるようなＳＩＭＤプロセッサのうちの１個のプロセッサエレメント１００だけを示している。この実施形態においては、２つのデータバス４１Ａ、４１Ｂを有する。データバス４１Ａとデータバス４１Ｂは、各プロセッサエレメント間を跨って配置されているデータ幅のバスである。ここでは、データバス幅を８ビットであるとして説明する。
【０１０５】
レジスタ１０２は、８ビットの変換前データの格納用レジスタであり、レジスタ１０１Ａとレジスタ１０１Ｂは、８ビットの変換後データのレジスタである。少なくとも、レジスタ１０１Ａには、データバス４１Ａから値を入力する経路を持ち、レジスタ１０１Ｂはデータバス４１Ｂから値を入力する経路を持つ。
【０１０６】
加算器１０５は、２個のデータを入力し、１個の出力を得る。演算幅は８ビットである。２個の入力のうち１個は固定値“２”または“−２”とすることが可能である。他方の入力にはレジスタ１０３の内容が入力可能となっている。レジスタ１０３は、加算器１０５の演算結果を記憶する８ビットのレジスタであり、その内容は加算器１０５の入力データとなるほかに比較器１０４の入力となる。比較器１０４は、レジスタ１０３とレジスタ１０２の内容を比較する。２つの入力データが一致した場合、比較器１０４はレジスタ１０１Ａとレジスタ１０１Ｂにデータ入力の指示を出す。
【０１０７】
図８で示されるプロセッサエレメント１００においては、レジスタ１０２に記憶されている変換前データを変換し、変換後データとしてレジスタ１０１Ａまたはレジスタ１０１Ｂに格納するものである。
【０１０８】
加算器１０５は、２個のデータの加算を可能とするが、一方の入力データを固定値“２”とし、他方の入力データを前サイクルの加算結果、すなわちレジスタ１０３に記憶されている値とする。このように構成すれば、今サイクルの加算結果は、“前回の加算結果＋２”となる。加算器１０５の加算結果は、レジスタ１０３に毎サイクル記憶するため、レジスタ１０３の記憶する値は、１サイクルにつき２上昇する。比較器１０４は、レジスタ１０２の下位１ビットを除くデータとレジスタ１０３の下位１ビットを除くデータを比較し、一致した場合、レジスタ１０１Ａとレジスタ１０１Ｂに一致信号を送る。
【０１０９】
レジスタ１０１Ａとレジスタ１０１Ｂは、この一致信号を受けると、データバス４１Ａ上とデータバス４１Ｂ上の８ビットデータをそれぞれ格納する。変換後データは、下位１ビットを除く変換前データの昇べきの順にデータバス４１Ａとデータバス４１Ｂ上に存在するものとし、データバス４１Ａ上には変換前データの下位１ビットが“０”のときの変換後データとし、データバス４１Ｂ上には変換前データの下位１ビットが“１”のときの変換後データとする。このように構成したとき、レジスタ１０３の値とデータバス４１Ａまたはデータバス４１Ｂ上のデータは、変換前データと変換後データであるという関係が保たれる。すなわち、データバス４１Ａ上には、変換前データが“００Ｈ”の時の変換後データ、変換前データが“０２Ｈ”の時の変換後データ、変換前データが“０４Ｈ”の時の変換後データ、…、変換前データが“ＦＥＨ”の時の変換後データというように１２８通りのデータが存在し、データバス４１Ｂ上には、変換前データが“０１Ｈ”の時の変換後データ、変換前データが“０３Ｈ”の時の変換後データ、変換前データが“０５Ｈ”の時の変換後データ、…、変換前データが“ＦＦＨ”の時の変換後データというように１２８通りのデータが存在し、プロセッサエレメント１００では変換前データがどんな値であっても、必ず対応するべき変換後データがデータバス４１Ａまたはデータバス４１Ｂ上に存在するサイクルがある。
【０１１０】
プロセッサエレメント１００としては、レジスタ１０２に記憶されている変換前データの下位１ビットを除く値がレジスタ１０３の下位１ビットを除く値と一致しているタイミングで、変換後データがデータバス４１Ａ上とデータバス４１Ｂ上にあることを知ることができ、比較器１０４の一致信号のタイミングでレジスタ１０１Ａとレジスタ１０１Ｂに入力されたデータは、レジスタ１０２を変換前データとしたときの変換後データとなる。
【０１１１】
図９は、図８で示されるプロセッサエレメント１００で構成されたＳＩＭＤプロセッサである。プロセッサエレメント１００、プロセッサエレメント２００、プロセッサエレメント３００は図８と同じ構成のプロセッサエレメントである。図９では３つのプロセッサエレメントを示しているが、４個目以降のプロセッサエレメントは省略している。
【０１１２】
データバス４１Ａとデータバス４２Ｂは、すべてのプロセッサエレメントに共通のバスであり、それぞれがすべてのプロセッサエレメントの変換後データのレジスタ１０１Ａおよびレジスタ１０１Ｂにデータ入力する経路を持つ。
【０１１３】
プロセッサエレメント１００…を制御するこの実施形態のグローバルプロセッサ２は、変換後データ送出装置２０ａを備える。変換後データ送出装置２０ａは、データバス４１Ａおよびデータバス４１Ｂにデータを送出する経路を持つ。各プロセッサエレメント１００…は変換後データ取得回路１０６の比較器１０４が一致信号を出力するタイミングでレジスタ１０１Ａよびレジスタ１０１Ｂに変換後データを格納する。
【０１１４】
図１０は、図９で示されるＳＩＭＤプロセッサと基本的には同じ構成である。相違する点は、図９では、グローバルプロセッサ２が変換後データを送出する部分が変換後データ送出装置２０ａとなっているのに対して、図１０では変換テーブル２０ｂと命令デコーダ２０ｃという構成になっている。
【０１１５】
変換テーブル４は、入力として命令デコーダ２０ｃからデータを受け取り、データバス４１Ａおよびデータバス４１Ｂへデータを出力する。
【０１１６】
図１１は、図９で示されるＳＩＭＤプロセッサと基本的には同じ構成である。相違する点は、図９では変換前データ送出装置２０ａとなっている部分が、図１１では変換テーブル２０ｂと加算器２０ｅとレジスタ２０ｄという構成になっている。
【０１１７】
加算器２０ｅとレジスタ２０ｄは、アドレス発生回路を構成するもので、２個のデータを入力し、１個の出力を得る。演算幅は８ビットである。２個の入力のうち１個は固定値“２”または“−２”とすることが可能である。他方の入力にはレジスタ６の内容が入力可能となっている。レジスタ２０ｄは、加算器２０ｅの演算結果を記憶する８ビットのレジスタであり、その内容は加算器７の入力データとなるほかに変換テーブル２０ｂの入力となる。変換テーブル２０ｂは、入力としてレジスタ２０ｄのデータを受け取り、データバス４１Ａおよびデータバス４１Ｂへデータを出力する。
【０１１８】
同様に加算器２０ｅの一方の入力値が固定値“−２”の場合は、変換前データの降べきの順にデータバス４１Ａとデータバス４１Ｂ上に存在するものとしたとき、レジスタ２０ｄの値とデータバス４１Ａまたはデータバス４１Ｂ上のデータは、変換前データと変換後データであるという関係が保たれる。
【０１１９】
図９、図１０および図１１の実施形態では、図８にて示されたプロセッサエレメント１００を使用しているので、プロセッサエレメント１００、プロセッサエレメント２００およびプロセッサエレメント３００の動作説明は省略する。
【０１２０】
図９の実施例では、プロセッサエレメント１００、プロセッサエレメント２００およびプロセッサエレメント３００は、同一のデータバス４１Ａとデータバス４１Ｂに接続されている。グローバルプロセッサ２には、変換前データ送出装置２０ａがあり、変換後データを、変換前データの昇べきの順あるいは降べきの順にデータバス４１Ａとデータバス４１Ｂ上に出力する。
【０１２１】
これにより、プロセッサエレメント１００、プロセッサエレメント２００およびプロセッサエレメント３００は上記説明の通り動作することで、各プロセッサエレメントにおいてデータの変換という所望の動作を行なうことができる。プロセッサエレメント１００、プロセッサエレメント２００およびプロセッサエレメント３００では、データバス４１Ａとデータバス４１Ｂを共通のものとしていることと、各プロセッサエレメントは独立して動作することから、プロセッサエレメントの数は図示している数より多くても、上記動作はまったく同じである。したがって、プロセッサエレメント数が多ければ多いほど変換するデータが多く、効率が良いことになる。
【０１２２】
図１０の実施例では、図９で示された変換前データ送出装置２０ａを、変換テーブル２０ｂと命令デコーダ２０ｃで置き換えている。
【０１２３】
命令デコーダ２０ｃは、このＳＩＭＤプロセッサが持つ命令をデコードする部分である。ＳＩＭＤプロセッサの命令として、変換テーブル２０ｃに制御信号を入力するが、その命令コードの並び方、すなわちプログラムによって、データバス４１Ａとデータバス４１Ｂ上には、変換前データが“００Ｈ”の時の変換後データと変換前データが“０１Ｈ”の時の変換後データ、変換前データが“０２Ｈ”の時の変換後データと変換前データが“０３Ｈ”の時の変換後データ、…、変換前データが“ＦＥＨ”の時の変換後データと変換前データが“ＦＦＨ”の時の変換後データというように変換前データの昇べきの順に１２８通りのデータが出力するように制御される。仮に、変換前データ“００Ｈ”と“０１Ｈ”を変換した変換後データをデータバス４１Ａとデータバス４１Ｂに出力する命令を、table #00h  というコードで表現するならば、図１４に示すプログラムによって昇べきの順にデータバス４１Ａとデータバス４１Ｂに変換後データを出力できる。図１５のプログラムであれば、降べきの順を実現できる。
【０１２４】
命令デコーダ２０ｃで、生成された制御信号は、変換テーブル２０ｂで変換後データに変換され、データバス４１Ａとデータバス４１Ｂに出力される。変換テーブル２０ｃは、上述したように、ＲＡＭやＲＯＭのような記憶装置として構成しても構わない。たとえば、命令デコーダ２０ｃから入力される制御信号をアドレス入力とすれば、データ出力が丁度変換後データに相当する。さらに付け加えるならば、アドレス入力は変換前データそのものであっても構わない。この場合は、アドレス７ビット（１２８ワード）データ１６ビットのメモリに相当し、アドレス７ビットは、変換前データの上位７ビットである。また、図１０では変換テーブル２０ｂをグローバルプロセッサ２に内蔵するようになっているが、上述したように、変換テーブル２０ｂをＲＡＭやＲＯＭで構成する場合、グローバルプロセッサ２の外に設けても構わない。すなわち、通常のＳＩＭＤプロセッサが動作するために必要であるプログラムメモリや、データメモリの一部として変換テーブル２０ｂが存在しても構わない。
【０１２５】
図１１の実施例では、図１０で示したものと同様の変換テーブル２０ｂを備えているため、変換テーブル２０ｂの説明は省略する。図１１の実施例では、命令デコーダやプログラムによらず、変換前データの昇べきの順あるいは降べきの順を実現する。図１１の例では各プロセッサエレメントと同様の加算器２０ｅと加算結果を記憶するレジスタ２０ｄを備え、加算器７で“２”または“−２”の加算を行なうことで、レジスタ２０ｄの内容を毎サイクル“＋２”または“−２”の値に変更できる。すなわち、これは変換前データの昇べきの順あるいは降べきの順に相当し、このデータを入力される変換テーブル２０ｂで変換後データに変換されデータバス４１Ａとデータバス４１Ｂに出力される。
【０１２６】
以上の説明においては、データバス幅を８ビットと仮定しているが、データバス幅は任意の値でも良い。ただし、データバス幅が１ビット増える毎に、全データの変換に要するサイクル数は、２のべき乗で増加するため、１６ビット以上のデータは、現実的ではないとも考えられる。
【０１２７】
また、上記した図８乃至図１１に示した実施形態おいては、請求項でいう“ｎ”に相当する数値として、“２”を選択した実施形態としたが、他に“４”や“８”のような２のべき乗の数値が考えられる。その場合、図８乃至図１１では２本であったデータバスがｎ本となり、各プロセッサエレメントにおいて変換後データレジスタがｎ個となる一方、比較器などで比較されるデータや、変換テーブルに入力するデータのデータ幅は削減されることになる。
【０１２８】
図８乃至図１１に示した実施形態おいては、所望の変換後データが、複数の変換後データレジスタうちのどれかに存在するという状態であるが、これはＳＩＭＤ機能を利用したプログラミングによって変換前データの下位ビットを調査するなどで解決できる手段と考えられるため、本発明の説明には敢えて加えていない。
【０１２９】
上述した図２に示した実施形態においては、レジスタファイル３１の外部入出力する方式としてアドレッシング方式を採用し、レジスタファイル３１をプロセッサ外部からアクセスし、外部からクロックとアドレス、リード／ライト制御を入力することで任意のレジスタを読み書きできるように構成して場合につき説明したが、この発明は他の方式、例えば、外部入出力にシフトレジスタ方式を用いたプロセッサにも適用できる。図１５にシフトレジスタ方式を用いた場合の基本構成を示す。
【０１３０】
図１５に示すように、入力画像データを一時的に蓄積する入力シフトレジスタと、非線形処理された画像データが並列入力される外部出力シフトレジスタとを備える。入力シフトレジスタには、イメージスキャナなどから送られる外部画像データが外部データバスから入力シフトレジスタに与えられる。入力シフトレジスタには並列ｎビットデータがビット毎に順次シフトされる。この入力シフトレジスタの段数は、プロセッサエレメント１００の組数の段数を有し、この実施形態では２５６段の段数を有する。入力シフトレジスタに蓄積されたデータはプロセッサエレメント１００のレジスタファイルへ移される。レジスタファイルへの書き込み動作は入力シフトレジスタの各段において同時に行われる。このように、レジスタファイル３１にデータが格納されると、上述したこの発明による手法による非線形処理が演算アレイで行われる。
【０１３１】
非線形処理が行われたレジスタ１０２等に格納されたデータは出力シフトレジスタの各段に転送される。この出力シフトレジスタのレジスタ段数はプロセッサエレメント１００の組数分だけであり、プロセッサエレメント１００のレジスタファイルからデータが出力シフトレジスタの各段に同時に転送される。この出力シフトレジスタに与えられるクロックでデータがシリアルに出力される。そして、出力されたデータはバッファメモリなどに一時格納され、プリンタなどの外部出力装置に与えられる。
【０１３２】
このように、上記したシフトレジスタ方式においても、非線形処理において、この発明を適用すれば、効率よく非線形処理が行える。
【０１３３】
次に、この発明のＳＩＭＤ型プロセッサをデジタル複写機などの画像処理装置に用いた場合につき図１６ないし図１８を参照して説明する。
【０１３４】
イメージスキャナで読み取られた画像データ（ｎビットのデジタル画像データ）が外部データバスからＦＩＦＯ７に与えられる。ＦＩＦＯ７に１走査ライン分のデータが格納されると、ＳＩＭＤ型プロセッサ１のグローバルプロセッサ２からの制御信号により、この実施の形態では２５６個の画像データがプロセッサエレメント１００のレジスタへ与えられる。
【０１３５】
上記したように、この実施形態においては、１つのプロセッサエレメント単位に８ビットのレジスタが３２本内蔵されており、２５６プロセッサエレメント分の組みがアレイ構成になっている。レジスタはプロセッサエレメントごとにＲ０、Ｒ１、Ｒ２、．．．Ｒ３１と呼ばれている。それぞれのレジスタは演算アレイに対して１つの読み出ししポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバス３７で演算アレイからアクセスされる。３２本のレジスタの内、２４本（Ｒ０〜Ｒ２３）は、プロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード／ライト制御を入力することで任意のレジスタを読み書きできる。
【０１３６】
残りの８本（Ｒ２４〜Ｒ３１）のレジスタはプロセッサエレメント演算の一時的な演算データ保存用として使用されるが、グローバルプロセッサ２の命令に従いテーブルからのデータを書き込むこともできる。このデータの書き込みは、変換後データ所得回路１０６で一致したプロセッサエレメントに書き込みが可能に構成されている。
【０１３７】
プロセッサエレメント１００内の演算アレイ部は上記したように、１６ビットＡＬＵと１６ビットＡレジスタ、Ｆレジスタを内蔵している。プロセッサエレメント命令による演算はレジスタから読み出されたデータもしくはグローバルプロセッサ２から与えられたデータをＡＬＵの片側の入力としてもう片側にはＡレジスタの内容を入力として結果をＡレジスタに格納する。したがって、Ａレジスタ３５ａとＲ０〜Ｒ３１レジスタもしくはグローバルプロセッサ２から与えられたデータとの演算が行われることとなる。
【０１３８】
ＦＩＦＯ７より転送され、プロセッサエレメント１００のレジスタに格納された画像データは、前述した図４等に示す実施形態に基づき非線形処理のためのテーブル変換が行われる。すなわち、レジスタファイルのレジスタに格納された演算（演算前）対象データをこのレジスタの内容を参照して、変換後レジスタへデータバス４らデータを取得するか否か判断し、データバスに与えられているデータがレジスタに格納されている変換前データに対応する変換後データと一致する時に、そのデータをレジスタに格納させるものである。そして、上述した図３等に示す実施形態に基づきテーブル変換が終了する。
【０１３９】
非線形処理が行われたプロセッサエレメント１００のレジスタファイルに格納されたデータがＦＩＦＯ８に転送される。ＦＩＦＯ８は１走査ライン分のデータを格納すると、データをプリンタなどの外部出力装置に転送する。
【０１４０】
また、画像データを予めラインメモリ９に蓄えておき、ラインメモリ９からプロセッサエレメントブロック３にデータを転送し、非線形処理を行ったデータをラインメモリ９に格納するように構成しても良い。このときのデータ転送はメモリコントローラ９１を介してＲＡＭ９２へ入出力される。
【０１４１】
図１２にＦＩＦＯ７の一例を図１３にＦＩＦＯ８の一例をそれぞれ示す。これらＦＩＦＯ７，８はメモリコントローラ７２（８２）、バッファメモリ７１（８１）を備える。外部データ入力はメモリコントローラ７２を介してバッファメモリ７１へデータが格納され、１ライン分のデータをバッファメモリ７１に格納すると、メモリコントローラ７２からプロセッサエレメントブロック３へデータを転送する。外部データ出力はプロセッサエレメントブロック３からメモリコントローラ７２を介してバッファメモリ７１へデータが格納され、１ライン分のデータをバッファメモリ７１に格納すると、メモリコントローラ７２から外部へデータを出力する。
【０１４２】
上記した画像処理装置は、イメージスキャナで取り込んだ画像データをプリンタ部へ出力する場合に付き説明したが、これに限らずデジタルビデオ、デジタルカメラなどのデジタル画像を非線形処理する場合にもこの発明は適用できる。また、外部出力もプリンタに限らず、ディスプレイへの出力、データ転送などの方式で出力する場合でもこの発明は適用できる。
【図面の簡単な説明】
【０１４３】
【図１】この発明にかかるＳＩＭＤ型プロセッサの全体構成を示すブロック図である。
【図２】この発明が適用されるＳＩＭＤ型プロセッサの内部構成を示すブロック図である。
【図３】この発明の実施の形態にかかるＳＩＭＤ型プロセッサのプロセッサエレメントを示すブロック図である。
【図４】この発明の実施の形態にかかるＳＩＭＤ型プロセッサのプロセッサエレメントを示すブロック図である。
【図５】この発明の実施の形態にかかるＳＩＭＤ型プロセッサの要部を示すブロック図である。
【図６】この発明の他の実施の形態にかかるＳＩＭＤ型プロセッサの要部を示すブロック図である。
【図７】この発明の更に他の実施の形態にかかるＳＩＭＤ型プロセッサの要部を示すブロック図である。
【図８】この発明の実施の形態にかかるＳＩＭＤ型プロセッサの他のプロセッサエレメントを示すブロック図である。
【図９】図８のプロセッサエレメントを用いたこの発明の実施の形態にかかるＳＩＭＤ型プロセッサの要部を示すブロック図である。
【図１０】図８のプロセッサエレメントを用いたこの発明の他の実施の形態にかかるＳＩＭＤ型プロセッサの要部を示すブロック図である。
【図１１】図８のプロセッサエレメントを用いたこの発明の更に他の実施の形態にかかるＳＩＭＤ型プロセッサの要部を示すブロック図である。
【図１２】プログラムによって変換後データを送出する場合のプログラムを示す図である。
【図１３】プログラムによって変換後データを送出する場合のプログラムを示す図である。
【図１４】プログラムによって変換後データを送出する場合のプログラムを示す図である。
【図１５】プログラムによって変換後データを送出する場合のプログラムを示す図である。
【図１６】この発明が適用される他のＳＩＭＤ型プロセッサの全体構成を示すブロック図である。
【図１７】この発明に利用される画像処理装置を示すブロック図である。
【図１８】入力用ＦＩＦＯの一例を示すブロック図である。
【図１９】出力用ＦＩＦＯの一例を示すブロック図である。
【符号の説明】
【０１４４】
２  グローバルプロセッサ
３  プロセッサエレメントブロック
３ａ  プロセッサエレメント
１００、２００，３００  プロセッサエレメント
１０１  変換後データを記憶するレジスタ
１０２  変換前データを記憶するレジスタ
１０６  変換後データ取得回路
【図１】
0004451433.tif 000002
【図２】
0004451433.tif 000003
【図３】
0004451433.tif 000004
【図４】
0004451433.tif 000005
【図５】
0004451433.tif 000006
【図６】
0004451433.tif 000007
【図７】
0004451433.tif 000008
【図８】
0004451433.tif 000009
【図９】
0004451433.tif 000010
【図１０】
0004451433.tif 000011
【図１１】
0004451433.tif 000012
【図１２】
0004451433.tif 000013
【図１３】
0004451433.tif 000014
【図１４】
0004451433.tif 000015
【図１５】
0004451433.tif 000016
【図１６】
0004451433.tif 000017
【図１７】
0004451433.tif 000018
【図１８】
0004451433.tif 000019
【図１９】
0004451433.tif 000020