JP2002297414A - システムシミュレータ、シミュレーション方法及びシミュレーションプログラム - Google Patents
システムシミュレータ、シミュレーション方法及びシミュレーションプログラムInfo
- Publication number
- JP2002297414A JP2002297414A JP2001098738A JP2001098738A JP2002297414A JP 2002297414 A JP2002297414 A JP 2002297414A JP 2001098738 A JP2001098738 A JP 2001098738A JP 2001098738 A JP2001098738 A JP 2001098738A JP 2002297414 A JP2002297414 A JP 2002297414A
- Authority
- JP
- Japan
- Prior art keywords
- master
- manager
- slave
- simulator
- thread
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000004088 simulation Methods 0.000 title claims abstract description 43
- 230000000903 blocking effect Effects 0.000 claims abstract description 69
- 230000006870 function Effects 0.000 description 142
- 230000008569 process Effects 0.000 description 47
- 238000012545 processing Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 19
- 230000018109 developmental process Effects 0.000 description 9
- 230000007704 transition Effects 0.000 description 8
- 238000011161 development Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000010365 information processing Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
ュレータを変更することなく、高速で且つアクセスブロ
ッキングによるデッドロック状態に陥らずにシミュレー
ションを行うことのできるシステムシミュレータ、シミ
ュレーション方法及びシミュレーションプログラムを提
供する。 【解決手段】バスマスタをシミュレートするマスタシミ
ュレータ1f、1s、2f、2sと、バススレーブをシ
ミュレートするスレーブシミュレータLと、マスタシミ
ュレータ及びスレーブシミュレータを関数呼び出しによ
り順次実行させる関数用マネージャFと、マスタシミュ
レータをスレッド切り替えにより実行させるスレッド用
マネージャS、とを備え、関数用マネージャからの関数
呼び出しにより実行されるマスタシミュレータがスレー
ブシミュレータにアクセスした際にアクセスブロッキン
グが発生すると、マスタシミュレータは、スレッド用マ
ネージャによるスレッド切り替えで実行されるようにス
レッド用マネージャを制御する。
Description
ータ、シミュレーション方法及びシミュレーションプロ
グラムに関し、特にバスマスタとバススレーブとがバス
を介して接続されたシステムをシミュレーションする技
術に関する。
置として、バスマスタ(以下、単に「マスタ」という)
とバススレーブ(以下、単に「スレーブ」という)とが
バスによって接続されることにより構成されるシステム
が知られている。このようなシステムの開発におけるソ
フトウェアの開発は、一般に、該ソフトウェアを動作さ
せるためのハードウェア環境が整ってから、換言すれ
ば、ハードウェアの開発が完了した後に、そのハードウ
ェアを用いて行われる。
では、システムの開発に長期間を必要とする。そこで、
最近は、開発期間を短縮するために、ソフトウェアの開
発をシミュレータ上で行い、以てハードウェアの開発と
ソフトウェアの開発とを並行して行う方法が採用されて
いる。
に使用される従来のシステムシミュレータ(以下、「第
1の従来技術に係るシステムシミュレータ」という)の
構成を示す。このシステムシミュレータは、第1マス
タ、第2マスタ、スレーブ及びマネージャから構成され
ている。
ったマスタとして使用されるデバイスをシミュレーショ
ンするためのプログラムで構成されたシミュレータであ
る。第2マスタは、同じくマスタとして使用される他の
デバイスをシミュレーションするためのプログラムで構
成されたシミュレータである。スレーブは、例えばタイ
マ、シリアル入出力ポート、汎用入出力ポート、メモリ
といったスレーブとして使用される周辺回路をシミュレ
ーションするためのプログラムで構成されたシミュレー
タである。マネージャは、第1マスタ、第2マスタ及び
スレーブを同期して動作させるための制御プログラムで
ある。
るシステムシミュレータは、第1マスタ、第2マスタ及
びスレーブの各々に組み込まれるプログラムの正当性を
検証するために使用される。
レータでは、シミュレーションは、マネージャが第1マ
スタ、第2マスタ及びスレーブに対して関数呼び出しを
順次実行することにより進められる。より詳しくは、マ
ネージャは、先ず第1マスタに対して関数呼び出しを実
行する。これにより、第1マスタは、1クロックに相当
する処理を実行する。例えば、関数呼び出しの対象が1
クロックで完了する命令であれば、1命令が実行され、
その後、制御はマネージャに戻される。関数呼び出しの
対象が複数クロックを必要とする命令であれば、1クロ
ック分の処理が完了した時点で、制御はマネージャに戻
される。
対して関数呼び出しが実行され、引き続いて、スレーブ
に対して関数呼び出しが実行される。以下、第1マスタ
→第2マスタ→スレーブ→第1マスタ→・・・と関数呼
び出しがサイクリックに実行されることにより、シミュ
レーションが進行する。なお、関数呼び出しの対象が複
数クロックを必要とする命令の場合は、その対象に対し
て複数のサイクルにわたって複数回の関数呼び出しが実
行されることにより、1命令が完了する。
スレーブは、マネージャから関数呼び出しが行われる毎
に1クロック分に相当する処理を順次実行する。従っ
て、第1マスタ、第2マスタ及びスレーブは恰もクロッ
クに同期しているように動作する。即ち、第1マスタ、
第2マスタ及びスレーブは、マネージャから動作タイミ
ングを貰って動作すると考えることができる。これによ
り、タイミングを考慮したシミュレーションが可能にな
っている。
るための同期機構としてセマフォ(semaphore)を用い
た従来の他のシステムシミュレータ(以下、「第2の従
来技術に係るシステムシミュレータ」という)の構成を
示す図である。この第2の従来技術に係るシステムシミ
ュレータは、常にマルチスレッドな動作を行う。
レータは、第1マスタ、第2マスタ、スレーブ、マネー
ジャ及びバスから構成されている。これら第1マスタ、
第2マスタ、スレーブ及びマネージャは、上述した実施
例のそれらと同様の機能を有する。バスは、図17では
図示を省略したが、第1マスタ及び第2マスタがスレー
ブにアクセスする際のバスの動作をシミュレーションす
るためのシミュレータである。
タ、マネージャ及びバス中の記号○は、セマフォを表
す。記号Pはポストを、Wはウエイトを、Tはトライウ
エイトをそれぞれ表す。トライウエイトは、バスに対し
て問い合わせをする機能である。この第2の従来技術に
係るシステムシミュレータでは、第1マスタ、第2マス
タ及びマネージャの何れか1つのみが起動されるように
制御される。
び第2マスタ(以下、単に「マスタ」と総称する場合が
ある)のセマフォに対してポスト(P)を行うことによ
りマスタのスレッドを起動し、自身はウエイト(W)す
る。また、マスタは、マネージャのセマフォに対してポ
スト(P)を行うことにより制御をマネージャに戻し、
自身はウエイト(W)する。スレーブは、上述した第1
の従来技術に係るシミュレータと同様に、マネージャが
スレーブに対して関数呼び出しを実行することにより起
動される。
具体的な動作を、図19〜図21を参照しながら説明す
る。
の遷移動作を説明するための図であり、点線は制御の流
れを示す。マネージャは、先ず、第1マスタのセマフォ
に対してポストを行い、自身はウエイトする。このポス
トにより、ウエイトしている第1マスタのスレッドが起
動され、バスのセマフォに対してトライウエイトを行
う。そして、このトライウエイトが失敗すれば、第1マ
スタは、マネージャのセマフォに対してポストを行い、
第1マスタはウエイトする。
の遷移動作を説明するための図であり、点線は制御の流
れを示す。上述したように、第1マスタがマネージャの
セマフォに対してポストを行うことにより制御がマネー
ジャに移ると、次いで、マネージャは、第2マスタのセ
マフォに対してポストを行い、自身はウエイトする。こ
のポストにより、ウエイトしている第2マスタのスレッ
ドが起動され、バスのセマフォに対してトライウエイト
を行う。そして、このトライウエイトが失敗すれば、マ
ネージャのセマフォに対してポストを行い、第2マスタ
はウエイトする。
遷移動作を説明するための図であり、点線は制御の流れ
を示す。上述したように、第2マスタがマネージャのセ
マフォに対してポストを行うことにより制御がマネージ
ャに移ると、次いで、マネージャは、スレーブに対して
関数呼出を実行する。スレーブは、第1マスタ及び第2
マスタからのアクセス要求に対して応答可能になったら
バスのセマフォに対してポストする。これにより、第1
マスタ及び第2マスタによる次回のトライウエイトは成
功することになる。その後、制御は、スレーブからマネ
ージャに戻される。以下、上述した動作が繰り返され
る。
スレッド切り替えを行いながら各スレッドで1クロック
分に相当する処理を順次実行し、スレーブは、マネージ
ャから関数呼び出しが行われる毎に1クロック分に相当
する処理を実行する。従って、第1マスタ、第2マスタ
及びスレーブは恰もクロックに同期しているように動作
するので、タイミングを考慮したシミュレーションが可
能になっている。
レータによれば、マスタがスレーブにアクセスする際
に、アクセスブロッキングが発生しても、つまりマスタ
がバスのトライウエイトに失敗しても、マスタが応答待
ちを継続することが無いので、デッドロック状態に陥る
ことはない。
296408号公報は、ハードウェアのシミュレーショ
ンを複数のアプリケーションで実現し、それらを連携動
作させることにより、ハードウェアの動作の記述を容易
にすると共に、ソフトウェアのデバッグ効率を向上させ
る組み込み機器用ソフトウェア論理シミュレータを開示
している。このシミュレータによれば、ハードウェアシ
ミュレータとソフトウェアとを協調してデバッグする場
合に、ハードウェアの動作のシミュレーションが非常に
遅かったり、ハードウェアの記述に難があるという点が
解消される。
た第1の従来技術に係るシステムシミュレータは、次の
ような問題を有する。即ち、マスタのプログラムには、
スレーブにアクセスする命令が含まれる。マスタがこの
命令を実行した場合にスレーブが1クロックに相当する
時間で応答できる場合は問題ないが、スレーブの多くは
応答に数クロックを必要とする。このように、マスタか
らのアクセスにスレーブが直ちに応答できない現象を
「アクセスブロッキング」と呼ぶ。アクセスブロッキン
グには、リードアクセスブロッキング及びライトアクセ
スブロッキングが含まれる。
マスタはスレーブからの応答待ちに入り、制御がマネー
ジャに返されなくなる。その結果、スレーブにクロック
が与えられなくなるので、マスタの応答待ちは継続され
たままでシステムシミュレータはデッドロック状態に陥
る。
けるスレーブの仕様を変更して1クロックで応答を返す
ようにすれば解消される。しかし、この場合は、システ
ムシミュレータ上でのスレーブと実際のスレーブとの仕
様が異なることになり、タイミングを考慮したシミュレ
ーションを行うことができない。或いはまた、上記問題
は、スレーブの応答待ちになったマスタは、制御をマネ
ージャに強制的に返すようにマスタのプログラムを構成
することにより解消できる。しかし、この場合は、従来
のマスタのプログラムを作り直す必要があり、更に、作
り直しにあたっては、マスタのプログラムが複雑になる
のでその開発に多大な工数を必要とする。
テムシミュレータは、デッドロックに陥ることはない
が、次のような問題を有する。即ち、このシステムシミ
ュレータでは、スレッド制御部の制御の下に常にスレッ
ド切り替えが行われるのでオーバーヘッドによるロス時
間が発生する。このオーバーヘッドの大きさは、マスタ
に搭載されるプログラムによって異なる。シミュレーシ
ョン時間で比較した場合、本発明者等の測定によれば、
第2の従来技術に係るシミュレータによるシミュレーシ
ョン時間は、第1の従来技術に係るシミュレータによる
シミュレーション時間の2〜40倍程度である。
タをシミュレーションするシミュレータを変更すること
なく、高速で且つアクセスブロッキングによるデッドロ
ック状態に陥らずにシミュレーションを行うことのでき
るシステムシミュレータ、シミュレーション方法及びシ
ミュレーションプログラムを提供することにある。
るシステムシミュレータは、上記目的を達成するため
に、バスマスタをシミュレートするマスタシミュレータ
と、バススレーブをシミュレートするスレーブシミュレ
ータと、前記マスタシミュレータ及び前記スレーブシミ
ュレータを関数呼び出しにより順次実行させる関数用マ
ネージャと、前記マスタシミュレータをスレッド切り替
えにより実行させるスレッド用マネージャ、とを備え、
前記関数用マネージャからの関数呼び出しにより実行さ
れる前記マスタシミュレータが前記スレーブシミュレー
タにアクセスした際にアクセスブロッキングが発生する
と、前記マスタシミュレータは、前記スレッド用マネー
ジャによるスレッド切り替えで実行されるように前記ス
レッド用マネージャを制御するように構成されている。
記スレッド用マネージャは、更に、前記スレーブシミュ
レータを関数呼び出しにより実行させるように構成でき
る。また、前記アクセスブロッキングが解消された後
は、前記スレッド用マネージャは、関数呼び出しにより
前記マスタシミュレータが実行されるように前記関数用
マネージャを制御するように構成できる。
ーション方法は、バスマスタをシミュレートするマスタ
シミュレータと、バススレーブをシミュレートするスレ
ーブシミュレータ、とを備え、前記マスタシミュレータ
及び前記スレーブシミュレータを関数呼び出しにより順
次実行させるステップと、該関数呼び出しによる実行に
おいて前記マスタシミュレータが前記スレーブシミュレ
ータにアクセスすることによりアクセスブロッキングが
発生すると、前記マスタシミュレータをスレッド切り替
えで実行させるステップ、とを備えている。
記スレッド切り替えで実行させるステップは、前記スレ
ーブシミュレータを関数呼び出しにより実行させるステ
ップ、を更に備えて構成できる。また、前記アクセスブ
ロッキングが解消された後は、スレッド切り替えから関
数呼び出しに戻って前記マスタシミュレータを実行させ
るステップを更に備えて構成できる。
ーションプログラムは、バスマスタをシミュレートする
マスタシミュレーションプログラムと、バススレーブを
シミュレートするスレーブシミュレーションプログラム
と、前記マスタシミュレーションプログラム及び前記ス
レーブシミュレーションプログラムを関数呼び出しによ
り順次実行させる関数用マネージャプログラムと、前記
マスタシミュレータをスレッド切り替えにより実行させ
るスレッド用マネージャプログラム、を備え、前記関数
用マネージャプログラムからの関数呼び出しにより実行
される前記マスタシミュレーションプログラムが前記ス
レーブシミュレーションプログラムにアクセスした際に
アクセスブロッキングが発生すると、前記マスタシミュ
レーションプログラムは、前記スレッド用マネージャプ
ログラムによるスレッド切り替えで実行されるように前
記スレッド用マネージャプログラムを制御するように構
成されている。
は、前記スレッド用マネージャプログラムは、更に、前
記スレーブシミュレーションプログラムを関数呼び出し
により実行させるように構成できる。また、前記アクセ
スブロッキングが解消された後は、前記スレッド用マネ
ージャプログラムは、関数呼び出しにより前記マスタシ
ミュレーションプログラムが実行されるように前記関数
用マネージャプログラムを制御するように構成できる。
を参照しながら詳細に説明する。
ムシミュレータの構成を示す機能ブロック図である。こ
のシミュレータは、パーソナルコンピュータ、ワークス
テーション、汎用コンピュータといった情報処理装置の
上にソフトウェアによって構築される。情報処理装置の
構成及び動作は周知であるので説明は省略する。
マスタ1f、スレッド用第1マスタ1s、関数用第2マ
スタ2f、スレッド用第2マスタ2s、関数用マネージ
ャF、スレッド用マネージャS、スレーブL及びバスB
から構成されている。
ける制御の遷移も示されている。即ち、スレッド用第1
マスタ1s、スレッド用第2マスタ2s、関数用マネー
ジャF、スレッド用マネージャS及びバスBに含まれる
記号○はセマフォを表す。また、記号Pはポスト、Wは
ウエイト、Tはトライウエイトを行うことをそれぞれ表
す。また、図1中の一点鎖線矢印は関数呼び出し、実線
矢印はポスト、破線矢印はウエイト、2点鎖線矢印はト
ライウエイトがそれぞれ行われることによる制御の遷移
を示す。更に、二重線矢印はスレッドが実行されること
を示す。
DMAといったマスタとして使用されるデバイスの動作
をシミュレーションするためのプログラムで構成された
シミュレータである。この関数用第1マスタ1fは、バ
スBを介してスレーブLにリード及びライトのアクセス
動作を行う。この関数用第1マスタ1fは、関数用マネ
ージャFと同じスレッドであり、関数用マネージャFか
ら1クロック毎に関数呼び出しされることにより実行さ
れる。そして、1クロックに相当するシミュレーション
を実行後、リターンすることにより制御が関数用マネー
ジャFに戻される。
にマスタとして使用されるデバイスの動作をシミュレー
ションするためのプログラムで構成されたシミュレータ
である。このスレッド用第1マスタ1sは、バスBを介
してスレーブLにリード及びライトのアクセス動作を行
う。このスレッド用第1マスタ1sは、関数用マネージ
ャFとは別のスレッドであり、やはり別のスレッドであ
るスレッド用マネージャSからセマフォに対してポスト
が行われることにより実行される。実行後は、セマフォ
をウエイトすることにより制御がスレッド用マネージャ
Sに移される。
第1マスタ1sとは同一のモジュールで構成されてお
り、同じテキストの異なるスレッドである。具体的に
は、関数用第1マスタ1fとスレッド用第1マスタ1s
とはモジュール中の実行開始位置が異なるのみである。
スタとして使用されるデバイスの動作をシミュレーショ
ンするためのプログラムで構成されたシミュレータであ
る。この関数用第2マスタ2fは、バスBを介してスレ
ーブLにリード及びライトのアクセス動作を行う。この
関数用第2マスタ2fは、関数用マネージャFと同じス
レッドであり、関数用マネージャFから1クロック毎に
関数呼び出しされることにより実行される。そして、1
クロックに相当するシミュレーションを実行後、リター
ンすることにより制御が関数用マネージャFに戻され
る。
にマスタとして使用されるデバイスの動作をシミュレー
ションするためのプログラムで構成されたシミュレータ
である。このスレッド用第2マスタ2sは、バスBを介
してスレーブLにリード及びライトのアクセス動作を行
う。このスレッド用第2マスタ2sは、関数用マネージ
ャFとは別のスレッドであり、やはり別のスレッドであ
るスレッド用マネージャSからセマフォに対してポスト
が行われることにより実行される。実行後は、セマフォ
をウエイトすることにより制御がスレッド用マネージャ
Sに移される。
第2マスタ2sとは同一のモジュールで構成されてお
り、同じテキストの異なるスレッドである。具体的に
は、関数用第2マスタ2fとスレッド用第2マスタ2s
とはモジュール中の実行開始位置が異なるのみである。
ート、汎用入出力ポートといったスレーブとして使用さ
れる周辺回路をシミュレーションするためのプログラム
で構成されたシミュレータである。このスレーブLは、
関数用第1マスタ1f、スレッド用第1マスタ1s、関
数用第2マスタ2f及びスレッド用第2マスタ2sから
バスBを介して行われるリードアクセス及びライトアク
セスに応答して所定の動作を行う。このスレーブLは、
関数用マネージャF及びスレッド用マネージャSから関
数呼び出しされることにより実行される。
ド用第1マスタ1s、関数用第2マスタ2f及びスレッ
ド用第2マスタ2sと、スレーブLとを接続するバスを
シミュレートするためのプログラムで構成されたシミュ
レータである。このバスBは、関数用第1マスタ1f、
スレッド用第1マスタ1s、関数用第2マスタ2f及び
スレッド用第2マスタ2sからのトライウエイトによる
問い合わせに応答して、スレーブLが直ちに応答可能で
あるかどうか、即ち、アクセスブロッキングが発生した
かどうかを表す情報を返す。
1f、関数用第2マスタ2f及びスレーブLを順番に関
数呼び出しすることにより、これらを同期して実行させ
るための制御プログラムである。
1マスタ1s及びスレッド用第2マスタ2sをスレッド
切り替えにより実行させると共に、スレーブを関数呼び
出しにより実行するための制御プログラムである。
施の形態に係るシステムシミュレータの動作を説明す
る。このシステムシミュレータでは、関数用第1マスタ
1f、スレッド用第1マネージャ1s、関数用第2マス
タ1s、スレッド用第2マスタ2s、関数用マネージャ
F及びスレッド用マネージャSの何れか1つのみが起動
されるように制御される。
い場合の動作を、図2を参照しながら説明する。この場
合、このシステムシミュレータは、上述した第1の従来
技術に係るシミュレータと同様に動作する。即ち、シミ
ュレーションは、関数用マネージャFが関数用第1マス
タ1f、関数用第2マスタ2f及びスレーブLに対して
関数呼び出しを順次実行することにより進められる。
ず関数用第1マスタ1fに対して関数呼び出しを実行す
る。これにより、関数用第1マスタ1fは、1クロック
に相当する処理を実行する。例えば、関数呼び出しの対
象が1クロックで完了する命令であれば、1命令が実行
された後に、制御は関数用マネージャFに戻される。こ
の処理ではアクセスブロッキングは発生しないものと仮
定しているので、バスBにアクセスする処理であっても
1クロックで処理は完了する。なお、関数呼び出しの対
象が複数クロックを必要とする命令であれば、1クロッ
ク分の処理が完了した時点で、制御は関数用マネージャ
Fに戻される。
ャFは、関数用第2マスタ2fに対し関数呼び出しを実
行し、引き続いて、スレーブLに対して関数呼び出しを
実行する。以下、関数用第1マスタ1f→関数用第2マ
スタ2f→スレーブL→関数用第1マスタ1f→・・・
と関数呼び出しがサイクリックに実行されることによ
り、シミュレーションが進行する。なお、関数呼び出し
の対象が複数クロックを必要とする命令の場合は、その
対象に対して複数のサイクルにわたって複数回の関数呼
び出しが実行されることにより、1命令が完了する。
生しない限り、関数用第1マスタ1f、関数用第2マス
タ2f及びスレーブLは、マネージャから関数呼び出し
が行われる毎に1クロック分に相当する処理を順次実行
するので、恰もクロックに同期しているように動作す
る。これにより、タイミングを考慮したシミュレーショ
ンが可能になっている。
合の動作を図3〜図6を参照しながら説明する。この場
合、この実施の形態に係るシステムシミュレータは、上
述した第2の従来技術に係るシミュレータと同様に動作
する。
出しされた関数用第1マスタ1fの処理においてアクセ
スブロッキングが発生し、制御がスレッド用マネージャ
Sに遷移する様子を示す図である。点線は制御の流れを
示す。
スタ1fに対して関数呼び出しを実行する。これによ
り、関数用第1マスタ1fは、1クロックに相当する処
理を実行する。この処理において、関数用第1マスタ1
fは、バスBのセマフォに対してトライウエイトを行
う。ここで、トライウエイトが成功すれば、つまりアク
セスブロッキングが発生しなければ、関数用第1マスタ
1fは、上述したように、1クロックに相当する処理を
完了して制御は関数用マネージャFに戻る。
りアクセスブロッキングが発生すれば、図3の点線矢印
で示すように、関数用第1マスタ1fは、スレッド用マ
ネージャSのセマフォに対してポストを行い、関数用マ
ネージャFのセマフォに対してウエイトを行う。これに
より、制御は、関数用マネージャFからスレッド用マネ
ージャSに移る。即ち、スレッド用マネージャSが起動
され、関数用マネージャFはスリープ状態に入る。以
後、スレッド用マネージャSの制御下でスレッド切り替
えによるシミュレーションが開始される。
スレッドが起動されたスレッド用第2マスタ2sの処理
においてアクセスブロッキングが発生し、制御がスレッ
ド用マネージャSに遷移する様子を示す図である。点線
は制御の流れを示す。
用マネージャSは、スレッド用第2マスタ2sのセマフ
ォに対してポストすることにより該スレッド用第2マス
タ2sのスレッドを起動し、自身はウエイトする。スレ
ッド用第2マスタ2sのスレッドは、バスBのセマフォ
に対してトライウエイトを行う。
ライウエイトが成功すれば、つまりアクセスブロッキン
グが発生しなければ、1クロック分の処理を完了した後
に、スレッド用マネージャSのセマフォに対してポスト
を行い、自身はウエイトする。一方、トライウエイトが
失敗すれば、つまりアクセスブロッキングが発生すれ
ば、直ちにスレッド用マネージャSのセマフォに対して
ポストを行い、自身はウエイトする。
呼び出しされたスレーブLが処理を完了し、その後、制
御がスレッド用マネージャSに遷移する様子を示す図で
ある。点線は制御の流れを示す。
用マネージャSは、スレーブLに対して関数呼び出しを
実行する。これにより、スレーブLは、1クロックに相
当する処理を実行する。例えば関数用第1マスタ1f、
スレッド用第1マスタ1s、関数用第2マスタ2f及び
スレッド用第2マスタ2sからのリード要求に対するデ
ータが用意できると、スレーブLは、バスBのセマフォ
に対してポストを行う。これにより、バスBにおけるア
クセスブロッキング状態が解除される。その後、制御は
スレッド用マネージャSに戻される。
呼び出しされたスレッド用第1マスタ1sの処理におい
てアクセスブロッキングが発生せず、制御が関数用マネ
ージャFに遷移する様子を示す図である。点線は制御の
流れを示す。
Sは、関数用マネージャFのセマフォに対してポストを
行う。これにより、トライウエイトに失敗してウエイト
していた関数用第1マスタ1fが起動され、再び、バス
Bのセマフォに対してトライウエイトを行う。ここで、
トライウエイトが成功すれば、つまりアクセスブロッキ
ングが発生しなければ、関数用第1マスタ1fは、1ク
ロックに相当する処理を完了して制御は関数用マネージ
ャFに戻る。
りアクセスブロッキングが解消されていなければ、図3
を参照しながら説明したように、関数用第1マスタ1f
は、スレッド用マネージャSのセマフォに対してポスト
を行う。以後、上述したと同様の動作が繰り返される。
そして、アクセスブロッキングが解消した時点で、全て
のマスタが関数呼び出しによって実行される。
ステムシミュレータによれば、例えばCPU単体のシミ
ュレーションを目的として作成された既開発の命令セッ
トシミュレータを、マスタのシミュレータとしてそのま
ま利用できる。従って、シミュレータの作り直しは不要
である。
きは、関数呼び出しによるシミュレーションからスレッ
ド切り替えによるシミュレーションに切り替えられるの
で、従来のように、アクセスブロッキングの発生に起因
してシステムシミュレータがデッドロックに陥ることが
ない。
限り、シミュレーションは関数呼び出しにより実行さ
れ、スレッド切り替えによる動作は行われない。その結
果、スレッド切り替えによるオーバーヘッドを最小限に
抑えることができ、高速なシミュレーションを実現でき
る。
上述した動作を実現するための処理を、関数用マネージ
ャFとスレッド用マネージャSとの切り替え部分の動作
を中心に、フローチャートを参照しながら説明する。
ミュレータのメイン処理を示すフローチャートである。
用マネージャF(以下、単に「マネージャF」という)
及びスレッド用マネージャS(以下、単に「マネージャ
S」という)では、関数用第1マスタ1f、スレッド用
第1マスタ1s、関数用第2マスタ2f及びスレッド用
第2マスタ2s(以下、単に「マスタ」と総称する場合
がある)は、テーブルにより管理されている。なお、以
下では、関数用第1マスタ1f及び関数用第2マスタ2
fを単に「マスタf」と呼び、スレッド用第1マスタ1
s及びスレッド用第2マスタ2sを単に「マスタs」と
呼ぶ場合がある。
rrent_master_table_index)は、マネージャFとマネー
ジャSとで共有する、次にクロックを進めるためのマス
タのテーブルインデックスである。
ョンが開始されると、先ず、カレントマスタテーブルイ
ンデックス(current_master_table_index)及びカレン
トスレーブテーブルインデックス(current_slave_tabl
e_index)がゼロに初期設定される(ステップS10及
びS11)。次いで、シミュレーションに使用されるマ
ネージャSのスレッドが生成される(ステップS1
2)。
処理(ステップS13)を行った後に、マネージャFに
関して、マネージャFのシステムの時間を1クロック進
める処理が、シミュレーション終了指示があるまで繰り
返される(ステップS14及びS15)。一方、マネー
ジャSに関しては、マネージャSのセマフォでウエイト
させ(ステップS16)、その後、マネージャSのシス
テムの時間を1クロック進める処理が、シミュレーショ
ン終了指示があるまで繰り返される(ステップS17及
びS18)。
びS15により、関数用マネージャFによる関数呼び出
しが実行されることによってシミュレーションが開始さ
れる。その後は、ステップS14の処理及びステップS
17の処理がアクセスブロッキングの有無に応じて適宜
実行される。
スタsのスレッド生成処理」の詳細を図8に示したフロ
ーチャートを参照しながら説明する。
rrent_master_index)は、マネージャSによって、次に
クロックを進めるマスタsのインデックスである。
は、先ず、カレントマスタインデックス(current_mast
er_index)がゼロに初期設定される(ステップS2
0)。次いで、カレントマスタインデックスがマスタテ
ーブルサイズ(master_table_size)より小さいかどう
かが調べられる(ステップS21)。ここで小さいこと
が判断されると、カレントマスタインデックス(curren
t_master_index)に対応するマスタsのスレッドが生成
される(ステップS22)。
ック進めるための処理(ステップS24)を行う一方
で、カレントマスタインデックス(current_master_ind
ex)の値をプラス1(ステップS23)した後に、次の
マスタsのスレッド生成のために、ステップS21に戻
り、上述した動作が繰り返される。上記ステップS21
で、カレントマスタインデックスがマスタテーブルサイ
ズ以上であることが判断されると、マスタsのスレッド
生成処理を終了する。
ネージャFのシステムの時間を1クロック進める処理」
の詳細を、図9に示したフローチャートを参照しながら
説明する。
ブルインデックス(current_master_table_index)がマ
スタテーブルサイズ(master_table_size)より小さい
かどうかが調べられる(ステップS25)。ここで、小
さいことが判断されると、カレントインデックス(cur_
index)に、カレントマスタテーブルインデックス(cur
rent_master_table_index)の値を代入してからカレン
トマスタテーブルインデックス(current_master_table
_index)の値を1だけインクリメントする処理(cur_in
dex=current_master_table_index++)が実行される(ス
テップS26)。
カレントインデックス(cur_index)のマスタを関数呼
び出しすることにより時間を1クロック進める処理が行
われる(ステップS27)。この処理の詳細は後述す
る。次いで、アクセスブロッキングが発生しているマス
タの情報を格納している連想配列が空かどうかが調べら
れる(ステップS28)。ここで、連想配列が空である
ことが判断されると、アクセスブロッキングは発生して
いないものと認識され、シーケンスはステップS25に
戻り、次のマスタに対して上述した動作が繰り返され
る。
ると、アクセスブロッキングが発生しているものと認識
され、マネージャSのセマフォに対してポストを行い
(ステップS29)、マネージャFのセマフォに対して
ウエイトを行う(ステップS30)。これにより、制御
は、マネージャFからマネージャSに移行し、以後、マ
ネージャSの制御下でスレッド切り替えによるシミュレ
ーションが開始される。その後、シーケンスはステップ
S25に戻り、次のマスタに対して上述した動作が繰り
返される。
ーブルインデックス(current_master_table_index)が
マスタテーブルサイズ(master_table_size)以上であ
ることが判断されると、カレントマスタテーブルインデ
ックス(current_master_table_index)がゼロにリセッ
トされる(ステップS31)。
ックス(current_slave_table_index)がスレーブテー
ブルサイズ(slave_table_size)より小さいかどうかが
調べられる(ステップS32)。ここで、小さいことが
判断されると、カレントインデックス(cur_index)に
カレントスレーブテーブルインデックス(current_slav
e_table_index)の値を代入してからカレントスレーブ
テーブルインデックス(current_slave_table_index)
の値を1だけインクリメントする処理(cur_index=curr
ent_slave_table_index++)が実行される(ステップS
33)。
がカレントインデックス(cur_index)のスレーブを関
数呼び出しすることにより時間を1クロック進める処理
が行われる(ステップS34)。その後シーケンスはス
テップS25に戻り、次のスレーブに対して上述した動
作が繰り返される。
テーブルインデックス(current_slave_table_index)
がスレーブテーブルサイズ(slave_table_size)以上で
あることが判断されると、カレントスレーブテーブルイ
ンデックス(current_slave_table_index)がゼロにリ
セットされる(ステップS35)。以上により、マネー
ジャFのシステムの時間を1クロック進める処理が終了
し、シーケンスはメイン処理に戻る。
ネージャSのシステムの時間を1クロック進める処理」
の詳細を、図10に示したフローチャートを参照しなが
ら説明する。
ブルインデックス(current_master_table_index)がマ
スタテーブルサイズ(master_table_size)より小さい
かどうかが調べられる(ステップS40)。ここで、小
さいことが判断されると、カレントインデックス(cur_
index)にカレントマスタテーブルインデックス(curre
nt_master_table_index)の値を代入してからカレント
マスタテーブルインデックス(current_master_table_i
ndex)の値を1だけインクリメントする処理(cur_inde
x=current_master_table_index++)が実行される(ステ
ップS41)。
カレントインデックス(cur_index)のマスタsの時間
を1クロック進める処理が行われる(ステップS4
2)。但し、アクセスブロッキングが発生した旨の通知
によって、マネージャFのセマフォに対してポストを行
うように設定されていれば、マネージャFのセマフォに
対してポストを行い、そうでなければ、該当するマスタ
sに対してポストを行う。この処理の詳細については後
述する。
トする(ステップS43)。次いで、連想配列が空かど
うかが調べられる(ステップS44)。ここで、連想配
列が空であることが判断されると、アクセスブロッキン
グは発生していないものと認識され、シーケンスはステ
ップS40に戻り、次のマスタに対して上述した動作が
繰り返される。
ると、アクセスブロッキングが発生しているものと認識
され、マネージャFのセマフォに対してポストを行い
(ステップS45)、マネージャSのセマフォに対して
ウエイトする(ステップS46)。これにより、制御
は、マネージャSからマネージャFに移行し、以後、マ
ネージャFの制御下で関数呼び出しによるシミュレーシ
ョンが行われる。その後、シーケンスはステップS40
に戻り、次のマスタに対して上述した動作が繰り返され
る。
ーブルインデックス(current_master_table_index)が
マスタテーブルサイズ(master_table_size)以上であ
ることが判断されると、カレントマスタテーブルインデ
ックス(current_master_table_index)がゼロにリセッ
トされる(ステップS47)。
ックス(current_slave_table_index)がスレーブテー
ブルサイズ(slave_table_size)より小さいかどうかが
調べられる(ステップS48)。ここで、小さいことが
判断されると、カレントインデックス(cur_index)に
カレントスレーブテーブルインデックス(current_slav
e_table_index)の値を代入してからカレントスレーブ
テーブルインデックス(current_slave_table_index)
の値を1だけインクリメントする処理(cur_index=curr
ent_slave_table_index++)が実行される(ステップS
49)。
がカレントインデックス(cur_index)のスレーブを関
数呼び出しすることにより時間を1クロック進める処理
が行われる(ステップS50)。その後シーケンスはス
テップS48に戻り、次のスレーブに対して上述した動
作が繰り返される。
レーブテーブルインデックス(current_slave_table_in
dex)がスレーブテーブルサイズ(slave_table_size)
以上であることが判断されると、カレントスレーブテー
ブルインデックス(current_slave_table_index)がゼ
ロにリセットされる(ステップS51)。以上により、
マネージャSのシステムの時間を1クロック進める処理
が終了し、シーケンスはメイン処理に戻る。
7で行われる「マスタの時間を1クロック進めるための
処理」の詳細を、図11に示したフローチャートを参照
しながら説明する。なお、以下では、マスタとしてCP
Uが使用される場合を例示して説明する。
われる(ステップS60)。次いで、フェッチされた命
令がデコードされる(ステップS61)。そして、デコ
ードの結果に基づいて、NOP命令(ステップS6
2)、ADD命令(ステップS63)、LOAD命令
(ステップS64)、・・・の何れかの実行が行われ
る。なお、デコードの結果、該当する命令が存在しなけ
ればエラー処理が行われる(ステップS65)。
って実行される命令の一例を、LOAD命令を例にとっ
て、図12に示したフローチャートを参照しながら説明
する。
ーブからバスを経由してデータが得られるかどうかが調
べられる(ステップS70)。ここで、データが得られ
ないことが判断されると、マスタfとマスタsとで共通
のアクセスブロッキング発生の通知処理が行われる(ス
テップS71)。このアクセスブロッキング発生の通知
処理の詳細は、図13のフローチャートに示されてい
る。
では、先ず、ブロッキングしているマスタの情報を格納
する連想配列が空かどうかが調べられる(ステップS8
0)。そして、空であることが判断されると、マネージ
ャSが、このマスタの時間を進めるときは、マネージャ
Fのセマフォに対してポストを行うように設定する(ス
テップS81)。一方、空でないことが判断されると、
ステップS81の処理はスキップされる。次いで、ブロ
ッキングをしているマスタの情報を格納する連想配列に
マスタを登録する(ステップS82)。その後、シーケ
ンスは、図12のステップS72に戻る。
フォに対してポストが行われる。次いで、マネージャF
のセマフォでウエイトする(ステップS73)。その
後、シーケンスはステップS70に戻り、上述した動作
が繰り返され、1クロック毎に、スレーブからデータが
得られているかどうかをチェックする。
を経由してデータを得られることが判断されると、次い
で、マスタfとマスタsとで共通のアクセスブロッキン
グ発生の通知処理を呼んでいたかどうか、つまりステッ
プS71を実行していたかどうかが調べられる(ステッ
プS74)。ここで、マスタfとマスタsとで共通のア
クセスブロッキング発生の通知処理を呼んでいたことが
判断されると、マスタfとマスタsとで共通のアクセス
ブロッキング終了の通知処理が実行される(ステップS
75)。このアクセスブロッキング終了の通知処理の詳
細は、図14のフローチャートに示されている。
では、ブロッキングをしているマスタの情報を格納する
連想配列からマスタが削除される(ステップS85)。
次いで、マネージャSが、このマスタの時間を進めると
きは、このマスタsのセマフォに対してポストを行うよ
うに設定する(ステップS86)。その後、シーケンス
は、図12のステップS76に戻る。
経由して得られたデータを、LOAD命令で指定された
レジスタ(図示せず)にライトする。これにより、LO
AD命令の実行が完了する。
スタの時間を1クロック進める処理」の詳細を、図15
に示したフローチャートを参照しながら説明する。な
お、以下では、マスタとしてCPUが使用される場合を
例示して説明する。
でウエイトする(ステップS90)。次いで、命令のフ
ェッチが行われる(ステップS91)。次いで、フェッ
チされた命令がデコードされる(ステップS92)。そ
して、デコードの結果に基づいて、NOP命令(ステッ
プS93)、ADD命令(ステップS94)、LOAD
命令(ステップS95)、・・・の何れかの実行が行わ
れる。なお、デコードの結果、該当する命令が存在しな
ければエラー処理が行われる(ステップS96)。次い
で、マネージャSのセマフォに対してポストが行われる
(ステップS97)。
OAD命令を例にとって、図16に示したフローチャー
トを参照しながら説明する。
ーブからバスを経由してデータが得られるかどうかが調
べられる(ステップS100)。ここで、データが得ら
れないことが判断されると、マスタfとマスタsとで共
通のアクセスブロッキング発生の通知処理が行われる
(ステップS101)。このアクセスブロッキング発生
の通知処理の詳細は、図13のフローチャートを参照し
て説明した。
ポストが行われる(ステップS102)。次いで、マス
タsのセマフォでウエイトする(ステップS103)。
その後、シーケンスはステップS100に戻り、上述し
た動作が繰り返され、1クロック毎にスレーブからデー
タが得られているかをチェックする。
スを経由してデータを得られることが判断されると、次
いで、マスタfとマスタsとで共通のアクセスブロッキ
ング発生の通知処理を呼んでいたかどうか、つまりステ
ップS101が実行されていたかどうかが調べられる
(ステップS104)。ここで、マスタfとマスタsと
で共通のアクセスブロッキング発生の通知処理を呼んで
いたことが判断されると、マスタfとマスタsとで共通
のアクセスブロッキング終了の通知処理が実行される
(ステップS75)。このアクセスブロッキング終了の
通知処理の詳細は、図14のフローチャートを参照して
説明した。
れたデータを、LOAD命令で指定されたレジスタ(図
示せず)にライトする(ステップS106)。これによ
り、LOAD命令の実行が完了する。
がら説明した動作が実現されている。
スタと1つのスレーブを備えた装置をシミュレーション
する場合を例に挙げて説明したが、本発明では、マスタ
の数及びスレーブの数はこれらに限定されず、任意の数
とすることができる。
来のバスマスタをシミュレーションするシミュレータを
変更することなく、高速で且つアクセスブロッキングに
よるデッドロック状態に陥らずにシミュレーションを行
うことのできるシステムシミュレータ、シミュレーショ
ン方法及びシミュレーションプログラムを提供できる。
タの構成を示す機能ブロック図である。
タにおいて、アクセスブロッキングが発生しない場合の
動作を説明するための図である。
タにおいて、アクセスブロッキングが発生する場合の動
作(その1)を説明するための図である。
タにおいて、アクセスブロッキングが発生する場合の動
作(その2)を説明するための図である。
タにおいて、アクセスブロッキングが発生する場合の動
作(その3)を説明するための図である。
タにおいて、アクセスブロッキングが発生する場合の動
作(その4)を説明するための図である。
タのメイン処理を示すフローチャートである。
すフローチャートである。
ック進める処理の詳細を示すフローチャートである。
ロック進める処理の詳細を示すフローチャートである。
ローチャートである。
フローチャートである。
フローチャートである。
フローチャートである。
フローチャートである。
フローチャートである。
を説明するための図である。
を説明するための図である。
るマネージャと第1マスタとの間の遷移動作を説明する
ための図である。
るマネージャと第2マスタとの間の遷移動作を説明する
ための図である。
るマネージャとスレーブとの間の遷移動作を説明するた
めの図である。
Claims (9)
- 【請求項1】 バスマスタをシミュレートするマスタシ
ミュレータと、 バススレーブをシミュレートするスレーブシミュレータ
と、 前記マスタシミュレータ及び前記スレーブシミュレータ
を関数呼び出しにより順次実行させる関数用マネージャ
と、 前記マスタシミュレータをスレッド切り替えにより実行
させるスレッド用マネージャ、とを備え、 前記関数用マネージャからの関数呼び出しにより実行さ
れる前記マスタシミュレータが前記スレーブシミュレー
タにアクセスした際にアクセスブロッキングが発生する
と、前記マスタシミュレータは、前記スレッド用マネー
ジャによるスレッド切り替えで実行されるように前記ス
レッド用マネージャを制御する、システムシミュレー
タ。 - 【請求項2】 前記スレッド用マネージャは、更に、前
記スレーブシミュレータを関数呼び出しにより実行させ
る、請求項1に記載のシステムシミュレータ。 - 【請求項3】 前記アクセスブロッキングが解消された
後は、前記スレッド用マネージャは、関数呼び出しによ
り前記マスタシミュレータが実行されるように前記関数
用マネージャを制御する、請求項1又は2に記載のシス
テムシミュレータ。 - 【請求項4】 バスマスタをシミュレートするマスタシ
ミュレータと、 バススレーブをシミュレートするスレーブシミュレー
タ、とを備え、 前記マスタシミュレータ及び前記スレーブシミュレータ
を関数呼び出しにより順次実行させるステップと、 該関数呼び出しによる実行において前記マスタシミュレ
ータが前記スレーブシミュレータにアクセスすることに
よりアクセスブロッキングが発生すると、前記マスタシ
ミュレータをスレッド切り替えで実行させるステップ、
とを備えたシミュレーション方法。 - 【請求項5】 前記スレッド切り替えで実行させるステ
ップは、前記スレーブシミュレータを関数呼び出しによ
り実行させるステップ、を更に備えた請求項4に記載の
シミュレーション方法。 - 【請求項6】 前記アクセスブロッキングが解消された
後は、スレッド切り替えから関数呼び出しに戻って前記
マスタシミュレータを実行させるステップを更に備え
た、請求項4又は5に記載のシミュレーション方法。 - 【請求項7】 バスマスタをシミュレートするマスタシ
ミュレーションプログラムと、 バススレーブをシミュレートするスレーブシミュレーシ
ョンプログラムと、 前記マスタシミュレーションプログラム及び前記スレー
ブシミュレーションプログラムを関数呼び出しにより順
次実行させる関数用マネージャプログラムと、 前記マスタシミュレータをスレッド切り替えにより実行
させるスレッド用マネージャプログラム、とを備え、 前記関数用マネージャプログラムからの関数呼び出しに
より実行される前記マスタシミュレーションプログラム
が前記スレーブシミュレーションプログラムにアクセス
した際にアクセスブロッキングが発生すると、前記マス
タシミュレーションプログラムは、前記スレッド用マネ
ージャプログラムによるスレッド切り替えで実行される
ように前記スレッド用マネージャプログラムを制御す
る、シミュレーションプログラム。 - 【請求項8】 前記スレッド用マネージャプログラム
は、更に、前記スレーブシミュレーションプログラムを
関数呼び出しにより実行させる、請求項7に記載のシミ
ュレーションプログラム。 - 【請求項9】 前記アクセスブロッキングが解消された
後は、前記スレッド用マネージャプログラムは、関数呼
び出しにより前記マスタシミュレーションプログラムが
実行されるように前記関数用マネージャプログラムを制
御する、請求項7又は8に記載のシミュレーションプロ
グラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001098738A JP4529063B2 (ja) | 2001-03-30 | 2001-03-30 | システムシミュレータ、シミュレーション方法及びシミュレーションプログラム |
DE10213837A DE10213837A1 (de) | 2001-03-30 | 2002-03-27 | Systemsimulator, Simulationsverfahren und Simulationsprogramm |
US10/107,056 US7246052B2 (en) | 2001-03-30 | 2002-03-28 | Bus master and bus slave simulation using function manager and thread manager |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001098738A JP4529063B2 (ja) | 2001-03-30 | 2001-03-30 | システムシミュレータ、シミュレーション方法及びシミュレーションプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002297414A true JP2002297414A (ja) | 2002-10-11 |
JP4529063B2 JP4529063B2 (ja) | 2010-08-25 |
Family
ID=18952360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001098738A Expired - Fee Related JP4529063B2 (ja) | 2001-03-30 | 2001-03-30 | システムシミュレータ、シミュレーション方法及びシミュレーションプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US7246052B2 (ja) |
JP (1) | JP4529063B2 (ja) |
DE (1) | DE10213837A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009032197A (ja) * | 2007-07-30 | 2009-02-12 | Fujitsu Microelectronics Ltd | ソフトウェアのシミュレーション方法、ソフトウェアのシミュレーションのためのプログラム、及びソフトウェアのシミュレーション装置 |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366708B2 (en) | 1999-02-18 | 2008-04-29 | Oracle Corporation | Mechanism to efficiently index structured data that provides hierarchical access in a relational database system |
US7321900B1 (en) | 2001-06-15 | 2008-01-22 | Oracle International Corporation | Reducing memory requirements needed to represent XML entities |
AU2002334721B2 (en) | 2001-09-28 | 2008-10-23 | Oracle International Corporation | An index structure to access hierarchical data in a relational database system |
US7047250B1 (en) | 2001-09-28 | 2006-05-16 | Oracle International Corporation | Indexing to efficiently manage versioned data in a database system |
US7092967B1 (en) * | 2001-09-28 | 2006-08-15 | Oracle International Corporation | Loadable units for lazy manifestation of XML documents |
US7308474B2 (en) * | 2002-11-06 | 2007-12-11 | Oracle International Corporation | Techniques for scalably accessing data in an arbitrarily large document by a device with limited resources |
JP2004334410A (ja) | 2003-05-06 | 2004-11-25 | Hitachi Ltd | 情報処理装置及びプロセッサ |
US8229932B2 (en) | 2003-09-04 | 2012-07-24 | Oracle International Corporation | Storing XML documents efficiently in an RDBMS |
US8694510B2 (en) | 2003-09-04 | 2014-04-08 | Oracle International Corporation | Indexing XML documents efficiently |
US7366735B2 (en) | 2004-04-09 | 2008-04-29 | Oracle International Corporation | Efficient extraction of XML content stored in a LOB |
US7493305B2 (en) | 2004-04-09 | 2009-02-17 | Oracle International Corporation | Efficient queribility and manageability of an XML index with path subsetting |
US7398265B2 (en) | 2004-04-09 | 2008-07-08 | Oracle International Corporation | Efficient query processing of XML data using XML index |
US7440954B2 (en) | 2004-04-09 | 2008-10-21 | Oracle International Corporation | Index maintenance for operations involving indexed XML data |
US7499915B2 (en) * | 2004-04-09 | 2009-03-03 | Oracle International Corporation | Index for accessing XML data |
US7930277B2 (en) | 2004-04-21 | 2011-04-19 | Oracle International Corporation | Cost-based optimizer for an XML data repository within a database |
US20050289175A1 (en) * | 2004-06-23 | 2005-12-29 | Oracle International Corporation | Providing XML node identity based operations in a value based SQL system |
DE602005022069D1 (de) | 2004-06-23 | 2010-08-12 | Oracle Int Corp | Effiziente auswertung von abfragen mittels übersetzung |
US7885980B2 (en) | 2004-07-02 | 2011-02-08 | Oracle International Corporation | Mechanism for improving performance on XML over XML data using path subsetting |
US8566300B2 (en) | 2004-07-02 | 2013-10-22 | Oracle International Corporation | Mechanism for efficient maintenance of XML index structures in a database system |
US7523131B2 (en) | 2005-02-10 | 2009-04-21 | Oracle International Corporation | Techniques for efficiently storing and querying in a relational database, XML documents conforming to schemas that contain cyclic constructs |
US20060212450A1 (en) * | 2005-03-18 | 2006-09-21 | Microsoft Corporation | Temporary master thread |
JP2006343942A (ja) * | 2005-06-08 | 2006-12-21 | Nec Electronics Corp | バスシステム設計方法と装置 |
US7406478B2 (en) * | 2005-08-11 | 2008-07-29 | Oracle International Corporation | Flexible handling of datetime XML datatype in a database system |
US9367642B2 (en) | 2005-10-07 | 2016-06-14 | Oracle International Corporation | Flexible storage of XML collections within an object-relational database |
US8554789B2 (en) * | 2005-10-07 | 2013-10-08 | Oracle International Corporation | Managing cyclic constructs of XML schema in a rdbms |
US8073841B2 (en) | 2005-10-07 | 2011-12-06 | Oracle International Corporation | Optimizing correlated XML extracts |
US8024368B2 (en) * | 2005-10-07 | 2011-09-20 | Oracle International Corporation | Generating XML instances from flat files |
US8949455B2 (en) | 2005-11-21 | 2015-02-03 | Oracle International Corporation | Path-caching mechanism to improve performance of path-related operations in a repository |
US7933928B2 (en) | 2005-12-22 | 2011-04-26 | Oracle International Corporation | Method and mechanism for loading XML documents into memory |
US7730032B2 (en) | 2006-01-12 | 2010-06-01 | Oracle International Corporation | Efficient queriability of version histories in a repository |
US9229967B2 (en) * | 2006-02-22 | 2016-01-05 | Oracle International Corporation | Efficient processing of path related operations on data organized hierarchically in an RDBMS |
US8510292B2 (en) * | 2006-05-25 | 2013-08-13 | Oracle International Coporation | Isolation for applications working on shared XML data |
US7933935B2 (en) * | 2006-10-16 | 2011-04-26 | Oracle International Corporation | Efficient partitioning technique while managing large XML documents |
US7797310B2 (en) | 2006-10-16 | 2010-09-14 | Oracle International Corporation | Technique to estimate the cost of streaming evaluation of XPaths |
US7836098B2 (en) * | 2007-07-13 | 2010-11-16 | Oracle International Corporation | Accelerating value-based lookup of XML document in XQuery |
US7840609B2 (en) * | 2007-07-31 | 2010-11-23 | Oracle International Corporation | Using sibling-count in XML indexes to optimize single-path queries |
US7991768B2 (en) | 2007-11-08 | 2011-08-02 | Oracle International Corporation | Global query normalization to improve XML index based rewrites for path subsetted index |
US8543898B2 (en) | 2007-11-09 | 2013-09-24 | Oracle International Corporation | Techniques for more efficient generation of XML events from XML data sources |
US8250062B2 (en) | 2007-11-09 | 2012-08-21 | Oracle International Corporation | Optimized streaming evaluation of XML queries |
US9842090B2 (en) | 2007-12-05 | 2017-12-12 | Oracle International Corporation | Efficient streaming evaluation of XPaths on binary-encoded XML schema-based documents |
US8429196B2 (en) | 2008-06-06 | 2013-04-23 | Oracle International Corporation | Fast extraction of scalar values from binary encoded XML |
CN101645057B (zh) * | 2008-08-06 | 2012-07-18 | 中兴通讯股份有限公司 | 一种防止cpu局域总线挂死的方法及装置 |
US7958112B2 (en) | 2008-08-08 | 2011-06-07 | Oracle International Corporation | Interleaving query transformations for XML indexes |
US8219563B2 (en) * | 2008-12-30 | 2012-07-10 | Oracle International Corporation | Indexing mechanism for efficient node-aware full-text search over XML |
US8126932B2 (en) * | 2008-12-30 | 2012-02-28 | Oracle International Corporation | Indexing strategy with improved DML performance and space usage for node-aware full-text search over XML |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07281925A (ja) * | 1994-04-06 | 1995-10-27 | Fujitsu Ltd | マルチプロセッサシミュレーション装置 |
JPH10111815A (ja) * | 1996-08-13 | 1998-04-28 | Nec Corp | デバッグシステム |
JPH11296408A (ja) * | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | 組み込み機器用ソフトウエア論理シミュレータ |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4506324A (en) * | 1982-03-08 | 1985-03-19 | The United States Of America As Represented By The Secretary Of The Navy | Simulator interface system |
US4868741A (en) * | 1983-07-22 | 1989-09-19 | Texas Instruments Incorporated | Computer bus deadlock prevention |
EP0357075A3 (en) * | 1988-09-02 | 1991-12-11 | Fujitsu Limited | Data control device and system using the same |
JPH0561951A (ja) * | 1991-08-30 | 1993-03-12 | Fujitsu Ltd | イメージ処理装置 |
JP3466212B2 (ja) * | 1991-09-17 | 2003-11-10 | インテル・コーポレーション | コンピュータシステム |
DE69230428T2 (de) * | 1991-09-27 | 2000-08-03 | Sun Microsystems, Inc. | Verklemmungserkennung und Maskierung enthaltende Busarbitrierungsarchitektur |
US5355455A (en) * | 1991-11-19 | 1994-10-11 | International Business Machines Corporation | Method and apparatus for avoiding deadlock in a computer system with two or more protocol-controlled buses interconnected by a bus adaptor |
US5448709A (en) * | 1992-10-13 | 1995-09-05 | Compaq Computer Corporation | Disk array controller having command descriptor blocks utilized by bus master and bus slave for respectively performing data transfer operations |
US5717873A (en) * | 1993-09-30 | 1998-02-10 | Intel Corporation | Deadlock avoidance mechanism and method for multiple bus topology |
US5469435A (en) * | 1994-01-25 | 1995-11-21 | Apple Computer, Inc. | Bus deadlock avoidance during master split-transactions |
US5493672A (en) * | 1994-05-16 | 1996-02-20 | Sun Microsystems, Inc. | Concurrent simulation of host system at instruction level and input/output system at logic level with two-way communication deadlock resolution |
US6279124B1 (en) * | 1996-06-17 | 2001-08-21 | Qwest Communications International Inc. | Method and system for testing hardware and/or software applications |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
JP2830857B2 (ja) * | 1996-09-09 | 1998-12-02 | 三菱電機株式会社 | データストレージシステム及びデータストレージ管理方法 |
US5832276A (en) * | 1996-10-07 | 1998-11-03 | International Business Machines Corporation | Resolving processor and system bus address collision in a high-level cache |
CA2345648A1 (en) * | 1998-09-30 | 2000-04-06 | Cadence Design Systems, Inc. | Block based design methodology |
US6826749B2 (en) * | 1998-12-08 | 2004-11-30 | Nazomi Communications, Inc. | Java hardware accelerator using thread manager |
US6466898B1 (en) * | 1999-01-12 | 2002-10-15 | Terence Chan | Multithreaded, mixed hardware description languages logic simulation on engineering workstations |
JP2000276359A (ja) * | 1999-03-23 | 2000-10-06 | Sony Corp | 情報処理装置、プログラム初期化方法及びプログラム提供媒体 |
US6507808B1 (en) * | 1999-06-23 | 2003-01-14 | International Business Machines Corporation | Hardware logic verification data transfer checking apparatus and method therefor |
US6714958B1 (en) * | 1999-07-28 | 2004-03-30 | International Business Machines Corporation | Detecting and causing latent deadlocks in multi-threaded programs |
US6490642B1 (en) * | 1999-08-12 | 2002-12-03 | Mips Technologies, Inc. | Locked read/write on separate address/data bus using write barrier |
JP2001160080A (ja) * | 1999-12-02 | 2001-06-12 | Nec Corp | オブジェクト指向言語によるシステムのシミュレーション方法、装置及びそのプログラムを記録した記録媒体 |
GB2362729B (en) * | 1999-12-23 | 2004-02-11 | St Microelectronics Sa | Memory access debug facility |
KR100392569B1 (ko) * | 2000-10-28 | 2003-07-23 | (주)다이나릿시스템 | 반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법 |
US7069422B2 (en) * | 2000-12-22 | 2006-06-27 | Modelski Richard P | Load-shift carry instruction |
US6981077B2 (en) * | 2000-12-22 | 2005-12-27 | Nortel Networks Limited | Global access bus architecture |
US20020124085A1 (en) * | 2000-12-28 | 2002-09-05 | Fujitsu Limited | Method of simulating operation of logical unit, and computer-readable recording medium retaining program for simulating operation of logical unit |
US7165094B2 (en) * | 2001-03-09 | 2007-01-16 | Sonics, Inc. | Communications system and method with non-blocking shared interface |
US7103887B2 (en) * | 2001-06-27 | 2006-09-05 | Sun Microsystems, Inc. | Load-balancing queues employing LIFO/FIFO work stealing |
US6834365B2 (en) * | 2001-07-17 | 2004-12-21 | International Business Machines Corporation | Integrated real-time data tracing with low pin count output |
US7076416B2 (en) * | 2001-08-20 | 2006-07-11 | Sun Microsystems, Inc. | Method and apparatus for evaluating logic states of design nodes for cycle-based simulation |
US7054910B1 (en) * | 2001-12-20 | 2006-05-30 | Emc Corporation | Data replication facility for distributed computing environments |
US6981081B2 (en) * | 2002-12-19 | 2005-12-27 | Intel Corporation | Method for SMI arbitration timeliness in a cooperative SMI/driver use mechanism |
US7089340B2 (en) * | 2002-12-31 | 2006-08-08 | Intel Corporation | Hardware management of java threads utilizing a thread processor to manage a plurality of active threads with synchronization primitives |
US7000047B2 (en) * | 2003-04-23 | 2006-02-14 | International Business Machines Corporation | Mechanism for effectively handling livelocks in a simultaneous multithreading processor |
-
2001
- 2001-03-30 JP JP2001098738A patent/JP4529063B2/ja not_active Expired - Fee Related
-
2002
- 2002-03-27 DE DE10213837A patent/DE10213837A1/de not_active Withdrawn
- 2002-03-28 US US10/107,056 patent/US7246052B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07281925A (ja) * | 1994-04-06 | 1995-10-27 | Fujitsu Ltd | マルチプロセッサシミュレーション装置 |
JPH10111815A (ja) * | 1996-08-13 | 1998-04-28 | Nec Corp | デバッグシステム |
JPH11296408A (ja) * | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | 組み込み機器用ソフトウエア論理シミュレータ |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009032197A (ja) * | 2007-07-30 | 2009-02-12 | Fujitsu Microelectronics Ltd | ソフトウェアのシミュレーション方法、ソフトウェアのシミュレーションのためのプログラム、及びソフトウェアのシミュレーション装置 |
EP2037368A2 (en) | 2007-07-30 | 2009-03-18 | Fujitsu Microelectronics Limited | Simulation of program execution to detect problem such as deadlock |
Also Published As
Publication number | Publication date |
---|---|
DE10213837A1 (de) | 2002-12-12 |
US7246052B2 (en) | 2007-07-17 |
US20020143512A1 (en) | 2002-10-03 |
JP4529063B2 (ja) | 2010-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4529063B2 (ja) | システムシミュレータ、シミュレーション方法及びシミュレーションプログラム | |
US8112263B2 (en) | Method for logic checking to check operation of circuit to be connected to bus | |
TW594513B (en) | Apparatus and method for in-circuit emulation using high-level programming language | |
US20060143522A1 (en) | Accelerated hardware emulation environment for processor-based systems | |
US7957950B2 (en) | Hard/soft cooperative verifying simulator | |
US9047427B1 (en) | Method and system for performing verification of an electronic design | |
US6336088B1 (en) | Method and apparatus for synchronizing independently executing test lists for design verification | |
JPH10312315A (ja) | ソフトウェア/ハードウェア協調シミュレーション方式 | |
US11537769B2 (en) | Simulator and simulation method | |
CN113064833A (zh) | 一种单片机仿真方法、系统、装置、设备及存储介质 | |
JP2000276502A (ja) | ソフトウエアシミュレータ | |
JPH10270558A (ja) | 非同期ラッチおよび外部非同期信号のラッチ方法 | |
CN117251118B (zh) | 支持虚拟NVMe仿真与集成方法及系统 | |
JP2002082813A (ja) | プログラムロジック装置 | |
KR100638476B1 (ko) | 버추얼 플랫폼 기반의 시스템 온 칩 개발 환경 및 개발 방법 | |
CN111694697B (zh) | 半导体装置及调试系统 | |
JPH10221410A (ja) | Lsiの自動論理検証方式 | |
CN111143141B (zh) | 一种状态机设置方法及系统 | |
JPH0687221B2 (ja) | 情報処理装置 | |
EP0947938B1 (en) | System for emulating an electronic device | |
Coelho et al. | Redesigning hardware-software systems | |
JP2007156728A (ja) | 論理検証方法及び論理検証システム | |
JPH11259552A (ja) | システム仕様記述のシミュレーション方法 | |
JP5228552B2 (ja) | プロセス間通信機構 | |
KR100658485B1 (ko) | 마이크로프로세서 개발시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080118 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091023 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091110 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100112 |
|
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: 20100526 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100526 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130618 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130618 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140618 Year of fee payment: 4 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |