JP3848171B2 - 計算機シミュレーションプログラム、プロセッサのモデルの検証方法、及び計算機シミュレーション方法 - Google Patents
計算機シミュレーションプログラム、プロセッサのモデルの検証方法、及び計算機シミュレーション方法 Download PDFInfo
- Publication number
- JP3848171B2 JP3848171B2 JP2002025447A JP2002025447A JP3848171B2 JP 3848171 B2 JP3848171 B2 JP 3848171B2 JP 2002025447 A JP2002025447 A JP 2002025447A JP 2002025447 A JP2002025447 A JP 2002025447A JP 3848171 B2 JP3848171 B2 JP 3848171B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- area
- program
- computer simulation
- flag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、計算機シミュレーションプログラムに関し、詳しくは命令レベルで計算機プロセッサのシミュレーションを実行する計算機シミュレーションプログラムに関する。
【従来の技術】
一般に、計算機上で動作するプログラムは、テキスト領域(テキスト・セクション)、データ領域(データ・セクション)、BSS領域(BSSセクション)、スタック領域、ヒープ領域を有する。テキスト領域は、命令列を保持する領域であり、プログラム実行時に初期値を有する。データ領域は、初期値が定まっているデータを保持する領域であり、プログラム実行時に初期値を有する。BSS領域は、初期値が定まっていないデータを保持する領域であり、本来は初期値を有さないが、一般的にはOS或いは初期化ルーチン等によって零に初期化される場合が多い。スタック領域は、手続き呼び出しのフレーム及びスタック変数を保持する領域であり、プログラム実行時に初期値を有さない。ヒープ領域は、動的なメモリ領域として用いる領域であり、プログラム実行時に初期値を有さない。動的なメモリ領域の獲得及び解放は、malloc関数及びfree関数等の専用のAPI(Application Program Interface)を介して実現される。
【0002】
プログラム実行時にこれらの領域に対する読み書き操作を考えた場合、初期値を有する領域に対しては、書き込み操作を行う前に読み出し操作を行っても、プログラムの動作が不安定になることはない。しかし初期値を有さない領域に対しては、書き込み操作を行う前に読み出し操作を行った場合、プログラムの動作が不安定になる可能性がある。従って、正常に動作するプログラム(動作が不安定にならないプログラム)を実現するためには、不当な未初期化領域からの読み出し操作を行ってはならない。
【0003】
ここでは、不当な未初期化領域からの読み出し操作を含むプログラムを「正しくないプログラム」と呼び、不当な未初期化領域からの読み出し操作を含まないプログラムを「正しいプログラム」と呼ぶ。
【0004】
一般に、計算機が実行するメモリ領域への読み書き操作には、命令フェッチ、ロード命令によるデータ・ロード、ストア命令によるデータ・ストア、命令プリフェッチ、メモリから命令キャッシュへのキャッシュ・ブロックの読み出し、メモリからデータ・キャッシュへのキャッシュ・ブロックの読み出し、データ・キャッシュからメモリへのキャッシュ・ブロックの書き込み等がある。ここで、命令プリフェッチ及びメモリから命令キャッシュへのキャッシュ・ブロックの読み出し以外の操作については、「正しいプログラム」であればプログラムの動作が不安定になることはない。しかし命令プリフェッチ及びメモリから命令キャッシュへのキャッシュ・ブロックの読み出し操作については、「正しいプログラム」であっても、プリフェッチ対象領域が初期化されていない場合が考えられる。この場合、プログラムの動作が不安定になることはないが、若干の性能劣化が考えられる。
【発明が解決しようとする課題】
プロセッサを設計する場合、プロセッサの設計情報(モデル)は、ハードウェア記述言語にて記述されることが多い。この際、プロセッサモデルの設計の確からしさを確認する作業として、ハードウェア記述言語を取り扱えるシミュレータ上で、論理検証プログラムをプロセッサモデルにより実行することにより、論理検証作業を実行することが多い。
【0005】
ここで、論理検証プログラムが「正しくないプログラム」であった場合を考えると、不当な未初期化領域が読み出されるので、モデルが期待の動作をしない可能性がある。また、論理検証プログラムが「正しいプログラム」であったとしても、プリフェッチ対象領域が初期化されていない場合等には、不定として表現される未初期化領域が読み出されるので、モデルが期待の動作をしない可能性がある。
【0006】
このように論理検証プログラムが未初期化領域を読み出す場合にはモデルが期待の動作をしないので、そのような論理検証プログラムを使用したのでは、プロセッサモデルの設計について正当な検証作業を行うことが出来ない。従って、未初期化領域を読み出すような論理検証プログラムが作成された場合には、未初期化領域を読み出している旨を検出して、論理検証プログラムを修正することが望ましい。
【0007】
以上を鑑みて、本発明は、未初期化領域の読み出しを検出することが可能な計算機シミュレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
本発明による計算機シミュレーションプログラムは、計算機シミュレーション上でプロセッサのモデルによりプログラムを実行する際に、該プロセッサのモデルがアクセスするメモリ領域のメモリ要素の各々に対して、該メモリ要素への書き込みが既に行われたか否かを示すフラグを割り当て、複数の該メモリ要素を含む単一の連続する割付空間を複数個離散的に割り当てることにより該メモリ領域を管理し、該単一の連続する割付空間の各々に対して、対応する該メモリ要素の全てに対して書き込みが既に行われたか否かを示すフラグを割り当て、該単一の連続する割付空間の各々に対して、対応する該メモリ要素のうちで書き込みが既に行われたメモリ要素の数を示すカウント数を割り当てることを特徴とする。
【0008】
上記計算機シミュレーションプログラムにおいては、メモリ要素の内容が既に書き込み済みか否かを示すフラグを各メモリ要素に対して設ける。従って、メモリ読み出し動作を実行時にこのフラグをチェックすることで、未初期化領域からの読み出し動作が発生した場合には、これを検出することが可能になる。
【0009】
また本発明によるプロセッサのモデルの検証方法は、論理検証プログラムを作成し、計算機シミュレーション上でプロセッサのモデルがアクセスするメモリ領域のメモリ要素の各々に対して該メモリ要素への書き込みが既に行われたか否かを示すフラグを割り当て、複数の該メモリ要素を含む単一の連続する割付空間を複数個離散的に割り当てることにより該メモリ領域を管理し、該単一の連続する割付空間の各々に対して、対応する該メモリ要素の全てに対して書き込みが既に行われたか否かを示すフラグを割り当て、該単一の連続する割付空間の各々に対して、対応する該メモリ要素のうちで書き込みが既に行われたメモリ要素の数を示すカウント数を割り当てる命令レベルシミュレータで該論理検証プログラムを実行し、該フラグをチェックすることで未初期化領域からの読み出し動作が実行されたか否かを判定し、未初期化領域からの読み出し動作が検出された場合には該論理検証プログラムを修正する各段階を含む。
【0010】
上記プロセッサのモデルの検証方法においては、メモリ要素の内容が既に書き込み済みか否かを示すフラグを各メモリ要素に対して設け、計算機シミュレータで論理検証プログラムを実行時にこのフラグをチェックすることで、「未初期化領域からの読み出し動作」が発生した旨を検出することが可能である。これにより、論理検証プログラムを適宜修正して、適切な論理検証作業を実行することが出来る。
【発明の実施の形態】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【0011】
図1は、本発明による命令レベルの計算機シミュレータのフローチャートである。
【0012】
本発明による命令レベルシミュレータは、ステップST1で、命令フェッチを行い、実行する命令を命令レジスタに格納する。次にステップST2で、命令デコードを行い、実行する命令を解釈する。最後にステップST3で、命令実行を行う。
【0013】
図2は、命令フェッチのフローチャートである。
【0014】
命令フェッチ段階では、まずステップST1で、フェッチすべき命令アドレスの計算を行う。次にステップST2で、計算されたアドレスに対応するメモリ領域から命令を読み出す。最後にステップST3で、読み出した命令を命令レジスタに格納する。
【0015】
図3は、命令実行のフローチャートである。
【0016】
命令実行段階では、まずステップST1で、命令の種別を判別する。
【0017】
実行すべき命令がロード命令であった場合、ステップST2で、レジスタの読み出し結果に基づき実効アドレスを計算する。ステップST3で、計算した実効アドレスに対応するメモリ領域を読み出す。ステップST4で、読み出した内容をロード・データとしてレジスタに書き込む。
【0018】
実行すべき命令がストア命令であった場合、ステップST5で、レジスタの読み出し結果に基づき実効アドレスを計算する。ステップST6で、レジスタからストア・データを読み出す。ステップST7で、ストア・データを実効アドレスに対応するメモリ領域に書き込む。
【0019】
実行すべき命令が演算命令であった場合、ステップST8で、レジスタを読み出す。ステップST9で、読み出し結果に基づき演算を行う。ステップST10で、演算結果をレジスタに書き込む。
【0020】
実行すべき命令が分岐命令であった場合、ステップST11で、レジスタを読み出す。ステップST12で、読み出し結果に基づき、分岐アドレスを計算する。ステップST13で、計算した結果をプログラムカウンタ(レジスタ)に書き込む。
【0021】
本発明による命令レベルシミュレータにおいては、図2の命令フェッチ段階のステップST2及び図3の命令実行段階のステップST3にあるメモリ読み出し動作、及び図3の命令実行段階のステップST7にあるメモリ書き込み動作において、未初期化領域読み出し検出を可能にするための処理を行う。
【0022】
図4は、本発明によるメモリ書き込み動作の第1実施例を示すフローチャートである。図5は、本発明によるメモリ読み出し動作の第1実施例を示すフローチャートである。
【0023】
まず準備段階として、命令シミュレータの命令シミュレータの起動時に、メモリの各要素に対応するフラグを0に初期化する。図6は、第1実施例に対応するデータ構造を示す図である。図6に示されるように、メモリ領域10は、メモリ値を格納する領域であるメモリ要素10aとそれに対応するフラグ領域10bが、複数個集まった単一の纏まりとして割り当てられる。このフラグ領域10bの各々を、命令シミュレータの起動時に0に初期化する。以降、フラグ領域10bのフラグをフラグAと呼ぶ。
【0024】
命令レベルシミュレータでのプログラム実行時に、指定アドレスのメモリ要素10aに対して書き込みを行うメモリ書き込み動作を実行すると、まず図4のステップST1で、書き込み対象のメモリ要素10aに対応するフラグAが0であるか否かを判定する。フラグAが0であるならば、ステップST2でフラグAを1に変更し、ステップST3に進む。フラグAが0でなければ、そのままステップST3に進む。ステップST3で、指定アドレスのメモリ要素10aに書き込みデータを書き込む。
【0025】
命令レベルシミュレータでのプログラム実行時に、指定アドレスのメモリ要素10aに対して読み出しを行うメモリ読み出し動作を実行すると、まず図5のステップST1で、読み出し対象のメモリ要素10aに対応するフラグAが0であるか否かを判定する。フラグAが0であるならば、ステップST2で未初期化領域に対する読み出し動作を検出し、ステップST3に進む。フラグAが0でなければ、そのままステップST3に進む。ステップST3で、指定アドレスのメモリ要素10aからデータを読み出す。
【0026】
このように、本発明のメモリ書き込み動作及びメモリ読み出し動作の第1実施例においては、複数のメモリ要素を一纏まりの記憶空間として管理する場合に、メモリ要素の内容が既に書き込み済みか否かを示すフラグを各メモリ要素に対して設けることで、未初期化領域からの読み出し動作を検出することが可能になる。
【0027】
図7は、本発明によるメモリ書き込み動作の第2実施例を示すフローチャートである。図8は、本発明によるメモリ読み出し動作の第2実施例を示すフローチャートである。
【0028】
図9は、第2実施例に対応するデータ構造を示す図である。図9に示されるように、メモリ領域12は離散的に割り当てられる複数のメモリ割付領域13を含み、各メモリ割付領域13は、メモリ値を格納する領域であるメモリ要素13aとそれに対応するフラグ領域13bが、複数個集まった単一の纏まりとして割り当てられる。以降、フラグ領域13bのフラグをフラグAと呼ぶ。
【0029】
図10は、図9の離散メモリ領域を管理するデータ構造を示す図である。図10に示されるようにメモリ割付管理テーブル14を設け、各メモリ割付領域13の先頭アドレスをテーブルエントリ14aとし、各先頭アドレスに対応するメモリ割付領域13へのポインタを更なるテーブルエントリ14bとする。このようにしてメモリ割付管理テーブル14により記憶領域を管理することで、計算機シミュレーションを実行しながら、随時必要に応じてメモリ割付領域13を増やしていくことが出来る。
【0030】
命令レベルシミュレータでのプログラム実行時に、指定アドレスのメモリ要素13aに対して書き込みを行うメモリ書き込み動作を実行すると、まず図7のステップST1で、書き込み対象のメモリ要素13aを含むメモリ割付領域13が既に割り当てられ確保されているかを判定する。確保されている場合には、ステップST2で、書き込み対象のメモリ要素13aに対応するフラグAが0であるか否かを判定する。フラグAが0であるならば、ステップST3でフラグAを1に変更し、ステップST6に進む。フラグAが0でなければ、そのままステップST6に進む。またステップST1でメモリ割付領域13が確保されていないと判定された場合には、ステップST4で、メモリ割付領域13を割り付けて、割り付けたメモリ割付領域13内の全てのフラグAを0に初期化する。その後ステップST5で、書き込み対象のメモリ要素13aに対応するフラグAを1に変更する。ステップST6で、指定アドレスのメモリ要素13aに書き込みデータを書き込む。
【0031】
命令レベルシミュレータでのプログラム実行時に、指定アドレスのメモリ要素13aに対して読み出しを行うメモリ読み出し動作を実行すると、まず図8のステップST1で、読み出し対象のメモリ要素13aを含むメモリ割付領域13が既に割り当てられ確保されているかを判定する。確保されている場合には、ステップST2で、読み出し対象のメモリ要素13aに対応するフラグAが0であるか否かを判定する。フラグAが0であるならば、ステップST3で未初期化領域に対する読み出し動作を検出し、ステップST6に進む。フラグAが0でなければ、そのままステップST6に進む。またステップST1でメモリ割付領域13が確保されていないと判定された場合には、ステップST4で、メモリ割付領域13を割り付けて、割り付けたメモリ割付領域13内の全てのフラグAを0に初期化する。その後ステップST5で、未初期化領域に対する読み出し動作を検出する。ステップST6で、指定アドレスのメモリ要素13aからデータを読み出す。
【0032】
このように、本発明のメモリ書き込み動作及びメモリ読み出し動作の第2実施例においては、複数のメモリ要素を一纏まりのメモリ割付領域として複数のメモリ割付領域を離散的に割り当てて管理する場合に、メモリ要素の内容が既に書き込み済みか否かを示すフラグを各メモリ要素に対して設けることで、未初期化領域からの読み出し動作を検出することが可能になる。
【0033】
図11は、本発明によるメモリ書き込み動作の第3実施例を示すフローチャートである。図12は、本発明によるメモリ読み出し動作の第3実施例を示すフローチャートである。
【0034】
図13は、第3実施例に対応するデータ構造を示す図である。図13に示されるデータ構造は、フラグ領域13cが各メモリ割付領域13に対して設けられていることを除いて、図9に示される離散メモリ領域を管理する場合のデータ構造と同一である。以降、フラグ領域13cのフラグをフラグBと呼ぶ。
【0035】
命令レベルシミュレータでのプログラム実行時に、指定アドレスのメモリ要素13aに対して書き込みを行うメモリ書き込み動作を実行すると、まず図11のステップST1で、書き込み対象のメモリ要素13aを含むメモリ割付領域13が既に割り当てられ確保されているかを判定する。確保されている場合には、ステップST2で、書き込み対象のメモリ要素13aに対応するフラグAが0であるか否かを判定する。フラグAが0であるならば、ステップST3でフラグAを1に変更し、ステップST6に進む。フラグAが0でなければ、ステップST9に進む。またステップST1でメモリ割付領域13が確保されていないと判定された場合には、ステップST4で、メモリ割付領域13を割り付けて、割り付けたメモリ割付領域13内の全てのフラグAを0に初期化する。その後ステップST5で、書き込み対象のメモリ要素13aに対応するフラグAを1に変更し、ステップST6に進む。
【0036】
ステップST6で、書き込み対象のメモリ要素13aを含むメモリ割付領域13のフラグBが0であるか否かを判定する。フラグBが0であるならば、ステップST7に進む。フラグBが0でなければ、ステップST9に進む。
【0037】
ステップST7で、書き込み対象のメモリ要素13aを含むメモリ割付領域13の全てのフラグAが1であるか否かを判定する。全てのフラグAが1であるならば、ステップST8で対応するフラグBを1に変更して、その後ステップST9に進む。少なくとも1つのフラグAが1でなければ、そのままステップST9に進む。
【0038】
ステップST9で、指定アドレスのメモリ要素13aに書き込みデータを書き込む。
【0039】
命令レベルシミュレータでのプログラム実行時に、指定アドレスのメモリ要素13aに対して読み出しを行うメモリ読み出し動作を実行すると、まず図12のステップST1で、読み出し対象のメモリ要素13aを含むメモリ割付領域13が既に割り当てられ確保されているかを判定する。確保されている場合には、ステップST2で、当該メモリ割付領域13のフラグBが0であるか否かを判定する。フラグBが0であるならば、ステップST3に進む。フラグBが0でなければ、ステップST7に進む。
【0040】
ステップST3で、読み出し対象のメモリ要素13aに対応するフラグAが0であるか否かを判定する。フラグAが0であるならば、ステップST4で未初期化領域に対する読み出し動作を検出し、ステップST7に進む。フラグAが0でなければ、そのままステップST7に進む。
【0041】
またステップST1でメモリ割付領域13が確保されていないと判定された場合には、ステップST5で、メモリ割付領域13を割り付けて、割り付けたメモリ割付領域13内の全てのフラグAを0に初期化すると共に、対応するフラグBを0に初期化する。その後ステップST6で、未初期化領域に対する読み出し動作を検出する。
【0042】
ステップST7で、指定アドレスのメモリ要素13aからデータを読み出す。以上で処理を終了する。
【0043】
このように、本発明のメモリ書き込み動作及びメモリ読み出し動作の第3実施例においては、複数のメモリ要素を一纏まりのメモリ割付領域として複数のメモリ割付領域を離散的に割り当てて管理する場合に、メモリ要素の内容が既に書き込み済みか否かを示すフラグを各メモリ要素に対して設けると共に、メモリ割付領域毎に全てのメモリ要素が既に書き込み済みか否かを示すフラグを設ける。これにより、メモリ割付領域内の全てのメモリ要素が既に書き込み済みである場合には、各メモリ要素のフラグを逐一チェックすることなく、未初期化領域からの読み出し動作を検出することが可能になる。
【0044】
図14は、本発明によるメモリ書き込み動作の第4実施例を示すフローチャートである。図15は、本発明によるメモリ読み出し動作の第4実施例を示すフローチャートである。
【0045】
図16は、第4実施例に対応するデータ構造を示す図である。図16に示されるデータ構造は、カウント領域13dが各メモリ割付領域13に対して設けられていることを除いて、図13に示される離散メモリ領域を管理する場合のデータ構造と同一である。カウント領域13dは、未初期化領域であるメモリ要素13aに書き込み動作を実行する度に1ずつカウントアップするカウント数Cを格納する。
【0046】
図14に示されるメモリ書き込み動作の第4実施例のフローチャートは、図11に示されるメモリ書き込み動作の第3実施例のフローチャートに対して、ステップST7がステップST7AとST7Bとに変更されていることが異なる。
【0047】
ステップST6でフラグBが0であると判定されると、ステップST7Aで、カウント数Cを1だけインクリメントする。その後ステップST7Bで、カウント数Cがメモリ割付領域13のメモリ要素数に等しいか否かを判定する。両者が等しければ、全てのフラグAが1であることになるので、ステップST8で対応するフラグBを1に変更する。両者が等しくなければ、少なくとも1つのフラグAが1でないことになるので、そのままステップST9に進む。
【0048】
図15に示されるメモリ読み出し動作の第4実施例のフローチャートは、図12に示されるメモリ読み出し動作の第3実施例のフローチャートと同一であるので説明を省略する。
【0049】
このように、本発明のメモリ書き込み動作及びメモリ読み出し動作の第4実施例においては、複数のメモリ要素を一纏まりのメモリ割付領域として複数のメモリ割付領域を離散的に割り当てて管理する場合に、メモリ要素の内容が既に書き込み済みか否かを示すフラグを各メモリ要素に対して設けると共に、メモリ割付領域毎に全てのメモリ要素が既に書き込み済みか否かを示すフラグと、既に書き込み済みのメモリ要素の数を示すカウンタとを設ける。これにより、各メモリ要素のフラグを逐一チェックすることなく、カウンタをチェックするだけで、メモリ割付領域内の全てのメモリ要素が既に書き込み済みになったか否かを容易に判定することが出来る。従って、未初期化領域からの読み出し動作を効率的に検出することが可能になる。
【0050】
図17は、本発明による計算機シミュレータを用いた検証作業のフローチャートである。
【0051】
ステップST1で、論理検証プログラムを作成する。ステップST2で、論理検証プログラムを命令レベルシミュレータで実行する。即ち、図1に示される命令レベルシミュレータを実行することにより、ステップST1で作成された論理検証プログラムをシミュレータ上で実行する。この際、データ書き込み及びデータ読み出し動作に関しては、前述の第1乃至第4実施例の何れかの実施例を用いる。
【0052】
ステップST3で、論理検証プログラムが正常に終了し、且つ、未初期化領域のアクセスが検出されなかったか否かを判定する。前述の第1乃至第4実施例において、未初期化領域からの読み出し動作が検出されると、「未初期化領域からの読み出し動作」を実行した旨を、読み出しアドレス等の情報と共に例えばエラーログに記録する。このエラーログを確認することにより、「未初期化領域からの読み出し動作」があったか否かを確認することが出来る。またこの「未初期化領域からの読み出し動作」が発生した旨の情報は、発生ごとに計算機シミュレータのディスプレイに逐次表示してよい。
【0053】
ステップST3の判定がNOの場合、論理検証プログラムに問題があるので、ステップST4で論理検証プログラムを修正し、ステップST2以降の処理を繰り返す。ステップST3の判定がYESの場合、論理検証プログラムに問題がないので、ステップST5で論理検証プログラムを用いた検証作業を実行する。
【0054】
以上で処理を終了する。
【0055】
このように本発明においては、計算機シミュレータで論理検証プログラムを実行時に、「未初期化領域からの読み出し動作」が発生した旨を検出することが可能であるので、論理検証プログラムを適宜修正して、適切な論理検証作業を実行することが出来る。
【0056】
図18は、本発明による計算機シミュレーションを実行する装置の構成を示す図である。
【0057】
図18に示されるように、本発明による計算機シミュレーションを実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図18の装置は、コンピュータ510と、コンピュータ510に接続されるディスプレイ装置520、通信装置523、及び入力装置よりなる。入力装置は、例えばキーボード521及びマウス522を含む。コンピュータ510は、CPU511、RAM512、ROM513、ハードディスク等の二次記憶装置514、可換媒体記憶装置515、及びインターフェース516を含む。
【0058】
キーボード521及びマウス522は、ユーザとのインターフェースを提供するものであり、コンピュータ510を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置520は、コンピュータ510で処理された結果等を表示すると共に、コンピュータ510を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置523は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
【0059】
本発明による計算機シミュレーション方法は、コンピュータ510が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置515に装着可能な記憶媒体Mに記憶されており、記憶媒体Mから可換媒体記憶装置515を介して、RAM512或いは二次記憶装置514にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体(図示せず)に記憶されており、この記憶媒体から通信装置523及びインターフェース516を介して、RAM512或いは二次記憶装置514にロードされる。
【0060】
キーボード521及び/又はマウス522を介してユーザからプログラム実行指示があると、CPU511は、記憶媒体M、遠隔地記憶媒体、或いは二次記憶装置514からプログラムをRAM512にロードする。CPU511は、RAM512の空き記憶空間をワークエリアとして使用して、RAM512にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおROM513は、コンピュータ510の基本動作を制御するための制御プログラムが格納されている。
【0061】
上記コンピュータプログラムを実行することで、上記各実施例で説明されたように、命令レベルの計算機シミュレーション方法を実行する。またこの計算機シミュレーション環境が、計算機シミュレータである。
【0062】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【発明の効果】
本発明による計算機シミュレーションプログラムにおいては、メモリ要素の内容が既に書き込み済みか否かを示すフラグを各メモリ要素に対して設ける。従って、メモリ読み出し動作を実行時にこのフラグをチェックすることで、未初期化領域からの読み出し動作が発生した場合には、これを検出することが可能になる。
【0063】
また本発明によるプロセッサのモデルの検証方法においては、メモリ要素の内容が既に書き込み済みか否かを示すフラグを各メモリ要素に対して設け、計算機シミュレータで論理検証プログラムを実行時にこのフラグをチェックすることで、「未初期化領域からの読み出し動作」が発生した旨を検出することが可能である。これにより、論理検証プログラムを適宜修正して、適切な論理検証作業を実行することが出来る。
【図面の簡単な説明】
【図1】本発明による命令レベルの計算機シミュレータのフローチャートである。
【図2】命令フェッチのフローチャートである。
【図3】命令実行のフローチャートである。
【図4】本発明によるメモリ書き込み動作の第1実施例を示すフローチャートである。
【図5】本発明によるメモリ読み出し動作の第1実施例を示すフローチャートである。
【図6】第1実施例に対応するデータ構造を示す図である。
【図7】本発明によるメモリ書き込み動作の第2実施例を示すフローチャートである。
【図8】本発明によるメモリ読み出し動作の第2実施例を示すフローチャートである。
【図9】第2実施例に対応するデータ構造を示す図である。
【図10】図9の離散メモリ領域を管理するデータ構造を示す図である。
【図11】本発明によるメモリ書き込み動作の第3実施例を示すフローチャートである。
【図12】本発明によるメモリ読み出し動作の第3実施例を示すフローチャートである。
【図13】第3実施例に対応するデータ構造を示す図である。
【図14】本発明によるメモリ書き込み動作の第4実施例を示すフローチャートである。
【図15】本発明によるメモリ読み出し動作の第4実施例を示すフローチャートである。
【図16】第4実施例に対応するデータ構造を示す図である。
【図17】本発明による計算機シミュレータを用いた検証作業のフローチャートである。
【図18】本発明による計算機シミュレーションを実行する装置の構成を示す図である。
【符号の説明】
510 コンピュータ
511 CPU
512 RAM
513 ROM
514 二次記憶装置
515 可換媒体記憶装置
516 インターフェース
520 ディスプレイ装置
521 キーボード
522 マウス
523 通信装置
Claims (7)
- 計算機シミュレーション上でプロセッサのモデルによりプログラムを実行する際に、該プロセッサのモデルがアクセスするメモリ領域のメモリ要素の各々に対して、該メモリ要素への書き込みが既に行われたか否かを示すフラグを割り当て、複数の該メモリ要素を含む単一の連続する割付空間を複数個離散的に割り当てることにより該メモリ領域を管理し、該単一の連続する割付空間の各々に対して、対応する該メモリ要素の全てに対して書き込みが既に行われたか否かを示すフラグを割り当て、該単一の連続する割付空間の各々に対して、対応する該メモリ要素のうちで書き込みが既に行われたメモリ要素の数を示すカウント数を割り当てることを特徴とする計算機シミュレーションプログラム。
- 該メモリ領域を単一の連続する割付空間として管理し、該単一の連続する割付空間は複数の該メモリ要素を含むことを特徴とする請求項1記載の計算機シミュレーションプログラム。
- 指定アドレスのメモリ要素に対して読み出し動作を実行する際に、該指定アドレスのメモリ要素に対応する該フラグが未書き込みを示す場合に、未初期化領域からの読み出し動作が発生した旨を検出することを特徴とする請求項1記載の計算機シミュレーションプログラム。
- 該プログラムの命令をフェッチするフェッチ段階と、該命令をデコードするデコード段階と、該デコードされた命令を実行する命令実行段階を含み、該読み出し動作は該フェッチ段階と該命令実行段階で実行されることを特徴とする請求項3記載の計算機シミュレーションプログラム。
- 未初期化領域からの読み出し動作が発生した旨をエラーログとして記録することを特徴とする請求項3記載の計算機シミュレーションプログラム。
- 論理検証プログラムを作成し、
計算機シミュレーション上でプロセッサのモデルがアクセスするメモリ領域のメモリ要素の各々に対して該メモリ要素への書き込みが既に行われたか否かを示すフラグを割り当て、複数の該メモリ要素を含む単一の連続する割付空間を複数個離散的に割り当てることにより該メモリ領域を管理し、該単一の連続する割付空間の各々に対して、対応する該メモリ要素の全てに対して書き込みが既に行われたか否かを示すフラグを割り当て、該単一の連続する割付空間の各々に対して、対応する該メモリ要素のうちで書き込みが既に行われたメモリ要素の数を示すカウント数を割り当てる命令レベルシミュレータで該論理検証プログラムを実行し、
該フラグをチェックすることで未初期化領域からの読み出し動作が実行されたか否かを判定し、
未初期化領域からの読み出し動作が検出された場合には該論理検証プログラムを修正する
各段階を含む命令レベルシミュレータによるプロセッサのモデルの検証方法。 - 計算機シミュレーション上でプロセッサのモデルによりプログラムを実行する際に、該プロセッサのモデルがアクセスするメモリ領域のメモリ要素の各々に対して、該メモリ要素への書き込みが既に行われたか否かを示すフラグを割り当て、
複数の該メモリ要素を含む単一の連続する割付空間を複数個離散的に割り当てることにより該メモリ領域を管理し、
該単一の連続する割付空間の各々に対して、対応する該メモリ要素の全てに対して書き込みが既に行われたか否かを示すフラグを割り当て、
該単一の連続する割付空間の各々に対して、対応する該メモリ要素のうちで書き込みが既に行われたメモリ要素の数を示すカウント数を割り当てる
各段階を含むことを特徴とする計算機シミュレーション方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002025447A JP3848171B2 (ja) | 2002-02-01 | 2002-02-01 | 計算機シミュレーションプログラム、プロセッサのモデルの検証方法、及び計算機シミュレーション方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002025447A JP3848171B2 (ja) | 2002-02-01 | 2002-02-01 | 計算機シミュレーションプログラム、プロセッサのモデルの検証方法、及び計算機シミュレーション方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003228492A JP2003228492A (ja) | 2003-08-15 |
JP3848171B2 true JP3848171B2 (ja) | 2006-11-22 |
Family
ID=27747601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002025447A Expired - Fee Related JP3848171B2 (ja) | 2002-02-01 | 2002-02-01 | 計算機シミュレーションプログラム、プロセッサのモデルの検証方法、及び計算機シミュレーション方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3848171B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5293165B2 (ja) * | 2008-12-25 | 2013-09-18 | 富士通セミコンダクター株式会社 | シミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法 |
EP2482191B1 (en) * | 2011-01-31 | 2017-03-22 | Fujitsu Limited | Memory correctness checking in distributed computer systems |
JP6246022B2 (ja) * | 2014-02-28 | 2017-12-13 | 三菱電機株式会社 | ソフトウェア試験装置及びソフトウェア試験プログラム |
-
2002
- 2002-02-01 JP JP2002025447A patent/JP3848171B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003228492A (ja) | 2003-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10146938B2 (en) | Method, apparatus and virtual machine for detecting malicious program | |
US6633968B2 (en) | Pre-fetching of pages prior to a hard page fault sequence | |
US7024549B1 (en) | Disk drive having a protected partition configured to load an operating system for performing a user-selected function | |
US6711660B1 (en) | System and method for performing disk drive diagnostics and restoration using a host-inaccessible hidden partition | |
TWI442235B (zh) | 記憶體交易群組 | |
US7949848B2 (en) | Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program | |
US7743228B2 (en) | Information processing apparatus and method for obtaining software processing log | |
US20030233534A1 (en) | Enhanced computer start-up methods | |
US20080072224A1 (en) | Enhanced store facility list system and operation | |
JP2008546086A (ja) | 共有リソースのためのアクセス協調を伴うプログラムコードを変換する方法および装置 | |
US9710355B2 (en) | Selective loading of code elements for code analysis | |
JP2000347872A (ja) | 例外を正規制御フローとして処理する方法及び装置 | |
US20170364679A1 (en) | Instrumented versions of executable files | |
JP2015530662A5 (ja) | ||
JP5778296B2 (ja) | 仮想計算機システム、仮想化機構、及びデータ管理方法 | |
US6907597B1 (en) | Method and apparatus for constructing an executable program in memory | |
US6317818B1 (en) | Pre-fetching of pages prior to a hard page fault sequence | |
US20050044292A1 (en) | Method and apparatus to retain system control when a buffer overflow attack occurs | |
KR20170125698A (ko) | 일반화된 기록 동작 검증 방법 | |
JP3848171B2 (ja) | 計算機シミュレーションプログラム、プロセッサのモデルの検証方法、及び計算機シミュレーション方法 | |
US7143399B2 (en) | Method and apparatus for prefetching memory pages during execution of a computer program | |
JP2007094986A (ja) | シミュレーション装置およびシミュレーション方法 | |
JP2020523693A (ja) | Jitコンパイラを使用しかつ選択されたターゲットコードブロックの変換をバイパスするターゲットシステムのエミュレーション | |
CN101107591B (zh) | 计算机系统和用于启动其中的基本程序的方法 | |
US20170132025A1 (en) | Target process injection prior to execution of marker libraries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040903 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060118 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060124 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060327 |
|
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: 20060822 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060824 |
|
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: 20090901 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100901 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100901 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110901 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120901 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120901 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130901 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |