JPS6160459B2 - - Google Patents

Info

Publication number
JPS6160459B2
JPS6160459B2 JP4647881A JP4647881A JPS6160459B2 JP S6160459 B2 JPS6160459 B2 JP S6160459B2 JP 4647881 A JP4647881 A JP 4647881A JP 4647881 A JP4647881 A JP 4647881A JP S6160459 B2 JPS6160459 B2 JP S6160459B2
Authority
JP
Japan
Prior art keywords
operand
instruction
address
specifier
register
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
Application number
JP4647881A
Other languages
Japanese (ja)
Other versions
JPS57161943A (en
Inventor
Hidekazu Matsumoto
Tadaaki Bando
Hideo Maejima
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP56046478A priority Critical patent/JPS57161943A/en
Publication of JPS57161943A publication Critical patent/JPS57161943A/en
Publication of JPS6160459B2 publication Critical patent/JPS6160459B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】[Detailed description of the invention]

本発明はパイプライン制御を行うデータ処理装
置に係り、特にオペランドのアドレツシングモー
ドを指定するオペランド指定子がオペレーシヨン
を指定するコード部分から独立して与えられる可
変長命令を扱うデータ処理装置に関するものであ
る。 可変長のオペランド指定子を持つ命令体系は公
知であるが、代表的な2つの例を次に示す。 1つは、バローズ社(Burroughs Corpora−
tion)の計算機B1700をCOBOL/RPG向きのア
ーキテクチヤとした時の命令フオーマツドであ
り、これは、「B1700 COBOL/RPG−S−
Language,1058823−015,Copyright1973,
Burroughs Corporation」に示されている。 他の1つは、DEC社(Digital Equipment
Corporation)の計算機VAX11/780のアーキテ
クチヤが有する可変長となるオペランド指定子を
持つ命令体系であり、これは、
「VAX11Architectre Handbook,Copyright
1979」に示されている。 第1図A〜Dは、バローズ社のB1700の例にお
ける、4つの代表的なアドレツシングモードを示
している。 Aは、シヨート・リテラル(Short Literal)
モード時のオペランドアドレスを指定するオペラ
ンド指定子を示し、Typeのフイールドにてデー
タのタイプ(符号の有無、Literal Valueフイー
ルドの基本長(4ビツト、又は8ビツト)の識
別)を示し、“Length”フイールドと“Type”
フイールドによつて、Literal Valueフイールド
の長さを規定する。従つてLiteral Valueフイー
ルドは4ビツトから最長56ビツト(“Type”フイ
ルードにて、8ビツトの符号付を指定し、
Lengthが7の時)までの範囲をとりうる。 Bは、ロング・リテラル(Long Literal)モー
ド時のオペランドアドレスを指定するオペランド
指定子を示し、Short Literalモードを越える長
さのLiteralデータを得る場合に使用される。 Cは、デイスクリプター・インデツクス
(Descriptor Index)モード時のオペランドアド
レスを指定するオペランド指定子を示し、
Descriptor tableのエントリアドレスからのイン
デツクス値で規定されるアドレス上のデータがオ
ペランドとなる。 Dは、インライン・デイスクリプター(Inline
Descriptor)モード時のオペランドアドレスを指
定するオペランド指定子を示し、“Descriptor”
フイールドで与えられるデータがオペランドとな
る。 以上、説明した4種類のアドレツシングモード
が全てではなく、この他にもあることはもちろん
である。 第1図に示した様に、オペランド指定子の長さ
は種々の長さをとりうる。すなわち、AのShort
Literalモードでは、そのオペランド指定子の命
令フイールドに占める長さl(ビツト)は l=1+2+3+“length”×4(又は8)とな
り、BのLong Literalモードでは、lは l=1+2+3+8+“length”×4(又は8)
となり、CのDescriptor Indexモードでは、l
は、 l=6 となり、DのInline Descriptorモードでは、l
は、 l=63 となる。このように、上述した命令体系では、オ
ペランドの形式、アドレツシングモードを指定す
る部分が、可変長のオペランド指定子で規定さ
れ、オペレーシヨンコードから独立であるといつ
た特徴がある。上述の命令体系では、オペランド
のアドレツシングモードがLiteralとDescriptorの
みであつたが、もちろん、これらのアドレツシン
グモード以外のアドレツシングモードを含めて考
えることができよう。 第2図A〜FはDEC社のVAX11の例における
6つの代表的なアドレツシングモードのオペラン
ド指定子のフオーマツトを示している。Aは、リ
テラル(Literal)モード時のオペランド指定子
のフオーマツトを示し、“Lit”のフイールドの6
ビツトのデータがオペランドとなるモードであ
る。Bは、レジスタ指定(Register)モード時の
オペランド指定子のフオーマツトを示し、“Rn”
のフイールドの4ビツトがオペランドとなるレジ
スタのアドレスを示すモードである。Cは、レジ
スタ修飾(Disp)モード時のオペランド指定子
のフオーマツトを示し、“Rn”のフイールドで指
定されるレジスタの内容と“Disp”のフイール
ドで指定されるデイスプレイスメント部とを加算
したメモリアドレスの位置上のデータがオペラン
ドとなるモードである。前記デイスプレイスメン
ト部の長さは、Cに示した8ビツトの他に、16ビ
ツト、32ビツトの長さをとりうる。Dは、Cのア
ドレツシングモードにインデツクス修飾を加えた
時のオペランド指定子を示し、“Rx”のフイール
ドで指定されるアドレス上のレジスタがインデツ
クスレジスタとして、アドレス計算時に加算され
る(Disp with Index)モードである。Eはプロ
グラムカウンタ相対のアドレツシングモード時の
オペランド指定子のフオーマツトを示し、プログ
ラムカウンタの内容と、“Disp”のフイールドで
指定されるデイスプレイスメント部とを加算した
メモリアドレス上のデータがオペランドとなる
(Relative)モードである。Fは、アブソリユー
ト(Absolute)モード時のオペランド指定子の
フオーマツトを示し、“Abso”で示されるフイー
ルドがオペランドの所在するメモリアドレスを示
すモードである。 上述したように、VAX11のアーキテクチヤ
は、オペランド指定子の長さが8ビツト(バイ
ト)を基本単位長として構成されている点に特徴
がある。 アドレツシングモードのレパートリーとして、
B1700はCOBOL等の言語向きであり、VAX11
は、FORTRANやPL/Iなどに適す。VAX11の
アドレツシングモードのレパートリーを採り、し
かもオペランド指定子の効率を高めるため、該オ
ペランド指定子の長さをビツトバリアブルとする
命令フオーマツトの例を第3図に示している。 第3図A,Bはオペランドがリテラルデータで
与えられる場合のオペランド指定子のフオーマツ
トを示す図であり、5ビツト以下のリテラルデー
タの場合には第3図Aに示すShort Literalのフ
オーマツトとなり、6ビツト以上の長さのリテラ
ルデータの場合には第3図Bに示すLong Literal
のフオーマツトをとる。 第3図Cは、レジスタ指定モード時のオペラン
ド指定子のフオーマツトを示し、“Rn”のフイー
ルドで指定されるアドレスのレジスタがオペラン
ドとなる。第3図Dは、レジスタ修飾モード時の
オペランド指定子のフオーマツトを示し、“Rn”
のフイールドで指定されるアドレス上のレジスタ
と、デイスプレイスメントの長さを示す
“DispLen”部とデイスプレイスメント部
“Disp”とから成る。 第3図Eはプログラムカウンタ相対モード時の
オペランド指定子のフオーマツトを示し、
“DispLen”部と“Disp”部とから成る。第3図
FはAbsoluteモード時のオペランド指定子のフ
オーマツトを示し、“Abso”で示されるフイール
ドがオペランドの所在するメモリアドレスを示す
モードである。 第3図に示すオペランド指定子のフオーマツト
は、数多いアドレツシングモードの一例にすぎ
ず、この他にも種々の形式のオペランド指定子が
あることはもちろんであるが本発明の理解には必
要がないので省略する。 以上、第1図〜第3図に示す命令フオーマツト
の例では、各オペランド毎にアドレツシングモー
ドを規定するため、オペレーシヨンコード(以
下、オペコードを略す)及びオペランド相互間に
対してアドレツシングモードの独立性が確保され
る。但し、各オペランドがリード(read)オペラ
ンド、ライト(write)オペランド、又はリー
ド・アンド・ライト(read and write)オペラン
ド等のいずれのアクセスタイプとして使用される
かといつた制約はオペコードで規定されるもので
(オペコードに対する属性)ある。従つて、各オ
ペランド指定子は前記オペコードに対する属性を
満たすアドレツシングモードであることが必要で
ある。アクセスタイプは前記のリード、ライト、
リード・アンド・ライトの他にもあることはもち
ろんである。 また、オペランド自身の長さ(データ長)につ
いては、オペコードに対する属性とも考えられる
し、オペランド指定子で指定されるものとも考え
られが、本発明に、これらの違いが影響すること
はないので、データ長の扱いについての説明は省
略する。 上述した命令体系では、一般にオペコードが同
一であつても命令語としては種々の長さとなり、
しかも命令語の先頭のフイールドはオペコードに
決まつているが、それ以外の部分は種々の意味を
持ちうるため、命令語中のフイールドの意味が一
義的には定まらない。また、命令語中に含まれる
オペランド指定子がアドレツシングモードに対応
して、その長さを変えるため同一のオペコードで
あつても命令語の長さは種々の値をとる。従つ
て、このような命令体系を扱う命令デコードユニ
ツトに於いて、1つの命令語を1度に取込んで該
命令のデコードを行う方式を採るとすると、ハー
ドウエアの規模が膨大なものとなり、かつ複雑な
制御を行わなければならないといつた欠点が多
い。 別の命令デコード手段として、ある特定の長さ
の単位を決め、その1つ、又は複数の単位長ずつ
命令語を取込んでデコードする方法が考えられる
が、8ビツト(1バイト)を基本単位とした場合
基本的な命令で3〜7バイトの命令長となるた
め、例えばマシンサイクルに同期して命令語のデ
コードを進めるとすると、1命令のデコードに命
令語のバイト数だけマシンサイクルを費すことと
なり、命令デコードが遅くなり、処理の高速化と
いう点では、マイナス面が大きい。 このように、上述した命令体系を有するデータ
処理装置に於いては、いかにして命令デコードの
処理を高速化し、効率の良いパイプライン処理を
実現するかが重要な鍵となる。 本発明は、上記の問題に鑑みてなされたもの
で、その目的は、可変長命令を高速に実行するデ
ータ処理装置を提供することにある。 本発明の別の目的は、いかなる数のオペランド
指定子を含む命令においても高速に実行するデー
タ処理装置を提供することにある。 本発明の更に別の目的は、オペランド指定子が
いかなる長さであつても1マシンサイクルに1個
のオペランドの準備を行うパイプライン制御デー
タ処理装置を提供することにある。 本発明の更に別の目的は、命令間のパイプライ
ン処理に加えてオペランド間のパイプライン処理
を図つたパイプライン制御データ処理装置を提供
することにある。 本発明の更に別の目的は、命令の最終のオペラ
ンドのオペランド指定子のアドレツシングモード
がレジスタ指定モードで与えられる場合に、命令
語の最終オペランドの1つ前のオペランドのオペ
ランドのオペランド指定子のデコードサイクルに
て、同時に最終オペランドのオペランド指定子の
デコードも行うことにより、高速に実行するデー
タ処理装置を提供することにある。 本発明の特徴は、可変長の命令及びオペランド
を格納するメモリから命令を先行して読み出し保
持する命令バツフア手段と、該命令バツフア手段
から少なくとも1組のオペランド指定子を切出す
命令アライナ手段と、該命令アライナ手段によつ
て取出された命令に含まれるオペランド指定子を
特定し且つ命令のフアンクシヨンを特定するオペ
コードデコード手段と、該命令アライナ手段によ
つて取出されたオペランド指定子をデコードする
オペランド指定子デコード手段を有し、1マシン
サイクルに少なくとも1個のオペランドのオペラ
ンド指定子をデコードすることによつてそれぞれ
異なるオペランドの準備を行い、複数のオペラン
ド間のパイプライン処理を実現するようにしてい
ることである。 以下、図面を参照して、本発明の実施例を詳細
に説明する。 第4図は、本発明を適用したパイプライン制御
データ処理装置の一実施例を示すブロツク図であ
る。第4図における略称と正式の名称は次のよう
な関係にある。
The present invention relates to a data processing device that performs pipeline control, and more particularly to a data processing device that handles variable-length instructions in which an operand specifier that specifies the addressing mode of an operand is given independently from a code portion that specifies an operation. It is something. Instruction systems having variable-length operand specifiers are well known, and two typical examples are shown below. One is Burroughs Corpora.
This is the instruction format for the B1700 computer (B1700 COBOL/RPG-S-
Language,1058823−015,Copyright1973,
Burroughs Corporation”. The other one is DEC (Digital Equipment)
This is an instruction system with variable-length operand specifiers that is part of the architecture of the VAX11/780 computers of
“VAX11Architectre Handbook, Copyright
1979”. Figures 1A-D illustrate four typical addressing modes in the example of the Burroughs B1700. A is Short Literal
Indicates the operand specifier that specifies the operand address in mode, the Type field indicates the type of data (signed or not, identification of the basic length (4 bits or 8 bits) of the Literal Value field), and the "Length" Field and “Type”
field defines the length of the Literal Value field. Therefore, the Literal Value field can range from 4 bits to a maximum of 56 bits (specify 8-bit signedness in the “Type” field,
(when Length is 7). B indicates an operand specifier that specifies an operand address in the long literal mode, and is used when obtaining literal data with a length exceeding that in the short literal mode. C indicates an operand specifier that specifies the operand address in Descriptor Index mode;
The data at the address specified by the index value from the entry address of the descriptor table becomes the operand. D is an inline descriptor (Inline
Descriptor) Indicates an operand specifier that specifies the operand address in “Descriptor” mode.
The data given in the field becomes the operand. Of course, the four types of addressing modes described above are not all, and there are others. As shown in FIG. 1, the length of the operand specifier can vary. That is, Short of A
In Literal mode, the length l (bits) occupied in the instruction field of the operand specifier is l = 1 + 2 + 3 + "length" × 4 (or 8), and in B's Long Literal mode, l is l = 1 + 2 + 3 + 8 + "length" × 4 (or 8)
So, in C's Descriptor Index mode, l
becomes l=6, and in Inline Descriptor mode of D, l
becomes l=63. As described above, the above-mentioned instruction system is characterized in that the part that specifies the operand format and addressing mode is defined by a variable-length operand specifier, and is independent of the operation code. In the above instruction system, the operand addressing modes are only Literal and Descriptor, but of course addressing modes other than these addressing modes can also be considered. FIGS. 2A-2F show the format of operand specifiers for six typical addressing modes in the example of DEC's VAX11. A indicates the format of the operand specifier in literal mode, and 6 in the “Lit” field.
In this mode, bit data is the operand. B indicates the format of the operand specifier in register specification (Register) mode, and “Rn”
This is a mode in which the 4 bits of the field indicate the address of the register serving as the operand. C indicates the format of the operand specifier in register modification (Disp) mode, and is the memory address that is the sum of the contents of the register specified by the “Rn” field and the displacement section specified by the “Disp” field. This is a mode in which the data at the position is the operand. The length of the displacement section can be 16 bits or 32 bits in addition to the 8 bits shown in C. D indicates an operand specifier when index modification is added to the addressing mode of C, and the register at the address specified in the "Rx" field is added as an index register when calculating the address (Disp with Index) mode. E indicates the format of the operand specifier in the program counter relative addressing mode, and the operand is the data at the memory address that is the sum of the contents of the program counter and the displacement part specified by the "Disp" field. This is Relative mode. F indicates the format of the operand specifier in absolute mode, in which the field indicated by "Abso" indicates the memory address where the operand is located. As mentioned above, the VAX11 architecture is characterized in that the length of the operand specifier is configured with 8 bits (bytes) as the basic unit length. As a repertoire of addressing modes,
B1700 is suitable for languages such as COBOL, and VAX11
is suitable for FORTRAN, PL/I, etc. FIG. 3 shows an example of an instruction format that adopts the VAX11 addressing mode repertoire and also makes the length of the operand specifier bit variable in order to increase the efficiency of the operand specifier. Figures 3A and 3B are diagrams showing the format of an operand specifier when the operand is given as literal data. In the case of literal data of 5 bits or less, the format is Short Literal as shown in Figure 3A. In the case of literal data with a length of bits or more, the Long Literal shown in Figure 3B is used.
Take the format. FIG. 3C shows the format of the operand specifier in the register specification mode, and the register at the address specified by the "Rn" field becomes the operand. Figure 3D shows the format of the operand specifier in register modification mode, and “Rn”
It consists of a register at the address specified by the field, a "DispLen" section indicating the displacement length, and a displacement section "Disp". Figure 3E shows the format of the operand specifier in program counter relative mode.
It consists of a “DispLen” section and a “Disp” section. FIG. 3F shows the format of the operand specifier in the Absolute mode, in which the field indicated by "Abso" indicates the memory address where the operand is located. The format of the operand specifier shown in FIG. 3 is only one example of the many addressing modes, and it goes without saying that there are various other formats of operand specifiers, but these are not necessary for understanding the present invention. Since there is none, I will omit it. As mentioned above, in the example of the instruction format shown in FIGS. 1 to 3, since the addressing mode is defined for each operand, the addressing mode is not specified for the operation code (hereinafter abbreviated as "opcode") and between the operands. Mode independence is ensured. However, restrictions such as whether each operand is used as an access type, such as a read operand, a write operand, or a read and write operand, are specified by the opcode. (attribute for opcode). Therefore, each operand specifier needs to be an addressing mode that satisfies the attributes for the opcode. The access type is read, write,
Of course, there are other methods besides read and write. Furthermore, the length of the operand itself (data length) can be considered as an attribute for the opcode or specified by the operand specifier, but these differences do not affect the present invention, so An explanation of how to handle the data length will be omitted. In the above-mentioned command system, even if the opcode is the same, the length of the command word will generally vary.
Furthermore, although the field at the beginning of the instruction word is determined to be the opcode, the other parts can have various meanings, so the meaning of the field in the instruction word is not uniquely determined. Further, since the length of the operand specifier included in the instruction word changes depending on the addressing mode, the length of the instruction word takes various values even if the operation code is the same. Therefore, if an instruction decoding unit that handles such an instruction system were to take in one instruction word at a time and decode that instruction, the scale of the hardware would be enormous; It also has many drawbacks, such as the need for complex control. Another method for decoding instructions is to decide on a specific length unit and decode the instruction word by one or more unit lengths, but the basic unit is 8 bits (1 byte). In this case, the instruction length for a basic instruction is 3 to 7 bytes, so for example, if the instruction word is decoded in synchronization with the machine cycle, it will take as many machine cycles as the number of bytes of the instruction word to decode one instruction. This slows down instruction decoding, which has a big negative side in terms of speeding up processing. As described above, in a data processing device having the above-mentioned instruction system, the key is how to speed up the instruction decoding process and realize efficient pipeline processing. The present invention has been made in view of the above problems, and an object thereof is to provide a data processing device that executes variable length instructions at high speed. Another object of the present invention is to provide a data processing device that executes instructions containing any number of operand specifiers at high speed. Yet another object of the present invention is to provide a pipeline control data processing system that prepares one operand per machine cycle, regardless of the length of the operand specifier. Still another object of the present invention is to provide a pipeline control data processing device that performs pipeline processing between operands in addition to pipeline processing between instructions. Still another object of the present invention is to provide an operand specifier for an operand of an operand immediately preceding the final operand of an instruction when the addressing mode of the operand specifier of the final operand of the instruction is given as a register specification mode. An object of the present invention is to provide a data processing device that executes at high speed by simultaneously decoding the operand specifier of the final operand in the decoding cycle. The features of the present invention include: an instruction buffer means that reads and holds instructions in advance from a memory that stores variable-length instructions and operands; an instruction aligner means that extracts at least one set of operand specifiers from the instruction buffer means; an operation code decoding means for specifying an operand specifier included in an instruction extracted by the instruction aligner means and a function of the instruction; and an operand specification for decoding the operand specifier extracted by the instruction aligner means. It has a child decoding means, and prepares each different operand by decoding the operand specifier of at least one operand in one machine cycle, thereby realizing pipeline processing between multiple operands. That's true. Embodiments of the present invention will be described in detail below with reference to the drawings. FIG. 4 is a block diagram showing an embodiment of a pipeline control data processing device to which the present invention is applied. The abbreviations and official names in Figure 4 have the following relationship.

【表】【table】

【表】 第4図において、主記憶装置(MM)301
は、前述した可変長の命令及び、この命令が扱う
オペランドを記憶するもので、主記憶制御ユニツ
ト(MCU)302の制御を受けて、高速バツフ
アメモリ(BM1)303、(BM2)304との間で
データの授受を行う。 320,323,340,342はアドレスバ
ス、321,324,341,343,410は
データバスである。 命令フエツチユニツト(IFU)305は、命令
のアドレスを信号線327によつて、BM1303
に送出し、命令語の先行読み出しを行う。 IFU305に取込まれた命令は、命令デコード
ユニツト(DU)309に、オペコード及びオペ
ランド指定子単位に信号線329を介して送ら
れ、デコードされる。 アドレス計算ユニツト(AU)310は、DU
309でデコードされたアドレツシングモード
(信号線336を介して与えられる)に従つて、
オペランドの実効アドレスを計算し、その結果を
オペランドフエツチユニツト(OFU)311に
信号線337を介して出力する。 OFU311は、AU310から渡されたオペラ
ンドのアドレスを信号線330を介してBM230
4に送出してオペランドを先行フエツチする。
BM2304はOFU311から渡されたアドレス
上のデータを有する場合には、該データを直ち
に、信号線331を介してOFU311に渡し、
該当するアドレス上のデータがない場合には
MCU302を介してMM301をアクセスし、
前記アドレス上のデータを読み出し、OFU31
1に渡す動作を行う。 実行ユニツト(EU)312は、OFU311か
ら信号線338を介してオペランドを受取り、命
令を実行する。 ここで、各ユニツトは、ほぼ独立に動作し、オ
ペランド間のパイプライン処理を行う。 以下、第4図に示したデータ処理装置の個々の
ユニツトについて、その具体的な実施例を第5図
〜第9図を参照して説明する。 第5図は、IFU305の構成を示すもので、こ
こで使用されている略称と正式の名称は次のよう
な関係にある。
[Table] In Figure 4, main memory (MM) 301
is used to store the above-mentioned variable-length instructions and the operands handled by these instructions. Under the control of the main memory control unit (MCU) 302, it is stored in the high-speed buffer memories (BM 1 ) 303 and (BM 2 ) 304. Data is exchanged between the two. 320, 323, 340, and 342 are address buses, and 321, 324, 341, 343, and 410 are data buses. The instruction fetch unit (IFU) 305 sends the address of the instruction to BM 1 303 via a signal line 327.
The instruction word is read in advance. The instruction taken into the IFU 305 is sent to an instruction decode unit (DU) 309 via a signal line 329 in units of operation code and operand specifier, and is decoded. Address calculation unit (AU) 310
According to the addressing mode decoded at 309 (given via signal line 336),
The effective address of the operand is calculated and the result is output to the operand fetch unit (OFU) 311 via signal line 337. The OFU 311 sends the address of the operand passed from the AU 310 to the BM 2 30 via the signal line 330.
4 to fetch the operand in advance.
If the BM 2 304 has data on the address passed from the OFU 311, it immediately passes the data to the OFU 311 via the signal line 331,
If there is no data on the corresponding address
Access MM301 via MCU302,
Read the data on the address and send it to OFU31
Perform the action of passing to 1. Execution unit (EU) 312 receives operands from OFU 311 via signal line 338 and executes instructions. Here, each unit operates almost independently and performs pipeline processing between operands. Hereinafter, specific examples of the individual units of the data processing apparatus shown in FIG. 4 will be described with reference to FIGS. 5 to 9. FIG. 5 shows the configuration of the IFU 305, and the abbreviations and official names used here have the following relationship.

【表】 IFU305の主たる構成要素は、BM1303か
ら読み出す命令のアドレスを送出するフエツチポ
インタ(FP)404と、先行して読み出したデ
ータを蓄えておく命令バツフア(IB)401
と、IFUの内部動作及びBM1303へのメモリア
クセスの制御を行うための制御回路(IF―
CONT)403と、FP404の内容をインクリ
メントするためのインクリメンタ(INC)406
と、FP404にセツトするデータを選択するセ
レクタ(SEL)405及びIB401内に先行し
て読み出されている命令を、アドレス11Aによ
つて次にデコードすべき順にビツト単位に並べ換
えて取り出す働きを行う命令アライナ(ALIG)
402である。 第6図は、命令デコードユニツト(DU)30
9の具体的な構成を示すもので、ここで使用され
ている略称と正式の名称は次のような関係にあ
る。
[Table] The main components of the IFU 305 are a fetch pointer (FP) 404 that sends the address of the instruction to be read from the BM 1 303, and an instruction buffer (IB) 401 that stores the data read in advance.
and a control circuit (IF-
CONT) 403 and an incrementer (INC) 406 for incrementing the contents of FP404.
Then, the selector (SEL) 405 that selects the data to be set in the FP 404 and the instructions previously read out in the IB 401 are rearranged bit by bit in the order to be decoded next using the address 11A. Instruction aligner (ALIG)
It is 402. FIG. 6 shows an instruction decode unit (DU) 30.
9, and the abbreviations and official names used here have the following relationship.

【表】【table】

【表】 μプログラムアドレス生成回路(ECSAG)5
01は、IFU305から信号線329を介して与
えられるオペコードによつてEU312で実行さ
れる先頭のマイクロプログラムアドレス10Bを
生成する。 オペランド用情報メモリ(DCS)503は、
信号線329よりセレクタ(SEL)502を介し
て与えられるオペコード中のオペランドに関する
情報を格納する。 オペランド指定子デコーダ(OS―DEC)50
5は、信号線329中のオペランド指定子をデコ
ードする。 制御データ生成回路(ACIG)504は、DCS
503とOS―DEC505から与えられた情報に
より、アドレス計算ユニツト(AU)301にて
オペランドのアドレス計算を行うための制御デー
タ336を生成する。 レジスタ指定モード検出手段(RD―DEC)5
06は、OS―DEC505にてデコードされるオ
ペランド指定子(OS)に引き続くOSがレジスタ
指定モードであるか否かを検出するもので、レジ
スタ指定モードであれば、そのレジスタのアドレ
ス12Bを後述するAU310内のレジスタ
(ARR)610にセツトする。 デコードビツト(バイト)数算出手段
(DBNC)507は、OS―DEC505およびRD
―DEC506からの信号を受信して、IB401
から読み出して、そのサイクルでデコードすべき
ビツト数の算出を行う。 データアライナ(D―ALIG)508は、OS―
DEC505にてデコードするOSが、リテラルデ
ータ、デイスプレイスメント、あるいは、絶対ア
ドレスのいずれかを含む場合、これを取出して並
べ換える動作を行う。 制御回路(D―CONT)509は、IF―
CONT403からの信号12Aを受信してDU3
09全体の動作を制御する。 レジスタ(DP)510は、そのサイクルにて
デコードする先頭のアドレスを示す。 セレクタ(SEL)511は、DP510にセツ
トするデータを選択する。 インクリメンタ(INC)512は、DP510
の内容11Aをそのサイクルにてデコードした命
令のビツト数だけ加数する。 デコードに必要なビツト(バイト)数算出手段
(NBNC)513は、OS―DEC505からの信号
を受信して、IB401から読み出してそのサイ
クルにてデコードするのに必要なビツト数(バイ
ト)の算出を行う。アドレス計算用プログラムカ
ウンタ値算出手段(TPCC)514は、デコード
するOSのプログラムカウンタ相対のアドレス計
算を行うために必要なプログラムカウンタの値を
算出する。 第7図は、第4図に示すアドレス計算ユニツト
(AU)310の構成を示すもので、ここで使用
されている略称と正式の名称は次のような関係に
ある。
[Table] μ program address generation circuit (ECSAG) 5
01 generates the first microprogram address 10B to be executed in the EU 312 according to the opcode given from the IFU 305 via the signal line 329. The operand information memory (DCS) 503 is
Information regarding the operand in the operation code given from the signal line 329 via the selector (SEL) 502 is stored. Operand specifier decoder (OS-DEC) 50
5 decodes the operand specifier in signal line 329. The control data generation circuit (ACIG) 504 is a DCS
503 and the information given from the OS-DEC 505, the address calculation unit (AU) 301 generates control data 336 for calculating the address of the operand. Register specification mode detection means (RD-DEC) 5
06 detects whether or not the OS following the operand specifier (OS) decoded by the OS-DEC 505 is in register specification mode. If it is in register specification mode, the address 12B of that register will be described later. Set in register (ARR) 610 in AU 310. The decode bit (byte) number calculation means (DBNC) 507 is an OS-DEC 505 and RD
-Receiving the signal from DEC506, IB401
The number of bits to be decoded in that cycle is calculated. The data aligner (D-ALIG) 508 is an OS-
If the OS to be decoded by the DEC 505 includes literal data, displacement, or absolute addresses, this is extracted and rearranged. The control circuit (D-CONT) 509 is IF-
DU3 receives signal 12A from CONT403
Controls the entire operation of 09. A register (DP) 510 indicates the first address to be decoded in that cycle. A selector (SEL) 511 selects data to be set in the DP 510. Incrementer (INC) 512 is DP510
The content 11A of is added by the number of bits of the instruction decoded in that cycle. The number of bits (bytes) required for decoding calculation means (NBNC) 513 receives the signal from the OS-DEC 505, reads it from the IB 401, and calculates the number of bits (bytes) required for decoding in that cycle. conduct. A program counter value calculation means for address calculation (TPCC) 514 calculates a program counter value necessary for performing address calculation relative to the program counter of the OS to be decoded. FIG. 7 shows the configuration of the address calculation unit (AU) 310 shown in FIG. 4, and the abbreviations and official names used here have the following relationship.

【表】【table】

【表】 第7図において、レジスタ(AER)601
は、第6図のECSAG501で生成されたマイクロ
プログラムの先頭アドレス10Bを保持する。 レジスタ(ACR)602は、第6図のACIG5
04の出力である制御データ336を保持する。
デコーダ(A―DEC)603は、AU310全体
の動作を制御する。 フラグ(ACVF)604は、AU310の動作
の開始を指示する。 レジスタ(ARAR)605は、オペランドのア
ドレス計算の際に参照されるレジスタのアドレス
11Bを記憶する。 レジスタフアイル(ARF)606は、オペラ
ンドのアドレス計算の際に参照されるレジスタ群
である。 セレクタ(SEL)607,608は、演算器
(A―ADR)609の入力を選択する。 A―ADR609は、SEL607,608によ
つて選択された信号に基づいて、オペランドのア
ドレスを求めるための演算を行う。 レジスタ(ARR)610は、オペランド指定
子(OS)に含まれるレジスタのアドレス12B
を保持する。 レジスタ(DR)611は、オペランド指定子
(OS)に含まれるデイスプレイスメント、絶対ア
ドレス、あるいはリテラルデータ13Bを保持す
る。レジスタ(TPC)613は、プログラムカ
ウンタ相対のアドレス計算を行うために必要なプ
ログラムカウンタの値16Bを保持する。 A―ADR609の出力337は、バスドライ
バ612を介してバス410に出力される。 第8図は、第4図に示すオペランドフエツチユ
ニツト(OFU)311の構成を示すもので、こ
こで使用されている略称と正式の名称は次のよう
な関係にある。
[Table] In Figure 7, register (AER) 601
holds the start address 10B of the microprogram generated by ECSAG 501 in FIG. The register (ACR) 602 is ACIG5 in FIG.
The control data 336 which is the output of 04 is held.
A decoder (A-DEC) 603 controls the overall operation of the AU 310. A flag (ACVF) 604 instructs the AU 310 to start operating. A register (ARAR) 605 stores a register address 11B that is referenced when calculating an operand address. A register file (ARF) 606 is a group of registers referenced when calculating addresses of operands. Selectors (SEL) 607 and 608 select inputs of arithmetic unit (A-ADR) 609. The A-ADR 609 performs calculations to obtain the address of the operand based on the signals selected by the SELs 607 and 608. The register (ARR) 610 is the register address 12B included in the operand specifier (OS).
hold. The register (DR) 611 holds displacement, absolute address, or literal data 13B included in the operand specifier (OS). A register (TPC) 613 holds a program counter value 16B necessary for performing program counter relative address calculation. The output 337 of the A-ADR 609 is output to the bus 410 via the bus driver 612. FIG. 8 shows the configuration of the operand fetch unit (OFU) 311 shown in FIG. 4, and the abbreviations and formal names used here have the following relationship.

【表】【table】

【表】 第8図において、レジスタ(OER)701
は、マイクロプログロムの先頭アドレス10Cを
保持する。 レジスタ(OFCR)702は、第7図のA―
DEC603の出力11Cを保持する。 フラグ(OFCVF)703はOFU311の動作
の開始を指示する。 デコーダ(OF―DEC)704は、OFU311
全体の動作を制御する。 レジスタ(MAR)705は、オペランドのメ
モリアドレス337を保持する。 セレクタ(SEL)706は、レジスタ
(OBR)707にセツトするデータを選択する。 レジスタ(OBR)707はSEL706を介し
て入力するオペランドを格納する。 データアライナ(OALIG)708は、OBR7
07内のデータを並べ換えて、データフオーマツ
トを整える。 レジスタ(ORR)709は、第7図のARR6
10から与えられるレジスタのアドレス13Cを
保持する。 第9図は、第4図に示す実行ユニツト(EU)
312の構成を示すもので、ここで使用されてい
る略称と正式の名称は次のような関係にある。
[Table] In Figure 8, register (OER) 701
holds the starting address 10C of the microprogram. The register (OFCR) 702 is A- in FIG.
Holds output 11C of DEC603. A flag (OFCVF) 703 instructs the OFU 311 to start operating. Decoder (OF-DEC) 704 is OFU311
Control the entire operation. Register (MAR) 705 holds the memory address 337 of the operand. A selector (SEL) 706 selects data to be set in a register (OBR) 707. A register (OBR) 707 stores operands input via SEL 706. Data aligner (OALIG) 708 is OBR7
Sort the data in 07 and adjust the data format. Register (ORR) 709 is ARR6 in Figure 7.
The address 13C of the register given from 10 is held. Figure 9 shows the execution unit (EU) shown in Figure 4.
312, and the abbreviations and official names used here have the following relationship.

【表】【table】

【表】 第9図において、マイクロプログラムコントロ
ーラ(MPC)801は、マイクロプログラムメ
モリ(ECS)802のメモリアドレスをコント
ロールする。マイクロプログラムメモリ802
は、MPC801によつて指定されたアンドレス
からマイクロプログラムを取り出し、これを、マ
イクロ命令レジスタ(MIR)803にセツトす
る。 MIR803の出力は、第8図のOF―DEC70
4、MPC801、後述するセレクタ804,8
14に出力されている。 セレクタ804,805は演算器(EALU)8
06の入力データを選択する。 テンポラリレジスタ(TR)808は、バス4
50からのデータを一時的に保持する。 シフト回路(SHF)809はTR808からの
データをシフトし、その結果をバスドライバ81
0を介してバス450に出力する。 ワークレジスタフアイル(ERF)811は、
EALU806が使用するワークレジスタ群であ
る。 汎用レジスタフアイル(ERF)812は、同
じくEALU806が使用する汎用レジスタ群であ
る。 レジスタ(ERAR)813は、第8図のORR
709から転送されるレジスタアドレス11Dを保
持する。 セレクタ(SEL)814はERF812のアド
レスを選択する。 次に本実施例の命令処理シーケンスの例を基本
的な命令の場合について説明する。 IFU305は、FP404の値をアドレスとし
てBM1303をアクセスし、命令の先読みを行
う。BM1303から読み出されたデータが送られ
て来た時に、IB401内に上記データが格納で
きるだけの空エリヤが存在する場合には、これを
取込み、存在しない場合にはこれを無視する。上
記空エリヤが存在するか否かの判断はFP404
の値とDP510からの出力11AとをもとにIF
―CONT403が行う。本実施例では、BM130
3からのデータの読出し巾よりも多くのエリヤが
IB401に存在する場合に読み出したデータを
IB401内に格納する。 ALIG402はDP510の出力11Aをアドレ
スとして、IB401の該当するアドレス上の位
置を先頭としてアドレス順に揃えてIB401内
のデータを取出す。本実施例ではビツト単位に揃
えて取出すが、もちろん命令の基本長がバイトの
場合にはバイト単位に揃えることも可能である。
命令の最初のデコードサイクル時には、DP51
0はオペコードのアドレスを示しているため、
ALIG402から取出される先頭のデータはオペ
コード部分に相当し、それに続く第1オペランド
のオペランド指定子の部分が取出される。命令の
途中のデコードサイクルでは、DP510はオペ
ランド指定子のアドレスを示している場合もあ
り、この場合には、上記アドレスに対応するオペ
ランド指定子を先頭とする一連のデータが取出さ
れる。ALIG402からの出力329は、少なく
とも1組のオペランド指定子とオペコード部分を
含めることができるだけの巾を有する。 DU309はALIG402から取出される命令を
デコードする。DU309は常にALIG402の出
力329のデコードを行うが、デコード処理を完
了するための条件を次に説明する。 IB401内のデコードに使用されるべき有効
なデータ長はFP404とDP510との差によつ
て得られる。FP404は次のメモリアクセスに
よつてメモリから読み出すアドレスを示してお
り、DP510は次にデコードすべきメモリアド
レスの先頭を示す。従つてFP404はDP510
に対して、一致、又は進んでいる。ゆえにDP5
10とFP404が等しい時、IB401内に有効
なデータはない。FP404とDP510が等しく
ない場合、DP510からFP404を引いた値が
有効なデータの長さを示す。DU309はデコー
ドするために必要な長さをNBNC513によつて
算出し信号線13AによつてIFU305内のIF―
CONT403に通知する。IF―CONT403は
信号線13Aの内容とFP404とDP510との
差を比較し、前者が後者と等しいか小さい場合デ
コードに必要な長さがIB401内にあると判断
し、信号線12Aによつてその旨をDU309内
のD―CONT509に通知する。D―CONT50
9は信号線12Aにより、デコードに必要なバイ
ト数がIB401内にあるという通知を受け、さ
らに信号線15BによつてAU310がデコード
結果を受取れる状態である通知を受けた場合に、
DU309にてデコードした結果をAU310に
送り、そのデコードサイクルの処理を完了させ
る。デコードに必要なデータがIB401に揃つ
ていない場合、またはAU310がデコード結果
を受け取れる状態でない場合には、そのデコード
サイクルの処理を無効とし、次のサイクルにて再
度同一の処理を行うようにD―CONT509は制
御する。 DBNC507の出力17Bは(1)式で表わされ
る。 17B=α+β+γ ………(1) NBNC513の出力13Aは(2)式で表わされ
る。 13A=α+β+δ ………(2) ここで、α,βは、 DP510がオペコードのアドレスを示す場
合 α=オペコードのビツト数 β=該オペコード続く先頭のオペランド指定子
のビツト数 DP510がオペランド指定子のアドレスを
示す場合 α=0 β=該オペランド指定子のビツト数 である。 γは、 2個のオペランド指定子を同時にデコードす
る場合 γ=レジスタ指定モードのオペランド指定子の
ビツト数 1個のオペランド指定子のみデコードする場
合 γ=0 である。 δは、 2個のオペランド指定子の同時デコードが許
可された場合(DCS503によつて指示され
る) δ=レジスタ指定モードのオペランド指定子の
ビツト数 2個のオペランド指定子の同時デコードが不
許可の場合 δ=0 である。 命令の最初のデコードサイクルでは、ALIG4
02から出力される先頭部分はオペコードに相当
する。従つて、該先頭部分はDCS503のアド
レスとして、DCS503を読み出すのに使用さ
れる。 DCS503内には、各命令の1つのオペラン
ド指定子に、1語ずつアドレスが割当てられてい
る。DCS503の1語は、第10図に示すよう
に各命令のオペコードで規定される複数個のオペ
ランド指定子の内の1個のオペランド指定子のア
クセスの区別(リード、ライト、あるいはリー
ド・アンド・ライト)を示すフイールド(ADと
略す)と、データの長さを示すフイールド(DL
と略す)と、前記オペランド指定子にひき続くオ
ペランド指定子がある場合には、DCS503内
の該オペランド指定子に対応するアドレスを示す
ためのフイールド(JAと略す)と、命令の最終
のオペランド指定子である場合にはその事を示す
フイールド(Eと略す)と、2個のオペランド指
定子の同時デコードの許可を示すフイールド
(RDと略す)から成る。もちろん、この他にもい
くつかのフイールドを含んでいるが本発明には関
係しないので省略する。各命令は、該命令が有す
るオペランド指定子の数だけDCS503内に語
数が割当てられており、例えば3オペランドの命
令では3語が割当てられる。もちろん、命令間で
共用しても支障のない場合には、異なつた命令間
でも同一のアドレスを与えることによつてDCS
503の容量の縮減を図ることも可能である。あ
る命令の最初のデコードサイクル(t1)では、オ
ペコードがDCS503のアドレスとなつて、該
オペコードを規定される第1オペランドの情報
と、第2オペランドのDCS503上のアドレス
(JA)、その他の情報がDCS503から読み出さ
れる。この時、第1オペランド指定子はALIG4
02によつてIB401から取出されてOS―DEC
505にてデコードされる。前記オペランド指定
子内にデイスプレイスメント、絶対アドレス、あ
るいはリテラルデータが含まれる場合には、D―
ALIG508がそれらを取出して、データフオー
マツトを整えてDR611に格納する。DU309
は、上述した手順にてデコードした結果をAU3
10の各レジスタにセツトするとともに、ACVF
604をセツトしてAU310をして、前記デコ
ード結果に従つて前記オペランド指定子で示され
るオペランドのアドレス計算を開始せしめ、ま
た、そのサイクルにてデコードした命令のビツト
数(オペコードと第1オペランドのオペランド指
定子を構成するビツト数)をDBNC507にて算
出してこの値をINC512にてDP510の値に
加えて、DP510の内容を更新する。 前記命令が2個以上のオペランド指定子を持つ
命令の場合には、前記命令の最初のデコードサイ
クルの次のサイクル(t2)で、t1のサイクルにて
DCS503から読み出された情報の内のJAフイ
ールドをアドレスとしてDCS503からオペコ
ードで規定されて第2オペランドの情報が読み出
される。同時に、第2オペランドのオペランド指
定子がALIG402によつてIB401から取り出
されてOS―DEC505にて前記第1オペランド
のオペランド指定子のデコードと同様な手順に従
つてデコードされる。この時、AU310が前記
第1オペランドのオペランド指定子のデコード結
果を受けて、そのオペランドのアドレス計算を終
了し、次のオペランドのアドレス計算が受付けら
れる状態となつていれば、DU309は、前記第
2オペランドのオペランド指定子のデコード結果
をAU310の各レジスタにセツトするととも
に、ACVF604をセツトして、AU310をし
て前記第2オペランドのオペランド指定子で示さ
れるオペランドのアドレス計算を開始せしめ、ま
た、そのサイクルにてデコードした命令のビツト
数(第2オペランドのオペランド指定子を構成す
るビツト数)をDBNC507にて算出して、DP
510の値に加えて、DP510の内容を更新す
る。 以上の説明で明らかなように、DU309は、
1マシンサイクル毎に1個のオペランド指定子の
デコードを行い、デコード結果をAU310内の
レジスタにセツトして、AU310に、そのサイ
クルでデコードした結果に基づくオペランドのア
ドレス計算の指令を行う働きとともに、命令の最
初のデコードサイクルでは、オペコードをDCS
503のアドレスとして取込み、以降のサイクル
で該オペコードで規定される情報の取出しを行わ
せしめる。また、オペコードからECSAG501
によつてマイクロプログラムの先頭アドレスを求
めて、AER601にセツトする。 AU310は、DU309からあるOSのデコー
ド結果がAU310内のレジスタに設定されて、
ACVF604がセツトされた時に、該デコード結
果に従つてオペランドのアドレス計算を行い、算
出したオペランドのアドレスをOFU311内の
MAR705に、OFU311の動作制御情報を
OFCR702にそれぞれ設定し、OFCVF703
をセツトしてOFUユニツト311をして、MAR
705に設定されたアドレス上のメモリアクセス
を開始せしめる。あるオパラドのオペランド指定
子のアドレス計算が終了すると、DU309から
前記オペランド指定子に続くオペランド指定子を
受付けてAU310は、該オペランド指定子のア
ドレス計算を行う。このようにAU310は1個
のオペランド指定子単位にそのオペランド指定子
で指定されるオペランドのアドレス計算を順次行
うが、必ずしも1マシンサイクルで1個のオペラ
ンド指定子のアドレス計算が完了するとは限らず
複数のマシンサイクルを費す場合もあるのはもち
ろんである。また、あるオペランド指定子のアド
レス計算終了後、次のアドレス計算をするオペラ
ンド指定子が前記オペランド指定子の属する命令
と同一の命令に属する必要はない。AU310
は、また、命令の先頭の(第1の)オペランド指
定子のアドレス計算終了時に、AER601内に
格納されている前記命令のマイクロプログラム先
頭アドレス10CをOFU311のOER701に
転送する。 OFU311は、AU310からあるオペランド
指定子のアドレス計算情報がMAR705に、
OFU311の動作制御情報がOFCR702にそ
れぞれ置数され、OFCVF703がセツトされた
時に、メモリアクセスを開始する。リードしたデ
ータはOBR707に格納し、OALIG708にて
データのフオーマツトを整えてEU312に転送
する。また、OFU311は、命令の先頭(第
1)のオペランド指定子のメモリアクセスのサイ
クルにてOER701に格納されていたマイクロ
プログラム先頭アドレスをEU312のMPC80
1に転送する。但し、前記オペランド指定子のア
ドレツシングモードがリテラルデータの場合には
メモリアクセスは行なわないが、この時はMAR
705に渡されたリテラルデータのオペランドを
OBR707に転送する時にマイクロプログラム
先頭アドレスをMPC801に転送する。 上述したように、DU309にてデコードされ
た命令に関する情報(オペコード及びオペランド
指定子)は、AU310,OFU311を順に経由
してEU312に伝達される。 EU312は、MPC801に渡されたマイクロ
プログラム先頭アドレスからECS802をアク
セスしてマイクロ命令を読み出し、命令の実行を
開始する。オペランド指定子で規定されるオペラ
ンドは、OBR707又は、レジスタアドレスと
してERAR813から渡される。但し、前記オペ
ランドがデエステイネーシヨンとなる場合には該
オペランドのアドレスがMAR705に設定され
る。EU312は、OFU311から渡されたオペ
ランドを用いて演算を行い、結果をERF81
2,ARF606、又はバス334を介してBM2
304に格納する。これらの動作は全てマイクロ
プログラムによつて制御される。 第11図は、命令の流れと、それに伴う命令の
処理過程を表わすステージフローを示す図であ
る。第11図では、3つの命令(1),(2),(3)
を与えている。命令(1)〜(3)は全て2個のオペ
ランドを持つ命令とする。初めのサイクル(t1
で命令(1)の命令語の読み出し(IF(1))が行われ
る。次のサイクル(t2)では、オペコード及び第
1オペランドのオペランド指定子をデコードする
(D(1)1)。次のサイクル(t3)では、前記デコード
結果に従つて第1オペランドの実効アドレス計算
を行い(A(1)1)、同時に第2オペランドのオペ
ランド指定子のデコードを行う(D(1)2)。次の
サイクル(t4)では、第1オペランドのフエツチ
を行う(OF(1)1)と共に第2オペランドの実効
アドレス計算を行う(A12)。また同じサイクル
中に、命令(2)のオペコード及び第1オペランド
のオペランド指定子のデコードを行う
(D(2)1)。次のサイクル(t5)では、命令(1)の第
2オペランドのフエツチを行う(OF(1)2)と共
に命令(2)の第1オペランドの実効アドレス計算
(A21)、及び第2オペランドのオペランド指定子
のデコードを行う(D(2)2)。次のサイクル(t6
では、命令(1)の実行を行い(E1)、同時に命令
(2)の第1オペランドのフエツチ(OF(2)1)、第
2オペランドの実効アドレス計算(A(2)2)、及
び命令(3)のオペコード及び第1オペランドのオ
ペランド指定子のデコード(D(3)1)を行う。以
下、t7〜t11の各サイクルも同様な経過のもとに処
理が行われる。第11図において命令(2),(3)
のフエツチ(IF(2),IF(3))は、IB401内に無
効なエリヤがある定められたビツト数以上となる
場合に、命令の先行読み出しを行うことを示して
いる。 なお、第11図では、各オペランドの実効アド
レス計算サイクル、オペランドフエツチサイクル
がサイクルで終了する例を示したが、アドレツシ
ングの違いによつては1サイクルで、実効アドレ
ス計算が終了しない場合や、メモリを2回参照す
ることによつてオペランドが得られるアドレツシ
ングモード(Indirect mode;第1回目のメモリ
参照によつてオペランドのアドレスを得るアドレ
ツシングモード)などにより命令の流れと処理過
程は、様々となる。 第12図は、3個のオペランドを持つ命令(3
オペランド命令)が連続して実行される場合の命
令の流れとそれに伴う命令の処理過程を表わすス
テージフローを示す図である。第12図でも、第
11図と同様に3つの命令I(1),I(2),I(3)を与
えている。各サイクルでの命令の処理は、第11
図に説明した2オペランド命令が連続する場合と
同様である。ただし、3オペランド命令では一般
的に第3オペランドはソースオペランドではな
く、デエステイネイシヨンオペランドとなるた
め、第3オペランドのフエツチは行われない。3
つ以上のオペランドを有する命令のステージフロ
ーについても第11図及び第12図で説明した2
オペランド命令及び3オペランド命令のステージ
フローと本質的な違いはない。また、オペランド
の数の異なる命令が種々に混り合つていても、何
ら支障はない。 以上、2オペランド命令、及び3オペランド命
令の例について説明したが、1オペランド命令、
及び4個以上のオペランドを持つ命令において
も、第11図、第12図で示したステージフロー
と本質的な違いはないことはもちろんである。 次に、2個のオペランド指定子を同時にデコー
ドすることが許可されている命令に於ける2個の
オペランド指定子の同時デコード処理と、その後
の処理について述べる。 2個のオペランド指定子の同時処理は、上述の
ように2個のオペランド指定子の同時デコードを
許可されている命令に限つて行うものとするが、
もちろん、これは全ての命令について行うことも
可能である。 2個のオペランド指定子の同時処理は、命令語
に含まれるオペランド指定子の各デコードサイク
ルの内で、最終のオペランド指定子の手前のオペ
ランド指定子のデコード時に於いて、最終のオペ
ランド指定子のアドレツシングモードがレジスタ
指定の場合に行われ、レジスタ指定以外のモード
では行われず、その時は最終のオペランド指定子
の手前のオペランド指定子のみのデコードが行わ
れる。例として、2個のオペランド指定子を有す
る加算命令について以下説明する。該加算命令
は、第1オペランドと第2オペランドの内容を加
算して、結果を第2オペランドの位置に格納する
処理を行う。このため、第1オペランドはリード
オペランドであり、第2オペランドはリード・ア
ンド・ライトオペランドである。従つて、前記加
算命令のためのDCS503のパターンは第13
図に示すようなものとなる。すなわち、DCS5
03のオペコードの値に対応するアドレス上に、
第1オペランドの情報と、第2オペランドの
DCS503上のアドレスとが含まれており、さ
らに第1オペランドが最終オペランドの手前のオ
ペランドであるからDCS503のフイールドRD
が“1”(2個のOSの同時処理の許可を与えるこ
とを示す)となる形式をとる。第2オペランドの
DCS503のアドレス上には、第2オペランド
の情報と、第2オペランドが命令の最終のオペラ
ンドであることを示すフイールドEが“1”とな
る形式をとる。第14図は同一形式のオペランド
指定子を持つ加算命令が連続して実行される場合
でかつ、第2オペランドがレジスタ指定の場合の
ステージフローを示す。第2オペランドがレジス
タ指定でない場合には第14図に示すようなステ
ージフローとはならず、第11図に示すようなス
テージフローとなる。 以下、第14図を用いて、この時の命令処理過
程を説明する。初めのサイクル(t1)で命令I(1)
を含むアドレス上のデータ(命令)の読み出し
(IF(1))が行われる。次のサイクル(t2)では、命
令I(1)のオペコード及び第1オペランドのOSを
デコードするが、この時DCS503のフイール
ドRDが“1”で、かつ、DU309内のRD―
DEC506によつて、前記第1オペランドのOS
に続く第2オペランドのOSのアドレツシングモ
ードがレジスタ指定であることが検出されると、
RD―DEC506は前記第2オペランドのOSから
レジスタアドレスを取出してAU310内のARR
610に置数することによつて2個のOSを同時
にデコード(D1&D2(1))する。次のサイクル
(t3)では、AU310は、前記デコード結果に従
つて命令I(1)の第1オペランドのアドレス計算
(A1(1))を行い、結果をOFU311に転送すると
ともに、命令I(1)の第2オペランドのレジスタア
ドレスをOFU311内のORR709に転送す
る。同(t3)サイクルでDU309は、命令I(2)に
ついて、t2のサイクルと同様のデコード(D1&
D2(2))を行う。次のサイクル(t4)では、、OFU
311は、命令I(1)の第1オペランドのフエツチ
(OF1(1))を行うとともに、命令I(1)の第2オペ
ランドのレジスタアドレスをEU312に転送す
る。同(t4)サイクルで、AU310は命令I(2)の
第1オペランドのアドレス計算(A1(2))を行つ
て、結果をOFU311に転送するとともに、命
令I(2)の第2オペランドのレジスタアドレスを
OFU311に転送する。同(t4)サイクルでDU3
09は命令I(3)について、t2のサイクルにて命令
I(1)をデコードした場合と同様のデコード(D1
&D2(3))を行う。次のサイクル(t5)では、EU3
12はOFU311から命令I(1)の第1オペラン
ドと命令I(1)の第2オペランドのレジスタアドレ
スを受取つて命令I(1)の実行(E(1))を行う。同
(t5)サイクルにて、OFU311は命令I(2)の第1
オペランドのフエツチ(OF1(2))を行うととも
に、命令I(2)の第2オペランドのレジスタアドレ
スをFU312に転送する。同(t5)サイクルに
て、AU310は命令I(3)の第1オペランドのア
ドレス計算(A1(3))を行つて、結果をOFU31
1に転送するとともに、命令I(3)の第2オペラン
ドのレジスタアドレスをOFU311に転送す
る。以下、t6,t7のサイクルの各サイクルも同様
な経過のもとに処理が行われる。なお、第14図
では、各オペランドの実効アドレス計算サイク
ル、オペランドフエツチサイクルが1サイクルで
終了する例を示したが、アドレツシングの違いに
よつては1サイクルで実効アドレス計算が終了し
ない場合や、オペランドのフエツチ時にBM230
4にデータが存在しない場合にMM301までデ
ータを読みに行く場合などは複数のサイクルを費
さざるを得ない。従つて、このような場合には、
命令の流れと処理過程は、様々となる。 第15図は、3個のオペランドを持つ同一形式
の命令が連続して実行される場合の命令の流れと
それに伴う命令の処理過程を表わすステージフロ
ーを示す図である。第15図でも、第14図と同
様に3つの命令I(1),I(2),I(3)を与えている。
各命令は第14図と同様に最終オペランドがレジ
スタ指定モードである時、最終オペランドの手前
のオペランドのデコードサイクル時に、2個のオ
ペランド指定子を同時にデコードすることが許可
されている命令である。第15図は、最終オペラ
ンド(第3オペランドがこれに相当する)がレジ
スタ指定のアドレツシングモード時のステージフ
ローを示す。第3オペランドがレジスタ指定以外
のアドレツシングモードの場合には、第15図に
示すようなステージフローとはならず、第12図
に示すようなステージフローとなる。第14図に
示す2オペランド命令の場合、第1オペランドの
オペランド指定子をデコードするサイクルにて、
2個のオペランド指定子のデコードを行つたが、
第15図に示す3オペランド命令の場合には、第
2オペランドのオペランド指定子をデコードする
サイクルにて2個のオペランド指定子のデコード
を行う点が異なる。これは、命令の最終オペラン
ドの手前のオペランドとして、2オペランド命令
では第1オペランドが該当し、3オペランド命令
では第2オペランドが該当するために生ずる違い
であり、本質的な違いはないことはもちろんであ
る。 以上、第14図、及び第15図にて2オペラン
ド命令と3オペランド命令の例について説明した
が、4個以上のオペランドを持つ命令において
も、該命令の最終オペランドがレジスタ指定のア
ドレツシングモード時に、その手前のオペランド
のオペランド指定子をデコードするサイクルで2
個のオペランド指定子の同時デコードが可能であ
ることはもちろんである。また、オペランドの数
の異なる命令が種々に混り合つていても、何ら支
障はない。 このように、本発明の一実施例によれば、オペ
ランド指定子が任意のビツト数から成る可変長命
令の処理を高速に実行するパイプライン制御デー
タ処理装置が実現でき、例えば2オペランドの基
本的な命令の平均的な実行時間は2マシンサイク
ルとなり、3オペランド命令の場合には3マシン
サイクルとなる効果がある。さらに、命令の最終
オペランドのオペランド指定子がレジスタ指定の
アドレツシングモードの場合には、実行時間がさ
らに1マシンサイクル早くなることができる。 本発明によれば、オペランド毎に自由なアドレ
ツシングが可能な可変長命令に於いて、複数個の
ユニツト間のパイプライン処理によつて、オペラ
ンド間のパイプライン処理を図ることが可能とな
り、命令処理能力を向上させることができる。
[Table] In FIG. 9, a microprogram controller (MPC) 801 controls the memory address of a microprogram memory (ECS) 802. Micro program memory 802
extracts the microprogram from the address specified by MPC 801 and sets it in microinstruction register (MIR) 803. The output of MIR803 is OF-DEC70 in Figure 8.
4. MPC801, selectors 804 and 8 to be described later
14 is output. Selectors 804 and 805 are arithmetic unit (EALU) 8
06 input data is selected. Temporary register (TR) 808 is connected to bus 4.
50 is temporarily held. A shift circuit (SHF) 809 shifts the data from the TR808 and sends the result to the bus driver 81.
0 to bus 450. The work register file (ERF) 811 is
This is a group of work registers used by the EALU 806. A general purpose register file (ERF) 812 is a group of general purpose registers also used by the EALU 806. Register (ERAR) 813 is ORR in Figure 8.
It holds the register address 11D transferred from 709. A selector (SEL) 814 selects the address of ERF 812. Next, an example of the instruction processing sequence of this embodiment will be described for a basic instruction. The IFU 305 uses the value of the FP 404 as an address to access the BM 1 303 and prefetch instructions. When data read from the BM 1 303 is sent, if there is an empty area in the IB 401 that can store the data, it is taken in, otherwise it is ignored. FP404 determines whether the above empty area exists or not.
Based on the value of and the output 11A from DP510, the IF
-CONT403 will do it. In this example, BM 1 30
There are more areas than the data read width from 3.
The data read if it exists in IB401
Store in IB401. The ALIG 402 uses the output 11A of the DP 510 as an address, and extracts data in the IB 401 by arranging the data in address order starting from the position on the corresponding address in the IB 401. In this embodiment, the data is extracted in units of bits, but of course, if the basic length of the instruction is bytes, it is also possible to align in units of bytes.
During the first decode cycle of an instruction, DP51
Since 0 indicates the address of the opcode,
The first data taken out from ALIG 402 corresponds to the opcode part, followed by the operand specifier part of the first operand. In a decode cycle in the middle of an instruction, the DP 510 may indicate the address of an operand specifier, and in this case, a series of data starting from the operand specifier corresponding to the address is retrieved. The output 329 from ALIG 402 is wide enough to include at least one set of operand specifiers and an opcode portion. DU 309 decodes instructions retrieved from ALIG 402. The DU 309 always decodes the output 329 of the ALIG 402, and the conditions for completing the decoding process will be described below. The effective data length to be used for decoding within IB 401 is obtained by the difference between FP 404 and DP 510. FP 404 indicates the address to be read from the memory by the next memory access, and DP 510 indicates the beginning of the memory address to be decoded next. Therefore, FP404 is DP510
Matching or progressing against. Therefore DP5
When 10 and FP404 are equal, there is no valid data in IB401. If FP404 and DP510 are not equal, the value obtained by subtracting FP404 from DP510 indicates the length of valid data. DU309 calculates the length required for decoding by NBNC513 and connects it to IF in IFU305 by signal line 13A.
Notify CONT403. IF-CONT403 compares the content of signal line 13A with the difference between FP404 and DP510, and if the former is equal to or smaller than the latter, it determines that the length necessary for decoding is within IB401, and the signal line 12A determines that the length necessary for decoding is within IB401. This is notified to the D-CONT 509 in the DU 309. D-CONT50
9 receives a notification via the signal line 12A that the number of bytes necessary for decoding is in the IB 401, and further receives a notification via the signal line 15B that the AU 310 is ready to receive the decoding result.
The result decoded by the DU 309 is sent to the AU 310, and the processing of the decoding cycle is completed. If the data necessary for decoding is not available in the IB 401, or if the AU 310 is not in a state where it can receive the decoding results, the processing for that decoding cycle is invalidated and the same processing is performed again in the next cycle. -CONT509 controls. The output 17B of the DBNC 507 is expressed by equation (1). 17B=α+β+γ (1) The output 13A of the NBNC513 is expressed by equation (2). 13A=α+β+δ……(2) Here, α and β are: When the DP510 indicates the address of the opcode α=Number of bits of the opcode β=Number of bits of the first operand specifier following the opcode The DP510 indicates the address of the operand specifier. When indicating an address, α=0 β=the number of bits of the operand specifier. γ is as follows: When two operand specifiers are decoded simultaneously, γ=number of bits of operand specifier in register specification mode, and when only one operand specifier is decoded, γ=0. δ is when simultaneous decoding of two operand specifiers is permitted (indicated by DCS503) δ = number of bits of operand specifier in register specification mode Simultaneous decoding of two operand specifiers is not permitted In the case δ=0. In the first decode cycle of the instruction, ALIG4
The first part output from 02 corresponds to the opcode. Therefore, the first part is used as the address of the DCS 503 to read the DCS 503. In the DCS 503, one word address is assigned to one operand specifier of each instruction. As shown in FIG. 10, one word of the DCS 503 indicates the access distinction (read, write, or read and a field (abbreviated as AD) that indicates the data length (DL) and a field that indicates the data length (DL
), if there is an operand specifier that follows the operand specifier, a field (abbreviated as JA) to indicate the address corresponding to the operand specifier in the DCS 503, and the final operand specification of the instruction. It consists of a field (abbreviated as E) that indicates if it is a child, and a field (abbreviated as RD) that indicates permission for simultaneous decoding of two operand specifiers. Of course, there are several other fields included, but they are not related to the present invention and will therefore be omitted. Each instruction is assigned as many words in the DCS 503 as the number of operand specifiers that the instruction has; for example, three words are assigned to an instruction with three operands. Of course, if there is no problem in sharing the address between instructions, DCS
It is also possible to reduce the capacity of 503. In the first decode cycle (t 1 ) of a certain instruction, the opcode becomes the address of the DCS 503, and the information of the first operand that specifies the opcode, the address (JA) on the DCS 503 of the second operand, and other information. is read from the DCS 503. At this time, the first operand specifier is ALIG4
OS-DEC taken out from IB401 by 02
It is decoded at 505. If the operand specifier contains displacement, absolute address, or literal data, D-
The ALIG 508 takes them out, formats them, and stores them in the DR 611. DU309
is the result of decoding using the procedure described above.
In addition to setting each of the 10 registers, the ACVF
604 and causes AU310 to start calculating the address of the operand indicated by the operand specifier according to the decode result, and also calculates the number of bits of the instruction decoded in that cycle (opcode and first operand). The DBNC 507 calculates the number of bits constituting the operand specifier, and the INC 512 adds this value to the value of the DP 510 to update the contents of the DP 510. If the instruction has two or more operand specifiers, in the cycle (t 2 ) following the first decoding cycle of the instruction, in the cycle t 1
The JA field in the information read from the DCS 503 is used as an address, and the information of the second operand is read from the DCS 503 as defined by the operation code. At the same time, the operand specifier of the second operand is taken out from the IB 401 by the ALIG 402 and decoded by the OS-DEC 505 according to the same procedure as the decoding of the operand specifier of the first operand. At this time, if the AU 310 receives the decoding result of the operand specifier of the first operand, finishes calculating the address of that operand, and is ready to accept the calculation of the address of the next operand, the DU 309 The decoding result of the operand specifier of the second operand is set in each register of the AU 310, and the ACVF 604 is set to cause the AU 310 to start calculating the address of the operand indicated by the operand specifier of the second operand, and The number of bits of the instruction decoded in that cycle (the number of bits composing the operand specifier of the second operand) is calculated by the DBNC507, and the DP
In addition to the value of 510, the contents of DP510 are updated. As is clear from the above explanation, DU309 is
It decodes one operand specifier every machine cycle, sets the decoded result in a register in the AU310, and instructs the AU310 to calculate the address of the operand based on the decoded result in that cycle. The first decode cycle of the instruction converts the opcode to DCS
503 address, and the information specified by the opcode is retrieved in subsequent cycles. Also, from the opcode ECSAG501
The start address of the microprogram is determined by the ``AER'' 601 and set in the AER 601. In the AU310, the decoding result of a certain OS from the DU309 is set in the register in the AU310,
When the ACVF 604 is set, the operand address is calculated according to the decoding result, and the calculated operand address is stored in the OFU 311.
Transfer OFU311 operation control information to MAR705
Set each to OFCR702, OFCVF703
Set the OFU unit 311, and MAR
705 to start memory access on the address set. When the address calculation of the operand specifier of a certain operand is completed, the AU 310 receives the operand specifier following the operand specifier from the DU 309 and calculates the address of the operand specifier. In this way, the AU310 sequentially calculates the addresses of the operands specified by each operand specifier, but the address calculation for one operand specifier is not necessarily completed in one machine cycle. Of course, it may take several machine cycles. Furthermore, after address calculation for a certain operand specifier is completed, the next operand specifier that performs address calculation does not need to belong to the same instruction as the operand specifier. AU310
also transfers the microprogram start address 10C of the instruction stored in the AER 601 to the OER 701 of the OFU 311 when the address calculation of the (first) operand specifier at the start of the instruction is completed. OFU311 receives the address calculation information of a certain operand specifier from AU310 and sends it to MAR705.
When the operation control information of the OFU 311 is placed in each OFCR 702 and the OFCVF 703 is set, memory access is started. The read data is stored in the OBR 707, formatted by the OALIG 708, and transferred to the EU 312. In addition, the OFU 311 transfers the microprogram start address stored in the OER 701 to the MPC 80 of the EU 312 in the memory access cycle of the first (first) operand specifier of the instruction.
Transfer to 1. However, if the addressing mode of the operand specifier is literal data, no memory access is performed; however, in this case, MAR
The literal data operand passed to 705
When transferring to OBR707, transfer the microprogram start address to MPC801. As described above, information regarding the instruction (opcode and operand specifier) decoded by the DU 309 is transmitted to the EU 312 via the AU 310 and OFU 311 in this order. The EU 312 accesses the ECS 802 from the microprogram start address passed to the MPC 801, reads the microinstruction, and starts executing the instruction. The operand specified by the operand specifier is passed from the OBR 707 or the ERAR 813 as a register address. However, if the operand is deestination, the address of the operand is set in MAR 705. EU312 performs calculations using the operands passed from OFU311 and sends the results to ERF81.
2, ARF606 or BM 2 via bus 334
304. All these operations are controlled by microprograms. FIG. 11 is a diagram showing a stage flow representing the flow of instructions and the accompanying instruction processing process. In Figure 11, three instructions (1), (2), (3)
is giving. Instructions (1) to (3) are all instructions with two operands. First cycle (t 1 )
The instruction word of instruction (1) is read out (IF (1) ). In the next cycle (t 2 ), the opcode and the operand specifier of the first operand are decoded (D (1) 1). In the next cycle (t 3 ), the effective address of the first operand is calculated according to the decoding result (A (1) 1), and at the same time, the operand specifier of the second operand is decoded (D (1) 2). ). In the next cycle (t 4 ), the first operand is fetched (OF (1) 1) and the effective address of the second operand is calculated (A 1 2). Also, during the same cycle, the operation code of instruction (2) and the operand specifier of the first operand are decoded (D (2) 1). In the next cycle (t 5 ), the second operand of instruction (1) is fetched (OF (1) 2), the effective address of the first operand of instruction (2) is calculated (A 2 1), and the second operand is fetched (OF (1) 2). Decodes the operand specifier of the operand (D (2) 2). Next cycle ( t6 )
Now execute instruction (1) (E 1 ), and at the same time
Fetching the first operand of (2) (OF (2) 1), calculating the effective address of the second operand (A (2) 2), and decoding the operation code and operand specifier of the first operand of instruction (3) ( D (3) Do 1). Thereafter, each cycle from t7 to t11 is processed in the same manner. In Figure 11, commands (2) and (3)
The fetches (IF (2) , IF (3) ) indicate that an instruction is read in advance when the number of invalid areas in the IB 401 exceeds a predetermined number of bits. Although FIG. 11 shows an example in which the effective address calculation cycle and operand fetch cycle for each operand end in one cycle, depending on the addressing, the effective address calculation may not end in one cycle. The instruction flow and processing process are controlled by addressing modes such as Indirect mode (addressing mode where the operand address is obtained by referencing the memory twice), etc. , will vary. Figure 12 shows an instruction with three operands (3
2 is a diagram illustrating a stage flow representing the flow of instructions and the accompanying instruction processing process when operand instructions (operand instructions) are executed consecutively; FIG. Also in FIG. 12, three instructions I(1), I(2), and I(3) are given as in FIG. 11. The processing of instructions in each cycle is
This is similar to the case where the two-operand instructions are consecutive as explained in the figure. However, in a three-operand instruction, the third operand is generally not a source operand but a destination operand, so the third operand is not fetched. 3
The stage flow for instructions with more than one operand is also explained in Figures 11 and 12.
There is no essential difference between the stage flows of operand instructions and three-operand instructions. Further, there is no problem even if instructions having different numbers of operands are mixed together. Above, examples of 2-operand instructions and 3-operand instructions have been explained, but 1-operand instructions,
Of course, there is no essential difference from the stage flow shown in FIGS. 11 and 12 even for instructions having four or more operands. Next, a description will be given of simultaneous decoding of two operand specifiers in an instruction that is permitted to decode two operand specifiers simultaneously, and subsequent processing. Simultaneous processing of two operand specifiers is limited to instructions that are permitted to simultaneously decode two operand specifiers, as described above.
Of course, this can also be done for all instructions. Simultaneous processing of two operand specifiers means that in each decoding cycle of operand specifiers included in an instruction word, when decoding the operand specifier before the final operand specifier, This is performed when the addressing mode is register specification, and is not performed in modes other than register specification, in which case only the operand specifiers before the final operand specifier are decoded. As an example, an add instruction with two operand specifiers will be described below. The addition instruction performs a process of adding the contents of the first operand and the second operand and storing the result at the position of the second operand. Therefore, the first operand is a read operand and the second operand is a read-and-write operand. Therefore, the pattern of DCS 503 for the addition instruction is the 13th pattern.
The result will be as shown in the figure. That is, DCS5
On the address corresponding to the opcode value of 03,
The information of the first operand and the information of the second operand
Since the first operand is the operand before the final operand, the field RD of DCS 503 is included.
is "1" (indicating that simultaneous processing by two OSs is permitted). of the second operand
The address of the DCS 503 has a format in which information about the second operand and field E indicating that the second operand is the final operand of the instruction are "1". FIG. 14 shows a stage flow when addition instructions having operand specifiers of the same format are executed successively and the second operand is a register specification. If the second operand does not specify a register, the stage flow will not be as shown in FIG. 14, but will be as shown in FIG. 11. The instruction processing process at this time will be described below with reference to FIG. Instruction I(1) in the first cycle (t 1 )
The data (instruction) on the address containing is read (IF (1) ). In the next cycle (t 2 ), the operation code of the instruction I(1) and the OS of the first operand are decoded, but at this time, the field RD of the DCS 503 is “1” and the RD-
The OS of the first operand is determined by DEC506.
When it is detected that the OS addressing mode of the second operand following is register specification,
RD-DEC506 extracts the register address from the OS of the second operand and stores it in ARR in AU310.
By placing a number in 610, two OSs are decoded at the same time (D1 & D2 (1) ). In the next cycle (t 3 ), the AU 310 calculates the address (A1 (1)) of the first operand of the instruction I(1) according to the decoding result, transfers the result to the OFU 311, and also calculates the address of the first operand of the instruction I(1). Transfer the register address of the second operand in 1) to ORR 709 in OFU 311. In the same cycle (t 3 ), the DU 309 decodes instruction I(2) in the same way as in the cycle t 2 (D1 &
D2 (2) ). In the next cycle (t 4 ), ,OFU
311 performs a fetch (OF1 (1) ) of the first operand of instruction I(1) and transfers the register address of the second operand of instruction I(1) to EU 312. In the same (t 4 ) cycle, the AU310 calculates the address of the first operand of instruction I(2) (A1 (2) ), transfers the result to OFU311, and calculates the address of the second operand of instruction I(2). register address
Transfer to OFU311. DU3 in the same (t 4 ) cycle
09 is the same decoding ( D1
&D2 (3) ). In the next cycle (t 5 ), EU3
12 receives the register addresses of the first operand of the instruction I(1) and the second operand of the instruction I(1) from the OFU 311, and executes the instruction I(1) (E (1) ). In the same ( t5 ) cycle, OFU311 executes the first instruction of instruction I(2).
An operand fetch (OF1 (2) ) is performed, and the register address of the second operand of instruction I (2) is transferred to the FU 312. In the same cycle (t 5 ), the AU310 calculates the address of the first operand of instruction I(3) (A1 (3) ) and sends the result to the OFU31.
1, and also transfers the register address of the second operand of instruction I(3) to the OFU 311. Thereafter, each cycle of t 6 and t 7 is processed in a similar manner. Although FIG. 14 shows an example in which the effective address calculation cycle and operand fetch cycle for each operand are completed in one cycle, depending on the addressing, the effective address calculation may not be completed in one cycle. BM 2 30 during operand's fetish
If there is no data in MM 301 and there is no data in MM 301, multiple cycles are required. Therefore, in such a case,
The flow of instructions and processing steps vary. FIG. 15 is a diagram showing a stage flow representing the instruction flow and the accompanying instruction processing process when instructions of the same format having three operands are executed successively. Also in FIG. 15, three instructions I(1), I(2), and I(3) are given as in FIG. 14.
Each instruction is an instruction that is permitted to decode two operand specifiers simultaneously when the final operand is in the register specification mode, as in FIG. 14, during the decoding cycle of the operand before the final operand. FIG. 15 shows the stage flow in the addressing mode in which the final operand (corresponding to the third operand) is designated by a register. If the third operand is an addressing mode other than register designation, the stage flow will not be as shown in FIG. 15, but will be as shown in FIG. 12. In the case of the two-operand instruction shown in FIG. 14, in the cycle for decoding the operand specifier of the first operand,
I decoded two operand specifiers, but
The three-operand instruction shown in FIG. 15 differs in that two operand specifiers are decoded in the cycle in which the operand specifier of the second operand is decoded. This is a difference that occurs because the first operand corresponds to the operand before the final operand of the instruction in a 2-operand instruction, and the second operand corresponds to a 3-operand instruction.Of course, there is no essential difference. It is. Examples of 2-operand and 3-operand instructions have been explained above in FIGS. 14 and 15, but even in instructions with 4 or more operands, the final operand of the instruction is in a register-specified addressing mode. Sometimes, it takes two cycles to decode the operand specifier of the previous operand.
Of course, it is possible to decode multiple operand specifiers simultaneously. Further, there is no problem even if instructions having different numbers of operands are mixed together. As described above, according to an embodiment of the present invention, it is possible to realize a pipeline control data processing device that can quickly process variable-length instructions in which the operand specifier has an arbitrary number of bits. The average execution time for a 3-operand instruction is 2 machine cycles, and for a 3-operand instruction it is 3 machine cycles. Furthermore, if the operand specifier of the final operand of the instruction is in a register-specifying addressing mode, the execution time can be further shortened by one machine cycle. According to the present invention, in a variable length instruction that allows free addressing for each operand, pipeline processing between operands can be achieved by pipeline processing between a plurality of units, and instruction processing ability can be improved.

【図面の簡単な説明】[Brief explanation of the drawing]

第1図、第2図はオペランドのアドレツシング
モードがオペレーシヨンコードから独立している
代表的な命令のオペランド指定子のフオーマツト
を示す説明図、第3図は本発明にて説明するデー
タ処理装置が扱う命令のオペランド指定子のフオ
ーマツトを示す説明図、第4図は、本発明により
構成されるデータ処理装置の一実施例ブロツク
図、第5図〜第9図は、第4図に示すブロツクの
詳細を示すブロツク図、第10図は、第6図に示
すある回路の信号の意味を示す説明図、第11
図、第12図は、第4図に示すデータ処理装置の
動作を示すある回路のある特定の命令に対する信
号を示す説明図、第14図、第15図は、第4図
に示すデータ処理装置のある特定の命令時の動作
を示すフロー図である。 301……主記憶装置、302……主記憶制御
ユニツト、303,304……高速バツフアメモ
リ、305……命令フエツチユニツト、309…
…命令デコードユニツト、310……アドレス計
算ユニツト、311……オペランドフエツチユニ
ツト、312……実行ユニツト、401……命令
バツフア、402,508,708……データ・
アライナ、404……命令フエツチポインタ、5
03……制御メモリ、505……オペランド指定
子デコード回路。
Figures 1 and 2 are explanatory diagrams showing the format of an operand specifier for a typical instruction in which the addressing mode of the operand is independent of the operation code, and Figure 3 is an illustration of the data processing explained in the present invention. FIG. 4 is an explanatory diagram showing the format of operand specifiers of instructions handled by the device. FIG. 4 is a block diagram of an embodiment of the data processing device constructed according to the present invention. FIGS. FIG. 10 is a block diagram showing the details of the block, and FIG.
12 is an explanatory diagram showing a signal for a certain command in a certain circuit showing the operation of the data processing device shown in FIG. 4, and FIG. 14 and FIG. FIG. 3 is a flow diagram showing the operation of a certain specific instruction. 301... Main memory device, 302... Main memory control unit, 303, 304... High speed buffer memory, 305... Instruction fetch unit, 309...
...Instruction decode unit, 310...Address calculation unit, 311...Operand fetch unit, 312...Execution unit, 401...Instruction buffer, 402, 508, 708...Data...
Aligner, 404...Instruction fetch pointer, 5
03... Control memory, 505... Operand specifier decoding circuit.

Claims (1)

【特許請求の範囲】[Claims] 1 オペランドのアドレツシングモードを指定す
るオペランド指定子がオペレーシヨンを指定する
コード部分から独立して与えられる可変長命令を
扱うデータ処理装置において、命令およびオペラ
ンドを格納するメモリから命令を先行して読み出
し保持する命令バツフア手段と、該命令バツフア
手段から少なくとも1組のオペランド指定子を含
む命令を取り出す命令アライナ手段と、該命令ア
ライナ手段によつて取出された命令に含まれるオ
ペランド指定子を特定し且つ命令のフアンクシヨ
ンを特定するオペコードデコード手段と、該命令
アライナ手段によつて取出されたオペランド指定
子をデコードするオペランド指定子デコード手段
を有し、1マシンサイクルに少なくとも1個のオ
ペランドのオペランド指定子をデコードするよう
に該命令アライナ手段およびオペコードデコード
手段がそれぞれ異なるオペランドの準備を行な
い、複数のオペランド間のパイプライン処理を行
うようにしたことを特徴とするデータ処理装置。
1. In a data processing device that handles variable-length instructions in which an operand specifier that specifies the addressing mode of an operand is given independently from a code section that specifies an operation, the instruction is preceded from the memory that stores the instruction and operand. An instruction buffer means for reading and holding, an instruction aligner means for extracting an instruction including at least one set of operand specifiers from the instruction buffer means, and an operand specifier included in the instruction extracted by the instruction aligner means. and an operation code decoding means for specifying a function of an instruction, and an operand specifier decoding means for decoding an operand specifier extracted by the instruction aligner means, and operand specifiers of at least one operand in one machine cycle. 1. A data processing device characterized in that said instruction aligner means and said operation code decode means each prepare different operands so as to decode said operands, and perform pipeline processing among a plurality of operands.
JP56046478A 1981-03-31 1981-03-31 Data processing device Granted JPS57161943A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP56046478A JPS57161943A (en) 1981-03-31 1981-03-31 Data processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP56046478A JPS57161943A (en) 1981-03-31 1981-03-31 Data processing device

Publications (2)

Publication Number Publication Date
JPS57161943A JPS57161943A (en) 1982-10-05
JPS6160459B2 true JPS6160459B2 (en) 1986-12-20

Family

ID=12748298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP56046478A Granted JPS57161943A (en) 1981-03-31 1981-03-31 Data processing device

Country Status (1)

Country Link
JP (1) JPS57161943A (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62226231A (en) * 1986-03-27 1987-10-05 Toshiba Corp Processor
JPH0772863B2 (en) * 1986-10-30 1995-08-02 日本電気株式会社 Program counter relative address calculation method
JPH0221332A (en) * 1988-07-11 1990-01-24 Fujitsu Ltd Microprocessor
JP2761564B2 (en) * 1988-10-20 1998-06-04 富士通株式会社 Data processing device
KR930005768B1 (en) * 1989-01-17 1993-06-24 후지쓰 가부시끼가이샤 Microprocessor
JPH04123865U (en) * 1991-04-23 1992-11-10 豊生ブレーキ工業株式会社 Parking brake operating lever grip
EP1416374A3 (en) 1993-05-27 2004-09-01 Matsushita Electric Industrial Co., Ltd. Program converting unit and processor improved in address management
WO2011013776A1 (en) * 2009-07-31 2011-02-03 旭硝子株式会社 Sealing glass, sealing material and sealing material paste for semiconductor devices, and semiconductor device and process for production thereof

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5420796Y2 (en) * 1971-03-22 1979-07-26
JPS4717176U (en) * 1971-03-27 1972-10-27

Also Published As

Publication number Publication date
JPS57161943A (en) 1982-10-05

Similar Documents

Publication Publication Date Title
US4454578A (en) Data processing unit with pipelined operands
KR100327777B1 (en) Data processing device using multiple instruction sets
US20010010072A1 (en) Instruction translator translating non-native instructions for a processor into native instructions therefor, instruction memory with such translator, and data processing apparatus using them
JPH06236268A (en) Apparatus and method for judgment of length of instruction
EP0263288A2 (en) Extended floating point operations supporting emulation of source instruction execution
US4305124A (en) Pipelined computer
US4897787A (en) Data processing system
JPS6217252B2 (en)
USRE32493E (en) Data processing unit with pipelined operands
JPH0816391A (en) Computer system, instruction-bit-length compression method, instruction generation method and computer-system operating method
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
EP0220682A2 (en) Data processing system
JPH01137331A (en) Control word branching
JPS6160459B2 (en)
US4631672A (en) Arithmetic control apparatus for a pipeline processing system
JPS645330B2 (en)
JPH0391029A (en) Data processor
KR950006587B1 (en) Microprocessor
JPS623336A (en) Conditional branch system
JPS6217773B2 (en)
JPH01297727A (en) System for controlling normalization of floating point arithmetic operation
JPH02300841A (en) Microprocessor and data processor using the same
JP2000112754A (en) Data processor
JPH02146628A (en) Data processor
JPS6149692B2 (en)