JP3006505B2 - 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体 - Google Patents

並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体

Info

Publication number
JP3006505B2
JP3006505B2 JP8229089A JP22908996A JP3006505B2 JP 3006505 B2 JP3006505 B2 JP 3006505B2 JP 8229089 A JP8229089 A JP 8229089A JP 22908996 A JP22908996 A JP 22908996A JP 3006505 B2 JP3006505 B2 JP 3006505B2
Authority
JP
Japan
Prior art keywords
program
source program
condition
instruction stream
data
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
JP8229089A
Other languages
English (en)
Other versions
JPH09138781A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP8229089A priority Critical patent/JP3006505B2/ja
Publication of JPH09138781A publication Critical patent/JPH09138781A/ja
Application granted granted Critical
Publication of JP3006505B2 publication Critical patent/JP3006505B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、並列プロセスを含
むプログラムをマルチプロセッサ上で効率良く実行する
ことができるように修正する、並列プロセスを含むプロ
グラムの修正装置に関し、特に、並列プロセスがプロセ
ス共有の資源をアクセスする際の排他制御による待ち時
間を減少させるように該プログラムを修正する並列プロ
セスを含むプログラムの修正装置、修正方法、および修
正プログラムを記憶する記憶媒体に関する。
【0002】
【従来の技術】「Practical Parallel Programming」(Bau
er著,Academic Press社,1992年発行)には、マルチプロ
セッサシステムにおいて複数のプロセスを並列に実行す
る過程において、該プロセスがプロセス共有の資源にア
クセスする際には、クリティカルブロックを宣言し、他
のプロセスからの該資源に対するアクセスを禁止する技
術が記載されている。
【0003】
【発明が解決しようとする課題】この従来の技術におい
ては、プロセス共有資源をアクセスしているプロセスが
クリティカルブロックを解除するまで、他のプロセスに
よる該資源に対するアクセスは待たされてしまうので、
該他のプロセスを含むプログラムの実行時間が遅延する
という問題点がある。
【0004】本発明の目的は、並列プロセスを含むプロ
グラムをマルチプロセッサ上で効率良く実行することが
できるように修正する装置を提供することにある。
【0005】本発明の他の目的は、並列プロセスがプロ
セス共有の資源をアクセスする際の排他制御による待ち
時間を減少させるように該プログラムを修正する装置を
提供することにある。
【0006】
【課題を解決するための手段】本発明の第1の並列プロ
セスを含むプログラムの修正装置は、複数のプロセスを
含む目的プログラムを複数のプロセッサで並列に実行す
るマルチプロセッサシステムにおいて、前記複数のプロ
セスの内のいずれかのプロセスがデータをアクセスして
いるために当該データにアクセスすることができず待ち
状態になっている前記複数のプロセスの内の別のプロセ
スがある場合に、当該別のプロセス中で待ち状態となっ
ている当該データへのアクセス命令を記憶するロード・
モジュール実行手段と、前記ロード・モジュール実行手
段が記憶した前記アクセス命令を含む第1の命令ストリ
ームと当該第1の命令ストリームを含むプロセス中で前
記データをアクセスしない第2の命令ストリームとを入
れ換えるように、前記目的プログラムの元となるソース
プログラムを修正するソースプログラム書き換え手段
、前記ソースプログラム書き換え手段が書き換えた前
記ソースプログラムをコンパイルして目的プログラムを
生成するコンパイル手段とを備えたことを特徴とする。
【0007】本発明の第2の並列プロセスを含むプログ
ラムの修正装置は、第1の並列プロセスを含むプログラ
ムの修正装置において、前記ソースプログラム書き換え
手段が、前記第2の命令ストリームを特定する条件が、
さらに、前記データとは依存関係がある処理を含まない
という条件を含むことを特徴とする。
【0008】本発明の第3の並列プロセスを含むプログ
ラムの修正装置は、第1および第2の並列プロセスを含
むプログラムの修正装置において、前記ソースプログラ
ム書き換え手段が、前記第2の命令ストリームを特定す
る条件が、さらに、第1の命令ストリームとの間に副作
用を持つ関数呼び出しおよび分岐処理を含まないという
条件を含むことを特徴とする。
【0009】本発明の第4の並列プロセスを含むプログ
ラムの修正装置は、第1から第3のいずれかの並列プロ
セスを含むプログラムの修正装置において、前記ソース
プログラム書き換え手段が、前記第2の命令ストリーム
を特定する条件が、さらに、最も処理時間が長いという
条件を含むことを特徴とする。
【0010】本発明の第1の並列プロセスを含むプログ
ラムの修正方法は、複数のプロセスを含む目的プログラ
ムを複数のプロセッサで並列に実行するマルチプロセッ
サシステムにおいて、前記複数のプロセスの内のいずれ
かのプロセスがデータをアクセスしているために当該デ
ータにアクセスすることができず待ち状態になっている
前記複数のプロセスの内の別のプロセスがある場合に、
当該別のプロセス中で待ち状態となっている当該データ
へのアクセス命令を記憶するロード・モジュール実行ス
テップと、前記ロード・モジュール実行ステップが記憶
した前記アクセス命令を含む第1の命令ストリームと
該第1の命令ストリームを含むプロセス中で前記データ
をアクセスしない第2の命令ストリームとを入れ換える
ように、前記目的プログラムの元となるソースプログラ
ムを修正するソースプログラム書き換えステップと、前
記ソースプログラム書き換えステップが書き換えた前記
ソースプログラムをコンパイルして目的プログラムを生
成するコンパイルステップとを含むことを特徴とする
【0011】本発明の第2の並列プロセスを含むプログ
ラムの修正方法は、第1の並列プロセスを含むプログラ
ムの修正方法において、前記ソースプログラム書き換え
ステップにおいて、前記第2の命令ストリームを特定す
る条件が、さらに、前記データとは依存関係がある処理
を含まないという条件を含むことを特徴とする。
【0012】本発明の第3の並列プロセスを含むプログ
ラムの修正方法は、第1および第2の並列プロセスを含
むプログラムの修正方法において、前記ソースプログラ
ム書き換えステップにおける、前記第2の命令ストリー
ムを特定する条件が、さらに、第1の命令ストリームと
の間に副作用を持つ関数呼び出しおよび分岐処理を含ま
ないという条件を含むことを特徴とする。
【0013】本発明の第4の並列プロセスを含むプログ
ラムの修正方法は、第1〜第3のいずれかの並列プロセ
スを含むプログラムの修正方法において、前記ソースプ
ログラム書き換えステップにおける、前記第2の命令ス
トリームを特定する条件が、さらに、最も処理時間が長
いという条件を含むことを特徴とする。
【0014】
【0015】
【0016】
【0017】
【0018】
【発明の実施の形態】以下、本発明の実施例について、
図を参照しながら詳細に説明する。
【0019】図1を参照すると、本発明の並列プロセス
を含むプログラムの修正装置の実施例は、第1のソース
プログラム格納ファイル部11、ロード・モジュール実
行部12、実行情報格納ファイル部13、第2のソース
プログラム格納ファイル部14、コンパイラ部15、お
よびソースプログラム書き換え部16とから構成されて
いる。
【0020】第1のソースプログラム格納ファイル部1
1は、並列プロセスを含むソースプログラムを格納す
る。
【0021】コンパイラ部15は、第1のソースプログ
ラム格納ファイル部11からソースプログラムを取り出
し、ソースプログラムを目的プログラムにコンパイル
し、目的プログラムをロード・モジュール(LM)の形
でロード・モジュール実行部12に供給する。
【0022】ロード・モジュール実行部12は、第1お
よび第2のプロセッサを有するマルチプロセッサ部から
なり、ロード・モジュール形式の目的プログラムの並列
プロセスが第1および第2のプロセッサにおいて、第1
および第2のタスクとして実行されるようにロード・モ
ジュール形式の目的プログラムを実行する。
【0023】このロード・モジュール実行部12におい
ては、第1および第2のプロセッサが第1および第2の
タスクを並列に実行する際に第1および第2のタスクに
同時に同一資源へのアクセスを行うブロックが出現する
と、第1のプロセッサが前記資源へのアクセスを実行し
終わるまで、第2のプロセッサに前記ブロックの実行を
見合わせる待ち状態が発生する。即ち、第1のプロセッ
サによる排他制御によって第2のプロセッサに待ち状態
が発生してしまう。
【0024】このロード・モジュール実行部12は、第
2のプロセッサに発生した前記待ち状態を検出し、この
待ち状態において第2のプロセッサが実行を見合わせて
いる前記ブロックを特定ブロックとして特定するブロッ
ク特定情報を出力するブロック特定情報出力機能部(図
示せず)を有する。
【0025】実行情報格納ファイル部13は、前記ブロ
ック特定情報を格納情報として格納する。
【0026】このブロック特定情報は、例えば、待ち状
態においてプロセッサが実行を見合わせているブロック
(即ち、待ち状態が発生したソースプログラム上のブロ
ック)の行番号を表し、このブロック特定情報は実行L
Mの形で実行情報格納ファイル部13に格納される。
【0027】ソースプログラム書き換え部16は、第1
のソースプログラム格納ファイル部11から供給された
ソースプログラムと実行情報格納ファイル部13から供
給された前記格納情報とに基づいて、該ソースプログラ
ム中の、該格納情報にて特定された特定ブロックと、第
2のプロセッサにおいて該特定ブロックより後に第2の
タスクとして実行され、かつ前記資源へのアクセスを行
わない他のブロックとを入れ換えることにより、該ソー
スプログラムを他のソースプログラムに書き換えて出力
する。
【0028】この際、ソースプログラム書き換え部16
は、実行情報格納ファイル部13から排他制御によって
待ち状態になったブロックを認識し、該ブロックと入れ
換え可能な実行時間の最も長いブロックを検出し、該ブ
ロックを排他制御によって待ち状態になったブロックと
入れ換えた他のソースプログラムを出力する。
【0029】第2のソースプログラム格納ファイル部1
4は、該他のソースプログラムを格納する。
【0030】コンパイラ部15は、第2のソースプログ
ラム格納ファイル部14から該他のソースプログラムを
供給されると、該他のソースプログラムを他の目的プロ
グラムにコンパイルする。
【0031】ロード・モジュール実行部12は、該他の
目的プログラムの第1および第2のタスクが第1および
第2のプロセッサにおいて実行されるように該他の目的
プログラムを実行する。
【0032】なお、第2のソースプログラム格納ファイ
ル部14から他のソースプログラムを供給され、該他の
ソースプログラムを他の目的プログラムにコンパイル
し、この他の目的プログラムを、ロード・モジュール実
行部12に供給する他のコンパイラ部を、コンパイラ部
15とは別に設定しても良い。
【0033】次に、このように構成された本発明の並列
プロセスを含むプログラムの修正装置の第1の実施例に
ついて、図1〜図6を参照して以下に詳細に説明する。
【0034】まず、本実施例では図2のC言語で記述さ
れたソースプログラムを2台のプロセッサで並列に実行
する場合について説明する。
【0035】図2を参照すると、ソースプログラム中の
並列化ケースブロック31、32は異なるプロセッサで
並列に実行されるブロックである。変数aはタスク間共
通データで、変数b、cはタスク内でローカルなデータ
である。並列化ケースブロック31、32中のタスク間
共通領域aをアクセスしているブロック33と35が、
排他制御によって実行されるブロックである。該ブロッ
クをクリティカルセクションと呼ぶ。
【0036】コンパイラ部15は、クリティカルセクシ
ョンを実行する時、以下の処理を行う命令列を含む目的
プログラムを生成する。
【0037】(1)他のクリティカルセクションが実行
されていることを示すタスク共通領域に設定されたフラ
グの値がオフならば該フラグをオンにし、該クリティカ
ルセクションを実行する。
【0038】(2)該フラグがオンの場合、該フラグが
オフになるまで待ち状態になる。該フラグがオフになっ
た時点で、ウエイト状態であった時間と現在実行しよう
としているクリティカルセクションのソース上の行番号
を実行情報格納ファイル部13に出力し、(1)の処理
を行う。
【0039】図3は、コンパイラ部15によって生成さ
れた目的プログラムを実行した際の、各プロセッサの命
令実行の時間推移例を示したものである。
【0040】プロセッサ42でクリティカルセクション
35を実行開始する時に、プロセッサ41で別のクリテ
ィカルセクション33を実行中であり、クリティカルセ
クション35がt1秒間クリティカルセクション33の
実行終了待ち状態になったとすると、クリティカルセク
ション35の行番号mが実行情報格納ファイル部13に
出力される。
【0041】ソースプログラム書き換え部16は、実行
情報格納ファイル部13を読み出し、待ち状態の発生し
た行番号mを得てクリティカルセクション35で待ち状
態が発生したことを認識し、クリティカルセクション3
5と入れ換えるブロックを選択する。
【0042】その処理を図4の流れ図を用いて説明す
る。
【0043】1.並列化ケースブロック32内の最初の
ブロック34を選択する(ステップ21)。
【0044】2.選択したブロック34が実行待ち状態
の発生したクリティカルセクション35であるか否かを
検査する(ステップ22)。図3の例では違うので、ス
テップ23に進む。
【0045】3.選択したブロック34がクリティカル
セクション35とデータの依存関係があるか否かを検査
する(ステップ23)。図3の例では依存関係はないの
でステップ24に進む。
【0046】4.選択したブロック34とクリティカル
セクション35との間に副作用を持つ関数呼出しあるい
は分岐がある否かを検査する(ステップ24)。図3の
例ではないのでステップ25に進む。
【0047】5.交換ブロックが検出されていないの
で、選択したブロック34を交換ブロックとする(ステ
ップ25)。
【0048】6.選択したブロック34が並列化ケース
ブロック32内の最後のブロックであるか否かを検査す
る(ステップ26)。図3の例では最後のブロックでな
いのでステップ27に進む。
【0049】7.次のブロック35を選択してステップ
22にもどる(ステップ27)。
【0050】8.選択したブロックがクリティカルセク
ション35なのでステップ26に進む(ステップ2
2)。
【0051】9.選択したブロック35が並列化ケース
ブロック32内の最後のブロックであるか否かを検査す
る(ステップ26)。図3の例では最後のブロックなの
で処理を終了する。
【0052】このような処理により、ブロック34が交
換ブロックとなる。
【0053】ソースプログラム書き換え部16は、ブロ
ック34とクリティカルセクション35を入れ換えた図
5に示すソースプログラムを出力する。
【0054】図5に示すソースプログラムを再度コンパ
イル、実行すると各プロセッサの命令実行の時間的推移
は図6のようになり、プロセッサ62でクリティカルセ
クション35を実行するとき、プロセッサ61ではクリ
ティカルセクションを実行していないため、待ち状態は
発生しない。
【0055】以上により、本発明の並列プロセスを含む
プログラムの修正装置の第1の実施例の処理が完了す
る。
【0056】本発明の並列プロセスを含むプログラムの
修正装置の第1の実施例は、ロード・モジュール実行部
12が、ソースプログラムの並列処理で排他処理により
待ち状態となったブロックの情報を実行情報格納ファイ
ル部13に格納し、ソースプログラム書き換え部16が
該ソースプログラムと該ブロックの情報とに基づいて、
該ブロックと他のブロックとを入れ替えるようにしたこ
とにより、排他制御による待ち状態が発生しないように
該ソースプログラムを書き換えることができる効果を有
している。
【0057】次に、このように構成された本発明の並列
プロセスを含むプログラムの修正装置の第2の実施例に
ついて、図4、および図7〜図10を参照して以下に詳
細に説明する。
【0058】まず、本実施例では図7のC言語で記述さ
れたソースプログラムを2台のプロセッサで並列に実行
させる場合を考える。
【0059】図7を参照すると、ソースプログラム中の
並列化ケースブロック71、72は異なるプロセッサで
並列に実行されるブロックである。変数aはタスク間共
通データで、変数b、c、dはタスク内でローカルなデ
ータである。並列化ケースブロック71、72中のタス
ク間共通領域aをアクセスしているブロック73と75
が、クリティカルセクションである。
【0060】コンパイラ部15は、クリティカルセクシ
ョンを実行する時、以下の処理を行う命令列を含む目的
プログラムを生成する。
【0061】(1)他のクリティカルセクションが実行
されていることを示すタスク共通領域に設定されたフラ
グの値がオフならば該フラグをオンにし、該クリティカ
ルセクションを実行する。
【0062】(2)該フラグがオンの場合、該フラグが
オフになるまで待ち状態になる。該フラグがオフになっ
た時点で、ウエイト状態であった時間と現在実行しよう
としているクリティカルセクションのソース上の行番号
を実行情報格納ファイル部13に出力し、(1)の処理
を行う。
【0063】図8は、コンパイラ15部によって生成さ
れた目的プログラムを実行した際の、各プロセッサの命
令実行の時間的推移例を示したものである。
【0064】プロセッサ82でクリティカルセクション
75を実行開始する時に、プロセッサ81で別のクリテ
ィカルセクション73を実行中であり、クリティカルセ
クション75t2秒間がクリティカルセクション73の
実行終了待ち状態になったとすると、クリティカルセク
ション75の行番号nが実行情報格納ファイル部13に
出力される。
【0065】ソースプログラム書き換え部16は、実行
情報格納ファイル部13を読み出し、待ち状態の発生し
た行番号nを得てクリティカルセクション75で待ち状
態が発生したことを認識し、クリティカルセクション7
5と入れ換えるブロックを選択する。
【0066】その処理を図4の流れ図を用いて説明す
る。
【0067】1.並列化ケースブロック72内の最初の
ブロック74を選択する(ステップ21)。
【0068】2.選択したブロック74が実行待ち状態
の発生したクリティカルセクション75であるか否かを
検査する(ステップ22)。図8の例では違うので、ス
テップ23に進む。
【0069】3.選択したブロック74がクリティカル
セクション75とデータの依存関係があるか否かを検査
する(ステップ23)。図8の例では依存関係はないの
でステップ24に進む。
【0070】4.選択したブロック74とクリティカル
セクション75との間に副作用を持つ関数呼出しあるい
は分岐がある否かを検査する(ステップ24)。図8の
例ではないのでステップ25に進む。
【0071】5.交換ブロックが検出されていないの
で、選択したブロック74を交換ブロックとする(ステ
ップ25)。
【0072】6.選択したブロック74が並列化ケース
ブロック72内の最後のブロックであるか否かを検査す
る(ステップ26)。図8の例では最後のブロックでな
いのでステップ27に進む。
【0073】7.次のブロック75を選択してステップ
22にもどる(ステップ27)。
【0074】8.選択したブロックがクリティカルセク
ション75なのでステップ26に進む(ステップ2
2)。
【0075】9.選択したブロック75が並列化ケース
ブロック72内の最後のブロックであるか否かを検査す
る(ステップ26)。図8の例では最後のブロックでは
ないのステップ27に進む。
【0076】10.次のブロック76を選択してステッ
プ22にもどる(ステップ27)。
【0077】11.選択したブロック76が実行待ち状
態の発生したクリティカルセクション74であるか否か
を検査する(ステップ22)。図8の例では違うのでス
テップ23に進む。
【0078】12.選択したブロック76がクリティカ
ルセクション75とデータの依存関係があるか否かを検
査する(ステップ23)。図8の例では依存関係はない
のでステップ24に進む。
【0079】13.選択したブロック76とクリティカ
ルセクション75との間に副作用を持つ関数呼出しある
いは分岐があるか否かを検査する(ステップ24)。図
8の例ではないのでステップ25に進む。
【0080】14.交換ブロック74が既に検出されて
いるので、該交換ブロック74の予測実行時間と選択し
たブロック76の予測実行時間を比較し、選択したブロ
ック76の予測実行時間の方が長いため、選択したブロ
ック76を交換ブロックとする(ステップ25)。
【0081】15.選択したブロック76が並列化ケー
ス内の最後のブロックであるか否かを検査する(ステッ
プ26)。図8の例では最後のブロックであるので処理
を終了する。
【0082】このような処理により、ブロック76が交
換ブロックとなる。
【0083】ソースプログラム書き換え部16は、交換
ブロック76とクリティカルセクション75を入れ換え
た図9に示すソースプログラムを出力する。
【0084】図9に示すソースプログラムを再度コンパ
イル、実行すると各プロセッサの命令実行の時間的推移
は図10のようになり、プロセッサ102でクリティカ
ルセクション75を実行するとき、プロセッサ101で
はクリティカルセクションを実行していないため、待ち
状態は発生しない。
【0085】以上により、本発明の並列プロセスを含む
プログラムの修正装置の第2の実施例の処理が完了す
る。
【0086】本発明の並列プロセスを含むプログラムの
修正装置の第2の実施例は、ロード・モジュール実行部
12が、ソースプログラムの並列処理で排他処理により
待ち状態となったブロックの情報を実行情報格納ファイ
ル部13に格納し、ソースプログラム書き換え部16が
該ソースプログラムと該ブロックの情報とに基づいて、
該ブロックと実行時間の最も長い他のブロックとを入れ
替えるようにしたことにより、排他制御による待ち状態
が発生しないように該ソースプログラムを書き換えるこ
とができる効果を有している。
【0087】
【発明の効果】以上説明したように、本発明の並列プロ
セスを含むプログラムの修正装置は、並列プロセスがプ
ロセス共有の資源をアクセスする際の排他制御による待
ち時間を減少させるように該プログラムを修正し、該プ
ログラムをマルチプロセッサ上で効率良く実行すること
ができる効果を有している。
【図面の簡単な説明】
【図1】図1は、本発明の第1および第2の実施例にお
ける並列プロセスを含むプログラムの修正装置のブロッ
ク図である。
【図2】図2は、本発明の第1の実施例におけるソース
プログラムの例を示す図である。
【図3】図3は、本発明の第1の実施例において、図2
のソースプログラムをコンパイルした目的プログラムを
実行した時の各プロセッサの命令実行の時間的推移を示
す図である。
【図4】図4は、本発明の第1および第2の実施例にお
けるソースプログラム書き換え部16の処理を説明する
流れ図である。
【図5】図5は、本発明の第1の実施例において、図2
のソースプログラムをソースプログラム書き換え部16
によって書き換えたソースプログラムを示す図である。
【図6】図6は、本発明の第1の実施例において、図5
のソースプログラムをコンパイルした目的プログラムを
実行した時の各プロセッサの命令実行の時間的推移を示
す図である。
【図7】図7は、本発明の第2の実施例におけるソース
プログラムの例を示す図である。
【図8】図8は、本発明の第2の実施例において、図7
のソースプログラムをコンパイルした目的プログラムを
実行した時の各プロセッサの命令実行の時間的推移を示
す図である。
【図9】図9は、本発明の第2の実施例において、図7
のソースプログラムをソースプログラム書き換え部16
によって書き換えたソースプログラムを示す図である。
【図10】図10は、本発明の第2の実施例において、
図9のソースプログラムをコンパイルした目的プログラ
ムを実行した時の各プロセッサの命令実行の時間的推移
を示す図である。
【符号の説明】
11 ソースプログラム格納ファイル部 12 ロード・モジュール実行部 13 実行情報格納ファイル部 14 ソースプログラム格納ファイル部 15 コンパイラ部 16 ソースプログラム書き換え部

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数のプロセスを含む目的プログラムを
    複数のプロセッサで並列に実行するマルチプロセッサシ
    ステムにおいて、前記複数のプロセスの内のいずれかのプロセスがデータ
    をアクセスしているために当該データにアクセスするこ
    とができず待ち状態になっている前記複数のプロセスの
    内の別のプロセスがある場合に、当該別のプロセス中で
    待ち状態となっている当該データへのアクセス命令を
    憶するロード・モジュール実行手段と、 前記ロード・モジュール実行手段が記憶した前記アクセ
    ス命令を含む第1の命令ストリームと当該第1の命令ス
    トリームを含むプロセス中で前記データをアクセスしな
    い第2の命令ストリームとを入れ換えるように、前記目
    的プログラムの元となるソースプログラムを修正するソ
    ースプログラム書き換え手段と 前記ソースプログラム書き換え手段が書き換えた前記ソ
    ースプログラムをコンパイルして目的プログラムを生成
    するコンパイル手段と を備えたことを特徴とする並列プ
    ロセスを含むプログラムの修正装置。
  2. 【請求項2】 前記ソースプログラム書き換え手段が、
    前記第2の命令ストリームを特定する条件が、さらに、
    前記データとは依存関係がある処理を含まないという条
    件を含むことを特徴とする請求項1記載の並列プロセス
    を含むプログラムの修正装置。
  3. 【請求項3】 前記ソースプログラム書き換え手段が、
    前記第2の命令ストリームを特定する条件が、さらに、
    第1の命令ストリームとの間に副作用を持つ関数呼び出
    しおよび分岐処理を含まないという条件を含むことを特
    徴とする請求項1および請求項2記載の並列プロセスを
    含むプログラムの修正装置。
  4. 【請求項4】 前記ソースプログラム書き換え手段が、
    前記第2の命令ストリームを特定する条件が、さらに、
    最も処理時間が長いという条件を含むことを特徴とする
    請求項1〜請求項3のいずれかに記載の並列プロセスを
    含むプログラムの修正装置。
  5. 【請求項5】 複数のプロセスを含む目的プログラムを
    複数のプロセッサで並列に実行するマルチプロセッサシ
    ステムにおいて、前記複数のプロセスの内のいずれかのプロセスがデータ
    をアクセスしているた めに当該データにアクセスするこ
    とができず待ち状態になっている前記複数のプロセスの
    内の別のプロセスがある場合に、当該別のプロセス中で
    待ち状態となっている当該データへのアクセス命令を
    憶するロード・モジュール実行ステップと、 前記ロード・モジュール実行ステップが記憶した前記ア
    クセス命令を含む第1の命令ストリームと当該第1の命
    令ストリームを含むプロセス中で前記データをアクセス
    しない第2の命令ストリームとを入れ換えるように、前
    記目的プログラムの元となるソースプログラムを修正す
    るソースプログラム書き換えステップと 前記ソースプログラム書き換えステップが書き換えた前
    記ソースプログラムをコンパイルして目的プログラムを
    生成するコンパイルステップと を含むことを特徴とする
    並列プロセスを含むプログラムの修正方法。
  6. 【請求項6】 前記ソースプログラム書き換えステップ
    において、前記第2の命令ストリームを特定する条件
    が、さらに、前記データとは依存関係がある処理を含ま
    ないという条件を含むことを特徴とする請求項5記載の
    並列プロセスを含むプログラムの修正方法。
  7. 【請求項7】 前記ソースプログラム書き換えステップ
    において、前記第2の命令ストリームを特定する条件
    が、さらに、第1の命令ストリームとの間に副作用を持
    つ関数呼び出しおよび分岐処理を含まないという条件を
    含むことを特徴とする請求項5および請求項6記載の並
    列プロセスを含むプログラムの修正方法。
  8. 【請求項8】 前記ソースプログラム書き換えステップ
    において、前記第2の命令ストリームを特定する条件
    が、さらに、最も処理時間が長いという条件を含むこと
    を特徴とする請求項5〜請求項7のいずれかに記載の並
    列プロセスを含むプログラムの修正方法。
JP8229089A 1995-09-14 1996-08-29 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体 Expired - Fee Related JP3006505B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8229089A JP3006505B2 (ja) 1995-09-14 1996-08-29 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP7-237227 1995-09-14
JP23722795 1995-09-14
JP8229089A JP3006505B2 (ja) 1995-09-14 1996-08-29 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体

Publications (2)

Publication Number Publication Date
JPH09138781A JPH09138781A (ja) 1997-05-27
JP3006505B2 true JP3006505B2 (ja) 2000-02-07

Family

ID=26528633

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8229089A Expired - Fee Related JP3006505B2 (ja) 1995-09-14 1996-08-29 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体

Country Status (1)

Country Link
JP (1) JP3006505B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120058455A (ko) * 2009-04-28 2012-06-07 인터내셔널 비지네스 머신즈 코포레이션 멀티 스레드 상에서 동작하는 프로그램의 프로그램 코드를 록 충돌이 적은 프로그램 코드로 변환하기 위한 방법, 및 그 컴퓨터 프로그램 및 컴퓨터 시스템

Also Published As

Publication number Publication date
JPH09138781A (ja) 1997-05-27

Similar Documents

Publication Publication Date Title
US5093916A (en) System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks
CA2880884C (en) Dependency graph parameter scoping
US6446258B1 (en) Interactive instruction scheduling and block ordering
WO2010013370A1 (ja) プログラム変換装置及びプログラム変換方法
US20020013937A1 (en) Register economy heuristic for a cycle driven multiple issue instruction scheduler
JP2008546086A (ja) 共有リソースのためのアクセス協調を伴うプログラムコードを変換する方法および装置
JP2818016B2 (ja) プロセス並列実行方法および装置
US10838768B2 (en) Method for optimizing memory access in a microprocessor including several logic cores upon resumption of executing an application, and computer implementing such a method
JP3006505B2 (ja) 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体
JP2005129001A (ja) プログラム実行装置、マイクロプロセッサ及びプログラム実行方法
US5875337A (en) Modifier for a program executing parallel processes that reduces wait time for access to a shared resource
WO2021047662A1 (en) Method and apparatus for enabling autonomous acceleration of dataflow ai applications
Wood et al. Triton: a domain specific language for cyber-physical systems
JP2004240953A (ja) コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。
US5369774A (en) Method and apparatus for handling array type data in a data driven type information processor
JPH05242051A (ja) タスクスケジューリング方式
JP2010140344A (ja) コンパイルシステム及びコンパイル方法
JP2003076558A (ja) プログラム実行制御方法及びプログラム実行制御プログラム
CN117762440A (zh) 应用程序的更新方法、装置、电子设备及存储介质
KR100293932B1 (ko) 소프트웨어 코드인 이미지의 후처리 방법
JPS63163636A (ja) 並列処理実行方式
JPH03255533A (ja) プログラミング言語処理システムにおけるシンボル管理方式
JPH08212103A (ja) マルチスレッド・プロセッサのテスト・データ作成方法
JPH0553827A (ja) ダイナミツクリンク最適化方式
JPH04308934A (ja) 電子計算機

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19991026

LAPS Cancellation because of no payment of annual fees