(57)【要約】【課題】データバスを介して読み込まれるデータの並び順とレジスタに設定すべきデータの並び順とが異なる場合でも、演算処理装置の処理能力を十分に引き出せるようにする。【解決手段】バス選択部６が、部分レジスタファイル４ａ，４ｂのそれぞれに、データバスＤを２分割してなる上位部分データバスＤＨ，及び下位部分データバスＤＬのいずれかを接続し、レジスタ選択部８が、各部分レジスタファイル４ａ，４ｂ毎に、バス選択部６により接続された部分データバスを介して供給されるデータの格納先となる部分レジスタを選択する。これにより、データバスＤを介してレジスタｒ１〜ｒ８にデータを読み込む際に、データの並び順を部分レジスタの大きさ毎に、任意に組み替えることができる。【選択図】　図１
2004139156.tif 000002
【特許請求の範囲】
【請求項１】
ｍ×ｎ（ｍ，ｎはいずれも正整数）ビット幅のデータバスを介してデータが入出力される複数のレジスタからなるレジスタファイルと、
該レジスタファイルを構成する各レジスタを、それぞれｎビット幅のｍ個の部分レジスタに分割し、各レジスタの同一桁の部分レジスタの集合からなるｍ個の部分レジスタファイル毎に、前記部分レジスタを一つずつ選択する部分レジスタ選択手段と、
前記データバスをｎビット幅のｍ個の部分データバスに分割し、前記部分レジスタファイル毎に、前記部分レジスタ選択手段が選択した部分レジスタに接続すべき前記部分データバスを選択する部分データバス選択手段と、
を備え、前記データバスを介して供給されるデータの配列を、前記部分データバス単位で組み替えて前記レジスタに格納することを特徴とする演算処理装置。
【請求項２】
単一の演算命令でレジスタを構成する各部分レジスタに対する演算を並列に処理するＳＩＭＤ演算を実行可能に構成されていることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記レジスタファイルを構成する各レジスタは二つの部分レジスタ（ｍ＝２）からなり、
前記部分レジスタ選択手段及び前記部分データバス選択手段は、３成分からなる二つのベクトルの外積演算が前記ＳＩＭＤ演算にて実行可能となるように、前記二つのベクトルの各成分を、６個のレジスタの各部分レジスタに格納することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記６個のレジスタの各部分レジスタに格納される二つのベクトルの各成分は、第１ベクトルの第１の成分と第２ベクトルの第１の成分、第１ベクトルの第２の成分と第２ベクトルの第２の成分、第１ベクトルの第３の成分と第２ベクトルの第３の成分はそれぞれ同一の属性を有し、
第１ベクトルの各成分は、第１の成分が第１の上位部分レジスタと第２の下位部分レジスタに、第２の成分が第１の下位部分レジスタと第３の上位部分レジスタに、第３の成分が第２の上位部分レジスタと第３の下位部分レジスタに格納され、
第２ベクトルの各成分は、第１の成分が第４の下位部分レジスタと第５の上位部分レジスタに、第２の成分が第４の上位部分レジスタと第６の下位部分レジスタに、第３の成分が第５の下位部分レジスタと第６の上位部分レジスタに格納されることを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記二つのベクトルにおいて同一の属性を有する成分は、立体空間における座標値を示すｘ成分，ｙ成分，ｚ成分からなり、前記第１の成分をｘ成分かつ前記第２の成分をｙ成分かつ前記第３の成分をｚ成分、又は前記第１の成分をｚ成分かつ前記第２の成分をｙ成分かつ前記第３の成分をｘ成分に対応させることを特徴とする請求項４記載の演算処理装置。
【請求項６】
シェーディングによる画像処理を実行することを特徴とする請求項３〜５いずれか記載の演算処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演算処理装置に関し、特にＳＩＭＤ演算を用いてベクトルの外積演算を実行する演算処理装置に関する。
【０００２】
【従来の技術】
従来より、演算処理装置では、処理の高速化のために様々な手法が用いられており、その一つとして、単一の演算命令で複数の演算器と複数のデータを扱って演算を並列に処理するＳＩＭＤ（Ｓｉｎｇｌｅ　Ｉｎｓｔｒｕｃｔｉｏｎ　Ｍｕｌｔｉｐｌｅ　Ｄａｔｅ）演算が知られている。
【０００３】
即ち、レジスタに格納されたデータに対して各種演算を実行する演算処理ユニットは、通常の命令では、レジスタに単一のデータが格納されているものとして処理するのに対して、ＳＩＭＤ演算では、ｍ×ｎ（ｍ，ｎはいずれも正整数）ビット幅のレジスタに、ｎビット幅のデータがｍ個詰め込まれているものとして、これらｍ個のデータを並列に処理するのである。
【０００４】
従って、ＳＩＭＤ演算を実行する演算処理ユニットを備えた演算処理装置は、音声処理や画像処理（特に３次元グラフィックス）等のように、大量のデータに対して同様の演算を繰り返し適用する必要がある処理に対して優れた処理能力が得られる。
【０００５】
ところで、３次元グラフィクスにて、大量に処理されるベクトルデータや座標データ（以下総称して単に「ベクトルデータ」という。）は、通常、ｘ，ｙ，ｚの３成分からなる。これらベクトルデータの各成分に対してＳＩＭＤ演算を実行する演算処理装置は、各成分がｎビット幅にて表される場合、２ｎ（つまりｍ＝２）又は４ｎ（ｍ＝４）ビット幅のデータバスやレジスタを備えることになる。
【０００６】
そして、メモリに格納されたベクトルデータをデータバスを介してレジスタに読み込む時には、異なるベクトルデータの成分が同時に転送されることのないように、メモリ上では、通常、図４に示すように、ｘ成分，ｙ成分，ｚ成分に続けてダミー成分（以下「ｗ成分」ともいう。）が挿入されている。なお、図中（ａ）は、メモリアクセスの最小単位がｎビットのメモリの場合、（ｂ）は、メモリアクセスの最小単位が２ｎビットのメモリの場合を示す。但し、ｎ＝３２である。
【０００７】
このため、ベクトルデータの転送時には、転送を２ｎビット単位で行う場合には２回に１度、４ｎビット単位で行う場合には毎回、ダミー成分が含まれることになり、転送効率が低下するだけでなく、他の成分と共にレジスタに読み込まれたダミー成分もＳＩＭＤ演算の対象となってしまうため、演算処理ユニットでの処理効率も低下してしまうという問題があった。
【０００８】
このようなダミー成分に対する無駄な演算を回避するには、メモリからレジスタに読み込んだデータを、レジスタ上で再配置すればよいが、レジスタ間転送という新たな処理を発生させてしまうことになる。即ち、３次元グラフィクスの処理においてＳＩＭＤ演算を行っても、バスの転送能力や演算処理装置の処理能力を最大限に引き出すことができなかった。
【０００９】
特に、ベクトル外積演算（（１）式参照）の際に必要となる６個の乗算結果をＳＩＭＤ演算を用いて求める場合には、内積演算（（２）式参照）やマトリクス演算を行う場合とは異なり、メモリに記憶されている各成分の並び順と、演算で対応させるべき成分の並び順とが一致しない。このため、メモリからレジスタに各成分を読み込んだ後、レジスタ上で各成分の再配置を行わなければ、ＳＩＭＤ演算を実行することができなかった。
【００１０】
【数１】
2004139156.tif 000003
【００１１】
ここで、図５は、ＳＩＭＤ演算が可能な演算処理装置におけるレジスタ周辺の構成を表すブロック図である。
なお、演算処理装置１０２は、レイトレーシングによるシェーディングを行う三次元グラフィクス処理を実行するものであり、データバスＤを介して接続されるメモリ（図示せず）には、少なくとも３次元のベクトルデータが格納されている。
【００１２】
また、メモリに格納されるベクトルデータの各成分は、ｎビットにて表され、このｎビットを１ワードとも呼ぶ。そして、データバスＤは２ワード分（２ｎビット）のビット幅を有しており、また、メモリは、１ワード単位又は２ワード単位でのアクセスが可能なように構成されているものとする。
【００１３】
図５に示すように、演算処理装置１０２は、２ワード分のビット幅を有するｐ個のレジスタｒ１〜ｒｐからなるレジスタファイル１０４と、データバスＤを介してメモリ等からデータの読込を行う時に、レジスタファイル１０４を構成する各レジスタｒ１〜ｒｐの中のいずれか一つを、レジスタ選択信号Ｃに従って指定するレジスタ選択部１０８と、プログラムを実行するコア部（図示せず）からの指令を受けて、レジスタ選択信号Ｃを生成する制御信号生成部１１０とを備えている。
【００１４】
そして、各レジスタｒ１〜ｒｐの上位ｎビットからなる上位ワードｒｉｈ（ｉ＝１〜ｐ）は、内部上位バスＩＤＨを介して、また、下位ｎビットからなる下位ワードｒｉｌは、内部下位バスＩＤＬを介して、ＳＩＭＤ演算を実行可能な演算処理ユニット（図示せず）等に接続されている。つまり、演算処理ユニットは、レジスタｒ１〜ｒｐをそのまま用いた２ワードデータの単一演算（例えばｒ１×ｒ２）だけでなく、上位ワード同士、及び下位ワード同士で行う１ワードデータの並列演算（例えばｒ１ｈ×ｒ２ｈ，ｒ１ｌ×ｒ２ｌ）も実行可能なように構成されている。
【００１５】
なお、演算処理装置１０２は、バスサイジング機能を有しており、１ワード単位でレジスタにデータを読み込んだ時には、レジスタの下位ワードｒｉｌにデータが格納される。
また、メモリには、図４（ａ）に示すように、ｍｍ１番地にベクトルＡのｘ成分Ａｘ、ｍｍ１＋１番地にベクトルＡのｙ成分Ａｙ、ｍｍ１＋２番地にベクトルＡのｚ成分Ａｚ、ｍｍ＋３番地にベクトルＡのｗ（ダミー）成分Ａｗが格納され、同様に、ｍｍ２番地にベクトルＢのｘ成分Ｂｘ、ｍｍ２＋１番地にベクトルＢのｙ成分Ｂｙ、ｍｍ２＋２番地にベクトルＢのｚ成分Ｂｚ、ｍｍ２＋３番地にベクトルＢのｗ（ダミー）成分Ｂｗが格納されているものとする。
【００１６】
このように構成された演算処理装置１０２では、ＳＩＭＤ演算にてベクトル外積演算を行う場合、図６に示す手順に従って、メモリからレジスタへのデータ（両ベクトルの各成分）の読込、ＳＩＭＤ演算に適したデータ配列となるようにレジスタ上でのデータの再配置を行う。
【００１７】
即ち、まず、ベクトル外積演算の演算対象となる両ベクトルＡ，Ｂの各成分Ａｚ，Ａｙ．Ａｚ，Ｂｘ，Ｂｙ，Ｂｚを、１ワード単位でのメモリアクセスを用いて、レジスタｒ７〜ｒ１２の下位ワードに順次読み込んだ後［ステップＳ１０１〜Ｓ１０６］、これらレジスタｒ７〜ｒ１２に格納された各成分を、ベクトル外積演算で必要な６個の乗算結果Ａｘ・Ｂｙ、Ａｙ・Ｂｘ、Ａｚ・Ｂｘ、Ａｘ・Ｂｚ、Ａｙ・Ｂｚ、Ａｚ・ＢｙがＳＩＭＤ演算にて得られるように２個ずつ組み合わせて、レジスタｒ１〜ｒ６に格納する［ステップＳ１０７〜Ｓ１１２］。
【００１８】
このように、各ステップを動作クロックの１サイクルにて実行可能であるとすると、ＳＩＭＤ演算を開始するまでに、１２サイクルもの期間が費やされることになる。つまり、ベクトル演算を行う場合には、ＳＩＭＤ演算を用いても、処理時間を大幅には短縮することができなかったのである。
【００１９】
これに対して、レジスタに格納された各成分の配列を並び替えるための専用回路（ツイスト及びジップユニット７４／混合回路１５）を設けた装置が知られている（例えば特許文献１，特許文献２。）
【００２０】
【特許文献１】特開平８−３２８８４９号公報
（例えば、段落「００４８」〜「００７４」，図９〜図１３）
【００２１】
【特許文献２】特開平９−１６３９７号公報
（例えば、段落「００１８」〜「００２０」，図２）
【００２２】
【発明が解決しようとする課題】
しかし、これらの専用回路では、レジスタ上でのデータの再配置を高速に行うことが可能となるが、多くのマルチプレクサが用いられており、回路構成が複雑化し且つ大規模化してしまうという問題があった。
【００２３】
本発明は、上記問題点を解決するために、データバスを介して読み込まれるデータの並び順とレジスタに設定すべきデータの並び順とが異なる場合でも、演算処理装置の処理能力を十分に引き出せるようにすることを目的とする。
【００２４】
【課題を解決するための手段】
上記目的を達成するための発明である請求項１記載の演算処理装置では、ｍ×ｎ（ｍ，ｎはいずれも正整数）ビット幅のデータバスを介してデータが入出力される複数のレジスタからなるレジスタファイルを備えている。そして、このレジスタファイルを構成する各レジスタを、それぞれｎビット幅のｍ個の部分レジスタに分割し、各レジスタの同一桁の部分レジスタを集めたものを、部分レジスタファイルと呼び、データバスをｎビット幅に分割したものを部分データバスと呼ぶ。
【００２５】
なお、同一桁の部分レジスタとは、例えば各レジスタのビット幅が３ｎビットであり、これをｎビット幅の３個の部分レジスタに分割した場合には、上位ｎビットの部分レジスタ同士、中位ｎビットの部分レジスタ同士、下位ｎビットの部分レジスタ同士のことを言う。
【００２６】
そして、部分レジスタ選択手段が、これらｍ個の部分レジスタファイル毎に、部分レジスタを一つずつ選択すると共に、部分データバス選択手段が、ｍ個の部分データバスの中から、部分レジスタファイル毎に、部分レジスタ選択手段が選択した部分レジスタに接続すべき部分データバスを選択することにより、データバスを介して供給されるデータの配列を、部分データバス単位で組み替えてレジスタに格納する。
【００２７】
このように、本発明の演算装置によれば、データバスを介して各レジスタにデータを読み込む際に、データの配列を部分データバス単位で組み替えることができるため、データバスに接続されたメモリなどから供給されるデータの並び順と、実際の処理のためにレジスタに格納すべきデータの並び順とが異なっていても、レジスタに読み込んでから再配列のための処理を別途行う必要がなく、処理時間を短縮することができる。
【００２８】
しかも、このようなデータの並び順の組み替えを、部分レジスタ選択手段及び部分データバス選択手段にて２段階の選択を行うという簡易な構成にて実現しているため、装置構成を小型化できる。
ところで、このようなデータの並び順の組み替えは、請求項２記載のように、単一の演算命令でレジスタを構成する各部分レジスタに対する演算を並列に処理するＳＩＭＤ演算を実行可能に構成された演算処理装置にて、ＳＩＭＤ演算に使用するデータを各部分レジスタに設定する際に有効に使用することができる。
【００２９】
そして、請求項３記載の演算処理装置では、レジスタファイルを構成する各レジスタは二つの部分レジスタ（ｍ＝２）からなり、部分レジスタ選択手段及び部分データバス選択手段は、３成分からなる二つのベクトルの外積演算がＳＩＭＤ演算にて実行可能となるように、前記二つのベクトルの各成分を、６個のレジスタの各部分レジスタに格納する。
【００３０】
つまり、ベクトル外積演算では、二つのベクトルの各成分が、乗算の際に互いに異なる成分と組み合わされるため（（１）式参照）、この乗算をＳＩＭＤ演算にて実行可能とするためには、データ配列の組み替えが必須となる。この組み替えを、部分データバス選択手段と部分レジスタ選択手段とを用いて行うことにより、ベクトル外積演算を効率よく行うことができる。
【００３１】
なお、６個のレジスタの各部分レジスタに格納される二つのベクトルの各成分は、第１ベクトルの第１の成分と第２ベクトルの第１の成分、第１ベクトルの第２の成分と第２ベクトルの第２の成分、第１ベクトルの第３の成分と第２ベクトルの第３の成分はそれぞれ同一の属性を有するものとした場合には、請求項４記載のように、第１ベクトルの各成分は、第１の成分が第１の上位部分レジスタと第２の下位部分レジスタに、第２の成分が第１の下位部分レジスタと第３の上位部分レジスタに、第３の成分が第２の上位部分レジスタと第３の下位部分レジスタに格納され、第２ベクトルの各成分は、第１の成分が第４の下位部分レジスタと第５の上位部分レジスタに、第２の成分が第４の上位部分レジスタと第６の下位部分レジスタに、第３の成分が第５の下位部分レジスタと第６の上位部分レジスタに格納されるようにすればよい。
【００３２】
また、この場合、二つのベクトルにおいて同一の属性を有する成分は、立体空間における座標値を示すｘ成分，ｙ成分，ｚ成分からなるものとした場合には、請求項５記載のように、前記第１の成分をｘ成分かつ前記第２の成分をｙ成分かつ前記第３の成分をｚ成分、又は前記第１の成分をｚ成分かつ前記第２の成分をｙ成分かつ前記第３の成分をｘ成分に対応させればよい。
【００３３】
そして、本発明は、請求項６記載のように、レイトレーシングやＺバッファ等のシェーディングによる画像処理を実行する演算処理装置に適用した場合に、大きな効果を得ることができる。
即ち、これらの処理では、光線を反射する面の法線ベクトルを求める必要があり、この法線ベクトルの算出にベクトル外積演算が使用され、ベクトル外積演算を実行する比率が高いため、処理速度の大幅に向上させることができる。
【００３４】
【発明の実施の形態】
以下に本発明の実施形態を図面と共に説明する。
図１は、実施形態の演算処理装置の主要部を示すブロック図であり、ここでは、従来装置とは構成の異なるレジスタ周辺の構成のみを示す。なお、本実施形態の演算処理装置は、従来装置と同様に、レイトレーシングによるシェーディングを行う三次元グラフィクス処理を実行するためのものであり、データバスＤを介して接続されるメモリ（図示せず）には、少なくとも３次元のベクトルデータや座標データ（以下、総称して「ベクトルデータ」と呼ぶ。）が格納されている。
【００３５】
また、メモリに格納されるベクトルデータの各成分は、ｎ（本実施形態ではｎ＝３２）ビットにて表され、このｎビットを１ワードとも呼ぶ。そして、データバスは２ワード分（２ｎビット）のビット幅を有しており、また、メモリは、１ワード単位又は２ワード単位でのアクセスが可能なように構成されている。
【００３６】
図１に示すように、本実施形態の演算処理装置２は、２ワード分のビット幅を有する８個のレジスタｒ１〜ｒ８からなるレジスタファイル４を備えている。このレジスタファイル４を構成する各レジスタｒｉ（ｉ＝１〜８）は、それぞれが１ワード分のデータ幅を有する一対の部分レジスタｒｉｈ，ｒｉｌからなり、上位の部分レジスタｒ１ｈ〜ｒ８ｈを総称して上位部分レジスタファイル４ａ、下位の部分レジスタｒ１ｌ〜ｒ８ｌを総称して下位部分レジスタファイル４ｂとも呼ぶ。
【００３７】
また本実施形態の演算処理装置２は、２ｎビット幅を有するデータバスＤを、上位ｎビットからなる上位部分データバスＤＨと下位ｎビットからなる下位部分データバスＤＬとに分け、２ビットのバス選択信号Ｓ（Ｓ０，Ｓ１）に従って、部分レジスタファイル４ａ，４ｂのそれぞれに、両部分データバスＤＨ，ＤＬのいずれかを接続する部分データバス選択手段としてのバス選択部６と、バス選択部６により上位部分レジスタファイル４ａに接続された部分データバスを介して供給されるデータの格納先を、３ビットのレジスタ選択信号ＣＨ（ＣＨ０〜ＣＨ２）に従って、部分レジスタｒ１ｈ〜ｒ８ｈの中から選択すると共に、バス選択部６により下位部分レジスタファイル４ｂに接続された部分データバスを介して供給されるデータの格納先を、３ビットのレジスタ選択信号ＣＬ（ＣＬ０〜ＣＬ２）に従って、部分レジスタｒ１ｌ〜ｒ８ｌの中から選択する部分レジスタ選択手段としてのレジスタ選択部８と、プログラムを実行する図示しないコア部からの指令に従って、バス選択信号Ｓ、レジスタ選択信号ＣＨ，ＣＬを生成する制御信号生成部１０とを備えている。
【００３８】
このうち、バス選択部６は、バス選択信号Ｓ０に従って上位部分レジスタファイル４ａに接続する部分データバスを選択する第１セレクタと、バス選択信号Ｓ１に従って下位部分レジスタファイル４ｂに接続する部分データバスを選択する第２セレクタとからなる。
【００３９】
具体的には、図２（ａ）に示すように、第１セレクタは、Ｓ０＝０の時には上位部分データバスＤＨ、Ｓ０＝１の時には下位部分データバスＤＬを選択し、第２セレクタは、Ｓ１＝０の時には下位部分データバスＤＬ、Ｓ１＝１の時には上位部分データバスＤＨを選択するように構成されている。
【００４０】
また、レジスタ選択部８は、レジスタ選択信号ＣＨに従って、部分レジスタｒ１ｈ〜ｒ８ｈのいずれかを選択する第１マルチプレクサと、レジスタ選択信号ＣＬに従って、部分レジスタｒ１ｌ〜ｒ８ｌのいずれかを選択する第２マルチプレクサとからなる。
【００４１】
具体的には、第１マルチプレクサは、図２（ｂ）に示すように、ＣＨ０〜ＣＨ２のビットパターンを２進数としてみた数値ｋ（ｋ＝０〜７）に従い、ｉ＝ｋ＋１として、レジスタｒｉｈを選択するように構成されている。これと同様に、第２マルチプレクサは、図２（ｃ）に示すように、ＣＬ０〜ＣＬ２のビットパターンを２進数としてみた数値ｋ（ｋ＝０〜７）に従い、ｉ＝ｋ＋１として、レジスタｒｉｌを選択するように構成されている。
【００４２】
そして、上位部分レジスタファイル４ａを構成する各部分レジスタｒｉｈは内部上位バスＩＤＨを介して、また、下位部分レジスタファイル４ｂを構成する各部分レジスタｒｉｌは内部下位バスＩＤＬを介して、ＳＩＭＤ演算が可能な演算処理ユニット（図示せず）等に接続されている。つまり、演算処理ユニットは、レジスタｒ１〜ｒｐをそのまま用いた２ワードデータの単一演算だけでなく、上位部分レジスタファイル４ａを構成する各部分レジスタ（ｒ１ｈ〜ｒ８ｈ）同士、及び下位部分レジスタファイル４ｂを構成する各部分レジスタ（ｒ１ｌ〜ｒ８ｌ）同士で行う１ワードデータの並列演算も実行可能なように構成されている。
【００４３】
なお、メモリには、図４（ａ）に示すように、ｍｍ１番地にベクトルＡのｘ成分Ａｘ、ｍｍ１＋１番地にベクトルＡのｙ成分Ａｙ、続くｍｍ１＋２番地にベクトルＡのｚ成分Ａｚ、ｍｍ１＋３番地にベクトルＡのｗ（ダミー）成分Ａｗが格納され、同様に、ｍｍ２番地にベクトルＢのｘ成分Ｂｘ、ｍｍ２＋１番地にベクトルＢのｙ成分Ｂｙ、ｍｍ２＋２番地にベクトルＢのｚ成分Ｂｚ、ｍｍ２＋３番地にベクトルＢのｗ（ダミー）成分Ｂｗが格納されているものとする。
【００４４】
このように構成された演算処理装置２では、ベクトルＡ（Ａｘ，Ａｙ，Ａｚ）とベクトルＢ（Ｂｘ，Ｂｙ，Ｂｚ）の外積演算をＳＩＭＤ演算により実行する際に、以下に示すステップＳ１〜Ｓ６に従って、メモリアクセスと制御信号生成部１０でのバス選択信号Ｓ及びレジスタ選択信号ＣＨ，ＣＬの生成とを行い、各演算要素（ベクトル成分）を、ＳＩＭＤ演算の実行に適した並び順にしてレジスタｒ１〜ｒ６に格納する。
【００４５】
なお、各ステップは、いずれも動作クロックの１サイクルにて実行される。また、以下では、Ｓ＝［Ｓ０，Ｓ１］、ＣＨ＝［ＣＨ０，ＣＨ１，ＣＨ２］、ＣＬ＝［ＣＬ０，ＣＬ１，ＣＬ２］とする。
［ステップＳ１］
・メモリアクセス　：アドレスｍｍ１（２ワードアクセス）
・バス選択信号　　：Ｓ＝［０，１］
・レジスタ選択信号：ＣＨ＝［０，０，０］，ＣＬ＝［０，０，１］
これにより、アドレスｍｍ１，ｍｍ＋１に格納された２ワードデータのうち、バス選択信号Ｓにて選択された上位ワード（アドレスｍｍ１）のデータ、即ちベクトルＡのｘ成分Ａｘが、レジスタ選択信号ＣＨ，ＣＬにて選択されたｒ１ｈ，ｒ２ｌに、それぞれ格納される（レジスタ格納値：ｒ１ｈ←Ａｘ，ｒ２ｌ←Ａｘ）。
［ステップＳ２］
・メモリアクセス　：アドレスｍｍ１（２ワードアクセス）
・バス選択信号　　：Ｓ＝［１，０］
・レジスタ選択信号：ＣＨ＝［０，１，０］，ＣＬ＝［０，０，０］
これにより、アドレスｍｍ１，ｍｍ＋１に格納された２ワードデータのうち、バス選択信号Ｓにて選択された下位ワード（アドレスｍｍ１＋１）のデータ、即ちベクトルＡのｙ成分Ａｙが、レジスタ選択信号ＣＨ，ＣＬにて選択されたｒ３ｈ，ｒ１ｌに、それぞれ格納される（レジスタ格納値：ｒ３ｈ←Ａｙ，ｒ１ｌ←Ａｙ）。
［ステップＳ３］
・メモリアクセス　：アドレスｍｍ１＋２（２ワードアクセス）
・バス選択信号　　：Ｓ＝［０，１］
・レジスタ選択信号：ＣＨ＝［０，０，１］，ＣＬ＝［０，１，０］
これにより、アドレスｍｍ１＋２，ｍｍ１＋３に格納された２ワードデータのうち、バス選択信号Ｓにて選択された上位ワード（アドレスｍｍ１＋２）のデータ、即ちベクトルＡのｚ成分Ａｚが、レジスタ選択信号ＣＨ，ＣＬにて選択されたｒ２ｈ，ｒ３ｌに、それぞれ格納される（レジスタ格納値：ｒ２ｈ←Ａｚ，ｒ３ｌ←Ａｚ）。
［ステップＳ４］
・メモリアクセス　：アドレスｍｍ２（２ワードアクセス）
・バス選択信号　　：Ｓ＝［０，１］
・レジスタ選択信号：ＣＨ＝［１，０，０］，ＣＬ＝［０，１，１］
これにより、アドレスｍｍ２，ｍｍ２＋１に格納された２ワードデータのうち、バス選択信号Ｓにて選択された上位ワード（アドレスｍｍ２）のデータ、即ちベクトルＢのｘ成分Ｂｘが、レジスタ選択信号ＣＨ，ＣＬにて選択されたｒ５ｈ，ｒ４ｌに、それぞれ格納される（レジスタ格納値：ｒ５ｈ←Ｂｘ，ｒ４ｌ←Ｂｘ）。
［ステップＳ５］
・メモリアクセス　：アドレスｍｍ２（２ワードアクセス）
・バス選択信号　　：Ｓ＝［１，０］
・レジスタ選択信号：ＣＨ＝［０，１，１］，ＣＬ＝［１，０，１］
これにより、アドレスｍｍ２，ｍｍ２＋１に格納された２ワードデータのうち、バス選択信号Ｓにて選択された下位ワード（アドレスｍｍ２＋１）のデータ、即ちベクトルＢのｙ成分Ｂｙが、レジスタ選択信号ＣＨ，ＣＬにて選択されたｒ４ｈ，ｒ６ｌに、それぞれ格納される（レジスタ格納値：ｒ４ｈ←Ｂｙ，ｒ６ｌ←Ｂｙ）。
［ステップＳ６］
・メモリアクセス　：アドレスｍｍ２＋２（２ワードアクセス）
・バス選択信号　　：Ｓ＝［０，１］
・レジスタ選択信号：ＣＨ＝［１，０，１］，ＣＬ＝［１，０，０］
これにより、アドレスｍｍ２＋２，ｍｍ２＋３に格納された２ワードデータのうち、バス選択信号Ｓにて選択された上位ワード（アドレスｍｍ２＋２）のデータ、即ちベクトルＢのｚ成分Ｂｚが、レジスタ選択信号ＣＨ，ＣＬにて選択されたｒ６ｈ，ｒ５ｌに、それぞれ格納される（レジスタ格納値：ｒ６ｈ←Ｂｚ，ｒ５ｌ←Ｂｚ）。
【００４６】
このようなステップＳ１〜Ｓ６により、各レジスタｒ１〜ｒ６に格納されたデータを演算要素として、レジスタｒ１，ｒ４、レジスタｒ２，ｒ５、レジスタｒ３，ｒ６の間でＳＩＭＤ演算を実行して、上位部分レジスタの値同士、下位部分レジスタの値同士で乗算を行うことにより、ベクトル外積を求める際に必要な６つの乗算値、Ａｘ・Ｂｙ、Ａｙ・Ｂｘ、Ａｚ・Ｂｘ、Ａｘ・Ｂｚ、Ａｙ・Ｂｚ、Ａｚ・Ｂｙを得る。
【００４７】
以上説明したように、本実施形態の演算処理装置２では、データバスＤを介してレジスタファイル４を構成するレジスタｒ１〜ｒ８にデータを読み込む際に、データの並び順を１ワード（部分レジスタ／部分データバスＤＨ，ＤＬ）毎に、任意に組み替えることができる。このため、データバスＤを介してメモリから供給されるデータの並び順と、実際の処理のためにレジスタｒ１〜ｒ８に格納すべきデータの並び順とが異なっていても、レジスタｒ１〜ｒ８に読み込んでから再配列のための処理を別途行う必要がなく、処理時間を短縮することができる。
【００４８】
しかも、このようなデータの並び順の組み替えを、セレクタからなる部分レジスタ選択部、及びマルチプレクサからなるバス選択部により簡易な構成にて実現しているため、装置構成を小型化できる。
なお、本実施形態では、ベクトル外積演算用のデータを各レジスタに設定するステップＳ１〜Ｓ６において、上位部分データバスＤＨ又は下位部分データバスＤＬのいずれかを選択し、同一ステップにて両部分レジスタファイル４ａ，４ｂに同じ部分データバスが接続されるように制御しているが、以下に示すステップＳ１１〜Ｓ１６（但し、ステップＳ１３，Ｓ１６は、それぞれステップＳ３，Ｓ６と同じ）に示すように、同一ステップにて両部分レジスタファイル４ａ，４ｂに、互いに異なる部分データバスが接続されるように制御してもよい。
［ステップＳ１１］
・メモリアクセス　：アドレスｍｍ１（２ワードアクセス）
・バス選択信号　　：Ｓ＝［０，０］
・レジスタ選択信号：ＣＨ＝［０，０，０］，ＣＬ＝［０，０，０］
（レジスタ格納値　：ｒ１ｈ←Ａｘ，ｒ１ｌ←Ａｙ）
［ステップＳ１２］
・メモリアクセス　：アドレスｍｍ１（２ワードアクセス）
・バス選択信号　　：Ｓ＝［１，１］
・レジスタ選択信号：ＣＨ＝［０，１，０］，ＣＬ＝［０，０，１］
（レジスタ格納値　：ｒ３ｈ←Ａｙ，ｒ２ｌ←Ａｘ）
［ステップＳ１３］
・メモリアクセス　：アドレスｍｍ１＋２（２ワードアクセス）
・バス選択信号　　：Ｓ＝［０，１］
・レジスタ選択信号：ＣＨ＝［０，０，１］，ＣＬ＝［０，１，０］
（レジスタ格納値　：ｒ２ｈ←Ａｚ，ｒ３ｌ←Ａｚ）
［ステップＳ１４］
・メモリアクセス　：アドレスｍｍ２（２ワードアクセス）
・バス選択信号　　：Ｓ＝［０，０］
・レジスタ選択信号：ＣＨ＝［１，０，０］，ＣＬ＝［１，０，１］
（レジスタ格納値　：ｒ５ｈ←Ｂｘ，ｒ６ｌ←Ｂｙ）
［ステップＳ１５］
・メモリアクセス　：アドレスｍｍ２（２ワードアクセス）
・バス選択信号　　：Ｓ＝［１，１］
・レジスタ選択信号：ＣＨ＝［０，１，１］，ＣＬ＝［０，１，１］
（レジスタ格納値　：ｒ４ｈ←Ｂｙ，ｒ４ｌ←Ｂｘ）
［ステップＳ１６］
・メモリアクセス　：アドレスｍｍ２＋２（２ワードアクセス）
・バス選択信号　　：Ｓ＝［０，１］
・レジスタ選択信号：ＣＨ＝［１，０，１］，ＣＬ＝［１，０，０］
（レジスタ格納値　：ｒ６ｈ←Ｂｚ，ｒ５ｌ←Ｂｚ）
このステップＳ１１〜Ｓ１６に従って制御した場合、各部分レジスタにデータが格納される順番が異なるだけで、上記実施形態と同じ処理量、且つ同じ並び順で、レジスタｒ１〜ｒ６に演算要素（ベクトルＡ，Ｂの各成分）を設定することができる。
【００４９】
また、上記実施形態では、１ワード単位でアドレスを付与したメモリを用いることにより、メモリアクセスの最小単位が１ワードとされているが、図４（ｂ）に示すように、２ワード単位でアドレスを付与したメモリを用いることにより、メモリアクセスの最小単位が２ワードとされていてもよい。
【００５０】
また、上記実施形態では、ｍ×ｎビットのデータバス、レジスタファイルにおいて、ｍ＝２の場合を用いて説明してきたが、ｍは２に限定されることはなく、２ｋ　（ｋは正整数）の構成とすることができ、ｋを大きくすることにより、データの並び順の組み換え時間の高速化、演算回路の小型化などの効果をより向上させることができる。
【図面の簡単な説明】
【図１】実施形態の演算処理装置におけるレジスタ周辺の構成を示すブロック図である。
【図２】バス選択部を構成するセレクタ、及びレジスタ選択部を構成するマルチプレクサの動作を説明するための表である。
【図３】ベクトル外積演算をＳＩＭＤ演算にて行う準備として、レジスタに演算要素を設定する際の手順を示す説明図である。
【図４】メモリへのベクトルデータの格納状態を示す説明図である。
【図５】従来装置におけるレジスタ周辺の構成を示すブロック図である。
【図６】従来装置にてベクトル外積演算をＳＩＭＤ演算にて行う準備として、レジスタに演算要素を設定する際の手順を示す説明図である。
【符号の説明】
２…演算処理装置、４…レジスタファイル、４ａ…上位部分レジスタファイル、４ｂ…下位部分レジスタファイル、６…バス選択部、８…レジスタ選択部、１０…制御信号生成部、データバス…Ｄ、ＩＤＬ…内部下位バス、ＩＤＨ…内部上位バス。
【図１】
2004139156.tif 000004
【図２】
2004139156.tif 000005
【図３】
2004139156.tif 000006
【図４】
2004139156.tif 000007
【図５】
2004139156.tif 000008
【図６】
2004139156.tif 000009