JPH02197954A - 並列実行再現方式 - Google Patents

並列実行再現方式

Info

Publication number
JPH02197954A
JPH02197954A JP1018040A JP1804089A JPH02197954A JP H02197954 A JPH02197954 A JP H02197954A JP 1018040 A JP1018040 A JP 1018040A JP 1804089 A JP1804089 A JP 1804089A JP H02197954 A JPH02197954 A JP H02197954A
Authority
JP
Japan
Prior art keywords
task
time
execution
buffer
memory
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.)
Pending
Application number
JP1018040A
Other languages
English (en)
Inventor
Shoichi Sakon
佐近 彰一
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 JP1018040A priority Critical patent/JPH02197954A/ja
Publication of JPH02197954A publication Critical patent/JPH02197954A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は並列実行再現方式に関し、特にメモリを共有す
る複数のプロセッサおよび全プロセッサに共通のタイマ
(ある程度高精度の経過時間タイマ)を有するマルチプ
ロセッサシステムにおいてマルチタスキングプログラム
の実行の再現性を確保するための並列実行再現方式に関
する。
〔従来の技術〕
マルチプロセンサシステムでは、プログラムの実行のタ
ーンアラウンドタイムを短縮するために、1つのプログ
ラムを複数のタスクに分けそのタスクを複数のプロセッ
サで並列に実行することが行われる(この場合のプログ
ラムをマルチタスキングプログラムという)。
従来、このようにタスクを同時並列に実行した場合には
、各タスクが共有データにアクセスする順序がマルチタ
スキングプログラムの実行毎に必ずしも一定ではないた
めに、その共有データの値が実行毎に変化してマルチタ
スキングプログラムの実行の再現性がなくなるという事
態が生じていた。
また、マルチタスキングプログラムのデバッグにおいて
プログラム実行結果が変化する場合には、それがユーザ
プログラム(マルチタスキングプログラム)のバグ(誤
り)によるものなのか上述のような非再現性によるもの
なのかを識別することが困難であった(バグによるもの
であれば、マルチタスキングプログラムのどこにバグが
あるのかを調べるのに、マルチタスキングプログラムを
何度も実行してバグに起因するプログラム実行結果の変
化を抽出する必要があった)。
〔発明が解決しようとする課題〕
上述した従来の技術では、すでに述べたようにマルチタ
スキングプログラムの実行の再現性を保証することがで
きないという欠点がある。
また、マルチタスキングプログラムのデバッグ(対話型
のデバッガ等を用いたデバッグ)を行う場合に、プログ
ラム実行結果の変化がマルチタスキングプログラムのバ
グによるものなのか非再現性によるものなのかを識別す
ることが困難であるので、バグを調べるのに膨大な時間
を必要とするという欠点がある(また、バグの調査にお
いて共有データの値を見るためにその値を出力するよう
にマルチタスキングプログラムを変更すると、その実行
のタイミングが非再現性に基づいて変化してバグに起因
する現象が起こらなくなってしまうかもしれず、そのよ
うな場合にはデバッグが不可能となってしまうという欠
点がある)。
本発明の目的は、上述の点に鑑み、マルチタスキングプ
ログラムの最初の実行時(以下、単に実行時という)の
記録をログファイルに採取してそれ以後の再現実行時(
以下、再現時という)にはそのログファイルの記録に基
づいてマルチタスキングプログラムを実行することによ
り、記録をとったマルチタスキングプログラムの実行時
の実行経路と全く同じ実行経路を再現時に再現できる並
列実行再現方式を提供することにある。
〔課題を解決するための手段〕
本発明の並列実行再現方式は、メモリを共有する複数の
プロセッサおよび全プロセッサに共通のタイマを有する
マルチプロセッサシステムにおいて、マルチタスキング
プログラムの実行時に各プロセッサ上で実行されるタス
ク毎にタスク生成時刻、タスク終了時刻、タスク間同期
時刻および共有データアクセス時刻等の記録時刻をタイ
マから求めてメモリ上のバッファに記録するロギング手
段と、マルチタスキングプログラムの実行時に実行が終
了した場合やバッファあふれが発生した場合に前記ロギ
ング手段により記録されているメモリ上のバッファ内の
記録時刻をログファイル上に書き出す出力手段と、この
出力手段によりログファイル上に書き出された各タスク
の記録時刻をマルチタスキングプログラムの再現時にメ
モリ上のバッファに読み込む入力手段と、マルチタスキ
ングプログラムの再現時に前記入力手段によりメモリ上
のバッファに読み込まれた各タスクの記録時刻に基づき
各タスクの実行の順序関係を実行時と同様に保つように
タスクの実行スケジュールを制御する制御手段とを有す
る。
〔作用〕
本発明の並列実行再現方式では、ロギング手段がマルチ
タスキングプログラムの実行時に各プロセッサ上で実行
されるタスク毎にタスク生成時刻。
タスク終了時刻、タスク間同期時刻および共有データア
クセス時刻等の記録時刻をタイマから求めてメモリ上の
バッファに記録し、出力手段がマルチタスキングプログ
ラムの実行時に実行が終了した場合やバッファあふれが
発生した場合にロギング手段により記録されているメモ
リ上のバッファ内の記録時刻をログファイル上に書き出
し、入力手段が出力手段によりログファイル上に書き出
された各タスクの記録時刻をマルチタスキングブロダラ
ムの再現時にメモリ上のバッファに読み込み、制御手段
がマルチタスキングプログラムの再現時に入力手段によ
りメモリ上のバッファに読み込まれた各タスクの記録時
刻に基づき各タスクの実行の順序関係を実行時と同様に
保つようにタスクの実行スケジュールを制御する。
〔実施例〕
次に、本発明について図面を参照して説明する。
第1図talおよび(blは、本発明の並列実行再現方
式の一実施例の構成を示すブロック図である(第1図t
alは本実施例に係るマルチタスキングプログラムの実
行時の状態を示しており、第1図(blはマルチタスキ
ングプログラムの再現時の状態を示している)0本実施
例の並列実行再現方式は、プロセッサ1aおよび1bと
、メモリ2と、タイマ(経過時間タイマ)3と、ログフ
ァイル4と、ロギング手段5と、出力手段6と、入力手
段7と、制御手段8とを含んで構成されている(出力手
段6は実行時にのみ動作し、入力手段7および制御B手
段8は再現時にのみ動作する)。
プロセッサ1aおよび1bでは、マルチタスキングプロ
グラムを構成するタスクllaおよびllbが実行され
ている(タスクitaおよびllb間では同!!l11
0がとられている)。
メモリ2は、共有データ21と、バッファ22とを含ん
で構成されている。
マルチタスキングプログラムの実行時に、ロギング手段
5は、プロセッサ1aおよびlb上のタスクllaおよ
びllbのタスク生成時刻、タスク終了時刻、タスク間
同期時刻(タスクllaおよび11bが他のプロセッサ
tbおよびla上のタスク11bおよびllaとの同期
10を行った時刻)および共有データアクセス時刻(タ
スクIlaおよびllbがメモリ2内の共有データ21
をアクセスした時刻)をタイマ3から求めてタスクll
aおよびllb毎にメモリ2内のバッファ22に記録す
る(このようにして記録された時刻を総称して記録時刻
という)。
マルチタスキングプログラムの実行時に実行が終了した
場合やバッファあふれが発生した場合に、出力手段6は
、バッファ22内の記録時刻をログファイル4に書き出
していく。
マルチタスキングプログラムの再現時に、入力手段7は
実行時にログファイル4に書き出された各タスクlla
およびllbの記録時刻をバッファ22に読み込み、制
御手段8はその記録時刻に基づいて各タスクllaおよ
びllbの実行の順序関係を実行時と同様に保つように
タスクllaおよびllbの実行スケジュールを制御す
る。
次に、このように構成された本実施例の並列実行再現方
式の動作について説明する。
まず、第1図fatおよび第2図を参照してマルチタス
キングプログラムの実行時の動作について説明する。
第2図は、第1図fa)に示すマルチタスキングプログ
ラムの実行時におけるタスクllaおよびllbとバッ
ファ22との状態を示す閏である。
タスクllaおよびllbの2つのタスクはプロセッサ
laおよび1b上で同時に動いている(タスク生成時刻
とタスク終了時刻との間の時間が重複している)。
タスクttaは、共有データ21内のデータ(変数)X
に1を代入し、その後データXに2を代入している。
タスクllbは、タスクllaがデータXに2を代入し
た後にデータXを引用してそれを共有データ21内のデ
ータYに代入している。すなわち、データYには2が代
入される。
ロギング手段5は、タスク11aおよびllbのタスク
生成時刻ならびにタスクllaおよびタスク11bのタ
スク終了時刻をバッファ22に記録する。また、タスク
llaがデータXに1を代入した時刻(時刻(1)とす
る)、タスクllaがデータXに2を代入した時刻(時
刻(2)とする)およびタスクllbがデータXを引用
してそれをデータYに代入した時刻(時刻(3)とする
)をそれぞれバッファ22に記録する(時刻+11. 
(2+および(3)は共有データアクセス時刻である)
。さらに、タスクllaとタスクllbとが同gtoを
とった時刻(タスク間同期時刻0圓示せず)もバッファ
22に記録する。
上述の全ての時刻(記録時刻)の記録およびマルチタス
キングプログラムの終了時に、出力手段6はバッファ2
2の内容(記録時刻)をログファイル4に書き出す。
なお、上述の記録の途中でバッファ22があふれた場合
には、出力手段6はその時点でのバッフ122の内容を
ログファイル4に書き出し、バッフ122をクリアして
バッファ22の先頭から記録を続けるようにする。
次に、第1図(b)および第3図を参照してマルチタス
キングプログラムの再現時の動作について説明する。
第3図は、第1図偽)に示すマルチタスキングプログラ
ムの再現時におけるタスクllaおよびllbとバッフ
ァ22との状態を示す図である。
入力手段7は、ログファイル4から実行時に格納されて
いるタスクllaおよびllb毎の記録時刻をメモリ2
内のバッファ22に読み込む。
制御手段8は、入力手段7によりバッファ22に読み込
まれた記録時刻に基づいて実行順序が実行時と変わらな
いように各タスクllaおよびllbの動作をtklH
ll(スケジュール制御)する。
ここで、タスクllaおよびllbの生成、タスク11
aによる共有データ21内のデータXへのアクセスなら
びにタスクIlaおよびllb間の同期lO等は通常通
りに(実行時と同様に)実行されるものとする(このよ
うな実行に係る時刻はタイマ3に基づきロギング手段5
によりバッファ22に記録される)。
いま、タスクttaがデータXに1を代入した後であり
データXに2を代入する前に、タスクllbがデータX
を引用してそれをデータYに代入しようとしたとする。
仮にこのまま実行が行われるとすると、実行時の実行順
序と異なってタスクllbはデータXの値として実行時
の2とは異なるlを保持することになる。
制御手段8は、このような事態が生じないように以下に
示すようなスケジュール制御を行う。
まず、タスクtibがデータXを引用してそれをデータ
Yに代入しようとした時刻(時刻(4)とする)を調べ
、他のタスクllaにおいて実行時にその処理(データ
Xの引用およびデータYへの代入)より早い時刻に行わ
れた処理が全て終了しているか否かをバッファ22内の
記録時刻に基づいて調べる。
この調査で所定の処理が全て終了していれば、データX
を引用してそれをデータYに代入する処理が可能なので
、タスクllbの実行を続行させる。
上述の調査で所定の処理の中で終了していない処理があ
れば、タスクllbをウェイト状態にする。
ここでは、第3図に示すようにタスクllaにおけるデ
ータXへの2の代入が時刻(2)でありタスク11bに
おけるデータXの引用およびデータYへの代入の時刻(
4)よりも早いので、タスクllbをウェイト状態にす
る。
その後に、タスクllaにおけるデータXへの2の代入
を実行させ、この代入の終了時点でウェイト状態になっ
ているタスクllbが実行可能となるか否かを調べる(
上述の調査と同様の処理が行われる)。
この時点(時刻(3)とは限らない、実行順序さえ実行
時と同様に再現できれば必ずしも同一の時刻にする必要
がないからである)では、タスクllaにおいて実行時
にタスクllbにおけるデータXの引用およびデータY
への代入の処理より早い時刻に行われた処理が全て終了
しているので、タスク11bの実行を再開させる(この
ときには、データXの値は2となっており、データYに
は実行時と同じ値が保持されることになる)。
〔発明の効果〕
以上説明したように本発明は、ロギング手段。
出力手段、入力手段および制御手段を設けることにより
、マルチプロセッサシステムにおけるプログラムの並列
実行(マルチタスキングプログラムの実行)の完全な再
現が可能になるという効果がある。
また、対話型のデバッガ等を用いてマルチタスキングプ
ログラムをデバッグする場合に、本発明を併用してマル
チタスキングプログラムの実行の再現性を確保すること
により、マルチタスキングプログラムの実行時と再現時
とでタスクの実行のタイミングが変わることに起因して
プログラム実行結果が変化してしまうという事態が生じ
ないようにデバッグを行うことができるという効果があ
る。
【図面の簡単な説明】
第1図fatは本発明の一実施例の構成(実行時におけ
る状B)を示すブロック図、 第1図(blは本発明の一実施例の構成(再現時におけ
る状/Li)を示すブロック図、 第2図は第1図tat中のタスクおよびバッファの状態
を示す図、 第3図は第1図ibl中のタスクおよびバッファの状態
を示す図である。 図において、 la、lb・・・プロセンサ、 2・・・・・・・メモリ、 3・・・・・・・タイマ、 4・・・・・・・ログファイル、 5・・・・・・・ロギング手段、 6 ・ ・ ・ ・ ・ 7 ・ ・ ・ ・ ・ 8 ・ ・ ・ ・ ・ 10・ ・ ・ ・ ・ 11a、llb  ・ 21・ ・ ・ ・ ・ 22・ ・ ・ ・ ・ ・出力手段、 ・入力手段、 ・制御手段、 ・同期、 ・タスク、 ・共有データ、 ・バッファである。

Claims (1)

  1. 【特許請求の範囲】 メモリを共有する複数のプロセッサおよび全プロセッサ
    に共通のタイマを有するマルチプロセッサシステムにお
    いて、 マルチタスキングプログラムの実行時に各プロセッサ上
    で実行されるタスク毎にタスク生成時刻、タスク終了時
    刻、タスク間同期時刻および共有データアクセス時刻等
    の記録時刻をタイマから求めてメモリ上のバッファに記
    録するロギング手段と、マルチタスキングプログラムの
    実行時に実行が終了した場合やバッファあふれが発生し
    た場合に前記ロギング手段により記録されているメモリ
    上のバッファ内の記録時刻をログファイル上に書き出す
    出力手段と、 この出力手段によりログファイル上に書き出された各タ
    スクの記録時刻をマルチタスキングプログラムの再現時
    にメモリ上のバッファに読み込む入力手段と、 マルチタスキングプログラムの再現時に前記入力手段に
    よりメモリ上のバッファに読み込まれた各タスクの記録
    時刻に基づき各タスクの実行の順序関係を実行時と同様
    に保つようにタスクの実行スケジュールを制御する制御
    手段と を有することを特徴とする並列実行再現方式。
JP1018040A 1989-01-27 1989-01-27 並列実行再現方式 Pending JPH02197954A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1018040A JPH02197954A (ja) 1989-01-27 1989-01-27 並列実行再現方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1018040A JPH02197954A (ja) 1989-01-27 1989-01-27 並列実行再現方式

Publications (1)

Publication Number Publication Date
JPH02197954A true JPH02197954A (ja) 1990-08-06

Family

ID=11960568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1018040A Pending JPH02197954A (ja) 1989-01-27 1989-01-27 並列実行再現方式

Country Status (1)

Country Link
JP (1) JPH02197954A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03240137A (ja) * 1990-02-17 1991-10-25 Nippon Telegr & Teleph Corp <Ntt> 並列プログラムの実行再現方法
JPH07311693A (ja) * 1994-05-19 1995-11-28 Toshiba Corp デバッグ方式
JP2008287351A (ja) * 2007-05-15 2008-11-27 Fujitsu Ltd メモリシステム、メモリコントローラ、制御方法及び制御プログラム
JP2022021528A (ja) * 2020-07-22 2022-02-03 株式会社日立製作所 電子計算機、再現試験方法及びプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03240137A (ja) * 1990-02-17 1991-10-25 Nippon Telegr & Teleph Corp <Ntt> 並列プログラムの実行再現方法
JPH07311693A (ja) * 1994-05-19 1995-11-28 Toshiba Corp デバッグ方式
JP2008287351A (ja) * 2007-05-15 2008-11-27 Fujitsu Ltd メモリシステム、メモリコントローラ、制御方法及び制御プログラム
JP2022021528A (ja) * 2020-07-22 2022-02-03 株式会社日立製作所 電子計算機、再現試験方法及びプログラム

Similar Documents

Publication Publication Date Title
US11030076B2 (en) Debugging method
US11144433B2 (en) Analysis and visualization of application concurrency and processor resource utilization
EP3577564B1 (en) Efficient retrieval of memory values during trace replay
US11163677B2 (en) Dynamically allocated thread-local storage
JPH02197954A (ja) 並列実行再現方式
Bekar et al. KUDA: GPU accelerated split race checker
JPS59111533A (ja) デジタルデ−タ演算回路
JPS6116336A (ja) Fortran入出力制御処理方式
CN117331664A (zh) 基于命令驱动的并发计算系统及方法
CN117112137A (zh) 一种初始化unidbg模拟执行环境的方法、设备及介质
JPH01279346A (ja) オンラインメモリチェック方式
JPH03240137A (ja) 並列プログラムの実行再現方法
JPH04260139A (ja) ファイルアクセス処理装置
JPH02127741A (ja) トランザクション性能情報出力方式
JPH03232051A (ja) セマフォアクセス制御方法
JPH0264828A (ja) アドレストレース回路
JPS60124750A (ja) デ−タ処理方式
JPH027129A (ja) 演算処理装置
JPS63292248A (ja) デ−タ処理システム
JPS61843A (ja) 資源ステ−タス保持方式
JPS62266629A (ja) デ−タ処理装置の事象記録方法
JPH07191875A (ja) デバッガー
JPS63316148A (ja) ヒストリ制御方式
JPS61157948A (ja) 割込み要因解析装置
JPH03160547A (ja) データ処理装置の入出力バッファ制御方法