JPH07175650A - 演算処理装置 - Google Patents

演算処理装置

Info

Publication number
JPH07175650A
JPH07175650A JP5317876A JP31787693A JPH07175650A JP H07175650 A JPH07175650 A JP H07175650A JP 5317876 A JP5317876 A JP 5317876A JP 31787693 A JP31787693 A JP 31787693A JP H07175650 A JPH07175650 A JP H07175650A
Authority
JP
Japan
Prior art keywords
instruction
address
designated
instructions
decoding
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
Application number
JP5317876A
Other languages
English (en)
Other versions
JP3335735B2 (ja
Inventor
Rika Maeda
理香 前田
Yoichiro Takeuchi
陽一郎 竹内
Shinichiro Suzuki
慎一郎 鈴木
Yoshiya Mori
良哉 森
Kazuaki Takeuchi
和昭 武内
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 JP31787693A priority Critical patent/JP3335735B2/ja
Publication of JPH07175650A publication Critical patent/JPH07175650A/ja
Application granted granted Critical
Publication of JP3335735B2 publication Critical patent/JP3335735B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】分岐なしの条件処理が図れ、指定サイクル前の
命令またはアドレスが簡単に得られ、即値データ取出し
や引数受け渡しが簡単に行えるようにする。 【構成】命令レジスタ2に命令がフェッチされる毎に、
その命令とアドレスが循環バッファ41に順次格納され
る。このフェッチされた命令は命令デコーダ8によりデ
コードされる。この命令がSKIP(N)命令の場合、
そのNフィールドの値Nの示すサイクルの期間だけ、命
令nop化機構9から命令デコーダ8に命令nop化制
御信号91が出力され、その期間中、デコード対象命令
がnop命令として扱われる。また、GETI(i,
r)またはGETA(i,r)命令の場合、そのiフィ
ールドの値iの示すサイクル前に循環バッファ41に格
納された命令とアドレスのうち、そのI/Aビットの指
定する命令またはアドレスが、そのrフィールドの指定
するレジスタファイル7内レジスタに取出される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、後続の命令を指定命
令数だけnop(ノー・オペレーション)化する専用命
令を含む命令列を実行する演算処理装置に関する。
【0002】
【従来の技術】一般に、演算処理装置で条件処理(条件
分岐処理)を実行可能とするためには、分岐先の命令に
ラベルを付けておくのが一般的である。このような条件
処理のための命令列について、図8を参照して説明す
る。
【0003】まず、図8(a)は、nの値により異なる
命令処理を実行するためのソースコードの一例を示すも
ので、n=0のときは命令#1を、n=1のときは命令
#2を、そしてn=2のときは命令#3をそれぞれ実行
して、例えば共通の命令処理に進む条件処理を指定して
いる。ここでの条件処理は、例えばエラー要因n(0〜
2)によって、その要因n(0〜2)別にトラップを発
生させる命令#1〜#3に分岐する場合であるものとす
る。
【0004】さて、図8(a)に示すようなソースコー
ドの指定する条件処理を、演算処理装置で実行可能とす
るためには、同ソースコードをコンパイルしてオブジェ
クトコード(ロードモジュール)を作成する必要があ
る。従来、条件処理は、条件分岐命令と分岐先の命令と
の組合せにより実現されることから、図8(a)に示す
ソースコードは、図8(b)に示すようにコンパイルさ
れるのが一般的である。図中SUB(n−0),SUB
(n−1),SUB(n−2)は、それぞれ(n−
0),(n−1),(n−2)の減算を指定する減算命
令(SUB命令)、JNZ(L1),JNZ(L2),
JNZ(L3)は、先行する命令(SUB命令)の演算
結果がゼロでない場合に、ラベルL1,L2,L3が付
された命令(分岐先命令)にジャンプすることを示す条
件分岐命令、JP(L100)は、L100の命令に無
条件でジャンプするジャンプ命令である。
【0005】このように、従来の演算処理装置で条件処
理を実現するには、分岐先の命令にラベルを付けておか
ねばならず、レジスタを用いた分岐先アドレスの計算等
が必要となる他、条件(上記の例ではnの値)が複数の
場合には、別々に条件判定を行うことから、命令数が増
加するといった問題があった。
【0006】また、エラー処理の自動化を行うためのエ
ラー情報解析処理などにおいては、指定サイクル前の実
行命令を知りたい場合が発生する。ところが従来の演算
処理装置では、途中に条件処理が存在すると目的の命令
を見つけることは不可能であり、人がロードモジュール
をたどって見つけなければならなかった。
【0007】また従来は、即値データ(即値オペランド
データ)や引数は、レジスタからのデータロードにより
得る必要があった。更に、戻りアドレスをリンクレジス
タに設定しておく必要があった。
【0008】
【発明が解決しようとする課題】上記したように従来の
演算処理装置では、条件処理を実現するのに、分岐先の
命令にラベルを付けておかねばならず、レジスタを用い
た分岐先アドレスの計算等が必要となる他、命令数が増
加するといった問題があった。
【0009】また、指定サイクル前の実行命令を見つけ
るには、人がロードモジュールをたどらなければならな
いという問題もあった。また、レジスタからのデータロ
ードによるメモリのオーバヘッドやレジスタを使用する
ことによるレジスタ増に伴うコストの増加を招くという
問題もあった。
【0010】この発明は上記事情を考慮してなされたも
のでその目的は、分岐なしの条件処理が実現でき、もっ
てレジスタを用いた分岐アドレスの計算等を不要とする
他、命令数を削減できる演算処理装置を提供することに
ある。
【0011】この発明の他の目的は、指定サイクル前の
命令またはアドレスの少なくとも一方が簡単に取得でき
る演算処理装置を提供することにある。この発明の更に
他の目的は、即値データの取出しや引数の受け渡しがレ
ジスタからのロードを必要とせずに簡単に行える演算処
理装置を提供することにある。この発明の更に他の目的
は、手続き呼出し時の戻りアドレスが、リンクレジスタ
への設定操作を必要とせずに取得できる演算処理装置を
提供することにある。
【0012】
【課題を解決するための手段および作用】この発明は、
命令デコード手段によりデコードされている命令が後続
の命令を指定命令数だけノー・オペレーション(no
p)化する指定命令数ノー・オペレーション化命令(S
KIP(N)命令)の場合に、当該命令デコード手段か
ら特定デコード信号(第1のデコード信号)が出力され
る構成とすると共に、当該命令デコード手段から特定デ
コード信号(第1のデコード信号)が出力された場合、
当該命令デコード手段によってデコードされているSK
IP(N)命令の指定する命令数Nに相当するNサイク
ルの期間中、その間にデコードされる後続の命令をno
p命令として扱うためのnop化制御信号を命令デコー
ド手段に出力する命令nop化手段(命令ノー・オペレ
ーション化手段)を設けたことを特徴とするものであ
る。
【0013】このような構成においては、命令デコード
手段および命令nop化手段の組合せ動作により、SK
IP(N)命令で指定された飛ばしたい個数だけ後続の
命令がnop化されるため、分岐なしで条件処理を実現
することが可能となる。
【0014】また、この発明は、上記命令デコード手段
によりデコードされる命令およびそのアドレスを順次格
納するためのバッファ手段と、このバッファ手段におけ
る上記命令およびアドレスの格納先を順次切換え指定す
る書込みポインタ手段とを更に設ける他、上記命令デコ
ード手段によりデコードされている命令が、指定サイク
ル前の命令を取出す命令履歴取出し命令(GETI
(i,r)命令)または指定サイクル前の命令のアドレ
スを取出すアドレス履歴取出し命令(GETA(i,
r)命令)の場合には、当該命令デコード手段から第2
のデコード信号が出力される構成とし、この第2のデコ
ード信号が出力されている場合、命令デコード手段によ
ってデコードされているGETI(i,r)命令または
GETA(i,r)命令の指定するサイクル数iと書込
みポインタ手段の指すバッファ手段内位置をもとに、こ
のバッファ手段からiサイクル前の命令またはアドレス
を取得するようにしたことを特徴とする。
【0015】このような構成においては、命令デコード
手段によりデコードされる命令およびそのアドレスがバ
ッファ手段に順次格納される。そして、命令デコード手
段によりGETI(i,r)またはGETA(i,r)
命令がデコードされた場合には、バッファ手段に格納さ
れている情報のうち、GETI(i,r)またはGET
A(i,r)命令中のiフィールドの指定するサイクル
(iサイクル)前の命令またはそのアドレスが、例えば
GETI(i,r)またはGETA(i,r)命令中の
rフィールドの指定するレジスタファイル内レジスタに
取出される。
【0016】したがって、履歴を取得したい命令よりi
サイクル後に実行される位置にGETI(i,r)命令
を用意しておくことで、当該命令GETI(i,r)命
令が実行された場合には、当該GETI(i,r)命令
中のiフィールドの値で指定されたiサイクル前の命令
を命令履歴として、例えば当該GETI(i,r)命令
中のrフィールドの指定するレジスタファイル内レジス
タに取出すことが可能となる。
【0017】同様に、SKIP(N)命令によりnop
化される命令部分に、即値データ(即値オペランドデー
タ)または手続き呼出しの固定引数を設定しておき、更
にその後にGETI(i,r)命令を用意して、これら
を実行させることにより、バッファ手段に格納されてい
る情報のうち、当該GETI(i,r)命令中のiフィ
ールドの値でiサイクル前の命令として指定された即値
データまたは固定引数を、例えば当該GETI(i,
r)命令中のrフィールドの指定するレジスタファイル
内レジスタに取出すことが可能となる。
【0018】同様に、実行開始サイクルよりNサイクル
後にエラートラップの発生する可能性のある命令(対象
命令)が実際にエラートラップした場合の飛び先に、サ
イクル数N+1、即ちi=N+1を指定するGETA
(i,r)命令を用意しておくことで、上記対象命令が
エラートラップして当該GETA(i,r)命令に実行
が移った場合に、バッファ手段に格納されている情報の
うち、当該GETA(i,r)命令中のiフィールドの
値で指定されたN+1サイクル前の命令のアドレス、即
ち上記対象命令のアドレスをエラー発生命令のアドレス
として、例えば当該GETA(i,r)命令中のrフィ
ールドの指定するレジスタファイル内レジスタに取出す
ことが可能となる。
【0019】同様に、手続き呼出し命令の飛び先に、サ
イクル数1を指定するGETA(i,r)命令を用意し
ておくことで、当該GETA(i,r)が呼出された場
合に、バッファ手段に格納されている情報のうち、当該
GETA(i,r)命令中のiフィールドの値で指定さ
れた1サイクル前の命令のアドレス、即ち上記手続き呼
出し命令のアドレスを、戻りアドレスの1つ前のアドレ
スとして、例えば当該GETA(i,r)命令中のrフ
ィールドの指定するレジスタファイル内レジスタに取出
すことが可能となる。
【0020】
【実施例】以下、この発明をパイプライン制御方式の演
算処理装置に適用した一実施例につき、図面を参照して
説明する。図1は同実施例に係る演算処理装置の主要部
の構成を示すブロック図である。
【0021】同図において、1は後述する主メモリ10
に格納されている命令群の一部の写しが置かれる命令キ
ャッシュである。この命令キャッシュ1に実行すべき主
メモリ10上の命令が存在しないミスヒット時には、当
該命令が主メモリ10から命令キャッシュ1に読込まれ
て使用される。なお、命令キャッシュ1は、命令取出し
の高速化のために設けられるもので、必ずしも必要では
ない。
【0022】2は命令キャッシュ1から取出された(フ
ェッチされた)命令が保持される命令レジスタである。
ここで、本実施例で適用される新規な命令について図2
を参照して説明する。
【0023】この新規な命令は、指定命令数nop化命
令、命令履歴取出し命令およびアドレス履歴取出し命令
の3種である。まず、指定命令数nop化命令は、後続
の命令を指定命令数だけnop化することを指定するも
ので、図2(a)に示すように指定命令数nop化命令
であることを示すOPコード・フィールド(オペレーシ
ョン・コード・フィールド)、およびnop化する命令
数Nを指定するフィールド(Nフィールド)とを有す
る。この指定命令数nop化命令をSKIPまたはSK
IP(N)のように表現する。
【0024】次に命令履歴取出し命令は、指定サイクル
前の命令を後述する循環バッファ41から取出すことを
指定するもので、図2(b)に示すように、命令履歴取
出し命令であることを示すOPコード・フィールド、取
出した命令の格納先レジスタを指定するレジスタ(デス
ティネーション・レジスタ)指定フィールド(rフィー
ルド)、および指定サイクル数iが設定される指定サイ
クル数フィールド(iフィールド)を有する。この命令
履歴取出し命令をGETIまたはGETI(i,r)の
ように表現する。なお、上記iフィールドの位置および
サイズは、指定命令数nop化命令(SKIP(N)命
令)のNフィールドのそれに一致する。
【0025】次にアドレス履歴取出し命令は、指定サイ
クル前のアドレスを循環バッファ41から取出すことを
指定するもので、命令履歴取出し命令と同様の形式であ
り、図2(c)に示すように、アドレス履歴取出し命令
であることを示すOPコード・フィールド、取出したア
ドレスの格納先レジスタを指定するレジスタ(デスティ
ネーション・レジスタ)指定フィールド(rフィール
ド)、および指定サイクル数iが設定される指定サイク
ル数フィールド(iフィールド)を有する。このアドレ
ス履歴取出し命令をGETAまたはGETA(i,r)
のように表現する。
【0026】GETI(i,r)命令およびGETA
(i,r)命令のOPコード・フィールドの例えば最下
位ビットはI/Aビットとして位置付けられている。G
ETI(i,r)とGETA(i,r)の相違は、この
I/Aビットの値が異なる点であり、GETI(i,
r)のI/Aビットは“1”、GETA(i,r)のI
/Aビットは“0”である。この逆としても構わないこ
とは勿論である。
【0027】再び図1を参照すると、3は(命令キャッ
シュ1から)命令レジスタ2にフェッチされる命令の
(主メモリ10上の)アドレスを指定するプログラムカ
ウンタ(PC)である。プログラムカウンタ3は、各命
令フェッチサイクル毎に、インクリメントされる。但
し、ジャンプ等が発生した場合には、プログラムカウン
タ3の内容は、ジャンプ先のアドレスに更新される。
【0028】4は命令キャッシュ1から命令レジスタ2
に取出された命令と、その際のプログラムカウンタ3の
値(アドレス)の対を、各命令フェッチサイクル毎に順
次保持するためのバッファ機構である。
【0029】バッファ機構4は、各エントリがサイクリ
ックに使用されるバッファ(循環バッファ)41、この
循環バッファ41内の命令・アドレスの書込み先エント
リを指す書込み先ポインタ(WP)42、および加算器
(ADD)43を有している。加算器43は、後述する
命令デコーダ8によりデコードされている命令がGET
I(i,r)命令またはGETA(i,r)命令の場合
に、その命令中のiフィールドの示すサイクル数と書込
み先ポインタ42の示す値との加算を行い、循環バッフ
ァ41内の読出し対象エントリの情報(読出しポインタ
情報)を生成するのに用いられる。
【0030】5はバッファ機構4内の循環バッファ41
から読出される命令およびアドレスのうちのいずれか一
方を命令デコーダ8によりデコードされている命令のO
Pコード・フィールド中の最下位ビット(同命令がGE
TI(i,r)命令またはGETA(i,r)命令の場
合にはI/Aビット)に応じて選択するセレクタ、6は
セレクタ5の出力情報および通常のレジスタ書込みデー
タのうちの一方を後述する選択制御信号82に応じて選
択するセレクタ、7はレジスタ群からなるレジスタファ
イルである。レジスタファイル7は、セレクタ6の出力
情報を保持するのに用いられる。
【0031】8は命令レジスタ2に保持された命令のO
Pコード・フィールドをデコードして、各部を制御する
各種デコード信号(制御信号)を出力する命令デコーダ
である。この命令デコーダ8は、OPコード・フィール
ドの内容がSKIP(N)命令を示す場合には、同命令
中のNフィールドの値(指定命令数)を後述する命令n
op化機構9内に設定するためのセット信号81を出力
し、GETI(i,r)命令またはGETA(i,r)
命令の場合には、セレクタ6に対する選択制御信号82
を出力するように構成されている。また命令デコーダ8
は、命令nop化機構9から命令nop化制御信号91
が出力されている期間中は、デコード対象となる命令
を、その命令種別に無関係にnop命令として扱う。
【0032】9は命令nop化機構である。この命令n
op化機構9は、命令デコーダ8からセット信号81が
出力された場合に、同デコーダ8によりデコードされて
いるSKIP(N)命令中のNフィールドの値Nを内部
に設定し、その値Nの示すサイクルの期間(Nサイクル
の期間)だけ、命令nop化制御信号91を出力する。
命令nop化機構9は、例えば、命令デコーダ8のデコ
ード対象となっているSKIP(N)命令中のNフィー
ルドの値Nをセット信号81に応じてプリセットし、そ
の値が「0」になるまでパイプライン・サイクルのクロ
ックCLKに応じてダウンカウントするカウンタと、こ
のカウンタの値が「0」でない期間、アクティブな命令
nop化制御信号91を出力するゲート回路(いずれも
図示せず)により構成される。
【0033】10は命令列からなる各種プログラム、デ
ータ等が格納される主メモリである。次に、図1の構成
の基本動作について、図3のフローチャート、および図
4乃至図7の基本動作説明図を参照して説明する。
【0034】まず、プログラムカウンタ3の指定するア
ドレスの命令が命令キャッシュ1から取出され、命令レ
ジスタ2に読込まれたものとする。同時に、バッファ機
構4内の書込み先ポインタ42が次の循環バッファ41
内エントリを指すように更新され、命令キャッシュ1か
ら取出された命令とプログラムカウンタ3の指定するア
ドレスの対が、当該更新後の書込み先ポインタ42の指
定する循環バッファ41内エントリに書込まれる(記録
される)(ステップS1)。これにより、書込み先ポイ
ンタ42は、命令レジスタ2にフェッチされた命令とそ
のアドレスを示すことになる。
【0035】この様子を、命令キャッシュ1から命令レ
ジスタ2にフェッチされた命令が、主メモリ10上のア
ドレス“1000”のADD(加算)命令(ここではA
+Bを指定するADD命令)である場合を例に、図4に
示す。
【0036】なお、書込み先ポインタ42は、循環バッ
ファ41内エントリのアドレスが小さくなる方向に更新
(デクリメント)されるものとする。また、書込み先ポ
インタ42の値が「0」の状態で更新された場合、同ポ
インタ42の更新後の値はエントリアドレスの最大値を
指すものとする。
【0037】命令レジスタ2にフェッチされた命令は、
命令デコーダ8に導かれる。命令デコーダ8は、この命
令のOPコード・フィールドの内容をデコードし、対応
するデコード信号を出力する。
【0038】ここで、命令デコーダ8によりデコードさ
れている命令が指定命令数nop化命令、即ちSKIP
(N)命令の場合について説明する。この場合、命令デ
コーダ8からセット信号81が出力される。このセット
信号81は、命令デコーダ8によりデコードされている
SKIP(N)中のNフィールドの値と共に命令nop
化機構9に導かれる。
【0039】すると命令nop化機構9は、命令デコー
ダ8によりデコードされているSKIP(N)中のNフ
ィールドの値「N」を、セット信号81に応じて内部設
定し、その値の示すサイクルの期間(Nサイクルの期
間)だけ、アクティブな命令nop化制御信号91を出
力する。
【0040】命令nop化機構9からの命令nop化制
御信号91は命令デコーダ8に導かれる。すると命令デ
コーダ8は、命令nop化制御信号91がアクティブな
期間(Nサイクルの期間)、命令レジスタ2を介して導
かれる後続のN命令を、その命令種別に無関係にnop
命令として扱う。
【0041】このように、図1の構成の演算処理装置で
は、命令デコーダ8にてデコードされている命令がSK
IP(N)命令である場合(ステップS2)、後続のN
命令がnop化される(ステップS3)。
【0042】したがって、主メモリ10上の或るアドレ
スに例えばN=2のSKIP(N)命令、即ちSKIP
(2)命令が存在する場合には、図5に示すように、S
KIP(2)命令に続く2つの命令がnop化されるこ
とになる。
【0043】次に、命令デコーダ8によりデコードされ
ている命令が命令履歴取出し命令、即ちGETI(i,
r)命令の場合について説明する。この場合、命令デコ
ーダ8によりデコードされているGETI(i,r)命
令中のiフィールドの値「i」と、その時点の書込み先
ポインタ42の値とが、加算器43により加算される。
そして、加算器43の加算結果(である読出しポインタ
情報)の指定する循環バッファ41内エントリに記録さ
れている命令およびアドレスの対、即ち現在書込み先ポ
インタ42の指定しているエントリ中の命令に対してi
サイクル前の命令およびアドレスの対が、同バッファ4
1から読出される。
【0044】循環バッファ41から読出された命令およ
びアドレスはセレクタ5に導かれる。このセレクタ5に
は、命令デコーダ8によりデコードされているGETI
(i,r)命令のOPコード・フィールド中のI/Aビ
ットも(選択制御信号として)導かれる。このI/Aビ
ットの値は、GETI(i,r)命令では“1”であ
る。
【0045】セレクタ5は、この例のようにI/A=1
の場合、循環バッファ41から読出された命令およびア
ドレスのうちの命令をセレクタ6に選択出力する。一
方、命令デコーダ8は、デコード対象となっている命令
がこの例のようにGETI(i,r)命令の場合、論理
“1”の選択制御信号82を出力する。この選択制御信
号82はセレクタ6に導かれる。
【0046】セレクタ6は、この例のように選択制御信
号82が“1”の場合、セレクタ5の選択出力情報(こ
こでは命令)を選択する。このように、図1の構成の演
算処理装置では、命令デコーダ8にてデコードされてい
る命令がGETI(i,r)命令である場合(ステップ
S4)、iサイクル前の命令およびそのアドレスの対が
循環バッファ41から取出され、そのうちの命令がセレ
クタ5,6を介してレジスタファイル7のrレジスタに
取出される(ステップS5)。
【0047】この様子を、命令デコーダ8にてデコード
されているGETI(i,r)命令のアドレスが“10
00”であり、iサイクル前の命令がSUB(減算)命
令(ここではC−Dを指定するSUB命令)である場合
を例に、図6に示す。
【0048】次に、命令デコーダ8によりデコードされ
ている命令がアドレス履歴取出し命令、即ちGETA
(i,r)命令の場合について説明する。この場合、命
令デコーダ8によりデコードされているGETA(i,
r)命令中のiフィールドの値「i」と、その時点の書
込み先ポインタ42の値とが、加算器43により加算さ
れる。そして、加算器43の加算結果(である読出しポ
インタ情報)の指定する循環バッファ41内エントリに
記録されている命令およびアドレスの対が、即ち現在書
込み先ポインタ42の指定しているエントリ中の命令に
対してiサイクル前の命令およびそのアドレスの対が、
同バッファ41から読出される。
【0049】循環バッファ41から読出された命令およ
びアドレスはセレクタ5に導かれる。このセレクタ5に
は、命令デコーダ8によりデコードされているGETA
(i,r)命令のOPコード・フィールド中のI/Aビ
ットも(選択制御信号として)導かれる。このI/Aビ
ットの値は、GETA(i,r)命令では“0”であ
る。
【0050】セレクタ5は、この例のようにI/A=0
の場合、循環バッファ41から読出された命令およびア
ドレスのうちのアドレスをセレクタ6に選択出力する。
一方、命令デコーダ8は、デコード対象となっている命
令がこの例のようにGETA(i,r)命令の場合、上
記したGETI(i,r)命令のときと同様に論理
“1”の選択制御信号82を出力する。
【0051】セレクタ6は、この例のように選択制御信
号82が“1”の場合、セレクタ5の選択出力情報(こ
こではアドレス)を選択する。セレクタ6により選択さ
れた情報(アドレス)は、この例のように、命令デコー
ダ8によりGETA(i,r)命令がデコードされてい
る場合には、同命令中のrフィールドの内容「r」の指
定するレジスタファイル7内レジスタ(rレジスタ)に
格納される。
【0052】このように、図1の構成の演算処理装置で
は、命令デコーダ8にてデコードされている命令がGE
TA(i,r)命令である場合(ステップS6)、iサ
イクル前の命令およびそのアドレスの対が循環バッファ
41から取出され、そのうちのアドレスがセレクタ5,
6を介してレジスタファイル7のrジスタに取出される
(ステップS7)。
【0053】この様子を、命令デコーダ8にてデコード
されているGETA(i,r)命令のアドレスが“10
50”であり、iサイクル前の命令のアドレスが“10
00”である場合を例に、図7に示す。
【0054】次に、図1の演算処理装置において、SK
IP命令(指定命令数nop化命令)を利用して、図8
(a)に示したようなソースコードの指定する条件処理
を、図8(c)に示すように分岐なしで実現した例につ
き、説明する。なお、図8(a)に示すソースコード
は、[従来の技術]の欄で説明したように、n=0のと
きは命令#1を、n=1のときは命令#2を、そしてn
=2のときは命令#3をそれぞれ実行して、例えば共通
の命令処理に進む条件分岐処理を指定するものである。
【0055】さて、図8(a)に示すようなソースコー
ドの指定する条件処理を、図1の構成の演算処理装置で
実行可能とするためには、同ソースコードをコンパイル
してオブジェクトコード(ロードモジュール)を作成す
る必要がある。この際、条件が成立したときに実行する
命令の前にSKIP命令を挿入してコンパイルする。本
実施例では、図8(a)に示すソースコードをコンパイ
ルした場合、図8(c)に示すように、SKIP(n*
2)、命令#1、SKIP(3)、命令#2、SKIP
(1)および命令#3の順で続く命令列が作成される。
【0056】前記したように、図1の構成の演算処理装
置においては、SKIP(N)命令により、後続のN命
令がnop化される(図3ステップS2,S3)。した
がって、図8(c)に示した命令列の例では、n=0の
場合には、SKIP(n*2)、即ちSKIP(0)に
続いて、命令#1、SKIP(3)が順次実行され、更
に後続の3命令(命令#2、SKIP(1)、命令#
3)がnop化された後、命令#3の次の命令が実行さ
れる。
【0057】同様に、n=1の場合には、SKIP(n
*2)、即ちSKIP(2)が実行されて、後続の2命
令(命令#1、SKIP(3))がnop化された後、
命令#2、SKIP(1)が順次実行され、更に後続の
1命令(命令#3)がnop化された後、命令#3の次
の命令が実行される。
【0058】同様に、n=2の場合には、SKIP(n
*2)、即ちSKIP(4)が実行されて、後続の4命
令(命令#1、SKIP(3)、命令#2、SKIP
(1))がnop化された後、SKIP(1)の次の命
令#3が実行され、更に次の当該命令#3の次の命令が
実行される。
【0059】このように、図1に示す構成の演算処理装
置では、SKIP命令(指定命令数nop化命令)を利
用することで、分岐を用いずに条件処理を実現すること
ができる。したがって、図8(c)から明らかなよう
に、条件処理のための命令列の構成命令数が、図8
(b)に示した従来の場合の命令列に比較して削減でき
る。また、命令数が削減できることから、処理の高速化
が図れ、更に分岐発生に伴うパイプライン停止の問題が
ないため、一層の高速化が図れる。
【0060】次に、図1の演算処理装置において、GE
TI命令(命令履歴取出し命令)を利用して、指定サイ
クル前の命令を取得する場合(命令履歴取出し)につ
き、図9を参照して説明する。
【0061】まず、GETI命令を利用して、指定サイ
クル前の命令を取得できるようにするには、途中に分岐
がないようにしておく必要がある。このため、途中で条
件処理を必要とする場合には、先に述べたように、条件
処理についてSKIP命令を用いた形にコンパイルする
ことで、分岐なしの条件処理を実現できるようにしてお
く。
【0062】図9は、主メモリ10上に、SKIP
(1)、何らかの1命令、命令#1、何らかの2命令、
GETI(3,r)の命令列が格納されている場合に、
当該命令列が1命令ずつ順次実行され、GETI(3,
r)が実行された際の様子を説明するためのものであ
る。
【0063】図9の例では、SKIP(1)、何らかの
1命令、命令#1、何らかの2命令、GETI(3,
r)がSKIP(1)から順に1命令ずつ命令レジスタ
2にフェッチされる毎に、書込み先ポインタ42がデク
リメントされて、そのデクリメント後の当該ポインタ4
2の指定する循環バッファ41内エントリに、上記フェ
ッチされた命令とそのアドレスが記録される(ステップ
S1)。また、SKIP(1)の次の1命令は、当該S
KIP(1)の指定によりnop化される(ステップS
2,S3)。
【0064】さて、GETI(3,r)が命令レジスタ
2にフェッチされて、当該GETI(3,r)とそのア
ドレスが、図9に示すように、書込み先ポインタ42の
指す循環バッファ41内エントリに記録され(ステップ
S1)、更に当該GETI(3,r)が命令デコーダ8
でデコードされたものとする(ステップS4)。
【0065】この場合、図6を参照して説明したことか
らも明らかなように、GETI(3,r)のiフィール
ドの値「3」(i=3)と書込み先ポインタ42の値と
の(加算器43による)加算値で指定される循環バッフ
ァ41内エントリから読出される命令およびアドレスの
対、即ち現在書込み先ポインタ42の指しているエント
リ中の命令GETI(3,r)に対して3サイクル前の
命令およびアドレスの対のうちの命令(ここでは命令#
1)が、図9に示すように、当該GETI(3,r)の
rフィールドの指定する、レジスタファイル7内のrレ
ジスタに格納される(ステップS5)。
【0066】ここで、SKIP(1)を用いることで条
件処理を分岐なしで実現していることから、途中に条件
処理があっても、GETI(3,r)の実行により、指
定サイクル前(ここでは3サイクル前)の命令(命令#
1)を、正しくレジスタファイル7内の指定レジスタ
(rレジスタ)に取出すことができる。
【0067】次に、図1の演算処理装置において、SK
IP命令(指定命令数nop化命令)でnop化された
命令部分(位置)に即値データを格納しておき、当該即
値データをGETI命令(命令履歴取出し命令)を利用
してレジスタファイル7内に取出す場合(即値オペラン
ド指定)につき、図10を参照して説明する。
【0068】まず、GETI命令を利用して即値データ
を取出せるようにするには、コンパイルの際に、SKI
P命令によりnop化される命令位置に即値データを格
納しておく必要がある。
【0069】図10は、主メモリ10上に、SKIP
(2)、定数#1、定数#2、GETI(2,r)の命
令列(定数#1,#2も命令として見なす)が格納され
ている場合に、SKIP(2)から順に1命令ずつ実行
され、GETI(2,r)が実行された際の様子を説明
するためのものである。この図10の例では、SKIP
(2)でnop化される2つの命令部分に、それぞれ定
数#1と定数#2の2つの即値データが予め格納されて
いる。
【0070】図10の例では、SKIP(2)、定数#
1、定数#2、GETI(2,r)がSKIP(2)か
ら順に1命令ずつ命令レジスタ2にフェッチされる毎
に、書込み先ポインタ42がデクリメントされて、その
デクリメント後の当該ポインタ42の指定する循環バッ
ファ41内エントリに、上記フェッチされた命令とその
アドレスが記録される(ステップS1)。また、SKI
P(2)の次の2つの定数#1,#2は、当該SKIP
(2)の指定によりnop化される(ステップS2,S
3)。したがって、SKIP(2)の次の2命令部分
に、即値データである定数#1,#2が格納(設定)さ
れていても、何ら問題はない。
【0071】さて、GETI(2,r)が命令レジスタ
2にフェッチされて、当該GETI(2,r)とそのア
ドレスが、図10に示すように、書込み先ポインタ42
の指す循環バッファ41内エントリに記録され(ステッ
プS1)、更に当該GETI(2,r)が命令デコーダ
8でデコードされたものとする(ステップS4)。
【0072】この場合、図6を参照して説明したことか
らも明らかなように、GETI(2,r)のiフィール
ドの値「2」(i=2)と書込み先ポインタ42の値と
の(加算器43による)加算値で指定される循環バッフ
ァ41内エントリから読出される命令およびアドレスの
対、即ち現在書込み先ポインタ42の指しているエント
リ中の命令GETI(2,r)に対して2サイクル前の
命令およびアドレスの対のうちの命令(ここでは、命令
に代えて格納されている定数#1)が、図10に示すよ
うに、当該GETI(2,r)のrフィールドの指定す
る、レジスタファイル7内のrレジスタに格納される
(ステップS5)。
【0073】このように、SKIP(2)によりnop
化される2命令部分に即値データである定数#1,#2
を格納しておいた場合、定数#2の次の位置のGETI
(2,r)の実行により、定数#1(即値データ)を
(レジスタからのデータロードを指定する)ロード命令
を行うことなく、取得できる。なお、GETI(2,
r)に代えてGETI(1,r)を用いるならば、定数
#2を取得できることは勿論である。
【0074】次に、図1の演算処理装置において、SK
IP命令(指定命令数nop化命令)でnop化された
命令部分(位置)に引数を格納しておき、当該引数をG
ETI命令(命令履歴取出し命令)を利用してレジスタ
ファイル7内に取出す場合(固定引数引渡し)につき、
図11を参照して説明する。
【0075】まず、GETI命令を利用して、引数(固
定引数)を引渡せるようにするには、コンパイルの際
に、SKIP命令によりnop化される命令位置に関数
(手続き呼出し)の引数を格納し、更に飛び先にGET
I命令を挿入しておく必要がある。
【0076】図11は、主メモリ10上に、SKIP
(2)、引数arg1、引数arg2、手続き呼出し命
令であるCALL(FN1)の命令列(引数arg1,
arg2も命令として見なす)が格納され、更にCAL
L(FN1)の指定する飛び先FN1(に対応するアド
レス)にGETI(2,r)が格納されている場合に、
SKIP(2)から順に1命令ずつ実行され、CALL
(FN1)の実行の後、その飛び先のGETI(2,
r)が実行された際の様子を説明するためのものであ
る。この図11の例では、SKIP(2)でnop化さ
れる2つの命令部分に、それぞれ固定の引数arg1と
引数arg2が予め格納されている。
【0077】図11の例では、SKIP(2)、引数a
rg1、引数arg2、CALL(FN1)、GETI
(2,r)がSKIP(2)から順に1命令ずつ命令レ
ジスタ2にフェッチされる毎に、書込み先ポインタ42
がデクリメントされて、そのデクリメント後の当該ポイ
ンタ42の指定する循環バッファ41内エントリに、上
記フェッチされた命令とそのアドレスが記録される(ス
テップS1)。また、SKIP(2)の次の2つの引数
arg1,arg2は、当該SKIP(2)の指定によ
りnop化される(ステップS2,S3)。したがっ
て、SKIP(2)の次の2命令部分に、引数arg
1,arg2が格納(設定)されていても、何ら問題は
ない。
【0078】さて、GETI(2,r)が命令レジスタ
2にフェッチされて、当該GETI(2,r)とそのア
ドレスが、図11に示すように、書込み先ポインタ42
の指す循環バッファ41内エントリに記録され(ステッ
プS1)、更に当該GETI(2,r)が命令デコーダ
8でデコードされたものとする(ステップS4)。
【0079】この場合、図6を参照して説明したことか
らも明らかなように、GETI(2,r)のiフィール
ドの値「2」(i=2)と書込み先ポインタ42の値と
の(加算器43による)加算値で指定される循環バッフ
ァ41内エントリから読出される命令およびアドレスの
対、即ち現在書込み先ポインタ42の指しているエント
リ中の命令GETI(2,r)に対して2サイクル前の
命令およびアドレスの対のうちの命令(ここでは、命令
に代えて格納されている引数arg2)が、図11に示
すように、当該GETI(2,r)のrフィールドの指
定する、レジスタファイル7内のrレジスタに格納され
る(ステップS5)。
【0080】このように、SKIP(2)によりnop
化される2命令部分に関数(手続き呼出し)の引数ar
g1,arg2を格納し、飛び先にGETI(2,r)
を挿入しておいた場合、GETI(2,r)の実行によ
り、引数arg2を(レジスタからのデータロードを指
定する)ロード命令を行うことなく、取得できる。な
お、GETI(2,r)に代えてGETI(3,r)を
用いるならば、引数arg1を取得できることは勿論で
ある。
【0081】ところで、スーパーコンピュータなどで
は、1つの命令の実行完了を待たずに次の命令を実行可
能な構成となっていることが多い。このようなものにお
いては、エラートラップが発生しても、そのエラー発生
命令のアドレスを取得することは困難である。そこで、
図1の演算処理装置において、エラートラップが発生し
たら、GETA命令(アドレス履歴取出し命令)に飛ぶ
ようにしておき、当該GETA命令を利用してエラー発
生命令のアドレスをレジスタファイル7内に取出す場合
(エラー発生命令のアドレス取出し)につき、図12を
参照して説明する。
【0082】まず、GETA命令を利用して、エラー発
生命令のアドレスを取出せるようにするには、コンパイ
ルの際に、エラートラップしたらGETA命令に飛ぶよ
うにしておく必要がある。また、条件処理を必要とする
場合には、SKIP命令を利用して分岐なしで条件処理
が行えるようにしておく。
【0083】図12は、主メモリ10上に、例えば3サ
イクルで実行結果が生成されるパイプライン演算命令で
ある浮動小数点加算命令fadd と、後続する何らかの2
命令とが格納され、更に当該2命令のうちの後の命令の
実行中に先行する命令faddがエラートラップした場合
の割込み先にGETA(3,r)が格納されている場合
に、命令fadd から順に1命令ずつ実行が開始され、命
令fadd がエラートラップした結果、GETA(3,
r)が実行された際の様子を説明するためのものであ
る。なお、命令fadd のアドレスは“1000”である
ものとする。
【0084】図12の例では、命令fadd 、後続の2命
令が1命令ずつ命令レジスタ2に順次フェッチされる毎
に、書込み先ポインタ42がデクリメントされて、その
デクリメント後の当該ポインタ42の指定する循環バッ
ファ41内エントリに、上記フェッチされた命令とその
アドレスが記録される(ステップS1)。
【0085】ここで、命令fadd が、実行開始サイクル
より2サイクル後にエラートラップしたものとする。こ
の場合、割込み先のGETA(3,r)が命令レジスタ
2にフェッチされると同時に、当該命令fadd とそのア
ドレスが、当該命令fadd の1サイクル前にフェッチさ
れた命令(命令fadd に後続する2命令のうちの後の命
令)の次に位置する循環バッファ41内エントリに記録
される(ステップS1)。そして、命令レジスタ2にフ
ェッチされたGETA(3,r)が命令デコーダ8でデ
コードされたものとする(ステップS6)。
【0086】この場合、図7を参照して説明したことか
らも明らかなように、GETA(3,r)のiフィール
ドの値「3」(i=3)と書込み先ポインタ42の値と
の(加算器43による)加算値で指定される循環バッフ
ァ41内エントリから読出される命令およびアドレスの
対、即ち現在書込み先ポインタ42の指しているエント
リ中の命令GETA(3,r)に対して3サイクル前の
エラー発生命令faddおよびアドレスの対のうちのアド
レス(ここでは“1000”)が、図12に示すよう
に、当該GETI(3,r)のrフィールドの指定す
る、レジスタファイル7内のrレジスタに取出される
(ステップS7)。
【0087】次に、図1の演算処理装置において、CA
LL命令(手続き呼出し命令)の飛び先にGETA命令
を挿入すると共に、手続き終了位置にRET命令(リタ
ーン命令)を挿入しておき、GETA命令を利用してC
ALL命令のアドレスをレジスタファイル7内に取出す
場合(手続き呼出し時の戻りアドレス指定)につき、図
13を参照して説明する。
【0088】図13は、主メモリ10上に、CALL
(FN1)、当該CALL(FN1)による手続き呼出
しから戻った際に実行される命令#1を先頭とする命令
列が格納され、更にCALL(FN1)の指定する飛び
先FN1(に対応するアドレス)から始まる領域にGE
TA(1,r)を先頭命令とし、レジスタファイル7内
のrレジスタの内容に1を加えたアドレス(戻りアドレ
ス)に実行を移すためのRET(r+1)を最終命令と
する命令列が格納されている場合に、CALL(FN
1)から順に1命令ずつ実行が開始され、RET(r+
1)の実行により、戻り先の命令#1にリターンした際
の様子を説明するためのものである。なお、CALL
(FN1),命令#1のアドレスは、それぞれ“100
0”,“1001”であるものとする。
【0089】図13の例では、まずCALL(FN1)
が、続いてGETA(1,r)が命令レジスタ2にフェ
ッチされる。この命令フェッチの都度、書込み先ポイン
タ42がデクリメントされて、そのデクリメント後の当
該ポインタ42の指定する循環バッファ41内エントリ
に、上記フェッチされた命令とそのアドレスが記録され
る(ステップS1)。
【0090】ここで、命令レジスタ2にフェッチされた
GETA(1,r)が、命令デコーダ8でデコードされ
ると(ステップS6)、図7を参照して説明したことか
らも明らかなように、GETA(1,r)のiフィール
ドの値「1」(i=1)と書込み先ポインタ42の値と
の(加算器43による)加算値で指定される循環バッフ
ァ41内エントリから読出される命令およびアドレスの
対、即ち現在書込み先ポインタ42の指しているエント
リ中の命令GETA(1,r)に対して1サイクル前の
命令およびアドレスの対のうちのアドレス(ここでは、
CALL(FN1)のアドレス“1000”)が、図1
3に示すように、当該GETA(1,r)のrフィール
ドの指定する、レジスタファイル7内のrレジスタに格
納される(ステップS7)。
【0091】さて、GETA(1,r)に後続する命令
列が1命令ずつ順次命令レジスタ2にフェッチされ、や
がてRET(r+1)が当該命令レジスタ2にフェッチ
されたものとする。すると、RET(r+1)とそのア
ドレスが、書込み先ポインタ42の指定する循環バッフ
ァ41内エントリに記録される。
【0092】そして、この命令レジスタ2にフェッチさ
れたRET(r+1)が命令デコーダ8でデコードされ
て、そのデコード結果に従って実行される(ステップS
6,S8)。このRET(r+1)は、レジスタファイ
ル7内のrレジスタの内容に1を加えたアドレスを戻り
アドレスとして、当該アドレスに実行を移すリターン命
令である。ここで、レジスタファイル7内のrレジスタ
には、先のGETA(1,r)の実行により、CALL
(FN1)のアドレス“1000”が格納されている。
【0093】したがって、RET(r+1)の実行によ
り、アドレス“1001”の命令、即ちCALL(FN
1)の次のアドレスの命令#1にリターンすることにな
る。具体的には、アドレス“1001”がプログラムカ
ウンタ3にセットされた後、そのアドレス“1001”
の命令#1が命令キャッシュ1から命令レジスタ2にフ
ェッチされる。
【0094】このように、CALL命令の飛び先にGE
TA(1,r)を挿入し、当該GETA(1,r)命令
を利用してCALL命令のアドレスをレジスタファイル
7内の指定レジスタ(rレジスタ)に取出すようにする
と共に、手続き終了位置に、当該レジスタの示すアドレ
スの次のアドレスにリターンするためのRET命令を挿
入することで、戻りアドレスをリンクレジスタに設定す
る操作を行わなくても、RET命令により手続き呼出し
から戻るときに、CALL命令のアドレスの次のアドレ
ス(手続き呼出しの戻りアドレス)に実行を移すことが
できる。
【0095】なお、前記実施例では、書込み先ポインタ
42がデクリメントされるものとして説明したが、イン
クリメントされるものであっても構わない。但し、この
場合には加算器43に代えて減算器を設け、GETI
(i,r)またはGETA(i,r)命令の実行時に、
この減算器により書込み先ポインタ42の値からGET
I(i,r)またはGETA(i,r)命令中のiフィ
ールドの値「i」を減算することで、取出しの対象とな
る循環バッファ41内エントリを指すエントリアドレス
を求める必要がある。
【0096】また、前記実施例では、命令キャッシュ1
から命令レジスタ2にフェッチされた命令が次のサイク
ルでデコードされるものとして説明したが、処理の高速
化のために、命令レジスタ2に代えて命令バッファを設
けて命令キャッシュ1から命令バッファへの命令の先取
りを行うようにしても構わない。但し、この場合には、
命令キャッシュ1から命令バッファにフェッチされた命
令がデコードされるまで、何サイクルかの遅延が生じる
ため、この遅延に同期して、書込み先ポインタ42の内
容を遅延させて対応する命令がデコードされるまで保持
するための(パイプラインレジスタ群等の)機構が必要
となる。そして、GETI(i,r)またはGETA
(i,r)命令の実行では、同命令中のiフィールドの
値との演算に、書込み先ポインタ42の値ではなくて、
当該機構に保持されている現在デコード中の命令が記録
されている循環バッファ41内エントリを指すアドレス
を用いるようにする。
【0097】また、前記実施例では、循環バッファ41
には命令およびアドレスの対を格納するものとして説明
したが、GETA命令を利用しない演算処理装置である
ならば命令だけを、GETI命令を利用しない演算処理
装置であるならばアドレスだけを格納するようにしても
構わない。
【0098】
【発明の効果】以上詳述したようにこの発明によれば、
次に列挙する効果を得ることができる。 (1)指定命令数nop化命令(SKIP(N)命令)
で指定された飛ばしたい個数だけ後続の命令をnop化
することができるため、分岐なしで条件処理を実現する
ことができる。 (2)履歴を取得したい命令よりiサイクル後に実行さ
れる位置に命令履歴取出し命令(GETI(i,r)命
令)を用意しておくことで、当該取出し命令が実行され
た場合に、当該取出し命令で指定されたiサイクル前の
命令を命令履歴としてバッファ手段から簡単に取出すこ
とができる。 (3)指定命令数nop化命令(SKIP(N)命令)
によりnop化される命令部分に、即値データ(即値オ
ペランドデータ)または手続き呼出しの固定引数を設定
しておき、更にその後に命令履歴取出し命令(GETI
(i,r)命令)を用意して、これらを実行させること
により、当該取出し命令で指定されたiサイクル前の命
令部分の即値データまたは固定引数をバッファ手段から
簡単に得ることができる。このように、即値データまた
は引数をレジスタからロードして得る必要がないため、
レジスタからのロードによるメモリのオーバヘッド、お
よびレジスタを使用することによるコストの増加を防止
することができる。 (4)実行開始サイクルよりNサイクル後にエラートラ
ップの発生する可能性のある命令(対象命令)が実際に
エラートラップした場合の飛び先に、サイクル数N+1
を指定するアドレス履歴取出し命令(GETA命令)を
用意しておくことで、上記対象命令がエラートラップし
て当該取出し命令に実行が移った場合に、当該取出し命
令で指定されたN+1サイクル前の命令のアドレス、即
ち上記対象命令のアドレスをエラー発生命令のアドレス
としてバッファ手段から簡単に取出すことができる。 (5)手続き呼出し命令の飛び先に、サイクル数1を指
定するアドレス履歴取出し命令(GETA(i,r)命
令)を用意しておくことで、当該取出し命令が呼出され
た場合に、当該取出し命令で指定された1サイクル前の
命令のアドレス、即ち上記手続き呼出し命令のアドレス
を、戻りアドレスの1つ前のアドレスとしてバッファ手
段から簡単に取出すことができる。したがって、従来の
ように、戻りアドレスをリンクレジスタに設定しておく
必要がなくなる。
【図面の簡単な説明】
【図1】この発明の一実施例に係る演算処理装置の主要
部の構成を示すブロック図。
【図2】同実施例で適用される新規な命令のフォーマッ
ト図。
【図3】同実施例における処理の流れを図2に示した命
令がフェッチされた際の処理を中心に説明するためのフ
ローチャート。
【図4】同実施例におけるバッファ機構4の機能を説明
するための図。
【図5】同実施例において指定命令数nop化命令(S
KIP命令)を実行することにより実現される指定命令
数nop化機能を説明するための図。
【図6】同実施例において命令履歴取出し命令(GET
I命令)を実行することにより実現される指定サイクル
前の命令の取出し機能を説明するための図。
【図7】同実施例においてアドレス履歴取出し命令(G
ETA命令)を実行することにより実現される指定サイ
クル前の命令のアドレスの取出し機能を説明するための
図。
【図8】同実施例において分岐なしの条件処理を実現す
るための命令列(モジュール)を、当該条件処理を記述
したソースコード、および従来の分岐ありの条件処理と
なる命令列(モジュール)と対比させて示すもので、図
8(a)はソースコード、図8(b)は当該ソースコー
ドのコンパイル結果である従来の命令列、図8(c)当
該ソースコードのコンパイル結果である同実施例におけ
る命令列。
【図9】同実施例においてGETI命令を利用して、指
定サイクル前の命令を取得する命令履歴取出しを説明す
るための図。
【図10】同実施例においてSKIP命令でnop化さ
れた命令部分に即値データを格納しておき、当該即値デ
ータをGETI命令を利用してレジスタに取出す即値オ
ペランド指定を説明するための図。
【図11】同実施例においてSKIP命令でnop化さ
れた命令部分に引数を格納しておき、当該引数をGET
I命令を利用してレジスタに取出す固定引数引渡しを説
明するための図。
【図12】同実施例においてエラートラップが発生した
らGETA命令に飛ぶようにしておき、当該GETA命
令を利用してエラー発生命令のアドレスをレジスタに取
出すエラー発生命令のアドレス取出しを説明するための
図。
【図13】同実施例においてCALL命令(手続き呼出
し命令)の飛び先にGETA命令を挿入すると共に、手
続き終了位置にRET命令(リターン命令)を挿入して
おき、GETA命令を利用してCALL命令のアドレス
をレジスタに取出して戻りアドレスの指定に用いるよう
にした手続き呼出し時の戻りアドレス指定を説明するた
めの図。
【符号の説明】
1…命令キャッシュ、2…命令レジスタ、3…プログラ
ムカウンタ(PC)、4…バッファ機構、5,6…セレ
クタ、7…レジスタファイル、8…命令デコーダ、9…
命令nop化機構、10…主メモリ、41…循環バッフ
ァ、42…書込み先ポインタ(WP)、43…加算器
(ADD)、81…セット信号、82…選択制御信号、
91…命令nop化制御信号。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 森 良哉 東京都府中市東芝町1番地 株式会社東芝 府中工場内 (72)発明者 武内 和昭 東京都府中市東芝町1番地 株式会社東芝 府中工場内

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】命令群が記憶された記憶手段と、 前記記憶手段から取出された命令をデコードし、同命令
    を実行するのに必要な各種デコード信号を出力する命令
    デコード手段であって、当該命令が後続の命令を指定命
    令数だけノー・オペレーション化する指定命令数ノー・
    オペレーション化命令の場合に、対応する特定デコード
    信号を出力する命令デコード手段と、 前記命令デコード手段から前記特定デコード信号が出力
    された場合、当該命令デコード手段によってデコードさ
    れている前記指定命令数ノー・オペレーション化命令の
    指定する命令数に相当するサイクルの期間中、その間に
    デコードされる後続の命令をノー・オペレーション命令
    として扱うためのノー・オペレーション化制御信号を前
    記命令デコード手段に出力する命令ノー・オペレーショ
    ン化手段とを具備し、前記命令デコード手段は、前記命
    令ノー・オペレーション化手段から前記ノー・オペレー
    ション化制御信号が出力されている期間、デコード対象
    となる命令を、その命令種別に無関係にノー・オペレー
    ション命令として扱うことを特徴とする演算処理装置。
  2. 【請求項2】前期記憶手段に、条件が成立したときのみ
    実行する命令群をノー・オペレーション化するための前
    記指定命令数ノー・オペレーション化命令を、この命令
    群の命令の直前に挿入して記憶しておき、当該ノー・オ
    ペレーション化命令が実行された場合には、当該ノー・
    オペレーション化命令で指定される数の命令がノーオペ
    レーション化されるようにしたことを特徴とする請求項
    1記載の演算処理装置。
  3. 【請求項3】命令群が記憶された記憶手段と、 前記記憶手段から取出された命令をデコードし、同命令
    を実行するのに必要な各種デコード信号を出力する命令
    デコード手段であって、当該命令が後続の命令を指定命
    令数だけノー・オペレーション化する指定命令数ノー・
    オペレーション化命令の場合には、対応する第1のデコ
    ード信号を出力し、当該命令が指定サイクル前の命令を
    取出す命令履歴取出し命令の場合には、対応する第2の
    デコード信号を出力する命令デコード手段と、 前記デコード手段によるデコードの対象となる命令を順
    次格納するためのバッファ手段と、 このバッファ手段における前記命令の格納先を順次切換
    え指定する書込みポインタ手段と、 前記命令デコード手段から前記第1のデコード信号が出
    力された場合、当該命令デコード手段によってデコード
    されている前記指定命令数ノー・オペレーション化命令
    の指定する命令数に相当するサイクルの期間中、その間
    にデコードされる後続の命令をノー・オペレーション命
    令として扱うためのノー・オペレーション化制御信号を
    前記命令デコード手段に出力する命令ノー・オペレーシ
    ョン化手段と、 前記命令デコード手段から前記第2のデコード信号が出
    力されている場合、当該命令デコード手段によってデコ
    ードされている前記命令履歴取出し命令の指定するサイ
    クル数と前記書込みポインタ手段の指す前記バッファ手
    段内位置をもとに、このバッファ手段から指定サイクル
    前の命令を取得する手段とを具備し、前記命令デコード
    手段は、前記命令ノー・オペレーション化手段から前記
    ノー・オペレーション化制御信号が出力されている期
    間、デコード対象となる命令を、その命令種別に無関係
    にノー・オペレーション命令として扱うことを特徴とす
    る演算処理装置。
  4. 【請求項4】命令群が記憶された記憶手段と、 前記記憶手段から取出された命令をデコードし、同命令
    を実行するのに必要な各種デコード信号を出力する命令
    デコード手段であって、当該命令が後続の命令を指定命
    令数だけノー・オペレーション化する指定命令数ノー・
    オペレーション化命令の場合には、対応する第1のデコ
    ード信号を出力し、当該命令が指定サイクル前の命令の
    アドレスを取出すアドレス履歴取出し命令の場合には、
    対応する第2のデコード信号を出力する命令デコード手
    段と、 前記デコード手段によるデコードの対象となる命令のア
    ドレスを順次格納するためのバッファ手段と、 このバッファ手段における前記アドレスの格納先を順次
    切換え指定する書込みポインタ手段と、 前記命令デコード手段から前記第1のデコード信号が出
    力された場合、当該命令デコード手段によってデコード
    されている前記指定命令数ノー・オペレーション化命令
    の指定する命令数に相当するサイクルの期間中、その間
    にデコードされる後続の命令をノー・オペレーション命
    令として扱うためのノー・オペレーション化制御信号を
    前記命令デコード手段に出力する命令ノー・オペレーシ
    ョン化手段と、 前記命令デコード手段から前記第2のデコード信号が出
    力されている場合、当該命令デコード手段によってデコ
    ードされている前記アドレス履歴取出し命令の指定する
    サイクル数と前記書込みポインタ手段の指す前記バッフ
    ァ手段内位置をもとに、このバッファ手段から指定サイ
    クル前の命令のアドレスを取得する手段とを具備し、前
    記命令デコード手段は、前記命令ノー・オペレーション
    化手段から前記ノー・オペレーション化制御信号が出力
    されている期間、デコード対象となる命令を、その命令
    種別に無関係にノー・オペレーション命令として扱うこ
    とを特徴とする演算処理装置。
  5. 【請求項5】命令群が記憶された記憶手段と、 前記記憶手段から取出された命令をデコードし、同命令
    を実行するのに必要な各種デコード信号を出力する命令
    デコード手段であって、当該命令が後続の命令を指定命
    令数だけノー・オペレーション化する指定命令数ノー・
    オペレーション化命令の場合には、対応する第1のデコ
    ード信号を出力し、当該命令が指定サイクル前の命令を
    取出す命令履歴取出し命令または指定サイクル前の命令
    のアドレスを取出すアドレス履歴取出し命令の場合に
    は、対応する第2のデコード信号を出力する命令デコー
    ド手段と、 前記デコード手段によるデコードの対象となる命令およ
    びそのアドレスを順次格納するためのバッファ手段と、 このバッファ手段における前記命令およびアドレスの格
    納先を順次切換え指定する書込みポインタ手段と、 前記命令デコード手段から前記第1のデコード信号が出
    力された場合、当該命令デコード手段によってデコード
    されている前記指定命令数ノー・オペレーション化命令
    の指定する命令数に相当するサイクルの期間中、その間
    にデコードされる後続の命令をノー・オペレーション命
    令として扱うためのノー・オペレーション化制御信号を
    前記命令デコード手段に出力する命令ノー・オペレーシ
    ョン化手段と、 前記命令デコード手段から前記第2のデコード信号が出
    力されている場合、当該命令デコード手段によってデコ
    ードされている前記命令履歴取出し命令またはアドレス
    履歴取出し命令の指定するサイクル数と前記書込みポイ
    ンタ手段の指す前記バッファ手段内位置をもとに、この
    バッファ手段から指定サイクル前の命令またはアドレス
    を取得する手段とを具備し、前記命令デコード手段は、
    前記命令ノー・オペレーション化手段から前記ノー・オ
    ペレーション化制御信号が出力されている期間、デコー
    ド対象となる命令を、その命令種別に無関係にノー・オ
    ペレーション命令として扱うことを特徴とする演算処理
    装置。
  6. 【請求項6】前期記憶手段に、前記指定命令数ノー・オ
    ペレーション命令、当該命令によりノー・オペレーショ
    ン化される命令部分に設定される即値データ、および取
    得したい即値データを命令と見なしてサイクル数を指定
    することで前記バッファ手段から取出すための前記命令
    履歴取出し命令を記憶しておき、当該命令履歴取出し命
    令が実行された場合に、当該命令履歴取出し命令の指定
    するサイクル前の前記即値データを前記バッファ手段か
    ら取得するようにしたことを特徴とする請求項3または
    請求項5記載の演算処理装置。
  7. 【請求項7】前期記憶手段に、前記指定命令数ノー・オ
    ペレーション命令、当該命令によりノー・オペレーショ
    ン化される命令部分に設定される手続き呼出しの引数、
    および取得したい引数を命令と見なしてサイクル数を指
    定することで前記バッファ手段から取出すための前記命
    令履歴取出し命令を記憶しておき、当該取出し命令が実
    行された場合に、当該取出し命令の指定するサイクル前
    の前記引数を前記バッファ手段から取得するようにした
    ことを特徴とする請求項3または請求項5記載の演算処
    理装置。
  8. 【請求項8】前期記憶手段内の、実行開始サイクルより
    Nサイクル後にエラートラップの発生する可能性のある
    命令が実際にエラートラップした場合の飛び先に、サイ
    クル数N+1を指定する前記アドレス履歴取出し命令を
    記憶しておき、当該取出し命令が実行された場合に、当
    該取出し命令の指定するサイクル前の前記エラートラッ
    プした命令のアドレスを前記バッファ手段から取得する
    ようにしたことを特徴とする請求項4または請求項5記
    載の演算処理装置。
  9. 【請求項9】前記記憶手段内の、手続き呼出し命令の飛
    び先に、サイクル数1を指定する前記アドレス履歴取出
    し命令を記憶しておき、当該取出し命令が実行された場
    合に、当該取出し命令の指定するサイクル前の前記手続
    き命令のアドレスを前記バッファ手段から取得し、その
    アドレスの次のアドレスを戻りアドレスとして取得する
    ことを特徴とする請求項4または請求項5記載の演算処
    理装置。
JP31787693A 1993-12-17 1993-12-17 演算処理装置 Expired - Fee Related JP3335735B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31787693A JP3335735B2 (ja) 1993-12-17 1993-12-17 演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31787693A JP3335735B2 (ja) 1993-12-17 1993-12-17 演算処理装置

Publications (2)

Publication Number Publication Date
JPH07175650A true JPH07175650A (ja) 1995-07-14
JP3335735B2 JP3335735B2 (ja) 2002-10-21

Family

ID=18093049

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31787693A Expired - Fee Related JP3335735B2 (ja) 1993-12-17 1993-12-17 演算処理装置

Country Status (1)

Country Link
JP (1) JP3335735B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6842852B1 (en) 1999-02-08 2005-01-11 Matsushita Electric Industrial Co., Ltd. System and method for controlling conditional branching utilizing a control instruction having a reduced word length
JP2006202265A (ja) * 2004-12-21 2006-08-03 Denso Corp マイクロコンピュータ
JP2008299790A (ja) * 2007-06-04 2008-12-11 Digital Electronics Corp マイクロプロセッサ

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6842852B1 (en) 1999-02-08 2005-01-11 Matsushita Electric Industrial Co., Ltd. System and method for controlling conditional branching utilizing a control instruction having a reduced word length
JP2006202265A (ja) * 2004-12-21 2006-08-03 Denso Corp マイクロコンピュータ
JP4702004B2 (ja) * 2004-12-21 2011-06-15 株式会社デンソー マイクロコンピュータ
JP2008299790A (ja) * 2007-06-04 2008-12-11 Digital Electronics Corp マイクロプロセッサ

Also Published As

Publication number Publication date
JP3335735B2 (ja) 2002-10-21

Similar Documents

Publication Publication Date Title
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
JP2810068B2 (ja) プロセッサシステム、コンピュータシステム及び命令処理方法
US5357617A (en) Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
KR950003552B1 (ko) 프로그램 가능한 제어기
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
EP0227117A2 (en) Program skip operation control system
KR100570906B1 (ko) 데이터처리기에서조건부분기실행을제어하기위한장치및방법
JP3335735B2 (ja) 演算処理装置
US6266764B1 (en) Program controller for switching between first program and second program
US6996702B2 (en) Processing unit with cross-coupled ALUs/accumulators and input data feedback structure including constant generator and bypass to reduce memory contention
JPH0793151A (ja) 命令供給装置
JP2772100B2 (ja) 並列命令フェッチ機構
JP2591325B2 (ja) 分岐制御装置
JP2534674B2 (ja) 情報処理装置
US20100153688A1 (en) Apparatus and method for data process
JP3493110B2 (ja) 高速分岐処理装置
JPH05224925A (ja) 命令先取り方式
JPS6411973B2 (ja)
JP2825315B2 (ja) 情報処理装置
KR100515039B1 (ko) 조건부 명령어를 고려한 파이프라인 상태 표시 회로
JP3060917B2 (ja) プロセッサ
KR20020085878A (ko) 파이프라인 아이텍춰를 갖는 프로세서에서 조건 점프명령을 처리하기 위한 방법 및 장치
JPH11327929A (ja) プログラム制御装置
JP2005134987A (ja) パイプライン演算処理装置
JPS6353644A (ja) 命令制御装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070802

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080802

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees