(57)【要約】【課題】  画像処理装置におけるフィルター処理などの演算において演算精度を保ちながら、オーバラップ量が少なくても画像処理を行うことが可能な信号処理装置及び信号処理方法を提供する。【解決手段】  ＳＩＭＤ型マイクロプロセッサにおいて、画像処理における主査方向に、プロセッサエレメント番号順に並べられた、複数のデータを処理するための複数のプロセッサエレメントの先頭のプロセッサエレメントがアクセス可能なレジスタＬ１〜Ｌ３と、このレジスタＬ１〜Ｌ３にデータを引用するための参照画素用メモリ１４とを設け、前記参照画素用メモリ１４に、後端のプロセッサエレメントの有するレジスタの値を格納するように構成する。【選択図】  図３
2005135163.tif 000002
【特許請求の範囲】
【請求項１】
画像処理における主査方向に、プロセッサエレメント番号順に並べられた、複数のデータを処理するための複数のプロセッサエレメントの先頭のプロセッサエレメントがアクセス可能な第１のレジスタと、
前記第1のレジスタに、データを引用するための参照画素用メモリとを具備し、
前記参照画素用メモリに、後端のプロセッサエレメントの有する第２のレジスタの値を格納するように構成されているＳＩＭＤ型マイクロプロセッサを具備することを特徴とした信号処理装置。
【請求項２】
前記ＳＩＭＤ型マイクロプロセッサが自己の有する複数のプロセッサエレメントを用いて画素データの演算処理を実施するに際し、各プロセッサエレメントに、自己のプロセッサエレメント番号より若い番号のプロセッサエレメントの有するレジスタを参照させる命令を発行している場合に、先頭のプロセッサエレメントに、前記第１のレジスタの有する値を参照させ、前記第２のレジスタからリードされたデータを前記参照画素用メモリに格納し、前記参照命令の発行後には、前記第２のレジスタからリードされ、前記参照命令発行前に前記参照画素用メモリに格納されたデータを、前記第１のレジスタに格納するＳＩＭＤ型マイクロプロセッサを具備することを特徴とした請求項１記載の信号処理装置。
【請求項３】
前記プロセッサエレメント番号を指定する第３のレジスタを具備し、
前記第３のレジスタによって、前記参照画素用メモリに格納するデータとして、どのプロセッサエレメント番号のプロセッサエレメントが有するレジスタのデータを格納するかを選択するように構成されるＳＩＭＤ型マイクロプロセッサを具備することを特徴とした請求項１又は２に記載の信号処理装置。
【請求項４】
前記参照画素用メモリは、前記ＳＩＭＤ型マイクロプロセッサに予め設けられているデータＲＡＭであるＳＩＭＤ型マイクロプロセッサを具備することを特徴とした請求項１又は２に記載の信号処理装置。
【請求項５】
前記参照画素用メモリの容量と同容量のデータが、該メモリに格納されると、それ以上データの格納を継続しないように制御するＳＩＭＤ型マイクロプロセッサを具備することを特徴とした請求項１又は２に記載の信号処理装置。
【請求項６】
一回の命令で、複数のデータに対して、それぞれ同一の演算処理をするＳＩＭＤ型マイクロプロセッサが、前記ＳＩＭＤ型マイクロプロセッサの有する、画像処理の主査方向に番号順に並べられた複数のプロセッサエレメントのうちの先頭のプロセッサエレメントがアクセス可能な第１のレジスタにデータを引用するための参照画素用メモリに、後端のプロセッサエレメントの有する第２のレジスタの値を格納するように制御する工程を具備することを特徴とした信号処理方法。
【請求項７】
前記ＳＩＭＤ型マイクロプロセッサが、プロセッサエレメントの番号の若いほうのプロセッサエレメントの有するレジスタを参照する命令を発行している場合に、先頭のプロセッサエレメントは、前記第１のレジスタの有する値を参照するように制御する工程と、
前記ＳＩＭＤ型マイクロプロセッサが、前記第２のレジスタからリードされたデータを前記参照画素用メモリに格納するよう制御する工程と、
前記ＳＩＭＤ型マイクロプロセッサが、前記参照命令の発行後に、前記参照画素用メモリに前記参照命令発行前に格納された、前記第２のレジスタからリードされたデータを、前記第１のレジスタに格納するよう制御する工程とを具備することを特徴とした請求項６記載の信号処理方法。
【請求項８】
前記ＳＩＭＤ型マイクロプロセッサに備えられた、プロセッサエレメント番号を指定する第３のレジスタが、前記参照画素用メモリに格納するデータとして、どのプロセッサエレメント番号のプロセッサエレメントが有するレジスタのデータを格納するかを選択する工程を具備することを特徴とした請求項６又は７に記載の信号処理方法。
【請求項９】
前記参照画素用メモリは、前記ＳＩＭＤ型マイクロプロセッサに予め設けられているデータＲＡＭであることを特徴とする請求項６又は７に記載の信号処理方法。
【請求項１０】
前記ＳＩＭＤ型マイクロプロセッサが、前記参照画素用メモリに、該メモリ容量と同容量のデータが格納された場合に、それ以上データの格納を継続しないように制御する工程を具備することを特徴とした請求項６又は７に記載の信号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一つの演算命令により複数の画像データ等を並列処理するＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型マイクロプロセッサを用いた信号処理装置及び信号処理方法に関し、特に、デジタルコピーなどの画像処理に用いて好適な信号処理装置及び信号処理方法に関する。
【背景技術】
【０００２】
近年、デジタル複写機やファクシミリ装置等において、画素数を増加させたり、あるいは、カラー対応にするなど画像の向上が図られている。そして、この画像の向上に伴い、処理すべきデータ数が増加している。ところで、例えば、デジタルコピアなどにおける画像処理は、データ量が非常に多い処理であり、全ての画素に対して同じ演算処理を施すことが多い。そこで、一つの命令で複数のデータに対して同時に同じ演算処理を行うＳＩＭＤ型のマイクロプロセッサが頻用される。
【０００３】
ＳＩＭＤ型マイクロプロセッサにおける通常の画像処理では、複数の演算ユニット(Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ：プロセッサエレメント)を主査方向に並べ、同一の演算を同時に複数のデータに対して実行することによって高速な演算処理が可能となっている。
【０００４】
従来のＳＩＭＤ型マイクロプロセッサは、ほとんどが主査方向の画素数以上のプロセッサエレメントを持っているため、画像処理においては外部ＲＡＭに格納されている画像処理前のデータをプロセッサエレメント内の汎用レジスタに並べた後、プロセッサエレメントにおいて画像処理を行った後に処理後のデータを出力するだけでよかった。
【０００５】
しかし、画像処理の精度は近年ますます向上しており、主査方向の画素数は増大する一方である。特にデジタルコピアなどでは、現在の普通の精度である６００ＤＰＩ（Ｄｏｔ．Ｐｅｒ．Ｉｎｃｈ）であっても、Ａ４のサイズの画像を扱う場合には７０００画素以上のプロセッサエレメント数が必要となる。このため、ＳＩＭＤ型マイクロプロセッサに装備しているプロセッサエレメント数よりも主査方向の画素数の方が多くなる。この場合には、主査方向の画素をプロセッサエレメント数単位で分割し、画像処理を複数回反復して実施することで全画素の画像処理を行う。
【０００６】
特許文献１では、ＳＩＭＤ型マイクロプロセッサに装備しているプロセッサエレメント数よりも主査方向の画素数が多い場合に、メインのレジスタと連結させたテンポラリレジスタを設け、所定個数のデータを、これらのレジスタ間で巡回的に転送(シフト)する技術が開示されている。
【０００７】
特許文献２、３では、ＳＩＭＤ型マイクロプロセッサに装備しているプロセッサエレメント数よりも主査方向の画素数が多い場合に、画素分割してデータ転送を行うことが出来るデータ転送装置について開示されている。
【０００８】
ところで、フィルター処理などのような画像処理を行う場合に、隣接するプロセッサエレメントの画素データを参照する必要があるため、画素の繋ぎ目において縦すじが入るなどの不具合を生じないように画素データをオーバラップさせて転送する必要がある。
【０００９】
このオーバラップによってＳＩＭＤ型マイクロプロセッサのスループットが低下することは自明であるが、近年の画像処理装置における精度の上昇に伴い、フィルター処理などで参照画素データの範囲はますます広がる傾向にあり、必要なオーバラップ量は増加する一方である。
【００１０】
そのため、特許文献４、５などでは、フィルター処理において画像端部の無効画素データがフィルター処理結果に悪影響を与えないように、画像端部を中心に画素データを折り返した擬似画素を拡張するのを容易にしたＳＩＭＤ型マイクロプロセッサにつき開示がある。
【００１１】
また、特許文献６では、ＳＩＭＤ型マイクロプロセッサに装備しているプロセッサエレメント数よりも主査方向の画素数が多い場合に、同一構成のＳＩＭＤ型マイクロプロセッサを増設してデータを処理する構成とすることにより、複数のＳＩＭＤ型プロセッサに画素の切れ目の部分をオーバラップさせて供給することで画像処理を正しく行うことが出来る技術が開示されている。
【特許文献１】特開２０００−２０７０５号公報
【特許文献２】特開２００１−１３４５３８号公報
【特許文献３】特許第２８６２３８７号公報
【特許文献４】特開２００１−３４４０９９号公報
【特許文献５】特開平８−１８０１７７号公報
【特許文献６】特開平１０−３２６２５８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
特許文献４、５などでは、フィルター処理において画像端部の無効画素データがフィルター処理結果に悪影響を与えないように、画像端部を中心に画素データを折り返した擬似画素を拡張するのを容易にしたＳＩＭＤ型マイクロプロセッサにつき開示がある。しかし、これによってＳＩＭＤ型マイクロプロセッサのスループットの低下は防止できるが、演算の精度の上で若干の誤差が出てしまうという問題がある。
【００１３】
従って、本発明は上記のような問題点に鑑み、フィルター処理などの演算において演算精度を保ちながら、オーバラップ量が少なくても画像処理を行うことが可能な画像処理装置における信号処理装置及び信号処理方法を提供することを目的としている。
【課題を解決するための手段】
【００１４】
請求項１に記載の発明は、画像処理における主査方向に展開され、前記主査方向にプロセッサエレメント番号順に並べられた、複数のデータを処理するための複数のプロセッサエレメントの先頭のプロセッサエレメントがアクセス可能な第１のレジスタと、前記第1のレジスタに、データを引用するための参照画素用メモリとを具備し、前記参照画素用メモリに、後端のプロセッサエレメントの有する第２のレジスタの値を格納するように構成されているＳＩＭＤ型マイクロプロセッサを具備する信号処理装置としたことを特徴とする。
【００１５】
請求項２記載の発明は、前記ＳＩＭＤ型マイクロプロセッサが自己の有する複数のプロセッサエレメントを用いて画素データの演算処理を実施するに際し、各プロセッサエレメントに、自己のプロセッサエレメント番号より若い番号のプロセッサエレメントの有するレジスタを参照させる命令を発行している場合に、先頭のプロセッサエレメントに、前記第１のレジスタの有する値を参照させ、前記第２のレジスタからリードされたデータを前記参照画素用メモリに格納し、前記参照命令の発行後には、前記第２のレジスタからリードされ、前記参照命令発行前に前記参照画素用メモリに格納されたデータを、前記第１のレジスタに格納するＳＩＭＤ型マイクロプロセッサを具備する請求項１記載の信号処理装置としたことを特徴とする。
【００１６】
請求項３記載の発明は、前記プロセッサエレメント番号を指定する第３のレジスタを具備し、前記第３のレジスタによって、前記参照画素用メモリに格納するデータとして、どのプロセッサエレメント番号のプロセッサエレメントが有するレジスタのデータを格納するかを選択するように構成されるＳＩＭＤ型マイクロプロセッサを具備する請求項１又は２に記載の信号処理装置としたことを特徴とする。
【００１７】
請求項４記載の発明は、前記参照画素用メモリはデータを格納するためのデータＲＡＭであるＳＩＭＤ型マイクロプロセッサを具備する請求項１又は２に記載の信号処理装置としたことを特徴とする。
【００１８】
請求項５記載の発明は、前記参照画素用メモリの容量と同容量のデータが、該メモリに格納されると、それ以上データの格納を継続しないように制御するＳＩＭＤ型マイクロプロセッサを具備する請求項１又は２に記載の信号処理装置としたことを特徴とする。
【００１９】
請求項６記載の発明は、一回の命令で、複数のデータに対して、それぞれ同一の演算処理をするＳＩＭＤ型マイクロプロセッサが、前記ＳＩＭＤ型マイクロプロセッサの有する、画像処理の主査方向に番号順に並べられた複数のプロセッサエレメントのうちの先頭のプロセッサエレメントがアクセス可能な第１のレジスタにデータを引用するための参照画素用メモリに、後端のプロセッサエレメントの有する第２のレジスタの値を格納するように制御する工程を具備する信号処理方法としたことを特徴とする。
【００２０】
請求項７記載の発明は、前記ＳＩＭＤ型マイクロプロセッサが、プロセッサエレメントの番号の若いほうのプロセッサエレメントの有するレジスタを参照する命令を発行している場合に、先頭のプロセッサエレメントは、前記第１のレジスタの有する値を参照するように制御する工程と、前記ＳＩＭＤ型マイクロプロセッサが、前記第２のレジスタからリードされたデータを前記参照画素用メモリに格納するよう制御する工程と、前記ＳＩＭＤ型マイクロプロセッサが、前記参照命令の発行後に、前記参照画素用メモリに前記参照命令発行前に格納された、前記第２のレジスタからリードされたデータを、前記第１のレジスタに格納するよう制御する工程とを具備する請求項６記載の信号処理方法としたことを特徴とする。
【００２１】
請求項８記載の発明は、前記ＳＩＭＤ型マイクロプロセッサに備えられた、プロセッサエレメント番号を指定する第３のレジスタが、前記参照画素用メモリに格納するデータとして、どのプロセッサエレメント番号のプロセッサエレメントが有するレジスタのデータを格納するかを選択する工程を具備する請求項６又は７に記載の信号処理方法としたことを特徴とする。
【００２２】
請求項９記載の発明は、前記参照画素用メモリは前記ＳＩＭＤ型マイクロプロセッサに備えられたデータを格納するデータＲＡＭである請求項６又は７に記載の信号処理方法としたことを特徴とする。
【００２３】
請求項１０記載の発明は、前記ＳＩＭＤ型マイクロプロセッサが、前記参照画素用メモリに、該メモリ容量と同容量のデータが格納された場合に、それ以上データの格納を継続しないように制御する工程を具備する請求項６又は７に記載の信号処理方法としたことを特徴とする。
【発明の効果】
【００２４】
本発明によれば、画像処理において、主査方向の画素を分割して処理する場合に、分割された画素ブロックを処理している時の右端の参照画素データを参照画素用メモリに転送しておき、分割された次の画素ブロックを処理する時の左端の参照画素データとして使用することが可能であるため、画素の左側のオーバラップが不要になり、プロセッサとしてのスループット向上につながる。
【００２５】
また、参照画素メモリに転送するプロセッサエレメント番号を指定できる構成とすることにより、アプリケーションに応じてオーバラップ量を可変に出来る。
【００２６】
また、オーバラップ量の必要数に応じて、データＲＡＭの一部を参照画素メモリに割り当てることによって、参照画素メモリの容量が可変になるため、メモリの有効活用が出来る。
【００２７】
また、参照画素データを必要とする命令が多く、参照画素用メモリの容量よりも格納すべきデータが多い場合においても処理を正しく行うことが出来る。
【発明を実施するための最良の形態】
【００２８】
本発明に係る信号処理装置の一の実施形態は、ＳＩＭＤ型マイクロプロセッサにおいて、画像処理における主査方向に、プロセッサエレメント番号順に並べられた、複数のデータを処理するための複数のプロセッサエレメントの先頭のプロセッサエレメントがアクセス可能な第１のレジスタと、この第1のレジスタにデータを引用するための参照画素用メモリとを設け、前記参照画素用メモリに、後端のプロセッサエレメントの有する第２のレジスタの値を格納するように構成する。その結果、画素の左側のオーバラップが不要になり、プロセッサとしてのスループット向上を実現することができる。
【実施例１】
【００２９】
本発明に係る本実施例のＳＩＭＤ型マイクロプロセッサの概略構成及び各ブロックの機能について添付図面に基いて説明する。図１は、本実施例のＳＩＭＤ型マイクロプロセッサの概略構成ブロック図である。図１に示すように、本実施例のＳＩＭＤ型マイクロプロセッサは、グローバルプロセッサ１、複数のプロセッサエレメントからなるプロセッサエレメントグループ４、メモリコントローラ６と接続される外部インターフェース５とから構成される。なお、上述のプロセッサエレメントは、図１に示すように、レジスタファイル２及び演算アレイ３から構成される。
【００３０】
グローバルプロセッサ１は、いわゆるＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｓｉｎｇｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型のマイクロプロセッサである。このグローバルプロセッサ１は、プログラムＲＡＭとデータＲＡＭを内蔵し、プログラムを解読し、各種制御信号を生成する。
【００３１】
これらの各種制御信号は、内蔵する各種ブロックの制御以外にも、レジスタファイル２、演算アレイ３、及びメモリコントローラ６に供給される。また、このグローバルプロセッサ１は、ＧＰ(グローバルプロセッサ)命令実行時には、内蔵する汎用レジスタ、ＡＬＵ(算術論理演算器)等を使用して各種演算処理、プログラム制御処理を行なう。
【００３２】
レジスタファイル２は、プロセッサエレメント命令で処理されるデータを保持している。プロセッサエレメント命令は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型の命令であり、レジスタファイル２に保持されている複数のデータに対して、同時に同じ処理を行なう。
【００３３】
このレジスタファイル２からのデータの読み出し/書き込みの制御は、グローバルプロセッサ１からの制御によって行なわれる。読み出されたデータは、演算アレイ３に送られ、演算アレイ３において演算処理され、その演算結果は、レジスタファイル２に書き込まれる。
【００３４】
また、レジスタファイル２は、外部インターフェース５を介して、このＳＩＭＤ型マイクロプロセッサ外部のメモリコントローラ６からのアクセスが可能であり、グローバルプロセッサ１の制御とは別に、外部から特定のレジスタを読み出し/書き込みが行われる。
【００３５】
演算アレイ３は、プロセッサエレメント命令の演算処理を行なう。この演算処理の制御は、全てグローバルプロセッサ１から行われる。また、メモリコントローラ６は、外部ポートにクロックとアドレス、リード/ライト制御を出力し、シングルポートメモリにクロックとアドレス、リード/ライト制御を出力する。これにより、任意のプロセッサエレメントのレジスタとシングルポートメモリ間で、データ転送が行われる。この処理の制御はすべてグローバルプロセッサ１から行われる。
【００３６】
次に、図２を用いて、本実施例のＳＩＭＤ型マイクロプロセッサの構成について、より詳細に説明する。図２は、本実施例のＳＩＭＤ型マイクロプロセッサの構成ブロック図である。図２に示すように、グローバルプロセッサ１には、本実施例のＳＩＭＤ型マイクロプロセッサのプログラム格納用のプログラムＲＡＭ８と、演算データ格納用のデータＲＡＭ９が内蔵されている。
【００３７】
更に、グローバルプロセッサ１には、プログラムのアドレスを保持するプログラムカウンタＰＣ、演算処理のデータ格納のための汎用レジスタであるレジスタＧ０、レジスタＧ１、レジスタＧ２、及び、レジスタＧ３、レジスタ退避、復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタＳＰ、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタＬＳ、同じくＩＲＱ時とＮＭＩ時の分岐元アドレスを保持するレジスタＬＩ、レジスタＬＮ、プロセッサの状態を保持しているプロセッサステータスレジスタＰとが内蔵されている。
【００３８】
上述したこれらのレジスタと図示していない命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、グローバルプロセッサ演算制御回路を使用して、グローバルプロセッサ命令の実行が行われる。
【００３９】
また、グローバルプロセッサ１は、プロセッサエレメント命令実行時には、図示していない命令デコーダ、レジスタファイル制御回路、プロセッサエレメント演算制御回路を使用して、レジスタファイル２の制御と演算アレイ３の制御を行なう。
【００４０】
図２に示すように、レジスタファイル２には、１個のプロセッサエレメント単位に８ビットのレジスタ１０が３２個内蔵されている。また、１個のプロセッサエレメント単位の８ビットのレジスタ１０の組が、２５６個分アレイ構成になっている。また、１個のプロセッサエレメントの有する３２個のレジスタ１０の各レジスタは、レジスタＲ０〜Ｒ３１と呼ばれる。
【００４１】
また、それぞれのレジスタ１０は、演算アレイ３に対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード/ライト兼用のバスで演算アレイ３からアクセスされる。
【００４２】
また、レジスタ１０の３２個のレジスタ（レジスタＲ０〜Ｒ３１）のうち、レジスタＲ０〜Ｒ２３の２４個のレジスタ１０は、外部インターフェース５を介して、このＳＩＭＤ型マイクロプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード／ライト制御を入力することで、レジスタＲ０〜Ｒ２３の２４個のレジスタ１０のうちの任意のレジスタを読み書きできる。
【００４３】
また、レジスタＲ０〜Ｒ２３の２４個のレジスタ１０への外部からのアクセスは、１つの外部ポートで各プロセッサエレメント内の１個のレジスタにアクセス可能であり、外部から入力されたアドレスでプロセッサエレメントの番号（０〜２５５）を指定する。従って、レジスタアクセスの外部ポートは全部で２４組搭載されている。
【００４４】
また、外部からのアクセスは、偶数番号のプロセッサエレメントと奇数番号のプロセッサエレメントの１組で１６ビットデータとなっており、１回のアクセスで２つのレジスタに同時にアクセスする。
【００４５】
また、図２に示すように、演算アレイ３は、１６ビットＡＬＵ１３、１６ビットのレジスタＡ及び１６ビットのレジスタＦを内蔵している。プロセッサエレメント命令による演算は、レジスタファイル２から読み出されたデータ又はグローバルプロセッサ１から与えられたデータを１６ビットＡＬＵ１３の片側の入力として、また、１６ビットＡＬＵ１３のもう片側の入力として、レジスタＡの内容を用いる。そして、１６ビットＡＬＵ１３による演算結果は、レジスタＡに格納される。従って、演算アレイ３では、レジスタＡと、レジスタＲ０〜Ｒ３１又はグローバルプロセッサ１から与えられたデータとの演算が行われる。
【００４６】
なお、レジスタファイル２と演算アレイ３との接続に７ｔｏ１のマルチプレクサ１１が置かれる。このマルチプレクサ１１は、プロセッサエレメント方向で前方に１、２、３つ離れたプロセッサエレメントの有するデータと後方に１、２、３つ離れたプロセッサエレメントの有するデータ、中央のプロセッサエレメントの有するデータを演算対象として選択する。
【００４７】
また、レジスタファイル２の８ビットのデータは、シフト＆拡張回路１２により任意ビットの左シフトをして１６ビットＡＬＵ１３に入力する。更に、図示していない８ビットの条件レジスタＴにより、プロセッサエレメント毎に演算実行の無効/有効の制御をしており、特定のプロセッサエレメントだけを演算対象として選択する。
【００４８】
次に、図３を用いて、本実施例のＳＩＭＤ型マイクロプロセッサの構成及び各ブロックの機能について説明する。図３は、本実施例のＳＩＭＤ型マイクロプロセッサの構成ブロック図である。
【００４９】
図３に示す、本実施例のＳＩＭＤ型マイクロプロセッサは、プロセッサエレメント数を２５６個有し、画像処理に必要な画素データのオーバラップ量として、画素１６個分相当の画素データを用いる場合について説明する。本実施例におけるＳＩＭＤ型マイクロプロセッサを用いて画像処理を行う場合、主査方向にプロセッサエレメントが展開される。本実施例の説明のため、これらのプロセッサエレメントは、主査方向において、先頭から最後尾まで番号が付与される。本実施例では、プロセッサエレメントの番号が最も少ない３つの（プロセッサエレメントＰＥ０、プロセッサエレメントＰＥ１、プロセッサエレメントＰＥ２）が、前方プロセッサエレメントのレジスタ内のデータを参照する場合において、図３に示すように、データを供給するための３つのレジスタ（レジスタＬ１〜Ｌ３）を有している。
【００５０】
これら３つのレジスタ（レジスタＬ１〜Ｌ３）は、以下に説明するように用いられる。まず、１つ前方のプロセッサエレメントを参照する命令時は、レジスタＬ１は、プロセッサエレメントＰＥ０が参照する。また、２つ前方のプロセッサエレメントを参照する命令時は、レジスタＬ１はプロセッサエレメントＰＥ１が参照し、レジスタＬ２はプロセッサエレメントＰＥ０が参照する。また、３つ前方のプロセッサエレメントを参照する命令時は、レジスタＬ１は、プロセッサエレメントＰＥ２が参照し、レジスタＬ２は、プロセッサエレメントＰＥ１が参照し、レジスタＬ３は、プロセッサエレメントＰＥ０が参照する。
【００５１】
また、これら３つのレジスタＬ１〜Ｌ３へは、参照画素用メモリ１４のデータが入力されるように構成されており、前方のプロセッサエレメントを参照する命令が発行されるたびに、参照画素用メモリ１４の値が命令実行後に格納される。この３つのレジスタＬ１〜Ｌ３は、グローバルプロセッサ１より制御信号が入力されており、０などの固定値に設定することも可能である。
【００５２】
参照画素用メモリ１４は、本実施例ではプロセッサエレメントＰＥ２３７、プロセッサエレメント２３８、プロセッサエレメント２３９の３つのプロセッサエレメントのレジスタバスのデータが入力されるように構成されている。そして、前方のプロセッサエレメントを参照する命令が発行されるたびに、これらの３つのプロセッサエレメントのレジスタより読み出されたデータがメモリに格納される。
【００５３】
また、参照画素用メモリ１４は、ＦＩＦＯメモリであり、デュアルポートメモリで構成されている。又は、メモリへのライトとリードを時分割するように制御することでシングルポートメモリを用いて構成してもよい。
【００５４】
なお、本実施例では説明の簡略化のために、オーバラップが必要な画素データの画素数を１６個に限定した構成とした。しかし、オーバラップに必要な画素データの画素数に応じて、装置構成を適宜変更することができる。例えば、オーバーラップ量が、８個、１６個、２４個、３２個の４種類の中から設定できるようにすることもできる。オーバラップに必要な画素データの画素数が８個の場合は、プロセッサエレメントＰＥ２４５、プロセッサエレメントＰＥ２４６、プロセッサエレメント２４７の３つのプロセッサエレメントを選択するように図示していないマルチプレクサを設け、参照画素用メモリ１４に入力するように構成してもよい。
【００５５】
また、オーバラップに必要な画素データの画素数が１６個の場合は、プロセッサエレメントＰＥ２３７、プロセッサエレメントＰＥ２３８、プロセッサエレメント２３９の３つのプロセッサエレメントを選択するようにマルチプレクサを設け、参照画素用メモリ１４に入力するように構成してもよい。
【００５６】
また、オーバラップに必要な画素データの画素数が２４個の場合は、プロセッサエレメント２２９、プロセッサエレメント２３０、プロセッサエレメント２３１の３つのプロセッサエレメントを選択するようにマルチプレクサを設け、参照画素用メモリ１４に入力するように構成してもよい。
【００５７】
また、オーバラップに必要な画素データの画素数が３２個の場合は、プロセッサエレメント２２１、プロセッサエレメント２２２、プロセッサエレメント２２３の３つのプロセッサエレメントを選択するようにマルチプレクサを設け、参照画素用メモリに入力するように構成してもよい。
【００５８】
次に、図１１を用いて、ＦＩＦＯメモリのライト・リードポインタの制御方法を説明する。図１１は、ＦＩＦＯメモリのライト・リードポインタの制御方法を説明するための図である。
【００５９】
図１１に示すＲは、図３に示す参照画素用メモリ１４からレジスタＬ１〜Ｌ３へのデータリード、図１１に示すＬは、図３に示すプロセッサエレメントＰＥ２３７〜ＰＥ２３９の３つのプロセッサエレメントの有するデータの参照画素用メモリ１４へのデータライトを示す。また、図１１に示すＦは、前方プロセッサエレメントを参照する命令を発行しているサイクルであることを示す。
【００６０】
図１１に示すように、各ＳＩＭＤの先頭において、両ポインタはリセットされると共に最初のデータが、図３に示すレジスタＬ１〜Ｌ３にリードされる。前方参照命令が発行されるたびに、図３に示す参照画素用メモリ１４へのリード・ライトアクセスが行われ、ポインタは１ずつインクリメントされる。ライトポインタは、リードポインタを１クロック遅延させた値となる。
【００６１】
次に、図５に基いて、本実施例の図３に示す参照画素用メモリ１４のアドレス生成器について説明する。図５は、本実施例の参照画素用メモリのアドレス生成器の構成ブロック図である。
【００６２】
本実施例のアドレス生成器は、図５に示す、１２ビットのカウンタ１７のみから構成される。カウンタ１７は、カウンタ値をリードポインタとしてのアドレスとして出力し、カウンタ値を１クロック遅延させた値をライトポインタとしてのアドレスとして図３に示す参照画素用メモリ１４に出力している。カウンタの値は、参照画素用メモリ１４のアドレスとして使用され、４Ｋワードまでの参照画素データのアドレスとなる。
【００６３】
また、カウンタ１７をカウントアップさせる信号は、プログラムＲＡＭ８から読み出した命令コードを記憶しているインストラクションレジスタ１５の値をデコードして、各種制御信号を生成しているデコーダ１６において、前方プロセッサエレメント参照の命令が発行された場合のみ出力される。カウンタ１７は、毎ＳＩＭＤの先頭でクリアされ、最初の参照画素データをレジスタＬ１〜Ｌ３に読み出した後、１つインクリメントするように制御されるとよい。
【００６４】
参照画素用メモリ１４に必要な容量は、フィルター処理などの前後のプロセッサエレメントの画素データを参照した演算を行う処理の量によって変化する。しかし、フィルターなどのマトリックスが左右対称であることを考慮すると、最大でも全命令数の半分の容量があればよい。
【００６５】
本実施例では、プログラムＲＡＭの容量が３２ビット×８Ｋワードであるので、参照画素用メモリ１４の容量を３（Ｌ１、Ｌ２、Ｌ３）×８ビット×４Ｋワードとしており、メモリのアドレスとして１２ビットを出力している。
【００６６】
次に、本実施例のＳＩＭＤ型マイクロプロセッサの命令フォーマット例を図４に基いて説明する。図４は、本実施例のＳＩＭＤ型マイクロプロセッサの命令フォーマット例を示す図である。説明を簡単にするために命令フォーマットは、簡略化している。図４に示すように命令コードは３２ビットで形成されている。
【００６７】
命令コードは、ビット３１〜１９のフィールドによって命令の種類を表している。ビット１８は０であれば、ソースオペランドとして汎用レジスタを指定し、１であればソースオペランドとして１６ビットの即値を指定するフォーマットとなる。
【００６８】
レジスタオペランドの場合は、ビット１７〜１３はＢＳＨフィールドであり、図２又は図３に示されるシフタ(シフト拡張器)のシフト量を表している。ビット１７は特にシフト拡張の際にゼロ拡張するか、符号拡張するかを選択するビットであり、ＡＬＵにおける演算についても符号なしで行うか、符号付きで行うかの決定をしている。
【００６９】
ビット１２〜８は、Ｒｄフィールドであり、演算後の値を格納するレジスタを指定している。ビット７〜３はＲｓフィールドであり、演算のソースレジスタを指定している。ビット２〜０はＰＳＨフィールドであり、演算のソースレジスタをどのプロセッサエレメントから選択するかを決定している。
【００７０】
即値オペランドの場合は、ビット１７はＳフィールドであり、ＡＬＵにおける演算を符号なしで行うか、符号付きで行うかの決定をしている。ビット１５〜０はＩＭＭ１６フィールドであり、ここに指定した値が即値として用いられる。図４に示す命令フォーマットの場合においては、前方プロセッサエレメントの参照命令かどうかは、命令コードのビット１８及びビット２〜０をデコードするだけでよいので簡単な構成でよい。
【００７１】
以上、上述した本実施例のＳＩＭＤ型マイクロプロセッサの構成によって、得られる効果を図６、７に基いて説明する。図７は、本実施例のＳＩＭＤ型マイクロプロセッサを用いた画像データ処理方法を説明する図である。また、図６は、図７との比較のための、ＳＩＭＤ型マイクロプロセッサを用いた従来の画像データ処理方法を説明する図である。
【００７２】
図６に示すように、ＳＩＭＤ型のマイクロプロセッサに装備しているプロセッサエレメント数ｎよりも主査方向の画素数の方が多い場合には、１ラインの主査方向の画素をプロセッサエレメント数ｎ個単位で分割し、画像処理を複数回反復して実施する。図６では、プロセッサエレメント数ｎ毎に分割された画素ブロックのことを左から順に１ＳＩＭＤ目、２ＳＩＭＤ目、・・・（以下略）と便宜上名付ける。
【００７３】
このように、主査方向の画素を複数回反復して画像処理を行う場合において、背景技術において説明したようなフィルター処理などの演算を行う場合には、隣接するプロセッサエレメントの有する画素データを参照する必要があるために、分割した画素のつなぎ目の部分において（すなわち両端のプロセッサエレメントの部分）演算結果が無効な画素が生じる。この無効な画素が生じないように、フィルター処理などの演算で参照する前方参照画素数、又は、後方隣接画素数の総和部分の画素データを、あらかじめ重複させてＳＩＭＤ型マイクロプロセッサに転送している（オーバーラップ）。
【００７４】
次に、図７に従い、本実施例の画像データ処理方法について説明する。まず、１ＳＩＭＤ目の処理は、図６に示す従来の画像データの処理方法と同様に、プロセッサエレメントの処理する画素データの両端にオーバラップとして、画素数１６個ずつ(あわせて３２個)の画素データを持った状態で処理を行う。
【００７５】
このとき、有効画素は、プロセッサエレメントＰＥ１６〜ＰＥ２３９の処理する２２４画素である。有効画素の後端のプロセッサエレメントＰＥ２３７〜ＰＥ２３９（図７において灰色に塗られている部分）の画素データが、後方のプロセッサエレメントＰＥ２４０〜２４２）より参照されている場合には、参照されている画素データを図３に示す参照画素用メモリ１４に格納する。
【００７６】
次に、２ＳＩＭＤ目の処理は、オーバラップに用いる画素データをプロセッサエレメントの処理する画素の後端のみに持った状態で処理を行う。有効画素は、プロセッサエレメントＰＥ０〜２３９の処理する２４０画素である。有効画素の後端のプロセッサエレメントＰＥ２３７〜２３９のデータは、１ＳＩＭＤ目と同様に前方参照された時に参照画素用メモリ１４にデータを格納する。
【００７７】
また、プロセッサエレメントの先端のプロセッサエレメントＰＥ０〜ＰＥ２については、前方のプロセッサエレメントを参照する命令が発行された場合は、１ＳＩＭＤ目における灰色に塗られた部分のデータを参照すればよい。よって、図３に示す参照画素用メモリ１４に格納されている画素データをレジスタＬ１〜Ｌ３にリードし、レジスタＬ１〜Ｌ３の値を参照すればよいことになる。
【００７８】
また、図３に示すレジスタＬ１〜Ｌ３には、２ＳＩＭＤ目の先頭で１ＳＩＭＤ目の最初に格納されたデータをリードしておく。前方参照命令が発行された場合には、プロセッサエレメントＰＥ０〜ＰＥ２は、レジスタＬ１〜Ｌ３の値を参照し、命令発行後に参照画素用メモリ１４のデータをレジスタＬ１〜Ｌ３にリードするように制御するとよい。
【００７９】
続いて、３ＳＩＭＤ目以降の処理は、２ＳＩＭＤ目の処理と同様の処理を行う。
【００８０】
以上説明したように、本実施例によれば、図６に示されている従来の画像データ処理方法では、オーバラップに用いる画素は、プロセッサエレメント２５６個（プロセッサエレメントＰＥ０〜ＰＥ２５５）が処理する画素のうち、両端のプロセッサエレメント３２個（プロセッサエレメントＰＥ０〜ＰＥ１５、ＰＥ２４０〜ＰＥ２５５）が処理する画素である。
【００８１】
そして、これらのオーバーラップ用の画素は、有効画素ではないため、実際には、プロセッサエレメント２２４個（プロセッサエレメントＰＥ１６〜ＰＥ２３９）が処理する画素のスループットしかなかった。
【００８２】
しかし、本実施例では、１ＳＩＭＤ目だけはプロセッサエレメントが処理する画素の両端にオーバラップが必要であるが、２ＳＩＭＤ目以降では、プロセッサエレメントが処理する画素の後端のみにオーバラップを持てばよいので、プロセッサエレメント２４０個が処理する画素のスループットが得られることがわかる。
【００８３】
なお、本実施例においては、図３に示す参照画素用メモリ１４にレジスタＬ１〜Ｌ３の全てのデータを前方参照命令が発行されるたびに格納する構成につき記載した。しかし、参照画素用メモリ１４を，図に示さないが、レジスタＬ１用、レジスタＬ２用、レジスタＬ３用と３つに分割して、図１３に示すような、カウンタ（Ｌ１）１７ａ、カウンタ（Ｌ２）１７ｂ、カウンタ（Ｌ３）１７ｃを有するアドレス生成器を設けることもできる。そして、図１２に示すように、３つのＦＩＦＯメモリのポインタを制御することで参照画素用メモリの容量を更に削減することが出来ることは自明である。
【実施例２】
【００８４】
本実施例を、添付図面に基いて説明する。図８は、本実施例のＳＩＭＤ型マイクロプロセッサの構成ブロック図である。上述した第１の実施例のＳＩＭＤ型マイクロプロセッサの構成では、特定のプロセッサエレメントに限定して、参照画素用メモリにデータを格納することしか出来なかった。
【００８５】
しかし、本実施例では、グローバルプロセッサ１に内蔵されるプロセッサエレメントを選択するレジスタ(プロセッサエレメント選択レジスタ：図示せず)を設けることにより、各プロセッサエレメントに、参照画素用メモリにデータを格納する、プロセッサエレメントを指定するためのアドレスが供給され、各プロセッサエレメントが内蔵しているデコーダ１８において任意のプロセッサエレメントを指定することが可能となっている。
【００８６】
指定されたプロセッサエレメントではデコーダ１８よりバスドライバ１９の出力イネーブル信号がアサートされる。バスドライバ１９は、プロセッサエレメント番号が４の倍数のプロセッサエレメントでは、プロセッサエレメント(４ｎ)用リードバスに、プロセッサエレメント番号が(４の倍数+１)のプロセッサエレメントでは、プロセッサエレメント(４ｎ+１)用リードバスに、プロセッサエレメント番号が(４の倍数+２)のプロセッサエレメントでは、プロセッサエレメント(４ｎ+２)用リードバスに、プロセッサエレメント番号が(４の倍数+３)のプロセッサエレメントでは、プロセッサエレメント(４ｎ+３)用リードバスに接続されている。
【００８７】
この４本のリードバスはプロセッサエレメント選択レジスタの値に応じてマルチプレクサによって３本が選択され、参照画素用メモリに入力されるように構成される。
【００８８】
以上説明した構成によれば、アプリケーションによってオーバラップ数が変動するような場合、あるいは処理に必要なプロセッサエレメント数が変動しても、オーバラップ量を半分にすることが可能となる。
【実施例３】
【００８９】
本実施例を、添付図面に基いて説明する。図９は、本実施例のＳＩＭＤ型マイクロプロセッサの構成図である。本実施例においては、参照画素用メモリがデータＲＡＭ２０によって構成されている。データＲＡＭ２０はデュアルポートメモリであり、片方のポートはグローバルプロセッサ１がデータの保存、復帰に用いる本来のデータＲＡＭとして使用され、残りのポートが参照画素データの記憶のために用いられる。参照画素データの書き込みと読み出しは時分割して行う。
【００９０】
図１０は、本発明の実施例のデータＲＡＭ２０を用いたアドレス生成器の構成ブロック図である。本実施例のアドレス生成器は、図１０に示す、データアドレスラッチ２１、１２ビットのカウンタ２２、オフセットレジスタ２３から構成される。
【００９１】
ポート１側のアドレスは、通常のデータＲＡＭとして用いるために、データアドレスがそのままアドレスとしてデータアドレスラッチ２１から出力される。
【００９２】
ポート２側のアドレスは、１２ビットのカウンタ２２と４ビットのオフセット値を有するオフセットレジスタ２３とから合成するように構成する。オフセット値は、プログラムによって変更可能なレジスタで構成するとよい。
【００９３】
本実施例によれば、参照画素データの記憶に必要なＲＡＭの容量によって、データＲＡＭ２０の中から参照画素用のＲＡＭ領域を確保することが出来る。また、参照画素用のＲＡＭを必要としないアプリケーションでは、通常のデータＲＡＭとして使用することが出来るため、メモリの節約となる。
【実施例４】
【００９４】
本実施例を、添付図面に基いて説明する。図１４は、本実施例の参照画素用メモリのアドレス生成器の構成ブロック図である。本実施例においては、参照画素用メモリのアドレス生成器に参照画素用メモリの容量を示すレジスタ２４を有し、このレジスタ２４の値と、カウンタ１７の有するアドレスとを比較する比較器２５を有している点が特徴である。本実施例では、比較結果が等しくなった場合には、前方参照命令が発行されても、参照画素用メモリのデータライトを抑止するように制御する。
【００９５】
本実施例によれば、前方参照命令が多く発行された結果として、参照画素用メモリがフルになった場合にそれ以降の処理を正しく継続することが可能となる。
【００９６】
例えば、フィルター処理などの前方参照画素を必要とする５つの信号処理（前方参照画素数ａ１の処理Ａ、前方参照画素数ａ２の処理Ｂ、前方参照画素数ａ３の処理Ｃ、前方参照画素数ａ４の処理Ｄ、及び、前方参照画素数ａ５の処理Ｅ）において、処理Ａ〜Ｅの順で５つの処理を行ったとする。ここで、従来構成のＳＩＭＤ型マイクロプロセッサを用いると、（ａ１＋ａ２＋ａ３＋ａ４＋ａ５）個のオーバラップが、プロセッサエレメントの前方側、後方側の両側に必要である。
【００９７】
しかし、第１から第３の実施例に示したＳＩＭＤ型マイクロプロセッサを用いると、全ての前方参照画素データが参照画素用メモリに格納できた場合には、後方側のみ（ａ１＋ａ２＋ａ３＋ａ４＋ａ５）個のオーバラップがあればよく、前方には全くオーバラップは必要ない。
【００９８】
ところで、上述の５つの処理の途中の、例えば、処理Ｄにおいて参照画素用メモリがフルになってしまった場合に、第１から第３の実施例に示したＳＩＭＤ型マイクロプロセッサを用いると、処理Ａ〜Ｃにおいては前方参照画素が正しく反映でき、処理Ｄ及び処理Ｅのみ前方参照画素が正しく反映できない。
【００９９】
そこで、本実施例では、参照画素用メモリアドレス生成器において、参照画素用メモリの容量を示すレジスタ２４の値とカウンタ１７の有するアドレスとを比較する比較器２５の比較結果が等しくなった場合には、前方参照命令が発行されても、参照画素用メモリのデータライトを抑止するように制御し、オーバラップを前方に(ａ４＋ａ５)個だけ持った状態で処理を行う。その結果、処理Ｄ及び処理Ｅを正しく行うことができるようになる。
【図面の簡単な説明】
【０１００】
【図１】本発明の第１の実施例におけるＳＩＭＤ型マイクロプロセッサの概略構成ブロック図である。
【図２】本発明の第１の実施例におけるＳＩＭＤ型マイクロプロセッサの構成ブロック図である。
【図３】本発明の第１の実施例におけるＳＩＭＤ型マイクロプロセッサの他の構成ブロック図である。
【図４】本発明の第１の実施例におけるＳＩＭＤ型マイクロプロセッサの命令フォーマット例を示す図である。
【図５】本発明の第１の実施例における参照画素用メモリ用アドレス生成器の構成ブロック図である。
【図６】ＳＩＭＤ型マイクロプロセッサを用いた従来の画像処理方法を説明する図である。
【図７】本発明の第1の実施例におけるＳＩＭＤ型マイクロプロセッサを用いた画像処理方法を説明する図である。
【図８】本発明の第２の実施例におけるＳＩＭＤ型マイクロプロセッサの構成ブロック図である。
【図９】本発明の第３の実施例におけるＳＩＭＤ型マイクロプロセッサの構成ブロック図である。
【図１０】本発明の第３の実施例におけるデータＲＡＭを用いた参照画素用メモリ用アドレス生成器の構成ブロック図である。
【図１１】本発明の第１の実施例におけるＦＩＦＯメモリのライト・リードポインタの制御方法を説明するための図である。
【図１２】本発明の第１の実施例における他のＦＩＦＯメモリのライト・リードポインタの制御方法を説明するための図である。
【図１３】本発明の第１の実施例における参照画素用メモリ用アドレス生成器の他の構成ブロック図である。
【図１４】本発明の第４の実施例における参照画素用メモリ用アドレス生成器の構成ブロック図である
【符号の説明】
【０１０１】
１    グローバルプロセッサ
２    レジスタファイル
３    演算アレイ
４    プロセッサエレメントグループ
５    外部インターフェース
６    メモリコントローラ
７    メモリ
８    プログラムＲＡＭ
９    データＲＡＭ
１０    レジスタ
１１    マルチプレクサ
１２    シフト＆拡張回路
１３    １６ビットＡＬＵ
１４    参照画素用メモリ
１５    インストラクションレジスタ
１６    デコーダ
１７    カウンタ
１８    デコーダ
１９    バスドライバ
２０    データＲＡＭ
２１    データアドレスラッチ
２２    カウンタ
２３    オフセットレジスタ
２４    レジスタ
２５    比較器
Ａ    レジスタ
Ｆ    レジスタ
Ｇ０〜Ｇ３    レジスタ
Ｌ１〜Ｌ３    レジスタ
ＬＳ    リンクレジスタ
ＬＩ    レジスタ
ＬＮ    レジスタ
Ｐ    プロセッサステータスレジスタ
ＰＣ    プログラムカウンタ
ＰＥ０〜２５５    プロセッサエレメント
ＳＰ    スタックポインタ
【図１】
2005135163.tif 000003
【図２】
2005135163.tif 000004
【図３】
2005135163.tif 000005
【図４】
2005135163.tif 000006
【図５】
2005135163.tif 000007
【図６】
2005135163.tif 000008
【図７】
2005135163.tif 000009
【図８】
2005135163.tif 000010
【図９】
2005135163.tif 000011
【図１０】
2005135163.tif 000012
【図１１】
2005135163.tif 000013
【図１２】
2005135163.tif 000014
【図１３】
2005135163.tif 000015
【図１４】
2005135163.tif 000016