(57)【要約】【課題】ローカルアドレスを用いることによる処理の高速性を犠牲にせず、オブジェクトコードを格納するメモリ使用量を抑える。【解決手段】ＣＰＵコア内のローカルメモリを参照するのにグローバルアドレスとローカルアドレスとを用いることができるマルチＣＰＵコアシステム用のロードモジュールを生成する場合、関数のデータがどのＣＰＵコア内のローカルメモリに配置されるか、その関数がどのＣＰＵで実行されるかを指定する指示情報をソースプログラムに付随させる。指示情報に基づいて、関数毎に変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかに応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成する。生成したオブジェクトコードに基づいてグローバルアドレスとローカルアドレスの割り当てを行って複数のＣＰＵコアに共通なロードモジュールを生成する。【選択図】図４
2013127703.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するロードモジュール生成方法であって、
あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、及び、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成するコンパイル処理と、
前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のＣＰＵコアに共通なロードモジュールを生成するリンク処理と、
を含むロードモジュール生成方法。
【請求項２】
前記コンパイル処理において、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照するコードを生成し、複数のＣＰＵで実行される関数の場合にはその変数を参照するためにグローバルアドレス用シンボルを参照するコードを生成する、請求項１記載のロードモジュール生成方法。
【請求項３】
前記コンパイル処理において、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第１のコードを生成し、複数のＣＰＵで実行される可能性のある関数の場合には関数を実行するＣＰＵと参照する変数の所在に応じてローカルアドレス用シンボルとグローバルアドレス用シンボルとの参照を選択する第２のコードを生成する、請求項１記載のロードモジュール生成方法。
【請求項４】
前記第２のコードは、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のＣＰＵで実行されるか否かを判定する文、上記関数が上記特定のＣＰＵで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む、請求項３記載のロードモジュール生成方法。
【請求項５】
前記指示情報は、Ｃ言語におけるpragma文で指定される情報である、請求項１記載のロードモジュール生成方法。
【請求項６】
ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するロードモジュール生成方法であって、
あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、および、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力する入力処理と、
前記入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成するコード生成処理と、
前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決するアドレス解決処理と、
単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルに対応するアドレスを用いるコードを生成し、複数のＣＰＵで実行される可能性のある関数において変数を参照する場合はグローバルアドレス用シンボルに対応するアドレスを用いるコードを生成するアドレス生成処理と、
を含むロードモジュール生成方法。
【請求項７】
ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するロードモジュール生成方法であって、
あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、および、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力する入力処理と、
前記入力した情報に基づいて、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第１のコードを生成し、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のＣＰＵで実行されるか否かを判定する文、上記関数が上記特定のＣＰＵで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む第２のコードを生成するコード生成処理と、
前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決するアドレス解決処理と、
前記オブジェクトコードに対してグローバルアドレス用シンボルには対応するグローバルアドレスを用いるコードを生成し、ローカルアドレス用シンボルには対応するローカルアドレスを用いるコードを生成するアドレス生成処理と、
を含むロードモジュール生成方法。
【請求項８】
ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールを生成するための、コンピュータにより実行可能なロードモジュール生成プログラムであって、
あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、及び、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成するコンパイル処理と、
前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のＣＰＵコアに共通なロードモジュールを生成するリンク処理と、
を制御するロードモジュール生成プログラム。
【請求項９】
前記コンパイル処理において、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照するコードを生成し、複数のＣＰＵで実行される関数の場合にはその変数を参照するためにグローバルアドレス用シンボルを参照するコードを生成する制御を行う、請求項８記載のロードモジュール生成プログラム。
【請求項１０】
前記コンパイル処理において、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第１のコードを生成し、複数のＣＰＵで実行される可能性のある関数の場合には関数を実行するＣＰＵと参照する変数の所在に応じてローカルアドレス用シンボルとグローバルアドレス用シンボルとの参照を選択する第２のコードを生成する制御を行う、請求項８記載のロードモジュール生成プログラム。
【請求項１１】
前記第２のコードは、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のＣＰＵで実行されるか否かを判定する文、上記関数が上記特定のＣＰＵで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む、請求項１０記載のロードモジュール生成プログラム。
【請求項１２】
ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するための、コンピュータにより実行可能なロードモジュール生成プログラムであって、
あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、および、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力する入力処理と、
前記入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成するコード生成処理と、
前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決するアドレス解決処理と、
単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルに対応するアドレスを用いるコードを生成し、複数のＣＰＵで実行される可能性のある関数において変数を参照する場合はグローバルアドレス用シンボルに対応するアドレスを用いるコードを生成するアドレス生成処理と、
を制御するロードモジュール生成プログラム。
【請求項１３】
ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成するための、コンピュータにより実行可能なロードモジュール生成プログラムであって、
あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、および、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力する入力処理と、
前記入力した情報に基づいて、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第１のコードを生成し、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のＣＰＵで実行されるか否かを判定する文、上記関数が上記特定のＣＰＵで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む第２のコードを生成するコード生成処理と、
前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決するアドレス解決処理と、
前記オブジェクトコードに対してグローバルアドレス用シンボルには対応するグローバルアドレスを用いるコードを生成し、ローカルアドレス用シンボルには対応するローカルアドレスを用いるコードを生成するアドレス生成処理と、
を制御するロードモジュール生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ローカルアドレスとグローバルアドレスによって参照可能なローカルメモリをそれぞれが有する複数のＣＰＵコアを用いたマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールを生成する方法及びその方法を制御するためのコンピュータプログラムに関する。
【背景技術】
【０００２】
マルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールを生成する方法について記載された文献の例として特許文献１、２がある。これらには、ＣＰＵ毎にメモリ空間は異なるが、特別なアドレスを使うことにより他ＣＰＵコア内のローカルメモリを参照可能なマルチコアシステムによって実行されるプログラムのロードモジュールを生成する方法が記載される。この記載の要点は以下の通りである。即ち、第２のＣＰＵコアで実行される関数から第２のＣＰＵコア内のローカルメモリ上にあるデータＹへの参照に対しては、第２のＣＰＵの「メモリ空間内リンカ」によりアドレスが解決されてアドレスｙを割り当てる。一方、第１のＣＰＵコアで実行される関数から第２のＣＰＵコア内のローカルメモリ上にあるデータＹへの参照に対しては、上記アドレスｙを用いて、「メモリ空間間リンカ」により、「ｙ＋ｏｆｆｓｅｔ」によってアドレスを解決する。ｏｆｆｓｅｔは第１のＣＰＵコア内のローカルメモリの先頭ローカルアドレスに対する第２のＣＰＵコア内のローカルメモリの先頭グローバルアドレスのオフセットを意味するものとする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４１３３１０７号公報
【特許文献２】特開２００４−７８６００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明者は異なるＣＰＵコア上で実行される同じ関数から同じ変数を参照する場合における変数のアドレス解決方法について検討した。図６には本発明者によるその検討結果が例示される。第１のＣＰＵコア内のローカルメモリＬＭ１に付与されたローカルアドレスと第２のＣＰＵコア内のローカルメモリＬＭ２に付与されたローカルアドレスとをそれぞれ０ｘ０００〜０ｘ０ｆｆとする。第１のＣＰＵコア内のローカルメモリＬM１に付与されたグローバルアドレスを０ｘ１００〜０ｘ１ｆｆ、第２のＣＰＵコア内のローカルメモリＬＭ２に付与されたグローバルアドレスを０ｘ２００〜０ｘ２ｆｆとする。第１のＣＰＵコア内のローカルメモリＬＭ１の先頭ローカルアドレスに対する第２のＣＰＵコア内のローカルメモリＬＭ２の先頭グローバルアドレスのオフセットは、ｏｆｆｓｅｔ＝０ｘ２００となる。
【０００５】
図６において、関数Ｆ、Ｇはその記述の一部に含まれる変数Ｙを参照し、変数Ｙのデータは第２のＣＰＵコア内のローカルメモリＬＭ２上に配置されている。第２のＣＰＵコア内のローカルメモリＬＭ２上に配置された関数Ｆの中から第２のＣＰＵコア内のローカルメモリＬＭ２上の変数Ｙのデータを参照するもの、または、その関数Ｆの中から第２のＣＰＵコア内のローカルメモリＬＭ２上に配置された関数Ｇを呼び出すもの、に対しては、第２のＣＰＵに対する「メモリ空間内リンカ」によって上記Ｆ，ＹおよびＧのアドレスが解決される。アドレス解決された夫々の関数アドレスをｆ，ｇ、解決された変数アドレスをｙ（＝０ｘ０ａａ）とする。ここで、仮に上記関数Ｆを第１のＣＰＵコアから呼び出した場合、関数Ｆはアドレスｆ＋ｏｆｆｓｅｔによって正しくコールされる。しかし、すでにオブジェクトコードとなった関数Ｆ内のアドレスy及びgはそのままの値のため、第１のＣＰＵコアがコールした関数Ｆを実行すると第１のＣＰＵコア内のローカルメモリＬＭ１上の不正なアドレスを参照して、誤動作を生ずることになる。
【０００６】
これを防止するには、第１ＣＰＵコアについてメモリ空間内リンカは、第２ＣＰＵコア内のローカルメモリＬＭ２上の関数アドレスｆの関数の変数Ｙに対してアドレス解決を行わず、メモリ空間間リンカによって、ｆの関数の変数Ｙに対してグローバルアドレスを用いたアドレス解決を行う。これにより、関数Ｆ内で変数Ｙを参照するアドレスが第１ＣＰＵコアの場合にはグローバルアドレス「０ｘ２ａａ」、第２ＣＰＵコアの場合はローカルアドレス「０ｘ０ａａ」となって、相違される。そのため、関数Ｆの実体が第１ＣＰＵコアと第２ＣＰＵコアの両方で別々に必要になる。すなわち、上記のような関数Ｆを複数のＣＰＵから呼び出す場合には、各ＣＰＵコアに関数Ｆに関するオブジェクトコードが別々に必要になり、システム全体から見れば、メモリ使用量が増加するという課題がある。
【０００７】
この点に関し、本発明者はさらに、グローバルアドレスで変数のアドレス解決を行ってオブジェクトコードを生成し、ＣＰＵコア内のローカルメモリ上のデータをそのデータのローカルアドレスで参照したいときはそのデータのグローバルアドレスを実行時にローカルアドレスに変換して参照させることによってメモリ使用量を減らすことについても検討した。しかしながら、実行時にアドレスの変換処理を追加すると、参照を高速化するためのローカルアドレスを使えるにもかかわらず、その高速性を十分に生かすことができない。
【０００８】
本発明の目的は、ローカルアドレスを用いることによる処理の高速性を犠牲にすることなく、オブジェクトコードを格納するためのメモリ使用量の増大を抑えることができるロードモジュール生成技術を提供することにある。
【０００９】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１１】
すなわち、ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内のローカルメモリを参照するのにグローバルアドレスとローカルアドレスとを用いることができるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールを生成する。この場合に、関数のデータがどのＣＰＵコア内のローカルメモリ上に配置されるか、及び、その関数がどのＣＰＵで実行されるかを指定する指示情報をソースプログラムに付随させる。この指示情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成する。生成したオブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のＣＰＵコアに共通なロードモジュールを生成する。
【００１２】
これによれば、関数内の変数に対するアドレス解決処理を複数ＣＰＵ間にまたがるリンク時にまで遅らせることによって、複数のＣＰＵから呼び出される関数に対しては、その中から参照するデータや関数に対するアドレスとしてグローバルアドレス用シンボルに対するアドレスを参照するコードが出力される。出力された単一のコードは複数のＣＰＵで正しく実行されるので、ＣＰＵ毎に関数のコピーは不要となり、メモリ使用量増加は発生しない。さらに、本来ローカルアドレスを用いた参照が可能な場合にはアドレス変換を行うことを要しないから、ローカルアドレスを用いることによる処理の高速性も犠牲にならない。
【発明の効果】
【００１３】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１４】
すなわち、ローカルアドレスを用いることによる処理の高速性を犠牲にすることなく、オブジェクトコードを格納するためのメモリ使用量の増大を抑えることができるロードモジュールを生成することができる。
【図面の簡単な説明】
【００１５】
【図１】図１はマルチＣＰＵコアシステムとしてのマイクロコンピュータによって実行されるプログラムのロードモジュールを生成する開発システムの概略ブロック図である。
【図２】図２はローカルアドレスとグローバルアドレスによるローカルメモリのアドレスマップを例示する説明図である。
【図３】図３はローカルアドレスとグローバルアドレスによるローカルメモリのアクセス経路を例示する説明図である。
【図４】図４はロードモジュールを生成する処理フローを例示するフローチャートである。
【図５】図５はロードモジュールを生成する別の処理フローを例示するフローチャートである。
【図６】図６は同じ関数の同じ変数を異なるＣＰＵコアが参照する場合における変数のアドレス解決方法について本発明者が先に検討した結果を例示する説明図である。
【発明を実施するための形態】
【００１６】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１７】
〔１〕＜複数ＣＰＵコアに共通なロードモジュールの生成＞
本発明の代表的な実施の形態に係るロードモジュール生成方法は、ＣＰＵ（２１１，２２１）とローカルメモリ（２１２，２２２）をそれぞれが有する複数個のＣＰＵコア（２０１，２０２）の内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステム（２）によって実行されるプログラムのロードモジュール（１５１，１５１Ａ）をコンピュータ（１）のデータ処理によって生成するロードモジュール生成方法である。この方法はコンパイル処理（１２０，１２０Ａ）及びリンク処理（１３０）を含む。コンパイル処理は、あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、及び、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラム（１４０）を入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル（ＬＹ）及びグローバルアドレス用シンボル（ＧＹ）の内の少なくとも一つを参照するオブジェクトコード（１４１，１４１Ａ）を生成する処理である。リンク処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のＣＰＵコアに共通なロードモジュール（１５１，１５１Ａ）を生成する処理である。
【００１８】
上記によれば、関数内の変数に対するアドレス解決処理を複数ＣＰＵ間にまたがるリンク時にまで遅らせることによって、複数のＣＰＵから呼び出される関数に対しては、その中から参照するデータや関数に対するアドレスとして、グローバルアドレス用シンボルに対するアドレスを参照するコードが出力され、その単一のコードは複数のＣＰＵで正しく実行されるので、ＣＰＵ毎に関数のコピーは不要となり、メモリ使用量増加は発生しない。さらに、ローカルアドレス用シンボルに対するアドレスを参照するコードに対しては、その中から参照するデータや関数に対するアドレスとして、ローカルアドレス用シンボルに対するローカルアドレスを参照するコードがロードモジュール内に生成されるから、本来ローカルアドレスを用いた参照が可能な関数についてロードモジュールを実行するときアドレス変換を行うことを要さず、ローカルアドレスを用いることによる処理の高速性も犠牲にならない。
【００１９】
〔２〕＜単一ＣＰＵによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数ＣＰＵによる同一実行関数からの変数の参照にはグローバルアドレス用シンボルを付与＞
項１のロードモジュール生成方法における前記コンパイル処理（１２０）において、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照するコード（ｇ；＝ＬＹ）を生成し、複数のＣＰＵで実行される関数の場合にはその変数を参照するためにグローバルアドレス用シンボルを参照するコード（ｆ；＝ＧＹ）を生成する。
【００２０】
上記によれば、単一のＣＰＵでのみ実行される関数による変数の参照にはローカルアドレスを用いて当該ＣＰＵコア内部で高速に参照を行うことができる。複数のＣＰＵで実行される関数による変数の参照にはグローバルアドレスを用いるから、自らのＣＰＵコア内部の参照の場合には当該ＣＰＵコアから出力されたグローバルアドレス信号が当該ＣＰＵコアの内部にルーティングされて参照が行われる。自らのＣＰＵコア外部の参照の場合には当該ＣＰＵコアから出力されたグローバルアドレス信号が別のＣＰＵコアの内部にルーティングされて参照が行われる。
【００２１】
〔３〕＜単一ＣＰＵによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数のＣＰＵで実行される関数の場合には実行するＣＰＵに応じて変数の参照シンボルを指示＞
項１のロードモジュール生成方法における前記コンパイル処理において、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第１のコード（図５のｇ；＝ＬＹ）を生成し、複数のＣＰＵで実行される可能性のある関数の場合には関数を実行するＣＰＵと参照する変数の所在に応じてローカルアドレス用シンボルとグローバルアドレス用シンボルとの参照を選択する第２のコード（図５のｆ；ｉｆ(ｃｐｕ＝＝２）＝０ｘ０ａａ，ｅｌｓｅ＝ＧＹ）を生成する。
【００２２】
これによれば、複数のＣＰＵで実行される可能性のある関数に関しても一つのコード内でローカルアドレスを用いる変数参照かグローバルアドレスを用いた変数参照かを選択することができるから、参照主体になるＣＰＵの種別判定処理に要する時間が、ＣＰＵコアから出力されたグローバルアドレス信号が当該ＣＰＵコアの内部にルーティングされるまでの時間に比べて短ければ、複数のＣＰＵで実行される可能性のある関数による変数の参照をさらに高速化することができる。
【００２３】
〔４〕＜ローカルアドレス用シンボルを用いた参照を行うコード、グローバルアドレス用シンボルを用いた参照を行うコード、及び何れのコードを用いるかの判定文を含む第２のコード＞
項３のロードモジュール生成方法において、前記第２のコードは、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のＣＰＵで実行されるか否かを判定する文、上記関数が上記特定のＣＰＵで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む。
【００２４】
これによれば、簡単なコード記述に基づいて項３の作用効果を得ることができる。
【００２５】
〔５〕＜pragma文による指示情報＞
項１乃至４の何れかのロードモジュール生成方法において、前記指示情報は、Ｃ言語におけるpragma文で指定される情報である。
【００２６】
これによれば、Ｃ言語によるソースプログラムに前記指示情報を容易に付随させることができる。
【００２７】
〔６〕＜単一ＣＰＵによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数ＣＰＵによる同一実行関数からの変数の参照にはグローバルアドレス用シンボルを付与して、複数ＣＰＵコアに共通なロードモジュールを生成＞
本発明の別の形態に係るロードモジュール生成方法は、項１と同様に、ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成する方法である。特にこの方法は、入力処理、コード生成処理、アドレス解決処理、及びアドレス生成処理を含む。入力処理は、あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、および、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力する処理である。コード生成処理は、前記入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成する処理である。アドレス解決処理は、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決する処理である。アドレス生成処理は、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルに対応するアドレスを用いるコード（図４のｇ；＝０ｘ０ａａ）を生成し、複数のＣＰＵで実行される可能性のある関数において変数を参照する場合はグローバルアドレス用シンボルに対応するアドレスを用いるコード（図４のｆ；＝０ｘ２ａａ）を生成する処理である。
【００２８】
これによれば、項１及び項２と同様の作用効果を得る。
【００２９】
〔７〕＜単一ＣＰＵによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数のＣＰＵで実行される関数の場合には実行するＣＰＵに応じて変数の参照シンボルを指示して、複数ＣＰＵコアに共通なロードモジュールを生成＞
本発明の更に別の実施の形態に係るロードモジュール生成方法は、項１と同様に、ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュールをコンピュータのデータ処理によって生成する方法である。特にこの方法は、入力処理、コード生成処理、アドレス解決処理、及びアドレス生成処理を含む。入力処理は、あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、および、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力する処理である。コード生成処理は、前記入力した情報に基づいて、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第１のコード（図５のｇ；＝ＬＹ）を生成し、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のＣＰＵで実行されるか否かを判定する文、上記関数が上記特定のＣＰＵで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む第２のコード（図５のｆ；ｉｆ（ｃｐｕ＝＝２）＝ＬＹ，ｅｌｓｅ＝ＧＹ）を生成する処理である。アドレス解決処理は、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決する処理である。アドレス生成処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルには対応するグローバルアドレスを用いるコードを生成し、ローカルアドレス用シンボルには対応するローカルアドレスを用いるコードを生成する処理である。
【００３０】
これによれば、項１、項３及び項４と同様の作用効果を得る。
【００３１】
〔８〕＜複数ＣＰＵコアに共通なロードモジュールの生成プログラム＞
本発明の更に別の実施の形態に係るロードモジュール生成プログラムは、ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステムによって実行されるプログラムのロードモジュール（１５１，１５１Ａ）を生成するための、コンピュータにより実行可能なロードモジュール生成プログラムである。このプログラムはコンパイル処理（１２０，１２０Ａ）とリンク処理（１３０）を制御する。コンパイル処理は、あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、及び、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコード（１４１，１４１Ａ）を生成する処理である。リンク処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のＣＰＵコアに共通なロードモジュール（１５１，１５１Ａ）を生成する処理である。
【００３２】
このロードモジュール生成プログラムを用いることにより、項１の方法を容易に実現することができる。
【００３３】
〔９〕＜単一ＣＰＵによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数ＣＰＵによる同一実行関数からの変数の参照にはグローバルアドレス用シンボルを付与＞
項８のロードモジュール生成プログラムが制御する前記コンパイル処理において、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照するコード（図４のｇ；＝ＬＹ）を生成し、複数のＣＰＵで実行される関数の場合にはその変数を参照するためにグローバルアドレス用シンボルを参照するコード（図４のｆ；＝ＧＹ）を生成する制御を行う。
【００３４】
このロードモジュール生成プログラムを用いることにより、項２の方法を容易に実現することができる。
【００３５】
〔１０〕＜単一ＣＰＵによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数のＣＰＵで実行される関数の場合には実行するＣＰＵに応じて変数の参照シンボルを指示＞
項８のロードモジュール生成プログラムが制御する前記コンパイル処理において、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第１のコード（図５のｇ；＝ＬＹ）を生成し、複数のＣＰＵで実行される可能性のある関数の場合には関数を実行するＣＰＵと参照する変数の所在に応じてローカルアドレス用シンボルとグローバルアドレス用シンボルとの参照を選択する第２のコード（図５のｆ；ｉｆ（ｃｐｕ＝＝２）＝ＬＹ，ｅｌｓｅ＝ＧＹ）を生成する制御を行う。
【００３６】
このロードモジュール生成プログラムを用いることにより、項３の方法を容易に実現することができる。
【００３７】
〔１１〕＜ローカルアドレス用シンボルを用いた参照を行うコード、グローバルアドレス用シンボルを用いた参照を行うコード、及び何れのコードを用いるかの判定文を含む第２のオブジェクトコード＞
項１０のロードモジュール生成プログラムにおいて、前記第２のコードは、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のＣＰＵで実行されるか否かを判定する文、上記関数が上記特定のＣＰＵで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む。
【００３８】
これによれば、簡単なコード記述に基づいて項１０の作用効果を得ることができる。
【００３９】
〔１２〕＜単一ＣＰＵによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数ＣＰＵによる同一実行関数からの変数の参照にはグローバルアドレス用シンボルを付与して、複数ＣＰＵコアに共通なロードモジュールの生成を制御するプログラム＞
本発明の別の形態に係るロードモジュール生成プログラムは、項８と同様に、ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステム（２）によって実行されるプログラムのロードモジュール（１５１）をコンピュータ（１）のデータ処理によって生成するための、コンピュータにより実行可能なプログラムである。このプログラムは入力処理（１２１）、コード生成処理（１２２、１２３）、アドレス解決処理（１３１）、及びアドレス生成処理（１３２）を制御する。入力処理は、あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、および、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラム（１４０）を入力する処理である。コード生成処理は、前記入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコード（１４１）を生成する処理である。アドレス解決処理は、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決する処理である。アドレス生成処理は、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルに対応するアドレスを用いるコード（図４のｇ；＝０ｘ０ａａ）を生成し、複数のＣＰＵで実行される可能性のある関数において変数を参照する場合はグローバルアドレス用シンボルに対応するアドレスを用いるコード（図４のｆ；＝０ｘ２ａａ）を生成する処理である。
【００４０】
これによれば、項８及び項９と同様の作用効果を得る。
【００４１】
〔１３〕＜単一ＣＰＵによる自ローカルメモリ上変数の参照にはローカルアドレス用シンボルを、複数のＣＰＵで実行される関数の場合には実行するＣＰＵに応じて変数の参照シンボルを指示して、複数ＣＰＵコアに共通なロードモジュールの生成を制御するプログラム＞
本発明の別の形態に係るロードモジュール生成プログラムは、項８と同様に、ＣＰＵとローカルメモリをそれぞれが有する複数個のＣＰＵコアの内の一のＣＰＵコアのＣＰＵが他のＣＰＵコア内のローカルメモリを参照するためのグローバルアドレスと、ＣＰＵが自らのＣＰＵコア内のローカルメモリを参照するためのローカルアドレスと、を用いるマルチＣＰＵコアシステム（２）によって実行されるプログラムのロードモジュール（１５１Ａ）をコンピュータ（１）のデータ処理によって生成するための、コンピュータにより実行可能なプログラムである。このプログラムは入力処理（１２１）、コード生成処理、アドレス解決処理（１３１）、及びアドレス生成処理（１３２）を制御する。入力処理は、あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、および、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラム（１４０）を入力する処理である。コード生成処理は、前記入力した情報に基づいて、単一のＣＰＵでのみ実行される関数においてそのＣＰＵコア内のローカルメモリ上の変数を参照する場合はローカルアドレス用シンボルを参照する第１のコード（図５のｇ；＝ＬＹ）を生成し、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のＣＰＵで実行されるか否かを判定する文、上記関数が上記特定のＣＰＵで実行される場合にはローカルアドレスに対応するローカルアドレス用シンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するグローバルアドレス用シンボルを用いた参照を行うコードを含む第２のコード（図５のｆ；ｉｆ（ｃｐｕ＝＝２）＝ＬＹ，ｅｌｓｅ＝ＧＹ）を生成する処理である。アドレス解決処理は、前記コード生成処理で生成された前記グローバルアドレス用シンボルに対してアドレスを解決し、この解決されたアドレスに基づいてローカルアドレス用シンボルのアドレスを解決する処理である。アドレス生成処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルには対応するグローバルアドレスを用いるコードを生成し、ローカルアドレス用シンボルには対応するローカルアドレスを用いるコードを生成する処理である。
【００４２】
これによれば、項８、項１０及び項１１と同様の作用効果を得る。
【００４３】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００４４】
〔実施の形態１〕
《ロードモジュールの開発システム》
図１にはマルチＣＰＵ（中央処理装置）コアシステムとしてのマイクロコンピュータによって実行されるプログラムのロードモジュールを生成する開発システムの概略が例示される。
【００４５】
１はロードモジュールの生成に用いるコンピュータシステムとしてのパーソナルコンピュータ（ＰＣ）システム、２はＰＣシステム１で生成されたロードモジュールを実行するマイクロコンピュータ、３はロードモジュールをマイクロコンピュータ２に書込むＰＲＯＭライタである。ロードモジュールの書込みはＰＲＯＭライタ３を用いる構成に限定されず、例えばマイクロコンピュータ２が図示を省略するネットワークを介してＰＣシステム１からロードモジュールをダウンロードし、ダウンロードしたロードモジュールを自らの書込み制御プログラムを用いて自立的に書き込むことも可能である。ＰＣシステム１に変えてエンジニアリングワークステーションなどを採用することも可能である。
【００４６】
ＰＣシステム１には、例えば表示装置として代表的に示されたディスプレイ１００、入力装置として代表的に示されたキーボード１０１、及びＰＣ本体１０２が設けられる。ＰＣ本体１０２は、プロセッサ、アクセラレータ及びキャッシュメモリなどを搭載したＣＰＵモジュール（ＣＰＵＭ）１１０、補助記憶装置として代表的に示されたハードディスクドライブ（ＨＤＤ）１１１、ＲＡＭ１１２、並びに図示を省略する外部入出力回路などの回路ユニットがバス１１３を介してインタフェース可能に構成される。
【００４７】
ＲＡＭ１１２にはソースプログラムからマイクロコンピュータ２のロードモジュール２０６を生成するためのプログラムなどが格納される。ＣＰＵモジュールはキーボードなどから入力される指示にしたがって、ＲＡＭのプログラムを実行する。その詳細は後述する。
【００４８】
《マイクロコンピュータ》
図１に示されるマイクロコンピュータ２は、複数個のＣＰＵコアとして、例えば２個の第１ＣＰＵコア２０１と第２ＣＰＵコア２０２とを有し、それらはバス２０３に接続される。バス２０３には例えばＲＡＭ２０４及びＲＯＭ２０５などが更に接続される。例えばＲＯＭ２０５にはロードモジュール２０６が書き込まれる。第１ＣＰＵコア２０１はＣＰＵ（ＣＰＵ＿１）２１１とローカルメモリ（ＬＭ＿１）２１２を有し、第２ＣＰＵコア２０２はＣＰＵ（ＣＰＵ＿２）２２１とローカルメモリ（ＬＭ＿２）２２２を有する。ＣＰＵ２１１，２２１は、ＲＯＭ２０４が保有するオペレーティングシステムにしたがって、タスクスケジューリング、メモリ管理及び割込み制御などのシステム制御を行う。更に、ＣＰＵ２１１，２２１はＲＯＭ２０４が保有するロードモジュール２０６に含まれる命令コードを夫々の命令実行順にフェッチして実行する。
【００４９】
夫々のＣＰＵ２１１，２２１は自らのＣＰＵコア２０１，２０２内のローカルメモリ２１２，２２２を参照するのにグローバルアドレスとローカルアドレスとを用いることができる。当然、夫々のＣＰＵ２１１，２２１は自らのＣＰＵコア２０１，２０２の外部にあるローカルメモリ２１２，２２２を参照するにはグローバルアドレスを用いる。
【００５０】
図２にはローカルメモリ２１２，２２２に対するそのようなアドレスマップが例示される。双方のローカルメモリ（ＬＭ＿１，ＬＭ＿２）２１２，２２２に共通なローカルアドレスＬＡは０ｘ０００≦ＬＡ＜０ｘ１００に割り当てられ、ローカルメモリ（ＬＭ＿１）２１２のグローバルアドレスＧＡ＿１は０ｘ１００≦ＧＡ＿１＜０ｘ２００に割り当てられ、ローカルメモリ（ＬＭ＿２）２２２のグローバルアドレスＧＡ＿２は０ｘ２００≦ＧＡ＿２＜０ｘ３００に割り当てられる。
【００５１】
図２のアドレスマップから明らかなように、ＣＰＵ（ＣＰＵ＿１）２１１からローカルメモリ（ＬＭ＿１）２１２をアクセスするとき、及び、ＣＰＵ（ＣＰＵ＿２）２２１からローカルメモリ（ＬＭ＿２）２２２をアクセスするときに、それぞれがローカルアドレスを用いる。即ち、ローカルアドレスはローカルメモリに対するアクセスが夫々のＣＰＵコア内に閉じている場合に用いられる。したがって、ＣＰＵ（ＣＰＵ＿１）２１１からローカルメモリ（ＬＭ＿１）２１２をアクセスするとき、ローカルメモリ（ＬＭ＿１）２１２の先頭アドレスは０ｘ０００となり、同様に、ＣＰＵ（ＣＰＵ＿２）２２１からローカルメモリ（ＬＭ＿２）２２２をアクセスするとき、ローカルメモリ（ＬＭ＿２）２２２の先頭アドレスも０ｘ０００となる。
【００５２】
ＣＰＵ２１１，２２１はグローバルアドレスを用いたアクセスを行う場合にはそのアドレス信号をバス２０３に出力する。出力されたアドレス信号はバス２０３のルータによって、それが示すアドレスの回路モジュールに向けてルーティングされる。例えば、第１ＣＰＵ２１１がローカルメモリ（ＬＭ＿１）２１１をアクセスするとき、そのグローバルアドレスを用いると、そのローカルアドレスを用いる場合に比べてアクセスに時間がかかる。これは、ＣＰＵがグローバルアドレスを用いて他のＣＰＵコア内のローカルメモリをアクセスする場合と同様である。
【００５３】
図３にはローカルアドレスとグローバルアドレスによるローカルメモリのアクセス経路が例示される。第１ＣＰＵコア２１０及び第２ＣＰＵコア２０２の内部にそれぞれ示される経路（ａ）はローカルアドレスによるアクセス経路を示す。ＣＰＵ２１１，２２１はローカルアドレスを用いたアクセスであることを例えば、アドレス信号０ｘ０００の最初の桁が０であることから判別する。
【００５４】
経路（ｂ）はＣＰＵ（ＣＰＵ＿１）２１１がグローバルアドレスを使ってローカルメモリ（ＬＭ＿１）２１２をアクセスするときの経路を示す。ＣＰＵ（ＣＰＵ＿１）２１１は例えばアクセスアドレス０ｘ１００の最初の桁が０でないことから外部のバス２０３に対してアクセス要求を出力する。バス２０３のルータはそのアドレスの最初の桁が１であることから、当該アクセス要求を第１ＣＰＵコア２０１内のローカルメモリ（ＬＭ＿１）２１２に向けてルーティングし、これをＣＰＵ（ＣＰＵ＿１）２１１が受け付けて自らのローカルメモリ（ＬＭ＿１）２１２をアクセスする。この場合は経路（ａ）に比べてアクセス経路が長くなるので、アクセスに時間がかかる。
【００５５】
経路（ｃ）はＣＰＵ（ＣＰＵ＿１）２１１がグローバルアドレスを使って第２ＣＰＵコア２０２内のローカルメモリ（ＬＭ＿２）２２２をアクセスするときの経路を示す。ＣＰＵ（ＣＰＵ＿１）２１１は例えばアクセスアドレス０ｘ２００の最初の桁が０でないことから外部のバス２０３に対してアクセス要求を出力する。バス２０３のルータはそのアドレスの最初の桁が２であることから、当該アクセス要求を第２のＣＰＵコア２０１内のローカルメモリ（ＬＭ＿２）２２２に向けてルーティングし、これをＣＰＵ（ＣＰＵ＿２）２２１が受け付けて自らのローカルメモリ（ＬＭ＿２）２２２をアクセスする。この場合も経路（ａ）に比べてアクセス経路が長くなるので、アクセスに時間がかかるが、これはＣＰＵ（ＣＰＵ＿１）２１１が別の第２のＣＰＵコア内のローカルメモリ（ＬＭ＿２）２２２をアクセスするために必ず必要とされる時間である。
【００５６】
《ロードモジュール生成処理》
ロードモジュールを生成するプログラムとして例えば図１のＲＡＭ１１２はコンパイラ１２０とリンカ１３０を格納する。図１の表記では便宜上コンパイラ１２０やリンカ１３０が必要な情報を読み込んでコードを生成するかのように記載されているが、実際にはＣＰＵモジュール１１０がコンパイラ１２０及びリンカ１３０を実行しながら、必要な情報を読み込んでコードを生成するものと理解されたい。
【００５７】
夫々の処理の詳細は後述するものとして、ＣＰＵモジュール１１０は前記コンパイラ１２０を実行することにより、データ・関数情報入力処理１２１、ＭＡＳ出力処理１２２、及びＭＡＳ参照コード生成処理１２３などを制御して、データ・関数情報付きソースプログラム１４０からＭＡＳ及びＭＡＳ参照コード入りオブジェクトコード１４１を生成する。ＭＡＳは多重アドレス付けシンボル（Multiply Addressed Symbol）を表す。また、ＣＰＵモジュール１１０は前記リンカ１３０を実行することにより、アドレスマップ情報１５０などを参照しながらローカルアドレス解決処理１３１及びＭＡＳアドレス生成処理１３２などを制御して、ＭＡＳ及びＭＡＳ参照コード入りオブジェクトコード１４１からロードモジュール１５１を生成する。生成されたロードモジュール１５１はＲＯＭ書込みツール１５２の制御に従ってＲＯＭライタ３でマイクロコンピュータ２のＲＯＭ２０４に書き込まれる。
【００５８】
図４にはロードモジュールを生成する処理フローが例示される。
【００５９】
コンパイルの対象にされるソースプログラムには、あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、および、ある関数がどのＣＰＵで実行されるかを指定した指示情報が付随される。この指示情報をここではデータ・関数情報と称し、コンパイラ１２０はデータ・関数情報付きソースプログラム１４０を入力する。図４の例では、データ・関数情報付きソースプログラム１４０は、２つのpragma文と２つの関数Ｆ，Ｇから構成される。pragma文とはコンパイラに付加情報を与えるためのＣ言語に備わる文である。
【００６０】
ここで、図４に示された「#pragma Y in LM2」は、変数Ｙがローカルメモリ（ＬＭ＿２）２２２に配置されることを表す。
【００６１】
また、「pragma G exec on CPU2」は、関数ＧがＣＰＵ（ＣＰＵ＿２）２０２で実行されることを表す。
【００６２】
pragma文の下に示される２つの図形は各々、関数ＦとＧを模式的に表現したものである。２つの矩形から構成される図形は、図４の凡例に示されるように、左側が関数名を、右側が関数本体に書かれたコードの一部を表す。関数ＦとＧにおいて「=Y」の記述は、関数ＦとＧの中に変数Ｙを参照する文が含まれることを表す。
【００６３】
コンパイラ１２０を用いたデータ・関数情報入力処理１２１では、データ・関数情報付きのソースプログラムにおける２つのpragma文を入力して解釈し、「変数Ｙがローカルメモリ（ＬＭ＿２）２２２に配置されること」及び「関数Ｇが第2ＣＰＵ（ＣＰＵ＿２）２０２で実行されること」を示す情報を取り込む。
【００６４】
ＭＡＳ出力処理１２２では、変数Ｙに対する２つのシンボル情報「ＧＹ」と「ＬＹ」をオブジェクトコードに出力する。ここで、ＧＹはグローバルアドレスに対応するシンボルであり、ＬＹはローカルアドレスに対応するシンボルを表す。
【００６５】
ＭＡＳ参照コード生成処理１２３では関数Ｆにおける変数Ｙの参照に対して、Ｙがローカルメモリ（ＬＭ＿２）２２２上に配置される情報はあるが、関数がどのＣＰＵで実行されるかという情報がないことから、関数Ｆについてはグローバルアドレスに対応するシンボルＧＹを用いた参照を行うと判断し、グローバルアドレス用シンボルＧＹを用いたコードｆをオブジェクトコード１４１中に出力する。コードｆは関数Ｆについてコンパイラ１２０でコンパイルされたコードを意味する。
【００６６】
また、ＭＡＳ参照コード生成処理では、関数Ｇにおける変数Ｙの参照に対して、変数Ｙがローカルメモリ（ＬＭ＿２）２２２に配置される情報と関数Ｇが第2ＣＰＵＹ（ＣＰＵ＿２）２２１で実行されるという情報から、関数Ｇについてはローカルアドレスに対応するローカルアドレス用シンボルＬＹを用いた参照を行うと判断し、ローカルアドレス用シンボルＬＹを用いたコードｇをオブジェクトコード１４１中に出力する。コードｇは関数Ｇについてコンパイラ１２０でコンパイルされたコードを意味する。
【００６７】
その結果として、図４のＭＡＳ及びＭＡＳ参照コード入りオブジェクトコードには、変数Ｙのグローバルアドレス用シンボルＧＹ及び変数Ｙのローカルアドレス用真吾ルＬＹを含むシンボル情報テーブルと、関数Ｆ，Ｇに対するオブジェクトコードｆ、ｇが示されている。
【００６８】
リンカ１３０による処理では、前記ＭＡＳ及びＳＡＭ参照コード入りオブジェクトコード１４１とアドレスマップ情報１５０を入力して、まず、リンカ１３０の既存技術によってグローバルアドレス変数に対するアドレスを解決する。アドレスマップ情報は図２に例示した情報に従って、例えば、ローカルメモリの番号（ローカルメモリＬＭ＿１の番号は「１」、ローカルメモリＬＭ＿２の番号は「２」）からグローバルアドレスの最初の桁番号（ローカルメモリＬＭ＿１におけるグローバルアドレスの最初の桁番号は「１」、ローカルメモリＬＭ＿２におけるグローバルアドレスの最初の桁番号は「２」）を得るための方法を特定する情報、即ち、ＬＭ＿ｎに対してアドレスの最初の桁番号がｎであるという情報と、グローバルアドレスからローカルアドレスを得るための方法を特定するための情報、即ち、アドレスの最初の桁番号と「０ｘ０」の論理積を取るという情報とを含む。
【００６９】
例えば、先ず、変数Ｙがローカルメモリ（ＬＭ＿２）２２２に配置されることからＹのグローバルアドレス用シンボルＧＹのアドレスは「０ｘ２ａａ」と決定することによって、グローバルアドレス用シンボルＧＹに対応するグローバルアドレス変数に対するアドレスを解決する。
【００７０】
次に、ローカルアドレス解決処理１３１ではグローバルアドレス用シンボルＧＹのアドレス「０ｘ２ａａ］と上記アドレスマップ情報１５０から、Ｙのローカルアドレス用シンボルＬＹのアドレスを、「０ｘ０ａａ」と決定する。
【００７１】
ＭＡＳ用アドレス生成処理１３２では、ローカルアドレス用シンボルに対してはローカルアドレスを用い、グローバルアドレス用シンボルに対してはグローバルアドレスを用いるコードを出力する。これにより、例えば、オブジェクトコード１４１中のグローバルアドレス用シンボルＧＹに対する参照に対してアドレス「０ｘ２ａａ」を、ローカルアドレス用シンボルＬＹに対する参照に対してアドレス「０ｘ０ａａ」を用いるコードを出力する。
【００７２】
この結果、図４に例示されるコア１及びコア２共用ロードモジュール１５１を得る。コア１及びコア２共用ロードモジュール１５１は、アドレス解決された後の２つの関数ｆとｇから構成される。ｆとｇは、実際には、各々、関数ＦとＧのアドレスを表すことになる。関数ｆと関数ｇ本体の中に現れるアドレス「０ｘ２ａａ」と「０ｘ０ａａ」は各々、変数Ｙに対するグローバルアドレスとローカルアドレスを表す。変数Ｙはローカルメモリ（ＬＭ＿２）２２２に配置されるので、第２ＣＰＵ（ＣＰＵ＿２）２２１で実行される関数ｇからはローカルアドレス参照になり（最初の桁が０になる）、関数ｆは第１ＣＰＵ（ＣＰＵ＿１）２１１と第２ＣＰＵ（ＣＰＵ＿２）２２１のどちらのＣＰＵで実行されるか不明なため、ローカルメモリ（ＬＭ＿２）２２２上のＹに対するアドレスはグローバルアドレス（最初の桁が２）で指定されている。
【００７３】
実施の形態１によるロードモジュールの生成方法によれば、全てのＣＰＵコアで実行するソースプログラムにおいて、関数で参照するデータ即ち変数がどのＣＰＵコア内のローカルメモリに配置されるか、及び、ある関数が一つのＣＰＵ上でのみ実行される場合はそれがどのＣＰＵ上で実行されるかを示す情報（データ・関数情報）をソースプログラムに追加した。コンパイラ１２０はこの情報を入力し、関数毎にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、同じ変数のデータに対してリンカが上記互いに関連する２種類の異なるアドレスを出力することが可能となるように、２種類のシンボル情報ＧＹ，ＬＹと各々を参照するオブジェクトコード（ＭＡＳ及びＭＡＳ参照コード入りオブジェクトコード）１４１を生成するようにした。リンカ１３０は既存の技術によって、グローバルアドレスを持つシンボルに対するアドレスを解決し、上記２種類の互いに異なるアドレス間の関係をアドレスマップ情報１５０から読み取ることによって、ローカルアドレスを持つシンボルＬＹに対するアドレスを解決するようにした。更に、グローバルアドレスを持つシンボルＧＹとローカルアドレスを持つシンボルＬＹに対して、各々、ローカルアドレス、グローバルアドレスを出力することによって、第１のＣＰＵコア２０２と第２のＣＰＵコア２０１に共通なロードモジュール１５１を生成するようにした。
【００７４】
これらによって、あるＣＰＵがそのＣＰＵコア内のローカルメモリ上のあるデータを参照する場合が判定できるので、ローカルアドレスを使った最適コードを出力することができる。先に本発明者が検討したように、アドレス解決を全てグローバルアドレスで行っておき、ローカルメモリ上のあるデータを参照する場合には命令実行時にグローバルアドレスをローカルアドレスに変換する方法に比べて、参照の高速化を実現することができる。要するに、ローカルアドレスを用いることによる処理の高速性が犠牲にならない。
【００７５】
また、ある関数が複数のＣＰＵコア上で実行されることが判定できるので、第１ＣＰＵ（ＣＰＵ＿１）２１１上でも第２ＣＰＵ（ＣＰＵ＿２）２２２上でも実行できるようなグローバルアドレスを用いたコードを出力することができ、従来技術のように同じ関数に対してＣＰＵ毎に関数のコピーを作成する必要が無くなるので、使用メモリ量を削減することができる。
【００７６】
《ロードモジュール生成プログラム》
上記ロードモジュールの生成方法はＰＣシステム１のようなコンピュータにロードモジュール生成プログラムを実行させることによって実現される。そのようなプログラムは、前記コンパイラ１２０によるコンパイル処理とリンカ１３０によるリンク処理を制御する。コンパイル処理は、あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、及び、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定し、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成する処理を行えばよく、例えば前記データ・関数情報入力処理１２１、ＭＡＳ出力処理１２２、及びＭＡＳ参照コード生成処理１２３によって構成すればよい。リンク処理は、前記オブジェクトコードに対してグローバルアドレス用シンボルにはグローバルアドレスを割り当て、ローカルアドレス用シンボルにはローカルアドレスを割り当てて、複数のＣＰＵコアに共通なロードモジュールを生成する処理を行えばよく、例えば既存のグローバルアドレス解決処理、ローカルアドレス解決処理１３１、及びＭＡＳ用アドレス生成処理によって構成すればよい。
【００７７】
このロードモジュール生成プログラムを用いることにより、実施の形態１に係るロードモジュール生成方法を容易に実現することができる。
【００７８】
〔実施の形態２〕
図５にはロードモジュールを生成する別の処理フローが例示される。ここでは特に図示はしないが図１のＰＣシステム１と類似のコンピュータを用いてマイクロコンピュータ２のロードモジュールを生成する処理について説明する。図１及び図４との相違点はコンパイラ１２０Ａによる一部の処理である。その結果として、リンカ１３０による処理結果が相違される。以下では、図１及び図４との相違点を中心に処理の詳細を説明する。
【００７９】
コンパイラ１２０Ａは実施の形態１と同様のデータ・関数情報入力処理及びＭＡＳ出力処理を行うが、ＭＡＳ参照コード生成処理では、関数Ｆにおける変数Ｙの参照に対して、変数Ｙがローカルメモリ（ＬＭ＿２）２２２上に配置される情報ではあるが、関数Ｆが第１ＣＰＵ（ＣＰＵ＿１）２１１と第２ＣＰＵ（ＣＰＵ＿２）２２１のどのＣＰＵで実行されるかという情報がないことから、関数Ｆが第２ＣＰＵ（ＣＰＵ＿２）２２１で実行される場合と他のＣＰＵで実行される場合に分けたコードを出力する。即ち、関数Ｆが第２ＣＰＵ（ＣＰＵ＿２）２２１で実行されるか否かを判定する文（ｉｆ（ｃｐｕ＝＝２）、関数Ｆが第２ＣＰＵ（ＣＰＵ＿２）２２１で実行される場合にはローカルアドレスに対応するシンボルＬＹを用いた参照を行うコード（＝ＬＹ）、関数Ｆがその他のＣＰＵで実行される場合にはグローバルアドレスに対応するシンボルＧＹを用いた参照を行うコード（＝ＧＹ）、を含むコードｆをオブジェクトコード１４１Ａ中に出力する。一方、ＭＡＳ参照コード出力部は関数Ｇにおける変数Ｙの参照に対して、変数Ｙがローカルメモリ（ＬＭ＿２）２２２上に配置される情報と関数Ｇが第２ＣＰＵ（ＣＰＵ＿２）２２１で実行されるという情報から、ローカルアドレスに対応するシンボルＬＹを用いた参照を行うと判断し、シンボルＬＹを用いた参照コード（＝ＬＹ）を含むコードｇをオブジェクトコード１４１Ａ中に出力する。
【００８０】
リンカ１３０による処理は、実施の形態１と同様であるが、入力として図５の前記ＭＡＳ及びＳＡＭ参照コード入りオブジェクトコード１４１Ａと前述のアドレスマップ情報１５０を入力して、まず、リンカ１３０の既存技術によってグローバルアドレス変数に対するアドレスを解決する。アドレスマップ情報１５０の内容は実施の形態１と同じである。このとき、前記ＭＡＳ及びＳＡＭ参照コード入りオブジェクトコード１４１Ａに対するＭＡＳ用アドレス生成処理では、例えば、先ず、変数Ｙがローカルメモリ（ＬＭ＿２）２２２に配置されることからＹのグローバルアドレス用シンボルＧＹのアドレスは「０ｘ２ａａ」と決定することによって、グローバルアドレス用シンボルＧＹに対応するグローバルアドレス変数に対するアドレスを解決する。次に、ローカルアドレス解決処理ではグローバルアドレス用シンボルＧＹのアドレス「０ｘ２ａａ］と上記アドレスマップ情報１５０から、Ｙのローカルアドレス用シンボルＬＹのアドレスを、「０ｘ０ａａ」と決定する。ＭＡＳ用アドレス生成処理１３２では、ローカルアドレス用シンボルに対してはローカルアドレスを用い、グローバルアドレス用シンボルに対してはグローバルアドレスを用いるコードを出力する。これにより、例えば、オブジェクトコード１４１中のグローバルアドレス用シンボルＧＹに対する参照に対してアドレス「０ｘ２ａａ」を、ローカルアドレス用シンボルＬＹに対する参照に対してアドレス「０ｘ０ａａ」を用いるコードを出力する。
【００８１】
この結果、ＭＡＳ及びＭＡＳ参照コード入りオブジェクトコード１４１Ａの記述にしたがって、図５に例示されるコア１及びコア２共用ロードモジュール１５１Ａを得る。コア１及びコア２共用ロードモジュール１５１Ａは、アドレス解決された後の２つの関数ｆとｇから構成される。ｆとｇは、実際には、各々、関数ＦとＧのアドレスを表すことになる。関数ｆと関数ｇ本体の中に現れるアドレス「０ｘ２ａａ」と「０ｘ０ａａ」は各々、変数Ｙに対するグローバルアドレスとローカルアドレスを表す。変数Ｙはローカルメモリ（ＬＭ＿２）２２２に配置されるので、第２ＣＰＵ（ＣＰＵ＿２）２２１で実行される関数ｇからはローカルアドレス「０ｘ０ａａ」の参照になる。さらに、関数ｆを実行するＣＰＵが第２ＣＰＵ（ＣＰＵ＿２）２２１か否かを判するコード、第２ＣＰＵ（ＣＰＵ＿２）２２１の場合にはローカルアドレス「０ｘ０ａａ」の参照、それ以外のＣＰＵの場合にはグローバルアドレス「０ｘ２ａａ」の参照を示すコードが生成される。
【００８２】
実施の形態２では、ＭＡＳ参照コード生成処理により、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合に、上記関数が上記特定のＣＰＵで実行されるか否かを判定する文、上記関数が上記特定のＣＰＵで実行される場合にはローカルアドレスに対応するシンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するシンボルを用いた参照を行うコードを、オブジェクトコードに出力するコンパイラ１２０Ａを採用した。したがって、ＭＡＳ参照コード生成処理において関数Ｆを実行するＣＰＵの番号に応じてローカルメモリアクセスが自ＣＰＵコア内のアクセスか否かに応じた条件文にてＭＡＳ及びＭＡＳ参照コード入りオブジェクトコード１４１Ａを生成するから、関数Ｆを実行するＣＰＵの番号をプログラム実行中に判定し、ＣＰＵ番号が２の場合には自ＣＰＵコア内のローカルメモリを高速に参照できる。これにより、判定処理と自ＣＰＵコア内ローカルメモリの参照にかかる合計時間が他ＣＰＵコア内のローカルメモリを参照する時間よりも少なければ、プログラムの実行を実施の形態１よりも更に高速化することができる。
【００８３】
《ロードモジュール生成プログラム》
図５に基づいて説明した上記ロードモジュールの生成方法はＰＣシステム１のようなコンピュータにロードモジュール生成プログラムを実行させることによって実現されることは言うまでもない。そのようなプログラムは、前記コンパイラ１２０Ａによるコンパイル処理とリンカ１３０によるリンク処理を制御する。コンパイル処理は、あるデータをどのＣＰＵコア内のローカルメモリ上に配置するか、及び、ある関数がどのＣＰＵで実行されるかを指定した指示情報を有するソースプログラムを入力し、入力した情報に基づいて、関数毎にその変数の参照にグローバルアドレスを使うか、ローカルアドレスを使うかを判定する。コンパイル処理は、その判定結果に応じてローカルアドレス用シンボル及びグローバルアドレス用シンボルの内の少なくとも一つを参照するオブジェクトコードを生成する処理を行えばよい。例えば実施の形態１と同様の前記データ・関数情報入力処理１２１及びＭＡＳ出力処理１２２、並びに実施の形態２特有のＭＡＳ参照コード生成処理によって構成すればよい。このＭＡＳ参照コード生成処理では、前述のとおり、複数のＣＰＵで実行される可能性のある関数において特定のＣＰＵコア内のローカルメモリ上のデータを参照する場合にその関数が上記特定のＣＰＵで実行されるか否かを判定するコード、当該関数が特定のＣＰＵで実行される場合にはローカルアドレスに対応するシンボルを用いた参照を行うコード、及び上記関数がその他のＣＰＵで実行される場合にはグローバルアドレスに対応するシンボルを用いた参照を行うコード、をオブジェクトコードとして生成すればよい。リンク処理は上述のとおり、例えば既存のグローバルアドレス解決処理、ローカルアドレス解決処理、及びＭＡＳ用アドレス生成処理によって構成すればよい。
【００８４】
このロードモジュール生成プログラムを用いることにより、実施の形態２に係るロードモジュール生成方法を容易に実現することができる。
【００８５】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８６】
例えば、ロードモジュールが適用されるマルチＣＰＵコアシステムはＣＰＵコアの数が２個に限定されず、３個以上であってよいことは言うまでもない。マイクロコンピュータ２に代表されるマルチＣＰＵコアシステム、及びロードモジュールの生成を制御するためのＰＣ本体１に代表されるコンピュータの内部構成は図１の説明に制限されず適宜変更可能である。
【符号の説明】
【００８７】
１  ＰＣシステム
２  マイクロコンピュータ
１０２  ＰＣ本体
１１０  ＣＰＵモジュール（ＣＰＵＭ）
１１１  ハードディスクドライブ（ＨＤＤ）
１１２  ＲＡＭ
２０１  第１ＣＰＵコア
２０２  第２ＣＰＵコア
２０３  バス
２０４  ＲＡＭ
２０５  ＲＯＭ
２１１  ＣＰＵ（ＣＰＵ＿１）
２１２  ローカルメモリ（ＬＭ＿１）
２２１  ＣＰＵ（ＣＰＵ＿２）
２２２  ローカルメモリ（ＬＭ＿２）
１２０  コンパイラ
１３０  リンカ
１２１  データ・関数情報入力処理
１２２  ＭＡＳ出力処理
１２３  ＭＡＳ参照コード生成処理
１４０  データ・関数情報付きソースプログラム
１４１  ＭＡＳ参照コード入りオブジェクトコード
１５０  アドレスマップ情報
１３１  ローカルアドレス解決処理
１３２  ＭＡＳアドレス生成処理
１５１  ロードモジュール
【図１】
2013127703.tif 000003
【図２】
2013127703.tif 000004
【図３】
2013127703.tif 000005
【図４】
2013127703.tif 000006
【図５】
2013127703.tif 000007
【図６】
2013127703.tif 000008