JP4133107B2 - ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置 - Google Patents

ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置 Download PDF

Info

Publication number
JP4133107B2
JP4133107B2 JP2002238399A JP2002238399A JP4133107B2 JP 4133107 B2 JP4133107 B2 JP 4133107B2 JP 2002238399 A JP2002238399 A JP 2002238399A JP 2002238399 A JP2002238399 A JP 2002238399A JP 4133107 B2 JP4133107 B2 JP 4133107B2
Authority
JP
Japan
Prior art keywords
address
memory
memory area
processor
memory space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002238399A
Other languages
English (en)
Other versions
JP2004078600A (ja
Inventor
英雄 三宅
輝彦 上方
謙吾 畔上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002238399A priority Critical patent/JP4133107B2/ja
Priority to US10/603,093 priority patent/US7117315B2/en
Priority to EP03254008A priority patent/EP1376348A3/en
Publication of JP2004078600A publication Critical patent/JP2004078600A/ja
Application granted granted Critical
Publication of JP4133107B2 publication Critical patent/JP4133107B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、複数のプロセッサを搭載する計算機システムにより実行されるプログラムのロードモジュールを生成するロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置に関する。
【0002】
【従来の技術】
近年の計算機システムでは、複数のプロセッサを搭載することでシステムの処理能力を向上させるべく、「分散メモリ型マルチプロセッサ方式(Distributed−Memory Multiprocessors)」が採用されることがある。
【0003】
図1は、分散メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。図示するように、プロセッサ(PROCESSOR))101とメモリ(MEMORY)102とから構成されるPE(Processing Element:プロセッサ要素)100がn個、相互接続網(INTERCONNECTION NETWORK)103により接続されている。
【0004】
また、図2は上記システムにおけるメモリ空間の定義例を模式的に示す説明図である。図示するように個々のプロセッサ101は、同じPE100内のメモリ102だけを読み書きすることができる。
【0005】
そしてこのようなシステムにおいては、MPI(Message−Passing Interface)などのプロセッサ間通信機構を用いることで、SPMD(Single−Program,Multiple−Data)プログラミングにもとづくプログラムが実行されることが多い。
【0006】
図3は上記プログラムの一例を示す説明図である。図示するプログラムはn個のメモリ102にそれぞれ格納され、n個のプロセッサ101によりそれぞれ実行される。プログラムは同一でも、PE100のID(番号)により処理が分岐するので、n個のPE100による並列処理が実現される。
【0007】
たとえば図示するプログラムでは、「my_rank」が上記IDを示す変数であり、my_rank=0以外のPEではif以下の処理が、my_rank=0のPEではelse以下の処理が、それぞれ実行されることになる。
【0008】
また、図4は上記プログラムのロードモジュールの生成手順を示すフローチャートである。まずコンパイラにより、プログラムのソース記述をアセンブリ記述に変換し(ステップS401〜S403)、次にアセンブラにより、上記アセンブリ記述からオブジェクトを生成する(ステップS404〜S406)。そして、上記により生成された複数のオブジェクトをリンカにより結合することで(ステップS407〜S410)、上記プログラムのロードモジュールを生成する。
【0009】
ところで、図1のような分散メモリ型マルチプロセッサ方式にもとづくシステムは、従来は半導体集積技術の限界から、複数のチップ(および複数のボード)により構成されてきた。しかしながら、近年の半導体集積技術の向上により、複数のPEを一つのチップに収めることが可能となっている。
【0010】
この場合、相互接続網を介したPE間のデータの受け渡しはパケット伝送方式ではなく、共有メモリにデータを直接ストア/共有メモリからデータを直接ロードすることで、より高速におこなうことができる。このように、複数のプロセッサから読み書きされる共有メモリを設ける方式を、「分散共有メモリ型マルチプロセッサ方式」と呼ぶ。
【0011】
図5は、分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。図1に示した分散メモリ型マルチプロセッサ方式との差異は、メモリ502に、他のPE内のプロセッサからも読み書きできるSM(Shared Memory:共有メモリ)と、同一のPE内のプロセッサからしか読み書きできないLM(Local Memory:固有メモリ)との2種類ある点である。
【0012】
また、図6は上記システムにおけるメモリ空間の定義例を示す説明図である。図中、たとえば1番のPE(PE#1)のSMは、0番のPE(PE#0)のメモリ空間および1番のPE(PE#1)のメモリ空間に重複して割り当てられている。
【0013】
仮に、PE#1のSMがPE#0のメモリ空間では0x3000以下、PE#1のメモリ空間では0x2000以下のアドレスに割り当てられていたとすると、たとえばPE#0が0x2000にデータを書き込み、PE#1が0x3000からデータを読み出すことで、PE#0とPE#1との間で上記データを授受できたことになる。
【0014】
なお、図示する例ではPE#0のみが、他のすべてのPEのSMを参照・変更することができる。一方PE#1〜#nの各メモリ空間には、物理的に他のPEに属するメモリが割り当てられていないので、これらのPEは同一PE内のLMおよびSMを参照・変更するのみである。
【0015】
そして、このような分散共有メモリ型マルチプロセッサ方式の計算機システムでも、分散メモリ型マルチプロセッサ方式と同様、図3に示したようなSPMDプログラミングにもとづくプログラムを実行することは可能である。
【0016】
【発明が解決しようとする課題】
しかしながら、分散メモリ型マルチプロセッサ方式にせよ、分散共有メモリ型マルチプロセッサ方式にせよ、個々のプロセッサが実行するのはプログラムの一部(以下では「部分プログラム」という)であるにもかかわらず、各PEにはプログラムの全体が配分されるので、それだけの容量のメモリを用意しなければならず、コストがかさんでしまうという問題があった。
【0017】
この問題は、少なくとも分散メモリ型マルチプロセッサ方式のシステムについては、プログラムをSPMDでなくMPMD(Multiple−Program,Multiple−Data)プログラミングにもとづいて作成することで回避可能である。
【0018】
MPMDにもとづくプログラミングでは、SPMDのように各PEにより実行される部分プログラムをすべて結合したようなプログラムでなく、端的にそれぞれのPE向けのプログラムを作成する。図7はPE#0、図8はPE#1〜#n向けのプログラムの一例をそれぞれ示す説明図である。図示するように各PE用のプログラムには、他PE用の部分プログラムが含まれないので、その分メモリの容量を小さくすることができる。なお、これらのプログラムのロードモジュールは、図4に示した手順により生成される。
【0019】
一方、分散共有メモリ型マルチプロセッサ方式では、上述のようにある場所に格納された同一のデータを複数のPEが参照・変更するが、メモリ空間上のそのアドレスはPEごとに異なっている。したがって、各PE向けのプログラムについてリンカでアドレスを解決する際には、対象物が同一でもPEごとに異なるアドレスに変換しなければならないが、従来技術のリンカにはこうした機能がなかった。
【0020】
そのため分散共有メモリ型マルチプロセッサ方式の計算機システムで動作するプログラムは、SPMDプログラミングによってしか作成することができず、実行時にはスキップされる部分プログラムが各PEに多数配分され、無駄な部分プログラムを保持するために多くのメモリが必要になってしまうという問題があった。
【0021】
この発明は上記従来技術による問題を解決するため、分散共有メモリ型マルチプロセッサ方式を採用する計算機システムにおいても、より少ないメモリ容量で動作するプログラムのロードモジュールを生成することが可能なロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置を提供することを目的とする。
【0022】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、このロードモジュール生成方法では、第1のメモリ領域の内の特定の領域をアクセスするアドレスを第1のプロセッサが出力すると第2のメモリ領域に対してアクセスが行われる計算機システムにより実行されるプログラムのロードモジュールを生成するロードモジュール生成方法において、前記第1のプロセッサにより実行される第1プログラムに含まれる第1のオブジェクトを、前記第1のプロセッサに対応して設けられた第1のメモリの第1メモリ領域に第1のメモリ領域配置手段が配置する第1のメモリ領域配置工程と、前記第1メモリ領域のアドレスを示す第1メモリ空間定義情報にもとづいて、前記第1プログラムに含まれる第1シンボルの開始アドレスの算出を第1のメモリ空間内アドレス解決手段が行う第1のメモリ空間内アドレス解決工程と、前記第2のプロセッサにより実行される第2プログラムに含まれる第2のオブジェクトを、前記第2のプロセッサに対応して設けられた第2のメモリの第2メモリ領域に第2のメモリ領域配置手段が配置する第2のメモリ領域配置工程と、前記第2メモリ領域のアドレスを示す第2メモリ空間定義情報にもとづいて、前記第2プログラムに含まれる第2シンボルの開始アドレスの算出を第2のメモリ空間内アドレス解決手段が行う第2のメモリ空間内アドレス解決工程と、前記第1のメモリ空間内アドレス解決工程で、前記第1シンボルの開始アドレスが算出されなかった場合には、前記第1シンボルの開始アドレスを、前記第2のメモリ空間内アドレス解決工程で算出された前記第2シンボルの開始アドレスにもとづいてメモリ空間間アドレス解決手段が算出するメモリ空間間アドレス解決工程と、を含んだことを要件とする。
【0023】
また、前記メモリ空間間アドレス解決工程では、前記第1のメモリ空間内アドレス解決工程でアドレスが算出されなかった前記第1シンボルの開始アドレスを、前記第2のメモリ領域配置工程で配置された前記第2シンボルの所属するメモリ領域の開始アドレスからのオフセットにもとづいてメモリ空間間アドレス解決手段が算出することを要件とする。
【0024】
また、前記第1のメモリ領域は、前記第1のプロセッサからのみ参照可能な第3メモリ領域と、前記第1のプロセッサおよび前記第2のプロセッサから参照可能な第4メモリ領域とを有することを要件とする。
【0025】
これらの発明によって、MPMDプログラミングにもとづいて作成された各プロセッサ用のソースプログラムから、分散共有メモリ型マルチプロセッサ方式を採用する計算機でも実行可能なそのロードモジュールを生成することができる。逆にいえば、分散共有メモリ型マルチプロセッサ方式の計算機についても、MPMDプログラミングによってプログラムを作成することができる。
【0026】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置の好適な実施の形態を詳細に説明するが、その前に本発明の基本方針を簡単に説明する。
【0027】
(基本方針)
図9および図10は、分散共有メモリ型マルチプロセッサ方式の計算機システムを前提とする、MPMDプログラミングにもとづくプログラムの一例を示す説明図である。図9はPE#0用、図10はPE#1用であり、PE#0からPE#1に必要なデータを渡して、所定の処理を依頼した後、その結果を受け取るためのプログラムである。
【0028】
すなわちまずPE#0において、変数inputを読み出して、その値を変数inに書き込み(図9Th0−1)、次にPE#1の関数Th1の実行を指示する(図9Th0−2)。これを受けたPE#1では、Th1の中で変数inを入力として関数f1を呼び出し、その実行結果を変数outに書き込む(図10Th1−1)。その後、PE#0は変数outを読み出し、その値を変数outputに書き込む(図9Th0−3)。
【0029】
なお、実際のプログラムではPE#1に処理を依頼した後(すなわちTh0−2の後)、PE#0はPE#1とは無関係な別の処理に移行するが、ここでは簡略化してPE#0−PE#1間の連携部分のみを示している。
【0030】
上述のように、従来技術の言語処理系ではこれらのソースプログラムについて、実際に実行可能なロードモジュールを生成することができない。たとえば図9に示したPE#0用のプログラムで、extern宣言されている変数inおよびoutは、図10に示したPE#1用のプログラムで定義されているため、PE#0用のプログラムをリンクした時点ではアドレスは不定である。
【0031】
PE#1用のプログラムをリンクすると上記変数のアドレスは確定するが、判明するのはあくまでPE#1のメモリ空間上でのアドレスであり、当該アドレスで指し示される物理的な記憶領域の、PE#0のメモリ空間上におけるアドレスは依然不明である。
【0032】
そこで、以下に説明する実施の形態のような計算式を用いて、PE#1のメモリ空間上でのアドレスから、PE#0のメモリ空間上でのアドレスを割り出してやることで、PE#0用のプログラムで未解決シンボルとして残った、変数inおよびoutのアドレスを解決する。
【0033】
図11は、図9および図10に示したプログラムが本発明によりアドレス解決された後の状況を模式的に示す説明図である。同一の変数in/outが、PE#0用のプログラムでは0x3000/0x3004に、PE#1用のプログラムでは0x2000/0x2004に、それぞれ置換されていることが分かる。
【0034】
なお、図中「text area」とはプログラムの命令列を保持する領域であり、「data area」とはプログラムから読み書きされるデータのうち、非共有データすなわち当該プログラムを実行するPE以外の他のPEからは参照・変更されることのないデータを保持する領域である。これらの領域は物理的には各PEのLMに配置され、他のPEからの参照や変更はできない。
【0035】
また、図中「shared data area #k」(0≦k≦n)は、いずれも共有データを保持する領域である。これらの領域は物理的には、それぞれk番目のPEのSMに配置され、他のPEから参照・変更される可能性があるものとする。
【0036】
たとえば変数inの格納場所は、実際にはPE#1のSM上の一点であり、同じ場所にPE#0は0x3000、PE#1は0x2000のアドレスを割り当てているので、いずれのPEからもその値を参照・変更することができる。これにより、共有メモリを介したPE間でのデータの授受が可能となっている。
【0037】
(実施の形態)
次に図12は、本発明の実施の形態にかかるロードモジュール生成装置のハードウエア構成の一例を示すブロック図である。
【0038】
図中、まずCPU1201は装置全体の制御を司る。ROM1202はブートプログラムなどを記憶している。RAM1203はCPU1201のワークエリアとして使用される。HDD1204は、CPU1201の制御にしたがってHD1205に対するデータのリード/ライトを制御する。HD1205は、HDD1204の制御にしたがって書き込まれたデータを記憶する。
【0039】
FDD1206は、CPU1201の制御にしたがってFD1207に対するデータのリード/ライトを制御する。FD1207は、FDD1206の制御にしたがって書き込まれたデータを記憶したり、記憶しているデータをFDD1206の磁気ヘッドに読み取らせたりする。着脱可能な記録媒体としては、FD1207のほかCD−ROM、CD−R、CD−RW、MO、DVD(Digital Versatile Disk)、メモリカードなどが考えられる。
【0040】
ディスプレイ1208は、たとえばCRT、TFT液晶ディスプレイ、プラズマディスプレイなどであって、カーソルやウィンドウをはじめ、文書、画像などの各種データを表示する。ネットワークI/F1209は、イーサネット(R)ケーブル1210を通じてLANに接続されるとともに、LANと装置内部とのデータの送受信を司る。
【0041】
キーボード1211は、文字、数値、各種指示などの入力のためのキーを備え、装置内部へのデータの入力をおこなう。タッチパネル式の入力パッドやテンキーなどであってもよい。マウス1212は、カーソルの移動や範囲選択などをおこなう。ポインティングデバイスとして同様の機能を備えるものであれば、トラックボール、ジョイスティック、十字キー、ジョグダイヤルなどであってもよい。なお、上記各部はバスまたはケーブル1200により接続されている。
【0042】
次に、図13は本発明の実施の形態にかかるロードモジュール生成装置の構成を機能的に示すブロック図である。同図に示す各機能部は、具体的には図12に示したHD1205、FD1207などに格納されたプログラム、具体的にはコンパイラ、アセンブラおよびリンカの三つのプログラムを、CPU1201がRAM1203に読み出して実行することにより実現される。
【0043】
図中、1300〜1302はコンパイラにより実現され、プログラムのソース記述をアセンブリ記述に変換する機能部である。その詳細な機能は従来技術によるコンパイラと同一である。
【0044】
すなわち第1解析部1300は、図4に示したステップS401の処理をおこなう機能部であり、指定されたプログラムのソース記述を読み込んで字句解析および構文解析をおこなうとともに、当該プログラムをコンパイラの内部表現へと変換する。
【0045】
次に、命令列生成部1301は図4に示したステップS402の処理をおこなう機能部であり、上記内部表現にもとづいてプログラムの動作を実現する命令列を生成するとともに、当該命令列をコンパイラの内部情報に付加する。
【0046】
次に、アセンブリ記述出力部1302は図4に示したステップS403の処理をおこなう機能部であり、コンパイラの内部表現および付加されている命令列にもとづいて、上記プログラムのアセンブリ記述を出力する。
【0047】
また、図13中1303〜1305はアセンブラにより実現され、コンパイラから出力されたアセンブリ記述をさらにオブジェクトに変換する機能部である。その詳細な機能は従来技術によるアセンブラと同一である。
【0048】
すなわち第2解析部1303は、図4に示したステップS404の処理をおこなう機能部であり、コンパイラのアセンブリ記述出力部1302から出力されたアセンブリ記述を読み込んで、字句解析をおこなうとともにアセンブラの内部表現へと変換する。
【0049】
次に、バイナリ・コード生成部1304は図4に示したステップS405の処理をおこなう機能部であり、アセンブラの内部表現にもとづいてバイナリ・コード(命令コードを含む)を生成し、当該コードをアセンブラの内部情報に付加する。
【0050】
次に、オブジェクト出力部1305は図4に示したステップS406の処理をおこなう機能部であり、アセンブラの内部表現および付加されているバイナリ・コードにもとづいて、上記プログラムのオブジェクトを出力する。
【0051】
また、図13中1306〜1311はリンカにより実現され、アセンブラから出力されたオブジェクトを結合して実行可能なロードモジュールを出力する機能部である。1307以下の各部の機能については、後述するフローチャートで説明するが、1306についてのみ先に説明する。
【0052】
図14は、メモリ空間定義情報記憶部1306に保持されるメモリ空間定義情報の内容を模式的に示す説明図である。メモリ空間定義情報とは、上述の「text area」「data area」などの各メモリ領域を、メモリ空間内のどのアドレスに配置するかをPEごとに定義したものである。
【0053】
図中、たとえばPE#0のメモリ空間上で0x0000から0x0fffまでのアドレスが指し示す場所は、物理的にはPE#0のLM上に存在し、ここにPE#0用のプログラムの「text area」が配置される。同様に、PE#1のメモリ空間上で0x0000から0x0fffまでのアドレスが指し示す場所は、物理的にはPE#1のLM上に存在し、ここにPE#1用のプログラムの「text area」が配置される。
【0054】
また、PE#0のメモリ空間上で0x3000から0x3fffまでのアドレスが指し示す場所と、PE#1のメモリ空間上で0x2000から0x2fffまでのアドレスが指し示す場所とは同一であり、物理的にはPE#1のSM上に存在する。そして、ここに「shared data area #1」、すなわちPE#0からも参照・変更可能なPE#1の共有データが配置される。
【0055】
次に、図15は本発明の実施の形態にかかるロードモジュール生成装置における、図9および図10に示したプログラムのロードモジュール生成処理の手順を示すフローチャートである。もっとも、コンパイラおよびアセンブラによる処理は従来技術と同様であるので、同図にはリンカによる処理の手順のみを示している。
【0056】
まず、リンカにより実現されるオブジェクト読み込み部1307が、アセンブラのオブジェクト出力部1305から出力されたオブジェクトのうち、k番目(0≦k≦n)のPE用のものをリンカの内部表現として読み込む(ステップS1501)。
【0057】
次にメモリ空間構築部1308が、リンカの内部表現において、k番目のPEの各メモリ領域(上述の「text area」や「data area」など)を形成し、リンカの内部表現として付加する(ステップS1502)。
【0058】
次にメモリ空間内アドレス解決部1309が、リンカの内部表現において、k番目のPEのメモリ空間内の各メモリ領域のアドレス解決をおこなう(ステップS1503)。そして、ここまでの処理をPE#0(k=0)からPE#n(k=n)のすべてについておこなう。
【0059】
次にメモリ空間間アドレス解決部1310は、上記の処理で得られた各PEのメモリ空間イメージと、図14に示したメモリ空間定義情報とを参照して、ステップS1503による各メモリ空間内でのアドレス解決では未解決のまま残ったシンボルについて、メモリ空間をまたがったアドレス解決をおこなう(ステップS1504)。
【0060】
メモリ空間をまたがったアドレス解決とは、具体的にはたとえば図9に示したPE#0用のプログラムにおいて、PE#1用のプログラムで宣言されているためにアドレスが解決できない変数inおよびoutについて、当該変数のPE#1のメモリ空間上でのアドレスから、PE#0のメモリ空間上でのアドレスを算出する処理である。
【0061】
あるシンボルのあるPEにおけるアドレスを、他PEにおけるアドレスから算出するための計算式は下記の通りである。
symbol address=self base address+offset
ただしoffset=other’s PE symbol address−other’s PE base address
【0062】
たとえば変数outのPE#0におけるアドレスは、offset=4(=0x2004−0x2000)であることから、symbol address=0x3004(=0x3000+0x0004)となる。すなわち図14のメモリ空間定義情報から、少なくともPE#0のメモリ空間上でPE#1との共有データが配置される開始アドレスは分かるので、変数outのオフセットを当該開始アドレスに足し合わせることで、PE#0にとっての当該変数のアドレスを割り出している。
【0063】
メモリ空間内アドレス解決部1309およびメモリ空間間アドレス解決部1310によるアドレス解決の後は、未解決シンボルは存在しないはずなので、次にロードモジュール出力部1311がリンカの内部表現にもとづいて、k番目のPE用のプログラムのロードモジュールを出力する(ステップS1505)。そして、PE#0(k=0)からPE#n(k=n)のすべてについて同様にロードモジュールを出力した時点で、全PEについてソースからロードモジュールまでのプログラムの変換処理が終了する。
【0064】
なお、図6に示したメモリ空間定義例のもとでは、物理的に他PEのメモリに存在する変数を参照・変更するプログラムはPE#0用のものに限定される(PE#1〜#nの各メモリ空間には他PEのメモリが割り当てられていないため、これらのPEについて、他PEの変数を参照・変更するようなプログラムは作成することができない)。したがって、PE#1〜#n用のプログラムのリンク時には、ステップS1503の後未解決シンボルは残らないはずなので、ステップS1504によるアドレス解決は不要である。
【0065】
もっとも、図6のようにPE#0のみが他のPEのメモリを読み書きできるようにする必然性はなく(図6のような定義は一例に過ぎない)、PE#0以外のPEからも他PEのメモリを参照・変更できるようにしてもよい。
【0066】
その場合PE#0以外でも、ステップS1503の処理だけでは解決できないシンボルが発生しうるため、たとえば図16に示すように、PE#1〜#nについてもステップS1504によるアドレス解決をおこなう。PE#0について行ったのと同様の処理を他PEについてもおこなうというのみで、図15の手順と処理の内容が異なるわけではない。逆に図15の手順は、図16においてPE#0以外のPEにつきステップS1504を省略できる特別の場合であるとみることもできる。
【0067】
以上説明したように、本発明によれば分散共有メモリ型マルチプロセッサ方式に対応した、MPMDプログラミングにもとづくプログラムのロードモジュールを生成することが可能である。逆にいえば本発明により、分散共有メモリ型マルチプロセッサ方式を前提とするプログラムを、MPMDプログラミングにより作成することができるので、各PEにはそこで実行される部分プログラムのみを配置することができ、チップに搭載するメモリの容量を少なくすることができる。
【0068】
なお、本実施の形態におけるロードモジュール生成方法は、あらかじめ用意されたプログラム(コンパイラ、アセンブラおよびリンカ)がパーソナルコンピュータ、ワークステーションなどの各種のコンピュータ上で実行されることにより実現されるが、このプログラムはHD、FD、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な各種の記録媒体に記録され、当該記録媒体によって配布することができるほか、インターネットなどのネットワークを介して配布することも可能である。
【0069】
(付記1)複数のプロセッサを搭載する計算機システムにより実行されるプログラムのロードモジュールを生成するロードモジュール生成方法において、
第1のプロセッサにより実行されるプログラムのオブジェクトを結合して所定のメモリ領域を構築する第1のメモリ空間構築工程と、
前記第1のメモリ空間構築工程で構築された各メモリ領域のアドレスにもとづいて、前記第1のプロセッサにより実行されるプログラム中の各シンボルのアドレスを算出する第1のメモリ空間内アドレス解決工程と、
第2のプロセッサにより実行されるプログラムのオブジェクトを結合して所定のメモリ領域を構築する第2のメモリ空間構築工程と、
前記第2のメモリ空間構築工程で構築された各メモリ領域のアドレスにもとづいて、前記第2のプロセッサにより実行されるプログラム中の各シンボルのアドレスを算出する第2のメモリ空間内アドレス解決工程と、
前記第1のメモリ空間内アドレス解決工程でアドレスが解決されなかったシンボルのアドレスを、前記第2のメモリ空間内アドレス解決工程で算出された当該シンボルのアドレスにもとづいて算出するメモリ空間間アドレス解決工程と、
を含んだことを特徴とするロードモジュール生成方法。
【0070】
(付記2)前記メモリ空間間アドレス解決工程では、前記第1のメモリ空間内アドレス解決工程でアドレスが解決されなかったシンボルのアドレスを、前記第2のメモリ空間内アドレス解決工程で算出された当該シンボルのアドレスの、前記第2のメモリ空間構築工程で構築された当該シンボルの所属するメモリ領域の開始アドレスからのオフセットにもとづいて算出することを特徴とする付記1に記載のロードモジュール生成方法。
【0071】
(付記3)前記第1のメモリ空間構築工程では、前記第1のプロセッサからのみ参照可能なメモリ領域と、前記第1のプロセッサおよび前記第2のプロセッサから参照可能なメモリ領域とを構築することを特徴とする付記1または付記2に記載のロードモジュール生成方法。
【0072】
(付記4)前記第1のプロセッサおよび前記第2のプロセッサから参照可能なメモリ領域は、前記第2のプロセッサと同一のプロセッサ要素内のメモリに配置されることを特徴とする付記3に記載のロードモジュール生成方法。
【0073】
(付記5)複数のプロセッサを搭載する計算機システムにより実行されるプログラムのロードモジュールを生成するロードモジュール生成プログラムにおいて、
第1のプロセッサにより実行されるプログラムのオブジェクトを結合して所定のメモリ領域を構築する第1のメモリ空間構築工程と、
前記第1のメモリ空間構築工程で構築された各メモリ領域のアドレスにもとづいて、前記第1のプロセッサにより実行されるプログラム中の各シンボルのアドレスを算出する第1のメモリ空間内アドレス解決工程と、
第2のプロセッサにより実行されるプログラムのオブジェクトを結合して所定のメモリ領域を構築する第2のメモリ空間構築工程と、
前記第2のメモリ空間構築工程で構築された各メモリ領域のアドレスにもとづいて、前記第2のプロセッサにより実行されるプログラム中の各シンボルのアドレスを算出する第2のメモリ空間内アドレス解決工程と、
前記第1のメモリ空間内アドレス解決工程でアドレスが解決されなかったシンボルのアドレスを、前記第2のメモリ空間内アドレス解決工程で算出された当該シンボルのアドレスにもとづいて算出するメモリ空間間アドレス解決工程と、
をコンピュータに実行させることを特徴とするロードモジュール生成プログラム。
【0074】
(付記6)前記メモリ空間間アドレス解決工程では、前記第1のメモリ空間内アドレス解決工程でアドレスが解決されなかったシンボルのアドレスを、前記第2のメモリ空間内アドレス解決工程で算出された当該シンボルのアドレスの、前記第2のメモリ空間構築工程で構築された当該シンボルの所属するメモリ領域の開始アドレスからのオフセットにもとづいて算出することを特徴とする付記5に記載のロードモジュール生成プログラム。
【0075】
(付記7)前記第1のメモリ空間構築工程では、前記第1のプロセッサからのみ参照可能なメモリ領域と、前記第1のプロセッサおよび前記第2のプロセッサから参照可能なメモリ領域とを構築することを特徴とする付記5または付記6に記載のロードモジュール生成プログラム。
【0076】
(付記8)前記第1のプロセッサおよび前記第2のプロセッサから参照可能なメモリ領域は、前記第2のプロセッサと同一のプロセッサ要素内のメモリに配置されることを特徴とする付記7に記載のロードモジュール生成プログラム。
【0077】
(付記9)複数のプロセッサを搭載する計算機システムにより実行されるプログラムのロードモジュールを生成するロードモジュール生成装置において、
第1のプロセッサにより実行されるプログラムのオブジェクトを結合して所定のメモリ領域を構築する第1のメモリ空間構築手段と、
前記第1のメモリ空間構築手段により構築された各メモリ領域のアドレスにもとづいて、前記第1のプロセッサにより実行されるプログラム中の各シンボルのアドレスを算出する第1のメモリ空間内アドレス解決手段と、
第2のプロセッサにより実行されるプログラムのオブジェクトを結合して所定のメモリ領域を構築する第2のメモリ空間構築手段と、
前記第2のメモリ空間構築手段により構築された各メモリ領域のアドレスにもとづいて、前記第2のプロセッサにより実行されるプログラム中の各シンボルのアドレスを算出する第2のメモリ空間内アドレス解決手段と、
前記第1のメモリ空間内アドレス解決手段によりアドレスが解決されなかったシンボルのアドレスを、前記第2のメモリ空間内アドレス解決手段により算出された当該シンボルのアドレスにもとづいて算出するメモリ空間間アドレス解決手段と、
を備えたことを特徴とするロードモジュール生成装置。
【0078】
(付記10)前記メモリ空間間アドレス解決手段は、前記第1のメモリ空間内アドレス解決手段によりアドレスが解決されなかったシンボルのアドレスを、前記第2のメモリ空間内アドレス解決手段により算出された当該シンボルのアドレスの、前記第2のメモリ空間構築手段により構築された当該シンボルの所属するメモリ領域の開始アドレスからのオフセットにもとづいて算出することを特徴とする付記9に記載のロードモジュール生成装置。
【0079】
(付記11)前記第1のメモリ空間構築手段は、前記第1のプロセッサからのみ参照可能なメモリ領域と、前記第1のプロセッサおよび前記第2のプロセッサから参照可能なメモリ領域とを構築することを特徴とする付記9または付記10に記載のロードモジュール生成装置。
【0080】
(付記12)前記第1のプロセッサおよび前記第2のプロセッサから参照可能なメモリ領域は、前記第2のプロセッサと同一のプロセッサ要素内のメモリに配置されることを特徴とする付記11に記載のロードモジュール生成装置。
【0081】
【発明の効果】
以上説明したように本発明によれば、MPMDプログラミングにもとづいて作成された各プロセッサ用のソースプログラムから、分散共有メモリ型マルチプロセッサ方式を採用する計算機でも実行可能なそのロードモジュールを生成することができるので(逆にいえば、分散共有メモリ型マルチプロセッサ方式の計算機についても、MPMDプログラミングによってプログラムを作成することができるので)、これによって、分散共有メモリ型マルチプロセッサ方式を採用する計算機システムにおいても、より少ないメモリ容量で動作するプログラムのロードモジュールを生成することが可能なロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置が得られるという効果を奏する。
【図面の簡単な説明】
【図1】分散メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。
【図2】分散メモリ型マルチプロセッサ方式にもとづいた計算機システムにおける、メモリ空間の定義例を模式的に示す説明図である。
【図3】分散メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、SPMDプログラミングにもとづくプログラムの一例を示す説明図である。
【図4】図3に示したプログラムのロードモジュールの生成手順を示すフローチャートである。
【図5】分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムを模式的に示す説明図である。
【図6】分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムにおける、メモリ空間の定義例を模式的に示す説明図である。
【図7】分散メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、MPMDプログラミングにもとづくプログラムの一例(PE#0用)を示す説明図である。
【図8】分散メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、MPMDプログラミングにもとづくプログラムの一例(PE#1〜#n用)を示す説明図である。
【図9】分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、MPMDプログラミングにもとづくプログラムの一例(PE#0用)を示す説明図である。
【図10】分散共有メモリ型マルチプロセッサ方式にもとづいた計算機システムで実行される、MPMDプログラミングにもとづくプログラムの一例(PE#1用)を示す説明図である。
【図11】図9および図10に示したプログラムが本発明によりアドレス解決された後の状況を模式的に示す説明図である。
【図12】本発明の実施の形態にかかるロードモジュール生成装置のハードウエア構成の一例を示すブロック図である。
【図13】本発明の実施の形態にかかるロードモジュール生成装置の構成を機能的に示すブロック図である。
【図14】メモリ空間定義情報記憶部1306に保持されるメモリ空間定義情報の内容を模式的に示す説明図である。
【図15】本発明の実施の形態にかかるロードモジュール生成装置における、図9および図10に示したプログラムのロードモジュール生成処理の手順を示すフローチャートである。
【図16】本発明の実施の形態にかかるロードモジュール生成装置における、図9および図10に示したプログラムのロードモジュール生成処理の手順を示すフローチャートである。
【符号の説明】
1200 バスまたはケーブル
1201 CPU
1202 ROM
1203 RAM
1204 HDD
1205 HD
1206 FDD
1207 FD
1208 ディスプレイ
1209 ネットワークI/F
1210 イーサネット(R)ケーブル
1211 キーボード
1212 マウス
1300 第1解析部
1301 命令列生成部
1302 アセンブリ記述出力部
1303 第2解析部
1304 バイナリ・コード生成部
1305 オブジェクト出力部
1306 メモリ空間定義情報記憶部
1307 オブジェクト読み込み部
1308 メモリ空間構築部
1309 メモリ空間内アドレス解決部
1310 メモリ空間間アドレス解決部
1311 ロードモジュール出力部

Claims (9)

  1. 第1のメモリ領域の内の特定の領域をアクセスするアドレスを第1のプロセッサが出力すると第2のメモリ領域に対してアクセスが行われる計算機システムにより実行されるプログラムのロードモジュールを生成するロードモジュール生成方法において、
    前記第1のプロセッサにより実行される第1プログラムに含まれる第1のオブジェクトを、前記第1のプロセッサに対応して設けられた第1のメモリの第1メモリ領域に第1のメモリ領域配置手段が配置する第1のメモリ領域配置工程と、
    前記第1メモリ領域のアドレスを示す第1メモリ空間定義情報にもとづいて、前記第1プログラムに含まれる第1シンボルの開始アドレスの算出を第1のメモリ空間内アドレス解決手段が行う第1のメモリ空間内アドレス解決工程と、
    前記第2のプロセッサにより実行される第2プログラムに含まれる第2のオブジェクトを、前記第2のプロセッサに対応して設けられた第2のメモリの第2メモリ領域に第2のメモリ領域配置手段が配置する第2のメモリ領域配置工程と、
    前記第2メモリ領域のアドレスを示す第2メモリ空間定義情報にもとづいて、前記第2プログラムに含まれる第2シンボルの開始アドレスの算出を第2のメモリ空間内アドレス解決手段が行う第2のメモリ空間内アドレス解決工程と、
    前記第1のメモリ空間内アドレス解決工程で、前記第1シンボルの開始アドレスが算出されなかった場合には、前記第1シンボルの開始アドレスを、前記第2のメモリ空間内アドレス解決工程で算出された前記第2シンボルの開始アドレスにもとづいてメモリ空間間アドレス解決手段が算出するメモリ空間間アドレス解決工程と、
    を含んだことを特徴とするロードモジュール生成方法。
  2. 前記メモリ空間間アドレス解決工程では、前記第1のメモリ空間内アドレス解決工程でアドレスが算出されなかった前記第1シンボルの開始アドレスを前記第2のメモリ領域配置工程で配置された前記第2シンボルの所属するメモリ領域の開始アドレスからのオフセットにもとづいてメモリ空間間アドレス解決手段が算出することを特徴とする請求項1に記載のロードモジュール生成方法。
  3. 前記第1のメモリ領域は、前記第1のプロセッサからのみ参照可能な第3メモリ領域と、前記第1のプロセッサおよび前記第2のプロセッサから参照可能な第4メモリ領域とを有することを特徴とする請求項1または請求項2に記載のロードモジュール生成方法。
  4. 第1のメモリ領域の内の特定の領域をアクセスするアドレスを第1のプロセッサが出力すると第2のメモリ領域に対してアクセスが行われる計算機システムにより実行されるプログラムのロードモジュールを生成するロードモジュール生成プログラムにおいて、
    コンピュータを、
    前記第1のプロセッサにより実行される第1プログラムに含まれる第1のオブジェクトを、前記第1のプロセッサに対応して設けられた第1のメモリの第1メモリ領域に配置する第1のメモリ領域配置手段、
    前記第1メモリ領域のアドレスを示す第1メモリ空間定義情報にもとづいて、前記第1プログラムに含まれる第1シンボルの開始アドレスの算出を行う第1のメモリ空間内アドレス解決手段、
    前記第2のプロセッサにより実行される第2プログラムに含まれる第2のオブジェクトを、前記第2のプロセッサに対応して設けられた第2のメモリの第2メモリ領域に配置する第2のメモリ領域配置手段、
    前記第2メモリ領域のアドレスを示す第2メモリ空間定義情報にもとづいて、前記第2プログラムに含まれる第2シンボルの開始アドレスの算出を行う第2のメモリ空間内アドレス解決手段、
    前記第1のメモリ空間内アドレス解決手段で、前記第1シンボルの開始アドレスが算出されなかった場合には、前記第1シンボルの開始アドレスを、前記第2のメモリ空間内アドレス解決手段で算出された前記第2シンボルの開始アドレスにもとづいて算出するメモリ空間間アドレス解決手段、
    として動作させることを特徴とするロードモジュール生成プログラム。
  5. 前記メモリ空間間アドレス解決手段は、前記第1のメモリ空間内アドレス解決手段でアドレスが算出されなかった前記第1シンボルの開始アドレスを前記第2のメモリ領域配置手段で配置された前記第2シンボルの所属するメモリ領域の開始アドレスからのオフセットにもとづいて算出することを特徴とする請求項4に記載のロードモジュール生成プログラム。
  6. 前記第1のメモリ領域は、前記第1のプロセッサからのみ参照可能な第3メモリ領域と、前記第1のプロセッサおよび前記第2のプロセッサから参照可能な第4メモリ領域とを有することを特徴とする請求項または請求項5に記載のロードモジュール生成プログラム。
  7. 第1のメモリ領域の内の特定の領域をアクセスするアドレスを第1のプロセッサが出力すると第2のメモリ領域に対してアクセスが行われる計算機システムにより実行されるプログラムのロードモジュールを生成するロードモジュール生成装置において、
    前記第1のプロセッサにより実行される第1プログラムに含まれる第1のオブジェクトを、前記第1のプロセッサに対応して設けられた第1のメモリの第1メモリ領域に配置する第1のメモリ領域配置手段と、
    前記第1メモリ領域のアドレスを示す第1メモリ空間定義情報にもとづいて、前記第1プログラムに含まれる第1シンボルの開始アドレスの算出を行う第1のメモリ空間内アドレス解決手段と、
    前記第2のプロセッサにより実行される第2プログラムに含まれる第2のオブジェクトを、前記第2のプロセッサに対応して設けられた第2のメモリの第2メモリ領域に配置する第2のメモリ領域配置手段と、
    前記第2メモリ領域のアドレスを示す第1メモリ空間定義情報にもとづいて、前記第2プログラムに含まれる第2シンボルの開始アドレスの算出を行う第2のメモリ空間内アドレス解決手段と、
    前記第1のメモリ空間内アドレス解決手段により前記第1シンボルの開始アドレスが算出されなかった場合には、前記第1シンボルの開始アドレスを、前記第2のメモリ空間内アドレス解決手段で算出された前記第2シンボルの開始アドレスにもとづいて算出するメモリ空間間アドレス解決手段と、
    を備えたことを特徴とするロードモジュール生成装置。
  8. 前記メモリ空間間アドレス解決手段は、前記第1のメモリ空間内アドレス解決手段によりアドレスが算出されなかった前記第1シンボルの開始アドレスを前記第2のメモリ領域配置手段で配置された前記第2シンボルの所属するメモリ領域の開始アドレスからのオフセットにもとづいて算出することを特徴とする請求項7に記載のロードモジュール生成装置。
  9. 前記第1のメモリ領域は、前記第1のプロセッサからのみ参照可能な第3メモリ領域と、前記第1のプロセッサおよび前記第2のプロセッサから参照可能な第4メモリ領域とを有することを特徴とする請求項7または請求項8に記載のロードモジュール生成装置。
JP2002238399A 2002-06-27 2002-08-19 ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置 Expired - Fee Related JP4133107B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002238399A JP4133107B2 (ja) 2002-08-19 2002-08-19 ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置
US10/603,093 US7117315B2 (en) 2002-06-27 2003-06-25 Method and apparatus for creating a load module and a computer product thereof
EP03254008A EP1376348A3 (en) 2002-06-27 2003-06-25 Method of and apparatus for creating a load module

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002238399A JP4133107B2 (ja) 2002-08-19 2002-08-19 ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置

Publications (2)

Publication Number Publication Date
JP2004078600A JP2004078600A (ja) 2004-03-11
JP4133107B2 true JP4133107B2 (ja) 2008-08-13

Family

ID=32021825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002238399A Expired - Fee Related JP4133107B2 (ja) 2002-06-27 2002-08-19 ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置

Country Status (1)

Country Link
JP (1) JP4133107B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008123315A (ja) * 2006-11-14 2008-05-29 Sony Corp 情報処理装置およびその方法、並びにプログラム
EP2336883B1 (en) * 2008-09-09 2018-03-07 NEC Corporation Programming system in multi-core environment, and method and program of the same
JP5509694B2 (ja) * 2009-06-29 2014-06-04 富士通株式会社 コンパイル方法、プログラム実行方法及びプログラム
CN102981912B (zh) * 2012-11-06 2015-05-20 无锡江南计算技术研究所 一种资源分配方法及系统

Also Published As

Publication number Publication date
JP2004078600A (ja) 2004-03-11

Similar Documents

Publication Publication Date Title
JP5040136B2 (ja) チューニング支援装置、チューニング支援プログラム、チューニング支援プログラムを記録したコンピュータ読み取り可能な記録媒体およびチューニング支援方法
US6006033A (en) Method and system for reordering the instructions of a computer program to optimize its execution
CN103309786B (zh) 用于在非可抢占式图形处理单元上交互调试的方法和装置
US20100083185A1 (en) Computer program, multiprocessor system, and grouping method
Lee et al. Performance characterization of data-intensive kernels on AMD fusion architectures
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
US7676774B2 (en) System LSI verification system and system LSI verification method
JP4133107B2 (ja) ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置
US9189297B2 (en) Managing shared memory
US6883067B2 (en) Evaluation and optimization of code
Nolte et al. HW-FUTEX: Hardware-Assisted Futex Syscall
Chatterjee et al. Shared memory consistency protocol verification against weak memory models: Refinement via model-checking
Diep et al. A general approach for supporting nonblocking data structures on distributed-memory systems
US7117315B2 (en) Method and apparatus for creating a load module and a computer product thereof
Bordawekar et al. Communication strategies for out-of-core programs on distributed memory machines
Zhou et al. A parallel, out-of-core algorithm for RNA secondary structure prediction
WO2018168264A1 (ja) 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
Ben-Asher et al. Using memory profile analysis for automatic synthesis of pointers code
JP2010198398A (ja) 計算機装置および制御方法
Abrahamse et al. Memory-Disaggregated In-Memory Object Store Framework for Big Data Applications
Pinto et al. A highly efficient, thread-safe software cache implementation for tightly-coupled multicore clusters
JP2013127703A (ja) ロードモジュール生成方法及びロードモジュール生成プログラム
Darche et al. Low-overhead trace collection and profiling on GPU compute kernels
JP2000099370A (ja) 信号処理装置
Chang et al. A translation framework for automatic translation of annotated llvm ir into opencl kernel function

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070717

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071030

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071227

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080227

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080402

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080520

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080602

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110606

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120606

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120606

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130606

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140606

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees