(57)【特許請求の範囲】
【請求項１】
複数のプロセッシングエレメントを備えたプロセッサであって、
前記各プロセッシングエレメントは、
当該プロセッシングエレメントに対し、何れのプロセッシングエレメントからデータを転送するかという転送パターンを示す値を格納した転送パターン格納手段と、
前記転送パターンに基づいて決定されるプロセッシングエレメントとの間のデータ転送を実行する転送手段と、
前記転送パターンを示す値をどれだけ変化させるかを示す命令によって指定される転送パターン値変化量に基づいて、前記転送パターン格納手段に格納されている値の更新を行う更新手段と
を含み、
前記転送手段は次にデータ転送を実行する際には前記更新手段により更新された値に基づいてデータ転送を実行する
プロセッサ。
【請求項２】
前記転送パターンを示す値とは、転送元となるプロセッシングエレメントを表す番号である
請求項１記載のプロセッサ。
【請求項３】
前記各プロセッシングエレメントは更に、複数レジスタからなるレジスタセットを備え、
前記データとは、レジスタセットにおける各レジスタの格納値である
請求項２記載のプロセッサ。
【請求項４】
前記レジスタセットは、所定のオフセット信号に基づき、何れかのレジスタに格納されたデータを出力し、
前記更新手段による更新は、転送パターンを示す値に対する算術演算を含み、
前記オフセット信号は、前記転送パターンを示す値に対する演算に伴う桁上げ又は桁下げに基づき変化する
請求項３記載のプロセッサ。
【請求項５】
前記更新手段は、
算術演算手段と、飽和演算手段とを含み、
前記飽和演算手段は、前記算術演算手段による前記算術演算の結果が所定の範囲外になったか否かを判定し、所定の範囲外になると、前記転送パターンを示す値に対する飽和演算を行い、
前記更新手段により更新された前記転送パターンを示す値は、算術演算の結果、飽和演算の結果の何れかである
請求項２記載のプロセッサ。
【請求項６】
前記更新手段は、出力手段を含み、
前記飽和演算の際に、前記転送パターンを示す値が前記所定の範囲より大きいと第一の値を飽和値として出力し、前記所定の範囲より小さいと第二の値を飽和値として出力する
請求項５記載のプロセッサ。
【請求項７】
前記所定の範囲とは、前記プロセッシングエレメント番号を示す範囲であり、
前記第一の値とは、前記プロセッシングエレメント番号の最大値であり、
前記第二の値とは、前記プロセッシングエレメント番号の最小値である
請求項６記載のプロセッサ。
【請求項８】
所定の最大値及び最小値を保持する制御レジスタをさらに備え、
前記飽和演算手段は、前記飽和演算の際に、前記制御レジスタから前記所定の最大値及び最小値の入力を受け付け、
前記所定の範囲とは、前記入力された所定の最大値及び最小値により示される範囲であり、
前記第一の値とは、前記所定の最大値であり、
前記第二の値とは、前記所定の最小値である
ことを特徴とする請求項６記載のプロセッサ。
【請求項９】
前記レジスタセットの各レジスタは、バイトサイズのデータを2つ格納しており、
前記飽和演算手段は、
上位側と下位側のそれぞれに対し、前記算術演算手段による前記算術演算の結果が所定の範囲外になったか否かを判定し、所定の範囲外になると、上位側のバイトデータに対する飽和演算と、下位側のバイトデータに対する飽和演算とを同時に実行し、
前記出力手段は、
互いに異なる2つの飽和値を出力する
請求項６記載のプロセッサ。
【請求項１０】
前記更新手段は、
算術演算手段と、モジュロ式の算術演算を行うモジュロ演算手段とを含み、
前記モジュロ演算手段は、前記算術演算手段による前記算術演算の結果が前記転送パターンを示す値の範囲外になったか否かを判定し、範囲外になると、前記転送パターンを示す値に対するモジュロ演算を行い、
前記更新手段により更新された前記転送パターンを示す値は、算術演算の結果、モジュロ演算の結果の何れかである
請求項３記載のプロセッサ。
【請求項１１】
前記各プロセッシングエレメントは更に、リードオフセット値に対してモジュロ式の算術演算を行うことで、リードオフセット値を変化させる第１変化部と、
ライトオフセット値に対してモジュロ式の算術演算を行うことで、ライトオフセット値を変化させる第２変化部とを備え、
前記レジスタセットは、
リードオフセット値に基づき、何れかのレジスタに格納されたデータを読み出し、
ライトオフセット値に基づき、何れかのレジスタにデータを書き込む
請求項１０記載のプロセッサ。
【請求項１２】
前記転送パターン格納手段の値の更新処理は、更新前の前記転送パターン値に基づく、前記転送手段によるデータ転送処理と同じ１サイクルの内に行われる
請求項２記載のプロセッサ。
【請求項１３】
前記命令は前記転送パターン値変化量を指定するオペランドを含み、
前記プロセッサは更に、レジスタオフセット値を使用するか否かを示す値を格納したレジスタオフセット格納手段と、
前記命令において指定された前記転送パターン値変化量と同じビット数だけ、ローテート演算又はビット反転機能つきのローテート演算を行い、演算結果を前記レジスタオフセット格納手段に格納するローテート演算手段とを備える
請求項２記載のプロセッサ。
【請求項１４】
命令の解読を行うデコーダを更に備え、
前記デコーダによる命令の解読結果に従って、前記データ転送手段は、データ転送を実行するとともに、前記更新手段は、前記命令を解読することで得られた前記転送パターン値変化量に基づいて、前記転送パターン格納手段の値の更新を行う
請求項１記載のプロセッサ。
【請求項１５】
前記転送パターン格納手段の値の更新処理は、
前記転送手段によるデータ転送処理と同じ１サイクルの内に行われる
請求項１４記載のプロセッサ。
【請求項１６】
前記転送パターン値は、プロセッサエレメント毎に異なる値を設定可能であり、
前記転送パターン値変化量は、全てのプロセッサエレメントで同じ値である
請求項１４記載のプロセッサ。
【請求項１７】
複数のプロセッシングエレメントを備えたプロセッサの動作を制御する制御プログラムであって、
前記各プロセッシングエレメントは、当該プロセッシングエレメントに対し、何れのプロセッシングエレメントからデータを転送するかという転送パターンを示す値を格納した転送パターン格納手段を備え、
前記プログラムは、
前記更新前の転送パターンに基づいて決定されるプロセッシングエレメントとの間のデータ転送を実行する転送ステップと、
前記転送パターンを示す値をどれだけ変化させるかを示す命令によって指定される転送パターン値変化量に基づいて、前記転送パターン格納手段に格納されている値の更新を行う更新ステップとを前記プロセッシングエレメントに実行させ、
前記転送ステップは次にデータ転送を実行する際には前記更新ステップにより更新された値に基づいてデータ転送を実行する
ことを特徴とする制御プログラム。
【請求項１８】
複数のプロセッシングエレメントを備えたプロセッサの動作を制御する制御方法であって、
前記各プロセッシングエレメントは、
当該プロセッシングエレメントに対し、何れのプロセッシングエレメントからデータを転送するかという転送パターンを示す値を格納した転送パターン格納手段を備え、
前記方法は、
前記更新前の転送パターンに基づいて決定されるプロセッシングエレメントとの間のデータ転送を実行する転送ステップと、
前記転送パターンを示す値をどれだけ変化させるかを示す命令によって指定される転送パターン値変化量に基づいて、前記転送パターン格納手段に格納されている値の更新を行う更新ステップと
を含み、
前記転送ステップは次にデータ転送を実行する際には前記更新ステップにより更新された値に基づいてデータ転送を実行する
制御方法。
【請求項１９】
請求項１記載のプロセッサを搭載し、前記プロセッサを用いてフィルタ演算を行う画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像データや音声データ、通信データなどの大量のデータを処理するのに適した並列演算プロセッサに関する。
【背景技術】
【０００２】
近年、画像処理や音声処理、通信処理の分野では、SIMD(Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  ｓｔｒｅａｍｓ)プロセッサが広く用いられている。SIMDプロセッサとは、プロセッシングエレメントを複数有し、これら複数のプロセッシングエレメントに並列演算を行わせるプロセッサである。かかるSIMDプロセッサで、画像処理等の様々な用途で処理を効率的に行うためには、プロセッシングエレメント間のデータ移動を効率的に行うことが重要である。また、任意のプロセッシングエレメント間のデータ移動を行うためには、「ネットワークパタン値」の設定方法が重要である。”ネットワークパタン値”とは、各プロセッシングエレメントに対し、どのプロセッシングエレメントからのデータを転送するかという「プロセッシングエレメント対プロセッシングエレメント」の転送パターンを意味する。従来のSIMDプロセッサでは、任意のプロセッシングエレメント間のデータ移動を行わずに、例えばデータ移動を隣接するプロセッシングエレメント間のみに制限することによって、ネットワークパタン値の設定を行わない場合がある（例えば、特許文献１参照）。
【特許文献１】特開２００１−８４２２９号公報
【特許文献２】特開２００３−３３７６９６号広報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、任意のプロセッシングエレメント間のデータ移動ができないと、データの移動に制約が生じ、結果としてSIMDプロセッサの適用範囲を狭め、多様な用途に対して十分な性能を発揮することができなくなる。また、任意のプロセッシングエレメント間のデータ移動を行う場合であっても、毎サイクル自由にデータ移動を行うには、命令オペランド中に、そのネットワークパタン値を即値で指定する必要がある。ここでSIMDプロセッサに実装されているプロセッシングエレメントが16個であり、個々のプロセッシングエレメントに付与された4ビットのプロセッシングエレメント番号を用いてネットワークパタン値を表現しようとすると、8バイト(=4×16bit)もの即値を、命令のオペランドに指定しておく必要がある。転送パターンが変わる毎に8バイトの即値をもつ転送命令を、SIMDプロセッサに投入する必要があるので、従来のSIMDプロセッサでは、プログラミングのためのコードサイズは大きくならざるを得なかった。その結果、プログラムを格納するためのメモリの大容量化をもたらしていた。
【０００４】
本発明の目的は、SIMDプロセッサに対する処理をプログラミングするにあたってのコードサイズを削減しつつ、高性能を得ることができるプロセッサを提供することである。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明は、複数のプロセッシングエレメントを備えたプロセッサであって、命令の解読を行うデコーダを備え、前記各プロセッシングエレメントは、当該プロセッシングエレメントに対し、何れのプロセッシングエレメントからデータを転送するかという転送パターンを示す値を格納した転送パターン格納手段と、前記転送パターンに基づいて決定されるプロセッシングエレメントとの間のデータ転送を実行する転送手段と、前記デコーダによる直前の命令の解読結果に従って、前記転送パターン格納手段の値の更新を行う更新手段とを含むプロセッサである。
【発明の効果】
【０００６】
本発明は、上記の構成を備えることにより、命令に従って、転送パターンを表す値に対し、値の更新を行う。よって、データ移動を行う度に命令オペランド中に即値で転送パターンを示す値を与える必要はなく、SIMDプロセッサに対するプログラミングにあたってのコードサイズを減らすことができる。また、転送パターンに基づいて、プロセッシングエレメント間の転送を実行するので、任意のプロセッシングエレメント間でデータの移動が可能となる。
【０００７】
ここで、前記各プロセッシングエレメントは更に、複数レジスタからなるレジスタセットを備え、前記データとは、レジスタセットにおける各レジスタの格納値であるとしても良い。
ここで、前記レジスタセットは、所定のオフセット信号に基づき、何れかのレジスタに格納されたデータを出力し、前記更新手段による更新は、転送パターンを示す値に対する算術演算を含み、前記オフセット信号は、前記転送パターンを示す値に対する演算に伴う桁上げ又は桁下げに基づき変化するとしても良い。
【０００８】
これにより、例えば、複数レジスタからなるレジスタセットがｒ０〜ｒ１５の１６本のレジスタから構成されている場合に、水平方向に並ぶ画素データがｒ０及びｒ１に格納されているとすると、折り返しで格納されている画素を効率良く転送することができる。
ここで、前記更新手段は、算術演算手段と、飽和演算手段とを含み、前記飽和演算手段は、前記算術演算手段による前記算術演算の結果が所定の範囲外になったか否かを判定し、所定の範囲外になると、前記転送パターンを示す値に対する飽和演算を行い、前記更新手段により更新された前記転送パターンを示す値は、算術演算の結果、飽和演算の結果の何れかであるとしても良い。
【０００９】
ここで、前記更新手段は、出力手段を含み、前記飽和演算の際に、前記転送パターンを示す値が前記所定の範囲より大きいと第一の値を飽和値として出力し、前記所定の範囲より小さいと第二の値を飽和値として出力するとしても良い。
ここで、前記所定の範囲とは、前記プロセッシングエレメント番号を示す範囲であり、前記第一の値とは、前記プロセッシングエレメント番号の最大値であり、前記第二の値とは、前記プロセッシングエレメント番号の最小値であるとしても良い。
【００１０】
これにより、画面の端部でのＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ）フィルタ演算を好適に行える。
ここで、前記飽和演算手段は更に、前記飽和演算の際に、所定の最大値及び最小値の入力を受け付け、前記所定の範囲とは、前記入力された所定の最大値及び最小値により示される範囲であり、前記第一の値とは、前記所定の最大値であり、前記第二の値とは、前記所定の最小値であるとしても良い。
【００１１】
これにより、様々な大きさの画像に対してＦＩＲフィルタ処理等を施すことができる。
ここで、前記飽和演算手段は更に、前記飽和演算の際に、所定の最大値及び最小値の入力を受け付け、前記所定の範囲とは、前記入力された所定の最大値及び最小値により示される範囲であり、前記第一の値とは、第一式により求まる値であり、前記第二の値とは、第二式により求まる値であるとしても良い。
【００１２】
これにより、画面の端において、データを折り返す処理が行え、ＦＩＲフィルタ演算などを行う際のさらなる高画質化が可能になる。
ここで、前記レジスタセットの各レジスタは、バイトサイズのデータを2つ格納しており、前記飽和演算手段は、上位側と下位側のそれぞれに対し、前記算術演算手段による前記算術演算の結果が所定の範囲外になったか否かを判定し、所定の範囲外になると、上位側のバイトデータに対する飽和演算と、下位側のバイトデータに対する飽和演算とを同時に実行し、前記出力手段は、互いに異なる2つの飽和値を出力するとしても良い。
【００１３】
これにより、上位側のバイトデータ、下位側のバイトデータが最大値を越えている場合、これらの値は互いに異なる値に丸められる。これにより例えば、赤色差、青色差が1つのプロセッシングエレメントにおけるレジスタの上位側、下位側に格納されている場合でも、別々の値をそれぞれプロセッシングエレメントに分配することができる。
ここで、前記更新手段は、算術演算手段と、モジュロ式の算術演算を行うモジュロ演算手段とを含み、前記モジュロ演算手段は、前記算術演算手段による前記算術演算の結果が前記転送パターンを示す値の範囲外になったか否かを判定し、範囲外になると、前記転送パターンを示す値に対するモジュロ演算を行い、前記更新手段により更新された前記転送パターンを示す値は、算術演算の結果、モジュロ演算の結果の何れかであるとしても良い。
【００１４】
ここで、前記各プロセッシングエレメントは更に、リードオフセット値に対してモジュロ式の算術演算を行うことで、リードオフセット値を変化させる第１変化部と、ライトオフセット値に対してモジュロ式の算術演算を行うことで、ライトオフセット値を変化させる第２変化部とを備え、前記レジスタセットは、リードオフセット値に基づき、何れかのレジスタに格納されたデータを読み出し、ライトオフセット値に基づき、何れかのレジスタにデータを書き込むとしても良い。
【００１５】
これにより、即値指定を用いずとも、行列転置を実現することができる。
【発明を実施するための最良の形態】
【００１６】
以下本発明に係る並列演算プロセッサの実施形態について説明する。
（第１実施形態）
図１は本発明に係る並列演算プロセッサの全体構成図である。図１に示すように並列演算プロセッサは、命令メモリ１０と、命令デコーダ１１と、全体制御部１２と、データメモリ１３と、プロセッシングエレメント群１４とを含む。
【００１７】
図２は、プロセッシングエレメント群１４のうちの一つである、プロセッシングエレメントＰＥ０の内部の構成図である。他のプロセッシングエレメントも同一の構成であるため、プロセッシングエレメントＰＥ０についてのみ説明する。図２に示すようにプロセッシングエレメントＰＥ０は、レジスタ番号変換部２０と、レジスタファイル１５と、論理和回路１６と、プロセッシングエレメント間を接続する相互接続網であるネットワーク３０ａと、プロセッシングエレメント間を接続する相互接続網であるネットワーク３０ｂと、演算器ユニット４０とを含む。
【００１８】
図１の並列演算プロセッサはＳＩＭＤ型の構成で、命令メモリ１０からプログラムを読み込み、命令デコーダ１１で命令のデコードを行い、デコードした結果からすべてのプロセッシングエレメントを制御する制御信号を生成する。また、分岐などのすべてのプロセッシングエレメントに共通に影響する動作は全体制御部１２で行う。また、プロセッシングエレメント間を接続し、データの移動を行うネットワーク３０をネットワーク３０ａ、ネットワーク３０ｂの２系統有しており、これにより、プロセッシングエレメント群１４の間でデータの移動が可能となる。
【００１９】
プロセッシングエレメントＰＥ０は、オペランドのレジスタ番号、又はレジスタ番号変換部２０で変換された後のレジスタ番号を用いて、レジスタファイル１５にリード又はライトの動作を行う。したがって、本発明の並列演算プロセッサはＳＩＭＤ構成でありながら、プロセッシングエレメント毎に異なるレジスタにアクセスすることができる。
以下に、プロセッシングエレメントＰＥ０内の各構成部について詳しく説明する。
【００２０】
レジスタ番号変換部２０は、必要に応じてレジスタ番号を変換する。
レジスタファイル１５は、指定されたレジスタから読み出したデータを出力する。また、ｒ０〜ｒ１５の１６本のレジスタから構成されており、各レジスタのビット幅は１６ビットである。
論理和回路１６は、ネットワーク３０から送出された信号を受け取ると、論理和演算を行い、レジスタ番号変換部２０にレジスタオフセット選択信号を出力する。
【００２１】
ネットワーク３０は、レジスタファイル１５から送出されたデータに対して演算を行い、演算結果をレジスタファイル１５に送出する。
演算器ユニット４０は、レジスタファイル１５又はネットワーク３０に対して演算を行い、演算結果をレジスタファイル１５又はネットワーク３０に送出する。図３は、演算器ユニット４０の構成の一例を示している。図３に示すように演算器ユニット４０は、算術論理演算器（ＡＬＵ：Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）４１ａと、算術論理演算器４１ｂと、バレルシフタ４２と、乗算器４３とを含む。
【００２２】
算術論理演算器４１ａ、及び算術論理演算器４１ｂは、加減算、AND/OR演算などを行う。
バレルシフタ４２は、シフトを行う。
乗算器４３は、乗算、及び除算等を行う。
なお、演算器ユニット４０は、演算器同士のデータの入出力が可能な構成であってもよい。また、演算器ユニット４０の構成は用途に応じて自由に決めることができる。
【００２３】
続いて、レジスタ番号変換部２０の構成について説明する。図４はレジスタ番号変換部２０の構成を示す図である。図４に示すように、レジスタ番号変換部２０は、レジスタオフセット値保持部２１と、加減算器２２と、モジュロ演算部２３と、加減算器２４と、セレクタ２５とを含む。ここで、レジスタオフセット値とは、プログラムに記載され、命令デコーダ１１から入力されるレジスタ番号と各プロセッシングエレメントで実際にリード又はライトを行うレジスタ番号の差分を表す値である。
【００２４】
レジスタオフセット値保持部２１は、レジスタオフセット値を保持するレジスタであり、プログラムによって書き換えることができる。
加減算器２２は、必要に応じて命令デコーダ１１より送出されるレジスタオフセット値の変化量とレジスタオフセット保持部２８に保持されている値とを加算又は減算し、演算結果をモジュロ演算器３０に送出する。
【００２５】
モジュロ演算器３０は、加減算器２２から送出された演算結果と命令デコーダ１１より送出されるレジスタオフセットモジュロ値とをモジュロ演算し、結果をレジスタオフセット保持部２８に送出する。これによりレジスタオフセット値の更新が可能となる。レジスタオフセット値の更新動作を行わない場合は、加減算器２２およびモジュロ演算器３０は動作しない。
【００２６】
加減算器２４は、命令デコーダ１１より送出されるレジスタ番号とレジスタオフセット値保持部２１に保持されている値とを加算又は減算する。加減算の結果が０〜１５の範囲をはずれる場合には、下位４ビットのみを出力し、必ず有効なレジスタ番号を出力する。
セレクタ２５は、プログラム中に記載されているレジスタ番号と、加減算器２４の出力のいずれかをレジスタオフセット選択信号にしたがって出力する。レジスタオフセット選択信号が“０”であれば、プログラム中に記載されているレジスタ番号を出力し、“１”であれば加減算器２４の出力をレジスタ番号として出力する。本実施形態においては、レジスタオフセット選択信号は、リードするレジスタ番号に対してのみ使用し、ライトするレジスタ番号に対しては、レジスタオフセット選択信号は常に“１”とする。
【００２７】
なお、レジスタ番号変換部２０はリード又はライトするレジスタの数だけ持つことが可能であるが、必要に応じてその個数を制限してもよい。本実施形態では、バイト単位でアクセスし、ネットワーク２系統の入出力に使用するため、レジスタ番号変換部２０は各プロセッシングエレメントに少なくとも８つ持つことになる。
続いて、ネットワーク３０の構成について説明する。ここでネットワーク３０ａとネットワーク３０ｂとは同様の構成であるので、ネットワーク３０ａについてのみ説明する。図５はプロセッシングエレメント間を接続するネットワーク３０ａの構成図である。図５に示すように、ネットワーク３０ａは、入力端子３１と、入力端子３２と、セレクト処理部５０とを含む。また、説明のため、プロセッシングエレメントのＭＳＢ８ビットに相当する部分の構成要素をＰＥ０ＨのようにＨを付けて表し、ＬＳＢ８ビットに相当する部分の構成要素をＰＥ０ＬのようにＬを付けて表す。入力端には１６進数で番号が振られており、ＰＥ０Ｈから順に０ｘ００、０ｘ０１、０ｘ０２、０ｘ０３、０ｘ０４、０ｘ０５、０ｘ０６、０ｘ０７、０ｘ０８、０ｘ０９、０ｘ０ａ、０ｘ０ｂ、０ｘ０ｃ、０ｘ０ｄ、０ｘ０ｅ、０ｘ０ｆとする。
【００２８】
入力端子３１は、入力信号を取り込むための端子であり、レジスタファイル１５から読み出したデータのＭＳＢ８ビットをネットワーク３０ａに取り込む。取り込まれたデータは、すべてのプロセッシングエレメントのセレクト処理部に送出される。
入力端子３２は、入力信号を取り込むための端子であり、レジスタファイル１５から読み出したデータのＬＳＢ８ビットをネットワーク３０ａに取り込む。取り込まれたデータは、すべてのプロセッシングエレメントのセレクト処理部に送出される。
【００２９】
図５では一部を省略しているが、ＰＥ０Ｈの入力端子３１から入力されたデータは、ＰＥ０Ｈ、ＰＥ０ＬからＰＥ７Ｈ、ＰＥ７Ｌまでのすべてのセレクト処理部に送出される。
セレクト処理部５０は、入力された１６個のデータから１個を選択し出力する。そして、ＰＥ０ＨとＰＥ０Ｌのセレクト処理部の出力を合成して１６ビットの形で出力する。
図６は、図５のセレクト処理部５０の内部構成を具体的に示したネットワーク３０aの一部を示す構成図である。図に示すようにネットワーク３０aは、同一構成であるセレクト処理部を複数配したものであり、そのうちの一つを図７に示す。
【００３０】
図７はネットワーク３０ａのセレクト処理部５０の構成図である。図７に示すように、セレクト処理部５０は、１６ｔｏ１セレクタ５１と、セレクト信号変換部６０と、セレクタ５２と、ネットワークパタンレジスタ５３と、加減算器５４とを含む。
１６ｔｏ１セレクタ５１は、セレクト信号変換部６０から送出されるセレクト信号にしたがって入力データから１つを選択し、選択されたデータを出力する。セレクト信号は、ネットワーク３０ａの入力端に付けられた０ｘ００〜０ｘ０ｆの値をとり、１６ｔｏ１セレクタ５１は制御信号と同じ番号の入力データを出力する。
【００３１】
セレクト信号変換部６０は、入力されたネットワークパタン値から、１６ｔｏ１セレクタ５１の制御信号と、レジスタオフセット選択信号を生成する。そして１６ｔｏ１セレクタ５１に制御信号を送出し、レジスタ番号変換部２０にレジスタオフセット選択信号を送出する。
セレクタ５２は、セレクト信号変換部６０に入力するネットワークパタン値を選択するためのものであり、プログラム中に記載されている即値、指定されたレジスタ番号のレジスタ、ネットワークパタンレジスタ５３で保持されている値のいずれかを命令によって選択する。
【００３２】
ネットワークパタンレジスタ５３は、１６ｔｏ１セレクタ５１を制御するためのネットワークパタン値を保持するレジスタである。ここで、ネットワークパタン値とは、１６ｔｏ１セレクタ５１を制御するための制御信号の値を表す。
加減算器５４は、必要に応じて、ネットワークパタンレジスタ５３で保持されている値と、外部から入力されるネットワークパタン値変化量とを加算又は減算し、ネットワークパタンレジスタ５３に再度格納する。これによりネットワークパタン値の更新動作を行うことができる。ネットワークパタン値の更新動作を行わない場合は、加減算器５４は動作しない。
【００３３】
図５、図６、及び図７に示すように各セレクト処理部毎にネットワークパタンレジスタを備えるので、全体としてネットワークパタンレジスタを１６個備える。そして、命令のオペランドにネットワークパタン値変化量を指定すると、同時に全てのネットワークパタンレジスタに保持されているネットワークパタン値が更新される。
続いて、セレクト信号変換部６０の構成について説明する。図８はセレクト信号変換部６０の構成図である。図８に示すように、セレクト信号変換部６０は、レジスタオフセット選択演算部６１と、モジュロ演算部６２と、飽和演算部６３と、セレクタＡ６４と、セレクタＢ６５と、デマルチプレクサ６６とを含む。
【００３４】
ここで、図中のＰＥモード信号は、命令デコーダ１１より送出され、８ＰＥモード又は４ＰＥモードいずれかのモードをとり、レジスタオフセット選択演算部６１、モジュロ演算部６２、飽和演算部６３はそれぞれモードによって動作を変える。また、動作モード信号は、命令デコーダ１１より送出され、レジスタオフセット選択、モジュロ、飽和いずれかのモードをとり、セレクタＡ６４およびセレクタＢ６５によって、１６ｔｏ１セレクタ５９及びデマルチプレクサ６６への入力を選択する。
【００３５】
レジスタオフセット選択演算部６１は、ネットワークパタン値を受け取ると、レジスタオフセット選択演算を行い、セレクト信号とレジスタオフセット選択信号を出力する。ＰＥモード信号が８ＰＥモードの場合、ネットワークパタン値の下位４ビットをセレクト信号とし、５ビット目をレジスタオフセット選択信号とする。ＰＥモード信号が４ＰＥモードの場合、ＰＥ０〜３では、ネットワークパタン値の下位３ビットをセレクト信号とし、セレクト信号の４ビット目はＰＥ０〜３では“０”を、ＰＥ４〜７では“１”を代入する。したがって、ＰＥ４〜７ではセレクト信号はネットワークパタン値の下位３ビットに８を加算した値となる。また、ネットワークパタン値の４ビット目をレジスタオフセット選択信号とする。つまり４ＰＥモードにおいては、ＰＥ０〜３、ＰＥ４〜７それぞれの間でのみデータの移動が行われる。
【００３６】
続いて、レジスタオフセット選択演算部６１の具体的な動作について説明する。ＰＥモード信号が８ＰＥモードの場合の動作概要を図９（ａ）〜（ｃ）に示す。図中のＰＥ０からＰＥ７はプロセッシングエレメントの番号を示し、ＨとＬはＨｉｇｈとＬｏｗの頭文字であり、それぞれのプロセッシングエレメントがハーフワード単位で画素値を格納していることを示す。つまり、それらはどのプロセッシングエレメントのＨとＬのどちらに帰属しているのかを識別する。図９（ａ）、図９（ｂ）及び図９（ｃ）の第一段はネットワークパタン値を示す。第二段はセレクト信号出力を示し、第三段はレジスタオフセット選択信号出力を示す。ここで、ネットワークパタン値に関して、十の位はレジスタオフセット値を使用するか否かを示す。十の位が０なら、レジスタオフセット値を使用しないことを示す。レジスタオフセット値を使用しない場合は、レジスタオフセット選択信号出力は０になり、使用する場合は１になる。一の位はどのプロセッシングエレメントのＨかＬのどちらからデータを取ってくるかを指定する。また、８ＰＥモードの場合、セレクト信号出力は０ｘ００から０ｘ０ｆの間の値となる。したがって、例えば、ネットワークパタン値が０ｘ００では、セレクト信号出力は０ｘ００になり、ＰＥ０Ｈからデータを取ってくる。また、レジスタオフセットは使用しないので、レジスタオフセット選択信号出力は０になる。同様に、ネットワークパタン値が０ｘ０１では、セレクト信号出力は０ｘ０１になり、ＰＥ０Ｌからデータを取ってくる。また、レジスタオフセットは使用しないので、レジスタオフセット選択信号出力は０になる。ネットワークパタン値が０ｘ１０では、セレクト信号出力は０ｘ００になり、ＰＥ０Ｈからデータを取ってくる。また、レジスタオフセット選択信号出力は１になる。ネットワークパタン値が０ｘｆｆでは、セレクト信号出力は０ｘ０ｆになり、ＰＥ０Ｈからデータを取ってくる。レジスタオフセット選択信号出力は１になる。
【００３７】
図９（ａ）では、すべてのネットワークパタン値が０ｘ００〜０ｘ０ｆの範囲にあるので、レジスタオフセット選択演算部６１がセレクト信号として下位４ビットをとると、セレクト信号はネットワークパタン値と同一になり、レジスタオフセット選択信号はすべて“０”になる。図９（ｂ）では、ネットワークパタン値が図９（ａ）と比較して＋２加算されている。ネットワークパタン値が０ｘ００〜０ｘ０ｆの範囲にある場合には、図９（ａ）と同様であり、ネットワークパタン値が０ｘ０ｆより大きい場合には、レジスタオフセット選択演算部６１はセレクト信号として、その下位４ビットをとり、レジスタオフセット選択信号は“１”になる。図９（ｃ）では、ネットワークパタン値が図９（ａ）と比較して２減算されている。ネットワークパタン値が０ｘ００〜０ｘ０ｆの範囲にある場合には、図９（ａ）と同様であり、ネットワークパタン値が０ｘ００より小さい場合には、レジスタオフセット選択演算部６１はセレクト信号として、その下位４ビットをとり、レジスタオフセット選択信号は“１”になる。
【００３８】
ＰＥモード信号が４ＰＥモードの場合の動作概要を図１０（ａ）〜（ｃ）に示す。図中のＰＥ０からＰＥ７はプロセッシングエレメントの番号を示し、ＨとＬはそれぞれのプロセッシングエレメントがハーフワード単位で画素値を格納していることを示す。図１０（ａ）、図１０（ｂ）及び図１０（ｃ）の第一段はネットワークパタン値を示す。第二段はセレクト信号出力を示し、第三段はレジスタオフセット選択信号出力を示す。ここで、ネットワークパタン値に関して、８ＰＥモードの場合とは異なり、ネットワークパタン値が０ｘ００から０ｘ０７の値をとる場合は、レジスタオフセット値を使用せず、レジスタオフセット選択信号出力は０になり、ネットワークパタン値が０ｘ００より小さい場合、または０ｘ０７より大きい場合はレジスタオフセット値を使用し、レジスタオフセット選択信号出力は１になる。また、ＰＥ０からＰＥ３ではセレクト信号出力は０ｘ００から０ｘ０７の値をとり、ＰＥ４からＰＥ７では０ｘ０８から０ｘ０ｆの値をとる。したがって、例えば、ＰＥ０からＰＥ３ではネットワークパタン値が０ｘ０８の場合、セレクト信号出力は０ｘ００になり、ＰＥ０Ｈからデータを取ってくる。また、レジスタオフセット選択信号出力は１になる。
【００３９】
図１０（ａ）では、すべてのネットワークパタン値が０ｘ００〜０ｘ０７の範囲にあるので、レジスタオフセット選択演算部６１がセレクト信号として下位３ビットをとると、ＰＥ０〜３ではセレクト信号はネットワークパタン値と同一になり、レジスタオフセット選択信号はすべて“０”になる。ＰＥ４〜７ではセレクト信号はネットワークパタン値の下位３ビットに８を加算した値となり、レジスタオフセット選択信号はすべて“０”になる。図１０（ｂ）では、ネットワークパタン値が図１０（ａ）と比較して＋１加算されている。ネットワークパタン値が０ｘ００〜０ｘ０７の範囲にある場合には、図１０（ａ）と同様である。ＰＥ０〜３については、ネットワークパタン値が０ｘ０７より大きい場合は、レジスタオフセット選択演算部６１はセレクト信号として、その下位３ビットをとり、４ビット目には“０”が入る。レジスタオフセット選択信号は“１”になる。ＰＥ４〜７では、ネットワークパタン値が０ｘ０７より大きい場合は、レジスタオフセット選択演算部６１はセレクト信号として、その下位３ビットをとり、４ビット目には“１”が入る。レジスタオフセット選択信号は“１”となる。図１０（ｃ）では、ネットワークパタン値が図１０（ａ）と比較して２減算されている。ネットワークパタン値が０ｘ００〜０ｘ０７の範囲にある場合には、図１０（ａ）と同様である。ＰＥ０〜３については、ネットワークパタン値が０ｘ００より小さい場合は、レジスタオフセット選択演算部６１はセレクト信号として、その下位３ビットをとり、４ビット目には“０”が入る。レジスタオフセット選択信号は“１”になる。ＰＥ４〜７では、ネットワークパタン値が０ｘ００より小さい場合は、レジスタオフセット選択演算部６１はセレクト信号として、その下位３ビットをとり、４ビット目には“１”が入る。レジスタオフセット選択信号は“１”になる。
【００４０】
モジュロ演算部６２は、ネットワークパタン値を受け取ると、モジュロ演算を行い、セレクト信号とレジスタオフセット選択信号を出力する。ＰＥモード信号が８ＰＥモードの場合、ネットワークパタン値の下位４ビットをセレクト信号とし、レジスタオフセット選択信号は常に“１”とする。いずれの場合においても、ネットワークパタン値によらず常に下位４ビットをセレクト信号とし、レジスタオフセット選択信号は常に“１”とする。ＰＥモード信号が４ＰＥモードの場合は、ＰＥ０〜３では、ネットワークパタン値の下位３ビットをセレクト信号とし、セレクト信号の４ビット目はＰＥ０〜３では“０”を、ＰＥ４〜７では“１”を代入する。レジスタオフセット選択信号は常に“１”とする。いずれの場合においても、ネットワークパタン値によらず常に下位３ビットをセレクト信号とし、セレクト信号の４ビット目はＰＥ０〜３では“０”を、ＰＥ４〜７では“１”を代入する。レジスタオフセット選択信号は常に“１”とする。
【００４１】
続いて、モジュロ演算部６２の具体的な動作について説明する。ＰＥモード信号が８ＰＥモードの場合の動作概要を図１１（ａ）〜（ｃ）に示す。図中のＰＥ０からＰＥ７はプロセッシングエレメントの番号を示し、ＨとＬはそれぞれのプロセッシングエレメントがハーフワード単位で画素値を格納していることを示す。図１１（ａ）、図１１（ｂ）及び図１１（ｃ）の第一段はネットワークパタン値を示す。第二段はセレクト信号出力を示し、第三段はレジスタオフセット選択信号出力を示す。図１１（ａ）、図１１（ｂ）、図１１（ｃ）では、いずれの場合においても、ネットワークパタン値によらず常に下位４ビットがセレクト信号になり、レジスタオフセット選択信号は常に“１”になる。
【００４２】
ＰＥモード信号が４ＰＥモードの場合の動作概要を図１２（ａ）〜（ｃ）に示す。図中のＰＥ０からＰＥ７はプロセッシングエレメントの番号を示し、ＨとＬはそれぞれのプロセッシングエレメントがハーフワード単位で画素値を格納していることを示す。図１２（ａ）、図１２（ｂ）及び図１２（ｃ）の第一段はネットワークパタン値を示す。第二段はセレクト信号出力を示し、第三段はレジスタオフセット選択信号出力を示す。図１２（ａ）、図１２（ｂ）、図１２（ｃ）では、ネットワークパタン値によらず常に下位３ビットがセレクト信号になり、セレクト信号の４ビット目はＰＥ０〜３では“０”を、ＰＥ４〜７では“１”を代入する。レジスタオフセット選択信号は常に“１”になる。
【００４３】
飽和演算部６３は、ネットワークパタン値を受け取ると、飽和演算を行い、セレクト信号とレジスタオフセット選択信号を出力する。ＰＥモード信号が８ＰＥモードの場合、ネットワークパタン値が０より小さい場合は０を、０ｘ０ｆより大きい場合は０ｘ０ｆをセレクト信号とし、いずれでもない場合はネットワークパタン値の下位４ビットをセレクト信号とする。そして、レジスタオフセット選択信号はこの変換を行った後の５ビット目の値とする。本実施形態では０ｘ００及び０ｘ０ｆで飽和するので、レジスタオフセット選択信号は常に“０”になる。ＰＥモード信号が４ＰＥモードの場合、ＰＥ０〜３ではネットワークパタン値が０ｘ００より小さい場合は０ｘ００を、０ｘ０７より大きい場合は０ｘ０７をセレクト信号とし、いずれでもない場合は下位３ビットをセレクト信号とする。レジスタオフセット選択信号は、変換後のネットワークパタン値の４ビット目とする。本実施形態では０ｘ００及び０ｘ０７で飽和するので、レジスタオフセット選択信号は常に“０”になる。また、セレクト信号の４ビット目は常に“０”を代入する。ＰＥ４〜７ではネットワークパタン値が０ｘ００より小さい場合は０ｘ０８を、０ｘ０７より大きい場合は０ｘ０ｆをセレクト信号とし、いずれでもない場合は下位３ビットをセレクト信号とする。レジスタオフセット選択信号は、変換後のネットワークパタン値の４ビット目とする。本実施形態では０ｘ０８及び０ｘ０ｆで飽和するので、レジスタオフセット選択信号は常に“０”になる。また、セレクト信号の４ビット目は常に“１”を代入する。
【００４４】
続いて、飽和演算部６３の具体的な動作について説明する。ＰＥモード信号が８ＰＥモードの場合の動作概要を図１３（ａ）〜（ｃ）に示す。図中のＰＥ０からＰＥ７はプロセッシングエレメントの番号を示し、ＨとＬはそれぞれのプロセッシングエレメントがハーフワード単位で画素値を格納していることを示す。図１３（ａ）、図１３（ｂ）及び図１３（ｃ）の第一段はネットワークパタン値を示す。第二段はセレクト信号出力を示し、第三段はレジスタオフセット選択信号出力を示す。図１３（ａ）では、すべてのネットワークパタン値が０ｘ００〜０ｘ０ｆの範囲にあるので、セレクト信号はネットワークパタン値と同一になる。レジスタオフセット選択信号はすべて“０”になる。図１３（ｂ）では、ネットワークパタン値が０ｘ００〜０ｘ０ｆの範囲にある場合には、図１３（ａ）と同様である。ＰＥ７Ｈ及びＰＥ７Ｌでは、ネットワークパタン値が０ｘ０ｆより大きいので、セレクト信号は０ｘ０ｆになる。レジスタオフセット選択信号はすべて“０”になる。図１３（ｃ）では、ネットワークパタン値が０ｘ００〜０ｘ０ｆの範囲にある場合には、図１３（ａ）と同様である。ＰＥ０Ｈ及びＰＥ０Ｌでは、ネットワークパタン値が０ｘ００より小さい場合ので、セレクト信号は０ｘ００になる。レジスタオフセット選択信号はすべて“０”になる。
【００４５】
ＰＥモード信号が４ＰＥモードの場合の動作概要を図１４（ａ）〜（ｃ）に示す。図中のＰＥ０からＰＥ７はプロセッシングエレメントの番号を示し、ＨとＬはそれぞれのプロセッシングエレメントがハーフワード単位で画素値を格納していることを示す。図１４（ａ）、図１４（ｂ）及び図１４（ｃ）の第一段はネットワークパタン値を示す。第二段はセレクト信号出力を示し、第三段はレジスタオフセット選択信号出力を示す。図１４（ａ）では、すべてのネットワークパタン値が０ｘ００〜０ｘ０７の範囲にあるので、ＰＥ０〜３ではセレクト信号はネットワークパタン値と同一になる。レジスタオフセット選択信号はすべて“０”になる。ＰＥ４〜７ではセレクト信号はネットワークパタン値の下位３ビットに８を加算した値となり、レジスタオフセット選択信号はすべて“０”になる。図１４（ｂ）では、ネットワークパタン値が０ｘ００〜０ｘ０７の範囲にある場合には、図１４（ａ）と同様である。ＰＥ０〜３について、ＰＥ３Ｌのネットワークパタン値が０ｘ０７より大きい場合ので、セレクト信号は０ｘ０７になる。ＰＥ４〜７では、ＰＥ７Ｌのネットワークパタン値が０ｘ０７より大きい場合ので、セレクト信号は０ｘ０ｆになる。レジスタオフセット選択信号はすべて“０”になる。図１４（ｃ）では、ネットワークパタン値が０ｘ００〜０ｘ０７の範囲にある場合には、図１４（ａ）と同様である。ＰＥ０〜３については、ＰＥ０Ｈ及びＰＥ０Ｌでは、ネットワークパタン値が０ｘ００より小さい場合ので、セレクト信号は０ｘ００になる。ＰＥ４〜７については、ＰＥ４Ｈ及びＰＥ４Ｌでは、ネットワークパタン値が０ｘ００より小さい場合ので、セレクト信号は０ｘ０８になる。レジスタオフセット選択信号はすべて“０”になる。
【００４６】
セレクタＡ６４は、１６ｔｏ１セレクタ５１に出力する制御信号を選択する。
セレクタＢ６５は、デマルチプレクサ６６に出力する値を選択する。
デマルチプレクサ６６は、セレクト信号と一致する番号のプロセッシングエレメントに出力されるレジスタオフセット選択信号のみをセレクタＢ６５の出力と接続し、他のレジスタオフセット選択信号は“０”にする。
【００４７】
図１５は演算部とセレクタの回路図である。ここで図中のbit[ｘ：ｙ]は下位ｙビットからｘビットまでのビットを示す。bit［ｚ］は下位からｚビット目を示す。まず、ネットワークパタンレジスタより８bitのネットワークパタン値が送出される。モジュロ演算部はネットワークパタン値を受け取ると、上位４bitを０００１に変えて下位４bitはそのまま出力する。飽和演算部はネットワークパタン値を受け取ると、上位４bitが０００１ならば０ｘ０ｆを出力する。上位４bitが１１１０ならば０ｘ００を出力する。それ以外ならそのまま出力する。セレクタAは下位の４bit のみをセレクトする。セレクタＢは５bit 目のみをセレクトする。
【００４８】
続いて、図１６はセレクト処理部５０とレジスタ番号変換部２０の接続を示す構成図である。図１６に示すように、セレクト処理部５０とレジスタ番号変換部２０の間に１６入力１出力の論理和回路１６を備える。
セレクト処理部５０から出力されたレジスタオフセット選択信号は、ＰＥ０ＨからＰＥ７Ｌに備えられた論理和回路に入力され、論理和演算が行われ、何れかからのレジスタオフセット選択信号がレジスタオフセット選択を示していれば“１”をレジスタ番号変換部２０に出力し、そうでなければ“０”を出力する。
【００４９】
続いて、このような構成を持つ並列演算プロセッサで使用されるネットワーク動作命令の１つであるネットワークセレクト命令の動作について図１７を用いて説明する。図１７は、命令デコーダ１１とプロセッシングエレメントＰＥ０Ｈの構成図である。
命令デコーダ１１は、レジスタオフセット変化量レジスタ８０ａと、レジスタオフセット変化量レジスタ８０ｂと、レジスタオフセットモジュロ値レジスタ８１と、ＰＥモードレジスタ８２と、動作モードレジスタ８３とを含む。
【００５０】
レジスタオフセット変化量レジスタ８０ａは、リード用のレジスタオフセット変化量を格納しているレジスタである。
レジスタオフセット変化量レジスタ８０ｂは、ライト用のレジスタオフセット変化量を格納しているレジスタである。
レジスタオフセットモジュロ値レジスタ８１は、リードライト兼用のレジスタオフセットモジュロ値を格納しているレジスタである。
【００５１】
ＰＥモードレジスタ８２は、８ＰＥモード、４ＰＥモードの何れかのモードを示すレジスタである。
動作モードレジスタ８３は、レジスタオフセット選択、モジュロ、飽和いずれかのモードを示すレジスタである。
プロセッシングエレメントＰＥ０Ｈは、リード用のレジスタ番号変換部２０ａと、ライト用のレジスタ番号変換部２０ｂと、レジスタファイル１５と、論理和回路１６と、セレクト処理部５０と、演算器ユニット４０を含む。
【００５２】
レジスタ番号変換部２０ａは、論理和回路１６からのレジスタオフセット選択信号にしたがい、レジスタ番号をそのまま使用するか、レジスタ番号にレジスタオフセット値を加算したレジスタを使用するかを決定し、レジスタファイル１５にレジスタ番号を出力する。
レジスタ番号変換部２０ｂは、オペランドに書かれたレジスタ番号を変換し、変換された番号のレジスタに、ネットワークによるデータ選択の結果出力されたデータを格納する。
【００５３】
次に、動作について説明する。ネットワークセレクト命令の書式を以下に示す。
ｎｓｅｌ．ａ  ＜ｄｓｔ＞，＜ｓｒｃ＞，＜ネットワークパタンレジスタ＞
ｎｓｅｌ．ａの“．ａ”は２系統あるネットワークのうち、ネットワーク３０ａを使用することを示す。＜ｄｓｔ＞は出力先レジスタ、＜ｓｒｃ＞は入力元レジスタ、＜ネットワークパタンレジスタ＞は使用するネットワークパタン値を保持するネットワークパタンレジスタを指定する。このｎｓｅｌ．ａ命令の実際の記述の一例を以下に示し、その動作を説明する。
【００５４】
ｎｓｅｌ．ａ  ｒ２，ｒ０，ＮＰＡ
このｎｓｅｌ．ａ命令では、オペランドのｒ０が命令デコーダ１１によって、レジスタ番号変換部２０に入力される。ｎｓｅｌ．ａ命令ではレジスタオフセット更新動作はしないので、レジスタオフセット変化量レジスタ８０およびレジスタオフセットモジュロ値レジスタ８１は使用しない。レジスタ番号変換部２０ａでは、論理和回路１６からのレジスタオフセット選択信号によって、ｒ０をそのまま使用するか、ｒ０にレジスタオフセット値を加算したレジスタを使用するかを決定し、レジスタファイル１５にレジスタ番号を出力する。レジスタファイル１５は指定されたレジスタから読み出したデータを出力する。ＮＰＡはネットワークパタンレジスタ５３を指すオペランドである。オペランドのＮＰＡは、セレクト処理部のネットワークパタンレジスタ５３によって、ネットワークによるデータの選択動作および、レジスタオフセット選択信号の動作が行われることを示す。ｎｓｅｌ．ａ命令では、ネットワークパタン値の更新は行わないので、ネットワークパタン値変化量は使用しない。ネットワークによるデータ選択の結果出力されたデータは、オペランドに書かれたｒ２をレジスタ番号変換部２０ｂで変換した番号のレジスタに格納される。
【００５５】
次に、ＮＰＡの格納値の一例と、そのときの動作を図１８、図１９に示す。図１８の第一段はプロセッシングエレメントを示す。第二段はハーフワード単位で画素値を格納していることを示す。第一弾及び第二段の詳細は図９の説明で記載したのと同様である。第三段はリード用レジスタオフセット値を示す。第四段はライト用レジスタオフセット値を示す。第五段はNPＡに格納されているネットワークパタン値を示す。第六段は入力データｒ０を示す。第七段は出力データｒ２を示す。図１９の第一段はプロセッシングエレメントを示す。第二段はハーフワード単位で画素値を格納していることを示す。第一弾及び第二段の詳細は図９の説明で記載したのと同様である。第三段はリード用レジスタオフセット値を示す。第四段はライト用レジスタオフセット値を示す。第五段はNPＡに格納されているネットワークパタン値を示す。第六段は入力データｒ１を示す。第七段は入力データｒ０を示す。第八段は出力データｒ２を示す。図１８、図１９では、ＰＥ動作モードレジスタは８ＰＥモード、動作モードレジスタはレジスタオフセット選択に設定されており、リード用レジスタオフセット値は全てのプロセッシングエレメントで０ｘ０１が、ライト用レジスタオフセット値は全てのプロセッシングエレメントで０ｘ００が設定されているものとする。図１８は、ネットワークパタン値として０１、００、０３、０２．．．０ｆ、０ｅを用いた場合の入出力を示しており、ｘ００、ｘ０１．．．ｘ１５はデータを表している。図９の説明で述べたように、ネットワークパタン値に関して、十の位はレジスタオフセット値を使用するか否かを示す。十の位が０なら、レジスタオフセット値を使用しないことを示す。一の位はどのプロセッシングエレメントのＨかＬのどちらからデータを取ってくるかを指定する。したがって、例えば、ネットワークパタン値が０１では、レジスタオフセットは使用しないことを示し、またｒ０のＰＥ０Ｌからデータを取ってくることを示す。同様に、ネットワークパタン値が００では、レジスタオフセットは使用せず、ｒ０のＰＥ０Ｈからデータを取ってくることを示す。
【００５６】
よって、このようなパタンの場合、図１８に示すように各プロセッシングエレメントのＭＳＢ８ビットとＬＳＢ８ビットが入れ替わるように動作する。
図１９は、ネットワークパタン値として１１、００、１３、０２．．．１ｆ、０ｅを用いた場合の入出力を示しており、ｘ００、ｘ０１．．．ｘ１５はデータを表している。このとき、ネットワークは各プロセッシングエレメントのＭＳＢバイトとＬＳＢバイトが入れ替わるように動作するが、図１８と異なり、例えばネットワークパタン値が１１の場合には、ＰＥ０ＨにはＰＥ０Ｌのレジスタオフセットを加えたレジスタｒ１のデータがｒ２に出力される。ネットワークパタン値が００の場合には、図１８と同様に、レジスタオフセットは使用せず、ｒ０のデータがｒ２に出力される。
【００５７】
次に、ｎｓｅｌ．ａ命令の別の書式を示す。
ｎｓｅｌ．ａ  ＜ｄｓｔ＞，＜ｓｒｃ＞，＜即値＞
ｎｓｅｌ．ａ命令の“．ａ”は２系統あるネットワークのうち、ネットワーク３０ａを使用することを示し、＜ｄｓｔ＞は出力先レジスタ、＜ｓｒｃ＞は入力元レジスタ、＜即値＞は数値を指定する。このｎｓｅｌ．ａ命令の実際の記述の一例を以下に示し、その動作を説明する。
【００５８】
ｎｓｅｌ．ａ  ｒ２，ｒ０，０ｘ４
このｎｓｅｌ．ａ命令では、オペランドのｒ０が命令デコーダ１１によって、レジスタ番号変換部２０に入力される。ｎｓｅｌ．ａ命令ではレジスタオフセット更新動作はしないので、レジスタオフセット変化量レジスタ８０およびレジスタオフセットモジュロ値レジスタ８１は使用しない。レジスタ番号変換部２０ａでは、論理和回路１６からのレジスタオフセット選択信号によって、ｒ０をそのまま使用するか、ｒ０にレジスタオフセット値を加算したレジスタを使用するかを決定し、レジスタファイル１５にレジスタ番号を出力する。レジスタファイル１５は指定されたレジスタから読み出したデータを出力する。オペランドの０ｘ４は、全てのプロセッシングエレメントのネットワークパタン値が０ｘ４であるとして、ネットワークによるデータの選択動作および、レジスタオフセット選択信号の動作が行われることを示している。ｎｓｅｌ．ａ命令では、ネットワークパタン値の更新は行わないので、ネットワークパタン値変化量は使用しない。０ｘ０４の場合は、８ＰＥモードであれば、ＰＥ２Ｈのｒ０のデータがすべてのプロセッシングエレメントに出力され、オペランドに書かれたｒ２をレジスタ番号変換部２０ｂで変換した番号のレジスタに格納されるが、ライト用のレジスタオフセット値が０であるので、オペランドと同じｒ２に格納される。
【００５９】
続いて、ネットワークシフト命令について説明する。ネットワークシフト命令の書式を以下に示す。
ｎｓｆｔｉ．ａ  ＜ｄｓｔ＞，＜ｓｒｃ＞，＜ネットワークパタンレジスタ＞，＜ネットワークパタン値変化量＞
ｎｓｆｔｉ．ａ命令の“．ａ”は２系統あるネットワークのうち、ネットワーク３０ａを使用することを示し、＜ｄｓｔ＞は出力先レジスタ、＜ｓｒｃ＞は入力元レジスタ、＜ネットワークパタンレジスタ＞はデータの移動に使用するネットワークパタンレジスタ、＜ネットワークパタン値変化量＞はデータの移動後のネットワークパタン値に加算する値を指定する。このｎｓｆｔｉ．ａ命令の実際の記述の一例を以下に示し、その動作を説明する。
【００６０】
ｎｓｆｔｉ．ａ  ｒ２，ｒ０，ＮＰＡ，０ｘ１
本実施形態では、レジスタオフセット変化量レジスタ８０およびレジスタオフセットモジュロ値レジスタ８１は使用しない。また、ＰＥモードレジスタ８２は８ＰＥモード、動作モードレジスタ８３はレジスタオフセット値選択モードに設定されているものとする。
このｎｓｆｔｉ．ａ命令では、オペランドのｒ０が命令デコーダ１１によって、レジスタ番号変換部２０に入力される。ｎｓｆｔｉ．ａ命令ではレジスタオフセットは更新しない。レジスタ番号変換部２０ａでは、論理和回路１６からのレジスタオフセット選択信号によって、ｒ０をそのまま使用するか、ｒ０にレジスタオフセット値を加算したレジスタを使用するかを決定し、レジスタファイル１５にレジスタ番号を出力する。レジスタファイル１５は指定されたレジスタから読み出したデータを出力する。オペランドのＮＰＡは、セレクト処理部５０のネットワークパタンレジスタ５３によって、ネットワークによるデータの選択動作および、レジスタオフセット選択信号のセレクト動作が行われることを示している。オペランドの０ｘ１はネットワークパタン値変化量を指し、データのセレクトと同時に、ＮＰＡの値をすべてのＰＥで１加算する。そして、ネットワークによるデータ選択の結果出力されたデータは、レジスタ番号変換部２０ｂで変換した番号のレジスタに格納される。
【００６１】
図４７に命令シーケンスを示す。図４７の（ａ）、（ｂ）では、ｎｓｆｔｉ．ａ命令が発行されることを示している。この命令のシーケンスに合わせたネットワーク３０ａの動作を図２０に示す。図２０にｎｓｆｔｉ．ａ命令を発行した時のデータの動きを示す。図２０（ａ）の第一段はプロセッシングエレメントを示す。第二段はハーフワード単位で画素値を格納していることを示す。第一弾及び第二段の詳細は図９の説明で記載したのと同様である。第三段はリード用レジスタオフセット値を示す。第四段はライト用レジスタオフセット値を示す。第五段はNPＡに格納されているネットワークパタン値を示す。第六段は入力データｒ１を示す。第七段は入力データｒ０を示す。第八段は出力データｒ２を示す。図２０（ｂ）の第一段はNPＡに格納されているネットワークパタン値を示す。第二段は入力データｒ１を示す。第三段は入力データｒ０を示し、第四段は出力データｒ２を示す。ｘ００からｘ３１は水平方向に並ぶ画素データである。ＮＰＡの初期値として０１、００、０３、０２．．．０ｆ、０ｅというネットワークパタン値を設定し、レジスタオフセットに０ｘ０１という値を設定する。図１８と同様に図２０（ａ）では、ｘ０１、ｘ００、ｘ０３．．．ｘ１４のデータが出力され、同時にＮＰＡの値が＋１更新される。次に、図４７（ｂ）の２度目のｎｓｆｔｉ．ａ命令によって、図２０（ｂ）のように、ｘ０２、ｘ０１、ｘ０４．．．ｘ１５のデータが出力され、ＮＰＡの値が＋１更新される。また、ネットワークによるデータ選択の結果出力されたデータは、レジスタ番号変換部２０ｂでレジスタ番号を変換されるが、ライト用のレジスタオフセット値が０であるので、オペランドと同じｒ２に格納される。
【００６２】
以上のように本実施形態によれば、各プロセッシングエレメントはネットワークパタン値に従い、データ転送を実行するのと同時に、ネットワークパタン値に対し命令に基づく演算を行い、ネットワークパタン値を更新する。よって、任意のプロセッシングエレメント間でデータ転送が可能となり、また、データ転送を行う度に命令オペランド中に即値でネットワークパタン値を与える必要はなく、SIMDプロセッサに対するプログラミングにあたってのコードサイズを削減することができる。
【００６３】
（第二実施形態）
本実施形態は、並列演算プロセッサをＦＩＲフィルタ処理に応用する場合の改良に関する。ＦＩＲフィルタは、雑音除去などのためにしばしば利用されるフィルタであり、隣接するデータに積和演算を施すことにより実現される。本実施形態では、対称係数のＦＩＲの場合について示す。
【００６４】
ＦＩＲフィルタの演算方法を図２１に示す。図２１のデータｘ１６に着目する。図２１（ａ）においてｘ１６へのＦＩＲフィルタ演算は、ｘ１６に係数ｃ０を乗算した結果と、ｘ１６の隣接データであるｘ１５とｘ１７を加算後、係数ｃ１と乗算した結果と、ｘ１６の隣接データであるｘ１４とｘ１８を加算後、係数ｃ２を乗算した結果とをすべて加算することによって行うことが出来る。
【００６５】
また、図２１（ｂ）、図２１（ｃ）に示すようにｘ１７、ｘ１８についても同様に隣接データを利用してＦＩＲフィルタの演算が行われる。ｘ１６のＦＩＲ演算と、ｘ１７のＦＩＲ演算とを比べると、ｘ１７の演算はｘ１６の演算と比べて使用するデータがすべて１データ分だけ右側に寄っている。ｘ１８の演算はさらに１データ分右側に寄っている。
したがって、あるときにｘ１６、ｘ１７、ｘ１８．．．のデータをそれぞれのプロセッシングエレメントの演算器に供給し、ｃ０と乗算する。次にｘ１７、ｘ１８、ｘ１９．．．及びｘ１５、ｘ１６、ｘ１７．．．のデータをそれぞれのプロセッシングエレメントの演算器に供給し、加算後ｃ１と乗算する。次にｘ１８、ｘ１９、ｘ２０．．．及びｘ１４、ｘ１５、ｘ１６．．．をそれぞれのプロセッシングエレメントの演算器に供給し、加算後ｃ２と乗算する。これらの乗算結果を加算することによりＦＩＲ演算をプロセッシングエレメントの数だけ並列に処理することができる。
【００６６】
このようなデータ供給が第一実施形態に示した構成によって可能となることを、図１７を用いて説明する。ＦＩＲ演算ではネットワークシフト命令を使用する。ネットワークシフト命令の実際の記述の一例を以下に示し、その動作を説明する。
ｎｓｆｔｉ．ａ  ｒ３，ｒ１，ＮＰＡ，０ｘ１
本実施形態では、ネットワーク３０ａ、３０ｂいずれもレジスタオフセット変化量レジスタ８０およびレジスタオフセットモジュロ値レジスタ８１は使用しない。また、ＰＥモードレジスタ８２は８ＰＥモード、動作モードレジスタ８３はレジスタオフセット値選択モードに設定されているものとする。
【００６７】
このｎｓｆｔｉ．ａ命令では、オペランドのｒ１が命令デコーダ１１によって、レジスタ番号変換部２０に入力される。ｎｓｆｔｉ．ａ命令ではレジスタオフセットは更新しない。レジスタ番号変換部２０ａでは、論理和回路１６からのレジスタオフセット選択信号によって、ｒ１をそのまま使用するか、ｒ１にレジスタオフセット値を加算したレジスタを使用するかを決定し、レジスタファイル１５にレジスタ番号を出力する。レジスタファイル１５は指定されたレジスタから読み出したデータを出力する。ＮＰＡはネットワークパタンレジスタを指すオペランドである。オペランドのＮＰＡは、セレクト処理部５０のネットワークパタンレジスタ５３によって、ネットワークによるデータの選択動作および、レジスタオフセット選択信号のセレクト動作が行われることを示している。オペランドの０ｘ１はネットワークパタン値変化量を指し、データのセレクトと同時に、ＮＰＡの値をすべてのＰＥで１加算する。そして、ネットワークによるデータ選択の結果出力されたデータは、レジスタ番号変換部２０ｂで変換した番号のレジスタに格納される。
【００６８】
次に、ネットワークシフト命令のもう１つの形式を示す。
ｎｓｆｔｄ．ｂ  ＜ｄｓｔ＞，＜ｓｒｃ＞，＜ネットワークパタンレジスタ＞，＜ネットワークパタン値変化量＞
ｎｓｆｔｄ．ｂ命令の“．ｂ”は２系統あるネットワークのうち、ネットワーク３０ｂを使用することを示し、＜ｄｓｔ＞は出力先レジスタ、＜ｓｒｃ＞は入力元レジスタ、＜ネットワークパタンレジスタ＞はデータの移動に使用するネットワークパタンレジスタ、＜ネットワークパタン値変化量＞はデータの移動後のネットワークパタン値に減算する値を指定する。このｎｓｆｔｄ．ｂ命令の実際の記述の一例を以下に示し、その動作を説明する。
【００６９】
ｎｓｆｔｄ．ｂ  ｒ４，ｒ１，ＮＰＢ，０ｘ１
このｎｓｆｔｄ．ｂ命令では、オペランドのｒ１が命令デコーダ１１によって、レジスタ番号変換部２０に入力される。ｎｓｆｔｄ．ｂ命令ではレジスタオフセットは更新しない。レジスタ番号変換部２０ａでは、論理和回路１６からのレジスタオフセット選択信号によって、ｒ１をそのまま使用するか、ｒ１にレジスタオフセット値を加算したレジスタを使用するかを決定し、レジスタファイル１５にレジスタ番号を出力する。レジスタファイル１５は指定されたレジスタから読み出したデータを出力する。ＮＰＢはネットワークパタンレジスタを指すオペランドである。オペランドのＮＰＢは、セレクト処理部５０ｂのネットワークパタンレジスタ５３ｂによって、ネットワークによるデータの選択動作および、レジスタオフセット選択信号のセレクト動作が行われることを示している。オペランドの０ｘ１はネットワークパタン値変化量を指し、データのセレクトと同時に、ＮＰＢの値をすべてのプロセッシングエレメントで１減算する。そして、ネットワークによるデータ選択の結果出力されたデータは、レジスタ番号変換部２０ｂで変換した番号のレジスタに格納される。ここで、セレクト処理部５０ｂ及びネットワークパタンレジスタ５３ｂは、プロセッシングエレメントＰＥ０のネットワーク３０ｂに含まれるセレクト処理部及びネットワークパタンレジスタを指す。
【００７０】
このｎｓｆｔｉ．ａ命令と、ｎｓｆｔｄ．ｂ命令を同時に発行することによって、ＦＩＲフィルタの演算が行えることを示す。図４８にＦＩＲフィルタ演算を行うための、命令シーケンスを示す。図４８の（ａ）〜（ｃ）では、ｎｓｆｔｉ．ａ命令とｎｓｆｔｄ．ｂ命令が同時に発行されることを示している。この命令のシーケンスに合わせたネットワーク３０ａ、３０ｂの動作をそれぞれ図２２と図２３に示す。図２２にｎｓｆｔｉ．ａ命令を発行した時のデータの動きを示す。図２２（ａ）の第一段はプロセッシングエレメントを示す。第二段はハーフワード単位で画素値を格納していることを示す。第一弾及び第二段の詳細は図９の説明で記載したのと同様である。第三段はリード用レジスタオフセット値を示す。第四段はライト用レジスタオフセット値を示す。第五段はNPＡに格納されているネットワークパタン値を示す。第六段は入力データｒ２を示す。第七段は入力データｒ１を示す。下第八段は出力データｒ３を示す。図２２（ｂ）、図２２（ｃ）の第一段はNPＡに格納されているネットワークパタン値を示す。第二段は入力データｒ２を示す。第三段は入力データｒ１を示す。第四段は出力データを示す。ｘ１６からｘ４７は水平方向に並ぶ画素データである。ＮＰＡの初期値として００、０１、０２、０３．．．０ｆというネットワークパタン値を設定し、レジスタオフセットに０ｘ０１という値を設定する。図４８（ａ）の１度目のｎｓｆｔｉ．ａ命令によって、図２２（ａ）のように、ｘ１６、ｘ１７、ｘ１８．．．ｘ３１のデータが出力され、同時にＮＰＡの値が＋１更新される。次に、図２２（ｂ）ではネットワークパタン値は１度目のｎｓｆｔｉ．ａ命令によって＋１更新されているので０１、０２、０３．．．０ｆ、１０となっている。ここで、ＰＥ７Ｌのネットワークパタン値は１０であるので、ＰＥ７ＬにはＰＥ０Ｈのオフセットを加えたレジスタｒ２のデータがｒ３に出力される。よって、図４８（ｂ）の２度目のｎｓｆｔｉ．ａ命令によって、図２２（ｂ）のように、ｘ１７、ｘ１８、ｘ１９．．．ｘ３２のデータが出力され、ＮＰＡの値が＋１更新される。さらに、図４８（ｃ）の３度目のｎｓｆｔｉ．ａ命令によって、図２２（ｃ）のように、ｘ１８、ｘ１９、ｘ２０．．．ｘ３３のデータが出力され、ＮＰＡの値が＋１更新される。このようにｎｓｆｔｉ．ａ命令を発行するたびに次々に右側の隣接データが各プロセッシングエレメントに出力される。また、ネットワークによるデータ選択の結果出力されたデータは、レジスタ番号変換部２０ｂでレジスタ番号を変換されるが、ライト用のレジスタオフセット値が０であるので、オペランドと同じｒ３に格納される。
【００７１】
このとき、各プロセッシングエレメントがアクセスするレジスタは図２２の斜線部で示すように、それぞれｒ１又はｒ２であり、バイト単位に見た場合、読み出すレジスタの数は１つだけである。
図２３にｎｓｆｔｄ．ｂ命令を発行した時のデータの動きを示す。図２３（ａ）の第一段はプロセッシングエレメントを示す。第二段はハーフワード単位で画素値を格納していることを示す。第一弾及び第二段の詳細は図９の説明で記載したのと同様である。第三段はリード用レジスタオフセット値を示す。第四段はライト用レジスタオフセット値を示す。第五段はNPＢに格納されているネットワークパタン値を示す。第六段は入力データｒ０を示す。第七段は入力データｒ１を示す。下第八段は出力データｒ４を示す。図２３（ｂ）、図２３（ｃ）の第一段はNPＢに格納されているネットワークパタン値を示す。第二段は入力データｒ０を示す。第三段は入力データｒ１を示す。第四段は出力データｒ４を示す。ｘ００からｘ３１は水平方向に並ぶ画素データである。ＮＰＢの初期値として００，０１，０２，０３．．．０ｆというネットワークパタン値を設定し、レジスタオフセットに０ｘ０ｆという値を設定する。図４８（ａ）の１度目のｎｓｆｔｄ．ｂ命令によって、図２３（ａ）のように、ｘ１６、ｘ１７、ｘ１８．．．ｘ３１のデータが出力され、同時にＮＰＢの値が−１更新される。次に、図４８（ｂ）の２度目のｎｓｆｔｄ．ｂ命令によって、図２３（ｂ）のように、ｘ１５、ｘ１６、ｘ１７．．．ｘ３０のデータが出力され、ＮＰＢの値が−１更新される。さらに、図４８（ｃ）の３度目のｎｓｆｔｄ．ｂ命令によって、図２３（ｃ）のように、ｘ１４、ｘ１５、ｘ１６．．．ｘ２９のデータが出力され、ＮＰＢの値が−１更新される。このようにｎｓｆｔｄ．ｂ命令を発行するたびに次々に左側の隣接データが各プロセッシングエレメントに出力される。また、ネットワークによるデータ選択の結果出力されたデータは、レジスタ番号変換部２０ｂでレジスタ番号を変換されるが、ライト用のレジスタオフセット値が０であるので、オペランドと同じｒ４に格納される。
【００７２】
このとき、各プロセッシングエレメントがアクセスするレジスタは図２３の斜線部で示すようにそれぞれｒ１又はｒ０であり、バイト単位のプロセッシングエレメント毎にみた場合、読み出すレジスタの数は１つだけである。
図４８（ａ）、（ｂ）、（ｃ）それぞれにおいて、ネットワーク３０ａ、ネットワーク３０ｂそれぞれがｒ３、ｒ４に出力する値を、図４８（ａ）、（ｂ）、（ｃ）毎に演算器ユニット４０に入力し、加算演算と積和演算を繰り返すことにより、各プロセッシングエレメントでＦＩＲフィルタ演算を並列に実行することができる。
【００７３】
以上のように本実施形態によれば、ネットワークパタン値によって、読み出すレジスタを選択することにより、並列にＦＩＲフィルタの演算が行える。また、データ供給のためのレジスタの読み出しを各ネットワークについて１つ、あわせて２つでＦＩＲフィルタ演算が行えるようになり、並列処理プロセッサにおいてレジスタファイルのハードウェア規模の削減を図ることができる。
【００７４】
なお、図４８においては、ネットワーク３０ａ、ネットワーク３０ｂを制御する命令を同時に発行しているが、１サイクルあたり１つの命令にしてもよい。この場合、ＦＩＲ演算のためのデータの供給速度は半分になり、性能は低下する。
（第三実施形態）
第二実施形態では、第一実施形態に示す並列演算プロセッサによって、ＦＩＲフィルタの演算が行えることを示した。ところがＦＩＲフィルタは、隣接するデータを必要とするが、画面の端では、隣接するデータが存在しない。そこで本実施形態は、画面の端の値を繰り返したデータが存在するとして、フィルタ処理を行う場合の実施形態である。
【００７５】
図２４（ａ）〜（ｃ）に画面の端でのＦＩＲフィルタ演算の演算方法を示す。図においてｘ３１が画面の端のデータとする。図２４（ｂ）では、ｘ３０におけるＦＩＲフィルタ演算では、３回目の積和演算に使用するデータが画面の外にでてしまう。このような場合には、画面の外にｘ３１のデータが続いているように扱ってＦＩＲ演算を行う。図２４（ｃ）のｘ３１におけるＦＩＲフィルタ演算でも同様である。
【００７６】
このようなデータ供給が第一実施形態に示した構成によって可能となることを、図１７を用いて説明する。第二実施形態で示したようにＦＩＲ演算では、ネットワークシフト命令を使用する。ネットワークシフト命令の実際の記述の一例を以下に示し、その動作を説明する。
ｎｓｆｔｉ．ａ  ｒ３，ｒ１，ＮＰＡ，０ｘ１
本実施形態では、ネットワーク３０ａは、レジスタオフセット変化量レジスタ８０およびレジスタオフセットモジュロ値レジスタ８１は使用しない。ＰＥモードレジスタ８２は８ＰＥモード、動作モードレジスタ８３は飽和モードに設定されているものとする。
【００７７】
このｎｓｆｔｉ．ａ命令では、オペランドのｒ１が命令デコーダ１１によって、レジスタ番号変換部２０ａに入力される。ｎｓｆｔｉ．ａ命令ではレジスタオフセットは更新しない。レジスタ番号変換部２０ａでは、論理和回路１６からのレジスタオフセット選択信号によって、ｒ１をそのまま使用するか、ｒ１にレジスタオフセット値を加算したレジスタを使用するかを決定し、レジスタファイル１５にレジスタ番号を出力する。レジスタファイル１５は指定されたレジスタから読み出したデータを出力する。ＮＰＡはネットワークパタンレジスタを指すオペランドである。オペランドのＮＰＡは、セレクト処理部５０のネットワークパタンレジスタ５３によって、ネットワークによるデータの選択動作および、レジスタオフセット選択信号のセレクト動作が行われることを示している。オペランドの０ｘ１はネットワークパタン値変化量を指し、データのセレクトと同時に、ＮＰＡの値をすべてのプロセッシングエレメントで１加算する。そして、ネットワークによるデータ選択の結果出力されたデータは、レジスタ番号変換部２０ｂで変換した番号のレジスタに格納される。
【００７８】
第二実施形態と同様に、図４８にＦＩＲフィルタ演算を行うための、命令シーケンスを示す。図４８の（ａ）〜（ｃ）では、ｎｓｆｔｉ．ａ命令とｎｓｆｔｄ．ｂ命令が同時に発行されることを示している。この命令のシーケンスに合わせたネットワーク３０ａの動作を図２５に示す。
図２５にｎｓｆｔｉ．ａ命令を発行した時のデータの動きを示す。図２５（ａ）の第一段はプロセッシングエレメントを示す。第二段はハーフワード単位で画素値を格納していることを示す。第一弾及び第二段の詳細は図９の説明で記載したのと同様である。第三段はリード用レジスタオフセット値を示す。第四段はライト用レジスタオフセット値を示す。第五段はNPＡに格納されているネットワークパタン値を示す。第六段は入力データｒ２を示す。第七段は入力データｒ１を示す。第八段は出力データｒ３を示す。図２５（ｂ）、図２５（ｃ）の第一段はNPＡに格納されているネットワークパタン値を示す。第二段は入力データｒ２を示す。第三段は入力データｒ１を示し、第四段は出力データｒ３を示す。ｘ１６からｘ３１は水平方向に並ぶ画素データである。ＮＰＡの初期値として００、０１、０２、０３．．．０ｆというネットワークパタン値を設定し、リード用のレジスタオフセットに０ｘ０１という値を設定する。動作モードレジスタは飽和モードに設定する。図４８（ａ）の１度目のｎｓｆｔｉ．ａ命令によって、図２５（ａ）のようにｘ１６、ｘ１７、ｘ１８．．．ｘ３１のデータが出力され、同時にＮＰＡの値が＋１更新される。次に、図４８（ｂ）の２度目のｎｓｆｔｉ．ａ命令によって、データが選択される。ここで、ＰＥ７Ｌのネットワークパタン値は０ｘ１０であり、０ｘ０ｆを超えているが飽和モードでは０ｘ０ｆとして扱われるので、結果として、図２５（ｂ）のように、ｘ１７、ｘ１８、ｘ１９．．．ｘ３１、ｘ３１のデータが出力され、ＮＰＡの値が＋１更新される。さらに、図４８（ｃ）の３度目のｎｓｆｔｉ．ａ命令によって、データが選択される。ここで、ＰＥ７Ｈ及びＰＥ７Ｌのネットワークパタン値はそれぞれ０ｘ１０と０ｘ１１であり、０ｘ０ｆを超えているが飽和モードでは０ｘ０ｆとして扱われるので、結果として、図２５（ｃ）のように、ｘ１８、ｘ１９．．．ｘ３１、ｘ３１、ｘ３１のデータが出力され、ＮＰＡの値が＋１更新される。このようにｎｓｆｔｉ．ａ命令を発行するたびに次々に右側の隣接データが各ＰＥに出力され、データのない右端ではｘ３１の値が繰り返し出力される。ネットワークによるデータ選択の結果出力されたデータは、レジスタ番号変換部２０ｂでレジスタ番号を変換されるが、ライト用のレジスタオフセット値が０であるので、オペランドと同じｒ３に格納される。
【００７９】
第二実施形態と同じように、ネットワーク３０ｂではｎｓｆｔｄ．ｂ命令が動作し、データの選択動作が行われ、ＦＩＲ演算を行うことができる。
また、画面の左端では、ネットワーク３０ｂの動作モードレジスタ８３を飽和モードに設定し、ＮＰＢに保持されているネットワークパタン値が０より小さい場合に飽和の操作を行うことにより、同様に画面の左端でのＦＩＲフィルタ処理を行うことができる。
【００８０】
以上のように本実施形態によれば、０ｘ００から０ｘ０ｆの範囲外のネットワークパタン値に対し飽和演算を行い、データ転送元のプロセッシングエレメントを決定する。よって、画面の端で、隣接するデータが存在しない場合であっても、画面の端の値を繰り返したデータが存在するとして処理することができる。つまり、画面の端におけるＦＩＲフィルタ演算においても、画面端のデータをコピーするような操作をプログラムによって明示的に記述することなく、動作モードを飽和モードに変更するだけで、ＦＩＲフィルタの演算が行える。また、ネットワークパタン値を更新することにより、コードサイズを削減し、プログラムの動作効率を向上させることができる。
【００８１】
（第四実施形態）
第三実施形態では、ｎｓｆｔｉ．ａ命令を飽和モードで動作させることにより、画面の端での処理が行えることを示した。しかし、第三実施形態では、それぞれのデータが１６ビットである場合等には、ＬＳＢ８ビット又はＭＳＢ８ビットだけが繰り返され、１６ビットデータが画面の端にある場合の処理が正しく行えない。
【００８２】
本実施形態では、１６ビットデータ等に対しても画面の端での処理が行える実施形態である。図２６に本実施形態におけるセレクト処理部５０ａの構成図を示す。セレクト処理部５０ａは、１６ｔｏ１セレクタ５１ａと、セレクタ５２ａと、ネットワークパタンレジスタ５３ａと、加減算器５４ａと、セレクト信号変換部６０ａとを備える。
セレクト信号変換部６０ａは、入力されたネットワークパタン値からレジスタオフセット選択信号と、１６ｔｏ１セレクタ５１及び１６ｔｏ１セレクタ５１ａに送出するセレクト信号をそれぞれ生成する。１６ｔｏ１セレクタ５１ａに送出するセレクト信号の生成方法は図６と同じであるが、１６ｔｏ１セレクタ５１ａに送出するセレクト信号は最下位の１ビットを常に“１”とし、１６ｔｏ１セレクタ５１に送出するセレクト信号は最下位の１ビットを常に“０”とし、残りのビットについては同じ値とする。また、レジスタオフセット選択信号をそれぞれのセレクト信号と同じ番号のプロセッシングエレメントに出力する。
【００８３】
他の構成要素は図６と同様である。
以上の構成により、１６ビットのデータはＭＳＢ８ビットとＬＳＢ８ビットが常に１組のデータとして取り扱われることになる。
続いて、ネットワークパタン値を用いた場合の動作について説明する。実際の記述の一例を以下に示し、その動作を説明する。オペランドのネットワークパタン値の変化量が０ｘ２に変更されていること以外は、第三実施形態と同じである。
【００８４】
ｎｓｆｔｉ．ａ  ｒ３，ｒ１，ＮＰＡ，０ｘ２
図２７にｎｓｆｔｉ．ａ命令を発行した時のデータの動きを示す。図２７（ａ）の第一段はプロセッシングエレメントを示す。第二段はハーフワード単位で画素値を格納していることを示す。第一弾及び第二段の詳細は図９の説明で記載したのと同様である。第三段はリード用レジスタオフセット値を示す。第四段はライト用レジスタオフセット値を示し、第五段はNPＡに格納されているネットワークパタン値を示す。第六段は１６ｔｏ１セレクタへのセレクト値を示し、第七段は入力データｒ２を示す。第八段は入力データｒ１を示す。第九段は出力データｒ３を示す。図２７（ｂ）、図２７（ｃ）の第一段はNPＡに格納されているネットワークパタン値を示す。第二段はセレクタへのセレクト値を示す。第三段は入力データｒ２を示し、第四段は入力データｒ１を示す。第五段は出力データｒ３を示す。ｘ１６からｘ３１は水平方向に並ぶデータである。ＮＰＡの初期値として−，０１，−，０３．．．−，０ｆというネットワークパタン値を設定し、レジスタオフセットに０ｘ０１を設定する。ここで、“−”は設定不要であることを示し、どのような値でもよい。動作モードレジスタには飽和モードを設定する。図２７（ａ）の１度目のｎｓｆｔｉ．ａ命令によって、ｘ１６、ｘ１７、ｘ１８．．．ｘ３１のデータが出力され、同時にＮＰＡの値が＋２更新される。ＰＥ０Ｈ、ＰＥ１Ｈ．．．ＰＥ７Ｈのネットワークパタン値は使用されない。次に、図２７（ｂ）の２度目のｎｓｆｔｉ．ａ命令において、ＰＥ７Lのネットワークパタン値は１１であるが、飽和モードであるのでセレクト値は０ｆとなる。また、ＰＥ７Ｈのセレクト値はＰＥ７Lのセレクト値の最下位１ビットを０にするので０ｅとなる。よってｘ１８、ｘ１９、ｘ２０．．．ｘ３０、ｘ３１のデータが出力され、ＮＰＡの値が＋２更新される。さらに、図２７（ｃ）の３度目のｎｓｆｔｉ．ａ命令によってｘ２０、ｘ２１、ｘ２２．．．ｘ３１、ｘ３０、ｘ３１のデータが出力され、ＮＰＡの値が＋２更新される。このようにｎｓｆｔｉ．ａ命令を発行するたびに次々に右側の１６ビット単位の隣接データが各プロセッシングエレメントに出力され、データのない右端ではｘ３０およびｘ３１の値が繰り返し出力される。
【００８５】
次に、即値を用いた場合の動作について説明する。実際の記述の一例を以下に示し、その動作を説明する。
ｎｓｅｌ．ａ  ｒ２，ｒ０，０ｘ４
この命令では、レジスタファイルからレジスタｒ０を読み出し、すべてのプロセッシングエレメントのネットワークパタン値を即値０ｘ０４として、データを移動させ、結果をｒ２に書き込む動作を行う。データの移動の様子を図２８に示す。図２８の第一段はプロセッシングエレメントを示す。第二段はハーフワード単位で画素値を格納していることを示す。第一弾及び第二段の詳細は図９の説明で記載したのと同様である。第三段はリード用レジスタオフセット値を示す。第四段はライト用レジスタオフセット値を示す。第五段はNPＡに格納されているネットワークパタン値を示す。第六段は１６ｔｏ１セレクタへのセレクト値を示す。第七段は入力データｒ０を示す。第八段は出力データを示す。ネットワークパタン値を即値０ｘ０４とする場合は、ＰＥ０Ｌへのセレクト信号５２ａは最下位ビットが“１”になるので０ｘ０５であり、ＰＥ０Ｈへのセレクト信号５２ｂは最下位ビットが“０”になるので、０ｘ０４となる。このようにして、ＰＥ２Ｈのｒ０のデータがＰＥ０Ｈ、ＰＥ１Ｈ．．．ＰＥ７Ｈに出力される。また、ＰＥ２Ｌのｒ０のデータがＰＥ０Ｌ、ＰＥ１Ｌ．．．ＰＥ７Ｌに出力され、１６ビットデータを扱うことができるようになる。
【００８６】
以上のように本実施形態によれば、１６ビットデータに対しても、画面の端部でのデータの繰り返し処理が行えるようになり、１６ビットデータを取り扱えるようになる。また、オペランドでネットワークパタンを即値として指定した場合でも１６ビットのデータをすべてのプロセッシングエレメントに転送できるようになり、１６ビットデータの取り扱いが行えるようになる。また、処理の効率化やコードサイズの低減を図ることができる。
【００８７】
なお、本実施形態に示した構成と、第一実施形態に示した構成の切り替えは、制御レジスタによって行うとしてもよいし、命令によって行うとしてもよい。また、１６ビットデータのみを扱う場合には、本実施形態のみの構成をとることによりハードウェア規模を削減することができる。
（第五実施形態）
本実施形態は、行列の転置行列を実現する場合の並列演算プロセッサの改良に関する。メディア処理では、行列の転置変換が必要な場合があり、行列の要素の配置を入れ替えたいケースが多々ある。そこで本実施形態では、行列の転置変換を実現する。尚、縦16×横16の一例で説明を行えば説明が複雑になるので、以降の説明は、縦4×横4の要素からなる行列に対して転置変換を行う場合を対象として簡略化を期する。第一実施形態に示す並列演算プロセッサによって、レジスタファイルに蓄えられたデータの転置が行えることを示す。ＩＤＣＴ（Ｉｎｖｅｒｓｅ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）演算において、垂直方向のＩＤＣＴ演算後に水平方向のＩＤＣＴ演算を行う際にデータの転置が使用される。
【００８８】
続いて、図２９に２系統のネットワークとレジスタオフセットの機能を用いることによって、データの転置が行えることを示す。本実施形態では、転置を行うために動作モードをモジュロモードに設定する。図２９（ａ）は初期のデータの状態を示している。ＰＥ０〜ＰＥ３のｒ０〜ｒ３にデータｘ０〜ｘ１５が格納されている。ここで、転置を行うには対角線を挟んで対称にある位置のデータを入れ替える必要がある。つまり、ｘ０、ｘ５、ｘ１０、ｘ１５で形成される対角線を挟んで対象の位置にあるｘ４、ｘ９、ｘ１４とｘ１、ｘ６、ｘ１１を、ｘ８、ｘ１３とｘ２、ｘ７を、ｘ１２とｘ３を入れ替える必要がある。斜線を付けたデータはネットワーク３０ａ、３０ｂが読み出すレジスタを表している。図２９（ｂ）は、ネットワーク３０ａ、ネットワーク３０ｂが読み出したデータのプロセッシングエレメント間の移動を示している。図２９（ｃ）は図２９（ｂ）での移動の結果書き込まれたデータを示している。図２９（ｄ）はネットワーク３０ａが読み出したデータのプロセッシングエレメント間の移動を示す。図２９（ｅ）はネットワーク３０ａによるデータの書き込みを示す。図２９（ｆ）は図２９（ａ）から（ｃ）へデータを移動するための、レジスタオフセット値とネットワークパタン値を示している。図２９（ｇ）は図２９（ｃ）から（ｅ）へデータを移動するための、レジスタオフセット値とネットワークパタン値を示している。
【００８９】
図２９（ａ）において、転置を行うためにまず、ｘ４、ｘ９、ｘ１４、ｘ３とｘ１、ｘ６、ｘ１１、ｘ１２を入れ替える。そのために図２９（ｆ）に示すリード用レジスタオフセット値に従い、ネットワーク３０ａはＰＥ０から順にｒ１、ｒ２、ｒ３、ｒ０を読み出し、ネットワーク３０ｂはＰＥ０から順にｒ３、ｒ０、ｒ１、ｒ２を読み出す。図２９（ｂ）において、図２９（ｆ）に示すネットワークパタン値に従い、ネットワーク３０ａ、３０ｂともに異なる移動を行う。具体的にはネットワーク３０ａについて、ｘ４はｘ１と入れ替えるため、ＰＥ０からＰＥ１に移動する。同様にｘ９はＰＥ２、ｘ１４はＰＥ３、ｘ３はＰＥ０にそれぞれ移動する。ネットワーク３０ｂについてもネットワーク３０ａと同様である。つまり、ｘ１はｘ４と入れ替えるため、ＰＥ１からＰＥ０に移動する。同様にｘ６はＰＥ１、ｘ１１はＰＥ２、ｘ１２はＰＥ３にそれぞれ移動する。図２９（ｃ）において、図２９（ｆ）に示すライト用レジスタオフセット値に従い、ネットワーク３０ａはＰＥ０から順に、ｒ３、ｒ０、ｒ１、ｒ２に書き込み、ネットワーク３０ｂはＰＥ０から順に、ｒ１、ｒ２、ｒ３、ｒ０に書き込む。これにより、ｘ４、ｘ９、ｘ１４、ｘ３とｘ１、ｘ６、ｘ１１、ｘ１２が入れ替わる。また、残りのｘ８、ｘ１３とｘ２、ｘ７についてデータの入れ替えを行うために、次の転置動作での、ネットワーク３０ａが読み出すデータをハッチングで示している。図２９（ｇ）に示すリード用レジスタオフセット値に従い、ネットワーク３０ａは、ＰＥ０から順にｒ２、ｒ３、ｒ０、ｒ１を読み出す。図２９（ｄ）において、図２９（ｇ）に示すネットワークパタン値に従い、移動を行う。つまり、ｘ８をＰＥ２、ｘ１３をＰＥ３、ｘ２をＰＥ０、ｘ７をＰＥ１にそれぞれ移動する。このとき、ネットワーク３０ｂは動作しない。図２９（ｅ）において、図２９（ｇ）に示すライト用レジスタオフセット値に従い書き込む。この書き込みの結果、図２９（ａ）のデータの行と列が転置される。
【００９０】
次に、このような転置の動作を第一実施形態に示した並列演算プロセッサで行う方法について図１７を用いて説明する。ネットワーク転置命令の書式を以下に示す。
ｎｔｒｐｄ．ａ  ＜ｄｓｔ＞，＜ｓｒｃ＞，＜ネットワークパタンレジスタ＞，＜ネットワークパタン値変化量＞
ｎｔｒｐｄ．ａ命令の“．ａ”は２系統あるネットワークのうち、ネットワーク３０ａのネットワークを使用することを示し、＜ｄｓｔ＞は出力先レジスタ、＜ｓｒｃ＞は入力元レジスタ、＜ネットワークパタンレジスタ＞はデータの移動に使用するネットワークパタンレジスタ、＜ネットワークパタン値変化量＞はデータの移動後のネットワークパタン値に減算する値を指定する。このｎｔｒｐｄ．ａ命令の実際の記述の一例を以下に示し、その動作を説明する。
【００９１】
ｎｔｒｐｄ．ａ  ｒ０，ｒ０，ＮＰＡ，０ｘ２
本実施形態では、ネットワーク３０ａは、図２９（ｆ）に示すように、リード用レジスタオフセットパタンとしてＰＥ０Ｈから順に０１、０１、０２、０２、０３、０３、００、００という値を、ライト用レジスタオフセットパタンとしてＰＥ０Ｈから順に０３、０３、００、００、０１、０１、０２、０２という値を設定しているものとする。また、ネットワークパタン値としてＰＥ０Ｈから順に０６、０７、００、０１、０２、０３、０４、０５という値を設定しているものとする。更にリード用レジスタオフセット変化量レジスタ８０ａに“＋１”を、ライト用レジスタオフセット変化量レジスタ８０ｂに“−１”を、レジスタオフセットモジュロ値レジスタ８１に“４”が設定されているものとする。また、ＰＥモードレジスタ８２は４ＰＥモード、動作モードレジスタ８３はモジュロモードに設定されているものとする。
【００９２】
このｎｔｒｐｄ．ａ命令では、オペランドのｒ０が命令デコーダ１１によって、リードするレジスタ番号として、レジスタ番号変換部２０に渡される。レジスタ番号変換部２０ａでは、セレクト処理部５０がモジュロモードであるので、論理和回路１６からのレジスタオフセット選択信号が常に“１”であり、ｒ０にレジスタオフセット値を加算したレジスタ番号をレジスタファイル１５に出力する。リード用のレジスタオフセット値は図２９（ｆ）に示すようにＰＥ０Ｈから順に０１、０１、０２，０２、０３，０３，００，００であるので、リードするレジスタはｒ０１、ｒ０１、ｒ０２、ｒ０２、ｒ０３、ｒ０３、ｒ００、ｒ００となる。レジスタファイル１５は指定されたレジスタから読み出したデータを出力する。
【００９３】
また、同時にリード用レジスタオフセット値に、レジスタオフセット変化量レジスタ８０ａの値を加算し、レジスタオフセットモジュロ値レジスタ８１に従ってモジュロ演算を行い、結果をレジスタオフセット値保持部２８に格納する。このときのリード用レジスタオフセット値の変化を図２９（ｆ）と図２９（ｇ）に示す。ＮＰＡはネットワークパタンレジスタを指すオペランドである。オペランドのＮＰＡは、セレクト処理部のネットワークパタンレジスタによって、ネットワークによるデータの選択動作および、レジスタオフセット選択信号セレクト動作が行われることを示している。オペランドの０ｘ２はネットワークパタン値変化量を指し、データのセレクトと同時に、ＮＰＡの値をすべてのプロセッシングエレメントで２減算する。このときのネットワークパタン値の変化を図２９（ｆ）と図２９（ｇ）に示す。
【００９４】
ネットワークによるデータ選択の結果出力されたデータはｒ０をレジスタ番号変換部２０ｂで変換されたレジスタに格納する。ライト用のレジスタオフセット値は図２９（ｆ）に示すようにＰＥ０Ｈから順に０３、０３、００、００、０１、０１、０２，０２であるので、リードするレジスタはｒ０３、ｒ０３、ｒ００、ｒ００、ｒ０１、ｒ０１、ｒ０２、ｒ０２となる。レジスタファイル１５は指定されたレジスタにデータを書き込む。
【００９５】
また、同時にライト用レジスタオフセット値に、レジスタオフセット変化量レジスタ８０ｂの値を減算し、レジスタオフセットモジュロ値レジスタ８１に従ってモジュロ演算を行い、結果をレジスタオフセット値保持部２８に格納する。このときのライト用レジスタオフセット値の変化を図２９（ｆ）と図２９（ｇ）に示す。
ネットワーク３０ｂは、レジスタオフセット更新動作や、ネットワークパタン値の更新動作を行う必要がないので、ｎｓｅｌ．ｂ命令を発行する。このｎｓｅｌ．ｂ命令の実際の記述の一例を以下に示す。
【００９６】
ｎｓｅｌ．ｂ  ｒ０，ｒ０，ＮＰＢ
ｎｓｅｌ．ｂ命令は第一実施形態で説明したｎｓｅｌ．ａ命令と同じ動作である。
図４９に転置を行うための命令シーケンスを示す。図４９（ａ）のようにｎｔｒｐｄ．ａ命令をネットワーク３０ａで発行し、ネットワーク３０ｂではｎｓｅｌ．ｂ命令を発行することにより、図２９（ａ）から（ｃ）に変化する転置演算を行うことができる。
【００９７】
次に、図２９（ｃ）から（ｅ）に変化する転置演算では、先のｎｔｒｐｄ．ａ命令により、レジスタオフセット値およびネットワークパタン値が更新されているので、図４９（ｂ）のようにｎｓｅｌ．ａ命令を発行することにより転置動作が行える。このとき、ネットワーク３０ｂは使用しないので、命令は発行しなくてよい。このｎｓｅｌ．ａ命令の実際の記述の一例を以下に示す。
【００９８】
ｎｓｅｌ．ａ  ｒ０，ｒ０，ＮＰＡ
このようにして、図４９（ａ）および（ｂ）の命令シーケンスを用いることにより、図２９（ａ）から（ｅ）に変化するデータの転置を行うことができる。
引き続き、転置動作を行う場合には、先に述べた転置手順を逆に行うことにより、レジスタオフセット値やネットワークパタン値を変更することなく、連続して転置動作を行うことができる。
【００９９】
この際には、ｎｔｒｐｉ．ａ命令をネットワークＡで発行する。ｎｔｒｐｉ．ａ命令は、ｎｔｒｐｄ．ａ命令とは、リード用レジスタオフセット・ライト用レジスタオフセット・ネットワークパタン値更新動作において減算でなく、加算を用いること以外は全く同じ動作である。
図４９（ｃ）のように、ネットワーク３０ａでｎｔｒｐｉ．ａ命令を発行することにより、図２９（ｅ）から（ｃ）への転置演算を行うことができる。次に、図４９（ｄ）のように、ネットワーク３０ａでｎｓｅｌ．ａ命令、ネットワーク３０ｂでｎｓｅｌ．ｂ命令を発行することにより、図２９（ｃ）から（ａ）の転置演算を行うことができ、結果として転置演算が完了する。連続して転置演算を行う場合には、ネットワークパタン値やレジスタオフセットの値を書き換えることなく、転置演算を逆に行う命令を発行することにより、続けて転置演算を行うことができる。
【０１００】
以上のように本実施形態によれば、並列処理プロセッサにおいて転置の演算を行うことができ、ＩＤＣＴをはじめとする転置演算が必要な場合の処理を効率的に行うことが出来る。
なお、使用するレジスタについては、ｒ４〜ｒ７で転置することや、ｒ０、ｒ２、ｒ４、ｒ６の間で転置するような演算も可能である。
【０１０１】
また、本実施形態では、説明の簡単のため、１６ビットデータの４ｘ４転置の手順について説明したが、８ビットデータや８ｘ８の転置などについても同様に行うことができる。図３０から図３３は、８ｘ８のデータ転置の説明図である。図３０（ａ）が初期状態を示す図である。図３０（ｄ）に示す値を用い、図３０（ｂ）で示すようにデータをリードし、図３０（ｃ）に示すようにライトする。次に、図３１（ｇ）に示す値を用い、図３１（ｅ）で示すようにデータをリードし、図３１（ｆ）に示すようにライトする。更に、図３２（ｊ）に示す値を用い、図３２（ｈ）で示すようにデータをリードし、図３２（ｉ）に示すようにライトする。最後に図３３（ｍ）に示す値を用い、図３３（ｋ）で示すようにデータをリードし、図３３（ｌ）に示すようにライトする。この書き込みの結果、図３０（ａ）のデータの行と列が転置される。図５０に８ｘ８の転置を行うための命令シーケンスを示す。
【０１０２】
（第六実施形態）
第三実施形態、及び第四実施形態では、ネットワークパタン値が０ｘ００より小さい場合に０ｘ００に飽和し、０ｘ０ｆより大きい場合には０ｘ０ｆに飽和していた。本実施形態は飽和を予め設定されている最大値、最小値で決める場合の実施形態である。
図３４は本発明の第六実施形態に関するセレクト信号変換部６０の構成図である。最大値及び最小値は、制御レジスタに保持されているものとする。図３４と図８の差異は、飽和演算部６３に最大値及び最小値が入力される点である。
【０１０３】
飽和演算部６３は、ＰＥモード信号が８ＰＥモードの場合、ネットワークパタン値が入力された最小値より小さい場合は最小値の下位４ビットを、入力された最大値より大きい場合は最大値の下位４ビットをセレクト信号とし、いずれでもない場合はネットワークパタン値の下位４ビットをセレクト信号とする。そして、レジスタオフセット選択信号は、この変換後の値の５ビット目とする。最大値及び最小値が０ｘ００から０ｘ０ｆの範囲内の場合には、レジスタオフセット選択信号は“０”になる。
【０１０４】
ＰＥモード信号が４ＰＥモードの場合、ＰＥ０〜３ではネットワークパタン値が入力された最小値より小さい場合は最小値の下位３ビットを、入力された最大値より大きい場合は最大値の下位３ビットをセレクト信号とし、いずれでもない場合はネットワークパタン値の下位３ビットをセレクト信号とする。レジスタオフセット選択信号は、変換後のネットワークパタン値の４ビット目とする。最大値及び最小値が０ｘ００から０ｘ０７の範囲内の場合には、レジスタオフセット選択信号は“０”になる。セレクト信号の４ビット目は常に“０”にセットする。ＰＥ４〜７ではネットワークパタン値が入力された最小値より小さい場合は最小値の下位３ビットを、入力された最大値より大きい場合は最大値の下位３ビットをセレクト信号とし、いずれでもない場合はネットワークパタン値の下位３ビットをセレクト信号とする。レジスタオフセット選択信号は、変換後のネットワークパタン値の４ビット目とする。最大値及び最小値が０ｘ００から０ｘ０７の範囲内の場合には、レジスタオフセット選択信号は“０”になる。セレクト信号の４ビット目は常に“１”にセットする。
【０１０５】
続いて、飽和演算部６３の動作を図３５に示す。ＰＥモード信号が８ＰＥモードの場合の動作概要を図３５（ａ）〜（ｃ）に示す。図中のＰＥ０からＰＥ７はプロセッシングエレメントの番号を示し、ＨとＬはそれぞれのプロセッシングエレメントがハーフワード単位で画素値を格納していることを示す。図３５（ａ）、図３５（ｂ）及び図３５（ｃ）の第一段はネットワークパタン値を示す。第二段はセレクト信号出力を示し、第三段はレジスタオフセット選択信号出力を示す。最大値は０ｘ０ｃとし、最小値は０ｘ００とする。図３５（ａ）では、ネットワークパタン値が０ｘ００〜０ｘ０ｃの範囲にあると、セレクト信号はネットワークパタン値と同一になる。ＰＥ６Ｌ、ＰＥ７Ｈ及びＰＥ７Ｌでは、ネットワークパタン値が０ｘ０ｃより大きいので、セレクト信号は０ｘ０ｃとなる。レジスタオフセット選択信号はすべて“０”である。図３５（ｂ）では、ネットワークパタン値が０ｘ００〜０ｘ０ｃの範囲にあると、セレクト信号はネットワークパタン値と同一になる。ＰＥ５Ｌ、ＰＥ６Ｈ、ＰＥ６Ｌ、ＰＥ７Ｈ及びＰＥ７Ｌでは、ネットワークパタン値が０ｘ０ｃより大きいので、セレクト信号は０ｘ０ｃとなる。レジスタオフセット選択信号はすべて“０”である。図３５（ｃ）では、ネットワークパタン値が０ｘ００〜０ｘ０ｃの範囲にある場合には、図３５（ａ）と同様であり、ＰＥ０Ｈ、ＰＥ０Ｌではネットワークパタン値が０ｘ００より小さいので、セレクト信号は０ｘ００となる。ＰＥ７Ｌでは、ネットワークパタン値が０ｘ０ｃより大きいので、セレクト信号は０ｘ０ｃとなる。レジスタオフセット選択信号はすべて“０”である。
【０１０６】
続いて、ＰＥモード信号が４ＰＥモードの場合の動作概要を図３６（ａ）〜（ｃ）に示す。図中のＰＥ０からＰＥ７はプロセッシングエレメントの番号を示し、ＨとＬはそれぞれのプロセッシングエレメントがハーフワード単位で画素値を格納していることを示す。図３６（ａ）、図３６（ｂ）及び図３６（ｃ）の第一段はネットワークパタン値を示す。第二段はセレクト信号出力を示し、第三段はレジスタオフセット選択信号出力を示す。最大値は０ｘ０６とし、最小値は０ｘｆｆとする。図３６（ａ）では、ネットワークパタン値が０ｘ００〜０ｘ０６の範囲にあると、ＰＥ０〜３ではセレクト信号はネットワークパタン値と同一になる。ＰＥ３Ｌではネットワークパタン値が０ｘ０６より大きいので、セレクト信号は０ｘ０６となる。レジスタオフセット選択信号はすべて“０”である。ＰＥ４〜７ではセレクト信号はネットワークパタン値の下位３ビットに８を加算した値となる。よって、ＰＥ７Ｌではネットワークパタン値が０ｘ０６より大きいので、セレクト信号は０ｘ０ｅとなる。レジスタオフセット選択信号はすべて“０”である。図３６（ｂ）では、ネットワークパタン値が０ｘ００〜０ｘ０６の範囲にあると、ＰＥ０〜３ではセレクト信号はネットワークパタン値と同一になる。ＰＥ３Ｈ及びＰＥ３Ｌでは、ネットワークパタン値が０ｘ０６より大きいので、セレクト信号は０ｘ０６となる。レジスタオフセット選択信号はすべて“０”である。ＰＥ４〜７については、ＰＥ７Ｈ及びＰＥ７Ｌでネットワークパタン値が０ｘ０６より大きいので、セレクト信号は０ｘ０ｅとなる。レジスタオフセット選択信号はすべて“０”である。図３６（ｃ）では、ネットワークパタン値が０ｘ００〜０ｘ０６の範囲にある場合には、図３６（ａ）と同様である。ＰＥ０〜３については、ＰＥ０Ｈでネットワークパタン値が０ｘｆｆより小さいので、セレクト信号は０ｘ０７となる。レジスタオフセット選択信号はＰＥ０Ｈ及びＰＥ０Ｌで“１”となる。ＰＥ４〜７では、ＰＥ４Ｈでネットワークパタン値が０ｘｆｆより小さく、セレクト信号の４ビット目には“１”が入るので、セレクト信号は０ｘ０ｅとなる。レジスタオフセット選択信号はＰＥ４Ｈ及びＰＥ４Ｌで“１”となる。
【０１０７】
以上のように本実施形態によれば、画面の端がＰＥ０Ｈ又はＰＥ７Ｌではない場合でも、画面端のデータの繰り返し処理が行えるようになる。また、様々な大きさの画像に対してＦＩＲフィルタ処理などを施すことができるようになり、適用範囲を拡大することができる。
（第七実施形態）
本実施形態は、画面の端において、データを鏡のように折り返す場合の実施形態である。
【０１０８】
図３４は本発明の第七実施形態に関するセレクト信号変換部６０の構成図である。本実施形態では、飽和演算部６３の動作が、第六実施形態とは異なる。
飽和演算部６３は、ＰＥモード信号が８ＰＥモードの場合、ネットワークパタン値が入力された最小値より小さい場合は最小値−（最小値−ネットワークパタン値）＋１の値をセレクト信号とする。ネットワークパタン値が入力された最大値より大きい場合は最大値−（ネットワークパタン値−最大値）＋１の値をセレクト信号とする。
【０１０９】
このときの、画面の端におけるデータの配置を図３７に、飽和演算部６３の動作を図３８に示す。図中のＰＥ０からＰＥ７はプロセッシングエレメントの番号を示し、ＨとＬはそれぞれのプロセッシングエレメントがハーフワード単位で画素値を格納していることを示す。図３８の第一段はネットワークパタン値を示す。第二段はセレクト値出力を示し、第三段はレジスタオフセット選択信号出力を示す。最大値は０ｘ０ｆとし、最小値は０ｘｆ０とする。ネットワークパタン値が０ｘ０ｆより大きいと、セレクト信号は最大値−（ネットワークパタン値−最大値）＋１で求まる値になる。よって、ＰＥ６Ｈではセレクト値出力が０ｆとなる。ＰＥ６Ｌ及びＰＥ７についても同様である。
【０１１０】
ＰＥモード信号が４ＰＥモードの場合も同様である。つまり、ＰＥ０〜３ではネットワークパタン値が０ｘ０ｆより大きいと、セレクト信号は“最大値−（ネットワークパタン値−最大値）＋１”となる。ＰＥ４〜７ではセレクト信号はネットワークパタン値の下位３ビットに８を加算した値となる。ネットワークパタン値が０ｘｆ０より小さい場合は、ＰＥ０〜３については、セレクト信号は“最小値−（最小値−ネットワークパタン値）＋１”となる。ＰＥ４〜７では、ネットワークパタン値が０ｘｆ０より小さい場合は、セレクト信号は“最小値−（最小値−ネットワークパタン値）＋１”に８を加算した値となる。
【０１１１】
以上のように本実施形態によれば、画面の端において、データを鏡のように折り返す処理が行え、ＦＩＲフィルタ演算などを行う際のさらなる高画質化が可能になる。
なお、本実施形態では、折り返す際に端のデータを繰り返す偶対称の折り返しとしたが、端のデータを繰り返さない奇対称の折り返しとしてもよい。
（第八実施形態）
図３９は本発明の第八実施形態に関するセレクト処理部５０の構成図である。図３９と図６の差異は、セレクト信号変換部９０である。
【０１１２】
セレクト信号変換部９０は、ネットワークパタン値から１６ｔｏ１セレクタ５１のセレクト信号のみを生成する。
図４０は本発明の第八実施形態に関するセレクト信号変換部９０の構成図である。
モジュロ演算部９１及び飽和演算部９２は、ＰＥモード信号に従い、ネットワークパタン値からセレクト信号を生成する。レジスタオフセット選択信号を出力しないこと以外は、第一実施形態と同じである。
【０１１３】
セレクタＡ９３は、動作モード信号によりモジュロ演算部９１又は飽和演算部９２のいずれかの出力を選択し、セレクト信号とする。
図４１は本発明の第八実施形態のレジスタ番号変換部２０とレジスタオフセットパタンレジスタの接続を示す図である。本実施形態では並列演算プロセッサは更に、レジスタオフセットパタンレジスタ１０２と、ローテート演算部１０３とを含む。
【０１１４】
レジスタオフセットパタンレジスタ１０２は、各プロセッシングエレメントのレジスタ番号変換部２０がレジスタオフセットを使用するかどうかを示す値を格納したレジスタである。つまり、レジスタオフセットパタンレジスタ１０２の各ビットが各プロセッシングエレメントのレジスタ番号変換部２０のレジスタオフセット選択信号となる。レジスタオフセットパタンレジスタ１０２は、プログラムによって書き込むことが可能であり、必要に応じて、ローテート演算部１０３で演算された結果が書き込まれる。
【０１１５】
ローテート演算部１０３は、変化量、ＰＥモード信号、ローテートモード信号が入力され、これらによって、動作を変更する。
ローテートモード信号は、ローテート又は反転ローテートを指定する。ローテートモードでは、ＰＥモード信号が８ＰＥモードであるとき、図４２（ａ）のように、ＭＳＢからＬＳＢ又は、ＬＳＢからＭＳＢに、変化量で指定されたビット数だけ、ローテート演算が行われ、結果がレジスタオフセットパタンレジスタ１０２に書き込まれる。ＰＥモード信号が４ＰＥモードであるとき、図４２（ｂ）のように、１５ビット目と８ビット目の間及び７ビット目と０ビット目の間で、変化量で指定されたビット数だけ、ローテート演算が行われ、結果がレジスタオフセットパタンレジスタ１０２に書き込まれる。
【０１１６】
反転ローテートモードでは、ＰＥモード信号が８ＰＥモードであるとき、図４２（ｃ）のように、ＭＳＢからＬＳＢ又は、ＬＳＢからＭＳＢに、変化量で指定されたビット数だけ、ローテート演算が行われ、ローテートされたビットが反転されて、結果がレジスタオフセットパタンレジスタ１０２に書き込まれる。ＰＥモード信号が４ＰＥモードであるとき、図４２（ｄ）のように、１５ビット目と８ビット目の間及び７ビット目と０ビット目の間で、変化量で指定されたビット数だけ、ローテート演算が行われ、ローテートされたビットが反転されて、結果がレジスタオフセットパタンレジスタ１０２に書き込まれる。
【０１１７】
ここで変化量は、ネットワークシフト命令、又はネットワーク転置命令のネットワークパタン値の移動量と同じである。
次に、第一実施形態に示したｎｓｅｌ．ａ命令が本実施形態においても、実現可能であることを示す。図４３に、第一実施形態で示した図１８と同じ例を示す。ＰＥ動作モードを８ＰＥモード、動作モードをモジュロモードとし、ローテートモードはローテートとする。図４３では、レジスタオフセットパタンレジスタ１０２に０ｘ００００を設定することにより、同様の動作となる。図４４では、レジスタオフセットパタンレジスタ１０２に０ｘ５５５５を設定することにより、“１”となるプロセッシングエレメントのみが、レジスタオフセットを使用したレジスタｒ１から読み出すことになり、同様の動作となる。
【０１１８】
次に、第二実施形態に示したｎｓｆｔｉ．ａ命令が本実施形態においても、実現可能であることを示す。図４５に、第二実施形態で示した図２２と同じ例を示す。ＰＥ動作モードを８ＰＥモード、動作モードをモジュロモード、ローテートモードを反転ローテートモードとする。図４５（ａ）では、レジスタオフセットパタンレジスタ１０２に０ｘ００００を設定することにより、同様の動作となる。図４５（ｂ）では、図４５（ａ）でのｎｓｆｔｉ．ａ命令により、レジスタオフセットパタンレジスタ１０２が、シフト量０ｘ０１だけ、反転ローテートされることにより、レジスタオフセットパタンレジスタ１０２の値は０ｘ８０００となり、ＰＥ０Ｈがレジスタオフセットを使用したレジスタｒ２からデータを読み出すことになるため、図２２（ｂ）と同じ動作となる。図４５（ｃ）では、図４５（ｂ）でのｎｓｆｔｉ．ａ命令により、レジスタオフセットパタンレジスタ１０２が、シフト量０ｘ０１だけ、反転ローテートされることにより、レジスタオフセットパタンレジスタ１０２の値は０ｘｃ０００となり、ＰＥ０Ｈ及びＰＥ０Ｌがレジスタオフセットを使用したレジスタｒ２からデータを読み出すことになるため、図２２（ｃ）と同じ動作となる。
【０１１９】
次に、第五実施形態に示したｎｔｒｐｄ．ａ命令が本実施形態においても、実現可能であることを示す。図４６に、第五実施形態で示した図２９と同じ例を示す。ＰＥ動作モードを４ＰＥモード、動作モードをモジュロモード、ローテートモードをローテートモードとする。図４６（ｆ）では、レジスタオフセットパタンレジスタ１０２に０ｘｆｆｆｆを設定することにより、すべてのプロセッシングエレメントでレジスタオフセットを使用することになり、同様の動作となる。図４６（ｇ）では、図４６（ｆ）でのｎｔｒｐｄ．ａ命令により、レジスタオフセットパタンレジスタ１０２が、シフト量０ｘ０２だけ、ローテートされることにより、レジスタオフセットパタンレジスタ１０２の値は変化せず、０ｘｆｆｆｆとなり、すべてのプロセッシングエレメントでレジスタオフセットを使用することになり、同様の動作となる。
【０１２０】
以上のように本実施形態によれば、第一実施形態で必要であったレジスタオフセット選択信号の信号線の数が大幅に減少し、回路規模が削減される。また、プロセッシングエレメント間をつなぐ信号線が削減されるために、ＬＳＩ設計時の機能ブロックのレイアウトが容易になる。
（その他の変形例）
以上、本発明に係る並列演算プロセッサについて、実施の形態に基づいて説明したが、本発明は上記の実施の形態に限られないことは勿論である。
【０１２１】
（１）上記の実施形態では、プロセッシングエレメントの数は８、レジスタの数は１６、レジスタのビット幅は１６ビット、ネットワークは８ビット単位の移動としたが、これらの数やビット幅に限定されるものではなく、用途に応じて自由に選択してもよい。
（２）上記の実施形態では、ネットワークパタン値はネットワークパタンレジスタを使用したが、ネットワークパタンレジスタに相当するレジスタを複数設けてもよいし、汎用レジスタをネットワークパタンレジスタとして使用してもよい。
【０１２２】
（３）上記の実施形態では、ＰＥモードや動作モードはそれぞれ制御レジスタであるＰＥモードレジスタ８２、動作モードレジスタ８３によって設定されることとしたが、命令によってこれらのモードを切り替えてもよい。
（４）上記の実施形態では、ＰＥモードは８ＰＥモードと４ＰＥモードの切り替えとしたが、２ＰＥモードや１ＰＥモードを設けてもよい。
【０１２３】
（５）上記の実施形態では、プロセッシングエレメントはおのおの独立した演算ユニットを保持しているが、長いビット長の演算器を分割してＳＩＭＤ演算を行う場合には、分割された各演算器をプロセッシングエレメントとしてもよい。
（６）上記の実施形態では、ネットワークパタン値の変化量をオペランド中に指定しているが、汎用レジスタや専用レジスタによって指定してもよい。
【０１２４】
（７）上記の実施形態では、並列演算プロセッサを用いたが、本発明は上記発明を実現するための方法であっても良い。
（８）上記の実施形態では、並列演算プロセッサを用いたが、本発明は並列演算プロセッサを搭載した信号処理装置であっても良い。信号処理装置とは例えば、画像装置、通信装置及び音声装置である。
【産業上の利用可能性】
【０１２５】
本発明に係る並列演算プロセッサは、上記実施形態に内部構成が開示されており、この内部構成に基づき量産することが可能なので、資質において工業上利用することができる。このことから本発明に係る録画再生装置は、産業上の利用可能性を有する。また、本発明に係る並列演算プロセッサは、画像処理に用いるプロセッサとして有用である。また、画像処理だけでなく、通信処理など大量のデータ処理を行う他の用途にも応用できる。
【図面の簡単な説明】
【０１２６】
【図１】本発明に係る並列演算プロセッサの全体構成図
【図２】プロセッシングエレメントＰＥ０の内部の構成図
【図３】演算器ユニット４０の構成の一例を示す図
【図４】レジスタ番号変換部２０の構成を示す図
【図５】プロセッシングエレメント間を接続するネットワーク３０ａの構成図
【図６】図５のセレクト処理部５０の構成を具体的に示したネットワーク３０aの一部を示す構成図
【図７】ネットワーク３０ａのセレクト処理部５０の構成図
【図８】セレクト信号変換部６０の構成図
【図９】ＰＥモード信号が８ＰＥモードの場合のレジスタオフセット選択演算部の動作概要図
【図１０】ＰＥモード信号が４ＰＥモードの場合のレジスタオフセット選択演算部の動作概要図
【図１１】ＰＥモード信号が８ＰＥモードの場合のモジュロ演算部の動作概要図
【図１２】ＰＥモード信号が４ＰＥモードの場合のモジュロ演算部の動作概要図
【図１３】ＰＥモード信号が８ＰＥモードの場合の飽和演算部の動作概要図
【図１４】ＰＥモード信号が４ＰＥモードの場合の飽和演算部の動作概要図
【図１５】図８の回路図
【図１６】セレクト処理部５０とレジスタ番号変換部２０の接続を示す構成図
【図１７】命令デコーダ１１とプロセッシングエレメントＰＥ０Ｈの構成図
【図１８】ネットワークセレクト命令の動作説明図
【図１９】ネットワークセレクト命令の動作説明図
【図２０】ネットワークシフト命令（ｎｓｆｔｉ．ａ命令）の動作説明図
【図２１】ＦＩＲフィルタの演算方法についての説明図
【図２２】ネットワークシフト命令（ｎｓｆｔｉ．ａ命令）の動作説明図
【図２３】ネットワークシフト命令（ｎｓｆｔｄ．ｂ命令）の動作説明図
【図２４】画面の端におけるＦＩＲフィルタの演算方法についての説明図
【図２５】ネットワークシフト命令（ｎｓｆｔｉ．ａ命令）の動作説明図
【図２６】１６ビット動作モードの場合のセレクト処理部５０ａの構成図を示す図
【図２７】１６ビット動作モードでの飽和モードの動作説明図
【図２８】ネットワークパタン値に即値を用いた場合の１６ビット動作モードの動作説明図
【図２９】４ｘ４のデータ転置の説明図
【図３０】８ｘ８のデータ転置の説明図
【図３１】８ｘ８のデータ転置の説明図
【図３２】８ｘ８のデータ転置の説明図
【図３３】８ｘ８のデータ転置の説明図
【図３４】セレクト信号変換部の構成図
【図３５】ＰＥモード信号が８ＰＥモードの場合の飽和演算部の動作説明図
【図３６】ＰＥモード信号が４ＰＥモードの場合の飽和演算部の動作説明図
【図３７】画面の端におけるデータの配置を示す図
【図３８】ＰＥモード信号が８ＰＥモードの場合の飽和演算部６３の動作説明図
【図３９】セレクト処理部の構成図
【図４０】セレクト信号変換部の構成図
【図４１】レジスタ番号変換部とレジスタオフセットパタンレジスタの接続図
【図４２】ローテート演算部の動作説明図
【図４３】ネットワークセレクト命令の動作説明図
【図４４】ネットワークセレクト命令の動作説明図
【図４５】ネットワークシフト命令の動作説明図
【図４６】データ転置の動作説明図
【図４７】命令シーケンス図
【図４８】ＦＩＲ演算を行うためのデータを供給する命令シーケンス図
【図４９】４ｘ４の転置演算を行うための命令シーケンス図
【図５０】８ｘ８の転置演算を行うための命令シーケンス図
【符号の説明】
【０１２７】
１０    命令メモリ
１１    命令デコーダ
１２    全体制御部
１３    データメモリ
１４    プロセッシングエレメント群
１５    レジスタファイル
１６    論理和回路
２０    レジスタ番号変換部
２０ａ  リード用のレジスタ番号変換部
２０ｂ  ライト用のレジスタ番号変換部
２１    レジスタオフセット値保持部
２２    加減算器
２３    モジュロ演算部
２４    加減算器
２５    セレクタ
３０    ネットワーク
４０    演算器ユニット
４１ａ  算術論理演算器（ＡＬＵ）
４１ｂ  算術論理演算器（ＡＬＵ）
４２    バレルシフタ
４３    乗算器
５０    セレクト処理部
５０ａ  セレクト処理部
５１    １６ｔｏ１セレクタ
５１ａ  １６ｔｏ１セレクタ
５２    セレクタ
５２ａ  セレクタ
５３    ネットワークパタンレジスタ
５３ａ  ネットワークパタンレジスタ
５４    加減算器
５４ａ  加減算器
６０    セレクト信号変換部
６０ａ  セレクト信号変換部
６１    レジスタオフセット選択演算部
６２    モジュロ演算部
６３    飽和演算部
６４    セレクタＡ
６５    セレクタＢ
６６    デマルチプレクサ
８０    レジスタオフセット変化量レジスタ
８１    レジスタオフセットモジュロ値レジスタ
８２    ＰＥモードレジスタ
８３    動作モードレジスタ
９０    セレクト信号変換部
９１    モジュロ演算部
９２    飽和演算部
９３    セレクタＡ
１０２  レジスタオフセットパタンレジスタ
１０３  ローテート演算部
【図１】
0004698242.tif 000002
【図２】
0004698242.tif 000003
【図３】
0004698242.tif 000004
【図４】
0004698242.tif 000005
【図５】
0004698242.tif 000006
【図６】
0004698242.tif 000007
【図７】
0004698242.tif 000008
【図８】
0004698242.tif 000009
【図９】
0004698242.tif 000010
【図１０】
0004698242.tif 000011
【図１１】
0004698242.tif 000012
【図１２】
0004698242.tif 000013
【図１３】
0004698242.tif 000014
【図１４】
0004698242.tif 000015
【図１５】
0004698242.tif 000016
【図１６】
0004698242.tif 000017
【図１７】
0004698242.tif 000018
【図１８】
0004698242.tif 000019
【図１９】
0004698242.tif 000020
【図２０】
0004698242.tif 000021
【図２１】
0004698242.tif 000022
【図２２】
0004698242.tif 000023
【図２３】
0004698242.tif 000024
【図２４】
0004698242.tif 000025
【図２５】
0004698242.tif 000026
【図２６】
0004698242.tif 000027
【図２７】
0004698242.tif 000028
【図２８】
0004698242.tif 000029
【図２９】
0004698242.tif 000030
【図３０】
0004698242.tif 000031
【図３１】
0004698242.tif 000032
【図３２】
0004698242.tif 000033
【図３３】
0004698242.tif 000034
【図３４】
0004698242.tif 000035
【図３５】
0004698242.tif 000036
【図３６】
0004698242.tif 000037
【図３７】
0004698242.tif 000038
【図３８】
0004698242.tif 000039
【図３９】
0004698242.tif 000040
【図４０】
0004698242.tif 000041
【図４１】
0004698242.tif 000042
【図４２】
0004698242.tif 000043
【図４３】
0004698242.tif 000044
【図４４】
0004698242.tif 000045
【図４５】
0004698242.tif 000046
【図４６】
0004698242.tif 000047
【図４７】
0004698242.tif 000048
【図４８】
0004698242.tif 000049
【図４９】
0004698242.tif 000050
【図５０】
0004698242.tif 000051