"制御プロセッサCP:ControlProcessorと複数の演算要素PE:ProcessingElementとを備えたSIMDSingleInstructionMultipleDataプロセッサであって、前記複数のPEが前記CPから発行された単一の命令を実行するSIMD動作を行うとともに、前記CPが前記複数のPEのそれぞれに対して相異なる命令又は相異なる命令及びデータを分配する命令データ分配動作を行い、前記複数のPEは、それぞれ、命令のソースオペランドが揃った後に前記命令データ分配動作において前記CPから送付された命令を実行するシストリック動作を行うことを特徴とするSIMDプロセッサ。前記CPは、前記命令データ分配動作において各PEに命令を分配するために、全PEに対する命令発行パスを逐次的かつ排他的に利用することを特徴とする、請求項1に記載のSIMDプロセッサ。前記シストリック動作において、前記複数のPEは、それぞれ、実行した演算命令の演算結果を他のPEに転送するとともに、他のPEから転送された演算結果を、前記命令データ分配動作において送付された命令に対するソースオペランドとすることを特徴とする、請求項1又は2に記載のSIMDプロセッサ。前記シストリック動作において、前記複数のPEは、それぞれ、前記CPから送付されたデータを、前記命令データ分配動作において送付された命令に対するソースオペランドとすることを特徴とする、請求項1又は2に記載のSIMDプロセッサ。前記シストリック動作において、前記複数のPEのそれぞれによるグローバルメモリアクセスを調停し、グローバルメモリに対するアクセスの排他性を保証する大域アクセス調停部をさらに備えていることを特徴とする、請求項1乃至4のいずれか1項に記載のSIMDプロセッサ。前記複数のPEは、それぞれ、前記命令データ分配動作中に動作を停止状態に保つためのフラグを格納するレジスタを備えていることを特徴とする、請求項1乃至5のいずれか1項に記載のSIMDプロセッサ。前記複数のPEは、それぞれ、前記SIMD動作と前記シストリック動作との間で動作を切り替えるためのフラグを格納するレジスタを備えていることを特徴とする、請求項1乃至6のいずれか1項に記載のSIMDプロセッサ。前記複数のPEは、それぞれ、前記CPから発行された命令を自身の命令バッファに格納するか否かを選択するセレクタを備えていることを特徴とする、請求項1乃至7のいずれか1項に記載のSIMDプロセッサ。プログラムをSIMDプロセッサに移植して並列処理により高速化するには、一般に、グローバルメモリ140上のデータをPEアレイに読み込む際に都合が良いように、グローバルメモリ140上のデータ配置を変更する必要がある。しかし、グローバルメモリ140上のデータ配置を変更するには、アルゴリズムを設計し直さねばならない場合があり、プログラム開発者にとって大きな負担となっている。このことは、SIMDプロセッサの利用を妨げる要因となっている。プログラム開発者によるグローバルメモリ140上のデータ配置の変更作業を容易にするために、図9に示したSIMDプロセッサのように各PE110にローカルにメモリブロックを持たせる代わりに、動的再構成型プロセッサのように多数のメモリブロックと多数のPEとの間を豊富な配線例えばクロスバーで接続する方法が考えられる。しかし、この方法によると、SIMDプロセッサに多数の配線回路を追加する必要があるため、SIMDプロセッサを実現するためのハードウェアが高価となる。以上のことから、安価なハードウェア構成に基づくSIMDプロセッサにプログラムを移植するためには、グローバルメモリ140上のデータ配置を変更する必要があり、グローバルメモリ140上のデータ配置を変更するには、アルゴリズムの変更が必要となるため、プログラム開発者にとって大きな負担となり、SIMDプロセッサの利用が妨げられる。そこで、グローバルメモリ上のデータ配置を変更することなく、SIMDプロセッサの演算要素を活用してプログラムを高速に処理できるようにすることが課題となる。本発明の目的は、かかる課題を解決するSIMDプロセッサを提供することにある。本発明の第1の視点に係るSIMDプロセッサは、制御プロセッサCP:ControlProcessorと複数の演算要素PE:ProcessingElementとを備えたSIMDSingleInstructionMultipleDataプロセッサであって、前記複数のPEが前記CPから発行された単一の命令を実行するSIMD動作を行うとともに、前記CPが前記複数のPEのそれぞれに対して相異なる命令又は相異なる命令及びデータを分配する命令データ分配動作を行い、前記複数のPEは、それぞれ、命令のソースオペランドが揃った後に前記命令データ分配動作において前記CPから送付された命令を実行するシストリック動作を行う。本発明に係るSIMDプロセッサによると、グローバルメモリ上のデータ配置を変更することなく、SIMDプロセッサの演算要素を活用してプログラムを高速に処理することができる。第1の展開形態によると、上記第1の視点に係るSIMDプロセッサが提供される。第2の展開形態によると、前記CPは、前記命令データ分配動作において各PEに命令を分配するために、全PEに対する命令発行パスを逐次的かつ排他的に利用する、SIMDプロセッサが提供される。第3の展開形態によると、、前記シストリック動作において、前記複数のPEは、それぞれ実行した演算命令の演算結果を他のPEに転送するとともに、他のPEから転送された演算結果を、前記命令データ分配動作において送付された命令に対するソースオペランドとする、SIMDプロセッサが提供される。第4の展開形態によると、前記シストリック動作において、前記複数のPEは、それぞれ、前記CPから送付されたデータを、前記命令データ分配動作において送付された命令に対するソースオペランドとする、SIMDプロセッサが提供される。第5の展開形態によると、前記シストリック動作において、前記複数のPEのそれぞれによるグローバルメモリアクセスを調停し、グローバルメモリに対するアクセスの排他性を保証する大域アクセス調停部GlobalAccessArbiterをさらに備えている、SIMDプロセッサが提供される。第6の展開形態によると、前記複数のPEは、それぞれ、前記命令データ分配動作中に動作を停止状態に保つためのフラグを格納するレジスタを備えている、SIMDプロセッサが提供される。第7の展開形態によると、前記複数のPEは、それぞれ、前記SIMD動作と前記シストリック動作との間で動作を切り替えるためのフラグを格納するレジスタを備えている、SIMDプロセッサが提供される。第8の展開形態によると、前記複数のPEは、それぞれ、前記CPから発行された命令を自身の命令バッファに格納するか否かを選択するセレクタを備えている、SIMDプロセッサが提供される。本発明によるSIMDプロセッサは、PEアレイ全体が制御プロセッサCPから発行される単一の命令を実行するSIMD動作を行うとともに、CPが命令発行パスを利用して、相異なる命令コードやデータを逐次的に各PEに送信する命令データ分配動作を行い、PEアレイ内の各PEは、CPからサイクル毎に放送されてくる命令ではなく、命令データ分配動作によりCPから送信された命令を、当該命令のソースオペランドが揃った時点で実行し、当該命令の実行結果を指定された他のPEのレジスタ資源に書き込むように指定するシストリック動作を行う。また、シストリック動作中に、各PEは、命令のオペランドが他のPE又はCPからの送付データによって書き込まれることで揃った後に、命令の実行を開始し、演算命令の場合には演算結果を他のPEに送付し、メモリアクセス命令の場合にはグローバルメモリにアクセスする。次に、本発明に係るSIMDプロセッサによってもたらされる効果について説明する。従来のSIMDプロセッサにおいては、全PEが同一の命令を実行するため、メモリアクセス命令が全PEで一斉に発生してしまう。したがって、かかるSIMDプロセッサの性能を引き出すには、各PEがアクセス可能なメモリ空間を、各PEにローカルな空間に限定する必要があった。しかし、本発明のSIMDプロセッサによると、命令データ分配動作により、各PEに互いに異なる命令を発行することができる。したがって、PE間でメモリアクセス命令を実行するタイミングをずらしたり、特定のPEにのみメモリアクセス命令を行わせたりすることができる。このとき、メモリ上でのデータ配置を元のままとし、PEがアクセス可能なメモリ空間をグローバルなメモリ空間に広げたとしても、単一のハードウェア資源であるグローバルなメモリ空間の利用に際して多数のPEが競合する頻度を低下させることができ、プロセッサの演算資源による処理性能を向上させることができる。ゆえに、本発明に係るSIMDプロセッサによると、プログラムのメモリ上におけるデータ配置を変更することなく、SIMDプロセッサが有する演算資源を利用した処理の高速化が可能となる第1の効果。また、CPがPEアレイに対して命令データ分配動作を行うことで、1イタレーション分の処理をデータフローグラフとして表現したときの各演算ノードに相当する個々の演算命令及び関連する定数データを各PEに分配し、データフローグラフにおける各演算ノードを各PEに割当てることができる。さらに、CPがPEアレイにシストリック動作モードで実行を開始させるために、起動データを1つ以上のPEに対して繰り返し発行することで、異なるイタレーションを次々と重畳した形で起動し、PEアレイに処理させることができる。したがって、本発明に係るSIMDプロセッサによると、プログラムのループ部分のうちのイタレーション間でデータ依存関係がない部分並列ループ部分に対する処理を、グローバルメモリ上のデータ配置を変更することなく、PEアレイを利用してパイプライン的に処理することで、高速化することができる第2の効果。上記の命令データ分配動作を実現するには、従来のSIMDプロセッサに設けられた全PEへの命令発行パスの回路資源、並びに、各PEからCP及びCPから各PEへのデータ配線回路資源をそのまま利用することができる。また、PE毎からグローバルメモリ空間へのアクセスを行うための結線として、従来のSIMDプロセッサに設けられたCPとPEアレイ間でスカラーデータをやり取りするための配線回路資源をそのまま利用することができる。さらに、データフローグラフ上の演算ノード同士が互いにデータを送受信する動作を行うPE間において、データを送受信するためのPE間結線として、従来のSIMDプロセッサに設けられた隣接PE間の配線資源をそのまま利用することができる。したがって、本発明に係るSIMDプロセッサによると、従来のSIMDプロセッサに少量の回路を追加するだけで、上記第1の効果及び第2の効果が得られる第3の効果。実施形態次に、実施形態に係るSIMDプロセッサについて、図面を参照して説明する。本実施形態のSIMDプロセッサについて説明する前に、比較のために、従来のSIMDプロセッサの構成を示す。図10は、従来のSIMDプロセッサに含まれるPEアレイ中の1つのPE110の構成を示す図である。図10を参照すると、PE110は、CP130図9から発行された命令を格納するための命令バッファinstb111、汎用レジスタGeneralPurposeRegisterr0~r7、演算器ALU:ArithmeticLogicUnit112、PE間結合網への出入り口Left/RightInterPEConnection、PE毎のローカルメモリLocalMemory120を有する。すべてのPE110は、サイクル毎にCP130から発行された単一の命令を一斉に実行する。図1は、本実施形態に係るSIMDプロセッサに含まれるPEアレイ中の1PE10の構成を示す。図1を参照すると、PE10は、命令バッファinstb11、汎用レジスタGeneralPurposeRegisterr0~r15、演算器ALU:ArithmeticLogicUnit12、PE間結合網への出入り口Left/RightInterPEConnection、PE毎のローカルメモリLocalMemory20を有する。PE10は、さらに、レジスタstop,mode、及び、セレクタselを有する。図1において、図10に対して追加された構成要素太線部分、すなわち、レジスタstop,mode,セレクタsel,レジスタcm,sx,syのそれぞれについて説明する。レジスタstopは、命令データ分配動作中にPE10の動作を停止状態に保つための制御レジスタである。レジスタmodeは、シストリック動作と従来のSIMD動作とを切り替えるための1ビットの動作モード選択レジスタである。セレクタselは、CPから発行された命令を命令バッファinstb11に格納するか否かを選択するセレクタである。レジスタcm,sx,syは、シストリック動作中に、当該レジスタへのライトが発生する度に、所定カウンターレジスタがデクリメントされるデータ待合せ機能を有する汎用レジスタ待合せレジスタ群である。図2は、本実施形態に係るSIMDプロセッサに含まれる制御プロセッサCP30の構成を概略的に示す図である。図2を参照すると、CP30は、従来のSIMDプロセッサにおけるCP130と同様に、自ら演算を行うためのデータパスを有し、命令データキャッシュInstruction/DataCache31、及びメモリアクセス調整部であるアービタArbiter33を介してグローバルメモリGlobalMemory40に接続されている。CP30は、自らのデータパスで実行すべき命令及びPEアレイ全体に放送すべき命令を、グローバルメモリ40から読み出して発行し、CP30上の演算用データ及びPE10のローカルメモリ20との間で送受信されるデータを、グローバルメモリ40から読み出したり、グローバルメモリ40に書き込んだりする。図3は、本実施形態に係るSIMDプロセッサにおける命令フォーマットを一例として示す図である。本実施形態のSIMDプロセッサにおけるCP30は、従来のSIMDプロセッサにおけるCP130とは異なり、命令若しくはデータ又はこれらの両方を特定のPEに同時に送付し、特定の1つのPE又は指定された複数のPEに実行の開始を指定することができるように、図3に示すような命令フォーマットから成る命令セットを用いる。図3を参照すると、CP30の命令フォーマットは、命令のヘッダheader部のビットパタンに応じて、異なるフォーマットを有する。header部のビットパタンが00である場合には、CP30上で動作する命令であることを示す。header部のビットパタンが01である場合には、SIMDモードで動作する場合におけるPEアレイの動作を指定するPE命令であることを示す。header部のビットパタンが10である場合には、命令Aは特定PE10に分配すべきものであることを示し、後続の命令として、必ずヘッダ部のビットパタンが11の命令Bが続き、命令BのTargetPEID部が示すPE番号のPEの命令バッファinstb11に命令Aを書き込み、かつ、命令BのTargetregID部が示すPE番号のPEのレジスタに命令Bのdata部を書き込む動作を指定する。header部のビットパタンが11である場合には、その命令のTargetPEID部が示すPE番号のPEのTargetregID部が示す番号のレジスタにdata部の値を書き込む動作、又は、TargetregID部がcmの場合は、命令バッファinstb11内に格納中の命令がソースオペランドとしてcmを持つPE10のレジスタcmにdata部の値を書き込む動作を指定する。図4は、本実施形態に係るSIMDプロセッサにおけるPEアレイの全体構成を示す。図4を参照すると、太線の部分は、従来のSIMDプロセッサに対して、個々のPE10以外に、本発明で新たに付け加えた回路要素である大域アクセス調停部GlobalAccessArbiter50を示す。大域アクセス調停部50は、全PE20のローカルメモリブロックを、まとめて多バンクのキャッシュメモリ本体として利用できるように管理するモジュールであり、シストリック動作モード中に、多数のPE10から同時にメモリアクセスが発生した場合のメモリアクセスを調停する。なお、大域アクセス調停部50の実装方式として、次の方式が考えられる。すなわち、2以上のPEから同時にメモリアクセス要求があると、PEアレイ全体の動作を一時停止させ、各PEのメモリアクセス要求に一つずつ順に応えてから、PEアレイの動作を再開させるという、最も性能が低いもののハードウェア実現コストが安い実装方式が考えられる。一方、全てのPEのローカルメモリブロックをクロスバー機構で接続し、できるだけ短い遅延で多数のメモリアクセス要求に応えるという、最も性能が高いもののハードウェア実現コストが高い実装方式が考えられる。任意のプログラムコードを重畳実行させた場合における最大メモリアクセス遅延を静的に定めることができれば、いずれの実装方式を採用してもよい。次に、実施形態のSIMDプロセッサ全体の動作について説明する。まず、CP30は、サイクル毎、プログラムカウンタPC:ProgramCounter35の値が指すアドレスの命令とその次のアドレスの命令の2つの命令を同時に読み出す。ただし、PC35のカウント値がサイクル毎に1されるのか又は2されるのか、及び、読み出された命令をどのような形で処理するのかについては、読み出された先頭命令Aのheader部の値に応じて以下のように決定する。読み出された先頭命令Aのheader部の値が00である場合には、CP命令であることを表し、次サイクルまでにPC35のカウント値は1され、命令AはCP30の処理部で実行される。読み出された先頭命令Aのheader部の値が01である場合には、PE命令であることを表し、PC35のカウント値は1され、次サイクルまでに命令AがPEアレイに送られ、次々サイクルに全PE10は命令Aを実行する。読み出された先頭命令Aのheader部の値が10である場合には、命令データ分配動作の指定であることを表し、PC35のカウント値は2され、次サイクルまでに、全PE10のレジスタstopをONにセットし、後続命令BのtargetPEID部が指定するPE番号のPEの命令バッファinstb11に、命令Aのheader部に命令Aのcounter部の2ビットをコピーした上で命令Aを書き込む。同様に、次サイクルまでに、同PEに含まれる、命令BのTargetregID部が指定するレジスタに、命令Bのdata部の値を書き込む。最後に、読み出された先頭命令Aのheader部の値が01である場合には、シストリック動作の指定であることを表し、PC35のカウント値は1され、次サイクルまでに、全PEのレジスタstop及びレジスタmodeをそれぞれOFF及びONにセットし、命令AのtargetPEID部が指定するPE番号のPEに含まれる、命令AのTargetregID部が指定するレジスタに、命令Aのdata部の値を書き込む。図3を参照すると、header部の値が10の命令は、counter部を含む。counter部には、当該命令が持つソースオペランドのうち、待合せレジスタの数に等しいか又はそれよりも大きい値が設定されているものとする。PE側では、レジスタmodeがONの期間中において、命令バッファinstb11に格納されている命令Cのソースオペランドに指定されたいずれかの待合せレジスタに対し、書き込み動作が起きるたびに、命令Cのcounter部が1だけデクリメントされる。そして、counter部がゼロにデクリメントされたサイクルに命令Cの実行を開始する。命令Cの実行は1サイクルで終了し、その実行結果を、命令CのPEID部が指定するPE番号のPEに含まれる、命令CのDestinationregID部が指定するレジスタに書き込むために、実行結果値は次サイクルまでにPE結合線上に送り出される。また、命令Cの実行終了と同時に、命令Cのcounter部には、命令Cのheader部の値がコピーされる。したがって、例えば、CP30がシストリック動作において、TargetregID部に待合せレジスタsxが指定されている命令Aを実行した場合、命令AのtargetPEID部が指定するPE番号のPE上のレジスタsxに対して書き込み動作Pが行われる。ここで、当該PEの命令バッファinstb11内の命令Cのcounter部に値1が設定されており、かつ、レジスタsxが命令Cのソースオペランドのうちの唯一の待合せレジスタである場合、上記のレジスタsxに対する書き込み動作Pの結果、当該PEは命令Cの実行を開始し、命令Cの実行終了と同時に、命令Cのcounter部に、命令Cのheader部の値である1を再度設定する。ただし、命令Cの実行終了と同じサイクルに、当該PEの待合せレジスタsxに対して書き込み動作が再度起きた場合には、counter部には、1ではなく、そのデクリメントした結果である0がセットされるため、命令Cは当該PE上で連続して実行される。他の例として、CP30がシストリック動作においてTargetregID部に待合せレジスタcmが指定されている命令Aを実行した場合には、命令バッファinstb11内にcmをソースオペランドに持つすべてのPEに対し、cmへの書き込み動作Pが生じる。ここで、PEの命令バッファinstb11内の命令Cのcounter部に値2が設定されており、cm及びsyがいずれも命令Cのソースオペランドである場合には、上記のCPによる命令Aの実行に起因するcmへの書き込み動作Pだけでは、当該PEが命令Cの実行を開始しないが、書き込み動作Pが発生したのと同一のサイクル、あるいはそれ以降のサイクルにおいて別途syへの書き込み動作Qが発生すれば、当該PEが命令Cの実行を開始する。そして、命令Cの実行終了と同時に、命令Cのcounter部には、値2が命令Cのheader部からコピーされて再度設定されるが、命令Cの実行終了と同一のサイクルに、当該PEの待合せレジスタsxとcmに対し、同時に書き込み動作が起きた場合には、counter部には、2ではなく、これを2回だけデクリメントした結果である0が再度セットされる。したがって、命令Cが当該PE上で連続して実行される。上記の2つの動作例からわかるように、CP30はシストリック動作指示命令の発行を通じて、命令バッファinstb11に格納されている命令の実行をPEに指示することができる。また、命令バッファinstb11に格納されている命令が、その実行結果の書き込み先として、他のPEの待合せレジスタを指定している場合には、命令の実行がPE間を伝播する。また、CP30は、多数のPEのレジスタcmに対し書き込み動作を行うことが可能なので、同時に多数のPEを待ち状態から実行状態に移すこともできる。このように、CP30はシストリック動作指示命令の発行により、PEアレイ上にシストリック的な命令実行の連鎖を引き起こすことができる。次に、具体的な実施例を用いて、実施形態に係るSIMDプロセッサの動作について説明する。図5aは、本実施例において、PEアレイにマップする処理のループ部分に相当する擬似コードである。図5aを参照すると、擬似コードは、配列Aからデータを読み出して変数aを加算して配列Bに書き込む動作を、配列Aの要素0から7までを対象に、計8回のイタレーションで行うプログラムコードである。図5bは、本実施形態のSIMDプロセッサのPEアレイ群のうちのPE0,PE1,PE2,PE4,PE10に対して、図5aの処理をマッピングした場合において、各PEに分配すべき命令を示す。ここで、図5bに示すaddは加算命令を意味し、2つのソースレジスタ番号指定Aとcmと1つのデスティネーションレジスタ番号指定1sxを持つ。単一アルファベットA、B、aは定数Aはこの場合は、配列Aの絶対アドレスを表す。命令バッファinstb11に格納されている命令の実行に際し、定数がオペランドに指定されている場合には、レジスタ番号0のレジスタすなわちr0に定数が格納されていると見なし、レジスタr0から値を読出すように動作する。デスティネーションレジスタ番号指定は、PE番号とレジスタ名の組合せで指定する。例えば、1sxとなっていれば、PE番号が1のPEのsxレジスタに、演算結果を格納するように動作する。なお、図1及び図3を参照すると、CP30にaddA,cm,1sxという命令をPE0の命令バッファinstb11に格納させるには、header部を10、opcode部をadd命令を現すビット列、1stoperandregIDを0、2ndoperandregIDを0xd、DestinationregIDを0xe、演算結果の格納先PE番号が1であることからPEID部を1、counter部を1である命令と、当該命令に後続する、header部を11、data部を配列Aの絶対アドレス、TargetregID部を0、add命令の格納instbの持ち主のPE番号が0であることからTargetPEIDを0とした命令とを用意し、CP30に実行させればよい。また、図5bに示したgld及びgstは、それぞれ、グローバルメモリに対するロード命令及びストア命令である。ロード命令は、第2ソースオペランドを持たずにロード対象アドレスを第1ソースオペランドとして持ち、ロードしたデータの格納先のデスティネーションレジスタ番号指定を持つ。ストア命令は、第1ソースオペランドとしてストア対象アドレス、第2ソースオペランドとしてライトデータを格納したレジスタ番号を有し、デスティネーションレジスタ番号指定を持たない図5bではNULLとした。以上より、図5bにおいて、各命令のデスティネーションフィールド指定における1sx,2sx,4sx,4sy及びNULLは、それぞれ、命令の実行結果の宛先がPE1のsx、PE2のsx、PE4のsx、sy及び宛先なしを示す。図5cは、図5bの命令コードをCP30がPEアレイに分配し、動作を開始させてから終了するまでの動作のタイムチャートを一例として示す。図5cを参照すると、縦軸は時間単位はサイクルを表し、横軸はCP30の動作、及びPE側の動作を表す。なお、PE側の動作は、イタレーション毎に分けて表示している。また、図5cの欄内には、各サイクルにおけるCP30やPEの動作状況を表している。例えば、CP30の動作を示す欄の先頭に表記されているINSTB_BCPE0とは、header部が10の命令及び後続するheader部が11の命令を読出してPE0に分配する動作が当該サイクルで生じたことを表す。また、GO1、cmとは、header部が11であり、data部の値が1である命令を読出し、PE0,PE1,PE2,PE4,PE10のうちの命令バッファinstb11内の命令がソースオペランドにレジスタcmを含むPEのレジスタcmに、この命令のdata部の値である1をライトする動作が当該サイクルで生じたことを表す。また、CLD及びCSTは、それぞれPE側でgld及びgst命令を発行したことに伴い、大域アクセス調停部50による調停の結果として発生したグローバルメモリへのキャッシュメモリ等を介したロード動作及びストア動作が開始されたサイクルを表す。さらに、PExはPE番号がxのPEが命令を実行したサイクルを表す。特に、PEx/yは、PExとPEyが同一のサイクルで命令を実行したことを表す。なお、CP30上でのCLDとCSTとのタイミング的な対応関係を分かり易くするために、gld又はgst命令を実行したPExの末尾に又はを付した。なお、一例として、点線の矢印は、PE1上でgld命令が実行されてからPE2にロードデータが送付されてくるまでの流れを示す。また、図5cにおける黒塗りの矩形はロードデータ待ちサイクルを表し、-はPE間転送サイクルを表す。図6aは、本発明のSIMDプロセッサが双方向の一次元隣接PE間結合網のみを有する場合における、i=0のイタレーションにおけるサイクル毎でのPE間結合網の利用状況を示す。ここで、塗り潰した黒丸は、対応するPE横軸上で命令の実行が行われたことを表す。また、PEx→PEyの矢印は、PExとPEyとの間でデータ転送が発生したことを表す。なお、ここでは、グローバルメモリ40に対するロードアクセスの遅延を3サイクルと仮定している。したがって、PE1からPE2への矢印は3サイクルに跨っている。図6bは、i=0からi=7までの全部計8イタレーションにおける、サイクル毎のPE間結合網の利用状況を示す。図6bを参照すると、複数の同一方向の矢印間で交差が起きてない。このことは、PEアレイがシストリック動作を行った計21サイクルに亘って、PE間結合線を利用したデータ転送に関して、衝突が起きてないことを示す。なお、図6bにおいて、サイクルPにおけるPExからPEyへの左→右又は左←右方向の矢印は、当該サイクルでのPEx→PEy又はPEx←PEy方向の隣接PE間結合線を利用してデータ転送が行われることを示す。また、図6bにおいて、個々のイタレーション間を識別し易くするために、矢印及び塗り潰した丸印の明度を変更している。図5c及び図6では、グローバルメモリに対するPEによるロードアクセスの遅延を3サイクルと仮定した図を示している。一方、遅延が3よりも小さく、例えば、2である場合は、図7aのように、PE10に割当てていた命令をPE9に割当てればよい。また、ロードアクセス遅延が3よりも大きく、例えば、4である場合には、図7bのように、PE10に割当てていた命令をPE11に割当てればよい。次に、実施形態に係るSIMDプロセッサの本実施例における効果について説明する。図8は、図5aのプログラムコードをCP30上で逐次的に実行した場合の擬似コードである。図8を参照すると、CADDは加算命令を表す。また、CLD及びCSTは、それぞれメモリロード命令及びメモリストア命令を表す。これらは、すべてheader部が00の命令である。CP30のみを用いて、図5aのプログラムコードを実行した場合には、1回の繰り返し毎に約6サイクルを要することから、8回の繰り返しで合計48サイクルを要する。一方、図6bを参照すると、実施形態に係るSIMDプロセッサを利用することで、約21サイクルで処理が終了する。したがって、本発明によると、約2倍強の高速化を実現することができる。なお、本実施例の場合、命令をPEアレイに分配するのに合計5サイクルを要することから、イタレーション回数が少ない場合における性能の向上は小さい。しかし、イタレーション回数を1000回とすると、命令をPEアレイに分配するのに要した5サイクルは無視することができる。また、本実施例では1イタレーション毎に1サイクルのスループットで実行できる。一方、図7を参照すると、CP30上で同一の処理を実行した場合には、1イタレーション毎に6サイクルかかる。したがって、本発明のSIMDプロセッサによると、約6倍の性能向上がもたらされる。なお、上記の特許文献及び非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示請求の範囲を含むの枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。"