JP4451433B2 - 並列プロセッサ - Google Patents

並列プロセッサ Download PDF

Info

Publication number
JP4451433B2
JP4451433B2 JP2006327121A JP2006327121A JP4451433B2 JP 4451433 B2 JP4451433 B2 JP 4451433B2 JP 2006327121 A JP2006327121 A JP 2006327121A JP 2006327121 A JP2006327121 A JP 2006327121A JP 4451433 B2 JP4451433 B2 JP 4451433B2
Authority
JP
Japan
Prior art keywords
data
register
conversion
processor
processor element
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006327121A
Other languages
English (en)
Other versions
JP2007109253A (ja
Inventor
和彦 原
慎一 山浦
正展 福島
圭治 中村
貴雄 片山
和彦 岩永
浩資 高藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2006327121A priority Critical patent/JP4451433B2/ja
Publication of JP2007109253A publication Critical patent/JP2007109253A/ja
Application granted granted Critical
Publication of JP4451433B2 publication Critical patent/JP4451433B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)

Description

この発明は、例えば、デジタル複写機やファクリミリ装置等の画像データのデジタル処理等に用いられる並列プロセッサに関するものであり、特に画像データの非線形変換処理に用いられるSIMD(Single Instruction Stream Multiple Data Stream)型マイクロプロセッサに関するものである。
近年、デジタル複写機やファクリミリ装置等の画像処理装置において、画素数を増加したり、或いはカラー対応にするなど画像の向上が図られている。そして、この画像の向上に伴い、処理すべきデータ数が増加している。ところで、複写機等の画像処理装置におけるデータ処理は全ての画素に対して同じ演算処理を施すことが多い。そこで、1つの命令で複数のデータに対して同時に同じ演算処理を行うSIMD方式のプロセッサが用いられるようになっている。
上記したように、SIMD型マイクロプロセッサでは1つの命令で複数のデータに対して同時に同じ演算処理が実行可能である。ここで、通常の演算処理は複数の演算器を並べ同じ演算を同時に複数のデータに対して実行することで実現できる。しかし、画像処理においては、演算処理が式で表すことができない非線形な処理を行うことが多い。演算処理が式で表すことができない非線形な処理は演算対象のデータによって演算式が変更となるため同じ処理を同時に実行できない。したがって、データ毎の逐次処理となりSIMD方式の効果が無くなってしまう。
通常のSISD(Single Instruction Stream Single Data Stream)方式のプロセッサにおいても演算データにより演算式が変更となる非線形処理はプログラムが非常に複雑になるため、演算前データに対して演算後の処理済みデータを全て準備しておきテーブル化し、演算データを元にテーブル変換を行い演算後データを得る方式が一般的である。具体的にはRAM上にテーブルを持ち演算前データにテーブルの先頭の番地を加算した値をアドレスポインタとしてRAMから得られたデータを演算後のデータとしている。
演算データが8ビットの場合には256バイトの変換テーブルが必要となるが演算ビット幅の増加とともにテーブルのサイズは2のベキ乗で増加するため演算ビット幅が大きい場合は演算データを任意の区間に分けてその区間での近似式をテーブルとして持つ場合もある。
特許文献1においては、各SIMD単位のプロセッサエレメント内蔵の出力レジスタから演算前データを順次外部に出力し、外部で逐次にテーブル変換を行い、変換後のデータをプロセッサエレメント内蔵の入力レジスタに順次入力する方式が提案されている。この方式では、変換テーブルが1個となるためコストの上昇は抑えられるが、逐次処理であるため演算処理時間は最低でもプロセッサエレメント数だけかかってしまい演算速度面で不利であった。また、この変換処理をプロセッサエレメントでの通常処理と並行に実行すれば演算処理時間はトータルとして削減できるが、入力・出力のレジスタがこの変換作業専用に使用され他の用途に使用できない、変換処理後のデータが必要な場合には演算処理時間だけ待つこととなり並行処理が不可能であるといった問題があった。
また、特許文献2においては、各プロセッサエレメント(PE)毎に非線形変換テーブルの元データと変換対象データとの比較を行う比較器を設け、この比較器で両データを比較し、一致したプロセッサエレメントには変換後のデータを格納し、この値を演算後データとする方式が提案されている。この場合には演算処理時間は演算前データの取りうる値の組み合わせ(変換テーブルのワード数)となるため、プロセッサエレメント数よりこのワード数が少ない場合には高速化される。8ビットデータの場合ではプロセッサエレメント数によらず256回程度のサイクル数となる。この場合においても演算処理時間が長い問題がある。また、他の処理と並行に行った場合には、上記した特開平5−67203号公報と同じ問題を持っている。
さらに、特許文献3においては、プロセッサエレメント数と同数の出力ポートを持つ変換テーブル用のRAMに対して、それぞれのプロセッサエレメントから演算前データをアドレスポインタとして与えることで演算後データを得る方法が提案されている。この方式においては、変換速度は1サイクル程度で終了するが、出力ポートの増加はRAMのコストを押し上げることとなり、特に数10個を超えるポートを持つことは実現不可能である。したがって、プロセッサエレメント数が多いSIMD型プロセッサに対応できないという問題があった。
特開平5−67203号公報 特開平9−305550号公報 特許第2812292号
さて、このテーブル変換をSIMD型マイクロプロセッサで採用する場合にはそれぞれの演算単位でテーブルが必要となる。例えば、256個のプロセッサエレメント(PE)を有するSIMD型プロセッサで8ビットのテーブル変換を行う場合には256バイトのテーブルRAMがそれぞれの演算単位つまり256個必要となりコスト面が増大する問題があった。そのため、SIMD型マイクロプロセッサのテーブル変換に対して数々の方式が考案されている。
上記したように、従来技術においては、SIMD型マイクロプロセッサのテーブル変換に代表される非線型処理はSIMD型の最大の特徴である並列処理が困難であるため数々の方式が考案されているが、それらは、入出力レジスタを介した方法、専用のコンパレータを使用したもの、専用テーブル用メモリを使用したものであり、速度・コストのいずれかの面で問題があった。
すなわち、特許文献1は、出力レジスタからデータを出力し外部テーブルメモリのアドレスとして入力、メモリから出力されたデータを変換後のデータとして入力シフトレジスタから入力する。全データの変換にはプロセッサエレメント数以上のサイクルが必要であり処理時間が長い問題がある。また、テーブルメモリは専用のものとなり、さらに入力シフトレジスタ、入力シフトレジスタはテーブル変換専用に使用されることとなる。
また、特許文献2は、各プロセッサエレメントに変換前データの比較器を設け、外部から変換前データと変換後データを入力し変換前データと一致したプロセッサエレメントだけに変換後のデータを格納する。変換前データのデータ数だけのサイクル数が必要であり、さらに専用の比較器が必要である。
さらに、特許文献3では、テーブルメモリの出力ポート数をプロセッサエレメント数だけ用意してテーブル変換を行う。変換速度は最も速いがメモリのポート数が非常に多いためコストが高くなる。プロセッサエレメント数が数10個までしか実現できないと思われる。
この発明は、上述した従来の問題点を解決するためになされたものにして、非線形処理を効率よく実現することができる並列プロセッサを提供することを課題とする。
この発明にかかる並列プロセッサは、プログラムを解読しプロセッサ全体を制御するグローバルプロセッサと、データを処理するプロセッサエレメントを複数個備えて構成されるプロセッサエレメントブロックと、を有する並列プロセッサにおいて、各プロセッサエレメントは、変換前データを記憶する変換前データ用レジスタと、データバスから送られてくる変換後データを記憶する変換後データ用レジスタと、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データである判別する判別手段と、を備え、前記判別手段は、データバスから送られてくるデータの変換前にあたる変換前算出データを計算によって求め、該変換前算出データが前記変換前データ用レジスタに記憶された前記変換前データと一致すると、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データであると判別し、前記判別手段がデータバスから送られてくるデータが記憶されている変換前データに相当する変換後データであると判別すると、データバスから送られてくる前記変換後データを前記変換後データ用レジスタに記憶させることを特徴とする。
この発明にかかる並列プロセッサは、上記の構成に加え、前記判別手段は、加算器と、加算器の加算結果を記憶するレジスタと、加算結果を記憶するレジスタの内容と変換前データを記憶するレジスタの内容を比較する比較器と、を備え、前記比較器により両レジスタの内容が一致すると、データバスから送られてくる変換後データをレジスタに格納させることを特徴とするものである。
この発明にかかる並列プロセッサは、上記の構成に加え、各プロセッサエレメントの前記変換後データを記憶するレジスタに変換後データを格納する経路に接続される全プロセッサエレメント共有のデータバスを備え、前記データバスに対し変換後データを変換前データの値の順に従って送出する変換後データ送出手段を備えたことを特徴とするものである。
この発明にかかる並列プロセッサは、上記の構成に加え、前記変換後データ送出手段は、命令デコーダと、前記命令デコーダによって入力される任意の変換前データに対応した変換後データを前記データバスに送出する記憶手段と、を備えたことを特徴とするものである。
この発明にかかる並列プロセッサは、上記の構成に加え、前記変換後データ送出手段は、加算器と前記加算器器の加算結果を記憶するレジスタと、前記レジスタによって入力される任意の変換前データに対応した変換後データを前記データバスに送出する記憶手段と、を備えたことを特徴とするものである。
この発明にかかる並列プロセッサは、上記の構成に加え、前記変換後データを記憶するレジスタをn(n=2のべき乗)個持ち、プロセッサ外部から与えられる変換後データを前記変化後データを記憶するレジスタに格納する経路をn本それぞれ持つことを特徴とするものである。
この発明にかかる並列プロセッサは、上記の構成に加え、各プロセッサエレメントの前記変換後データを記憶するn(n=2のべき乗)個のレジスタに変換後データを格納する経路に接続される全プロセッサエレメント共有のデータバスをn本備え、前記データバスに対し、変換後データを変換前データの値の順に従ってn個のデータごとに送出する変換後データ送出手段を備えたことを特徴とするものである。
この発明にかかる並列プロセッサは、上記の構成に加え、前記n(n=2のべき乗)本のデータバスに対して変換後データを変換前のデータの値の順に従って送出する手段として、命令デコーダと、前記命令デコーダによって入力される任意の変換前データに対応しn個の変換後データを前記データバスに送出する記憶手段と、を備えたことを特徴とするものである。
この発明にかかる並列プロセッサは、上記の構成に加え、前記n(n=2のべき乗)本のデータバスに対して変換後データを変換前のデータの値の順に従って送出する手段として、加算器と前記加算器器の加算結果を記憶するレジスタと、前記レジスタによって入力される任意の変換前データに対応したn個の変換後データを前記データバスに送出する記憶手段とを備えたことを特徴とするものである。
この発明に利用される画像処理装置は、複数のプロセッサエレメントがアレイ状に設けられた並列プロセッサにFIFOを介して画像データが入力され、入力された画像データを並列演算処理し、演算処理された画像データがFIFOを介して並列プロセッサ外部に出力される画像処理装置であって、前記並列プロセッサの各プロセッサエレメントは、各プロセッサエレメントは、変換前データを記憶するレジスタと、データバスから送られてくる変換後データを記憶するレジスタと、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データか判別する手段と、を備え、前記判別手段の結果に基づき前記変換後データをレジスタに記憶させることにより、非線形演算を行うことを特徴とする。
前記した並列プロセッサとして、上記の構成に記載の並列プロセッサを用いることができる。
以上説明したように、この発明の上記の構成によれば、変換テーブルをプロセッサエレメントの内部に持たない方法で、プロセッサエレメントに入力できるデータバスの数が最小の数で、プロセッサエレメントのデータ変換が可能になる。そして、各プロセッサエレメントに変換テーブルを持たずに別の1箇所のみにテーブルをもつことによるコストの低減と、各プロセッサエレメントを結ぶ共通のデータバスの数を最小限に抑えることによるコストの低減と、それらを実現しながら、例えば、データ幅8ビットの場合256サイクルでの変換を実現できる。また、データバスを複数にした場合、データバスが2本の場合でも、約半分の128+αサイクルでの変換を実現できる。
この発明の上記の構成によれば、プロセッサエレメントが基本的に備えている加算器(ALU)、レジスタを利用できる構成を提供することで、専用ハードウエアの追加を抑制することできる。
また、上記の構成によれば、上記の効果に加え、データバスは、各プロセッサエレメント共通であるため、プロセッサエレメント数がどれだけ増えようとも変換に要する時間が一定で、プログラミングする際は実行時間が読みやすいというメリットがある。また、変換後データをグローバルプロセッサが送出することにより、データバスを即値のデータバスと共有でき、コスト削減できる。
更に、上記の構成によれば、上記の効果に加え、命令デコーダはグローバルプロセッサがもともと必要で備えている機能であり、変換テーブルはシステム全体で最低限1個は必要であることから、ほとんど余分なハードウエアをグローバルプロセッサに追加することなく上記の構成のメリットを実現できる。また、変換テーブルはプロセッサの持つプログラムメモリやデータメモリを利用できるため、さらにコスト削減が可能となる。
また、上記の構成によれば、上記の効果に加え、加算器はグローバルプロセッサが備えている加算器(ALU)を使用し、レジスタはグローバルプロセッサが備えている汎用レジスタを使用などで、ほとんど余分なハードウエアをグローバルプロセッサに追加することなく上記のメリットを実現できる。また、変換テーブルはプロセッサの持つプログラムメモリやデータメモリを利用できるため、さらにコスト削減が可能となる。
また、上記の構成によれば、複数のデータバスで実現するにあたりプロセッサエレメントが基本的に備えている加算器(ALU)、レジスタを利用できる構成を提供することで、専用ハードウエアの追加を抑制できる。
更に、上記の構成によれば、上記のメリットに加え、データバスは、各プロセッサエレメント共通であるため、プロセッサエレメント数がどれだけ増えようとも変換に要する時間が一定で、プログラミングする際は実行時間が読みやすいというメリットがある。また、変換後データをグローバルプロセッサが送出することにより、データバスを即値のデータバスと共有でき、コスト削減できる。
また、上記の構成によれば、上記の効果に加え、命令デコーダはグローバルプロセッサがもともと必要で備えている機能であり、変換テーブルはシステム全体で最低限1個は必要であることから、ほとんど余分なハードウエアをグローバルプロセッサに追加することなく上記のメリットを実現できる。また、変換テーブルはプロセッサの持つプログラムメモリやデータメモリを利用できるため、さらにコスト削減が可能となる。
上記の構成によれば、上記の効果に加え、加算器はグローバルプロセッサが備えている加算器(ALU)を使用し、レジスタはグローバルプロセッサが備えている汎用レジスタを使用などで、ほとんど余分なハードウエアをグローバルプロセッサに追加することな上記のメリットを実現できる。また、変換テーブルはプロセッサの持つプログラムメモリやデータメモリを利用できるため、さらにコスト削減が可能となる。
以下、この発明に係るSIMD型プロセッサの実施の形態につき図面を参照して説明する。
まず、この発明にかかるSIMD型プロセッサの全体構成について、図1に従い説明する。
この発明のSIMD型プロセッサ1は、図1に示すように、グローバルプロセッサ2、本実施形態では256組の後述するプロセッサエレメント3aからなるプロセッサエレメントブロック3と、インターフェース4から構成される。プロセッサエレメント3aは、複数のレジスタファイル群とこれらレジスタファイル群に格納されたデータを演算する演算部を有する。インタフェース4はグローバルプロセッサ2の命令に基づき、イメージスキャナなどの外部入力部から演算対象となるデータを各プロセッサエレメント3aのレジスタフィルに与えるとともに、演算処理されたデータをレジスタファイルからプリンタなどの外部出力部へ転送するものである。
この外部入出力装置は、デジタル画像データなどの演算データを入出力するものである。外部入力装置としては、イメージスキャナや画像が格納された画像メモリがあり、外部出力装置としては画像データを印字するプリンタ、データを格納する画像メモリなどがある。
グローバルプロセッサ2は、いわゆるSISD(Single Instruction Stream Single Data Stream)タイプのプロセッサであり、プログラムRAMとデータRAMを内蔵し、プログラムを解読し、各種制御信号を生成する。この制御信号は内蔵する各種ブロックの制御以外にもプロセッサエレメント3a…に供給される。また、GP(グローバルプロセッサ)命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)等を使用して各種演算処理、プログラム制御処理を行う。
プロセッサエレメント3aのレジスタファイルはPE(プロセッサエレメント)命令で処理されるデータを保持している。このPE命令はSIMD(Single Instruction Stream Multiple Data Stream)タイプの命令であり、各プロセッサエレメント3aに同時に同じ処理を行う。各プロセッサエレメント3a…からのデータの読み出し/書き込みの制御はグローバルプロセッサ2からの制御によって行われる。
各プロセッサエレメント3a…の演算部にてPE命令の演算処理が行われる。この処理の制御はすべてグローバルプロセッサ2から行われる。
次に、図2を参照して、SIMD型プロセッサ1のプロセッサエレメント3aへのデータの読み出し/書き込みの一例につき説明する。
このグロバールプロセッサ2にはこのプロセッサのプログラム格納用のプログラムRAM21と演算データ格納用のデータRAM24が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ(PC)、演算処理のデータ格納のための汎用レジスタであるG0〜G3レジスタ、レジスタ退避、復帰時に退避先データRAMのアドレスを保持しているスタックポインタ(SP)、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ(LS)、同じくIRQ時とNMI時の分岐元アドレスを保持するLI、LNレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ(P)のレジスタ群25が内蔵されている。さらに、グローバルプロセッサ2は、プログラムRAM21に基づきグローバルプロセッサ2、プロセッサエレメントブロック3、インタフェース4を制御するシーケンスユニット22を備える。
また、グローバルプロセッサ2は、これらのレジスタ群25と図示していない命令デコーダ、算術論理演算器23(以下、「ALU23」という。)、図示していないメモリ制御回路、割り込み制御回路、外部I/O制御回路、GP演算制御回路を使用してGP命令の実行が行われる。
また、PE命令実行時は命令デコーダ、図示していないレジスタファイル制御回路、PE演算制御回路を使用して、各プロセッサエレメント3a…の制御を行う。
また、この実施形態では、後述するように、グローバルプロセッサ2の命令に従いテーブルRAMから複数のプロセッサエレメント3aにデータが転送可能に構成されている。
上記したように、シーケンスユニット22は、プロセッサエレメントブロック3を構成する各プロセッサエレメント3a…レジスタファイル31及び演算部36を制御する。
この演算部36は、マルチプレクサ32、シフト拡張回路33、算術論理演算器34(以下、「ALU34」という)、及びAレジスタ35a及びFレジスタ35bを備える。なお、この図2には記載していないが、この実施形態においては、後述するように、テーブル変換後のデータを取得するための変換後データ取得手段を備える。
さらに、このシーケンスユニット22は、インタフェース4に対してデータ転送のための動作設定用データ及びコマンド等を送る。インタフェース4は、シーケンスユニット22の動作設定用データ及びコマンドに基づき、プロセッサエレメント3aのアドレス指定のためのアドレス制御信号、プロセッサエレメント3aを構成するレジスタ31bにデータのリード/ライトを指示するためのリード/ライト制御信号、クロック信号を与えるためのクロック制御信号を生成する。
ここで、リード/ライト制御信号のうちライト制御信号とは、演算処理されるデータをデータバス41dより取得して、プロセッサエレメント3aのレジスタ31bに保持させるための信号をいう。一方、リード/ライト制御信号のうちリード制御信号とは、プロセッサエレメント3aのレジスタ31bが保持している演算処理されたデータを、データバス41dへ与えるようレジスタ31bに指示するための信号をいう。
インタフェース4は、グローバルプロセッサ2からのコマンドを受けて、プロセッサエレメントブロック3を構成するプロセッサエレメント3aのアドレスを指定する信号(以下、「アドレス指定信号」という。)を作成し、アドレスバス41aを介してプロセッサエレメント3aのレジスタコントローラ31aヘ送る。また、インタフェース4は、後述するように、プロセッサエレメント3aを構成するレジスタ31bに対して、データのリード/ライトを指示するための信号(以下、「リード/ライト指示信号」という。)を、リード/ライト信号線41bを介してプロセッサエレメント3aの後述するレジスタコントローラ31aヘリード/ライト信号が与えられる。
また、インタフェース4は、クロック信号線41cを介してプロセッサエレメント3aの後述するレジスタコントローラ31aへクロック信号を与える。
さらに、外部入出力データバスからは、上述したように、SIMD型プロセッサ1の外部に設けられたイメージスキャナ等で読み込んだデータを、本実施形態では8ビットのパラレルデータとして、インタフェース4に与える。この8ビットのデータは、データバス41dに与えられる。この8ビットのパラレルデータについては、データに応じて適宜変更しても問題ない。このデータバス41dは、レジスタ31bに保持されている演算処理されたデータが、SIMD型プロセッサ1の外部に転送される時にも使用される。
また、レジスタ群25は、プロセッサエレメントブロック3の後述するレジスタ35に接続されており、このレジスタ35との間でシーケンスユニット22の制御によりデータの交換が行われる。
プロセッサエレメントブロック3は、図2に示すように、レジスタファイル31、マルチプレクサ32、シフト・拡張回路33、算術論理演算器34(以下、「ALU34」という。)、レジスタ35a、35bを一単位とする複数のプロセッサエレメント3aを備える。レジスタファイル31には、1つのプロセッサエレメント3a単位に8ビットのレジスタが32本内蔵されており、本実施形態では256のプロセッサエレメント分の組がアレイ構成になっている。レジスタファイル31は1つのプロセッサエレメント(PE)3aごとにR0、R1、R2...R31と呼ばれているレジスタが内蔵されている。それぞれのレジスタファイル31は演算部36に対して1つの読み出しポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバスで演算部36からアクセスされる。32本のレジスタの内、24本はプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード/ライト制御を入力することで任意のレジスタを読み書きできる。
レジスタの外部からのアクセスは1つの外部ポートで各プロセッサエレメント3aの1つのレジスタがアクセス可能であり、外部から入力されたアドレスでプロセッサエレメントの番号(0〜255)を指定する。したがって、レジスタアクセスの外部ポートは全部で24組搭載されている。
本実施形態では、プロセッサエレメント3aの数を256個として説明するが、これに限定されるものでなく適宜変更して使用してもよい。このプロセッサエレメント3aには、グローバルプロセッサ2のシーケンスユニット22により、インタフェース4に近い順に0から255までのアドレスが割り付けられる。
プロセッサエレメント3aのレジスタファイル31は、レジスタコントローラ31a、2種類のレジスタ31b、31cを備える。本実施形態では、図2に示すように、一単位のプロセッサエレメント3a毎に、レジスタコントローラ31aとレジスタ31bとを24組備え、さらにレジスタ31cを8個備えている。図2中の1プロセッサエレメントとは1つのプロセッサエレメント3aを表している。ここで、本実施形態では、レジスタ31b、31cを8ビットのものとして扱うが、これに限定されるものでなく適宜変更して使用してもよい。
レジスタコントローラ31aは、図2に示すように、インタフェース4と、上述したアドレスバス41a、リード/ライト信号線41b、クロック信号線41cを介して接続されている。
インタフェース4は、グローバルプロセッサ2からデータ転送指示を受け取ると、アドレス指定信号をアドレスバス41aを介してプロセッサエレメントブロック3ヘ送る。これにより、プロセッサエレメント3aがアドレス指定される。レジスタコントローラ31aは、送られてきたアドレス指定信号をデコードし、デコードしたアドレスと、自己に割り付けられたアドレスとが一致する場合には、クロック信号41cを介して送られてきたクロック信号に同期して、リード/ライト信号41bから送られてきたリード/ライト指示信号を得る。具体的には、レジスタコントローラ31aは、リード/ライト信号41bを介してリード/ライト指示信号を得る。そして、このリード/ライト指示信号はレジスタ31bに与えられる。
レジスタコントローラ31aからプロセッサエレメント3aに対し、ライト指示信号が送られてきた場合には、プロセッサエレメント3aのレジスタ31bは、演算処理されるデータ(8ビット)をデータバス41dより取得して保持する。また、レジスタコントローラ31aからプロセッサエレメント3aに対し、リード指示信号が送られてきた場合には、プロセッサエレメント3aのレジスタ31bは、演算処理されたデータ(8ビット)をデータバス41dへ送る。
レジスタ31bは、後述するALU34でこれから演算される外部から入力されたデータを保持したり、或いはALU34で演算処理されたデータを外部へ出力するために保持するものであり、いわゆる入力レジスタとしても、或いは出力レジスタとしても機能する。また、演算処理されるデータ、或いは演算されたデータを一時的に保持するといった、後述するレジスタ31cとしての機能も有する。なお、本実施形態では、レジスタ31bは8ビットのデータを保持できるものとして扱うが、データに応じて適宜変更しても問題ない。上述したレジスタコントローラ31aからライト指示信号が与えられると、レジスタ31bは演算処理されるデータをデータバス41dより取得して保持する。一方、レジスタコントローラ31aからリード指示信号が送られてくると、レジスタ31bは保持している演算処理されたデータをデータバス41dへ与える。このデータはインタフェース4から外部データバスを介して外部のプリンタなどへ転送される。
また、レジスタ31bは、本実施形態においては8ビットデータをパラレルで転送するデータバス37を介してマルチプレクサ32に接続されている。ALU34で演算処理されるデータ、或いはALU34で演算処理されたデータは、このデータバス37を介して、レジスタ31bとの間で転送される。この転送は、グローバルプロセッサ2のシーケンスユニット22からの指示によって、グローバルプロセッサ2に接続されたリード信号線26a、ライト信号線26bを介して行われる。具体的には、グローバルプロセッサ2のシーケンスユニット22から、リード信号線26aを介してリード指示信号が送られてくると、レジスタ31bは保持している演算処理されるデータをデータバスへ置く。このデータはALU34へ送られ演算処理される。一方、グローバルプロセッサ2のシーケンスユニット22から、ライト信号線26bを介してライト指示信号が送られてくると、レジスタ31bはデータバス37を介して送られてきたALU34で演算処理されたデータを保持する。
レジスタ31cは、レジスタ31bより与えられた演算処理されるデータ、或いは演算されたデータがレジスタ31bに与えられる前に、そのデータを一時的に保持するものである。さらに、この実施の形態においては、レジスタ31cは後述するように、グローバルプロセッサ2からのデータが与えられる。
演算部36は、マルチプレクサ32、シフト/拡張回路33、16ビットALU34及び16ビットのレジスタ35a、35bを備えている。このレジスタは、16ビットのAレジスタ35a、Fレジスタ35bである。
プロセッサエレメント3aの命令による演算は、基本的にレジスタファイル31から読み出されたデータをALU34の片側の入力としてもう片側にはレジスタ35のAレジスタの内容を入力として結果をAレジスタに格納する。したがって、Aレジスタ35aとレジスタファイル31のR0〜R31レジスタとの演算が行われることとなる。この実施形態においては、レジスタファイル31と演算アレイ36との接続に(7to1)のマルチプレクサ32を置いており、プロセッサエレメント方向で左に1、2、3つ離れたデータと右に1、2、3つ離れたデータ、中央のデータを演算対象として選択している。また、レジスタファイル31の8ビットのデータはシフト/拡張回路33により任意ビットの左シフトしてALU34に入力される。
上記したように、マルチプレクサ32は、自己のプロセッサエレメント3aに備えられた上記データバス37に接続されるとともに、両隣3つのプロセッサエレメント3aに備えられたデータバス37にも接続されている。このマルチプレクサ32は7つのプロセッサエレメント3aから1つを選択し、その選択したプロセッサエレメント3aにおけるレジスタ31b、31cで保持されているデータをALU34へ送る。或いはALU34で演算処理されたデータを、選択したプロセッサエレメント3aにおけるレジスタ31b、31cへ送る。これによって、隣のプロセッサエレメント3aにおけるレジスタ31b、31cで保持されているデータを利用した演算処理が可能になり、SIMD型プロセッサ1の演算処理能力を高めることができる。
シフト/拡張回路33は、マルチプレクサ32から送られてきたデータを所定ビットシフトしてALU34へ送る。或いはALU34から送られてきた演算処理されたデータを所定ビットシフトしてマルチプレクサ32へ送る。
ALU34は、シフト/拡張回路33から送られてきたデータと、レジスタ35に保持されているデータとに基づき算術論理演算を行う。なお、本実施形態では、ALU34は16ビットのデータに対応できるものとして扱うが、データに応じて適宜変更しても問題ない。演算処理されたデータは、Aレジスタ35aに保持され、シフト/拡張回路33へ転送したり、或いはグローバルプロセッサ2の汎用レジスタ25へ転送される。
グローバルプロセッサ2からインタフェース4へはI/O用のアドレス、データ、コントロール信号がバスを介して与えられる。
上記したように、この実施形態においては、レジスタファイル31には1つのプロセッサエレメント3a単位に8ビットのレジスタが32本内蔵されており、256プロセッサエレメント分の組みがアレイ構成になっている。レジスタはプロセッサエレメントごとにR0、R1、R2...R31と呼ばれている。それぞれのレジスタは演算部36に対して1つの読み出ししポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバス37で演算アレイからアクセスされる。32本のレジスタの内、24本(R0〜R23)のレジスタ31bは、プロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード/ライト制御を入力することで任意のレジスタを読み書きできる。
残りの8本(R24〜R31)のレジスタ31cはプロセッサエレメント演算の一時的な演算データ保存用として使用されるが、グローバルプロセッサ2のデータRAM24からのデータを書き込むこともできる。グローバルプロセッサ2からのライト制御と演算部36変換後データ取得手段により、レジスタファイル31に内蔵される8本のレジスタ31cにグローバルプロセッサ2のデータRAM24のデータの書き込みが可能に構成されている。また、この実施形態では、データRAM24にテーブル変換用データが格納されテーブルRAMとして使用できる。例えば、このRAMは64ビットの出力ポートを持つことで、1つのプロセッサエレメント3aに対しても8本のレジスタ31cに同時に64ビットの書き込みが可能に構成される。
上述したように、演算部36は16ビットALU34と16ビットAレジスタ35a、Fレジスタ35bを内蔵している。PE命令による演算はレジスタファイル31から読み出されたデータもしくはグローバルプロセッサ2から与えられたデータをALU34の片側の入力としてもう片側にはAレジスタ35aの内容を入力として結果をAレジスタに格納する。したがって、Aレジスタ35aとR0〜R31レジスタ31b、31cもしくはグローバルプロセッサ2から与えられたデータとの演算が行われることとなる。
次に、この発明の特徴であるグローバルプロセッサ2の命令に従いテーブルRAMのデータをプロセッサエレメント3aに書き込む態様につき参照して説明する。
レジスタファイル31の中のレジスタ31cはグローバルプロセッサ2のレジスタファイル制御回路を介して、テーブルRAMのデータが入力される。テーブルRAMは、非線形変換処理のためのデータメモリとして用いる。このテーブルRAMからレジスタ31cへの書き込みは後述する変換後データ取得手段により行われる。レジスタ31cにはライトコントロール回路(図示しない)が設けられており、このライトコントロール回路に変換後データ取得手段からライト制御信号が与えられる。全てのプロセッサエレメント3aのレジスタ31cにテーブルデータバス41を介してからテーブルRAM26のデータを与え、変換後データ取得手段からライト制御信号が与えられている各プロセッサエレメント3aのレジスタ31cにデータが書き込まれる。
なお、レジスタ31cは演算アレイ36ともデータバス37を介してデータの転送を行うため、もう一方の出力ポートを持ち、命令によりグローバルプロセッサ2で作成されたリード制御信号によりデータからデータの転送が行われる。
また、テーブルRAMは例えば、グローバルプロセッサ2の汎用レジスタ(G0〜G3)をアドレスのポインタとしてアドレスが指定され、同様に汎用レジスタ(G0〜G3)のデータを書き込まれることで値が設定される。
次に、図2に示す実施の形態において非線形処理のためのテーブル変換について説明する。なお、演算対象データはレジスタファイル31のレジスタ31bのうちレジスタR0に格納されているものとして説明する。以下、この発明の動作の理解を容易にするために、1つのレジスタに変換前データが格納され、1つのレジスタに変換後データを格納する場合につきその要部を示す図面を用いて説明する。
図3は、図2で示されるようなSIMDプロセッサのうちの1個のプロセッサエレメント3aと同様に構成されたプロセッサエレメント(PE)100だけを示している。データバス41は、各プロセッサエレメント100…間を跨って配置されているデータ幅のバスである。例えば、8ビットのデータを扱う場合は8ビットのバスである。以下では、データ幅を8ビットであるとして説明する。レジスタ102は、8ビットの変換前データの格納用レジスタであり、レジスタ101は、8ビットの変換後データのレジスタである。レジスタ101,102は上記したレジスタファイル31の中のレジスタで構成される。少なくともレジスタ101は、データバス41から値を入力する経路を持つ。
図示していないレジスタファイル31のレジスタ(R0)に格納された演算(演算前)対象データを各プロセッサエレメント100のデータバス37を介してレジスタ102にロードする。
変換後データ取得回路106は、レジスタ102の内容を参照して、レジスタ101へデータバス41からデータを取得するか否か判断し、データバス41に与えられているデータがレジスタ102に格納されている変換前データに対応する変換後データと一致する時に、そのデータをレジスタ101に格納させるものである。
なお、以下の説明では、変換前データ、変換後データともに8ビットのデータ幅であると仮定する。
図3で示されるプロセッサエレメント100においては、レジスタ102に記憶されている変換前データを変換し、変換後データとしてレジスタ101に格納するものである。データバス41上に、変換前データが“00H”の時の変換後データ、変換前データが“01H”の時の変換後データ、変換前データが“02H”の時の変換後データ、…、変換前データが“FFH”の時の変換後データという順で256通りのデータが存在するとき、プロセッサエレメント100…では変換後データ取得回路106がデータバス41上の変換後データの変換前にあたる変換前データ(変換前算出データ)を計算によって求め、計算によって求められた変換前データが、レジスタ10の内容と一致したとき、所望の変換後データがデータバス412上にあることを知ることができる。そのタイミングでレジスタ101に入力されたデータは、レジスタ102を変換前データとしたときの変換後データとなる。このような変換後データ取得回路106につき図4を参照して説明する。
次に、上記した変換後データ取得回路106につき、図4のブロック図に従いさらに説明する。変換後データ取得回路106は、加算器105と、加算器105から演算結果を格納する8ビットのレジスタ103と、変換前データの格納レジスタ102と、レジスタ102とのデータを比較する比較器104と、を備える。比較器104からの出力により、レジスタ101にデータバス41に与えられている変換後データが格納される。この加算器104は、プロセッサエレメントの演算部に備えている加算器(ALU)を用い、レジスタ103もプロセッサエレメント内の演算部に設けられているレジスタ等を用いればよい。
加算器105は、2個のデータを入力し、1個の出力を得る。演算幅は8ビットである。2個の入力のうち1個は固定値“1”または“−1”とする。他方の入力にはレジスタ103の内容が入力可能となっている。レジスタ103は、加算器105の演算結果を記憶する8ビットのレジスタであり、その内容は加算器105の入力データとなるほかに比較器104へ出力される。比較器104は、レジスタ103とレジスタ102の内容を比較する。2つの入力データが一致した場合、比較器104はレジスタ101にデータ入力の指示が出される。
図4に示すプロセッサエレメント100においては、レジスタ102に記憶されている変換前データを変換し、変換後データとしてレジスタ101に格納するものである。この図4に示す変換後データ取得回路106の加算器105は、2個のデータの加算を可能とするが、一方の入力データを固定値“1”とし、他方の入力データを前サイクルの加算結果、すなわちレジスタ103に記憶されている値としている。このように構成すれば、今サイクルの加算結果は、“前回の加算結果+1”となる。加算器105の加算結果は、レジスタ103に毎サイクル記憶されるため、レジスタ103の記憶する値は、1サイクルにつき”1”上昇する。比較器104は、レジスタ102の8ビットデータとレジスタ103の8ビットデータを比較し、一致した場合、レジスタ101に一致信号を送くる。
レジスタ101は、この一致信号を受けとると、データバス41上の8ビットデータを格納する。変換後データは、変換前データの昇べきの順にデータバス2上に存在するものとしたとき、レジスタ103の値とデータバス41上のデータは、変換前データと変換後データであるという関係が保たれる。すなわち、データバス41上には、変換前データが“00H”の時の変換後データ、変換前データが“01H”の時の変換後データ、変換前データが“02H”の時の変換後データ、…、変換前データが“FFH”の時の変換後データというように256通りのデータが存在し、プロセッサエレメント100には変換前データがどんな値であっても、必ず対応するべき変換後データがデータバス41上に存在するサイクルがある。
プロセッサエレメント100としては、レジスタ102に記憶されている変換前データの値がレジスタ103と一致しているタイミングで、変換後データがデータバス2上にあることを知ることができ、比較器104の一致信号のタイミングでレジスタ101に入力されたデータは、レジスタ102を変換前データとしたときの変換後データとなる。
図5は、図4で示されるプロセッサエレメント100で構成されたSIMDプロセッサである。プロセッサエレメント100、200、300は図4のプロセッサエレメント100と同じ構成のプロセッサエレメントである。
この図5においては、3つのプロセッサエレメントだが、4個目以降のプロセッサエレメントは省略している。
データバス41は、すべてのプロセッサエレメント100…に共通のバスであり、すべてのプロセッサエレメント100…に変換後データのレジスタ101にデータ入力する経路を有している。
プロセッサエレメント100…を制御するこの実施形態のグローバルプロセッサ2は、変換後データ送出装置20aを備える。変換後データ送出装置20aは、データバス41にデータを送出する経路を持つ。
グロバールプロセッサ2は変換後データをデータバス41を介して全プロセッサエレメント100…に与える。各プロセッサエレメント100…は変換後データ取得回路106の比較器104が一致信号を出力するタイミングでレジスタ101に変換後データを格納する。
図6は、図5で示されるSIMDプロセッサと基本的には同じ構成である。相違する点は、図5では、グローバルプロセッサ2が変換後データを送出する部分が変換後データ送出装置20aとなっているのに対して、図6では変換テーブル20bと命令デコーダ20cという構成になっている。変換テーブル20bは、入力として命令デコーダ20cからデータを受け取り、データバス41へデータを出力する。
図7は、図5で示されるSIMDプロセッサと基本的には同じ構成である。相違する点は、図5では変換前データ送出装置20aとなっている部分が、図7では変換テーブル20bと加算器20eとレジスタ20dという構成になっている。
加算器20eとレジスタ20dは、アドレス発生回路を構成するもので、加算器20eは、2個のデータを入力し、1個の出力を得る。演算幅は8ビットである。2個の入力のうち1個は固定値“1”または“−1”とすることが可能である。また、他方の入力にはレジスタ20dの内容が入力可能となっている。この加算器20eは、グローバルプロセッサに備えている加算器(ALU)を用い、レジスタ20dも内部に設けられているレジスタ等を用いればよい。
レジスタ20dは、加算器20eの演算結果を記憶する8ビットのレジスタであり、その内容は加算器20eの入力データとなるほかに変換テーブルRAM20bの入力となる。変換テーブル20bは、入力としてレジスタ20dのデータを受け取り、データバス41へ対応するアドレスのデータを出力する。
図5、図6および図7で示した上記実施形態では、図4で説明したプロセッサエレメント100を用いているので、図5、図6および図7の動作の説明においては、プロセッサエレメント100、200および300の動作説明は省略する。
図5の実施形態では、プロセッサエレメント100、200および300は、同一のデータバス41に接続されている。グローバルプロセッサ2には、変換後データ送出装置20aがあり、変換後データを、変換前データの昇べきの順あるいは降べきの順にデータバス41上に出力する。これにより、プロセッサエレメント100、200および300は上記説明の通り動作することで、各プロセッサエレメントにおいてデータの変換という所望の動作を行うことができる。プロセッサエレメント100、プロセッサエレメント200およびプロセッサエレメント300では、データバス41を共通のものとしていることと、各プロセッサエレメントは独立して動作することから、プロセッサエレメントの数は図示している数より多くても、上記動作はまったく同じである。したがって、プロセッサエレメント数が多ければ多いほど変換するデータが多く、効率が良いことになる。
図6の実施形態では、図5で示された変換前データ送出装置20aを、変換テーブル20bと命令デコーダ20cで置き換えている。命令デコーダ20cは、このSIMDプロセッサが持つ命令をデコードする部分である。SIMDプロセッサの命令として、変換テーブル20bに制御信号を入力するが、その命令コードの並び方、すなわちプログラムによって、データバス41上には、変換前データが“00H”の時の変換後データ、変換前データが“01H”の時の変換後データ、変換前データが“02H”の時の変換後データ、…、変換前データが“FFH”の時の変換後データというように変換前データの昇べきの順に256通りのデータが出力するように制御される。仮に、変換前データ“00H”を変換した変換後データをデータバス41に出力する命令を、table #00h というコードで表現するならば、図12に示すプログラムによって昇べきの順にデータバス41に変換後データを出力できる。図13のプログラムであれば、降べきの順を実現できる。
命令デコーダ20cで、生成された制御信号は、変換テーブル20bで変換後データに変換され、データバス41に出力される。変換テーブル20bは、RAMやROMのような記憶装置として構成しても構わない。たとえば、命令デコーダ20cから入力される制御信号をアドレス入力とすれば、データ出力が丁度変換後データに相当する。さらに付け加えるならば、アドレス入力は変換前データそのものであっても構わない。この場合は、アドレス8ビット(256ワード)、データ8ビットのメモリに相当し、アドレス8ビットが変換前データの8ビットである。また、図6では変換テーブル20bをグローバルプロセッサ2に内蔵するようになっているが、変換テーブル4をRAMやROMで構成する場合、グローバルプロセッサ2の外に設けても構わない。すなわち、通常のSIMDプロセッサが動作するために必要であるプログラムメモリや、データメモリの一部として変換テーブル20bが存在しても構わない。
図7に示す実施形態では、図6で示したものと同様の変換テーブル20bを備えているため、変換テーブル20bの説明は省略する。図7の実施形態では、命令デコーダやプログラムによらず、変換前データの昇べきの順あるいは降べきの順を実現する。図7の例では各プロセッサエレメントと同様の加算器20eと加算結果を記憶するレジスタ20dを備え、加算器20eで“1”または“−1”の加算を行なうことで、レジスタ20dの内容を毎サイクル“+1”または“−1”の値に変更できる。すなわち、これは変換前データの昇べきの順あるいは降べきの順に相当し、このデータを入力される変換テーブル20bで変換後データに変換されデータバス41に出力される。
次に、この発明の更に異なる実施形態のプロセッサエレメント100の構成につき図8に従い説明する。
図8のプロセッサエレメント100は、図1で示されるようなSIMDプロセッサのうちの1個のプロセッサエレメント100だけを示している。この実施形態においては、2つのデータバス41A、41Bを有する。データバス41Aとデータバス41Bは、各プロセッサエレメント間を跨って配置されているデータ幅のバスである。ここでは、データバス幅を8ビットであるとして説明する。
レジスタ102は、8ビットの変換前データの格納用レジスタであり、レジスタ101Aとレジスタ101Bは、8ビットの変換後データのレジスタである。少なくとも、レジスタ101Aには、データバス41Aから値を入力する経路を持ち、レジスタ101Bはデータバス41Bから値を入力する経路を持つ。
加算器105は、2個のデータを入力し、1個の出力を得る。演算幅は8ビットである。2個の入力のうち1個は固定値“2”または“−2”とすることが可能である。他方の入力にはレジスタ103の内容が入力可能となっている。レジスタ103は、加算器105の演算結果を記憶する8ビットのレジスタであり、その内容は加算器105の入力データとなるほかに比較器104の入力となる。比較器104は、レジスタ103とレジスタ102の内容を比較する。2つの入力データが一致した場合、比較器104はレジスタ101Aとレジスタ101Bにデータ入力の指示を出す。
図8で示されるプロセッサエレメント100においては、レジスタ102に記憶されている変換前データを変換し、変換後データとしてレジスタ101Aまたはレジスタ101Bに格納するものである。
加算器105は、2個のデータの加算を可能とするが、一方の入力データを固定値“2”とし、他方の入力データを前サイクルの加算結果、すなわちレジスタ103に記憶されている値とする。このように構成すれば、今サイクルの加算結果は、“前回の加算結果+2”となる。加算器105の加算結果は、レジスタ103に毎サイクル記憶するため、レジスタ103の記憶する値は、1サイクルにつき2上昇する。比較器104は、レジスタ102の下位1ビットを除くデータとレジスタ103の下位1ビットを除くデータを比較し、一致した場合、レジスタ101Aとレジスタ101Bに一致信号を送る。
レジスタ101Aとレジスタ101Bは、この一致信号を受けると、データバス41A上とデータバス41B上の8ビットデータをそれぞれ格納する。変換後データは、下位1ビットを除く変換前データの昇べきの順にデータバス41Aとデータバス41B上に存在するものとし、データバス41A上には変換前データの下位1ビットが“0”のときの変換後データとし、データバス41B上には変換前データの下位1ビットが“1”のときの変換後データとする。このように構成したとき、レジスタ103の値とデータバス41Aまたはデータバス41B上のデータは、変換前データと変換後データであるという関係が保たれる。すなわち、データバス41A上には、変換前データが“00H”の時の変換後データ、変換前データが“02H”の時の変換後データ、変換前データが“04H”の時の変換後データ、…、変換前データが“FEH”の時の変換後データというように128通りのデータが存在し、データバス41B上には、変換前データが“01H”の時の変換後データ、変換前データが“03H”の時の変換後データ、変換前データが“05H”の時の変換後データ、…、変換前データが“FFH”の時の変換後データというように128通りのデータが存在し、プロセッサエレメント100では変換前データがどんな値であっても、必ず対応するべき変換後データがデータバス41Aまたはデータバス41B上に存在するサイクルがある。
プロセッサエレメント100としては、レジスタ102に記憶されている変換前データの下位1ビットを除く値がレジスタ103の下位1ビットを除く値と一致しているタイミングで、変換後データがデータバス41A上とデータバス41B上にあることを知ることができ、比較器104の一致信号のタイミングでレジスタ101Aとレジスタ101Bに入力されたデータは、レジスタ102を変換前データとしたときの変換後データとなる。
図9は、図8で示されるプロセッサエレメント100で構成されたSIMDプロセッサである。プロセッサエレメント100、プロセッサエレメント200、プロセッサエレメント300は図8と同じ構成のプロセッサエレメントである。図9では3つのプロセッサエレメントを示しているが、4個目以降のプロセッサエレメントは省略している。
データバス41Aとデータバス42Bは、すべてのプロセッサエレメントに共通のバスであり、それぞれがすべてのプロセッサエレメントの変換後データのレジスタ101Aおよびレジスタ101Bにデータ入力する経路を持つ。
プロセッサエレメント100…を制御するこの実施形態のグローバルプロセッサ2は、変換後データ送出装置20aを備える。変換後データ送出装置20aは、データバス41Aおよびデータバス41Bにデータを送出する経路を持つ。各プロセッサエレメント100…は変換後データ取得回路106の比較器104が一致信号を出力するタイミングでレジスタ101Aよびレジスタ101Bに変換後データを格納する。
図10は、図9で示されるSIMDプロセッサと基本的には同じ構成である。相違する点は、図9では、グローバルプロセッサ2が変換後データを送出する部分が変換後データ送出装置20aとなっているのに対して、図10では変換テーブル20bと命令デコーダ20cという構成になっている。
変換テーブル4は、入力として命令デコーダ20cからデータを受け取り、データバス41Aおよびデータバス41Bへデータを出力する。
図11は、図9で示されるSIMDプロセッサと基本的には同じ構成である。相違する点は、図9では変換前データ送出装置20aとなっている部分が、図11では変換テーブル20bと加算器20eとレジスタ20dという構成になっている。
加算器20eとレジスタ20dは、アドレス発生回路を構成するもので、2個のデータを入力し、1個の出力を得る。演算幅は8ビットである。2個の入力のうち1個は固定値“2”または“−2”とすることが可能である。他方の入力にはレジスタ6の内容が入力可能となっている。レジスタ20dは、加算器20eの演算結果を記憶する8ビットのレジスタであり、その内容は加算器7の入力データとなるほかに変換テーブル20bの入力となる。変換テーブル20bは、入力としてレジスタ20dのデータを受け取り、データバス41Aおよびデータバス41Bへデータを出力する。
同様に加算器20eの一方の入力値が固定値“−2”の場合は、変換前データの降べきの順にデータバス41Aとデータバス41B上に存在するものとしたとき、レジスタ20dの値とデータバス41Aまたはデータバス41B上のデータは、変換前データと変換後データであるという関係が保たれる。
図9、図10および図11の実施形態では、図8にて示されたプロセッサエレメント100を使用しているので、プロセッサエレメント100、プロセッサエレメント200およびプロセッサエレメント300の動作説明は省略する。
図9の実施例では、プロセッサエレメント100、プロセッサエレメント200およびプロセッサエレメント300は、同一のデータバス41Aとデータバス41Bに接続されている。グローバルプロセッサ2には、変換前データ送出装置20aがあり、変換後データを、変換前データの昇べきの順あるいは降べきの順にデータバス41Aとデータバス41B上に出力する。
これにより、プロセッサエレメント100、プロセッサエレメント200およびプロセッサエレメント300は上記説明の通り動作することで、各プロセッサエレメントにおいてデータの変換という所望の動作を行なうことができる。プロセッサエレメント100、プロセッサエレメント200およびプロセッサエレメント300では、データバス41Aとデータバス41Bを共通のものとしていることと、各プロセッサエレメントは独立して動作することから、プロセッサエレメントの数は図示している数より多くても、上記動作はまったく同じである。したがって、プロセッサエレメント数が多ければ多いほど変換するデータが多く、効率が良いことになる。
図10の実施例では、図9で示された変換前データ送出装置20aを、変換テーブル20bと命令デコーダ20cで置き換えている。
命令デコーダ20cは、このSIMDプロセッサが持つ命令をデコードする部分である。SIMDプロセッサの命令として、変換テーブル20cに制御信号を入力するが、その命令コードの並び方、すなわちプログラムによって、データバス41Aとデータバス41B上には、変換前データが“00H”の時の変換後データと変換前データが“01H”の時の変換後データ、変換前データが“02H”の時の変換後データと変換前データが“03H”の時の変換後データ、…、変換前データが“FEH”の時の変換後データと変換前データが“FFH”の時の変換後データというように変換前データの昇べきの順に128通りのデータが出力するように制御される。仮に、変換前データ“00H”と“01H”を変換した変換後データをデータバス41Aとデータバス41Bに出力する命令を、table #00h というコードで表現するならば、図14に示すプログラムによって昇べきの順にデータバス41Aとデータバス41Bに変換後データを出力できる。図15のプログラムであれば、降べきの順を実現できる。
命令デコーダ20cで、生成された制御信号は、変換テーブル20bで変換後データに変換され、データバス41Aとデータバス41Bに出力される。変換テーブル20cは、上述したように、RAMやROMのような記憶装置として構成しても構わない。たとえば、命令デコーダ20cから入力される制御信号をアドレス入力とすれば、データ出力が丁度変換後データに相当する。さらに付け加えるならば、アドレス入力は変換前データそのものであっても構わない。この場合は、アドレス7ビット(128ワード)データ16ビットのメモリに相当し、アドレス7ビットは、変換前データの上位7ビットである。また、図10では変換テーブル20bをグローバルプロセッサ2に内蔵するようになっているが、上述したように、変換テーブル20bをRAMやROMで構成する場合、グローバルプロセッサ2の外に設けても構わない。すなわち、通常のSIMDプロセッサが動作するために必要であるプログラムメモリや、データメモリの一部として変換テーブル20bが存在しても構わない。
図11の実施例では、図10で示したものと同様の変換テーブル20bを備えているため、変換テーブル20bの説明は省略する。図11の実施例では、命令デコーダやプログラムによらず、変換前データの昇べきの順あるいは降べきの順を実現する。図11の例では各プロセッサエレメントと同様の加算器20eと加算結果を記憶するレジスタ20dを備え、加算器7で“2”または“−2”の加算を行なうことで、レジスタ20dの内容を毎サイクル“+2”または“−2”の値に変更できる。すなわち、これは変換前データの昇べきの順あるいは降べきの順に相当し、このデータを入力される変換テーブル20bで変換後データに変換されデータバス41Aとデータバス41Bに出力される。
以上の説明においては、データバス幅を8ビットと仮定しているが、データバス幅は任意の値でも良い。ただし、データバス幅が1ビット増える毎に、全データの変換に要するサイクル数は、2のべき乗で増加するため、16ビット以上のデータは、現実的ではないとも考えられる。
また、上記した図8乃至図11に示した実施形態おいては、請求項でいう“n”に相当する数値として、“2”を選択した実施形態としたが、他に“4”や“8”のような2のべき乗の数値が考えられる。その場合、図8乃至図11では2本であったデータバスがn本となり、各プロセッサエレメントにおいて変換後データレジスタがn個となる一方、比較器などで比較されるデータや、変換テーブルに入力するデータのデータ幅は削減されることになる。
図8乃至図11に示した実施形態おいては、所望の変換後データが、複数の変換後データレジスタうちのどれかに存在するという状態であるが、これはSIMD機能を利用したプログラミングによって変換前データの下位ビットを調査するなどで解決できる手段と考えられるため、本発明の説明には敢えて加えていない。
上述した図2に示した実施形態においては、レジスタファイル31の外部入出力する方式としてアドレッシング方式を採用し、レジスタファイル31をプロセッサ外部からアクセスし、外部からクロックとアドレス、リード/ライト制御を入力することで任意のレジスタを読み書きできるように構成して場合につき説明したが、この発明は他の方式、例えば、外部入出力にシフトレジスタ方式を用いたプロセッサにも適用できる。図15にシフトレジスタ方式を用いた場合の基本構成を示す。
図15に示すように、入力画像データを一時的に蓄積する入力シフトレジスタと、非線形処理された画像データが並列入力される外部出力シフトレジスタとを備える。入力シフトレジスタには、イメージスキャナなどから送られる外部画像データが外部データバスから入力シフトレジスタに与えられる。入力シフトレジスタには並列nビットデータがビット毎に順次シフトされる。この入力シフトレジスタの段数は、プロセッサエレメント100の組数の段数を有し、この実施形態では256段の段数を有する。入力シフトレジスタに蓄積されたデータはプロセッサエレメント100のレジスタファイルへ移される。レジスタファイルへの書き込み動作は入力シフトレジスタの各段において同時に行われる。このように、レジスタファイル31にデータが格納されると、上述したこの発明による手法による非線形処理が演算アレイで行われる。
非線形処理が行われたレジスタ102等に格納されたデータは出力シフトレジスタの各段に転送される。この出力シフトレジスタのレジスタ段数はプロセッサエレメント100の組数分だけであり、プロセッサエレメント100のレジスタファイルからデータが出力シフトレジスタの各段に同時に転送される。この出力シフトレジスタに与えられるクロックでデータがシリアルに出力される。そして、出力されたデータはバッファメモリなどに一時格納され、プリンタなどの外部出力装置に与えられる。
このように、上記したシフトレジスタ方式においても、非線形処理において、この発明を適用すれば、効率よく非線形処理が行える。
次に、この発明のSIMD型プロセッサをデジタル複写機などの画像処理装置に用いた場合につき図16ないし図18を参照して説明する。
イメージスキャナで読み取られた画像データ(nビットのデジタル画像データ)が外部データバスからFIFO7に与えられる。FIFO7に1走査ライン分のデータが格納されると、SIMD型プロセッサ1のグローバルプロセッサ2からの制御信号により、この実施の形態では256個の画像データがプロセッサエレメント100のレジスタへ与えられる。
上記したように、この実施形態においては、1つのプロセッサエレメント単位に8ビットのレジスタが32本内蔵されており、256プロセッサエレメント分の組みがアレイ構成になっている。レジスタはプロセッサエレメントごとにR0、R1、R2、...R31と呼ばれている。それぞれのレジスタは演算アレイに対して1つの読み出ししポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバス37で演算アレイからアクセスされる。32本のレジスタの内、24本(R0〜R23)は、プロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード/ライト制御を入力することで任意のレジスタを読み書きできる。
残りの8本(R24〜R31)のレジスタはプロセッサエレメント演算の一時的な演算データ保存用として使用されるが、グローバルプロセッサ2の命令に従いテーブルからのデータを書き込むこともできる。このデータの書き込みは、変換後データ所得回路106で一致したプロセッサエレメントに書き込みが可能に構成されている。
プロセッサエレメント100内の演算アレイ部は上記したように、16ビットALUと16ビットAレジスタ、Fレジスタを内蔵している。プロセッサエレメント命令による演算はレジスタから読み出されたデータもしくはグローバルプロセッサ2から与えられたデータをALUの片側の入力としてもう片側にはAレジスタの内容を入力として結果をAレジスタに格納する。したがって、Aレジスタ35aとR0〜R31レジスタもしくはグローバルプロセッサ2から与えられたデータとの演算が行われることとなる。
FIFO7より転送され、プロセッサエレメント100のレジスタに格納された画像データは、前述した図4等に示す実施形態に基づき非線形処理のためのテーブル変換が行われる。すなわち、レジスタファイルのレジスタに格納された演算(演算前)対象データをこのレジスタの内容を参照して、変換後レジスタへデータバス4らデータを取得するか否か判断し、データバスに与えられているデータがレジスタに格納されている変換前データに対応する変換後データと一致する時に、そのデータをレジスタに格納させるものである。そして、上述した図3等に示す実施形態に基づきテーブル変換が終了する。
非線形処理が行われたプロセッサエレメント100のレジスタファイルに格納されたデータがFIFO8に転送される。FIFO8は1走査ライン分のデータを格納すると、データをプリンタなどの外部出力装置に転送する。
また、画像データを予めラインメモリ9に蓄えておき、ラインメモリ9からプロセッサエレメントブロック3にデータを転送し、非線形処理を行ったデータをラインメモリ9に格納するように構成しても良い。このときのデータ転送はメモリコントローラ91を介してRAM92へ入出力される。
図12にFIFO7の一例を図13にFIFO8の一例をそれぞれ示す。これらFIFO7,8はメモリコントローラ72(82)、バッファメモリ71(81)を備える。外部データ入力はメモリコントローラ72を介してバッファメモリ71へデータが格納され、1ライン分のデータをバッファメモリ71に格納すると、メモリコントローラ72からプロセッサエレメントブロック3へデータを転送する。外部データ出力はプロセッサエレメントブロック3からメモリコントローラ72を介してバッファメモリ71へデータが格納され、1ライン分のデータをバッファメモリ71に格納すると、メモリコントローラ72から外部へデータを出力する。
上記した画像処理装置は、イメージスキャナで取り込んだ画像データをプリンタ部へ出力する場合に付き説明したが、これに限らずデジタルビデオ、デジタルカメラなどのデジタル画像を非線形処理する場合にもこの発明は適用できる。また、外部出力もプリンタに限らず、ディスプレイへの出力、データ転送などの方式で出力する場合でもこの発明は適用できる。
この発明にかかるSIMD型プロセッサの全体構成を示すブロック図である。 この発明が適用されるSIMD型プロセッサの内部構成を示すブロック図である。 この発明の実施の形態にかかるSIMD型プロセッサのプロセッサエレメントを示すブロック図である。 この発明の実施の形態にかかるSIMD型プロセッサのプロセッサエレメントを示すブロック図である。 この発明の実施の形態にかかるSIMD型プロセッサの要部を示すブロック図である。 この発明の他の実施の形態にかかるSIMD型プロセッサの要部を示すブロック図である。 この発明の更に他の実施の形態にかかるSIMD型プロセッサの要部を示すブロック図である。 この発明の実施の形態にかかるSIMD型プロセッサの他のプロセッサエレメントを示すブロック図である。 図8のプロセッサエレメントを用いたこの発明の実施の形態にかかるSIMD型プロセッサの要部を示すブロック図である。 図8のプロセッサエレメントを用いたこの発明の他の実施の形態にかかるSIMD型プロセッサの要部を示すブロック図である。 図8のプロセッサエレメントを用いたこの発明の更に他の実施の形態にかかるSIMD型プロセッサの要部を示すブロック図である。 プログラムによって変換後データを送出する場合のプログラムを示す図である。 プログラムによって変換後データを送出する場合のプログラムを示す図である。 プログラムによって変換後データを送出する場合のプログラムを示す図である。 プログラムによって変換後データを送出する場合のプログラムを示す図である。 この発明が適用される他のSIMD型プロセッサの全体構成を示すブロック図である。 この発明に利用される画像処理装置を示すブロック図である。 入力用FIFOの一例を示すブロック図である。 出力用FIFOの一例を示すブロック図である。
符号の説明
2 グローバルプロセッサ
3 プロセッサエレメントブロック
3a プロセッサエレメント
100、200,300 プロセッサエレメント
101 変換後データを記憶するレジスタ
102 変換前データを記憶するレジスタ
106 変換後データ取得回路

Claims (1)

  1. プログラムを解読しプロセッサ全体を制御するグローバルプロセッサと、データを処理するプロセッサエレメントを複数個備えて構成されるプロセッサエレメントブロックと、を有する並列プロセッサにおいて、各プロセッサエレメントは、変換前データを記憶する変換前データ用レジスタと、データバスから送られてくる変換後データを記憶する変換後データ用レジスタと、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データである判別する判別手段と、を備え、
    前記判別手段は、データバスから送られてくるデータの変換前にあたる変換前算出データを計算によって求め、該変換前算出データが前記変換前データ用レジスタに記憶された前記変換前データと一致すると、データバスから送られてくるデータが記憶されている変換前データに相当する変換後データであると判別し、
    前記判別手段がデータバスから送られてくるデータが記憶されている変換前データに相当する変換後データであると判別すると、データバスから送られてくる前記変換後データを前記変換後データ用レジスタに記憶させることを特徴とする並列プロセッサ。
JP2006327121A 2006-12-04 2006-12-04 並列プロセッサ Expired - Fee Related JP4451433B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006327121A JP4451433B2 (ja) 2006-12-04 2006-12-04 並列プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006327121A JP4451433B2 (ja) 2006-12-04 2006-12-04 並列プロセッサ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2000302018A Division JP3971559B2 (ja) 2000-10-02 2000-10-02 並列プロセッサ及びそれを用いた画像処理装置

Publications (2)

Publication Number Publication Date
JP2007109253A JP2007109253A (ja) 2007-04-26
JP4451433B2 true JP4451433B2 (ja) 2010-04-14

Family

ID=38035023

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006327121A Expired - Fee Related JP4451433B2 (ja) 2006-12-04 2006-12-04 並列プロセッサ

Country Status (1)

Country Link
JP (1) JP4451433B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5170579B2 (ja) * 2008-01-31 2013-03-27 富士ゼロックス株式会社 再構成可能なデバイス
JP2013029969A (ja) * 2011-07-28 2013-02-07 Fuji Xerox Co Ltd 画像処理装置、画像形成装置及びプログラム

Also Published As

Publication number Publication date
JP2007109253A (ja) 2007-04-26

Similar Documents

Publication Publication Date Title
US4761755A (en) Data processing system and method having an improved arithmetic unit
US6912638B2 (en) System-on-a-chip controller
US20010008563A1 (en) Parallel processor and image processing apparatus
KR20070001902A (ko) 레지스터와 메모리 사이에 데이터를 이동시키는 데이터처리장치 및 방법
JP2008071130A (ja) Simd型マイクロプロセッサ
JP3971535B2 (ja) Simd型プロセッサ
JP3975231B2 (ja) 配列されたsimdのための汎用レジスタファイルアーキテクチャ
JP4451433B2 (ja) 並列プロセッサ
JP3971559B2 (ja) 並列プロセッサ及びそれを用いた画像処理装置
JP4442905B2 (ja) 画像データの処理方法
JP4294190B2 (ja) 並列プロセッサ及びそれを用いた画像処理装置
JP3821198B2 (ja) 信号処理装置
JP4408113B2 (ja) 信号処理方法
JP4482356B2 (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
US8024550B2 (en) SIMD processor with each processing element receiving buffered control signal from clocked register positioned in the middle of the group
JP4413905B2 (ja) Simd型プロセッサ
EP1462932A2 (en) Vector processor and register addressing method
JP4516495B2 (ja) Simd型マイクロプロセッサにおけるデータ処理方法
JP2001216275A (ja) 画像処理装置および画像処理方法
JP2008071037A (ja) Simd型マイクロプロセッサ
JP3971543B2 (ja) Simd型プロセッサ
JP4442907B2 (ja) Simd型プロセッサ
JP3834869B2 (ja) 並列処理プロセッサ
JP2009104521A (ja) 並列処理装置
JP2002207707A (ja) 定数選択機能を有するsimd型マイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090728

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090729

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20090909

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20091027

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100127

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130205

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140205

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees