JP2000276376A - パイプライン型プロセッサのソフトウエアシミュレータ - Google Patents

パイプライン型プロセッサのソフトウエアシミュレータ

Info

Publication number
JP2000276376A
JP2000276376A JP11080295A JP8029599A JP2000276376A JP 2000276376 A JP2000276376 A JP 2000276376A JP 11080295 A JP11080295 A JP 11080295A JP 8029599 A JP8029599 A JP 8029599A JP 2000276376 A JP2000276376 A JP 2000276376A
Authority
JP
Japan
Prior art keywords
hazard
instruction
pipeline
program
instructions
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
JP11080295A
Other languages
English (en)
Inventor
Nobuyuki Tanaka
信行 田中
Noriyuki Tomita
典幸 富田
Hidenori Ohashi
秀紀 大橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP11080295A priority Critical patent/JP2000276376A/ja
Publication of JP2000276376A publication Critical patent/JP2000276376A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 この発明は、デバック対象のプログラム中の
パイプラインハザードを検出し、可能である場合には、
検出されたパイプラインハザードを回避するようにプロ
グラムを修正することができるパイプライン型プロセッ
サのソフトウエアシミュレータを提供することを目的と
する。 【解決手段】 デバック対象プログラムの命令に基づい
て、パイプラインハザードが発生しているか否かを判定
するハザード検出手段、およびパイプラインハザードが
発生している場合には、パイプラインハザードを回避す
るように命令を修正する修正手段を備えている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、パイプライン型
プロセッサに対するプログラムをデバックするために使
用するパイプライン型プロセッサのソフトウエアシミュ
レータに関する。
【0002】
【従来の技術】パイプライン処理は、複数の命令をオー
バーラップさせて、同時実行させる技術である。4段パ
イプラインについて説明する。4段パイプラインでは、
プログラムメモリから命令が読み取られて、実行される
までの処理が、次のような4つの工程に分けられてい
る。
【0003】FETCH工程:プログラムメモリから
命令を取得する工程 DECODE工程:取得した命令を解読する工程 第1のEXECUTE(EXECUTE1)工程:命
令を実行する工程 第2のEXECUTE(EXECUTE2)工程:命
令を実行する工程
【0004】図2は、これらの工程の時間的な流れを示
している。図2において、数字”100”、”101”
および”102”は、命令番号(プログラムメモリの番
地)を示している。
【0005】図2から、この4段パイプライン処理で
は、1工程単位の1サイクル期間に、第1のEXECU
TE工程と、第2のEXECUTE工程が同時に行われ
ることがあることがわかる。このため、1サイクル期間
に実行される第1のEXECUTE工程と、第2のEX
ECUTE工程の内容によっては、誤動作(パイプライ
ンハザード)が発生する可能性がある。
【0006】パイプラインハザードには、たとえば、次
のような種類がある。
【0007】(1)構造ハザード 構造ハザードとは、同時実行する複数の命令が同じハー
ドウエアリソースに同時にアクセスする資源競合によっ
て生じるハザードをいう。
【0008】(2)データハザード データハザードとは、ある命令の実行が先行する命令の
実行結果に依存している場合に生じるハザードをいう。
【0009】構造ハザードの具体例について説明する。
図2のような4段パイプラインにおいて、第1のEXE
CUTE工程においてデータメモリからデータリードが
可能であり、第2のEXECUTE工程において加算等
の演算処理が可能であるとする。
【0010】100番地の命令が、AX=R0+R1
(レジスタR0とR1からデータをリードし、それらの
加算結果を、レジスタAXにライトする)という演算命
令であり、101番地の命令が、AX=〔0x200〕
(データメモリのアドレス”0x200”のデータをリ
ードしてレジスタAXにライトする)というデータメモ
リからのリード命令であるとする。
【0011】100番地の命令は演算命令であるため、
第2のEXECUTE工程で実行され、101番地の命
令はデータメモリからのリード命令であるので、第1の
EXECUTE工程で実行される。したがって、これら
の命令は、同じサイクルで同時に実行されることなる。
したがって、この場合には、同じレジスタAXに同時に
アクセスすることになるので、構造ハザードが発生す
る。
【0012】ところで、従来は、ハザードの検出および
その回避は、ハード自体によってあるいはソフトウエア
によって行われている。ハザードの検出およびその回避
をソフトウエアで行う場合には、アセンブラまたはアセ
ンブラオプティマイザでハザード検出およびその修正が
行われている。
【0013】アセンブラとは、プログラマがアセンブリ
言語で記述したプログラムを個々のプロセッサのマシン
語に変換するソフトウエアである。アセンブラとして、
ハザード検出およびその修正機能を備えたものもある。
【0014】アセンブラオプティマイザとは、プログラ
マがアセンブリ言語で記述したプログラムを無駄なくし
かもハザードを回避した最適なプログラムに修正し、続
いてマシン語に変換するソフトウエアである。
【0015】アセンブラまたはアセンブラオプティマイ
ザでは、実行される前のプログラムから、データハザー
ド、構造ハザードが起こっているかどうかが検出され、
修正できるならば修正が行われる。これは、静的なハザ
ードの検出および修正ということができる。
【0016】しかしながら、実際のマシン語に変換され
たプログラムをシミュレータで実行している最中にハザ
ードを検出し、可能であれば修正するといった機能、つ
まり、動的なハザードの検出および修正機能を備えたシ
ミュレータは未だ開発されていない。
【0017】
【発明が解決しようとする課題】この発明は、アセンブ
ラまたはアセンブラオプティマイザで検出できないよう
な、つまり、マシン語のプログラムを実行するときにな
ってはじめて判明するようなパイプラインハザードの検
出および修正が可能となるパイプライン型プロセッサの
ソフトウエアシミュレータを提供することを目的とす
る。
【0018】
【課題を解決するための手段】この発明によるパイプラ
イン型プロセッサのソフトウエアシミュレータは、デバ
ック対象プログラムの命令に基づいて、パイプラインハ
ザードが発生しているか否かを判定するハザード検出手
段、およびパイプラインハザードが発生している場合に
は、パイプラインハザードを回避するように命令を修正
する修正手段を備えていることを特徴とする。
【0019】ハザード検出手段としては、たとえば、パ
イプラインハザードが発生すると考えられる全てのリソ
ースについて、各工程でのアクセス状況を調べ、リソー
スのアクセスのされ方によってパイプラインハザードが
発生しているかどうかを判断するものが用いられる。
【0020】修正手段としては、たとえば、パイプライ
ンハザードの発生原因となっている2つの命令間に何も
しない命令を挿入することにより、命令を修正するもの
が用いられる。修正手段としては、たとえば、パイプラ
インハザードの発生原因となっている命令群のうちの少
なくとも1つの命令を、当該パイプラインハザードの発
生原因となっている命令群の直後の命令とを入れ換える
ことにより、命令を修正するものが用いられる。
【0021】また、修正手段としては、たとえば、パイ
プラインハザードの発生原因となっている命令群のうち
の少なくとも1つの命令を、当該パイプラインハザード
の発生原因となっている命令群の直後の命令とを入れ換
える第1修正手段、および第1修正手段によってパイプ
ラインハザードが回避されない場合には、第1修正手段
による修正をキャンセルした後、パイプラインハザード
の発生原因となっている2つの命令間に何もしない命令
を挿入することにより、命令を修正する第2修正手段を
備えているものが用いられる。
【0022】
【発明の実施の形態】
【0023】以下、図1を参照して、この発明の実施の
形態について説明する。
【0024】〔1〕パイプライン型プロセッサのソフト
ウエアシミュレータの構成の説明 図1は、パイプライン型プロセッサのソフトウエアシミ
ュレータの構成を示している。
【0025】ソフトウエアシミュレータは、プロセッサ
と同じ動作を行うプログラムからなるシミュレータエン
ジン部1と、プロセッサが内蔵するレジスタ群をソフト
的に実現したレジスタ群モデル2と、プロセッサが内蔵
するデータメモリをソフト的に実現したデータメモリモ
デル3と、プロセッサが内蔵するプログラムメモリをソ
フト的に実現したプログラムメモリモデル4と、プログ
ラムメモリモデル4から出力される命令に基づいてパイ
プラインハザードを検出するハザード検出部5と、ハザ
ード検出部5によってパイプラインハザードが検出され
たときにそのハザードを回避するようにプログラムを修
正するプログラム修正部6とを備えている。プログラム
メモリモデル4には、デバック対象のプログラムが格納
されている。
【0026】シミュレータエンジン部1に、実行開始命
令(実行すべきプログラムの範囲を指定することも可
能)が入力されると、プログラムメモリから命令が順次
読み出されてハザード検出部5に送られる。ハザード検
出部5は、パイプラインハザードが発生しているか否か
を判断し、パイプラインハザードが発生していない場合
には、正常であることを示す情報とともに、その命令
(ハザードに関係しない命令)をプログラム修正部6に
送る。この場合には、プログラム修正部6は、送られて
きた命令をそのままシミュレータエンジン部1に送る。
【0027】ハザード検出部5がパイプラインハザード
を検出した場合には、ハザードに関する情報とともに、
そのハザードに関係する命令群をプログラム修正部6に
送る。プログラム修正部6は、可能であれば、当該ハザ
ードが回避されるように、プログラムの修正した後、修
正後の命令を、シミュレータエンジン部1に送る。な
お、修正が不可能である場合には、プログラム修正部6
は、シミュレーションを中止させるとともに、警告表示
を行う。
【0028】シミュレータエンジン部1は、プログラム
修正部6から送られてきた命令を実行する。つまり、レ
ジスタ群モデル2の各レジスタモデルのリソース値およ
びデータメモリモデル3のリソース値を実行した命令に
応じて変更させる。
【0029】〔2〕ハザード検出部5によるハザード検
出方法の説明 ここでは、パイプライン型プロセッサが、図2に示すよ
うな4段パイプライン処理を行うようなプロセッサであ
るものとする。
【0030】ハザード検出部5は、各サイクル毎に、ハ
ザードが発生すると考えられる全てのリソース(データ
メモリ、レジスタ)について、各工程でのアクセス状況
を調べ、リソースのアクセスのされ方(ライト、リー
ド)によってパイプラインハザードが発生しているかど
うかを判断する。
【0031】つまり、図2のようなパイプライン処理を
実行するパイプライン型プロセッサに対するデバック対
象のプログラム中に次のような命令が含まれているとす
る。なお、AX、BX、R0、R1は、レジスタであるとする。
【0032】100 番地命令 AX=R0+R1(第2EXEC
UTEで実行) 101 番地命令 AX=[0x200] (第1EXECUTEで実
行) 102 番地命令 BX=R0+R1(第2EXECUTEで実
行) 103 番地命令 AX=R0+R1(第2EXECUTEで実
行)
【0033】図2のTiサイクルにおいては、各リソー
スについての各工程でのアクセス状況は次の通りとな
る。
【0034】100番地の命令は、Tiサイクルにおい
ては、第2のEXECUTE工程にあるため、このサイ
クルにおいて実行される。したがって、100番地の命
令により、リソースR0、R1に対するアクセスはリー
ドとなり、リソースAXに対するアクセスはライトとな
る。101番地の命令は、Tiサイクルにおいては、第
1のEXECUTE工程にあるため、このサイクルにお
いて実行される。したがって、101番地の命令によ
り、リソース(データメモリ)に対するアクセスはリー
ドとなり、リソースAXに対するアクセスはライトとな
る。102番地の命令は、TiサイクルにおいてはDE
CODE工程にあるため、リソースに対するアクセスは
ない。103番地の命令は、TiサイクルにおいてはF
ETCH工程にあるため、リソースに対するアクセスは
ない。この結果、このTiサイクルにおいて、同じリソ
ースAXへの2つの同時アクセスが存在することが判明
するので、パイプラインハザードが発生していることが
検出される。
【0035】〔3〕プログラム修正部6によるプログラ
ム修正方法の説明
【0036】ここでは、パイプライン型プロセッサが、
図2に示すような4段パイプライン処理を行うようなプ
ロセッサであるものとする。
【0037】デバック対象のプログラム中に次のような
命令が存在する場合を想定する。なお、AX、BX、R0、R1
は、レジスタであるとする。
【0038】100 番地命令 AX=R0+R1(第2EXEC
UTEで実行) 101 番地命令 AX=[0x200] (第1EXECUTEで実
行) 102 番地命令 BX=R0+R1(第2EXECUTEで実
行) 103 番地命令 AX=R0+R1(第2EXECUTEで実
行)
【0039】上記〔2〕で説明したように、100 番地の
命令と101 番地の命令との間において、パイプラインハ
ザードが発生している。このような場合、プログラム修
正部6は、ハザードが発生している2つの命令との間に
何もしない命令(NOP命令) を挿入することにより、ハザ
ードを回避させる。つまり、上記命令は、次のように修
正される。
【0040】100 番地命令 AX=R0+R1(第2EXEC
UTEで実行) 101 番地命令 NOP 102 番地命令 AX=[0x200] (第1EXECUTEで実
行) 103 番地命令 BX=R0+R1(第2EXECUTEで実
行) 104 番地命令 AX=R0+R1(第2EXECUTEで実
行)
【0041】これにより、100 番地の命令と、102 番地
( 元の101 番地の命令) とは、同時に実行されなくなる
ので、ハザードが回避される。
【0042】なお、ハザードが発生している2つの命令
のうち、後の命令とその次にくる命令とを入れ替えるよ
うにしてもよい。つまり、次のように、101 番地の命令
と102 番地の命令を入れ替える。
【0043】100 番地命令 AX=R0+R1(第2EXEC
UTEで実行) 101 番地命令 BX=R0+R1(第2EXECUTEで実
行) 102 番地命令 AX=[0x200] (第1EXECUTEで実
行) 103 番地命令 AX=R0+R1(第2EXECUTEで実
行)
【0044】ハザードが発生している2つの命令との間
に何もしない命令(NOP命令) を挿入する方法( 以下、第
1修正方法という) は、確実にハザードを回避すること
ができるが、処理時間が長くなるという決定がある。一
方、ハザードが発生している2つの命令のうち、後の命
令とその次にくる命令とを入れ替える方法( 以下、第2
修正方法という) は、処理時間が長くなることはない
が、これにより、入替え後においてもハザードが生じる
場合がある。そこで、まず、第2修正方法による修正を
試みて、ハザードが回避できなかった場合にのみ第1修
正方法によって修正を行うことが好ましい。
【0045】
【発明の効果】この発明によれば、アセンブラまたはア
センブラオプティマイザで検出できないような、つま
り、マシン語のプログラムを実行するときになってはじ
めて判明するようなパイプラインハザードの検出および
修正が可能となる。
【図面の簡単な説明】
【図1】パイプライン型プロセッサのソフトウエアシミ
ュレータの構成を示すブロック図である。
【図2】4段パイプライン処理の時間的な流れを示す模
式図である。
【符号の説明】
1 シミュレータエンジン部 2 レジスタ群モデル 3 データメモリモデル 4 プログラムメモリモデル 5 ハザード検出部 6 プログラム修正部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 大橋 秀紀 大阪府守口市京阪本通2丁目5番5号 三 洋電機株式会社内 Fターム(参考) 5B013 CC01 EE09 5B042 GA14 HH07 HH39

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 デバック対象プログラムの命令に基づい
    て、パイプラインハザードが発生しているか否かを判定
    するハザード検出手段、およびパイプラインハザードが
    発生している場合には、パイプラインハザードを回避す
    るように命令を修正する修正手段、 を備えているパイプライン型プロセッサのソフトウエア
    シミュレータ。
  2. 【請求項2】 ハザード検出手段は、パイプラインハザ
    ードが発生すると考えられる全てのリソースについて、
    各工程でのアクセス状況を調べ、リソースのアクセスの
    され方によってパイプラインハザードが発生しているか
    どうかを判断する請求項1に記載のパイプライン型プロ
    セッサのソフトウエアシミュレータ。
  3. 【請求項3】 修正手段は、パイプラインハザードの発
    生原因となっている2つの命令間に何もしない命令を挿
    入することにより、命令を修正する請求項1および2の
    いずれかに記載のパイプライン型プロセッサのソフトウ
    エアシミュレータ。
  4. 【請求項4】 修正手段は、パイプラインハザードの発
    生原因となっている命令群のうちの少なくとも1つの命
    令を、当該パイプラインハザードの発生原因となってい
    る命令群の直後の命令とを入れ換えることにより、命令
    を修正する請求項1および2のいずれかに記載のパイプ
    ライン型プロセッサのソフトウエアシミュレータ。
  5. 【請求項5】 修正手段は、パイプラインハザードの発
    生原因となっている命令群のうちの少なくとも1つの命
    令を、当該パイプラインハザードの発生原因となってい
    る命令群の直後の命令とを入れ換える第1修正手段、お
    よび第1修正手段によってパイプラインハザードが回避
    されない場合には、第1修正手段による修正をキャンセ
    ルした後、パイプラインハザードの発生原因となってい
    る2つの命令間に何もしない命令を挿入することによ
    り、命令を修正する第2修正手段を備えている請求項1
    および2のいずれかに記載のパイプライン型プロセッサ
    のソフトウエアシミュレータ。
JP11080295A 1999-03-24 1999-03-24 パイプライン型プロセッサのソフトウエアシミュレータ Pending JP2000276376A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11080295A JP2000276376A (ja) 1999-03-24 1999-03-24 パイプライン型プロセッサのソフトウエアシミュレータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11080295A JP2000276376A (ja) 1999-03-24 1999-03-24 パイプライン型プロセッサのソフトウエアシミュレータ

Publications (1)

Publication Number Publication Date
JP2000276376A true JP2000276376A (ja) 2000-10-06

Family

ID=13714292

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11080295A Pending JP2000276376A (ja) 1999-03-24 1999-03-24 パイプライン型プロセッサのソフトウエアシミュレータ

Country Status (1)

Country Link
JP (1) JP2000276376A (ja)

Similar Documents

Publication Publication Date Title
KR900002604B1 (ko) 제어기억장치를 갖는 정보처리장치내의 에러회복 장치 및 방법.
JP2005317023A (ja) データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法
US7376820B2 (en) Information processing unit, and exception processing method for specific application-purpose operation instruction
JPH0748182B2 (ja) プログラム・エラー検出方法
US20050050524A1 (en) Generating software test information
JP2000276376A (ja) パイプライン型プロセッサのソフトウエアシミュレータ
US20080133838A1 (en) Data processing device
JP3892873B2 (ja) プログラマブルコントローラ
US20100077383A1 (en) Simulation method and storage medium for storing program
JPH07253909A (ja) マイクロプログラム検証方法
AU1490888A (en) Apparatus and method for synchronization of arithmetic exceptions in parallel pipelined execution units
JPH07225681A (ja) 割込制御装置
US11301252B2 (en) Executing mutually exclusive vector instructions according to a vector predicate instruction
JP2616542B2 (ja) 疑似障害発生システム
JP5425445B2 (ja) 処理制御システム、方法及びプログラム
JP3114909B2 (ja) プログラマブルコントローラの演算エラー処理方法
JP2007304926A (ja) 情報処理方法および命令生成方法
JP2793386B2 (ja) 電子計算機の演算エラー情報保持装置
JP5387231B2 (ja) マイクロプロセッサ及びマイクロプロセッサのデバッグ方法
JP3068578B2 (ja) インサーキットエミュレータおよび飽和演算処理方法
JPH02231634A (ja) ソフトウェア互換性維持方法
JP2504570B2 (ja) 記憶領域の書き込み検査処理方法
JPH04287231A (ja) マイクロプロセッサ
JPH04290130A (ja) プロセッサのエラー管理方式
JPS5875256A (ja) 実行命令遂行状態のモニタ方式