"複数のプロセシングエレメントを備えたプロセッサ装置において、上記各プロセシングエレメントは複数のデータを保持する演算レジスタと、所定の演算マスク値に従って命令の実行又は非実行を制御する制御手段とを備え、上記各プロセシングエレメントはさらに、処理を行うプロセッシングエレメント自身以外のプロセシングエレメントのレジスタ値を参照する手段と、演算結果を処理を行うプロセッシングエレメント自身以外のプロセシングエレメントのレジスタに転送して格納する手段とのうちの少なくとも1つの手段とを備え、上記プロセッサ装置は、上記各プロセシングエレメント方向に行ベクトルデータが配列され、かつ上記各プロセシングエレメント内レジスタ方向に列ベクトルデータがそれぞれ配列された複数個の行列データの数学的転置を行うときに、上記各プロセシングエレメント間のレジスタ参照、格納又は移動を行う単一命令複数データ型の演算命令を用いて、対角位置の要素データ又はベクトルデータの移動をして交換を行うステップを含み、行列に含まれる2のべき乗次の部分行列を対象にして、最小2次の行列2×2要素では対角要素データの移動又は交換を行う第1の手順と、上位のべき乗次数の部分行列では対角位置の下位の部分行列の要素データ群をブロックとして一括に移動又は交換する第2の手順とを実行し、上記第1及び第2の手順を、上位次数から最小次数まで、又は最小次数から上位次数まで順次繰り返して行って複数の行列データを一括して並列同時に転置処理することを特徴とするプロセッサ装置。行列データの対角位置の要素又はベクトルデータの移動又は交換を行う手順において、上記プロセッサ装置の単一命令複数データ型の演算命令と演算マスク値による制御を用いて、連続して配置される2N個の各プロセシングエレメント毎に、連続して配置される2N-1個のデータここで、Nは1以上の自然数である。の移動又は交換を一括して同時並列に行うことを特徴とする請求項1記載のプロセッサ装置。複数のプロセシングエレメントを備えたプロセッサ装置の演算方法において、上記各プロセシングエレメントは複数のデータを保持する演算レジスタと、所定の演算マスク値に従って命令の実行又は非実行を制御する制御手段とを備え、上記各プロセシングエレメントはさらに、処理を行うプロセッシングエレメント自身以外のプロセシングエレメントのレジスタ値を参照する手段と、演算結果を処理を行うプロセッシングエレメント自身以外のプロセシングエレメントのレジスタに転送して格納する手段とのうちの少なくとも1つの手段とを備え、上記プロセッサ装置は、上記各プロセシングエレメント方向に行ベクトルデータが配列され、かつ上記各プロセシングエレメント内レジスタ方向に列ベクトルデータがそれぞれ配列された複数個の行列データの数学的転置を行うときに、上記各プロセシングエレメント間のレジスタ参照、格納又は移動を行う単一命令複数データ型の演算命令を用いて、対角位置の要素データ又はベクトルデータの移動をして交換を行うステップを含み、行列に含まれる2のべき乗次の部分行列を対象にして、最小2次の行列2×2要素では対角要素データの移動又は交換を行う第1の手順と、上位のべき乗次数の部分行列では対角位置の下位の部分行列の要素データ群をブロックとして一括に移動又は交換する第2の手順とを実行し、上記第1及び第2の手順を、上位次数から最小次数まで、又は最小次数から上位次数まで順次繰り返して行って複数の行列データを一括して並列同時に転置処理することを特徴とするプロセッサ装置の演算方法。行列データの対角位置の要素又はベクトルデータの移動又は交換を行う手順において、上記プロセッサ装置の単一命令複数データ型の演算命令と演算マスク値による制御を用いて、連続して配置される2N個の各プロセシングエレメント毎に、連続して配置される2N-1個のデータここで、Nは1以上の自然数である。の移動又は交換を一括して同時並列に行うことを特徴とする請求項3記載のプロセッサ装置の演算方法。上記のSIMD型マイクロプロセッサ2は、通常、1クロックサイクルで1命令を処理するが、1命令でPE3の個数分のデータを一度に処理することができる。SIMD型マイクロプロセッサ2の性能を表す際には、SIMD型マイクロプロセッサ2の動作周波数や、PE3の個数、すなわち1命令で処理できるデータの数などが重要視されるが、さらに、命令サイクル数も重要な要素とされる。つまり、同じ画像処理を行う限り1命令サイクルでも少ないほうが性能がよいとされるのである。しかし、1命令で複雑な処理を行うために、複雑な回路を設計して利用するならば、どうしてもコストが増大するという問題点があった。ところで、近年、マルチメディア社会の進展からの懇請によって、大規模な二次元画像データ等のデジタル処理を高速に行う要請は日々増大しており、この要求を満たすための演算処理プロセッサのハードウェア、ソフトウェアの技術開発がたゆまなくなされている。その中で単一のプロセシングユニットもしくはプロセシングエレメントを備えるプロセッサの高速化を目指す技術開発は、その都度、ハードウェアの集積複雑さと物量の増大の限界と電気特性的な限界例えば電気素子の動作遅延に直面し、別の技術開発のアプローチとして、複数の演算ユニットで複数の信号データを同時並列に処理する、いわゆる並列処理アプローチがある。並列処理を行うプロセシングハードウェアは、複数データを同時に扱う際の分類としてSIMD単一命令複数データアプローチとMIMD複数命令複数データアプローチがある。SIMDアプローチのプロセッサにおけるデジタル処理では、命令処理の制御や、ソフトウェアの構成が比較的容易であることから、これらのハードウェア、ソフトウェア分野の技術開発が盛んに行われている。SIMDアプローチのプロセッサは、さらにそのハードウェア構成によって、多倍精度のプロセシングユニットをビットスライス分割して、単一命令で、複数データを同時に一括処理する装置と方法、以下、スライス型という。一方、比較的規則的かつハードウェア規模の小さなプロセシングエレメントPEを多数並列に配列してプロセシングユニットを構成し、単一命令でそれらを同時に演算処理させるような装置と方法以下、並列型という。に分類される。前者のアプローチのプロセシングユニットは比較的大きなビット幅のデータを扱う演算ユニットと比較的複雑かつ高速な演算命令体系と実行機能を備え、まれに実験的な組み立てを除き、通常は単一、多くとも数個のユニットから構成されるプロセッサであることがほとんどである。前者の具体的な従来技術として著名なものはインテル社のプロセッサにおけるMMXMultiMediaeXtensionやSSEStreamingSIMDExtension技術などが挙げられる。MMXやSSE技術は、スライス分割によって複数データを同時処理するためのマルチメディアデジタル処理に適した命令セット拡張体系である。図4は従来技術に係るMMX技術を用いた行列転置方法の好適例を示すプログラムを示す図である。すなわち、図4はスライス型のSIMDアプローチにおける、並列性を有したデータ移動、交換によるデータ配置変換処理の一般概念をも好適に示す。図4の従来例においてプロセッサは128ビット幅の語長をもつプロセシングユニットを4個の32ビット語長のスライス以下、レーンデータという。に分割し、これらを同時並列にデータ演算する命令体系を備えている。4つのレジスタm0からレジスタm3までに、m00からm33までの4×4の行列データが格納されており、これをレジスタ内データの配置変換命令を使って転置処理を行うものである。結果はレジスタm0からレジスタm3までに戻されるように構成されている。プログラムリストはC言語の表記をなしているが、6行目以降の[数1]builtinia32unpcklpsbuiltinia32unpckhpsがプロセッサの配置変換インターリーブやパック命令と一般に呼称されるものである命令もしくは命令マクロに対応している。これらのステートメント表記を見ても明らかなように、本命令ではソースオペランドとして2項のレジスタを、デスティネーションオペランドとして1項のレジスタを取る構成である。レジスタ内のビットスライスを下位ビットから順に第1レーン、第2レーン、第3レーン、第4レーンとすると、前者の命令ではソースレジスタの下位2レーン分のスライスに着目し、第1オペランドの第1レーンと第2レーンのビットスライスデータをデスティネーションの第1レーンと第3レーン、第2オペランドの第1レーンと第2レーンのビットスライスデータをデスティネーションの第2レーンと第4レーンに配置して格納する作用をする。同様に後者の命令では、ソースレジスタの上位2レーン分のスライスに着目し、第1オペランドの第3レーンと第4レーンのビットスライスデータをデスティネーションの第1レーンと第3レーン、第2オペランドの第3レーンと第4レーンのビットスライスデータをデスティネーションの第2レーンと第4レーンに配置して格納する作用をする。中間の配置結果の時刻t0からt3までを使ってさらに配置変換を繰り返すことにより10行目以降で最終的に転置された行列データがm0からm3までに格納されることがわかる。複数のレーンデータを同時並列に移動配置できることから、単に複数データを同時に算術演算するだけでなくデータ配置変換処理においてもスライス型のSIMDプロセッサ装置及び方法が有効に機能することが示される好例である。さらに、別の従来例では、インターリーブ命令を強化して、分割するビットスライス幅の変更と、それに合わせた配置変換パターンの制御の変更を行える装置を開示し、行列転置や他のデータ配列変換処理をさらに効率よく行える方法が、例えば特許文献1において開示されている。さらに、過去をさかのぼり別の従来技術では、レジスタのビットシフトと、レジスタ間のデータ複写又は移動の際にデータマスク機能を使うことにより、近代のスライス型SIMDアプローチに似た手法でレジスタ内の部分データをインターリーブする手法を行列転置に応用した事例の方法が、例えば特許文献2において開示されている。これらSIMDアプローチのプロセッサによる配置変換方法では一般的にいって、レジスタを含むプロセシングユニットの演算語長を複数にスライス分割することが本質であるため、同時に処理できるスライスデータレーンの数はプロセシングユニットの演算語長に依存して限定されることになる。通常は数個程度のデータレーンしか同時並列に扱うことはできない欠点が見られる。スライス分割数を超えるデータの配置変換には必ず、外部キャッシュ又は外部メモリとの通信が必要となり、全体の処理速度が低下する欠点も見られる。さらに、プロセッサ装置のサイクル速度とハードウェア規模とのトレードオフにより、データレーンの配置変換命令においては、通常は数種程度の固定化された配置変換パターンしか持ち得ず、それらアトミックな配置変換パターンを組み合わせて様々な配置変換を実現することになり、固定パターンになじまない種類の配置変換処理ではこれらを複数組み合わせて実現することになり、処理効率を損なうとともに柔軟性に欠けると見ることもできる。さらに、特許文献1において開示された装置のごとく、配置変換パターンに自由度をもたせるためには多大なハードウェアコストを支払う必要があること、そのことにより演算サイクルの低下を招く傾向にあることが欠点として認められる。さらに、特許文献2において開示された従来例における転置処理の方法は、ビットスライスの配置変換専用命令を持たない旧来のプロセッサを用いて、多倍精度語長のレジスタ内のスライスデータの配置変換をビットシフトとデータマスクを用いて逐次的に実現したものであり、並列同時にデータ移動がなされているわけではなく多大なステップが必要となってしまう欠点があるが、スライス型SIMDアプローチの黎明期の方法事例として好適である。以上はスライス型のSIMDアプローチの装置及び方法における全般的な問題点を示しているが、それは同時に本アプローチのプロセッサで行列転置処理を方法実現する際の問題としてそのまま示されることは容易に理解される。次に、並列型のSIMDアプローチの具体的な従来技術であるプロセッサ装置が、例えば、特許文献6及び7において開示されている。本アプローチにおける以降の説明及び実施形態で引用されるプロセッサ装置例となる。これら文献で示される並列型のSIMDアプローチをとるプロセッサ装置では、比較的規則的かつ演算語長が小さく小規模なプロセシングエレメントPEが多数並列に配列され、単一命令に従って、PEに分散された多数の複数データを同時並列に演算処理するものである。これらのプロセッサにきわめて特徴的な機能として、近傍PEのレジスタアクセス機能と、PE個々の演算の実行又は演算の非実行を制御するための演算マスク機能が挙げられる。本発明における行列転置方法ではこれらの機能を有効利用するものである。また以下で述べる発明者らの従来の転置方法においてもこれらの機能を利用し、多数個の行列の転置処理を並列処理で転置する方法を示している。さらに、並列型のSIMDアプローチの具体的な従来技術であるプロセッサ装置が、例えば特許文献3において開示されている。このプロセッサ装置によれば、PEを跨ぐデータアクセスのためのネットワーク機構を柔軟かつ強化し、その転送パターンを命令セットとは切離して独立に設定できるようにしたプロセッサ装置を開示し、応用方法として行列転置処理方法をも示している。転送ネットワークを任意に設定できるためPE間のデータ移動の自由度は増大するが、データネットワークの回路規模が膨大になることが予想され、PEの回路の規則性も損なわれるため、大規模多数のPEを集積することは困難であると予想される。集積されるPEの数が限定されることは処理の並列度の低下を意味し、プロセッサ内に留めることのできる要素データの数が限定され、大規模多数のデータに演算を施し、PE間でのデータ移動、配置変換を複数回内包するような演算処理では、外部キャッシュや外部メモリへのアクセスが頻繁に発生し、処理の効率と速度を落とす原因となる欠点が認められる。以下は、並列型のSIMDアプローチを取るプロセッサで、発明者らが従来実施してきた多数個の行列転置処理を並列処理で転置する方法を示している。この従来例では、352個のPEを備えるプロセッサ装置で処理を行う方法を示す。PEにはそれぞれに、識別するためのPE番号アドレスが0下位側から351上位側まで付加されている。以下、この従来例では8×8要素の行列転置処理を行う方法について示している。図5は従来例に係る行列転置方法において、行列データが列方向図5の縦方向のベクトルデータがPEの演算レジスタTmR0~TmR7に配置されかつPE方向に行ベクトルをなすように配列された行列データを示す図である。すなわち8個のPEで1つの行列データを保持するよう配列されている。この従来例では352個のPEを配するプロセッサであるため全てのPEにデータを配置することで総計44個の行列を並列に処理することができるようになる。転置処理の結果はTmR20からTmR27までの別のレジスタに格納される。以下の表1~表10は、上記並列型のSIMDプロセッサで行列転置処理方法の手順を示したプログラムリストである。プログラムリストのそれぞれのステートメントはプロセッサの機械語に対応し、処理内容に合わせたニモニック表示となっている。セミコロン以下はコメント行である。命令[数2]settbt113f8hはプロセシングエレメントPEの処理実行又は処理非実行を制御するための演算マスクビットを設定する命令であり、即値とPE番号とのビット比較により、演算マスクビットの設定を行うものである。第1オペランドが比較値、第2オペランドは比較の際無視するビットを指定するアドレスマスクである。演算マスクビットは各PE毎にT1からT7までの7個を持ち、同時に7種類の演算マスクを保持してPEの演算実行制御を個々に行うことができる。先の命令の場合、PE番号の下位3ビットを除く上位ビットを全て無視して、即値1と比較し一致するPEのT1ビットをセットすなわち1を書き込むするように動作する。結果、PE番号を8で割り算した余りが1である全てのPEのT1ビットがセットされることになる。さらに、Lda命令は指定されたソースレジスタ内容を第1アキュムレータAにロードする命令、Ldf命令は第2アキュムレータFにロードする命令である。命令[数3]ldat1TmR1L1は2つのオプションが付加されており、t1により演算マスクT1ビットがセットされたPEだけで実行される命令となり、T1ビットがクリアされているPEでは実行されないNOP。オペランドのTmR1はソースレジスタの指定で、L1は1つ下位Lower:PE番号が小さいもののPEのレジスタを参照するように修飾される。この従来例のプロセッサでは自身以外のPEのレジスタ参照は、上位側、下位側それぞれ3つの距離まで可能であり、先のレジスタ修飾はL1からL3まで、及びU1からU3まで使うことができる。ここで、Uは上位番号のPEを表す。これらの修飾子が付加されない場合は自身のレジスタが参照される。本機能により、PE方向のデータの移動が可能となり、このような態様を以下、PEシフトという。Sta、Stfはそれぞれのアキュムレータからデスティネーションレジスタまでにストア格納する命令である。デスティネーションレジスタにも隣接PEの参照を制御する修飾子L1~L3、U1~U3があり、同様に下位PEもしくは上位PEのレジスタに内容を格納するよう制御される。[数4]ldfTmR4L3TmR10命令のように、ロード命令で2項のオペランドが配される場合は、アキュムレータにソースレジスタの内容がロードされた後、同時にアキュムレータの内容が第2項のデスティネーションレジスタにストア複写されるように動作する。この従来例に係るプロセッサ装置の場合は、最大上下3個先のPEのレジスタをアクセスできるが、それ以上離れた場所のアクセスを行うには、テンポラリレジスタを介して、PEシフトの距離量を組み合わせることで実現する。その分、ステップ数が増える問題はあるが柔軟に手順を組み立てることができる。しかしながら、どの距離のPEまでアクセスできるかは、時代の集積技術と応用分野からの性能要請に基づきトレードオフで決定されるものであるので、この従来例ではあくまで一例として示したにすぎず、以降の説明や本発明の内容をなんら制約するものではない。[表1]行列転置InputTmR00~TmR07OutputTmR20~TmR27TmpTmR10TmR11TmR12TmR13TmR14t1t2t3t4t5t6t7[表2]演算マスクの設定settbt113f8h01000000STEP1settbt223f8h00100000STEP2settbt333f8h00010000STEP3settbt443f8h00001000STEP4settbt553f8h00000100STEP5settbt663f8h00000010STEP6settbt773f8h00000001STEP7[表3]1行目の配置ldaTmR0STEP8ldat1TmR1L1STEP9ldat2TmR2L2STEP10ldat3TmR3L3STEP11ldfTmR4L3TmR10STEP12ldfTmR5L3TmR11STEP13ldfTmR6L3TmR12STEP14ldfTmR7L3STEP15ldat4TmR10L1STEP16ldat5TmR11L2STEP17stfTmR10U1STEP18ldat6TmR12L3STEP19ldat7TmR10L3TmR20STEP20[表4]2行目の配置ldaTmR0U1STEP21ldat1TmR1STEP22ldat2TmR2L1STEP23ldat3TmR3L2STEP24ldat4TmR4L3STEP25ldfTmR5L3TmR10STEP26ldfTmR6L3TmR11STEP27ldfTmR7L3TmR12STEP28ldat5TmR10L1STEP29ldat6TmR11L2STEP30ldat7TmR12L3TmR21STEP31[表5]3行目の配置ldaTmR0U2STEP32ldat1TmR1U1STEP33ldat2TmR2STEP34ldat3TmR3L1STEP35ldat4TmR4L2STEP36ldat5TmR5L3STEP37ldfTmR6L3TmR10STEP38ldfTmR7L3TmR11STEP39ldat6TmR10L1STEP40ldat7TmR11L2TmR22STEP41[表6]4行目の配置ldaTmR0U3TmR10STEP42ldat1TmR1U2STEP43ldat2TmR2U1STEP44ldat3TmR3STEP45ldat4TmR4L1STEP46ldat5TmR5L2STEP47ldfTmR7L3TmR11STEP48ldat6TmR6L3STEP49ldat7TmR11L1TmR23STEP50[表7]5行目の配置ldaTmR10U1STEP51ldat1TmR1U3STEP52ldat2TmR2U2STEP53ldat3TmR3U1STEP54ldat4TmR4STEP55ldat5TmR5L1STEP56ldat6TmR6L2STEP57ldat7TmR7L3TmR24STEP58[表8]6行目の配置ldfTmR1U3TmR11STEP59ldaTmR10U2STEP60ldat1TmR11U1STEP61ldat2TmR2U3STEP62ldat3TmR3U2STEP63ldat4TmR4U1STEP64ldat5TmR5STEP65ldat6TmR6L1STEP66ldat7TmR7L2TmR25STEP67[表9]7行目の配置ldfTmR2U3TmR12STEP68ldaTmR10U3STEP69ldat1TmR11U2STEP70ldat2TmR12U1STEP71ldat3TmR3U3STEP72ldat4TmR4U2STEP73ldat5TmR5U1STEP74ldat6TmR6STEP75ldat7TmR7L1TmR26STEP76[表10]8行目の配置ldfTmR10STEP77stfTmR14L1STEP78ldaTmR14U3STEP79ldfTmR3U3TmR13STEP80ldat1TmR11U3STEP81ldat2TmR12U2STEP82ldat3TmR13U1STEP83ldat4TmR4U3STEP84ldat5TmR5U2STEP85ldat6TmR6U1STEP86ldat7TmR7TmR27STEP87次に、この従来例に係るプログラムリストで実現されている手順について説明する。まず、STEP1からSTEP7まで演算マスクビットを設定する。T1ビットはPE番号を8で割って余りが1のPEの全てについてそれぞれセットされる。T2ビットは同様に余りが2のPE全てについて、T3ビットは余りが3のPE全てについて、T4ビットは余りが4のPE全てについて、T5ビットは余りが5のPE全てについて、T6ビットは余りが6のPE全てについて、T7ビットは余りが7のPE全てについて各々セットされる。STEP8からSTEP20までは転置結果の1行目の配置変換を行う手順である。以下にデータ移動の様子を図示している。図6は従来例に係る行列転置方法において、STEP8~STEP20までの手順により転置結果の1行目の配置変換を示す行列データを示す図である。図6に示すように、対角要素を除き、ハッチング部分のデータがこれらのステップで移動される。TmR20からTmR27までのレジスタに処理結果が格納される。TmR20は転置結果の1行目が配置されるが、図6とプログラムリストを見て明らかなように、行の要素の8PE毎に1個ずつ、PEシフト操作を介して列要素からデータ移動されていることがわかる。352個のPEに跨って44個の8×8の行列が配置されているので、行列要素としては1個ずつではあるが、全体としては44個のデータが同時並列に移動、配置されるステップである。以下同様に、各行の処理内容の図を示す。図7は従来例に係る行列転置方法において、STEP21~STEP31までの手順により2行目の配置変換を示す行列データを示す図である。また、図8は従来例に係る行列転置方法において、STEP32~STEP41までの手順により3行目の配置変換を示す行列データを示す図である。さらに、図9は従来例に係る行列転置方法において、STEP42~STEP50までの手順により4行目の配置変換を示す行列データを示す図である。またさらに、図10は従来例に係る行列転置方法において、STEP51~STEP58までの手順により5行目の配置変換を示す行列データを示す図である。また、図11は従来例に係る行列転置方法において、STEP59~STEP67までの手順により6行目の配置変換を示す行列データを示す図である。さらに、図12は従来例に係る行列転置方法において、STEP68~STEP76までの手順により7行目の配置変換を示す行列データを示す図である。またさらに、図13は従来例に係る行列転置方法において、STEP77~STEP87までの手順により8行目の配置変換を示す行列データを示す図である。以上、並列型のSIMDプロセッサで近傍PEのレジスタアクセス機能と、PEの演算マスクにより、複数の行列転置処理を同時並列に実施する従来例に係る行列転置方法を示した。近傍PEのレジスタアクセスにより、PE間を跨るデータとPE内に配置されるデータを柔軟に移動、配置できることが示されている。また多数のPEを配列するプロセッサではその並列性により多数の行列データを並列同時に処理する方法が提供されうることが示されている。しかしながら、この従来例で示した方法では行列あたり1要素ずつ移動させるステップから構成されるため、並列性が高く処理効率が良いとはいえない欠点があった。さらにレジスタアクセス可能なPE間の距離が小さく限定されるプロセッサでは、回路の規則性が高く、複雑度、回路規模が小さく、より多数のPEを集積できうる利点はあるものの、可能な最大距離を超えた位置のPEのレジスタアクセスを行うには追加のステップが必要となり、処理速度と効率が低下する欠点が認められる。具体的には、この従来例においてデータ要素移動の個々のステップで距離3を越えるPEのデータへのアクセスは、都度3以下のPEシフトを組み合わせて多段ステップで実現しており、ステップ数が増えると全体のステップ数に与える影響が大きいという欠点がある。従来技術に係るビットスライス型のSIMDプロセッサでは一般的にプロセシングユニットの演算語長の制約から同時に並列処理できるデータの数に、最大で数個程度という制限があり、制限を越える大量のデータ処理を行うためには逐次外部キャッシュやメモリアクセスが必要となり、並列処理の効率が比較的低く速度の低下を招く問題点があった。さらに、別の形態に係る、プロセシングユニットを多数並列に配列する並列型のSIMDプロセッサでは、規則性が高く比較的小規模のプロセシングエレメントPEをより多数個配列して集積するものほど処理の並列性が増大し、処理効率はきわめて高くなる一方、データ移動可能なPEの範囲は装置回路的にPE自身の近傍距離に限られる傾向にあり、行列転置のようなデータ移動のPE間距離が比較的大きい処理ほど、データ移動ステップが多段で煩雑となり、処理ステップが増大して処理速度が低下する問題点があった。本発明の第1の目的は以上の問題点を解決し、多数のプロセシングエレメントPEを集積しうる並列型のSIMDプロセッサにおいて並列性の高い行列転置方法を用いたプロセッサ装置及びその演算方法を提供することにある。また、本発明の第2の目的は上記第1の目的に加えて、より大規模な並列性を有するプロセッサにおいてもPE間のデータ移動効率が良く、処理ステップ数がより少ない行列転置方法を用いたプロセッサ装置及びその演算方法を提供することにある。さらに、本発明の第3の目的は上記第1及び第2の目的に加えて、PE間のデータ移動の並列性を高めて処理ステップがさらに少なく効率的な行列転置方法をプロセッサ装置及びその演算方法を提供することにある。第1の発明に係るプロセッサ装置は、複数のプロセシングエレメントを備えたプロセッサ装置において、上記各プロセシングエレメントは複数のデータを保持する演算レジスタと、所定の演算マスク値に従って命令の実行又は非実行を制御する制御手段とを備え、上記各プロセシングエレメントはさらに、処理を行うプロセッシングエレメント自身以外のプロセシングエレメントのレジスタ値を参照する手段と、演算結果を処理を行うプロセッシングエレメント自身以外のプロセシングエレメントのレジスタに転送して格納する手段とのうちの少なくとも1つの手段とを備え、上記プロセッサ装置は、上記各プロセシングエレメント方向に行ベクトルデータが配列され、かつ上記各プロセシングエレメント内レジスタ方向に列ベクトルデータがそれぞれ配列された複数個の行列データの数学的転置を行うときに、上記各プロセシングエレメント間のレジスタ参照、格納又は移動を行う単一命令複数データ型の演算命令を用いて、対角位置の要素データ又はベクトルデータの移動をして交換を行うステップを含み、行列に含まれる2のべき乗次の部分行列を対象にして、最小2次の行列2×2要素では対角要素データの移動又は交換を行う第1の手順と、上位のべき乗次数の部分行列では対角位置の下位の部分行列の要素データ群をブロックとして一括に移動又は交換する第2の手順とを実行し、上記第1及び第2の手順を、上位次数から最小次数まで、又は最小次数から上位次数まで順次繰り返して行って複数の行列データを一括して並列同時に転置処理することを特徴とする。上記プロセッサ装置において、行列データの対角位置の要素又はベクトルデータの移動又は交換を行う手順において、上記プロセッサ装置の単一命令複数データ型の演算命令と演算マスク値による制御を用いて、連続して配置される2N個の各プロセシングエレメント毎に、連続して配置される2N-1個のデータここで、Nは1以上の自然数である。の移動又は交換を一括して同時並列に行うことを特徴とする。第2の発明に係るプロセッサ装置の演算方法は、複数のプロセシングエレメントを備えたプロセッサ装置の演算方法において、上記各プロセシングエレメントは複数のデータを保持する演算レジスタと、所定の演算マスク値に従って命令の実行又は非実行を制御する制御手段とを備え、上記各プロセシングエレメントはさらに、処理を行うプロセッシングエレメント自身以外のプロセシングエレメントのレジスタ値を参照する手段と、演算結果を処理を行うプロセッシングエレメント自身以外のプロセシングエレメントのレジスタに転送して格納する手段とのうちの少なくとも1つの手段とを備え、上記プロセッサ装置は、上記各プロセシングエレメント方向に行ベクトルデータが配列され、かつ上記各プロセシングエレメント内レジスタ方向に列ベクトルデータがそれぞれ配列された複数個の行列データの数学的転置を行うときに、上記各プロセシングエレメント間のレジスタ参照、格納又は移動を行う単一命令複数データ型の演算命令を用いて、対角位置の要素データ又はベクトルデータの移動をして交換を行うステップを含み、行列に含まれる2のべき乗次の部分行列を対象にして、最小2次の行列2×2要素では対角要素データの移動又は交換を行う第1の手順と、上位のべき乗次数の部分行列では対角位置の下位の部分行列の要素データ群をブロックとして一括に移動又は交換する第2の手順とを実行し、上記第1及び第2の手順を、上位次数から最小次数まで、又は最小次数から上位次数まで順次繰り返して行って複数の行列データを一括して並列同時に転置処理することを特徴とする。上記プロセッサ装置の演算方法において、行列データの対角位置の要素又はベクトルデータの移動又は交換を行う手順において、上記プロセッサ装置の単一命令複数データ型の演算命令と演算マスク値による制御を用いて、連続して配置される2N個の各プロセシングエレメント毎に、連続して配置される2N-1個のデータここで、Nは1以上の自然数である。の移動又は交換を一括して同時並列に行うことを特徴とする。従って、本発明に係るプロセッサ装置及びその演算方法によれば、2のべき乗次の部分行列を対象に対角位置のブロックのデータを一括して移動、交換するステップを含み、データのPE間移動は2のべき乗の距離の移動を組み合わせ、それぞれの2のべき乗距離のデータ移動は並列に一括して行うことが可能となるため、データのPE間の移動距離が自身の近傍位置に限られるような、より大規模な並列性を有するプロセッサにおいてもPE間のデータ移動効率が良く、処理ステップがより少ない行列転置方法を提供することができる。また、複数の行列データの転置処理を同時一括して並列処理することができるので処理全体のスループットは高くなる。さらに、複数の行列データをプロセッサ装置内に留め置き演算処理を進めることができるので外部キャッシュやメモリとのアクセス頻度を減らすことができ処理のスループット向上を図ることができる。また、本発明に係るプロセッサ装置及びその演算方法によれば、所定の演算マスク値を設定し、2N個の連続位置のデータ毎に2N-1個N=1,2,...のデータに対応する連続PEを並列動作させて並列同時にデータの移動、交換するステップを含むので、並列動作するPEの数が最大に保たれ、並列性が高く効率のきわめて高い行列転置方法を提供することができる。以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。実施形態の基本構成.図1は本発明の実施形態に係るSIMD型マイクロプロセッサ2の基本構成を示すブロック図である。実施形態に係るSIMD型マイクロプロセッサ2は、主としてプロセッサ2全体を制御するグローバルプロセッサGP4と、主として外部入出力装置からデータを入力しデータ処理を行い、外部入出力装置にデータを出力するプロセシングエレメントPE3とを備えて構成される。PE3は、複数データを同時に処理するために複数用意されている。図1では、1個のGP4と、256個のPE3とにより、SIMD型マイクロプロセッサ2が構成されている。図2は本発明の実施形態に係るSIMD型マイクロプロセッサ装置の詳細構成を示すブロック図である。図2に示されるように、GP4は、a命令コードで構成されるプログラムを格納するためのプログラムRAM10と、bGP4での演算データを格納するデータRAM12と、cプログラムを解読し各種ブロックに各種制御信号を送るシーケンシャルユニットSCU9と、dデータを格納する複数の汎用レジスタG0~G3と、eSCU9にプログラムの命令コードを送るためにプログラムのアドレスを保持するプログラムカウンタPC14と、fデータメモリにスタックを形成するためデータメモリのアドレスを格納するスタックポインタSP24と、gプログラムの途中でサブルーチン処理を行う際には分岐が発生するが分岐前のアドレスを格納する複数のリンクレジスタLS、LI、LNと、hデータメモリのデータ、命令コード中に記述された数値即値データ、もしくは汎用レジスタに格納されているデータのいずれかの組み合わせに対して、算術論理演算を行う算術論理演算装置ALU11と、iプロセッサの状態を保持するプロセッサステータスレジスタ図示せず。と、jハードウェア割り込みとソフトウェア割り込みを制御する割り込み制御回路図示せず。と、k外部入出力に直接接続され外部からのデータの入出力を制御する外部入出力制御回路図示せず。とを備えて構成される。図2では図示していないが、上記SCU9は、GP命令を解読し主にGP内の各ブロックに制御信号を発生するGP命令デコーダと、PE命令を解読し主にPE内の各ブロックに制御信号を発生するPE命令デコーダとで、構成される。すなわち、本プロセッサに係る命令コードは、主にGP4内の各ブロックを制御し、プログラムのシーケンスを決定したり、PEに転送する共通データをGP4内のALU11で加工したりするGP命令と、外部入出力装置から一度に入力されたデータをPE3毎に処理をさせるプロセシングエレメント命令とに分類される。図1に示すように、各PE3は、外部入出力装置からの入出力データを一時的に保持するレジスタファイル6と、PE3内で算術論理演算やビット演算のデータ処理を行うための演算アレイ8を含む。さらに、図2に示すようにレジスタファイル6には、例えば、R0~R31までの8ビットのレジスタ34が32個用意されている。これらのレジスタ34からデータが演算アレイ8に転送され、また逆に、演算アレイ8からデータが転送されてレジスタ34に格納される。レジスタ34と演算アレイ6とのバスは、8ビットの双方向バスである。さらに、図2に示すように、単体の演算アレイ8は演算ユニットであり、aレジスタファイル6からのデータをシフトして符号付き拡張もしくは符号無し拡張をして16ビットデータに加工するシフト拡張器44と、b例えば、Aレジスタ38とFレジスタ40などを含む複数の汎用レジスタと、cレジスタファイル6からのデータを、シフト拡張器44を経由して加工し1入力とし、他方の入力をAレジスタ36からの入力とする算術論理演算装置ALU36と、dPE番号マスク回路、固定値選択回路、及びnおきにビットパターンデータ出力回路のそれぞれからの出力を入力とし、自らの出力をAレジスタ38やTレジスタ54に繋げる選択回路35とを備えて構成される。算術論理演算装置ALU36の出力は、Aレジスタ36もしくはFレジスタ40に一時格納されように設定されているが、Aレジスタ36からレジスタファイル6の所定の1レジスタ34にデータ転送されることも可能である。また、演算アレイ8は、詳細後述するように、Tレジスタと呼ばれる演算制御レジスタ54を備える。ALU36からの出力は、当該Tレジスタ54によって、Aレジスタ36もしくはFレジスタ40への書き込み内容が制御される。例えば、演算制御レジスタTレジスタ54の中の所定の1ビットの状態に応じて、1であればAレジスタ36もしくはFレジスタ54への書き込みを行い、0であれば行わないというような制御が行われる。図3は図2のレジスタファイルのレジスタと演算アレイとを結び付けるマルチプレクサの機能構成を示すブロック図である。図3において、PEii=0,1,2,...,255のPEに備わるマルチプレクサは7対1のマルチプレクサであり、PEi-3PEiから3つ左隣りに位置する、PEi-2PEiから2つ左隣りに位置する、PEi-1PEiから1つ左隣りに位置する、PEi、PEi1PEiから1つ右隣りに位置する、PEi2PEiから2つ右隣りに位置する、PEi3PEiから3つ右隣りに位置するのPE3のレジスタファイル6からのデータを入出力することができるように設定されている。この機能を、PEシフト機能と称する。マルチプレクサによって選択されたデータは、演算アレイ8のシフト拡張器44に転送される。ここで、PE3の番号を含む呼称について定義する。図2に示すように、本実施形態に係るSIMD型マイクロプロセッサ2には256個のPE3が設置されており、それらPE3の個々に対し、図2では左側からPE0、PE1、PE2、PE3、...、PE254、PE255というように、PE番号を付すと定義する。実施形態.本発明に係る好適な実施形態を以下に説明する。以下に示す表11~表15は並列型のSIMDプロセッサにおいて行列転置処理方法の手順を示したプログラムリストである。本実施形態に係るSIMDプロセッサの形態及び命令セットの説明は、上述の従来例と同様であるので省略する。命令に付加されるf1オプションは、マスクビットT1に基づく演算制御のための修飾で、T1ビットが0であれば命令実行を行うよう制御される。fに続く数字はT1~T7ビットを指定するものである。プロセッサにおいてどの距離のPEまでアクセスできるかは、時代の集積技術と応用分野からの性能要請に基づきトレードオフで決定されるものであるので、本実施形態ではあくまで一例として示したにすぎず、以降の説明や本発明の内容をなんら制約するものではない。本実施形態では、352個のPEを備えるプロセッサ装置で処理を行う方法を示す。PEにはそれぞれに、識別するためのPE番号アドレスが0下位側から351上位側まで付加されている。以下、本実施形態では8×8要素の行列転置処理を行う方法について示している。図14は本実施形態に係る行列転置方法において、行列データが列方向図14の縦方向のベクトルデータがPEの演算レジスタTmR0~TmR7に配置されかつPE方向に行ベクトルをなすように配列された行列データを示す図である。すなわち、8個のPEで1つの行列データを保持するよう配列されている。本実施形態では、352個のPEを配するプロセッサであるため全てのPEにデータを配置することで総計44個の行列を並列に処理することができるようになる。転置処理の結果はTmR0からTmR7までのレジスタに再び格納されるよう動作する。[表11]行列転置InputTmR0~TmR7OutputTmR0~TmR7TmpTmR8TmR9t1t2t3[表12]演算マスクの設定settbt113feh01010101STEP1settbt223fdh00110011STEP2settbt343fbh00001111STEP3[表13]2×2部分行列の転置ldaTmR0TmR8STEP4ldfTmR1TmR9STEP5ldff1TmR8u1TmR1STEP6ldat1TmR9l1TmR0STEP7ldaTmR2TmR8STEP8ldfTmR3TmR9STEP9ldff1TmR8u1TmR3STEP10ldat1TmR9l1TmR2STEP11ldaTmR4TmR8STEP12ldfTmR5TmR9STEP13ldff1TmR8u1TmR5STEP14ldat1TmR9l1TmR2STEP15ldaTmR6TmR8STEP16ldfTmR7TmR9STEP17ldff1TmR8u1TmR7STEP18ldat1TmR9l1TmR6STEP19[表14]4×4部分行列の転置ldaTmR0TmR8STEP20ldfTmR2TmR9STEP21ldff2TmR8u2TmR2STEP22ldat2TmR9l2TmR0STEP23ldaTmR1TmR8STEP24ldfTmR3TmR9STEP25ldff2TmR8u2TmR3STEP26ldat2TmR9l2TmR1STEP27ldaTmR4TmR8STEP28ldfTmR6TmR9STEP29ldff2TmR8u2TmR6STEP30ldat2TmR9l2TmR4STEP31ldaTmR5TmR8STEP32ldfTmR7TmR9STEP33ldff2TmR8u2TmR7STEP34ldat2TmR9l2TmR5STEP35[表15]8×8最終行列の転置ldaTmR0STEP36staTmR8l2STEP37ldfTmR4STEP38stfTmR9u2STEP39ldff3TmR8u2TmR4STEP40ldat3TmR9l2TmR0STEP41ldaTmR1STEP42staTmR8l2STEP43ldfTmR5STEP44stfTmR9u2STEP45ldff3TmR8u2TmR5STEP46ldat3TmR9l2TmR1STEP47ldaTmR2STEP48staTmR8l2STEP49ldfTmR6STEP50stfTmR9u2STEP51ldff3TmR8u2TmR6STEP52ldat3TmR9l2TmR2STEP53ldaTmR3STEP54staTmR8l2STEP55ldfTmR7STEP56stfTmR9u2STEP57ldff3TmR8u2TmR7STEP58ldat3TmR9l2TmR3STEP59STEP1からSTEP3までは処理で必要な演算マスク値の設定を以下のごとく行っている。[数5]settbt113feh命令は、PE番号の最下位ビットbit0が1のもの全てのT1ビットをセット1を設定する。このことにより、T1ビットの値は、最下位PEから010101010...が設定される。すなわち、偶数番号のPEのT1ビットは0に、奇数ビットのT1ビットは1に設定される。[数6]settbt223fdh命令は、PE番号のbit1最下位ビットから次のビットをいう。が1のもの全てのT2ビットをセット1を設定する。このことにより、T2ビットの値は、最下位PEから001100110011...が設定される。すなわち、連続する4つのPE毎に連続する下位2つのPEのT2ビットは0に、上位2つのPEのT2ビットは1に設定される。[数7]settbt343fbh命令は、PE番号のbit2最下位ビットから2ビット目のビットをいう。が1のもの全てのT3ビットをセット1を設定する。このことにより、T3ビットの値は、最下位PEから0000111100001111...が設定される。すなわち連続する8つのPE毎に連続する下位4つのPEのT3ビットは0に、上位4つのPEのT3ビットは1に設定される。STEP4からSTEP19までは、隣り合う2行のデータを対象に、これに内包される2×2部分行列の対角要素の交換処理を行うステップである。参照する現データをテンポラリレジスタTmR8、TmR9に複写し、演算マスクを用いて、格納位置のPEから距離1のPEシフトをともなうアキュムレータロード命令で参照位置のレジスタを読出すことでデータの移動配置を行い、特に、偶数もしくは奇数のPEが常に動作していることから処理の並列度が高いことを特徴としている。図15は本実施形態に係る行列転置方法において、STEP4~STEP7までの手順を実行後の行列データの配置を示す図である。また、図16は本実施形態に係る行列転置方法において、STEP19による2×2部分行列の処理終了時点での行列データの配置を示す図である。STEP20からSTEP35までは、隣り合う連続4行のデータを対象に、これに内包される4×4部分行列を対象にその中の対角ブロック2×2要素の交換処理を行うステップである。交換処理を行う2行データを対象に参照する現データをテンポラリレジスタTmR8、TmR9に複写し、演算マスクを用いて、格納位置のPEから距離2のPEシフトをともなうアキュムレータロード命令で参照位置のレジスタを読出すことでデータの移動配置を行い、特に、4つのPE毎に2つのPEが常に動作していることから処理の並列度が高いことを特徴としている。図17は本実施形態に係る行列転置方法において、STEP20~STEP23までの手順を実行後の行列データの配置を示す図である。図17から明らかなように、最初の2行分のデータ移動を行っている。図18は本実施形態に係る行列転置方法において、STEP24~STEP27までの手順を実行後の行列データの配置を示す図である。図18から明らかなように、次の2行分のデータ移動を行っている。これで前半の4×4部分行列の対角2×2要素ブロックの移動が完了している。図19は本実施形態に係る行列転置方法において、STEP24~STEP27、STEP28~STEP31、STEP32~STEP35までの手順を実行後の行列データの配置を示す図である。図19から明らかなように、2行目と6行目、3行目と7行目、4行目と8行目の配置変換がそれぞれ実施される。次いで、STEP36からSTEP59までは、最後に8行のデータを対象に、その対角ブロック4×4要素の交換処理を行うステップである。交換処理を行う2行データを対象に参照する現データをテンポラリレジスタTmR8、TmR9に複写し、演算マスクを用いて、格納位置のPEから距離4のPEシフトをともなうアキュムレータロード命令で参照位置のレジスタを読出すことでデータの移動配置を行い、特に、8つのPE毎に4つのPEが常に動作していることから処理の並列度が高いことを特徴としている。移動距離4の場合は、1段のPEシフトでは届かないので、2段のPEシフトで対応している。1段目は距離2のシフトを行ったデータをテンポラリレジスタに一時的に保存し、そのレジスタをさらに距離2のPEシフトで参照して距離4の移動配置を行う。1段目の距離2のPEシフトをともなう移動命令は全数のPEで同時並列に実行できるため、ステップ数の増加の影響は最小限にすることができる。図20は本実施形態に係る行列転置方法において、STEP36~STEP41までの手順を実行後の行列データの配置を示す図である。図20から明らかなように、最初の2行分のデータ移動を行っている。STEP36とSTEP37は、1行目のデータTmR0を距離2の下位へのPEシフトを行い、テンポラリレジスタTmR8に複写する手順である。同様に、STEP38とSTEP39は5行目のデータTmR4を距離2の上位へのPEシフトを行い、テンポラリレジスタTmR9に複写する手順である。以上は全てのPEで実行される。STEP40とSTEP41でさらに距離2のPEシフトを行って先のテンポラリレジスタを参照することで距離4のデータ移動、交換を実現している。以上は演算マスクビットの設定により、8つのPE毎に4つのPEで同時並列に実行される。以下同様にSTEP42~47、STEP48~53、STEP54~59実施後のデータ配置を以下の図に示す。すなわち、図21は本実施形態に係る行列転置方法において、STEP42~STEP47までの手順を実行後の行列データの配置を示す図である。また、図22は本実施形態に係る行列転置方法において、STEP48~STEP53までの手順を実行後の行列データの配置を示す図である。さらに、図23は本実施形態に係る行列転置方法において、STEP54~STEP59までの手順を実行後の行列データの配置を示す図である。以上説明したように、本実施形態によれば、2×2部分行列から始めて、2のべき乗次の行列である4×4、8×8行列を対象に各々対角位置のブロックのデータを一括交換する手順を順次行うステップを含んでいることが本実施形態の別の特徴である。本実施形態によれば、行列要素を1つずつ個々に多段の移動ステップと組み合わせて移動させていた自社従来例に比べて、データのPE間移動を2のべき乗の距離に分割して例えば7つの位置移動であれば、124のように組み合わせて移動することに結果としてなるそれぞれの2のべき乗距離の移動は並列に一括して行うため、回路及び命令セットで制限される最大のPEシフト量を超えるデータの移動においてもステップ数の増加が少なく効率が良いという特有の効果を有する。また、各部分行列の処理ステップでは、演算マスク値設定の工夫によって、2N個の連続位置のデータ毎に2N-1個N=1,2,...のデータを対応する連続PEを並列動作さることにより並列同時に移動可能となるステップを含んでいる特長的な処理手順が示されている。このことにより、並列動作するPEの数が常に最大に保たれており、並列処理効率はきわめて高い。以上の優位点から、自社従来例に比べて処理ステップは30強縮減され87個のステップ数から59個のステップ数に減縮、命令数も縮減されるのでコードサイズを減らすこともできる。さらにプロセッサに集積された最大PE数まで対象行列をマッピングすることで、複数の行列データを同時一括して並列処理することができるので処理全体のスループットは高くなる。できるだけ大量のデータをプロセッサ内に留め置き、並列処理を進め、外部キャッシュやメモリとのアクセス頻度を減らすことは全体のスループット向上に資すると認められる。もしくは、本実施形態では、2×2部分行列から始めて、4×4、8×8行列を対象に各々対角位置のブロックのデータを一括交換する手順を順次行うステップを含んでいるが、8×8行列から始めて順に4×4、2×2と繰り返し処理するステップに構成しても有効に機能することは明らかである。"