(57)【要約】      （修正有）【課題】他のプロセッサの演算結果を即座に使用でき、ホストプロセッサ無しで並列処理を行うことができるマルチプロセッサシステムを提供すること。【解決手段】本マルチプロセッサシステムは、複数の演算実行部PC0〜PC3と、入力先となる演算実行部を切り替えるクロスバスイッチ１２０と、クロスバスイッチに接続され、前記複数の演算実行部がアクセス可能なクロスバスイッチレジスタXR0〜XR3と、命令コードに基づき、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるようにクロスバスイッチを制御するためのクロスバスイッチ制御命令生成部と、を含み、クロスバスイッチ１２０は、クロスバスイッチ制御命令に基づいて、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるように制御する。【選択図】図２
2007249698.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムであって、
複数の演算実行部と、
前記複数の演算実行部及び当該複数の演算実行部に対する入力データ信号に接続され、入力データ信号と入力先となる演算実行部を切り替えるクロスバスイッチと、
前記クロスバスイッチに接続され、前記複数の演算実行部がアクセス可能なクロスバスイッチレジスタと、
命令コードに基づき、前記複数の演算実行部のアクセス対象が前記クロスバスイッチである場合には、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるようにクロスバスイッチを制御するためのクロスバスイッチ制御命令を生成するクロスバスイッチ制御命令生成部と、を含み、
前記クロスバスイッチは、
前記クロスバスイッチ制御命令に基づいて、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるように制御することを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１において、
前記クロスバスイッチ制御命令生成部は、
命令コードにクロスバスイッチレジスタの指定が含まれているかいなか判断し、含まれている場合には場合には、クロスバスイッチ制御命令を生成することを特徴とするマルチプロセッサシステム。
【請求項３】
請求項１乃至２のいずれかにおいて、
前記クロスバスイッチ制御命令生成部は、
演算実行部に供給するクロックの２倍の周波数のクロックが供給され、当該クロックで動作することを特徴とするマルチプロセッサシステム。
【請求項４】
請求項１乃至３のいずれかにおいて、
複数の演算実行部の同期が必要な処理を並列に実行するための命令と、それ以外の命令がメモリ空間において分けて配置されているインストラクションメモリと、
前記インストラクションメモリのメモリマップを記憶するメモリマップ記憶部と、
メモリマップ記憶部を参照して各演算実行部が実行する命令アドレスを生成する命令アドレス生成部と、
を含むことを特徴とするマルチプロセッサシステム。
【請求項５】
請求項４において、
前記命令アドレス生成部は、
前記メモリマップ記憶部を参照して、複数の演算実行部の同期が必要な処理である並列処理への移行の発生を検出することを特徴とするマルチプロセッサシステム。
【請求項６】
請求項４乃至５のいずれかにおいて、
演算実行部は、
各演算実行部が同期をとるための情報を含むステータスレジスタを含み、
複数の演算実行部の同期が必要な処理である並列処理への移行時に前記ステータスレジスタの情報に基づき並列処理の開始タイミングを判断することを特徴とするマルチプロセッサシステム。
【請求項７】
請求項１乃至６のいずれかにおいて
複数の演算実行部間で同期をとる必要のない処理が実行される独立処理モード又は複数の演算実行部間で同期をとる必要のある処理が実行される並列処理モードのいずれであるかを示す情報を格納するための処理モードレジスタを含み、
前記クロスバスイッチ制御命令生成部は、
前記処理モードレジスタが並列処理モードであることを示している場合には、並列処理用の割り当てに従って命令を解析してクロスバスイッチ制御命令を生成することを特徴とするマルチプロセッサシステム。
【請求項８】
請求項１乃至７のいずれかにおいて、
演算実行部は、
並列処理を行う場合に、所与の１つの演算実行部を経由してデータのアクセスを行うことを特徴とするマルチプロセッサシステム。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記複数の演算実行部は、
ＲＩＳＣ型プロセッサであることを特徴とするマルチプロセッサシステム。
【請求項１０】
複数の演算実行部と、
前記複数の演算実行部及び当該複数の演算実行部に対する入力データ信号に接続され、入力データ信号と入力先となる演算実行部を切り替えるクロスバスイッチと、
前記クロスバスイッチに接続され、前記複数の演算実行部がアクセス可能なクロスバスイッチレジスタとを含むマルチプロセッサシステムの制御方法であって、
命令コードに基づき、前記複数の演算実行部のアクセス対象が前記クロスバスイッチである場合には、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるようにクロスバスイッチを制御するためのクロスバスイッチ制御命令を生成するステップと、
前記クロスバスイッチ制御命令に基づいて、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるようにクロスバスイッチを制御するステップを含むことを特徴とするマルチプロセッサシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム及びその制御方法に関する。
【背景技術】
【０００２】
近年、例えばコンピュータグラフィックス等の分野において多数のデータを短時間に処理し、ユーザーの要求に従ってリアルタイムに画像表示する要求が強まっている。このような要求に対して、複数のプロセッサがそれぞれ並列計算を行い、ホストプロセッサがそれらの演算結果を統合し全体の動作を管理するようなマルチプロセッサシステムで対応することが行われていた。
【特許文献１】特開平５−８１２１６号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところが、プロセッサ間のデータの引渡しは共有メモリを介して行うのが一般的であり、あるプロセッサの演算結果をメモリアクセスを行わずに他のプロセッサがオペランドとして直接に使用する事は出来ないという問題があった。
【０００４】
またマルチプロセッサによる並列処理を行うに当たり、各プロセッサ間のデータ交換を指示したり、並列処理モードから独立処理モードに移行する時の各プロセッサ間の同期管理を行うために実行プロセッサとは別にいわゆるハウスキーピング的な役割を果たすホストプロセッサが必要となるという問題点があった。
【０００５】
本発明は以上の問題点に鑑みてなされたものであり、その目的とするところは、他のプロセッサの演算結果を即座に使用でき、ホストプロセッサ無しで並列処理を行うことができるマルチプロセッサシステムを提供することである。
【課題を解決するための手段】
【０００６】
（１）本発明は、
マルチプロセッサシステムであって、
複数の演算実行部と、
前記複数の演算実行部及び当該複数の演算実行部に対する入力データ信号に接続され、入力データ信号と入力先となる演算実行部を切り替えるクロスバスイッチと、
前記クロスバスイッチに接続され、前記複数の演算実行部がアクセス可能なクロスバスイッチレジスタと、
命令コードに基づき、前記複数の演算実行部のアクセス対象が前記クロスバスイッチである場合には、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるようにクロスバスイッチを制御するためのクロスバスイッチ制御命令を生成するクロスバスイッチ制御命令生成部と、を含み、
前記クロスバスイッチは、
前記クロスバスイッチ制御命令に基づいて、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるように制御することを特徴とする。
【０００７】
複数の演算実行部の演算結果データがクロスバスイッチレジスタに格納されるように構成し、クロスバスイッチレジスタの値がクロスバスイッチを介して複数の演算実行部に入力されるように構成することで、クロスバスイッチレジスタが前記複数の演算実行部からアクセス可能に構成することができる。
【０００８】
なおクロスバスイッチレジスタは複数でもよい。例えば演算実行部と同数のクロスバスイッチレジスタをもたせるようにしてもよい。
【０００９】
また前記クロスバスイッチは、前記複数の演算実行部の入出力とクロスバスイッチレジスタの接続を切り替えることやクロスバスイッチレジスタへの入出力のイネーブル、ディセーブルを制御することで、前記クロスバスイッチ制御命令に基づいて前記複数の演算実行部がアクセス対象であるクロスバスイッチレジスタに対してアクセス可能となるようにしてもよい。
【００１０】
ここにおいて演算実行部とは、プロセッサのうち演算処理機能のみを有するコア部であり、クロスバスイッチレジスタとは例えばバッファーレジスタのことである。
【００１１】
またクロスバスイッチとは、複数の演算実行部と入力データ信号とクロスバスイッチレジスタとの接続切替器のことである。
【００１２】
本発明によれば、複数の演算実行部が並列処理を行うに際して実行する命令がクロスバスイッチレジスタへのアクセスを行う場合には、当該クロスバスイッチレジスタに接続されるようにクロスバスイッチ制御命令が生成され、これによりクロスバスイッチを切替える。
【００１３】
従って各演算実行部は任意のクロスバスイッチレジスタにアクセスすることができ、他の演算実行部の実行結果をクロスバスイッチレジスタを介してうけとることができる。
【００１４】
これにより例えば、バタフライ演算等のようにそれぞれの演算結果を相互に利用する必要がある場合に、第１の演算実行部の演算結果をクロスバスイッチレジスタに格納し、第２の演算実行部のソースとして利用することができる。
【００１５】
このようにクロスバスイッチ制御命令でクロスバスイッチを切り替えることで、他のプロセッサの演算結果を即座に使用でき、かつハウスキーピング的な機能を有するホストプロセッサ無しで複数の演算実行部が連携処理を行うことができる。
【００１６】
（２）本発明のマルチプロセッサシステムは、
前記クロスバスイッチ制御命令生成部は、
命令コードにクロスバスイッチレジスタの指定が含まれているかいなか判断し、含まれている場合には場合には、クロスバスイッチ制御命令を生成することを特徴とする。
【００１７】
（３）本発明のマルチプロセッサシステムは、
前記クロスバスイッチ制御命令生成部は、
演算実行部に供給するクロックの２倍の周波数のクロックが供給され、当該クロックで動作することを特徴とする。
【００１８】
命令が前記クロスバスイッチレジスタをアクセスするものである場合には、クロスバスイッチ制御命令生成部では、演算実行部に当該命令が実行される前に演算実行部が当該レジスタをアクセスできるようにするためにクロスバスイッチを切替えるためのクロスバスイッチ制御命令を生成する必要がある。
【００１９】
本発明によればクロスバスイッチ制御命令生成部を演算実行部の動作クロックの２倍のクロック周波数で動作させることにより、演算実行部の処理が遅延するのを防ぐことができる。
【００２０】
（４）本発明のマルチプロセッサシステムは、
複数の演算実行部の同期が必要な処理を並列に実行するための命令と、それ以外の命令がメモリ空間において分けて配置されているインストラクションメモリと、
前記インストラクションメモリのメモリマップを記憶するメモリマップ記憶部と、
メモリマップ記憶部を参照して各演算実行部が実行する命令アドレスを生成する命令アドレス生成部と、
を含むことを特徴とする。
【００２１】
インストラクションメモリは、各演算実行部が他の演算実行部と独立した処理を行うための命令を格納する独立処理命令格納領域と、各演算実行部と他の演算実行部との同期が必要な処理を並列に実行するための命令を格納する並列処理命令格納領域とわけて配置されるようにしてもよい。
【００２２】
またメモリマップ記憶部は独立処理命令格納領域と並列処理命令格納領域との区別に関連付けてメモリマップの各領域のアドレスを記憶するようにしてもよい。
【００２３】
並列処理命令格納領域は、各演算実行部が同じ命令を処理を並列に実行するための命令を格納する並列同期処理命令格納領域と、各演算実行部が１つの結果を得るために連携して異なる処理を行うための命令を格納する並列連携処理命令格納領域とに区分してもよい。そしてメモリマップ記憶部には、独立処理命令格納領域と並列同期処理命令格納領域と並列連携処理命令格納領域との区別に関連付けて前記インストラクションメモリのメモリマップを記憶するようにしてもよい。
【００２４】
例えば並列処理では計算によってはすべてのプロセッサは同一命令を実行することになり、これが予めわかっている処理に関してはメモリを兼用してメモリ素子の節約を行うこともできる。
【００２５】
インストラクションメモリ領域をこのように分けて配置することにより、独立処理の場合には、独立処理プログラムのスタートアドレスに、並列処理の場合には、並列処理プログラムのスタートアドレスにジャンプすることで当該処理を開始することができるためにプログラムの設計がしやすくなる。
【００２６】
（５）本発明のマルチプロセッサシステムは、
前記命令アドレス生成部は、
前記メモリマップ記憶部を参照して、複数の演算実行部の同期が必要な処理である並列処理への移行の発生を検出することを特徴とする。
【００２７】
例えばメモリマップ記憶部を参照して、次に実行する命令のアドレスが並列処理領域のものであれば並列処理への移行が発生したと判断することができる。
【００２８】
（６）本発明のマルチプロセッサシステムは、
演算実行部は、
各演算実行部が同期をとるための情報を含むステータスレジスタを含み、
複数の演算実行部の同期が必要な処理である並列処理への移行時に前記ステータスレジスタの情報に基づき並列処理の開始タイミングを判断することを特徴とする。
【００２９】
各演算実行部の独立処理から並列処理への移行は、割り込み要求により判断する場合でもよく、プログラムに最初から移行命令が含まれる場合でもよいが、全ての演算実行部が同期を取ってスタートする必要がある。
【００３０】
ところが割り込み要求の許可タイミングや独立処理プログラムの処理状況により、各演算実行部が並列処理に移行できる時間に差ができる。各演算実行部の移行準備が完了したか否かは、内蔵するステータスレジスタに割り込みマスク及び同期信号のビット等を持たせ、これらを参照することにより判断できるので，早く移行準備ができた演算実行部は全ての演算実行部が準備完了するまで例えばセルフループを行って待機するようにする。
【００３１】
このようにすることで全ての演算実行部が準備完了した時点で並列処理プログラムのスタートアドレスにジャンプすることができ、複数の演算実行部で同期をとって並列処理を開始することができる。
【００３２】
（７）本発明のマルチプロセッサシステムは、
複数の演算実行部間で同期をとる必要のない処理が実行される独立処理モード又は複数の演算実行部間で同期をとる必要のある処理が実行される並列処理モードのいずれであるかを示す情報を格納するための処理モードレジスタを含み、
前記クロスバスイッチ制御命令生成部は、
前記処理モードレジスタが並列処理モードであることを示している場合には、並列処理用の割り当てに従って命令を解析してクロスバスイッチ制御命令を生成することを特徴とする。
【００３３】
クロスバスイッチ制御命令生成部では、受け取った命令コードのオペランドの組み合わせを判断し、クロスバスイッチレジスタをアクセスする必要があるときにはクロスバスイッチ制御命令を作成する。
【００３４】
ここでクロスバスイッチレジスタを参照する命令は、命令コード自体に付加コードを設けてオペランドの指定がクロスバスイッチであることを指定したり、クロスバスイッチ用にオペランドを追加したりする必要があるため命令コードが長くなる。
【００３５】
ここで例えば独立処理モードの場合のようにクロスバスイッチレジスタをアクセスする必要がない場合には、通常の命令コード（クロスバスイッチレジスタを使用しない場合の命令コード）のみが実行される。したがって命令コードをデコードする際のオペランドの割付を独立処理モード（クロスバスイッチレジスタを使用しないモード）と並列処理モードで（クロスバスイッチレジスタを使用するモード）の複数通り（例えば２通り）設け、これらを処理モードによって切り替えることにより、命令コードが長くなるのを防止することができる。
【００３６】
（８）本発明のマルチプロセッサシステムは、
演算実行部は、
並列処理を行う場合に、所与の１つの演算実行部を経由してデータのアクセスを行うことを特徴とする。
【００３７】
所与の１つの演算実行部は、複数の演算実行部のうちのいずれでもよいし、途中で切替えてもよい。
【００３８】
各演算実行部が独立にデータバスを経由してメモリにアクセスできるとすれば、ある１個の演算実行部がデータバスを専有している間は他の演算実行部は順番待ちをする必要があるために処理時間が長くなる。そこで、データバスのアクセスを特定の１個の演算実行部に任せて、読込み／書込みすべきデータをいずれかのクロスバスイッチレジスタに格納し、他の演算実行部は当該レジスタにアクセスすることにより、当該データを利用できるようにすれば、複数の演算実行部が順番にメモリにアクセスするためのデータバス待ち時間を省略することができ全体としての処理時間を短縮することができる。
【００３９】
（９）本発明のマルチプロセッサシステムは、
前記複数の演算実行部は、
ＲＩＳＣ型プロセッサであることを特徴とする。
【００４０】
ここにおいて、ＲＩＳＣ型プロセッサとは、使用できる命令の種類を少なくし、演算装置や実行制御装置を簡素化し、命令実行速度を上げたものである。例えば、命令長は固定であり、演算はレジスタオペランドのみに限られ、メモリアクセスはロード／ストア命令で行う命令セットをもつものでもよい。
【００４１】
（１０）本発明は、
複数の演算実行部と、
前記複数の演算実行部及び当該複数の演算実行部に対する入力データ信号に接続され、入力データ信号と入力先となる演算実行部を切り替えるクロスバスイッチと、
前記クロスバスイッチに接続され、前記複数の演算実行部がアクセス可能なクロスバスイッチレジスタとを含むマルチプロセッサシステムの制御方法であって、
命令コードに基づき、前記複数の演算実行部のアクセス対象が前記クロスバスイッチである場合には、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるようにクロスバスイッチを制御するためのクロスバスイッチ制御命令を生成するステップと、
前記クロスバスイッチ制御命令に基づいて、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるようにクロスバスイッチを制御するステップを含むことを特徴とする。
【発明を実施するための最良の形態】
【００４２】
以下、本発明の好適な実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【００４３】
本発明の一実施形態を４個の演算実行部（以下、プロセッサコアという。）を備えたマルチプロセッサシステムを用いて、３次元座標値同次変換処理を行う場合について説明する。
【００４４】
図１は本実施形態のマルチプロセッサのブロック図であり、図２はマルチ演算実行部の構成を示す図である。
【００４５】
本実施形態のマルチプロセッサシステム１は少なくともマルチ演算実行部１０、命令供給部２０とを含めばよく、他の構成は任意である。
【００４６】
本実施形態のマルチプロセッサシステム１は、マルチ演算実行部１０を含む。
【００４７】
マルチ演算実行部１０は、レジスタファイル５０からのデータ５１と命令供給部２０からの命令２１により演算を実行し、その結果をレジスタファイル５０を経由して図示しないメモリに保存し、次の命令要求３２を命令アドレス生成部３０に知らせる。
【００４８】
マルチ演算実行部１０は、図２に示すように４個の演算実行部（プロセッサコア）１１０〜１１３（以下、順番にＰＣ０，ＰＣ１，ＰＣ２，ＰＣ３という）と、４個のクロスバスイッチレジスタ１３０〜１３３（以下、順番にＸＲ０，ＸＲ１，ＸＲ２，ＸＲ３という）と、クロスバスイッチ１２０とを含む。
【００４９】
クロスバスイッチ１２０は、前記複数の演算実行部及び当該複数の演算実行部に対する入力データ信号に接続され、入力データ信号と入力先となる演算実行部を切り替える。
【００５０】
クロスバスイッチレジスタ１３０〜１３３は、クロスバスイッチ１２０に接続され、前記複数の演算実行部（プロセッサコア）ＰＣ０，ＰＣ１，ＰＣ２，ＰＣ３がアクセス可能である。
【００５１】
前記クロスバスイッチ１２０は、クロスバスイッチ制御命令２１に基づいて、アクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるように制御する。
【００５２】
本実施形態のマルチプロセッサシステム１は、命令供給部２０を含む。
【００５３】
命令供給部２０は、命令読出しレジスタ２１０と命令整列レジスタ２２０及びクロスバスイッチ制御命令生成部２３０とを含む。
【００５４】
命令供給部２０は、命令コードに基づき前記複数の演算実行部のアクセス対象が前記クロスバスイッチである場合にはアクセス対象となるクロスバスイッチレジスタの値が前記複数の演算実行部に入力されるようにクロスバスイッチを制御するためのクロスバスイッチ制御命令を生成するクロスバスイッチ制御命令生成部として機能する。命令供給部２０は、インストラクションメモリ部４０から受け取った命令コード４１を命令読出しレジスタ２１０に読み込み、当該命令コード４１のオペランドの組み合わせを判断してクロスバスイッチ制御命令を生成する。
【００５５】
なお命令供給部２０は、命令コードにクロスバスイッチレジスタの指定が含まれているか否か判断し、含まれている場合にはクロスバスイッチ制御命令を生成する処理を行うようにしてもよい。
【００５６】
また命令供給部２０には、演算実行部に供給するクロックの２倍の周波数のクロックが供給され、当該クロックで動作するようにしてもよい。
【００５７】
また、複数の演算実行部間で同期をとる必要のない処理が実行される独立処理モード又は複数の演算実行部間で同期をとる必要のある処理が実行される並列処理モードのいずれであるかを示す情報を格納するための処理モードレジスタを含み、命令供給部２０は、処理モードレジスタが並列処理モードであることを示している場合には、並列処理用の割り当てに従って命令を解析してクロスバスイッチ制御命令を生成するようにしてもよい。
【００５８】
命令整列レジスタ２２０には、各プロセッサコアに与える前記命令コードとクロスバスイッチ制御命令とが格納される。
【００５９】
マルチ演算実行部１０は、本命令供給部２０から受け取ったプロセッサコアの命令２２とクロスバスイッチ制御命令２１とを受けてクロスバスイッチ１２０の切替えにより任意のクロスバスイッチレジスタにアクセスすることにより、各プロセッサコアはデータの相互利用を図ることができる。
【００６０】
本実施形態のマルチプロセッサシステムは、命令アドレス生成部３０を含む。
【００６１】
命令アドレス生成部３０は、各プロセッサコアが次に実行すべき命令を格納したインストラクションメモリのアドレスを生成し、インストラクションメモリ部４０に指示する。
【００６２】
命令アドレス生成部３０は、インストラクションメモリ４０のメモリマップを記憶するメモリマップ記憶部（図示せず）を参照して各演算実行部が実行する命令のアドレスを生成するようにしてもよい。
【００６３】
本実施形態のマルチプロセッサシステムは、インストラクションメモリ部４０を含む。
【００６４】
インストラクションメモリ部４０には、複数の演算実行部の同期が必要な処理を並列に実行するための命令と、それ以外の命令がメモリ空間において分けて配置するようにしてもよい。
【００６５】
図３は本実施の形態のインストラクションメモリ部４０の一例を示す図である。
【００６６】
インストラクションメモリ部４０は、独立処理領域６０、並列連携処理領域７０、並列処理領域８０及びシステム設定領域９０がわけて配置されている。
【００６７】
独立処理領域６０には各演算実行部が独立した処理を行うための命令（複数の演算実行部の同期が必要でない処理を行うための命令）が格納されている。
【００６８】
並列連携処理領域７０には、各演算実行部が１つの結果を得るために連携して異なる処理を行うための命令が格納されている。
【００６９】
並列処理領域８０には、各演算実行部が同じ命令の処理を並列に実行するための命令が格納されている。
【００７０】
また、オペランドの指定にクロスバスイッチレジスタを使用する場合には、別途追加メモリを割り当てるようにしてもよい（７１〜７３）。
【００７１】
本実施形態のマルチプロセッサシステムは、レジスタファイル部５０を含む。レジスタファイル部５０は、プログラムカウンター（ＰＣ）、ステータスレジスタ（ＳＲ）、スタックポインタ（ＳＰ）の３種の特殊レジスタと３２ビットの汎用レジスタ１６個（Ｒ０〜Ｒ１５）とを含む。汎用レジスタはプロセッサコアの演算結果を一時的に保存したり、データメモリとのロード／ストアに利用される。
【００７２】
図４は、クロスバスイッチ制御命令３００の１例である。
【００７３】
ＸＲＮ（ビット０及びビット１）３０１にはクロスバスイッチレジスタ（ＸＲ０〜ＸＲ３）を指定するためのレジスタ番号が格納される。ＸＲＷ（ビット２）３０２にはクロスバスイッチレジスタをリードするかライトするかを選択するため選択ビットが格納される。ＸＲＥ（ビット３）３０３にはクロスバスイッチレジスタイネーブル設定をするためのビットが格納される。
【００７４】
本実施の形態のクロスバスイッチは、クロスバスイッチ制御命令３００にしたがって、各演算実行部がアクセス対象となるクロスバスイッチレジスタにアクセスできるように制御する。
【００７５】
例えば演算実行部ＰＣ３に対して、ＸＲＷ（ビット２）３０２が、’０’（リード）で、ＸＲＥ（ビット３）３０３が’０’（イネーブル）で、ＸＲＮ（ビット０及びビット１）３０１が’００’のクロスバスイッチ制御命令が与えられたとすると、演算実行部ＰＣ３がクロスバスイッチレジスタＸＲ０からリードできるようにクロスバスイッチが切り替えられる。
【００７６】
また例えば演算実行部ＰＣ１に対して、ＸＲＷ（ビット２）３０２が、’１’（ライト）で、ＸＲＥ（ビット３）３０３が’０’（イネーブル）で、ＸＲＮ（ビット０及びビット１）３０１が’００’のクロスバスイッチ制御命令が与えられたとすると、演算実行部ＰＣ１がクロスバスイッチレジスタＸＲ０にライトできるように、クロスバスイッチレジスタＸＲ０が書き込みイネーブルに制御される。
【００７７】
以下（Ａ）から（Ｄ）にクロスバスイッチ制御信号の一例を示す。
（Ａ）  XR0RE 、 XR1RE、 XR2RE、 XR3RE
（Ｂ）  P0XR[1:0] , P1Xr[1:0] , P2XR[1:0] , P3XR[1:0]
（Ｃ）  XR0WE , XR1WE , XR2WE , XR3WE
（Ｄ）  XR0WN[1:0] , XR1WN[1:0] , XR2WN[1:0] , XR3WN[1:0]
【００７８】
ここで（Ａ）はプロセッサのオペランドをクロスバスイッチレジスタに切り替えるための制御信号である。各クロスバスイッチ毎に１ビットの値が割り当てられ、1でリードイネーブル、0でリードディスイネーブルとなる。
【００７９】
（Ｂ）はクロスバスイッチレジスタのセレクト信号でありリードレジスタの指定を行う。2ビット×4個存在する。
【００８０】
（Ｃ）はプロセッサの演算結果の格納を指示する制御信号であり、各クロスバスイッチ毎に１ビットの値が割り当てられ、1でライトイネーブル、0でライトディスイネーブルとなる。
【００８１】
（Ｄ）はクロスバスイッチレジスタのセレクト信号でありライトレジスタの指定を行う。2ビット×4個存在する。
【００８２】
図５にステータスレジスタ（ＳＲ）４００の構成の１例を示す。
【００８３】
ビット１５（ＰＳＳ）４０１は同期待ち情報、ビット１６（ＰＭ０）４０２，ビット１７（ＰＭ１）４０３、ビット１８（ＰＭ２）４０４、ビット１９（ＰＭ３）４０５はそれぞれプロセッサコアＰＣ０〜ＰＣ３の割り込みマスク情報、ビット２４（ＰＳ０）４０６、ビット２５（ＰＳ１）４０７、ビット２６（ＰＳ２）４０８、ビット２７（ＰＳ３）４０９はそれぞれプロセッサコアＰＣ０〜ＰＣ３の同期信号情報である。
【００８４】
例えば全プロセッサコアＰＣ０〜ＰＣ３の同期信号がＯＮになった時点で、同期をとって全プロセッサコアＰＣ０〜ＰＣ３を並列処理へ移行させるようにしてもよい。
【００８５】
図６（Ａ）（Ｂ）は本実施の形態の命令コードについて説明するための図である。
【００８６】
５０１はオペコードに該当する部分であり、本実施形態では図６（Ｂ）に示すような命令セットを有している。
【００８７】
５０３にはソースレジスタのレジスタ番号が格納され、５０４はディスティネーションレジスタのレジスタ番号が格納される。演算結果はディスティネーションレジスタ５０４に示されたレジスタ番号に格納される。
【００８８】
クロスバスイッチレジスタ（ＸＲ０〜ＸＲ３）の読出し命令の場合は、オペランドリード時にクロスバレジスタから読み出されるように切り替わり、演算結果はディスティネーションレジスタ５０４に格納される。
【００８９】
クロスバレジスタを使用しない場合には、オペランドは共にレジスタファイルに存在し、演算結果はディスティネーションレジスタ５０４で指定されたレジスタに格納される。しかしクロスバーレジスタの出力をオペランドとして使用する場合は、クロスバーレジスタの出力はディスティネーションレジスタ５０４で指定されたレジスタの出力と切替えてプロセッサ入力となり、ソースレジスタのレジスタ５０３とクロスバーレジスタの値で演算を行う。結果はディスティネーションレジスタ５０４で指定されたレジスタに格納される。
【００９０】
クロスバーレジスタに格納されるデータは他のプロセッサのオペランドとして使用する事を目的とするものであり、本来の演算結果を格納するものではないので、クロスバーレジスタへの書込みがある時でもディスティネーションレジスタ５０４で指定されたレジスタの書込みは行われるようにしてもよい。
【００９１】
本実施の形態では同一のクロスバーレジスタに対しての読み書きは同時には行えない場合を例にとり説明したが、同一のクロスバーレジスタに対して同時に読み書きができる仕様にしてもよい。
【００９２】
次に３次元座標値同次変換として原座標値(Px,Py,Pz)を新座標値(Pu,Pv,Pw)に変換するための座標変換処理を次のマトリックス乗算例で説明する。
【００９３】
【数１】
2007249698.tif 000003
【００９４】
図７に上記マトリックス乗算を１プロセッサで処理する場合の流れを示す。まず初期設定する（ステップＳ１０）。次に第１座標値をメモリからロードする（ステップＳ２０）。次に回転因子の計算を行う（ステップ３０）。次に回転変換値を算出する（ステップＳ４０）する。次に平行移動パラメータを加算する（ステップＳ５０）。次に演算結果をメモリにストアする（ステップＳ６０）ことにより第１座標値の処理を終える。続いて第２座標値の処理に入り（ステップ７０）、Ｓ２０〜Ｓ６０の処理を繰り返すことにより、オブジェクトを構成する全ての点の座標値の変換処理を行う。
【００９５】
図８に上記マトリックス乗算を４個のプロセッサＭＰ０〜ＭＰ３を用いて、対比例の並列処理で演算する場合の流れを示す。プロセッサＭＰ０は、第１座標値（Px0,Py0,Pz0）をメモリから読み出し（８０２〜８０４）、変換座標値Pu0=APx0+BPy0+CPz0+D,Pv0=EPx0+FPy0+GPz0+H,Pw0=IPx0+JPy0+KPz0+Lを計算した後メモリに格納する（８０５〜８０７）。プロセッサＭＰ１〜ＭＰ３も同様に第２座標値(Px1,Py1,Pz1)を(Pu1,Pv1,Pw1)に、第３座標値(Px2,Py2,Pz2)を(Pu2,Pv2,Pw2)に、第４座標値(Px3,Py3,Pz3)を(Pu3,Pv3,Pw3)に変換する演算処理を行いメモリに格納する。
【００９６】
対比例の並列処理では、４個のプロセッサＭＰ０〜ＭＰ３がそれぞれ各座標値をメモリから読み込み→計算→メモリへの格納を並列処理するために１プロセッサの場合に比べて４倍の速度で処理できるが、１個のプロセッサがメモリからデータを読込む際にデータバスを占有するために、他のプロセッサは待ち時間が必要になる（８０３,８０９,８１０,８１１等）。
【００９７】
図９に本実施形態での並列連携処理の流れを示す。本実施形態による処理では、プロセッサコアＰＣ０がクロック１のタイミングでメモリから最初の座標値Px0を読込み、クロック２で他の３個のプロセッサコアはそれぞれAPx0,EPx0,IPx0を計算し、プロセッサコアＰＣ０は次の座標値Py0を読込む。クロック３では３個のプロセッサコアはそれぞれBPy0,FPy0,JPy0を計算し、プロセッサコアＰＣ０はPz0を読込む。クロック４では他の３個のプロセッサコアはそれぞれCPz0,GPz0,KPz0を計算するが、プロセッサコアＰＣ０はBPy0+Dを計算する。クロック５でプロセッサコアＰＣ０は座標値Px1を読込むが、他の３個のプロセッサコアは変換座標値であるPu0,Pv0,Pw0のための計算を行う。クロック６でプロセッサコアＰＣ１はPu0=APx0+BPy0+CPz0+Dの計算を完了するので、クロスバスイッチレジスタＸＲ０に格納する（図１０以降で説明）。そして、クロック７でプロセッサコアＰＣ０はPu0の値をメモリに格納（save）する。同じくクロック８でPv0の値をメモリに格納し、クロック９でPw0の値をメモリに格納することにより、第１座標値(Px0,Py0,Pz0)に対応する変換座標値(Pu0,Pv0,Pw0)の処理を終える。
【００９８】
以下、同じ動作を繰り返すことにより、クロック２７まで4個の座標値の座標変換処理を完了する。
【００９９】
他方、図８に示す対比例の並列処理では4個のプロセッサＭＰ０〜ＭＰ３が個別に座標値(Px0,Py0,Pz0),(Px1,Py1,Pz1),(Px2,Py2,Pz2),(Px3,Py3,Pz3)をメモリから読み込んでそれぞれに(Pu0,Pv0,Pw0),(Pu1,Pv1,Pw1),(Pu2,Pv2,Pw2),(Pu3,Pv3,Pw3)を計算し、その結果をメモリに格納(save)する。4個の座標値の座標変換処理を本実施形態ではクロック２７までで終了するのに対して、従来の並列処理ではクロック２９まで要しており、２クロック分処理時間の差がでる。
【０１００】
このようにクロスバスイッチレジスタ（ＸＲ０〜ＸＲ３）を４個のプロセッサコア（ＰＣ０〜ＰＣ３）が切替え利用できるために、座標値が格納されたメモリにアクセスするプロセッサコアをＰＣ０に限定することによりデータバスアクセス待ち時間が節約され、演算処理時間を短縮できるというメリットがある。
【０１０１】
図１０〜図１９に前記の処理を行う場合の各プロセッサコア内部の汎用レジスタ（Ｒ０〜Ｒ１５）及びクロスバスイッチレジスタ（ＸＲ０〜ＸＲ３）の状況を示す。また、各プロセッサコアに対する命令の中で、Xwn（nは０〜３）と表記されているのはクロスバスイッチレジスタＸＲnへの書込指示を意味しており、Xrnと表記されているのは同じく読込指示を意味している。
【０１０２】
図１０は並列連携処理に入る前の汎用レジスタ（Ｒ０〜Ｒ１５）及びクロスバスイッチレジスタ（ＸＲ０〜ＸＲ３）の初期値である。ここでＰＣ０〜ＰＣ３のＲ８〜Ｒ１１及びＰＣ０のＲ１２に座標変換のためのマトリクス要素（Ａ，Ｂ，Ｃ等）を設定し、ＰＣ０のＲ１３に変換前の座標値が格納されたメモリアドレスを、Ｒ１４に変換後の座標値を格納するメモリアドレスの初期値を設定しておく。演算結果を一時的に保存する場所としてＰＣ０〜ＰＣ３のＲ４〜Ｒ７を使用する。また、クロスバスイッチレジスタＸＲ０〜ＸＲ３の初期値はゼロである。
【０１０３】
図１１は、クロック１での動作を示す。ＰＣ０はＲ１３に格納されたメモリアドレスからPx0のデータをＲ４とＸＲ０に読込むとともに、Ｒ１３の値を＋４して次の読込みデータのアドレスに変更する。
【０１０４】
図１２は、クロック２での動作を示す。このタイミングでＰＣ１に与えられる命令１２０１は、Ｒ８に格納されている値とＸＲ０に格納されている値を乗じた結果をＲ４に格納せよというものであり、ＰＣ２、ＰＣ３に対しても（１２０２，１２０３）同じである。またＰＣ０に対する命令１２００は、Ｒ１３で指定されたアドレスのメモリからデータを読込み、Ｒ５とＸＲ０に格納するとともにＲ１３の値を＋４して次の読込みデータのアドレスに変更せよというものである。これらの命令コード４１をインストラクションメモリ部４０から受けた命令供給部２０ではその命令を判定し、クロスバスイッチ制御命令を作成する。そしてＸＲ０がＰＣ１，ＰＣ２，ＰＣ３に接続されるようにクロスバスイッチが切り替えられ、ＰＣ１，ＰＣ２，ＰＣ３はＸＲ０の値を読込んで所定の計算を行い、その結果をＲ４に格納する。その後ＸＲ０をＰＣ０に接続されるようにクロスバスイッチが切り替えられ、ＰＣ０はＲ１３で指定されたアドレスのメモリに格納されているデータを読込んでＲ５とＸＲ０に格納する。
【０１０５】
その結果、ＰＣ０のＲ５にはPy0、ＰＣ１のＲ４にはAPx0、ＰＣ２のＲにはEPx0、ＰＣ３のＲ４にはIPx0、ＸＲ０にはPy0が格納される。
【０１０６】
図１３は、クロック３での動作を示す。このタイミングでＰＣ１に与えられる命令１３０１は、Ｒ９に格納されている値とＸＲ０に格納されている値を乗じた結果をＲ５とＸＲ１に格納せよというものであり、ＰＣ２、ＰＣ３に対しては（１３０２，１３０３）、Ｒ９に格納されている値とＸＲ０に格納されている値とを乗じた結果をＲ５に格納せよというものであり、ＰＣ０に対しては（１３００）、Ｒ１３で指定されたアドレスのメモリからデータを読込みＲ６とＸＲ０に格納するとともにＲ１３の値を＋４して次の読込みデータのアドレスに変更せよというものである。これらの命令コード４１をインストラクションメモリ部４０から受けた命令供給部２０ではその命令を判定し、クロスバスイッチ制御命令を作成する。そしてＸＲ０がＰＣ１，ＰＣ２，ＰＣ３に接続されるようにクロスバスイッチが切り替えられ、ＰＣ１，ＰＣ２，ＰＣ３はＸＲ０の値を読込んで所定の計算を行い、その結果をＲ５に格納した後、ＸＲ１がＰＣ１に接続され、ＰＣ１は上記計算結果をＸＲ１にも格納する。その後ＸＲ０がＰＣ０に接続され、ＰＣ０はメモリから読み込んだデータをＲ６とＸＲ０に格納する。
【０１０７】
その結果、ＰＣ０のＲ６にはPz0、ＰＣ１のＲ５にはBPy0、ＰＣ２のＲ５にはFPy0、ＰＣ３のＲ５にはJPy0、ＸＲ０にはPz0、ＸＲ１にはBPy0が格納される。
【０１０８】
図１４は、クロック４での動作を示す。このタイミングでＰＣ１、ＰＣ２、ＰＣ３に与えられる命令(１４０１，１４０２，１４０３)は、Ｒ１０に格納されている値とＸＲ０に格納されている値を乗じた結果をＲ６に格納せよというものであり、ＰＣ０に対して（１４００）は、Ｒ１２の値とＸＲ１の値を加算してその結果をＲ７とＸＲ１に格納せよというものである。これらの命令コード４１をインストラクションメモリ部４０から受けた命令供給部２０ではその命令を判定し、クロスバスイッチ制御命令を作成する。そしてＸＲ０がＰＣ１，ＰＣ２，ＰＣ３に接続されるようにクロスバスイッチを切り替えられ、ＰＣ１，ＰＣ２，ＰＣ３はＸＲ０の値を読込んで所定の計算を行い、その結果をＲ６に格納する。その後、ＸＲ１がＰＣ０に接続され、ＰＣ０はＸＲ１の値を読込み、所定の計算を行い、その結果をＲ７とＸＲ１に格納する。
【０１０９】
その結果、ＰＣ０のＲ７にはBPy0+D、ＰＣ１のＲ６にはCPz0、ＰＣ２のＲ６にはGPz0、ＰＣ３のＲ６にはKPz0、ＸＲ１にはBPy0+Dが格納される。
【０１１０】
図１５は、クロック５での動作を示す。このタイミングでＰＣ１に与えられる命令１５０１は、Ｒ４に格納されている値とＸＲ１に格納されている値を加算した結果をＲ４に格納せよというものであり、ＰＣ２、ＰＣ３に対して（１５０２，１５０３）は、Ｒ４に格納されている値とＲ５に格納されている値とを加算した結果をＲ４に格納せよというものであり、ＰＣ０に対して（１５００）は、Ｒ１３で指定されたアドレスのメモリからデータを読込みＲ４とＸＲ１に格納するとともにＲ１３の値を＋４して次の読込みデータのアドレスに変更せよというものである。これらの命令コード４１をインストラクションメモリ部４０から受けた命令供給部２０ではその命令を判定し、クロスバスイッチ制御命令を作成する。そしてＸＲ１がＰＣ１に接続されるようにクロスバスイッチが切り替えられ、ＰＣ１はＸＲ１の値を読込んで所定の計算を行い、その結果をＲ４に格納する。その後、ＸＲ１がＰＣ０に接続され、ＰＣ０はＲ１３で指定されたアドレスのメモリからデータを読込み、Ｒ４とＸＲ１に格納する。
【０１１１】
その結果、ＰＣ０のＲ４にはPx1、ＰＣ１のＲ４にはBPy0+D+APx0、ＰＣ２のＲ４にはEPx0+FPy0、ＰＣ３のＲ４にはIPx0+JPy0、ＸＲ１にはPx1が格納される。
【０１１２】
図１６は、クロック６での動作を示す。このタイミングでＰＣ１に与えられる命令１６０１は、Ｒ４に格納されている値とＲ６に格納されている値とを加算した結果をＸＲ０に格納せよというものであり、ＰＣ２、ＰＣ３に対して（１６０２，１６０３）は、Ｒ６に格納されている値とＲ１１に格納されている値とを加算した結果をＲ６に格納せよというものであり、ＰＣ０に対して（１６００）は、Ｒ１３で指定されたアドレスのメモリからデータを読込みＲ５とＸＲ２に格納するとともにＲ１３の値を＋４して次の読込みデータのアドレスに変更せよというものである。これらの命令コード４１をインストラクションメモリ部４０から受けた命令供給部２０ではその命令を判定し、クロスバスイッチ制御命令を作成する。そしてＸＲ０がＰＣ１に接続されるようにクロスバスイッチが切り替えられ、ＰＣ１は演算結果をＸＲ０に格納する。その後、ＸＲ２がＰＣ０に接続され、ＰＣ０はＲ１３で指定されたアドレスのメモリからデータを読込み、Ｒ５とＸＲ２に格納する。
【０１１３】
その結果、ＰＣ０のＲ５にはPy1、ＰＣ１のＲ４にはBPy0+D+APx0+CPz0、ＰＣ２のＲ６にはGPz0+H、ＰＣ３のＲ６にはKPz0、ＸＲ０にはPu0=BPy0+D+APx0+CPz0、ＸＲ２にはPy1が格納される。
【０１１４】
図１７は、クロック７での動作を示す。このタイミングでＰＣ１に与えられる命令１７０１は、Ｒ８に格納されている値とＸＲ１に格納されている値とを乗算した結果をＲ４に格納せよというものであり、ＰＣ２に対して（１７０２）は、Ｒ４に格納されている値とＲ６に格納されている値とを加算した結果をＸＲ０に格納せよというものであり、ＰＣ３に対して（１７０３）は、Ｒ８に格納されている値とＸＲ１に格納されている値とを乗算した結果をＲ７に格納せよというものであり、ＰＣ０に対して（１７００）は、ＸＲ０に格納された値をＲ１４で指定されたアドレスのメモリに格納するとともにＲ１４の値を＋４して次の計算結果値の格納アドレスに変更せよというものである。これらの命令コード４１をインストラクションメモリ部４０から受けた命令供給部２０ではその命令を判定し、クロスバスイッチ制御命令を作成する。そしてＸＲ１がＰＣ１とＰＣ３に接続されるようにクロスバスイッチが切り替えられ、ＰＣ１とＰＣ３はＸＲ１に格納された値を読込み所定の処理を行う。その後、ＸＲ０がＰＣ０に接続され、ＰＣ０はＸＰ０に格納された値Pu0=APx0+BPy0+CPz0+DをＲ１４で指定されたアドレスのメモリへ格納する。次にＰＣ２は、演算結果をＸＲ０に格納する。
【０１１５】
その結果、ＰＣ１のＲ４にはAPx1、ＰＣ２のＲ４にはEPx0+FPy0+GPz0+H、ＰＣ３のＲ７にはIPx1、ＸＲ０にはPv0=EPx0+FPy0+GPz0+Hが格納される。
【０１１６】
図１８は、クロック８での動作を示す。このタイミングでＰＣ１に与えられる命令１８０１は、Ｒ４に格納されている値とＲ１１に格納されている値とを加算した結果をＲ４に格納せよというものであり、ＰＣ２に対して（１８０２）は、Ｒ８に格納されている値とＸＲ１に格納されている値とを乗算した結果をＲ４に格納せよというものであり、ＰＣ３に対して（１８０３）は、Ｒ４に格納されている値とＲ６に格納されている値とを加算した結果をＸＲ０に格納せよというものであり、ＰＣ０に対して（１８００）は、ＸＲ０に格納された値をＲ１４で指定されたアドレスのメモリに格納するとともにＲ１４の値を＋４して次の計算結果値の格納アドレスに変更せよというものである。これらの命令コード４１をインストラクションメモリ部４０から受けた命令供給部２０ではその命令を判定し、クロスバスイッチ制御命令を作成する。そしてＸＲ１がＰＣ２に接続されるようにクロスバスイッチが切り替えられ、ＰＣ２はＸＲ１に格納された値を読込み所定の処理を行う。その後、ＸＲ０がＰＣ０に接続され、ＰＣ０はＸＰ０に格納された値Pv0=EPx0+FPy0+GPz0+HをＲ１４で指定されたアドレスのメモリへ格納する。次にＰＣ３は、演算結果をＸＲ０に格納する。
【０１１７】
その結果、ＰＣ１のＲ４にはAPx1+D、ＰＣ２のＲ４にはEPx1、ＰＣ３のＲ４にはIPx0+JPy0+KPz0+L、ＸＲ０にはPw0=IPx0+JPy0+KPz0+Lが格納される。
【０１１８】
図１９は、クロック９での動作を示す。このタイミングでＰＣ１に与えられる命令１９０１は、Ｒ９に格納されている値とＸＲ２に格納されている値とを乗算した結果をＲ５に格納せよというものであり、ＰＣ２に対して（１９０２）は、Ｒ４に格納されている値とＲ１１に格納されている値とを加算した結果をＲ４に格納せよというものであり、ＰＣ３に対して（１９０３）は、Ｒ９に格納されている値とＸＲ２に格納されている値とを乗算した結果をＲ５に格納せよというものであり、ＰＣ０に対して（１９００）は、ＸＲ０に格納された値をＲ１４で指定されたアドレスのメモリに格納するとともにＲ１４の値を＋４して次の計算結果値の格納アドレスに変更せよというものである。これらの命令コード４１をインストラクションメモリ部４０から受けた命令供給部２０ではその命令を判定し、クロスバスイッチ制御命令を作成する。そしてＸＲ２がＰＣ１とＰＣ３に接続されるようにクロスバスイッチが切り替えられ、ＰＣ１とＰＣ３はＸＲ２に格納された値を読込み所定の処理を行う。その後、ＸＲ０がＰＣ０に接続され、ＰＣ０はＸＰ０に格納された値Pw0=Ipx0+JPy0+KPz0+LをＲ１４で指定されたアドレスのメモリへ格納する。
【０１１９】
その結果、ＰＣ１のＲ５にはBPy1、ＰＣ２のＲ４にはEPx1+H、ＰＣ３のＲ５にはJPy1が格納される。
【０１２０】
ここまでの処理で第１座標点（Px0，Py0，Pz0）の変換座標値(Pu0,Pv0,Pw0)が得られたことになる。以下同様にして第２、第３、第４の座標点の変換座標値を得ることができる。
【０１２１】
図２０に、並列連携処理モード中に割り込み要求が発生した場合のフローを示す。
【０１２２】
割り込みが発生すると（Ｓ１１０）割り込み処理が開始され（Ｓ１２０）、１個のプロセッサコアＰＣ１が独立処理モードへ移行し割り込み処理を行う（Ｓ１４０）。２個のプロセッサコアＰＣ０とＰＣ３が座標変換処理を継続し（Ｓ１５０、Ｓ１６０）、残りのプロセッサコアＰＣ２がシステム管理する（Ｓ１３０）。して各プロセッサの処理が終了すると同期をとって割り込み処理を終了する（Ｓ１７０、Ｓ１８０）。
【０１２３】
ここで割り込み処理時の同次変換再スタート時のＰ０とＰ３の同期（Ｓ１５０）の取り方について説明する。Ｐ０は割り込み処理に入れるタイミングはひとつだけなので、ＮＯＰなしでダイレクトに割り込み中の同次変換処理に入る。Ｐ３は、早い場合、１クロック先に割り込み処理に入る可能性がある。独立処理フロー例にある割り込み許可タイミングは各プロセッサのＳＲのＰＭ０〜ＰＭ４で見ることができる。Ｐ３はＰＭ０で条件分岐を行い、ＰＭ０＝オン（１）の場合にセルフ分岐となる命令を記述しておくことで同期をとる。ＰＭ０＝０で割り込み処理中の同次変換のプログラムにジャンプする。これでプロセッサ０と同じタイミングで同次変換処理に入ることができる。
【０１２４】
次に割り込み終了時の同期（Ｓ１７０）の取り方について説明する。ＳＲのＰＳ０〜ＰＳ３で同期をとる。割り込み処理を行っているＰ１が、該当する割り込み処理を終了したら、Ｒ８からＲ１１のパラメーターを設定して、ＳＲのＰＳＳをオンにする。これをオンにすると自身の該当するＰＳ１がオンとなる。割り込み処理中の同次変換処理では、ひとつの座標変換が終了したらＳＲのＰＳ１をチェックする。ＰＳ１がオンであることを認識すると、次の座標値のロードを行わず、ＰＳＳをオンにして、すべてのＰＳビットがオンになるまでセルフループを行う（Ｐ０，Ｐ３）。上記状態で、ＰＳ０，ＰＳ１，ＰＳ３がオンになる。システム監視をしているＰ２は、他の３プロセッサのＰＳビットがオンになったことを認識するとＰＳＳをオンにする。これですべてのＰＳビットがオンになるので、４プロセッサの並列連携処理のスタートであるＳのアドレスに同時に分岐する。Ｒ１３，Ｒ１４は割り込み処理中の同次変換処理でも更新されているので、継続した同次変換が４プロセッサにより実行されることになる。
【０１２５】
図２１に、図１１〜図１９で説明した並列連携処理の場合について、４個のプロセッサコアＰＣ０〜ＰＣ３の割り込み許可タイミングについて説明する。
【０１２６】
各プロセッサコアはそれぞれ２１０１〜２１０３で示すタイミングで割り込みを受け付けることができる。４つの座標点についての変換処理が終わって、５番目の座標点についての処理に入ったタイミング２１１０で割り込みが発生した場合を考える。
【０１２７】
割り込み処理が入って、４個のプロセッサコアＰＣ０〜ＰＣ３による並列連携処理による座標変換処理を中断し、プロセッサコアＰＣ０とＰＣ３が処理を再開するタイミング（図２０のＳ１５０）と、割り込み処理が終わって全てのプロセッサコアが座標変換の演算処理を並列連携で再開するタイミング（図２０のＳ１７０）のいずれについても同期をとる必要がある。
【０１２８】
プロセッサコアＰＣ１とＰＣ２とは、汎用レジスタＲ８〜Ｒ１１のデータ（マトリックスの各要素値）が割り込み処理終了後の再開時に保障されていればよいので、レジスタのセーブは行わず、割り込み処理終了の際に再設定する。クロスバスイッチレジスタＸＲ０〜ＸＲ３は、プロセッサコアＰＣ１の割り込み処理やプロセッサコアＰＣ２のシステム制御では使用せず、座標変換処理を行うプロセッサコアＰＣ０とＰＣ３が引き続き使用する。プロセッサコアＰＣ０とＰＣ３のみで座標変換処理を行う場合（Ｓ１６０）には、当該プロセッサコアの汎用レジスタ（Ｒ０〜Ｒ１５）のうち使用していないレジスタを使用して、プロセッサコアＰＣ１とＰＣ２の機能を代替する。また、割り込み発生時に演算処理が完了していない座標変換処理データは無視し、再計算する。プロセッサコアＰＣ０とＰＣ３の座標変換処理再スタート時には、プロセッサコアＰＣ０の割り込みのマスク信号ＰＭ０（図５の４０２）により同期をとることができ、マスクされているときには、プロセッサコアＰＣ３はセルフループを繰り返す。ステータスレジスタの割り込みマスクＰＭ＃ビット（図５の４０２〜４０５）と同期信号ＰＳ＃ビット（図５の４０６〜４０９）により条件分岐することで同期をとる。割り込み処理中は、プロセッサコアＰＣ０はメモリへのアクセスとPu値の計算、プロセッサコアＰＣ３はPv,Pw値の計算、クロスバスイッチレジスタＸＲ０は計算結果の格納（メモリへのデータ保存）、ＸＲ１はPx値の格納、ＸＲ２はPy値の格納、ＸＲ３はPz値を格納する役割を担う。割り込み処理に入る時のレジスタの状態は図２２に示すようになり、座標変換のためのマトリックス要素（Ａ，Ｂ，Ｃ，等）のうちプロセッサコアＰＣ１及びＰＣ２の汎用レジスタＲ８〜Ｒ１１に格納されていたデータは、プロセッサコアＰＣ０のＲ１５及びＰＣ３のＲ１２〜Ｒ１５に置き換えられる。従って、プロセッサコアＰＣ０とＰＣ３のみで座標変換処理を行うことができ、割り込み処理が終わって、全てのプロセッサコアＰＣ０〜ＰＣ３の並列連携で座標変換処理を再開する場合には、これらのマトリックス要素を元のＰＣ１とＰＣ２のＲ８〜Ｒ１１に再設定する。
【０１２９】
以上の処理を行うことにより、４個のプロセッサコアによる３次元座標値同次変換処理中に割り込み処理が入り（Ｓ１１０）、１個のプロセッサコアＰＣ１で当該割り込み処理を行い（Ｓ１４０）、残り２個のプロセッサコアＰＣ０，ＰＣ３で座標値変換処理を継続し（Ｓ１６０）、残りのプロセッサコアＰＣ２がシステム管理を担当し（Ｓ１３０）、割り込み処理が終了した後（Ｓ１７０）は再度４個のプロセッサコアが並列連携により、座標変換処理をスムーズに継続することができる。
【０１３０】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【図面の簡単な説明】
【０１３１】
【図１】本実施形態のマルチプロセッサブロック図。
【図２】マルチ演算実行部のブロック図。
【図３】インストラクションメモリのアドレス空間。
【図４】クロスバスイッチ制御命令の構成。
【図５】ステータスレジスタの構成。
【図６】図６（Ａ）（Ｂ）は本実施の形態の命令コードについて説明するための図。
【図７】１プロセッサでの処理。
【図８】４プロセッサでの従来の並列処理。
【図９】本実施形態における並列連携処理と従来の並列処理との比較。
【図１０】本実施形態における汎用レジスタの初期状態。
【図１１】本実施形態におけるクロック１での汎用レジスタの状態。
【図１２】本実施形態におけるクロック２での汎用レジスタの状態。
【図１３】本実施形態におけるクロック３での汎用レジスタの状態。
【図１４】本実施形態におけるクロック４での汎用レジスタの状態。
【図１５】本実施形態におけるクロック５での汎用レジスタの状態。
【図１６】本実施形態におけるクロック６での汎用レジスタの状態。
【図１７】本実施形態におけるクロック７での汎用レジスタの状態。
【図１８】本実施形態におけるクロック８での汎用レジスタの状態。
【図１９】本実施形態におけるクロック９での汎用レジスタの状態。
【図２０】割り込み処理。
【図２１】プロセッサコア処理経過と割り込み許可タイミング。
【図２２】割り込み処理に入るときのレジスタ状態例。
【符号の説明】
【０１３２】
１０  マルチ演算実行部、１１０〜１１３  演算実行部、１２０  クロスバスイッチ、１３０〜１３３  クロスバスイッチレジスタ、２０  命令供給部、２１  クロスバスイッチ制御命令、２２  命令、２１０  命令読出レジスタ、２２０  命令整列レジスタ、２３０  クロスバスイッチ制御命令生成部、３０  命令アドレス生成部、４０  インストラクションメモリ部、４１  命令コード、５０  レジスタファイル部、６０  独立処理領域、７０  並列連携処理領域、７１〜７４  クロスバスイッチレジスタ使用オペランド用メモリ、８０  並列処理領域、９０  システム設定領域、３００  クロスバスイッチ制御命令、３０１  クロスバスイッチレジスタ番号、３０２  クロスバスイッチレジスタリードライト、３０３  クロスバスイッチレジスタイネーブル、４００  ステータスレジスタ、４０１  同期待ち、４０２  プロセッサコア０割り込みマスク、４０３  プロセッサコア１割り込みマスク、４０４  プロセッサコア２割り込みマスク、４０５  プロセッサコア３割り込みマスク、４０６  プロセッサコア０同期信号、４０７  プロセッサコア１同期信号、４０８  プロセッサコア２同期信号、４０９  プロセッサコア３同期信号、５００  命令コード、５０１  命令、５０３  ソースレジスタ、５０４  ディスティネーションレジスタ、８０１  クロック番号、８０２〜８１１  演算データ、１２００〜１９０３  実行命令、２１００〜２１０３  割り込み許可タイミング、２１１０  割り込み発生タイミング
【図１】
2007249698.tif 000004
【図２】
2007249698.tif 000005
【図３】
2007249698.tif 000006
【図４】
2007249698.tif 000007
【図５】
2007249698.tif 000008
【図６】
2007249698.tif 000009
【図７】
2007249698.tif 000010
【図８】
2007249698.tif 000011
【図９】
2007249698.tif 000012
【図１０】
2007249698.tif 000013
【図１１】
2007249698.tif 000014
【図１２】
2007249698.tif 000015
【図１３】
2007249698.tif 000016
【図１４】
2007249698.tif 000017
【図１５】
2007249698.tif 000018
【図１６】
2007249698.tif 000019
【図１７】
2007249698.tif 000020
【図１８】
2007249698.tif 000021
【図１９】
2007249698.tif 000022
【図２０】
2007249698.tif 000023
【図２１】
2007249698.tif 000024
【図２２】
2007249698.tif 000025