JPS6149693B2 - - Google Patents

Info

Publication number
JPS6149693B2
JPS6149693B2 JP56132717A JP13271781A JPS6149693B2 JP S6149693 B2 JPS6149693 B2 JP S6149693B2 JP 56132717 A JP56132717 A JP 56132717A JP 13271781 A JP13271781 A JP 13271781A JP S6149693 B2 JPS6149693 B2 JP S6149693B2
Authority
JP
Japan
Prior art keywords
operand
bus
instruction
specifier
unit
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
JP56132717A
Other languages
English (en)
Other versions
JPS5835643A (ja
Inventor
Yasushi Fukunaga
Tadaaki Bando
Yoshinari Hiraoka
Kotaro Hirasawa
Hidekazu Matsumoto
Toshuki Ide
Takeshi Kato
Hiroaki Nakanishi
Tetsuya Kawakami
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
Hitachi Industry and Control Solutions Co Ltd
Original Assignee
Hitachi Engineering Co Ltd Ibaraki
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 Engineering Co Ltd Ibaraki, Hitachi Ltd filed Critical Hitachi Engineering Co Ltd Ibaraki
Priority to JP56132717A priority Critical patent/JPS5835643A/ja
Priority to US06/408,924 priority patent/US4530050A/en
Priority to EP82107598A priority patent/EP0073424B1/en
Priority to DE8282107598T priority patent/DE3278442D1/de
Priority to KR8203773A priority patent/KR880000297B1/ko
Priority to CA000410221A priority patent/CA1186801A/en
Publication of JPS5835643A publication Critical patent/JPS5835643A/ja
Publication of JPS6149693B2 publication Critical patent/JPS6149693B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Detection And Correction Of Errors (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 本発明は、オペランドのアドレツシングモード
を指定するオペランド指定子が処理の種類および
オペランド数を指定するオペコード部分から独立
している不定長命令のエラーを検出するデータ処
理装置に関するものである。
オペランド指定子の長さは、アドレツシングモ
ードに対応して任意に変り、命令の長さが可変で
あることからこのような命令を可変長命令と呼ぶ
こともある。
「不定長命令」と「可変長命令」との間には特
別の意味上の差異はなく、「不定長命令」なる用
語を「可変長命令」なる用語に置き換えても同一
の意味を持つ。しかし、ここでは、便宜上、本願
発明が扱う命令を不定長命令、従来の命令を可変
長命令と称している。
可変長のオペランド指定子を持つ命令体系とし
て、公知の代表的な2つの例を次に示す。
1つはバローズ社(Burroughs Corporation)
の計算機B1700をCOBOL/RPG向きのアーキテ
クチヤとした時の命令フオーマツトであり、これ
は、「B1700 COBOL/RPG−S−Language、
1058823−015、Copyright 1973、Burroughs
Corporation」に示されている。
今1つの例は、DEC社(Digital Equipment
Corporation)の計算機VAX11/780のアーキテ
クチヤが有する可変長となるオペランド指定子を
持つ命令体系であり、これは、「VAX11
Architecture Handbook、Copyright 1979」およ
びUSP No.4236206に示されている。
ここに示した従来の2つの命令体系では、オペ
ランドの形式、アドレツシングモードを指定する
部分が、可変長のオペランド指定子で規定され、
オペコードから独立であるといつた特徴がある。
しかしながら、従来の可変長命令では、処理す
るオペランドの数と、処理するオペランドのアド
レツシングモードを指定するオペランド指定子が
1対1に対応づけられており、例えば A+B→B A+B→C という2つの処理(オペレーシヨン)に対し、2
つのオペコードを割当てる必要があつた。
具体的には、後述するが、オペコードデコード
手段がオペランドの最終であることを示す信号を
出力した時に、終了フラツグのセツトが検出され
ない場合当該命令をエラーとして検出するように
していることである。
以下、まず、本願発明の対象である不定長命令
を扱うデータ処理装置を図面を参照して詳細に説
明する。
第1図は本発明が適用されるデータ処理システ
ムの基本的な概念図である。
メモリ装置1と、複数の中央処理装置2が共通
バス3で接続されており、共通バス3を介して相
互の間の情報交換が可能となつている。
メモリ装置1は、命令および命令が扱うオペラ
ンドを格納するメモリ部11と、この命令および
オペランドの読み出し、書き込みを制御するメモ
リ制御部12で構成され、メモリ部11とメモリ
制御部12はメモリバス13で接続されている。
このような従来例にあつては、命令のエラー検
出が困難であつた。
本発明の目的は、複数個の処理するオペランド
数に対し、オペランド指定子を共用できる不定長
命令のエラー検出能力を向上させたデータ処理装
置を提供するにある。
本発明の特徴は、オペランドのアドレツシング
モードを指定する各オペランド指定子にそれぞれ
オペランド指定子の終了情報(以下フラツグと呼
ぶ)を付加し、この終了フラツグの内容と、オペ
コードが指示するオペランドの数によりエラー検
出を行うようにしていることである。
つまり、A+B→Bという処理では、2つのオ
ペランドを処理し、2つ目のオペランドに対して
は、これを2度使用するということを、オペコー
ドで特別に規定する必要があるからである。
もし、A+B→Bという処理で、オペランド数
を3とし、オペランド指定子を3つ用意すれば、
A+B→Bと、A+B→Cの区別を意識する必要
はないが、A+B→Bの処理では、全く同一のオ
ペランド指定子を2つ設ける必要があり、これ
は、オペランド指定子そのものが、複数バイト
(一般に長いものは7バイト)をとる時、メモリ
の実装効率を著しく低下し、好ましくない。
そもそも、A+B→Bと、A+B→Cの処理を
区別することは、メモリの実装効率を高める為に
なされたものである。(A+B→Bではオペラン
ド指定子を2つで済むようにした) このように、従来の方式では、同一のオペラン
ドを複数回使用する処理に対しては、他の同機能
の処理と区別する必要があり、オペコードで指定
可能な処理数に制限があつた。
尚A+B→Bという例で説明したが、これはA
−B→Bという処理も同様であり、AとBの演算
をし、その結果をBに格納するという例の全てに
いえることである。一般にこれをAOPB→Bと表
現している。
メモリ装置1の動作については、特願昭55−
160758号明細書に詳細に記載しているが、本発明
の要部とは直接関係ないので、この部分の詳細説
明は省略する。
中央処理装置2は、共通バス3に複数台接続可
能で(図示では2台)、それぞれ、メモリ装置1
より命令及びオペランドをアクセスして順次命令
の処理をしていく。
ここでは高速化のため、一度読み出された命
令、オペランドをそれぞれコピーしている命令キ
ヤツシユ21(高速バツフアメモリ)およびオペ
ランドキヤシユ22(高速バツフアメモリ)を有
し、また命令のフエツチ、デコード及びオペラン
ドアドレス演算を行うユニツト23と、オペラ
ンドのフエツチおよび命令の実行を行うEユニツ
トを有し、それぞれがパイプライン処理を行う例
を示している。
このような、命令のキヤツシユ、オペランドキ
ヤツシユの使い方、或いは、ユニツトとEユニ
ツトがパイプライン処理すること自体は公知であ
る。
さて、第2図Aは、中央処理装置2が扱う不定
長命令のフオーマツトを示している。
1つの命令は、1ないし数バイトで構成される
オペレーシヨンコード(これは通称、オペコード
と呼ばれている)OPと、終了フラツグSを伴つ
た1ないし複数バイトのオペランド指定子OS
1,OS2……OSnから構成されている。
オペコードOPでは、その命令の処理内容(処
理の種類)、処理に必要なオペランドの数および
オペランドの属性(データ長、リード/ライトの
区別、データタイプ:固定小数点/浮動小数点…
…等)が示される。
オペコードOPの後には、当該オペコードOPで
示されるオペランドの数以下のオペランド指定子
OS1,OS2……が示されていて、1つの命令
(正式には命令語:インストラクシヨン・ワー
ド)が構成される。
オペランド指定子は、該当命令で使用されるオ
ペランドの順番に並んでいて、最後のオペランド
指定子のみ、終了フラツグSが「1」にセツトさ
れている。もし、オペランド指定子の数が、オペ
コードOPで指定されるオペランド数より少ない
場合は、最後のオペランド指定子に対応するオペ
ランドが繰返し、使用される。
同一のオペランドを繰返し使用するには、いろ
いろな実現方法があるが、最も望ましい方法は、
最後のオペランド指定子を繰返し使用することで
あろう。この点については後で詳細に述べる。
オペコードOPで指定するオペランド数と、オ
ペランド指定子の数が不一致の例を次に説明す
る。
例えば、オペコードOPが加算処理の場合、そ
のフアンクシヨンは、 A+B→C で、3つのオペランドを必要とするが、オペラン
ド指定子が1つの場合は、 A+A→A 2つの場合は、 A+B→B という処理が、同一のオペコードで可能となる。
オペランド指定子の具体的な例を第2図Bに示し
ている。
ここでは、No.1〜No.24の例を示し、そのフオ
ーマツトと、これに対応するオペランドを1対1
対応で示している。
第2図Bにおいて、オペランドの( )は、
( )内の値をアドレスとしたメモリの内容であ
ることを示している。
また、フオーマツト中、DISPは、変位を、IM
はイミーデイエツト(データ直接)を示し、添字
はその大きさをビツト数で示している。
更に、Rxはインデツクスレジスタ、Rnはジエ
ネラルレジスタを示し、Lはオペランドの大きさ
をバイト単位で示したものである。
第2図Bにおいて、そのフオーマツトとオペラ
ンドの関係は、或程度理解できると思われるが、
以下、簡単に説明する。
No.1は、レジスタ直接のアドレス指定で、Rn
で示されるジエネラルレジスタそのものが、直接
オペランドとなるものである。
No.2以下は、全て、メモリをオペランドとす
るもので、そのアドレス計算がオペランドの欄に
示された形で行なわれる。
No.2は、間接アドレス指定で、Rnで示される
ジエネラルレジスタの内容がオペランドのアドレ
スとなるものである。
No.3、5、7では、Rnで示されるジエネラル
レジスタの内容に、DISPで示される値が加算さ
れて、これがオペランドのアドレスになつてい
る。
No.4、6、8では、No.3、5、7で求められ
たアドレスのメモリの内容が、オペランドのアド
レスとなるものである。
No.9〜11は、イミーデイエツトデータで、
IM8、IM16、IM32の値そのものがオペランドとな
つている。
No.12〜17は、ジエネラルレジスタRnの代りに
プログラムカウンタPCが使用されることが、
No.3〜8とは異なるだけである。PCは、デコー
ドするオペランド指定子の次のアドレスを保持し
ている。
No.18〜24は、No.3〜8にさらにインデツクス
レジスタRxの値が加算されることが異なり、ま
たインデツクスレジスタRxの値は、オペランド
のデータ長L分乗算された値が加算される。
これは、データ長にかかわらず、インデツクス
レジスタRxの値を、先頭から変位としてセツト
できるようにするため必要となる処理である。
つまり、L(データ長を示す)を乗算すること
により、インデツクスレジスタRxは、データ長
にかかわらず、先頭から何番目のデータであるか
を示す値を入れておけばよいことになる。
例えば、インデツクスレジスタRxに「10」が
入つていると、これは先頭から10番目のデータ
で、そのアドレスは、バイトの場合は10を加算
(L=1)、ワードの場合は20を加算(L=2)、
ロングワード(Long Word)では40を自動的に
加算し(L=4)、ユーザはデータ長にかかわら
ず、インデツクスレジスタRxの値をセツトでき
る。
第3図は、第1図の中央処理装置2のより具体
的なブロツク構成図である。
第1図におけるユニツト23は、第3図にお
いて、命令フエツチユニツト(IFU)25、アラ
イナ(ALIG)26、デコードユニツト(DU)2
7およびアドレス計算ユニツト(AU)28部分
がこれに対応し、Eユニツト24にはオペランド
フエツチユニツト(OFU)29、実行ユニツト
(EU)30が対応している。第1図では、ユニ
ツト23とEユニツト24がパイプライン処理を
行う旨述べたが、それぞれのユニツトは第3図に
示すように更に命令フエツチユニツトIFU25、
デコードユニツトDU27、アドレス計算ユニツ
トAU28、オペランドフエツチユニツトOFU2
9、実行ユニツト30に分割され、それぞれがパ
イプライン処理をする例を示している。
しかしながら、本願発明の要旨は、このような
パイプライン処理そのものとは直接関係ないの
で、パイプライン処理については詳細な説明は省
略している。尚、パイプライン処理そのものは周
知であるが、USP4025771号には、パイプライン
高速信号プロセツサが示されている。
ところで、第3図において、命令フエツチユニ
ツト25は、命令を先行してフエツチするための
プログラムカウンタ50を有し、命令キヤツシユ
21より次に実行されるであろう命令を先行して
読み出す処理を行なつている。
アドレスライン100により、読み出したいア
ドレスが命令キヤツシユ21に送られ対応する命
令4バイト分がデータライン101により命令フ
エツチユニツトIFU25に送出される。
命令キヤツシユ21に、対応する命令がなかつ
た場合は、共通バス3を介して、メモリ1から該
当の命令を読み出し、この命令は命令キヤツシユ
21にストアされる。キヤツシユの動作は周知で
あり、例えば、「A Guide to the IBM
System/370Model 168」に示されている。
命令4バイト分が命令フエツチユニツト25に
送出されると、プログラムカウンタ50はプラス
4(+4)され、次の命令の送出要求を命令キヤ
ツシユ21に出力する。
この動作は、命令フエツチユニツトIFU25内
にあるバツフア(図示せず)が満杯になるまで続
けられる。
命令フエツチユニツトIFU25からは、バス1
03を介して、あらかじめ読み出しておいた命令
がアライナ(ALIG)26に送出される。
アライナ26は、デコードユニツトDU27か
らの信号線102に指示されたバイト数だけシフ
ト処理を行い、バス104に該当の命令を送出す
る。
信号線102の値を適当に操作することで、バ
ス104には第5図に示すように、命令の第1オ
ペランド指定子処理時には、左端にオペコード
OPが、続いて第1番目のオペランド指定子が並
ぶように、2番目以降のオペランド指定子処理時
には、1バイトのダミーをおいてオペランド指定
子が配置して出力される。上記制御は、後で詳し
く説明する。
デコードユニツト(DU)27は、アライナ2
6(ALIG)より送出されたオペコード及びオペ
ランド指定子をデコードして、アドレス計算ユニ
ツトAU28へ下記の情報を送る。
(1) バス105を介してアドレツシングモードを
送る。
アドレツシングモードには、先に説明の如
く、次の(a)〜(h)があり、このうち1つが指定さ
れる。
(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に対応してい
る。
(2) バス106を介して、DISPまたはイミーデ
イエツトデータを32ビツトで送る。
(3) バス107を介してジエネラルレジスタRn
のアドレスを送る。
(4) バス108を介してインデツクスレジスタ
RRxのアドレス、 および (5) バス116を介してアドレス演算に使用する
プログラムカウンタの値を送る。
アドレス計算ユニツトAU28は、バス105
によつて示されたアドレツシングモードに従い、
上記(a)、(e)以外の時は、オペランドのアドレス計
算を行い、バス109に計算後のアドレスを送出
する。
一方、(a)の場合は、バス107の内容を、その
まゝバス113に送出し、(e)の場合はバス106
の内容をバス109に送出する。
オペランドフエツチユニツトOFU29は、上
記(a)、(e)以外の時は、送られたアドレスが示され
ているバス109の内容を、バス110に送出
し、オペランドがリード時には、オペランドキヤ
ツシユ22にリード処理を要求する。
リードオペランドが、オペランドキヤツシユ2
2からバス111に送出されると、オペランドフ
エツチユニツトOFU29は、バス112を介し
て実行ユニツトEU30に、読み出されたオペラ
ンドを送出し、またオペランドがそろつた旨を連
絡する。
オペランドがライト時は、実行ユニツトEU3
0からの書き込みデータが、バス111に出力さ
れるまで、オペランドフエツチユニツトOFU2
9は、アドレスをバス110に送出し続ける。
一方、上記(a)に対しては、オペランドフエツチ
ユニツトOFU29は、アドレス計算ユニツトAU
28より送出されたレジスタアドレス113によ
り、自身が有するジユネラルレジスタ(図示せ
ず)のアクセスを行う。(a)以外と異なるのは、メ
モリアクセスするか、レジスタをアクセスするか
の差異のみである。
また、(e)に対しては、バス109の内容をその
ままバス111に送出し、実行ユニツトEU30
にオペランドがそろつた旨を連絡する。
また、実行ユニツトEU30は、デコードユニ
ツトDU27からオペコードバス114を介して
送出されたマイクロプログラムの先頭アドレスを
受信し、リード時は、バス112のオペランドを
用いて、ライト時は、オペランド(データ)をバ
ス111に出力して順次、命令の処理を行う。
また、命令が分岐命令の場合は、バス115を
用いて、新たなプログラムカウンタ値を命令フエ
ツチユニツトIFU25のプログラムカウンタ50
や、後述するデコードユニツトDU27内のDPレ
ジスタ69にセツトすると同時に、パイプライン
処理で先行的に処理されていたオペランドの各ユ
ニツトにおける処理結果をキヤンセルさせる。
以上が、1つのオペランド指定子に対する処理
の概略で、各ユニツト25〜30は、パイプライ
ン処理で、順次オペランド指定子の処理を並列に
処理してく。
次に、本発明の要旨に関係するデコードユニツ
ト27について、具体例を示し詳細に説明する。
第4図は、第3図に示すデコードユニツトDU
27の具体的な実施例を示すブロツク図である。
DPレジスタ69は、デコードユニツトDU27
がデコードする命令の先頭を示しており、第1番
目のオペランド指定子デコード時は、オペコード
のアドレスを、第2番目以下のデコード時は、該
当オペランド指定子の先頭−1のアドレスを示し
ている。
上記アドレスは、バス102を介して第3図に
示すアライナALIG26、命令フエツチユニツト
IFU25に送出されているため、バス104に
は、第5図に示すように、1バイト目には、第1
オペランド指定子の読み出しの場合は、Aに示す
ように、オペコードOP、第2オペランド指定子
以下の読み出しの場合は、Bに示すように、ダミ
ーのデータ、第2バイト目には、終了フラツグS
を含んだオペランド指定子の先頭バイトが、第3
バイト目から第7バイト目には、オペランド指定
子のその他の情報が出力される。
バス204は、第何番目のオペランドの処理を
しているかを示す情報で、本情報が全オペランド
処理終了を示している時、バス104の第1バイ
トはオペコードレジスタ64にセツトされる。
オペコードレジスタ64の出力は、該当命令の
実行ユニツトEU30のマイクロプログラムの先
頭アドレスを求めるオペコードデコードユニツト
61と、該当命令のオペランドに対する情報を有
するオペランド情報ROM63に送られる。
ROM61の出力結果201は先頭アドレスレ
ジスタ62にセツトされ、オペコードバス114
を介して、第1オペランドがオペランドフエツチ
ユニツトOFU29から実行ユニツトEU30に渡
されるのに同期して、EU30に送出される。
ROM63は、例えば第6図に示す構成で、そ
の中には、第6図に示すような情報があらかじめ
入力されており、オペコードと第何番目のオペラ
ンドの処理であるかの情報をアドレスとして読み
出される。
すなわち、オペコードレジスタ64に、第1バ
イト目がセツトされた時には、セレクタSEL81
で、バス200側が選ばれるため、オペコードを
アドレスとして、その第1オペランドに関する情
報が読み出される。
読み出された情報としては、 (1) オペランドの属性、すなわち、リードオペラ
ンドであるか、ライトオペランドであるかの情
報R/Wや、オペランドのデータ長L(バイ
ト、ワード、ロングワード)を示す情報、 (2) オペランドの最終であることを示すフラツ
グ、および、 (3) 同一命令の次オペランドの情報が入つている
アドレス、 がある。
(1)はユニツト105−1に出力され、アドレス
計算ユニツトAU28に出力され、また(2)は、バ
ス203に出力され、デコード処理終了バイト数
検出器65に送出される。
また、(2)、(3)の情報は、レジスタ83にラツチ
された後、バス204に出力され、次のオペラン
ドを読み出すアドレスとして使用される。
(2)の情報のラツチ情報が、セレクタ81の選択
端子Sに入力されるため、(2)の情報が“1”の場
合は、オペコードレジスタ64の内容(200)が
使用され、“0”の場合は(3)の情報が使用され
る。
一方、バス104の中で、終了フラツグSを示
す信号線205は、デコード処理終了バイト数検
出器65に送出される。
また、オペランド指定子の先頭7ビツトは、バ
ス206により、オペランド指定子デコーダ66
に送られる。7ビツトの情報によりオペランド指
定子のデコードを行うが、その例を第7図により
説明する。
たとえば、第2図BのNo.3に示す(Rn+
DISP8)のオペランド指定子が送られると、第7
図Aのように上位7ビツトの中の更に3ビツトが
010であることを検出して、下記情報が出力でき
る。
(1) 2バイト長のオペランド指定子であること、 (2) バス208の内容をバス106へ出力する場
合、DISPの桁合せを行うため3バイトの右シ
フトが必要であること、 (3) DISP値として4バイト化を図るため、上位
3バイトについては、DISP8の最上位ビツトを
符号拡張して出力すること、 (4) Rn+DISPでもつてオペランドのアドレスが
計算できること、 (5) Rnの情報は1バイト目の下位4ビツトに存
在すること、 の5つである。同様に、第2図BのNo.7の(Rn
+DISP32)が送られてくると、第7図Bに示すよ
うに上位7ビツトが1110110であることを検出し
て、下記情報が出力できる。
(1) 6バイト長のオペランド指定子であること、 (2) バス208の内容をバス106へ出力する場
合、DISPの桁合せを行うため1バイト左シフ
トが必要であること、 (3) DISPは32ビツト全てが指定されているため
そのまま出力しなければならないこと、 (4) Rn+PISPでもつてオペランドのアドレスが
計算できること、 (5) Rnの情報は、オペランド指定子の2バイト
目の下位4ビツトに存在すること、 の5つである。
以上2つの例につき示したがこれらをまとめて
みると次のようになる。
オペランド指定子デコーダ66は、送られてき
たオペランド指定子をデコードし、次にあげる情
報をそれぞれ出力する。
(1) バス215へは、オペランド指定子の長さを
バイト単位で出力する。例えば、第2図Bの
No.3のオペランド指定子で、(Rn+DISP8)のオ
ペランド指定子が送られてきた時は、“2”を
出力する。
(2) バス211へは、デイスプレースメント
(DISP)/イミーデイエツト(IM)データ用
アライナ67に対するシフトバイト数を出力す
る。
例えば、(Rn+DISP8)のオペランド指定子の
場合は、第7図Aに示した如く3バイト右シフ
トを、(Rn+DISP32)の場合は、第7図Bに示
した如く1バイト左シフトを指示する。
(3) バス212へは、アライナ67に対するマス
クバイトの指示データを出力する。
これは、アライナ67に対し、バス106に
出力する4バイトのデータ中、上位2バイト、
又は3バイトのマスクを指示することで、1バ
イトや2バイトのDISP、IM情報の符号拡張に
よる4バイト化を図るためのものである。
例えば、DISP8の時には、第7図Aに示す如
く3バイトシフト、DISP32の時は第7図Bの
如く前に「−Rn」という余分な1バイトがあ
るため、1バイト左シフトする。
これは、DISP8の時、上3バイトにはDISP8
の符号ビツトを拡張して入れておかないと、32
ビツトの正常なアドレス計算ができないからで
ある。(バス212はその指定のためのもの) (4) バス105−2へはアドレツシングモードを
出力し、これによつてアドレス計算ユニツト
AU28の動作モードを指示する。
アドレツシングモードについては、第3図の
アドレス計算ユニツトAU28の説明に関連し
て、(a)〜(h)の8つのモードがあることを既に説
明した。
(5) バス216へはジエネラルレジスタRnの存
在する位置が、1バイト目か2バイト目かを示
す情報を出力する。
(Rn+DISP8)時は1バイト目、(Rn+
DISP32)時には2バイト目が指示される。
一方、バス108へは、オペランド指定子の中
のインデツクスレジスタRxの部分を出力する。
また、セレクタ68は、信号216で指定され
たジエネラルレジスタRnの存在する位置(1バ
イト目か2バイト目かの信号)によつて、Rnに
対応する部分(バス207の内容或いはバス21
0の内容)をバス107へ出力する。
アライナ57は、前述したように、オペランド
指定子の2バイト目から7バイト目までがバス2
08によつて与えられるため、信号線211で与
えられたシフト数だけシフト処理を行い、且つ信
号線212で与えられたマスク部に対しては、符
号の拡張を行い、バス106に4バイトのデータ
として出力する。
これらは、第7図A,Bに示した通りである。
デコード処理終了バイト数検出器65について説
明する。
この部分は、本発明になる不定長命令(Sビツ
ト付加したもの)を扱う場合の要部でもある。
デコード処理終了バイト数検出器65には、前
述した如く、オペランド終了フラツグEを示す信
号線203、オペランド指定子のストツプビツト
Sを示す信号線205及びオペランド指定子のバ
イト数(OSB)を示す信号線215の3つの信号
線が入力されており、信号線214へは、次のオ
ペランド指定子のアドレスを示すため、DP69
の加算値DPINCBをバイト単位で出力する。この
場合のアルゴリズムは次の通りである。
E=1であれば、 DPINCB=OSB これ以外で、S=0であれば、 DPINCB=OSB−1 また、S=1であれば DPINCB=0 すなわち、 (1) オペランドの終了フラツグEが“1”の場合
は、該当命令の処理は終了したため、次の命令
の先頭をさすように、DPレジスタ69がオペ
ランド指定子のバイト数分(OSB)加算される
よう信号線214に出力される。
(2) (1)でなく、また終了フラツグSがセツトされ
ていない場合は、次のオペランド指定子が1バ
イトのダミーを先頭バイトにおいて、バス10
4に出力させるため、(オペランド指定子のバ
イト数:OSB)−1の値が加算されるよう信号
線214に出力される。
(3) (1)でなく、また終了フラツグSがセツトされ
ている場合は、DPレジスタ69が、そのまゝ
の値をとるよう、“0”が出力される。これに
よつて、同一のオペランド指定子を、次のオペ
ランドに対する処理にも使用することになり、
同一のオペランドが繰返し使用されることにな
る。
第8図は、デコード処理終了バイト数検出器6
5における上記アルゴリズムを実現するハードウ
エア構成を示している。
つまり、E=1の場合は、出力ゲート301が
開き、バス214にはバス215の内容OSBが出
力され、E=0の時は、S=0のとき力ゲート3
03が開き、OSB−1を出力し、またS=1のと
き出力ゲート302が開き、“0”が出力される
ようになつている。
本発明においては、Eが“1”の時、Sビツト
が“1”でなければ、オペランド数より多いオペ
ランド指定子が有ることを意味し、これをエラー
として検出しようとするものである。第8図では
アンドゲート304がオンとなり信号105−3
を出力し、アドレス計算ユニツトAU28に対
し、該当エラー発生するようになつている。
アドレス計算ユニツトAU28では、信号10
5−3を以下のユニツト(オペランドフエツチユ
ニツトOFU29)に連絡し、最終的に実行ユニ
ツトEU30にエラー発生が連絡されるようにな
つている。
尚第8図において、304,305はインバー
タ、306,307はアンドゲート、308は減
算器である。
加算器71は、現在のDPレジスタ69の値
と、信号線214の値を加算し、セレクタ70を
介して、DPレジスタ69にセツトすることで次
のオペランド指定子のアドレスをバス102に出
力することが可能となる。これにより、アライナ
ALIG26は、次のオペランド指定子を第5図
A,Bに示すフオーマツトでバス104に出力で
きる。
一方、セレクタ70によつて、バス115の内
容を選択してDPレジスタ69にセツトすること
で前述した分岐命令におけるDPレジスタ69の
変更も可能となる。
尚加算器72は、DPレジスタ69の値に、該
当オペランド指定子の長さを示す信号線215の
値(OSB)を加え、さらにキヤリー入力“1”を
加えることで、デコードしているオペランド指定
子の次のアドレスをバス116に出力する。
アドレス計算ユニツトAU28は、バス116
の内容をアドレス計算に使用するプログラムカウ
ンタPCの値として利用する。
このように、本発明によれば、オペランド数と
オペランド指定子の個数の合理性チエツクを行う
ことにより、エラー検出率を向上させることがで
きる。
尚上記実施例においては、終了フラツグSはオ
ペランド指定子の最上位ビツトに付加されている
が、必ずしもこの部分に限定する必要はなく、オ
ペランド指定子のどこかに終了フラツグを設けれ
ばよい。
また、同一のオペランドを複数回繰返し、利用
するのに、上記実現例では、DPレジスタ69の
内容を更新させずに、同一のオペランド指定子を
繰返しデコードすることによりこれを実現してい
るが、これ以外にもデコードユニツトから実行ユ
ニツトEU30に特別な信号を送り、先に求めら
れたオペランドを繰返し利用するように指示して
もよい。
第9図はオペランド指定子の1ビツトに終了フ
ラツグSを設けることで、AOPB→Cのレパート
リーに対し同一オペコード(OP)で各種のオペ
ランド指定が可能なことを示し、同時にエラー検
出可能な命令を示している。すなわち、Sビツト
によつてオペランド指定が終了したことを指示さ
れるため、OPで必要となるオペランド数より少
ないオペランドでSの指示があると、それを繰返
し使用し、A、B、Cの3つのオペランドを指定
しているのにCの部分でSの指示がないとエラー
として検出する。
【図面の簡単な説明】
第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……オペランド指定子デコーダ。

Claims (1)

    【特許請求の範囲】
  1. 1 オペランドのアドレツシングモードを指定す
    るオペランド指定子が処理の種類およびオペラン
    ドの数を指定するオペコード部分から独立してい
    る命令を扱うデータ処理装置において、該命令
    は、少なくともオペランド指定子に対応して付加
    されたオペランド指定子の終了情報を含み、デコ
    ード手段は、少なくともオペコードデコード手段
    と、オペランド指定子デコード手段とオペランド
    指定子に付加された終了情報の検出を行う終了フ
    ラツグ検出手段を有し、該オペコードデコード手
    段が、当該命令の最後のオペランドであることを
    示す信号を出力したとき、該終了情報検出手段が
    終了情報のセツトを検出しない場合、当該命令を
    エラーとして検出するようにしたことを特徴とす
    る不定長命令のエラー検出を行うデータ処理装
    置。
JP56132717A 1981-08-26 1981-08-26 不定長命令のエラ−検出を行うデ−タ処理装置 Granted JPS5835643A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP56132717A JPS5835643A (ja) 1981-08-26 1981-08-26 不定長命令のエラ−検出を行うデ−タ処理装置
US06/408,924 US4530050A (en) 1981-08-26 1982-08-17 Central processing unit for executing instructions of variable length having end information for operand specifiers
EP82107598A EP0073424B1 (en) 1981-08-26 1982-08-19 Central processing unit for executing instructions of variable length
DE8282107598T DE3278442D1 (en) 1981-08-26 1982-08-19 Central processing unit for executing instructions of variable length
KR8203773A KR880000297B1 (ko) 1981-08-26 1982-08-23 부정장(不定長)명령을 갖는 데이터처리장치
CA000410221A CA1186801A (en) 1981-08-26 1982-08-26 Central processing unit for executing instructions of variable length

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP56132717A JPS5835643A (ja) 1981-08-26 1981-08-26 不定長命令のエラ−検出を行うデ−タ処理装置

Publications (2)

Publication Number Publication Date
JPS5835643A JPS5835643A (ja) 1983-03-02
JPS6149693B2 true JPS6149693B2 (ja) 1986-10-30

Family

ID=15087925

Family Applications (1)

Application Number Title Priority Date Filing Date
JP56132717A Granted JPS5835643A (ja) 1981-08-26 1981-08-26 不定長命令のエラ−検出を行うデ−タ処理装置

Country Status (1)

Country Link
JP (1) JPS5835643A (ja)

Also Published As

Publication number Publication date
JPS5835643A (ja) 1983-03-02

Similar Documents

Publication Publication Date Title
KR100327778B1 (ko) 다중명령 세트를 이용한 데이터 프로세싱 방법
KR880000297B1 (ko) 부정장(不定長)명령을 갖는 데이터처리장치
KR100327776B1 (ko) 다중 명령세트를 사용하는 데이터 처리방법
US4398245A (en) Data processing system having an instruction pipeline for processing a transfer instruction
US5748951A (en) Specialized millicode instructions which reduce cycle time and number of instructions necessary to perform complex operations
EP0220684B1 (en) Data processing system
JP3203401B2 (ja) データ処理装置
JPH0429093B2 (ja)
US5802359A (en) Mapping processor state into a millicode addressable processor state register array
JPH11154144A (ja) プロセッサをコプロセッサにインタフェースするための方法および装置
JPH10232779A (ja) 命令並列処理方法及び装置
JPH07120278B2 (ja) データ処理装置
EP0010197B1 (en) Data processing system for interfacing a main store with a control sectron and a data processing section
JPS645330B2 (ja)
JPH07120338B2 (ja) 共同プロセッサによる命令の実行をデータプロセッサが調整する方法および該データプロセッサ
JP2006527420A (ja) データアクセスプログラム命令のコード化
JP2000137612A (ja) 特殊ミリコ―ド命令によって条件の設定およびテストを行う方法
JPS6149692B2 (ja)
JPS6160459B2 (ja)
US5754810A (en) Specialized millicode instruction for certain decimal operations
JPS623336A (ja) 条件付きブランチ方式
JPS6149694B2 (ja)
JPS623332A (ja) 情報処理装置
US4812989A (en) Method for executing machine language instructions
JPS6355634A (ja) デ−タ処理システム