JPH05173786A - 自己変更コード実行方式 - Google Patents

自己変更コード実行方式

Info

Publication number
JPH05173786A
JPH05173786A JP33674091A JP33674091A JPH05173786A JP H05173786 A JPH05173786 A JP H05173786A JP 33674091 A JP33674091 A JP 33674091A JP 33674091 A JP33674091 A JP 33674091A JP H05173786 A JPH05173786 A JP H05173786A
Authority
JP
Japan
Prior art keywords
instruction
buffer
address
self
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
JP33674091A
Other languages
English (en)
Inventor
Yasumasa Nakada
恭正 中田
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP33674091A priority Critical patent/JPH05173786A/ja
Publication of JPH05173786A publication Critical patent/JPH05173786A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】自己変更コードを含むソフトウェアを実行する
場合に、どんなに多くの命令を前もってフェッチして
も、期待通りに処理されるようにする。 【構成】プログラムカウンタ11の示すアドレスをもと
に命令フェッチャ12によりフェッチされた命令は命令
バッファ13aに、そのアドレスはアドレスバッファ1
3bの対応する位置に、それぞれ格納される。命令バッ
ファ13aに格納された命令は命令デコーダ14に渡さ
れて解読処理に供される。命令デコーダ14は、解読し
た命令が主記憶書込みを伴う特定命令の場合には、その
命令の書込み先アドレスをアドレスバッファ13bから
探し、見つかったならば、そのアドレスに対応する命令
バッファ13a内の書換え対象命令より後の命令を全て
無効とした後、その特定命令(自己変更コード)を実行
させ、命令バッファ13a内の書換え対象命令に対して
も同一の書換えを行わせる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、命令の先取りを行う
情報処理装置に係り、特に先取りされた命令列中に自己
変更コードが含まれている場合に好適な自己変更コード
実行方式に関する。
【0002】
【従来の技術】近年の情報処理装置には、処理の高速化
のために、実行すべき命令の先取りを行う命令フェッチ
機構(命令フェッチ手段)と、この命令フェッチ機構に
よってフェッチされた命令をデコード回路によりデコー
ドされるまで格納しておくバッファとがCPU内に設け
られているものが多い。
【0003】従来、この種の情報処理装置では、自己変
更コードを含むソフトウェア、即ちソフトウェア自身
(ソフトウェア内の命令)を変更する(書換える)特定
命令(主記憶上の命令書換えを行う命令)を含むソフト
ウェアの実行において、自己変更コードが実行される前
に、それによって変更される命令が既にCPU内のバッ
ファにフェッチされている場合には、その変更されるべ
き命令は書換えられないまま実行されてしまい、期待通
りの処理をしないという危険性があった。
【0004】このため従来は、あまり多くの命令を命令
を前もってフェッチしないとか、自己変更コードを含む
ソフトウェアを実行させないという制限をつける必要が
あった。
【0005】
【発明が解決しようとする課題】上記したように、命令
先取り制御方式を適用する従来の情報処理装置では、自
己変更コードを含むソフトウェアの実行において、自己
変更コードが実行される前に、それによって変更される
命令が既にCPU内のバッファにフェッチされている場
合には、その変更されるべき命令は書換えられないまま
実行されてしまうため、期待通りの処理をしない虞があ
った。このため従来は、先取りされた命令を格納するバ
ッファのサイズを小さく設定して、あまり多くの命令を
先取りしないようにせざるを得ず、命令先取り制御によ
る処理の高速化を十分に発揮することができなかった。
【0006】この発明は上記事情に鑑みてなされたもの
でその目的は、自己変更コードを含むソフトウェアを情
報処理装置内のCPUにて実行する場合に、どんなに多
くの命令を前もってフェッチしても、期待通りに処理さ
れ、命令先取りに制御による処理の高速化が十分に図れ
る自己変更コード実行方式を提供することにある。
【0007】
【課題を解決するための手段】この発明は、命令フェッ
チ手段によって主記憶もしくはキャッシュメモリからフ
ェッチされた命令を、その命令アドレスと組にしてフェ
ッチ順に格納するためのバッファ手段を設けると共に、
このバッファ手段に格納された命令を順にデコードする
デコード手段であって、主記憶への書込みを行う特定命
令をデコードした場合には、この特定命令が自己変更コ
ードであり得るものとして、上記バッファ手段からその
書込み先アドレスに一致する命令アドレスと組になって
いる書換え対象命令を探し、その書換え対象命令より後
の命令を全て無効とする命令デコード手段を設け、上記
の特定命令の実行に際しては、バッファ手段内で検出さ
れた書換え対象命令に対しても同一の書換えを施すよう
にしたことを特徴とするものである。
【0008】
【作用】上記の構成においてデコード手段は、バッファ
手段に格納された命令をデコードした際に、その命令が
主記憶への書込みを行う特定命令であったならば、その
特定命令が自己変更コードであり得るものと判断する。
バッファ手段には、主記憶またはキャッシュメモリから
先取りされた命令だけでなく、その命令のアドレス(命
令アドレス)がその命令と組にして格納されている。し
たがってデコード手段は、上記の特定命令の書込み先ア
ドレスをキーとしてバッファ手段内を検索することによ
り、その書込み先アドレスと一致する命令アドレスと組
になっている命令、即ち書換え対象命令を探すことがで
きる。
【0009】デコード手段は、バッファ手段内から書換
え対象命令を検出できた場合には上記の特定命令が自己
変更コードであるものと判断し、バッファ手段内で、そ
の書換え対象命令より後にある命令を全て無効とし、更
に上記の特定命令を実行させる際には、バッファ手段内
で検出された書換え対象命令に対しても同一の書換えが
施されるように制御する。
【0010】この結果、バッファ手段のサイズを大きく
とり、同バッファ手段に大量の命令を前もってフェッチ
するようにしても、自己変更コードであり得る特定命令
の実行に際し、バッファ手段内にその特定命令で書換え
られる命令(書換え対象命令)が存在していると、その
書換え対象命令より後にあるバッファ手段内の命令が全
て無効にされ、しかも特定命令の実行により、バッファ
手段にフェッチされている書換え対象命令も書換えられ
るので、自己変更コードを含むソフトウェアの処理が期
待通りに行われる。
【0011】
【実施例】図1はこの発明を適用する命令の先取りを行
う情報処理装置の一実施例を示すブロック構成図であ
る。なお、図1の情報処理装置は、仮想記憶方式を適用
しているものとする。図1において、10は装置の中枢
をなし命令実行を司るCPU、20は命令群からなる各
種プログラム、データが格納される主記憶装置である。
【0012】CPU10は、主記憶装置20からフェッ
チする命令の仮想アドレスを保持するためのプログラム
カウンタ11と、プログラムカウンタ11の示す仮想ア
ドレスの命令を主記憶装置20からフェッチする命令フ
ェッチャ12とを有する。命令フェッチャ12は、フェ
ッチした命令およびその仮想アドレスを次に述べるバッ
ファ部13に送る。
【0013】CPU10はまた、命令フェッチャ12に
よってフェッチされた命令およびその仮想アドレスを保
持するためのバッファ部13を有する。バッファ部13
は、命令フェッチャ12から送られた命令を後述する命
令デコーダ14に渡すまで保持するための、キュー構造
を持つ命令バッファ13aと、命令フェッチャ12から
送られた仮想アドレスを命令バッファ13a内の該当命
令に対応して保持するための、命令バッファ13aと同
一段数のキュー構造を持つアドレスバッファ13bとか
ら構成される。
【0014】CPU10は更に、命令バッファ13aか
ら受取った命令を解読する命令デコーダ14を有してい
る。命令デコーダ14は、同時に2つ以上の命令の解読
は行わないようになっている。命令デコーダ14は、主
記憶装置20への書込みを行う特定命令をデコードした
場合には、その書込み先アドレスに一致する仮想アドレ
スと対応してバッファ部13(内の命令バッファ13
a)に保持されているする命令(書換え対象命令)を探
し、その書換え対象命令より後のバッファ部13内の命
令を全て無効とするようになっている。また命令デコー
ダ14は、上記の特定命令の実行に際しては、バッファ
部13内の書換え対象命令に対しても同一の書換えが施
されるように制御する。
【0015】次に、図1の構成の動作を、図2のフロー
チャートを参照して説明する。まず、通常の命令を実行
する場合の動作を説明する。命令フェッチャ12は、プ
ログラムカウンタ11によって示される仮想アドレスに
より、主記憶装置20から対応する命令をフェッチす
る。このとき命令フェッチャ12は、命令フェッチに用
いた仮想アドレスを、その命令フェッチが終了するまで
内部保持し、主記憶装置20から命令をフェッチする
と、その命令と対応する仮想アドレスを同時にバッファ
部13に送る。これにより、フェッチされた命令は命令
バッファ13aの、対応する仮想アドレスはアドレスバ
ッファ13bの、それぞれ同一段に格納される。
【0016】なお、主記憶装置20をアクセスするには
仮想アドレスを物理アドレスに変換する必要があるが、
本発明には直接関係しないため、説明を省略する。ま
た、主記憶装置20と命令フェッチャ12との間にキャ
ッシュメモリを有する装置では、命令はキャッシュメモ
リからフェッチされる。
【0017】命令デコーダ14は、命令バッファ13a
からその格納順に命令を受取って解読し(ステップS
1)、その命令が主記憶装置20への書込みを伴う命令
(例えばストア命令)でなければ、即ち自己変更コード
であり得ない命令であれば(ステップS2)、従来と同
様に、解読した命令を図示せぬ命令実行部で実行させる
(ステップS3)。
【0018】次に、本発明に直接関係する自己変更コー
ド処理について説明する。まず、命令デコーダ14がス
テップS1で解読した命令が主記憶装置20への書込み
を伴う命令、例えばストア命令の場合には、その命令は
自己変更コードである可能性がある。そこで本実施例で
は、解読した命令が自己変更コードであり得る命令の場
合には(ステップS2)、上記の通常の命令の場合と異
なる処理を行うようにしている。
【0019】今、命令デコーダ14が解読した命令が自
己変更コードであり得る命令Aであるものとする。この
場合、命令デコーダ14は、その命令Aの指定する書込
み先アドレス(オペランドアドレス)に一致するアドレ
スをアドレスバッファ13bから探す(ステップS
4)。
【0020】もし、一致するアドレスが見つからない場
合には(ステップS5)、命令デコーダ14は、命令A
がたとえ自己変更コードであったとしても、変更対象と
なる命令(書換え対象命令)は命令バッファ13a内に
は先取りされていないものと判断し、上記した通常の命
令と同様に、解読した命令を命令実行部で実行させる
(ステップS3)。
【0021】これに対し、命令Aの指定する書込み先ア
ドレス(オペランドアドレス)に一致するアドレスが見
つかった場合には(ステップS5)、命令デコーダ14
は、命令Aが自己変更コードであり、しかも同命令Aの
変更対象となる命令(この命令を命令Bと呼ぶ)が命令
バッファ13aに先取りされているものと判断し、以下
の動作を行う。
【0022】即ち命令デコーダ14は、まず命令フェッ
チャ12の動作を止める(ステップS6)。また命令デ
コーダ14は、命令バッファ13aの内容のうち、変更
対象となる命令Bと、それより以前に命令バッファ13
aに格納された命令とを残して、全て無効にする(ステ
ップS7)。この命令バッファ13a内の命令Bは、ス
テップS4で探したアドレスのアドレスバッファ13b
内格納位置から容易に検出できる。命令デコーダ14
は、上記のステップS7で、アドレスバッファ13bの
内容のうち、上記の命令Bに対応するアドレスと、命令
Bより以前に命令バッファ13aに格納された命令に対
応するアドレスとを残して、全て無効にする。
【0023】次に命令デコーダ14は、自己変更コード
である命令Aを命令実行部で実行させる(ステップS
8)。これにより、主記憶装置20への書込み、即ち主
記憶装置20に記憶されている命令Bの書換えが行われ
る。命令Aのタイプによっては、その前に何等かの演算
が行われる。同時に命令デコーダ14は、上記のステッ
プS8において、命令バッファ13a内に残されている
命令Bに対しても、同一の書換えを行わせる。この間、
命令バッファ13aから命令デコーダ14への命令送出
は禁止される。なお、主記憶装置20と命令フェッチャ
12との間にキャッシュメモリを設けた場合には、同キ
ャッシュメモリにも命令Bが存在するならば、そのキャ
ッシュメモリ内の命令Bに対しても同一の書換えを行
う。
【0024】次に命令デコーダ14は、プログラムカウ
ンタ11に命令Bの次の仮想アドレス(命令Bの仮想ア
ドレスに命令B自身の命令長を加えたもの)をセット
し、命令フェッチャ12の処理を再開させる。なお、前
記実施例では、仮想記憶方式を適用する情報処理装置に
実施した場合について説明したが、これに限るものでは
ないことは勿論である。
【0025】
【発明の効果】以上詳述したようにこの発明によれば、
自己変更コードであり得る特定命令の実行に際し、バッ
ファ手段内にその特定命令で書換えられる命令(書換え
対象命令)が存在していると、その書換え対象命令より
後にあるバッファ手段内の命令が全て無効にされ、しか
も特定命令の実行により、バッファ手段にフェッチされ
ている書換え対象命令も書換えられるので、バッファ手
段のサイズを大きくとり、同バッファ手段に大量の命令
を前もってフェッチするようにしても、自己変更コード
を含むソフトウェアの処理が期待通りに行われ、命令先
取り制御による処理の高速化が十分に図れる。
【図面の簡単な説明】
【図1】この発明を適用する命令の先取りを行う情報処
理装置の一実施例を示すブロック構成図。
【図2】図1の命令デコーダ14の動作を説明するため
のフローチャート。
【符号の説明】
10…CPU、11…プログラムカウンタ、12…命令
フェッチャ、13…バッファ部、13a…命令バッフ
ァ、13b…アドレスバッファ、14…命令デコーダ、
20…主記憶装置。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 命令の先取りを行う命令フェッチ手段
    と、 この命令フェッチ手段によってフェッチされた命令をそ
    の命令アドレスと組にしてフェッチ順に格納するための
    バッファ手段と、 このバッファ手段に格納された命令を順にデコードする
    命令デコード手段であって、主記憶への書込みを行う特
    定命令をデコードした場合には、この特定命令が自己変
    更コードであり得るものと判断して、前記バッファ手段
    からその書込み先アドレスに一致する命令アドレスと組
    になっている書換え対象命令を探し、その書換え対象命
    令より後の命令を全て無効とする命令デコード手段とを
    具備し、 前記特定命令の実行に際しては、前記バッファ手段内の
    前記書換え対象命令に対しても同一の書換えを施すよう
    にしたことを特徴とする自己変更コード実行方式。
JP33674091A 1991-12-19 1991-12-19 自己変更コード実行方式 Pending JPH05173786A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP33674091A JPH05173786A (ja) 1991-12-19 1991-12-19 自己変更コード実行方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP33674091A JPH05173786A (ja) 1991-12-19 1991-12-19 自己変更コード実行方式

Publications (1)

Publication Number Publication Date
JPH05173786A true JPH05173786A (ja) 1993-07-13

Family

ID=18302288

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33674091A Pending JPH05173786A (ja) 1991-12-19 1991-12-19 自己変更コード実行方式

Country Status (1)

Country Link
JP (1) JPH05173786A (ja)

Similar Documents

Publication Publication Date Title
JP2504830Y2 (ja) デ―タ処理装置
US6684319B1 (en) System for efficient operation of a very long instruction word digital signal processor
JPH0682320B2 (ja) データ処理装置
KR960042329A (ko) 프로그램의 코드크기의 축소화를 지원하는 마이크로 프로세서
US5226138A (en) Method for selectively transferring data instructions to a cache memory
JP2723238B2 (ja) 情報処理装置
JPH05173786A (ja) 自己変更コード実行方式
JP2902847B2 (ja) 自己変更コード実行方式
JP2534662B2 (ja) 命令キヤツシユ制御方法
JPH04246728A (ja) 情報処理装置
JPS61250754A (ja) 簡易型キヤツシユメモリ
JPH0342723A (ja) データ処理装置
KR19980052331A (ko) 프로세서의 캐시 메모리 제어 방법
JP2523398B2 (ja) 命令キャッシュへの命令デ―タ取込み制御方式
JP2002229776A (ja) 複数組の命令組を実行するためのデータ処理装置
JPH08272610A (ja) 情報処理装置における命令プリフェッチ装置
JPH0553807A (ja) 条件分岐命令先行制御方式
JPS63221427A (ja) 分岐予測を行う情報処理装置
JPH0235525A (ja) 命令フェッチ制御方法
JPS6336336A (ja) 情報処理装置
JPH05324318A (ja) 情報処理装置
JPS595931B2 (ja) 演算処理システムのアドレス停止方式
JPH07191879A (ja) デバッグ用命令の実行機能を有するマイクロプロセッサおよびデバッグ方法
JPH08286914A (ja) メモリ制御装置
JPH0795288B2 (ja) マイクロコンピュータ