(57)【要約】【課題】複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを、より効率的な配列で作成すること。【解決手段】複数の命令実行手段から前記複数のメモリへのアクセスに関するレイテンシ情報を記憶したレイテンシ情報記憶手段と、オブジェクトプログラム生成手段により生成されたオブジェクトプログラムに含まれる複数のメモリアクセス命令のそれぞれについて、レイテンシ情報を参照してレイテンシを付与するレイテンシ付与手段と、付与されたレイテンシに基づいてオブジェクトプログラムに含まれる複数の命令を並べ替える並べ替え手段と、を備え、レイテンシ情報記憶手段に記憶されているレイテンシ情報は、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定していることを特徴とする、オブジェクトプログラム作成装置。【選択図】図３
2011145899.tif 000002
【特許請求の範囲】
【請求項１】
入力されたソースプログラムに基づいて、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを作成するオブジェクトプログラム作成装置であって、
前記ソースプログラムをコンパイル処理して複数の命令を含むオブジェクトプログラムを生成するオブジェクトプログラム生成手段と、
前記複数の命令実行手段から前記複数のメモリへのアクセスに関するレイテンシ情報を記憶したレイテンシ情報記憶手段と、
前記オブジェクトプログラム生成手段により生成されたオブジェクトプログラムに含まれる複数の命令のそれぞれについて、当該命令が前記複数の命令実行手段から前記複数のメモリへのメモリアクセス命令である場合に、前記レイテンシ情報記憶手段に記憶されたレイテンシ情報を参照してレイテンシを付与するレイテンシ付与手段と、
該レイテンシ付与手段によって付与されたレイテンシに基づいて前記オブジェクトプログラムに含まれる複数の命令を並べ替える並べ替え手段と、を備え、
前記レイテンシ情報記憶手段に記憶されているレイテンシ情報は、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定していることを特徴とする、
オブジェクトプログラム作成装置。
【請求項２】
入力されたソースプログラムに基づいて、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを作成するオブジェクトプログラム作成装置であって、
前記ソースプログラムをコンパイル処理して複数の命令を含むオブジェクトプログラムを生成するオブジェクトプログラム生成手段と、
前記複数の命令実行手段から前記複数のメモリへのアクセスに関するレイテンシ情報を取得するレイテンシ情報取得手段と、
前記オブジェクトプログラム生成手段により生成されたオブジェクトプログラムに含まれる複数の命令のそれぞれについて、当該命令が前記複数の命令実行手段から前記複数のメモリへのメモリアクセス命令である場合に、前記レイテンシ情報取得手段により取得されたレイテンシ情報を参照してレイテンシを付与するレイテンシ付与手段と、
該レイテンシ付与手段によって付与されたレイテンシに基づいて前記オブジェクトプログラムに含まれる複数の命令を並べ替える並べ替え手段と、を備え、
前記レイテンシ情報記憶手段に記憶されているレイテンシ情報は、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定していることを特徴とする、
オブジェクトプログラム作成装置。
【請求項３】
入力されたソースプログラムに基づいて、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを作成するオブジェクトプログラム作成方法であって、
前記ソースプログラムをコンパイル処理して複数の命令を含むオブジェクトプログラムを生成するオブジェクトプログラム生成ステップと、
前記複数の命令実行手段から前記複数のメモリへのアクセスに関するレイテンシ情報を取得するレイテンシ情報取得ステップと、
該オブジェクトプログラム生成ステップにおいて生成されたオブジェクトプログラムに含まれる複数の命令のそれぞれについて、前記複数の命令実行手段から前記複数のメモリへのメモリアクセス命令であるか否かを判定するメモリアクセス判定ステップと、
該メモリアクセス判定ステップにおいて前記メモリアクセス命令であると判定された命令について、前記レイテンシ情報取得ステップにおいて取得されたレイテンシ情報を参照してレイテンシを付与するレイテンシ付与ステップと、
該レイテンシ付与ステップにおいて付与されたレイテンシに基づいて前記オブジェクトプログラムに含まれる複数の命令を並べ替える並べ替えステップと、を備え、
前記レイテンシ情報取得ステップにおいて取得されるレイテンシ情報は、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定していることを特徴とする、
オブジェクトプログラム作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されたソースプログラムに基づいてオブジェクトプログラムを作成するオブジェクトプログラム作成装置、及びオブジェクトプログラム作成方法に関し、特に、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを作成するオブジェクトプログラム作成装置、及びオブジェクトプログラム作成方法に関する。
【背景技術】
【０００２】
従来、コンピュータ装置において使用されるオブジェクトプログラムは、ソースプログラムをコンパイルして作成される。オブジェクトプログラムは機械語によって作成されるが、ソースプログラムはプログラマーが容易に編集可能な高級言語によって作成されることが多い。
【０００３】
また、近年、マルチプロセッサ処理装置やマルチコア・プロセッサのように、命令実行手段を複数個備える情報処理装置が普及している。これに伴い、上記のようなコンパイル作業において、オブジェクトプログラムを最適に並べ替える必要性が高まっている。オブジェクトプログラムは必要クロック数の異なる複数の命令を含んでおり、複数の命令実行手段がこれらをどのような順序・組み合わせで実行するかによって、処理効率が異なるものとなるからである。
【０００４】
これに関連したデータ処理方法についての発明が開示されている（例えば、特許文献１参照）。この方法では、複数の命令の依存関係と記述内容に基づいて、親命令が使用中の資源を子命令が使用可能となるまでのクロック数の累計値であるパスレイテンシを個々に設定し、特定の命令に割り当てられた資源（メモリ）の識別データ、及びその資源を使用したときの速度データに基づいてパスレイテンシを補正し、補正されたパスレイテンシを用いて命令の順番を決定している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−２３７９８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１に記載の方法では、命令実行手段が高速メモリにアクセスするか、低速メモリにアクセスするかによってパスレイテンシを補正しているのみであるため、命令実行手段を複数個備えるコンピュータ装置により実行されるオブジェクトプログラムを適切に作成することができない場合がある。このような情報処理装置では、同じメモリにアクセスする場合であっても、命令実行手段が異なればレイテンシが異なる場合があるからである。
【０００７】
本発明はこのような課題を解決するためのものであり、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを、より効率的な配列で作成することが可能なオブジェクトプログラム作成装置、及びオブジェクトプログラム作成方法を提供することを、主たる目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するための本発明の第１の態様は、
入力されたソースプログラムに基づいて、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを作成するオブジェクトプログラム作成装置であって、
前記ソースプログラムをコンパイル処理して複数の命令を含むオブジェクトプログラムを生成するオブジェクトプログラム生成手段と、
前記複数のプロセッサから前記複数のメモリへのアクセスに関するレイテンシ情報を記憶したレイテンシ情報記憶手段と、
前記オブジェクトプログラム生成手段により生成されたオブジェクトプログラムに含まれる複数の命令のそれぞれについて、当該命令が前記複数の命令実行手段から前記複数のメモリへのメモリアクセス命令である場合に、前記レイテンシ情報記憶手段に記憶されたレイテンシ情報を参照してレイテンシを付与するレイテンシ付与手段と、
該レイテンシ付与手段によって付与されたレイテンシに基づいて前記オブジェクトプログラムに含まれる複数の命令を並べ替える並べ替え手段と、を備え、
前記レイテンシ情報記憶手段に記憶されているレイテンシ情報は、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定していることを特徴とする、
オブジェクトプログラム作成装置である。
【０００９】
この本発明の第１の態様によれば、レイテンシ情報記憶手段に記憶されているレイテンシ情報が、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定しているため、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを、より効率的な配列で作成することができる。
【００１０】
上記目的を達成するための本発明の第２の態様は、
入力されたソースプログラムに基づいて、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを作成するオブジェクトプログラム作成装置であって、
前記ソースプログラムをコンパイル処理して複数の命令を含むオブジェクトプログラムを生成するオブジェクトプログラム生成手段と、
前記複数のプロセッサから前記複数のメモリへのアクセスに関するレイテンシ情報を取得するレイテンシ情報取得手段と、
前記オブジェクトプログラム生成手段により生成されたオブジェクトプログラムに含まれる複数の命令のそれぞれについて、当該命令が前記複数の命令実行手段から前記複数のメモリへのメモリアクセス命令である場合に、前記レイテンシ情報取得手段により取得されたレイテンシ情報を参照してレイテンシを付与するレイテンシ付与手段と、
該レイテンシ付与手段によって付与されたレイテンシに基づいて前記オブジェクトプログラムに含まれる複数の命令を並べ替える並べ替え手段と、を備え、
前記レイテンシ情報記憶手段に記憶されているレイテンシ情報は、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定していることを特徴とする、
オブジェクトプログラム作成装置である。
【００１１】
この本発明の第２の態様によれば、レイテンシ情報取得手段により取得されるレイテンシ情報が、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定しているため、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを、より効率的な配列で作成することができる。
【００１２】
上記目的を達成するための本発明の第３の態様は、
コンピュータが、入力されたソースプログラムに基づいて、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを作成するオブジェクトプログラム作成方法であって、
前記ソースプログラムをコンパイル処理して複数の命令を含むオブジェクトプログラムを生成するオブジェクトプログラム生成ステップと、
前記複数のプロセッサから前記複数のメモリへのアクセスに関するレイテンシ情報を取得するレイテンシ情報取得ステップと、
該オブジェクトプログラム生成ステップにおいて生成されたオブジェクトプログラムに含まれる複数の命令のそれぞれについて、前記複数の命令実行手段から前記複数のメモリへのメモリアクセス命令であるか否かを判定するメモリアクセス判定ステップと、
該メモリアクセス判定ステップにおいて前記メモリアクセス命令であると判定された命令について、前記レイテンシ情報取得ステップにおいて取得されたレイテンシ情報を参照してレイテンシを付与するレイテンシ付与ステップと、
該レイテンシ付与ステップにおいて付与されたレイテンシに基づいて前記オブジェクトプログラムに含まれる複数の命令を並べ替える並べ替えステップと、を備え、
前記レイテンシ情報取得ステップにおいて取得されるレイテンシ情報は、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定していることを特徴とする、
オブジェクトプログラム作成方法である。
【００１３】
本発明の第３の態様によれば、レイテンシ情報取得ステップにおいて取得されるレイテンシ情報が、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定しているため、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを、より効率的な配列で作成することができる。
【発明の効果】
【００１４】
本発明によれば、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを、より効率的な配列で作成することが可能なオブジェクトプログラム作成装置、及びオブジェクトプログラム作成方法を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】マルチコア・プロセッサ１００のシステム構成例である。
【図２】本発明の一実施例に係るオブジェクトプログラム作成装置１のシステム構成例である。
【図３】レイテンシテーブル４０のデータ形式例である。
【図４】主にレイテンシ付与部１６及びスケジューラ部１７により実行される特徴的な処理の流れを示すフローチャートである。
【図５】ハザードが発生しないプログラムにおける、Ｃソースファイル、レイテンシ、及び出力コード（オブジェクトプログラム）を例示した図である。
【図６】ハザードが発生するプログラムにおける、Ｃソースファイル、レイテンシ、及び出力コードを例示した図である。
【図７】本発明の他の実施例に係るオブジェクトプログラム作成装置２のシステム構成例である。
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００１７】
以下、図面を参照し、本発明の一実施例に係るオブジェクトプログラム作成装置、及びオブジェクトプログラム作成方法について説明する。これらは、複数の命令実行手段と複数のメモリを有する情報処理装置（マルチプロセッサ処理装置やマルチコア・プロセッサ等）により実行されるオブジェクトプログラムを作成するための装置、及び方法である。
【００１８】
［情報処理装置］
まず、本実施例により作成されるオブジェクトプログラムを実行する情報処理装置について説明する。図１は、この情報処理装置の一例であるマルチコア・プロセッサ１００のシステム構成例である。
【００１９】
マルチコア・プロセッサ１００は、主要な構成として、コア＃１、＃２と、ＲＯＭ１１０と、コア＃１用周辺機器１２０と、コア＃１用ＲＡＭ１２２と、コア＃２用周辺機器１３０と、コア＃２用ＲＡＭ１３２と、バスアービタ１４０と、を備える。なお、係る構成はあくまで一例であって、本発明に係るオブジェクトプログラム作成装置、及び方法を何ら限定するものではない。
【００２０】
コア＃１、＃２は、命令デコーダ、レジスタ、演算回路、キャッシュメモリ等を有し、ＲＯＭ１１０に格納されたプログラム（命令）を専用レジスタにフェッチし、これをデコードして実行することにより、種々の処理を行なうことができる。コア＃１、＃２とＲＯＭ１１０は、ＲＯＭバス１１２によって接続されており、図示しないメモリコントローラの作動によって命令フェッチを行う。
【００２１】
コア＃１用周辺機器１２０、及びコア＃１用ＲＡＭ１２２は、データバス１２４によってコア＃１に接続されている。また、コア＃２用周辺機器１３０、及びコア＃２用ＲＡＭ１３２は、データバス１３４によってコア＃２に接続されている。そして、データバス１２４とデータバス１３４はバスアービタ１４０によって接続されている。コア＃１用周辺機器１２０及びコア＃２用周辺機器１３０は、例えばレジスタを備えるタイマー等の機器である。
【００２２】
［オブジェクトプログラム作成装置、及び方法］
図２は、本発明の一実施例に係るオブジェクトプログラム作成装置１のシステム構成例である。オブジェクトプログラム作成装置１は、Ｃソースファイルが入力されると、これを機械語で記述されたオブジェクトプログラムに変換（コンパイル）して出力する。Ｃソースファイルは、複数のタスクを含むソースプログラムである。なお、オブジェクトプログラム作成装置１の動作は、主要な過程が自動的に行われるものとしてもよいが、各過程でオペレータによる承認操作等を挟んでもよい。
【００２３】
オブジェクトプログラム作成装置１は、主要な構成として、コンパイラ１０と、レイテンシテーブル４０が格納された記憶装置３０と、を備えるコンピュータ装置である。また、コンパイラ１０は、構文解析部１１、最適化部１２、データ配置部１３、コード生成部１５、レイテンシ付与部１６、及びスケジューラ部１７を備える。
【００２４】
構文解析部１１は、字句解析結果に基づいて、入力されたテキストをTree構造のデータ構造に変換する。最適化部１２は、オブジェクトコード生成の段階で実行効率の高いコードとなるように、分岐経路の最適化、冗長性の除去等の処理を実行する。データ配置部１３は、コードやデータのメモリ配置を決定する。なお、これらの各機能については、既に種々の手法が公知となっているため、更に詳細な説明は省略する。
【００２５】
コード生成部１５は、構文解析部１１、最適化部１２、データ配置部１３によって処理されたＣソースファイルをコンパイル処理して、機械語で記述された複数の命令を含むオブジェクトプログラムを生成する。
【００２６】
レイテンシ付与部１６は、コード生成部により生成されたオブジェクトプログラムに含まれる複数の命令のそれぞれについて、当該命令が命令実行手段（マルチコア・プロセッサ１００が対象である場合、コア＃１、＃２）からメモリ（マルチコア・プロセッサ１００が対象である場合、コア＃１用周辺機器１２０、コア＃１用ＲＡＭ１２２、コア＃２用周辺機器１３０、コア＃２用ＲＡＭ１３２）へのメモリアクセス命令である場合に、記憶装置３０に記憶されたレイテンシテーブル４０を参照して、レイテンシを付与する。レイテンシとは、アクセス元がアクセス要求をアクセス先に送出してから、その結果がアクセス先から返ってくるまでの時間をいう。
【００２７】
スケジューラ部１７は、レイテンシ付与部１６によって付与されたレイテンシに基づいて、オブジェクトプログラムに含まれる複数の命令を並べ替える。
【００２８】
〔レイテンシテーブル〕
ここで、記憶装置３０に記憶されたレイテンシテーブル４０は、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定している。図３は、レイテンシテーブル４０のデータ形式例である。図示するように、レイテンシテーブル４０では、例えばアクセス元（コア＃１、コア＃２）毎に規定されており、各アクセス元について、読み込み時のレイテンシ（図中、Read  Latencyと表記した）、書き込み時のレイテンシ（図中、Write  Latencyと表記した）がアクセス先毎に規定されている。各レイテンシは、必要クロック数で表現されている。なお、図中、Start  Address  とは、プログラムから見た仮想アドレスを示す。
【００２９】
図示するように、コア＃１に関するレイテンシは、例えば、ＲＯＭ１１０からの読み込みが１クロック、書き込みが０クロック（無効）、コア＃１用ＲＡＭ１２２からの読み込みが１クロック、書き込みが２クロック、コア＃２用ＲＡＭ１３２からの読み込みが２クロック、書き込みが３クロック、コア＃１用周辺機器１２０からの読み込みが４クロック、書き込みが５クロック、コア＃２用周辺機器１３０からの読み込みが５クロック、書き込みが６クロックと規定されている。
【００３０】
また、コア＃２に関するレイテンシは、例えば、ＲＯＭ１１０からの読み込みが１クロック、書き込みが０クロック（無効）、コア＃１用ＲＡＭ１２２からの読み込みが２クロック、書き込みが３クロック、コア＃２用ＲＡＭ１３２からの読み込みが１クロック、書き込みが２クロック、コア＃１用周辺機器１２０からの読み込みが５クロック、書き込みが６クロック、コア＃２用周辺機器１３０からの読み込みが４クロック、書き込みが５クロックと規定されている。
【００３１】
レイテンシ付与部１６は、入力されたコア情報（アクセス元であるコアの識別番号）を用いてレイテンシテーブル４０のうち該当するものを抽出し、抽出したテーブルにおけるアクセス先が該当するデータを検索してレイテンシを決定する。そして、決定したレイテンシを命令に付与する。
【００３２】
このように、レイテンシテーブル４０は、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定しているため、オブジェクトプログラム作成装置１は、単に高速メモリへのアクセスと低速メモリへのアクセスを区別してレイテンシを決定するような装置に比して、より詳細にレイテンシに関する情報を取得することができる。
【００３３】
〔処理フロー〕
以下、主にレイテンシ付与部１６及びスケジューラ部１７により実行される特徴的な処理の流れについて説明する。図４は、主にレイテンシ付与部１６及びスケジューラ部１７により実行される特徴的な処理の流れを示すフローチャートである。
【００３４】
まず、レイテンシ付与部１６は、実行するコアに関する情報（コア情報）を外部から読み込み（Ｓ２００）、コア情報に応じたテーブルをレイテンシテーブル４０から抽出する（Ｓ２０２）。
【００３５】
次に、レイテンシ付与部１６は、コード生成部１５により生成された１単位の命令を読み込み（Ｓ２０４）、当該命令がメモリアクセス命令であるか否かを判定する（Ｓ２０６）。なお、コード生成部１５により生成された命令は、図示しないＲＡＭ等に一時的に格納されているものとする。命令がメモリアクセス命令でない場合は、Ｓ２０４に戻り、次の１単位の命令が入力される。
【００３６】
レイテンシ付与部１６は、命令がメモリアクセス命令である場合は、当該命令に係るアクセス先のアドレスを取得し（Ｓ２０８）、取得したアドレスを用いてＳ２０２において抽出されたテーブルを検索してレイテンシを決定し、決定したレイテンシを当該命令に付与する（Ｓ２１０）。
【００３７】
なお、メモリアクセス命令でない場合は、自動的に１クロックが処理の所要時間（レイテンシに相当する）として設定されてよい。
【００３８】
レイテンシ付与部１６は、単位ブロックの命令が全て終了するまで（オブジェクトプログラムの全命令が終了するまで、としてもよい）Ｓ２０４〜Ｓ２１０の処理を繰り返し実行する（Ｓ２１２）。
【００３９】
スケジューラ部１７は、単位ブロックの命令が全て終了すると、レイテンシが付与された命令についてスケジューリング処理（並べ替え）を行い（Ｓ２１４）、並べ替えの結果（オブジェクトプログラム）を出力する（Ｓ２１６）。
【００４０】
〔スケジューリング処理〕
以下、スケジューラ部１７によるスケジューリング処理について説明する。スケジューラ部１７は、例えば、ハザード（読み込み命令の直後に当該読み込んだデータを参照した演算が行われることによる遅延をいう）を回避するように命令の並べ替えを行う。より具体的には、命令の先頭からハザード存在が存在するか否かを探索し、先にある命令で繰り上げ可能なものがないかどうか判定する。そして、繰り上げ可能な命令が存在する場合、ハザードが生じている命令間に当該繰り上げ可能な命令を挿入する。係る処理を、ハザードが消滅するまで繰り返し実行する。
【００４１】
なお、レイテンシが付与された命令の並べ替えについては、他にも種々の手法が存在するが、本実施例では詳細な説明を省略する。
【００４２】
図５は、上記のようなハザードが発生しないプログラムにおける、Ｃソースファイル、レイテンシ、及び出力コード（オブジェクトプログラム）を例示した図である。このプログラムは、data1、data2、data4、data5を自コア用のＲＡＭから読み込んで、data1とdata2を加算した結果をdata3として自コア用のＲＡＭに格納すると共に、data4とdata5を乗算した結果をdata6として自コア用のＲＡＭに格納するものである。
【００４３】
図５の場合において、Ｃソースファイルは、int命令（整数定義命令）によってdata1〜data6を定義すると共に、上記演算を指定している。レイテンシは、data1、data2、data4、data5を自コア用のＲＡＭから読み込む命令については１クロックであり、data3、data6を自コア用のＲＡＭに格納する命令については２クロックである（図３参照）。
【００４４】
そして、出力コードは、以下の順に並んでいる（スケジューリング前）。
【００４５】
（１）LD.W（ロード）命令によって、data1を自コア用のＲＡＭから読み込んで自コア内のreg1（レジスタ１）に格納する
（２）LD.W（ロード）命令によって、data2を自コア用のＲＡＭから読み込んで自コア内のreg2（レジスタ２）に格納する
（３）ADD（加算）命令によって、reg1とreg2に記憶された値を加算し、加算結果をreg2に格納する
（４）ST.W（ストア）命令によって、reg2に記憶された値をdata3として自コア用のＲＡＭに格納する。
【００４６】
（５）LD.W（ロード）命令によって、data4を自コア用のＲＡＭから読み込んで自コア内のreg3（レジスタ３）に格納する
（６）LD.W（ロード）命令によって、data5を自コア用のＲＡＭから読み込んで自コア内のreg4（レジスタ４）に格納する
（７）MUL（乗算）命令によって、reg3とreg4に記憶された値を乗算し、乗算結果をreg4に格納する
（８）ST.W（ストア）命令によって、reg4に記憶された値をdata6として自コア用のＲＡＭに格納する。
【００４７】
この場合、ロード命令に要する時間が１クロック分であるため、ハザードは発生しない。従って、スケジューラ部１７は、ハザード回避のためのスケジューリング処理は行わない。
【００４８】
一方、図６は、上記のようなハザードが発生するプログラムにおける、Ｃソースファイル、レイテンシ、及び出力コードを例示した図である。このプログラムは、ext1、ext2、ext4、ext5を他コア用のＲＡＭから読み込んで、data1とdata2を加算した結果をdata3として自コアのＲＡＭに格納すると共に、data4とdata5を乗算した結果をdata6として自コアのＲＡＭに格納するものである。
【００４９】
図６の場合において、Ｃソースファイルは、int命令（整数定義命令）によってext1、ext2、ext4、ext5及びdata3、data6を定義すると共に、上記演算を指定している。レイテンシは、ext1、ext2、ext4、ext5を他コア用のＲＡＭから読み込む命令については２１クロックであり、data3、data6を自コア用のＲＡＭに格納する命令については２クロックである（図３参照）。
【００５０】
そして、出力コードは、以下の順に並んでいる（スケジューリング前）。
【００５１】
（１）LD.W（ロード）命令によって、ext1を他コア用のＲＡＭから読み込んで自コア内のreg1（レジスタ１）に格納する
（２）LD.W（ロード）命令によって、ext2を他コア用のＲＡＭから読み込んで自コア内のreg2（レジスタ２）に格納する
（３）ADD（加算）命令によって、reg1とreg2に記憶された値を加算し、加算結果をreg2に格納する
（４）ST.W（ストア）命令によって、reg2に記憶された値をdata3として自コア用のＲＡＭに格納する。
【００５２】
（５）LD.W（ロード）命令によって、ext4を他コア用のＲＡＭから読み込んで自コア内のreg3（レジスタ３）に格納する
（６）LD.W（ロード）命令によって、ext5を他コア用のＲＡＭから読み込んで自コア内のreg4（レジスタ４）に格納する
（７）MUL（乗算）命令によって、reg3とreg4に記憶された値を乗算し、乗算結果をreg4に格納する
（８）ST.W（ストア）命令によって、reg4に記憶された値をdata6として自コア用のＲＡＭに格納する。
【００５３】
この場合、（２）と（３）の関係、及び（６）と（７）の関係でハザードが発生している。従って、前述のような手法により、ハザードが消滅するようにスケジューリング処理を行う。その結果、出力コードは、以下の順に並ぶことになる（スケジューリング後）。
【００５４】
（１）LD.W（ロード）命令によって、ext1を他コア用のＲＡＭから読み込んで自コア内のreg1（レジスタ１）に格納する
（２）LD.W（ロード）命令によって、ext2を他コア用のＲＡＭから読み込んで自コア内のreg2（レジスタ２）に格納する
（３）LD.W（ロード）命令によって、ext4を他コア用のＲＡＭから読み込んで自コア内のreg3（レジスタ３）に格納する
（４）ADD（加算）命令によって、reg1とreg2に記憶された値を加算し、加算結果をreg2に格納する
（５）LD.W（ロード）命令によって、ext5を他コア用のＲＡＭから読み込んで自コア内のreg4（レジスタ４）に格納する
（６）ST.W（ストア）命令によって、reg2に記憶された値をdata3として自コア用のＲＡＭに格納する
（７）MUL（乗算）命令によって、reg3とreg4に記憶された値を乗算し、乗算結果をreg4に格納する
（８）ST.W（ストア）命令によって、reg4に記憶された値をdata6として自コア用のＲＡＭに格納する。
【００５５】
なお、２クロック以上を要するロード命令が連続している場合、現実的にバスにアクセスするパイプラインのステージは後半部分に収まるため、２クロックのロード命令を２回連続して実行する場合、３クロックで２回分の処理が終了する（半並列処理）。従って、同一の参照元によるメモリアクセス命令の連続は、上記のようなハザードを生じさせるものではない。
【００５６】
以上説明した本実施例のオブジェクトプログラム作成装置１、又はこれによって実行されるオブジェクトプログラム作成方法（図４のフローが相当する）によれば、メモリアクセスのアクセス元とアクセス先の組み合わせに応じてそれぞれ個別のレイテンシを規定しているレイテンシテーブル４０を用いて命令にレイテンシを付与しているため、複数の命令実行手段と複数のメモリを有する情報処理装置により実行されるオブジェクトプログラムを、より効率的な配列で作成することができる。
【００５７】
すなわち、アクセス先の資源が低速メモリであるか高速メモリであるかによって異なる専用命令を有さない情報処理装置が実行するオブジェクトプログラムを、適切に作成することができる。また、同じメモリにアクセスする場合であってもアクセス元が異なればレイテンシが異なるような情報処理装置が実行するオブジェクトプログラムについても、適切に作成することができる。
【００５８】
この結果、ハザードによる命令実行の停滞などが生じるのを適切に回避することができる。
【００５９】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００６０】
［変形例］
例えば、本発明に係るオブジェクトプログラム作成装置は、図７に示すような構成であってもよい。図７は、本発明の他の実施例に係るオブジェクトプログラム作成装置２のシステム構成例である。
【００６１】
図示するように、オブジェクトプログラム作成装置２は、主要な構成として、コンパイラ１０と、リンカ２０と、レイテンシテーブル４０が格納された記憶装置３０と、を備えるコンピュータ装置である。また、コンパイラ１０は、構文解析部１１、最適化部１２、コード生成部１５を備え、リンカ２０は、データ配置部１３、レイテンシ付与部１６、及びスケジューラ部１７を備える。ここで、リンカ２０は、変数を並べてアドレスを決定するアプリケーションである。各構成要素の機能については、実施例で説明したものと同様であり、詳細な説明を省略する。この場合のコンパイラ１０は、中間生成物としてのオブジェクトプログラムを作成し、リンカ２０がレイテンシ付与、スケジューリング等を実行して最適にオブジェクトプログラムに含まれる命令を並べ替える。
【００６２】
また、本発明に係るオブジェクトプログラム作成装置は、レイテンシテーブル４０を記憶した記憶装置３０を含まず、別体の何らかの装置から通信によってレイテンシテーブルに相当する情報を取得してもよい。
【符号の説明】
【００６３】
１  オブジェクトプログラム作成装置
１０  コンパイラ
１１  構文解析部
１２  最適化部
１３  データ配置部
１５  コード生成部
１６  レイテンシ付与部
１７  スケジューラ部
３０  記憶装置
４０  レイテンシテーブル
１００  マルチコア・プロセッサ
１１０  ＲＯＭ
１１２  ＲＯＭバス
１２０  コア＃１用周辺機器
１２２  コア＃１用ＲＡＭ
１３０  コア＃２用周辺機器
１３２  コア＃２用ＲＡＭ
１２４、１３４  データバス
１４０  バスアービタ
＃１、＃２  コア
【図１】
2011145899.tif 000003
【図２】
2011145899.tif 000004
【図３】
2011145899.tif 000005
【図４】
2011145899.tif 000006
【図５】
2011145899.tif 000007
【図６】
2011145899.tif 000008
【図７】
2011145899.tif 000009