(57)【要約】【課題】チップ内異種マルチプロセッサの使い勝手および性能を向上させることができるプロセッサシステムを提供する。【解決手段】プロセッサとメモリとを有するプロセッサシステムであって、プロセッサ１は、プログラムを読み出す１つの制御ユニット１０と、制御ユニットが読み出したプログラムのうちＳＩＭＤ命令を送信する複数の演算ユニット２０，３０，４０と、制御ユニットがメモリから読み出したプログラムを格納し、制御ユニットおよび複数の演算ユニットがデータの読出しおよび書込みを行うことができる共有キャッシュ５０とから構成され、制御ユニットが複数の演算ユニットに対して送信する命令は、複数の演算ユニットが命令を実行する過程において、命令を実行している演算ユニットとは異なる演算ユニットからの外部信号受信まで該命令の実行を中断するか否かを指定する。【選択図】図１
2007148709.tif 000002
【特許請求の範囲】
【請求項１】
プログラムとデータを格納するメモリと、
前記データを用いる前記プログラムを実行するプロセッサと、
前記メモリと前記プロセッサを接続する内部ネットワークとから構成されるプロセッサシステムであって、
前記プロセッサは、
前記プログラムを読み出す１つの制御ユニットと、
前記制御ユニットが読み出した前記プログラムのうちＳＩＭＤ命令を送信する複数の演算ユニットと、
前記制御ユニットが前記メモリから読み出したプログラムを格納し、前記制御ユニットおよび前記複数の演算ユニットがデータの読出しおよび書込みを行うことができる共有キャッシュとから構成され、
前記制御ユニットが前記複数の演算ユニットに対して送信する命令は、
前記複数の演算ユニットが命令を実行する過程において、命令を実行している演算ユニットとは異なる演算ユニットからの外部信号受信まで該命令の実行を中断するか否かを指定することを特徴とするプロセッサシステム。
【請求項２】
請求項１記載のプロセッサシステムにおいて、
前記演算ユニットが実行を中断した命令の処理を再開する場合には、前記制御ユニットあるいは前記異なる演算ユニットに対して外部信号を発することを特徴とするプロセッサシステム。
【請求項３】
請求項１記載のプロセッサシステムにおいて、
前記プログラムは、前記制御ユニットが実行する少なくとも１つの制御ユニット用プログラム区画と、前記演算ユニットが実行する少なくとも１つの演算ユニット用プログラム区画とから構成され、
前記演算ユニット用プログラム区画は、開始を示す開始コードと終了を示す終了コードとで囲まれていることを特徴とするプロセッサシステム。
【請求項４】
請求項１記載のプロセッサシステムにおいて、
前記演算ユニットは、前記制御ユニットが解釈する共通命令、および、前記演算ユニットが解釈する専用命令を実行することを特徴とするプロセッサシステム。
【請求項５】
請求項３記載のプロセッサシステムにおいて、
前記制御ユニットは、前記演算ユニット用プログラム区画を構成する命令に対してＣａｓｃａｄｅｄ実行方式を適用するか否かを選択することを特徴とするプロセッサシステム。
【請求項６】
請求項３記載のプロセッサシステムにおいて、
前記制御ユニットは、前記演算ユニット用プログラム区画を構成するプリフェッチ命令に対してＣａｓｃａｄｅｄ実行方式を選択することを特徴とするプロセッサシステム。
【請求項７】
請求項１記載のプロセッサシステムにおいて、
前記演算ユニットは、複数の演算ユニットグループに分割され、
各演算ユニットグループは、
Ｃａｓｃａｄｅｄ実行方式を指定された命令の完了時に特定の１つの演算ユニットに外部信号を送信するためのパスを有するメイン演算ユニットと、
前記Ｃａｓｃａｄｅｄ実行方式を指定され、処理を中断された命令の処理を再開するための外部信号を特定の１つの演算ユニットから受信するためのパスと、前記Ｃａｓｃａｄｅｄ実行方式を指定された命令の完了時に特定の１つの演算ユニットにＣａｓｃａｄｅｄ外部信号を送信するためのパスとを有するサブ演算ユニットと、
前記Ｃａｓｃａｄｅｄ実行方式を指定され、処理を中断された命令の処理を再開するためのＣａｓｃａｄｅｄ外部信号を特定の１つの演算ユニットから受信するためのパスと、前記Ｃａｓｃａｄｅｄ実行方式を指定された命令の完了時に前記制御ユニットにＣａｓｃａｄｅｄ外部信号を送信するパスとを有する完了サブ演算ユニットとから構成されることを特徴とするプロセッサシステム。
【請求項８】
請求項７記載のプロセッサシステムにおいて、
前記制御ユニットが前記演算ユニットに送信する命令には、前記Ｃａｓｃａｄｅｄ実行方式か否かを設定するフィールドを含むことを特徴とするプロセッサシステム。
【請求項９】
請求項７記載のプロセッサシステムにおいて、
前記制御ユニットは、前記Ｃａｓｃａｄｅｄ実行方式を適用した命令の完了を、すべての演算ユニットグループの前記完了サブ演算ユニットから完了通知を受信したことで判定することを特徴とするプロセッサシステム。
【請求項１０】
請求項７記載のプロセッサシステムにおいて、
前記演算ユニットが前記制御ユニットによりＣａｓｃａｄｅｄ実行方式による実行を指定された命令を実行する過程において、中断するか否かを判定する中断判定ポイントに到達した場合には、前記Ｃａｓｃａｄｅｄ外部信号を受信している場合には実行過程を進み、前記Ｃａｓｃａｄｅｄ外部信号を受信していない場合には受信するまで実行を中断することを特徴とするプロセッサシステム。
【請求項１１】
請求項１０記載のプロセッサシステムにおいて、
前記制御ユニットがプリフェッチ命令に対してＣａｓｃａｄｅｄ実行方式による実行を指定した場合には、前記演算ユニットのデータキャッシュについてミスしたデータの前記共有キャッシュからの読出し要求を発行する前に前記中断判定ポイントを設定することを特徴とするプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリとプロセッサが内部ネットワークで接続されるプロセッサシステムに関し、特に、チップ内異種マルチプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
例えば、ＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）分野においては、飛躍的に高い価格性能比の実現を目的とし、アクセラレータ（演算ユニット）搭載に対するニーズが出現しており、特許文献１のような技術が提案されている。
【０００３】
この特許文献１には、制御ユニットに相当するＡＰと演算ユニットに相当するＡＰＵが独立し、ＡＰＵによる処理を制御するためにＡＰＵ遠隔手順呼出しコマンドを使用する技術が開示されている。さらに、この特許文献１では、プログラムに相当するソフトウェア・セルにおいて、必要なＡＰＵによってセルの実行に必要な最低数のＡＰＵが与えられ、各ＡＰＵによって実行されるＡＰＵプログラムが指定されるようになっている。
【特許文献１】特開２００３−２８１１０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、数値計算プログラムにおいては、通常、制御ユニットが、複数の演算ユニットに対して同じ演算処理の実行を指示し、制御ユニットが各演算ユニットの実行結果を集計する。前記特許文献１の技術のように、各ＡＰＵが異なるプログラムを実行できるようにする必要性はない。逆に、各ＡＰＵが実行するプログラムを指定しなければならないことは使い勝手を低下させてしまう。
【０００５】
また、前記特許文献１の技術は、複数のＡＰＵが同じ処理を実行することを必ずしも想定していないので、複数のＡＰＵがメモリアクセスを同時に実行することによる性能劣化への対策を講じていない。一方、演算ユニット搭載により実効性能を高めるためには、各演算ユニットに演算性能に見合ったデータを転送することが求められる。ハードウェアの詳細動作に関する知識に基づいて実施する必要のあるこのようなメモリアクセス集中の回避をユーザに一任することは、性能低下や使い勝手の低下を引き起こしてしまう。
【０００６】
そこで、本発明は前述のような課題を解決し、その目的は、チップ内異種マルチプロセッサの使い勝手および性能を向上させることができるプロセッサシステムを提供することにある。
【０００７】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【０００９】
本発明は、プログラムとデータを格納するメモリと、データを用いるプログラムを実行するプロセッサと、メモリとプロセッサを接続する内部ネットワークとから構成されるプロセッサシステムに適用され、以下のような特徴を有するものである。
【００１０】
プロセッサは、プログラムを読み出す１つの制御ユニットと、制御ユニットが読み出したプログラムのうちＳＩＭＤ命令を送信する複数の演算ユニットと、制御ユニットがメモリから読み出したプログラムを格納し、制御ユニットおよび複数の演算ユニットがデータの読出しおよび書込みを行うことができる共有キャッシュとから構成される。特に、制御ユニットが複数の演算ユニットに対して送信する命令は、複数の演算ユニットが命令を実行する過程において、命令を実行している演算ユニットとは異なる演算ユニットからの外部信号受信まで該命令の実行を中断するか否かを指定する。また、演算ユニットが実行を中断した命令の処理を再開する場合には、制御ユニットあるいは異なる演算ユニットに対して外部信号を発する。
【発明の効果】
【００１１】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１２】
本発明によれば、チップ内異種マルチプロセッサの使い勝手および性能を向上させることができるプロセッサシステムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１４】
まず、図１により、本発明の一実施の形態におけるマルチプロセッサシステムの構成の一例を説明する。図１は、マルチプロセッサシステムの構成の一例を示す図である。
【００１５】
本実施の形態におけるマルチプロセッサシステムは、チップ内異種マルチプロセッサに適用され、複数のプロセッサ１と、これらのプロセッサ１からアクセスできるメモリ２とを有し、プロセッサ１およびメモリ２が内部ネットワーク３を通じて接続されている。
【００１６】
各プロセッサ１は、プログラムを読み出す１つの制御ユニット１０と、この制御ユニット１０が読み出したプログラムのうちＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）命令を送信する複数の演算ユニット２０，３０，４０と、制御ユニット１０がメモリ２から読み出したプログラムを格納し、制御ユニット１０および複数の演算ユニット２０，３０，４０がデータの読出しおよび書込みを行うことができる共有キャッシュ５０とから構成される。
【００１７】
メモリ２には、各プロセッサ１が実行するプログラム６０や、このプログラム６０においてアクセスするデータ７０が格納されている。プログラム６０は、制御ユニット１０が実行する少なくとも１つの制御ユニット用プログラム区画と、演算ユニット２０，３０，４０が実行する少なくとも１つの演算ユニット用プログラム区画とから構成され、演算ユニット用プログラム区画は開始を示す開始コードと終了を示す終了コードとで囲まれている。
【００１８】
次に、図２により、前述した制御ユニットおよび演算ユニットの構成の一例を説明する。図２は、制御ユニットおよび演算ユニットの構成の一例を示す図である。
【００１９】
制御ユニット１０は、命令Ｆｅｔｃｈ部１１と、命令Ｄｅｃｏｄｅ部１２と、命令Ａｌｌｏｃａｔｅ部１３と、命令Ｅｘｅｃｕｔｅ部１４と、演算ユニット実行管理部１５と、命令キャッシュ１６と、データキャッシュ１７から構成される。なお、命令キャッシュ１６およびデータキャッシュ１７は制御ユニット１０のみがアクセスできる。
【００２０】
この制御ユニット１０が複数の演算ユニット２０，３０，４０に対して送信する命令は、複数の演算ユニットが命令を実行する過程において、命令を実行している演算ユニットとは異なる演算ユニットからの外部信号受信まで該命令の実行を中断するか否かを指定する。そして、演算ユニットが実行を中断した命令の処理を再開する場合には、制御ユニット１０あるいは異なる演算ユニットに対して外部信号を発する。
【００２１】
また、制御ユニット１０は、演算ユニット用プログラム区画を構成する命令に対してＣａｓｃａｄｅｄ実行方式を適用するか否かを選択し、また、演算ユニット用プログラム区画を構成するプリフェッチ命令に対してＣａｓｃａｄｅｄ実行方式を選択する。この際に、制御ユニット１０が演算ユニット２０，３０，４０に送信する命令には、Ｃａｓｃａｄｅｄ実行方式か否かを設定するフィールドを含む。
【００２２】
また、制御ユニット１０は、Ｃａｓｃａｄｅｄ実行方式を適用した命令の完了を、すべての演算ユニットグループの完了サブ演算ユニットから完了通知を受信したことで判定する。また、制御ユニット１０がプリフェッチ命令に対してＣａｓｃａｄｅｄ実行方式による実行を指定した場合には、演算ユニットのデータキャッシュについてミスしたデータの共有キャッシュからの読出し要求を発行する前に中断判定ポイントを設定する。
【００２３】
このように構成される制御ユニット１０において、命令Ｆｅｔｃｈ部１１は、次に実行する命令コードを命令キャッシュ１６から読み出す。命令Ｄｅｃｏｄｅ部１２は、Ｆｅｔｃｈされた命令のうち、制御ユニット用命令および演算ユニット専用命令以外の制御ユニットと共通の命令をデコードする。命令Ａｌｌｏｃａｔｅ部１３は、レジスタ等命令実行に必要なリソースを割り当てる。命令Ｅｘｅｃｕｔｅ部１４は、命令を実行する。演算ユニット実行管理部１５は、演算ユニット用命令の各演算ユニットへの発行および当該命令実行の終了を管理する。また、演算ユニット実行管理部１５は、命令実行方式を指定可能な演算ユニット用命令に対して、Ｃａｓｃａｄｅｄ実行方式あるいは並列実行方式を指定する。
【００２４】
演算ユニット２０，３０，４０は、複数の演算ユニットグループに分割される。各演算ユニットグループは、メイン演算ユニット２０と、サブ演算ユニット３０と、完了サブ演算ユニット４０から構成される。
【００２５】
この演算ユニットは、制御ユニットが解釈する共通命令、および、演算ユニットが解釈する専用命令を実行する。また、演算ユニットが制御ユニットによりＣａｓｃａｄｅｄ実行方式による実行を指定された命令を実行する過程において、中断するか否かを判定する中断判定ポイントに到達した場合には、Ｃａｓｃａｄｅｄ外部信号を受信している場合には実行過程を進み、Ｃａｓｃａｄｅｄ外部信号を受信していない場合には受信するまで実行を中断する。
【００２６】
このように構成される演算ユニットにおいて、メイン演算ユニット２０は、Ｃａｓｃａｄｅｄ実行方式を指定された命令の完了時に特定の１つの演算ユニットに外部信号を送信するためのパスを有する。サブ演算ユニット３０は、Ｃａｓｃａｄｅｄ実行方式を指定され、処理を中断された命令の処理を再開するための外部信号を特定の１つの演算ユニットから受信するためのパスと、Ｃａｓｃａｄｅｄ実行方式を指定された命令の完了時に特定の１つの演算ユニットにＣａｓｃａｄｅｄ外部信号を送信するためのパスとを有する。完了サブ演算ユニット４０は、Ｃａｓｃａｄｅｄ実行方式を指定され、処理を中断された命令の処理を再開するためのＣａｓｃａｄｅｄ外部信号を特定の１つの演算ユニットから受信するためのパスと、Ｃａｓｃａｄｅｄ実行方式を指定された命令の完了時に制御ユニットにＣａｓｃａｄｅｄ外部信号を送信するパスとを有する。
【００２７】
次に、図３により、前述した制御ユニットの命令実行処理フローの一例を説明する。図３は、制御ユニットの命令実行処理フローの一例を示す図である。
【００２８】
制御ユニット１０の命令実行処理においては、まず、命令Ｆｅｔｃｈ部１１が命令をＦｅｔｃｈし（Ｓ１０１）、演算ユニットプログラム開始コードか否かを判定する（Ｓ１０２）。この判定の結果、演算ユニットプログラム開始コードの場合（Ｙｅｓ）には、演算ユニット実行管理部１５に送信する（Ｓ１０３）。
【００２９】
続いて、命令Ｆｅｔｃｈ部１１が次の命令をＦｅｔｃｈし（Ｓ１０４）、演算ユニットプログラム終了コードか否かを判定する（Ｓ１０５）。この判定の結果、演算ユニットプログラム終了コードの場合（Ｙｅｓ）には、次の命令があるか否かを判定し（Ｓ１０６）、ない場合（Ｎｏ）は処理を終了し、ある場合（Ｙｅｓ）にはＳ１０１からの処理を繰り返す。
【００３０】
また、Ｓ１０２の判定の結果、演算ユニットプログラム開始コードでない場合（Ｎｏ）は、命令Ｄｅｃｏｄｅ部１３へ送信し（Ｓ１０７）、さらに命令Ａｌｌｏｃａｔｅ部１３へ送信し（Ｓ１０８）、そして命令Ｅｘｃｕｔｅ部１４へ送信して（Ｓ１０９）、Ｓ１０６へ移行する。
【００３１】
以上のようにして、制御ユニット１０の命令実行処理が行われる。
【００３２】
次に、図４により、前述した演算ユニット実行管理部の処理フローの一例を説明する。図４は、演算ユニット実行管理部の処理フローの一例を示す図である。
【００３３】
演算ユニット実行管理部１５の処理においては、まず、命令Ｆｅｔｃｈ部１１から命令を受信し（Ｓ２０１）、演算ユニット専用命令か否かを判定する（Ｓ２０２）。この判定の結果、演算ユニット専用命令の場合（Ｙｅｓ）には、命令実行方式を選択する（Ｓ２０３）。
【００３４】
続いて、命令実行方式の選択において、Ｃａｓｃａｄｅｄ実行方式を選択したか否かを判定する（Ｓ２０４）。この判定の結果、Ｃａｓｃａｄｅｄ実行方式を選択した場合（Ｙｅｓ）には、Ｃａｓｃａｄｅｄ実行方式を指定する（Ｓ２０５）。そして、すべての演算ユニット２０，３０，４０に命令を送信し（Ｓ２０６）、命令完了処理を実行して（Ｓ２０７）、処理を終了する。
【００３５】
また、Ｓ２０２の判定の結果、演算ユニット専用命令でない場合（Ｎｏ）は、命令Ｄｅｃｏｄｅ部１２へＤｅｃｏｄｅを依頼し（Ｓ２０８）、命令Ｄｅｃｏｄｅ部１２からＤｅｃｏｄｅされたコードを受信して（Ｓ２０９）、Ｓ２０３へ移行する。
【００３６】
また、Ｓ２０４の判定の結果、Ｃａｓｃａｄｅｄ実行方式を選択していない場合（Ｎｏ）は、並列実行方式を指定して（Ｓ２１０）、Ｓ２０６へ移行する。
【００３７】
以上のようにして、演算ユニット実行管理部１５の処理が行われる。
【００３８】
次に、図５により、前述した演算ユニット実行管理部の命令完了処理フローの一例を説明する。図５は、演算ユニット実行管理部の命令完了処理フローの一例を示す図である。
【００３９】
演算ユニット実行管理部１５の命令完了処理は、まず、演算ユニットから命令完了通知を受信し（Ｓ３０１）、Ｃａｓｃａｄｅｄ実行方式を指定するか否かを判定する（Ｓ３０２）。この判定の結果、Ｃａｓｃａｄｅｄ実行方式を指定する場合（Ｙｅｓ）には、すべての完了サブ演算ユニット４０から命令完了通知を受信したか否かを判定し（Ｓ３０３）、受信した場合（Ｙｅｓ）には処理を終了し、受信していない場合（Ｎｏ）はＳ３０１からの処理を繰り返す。
【００４０】
また、Ｓ３０２の判定の結果、Ｃａｓｃａｄｅｄ実行方式を指定しない場合（Ｎｏ）は、すべての演算ユニット２０，３０，４０から命令完了通知を受信したか否かを判定し（Ｓ３０４）、受信した場合（Ｙｅｓ）には処理を終了し、受信していない場合（Ｎｏ）はＳ３０１からの処理を繰り返す。
【００４１】
以上のようにして、演算ユニット実行管理部１５の命令完了処理が行われる。
【００４２】
次に、図６により、前述したメイン演算ユニットの構成の一例を説明する。図６は、メイン演算ユニットの構成の一例を示す図である。
【００４３】
メイン演算ユニット２０は、命令受信部２１と、命令Ｄｅｃｏｄｅ部２２と、命令Ａｌｌｏｃａｔｅ部２３と、命令Ｅｘｅｃｕｔｅ部２４と、データキャッシュ２５から構成される。
【００４４】
このように構成されるメイン演算ユニット２０において、命令受信部２１は、制御ユニット１０の演算ユニット実行管理部１５が発行した命令を受信する。受信した命令が演算ユニット専用命令であり、まだデコードされていない場合には、命令Ｄｅｃｏｄｅ部２２に対してデコードを依頼する。命令Ａｌｌｏｃａｔｅ部２３は、レジスタ等命令実行に必要なリソースを割り当てる。命令Ｅｘｅｃｕｔｅ部２４は、命令を実行する。また、命令Ｅｘｅｃｕｔｅ部２４は、当該命令においてＣａｓｃａｄｅｄ実行方式が指定されている場合には、Ｃａｓｃａｄｅｄ外部信号を送信する。
【００４５】
次に、図７により、前述したメイン演算ユニットの処理フローの一例を説明する。図７は、メイン演算ユニットの処理フローの一例を示す図である。
【００４６】
メイン演算ユニット２０の処理においては、まず、制御ユニット１０から命令受信部２１が命令を受信し（Ｓ４０１）、Ｄｅｃｏｄｅ完了か否かを判定する（Ｓ４０２）。この判定の結果、Ｄｅｃｏｄｅ完了の場合（Ｙｅｓ）には、命令Ａｌｌｏｃａｔｅ部２３へ送信し（Ｓ４０３）、さらに命令Ｅｘｃｕｔｅ部２４へ送信する（Ｓ４０４）。
【００４７】
続いて、命令Ｅｘｃｕｔｅ部２４が命令を実行し（Ｓ４０５）、Ｃａｓｃａｄｅｄ実行方式を指定するか否かを判定する（Ｓ４０６）。この判定の結果、Ｃａｓｃａｄｅｄ実行方式を指定する場合（Ｙｅｓ）には、Ｃａｓｃａｄｅｄ外部信号を送信して（Ｓ４０７）、また、Ｃａｓｃａｄｅｄ実行方式を指定しない場合（Ｎｏ）は、制御ユニット１０に完了通知を送信して（Ｓ４０８）、処理を終了する。
【００４８】
また、Ｓ４０２の判定の結果、Ｄｅｃｏｄｅ完了でない場合（Ｎｏ）は、命令Ｄｅｃｏｄｅ部２２へ送信し（Ｓ４０９）、Ｓ４０３へ移行する。
【００４９】
以上のようにして、メイン演算ユニット２０の処理が行われる。
【００５０】
次に、図８により、前述したサブ演算ユニットの構成の一例を説明する。図８は、サブ演算ユニットの構成の一例を示す図である。
【００５１】
サブ演算ユニット３０は、命令受信部３１と、命令Ｄｅｃｏｄｅ部３２と、命令Ａｌｌｏｃａｔｅ部３３と、命令Ｅｘｅｃｕｔｅ部３４と、Ｐｅｎｄｉｎｇキュー３５と、データキャッシュ３６から構成される。
【００５２】
このように構成されるサブ演算ユニット３０において、命令受信部３１は、制御ユニット１０の演算ユニット実行管理部１５が発行した命令を受信する。受信した命令が演算ユニット専用命令であり、まだデコードされていない場合には、命令Ｄｅｃｏｄｅ部３２に対してデコードを依頼する。命令Ａｌｌｏｃａｔｅ部３３は、レジスタ等命令実行に必要なリソースを割り当てる。命令Ｅｘｅｃｕｔｅ部３４は、命令を実行する。また、命令Ｅｘｅｃｕｔｅ部３４は、当該命令においてＣａｓｃａｄｅｄ実行方式が指定されており、かつ、Ｃａｓｃａｄｅｄ外部信号を受信していない場合には、当該命令をＰｅｎｄｉｎｇキュー３５に登録する。Ｃａｓｃａｄｅｄ外部信号を受信した場合には、Ｐｅｎｄｉｎｇキュー３５から該当命令を削除し、実行を再開し、Ｃａｓｃａｄｅｄ外部信号を送信する。
【００５３】
次に、図９により、前述したサブ演算ユニットの処理フローの一例を説明する。図９は、サブ演算ユニットの処理フローの一例を示す図である。
【００５４】
サブ演算ユニット３０の処理においては、まず、制御ユニット１０から命令受信部３１が命令を受信し（Ｓ５０１）、Ｄｅｃｏｄｅ完了か否かを判定する（Ｓ５０２）。この判定の結果、Ｄｅｃｏｄｅ完了の場合（Ｙｅｓ）には、命令Ａｌｌｏｃａｔｅ部３３へ送信し（Ｓ５０３）、さらに命令Ｅｘｃｕｔｅ部３４へ送信する（Ｓ５０４）。
【００５５】
続いて、Ｃａｓｃａｄｅｄ実行方式を指定するか否かを判定する（Ｓ５０５）。この判定の結果、Ｃａｓｃａｄｅｄ実行方式を指定する場合（Ｙｅｓ）には、命令Ｅｘｃｕｔｅ部３４がＰｅｎｄｉｎｇ判定ポイントまで命令を実行し（Ｓ５０６）、Ｃａｓｃａｄｅｄ外部信号を受信したか否かを判定する（Ｓ５０７）。この判定の結果、Ｃａｓｃａｄｅｄ外部信号を受信した場合（Ｙｅｓ）には、命令を実行し（Ｓ５０８）、Ｃａｓｃａｄｅｄ外部信号を送信して（Ｓ５０９）、処理を終了する。
【００５６】
また、Ｓ５０２の判定の結果、Ｄｅｃｏｄｅ完了でない場合（Ｎｏ）は、命令Ｄｅｃｏｄｅ部３２へ送信し（Ｓ５１０）、Ｓ５０３へ移行する。
【００５７】
また、Ｓ５０５の判定の結果、Ｃａｓｃａｄｅｄ実行方式を指定しない場合（Ｎｏ）は、命令Ｅｘｃｕｔｅ部３４が命令を実行し（Ｓ５１１）、制御ユニット１０に完了通知を送信して（Ｓ５１２）、処理を終了する。
【００５８】
また、Ｓ５０７の判定の結果、Ｃａｓｃａｄｅｄ外部信号を受信していない場合（Ｎｏ）は、Ｐｅｎｄｉｎｇキュー３５に登録し（Ｓ５１３）、Ｃａｓｃａｄｅｄ外部信号を受信したか否かを判定し（Ｓ５１４）、そしてＣａｓｃａｄｅｄ外部信号を受信した場合（Ｙｅｓ）には、Ｐｅｎｄｉｎｇキュー３５から削除し（Ｓ５１５）、Ｓ５０８に移行する。
【００５９】
以上のようにして、サブ演算ユニット３０の処理が行われる。
【００６０】
次に、図１０により、前述した完了サブ演算ユニットの構成の一例を説明する。図１０は、完了サブ演算ユニットの構成の一例を示す図である。
【００６１】
完了サブ演算ユニット４０は、命令受信部４１と、命令Ｄｅｃｏｄｅ部４２と、命令Ａｌｌｏｃａｔｅ部４３と、命令Ｅｘｅｃｕｔｅ部４４と、Ｐｅｎｄｉｎｇキュー４５と、データキャッシュ４６から構成される。
【００６２】
このように構成される完了サブ演算ユニット４０において、命令受信部４１は、制御ユニット１０の演算ユニット実行管理部１５が発行した命令を受信する。受信した命令が演算ユニット専用命令であり、まだデコードされていない場合には、命令Ｄｅｃｏｄｅ部４２に対してデコードを依頼する。命令Ａｌｌｏｃａｔｅ部４３は、レジスタ等命令実行に必要なリソースを割り当てる。命令Ｅｘｅｃｕｔｅ部４４は、命令を実行する。また、命令Ｅｘｅｃｕｔｅ部４４は、当該命令においてＣａｓｃａｄｅｄ実行方式が指定されており、かつ、Ｃａｓｃａｄｅｄ外部信号を受信していない場合には、当該命令をＰｅｎｄｉｎｇキュー４５に登録する。Ｃａｓｃａｄｅｄ外部信号を受信した場合には、Ｐｅｎｄｉｎｇキュー４５から該当命令を削除し、実行を再開し、制御ユニット１０に完了通知を送信する。
【００６３】
次に、図１１により、前述した完了サブ演算ユニットの処理フローの一例を説明する。図１１は、完了サブ演算ユニットの処理フローの一例を示す図である。
【００６４】
完了サブ演算ユニット４０の処理においては、まず、制御ユニット１０から命令受信部４１が命令を受信し（Ｓ６０１）、Ｄｅｃｏｄｅ完了か否かを判定する（Ｓ６０２）。この判定の結果、Ｄｅｃｏｄｅ完了の場合（Ｙｅｓ）には、命令Ａｌｌｏｃａｔｅ部４３へ送信し（Ｓ６０３）、さらに命令Ｅｘｃｕｔｅ部４３へ送信する（Ｓ６０４）。
【００６５】
続いて、Ｃａｓｃａｄｅｄ実行方式を指定するか否かを判定する（Ｓ６０５）。この判定の結果、Ｃａｓｃａｄｅｄ実行方式を指定する場合（Ｙｅｓ）には、命令Ｅｘｃｕｔｅ部４４がＰｅｎｄｉｎｇ判定ポイントまで命令を実行し（Ｓ６０６）、Ｃａｓｃａｄｅｄ外部信号を受信したか否かを判定する（Ｓ６０７）。この判定の結果、Ｃａｓｃａｄｅｄ外部信号を受信した場合（Ｙｅｓ）には、命令を実行し（Ｓ６０８）、制御ユニット１０に完了通知を送信して（Ｓ６０９）、処理を終了する。
【００６６】
また、Ｓ６０２の判定の結果、Ｄｅｃｏｄｅ完了でない場合（Ｎｏ）は、命令Ｄｅｃｏｄｅ部４２へ送信し（Ｓ６１０）、Ｓ６０３へ移行する。
【００６７】
また、Ｓ６０５の判定の結果、Ｃａｓｃａｄｅｄ実行方式を指定しない場合（Ｎｏ）は、命令Ｅｘｃｕｔｅ部４４が命令を実行して（Ｓ６１１）、処理を終了する。
【００６８】
また、Ｓ６０７の判定の結果、Ｃａｓｃａｄｅｄ外部信号を受信していない場合（Ｎｏ）は、Ｐｅｎｄｉｎｇキュー４５に登録し（Ｓ６１２）、Ｃａｓｃａｄｅｄ外部信号を受信したか否かを判定し（Ｓ６１３）、そしてＣａｓｃａｄｅｄ外部信号を受信した場合（Ｙｅｓ）には、Ｐｅｎｄｉｎｇキュー４５から削除し（Ｓ６１４）、Ｓ６０８に移行する。
【００６９】
以上のようにして、完了サブ演算ユニット４０の処理が行われる。
【００７０】
次に、図１２により、前述した制御ユニットから演算ユニットへの命令フォーマットの一例を説明する。図１２は、制御ユニットから演算ユニットへの命令フォーマットの一例を示す図である。
【００７１】
制御ユニット１０から演算ユニット２０，３０，４０への命令フォーマットには、命令コードと、Ｃａｓｃａｄｅｄ実行方式と、命令オペランドから構成される。Ｃａｓｃａｄｅｄ実行方式は、たとえば、“１”の場合にＣａｓｃａｄｅｄ実行方式が行われ、“０”の場合には通常実行方式となる。
【００７２】
以上説明したように、本実施の形態のマルチプロセッサシステムによれば、明示的にＳＩＭＤ命令をプロセッサ１間でＣａｓｃａｄｅｄ状に実行することで、チップ内異種マルチプロセッサの使い勝手および性能を向上させることができる。
【００７３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００７４】
本発明は、プロセッサシステムに関し、特に、チップ内異種マルチプロセッサに適用して有効である。
【図面の簡単な説明】
【００７５】
【図１】本発明の一実施の形態におけるマルチプロセッサシステムの構成の一例を示す図である。
【図２】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、制御ユニットおよび演算ユニットの構成の一例を示す図である。
【図３】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、制御ユニットの命令実行処理フローの一例を示す図である。
【図４】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、演算ユニット実行管理部の処理フローの一例を示す図である。
【図５】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、演算ユニット実行管理部の命令完了処理フローの一例を示す図である。
【図６】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、メイン演算ユニットの構成の一例を示す図である。
【図７】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、メイン演算ユニットの処理フローの一例を示す図である。
【図８】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、サブ演算ユニットの構成の一例を示す図である。
【図９】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、サブ演算ユニットの処理フローの一例を示す図である。
【図１０】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、完了サブ演算ユニットの構成の一例を示す図である。
【図１１】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、完了サブ演算ユニットの処理フローの一例を示す図である。
【図１２】本発明の一実施の形態におけるマルチプロセッサシステムにおいて、制御ユニットから演算ユニットへの命令フォーマットの一例を示す図である。
【符号の説明】
【００７６】
１…プロセッサ、２…メモリ、３…内部ネットワーク、１０…制御ユニット、１１…命令Ｆｅｔｃｈ部、１２…命令Ｄｅｃｏｄｅ部、１３…命令Ａｌｌｏｃａｔｅ部、１４…命令Ｅｘｅｃｕｔｅ部、１５…演算ユニット実行管理部、１６…命令キャッシュ、１７…データキャッシュ、２０…メイン演算ユニット、２１…命令受信部、２２…命令Ｄｅｃｏｄｅ部、２３…命令Ａｌｌｏｃａｔｅ部、２４…命令Ｅｘｅｃｕｔｅ部、２５…データキャッシュ、３０…サブ演算ユニット、３１…命令受信部、３２…命令Ｄｅｃｏｄｅ部、３３…命令Ａｌｌｏｃａｔｅ部、３４…命令Ｅｘｅｃｕｔｅ部、３５…Ｐｅｎｄｉｎｇキュー、３６…データキャッシュ、４０…完了サブ演算ユニット、４１…命令受信部、４２…命令Ｄｅｃｏｄｅ部、４３…命令Ａｌｌｏｃａｔｅ部、４４…命令Ｅｘｅｃｕｔｅ部、４５…Ｐｅｎｄｉｎｇキュー、４６…データキャッシュ、５０…共有キャッシュ、６０…プログラム、７０…データ。
【図１】
2007148709.tif 000003
【図２】
2007148709.tif 000004
【図３】
2007148709.tif 000005
【図４】
2007148709.tif 000006
【図５】
2007148709.tif 000007
【図６】
2007148709.tif 000008
【図７】
2007148709.tif 000009
【図８】
2007148709.tif 000010
【図９】
2007148709.tif 000011
【図１０】
2007148709.tif 000012
【図１１】
2007148709.tif 000013
【図１２】
2007148709.tif 000014