JP5228552B2 - プロセス間通信機構 - Google Patents

プロセス間通信機構 Download PDF

Info

Publication number
JP5228552B2
JP5228552B2 JP2008069851A JP2008069851A JP5228552B2 JP 5228552 B2 JP5228552 B2 JP 5228552B2 JP 2008069851 A JP2008069851 A JP 2008069851A JP 2008069851 A JP2008069851 A JP 2008069851A JP 5228552 B2 JP5228552 B2 JP 5228552B2
Authority
JP
Japan
Prior art keywords
index
data
communication mechanism
inter
processes
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
JP2008069851A
Other languages
English (en)
Other versions
JP2009223788A (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 Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor 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 Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2008069851A priority Critical patent/JP5228552B2/ja
Publication of JP2009223788A publication Critical patent/JP2009223788A/ja
Application granted granted Critical
Publication of JP5228552B2 publication Critical patent/JP5228552B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Systems (AREA)

Description

本発明は、並列に動作する2つのプロセス間のプロセス間通信機構に関する。
近年、CPUに周辺装置が接続された製品等の動作を検証する場合に、CPUのソフトウェアと周辺装置の動作をシミュレートするソフトウェア(ハードウェアのモデル化したもの)とをハードウェア/ソフトウェア協調検証装置にインストールし、検証装置上で実行する方法が使用される。このような場合、検証対象のソフトウェア及びハードウェアを検証装置上で実行可能なコードとしてモデル化し, シミュレーションを行う必要があり、ソフトウェアとハードウェアモデルは互いに通信を行う必要がある。このとき、ソフトウェアのプログラムを実行するプロセスと、ハードウェアのモデルのプログラムを実行するプロセスとは並列に実行される。
特許文献1には、計算機相互間のデータの授受方法が開示されている。特許文献2には、共有メモリへの送信側プロセッサと受信側プロセッサのアクセスの競合を削減する技術が開示されている。特許文献3には、複数のCPU間の通信において、相手のCPUの動作状態によらず、互いの待ち時間を不要とする技術が開示されている。
特開平6−131243号公報 特開平8−227402号公報 特開2002−207713号公報
2つのプロセスが並列に実行され、互いにデータを通信する必要のある装置、たとえば、SW/HW協調検証装置上で通信を行う際に解決しなければならない課題としては、以下のようなものがある。
1: シミュレーション上の矛盾の排除
並列に動作するプロセス間通信にOS付属の通信機能などをそのまま使用した場合、2つのプロセスの動作順序によっては、まだ読み出すべきでない、シミュレーション時刻でみるところの未来のデータが読まれてしまう状況が発生する。
2: 高速性の確保
プロセス間通信に、書き込みや読み出しを行うデータの数の通信バッファを使用し, 同期処理中に通信バッファのコピーを行った場合,コピーデータ数およびそのコピー実行頻度が多いと 全シミュレーション時間中にプロセスの並列動作できない時間(=クリティカルパス)の割合が増え, シミュレーションの高速性が損なわれる。
本プロセス間通信機構の課題は、並列に動作するプロセス間の通信において、データの転送の時間順序を守りつつ、プロセスの実行を高速に行うことのできるプロセス間通信機構を提供することである。
本プロセス間通信機構は、少なくとも2つのプロセスが並列に実行され、プロセス間でデータの通信を行う装置におけるプロセス間通信機構であって、送信されるべきデータを書き込む領域と、受信されるべきデータを読み出す領域とを、動的に設定されるインデックスで指定するリングバッファを備え、前のプロセスの実行周期と次のプロセスの実行周期との間の空き時間において、該リングバッファを介して、プロセス間でデータがやり取りされる。
本実施形態によれば、並列に動作するプロセス間の通信において、データの転送の時間順序を守りつつ、プロセスの実行を高速に行うことのできるプロセス間通信機構を提供することができる。
図1は、本実施形態の概念を示す図である。
本実施形態では、プロセスの実行周期である所定の周期間隔(コピー実行時間よりも充分長い時間周期たとえば、1ms)毎に, 書き込み側プロセス(procA)から読み出し側プロセス(procB)へデータを転送するプロセス間通信機構であり、 次のような機能を持つ。
・procA側で書き込んだ順に, procB側で読み出す。
・procA側で書き込んだデータは, procB側に送られるまでprocB上のモデルから読み出さない。
・procA側からは, 1ms区間に所定の個数, データを書き込む。
データを送る処理は, n msからn+1msまでの全ての書き込み動作の後, かつn+1msからn+2msまでの全ての読み出し動作の前に行われる(n = 0,1,2...)。図1においては、0msから1msのシミュレーションの所定周期において、procAは、所定の数の(図1では、3つの)データの書き込み(push:3、push:4、push:5)を行う。1msから始まる次のシミュレーション周期において、procBが読み出しをはじめる前(図1では、1msの時点となっているが、これに限られたものではない)に、procAによって書き込まれたデータがprocB側に送られ、procBは、送られてきたデータを読み出す(pop:3、pop:4、pop:5)。
ここで、本実施形態では、procAの書き込みをリングバッファに行い、procBの読み出しをこのリングバッファから行うようにする。データの転送は、以下に説明するように、リングバッファ上の書き込み、読み出し位置の設定を行うことに対応することになる。これにより、2つのプロセスの書き込み/読み出しタイミングが1つのリングバッファ上で統制されることになり、複数のバッファを設けて、バッファ間でデータをやり取りするという複雑な制御も必要なくなる。
図2は、リングバッファの構成を示す図である。
段数は所定のデータ数の2倍とする。所定のデータ数とは、1回のシミュレーション周期で、書き込みや読み出しを行いたいデータの量であり、シミュレーションの内容などによって適宜設定されるべきものである。リングバッファは、データの書き込み/読み出し量の単位量の領域(コマ)が複数接続された構成とする。
Write-Index10, Read-Index11(リングバッファ上のポインタであり、Write-Index10は、書き込み可能領域の開始位置を、Read-Index11は読み出し可能の開始位置を示す)を配置し, それぞれに対応する終端インデックス(Write-Terminal12(書き込み可能領域の終了位置, Read-Terminal13(読み出し可能領域の終了位置))を配置する。
Write-Index10はバッファに書き込みを行うたびにコマを進め, Write-Terminal12と同じ位置の場合に書き込みを行った場合、オーバーフローになったとし、書き込みエラーとなったとする。Read-Index11はバッファから読み出しを行うたびにコマを進め, Read-Terminal13と同じ位置の場合に読み出しを行った場合、アンダーフローとなったとし、読み出しエラーになったとする。
1ms毎の データ転送処理 は, 次の処理によって行う
まず、Write-Terminal12をWrite-Index10から所定のデータ数分進んだ位置に配置する。すなわち、Write-Index10をWrite-Terminal12から書き込みを行いたいデータ量の分だけ進んだ位置に配置する。次に、Read-Terminal13をWrite-Index10の位置に配置する。以上の操作の結果, Read-Terminal13がRead-Index11の位置から所定のデータ数+1コマ分以上進んだ位置に配置された場合, バッファオーバーフローの処理を行う。
図3は、データの転送処理タイミングを説明する図である。
シミュレーションの周期が1msとした場合、データ転送処理を, n.99999999msのタイミングで動作させる。ここで、nは整数とする。
2つのプロセスを並列に独立に実行するシミュレーション装置等の場合、同じシミュレーション時刻に動作するモデルの動作順序は非決定的となる。これを回避するため、装置のユーザがモデルの動作に使用できない時刻を使用してデータの送信処理を行う。ユーザは、通常プロセスの動作のプログラミングをナノ秒より大きい時間単位しか使用できないと制約すれば, それ以下のピコ秒単位を使用できない時刻を使用してデータの送信処理を行う。すなわち、ユーザは、シミュレーションの実行制御を1ns単位でプログラミングすることはできるが、ピコ秒単位では、プログラミングできないため、プロセスの実際の実行時間とプログラミングによる設定時刻との間にピコ秒単位でのタイムラグがあるので、このピコ秒単位のタイムラグを利用して、データの転送を行う。なお、本実施形態では、データの転送は、上記したように、リングバッファ上でのWrite-Index、Write-Terminal、Read-Index、Read-Terminalの設定処理となる。
図3においては、0.999998msの時刻(タイミング)において、Model-5、Model-6を処理し、0.999999msの時刻(タイミング)において、Model-7、Model-8を処理し、1.000000msでModel-1、Model-2を処理している。しかし、0.999999msから1.000000msの間は、ユーザがモデル処理のためにプログラミングすることはできない時間帯であるので、このような時間帯をデータの送信処理に使う。
図4は、本実施形態に従った、書き込み側プロセス(ProcA)でのシミュレーション全体の処理フローである。
図4に従うと、シミュレーション全体は、シミュレーション(1ms:より一般には、シミュレーション周期:ステップS10)を行った後、バリア同期(A)(ステップS11)をとって、データ転送処理(ステップS12〜S14)をし、さらにバリア同期 (B)(ステップS15)をとって、シミュレーション(ステップS10)に戻るステップからなる。
データ転送処理では、Write-TerminalをWrite-Indexから所定の数進んだ位置に配置する(ステップS12)。これによって,次の周期(1ms区間)で書き込むことのできるバッファを確保する。次に、Read-Terminalを,Write-Indexの位置に配置する(ステップS13)。これによって,次の周期(1ms)で読み出すことのできる領域を指定する。そして、Read-TerminalがRead-Index+所定の数より進んだ位置に配置されているか否かを判断(ステップS14)し、ステップS14の判断がNoの場合には、ステップS15に進み、Yesの場合,バッファオーバーフローとして異常終了する。
バッファ全体の容量は、書き込みたいデータ量である所定の数の2倍確保されており、Write領域(Write-IndexとWrite-Terminalによって示されている領域)はその半分(所定の数)を確保する。従って,Read-IndexとRead-Terminalが示す領域の大きさは所定の数以下でなければならない。
図5は、本実施形態に従った、読み出し側プロセス(ProcB)でのシミュレーション全体の処理フローである。
図5に従うと、シミュレーション全体は、シミュレーション(1ms:より一般には、シミュレーション周期:ステップS20)を行い、バリア同期(A)(ステップS21)をとり、バリア同期(B)(ステップS22)をとるステップからなる。
バリア同期(A), (B) は,並列に動作するProcA, ProcBの動作制御を行う。すなわち、ProcA, ProcBのどちらか片方がバリア同期を処理すると,もう片方がバリア同期を処理するまで次の処理を保留する。バリア同期(A) は,1msのシミュレーションが終了し,データ転送処理を開始するときに処理する。バリア同期(B) は,データ転送処理が終了し,1msのシミュレーションを開始するときに処理する。読み出し側プロセスでは,データ転送処理を行わず、書き込み側プロセスがデータ転送処理を完了するのを待機し、データ転送処理が完了したら、データを読み出す。
図6は、本実施形態に従った、書き込み処理の処理フローである。
ユーザーモデル内で行う書き込み処理は以下のとおりである。書き込みを開始すると、Write-IndexとWrite-Terminalの指し示す位置が同じか否かを判断し(ステップS30)、Yesの場合には、バッファオーバーフローとして異常終了する。Write-IndexとWrite-Terminalの指し示す位置が異なる場合、Write-Indexが指す位置へデータを書き込み(ステップS31)、Write-Indexの位置を1つ進め(ステップS32)、書き込み処理を終了する。
図7は、本実施形態に従った、読み出し処理の処理フローである。
読み出し処理は以下のとおりである。Read-IndexとRead-Terminalの指し示す位置が同じか否かを判断し(ステップS40)、Yesの場合,バッファアンダーフローとして異常終了する。Read-IndexとRead-Terminalの指し示す位置が異なる場合,Read-Indexが指す位置からデータを読み出し(ステップS41)、Read-Indexの位置を1つ進める(ステップS42)。
本実施形態の概念を示す図である。 リングバッファの構成を示す図である。 データの転送処理タイミングを説明する図である。 本実施形態に従った、書き込み側プロセス(ProcA)でのシミュレーション全体の処理フローである。 本実施形態に従った、読み出し側プロセス(ProcB)でのシミュレーション全体の処理フローである。 本実施形態に従った、書き込み処理の処理フローである。 本実施形態に従った、読み出し処理の処理フローである。
符号の説明
10 Write-Index
11 Read-Index
12 Write-Terminal
13 Read-Terminal

Claims (5)

  1. 少なくとも2つのプロセスが並列に実行され、プロセス間でデータの通信を行う装置におけるプロセス間通信機構であって、
    送信されるべきデータを書き込む領域を書き込み可能領域開始位置を示す第1のインデックスと書き込み可能領域終了位置を示す第2のインデックスで指定し、受信されるべきデータを読み出す領域を読み出し可能領域開始位置を示す第3のインデックスと読み出し可能領域終了位置を示す第4のインデックスで指定し、前記第1、第2、第3および第4のインデックスを配置し、前記第1のインデックスの位置を書き込み処理に応じて進め、前記第3のインデックスの位置を読み出し処理に応じて進め、前記第1のインデックスの位置が前記第2のインデックスの位置と一致した場合に書込みエラーになったとし、前記第3のインデックスの位置が前記第4のインデックスの位置と一致した場合に読み出しエラーになったとする、1回のプロセスの実行周期で送信されるデータ量の2倍のデータの格納容量を有するリングバッファを備え、
    前のプロセスの実行周期と次のプロセスの実行周期との間の空き時間において、前記リングバッファを介して、書き込み側プロセスから読み出し側プロセスへ前記データを転送し、
    更に前記リングバッファは前記転送周期毎に、前記第2のインデックスを前記第1のインデックスの位置から所定の数進んだ位置に配置し、前記第4のインデックスを前記第1のインデックスの位置に配置し、前記第4のインデックスの位置が前記第3のインデックスの位置より前記所定の数+1以上進んだ位置に配置された場合に前記リングバッファがオーバーフローになったとする、
    ことを特徴とするプロセス間通信機構。
  2. 前記プロセス間通信機構は、ソフトウェアをシミュレートするプロセスと、ハードウェアをシミュレートするプロセスとを並列に実行し、動作を検証するハードウェア/ソフトウェア協調検証装置における機構であることを特徴とする請求項1に記載のプロセス間通信機構。
  3. 前記プロセスの実行周期は、通信のためのデータコピー実行時間よりも充分長い所定の周期であることを特徴とする請求項に記載のプロセス間通信機構。
  4. 前記プロセスの実行周期において、プロセスの実行の開始と終了において、前記少なくとも2つのプロセスについてバリア同期を取ることを特徴とする請求項1に記載のプロセス間通信機構。
  5. 前記データのやり取りは、プロセスの終了のバリア同期の後、プロセスの開始のバリア同期の前に行われることを特徴とする請求項に記載のプロセス間通信機構。
JP2008069851A 2008-03-18 2008-03-18 プロセス間通信機構 Expired - Fee Related JP5228552B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008069851A JP5228552B2 (ja) 2008-03-18 2008-03-18 プロセス間通信機構

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008069851A JP5228552B2 (ja) 2008-03-18 2008-03-18 プロセス間通信機構

Publications (2)

Publication Number Publication Date
JP2009223788A JP2009223788A (ja) 2009-10-01
JP5228552B2 true JP5228552B2 (ja) 2013-07-03

Family

ID=41240463

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008069851A Expired - Fee Related JP5228552B2 (ja) 2008-03-18 2008-03-18 プロセス間通信機構

Country Status (1)

Country Link
JP (1) JP5228552B2 (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2908202B2 (ja) * 1993-11-10 1999-06-21 甲府日本電気株式会社 論理シミュレータにおける同期装置と制御情報作成装置
JPH07210521A (ja) * 1994-01-10 1995-08-11 Mitsubishi Heavy Ind Ltd リアルタイムシミュレーションシステム
JP3573546B2 (ja) * 1995-10-27 2004-10-06 富士通株式会社 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置
JP3492105B2 (ja) * 1996-08-30 2004-02-03 株式会社東芝 ハードウェア/ソフトウェア協調シミュレーション装置及びシミュレーション方法
JP3479623B2 (ja) * 1999-12-28 2003-12-15 川崎重工業株式会社 マイクロコンピュータ装置
JP2004094800A (ja) * 2002-09-03 2004-03-25 Toshiba Corp プログラムシミュレーション装置およびプログラムシミュレーション方法

Also Published As

Publication number Publication date
JP2009223788A (ja) 2009-10-01

Similar Documents

Publication Publication Date Title
JP4529063B2 (ja) システムシミュレータ、シミュレーション方法及びシミュレーションプログラム
JP4667206B2 (ja) マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
JP5595633B2 (ja) シミュレーション方法及びシミュレーション装置
JP4975544B2 (ja) シミュレーション装置及びプログラム
EP3105761B1 (en) Memory physical layer interface logic for generating dynamic random access memory (dram) commands with programmable delays
MX2012005183A (es) Linea de espera de comandos para componente periferico.
JP2008065640A (ja) シミュレーション装置およびそのシミュレーション制御方法
US8237683B2 (en) Touch panel interface system used on touch panel, touch device, and method thereof
JP2008282308A (ja) 協調検証装置、協調検証方法、協調検証プログラム
JP2008282314A (ja) シミュレータ、シミュレーション方法
US7228513B2 (en) Circuit operation verification device and method
JP5228552B2 (ja) プロセス間通信機構
JP2011039781A (ja) 協調シミュレーション装置及びシミュレーション方法
JP2005141532A (ja) システムデバッグ装置
JP5226848B2 (ja) シミュレーション装置及びプログラム
TWI242718B (en) Method for dynamically arranging an operating speed of a microprocessor
JP6859878B2 (ja) シミュレーションプログラム、方法、及び装置
JP2000276502A (ja) ソフトウエアシミュレータ
JP2002082813A (ja) プログラムロジック装置
JP2009223762A (ja) 協調検証装置
JP2007018440A (ja) アーキテクチャ検証装置
JP2006227668A (ja) メモリモデルとプログラムと論理回路検証方法
JP6119442B2 (ja) シミュレーション装置、シミュレーション装置の動作方法およびシミュレーションプログラム
JP3678656B2 (ja) インタフェース回路、論理回路検証方法、論理装置、情報処理装置
JP2006127017A (ja) 論理検証手法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120420

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120717

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121015

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130128

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: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130304

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

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5228552

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees