(57)【特許請求の範囲】
【請求項１】
複数のプロセッサエレメントを含むＳＩＭＤ型マイクロプロセッサが有する、
プロセッサエレメントが内蔵している汎用レジスタに上記マイクロプロセッサ外部からアクセスするための、データ転送用ポートに接続されているデータ間引き装置であり、
内部に含まれるシーケンサにより制御され、
上記ＳＩＭＤ型マイクロプロセッサに含まれるグローバルプロセッサより行われる動作開始の指示設定に応じて自動的に動作することで上記ＳＩＭＤ型マイクロプロセッサのＳＩＭＤ演算処理と並列して処理を実施し、
前記プロセッサエレメントが内蔵している汎用レジスタに格納されるデータの中から任意のデータを複数選択して読み出し、その後それら複数のデータを汎用レジスタに書き戻し、
書き戻しによりそれら複数のデータが格納されるプロセッサエレメントの間隔が、読み出し時にそれら複数のデータが格納されていたプロセッサエレメントの間隔よりも、小さいことを特徴とする、
データ間引き装置。
【請求項２】
複数のプロセッサエレメントを含むＳＩＭＤ型マイクロプロセッサが有する、
プロセッサエレメントが内蔵している汎用レジスタに上記マイクロプロセッサ外部からアクセスするための、データ転送用ポートに接続されているデータ拡大装置であり、
内部に含まれるシーケンサにより制御され、
上記ＳＩＭＤ型マイクロプロセッサに含まれるグローバルプロセッサより行われる動作開始の指示設定に応じて自動的に動作することで上記ＳＩＭＤ型マイクロプロセッサのＳＩＭＤ演算処理と並列して処理を実施し、
前記プロセッサエレメントが内蔵している汎用レジスタに格納されるデータの中から任意のデータを複数選択して読み出し、その後それら複数のデータを汎用レジスタに書き戻し、
書き戻しによりそれら複数のデータが格納されるプロセッサエレメントの間隔が、読み出し時にそれら複数のデータが格納されていたプロセッサエレメントの間隔よりも、大きいことを特徴とする、
データ拡大装置。
【請求項３】
読み出されたデータにおいて、所定の位置の１ビットに格納されるデータ、若しくは所定の位置の複数ビットに格納されるデータを、選択し、
汎用レジスタに書き戻す際には、１つの汎用レジスタ上に、複数組の、上記データを格納させる、
請求項１に記載の、データ間引き装置。
【請求項４】
選択される任意のデータ以外のデータであって、プロセッサエレメント全体により構成される列の第１の端部近傍に位置するプロセッサエレメントが内蔵する汎用レジスタに格納される所定のデータを、読み出し、
それらデータを、プロセッサエレメント全体により構成される列の第２の端部近傍に位置するプロセッサエレメントが内蔵している汎用レジスタに、書き戻し、
同時に、
選択される任意のデータ以外のデータであって、プロセッサエレメント全体により構成される列の、第２の端部近傍に位置するプロセッサエレメントが内蔵する汎用レジスタに格納される所定のデータを、読み出し、
それらデータを、プロセッサエレメント全体により構成される列の第１の端部近傍に位置するプロセッサエレメントが内蔵している汎用レジスタに、書き戻す、
請求項１に記載の、データ間引き装置。
【請求項５】
読み出されたデータを、１ビットのデータ若しくは複数ビットのデータに、分割し、
上記分割により形成される複数組の上記データを、別のプロセッサエレメントに内蔵される汎用レジスタに書き戻す、
請求項２に記載の、データ拡大装置。
【請求項６】
書き戻しによりデータが格納される第１のプロセッサエレメントと、書き戻しによりデータが格納される第２のプロセッサエレメントとにおいて、
上記第１のプロセッサエレメントと上記第２のプロセッサエレメントとの間に、１つの又は複数の連続する第３のプロセッサエレメントが存在し、それら第３のプロセッサエレメントには、データ書き戻しは行なわれないとき、
第１のプロセッサエレメントに書き戻されるデータ、又は第２のプロセッサエレメントに書き戻されるデータが、
第３のプロセッサエレメントに内蔵される汎用レジスタに、複写して書かれる、
請求項２に記載の、データ拡大装置。
【請求項７】
縮小対象のデータを構成する最小構成単位が縮小対象のデータにいくつ含まれるかを示す個数分と等しい、ビット数までを、少なくともビット容量として備えるメモリ部を含み、
縮小対象のデータを構成する個々の最小構成単位にて間引き対象であるものと、上記メモリ部のビット位置とを対応させ、対応するビット位置に所定のデータを格納し、
その格納された所定のデータに基づいて、
プロセッサエレメントが内蔵している汎用レジスタに格納されるデータからの上記読み出し処理と、その後の汎用レジスタへの上記書き戻し処理とを行う
請求項１に記載の、データ間引き装置。
【請求項８】
拡大処理後のデータを構成する最小構成単位が拡大処理後のデータにいくつ含まれるかを示す個数分と等しい、ビット数までを、少なくともビット容量として備えるメモリ部を含み、
拡大処理後のデータを構成する個々の最小構成単位にて拡大制御対象であるものと、上記メモリ部のビット位置とを対応させ、対応するビット位置に所定のデータを格納し、
その格納された所定のデータに基づいて、
プロセッサエレメントが内蔵している汎用レジスタに格納されるデータからの上記読み出し処理と、その後の汎用レジスタへの上記書き戻し処理とを行う
請求項２に記載の、データ拡大装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−ｓｔｒｅａｍＭｕｌｔｉｐｌｅ  Ｄａｔａ−ｓｔｒｅａｍ；単一命令多データ処理）型マイクロプロセッサに関する。
【０００２】
【従来の技術】
ＳＩＭＤ型マイクロプロセッサでは、複数のデータに対して１つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理（例えば、画像処理）に係る用途において、頻用される。
【０００３】
ＳＩＭＤ型マイクロプロセッサにおける通常の演算処理では、複数の演算ユニット（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ〔ＰＥ〕；プロセッサエレメント）を並べ同一の演算を同時に複数のデータに対して実行する。
【０００４】
ＳＩＭＤ型マイクロプロセッサは、全てのＰＥが同時に動作する処理においてはその性能を十分に発揮できる。
【０００５】
ところで、画像データの（演算）処理においては、処理対象の画像データの領域が、例えば、「文字領域」であるのか又は「写真領域」であるのか、を検出し、その検出結果を利用して領域別に処理内容を変更することがある。このような検出の場合、判定対象データとして相当に広い領域範囲の画素データの処理が必要とされる。ところが、ＳＩＭＤ型マイクロプロセッサにおいては、画素データを直接操作しようとすると、一度に処理できるのは精々「８×８」画素程度の範囲のデータに過ぎない。そこで、より広い範囲の画素データを処理するために、例えば「４×４」画素データを１つのデータ（ブロック）に変換し（ブロック化と言う。）、このブロックに対して領域判定処理を行なうことがある。「４×４」画素を１ブロックとしそのブロックを「８×８」個集めてその範囲で処理を行うと、結局「３２×３２」画素の範囲のデータが処理対象となる。図２２にその様子を示す。従って、相当に広い範囲の画素データが一度に扱えることになる。
【０００６】
上記のブロック化処理では、縮小処理が必須となる。
【０００７】
しかし、ＳＩＭＤ型マイクロプロセッサでは通常この縮小処理を実施することは困難である。従来のＳＩＭＤ型マイクロプロセッサにおいては、そのため種々の工夫がなされている。
【０００８】
例えば、従来技術においては、ＰＥに内蔵された出力レジスタに対しデータを出力するかどうかの指示を与えることにより外部に出力するデータの選択を行い、よって縮小を実現しているものがある。
【０００９】
特開平８−１２３６８３号では、プロセッサから外部へ出力する出力シフトレジスタのシフト動作を制御して飛び飛びの画素データを出力することで、縮小処理を実現している。
【００１０】
けれども、上記技術の場合には、出力データを縮小することにのみ限定され、演算の途中のデータを縮小することはできない。然も、各ＰＥにて、データを出力するか否かを制御する回路を付加することが必要である（コスト高の問題を生じる）。さらに、縮小したデータを拡大しようとしても、上記の技術では全く対応できない。
【００１１】
また、例えば、別の従来技術においては、ＰＥに内蔵されたレジスタのデータを外部に出力し外部のＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリにデータを保存する際に、任意のデータを間引いて該ＦＩＦＯメモリに格納し、その後ＦＩＦＯメモリから各ＰＥのレジスタにデータを転送して、縮小を実現している。この場合にも、１ライン分のＦＩＦＯメモリが付加的に必要となる（コスト高の問題がある）。
【００１２】
類似の従来技術が、特開平９−２１２６３７号で開示されている。そこでは、パラレル／シリアル変換器とシリアル／パラレル変換器をプロセッサエレメントに持たせ、よって縮小・拡大処理を実現している。この従来技術においても、上記のハードウエアを搭載することが必要であるため、縮小動作が不要な場合に不要なコストが発生する問題がある。
【００１３】
【発明が解決しようとする課題】
本発明は、ＳＩＭＤ型マイクロプロセッサにおいて、簡易な構成及び低コストにより、間引き処理、即ち縮小処理、及び拡大処理を行なうことを目的とする。
【００１４】
【課題を解決するための手段】
本発明は、上記の目的を達成するためになされたものである。本発明に係る請求項１に記載のデータ間引き装置は、
複数のプロセッサエレメントを含むＳＩＭＤ型マイクロプロセッサが有する、
プロセッサエレメントが内蔵している汎用レジスタに上記マイクロプロセッサ外部からアクセスするための、データ転送用ポートに接続されているデータ間引き装置であり、
内部に含まれるシーケンサにより制御され、
上記ＳＩＭＤ型マイクロプロセッサに含まれるグローバルプロセッサより行われる動作開始の指示設定に応じて自動的に動作することで上記ＳＩＭＤ型マイクロプロセッサのＳＩＭＤ演算処理と並列して処理を実施し、
前記プロセッサエレメントが内蔵している汎用レジスタに格納されるデータの中から任意のデータを複数選択して読み出し、その後それら複数のデータを汎用レジスタに書き戻し、
書き戻しによりそれら複数のデータが格納されるプロセッサエレメントの間隔が、読み出し時にそれら複数のデータが格納されていたプロセッサエレメントの間隔よりも、小さいことを特徴とする。
【００１５】
本発明に係る請求項２に記載のデータ拡大装置は、
複数のプロセッサエレメントを含むＳＩＭＤ型マイクロプロセッサが有する、
プロセッサエレメントが内蔵している汎用レジスタに上記マイクロプロセッサ外部からアクセスするための、データ転送用ポートに接続されているデータ拡大装置であり、
内部に含まれるシーケンサにより制御され、
上記ＳＩＭＤ型マイクロプロセッサに含まれるグローバルプロセッサより行われる動作開始の指示設定に応じて自動的に動作することで上記ＳＩＭＤ型マイクロプロセッサのＳＩＭＤ演算処理と並列して処理を実施し、
前記プロセッサエレメントが内蔵している汎用レジスタに格納されるデータの中から任意のデータを複数選択して読み出し、その後それら複数のデータを汎用レジスタに書き戻し、
書き戻しによりそれら複数のデータが格納されるプロセッサエレメントの間隔が、読み出し時にそれら複数のデータが格納されていたプロセッサエレメントの間隔よりも、大きいことを特徴とする。
【００１６】
本発明に係る請求項３に記載のデータ間引き装置は、
読み出されたデータにおいて、所定の位置の１ビットに格納されるデータ、若しくは所定の位置の複数ビットに格納されるデータを、選択し、
汎用レジスタに書き戻す際には、１つの汎用レジスタ上に、複数組の、上記データを格納させる、
請求項１に記載の、データ間引き装置である。
【００１７】
本発明に係る請求項４に記載のデータ間引き装置は、
選択される任意のデータ以外のデータであって、プロセッサエレメント全体により構成される列の第１の端部近傍に位置するプロセッサエレメントが内蔵する汎用レジスタに格納される所定のデータを、読み出し、
それらデータを、プロセッサエレメント全体により構成される列の第２の端部近傍に位置するプロセッサエレメントが内蔵している汎用レジスタに、書き戻し、
同時に、
選択される任意のデータ以外のデータであって、プロセッサエレメント全体により構成される列の、第２の端部近傍に位置するプロセッサエレメントが内蔵する汎用レジスタに格納される所定のデータを、読み出し、
それらデータを、プロセッサエレメント全体により構成される列の第１の端部近傍に位置するプロセッサエレメントが内蔵している汎用レジスタに、書き戻す、
請求項１に記載の、データ間引き装置である。
【００１８】
本発明に係る請求項５に記載のデータ拡大装置は、
読み出されたデータを、１ビットのデータ若しくは複数ビットのデータに、分割し、
上記分割により形成される複数組の上記データを、別のプロセッサエレメントに内蔵される汎用レジスタに書き戻す、
請求項２に記載の、データ拡大装置である。
【００１９】
本発明に係る請求項６に記載のデータ拡大装置は、
書き戻しによりデータが格納される第１のプロセッサエレメントと、書き戻しによりデータが格納される第２のプロセッサエレメントとにおいて、
上記第１のプロセッサエレメントと上記第２のプロセッサエレメントとの間に、１つの又は複数の連続する第３のプロセッサエレメントが存在し、それら第３のプロセッサエレメントには、データ書き戻しは行なわれないとき、
第１のプロセッサエレメントに書き戻されるデータ、又は第２のプロセッサエレメントに書き戻されるデータが、
第３のプロセッサエレメントに内蔵される汎用レジスタに、複写して書かれる、
請求項２に記載の、データ拡大装置である。
【００２０】
本発明に係る請求項７に記載のデータ間引き装置は、
縮小対象のデータを構成する最小構成単位が縮小対象のデータにいくつ含まれるかを示す個数分と等しい、ビット数までを、少なくともビット容量として備えるメモリ部を含み、
縮小対象のデータを構成する個々の最小構成単位にて間引き対象であるものと、上記メモリ部のビット位置とを対応させ、対応するビット位置に所定のデータを格納し、
その格納された所定のデータに基づいて、
プロセッサエレメントが内蔵している汎用レジスタに格納されるデータからの上記読み出し処理と、その後の汎用レジスタへの上記書き戻し処理とを行う
請求項１に記載の、データ間引き装置である。
【００２１】
本発明に係る請求項８に記載のデータ拡大装置は、
拡大処理後のデータを構成する最小構成単位が拡大処理後のデータにいくつ含まれるかを示す個数分と等しい、ビット数までを、少なくともビット容量として備えるメモリ部を含み、
拡大処理後のデータを構成する個々の最小構成単位にて拡大制御対象であるものと、上記メモリ部のビット位置とを対応させ、対応するビット位置に所定のデータを格納し、
その格納された所定のデータ基づいて、
プロセッサエレメントが内蔵している汎用レジスタに格納されるデータからの上記読み出し処理と、その後の汎用レジスタへの上記書き戻し処理とを行う
請求項２に記載の、データ拡大装置である。
【００２２】
【発明の実施の形態】
以下、添付の図面を参照しつつ、本発明に係る好適な実施の形態を説明する。
【００２３】
図１及び図２１は、本発明に係るＳＩＭＤ型マイクロプロセッサ２の概略の構成を示すブロック図である。図１及び図２１の構成は、後で説明する第１の実施の形態乃至第８の実施の形態のＳＩＭＤ型マイクロプロセッサ２の、基礎となる構成である。
【００２４】
図１のＳＩＭＤ型マイクロプロセッサ２は、概略、グローバルプロセッサ４、レジスタファイル６、演算アレイ８、及び間引き器１０若しくは拡大器１２から構成される。
【００２５】
（１）グローバルプロセッサ４
このグローバルプロセッサ４そのものは、いわゆるＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ，Ｓｉｎｇｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）型のプロセッサであり、プログラムＲＡＭとデータＲＡＭを内蔵し、プログラムを解読し各種制御信号を生成する。この制御信号は内蔵する各種ブロックの以外に、レジスタファイル６、演算アレイ８に供給される。また、ＧＰ（グローバルプロセッサ）命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）等を使用して各種演算処理、プログラム制御処理を行う。
【００２６】
（２）レジスタファイル６
ＰＥ（プロセッサエレメント）命令で処理されるデータを保持している。ＰＥ（プロセッサエレメント）３は、公知のように、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−Ｓｔｒｅａｍ，Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−Ｓｔｒｅａｍ）型プロセッサにおいて個別の演算を実行する構成単位である。図２１のレジスタファイル６及び演算アレイ８が示すように、図２１のＳＩＭＤ型マイクロプロセッサ２では２５６個のＰＥ３を含んでいる。上記のＰＥ命令はＳＩＭＤ型の命令であり、レジスタファイル６に保持されている複数のデータに対し、同時に同じ処理を行なう。このレジスタファイル６からのデータの読み出し／書き込みの制御はグローバルプロセッサ４からの制御信号によって行なわれる。読み出されたデータは演算アレイ８（演算部）に送られ、演算アレイ８（演算部）での演算処理後にレジスタファイルに書き込まれる。
【００２７】
図２１のレジスタファイル６においては、１つのＰＥ単位に８ビットのレジスタ３４が３２本内蔵されており、２５６個のＰＥ分の（３２本の）組がアレイ構成になっている。レジスタ３４はＰＥ毎に、Ｒ０、Ｒ１、Ｒ２、・・・Ｒ３１と呼ばれる。
【００２８】
また、レジスタファイル６はプロセッサ２外部からのアクセスが可能であり、グローバルプロセッサ４の制御とは別に、外部から特定のレジスタに対し読み出し／書き込みが行なわれる。
【００２９】
（３）演算アレイ
ＰＥ命令の演算処理が行なわれる。処理の制御はすべてグローバルプロセッサ４から行なわれる。
【００３０】
レジスタファイル６と演算アレイ８との接続部位に、７ｔｏ１（７対１）のマルチプレクサ４２が置かれている。図２１及び図４に示すように、あるマルチプレクサ４２から見て、左方向の３つのＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータと、右方向の３つのＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータと、自らが属するＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータを、演算対象として選択し得るように設定されている。
【００３１】
各ＰＥ３には、ＰＥ番号と呼ばれる通し番号が付されている。図２１のＳＩＭＤ型マイクロプロセッサ２では、ＰＥの個数が２５６個であるので、８ビットのビット列（即ち、００００００００ｂ〜１１１１１１１１ｂの２５６通り。ここで、上記のような末尾の“ｂ”は２進法表記であることを表す。）が、各ＰＥ３にＰＥ番号データとして与えられる。ＰＥ番号は、各ＰＥ３に対し、ＰＥの位置とは無関係に与えられても構わないが、本明細書においては、（右）端から順に付されているものとする。また、ＰＥ番号が「ｎ」であるＰＥを、
・ＰＥ［ｎ］
と表すことにする。従って、図２１のＳＩＭＤ型マイクロプロセッサ２は、右方から、ＰＥ［０］、ＰＥ［２］、ＰＥ［３］、・・・ＰＥ［２５４］、ＰＥ［２５５］により、構成される。
【００３２】
（４）間引き器１０、又は拡大器１２
レジスタファイル６から読み出されたデータから、任意のデータを選択してレジスタファイル６に書き込む。書き込む場合には、通常、下位番号のＰＥ３から詰めて書き込まれる。例えば、２５６個のＰＥ３において、１／４の間引きの処理が行なわれる場合、ＰＥ［０］、ＰＥ［４］、ＰＥ［８］、ＰＥ［１２］、ＰＥ［１６］・・・における特定のレジスタ３４のデータが読み出され、それらデータは、ＰＥ［０］、ＰＥ［１］、ＰＥ［２］、ＰＥ［３］、ＰＥ［４］・・に書き込まれる。「間引きの処理」については、後で詳しく説明する。
【００３３】
≪第１の実施の形態≫
図２は、本発明の第１の実施の形態に係るＳＩＭＤ型マイクロプロセッサ２のブロック図である。
【００３４】
図２において、間引き器１０は、プロセッサ２のレジスタファイル６の外部インタフェース１４に接続される。このレジスタファイル６の外部インタフェース１４では、アドレス、ＣＬＫ、Ｒ／Ｗの信号がプロセッサ２外部より与えられると、アドレスで示されたＰＥ３のレジスタ３４にアクセスでき、ＲｅａｄＤａｔａバス１６によりレジスタ３４の内容が読み出され、ＷｒｉｔｅＤａｔａバス１８によりレジスタ３４にデータが書き込まれる。
【００３５】
間引き器１０は、アクセス対象のＰＥのアドレスを生成するアドレス生成回路２０、読み出されたデータを書き込みまでの期間保持するデータバッファ２２、それらを制御するシーケンサ２４により構成され、プロセッサ２のグローバルプロセッサ（ＧＰ）４より動作の設定が行なわれる。
【００３６】
上記の構成において、２５６個のプロセッサエレメント３を有するＳＩＭＤ型マイクロプロセッサ２での、１／４の間引き動作は以下のようになる。
【００３７】
（１）ＰＥ［０］（アドレス０）のレジスタのデータを読み出し、データバッファ２２に格納する。
（２）ＰＥ［０］（アドレス０）のレジスタへ、データバッファ２２のデータを書き込む。
（３）ＰＥ［４］（アドレス４）のレジスタのデータを読み出し、データバッファ２２に格納する。
（４）ＰＥ［１］（アドレス１）のレジスタへ、データバッファ２２のデータを書き込む。
（５）ＰＥ［８］（アドレス８）のレジスタのデータを読み出し、データバッファ２２に格納する。
（６）ＰＥ［２］（アドレス２）のレジスタへ、データバッファ２２のデータを書き込む。
（７）ＰＥ［１２］（アドレス１２）のレジスタのデータを読み出し、データバッファ２２に格納する。
（８）ＰＥ［３］（アドレス３）のレジスタへ、データバッファ２２のデータを書き込む。
・・・・（同様の動作が繰り返されるため、途中略する。）
（１２３）ＰＥ［２４４］（アドレス２４４）のレジスタのデータを読み出し、データバッファ２２に格納する。
（１２４）ＰＥ［６１］（アドレス６１）のレジスタへ、データバッファ２２のデータを書き込む。
（１２５）ＰＥ［２４８］（アドレス２４８）のレジスタのデータを読み出し、データバッファ２２に格納する。
（１２６）ＰＥ［６２］（アドレス６２）のレジスタへ、データバッファ２２のデータを書き込む。
（１２７）ＰＥ［２５２］（アドレス２５２）のレジスタのデータを読み出し、データバッファ２２に格納する。
（１２８）ＰＥ［６３］（アドレス６３）のレジスタへ、データバッファ２２のデータを書き込む。
【００３８】
なお、最初｛上記（１）及び（２）｝のＰＥ［０］からの読み出し・書き込み動作は、データに変換が無いため省略可能である。
【００３９】
上記の間引きの動作により、４個のＰＥおきのレジスタのデータが、ＰＥ［０］方向に詰めて配置されることになり、結果としてＰＥ［０］〜ＰＥ［６３］のレジスタに１／４に間引きされたデータが得られることになる。また、この処理は１２８ステップが必要であるが、間引き器１０はＧＰ４より開始の指示後は自動的に動作するため、プロセッサ２の命令によるＳＩＭＤ演算処理は並列に実行され得る。
【００４０】
≪第２の実施の形態≫
図３は、本発明の第２の実施の形態に係るＳＩＭＤ型マイクロプロセッサ２のブロック図である。
【００４１】
図３において、拡大器１２は、プロセッサ２のレジスタファイル６の外部インタフェース１４に接続される。拡大器１２は、アクセス対象のＰＥ３のアドレスを生成するアドレス生成回路２０、読み出されたデータを書き込みまでの期間保持するデータバッファ２２、それらを制御するシーケンサ２４により構成され、プロセッサ２のグローバルプロセッサ（ＧＰ）４より動作の設定が行なわれる。
【００４２】
上記の構成において、２５６個のプロセッサエレメント３を有するＳＩＭＤ型マイクロプロセッサ２での、４倍の拡大動作は以下のようになる。
【００４３】
（１）ＰＥ［６３］（アドレス６３）のレジスタのデータを読み出し、データバッファ２２に格納する。
（２）ＰＥ［２５２］（アドレス２５２）のレジスタへ、データバッファ２２のデータを書き込む。
（３）ＰＥ［６２］（アドレス６２）のレジスタのデータを読み出し、データバッファ２２に格納する。
（４）ＰＥ［２４８］（アドレス２４８）のレジスタへ、データバッファ２２のデータを書き込む。
（５）ＰＥ［６１］（アドレス６１）のレジスタのデータを読み出し、データバッファ２２に格納する。
（６）ＰＥ［２４４］（アドレス２４４）のレジスタへ、データバッファ２２のデータを書き込む。
（７）ＰＥ［６０］（アドレス６０）のレジスタのデータを読み出し、データバッファ２２に格納する。
（８）ＰＥ［２４０］（アドレス２４０）のレジスタへ、データバッファ２２のデータを書き込む。
・・・・（同様の動作が繰り返されるため、途中略する。）
（１２３）ＰＥ［２］（アドレス２）のレジスタのデータを読み出し、データバッファ２２に格納する。
（１２４）ＰＥ［８］（アドレス８）のレジスタへ、データバッファ２２のデータを書き込む。
（１２５）ＰＥ［１］（アドレス１）のレジスタのデータを読み出し、データバッファ２２に格納する。
（１２６）ＰＥ［４］（アドレス４）のレジスタへ、データバッファ２２のデータを書き込む。
（１２７）ＰＥ［０］（アドレス０）のレジスタのデータを読み出し、データバッファ２２に格納する。
（１２８）ＰＥ［０］（アドレス０）のレジスタへ、データバッファ２２のデータを書き込む。
【００４４】
なお、最後｛上記（１２７）及び（１２８）｝のＰＥ［０］からの読み出し・書き込み動作は、データに変換が無いため省略可能である。
【００４５】
上記の拡大の動作により、ＰＥ［０］〜ＰＥ［６３］のレジスタのデータが、４個のＰＥおきにＰＥ［０］から間隔を取ってレジスタに配置されることになり、結果として４倍に拡大されたデータが得られることになる。また、この処理は１２８ステップが必要であるが、拡大器１２はＧＰ４より開始の指示後は自動的に動作するため、プロセッサ２の命令によるＳＩＭＤ演算処理は並列に実行され得る。
【００４６】
≪第３の実施の形態≫
従来技術で説明した領域判定処理のブロック化処理において、ブロック単位に保持するデータは、各ブロックに対する所定の判定の結果を示すデータであることが多い。しかも通常は、所定の判定に関して「一致／不一致」のみを示すデータである。このようなデータは１ビットのデータとして表現でき、よってブロック単位に保持するデータは、１ビットだけであることが多い。
【００４７】
図４（及び図２１）のブロック図にて示すように、本発明に係るＳＩＭＤ型マイクロプロセッサ２では、あるＰＥ３からみると、自らが属するＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータと、左右夫々の方向の３つのＰＥ３に含まれるＲ０〜Ｒ３１レジスタ３４のデータとを、演算対象として選択し得るように設定されている。そのため、本発明に係るＳＩＭＤ型マイクロプロセッサ２では、ある画素を中心にして（それ自身を含めて）左右７画素のデータを１回のアクセスにより処理することが可能であるが、その範囲を越えてデータアクセスしようとすると、ライン（主走査）方向でのシフト操作等が必要となってしまう。
【００４８】
ところで、上記の領域判定処理では、広い範囲のデータが必要とされることがあり、例えば、ブロックデータで３２ブロック程度のデータが必要とされる場合がある。仮に３２ブロックまでを１回の操作でアクセス可能となる設定を構成しようとすると、３２の対象から１つを選択させるようなマルチプレクサが必要となる。そうするとハードウエアに係るコストが上昇する。一方で、ライン方向にシフト操作を繰り返す構成を形成する場合、相当に多くのステップ数が必要になり性能を低下させてしまうことになり得る。そこで、上記ブロックデータのように１ビットのみで構成されているデータの場合は、１つのＰＥ３のレジスタに、複数のＰＥ３分のブロックデータを格納することにより、上記問題点を解決することが想定され得る。
【００４９】
本発明に係るＳＩＭＤ型マイクロプロセッサ２では、１つのレジスタ（例えば、Ｒ０）には８ビットのデータを格納可能である。よって、図５のようにデータを格納すれば、左右３５ブロックまで１回のアクセスで扱えるようになる。なお、図５では、ｂｉｔ５、ｂｉｔ６及びｂｉｔ７は、無効データとして扱う（５×１ビット・パック処理）。
【００５０】
仮に、ブロックデータが２ビット必要な場合には、１つのレジスタを２ビットで分割して、複数のＰＥ分のデータを格納することも可能である。本発明に係るＳＩＭＤ型マイクロプロセッサ２では、レジスタは８ビットであるため、１つのＰＥ３（のレジスタ）に２ビットのブロック後データが４個まで格納可能である。その場合は、左右２８ブロックまで１回のアクセスで扱えるようになる（４×２ビット・パック処理）。
【００５１】
図６は、本発明の第３の実施の形態に係るＳＩＭＤ型マイクロプロセッサ２のブロック図である。
【００５２】
図２に示される第１の実施の形態のＳＩＭＤ型マイクロプロセッサ２に対して、データバッファ２２への書き込みにバレルシフタ２６が追加されており、レジスタ３４の任意のビット位置のデータを、データバッファ２２の任意のビットに書き込むことが可能な構成となっている。
【００５３】
上記の構成において、２５６個のプロセッサエレメント３を有するＳＩＭＤ型マイクロプロセッサ２での、「１／４の間引き」且つ「５×１ビット・パック」の動作は以下のようになる。ここで、ＰＥの「レジスタのｂｉｔ０」とは、所定のレジスタの最下位ビットを示す。同様に、「ｂｉｔ１」、「ｂｉｔ２」、「ｂｉｔ３」、「ｂｉｔ４」は、ｂｉｔ０からみて順に１つずつ上位のビットを示す。
【００５４】
（１）ＰＥ［０］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ０に格納する。
（２）ＰＥ［４］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ１に格納する。
（３）ＰＥ［８］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ２に格納する。
（４）ＰＥ［１２］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ３に格納する。
（５）ＰＥ［１６］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ４に格納する。
（６）ＰＥ［０］のレジスタへ、データバッファ２２のデータを書き込む。
（７）ＰＥ［２０］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ０に格納する。
（８）ＰＥ［２４］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ１に格納する。
（９）ＰＥ［２８］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ２に格納する。
（１０）ＰＥ［３２］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ３に格納する。
（１１）ＰＥ［３６］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ４に格納する。
（１２）ＰＥ［１］のレジスタへ、データバッファ２２のデータを書き込む。
（１３）ＰＥ［４０］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ０に格納する。
（１４）ＰＥ［４４］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ１に格納する。
（１５）ＰＥ［４８］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ２に格納する。
（１６）ＰＥ［５２］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ３に格納する。
（１７）ＰＥ［５６］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ４に格納する。
（１８）ＰＥ［２］のレジスタへ、データバッファ２２のデータを書き込む。
・・・・（同様の動作が繰り返されるため、途中略する。）
（７３）ＰＥ［２４０］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ０に格納する。
（７４）ＰＥ［２４４］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ１に格納する。
（７５）ＰＥ［２４８］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ２に格納する。
（７６）ＰＥ［２５２］のレジスタのｂｉｔ０を読み出し、データバッファ２２のｂｉｔ３に格納する。
（７７）ＰＥ［１２］のレジスタへ、データバッファ２２のデータを書き込む。
【００５５】
なお、最後のデータ｛ＰＥ［１２］のレジスタ｝へ格納すべきデータは、４ビットデータとなる。また、上記の動作では、処理後のレジスタ内のデータの並びは図５とは異なる。例えば、ＰＥ［０］のレジスタのｂｉｔ０のデータは、結局“ｂｉｔ０”に格納される（図５では、ｂｉｔ２に格納されている）。
【００５６】
≪第４の実施の形態≫
画像処理の対象画像の（１ラインの、即ち主走査方向の）画素数が、ＳＩＭＤ型マイクロプロセッサ２のＰＥ個数よりも多い場合は、ＰＥ数で分割して処理を行なうことになる。分割される画素データは、例えば、図７のように複数のレジスタ（行）を利用して格納される（ここでは、対象画素が１０２４個、ＰＥ数が２５６個である）。
【００５７】
前に説明したように、そもそも本発明に係るＳＩＭＤ型マイクロプロセッサ２では、１つのＰＥ３の演算部において、該ＰＥ３の左隣３個までのＰＥ３に備わるレジスタ、及び該ＰＥ３の右隣３個までのＰＥ３に備わるレジスタと、アクセスできるように設定されている。例えば、画像データに関する所定のフィルタ処理を行なう場合、ある画素からみて（主走査方向上の）左右の幾つかの画素に係るデータが必要になることがある。上記設定はそのような処理に備えるためのものである。
【００５８】
ところが、画素データを分割する場合、上記のように左右のいくつかの画素データとアクセスすることが必須となる処理を行なおうとしても、分割の境界及びその近傍においてアクセスすべき画素データが得られない、という問題が発生することがある。具体的に説明する。
【００５９】
右３画素、左３画素を利用して、フィルタ処理を行なう場合を想定する。このとき、画素データは図７に示すようにレジスタ３４に格納されているとする。「画素２５５」をＲ０レジスタに格納するＰＥ［２５５］からは、右側３画素である「画素２５４」、「画素２５３」及び「画素２５２」に対して問題なくアクセスできる。しかし、左側３画素である「画素２５６」、「画素２５７」及び「画素２５８」は、ＰＥ［０］、ＰＥ［１］及びＰＥ［２］のＲ１レジスタに格納されているため、ＰＥ［２５５］からは即座にはアクセスできない。
【００６０】
上記の問題の対策として、分割の境界であるところの端部近傍のＰＥ、例えばＰＥ［０］の近傍のＰＥやＰＥ［２５５］の近傍のＰＥにおいては、データの重なりを持たせて画素データを格納させる、というものがある。
【００６１】
図８では、両端部近傍にて夫々４画素（データ）分の重なりを持たせて、画素データを格納している。つまり、ＰＥ［２５２］〜ＰＥ［２５５］のＲ０レジスタに格納されている画素２４８〜２５１は、画素２４７（ＰＥ［２４７］）までのＰＥからの「参照画素」として使用され、ＰＥ［０］〜ＰＥ［３］のＲ１レジスタに格納されている画素２４４〜２４７は、画素２４８（ＰＥ［２４８］）以降のＰＥからの「参照画素」として使用される。これらの「重なりの部分」は、画像処理終了後に最終的には不要データとして削除されて出力される。また、図面上の「ダミー」とは、１０２４画素分の画像データの両端に置かれている不要なデータであり、最終的には削除して出力される。このような「重なりの部分」の大きさは、画像処理の全体において左右方向の参照画素数がどの程度まで必要であるか、で決定される。通常は、１６画素程度である。
【００６２】
但し、上記のように、「重なりの部分」の画素データを格納するため、実質上有効なＰＥ数が減少する。「重なりの部分」の画素データは参照のためにのみ供されるからである。よって、分割数が増加し格納されるレジスタ数が増加する。図８においては、Ｒ４レジスタもデータ格納のために利用されている。
【００６３】
図８のように画像データを分割した場合、間引き処理後は図１０のようになる。図１０は、主走査方向の４画素を１ブロックとして１／４に間引いた処理を行なった結果である。図では、画素０〜３をブロック０、画素４〜７をブロック４、画素８〜１１をブロック８、．．．というように、ブロックの名称を付けている。
【００６４】
先ず図８の状況において、ブロックに含まれる画素データ、例えば画素０〜３の画素値をあるパターン値と比較して一致していれば“１”、一致しなければ“０”に、ブロックデータを設定して、ブロックの先頭の画素に係るＰＥ（例ではＰＥ［０］、ＰＥ［４］、ＰＥ［８］、...）のレジスタに格納する。このことにより、ブロックデータは図９のように４の倍数のＰＥに配置される。続いて、実施の形態１と同様にして１／４に間引くと、図１０のようにＰＥ［０］の方向に詰めて配置される。
【００６５】
ところで、図１０のような間引き処理後のブロックデータを使用して領域判定に係る処理を行なう場合、やはり左右方向のＰＥ３の備えるレジスタ（に格納されるデータ）の参照が必要となることがある。例えば、図１０において、参照ブロックデータが左右３ブロック（３個のＰＥ）まで必要な処理を想定する。図１０のＰＥ［６２］のレジスタＲ０に格納されているブロック２４４のデータに注目すると、右方向の参照ブロックデータは存在する。しかし、左方向の参照ブロックデータに関してはＰＥ［６３］のブロック２４８しか存在しない。同様に、ＰＥ［１］のレジスタＲ１に格納されているブロック２４８のデータは、左方向の参照ブロックデータは存在するが、右方向の参照ブロックデータはＰＥ［０］のブロック２４４しか存在しない。従って、このままでは処理を継続できないことになってしまう。
【００６６】
上記の問題点の解決策の一つとして、図８における間引き前の画素データの重なりの部分を相当に大きく取る、というものが考えられ得る。しかし、こうすると「重なりの部分」が図８のものの４倍も必要となってしまい、実質上有効なＰＥ個数はますます減少してしまう。
【００６７】
本発明の第４の実施の形態に係るＳＩＭＤ型マイクロプロセッサ２は、それらの問題点をも解決するものである。
【００６８】
図１２は、本発明の第４の実施の形態に係るＳＩＭＤ型マイクロプロセッサ２のブロック図である。図２に示される本発明の第１の実施の形態に係るＳＩＭＤ型マイクロプロセッサ２と、略、同様の構成であるが、この第４の実施の形態では、データバッファ２２内のバッファが５つ（ｂｕｆ０、ｂｕｆ１、ｂｕｆ２、ｂｕｆ３、ｂｕｆ４）となっている。
【００６９】
上記の構成において、２５６個のプロセッサエレメント３を有するＳＩＭＤ型マイクロプロセッサ２での、１／４の間引き動作は以下のようになる。
【００７０】
先ず、間引き処理の前に、ブロックデータを図１１のように予め配置する。必要なブロックデータは、図９と同様に、ＰＥ番号が「４の倍数」となるＰＥ（のレジスタ）に格納されている。更に、ＰＥ番号が「４の倍数−１」のＰＥ（のレジスタ）には、画像データを分割して形成された分割画像データの夫々の、１つ前の分割で取り扱われるブロックデータがＰＥ一つ分右方向にずらされて、格納されている。同様に、ＰＥ番号が「４の倍数＋１」のＰＥ（のレジスタ）には、画像データを分割して形成された分割画像データの夫々の、１つ後の分割で取り扱われるブロックデータがＰＥ一つ分左方向にずらされて、格納されている。
【００７１】
図１１において、例えば、Ｒ１レジスタに着目する。ＰＥ番号が４の倍数であるＰＥには、Ｒ１レジスタ（分割１）に格納されていたデータを処理したブロックデータが格納されている。つまり、前に説明したのと同様に、主走査方向の４画素を１ブロックとして、各ブロックに含まれる画素データに所定の演算を施しその結果値をブロックの先頭の画素に係るＰＥのＲ１レジスタに格納している。
【００７２】
同様に、ＰＥ番号が「４の倍数−１」であるＰＥには、Ｒ０レジスタ（分割０）に格納されていたデータを処理したブロックデータが格納されている。つまり、「分割０」において主走査方向の４画素を１ブロックとして、各ブロックに含まれる画素データに所定の演算を施し、その結果値を「４の倍数−１」のＰＥのＲ１レジスタに（ＰＥ一つ分右方向にずらして）格納している。さらに、ＰＥ番号が「４の倍数＋１」であるＰＥには、Ｒ２レジスタ（分割２）に格納されていたデータを処理したブロックデータが格納されている。つまり、「分割２」において主走査方向の４画素を１ブロックとして、各ブロックに含まれる画素データに所定の演算を施し、その結果値を「４の倍数＋１」のＰＥのＲ１レジスタに（ＰＥ一つ分左方向にずらして）格納している。
【００７３】
図１１のように配置されたブロックデータに対して、間引き器１０は、以下の動作を行なう。
【００７４】
（１）ＰＥ［２３５］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（２）ＰＥ［０］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（３）ＰＥ［２３９］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（４）ＰＥ［１］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（５）ＰＥ［２４３］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（６）ＰＥ［２］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（７）ＰＥ［２４７］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（８）ＰＥ［３］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（９）ＰＥ［５］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ１に格納する。
（１０）ＰＥ［９］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ２に格納する。
（１１）ＰＥ［１３］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ３に格納する。
（１２）ＰＥ［１７］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ４に格納する。
（１３）ＰＥ［４］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（１４）ＰＥ［４］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（１５）ＰＥ［８］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（１６）ＰＥ［５］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（１７）ＰＥ［１２］のレジスタのデータを読み出しデータバッファ２２のｂｕｆ０に格納する。
（１８）ＰＥ［６］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（１９）ＰＥ［１６］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（２０）ＰＥ［７］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
・・・・（同様の動作が繰り返されるため、途中略する。）
（１３１）ＰＥ［２４０］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（１３２）ＰＥ［６３］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（１３３）ＰＥ［２４４］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（１３４）ＰＥ［６４］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（１３５）ＰＥ［２４８］のレジスタのデータを読み出し、データバッファ２２のｂｕｆ０に格納する。
（１３６）ＰＥ［６５］のレジスタへデータバッファ２２のｂｕｆ０のデータを書き込む。
（１３７）ＰＥ［６６］のレジスタへデータバッファ２２のｂｕｆ１のデータを書き込む。
（１３８）ＰＥ［６７］のレジスタへデータバッファ２２のｂｕｆ２のデータを書き込む。
（１３９）ＰＥ［６８］のレジスタへデータバッファ２２のｂｕｆ３のデータを書き込む。
（１４０）ＰＥ［６９］のレジスタへデータバッファ２２のｂｕｆ４のデータを書き込む。
【００７５】
上記の動作により、間引き後のブロックデータは、図１３のように配置される。図１０とは異なり、ＰＥ［６５］のＲ０レジスタに格納されているブロック２４４のデータには、左右いずれの方向も参照ブロックデータが存在しており、同様にＰＥ［４］のＲ１レジスタに格納されているブロック２４８のデータにも、左右いずれの方向も参照ブロックデータが存在している。
【００７６】
上記の第３の実施の形態では、データバッファ２２のバッファ数を５つとして構成している。これは、ＰＥ［５］、ＰＥ［９］、ＰＥ［１３］、ＰＥ［１７］のレジスタのデータが、間引き後に１／４に詰められたデータにより上書きされて消失するのを防ぐためである。このこと（即ち、消失を防ぐこと）は図２に示される第１の実施の形態の構成においても実現可能である。つまり、ＰＥ［５］、ＰＥ［９］、ＰＥ［１３］、ＰＥ［１７］のレジスタのデータを、一旦上記処理で他の用途に利用されないＰＥのレジスタ、例えばＰＥ［２３５］、ＰＥ［２３９］、ＰＥ［２４３］、ＰＥ［２４７］のレジスタに待避し、ＰＥ［６６］〜ＰＥ［６９］に書き込む際にそれらから読み出す、というようなシーケンスの変更だけでも実現可能である。
【００７７】
第３の実施の形態で示した、ビットパックによる間引き処理においても、画像データがＰＥ数により分割される場合は、分割境界における参照データが欠缺しているという問題を回避するために、この第４の実施の形態と同様な処理が必要となることがある。
【００７８】
≪第５の実施の形態≫
ブロックデータを使用した領域判定処理の実施後は、その判定結果により各画素毎に画像処理内容が決定される。したがって、１／４（等）に間引きしたデータより得られた領域判定結果は、４倍（等）に拡大して元の画素の位置にまで戻さなければならない。第１の実施の形態のＳＩＭＤ型マイクロプロセッサ２により１／４に間引いた場合は、第２の実施の形態のＳＩＭＤ型マイクロプロセッサ２により拡大すれば判定結果データを対応する元の画素の位置にまで戻すことができる。しかし、第３の実施の形態では、ビットパックが形成されているため、元に戻す（即ち、ビットパックを戻す、ビットアンパックする）には別の実施の形態を利用する必要がある。
【００７９】
図１４は、本発明の第５の実施の形態に係るＳＩＭＤ型マイクロプロセッサ２のブロック図である。
【００８０】
図３に示される第２の実施の形態のＳＩＭＤ型マイクロプロセッサ２に対して、データバッファ２２からの読み出しにバレルシフタ２６’が追加されており、データバッファ２２の任意のビット位置のデータを、レジスタ３４の任意のビットに書き込みむことが可能な構成となっている。
【００８１】
上記の構成において、２５６個のプロセッサエレメント３を有するＳＩＭＤ型マイクロプロセッサ２での、「４倍の拡大」且つ「５×１ビットアンパック」の動作は以下のようになる。ここで、「データバッファのｂｉｔ０」とは、所定のデータバッファ２２の最下位ビットを示す。同様に、「ｂｉｔ１」、「ｂｉｔ２」、「ｂｉｔ３」、「ｂｉｔ４」は、ｂｉｔ０からみて順に１つずつ上位のビットを示す。
【００８２】
（１）ＰＥ［１２］のレジスタのデータを読み出し、データバッファ２２に格納する。
（２）ＰＥ［２５２］のレジスタへ、データバッファ２２のｂｉｔ３のデータを書き込む。
（３）ＰＥ［２４８］のレジスタへ、データバッファ２２のｂｉｔ２のデータを書き込む。
（４）ＰＥ［２４４］のレジスタへ、データバッファ２２のｂｉｔ１のデータを書き込む。
（５）ＰＥ［２４０］のレジスタへ、データバッファ２２のｂｉｔ０のデータを書き込む。
（６）ＰＥ［１１］のレジスタのデータを読み出し、データバッファ２２に格納する。
（７）ＰＥ［２３６］のレジスタへ、データバッファ２２のｂｉｔ４のデータを書き込む。
（８）ＰＥ［２３２］のレジスタへ、データバッファ２２のｂｉｔ３のデータを書き込む。
（９）ＰＥ［２２８］のレジスタへ、データバッファ２２のｂｉｔ２のデータを書き込む。
（１０）ＰＥ［２２４］のレジスタへ、データバッファ２２のｂｉｔ１のデータを書き込む。
（１１）ＰＥ［２２０］のレジスタへ、データバッファ２２のｂｉｔ０のデータを書き込む。
・・・・（同様の動作が繰り返されるため、途中略する。）
（７２）ＰＥ［０］のレジスタのデータを読み出し、データバッファ２２に格納する。
（７３）ＰＥ［１６］のレジスタへ、データバッファ２２のｂｉｔ４のデータを書き込む。
（７４）ＰＥ［１２］のレジスタへ、データバッファ２２のｂｉｔ３のデータを書き込む。
（７５）ＰＥ［８］のレジスタへ、データバッファ２２のｂｉｔ２のデータを書き込む。
（７６）ＰＥ［４］のレジスタへ、データバッファ２２のｂｉｔ１のデータを書き込む。
（７７）ＰＥ［０］のレジスタへ、データバッファ２２のｂｉｔ０のデータを書き込む。
【００８３】
なお、最後｛上記（７７）｝のＰＥ［０］への書き込み動作は、データに変換が無いため省略可能である。
【００８４】
≪第６の実施の形態≫
ブロックデータを使用した領域判定処理の実施後は、その判定結果により各画素毎に画像処理内容が決定される。したがって、１／４（等）に間引きしたデータより得られた領域判定結果は、４倍（等）に拡大して元の画素の位置にまで戻さなければならない。第１の実施の形態のＳＩＭＤ型マイクロプロセッサ２により１／４に間引いた場合は、第２の実施の形態のＳＩＭＤ型マイクロプロセッサ２により拡大すれば判定結果データを対応する元の画素の位置にまで戻すことができる。
【００８５】
第５の実施の形態の説明で記したが、第２の実施の形態のＳＩＭＤ型マイクロプロセッサ２を利用して、領域判定結果データが４倍（等）に拡大されると、ＰＥ番号が４の倍数であるＰＥにて、有効な領域判定結果データが配置される。図１５はその様子を示す。
【００８６】
拡大後の処理で、４の倍数以外のＰＥ番号を備えるＰＥにおいては、そのＰＥ番号以下で且つ直近の４の倍数のＰＥ番号を備えるＰＥの、レジスタに格納される領域判定結果データを使用することになる。即ち、ＰＥ［０］〜ＰＥ［３］はＰＥ［０］のレジスタ上の領域判定結果データ、ＰＥ［４］〜ＰＥ［７］はＰＥ［４］のレジスタ上の領域判定結果データ、ＰＥ［８］〜ＰＥ［１１］はＰＥ［８］のレジスタ上の領域判定結果データ、・・・を使用することとなる。換言すると、ＰＥ番号が「４の倍数」のＰＥは自身のレジスタ上のデータ、ＰＥ番号が「４の倍数＋１」のＰＥは１つ右のＰＥのレジスタ上のデータ、ＰＥ番号が「４の倍数＋２」のＰＥは２つ右のＰＥのレジスタ上のデータ、ＰＥ番号が「４の倍数＋３」のＰＥは３つ右のＰＥのレジスタ上のデータを参照することになる。
【００８７】
上記のように、ＰＥ毎に処理が異なるものになる。そのため、全てのＰＥで同じ処理を実行（並列処理）するという、ＳＩＭＤ型マイクロプロセッサの特色をうまく利用することができない。
【００８８】
図３のブロック図に示されるＳＩＭＤ型マイクロプロセッサ２は、本発明の第２の実施の形態に係るものであると同時に、本発明の第６の実施の形態に係るものである。但し、第６の実施の形態においては、第２の実施の形態と処理のシーケンスが異なる。
【００８９】
上記の構成において、２５６個のプロセッサエレメント３を有するＳＩＭＤ型マイクロプロセッサ２での、４倍の拡大動作は以下のようになる。
【００９０】
（１）ＰＥ［６３］（アドレス６３）のレジスタのデータを読み出し、データバッファ２２に格納する。
（２）ＰＥ［２５５］（アドレス２５５）のレジスタへ、データバッファ２２のデータを書き込む。
（３）ＰＥ［２５４］（アドレス２５４）のレジスタへ、データバッファ２２のデータを書き込む。
（４）ＰＥ［２５３］（アドレス２５３）のレジスタへ、データバッファ２２のデータを書き込む。
（５）ＰＥ［２５２］（アドレス２５２）のレジスタへ、データバッファ２２のデータを書き込む。
（６）ＰＥ［６２］（アドレス６２）のレジスタのデータを読み出し、データバッファ２２に格納する。
（７）ＰＥ［２５１］（アドレス２５１）のレジスタへ、データバッファ２２のデータを書き込む。
（８）ＰＥ［２５０］（アドレス２５０）のレジスタへ、データバッファ２２のデータを書き込む。
（９）ＰＥ［２４９］（アドレス２４９）のレジスタへ、データバッファ２２のデータを書き込む。
（１０）ＰＥ［２４８］（アドレス２４８）のレジスタへ、データバッファ２２のデータを書き込む。
（１１）ＰＥ［６１］（アドレス６１）のレジスタのデータを読み出し、データバッファ２２に格納する。
（１２）ＰＥ［２４７］（アドレス２４７）のレジスタへ、データバッファ２２のデータを書き込む。
（１３）ＰＥ［２４６］（アドレス２４６）のレジスタへ、データバッファ２２のデータを書き込む。
（１４）ＰＥ［２４５］（アドレス２４５）のレジスタへ、データバッファ２２のデータを書き込む。
（１５）ＰＥ［２４４］（アドレス２４４）のレジスタへ、データバッファ２２のデータを書き込む。
・・・・（同様の動作が繰り返されるため、途中略する。）
（３１１）ＰＥ［１］（アドレス１）のレジスタのデータを読み出し、データバッファ２２に格納する。
（３１２）ＰＥ［７］（アドレス７）のレジスタへ、データバッファ２２のデータを書き込む。
（３１３）ＰＥ［６］（アドレス６）のレジスタへ、データバッファ２２のデータを書き込む。
（３１４）ＰＥ［５］（アドレス５）のレジスタへ、データバッファ２２のデータを書き込む。
（３１５）ＰＥ［４］（アドレス４）のレジスタへ、データバッファ２２のデータを書き込む。
（３１６）ＰＥ［０］（アドレス０）のレジスタのデータを読み出し、データバッファ２２に格納する。
（３１７）ＰＥ［３］（アドレス３）のレジスタへ、データバッファ２２のデータを書き込む。
（３１８）ＰＥ［２］（アドレス２）のレジスタへ、データバッファ２２のデータを書き込む。
（３１９）ＰＥ［１］（アドレス１）のレジスタへ、データバッファ２２のデータを書き込む。
（３２０）ＰＥ［０］（アドレス０）のレジスタへ、データバッファ２２のデータを書き込む。
【００９１】
なお、最後｛上記（３２０）｝のＰＥ［０］への書き込み動作は、データに変換が無いため省略可能である。
【００９２】
上記の動作によって拡大後のデータは図１６のようになる。よって、全てのＰＥにおいて、そのＰＥ自身に備わるレジスタに格納されるデータを、領域判定結果として参照すればよいことになる。
【００９３】
≪第７の実施の形態≫
前述の第１の実施の形態の構成では、「間引き」の単位は、２のベキ乗（２、４、８、１６、．．．）程度である。よって、ブロック化等の処理においては有効な構成である。ただし、画像データの縮小等の処理では、「間引き」の間隔が一定ではない。即ち、「間引き」の間隔が任意に指定され得る手段が備わることが望ましい。
【００９４】
図１７は、本発明に係る第７の実施の形態のＳＩＭＤ型マイクロプロセッサ２のブロック図である。図２の第１の実施の形態と基本的には同様の構成であるが、シーケンサ２４において、間引き間隔の指定のためのＲＡＭ３０が設置されている。ＲＡＭ３０の容量は、単位あたり１ビットのデータを、縮小対象の画像データの主走査画素数分まで、少なくとも備え得る程度のものである。
【００９５】
上記の構成において、縮小動作は以下のように行なう。
【００９６】
（１）アドレス生成回路２０のリードポインタ、ライトポインタを“０”に設定する。同時に、ＲＡＭ３０のアドレスポインタを“０”に設定する。
（２）リードポインタの値をアドレスとするＰＥのレジスタデータを読み出し、データバッファ２２に格納する。同時に、ＲＡＭ３０のアドレスポインタで指定されたアドレスよりＲＡＭ３０のデータを読み出し、リードポインタ、ＲＡＭアドレスポインタを“１”だけインクリメントする。
（３）読み出されたＲＡＭ３０のデータが“１”であった場合は、ライトポインタをアドレスとするＰＥのレジスタに、データバッファ２２のデータを書き込み、ライトポインタを“１”だけインクリメントする。
（４）上記の（２）（３）の動作を、リードポインタがＰＥの最大数を越えるまで繰り返す。
【００９７】
上記の動作により、ＲＡＭ３０において“１”が格納されていない箇所（アドレス）（即ち、“０”が格納されている箇所（アドレス））に対応する画素は間引かれ、ＲＡＭ３０において“１”が格納されている箇所（アドレス）に対応する画素はＰＥ［０］方向に詰められて、レジスタにデータが配置されることになる。
【００９８】
縮小対象の画像データの画素数がＰＥ数よりも大きく、画像データを分割して処理すべき場合においても、２つ目以降の分割画像データの縮小処理で上記（１）のＲＡＭアドレスポインタのクリアを行なわずに処理を継続することができる。２つ目以降の分割画像データの縮小処理では、以下のような処理となる。
【００９９】
（１）アドレス生成回路２０のリードポインタ、ライトポインタを“０”に設定する。
（２）リードポインタの値をアドレスとするＰＥのレジスタデータを読み出し、データバッファ２２に格納する。同時に、ＲＡＭ３０のアドレスポインタで指定されたアドレスよりＲＡＭ３０のデータを読み出し、リードポインタ、ＲＡＭアドレスポインタを“１”だけインクリメントする。
（３）読み出されたＲＡＭ３０のデータが“１”であった場合は、ライトポインタをアドレスとするＰＥのレジスタに、データバッファ２２のデータを書き込み、ライトポインタを“１”だけインクリメントする。
（４）上記の（２）（３）の動作を、リードポインタがＰＥの最大数を越えるまで繰り返す。
【０１００】
なお、上記の動作では、画像データを分割した場合に、縮小画像データが分割された単位で下位のＰＥ側に間引かれて（詰められて）配置される、という問題点がある（上位のＰＥには“ダミー”データが並ぶことになる）。更に、縮小画像データにおいては、特に上記の「第４の実施の形態」で説明したような参照画素データが配置されていない、という問題点も発生する。そこで、図１８のようにリード側のレジスタ６’（縮小前画像）とライト側のレジスタ（縮小後画像）６”を分けて接続する。図１８の形態において、リード側のレジスタにおいてのみ画像データを分割して格納し、さらに、リードポインタのみを２つ目以降の画像データに進めることにより、縮小動作を継続する。こうすることで、分割画像の縮小後画像データの最終端のＰＥの次のＰＥから、次の分割画像の縮小画像データを配置することが可能となる。この場合には、リードポインタを２つ目以降の画像データに進めても、ライトポインタのクリアは行なわない。
【０１０１】
≪第８の実施の形態≫
前述の第２の実施の形態の構成では、「拡大」の単位は、２のベキ乗（２、４、８、１６、．．．）程度である。よって、ブロック化された領域判定データの現画像データへの反映のための拡大処理等においては、有効な構成である。ただし、画像データの拡大等の処理では、「拡大」の間隔が一定ではない。即ち、「拡大」の間隔が任意に指定され得る手段が備わることが望ましい。
【０１０２】
図１９は、本発明に係る第８の実施の形態のＳＩＭＤ型マイクロプロセッサ２のブロック図である。図３の第２の実施の形態と基本的には同様の構成であるが、シーケンサ２４において、拡大間隔の指定のためのＲＡＭ３０が設置されている。ＲＡＭ３０の容量は、単位あたり１ビットのデータを、拡大後の画像データの主走査画素数分まで、少なくとも備え得る程度のものである。
【０１０３】
上記の構成において、拡大動作は以下のように行なう。
【０１０４】
（１）アドレス生成回路２０のリードポインタを拡大前の画像データの主走査画素値、ライトポインタを拡大後の画像データの主走査画素値に設定する。同時に、ＲＡＭ３０のアドレスポインタを拡大後の画像データの主走査画素値に設定する。
（２）リードポインタの値をアドレスとするＰＥのレジスタデータを読み出し、データバッファ２２に格納する。同時に、ＲＡＭ３０のアドレスポインタで指定されたアドレスよりＲＡＭ３０のデータを読み出し、ＲＡＭ３０のアドレスポインタを“１”だけデクリメントする。読み出されたＲＡＭ３０のデータが“１”であった場合は、リードポインタを“１”だけデクリメントする。
（３）ライトポインタをアドレスとするＰＥのレジスタに、データバッファ２２のデータを書き込む。ライトポインタを“１”だけデクリメントする。
（４）上記の（２）（３）の動作を、ライトポインタが０となるまで繰り返す。
【０１０５】
上記の動作により、ＲＡＭ３０において“１”が格納されていない箇所（アドレス）（即ち、“０”が格納されている箇所（アドレス））に対応する画素には、リードポインタの直前のアドレスの（拡大前）画素データが書き込まれ、ＲＡＭ３０において“０”が格納されている箇所（アドレス）に対応する画素には、リードポインタの指し示すアドレスの（拡大前）画素データが書き込まれる。このようにして、拡大動作が実現され得る。
【０１０６】
なお、上記の動作では画像データを分割した場合に、拡大画像データが拡大前の画像データを、それらが読み出される前に、上書きしてしまうという問題点が発生し得る。そこで、図２０のように、リード側のレジスタ６’（拡大前画像データ）とライト側のレジスタ６”（拡大後画像データ）を分けて接続する。動作終了後にライト側のレジスタの内容を、拡大後の分割画像データ格納レジスタに転送することにより、上記の上書きされるという問題点は回避され得る。このとき、以下のような動作となる。
【０１０７】
（１）アドレス生成回路２０のリードポインタを拡大前の画像データの主走査画素値に設定する。ライトポインタを、拡大後の画像データの主走査画素値をＰＥ個数で割った余りに、設定する。さらに、ＲＡＭ３０のアドレスポインタを拡大後の画像データの主走査画素値に設定する。
（２）リードポインタの値をアドレスとするＰＥのレジスタデータを読み出し、データバッファ２２に格納する。同時に、ＲＡＭ３０のアドレスポインタで指定されたアドレスよりＲＡＭ３０のデータを読み出し、ＲＡＭ３０のアドレスポインタを“１”だけデクリメントする。読み出されたＲＡＭ３０のデータが“１”であった場合は、リードポインタを“１”だけデクリメントする。
（３）ライトポインタをアドレスとするＰＥのレジスタに、データバッファ２２のデータを書き込む。ライトポインタを“１”だけデクリメントする。
（４）上記の（２）（３）の動作を、ライトポインタが０となるまで繰り返す。
（５）拡大後レジスタのデータを分割画像データ格納レジスタの「１分割目」に転送する。
（６）ライトポインタを、ＰＥ個数（の値）に設定する。
（７）リードポインタの値をアドレスとするＰＥのレジスタデータを読み出し、データバッファ２２に格納する。同時に、ＲＡＭ３０のアドレスポインタで指定されたアドレスよりＲＡＭ３０のデータを読み出し、ＲＡＭ３０のアドレスポインタを“１”だけデクリメントする。読み出されたＲＡＭ３０のデータが“１”であった場合は、リードポインタを“１”だけデクリメントする。
（８）ライトポインタをアドレスとするＰＥのレジスタに、データバッファ２２のデータを書き込む。ライトポインタを“１”だけデクリメントする。
（９）上記の（７）（８）の動作をライトポインタが０となるまで繰り返す。
（１０）拡大後レジスタのデータを分割画像データ格納レジスタの「次の分割」に転送する。
（１１）上記の（６）〜（１０）をリードポインタが０となるまで繰り返す。
【０１０８】
なお、拡大前画像データが分割されていた場合には、拡大前レジスタの内容を処理中に変更し、各ポインタの制御を適宜変更することにより、対応可能である。
【０１０９】
≪その他の実施の形態≫
以上の実施の形態における間引き器は、いずれもシーケンサ２４におけるシーケンスが異なることが主たる相違であるため、当然、幾つかの実施の形態を兼ね備えるような構成も簡単に実現できる。このことは以上の実施の形態における拡大器についても同様である。さらに、例えば、第１の実施の形態から第６の実施の形態の機能を、全部兼ね備える１つの装置を構成することも可能である。
【０１１０】
【発明の効果】
本発明を利用することにより、以下のような効果を得ることができる。
【０１１１】
第１の実施の形態に係るＳＩＭＤ型マイクロプロセッサを利用すると、画素データにおいて主走査方向の間引き処理が、簡素な構成かつ低コストにより、実現することができる。
【０１１２】
第２の実施の形態に係るＳＩＭＤ型マイクロプロセッサを利用すると、画素データにおいて主走査方向の拡大処理が、簡素な構成かつ低コストにより、実現することができる。
【０１１３】
第３の実施の形態に係るＳＩＭＤ型マイクロプロセッサを利用すると、より広い範囲の参照画素データを一度の処理で扱えるようになる。
【０１１４】
第４の実施の形態に係るＳＩＭＤ型マイクロプロセッサを利用すると、ＰＥ個数を越える画素数を持つ画像データに対し、フィルタ処理などで必要とされる（近傍の）参照データを考慮しつつ、間引き処理を行なうことが可能となる。
【０１１５】
第５の実施の形態に係るＳＩＭＤ型マイクロプロセッサを利用すると、ビットパックされたデータを拡大処理することが可能となる。
【０１１６】
第６の実施の形態に係るＳＩＭＤ型マイクロプロセッサを利用すると、拡大処理やブロック化処理の後、ＳＩＭＤ演算処理を少ないステップ行なうことができる。
【０１１７】
第７の実施の形態に係るＳＩＭＤ型マイクロプロセッサを利用すると、画像縮小処理を実現することができる。
【０１１８】
第８の実施の形態に係るＳＩＭＤ型マイクロプロセッサを利用すると、画像拡大処理を実現することができる。
【図面の簡単な説明】
【図１】  本発明に係るＳＩＭＤ型マイクロプロセッサの概略の構成を示すブロック図（１）である。
【図２】  第１の実施の形態に係るＳＩＭＤ型マイクロプロセッサのブロック図である。
【図３】  第２の実施の形態に係るＳＩＭＤ型マイクロプロセッサのブロック図である。
【図４】  演算部とレジスタとの関係を示すブロック図である。
【図５】  演算部と、ビットパックデータが格納されたレジスタとの関係を示すブロック図である。
【図６】  第３の実施の形態に係るＳＩＭＤ型マイクロプロセッサのブロック図である。
【図７】  画素数がＳＩＭＤ型マイクロプロセッサのＰＥ個数よりも多い場合の、画素データがレジスタに格納される状況を示す模式図である。
【図８】  画素数がＳＩＭＤ型マイクロプロセッサのＰＥ個数よりも多い場合、重なり部分を形成しつつ画素データがレジスタに格納される状況を示す模式図である。
【図９】  間引き前のブロックデータがレジスタに格納される状況を示す模式図である。
【図１０】  間引き後のブロックデータがレジスタに格納される状況を示す模式図である。
【図１１】  第４の実施の形態に係るＳＩＭＤ型マイクロプロセッサにて利用されるブロックデータの、格納の状況を示す模式図である。
【図１２】  第４の実施の形態に係るＳＩＭＤ型マイクロプロセッサのブロック図である。
【図１３】  第４の実施の形態に係るＳＩＭＤ型マイクロプロセッサによって形成される、間引き後のブロックデータのレジスタへの格納の好適な状況を示す模式図である。
【図１４】  第５の実施の形態に係るＳＩＭＤ型マイクロプロセッサのブロック図である。
【図１５】  第６の実施の形態に係るＳＩＭＤ型マイクロプロセッサにて利用されるブロックデータの格納の状況を示す模式図である。
【図１６】  第６の実施の形態に係るＳＩＭＤ型マイクロプロセッサにて形成されるブロックデータの格納の状況を示す模式図である。
【図１７】  第７の実施の形態に係るＳＩＭＤ型マイクロプロセッサのブロック図（１）である。
【図１８】  第７の実施の形態に係るＳＩＭＤ型マイクロプロセッサのブロック図（２）である。
【図１９】  第８の実施の形態に係るＳＩＭＤ型マイクロプロセッサのブロック図（１）である。
【図２０】  第８の実施の形態に係るＳＩＭＤ型マイクロプロセッサのブロック図（２）である。
【図２１】  本発明に係るＳＩＭＤ型マイクロプロセッサの概略の構成を示すブロック図（２）である。
【図２２】  ブロック化処理の概念図である。
【符号の説明】
２・・・ＳＩＭＤ型マイクロプロセッサ、
３・・・プロセッサエレメント（ＰＥ）、
４・・・グローバルプロセッサ（ＧＰ）、
６、６’、６”・・・レジスタファイル、
８・・・演算アレイ、
１０・・・間引き器、
１２・・・拡大器、
１４、１４’、１４”・・・外部インタフェース、
２０、２０’、２０”・・・アドレス生成回路、
２２・・・データバッファ、
２４・・・シーケンサ、
２６、２６’・・・バレルシフタ、
３０・・・ＲＡＭ（ランダムアクセスメモリ）、
３４・・・レジスタ。
【図１】
0004372371.tif 000002
【図２】
0004372371.tif 000003
【図３】
0004372371.tif 000004
【図４】
0004372371.tif 000005
【図５】
0004372371.tif 000006
【図６】
0004372371.tif 000007
【図７】
0004372371.tif 000008
【図８】
0004372371.tif 000009
【図９】
0004372371.tif 000010
【図１０】
0004372371.tif 000011
【図１１】
0004372371.tif 000012
【図１２】
0004372371.tif 000013
【図１３】
0004372371.tif 000014
【図１４】
0004372371.tif 000015
【図１５】
0004372371.tif 000016
【図１６】
0004372371.tif 000017
【図１７】
0004372371.tif 000018
【図１８】
0004372371.tif 000019
【図１９】
0004372371.tif 000020
【図２０】
0004372371.tif 000021
【図２１】
0004372371.tif 000022
【図２２】
0004372371.tif 000023