(57)【要約】【課題】  シングルポートメモリを用いることで回路規模の増加を抑えながら、同時に変倍機能も内蔵可能な簡単な構成のＳＩＭＤ型プロセッサを用いた信号処理装置を提供する。【解決手段】  ＳＩＭＤ型プロセッサのＰＥが内蔵しているレジスタファイルにプロセッサ外部からアクセスするための外部インタフェースに接続され、画像メモリに格納されたデータを読み出して、ＰＥへデータの書き込みを行うと共にＰＥからのデータを読み出して、メモリにデータの書き込みを行うメモリコントローラを備え、データを分割して演算処理を行う信号処理装置であって、メモリコントローラはＳＩＭＤプロセッサの前後の無効部分のデータを除いて、ＰＥから演算済みのデータの読み出しを行い、このデータをメモリに書き込みを行うと共に、前段の処理で無効部分に当たるデータ部分のアドレスを戻して、メモリからデータを読み出しＰＥへデータの書き込みを行う。【選択図】  図７
2006155637.tif 000002
【特許請求の範囲】
【請求項１】
データを演算処理する演算手段及び当該演算手段で演算処理されるデータを保持するとともに当該演算手段で演算処理されたデータを保持するデータ保持手段を備えるＳＩＭＤ型プロセッサのプロセッサエレメントと、複数の前記プロセッサエレメントそれぞれに接続されるデータ転送バスと、前記複数のプロセッサエレメントに割り付けられるアドレスに基づき、所定のプロセッサエレメントを指定する指定手段と、この指定手段にアドレスを供給するアドレスバスと、前記複数のプロセッサエレメントが内蔵しているデータ保持手段にプロセッサ外部からアクセスするためのデータ転送用インタフェースと、このデータ転送インタフェースに接続され、前記アドレスバスに供給される前記所定のプロセッサエレメントを指定するためのアドレスを生成するとともに、メモリに格納されたデータを読み出して、プロセッサエレメントへデータの書き込みを行うと共に前記プロセッサエレメントからデータを読み出して、前記メモリにデータの書き込みを行うメモリコントローラと、を備え、前記メモリコントローラは、前記データ転送用インタフェースを介して、各プロセッサエレメントのデータ保持手段から前記メモリにデータ転送する場合に、転送を開始するプロセッサエレメントのアドレスと転送を終了するプロセッサエレメントのアドレスを指定し、所定数のデータを除いて、各プロセッサエレメントから演算済みのデータの読み出しを行うことを特徴とする信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は一つの演算命令により複数の画像データ等を並列処理するＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型プロセッサを用いた信号処理装置に関し、例えばデジタルコピーなどの画像処理に用いて好適な信号処理装置に関するものである。
【背景技術】
【０００２】
近年、デジタル複写機やファクリミリ装置等において、画素数を増加させたり、或いはカラー対応にするなど画像の向上が図られている。そして、この画像の向上に伴い、処理すべきデータ数が増加している。ところで、複写機などにおけるデータ処理は全ての画素に対して同じ演算処理を施すことが多い。そこで、１つの命令で複数のデータに対して同時に同じ演算処理を行うＳＩＭＤ方式のプロセッサが用いられるようになっている。
【０００３】
通常、ＳＩＭＤ方式のプロセッサを用いて画像処理を行う場合、主走査方向にプロセッサエレメント（ＰＥ）を展開する。このため、フィルター処理などの画像処理を行う場合、注目画素の上下の参照画素が必要になり、前のラインの画素データをラインディレイさせて、ラインメモリに格納しておくことが考えられる。
【０００４】
図１６に、ＳＩＭＤ方式を用いた画像処理装置の概略ブロック図を示す。図に示すように、この画像処理装置は、画像データが格納される外部画像メモリ（ＲＡＭ）１０１、例えば、１０２４個のプロセッサエレメントからなるプロセッサエレメントブロック１０３、グローバルプロセッサ１０４を備える。
【０００５】
各プロセッサエレメント（ＰＥ）は、ｎ個の汎用レジスタ（Ｒ０〜Ｒｎ−１）と演算アレイを有し、汎用レジスタは、通常演算アレイの外部にレジスタファイルとして持つ形を取っている。それぞれのレジスタはシフトレジスタとしてシリアルポートを介して外部とアクセス可能となっている。図において、斜線部が単位プロセッサエレメントになる。
【０００６】
グローバルプロセッサ１０４はプログラムメモリ（ＰＲＡＭ）１０５のアドレス生成手段を有し、ＰＲＡＭ１０５よりプロセッサエレメントブロック１０３のプロセッサエレメントに与える命令コードをリードし、演算アレイ及びレジスタファイルの制御を行っている。
【０００７】
各ＰＥの汎用レジスタのシリアルポートに接続されるデバイスはシステム構成によって異なるが、２ライン分のラインディレイのみが必要なシステムでは、例えば、Ｒ０に２ライン前の画素データ、Ｒ１に１ライン前の画素データ、Ｒ２に現ライン画素データを配置するとして、Ｒ０とＲ１のシリアルポートにシリアルパラレル変換器１０２を配置して、外部ＲＡＭ１０１に接続するといった構成をとっている。
【０００８】
上記のような構成をもち、画像処理装置を実現している例としては、例えばＳＶＰ（ＳＥＲＩＡＬ  ＶＩＤＥＯ  ＰＲＯＣＥＳＳＯＲ）が知られている。
【０００９】
従来のＳＩＭＤ方式のプロセッサは、殆どが主走査方向の画素数以上のプロセッサエレメントを持っているため、外部メモリ（ＲＡＭ）１０１に対する制御には難しい処理を必要としない。また、デジタルコピーなど画像処理において拡大、縮小などの変倍機能を実現するためには、別途ＡＳＩＣを外付けするか、特開平０８−１２３６８３号公報（ＩＰＣ：Ｇ０６Ｆ  ９／３８）（特許文献１）に記載されているようなＳＩＭＤ方式のプロセッサ内部に変倍制御用のフラグを持つといった構成を取ることで実現できる。
【特許文献１】特開平０８−１２３６８３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、画像処理の精度は近年ますます向上しており、主走査方向の画素数は増加する傾向にある。また、従来のＳＩＭＤ型プロセッサにおいて、プロセッサエレメント数の多いものは１ビットの演算アレイを使用するなど、小規模の回路を用いて回路規模の増大を防止しているのが普通である。
【００１１】
デジタルコピーなどにＳＩＭＤ型プロセッサを応用しようとした場合に、例えば６００ＤＰＩ（Ｄｏｔ  Ｐｅｒ  Ｉｎｃｈ）の精度でＡ４のサイズの画像を扱う場合、７０００画素以上のプロセッサエレメント数が必要となり、単純にプロセッサエレメント数を増やすのは現実的ではない。そこで、これを解決するために、主走査方向を分割して処理を行うことが考えられるが、ラインメモリとしてデュアルポートメモリ（ＲＡＭ）が必要になり回路規模が増加するという難点がある。
【００１２】
一方、特開平１０−３２６２５８号公報（ＩＰＣ：Ｇ０６Ｆ  １５／１６）においては、主走査方向の画素を２分割して、全プロセッサエレメント数を半分に分割してパイプライン処理を行うことで処理時間の短縮を可能にしたデータ演算システムが提案されている。しかしながら、この方法では、プロセッサエレメントとアクセス可能なデータメモリのサイズを越えるような画素数の処理を行うことが出来ない。
【００１３】
さらに、プロセッサエレメントに変倍制御用のフラグを持つ構成では、分割数が増加した場合に処理が複雑になるため、ＳＩＭＤ型プロセッサの外部で変倍処理を実現するほうが望ましい。しかし、別途ＡＳＩＣを用いて変倍機能を実現すると、プロセッサの汎用性を減少させてしまうことになる。
【００１４】
そこで、本発明では、シングルポートメモリ（ＲＡＭ）を用いることで回路規模の増加を抑えながら、同時に変倍機能も内蔵可能な簡単な構成のＳＩＭＤ型プロセッサを用いた信号処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
この発明は、データを演算処理する演算手段及び当該演算手段で演算処理されるデータを保持するとともに当該演算手段で演算処理されたデータを保持するデータ保持手段を備えるＳＩＭＤ型プロセッサのプロセッサエレメントと、複数の前記プロセッサエレメントそれぞれに接続されるデータ転送バスと、前記複数のプロセッサエレメントに割り付けられるアドレスに基づき、所定のプロセッサエレメントを指定する指定手段と、この指定手段にアドレスを供給するアドレスバスと、前記複数のプロセッサエレメントが内蔵しているデータ保持手段にプロセッサ外部からアクセスするためのデータ転送用インタフェースと、このデータ転送インタフェースに接続され、前記アドレスバスに供給される前記所定のプロセッサエレメントを指定するためのアドレスを生成するとともに、メモリに格納されたデータを読み出して、プロセッサエレメントへデータの書き込みを行うと共に前記プロセッサエレメントからデータを読み出して、前記メモリにデータの書き込みを行うメモリコントローラと、を備え、前記メモリコントローラは、前記データ転送用インタフェースを介して、各プロセッサエレメントのデータ保持手段から前記メモリにデータ転送する場合に、転送を開始するプロセッサエレメントのアドレスと転送を終了するプロセッサエレメントのアドレスを指定し、所定数のデータを除いて、各プロセッサエレメントから演算済みのデータの読み出しを行うことを特徴とする。
【００１６】
上記のように構成することで、プロセッサエレメントの数が主走査方向の画素数より少ない場合においても、容易にＳＩＭＤプロセッサでの演算が行え、フィルタ処理などの重み付け演算を行う場合に有効な画素のみを転送できる。
【００１７】
前記メモリコントローラは、メモリへの書き込み転送と読み込み転送とを時分割で行うように制御するとよい。
【００１８】
このように構成することで、シングルポートメモリをＦＩＦＯもしくはＬＩＦＯメモリとして用いることが可能となり、シングルポートメモリを用いながらラインメモリを実現できる。
【００１９】
また、前記メモリコントローラは、データ転送用インタフェースを介して、各プロセッサエレメントのデータ保持手段から前記メモリにデータ転送する場合に、転送を開始するプロセッサエレメントのアドレスと転送を終了するプロセッサエレメントのアドレスを指定するレジスタを備えるように構成すればよい。たとえば、プロセッサエレメントのアドレスカウンタに初期値ロード機能を付加し、プロセッサエレメントのアドレスを基準としたオフセット値の設定ができるように構成すればよい。
【００２０】
さらに、前記メモリコントローラは、前記メモリからデータ転送用インタフェースを介して各プロセッサエレメントのデータ保持手段にデータ転送する場合に、転送を終了するプロセッサエレメントのアドレスと、転送終了後にメモリのリードポインタを戻すためのプロセッサエレメントのアドレスを指定するレジスタを備えるように構成することができる。例えば、プロセッサエレメントのアドレスと設定値との比較器を設け、設定値と等しいプロセッサエレメントアドレスのレジスタに転送されたデータが格納されていたメモリのリードポインタをリロードするように構成すればよい。
【００２１】
上記のように構成することで、主査方向の画素数よりも少ないプロセッサエレメント数のＳＩＭＤ型プロセッサを用いた場合に、フィルタ処理などの重み付け演算を行う場合に有効な画素のみを転送できる。
【００２２】
また、前記メモリコントローラは、メモリの任意のアドレス領域の下限値と上限値をレジスタで設定して、その領域をリング状に使用するように構成することができる。例えば、メモリのポインタの下限値、上限値レジスタを設け、それぞれ比較器を持ち、条件が揃った場合にそれぞれのレジスタの値をアドレスバスに出力できるように構成すればよい。
【００２３】
上記のように構成することで、複数のステップを持つような画像処理の場合に、処理ステップごとにデータを保管することができる。
【００２４】
また、前記データ転送用インタフェースは、偶数のアドレスを持つプロセッサエレメントと奇数のアドレスを持つプロセッサエレメントのデータ保持手段に同時にアクセスすることが可能になるように構成するとよい。たとえば、ＳＩＭＤ型プロセッサのデータ転送ポートを偶数のアドレスを持つプロセッサエレメントと奇数のアドレスを持つプロセッサエレメントのデータ保持手段にアクセスするための２つの独立したポートを持つ構成とし、１サイクルで２プロセッサエレメント分のデータを処理できるように構成すればよい。
【００２５】
さらに、メモリとの入出力バスのビット幅がプロセッサエレメントとのデータ転送ビット幅よりも広くするとよい。たとえば、メモリとの入出力バッファを４プロセッサエレメント分持つことでメモリのビット幅を４プロセッサエレメント分の幅に構成すればよい。
【００２６】
上記のように構成することで、全プロセッサエレメントのデータ保持手段へデータ転送する時間を半分にすることができる。また、メモリのアクセスタイムに余裕を持たせることができる。
【００２７】
また、この発明は、各プロセッサエレメントのデータ保持手段からデータ転送用インタフェースを介してメモリにデータ転送する場合に、このデータ転送と同期を取った外部からのライト制御信号が”０”である場合にデータを書き込み、”１”である場合にデータの書き込みを禁止するように構成することができる。たとえば、同期信号を外部よりシーケンスユニットに入力し、ライト転送を開始するタイミングを制御することで、ライト制御信号とライト転送との同期を取ることができるようにし、またライト制御信号の値によって、プロセッサエレメントのデータ転送ポートからリードされたデータを整形してＲＡＭにライトするためのライトバッファ部の制御を変えることによって、ライト制御信号に応じた転送を行えるように構成すればよい。
【００２８】
さらに、前記メモリからデータ転送用インタフェースを介して各プロセッサエレメントのデータ保持手段にデータ転送する場合に、このデータ転送と同期を取った外部からのリード制御信号が”０”である場合には、メモリからデータリードした値をデータ転送用インタフェースに書き込み、”１”の場合には、その転送の前で最後に外部信号が”０”であった場合に転送されたデータと同じ値をデータ転送用インタフェースに書き込むように構成することができる。たとえば、同期信号を外部よりシーケンスユニットに入力し、リード転送を開始するタイミングを制御することで、リード制御信号とリード転送との同期を取ることができるようにし、またリード制御信号の値によって、ＲＡＭからリードされたデータを整形してプロセッサエレメントのデータ転送ポートにライトするためのリードバッファ部の制御を変えることによって、リード制御信号に応じた転送を行えるように構成すればよい。
【００２９】
上記のように構成することで、デジタル画像処理における変倍処理をメモリコントローラで実現できるため、ＳＩＭＤ型プロセッサ自体の汎用性と回路規模を保つことができる。
【００３０】
また、この発明は、前記メモリには画像データが格納され、前記ＳＩＭＤ型プロセッサのプロセッサエレメントの数は主走査方向の画素数よりも少なく構成され、前記メモリコントローラは主走査方向の全画素を２つ以上に分割して処理を行うように、データの書き込み及び読み込みの処理の制御を行うように構成することができる。
【００３１】
上記のように構成することで、デジタルコピーなどの主走査方向の画素数が極めて多い画像処理装置を実現する場合に、プロセッサエレメント数を増減するなどのＳＩＭＤ型プロセッサのアーキテクチャそのものを変更することなく画像処理装置を構築することができる。
【発明の効果】
【００３２】
上述したように、この発明によれば、プロセッサエレメントの数が主走査方向の画素数より少ない場合においても、容易にＳＩＭＤプロセッサでの演算が行え、フィルタ処理などの重み付け演算を行う場合に有効な画素のみを転送できる。
【発明を実施するための最良の形態】
【００３３】
以下、この発明に係るＳＩＭＤ型プロセッサ１の実施の形態を図面を参照して説明する。
【００３４】
まず、この発明にかかるＳＩＭＤ型プロセッサの全体構成について、図１に従い説明する。この発明のＳＩＭＤ型プロセッサ１は、図１に示すように、グローバルプロセッサ２、本実施形態では１０２４組の後述するプロセッサエレメント３ａからなるプロセッサエレメントブロック３、メモリコントローラ５と接続される外部インターフェース４から構成される。メモリコントローラ５はグローバルプロセッサ２の命令に基づき、シングルポートメモリ（ＲＡＭ）で構成された外部画像メモリ６から演算対象となる画像データをプロセッサ内部の入出力用のレジスタフィル３１に与えるとともに、演算処理されたデータをレジスタファイル３１から画像メモリ（ＲＡＭ）６へ転送するものである。
【００３５】
グローバルプロセッサ２は、図２に示すように、プロセッサエレメントブロック３、外部インタフェース４及びメモリコントローラ５を制御するためのプログラムが格納されたプログラムＲＡＭ２１、及びこのプログラムＲＡＭ２１に基づきグローバルプロセッサ２、プロセッサエレメントブロック３、外部インタフェース４、メモリコントローラ５を制御するシーケンスユニット２２を備える。具体的には、このシーケンスユニット２２は、グローバルプロセッサ２に備えられている後述する算術論理演算器２３（以下、「ＡＬＵ２３」という。）等を制御する。
【００３６】
また、このシーケンスユニット２２は、プロセッサエレメントブロック３を構成するレジスタファイル３１、及び演算アレイ３６を制御する。この演算アレイ３６は、マルチプレクサ３２、シフト拡張回路３３、算術論理演算器３４（以下、「ＡＬＵ３４」という）、及びレジスタ３５を備える。なお、このグローバルプロセッサ２は、いわゆるＳＩＳＤ型であり、一つの演算命令に対して一つの演算処理を行うものである。
【００３７】
さらに、このシーケンスユニット２２は、メモリコントローラ５に対してデータ転送のための動作設定用データ及びコマンド等を送る。メモリコントローラ５は、シーケンスユニット２２の動作設定用データ及びコマンドに基づき、プロセッサエレメント３ａのアドレス指定のためのアドレス制御信号、プロセッサエレメント３ａを構成するレジスタ３１ｂにデータのリード／ライトを指示するためのリード／ライト制御信号、クロック信号を与えるためのクロック制御信号を外部インタフェース４に与える。
【００３８】
ここで、リード／ライト制御信号のうちライト制御信号とは、演算処理されるデータをデータバス４６ａ（４６ｂ）より取得して、プロセッサエレメント３ａのレジスタ３１ｂに保持させるための信号をいう。一方、リード／ライト制御信号のうちリード制御信号とは、プロセッサエレメント３ａのレジスタ３１ｂが保持している演算処理されたデータを、データバス４６ａ（４６ｂ）へ与えるようにレジスタ３１ｂに指示するための信号をいう。
【００３９】
この実施の形態におけるプロセッサエレメントブロック３は、隣り合う２つのプロセッサエレメント３ａに偶数番号、奇数番号を割り付けて１組とすると共に、この１組のプロセッサエレメント３ａには同一のアドレスを割り付けている。
【００４０】
メモリコントローラ５は、グローバルプロセッサ２からのコマンドを受けて、プロセッサエレメントブロック３を構成するプロセッサエレメント３ａのアドレスを指定する信号（以下、「アドレス指定信号」という。）を作成し、外部インターフェース４からアドレスバス４１ａを介してプロセッサエレメント３ａのレジスタコントローラ３１ａヘ送る。また、メモリコントローラ５は、後述するように、プロセッサエレメント３ａを構成するレジスタ３１ｂに対して、データのリード／ライトを指示するための信号（以下、「リード／ライト指示信号」という。）を、リード／ライト信号線４５ａ（４５ｂ）を介してプロセッサエレメント３ａの後述するレジスタコントローラ３１ａヘリード／ライト信号が与えられる。偶数用リード／ライト信号線４５ａは、偶数のプロセッサエレメント３ａにリード／ライト信号を与え、奇数用リード／ライト信号線４５ｂは、奇数のプロセッサエレメント３ａにリード／ライト信号を与える。
【００４１】
また、メモリコントローラ５は、外部インタフェース４からクロック信号線４１ｃを介してプロセッサエレメント３ａの後述するレジスタコントローラ３１ａへクロック信号を与える。
【００４２】
さらに、メモリコントローラ５は、上述したように、ＳＩＭＤ型プロセッサ１の外部に設けられた画像メモリ６に格納されているデータを、本実施形態では１６ビットのパラレルデータとして、外部インタフェース４に与える。この１６ビットのデータは、偶数番号が割り付けられたプロセッサエレメント３ａに与えられる８ビットと、奇数番号が割り付けられたプロセッサエレメント３ａに与えられる８ビットとから構成されている。それぞれ８ビットデータは偶数用データバス４６ａ及び奇数用データバス４６ｂに与えられる。この８ビットのパラレルデータについては、データに応じて適宜変更しても問題ない。このデータバス４６ａ，４６ｂは、レジスタ３１ｂに保持されている演算処理されたデータが、ＳＩＭＤ型プロセッサ１の外部に設けられた画像メモリ６に送られる時にも使用される。
【００４３】
なお、画像メモリ６は演算処理されるデータを格納するとともに、演算処理されたデータを格納するものであり、これらの画像メモリ６はＳＩＭＤ型プロセッサ１の内部に設けても問題ない。また、メモリコントローラ５と画像メモリ６との間のデータ転送についても、本実施の形態では、後述するように、３２ビットのパラレルデータとして転送されるものとして扱うが、データに応じて適宜変更しても問題ない。なお、メモリコントローラ５が行うその他の動作については後述する。
【００４４】
また、グローバルプロセッサ２は、上記シーケンスユニット２２からの命令により、算術論理演算を行うＡＬＵ２３、演算データを格納するデータＲＡＭ２４を備える。さらに、グローバルプロセッサ２は、演算処理されるデータ等を保持するためのレジスタ群２５を備える。
【００４５】
このレジスタ群２５は、プログラムのアドレスを保持するプログラムカウンタＰＣ、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ３レジスタ、レジスタ待避、復帰時に待避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）、同じくＩＲＱ時とＮＭＩ時の分岐元アドレスを保持するＬＩ、ＬＮレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）を内蔵している。
【００４６】
また、レジスタ群２５は、プロセッサエレメントブロック３の後述するレジスタ３５に接続されており、このレジスタ３５との間でシーケンスユニット２２の制御によりデータの交換が行われる。
【００４７】
プロセッサエレメントブロック３は、図１及び図２に示すように、レジスタファイル３１、マルチプレクサ３２、シフト・拡張回路３３、算術論理演算器３４（以下、「ＡＬＵ３４」という。）、レジスタ３５、を一単位とする複数のプロセッサエレメント３ａを備える。レジスタファイル３１には、１つのプロセッサエレメント３ａ単位に８ビットのレジスタが３２本内蔵されており、本実施形態では１０２４のプロセッサエレメント分の組がアレイ構成になっている。レジスタファイル３１は１つのプロセッサエレメント（ＰＥ）３ａごとにＲ０、Ｒ１、Ｒ２、．．．Ｒ３１と呼ばれているレジスタが内蔵されている。それぞれのレジスタファイル３１は演算アレイ３６に対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバスで演算アレイ３６からアクセスされる。３２本のレジスタの内、２４本はプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード／ライト制御を入力することで任意のレジスタを読み書きできる。
【００４８】
レジスタの外部からのアクセスは１つの外部ポートで各プロセッサエレメント３ａの１つのレジスタがアクセス可能であり、外部から入力されたアドレスでプロセッサエレメントの番号（０〜１０２３）を指定する。したがって、レジスタアクセスの外部ポートは全部で２４組搭載されている。また、外部からのアクセスされるデータは上述したように、偶数のプロセッサエレメント３ａと奇数のプロセッサエレメント３ａの１組で１６ビットデータとなっており、１回のアクセスで２つのレジスタを同時にアクセスしている。
【００４９】
本実施形態では、プロセッサエレメント３ａの数を１０２４個として説明するが、これに限定されるものでなく適宜変更して使用してもよい。このプロセッサエレメント３ａには、グローバルプロセッサ２のシーケンスユニット２２により、外部インタフェース４に近い順に０から１０２３までのアドレスが割り付けられる。
【００５０】
プロセッサエレメント３ａのレジスタファイル３１は、レジスタコントローラ３１ａ、２種類のレジスタ３１ｂ、３１ｃを備える。本実施形態では、図３に示すように、一単位のプロセッサエレメント３ａ毎に、レジスタコントローラ３１ａとレジスタ３１ｂとを２４組備え、さらにレジスタ３１ｃを８個備えている。なお、図３では２組のプロセッサエレメント３ａにおけるレジスタファイル３１の一部を表しており、図３中の１プロセッサエレメントとは１つのプロセッサエレメント３ａを表している。ここで、本実施形態では、レジスタ３１ｂ、３１ｃを８ビットのものとして扱うが、これに限定されるものでなく適宜変更して使用してもよい。
【００５１】
レジスタコントローラ３１ａは、図３に示すように、外部インタフェース４と、上述したアドレスバス４１ａ、偶数用リード／ライト信号線４５ａ、奇数用リード／ライト信号線４５ｂ、クロック信号線４１ｃを介して接続されている。
【００５２】
外部インタフェース４は、メモリコントローラ５からアドレス制御信号を受けると、アドレス指定信号をアドレスバス４１ａを介してプロセッサエレメントブロック３ヘ送る。これにより、一組のプロセッサエレメント３ａ、即ち２つのプロセッサエレメント３ａが同時にアドレス指定される。レジスタコントローラ３１ａは、送られてきたアドレス指定信号をデコードし、デコードしたアドレスと、自己に割り付けられたアドレスとが一致する場合には、メモリコントローラ５からクロック信号４１ｃを介して送られてきたクロック信号に同期して、リード／ライト信号４５ａ或いは４５ｂを介してメモリコントローラ５から送られてきたリード／ライト指示信号を得る。具体的には、偶数番号が割り付けられているレジスタコントローラ３１ａは、偶数用リード／ライト信号４５ａを介してメモリコントローラ５から送られてきたリード／ライト指示信号を得る。一方、奇数番号が割り付けられているレジスタコントローラ３１ａは、奇数用リード／ライト信号４５ｂを介してメモリコントローラ５から送られてきたリード／ライト指示信号を得る。このとき一組を構成するプロセッサエレメント３ａのレジスタコントローラ３１ａへ送られるリード／ライト指示信号はそれぞれ異なるものであってもよい。即ち、偶数番号が割り付けられているレジスタコントローラ３１ａへ送られる指示信号がリード指示であるとき、奇数番号が割り付けられているレジスタコントローラ３１ａへ送られる指示信号はライト指示であってもよい。そして、このリード／ライト指示信号はレジスタ３１ｂに与えられる。
【００５３】
レジスタコントローラ３１ａから双方のプロセッサエレメント３ａに対し、ライト指示信号が送られてきた場合には、偶数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂは、演算処理されるデータ（８ビット）を偶数用データバス４６ａより取得して保持する。また、奇数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂは、演算処理されるデータ（８ビット）を奇数用データバス４６ｂより取得して保持する。一方、レジスタコントローラ３１ａから双方のプロセッサエレメント３ａに対し、リード指示信号が送られてきた場合には、偶数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂは、演算処理されたデータ（８ビット）を偶数用データバス４６ａへ送る。また、奇数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂは、演算処理されたデータ（８ビット）を奇数用データバス４６ｂへ送る。
【００５４】
このように、一度のアドレス指定により、偶数番号が割り付けられたプロセッサエレメント３ａにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント３ａにもデータ転送できる。このため、データの転送回数を少なくすることができ、データ転送を高速にできる。
【００５５】
レジスタ３１ｂは、後述するＡＬＵ３４でこれから演算される外部から入力されたデータを保持したり、或いはＡＬＵ３４で演算処理されたデータを外部へ出力するために保持するものであり、いわゆる入力レジスタとしても、或いは出力レジスタとしても機能する。また、演算処理されるデータ、或いは演算されたデータを一時的に保持するといった、後述するレジスタ３１ｃとしての機能も有する。なお、本実施形態では、レジスタ３１ｂは８ビットのデータを保持できるものとして扱うが、データに応じて適宜変更しても問題ない。上述したレジスタコントローラ３１ａからライト指示信号が与えられると、レジスタ３１ｂは演算処理されるデータをデータバス４６ａまたはデータバス４６ｂより取得して保持する。一方、レジスタコントローラ３１ａからリード指示信号が送られてくると、レジスタ３１ｂは保持している演算処理されたデータをデータバス４６ａまたはデータバス４６ｂへ与える。このデータは外部インタフェース４からメモリコントローラ５のライトバッファ部５４に与えられ、ライトバッファ部５４から画像メモリ６へ格納される。
【００５６】
また、レジスタ３１ｂは、本実施形態においては８ビットデータをパラレルで転送するデータバス３７を介してマルチプレクサ３２に接続されている。ＡＬＵ３４で演算処理されるデータ、或いはＡＬＵ３４で演算処理されたデータは、このデータバス３７を介して、レジスタ３１ｂとの間で転送される。この転送は、グローバルプロセッサ２のシーケンスユニット２２からの指示によって、グローバルプロセッサ２に接続されたリード信号線２６ａ、ライト信号線２６ｂを介して行われる。具体的には、グローバルプロセッサ２のシーケンスユニット２２から、リード信号線２６ａを介してリード指示信号が送られてくると、レジスタ３１ｂは保持している演算処理されるデータをデータバスへ置く。このデータはＡＬＵ３４へ送られ演算処理される。一方、グローバルプロセッサ２のシーケンスユニット２２から、ライト信号線２６ｂを介してライト指示信号が送られてくると、レジスタ３１ｂはデータバス３７を介して送られてきたＡＬＵ３４で演算処理されたデータを保持する。
【００５７】
レジスタ３１ｃは、レジスタ３１ｂより与えられた演算処理されるデータ、或いは演算されたデータがレジスタ３１ｂに与えられる前に、そのデータを一時的に保持するものである。このレジスタ３１ｃは、上述したレジスタ３１ｂと異なり、メモリコントローラ５を介して、画像メモリ６との間においてデータ転送はしない。
【００５８】
演算アレイ３６は、マルチプレクサ３２、シフト／拡張回路３３、１６ビットＡＬＵ３４及び１６ビットのレジスタ３５を備えている。このレジスタ３５には、１６ビットＡレジスタ、Ｆレジスタを内蔵している。
【００５９】
プロセッサエレメント３ａの命令による演算は、基本的にレジスタファイル３１から読み出されたデータをＡＬＵ３４の片側の入力としてもう片側にはレジスタ３５のＡレジスタの内容を入力として結果をＡレジスタに格納する。したがって、Ａレジスタとレジスタファイル３１のＲ０〜Ｒ３１レジスタとの演算が行われることとなる。レジスタファイル３１と演算アレイ３６との接続に（７ｔｏ１）のマルチプレクサ３２を置いており、プロセッサエレメント方向で左に１、２、３つ離れたデータと右に１、２、３つ離れたデータ、中央のデータを演算対象として選択している。また、レジスタファイル３１の８ビットのデータはシフト／拡張回路３３により任意ビットの左シフトしてＡＬＵ３４に入力される。さらに、図示していない８ビットの条件レジスタ（Ｔ）により、プロセッサエレメント３ａごとに演算実行の無効／有効の制御をしており、特定のプロセッサエレメント３ａだけを演算対象として選択できるように構成している。
【００６０】
上記したように、マルチプレクサ３２は、自己のプロセッサエレメント３ａに備えられた上記データバス３７に接続されるとともに、両隣３つのプロセッサエレメント３ａに備えられたデータバス３７にも接続されている。このマルチプレクサ３２は７つのプロセッサエレメント３ａから１つを選択し、その選択したプロセッサエレメント３ａにおけるレジスタ３１ｂ、３１ｃで保持されているデータをＡＬＵ３４へ送る。或いはＡＬＵ３４で演算処理されたデータを、選択したプロセッサエレメント３ａにおけるレジスタ３１ｂ、３１ｃへ送る。これによって、隣のプロセッサエレメント３ａにおけるレジスタ３１ｂ、３１ｃで保持されているデータを利用した演算処理が可能になり、ＳＩＭＤ型プロセッサ１の演算処理能力を高めることができる。
【００６１】
シフト／拡張回路３３は、マルチプレクサ３２から送られてきたデータを所定ビットシフトしてＡＬＵ３４へ送る。或いはＡＬＵ３４から送られてきた演算処理されたデータを所定ビットシフトしてマルチプレクサ３２へ送る。
【００６２】
ＡＬＵ３４は、シフト／拡張回路３３から送られてきたデータと、レジスタ３５に保持されているデータとに基づき算術論理演算を行う。なお、本実施形態では、ＡＬＵ３４は１６ビットのデータに対応できるものとして扱うが、データに応じて適宜変更しても問題ない。演算処理されたデータは、レジスタ３５に保持され、シフト／拡張回路３３へ転送されたり、或いはグローバルプロセッサ２の汎用レジスタ２５へ転送される。
【００６３】
グローバルプロセッサ２からメモリコントローラ５へはＩ／Ｏ用のアドレス、データ、コントロール信号がバスを介して与えられる。グローバルプロセッサ２がメモリコントローラ５のいくつかの動作設定レジスタ（図示せず）へ動作方法等のコマンドを設定している。最後にグローバルプロセッサ２は、メモリコントローラ５のスタートレジスタ（図示せず）にスタートコードを書き込むことで、メモリコントローラ５は自動的に設定に従った動作を行う。このように構成することで、プロセッサの命令制御による演算と同時にレジスタファイル３１のデータを入出力させることができる。
【００６４】
図４は、この発明に用いられるメモリコントローラ５の構成を示したものである。メモリコントローラ５は、画像メモリ６にデータライトを行うライトバッファ部５４と、画像メモリ６からデータリードを行うリードバッファ部５５と、プロセッサエレメントのレジスタファイル３１への制御を行っているＰＥ制御部５２、画像メモリ６への制御を行うＲＡＭ制御部５３、及びシーケンスユニット（ＳＣＵ）５１より構成されている。
【００６５】
メモリコントローラ５は、ＳＩＭＤ型プロセッサ１のレジスタファイル３１と外部インタフェース４内のデータ転送ポートを介して接続されていて、レジスタファイル３１から画像メモリ６へのデータ転送、画像メモリ６からレジスタファイル３１へのデータ転送を行っている。このデータ転送ポートは、出力ポートと入力ポートを備える。また、この実施の形態におけるメモリコントローラ５が制御するレジスタは、上述したように、Ｉ／Ｏ空間にマッピングされており、グローバルプロセッサ２からの指示に従い、アドレス、クロック、及びリード・ライト制御を出力することでリード、ライト可能となっている。
【００６６】
ライトバッファ部５４にはＳＩＭＤ方式プロセッサ１の外部インタフェース４の出力ポートが接続され、リードバッファ部５５には外部インタフェース４の入力ポートが接続される。データ転送ポートはそれぞれ偶数プロセッサエレメント用と奇数プロセッサエレメント用の入力、出力ポートを独立して有しており、１サイクルで一度に偶数、奇数の１組のプロセッサエレメント分のデータがアクセス可能に構成されている。また、ライトバッファ部５４、リードバッファ部５５と画像メモリ６間のデータバスは、それぞれ４プロセッサエレメント分のデータ幅で構成されており、１サイクルで一度に４プロセッサエレメント分のデータをアクセスできる。尚、この実施の形態においては、１プロセッサエレメント分のデータは８ビットとしている。また、外部インタフェース４とライトバッファ５４部及びリードバッファ部５５とのデータバスのビット幅は１６ビットで構成される。従って、メモリコントローラ５と画像メモリ６間のビット幅は３２ビットで構成される。
【００６７】
この結果、外部インターフェース４の外部インタフェース４のデータ転送ポートとメモリコントローラ５間の転送を２回行う間に、画像メモリ６とメモリコントローラ５間の転送を１回実行すればよいことになる。
【００６８】
メモリコントローラ５のライトバッファ部５４はＳＩＭＤ型プロセッサ１の外部インタフェース４より出力された画素データを２回取り込み、４個のプロセッサエレメント分のデータに整形した後、画像メモリ６に転送する動作を行っている。また、リードバッファ部５５は、画像メモリ６から読み出した４個のプロセッサエレメント分のデータを２回に分けて、ＳＩＭＤ型プロセッサ１の外部インタフェース４に転送する動作を行っている。
【００６９】
図５にプロセッサエレメント（ＰＥ）制御部５２の実施形態の概略ブロック図を示す。
【００７０】
図５に示すように、ＰＥ制御部５２はＳＩＭＤプロセッサ１の外部インタフェース４にプロセッサエレメント３ａのアドレス、クロック、リード／ライト制御信号を出力するものであり、ＳＩＭＤプロセッサ１における各プロセッサエレメント３ａのレジスタファイル３１のデータを読み書きすることを可能にしている。
【００７１】
このＰＥ制御部５２は、プロセッサエレメント（ＰＥ）アドレスカウンタ５２１、転送数カウンタ５２２、５２３、有効データ数カウンタ５２４とからなる。ＰＥアドレスカウンタ５２１はライト転送（プロセッサエレメント３４ａのレジスタファイル３１から画像メモリ６への転送）の場合は、転送開始時に”０”が初期ロードされ、リード転送（画像メモリ６からプロセッサエレメント３４ａのレジスタファイル３１への転送）の場合は、転送開始時に転送開始ＰＥアドレスレジスタ５２５に格納されている値が初期ロードされるアップカウンタであり、データ転送するプロセッサエレメントのアドレスを生成する。転送数カウンタ５２２，５２３は転送するデータ数を初期ロードできるダウンカウンタであり、転送数を管理するのに使用される。転送カウンタ５２２はライトするデータ数がセットされ、転送カウンタ５２３にはリードするデータ数がそれぞれ初期ロードされる。
【００７２】
有効データ数カウンタ５２４は、画像メモリ６に格納済みの有効なデータ数を管理するカウンタであり、画像メモリ６からプロセッサエレメント３ａのレジスタファイル３１にデータ転送する時に、転送数よりも有効データ数の方が多い時にのみ転送が実施されるようになっている。このように構成することで、データの欠落を防止している。
【００７３】
図６にメモリ（ＲＡＭ）制御部５３の第１の実施形態の概略ブロック図を示す。
【００７４】
図６に示すように、ＲＡＭ制御部５３は、ライトバッファ部５４、リードバッファ部５５からの制御線によって制御され、シングルポートメモリで構成される画像メモリ（ＲＡＭ）６へのクロック、アドレス、リード／ライト制御、バイトセレクトを出力する。
【００７５】
ＲＡＭ制御部５３は、ＲＡＭアドレス加減器５３１、ライトポインタレジスタ５３２、リードポインタレジスタ５３３、マルチプレクサ５３４とからなる。各ブロックはアドレス設定用バス（以降、ＡＢと略す）を介して接続されている。
【００７６】
ライトポインタレジスタ５３２は次に画像メモリ６にライトすべきポインタを格納しているレジスタであり、リードポインタレジスタ５３３は同様に次に画像メモリ６からリードすべきポインタを格納しているレジスタである。
【００７７】
ライトポインタレジスタ５３２、リードポインタレジスタ５３３は、そのポインタへの画像メモリ６のアクセスの後、ＲＡＭアドレス加減器５３１で更新されたポインタがＡＢ５３５から入力され格納される。ＲＡＭアドレス加減器５３１は、ライトアクセス時にはライトポインタ、リードアクセス時にはリードポインタの値にＲＡＭアクセスサイズに応じた数を、ＦＩＦＯ動作モード時は加算、ＬＩＦＯ動作モード時は減算した値をＡＢ５３５に出力する。
【００７８】
シーケンスユニット５１は、アドレスデコーダ、制御レジスタとからなり、グローバルプロセッサ２からＩ／Ｏ空間にマッピングされた制御レジスタをアクセスすることで、メモリコントローラ５全体の制御を行ったり、グローバルプロセッサ２からメモリコントローラ５の内部状態を監視することが可能になっている。また、ライト転送とリード転送の時分割もこのシーケンスユニット５１のブロックで行われる。また、ライトバッファ部５４へのクロックとリードバッファ部５５へのクロックとの２系統のクロックを生成することによってライト転送とリード転送を同時に行うことを可能にしている。
【００７９】
次に、主走査方向の画素数よりもプロセッサエレメント３ａの数が少ないＳＩＭＤ型プロセッサを用いた場合の画素データの転送方法について説明する。図７は主走査方向の画素数よりもプロセッサエレメント３ａの数が少ないＳＩＭＤ方式のプロセッサを用いた場合の画素データの転送方法についての説明図を示している。
【００８０】
主走査方向の画素数よりプロセッサエレメント３ａが少ない場合には、主走査方向の画素データを分割して、メモリコントローラ５は、ＳＩＭＤプロセッサ１のプロセッサエレメント３ａのレジスタファイル３１に画素データを画像メモリ６より与え、この処理を繰り返し実行している。すなわち、主走査方向の画素数よりもプロセッサエレメント数が少ない場合には、主走査方向の画素データを分割してＳＩＭＤプロセッサ１で演算処理を繰り返し実行している。
【００８１】
通常、ＳＩＭＤ型プロセッサを用いた画像処理ではフィルター処理などのように、注目画素前後の画素のデータを参照した処理を含む処理を実施するとＳＩＭＤの両端のデータに無効なデータが残る。このため、プロセッサエレメント３ａのレジスタファイルから画像メモリ６にデータを格納する際には、両端のデータを除いて格納する必要がある。また、画像メモリ６からプロセッサエレメント３ａのレジスタファイル３１にデータを転送する際には、注目画素前後の参照用の画素データも併せて転送する必要がある。つまり、フィルター処理などの重み付け処理における画素データの転送は以下の順序で行われることになる。ここでは、参照用画素の個数をａ個とする。
【００８２】
１．処理前画素データを画像メモリ６からＳＩＭＤプロセッサ１のプロセッサエレメント３ａの対応するレジスタファイル３１へ転送する。
【００８３】
２．ＳＩＭＤプロセッサ１による画像処理を行う。このとき、ＳＩＭＤプロセッサエレメント３ａの前後ａ個のデータは参照画素不在により無効にする。すなわち、図７における斜線部を施した部分が有効画素数になる。
【００８４】
３．処理後画素データをＳＩＭＤプロセッサ１から画像メモリ６に転送する。このとき、両端の前後ａ個分の画素を除いた有効画素が画像メモリ６に転送される。
【００８５】
図７を参照して、画像メモリ６とＳＩＭＤプロセッサ１間の画素データの転送につき説明する。ＳＩＭＤプロセッサ１のプロセッサエレメント（ＰＥ）３ａは、ｎ個、すなわち、ＰＥ０からＰＥｎ−１を備え、これらプロセッサエレメント３ａ…に画像メモリ６から画素データを送り、画像処理を行った後、これらプロセッサエレメント３ａ…から画像メモリ６に画素データが転送される。
【００８６】
まず、最初の転送、すなわち、図中１ＳＩＭＤ目の転送では、ＳＩＭＤプロセッサ１のプロセッサエレメント３ａ…前後に参照画素ａ個を併せて転送している。図７に示す例では、ＲＡＭ制御部５３は、まず、リードポインタ５３３に０を格納し、ＲＡＭアクセスサイズに応じた数、この実施の形態においては、３２ビット分のデータを画像メモリ６より読み出し、リードバッファ部５５へ格納する。そして、アドレス加減器５３１は、リードポインタの値にＲＡＭアクセスサイズに応じた数を、ＦＩＦＯ動作モード時は加算、ＬＩＦＯ動作モード時は減算した値をＡＢ５３５に出力し、その値がリードポインタ５３３に格納される。そして、ＰＥ制御部５２のＰＥアドレスカウンタ５２１により、アドレスが生成され、そのアドレスに基づき、外部インターフェース４から該当するプロセッサエレメント３ａ…にデータが書き込みされる。転送数カウンタ５２２は画像データの書き込みの度にＲＡＭサイズに応じた数、この実施の形態では４ずつデクリメントしてゆく。上記の処理はこの転送カウンタ５２２の値が０になるまで繰り返し実行され、ＳＩＭＤプロセッサ１のＰＥ０からＰＥｎ−１に画像メモリ６からの画素データが転送される。
【００８７】
処理後の画素データを画像メモリ６に転送する場合、前後それぞれａ個の画素データは無効なので、転送する画素データはＰＥ０からＰＥｎ−１までのｎ画素の内、ａ〜（ｎ−ａ−１）までの（ｎ−２×ａ）画素である。このため、ＰＥ制御部５２のＰＥアドレスカウンタ５２１には、転送開始時に転送開始ＰＥアドレスレジスタ５２５の値がロードされ、そのアドレスに基づき、該当するプロセッサエレメント３ａ…からデータが読み出され、外部インタフェース４からライトバッファ部５４に画像データが書き込みまれる。転送数カウンタ５２３には読み出される度にＲＡＭアクセスサイズに応じた数、この実施の形態では４ずつデクリメントされる。ライトバッファ部５４に３２ビット分のデータが格納されると、画像メモリ６に画像データが転送される。ＲＡＭ制御部５３は、まず、ライトポインタ５３２にａを格納し、ライトバッファ部５４に格納された画像データ、この実施の形態においては、３２ビット分のデータを画像メモリ６に転送する。アドレス加減器５３１は、リードポインタの値にＲＡＭアクセスサイズに応じた数を、ＦＩＦＯ動作モード時は加算、ＬＩＦＯ動作モード時は減算した値をＡＢ５３５に出力し、その値がライトポインタ５３２に格納される。このようにして、ＳＩＭＤプロセッサ１のＰＥａからＰＥｎ−２×ａまでの画像データが画像メモリ６に転送される。
【００８８】
続いて、２番目の転送が同様にして行われる。図中２ＳＩＭＤ目の転送では、（ｎ−ａ）〜（２ｎ−３×ａ）までの画素を注目画素として処理を行うため、参照画素として（ｎ−２×ａ）〜（ｎ−ａ−１）及び、（２ｎ−３×ａ）〜（２ｎ−２×ａ−１）の画素データを併せて送っている。データ処理後、（ｎ−ａ）〜（ｎ−２×ａ）の（ｎ−３×ａ）画素が画像メモリ６に格納される。主走査方向のＳＩＭＤ分割数が多い場合も同様の処理を繰り返すだけである。
【００８９】
以上の処理を実現するには、画像メモリ６へのデータライトの場合には、本発明のプロセッサエレメント（ＰＥ）制御部５２の実施形態において、転送開始ＰＥアドレスレジスタ５２５に”ａ”を設定し、転送数カウンタ５２２に”（ｎ−２×ａ）を設定すればよい。
【００９０】
設定数は全てＰＥアドレスを基準としているため、ＳＩＭＤごとに設定を変更する必要がない。また、画像メモリ６からのデータリードの場合には、リードポインタ５３３を転送終了後に戻すという操作が必要である。上記の例では（ｎ−２×ａ）に戻すことになる。ＲＡＭ制御部５３の打愛１の実施形態においては、転送が終了した後に、リードポインタ５３３の値をグローバルプロセッサ２から設定する必要がある。
【００９１】
また、画像メモリ６へのデータライトの場合には、ライトポインタ５３２の操作を行う必要はない。
【００９２】
図８は本発明におけるＲＡＭ制御部５３の第２の実施形態を示す概略ブロック図である。
【００９３】
図８に示すＲＡＭ制御部５３は、図６に示したＲＡＭ制御部５３に、さらにリードオフセット生成器５３６を設けたものである。このＲＡＭ制御部５３は、リードオフセット生成器５３６によりメモリ６からＳＩＭＤプロセッサ１のプロセッサエレメント３ａの各レジスタファイルへのデータ転送の際に、プロセッサエレメント３ａへの転送終了後にリードポインタ５３３の値を戻すことができるように変更している。
【００９４】
リードオフセット生成器５３６は、ＰＥ制御部５２より入力されたＰＥアドレスを監視し、ＰＥアドレスが設定された値と等しくなると、その時のリードポインタ５３３の値を保持し、設定された転送数を送り終えるまで転送を継続する。転送が終了すると、保持しておいた値をリードポインタ５３３にリロードする。上記図７で示す例では（ｎ−２×ａ−１）を設定することになる。設定値は全てＰＥアドレスを基準としているため、ＲＡＭ制御部５３の第１の実施形態のようにＳＩＭＤごとに設定を変更する必要がない。
【００９５】
図９は本発明におけるＲＡＭ制御部５３の第３の実施の形態を示す概略ブロック図である。
【００９６】
図９に示すＲＡＭ制御部５３は、上記処理に加えて、画像メモリ６の特定の領域のみをリング状に使用することを可能にしたものである。
【００９７】
このＲＡＭ制御部５３は、図８に示したＲＡＭ制御部にさらに、２つのレジスタ５３７、５３８及び比較器５３９を設けたものである。レジスタ（ＬＡＤＤＲ）５３７は画像メモリ６のアドレスの下限値を設定し、レジスタ（ＵＡＤＤＲ）５３８は画像メモリ６のアドレスの上限値を設定する。そして、比較器５３９はそれぞれ現在のポインタ５３２（５３３）とＬＡＤＤＲ５３７、ＵＡＤＤＲ５３８に設定された値との比較を行う。
【００９８】
ＦＩＦＯモード時に、ＵＡＤＤＲ５３８とポインタ５３２（５３３）が一致していて、かつアドレス加減器５３１より出力される値がＵＡＤＤＲ５３８を越える場合に、アドレス加減器５３１よりＡＢ５３５への出力をネゲートし、ＬＡＤＤＲ５３７よりＡＢ５３５への出力をアサートする。
【００９９】
ＬＩＦＯモード時は逆に、ＬＡＤＤＲ５３７とポインタ５３２（５３３）が一致し、かつアドレス加減器５３１より出力される値がＬＡＤＤＲ５３７を下回る場合に、アドレス加減器５３１よりスＡＢ５３５への出力をネゲートし、ＵＡＤＤＲ５３８よりＡＢ５３５への出力をアサートする。上記のように構成することで、画像メモリ６のメモリ空間の特定空間だけを用いることができるようになる。
【０１００】
図１０にこの発明の実施の形態にかかるライトバッファ部５４及びリードバッファ部５５の概略ブロック図を示す。
【０１０１】
この実施の形態におけるライトバッファ部５４及びリードバッファ部５５は、偶数プロセッサエレメント３ａ、奇数プロセッサエレメント３ａの専用のポートを持っていて、それぞれ１サイクルで２プロセッサエレメント分のデータをアクセス可能に構成され、全プロセッサエレメント数の半分のサイクル数でデータ転送することが可能となっている。
【０１０２】
ライトバッファ部５４は４プロセッサエレメント分のデータがバッファに格納されると、画像メモリ６にライトアクセスを行うように構成されている。
【０１０３】
外部インタフェース４の転送ポートからライトバッファ部５４に与えられる２プロセッサエレメント分のデータは、まずフリップフロップ５４１，５４２に格納された後、次段のフリップフロップ５４３，５４４に転送される。続いて、与えられる２プロセッサエレメント分はフリップフロップ５４１，５４２に格納される。そして、フリップフロップ５４１〜５４４に格納された４プロセッサエレメント分のデータがそれぞれラッチ５４５〜５４８に格納される。ライトバッファ部５４は、４プロセッサエレメント分のデータをラッチ５４５〜５４８に格納されると、画像メモリ６にライトアクセスを行う。
【０１０４】
リードバッファ部５５は、画像メモリ６から４プロセッサエレメント分読み出されたデータをバッファとしてのフリップフロップ５５１〜５５４に格納する。４プロセッサエレメント分のデータから２プロセッサエレメント分がマルチプレクサ５５５により選択され、ラッチ５５６，５５７に格納される。このラッチ５５６，５５７に格納された画像データが外部インタフェース４を介してＳＩＭＤプロセッサ１のレジスタファイル３１に転送される。
【０１０５】
４プロセッサエレメント分のデータの転送が終わると再び画像メモリ６にリードアクセスを行う。画像メモリ６は一度に４プロセッサエレメント分のデータをアクセスできるので、２サイクルで一度のアクセスを実現できればＳＩＭＤプロセッサ１とのインタフェースが取れることとなり、画像メモリ６のアクセスタイムの制限を緩和できる。
【０１０６】
図１１はデジタルコピーやファクシミリなどでよく行われる変倍処理の内、縮小を実現するための間引きライト動作について図示したものである。
【０１０７】
図１１ではプロセッサエレメント（０）、プロセッサエレメント（２）などの画素データはそのまま画像メモリ６に格納され、プロセッサエレメント（１）、プロセッサエレメント（３）などの画素データが画像メモリ６に格納されずに間引かれている。
【０１０８】
メモリコントローラ５は偶数側のプロセッサエレメント３ａと奇数側のプロセッサエレメント３ａのそれぞれのデータを間引くかどうかを決定する外部ライト制御信号を２本有している。また、メモリコントローラ５とライト制御信号との同期を取るために転送を開始するタイミングをメモリコントローラ５に通知する外部端子を有している。転送を開始する外部同期信号はシーケンスユニットに入力されており、同期信号がアサートされるとシーケンスユニット５１は転送を開始させる。
【０１０９】
シーケンスユニット５１は、上記ライト制御信号の値を検出して、外部からのライト制御信号が”０”である場合には、そのデータをライトバッファ部５４内のバッファに書き込む。また、シーケンスユニット５１は、上記ライト制御信号の値を検出して、”１”が立っている場合は、そのデータをライトバッファ部５４内のバッファに格納することを抑止する。
【０１１０】
ライトバッファ部５４は転送開始時及び転送終了時の例外を除き、４プロセッサエレメント分のデータが格納されるまで、画像メモリ６への転送要求をＲＡＭ制御部５３に対して出力しないため、アドレスポインタの更新と画像メモリ６へのクロック、リード・ライト制御、バイトセレクトの出力は４プロセッサエレメント分のデータがライトバッファ部５４に格納されるまで行われない。ＳＩＭＤプロセッサ１のデータ転送ポートからのデータリードはライト制御信号によらず継続する。
【０１１１】
図１２は上記変倍処理の内、拡大を実現するための重複リード動作について図示したものである。図１２ではプロセッサエレメント（０）、プロセッサエレメント（２）などのレジスタにはリードポインタの位置から順番に画像メモリ６のデータが書き込まれ、プロセッサエレメント（１）、プロセッサエレメント（３）などのレジスタには１つ前のプロセッサエレメントのレジスタに書き込まれた値が重複して書き込まれている。
【０１１２】
メモリコントローラ５は偶数側のプロセッサエレメント３ａと奇数側のプロセッサエレメント３ａのそれぞれのデータを書き込む際に前と同じデータを重複して書き込むかどうかを決定する外部リード制御信号を２本有している。
【０１１３】
メモリコントローラ５と重複制御信号との同期を取るために転送を開始するタイミングをメモリコントローラ５に通知する外部端子を有している。転送を開始する外部同期信号はシーケンスユニット５１に入力されており、同期信号がアサートされるとシーケンスユニット５１は転送を開始させる。
【０１１４】
シーケンスユニット５１は、上記リード制御信号の値を検出して、”１”が立っている場合は、リードバッファ部５５のマルチプレクサを制御して、１つ前にＰＥアドレスを持つプロセッサエレメントのレジスタに転送すべきデータを再度出力できるようにしている。リードバッファ部５５は転送開始時と転送終了時の例外を除き、画像メモリ６からリードされた４プロセッサエレメント分のデータが全て不必要になるまで、ＲＡＭ制御部５３に対して画像メモリ６へのリードデータ転送要求を出力しないため、（たとえばリード制御が常に”０”であれば２回のデータ転送ポートへのアクセスがあるまでであり、リード制御信号に１がたっている間はデータが不必要になることはない。）アドレスポインタの更新と画像メモリ６へのクロック、リード・ライト制御、バイトセレクトの出力は４プロセッサエレメント分のデータが全て不必要になるまで行われない。ＳＩＭＤプロセッサ１の外部インタフェース４へのデータライトはリード制御信号によらず継続する。
【０１１５】
上記した実施の形態においては、一度のアドレス指定により、ＳＩＭＤプロセッサ１の偶数番号が割り付けられたプロセッサエレメント３ａにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント３ａにもデータ転送できるように構成しているが、ＳＩＭＤプロセッサ１への画像データの転送はこの方式に限られるものではない。たとえば、図１３に示すように、ＳＩＭＤプロセッサ１のプロセッサエレメント３ａに、奇数、偶数の区別を付けずに、アドレス指定により順次データを転送するように構成したものにおいても、この発明は適用できる。すなわち、図１１に示すように、レジスタコントローラ３１ａは、外部インタフェース４と、アドレスバス４１ａ、リード／ライト信号４５ｃ、クロック信号４１ｃを介して接続されている。このレジスタコントローラ３１ａは、メモリコントローラ５から外部インタフェース４に与えられ、アドレスバス４１ａを介してアドレス指定信号が送られてくると、そのアドレス指定信号をデコードする。そして、デコードしたアドレスと、自己のプロセッサエレメント３ａに割り付けられたアドレスとが一致する場合には、メモリコントローラ５から外部インタフェース４に与えられ、クロック信号４１ｃからのクロック信号に同期して、リード／ライト信号４１ｂを介してメモリコントローラ５から送られてきたリード／ライト指示信号を得る。このリード／ライト指示信号は、レジスタ３１ｂへ与えられる。
【０１１６】
ＳＩＭＤ型プロセッサ１の外部に設けられた画像メモリ６に格納されているデータを、この実施形態では８ビットのパラレルデータとして、データバス４６ｃに置く。このデータバス４６ｃは、レジスタ３１ｂに保持されている演算処理されたデータが、ＳＩＭＤ型プロセッサ１の外部に設けられた画像メモリ６に送られる時にも使用される。
【０１１７】
外部インタフェース４から与えられるアドレス、リード／ライト、クロック、データの信号はレジスタファイル３１の各レジスタに供給される。そして、各プロセッサエレメント３ａ…ごとにアドレスをデコードして各プロセッサエレメント３ａ…を示すアドレスと一致したプロセッサエレメント３ａだけがリード／ライトの動作をおこなう。
【０１１８】
このように構成されるＳＩＭＤ型プロセッサ１は、メモリコントローラ５が、画像メモリ６に格納されているデータをプロセッサエレメント３ａに送る場合、プロセッサエレメント３ａに割り付けられたアドレスを指定することにより、１回のクロック信号が入力されるだけで、その指定したプロセッサエレメント３ａにデータが送られる。なお、この例では、偶数、奇数のプロセッサエレメント３ａに同時にデータは送られないので、第１の実施の形態に比べると、データ転送に時間はかかるが、回路構成は簡略化できる。
【０１１９】
上述した実施形態においては、プロセッサエレメント３ａをアドレス指定しているが、プロセッサエレメント３ａの指定をアドレス指定する方式ではなく、ポインタ指定する方式、即ちシリアルアクセスメモリ方式においても、この発明は適用できる。この例につき図１４に従い説明する。なお、ここでは上述した第１の実施形態と異なる点について説明することとし、同じ点については説明を省略する。また、上述した第１実施形態と同じ構成部分については、同一の符号を付する。
【０１２０】
まず、グローバルプロセッサ２からメモリコントローラ５へはＩ／Ｏ用のアドレス、データ、コントロール信号がバスを介して与えられる。グローバルプロセッサ２がメモリコントローラ５のいくつかの動作設定レジスタ（図示せず）へ動作方法等のコマンドを設定している。最後にグローバルプロセッサ２は、メモリコントローラ５のスタートレジスタ（図示せず）にスタートコードを書き込むことで、メモリコントローラ５は自動的に設定に従った動作を行う。メモリコントローラ５は、グローバルプロセッサ２のコマンドに基づき、このリセット信号を生成し、外部インタフェース４からリセット信号４７を介してプロセッサエレメントブロック３ヘ送る。これにより、レジスタコントローラ３１ａは、リセットされる。そして、外部インタフェース４に最も近いレジスタコントローラ３１ａへメモリコントローラ５から外部インタフェース４、クロック信号４１ｃを介してクロック信号が送られる。このクロック信号に同期して、レジスタコントローラ３１ａ’は、リード／ライト信号４５ａ或いは４５ｂを介してメモリコントローラ５から送られてきたリード／ライト指示信号を得る。このリード／ライト指示信号は、偶数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂ、及び奇数番号が割り付けられたプロセッサエレメント３ａのレジスタ３１ｂにそれぞれ与えられる。このとき一組を構成するプロセッサエレメント３ａのレジスタコントローラ３１ａ’へ送られるリード／ライト指示信号は、上記第１実施形態の場合と同様それぞれ異なるものであってもよい。
【０１２１】
これにより、上述した第１実施形態の場合と同様、一度のポインタ指定により、偶数番号が割り付けられたプロセッサエレメント３ａにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント３ａにもデータ転送できる。
【０１２２】
図１５に示すものは、上記したこの発明のメモリコントローラ５を含んだ画像処理装置の他の実施形態の構成を示すブロック図である。この図１５に示すものは、独立した２つのレジスタファイル３のデータ転送ポートの間にメモリコントローラ５を配置したものである。このような構成のものにおいても、本発明は適用することができる。
【図面の簡単な説明】
【０１２３】
【図１】この発明の実施形態におけるＳＩＭＤ型プロセッサを示すブロック図である。
【図２】この発明の第１の実施形態におけるＳＩＭＤ型プロセッサの内部構成を示すブロック図である。
【図３】この発明の第１の実施形態におけるプロセッサエレメントの内部構成を示すブロック図である。
【図４】この発明に用いられるメモリコントローラ５の構成を示すブロック図である。
【図５】この発明に用いられるメモリコントローラ５のプロセッサエレメント（ＰＥ）制御部５２の実施形態の概略ブロック図である。
【図６】この発明に用いられるメモリコントローラ５のメモリ（ＲＡＭ）制御部５３の第１の実施形態の概略ブロック図である。
【図７】主走査方向の画素数よりもプロセッサエレメント３ａの数が少ないＳＩＭＤ方式のプロセッサを用いた場合の画素データの転送方法についての説明図である。
【図８】この発明に用いられるメモリコントローラ５のＲＡＭ制御部５３の第２の実施形態を示す概略ブロック図である。
【図９】この発明に用いられるメモリコントローラ５のＲＡＭ制御部５３の第３の実施形態を示す概略ブロック図である。
【図１０】この発明に用いられるメモリコントローラ５のライトバッファ部５４及びリードバッファ部５５の概略ブロック図である。
【図１１】変倍処理の内、縮小を実現するための間引きライト動作の説明図である。
【図１２】変倍処理の内、重複リード動作の説明図である。
【図１３】この発明の他の実施形態におけるＳＩＭＤ型プロセッサの内部構成を示すブロック図である。
【図１４】この発明のさらに異なる実施形態におけるＳＩＭＤ型プロセッサの内部構成を示すブロック図である。
【図１５】この発明の他の実施の形態を示す概略ブロック図である。
【図１６】従来のＳＩＭＤ方式を用いた画像処理装置の概略ブロック図である。
【符号の説明】
【０１２４】
１    ＳＩＭＤ型プロセッサ
２    グローバルプロセッサ
４    外部インタフェース
５    メモリコントローラ
６    画像メモリ
５１  シーケンスユニット
５２  ＰＥ制御部
５３  ＲＡＭ制御部
５４  ライトバッファ部
５５  リードバッファ部
【図１】
2006155637.tif 000003
【図２】
2006155637.tif 000004
【図３】
2006155637.tif 000005
【図４】
2006155637.tif 000006
【図５】
2006155637.tif 000007
【図６】
2006155637.tif 000008
【図７】
2006155637.tif 000009
【図８】
2006155637.tif 000010
【図９】
2006155637.tif 000011
【図１０】
2006155637.tif 000012
【図１１】
2006155637.tif 000013
【図１２】
2006155637.tif 000014
【図１３】
2006155637.tif 000015
【図１４】
2006155637.tif 000016
【図１５】
2006155637.tif 000017
【図１６】
2006155637.tif 000018