JP3335735B2 - Arithmetic processing unit - Google Patents
Arithmetic processing unitInfo
- Publication number
- JP3335735B2 JP3335735B2 JP31787693A JP31787693A JP3335735B2 JP 3335735 B2 JP3335735 B2 JP 3335735B2 JP 31787693 A JP31787693 A JP 31787693A JP 31787693 A JP31787693 A JP 31787693A JP 3335735 B2 JP3335735 B2 JP 3335735B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- instructions
- specified
- 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.)
- Expired - Fee Related
Links
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
【0001】[0001]
【産業上の利用分野】この発明は、後続の命令を指定命
令数だけnop(ノー・オペレーション)化する専用命
令を含む命令列を実行する演算処理装置に関する。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an arithmetic processing unit for executing an instruction sequence including a dedicated instruction for converting subsequent instructions into nops (no operation) by a specified number of instructions.
【0002】[0002]
【従来の技術】一般に、演算処理装置で条件処理(条件
分岐処理)を実行可能とするためには、分岐先の命令に
ラベルを付けておくのが一般的である。このような条件
処理のための命令列について、図8を参照して説明す
る。2. Description of the Related Art Generally, in order to enable conditional processing (conditional branch processing) to be executed by an arithmetic processing unit, it is general to label a branch destination instruction. An instruction sequence for such condition processing will be described with reference to FIG.
【0003】まず、図8(a)は、nの値により異なる
命令処理を実行するためのソースコードの一例を示すも
ので、n=0のときは命令#1を、n=1のときは命令
#2を、そしてn=2のときは命令#3をそれぞれ実行
して、例えば共通の命令処理に進む条件処理を指定して
いる。ここでの条件処理は、例えばエラー要因n(0〜
2)によって、その要因n(0〜2)別にトラップを発
生させる命令#1〜#3に分岐する場合であるものとす
る。First, FIG. 8A shows an example of a source code for executing a different instruction process depending on the value of n. When n = 0, the instruction # 1 is executed, and when n = 1, the instruction # 1 is executed. The instruction # 2 is executed, and when n = 2, the instruction # 3 is executed to designate, for example, a condition process to proceed to a common instruction process. The condition processing here is, for example, an error factor n (0 to 0).
It is assumed that 2) branches to instructions # 1 to # 3 for generating a trap for each of the factors n (0 to 2).
【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の命令に無
条件でジャンプするジャンプ命令である。[0004] In order to enable conditional processing specified by a source code as shown in FIG. 8A to be executed by an arithmetic processing unit, the source code is compiled to create an object code (load module). There is a need to. Conventionally, since conditional processing is realized by a combination of a conditional branch instruction and a branch destination instruction, the source code shown in FIG. 8A is generally compiled as shown in FIG. 8B. It is a target. SUB (n-0), SUB in the figure
(N-1) and SUB (n-2) are (n-
0), (n-1), and (n-2) subtraction instructions (SUB instructions), JNZ (L1), JNZ (L2),
JNZ (L3) is a conditional branch instruction that indicates that a jump to an instruction (branch destination instruction) with labels L1, L2, and L3 is to be performed when the operation result of the preceding instruction (SUB instruction) is not zero. L100) is a jump instruction that unconditionally jumps to the instruction of L100.
【0005】このように、従来の演算処理装置で条件処
理を実現するには、分岐先の命令にラベルを付けておか
ねばならず、レジスタを用いた分岐先アドレスの計算等
が必要となる他、条件(上記の例ではnの値)が複数の
場合には、別々に条件判定を行うことから、命令数が増
加するといった問題があった。As described above, in order to realize conditional processing in a conventional arithmetic processing unit, it is necessary to label a branch destination instruction, and it is necessary to calculate a branch destination address using a register. In the case where there are a plurality of conditions (the value of n in the above example), the number of instructions increases because the condition determination is performed separately.
【0006】また、エラー処理の自動化を行うためのエ
ラー情報解析処理などにおいては、指定サイクル前の実
行命令を知りたい場合が発生する。ところが従来の演算
処理装置では、途中に条件処理が存在すると目的の命令
を見つけることは不可能であり、人がロードモジュール
をたどって見つけなければならなかった。[0006] In error information analysis processing for automating error processing, there is a case where it is desired to know an execution instruction before a designated cycle. However, in a conventional arithmetic processing device, if a condition process exists in the middle, it is impossible to find a target instruction, and a person has to find the load module by following the load instruction.
【0007】また従来は、即値データ(即値オペランド
データ)や引数は、レジスタからのデータロードにより
得る必要があった。更に、戻りアドレスをリンクレジス
タに設定しておく必要があった。In the past, immediate data (immediate operand data) and arguments had to be obtained by loading data from registers. Further, the return address has to be set in the link register.
【0008】[0008]
【発明が解決しようとする課題】上記したように従来の
演算処理装置では、条件処理を実現するのに、分岐先の
命令にラベルを付けておかねばならず、レジスタを用い
た分岐先アドレスの計算等が必要となる他、命令数が増
加するといった問題があった。As described above, in the conventional arithmetic processing unit, in order to realize conditional processing, a label of a branch destination instruction must be attached, and a branch destination address using a register is used. In addition to the necessity of calculation, there is a problem that the number of instructions increases.
【0009】また、指定サイクル前の実行命令を見つけ
るには、人がロードモジュールをたどらなければならな
いという問題もあった。また、レジスタからのデータロ
ードによるメモリのオーバヘッドやレジスタを使用する
ことによるレジスタ増に伴うコストの増加を招くという
問題もあった。There is another problem that a person must follow a load module to find an execution instruction before a designated cycle. In addition, there is a problem that the overhead of the memory due to the data loading from the register and the increase in the cost due to the use of the register increase the number of the register.
【0010】この発明は上記事情を考慮してなされたも
のでその目的は、分岐なしの条件処理が実現でき、もっ
てレジスタを用いた分岐アドレスの計算等を不要とする
他、命令数を削減できる演算処理装置を提供することに
ある。The present invention has been made in view of the above circumstances, and an object thereof is to realize conditional processing without branching, thereby making it unnecessary to calculate a branch address using a register and reducing the number of instructions. An object of the present invention is to provide an arithmetic processing device.
【0011】この発明の他の目的は、指定サイクル前の
命令またはアドレスの少なくとも一方が簡単に取得でき
る演算処理装置を提供することにある。この発明の更に
他の目的は、即値データの取出しや引数の受け渡しがレ
ジスタからのロードを必要とせずに簡単に行える演算処
理装置を提供することにある。この発明の更に他の目的
は、手続き呼出し時の戻りアドレスが、リンクレジスタ
への設定操作を必要とせずに取得できる演算処理装置を
提供することにある。Another object of the present invention is to provide an arithmetic processing unit capable of easily acquiring at least one of an instruction and an address before a designated cycle. It is still another object of the present invention to provide an arithmetic processing device in which immediate data can be fetched and arguments can be transferred easily without requiring loading from a register. Still another object of the present invention is to provide an arithmetic processing unit capable of acquiring a return address at the time of calling a procedure without requiring a setting operation to a link register.
【0012】[0012]
【課題を解決するための手段および作用】この発明は、
命令デコード手段によりデコードされている命令が後続
の命令を指定命令数だけノー・オペレーション(no
p)化する指定命令数ノー・オペレーション化命令(S
KIP(N)命令)の場合に、当該命令デコード手段か
ら特定デコード信号(第1のデコード信号)が出力され
る構成とすると共に、当該命令デコード手段から特定デ
コード信号(第1のデコード信号)が出力された場合、
当該命令デコード手段によってデコードされているSK
IP(N)命令の指定する命令数Nに相当するNサイク
ルの期間中、その間にデコードされる後続の命令をno
p命令として扱うためのnop化制御信号を命令デコー
ド手段に出力する命令nop化手段(命令ノー・オペレ
ーション化手段)を設けたことを特徴とするものであ
る。SUMMARY OF THE INVENTION The present invention provides
The instruction decoded by the instruction decoding means replaces the subsequent instruction by the specified number of operations with no operation (no
p) Number of designated instructions to be converted No operation conversion instructions (S
In the case of a KIP (N) instruction), a specific decode signal (first decode signal) is output from the instruction decode means, and a specific decode signal (first decode signal) is output from the instruction decode means. If output,
SK being decoded by the instruction decoding means
During a period of N cycles corresponding to the number N of instructions specified by the IP (N) instruction, a subsequent instruction decoded during the period is no.
An instruction nopling means (instruction no operation means) for outputting a nop control signal for handling as a p instruction to the instruction decoding means is provided.
【0013】このような構成においては、命令デコード
手段および命令nop化手段の組合せ動作により、SK
IP(N)命令で指定された飛ばしたい個数だけ後続の
命令がnop化されるため、分岐なしで条件処理を実現
することが可能となる。In such a configuration, the combination of the instruction decoding means and the instruction nop means makes the SK
Since no more instructions are skipped by the number of instructions specified by the IP (N) instruction to be skipped, conditional processing can be realized without branching.
【0014】また、この発明は、上記命令デコード手段
によりデコードされる命令およびそのアドレスを順次格
納するためのバッファ手段と、このバッファ手段におけ
る上記命令およびアドレスの格納先を順次切換え指定す
る書込みポインタ手段とを更に設ける他、上記命令デコ
ード手段によりデコードされている命令が、指定サイク
ル前の命令を取出す命令履歴取出し命令(GETI
(i,r)命令)または指定サイクル前の命令のアドレ
スを取出すアドレス履歴取出し命令(GETA(i,
r)命令)の場合には、当該命令デコード手段から第2
のデコード信号が出力される構成とし、この第2のデコ
ード信号が出力されている場合、命令デコード手段によ
ってデコードされているGETI(i,r)命令または
GETA(i,r)命令の指定するサイクル数iと書込
みポインタ手段の指すバッファ手段内位置をもとに、こ
のバッファ手段からiサイクル前の命令またはアドレス
を取得するようにしたことを特徴とする。Further, the present invention provides a buffer means for sequentially storing an instruction decoded by the instruction decoding means and its address, and a write pointer means for sequentially switching and specifying the storage destination of the instruction and address in the buffer means. And the instruction decoded by the instruction decoding means is an instruction history fetch instruction (GETI
(I, r) instruction) or an address history fetch instruction (GETA (i, r,
r) instruction), the instruction decoding means
When the second decode signal is output, the cycle specified by the GETI (i, r) instruction or the GETA (i, r) instruction decoded by the instruction decode means is provided. On the basis of the number i and the position in the buffer means indicated by the write pointer means, an instruction or an address i cycles before is obtained from the buffer means.
【0015】このような構成においては、命令デコード
手段によりデコードされる命令およびそのアドレスがバ
ッファ手段に順次格納される。そして、命令デコード手
段によりGETI(i,r)またはGETA(i,r)
命令がデコードされた場合には、バッファ手段に格納さ
れている情報のうち、GETI(i,r)またはGET
A(i,r)命令中のiフィールドの指定するサイクル
(iサイクル)前の命令またはそのアドレスが、例えば
GETI(i,r)またはGETA(i,r)命令中の
rフィールドの指定するレジスタファイル内レジスタに
取出される。In such a configuration, instructions decoded by the instruction decoding means and their addresses are sequentially stored in the buffer means. Then, the GETI (i, r) or GETA (i, r) is obtained by the instruction decoding means.
When the instruction is decoded, the information stored in the buffer means may be GETI (i, r) or GET.
The instruction before the cycle (i cycle) specified by the i field in the A (i, r) instruction or its address is, for example, the register specified by the r field in the GETI (i, r) or GETA (i, r) instruction. Fetched into register in file.
【0016】したがって、履歴を取得したい命令よりi
サイクル後に実行される位置にGETI(i,r)命令
を用意しておくことで、当該命令GETI(i,r)命
令が実行された場合には、当該GETI(i,r)命令
中のiフィールドの値で指定されたiサイクル前の命令
を命令履歴として、例えば当該GETI(i,r)命令
中のrフィールドの指定するレジスタファイル内レジス
タに取出すことが可能となる。Therefore, the instruction for which the history is to be obtained is i
By preparing a GETI (i, r) instruction at a position to be executed after the cycle, if the instruction GETI (i, r) instruction is executed, i in the GETI (i, r) instruction is executed. It is possible to take out, as an instruction history, the instruction i cycles before specified by the value of the field, for example, to a register in the register file specified by the r field in the GETI (i, r) instruction.
【0017】同様に、SKIP(N)命令によりnop
化される命令部分に、即値データ(即値オペランドデー
タ)または手続き呼出しの固定引数を設定しておき、更
にその後にGETI(i,r)命令を用意して、これら
を実行させることにより、バッファ手段に格納されてい
る情報のうち、当該GETI(i,r)命令中のiフィ
ールドの値でiサイクル前の命令として指定された即値
データまたは固定引数を、例えば当該GETI(i,
r)命令中のrフィールドの指定するレジスタファイル
内レジスタに取出すことが可能となる。Similarly, the SKIP (N) instruction causes nop
Immediate data (immediate operand data) or a fixed argument of a procedure call are set in the instruction part to be converted, and a GETI (i, r) instruction is prepared after that, and these instructions are executed to execute the buffer means. Among the information stored in the GETI (i, r) instruction, the immediate data or the fixed argument specified as the instruction i cycles before by the value of the i field in the GETI (i, r) instruction is, for example,
r) It is possible to take out to the register in the register file specified by the r field in the instruction.
【0018】同様に、実行開始サイクルよりNサイクル
後にエラートラップの発生する可能性のある命令(対象
命令)が実際にエラートラップした場合の飛び先に、サ
イクル数N+1、即ちi=N+1を指定するGETA
(i,r)命令を用意しておくことで、上記対象命令が
エラートラップして当該GETA(i,r)命令に実行
が移った場合に、バッファ手段に格納されている情報の
うち、当該GETA(i,r)命令中のiフィールドの
値で指定されたN+1サイクル前の命令のアドレス、即
ち上記対象命令のアドレスをエラー発生命令のアドレス
として、例えば当該GETA(i,r)命令中のrフィ
ールドの指定するレジスタファイル内レジスタに取出す
ことが可能となる。Similarly, the number of cycles N + 1, ie, i = N + 1, is specified as a jump destination when an instruction (target instruction) in which an error trap is likely to occur after N cycles from the execution start cycle actually traps the error. GETA
By preparing the (i, r) instruction, when the target instruction is subjected to an error trap and the execution is shifted to the GETA (i, r) instruction, the information stored in the buffer means is replaced with the corresponding instruction. The address of the instruction N + 1 cycles before specified by the value of the i field in the GETA (i, r) instruction, that is, the address of the target instruction, is used as the address of the error-occurring instruction, for example, in the GETA (i, r) instruction. It becomes possible to take out to the register in the register file specified by the r field.
【0019】同様に、手続き呼出し命令の飛び先に、サ
イクル数1を指定するGETA(i,r)命令を用意し
ておくことで、当該GETA(i,r)が呼出された場
合に、バッファ手段に格納されている情報のうち、当該
GETA(i,r)命令中のiフィールドの値で指定さ
れた1サイクル前の命令のアドレス、即ち上記手続き呼
出し命令のアドレスを、戻りアドレスの1つ前のアドレ
スとして、例えば当該GETA(i,r)命令中のrフ
ィールドの指定するレジスタファイル内レジスタに取出
すことが可能となる。Similarly, by preparing a GETA (i, r) instruction designating a cycle number 1 at a jump destination of a procedure call instruction, a buffer is provided when the GETA (i, r) is called. Among the information stored in the means, the address of the instruction one cycle before specified by the value of the i field in the GETA (i, r) instruction, that is, the address of the procedure call instruction, is set as one of the return addresses. As the previous address, for example, it is possible to take out to the register in the register file specified by the r field in the GETA (i, r) instruction.
【0020】[0020]
【実施例】以下、この発明をパイプライン制御方式の演
算処理装置に適用した一実施例につき、図面を参照して
説明する。図1は同実施例に係る演算処理装置の主要部
の構成を示すブロック図である。DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS An embodiment in which the present invention is applied to an arithmetic processing unit of a pipeline control system will be described below with reference to the drawings. FIG. 1 is a block diagram illustrating a configuration of a main part of the arithmetic processing device according to the embodiment.
【0021】同図において、1は後述する主メモリ10
に格納されている命令群の一部の写しが置かれる命令キ
ャッシュである。この命令キャッシュ1に実行すべき主
メモリ10上の命令が存在しないミスヒット時には、当
該命令が主メモリ10から命令キャッシュ1に読込まれ
て使用される。なお、命令キャッシュ1は、命令取出し
の高速化のために設けられるもので、必ずしも必要では
ない。In FIG. 1, reference numeral 1 denotes a main memory 10 to be described later.
Is an instruction cache in which a copy of a part of the instruction group stored in the instruction cache is stored. At the time of a mishit when there is no instruction on the main memory 10 to be executed in the instruction cache 1, the instruction is read from the main memory 10 into the instruction cache 1 and used. The instruction cache 1 is provided for speeding up instruction fetch, and is not always necessary.
【0022】2は命令キャッシュ1から取出された(フ
ェッチされた)命令が保持される命令レジスタである。
ここで、本実施例で適用される新規な命令について図2
を参照して説明する。An instruction register 2 holds an instruction fetched (fetched) from the instruction cache 1.
Here, a new instruction applied in this embodiment is shown in FIG.
This will be described with reference to FIG.
【0023】この新規な命令は、指定命令数nop化命
令、命令履歴取出し命令およびアドレス履歴取出し命令
の3種である。まず、指定命令数nop化命令は、後続
の命令を指定命令数だけnop化することを指定するも
ので、図2(a)に示すように指定命令数nop化命令
であることを示すOPコード・フィールド(オペレーシ
ョン・コード・フィールド)、およびnop化する命令
数Nを指定するフィールド(Nフィールド)とを有す
る。この指定命令数nop化命令をSKIPまたはSK
IP(N)のように表現する。The new instructions are of three types: a designated number of instructions nop instruction, an instruction history fetch instruction, and an address history fetch instruction. First, the designated instruction number nop instruction designates that the subsequent instruction is to be nop by the designated instruction number, and as shown in FIG. 2A, an OP code indicating that the instruction is the designated instruction number nop instruction A field (operation code field), and a field (N field) for specifying the number N of instructions to be converted into nops. SKIP or SK
Expressed as IP (N).
【0024】次に命令履歴取出し命令は、指定サイクル
前の命令を後述する循環バッファ41から取出すことを
指定するもので、図2(b)に示すように、命令履歴取
出し命令であることを示すOPコード・フィールド、取
出した命令の格納先レジスタを指定するレジスタ(デス
ティネーション・レジスタ)指定フィールド(rフィー
ルド)、および指定サイクル数iが設定される指定サイ
クル数フィールド(iフィールド)を有する。この命令
履歴取出し命令をGETIまたはGETI(i,r)の
ように表現する。なお、上記iフィールドの位置および
サイズは、指定命令数nop化命令(SKIP(N)命
令)のNフィールドのそれに一致する。Next, the instruction history fetch instruction specifies that the instruction before the designated cycle is to be fetched from the circular buffer 41, which will be described later. As shown in FIG. 2B, the instruction history fetch instruction is an instruction history fetch instruction. It has an OP code field, a register (destination register) designating field (r field) for designating a storage destination register of a fetched instruction, and a designated cycle number field (i field) in which a designated cycle number i is set. This instruction history retrieval instruction is expressed as GETI or GETI (i, r). The position and the size of the i-field match those of the N-field of the designated instruction number nop instruction (SKIP (N) instruction).
【0025】次にアドレス履歴取出し命令は、指定サイ
クル前のアドレスを循環バッファ41から取出すことを
指定するもので、命令履歴取出し命令と同様の形式であ
り、図2(c)に示すように、アドレス履歴取出し命令
であることを示すOPコード・フィールド、取出したア
ドレスの格納先レジスタを指定するレジスタ(デスティ
ネーション・レジスタ)指定フィールド(rフィール
ド)、および指定サイクル数iが設定される指定サイク
ル数フィールド(iフィールド)を有する。このアドレ
ス履歴取出し命令をGETAまたはGETA(i,r)
のように表現する。Next, the address history fetch instruction specifies that the address before the designated cycle is fetched from the circular buffer 41, and has the same format as that of the instruction history fetch instruction. As shown in FIG. An OP code field indicating that the instruction is an address history fetch instruction, a register (destination register) designating field (r field) designating a storage destination register of the fetched address, and a designated cycle number in which a designated cycle number i is set Field (i-field). This address history fetch instruction is sent to GETA or GETA (i, r)
Express as:
【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”である。この逆としても構わないこ
とは勿論である。GETI (i, r) instruction and GETA
For example, the least significant bit of the OP code field of the (i, r) instruction is positioned as an I / A bit. G
The difference between ETI (i, r) and GETA (i, r) is that the value of this I / A bit is different.
r) I / A bit is “1” and GETA (i, r) I / A bit
The / A bit is "0". Of course, the reverse is also acceptable.
【0027】再び図1を参照すると、3は(命令キャッ
シュ1から)命令レジスタ2にフェッチされる命令の
(主メモリ10上の)アドレスを指定するプログラムカ
ウンタ(PC)である。プログラムカウンタ3は、各命
令フェッチサイクル毎に、インクリメントされる。但
し、ジャンプ等が発生した場合には、プログラムカウン
タ3の内容は、ジャンプ先のアドレスに更新される。Referring again to FIG. 1, reference numeral 3 denotes a program counter (PC) for specifying the address (on the main memory 10) of the instruction fetched into the instruction register 2 (from the instruction cache 1). The program counter 3 is incremented for each instruction fetch cycle. However, when a jump or the like occurs, the content of the program counter 3 is updated to the jump destination address.
【0028】4は命令キャッシュ1から命令レジスタ2
に取出された命令と、その際のプログラムカウンタ3の
値(アドレス)の対を、各命令フェッチサイクル毎に順
次保持するためのバッファ機構である。Reference numeral 4 denotes an instruction register 2 from the instruction cache 1.
Is a buffer mechanism for sequentially holding a pair of the instruction fetched in the instruction counter and the value (address) of the program counter 3 at that time for each instruction fetch cycle.
【0029】バッファ機構4は、各エントリがサイクリ
ックに使用されるバッファ(循環バッファ)41、この
循環バッファ41内の命令・アドレスの書込み先エント
リを指す書込み先ポインタ(WP)42、および加算器
(ADD)43を有している。加算器43は、後述する
命令デコーダ8によりデコードされている命令がGET
I(i,r)命令またはGETA(i,r)命令の場合
に、その命令中のiフィールドの示すサイクル数と書込
み先ポインタ42の示す値との加算を行い、循環バッフ
ァ41内の読出し対象エントリの情報(読出しポインタ
情報)を生成するのに用いられる。The buffer mechanism 4 includes a buffer (circular buffer) 41 in which each entry is used cyclically, a write-destination pointer (WP) 42 pointing to a write-destination entry of an instruction / address in the circular buffer 41, and an adder. (ADD) 43. The adder 43 outputs the instruction decoded by the instruction decoder 8 described later to GET.
In the case of the I (i, r) instruction or the GETA (i, r) instruction, the number of cycles indicated by the i field in the instruction and the value indicated by the write destination pointer 42 are added, and the read target in the circular buffer 41 is added. It is used to generate entry information (read pointer information).
【0030】5はバッファ機構4内の循環バッファ41
から読出される命令およびアドレスのうちのいずれか一
方を命令デコーダ8によりデコードされている命令のO
Pコード・フィールド中の最下位ビット(同命令がGE
TI(i,r)命令またはGETA(i,r)命令の場
合にはI/Aビット)に応じて選択するセレクタ、6は
セレクタ5の出力情報および通常のレジスタ書込みデー
タのうちの一方を後述する選択制御信号82に応じて選
択するセレクタ、7はレジスタ群からなるレジスタファ
イルである。レジスタファイル7は、セレクタ6の出力
情報を保持するのに用いられる。Reference numeral 5 denotes a circulating buffer 41 in the buffer mechanism 4.
Either of the instruction and the address read from the
Least significant bit in P code field (the same instruction is GE
A selector to be selected according to a TI (i, r) instruction or a GETA (i, r) instruction in the case of an I / A bit). The selector 7, which is selected in accordance with the selected control signal 82, is a register file including a register group. The register file 7 is used to hold output information of the selector 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命令として扱う。8 is the O of the instruction held in the instruction register 2.
An instruction decoder that decodes a P-code field and outputs various decode signals (control signals) for controlling each unit. When the content of the OP code field indicates the SKIP (N) instruction, the instruction decoder 8 converts the value of the N field (the number of designated instructions) in the instruction into an instruction n described later.
The set signal 81 for setting in the op mechanism 9 is output, and the GETI (i, r) instruction or GETA (i, r)
In the case of an instruction, the selection control signal 82
Is configured to be output. Instruction decoder 8
Is a command nop control signal 91 from the command nop mechanism 9
During the period when is output, the instruction to be decoded is handled as a nop instruction regardless of the instruction type.
【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を出力するゲート回路(いずれも
図示せず)により構成される。Reference numeral 9 denotes an instruction nop conversion mechanism. This instruction n
When the set signal 81 is output from the instruction decoder 8, the op-converting mechanism 9 internally sets the value N of the N field in the SKIP (N) instruction decoded by the instruction decoder 8, and The instruction nop conversion control signal 91 is output only during the period of the indicated cycle (the period of N cycles).
The instruction nop conversion mechanism 9 presets the value N of the N field in the SKIP (N) instruction to be decoded by the instruction decoder 8 according to the set signal 81, for example, until the value becomes “0”. It comprises a counter that counts down according to the clock CLK of the pipeline cycle, and a gate circuit (neither is shown) that outputs an active instruction nop control signal 91 while the value of the counter is not “0”. You.
【0033】10は命令列からなる各種プログラム、デ
ータ等が格納される主メモリである。次に、図1の構成
の基本動作について、図3のフローチャート、および図
4乃至図7の基本動作説明図を参照して説明する。Reference numeral 10 denotes a main memory for storing various programs, data, and the like consisting of an instruction sequence. Next, the basic operation of the configuration of FIG. 1 will be described with reference to the flowchart of FIG. 3 and the basic operation explanatory diagrams of FIGS.
【0034】まず、プログラムカウンタ3の指定するア
ドレスの命令が命令キャッシュ1から取出され、命令レ
ジスタ2に読込まれたものとする。同時に、バッファ機
構4内の書込み先ポインタ42が次の循環バッファ41
内エントリを指すように更新され、命令キャッシュ1か
ら取出された命令とプログラムカウンタ3の指定するア
ドレスの対が、当該更新後の書込み先ポインタ42の指
定する循環バッファ41内エントリに書込まれる(記録
される)(ステップS1)。これにより、書込み先ポイ
ンタ42は、命令レジスタ2にフェッチされた命令とそ
のアドレスを示すことになる。First, it is assumed that the instruction at the address specified by the program counter 3 is fetched from the instruction cache 1 and read into the instruction register 2. At the same time, the write destination pointer 42 in the buffer mechanism 4
The pair of the instruction fetched from the instruction cache 1 and the address specified by the program counter 3 is written to the entry in the circular buffer 41 specified by the updated write-destination pointer 42 (to indicate the internal entry) ( (Recorded) (step S1). As a result, the write destination pointer 42 indicates the instruction fetched into the instruction register 2 and its address.
【0035】この様子を、命令キャッシュ1から命令レ
ジスタ2にフェッチされた命令が、主メモリ10上のア
ドレス“1000”のADD(加算)命令(ここではA
+Bを指定するADD命令)である場合を例に、図4に
示す。In this state, the instruction fetched from the instruction cache 1 to the instruction register 2 is an ADD (addition) instruction at the address “1000” on the main memory 10 (here, A
FIG. 4 shows an example of the case of (+ instruction specifying + B).
【0036】なお、書込み先ポインタ42は、循環バッ
ファ41内エントリのアドレスが小さくなる方向に更新
(デクリメント)されるものとする。また、書込み先ポ
インタ42の値が「0」の状態で更新された場合、同ポ
インタ42の更新後の値はエントリアドレスの最大値を
指すものとする。It is assumed that the write destination pointer 42 is updated (decremented) so that the address of the entry in the circular buffer 41 becomes smaller. When the value of the write destination pointer 42 is updated in a state of “0”, the updated value of the pointer 42 indicates the maximum value of the entry address.
【0037】命令レジスタ2にフェッチされた命令は、
命令デコーダ8に導かれる。命令デコーダ8は、この命
令のOPコード・フィールドの内容をデコードし、対応
するデコード信号を出力する。The instruction fetched into the instruction register 2 is
It is led to the instruction decoder 8. Instruction decoder 8 decodes the contents of the OP code field of this instruction and outputs a corresponding decode signal.
【0038】ここで、命令デコーダ8によりデコードさ
れている命令が指定命令数nop化命令、即ちSKIP
(N)命令の場合について説明する。この場合、命令デ
コーダ8からセット信号81が出力される。このセット
信号81は、命令デコーダ8によりデコードされている
SKIP(N)中のNフィールドの値と共に命令nop
化機構9に導かれる。Here, the instruction decoded by the instruction decoder 8 is a designated instruction number nop instruction, ie, SKIP
The case of the (N) instruction will be described. In this case, the set signal 81 is output from the instruction decoder 8. The set signal 81 is supplied to the instruction nop together with the value of the N field in SKIP (N) decoded by the instruction decoder 8.
To the conversion mechanism 9.
【0039】すると命令nop化機構9は、命令デコー
ダ8によりデコードされているSKIP(N)中のNフ
ィールドの値「N」を、セット信号81に応じて内部設
定し、その値の示すサイクルの期間(Nサイクルの期
間)だけ、アクティブな命令nop化制御信号91を出
力する。Then, the instruction nop conversion mechanism 9 internally sets the value “N” of the N field in the SKIP (N) decoded by the instruction decoder 8 in accordance with the set signal 81, and sets the value in the cycle indicated by the value. An active instruction nop control signal 91 is output only during the period (N cycle period).
【0040】命令nop化機構9からの命令nop化制
御信号91は命令デコーダ8に導かれる。すると命令デ
コーダ8は、命令nop化制御信号91がアクティブな
期間(Nサイクルの期間)、命令レジスタ2を介して導
かれる後続のN命令を、その命令種別に無関係にnop
命令として扱う。The instruction nop control signal 91 from the instruction nop conversion mechanism 9 is guided to the instruction decoder 8. Then, while the instruction nop control signal 91 is active (the period of N cycles), the instruction decoder 8 converts the next N instructions guided through the instruction register 2 into a nop regardless of the instruction type.
Treat as an instruction.
【0041】このように、図1の構成の演算処理装置で
は、命令デコーダ8にてデコードされている命令がSK
IP(N)命令である場合(ステップS2)、後続のN
命令がnop化される(ステップS3)。As described above, in the arithmetic processing unit having the configuration of FIG. 1, the instruction decoded by the instruction decoder 8 is SK
If it is an IP (N) instruction (step S2), the subsequent N
The instruction is converted to nop (step S3).
【0042】したがって、主メモリ10上の或るアドレ
スに例えばN=2のSKIP(N)命令、即ちSKIP
(2)命令が存在する場合には、図5に示すように、S
KIP(2)命令に続く2つの命令がnop化されるこ
とになる。Therefore, for example, a SKIP (N) instruction of N = 2, ie, SKIP
(2) If there is an instruction, as shown in FIG.
Two instructions following the KIP (2) instruction will be noped.
【0043】次に、命令デコーダ8によりデコードされ
ている命令が命令履歴取出し命令、即ちGETI(i,
r)命令の場合について説明する。この場合、命令デコ
ーダ8によりデコードされているGETI(i,r)命
令中のiフィールドの値「i」と、その時点の書込み先
ポインタ42の値とが、加算器43により加算される。
そして、加算器43の加算結果(である読出しポインタ
情報)の指定する循環バッファ41内エントリに記録さ
れている命令およびアドレスの対、即ち現在書込み先ポ
インタ42の指定しているエントリ中の命令に対してi
サイクル前の命令およびアドレスの対が、同バッファ4
1から読出される。Next, the instruction decoded by the instruction decoder 8 is an instruction history fetch instruction, that is, GETI (i,
r) Instruction case will be described. In this case, the value “i” of the i field in the GETI (i, r) instruction decoded by the instruction decoder 8 and the value of the write destination pointer 42 at that time are added by the adder 43.
The instruction and address pair recorded in the entry in the circular buffer 41 specified by the addition result (the read pointer information which is the adder 43), that is, the instruction in the entry specified by the current write destination pointer 42 For i
The instruction and address pair before the cycle are stored in the same buffer 4
Read from 1.
【0044】循環バッファ41から読出された命令およ
びアドレスはセレクタ5に導かれる。このセレクタ5に
は、命令デコーダ8によりデコードされているGETI
(i,r)命令のOPコード・フィールド中のI/Aビ
ットも(選択制御信号として)導かれる。このI/Aビ
ットの値は、GETI(i,r)命令では“1”であ
る。The instruction and address read from the circular buffer 41 are guided to the selector 5. The selector 5 includes the GETI decoded by the instruction decoder 8.
The I / A bit in the OP code field of the (i, r) instruction is also derived (as a selection control signal). The value of this I / A bit is "1" in the GETI (i, r) instruction.
【0045】セレクタ5は、この例のようにI/A=1
の場合、循環バッファ41から読出された命令およびア
ドレスのうちの命令をセレクタ6に選択出力する。一
方、命令デコーダ8は、デコード対象となっている命令
がこの例のようにGETI(i,r)命令の場合、論理
“1”の選択制御信号82を出力する。この選択制御信
号82はセレクタ6に導かれる。The selector 5 has I / A = 1 as in this example.
In the case of (1), the instruction read out of the instruction and the address read from the circular buffer 41 is selectively output to the selector 6. On the other hand, when the instruction to be decoded is a GETI (i, r) instruction as in this example, the instruction decoder 8 outputs a selection control signal 82 of logic “1”. This selection control signal 82 is guided to the selector 6.
【0046】セレクタ6は、この例のように選択制御信
号82が“1”の場合、セレクタ5の選択出力情報(こ
こでは命令)を選択する。このように、図1の構成の演
算処理装置では、命令デコーダ8にてデコードされてい
る命令がGETI(i,r)命令である場合(ステップ
S4)、iサイクル前の命令およびそのアドレスの対が
循環バッファ41から取出され、そのうちの命令がセレ
クタ5,6を介してレジスタファイル7のrレジスタに
取出される(ステップS5)。When the selection control signal 82 is “1” as in this example, the selector 6 selects the selection output information (in this case, the instruction) of the selector 5. As described above, in the arithmetic processing device having the configuration shown in FIG. 1, when the instruction decoded by the instruction decoder 8 is a GETI (i, r) instruction (step S4), the instruction and its address pair i cycles before Is extracted from the circular buffer 41, and the instruction is extracted to the r register of the register file 7 via the selectors 5 and 6 (step S5).
【0047】この様子を、命令デコーダ8にてデコード
されているGETI(i,r)命令のアドレスが“10
00”であり、iサイクル前の命令がSUB(減算)命
令(ここではC−Dを指定するSUB命令)である場合
を例に、図6に示す。This state is confirmed when the address of the GETI (i, r) instruction decoded by the instruction decoder 8 is “10”.
FIG. 6 shows an example in which the instruction before the i-th cycle is a SUB (subtraction) instruction (here, a SUB instruction designating CD).
【0048】次に、命令デコーダ8によりデコードされ
ている命令がアドレス履歴取出し命令、即ちGETA
(i,r)命令の場合について説明する。この場合、命
令デコーダ8によりデコードされているGETA(i,
r)命令中のiフィールドの値「i」と、その時点の書
込み先ポインタ42の値とが、加算器43により加算さ
れる。そして、加算器43の加算結果(である読出しポ
インタ情報)の指定する循環バッファ41内エントリに
記録されている命令およびアドレスの対が、即ち現在書
込み先ポインタ42の指定しているエントリ中の命令に
対してiサイクル前の命令およびそのアドレスの対が、
同バッファ41から読出される。Next, the instruction decoded by the instruction decoder 8 is an address history fetch instruction, that is, a GETA.
The case of the (i, r) instruction will be described. In this case, GETA (i,
r) The value “i” of the i field in the instruction and the value of the write destination pointer 42 at that time are added by the adder 43. The instruction and address pair recorded in the entry in the circular buffer 41 specified by the addition result of the adder 43 (the read pointer information) is the instruction in the entry currently specified by the write destination pointer 42. The instruction and its address pair i cycles before are
It is read from the buffer 41.
【0049】循環バッファ41から読出された命令およ
びアドレスはセレクタ5に導かれる。このセレクタ5に
は、命令デコーダ8によりデコードされているGETA
(i,r)命令のOPコード・フィールド中のI/Aビ
ットも(選択制御信号として)導かれる。このI/Aビ
ットの値は、GETA(i,r)命令では“0”であ
る。The instruction and address read from the circular buffer 41 are guided to the selector 5. The selector 5 includes the GETA decoded by the instruction decoder 8.
The I / A bit in the OP code field of the (i, r) instruction is also derived (as a selection control signal). The value of this I / A bit is "0" in the GETA (i, r) instruction.
【0050】セレクタ5は、この例のようにI/A=0
の場合、循環バッファ41から読出された命令およびア
ドレスのうちのアドレスをセレクタ6に選択出力する。
一方、命令デコーダ8は、デコード対象となっている命
令がこの例のようにGETA(i,r)命令の場合、上
記したGETI(i,r)命令のときと同様に論理
“1”の選択制御信号82を出力する。The selector 5 has an I / A = 0 as in this example.
In the case of (1), the address read out of the instruction and the address read from the circular buffer 41 is selectively output to the selector 6.
On the other hand, when the instruction to be decoded is a GETA (i, r) instruction as in this example, the instruction decoder 8 selects the logic “1” in the same manner as the above-mentioned GETI (i, r) instruction. A control signal 82 is output.
【0051】セレクタ6は、この例のように選択制御信
号82が“1”の場合、セレクタ5の選択出力情報(こ
こではアドレス)を選択する。セレクタ6により選択さ
れた情報(アドレス)は、この例のように、命令デコー
ダ8によりGETA(i,r)命令がデコードされてい
る場合には、同命令中のrフィールドの内容「r」の指
定するレジスタファイル7内レジスタ(rレジスタ)に
格納される。When the selection control signal 82 is "1" as in this example, the selector 6 selects the selected output information (address here) of the selector 5. When the instruction decoder 8 decodes the GETA (i, r) instruction as in this example, the information (address) selected by the selector 6 is the contents of the r field content “r” in the instruction. It is stored in the register (r register) in the specified register file 7.
【0052】このように、図1の構成の演算処理装置で
は、命令デコーダ8にてデコードされている命令がGE
TA(i,r)命令である場合(ステップS6)、iサ
イクル前の命令およびそのアドレスの対が循環バッファ
41から取出され、そのうちのアドレスがセレクタ5,
6を介してレジスタファイル7のrジスタに取出される
(ステップS7)。As described above, in the arithmetic processing unit having the configuration shown in FIG. 1, the instruction decoded by the instruction
If the instruction is a TA (i, r) instruction (step S6), a pair of an instruction i cycles before and its address is fetched from the circular buffer 41, and the address of which is
The data is extracted to the r-register of the register file 7 through the register 6 (step S7).
【0053】この様子を、命令デコーダ8にてデコード
されているGETA(i,r)命令のアドレスが“10
50”であり、iサイクル前の命令のアドレスが“10
00”である場合を例に、図7に示す。This situation is confirmed by the fact that the address of the GETA (i, r) instruction decoded by the instruction decoder 8 is “10”.
50 ", and the address of the instruction i cycles before is" 10 ".
FIG. 7 shows an example of the case of "00".
【0054】次に、図1の演算処理装置において、SK
IP命令(指定命令数nop化命令)を利用して、図8
(a)に示したようなソースコードの指定する条件処理
を、図8(c)に示すように分岐なしで実現した例につ
き、説明する。なお、図8(a)に示すソースコード
は、[従来の技術]の欄で説明したように、n=0のと
きは命令#1を、n=1のときは命令#2を、そしてn
=2のときは命令#3をそれぞれ実行して、例えば共通
の命令処理に進む条件分岐処理を指定するものである。Next, in the arithmetic processing unit of FIG.
Using the IP instruction (specified instruction number nop instruction), FIG.
An example in which the condition processing designated by the source code as shown in FIG. 8A is realized without branching as shown in FIG. Note that the source code shown in FIG. 8A includes the instruction # 1 when n = 0, the instruction # 2 when n = 1, and n
When = 2, the instruction # 3 is executed, respectively, to designate, for example, a conditional branch process that proceeds to a common instruction process.
【0055】さて、図8(a)に示すようなソースコー
ドの指定する条件処理を、図1の構成の演算処理装置で
実行可能とするためには、同ソースコードをコンパイル
してオブジェクトコード(ロードモジュール)を作成す
る必要がある。この際、条件が成立したときに実行する
命令の前にSKIP命令を挿入してコンパイルする。本
実施例では、図8(a)に示すソースコードをコンパイ
ルした場合、図8(c)に示すように、SKIP(n*
2)、命令#1、SKIP(3)、命令#2、SKIP
(1)および命令#3の順で続く命令列が作成される。Now, in order to enable the conditional processing designated by the source code as shown in FIG. 8A to be executed by the arithmetic processing unit having the configuration shown in FIG. 1, the source code is compiled and the object code ( Load module). At this time, a SKIP instruction is inserted before the instruction to be executed when the condition is satisfied, and compilation is performed. In this embodiment, when the source code shown in FIG. 8A is compiled, as shown in FIG. 8C, SKIP (n *
2), instruction # 1, SKIP (3), instruction # 2, SKIP
An instruction sequence following (1) and instruction # 3 is created.
【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の次の命令が実行さ
れる。As described above, in the arithmetic processing unit having the configuration shown in FIG. 1, the subsequent N instructions are noped by the SKIP (N) instruction (steps S2 and S3 in FIG. 3). Accordingly, in the example of the instruction sequence shown in FIG. 8C, when n = 0, SKIP (n * 2), that is, SKIP (0), followed by instructions # 1 and SKIP (3). Executed, and the following three instructions (instruction # 2, SKIP (1), instruction #
After 3) is noped, the instruction following instruction # 3 is executed.
【0057】同様に、n=1の場合には、SKIP(n
*2)、即ちSKIP(2)が実行されて、後続の2命
令(命令#1、SKIP(3))がnop化された後、
命令#2、SKIP(1)が順次実行され、更に後続の
1命令(命令#3)がnop化された後、命令#3の次
の命令が実行される。Similarly, when n = 1, SKIP (n
* 2), that is, after SKIP (2) is executed and the following two instructions (instruction # 1, SKIP (3)) are nopized,
The instructions # 2 and SKIP (1) are sequentially executed, and after the subsequent one instruction (instruction # 3) is noped, the instruction following the instruction # 3 is executed.
【0058】同様に、n=2の場合には、SKIP(n
*2)、即ちSKIP(4)が実行されて、後続の4命
令(命令#1、SKIP(3)、命令#2、SKIP
(1))がnop化された後、SKIP(1)の次の命
令#3が実行され、更に次の当該命令#3の次の命令が
実行される。Similarly, when n = 2, SKIP (n
* 2), that is, SKIP (4) is executed, and the following four instructions (instruction # 1, SKIP (3), instruction # 2, SKIP
After the (1)) is converted to a nop, the instruction # 3 next to the SKIP (1) is executed, and the instruction next to the next instruction # 3 is executed.
【0059】このように、図1に示す構成の演算処理装
置では、SKIP命令(指定命令数nop化命令)を利
用することで、分岐を用いずに条件処理を実現すること
ができる。したがって、図8(c)から明らかなよう
に、条件処理のための命令列の構成命令数が、図8
(b)に示した従来の場合の命令列に比較して削減でき
る。また、命令数が削減できることから、処理の高速化
が図れ、更に分岐発生に伴うパイプライン停止の問題が
ないため、一層の高速化が図れる。As described above, in the arithmetic processing device having the configuration shown in FIG. 1, by using the SKIP instruction (instruction to change the number of designated instructions to nop), conditional processing can be realized without using branching. Therefore, as is clear from FIG. 8C, the number of instructions constituting the instruction sequence for the condition processing is
The number of instructions can be reduced as compared with the conventional instruction sequence shown in FIG. Further, since the number of instructions can be reduced, the processing can be speeded up. Further, since there is no problem of stopping the pipeline due to the occurrence of a branch, the speed can be further increased.
【0060】次に、図1の演算処理装置において、GE
TI命令(命令履歴取出し命令)を利用して、指定サイ
クル前の命令を取得する場合(命令履歴取出し)につ
き、図9を参照して説明する。Next, in the arithmetic processing unit of FIG.
A case where an instruction before a specified cycle is acquired using a TI instruction (instruction history retrieval instruction) (instruction history retrieval) will be described with reference to FIG.
【0061】まず、GETI命令を利用して、指定サイ
クル前の命令を取得できるようにするには、途中に分岐
がないようにしておく必要がある。このため、途中で条
件処理を必要とする場合には、先に述べたように、条件
処理についてSKIP命令を用いた形にコンパイルする
ことで、分岐なしの条件処理を実現できるようにしてお
く。First, in order to make it possible to acquire an instruction before a designated cycle by using a GETI instruction, it is necessary to prevent a branch in the middle. Therefore, if conditional processing is required on the way, as described above, the conditional processing is compiled into a form using the SKIP instruction so that the conditional processing without branching can be realized.
【0062】図9は、主メモリ10上に、SKIP
(1)、何らかの1命令、命令#1、何らかの2命令、
GETI(3,r)の命令列が格納されている場合に、
当該命令列が1命令ずつ順次実行され、GETI(3,
r)が実行された際の様子を説明するためのものであ
る。FIG. 9 shows that the SKIP
(1) some one instruction, instruction # 1, some two instructions,
When the instruction sequence of GETI (3, r) is stored,
The instruction sequence is sequentially executed one instruction at a time, and the GETI (3,
This is for explaining the situation when r) is executed.
【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)。In the example of FIG. 9, SKIP (1), some one instruction, instruction # 1, some two instructions, GETI (3,
r) is fetched into the instruction register 2 one instruction at a time from SKIP (1), the write destination pointer 42 is decremented, and the pointer 4 after the decrement is decremented.
The fetched instruction and its address are recorded in the entry in the circular buffer 41 designated by the second instruction (step S1). The next instruction following SKIP (1) is
Nop is specified by specifying KIP (1) (step S
2, S3).
【0064】さて、GETI(3,r)が命令レジスタ
2にフェッチされて、当該GETI(3,r)とそのア
ドレスが、図9に示すように、書込み先ポインタ42の
指す循環バッファ41内エントリに記録され(ステップ
S1)、更に当該GETI(3,r)が命令デコーダ8
でデコードされたものとする(ステップS4)。Now, GETI (3, r) is fetched into the instruction register 2 and the GETI (3, r) and its address are stored in the entry in the circular buffer 41 indicated by the write destination pointer 42 as shown in FIG. (Step S1), and the corresponding GETI (3, r) is stored in the instruction decoder 8
(Step 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)。In this case, as is apparent from the description with reference to FIG. 6, the value “3” (i = 3) of the i field of GETI (3, r) and the value of the write destination pointer 42 For the instruction and address pair read from the entry in the circular buffer 41 specified by the addition value (by the adder 43), that is, for the instruction GETI (3, r) in the entry pointed to by the current write destination pointer 42 Instruction of the instruction and address pair three cycles before (here, instruction #
9) is stored in the r register in the register file 7 specified by the r field of the GETI (3, r) as shown in FIG. 9 (step S5).
【0066】ここで、SKIP(1)を用いることで条
件処理を分岐なしで実現していることから、途中に条件
処理があっても、GETI(3,r)の実行により、指
定サイクル前(ここでは3サイクル前)の命令(命令#
1)を、正しくレジスタファイル7内の指定レジスタ
(rレジスタ)に取出すことができる。Here, since the conditional processing is realized without branching by using SKIP (1), even if there is a conditional processing in the middle, the execution of GETI (3, r) will cause the execution of the specified cycle (before the designated cycle). Here, the instruction (instruction # three cycles earlier)
1) can be correctly extracted to the designated register (r register) in the register file 7.
【0067】次に、図1の演算処理装置において、SK
IP命令(指定命令数nop化命令)でnop化された
命令部分(位置)に即値データを格納しておき、当該即
値データをGETI命令(命令履歴取出し命令)を利用
してレジスタファイル7内に取出す場合(即値オペラン
ド指定)につき、図10を参照して説明する。Next, in the arithmetic processing unit of FIG.
Immediate data is stored in the instruction portion (position) noped by the IP instruction (specified instruction number nop instruction), and the immediate data is stored in the register file 7 using the GETI instruction (instruction history fetch instruction). The case of extracting (immediate operand specification) will be described with reference to FIG.
【0068】まず、GETI命令を利用して即値データ
を取出せるようにするには、コンパイルの際に、SKI
P命令によりnop化される命令位置に即値データを格
納しておく必要がある。First, in order to make it possible to extract immediate data using the GETI instruction, the SKI
It is necessary to store immediate data at an instruction position which is converted to a nop by the P instruction.
【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つの即値データが予め格納されて
いる。FIG. 10 shows that the SKIP
(2) When an instruction sequence of constant # 1, constant # 2, and GETI (2, r) is stored (constants # 1 and # 2 are also regarded as instructions), one instruction at a time from SKIP (2) This is for explaining a state when the program is executed and GETI (2, r) is executed. In the example of FIG.
Two immediate data of a constant # 1 and a constant # 2 are stored in advance in the two instruction portions which are converted to nop in (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が格納(設定)さ
れていても、何ら問題はない。In the example of FIG. 10, SKIP (2), constant #
Each time 1, the constant # 2, and the GETI (2, r) are fetched one by one from the SKIP (2) into the instruction register 2, the write destination pointer 42 is decremented, and the designation of the pointer 42 after the decrement The fetched instruction and its address are recorded in the entry in the circular buffer 41 (step S1). Also, SKI
The next two constants # 1 and # 2 of P (2) are the SKIP
Nop is specified by the designation of (2) (steps S2, S
3). Therefore, even if constants # 1 and # 2, which are immediate data, are stored (set) in the next two instruction portions of SKIP (2), there is no problem.
【0071】さて、GETI(2,r)が命令レジスタ
2にフェッチされて、当該GETI(2,r)とそのア
ドレスが、図10に示すように、書込み先ポインタ42
の指す循環バッファ41内エントリに記録され(ステッ
プS1)、更に当該GETI(2,r)が命令デコーダ
8でデコードされたものとする(ステップS4)。Now, GETI (2, r) is fetched into the instruction register 2 and the GETI (2, r) and its address are stored in the write destination pointer 42 as shown in FIG.
(Step S1), and the GETI (2, r) is decoded by the instruction decoder 8 (step 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)。In this case, as is clear from the description with reference to FIG. 6, the value "2" (i = 2) of the i field of GETI (2, r) and the value of the write destination pointer 42 For the instruction and address pair read from the entry in the circular buffer 41 specified by the added value (by the adder 43), that is, for the instruction GETI (2, r) in the entry pointed to by the current write destination pointer 42 As shown in FIG. 10, the instruction (in this case, the constant # 1 stored instead of the instruction) of the instruction and address pair two cycles before is specified by the r field of the GETI (2, r). Is stored in the r register in the register file 7 (step S5).
【0073】このように、SKIP(2)によりnop
化される2命令部分に即値データである定数#1,#2
を格納しておいた場合、定数#2の次の位置のGETI
(2,r)の実行により、定数#1(即値データ)を
(レジスタからのデータロードを指定する)ロード命令
を行うことなく、取得できる。なお、GETI(2,
r)に代えてGETI(1,r)を用いるならば、定数
#2を取得できることは勿論である。As described above, the SKIP (2) uses the nop
Constants # 1 and # 2, which are immediate data, in the two instruction parts to be converted
Is stored, the GETI at the position following the constant # 2 is stored.
By executing (2, r), constant # 1 (immediate data) can be obtained without performing a load instruction (designating data loading from a register). Note that GETI (2,
If GETI (1, r) is used instead of r), it is a matter of course that constant # 2 can be obtained.
【0074】次に、図1の演算処理装置において、SK
IP命令(指定命令数nop化命令)でnop化された
命令部分(位置)に引数を格納しておき、当該引数をG
ETI命令(命令履歴取出し命令)を利用してレジスタ
ファイル7内に取出す場合(固定引数引渡し)につき、
図11を参照して説明する。Next, in the arithmetic processing unit of FIG.
Arguments are stored in the instruction portion (position) noped by the IP instruction (specified instruction number nop instruction), and the argument is stored in G
When fetching into the register file 7 using the ETI instruction (instruction history fetching instruction) (fixed argument passing),
This will be described with reference to FIG.
【0075】まず、GETI命令を利用して、引数(固
定引数)を引渡せるようにするには、コンパイルの際
に、SKIP命令によりnop化される命令位置に関数
(手続き呼出し)の引数を格納し、更に飛び先にGET
I命令を挿入しておく必要がある。First, in order to be able to deliver an argument (fixed argument) by using the GETI instruction, the argument of the function (procedure call) is stored at the instruction position which is converted into a nop by the SKIP instruction at the time of compilation. GET to the destination
It is necessary to insert an I instruction.
【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が予め格納されている。FIG. 11 shows that the SKIP
(2), argument arg1, argument arg2, instruction sequence of CALL (FN1) which is a procedure call instruction (argument arg1,
arg2 is also regarded as an instruction) and CAL
When GETI (2, r) is stored in (the address corresponding to) the destination FN1 specified by L (FN1),
SKIP (2) is executed one instruction at a time in order, and CALL
After execution of (FN1), the target GETI (2,
This is for explaining the situation when r) is executed. In the example shown in FIG. 11, fixed arguments arg1 and arg2 are stored in advance in two instruction portions which are converted to nops by SKIP (2).
【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が格納(設定)されていても、何ら問題は
ない。In the example of FIG. 11, SKIP (2), argument a
rg1, argument arg2, CALL (FN1), GETI
Every time (2, r) is fetched one instruction at a time from the SKIP (2) into the instruction register 2, the write destination pointer 42
Is decremented, and the fetched instruction and its address are recorded in the entry in the circular buffer 41 designated by the pointer 42 after the decrement (step S1). In addition, the next two arguments arg1 and arg2 of SKIP (2) are converted to nops by designating the SKIP (2) (steps S2 and S3). Therefore, in the next two instruction parts of SKIP (2), the argument arg
Even if 1 and arg2 are stored (set), there is no problem.
【0078】さて、GETI(2,r)が命令レジスタ
2にフェッチされて、当該GETI(2,r)とそのア
ドレスが、図11に示すように、書込み先ポインタ42
の指す循環バッファ41内エントリに記録され(ステッ
プS1)、更に当該GETI(2,r)が命令デコーダ
8でデコードされたものとする(ステップS4)。The GETI (2, r) is fetched into the instruction register 2 and the GETI (2, r) and its address are stored in the write destination pointer 42 as shown in FIG.
(Step S1), and the GETI (2, r) is decoded by the instruction decoder 8 (step 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)。In this case, as is clear from the description with reference to FIG. 6, the value "2" (i = 2) of the i field of GETI (2, r) and the value of the write destination pointer 42 For the instruction and address pair read from the entry in the circular buffer 41 specified by the added value (by the adder 43), that is, for the instruction GETI (2, r) in the entry pointed to by the current write destination pointer 42 As shown in FIG. 11, the instruction (in this case, the argument arg2 stored in place of the instruction) of the instruction and address pair two cycles earlier specifies the r field of the GETI (2, r). Is stored in the r register in the register file 7 (step S5).
【0080】このように、SKIP(2)によりnop
化される2命令部分に関数(手続き呼出し)の引数ar
g1,arg2を格納し、飛び先にGETI(2,r)
を挿入しておいた場合、GETI(2,r)の実行によ
り、引数arg2を(レジスタからのデータロードを指
定する)ロード命令を行うことなく、取得できる。な
お、GETI(2,r)に代えてGETI(3,r)を
用いるならば、引数arg1を取得できることは勿論で
ある。As described above, nop is performed by SKIP (2).
Function (procedure call) argument ar
g1 and arg2 are stored, and GETI (2, r) is stored at the jump destination.
Is inserted, the argument arg2 can be obtained by executing GETI (2, r) without executing a load instruction (designating data loading from a register). If GETI (3, r) is used instead of GETI (2, r), it is needless to say that the argument arg1 can be obtained.
【0081】ところで、スーパーコンピュータなどで
は、1つの命令の実行完了を待たずに次の命令を実行可
能な構成となっていることが多い。このようなものにお
いては、エラートラップが発生しても、そのエラー発生
命令のアドレスを取得することは困難である。そこで、
図1の演算処理装置において、エラートラップが発生し
たら、GETA命令(アドレス履歴取出し命令)に飛ぶ
ようにしておき、当該GETA命令を利用してエラー発
生命令のアドレスをレジスタファイル7内に取出す場合
(エラー発生命令のアドレス取出し)につき、図12を
参照して説明する。Incidentally, a supercomputer or the like often has a configuration in which the next instruction can be executed without waiting for the completion of the execution of one instruction. In such a case, even if an error trap occurs, it is difficult to obtain the address of the instruction in which the error occurs. Therefore,
In the arithmetic processing unit of FIG. 1, when an error trap occurs, a jump is made to a GETA instruction (address history extraction instruction), and the address of the error generation instruction is extracted into the register file 7 using the GETA instruction ( The address fetch of an error generating instruction will be described with reference to FIG.
【0082】まず、GETA命令を利用して、エラー発
生命令のアドレスを取出せるようにするには、コンパイ
ルの際に、エラートラップしたらGETA命令に飛ぶよ
うにしておく必要がある。また、条件処理を必要とする
場合には、SKIP命令を利用して分岐なしで条件処理
が行えるようにしておく。First, in order to be able to take out the address of an error-occurring instruction using the GETA instruction, it is necessary to jump to the GETA instruction if an error trap occurs during compilation. When conditional processing is required, conditional processing can be performed without branching using the SKIP instruction.
【0083】図12は、主メモリ10上に、例えば3サ
イクルで実行結果が生成されるパイプライン演算命令で
ある浮動小数点加算命令fadd と、後続する何らかの2
命令とが格納され、更に当該2命令のうちの後の命令の
実行中に先行する命令faddがエラートラップした場合
の割込み先にGETA(3,r)が格納されている場合
に、命令fadd から順に1命令ずつ実行が開始され、命
令fadd がエラートラップした結果、GETA(3,
r)が実行された際の様子を説明するためのものであ
る。なお、命令fadd のアドレスは“1000”である
ものとする。FIG. 12 shows, on the main memory 10, a floating point addition instruction fadd which is a pipeline operation instruction for generating an execution result in three cycles, for example,
When GETA (3, r) is stored at the interrupt destination when the preceding instruction fadd traps an error during execution of the later instruction of the two instructions, the instruction fadd Instructions are sequentially started one instruction at a time, and as a result of the instruction fadd trapping an error, GETA (3,
This is for explaining the situation when r) is executed. It is assumed that the address of the instruction fadd is "1000".
【0084】図12の例では、命令fadd 、後続の2命
令が1命令ずつ命令レジスタ2に順次フェッチされる毎
に、書込み先ポインタ42がデクリメントされて、その
デクリメント後の当該ポインタ42の指定する循環バッ
ファ41内エントリに、上記フェッチされた命令とその
アドレスが記録される(ステップS1)。In the example of FIG. 12, each time the instruction fadd and the following two instructions are sequentially fetched one by one into the instruction register 2, the write destination pointer 42 is decremented, and the pointer 42 after the decrement is designated. The fetched instruction and its address are recorded in the entry in the circular buffer 41 (step S1).
【0085】ここで、命令fadd が、実行開始サイクル
より2サイクル後にエラートラップしたものとする。こ
の場合、割込み先のGETA(3,r)が命令レジスタ
2にフェッチされると同時に、当該命令fadd とそのア
ドレスが、当該命令fadd の1サイクル前にフェッチさ
れた命令(命令fadd に後続する2命令のうちの後の命
令)の次に位置する循環バッファ41内エントリに記録
される(ステップS1)。そして、命令レジスタ2にフ
ェッチされたGETA(3,r)が命令デコーダ8でデ
コードされたものとする(ステップS6)。Here, it is assumed that the instruction fadd has error trapped two cycles after the execution start cycle. In this case, at the same time that the interrupt destination GETA (3, r) is fetched into the instruction register 2, the instruction fadd and its address are stored in the instruction fetched one cycle before the instruction fadd (the instruction succeeding the instruction fadd). The instruction is recorded in the entry in the circular buffer 41 located next to the instruction following the instruction (step S1). Then, it is assumed that GETA (3, r) fetched in the instruction register 2 is decoded by the instruction decoder 8 (step 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)。In this case, as is apparent from the description with reference to FIG. 7, the value "3" (i = 3) of the i field of GETA (3, r) and the value of the write destination pointer 42 For the instruction and address pair read from the entry in the circular buffer 41 specified by the addition value (by the adder 43), that is, the instruction GETA (3, r) in the entry pointed to by the current write destination pointer 42 As shown in FIG. 12, the address (here, "1000") of the pair of the error generating instruction fadd and the address three cycles before is stored in the register file 7 specified by the r field of the GETI (3, r). (Step S7).
【0087】次に、図1の演算処理装置において、CA
LL命令(手続き呼出し命令)の飛び先にGETA命令
を挿入すると共に、手続き終了位置にRET命令(リタ
ーン命令)を挿入しておき、GETA命令を利用してC
ALL命令のアドレスをレジスタファイル7内に取出す
場合(手続き呼出し時の戻りアドレス指定)につき、図
13を参照して説明する。Next, in the arithmetic processing unit of FIG.
A GETA instruction is inserted at the jump destination of the LL instruction (procedure call instruction), and a RET instruction (return instruction) is inserted at the end of the procedure.
The case where the address of the ALL instruction is fetched into the register file 7 (designation of the return address at the time of calling the procedure) will be described with reference to FIG.
【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”であるものとする。FIG. 13 shows that CALL is stored in the main memory 10.
(FN1), an instruction sequence starting with instruction # 1 to be executed when returning from the procedure call by the CALL (FN1) is stored, and further, an address corresponding to a jump destination FN1 specified by the CALL (FN1). GE in the area starting with
An instruction sequence is stored in which TA (1, r) is the first instruction and RET (r + 1) for executing execution at an address (return address) obtained by adding 1 to the contents of the r register in the register file 7 as the last instruction. CALL (FN
Execution of instructions is started one by one in order from 1), and RET (r +
This is for explaining the situation when the execution returns to the return instruction # 1 by the execution of 1). In addition, CALL
(FN1), the address of the instruction # 1 is “100
0 "and" 1001 ".
【0089】図13の例では、まずCALL(FN1)
が、続いてGETA(1,r)が命令レジスタ2にフェ
ッチされる。この命令フェッチの都度、書込み先ポイン
タ42がデクリメントされて、そのデクリメント後の当
該ポインタ42の指定する循環バッファ41内エントリ
に、上記フェッチされた命令とそのアドレスが記録され
る(ステップS1)。In the example shown in FIG. 13, first, CALL (FN1)
Then, GETA (1, r) is fetched into the instruction register 2. Each time the instruction is fetched, the write destination pointer 42 is decremented, and the fetched instruction and its address are recorded in the entry in the circular buffer 41 designated by the decremented pointer 42 (step 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)。Here, when GETA (1, r) fetched into the instruction register 2 is decoded by the instruction decoder 8 (step S6), as apparent from the description with reference to FIG. An instruction read from an entry in the circular buffer 41 specified by an addition value (by the adder 43) of the value “1” (i = 1) of the i field of GETA (1, r) and the value of the write destination pointer 42 And an address pair, that is, an address (here, an instruction pair) of an instruction and address pair one cycle before the instruction GETA (1, r) in the entry pointed to by the write destination pointer 42
CALL (FN1) address "1000") is
As shown in FIG. 3, the data is stored in the r register in the register file 7 specified by the r field of the GETA (1, r) (step S7).
【0091】さて、GETA(1,r)に後続する命令
列が1命令ずつ順次命令レジスタ2にフェッチされ、や
がてRET(r+1)が当該命令レジスタ2にフェッチ
されたものとする。すると、RET(r+1)とそのア
ドレスが、書込み先ポインタ42の指定する循環バッフ
ァ41内エントリに記録される。Now, it is assumed that the instruction sequence following GETA (1, r) is sequentially fetched into the instruction register 2 one instruction at a time, and RET (r + 1) is fetched into the instruction register 2 soon. Then, RET (r + 1) and its address are recorded in the entry in the circular buffer 41 specified by the write destination pointer.
【0092】そして、この命令レジスタ2にフェッチさ
れたRET(r+1)が命令デコーダ8でデコードされ
て、そのデコード結果に従って実行される(ステップS
6,S8)。このRET(r+1)は、レジスタファイ
ル7内のrレジスタの内容に1を加えたアドレスを戻り
アドレスとして、当該アドレスに実行を移すリターン命
令である。ここで、レジスタファイル7内のrレジスタ
には、先のGETA(1,r)の実行により、CALL
(FN1)のアドレス“1000”が格納されている。Then, RET (r + 1) fetched into the instruction register 2 is decoded by the instruction decoder 8 and executed according to the decoding result (step S).
6, S8). This RET (r + 1) is a return instruction that shifts execution to an address obtained by adding 1 to the contents of the r register in the register file 7 as a return address. Here, CALL is stored in the r register in the register file 7 by executing the above-mentioned GETA (1, r).
The address “1000” of (FN1) is stored.
【0093】したがって、RET(r+1)の実行によ
り、アドレス“1001”の命令、即ちCALL(FN
1)の次のアドレスの命令#1にリターンすることにな
る。具体的には、アドレス“1001”がプログラムカ
ウンタ3にセットされた後、そのアドレス“1001”
の命令#1が命令キャッシュ1から命令レジスタ2にフ
ェッチされる。Therefore, by executing RET (r + 1), the instruction at address “1001”, that is, CALL (FN
Returning to the instruction # 1 at the address next to 1). Specifically, after the address “1001” is set in the program counter 3, the address “1001”
Instruction # 1 is fetched from the instruction cache 1 to the instruction register 2.
【0094】このように、CALL命令の飛び先にGE
TA(1,r)を挿入し、当該GETA(1,r)命令
を利用してCALL命令のアドレスをレジスタファイル
7内の指定レジスタ(rレジスタ)に取出すようにする
と共に、手続き終了位置に、当該レジスタの示すアドレ
スの次のアドレスにリターンするためのRET命令を挿
入することで、戻りアドレスをリンクレジスタに設定す
る操作を行わなくても、RET命令により手続き呼出し
から戻るときに、CALL命令のアドレスの次のアドレ
ス(手続き呼出しの戻りアドレス)に実行を移すことが
できる。As described above, GE is set at the jump destination of the CALL instruction.
TA (1, r) is inserted, and the address of the CALL instruction is taken out to the designated register (r register) in the register file 7 by using the GETA (1, r) instruction. By inserting a RET instruction for returning to the address next to the address indicated by the register, the operation of setting the return address in the link register can be performed without returning to the CALL instruction when returning from the procedure call by the RET instruction. Execution can be moved to the address following the address (the return address of the procedure call).
【0095】なお、前記実施例では、書込み先ポインタ
42がデクリメントされるものとして説明したが、イン
クリメントされるものであっても構わない。但し、この
場合には加算器43に代えて減算器を設け、GETI
(i,r)またはGETA(i,r)命令の実行時に、
この減算器により書込み先ポインタ42の値からGET
I(i,r)またはGETA(i,r)命令中のiフィ
ールドの値「i」を減算することで、取出しの対象とな
る循環バッファ41内エントリを指すエントリアドレス
を求める必要がある。In the above embodiment, the write destination pointer 42 has been described as being decremented, but may be incremented. However, in this case, a subtractor is provided instead of the adder 43, and the GETI
When the (i, r) or GETA (i, r) instruction is executed,
GET is performed from the value of the write destination pointer 42 by this subtractor.
It is necessary to obtain the entry address indicating the entry in the circular buffer 41 to be fetched by subtracting the value “i” of the i field in the I (i, r) or GETA (i, r) instruction.
【0096】また、前記実施例では、命令キャッシュ1
から命令レジスタ2にフェッチされた命令が次のサイク
ルでデコードされるものとして説明したが、処理の高速
化のために、命令レジスタ2に代えて命令バッファを設
けて命令キャッシュ1から命令バッファへの命令の先取
りを行うようにしても構わない。但し、この場合には、
命令キャッシュ1から命令バッファにフェッチされた命
令がデコードされるまで、何サイクルかの遅延が生じる
ため、この遅延に同期して、書込み先ポインタ42の内
容を遅延させて対応する命令がデコードされるまで保持
するための(パイプラインレジスタ群等の)機構が必要
となる。そして、GETI(i,r)またはGETA
(i,r)命令の実行では、同命令中のiフィールドの
値との演算に、書込み先ポインタ42の値ではなくて、
当該機構に保持されている現在デコード中の命令が記録
されている循環バッファ41内エントリを指すアドレス
を用いるようにする。In the above embodiment, the instruction cache 1
It has been described that the instruction fetched from the instruction register 2 into the instruction register 2 is decoded in the next cycle. However, in order to speed up the processing, an instruction buffer is provided in place of the instruction register 2 to transfer the instruction from the instruction cache 1 to the instruction buffer. Instruction prefetching may be performed. However, in this case,
There is a delay of several cycles until the instruction fetched from the instruction cache 1 to the instruction buffer is decoded. Therefore, in synchronization with this delay, the contents of the write destination pointer 42 are delayed and the corresponding instruction is decoded. A mechanism (for example, a group of pipeline registers) is required to hold the data. And GETI (i, r) or GETA
In the execution of the (i, r) instruction, not the value of the write destination pointer 42 but the value of the i field in the instruction is calculated.
An address indicating the entry in the circular buffer 41 where the currently decoded instruction stored in the mechanism is recorded.
【0097】また、前記実施例では、循環バッファ41
には命令およびアドレスの対を格納するものとして説明
したが、GETA命令を利用しない演算処理装置である
ならば命令だけを、GETI命令を利用しない演算処理
装置であるならばアドレスだけを格納するようにしても
構わない。In the above embodiment, the circular buffer 41
Has been described as storing an instruction and address pair. However, if an arithmetic processing unit does not use the GETA instruction, only the instruction is stored, and if the arithmetic processing unit does not use the GETI instruction, only the address is stored. It does not matter.
【0098】[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つ前のアドレスとしてバッファ手
段から簡単に取出すことができる。したがって、従来の
ように、戻りアドレスをリンクレジスタに設定しておく
必要がなくなる。As described in detail above, according to the present invention,
The following effects can be obtained. (1) Designated number of instructions nop instruction (SKIP (N) instruction)
Since the following instructions can be converted into nops as many as the number desired to be skipped, conditional processing can be realized without branching. (2) By preparing an instruction history fetch instruction (GETI (i, r) instruction) at a position to be executed i cycles after the instruction whose history is to be acquired, when the fetch instruction is executed, the fetch is performed. The instruction i cycles before the instruction specified by the instruction can be easily taken out from the buffer means as the instruction history. (3) Designated number of instructions nop instruction (SKIP (N) instruction)
The immediate data (immediate operand data) or the fixed argument of the procedure call is set in the instruction portion to be nop by the following, and further, the instruction history fetch instruction (GETI)
By preparing (i, r) instructions) and executing them, it is possible to easily obtain the immediate data or the fixed argument of the instruction portion i cycles before specified by the fetch instruction from the buffer means. Thus, since there is no need to load immediate data or arguments from registers,
It is possible to prevent the overhead of the memory due to the loading from the register and the increase in cost due to the use of the register. (4) The number of cycles N + 1 is set to a jump destination when an instruction (target instruction) in which an error trap is likely to occur after N cycles after the execution start cycle actually traps the error.
Is prepared, and if the target instruction is error-trapped and execution shifts to the fetch instruction, the instruction of the (N + 1) -th cycle preceding instruction specified by the fetch instruction is prepared. , Ie, the address of the target instruction, can be easily taken out from the buffer means as the address of the error generating instruction. (5) By preparing an address history fetch instruction (GETA (i, r) instruction) specifying a cycle number 1 at the jump destination of the procedure call instruction, when the fetch instruction is called, the fetch is performed. The address of the instruction one cycle before the instruction designated by the instruction, that is, the address of the procedure call instruction can be easily taken out from the buffer means as the address immediately before the return address. Therefore, it is not necessary to set the return address in the link register as in the related art.
【図1】この発明の一実施例に係る演算処理装置の主要
部の構成を示すブロック図。FIG. 1 is a block diagram showing a configuration of a main part of an arithmetic processing device according to an embodiment of the present invention.
【図2】同実施例で適用される新規な命令のフォーマッ
ト図。FIG. 2 is a format diagram of a new instruction applied in the embodiment.
【図3】同実施例における処理の流れを図2に示した命
令がフェッチされた際の処理を中心に説明するためのフ
ローチャート。FIG. 3 is a flowchart for explaining the flow of processing in the embodiment focusing on the processing when the instruction shown in FIG. 2 is fetched;
【図4】同実施例におけるバッファ機構4の機能を説明
するための図。FIG. 4 is a view for explaining functions of a buffer mechanism 4 in the embodiment.
【図5】同実施例において指定命令数nop化命令(S
KIP命令)を実行することにより実現される指定命令
数nop化機能を説明するための図。FIG. 5 is a diagram showing a nop instruction (S
FIG. 7 is a diagram for explaining a designated instruction number nop function realized by executing a KIP instruction).
【図6】同実施例において命令履歴取出し命令(GET
I命令)を実行することにより実現される指定サイクル
前の命令の取出し機能を説明するための図。FIG. 6 shows an instruction history fetch instruction (GET) in the embodiment.
FIG. 4 is a diagram for explaining an instruction fetching function before a designated cycle realized by executing an I instruction).
【図7】同実施例においてアドレス履歴取出し命令(G
ETA命令)を実行することにより実現される指定サイ
クル前の命令のアドレスの取出し機能を説明するための
図。FIG. 7 shows an address history fetch instruction (G
FIG. 3 is a diagram for explaining an address fetching function of an instruction before a designated cycle realized by executing an ETA instruction).
【図8】同実施例において分岐なしの条件処理を実現す
るための命令列(モジュール)を、当該条件処理を記述
したソースコード、および従来の分岐ありの条件処理と
なる命令列(モジュール)と対比させて示すもので、図
8(a)はソースコード、図8(b)は当該ソースコー
ドのコンパイル結果である従来の命令列、図8(c)当
該ソースコードのコンパイル結果である同実施例におけ
る命令列。FIG. 8 shows an instruction sequence (module) for realizing conditional processing without branching in the embodiment, a source code describing the conditional processing, and an instruction sequence (module) for conventional conditional processing with branching. 8A shows a source code, FIG. 8B shows a conventional instruction sequence as a result of compiling the source code, and FIG. 8C shows a result of compiling the source code. Instruction sequence in the example.
【図9】同実施例においてGETI命令を利用して、指
定サイクル前の命令を取得する命令履歴取出しを説明す
るための図。FIG. 9 is an exemplary view for explaining an instruction history fetching to obtain an instruction before a designated cycle by using a GETI instruction in the embodiment.
【図10】同実施例においてSKIP命令でnop化さ
れた命令部分に即値データを格納しておき、当該即値デ
ータをGETI命令を利用してレジスタに取出す即値オ
ペランド指定を説明するための図。FIG. 10 is a diagram for describing immediate operand specification in which immediate data is stored in an instruction portion converted into a nop by an SKIP instruction and the immediate data is extracted to a register using a GETI instruction in the embodiment.
【図11】同実施例においてSKIP命令でnop化さ
れた命令部分に引数を格納しておき、当該引数をGET
I命令を利用してレジスタに取出す固定引数引渡しを説
明するための図。FIG. 11 is a diagram showing an example in which an argument is stored in an instruction part which has been converted into a nop by an SKIP instruction in the embodiment, and the argument is GET.
The figure for demonstrating the fixed argument delivery which takes out to a register using an I instruction.
【図12】同実施例においてエラートラップが発生した
らGETA命令に飛ぶようにしておき、当該GETA命
令を利用してエラー発生命令のアドレスをレジスタに取
出すエラー発生命令のアドレス取出しを説明するための
図。FIG. 12 is a diagram for explaining address extraction of an error-occurring instruction in which an error trap is skipped to a GETA instruction and an address of the error-occurring instruction is extracted to a register using the GETA instruction in the embodiment; .
【図13】同実施例においてCALL命令(手続き呼出
し命令)の飛び先にGETA命令を挿入すると共に、手
続き終了位置にRET命令(リターン命令)を挿入して
おき、GETA命令を利用してCALL命令のアドレス
をレジスタに取出して戻りアドレスの指定に用いるよう
にした手続き呼出し時の戻りアドレス指定を説明するた
めの図。FIG. 13 shows that a GETA instruction is inserted at a jump destination of a CALL instruction (procedure call instruction) and a RET instruction (return instruction) is inserted at a procedure end position in the embodiment, and the CALL instruction is utilized using the GETA instruction. FIG. 9 is a diagram for explaining the return address specification at the time of calling the procedure, in which the address of (1) is fetched into a register and used for specifying the return address.
1…命令キャッシュ、2…命令レジスタ、3…プログラ
ムカウンタ(PC)、4…バッファ機構、5,6…セレ
クタ、7…レジスタファイル、8…命令デコーダ、9…
命令nop化機構、10…主メモリ、41…循環バッフ
ァ、42…書込み先ポインタ(WP)、43…加算器
(ADD)、81…セット信号、82…選択制御信号、
91…命令nop化制御信号。DESCRIPTION OF SYMBOLS 1 ... Instruction cache, 2 ... Instruction register, 3 ... Program counter (PC), 4 ... Buffer mechanism, 5, 6 ... Selector, 7 ... Register file, 8 ... Instruction decoder, 9 ...
Instruction nop conversion mechanism, 10: main memory, 41: circular buffer, 42: write destination pointer (WP), 43: adder (ADD), 81: set signal, 82: selection control signal,
91: Instruction nop control signal.
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI G06F 9/34 350 G06F 9/34 350A 390 390 9/40 310 9/40 310C 9/42 320 9/42 320 (72)発明者 森 良哉 東京都府中市東芝町1番地 株式会社東 芝府中工場内 (72)発明者 武内 和昭 東京都府中市東芝町1番地 株式会社東 芝府中工場内 (56)参考文献 特開 平4−369727(JP,A) 特開 昭62−66332(JP,A) 特開 昭62−262139(JP,A) 特開 平2−137028(JP,A) 特開 昭61−221939(JP,A) 特開 昭63−66638(JP,A) 特開 昭62−262140(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/42 ──────────────────────────────────────────────────の Continued on the front page (51) Int.Cl. 7 Identification code FI G06F 9/34 350 G06F 9/34 350A 390 390 9/40 310 9/40 310C 9/42 320 9/42 320 (72) Invention Yoshiya Mori 1 Toshiba-cho, Fuchu-shi, Tokyo, Japan Inside the Toshiba Fuchu factory (72) Inventor Kazuaki Takeuchi 1-Toshiba-cho, Fuchu-shi, Tokyo inside the Toshiba Fuchu factory, (56) References JP4 JP-A-369727 (JP, A) JP-A-62-66332 (JP, A) JP-A-62-262139 (JP, A) JP-A-2-137028 (JP, A) JP-A-61-221939 (JP, A) JP-A-63-66638 (JP, A) JP-A-62-262140 (JP, A) (58) Fields investigated (Int. Cl. 7 , DB name) G06F 9/30-9/42
Claims (9)
を実行するのに必要な各種デコード信号を出力する命令
デコード手段であって、当該命令が後続の命令を指定命
令数だけノー・オペレーション化する指定命令数ノー・
オペレーション化命令の場合に、対応する特定デコード
信号を出力する命令デコード手段と、 前記命令デコード手段から前記特定デコード信号が出力
された場合、当該命令デコード手段によってデコードさ
れている前記指定命令数ノー・オペレーション化命令の
指定する命令数に相当するサイクルの期間中、その間に
デコードされる後続の命令をノー・オペレーション命令
として扱うためのノー・オペレーション化制御信号を前
記命令デコード手段に出力する命令ノー・オペレーショ
ン化手段とを具備し、前記命令デコード手段は、前記命
令ノー・オペレーション化手段から前記ノー・オペレー
ション化制御信号が出力されている期間、デコード対象
となる命令を、その命令種別に無関係にノー・オペレー
ション命令として扱うことを特徴とする演算処理装置。1. A storage means for storing an instruction group, and an instruction decoding means for decoding an instruction fetched from the storage means and outputting various decode signals necessary for executing the instruction. The specified number of instructions that make the subsequent instruction no-operation by the specified number of instructions
In the case of an operation instruction, an instruction decoding means for outputting a corresponding specific decode signal; and when the specific decode signal is output from the instruction decode means, the designated instruction number decoded by the instruction decode means. During a cycle corresponding to the number of instructions specified by the operation instruction, an instruction no-output for outputting to the instruction decoding means a no-operation control signal for treating a subsequent instruction decoded during the cycle as a no-operation instruction. Operating instruction means, wherein the instruction decoding means outputs the instruction to be decoded to a decoding instruction regardless of the instruction type while the instruction no-operating means outputs the no-operation control signal.・ It is characterized by being treated as an operation instruction Arithmetic processing unit.
実行する命令群をノー・オペレーション化するための前
記指定命令数ノー・オペレーション化命令を、この命令
群の命令の直前に挿入して記憶しておき、当該ノー・オ
ペレーション化命令が実行された場合には、当該ノー・
オペレーション化命令で指定される数の命令がノーオペ
レーション化されるようにしたことを特徴とする請求項
1記載の演算処理装置。2. The method according to claim 1, further comprising : inserting, in the storage means, the no-operation instruction of the designated number of instructions for causing the instruction group to be executed only when the condition is satisfied to be no operation, immediately before the instruction of the instruction group. If the no-operation instruction is executed, the
2. The arithmetic processing device according to claim 1, wherein the number of instructions specified by the operation instruction is changed to no operation.
を実行するのに必要な各種デコード信号を出力する命令
デコード手段であって、当該命令が後続の命令を指定命
令数だけノー・オペレーション化する指定命令数ノー・
オペレーション化命令の場合には、対応する第1のデコ
ード信号を出力し、当該命令が指定サイクル前の命令を
取出す命令履歴取出し命令の場合には、対応する第2の
デコード信号を出力する命令デコード手段と、 前記デコード手段によるデコードの対象となる命令を順
次格納するためのバッファ手段と、 このバッファ手段における前記命令の格納先を順次切換
え指定する書込みポインタ手段と、 前記命令デコード手段から前記第1のデコード信号が出
力された場合、当該命令デコード手段によってデコード
されている前記指定命令数ノー・オペレーション化命令
の指定する命令数に相当するサイクルの期間中、その間
にデコードされる後続の命令をノー・オペレーション命
令として扱うためのノー・オペレーション化制御信号を
前記命令デコード手段に出力する命令ノー・オペレーシ
ョン化手段と、 前記命令デコード手段から前記第2のデコード信号が出
力されている場合、当該命令デコード手段によってデコ
ードされている前記命令履歴取出し命令の指定するサイ
クル数と前記書込みポインタ手段の指す前記バッファ手
段内位置をもとに、このバッファ手段から指定サイクル
前の命令を取得する手段とを具備し、前記命令デコード
手段は、前記命令ノー・オペレーション化手段から前記
ノー・オペレーション化制御信号が出力されている期
間、デコード対象となる命令を、その命令種別に無関係
にノー・オペレーション命令として扱うことを特徴とす
る演算処理装置。3. A storage means for storing an instruction group, and an instruction decoding means for decoding an instruction fetched from the storage means and outputting various decode signals necessary for executing the instruction. The specified number of instructions that make the subsequent instruction no-operation by the specified number of instructions
An instruction decode that outputs a corresponding first decode signal in the case of an operation instruction, and outputs a corresponding second decode signal in the case of an instruction history fetch instruction that fetches an instruction before a designated cycle. Means; buffer means for sequentially storing instructions to be decoded by the decoding means; write pointer means for sequentially switching and specifying a storage location of the instructions in the buffer means; Is output during the cycle corresponding to the number of instructions designated by the no-operation instruction, the number of subsequent instructions decoded during the cycle is equal to the number of instructions designated by the instruction decoding means. A no-operation control signal for handling as an operation instruction Instruction no-operation means for outputting to the code means; and when the second decode signal is output from the instruction decode means, the number of cycles designated by the instruction history fetch instruction decoded by the instruction decode means. Means for acquiring an instruction before a designated cycle from the buffer means based on the position in the buffer means pointed to by the write pointer means, wherein the instruction decode means comprises: An arithmetic processing device characterized in that an instruction to be decoded is treated as a no-operation instruction regardless of the instruction type while the no-operation control signal is being output.
を実行するのに必要な各種デコード信号を出力する命令
デコード手段であって、当該命令が後続の命令を指定命
令数だけノー・オペレーション化する指定命令数ノー・
オペレーション化命令の場合には、対応する第1のデコ
ード信号を出力し、当該命令が指定サイクル前の命令の
アドレスを取出すアドレス履歴取出し命令の場合には、
対応する第2のデコード信号を出力する命令デコード手
段と、 前記デコード手段によるデコードの対象となる命令のア
ドレスを順次格納するためのバッファ手段と、 このバッファ手段における前記アドレスの格納先を順次
切換え指定する書込みポインタ手段と、 前記命令デコード手段から前記第1のデコード信号が出
力された場合、当該命令デコード手段によってデコード
されている前記指定命令数ノー・オペレーション化命令
の指定する命令数に相当するサイクルの期間中、その間
にデコードされる後続の命令をノー・オペレーション命
令として扱うためのノー・オペレーション化制御信号を
前記命令デコード手段に出力する命令ノー・オペレーシ
ョン化手段と、 前記命令デコード手段から前記第2のデコード信号が出
力されている場合、当該命令デコード手段によってデコ
ードされている前記アドレス履歴取出し命令の指定する
サイクル数と前記書込みポインタ手段の指す前記バッフ
ァ手段内位置をもとに、このバッファ手段から指定サイ
クル前の命令のアドレスを取得する手段とを具備し、前
記命令デコード手段は、前記命令ノー・オペレーション
化手段から前記ノー・オペレーション化制御信号が出力
されている期間、デコード対象となる命令を、その命令
種別に無関係にノー・オペレーション命令として扱うこ
とを特徴とする演算処理装置。4. A storage means for storing an instruction group, and an instruction decoding means for decoding an instruction fetched from the storage means and outputting various decode signals necessary for executing the instruction. The specified number of instructions that make the subsequent instruction no-operation by the specified number of instructions
In the case of an operation instruction, a corresponding first decode signal is output, and in the case that the instruction is an address history fetch instruction for fetching the address of the instruction before the designated cycle,
Instruction decoding means for outputting a corresponding second decode signal; buffer means for sequentially storing an address of an instruction to be decoded by the decoding means; and designation of sequentially switching the storage destination of the address in the buffer means A write pointer means for performing the operation and, when the first decode signal is output from the instruction decode means, a cycle corresponding to the number of instructions specified by the specified instruction number no-operation instruction decoded by the instruction decode means During the period, the instruction no-operating means for outputting to the instruction decoding means a no-operation control signal for treating a subsequent instruction decoded during that time as a no-operation instruction; and 2 decoded signal is output Obtaining the address of the instruction before the designated cycle from the buffer means based on the number of cycles specified by the address history fetch instruction decoded by the instruction decoding means and the position in the buffer means indicated by the write pointer means. Means for decoding the instruction to be decoded during the period in which the instruction no operation control signal is output from the instruction no operation control means, irrespective of the instruction type. An arithmetic processing device characterized by being treated as an operation instruction.
を実行するのに必要な各種デコード信号を出力する命令
デコード手段であって、当該命令が後続の命令を指定命
令数だけノー・オペレーション化する指定命令数ノー・
オペレーション化命令の場合には、対応する第1のデコ
ード信号を出力し、当該命令が指定サイクル前の命令を
取出す命令履歴取出し命令または指定サイクル前の命令
のアドレスを取出すアドレス履歴取出し命令の場合に
は、対応する第2のデコード信号を出力する命令デコー
ド手段と、 前記デコード手段によるデコードの対象となる命令およ
びそのアドレスを順次格納するためのバッファ手段と、 このバッファ手段における前記命令およびアドレスの格
納先を順次切換え指定する書込みポインタ手段と、 前記命令デコード手段から前記第1のデコード信号が出
力された場合、当該命令デコード手段によってデコード
されている前記指定命令数ノー・オペレーション化命令
の指定する命令数に相当するサイクルの期間中、その間
にデコードされる後続の命令をノー・オペレーション命
令として扱うためのノー・オペレーション化制御信号を
前記命令デコード手段に出力する命令ノー・オペレーシ
ョン化手段と、 前記命令デコード手段から前記第2のデコード信号が出
力されている場合、当該命令デコード手段によってデコ
ードされている前記命令履歴取出し命令またはアドレス
履歴取出し命令の指定するサイクル数と前記書込みポイ
ンタ手段の指す前記バッファ手段内位置をもとに、この
バッファ手段から指定サイクル前の命令またはアドレス
を取得する手段とを具備し、前記命令デコード手段は、
前記命令ノー・オペレーション化手段から前記ノー・オ
ペレーション化制御信号が出力されている期間、デコー
ド対象となる命令を、その命令種別に無関係にノー・オ
ペレーション命令として扱うことを特徴とする演算処理
装置。5. A storage means for storing an instruction group, and an instruction decoding means for decoding an instruction fetched from the storage means and outputting various decode signals necessary for executing the instruction. The specified number of instructions that make the subsequent instruction no-operation by the specified number of instructions
In the case of an operation instruction, a corresponding first decode signal is output, and if the instruction is an instruction history fetch instruction for fetching an instruction before the specified cycle or an address history fetch instruction for fetching the address of the instruction before the specified cycle. Instruction decoding means for outputting a corresponding second decode signal; buffer means for sequentially storing an instruction to be decoded by the decoding means and its address; and storage of the instruction and address in the buffer means. Write pointer means for sequentially switching and specifying a destination; and when the first decoding signal is output from the instruction decoding means, an instruction specified by the specified instruction number no-operation instruction decoded by the instruction decoding means. Decode during and after a number of cycles An instruction no-operation conversion means for outputting a no-operation conversion control signal for treating a subsequent instruction to be processed as a no-operation instruction to the instruction decoding means; and the second decoding signal is output from the instruction decoding means. In the case where there is a specified cycle from the buffer means based on the number of cycles designated by the instruction history fetch instruction or the address history fetch instruction decoded by the instruction decoding means and the position in the buffer means indicated by the write pointer means, Means for obtaining a previous instruction or address, the instruction decoding means comprising:
An arithmetic processing device wherein an instruction to be decoded is treated as a no-operation instruction regardless of the instruction type while the instruction-no-operation control signal is being output from the instruction-no-operation control means.
ペレーション化命令、当該指定命令数ノー・オペレーシ
ョン化命令によりノー・オペレーション化される命令部
分に設定される即値データ、および取得したい即値デー
タを命令と見なしてサイクル数を指定することで前記バ
ッファ手段から取出すための前記命令履歴取出し命令を
記憶しておき、当該命令履歴取出し命令が実行された場
合に、当該命令履歴取出し命令の指定するサイクル前の
前記即値データを前記バッファ手段から取得するように
したことを特徴とする請求項3または請求項5記載の演
算処理装置。 6. The storage device according to claim 1, wherein the number of designated instructions is no
Bae configuration of the instruction, the designated number of instructions No Opereshi
The immediate history data set in the instruction part to be set to no operation by the unification instruction, and the instruction history fetch instruction for fetching from the buffer means by specifying the number of cycles by regarding the immediate data to be obtained as an instruction. 4. The storage device according to claim 3, wherein when the instruction history fetch instruction is executed, the immediate data before the cycle specified by the instruction history fetch instruction is acquired from the buffer means. The arithmetic processing device according to claim 5.
ペレーション化命令、当該指定命令数ノー・オペレーシ
ョン化命令によりノー・オペレーション化される命令部
分に設定される手続き呼出しの引数、および取得したい
引数を命令と見なしてサイクル数を指定することで前記
バッファ手段から取出すための前記命令履歴取出し命令
を記憶しておき、当該命令履歴取出し命令が実行された
場合に、当該命令履歴取出し命令の指定するサイクル前
の前記引数を前記バッファ手段から取得するようにした
ことを特徴とする請求項3または請求項5記載の演算処
理装置。7. in the storage means, the designated number of instructions No o
Bae configuration of the instruction, the designated number of instructions No Opereshi
® emission reduction instruction by no operation of the the procedure call argument is set in the instruction portion the instruction history fetching instruction for retrieving from said buffer means, and to be acquired by specifying the number of cycles is regarded as instruction arguments And storing the argument before the cycle specified by the instruction history fetching instruction from the buffer means when the instruction history fetching instruction is executed. The arithmetic processing device according to claim 5.
Nサイクル後にエラートラップの発生する可能性のある
命令が実際にエラートラップした場合の飛び先に、サイ
クル数N+1を指定する前記アドレス履歴取出し命令を
記憶しておき、当該アドレス履歴取出し命令が実行され
た場合に、当該アドレス履歴取出し命令の指定するサイ
クル前の前記エラートラップした命令のアドレスを前記
バッファ手段から取得するようにしたことを特徴とする
請求項4または請求項5記載の演算処理装置。8. in said storage means, to jump when after N cycles than the execution start cycle may occur an error trap instruction has actually error trap, the address history extraction to specify the number of cycles N + 1 An instruction is stored, and when the address history fetch instruction is executed, the address of the error trapped instruction before the cycle specified by the address history fetch instruction is acquired from the buffer means. The arithmetic processing device according to claim 4 or 5, wherein
び先に、サイクル数1を指定する前記アドレス履歴取出
し命令を記憶しておき、当該アドレス履歴取出し命令が
実行された場合に、当該アドレス履歴取出し命令の指定
するサイクル前の前記手続き呼出し命令のアドレスを前
記バッファ手段から取得し、そのアドレスの次のアドレ
スを戻りアドレスとして取得することを特徴とする請求
項4または請求項5記載の演算処理装置。Of 9. in said storage means, to jump procedure call instruction, stores the address history extraction instruction that specifies a number of cycles, when the address history fetching instruction is executed, the address 6. The operation according to claim 4, wherein an address of the procedure call instruction before the cycle specified by the history fetch instruction is obtained from the buffer means, and an address next to the address is obtained as a return address. Processing equipment.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31787693A JP3335735B2 (en) | 1993-12-17 | 1993-12-17 | Arithmetic processing unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31787693A JP3335735B2 (en) | 1993-12-17 | 1993-12-17 | Arithmetic processing unit |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07175650A JPH07175650A (en) | 1995-07-14 |
JP3335735B2 true JP3335735B2 (en) | 2002-10-21 |
Family
ID=18093049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP31787693A Expired - Fee Related JP3335735B2 (en) | 1993-12-17 | 1993-12-17 | Arithmetic processing unit |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3335735B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW530262B (en) | 1999-02-08 | 2003-05-01 | Matsushita Electric Ind Co Ltd | Control method for procedure execution |
JP4702004B2 (en) * | 2004-12-21 | 2011-06-15 | 株式会社デンソー | Microcomputer |
JP2008299790A (en) * | 2007-06-04 | 2008-12-11 | Digital Electronics Corp | Microprocessor |
-
1993
- 1993-12-17 JP JP31787693A patent/JP3335735B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH07175650A (en) | 1995-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
US6338136B1 (en) | Pairing of load-ALU-store with conditional branch | |
KR950003552B1 (en) | Programmable controller | |
JP2603626B2 (en) | Data processing device | |
EP0689131A1 (en) | A computer system for executing branch instructions | |
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 | |
CN101884025B (en) | Method and system for accelerating procedure return sequences | |
US5978905A (en) | Program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions | |
JPH08314719A (en) | Processor and translator device | |
JP3335735B2 (en) | Arithmetic processing unit | |
US20080065870A1 (en) | Information processing apparatus | |
US6360310B1 (en) | Apparatus and method for instruction cache access | |
JP2772100B2 (en) | Parallel instruction fetch mechanism | |
JP2591325B2 (en) | Branch control device | |
JP3493110B2 (en) | High-speed branch processing unit | |
US20100153688A1 (en) | Apparatus and method for data process | |
JP2534674B2 (en) | Information processing device | |
JPH08137690A (en) | Program execution control method | |
KR100515039B1 (en) | Pipeline status indicating circuit for conditional instruction | |
JPH05165640A (en) | Microprocessor | |
JP2545594B2 (en) | Operand data prefetching method | |
JPH0433021A (en) | Branching instruction control system | |
JPH09311787A (en) | Data processor | |
JPH0431134B2 (en) | ||
JPH0950374A (en) | Variable length delayed slot pipeline controller |
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 |