JP3670668B2 - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP3670668B2 JP3670668B2 JP53180098A JP53180098A JP3670668B2 JP 3670668 B2 JP3670668 B2 JP 3670668B2 JP 53180098 A JP53180098 A JP 53180098A JP 53180098 A JP53180098 A JP 53180098A JP 3670668 B2 JP3670668 B2 JP 3670668B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- flag
- information
- data processing
- 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 - Lifetime
Links
- 238000012545 processing Methods 0.000 title claims description 329
- 230000005764 inhibitory process Effects 0.000 claims description 50
- 230000001629 suppression Effects 0.000 claims description 47
- 239000002131 composite material Substances 0.000 claims description 17
- 150000001875 compounds Chemical class 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 description 84
- 238000010586 diagram Methods 0.000 description 69
- 238000012546 transfer Methods 0.000 description 48
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 31
- 238000000034 method Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 238000006073 displacement reaction Methods 0.000 description 15
- 101150099915 Rsrc2 gene Proteins 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 101150043159 Rsrc1 gene Proteins 0.000 description 7
- 230000006872 improvement Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 101100341026 Caenorhabditis elegans inx-2 gene Proteins 0.000 description 2
- 101100341029 Caenorhabditis elegans inx-3 gene Proteins 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F9/355—Indexed addressing
- G06F9/3552—Indexed addressing using wraparound, e.g. modulo or circular addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本発明は、高性能なデータ処理装置に関するものであり、特に、演算結果が反映されたフラグに基づき条件実行を行うデータ処理装置に関する。
背景技術
データ処理装置において、性能を向上するために、パイプライン処理がよく用いられる。パイプライン処理において性能向上を妨げる大きな要因の1つとして、分岐の実行によるオーバーヘッドがある。これについては、様々な工夫がなされているが、その1つとして、命令の条件実行がある。
32ビットRISCプロセッサであるARM(VLSI Technology)では、全命令の命令コードに4ビットの実行条件指定フィールドを設けており、全命令を条件実行できる。例えば、ある条件が成立した場合にのみ1つの命令を実行する場合、分岐を起こすことなしに処理できる。無条件実行を行う場合には、常に実行することをこの4ビットのフィールドの1つのビットパターンで指定する。
このように、ARM等のいくつかのプロセッサでは、多くの命令を条件実行可能にすることにより分岐のペナルティを削減し、性能向上、消費電力の低減を図っている。しかし、全命令で条件実行を行うように設定すると、全命令に実行条件を指定するフィールドが必要となるため、命令長が長くなる。
特に組み込み用のプログラムをROM化し内蔵する場合、コードサイズの低減が重要になる。コードサイズの低減のため、無理に命令長を抑えすぎると、実際の命令を記述する領域が実行条件指定フィールド分さらに少なくなるため、エンコードできる命令数が少なくなる。このように、条件指定フィールドを全命令に備える場合、コードサイズが大きくなってしまうという問題点があった。
また、16ビット固定小数点DSPであるTMS320C54xシリーズ(TI)では、条件が成立した場合のみ次の命令(もしくは引き続く2命令)を実行することを指定するXC命令を備えることにより、分岐のペナルティを削減している。この技術は、実行条件の指定に1クロックサイクルを要するため、効果が小さい。また、プロセッサで使われているスーパースケーラ、VLIW等の高度な並列処理の実現が困難であり、かつ、XC命令直後の外部割り込みにも制限がかかる等の問題点があった。
多くのデータ処理装置では、演算結果や比較結果はフラグとしてプロセッサ状態語に保持され、条件分岐命令や条件トラップ命令の実行条件としてこのフラグを参照可能である。このフラグは、一般的に1回の演算結果もしくは比較結果の情報が保持される。しかし、複数の演算結果の組み合わせや、直前の演算以外の演算結果が条件として参照できる方がコード効率の削減、分岐によるペナルティの削減に役立つ。また、作業用として使用するレジスタの数も削減可能である。
例えば、プロセッサPowerPC(IBM)では、4ビットのフラグからなるフラグ群8組からなる条件レジスタを備え、比較命令でどのフラグ群に演算結果を反映するかを指定でき、かつ、条件分岐命令等で任意のフラグが参照できるように工夫されている。フラグ間の論理演算も可能である。しかし、比較命令で比較結果を格納するフラグ群や、条件分岐命令で分岐条件の判定で参照するフラグを指定するためのフィールドが必要となり、フィールド領域分、命令長が長くなる。無理に命令長を抑えようとすると、短い命令にエンコードできる命令数が少なくなり、プロセッサARM同様、コードサイズが大きくなってしまうという問題点があった。
また、いくつかのプロセッサではブール代数を効率よく扱うために、条件が真の場合には“1”を偽の場合には“0”をセットする命令を備える。例えば、プロセッサx86シリーズ(Intel)には、SETcc命令を備える。しかし、これらの命令では1つの条件しか判定できないため、複数の条件の複合条件が指定される場合等、複雑な式を効率よく処理できないという別の問題点があった。
発明の開示
この発明は、上記のような問題点を解決するためになされたものであり、コード効率が良く、かつ、条件実行により分岐のペナルティを削減できる、高性能なデータ処理装置を得ることを目的とする。
命令コードサイズの小さい命令セットで条件実行を実現し、分岐のペナルティを削減できる、高性能なデータ処理装置を得ることを目的とする。
本発明に係るデータ処理装置の第1の態様は、第1及び第2の命令を規定した第1及び第2の命令コードを含む並列処理命令を受ける装置であって、前記第1の命令コードをデコードして第1のデコード結果を出力する第1のデコーダと、前記第2の命令コードをデコードして第2のデコード結果を出力する第2のデコーダと、フラグ情報を格納するフラグ情報格納手段と、前記第1のデコード結果に基づき、前記第1の命令の実行制御を行う第1の実行制御手段と、前記第2のデコード結果に基づき、前記第2の命令の実行制御を行う第2の実行制御手段と、前記第1の命令が前記フラグ情報に基づく第2の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第2の命令用実行条件を満足するか否かに基づき、前記第2の命令を実行するか抑止するかを制御する第2の命令用実行抑止情報を前記第2の実行制御手段に出力する第1の実行条件判定手段とを備え、前記第2の実行制御手段は、前記第2の命令用実行抑止情報の指示に基づき、前記第2の命令の実行あるいは抑止制御を行っている。
また、データ処理装置の第2の態様のように、前記第2の命令が前記フラグ情報に基づく第1の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第1の命令用実行条件を満足するか否かに基づき、前記第1の命令を実行するか抑止するかを制御する第1の命令用実行抑止情報を前記第1の実行制御手段に出力する第2の実行条件判定手段をさらに備え、前記第1の実行制御手段は、前記第1の命令用実行抑止情報の指示に基づき、前記第1の命令の実行あるいは抑制制御を行ってもよい。
また、データ処理装置の第3の態様のように、前記並列処理命令は、第3及び第4の命令を規定した第3及び第4の命令コードをさらに含み、前記第3の命令コードをデコードして第3のデコード結果を出力する第3のデコーダと、前記第4の命令コードをデコードして第4のデコード結果を出力する第4のデコーダと、前記第3のデコード結果に基づき、前記第3の命令の実行制御を行う第3の実行制御手段と、前記第4のデコード結果に基づき、前記第4の命令の実行制御を行う第4の実行制御手段と、前記第3の命令が、前記フラグ情報に基づく第4の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第4の命令用実行条件を満足するか否かに基づき、前記第4の命令を実行するか抑止するかを制御する第4の命令用実行抑止情報を前記第4の実行制御手段に出力する第3の実行条件判定手段とをさらに備え、前記第4の実行制御手段は、前記第4の命令用実行抑止情報の指示に基づき、前記第4の命令の実行あるいは抑止制御を行ってもよい。
また、データ処理装置の第4の態様のように、前記並列処理命令は、第3の命令を規定した第3の命令コードをさらに含み、前記第3の命令コードをデコードして第3のデコード結果を出力する第3のデコーダと、前記第3のデコード結果に基づき、前記第3の命令の実行制御を行う第3の実行制御手段とをさらに備え、前記第1の実行条件判定手段は、前記第1の命令が、前記第2の命令用実行条件とともに前記フラグ情報に基づく第3の命令用実行条件をも規定した実行条件指定命令の場合、前記フラグ情報が前記第3の命令用実行条件を満足するか否かに基づき、前記第3の命令を実行するか抑止するかを制御する第3の命令用実行抑止情報を前記第3の実行制御手段に出力し、前記第3の実行制御手段は、前記第3の命令用実行抑止情報の指示に基づき、前記第3の命令の実行あるいは抑止制御を行ってもよい。
また、データ処理装置の第5の態様にように、前記第1の命令が実行条件指定命令の場合、前記第1の命令コード中に前記第2の命令用実行条件及び前記第3の命令用実行条件はそれぞれ独立して記述されてもよい。
また、データ処理装置の第6の態様のように、前記第1の命令が実行条件指定命令の場合、前記第1の命令コード中に前記第2の命令用実行条件及び前記第3の命令用実行条件はそれぞれ一部重複して記述され、前記第2の命令用実行条件は共通実行条件と第2の命令用固有実行条件とから構成され、前記第3の命令用実行条件は前記共通実行条件と第3の命令用固有実行条件とから構成されてもよい。
また、データ処理装置の第7の態様のように、前記第1の命令が実行条件指定命令の場合、前記第1の命令コード中に前記第2の命令用実行条件及び前記第3の命令用実行条件に共通な共通実行条件が記述され、前記第1の実行条件判定手段は、前記共通実行条件を満足する場合に前記第2の命令の実行を指示する前記第2の命令用実行抑止情報を出力するとともに前記第3の命令の抑止を指示する前記第3の命令用実行抑止情報を出力し、前記共通実行条件を満足しない場合に前記第2の命令の抑止を指示する前記第2の命令用実行抑止情報を出力するとともに前記第3の命令の実行を指示する前記第3の命令用実行抑止情報を出力するようにしてもよい。
また、データ処理装置の第8の態様のように、前記フラグ情報は第1及び第2のフラグ情報を含み、前記実行条件指定命令は、前記第1のフラグ情報及び前記第2のフラグ情報で決定される複合条件からなる実行条件を指定する命令であってもよい。
この発明に係るデータ処理装置の第9の態様は、フラグ情報の更新を指示するフラグ更新命令及び前記フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能な装置であって、前記フラグ情報を格納するフラグ情報格納手段と、実行対象の命令が前記フラグ更新命令であった場合、該フラグ更新命令に基づきフラグ更新に関連したフラグ更新関連情報を前記フラグ情報格納手段に出力し、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報の内容に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段とを備え、前記フラグ情報は、それぞれが少なくとも1つのフラグの情報を含む第1及び第2のフラグ情報を有し、前記フラグ情報格納手段は、前記フラグ更新関連情報に基づき前記第1のフラグ情報を更新する際、前記第2のフラグ情報を更新前の前記第1のフラグ情報に更新してもよい。
また、データ処理装置の第10の態様のように、前記第1のフラグ情報は複数のフラグの情報を含み、前記第2のフラグ情報は複数のフラグの情報を含んでもよい。
また、データ処理装置の第11の態様のように、前記フラグ情報は第3のフラグ情報をさらに有し、前記フラグ情報格納手段は、前記第2のフラグ情報を更新する際、前記第3のフラグ情報を更新前の前記第2のフラグ情報に更新してもよい。
この発明に係るデータ処理装置の第12の態様はフラグ情報の更新を指示するフラグ更新命令及び前記フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能な装置であって、前記フラグ情報を格納するフラグ情報格納手段と、実行対象の命令が前記フラグ更新命令であった場合、該フラグ更新命令に基づきフラグ更新に関連したフラグ更新関連情報を前記フラグ情報格納手段に出力し、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段とを備え、前記フラグ情報は、それぞれが少なくとも1つのフラグの情報を含む第1及び第2のフラグ情報と、前記第1及び第2のフラグ情報のうち更新対象となるフラグ情報を特定する更新対象フラグ情報を含み、
前記フラグ情報格納手段は、前記フラグ更新関連情報に基づき、前記第1及び第2のフラグ情報のうち前記更新対象フラグ情報が指示するフラグ情報を更新する。
また、データ処理装置の第13の態様のように、前記第1のフラグ情報は複数のフラグの情報を含み、前記第2のフラグ情報は複数のフラグの情報を含んでもよい。
また、データ処理装置の第14の態様のように、前記フラグ制御実行命令は前記第2のフラグ情報のみに基づき実行内容が決定される命令を含んでもよい。
また、データ処理装置の第15の態様のように、前記フラグ制御実行命令は、前記第1のフラグ情報及び前記第2のフラグ情報による複合条件に基づき実行内容が決定される命令を含んでもよい。
この発明に係るデータ処理装置の第16の態様は、フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能な装置であって、前記フラグ情報を格納するフラグ情報格納手段と、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報の内容に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段とを備え、前記フラグ情報は、それぞれが少なくとも1つのフラグの情報を含む第1及び第2のフラグ情報を有し、前記フラグ制御実行命令は、前記第1及び第2のフラグ情報で決定される複合条件に基づき、該複合条件成立時に第1の値を所定の格納部に書き込み、不成立時に第2の値を前記所定の格納部に書き込む命令を含んできる。
また、データ処理装置の第17の態様のように、前記第1のフラグ情報は複数のフラグの情報を含み、前記第2のフラグ情報は複数のフラグの情報を含んでもよい。
また、データ処理装置の第18の態様のように、前記所定の格納部は、レジスタ、アキュームレータあるいはメモリを含んでもよい。
この発明に係るデータ処理装置の第1の態様において、第1の実行条件判定手段は、第1の命令がフラグ情報に基づく第2の命令用実行条件を規定した実行条件指定命令の場合、フラグ情報が第2の命令用実行条件を満足するか否かに基づき、第2の命令を実行するか抑止するかを制御する第2の命令用実行抑止情報を第2の実行制御手段に出力し、第2の実行制御手段は、第2の命令用実行抑止情報の指示に基づき、第2の命令の実行あるいは抑止制御を行っている。
したがって、第1の命令が実行条件指定命令の場合、第1の命令コードに第2の命令の実行条件を記述することにより、第1の命令コードをフルに活用して第2の命令の対する様々な実行条件を設定することができるため、その分、分岐命令を用いた処理を減らすことができ、分岐ペナルティの低減化を図ることができる。
また、第1の命令が実行条件指定命令の場合、第2の命令の実行条件を第2の命令コード中に記述する必要のない分、第2の命令コードのコードサイズを小さくすることができる。その結果、本データ処理装置で実行可能な命令を用いて作成されるプログラム容量の低減に伴いコストの低減化を図ることができる。
また、第1の命令を実行条件指定命令として、多様な第2の命令の実行条件を設定することにより、所定の処理を効率的に実行できるため、実現するのに必要なデータ処理装置のクロックサイクル数を減少させて消費電力の低減を図ることができる。
また、データ処理装置の第2の態様において、第2の実行条件判定手段は、第2の命令がフラグ情報に基づく第1の命令用実行条件を規定した実行条件指定命令の場合、フラグ情報が第1の命令用実行条件を満足するか否かに基づき、第1の命令を実行するか抑止するかを指示する第1の命令用実行抑止情報を第1の実行制御手段に出力し、第1の実行制御手段は、第1の命令用実行抑止情報の指示に基づき、第1の命令の実行あるいは抑止制御している。
したがって、第2の命令が実行条件指定命令の場合も、第2の命令コードに第1の命令の実行条件を記述することにより、第2の命令コードをフルに活用して第1の命令に対する様々な実行条件を設定することができ、第1の態様以上に、分岐ペナルティの低減、コストの低減及び消費電力の低減を図ることができる。
また、データ処理装置の第3の態様において、第3の実行条件判定手段は、第3の命令が、フラグ情報に基づく第4の命令用実行条件を規定した実行条件指定命令の場合、フラグ情報が第4の命令用実行条件を満足するか否かに基づき、第4の命令を実行するか抑止するかを指示する第4の命令用実行抑止情報を第4の実行制御手段に出力し、第4の実行制御手段は、第4の命令用実行抑止情報の指示に基づき、第4の命令の実行あるいは抑止制御を行っている。
したがって、第3の命令が実行条件指定命令の場合、第3の命令コードに第4の命令の実行条件を記述することにより、第3の命令コードをフルに活用して第4の命令の対する様々な実行条件を設定することができるため、第1及び第2の態様以上に、分岐ペナルティの低減、コストの低減及び消費電力の低減を図ることができる。
また、データ処理装置の第4の態様において、第1の実行制御手段は、第1の命令が、第2の命令用実行条件とともにフラグ情報に基づく第3の命令用実行条件をも規定した実行条件指定命令の場合、フラグ情報が第3の命令用実行条件を満足するか否かに基づき、第3の命令を実行するか抑止するかを指示する第3の命令用実行抑止情報を第3の実行制御手段に出力し、第3の実行制御手段は、第3の命令用実行抑止情報の指示に基づき、第3の命令の実行あるいは抑止制御を行っている。
その結果、データ処理装置の第4の態様は、1つの実行条件指定命令(第1の命令)により、2つの命令(第2及び第3の命令)の実行及び抑止を制御することができるため、効率的な実行条件指定を行うことができる。
また、データ処理装置の第5の態様において、第1の命令が実行条件指定命令の場合、第1の命令コード中に第2の命令用実行条件及び第3の命令用実行条件はそれぞれ独立して記述されるため、第2及び第3の命令用実行条件を固有に設定することができる。
また、データ処理装置の第6の態様において、第1の命令が実行条件指定命令の場合、第1の命令コード中に第2の命令用実行条件及び第3の命令用実行条件はそれぞれ一部重複して記述されるため、第1の命令コードを有効に活用しながら、第2及び第3の命令用実行条件を固有に設定することができる。
また、データ処理装置の第7の態様において、第1の実行条件判定手段は、共通実行条件を満足する場合に第2の命令の実行を指示する第2の命令用実行抑止情報を出力するとともに第3の命令の抑止を指示する第3の命令用実行抑止情報を出力し、共通実行条件を満足しない場合に第2の命令の抑止を指示する第2の命令用実行抑止情報を出力するとともに第3の命令の実行を指示する第3の命令用実行抑止情報を出力するため、条件分岐命令を伴う一連の処理を第1の実行条件判定手段の判定に基づき一括して行うことができる。
また、データ処理装置の第8の態様において、第1のフラグ情報は第1及び第2の情報を含み、実行条件指定命令は、第1のフラグ情報及び第2のフラグ情報で決定される複合条件からなる実行条件を指定する命令であるため、複雑な複合条件からなる実行条件を指定することができる。
この発明に係るデータ処理装置の第9の態様のフラグ情報格納手段は、フラグ更新関連情報に基づき第1のフラグ情報を更新する際、第2のフラグ情報を更新前の第1のフラグ情報に更新するため、第1のフラグ情報の更新が行われると同時に、第2のフラグ情報の更新も行われる。
したがって、フラグ更新命令中に更新対象のフラグ情報を指定することなく、フラグ更新関連情報をフラグ情報格納手段に与えるだけで、第1及び第2のフラグ情報を更新することができる。
その結果、第1及び第2のフラグ情報に関して変更対象のフラグ情報の指定領域を省略できる分、フラグ更新命令の命令コードのコードサイズを小さくすることができるため、コードサイズが小さいフラグ更新命令で第1及び第2のフラグ情報を更新することができる。
また、データ処理装置の第10の態様において、第1のフラグ情報は複数のフラグの情報を含み、第2のフラグ情報は複数のフラグの情報を含むため、1回のフラグ更新関連情報をフラグ情報格納手段に与えるだけで、第1及び第2のフラグ情報それぞれ複数のフラグの情報を一括して更新することができる。
また、データ処理装置の第11の態様において、フラグ情報格納手段は、第2のフラグ情報を更新する際、第3のフラグ情報を更新前の第2のフラグ情報に更新するため、フラグ更新命令中に更新対象のフラグ情報を指定することなく、フラグ更新関連情報をフラグ情報格納手段に与えるだけで、第1〜第3のフラグ情報を更新することができる。
その結果、第1〜第3のフラグ情報に関して更新対象のフラグ情報を指定領域を省略できる分、フラグ更新命令の命令コードのコードサイズを小さくすることができるため、コードサイズが小さいフラグ更新命令で第1〜第3のフラグ情報を更新することができる。
また、データ処理装置の第12の態様において、フラグ情報は、第1及び第2のフラグ情報と、第1及び第2のフラグ情報のうち更新対象となるフラグ情報を特定するフラグ特定フラグの情報を含み、フラグ情報格納手段は、フラグ更新関連情報に基づき、第1及び第2のフラグ情報のうち更新対象フラグ情報が指示するフラグ情報を更新している。
したがって、更新対象フラグ情報を適宜設定することにより、フラグ更新命令内に更新対象のフラグ情報を特定する情報を領域を設けることなく、更新対象のフラグ情報を意図的に決定することができる。
また、データ処理装置の第13の態様において、第1のフラグ情報は複数のフラグの情報を含み、第2のフラグ情報は複数のフラグの情報を含むため、1回のフラグ更新関連情報をフラグ情報格納手段に与えるだけで、第1及び第2のフラグ情報のうち更新対象フラグ情報が指示する複数のフラグの情報を更新することができる。
また、データ処理装置の第14の態様において、フラグ制御実行命令は第2のフラグ情報のみに基づき実行内容が決定される命令を含んでおり、第2のフラグ情報のみを用いた特殊な条件に基づく命令の実行制御が可能となる。
また、データ処理装置の第15の態様において、フラグ制御実行命令は第1のフラグ情報及び第2のフラグ情報による複合条件に基づき実行内容が決定される命令を含むため、複雑な複合条件に基づく命令の実行制御が可能となる。
また、データ処理装置の第16の態様において、フラグ制御実行命令は、第1及び第2のフラグ情報で決定される複合条件に基づき、該複合条件成立時に第1の値を所定の格納部に書き込み、不成立時に第2の値を書き込む命令を含むため、高度な書き込み命令を実行することができる。
また、データ処理装置の第17の態様において、第1のフラグ情報は複数のフラグの情報を含み、第2のフラグ情報は複数のフラグの情報を含むため、上記複合条件をさらに複雑した、より高度な書き込み命令を実行することができる。
また、データ処理装置の第18の態様において、所定の格納部は、レジスタ、アキュームレータあるいはメモリを含むため、レジスタ、アキュームレータあるいはメモリに対する高度な書き込み命令を実行することができる。
本発明に係るデータ処理装置の第19の態様は、複数の命令コードを含むプログラムを実行する装置であって、前記複数の命令コードによって各々定められた命令を実行する命令実行部と、前記複数の命令コードに応じて前記命令実行部を制御する制御部とを備え、前記制御部は、所定のフォーマットを有するコードの第1フィールドが所定のビットパターンを有しているか否かを判断するため、前記所定のフォーマットを有するコードをデコードするデコーダと、前記第1フィールドが前記所定のビットパターンを有することが前記デコーダによって判断されたとき、前記複数の命令コードの実行条件が満足しているか否かを前記所定のフォーマットを有するコードの前記第1フィールドと異なる第2フィールドによって判定する実行条件判定手段とを備え、前記制御部は、前記命令実行部が前記実行条件判定手段による判定に基づいた命令の各々を実行することを許可するか否かを制御している。
データ処理装置。
本発明に係るデータ処理装置の第20の態様は、第1の命令コードと第1の命令コードとは異なる複数の命令コードを含むプログラムを実行する装置であって、前記複数の命令コードによりそれぞれ指定される命令を実行する命令実行部と、前記複数の命令コードに従って前記命令実行部を制御する制御部とを備え、前記制御部は、前記第1の命令コードの第1フィールドが予め定められた特定のビットパターンであるか否かを判断するために前記第1の命令コードをデコードするデコーダと、前記デコーダにより前記第1フィールドが前記特定のビットパターンであると判断されたとき、前記第1の命令コードの前記第1フィールドとは異なる第2フィールドによって指定される前記複数の命令コードの実行条件が成立するか否かを判定する実行条件判定手段を備え、前記制御部は、前記実行条件判定手段による判定に基づき、前記命令実行部が前記複数の命令コードにより指定される各々の命令を実行させるか否かを制御している。
また、データ処理装置の第21の態様のように、前記第1の命令コードの前記第2フィールドは、前記複数の命令コードによって指定される命令の実行条件に共通する共通実行条件指定フィールドを含んでもよい。
また、データ処理装置の第22の態様のように、前記第1の命令コードの前記第2フィールドは、前記複数の命令コードによって指定される命令の実行条件をそれぞれ個別に指定する複数の実行条件指定フィールドを含んでもよい。
また、データ処理装置の第23の態様のように、前記命令実行部は、前記複数の命令コードによって指定される命令を並列に実行してもよい。
本発明に係るデータ処理装置の第24の態様は、第1及び第2の命令コードを含む並列処理命令を処理する装置であって、前記第1の命令コードをデコードして第1のデコード結果を出力する第1のデコーダと、前記第2の命令コードをデコードして第2のデコード結果を出力する第2のデコーダと、フラグ情報を格納するフラグ情報格納手段と、前記第2のデコード結果に基づき、前記第2の命令コードで規定される命令の実行制御を行う第1の実行制御手段と、前記第1のデコード結果により前記第1の命令コードが前記フラグ情報に基づく第1の命令実行条件を指定する実行条件指定命令コードであると判明した場合、前記フラグ情報が前記第1の命令実行条件を満足するか否かに基づき、前記第2の命令コードで規定される命令を実行するか抑止するかを制御する第1の命令実行抑止情報を前記第1の実行制御手段に出力する実行条件判定手段とを備え、前記第1の実行制御手段は、前記第1の命令実行抑止情報の指示に基づき、前記第2の命令コードで規定される命令の実行あるいは抑止制御を行っている。
また、データ処理装置の第25の態様のように、前記並列処理命令は、第3の命令コードをさらに含み、前記第3の命令コードをデコードして第3のデコード結果を出力する第3のデコーダと、前記第3のデコード結果に基づき、前記第3の命令コードで規定される命令の実行制御を行う第2の実行制御手段とをさらに備え、前記実行条件判定手段は、前記第1のデコード結果により前記第1の命令コードが前記第1の命令実行条件とともに前記フラグ情報に基づく第2の命令実行条件を指定する実行条件指定命令コードであると判明した場合、前記フラグ情報が前記第2の命令実行条件を満足するか否かに基づき、前記第3の命令コードで規定される命令を実行するか抑止するかを制御する第2の命令実行抑止情報を前記第2の実行制御手段に出力し、前記第2の実行制御手段は、前記第2の命令実行抑止情報の指示に基づき、前記第3の命令コードで規定される命令の実行あるいは抑止制御を行ってもよい。
【図面の簡単な説明】
図1は、この発明の実施の形態1のデータ処理装置のレジスタセットを表す説明図である。
図2は、この発明の実施の形態1のデータ処理装置のプロセッサステータスワードの構成を示す説明図である。
図3は、この発明の実施の形態1のデータ処理装置の命令フォーマットを示す説明図である。
図4は、この発明の実施の形態1のデータ処理装置のショートフォーマットの2オペランド命令の命令フォーマットを示す説明図である。
図5は、この発明の実施の形態1のデータ処理装置のショートフォーマットの分岐命令の命令フォーマットを示す説明図である。
図6は、この発明の実施の形態1のデータ処理装置のロングフォーマットの3オペランド命令やロード/ストア命令の命令フォーマットを示す説明図である。
図7は、この発明の実施の形態1のデータ処理装置の右コンテナにオペレーションコードを持つロングフォーマットの命令の命令フォーマットを示す説明図である。
図8は、この発明の実施の形態1のデータ処理装置の構成を示すブロック図である。
図9は、この発明の実施の形態1のデータ処理装置の第1演算部の詳細を示すブロック図である。
図10は、この発明の実施の形態1のデータ処理装置のPC部の詳細を示すブロック図である。
図11は、この発明の実施の形態1のデータ処理装置の第2演算部の詳細ブロック図である。
図12は、この発明の実施の形態1のデータ処理装置のパイプライン処理を示す模式図である。
図13は、この発明の実施の形態1のデータ処理装置のロードオペランド干渉を起こす場合のパイプラインの状態を示す説明図である。
図14は、この発明の実施の形態1のデータ処理装置の演算ハードウェア干渉を起こす場合のパイプラインの状態を示す説明図である。
図15は、この発明の実施の形態1のデータ処理装置のCMPEQ命令のビット割り付けを示す説明図である。
図16は、この発明の実施の形態1のデータ処理装置のCMP命令のビット割り付けを示す説明図である。
図17は、この発明の実施の形態1のデータ処理装置のショートフォーマットのCMPI命令のビット割り付けを示す説明図である。
図18は、この発明の実施の形態1のデータ処理装置のロングフォーマットのCMPI命令のビット割り付けを示す説明図である。
図19は、この発明の実施の形態1のデータ処理装置のCPFG命令のビット割り付けを示す説明図である。
図20は、この発明の実施の形態1のデータ処理装置のPSW部を示すブロック図である。
図21は、この発明の実施の形態1のデータ処理装置の条件転送命令のビット割り付けを示す説明図である。
図22は、この発明の実施の形態1のデータ処理装置のショートフォーマットの条件分岐命令のビット割り付けを示す説明図である。
図23は、この発明の実施の形態1のデータ処理装置のショートフォーマットの条件セット命令のビット割り付けを示す説明図である。
図24は、この発明の実施の形態1のデータ処理装置のロングフォーマットの条件分岐命令のビット割り付けを示す説明図である。
図25は、この発明の実施の形態1のデータ処理装置のロングフォーマットの条件セット命令のビット割り付けを示す説明図である。
図26は、この発明の実施の形態1のデータ処理装置の実行条件指定命令のビット割り付けを示す説明図である。
図27は、この発明の実施の形態1のデータ処理装置の制御部内の実行条件判定に関する部分を詳細に示したブロック図である。
図28は、この発明の実施の形態1のデータ処理装置のEXEF0T命令とMV2W命令とを並列に実行する場合の命令コードを示す説明図である。
図29は、この発明の実施の形態1のデータ処理装置のEXETAT命令とST命令とを並列に実行する場合の命令コードを示す説明図である。
図30は、この発明の実施の形態1のデータ処理装置のプログラム例を示す説明図である。
図31は、この発明の実施の形態1のデータ処理装置のプログラム例でループ内のリピートブロックの命令メモリの内容を示す説明図である。
図32は、この発明の実施の形態1のデータ処理装置のプログラム例で内蔵データメモリ上のデータの割り付けを示す説明図である。
図33は、この発明の実施の形態1のデータ処理装置の別のプログラム例を示す説明図である。
図34は、この発明の実施の形態2のデータ処理装置のプロセッサステータスワードの構成を示す説明図である。
図35は、この発明の実施の形態2のデータ処理装置の実行条件指定命令の命令ビット割り付けを示す説明図である。
図36は、この発明の実施の形態2のデータ処理装置のロングフォーマットの条件分岐命令のビット割り付けを示す説明図である。
図37は、この発明の実施の形態2のデータ処理装置のロングフォーマットの条件セット命令のビット割り付けを示す説明図である。
図38は、この発明の実施の形態2のデータ処理装置の制御部内でフラグの更新及び実行条件判定を行う部分を詳細に示した模式図である。
図39は、この発明の実施の形態3のデータ処理装置のショートフォーマットの比較命令のビット割り付けを示す説明図である。
図40は、この発明の実施の形態4のデータ処理装置のショートフォーマットの比較命令のビット割り付けを示す説明図である。
図41は、この発明の実施の形態4のデータ処理装置のロングフォーマットの比較命令のビット割り付けを示す説明図である。
図42は、この発明の実施の形態4のデータ処理装置のPSW部のフラグ更新を行う部分を詳細に示したブロック図である。
図43は、この発明の実施の形態5のデータ処理装置のプロセッサステータスワードの構成を示す説明図である。
図44は、この発明の実施の形態5のデータ処理装置の実行条件指定命令のビット割り付けを示す説明図である。
図45は、この発明の実施の形態5のデータ処理装置のロングフォーマットの条件分岐命令のビット割り付けを示す説明図である。
図46は、この発明の実施の形態5のデータ処理装置のロングフォーマットの条件セット命令のビット割り付けを示す説明図である。
図47は、この発明の実施の形態5のデータ処理装置のPSW部のフラグ更新を行う部分を詳細に示したブロック図である。
図48は、この発明の実施の形態6のデータ処理装置のプロセッサステータスワードの構成を示す図である。
図49は、この発明の実施の形態6のデータ処理装置のPSW部のフラグ更新を行う部分を詳細に示したブロック図である。
図50は、この発明の実施の形態7のデータ処理装置で用いる命令フォーマットを示す図である。
図51は、この発明の実施の形態7のデータ処理装置の構成を示すブロック図である。
図52は、この発明の実施の形態7のデータ処理装置の制御部の条件判定に関する部分の詳細を示すフロック図である。
図53は、この発明の実施の形態8のデータ処理装置の実行条件指定命令のビット割り付けを示す説明図である。
図54は、この発明の実施の形態8のデータ処理装置の制御部の実行条件判定に関する部分の詳細を示すブロック図である。
図55は、この発明の実施の形態9のデータ処理装置の命令フォーマットを示す説明図である。
図56は、この発明の実施の形態9のデータ処理装置の条件実行命令の命令ビット割り付けを示す説明図である。
発明を実施するための最良の形態
<実施の形態1.>
<基本構成>
本発明の実施の形態1であるデータ処理装置について説明する。本実施の形態で用いるデータ処理装置は、16ビットプロセッサであり、アドレス及びデータのビット長は16ビットとする。
図1に本データ処理装置のレジスタセットを示す。本データ処理装置は、ビット順、バイト順に関してビッグエンディアンを採用しており、ビット位置はMSBがビット0になる。
16本の汎用レジスタR0〜R15はデータやアドレス値を格納する。レジスタR0〜R14は汎用レジスタであり、レジスタR13はサブルーチンジャンプ時の戻り先アドレスを格納するためのリンク(LINK)レジスタとして割り当てられている。レジスタR15はスタックポインタSPであり、割り込み用のスタックポインタSPIとユーザ用のスタックポインタSPUとが後で説明するプロセッサ・ステータス・ワードPSWによって切り替えられる。以後、スタックポインタSPIとSPUとを総称して、スタックポインタSPと呼ぶ。
特別な場合を除き、4ビットのレジスタ指定フィールドでオペランドとなる各レジスタの番号が指定される。本データ処理装置では、例えば、レジスタR0とR1とのように2つのレジスタをペアにして、処理する命令を備えている。この場合、偶数番号のレジスタを指定し、このレジスタのペアとなるレジスタは、レジスタ番号を1プラスした奇数番号のレジスタが暗黙的に指定される。CR0〜CR3、CR7〜CR11は各々16ビットの制御レジスタである。各制御レジスタも、汎用レジスタと同様、通常レジスタの番号が4ビットで示される。レジスタCR0は、プロセッサ・ステータス・ワード(PSW)を格納し、データ処理装置の動作モードを指定するビットや演算結果を示すフラグからなる。
図2はレジスタCR0内のPSWの構成を示す図である。同図に示すように、PSWのビット番号0はスタックモードを示すSMビット41である。SMビット41が“0”の場合は割り込みモードであることを示し、レジスタR15としてスタックポインタSPIが用いられる。“1”の場合はユーザーモードであることを示し、レジスタR15としてスタックポインタSPUが用いられる。PSWのビット番号5は割り込みイネーブルを指定するIEビット42であり、“0”の場合は割り込みをマスク(アサートされても無視)し、“1”の場合は割り込みを受け付ける。本データ処理装置では、ゼロオーバーヘッドのループ処理を実現するためのリピート機能がインプリメントされている。PSWのビット番号6はリピート状態を示すRPビット43であり、“0”の場合はリピート中でないことを、“1”の場合はリピート中であることを示す。また、本データ処理装置では、サーキュラーバッファをアクセスするためのアドレッシングであるモジュロアドレッシング機能がインプリメントされている。PSWのビット番号7はモジュロイネーブルを指定するMDビット44であり、“0”の場合はモジュロアドレッシングをディスエーブル状態にし、“1”の場合はモジュロアドレッシングをイネーブル状態にする。PSWのビット番号8は、アキュムレータのデータフォーマットを指定するFXビット45であり、“0”の場合は乗算結果を整数フォーマットでアキュムレータに格納し、“1”の場合は乗算結果を固定小数点フォーマットとして1ビット右にシフトしてアキュムレータに格納する。PSWのビット番号9はサチュレーションモードを指定するSTビット46である。“0”の場合はアキュムレータに演算結果を格納する際、演算結果を40ビットとして書き込む。“1”の場合はアキュムレータに演算結果を格納する際、32ビットで表現できる値にリミット処理して書き込む。”h’”を16進表記とすると、演算結果がh'007fffffffより大きい値の場合には、アキュムレータにh'007fffffffを書き込み、演算結果がh'ff80000000より小さい値の場合には、アキュムレータにh'ff80000000を書き込む。PSWのビット番号12は実行制御フラグ(F0フラグ)47であり、比較命令の比較結果などがこのフラグにセットされる。PSWのビット番号13も実行制御フラグ(F1フラグ)48であり、比較命令等によりF0フラグ47を更新する際に、更新前のF0フラグ47の値が、F1フラグにコピーされる。PSWのビット番号15はキャリー・フラグ(Cフラグ)49であり、加減算命令実行時のキャリーがこのフラグにセットされる。
図1のレジスタCR2はプログラムカウンタPCであり、実行中の命令アドレスを示す。本データ処理装置が処理する命令は、基本的に32ビット固定長であり、PC(もしくはCR2)は、32ビットを1ワードとした命令ワードアドレスを保持する。
レジスタCR1はバックアップ・プロセッサ・ステータス・ワード(BPSW)であり、例外や割り込みが検出された場合の実行中のプロセッサ・ステータス・ワードPSWの値を退避・保持するためのレジスタである。レジスタCR3はバックアップ・プログラム・カウンタ(BPC)であり、プログラム・カウンタPCの値を待避・保持するためのレジスタである。レジスタCR7〜CR9は、リピート関連のレジスタであり、リピート中であっても割り込みを受け付けられるように、ユーザーが値を読み書きできるようになっている。レジスタCR7はリピート・カウンタ(RPT_C)であり、リピート回数を示すカウント値を保持する。レジスタCR8はリピート・スタート・アドレス(RPT_S)であり、リピートを行うブロックの先頭の命令アドレスを保持する。レジスタCR9はリピート・エンド・アドレス(RPT_E)であり、リピートを行うブロックの最後の命令のアドレスを保持する。
レジスタCR10,CR11は、モジュロ・アドレッシングを行うための制御レジスタである。レジスタCR10は、モジュロ・スタート・アドレス(MOD_S)を、レジスタCR11は、モジュロ・エンド・アドレス(MOD_E)を保持する。レジスタCR10,CR11は共に、最初と最終のデータ・ワード(16ビット)・アドレスを保持する。インクリメントでモジュロアドレッシングを利用する場合には、モジュロ・スタート・アドレスMOD_Sとして小さい方のアドレスが、モジュロ・エンド・アドレスMOD_Eとして大きい方のアドレスがセットされ、インクリメントするレジスタ値がモジュロ・エンド・アドレスMOD_Eと一致した場合、インクリメント結果として、モジュロ・スタート・アドレスMOD_Sのアドレス値が、レジスタに書き戻される。
図1に40ビットのアキュムレータA0、A1を示す。各アキュムレータA0,A1は、積和演算結果の上位16ビットを保持するA0H、A1H、積和演算結果の下位16ビットを保持するA0L、A1L、積和演算結果の上位からあふれたビットを保持する8ビットのガードビットA0G、A1Gからなる。
本データ処理装置は2ウェイのVLIW(Very Long Instruction Word)命令セットを処理する。図3は、本データ処理装置の命令フォーマットを示す。基本命令長は32ビット固定であり、32ビット境界に整置されている。各32ビットの命令コードは、命令フォーマットを示す2ビットのフォーマット指定ビット(FMビット)51と、15ビットの左コンテナ52と右コンテナ53から構成される。各コンテナ52、53はそれぞれ15ビットからなるショートフォーマットのサブ命令を格納できるほか、2つで1つの30ビットのロングフォーマットのサブ命令を格納できる。今後、簡単のため、ショートフォーマットのサブ命令をショート命令、ロングフォーマットのサブ命令をロング命令と呼ぶ。
FMビット51は命令のフォーマット及び2つのショート命令の実行順序を指定する。FMビット51が“11”の場合は、コンテナ52、53の30ビットで1つのロング命令を保持することを示し、それ以外の場合は各コンテナ52、53がそれぞれショート命令を保持することを示す。さらに、2つのショート命令を保持する場合、FMビット51で実行順序を指定する。 “00”のときは、2つのショート命令を並列に実行することを示す。“01”のときは、左コンテナ52に保持されているショート命令を実行した後に、右コンテナ53に保持されているショート命令を実行することを示す。“10”のときは、右コンテナ53に保持されているショート命令を実行した後に、左コンテナ52に保持されているショート命令を実行することを示す。このように、シーケンシャルに実行する2つのショート命令も含めて1つの32ビット命令にエンコード出来るようにして、コード効率の向上を図っている。
図4〜図7に典型的な命令のビット割り付けの例を示す。図4は2つのオペランドを持つショート命令のビット割り付けを示す。フィールド61、64は、オペレーションコードフィールドである。フィールド64に、アキュムレータ番号を指定する場合もある。フィールド62、63には、オペランドとして参照あるいは更新されるデータの格納位置を、レジスタ番号やアキュムレータ番号で指定する。フィールド63は、4ビットの小さな即値を指定する場合もある。図5は、ショートフォーマットの分岐命令の割り付けを示しており、オペレーションコードフィールド71と8ビットの分岐変位フィールド72からなる。分岐変位は、PC値と同様、命令ワード(32ビット)のオフセットで指定される。図6は、16ビットの変位や即値を持つ3オペランド命令やロード/ストア命令のフォーマットを示しており、オペレーションコードフィールド81、ショートフォーマットと同様レジスタ番号等を指定するフィールド82、83、16ビットの変位や即値等を指定する拡張データフィールド84とからなる。図7は、右コンテナ53側にオペレーションコードを持つロングフォーマットの命令のフォーマットを示しており、2ビットのフィールド91が“01”になっている。93と96はオペレーションコードフィールドで、94と95はレジスタ番号等を指定するフィールドである。92は予約フィールドであり必要に応じてオペレーションコードやレジスタ番号等の指定に使用される。
上述以外に、NOP(ノー・オペレーション)のように、15ビットすべてがオペレーションコードとなる命令や、1オペランド命令等、特殊な命令のビット割り付けを持つものもある。
本データ処理装置の各サブ命令は、RISCライクな命令セットとなっている。メモリデータのアクセスを行う命令はロード/ストア命令のみであり、演算命令はレジスタ/アキュムレータ中のオペランドや即値オペランドに対して演算を行う。オペランドデータのアドレッシングモードとしては、レジスタ間接モード、ポストインクリメント付きレジスタ間接モード、ポストデクリメント付きレジスタ間接モード、プッシュモード、レジスタ相対間接モードの5種類ある。各々のニーモニックは、”@Rsrc”、”@Rsrc+”、”@Rsrc−”、”@−SP”、”@(disp16、Rsrc)”で示される。Rsrcはベースアドレスを指定するレジスタ番号を、disp16は16ビットの変位値を示す。オペランドのアドレスはバイトアドレスで指定される。
レジスタ相対間接モード以外のモードは、図4に示す命令フォーマットとなる。フィールド63でベースレジスタ番号が指定され、フィールド62でメモリからロードしてきた値を書き込むレジスタの番号もしくはストアする値を保持するレジスタの番号が指定される。レジスタ間接モードは、ベースレジスタとして指定されたレジスタの値がオペランドアドレスとなる。ポストインクリメント付きレジスタ間接モードは、ベースレジスタとして指定されたレジスタの値がオペランドアドレスとなり、このベースレジスタの値がオペランドのサイズ(バイト数)分ポストインクリメントされて、書き戻される。ポストデクリメント付きレジスタ間接モードは、ベースレジスタとして指定されたレジスタの値がオペランドアドレスとなり、このベースレジスタの値がオペランドのサイズ(バイト数)分ポストデクリメントされて、書き戻される。プッシュモードは、ストア命令で、かつ、ベースレジスタがレジスタR15の場合にのみ使用可能であり、スタックポインタ(SP)値がオペランドのサイズ(バイト数)分プリデクリメントされた値が、オペランドアドレスとなり、デクリメントされた値がSPに書き戻される。
レジスタ相対間接モードは図6に示す命令フォーマットとなる。フィールド83でベースレジスタ番号が指定され、フィールド82でメモリからロードしてきた値を書き込むレジスタの番号もしくはストアする値を保持するレジスタの番号が指定される。フィールド84はオペランド格納位置のベースアドレスからの変位値を指定する。レジスタ相対間接モードは、ベースレジスタとして指定されたレジスタの値に16ビットの変位値を加算した値がオペランドアドレスとなる。
ポストインクリメント付きレジスタ間接モードとポストデクリメント付きレジスタ間接モードでは、PSW中のMDビット44を“1”に設定する事により、モジュロアドレッシングモードが使用できる。
ジャンプ命令のジャンプ先アドレス指定には、ジャンプ先アドレスをレジスタ値で指定するレジスタ間接と、ジャンプ命令のPCからの分岐変位で指定するPC相対間接とがある。PC相対間接については、分岐変位を8ビットで指定するショートフォーマットと、分岐変位を16ビットで指定するロングフォーマットの2種類ある。また、オーバーヘッドなしにループ処理を実現するリピート機能を起動するためのリピート命令も備える。
図8に本データ処理装置100の機能ブロック構成を示す。データ処理装置100は、MPUコア部101と、MPUコア部101からの要求により命令データのアクセスを行う命令フェッチ部102、内蔵命令メモリ103、MPUコア部101からの要求によりオペランドデータのアクセスを行うオペランドアクセス部104、内蔵データメモリ105、命令フェッチ部102とオペランドアクセス部104からの要求を調停し、データ処理装置100の外部メモリのアクセス等を行う外部バスインターフェイス部106からなる。
MPUコア部101は、命令キュー111、制御部112、レジスタファイル115、第1演算部116、第2演算部117、PC部118からなる。
命令キュー111は、2エントリの32ビット命令バッファと有効ビット、及び入出力ポインタ等からなり、FIFO(先入れ先出し)方式で制御される。命令キュー111は、命令フェッチ部102でフェッチされた命令データを一時保持し、制御部112に送る。
制御部112は、前述の命令キュー111の制御、パイプライン制御、命令の実行、命令フェッチ部102やオペランドアクセス部104とのインターフェイスなど、MPUコア部101のすべての制御を行う。また、制御部112には、命令キュー111から送られる命令コードをデコードするための命令デコード部119があり、2つのデコーダを含む。第1デコーダ113は、第1演算部116で実行する命令をデコードし、第2デコーダ114は、第2演算部117で実行する命令をデコードする。32ビットの命令のデコードの第1サイクルでは、必ず左コンテナ52(図3)の命令コードが第1デコーダ113で解析され、右コンテナ53の命令コードが第2デコーダ114で解析される。従って、最初に実行する命令はその命令を実行する演算器に対応した位置に置かれなければならない。
ただし、FMビット51及び左コンテナ52のビット0とビット1とのデータは両方のデコーダで解析される。また、拡張データの切り出しを行うために、右コンテナ53のデータが第1デコーダ113に送られるが、解析を行われない。2つのショート命令をシーケンシャルに実行する場合、先行して実行される命令のデコード中に後で実行する側の命令が図示していないプリデコーダでデコードされ、どちらのデコーダでデコードすべきかを判定する。後で実行される命令がどちらのデコーダでも処理できる命令の場合は第1デコーダ113でデコードする。先行の命令のデコード後、後で実行する命令の命令コードが選択されたデコーダに取り込まれ、解析される。
レジスタファイル115は、レジスタR0〜R15(図1)の値を保持し、第1演算部116、第2演算部117、PC部118、オペランドアクセス部104に複数のバスで結合されている。
図9に、第1演算部116の詳細ブロック構成を示す。第1演算部116は、レジスタファイル115と、各々S1バス301、S2バス302、S3バス303によって結合されており、これら3つのバス301〜302を介してレジスタファイル115からデータを読み出し、演算器等にリードオペランドとなるデータやストアデータを転送する。S1バス301は偶数番号のレジスタにのみに、S2バス302は奇数番号のレジスタにのみ結合されており、S1バス301とS2バス302でレジスタペアの2ワードを並列に転送することもできる。S3バス303は全レジスタに結合されている。
また、第1演算部116は、レジスタファイル115と、各々D1バス311、Wバス314で結合されており、D1バス311を介して演算結果や転送データをレジスタファイル115に転送し、Wバス314でロードしたバイトデータをレジスタファイル115に転送する。D1バス311、Wバス314とも、全レジスタに結合されている。さらに、レジスタファイル115はオペランドアクセス部104と32ビットのODバス322で結合されており、1ワードのデータもしくはレジスタペアの2ワードを並列に転送することが可能である。ODバス322の上位/下位16ビットは、任意のレジスタファイルに書き込みができるようにレジスタファイル115の全レジスタに結合されている。
AAラッチ151、ABラッチ152は、ALU153の入力ラッチである。AAラッチ151は、S1バス301、S2バス302もしくはS3バス303を介して読み出されたレジスタ値を取り込む。同ラッチ151は、ゼロクリアする機能も備えている。ABラッチ152は、S3バス303を介して読み出されたレジスタ値もしくは第1デコーダ113でデコードの結果生成された16ビットの即値を取り込み、また、ゼロクリアする機能も備えている。
ALU153では、主として転送、比較、算術論理演算、オペランドアドレスの計算/転送、オペランドアドレス値のインクリメント/デクリメント、ジャンプ先アドレスの計算/転送等が行われる。演算結果やアドレスモディファイの結果はセレクタ155、D1バス311を介して、レジスタファイル115中の命令で指定されたレジスタに書き戻される。また、指定された条件が成立した場合には“1”を不成立の場合には“0”をレジスタに書き込む条件セット命令を実行するために、セレクタ155は演算結果の最下位ビットに制御部112から出力されたデータを埋め込む機能を備える。この場合、演算結果はゼロが出力されるように制御される。AOラッチ154は、オペランドのアドレスを保持するラッチであり、ALU153でのアドレス計算結果もしくはAAラッチ151に保持されたベースアドレスの値を選択的に保持し、OAバス321を介してオペランドアクセス部104に出力する。また、ジャンプ先アドレスやリピートエンドアドレスを計算した場合には、ALU153の出力が、JAバス323を介してPC部118に転送される。
MOD_S156とMOD_E157とは、それぞれ図1のレジスタCR10及びCR11に相当する制御レジスタである。比較器158は、MOD_E157の値とS3バス303上のベースアドレスの値とを比較して比較結果を制御部112に送る。モジュロアドレッシングがイネーブル状態で、ポストインクリメント/デクリメント付きのレジスタ間接モードで、比較器158の比較結果が一致した場合には、ラッチ159に保持されているMOD_S156の値がセレクタ155、D1バス311を介して、レジスタファイル115中のベースアドレスレジスタとして指定されたレジスタに書き戻される。
ストアデータ(SD)レジスタ160は、16ビットのレジスタ2本からなり、S1バス301もしくはS2バス302の一方、もしくは、S1バス301とS2バス302の両方に出力されたストアデータを一時保持する。SDレジスタ160に保持されたデータは、ラッチ161を介して整置回路162に転送される。整置回路162では、オペランドのアドレスに従って、ストアデータが32ビット境界に整置され、ラッチ163、ODバス322を介してオペランドアクセス部104に出力される。
また、オペランドアクセス部104でロードされたバイトデータは、ODバス322を介して、16ビットのロードデータ(LD)レジスタ164に取り込まれる。LDレジスタ164の値は、ラッチ165を介して、整置回路166に転送される。整置回路166では、バイト整置及びバイトデータのゼロ/符号拡張を行う。整置、拡張後のデータが、Wバス314を介してレジスタファイル115中の指定されたレジスタに書き込まれる。1ワード(16ビット)ロード、2ワード(32ビット)ロードの場合にはLDレジスタを介さず、ODバス322からレジスタファイル115にロードした値が直接書き込まれる。
制御部112中のPSW部171は図1のレジスタCR0の値を保持するPSWラッチ172や、PSW更新回路等からなり、演算結果や命令の実行によりPSWラッチ172の値を更新する。PSWラッチ172に値を転送する場合、S3バス303に出力されたデータがTPSWラッチ167を介して、必要なビット(アサインされているビット)のみ転送される。PSWラッチ172の値を読み出す場合には、PSW部171からD1バス311に出力され、レジスタファイル115に書き込まれる。BPSWラッチ168は図1のレジスタCR1に相当するレジスタである。例外処理時には、D1バス311に出力されたPSWの値がBPSWラッチ168に書き込まれる。BPSWラッチの値をレジスタファイル115に転送する場合には、BPSWラッチ168の値はS3バス303に読み出され、レジスタファイルなど必要な場所に転送される。アサインされていないビットは強制的にゼロがS3バス303に出力される。例外からの復帰時には、BPSWラッチ168の値は、直接TPSWラッチ167を介して、必要なビット(アサインされているビット)のみPSWラッチ172に転送される。
図10は、PC部118の詳細ブロック図である。命令アドレス(IA)レジスタ181は、次にフェッチする命令のアドレスを保持し、次にフェッチする命令のアドレスを命令フェッチ部102に出力する。引き続き後続の命令をフェッチする場合には、IAレジスタ181からラッチ182を介して転送されたアドレス値がインクリメンタ183で1インクリメントされて、IAレジスタ181に書き戻される。ジャンプやリピート等によりシーケンスが切り替わる場合には、IAレジスタ181はJAバス323を介して転送されるジャンプ先アドレス、リピートブロック開始アドレスを取り込む。
RPT_Sレジスタ184、RPT_Eレジスタ186、RPT_Cレジスタ188はリピート制御用の制御レジスタであり、それぞれ図1のレジスタCR8、レジスタCR9、レジスタCR7に対応する。RPT_Eレジスタ186はリピートを行うブロックの最終命令のアドレスを保持する。この最終アドレスは、リピート命令処理時に第1演算部116で計算され、JAバス323を介してRPT_Eレジスタ186に取り込まれる。比較機187は、リピートを行うブロックの最終命令のアドレスを保持するRPT_Eレジスタ186の値と、フェッチアドレスを保持しているIAレジスタ181の値とを比較する。もし、リピート処理中であり、リピートする回数を保持するRPT_Cレジスタ188の値が“1”でなく、かつ、2つのアドレスが一致した場合、RPT_Sレジスタ184に保持されているリピートを行うブロックの開始アドレスが、ラッチ185、JAバス323を介して、IAレジスタ181に転送される。リピートの終了アドレスの命令が実行されるたびに、RPT_Cレジスタ188の値は、ラッチ189を介してデクリメンタ190で“1”だけデクリメントされる。デクリメントした値が、“0”であった場合には、PSW中のRPビット43をクリアし、リピート処理を終了する。RPT_Sレジスタ184、RPT_Eレジスタ186、RPT_Cラッチ188は、D1バス311からの入力ポートとS3バス303への出力ポートを持ち、必要に応じてリピート時の初期設定や待避復帰が行なわれる。
実行ステージPC(EPC)194は実行中の命令のPC値を保持し、次命令PC(NPC)191は次に実行する命令のPC値を保持する。NPC191は、実行段階でジャンプが起こった場合、JAバス323上のジャンプ先アドレス値を取り込み、リピートで分岐が起こった場合には、ラッチ185からリピートを行うブロックの先頭アドレスを取り込む。それ以外の場合には、ラッチ192を介して転送されたNPC191の値が、インクリメンタ193でインクリメントされ、NPC191に書き戻される。サブルーチンジャンプ命令の場合には、ラッチ192の値が戻り先アドレスとしてD1バス311に出力され、レジスタファイル115中のリンクレジスタとして定義されているレジスタR13に書き戻される。また、次の命令が実行状態に入る場合には、ラッチ192の値がEPC194に転送される。実行中の命令のPC値を参照する場合には、EPC194の値がS3バス303に出力され、第1演算部116に転送される。BPC196は、図1で示したレジスタセットのレジスタCR3に対応する。例外や割り込み等が検出された場合には、EPC194の値がラッチ195を介してBPC196に転送される。BPC196は、D1バス311からの入力ポートとS3バス303への出力ポートを持ち、必要に応じて待避復帰が行なわれる。
図11に、第2演算部117の詳細ブロック図を示す。第2演算部117は、レジスタファイル115と、各々S4バス304、S5バス305で結合されており、この2つのバス304,305を介してデータをレジスタファイル115から読み出す。S4バス304とS5バス305でレジスタペアの2ワードを並列に転送することも可能である。また、第2演算部117は、レジスタファイル115と、D2バス312、D3バス313で結合されており、この2つのバス312,313を介してデータをレジスタファイル115内の各レジスタに書き込むことができる。D2バス312は偶数番号のレジスタのみに、D3バス313は奇数番号のレジスタのみに各々結合されている。D2バス312とD3バス313でレジスタペアの2ワードを並列に転送することもできる。
アキュムレータ208は、図1のアキュムレータA0,A1の2本の40ビットアキュムレータに相当する。
201は40ビットのALUであり、ビット番号0からビット番号7までの8ビットがアキュムレータのガードビット用加算器、ビット番号8からビット番号23までの16ビットが算術論理演算器、ビット番号24からビット番号39までの16ビットがアキュムレータの下位16ビットを加算するための加算器になっており、40ビットまでの加減算と、16ビットの論理演算を行う。
Aラッチ202、Bラッチ203は、ALU201の40ビット入力ラッチである。Aラッチ202は、S4バス304からレジスタ値をビット番号8からビット番号23の位置に取り込むか、シフタ204を介して、アキュムレータ208の値をそのままもしくは16ビット算術右シフトした値を取り込む。シフタ205は、アキュムレータ208の値を配線206(ガードビット8ビット)、S4バス304(上位16ビット)、S5バス305(下位16ビット)を介して取り込むか、レジスタの値をS5バス305のみ、もしくは、S4バス304とS5バス305の両方を介して16ビットもしくは32ビットのデータを右詰めで取り込み、40ビットに符号拡張する。シフタ205は、入力したデータを左3ビットから右2ビットの任意のシフト量で算術シフトし出力する。Bラッチ203は、S5バス305上のデータをビット番号8からビット番号23の位置に取り込むか、乗算器の出力、もしくは、シフタ205の出力を取り込む。Aラッチ202、Bラッチ203は、各々ゼロクリアしたり定数の値に設定したりする機能を持つ。
ALU201の出力は、サチュレーション回路209に出力される。サチュレーション回路209は、上位16ビット、もしくは、上位下位あわせた32ビットにする際に、ガードビットを見て、各々16ビットもしくは32ビットで表現できる最大値もしくは最小値にクリッピングする機能を備える。もちろんそのまま出力する機能もある。サチュレーション回路209の出力は配線207に結合されている。
デスティネーションオペランドがアキュムレータ208の場合には、配線207の値がアキュムレータ208に書き込まれる。デスティネーションオペランドがレジスタの場合は、配線207の値が、D2バス312やD3バス313を介して、レジスタファイル115に書き込まれる。1ワード転送の場合にはデスティネーションレジスタの番号が偶数の場合D2バス312に、奇数の場合にはD3バス313に出力される。2ワード転送の場合には、上位側の16ビットデータがD2バス312に、下位側のビットデータがD3バス313に出力される。また、転送命令、絶対値の計算、最大値設定命令や、最小値設定命令を実行するために、Aラッチ202とBラッチ203の出力が、配線207に結合されており、Aラッチ202とBラッチ203の値をアキュムレータ208やレジスタファイル115に転送することが可能である。
プライオリティエンコーダ210は、Bラッチ203の値を取り込み、固定小数点フォーマットの数を正規化するのに必要なシフト量を計算し、レジスタファイル115に書き戻すために結果をD2バス312もしくはD3バス313に出力する。
Xラッチ212、Yラッチ213は乗算器の入力レジスタであり、各々、S4バス304、S5バス305の16ビットの値を取り込み、17ビットにゼロ拡張もしくは符号拡張する機能を備える。乗算器211は、17ビットx17ビットの乗算器であり、Xラッチ212に格納された値とYラッチ213に格納された値との乗算を行う。積和命令や積差命令の場合には、乗算結果はPラッチ214に取り込まれ、Bラッチ203に送られる。乗算命令でデスティネーションオペランドがアキュムレータ208の場合には、乗算結果をアキュムレータ208に書き込む。
バレルシフタ215は、40ビットもしくは16ビットのデータに対して、左右16ビットまでの算術/論理シフトが可能である。シフトデータは、アキュムレータ208の値もしくはS4バス304を介してレジスタの値がシフトデータ(SD)ラッチ217に取り込まれる。シフト量については、即値もしくはレジスタ値がS5バス305を介してシフト量(SC)ラッチ216に取り込まれる。バレルシフタ215はSDラッチ217のデータをSCラッチ216で指定されるシフト量だけ、オペレーションコードで指定されたシフトを行う。シフト結果は、サチュレーション回路209に出力され、ALUでの演算結果と同様、必要に応じてサチュレーションが行われ、配線207に出力される。配線207に出力された値は、アキュムレータ208もしくはD2バス312、D3バス313を介してレジスタファイル115に書き戻される。
即値ラッチ218は、第2デコーダ114で生成された6ビットの即値を16ビットに拡張して保持し、S5バス305を介して演算器に転送する。ビット操作命令のビットマスクもここで生成される。
次に本データ処理装置のパイプライン処理について説明する。図12はパイプライン処理を示す図である。本データ処理装置は、命令データのフェッチを行う命令フェッチ(IF)ステージ401、命令の解析を行う命令デコード(D)ステージ402、演算実行を行う命令実行(E)ステージ403、データメモリのアクセスを行うメモリアクセス(M)ステージ404、メモリからロードしたバイトオペランドをレジスタへ書き込むライトバック(W)ステージ405の5段のパイプライン処理を行う。Eステージ403での演算結果のレジスタへの書き込みはEステージ403で完了し、ワード(2バイト)、2ワード(4バイト)ロード時のレジスタへの書き込みはMステージ404で完了する。積和/積差演算に関しては、更に乗算と加算の2段のパイプラインで命令の実行を行う。後段の処理を命令実行2(E2)ステージ406と呼ぶ。連続する積和/積差演算を1回/1クロックサイクルのスループットで実行できる。
IFステージ401では、主として命令のフェッチ、命令キュー111の管理、リピート制御が行われる。命令フェッチ部102、内蔵命令メモリ103、外部バスインターフェイス部106、命令キュー111、PC部118のIAレジスタ181、ラッチ182、インクリメンタ183、比較器187等や制御部113のIFステージ制御、命令フェッチ制御、PC部118制御等を行う部分が、このIFステージ401の制御で動作する。IFステージ401は、Eステージ403のジャンプで初期化される。
フェッチアドレスは、IAレジスタ181で保持される。Eステージ403でジャンプが起こるとJAバス323を介してジャンプ先アドレスを取り込み、初期化を行う。シーケンシャルに命令データをフェッチする場合には、インクリメンタ183でアドレスをインクリメントする。リピート処理中に、比較器187でIAレジスタ181の値とRPT_E186の値が一致していることが検出され、かつ、RPT_Cの値が1でなければ、シーケンスの切り替え制御が行われる。この場合、RPT_S184に保持されている値がラッチ185、JAバス323を介してIAレジスタ181に転送される。
IAレジスタ181の値は命令フェッチ部102に送られ、命令フェッチ部102が命令データのフェッチを行う。対応する命令データが内蔵命令メモリ103にある場合には、内蔵命令メモリ103から命令コードを読み出す。この場合、1クロックサイクルで32ビットの命令のフェッチを完了する。対応する命令データが内蔵命令メモリ103にない場合には、外部バスインターフェイス部106に命令フェッチ要求を出す。外部バスインターフェイス部106は、オペランドアクセス部104からの要求を調整し、命令の取り込みが可能になったら、外部のメモリから命令データを取り込み、命令フェッチ部102に送る。外部バスインターフェイス部106は、最小2クロックサイクルで外部メモリのアクセスを行うことが可能である。命令フェッチ部102は取り込まれた命令を、命令キュー111に転送する。命令キュー111は2エントリのキューになっており、FIFO制御で取り込まれた命令コードを、命令デコード部119に出力する。
Dステージ402では、命令デコード部119でオペレーションコードの解析を行い、第1演算部116、第2演算部117、PC部118等で命令の実行を行うための制御信号群を生成する。Dステージ402は、Eステージ403のジャンプで初期化される。命令キュー111から送られてくる命令コードが無効な場合には、アイドルサイクルとなり、有効な命令コードが取り込まれるまで待つ。Eステージ403が次の処理を開始できない場合には、演算器等に送る制御信号を無効化し、Eステージ403での先行命令の処理の終了を待つ。例えば、Eステージ403で実行中の命令がメモリアクセスを行う命令であり、Mステージ404でのメモリアクセスが終了していない場合にこのような状態になる。
Dステージ402では、シーケンシャル実行を行う2命令の分割や、2サイクル実行命令のシーケンス制御も行う。さらに、スコアボードレジスタ(図示せず)を用いたロードオペランドの干渉チェックや第2演算部117での演算器の干渉チェック等も行い、干渉が検出された場合には、干渉が解消されるまで制御信号の出力を抑止する。図13は、ロードオペランド干渉の例を示す。ワードもしくは2ワードのロード命令の直後にロードするオペランドを参照する積和演算命令がある場合、レジスタへのロードが完了するまで、積和演算命令の実行開始を抑止する。この場合、メモリアクセスが1クロックサイクルで終了する場合でも、1クロックサイクルストールが起こる。バイトデータをロードする場合には、更にWステージでレジスタファイルへの書き込みが完了するため、更に1サイクルストール期間が延びる。図14は、演算ハードウェア干渉の例を示す。積和演算命令の直後に加算器を使用する丸め命令がある場合、先行の積和演算命令の演算が終了するまで丸め命令の実行開始を抑止する。この場合、1クロックサイクルストールが起こる。積和演算命令が連続する場合には、ストールは起こらない。
第1デコーダ113は、主として第1演算部116のすべて、PC部118のIFステージ401で制御される部分以外、レジスタファイル115のS1バス301、S2バス302、S3バス303への読み出し制御とD1バス311からの書き込み制御に関する実行制御信号を生成する。命令に依存するMステージ404やWステージ405での処理に必要な制御信号もここで生成され、パイプラインの処理の流れに付随して転送される。第2デコーダ114は、主として第2演算部117での実行制御、レジスタファイル115のS4バス304、S5バス305への読み出し制御とD2バス312、D3バス313からの書き込み制御に関する実行制御信号を生成する。
Eステージ403では、演算、比較、制御レジスタを含むレジスタ間転送、ロード/ストア命令のオペランドアドレス計算、ジャンプ命令のジャンプ先アドレスの計算、ジャンプ処理、EIT(例外、割り込み、トラップの総称)検出と各EITのベクタテーブルへのジャンプ等、メモリアクセスと積和/積差演算命令の加算処理を除く命令実行に関するほとんどすべての処理を行う。
割り込みイネーブルの場合の割り込みの検出は、必ず32ビット命令の切れ目で行われる。32ビット命令の中にシーケンシャルに実行する2つのショート命令がある場合に、この2つのショート命令間で割り込みを受け付けることはない。
Eステージ403で処理中の命令がオペランドアクセスを行う命令であり、Mステージ404でメモリアクセスが完了しない場合には、Eステージ403での完了は待たされる。ステージ制御は制御部112で行われる。
Eステージ403において、第1演算部116では、算術論理演算、比較、転送を行う。モジュロの制御を含むメモリオペランドのアドレスや、分岐先のアドレス計算もこのALU153で行われる。オペランドとして指定されたレジスタの値が、S1バス301、S2バス302、S3バス303に読み出され、別途取り込まれる即値、変位等の拡張データとともに、ALU153で演算が行われ、演算結果がD1バス311を介してレジスタファイル115に書き戻される。ロード/ストア命令の場合には、演算結果はAOラッチ154、OAバス321を介して、オペランドアクセス部104に送られ、ジャンプ命令の場合には、ジャンプ先アドレスがJAバス323を介して、PC部118に送られる。ストアデータはS1バス301、S2バス302を介して、レジスタファイル115から読み出され、SDレジスタ160、ラッチ161で保持され、整置回路166で整置が行われる。また、PC部118では、実行中の命令のPC値の管理、次に実行する命令のアドレスの生成が行われる。第1演算部116、PC部118に含まれる制御レジスタ(アキュムレータを除く)とレジスタファイル115間の転送は、S3バス303、D1バス311を介して行われる。
Eステージ403において、第2演算部117では、算術論理演算、比較、転送、シフト他積和演算の加算以外のすべての演算実行が行われる。オペランドの値が、レジスタファイル115や即値レジスタ218、アキュムレータ208等から、S4バス304、S5バス305やその他の専用経路を介して各演算器に転送され、指定された演算を行い、アキュムレータ208やD2バス312、D3バス313を介してレジスタファイル115に書き戻される。
第1演算部116及び第2演算部117での演算結果によるPSW172中のフラグ値の更新制御も、Eステージ403で行われる。しかし、演算結果の確定がEステージ403の遅い時期になるため、実際のPSW172の値の更新は、次サイクルで行われる。データ転送によるPSW172の更新は、対応するサイクルで完了する。
第2デコーダ114で生成された積和/積差演算の加減算実行のための演算制御信号は、Eステージ403制御のもとに保持される。メモリアクセス情報、ロードレジスタ情報は、Mステージ404に送られる。Eステージ403のステージ制御も制御部112に行われる。
Mステージ404では、第1演算部116から送られたアドレスでオペランドのメモリアクセスが行われる。オペランドアクセス部104は、オペランドが内蔵データメモリ105やチップ内IO(図示せず)にある場合には、内蔵データメモリ105やチップ内IOに対し、1クロックサイクルでメモリのリードもしくはライトを行う。オペランドが内蔵データメモリ105やチップ内IOでない場合には、外部バスインターフェイス部106にデータアクセス要求を出す。外部バスインターフェイス部106は、外部のメモリに対してデータアクセスを行い、ロードの場合には読み出されたデータをオペランドアクセス部104に転送する。外部バスインターフェイス部106は、最小2クロックサイクルで外部メモリのアクセスを行うことが可能である。ロードの場合には、オペランドアクセス部104は読み出されたデータを、ODバス322を介して転送する。バイトデータの場合はLDレジスタ164に、ワードもしくはダブルワードデータの場合にはレジスタファイル115に直接書き込む。ストアの場合には、整置されたストアデータの値が、整置回路162からODバス322を介してオペランドアクセス部104に転送され、対象となるメモリへの書き込みが行われる。Mステージ404のステージ制御も制御部112で行われる。
Wステージ405において、LDレジスタ164に保持されたロードオペランド(バイト)は、ラッチ165で保持され、整置回路166で整置、ゼロ/符号拡張された後に、Wバス314を介してレジスタファイル115へ書き込まれる。
E2ステージ406では、積和/積差演算の加減算処理をALU201で行い、加減算結果をアキュムレータ208に書き戻す。
本データ処理装置は、入力クロックに基づいて同一周波数の非重複2相のクロック信号を生成し、内部制御に使用する。最短の場合、各パイプラインステージは、内部の1クロックサイクルで処理を終了する。ここでは、クロック制御の詳細については、本発明に直接関係ないので説明を省略する。
各サブ命令の処理例について説明する。加減算、論理演算、比較等の演算命令やレジスタ間の転送命令は、IFステージ401、Dステージ402、Eステージ403の3段で処理を終了する。演算やデータ転送をEステージ403で行う。
積和/積差命令は、乗算を行うEステージ403と加減算を行うE2ステージの2クロックサイクルで演算実行を行うため、4段の処理となる。
バイトロード命令は、IFステージ401、Dステージ402、Eステージ403、Mステージ404、Wステージ405の5段で処理を終了する。ワード/2ワードロードやストア命令は、IFステージ401、Dステージ402、Eステージ403、Mステージ404の4段で処理を終了する。
非整置アクセスの場合には、オペランドアクセス部104でMステージ404の制御のもと2回のアクセスに分割され、メモリアクセスが行われる。
実行に2サイクルかかる命令では、第1、第2命令デコーダ113、114で、2サイクルかけて処理し、各サイクル毎に各々実行制御信号を出力し、2サイクルかけて演算実行を行う。
ロング命令は、1つの32ビット命令が1つのロング命令で構成されており、この1つのロング命令の処理で32ビット命令の実行が完了する。パラレル実行する2つの命令は、2つのショート命令で処理サイクルの大きい方の命令の処理に律速される。例えば、2サイクル実行の命令と1サイクル実行の命令の組み合わせの場合には、2サイクルかかる。シーケンシャル実行の2つのショート命令の場合には、各サブ命令の組み合わせになり、デコード段階で各命令がシーケンシャルにデコードされ、実行される。例えば、Eステージ403で1サイクルで実行が完了する加算命令が2つの場合には、Dステージ402、Eステージ403とも各命令に1サイクル、計2サイクルかけて処理する。Eステージ403における先行命令の実行と並列して、Dステージ402で後続命令のデコードが行われる。
<フラグ>
次に、本発明の実施の形態1であるデータ処理装置のフラグの更新、及び、条件実行の詳細について説明する。
まず、本データ処理装置のフラグの更新について詳しく述べる。本データ処理装置は、図2に示すようにPSW中にF0フラグ47、F1フラグ48、キャリー(C)フラグ49の3つの演算結果を示すフラグを備える。Cフラグ49は加減算命令等通常の演算命令で変化するが、F0フラグ47は、命令の実行条件として参照されるため比較命令等限定された命令でのみ変化する。F1フラグ48はF0フラグ47を更新する場合に、更新前のF0フラグ47の値をF1フラグ48に転送する。
F0フラグ47を更新する命令には、レジスタ値やアキュムレータ値と、レジスタ値、アキュムレータ値もしくは即値とを比較する比較命令、レジスタ中の指定されたビットが“0”であるか“1”であるかをテストするビットテスト命令、レジスタ中の指定されたビットフィールドがオール“0”であることを、あるいは、オール“1”であることをテストするビットフィールドテスト命令等比較結果でフラグを更新するものがある。また、レジスタ値やアキュムレータ値の絶対値を計算する命令や最大値/最小値をセットする命令等、条件判定を含む複合演算を行う演算でもフラグが変化する。F0フラグ47の更新時には更新前のF0フラグ47の内容がF1フラグ48にコピーされる。これ以外のロード、ストア、転送、算術論理演算、シフト等の命令では、F0フラグ47、F1フラグ48の値は変化しない。
フラグをセットする条件はフラグをセットする命令で指定する。たとえば、レジスタに保持された2つの16ビット符号付き数の大小判定を行う比較命令には、2つの値が一致する場合にF0フラグ47をセットするCMPEQ命令と、第1の値が第2の値より小さい場合にF0フラグ47をセットするCMP命令の2種類の命令がある。
図15はCMPEQ命令のビット割り付けを、図16はCMP命令のビット割り付けを示す。これらの命令は、図4に示したショート命令のフォーマットを持ち、501、504、506、509はオペレーションコードである。CMPEQ命令では、Rsrc1フィールド502で指定されるレジスタの値とRsrc2フィールド503で指定されるレジスタの値とが一致した場合に、F0フラグ47に1をセットし、不一致の場合にはF0フラグ47に0をセットする。また、CMP命令では、Rsrc1フィールド507で指定されるレジスタの値がRsrc2フィールド508で指定されるレジスタの値より小さい場合に、F0フラグ47に1をセットし、それ以外の場合にはF0フラグ47に0をセットする。
また、CMP命令のRsrc2のかわりに、即値を用いるCMPI命令がある。−8から7までの4ビットの即値を指定するショートフォーマットの命令のビット割り付けを図17に、16ビットの即値を指定するロングフォーマットの命令のビット割り付けを図18に示す。各々imm4フィールド513とimm16フィールド519で即値を指定し、Rsrcフィールド512、517で指定されるレジスタ値との比較を行う。CMPEQ命令も即値と比較する命令(フォーマット)を持つ。このほか符号なし数の比較、アキュムレータ値の比較等多くの比較命令、フォーマットを備える。このように、効率よくデータ処理を行うために、限定された命令とはいえ、多くのフラグを更新する命令を備える。
また、本データ処理装置は、F0フラグ47、F1フラグ48、Cフラグ49のいずれかの内容をF0フラグ47もしくはF1フラグ48をコピーするCPFG命令を備えている。図19にCPFG命令のビット割り付けを示す。Fsrcフィールド545で指定されるフラグの内容がFdestフィールド543で指定されるフラグにコピーされる。
図20に、PSW部171のフラグ更新部分のみを表した図を示す。モードビット等は特に本発明とは直接関係がないので説明を省略する。また、簡単のため、ラッチ、セレクタ等の制御信号やクロック信号も省略し、データの流れに着目したブロック図で示している。
フラグ更新制御部521は、ラッチのイネーブル信号の生成、セレクタの選択信号生成等、フラグの更新制御を行う。制御部112内の第1デコーダ113、第2デコーダ114から命令の実行に伴うフラグの更新情報を取り込む。また、制御部112内のパイプライン制御やEIT制御を行う部分(図示せず)から、命令実行状態情報やEIT処理に伴うPSWの更新制御情報を取り込む。これらの情報から、ラッチのイネーブル信号、セレクタの選択信号等を生成し、フラグの更新を制御する。
F0ラッチ533、F1ラッチ534及びCラッチ535は各々アーキテクチャ上のF0フラグ47、F1フラグ48及びCフラグ49を物理的に保持するラッチである。
F0更新部524、F1更新部525及びC更新部526は、それぞれF0フラグ47、F1フラグ48及びCフラグ49の演算結果に伴う更新、命令実行に伴う更新を行う。ショートフォーマットの比較命令、加減算命令は、第1演算部116及び第2演算部117の両方で実行できる。第1演算部116及び第2演算部117のフラグの更新に必要な演算結果情報は、それぞれラッチ522、523に取り込まれ、F0更新部524、C更新部526に送られる。
また、第1デコーダ113及び第2デコーダ114から、どの演算結果やフラグに基づいて各フラグを生成するかに関する情報を有する第1及び第2のデコード結果がF0更新部524、F1更新部525、C更新部526にそれぞれ送られる。制御部112から、命令実行状態情報やEIT処理に伴うPSWの更新制御情報がF0更新部524、F1更新部525、C更新部526にそれぞれ送られる。
PSW部171は、F0フラグ47の更新時には更新前のF0フラグ47の内容をF1フラグ48に転送し、更新を行わない場合には、各フラグの更新部には更新前の値をそのまま出力するように動作する。この動作を実現するため、F0更新部524にはF0ラッチ533の値が、F1更新部525にはF0ラッチ533及びF1ラッチ534の値が、C更新部526にはCラッチ535の値が、それぞれ入力される。
F0更新部524、F1更新部525及びC更新部526は、有効な命令を実行した場合に、デコード結果、演算結果及び状態制御情報からなるフラグ更新関連情報と更新前のフラグ情報とに基づいてフラグの生成を行う。
比較/演算命令等のフラグ更新命令の実行によるフラグの更新は、演算結果の確定が遅れるため、Eステージ403での処理サイクルの後半から、次サイクルの前半で行われる。フラグ更新しない場合には、更新前の値をそのまま出力する。F0更新部524、F1更新部525、C更新部526で生成された情報は、各々ラッチ527、528、529に保持される。命令でPSW21の値を読み出す場合やEIT起動時にPSW21の値を待避する場合には、これらのラッチの出力がD1バス311に出力される。また、後述の命令の実行条件判定を行うために、ラッチ527、528の出力は制御部112内の第1実行条件判定部601、第2実行条件判定部602にも出力される。条件判定の詳細は後述する。
セレクタ530、531、532は、それぞれF0ラッチ533、F1ラッチ534、Cラッチ535の更新データを選択する。演算結果でフラグを更新する場合には、それぞれラッチ527、528、529の出力を選択する。命令でデータとしてPSWに値を設定するPSWへの転送命令の場合には、TPSW167の値を選択する。CPFG命令でフラグのコピーを行う場合には、ソースとして選択されたフラグのラッチ(527〜529のいずれか1つ)が、デスティネーションとして指定されたフラグに対応するセレクタ530もしくはセレクタ531で選択される。EIT起動時には、全フラグの値はゼロクリアされるので、0が選択される。選択されたデータでF0ラッチ533、F1ラッチ534、Cラッチ535の更新を行う。各フラグは更新が必要な場合にのみ値が更新され、更新の必要がない場合には前の値を保持する。
前述のように、演算結果の確定が遅れる場合があるので、演算結果でフラグを更新する場合は、演算/比較命令を実行するEステージ403の次サイクルで更新が行われるが、CPFG命令、PSWへの転送命令、EITからの復帰命令実行時には、Eステージ403で更新が完了する。この場合は、次サイクルでの演算結果によるフラグの更新は抑止される。すなわち、CPFG命令、PSWへの転送命令、EITからの復帰命令等と演算/比較命令が並列に実行された場合には、CPFG命令、PSWへの転送命令に関するフラグの更新が優先される。フラグの値はEステージ403で参照されるが、更新部524〜526での更新後の値を保持するラッチ527〜529の値が参照されるので、いずれの場合でも更新直後に参照を行っても正しく動作する。
以上のような構成で所望のフラグの更新を実現している。比較結果でF0フラグ47を更新する場合には、デコード結果と演算結果に基づいてF0更新部524で更新値が生成され、F0ラッチ533に取り込まれる。F1更新部525では、更新前のF0ラッチ533の値がそのまま出力され、F1ラッチ534に取り込まれる。
このように、実施の形態1のデータ処理装置は、命令でどのフラグを更新するのかを指定することなく、2つの比較、演算結果をF0フラグ47及びF1フラグ48に保持することができる。その結果、命令コード中にどのフラグを更新するのかを指定するフィールドが不要になるため、短いオペレーションコードで多くの命令をエンコードでき、コード効率が向上する。
比較命令は、様々な制御を行うプログラムにおいて実行頻度の非常に高い命令であり、一般的に命令数も多いため、コード効率の向上に対する寄与は大きい。フラグの更新部分はやや複雑な構成になってはいるが、F1フラグ48の追加によるハードウェアの増加量は非常に少ない。
次に、条件実行について詳しく説明する。本発明のデータ処理装置がインプリメントしている条件実行を行う命令は、自命令で指定した条件に基づき条件実行を行う条件実行命令(以後単に条件実行命令と書いた場合には、この命令を指すものとする)、自命令で指定した条件の成立(真)/不成立(偽)に基づき異なる値をセットする条件セット命令と、並列に実行するペアの命令の実行条件を指定する実行条件指定命令の3つに大別できる。
上記した条件実行命令及び条件セット命令は、フラグの内容に基づき実行内容が決定されるフラグ制御実行命令と言える。
ショートフォーマットの条件実行命令、条件セット命令は、オペレーションコードの制限から、条件実行を行う頻度の高い命令に対してのみインプリメントしており、F0フラグ47のみが参照可能となっている。各オペレーションについて、F0フラグ47が“1”の場合に実行する命令とF0フラグが“0”の場合に実行する命令の2種類の命令を備える。条件実行命令には、例えば、条件転送命令、条件分岐命令等がある。
図21に条件転送命令のビット割り付けを示す。Cフィールド554が“0”のMVF0F命令では、F0フラグ47が“0”の場合にのみ、Rsrcフィールド553で指定されるレジスタの値がRdestフィールド552で指定されるレジスタに転送され、F0フラグ47が“1”の場合には、転送を行わない。逆に、Cフィールド554が“1”のMVF0T命令では、F0フラグ47が“1”の場合にのみ、Rsrcフィールド553で指定されるレジスタの値がRdestフィールド552で指定されるレジスタに転送され、F0フラグ47が“0”の場合には、転送を行わない。図中の条件において、“==”は一致した場合に真、不一致の場合に偽となることを示す。条件が真の(成立した)場合のみ、オペレーションを実行することを示す。(以下同様)
図22にショートフォーマットの条件分岐命令のビット割り付けを示す。Cフィールド557が“0”のBRF0F命令では、F0フラグ47が“0”の場合にのみ、分岐先アドレスに分岐する。分岐先アドレスは、disp8フィールド558で指定された8ビットの分岐変位フィールドの値を16ビットに符号拡張後、条件分岐命令のPC値と加算することにより計算される。F0フラグ47が“1”の場合には、分岐を起こさず条件分岐命令に引き続くシーケンスの命令の実行を継続する。JAバス323を介したジャンプ先アドレスの転送も抑止される。逆に、Cフィールド557が“1”のBRF0T命令では、F0フラグ47が“1”の場合にのみ、分岐が起こる。
図23にショートフォーマットの条件セット命令のビット割り付けを示す。この命令は、条件実行命令とは異なり条件が不成立の場合にも命令の実行が行われる。Cフィールド564が“0”のSETF0F命令では、F0フラグ47が“0”の場合には、Rdestフィールド562で指定されるレジスタに1を、F0フラグ47が“1”の場合には“0”をセットする。逆に、Cフィールド564が“1”のSETF0T命令では、F0フラグ47が“1”の場合には、Rdestフィールド562で指定されるレジスタに“1”を、F0フラグ47が“0”の場合には“0”をセットする。
ロングフォーマットの条件実行命令、条件セット命令は、オペレーションコードに余裕があるので、各オペレーションについて、14通りの条件が指定可能になっている。F0フラグ47とF1フラグ48との2つのフラグが実行条件として参照可能であり、いずれか一方のフラグで条件を指定できるだけでなく、2つのフラグの複合条件(論理和、論理積、排他的論理和)も指定可能である。さらに、2つのフラグの複合条件をとる際に、各フラグの反転を参照することもできる。排他的論理和の場合は、XORとXNORが指定できればよいので、条件は2つになっている。
ロングフォーマットの条件実行命令には、例えば、条件分岐命令がある。図24にロングフォーマットの条件分岐命令のビット割り付けを示す。フラグオペレーション(F−op)フィールド572、F0フィールド573、F1フィールド575で分岐条件を指定する。F−opフィールド572では、2つのフラグの複合条件を指定する。“00”は論理積を、“01”は論理和を、“10”は排他的論理和を示す。F0フィールド573、F1フィールド575では、各フラグの参照方法を指定する。“00”は反転を参照し、“01”はそのままの値を参照することを示す。“10”はフラグの値によらず常に真であることを示す。1つのフラグを参照する場合には、フラグのオペレーションとして論理積が指定され、条件に関与しない側のフラグのフィールドで“10”(常に真)が指定される。14通りの条件に応じて、14個の命令が存在する。例えば、BRTAT命令では、F0フラグ47が“1”で、かつ、F1フラグ48が“1”の場合に分岐が起こる。条件が不成立の場合には、分岐が起こらない。分岐先アドレスは、条件分岐命令のPC値に、disp16フィールド576で指定された16ビットの分岐変位フィールドの値を加算することにより計算される。
図25にロングフォーマットの条件セット命令のビット割り付けを示す。フラグオペレーション(F−op)フィールド852、F0フィールド853、F1フィールド585でセット条件を指定する。14通りの条件に応じて、14個の命令が存在する。例えば、SETFRT命令では、F0フラグ47が“0”、あるいは、F1フラグ48が“1”の場合は、Rdestフィールド587で指定されるレジスタに“1”を、それ以外の場合には“0”をセットする。このように、F0フラグ47とF1フラグ48とからなる複合条件の成立/不成立に基づき、所定の格納領域に第1の値/第2の値を書き込むという、高度な条件セット命令を実行可能にすることにより、より性能が高いデータ処理装置を得ることができる。
次に、実行条件指定命令について説明する。実行条件指定命令はショート命令であり、2つのショート命令を並列に実行する場合にのみ有効な動作を行う。この実行条件指定命令が命令コード中の左コンテナ52に配置された場合には、右コンテナ53に配置された第2演算部117等で実行され、命令の実行条件が指定される。実行条件指定命令が命令コード中の右コンテナ53に配置された場合には、左コンテナ52に配置された第1演算部116、PC部118等で実行される命令の実行条件が指定される。転送、演算、ジャンプ、ロード/ストア、トラップ等すべてのショート命令との並列実行が可能であり、この1つの命令を備えることにより様々なオペレーションの条件実行が可能となる。
図26に実行条件指定命令のビット割り付けを示す。フラグオペレーション(F−op)フィールド592、F0フィールド593、F1フィールド595で実行条件を指定する。14通りの条件に応じて、14個の命令が存在する。例えば、EXETXT命令では、F0フラグ47の値とF1フラグ48の値が異なる場合に、ペアのコンテナに格納されている命令の実行を行い、それ以外の場合にはペアのコンテナに格納されている命令の実行を抑止する。
図27に制御部112内に実行条件判定に関する部分を抜き出したブロック図を示す。図20で示したように、F0フラグ47、F1フラグ48の値がPSW部171から第1実行条件判定部601、第2実行条件判定部602に出力される。第1デコーダ113でのデコード結果のうち命令の実行に必要な制御信号(実行制御情報)は第1実行制御部603に出力され、第2デコーダ114でのデコード結果における実行制御情報は第2実行制御部604に出力される。第1実行制御部603と第2実行制御部604との出力に基づいて、演算器やレジスタファイル等で各命令が実行される。
第1デコーダ113でデコードした命令が自命令の実行条件を指定する条件実行命令の場合について説明する。第1デコーダ113では条件が成立した場合に行う処理に必要な実行制御情報が生成され、第1実行制御信号生成部603に送られ、条件実行命令の実行条件が第1実行条件判定部601に出力され、第1実行条件判定部601はフラグ情報と実行条件とに基づいて実行条件判定を行う。
第1実行条件判定部601は、条件実行命令で実行条件が不成立の場合には、実行抑止信号611をアサートする。すると、第1実行制御信号生成部603はユーザーから見えるリソースの更新を制御する実行制御信号を強制的にネゲートする。例えば、レジスタファイル115の更新、その他のユーザーから見える制御レジスタの更新、PSW172の更新、データメモリアクセス要求のアサート、Mステージ404への処理の発行、内部ジャンプ信号のアサート、JAバス323を介したジャンプ先アドレスの転送、命令の実行に伴う例外やトラップの起動等を制御する制御信号がネゲートされる。ただし、タイミング的に命令の実行開始を抑止することは困難なので、演算等は開始しており、演算器の入力ラッチ等内部的なテンポラリラッチの値は更新される。消費電力低減の観点からは電力消費の大きい処理は抑止した方がよいが、機能的には最低限ユーザーとして見える状態の更新のみを抑止すればよい。
一方、第1実行条件判定部601は、条件実行命令で実行条件が成立した場合には、実行抑止信号611をアサートしない。したがって、第1デコーダ113の実行制御情報に基づく第1実行制御信号生成部603で生成された実行制御信号によって命令が実行される。
次に、第1デコーダ113でデコードした命令が並列に実行するペアの命令の実行条件を指定する実行条件指定命令の場合について説明する。この場合、第2デコーダ114では有効な命令のデコードが行われ、命令実行に必要な実行制御情報が第2実行制御部604に出力される。実行条件指定命令で規定する実行条件が第1実行条件判定部601に出力され、第1実行条件判定部601はフラグ情報に基づいて実行条件の判定を行う。
第1実行条件判定部601は、実行条件指定命令の実行条件が不成立の場合には、実行抑止信号612をアサートする。すると、第2実行制御信号生成部604は、ユーザーから見えるリソースの更新を制御する実行制御信号を強制的にネゲートする。例えば、レジスタファイル115やアキュムレータ208、PSW172の更新等を制御する制御信号がネゲートされる。タイミング的に命令の実行開始を抑止することは困難なので、演算等は開始しており、演算器の入力ラッチ等内部的なテンポラリラッチの値は更新される。ユーザーから見える状態の更新のみを抑止する。
一方、第1実行条件判定部601は、実行条件指定命令で実行条件が成立した場合には、実行抑止信号612をアサートしない。したがって、第2デコーダ114からの実行制御情報に基づき第2実行制御信号生成部604で生成された実行制御信号によって命令が実行される。いずれの場合も、実行条件指定命令自体は、何のオペレーションも行わず、第1デコーダ113から第1実行制御部603にNOP(ノーオペレーション)命令と同じ実行制御情報が送られる。
第2デコーダ114でデコードした命令が自命令の実行条件を指定する条件実行命令の場合には、第2実行条件判定部602で実行条件の判定が行われる。第2実行条件判定部602は、実行条件が不成立の場合には、実行抑止信号613をアサートする。すると、第2実行制御信号生成部604は、ユーザーから見えるリソースの更新を制御する実行制御信号を強制的にネゲートする。
一方、第2実行条件判定部602は、実行条件が成立した場合には、実行抑止信号613をアサートしない。したがって、第2デコーダ114から出力された実行制御情報に基づき第2実行制御信号生成部604で生成された実行制御信号によって、命令が実行される。
第2デコーダ114でデコードした命令が並列に実行するペアの命令の実行条件を指定する実行条件指定命令の場合には、第2実行条件判定部602で実行条件の判定が行われる。
第2実行条件判定部602は、実行条件が不成立の場合には、実行抑止信号614をアサートする。すると、第1実行制御信号生成部603は、ユーザーから見えるリソースの更新を制御する実行制御信号を強制的にネゲートする。第2実行条件判定部602は、実行条件が成立した場合には、実行抑止信号614をアサートしない。したがって、第1デコーダ113から出力される実行制御情報に基づき第1実行制御信号生成部603で生成された実行制御信号によって命令が実行される。
条件セット命令は第1演算部116のみで実行できる。実行条件の判定は第1実行条件判定部601で行われる。この命令では、実行抑止信号はアサートされない。命令で指定された条件が成立した場合には、条件判定結果信号615に“1”が、条件不成立時には“0”が出力され、第1演算部116のセレクタ155に送られる。セレクタ155では、条件判定結果信号615の上位15ビットにゼロが連結され、D1バス311を介してレジスタファイル115内のデスティネーションレジスタとして指定されたレジスタに書き込まれる。
実行条件指定命令の処理例についていくつか説明する。実行条件が左コンテナで指定される一例として、F0フラグ47が1の時にペアの命令の実行を指定するEXEF0T命令と、レジスタR2の値をレジスタR0に、レジスタR3の値をレジスタR1に転送する2ワード転送命令“MV2W R0,R2”を並列に実行する場合の処理について説明する。命令のビット割り付けを、図28に示す。2つのショート命令の並列実行なのでFMビットフィールド621は“00”になっている。左コンテナ622ではEXEF0T命令の命令コードが、右コンテナ623には”MV2W R0,R2”の命令コードがエンコードされている。命令キュー111に取り込まれた命令コードが命令デコード部119に出力される。Dステージ402では命令デコードが行われる。
第1デコーダ113は、左コンテナ622の内容を解析し、NOP(ノーオペレーション)を実行する(有効な状態更新は何も行わない)実行制御情報を第1実行制御信号生成部603に出力し、実行条件指定命令であることを示す情報と実行条件情報を第1実行条件判定部601に出力する。第2デコーダ114は、右コンテナ623の内容を解析し、MV2W命令を実行するための実行制御情報を第2実行制御信号生成部604に出力する。Eステージ403では、実行条件判定、演算実行を行う。第2実行制御信号生成部604の出力に基づき、レジスタファイル115中のレジスタR2の値がS4バス304に、レジスタR3の値がS5バス305に各々出力され、シフタ205を介してBラッチ203に取り込まれる。Bラッチ204に保持されたレジスタR2の値は、配線207を介してD2バス312に、レジスタR3の値は、配線207を介してD3バス313に各々出力される。
演算実行と並列に、第1実行条件判定部601では、実行条件の判定が行なわれ、F0フラグ47の値が“1”の場合のみ実行抑止信号612がアサートされる。実行抑止信号612がアサートされなかった場合には、第2実行制御信号生成部604は、第2デコーダ114のデコード結果に基づき、D2バス312、D3バス313の値をレジスタファイル115中のレジスタR0及びR1にそれぞれ書き込む。実行抑止信号612がアサートされた場合には、第2実行制御信号生成部604において、D2バス312、D3バス313から、レジスタファイルに書き込むためのライトイネーブル信号が強制的にネゲートされ、レジスタの値が更新されないように制御される。このようにして、条件が成立した場合には、右コンテナで指定されたオペレーションを実行し、条件が不成立の場合には、右コンテナで指定されたオペレーションを実行しないように制御される。ここでは、MV2W命令の例を示したが、第2デコーダ114、第2演算部117で処理可能なすべてのサブ命令を左コンテナに配置された実行条件指定命令と並列に実行できる。ただし、右コンテナで実行条件指定命令や条件転送命令等を指定した場合の動作は意味がないので保証していない。
次に、実行条件が右コンテナで指定される一例として、F0フラグ47、F1フラグ48が共に“1”の時にペアの命令の実行を指定するEXETAT命令と、レジスタR0の値をレジスタR12に保持されているアドレスで指定されるメモリ領域にストアする“ST R0,@R12”を並列に実行する場合の処理について説明する。ST命令は内蔵データメモリ105にストアするものとする。命令のビット割り付けを、図29に示す。2つのショート命令の並列実行なのでFMビットフィールド626は“00”になっている。左コンテナ627には“ST R0,@R12”の命令コードが、右コンテナ628ではEXETAT命令の命令コードが、エンコードされている。命令キュー111に取り込まれた命令コードが命令デコード部119に出力される。
Dステージ402では、命令のデコードが行われる。第1デコーダ113は、左コンテナ627の内容を解析し、ST命令を実行するための実行制御情報を第1実行制御信号生成部603に出力する。第2デコーダ114は、右コンテナ628の内容を解析し、NOP(ノーオペレーション)を実行する(有効な状態更新は何も行わない)実行制御情報を第2実行制御信号生成部604に出力し、実行条件指定命令であることを示す情報と実行条件情報を第2実行条件判定部602に出力する。Eステージ403では、実行条件判定、演算実行を行う。第1実行制御信号生成部603の出力に基づき、レジスタファイル115中のレジスタR12の値がS3バス303を介してAAラッチ151に取り込まれる。また、レジスタファイル115中のレジスタR0の値が、S1バス301を介して、SDレジスタ160に取り込まれる。
これらの演算実行と並列に、第2実行条件判定部602は、実行条件の判定を行い、F0フラグ47とF1フラグ48が共に“1”の場合のみ実行抑止信号614をアサートする。実行抑止信号614がアサートされなかった場合には、AAラッチ151に保持されたアドレスは、AOラッチ154、OAバス321を介して、オペランドアクセス部104に転送される。また、SDレジスタ160に取り込まれたストアデータが、ラッチ161を介して、整置回路162に入力され、4バイト境界に整置される。また、メモリアクセスの処理がMステージ104に発行される。Mステージ104では、整置回路162の出力が、ラッチ163、ODバス322を介して、オペランドアクセス部104に出力される。オペランドアクセス部104は、OAバス321を介して入力されたオペランドアドレスと、ODバス322を介して入力されたオペランドデータを内蔵データメモリ105に出力し、メモリライトを行う。実行抑止信号614がアサートされた場合には、第1実行制御信号生成部603において、制御部112内でのMステージ404への処理の発行、メモリアクセス要求信号(図示せず)のアサートを抑止し、メモリアクセスを行わないように制御する。この場合、消費電力低減のため、AOラッチ154、ラッチ161の更新も強制的に抑止される。このようにして、条件が成立した場合には、左コンテナで指定されたオペレーションを実行し、条件が不成立の場合には、左コンテナで指定されたオペレーションを実行しないように制御する。
ここでは、ST命令の例を示したが、第1デコーダ113、第2演算部117で処理可能なすべてのサブ命令を右コンテナに配置された実行条件指定命令と並列に実行することが可能である。ただし、左コンテナで実行条件指定命令や条件転送命令等を指定した場合の動作は意味がないので保証していない。
このようにして、ショートフォーマットの実行条件指定命令を付加するだけで、ショートフォーマットの命令の実行条件指定フィールドなしに、すべてのショート命令の条件付き実行が可能となる。実行条件指定命令の条件判定を行う機能と、条件が不成立の場合に命令の実行を抑止する機能を追加するだけのハードウェア追加で、条件実行が実現でき、分岐のペナルティが削減され性能が向上する。また、無条件に実行する命令には、実行条件を指定するフィールドが不要なので、多くの命令をショートフォーマットの命令として割り付けられ、コード効率を向上できる。
ただし、本実施の形態では、実行頻度が高いショート命令(転送、分岐命令等)は、使用頻度の高い条件のサブセットを指定できる条件実行命令をインプリメントすることにより、さらにコードサイズの低減、性能の向上を実現している。また、ロング命令として実行条件の指定ができた方がよい命令(16ビットの分岐変位を持つ条件分岐命令等ショート命令と実行条件指定命令との組み合わせでは実現できず、かつ、使用頻度の高い命令)は、自命令で2つのフラグの複合条件を含む実行条件が指定できる命令をインプリメントすることにより、コードサイズの低減、性能の向上を実現している。また、複数の演算結果の複合条件で実行条件が指定できるため、無駄なオペレーションを削減でき、必要最低限の命令数で処理を実現できるため、コードサイズの低減、性能の向上に寄与している。
また、複数の条件に基づいて“1”又は“0”をセットする条件セット命令をインプリメントすることにより複数の条件でブール演算を行うことが可能となり、マイコンの制御プログラム等複雑な制御条件を少ないコードサイズで高速に処理可能となっている。
次にいくつかの簡単なプログラム例を示す。
40個の32ビットデータD[i](i:0〜39)で、32ビットの基準値より大きい値の数をカウントするプログラムの例を、図30に示す。図31にループ内のリピートブロックの命令メモリの内容を、図32に内蔵データメモリ上のデータD[i]の割り付けを示す。h’は16進数表記を、”||”は並列に実行することを示す。
プログラムは、631〜634で示す初期設定部分と、635〜639で示すループ処理部分との2つの部分に分かれる。LD2W命令(631)は、基準値をレジスタR2,R3のペアにロードする。LDI命令(632)はデータポインタとして使用するレジスタR8に、D[0](641)のアドレス(h’2000)を設定する。命令633では、LD2W命令とNOP命令とが並列に実行される。LD2W命令では、レジスタR0,R1のペアD[0](641)をロードし、レジスタR8の値をオペランドサイズ4だけポストインクリメントする。NOP命令は整置のために挿入された、ノーオペレーション命令である。命令634では、LDI命令とMV2WTAC命令とが並列に実行される。LDI命令はレジスタR6を“0”に初期設定する。MV2WTAC命令は、レジスタR2,R3のペアに保持されている基準値の値を、40ビットに符号拡張してアキュムレータA0に書き込む。
REPI命令(635)を実行することにより、REPI命令の次の命令636から、REP_ENDラベルのある命令639までの4命令ワードのブロックをゼロオーバーヘッドで20回繰り返す。リピートブロック内では、1データ/2クロックサイクルのスループットで処理する。リピート処理は、本発明に直接関係がないので、詳細な説明は省略する。
図31に示したように、この4ワードの命令は各々2つのショート命令を並列に実行する。従って、FMビットはすべて“00”になっている。まず、最初の一回目の処理について説明する。命令636では、LD2W命令とCMP命令とが並列に実行される。CMP命令では先にレジスタR0,R1のペアにロードされているD[0](641)の値とアキュムレータA0に保持されている基準値の値を符号付き数として比較し、もしD[0]641が基準値より大きければF0フラグ47に“1”を、それ以外の場合はF0フラグ47に“0”をセットする。
LD2W命令では、次に処理するデータD[1](642)の値をレジスタR2、R3のペアにロードし、レジスタR8は4だけポストインクリメントされる。命令637では、EXEF0T命令とADDI命令とが並列に実行される。F0フラグ47が“0”、すなわち、D[0]641が基準値より大きかった場合には、レジスタR6の値が1インクリメントされ、そうでなければ実行抑止信号612がアサートされ、レジスタR6の値は更新されない。同様に、命令638ではLD2W命令とCMP命令とが並列に実行され、命令639ではEXEF0T命令とADDI命令とが並列に実行される。ロードしてから、参照するまでは1サイクル空いているので、ロードオペランドの干渉は起こらず、各62ビット命令を1クロックサイクル毎に実行していく。リピート終了後、レジスタR6にはD[i](i:0〜39)で、基準値より大きい値の数が保持されている。
このように、実行条件指定命令と加算命令との並列実行による条件実行により、分岐のペナルティなしに高速な処理が実現されている。また、実行に必要な処理クロックサイクル数を削減することにより、消費電力が低減できる。
図33に、別のプログラム処理例を示す。変数Aのビット0が“1”で、かつ、変数Bのビット7が“1”の時に、変数Cのビット3を“1”にセットする。次に、変数Aのビット2が“0”、もしくは、変数Bのビット15が“1”の時に、サブルーチンSUB_1をコールする。最後は、変数Dが0でなく、かつ、変数Eが8より小さい場合に、変数Fに“1”をそれ以外の場合に変数Fに“0”をセットする。各変数は16ビットである。レジスタR14は変数領域のベースアドレスを、DISP_A等は、各変数の格納位置のベースアドレスからの変位を示す。
LD命令(651)はレジスタR0に変数Aを、LD命令(652)はレジスタR1に変数Bを、LD命令(653)はレジスタR2に変数Cを各々ロードする。BTSTI命令(654)でレジスタR0に保持されている変数Aのビット0をテストする。もし、“1”であればF0フラグ47に“1”を、“0”であればF0フラグ47に“0”をセットする。BTSTI命令(655)でレジスタR1に保持されている変数Bのビット7をテストし、“1”であればF0フラグ47に“1”を、“0”であればF0フラグ47に“0”をセットする。更新前のF0フラグ47に格納されていた変数Aのビット0のテスト結果はF1フラグ48にコピーされる。命令(656)では、前述の2つの比較結果に基づいて条件実行を行う。実行条件はEXETAT命令で指定される。もし、F0フラグ47とF1フラグ48が共に“1”の場合には、BSETI命令が実行され、レジスタR2に保持されている変数Cのビット3が“1”にセットされる。実行条件が成立しなかった場合には、実行抑止信号612がアサートされ、レジスタファイルへの書き込みが抑止されるため、レジスタR2の値は更新されない。ST命令(657)は変数Cをメモリにストアする。
BTSTI命令(658)でレジスタR0に保持されている変数Aのビット2をテストし、テスト結果をF0フラグ47にセットする。BTSTI命令(659)でレジスタR1に保持されている変数Bのビット15をテストし、テスト結果をF0フラグ47にセットする。このとき、更新前のF0フラグ47に格納されていた変数Aのビット2のテスト結果はF1フラグ48にコピーされる。命令660では、前述の2つの比較結果に基づいて条件実行を行う。条件実行はEXETOF命令で指定される。もし、F0フラグ47が“1”、もしくは、F1フラグ48が“0”であった場合には、SUB_1のラベルで指定されるサブルーチンへの分岐が起こる。また、戻り先アドレスとなる、LD命令(661)のアドレスがレジスタR13に書き込まれる。実行条件が成立しなかった場合には、実行抑止信号614がアサートされ、内部的なジャンプ信号(パイプラインキャンセル信号)のアサート、分岐先アドレスのJAバス323への出力、レジスタファイルへの戻り先アドレスの書き込みが抑止されるため、サブルーチンへのジャンプは起こらない。
LD命令(661)はレジスタR0に変数Dを、LD命令(662)はレジスタR1に変数Eを各々ロードする。CMPEQI命令(663)ではレジスタR0に格納された変数Dと即値0とが比較され、一致した場合にF0フラグ47に“1”を、不一致の場合に“0”をセットする。CMPI命令664では、レジスタR1に保持されている変数Eと即値8とが比較され、変数Eが8より小さい場合にF0フラグ47に“1”を、それ以外の場合に“0”をセットする。更新前のF0フラグ47に格納されていた変数Dの比較結果は、F1フラグ48にコピーされる。条件セット命令SETTAF(665)では、F0フラグ47が“1”で、かつ、F1フラグ48が“0”の場合にレジスタR0に“1”を、それ以外の場合にレジスタR0に“0”をセットする。条件判定結果信号615が、条件成立時にのみ“1”になり、セレクタ155に出力され、上位に“0”が連結されて、レジスタR0に書き戻される。ST命令(666)では、レジスタR0の値がメモリ中の変数Fの格納領域にストアされる。
上述のように、実施の形態1のデータ処理装置は、複数のフラグを備え、複合条件で条件実行命令あるいは条件セット命令であるフラグ制御実行命令を実行することにより、条件分岐命令の実行回数を削減できるので、実効速度が向上し、かつ、消費電力を低減できる。また、2つの条件を一度に判定可能な複合条件によって、2回の条件分岐命令を1回の条件実行命令に置き換えることができ、プログラムのコードサイズも低減することができる。
実施の形態1のデータ処理装置では、比較命令等フラグをセットする命令で指定される特定の条件に基づいてフラグの設定を行い、条件実行命令、実行条件指定命令、条件セット命令等の条件判定を行う命令で真の場合に実行するか偽の場合に実行するかを判定している。フラグをセットする命令で真の場合に設定するか、偽の場合に設定するかまでを指定し、条件判定を行う命令で条件が成立した場合(真あるいは偽の場合)のみ実行するような命令セットにしてもよい。
実施の形態1のデータ処理装置では、2つのサブ命令が並列に実行できるVLIWタイプのプロセッサになっているが、フラグの更新や実行条件、セット条件の参照に関してはVLIWタイプのプロセッサに限定される技術ではない。単一命令発行やスーパースケーラ等複数命令発行のRISCもしくはCISCプロセッサにも適応可能である。実施の形態1のデータ処理装置では、2つのフラグを備えるが、3つ以上のフラグを備え、比較命令等でフラグを更新する際に3つ以上のフラグをシフトレジスタのように更新するようにしてもよい。また、3つ以上のフラグの複合条件で実行条件やセット条件を指定するようにしてもよい。また、フラグはオーバーフロー等、どのような条件で設定してもよい。いずれの場合にも、実施の形態1のデータ処理装置と同様の効果が得られる。
複合条件で実行条件やセット条件を指定する技術は、複数のフラグ群を備え、比較命令等フラグを更新する命令で比較結果を反映するフラグ群を明示的に指定する命令セットを処理する場合にも有効である。
本データ処理装置では、左コンテナ52でも右コンテナ53でも実行条件指定命令が実行可能であるが、いずれか一方のみでも有効である。ただし、ハードウェア削減のために各演算部で異なる命令を処理するような構成になっている場合には、両方で実行条件を指定できた方がより多くの命令を条件実行できるため性能が向上する。
本データ処理装置では、FMビット51で命令の実行順序やフォーマットを指定できるようになっているが、このようなフォーマット指定ビットを持たず、必ず複数の命令(オペレーション)が並列に実行できるタイプのVLIWプロセッサであっても、実行条件指定命令は有効である。また、スーパースケーラ・プロセッサであっても、基本的なオペレーション命令と必ず並列に実行する命令で、対応する命令の実行条件を指定する命令をインプリメントしてもよい。実行条件指定命令については、必ずしも複合条件を指定する必要はない。1つの条件のみ指定できる場合でも、多くの命令を条件実行でき、分岐のペナルティを削減できる場合も多い。また、比較命令で演算結果を入れるフラグを命令で明示的に指定する命令セットを処理する場合にも有効である。
本データ処理装置では、条件セット命令で、条件判定結果に基づく値をレジスタにセットしているが、アキュムレータマシンではアキュムレータにセットしてもよい。また、条件セット・アンド・ストア命令をインプリメントし、ストアデータに真偽を示す値を直接セットして、メモリにストアするようにしてもよい。同じ技術が利用可能で、同様の効果を得ることができる。
上述のように、実施の形態1のデータ処理装置によれば、命令コードにどのフラグを更新するかの情報挿入用のフィールドを設けることなしに、複数の比較結果をフラグに保持できるため、短い命令ワード内に多くの命令を割り付けることができ、コード効率を向上させることができる。
また、命令コードとして無条件実行を行う命令には実行条件指定フィールドを設ける必要がないので、短い命令ワードに多くの命令を割り付けることができ、コード効率を向上させることができる。条件実行を行う場合にはこの無条件実行命令と実行条件指定命令とを並列に実行すればよい。実行条件指定命令を備えることにより、少ないハードウェアの追加で、多くの命令の条件実行が可能となり、その分、分岐命令を用いた処理を減らすことができ、分岐ペナルティを削減できる。また、複数の演算結果の複合条件で実行条件やセット条件が指定できるので、条件分岐回数が削減されるのみならず、条件判定やレジスタを初期設定する等のオペレーションが不要となり、実行する命令数を削減できる。
このように、実施の形態1のデータ処理装置は、ハードウェア量の増加が小さく低コストで高性能な装置となる。また、比較/演算命令等のフラグ更新命令の命令コード中に更新対象のフラグを記述する必要がない分、コードサイズを小さくすることができるため、組み込み用途等でプログラムをROM化する場合には、実装するROM容量を削減できコストの低減化を図ることができる。さらに、実行条件指定命令で多様な実行条件を設定することにより、所定の処理を効率的に実行できるため、実現するのに必要なクロックサイクル数を減少させて消費電力を低減を図ることができる。
<実施の形態2.>
次にこの発明の実施の形態2のデータ処理装置について説明する。基本的な構成は、実施の形態1のデータ処理装置と同じである。実施の形態2のデータ処理装置では、実行条件として参照可能なフラグを3つ備える点が、実施の形態1のデータ処理装置と異なる。ここでは、本発明の形態1との相違点に着目し説明する。
図34に実施の形態2のデータ処理装置のプロセッサ状態語(PSW)を示す。実施の形態2のデータ処理装置では、F0フラグ47、F1フラグ48、F2フラグ50の3つのフラグが比較命令等で更新され、実行条件として参照される。ビット14のF2フラグ50が追加されている点が実施の形態1のデータ処理装置と異なり、それ以外のビットの割り付けは同じである。
図35に実行条件指定命令の命令ビット割り付けを示す。実行条件として、F0フィールド703、F1フィールド704、F2フィールド705が有り、F0フラグ47、F1フラグ48、F2フラグ50の3つのフラグが実行条件として参照できる。最大3つのフラグの複合条件(論理積、論理和、排他的論理和)が指定可能である。複合演算は、フラグオペレーション(F−op)フィールド702で指定される。図36に条件分岐命令のビット割り付けを、図37に条件セット命令のビット割り付けを示す。いずれの命令も、実行条件指定命令と同様、F2フィールド715、725が有り、F2フラグ50が実行条件として参照できるようになっている。F−opフィールド712、722、F0フィールド713、723、F1フィールド714、724、F2フィールド715、725の割り付けは、図35の実行条件指定命令と同じである。
実施の形態2のデータ処理装置における実行条件判定に関する基本的な構成は、実施の形態1の図27に示した構成と同様な構成となる。ただし、各部間でやりとりされる情報としてF2フラグ50に関する情報が追加されるため、各ブロック内部の構成は多少異なる。
図38は、実施の形態2のデータ処理装置のPSW部734の内部構成を示す模式図である。PSW部734は図20で示した実施の形態1のPSW部171に相当する。同図に示すように、F2フラグ50に関する部分であるF2更新部412、ラッチ413、セレクタ416及びF2ラッチ417が追加され、セレクタ530,531がセレクタ414,415に置き換えられる。ラッチ534からF2更新部412への転送経路を設けており、比較命令等でF0フラグ47を更新する場合に、更新前のF0フラグ47の値がF1フラグ48にコピーされるとともに、更新前のF1フラグ48の値がF2フラグ50にコピーされる。
なお、制御部122、第1のデコーダ123、第2のデコーダ124、TPSWラッチ221、PSW222、第1実行条件判定部125及び第2実行条件判定部126は、実施の形態1の制御部112、第1のデコーダ113、第2のデコーダ114、TPSWラッチ167、PSW172、第1実行条件判定部601及び第2実行条件判定部602にそれぞれ対応する。
F0フラグ47,F1フラグ48及びF2フラグ50に関する情報は、ラッチ527,528,413から、第1実行条件判定部125及び第2実行条件判定部126に出力される。
また、図38では図示しないが、図27で示す実施の形態1の制御部112と同様、制御部122の第1デコーダ123、第2デコーダ124は、F0フラグ47,F1フラグ48及びF2フラグ50に関する実行条件を、第1実行条件判定部125,第2実行条件判定部126に出力する。第1実行条件判定部125,第2実行条件判定部126は、指定された条件とフラグの値に基づいて、実行抑止信号や条件判定結果信号の生成を行う。
このような構成の実施の形態2のデータ処理装置は、F0フラグ47,F1フラグ48及びF2フラグ50からなる3つのフラグの複合条件で実行条件指定が可能になる。しかも、実施の形態1のデータ処理装置と同様、低コスト、高性能で、消費電力の低いデータ処理装置を得ることができる。さらに、実施の形態2のデータ処理装置では複雑な条件や、古い条件を再度参照することが可能となり、条件分岐命令や古い比較結果の待避等のオペレーションも削減することができるため、更に性能が向上する。ただし、実施の形態1のデータ処理装置に比べ制御はやや複雑になる。
なお、実施の形態2ではデータ処理装置では比較命令で3つのフラグが影響を受ける場合について説明したが、この考え方を延長して4つ以上のフラグが影響を受ける場合のデータ処理装置を構成することも勿論可能である。
<実施の形態3.>
実施の形態2では、比較命令処理時に無条件に3つのフラグの更新を行っている場合を示したが、比較命令でフラグを更新する際、F0フラグ47以外のフラグを更新する命令と更新しない命令との2種類の命令を備えるようにしてもよい。一例として、ショートフォーマットの比較命令のビット割り付けを図39に示す。CMP命令では、演算結果によってF0フラグ47のみを更新し、CMPX命令では、F0、F1及びF2フラグ47、48及び50を更新する。CMP命令とCMPX命令はFフィールド752の“0”/“1”で区別される。
基本的な構成は、実施の形態2のデータ処理装置(図27,図38)とほぼ同じである。構成要素として、第1デコーダ112(123)、第2デコーダ114(124)及びフラグ更新制御部521の処理内容が異なる。
実施の形態3のデータ処理装置のフラグ更新制御部(512に相当)は、F0フラグ47の更新時に、F1フラグ48及びF2フラグ50の更新を抑止する機能が備わっている点で実施の形態2のデータ処理装置とは異なる。例えば、CMP命令実行時には、F0更新部524は演算結果に基づいてF0フラグ47の更新値を生成し、F1更新部525及びF2更新部412は、それぞれ更新前のF1ラッチ534、F2ラッチ417の値をそのまま出力し、CMPX命令実行時には、F0更新部524は演算結果に基づいてF0フラグ47の更新値を生成し、F1更新部525及びF2更新部412は、それぞれ更新前のF0ラッチ533、F1ラッチ534の値を出力するように、F0更新部524、F1更新部525及びF2更新部412は制御される。
実施の形態3のデータ処理装置では、条件実行を行うために必要な比較結果を意図して特定のフラグのみに保持しておけるため、古い比較結果の待避等のオペレーションを削減することができ、その分、実施の形態2のデータ処理装置に比べて性能が向上する。ただし、フラグを更新する命令の一部に1ビット余分に、特定のフラグを更新する/しないを指示するための命令コードが消費されてしまう。しかしながら、3つ以上のフラグビットがある場合には、比較命令でどのフラグを更新するかを指定するビット数に比べれば、さほど多くはない。
<実施の形態4.>
実施の形態4のデータ処理装置では、比較命令で比較結果に基づいてセットするフラグを明示的に指定する。基本的な構成は、実施の形態1のデータ処理装置と同じである。実施の形態1のデータ処理装置との相違点に着目し説明する。図40にショートフォーマットの比較命令のビット割り付けを、図41にロングフォーマットの比較命令のビット割り付けを示す。各々Fdフィールド757、763でF0フラグ47を更新するのか、F1フラグ48を更新するのかを示す。
実行条件判定に関する基本構成は、図27に示した実施の形態1の構成と同様である。図42は、実施の形態4のデータ処理装置のPSW部421の内部構成を示す模式図である。PSW部421は図20で示した実施の形態1のPSW部171に相当する。
また、制御部127、第1のデコーダ128、第2のデコーダ129、第1実行条件判定部130、第2実行条件判定部131、F0更新部824及びF1更新部825は、実施の形態1の制御部112、第1のデコーダ113、第2のデコーダ114、第1実行条件判定部601、第2実行条件判定部602、F0更新部524及びF1更新部525にそれぞれ対応する。
同図に示すように、第1フラグ生成部227及び第2フラグ生成部228が追加され、F1更新部825にはF1ラッチ534の値のみが入力される。
第1フラグ生成部227は第1デコーダ128のデコード結果、ラッチ522を介した第1演算部116の演算結果に基づき、更新値をF0更新部824あるいはF1更新部825に与える。第2フラグ生成部228は第2デコーダ129のデコード結果、ラッチ523を介した第2演算部117の演算結果に基づき、更新値をF0更新部824あるいはF1更新部825に与える。
そして、第1フラグ生成部227は、第1デコーダ128のデコード結果に基づき、第1演算部116の演算結果をF0フラグ47にセットする場合は、更新値をF0更新部824を介してラッチ527に出力し、第1演算部116の実行結果をF0フラグ47にセットする場合は、更新値をF1更新部825を介してラッチ528に出力する。一方、第2フラグ生成部228は、第2デコーダ129のデコード結果に基づき、第2演算部の演算結果をF0フラグ47にセットする場合は、更新値をF0更新部824を介してラッチ527に出力し、第1演算部116の実行結果をF0フラグ47にセットする場合は、更新値をF1更新部825を介してラッチ528に出力する。
このように実施の形態4のデータ処理装置では、条件実行を行うために必要な比較結果を意図的に特定のフラグに保持可能に構成したため、古い比較結果の参照や古い比較結果を含むフラグの複合条件の設定を容易に実現できる。その結果、古い比較結果の待避等のオペレーションもしくは再度比較を行うためのオペレーションを削減できる分、実施の形態1のデータ処理装置に比べ更に性能が向上する。
加えて、第1演算部116と第2演算部117で、異なるフラグを更新する2つの比較命令を並列に実行することも可能となり、複数の条件判定をより短い時間で判定できる効果も奏する。ただし、フラグを更新する命令の少なくともフラグを特定するための領域を、命令コード中に必ず設ける必要がある。
<実施の形態5.>
次に実施の形態5のデータ処理装置について説明する。実施の形態5のデータ処理装置では、1回の比較命令の実行で複数の条件に従って複数のフラグからなるフラグ群をセットする。図43にプロセッサステータスワードを示す。SMビット771、IEビット772、RPビット773、MDビット774、FXビット775、STビット776は、ビット位置が異なるものもあるが、実質的には、実施の形態1のデータ処理装置で用いたプロセッサステータスワードと同じである。LT0フラグ777、LT1フラグ781は、比較命令の第1オペランドが第2オペランドよりも小さいことを示すフラグ、GT0フラグ778、GT1フラグ782は、比較命令の第1オペランドが第2オペランドよりも大きいことを示すフラグ、EQ0フラグ779、EQ1フラグ783は、比較命令の第1オペランドと第2オペランドが一致することを示すフラグ、CYフラグ780は加減算時のキャリー/ボローを示すフラグ、OVフラグ784は算術演算時のオーバーフローを示すフラグである。LT0フラグ777、GT0フラグ778、EQ0フラグ779をまとめてフラグ群0、LT1フラグ781、GT1フラグ782、EQ1フラグ783をまとめてフラグ群1と呼ぶことにする。
実施の形態5のデータ処理装置では、比較命令の比較結果によりフラグ群が更新される。例えば、符号付き数として2つの値を比較する“CMP Rsrc1、Rsrc2”命令では、Rsrc1に保持されている値とRsrc2に保持されている値とが比較され、3つのフラグがセットされる。Rsrc1に保持されている値(第1オペランド)がRsrc2に保持されている値(第2オペランド)より小さい場合に、LT0フラグ777に“1”をセットし、それ以外の場合には“0”をセットする。Rsrc1に保持されている値がRsrc2に保持されている値より大きい場合に、GT0フラグ778に“1”をセットし、それ以外の場合には“0”をセットする。Rsrc1に保持されている値とRsrc2に保持されている値が一致する場合に、EQ0フラグ779に“1”をセットし、それ以外の場合には“0”をセットする。また、フラグ群0の各ビットはフラグ群1にコピーされる。このように、演算結果の保持形態が異なるだけで基本的な考え方は実施態様1のデータ処理装置と変わりはない。
このような演算結果の保持形態をとっても、条件実行命令、実行条件指定命令、条件セット命令は有効に動作する。図44に実行条件指定命令のビット割り付けを示す。F−opフィールド792では、2つのフラグ群の条件の複合条件(論理和、論理積、排他的論理和)を指定する。F0フィールド793ではフラグ群0に関する条件を、F1フィールド794ではフラグ群1に関する条件を、それぞれ指定する。例えば、EXEEQAEQ命令(x=EQ,y=EQ)では、2回の比較結果が共に一致していた場合に、条件が成立する。基本的な考え方は実施の形態1のデータ処理装置と同じである。図45にロングフォーマットの条件分岐命令のビット割り付けを、図46にロングフォーマットの条件セット命令のビット割り付けを示す。各々、実行条件指定命令と同じ条件で分岐の実行や値のセットが行われる。図45において、801〜805はそれぞれオペレーションコード、F−opフィールド、フラグ群0フィールド、フラグ群1フィールド及びdisp16フィールドである。図46において、811〜817はオペレーションコード、F−opフィールド、フラグ群0フィールド、フラグ群1フィールド、オペレーションコード、Rdestフィールドである。
実行条件判定に関する基本構成は、実施の形態1の図27に示した構成と同様の構成となる。図47は、実施の形態5のデータ処理装置のPSW部1001の内部構成を示す模式図である。PSW部1001は図20で示した実施の形態1のPSW部171に相当する。
図47において、フラグ群0更新部1003、フラグ群1更新部1004及びCY,OV更新部1005はそれぞれ図20で示した実施の形態1のF0更新部524、F1更新部525、C更新部526に対応し、ラッチ1006〜1008は実施の形態1のラッチ527〜529に対応し、セレクタ1009〜1011はそれぞれ実施の形態1のセレクタ530〜532に対応し、フラグ群0ラッチ1012、フラグ群1ラッチ1013はそれぞれ実施の形態1のF0ラッチ533、F1ラッチ534に対応する。すなわち、1回の比較結果によって保持するフラグ数が増えただけで、基本的な構成及び動作は実施の形態1と同様になる。
なお、制御部132、第1のデコーダ133、第2のデコーダ134、第1実行条件判定部135及び第2実行条件判定部136は、実施の形態1の制御部112、第1のデコーダ113、第2のデコーダ114、TPSWラッチ167、PSW172、第1実行条件判定部601及び第2実行条件判定部602にそれぞれ対応する。
比較結果等でフラグを更新するフラグ更新命令の処理時には、演算結果に基づいてフラグ群0の3ビット更新値がフラグ群0更新部1003で生成され、ラッチ1006に出力される。また、この場合、フラグ0ラッチ1012から出力される更新前のフラグ群0の値がフラグ群1更新部1004から出力されラッチ1007に出力される。このように、実施の形態1と同様、フラグ群0の更新時には更新前のフラグ群0の値がフラグ群1に転送される。
ラッチ1006、1007の内容は、第1実行条件判定部135、第2実行条件判定部136に出力される。第1実行条件判定部135、第2実行条件判定部136は、図47では図示しないが、図27で示す実施の形態1の制御部112と同様、制御部132の第1デコーダ133及び第2デコーダ134からそれぞれ出力される実行条件情報とPSW部1001から出力されるフラグ群0及びフラグ群1の情報に基づいて、実行抑止信号や条件判定結果信号の生成を行う。このようなフラグ群(複数のフラグ)の保持形態をとる実施の形態5のデータ処理装置においても、実施の形態1と同様、条件実行命令、条件セット命令、実行条件指定命令が実現可能である。
実施の形態5のデータ処理装置は、実行条件の判定を容易にするように比較命令による大小比較結果を3つのフラグで保持するようになっているが、EQフラグとLTフラグのみを保持するようにしてもよい。この場合、条件がLE(less or equal)の場合は、”LTフラグが1またはEQフラグが1”であることを判定し、条件がGT(greater than)の場合には、”LTフラグが0かつEQフラグが0”であることを判定すればよい。
実施の形態5のデータ処理装置は、比較命令等のフラグ更新命令で更新するフラグ群を指定することなしに、フラグ群内の複数のフラグにより複数の比較結果を保持、更新できる。また、単一条件もしくは2つの比較結果の複合条件で条件実行命令、実行条件指定命令、条件セット命令の条件を指定できる。このように、実施の形態5のデータ処理装置は、実施の形態1のデータ処理装置と同じ機能が実現でき、実施の形態1のデータ処理装置と同様低コストで性能を向上できる効果がある。
加えて、実施の形態5のデータ処理装置は、第1及び第2のフラグ群で構成される複雑な複合条件で、より高度な条件セット命令を実行可能にした処理が可能となる。
<実施の形態6.>
図48に実施の形態6のデータ処理装置で用いるプロセッサステータスワード(PSW)を示す。実施の形態5のデータ処理装置のプロセッサステータスワード(PSW)と異なる点は、ビット15がフラグポインタ(FP)ビット834になっている点にある。本データ処理装置では、実施の形態5のデータ処理装置と異なり、FPビット834の値に従って、2つのフラグ群のいずれか一方を選択し更新する。フラグポインタ(FP)834はフラグが更新される毎に、トグルで変化する。
このように制御することにより、比較命令で更新するフラグを指定することなく複数の比較結果を保持できるので、実施の形態1や実施の形態5のデータ処理装置と同じ効果がある。LT0フラグ827、GT0フラグ828、EQ0フラグ829をまとめてフラグ群0、LT1フラグ831、GT1フラグ832、EQ1フラグ833をまとめてフラグ群1と呼ぶことにする。
実行条件判定に関する基本的な構成は、図27で示した実施の形態1の構成と同様な構成となる。図49は、実施の形態6のデータ処理装置のPSW部846の内部構成を示す模式図である。PSW部846は図20で示した実施の形態1のPSW部171に相当する。
ラッチ859,860,861はそれぞれフラグ群0,フラグ群1,FPビット834を保持する。フラグ群生成部848はラッチ522,523それぞれに保持された第1演算部116,第2演算部117それぞれの演算結果と、第1デコーダ113,第2デコーダ114それぞれのデコード結果に基づいて、フラグの更新データを生成する。反転回路849ではFPビットラッチ861の値を反転してラッチ855に出力する共に、セレクタ850,851に出力する。
セレクタ850,851は反転回路849の出力に基づき、更新するデータを選択する。反転回路849の出力がフラグ群0(比較結果を反映する側のフラグ群)を指示する時、セレクタ850はフラグ群生成部848からのフラグの更新データをラッチ853に出力し、セレクタ851はフラグ群1ラッチ860の出力である更新前の自身のデータをラッチ854に出力する。反転回路849の出力がフラグ群1を指示する時、セレクタ851はフラグ群生成部848からのフラグの更新データをラッチ854に出力し、セレクタ850はフラグ群0ラッチ859の出力である更新前の自身のデータをラッチ853に出力する。
フラグ群0、フラグ群1、FPビット834の更新値は、それぞれラッチ853,854,855に取り込まれD1バス311を介して各部に出力される。また、セレクタ856、857、858を介してフラグ群0ラッチ859、フラグ1ラッチ860、FPビットラッチ861の値が更新される。上述のように、FPビットはフラグ群0,フラグ群1の更新に先だって、反転回路849により反転される。したがって、FPビットラッチ861に保持されるFPビット834の値は、直前に更新した側のフラグ群を指示していることになる。
なお、CY更新部864、ラッチ865、セレクタ866及びCYラッチ867はそれぞれ、図20で示した実施の形態1のC更新部526、ラッチ529、セレクタ532及びCラッテ535に対応し、同様な動作をする。
また、制御部137、第1のデコーダ138、第2のデコーダ139、TPSWラッチ225、PSW226、第1実行条件判定部140及び第2実行条件判定部141は、実施の形態1の制御部112、第1のデコーダ113、第2のデコーダ114、TPSWラッチ167、PSW172、第1実行条件判定部601及び第2実行条件判定部602にそれぞれ対応する。
第1実行条件判定部140、第2実行条件判定部141では、第1デコーダ138、第2デコーダ139のデコード結果(実行条件)と、ラッチ853、854、855の値に基づいて条件判定を行う(図27,図49参照)。フラグの更新は演算結果に基づいて行われるため、タイミング的には実行ステージでの命令の実行後次の実行における参照までに行われる。命令が連続して処理される場合には、フラグ群生成部848でのフラグの更新は、条件判定を行う命令の直前に実行した命令のデコード結果に基づいて行われることになる。
上述の例では、フラグ群は2組しかないが、フラグ群は3組以上あってもよい。この場合、フラグ群の数に応じてポインタのビット数は増やす必要がある。また、実施の形態1で示したように各フラグ群が1ビットから構成される場合にも適応可能である。また、実施の形態6では、FPビット834は、フラグ群の更新に先立って更新(反転)されているが、フラグ群の更新後に更新するように構成してもかまわない。
このような実施の形態6のデータ処理装置の構成/制御をとることにより、実施の形態1と同様比較命令で明示的に演算結果を格納するフラグを指定することなく、複数の演算結果を保持できる。また、実施の形態6のデータ処理装置は、フラグの数が多い場合には、更新の制御が単純になるという利点がある。ただし、条件判定時にFPビット834の値も参照する必要があるため、実行条件判定部140,141の制御はやや複雑になる。
また、実施の形態6のデータ処理装置は、保持するフラグ、実行条件は増えるが、すべての大小比較結果が1回の比較命令の実行で判定できるので、その分性能は向上する。ただし、ハードウェアの制御はやや複雑になる。また、比較命令については、比較条件毎に命令を持たなくてよいので、比較命令の命令数を削減することができる。しかし、条件分岐命令や条件セット命令をショートフォーマットの命令として割り付ける際に、実行条件を指定するフィールドが増大する。
また、実施の形態6のデータ処理装置は、FPビット834の値によって、更新対象のフラグ群を指定することができるため、フラグの更新を促す比較命令等のフラグ更新命令中に更新対象のフラグを特定する領域を設ける必要はない。
<実施の形態7.>
実施の形態7のデータ処理装置は、4つのサブ命令(オペレーション)を並列に実行可能にしたものである。
図50に、実施の形態7のデータ処理装置が処理する命令フォーマットを示す。4ビットのフォーマットを示すFMビット871は、各2ビットで、872のコンテナ1と873のコンテナ2の組み合わせと、874のコンテナ3と875のコンテナ4の組み合わせについて、実施の形態1のデータ処理装置で用いたFMビット51(図3参照)と同様のフォーマット指定を行う。各コンテナ872〜875は15ビットで表現される。
図51は、実施の態様7のデータ処理装置の内部構成を示すブロック図である。同図において、881は、MPUコア部である。命令フェッチ部894、オペランドアクセス部895は、図8で示した実施の形態1のデータ処理装置における命令フェッチ部102、オペランドアクセス部104とほぼ同じ働きをする。ただし、命令データは64ビット幅で取り込まれる。バスインターフェイス部等、その他のブロックはここでは図示していない。
MPUコア部881は、命令キュー882、制御部883、レジスタファイル891、第1演算部889、第2演算部890、第3演算部892、第4演算部893からなる。命令キュー882は、64ビットの命令を最大2つ保持する、FIFO制御の命令バッファである。第1演算部889は、インクリメンタやデクリメンタ、加算器等を備え、PC値の管理や分岐先アドレスの計算、リピート制御、算術演算、比較、転送等を行う。第2演算部890は、ALUや整置回路等を備え、オペランドアクセス、ポインタの更新、算術論理演算、転送、比較、ロードしたデータの保持・整置、ストアするデータの保持・整置を行う。第3演算部892は、ALU、シフタ等を備え、算術論理演算、転送、比較、シフト等の演算処理を行う。第4演算部893は積和演算器やシフタ、アキュムレータ等を備え、主として積和、積差、アキュムレータシフト等を行う。このように、各々レジスタファイルに結合された4つの独立した演算部889、、890、892、893を備える。
制御部883には、命令デコード部884が含まれる。命令デコード部884には、4つのデコーダがある。第1デコーダ885は、主として872のコンテナ1のオペレーションコードをデコードし、レジスタファイル891と第1演算部889への制御信号を生成する。主として、分岐命令、リピート命令、算術演算、比較、転送命令等が、872のコンテナ1のフィールドで指定される。第2デコーダ886は、主として873のコンテナ2のオペレーションコードをデコードし、レジスタファイル891と第2演算部890への制御信号を生成する。主として、ロード/ストア命令、算術論理演算命令、転送命令、比較命令等が、873のコンテナ2のフィールドで指定される。第3デコーダ887は、主として874のコンテナ3のオペレーションコードをデコードし、レジスタファイル891と第3演算部892への制御信号を生成する。主として、算術論理演算命令、転送命令、比較命令、シフト命令等が、874のコンテナ3のフィールドで指定される。第4デコーダ888は、主として875のコンテナ4のオペレーションコードをデコードし、レジスタファイル891と第4演算部893への制御信号を生成する。主として、乗算、積和/積差演算、算術演算、シフト命令等が、875のコンテナ4のフィールドで指定される。
実施の形態7のデータ処理装置のプロセッサステータスワードPSWは、実施の形態1のデータ処理装置のPSWと同じである。また、実施の形態1のデータ処理装置と同じサブ命令が実行可能である。
図52は、図51の制御部883内の実行条件判定に関する部分を抜き出したブロック図を示す。第1〜第4デコーダ885〜888は各々命令実行に必要なデコード結果を第1〜第4実行制御信号生成部905〜908にそれぞれ出力し、条件実行命令や実行条件指定命令の実行条件を各々第1〜第4実行条件判定部901〜904に出力する。また、実行条件判定部901〜904はそれぞれPSW部909(図20で示しPSW部171の内部構成と同じ)からフラグ情報が入力される。
実行条件判定部901〜904はそれぞれ、条件実行命令や実行条件指定命令を実行する場合に、実行条件が判定される。自命令の実行条件を指定する条件実行命令処理時に、条件が不成立であった場合には、各々対応する実行制御信号生成部に実行抑止信号がアサートされ、命令実行による状態更新を行う制御信号を強制的にネゲートする。条件が成立した場合には、実行抑止信号はアサートされず、デコード結果に基づいて命令が実行される。実行条件指定命令は各々ペアの命令の実行条件を指定する。実行条件指定命令処理時に、条件が不成立であった場合には、各々ペアのデコーダに対応する実行制御信号生成部に実行抑止信号がアサートされ、命令実行による状態更新を行う制御信号を強制的にネゲートする。条件が成立した場合には、実行抑止信号はアサートされず、デコード結果に基づいて命令が実行される。
例えば、第1デコーダ885で処理した命令が実行条件指定命令であった場合には、第1実行条件判定部901で実行条件の判定を行う。そして、第1実行条件判定部901が実行条件の不成立を判定すると第2実行制御信号生成部906に出力する実行抑止信号をアサートし、第2デコーダ886のデコード結果に基づく命令の実行を抑止する。一方、第1実行条件判定部901が実行条件の成立を判定すると第2実行制御信号生成部906に出力する実行抑止信号をアサートせず、第2デコーダ886のデコード結果に基づく命令を実行させる。
また、第3デコーダ887でデコードした命令が自命令の実行条件を指定する条件実行命令の場合、第3デコーダ887では条件が成立した場合に行う処理に必要な制御信号が第3実行制御信号生成部907に送られ、条件実行命令の実行条件が第3実行条件判定部903に出力される。そして、第3実行条件判定部903はPSW部909のフラグ情報と実行条件とに基づいて実行条件判定を行い、条件実行命令で実行条件が不成立の場合には、第3実行制御信号生成部907に出力する実行抑止信号をアサートし、第3デコーダ887のデコード結果に基づく命令の実行を抑止する。一方、第3実行条件判定部903は実行条件が成立の場合には、第3実行制御信号生成部907に出力する実行抑止信号をアサートせず、第3デコーダ887のデコード結果に基づく命令を実行させる。
このように、実施の形態7のデータ処理装置では、4つのオペレーションを並列に実行可能であるが、それ以上の数のオペレーションを並列に実行する場合にも、本技術を拡張することにより適応可能である。また、FMビット871は必ずしも必要ではなく、FMビット871を省略して必ず4つのオペレーションを並列に実行するようにしてもよい。また、4ビットのフォーマット指定ビットを設け、4ビットそれぞれ各コンテナの命令の実行順序を指定するようにしてもよい。例えば、4ビットすべて0の場合は、4つのサブ命令を並列に実行し、0と1が混在する場合は0が指定されているコンテナの命令を先に実行し、1が指定されているコンテナの命令をその後に実行する等の制御を行う。どのような実行順序指定を行うのか、どのようなフォーマット指定を行うのかは、必要に応じて設定すればよい。
このように、実施の形態7のデータ処理装置は、実施の形態1のデータ処理装置が2つの命令として扱ったものを1つの命令として扱うことができるた。このような4つのオペレーションを並列に実行する高性能なVLIWプロセッサの場合にも、実行条件指定命令は有効に作用する。2組の2つのサブ命令(命令1と実行条件指定命令1、命令2と実行条件指定命令2)で、実行条件指定命令1と実行条件指定命令2の実行条件を逆にしておくと、実行条件指定命令1の実行条件成立時に命令1を実行し、実行条件指定命令1の実行条件不成立時に命令2を実行するようにもできる。このように、細やかな実行条件指定ができるので、実施の形態7のデータ処理装置の更に性能はさらに向上する。
<実施の形態8.>
実施の形態8として、4つの演算を並列に実行する別のデータ処理装置を示す。実施の形態8のデータ処理装置の命令フォーマットは、実施の形態7のデータ処理装置と同じであり、基本的な構成もほぼ同じである。実施の形態8のデータ処理装置では、実行条件指定命令の命令仕様と、それを実現するための条件判定方法、実行制御信号抑止方法が異なる。
図53に、実施の形態8のデータ処理装置が処理する実行条件指定(EXEC)命令のビット割り付けを示す。CONDn(条件、nは1〜3)フィールドは各々対応するサブ命令の実行条件を指定する。EXEC命令が872のコンテナ1で指定された場合には、COND1フィールド912は873のコンテナ2におかれたサブ命令の実行条件を、COND2フィールド913は874のコンテナ3におかれたサブ命令の実行条件を、COND3フィールド914は875のコンテナ4におかれたサブ命令の実行条件を、それぞれ指定する。EXEC命令が873のコンテナ2で指定された場合には、COND1フィールド912は872のコンテナ1におかれたサブ命令の実行条件を、COND2フィールド913は874のコンテナ3におかれたサブ命令の実行条件を、COND3フィールド914は875のコンテナ4におかれたサブ命令の実行条件を、それぞれ指定する。EXEC命令が874のコンテナ3で指定された場合には、COND1フィールド912は872のコンテナ1におかれたサブ命令の実行条件を、COND2フィールド913は873のコンテナ2におかれたサブ命令の実行条件を、COND3フィールド914は875のコンテナ4におかれたサブ命令の実行条件を、それぞれ指定する。EXEC命令が875のコンテナ4で指定された場合には、COND1フィールド912は872のコンテナ1におかれたサブ命令の実行条件を、COND2フィールド913は873のコンテナ2におかれたサブ命令の実行条件を、COND3フィールド914は874のコンテナ3におかれたサブ命令の実行条件を、それぞれ指定する。このように、1つの条件指定命令で残り3つのサブ命令の実行条件を指定する。実行条件としては、F0フラグ47のみ、F0フラグ47とF1フラグ48の2つのフラグの論理積が指定可能で、各フラグの反転も参照可能である。また、実行条件によらず無条件に実行することも指定可能である。
図54は制御部920内の実行条件判定に関する部分を抜き出したブロック図であり、制御部920は図51で示した制御部883に相当する。同図に示すように、第1〜第4デコーダ921〜924はそれぞれ主として872〜875のコンテナ1〜コンテナ4に格納された命令のデコードを行い、各々第1〜第4実行制御信号生成部929〜932に命令の実行に必要な情報を含むデコード結果を出力する。また、第1〜第4デコーダ921〜924はそれぞれ第1〜第4実行条件判定部925〜928に実行条件を送る。
実行条件指定命令処理時には、対応する実行条件判定部は各CONDフィールドで指定された条件の判定を行い、実行条件不成立時には各CONDフィールドに対応する実行制御信号生成部に出力する実行抑止信号をアサートする。いずれかの実行条件判定部から実行抑止信号がアサートされた実行制御信号生成部では、状態の更新に関する実行制御信号を強制的にネゲートする。自命令の実行条件を指定する条件実行命令処理時で、実行条件不成立時には、各々対応する実行制御信号生成部に実行抑止信号をアサートする。
例えば、第1デコーダ921で処理した命令が実行条件指定命令であった場合には、第1実行条件判定部925で実行条件の判定を行う。そして、第1実行条件判定部925がコンテナ2〜コンテナ4におかれたサブ命令それぞれの実行条件の成立/不成立を判定し、その判定結果が不成立、不成立、成立であった場合、第2実行制御信号生成部930及び第3実行制御信号生成部931に出力する実行抑止信号をアサートし、第2デコーダ992及び第3デコーダ993それぞれのデコード結果に基づく命令の実行を抑止し、第4実行制御信号生成部932に出力する実行抑止信号をアサートせず、第4デコーダ924のデコード結果に基づく命令を実行させる。
実施の形態8のデータ処理装置では、並列に実行しない命令についても、実行条件指定が有効になる。例えば、872のコンテナ1で実行条件指定命令を保持し、874のコンテナ3と875のコンテナ4の2命令がシーケンシャル実行する2命令の場合には、874のコンテナ3と875のコンテナ4のどちらのサブ命令に対しても、実行条件指定命令で指定された条件が有効になる。また、実行条件指定命令とペアの命令を必ずしも並列に実行しなくてもよい。シーケンシャル実行する2命令の一方が実行条件指定命令であった場合、ペアの命令に対しても実行条件指定命令で指定された条件が有効になる。
実施の形態8のデータ処理装置も、実施の形態7と同様、FMビットはなくてもよいし、異なるフォーマット指定方法をとってもよい。
したがって、実施の形態8のデータ処理装置は、1つの実行条件指定命令により、3つの命令の実行/抑止を制御することができるため、効率的な実行条件指定を行うことができる。
加えて、実施の形態8のデータ処理装置は、1つの条件指定命令で他の3つのオペレーション(サブ命令)の実行条件をそれぞれ独立して記述しているため、それぞれの実行条件を固有に設定することができ、必要最小限のコードサイズで非常に細やかな実行条件の指定が可能になり、少ないコードサイズで命令が記述でき更なる性能向上が実現できる。
<実施の形態9.>
実施の形態8の条件指定命令の実行条件指定方法が異なる実施の形態9のデータ処理装置について説明する。実施の形態9のデータ処理装置の命令フォーマットを図55に示す。実施の形態9のデータ処理装置では、フォーマット指定ビットを備えず、4つのコンテナ951〜954に保持された4つのサブ命令が必ず並列に実行される。各サブ命令は、16ビットで構成される。基本的な構成は実施の形態7のデータ処理装置とほぼ同じであり、詳細な説明は省略する。実行条件判定方法は実施の形態8のデータ処理装置とほぼ同じである。ただ、条件指定命令の実行条件指定方法のみが異なる。
図56に、実施の形態9のデータ処理装置の条件実行命令の命令ビット割り付けを示す。実施の形態9のデータ処理装置では、CONDフィールド942で1つの命令の共通条件が指定される。F0フラグ、F1フラグ、及び2つのフラグの複合条件が指定可能である。OPU1、OPU2、OPU3フィールド943、944、945では、他の各コンテナに対応する条件が指定される。CONDフィールド942で指定された条件が真の場合に実行する、偽の場合に実行する、あるいは、条件によらず無条件に実行するという3つが各コンテナ毎に指定可能になっている。OPU1、OPU2、OPU3フィールド943、944、945とコンテナ1(951)〜コンテナ4(954)との対応関係は、実施の形態8のデータ処理装置におけるCONDI1、COND2、COND3フィールド912〜914とコンテナ1(872)〜コンテナ4(875)との対応と同様である。
このように、実施の形態9のデータ処理装置は、実施の形態8と同様、1つの条件指定命令で他の3つのオペレーション(サブ命令)の実行条件を個別に指定できるので、少ない命令コードで非常に細やかな実行条件の指定が可能になり、少ないコードサイズで更なる性能向上が実現する。
なお、実施の形態9のデータ処理装置において、ハードウェアを単純化するために、実行条件を指定し、特定コンテナで指定される命令は条件成立時に実行し、その他のコンテナで指定される命令である第2の演算は条件不成立時に実行するように限定してもよい。また、実行条件を指定し、すべてのサブ命令を条件成立時のみに実行するように限定してもよい。ただし、性能は上述の場合に比べて落ちる場合もある。いずれにしても、性能とコストのトレードオフで、インプリメントする機能を決定すればよい。
また、何らかの実行順序指定やフォーマット指定を行うためのフォーマット指定ビットを命令コード内に備えるようにしてもよい。実行順序指定を行うようにした場合には、実行条件指定命令と並列に実行する命令でなくても、同じ64ビット内にある命令であれば、実行条件の指定は有効となる。
このような実行条件指定命令をインプリメントすることにより、命令1で実行条件を指定し、命令2は条件成立時に実行し、命令3は条件不成立時に実行し、命令4は実行条件によらず無条件に実行する等の条件分岐命令を伴う一連の処理を一括して行うことができる。このように、実施の形態9のデータ処理装置は、きめ細やかな実行条件指定を1つのサブ命令で実現することにより、各命令に実行条件指定フィールドを備えることなく、効率の良い条件実行が可能となり、処理性能が向上するとともに、コードサイズも削減できる。
発明は詳細に記述されたが、上述した記述は全て例示的なもので限定的ではない。本発明の範囲を離れることなく多くの他の改良や変形が考えられると思われる。
Claims (25)
- 第1及び第2の命令を規定した第1及び第2の命令コードを含む並列処理命令を受けるデータ処理装置であって、
前記第1の命令コードをデコードして第1のデコード結果を出力する第1のデコーダ(113,885,921)と、
前記第2の命令コードをデコードして第2のデコード結果を出力する第2のデコーダ(114,886,922)と、
フラグ情報を格納するフラグ情報格納手段(171)と、
前記第1のデコード結果に基づき、前記第1の命令の実行制御を行う第1の実行制御手段(603,905,929)と、
前記第2のデコード結果に基づき、前記第2の命令の実行制御を行う第2の実行制御手段(604,906,930)と、
前記第1の命令が前記フラグ情報に基づく第2の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第2の命令用実行条件を満足するか否かに基づき、前記第2の命令を実行するか抑止するかを制御する第2の命令用実行抑止情報を前記第2の実行制御手段に出力する第1の実行条件判定手段(601,901,925)とを備え、
前記第2の実行制御手段は、前記第2の命令用実行抑止情報の指示に基づき、前記第2の命令の実行あるいは抑止制御を行うことを特徴とする、
データ処理装置。 - 請求の範囲1記載のデータ処理装置であって、
前記第2の命令が前記フラグ情報に基づく第1の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第1の命令用実行条件を満足するか否かに基づき、前記第1の命令を実行するか抑止するかを制御する第1の命令用実行抑止情報を前記第1の実行制御手段に出力する第2の実行条件判定手段(602,902,926)をさらに備え、
前記第1の実行制御手段は、前記第1の命令用実行抑止情報の指示に基づき、前記第1の命令の実行あるいは抑止制御を行うことを特徴とする。 - 請求の範囲1記載のデータ処理装置であって、
前記並列処理命令は、第3及び第4の命令を規定した第3及び第4の命令コードをさらに含み、
前記第3の命令コードをデコードして第3のデコード結果を出力する第3のデコーダ(887,923)と、
前記第4の命令コードをデコードして第4のデコード結果を出力する第4のデコーダ(888,924)と、
前記第3のデコード結果に基づき、前記第3の命令の実行制御を行う第3の実行制御手段(907,931)と、
前記第4のデコード結果に基づき、前記第4の命令の実行制御を行う第4の実行制御手段(908,932)と、
前記第3の命令が、前記フラグ情報に基づく第4の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第4の命令用実行条件を満足するか否かに基づき、前記第4の命令を実行するか抑止するかを制御する第4の命令用実行抑止情報を前記第4の実行制御手段に出力する第3の実行条件判定手段(903,927)とをさらに備え、
前記第4の実行制御手段は、前記第4の命令用実行抑止情報の指示に基づき、前記第4の命令の実行あるいは抑止制御を行うことを特徴とする。 - 請求の範囲1記載のデータ処理装置であって、
前記並列処理命令は、第3の命令を規定した第3の命令コードをさらに含み、前記第3の命令コードをデコードして第3のデコード結果を出力する第3のデコーダ(887,923)と、
前記第3のデコード結果に基づき、前記第3の命令の実行制御を行う第3の実行制御手段(907,931)とをさらに備え、
前記第1の実行条件判定手段(901,925)は、前記第1の命令が、前記第2の命令用実行条件とともに前記フラグ情報に基づく第3の命令用実行条件をも規定した実行条件指定命令の場合、前記フラグ情報が前記第3の命令用実行条件を満足するか否かに基づき、前記第3の命令を実行するか抑止するかを制御する第3の命令用実行抑止情報を前記第3の実行制御手段に出力し、
前記第3の実行制御手段は、前記第3の命令用実行抑止情報の指示に基づき、前記第3の命令の実行あるいは抑止制御を行うことを特徴とする。 - 請求の範囲4記載のデータ処理装置であって、
前記第1の命令が実行条件指定命令の場合、前記第1の命令コード中に前記第2の命令用実行条件及び前記第3の命令用実行条件はそれぞれ独立して記述される。 - 請求の範囲4記載のデータ処理装置であって、
前記第1の命令が実行条件指定命令の場合、前記第1の命令コード中に前記第2の命令用実行条件及び前記第3の命令用実行条件はそれぞれ一部重複して記述され、
前記第2の命令用実行条件は共通実行条件と第2の命令用固有実行条件とから構成され、前記第3の命令用実行条件は前記共通実行条件と第3の命令用固有実行条件とから構成される。 - 請求の範囲4記載のデータ処理装置であって、
前記第1の命令が実行条件指定命令の場合、前記第1の命令コード中に前記第2の命令用実行条件及び前記第3の命令用実行条件に共通な共通実行条件が記述され、
前記第1の実行条件判定手段は、前記共通実行条件を満足する場合に前記第2の命令の実行を指示する前記第2の命令用実行抑止情報を出力するとともに前記第3の命令の抑止を指示する前記第3の命令用実行抑止情報を出力し、前記共通実行条件を満足しない場合に前記第2の命令の抑止を指示する前記第2の命令用実行抑止情報を出力するとともに前記第3の命令の実行を指示する前記第3の命令用実行抑止情報を出力する。 - 請求の範囲1記載のデータ処理装置であって、
前記フラグ情報は第1及び第2のフラグ情報を含み、
前記実行条件指定命令は、前記第1のフラグ情報及び前記第2のフラグ情報で決定される複合条件からなる実行条件を指定する命令である。 - フラグ情報の更新を指示するフラグ更新命令及び前記フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能なデータ処理装置であって、
前記フラグ情報を格納するフラグ情報格納手段(171,734,1001)と、
実行対象の命令が前記フラグ更新命令であった場合、該フラグ更新命令に基づきフラグ更新に関連したフラグ更新関連情報を前記フラグ情報格納手段に出力し、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報の内容に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段(113,116,601,603(114,117,602,604))とを備え、
前記フラグ情報は、それぞれが少なくとも1つのフラグの情報を含む第1及び第2のフラグ情報を有し、
前記フラグ情報格納手段は、前記フラグ更新関連情報に基づき前記第1のフラグ情報を更新する際、前記第2のフラグ情報を更新前の前記第1のフラグ情報に更新することを特徴とする、
データ処理装置。 - 請求の範囲9記載のデータ処理装置であって、
前記第1のフラグ情報は複数のフラグの情報を含み、前記第2のフラグ情報は複数のフラグの情報を含んでいる。 - 請求の範囲9記載のデータ処理装置であって、
前記フラグ情報は第3のフラグ情報をさらに有し、
前記フラグ情報格納手段は、前記第2のフラグ情報を更新する際、前記第3のフラグ情報を更新前の前記第2のフラグ情報に更新することを特徴とする。 - フラグ情報の更新を指示するフラグ更新命令及び前記フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能なデータ処理装置であって、
前記フラグ情報を格納するフラグ情報格納手段(421,846)と、
実行対象の命令が前記フラグ更新命令であった場合、該フラグ更新命令に基づきフラグ更新に関連したフラグ更新関連情報を前記フラグ情報格納手段に出力し、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段(113,116,601,603(114,117,602,604))とを備え、
前記フラグ情報は、それぞれが少なくとも1つのフラグの情報を含む第1及び第2のフラグ情報と、前記第1及び第2のフラグ情報のうち更新対象となるフラグ情報を特定する更新対象フラグ情報を含み、
前記フラグ情報格納手段は、前記フラグ更新関連情報に基づき、前記第1及び第2のフラグ情報のうち前記更新対象フラグ情報が指示するフラグ情報を更新する。 - 請求の範囲12記載のデータ処理装置であって、
前記第1のフラグ情報は複数のフラグの情報を含み、前記第2のフラグ情報は複数のフラグの情報を含んでいる。 - 請求の範囲9あるいは12記載のデータ処理装置であって、
前記フラグ制御実行命令は前記第2のフラグ情報のみに基づき実行内容が決定される命令を含む。 - 請求の範囲9あるいは12記載のデータ処理装置であって、
前記フラグ制御実行命令は、前記第1のフラグ情報及び前記第2のフラグ情報による複合条件に基づき実行内容が決定される命令を含む。 - フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能なデータ処理装置であって、
前記フラグ情報を格納するフラグ情報格納手段(171,734,1001)と、
前記命令が前記フラグ制御実行命令であった場合、該フラグ情報の内容に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段(113,601,603(117,602,604))とを備え、
前記フラグ情報は、それぞれが少なくとも1つのフラグの情報を含む第1及び第2のフラグ情報を有し、
前記フラグ制御実行命令は、前記第1及び第2のフラグ情報で決定される場合条件に基づき、該複合条件成立時に第1の値を所定の格納部に書き込み、不成立時に第2の値を前記所定の格納部に書き込む命令を含むことを特徴とする、
データ処理装置。 - 請求の範囲16記載のデータ処理装置であって、
前記第1のフラグ情報は複数のフラグの情報を含み、前記第2のフラグ情報は複数のフラグの情報を含む。 - 請求の範囲16記載のデータ処理装置であって、
前記所定の格納部は、レジスタ、アキュームレータあるいはメモリを含む。 - 複数の命令コードを含むプログラムを実行するデータ処理装置であって、
前記複数の命令コードによって各々定められた命令を実行する命令実行部と、
前記複数の命令コードに応じて前記命令実行部を制御する制御部とを備え、
前記制御部は、
所定のフォーマットを有するコードの第1フィールドが所定のビットパターンを有しているか否かを判断するため、前記所定のフォーマットを有するコードをデコードするデコーダと、
前記第1フィールドが前記所定のビットパターンを有することが前記デコーダによって判断されたとき、前記複数の命令コードの実行条件が満足しているか否かを前記所定のフォーマットを有するコードの前記第1フィールドと異なる第2フィールドによって判定する実行条件判定手段とを備え、
前記制御部は、前記命令実行部が前記実行条件判定手段による判定に基づいた命令の各々を実行することを許可するか否かを制御することを特徴とする、
データ処理装置。 - 第1の命令コードと第1の命令コードとは異なる複数の命令コードを含むプログラムを実行するデータ処理装置であって、
前記複数の命令コードによりそれぞれ指定される命令を実行する命令実行部と、
前記複数の命令コードに従って前記命令実行部を制御する制御部とを備え、
前記制御部は、
前記第1の命令コードの第1フィールドが予め定められた特定のビットパターンであるか否かを判断するために前記第1の命令コードをデコードするデコーダと、
前記デコーダにより前記第1フィールドが前記特定のビットパターンであると判断されたとき、前記第1の命令コードの前記第1フィールドとは異なる第2フィールドによって指定される前記複数の命令コードの実行条件が成立するか否かを判定する実行条件判定手段を備え、
前記制御部は、前記実行条件判定手段による判定に基づき、前記命令実行部が前記複数の命令コードにより指定される各々の命令を実行させるか否かを制御することを特徴とする、
データ処理装置。 - 請求の範囲20記載のデータ処理装置であって、
前記第1の命令コードの前記第2フィールドは、前記複数の命令コードによって指定される命令の実行条件に共通する共通実行条件指定フィールドを含む。 - 請求の範囲20記載のデータ処理装置であって、
前記第1の命令コードの前記第2フィールドは、前記複数の命令コードによって指定される命令の実行条件をそれぞれ個別に指定する複数の実行条件指定フィールドを含む。 - 請求の範囲20記載のデータ処理装置であって、
前記命令実行部は、前記複数の命令コードによって指定される命令を並列に実行する。 - 第1及び第2の命令コードを含む並列処理命令を処理するデータ処理装置であって、
前記第1の命令コードをデコードして第1のデコード結果を出力する第1のデコーダと、
前記第2の命令コードをデコードして第2のデコード結果を出力する第2のデコーダと、
フラグ情報を格納するフラグ情報格納手段と、
前記第2のデコード結果に基づき、前記第2の命令コードで規定される命令の実行制御を行う第1の実行制御手段と、
前記第1のデコード結果により前記第1の命令コードが前記フラグ情報に基づく第1の命令実行条件を指定する実行条件指定命令コードであると判明した場合、前記フラグ情報が前記第1の命令実行条件を満足するか否かに基づき、前記第2の命令コードで規定される命令を実行するか抑止するかを制御する第1の命令実行抑止情報を前記第1の実行制御手段に出力する実行条件判定手段とを備え、
前記第1の実行制御手段は、前記第1の命令実行抑止情報の指示に基づき、前記第2の命令コードで規定される命令の実行あるいは抑止制御を行うことを特徴とする、
データ処理装置。 - 請求の範囲24記載のデータ処理装置であって、
前記並列処理命令は、第3の命令コードをさらに含み、
前記第3の命令コードをデコードして第3のデコード結果を出力する第3のデコーダと、
前記第3のデコード結果に基づき、前記第3の命令コードで規定される命令の実行制御を行う第2の実行制御手段とをさらに備え、
前記実行条件判定手段は、前記第1のデコード結果により前記第1の命令コードが前記第1の命令実行条件とともに前記フラグ情報に基づく第2の命令実行条件を指定する実行条件指定命令コードであると判明した場合、前記フラグ情報が前記第2の命令実行条件を満足するか否かに基づき、前記第3の命令コードで規定される命令を実行するか抑止するかを制御する第2の命令実行抑止情報を前記第2の実行制御手段に出力し、
前記第2の実行制御手段は,前記第2の命令実行抑止情報の指示に基づき、前記第3の命令コードで規定される命令の実行あるいは抑止制御を行うことを特徴とする。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP1997/000173 WO1998033115A1 (fr) | 1997-01-24 | 1997-01-24 | Processeur de donnees |
Publications (1)
Publication Number | Publication Date |
---|---|
JP3670668B2 true JP3670668B2 (ja) | 2005-07-13 |
Family
ID=14179959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP53180098A Expired - Lifetime JP3670668B2 (ja) | 1997-01-24 | 1997-01-24 | データ処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6484253B1 (ja) |
JP (1) | JP3670668B2 (ja) |
WO (1) | WO1998033115A1 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216223B1 (en) * | 1998-01-12 | 2001-04-10 | Billions Of Operations Per Second, Inc. | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor |
US6366999B1 (en) * | 1998-01-28 | 2002-04-02 | Bops, Inc. | Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution |
JP3842474B2 (ja) | 1999-02-02 | 2006-11-08 | 株式会社ルネサステクノロジ | データ処理装置 |
DE10101949C1 (de) * | 2001-01-17 | 2002-08-08 | Infineon Technologies Ag | Datenverarbeitungsverfahren |
JP4141673B2 (ja) * | 2001-10-18 | 2008-08-27 | シャープ株式会社 | データ処理装置 |
US7318169B2 (en) * | 2002-05-15 | 2008-01-08 | David Czajkowski | Fault tolerant computer |
JP3856737B2 (ja) | 2002-07-19 | 2006-12-13 | 株式会社ルネサステクノロジ | データ処理装置 |
US6944744B2 (en) * | 2002-08-27 | 2005-09-13 | Advanced Micro Devices, Inc. | Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor |
US7020765B2 (en) * | 2002-09-27 | 2006-03-28 | Lsi Logic Corporation | Marking queue for simultaneous execution of instructions in code block specified by conditional execution instruction |
TW594570B (en) * | 2003-04-15 | 2004-06-21 | Sunplus Technology Co Ltd | Processor for executing conditional instruction and the method thereof |
JP4128551B2 (ja) * | 2004-07-29 | 2008-07-30 | 富士通株式会社 | 情報処理装置及びストア命令制御方法 |
DE102004043520A1 (de) * | 2004-09-08 | 2006-03-23 | Infineon Technologies Ag | Digitale Programmierschnittstelle zwischen einem Basisbandprozessor und einem integrierten Hochfrequenzbaustein |
US20070198812A1 (en) * | 2005-09-27 | 2007-08-23 | Ibm Corporation | Method and apparatus for issuing instructions from an issue queue including a main issue queue array and an auxiliary issue queue array in an information handling system |
US7350056B2 (en) * | 2005-09-27 | 2008-03-25 | International Business Machines Corporation | Method and apparatus for issuing instructions from an issue queue in an information handling system |
US8364934B2 (en) * | 2006-07-11 | 2013-01-29 | Freescale Semiconductor, Inc. | Microprocessor and method for register addressing therein |
US8990543B2 (en) * | 2008-03-11 | 2015-03-24 | Qualcomm Incorporated | System and method for generating and using predicates within a single instruction packet |
JP5470878B2 (ja) * | 2008-03-18 | 2014-04-16 | 株式会社リコー | 画像読取装置、画像読取方法、画像読取プログラム |
JP5813484B2 (ja) | 2011-11-30 | 2015-11-17 | ルネサスエレクトロニクス株式会社 | Vliwプロセッサと命令構造と命令実行方法 |
US10620952B2 (en) | 2015-06-24 | 2020-04-14 | International Business Machines Corporation | Conversion of boolean conditions |
US10698688B2 (en) * | 2015-06-24 | 2020-06-30 | International Business Machines Corporation | Efficient quantization of compare results |
US10705841B2 (en) | 2015-06-24 | 2020-07-07 | International Business Machines Corporation | Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4367524A (en) | 1980-02-07 | 1983-01-04 | Intel Corporation | Microinstruction execution unit for use in a microprocessor |
JPS5991551A (ja) | 1982-11-17 | 1984-05-26 | Nec Corp | 分岐先アドレス予測を行なう命令先取り装置 |
JPS62285140A (ja) | 1986-06-04 | 1987-12-11 | Hitachi Ltd | 情報処理装置 |
US5193205A (en) | 1988-03-01 | 1993-03-09 | Mitsubishi Denki Kabushiki Kaisha | Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address |
JP2719676B2 (ja) * | 1988-06-08 | 1998-02-25 | 日本電信電話株式会社 | 並列演算処理装置 |
JPH0277940A (ja) * | 1988-09-14 | 1990-03-19 | Hitachi Ltd | データ処理装置 |
DE3921972C2 (de) | 1989-07-04 | 1994-06-09 | Rainer Dr Med Baumgart | Marknagel |
DE69032812T2 (de) * | 1989-07-07 | 1999-04-29 | Hitachi, Ltd., Tokio/Tokyo | Vorrichtung und Verfahren zur parallelen Verarbeitung |
JP2865717B2 (ja) | 1989-07-31 | 1999-03-08 | 株式会社日立製作所 | 情報処理装置及び命令処理方法 |
JP2816248B2 (ja) | 1989-11-08 | 1998-10-27 | 株式会社日立製作所 | データプロセッサ |
JP2793342B2 (ja) * | 1990-08-09 | 1998-09-03 | 株式会社東芝 | 演算処理装置 |
US5163139A (en) * | 1990-08-29 | 1992-11-10 | Hitachi America, Ltd. | Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions |
US5371862A (en) * | 1991-02-27 | 1994-12-06 | Kabushiki Kaisha Toshiba | Program execution control system |
AU2902092A (en) * | 1991-10-24 | 1993-05-21 | Intel Corporation | Data processing system |
JP3218523B2 (ja) | 1992-12-28 | 2001-10-15 | 清水建設株式会社 | 外部養生用被覆体のフレームの解体方法 |
JP2931890B2 (ja) * | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
US5794063A (en) * | 1996-01-26 | 1998-08-11 | Advanced Micro Devices, Inc. | Instruction decoder including emulation using indirect specifiers |
US6049864A (en) * | 1996-08-20 | 2000-04-11 | Intel Corporation | Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor |
-
1997
- 1997-01-24 JP JP53180098A patent/JP3670668B2/ja not_active Expired - Lifetime
- 1997-01-24 US US09/355,024 patent/US6484253B1/en not_active Expired - Fee Related
- 1997-01-24 WO PCT/JP1997/000173 patent/WO1998033115A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US6484253B1 (en) | 2002-11-19 |
WO1998033115A1 (fr) | 1998-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3670668B2 (ja) | データ処理装置 | |
US5901301A (en) | Data processor and method of processing data | |
JP3856737B2 (ja) | データ処理装置 | |
US20070174596A1 (en) | Data processor | |
JP3795757B2 (ja) | 高データ密度のriscプロセッサ | |
JP3842474B2 (ja) | データ処理装置 | |
JP3543181B2 (ja) | データ処理装置 | |
JP2006004042A (ja) | データ処理装置 | |
KR20050010800A (ko) | 확장가능한 프로세서 아키텍처에 진보된 명령어들을부가하는 방법 및 장치 | |
JP3789583B2 (ja) | データ処理装置 | |
JPH01214932A (ja) | データ処理装置 | |
JP3578883B2 (ja) | データ処理装置 | |
JP4502532B2 (ja) | データ処理装置 | |
US7010677B2 (en) | Data processor speeding up repeat processing by inhibiting remaining instructions after a break in a repeat block | |
Lempel et al. | Intel's MMX/sup TM/technology-a new instruction set extension | |
JP2006302324A (ja) | データ処理装置 | |
Song | Demystifying epic and ia-64 | |
Barad et al. | Intel's multimedia architecture extension | |
JP2006031329A (ja) | データ処理装置 | |
Holmann et al. | A Dual-Issue RISC Processor for Multimedia Signal Processing | |
MAIER | A single cycle 16-bit microcontroller and DSP core for systems on chips solutions | |
JP2007048316A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050412 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050415 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080422 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090422 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090422 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100422 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100422 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20170422 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20170422 Year of fee payment: 12 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20170422 Year of fee payment: 12 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |