JPH07120284B2 - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH07120284B2
JPH07120284B2 JP1229679A JP22967989A JPH07120284B2 JP H07120284 B2 JPH07120284 B2 JP H07120284B2 JP 1229679 A JP1229679 A JP 1229679A JP 22967989 A JP22967989 A JP 22967989A JP H07120284 B2 JPH07120284 B2 JP H07120284B2
Authority
JP
Japan
Prior art keywords
instruction
unit
decoding
processing
operand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP1229679A
Other languages
English (en)
Other versions
JPH0391029A (ja
Inventor
雅仁 松尾
徹 清水
豊彦 吉田
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP1229679A priority Critical patent/JPH07120284B2/ja
Publication of JPH0391029A publication Critical patent/JPH0391029A/ja
Priority to US08/064,727 priority patent/US5461715A/en
Publication of JPH07120284B2 publication Critical patent/JPH07120284B2/ja
Priority to US08/721,305 priority patent/US5745723A/en
Priority to US08/759,498 priority patent/US5812809A/en
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は高度な並列処理機構により高い処理能力を実現
したデータ処理装置に関するものであり、より詳述すれ
ば、複数の命令を並列実行することが可能なデータ処理
装置に関する。
[従来の技術] 第5図は従来のデータ処理装置の典型的なパイプライン
処理機構の構成を示すブロック図である。
第5図に示したデータ処理装置のパイプライン処理機構
は、命令データの取込みを行う命令フェッチ(IF)ステ
ージ91,命令データの解析を行う命令デコード(D)ス
テージ92,オペランド等のアドレス計算を行うアドレス
計算(A)ステージ93,オペランドデータのフェッチを
行うオペランドフェッチ(F)ステージ94,データの処
理を行う実行(E)ステージ95,オペランドデータの書
込みを行うオペランドライト(W)ステージ96の6段の
パイプラインステージにて構成されている。
このような従来のデータ処理装置のパイプライン処理機
構では、各ステージは異なる命令を同時に処理すること
が可能である。但し、オペランドやメモリアクセスに関
してコンフリクトが発生したような場合には優先度の低
いステージでの処理がコンフリクトが解消されるまで一
時停止される。
以上のように、パイプライン化されたデータ処理装置で
は、データ処理の流れに従って処理を複数のステージに
分割し、各ステージを同時に動作させることにより、1
命令に必要な平均処理時間を短縮させて全体としての性
能を向上させている。
パイプライン処理により複数の命令を同時に処理し、高
性能化を行ったデータ処理装置の例としてはUSP No.4,4
02,042“MICROPROCESSOR SYSYTEMWITH INSTRUCTION PRE
−FETCH"に示されている。
しかし、1マシンサイクルに最大1命令しか実行できな
いデータ処理装置では、処理性能は動作周波数により制
限されてしまう。この問題を解決するために、複数の演
算器を設けて複数の命令を並列に実行しているものもあ
る。
例えば、IBM System/360 Model 91と称されるデータ処
理装置では、複数の加算器,乗除算器を備え、各演算器
毎に“reservation station"と称する機能を付加するこ
とにより、命令の追越し制御を行うことにより処理速度
の向上を図っている。この処理の詳細に関してはDaniel
P.Siewiorek,C.Gordon Bell and Allen Newell,"Compu
ter Structures:Principles and Example",McGrawHill
Book Company,PP.295−298(1982)に示されている。
また、Motorola Inc.のマイクロプロセッサMC88100で
も、“register scoreboading"と称される機構を備える
ことにより、複数の実行ユニットが使用するレジスタ間
で生じるコンフリクトを検出し、並列処理のシーケンス
を制御している。その詳細は、「32ビットマイクロプロ
セッサ、演算処理の並列化で性能向上を図る」、日経エ
レクトロニクス、No.448、pp.145−149(1988)に示さ
れている。
更に、通常の実行部とは独立に動作可能で、メモリオペ
ランドを有していない簡単な算術・論理演算命令専用の
実行部を設けることにより命令の追越し制御を行おうと
している例もある。その詳細は、宮森高他、「TRON仕様
に基づく32ビットマイクロプロセッサTX3のCPUアーキテ
クチャの検討」、信学技報、Vol.87,No.422,CPSY87−5
3,PP.31−36(1988)に示されている。
Intel Corp.のi80860と称するデータ処理装置では、整
数ユニット,浮動小数点加算器,浮動小数点乗算器がそ
れぞれ独立していて同時に動作可能である。また、整数
命令と浮動小数点命令とが連続している場合には、この
2命令を同時にデコードして実行することも可能であ
る。その詳細は、Leslie Kohn,Sai−Wai Fu,"A 1.000.0
00 Transistor Microprocessor",ISSCC DIGEST OF TECN
ICAL PAPERS,PP.54−55(1989)に示されている。
このように従来のデータ処理装置では、命令の並列実行
及び追越し制御を行うことにより処理速度の向上を図っ
ているが、複数命令間のオペランドのコンフリクトの検
出及び誤動作の回避を含めた実行制御が非常に複雑にな
る。
また、命令の追越し処理が行われている際に例外が発生
した場合には、例外処理後にデータ処理装置の状態を例
外が検出された時点の状態に復帰させ、且つ矛盾なく動
作させるために非常に複雑な制御が必要になる。
[発明が解決しようとする課題] 従来のデータ処理装置は、上述の如く、複数の命令を並
列実行させようとすると、実行制御が非常に複雑にな
り、その機能を実現するための論理量が大幅に増大する
という問題点があった。
また、命令の処理途中において例外が発生した場合に
は、例外処理後に例外検出時の状態へ装置を復帰させる
ことが非常に困難であるという問題点もある。
本発明は上述のような問題点を解決するためになされた
もので、簡単な制御で複数の命令を並列実行することが
できるデータ処理装置を得ることを目的とする。
また、命令処理の途中の例外が発生した場合にも特別な
制御を要せず、1命令ずつ逐次実行する場合と同様の処
理で正しく例外処理から復帰することが可能なデータ処
理装置の提供を目的とする。
更に、デバッグあるいはテスト時には1命令ずつ逐次実
行するモードを選択可能にしたデータ処理装置の提供を
目的とする。
[課題を解決するための手段] 第1発明のデータ処理装置は、命令を格納する記憶手段
と、該記憶手段から命令を取込む命令フェッチ手段と、
該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、それぞれデータを格納するレジ
スタファイルに結合された第1及び第2演算器を少なく
とも含む複数の演算器を有し、前記命令デコード手段か
ら出力された演算情報に従って命令を実行する命令実行
手段とを備えたパイプライン処理機構を有するデータ処
理装置において、前記命令デコード手段は、第1の命令
をデコードし、前記第1の命令の実行に必要な第1の演
算情報と、前記第1の命令に引き続く第2の命令を前記
第2の演算器を用いて前記第1の命令と並列に実行する
ことを許可するかどうかを示す並列実行許可情報と、前
記第1の命令の実行時に命令コード内の1又は複数のレ
ジスタ番号フィールドで指定されるレジスタ値を更新す
るかどうかを示すレジスタ値更新情報とを出力する第1
のデコード手段と、該第1のデコード手段における前記
第1の命令のデコードと並列に前記第2の命令をデコー
ドし、前記第2の命令の実行に必要な第2の演算情報
と、前記第2の演算器を用いて前記第1の命令と並列に
実行することが可能かどうかを示す第2の命令有効情報
と、前記第2の命令の実行時に命令コード内の1又は複
数のレジスタ番号フィールドで指定されるレジスタ値を
参照するかどうかを示すレジスタ値参照情報を出力する
第2のデコード手段と、前記命令フェッチ手段から取り
込まれる前記第1及び第2の命令のレジスタ番号を指定
する複数のレジスタ番号フィールドと、前記並列実行許
可情報と、前記レジスタ値更新情報と、前記第2命令有
効情報と、前記レジスタ値参照情報とを入力し、前記第
2の命令が参照するオペランドの値を前記第1の命令が
書換えず、且つ前記第1の命令が前記第2の命令の並列
実行を許可しており、前記第2の命令が前記第2の演算
器を用いて前記第1の命令と並列に実行可能である所定
の状態を検出する検出手段とを備え、前記検出手段が前
記所定の状態を検出した場合に、前記命令実行手段は前
記命令デコード手段から出力された前記第1及び第2の
演算情報に基づいて前記第1及び第2の命令を並列に実
行すべくなしてあることを特徴とする。
第2発明のデータ処理装置は、命令を格納する記憶手段
と、該記憶手段から命令を取込む命令フェッチ手段と、
該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、複数の演算器を含み、命令を実
行する命令実行手段とを備えたパイプライン処理機構を
有するデータ処理装置において、前記命令デコード手段
は、複数の命令にて構成される命令群の各命令を同時に
デコードする手段と、前記命令群内の各命令が参照する
オペランドの値をそれぞれの命令に先行する同一命令群
内の命令が書換えず、且つ前記命令群内の各命令が前記
複数の演算器の異なる演算器でそれぞれ実行可能である
所定の状態を検出する検出手段とを備え、前記命令実行
手段は、前記検出手段が前記所定の状態を検出した場合
に、前記命令群の各命令を並列実行するかまたは逐次実
行するかのいずれかを選択可能になしてあることを特徴
とする。
第3発明のデータ処理装置は、命令を格納する記憶手段
と、該記憶手段から命令を取込む命令フェッチ手段と、
該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、それぞれデータを格納するレジ
スタファイルに結合された第1及び第2演算器を少なく
とも含む複数の演算器を有し、前記命令デコード手段か
ら出力された演算情報に従って命令を実行する命令実行
手段とを備えたパイプライン処理機構を有するデータ処
理装置において、前記命令デコード手段は、一つの命令
を1又は複数の処理単位に分割してデコードし、各処理
単位から一つのデコード結果を出力する手段と、第1の
命令の最後の処理単位をデコードし、前記第1の命令の
最後の処理単位の実行に必要な第1の演算情報と、第1
の命令に引き続く第2の命令の処理単位を前記第2の演
算器を用いて前記第1の命令の最後の処理単位と並列に
実行することを許可するかどうかを示す並列実行許可情
報と、前記第1の命令の最後の処理単位の実行時に命令
コード内の1又は複数のレジスタ番号フィールドで指定
されるレジスタ値を更新するかどうかを示すレジスタ値
更新情報とを出力する第1のデコード手段と、該第1の
デコード手段における前記第1の命令の最後の処理単位
のデコードと並列に前記第2の命令の処理単位をデコー
ドし、前記第2の命令の処理単位の実行に必要な第2の
演算情報と、前記第2の演算器を用いて前記第1の命令
の最後の処理単位と並列に実行することが可能かどうか
を示す第2命令有効情報と、前記第2の命令の処理単位
の実行時に命令コード内の1又は複数のレジスタ番号フ
ィールドで指定されるレジスタ値を参照するかどうかを
示すレジスタ値参照情報を出力する第2のデコード手段
と、前記命令フェッチ手段から取り込まれる前記第1及
び第2の命令のレジスタ番号を指定する複数のレジスタ
番号フィールドと、前記並列実行許可情報と、前記レジ
スタ値更新情報と、前記第2命令有効情報と、前記レジ
スタ値参照情報とを入力し、前記第2の命令が参照する
オペランドの値を前記第1の命令が書換えず、且つ前記
第1の命令が前記第2の命令の並列実行を許可してお
り、前記第2の命令の処理単位が前記第2の演算器を用
いて前記第1の命令の最後の処理単位と並列に実行可能
である所定の状態を検出する検出手段とを備え、前記検
出手段が前記所定の状態を検出した場合に、前記命令実
行手段は前記命令デコード手段から出力された前記第1
及び第2の演算情報に基づいて前記第1の命令の最後の
処理単位と第2の命令の処理単位を並列に実行すべくな
してあることを特徴とする。
第4発明のデータ処理装置は、命令を格納する記憶手段
と、該記憶手段から命令を取込む命令フェッチ手段と、
該命令フェッチ手段により取込まれた命令をデコード
し、そのデコード結果を出力する命令デコード手段と、
複数の演算器を含み、前記命令デコード手段から出力さ
れたデコード結果に従って命令を実行する命令実行手段
とを備えたパイプライン処理機構を有するデータ処理装
置において、前記命令デコード手段は、一つの命令を1
または複数の処理単位に分割してデコードし、各処理単
位から一つのデコード結果を出力する手段と、第1の命
令が一つまたは複数の処理単位に分割され、前記第1の
命令に続く第2の命令が一つの処理単位としてそれぞれ
処理される場合、前記第1の命令の最後の処理単位であ
る第1の処理単位と、前記第2の命令の処理単位である
第2の処理単位とを同時にデコードする手段と、前記第
2の処理単位のデコード結果に対応する命令の処理時に
参照されるオペランドの値を前記第1の処理単位のデコ
ード結果に対応する命令の実行に際して書換えず、且つ
前記第1の処理単位のデコード結果に対応する命令と前
記第2の処理単位のデコード結果に対応する命令とが前
記複数の演算器の異なる演算器で実行可能な所定の状態
を検出する検出手段とを備え、前記命令実行手段は、前
記検出手段が前記所定の状態を検出した場合に、前記第
1の処理単位のデコード結果に対応する処置と前記第2
の処理単位のデコード結果に対応する処理とを並列実行
するかまたは逐次実行するかのいずれかを選択可能にな
してあることを特徴とする。
第5発明のデータ処理装置は、命令を格納する記憶手段
と、該記憶手段から命令を取込む命令フェッチ手段と、
該命令フェッチ手段により取込まれた命令をデコード
し、デコード結果を出力する命令デコード手段と、前記
命令デコード手段から出力されたデコード結果に対応し
て命令を実行する命令実行手段とを備えたパイプライン
処理機構を有するデータ処理装置において、前記命令デ
コード手段は、一つの命令を1または複数の処理単位に
分割してデコードし、各処理単位から一つのデコード結
果を出力する手段と、第1の命令が一つまたは複数の処
理単位に分割され、前記第1の命令に続く第2の命令が
複数の処理単位としてそれぞれ処理される場合、前記第
1の命令の最後の処理単位である第1の処理単位と、前
記第2の命令の最初の処理単位である第2の処理単位と
を同時にデコードする手段とを備え、前記命令実行手段
は、前記第1の処理単位のデコード結果に対応する処理
と前記第2の処理単位のデコード結果に対応する処理と
を並列実行するかまたは逐次実行するかのいずれかを選
択可能になしてあることを特徴とする。
第6発明のデータ処理装置は、命令を格納する記憶手段
と、該記憶手段から命令を取込む命令フェッチ手段と、
該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、複数の演算器を含み、命令を実
行する命令実行手段とを備えたパイプライン処理機構を
有するデータ処理装置において、前記命令デコード手段
は、第1の命令及び該第1の命令に引き続く第2の命令
を同時にデコードする手段と、前記第2の命令が参照す
るオペランドの値を前記第1の命令が書換えず、前記第
1及び第2の命令が前記複数の演算器の異なる演算器で
それぞれ実行可能であり、且つ前記第1の命令が命令の
実行中に例外を検出し命令実行後例外処理を起動する可
能性がある命令でない所定の状態を検出する検出手段と
を備え、前記命令実行手段は、前記検出手段が前記所定
の状態を検出した場合に、前記第1及び第2の命令を並
列に実行すべくなしてあることを特徴とする。
第7発明のデータ処理装置は、命令を格納する記憶手段
と、該記憶手段から命令を取込む命令フェッチ手段と、
該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、複数の演算器を含み、命令を実
行する命令実行手段とを備えたパイプライン処理機構を
有するデータ処理装置において、前記命令デコード手段
は、第1の命令及び該第1の命令に引き続く第2の命令
を同時にデコードする手段と、前記第2の命令が参照す
るオペランドの値を前記第1の命令が書換えず、前記第
1及び第2の命令が前記複数の演算器の異なる演算器で
それぞれ実行可能であり、且つ前記第2の命令が命令の
実行中に例外を検出し例外処理を起動する可能性がある
命令でない所定の状態を検出する検出手段とを備え、前
記命令実行手段は、前記検出手段が前記所定の状態を検
出した場合に、前記第1及び第2の命令を並列に実行す
べくなしてあることを特徴とする。
第8発明のデータ処理装置は、命令を格納する記憶手段
と、該記憶手段から命令を取込む命令フェッチ手段と、
該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、複数の演算器を含み、1または
複数ステップで1つの命令を実行する命令実行手段とを
備えたパイプライン処理機構を有するデータ処理装置に
おいて、前記命令デコード手段は、第1の命令及び該第
1の命令に引き続く第2の命令を同時にデコードする手
段と、前記第2の命令が参照するオペランドの値を前記
第1の命令が書換えず、前記第1及び第2の命令が前記
複数の演算器の異なる演算器でそれぞれ実行可能であ
り、且つ前記第2の命令が1ステップで命令が実行でき
る所定の状態を検出する検出手段とを備え、前記命令実
行手段は、前記検出手段が前記所定の状態を検出し、且
つ前記第1の命令が命令の実行に複数ステップを要する
命令である場合に、前記第1の命令の最終ステップ及び
第2の命令を並列に実行すべくなしてあることを特徴と
する。
第9発明のデータ処理装置は、命令を格納する記憶手段
と、該記憶手段から命令を取込む命令フェッチ手段と、
該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、複数の演算器と、マイクロプロ
グラムを保持する制御記憶と、マイクロプログラムの実
行シーケンスを制御するためのマイクロシーケンサを有
し、命令を実行する命令実行手段とを備えたパイプライ
ン処理機構を有するデータ処理装置において、前記命令
デコード手段は、第1の命令及び該第1の命令に引き続
く第2の命令を同時にデコードする手段と、前記第2の
命令が参照するオペランドの値を前記第1の命令が書換
えず、且つ前記第1及び第2の命令が前記複数の演算器
の異なる演算器でそれぞれ実行可能である所定の状態を
検出する検出手段とを備え、前記命令実行手段は、前記
検出手段が前記所定の状態を検出した場合に、マイクロ
プログラム制御による前記第1の命令の実行と、ハード
ワイヤード制御による前記第2の命令の実行を並列に行
うべくなしてあることを特徴とする。
〔作用〕
本発明のデータ処理装置では第1,第2命令を並列にデコ
ードし、2命令が並行に実行できるかどうかを判定し、
実行可能な場合にこれらを並行実行する。
また本発明に係るデータ処理装置では、第1の命令が一
つまたは複数の処理単位に分割されて処理され、第1の
命令に引続く第2の命令が一つの処理単位として処理さ
れる場合に、命令デコード手段が第1の命令の最後の処
理単位と第2の命令の処理単位とを同時にデコードし、
命令実行手段が第1の命令の最後の処理単位のデコード
結果に対応する命令と第2の命令の処理単位のデコード
結果に対応する命令とを並列実行する。
更に本発明に係るデータ処理装置では、第1の命令が一
つまたは複数の処理単位に分割されて処理され、第1の
命令に引続く第2の命令が複数の処理単位として処理さ
れる場合に、命令デコード手段が第1の命令の最後の処
理単位と第2の命令の最初の処理単位とを同時にデコー
ドし、命令実行手段が第1の命令の最後の処理単位のデ
コード結果に対応する命令と第2の命令の最初の処理単
位のデコード結果に対応する命令とを並列実行する。
また更に本発明のデータ処理装置では、デバッグあるい
はテスト時には必要に応じて命令を逐次実行するように
選択することも可能である。
[発明の実施例] 以下、本発明をその実施例を示す図面に基づいて詳述す
る。
(1)「本発明のデータ処理装置の命令フォーマットと
例外処理」 本発明のデータ処理装置の命令は16ビット単位で可変長
となっており、奇数バイト長の命令はない。
本発明のデータ処理装置では高頻度のプロセッサ命令を
短いフォーマットとするため、特に工夫された命令フォ
ーマット体系を有する。例えば、2オペランド命令に対
しては基本的に「4バイト+拡張部」の構成を有し、総
てのアドレッシングモードが利用可能な一般形フォーマ
ットと、頻度が高い命令及びアドレッシングモードのみ
を使用可能な短縮形フォーマットとの2つのフォーマッ
トがある。
第6図から第17図は本発明のデータ処理装置の命令フォ
ーマットを示す模式図である。
第6図から第15図のフォーマット中に現われる記号の意
味は以下の通りである。
−:オペレーションコードが入る部分 #:リテラルまたは即値が入る部分 Ea:8ビットの一般形のアドレッシングモードでオペラン
ドを指定する部分 Sh:6ビットの短縮形のアドレッシングモードでオペラン
ドを指定する部分 Rn:レジスタファイル上のオペランドをレジスタ番号で
指定する部分 フォーマットは、第6図に示す如く、右側がLSB側で、
且つ高いアドレスになっている。アドレスNとアドレス
N+1との2バイトを見ないと命令フォーマットが判別
できないようになっているが、これは、命令が必ず16ビ
ット(2バイト)単位でフェッチ及びデコードされるこ
とを前提としているためである。
本発明のデータ処理装置の命令では、いずれのフォーマ
ットの場合も、各オペランドのEaまたはShの拡張部は、
必ずそのEaまたはShの基本部を含むハーフワードの直後
に置かれる。これは、命令により暗黙に指定される即値
データあるいは命令の固有の拡張部に優先する。従っ
て、4バイト以上の命令では、Eaの拡張部によって命令
のオペコードが分断される場合がある。
また、後述するように、多段間接モードによりEaの拡張
部に更に拡張部が付加される場合にも、次の命令オペレ
ーションコードよりもそちらの方が優先される。例え
ば、第1ハーフワードにEa1を含み、第2ハーフワード
にEa2を含み、第3ハーフワードまである6バイト命令
の場合を考える。Ea1に多段間接モードを使用し、Ea2が
拡張部を有する場合は、実際の命令ビットパターンは、
命令の第1ハーフワード(Ea1の基本部を含む),Ea1の
多段間接モード拡張部,命令の第2ハーフワード(Ea2
の基本部を含む),Ea2の拡張部,命令の第3ハーフワー
ドの順となる。
(1.1)「短縮形2オペランド命令」 第7図から第10図は2オペランド命令の短縮形フォーマ
ットを示す模式図である。
第7図はメモリ−レジスタ間演算命令のフォーマットで
ある。このフォーマットにはソースオペランド側がメモ
リとなるL−formatとデスティネーションオペランド側
がメモリとなるS−formatとがある。
L−formatでは、Shはソースオペランドの指定フィール
ド,Rhはデスティネーションオペランドのレジスタの指
定フィールド,RRはShのオペランドサイズの指定をそれ
ぞれ表す。レジスタ上に置かれたデスティネーションオ
ペランドのサイズは32ビットに固定されている。レジス
タ側とメモリ側とのサイズが異なり、且つソース側のサ
イズが小さい場合に符号拡張が行なわれる。
また、一部の命令(加算命令,減算命令)では、ソース
のオペランドサイズもワードに固定されている。この場
合、RRのフィールドはオペレーションコードとなってい
る。
S−formatでは、Shはデスティネーションオペランドの
指定フィールド,Rnはソースオペランドのレジスタ指定
フィールド,RRはShのオペランドサイズの指定をそれぞ
れ表す。レジスタ上に置かれたソースオペランドのサイ
ズは32ビットに固定されている。レジスタ側とメモリ側
とのサイズが異なり、且つソース側のサイズが大きい場
合に、溢れた部分の切捨てとオーバーフローチェックと
が行なわれる。
第8図はレジスタ−レジスタ間演算命令のフォーマット
(R−format)を示す模式図である。図中、Rnはデステ
ィネーションレジスタの指定フォールド,Rmはソースレ
ジスタの指定フィールドである。
オペランドサイズは32ビットのみである。
第9図はリテラル−メモリ間演算命令のフォーマット
(Q−format)を示す模式図である。図中、MMはディス
ティネーションオペランドサイズの指定フィールド,#
はリテラルによるソースオペランドの指定フィールド,S
hはデスティネーションオペランドの指定フィールドで
ある。
第10図は即値−メモリ間演算命令のフォーマット(I−
format)を示す模式図である。図中、MMはオペランドサ
イズの指定フィールド(ソース,ディスティネーション
で共通),Shはデスティネーションオペランドの指定フ
ィールドである。I−formatの即値のサイズは、デステ
ィネーション側のオペランドのサイズと共通に8,16,32
ビットとなり、ゼロ拡張及び符号拡張は行なわれない。
(1.2)「一般形1オペランド命令」 第11図は1オペランド命令の一般形フォーマット(G1−
format)を示す模式図である。図中、MMはオペランドサ
イズの指定フィールドである。一部のG1−format命令で
は、Eaの拡張部以外にも拡張部がある。また、MMは使用
しない命令もある。
(1.3)「一般形2オペランド命令」 第12図から第14図は2オペランド命令の一般形フォーマ
ットを示す模式図である。このフォーマットに含まれる
のは、8ビットで指定する一般形アドレッシングモード
のオペランドが最大2つ存在する命令である。オペラン
ドの総数自体は3つ以上になる場合がある。
第12図は第1オペランドがメモリ読出しを必要とする命
令のフォーマット(G−format)を示す模式図である。
図中、EaMはデスティネーションオペランドの指定フィ
ールド,MMはデスティネーションオペランドサイズの指
定フィールド,EaRはソースオペランド指定フィールド,R
Rはソースオペランドサイズの指定フィールドである。
一部のG−format命令では、EaM及びEaRの拡張部以外に
も拡張部がある。
第13図は第1オペランドが8ビット即値の命令のフォー
マット(E−format)を示す模式図である。図中、EaM
はデスティネーションオペランドの指定フィールド,MM
はデスティネーションオペランドサイズの指定フィール
ド,#はソースオペランド値である。
E−formatとI−formatとは機能的には類似している
が、考え方の点で大きく異なっている。E−formatはあ
くまでも2オペランド一般形(G−format)の派生形で
あり、ソースオペランドのサイズが8ビット固定、ディ
スティネーションオペランドのサイズが8/16/32ビット
から選択となっている。つまり、異種サイズ間の演算を
前提とし、デスティネーションオペランドのサイズに合
わせて8ビットのソースオペランドがゼロ拡張または符
号拡張される。
一方、I−formatは、特に転送命令,比較命令で頻度の
高い即値のパターンを短縮形にしたものであり、ソース
オペランドとディスティネーションオペランドのサイズ
は等しい。
第14図は第1オペランドがアドレス計算のみの命令のフ
ォーマット(GA−format)を示す模式図である。図中、
EaWはデスティネーションオペランドの指定フィールド,
WWはデスティネーションオペランドサイズの指定フィー
ルド,EaAはソースオペランドの指定フィールドである。
ソースオペランドとしては実効アドレスの計算結果自体
が使用される。
第15図はショートブランチ命令のフォーマットを示す模
式図である。図中、ccccは分岐条件指定フィールド,dis
p:8はジャンプ先との変位指定フィールドであり、本発
明のデータ処理装置では8ビットで変位を指定する場合
には、ビットパターンでの指定値を2倍して変位値とす
る。
(1.4)「アドレッシングモード」 本発明のデータ処理装置の命令のアドレッシングモード
指定方法には、レジスタを含めて6ビットで指定する短
縮形と、8ビットで指定する一般形とがある。
未定義のアドレッシングモードを指定した場合あるいは
意味的に明らかに不合理なアドレッシングモードの組合
わせが指定された場合には、未定義命令を実行した場合
と同じく、予約命令例外が発生されて例外処理が起動す
る。
これに該当するのは、デスティネーションが即値モード
の場合及びアドレス計算を伴うべきアドレシングモード
指定フィールドで即値モードを使用した場合などであ
る。
第16図から第26図に示すフォーマットの模式図中で使用
されている記号の意味は以下の通りである。
Rn:レジスタ指定 (Sh):6ビットの短縮形アドレッシングモードでの指定
方法 (Ea):8ビットの一般形アドレッシングモードでの指定
方法 フォーマットの図で点線で囲まれた部分は、拡張部を示
す。
(1.4.1)「基本アドレッシングモード」 本発明のデータ処理装置の命令では種々のアドレッシン
グモードをサポートする。それらの内、本発明のデータ
処理装置でサポートする基本アドレッシングモードに
は、レジスタ直接モード,レジスタ間接モード,レジス
タ相対間接モード,即値モード,絶対モード,PC相対間
接モード,スタックポップモード,スタックプッシュモ
ードがある。
レジスタ直接モードは、レジスタの内容をそのままオペ
ランドとする。第16図にフォーマットの模式図を示す。
図中、Rnは汎用レジスタの番号を示す。
レジスタ間接モードは、レジスタの内容をアドレスとす
るメモリの内容をオペランドとする。第17図にフォーマ
ットの模式図を示す。図中、Rnは汎用レジスタの番号を
示す。
レジスタ相対間接モードは、ディスプレースメント値が
16ビットであるか32ビットであるかにより2種類ある。
それぞれ、レジスタの内容に16ビットまたは32ビットの
ディスプレースメント値を加えた値をアドレスとするメ
モリの内容をオペランドとする。第18図にフォーマット
の模式図を示す。図中、Rnは汎用レジスタの番号を示
す。disp:16とdisp:32とは、16ビットのディスプレース
メント値,32ビットのディスプレースメント値をそれぞ
れ示す。ディスプレースメント値を符号付きとして扱わ
れる。
即値モードは、命令コード中で指定されるビットパタン
をそのまま2進数と見なしてオペランドとする。第19図
にフォーマットの模式図を示す。図中、imm dataは即
値を示す。imm dataのサイズは、オペライドサイズと
して命令中で指定される。
絶対モードは、アドレス値が16ビットで示されるか32ビ
ットで示されるかにより2種類ある。それぞれ、命令コ
ード中で指定される16ビットまたは32ビットのビットパ
タンをアドレスとしたメモリの内容をオペランドとす
る。第20図にフォーマットの模式図を示す。図中、abs:
16とabs:32とは16ビット,32ビットのアドレス値をそれ
ぞれ示す。abs:16でアドレスが示される場合は、指定さ
れたアドレス値が32ビットに符号拡張される。
PC相対間接モードは、ディスプレースメント値が16ビッ
トであるか32ビットであるかにより2種類ある。それぞ
れ、プログラムカウンタの内容に16ビットまたは32ビッ
トのディスプレースメント値を加えた値をアドレスとす
るメモリの内容をオペランドとする。第21図にフォーマ
ットの模式図を示す。図中、disp:16とdisp:32とは、16
ビットのディスプレースメント値,32ビットのディスプ
レースメント値をそれぞれ示す。ディスプレースメント
値は符号付きとして扱われる。PC相対間接モードにおい
て参照されるプログラムカウンタの値は、そのオペラン
ドを含む命令の先頭アドレスである。多段間接アドレシ
ングモードにおいてプログラムカウンタの値が参照され
る場合にも、同じように命令先頭のアドレスをPC相対の
基準値として使用する。
スタックポップモードはスタックポインタ(SP)の内容
をアドレスとするメモリの内容をオペランドとする。オ
ペランドアクセス後、SPをオペランドサイズだけインク
リメントする。例えば、32ビットデータを扱う際には、
オペランドアクセス後にSPが+4だけ更新される。B,H
のサイズのオペランドに対するスタックポップモードの
指定も可能であり、それぞれSPが+1,+2だけ更新され
る。第22図にフォマットの模式図を示す。オペランドに
対しスタックポップモードが意味を持たないものに関し
ては予約命令例外が発生される。具体的に予約命令例外
となるのは、writeオペランド及びread−modify−write
オペランドに対するスタックポップモード指定である。
スタックプッシュモードはSPの内容をオペランドサイズ
だけデクリメントした内容をアドレスとするメモリの内
容をオペランドとする。スタックプッシュモードではオ
ペランドアクセス前にSPがデクリメントされる。例え
ば、32ビットデータを扱う際には、オペランドアクセス
前にSPが−4だけ更新される。B,Hのサイズのオペラン
ドに対するスタックプッシュモードの指定も可能であ
り、それぞれSPが−1,−2だけ更新される。第23図にフ
ォーマットの模式図を示す。オペランドに対してスタッ
クプッシュモードが意味を持たない場合には予約命令例
外が発生される。具体的に予約命令例外となるのは、re
adオペランド及びread−modify−writeオペランドに対
するスタックプッシュモード指定である。
(1.4.2)「多段間接アドレッシングモード」 複雑なアドレッシングも、基本的には加算と間接参照と
の組合わせに分解することができる。従って、加算と間
接参照とのオペレーションをアドレッシングのプリミテ
ィブとして与えておき、それを任意に組合わせることが
できれば、いかに複雑なアドレッシングモードをも実現
することが可能である。
本発明のデータ処理装置の命令の多段間接アドレッシン
グモードはこのような観点に立脚したアドレッシングモ
ードである。複雑なアドレッシングモードは、モジュー
ル間のデータ参照あるいはAI(Artificial Intelligenc
e:人工知能)言語の処理系に特に有用である。
多段間接アドレッシングモードを指定する際、基本アド
レッシングモード指定フィールドでは、レジスタベース
多段間接モード,PCベース多段間接モード,絶対ベース
多段間接モードの3種類の指定方法の内のいずれか1つ
を指定する。
レジスタベース多段間接モードは、レジスタの値を拡張
されるべき多段間接アドレッシングのベース値とするア
ドレッシングモードである。第24図にフォーマットの模
式図を示す。図中、Rnは汎用レジスタの番号を示す。
PCベース多段間接モードは、プログラムカウンタの値を
拡張されるべき多段間接アドレッシングのベース値とす
るアドレッシングモードである。第25図にフォーマット
の模式図を示す。
絶対ベース多段間接モードは、ゼロを拡張されるべき多
段間接アドレッシングのベース値とするアドレッシング
モードである。第26図にフォーマットの模式図を示す。
拡張される多段間接モード指定フィールドは16ビットを
単位としており、これが任意回反復される。1段の多段
間接モードにより、ディスプレースメントの加算,イン
デクスレジスタのスケーリング(×1,×2,×4,×8)と
加算,メモリの間接参照を行なう。第27図は多段間接モ
ードのフォーマットを示す模式図である。各フィールド
は以下に示す意味を有する。
E=0:多段間接モード継続 E=1:アドレス計算終了 tmp==>address of operand I=0:メモリ間接参照なし tmp+disp+Rx*Scale==>tmp I=1:メモリ間接参照あり mem[tmp+disp+Rx*Scale]==>tmp M=0:<Rx>をインデクスとして使用 M=1:特殊なインデクス <Rx>=0 インデクス値を加算しない(Rx=0) <Rx>=1 プログラムカウンタをインデクス値として
使用(Rx=PC) <Rx>=2〜 reserved D=0:多段間接モード中の4ビットのフィールドd4の値
を4倍してディスプレースメント値とし、これを加算す
る。d4は符号付きとして扱い、オペランドのサイズとは
関係なく必ず4倍して使用する。
D=1:多段間接モードの拡張部で指定されたdispx(16/
32ビット)をディスプレースメント値とし、これを加算
する。
拡張部のサイズはd4フィールドで指定する。
d4=0001 dispxは16ビット d4=0010 dispxは32ビット XX:インデクスのスケール(scale=1/2/4/8) プログラムカウンタに対して×2,×4,×8のスケーリン
グを行なった場合には、その段の処理終了後の中間値
(tmp)として不定値が入る。この多段間接モードによ
って得られる実効アドレスは予測できない値となるが、
例外は発生しない。プログラムカウンタに対するスケー
リングの指定は行なってはいけない。
多段間接モードによる命令フォーマットのバリエーショ
ンを第28図及び第29図に示す。第28図は多段間接モード
が継続するか終了するかのバリエーションを示す。第29
図はディスプレースメントのサイズのバリエーションを
示す。
任意段数の多段間接モードが利用できれば、コンパイラ
の中で段数による場合分けが不要になるので、コンパイ
ラの負担が軽減されるというメリットがある。多段の間
接参照の頻度が非常に少ないとしても、コンパイラとし
ては必ず正しいコードを発生できなければならないから
である。このため、フォーマット上、任意の段数が可能
になっている。
(1.5)「例外処理」 本発明のデータ処理装置ではソフトウエア負荷の軽減の
ため、豊富な例外処理機能を有する。
本発明のデータ処理装置では、例外処理は命令処理を再
実行するもの(例外),命令処理を完了するもの(トラ
ップ)及び割込みの3種類に分類される。また本発明の
データ処理装置では、この3種の例外処理とシステム障
害とを総称してEITと称する。
例外には、命令コード中で未定義のビットパターンが指
定されていた場合に発生する予約命令例外,ビットパタ
ン以外で未定義の機能を用いようとした場合に発生する
予約機能例外,不当なオペランド値が指定された場合に
発生する不正オペランド例外,特権命令となっている命
令をユーザーモードから使用した場合に発生する特権命
令例外,メモリアクセスでバスエラーが生じた場合に発
生するバスアクセス例外,メモリアクセスでメモリ保護
違反が生じた場合に発生するアドレス変換例外等があ
る。
トラップには、除算命令等で除数がゼロであった場合に
発生するゼロ除算トラップ,デバッグサポートのために
オペランドブレイクポイントあるいはPCブレイクポイン
トを設定してデバッグ事象が検出された場合にトラップ
を発生するセルフデバッグトラップ,ソフトウェア的に
トラップを発生するトラップ命令,条件トラップ命令,
ストアバッフア処理においてバスエラーが検出された場
合に発生するバスアクセストラップ,ストアバッファ処
理においてメモリ保護違反が検出された場合に発するア
ドレス変換トラップ,奇数アドレスにジャンプしようと
した場合に発生する奇数アドレスジャンプトラップ等が
ある。
割込みには、外部からハードウェア的な信号により発生
する外部割込みあるいはソフトウェア的に発生される遅
延割込みがある。割込みは、実行中のコンテキストとは
無関係に、命令の切目(1命令の終了時)でハードウェ
ア的に受付けられる。
(2)「機能ブロックの構成」 第2図は本発明のデータ処理装置の構成を示すブロック
図である。また、第3図はそのより詳細な構成を示すブ
ロック図である。
本発明のデータ処理装置の内部を機能的に大きく分ける
と、命令フェッチ部21,命令デコード部22,PC計算部23,
オペランドアドレス計算部24,マイクロROM部25,データ
演算部26,外部バスインターフェイス部27に分かれる。
第2図ではその他に、CPU外部ヘアドレスを出力するた
めのアドレス出力回路28と、CPU外部とデータを入出力
するためのデータ入出力回路29とを他の機能ブロック部
と分けて示した。
なお、101〜111はデータ及びアドレスを転送するための
内部バスである。
(2.1)「命令フェッチ部」 命令フェッチ部21にはブランチバッファ、命令キュー30
とその制御部等があり、次にフェッチすべき命令のアド
レスを決定してブランチバッファあるいはCPU外部のメ
モリから命令をフェッチする。また、ブランチバッファ
への命令登録をも行う。
ブランチバッファは小規模であるためセレクティブキャ
ッシュとして動作する。
ブランチバッファの動作の詳細に関しては特開昭63−56
731号に開示されている。
次にフェッチすべき命令のアドレスは、命令キュー30へ
入力すべき命令のアドレスとして専用のカウンタにて計
算される。分岐あるいはジャンプが発生した場合には、
新たな命令のアドレスがPC計算部23あるいはデータ演算
部26からCAバス103を介して転送されて来る。
CPU外部のメモリから命令をフェッチする場合は、CAバ
ス103,外部バスインターフェイス部27を通じてフェッチ
すべき命令のアドレスがアドレス出力回路28からCPU外
部へ出力されることにより、データ入出力回路29からDD
バス101を介して命令コードがフェッチされる。そし
て、バッファリングした命令コードの内、次にデコード
すべき命令コードが命令デコード部22へ出力される。
(2.2)「命令デコード部」 命令デコード部22においては、基本的には16ビット(ハ
ーフワード)単位で命令コードでデコードする。
命令フェッチ部21からこの命令デコード部22へ取込まれ
た命令コードはIバス105を介して各ブロックへ送られ
る。
命令デコード部22には、1段目の命令デコードを行うメ
インデコーダ31,2命令の並列実行を行うために限られた
命令のみをデコードするサブデコーダ32,メインデコー
ダ31の出力を更にデコードしてマイクロROMのエントリ
アドスを生成する第2デコーダ36の3個のデコーダが含
まれている。
更に、メインデコーダ31には、第1ハーフコードに含ま
れるオペレーションコードをデコードするFHWデコー
ダ,第2,第3ハーフワードに含まれるオペレーションコ
ードをデコードするNFHWデコーダ,アドレッシングモー
ドをデコードするアドレッシングモードデコーダが含ま
れる。これらメインデコーダ31とサブデコーダ32とを一
括して第1デコーダと称する。
また命令デコード部22には、条件分岐命令の分岐予測を
行う分岐予測機構,2命令の並列実行が可能か否かを判断
するサブコード有効判定回路34,命令固有の即値あるい
はアドレス計算に必要なディスプレースメントの取込み
及び符号拡張を行う拡張データ処理部33,オペランドア
ドレス計算の際のパイプラインコンフリクトをチェック
するアドレス計算コンフリクトチェク部39,デコード結
果の値を一時的に保持するためのDコードラッチ35,ラ
ッチ37,サブコードラッチ38等も含まれている。
命令デコード部22は命令フェッチ部21から入力された命
令コードを2クロックにつき0〜6バイトずつデコード
する。2命令を並列実行する場合には、最大2命令を同
時にデコードする。デコード結果の内、データ演算部26
での演算に関係する情報がマイクロROM部25へ、オペラ
ンドアドレス計算に関係する情報がオペランドアドレス
計算部24へ、PC計算に関係する情報がPC計算部23へ、命
令キュー30の出力ポインタ制御等の情報が命令フェッチ
部21へそれぞれ出力される。
(2.3)「マイクロROM部」 マイクロROM部25には、主にデータ演算部26を制御する
マイクロプログラムが格納されているマイクロROM42,マ
イクロシーケンス制御部41,マイクロ命令デコーダ44,2
命令の並列実行を行う場合に後ろ側の命令をハードワイ
ヤードでデコードするサブコードデコーダ43,命令デコ
ード部22から取込まれた信号群の値を一時保持するため
のRコードラッチ40等が含まれる。
マイクロ命令はマイクロROM42から2クロックサイクル
に1度読出される。マイクロシーケンス制御部41はマイ
クロプログラムで示されるシーケンス処理の他に、例
外,割込及びトラップ(この3つを合わせてEITと称す
る)の処理をハードウェア的に受付ける。
マイクロROM部55には命令コードに依存しない割込みあ
るいは演算実行結果によるフラッグ情報と、第2デコー
ダ36の出力等の命令デコード部22の出力が入力される。
マイクロ命令デコーダ44及びサブコードデコーダ43の出
力は主にデータ演算部26に対して出力されるが、ジャン
プ命令の実行による他の先行処理中止情報等の一部の情
報は他のブロックへも出力される。
(2.4)「オペランドアドレス計算部」 オペランドアドレス計算部24は命令デコード部22のアド
レッシングモードデコーダ等から出力されたオペランド
アドレス計算に関係する情報によりハードワイヤード制
御される。このブロックではオペランドのアドレス計算
に関するほとんどの処理が行われる。メモリ間接アドレ
ッシングのためのメモリアクセスのアドレス及びオペラ
ンドアドレスがメモリにマップされたI/O領域に入るか
否かのチェックも行われる。
アドレス計算結果は外部バスインターフェイス部27へ送
られる。アドレス計算に必要な汎用レジスタ及びプログ
ラムカウンタの値はデータ演算部26及びPC計算部23から
Aバス104を介して取込まれる。
メモリ間接アドレッシングを行う際は、外部バスインタ
ーフェイス部27を通じてアドレス出力回路28からCPU外
部へ参照すべきメモリアドレスが出力されることによ
り、データ入出力部29から入力された間接アドレス値が
DDバス101,命令デコード部22,DISPバス102を介して取込
まれる。
(2.5)「PC計算部」 PC計算部23は命令デコード部22から出力されるPC計算に
関係する情報によりハードワイヤードに制御され、命令
のPC値を計算する。
本発明のデータ処理装置は可変長命令セットを有してお
り、命令をデコードしなければその命令の長さが判らな
い。このため、PC計算部23は命令デコード部22から出力
される命令長をデコード中の命令のPC値に加算すること
により次の命令のPC値を作り出す。
また、命令デコード部22が分岐命令をデコードしてデコ
ード段階での分岐を指示した場合は、PC計算部23は命令
長の代わりに分岐変位を分岐命令のPC値に加算すること
により分岐先命令のPC値を計算する。このように分岐命
令に対して命令デコード段階において予め分岐すること
を本発明のデータ処理装置ではプリブランチと称する。
プリブランチ処理に関しては特願昭61−204500号及び特
願昭61−200557号に詳しく開示されている。
PC計算部23による計算結果は各命令のPC値として命令の
デコード結果と共に出力される他、プリブランチ時には
次にデコードされるべき命令のアドレスとして命令フェ
ッチ部21へ出力される。またPC計算部23での計算結果は
命令デコード部22において次にデコードされる命令の分
岐予測のためのアドレスとしても使用される。
分岐予測に関しては特願昭62−8394号に詳しく開示され
ている。
(2.6)「データ演算部」 データ演算部26は実行制御部45により制御され、マイク
ロROM部25の出力情報に従って各命令の機能を実現する
ために必要な演算をレジスタファイル52と演算器とで実
行する。
実行制御部45は、命令実行に必要なメモリアクセスの制
御も行う。
演算対象となるオペランドがアドレスあるいは即値であ
る場合は、オペランドアドレス計算部24で計算されたア
ドレスを外部バスインターフェイス部27を通じてアドレ
スレジスタ群48に取込む。また、演算対象となるオペラ
ンドが外部メモリ上にある場合は、アドレス計算部24に
て計算されたアドレスをバスインターフェイス部27がア
ドレス出力回路28から出力し、フェッチしたオペランド
をデータ入出力回路29からDDバス101を介してメモリデ
ータレジスタ群58に取込む。
演算器としてはALU53,バレルシフタ54,プライオリティ
エンコーダ55,カウンタ56,スタックポインタのインクリ
メント/デクリメント等を行うSP演算部49,シフトレジ
スタ等がある。
汎用レジスタ,ワーキングレジスタを含むレジスタファ
イル52,SP演算部49と主な演算器との間はS1バス106,S2
バス107,D0バス108の3本のバスにて結合されており、
1個のレジスタ間演算を指示する1マイクロ命令は2ク
ロックサイクルで処理される。
また、2命令を並列実行出来るようにメインのALU53と
は独立して動作可能なサブALU59が備えられており、レ
ジスタファイル52,SP演算部49とSAバス109、SBバス110,
Dバス111の三つの専用バスで結合されている。
この他、定数ROM57,プロセッサの状態を制御するフィー
ルド及び実行結果を反映するフラグ等からなるプロセッ
サステータスワード(PSW)51,データ処理装置に対して
種々の制御を行うための制御レジスタ群50,メモリアク
セスを行うアドレスを格納しインクリメント/デクリメ
ントが可能なアドレスレジスタ群48,メモリから取込ま
れたデータ及びメモリに書込まれるデータを格納するた
めのメモリデータレジスタ群58等がある。
データ演算時にCPU外部のメモリをアクセスする必要が
ある場合は、実行制御部45の指示によりアドレスレジス
タ群48に格納されているアドレスが外部バスインターフ
ェイス部27を通じてアドレス出力回路28からCPU外部へ
出力されることにより、データ入出力回路29,DDバス101
を通じて目的のデータがメモリデータ群58にフェッチさ
れる。
CPU外部のメモリにデータをストアする場合は、アドレ
スレジスタ群48に格納されているアドレスを外部バスイ
ンターフェイス部27を通じてアドレス出力回路28から出
力すると同時に、メモリデータレジスタ群58に格納され
ているデータをDDバス101を介してデータ入出力回路29
からCPU外部へ出力してメモリへの書込みを実行する。
オペランドストアを効率的に実行するために、データ演
算部26には4バイトのストアバッファが備えられてい
る。このストアバッファの管理も実行制御部45で行われ
る。
ジャンプ命令の処理あるいは例外処理等を行って新たな
命令アドレスをデータ演算部26が得た場合は、ジャンプ
先アドレスをCAバス103を介して命令フェッチ部21とPC
計算部23へ出力する。
(2.7)「外部バスインターフェイス部」 外部バスインターフェイス部27は本発明のデータ処理装
置の外部バスでの通信を制御する。
メモリのアクセスは総てクロックに同期して行われ、最
小2クロックサイクルで行うことができる。
メモリに対するアクセス要求は命令フェッチ部21、オペ
ランドアドレス計算部24及びデータ演算部26から独立に
生じる。
外部バスインターフェイス部27はこれらのメモリアクセ
ル要求を調停する。更にメモリとCPUとを結ぶデータバ
スサイズである32ビット(1ワード)の整置境界を跨ぐ
メモリ番地にあるデータのアクセスは、このブロック内
で自動的にワード境界を跨ぐことが検知されて2回のメ
モリアクセスに分解されて行われる。
プリフェッチされるオペランドとストアされるオペラン
ドとが重なる場合のコンフリクト防止及びストアオペラ
ンドからフェッチオペランドへのバイパス処理もこの外
部バスインターフェイス部27で行われる。
(3)「パイプライン処理」 本発明のデータ処理装置は、データ演算部26において1
命令毎に処理を行う逐次実行モードと、2命令を並列処
理する並列実行モードとの2つの実行モードを備えてい
る。
以下、並列実行モードでの動作も含め、本発明のデータ
処理装置のパイプライン処理方法について説明する。
(3.1)「クロック」 第30図は本発明のデータ処理装置のクロックのタイミン
グチャートである。
本発明のデータ処理装置は外部から単相のクロックを入
力し、内部で2分周して非重複2相クロック信号(クロ
ック1とクロック2)を生成し、内部クロックとして全
体に供給している。
各パイプラインステージは、上述の非重複二相クロック
と制御信号との論理積をとった非重複4相クロック(ク
ロックA,クロックB,クロックC,クロックD)により基本
動作を論理的に規定している。従って、各パイプライン
ステージは1つの処理を最小2クロックサイクルで処理
することが可能である。
以下、クロック1,クロック2,クロックA,クロックB,クロ
ックC,クロックDがハイレベルである状態をそれぞれφ
1,φ2,φA,φB,φC,φDと称す。
(3.2)「パイプライン機構」 本発明のデータ処理装置のパイプライン処理機構は第1
図に示す構成となる。
命令のプリフェッチを行う命令フェッチステージ(IFス
テージ)1,命令のデコードを行うデコードステージ(D
ステージ)2,オペランドのアドレス計算を行うオペラン
ドアドレス計算ステージ(Aステージ)3,マイクロROM
アクセス(特にRステージ6と称す)とオペランドのプ
リフェッチ(特にOFステージ7と称す)を行うオペラン
ドフェッチステージ(Fステージ)4,命令の実行を行う
実行ステージ(Eステージ)5の5段構成をパイプライ
ン処理の基本とする。
Eステージ5では1段のストアバッファがあるほか、高
機能命令の一部は命令実行自体をパイプライン化するた
め、実際には5段以上のパイプライン処理効果がある。
各ステージは他のステージとは独立に動作し、論理上は
5つのステージが完全に独立動作する。各ステージは1
回の処理を最小2クロックサイクルで行うことができる
ので、理想的には2クロックサイクルごとに次々とパイ
プライン処理が進行する。
本発明のデータ処理装置にはメモリ−メモリ間演算,メ
モリ間接アドレッシング等のような1回の基本パリプラ
イン処理のみでは処理不可能な命令があるが、本発明の
データ処理装置はこれらの処理に対しても可能な限り均
衡したパイプライン処理が行えるように設計されてい
る。
複数のメモリオペランドを有する命令に対しては、メモ
リオペランドの数に基づいてデコード段階で複数のパイ
プライン処理単位(ステップコード)に分解してパイプ
ライン処理を行う。
パイプライン処理単位の分解方法に関しては特願昭61−
236456号で詳しく述べられている。
また、並列実行モードでは、2命令が1つのステップコ
ードとして処理される場合もある。
1Fステージ1からDステージ2へ渡される情報は命令コ
ード11そのものである。
Dステージ2からAステージ3へ渡される情報は、命令
で指定された演算に関するコード(Dコード12と称す)
と、オペランドのアドレス計算に関係するコード(Aコ
ード13と称す)との2つがある。
Aステージ3からFステージ4へ渡される情報はマイク
ロプログラムルーチンのエントリ番地及びマイクロプロ
グラムへのパラメータなどを含むRコード14と、オペラ
ンドのアドレスとアクセス方法指示情報などを含むFコ
ード15との2つである。
Fステージ4からEステージ5に渡される情報は演算制
御情報,リテラル等を含むEコード16と、オペランド,
オペランドアドレス等を含むSコード17との2つであ
る。
Eステージ5以外のステージで検出されたEITに対して
はそのコードがEステージ5に到達するまでEIT処理は
起動しない。Eステージ5で処理されている命令のみが
実行段階の命令であり、IFステージ1〜Fステージ4で
処理されている命令はまだ実行段階に至っていないので
ある。従って、Eステージ5以外で検出されたEITは検
出したことがステップコード中に記録されて次のステー
ジに伝えられるのみである。
(3.3)「各パイプラインステージの処理」 各パイプラインステージの入出力ステップコードには第
1図に示したように便宜上 名前が付与されている。ま
たステップコードはオペレーションコードに関する処理
を行い、マイクロROMのエントリ番地及びEステージ5
に対すパラメータ等になる系列と、Eステージ5のマイ
クロ命令に対するオペランドになる系列との2系列があ
る。
(3.3.1)「命令フェッチステージ」 命令フェッチステージ(IFステージ)1は命令をメモリ
あるいはブランチバッファからフェッチして命令キュー
30へ入力し、Dステージ2に対して命令コード11を出力
する。
命令キュー30への入力は整置された4バイト単位で行わ
れる。メモリから命令をフェッチする際は、整置された
4バイトにつき最小2クロックサイクルを要する。しか
し、ブランチバッファがヒットした場合は整置された4
バイトにつき1クロックサイクルでフェッチ可能であ
る。
命令キュー30の出力は命令デコードステージ1のクロッ
クに同期して動作し、出力ポインタにより2バイト単位
で管理されており、1クロックサイクル毎に32ビットの
データを命令デコード部22のIバス105へ出力できるよ
うになっている。
Dステージ1のφAで出力ポインタの指し示す位置から
32ビットのデータがIバス105へ出力され、命令デコー
ド部21からの指示により、出力ポインタの値が+0また
は+1インクリメントされる。
Dステージ1のφCで更新された出力ポインタの指し示
す位置から32ビットのデータがIバス105へ出力され、
命令デコード部21からの指示により、出力ポインタの値
が+0,+1または+2インクリメントされる。
従って、命令キュー30は2クロックサイクルの間に最大
6バイトまで命令コードを出力できる。また分岐の直後
には命令キュー30をバイパスして、命令基本部2バイト
を直接命令デコード部21に転送することもできる。
ブランンチバッファへの命令の登録及びクリア等の制
御、プリフェッチ先命令アドレスの管理及び命令キュー
30の制御もIFステージ1で行われる。
IFステージ1で検出されるEITには、命令をメモリから
フェッチする際のバスアクセス例外,メモリ保護違反等
によるアドレス変換例外がある。
(3.3.2)「命令デコードステージ」 命令デコードステージ(Dステージ)2はIFステージ1
から入力された命令コード11をデコードする。
命令のデコードは命令デコード部21のメインデコーダ31
及びサブデコーダ32を用いて、2クロックサイクル単位
で1度行ない、1回のデコード処理で0乃至6バイトの
命令コードを消費する。
φAでIバス105上の命令コード11が両デコード31,32に
取込まれる。
命令固有の即値及びアドレス計算に用いられるディスプ
レースメント等の拡張データはφCでIバス105から拡
張データ処理部33へ取込まれ、符号拡張等の処理が行わ
れる。
サブコード有効判定回路34では、サブデコーダ32でのデ
コード結果が有効であるか否かが判定される。
1回のデコードでAステージ3に対してアドレス計算情
報であるAコード31と、オペレーションコードの中間デ
コード結果であるDコード12とを出力する。Aコード13
にはアドレス計算を制御する制御コードと最大32ビット
のアドレス修飾情報とが、Dコード12には命令実行を制
御するための制御コードとリテラル情報とが含まれる。
Dコード12はDコードラッチ35に保持される。
Dステージ2ではPC計算部23の制御,命令キュー30から
の命令コードの出力制御も行う。
Dステージ2で検出されるEITには、予約命令例外及び
プリブランチ時の奇数アドレスジャンプトラップがあ
る。また、IFステージ1から転送されてきた各種EITは
ステップコード内へエンコードする処理をしてAステー
ジ3へ転送される。
(3.3.3)「オペランドアドレス計算ステージ」 オペランドアドレス計算ステージ(Aステージ)3は処
理が大きく2つに分かれる。1つは命令デコード部22の
第2デコーダ36を使用して、オペレーションコードの後
段デコードを行う処理で、他方はオペランドアドレス計
算部24でオペランドアドレスを計算する処理である。
オペレーションコードの後段デコード処理はDコードラ
ッチ35に保持されているDコード12を入力とし、レジス
タ及びメモリの書込み予約と、マイクロプログラムルー
チンのエントリ番地とマイクロプログラムに対するパラ
メータ等を含むRコード14の出力を行うことである。D
コード12の一部はデコードされずにラッチ37,サブコー
ドラッチ38を経由してそのままRコード14となる。
Rコード14はマイクロROM部25のRコードラッチ40に保
持される。なお、レジスタ及びメモリの書込み予約は、
アドレス計算で参照したレジスタ及びメモリの内容がパ
イプライン上を先行する命令で書換えられ、誤ったアド
レス計算が行われるのを防ぐためのものである。この書
込み予約処理は、アドレス計算コンフリクトチェック部
39で行われる。
レジスタ及びメモリの書込み予約に関しては、特願昭62
−144394号で詳しく述べられている。
オペランドアドレス計算処理はAコード13を入力とし、
オペランドアドレス計算部24で加算及びメモリ間接参照
を組合わせてアドレス計算を行い、その計算結果をFコ
ード15として出力する。
この際、アドレス計算コンフリクトチェック部39におい
てアドレス計算に伴うレジスタ及びメモリの読出し時に
コンフリクトチェックが行われ、先行命令がレジスタあ
るいはメモリに書込み処理を終了していないためコンフ
リクトが指示されれば、先行命令がEステージ5で処理
され、書込み処理が終了するまで待つ。また、オペラン
ドアドレスあるいはメモリ間接参照のアドレスがメモリ
にマップされたI/O領域に入るか否かのチェックも行わ
れる。
Aステージ3で検出されるEITには予約命令例外,特権
命令例外,バスアクセス例外,アドレス変換例外,メモ
リ間接アドレッシング時のオペランドブレイクポイント
ヒットによるセルフデバッグトラップがある。
これらのEIT検出情報はRコード14及びFコード15に反
映される。Dコード12,Aコード13自体がEITを起こした
ことを示していれば、Aステージ3はそのコードに対し
てアドレス計算処理をせず、そのEITをRコード14及び
Fコード15に伝える。
(3.3.4)「マイクロROMアクセスステージ」 オペランドフェッチステージ(Fステージ)4も処理が
大きく2つに分かれる。1つはマイクロROM42のアクセ
ス処理であり、特にRステージ6と称される。他方はオ
ペランドプリフェッチ処理であり、特にOFステージ7と
称される。Rステージ6とOFステージ7とは必ずしも同
時に動作するわけれはなく、メモリアクセス権が獲得で
きるか否か等に依存して、独立に動作する。
Rステージ6はRコードラッチ40に保持されているRコ
ード14に対して次のEステージ5での実行制御コードで
あるEコード16を生成する。
Rコード14中のマイクロエントリアドレスでマイクロRO
M42のアクセスが行われ、読出されたマイクロ命令がマ
イクロ命令デコーダ44でデコードされる。Rコード14の
一部はサブコードデコーダ43でハードワイヤードにデコ
ードされる。1つのRコード14に対する処理が2つ以上
のマイクロプログラムステップに分解される場合、マイ
クロROM42はEステージ5で使用され、次のRコード14
はマイクロROMアクセス待ちになる。
マイクロ命令のシーケンス管理はマイクロシーケンス制
御部41で行われる。Rコード14に対するマイクロROM42
のアクセスが行われるのはその前のEステージ5での最
後のマイクロ命令実行時である。本発明のデータ処理装
置ではほとんどの基本命令は1マイクロプログラムステ
ップで行われるため、実際にはRコード14に対するマイ
クロROM42のアクセスが次々と行われることが多い。
Rステージ4で検出されるEITには、PCブレークポイン
トヒットによるセルフデバッグトラップがあり、検出情
報はEコード16に伝えられる。
Rコード14が命令処理再実行型のEIT検出を示している
場合はそのEIT処理に対するマイクロプログラムが実行
される。Rコード14が奇数アドレスジャンプトラップを
示している場合はRステージ6はそれをEコード16に伝
える。これはプリブランチに対するもので、Eステージ
5ではそのEコード16で分岐が生じなければそのプリブ
ランチを有効として奇数アドレスジャンプトラップを発
生する。
(3.3.5)「オペランドフェッチステージ」 オペランドフェッチステージ(OFステージ)7はFステ
ージ4での上述の2つの処理の内のオペランドプリフェ
ッチ処理を行う。
オペランドプリフェッチはFコード15を入力とし、フェ
ッチしたオペランドとそのアドレスとをSコード17とし
て出力する。オペランドアドレスはアドレスレジスタ群
48に、オペランドデータはメモリデータレジスタ群58に
それぞれ格納される。
1つのFコード15ではワード境界を跨いでもよいが、4
バイト以下のオペランドフェッチを指定する。Fコード
15にはオペランドのアクセスを行うか否かの指定も含ま
れており、Aステージ3で計算されたオペランドアドレ
ス自体あるいは即値をEステージ5へ転送する場合には
オペランドプリフェッチは行われず、Fコード15の内容
がSコード17としてアドレスレジスタ群48へ転送され
る。
プリフェッチしようとするオペランドとEステージ5が
書込み処理を行おうとするオペランドとが一致する場合
は、オペランドプリフェッチはメモリからは行われずに
バイパスして行なわれる。またI/O領域に対してはオペ
ランドプリフェッチを遅延させ、先行命令が総て完了す
るまで待ってオペランドフェッチが行われる。
OFステージ7で検出されるEITにはバスアクセス例外,
アドレス変換例外,オペランドプリフェッチに対するブ
レイクポイントヒットによるセルフデバッグトラップが
ある。
Fコード15がセルフデバッグトラップ以外のEITを示し
ている場合はそれがSコード17へ転送され、オペランド
プリフェッチは行われない。Fコード15がセルフデバッ
グトラップを示している場合はそのFコード15に対して
EITを示していない場合と同じ処理が行われると共にセ
ルフデバッグトラップがSコード17へ伝えられる。
(3.3.6)「実行ステージ」 実行ステージ(Eステージ)5はEコード16,Sコード17
を入力として動作する。このEステージ5が命令を事項
するステージであり、Fステージ4以前のステージで行
われた処理はすべてEステージ5のための前処理であ
る。
Eステージ5でジャンプ命令が実行されたり、EIT処理
が起動されたりした場合は、IFステージ1〜Fステージ
4までの処理はすべて無効にされる。
Eステージ5はマイクロプログラムにより制御され、R
コード14に示されたマイクロプログラムルーチンのエン
トリ番地からの一連のマイクロ命令を実行することによ
り命令を実行する。
マイクロROMの読出しとマイクロ命令の事項とはパイプ
ライン化されて行われる。従って、マイクロプログラム
での条件分岐は関連する演算処理の1ステップ後に行わ
れる。また、Eステージ5はデータ演算部26にあるスト
アバッファを利用して、4バイト以内のオペランドスト
アと次のマイクロ命令実行とをパイプライン処理するこ
とも可能である。
また、並列実行モードではサブALU59を他の演算器と独
立に動作させることにより2命令の並列実行も可能であ
る。
Eステージ5ではAステージ3で行ったレジスタあるい
はメモリに対する書込み予約をオペランドの書込みの後
に解除する。
また条件分岐命令がEステージ35で分岐を発生した場合
はその条件分岐命令に対する分岐予測が誤っていたので
あるから、分岐履歴の書換えが行われる。
Eステージ5で検出されるEITにはバスアクセス例外,
アドレス変換例外,セルフデバッグトラップ,奇数アド
レスジャンプトラップ,予約機能例外,不正オペランド
例外,予約スタックフォーマット例外,ゼロ除算トラッ
プ,無条件トラップ,条件トラップ,遅延コンテキスト
トラップ,外部割込,遅延割込,リセット割込,システ
ム障害がある。
Eステージ5で検出されるEITは総てEIT処理されるが、
Eステージ5以前のIFステージ1〜Fステージ4の間で
検出されたRコード14あるいはSコード17に反映されて
いるEITは必ずしもEIT処理されるとは限らない。
IFステージ1〜Fステージ4の間で検出されたが、先行
の命令がEステージ5でジャンプ命令が実行された等の
原因でEステージ5まで到達しなかったEITはすべてキ
ャンセルされる。そのEITを発生した命令はそもそも実
行されなかったことになる。
割込みは命令の切目でEステージ5で直接受付けられ、
マイクロプログラムにより必要な処理が実行される。そ
の他の各種EITの処理もマイクロプログラムにより行わ
れる。
(3.4)「各パイプラインステージの状態制御」 パイプラインの各ステージは入力ラッチと出力ラッチと
を備え、他のステージとは独立に動作することを基本と
する。
各ステージは1つ前に行った処理が終了し、その処理結
果を出力ラッチから次のステージの入力ラッチへ転送
し、自身のステージの入力ラッチに次の処理に必要な入
力信号の総てが揃えば次の処理を開始する。
即ち、各ステージは1つ前段のステージから出力されて
くる次の処理に対する入力信号の総てが有効となり、現
在の処理結果を後段のステージの入力ラッチへ転送して
出力ラッチが空になると次の処理を開始する。
各ステージが動作を開始する1つ前のクロックタイミン
グで入力信号を総て揃っている必要がある。入力信号が
揃っていないと、そのステージは待ち状態(入力待ち)
になる。出力ラッチから次のステージの入力ラッチへの
転送を行う際は次のステージの入力ラッチが空き状態に
なっている必要があり、次のステージの入力ラッチが空
きでない場合もパイプラインステージは待ち状態(出力
待ち)になる。必要なメモリアクセス権が獲得出来なか
ったり、処理しているメモリアクセスにウエイトが挿入
されたり、その他のパイプラインコンフリクトが生じる
と、各ステージの処理自体が遅延する。
(3.5)「プログラムカウンタの管理」 本発明のデータ処理装置のパイプライン上に存在するス
テップコードは総て別命令に対応するものである可能性
があり、プログラムカウンタの値はステップコードそれ
ぞれについて管理する。総てのステップコードはそのス
テップコードが起因する命令のプログラムカウンタ値を
有する。ステップコードに付随して各パイプラインステ
ージ上を流れるプログラムカウンタ値をステッププログ
ラムカウンタ(SPC)と称する。
並列実行モードにおいて2命令で1つのステップコード
を形成する場合には、2命令の内の先行する命令のアド
レスがSPCとなる。
(4)「並列実行モードでの動作」 前述の如く本発明のデータ処理装置は、データ演算部26
において1命令毎に処理を行う逐次実行モードと、2命
令を並列処理可能な並列実行モードとの2つの実行モー
ドを備えている。
並列実行モードは、ある条件を満たす場合、短縮形ファ
ーマットのリテラル−レジスタ間、レジスタ−レジスタ
間のALU演算命令あるいは第1オペランドがレジスタ上
にあるG−formatの第1ステップコード,E−formatの第
1ステップコード等を一つ前の命令と並列実行する。
上述のある条件を満たすか否かの判定は命令デコード部
22のサブコード有効判定回路34が行う。
即ち、制御レジスタ群50に含まれている実行モード制御
レジスタ中の実行モード制御ビットがセットされること
により、実行モードが選択される。そして、このビット
が“1"にセットされると本発明のデータ処理装置は並列
実行モードで動作し、“0"にセットされると逐次実行モ
ードで動作する。
実行モード制御ビットの値はソフトウェアでセット可能
である。以下では、並列実行モードでの本発明のデータ
処理装置の動作について詳細な説明を行う。
(4.1)「ステップコードの生成」 パイプライン中の処理単位となるステップコードはDス
テージ2において生成される。Dステージ2で生成され
るステップコードであるDコード12は、メインデコーダ
13のデコード結果と、サブデコーダ32のデコード結果と
からなる。
以下、Dコード12,Rコード14,Eコード16の各ステップコ
ードの内のメインデコーダ31のデコード結果に対応する
部分をメインコードと称し、サブデコーダ32のデコード
結果に対応する部分をサブコードと称す。メインコード
とサブコードとは基本的に各パイプラインステージで独
立に処理される。
第4図にサブコード有効判定回路34の詳細な回路図を示
す。
図において、71〜74は4ビットの比較的であり、φAで
取込まれた2つの4ビットデータを比較し、両者が一致
した場合に“1"になる一致信号211〜214を出力する。
75はφAでのSVALID信号203の値を保持するラッチであ
る。各論理ゲートは直接ハードウェアに対応したもので
はなく、論理的な意味を示すものである。また説明を簡
略化するためにタイミング制御のための信号は省略して
いる。
命令デコード部22では、φAでIバス105上へ出力され
ている32ビットの命令コードのビット0からビット15
(以下、IBUS(0:15)と表記する)をメインデコーダ31
に、IBUS(16:31)をサブデコーダ32にそれぞれ取込ん
でデコード処理する。
レジスタ番号,サイズ等のパラメータとなるフィールド
の切出し処理も各デコーダで行われる。メインデコーダ
31でデコード中の命令とサブデコーダ32でデコード中の
命令とが異なる命令である場合についてのみ2命令の並
列実行が可能となるので、以下便宜上メインデコーダ31
でデコード中の命令を命令1、サブデコーダ32でデコー
ド中の命令を命令2として説明する。
サブコード有効判定回路32はφAでレジスタ番号指定フ
ィールドに相当するIBUS(2:5),IBUS(12:15),IBUS
(18:21),IBUS(28:31)と、命令フェッチ部21から入
力されるIBUS(16:31)上のデータの有効/無効を示すS
VALID信号203(但し、“1":有効)を取込む。φAでのS
VALID信号203の値はラッチ75に保持される。
また、実行モード制御レジスタ中の実行モード制御ビッ
トの値がMODE信号201としてサブコード有効判定回路32
へ入力されている。サブコード有効判定回路32では、ま
ず指定レジスタの一致検出を行う。
第31図は2つのレジスタ間演算を行う短縮形フォーマッ
トの命令が連続している場合のIバス105上の命令コー
ドの様子を示す模式図である。
この場合、REGL1,REGR1,REGL2,REGR2の4個のレジスタ
が指定される。他の命令に関しても、オペランドがレジ
スタで指定される場合には、レジスタ番号は上記レジス
タ番号指定フィールドのどちらか一方あるいは両方で指
定される。
サブコード有効判定回路34は、命令2によりオペランド
として指定されているレジスタが命令1により書換えら
れるか否かをチェックする。
まず、IBUS(2:5)(REGL1)とIBUS(18:21)(REGL
2),IBUS(2:5)(REGL1)とIBUS(28:31)(REGR2),I
BUS(12:15)(REGR1)とIBUS(18:21)(REGL2),IBUS
(12:15)(REGR1)とIBUS(28:31)(REGR2)とがそれ
ぞれ比較器71〜74で比較され、一致した場合に“1"とな
るMATCHLL信号211,MATCHLR信号212,MATCHRL信号213,MAT
CHRR信号214が生成される。
また、メインデコーダ31とサブデコーダ32とでのデコー
ド結果の一部がサブコード有効判定回路32に入力され
る。メインデコーダ31からはALLOW信号204,NOEXT信号20
5,WRITERL信号206,WRITERR信号207が、サブデコーダ32
からはSUBVALID信号208,REFRL信号209,REFRR信号210が
それぞれ入力される。
ALLOW信号204は、サブコードが有効であり且つオペラン
ドのコンフリクトが発生しなければ、2命令を並列に実
行してもよいことを示している。
ALLOW信号204は命令コードのみに依存する信号であり、
各命令について規定してある。
メインデコーダ31でデコード中の命令が1命令の最後の
ステップコードを生成する命令コードであり、命令の処
理シーケンスを変更する命令(ジャンプ命令,サブルー
チンジャンプ命令等)ではなく、その命令を実行した後
にトラップを起動する可能性のある命令(除数がゼロで
ある場合にゼロ除算トラップを起動する除算命令,シス
テムコールを行うトラップ命令等)でない場合に、ALLO
W信号204は“1"になる。乗算命令のように複数のマイク
ロ命令によって実行される命令であってもよいし、複数
のステップコードに分解されて処理される命令の最終ス
テップコードを生成する命令であってもよい。また、メ
モリオペランドを有していても構わない。命令固有の即
値が後に続く場合は“0"になる。
NOEXT信号205は、命令1がオペランドのアドレス計算の
ための拡張データを持たず、アドレッシングモードが多
段間接モードでない場合に“1"になる。NOEXT信号205が
“1"である場合は、サブデコーダ32に取込まれたIBUS
(16:31)が命令コードであることを示している。アド
レッシングモードとして、レジスタ直接モード,レジス
タ間接モード,スタックポップモード,スタックプッシ
ュモードが指定された場合あるいはアドレッシングモー
ドによってオペランドが指定されない場合に“1"にな
る。
WRITERL信号206は命令1がREGL1のフィールドで指定さ
れたレジスタの内容を書換える場合に“1"になる。しか
し、REGL1がレジスタ番号の指定フィールドになってい
ない場合には必ず“0"になる。例えばL−formatの転送
(MOV)命令では“1"となる。
WRITERR信号207は命令1がREGL1のフィールドで指定さ
れたレジスタの内容を書換える場合に“1"になる。しか
し、REGL1がレジスタ番号の指定フィールドになってい
ない場合には必ず“0"になる。例えばQ−formatの加算
(ADD)命令で、アドレッシングモードがレジスタ直接
モードである場合には“1"になる。
SUBVALID信号208はサブデコーダ32でのデコード結果が
有効であったことを示す信号であり、サブALU59で実行
可能な命令であることを示している。
サブコード有効信号が“1"になる命令の一覧表を第32図
に示す。オペランドとしてレジスタが指定された1オペ
ランド命令,レジスタ−レジスタ間,リテラル(命令コ
ード中で指定された小さな即値)−レジスタ間の2オペ
ランド命令,ソースオペランドがレジスタであるG−fo
rmatの命令の第1ステップコード,E−formatの命令の第
1ステップコードが該当する。即ち、複数ステップコー
ドに分解されて処理される命令であり且つ第1オペラン
ドの退避処理を行う場合、あるいは2バイト命令であり
且つメモリオペランドを持たず、2クロックサイクルで
実行を終了する。ALU演算命令の際に“1"になる。これ
らの命令では、命令の実行に関して例外を発生すること
はない。
REFRL信号209は命令2がREGL2のフィールドで指定され
たレジスタの内容を参照する場合に“1"になる。REGL2
がレジスタ番号の指定フィールドになっていない場合に
は必ず“0"になる。例えばS−formatのMOV命令では
“1"になる。
REFRR信号210は命令2がREGR2のフィールドで指定され
たレジスタの内容を参照する場合に“1"になる。REGR2
がレジスタ番号の指定フィールドになっていない場合に
は必ず“0"になる。例えば,Q−formatのADD命令でアド
レッシングモードがレジスタ直接モードである場合、あ
るいはG−formatの第1ステップコードでアドレッシン
グモードがレジスタ直接モードである場合等に“1"にな
る。またE−formatの第1ステップコードではレジスタ
の参照は行われないので、REFRL信号209及びREFRR信号2
10は共に“0"になる。
これらの信号を基にサブコード有効判定回路34では2命
令の並列実行が可能か否かを判定し、サブコード有効信
号202を出力する。各比較器71〜74の比較結果とメイン
デコーダ31及びサブデコーダ32からの入力とを基に、命
令2で参照するレジスタが命令1で書換えられるか否か
をチェックする。もしこの2命令間でオペランドのコン
フリクトが発生しなければ、NOCONF信号215は“1"にな
る。
本発明のデータ処理装置は並列実行モードで動作してお
り(MODE信号210=“1")、φAで取込まれる命令コー
ドの32ビット総てが有効であり(SVALID信号203=
“1")、命令1がサブコードを有効にすることを許可し
ており(ALLOW信号204=“1")、命令2がサブコードを
生成可能な命令であり(SUBVALID信号208=“1")、命
令1と命令2とでレジスタ間のコンフリクトが発生して
いない(NOCONF信号215=“1")場合にサブコード有効
信号202が“1"になる。
サブコード有効信号202が“0"である場合にはサブコー
ドは無効となり、後段のパイプラインステージでサブコ
ードに関する処理は行われない。
命令デコード部22は命令キュー30の出力ポインタ制御部
及びPC計算部23へ使用命令長を出力している。また、命
令デコード部22は短縮形フォーマットの命令では、サブ
コードが有効になった場合には1回のデコードにより4
バイトの命令コードを消費したことを命令キュー30の出
力制御部及びPC計算部23へ知らせる。この場合のステッ
プコードのPC(SPC)は、命令1のPC値となり、命令2
のPC値は計算されない。
G−formatあるいはE−formatの第1ステップコードで
は、命令デコード部22は命令キュー30の出力制御部へは
1回のデコードにより4バイト使用したことを知らせる
が、PC計算部23へは1回のデコードで2バイト分の値を
出力し、次のデコードサイクルでは、そのサイクルで使
用した命令長に2バイト分上場せした値をPC計算部23へ
出力する。このようにして、命令デコード部22はG−fo
rmat及びE−formatの命令番地を正しく計算することが
出来る。
以上のように、メインデコーダ31及びサブデコーダ32の
デコード結果によりDコード12及びAコード13が生成さ
れる。生成されたDコード12はDコードラッチ35に保持
される。サブDコードはサブコード部35Aに格納され
る。
サブDコードの構成を第33図の模式図に示す。オペラン
ドサイズ,ソースとデスティネーションのレジスタ番
号,中間デコード結果である中間コード,リテラル,デ
スティネーションレジスタへの書込みを行う場合は“1"
になるレジスタ書込み予約制御信号及びサブコード有効
信号で構成されている。リテラルは指定されたリテラル
値が8ビットにゼロ拡張されている。サブコード有効信
号にはサブコード有効判定回路から出力されるSUBCODEV
信号202の値がそのままセットされる。
以上のように、サブコードが有効となる場合は2つの命
令で1つのステップコードが生成され、後段のパイプラ
インステージでこのステップコードがパイプラインの1
つの処理単位として処理されていく。
(4.2)「ステップコードの処理」 サブコードが有効な場合の後段のパイプラインステージ
での処理について説明する。
Aステージ3ではメインコードに関しては通常の処理が
行われる。中間デコード結果は、第2デコード36でデコ
ードされ、その結果がラッチ37の内容と共にRコードラ
ッチ40へ出力される。サブコードに関しては、レジスタ
への書込みが行われる場合のみ、レジスタの書込み予約
を行う。レジスタ書込み予約制御信号以外の信号はサブ
コードラッチ38に一時保持され、Rコードラッチ40のサ
ブコード部40Aへ出力される。
サブRコードの内容を第34図に示す。サブDコードのレ
ジスタ書込み信号以外の部分がそのままサブRコードと
なっている。メモリオペランドがある場合には、アドレ
ス計算部24でアドレス計算が行われる。
Rステージ6ではメインコードに関してマイクロROM42
のアクセス及びマイクロROM42から読出されたマイクロ
命令のデコードを行い、実行制御信号を生成する。ま
た、サブコードに関しては、ハードワイヤードにデコー
ドを行い、レジスタファイル52あるいはSP演算部49から
SAバス109,SBバス110への出力制御、サブALU59の演算制
御、Dバス111からレジスタファイル52あるいはSP演算
部49への入力制御及びフラグ制御のための信号が生成さ
れる。これらの信号は、実行制御部45のサブALU制御部4
6,フラグ制御部47等へ送られる。サブコードに関するこ
れらの信号は、命令1に対する最終マイクロ命令が読出
された場合に有効となる。
OFステージ7では必要に応じてオペランドのフェッチが
行われる。
Eステージ5ではデータ演算部26において命令の実行が
行われる。
メインコードの処理は、マイクロ命令の指示に従ってAL
U53あるいはバレルシフタ54等の演算器により行われ
る。必要なデータの転送は、SIバス106、D2バス107,D0
バス108を介して行われる。
サブコードの処理は、命令1の最終のマイクロ命令の実
行サイクルに同期して、サブALU59で行われる。選択さ
れたレジスタの内容がレジスタファイル52あるいはSP演
算部49からSAバス109,SBバス110へ読出される。ソース
オペランドとしてリテラルが指定されている場合には、
8ビットのリテラル値がゼロ拡張されてSAバス109へ読
出される。SAバス109,SBバス110の内容がサブALU59へ入
力されてサブALU制御部46の制御により指定される演算
が行われ、演算結果がDバス111を介してレジスタファ
イル52あるいはSP演算部49へ書戻される。
命令1の最終マイクロステップでD0バス108から書込ま
れるレジスタとDバス111から書込まれるレジスタとが
同じである場合にはDバス111から書込まれる。サブALU
59の演算結果と命令1の最終マイクロ命令の演算結果と
によりPSW51のフラグの更新が行われる。フラグの更新
はフラグ制御部47により制御され行われる。
命令2の実行結果によって変化するフラグにはサブALU5
9での演算結果が反映され、命令2の実行結果では変化
せずに命令1の実行結果により変化するフラグには命令
1の演算結果が反映される。
命令1の実行結果によっても命令2の実行結果によって
も変化しないフラグは変化しない。
E−formatあるいはG−formatの第1ステップコードに
対してサブコードが生成されている場合には、第1オペ
ランド(ソースオペランド)として指定されたリテラル
あるいはレジスタの値がSAバス109,サブALU59,Dバス111
を介してレジスタファイル52中のワーキングレジスタへ
退避される。この場合、サブコードの処理は第1オラペ
ンドの退避処理のみであるので、サブALU59での演算結
果はPSW51に反映されない。命令2の第2ステップコー
ドでは、ワーキングレジスタに退避されている第1オペ
ランドの値を用いて命令が実行される。
(4.3)「EIT処置」 2バイト命令に関してサブコードが有効になった場合に
は命令2に関してセルフデバッグトラップ以外のEITが
起動されることはない。
命令1に関して例外が検出された場合には命令2に関す
る処理も行われず、命令1から処理を再実行する。
命令1が複数のマイクロ命令により処理される場合に
も、命令2の処理は命令1の最終マイクロ命令に同期し
て処理されるため、命令1で例外が検出されたにも拘わ
らず命令2を実行してしまうことはない。
命令1でストアバッファ関連以外のトラップを起こす命
令では、ALLOW信号204は必ず“0"になる。これは、トラ
ップに関するEIT処理ハンドラから元のプログラムへ復
帰する場合は、トラップを起こした次の命令から処理が
再開されるためである。例えば、ゼロ除算トラップを起
こす可能性がある除算命令では、ALLOW信号204は“0"に
なる。
ストアバッファ処理に関して発生するトラップ(バスア
クセストラップなど)は命令の切目で受付される。従っ
て、命令1と命令2との間で受付ける必要はない。ま
た、外部割込みは命令の切目で受付けられるが、実行中
のコンテキストとは無関係であり、命令1と命令2との
間で受付ける必要はなく、命令1の実行前、あるいは命
令2の実行後に受付ければよい。
E−formatあるいはG−formatの第1ステップコードに
関してサブコードが有効になった場合には、命令2の第
1ステップコードと第2ステップコードとの間で割込み
等を受付ける場合がある。この場合、第1ステップコー
ドではソースオペランドの退避処理を行うのみであり、
割込み処理後に命令2から処理を再実行する。
以上に述べたように、本発明のデータ処理装置では並列
実行モードにおいても逐次実行モードと全く同様のEIT
処理を行えばよく、並列実行モードでのEIT処理のため
に特別な機能を付加する必要はない。
なお、本発明のデータ処理装置がサポートしているデバ
ッグ機能(PCブレイク,オペランドブレイク,トレー
ス)を用いてプログラムのデバッグを行う場合には、各
命令毎にデバッグ事象の検出チェックを行う必要があ
り、動作モードとして逐次実行モードを選択しておく必
要がある。
(4.4)「具体例」 次に本発明のデータ処理装置による命令の実行手段につ
いていくつかの具体例に従って説明する。
第35図(a)〜(f)にそれぞれ命令列の例を挙げ、各
命令列のパイプライン処理の様子を第36図(a)〜
(f)に示す。
第35図において、コロン(:)の後の文字はフォーマッ
トを、“#”は即値を、“@( )”はカッコ内の値を
アドレスとするメモリ上にオペランドがあることをそれ
ぞれ表す。
第36図はMOV1,MOV2は転送(MOV)命令が2つのステップ
コードに分解されて処理されることを示しており、MOV1
はMOV命令の第1ステップコードを、MOV2はMOV命令の第
2ステップコードをそれぞれ示している。なお、第36図
では説明の簡略化のために前後の命令は省略してある。
第35図(a)は、Qフォーマットの加算命令(ADD:Q)
と減算命令(SUB:Q)とが連続している場合を示してい
る。デスティネーションオペランドは共にレジスタ上に
ある。この場合、双方共に2バイト命令であり、デステ
ィネーションオペランドとして指定されているレジスタ
も異なっているので、2命令の並列実行が可能である。
具体的には、第36図(a)に示す如く、2つの命令が1
つのステップコードとして各パイプラインステージで同
時に処理されてゆく。加算処理がALU53で、減算処理が
サブALU59でそれぞれ実行される。
第35図(b)は、Gフォーマットの転送命令(MOV:G)
とQフォーマットの加算命令(ADD:Q)とが連続してい
る場合である。
MOV命令のソースオペランドとデスティネーションオペ
ランドとは共にメモリ上にある。この場合、MOV命令の
第2ステップコードとADD命令との並列実行が可能であ
る。
具体的には、第36図(b)に示す如く、2つの命令が1
つのステップコードとして各パイプラインステージで同
時に処理されていく。転送処理がALU53で、加算処理が
サブALU59でそれぞれ実行される。この場合、MOV命令の
デスティネーションオペランドのメモリへの書込み処理
はストアバッファで行われる。
第35図(c)は、Rフォーマットの乗算命令(MUL:R)
とQフォーマットの加算命令(ADD:Q)とが連続してい
る場合である。この場合、いずれも2バイト命令であ
り、MUL命令でデスティネーションオペランドとして指
定されているレジスタをADD命令が参照しないので、2
命令の並列実行が可能である。
具体的には、第36図(c)に示す如く、2つの命令が1
つのステップコードとして各パイプラインステージで同
時に処理されていく。Eステージ5では、MUL命令の最
終ステップのサイクルでADD命令に関する加算処理が行
われる。
第35図(d)は、Qフォーマットの算術シフト命令(SH
A:Q)とLフォーマットの減算命令(SUB:L)とが連続し
ている場合であり、オペランドのコンフリクトが起こる
ために、2命令の並列実行が行えない例である。即ちこ
の場合、双方共に2バイト命令であるが、SHA命令で書
換えるレジスタR0の内容をSUB命令が参照するので、2
命令の並列実行は不可能である。
具体的には第36図(d)に示す如く、2つの命令が各々
1つのステップコードとして各パイプラインステージで
処理されていく。
第35図(e)は、Qフォーマットの加算命令(ADD:Q)
とGフォーマットの転送命令(MOV:G)とが連続してい
る場合である。ADD命令,MOV命令のデスティネーション
オペランドは共にメモリ上にある。この場合、ADD命令
とMOV命令の第1ステップコードとの並列実行が可能で
ある。
具体的には、第36図(e)に示し如く、2つの命令が1
つのステップコードとして各パイプラインステージで同
時に処理されていく。加算処理がALU53で、転送処理が
サブALU59でそれぞれ実行される。MOV命令の第1ステッ
プコードではMOV命令のソースオペランドの値がワーキ
ングレジスタに退避される。ADD命令,MOV命令のデステ
ィネーションオペランドのメモリへの書込み処理はスト
アバッファで行われる。
第35図(f)は、Qフォーマットの加算命令(ADD:Q)
とEフォーマットの減算命令(SUB:E)とが連続してい
る場合である。この場合、ADD命令とSUB命令の第1ステ
ップコードとの並列実行が可能である。
具体的には、第36図(f)に示し如く、2つの命令が1
つのステップコードとして各パイプラインステージで同
時に処理されていく。加算処理がALU53で、転送処理が
サブALU59でそれぞれ実行される。SUB命令の第1ステッ
プコードでは、SUB命令のソースオペランドであるリテ
ラルの値がワーキングレジスタに退避される。
以上に述べたように、本発明のデータ処理装置では命令
のデコード段階で複数の命令を同時にデコードし、演算
器等のハードウェアリソースあるいはオペランド等でコ
ンフリクトが起こらないことまでチェックし、複数の命
令が実行ステージ5で並列実行可能な場合には、複数の
命令をまとめて1つのパイプライン処理単位であるステ
ップコードを生成し、後段のパイプラインステージでこ
のステップコードに対する処理を行う。この場合、実行
ステージ5では、複数の命令が並列実行される。
(5)「本発明の他の実施例」 上記実施例では、レジスタ−レジスタ間,リテラル−レ
ジスタ間の演算命令等もサブコードとして生成可能とし
ているため多少複雑な構成となっているが、G−format
あるいはE−formatの命令の第1ステップコードのみを
サブコードとして生成するような場合にはより簡単な構
成で並列実行が実現可能である。
上記実施例では、サブALU59とレジスタファイル52及びS
P演算部49との間をSAバス109,SBバス110,Dバス111の3
つの専用バスで接続しているが、G−formatあるいはE
−formatの命令の第1ステップコードでは第1オペラン
ドの退避が行われるだけなので、SAバス109とワーキン
グレジスタとに結合されたラッチ等の転送経路を設ける
のみでもよいし、ソースオペランド退避用専用のラッチ
を設けて、第2ステップコードの処理時に退避用ラッチ
の内容を参照するようにしてもよい。
また上記実施例では、E−formatの命令の第1ステップ
コードのみをサブコードとして生成する場合にはオペラ
ンドは命令コード中の即値で指定されるので、オペラン
ドがコンフリクトを起こすか否かをチェックする機能は
不要である。
更に、命令2がG−formatの命令であり、第1オペラン
ドとして指定されているレジスタの内容を命令1が書換
える場合、命令1の実行時に演算結果をD0バス108から
命令2の第1オペランドとして指定されたレジスタに書
込むのと同時にワーキングレジスタにも書込むようにす
れば、G−formatの命令でもオペランドのコンフリクト
をチェックする必要はない。またこの場合、命令1がト
ラップを起こしても命令2から再実行すればよいので、
命令1がトラップを起こす可能性のある命令であっても
サブコードを生成することができる。
上記実施例では、命令2がメモリオペランドを持たない
場合についてのみサブコードとして生成可能としている
が、命令1がメモリオペランドを持たない場合には命令
2がメモリオペランドを持ってもよいし、拡張部を持っ
てもよい。但しこの場合、アドレッシングモードをデコ
ードするデコーダが2つ必要になる。命令2のオペラン
ドがメモリ上にある場合、命令2でもバスアクセスに関
してEITを検出する可能性があるが、命令2でEITを検出
した場合にはEITを起こした命令アドレスを得るためにP
C値を補正する必要がある。アドレス加算器を2つ持て
ば命令1と命令2とがそれぞれメモリオペランドを持つ
場合にも対処できるが、制御が大変複雑になる。
また、上記実施例では、2命令を並列実行するためにメ
インのALU53とは別にサブALU59を備え、それぞれ異なる
バスでレジスタファイル52及びSP演算部49と結合してい
るが、ALU53とサブALU59との演算タイミングをずらせて
レジスタファイル52あるいはSP演算部49とALU53間のデ
ータ転送とレジスタファイル52あるいはSP演算部49とサ
ブALU59間のデータ転送とを同一バスを用いて時分割し
て行ってもよい。
上記実施例では、2命令を並列実行するためにメインの
ALU53とは別にサブALU59を設けているが、サブバレルシ
フタ,サブプライオリティエンコーダ等を設けて、シフ
ト命令あるいはビットサーチ命令を他の命令と並列に実
行してもよい。
また上記実施例では、サブALU59とレジスタファイル52,
SP演算部49間をSAバス109,SBバス110,Dバス111の3つの
専用バスにて接続しているが、サブコードを生成可能な
命令を転送命令,1オペランド命令,リテラル−レジスタ
間2オペランド命令に限れば、SBバス110は不要にな
る。また、転送命令でPSWを更新しない命令セットを処
理する際に、転送命令のみをサブコードとして生成する
場合には、サブALU59の代わりにSAバス109とDバス111
に結合されたラッチ等の転送経路を設けるのみでもよ
い。
上記実施例では、メインコードはマイクロ命令により実
行制御し、サブコードはハードワイヤードにデコードし
て実行制御しているが、いずれもマイクロ命令で制御す
るようにしてもよいし、あるいはいずれもハードワイヤ
ードに制御してもよい。
上記実施例では、命令1はメインのデータ演算器で、命
令2はサブALU59でそれぞれ処理しているが、たとえば
命令1がレジスタ−レジスタ間のALU演算命令で、命令
2がレジスタ上のオペランドのシフト命令であるような
場合、バレルシフタ54で命令2の処理を、サブALU59で
命令1をそれぞれ処理するようにしてもよい。
上記実施例では、命令1が拡張データを有する場合は2
命令の並列実行は出来ないが、サブデコーダ32を複数備
えれば、メインデコーダが変位等の拡張部を有する場合
にも2命令を並列実行することが可能になる。
また上記実施例では、2命令の並列実行を可能にしてい
るが、3以上の命令を並列実行することも勿論可能であ
る。
上記実施例では、可変長命令セットを処理対象としてい
るが、RISC(Reduces Instruction Set Computer)のよ
うに固定長命令セットを処理するデータ処理装置が適用
してもよい。RISCでは基本的に演算がレジスタ間で実行
されるので、本発明を適用すればより一層の効果が発揮
される。
本発明は以下の(1)〜(13)項に記載の各実施態様に
従って実施することが可能である。
(1)命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、 複数の演算器を含み、命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
において、 前記命令デコード手段は、 複数の命令にて構成される命令群の各命令を同時にデコ
ードする手段と、 前記命令群内の各命令が参照するオペランドの値をそれ
ぞれの命令に先行する同一命令群内の命令が書換えず、
且つ前記命令群内の各命令が前記複数の演算器の異なる
演算器でそれぞれ実行可能である所定の状態を検出する
検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
検出した場合に、前記命令群の各命令を並列実行すべく
なしてあることを特徴とするデータ処理装置。
(2)命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、 複数の演算器を含み、命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
において、 前記命令デコード手段は、 複数の命令にて構成される命令群の各命令を同時にデコ
ードする手段と、 前記命令群内の各命令が参照するオペランドの値をそれ
ぞれの命令に先行する同一命令群内の命令が書換えず、
且つ前記命令群内の各命令が前記複数の演算器の異なる
演算器でそれぞれ実行可能である所定の状態を検出する
検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
検出した場合に、前記命令群の各命令を並列実行するか
または逐次実行するかのいずれかを選択可能になしてあ
ることを特徴とするデータ処理装置。
(3)命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、 複数の演算器を含み、命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
において、 前記命令デコード手段は、 第1の命令とこの第1の命令に続く第2の命令とを同時
にデコードする手段と、 前記第2の命令が参照するオペランドの値を前記第1の
命令が書換えず、且つ前記第1の命令と前記第2の命令
とが前記複数の演算器の異なる演算器で実行可能な所定
の状態を検出する検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
検出した場合に、前記第1の命令と前記第2の命令とを
並列実行すべくなしてあることを特徴とするデータ処理
装置。
(4)命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
る命令デコード手段と、 複数の演算器を含み、命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
において、 前記命令デコード手段は、 第1の命令とこの第1の命令に続く第2の命令とを同時
にデコードする手段と、 前記第2の命令が参照するオペランドの値を前記第1の
命令が書換えず、且つ前記第1の命令と前記第2の命令
とが前記複数の演算器の異なる演算器で実行可能な所定
の状態を検出する検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
検出した場合に、前記第1の命令と前記第2の命令とを
並列実行するかまたは逐次実行するかのいずれかを選択
可能になしてあることを特徴とするデータ処理装置。
(5)命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコード
し、そのデコード結果を出力する命令デコード手段と、 複数の演算器を含み、前記命令デコード手段から出力さ
れたデコード結果に従って命令を実行する命令実行手段
と を備えたパイプライン処理機構を有するデータ処理装置
において、 前記命令デコード手段は、 一つの命令を1または複数の処理単位に分割してデコー
ドし、各処理単位から一つのデコード結果を出力する手
段と、 第1の命令が一つまたは複数の処理単位に分割され、前
記第1の命令に続く第2の命令が一つの処理単位として
それぞれ処理される場合、前記第1の命令の最後の処理
単位である第1の処理単位と、前記第2の命令の処理単
位である第2の処理単位とを同時にデコードする手段
と、 前記第2の処理単位のデコード結果に対応する命令の処
理時に参照されるオペランドの値を前記第1の処理単位
のデコード結果に対応する命令の実行に際して書換え
ず、且つ前記第1の処理単位のデコード結果に対応する
命令と前記第2の処理単位のデコード結果に対応する命
令とが前記複数の演算器の異なる演算器で実行可能な所
定の状態を検出する検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
検出した場合に、前記第1の処理単位のデコード結果に
対応する命令と前記第2の処理単位のデコード結果に対
応する命令とを並列実行すべくなしてあることを特徴と
するデータ処理装置。
(6)命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコード
し、そのデコード結果を出力する命令デコード手段と、 複数の演算器を含み、前記命令デコード手段から出力さ
れたデコード結果に従って命令を実行する命令実行手段
と を備えたパイプライン処理機構を有するデータ処理装置
において、 前記命令デコード手段は、 一つの命令を1または複数の処理単位に分割してデコー
ドし、各処理単位から一つのデコード結果を出力する手
段と、 第1の命令が一つまたは複数の処理単位に分割され、前
記第1の命令に続く第2の命令が一つの処理単位として
それぞれ処理される場合、前記第1の命令の最後の処理
単位である第1の処理単位と、前記第2の命令の処理単
位である第2の処理単位とを同時にデコードする手段
と、 前記第2の処理単位のデコード結果に対応する命令の処
理時に参照されるオペランドの値を前記第1の処理単位
のデコード結果に対応する命令の実行に際して書換え
ず、且つ前記第1の処理単位のデコード結果に対応する
命令と前記第2の処理単位のデコード結果に対応する命
令とが前記複数の演算器の異なる演算器で実行可能な所
定の状態を検出する検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
検出した場合に、前記第1の処理単位のデコード結果に
対応する命令と前記第2の処理単位のデコード結果に対
応する命令とを並列実行するかまたは逐次実行するかの
いずれかを選択可能になしてあることを特徴とするデー
タ処理装置。
(7)オペランドのアドレス計算方法を指定するオペラ
ンド指定子にて指定されるオペランドを2個有する2オ
ペランド演算命令を処理するデータ処理装置であって、 前記命令デコード手段は、 前記2オペランド演算命令を第1のオペランドのオペラ
ンド指定子を含む第3の処理単位と、第2のオペランド
のオペランド指定子を含む第4の処理単位との二つの処
理単位に分割してデコードする手段と、 前記第3の処理単位をデコードして前記第1のオペラン
ドの退避処理を行うための第1のデコード結果を出力す
る手段と、 前記第4の処理単位をデコードして退避されている前記
第1のオペランドの値と前記第2のオペランドの値とを
用いて命令の演算処理を行うための第2のデコード結果
を出力する手段と、 を備えたことを特徴とする(5)及び(6)項記載のデ
ータ処理装置。
(8)命令コード中の即値で指定される第1のオペラン
ドとオペランドのアドレス計算方法を指定するオペラン
ド指定子で指定される第2のオペランドとの2個のオペ
ランドを有する2オペランド演算命令を処理するデータ
処理装置であって、 前記命令デコード手段は、 前記2オペランド演算命令を第1のオペランドのオペラ
ンド指定子を含む第3の処理単位と、第2のオペランド
のオペランド指定子を含む第4の処理単位との二つの処
理単位に分割してデコードする手段と、 前記第3の処理単位をデコードして前記第1のオペラン
ドの退避処理を行うための第1のデコード結果を出力す
る手段と、 前記第4の処理単位をデコードして退避されている前記
第1のオペランドの値と前記第2のオペランドの値とを
用いて命令の演算処理を行うための第2のデコード結果
を出力する手段と を備えたことを特徴とする(5)及び(6)項記載のデ
ータ処理装置。
(9)命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコード
し、デコード結果を出力する命令デコード手段と、 前記命令デコード手段から出力されたデコード結果に対
応して命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
において、 前記命令デコード手段は、 一つの命令を1または複数の処理単位に分割してデコー
ドし、各処理単位から一つのデコード結果を出力する手
段と、 第1の命令が一つまたは複数の処理単位に分割され、前
記第1の命令に続く第2の命令が複数の処理単位として
それぞれ処理される場合、前記第1の命令の最後の処理
単位である第1の処理単位と、前記第2の命令の最初の
処理単位である第2の処理単位とを同時にデコードする
手段とを備え、 前記命令実行手段は、前記第1の処理単位のデコード結
果に対応する命令と前記第2の処理単位のデコード結果
に対応する命令とを並列実行すべくなしてあることを特
徴とするデータ処理装置。
(10)命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコード
し、デコード結果を出力する命令デコード手段と、 前記命令デコード手段から出力されたデコード結果に対
応して命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
において、 前記命令デコード手段は、 一つの命令を1または複数の処理単位に分割してデコー
ドし、各処理単位から一つのデコード結果を出力する手
段と、 第1の命令が一つまたは複数の処理単位に分割され、前
記第1の命令に続く第2の命令が複数の処理単位として
それぞれ処理される場合、前記第1の命令の最後の処理
単位である第1の処理単位と、前記第2の命令の最初の
処理単位である第2の処理単位とを同時にデコードする
手段とを備え、 前記命令実行手段は、前記第1の処理単位のデコード結
果に対応する命令と前記第2の処理単位のデコード結果
に対応する命令とを並列実行するかまたは逐次実行する
かのいずれかを選択可能になしてあることを特徴とする
データ処理装置。
(11)前記命令デコード手段は、 前記第1の処理単位と前記第2の処理単位とを同時にデ
コードする手段と、 前記第2の処理単位のデコード結果に対応する命令の処
理時に参照するオペランドの値を前記第1の処理単位の
デコード結果に対応する命令の実行時に書換えない所定
の状態を検出する検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
検出した場合に、前記第1の処理単位のデコード結果に
対応する命令と前記第2の処理単位のデコード結果に対
応する命令とを並列実行すべくなしてあることを特徴と
する(9),(10)項に記載のデータ処理装置。
(12)オペランドのアドレスイ計算方法を指定するオペ
ランド指定子にて指定されるオペランドを2個有する2
オペランド演算命令を処理するデータ処理装置であっ
て、 前記命令デコード手段は、 前記2オペランド演算命令を第1のオペランドのオペラ
ンド指定子を含む第3の処理単位と、第2のオペランド
のオペランド指定子を含む第4の処理単位との二つの処
理単位に分割してデコードする手段と、 前記第3の処理単位をデコードして前記第1のオペラン
ドの退避処理を行うための第1のデコード結果を出力す
る手段と、 前記第4の処理単位をデコードして退避されている前記
第1のオペランドの値と前記第2のオペランドの値とを
用いて命令の演算処理を行うための第2のデコード結果
を出力する手段と を備えたことを特徴とする(9)及び(10)項記載のデ
ータ処理装置。
(13)命令コード中の即値で指定される第1のオペラン
ドとオペランドのアドレス計算方法を指定するオペラン
ド指定子で指定される第2のオペランドとの2個のオペ
ランドを有する2オペランド演算命令を処理するデータ
処理装置であって、 前記命令デコード手段は、 前記2オペランド演算命令を第1のオペランドを含む第
3の処理単位と、第2のオペランドのオペランド指定子
を含む第4の処理単位との二つの処理単位に分割してデ
コードする手段と、 前記第3の処理単位をデコードして前記第1のオペラン
ドの退避処理を行うための第1のデコード結果を出力す
る手段と、 前記第4の処理単位をデコードして退避されている前記
第1のオペランドの値と前記第2のオペランドの値とを
用いて命令の演算処理を行うための第2のデコード結果
を出力する手段と を備えたことを特徴とする(9)及び(10)項記載のデ
ータ処理装置。
[発明の効果] 以上に詳述した如く本発明によれば、命令デコード手段
が複数の命令にて構成される命令群を同時にデコード
し、それぞれの命令が参照するオペランドの値をそれぞ
れに先行する同一命令群内の命令が書換えず、且つ命令
実行手段に備えられている異なる演算器により各命令が
実行可能である場合に、命令実行部は複数の命令を並列
実行するので、処理速度が向上すると共に、特別な機能
を付加することなく例外処理を正確に実行し得る。
また本発明のデータ処理装置によれば、命令デコード手
段が第1の命令に関する最後のデコード処理単位と第1
の命令に引続く第2の命令に関する最初のデコード処理
単位を同時にデコードし、命令実行手段が第1の命令に
関する最後のデコード処理単位のデコード結果に対応す
る命令の実行と第2の命令に関する最初のデコード処理
単位のデコード結果に対応する命令の実行を並列に行う
ことが出来るで、処理速度が向上し、高性能なデータ処
理装置を実現することができる。
更に本発明のデータ処理装置によれば、命令を逐次実行
するように選択することも可能であるので、デバッグあ
るいはテスト時に混乱を生じることはない。
そして請求項6,7の発明では例外を簡単なハードウエア
で検出できる。また2命令間で例外処理が起動されない
ように制御する場合はパイプラインで転送するプログラ
ムカウンタの値は先行命令のものだけで足りる。また1
つの命令を処理すると同様の制御で例外関連の処理がで
きる。つまり保持する情報が少なく、これに伴い制御が
簡単になり、ハードウエア量が削減できる。
また請求項8の発明では第1の命令が複数ステップを要
する命令である場合も並列実行できる。
更に請求項9の発明では第1の命令としては全命令が実
行できるようにし、出現頻度が高く簡単な命令のみを第
2の命令として実行できるようにした場合、第1の命令
はマイクロプログラムで制御し、第2の命令はハードワ
イヤードを使うことにより、安価であり、しかも、デバ
ッグが容易であってバグが発見された場合でも改修は容
易である。
これは以下の理由による。即ち複雑な命令を処理するデ
ータ処理装置では、マイクロプログラムによる制御を行
った方が、デバッグを含む実現が容易であり、かつ、バ
グが発見された場合でもマイクロプログラムのみを修正
すれば改訂できる場合が多く、バグ改修の容易さという
点で優れている。しかし、簡単な命令を実行する場合に
は、バグの混入の可能性は少なく、ハードワイヤードで
制御した方が簡単でかつLSI化した際少ない面積で実現
できる場合が多いからである。
【図面の簡単な説明】
第1図は本発明のデータ処理装置のパイプライン処理機
構の構成を示すブロック図、 第2図は本発明のデータ処理装置の全体構成を示すブロ
ック図、 第3図は本発明のデータ処理装置の詳細な構成を示すブ
ロック図、 第4図はそのサブコード有効判定回路の詳細構成図、 第5図は従来のデータ処理装置のパイプライン処理の概
念を示すブロック図、 第6図は本発明のデータ処理装置が有する命令のメモリ
上での命令の並び方を示す模式図、 第7図乃至第15図は本発明のデータ処理装置の命令のフ
ォーマットを示す模式図、 第16図乃至第29図は本発明のデータ処理装置の命令のア
ドレッシングモードの説明のための模式図、 第30図は本発明のデータ処理装置のクロックのタイミン
グを示すタイミングチャート、 第31図は2つのレジスタ間演算を行う短縮形フォーマッ
トの命令が連続してある場合のIバス上の命令コードの
状態を示す模式図、 第32図は本発明のデータ処理装置のサブデコーダのデコ
ード処理対象となる命令の一覧表、 第33図は本発明のデータ処理装置のサブDコードのフォ
ーマットの模式図、 第34図は本発明のデータ処理装置のサブRコードのフォ
ーマットの模式図、 第35図は本発明のデータ処理装置による命令の実行状態
を説明するための命令列の模式図、 第36図は上述の命令列のパイプライン処理の状態を示す
模式図である。 21……命令フェッチ部、22……命令デコード部、23……
PC計算部、24……オペランドアドレス計算部、25……マ
イクロROM部、26……データ演算部、31……メインデコ
ーダ、32……サブデコーダ、34……サブコード有効判定
回路 なお、各図中同一符号は同一又は相当部分を示す。
フロントページの続き (56)参考文献 特開 平1−150935(JP,A) 特開 昭57−29153(JP,A) 特開 昭63−89932(JP,A)

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
    る命令デコード手段と、 それぞれデータを格納するレジスタファイルに結合され
    た第1及び第2演算器を少なくとも含む複数の演算器を
    有し、前記命令デコード手段から出力された演算情報に
    従って命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
    において、 前記命令デコード手段は、 第1の命令をデコードし、前記第1の命令の実行に必要
    な第1の演算情報と、前記第1の命令に引き続く第2の
    命令を前記第2の演算器を用いて前記第1の命令と並列
    に実行することを許可するかどうかを示す並列実行許可
    情報と、前記第1の命令の実行時に命令コード内の1又
    は複数のレジスタ番号フィールドで指定されるレジスタ
    値を更新するかどうかを示すレジスタ値更新情報とを出
    力する第1のデコード手段と、 該第1のデコード手段における前記第1の命令のデコー
    ドと並列に前記第2の命令をデコードし、前記第2の命
    令の実行に必要な第2の演算情報と、前記第2の演算器
    を用いて前記第1の命令と並列に実行することが可能か
    どうかを示す第2命令有効情報と、前記第2の命令の実
    行時に命令コード内の1又は複数のレジスタ番号フィー
    ルドで指定されるレジスタ値を参照するかどうかを示す
    レジスタ値参照情報を出力する第2のデコード手段と、 前記命令フェッチ手段から取り込まれる前記第1及び第
    2の命令のレジスタ番号を指定する複数のレジスタ番号
    フィールドと、前記並列実行許可情報と、前記レジスタ
    値更新情報と、前記第2命令有効情報と、前記レジスタ
    値参照情報とを入力し、前記第2の命令が参照するオペ
    ランドの値を前記第1の命令が書換えず、且つ前記第1
    の命令が前記第2の命令の並列実行を許可しており、前
    記第2の命令が前記第2の演算器を用いて前記第1の命
    令と並列に実行可能である所定の状態を検出する検出手
    段と を備え、 前記検出手段が前記所定の状態を検出した場合に、前記
    命令実行手段は前記命令デコード手段から出力された前
    記第1及び第2の演算情報に基づいて前記第1及び第2
    の命令を並列に実行すべくなしてあることを特徴とする
    データ処理装置。
  2. 【請求項2】命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
    る命令デコード手段と、 複数の演算器を含み、命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
    において、 前記命令デコード手段は、 複数の命令にて構成される命令群の各命令を同時にデコ
    ードする手段と、 前記命令群内の各命令が参照するオペランドの値をそれ
    ぞれの命令に先行する同一命令群内の命令が書換えず、
    且つ前記命令群内の各命令が前記複数の演算器の異なる
    演算器でそれぞれ実行可能である所定の状態を検出する
    検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
    検出した場合に、前記命令群の各命令を並列実行するか
    または逐次実行するかのいずれかを選択可能になしてあ
    ることを特徴とするデータ処理装置。
  3. 【請求項3】命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
    る命令デコード手段と、 それぞれデータを格納するレジスタファイルに結合され
    た第1及び第2演算器を少なくとも含む複数の演算器を
    有し、前記命令デコード手段から出力された演算情報に
    従って命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
    において、 前記命令デコード手段は、 一つの命令を1または複数の処理単位に分割してデコー
    ドし、各処理単位から一つのデコード結果を出力する手
    段と、 第1の命令の最後の処理単位をデコードし、前記第1の
    命令の最後の処理単位の実行に必要な第1の演算情報
    と、第1の命令に引き続く第2の命令の処置単位を前記
    第2の演算器を用いて前記第1の命令の最後の処理単位
    と並列に実行することを許可するかどうかを示す並列実
    行許可情報と、前記第1の命令の最後の処理単位の実行
    時に命令コード内の1又は複数のレジスタ番号フィール
    ドで指定されるレジスタ値を更新するかどうかを示すレ
    ジスタ値更新情報とを出力する第1のデコード手段と、 該第1のデコード手段における前記第1の命令の最後の
    処理単位のデコードと並列に前記第2の命令の処理単位
    をデコードし、前記第2の命令の処理単位の実行に必要
    な第2の演算情報と、前記第2の演算器を用いて前記第
    1の命令の最後の処理単位と並列に実行することが可能
    かどうかを示す第2命令有効情報と、前記第2の命令の
    処理単位の実行時に命令コード内の1又は複数のレジス
    タ番号フィールドで指定されるレジスタ値を参照するか
    どうかを示すレジスタ値参照情報を出力する第2のデコ
    ード手段と、 前記命令フェッチ手段から取り込まれる前記第1及び第
    2の命令のレジスタ番号を指定する複数のレジスタ番号
    フィールドと、前記並列実行許可情報と、前記レジスタ
    値更新情報と、前記第2命令有効情報と、前記レジスタ
    値参照情報とを入力し、前記第2の命令が参照するオペ
    ランドの値を前記第1の命令が書換えず、且つ前記第1
    の命令が前記第2の命令の並列実行を許可しており、前
    記第2の命令の処理単位が前記第2の演算器を用いて前
    記第1の命令の最後の処理単位と並列に実行可能である
    所定の状態を検出する検出手段とを備え、 前記検出手段が前記所定の状態を検出した場合に、前記
    命令実行手段は前記命令デコード手段から出力された前
    記第1及び第2の演算情報に基づいて前記第1の命令の
    最後の処理単位と第2の命令の処理単位を並列に実行す
    べくなしてあることを特徴とするデータ処理装置。
  4. 【請求項4】命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコード
    し、そのデコード結果を出力する命令デコード手段と、 複数の演算器を含み、前記命令デコード手段から出力さ
    れたデコード結果に従って命令を実行する命令実行手段
    と を備えたパイプライン処理機構を有するデータ処理装置
    において、 前記命令デコード手段は、 一つの命令を1または複数の処理単位に分割してデコー
    ドし、各処理単位から一つのデコード結果を出力する手
    段と、 第1の命令が一つまたは複数の処理単位に分割され、前
    記第1の命令に続く第2の命令が一つの処理単位として
    それぞれ処理される場合、前記第1の命令の最後の処理
    単位である第1の処理単位と、前記第2の命令の処理単
    位である第2の処理単位とを同時にデコードする手段
    と、 前記第2の処理単位のデコード結果に対応する命令の処
    理時に参照されるオペランドの値を前記第1の処理単位
    のデコード結果に対応する命令の実行に際して書換え
    ず、且つ前記第1の処理単位のデコード結果に対応する
    命令と前記第2の処理単位のデコード結果に対応する命
    令とが前記複数の演算器の異なる演算器で実行可能な所
    定の状態を検出する検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
    検出した場合に、前記第1の処理単位のデコード結果に
    対応する処理と前記第2の処理単位のデコード結果に対
    応する処理とを並列実行するかまたは逐次実行するかの
    いずれかを選択可能になしてあることを特徴とするデー
    タ処理装置。
  5. 【請求項5】命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコード
    し、デコード結果を出力する命令デコード手段と、 前記命令デコード手段から出力されたデコード結果に対
    応して命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
    において、 前記命令デコード手段は、 一つの命令を1または複数の処理単位に分割してデコー
    ドし、各処理単位から一つのデコード結果を出力する手
    段と、 第1の命令が一つまたは複数の処理単位に分割され、前
    記第1の命令に続く第2の命令が複数の処理単位として
    それぞれ処理される場合、前記第1の命令の最後の処理
    単位である第1の処理単位と、前記第2の命令の最初の
    処理単位である第2の処理単位とを同時にデコードする
    手段とを備え、 前記命令実行手段は、前記第1の処理単位のデコード結
    果に対応する処理と前記第2の処理単位のデコード結果
    に対応する処理とを並列実行するかまたは逐次実行する
    かのいずれかを選択可能になしてあることを特徴とする
    データ処理装置。
  6. 【請求項6】命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
    る命令デコード手段と、 複数の演算器を含み、命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
    において、 前記命令デコード手段は、 第1の命令及び該第1の命令に引き続く第2の命令を同
    時にデコードする手段と、前記第2の命令が参照するオ
    ペランドの値を前記第1の命令が書換えず、前記第1及
    び第2の命令が前記複数の演算器の異なる演算器でそれ
    ぞれ実行可能であり、且つ前記第1の命令が命令の実行
    中に例外を検出し命令実行後例外処理を起動する可能性
    がある命令でない所定の状態を検出する検出手段とを備
    え、 前記命令実行手段は、前記検出手段が前記所定の状態を
    検出した場合に、前記第1及び第2の命令を並列に実行
    すべくなしてあることを特徴とするデータ処理装置。
  7. 【請求項7】命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
    る命令デコード手段と、 複数の演算器を含み、命令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
    において、 前記命令デコード手段は、 第1の命令及び該第1の命令に引き続く第2の命令を同
    時にデコードする手段と、 前記第2の命令が参照するオペランドの値を前記第1の
    命令が書換えず、前記第1及び第2の命令が前記複数の
    演算器の異なる演算器でそれぞれ実行可能であり、且つ
    前記第2の命令が命令の実行中に例外を検出し例外処理
    を起動する可能性がある命令でない所定の状態を検出す
    る検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
    検出した場合に、前記第1及び第2の命令を並列に実行
    すべくなしてあることを特徴とするデータ処理装置。
  8. 【請求項8】命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
    る命令デコード手段と、 複数の演算器を含み、1または複数ステップで1つの命
    令を実行する命令実行手段と を備えたパイプライン処理機構を有するデータ処理装置
    において、 前記命令デコード手段は、 第1の命令及び該第1の命令に引き続く第2の命令を同
    時にデコードする手段と、 前記第2の命令が参照するオペランドの値を前記第1の
    命令が書換えず、前記第1及び第2の命令が前記複数の
    演算器の異なる演算器でそれぞれ実行可能であり、且つ
    前記第2の命令が1ステップで命令が実行できる所定の
    状態を検出する検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
    検出し、且つ前記第1の命令が命令の実行に複数ステッ
    プを要する命令である場合に、前記第1の命令の最終ス
    テップ及び前記第2の命令を並列に実行すべくなしてあ
    ることを特徴とするデータ処理装置。
  9. 【請求項9】命令を格納する記憶手段と、 該記憶手段から命令を取込む命令フェッチ手段と、 該命令フェッチ手段により取込まれた命令をデコードす
    る命令デコード手段と、 複数の演算器と、マイクロプログラムを保持する制御記
    憶と、 マイクロプログラムの実行シーケンスを制御するための
    マイクロシーケンサを有し、命令を実行する命令実行手
    段と を備えたパイプライン処理機構を有するデータ処理装置
    において、 前記命令デコード手段は、第1の命令及び該第1の命令
    に引き続く第2の命令を同時にデコードする手段と、前
    記第2の命令が参照するオペランドの値を前記第1の命
    令が書換えず、且つ前記第1及び第2の命令が前記複数
    の演算器の異なる演算器でそれぞれ実行可能である所定
    の状態を検出する検出手段とを備え、 前記命令実行手段は、前記検出手段が前記所定の状態を
    検出した場合に、マイクロプログラム制御による前記第
    1の命令の実行と、ハードワイヤード制御による前記第
    2の命令の実行を並列に行うべくなしてあることを特徴
    とするデータ処理装置。
JP1229679A 1989-09-04 1989-09-04 データ処理装置 Expired - Fee Related JPH07120284B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP1229679A JPH07120284B2 (ja) 1989-09-04 1989-09-04 データ処理装置
US08/064,727 US5461715A (en) 1989-09-04 1993-05-19 Data processor capable of execution of plural instructions in parallel
US08/721,305 US5745723A (en) 1989-09-04 1996-09-26 Data processing system capable of execution of plural instructions in parallel
US08/759,498 US5812809A (en) 1989-09-04 1996-12-04 Data processing system capable of execution of plural instructions in parallel

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1229679A JPH07120284B2 (ja) 1989-09-04 1989-09-04 データ処理装置

Publications (2)

Publication Number Publication Date
JPH0391029A JPH0391029A (ja) 1991-04-16
JPH07120284B2 true JPH07120284B2 (ja) 1995-12-20

Family

ID=16895993

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1229679A Expired - Fee Related JPH07120284B2 (ja) 1989-09-04 1989-09-04 データ処理装置

Country Status (2)

Country Link
US (1) US5461715A (ja)
JP (1) JPH07120284B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615349A (en) * 1990-09-04 1997-03-25 Mitsubishi Denki Kabushiki Kaisha Data processing system capable of execution of plural instructions in parallel
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
WO1993020505A2 (en) 1992-03-31 1993-10-14 Seiko Epson Corporation Superscalar risc instruction scheduling
KR950701437A (ko) 1992-05-01 1995-03-23 요시오 야마자끼 슈퍼스칼라 마이크로프로세서에서의 명령어 회수를 위한 시스템 및 방법
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5752013A (en) * 1993-06-30 1998-05-12 Intel Corporation Method and apparatus for providing precise fault tracing in a superscalar microprocessor
JP3543181B2 (ja) 1994-11-09 2004-07-14 株式会社ルネサステクノロジ データ処理装置
US5784634A (en) * 1995-06-30 1998-07-21 Lsi Logic Corporation Pipelined CPU with instruction fetch, execution and write back stages
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
US6016543A (en) * 1997-05-14 2000-01-18 Mitsubishi Denki Kabushiki Kaisha Microprocessor for controlling the conditional execution of instructions
US6026479A (en) * 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5729153A (en) * 1980-07-29 1982-02-17 Fujitsu Ltd Control system for instruction processing order
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
JPS6389932A (ja) * 1986-10-03 1988-04-20 Mitsubishi Electric Corp デ−タ処理装置
JPH0810430B2 (ja) * 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
JPH01150935A (ja) * 1987-12-08 1989-06-13 Matsushita Electric Ind Co Ltd 中央演算装置
US5099421A (en) * 1988-12-30 1992-03-24 International Business Machine Corporation Variable length pipe operations sequencing
US5148528A (en) * 1989-02-03 1992-09-15 Digital Equipment Corporation Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length

Also Published As

Publication number Publication date
US5461715A (en) 1995-10-24
JPH0391029A (ja) 1991-04-16

Similar Documents

Publication Publication Date Title
JP2507638B2 (ja) デ―タ処理装置
JP2761688B2 (ja) データ処理装置
US6058471A (en) Data processing system capable of executing groups of instructions in parallel
JPH02155037A (ja) デジタルコンピュータに於けるパイプライン化された処理ユニットの動作方法
JP3543181B2 (ja) データ処理装置
JPH0766324B2 (ja) データ処理装置
JPH04260950A (ja) キャッシュメモリ装置
US5502827A (en) Pipelined data processor for floating point and integer operation with exception handling
JPH081599B2 (ja) データ処理装置
JPH0810428B2 (ja) データ処理装置
JP2847974B2 (ja) データ処理装置
JPH081602B2 (ja) データ処理装置
JPH07120278B2 (ja) データ処理装置
JPH07120284B2 (ja) データ処理装置
JP3345787B2 (ja) データ処理装置
JP2710994B2 (ja) データ処理装置
US5745723A (en) Data processing system capable of execution of plural instructions in parallel
JP2504235B2 (ja) デ―タ処理装置
JPH0769806B2 (ja) データ処理装置
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP2928879B2 (ja) データ処理装置
JPH0769814B2 (ja) パイプライン処理機構を持つデータ処理装置
JPH0769801B2 (ja) データ処理装置

Legal Events

Date Code Title Description
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees