(57)【要約】  マルチコアプロセッサのプログラミングにおいて、プログラムコードのアップデートに伴いそれらの改善情報の共有が必要となり、開発フローが複雑化し、プログラミング効率が低下することを防止する。第１のコンパイラは、複数のプロセッサが相互に接続される演算処理システムが備える第１のプロセッサ向けのプログラムコードから１以上のオブジェクトコードを生成する。第１のリンカは、生成した１以上のオブジェクトコードをリンクして第１のプロセッサ向けの実行ファイルを生成する。パラメータ情報生成部は、第１のリンカから得られる情報に基づいて、演算処理システムが備える第２のプロセッサが使用するパラメータ情報を生成する。第２のコンパイラは、第２のプロセッサ向けのプログラムコードとパラメータ情報を参照して、１以上のオブジェクトコードを生成する。第２のリンカは、生成した１以上のオブジェクトコードをリンクして第２のプロセッサ向けの実行ファイルを生成する。
2010029812.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサが相互に接続される演算処理システムが備える第１のプロセッサ向けのプログラムコードから１以上のオブジェクトコードを生成する第１のコンパイラと、
前記第１のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第１のプロセッサ向けの実行ファイルを生成する第１のリンカと、
前記第１のリンカから得られる情報に基づいて、前記演算処理システムが備える第２のプロセッサが使用するパラメータ情報を生成するパラメータ情報生成手段と、
前記第２のプロセッサ向けのプログラムコードと前記パラメータ情報を参照して、１以上のオブジェクトコードを生成する第２のコンパイラと、
前記第２のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第２のプロセッサ向けの実行ファイルを生成する第２のリンカと、
を備えることを特徴とするプログラミングシステム。
【請求項２】
前記演算処理システムにおける前記複数のプロセッサの接続は、メモリマップドＩ／Ｏ方式に準拠したものであり、
前記パラメータ情報生成手段は、前記パラメータ情報として、前記第１のリンカから得られた各関数がマッピングされたアドレス情報を元に前記第２のプロセッサで使用可能なパラメータを定義したヘッダファイルを生成することを特徴とする請求項１に記載のプログラミングシステム。
【請求項３】
前記演算処理システムにおける前記複数のプロセッサの接続は、メモリマップドＩ／Ｏ方式に準拠したものであり、
前記パラメータ情報生成手段は、前記パラメータ情報として、前記第１のプロセッサのレジスタ及びデータメモリのアドレスマップの情報を元に前記第２のプロセッサから前記第１のプロセッサにアクセス可能なパラメータを定義したヘッダファイルを生成することを特徴とする請求項１に記載のプログラミングシステム。
【請求項４】
前記演算処理システムにおける前記複数のプロセッサの接続は、メモリマップドＩ／Ｏ方式に準拠したものであり、
前記パラメータ情報生成手段は、前記パラメータ情報として、前記第１のリンカから得られた各関数がマッピングされたアドレス情報と、前記第１のプロセッサのレジスタ及びデータメモリのアドレスマップの情報と、を元に前記第２のプロセッサから前記第１のプロセッサにアクセス可能なパラメータを定義したヘッダファイルを生成することを特徴とする請求項１に記載のプログラミングシステム。
【請求項５】
前記演算処理システムがプロセッサをＮ（Ｎは３以上の自然数）個以上有しており、
前記パラメータ情報生成手段は、前記Ｎ個以上のプロセッサに対するツールフローのうちＮ−１個のツールフローにおいて、それぞれ用いられることを特徴とする請求項１乃至４の何れか１項に記載のプログラミングシステム。
【請求項６】
第１のコンパイラが、複数のプロセッサが相互に接続される演算処理システムが備える第１のプロセッサ向けのプログラムコードから１以上のオブジェクトコードを生成する第１のステップと、
第１のリンカが、前記第１のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第１のプロセッサ向けの実行ファイルを生成する第２のステップと、
前記第１のリンカから得られる情報に基づいて、前記演算処理システムが備える第２のプロセッサが使用するパラメータ情報を生成するパラメータ情報生成ステップと、
第２のコンパイラが、前記第２のプロセッサ向けのプログラムコードと前記パラメータ情報を参照して、１以上のオブジェクトコードを生成する第３のステップと、
第２のリンカが、前記第２のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第２のプロセッサ向けの実行ファイルを生成する第４のステップと、
を備えることを特徴とするプログラミング方法。
【請求項７】
前記演算処理システムにおける前記複数のプロセッサの接続は、メモリマップドＩ／Ｏ方式に準拠したものであり、
前記パラメータ情報生成ステップにおいて、前記パラメータ情報として、前記第１のリンカから得られた各関数がマッピングされたアドレス情報を元に前記第２のプロセッサで使用可能なパラメータを定義したヘッダファイルを生成することを特徴とする請求項６に記載のプログラミング方法。
【請求項８】
前記演算処理システムにおける前記複数のプロセッサの接続は、メモリマップドＩ／Ｏ方式に準拠したものであり、
前記パラメータ情報生成ステップにおいて、前記パラメータ情報として、前記第１のプロセッサのレジスタ及びデータメモリのアドレスマップの情報を元に前記第２のプロセッサから前記第１のプロセッサにアクセス可能なパラメータを定義したヘッダファイルを生成することを特徴とする請求項６に記載のプログラミング方法。
【請求項９】
前記演算処理システムにおける前記複数のプロセッサの接続は、メモリマップドＩ／Ｏ方式に準拠したものであり、
前記パラメータ情報生成ステップにおいて、前記パラメータ情報として、前記第１のリンカから得られた各関数がマッピングされたアドレス情報と、前記第１のプロセッサのレジスタ及びデータメモリのアドレスマップの情報と、を元に前記第２のプロセッサから前記第１のプロセッサにアクセス可能なパラメータを定義したヘッダファイルを生成することを特徴とする請求項６に記載のプログラミング方法。
【請求項１０】
前記演算処理システムがプロセッサをＮ（Ｎは３以上の自然数）個以上有しており、
前記パラメータ情報生成ステップは、前記Ｎ個以上のプロセッサに対するツールフローのうちＮ−１個のツールフローにおいて、それぞれ用いられることを特徴とする請求項６乃至９の何れか１項に記載のプログラミング方法。
【請求項１１】
複数のプロセッサが相互に接続される演算処理システムが備える第１のプロセッサ向けのプログラムコードから１以上のオブジェクトコードを生成する第１のコンパイラと、
前記第１のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第１のプロセッサ向けの実行ファイルを生成する第１のリンカと、
前記第１のリンカから得られる情報に基づいて、前記演算処理システムが備える第２のプロセッサが使用するパラメータ情報を生成するパラメータ情報生成手段と、
前記第２のプロセッサ向けのプログラムコードと前記パラメータ情報を参照して、１以上のオブジェクトコードを生成する第２のコンパイラと、
前記第２のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第２のプロセッサ向けの実行ファイルを生成する第２のリンカと、
としてコンピュータを機能させることを特徴とするプログラミング用プログラム。
【請求項１２】
請求項１１に記載のプログラミング用プログラムにおいて、
前記演算処理システムにおける前記複数のプロセッサの接続は、メモリマップドＩ／Ｏ方式に準拠したものであり、
前記パラメータ情報生成手段は、前記パラメータ情報として、前記第１のリンカから得られた各関数がマッピングされたアドレス情報を元に前記第２のプロセッサで使用可能なパラメータを定義したヘッダファイルを生成することを特徴とするプログラミング用プログラム。
【請求項１３】
請求項１１に記載のプログラミング用プログラムにおいて、
前記演算処理システムにおける前記複数のプロセッサの接続は、メモリマップドＩ／Ｏ方式に準拠したものであり、
前記パラメータ情報生成手段は、前記パラメータ情報として、前記第１のプロセッサのレジスタ及びデータメモリのアドレスマップの情報を元に前記第２のプロセッサから前記第１のプロセッサにアクセス可能なパラメータを定義したヘッダファイルを生成することを特徴とするプログラミング用プログラム。
【請求項１４】
請求項１１に記載のプログラミング用プログラムにおいて、
前記演算処理システムにおける前記複数のプロセッサの接続は、メモリマップドＩ／Ｏ方式に準拠したものであり、
前記パラメータ情報生成手段は、前記パラメータ情報として、前記第１のリンカから得られた各関数がマッピングされたアドレス情報と、前記第１のプロセッサのレジスタ及びデータメモリのアドレスマップの情報と、を元に前記第２のプロセッサから前記第１のプロセッサにアクセス可能なパラメータを定義したヘッダファイルを生成することを特徴とするプログラミング用プログラム。
【請求項１５】
請求項１１乃至１４の何れか１項に記載のプログラミング用プログラムにおいて、
前記演算処理システムがプロセッサをＮ（Ｎは３以上の自然数）個以上有しており、
前記パラメータ情報生成手段は、前記Ｎ個以上のプロセッサに対するツールフローのうちＮ−１個のツールフローにおいて、それぞれ用いられることを特徴とするプログラミング用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプログラミングコアを有するマルチコアプロセッサのプログラミングシステム、その方法及びそのプログラムに関する。
【背景技術】
【０００２】
近年、プロセス技術の進化に伴い、多数の演算回路を組み合わせたシステム全体を１つのチップ上に実装するＳｏＣ（System on a chip）が実現されている。また、これら多数の演算回路には、プロセッサなどのプログラマブルコアも含まれている。そして、アプリケーションに応じてアーキテクチャの異なるプログラマブルコアを組み合わせることによって、演算効率・リソースの効率を高める工夫が施されている。このように異種のコアを実装する手法は、一般にヘテロジニアスマルチコア（Heterogeneous multi core）と呼ばれる。【０００３】
このヘテロジニアスマルチコアに関連する技術が、特許文献１に記載されている。特許文献１に記載の技術は、ヘテロジニアスマルチコアプロセッサ向けグローバルコンパイラに関するものである。特許文献１に記載の技術では、ヘテロジニアスマルチコアプロセッサシステム（ＨＣＭＰ）を、複数の異種のプロセッサユニット（ＰＵ）及び共有メモリから構成する。なお、共有メモリには、全てのプロセッサユニットからアクセス可能である。【０００４】
そして、特許文献１では、アーキテクチャ構成情報各種パラメータとして、ＰＵの種類、数、ＰＵの対バス動作速度比、各ＰＵが持つメモリの種類、メモリサイズ、及びメモリアクセスレイテンシ、ＨＣＭＰが持つメモリ種類、サイズ、レイテンシ、等を予め入力しておく。このアーキテクチャ構成情報各種パラメータを利用することにより、マルチプロセッサを効率良く動作させることが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−３２８４１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上述の特許文献１に記載の技術は、単一のプログラミングモデルから、マルチスレッドやマルチタスクを利用して、複数のプログラマブルコアのそれぞれに必要な実行ファイルを合成する場合にしか適用できないという問題があった。この点について以下説明する。【０００７】
上述のような複数のプログラマブルコアを有するマルチコアシステムにおいて実行スケジューリングを行う方法として以下の２つが存在する。【０００８】
１）単一のプログラミングモデルから、マルチスレッドやマルチタスクを利用して、複数のプログラマブルコアのそれぞれに必要な実行ファイルを合成する方法と、２）複数のプログラマブルコアそれぞれに対して個別にプログラミングを行い、それぞれに対応した実行ファイルを個別に生成する方法と、の２つである。【０００９】
しかし、上述の特許文献１に記載の技術は、上記の１）の方法には適用できるが、２）の方法には適用できないため問題となる。【００１０】
そこで、上記２）の方法でプログラミングを行う場合について、図８及び図９を参照して検討する。図８及び図９は、関連技術に係るプログラミングシステムの基本的構成及び動作を説明するものである。【００１１】
図８の左側に記載されているのが、第１のプロセッサツールフローである。このツールフローでは、第１のコンパイラ６０１が入力された第１のコード記述６００をプログラムコードからオブジェクトコードにコンパイルする。そしてその後、第１のリンカ６０２がオブジェクトコードのリンクを行うことにより、第１の実行ファイル６０３が生成される。【００１２】
一方、図８の右側に記載されているのが、第２のプロセッサツールフローである。一般に、上記２）の方法でプログラミングを行う場合は、プログラマブルコアそれぞれの入出力要求に合うように、お互いのプログラムコードからメモリ・レジスタ・割り込みレジスタマップ等の情報を手動で抽出する。そして、抽出した情報を共有する必要がある。図８では、第１のコード参照６０４により情報を抽出し、それをパラメータ情報ファイル記述６０５とすることにより情報を共有している。【００１３】
このような手順に沿って、マルチコアシステムにおいてソフトウェア開発を行う場合には、プログラムコードのアップデートに伴い、それらの改善情報の共有がその都度必要となり、開発フローが複雑になる。そのため、プログラミング効率が低下し、バグを混入させる一因ともなる、といった問題があった。【００１４】
また、図９の右側に示すように、第２のプロセッサツールフローにおいて、第２のコンパイラ６０７が行うコンパイルの前処理としてパラメータ情報を手動で抜き出し、パラメータ情報ファイル生成ツール６１１を用いて、ある特定のパターンを記述したファイルを生成する処理を行う方式も存在する。【００１５】
しかし、パラメータ情報ファイル生成ツール６０７は、第１のプロセッサツールフローとリンクしてファイル生成を行う訳ではない。そのため、パラメータ情報ファイル生成ツール６１１に適した形式に記述したファイルを、その都度生成する必要があり、効率的であるとはいえない。【００１６】
そこで本発明は、複数のプログラマブルコアそれぞれが個別のプログラミングモデルを有している環境でマルチコアシステムのソフトウェア開発を行う場合に、プログラミング効率の高い開発環境を提供することが可能な、マルチコアにおけるプログラミングシステム、その方法及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明に係るプログラミングシステムは、複数のプロセッサが相互に接続される演算処理システムが備える第１のプロセッサ向けのプログラムコードから１以上のオブジェクトコードを生成する第１のコンパイラと、前記第１のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第１のプロセッサ向けの実行ファイルを生成する第１のリンカと、前記第１のリンカから得られる情報に基づいて、前記演算処理システムが備える第２のプロセッサが使用するパラメータ情報を生成するパラメータ情報生成手段と、前記第２のプロセッサ向けのプログラムコードと前記パラメータ情報を参照して、１以上のオブジェクトコードを生成する第２のコンパイラと、前記第２のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第２のプロセッサ向けの実行ファイルを生成する第２のリンカと、を備えることを特徴とする。【００１８】
本発明に係るプログラミング方法は、第１のコンパイラが、複数のプロセッサが相互に接続される演算処理システムが備える第１のプロセッサ向けのプログラムコードから１以上のオブジェクトコードを生成する第１のステップと、第１のリンカが、前記第１のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第１のプロセッサ向けの実行ファイルを生成する第２のステップと、前記第１のリンカから得られる情報に基づいて、前記演算処理システムが備える第２のプロセッサが使用するパラメータ情報を生成するパラメータ情報生成ステップと、第２のコンパイラが、前記第２のプロセッサ向けのプログラムコードと前記パラメータ情報を参照して、１以上のオブジェクトコードを生成する第３のステップと、第２のリンカが、前記第２のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第２のプロセッサ向けの実行ファイルを生成する第４のステップと、を備えることを特徴とする。【００１９】
本発明に係るプログラミング用プログラムは、複数のプロセッサが相互に接続される演算処理システムが備える第１のプロセッサ向けのプログラムコードから１以上のオブジェクトコードを生成する第１のコンパイラと、前記第１のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第１のプロセッサ向けの実行ファイルを生成する第１のリンカと、前記第１のリンカから得られる情報に基づいて、前記演算処理システムが備える第２のプロセッサが使用するパラメータ情報を生成するパラメータ情報生成手段と、前記第２のプロセッサ向けのプログラムコードと前記パラメータ情報を参照して、１以上のオブジェクトコードを生成する第２のコンパイラと、前記第２のコンパイラが生成した１以上のオブジェクトコードをリンクして前記第２のプロセッサ向けの実行ファイルを生成する第２のリンカと、としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、プログラマブルコアのプログラミング工程内で自動的に他のプログラマブルコアで必要なパラメータ情報を持ったファイルをヘッダファイルとして自動生成できる。そして、プログラムコードのアップデートに伴い、それらのアップデート情報の共有が必要であった開発フローが簡素化され、バグを混入させる一因を取り除くことができることから、プログラミング効率の高い開発環境を提供することが可能となる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態に係るマルチコアにおけるプログラミングシステムの基本的構成を示す図である。
【図２】図１に示すプログラミングシステムにおけるターゲットシステムの全体構成を表すブロック図である。
【図３】図１に示すパラメータ情報生成部の基本的構成を表すブロック図である。
【図４】図１に示すプログラミングシステムの基本的動作を表すフローチャートである。
【図５】図１に示すプログラミングシステムにおいてプロセッサが３つ存在する場合の基本的構成を表す図である。
【図６】本発明の第２の実施形態に係るマルチコアにおけるプログラミングシステムのパラメータ情報生成部の基本的構成を表すブロック図である。
【図７】本発明の第３の実施形態に係るマルチコアにおけるプログラミングシステムのパラメータ情報生成部の基本的構成を表すブロック図である。
【図８】関連技術に係るマルチコアにおけるプログラミングシステムの基本的構成及び動作を表す図である。
【図９】図８に示す関連技術にパラメータ情報生成ツールを付加した場合の基本的構成及び動作を表す図である。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態について、図面を参照して説明する。
【００２３】
［第１の実施形態］
本発明の第１の実施形態の概略を説明する。本実施形態に係るマルチコアにおけるプログラミングシステムは、複数のプログラマブルコアそれぞれが個別のプログラミングモデルを有している環境でマルチコアシステムのソフトウェア開発を行う場合の開発環境を提供するものである。
【００２４】
図１は、本実施形態に係るプログラミングシステムの基本的構成及びソフトウェア開発フローを説明するものである。図８に示す関連技術の方式との違いは、第１のプロセッサのツールフローにおけるプログラムコードからオブジェクトコードを生成するコンパイル時に、コンパイル情報からレジスタ・メモリマップ等の情報をヘッダファイルとして生成するヘッダファイル生成機能（図中及び以下では、パラメータ情報ファイル生成部１３０と表記する。）を有することである。
【００２５】
次に、本実施形態について図面を用いて詳細に説明する。
【００２６】
図２は、本実施形態に係るプログラミングシステムにおけるターゲットシステム（演算処理システム）の全体構成を示す。このターゲットシステムは、図２に示すように複数のプロセッサ（第１のプロセッサ１００及び第２のプロセッサ２００）を有する。
【００２７】
ここでプロセッサとは、コンパイラとリンカを用いたツールフローによりプログラミング可能な演算装置である。それらのプロセッサは、メモリマップ（メモリマップドＩ／Ｏ：Memory-mapped Input/Output）のＩＦ４００で接続されている。また、本システムは、共有メモリ３００を更に有している。それぞれのプロセッサは、各プロセッサからのコマンド発行により、所定のインストラクションアドレスから動作を開始する構成をとることができる。
【００２８】
なお、図１に示す第１のプロセッサツールフロー及び第２のプロセッサツールフローは、それぞれのプロセッサ（第１のプロセッサ１００及び第２のプロセッサ２００）のツールフローを示している。
【００２９】
次に、図１に示すプログラミングシステムの各部分及び各データについて説明する。
【００３０】
図１に示すように、第１のプロセッサツールフローは、第１のコンパイラ１１０、第１のリンカ１２０、パラメータ情報ファイル生成部（本発明のパラメータ情報生成手段を構成する）１３０、第１のコード記述５００、第１の実行ファイル５０１及びパラメータ情報ファイル５０２を有する。また、第２のプロセッサツールフロー２００は、第２のコンパイラ２１０、第２のリンカ２２０、パラメータ情報ファイル５０２、第２のコード記述５０３及び第２の実行ファイル５０４を有する。
【００３１】
第１のコード記述５００及び第２のコード記述５０３は、それぞれのプログラムに対するプログラムコードである。
【００３２】
第１のコンパイラ１１０及び第２のコンパイラ２１０は、プログラムコードからオブジェクトコードを生成するコンパイラである。
【００３３】
第１のリンカ１２０及び第２のリンカ２２０は、それぞれコンパイラ１１０及びコンパイラ２１０で生成されたオブジェクトコードをリンクするリンカである。
【００３４】
第１の実行ファイル５０１及び第２の実行ファイル５０４は、リンカから出力される実行ファイルである。
【００３５】
パラメータ情報ファイル生成部１３０は、第１のリンカ１２０から得られるリンカマップ情報から第２のプロセッサ２００用の第１のパラメータ情報ファイル５０２を生成するパラメータ情報ファイル生成部である。
【００３６】
パラメータ情報ファイル５０２は、リンカマップから得られた各関数のスタートアドレス番地等が記述されたパラメータ情報ファイルである。
【００３７】
次に、図３を参照してパラメータ情報ファイル生成部１３０の詳細を述べる。
【００３８】
パラメータ情報ファイル生成部１３０は、リンカテーブル取得部１３１、テーブル変換部１３２及びファイル生成部１３３を有している。
【００３９】
リンカテーブル取得部１３１は、リンカから得られたリンカテーブル情報を取得するブロックである。なお、リンカテーブル情報とは、各関数の先頭アドレスがテーブル化されているものをいう。
【００４０】
テーブル変換部１３２は、リンカテーブル取得部１３１において得られたリンカテーブルを変換し、第２のプロセッサ２００で使用するパラメータとするブロックである。ファイル生成部１３３は、第２のプロセッサ２００で使用されるヘッダファイルを生成するブロックである。なお、このヘッダファイルを図中及び以下の説明では「パラメータ情報ファイル５０２」と表記する。
【００４１】
次に、図４のフローチャートを参照して動作の説明をする。まず、プロセッサ１００向けの第１の実行ファイル５０１を生成する際の動作について説明する。
【００４２】
初めに第１のプロセッサ１００向けの第１のコード記述５００を生成する（ステップＳ１０１）。次に、第１のコンパイラ１１０により第１のコード記述５００のコンパイルを行い、オブジェクトコードを生成する（ステップＳ１０２）。次に、第１のリンカ１２０によって１以上のオブジェクトコードをリンクして、第１の実行ファイル５０１を生成する（ステップＳ１０３）。
【００４３】
このとき、パラメータ情報ファイル生成部１３０の各部が上述の動作を行うことにより、第１のリンカ１２０からマップ情報等が読み出され、他の第２のプロセッサ２００の動作に必要な情報を選択し、パラメータ情報ファイル５０２を生成し、ヘッダファイルとする（ステップＳ１０４からステップＳ１０６）。
【００４４】
次に、第２のプロセッサ２００向けの第２の実行ファイル５０４を生成する（ステップＳ１０７からステップＳ１０９）。
【００４５】
すなわち、第２のプロセッサ２００向けの第２のコード記述５０３を生成する（ステップＳ１０７）。次に、第２のコンパイラ２１０が、第１のプロセッサ１００のツールフローより得られたパラメータ情報ファイル５０２を用いて、第２のコード記述５０３のコンパイルを実行してオブジェクトコードを生成する（ステップＳ１０８）。そして、第２のリンカ２２０によって１以上のオブジェクトコードをリンクして、第２の実行ファイル５０４を生成する（ステップＳ１０９）。
【００４６】
以上の動作により、本実施の形態では、プログラムコードのアップデートに伴い、それらのアップデート情報の共有が必要であった開発フローが簡素化され、バグを混入させる一因を取り除くことができることから、プログラミング効率の高い開発環境を提供することが可能となる。
【００４７】
なお、上述した実施の形態では、プロセッサが２個存在する場合を想定して説明したが、本発明はプロセッサが２個存在する場合だけではなく、３個以上プロセッサが存在する場合であっても適用することが可能である。もしも、プロセッサが３個以上存在する場合は、各プロセッサ向けのリンカにパラメータ情報ファイル生成部１３０を付加することで、上述したプロセッサが２個存在する場合と同様の効果を得ることができる。この点について、図５を用いて説明する。
【００４８】
図５における第２のプロセッサツールフローには、パラメータ情報生成部１３０が付加されている。そして、第２のプロセッサツールフローのパラメータ情報生成部１３０は、第２のリンカ２２０からマップ情報等を読み出し、他のプロセッサの動作に必要な情報を選択し、第２のパラメータ情報ファイル５０６を生成しヘッダファイルとする。そして、第３のプロセッサツールフローでは、第１のパラメータ情報ファイル５０５及び第２のパラメータ情報ファイル５０６を用いてコンパイルを行う。プロセッサの数が更に増える場合は、パラメータ情報ファイル生成部１３０を有するプロセッサツールフローを、増加するプロセッサと同じ数だけ追加する。
【００４９】
すなわち、ターゲットシステムである演算処理システムがプロセッサをＮ（Ｎは３以上の自然数）個以上有する場合、パラメータ情報ファイル生成部１３０は、Ｎ個以上のプロセッサに対するツールフローのうちＮ−１個のツールフローにおいて、それぞれ用いられる構成でもよい。この構成でも、上述したプロセッサが２個存在する場合と同様の効果を得ることができる。
【００５０】
［第２の実施形態］
次に、本発明の他の実施形態として第２の実施形態を示す。
【００５１】
本実施形態に係るプログラミングシステムは、第１の実施形態の変形であって、第１の実施形態との違いは、図６に示すようにパラメータ情報ファイル生成部１３０の内部構成が異なる点である。具体的には、第１の実施形態におけるリンカテーブル取得部１３１及びテーブル変換部１３２が、レジスタ・メモリマップ取得部１３４が置き換えられている。
【００５２】
そして、パラメータ情報ファイル生成部１３０内において、第１の実施形態ではリンカから得られたリンカテーブルを元にパラメータ情報を生成するのに対し、本実施形態では、レジスタ・メモリマップ取得部１３４が、プロセッサそのものが持つレジスタのマップや、データメモリのアドレスマップを参照し、パラメータ情報ファイルを生成する。
【００５３】
第１のプロセッサと第２のプロセッサのツールフローは、第１の実施形態と第２の実施形態では同様である。この方式により、データメモリやレジスタの内容をメモリマップドＩ／Ｏにより共有することが可能となる。
【００５４】
［第３の実施形態］
次に、本発明の他の実施形態として第３の実施形態を示す。
【００５５】
本実施形態に係るプログラミングシステムは、第１の実施形態と第２の実施形態の組み合わせであって、第１の実施形態との違いは、図７に示すようにパラメータ情報ファイル生成部１３０の内部構成においてレジスタ・メモリマップ取得部１３４が付加されている点である。
【００５６】
具体的には、パラメータ情報ファイル生成部１３０内において、第１の実施形態で行っているリンカから得られたリンカテーブルを元にパラメータ情報を生成することに加え、第３の実施形態では、レジスタ・メモリマップ取得部１３４が第２の実施形態で説明したプロセッサそのものが持つレジスタのマップや、データメモリのアドレスマップを参照し、パラメータ情報を生成する。第１のプロセッサと第２のプロセッサのツールフローは、第１の実施形態と同様である。
【００５７】
以上説明した本発明の実施形態を用いることにより、プログラムコードのアップデートに伴い、それらのアップデート情報の共有が必要であった開発フローが簡素化され、バグを混入させる一因を取り除くことができることから、プログラミング効率の高い開発環境を提供することが可能となるという効果を得ることができる。
【００５８】
なお、本発明の実施形態であるヘテロジニアスマルチコアにおけるプログラミングシステムは、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。
【００５９】
例えば、本発明の上記各実施の形態に係るプログラミングシステムは、ハードウェアによっても実現することもできるが、コンピュータをそのプログラミングシステムとして機能させるためのプログラムをコンピュータがコンピュータ読みと取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００６０】
また、本発明の上記各実施の形態に係るプログラミング方法は、ハードウェアによっても実現することもできるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読みと取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００６１】
また、上述したハードウェア、ソフトウェア構成は特に限定されるものではなく、上述した各構成要素の機能を実現可能であれば、いずれのものでも適用可能である。例えば、上述した各構成要素の機能毎に回路や部品等を独立させて個別に構成したものでも、複数の機能を１つの回路や部品等に組み入れて一体的に構成したものでも、いずれでもよい。
【００６２】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００６３】
この出願は、２００８年９月９日に出願された日本出願特願２００８−２３１０８０号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００６４】
本発明は、例えば複数のプログラマブルコアを有するマルチコアプロセッサＬＳＩの開発環境での利用といった用途に好適である。
【符号の説明】
【００６５】
１００  第１のプロセッサ
１１０、６０１  第１のコンパイラ
１２０、６０２  第１のリンカ
１３０  パラメータ情報ファイル生成部
１３１  リンカテーブル情報取得部
１３２  テーブル変換部
１３３  ファイル生成部
１３４  レジスタ・メモリマップ取得部
２００  第２のプロセッサ
２１０、６０７  第２のコンパイラ
２２０、６０８  第２のリンカ
３００  共有メモリ
３１０  第３のコンパイラ
３２０  第３のリンカ
４００  メモリマップドＩ／Ｏ  ＩＦ
５００、６００  第１のコード記述
５０１、６０３  第１の実行ファイル
５０２  パラメータ情報ファイル
５０３、６０６  第２のコード記述
５０４、６０９  第２の実行ファイル
５０５  第１のパラメータ情報ファイル
５０６  第２のパラメータ情報ファイル
５０７  第３のコード記述
５０８  第３の実行ファイル
６０４  第１のコード参照
６０５  パラメータ情報ファイル記述
【図１】
2010029812.tif 000003
【図２】
2010029812.tif 000004
【図３】
2010029812.tif 000005
【図４】
2010029812.tif 000006
【図５】
2010029812.tif 000007
【図６】
2010029812.tif 000008
【図７】
2010029812.tif 000009
【図８】
2010029812.tif 000010
【図９】
2010029812.tif 000011
【国際調査報告】
2010029812.tif 000012
2010029812.tif 000013
2010029812.tif 000014
2010029812.tif 000015