(57)【特許請求の範囲】
【請求項１】
複数のプロセッサを有するマルチプロセッサシステムであって、
前記複数のプロセッサを単一のプログラム制御によって動作させる第１のプログラム制御モードと、前記複数のプロセッサを独立した複数のプログラム制御によってそれぞれ動作させる第２のプログラム制御モードとを持ち、
前記複数のプロセッサは、それぞれ、
トリガとして設定された第１の命令コードを格納する命令レジスタを有し、当該プロセッサに入力された第２の命令コードが、前記第１の命令コードと一致したとき、トリガ信号を他のプロセッサに通知する命令トリガ発生装置を備えたものであり、
前記トリガ信号の通知を用いて、前記第１および第２のプログラム制御モードの遷移時における、前記複数のプロセッサ間の同期を制御する
ことを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムにおいて、
前記複数のプロセッサは、それぞれ、
前記トリガ信号の通知を受けたとき、割り込みを発生させるよう、割り込み制御信号を出力する命令トリガ検出装置を備えている
ことを特徴とするマルチプロセッサシステム。
【請求項３】
複数のプロセッサを有するマルチプロセッサシステムにおいて、プログラムの実行を制御するプログラム制御方法であって、
前記マルチプロセッサシステムは、前記複数のプロセッサを単一のプログラム制御によって動作させる第１のプログラム制御モードと、前記複数のプロセッサを独立した複数のプログラム制御によってそれぞれ動作させる第２のプログラム制御モードとを持ち、
前記複数のプロセッサにおいて、第１の命令コードをトリガとして設定するステップと、
前記複数のプロセッサにおいて、前記第１の命令コードを命令レジスタに格納するステップと、
前記複数のプロセッサのうちいずれか１つにおいて、当該プロセッサに入力された第２の命令コードが、当該プロセッサの命令レジスタに格納された前記第１の命令コードと一致したとき、トリガ信号を他のプロセッサに通知するステップとを備え、
前記トリガ信号の通知を用いて、前記第１および第２のプログラム制御モード遷移時における、前記複数のプロセッサ間の同期を制御する
ことを特徴とするプログラム制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチプロセッサシステムにおけるプログラム制御に関する技術に属する。
【０００２】
【従来の技術】
図１７は複数の演算装置およびレジスタを並列動作させるプロセッサシステムの従来の構成例を示す図である。図１７（ａ）に示すマルチプロセッサシステムでは、一般に、各プロセッサ１１０，１２０のスレッド（処理単位）は独立して動作する。このため、複数の独立したスレッドを並列実行するアプリケーションの場合は、処理能力が高いとされている。
【０００３】
一方、図１７（ｂ）に示すＶＬＩＷ（Very Long Instruction Word）システムでは、単一の命令コードに、複数の演算装置およびレジスタを制御するフィールドが記述されており、単一のスレッドの処理能力が高いとされている。
【０００４】
上述したシステムのうちどちらが優れているかについての評価は、アプリケーションによって左右されるため、アプリケーションの持つスレッドの特徴に応じて、採用するシステムを決定するのが好ましい。
【０００５】
【発明が解決しようとする課題】
ところが、近年の組み込みシステムにおいては、多様な種類の処理が混在しているために、どのようなプロセッサシステムを採用するのが好ましいか判断することが困難になっている。例えば、高速リアルタイム処理を実現するために非常に高い処理能力を必要とする単一スレッドの処理と、それほど高い処理能力を必要としない複数のスレッドの並列処理とが混在する場合、どのようなプロセッサシステムを採用しても、最適であるとは言い難い。このため、大抵の場合には、採用したプロセッサシステムの処理能力にマージンを設けることになるが、このことは、システムの低消費電力化や高速化の大きな障害となっている。
【０００６】
前記の問題に鑑み、本発明は、マルチプロセッサシステムにおいて、多様な処理に対応可能にし、システム全体の処理効率を向上させることを課題とする。
【０００７】
【課題を解決するための手段】
前記の課題を解決するために、請求項１の発明が講じた解決手段は、複数のプロセッサを有するマルチプロセッサシステムとして、前記複数のプロセッサを単一のプログラム制御によって動作させる第１のプログラム制御モードと、前記複数のプロセッサを独立した複数のプログラム制御によってそれぞれ動作させる第２のプログラム制御モードとを持ち、前記複数のプロセッサはそれぞれ、トリガとして設定された第１の命令コードを格納する命令レジスタを有し、当該プロセッサに入力された第２の命令コードが、前記第１の命令コードと一致したとき、トリガ信号を他のプロセッサに通知する命令トリガ発生装置を備えたものであり、前記トリガ信号の通知を用いて、前記第１および第２のプログラム制御モードの遷移時における、前記複数のプロセッサ間の同期を制御するものである。
【０００８】
そして、請求項２の発明では、前記請求項１のマルチプロセッサシステムにおける前記複数のプロセッサは、それぞれ、前記トリガ信号の通知を受けたとき、割り込みを発生させるよう、割り込み制御信号を出力する命令トリガ検出装置を備えているものとする。
【０００９】
また、請求項３の発明が講じた解決手段は、複数のプロセッサを有するマルチプロセッサシステムにおいて、プログラムの実行を制御するプログラム制御方法として、前記マルチプロセッサシステムは、前記複数のプロセッサを単一のプログラム制御によって動作させる第１のプログラム制御モードと、前記複数のプロセッサを独立した複数のプログラム制御によってそれぞれ動作させる第２のプログラム制御モードとを持ち、前記複数のプロセッサにおいて、第１の命令コードをトリガとして設定するステップと、前記複数のプロセッサにおいて、前記第１の命令コードを命令レジスタに格納するステップと、前記複数のプロセッサのうちいずれか１つにおいて、当該プロセッサに入力された第２の命令コードが、当該プロセッサの命令レジスタに格納された前記第１の命令コードと一致したとき、トリガ信号を他のプロセッサに通知するステップとを備え、前記トリガ信号の通知を用いて、前記第１および第２のプログラム制御モード遷移時における、前記複数のプロセッサ間の同期を制御するものである。
【００１０】
【発明の実施の形態】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００１１】
（第１の実施形態）
図１は本発明の第１の実施形態に係るマルチプロセッサシステムの構成を概念的に示すブロック図である。図１において、複数のプロセッサ１０，２０（プロセッサＡ，Ｂ）、命令記憶部３０および命令供給装置４０は、相互に接続されている。プロセッサ１０，２０は、命令デコーダ１１，１２、命令アドレス発生装置１２，２２、プログラム制御装置１３，２３、命令トリガ発生装置１４，２４、演算装置１５，２５およびレジスタ１６，２６を、それぞれ備えている。また命令記憶部３０は、メモリ制御装置３１、命令アドレス供給装置３２および複数の命令メモリ３３，３４（命令メモリＡ，Ｂ）を備えている。
【００１２】
図１のマルチプロセッサシステムは、複数のプロセッサ１０，２０を、単一のプロセッサが司る単一のプログラム制御によって動作させる第１のプログラム制御モードと、複数のプロセッサ１０，２０を、独立した複数のプログラム制御によって動作させる第２のプログラム制御モードとを持つ。本実施形態では、ＶＬＩＷモードを第１のプログラム制御モードとし、マルチスレッドモードを第２のプログラム制御モードとする。
【００１３】
各プロセッサ１０，２０において、プログラム制御装置１３，２３はそれぞれプログラム同期フラグ１３ａ，２３ａを有し、このプログラム同期フラグ１３ａ，２３ａに、ＶＬＩＷモードかマルチスレッドモードかを示すプログラム同期情報を保持する。そして、プロセッサ１０が、ＶＬＩＷモード時に本マルチプロセッサシステム全体のプログラム制御と命令実行との両方を行うマスタプロセッサとなり、プロセッサ２０が命令実行のみを行うスレーブプロセッサとなる。マスタプロセッサとなるプロセッサ１０は、プログラム同期情報を更新したとき、この更新したプログラム同期情報を命令記憶部３０や命令供給部４０に通知する。
【００１４】
命令メモリ３３，３４には、このマルチプロセッサシステムが処理を行うプログラムの各命令が格納されている。プロセッサ１０内の命令アドレス発生装置１２から第１の命令アドレスＡＤ１が出力され、プロセッサ２０内の命令アドレス発生装置２２から第２の命令アドレスＡＤ２が出力される。この第１および第２の命令アドレスＡＤ１，ＡＤ２は命令記憶部３０の命令アドレス供給装置３２に入力される。そして、命令アドレス供給装置３２は、命令メモリ３３，３４に命令アドレスを供給し、これにより、命令メモリ３３，３４からプログラムの各命令が読み出される。
【００１５】
図２は複数の命令メモリ３３，３４によって構成される命令メモリアドレス空間を概念的に示す図である。図２に示すように、ＶＬＩＷモードに対応するＶＬＩＷ領域Ｒ１では、複数の命令メモリ３３，３４によって単一の命令メモリアドレス空間が構成されており、一方、マルチスレッドモードに対応するマルチスレッド領域Ｒ２，Ｒ３では、複数の命令メモリ３３，３４がそれぞれ独立した複数の命令メモリアドレス空間を構成する。
【００１６】
図３はモード毎のメモリアクセス動作を概念的に示す図である。まずＶＬＩＷモードでは、図３（ａ）に示すように、命令メモリ３３，３４に共通のアドレス（マスタプロセッサとなるプロセッサ１０から出力された第１の命令アドレスＡＤ１）が供給される。命令メモリ３３，３４から出力されたデータは、合成されて単一の命令データとして出力される。すなわち、ＶＬＩＷモードでは、命令メモリ３３，３４はメモリ個数分のデータ長を持つ論理バンクとして動作する。
【００１７】
一方、マルチスレッドモードでは、図３（ｂ）に示すように、命令メモリ３３には第１の命令アドレスＡＤ１が供給される一方、命令メモリ３４には第２の命令アドレスＡＤ２が供給される。そして、命令メモリ３３，３４から出力されたデータは、それぞれそのまま複数の命令データとして出力される。すなわち、マルチスレッドモードでは、データがそれぞれ独立して出力される論理バンクとして動作する。
【００１８】
命令アドレス供給装置３２は、メモリ制御装置３１からの指示によって、図３に示すようなメモリアクセス動作の切替を行う。マスタプロセッサとなるプロセッサ１０は、プログラム同期フラグ１３に保持したプログラム同期情報を更新したとき、この更新したプログラム同期情報を、命令記憶部３０内のメモリ制御装置３１に通知する。メモリ制御装置３１はこの通知を受けて、プログラム制御モードの切替を検知し、命令アドレス供給装置３２に対してメモリアクセス動作の切替を指示する。
【００１９】
本実施形態では、プログラム制御モードの切替を、特定の命令コードを与えることによって行う。図４は本実施形態における命令コードを用いたプログラム制御モードの切替を示す図であり、同図中、（ａ）はＶＬＩＷモードからマルチスレッドモードへの切替、（ｂ）はマルチスレッドモードからＶＬＩＷモードへの切替である。図４に示すように、本マルチプロセッサシステムでは、ＶＬＩＷモードからマルチスレッドモードに遷移するための命令としてfork命令を備え、マルチスレッドモードからＶＬＩＷモードに遷移するための命令としてjoin命令を備える。第１の分岐命令コードとしてのfork命令は複数のアドレスデータadr1，adr2を持ち、命令オペランドとして各プロセッサ１０，２０がそれぞれ分岐する先のアドレスを指定することができる。また、第２の分岐命令コードとしてのjoin命令は１個のアドレスデータadr を持ち、命令オペランドとしてマスタープロセッサとなるプロセッサ１０が分岐する先のアドレスを指定することができる。
【００２０】
図４（ａ）に示すように、本マルチプロセッサシステムがＶＬＩＷモードのときにfork命令が与えられると、そこで指定されたアドレスadr1，adr2が命令アドレス発生装置１２，２２にそれぞれセットされ、これとともに、プログラム制御装置１３，２３はプログラム制御モードをマルチスレッドモードへ遷移する。そして、命令アドレス供給装置３２は命令アドレス発生装置１２，２２から出力される各アドレスadr1，adr2を命令メモリ３３，３４にそれぞれ供給する。
【００２１】
また図４（ｂ）に示すように、本マルチプロセッサシステムがマルチスレッドモードのときにjoin命令が与えられると、そこで指定されたアドレスadr がマスタープロセッサとなるプロセッサ１０の命令アドレス発生装置１２にセットされ、これとともに、プログラム制御装置１３はプログラム制御モードをＶＬＩＷモードへ遷移する。すなわち、プログラム同期フラグ１３ａが保持するプログラム同期情報を、ＶＬＩＷモードを示すように更新するとともに、他のプロセッサ２０に通知する。命令アドレス供給装置３２はプロセッサ１０の命令アドレス発生装置１２から出力されるアドレスadr を、命令メモリ３３，３４にそれぞれ供給する。
【００２２】
このような動作によって、ＶＬＩＷモードからマルチスレッドモード、またはマルチスレッドモードからＶＬＩＷモードへの遷移が実現される。
【００２３】
また、本実施形態では、各プロセッサ１０，２０のプログラム制御装置１３，２３が有するプログラム同期フラグ１３ａ，２３ａによって、プログラム制御モード遷移時におけるプロセッサ間の制御同期を確立する。なお、同期フラグ１３ａ，２３ａに連動するフラグによって制御同期を確立するようにしてもよい。
【００２４】
図５（ａ）はプログラム同期フラグに関するプロセッサ制御手順を示すフローチャートである。図５（ａ）に示すように、各プロセッサ１０，２０はマルチスレッドモードを終了する（Ｓ１１）と、まずプログラム同期フラグを更新する（Ｓ１２）。この更新によって、他のプロセッサにプログラム同期情報の通知が行われる。次に、他のプロセッサからのプログラム同期情報の通知が行われているか否かを確認する（Ｓ１３）。他のプロセッサからのプログラム同期情報の通知を確認したとき、ＶＬＩＷモード動作を開始する（Ｓ１４）。
【００２５】
図５（ｂ）は図５（ａ）に示すプロセッサ制御手順に基づいたプロセッサ間の同期動作を示すタイミングチャートである。図５（ｂ）に示すように、まず、プロセッサ１０，２０がマルチスレッドモードで動作しているものとする。次に、プロセッサ２０が先にマルチスレッドモードを終了する。プロセッサ２０はプログラム同期フラグを更新し、プロセッサ１０にプログラム同期情報を通知する。その後、プロセッサ２０はプロセッサ１０からプログラム同期情報が通知されるまで動作を待ち状態にする。
【００２６】
次にプロセッサ１０がマルチスレッドモードを終了すると、プログラム同期フラグを更新する。プロセッサ１０はプロセッサ２０からプログラム同期情報を通知されているので、ＶＬＩＷモードに遷移する。一方、プロセッサ２０はプロセッサ１０からのプログラム同期情報通知を受けたので、プロセッサ１０と同時にＶＬＩＷモードに遷移する。その後、各プロセッサ１０，２０はＶＬＩＷモードで動作を行う。このような動作によって、プログラム制御モード遷移時の制御同期を確立する。
【００２７】
図６は本実施形態に係るマルチプロセッサシステムの動きの例を概念的に示す図である。図６（ａ）に示すようなプログラムが与えられたとき、図６（ｂ）に示すようにプログラム制御モードが切り替えられて実行される。例えば、モジュールＡはＶＬＩＷモードにおいて実行され、またモジュールＢとモジュールＣはマルチスレッドモードにおいて、プロセッサＡ  １０およびプロセッサＢ  ２０によってそれぞれ実行されている。
【００２８】
次に、ＶＬＩＷモードおよびマルチスレッドモード時の命令供給について説明する。図１に示すように、命令供給部４０は命令キュー４１を有する。この命令キュー４１は、命令コード長が可変である場合でも、命令フェッチ１単位動作によって全命令データをプロセッサに供給するために、用いられる。
【００２９】
図７は命令キュー４１の動きを示す図であり、（ａ）はＶＬＩＷモード時、（ｂ）はマルチスレッドモード時である。命令キュー４１の動作は大きく４工程に分かれており、工程１：複数のプロセッサへの命令供給、工程２：残り命令データの移動、工程３：新規命令データのフェッチ、工程４：命令データのマージとなっている。
【００３０】
ここで、ＶＬＩＷモード時とマルチスレッドモード時とにおいて、命令キュー動作が異なる点は、命令コード境界と命令の格納方法にある。
【００３１】
図７（ａ）に示すように、ＶＬＩＷモード時における命令コード境界は、各プロセッサに供給する命令コード長に応じて異なる。工程１において、各プロセッサ１０，２０に命令データを供給した後、工程２において残りの命令データを境界先頭へ移動する。ＶＬＩＷモード時の境界先頭は一つのみであり、命令キュー４１の先頭と同一である。そして工程３において複数のメモリ３３，３４からフェッチしたデータを、工程４において残りの命令データとマージする。
【００３２】
一方、図７（ｂ）に示すように、マルチスレッドモード時における命令コード境界は、各プロセッサ１０，２０に供給される命令コード長によらず一定であり、命令メモリバス幅の２倍に相当する位置に等しい。工程１において、各プロセッサ１０，２０に命令データを供給した後、工程２において残りの命令データを境界先頭へ移動する。マルチスレッドモード時の境界先頭は複数存在するため、残りの命令データは命令キュー４１内に分散して配置される。そして工程３において複数のメモリ３３，３４からフェッチしたデータを、工程４において残りの命令データとそれぞれマージする。このような命令キュー４１の動きによって、ＶＬＩＷモードとマルチスレッドモードの双方において、可変長命令動作を実現することができる。
【００３３】
なお、プログラム制御モードの切替は、命令コードに依らず、他の方法によって行ってもよい。図８はプロセッサ内に設けられたレジスタによってプログラム制御モードの切替を行う場合の構成例を示す図である。図８の例では、プロセッサ１０Ａおよびプロセッサ２０Ａは、モード遷移時の分岐先アドレスを保持するアドレスレジスタ１７，２７と、プログラム制御モードの情報を保持するモードレジスタ１８，２８をそれぞれ備えている。
【００３４】
（第２の実施形態）
図９は本発明の第２の実施形態に係るマルチプロセッサシステムの主要部の構成を示す図である。図９において、第１のプロセッサとしてのプロセッサ５０および第２のプロセッサとしてのプロセッサ６０は、演算装置５１，６１、レジスタ５２，６２、セレクタ５３，６３、共有レジスタ（ｖｒ）５４，６４、共有制御装置５５，６５、共有バス５６，６６、および転送／演算バス５７，６７をそれぞれ備えている。プロセッサ５０の内部構成要素としての共有レジスタ５４は、情報伝達手段としての共有バス６６を経由してプロセッサ６０の転送／演算バス６７に接続されており、プロセッサ６０の内部構成要素としての共有レジスタ６４は、情報伝達手段としての共有バス５６を経由してプロセッサ５０の転送／演算バス５７に接続されている。
【００３５】
プロセッサ５０において、演算装置５１の出力およびレジスタ５２の出力はセレクタ５３によって選択され、共有レジスタ５４に入力される。セレクタ５３は、共有制御装置５５によって、どの演算装置５１またはレジスタ５２を選択するかを決定する。またプロセッサ６０において、演算装置６１の出力およびレジスタ６２の出力はセレクタ６３によって選択され、共有レジスタ６４に入力される。セレクタ６３は、共有制御装置６５によって、どの演算装置６１またはレジスタ６２を選択するかを決定する。
【００３６】
図９に示すマルチプロセッサシステムに対して、次のような命令記述が与えられるものとする。
【００３７】
opecode1 dst1,src1｜opecode2 dst2,src2
なお、
「opecode1」：プロセッサ５０の命令
「opecode2」：プロセッサ６０の命令
「dst1」：プロセッサ５０の転送先
「dst2」：プロセッサ６０の転送先
「src1」：プロセッサ５０の転送元
「src2」：プロセッサ６０の転送元
である。このような命令記述に対して、
dst1＝ｖｒのとき
プロセッサ５０の共有レジスタ５４を転送先にする
src1＝ｖｒのとき
プロセッサ６０の共有レジスタ６４を転送元にする
dst2＝ｖｒのとき
プロセッサ６０の共有レジスタ６４を転送先にする
src2＝ｖｒのとき
プロセッサ５０の共有レジスタ５４を転送元にする
というように対応させる。
【００３８】
すなわち、プロセッサ５０は、プロセッサ６０の共有レジスタ６４を指定するオペランドを持つ命令コードを受けたとき、共有バス５６を介して、プロセッサ６０の共有レジスタ６４の出力を用い、この命令コードに従った処理を実行する。また同様に、プロセッサ６０は、プロセッサ５０の共有レジスタ５４を指定するオペランドを持つ命令コードを受けたとき、共有バス６６を介して、プロセッサ５０の共有レジスタ５４の出力を用い、この命令コードに従った処理を実行する。
【００３９】
この動作により、１処理ステップで実現できる演算の自由度が向上し、処理能力を高めることができる。演算式の例としては、Ｙ＝Ａ＋Ｂ、Ｂ＝Ｃ×Ｄという演算式を組み合わせて、Ｙ＝Ａ＋（Ｃ×Ｄ）とすることが挙げられる。これは、Ｂ＝ｒｒと見立てることにより実現が可能である。
【００４０】
なお、図９の構成では、共通レジスタ５４，６４を各プロセッサ５０，６０にそれぞれ設けるものとしたが、共通レジスタを設けないで、各セレクタ５３，６３を直接共通バスに接続してもよい。この場合には、命令コードのオペランドとして、相手方のプロセッサの演算装置やレジスタを直接指定すればよい。
【００４１】
なお、共通バス５６，６６は、信号のやりとりができるものであればよく、専用信号線等の他の情報伝達手段を用いてもよい。
【００４２】
（第３の実施形態）
図１０（ａ）は本発明の第３の実施形態に係るマルチプロセッサシステムの主要部の構成を示す図である。図１０（ａ）において、プロセッサ７０は、命令レジスタ７２および比較器７３を有する命令トリガ発生装置７１と、命令トリガ検出装置７５とを備えている。またプロセッサ８０も同様に、命令レジスタ８２および比較器８３を有する命令トリガ発生装置８１と、命令トリガ検出装置８５とを備えている。プロセッサ７０の命令トリガ発生装置７１とプロセッサ８０の命令トリガ検出装置８５との間には、第１のトリガ通信バス７４が構成されており、また、プロセッサ８０の命令トリガ発生装置８１とプロセッサ７０の命令トリガ検出装置７５との間には、第２のトリガ通信バス８４が構成されている。
【００４３】
プロセッサ７０において、命令トリガ発生装置７１は、プロセッサ７０に入力された命令コードと命令レジスタ７２に格納された命令コードとを比較器７３によって比較し、一致するか否かを検出する。そして一致を検出したとき、トリガ信号を出力する。命令トリガ発生装置７１から出力されたトリガ信号は、第１のトリガ通信バス７４を介してプロセッサ８０の命令トリガ検出装置８５に通知される。命令トリガ検出装置８５はトリガ信号の通知を受けて割り込み制御信号を出力し、これによりプロセッサ８０において割り込みが発生する。
【００４４】
同様に、プロセッサ８０において、命令トリガ発生装置８１は、プロセッサ８０に入力された命令コードと命令レジスタ８２に格納された命令コードとを比較器８３によって比較し、一致するか否かを検出する。そして一致を検出したとき、トリガ信号を出力する。命令トリガ発生装置８１から出力されたトリガ信号は、第２のトリガ通信バス８４を介してプロセッサ７０の命令トリガ検出装置７５に通知される。命令トリガ検出装置７５はトリガ信号の通知を受けて割り込み制御信号を出力し、これによりプロセッサ７０において割り込みが発生する。
【００４５】
図１０（ｂ）は図１０（ａ）に示すマルチプロセッサシステムにおける命令記述の例である。ここで、プロセッサ７０およびプロセッサ８０はともにマルチスレッドモードで独立して動作していると仮定する。そして、プロセッサ７０が図１０（ｂ）のアセンブラソースを実行するものとする。
【００４６】
ここで、「trig」という記述は、その次に記述された命令をトリガとして設定する命令である。トリガとして設定された命令は、命令レジスタ７２に登録される。また「untrig」という記述は、そのトリガ設定を解除する命令である。すなわち、図１０（ｂ）において、「trig」によって、その次の命令である「add r0, r1」が命令レジスタ７２に登録され、トリガとして設定される。その後、プロセッサ７０はアセンブラを逐次実行し、「add r0,r1」という命令を実行したとき、命令トリガ発生装置７１からトリガ信号が出力される。このトリガ信号は第１のトリガ通信バス７４を介してプロセッサ８０の命令トリガ検出装置８５に通知される。これにより、プロセッサ８０において割り込みが発生する。その後、トリガが不要になった段階で、「untrig」によって、プロセッサ７０はトリガ設定を解除する。このような一連の動作によって、本実施形態では、プログラム実行内容に応じた同期を実現することができる。
【００４７】
一般的にこのようなトリガ情報をプロセッサ間でやりとりする場合、メモリ経由、レジスタ経由での通信によって実施されるが、この場合、トリガ情報を与えるために、プログラム中でメモリまたはレジスタへの書き込みが必要になる。本実施形態では、プログラム中で実行される命令自身がトリガ情報となるため、書き込みが不要となり、同期を実現するための動作効率が向上する。
【００４８】
（第４の実施形態）
本発明の第４の実施形態は、第１の実施形態で示したようなマルチプロセッサシステムにおいて実行可能なように、プログラムを最適化する方法に関するものである。
【００４９】
図１１は本発明の第４の実施形態に係るプログラム最適化装置の構成を概念的に示すブロック図である。図１１において、アプリケーションを構成する各モジュールのソースコード９０は、依存関係検出手段９１、処理量検出手段９２およびコンパイラ９５に入力される。依存関係検出手段９１はモジュールソースコード９０を解析して、プログラムの各モジュールについて他のモジュールとの依存関係を検出する。また処理量検出手段９２はモジュールソースコード９０を解析して、プログラムの各モジュールの処理量を検出する。
【００５０】
図１２（ａ）は依存関係および処理量の検出を説明するための図である。いま、処理対象のプログラムは、３個のモジュールすなわちモジュールＡ、モジュールＢおよびモジュールＣを含むものとする。モジュールＡはモジュールＢおよびモジュールＣよりも処理量が大きく、モジュールＢはモジュールＡとの間でデータの依存関係（引数、戻り値）を持つ。依存関係検出手段９１はこのモジュールＡとモジュールＢの依存関係を検出し、処理量検出手段９２はモジュールＡ、モジュールＢおよびモジュールＣの処理量を検出する。
【００５１】
検出された依存情報および処理量情報は、プログラム制御判定手段９３に供給される。プログラム制御判定手段９３は供給された依存情報および処理量情報を基にして、各モジュールについてＶＬＩＷモードまたはマルチスレッドモードのいずれで動作させるかを判定し、コンパイラ９５およびアセンブラ９６の動作モード制御を実施する。
【００５２】
図１２（ｂ）は判定結果の例を示す図である。処理量の大きなモジュールＡはＶＬＩＷモードで動作し、依存関係のないモジュールＣはマルチスレッドモードによってモジュールＢと並列動作する。コンパイラ９５はこの動作モード制御に従い、モジュールソースコード９０をコンパイルし、モジュール単位にＶＬＩＷモードまたはマルチスレッドモードへのモード遷移コードを挿入し、アセンブラコードデータをアセンブラ９６に供給する。アセンブラ９６もプログラム制御判定手段９３からの動作モード制御に従い、モジュール単位に、ＶＬＩＷモードまたはマルチスレッドモードへのモード遷移コードを挿入または移動する。本実施形態においてコンパイラ９５、アセンブラ９６の両方でモード遷移コードの挿入を実施しているのは、複数段階で最適化することを目的としている。なお、挿入される動作モード遷移コードは、第１の実施形態で示したfork命令およびjoin命令、または同様の動作を実現するコードが望ましい。
【００５３】
図１３はコンパイラ９５から出力されたプログラムの一例である。図１３のプログラムでは、各モジュールについてプログラム制御モードがすでに判定されており、動作モード遷移コードとしてfork命令およびjoin命令が挿入されている。
【００５４】
次にプログラム制御判定手段９３は、動作モード情報を命令メモリ割り当て手段９４に供給する。命令メモリ割り当て手段９４は命令メモリアドレス空間におけるＶＬＩＷ領域およびマルチスレッド領域に各モジュールを割り当て、リンカ９７のアドレス空間制御を実施する。
【００５５】
図１４は図１３のプログラムを対象にした場合の命令メモリの割り当てを概念的に示す図である。図１４に示すように、まず各モジュールを、仮想メモリに配置する。ＶＬＩＷモードで実行するモジュールＡ，ＤはＶＬＩＷ領域仮想メモリに配置し、マルチスレッドモードで実行するモジュールＢ，Ｃ，Ｅはそれぞれのマルチスレッド領域に配置する。そして、その後、実アドレス変換を行う。すなわち、ＶＬＩＷ領域については命令メモリ３３，３４を単一のメモリに見立ててアドレス変換を行い、マルチスレッド領域については、それぞれに対応する命令メモリ３３，３４に対してアドレス変換を行う。
【００５６】
そして、リンカ９７はアセンブラ９６から供給された命令コードデータに対して、命令メモリ割り当て手段９４からのアドレス空間制御に従い、モジュール毎に命令メモリアドレスをマッピングし、その結果を命令コード９８として出力する。このような一連の動作によって、各モジュールの動作最適化を実現することができる。
【００５７】
図１５は本実施形態に係るプログラム最適化装置の他の構成例を示すブロック図である。図１５において、図１１と共通の構成要素には図１１と同一の符号を付しており、ここではその詳細な説明を省略する。アプリケーションを構成する各モジュールのソースコード９０は、消費電力推定手段１０１およびコンパイラ９５に入力される。また、消費電力テーブル１００には、マルチプロセッサシステムが有する各プロセッサ毎に、命令種別毎の消費電力が記述されている。消費電力推定手段１０１はモジュールソースコード９０を解析するとともに、消費電力テーブル１００から消費電力情報を受けて、各モジュールを実行した時のピーク電力と平均電力を推定する。
【００５８】
図１６（ａ）は消費電力テーブルの内容の一例、図１６（ｂ）はモジュール毎の消費電力の推定結果の一例である。図１６（ａ）に示すように、マルチプロセッサシステムの各プロセッサは、演算器やレジスタ構成が異なるために消費電力の特性が異なっている。また、ＶＬＩＷモードとマルチスレッドモードとにおいても消費電力が異なる。
【００５９】
そしてプログラム制御判定手段１０３は、ピーク電力および平均電力の情報を基にして、各モジュールをＶＬＩＷモードまたはマルチスレッドモードのいずれで動作させるかを判定する。図１６（ｂ）の場合には、モジュールＡはＶＬＩＷモードで実行し、モジュールＢ，Ｃはマルチスレッドモードで実行するものと判定する。
【００６０】
以降の動作は、図１１の構成と同様である。このような一連の動作によって、各プロセッサの互いに異なる消費電力特性を考慮して、アプリケーションに最適な消費電力を満たすよう、各モジュールの動作最適化を実現することができる。
【００６１】
なお、本実施形態で示したプログラム最適化は、複数のプロセッサを有し、かつ、この複数のプロセッサを単一のプログラム制御によって動作させる第１のプログラム制御モードと、独立した複数のプログラム制御によってそれぞれ動作させる第２のプログラム制御モードとを持つマルチプロセッサシステムであれば、どのようなものであっても有効である。
【００６２】
なお、上述した各実施形態では、説明の便宜上、２個のプロセッサを有するマルチプロセッサシステムを例にとったが、プロセッサの個数は２以上であってもよい。
【００６３】
また、第１および第２のプログラム制御モードの例として、ＶＬＩＷモードとマルチスレッドモードとを用いたが、これ以外の制御モードであってもかまわない。
【００６４】
【発明の効果】
以上のように本発明によると、他のプロセッサの処理状況を組み合わせた処理を行うことによって、プログラム制御処理能力を向上することができ、プログラム制御モードの遷移時におけるプロセッサ間の同期を、効率良く、実現することができる。
【図面の簡単な説明】
【図１】  本発明の第１の実施形態に係るマルチプロセッサシステムの構成を概念的に示すブロック図である。
【図２】  複数の命令メモリによって構成される命令メモリアドレス空間を概念的に示す図である。
【図３】  プログラム制御モード毎のメモリアクセス動作を概念的に示す図である。
【図４】  命令コードを用いたプログラム制御モードの切替を示す図である。
【図５】  （ａ）はプログラム同期フラグに関するプロセッサ制御手順を示すフローチャート、（ｂ）はプロセッサ間の同期動作を示すタイミングチャートである。
【図６】  本発明の第１の実施形態に係るマルチプロセッサシステムの動きの例を概念的に示す図である。
【図７】  命令供給部に設けられた命令キューの動きを示す図である。
【図８】  プログラム制御モードの切替をレジスタによって行う場合の構成を示す図である。
【図９】  本発明の第２の実施形態に係るマルチプロセッサシステムの主要部の構成を示す図である。
【図１０】  （ａ）は本発明の第３の実施形態に係るマルチプロセッサシステムの主要部の構成を示す図、（ｂ）は（ａ）の構成における命令記述の例である。
【図１１】  本発明の第４の実施形態に係るプログラム最適化装置の構成を概念的に示すブロック図である。
【図１２】  （ａ）は検出した依存関係および処理量の一例、（ｂ）はモード判定結果を示す図である。
【図１３】  各モジュールのプログラム制御モードが判定されたプログラムの一例である。
【図１４】  図１３のプログラムを対象にした命令メモリの割り当てを概念的に示す図である。
【図１５】  本発明の第４の実施形態に係るプログラム最適化装置の他の構成例を示すブロック図である。
【図１６】  （ａ）は消費電力テーブルの内容の一例、（ｂ）は消費電力を参照したプログラム制御モード判定を説明するための図である。
【図１７】  従来のマルチプロセッサシステムの構成図である。
【符号の説明】
１０，１０Ａ  プロセッサ（マスタプロセッサ）
１３  プログラム制御装置
１３ａ  プログラム同期フラグ
２０，２０Ａ  プロセッサ
２３  プログラム制御装置
２３ａ  プログラム同期フラグ
ＡＤ１，ＡＤ２  命令アドレス
３０  命令記憶部
３３  命令メモリ
３４  命令メモリ
４０  命令供給部
４１  命令キュー
５０  プロセッサ（第１のプロセッサ）
６０  プロセッサ（第２のプロセッサ）
５１，６１  演算装置
５２，６２  レジスタ
５６，６６  共有バス（情報伝達手段）
７０，８０  プロセッサ
７１，８１  命令トリガ発生装置
９１  依存関係検出手段
９２  処理量検出手段
９３  プログラム制御判定手段
９４  命令メモリ割り当て手段
１０１  消費電力推定手段
１０３  プログラム制御判定手段
【図１】
0003708853.tif 000002
【図２】
0003708853.tif 000003
【図３】
0003708853.tif 000004
【図４】
0003708853.tif 000005
【図５】
0003708853.tif 000006
【図６】
0003708853.tif 000007
【図７】
0003708853.tif 000008
【図８】
0003708853.tif 000009
【図９】
0003708853.tif 000010
【図１０】
0003708853.tif 000011
【図１１】
0003708853.tif 000012
【図１２】
0003708853.tif 000013
【図１３】
0003708853.tif 000014
【図１４】
0003708853.tif 000015
【図１５】
0003708853.tif 000016
【図１６】
0003708853.tif 000017
【図１７】
0003708853.tif 000018