JP2002509629A - System architecture for distributed discrete event simulation - Google Patents

System architecture for distributed discrete event simulation

Info

Publication number
JP2002509629A
JP2002509629A JP50733699A JP50733699A JP2002509629A JP 2002509629 A JP2002509629 A JP 2002509629A JP 50733699 A JP50733699 A JP 50733699A JP 50733699 A JP50733699 A JP 50733699A JP 2002509629 A JP2002509629 A JP 2002509629A
Authority
JP
Japan
Prior art keywords
event
events
head
list
calculated
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
JP50733699A
Other languages
Japanese (ja)
Inventor
コーエン,アレイン.
Original Assignee
オプネット テクノロジーズ インコーポレイテッド
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 オプネット テクノロジーズ インコーポレイテッド filed Critical オプネット テクノロジーズ インコーポレイテッド
Publication of JP2002509629A publication Critical patent/JP2002509629A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

(57)【要約】 離散イベントシミュレーションを実行する方法、装置、およびコンピュータ読取り可能媒体は、イベントを含むイベントリストを使用する。イベントリストでは、1つのイベントがヘッドイベントとして示され、各イベントは未計算イベント、計算済みイベント、または計算中イベントとして示される。未計算イベントは、選択され、少なくとも1つのイベント事前計算プロセスのうちの1つに転送される。イベント事前計算プロセスは、選択された未計算イベントの計算を行う。未計算ヘッドイベントは実行され、計算済みヘッドイベントは検証される。 (57) Summary Methods, apparatus, and computer-readable media for performing discrete event simulations use an event list that includes events. In the event list, one event is shown as a head event, and each event is shown as an uncalculated event, a calculated event, or a calculating event. Uncalculated events are selected and forwarded to one of the at least one event pre-computation process. The event pre-calculation process calculates the selected uncalculated event. Uncalculated head events are executed and calculated head events are verified.

Description

【発明の詳細な説明】 離散イベントシミュレーションを分散するシステムアーキテクチャ 関連出願の相互参照 本出願は、1997年7月1日に出願され、参照により関連付けられる米国仮 特許出願第60/052,778号の特典として特許請求する。 発明の分野 本発明は、全般的には離散イベントシミュレーション(DES)および並列処 理に関する。 発明の背景 DESの一般的なモデルについて説明するが、特定のシミュレーションアプリ ケーション・ドメインを対象とするわけではない。DESをそのオブジェクトお よびイベント、イベント入力およびイベント出力、時間およびイベントの実行に 関して論じる。 オブジェクトおよびイベント DESは、指定されたシステムのふるまいを状態変化のシーケンスに分解する ことによって、このふるまいを予測または再現することを試みる。システムの各 状態変化と、状態変化が起こる可能性のある各瞬間とを「イベント」と呼ぶ。 一般に、シミュレートされるシステムは、「オブジェクト」と呼ばれるシステ ム要素の集合からなる。オブジェクトは、静的エンティティ(永久的であり定義 済みである)でも、あるいは動的エンティティ(必要に応じて作成され破壊され る)でもよい。各オブジェクトはそれ自体のプライベートな状態を維持すること ができる。これを「オブジェクトローカル状態」と呼ぶ。また、システムは、特 定のオブジェクトに属しない状態を有することができる。これを「システムグロ ーバル状態」と呼ぶ。 一般的に言えば、イベントは通常、特定のオブジェクトに関連付けられる。特 にDESアプリケーションで、複数のオブジェクトに関連付けられた単一のイベ ントを有することが可能である場合、このようなイベントを個々のオブジェクト に関する一連のイベントに分解することによって、このシステムを一般的なモデ ルに変換することができる。また、特定のオブジェクトに関連付けられないイベ ントを有することが可能である場合、そのようなイベントの受容体となる特殊な 「グローバルオブジェクト」が作成される。したがって、DESの一般的なモデ ルの下では、イベントに応答して1つのオブジェクトのみが「アクティブ」にな るとみなされる。このオブジェクトを「アクティブオブジェクト」と呼ぶ。 イベント入力およびイベント出力 イベントの間、システムの新しい状態がDESの状態のあるサブセットの関数 として算出される。この新しい状態をイベントの「入力」と呼ぶ。イベントは単 一のオブジェクトに関連付けられるが、イベントの計算が行われている間にシス テムの状態の任意の部分を調べることができる。この任意の部分には、表1に示 すように、このオブジェクトおよびその他のオブジェクトのオブジェクトローカ ル状態と、システムグローバル状態およびその他の情報が含まれる。 用語「イベントの詳細」は、生じるイベントを記述した情報の集合を指す。イ ベントの詳細には、たとえば、イベントと共に「供給される」データを含めるこ とができ、あるいはイベントの詳細はイベント自体の性質を表わすことができる 。因果関係を有するDESのみが考慮されることに留意されたい。このことは、 将来のイベントに含まれる情報ではイベント計算に影響を及ぼすことができず、 し たがって、将来のイベントの詳細は、イベント入力として許容されないことを意 味する。 イベントの間に、システムの状態はいくつかの方法で変化する。変化のプライ マリーエージェントはアクティブオブジェクトであり、アクティブオブジェクト は「アクション」を実行することができる。また、オブジェクトおよびシミュレ ーショングローバル状態を管理するDESの部分も同様に状態変化を生じさせる ことができる。DESのこれらの部分を集合的に「シミュレーションカーネル」 と呼ぶ。シミュレーションカーネルは基本的にDESのインフラストラクチャで あり、通常、シミュレートされている特定のシステムに特有のものではない。た だし、専用シミュレーションの場合は特定のシステムに特有のものでよい。 すべてのシステム状態変化を「イベント出力」と呼ぶ。イベント出力のリスト を表2に与える。これらのイベント出力は基本的に、イベントを実行した場合の 有意の結果である。将来行われる新しいイベントの挿入および削除がイベント出 力とみなされることに留意されたい。新しいイベントの挿入は、DESに新しい 仕事を与え、それによってDESが将来も引き続き実行することを可能にするメ カニズムである。将来のイベントの集合は、それがすべてのDESのコア状態要 素であるので、システムグローバル状態の特殊なサブセットと考えられると明確 に言える。 時間およびイベントの実行 DES内のイベントは、「イベントリスト」と呼ばれる構造に格納される。イ ベントリストは外部的には、イベントがシーケンスE[0]、E[1]、... E[n]を形成するという意味でリストとして働く。しかし、実際の基本的なイ ンプリメンテーションは、効率を向上させるためにより複雑なデータ構造に依存 することができる。イベントが起こるかあるいは「実行される」ことが予定され たシミュレーション時間がイベントにタグ付けされ、イベントは、単調増加する シミュレーション時間の順にイベントリストから抽出することができる。概念的 には、イベントリストは表3に類似している。 シミュレーションの開始時には、イベントリストに特殊な「初期イベント」が 挿入される。イベントが実行されるにつれて、アクティブオブジェクトは、0個 、1個、あるいはそれよりも多くの追加のイベントをイベントリストに挿入させ るか、あるいは「スケジューリングさせる」ことができる。アクティブオブジェ クトは、現在のイベントとまったく同じシミュレーション時間の特殊な場合を含 め、将来の任意の時間に新しいイベントをスケジューリングすることができる。 1つのイベントしか残っておらず、このイベントが追加のイベントを生成しな い場合、イベントリストが空になることが可能である。これは、DESを終了さ せるいくつかの条件のうちの1つである。 シミュレーション時間は、現在実行されているイベントの時間として定義され る。したがって、図1の時間軸上に示すように、シミュレーション時間は、シミ ュレーション全体にわたって通常は不規則な間隔で「ジャンプ」する。いくつか のDESは、「時間ステップ」と呼ばれる範疇に分類され、「時間ステップ」は 、すべてのイベントが時間軸上で均等に分離されることを意味する(すなわち、 E[n+1]−E[n]が一定である)。これは、イベント同士の間の任意の間 隔を許容する前述のより一般的な「イベントスケジューリング」手法の特殊な場 合に過ぎない。 DES内のイベントは従来、順次に実行される。DESを実行する従来型のア ーキテクチャは、イベントへのリスト式アクセスを実現する構造の中でイベント を維持する。イベントは、実行される場合にリストから一度に1つずつ削除され る。このイベントが完了するまで、すべての利用可能な計算資源がこのイベント の計算に使用され、完了した時点で、次のイベントの処理を開始することができ る。イベントは通常、新しい実行を開始する時間になったときに最も早いイベン トへの定時アクセスを可能にするように順序付けられた状態に維持される。この ような従来型のシステムを「逐次イベント実行」(SEE)DESと呼ぶ。この ような従来型のシステムにおける有意の計算源を表4にリストする。 表4の定義が与えられた場合、SEE DESでイベントを完全に処理するた めに必要な平均時間は、 X=d+c+(n・i) で表わされ、上式で、dは平均dであり、cは平均cであり、nは平均nであり 、 iは平均iである。 定常常態では、イベントリストが安定なサイズを有するので、各イベントの間 にイベントリストに挿入される新しいイベントの平均数は1である。したがって 、Xはd、c、およびiの単純な和になる。リストを順序付けることができるの で、dは基本的に、リストのヘッドイベントを削除し、このヘッドイベント用の 適切なハンドラを呼び出すのに必要な非常に短い一定の時間である。さらに、c は主として、シミュレートされているイベントの複雑さに依存し、特定の種類の シミュレーション問題に関して所与の値であると仮定することができる。 さらに、iは、イベントリスト構造での順序付けられた配置を必要とするので、 イベントリストを管理するために使用されるストラティジー(strategy) の関数である。 dおよびiの最適化は単純な問題であり、これらの変数に関しては大部分の従 来型のDESが効率的である。したがって、シミュレーション実行時間を改善す るには、cを短縮することに注目しなければならない。cを短縮する場合、プロ グラマはイベントの計算をできるだけ効率的に実施しなければならない。イベン トの計算をできるだけ効率的に行った後で、SEEパラダイムの下でシミュレー ションを加速するためにできることは、より高速のプロセッサを使用することを 除いてほとんどない。 したがって、所与の問題領域内および所与のプロセッサ上で、SEE DES はそのイベントスループットに対する固有の限界を有する。さらなる向上を図る には、イベントスループットを増大しなければならない。一般に、SEEのすべ ての代替形態は、同時処理、すなわち、複数のイベントを複数のプロセッサに分 散することによってそれらのイベントを並行して処理することに依存する。これ を行うためにいくつかの手法が提案されており、実験または商業製品として実施 されている。各手法は利点を有し、したがって特定の種類のシミュレーション問 題に適用できるが、これらの手法のうちで、一般的な場合にイベントスループッ トを大幅に増大することのできる手法はなく、各手法は、インプリメンテーショ ンおよび実行面で欠点および難点を有する。発明の概要 本発明の目的は、単一のイベントリストを使用してDESのイベントスループ ットを増大することである。 本発明の他の目的は、特定のコンピュータハードウェアインプリメンテーショ ンと共に使用できる並列シミュレーションを実施するアーキテクチャを提供する ことである。 本発明の他の目的は、複数のプロセッサを並行して使用することによってDE Sの実行を加速する技法を提供することである。 本発明の他の目的は、シミュレーションプログラマまたはユーザがDESの基 本的なイベント処理アーキテクチャを意識しないDESを提供することである。 たとえば、シミュレーションプログラマまたはユーザは、利用可能なプロセッサ に小部分を割り付けるにはDESシステムを物理的にどのように区画すればよい かを考える必要がなくなる。その代わり、本発明は、追加のプロセッサを利用す るように自動的にスケーリングし、1つのプロセッサしか利用できないときには 従来型のDESになる。 本発明は、方法、コンピュータシステムを備える装置、およびコンピュータプ ログラムを実現するコンピュータ読取り可能媒体を含むがこれらに限らない、い くつかの方法で実現することができる。 方法で実現される本発明は、ヘッドイベントを有する離散イベントシミュレー ション用のイベントリストを維持すること、ヘッドイベントが未計算であるか、 それとも計算中であるか、あるいはそれとも計算済みであるかを判定することを 含む、離散イベントシミュレーションのイベントスループットを増大する方法を 含む。ヘッドイベントは、未計算であると判定された場合には実行される。ヘッ ドイベントは、計算中であると判定された場合には、このヘッドイベントの計算 が完了したときに計算済みとして示される。ヘッドイベントが計算済みであると 判定された場合には、このヘッドイベントの計算が有効であるか、それとも無効 であるかが判定される。ヘッドイベントの計算が有効であると判定された場合は 、このヘッドイベントの計算が適用され、ヘッドイベントの計算が無効であると 判定された場合は、ヘッドイベントが実行される。 方法の場合、離散イベントシミュレーションは現在のシステム状態を有し、ヘ ッドイベントの計算を適用することは、ヘッドイベントの計算に基づいて現在の システム状態を変更することを含む。さらに、ヘッドイベントの計算が有効であ るか、それとも無効であるかの判定では、入力不変性を使用することができる。 さらにイベントリストは、イベントの順序付けられた集合でよい。また、イベン トリストは、複数のイベントと、未計算イベントとして示された少なくとも1つ のイベントとを含み、この方法はさらに、イベントリストから未計算イベントを 選択すること、および未計算イベントの計算を実行することを含む。 他の方法で実現される本発明は、複数のイベントと、未計算イベントとして示 された少なくとも1つのイベントとを有する離散イベントシミュレーション用の イベントリストを維持すること、未計算イベントとして示されたイベントをイベ ントリストから選択すること、選択されたイベントをイベント事前計算プロセス に割り当てること、イベントリスト内の選択されたイベントを計算中イベントと して示すこと、イベント事前計算プロセスを使用して、選択されたイベントの計 算を行うこと、イベント事前計算プロセスから計算を受け取ること、イベントリ スト内の選択されたイベントを計算済みイベントとして示すことを含む、離散イ ベントシミュレーションのイベントスループットを増大する方法を含む。 この方法では、イベント事前計算プロセスを使用して選択されたイベントの計 算を行うことは、イベント事前計算プロセスにイベント入力を与えること、選択 されたイベントおよびイベント入力に基づいてシステム状態の変化を判定するこ とを含む。イベント事前計算プロセスから計算を受け取ることは、イベント入力 とシステム状態の変化とをイベント事前計算プロセスから受け取ることを含み、 イベントリスト内の選択されたイベントを計算済みイベントとして示すことは、 イベント入力とシステム状態の変化とを選択されたイベントに関連付けることを 含む。 さらに、この方法はさらに、選択されたイベントをイベントリスト内の計算済 みヘッドイベントとして示すこと、およびヘッドイベントに関連するイベント入 力と現在のシステム状態を比較することによって、ヘッドイベントを検証し、ヘ ッドイベントが有効であるか、それとも無効であるかを判定することを含む。ヘ ッドイベントが有効である場合、ヘッドイベントに関連するシステム状態の変化 を使用して現在のシステム状態を更新することによってヘッドイベントの計算が 適用される。 他の方法で実現される本発明は、計算済みイベントとして示された複数のイベ ントを有する離散イベントシミュレーション用のイベントリストを維持すること 、計算済みイベントとして示された複数のイベントをイベントリストから選択す ること、および選択されたイベントが有効であるか、それとも無効であるかを判 定することを含む、離散イベントシミュレーションのイベントスループットを増 大する方法を含む。選択されたイベントが無効である場合、この選択されたイベ ントがイベント事前計算プロセスに割り当てられ、イベントリスト内のこの選択 されたイベントが計算中イベントとして示され、イベント計算プロセスを使用し て、選択されたイベントの計算が行われ、イベント事前計算プロセスからこの計 算が受け取られ、イベントリスト内のこの選択されたイベントが計算済みイベン トとして示される。 装置で実現される本発明は、1つのイベントがヘッドイベントとして示され、 各イベントが未計算イベント、計算中イベント、または計算済みイベントとして 示される複数のイベントを含むイベントリストを維持する手段と、未計算イベン トの計算を行う少なくとも1つのイベント事前計算プロセスを実行する手段と、 未計算イベントを選択し、この未計算イベントを1つのイベント事前計算プロセ スに転送する手段と、未計算イベントを実行し計算済みイベントを検証する手段 とを備える、離散イベントシミュレーションを実行するコンピュータシステムを 備える。 この装置では、少なくとも1つのプロセッサは、イベントリストを維持する手 段と、未計算イベントを選択しこの未計算イベントを転送する手段と、未計算イ ベントを実行し計算済みイベントを検証する手段とを実装することができる。さ らに、複数のプロセッサが、未計算イベントの計算を行う手段を実装することが できる。 本発明では、コンピュータシステムは、ネットワークと介して接続された1つ または複数のコンピュータを備える。さらに、コンピュータシステム内の各コン ピュータは、1つまたは複数のプロセッサを有することができる。 製造品で実現される本発明は、離散イベントシミュレーションを実行するコー ドセグメントを実現するコンピュータ読取り可能媒体を備える。コードセグメン トは、各イベントが未計算イベント、計算中イベント、または計算済みイベント として示される、ヘッドイベントを含む複数のイベントを含むイベントリストを 維持するコードセグメントと、未計算イベントの計算を行う少なくとも1つのイ ベント事前計算プロセスのそれぞれ用のコードセグメントと、イベントリストを スキャンし、未計算イベントを選択し、1つのイベント事前計算プロセスにこの 未計算イベントを割り当て、イベント事前計算プロセス用のコードセグメントに 従って計算を行わせるイベントリストスキャンプロセス用のコードセグメントと 、未計算イベントを実行し計算済みイベントを検証するイベントリストマネージ ャ用のコードセグメントとを備える。 本発明では、コンピュータプログラムを実現するコンピュータ読取り可能媒体 は、1つまたは複数のプロセッサを本発明を実行するように制御するコードセグ メントを備える。「コンピュータ読取り可能媒体」の非制限的な例には、磁気ハ ードディスクや、フロッピィディスクや、光ディスクや、磁気テープや、メモリ チップや、電子メールを送受信するか、あるいはインタネットなどの電子データ ネットワークにアクセスする際に使用されるような電子データを保持するために 使用される搬送波が含まれる。さらに、「コードセグメント」の非制限的な例に は、ソフトウェアや、命令や、コンピュータプログラムや、1つまたは複数のプ ロセッサを制御する手段が含まれる。 図面の簡単な説明 本発明の実施形態は図面を介して詳しく説明される。 図1は、時間軸に沿ったDESの不規則なイベント間隔を示す図である。 図2は、本発明のイベントアーキテクチャの選択的な事前計算を使用するイベ ント処理を示す図である。 発明の詳細な説明 本発明は、単一のイベントリストのパラダイム内で働く加速メカニズムとして イベントの選択的な事前計算(SPE)を使用する。本発明を用いた場合、イベ ントの管理は、1つのプロセッサを用いて集中化され、イベントの実行は他の利 用可能なプロセッサに分散される。 SPEは、従来型のイベントリストを使用し、リスト内のイベントを実行する ために、「イベントリストマネージャ」(ELM)と呼ばれる単一のプロセスま たはスレッドに依存する。(用語「プロセス」は、1つまたは複数のプロセッサ 上で実行される1つまたは複数のプログラムを指す。)SPEは、イベントスル ープットを増大することが可能なときには、イベントを「事前計算」するために 、他のプロセッサ上で実行することのできる追加のプロセスにも依存する。この ようなプロセスを「イベント事前計算プロセス」(EPP)と呼ぶ。本発明の一 実施形態では、各EPPは別々のプロセッサ上で実行される。SPEの目的は、 できるだけ多くの将来のイベントを自由なプロセッサに割り当て並行して実行し 、かつイベントの実際のシミュレーション時間に達したときに、これらのプロセ ッサによって実行された「仕事」または計算が依然として有効でかつ使用可能で あるように、この仕事を記憶することである。 標準イベント処理アーキテクチャの場合と同様に、通常のイベントは本発明の イベントリストに入り、実行を待つ。イベントリストは、事前計算すべきある種 のイベントを選択する「イベントリストスキャンプロセス」(ESP)によって スキャンされる。ESPは、たとえばELMのサブタスクとして実施することが できる。イベントは、任意の時間に未計算イベント(UCE)、計算中イベント (ICE)、および計算済みイベント(PCE)の3つの範疇の1つに入ること ができる。関連する仕事が実際の実行時間まで有効なままであるPCEを使用可 能計算済みイベント(UPCE)と呼ぶ。この4種類のイベントを表5に定義す る。 図2は、本発明のSPEアーキテクチャを使用するイベント処理を示す。ES Pは、イベントリストをスキャンしてUCEがあるかどうかを調べる。UCEが 見つかった場合、ESPがそのUCEを処理のためにEPPへ送り、イベントリ スト内のUCEの表示がUCEからICEに変更される。EPPが終了すると、 結果として得られたPCEが出力され、イベントリスト内のICEがPCEに変 更される。 すべてのイベントは、その状態にかかわらず、実行されるまで引き続きイベン トリスト内に表わされる。イベントを実行することができるのは、そのイベント がイベントリストのヘッド部に到達し、ヘッドイベントと呼ばれるようになった ときだけある。この時点で、イベントの処理はイベントの状態に依存する。図2 で、ヘッドイベントは、イベントリストの1番下に示され、PCEであるイベン トとして示されている。 図2に示すように、ヘッドイベントには3つの可能な状態がある。第1に、ヘ ッドイベントは、UCEである場合には、SEEアーキテクチャの場合と同様に 、イベントリストを管理する責任を負うプロセスによって処理される。 第2に、ヘッドイベントがICEである場合、このヘッドイベントがPCEに なるまで、ELMによる追加のイベント実行は進行することができない。ELM が進行した場合、イベント同士の間の因果関係が損なわれる可能性がある。EL Mは、事前計算が完了するまで他の処理をブロックするか、あるいはイベントリ ストをスキャンするための時間を使用して、事前計算すべき他のイベントを選択 することができる。 第3に、ヘッドイベントが(図2に示されている)PCEである場合、ELM は、事前計算が依然として有効であること(すなわち、ヘッドイベントがUPC Eでもあること)を検証しなければならない。ヘッドイベントがUPCEである 場合、イベント実行は、記憶されている結果の「適用」のみからなる。言い換え れば、記録されているイベント出力を使用してシステム状態が修正される。 イベント計算の入力 イベントがSPEアーキテクチャ内のEPPによって事前計算されるか、それ ともELMによって直接計算されるかにかかわらず、イベントの計算が行われる とき、イベントは同じ1組の「イベント入力」に依存する。用語「イベント入力 」は、イベント計算中に分析することのできるDESの部分に記憶される状態情 報のすべての要素の集合を指す。 本発明は、ELMにイベントを計算させるのではなく、EPPにより計算され るELM確認イベントを持つことによって、DESのスループットを増大する。 本発明を用いた場合、DESのイベントスループットは、単一のプロセッサがど れだけ高速にイベントを完全に計算できるかではなく、単一のプロセッサがどれ だけ高速にイベントを確認できるかの関数である。より高い性能を実現する本発 明の条件は、イベントの確認がイベントの完全な計算よりも簡単であるというこ とである。したがって、PCE確認メカニズムはSPEアーキテクチャの重要な 部分である。 事前計算が、ELMによるイベントの直接実行と比較したときに同一の結果を 生成するかどうかを判定するには、イベントの事前計算中にどの入力が使用され たかについての知識が必要である。このような入力が変化すると、イベントの計 算が異なるものになる可能性があり、保守的な見方により、このような変化は事 前計算を無効化するとみなすべきである。入力の介入的な修正を行うことを不要 にすることは、SPEベースのシステムが計算済みイベントを確認するための簡 単な手法である。この手法を「入力不変性(input invariance) 」と呼ぶ。イベントが実行を開始すると、一般に、どの入力がアクセスされるか を事前に判定することは不可能である。このことは、条件付き制御フローを含め 、イベントの間に一般的な命令をサポートするシステムで特にそうである。した がって、入力不変性を実施するには、事前計算中にどの入力が使用されたかを検 出し保持するある種の方法が必要である。 イベントの入力の変化の性質と、入力を使用する方法とに応じて、イベントは 変化にかかわらず厳密に展開することが可能である。したがって、入力不変性は 、SPE DESで確認を実施する保守的な手法である。より高度な確認方式は 、イベント入力の使用に関するより詳細な情報を考慮し、したがって、確認に必 要な条件を緩和することができる。 イベント計算の出力 イベントの実行中に、多数の異なるアクションを行うことができる。ある種の アクションは、イベントの完全に内部のアクションであり、他のイベントに対す る影響を有さないものとみなすことができる。内部アクションは、たとえば、ロ ーカル計算で使用される一時変数を修正したアクションでよい。内部アクション は他のイベントに影響を与えないので、このような内部アクションは、それが行 われたことを「記憶する」必要なしに事前計算の一部として実行することができ る。 イベントには、外部効果を有するアクションを含めることができる。このよう な外部アクションまたはイベント出力は、他の進行中のイベント計算または将来 のイベント計算に干渉しないように行わなければならない。この問題に対するS PE手法は、本発明を他の従来型のシミュレーションアーキテクチャと区別する いくつかの要因のうちの1つである。 各イベント出力は、DESの状態に1つまたは複数の変化を生じさせることが できる。イベントEがPCEとして算出された場合に、このような変化を生じさ せると、他の進行中のイベント計算によって認識されるシステム状態のビューが 修正される。さらに、変化を生じさせることによって、イベントEの最初の実行 と最後の実行との間に行われるPCE計算によって認識されるシステム状態が修 正される。 本発明のSPEアーキテクチャでは、イベント出力は基本的に、実際のシステ ム状態に安全に適用できるようなときまで「バッファされる」。このことは、変 化が起こった場合でも、最後のイベント実行の時間までこの変化がシステム状態 に影響を及ぼすことが許可されないことを示す。前述のように、入力不変性など の基準に従ってPCEが無効であると判定された場合、すべての変化が破棄され る。したがって、変化は、2つの要件を満たすように特別なコンテキストで起こ る。 第1に、実行時に出力を同様に再生できるように出力に関する十分な情報を記 録しなければならない。検証が成功した場合、図2に示すように、アクションが 実際に実施されるのは「結果の適用」フェーズの間である。 第2に、イベントの事前計算中にシミュレーション状態の一貫したビューを与 えるために、出力の実際の適用を一時的にエミュレートしなければならない。た とえば、オブジェクトがオブジェクトの1つの属性を修正し、次いで同じイベン ト(および任意選択で後続のPCE)の間にこの属性の値を問い合わせた場合、 この問合せから、新たに割り当てられた値が得られる。したがって、各オブジェ クトに関連するイベント処理メソッドは、それが事前計算のために実行されるの か、それとも直接計算のために実行されるのかを知る必要がなくなる。 第2の要件が与えられた場合、システム状態の2つの異なるビュー(またはシ ステム状態のサブセット)が一時的に共存する。一方のビューは、当該のPCE のコンテキストで有効であり、他方のビューはELMによる最後のイベント実行 のコンテキストで有効である。しかし、この場合、この2つの時間の間に起こる イベントにはこれらのビューのどちらが有効であるかという問題が残る。最後の イベント実行で使用される確認メカニズムによって、イベントを計算するときに 適切なシステム状態が使用されるので、2つのビューのどちらを使用しても正し い解決策を与えることができる。各手法は異なる性能を有し、DES用にどの手 法を選択するかは、特定のDESまたはDES環境に関して検討すべきである。 イベントのディスパッチおよび検索 本発明のSPEアーキテクチャを効率的に実施するうえでの1つの重要なキー ファクターは、イベントの制御をEPPに転送するために使用されるメカニズム である。イベントの最後の実行に関わるELMをサポートする同じプロセッサ上 でこのタスクを実行する場合、一度に確認して実行の適用フェーズを通過させる ことのできるイベントは1つだけなので、EPPのオーバヘッドによって総イベ ントスループットが低減する。したがって、イベントリスト情報にアクセスする 独立のプロセッサを使用してイベントディスパッチを実行するか、あるいは効率 に留意してイベントディスパッチを実施すべきである。 UCEであるイベントEに対するイベントディスパッチの目的は、EPPがイ ベントEをPCEにするのに必要なすべての状態情報をEPPに供給することで ある。イベントEを事前計算した後、何らかの方法でこのイベントの出力を最後 の実行までにELMに戻さなければならない。このメカニズムを「イベント出力 検索」と呼ぶ。 イベントEをEPPにディスパッチした後、イベントEのすべての入力がEP Pにアクセスできなければならない。上記で指摘したように、イベントEを実際 に計算する前にイベントEがどの入力を必要とするかを知っておくことは困難で ある。したがって、EPPにすべての可能な入力情報を供給しなければならず、 あるいはEPPが必要に応じてこの情報にアクセスできなければならない。 多数の異なるインプリメンテーションが可能であり、これらのメカニズムの効 率はサポートするハードウェアの基本アーキテクチャに強く依存する。たとえば 、すべてのプロセッサが、UCEに関する情報を転送するのではなく、単一のメ モリ空間を共用できる場合、UCEをEPPにディスパッチする際にEPPに転 送する必要があるのはUCEの参照だけである。高度にスケーリングできるハー ドウェアアーキテクチャはこの機能を実現できないので、SPEアーキテクチャ のいくつかのインプリメンテーションはメッセージベースのディスパッチ検索メ カニズムを必要とする。 SPEアーキテクチャの変形形態 当業者には認識されるように、本発明のSPEアーキテクチャを実施するため の多数のオプションが可能である。特定のDESおよび特定のハードウェアの特 定の態様を利用して重要な効率上の利益を実現することができる。すでに前節で 論じた点だけでなく、インプリメンテーションに特有の以下の3つの点を、可能 な効率上の利得について分析すべきであり、これらは現行の技術を使用して実施 することができる。 第1に、イベントの選択を検討すべきである。ESPがイベントリストから事 前計算すべきイベントを選択する際、ESPは、それがイベントに出会う順にイ ベントを選択する必要はない。その代わり、ESPは、SPEアーキテクチャの 利得を最大にすることを試みるヒューリスティクスに基づいてイベントをインテ リジェントに選択することができる。この場合の重要な点は、PCEが、イベン トの種類や関連するオブジェクトなどの情報に基づいて、有効なままでありUP CEになる可能性が高いことである。また、イベントのディスパッチおよび検索 に関するオーバヘッドが等しい場合、より計算を多用するある種のイベントが事 前計算に有利である可能性がある。イベント選択ヒューリスティクスは、複雑で 、かつDESに関する特定の知識に強く依存することがある。 第2に、プロセスの割当てを検討すべきである。単一のプロセスまたは独立の プロセスがELMとESPの両方を実施することができる。ELMおよびESP は、単一のプロセッサまたは別々のプロセッサ上で実行されるように実施するこ とができる。図2に示すように、追加のプロセッサを検証フェーズ、適用フェー ズ、および完全実行フェーズに使用することができる。 第3に、状態情報の動的分散を検討すべきである。システムの状態を記憶する ときに中央に集中された共用メモリに依存しないイベントディスパッチ手法を使 用する場合、イベント入力にアクセスする効率を向上させるために様々な技法を 使用することができる。たとえば、オブジェクトまたはDESの状態の他の部分 が特定のプロセッサに関連付けられた後、このプロセッサの専用メモリ内にこの 情報を保持し、このオブジェクトに関するイベントを同じプロセッサに優先順位 に基づいてディスパッチすることが最も効率的である可能性がある。このような 手法は、ある種のDESに関する通信オーバヘッドを低減することができる。シ ミュレーションが行われている間、利用可能なプロセッサにシステムの状態を動 的に分散することができる。このような技法の適用性は、DESの性質とサポー トするハードウェアのアーキテクチャとに強く依存する。 SPEアーキテクチャの変形形態として、ESPの代替形態を使用することが できる。たとえば、ESPに、UCEをEPPに割り当てさせるのでなく、EP Pがイベントリストにアクセスし、EPP自体が、事前計算すべきUCEを選択 することができる。別の例として、ELMは、ESPの機能を実行することがで き、EPPがELMをUCEについてポーリングした後、ELMはEPPにUL Eを供給することができる。一般に、本発明では、UCEがEPPに転送され、 これを様々な方法で行うことができる。 SPEアーキテクチャの変形形態として、未処理、処理中、および処理済みな ど他のラベルを用いてイベントリスト内のイベントを示すことができる。さらに 、イベントリストは、本明細書で説明した3種類のイベントのみに限らず、DE Sのインプリメンテーションの必要に応じて他の種類のイベントを含むことがで きる。 SPEアーキテクチャの他の変形形態として、イベントリストは複数のヘッド イベントを有することができる。複数のイベントリストを未計算イベントリスト 、計算中イベントリスト、または計算済みイベントリストとして示すことができ る。複数のヘッドイベントは、「互いに十分に独立した」イベントである場合、 1つまたは複数のELMによって並行して確認または実行することができる。互 いに十分に独立させるには、各ヘッドイベントの出力が他のヘッドイベントの計 算にそれほど影響を与えないようにすべきである。たとえば、複数のイベントが 同じシミュレーション時間を用いて示され(表1と同様に、イベントE[1]と イベントE[2]が同じ時間0.1を有する)、イベントリストのヘッド部に到 着する場合、これらの複数のイベントは、複数のヘッドイベントとみなすことが でき、並行して確認または実行されるほど互いに独立したイベントである。一般 に、複数のヘッドイベントを使用すると、イベントがいつ互いに十分に独立した イベントになるかに関してアプリケーション特有の決定が下され、性能上の十分 な利得を得ることができる。 SPEアーキテクチャの改良形態として、ELMは、イベントリストをスキャ ンしてPCEがあるかどうかを調べ、ヘッドイベントであるPCEの場合と同じ 方法をイベントリスト内のPCEに適用することができる。イベントリスト内の 各PCEについて、ELMは、PCEの事前計算が依然として有効であるかどう かを判定する。イベントリスト内の検証すべきPCEを選択する場合、ELM、 あるいはおそらく他のプロセスがイベントリストを周期的または非周期的にスキ ャンすることができる。PCEを選択した後、ELM、あるいはおそらく他のプ ロセスがイベントリスト内のPCEを検証する。PCEの事前計算が有効である 場合、ELMはPCEを修正しない。PCEの事前計算が無効である場合、EL MはPCEをICEとして示し、1つのEPPを選択し、新たに示されたICE の計算を再開する。計算を再開するこの方法は、上記でICEの計算を行う場合 に論じた方法と同じである。 ELMのスキャンによってイベントリストからPCEが選択された直後にこの PCEを検証することの代替形態として、ELMは、PCEを検証する前にまず 、そのPCEが最近検証されたかどうかを判定することができる。この場合、た とえば、各PCEは検証時間インディケータを含むことができる。検証時間イン ディケータは最初、イベントリスト内のイベントの表示がICEからPCEに変 更される時間に設定される。ELMは、検証すべきPCEを選択した後、現在時 間とこのPCEについての検証時間インディケータとの間の差としきい値を比較 することによって、このPCEが最近検証されたかどうかを検査する。この差が しきい値よりも小さい場合、このPCEは、最近検証されているので検証されな い。差がしきい値以上である場合、このPCEは、最近検証されておらず、前述 の検証方法を使用して検証される。PCEが検証された後、検証時間インディケ ータは現在時間に変更される。各PCEについての検証時間は最初、そのイベン トがPCEとして示された時間に設定される。 本発明をDES向けに実施することの代替形態として、本発明は、複数のプロ セッサを用いて実施されるコンピュータプログラムのタスクスループットを増大 するように実施することができる。この代替実施形態では、イベントはタスクま たはサブタスクと等価である。言い換えれば、タスクおよびサブタスクで構成さ れたコンピュータプログラムの実行速度を、複数のプロセッサおよび上記の方法 を使用して高めることができる。 さらに、本発明は、ある程度の独立性を有する一連の演算からなるプログラム に適用することができる。当業者には自明なように、これらの演算が互いに独立 である程度は、実現できる性能の向上を決定する1つの要因である。多くの実際 的な場合に、DESは、本発明の手法を利用できるほど互いに独立したイベント に分解することができる。 本発明を好ましい実施形態に関して詳しく説明したが、当業者には、上記のこ とから、本発明の広義の態様において本発明から逸脱せずに変更および修正を加 えられることが明らかであろう。したがって、本発明は、添付の請求の範囲で定 義されるように、本発明の真の趣旨の範囲内に入るすべてのこのような変更およ び修正をカバーするものである。DETAILED DESCRIPTION OF THE INVENTION System Architecture for Distributed Discrete Event Simulation Cross-reference of related applications This application claims the benefit of US Provisional Patent Application Ser. No. 60 / 052,778, filed Jul. 1, 1997, and incorporated by reference. Field of the invention The present invention relates generally to discrete event simulation (DES) and parallel processing. Background of the Invention A general model of DES is described, but is not intended for a particular simulation application domain. DES is discussed in terms of its objects and events, event inputs and outputs, time and execution of events. Objects and Events DES attempts to predict or reproduce this behavior by decomposing the specified system behavior into a sequence of state changes. Each state change of the system and each moment at which a state change may occur is called an "event." Generally, a simulated system consists of a collection of system elements called "objects". Objects can be static entities (permanent and defined) or dynamic entities (created and destroyed as needed). Each object can maintain its own private state. This is called "object local state". Also, the system can have states that do not belong to a particular object. This is called a “system global state”. Generally speaking, events are usually associated with a particular object. If it is possible, especially in a DES application, to have a single event associated with multiple objects, this system can be modeled by breaking such events into a series of events for individual objects. Can be converted to Also, if it is possible to have events that are not associated with a particular object, a special "global object" is created that will accept such events. Thus, under the general model of DES, only one object is considered to be "active" in response to an event. This object is called an “active object”. Event input and event output During an event, the new state of the system is calculated as a function of some subset of the state of DES. This new state is called the "input" of the event. Although the event is associated with a single object, any part of the state of the system can be examined while the calculation of the event is taking place. This optional part includes the object local state of this and other objects, as well as the system global state and other information, as shown in Table 1. The term "event details" refers to a collection of information describing the event that occurs. The event details may include, for example, data "supplied" with the event, or the event details may represent the nature of the event itself. Note that only causally related DESs are considered. This means that the information contained in future events cannot affect the event calculation, and therefore the details of future events are not allowed as event inputs. During an event, the state of the system changes in several ways. The primary agent of change is the active object, which can perform "actions". In addition, the DES part that manages the object and the simulation global state can also cause a state change. These parts of the DES are collectively called the "simulation kernel". The simulation kernel is fundamentally the infrastructure of the DES and is usually not specific to the particular system being simulated. However, in the case of the dedicated simulation, it may be specific to a specific system. All system state changes are called "event outputs." A list of event outputs is given in Table 2. These event outputs are basically the significant results of executing the event. Note that future insertions and deletions of new events are considered event outputs. Inserting a new event is a mechanism that gives DES new work, thereby allowing DES to continue running in the future. The set of future events can clearly be considered as a special subset of the system global state, since it is the core state element of all DES. Time and Event Execution Events in the DES are stored in a structure called an "event list". The event list externally stores events in the sequence E [0], E [1],. . . It works as a list in the sense that it forms E [n]. However, actual basic implementations can rely on more complex data structures to increase efficiency. The simulation time at which the event occurs or is scheduled to be "executed" is tagged to the event, and the event can be extracted from the event list in order of a monotonically increasing simulation time. Conceptually, the event list is similar to Table 3. At the start of the simulation, a special “initial event” is inserted into the event list. As events are executed, the active object can cause zero, one, or more additional events to be inserted or "scheduled" into the event list. The active object can schedule a new event at any time in the future, including the special case of exactly the same simulation time as the current event. If only one event remains and this event does not generate additional events, the event list can be empty. This is one of several conditions that terminate DES. Simulation time is defined as the time of the currently executing event. Thus, as shown on the time axis of FIG. 1, the simulation time “jumps”, usually at irregular intervals throughout the simulation. Some DES fall into a category called "time steps", which means that all events are evenly separated on the time axis (i.e., E [n + 1] -E [ n] is constant). This is just a special case of the more general "event scheduling" approach described above, which allows for arbitrary intervals between events. Events in the DES are conventionally executed sequentially. Traditional architectures implementing DES maintain events in a structure that provides list-based access to the events. Events are removed from the list one at a time when executed. Until this event is completed, all available computing resources are used to calculate this event, at which point processing of the next event can begin. Events are typically maintained in an ordered state to allow for scheduled access to the earliest event when it is time to start a new execution. Such a conventional system is called "sequential event execution" (SEE) DES. Table 4 lists the significant sources of calculations in such conventional systems. Given the definitions in Table 4, the average time required to fully process an event in SEE DES is: X = d + c + (ni), where d is the average d , C is the average c, n is the average n, and i is the average i. In steady state, the average number of new events inserted into the event list during each event is one, because the event list has a stable size. Thus, X is a simple sum of d, c, and i. Since the list can be ordered, d is basically the very short fixed time required to delete the head event of the list and invoke the appropriate handler for this head event. Further, c depends primarily on the complexity of the event being simulated and can be assumed to be a given value for a particular type of simulation problem. Furthermore, i is a strategy function used to manage the event list, as it requires an ordered arrangement in the event list structure. The optimization of d and i is a simple problem, and for these variables most conventional DESs are efficient. Therefore, in order to improve the simulation execution time, attention must be paid to shortening c. In reducing c, the programmer must perform the computation of the event as efficiently as possible. After making the calculation of events as efficient as possible, there is little that can be done to accelerate the simulation under the SEE paradigm, except using a faster processor. Thus, within a given problem area and on a given processor, SEE DES has an inherent limit on its event throughput. To achieve further improvements, the event throughput must be increased. In general, all alternatives to SEE rely on simultaneous processing, that is, processing multiple events in parallel by distributing the events to multiple processors. Several approaches have been proposed to do this, and have been implemented as experimental or commercial products. Although each approach has advantages and is therefore applicable to certain types of simulation problems, none of these approaches can significantly increase event throughput in the general case, and each approach is: It has drawbacks and difficulties in implementation and implementation. Summary of the Invention It is an object of the present invention to increase the DES event throughput using a single event list. It is another object of the present invention to provide an architecture for performing parallel simulations that can be used with a particular computer hardware implementation. It is another object of the present invention to provide a technique for accelerating DES execution by using multiple processors in parallel. It is another object of the present invention to provide a DES in which a simulation programmer or user is unaware of the basic event processing architecture of DES. For example, a simulation programmer or user does not need to consider how to physically partition the DES system to allocate a small portion to available processors. Instead, the present invention automatically scales to utilize additional processors and becomes a conventional DES when only one processor is available. The invention can be implemented in several ways, including but not limited to a method, an apparatus comprising a computer system, and a computer-readable medium for implementing a computer program. The invention, implemented in a method, maintains an event list for a discrete event simulation having a head event, and determines whether the head event has not been calculated, is being calculated, or has been calculated. And increasing the event throughput of the discrete event simulation. The head event is executed when it is determined that the head event has not been calculated. If it is determined that the head event is being calculated, the head event is indicated as calculated when the calculation of the head event is completed. If it is determined that the head event has been calculated, it is determined whether the calculation of the head event is valid or invalid. When it is determined that the calculation of the head event is valid, the calculation of the head event is applied, and when it is determined that the calculation of the head event is invalid, the head event is executed. For the method, the discrete event simulation has a current system state, and applying the head event calculation includes changing the current system state based on the head event calculation. In addition, input invariance can be used to determine whether the head event calculation is valid or invalid. Further, the event list may be an ordered set of events. Also, the event list includes a plurality of events and at least one event indicated as an uncalculated event, the method further includes selecting an uncalculated event from the event list, and calculating the uncalculated event. Including doing. The invention, implemented in another manner, comprises maintaining an event list for a discrete event simulation having a plurality of events and at least one event indicated as an uncomputed event; From the event list, assigning the selected event to the event pre-computation process, indicating the selected event in the event list as an in-computation event, using the event pre-computation process to select the selected event , Calculating from the event pre-computation process, and indicating the selected event in the event list as a calculated event, including increasing the event throughput of the discrete event simulation. In this method, calculating a selected event using the event pre-computation process includes providing an event input to the event pre-computation process, and determining a change in system state based on the selected event and the event input. Including doing. Receiving a computation from the event precomputation process includes receiving an event input and a change in system state from the event precomputation process, and indicating a selected event in the event list as a computed event comprises: Associating a change in system state with a selected event. Further, the method further comprises verifying the head event by indicating the selected event as a calculated head event in the event list, and comparing the current system state with an event input associated with the head event. This involves determining whether the event is valid or invalid. If the head event is valid, the calculation of the head event is applied by updating the current system state using the system state change associated with the head event. The invention, implemented in another manner, maintains an event list for a discrete event simulation having a plurality of events indicated as calculated events, and selects a plurality of events indicated as calculated events from the event list. And increasing the event throughput of the discrete event simulation, including determining whether the selected event is valid or invalid. If the selected event is invalid, this selected event will be assigned to the event pre-computation process, this selected event in the event list will be shown as a calculating event, and the event calculation process will be used to select A calculation of the calculated event is made, the calculation is received from the event pre-calculation process, and the selected event in the event list is shown as a calculated event. The invention, embodied in a device, comprises: means for maintaining an event list including a plurality of events, one event being indicated as a head event, each event being indicated as an uncalculated event, a calculating event, or a calculated event; Means for executing at least one event pre-calculation process for calculating uncalculated events; means for selecting an uncalculated event and transferring the uncalculated event to one event pre-calculation process; Means for verifying the calculated event, the computer system performing a discrete event simulation. In the apparatus, at least one processor implements means for maintaining an event list, means for selecting an uncalculated event and forwarding the uncalculated event, and means for executing the uncalculated event and verifying the calculated event. can do. Further, a plurality of processors may implement means for calculating an uncalculated event. In the present invention, a computer system includes one or more computers connected via a network. Further, each computer in a computer system can have one or more processors. The invention embodied in an article of manufacture comprises a computer readable medium that implements a code segment that performs a discrete event simulation. The code segment includes a code segment that maintains an event list that includes a plurality of events, including a head event, where each event is indicated as an uncalculated event, a calculating event, or a calculated event, and at least one for calculating the uncalculated event. Scan the code list for each of the one event precomputation process and the event list, select the uncomputed events, assign this uncomputed event to one event precomputation process, and calculate according to the code segment for the event precomputation process And a code segment for an event list manager that executes uncalculated events and verifies the calculated events. In the present invention, a computer-readable medium for implementing a computer program comprises code segments that control one or more processors to perform the present invention. Non-limiting examples of "computer-readable media" include magnetic hard disks, floppy disks, optical disks, magnetic tapes, memory chips, send and receive e-mail, or access electronic data networks such as the Internet. And the carrier used to hold the electronic data as used in the transmission. Further, non-limiting examples of "code segments" include software, instructions, computer programs, and means for controlling one or more processors. BRIEF DESCRIPTION OF THE FIGURES Embodiments of the present invention will be described in detail with reference to the drawings. FIG. 1 is a diagram showing DES irregular event intervals along the time axis. FIG. 2 is a diagram illustrating event processing using selective precomputation of the event architecture of the present invention. DETAILED DESCRIPTION OF THE INVENTION The present invention uses selective precomputation of events (SPE) as an acceleration mechanism that works within a single event list paradigm. With the present invention, management of events is centralized using one processor, and execution of events is distributed to other available processors. The SPE uses a conventional event list and relies on a single process or thread called an "event list manager" (ELM) to execute the events in the list. (The term "process" refers to one or more programs running on one or more processors.) SPEs "pre-compute" events when it is possible to increase event throughput. It also relies on additional processes that can be run on other processors. Such a process is called an “event pre-computation process” (EPP). In one embodiment of the present invention, each EPP runs on a separate processor. The purpose of the SPE is to allocate as many future events as possible to free processors and execute them in parallel, and that when the actual simulation time of an event is reached, the "work" or computation performed by these processors is still The task is to remember this task so that it is valid and usable. As in the standard event processing architecture, normal events enter the event list of the present invention and wait for execution. The event list is scanned by an "event list scanning process" (ESP) that selects certain events to be pre-calculated. The ESP can be implemented, for example, as a subtask of the ELM. Events can fall into one of three categories at any time: uncomputed events (UCE), computed events (ICE), and computed events (PCE). PCEs whose associated work remains valid until the actual execution time are called available calculated events (UPCE). Table 4 defines these four types of events. FIG. 2 illustrates event processing using the SPE architecture of the present invention. The ESP scans the event list to see if there is a UCE. If a UCE is found, the ESP sends the UCE to the EPP for processing, and the indication of the UCE in the event list changes from UCE to ICE. When the EPP ends, the resulting PCE is output and the ICE in the event list is changed to PCE. All events, regardless of their state, continue to be represented in the event list until executed. An event can only be executed when it reaches the head of the event list and is called a head event. At this point, the processing of the event depends on the state of the event. In FIG. 2, the head event is shown at the bottom of the event list, and is shown as an event that is a PCE. As shown in FIG. 2, there are three possible states for a head event. First, the head event, if it is a UCE, is handled by the process responsible for managing the event list, as in the SEE architecture. Second, if the head event is an ICE, no further event execution by the ELM can proceed until the head event becomes a PCE. As the ELM progresses, the causal relationship between events may be compromised. The ELM can block other processing until the pre-computation is complete, or use the time to scan the event list to select other events to pre-compute. Third, if the head event is a PCE (shown in FIG. 2), the ELM must verify that the pre-computation is still valid (ie, the head event is also a UPCE). . If the head event is UPCE, event execution consists only of "applying" the stored result. In other words, the system state is modified using the recorded event output. Input for Event Calculation Whether an event is pre-calculated by the EPP in the SPE architecture or calculated directly by the ELM, when the calculation of the event takes place, the event depends on the same set of "event inputs" I do. The term "event input" refers to the set of all elements of state information stored in the portion of the DES that can be analyzed during event calculation. The present invention increases DES throughput by having ELM-confirmed events calculated by EPP, rather than having the ELM calculate the events. With the present invention, the event throughput of a DES is not a function of how fast a single processor can fully calculate an event, but a function of how fast a single processor can see an event. . A condition of the present invention that achieves higher performance is that the confirmation of the event is easier than the complete calculation of the event. Therefore, the PCE confirmation mechanism is an important part of the SPE architecture. Determining whether the precomputation produces the same result when compared to the direct execution of the event by the ELM requires knowledge of which inputs were used during the precomputation of the event. Changes in such inputs can result in different calculations of events, and from a conservative perspective, such changes should be considered as invalidating pre-computation. Eliminating the need to make intervening modifications of the input is a simple way for SPE-based systems to identify calculated events. This technique is called "input invariance". When an event starts executing, it is generally not possible to determine in advance which input will be accessed. This is especially true in systems that support general instructions during events, including conditional control flows. Therefore, implementing input invariance requires some way of detecting and maintaining which inputs were used during precomputation. Depending on the nature of the change in the input of the event and the way the input is used, the event can evolve exactly regardless of the change. Therefore, input invariance is a conservative approach to performing validation in SPE DES. More sophisticated confirmation schemes allow for more detailed information about the use of event inputs, and thus can reduce the conditions required for confirmation. Output of event calculations Many different actions can be taken during the execution of an event. Certain actions are actions that are completely internal to the event and can be considered as having no effect on other events. The internal action may be, for example, an action that modifies a temporary variable used in local computation. Since internal actions do not affect other events, such internal actions can be performed as part of a pre-computation without having to "remember" that it has taken place. Events can include actions that have external effects. Such external actions or event outputs must be performed so as not to interfere with other ongoing or future event calculations. The SPE approach to this problem is one of several factors that distinguish the present invention from other conventional simulation architectures. Each event output can cause one or more changes in the state of DES. Making such a change, if event E was calculated as a PCE, would modify the view of the system state recognized by other ongoing event calculations. In addition, effecting the change modifies the system state as perceived by the PCE calculations performed between the first and last execution of event E. In the SPE architecture of the present invention, event outputs are essentially "buffered" until such time as they can be safely applied to the actual system state. This indicates that even if a change has occurred, it is not allowed to affect the system state until the time of the last event execution. As described above, if the PCE is determined to be invalid according to criteria such as input invariance, all changes are discarded. Therefore, the change takes place in a special context to meet two requirements. First, sufficient information about the output must be recorded so that the output can be similarly reproduced at runtime. If the verification is successful, the action is actually performed during the "apply result" phase, as shown in FIG. Second, the actual application of the output must be temporarily emulated to provide a consistent view of the simulation state during event precomputation. For example, if an object modifies one attribute of the object and then queries the value of this attribute during the same event (and optionally a subsequent PCE), the query will yield the newly assigned value . Thus, the event handling method associated with each object does not need to know whether it is performed for precomputation or for direct computation. Given the second requirement, two different views of the system state (or a subset of the system state) coexist temporarily. One view is valid in the context of the PCE in question and the other is valid in the context of the last event execution by the ELM. However, in this case, the event that occurs between the two times has the question of which of these views is valid. Either of the two views can provide the correct solution, as the confirmation mechanism used in the last event execution will use the appropriate system state when calculating the event. Each approach has different performance, and which approach to choose for DES should be considered for a particular DES or DES environment. Event Dispatch and Search One important key factor in the efficient implementation of the SPE architecture of the present invention is the mechanism used to transfer control of the event to the EPP. When performing this task on the same processor that supports the ELM involved in the last execution of the event, the overhead of the EPP will only allow one event to be checked at a time and pass the apply phase of execution, so the total event Throughput is reduced. Therefore, event dispatching should be performed using an independent processor that accesses the event list information, or the event dispatching should be performed with efficiency in mind. The purpose of event dispatching for event E, which is a UCE, is to provide the EPP with all the state information needed to make event E a PCE. After precomputing event E, the output of this event must be returned to the ELM in some way by the last run. This mechanism is called “event output search”. After dispatching event E to the EPP, all inputs of event E must be able to access the EPP. As pointed out above, it is difficult to know what inputs E needs before it actually calculates E. Therefore, the EPP must be provided with all possible input information, or the EPP must be able to access this information as needed. Many different implementations are possible, and the efficiency of these mechanisms depends strongly on the underlying architecture of the supporting hardware. For example, if all processors can share a single memory space instead of transferring information about UCE, then only UCE references need to be transferred to EPP when dispatching UCE to EPP. . Some implementations of the SPE architecture require a message-based dispatch search mechanism because a highly scalable hardware architecture cannot implement this functionality. Variations of the SPE Architecture As will be appreciated by those skilled in the art, many options are possible for implementing the SPE architecture of the present invention. Significant efficiency benefits can be realized utilizing certain aspects of specific DES and specific hardware. In addition to the points already discussed in the previous section, the following three implementation-specific points should be analyzed for possible efficiency gains, which can be implemented using current technology: . First, the choice of event should be considered. When the ESP selects an event to pre-compute from the event list, the ESP does not need to select events in the order in which it encounters the event. Instead, the ESP can intelligently select events based on heuristics that attempt to maximize the gain of the SPE architecture. An important point in this case is that the PCE is likely to remain valid and become an UPCE based on information such as the type of event and associated objects. Also, if the overhead for dispatching and retrieving events is equal, certain more computationally intensive events may be advantageous for pre-computation. Event selection heuristics can be complex and strongly dependent on specific knowledge about DES. Second, process allocation should be considered. A single process or an independent process can implement both ELM and ESP. The ELM and ESP may be implemented to run on a single processor or on separate processors. As shown in FIG. 2, additional processors can be used for the verification, apply, and full execution phases. Third, the dynamic distribution of state information should be considered. When using an event dispatching approach that does not rely on a centralized shared memory when storing the state of the system, various techniques can be used to increase the efficiency of accessing event inputs. For example, after an object or other part of the state of the DES is associated with a particular processor, keep this information in its own memory and dispatch events for this object to the same processor on a priority basis. May be the most efficient. Such an approach can reduce communication overhead for certain DESs. While the simulation is taking place, the state of the system can be dynamically distributed to the available processors. The applicability of such techniques is highly dependent on the nature of the DES and the architecture of the supporting hardware. As a variant of the SPE architecture, alternatives to the ESP can be used. For example, rather than having the ESP assign a UCE to an EPP, the EPP can access the event list and the EPP itself can select a UCE to pre-compute. As another example, the ELM may perform the functions of the ESP, and after the EPP polls the ELM for UCE, the ELM may supply the EPP with ULE. In general, in the present invention, the UCE is forwarded to the EPP, which can be done in various ways. As a variant of the SPE architecture, other labels, such as unprocessed, in process, and processed, can be used to indicate events in the event list. Further, the event list is not limited to the three types of events described herein, but may include other types of events as needed for the implementation of the DES. As another variation of the SPE architecture, the event list can have multiple head events. Multiple event lists can be shown as an uncalculated event list, a calculating event list, or a calculated event list. Multiple head events can be acknowledged or performed in parallel by one or more ELMs if they are "well independent of each other" events. To be sufficiently independent of each other, the output of each head event should not significantly affect the calculation of other head events. For example, multiple events are shown using the same simulation time (similar to Table 1, event E [1] and event E [2] have the same time 0.1) and arrive at the head of the event list. In these cases, these multiple events can be considered multiple head events and are events that are independent of each other so as to be confirmed or executed in parallel. In general, the use of multiple head events will result in an application-specific decision as to when the events will be sufficiently independent of each other to achieve a significant gain in performance. As a refinement of the SPE architecture, the ELM can scan the event list for PCEs and apply the same method to the PCEs in the event list as for the head event PCE. For each PCE in the event list, the ELM determines whether the pre-computation of the PCE is still valid. When selecting a PCE to verify in the event list, the ELM, or perhaps another process, can scan the event list periodically or aperiodically. After selecting a PCE, the ELM, or perhaps another process, verifies the PCE in the event list. The ELM does not modify the PCE if the PCE pre-computation is valid. If the pre-calculation of the PCE is invalid, the ELM indicates the PCE as an ICE, selects one EPP, and resumes the calculation of the newly indicated ICE. This method of restarting the calculation is the same as the method discussed above for performing the ICE calculation. As an alternative to verifying a PCE immediately after an ELM scan selects the PCE from the event list, the ELM can first determine whether the PCE was recently verified before verifying the PCE. . In this case, for example, each PCE may include a verification time indicator. The verification time indicator is initially set to the time at which the display of events in the event list changes from ICE to PCE. After selecting the PCE to be verified, the ELM checks whether this PCE was recently verified by comparing the threshold between the difference between the current time and the verification time indicator for this PCE. If the difference is less than the threshold, the PCE is not verified because it has been recently verified. If the difference is greater than or equal to the threshold, the PCE has not been recently verified and is verified using the verification method described above. After the PCE has been verified, the verification time indicator is changed to the current time. The verification time for each PCE is initially set to the time when the event was designated as a PCE. As an alternative to implementing the present invention for DES, the present invention can be implemented to increase the task throughput of computer programs implemented using multiple processors. In this alternative embodiment, an event is equivalent to a task or subtask. In other words, the execution speed of a computer program composed of tasks and subtasks can be increased by using a plurality of processors and the above method. Further, the present invention can be applied to a program including a series of operations having a certain degree of independence. As will be appreciated by those skilled in the art, the degree to which these operations are independent of one another is a factor in determining the achievable performance improvement. In many practical cases, DES can be broken down into events that are independent of each other so that the inventive approach can be used. Although the invention has been described in detail with reference to preferred embodiments, it will be apparent to those skilled in the art from the foregoing that changes and modifications can be made in the broader aspects of the invention without departing from the invention. Accordingly, the invention covers all such changes and modifications that fall within the true spirit of the invention, as defined by the appended claims.

───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),CA,JP────────────────────────────────────────────────── ─── Continuation of front page    (81) Designated country EP (AT, BE, CH, CY, DE, DK, ES, FI, FR, GB, GR, IE, I T, LU, MC, NL, PT, SE), CA, JP

Claims (1)

【特許請求の範囲】 1.離散イベントシミュレーションのイベントスループットを増大する方法で あって、 ヘッドイベントを含む離散イベントシミュレーション用のイベントリストを維 持するステップと、 ヘッドイベントが未計算であるか、それとも計算中であるか、あるいはそれと も計算済みであるかを判定するステップと、 ヘッドイベントが未計算であると判定された場合に、ヘッドイベントを実行す るステップと、 ヘッドイベントが計算中であると判定された場合に、ヘッドイベントの計算が 完了したときにヘッドイベントを計算済みとして示すステップと、 ヘッドイベントが計算済みであると判定された場合に、さらに、ヘッドイベン トの計算が有効であるか、それとも無効であるかを判定し、 ヘッドイベントの計算が有効であると判定された場合に、ヘッドイベントの 計算を適用し、 ヘッドイベントの計算が無効であると判定された場合に、ヘッドイベントを 実行するステップとを含むことを特徴とする方法。 2.離散イベントシミュレーションが現在のシステム状態を有し、ヘッドイベ ントの計算が有効である場合にヘッドイベントの計算を適用するステップが、ヘ ッドイベントの計算に基づいて現在のシステム状態を変更することを含むことを 特徴とする請求項1に記載の方法。 3.ヘッドイベントの計算が有効であるか、それとも無効であるかを判定する ステップが、入力不変性を使用することを特徴とする請求項1に記載の方法。 4.イベントリストが、イベントの順序付けられた集合であることを特徴とす る請求項1に記載の方法。 5.イベントリストがさらに、複数のイベントと、未計算イベントとして示さ れた少なくとも1つのイベントとを含み、前記方法がさらに、 イベントリストから1つの未計算イベントを選択すること、および 選択された未計算イベントの計算を実行することを含むことを特徴とする請求 項1に記載の方法。 6.さらに、 イベントリスト内の複数のイベントをヘッドイベントとして示すステップと、 各ヘッドイベントが未計算であるか、それとも計算中であるか、それとも計算 済みであるかを並行して判定するステップとを含むことを特徴とする請求項1に 記載の方法。 7.さらに、イベントリスト内の複数のイベントをヘッドイベントとして示す ステップの前に、 イベントリスト内の複数のイベントが、ヘッドイベントとして示されるほど互 いに独立しているかどうかを判定するステップを含むことを特徴とする請求項6 に記載の方法。 8.離散イベントシミュレーションのイベントスループットを増大する方法で あって、 複数のイベントと、未計算イベントとして示された少なくとも1つのイベント とを備える離散イベントシミュレーション用のイベントリストを維持するステッ プと、 未計算イベントとして示されたイベントをイベントリストから選択するステッ プと、 選択されたイベントをイベント事前計算プロセスに転送するステップと、 イベントリスト内の選択されたイベントを計算中イベントとして示すステップ と、 イベント事前計算プロセスを使用して、選択されたイベントの計算を行うステ ップと、 イベント事前計算プロセスから計算を受け取るステップと、 イベントリスト内の選択されたイベントを計算済みイベントとして示すステッ プとを含むことを特徴とする方法。 9.未計算イベントとして示されたイベントをイベントリストから選択するこ とが、イベントリストをスキャンして、未計算イベントとして示されたイベント があるかどうかを調べることを含むことを特徴とする請求項8に記載の方法。 10.イベント事前計算プロセスがイベントリストからイベントを選択するこ とを特徴とする請求項8に記載の方法。 11.選択されたイベントをイベント事前計算プロセスに転送することが、選 択されたイベントをイベント事前計算プロセスに割り当てることを含むことを特 徴とする請求項8に記載の方法。 12.さらに、 複数の計算済みイベントをイベントリストの計算済みヘッドイベントとして示 すステップと、 各ヘッドイベントを並行して検証し、ヘッドイベントが有効であるか、それと も無効であるかを判定し、 ヘッドイベントが有効である場合に、ヘッドイベントの計算を適用し、 ヘッドイベントが無効である場合に、ヘッドイベントを実行するステップと を含むことを特徴とする請求項8に記載の方法。 13.離散イベントシミュレーションが、更新される現在のシステム状態を有 し、イベント事前計算プロセスを使用して選択されたイベントの計算を行うステ ップが、 イベント事前計算プロセスにイベント入力を与えるステップと、 選択されたイベントおよびイベント入力に基づいてシステム状態の変化を判定 するステップとを含み、 イベント事前計算プロセスから計算を受け取るステップが、イベント入力とシ ステム状態の変化とをイベント事前計算プロセスから受け取ることを含み、 イベントリスト内の選択されたイベントを計算済みイベントとして示すステッ プが、イベント入力とシステム状態の変化とを選択されたイベントに関連付ける ことを含むことを特徴とする請求項8に記載の方法。 14.さらに、 選択された計算済みイベントをイベントリスト内の計算済みヘッドイベントと して示すステップと、 ヘッドイベントを検証し、ヘッドイベントが有効であるか、それとも無効であ るかを判定し、 ヘッドイベントが有効である場合に、ヘッドイベントの計算を適用し、 ヘッドイベントが無効である場合に、ヘッドイベントを実行するステップと を含むことを特徴とする請求項13に記載の方法。 15.ヘッドイベントを検証するステップが、ヘッドイベントに関連するイベ ント入力と現在のシステム状態を比較することを含み、 ヘッドイベントの計算を適用するステップが、ヘッドイベントに関連するシス テム状態の変化を使用して現在のシステム状態を更新することを含むことを特徴 とする請求項14に記載の方法。 16.ヘッドイベントを検証し、ヘッドイベントが有効であるか、それとも無 効であるかを判定するステップが、入力不変性を使用することを特徴とする請求 項14に記載の方法。 17.離散イベントシミュレーションのイベントスループットを増大する方法 であって、 計算済みイベントとして示された複数のイベントを有する離散イベントシミュ レーション用のイベントリストを維持すること、 計算済みイベントとして示されたイベントをイベントリストから選択すること 、 選択されたイベントが有効であるか、それとも無効であるかを判定し、 選択されたイベントが無効である場合に、 選択されたイベントをイベント事前計算プロセスに割り当て、 イベントリスト内のこの選択されたイベントを計算中イベントとして示し 、 イベント計算プロセスを使用して、選択されたイベントの計算を行い、 イベント事前計算プロセスからこの計算を受け取り、 イベントリスト内のこの選択されたイベントを計算済みイベントとして示 すことを含むことを特徴とする方法。 18.イベントリストが、関連する計算を用いて事前に計算されたイベントと して示されたヘッドイベントを有し、前記方法がさらに、 ヘッドイベントを検証し、ヘッドイベントが有効であるか、それとも無効であ るかを判定し、 ヘッドイベントが有効である場合に、ヘッドイベントの計算を適用し、 ヘッドイベントが無効である場合に、ヘッドイベントを実行するステップと を含むことを特徴とする請求項17に記載の方法。 19.離散イベントシミュレーションを実行するコンピュータシステムであっ て、 1つのイベントがヘッドイベントとして示され、各イベントが未計算イベント 、計算中イベント、または計算済みイベントとして示される複数のイベントを含 むイベントリストを維持する手段と、 未計算イベントの計算を行う少なくとも1つのイベント事前計算プロセスを実 行する手段と、 未計算イベントを選択し、この未計算イベントを1つのイベント事前計算プロ セスに転送する手段と、 未計算イベントを実行し計算済みヘッドイベントを検証する手段とを備えるこ とを特徴とするコンピュータシステム。 20.少なくとも1つのプロセッサが、イベントリストを維持する手段と、未 計算イベントを選択しこの未計算イベントを転送する手段と、未計算イベントを 実行し計算済みイベントを検証する手段とを実装することを特徴とする請求項1 9に記載のコンピュータシステム。 21.複数のプロセッサが、未計算イベントの計算を行う手段を実装すること を特徴とする請求項19に記載のコンピュータシステム。 22.離散イベントシミュレーションを実行するコードセグメントを実現する コンピュータ読取り可能媒体であって、コードセグメントが、 1つのイベントがヘッドイベントとして示され、各イベントが未計算イベント 、計算中イベント、または計算済みイベントとして示される複数のイベントを含 むイベントリストを維持するコードセグメントと、 未計算イベントの計算を行う少なくとも1つのイベント事前計算プロセスのそ れぞれ用のコードセグメントと、 未計算イベントを選択し、1つのイベント事前計算プロセスにこの未計算イベ ントを転送し、イベント事前計算プロセスに従って計算を行わせるコードセグメ ントと、 未計算イベントを実行し計算済みヘッドイベントを検証するコードセグメント とを備えることを特徴とするコンピュータ読取り可能媒体。[Claims]   1. In a way to increase the event throughput of discrete event simulation So,   Maintain an event list for discrete event simulation, including head events. Steps to have,   Whether the head event has not been calculated, is being calculated, or Determining whether has also been calculated;   Executes a head event when it is determined that the head event has not been calculated. Steps   When it is determined that the head event is being calculated, the calculation of the head event is performed. Indicating a head event as calculated when completed;   If it is determined that the head event has been calculated, Determine whether the calculation of the list is valid or invalid,     If it is determined that the calculation of the head event is valid, Apply the calculation,     If the head event calculation is determined to be invalid, the head event Performing the steps.   2. The discrete event simulation has the current system state and the head event Applying the head event calculation if the event calculation is valid Including changing the current system state based on the calculation of the load event. The method of claim 1, wherein the method comprises:   3. Determine if head event calculation is valid or invalid The method of claim 1, wherein the step uses input invariance.   4. The event list is an ordered set of events. The method of claim 1 wherein   5. Event list also shows multiple events and uncalculated events At least one event, wherein the method further comprises:   Selecting one uncalculated event from the event list; and   Performing a calculation of the selected uncalculated event Item 2. The method according to Item 1.   6. further,   Indicating a plurality of events in the event list as a head event;   Whether each head event has not been calculated, is being calculated, or has been calculated Determining in parallel whether or not it has been completed. The described method.   7. Additionally, show multiple events in the event list as head events Before the step,   Multiple events in the event list are interrelated enough to be indicated as head events. 7. The method according to claim 6, further comprising the step of determining whether the user is independent. The method described in.   8. In a way to increase the event throughput of discrete event simulation So,   Multiple events and at least one event marked as uncalculated event Steps for maintaining an event list for discrete event simulation with And   Steps to select from the event list the events shown as uncalculated events And   Forwarding the selected events to an event precomputation process;   Indicating the selected event in the event list as a computed event When,   Use the event precomputation process to calculate the selected event. And   Receiving a calculation from the event pre-calculation process;   A step that indicates the selected event in the event list as a calculated event. And a method comprising:   9. You can select the events shown as uncalculated events from the event list. And scan the event list and show the events that are shown as uncalculated events 9. The method of claim 8, comprising determining if there are any.   10. The event pre-computation process selects events from the event list. 9. The method according to claim 8, wherein:   11. Forwarding the selected events to the event precomputation process This includes assigning selected events to an event precomputation process. 9. The method according to claim 8, wherein the method comprises:   12. further,   Show multiple calculated events as calculated head events in the event list Steps   Verify each head event in parallel to determine if the head event is valid and Is also invalid,     Apply head event calculation if head event is enabled,     Executing the head event if the head event is invalid; The method according to claim 8, comprising:   13. Discrete event simulation has updated current system state To calculate the selected event using the event precomputation process. Is   Providing an event input to the event precomputation process;   Determine changes in system state based on selected events and event inputs And the step of   Receiving calculations from the event pre-computation process involves Including receiving a change in stem state from the event precomputation process,   A step that indicates the selected event in the event list as a calculated event. Group correlates event inputs and changes in system state with selected events 9. The method of claim 8, comprising:   14. further,   The selected calculated event is added to the calculated head event in the event list. Steps shown as   Verify the head event and make sure the head event is valid or invalid. Or not,     Apply head event calculation if head event is enabled,     Executing the head event if the head event is invalid; 14. The method according to claim 13, comprising:   15. The step of verifying the head event may include the event associated with the head event. Comparing the event input with the current system state,   The step of applying a head event calculation may include a system associated with the head event. Updating the current system state using the system state change The method according to claim 14, wherein:   16. Verify the head event and make sure the head event is valid or Wherein the step of determining whether the input is effective uses input invariance. Item 15. The method according to Item 14.   17. How to increase event throughput in discrete event simulation And   Discrete event simulation with multiple events indicated as calculated events Maintain an event list for your   Select the event shown as a calculated event from the event list ,   Determine whether the selected event is valid or invalid,     If the selected event is invalid,       Assign the selected event to the event precomputation process,       Marks this selected event in the event list as a computed event ,       Use the event calculation process to calculate the selected event,       Receive this calculation from the event pre-calculation process,       Show this selected event in the event list as a calculated event A method comprising:   18. The event list contains events that were pre-computed using the relevant computations Wherein the method further comprises:   Verify the head event and make sure the head event is valid or invalid. Or not,     Apply head event calculation if head event is enabled,     Executing the head event if the head event is invalid; 18. The method according to claim 17, comprising:   19. A computer system that performs discrete event simulation. hand,   One event is shown as a head event and each event is an uncalculated event Events that are marked as Means for maintaining an event list   Perform at least one event pre-calculation process that calculates uncalculated events Means to perform,   Select an uncalculated event and assign this uncalculated event to one Means for transferring to   Means for executing uncalculated events and verifying calculated head events. And a computer system.   20. At least one processor includes means for maintaining an event list; Means to select calculated events and forward these uncalculated events, Means for executing and verifying the calculated event. 10. The computer system according to 9.   21. Implement means for multiple processors to calculate uncalculated events 20. The computer system according to claim 19, wherein:   22. Implement code segments to perform discrete event simulations A computer-readable medium, wherein the code segment comprises:   One event is shown as a head event and each event is an uncalculated event Events that are marked as A code segment that maintains an event list   At least one event pre-computation process that computes uncomputed events A code segment for each,   Select an uncalculated event and include this uncalculated event in one event pre-calculation process. Code segment to forward events and perform calculations according to the event pre-computation process And   Code segment that executes uncalculated events and validates calculated head events A computer-readable medium comprising:
JP50733699A 1997-07-01 1998-07-01 System architecture for distributed discrete event simulation Pending JP2002509629A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US5277897P 1997-07-01 1997-07-01
US88640297A 1997-07-01 1997-07-01
US60/052,778 1997-07-01
US08/886,402 1997-07-01
PCT/US1998/013696 WO1999001816A1 (en) 1997-07-01 1998-07-01 System architecture for distribution of discrete-event simulations

Publications (1)

Publication Number Publication Date
JP2002509629A true JP2002509629A (en) 2002-03-26

Family

ID=26731065

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50733699A Pending JP2002509629A (en) 1997-07-01 1998-07-01 System architecture for distributed discrete event simulation

Country Status (4)

Country Link
EP (1) EP1010071A1 (en)
JP (1) JP2002509629A (en)
CA (1) CA2295983A1 (en)
WO (1) WO1999001816A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708329B1 (en) 2000-05-26 2004-03-16 Itt Manufacturing Enterprises, Inc. Method and apparatus for producing modules compatible with a target system platform from simulation system modules utilized to model target system behavior

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901260A (en) * 1987-10-28 1990-02-13 American Telephone And Telegraph Company At&T Bell Laboratories Bounded lag distributed discrete event simulation method and apparatus
JPH0464164A (en) * 1990-07-03 1992-02-28 Internatl Business Mach Corp <Ibm> Simulation method and device
US5701439A (en) * 1992-03-30 1997-12-23 Boeing North American, Inc. Combined discrete-event and continuous model simulation and analysis tool
US5694579A (en) * 1993-02-18 1997-12-02 Digital Equipment Corporation Using pre-analysis and a 2-state optimistic model to reduce computation in transistor circuit simulation
US5655107A (en) * 1994-11-30 1997-08-05 International Business Machines Corporation Digital logic wire delay simulation
US5790829A (en) * 1996-07-01 1998-08-04 Sun Microsystems, Inc. Event synchronization mechanism

Also Published As

Publication number Publication date
CA2295983A1 (en) 1999-01-14
WO1999001816A1 (en) 1999-01-14
EP1010071A1 (en) 2000-06-21

Similar Documents

Publication Publication Date Title
US6278963B1 (en) System architecture for distribution of discrete-event simulations
Chang et al. Scheduling in mapreduce-like systems for fast completion time
US9747086B2 (en) Transmission point pattern extraction from executable code in message passing environments
US20200219028A1 (en) Systems, methods, and media for distributing database queries across a metered virtual network
Hamidzadeh et al. Dynamic task scheduling using online optimization
US20040015973A1 (en) Resource reservation for large-scale job scheduling
CN109857535B (en) Spark JDBC-oriented task priority control implementation method and device
JPH05274162A (en) Multimedia computer operating system and method
KR20140080434A (en) Device and method for optimization of data processing in a mapreduce framework
CN100492282C (en) Processing system, communication system and method for processing task in processing system
US6418517B1 (en) Optimized function execution for a multiprocessor computer system
EP1131704B1 (en) Processing system scheduling
Mohamed et al. Hadoop-MapReduce job scheduling algorithms survey
Thomas et al. Survey on MapReduce scheduling algorithms
CN110262896A (en) A kind of data processing accelerated method towards Spark system
US20210224117A1 (en) Os optimized workflow allocation
Radulescu et al. LLB: A fast and effective scheduling algorithm for distributed-memory systems
Radulescu et al. FLB: Fast load balancing for distributed-memory machines
Fu et al. Run-time compilation for parallel sparse matrix computations
Tang et al. A network load perception based task scheduler for parallel distributed data processing systems
JP2002509629A (en) System architecture for distributed discrete event simulation
Audsley et al. Integrating unbounded software components into hard real-time systems
JPH05216844A (en) Method and apparatus for improved task distribution in multiprocessor data processing system
JP2002157386A (en) Workflow management method, its device, its processing program and recording medium with its processing program stored
US20240012645A1 (en) Multi-user in-memory queue for multi-treaded and/or multi-process computing architecture