JPS6149694B2 - - Google Patents
Info
- Publication number
- JPS6149694B2 JPS6149694B2 JP14110381A JP14110381A JPS6149694B2 JP S6149694 B2 JPS6149694 B2 JP S6149694B2 JP 14110381 A JP14110381 A JP 14110381A JP 14110381 A JP14110381 A JP 14110381A JP S6149694 B2 JPS6149694 B2 JP S6149694B2
- Authority
- JP
- Japan
- Prior art keywords
- operand
- bus
- instruction
- specifier
- output
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
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)
Description
【発明の詳細な説明】
本発明は、オペランドのアドレツシングモード
を指定するオペランド指定子が処理の種類および
オペランド数を指定するオペコード部分から独立
している命令を扱うデータ処理装置に関するもの
である。DETAILED DESCRIPTION OF THE INVENTION The present invention relates to a data processing device that handles instructions in which an operand specifier that specifies the addressing mode of an operand is independent from an opcode portion that specifies the type of processing and the number of operands. .
オペランド指定子の長さは、アドレツシングモ
ードに対応して任意に変り、命令の長さが可変で
あることからこのような命令を可変長命令と呼ぶ
こともある。しかし、ここでは、便宜上、本願発
明が扱う命令を不定長命令、従来の命令を可変長
命令と称している。 The length of the operand specifier changes arbitrarily depending on the addressing mode, and since the length of the instruction is variable, such an instruction is sometimes called a variable length instruction. However, here, for convenience, the instructions handled by the present invention are referred to as indefinite length instructions, and the conventional instructions are referred to as variable length instructions.
可変長のオペランド指定子を持つ命令体系とし
て、公知の代表的な2つの例を次に示す。 Two typical examples of well-known instruction systems having variable-length operand specifiers are shown below.
1つはバローズ社(Burroughs Corporation)
の計算機B1700をCOBOL/RPG向きのアーキテ
クチヤとした時の命令フオーマツトであり、これ
は、「B1700 COBOL/RPG−S−Language、
1058823−015、Copyright 1973、Burroughs
Corporation」に示されている。 One is Burroughs Corporation.
This is the instruction format when the computer B1700 has an architecture suitable for COBOL/RPG.
1058823−015, Copyright 1973, Burroughs
Corporation”.
今1つの例は、DEC社(Digital Equipment
Corporation)の計算機VA×11/780のアーキテ
クチヤが有する可変長となるオペランド指定子を
持つ命令体系であり、これは、「VA×11
Architecture Handbook、Copyright 1979」およ
びUSP No.4241399に示されている。 Another example is DEC (Digital Equipment)
This is an instruction system with variable-length operand specifiers that is included in the architecture of the computer VA×11/780 of the VA×11
Architecture Handbook, Copyright 1979” and USP No. 4241399.
ここに示した従来の2つの命令体系では、オペ
ランドの形式、アドレツシングモードを指定する
部分が、可変長のオペランド指定子で規定され、
オペコードから独立であるといつた特徴がある。 In the two conventional instruction systems shown here, the part that specifies the operand format and addressing mode is specified by a variable-length operand specifier.
It has the characteristic that it is independent from the opcode.
しかしながら、従来の可変長命令では、処理す
るオペランドの数と、処理するオペランドのアド
レツシングモードを指定するオペランド指定子が
1対1に対応づけられており、例えば、
A+B→B
A+B→C
という2つの処理(オペレーシヨン)に対し、2
つのオペコードを割当てる必要があつた。 However, in conventional variable-length instructions, there is a one-to-one correspondence between the number of operands to be processed and the operand specifier that specifies the addressing mode of the operands to be processed. For example, A+B→B A+B→C. For two processes (operations), 2
It was necessary to allocate two opcodes.
つまり、A+B→Bという処理では、2つのオ
ペランドを処理し、2つ目のオペランドに対して
は、これを2度使用するということを、オペコー
ドで特別に規定する必要があるからである。 In other words, in the process of A+B→B, it is necessary to specifically specify in the operation code that two operands are processed and that the second operand is used twice.
もし、A+B→Bという処理で、オペランド数
を3とし、オペランド指定子を3つ用意すれば、
A+B→Bと、A+B→Cの区別を意識する必要
はないが、A+B→Bの処理では、全く同一のオ
ペランド指定子を2つ設ける必要があり、これ
は、オペランド指定子そのものが、複数バイト
(一般に長いものは7バイト)をとる時、メモリ
の実装効率を著しく低下し、好ましくない。 If we process A+B→B and set the number of operands to 3 and prepare 3 operand specifiers, then
There is no need to be aware of the distinction between A+B→B and A+B→C, but in the process of A+B→B, it is necessary to provide two identical operand specifiers. (Generally, a long one is 7 bytes), which is not preferable because it significantly reduces memory implementation efficiency.
そもそも、A+B→Bと、A+B→Cの処理を
区別することは、メモリの実装効率を高める為に
なされたものである。(A+B→Bではオペラー
ド指定子を2つで済むようにした)
このように、従来の方式では、同一のオペラン
ドを複数回使用する処理に対しては、他の同機能
の処理と区別する必要があり、オペコードで指定
可能な処理数に制限があつた。 In the first place, the distinction between processing A+B→B and processing A+B→C was made in order to improve memory implementation efficiency. (For A+B→B, only two operand specifiers are required.) In this way, in the conventional method, processes that use the same operand multiple times need to be distinguished from other processes with the same function. There was a limit to the number of operations that could be specified using an opcode.
尚A+B→Bという例で説明したが、これはA
−B→Bという処理も同様であり、AとBの演算
をし、その結果をBに格納するという例の全てに
いえることである。一般にこれをA OP B→B
と表現している。 Although I explained using the example of A+B→B, this is A
The same goes for the process -B→B, and applies to all examples in which A and B are operated on and the result is stored in B. Generally this is A OP B→B
It is expressed as.
本発明の目的は、複数個の処理するオペランド
数に対し、オペランド指定子を共用できる不定長
命令を扱うデータ処理装置を提供するにある。 SUMMARY OF THE INVENTION An object of the present invention is to provide a data processing device that handles undefined length instructions that can share operand specifiers for a plurality of operands to be processed.
つまり、上記の例では、2つの処理に対し、1
つの命令コードで、これを区別して処理すること
が可能な不定長命令を扱うデータ処理装置を提供
しようとするものである。 In other words, in the above example, for two processes, 1
The present invention aims to provide a data processing device that handles undefined length instructions that can distinguish and process two instruction codes.
本発明の特徴は、命令として、オペランドのア
ドレツシングモードを指定する各オペランド指定
子に、それぞれ対をなして付加されたオペランド
指定子連続情報を含み、デコード時に、この連続
情報がセツトされていることを検出した場合、当
該オペランド指定子を2回繰返し使用するように
していることである。 A feature of the present invention is that each operand specifier specifying the addressing mode of the operand, as an instruction, includes operand specifier consecutive information added in pairs, and this consecutive information is set at the time of decoding. If it is detected that the operand specifier is present, the operand specifier is used twice.
以下、本発明を図面を参照して詳細に説明す
る。第1図は本発明が適用されるデータ処理シス
テムの基本的な概念図である。 Hereinafter, the present invention will be explained in detail with reference to the drawings. FIG. 1 is a basic conceptual diagram of a data processing system to which the present invention is applied.
メモリ装置1と、複数の中央処理装置2が共通
バス3で接続されており、共通バス3を介して相
互の間の情報交換が可能となつている。 A memory device 1 and a plurality of central processing units 2 are connected by a common bus 3, and information can be exchanged between them via the common bus 3.
メモリ装置1は、命令および命令が扱うオペラ
ンドを格納するメモリ部11と、この命令および
オペランドの読み出し、書き込みを制御するメモ
リ制御部12で構成され、メモリ部11とメモリ
制御部12はメモリバス13で接続されている。 The memory device 1 includes a memory unit 11 that stores instructions and operands handled by the instructions, and a memory control unit 12 that controls reading and writing of the instructions and operands. connected with.
メモリ装置1の動作については、特願昭55−
160758号明細書に詳細に記載しているが、本発明
の要部とは直接関係ないので、この部分の詳細説
明は省略する。 Regarding the operation of the memory device 1, please refer to the patent application filed in 1983-
Although it is described in detail in the specification of No. 160758, detailed explanation of this part will be omitted because it is not directly related to the main part of the present invention.
中央処理装置2は、共通バス3に複数台接続可
能で、(図示では2台)それぞれ、メモリ装置1
より命令及びオペランドをアクセスして順次命令
の処理をしていく。 A plurality of central processing units 2 can be connected to the common bus 3 (two units in the figure), each of which has a memory device 1.
The instructions and operands are accessed and the instructions are sequentially processed.
ここでは高速化のため、一度読み出された命
令、オペランドをそれぞれコピーしている命令キ
ヤツシユ21(高速バツフアメモリ)およびオペ
ランドキヤツシユ22(高速バツフアメモリ)を
有し、また命令のフエツチ、デコード及びオペラ
ンドアドレス演算を行うIユニツト23と、オペ
ランドのフエツチおよび命令の実行を行うEユニ
ツトを有し、それぞれがパイプライン処理を行う
例を示している。 In order to increase speed, there is an instruction cache 21 (high-speed buffer memory) and an operand cache 22 (high-speed buffer memory) in which instructions and operands once read are copied, respectively, and instruction fetch, decode, and operand addresses are provided. An example is shown in which there is an I unit 23 that performs calculations and an E unit that fetches operands and executes instructions, each of which performs pipeline processing.
このような、命令キヤツシユ、オペランドキヤ
ツシユの使い方、或いは、IユニツトとEユニツ
トがパイプライン処理すること自体は公知であ
る。 The use of the instruction cache and operand cache and the pipeline processing between the I and E units are well known.
さて、第2図Aは、中央処理装置2が扱う不定
長命令のフオーマツトを示している。 Now, FIG. 2A shows the format of an indefinite length instruction handled by the central processing unit 2.
1つの命令は、1ないし数バイトで構成される
オペレーシヨンコード(これは通称、オペコード
と呼ばれている)OPと、オペランド指定子連続
情報(以下連続フラツグと称す)Sを伴つた1な
いし複数バイトのオペランド指定子OS1,OS2
………OSnから構成されている。 One instruction consists of an operation code (commonly called an opcode) OP consisting of one or several bytes, and one or more operand specifier continuity information (hereinafter referred to as continuity flag) S. Byte operand specifiers OS1, OS2
...It is composed of OSn.
オペコードOPでは、その命令の処理内容(処
理の種類)、処理に必要なオペランドの数および
オペランドの属性(データ長、リード/ライトの
区別、データタイプ:固定小数点/浮動小数点…
……等)が示される。 The operation code OP describes the processing content of the instruction (processing type), the number of operands required for processing, and the attributes of the operands (data length, read/write distinction, data type: fixed point/floating point...
etc.) are shown.
オペコードOPの後には、当該オペコードOPで
示されるオペランドの数以下のオペランド指定子
OS1,OS2………が示されていて、1つの命令
(正式には命令語:インストラクシヨン・ワー
ド)が構成される。 An opcode OP is followed by an operand specifier that is less than or equal to the number of operands indicated by the opcode OP.
OS1, OS2, etc. are shown and constitute one instruction (formally, an instruction word).
オペランド指定子は、該当命令で使用されるオ
ペランドの順番に並んでいて、繰返して使用した
いオペランド指定子のみ、連続フラツグSが
「1」にセツトされている。 The operand specifiers are arranged in the order of the operands used in the relevant instruction, and only the operand specifiers that are desired to be used repeatedly have the continuity flag S set to "1".
同一のオペランドを繰返し使用するには、いろ
いろな実現方法があるが、最も望ましい方法は、
最後のオペランド指定子を繰返し使用することで
あろう。この点については後で詳細に述べる。 There are various ways to use the same operand repeatedly, but the most desirable method is
The last operand specifier would be used repeatedly. This point will be discussed in detail later.
オペコードOPで指定するオペランド数と、オ
ペラード指定子の数が不一致の例を次に説明す
る。例えば、オペコードOPが加算処理の場合、
そのフアンクシヨンは、
A+B→C
で、3つのオペランドを必要とするが、オペラン
ド指定子が1つの場合は、
A+A→A
2つの場合は、
A+B→B
という処理が、同一のオペコードで可能となる。
オペランド指定子の具体的な例を第2図Bに示し
ている。 An example where the number of operands specified by the opcode OP and the number of operand specifiers do not match is explained below. For example, if the opcode OP is an addition process,
The function is A+B→C, which requires three operands, but if there is one operand specifier, A+A→A, and if there are two operand specifiers, A+B→B can be processed with the same opcode.
A specific example of an operand specifier is shown in FIG. 2B.
ここでは、No.1〜No.24の例を示し、そのフオ
ーマツトと、これに対応するオペランドを1対1
対応で示している。 Here, we will show examples No. 1 to No. 24, and compare their formats and corresponding operands one-to-one.
It is shown in correspondence.
第2図Bにおいて、オペランドの( )は、
( )内の値をアドレスとしたメモリの内容であ
ることを示している。 In Figure 2B, the operand ( ) is
Indicates that the value in parentheses is the memory content whose address is the address.
また、フオーマツト中、DISPは、変位を、IM
はイミーデイエツト(データ直接)を示し、添字
はその大きさをビツト数で示している。 Also, during formatting, DISP calculates the displacement, IM
indicates immediate data (direct data), and the subscript indicates its size in bits.
更に、Rxはインデツクスレジスタ、Rnはジエ
ネラルレジスタを示し、Lはオペランドの大きさ
をバイト単位で示したものである。 Further, Rx indicates an index register, Rn indicates a general register, and L indicates the size of the operand in bytes.
第2図Bにおいて、そのフオーマツトとオペラ
ンドの関係は、或程度理解できると思われるが、
以下簡単に説明する。 In Figure 2B, the relationship between the format and operands can be understood to some extent;
This will be briefly explained below.
No.1は、レジスタ直接のアドレス指定で、Rn
で示されるジエネラルレジスタそのものが、直接
オペランドとなるものである。 No.1 is register direct addressing, Rn
The general register indicated by is itself a direct operand.
No.2以下は、全て、メモリをオペランドとす
るもので、そのアドレス計算がオペランドの欄に
示された形で行なわれる。 All of No. 2 and below use memory as an operand, and the address calculation is performed in the form shown in the operand column.
No.2は、間接アドレス指定で、Rnで示される
ジエネラルレジスタの内容がオペランドのアドレ
スとなるものである。 No. 2 is indirect addressing, in which the contents of the general register indicated by Rn are the address of the operand.
No.3、5、7では、Rnで示されるジエネラル
レジスタの内容に、DISPで示される値が加算さ
れて、これがオペランドのアドレスになつてい
る。 In Nos. 3, 5, and 7, the value indicated by DISP is added to the contents of the general register indicated by Rn, and this becomes the address of the operand.
No.4、6、8では、No.3、5、7で求められ
たアドレスのメモリの内容が、オペランドのアド
レスとなるものである。 In Nos. 4, 6, and 8, the contents of the memory at the addresses determined in Nos. 3, 5, and 7 are the addresses of the operands.
No.9〜11は、イミーデイエツトデータで、
IM8、IM16、IM32の値そのものがオペランドとな
つている。 No.9 to 11 are immediate data,
The values of IM 8 , IM 16 , and IM 32 themselves are operands.
No.12〜17は、ジエネラルレジスタRnの代りに
プログラムカウンタPCが使用されることが、
No.3〜8とは異なるだけである。PCは、デコー
ドするオペランド指定子の次のアドレスを保持し
ている。 For Nos. 12 to 17, program counter PC is used instead of general register Rn.
It is only different from Nos. 3 to 8. The PC holds the next address of the operand specifier to decode.
No.18〜24は、No.3〜8にさらにインデツクス
レジスタRxの値が加算されることが異なり、ま
たインデツクスレジスタRxの値は、オペランド
のデータ長く分乗算された値が加算される。 Nos. 18 to 24 differ in that the value of the index register Rx is further added to Nos. 3 to 8, and the value of the index register Rx is added by the value multiplied by the length of the operand data. .
これは、データ長にかかわらず、イーデツクス
レジスタRxの値を、先頭からの変位としてセツ
トできるようにするため必要となる処理である。 This is a necessary process in order to be able to set the value of the edit register Rx as a displacement from the beginning, regardless of the data length.
つまり、L(データ長を示す)を乗算すること
により、インデツクスレジスタRxは、データ長
にかかわらず、先頭から何番目のデータであるか
を示す値を入れておけばよいことになる。 In other words, by multiplying by L (indicating the data length), the index register Rx only needs to contain a value indicating the number of data from the beginning, regardless of the data length.
例えば、インデツクスレジスタRxに「10」が
入つていると、これは先頭から10番目のデータ
で、そのアドレスは、バイトの場合は10を加算
(L=1)、ワードの場合は20を加算(L=2)ロ
ングワード(Long Word)では40を自動的に加
算し(L=4)ユーザはデータ長にかかわらず、
インデツクスレジスタRxの値をセツトできる。 For example, if "10" is stored in the index register Rx, this is the 10th data from the beginning, and its address is: if it is a byte, add 10 (L = 1), if it is a word, add 20. (L=2) For long words, 40 is automatically added (L=4) The user can
The value of index register Rx can be set.
第3図は、第1図の中央処理装置2のより具体
的なブロツク構成図である。 FIG. 3 is a more specific block diagram of the central processing unit 2 shown in FIG.
第1図におけるIユニツト23は、第3図にお
いて、命令フエツチユニツト(IFU)25、アラ
イナ(ALIG)26、デコードユニツト(DU)2
7およびアドレス計算ユニツト(AU)28部分
がこれに対応し、Eユニツト24にはオペランド
フエツチユニツト(OFU)29、実行ユニツト
(EU)30が対応している。第1図では、Iユニ
ツト23とEユニツト24がパイプライン処理を
行う旨述べたが、それぞれのユニツトは第3図に
示すように更に命令フエツチユニツトIFU25、
デコードユニツトDU27、アドレス計算ユニツ
トAU28、オペランドフエツチユニツトOFU2
9、実行ユニツト30に分割され、それぞれがパ
イプライン処理をする例を示している。 The I unit 23 in FIG. 1 is an instruction fetch unit (IFU) 25, an aligner (ALIG) 26, and a decode unit (DU) 2 in FIG.
7 and an address calculation unit (AU) 28 correspond to this, and the E unit 24 corresponds to an operand fetch unit (OFU) 29 and an execution unit (EU) 30. In FIG. 1, it was mentioned that the I unit 23 and the E unit 24 perform pipeline processing, but each unit further includes an instruction fetch unit IFU 25, as shown in FIG.
Decode unit DU27, address calculation unit AU28, operand fetch unit OFU2
9, the execution unit 30 is divided into execution units 30, each of which performs pipeline processing.
しかしながら、本願発明の要旨は、このような
パイプライン処理そのものとは直接関係ないの
で、パイプライン処理については詳細な説明は省
略している。尚、パイプライン処理そのものは周
知であるが、USP4025771号には、パイプライン
高速信号プロセツサが示されている。 However, since the gist of the present invention is not directly related to such pipeline processing itself, a detailed explanation of pipeline processing is omitted. Incidentally, pipeline processing itself is well known, and USP 4025771 discloses a pipeline high-speed signal processor.
ところで、第3図において、命令フエツチユニ
ツト25は、命令を先行してフエツチするための
プログラムカウンタ50を有し、命令キヤツシユ
21より次に実行されるであろう命令を先行して
読み出す処理を行なつている。 By the way, in FIG. 3, the instruction fetch unit 25 has a program counter 50 for fetching an instruction in advance, and performs a process of reading an instruction that will be executed next from the instruction cache 21 in advance. ing.
アドレスライン100により、読み出したいア
ドレスが命令キヤツシユ21に送られ対応する命
令4バイト分がデータライン101により命令フ
エツチユニツトIFU25に送出される。 An address to be read is sent to the instruction cache 21 via the address line 100, and 4 bytes of the corresponding instruction are sent to the instruction fetch unit IFU 25 via the data line 101.
命令キヤツシユ21に、対応する命令がなかつ
た場合は、共通バス3を介して、メモリ1から該
当命令を読み出し、この命令は命令キヤツシユ2
1にストアされる。キヤツシユの動作は周知であ
り、例えば、「A Guide to the IBM System/
370 Model 168」に示されている。 If there is no corresponding instruction in the instruction cache 21, the corresponding instruction is read from the memory 1 via the common bus 3, and this instruction is stored in the instruction cache 2.
Stored at 1. The operation of the cache is well known; for example, "A Guide to the IBM System/
370 Model 168”.
命令4バイト分が命令フエツチユニツト25に
送出されると、プログラムカウンタ50はプラス
4(+4)され、次の命令の送出要求を命令キヤ
ツシユ21に出力する。 When four bytes of instructions are sent to the instruction fetch unit 25, the program counter 50 is incremented by four (+4), and a request to send the next instruction is output to the instruction cache 21.
この動作は、命令フエツチユニツトIFU25内
にあるバツフア(図示せず)が満杯になるまで続
けられる。 This operation continues until the buffer (not shown) in instruction fetch unit IFU 25 is full.
命令フエツチユニツトIFU25からは、バス1
03を介して、あらかじめ読み出しておいた命令
がアライナ(ALIG)26に送出される。 From the instruction fetch unit IFU25, bus 1
03, the command read out in advance is sent to the aligner (ALIG) 26.
アライナ26は、デコードユニツトDU27か
らの信号線102に指示されたバイト数だけシフ
ト処理を行い、バス104に該当の命令を送出す
る。 The aligner 26 performs a shift process by the number of bytes specified on the signal line 102 from the decoding unit DU 27, and sends the corresponding command to the bus 104.
信号線102の値を適当に操作することで、バ
ス104には、第5図に示すように命令の第1オ
ペランド指定子処理時には、左端にオペコード
OPが、続いて第1番目のオペランド指定子が並
ぶように、2番目以降のオペランド指定子処理時
には、1バイトのダミーをおいてオペランド指定
子が配置して出力される。上記制御は、後で詳し
く説明する。 By appropriately manipulating the value of the signal line 102, as shown in FIG.
When processing the second and subsequent operand specifiers, the operand specifiers are arranged with a 1-byte dummy and output so that the OP is lined up followed by the first operand specifier. The above control will be explained in detail later.
デコードユニツト(DU)27は、アライナ2
6(ALIG)より送出されたオペコード及びオペ
ランド指定子をデコードして、アドレス計算ユニ
ツトAU28へ下記の情報を送る。 The decoding unit (DU) 27 is the aligner 2
6 (ALIG) and sends the following information to address calculation unit AU28.
(1) バス105を介してアドレツシングモードを
送る。(1) Send addressing mode via bus 105.
アドレツシングモードには、先に説明の如
く、次の(a)〜(h)があり、このうち1つが指定さ
れる。 As explained above, the addressing mode includes the following (a) to (h), one of which is designated.
(a):レジスタ直接………No.1
(b):Rn………No.2
(c) Rn+DISPタイプ………No.3、5、7
(d) Rn+DISPインダイレクトタイプ………
No.4、6、8
(e) イミーデイエツト………No.9、10、11
(f) PC+DISPタイプ………No.12、14、16
(g) PC+DISPインダイレクトタイプ………
No.13、15、17
(h) (b)〜(d)でインデツクス付タイプ………
No.18〜24
尚No.1〜No.24は第2図Bに示すオペランド
指定子フオーマツトのNo.1〜24に対応してい
る。 (a): Register direct……No.1 (b): Rn……No.2 (c) Rn+DISP type……No.3, 5, 7 (d) Rn+DISP indirect type……
No.4, 6, 8 (e) Immediate type……No.9, 10, 11 (f) PC+DISP type……No.12, 14, 16 (g) PC+DISP indirect type……
No.13, 15, 17 (h) Type with index (b) to (d)……
No. 18 to 24 Note that No. 1 to No. 24 correspond to No. 1 to No. 24 of the operand specifier format shown in FIG. 2B.
(2) バス106を介して、DISPまたはイミーデ
イエツトデータを32ビツトで送る。(2) Send DISP or immediate data in 32 bits via bus 106.
(3) バス107を介してジエネラルレジスタRn
のアドレスを送る。(3) General register Rn via bus 107
Send the address.
(4) バス108を介してインデツクスレジスタ
Rxのアドレス、
および
(5) バス116を介してアドレス演算に使用する
プログラムカウンタの値を送る。(4) Index register via bus 108
Sends the address of Rx, and (5) the value of the program counter used for address calculation via bus 116.
アドレス計算ユニツトAU28は、バス105
によつて示されたアドレツシングモードに従い、
上記(a)(e)以外の時は、オペランドのアドレス計算
を行い、バス109に計算後のアドレスを送出す
る。 The address calculation unit AU28 is connected to the bus 105.
According to the addressing mode indicated by
In cases other than (a) and (e) above, the address of the operand is calculated and the calculated address is sent to the bus 109.
一方、(a)の場合は、バス107の内容を、その
ままバス113に送出し、(e)の場合はバス106
をバス109に送出する。 On the other hand, in the case of (a), the contents of the bus 107 are sent as they are to the bus 113, and in the case of (e), the contents of the bus 107 are sent as they are to the bus 113.
is sent to bus 109.
オペランドフエツチユニツトOFU29は、上
記(a)(e)以外の時は、送られたアドレスが示されて
いるバス109の内容を、バス110に送出し、
オペランドがリード時には、オペランドキヤツシ
22にリード処理を要求する。 In cases other than (a) and (e) above, the operand fetch unit OFU 29 sends the contents of the bus 109 to which the sent address is indicated to the bus 110.
When the operand is to be read, the operand cache 22 is requested to perform read processing.
リードオペランドが、オペランドキヤツシユ2
2からバス111に送出されると、オペランドフ
エツチユニツトOFU29は、バス112を介し
て実行ユニツトEU30に、読み出されたオペラ
ンドを送出し、またオペランドがそろつた旨を連
絡する。 Read operand is operand cache 2
2, the operand fetch unit OFU 29 sends the read operand to the execution unit EU 30 via the bus 112 and notifies that the operands are ready.
オペランドがライト時は、実行ユニツトEU3
0からの書き込みデータが、バス111に出力さ
れるまで、オペランドフエツチユニツトOFU2
9は、アドレスをバス110に送出し続ける。 When the operand is written, execution unit EU3
Operand fetch unit OFU2 continues until write data from 0 is output to bus 111.
9 continues to send addresses onto bus 110.
一方、上記(a)に対しては、オペランドフエツチ
ユニツトCFU29は、アドレス計算ユニツトAU
28より送出されたレジスタアドレス113によ
り、自身が有するジエネラルレジスタ(図示せ
ず)のアクセスを行う。(a)以外と異なるのは、メ
モリをアクセスするか、レジスタをアクセスする
かの差異のみである。 On the other hand, for (a) above, the operand fetch unit CFU29 is the address calculation unit AU.
The register address 113 sent from 28 accesses its own general register (not shown). The only difference from (a) is whether memory is accessed or registers are accessed.
また、(e)に対しては、バス109の内容をその
ままバス111に送出し、実行ユニツトEU30
にオペランドがそろつた旨を連絡する。 For (e), the contents of the bus 109 are sent as they are to the bus 111, and the execution unit EU30
Notify that the operands are available.
また、実行ユニツトEU30は、デコードユニ
ツトDU27からオペコードバス114を介して
送出されたマイクロプログラムの先頭アドレスを
受信し、リード時は、バス112のオペランドを
用いて、ライト時は、オペランド(データ)をバ
ス111に出力して順次、命令の処理を行う。 The execution unit EU30 also receives the start address of the microprogram sent from the decoding unit DU27 via the opcode bus 114, and uses the operands on the bus 112 when reading, and uses the operands (data) when writing. The commands are output to the bus 111 and sequentially processed.
また、命令が分岐命令の場合は、バス115を
用いて、新らたなプログラムカウンタ値を命令フ
エツチユニツトIFU25のプログラムカウンタ5
0や、後述するデコードユニツトDU27内のDP
レジスタ69にセツトすると同時に、パイプライ
ン処理で先行的に処理されていたオペランドの各
ユニツトにおける処理結果をキヤンセルさせる。 Furthermore, if the instruction is a branch instruction, the new program counter value is transferred to the program counter 5 of the instruction fetch unit IFU 25 using the bus 115.
0 or DP in decoding unit DU27, which will be described later.
At the same time as setting in the register 69, the processing results in each unit of the operands that were previously processed in the pipeline processing are canceled.
以上が、1つのオペランド指定子に対する処理
の概略で、各ユニツト25〜30は、パイプライ
ン処理で、順次オペランド指定子の処理を並列に
処理していく。 The above is an outline of the processing for one operand specifier, and each unit 25 to 30 sequentially processes the operand specifiers in parallel using pipeline processing.
次に、本発明の要旨に関係するデコードユニツ
ト27について、具体例を示し詳細に説明する。 Next, the decoding unit 27 related to the gist of the present invention will be described in detail with reference to a specific example.
第4図は、第3図に示すデコードユニツトDU
27の具体的な実施例を示すブロツク図である。 Figure 4 shows the decoding unit DU shown in Figure 3.
FIG. 27 is a block diagram showing a specific example of No. 27.
DPレジスタ69は、デコードユニツトDU27
がデコードする命令の先頭を示しており、第1番
目のオペランド指定子デコード時は、オペコード
のアドレスを、第2番目以下のデコード時は、該
当オペランド指定子の先頭−1のアドレスを示し
ている。 The DP register 69 is connected to the decoding unit DU27.
indicates the beginning of the instruction to be decoded, and when decoding the first operand specifier, it indicates the address of the opcode, and when decoding the second and subsequent operand specifiers, it indicates the address of the first minus one of the corresponding operand specifier. .
上記アドレスは、バス102を介して第3図に
示すアライナALIG26、命令フエツチユニツト
IFU25に送出されているため、バス104に
は、第5図に示すように、1バイト目には、第1
オペランド指定子の読み出しの場合は、Aに示す
ように、オペコードOP、第2オペランド指定子
以下の読み出しの場合は、Bに示すように、ダミ
ーのデータ、第2バイト目には、連続フラツグS
を含んだオペランド指定子の先頭バイトが、第3
バイト目から第7バイト目には、オペランド指定
子のその他の情報が出力される。 The above address is sent via bus 102 to the aligner ALIG 26 and instruction fetch unit shown in FIG.
Since it is sent to the IFU 25, the first byte is sent to the bus 104 as shown in FIG.
When reading an operand specifier, as shown in A, the operation code is OP. When reading from the second operand specifier and below, as shown in B, dummy data is written, and the second byte is a continuous flag S.
The first byte of the operand specifier containing
Other information of the operand specifier is output from the 7th byte to the 7th byte.
バス204は、第何番目のオペランドの処理を
しているかを示す情報で、本情報が全オペランド
処理終了を示している時、バス104の第1バイ
トはオペコードレジスタ64にセツトされる。 The bus 204 is information indicating which operand is being processed, and when this information indicates that all operands have been processed, the first byte of the bus 104 is set in the opcode register 64.
オペコードレジスタ64の出力は、該当命令の
実行ユニツトEU30のマイクロプログラムの先
頭アドレスを求めるオペコードデコードユニツト
61と、該当命令のオペランドに対する情報を有
するオペランド情報ROM63に送られる。 The output of the operation code register 64 is sent to the operation code decode unit 61 which obtains the start address of the microprogram of the execution unit EU 30 of the relevant instruction, and to the operand information ROM 63 which has information regarding the operand of the relevant instruction.
ROM61の出力結果201は先頭アドレスレ
ジスタ62にセツトされ、オペコードバス114
を介して、第1オペランドがオペランドフエツチ
ユニツトOFU29から実行ユニツトEU30に渡
されるのに同期して、EU30に送出される。
ROM63は、例えば第6図に示す構成で、その
中には、第6図に示すような情報があらかじめ設
定されており、オペコードと第何番目のオペラン
ドの処理であるかの情報をアドレスとして読み出
される。 The output result 201 of the ROM 61 is set in the start address register 62 and is sent to the operation code bus 114.
is sent to the EU 30 via the first operand synchronously with the first operand being passed from the operand fetch unit OFU 29 to the execution unit EU 30.
The ROM 63 has, for example, the configuration shown in FIG. 6, in which information as shown in FIG. 6 is preset, and the information about the operation code and the number of the operand to be processed is read out as an address. It can be done.
すなわち、オペコードレジスタ64に、第1バ
イト目がセツトされた時には、セレクタSEL81
でバス200側が選ばれるため、オペコードをア
ドレスとして、その第1オペランドに関する情報
が読み出される。 That is, when the first byte is set in the operation code register 64, the selector SEL81
Since the bus 200 side is selected, information regarding the first operand is read using the opcode as an address.
読み出された情報としては、
(1) オペランドの属性、すなわち、リードオペラ
ンドであるか、ライトオペランドであるかの情
報R/Wや、オペランドのデータ長L(バイ
ト、ワード、ロングワード)を示す情報、
(2) オペランドの最終であることを示すフラツ
グ、および
(3) 同一命令の次オペランドの情報が入つている
アドレス、
がある。 The information read out includes: (1) Attributes of the operand, that is, information indicating whether it is a read operand or a write operand, R/W, and the data length L (byte, word, long word) of the operand. (2) a flag indicating that it is the last operand; and (3) an address containing information about the next operand of the same instruction.
(1)はバス105−1に出力され、アドレス計算
ユニツトAU28に出力され、また(2)は、バス2
03に出力され、デコード処理終了バイト数検出
器65に送出される。 (1) is output to bus 105-1 and output to address calculation unit AU28, and (2) is output to bus 2
03, and sent to the decoding completed byte number detector 65.
また、(2)、(3)の情報は、レジスタ83にラツチ
された後、バス204に出力され、次のオペラン
ドを読み出すアドレスとして使用される。 Furthermore, the information in (2) and (3) is latched in the register 83, then output to the bus 204, and is used as an address for reading the next operand.
(2)の情報のラツチ情報が、セレクタ81の選択
端子Sに入力されるため、(2)の情報が“1”の場
合は、オペコードレジスタ64の内容(200)が
使用され、“0”の場合は(3)の情報が使用され
る。 Since the latch information of the information in (2) is input to the selection terminal S of the selector 81, if the information in (2) is "1", the content (200) of the operation code register 64 is used, and it is set to "0". In this case, the information in (3) is used.
一方、バス104の中で、連続フラツグSを示
す信号線205は、デコード処理終了バイト数検
出器65に送出される。 On the other hand, in the bus 104, a signal line 205 indicating the continuous flag S is sent to a decoding completed byte number detector 65.
また、オペランド指定子の先頭7ビツトは、バ
ス206により、オペランド指定子デコーダ66
に送られる。7ビツトの情報によりオペランド指
定子のデコードを行うが、その例を第7図により
説明する。 Furthermore, the first seven bits of the operand specifier are transferred to the operand specifier decoder 66 via the bus 206.
sent to. The operand specifier is decoded using 7-bit information, and an example thereof will be explained with reference to FIG.
たとえば、第2図BのNo.3に示す(Rn+
DISP8)のオペランド指定子が送られると、第7
図Aのように上位7ビツトの中の更に3ビツトが
010であることを検出して、下記情報が出力でき
る。 For example, as shown in No. 3 in Figure 2B (Rn+
When the operand specifier of DISP 8 ) is sent, the seventh
As shown in Figure A, three more bits of the top seven bits
010 is detected and the following information can be output.
(1) 2バイト長のオペランド指定子であること。(1) Must be a 2-byte operand specifier.
(2) バス208の内容をバス106へ出力する場
合、DISPの桁合せを行うため3バイトの右シ
フトが必要であること。(2) When outputting the contents of bus 208 to bus 106, a 3-byte right shift is required to align the DISP digits.
(3) DISP値として4バイト化を図るため、上位
3バイトについては、DISP8の最上位ビツトを
符号拡張して出力すること。(3) In order to convert the DISP value into 4 bytes, the most significant bit of DISP 8 should be sign-extended and output for the upper 3 bytes.
(4) Rn+DISPでもつてオペランドのアドレスが
計算できること。(4) The address of the operand can be calculated using Rn+DISP.
(5) Rnの情報は1バイト目の下位4ビツトに存
在すること。(5) Rn information must exist in the lower 4 bits of the 1st byte.
の5つである。同様に、第2図BのNo.7の(Rn
+DISP32)が送られてくると、第7図Bに示すよ
うに上位7ビツトが1110110であることを検出し
て、下記情報が出力できる。There are five. Similarly, (Rn
+DISP 32 ) is sent, it detects that the upper 7 bits are 1110110 as shown in FIG. 7B, and the following information can be output.
(1) 6バイト長のオペランド指定子であること、
(2) バス208の内容をバス106へ出力する場
合、DISPの桁合せを行うため1バイト左シフ
トが必要であること、
(3) DISPは32ビツト全てが指定されているため
そのまま出力しなければならないこと、
(4) Rn+DISPでもつてオペランドのアドレスが
計算できること、
(5) Rnの情報は、オペランド指定子の2バイト
目の下位4ビツトに存在すること。(1) Must be a 6-byte operand specifier; (2) When outputting the contents of bus 208 to bus 106, a 1-byte left shift is required to align the digits of DISP; (3) DISP (4) The address of the operand can be calculated using Rn + DISP. (5) The information on Rn is stored in the lower 4 bits of the second byte of the operand specifier. To exist.
の5つである。There are five.
以上2つの例につき示したがこれらをまとめて
みると次のようになる。 The two examples above have been shown, but if we summarize them, we get the following.
オペランド指定子デコーダ66は、送られてき
たオペランド指定子をデコードし、次にあげる情
報をそれぞれ出力する。 The operand specifier decoder 66 decodes the received operand specifier and outputs the following information.
(1) バス215へは、オペランド指定子の長さを
バイト単位で出力する。例えば、第2図Eの
No.3のオペランド指定子で、(Rn+DISP8)のオ
ペランド指定子が送られてきた時は、“2”を
出力する。(1) The length of the operand specifier is output to the bus 215 in bytes. For example, in Figure 2 E
When the No. 3 operand specifier (Rn+DISP 8 ) is sent, "2" is output.
(2) バス211へは、デイスプレースメント
(DISP)/イミーデイエツト(IM)データ用
アライナ67に対するシフトバイト数を出力す
る。(2) The number of shift bytes for the displacement (DISP)/immediate data aligner 67 is output to the bus 211.
例えば、(Rn+DISP8)のオペランド指定子の
場合は、第7図Aに示した如く3バイト右シフ
トを、(Rn+DISP32)の場合は、第7図Bに示
した如く1バイト左シフトを指示する。 For example, the operand specifier (Rn+DISP 8 ) specifies a 3-byte right shift as shown in Figure 7A, and the operand specifier (Rn+DISP 32 ) specifies a 1-byte left shift as shown in Figure 7B. do.
(3) バス212へは、アライナ67に対するマス
クバイトの指示データを出力する。(3) Mask byte instruction data for the aligner 67 is output to the bus 212 .
これは、アライナ67に対し、バス106に
出力する4バイトのデータ中、上位2バイト、
又は3バイトのマスクを指示することで、1バ
イトや2バイトのDISP、IM情報の符号拡張に
よる4バイト化を図るためのものである。 This is for the aligner 67, of the 4 bytes of data output to the bus 106, the upper 2 bytes,
Alternatively, by instructing a 3-byte mask, 1-byte or 2-byte DISP or IM information is sign-extended to 4-byte information.
例えば、DISP8の時には、第7図Aに示す如
く3バイトシフト、DISP32の時は第7図Bの
如く「−Rn」という余分な1バイトがあるた
め、1バイト左シフトする。 For example, when DISP 8 , as shown in FIG. 7A, there is a 3-byte shift, and when DISP 32 , as shown in FIG. 7B, there is an extra byte "-Rn", so there is a 1-byte left shift.
これは、DISP8の時、上3バイトにはDISP8
の符号ビツトを拡張して入れておかないと、32
ビツトの正常なアドレス計算ができないからで
ある。(バス212はその指定のためのもの)
(4) バス105−2へはアドレツシングモードを
出力し、これによつてアドレス計算ユニツト
AU28の動作モードを指示する。 This means that when DISP 8 is used, DISP 8 is written in the upper 3 bytes.
If you do not expand the sign bit of
This is because correct bit address calculation cannot be performed. (Bus 212 is for that specification.) (4) Outputs the addressing mode to bus 105-2, thereby controlling the address calculation unit.
Indicates the operation mode of AU28.
アドレツシングモードについては、第3図の
アドレス計算ユニツトAU28の説明に関連し
て、(a)〜(h)の8つのモードがあることを既に説
明した。 Regarding the addressing modes, it has already been explained that there are eight modes (a) to (h) in connection with the explanation of the address calculation unit AU28 in FIG.
(5) バス216へはジエネラルレジスタRnの存
在する位置が、1バイト目か2バイト目かを示
す情報を出力する。(5) Information indicating whether the general register Rn is located in the first byte or the second byte is output to the bus 216.
(Rn+DISP8)時は1バイト目、(Rn+
DISP32)時は2バイト目が指示される。 (Rn+DISP 8 ), the 1st byte, (Rn+
DISP 32 ), the second byte is specified.
一方、バス108へは、オペランド指定子の中
のインデツクスレジスタRxの部分を出力する。
また、セレクタ68は、信号216で指定された
ジエネラルレジスタRnの存在する位置(1バイ
ト目か2バイト目かの信号)によつて、Rnに対
応する部分(バス207の内容或いはバス210
の内容)をバス107へ出力する。 On the other hand, the portion of the index register Rx in the operand specifier is output to the bus 108.
Further, the selector 68 selects the portion corresponding to Rn (the contents of the bus 207 or
) is output to bus 107.
アライナ67は、前述したように、オペランド
指定子の2バイト目から7バイト目までがバス2
08によつて与えられるため、信号線211で与
えられたシフト数だけシフト処理を行い、且つ信
号線212で与えられたマスク部に対しては、符
号の拡張を行い、バス106に4バイトのデータ
として出力する。 As mentioned above, the aligner 67 uses the bus 2 bytes 2 to 7 of the operand specifier.
08, the shift processing is performed by the number of shifts given by the signal line 211, and the mask part given by the signal line 212 is sign extended, and 4 bytes are sent to the bus 106. Output as data.
これらは、第7図A,Bに示した通りである。 These are as shown in FIGS. 7A and 7B.
次に、デコード処理終了バイト数検出器65に
ついて説明する。 Next, the decoding completed byte number detector 65 will be explained.
この部分は、本発明になる不定長命令(Sビツ
ト付加したもの)を扱う場合の要部でもある。 This part is also the main part when handling an undefined length instruction (one with S bit added) according to the present invention.
デコード処理終了バイト数検出器65には、前
述した如く、オペランド終了フラツグEを示す信
号線203、オペラツド指定子の連続ビツトSを
示す信号線205及びオペランド指定子のバイト
数(OSB)を示す信号線215の3つの信号線が
入力されており、信号線214へは、次のオペラ
ンド指定子のアドレスを示すため、DP69の加
算値DPINCBをバイト単位で出力する。 As described above, the decoding process end byte number detector 65 includes a signal line 203 indicating the operand end flag E, a signal line 205 indicating the consecutive bits S of the operand specifier, and a signal line 205 indicating the number of bytes of the operand specifier (OS B ). Three signal lines, signal line 215, are input, and to signal line 214, the added value DPINC B of DP69 is output in byte units to indicate the address of the next operand specifier.
後述するように、デコード処理終了バイト数検
出器65には、Sビツトをラツチするフリツプフ
ロツプを有し、そのフリツプフロツプ(FFO)
の出力は、次のように制御される。 As will be described later, the decoding completed byte number detector 65 has a flip-flop that latches the S bit, and the flip-flop (FFO)
The output of is controlled as follows.
すなわち、FFOの出力が0の時、S=1の情
報が送られてきた時は、オペランドに対応する情
報とAユニツトに送出した時にFFOの出力は1
となる。 In other words, when the FFO output is 0 and information with S=1 is sent, the FFO output will be 1 when the information corresponding to the operand and the A unit are sent.
becomes.
一方、FFOの出力が1でS=1の情報が送ら
れてきた時は、オペランドに対応する情報をAユ
ニツトに送出した時にFFOの出力は0となる。
S=0の情報が送られてきた時は、FFOの出力
は0のままである。 On the other hand, if the FFO output is 1 and information with S=1 is sent, the FFO output becomes 0 when the information corresponding to the operand is sent to the A unit.
When S=0 information is sent, the FFO output remains 0.
上記フリツプフロツプの出力信号FFOと3つ
の入力信号でもつて、DPINCB104出力は次の
ような出力となる。 Even with the above flip-flop output signal FFO and three input signals, the DPINC B 104 output is as follows.
E=1であれば、
DPINCB=OSB
これ以外で、S=0或いはS=1でFFO=1
の時、
DPINCB=OSB−1
これ以外は、DPINCB=0
すなわち、
(1) オペランドの終了フラツグEが“1”の場合
は、該当命令の処理は終了したため、次の命令
の先頭をさすように、DPレジスタ69がオペ
ランド指定子のバイト数分(OSB)加算される
よう信号線214に出力される。 If E=1, DPINC B = OS BOtherwise, S=0 or S=1 and FFO=1
When , DPINC B = OS B −1 Otherwise, DPINC B = 0. (1) If the end flag E of the operand is “1”, processing of the corresponding instruction has been completed, and the beginning of the next instruction is As shown, the signal is output to the signal line 214 so that the DP register 69 is added by the number of bytes of the operand specifier (OS B ).
(2) (1)でなく、また終了フラツグSがセツトされ
ていない場合は、次のオペランド指定子が1バ
イトのダミーを先頭バイトにおいて、バス10
4に出力させるため、(オペランド指定子のバ
イト数:OSB)−1の値が加算されるよう信号
線214に出力される。(2) If (1) is not met, and the end flag S is not set, the next operand specifier is a 1-byte dummy in the first byte, and the end flag S is not set.
4, it is output to the signal line 214 so that the value of (number of bytes of operand specifier: OS B ) -1 is added.
(3) (1)でなく、また終了フラツグSがセツトされ
ている場合は、DPレジスタ69が、そのまま
の値をとるよう、“0”が出力される。これに
よつて、同一のオペランド指定子を、次のオペ
ランドに対する処理にも使用することになり、
同一のオペランドが繰返し使用されることにな
る。(3) If (1) is not satisfied and the end flag S is set, "0" is output so that the DP register 69 takes the same value. This causes the same operand specifier to be used to process the next operand,
The same operand will be used repeatedly.
第8図は、デコード処理終了バイト数検出器6
5における上記アルゴリズムを実現するハードウ
エア構成を示している。 FIG. 8 shows the decoding completed byte number detector 6.
5 shows a hardware configuration for realizing the above algorithm in No. 5.
前述のフリツプフロツプFFOは、符号300
で示している。 The aforementioned flip-flop FFO has the code 300
It is shown in
フリツプフロツプ300は、その出力300−
1が“0”のとき、すなわち300−2が“1”
のとき、S=1の情報205が送られたときは、
アンドゲート309がオンし、タイミングCKに
より(オペランドに対応する情報をAU28に送
出した時)セツトされ、その出力300−1が
“1”となる。 Flip-flop 300 has its output 300-
When 1 is “0”, that is, 300-2 is “1”
When the information 205 of S=1 is sent,
AND gate 309 is turned on and set by timing CK (when information corresponding to the operand is sent to AU 28), and its output 300-1 becomes "1".
一方、出力300−1が“1”で、S=1の情
報が送られた時は、これと逆にリセツトされ、3
00−1は“0”となる。 On the other hand, when the output 300-1 is "1" and information of S=1 is sent, it is reset and 3
00-1 becomes "0".
S=0の情報が送られてきた時は、アンドゲー
ト309がオフであるから、300−1は“0”
のままである。 When information of S=0 is sent, AND gate 309 is off, so 300-1 is “0”
It remains as it is.
いま、E=1の場合は、出力ゲート301が開
き、バス214には、バス215の内容OSBが出
力され、E=0の時は、S=0の時或いはS=1
でフリツプフロツプ300の出力300−1が
“1”の時、アンドゲート311により出力ゲー
ト303が開き、演算器308の出力OSB−1が
バス214に出力され、これ以外の時は、アンド
ゲート312により出力ゲート302が開き、
“0”をバス214に出力する。アンドゲート3
11,312がオンするまでの、インバータ30
4〜306、オアゲート307、アンドゲート3
10の論理回路の動作説明は、省略する。 Now, when E=1, the output gate 301 opens and the contents OS B of the bus 215 are output to the bus 214, and when E=0, the output gate 301 opens and the contents OS B of the bus 215 are output to the bus 214.
When the output 300-1 of the flip-flop 300 is "1", the output gate 303 is opened by the AND gate 311, and the output OS B -1 of the arithmetic unit 308 is output to the bus 214. Otherwise, the AND gate 312 The output gate 302 opens,
Output “0” to bus 214. and gate 3
Inverter 30 until 11,312 is turned on.
4-306, or gate 307, and gate 3
A description of the operation of the logic circuit No. 10 will be omitted.
加算器71は、現在のDPレジスタ69の値
と、信号線214の値を加算し、セレクタ70を
介して、DPレジスタ69にセツトすることで次
のオペランド指定子のアドレスをバス102に出
力することが可能となる。これにより、アライナ
ALIG26は、次のオペランド指定子を第5図
A,Bに示すフオーマツトでバス104に出力で
きる。 The adder 71 adds the current value of the DP register 69 and the value of the signal line 214, and outputs the address of the next operand specifier to the bus 102 by setting it in the DP register 69 via the selector 70. becomes possible. This allows the aligner
ALIG 26 can output the next operand specifier to bus 104 in the format shown in FIGS. 5A and 5B.
一方、セレクタ70によつて、バス115の内
容を選択してDPレジスタ69にセツトすること
で前述した分岐命令におけるDPレジスタ69の
変更も可能となる。 On the other hand, by selecting the contents of the bus 115 and setting them in the DP register 69 using the selector 70, it is also possible to change the DP register 69 in the aforementioned branch instruction.
尚加算器72は、DPレジスタ69の値に、該
当オペランド指定子の長さを示す信号線215の
値(OSB)を加え、さらにキヤリー入力“1”を
加えることで、デコードしているオペランド指定
子の次のアドレスをバス116に出力する。 The adder 72 adds the value of the signal line 215 (OS B ) indicating the length of the corresponding operand specifier to the value of the DP register 69, and further adds a carry input "1" to the value of the operand being decoded. Outputs the next address of the specifier onto bus 116.
アドレス計算ユニツトAU28は、バス116
の内容をアドレス計算に使用するプログラムカウ
ンタPCの値として利用する。 The address calculation unit AU28 is connected to the bus 116.
The contents of are used as the value of the program counter PC used for address calculation.
このように、本発明によれば、オペコードとオ
ペランド指定子が独立で、且つ1つのオペコード
により、A OP B→Cタイプの命令もA OP
B→Bタイプの命令をも、それぞれの命令の情報
量を最適にして表わすことができ、同一長さのオ
ペコードで指定可能な命令数が増加する。 In this way, according to the present invention, the opcode and operand specifier are independent, and one opcode also allows A OP B→C type instructions to be A OP
B→B type instructions can also be expressed by optimizing the amount of information for each instruction, increasing the number of instructions that can be specified with an opcode of the same length.
つまり、オペコード長が同一の場合は、本発明
によれば、より大くの高機能命令を付加できるこ
とになる。 In other words, when the opcode lengths are the same, according to the present invention, more high-performance instructions can be added.
尚上記実施例においては、連続フラツグSはオ
ペランド指定子の最上位ビツトに付加されている
が、必らずしもこの部分に限定する必要はなく、
オペランド指定子のどこかに連続フラツグを設け
ればよい。 In the above embodiment, the continuity flag S is added to the most significant bit of the operand specifier, but it is not necessarily limited to this part.
Just set a continuity flag somewhere in the operand specifier.
また、同一のオペランドを複数回繰返し、利用
するのに、上記実施例では、DPレジスタ69の
内容を更新させずに、同一のオペランド指定子を
繰返しデコードすることによりこれを実現してい
るが、これ以外にも、デコードユニツトから実行
ユニツトFU30に特別な信号を送り、先に求め
られたオペランドを繰返し利用するように指示し
てもよい。 Furthermore, in the above embodiment, the same operand is repeatedly used multiple times by repeatedly decoding the same operand specifier without updating the contents of the DP register 69. In addition to this, a special signal may be sent from the decoding unit to the execution unit FU30 to instruct it to repeatedly use the previously requested operand.
更に、上記実施例では、最終のオペランド指定
子にS=1を付加したが、本願発明では2回繰返
し使用したい任意のオペランド指定子にS=1を
付加し、当該オペランド指定子のみを2回繰返し
て使用できるので、1つのオペコードで、A
OP B→Cタイプの命令もA OP A→Bタイプ
の命令をも、それぞれの命令の情報量を最適にし
て表わすことができる。 Furthermore, in the above embodiment, S=1 was added to the final operand specifier, but in the present invention, S=1 is added to any operand specifier that is desired to be used twice, and only that operand specifier is used twice. It can be used repeatedly, so with one opcode, A
Both OP B→C type instructions and A OP A→B type instructions can be represented by optimizing the amount of information for each instruction.
第9図は各オペランド指定子の1ビツトに連続
情報を設けることで、AOPB→Cのレパートリー
に対し同一オペコード(OP)で各種のオペラン
ド指定が可能なとこを示している。すなわち本発
明では、Sビツトによつて2回繰返して同じオペ
ランドを使用させている。 FIG. 9 shows that by providing continuous information in one bit of each operand specifier, it is possible to specify various operands with the same opcode (OP) for the AOPB→C repertoire. That is, in the present invention, the S bit causes the same operand to be used twice.
第1図は本発明が適用されるデータ処理システ
ムの基本的な概念図、第2図A,Bは本発明に使
用される不定長命令のフオーマツト及び、オペラ
ンド指定子のフオーマツトを示す図、第3図は第
1図の中央処理装置の具体的な一実施例ブロツク
構成図、第4図は、本発明の要部である第3図の
デコードユニツトの具体的な一実施例ブロツク
図、第5図は第4図の説明に用いられるオペラン
ド指定子のフオーマツト、第6図は第4図のオペ
ランド情報ROM63の内容を説明するための説
明図、第7図は第4図のオペランド指定子デコー
ダ66の動作説明に用いる説明図、第8図は第4
図のデコード処理終了バイト数検出器65のハー
ド構成を示す一実施例図、第9図は本発明による
各種のオペランド指定例を示す説明図である。
27……デコードユニツト、61……オペコー
ドデコードユニツト、63……オペランド情報
ROM、65……デコード処理終了バイト数検出
器、66……オペランド指定子デコーダ、205
……連続情報。
FIG. 1 is a basic conceptual diagram of a data processing system to which the present invention is applied, FIGS. 3 is a block diagram of a specific embodiment of the central processing unit shown in FIG. 1, and FIG. 4 is a block diagram of a specific embodiment of the decoding unit of FIG. 5 is the format of the operand specifier used to explain FIG. 4, FIG. 6 is an explanatory diagram for explaining the contents of the operand information ROM 63 in FIG. 4, and FIG. 7 is the operand specifier decoder in FIG. 4. An explanatory diagram used to explain the operation of 66, Fig. 8 is the 4th
FIG. 9 is an explanatory diagram showing various operand designation examples according to the present invention. 27...Decode unit, 61...Opcode decode unit, 63...Operand information
ROM, 65...Decode processing completed byte number detector, 66...Operand specifier decoder, 205
...Continuous information.
Claims (1)
るオペランド指定子が処理の種類およびオペラン
ドの数を指定するオペコード部分から独立してい
る命令を扱うデータ処理装置において、該命令
は、少なくともオペランド指定子と対をなして付
加されたオペランド指定子連続情報を含み、デコ
ード手段は、少なくともオペコードデコード手段
と、オペランド指定子デコード手段と、オペラン
ド指定子連続情報検出手段を有し、オペランド指
定子のデコード時において、該オペランド指定子
連続情報検出手段が連続情報がセツトされている
ことを検出した場合、当該オペランド指定子を2
回繰返し使用するようにしたことを特徴とする不
定長命令を扱うデータ処理装置。1. In a data processing device that handles an instruction in which an operand specifier that specifies the addressing mode of an operand is independent from an opcode part that specifies the type of processing and the number of operands, the instruction must have at least a pair with the operand specifier. The decoding means includes at least an operation code decoding means, an operand specifier decoding means, and an operand specifier continuation information detection means, and the decoding means includes at least an operation code decoding means, an operand specifier decoding means, and an operand specifier continuation information detection means, and when decoding the operand specifier, When the operand specifier continuous information detection means detects that continuous information is set, the operand specifier is set to 2.
A data processing device that handles an indefinite length instruction, characterized in that it is designed to be used repeatedly.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP14110381A JPS5844539A (en) | 1981-09-09 | 1981-09-09 | Data processor handling instruction of unfixed length |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP14110381A JPS5844539A (en) | 1981-09-09 | 1981-09-09 | Data processor handling instruction of unfixed length |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS5844539A JPS5844539A (en) | 1983-03-15 |
| JPS6149694B2 true JPS6149694B2 (en) | 1986-10-30 |
Family
ID=15284248
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP14110381A Granted JPS5844539A (en) | 1981-09-09 | 1981-09-09 | Data processor handling instruction of unfixed length |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS5844539A (en) |
-
1981
- 1981-09-09 JP JP14110381A patent/JPS5844539A/en active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS5844539A (en) | 1983-03-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR100327778B1 (en) | Data processing method using multiple instruction sets | |
| KR880000297B1 (en) | Central processing unit for executing instructions of variable length | |
| EP0220684B1 (en) | Data processing system | |
| US4454578A (en) | Data processing unit with pipelined operands | |
| JP3203401B2 (en) | Data processing device | |
| JP3173793B2 (en) | Data processing apparatus and data processing method using multiple instruction sets | |
| JPH0429093B2 (en) | ||
| USRE32493E (en) | Data processing unit with pipelined operands | |
| JPS62197830A (en) | Data processing system | |
| JPH02173823A (en) | Data processor | |
| JPH07120278B2 (en) | Data processing device | |
| US4258417A (en) | System for interfacing between main store memory and a central processor | |
| JPS645330B2 (en) | ||
| JPS6149692B2 (en) | ||
| JPS6160459B2 (en) | ||
| JPS623336A (en) | Conditional branch system | |
| JPS623332A (en) | Information processor having instruction containing direct value field | |
| JPS6149693B2 (en) | ||
| JPS6355634A (en) | Data processing system | |
| US4812989A (en) | Method for executing machine language instructions | |
| US5187782A (en) | Data processing system | |
| JP2007122626A (en) | Microprocessor | |
| JPS5844539A (en) | Data processor handling instruction of unfixed length | |
| JPH0642198B2 (en) | Data processing device | |
| JPH02146628A (en) | Data processor |