(57)【要約】【課題】  実行計算部の搭載数によらず、同一実行可能プログラムの使用が可能なプロセッサを提供する。【解決手段】  プロセッサは、実行計算部と、中間データ記憶部と、各実行計算部間及び各実行計算部と中間データ記憶部間の結線情報を保持する制御部とを備えており、実行計算部での処理内容を規定する複数の演算情報と、演算情報間での中間データの入出力関係を規定する接続情報とを含む実行可能プログラムを、実行計算部の数、結線情報及び接続情報に基づき１回以上のステージに分割して実行する。このとき、制御部は、実行されない演算情報との中間データを、中間データ記憶部から取得又は中間データ記憶部に保存するように、実行計算部及び中間データ記憶部に制御情報を出力する。【選択図】  図６
2007087264.tif 000002
【特許請求の範囲】
【請求項１】
入力及び出力のためのポートを１つ以上有する、１つ以上の実行計算手段を備え、
それぞれが１つの実行計算手段での処理内容を規定する複数の演算情報と、演算情報間での中間データの入出力関係を規定する接続情報とを含む実行可能プログラムを、１回以上のステージに分割して実行するプロセッサであって、
中間データ記憶手段と、
各実行計算手段について、各ポートが接続可能な中間データ記憶手段及び／又は他の実行計算手段についての情報である結線情報を保持する制御手段と、
を有し、
制御手段は、各ステージにおいて、実行計算手段の数、結線情報及び接続情報に基づき、該ステージにおいて実行する演算情報を決定し、
演算情報を実行する実行計算手段は、該ステージにおいて実行されない演算情報との間で入出力する中間データを、中間データ記憶手段との間で入出力することを特徴とするプロセッサ。
【請求項２】
実行計算手段は、各ポートに対応して設けられ、接続している中間データ記憶手段及び／又は他の実行計算手段から、１つの中間データ記憶手段又は他の実行計算手段を選択して対応するポートに接続する選択手段を備え、
制御手段は、各ステージにおいて、実行する演算情報及び接続情報に基づき、制御情報を出力し、
選択手段は、該制御情報に従い、中間データ記憶手段又は他の実行計算手段を選択すること、
を特徴とする請求項１に記載のプロセッサ。
【請求項３】
実行計算手段は、中間データを入出力させるポートの選択が可能であり、
制御手段は、各ステージにおいて、実行する演算情報及び接続情報に基づき、中間データを入出力させるポートの選択を行うこと、
を特徴とする請求項１又は２に記載のプロセッサ。
【請求項４】
所定の実行計算部を１つ以上有しているプロセッサ用の実行可能プログラムを出力するコンパイラ装置であって、
ソースプログラムを解析し、必要となる実行計算部の数と、各実行計算部での処理内容と、各実行計算部間での中間データの入出力のための接続関係を決定する最適化手段と、
各実行計算部での処理内容をコード化した実行計算部ごとの演算情報と、各実行計算部間での中間データの入出力関係を、実行計算部で実行されている演算情報での入出力関係として記述した接続情報とを含む実行可能プログラムを生成するコード生成手段と、
を有することを特徴とするコンパイラ装置。
【請求項５】
所定の実行計算部を１つ以上有しているプロセッサ用の実行可能プログラムを出力するコンパイラ装置としてコンピュータを機能させるプログラムであって、
コンピュータに、
ソースプログラムを解析し、必要となる実行計算部の数と、各実行計算部での処理内容と、各実行計算部間での中間データの入出力のための接続関係を決定するステップと、
各実行計算部での処理内容をコード化した実行計算部ごとの演算情報と、各実行計算部間での中間データの入出力関係を、実行計算部で実行されている演算情報での入出力関係として記述した接続情報とを含む実行可能プログラムを生成するステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの実行を行う実行計算部を１つ以上備え、実行計算部の数に係らず同一プログラムを利用することができるプロセッサと、該プロセッサ用の実行可能プログラムを生成するコンパイラ装置に関する。
【背景技術】
【０００２】
処理速度の向上を目的とし、プログラムの実行を行う実行計算部を複数備えたプロセッサが各種提案され、実用化されている（例えば、非特許文献１参照。）。非特許文献１によると、オペレーティングシステムが、実行可能プログラムをプロセスや、スレッドに分解して複数ある実行計算部に処理を割り当てることで、１つの実行可能プログラムを複数の実行計算部で並行して処理させることを可能としている。
【０００３】
また、非特許文献２には、マトリックス状に配置された演算器の、各演算器での処理内容及び演算器間の接続をプログラミングにより設定することでデータ処理を実行するプロセッサについて記載がされている。これらプロセッサに対する実行可能プログラムの作成には、実装されている演算器数を考慮する必要がある。即ち、ある数の演算器を実装しているプロセッサをターゲットとして作成された実行可能プログラムと同一の処理を、例えば、ターゲットのプロセッサより演算器数の少ないプロセッサで実行するためには、再度、演算器数を考慮したうえでプログラムの修正を行う必要がある。
【０００４】
【非特許文献１】中森章、“マイクロプロセッサ・アーキテクチャ入門”、ＣＱ出版社、２００４年４１日発行、ｐ．２３１‐ｐ．２３３
【非特許文献２】デザインウェーブマガジン、ＣＱ出版社、２００４年８月号、ｐ．２４‐ｐ．２９
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従って、本発明は、プログラムの実行を行う実行計算部の搭載数によらず、オペレーティングシステムなしに、同一実行可能プログラムの使用が可能なプロセッサを提供することを目的とする。また、該プロセッサ用のコンパイラ装置及びプログラムを提供することも目的とする。
【課題を解決するための手段】
【０００６】
本発明におけるプロセッサによれば、
入力及び出力のためのポートを１つ以上有する、１つ以上の実行計算手段を備え、それぞれが１つの実行計算手段での処理内容を規定する複数の演算情報と、演算情報間での中間データの入出力関係を規定する接続情報とを含む実行可能プログラムを、１回以上のステージに分割して実行するプロセッサであって、中間データ記憶手段と、各実行計算手段について、各ポートが接続可能な中間データ記憶手段及び／又は他の実行計算手段についての情報である結線情報を保持する制御手段とを有し、制御手段は、各ステージにおいて、実行計算手段の数、結線情報及び接続情報に基づき、該ステージにおいて実行する演算情報を決定し、演算情報を実行する実行計算手段は、該ステージにおいて実行されない演算情報との間で入出力する中間データを、中間データ記憶手段との間で入出力することを特徴とする。
【０００７】
本発明のプロセッサにおける他の実施形態によれば、
実行計算手段は、各ポートに対応して設けられ、接続している中間データ記憶手段及び／又は他の実行計算手段から、１つの中間データ記憶手段又は他の実行計算手段を選択して対応するポートに接続する選択手段を備え、制御手段は、各ステージにおいて、実行する演算情報及び接続情報に基づき、制御情報を出力し、選択手段は、該制御情報に従い、中間データ記憶手段又は他の実行計算手段を選択することも好ましい。
【０００８】
また、本発明のプロセッサにおける他の実施形態によれば、
実行計算手段は、中間データを入出力させるポートの選択が可能であり、制御手段は、各ステージにおいて、実行する演算情報及び接続情報に基づき、中間データを入出力させるポートの選択を行うことも好ましい。
【０００９】
本発明におけるコンパイラ装置によれば、
所定の実行計算部を１つ以上有しているプロセッサ用の実行可能プログラムを出力するコンパイラ装置であって、ソースプログラムを解析し、必要となる実行計算部の数と、各実行計算部での処理内容と、各実行計算部間での中間データの入出力のための接続関係を決定する最適化手段と、各実行計算部での処理内容をコード化した実行計算部ごとの演算情報と、各実行計算部間での中間データの入出力関係を、実行計算部で実行されている演算情報での入出力関係として記述した接続情報とを含む実行可能プログラムを生成するコード生成手段とを有することを特徴とする。
【００１０】
本発明におけるプログラムによれば、
コンピュータを、上記コンパイラ装置として機能させることを特徴とする。
【発明の効果】
【００１１】
実行可能プログラムは、それぞれが１つの実行計算部で実行する処理内容を規定する演算情報と、演算情報間での中間データの入出力関係を規定する接続情報を有し、制御手段が、自プロセッサが搭載している実行計算手段の数、実行計算手段間及び実行計算手段と中間データ記憶手段間の結線情報並びに接続情報に基づき、各ステージで実行する演算情報を決定し、各ステージで実行されない演算情報との中間データを中間データ記憶手段に保存及び／又は中間データ記憶手段から取得させることで、搭載している実行計算部手段の数によらず同一の実行可能プログラムを使用することが可能となる。
【００１２】
実行計算手段は、ポートごとに選択手段を有し、接続先となる実行計算手段又は中間データ記憶手段の切替えを行う。また、実行計算手段に、中間データを入出力させる入出力ポートの選択機能を持たせることで、実行する演算情報の選択の制限が緩和される。
【発明を実施するための最良の形態】
【００１３】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。
【００１４】
図１は、本発明によるプロセッサのブロック図である。図１によると、プロセッサは、１つ以上の実行計算部１と、中間データ記憶部２と、制御部３とを備えている。実行計算部１は、他の実行計算部１及び／又は中間データ記憶部２とライン５により接続されている。尚、実行計算部１間の接続は、例示であり図１の構成に限定されるものではない。また、制御部３は、図示しないバスにより実行計算部１及び中間データ記憶部２と接続しており、プロセッサ外部にある図示しない主記憶装置が保存する実行可能プログラムの、実行計算部１へのロードを制御する機能を有する。
【００１５】
図２は、実行計算部１のブロック図である。図２によると、実行計算部１は、演算部１００と、１つ以上の入力側マルチプレクサ１０１と、１つ以上の出力側マルチプレクサ１０２と、入出力制御部１０３とを備えている。
【００１６】
演算部１００は、例えば、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）コア、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）コア又は所定数のマトリックス状に配列された演算器からなり、１つ以上の入力ポート及び出力ポートを備え、図４に示す実行可能プログラム６の演算情報６０２がロードされ、演算情報６０２に従った処理を実行する機能を有する。尚、図１に示すプロセッサ内に設けられる複数の実行計算部１は、総て同一の演算部１００を有する。また、演算部１００の入力ポート及び出力ポートを、実行計算部１の入力ポート及び出力ポートとも呼ぶ。
【００１７】
入力側マルチプレクサ１０１は、演算部１００の入力ポートごとに設けられ、入出力制御部１０３からの選択信号１０４に基づき、他の実行計算部１の出力側マルチプレクサ１０２及び／又は中間データ記憶部２と接続されている複数のライン５から１つのライン５を選択して演算部１００の対応する入力ポートに接続する機能を有する。
【００１８】
出力側マルチプレクサ１０２は、演算部１００の出力ポートごとに設けられ、入出力制御部１０３からの選択信号１０４に基づき、他の実行計算部１の入力側マルチプレクサ１０１及び／又は中間データ記憶部２と接続されている複数のライン５から１つのライン５を選択して演算部１００の対応する出力ポートに接続する機能を有する。
【００１９】
入出力制御部１０３は、制御部３からの制御情報に基づき、各入力側マルチプレクサ１０１及び出力側マルチプレクサ１０２に対し、選択するライン５を決定する選択信号１０４を出力する。
【００２０】
図１に戻り、中間データ記憶部２は、制御部３からの制御情報に基づき、実行計算部１が出力する中間データを一時的に記憶し、また、一時的に記憶した中間データを実行計算部１に出力する機能を有する。
【００２１】
制御部３は、結線情報、即ち、それぞれの実行計算部１について、各入力及び／又は出力ポートが接続可能な中間データ記憶部２及び／又は実行計算部１の情報を有し、図４に示す実行可能プログラム６を、図示しない主記憶装置から読み込み、実行計算部１の数と、結線情報と、実行可能プログラム６の接続情報６０１に基づき、１回以上のステージに分割して処理するように実行計算部１及び中間データ記憶部２を制御する。制御部３についてのより詳細な説明は後述する。
【００２２】
図３は、本発明によるプロセッサの構成例を示す図であり、簡単のため制御部３は省略している。図３（ａ）では、４つの実行計算部１０〜１３が設けられており、実行計算部１０〜１３は、他の総ての実行計算部及び中間データ記憶部２と双方向で接続している。また、図３（ｂ）では、２つの実行計算部１０及び１１が設けられており、実行計算部１０及び１１は、中間データ記憶部２とは双方向に、実行計算部１０と１１間は、実行計算部１０から実行計算部１１方向のみで接続している。更に、図３（ｃ）においては、実行計算部１０が１つのみ設けられており、中間データ記憶部２と双方向で接続している。尚、実行計算部１０〜１３及び図１の実行計算部１は、同じものであり、ライン５は１つ以上のラインをまとめて表したものである。
【００２３】
図４は、本発明によるコンパイラ装置が出力する実行可能プログラム６の構造を示す図である。本発明によるコンパイラ装置は、ソースプログラムを解析して実行計算部１の実行可能プログラム６を出力する。このとき、コンパイラ装置は、実際に出力した実行可能プログラム６を実行するプロセッサが搭載している実行計算部１の数に係らず、必要な実行計算部１の数を算出して、前記算出した数に基づき実行可能プログラム６を生成する。
【００２４】
図４（ａ）によると、本発明によるプロセッサが実行する実行可能プログラム６は、複数の実行計算情報６０からなる。各実行計算情報６０の演算情報６０２は、実行計算部１にロードされて実行される命令であり、接続情報６０１は同一実行計算情報６０内にある演算情報６０２の、他の実行計算部６０の演算情報６０２との中間データの入出力関係を規定する情報である。即ち、演算情報６０２が実行計算部１にロードされて実行されたときに、その実行計算部１が中間データを入出力するポート番号と、相手側となる実行計算部１で実行されている演算情報と、相手側となる実行計算部１が中間データを入出力するポート番号の情報である。
【００２５】
また、図４（ｂ）は、本発明によるコンパイラ装置が出力する実行可能プログラム６の他の構造を示す図である。図４（ａ）は、接続情報６０１が、演算情報６０２ごとに設けられるのに対し、図４（ｂ）に示す構造では、全体の接続情報６０１として１つのみ設けられている点で相違する。
【００２６】
図５は、実行可能プログラム６をより具体的に説明する図である。図５（ａ）は、本発明によるコンパイラ装置が想定した処理形態を示す図であり、四角の枠は、実行計算部１が実行する演算情報を示している。図５（ａ）によると、コンパイラ装置は、ソースプログラムの解析を行い、２つの実行計算部を用い、一方の実行計算部の出力ポート＃１と他方の実行計算部の入力ポート＃１を、一方の実行計算部の出力ポート＃２と他方の実行計算部の入力ポート＃２を接続して中間データの受渡しを行うことで、ソースプログラムに記述された処理を実行するものとしている。
【００２７】
図５（ｂ）は、図５（ａ）に示すコンパイラ装置が想定した処理形態に対応する実行可能プログラム６である。尚、ここでは実行可能プログラムを、図４（ａ）の構造で示している。図５（ｂ）に示す様に、実行可能プログラム６は、一方の実行計算部で実行する実行計算情報Ａと、他方の実行計算部で実行する実行計算情報Ｂとから構成されている。それぞれの実行計算情報に含まれる演算情報は実行計算部での処理内容を規定し、実行計算部Ａの接続情報は、演算情報Ａを実行する実行計算部１の出力ポート＃１及び＃２を、それぞれ、演算情報Ｂを実行する実行計算部の入力ポート＃１及び＃２とライン５により接続して、中間データの受渡しをすることを、即ち、演算情報間での中間データの入出力関係を規定している。
【００２８】
続いて、図５（ｂ）に示す実行可能プログラム６を、図３（ｂ）に示す、実行計算部１０及び１１を有するプロセッサで実行する場合の動作を説明する。ここで、実行計算部１０の入力ポート＃１〜４に対応する入力側マルチプレクサ１０１は、中間データ記憶部２とのみ接続しており、実行計算部１０の出力ポート＃ｋ（ｋ＝１、２、３、４）に対応する出力側マルチプレクサ１０２は、中間データ記憶部２及び実行計算部１１の入力ポート＃ｋに対応する入力側マルチプレクサ１０１と接続しており、実行計算部１１の入力ポート＃ｋ（ｋ＝１、２、３、４）に対応する入力側マルチプレクサ１０１は、中間データ記憶部２及び実行計算部１０の出力ポート＃ｋ（ｋ＝１、２、３、４）に対応する出力側マルチプレクサ１０２と接続しており、実行計算部１１の出力ポート＃１〜４に対応する出力側マルチプレクサ１０２は、中間データ記憶部２とのみ接続しているものとする。従って、制御部３が保持している結線情報は、図９に示す通りとなる。また、上記接続は例示であり、各実行計算部の入力側と出力側のポート番号の接続は同一番号のみに限定されるものではない。
【００２９】
制御部３は、図５（ｂ）に示す実行可能プログラム６を図示しない主記憶装置から取得して解析を行い、実行可能プログラム６が、２つの実行計算部を必要としていることと、一方の実行計算部の出力ポート＃１と他方の実行計算部の入力ポート＃１との接続、及び、一方の実行計算部の出力ポート＃２と他方の実行計算部の入力ポート＃２との接続を必要としていることを認識する。制御部３は、図９に示す結線情報から、演算情報Ａを実行計算部１０で実行させ、演算情報Ｂを実行計算部１１で実行させ、実行計算部１０の出力ポート＃１及び出力ポート＃２に対応する出力側マルチプレクサ１０２に実行計算部１１を選択させ、実行計算部１１の入力ポート＃１及び入力ポート＃２に対応する入力側マルチプレクサ１０１に実行計算部１０を選択させることで、コンパイラ装置が想定した構成を実現できることを認識する。よって、制御部３は、演算情報Ａの実行計算部１０へのロード制御と、演算情報Ｂの実行計算部１１へのロード制御を行う。また、実行計算部１０及び実行計算部１１の各入出力制御部１０３が、上述したライン５を選択する選択信号１０４を出力するための制御情報を出力する。演算情報の実行計算部１０及び１１へのロード制御は、制御部３が図示しない主記憶装置から取得して実行計算部１０及び１１にロードする形態であっても、制御部３が実行計算部１０及び１１に、ロードすべき演算情報が保存されている図示しない主記憶装置のアドレスを通知し、各実行計算部１０及び１１が、制御部３からの通知に基づき、図示しない主記憶装置から、演算情報を直接取得する構成であってもよい。
【００３０】
これにより、図３（ｂ）に示す実行計算部１０及び１１を有するプロセッサは、実行可能プログラム６を１回のステージで実行する。
【００３１】
続いて、図５（ｂ）に示す実行可能プログラム６を、図３（ｃ）に示す実行計算部１０のみを有するプロセッサで実行する場合の動作について図６を用いて説明する。尚、制御部３が保持している結線情報は、図９の実行計算部１０の結線情報において、実行計算部１１を除いたものとする。尚、図３（ｃ）に示す様に、実行計算部１０が１つのみの場合や、実行計算部が複数あっても実行計算部１間での配線を行わない場合には、入力側マルチプレクサ１０１及び出力側マルチプレクサ１０２を省略可能である。
【００３２】
制御部３は、図５（ｂ）に示す実行可能プログラム６を図示しない主記憶装置から取得して解析を行い、実行可能プログラム６が、２つの実行計算部を必要としていることと、一方の実行計算部の出力ポート＃１と他方の実行計算部の入力ポート＃１との接続、及び、一方の実行計算部の出力ポート＃２と他方の実行計算部の入力ポート＃２との接続を必要としていることを認識する。制御部３は、プロセッサ上には１つの実行計算部１０のみしかないことも認識しているため、接続情報を解析し、他から中間データの入力がない演算情報Ａを、第１のステージで実行する演算情報とし、演算情報Ａの実行計算部１０へのロード制御を行う。また、制御部３は、演算情報Ａの中間データの出力先である演算情報Ｂが同時に実行されないことから、演算情報Ｂが必要とする中間データを中間データ記憶部２に保存させるための制御情報を、実行計算部１０及び中間データ記憶部２に出力する。実行計算部１０に対する制御情報は、中間データを出力する実行計算部１０の出力ポート＃１及び出力ポート＃２に対応する出力側マルチプレクサ１０２に、中間データ記憶部２を選択させるための情報を含んでいる。また、中間データ記憶部２に対する制御情報は、中間データ記憶部２に、実行計算部１０の出力ポート＃１及び＃２から出力される中間データを保存させるための情報が含まれている。
【００３３】
図６（ａ）は、第１のステージにおける、実行計算部１０の接続状態であり、符号９０は、実行計算部１０で演算情報Ａを実行しているときには実在しない、演算情報Ｂを実行する実行計算部を表している。図６（ａ）に示す接続状態において、実行計算部１０の演算部１００は、演算情報Ａを実行し、中間データを中間データ記憶部２に出力する。
【００３４】
第１のステージの終了後、制御部３は、残りの演算情報Ｂを第２のステージで実行する演算情報とし、演算情報Ｂの実行計算部１０へのロード制御を行う。同時に、制御部３は、演算情報Ｂを実行する実行計算部１０への中間データを、第１のステージで保存した中間データ記憶部２から出力させるために、結線情報に従い、実行計算部１０の入力ポート＃１及び＃２に対応する入力側マルチプレクサ１０１に中間データ記憶部２を選択させ、演算部１００が中間データを入力ポート＃１及び＃２から入力するように、実行計算部１０に制御情報を出力する。また、中間データ記憶部２から、第１ステージで保存した中間データをそれぞれ実行計算部１０の入力ポート＃１及び＃２に出力させるための制御情報を、中間データ記憶部２に出力する。
【００３５】
図６（ｂ）は、第２のステージにおける、実行計算部１０の接続状態であり、符号９０は、実行計算部１０で演算情報Ｂを実行しているときには実在しない、演算情報Ａを実行する実行計算部を表している。図６（ｂ）に示す接続状態において、実行計算部１０の演算部１００は、中間データ記憶部２からの中間データを入力として、演算情報Ｂを実行する。これにより、図５（ａ）に示す実行可能プログラム６を、１つの実行計算部１０のみで実行する。
【００３６】
図７は、実行可能プログラム６の他の例を説明する図である。図７（ａ）は、本発明によるコンパイラ装置が想定した処理形態を示す図であり、四角の枠は実行計算部が実行する演算情報を示している。図７（ａ）によると、コンパイラ装置は、ソースプログラムの解析を行い、５つの実行計算部を用いることにより、ソースプログラムに記述された処理を実現するものとしている。
【００３７】
図７（ｂ）は、図７（ａ）に示すコンパイラ装置が想定した処理形態に対応する実行可能プログラム６である。尚、ここでは実行可能プログラムを、図４（ｂ）の構造で示している。図７（ｂ）に示す様に、実行可能プログラム６は、それぞれが１つの実行計算部１で実行される演算情報Ａ、Ｂ、Ｃ、Ｄ及びＥと、各演算情報間での中間データの入出力関係を示す接続情報とを有している。
【００３８】
続いて、図７（ｂ）に示す実行可能プログラム６を、図３（ｂ）に示す実行計算部１０及び１１を有するプロセッサで実行する場合の動作について図８を用いて説明する。尚、制御部３が保持している結線情報は、図９に示す通りとする。
【００３９】
制御部３は、図７（ｂ）に示す実行可能プログラム６を図示しない主記憶装置から取得して解析を行い、実行可能プログラム６が、５つの実行計算部を必要としていることを認識する。制御部３は、プロセッサ上には２つの実行計算部１０及び１１のみしかないことも認識しているため、接続情報を解析し、第１のステージにおいて、他の演算情報からの中間データを必要としない演算情報Ａを実行することを決定し、実行先として実行計算部１０を割り当てる。続いて、接続情報から、実行することを決定した演算情報Ａを除いたときに、他の演算情報からの中間データを必要としない演算情報Ｂ及び演算情報Ｃを第１のステージで実行する演算情報の候補とする。続いて、候補とした演算情報のどちらか一方、ここでは、演算情報Ｂを実行計算部１１で実行するとした場合に、接続情報の、該ステージで実行する演算情報を実行先の実行計算部と置き、該ステージで実行されない演算情報を中間データ記憶部２と置き換えた構成を実現できるか否かを判定する。ここでは、実現可能であるため、演算情報Ｂを実行計算部１１で実行することを決定する。これにより実行する演算情報の数が、搭載している実行計算部の数と等しくなるため、第１のステージでの処理の実行に移る。尚、実現不可能である場合には、他の候補について同様に判定する。
【００４０】
処理の実行のため、制御部３は、演算情報Ａの実行計算部１０へのロード制御と、演算情報Ｂの実行計算部１１へのロード制御を行う共に、実行計算部１０の出力ポート＃１及び＃２に対応する出力側マルチプレクサ１０２に、実行計算部１１を選択させ、出力ポート＃３及び＃４に対応する出力側マルチプレクサ１０２に、中間データ記憶部２を選択させるように、実行計算部１０に制御情報を出力し、実行計算部１１の入力ポート＃１及び＃２に対応する入力側マルチプレクサ１０１に、実行計算部１０を選択させ、出力ポート＃１に対応する出力側マルチプレクサ１０２に中間データ記憶部２を選択させるように、実行計算部１１に制御情報を出力する。また、中間データ記憶部２に対しても中間データを受信し、保存するように制御情報を出力する。結果、プロセッサは、図８（ａ）に示す状態となる。
【００４１】
図８（ａ）に示す接続状態において、実行計算部１０の演算部１００は、演算情報Ａを実行する。実行計算部１０から出力される中間データのうち、出力ポート＃１及び＃２から出力される中間データは、実行計算部１１に入力され、出力ポート＃３及び＃４から出力される中間データは、中間データ記憶部２に保存される。実行計算部１１の演算部１００は、実行計算部１０からの中間データを入力とし、演算情報Ｂを実行し、実行計算部１１から出力される中間データは、中間データ記憶部２に保存される。
【００４２】
続いて、制御部３は、既に実行した演算情報Ａ及びＢを除いたときに、他の演算情報からの中間データを必要としない演算情報Ｃをまず第２のステージで実行する演算情報と決定し、実行先として実行計算部１０を割り当てる。続いて、実行することを決定した演算情報Ｃ並びに既に実行した演算情報Ａ及びＢを除いたときに、他の演算情報からの中間データを必要としない演算情報Ｄ及び演算情報Ｅを第２のステージで実行する演算情報の候補とする。続いて、候補とした演算情報のどちらか一方、ここでは、演算情報Ｅを実行計算部１１で実行するとした場合に、接続情報の、該ステージで実行する演算情報を実行先の実行計算部と置き、該ステージで実行されない演算情報を中間データ記憶部２と置き換えた構成を実現できるか否かを判定する。ここでは、実現可能であるため、演算情報Ｅを実行計算部１１で実行することを決定する。これにより実行する演算情報の数が、搭載している実行計算部の数と等しくなるため、第２のステージでの処理の実行に移る。
【００４３】
尚、制御部３は、一般的には、候補となる演算情報がなくなるまで、又は、実行する演算情報の数が実行計算手段の数と等しくなるまで上記処理を繰り返して各ステージで実行する演算情報を決定する。
【００４４】
処理の実行のため、制御部３は、演算情報Ｃの実行計算部１０へのロード制御と、演算情報Ｅの実行計算部１１へのロード制御を行うと共に、接続情報に基づき、実行計算部１０の入力ポート＃４に対応する入力側マルチプレクサ１０１に中間データ記憶部２を選択させ、出力ポート＃２に対応する出力側マルチプレクサ１０２に中間データ記憶部２を選択させ、出力ポート＃３及び＃４に対応する出力側マルチプレクサ１０２に実行計算部１１を選択させるように実行計算部１０に制御情報を出力し、実行計算部１１の入力ポート＃３及び＃４に対応する入力側マルチプレクサ１０１に実行計算部１０を選択させるように、実行計算部１１の入出力制御部１０３に制御情報を出力する。また、中間データ記憶部２に対しても、前のステージで演算情報Ａを実行した実行計算部１０の出力ポート＃４から受信した中間データを、該ステージにおいて演算情報Ｃを実行している実行計算部１０の入力ポート＃４に出力し、当該ステージで新たに受信する中間データを保存するように制御情報を出力する。結果、プロセッサは、図８（ｂ）に示す状態となる。
【００４５】
図８（ｂ）に示す接続状態において、実行計算部１０の演算部１００は、中間データ記憶部２からの中間データを入力として、演算情報Ｃを実行する。実行計算部１０から出力される中間データのうち、出力ポート＃２から出力される中間データは、中間データ記憶部２に保存され、出力ポート＃３及び＃４から出力される中間データは、実行計算部１１に入力される。実行計算部１１の演算部１００は、実行計算部１０からの中間データを入力とし、演算情報Ｅを実行する。
【００４６】
最後に、制御部３は、残りの演算情報Ｄを第３のステージで実行する演算情報と決定し、実行計算部１０へのロード制御を行う。
【００４７】
同時に、制御部３は、既に中間データ記憶部２に保存されている実行計算部１０への中間データを、実行計算部１０に入力させるために実行計算部１０に対して制御情報を出力する。この制御情報に基づき、実行計算部１０の入出力制御部１０３は、入力ポート＃１、＃２及び＃３に対応する入力側マルチプレクサ１０１に中間データ記憶部２を選択させるための選択信号１０４を出力する。また、中間データ記憶部２に対しても、第１のステージで演算情報Ａを実行した実行計算部１０の出力ポート＃３から受信した中間データを、実行計算部１０の入力ポート＃３に出力し、第１のステージで演算情報Ｂを実行した実行計算部１１の出力ポート＃１から受信した中間データを、実行計算部１０の入力ポート＃１に出力し、第２のステージで演算情報Ｃ実行した実行計算部１０の出力ポート＃２から受信した中間データを、実行計算部１０の入力ポート＃２に出力するように制御情報を出力する。結果、プロセッサは、図８（ｃ）に示す状態となる。
【００４８】
図８（ｃ）に示す接続状態において、実行計算部１０の演算部１００は、中間データ記憶部２からの中間データを入力として、演算情報Ｄを実行する。これにより、図７（ａ）に示す実行可能プログラム６を、２つの実行計算部１０及び１１で実行する。
【００４９】
以上説明したように、実行可能プログラム６は、それぞれが１つの実行計算部１で実行する処理内容を規定する演算情報６０２と、演算情報６０２間での中間データの入出力関係を規定する接続情報６０１を有し、プロセッサの制御部３が、自プロセッサが搭載している実行計算部１の数、結線情報及び接続情報６０１に基づき、実行可能プログラム６を複数回のステージに分割して実行することで、搭載している実行計算部１の数によらず同一の実行可能プログラム６を使用することが可能となる。
【００５０】
これにより、対象機器に応じて制限される実装面積やコスト等により搭載する実行計算部１の数が異なるプロセッサ間においても、同一ソウフトウェアの利用が可能となる。
【００５１】
上記説明においては、演算情報６０２を実行する実行計算部１の、中間データを入出力するポートが固定であるものとしていた。つまり、接続情報で示されるポート番号は、対応する演算情報を実行する実行計算部のポート番号としていた。しかしながら、例えば、演算部１００内で、中間データを入力する入力ポート及び出力する出力ポートを選択可能とし、又は、演算情報６０２内のある領域を書き換えることで、中間データを入出力するポート番号を設定可能とし、制御部３が結線情報に基づき中間データを入出力するポート番号を変更することで、各ステージで実行する演算情報の選択の自由度が増し、実行計算部１間に設定するライン５の数を減らすことができる。この場合、接続情報では、演算情報間の論理的なポート番号での接続関係が定義され、制御部３は、結線情報と、実行する演算情報とに基づき、論理的なポート番号を、実際に中間データを入出力させる実行計算部１のポート番号に対応させて、対応させた入力ポート及び出力ポートから中間データを入出力するように各実行計算部１に対して制御情報を出力する。
【００５２】
また、上記説明においては、他の演算情報６０２から中間データの入力を必要としない演算情報から実行するものとして説明を行ってきた。しかしながら、処理内容においては、全体的又は部分的にループを必要とする状態も考えられる。ここでループとは、実行計算部１をノードとして、中間データの入出力関係を、中間データを出力する実行計算部１から入力する実行計算部１への矢印で表したときに、ある実行計算部１から矢印の方向に順にたどって、同じ実行計算部１に戻るルートがある状態をいう。
【００５３】
ループがある場合は、実行可能プログラム６に最初に実行する１つ以上の演算情報を指定する情報を含め、制御部３が、その情報に基づき演算情報の実行順序を決定することで対処可能である。最初に実行する演算情報以降は、実行した演算情報の中間データ出力先の演算情報を順に実行していくことになる。
【００５４】
最後に、本発明によるコンパイラ装置について説明する。図１０は、本発明によるコンパイラ装置のブロック図である。図１０によるとコンパイラ装置は、構文解析部８１と、最適化部８２と、コード生成部８３とを有する。コンパイラ装置は、対象とする実行計算部１の種別、即ち、ＲＩＳＣコア、ＶＬＩＷコア又は所定数のマトリックス状に配列された演算器といった演算部１００を構成するハードウェアの種別についての情報を有し、ソースプログラム７を入力として、対象とする実行計算部１を１つ以上搭載するプロセッサが実行する実行可能プログラム６を出力する。
【００５５】
構文解析部８１は、ソースプログラム７の字句解析及び構文解析を行い、最適化部８２は、意味解析を行ない、対象とする実行計算部１の種別に基づき最適化を行う。この中で、コンパイラ装置は、必要となる実行計算部１の数と、各実行計算部１で実行させる処理内容と、各実行計算部１間での中間データの入出力のための接続関係を決定する。最後に、コード生成部８３は、各実行計算部１で実行する処理内容を演算情報としてコード生成し、実行計算部１間での中間データの入出力のための接続関係を、実行計算部１で実行されている演算情報の接続関係として記述した接続情報を生成し、実行可能プログラム６を出力する。
【００５６】
尚、各実行計算部１間での中間データの入出力のための接続関係が、ループ状態となる場合には、最適化部８２は、最初に実行する１つ以上の演算情報を決定し、コード生成部８３は、最初に実行する１つ以上の演算情報を特定する情報を含む実行可能プログラムを出力する。
【００５７】
尚、本発明によるコンパイラ装置は、コンピュータに上記機能を実行させるプログラムによっても実現できる。
【図面の簡単な説明】
【００５８】
【図１】本発明によるプロセッサのブロック図である。
【図２】実行計算部のブロック図である。
【図３】本発明によるプロセッサの構成例を示す図である。
【図４】本発明によるコンパイラ装置が出力する実行可能プログラムの構造を示す図である。
【図５】実行可能プログラムをより具体的に説明する図である。
【図６】図５に示す実行可能プログラムの実行方法を説明する図である。
【図７】実行可能プログラムの他の例を説明する図である。
【図８】図７に示す実行可能プログラムの実行方法を説明する図である。
【図９】結線情報を示す図である。
【図１０】本発明によるコンパイラ装置のブロック図である。
【符号の説明】
【００５９】
１、１０、１１，１２、１３  実行計算部
２  中間データ記憶部
３  制御部
５  ライン
６  実行可能プログラム
７  ソースプログラム
６０  実行計算情報
８１  構文解析部
８２  最適化部
８３  コード生成部
９０  ダミー実行計算部
１００  演算部
１０１  入力側マルチプレクサ
１０２  出力側マルチプレクサ
１０３  入出力制御部
１０４  選択信号
６０１  接続情報
６０２  演算情報
【図１】
2007087264.tif 000003
【図２】
2007087264.tif 000004
【図３】
2007087264.tif 000005
【図４】
2007087264.tif 000006
【図５】
2007087264.tif 000007
【図６】
2007087264.tif 000008
【図７】
2007087264.tif 000009
【図８】
2007087264.tif 000010
【図９】
2007087264.tif 000011
【図１０】
2007087264.tif 000012