JP2007272353A - プロセッサ装置及び複合条件処理方法 - Google Patents
プロセッサ装置及び複合条件処理方法 Download PDFInfo
- Publication number
- JP2007272353A JP2007272353A JP2006094589A JP2006094589A JP2007272353A JP 2007272353 A JP2007272353 A JP 2007272353A JP 2006094589 A JP2006094589 A JP 2006094589A JP 2006094589 A JP2006094589 A JP 2006094589A JP 2007272353 A JP2007272353 A JP 2007272353A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- condition
- condition setting
- register
- branch
- 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.)
- Withdrawn
Links
- 150000001875 compounds Chemical class 0.000 title claims abstract description 90
- 238000003672 processing method Methods 0.000 title claims description 20
- 239000002131 composite material Substances 0.000 claims description 28
- 238000000034 method Methods 0.000 description 17
- 238000007796 conventional method Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000001343 mnemonic effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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
-
- 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
Abstract
【課題】サイクル数の増加、命令長の増大を抑え、条件分岐処理を高速化する処理装置の提供。
【解決手段】命令セットとして、1つ又は複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する複合条件分岐命令と、1つの前記条件を設定する条件設定命令と、を含み、前記条件設定命令の実行により選択され、前記条件設定命令で指定された条件が設定され、前記複合条件分岐命令の実行時に前記条件設定命令で設定された条件に対応する比較演算をそれぞれ実行する複数の条件設定比較部2、3、4と、前記複合条件分岐命令の実行時、複数の前記条件設定比較部2、3、4での比較演算結果と、前記複合条件分岐命令で指定された前記分岐条件値を比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部7とを備えている。
【選択図】図1
【解決手段】命令セットとして、1つ又は複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する複合条件分岐命令と、1つの前記条件を設定する条件設定命令と、を含み、前記条件設定命令の実行により選択され、前記条件設定命令で指定された条件が設定され、前記複合条件分岐命令の実行時に前記条件設定命令で設定された条件に対応する比較演算をそれぞれ実行する複数の条件設定比較部2、3、4と、前記複合条件分岐命令の実行時、複数の前記条件設定比較部2、3、4での比較演算結果と、前記複合条件分岐命令で指定された前記分岐条件値を比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部7とを備えている。
【選択図】図1
Description
本発明は、命令をフェッチ、デコードして実行するプロセッサに関し、特に、複合条件分岐処理の方法と装置とに関する。
この種の複合条件処理方式として、例えば特許文献1には、複数の命令を並列処理する構成として、複数の比較命令の実行結果の真偽値にしたがって独立に且つ並列にビットをセット/リセット可能なフラグレジスタ手段と、このフラグレジスタ手段の保持内容と、条件分岐命令によって指定されたマスク値とのビット毎の論理積をとる論理積手段と、論理積手段の出力値がゼロであるか否かに応じて前記条件分岐命令の指定する分岐先アドレス又は同命令の次の命令アドレスを、次に実行すべき命令アドレスとして選択する命令フェッチアドレス選択手段を備え、マスク値で指定されたフラグレジスタの各ビット位置のビット状態を複合条件として分岐を実行するか否かを決定する構成が開示されている。
特許文献1記載の並列処理装置においては、比較命令デコーダを複数持つことで、同時に、複数の比較命令を実行し、実行結果を、フラグレジスタに格納しておき、フラグレジスタの状態に応じて条件分岐する。
まず、特許文献1記載の複合条件処理方式について概説しておく。プログラムとして、C言語によるプログラム、
if (X>1 && X<10 && X!=5)
{複合条件成立時の処理}
に対応するアセンブラ命令(コンパイル結果)を例に説明する。なお、C言語の上記プログラムは、3つの条件 X>1とX<10とX!=5が全て成立している場合には(&&はAND演算を表す)、次の命令、すなわち{複合条件成立時の処理}が実行され、3つの条件のうち1つでも不成立のとき、{複合条件成立時の処理}を実行しないように、分岐が行われる。特許文献1によれば、C言語の上記プログラムのコンパイル結果は以下のようになる。
if (X>1 && X<10 && X!=5)
{複合条件成立時の処理}
に対応するアセンブラ命令(コンパイル結果)を例に説明する。なお、C言語の上記プログラムは、3つの条件 X>1とX<10とX!=5が全て成立している場合には(&&はAND演算を表す)、次の命令、すなわち{複合条件成立時の処理}が実行され、3つの条件のうち1つでも不成立のとき、{複合条件成立時の処理}を実行しないように、分岐が行われる。特許文献1によれば、C言語の上記プログラムのコンパイル結果は以下のようになる。
SLE X, 1,0 SGE X,10,1 SEQ X,5,2
BNZ 7, $1
(複合条件成立時の処理)
$1: (分岐先の処理)
BNZ 7, $1
(複合条件成立時の処理)
$1: (分岐先の処理)
1つ目の比較命令 SLE X, 1,0,・・・ において、複合条件の比較演算を行っている。SLE比較命令は、“SLE A,B,C”形式とされ、AとBを比較し、A<=Bのとき、フラグレジスタのビットC(0〜3ビットのいずれか)を“1”に、そうでない場合、“0”にセットする比較命令である。SGE比較命令は、“SGE A,B,C”形式とされ、AとBを比較し、A>=Bのとき、フラグレジスタのビットC(0〜3ビットのいずれか)を“1”に、そうでない場合、“0”にセットする比較命令である。SEQ比較命令は、“SEQ A,B,C”形式とされ、AとBを比較し、A=Bのとき、フラグレジスタのビットC(0〜3ビットのいずれか)を“1”に、そうでない場合、“0”にセットする比較命令である。
2つ目の条件分岐命令 BNZ 7, $1 では、複合条件の比較演算結果と、分岐条件値(マスク値)“7”とのビット演算を行い、条件が不成立ならば、アドレス$1にジャンプする。BNZ条件分岐命令は、“BNZ M,L”形式とされ、M(4ビットマスク値)とフラグレジスタの対応ビットの論理積をとり、ゼロ判定回路は、論理積結果が全て“0”であるか否か判定し、全て“0”である場合、“1”、そうでなければ、“0”を出力し、ゼロ判定回路の出力信号(セロ/非ゼロ判定結果)を分岐成立/分岐不成立信号として出力し、分岐成立時、Lの指定するアドレスに分岐する。なお、BNZ 7、$1においてマスク値は“0111”であり、フラグレジスタのビット0〜3のうちビット0〜2の値に応じた条件分岐を行う。
このように、比較命令SLE X, 1,0,・・・と、条件分岐命令BNZの2つの命令を用いている。
このプログラム例では、値X(レジスタに相当)に対する3つの比較条件(X>1、X<10、 X!=5)のうち1つでも不成立のとき、すなわち、アセンブラコードによれば、3つの比較条件(X<=1、X>10、X=5)のうちいずれか1つでも成立したときに、$1にジャンプする場合を示しているが、比較結果の反転を行うことですべてOR条件にすることも可能となっている。
特許文献1記載の複合条件処理方式は、複合条件を1回だけ演算する場合には、特段に問題は生じ無い。しかしながら、同じ条件を繰り返し実行するループ処理に用いようとした場合、以下のような問題点を有している。
第1の問題点は、複合条件の比較命令と条件分岐命令とをセットで実行する必要があるため、毎回、条件分岐処理に2ステップ分の実行サイクルが必要とされる、ということである。この点について以下に説明する。
特許文献1記載の複合条件処理方式では、図10(a)に示すように、2命令分のサイクル数が必要となる。図10(a)の例では、1回に付き、比較命令(SLE X, 1,0,・・・)と条件分岐命令(BNZ)の2命令分の、6サイクル(F(命令フェッチ)、D(デコード)、EX(実行)、F、D、EX)を要している(図10の10−1、及び10−2参照)。複合条件の比較命令(SLE X, 1,0,・・・)では、複合条件の各条件に対応する比較演算を並列実行し、比較演算結果を、フラグレジスタの指定ビットに設定し、条件分岐命令(BNZ)ではフラグレジスタの値とマスク値の論理演算結果に基づき分岐判定が行われる。このように、特許文献1記載の複合条件処理方式においては、命令が比較命令と条件分岐命令の2つに分かれているため、命令フェッチと命令デコードのサイクルが少なくとも2回必要となり、サイクル数が増え、ループ処理でのサイクル数の増大が顕著となり律速要因となる。
第2の問題点は、特許文献1記載の複合条件処理方式においては、比較命令は、複合条件をすべて1命令で並列実行する構成とされており、複数の条件を表すために、命令長が長くなる、ということである。
例えば、比較命令
SLE X, 1,0 SGE X,10,1 SEQ X,5,2
において、
・命令コードを8ビット(256種類までの命令を有するプロセッサと仮定)、
・比較器の種類は6種類であることから、比較器の種類の選択に3ビット、
・オペランドXは、16個のレジスタから1つを選択するものとすると、レジスタ選択用に4ビット、
・オペランドの条件値(例えば“SLE X,1,0”の1は、比較条件X<=1における右辺の1に対応する)を、0〜15まで指定できるものとして4ビット、
・オペランドのフラグレジスタ内のビット位置指定(ビット0〜3のいずれか)を2ビットとすると、合計で、
8+4+(3+4+2)×3=39ビット必要となる(表1参照)。
SLE X, 1,0 SGE X,10,1 SEQ X,5,2
において、
・命令コードを8ビット(256種類までの命令を有するプロセッサと仮定)、
・比較器の種類は6種類であることから、比較器の種類の選択に3ビット、
・オペランドXは、16個のレジスタから1つを選択するものとすると、レジスタ選択用に4ビット、
・オペランドの条件値(例えば“SLE X,1,0”の1は、比較条件X<=1における右辺の1に対応する)を、0〜15まで指定できるものとして4ビット、
・オペランドのフラグレジスタ内のビット位置指定(ビット0〜3のいずれか)を2ビットとすると、合計で、
8+4+(3+4+2)×3=39ビット必要となる(表1参照)。
このように、命令長が長くなるのは、特許文献1の並列処理装置では、複合条件をすべて1命令で指定しているためである。
本願で開示される発明は、前記課題を解決するため概略以下の構成とされる。
本発明の1つのアスペクト(側面)に係る装置は、命令セットに、条件の成立の有無に応じて、分岐先へ分岐/非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、を含み、前記条件設定命令の実行時に、前記条件設定命令で指定された条件を設定し、前記条件に対応する比較演算は行わず、前記条件分岐命令の実行時、前記条件設定命令によって前もって設定された前記条件に対応する比較演算を行い、前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する手段を備えている。本発明において、前記条件分岐命令が、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、複数の前記条件設定命令を実行することで、前記複合条件の各条件の設定が行われ、前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複数の条件の各々に対応する比較演算が、並列に実行され、比較演算結果に基づき、分岐判定を行い、前記複合条件による条件分岐処理を、1つの複合条件分岐命令で実行できるようにしている。
本発明の他のアスペクト(側面)に係る装置は、命令セットとして、1つ又は複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する複合条件分岐命令と、1つの前記条件を設定する条件設定命令と、を含み、前記条件設定命令の実行により選択され、前記条件設定命令で指定された条件が設定され、前記複合条件分岐命令の実行時に前記条件設定命令で設定された条件に対応する比較演算をそれぞれ実行する、複数の条件設定比較部と、
前記複合条件分岐命令の実行時に、複数の前記条件設定比較部でそれぞれ行われる比較演算の結果と、前記複合条件分岐命令で指定された前記分岐条件値とを比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部と、を備えている。
前記複合条件分岐命令の実行時に、複数の前記条件設定比較部でそれぞれ行われる比較演算の結果と、前記複合条件分岐命令で指定された前記分岐条件値とを比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部と、を備えている。
本発明において、前記条件設定命令は、オペランドに、前記条件設定比較部の指定と、比較演算の種別と、比較対象の演算用レジスタの2つのレジスタ、又は、前記演算用レジスタの1つのレジスタと即値データを含む。
本発明において、前記複合条件分岐命令は、オペコードに比較演算の種別を含み、オペランドに、前記分岐条件値と、前記分岐先を含む。
本発明において、前記条件設定比較部は、比較対象の2つの演算用レジスタのアドレス情報を格納する第1及び第2のアドレスレジスタと、即値データを格納する即値レジスタと、比較演算の種別を格納する比較器選択レジスタと、比較器と、を備え、前記条件設定命令の実行により、前記第1及び第2のアドレスレジスタ、又は前記第1のアドレスレジスタ及び前記即値レジスタと、前記比較器選択レジスタの各レジスタの値が設定され、前記複合条件分岐命令の実行により、前記第1及び第2のアドレスレジスタ、又は前記第1のアドレスレジスタの指定で指定された前記演算用レジスタが読み出され、前記第1及び第2のアドレスレジスタで読み出された2つの前記演算用レジスタの値、又は前記第1のアドレスレジスタの指定で読み出された前記演算用レジスタの値及び前記即値データが、前記比較器で比較される。
本発明において、前記複数の条件設定比較部の比較演算結果をそれぞれ保存する複数のレジスタを備えている。
本発明において、前記複合条件分岐判定部は、前記複合条件分岐命令をデコードする命令デコーダからの出力を受け、前記複合条件分岐命令で指定された前記分岐条件値を記憶する第1のレジスタと、比較演算の種類を記憶する第2のレジスタと、前記複数の条件設定比較部の比較演算結果をそれぞれ保存する前記複数のレジスタの出力と、前記第1のレジスタで指定された分岐条件値に関して、前記第2のレジスタで指定された比較演算を行い比較結果を出力する比較器と、を備えている。
本発明において、命令デコーダによる前記条件設定命令のデコード結果に基づき、前記条件設定命令で指定された前記条件設定比較部を選択するセレクタを備えている。
前記命令デコーダでデコードされた複合条件分岐命令で指定されたジャンプ先アドレスを格納するジャンプ先アドレスレジスタと、前記複合条件分岐判定部から出力された結果の真偽値を受け、真である場合には、ジャンプ先アドレスを選択し、偽の場合には、プログラムカウンタの値+1のアドレスを選択してプログラムカウンタに設定するセレクタと、をさらに備えている。
本発明の別のアスペクトに係る方法は、プロセッサにおける条件分岐の処理方法であって、命令セットに、条件の成立の有無に応じて分岐先へ分岐/非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、を含み、
(a)前記条件設定命令の実行時に、前記条件設定命令で指定された条件を設定し、前記条件に対応する比較演算は行わず、
(b)前記条件分岐命令の実行時、前記条件設定命令によって前もって設定された前記条件に対応する比較演算を行い、前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する、
上記各ステップを有する。
(a)前記条件設定命令の実行時に、前記条件設定命令で指定された条件を設定し、前記条件に対応する比較演算は行わず、
(b)前記条件分岐命令の実行時、前記条件設定命令によって前もって設定された前記条件に対応する比較演算を行い、前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する、
上記各ステップを有する。
本発明に係る方法において、前記条件分岐命令は、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、複数の前記条件設定命令を実行することで、前記複合条件の各条件の設定が行われ、前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複数の条件の各々に対応する比較演算が、並列に実行され、比較演算結果に基づき、分岐判定を行い、前記複合条件による条件分岐処理を、1つの複合条件分岐命令で実行できるようにしている。
本発明によれば、従来の複合条件処理方式において比較命令と条件分岐命令の2つの命令の組み合わせで実行されていた条件分岐処理を、1つの複合条件分岐命令で実行可能としたことにより、同一条件の処理を繰り返し実行するループ処理等に適用した場合、予めループ処理の直前で、複合条件を設定しておき、ループ処理内では、複合条件分岐命令1つで条件分岐することができる。このため、本発明によれば、従来の複合条件処理方式のように、2つの命令で条件分岐する場合と比べて、高速化を実現可能としている。
本発明によれば、同一条件の処理を繰り返し実行する回数が多いほど、処理性能の向上効果が大きくなる。
さらに、本発明によれば、条件設定命令は、1つの命令に対して、1つの条件を設定するだけなので、同時に複数の条件を設定する場合と比べ、命令長を短くすることができる。
上記した本発明についてさらに詳細に説述すべく添付図面を参照して以下に説明する。
本発明は、逐次実行型コンピュータに適用され、分岐判定で用いられる比較条件を設定する条件設定命令を設け、この条件設定命令を複合条件分岐命令に先立って実行することで、複合条件を構成する複数の比較条件を事前に設定しておく。複合条件分岐命令の実行時、該設定された複合条件の各条件に対応する比較演算を行い、比較演算した結果と、命令コードで指定した分岐条件値を比較した結果を用いて、分岐するか否かを判定する手段を備えている。
より詳細には、本発明の好ましい形態の処理装置は、命令セットとして、分岐判定に用いられる比較条件を設定する条件設定命令(オペコード:SETCMP)と、前記条件設定命令で設定された比較条件に対応する比較演算を実行し、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先へ分岐するか否かの判定を行う複合条件分岐命令(オペコード:XBEQ、XBNE、XBL、XBLE、XBG、XBGE)と、を含む。本発明は、条件設定命令の実行により選択され、前記条件設定命令で指定された比較条件(比較演算の種別、比較対象のレジスタ、あるいはレジスタと即値データ)が設定され、前記複合条件分岐命令の実行時に、前記条件設定命令で設定された比較条件に対応する比較演算をそれぞれ実行する複数の条件設定比較部(図1の2、3、4参照)と、前記複合条件分岐命令の実行時、複数の前記条件設定比較部での比較演算結果と、前記複合条件分岐命令で指定された前記分岐条件値を比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部(図1の7)とを備えている。
本発明において、条件設定命令(SETCMP)は、オペランドに、前記条件設定比較部の指定と、比較演算の種別と、比較対象の演算用レジスタの2つのレジスタ、又は、前記演算用レジスタの1つのレジスタと即値データを含む。
本発明において、前記複合条件分岐命令は、オペコードに、比較演算の種別を含み、オペランドに、前記分岐条件値と、前記分岐先を含む。
本発明において、各条件設定比較部は、図2を参照すると、演算用レジスタ(6)の2つのレジスタのアドレス情報をそれぞれ格納する第1及び第2のアドレスレジスタ(2c、2d)と、第1及び第2のアドレスレジスタ(2c、2d)のアドレスをそれぞれデコードする第1及び第2のデコーダ(2a、2b)と、即値データを格納する即値レジスタ(2e)と、比較演算の種別を格納する比較器選択レジスタ(2f)と、比較器(2h)と、を備え、条件設定命令(SETCMP)の実行により、第1及び第2のアドレスレジスタ(2c、2d)と、即値レジスタ(2e)と、比較器選択レジスタ(2f)の各レジスタの値が設定され、複合条件分岐命令の実行により、第1及び第2のアドレスレジスタ(2c、2d)のアドレスをそれぞれデコードする第1及び第2のデコーダ(2a、2b)によって選択された演算用レジスタ(6)の2つのレジスタが読み出され、読み出された該2つのレジスタの値が比較器(2h)で比較されるか、あるいは、例えば第1のアドレスレジスタ(2c)のアドレスをデコードする第1のデコーダ(2a)によって選択された演算用レジスタ(6)の1つのレジスタが読み出され、読み出された該1つレジスタの値と、即値データとが比較器(2h)で比較される。
本発明において、複数の条件設定比較部(図1の2、3、4)の比較演算結果をそれぞれ保存する複数のレジスタ(図1の5a、5b、5c)を備えている。
本発明において、複合条件分岐判定部(図1の7)は、図5を参照すると、複合条件分岐命令をデコードする命令デコーダ(11)からの出力を受け、前記複合条件分岐命令で指定された前記分岐条件値を記憶する第1のレジスタ(7a)と、比較演算の種類を記憶する第2のレジスタ(7b)と、複数の条件設定比較部(2、3、4)の比較演算結果をそれぞれ記憶する複数のレジスタ(5a、5b、5c)の出力と、第1のレジスタ(7a)で指定された分岐条件値に関して、第2のレジスタ(7b)で指定された比較演算を行い比較結果を出力する比較器(7c)と、を備えている。
本発明において、命令デコーダ(図1の11)による前記条件設定命令のデコード結果に基づき、前記条件設定命令で指定された条件設定比較部を選択するセレクタ(図1の1)を備えている。本発明においては、前記命令デコーダでデコードされた複合条件分岐命令で指定されたジャンプ先アドレスを格納するジャンプ先アドレスレジスタ(図1の8)と、前記複合条件分岐判定部(図1の7)から出力された比較結果を受け、比較結果が真である場合には、ジャンプ先アドレスを選択し、偽の場合には、複合条件分岐命令の次の命令のアドレス、すなわち現在のプログラムカウンタの値+1のアドレスを選択して、プログラムカウンタ(図1の10)に設定するセレクタ(図1の9)と、を備えている。
上記特許文献1記載の従来の複合条件処理方式においては、比較命令と、条件分岐命令の2つの命令の組み合わせで実行していた条件分岐処理を、本発明は、1つの複合条件分岐命令で実行できるようにしている。このため、同一条件の処理を繰り返し実行する処理に適用する場合、ループ処理の直前で複合条件を設定しておき、ループ処理内では複合条件分岐命令1つで条件分岐ができる。すなわち、本発明によれば、従来の複合条件処理方式のように、2つの命令で条件分岐する場合よりも、高速処理を実現することができる。
本発明によれば、同一条件の処理を繰り返し実行する回数が多いほど、処理性能の向上効果が大きくなる。
また、本発明によれば、条件設定命令は、1つの命令に対して、1つの条件を設定するだけであることから、従来の複合条件処理方式のように、同時に複数の条件を設定する場合と比べ、命令長を短くすることができる。このため、命令メモリのバス幅が比較的狭いシステムにおいても、適用が容易であることを特徴とする。
以下、本発明と特許文献1等の従来の複合条件処理方式とを比較して説明しておく。従来方式では、1回に付き、6サイクルかかっているのに対し、本発明によれば、1命令で条件分岐できることから、4サイクルで済んでいる。繰り返し回数が2〜3回では、本発明では、予め条件設定命令の実行ステップがある分、実行サイクル数は多くなるが、従来の複合条件処理方式のように、同時に複数の条件設定を1つの命令で実行できるような並列システムであれば、1命令で実現することも可能であり、この場合は、繰り返し実行がなくても、従来の複合条件処理方式と同じステップ数にすることが可能となる。
また、本発明においては、1つ1つの条件毎に、それぞれ特定のレジスタや即値データを指定することができる。この機能を、従来の複合条件処理方式に適用すると、レジスタを指定するビット数が2個分増加し、レジスタの指定を4ビットとすると、合計で39+4×2=47ビットとなる。
命令メモリのバス幅が、例えば32ビットの場合、表3のように、命令メモリのアドレスが2つ分に跨るため、図10(b)の10b−1に示したように、2回の命令フェッチが必要となり、命令フェッチサイクルが増え、複合条件比較命令の実行速度がその分低下する。
これに対し、本発明によれば、条件設定命令および複合条件分岐命令は両方とも、従来方式に比べて短い命令長で実現できる。具体的には、以下のようになる。
本発明において命令セットにあらたに導入された条件設定命令
SETCMP c0, r1, L, r11
では、条件設定比較部の選択で2ビット、2つのレジスタで8ビット、比較器の種類で3ビットとなり、合計で8+2+4+4+3=21ビットとなる(表4参照)。
SETCMP c0, r1, L, r11
では、条件設定比較部の選択で2ビット、2つのレジスタで8ビット、比較器の種類で3ビットとなり、合計で8+2+4+4+3=21ビットとなる(表4参照)。
さらに、SETCMP c1, r2, GE, 10 も即値を4ビットとすれば、21ビットとなる(表5参照)。
また、本発明において命令セットにあらたに導入された複合条件分岐命令
XBNE 0111b, L1
では、命令コードを8ビット、比較器の種類は3ビット、分岐条件値は0〜7まで選択可能とすると3ビット、ジャンプ先アドレスL1は命令メモリのアドレス値で64Kワードアドレス空間だとすると16ビット、合計で8+3+3+16=30ビットとなり、命令メモリのバス幅が32ビット以下でも収まり、命令フェッチサイクルは増加しない(表6参照)。
XBNE 0111b, L1
では、命令コードを8ビット、比較器の種類は3ビット、分岐条件値は0〜7まで選択可能とすると3ビット、ジャンプ先アドレスL1は命令メモリのアドレス値で64Kワードアドレス空間だとすると16ビット、合計で8+3+3+16=30ビットとなり、命令メモリのバス幅が32ビット以下でも収まり、命令フェッチサイクルは増加しない(表6参照)。
さらに、ジャンプ先アドレスを12ビットの相対アドレスにした場合、32−8−3−12=9ビット分の余裕がある。以下の実施例では、分岐条件値を3ビットで示しているが、よりビット数を多くして、より多くの複合条件を指定することも可能である。この場合、条件設定比較部もそのビット数分の個数が必要とされる。以下具体的な実施例に即して説明する。
図1は、本発明の一実施例のプロセッサの要部構成を示す図である。図1を参照すると、本実施例のプロセッサは、セレクタ1と、複数の条件設定比較部2、3、4と、レジスタ5と、演算用レジスタ6と、複合条件分岐判定部7と、ジャンプ先アドレス8と、セレクタ9と、プログラムカウンタ10と、命令デコーダ11を備えている。複数の条件設定比較部として3つの構成が示されているが、本発明において、条件設定比較部は3つに制限されるものでないことは勿論である。
セレクタ1は、命令デコーダ11における条件設定命令SETCMPのデコード結果を受けるレジスタ1a(条件設定命令SETCMPでの条件設定比較部の指定情報に対応する2ビットを格納)と、レジスタ1aの値に基づき、条件設定比較部2、3、4を選択するセレクタ1bを備えている。
条件設定比較部2、3、4は、セレクタ1によって選択され(活性化され)、それぞれ、条件設定命令SETCMPで指定された1つの条件を設定し、該条件に対応する比較演算を行う。なお、条件設定比較部2、3、4では、条件設定命令SETCMPの実行時には、条件の設定(比較器の種別、比較対象のレジスタの指定等)が行われるだけであり、条件設定比較部2、3、4における比較演算の実行は、複合条件分岐命令の実行時とされる。かかる構成は、本発明の主たる特徴の1つをなしている。
レジスタ5は、条件設定比較部2、3、4の比較演算結果をそれぞれ保存するレジスタ5a、5b、5cを備えている。
演算用レジスタ6は、プロセッサが演算のために用いるN個のレジスタ(レジスタファイル)r1〜rNである。
複合条件分岐判定部7は、複合条件分岐命令をデコードする命令デコーダ11からの出力を受け、該複合条件分岐命令で指定された比較用の分岐条件値を記憶するレジスタ7a(図5参照)と、比較器の種類を記憶するレジスタ7b(図5参照)と、比較演算を行う比較器7c(図5参照)を備えている。
ジャンプ先アドレスレジスタ8は、命令デコーダ11でデコードされた複合条件分岐命令で指定されたジャンプ先アドレスを格納する。
プログラムカウンタ(PC)10は、プロセッサの命令実行位置を表す。
セレクタ9は、ジャンプ先アドレス8と、複合条件分岐命令の次の命令のアドレス(プログラムカウンタの値(PC)+1)を入力とし、複合条件分岐判定部7から出力された結果の真偽値(T/F)を選択制御信号として受け、複合条件分岐判定部7から出力された結果が真である場合には、ジャンプ先アドレス8を選択し、偽の場合には、複合条件分岐命令の次の命令のアドレス(プログラムカウンタの値(PC)+1)を選択する。セレクタ9からの出力は、プログラムカウンタ(PC)10に設定される。
このように、本実施例では、命令セットにあらたに、
・条件設定命令(SETCMP)、
・複合条件分岐命令(XBNE、XBEQ等)、
の2つの命令を用意する。
・条件設定命令(SETCMP)、
・複合条件分岐命令(XBNE、XBEQ等)、
の2つの命令を用意する。
条件設定命令は、複合条件分岐命令で用いられる複合判定の各条件を設定する命令である。複合条件分岐命令は、条件設定命令で設定された各条件に対応する比較演算を行い、比較演算結果と、命令コードで指定した分岐条件値との比較演算を行い、比較演算結果に基づき分岐が行われる命令である。
まず、条件設定命令から説明する。本実施例では、アセンブラのニーモニックで示すと、下記のように表される。
SETCMP c0,r1,L,r11
“SETCMP”は、条件設定命令の名前(オペコード)を表している。
第1オペランドの“c0”は、1番目の条件設定を意味し、条件設定比較部2を示している。
第2、4オペランドの“r1”と“r11”は、演算用レジスタ6内のレジスタアドレス1と11のレジスタを指定している。
第3オペランドの“L”は、r1とr11の値を比較するときに使用する比較演算器の種類を表している。比較演算器の種類を、意味、C言語表記、選択値とともに、表7に一覧で掲載する。
本実施例の具体的な動作として、図6の3つの条件設定命令が実行されるときの動作を図6を用いて説明する。図6の各行の文字列において、“//”以降(右側)の文字列はコメントである。図6の3つの条件設定命令(SETCMP)は、r1<r11、r2>=10、r3=r13のそれぞれの比較条件の設定を行っている。なお、図6において、3つの条件設定命令に続く、ラベルL1以下では、演算が行われ、r1〜r3、r11、r13の各レジスタが更新され(命令コードは図示されない)、次の複合条件分岐命令XBNEの実行時に条件C0〜C2が全て成立してない場合、ラベルL1へ分岐する。ラベルL1から複合条件分岐命令XBNEまでがループ処理を構成し、複合条件分岐命令XBNEは、ループ処理エグジット判定を行う。
1つ目の条件設定命令
SETCMP c0, r1, L, r11
が実行されるとき、図7の7−1において、命令フェッチサイクルFで、命令デコーダ11に命令コードが命令メモリ(図示せず)から読み込まれる。
SETCMP c0, r1, L, r11
が実行されるとき、図7の7−1において、命令フェッチサイクルFで、命令デコーダ11に命令コードが命令メモリ(図示せず)から読み込まれる。
次の命令デコードサイクルDで、読み込まれた命令コードは、図2の命令デコーダ11に示すように解析される。図2には、条件設定命令
SETCMP c0, r1, L, r11
に対して、図1の命令デコーダ11の動作、条件設定比較部2の動作を説明する構成が模式的に示されている。
SETCMP c0, r1, L, r11
に対して、図1の命令デコーダ11の動作、条件設定比較部2の動作を説明する構成が模式的に示されている。
図2を参照すると、条件設定比較部2は、演算用レジスタ6のレジスタアドレスを格納するレジスタ(「アドレスレジスタ」ともいう)2c、2dと、レジスタ2c、2dからのレジスタアドレスを受けてデコードし演算用レジスタ6のレジスタを選択するデコーダ2a、2bと、即値データを格納する即値レジスタ2eと、比較器選択レジスタ2fと、即値レジスタ2eの出力とデコーダ2bの出力(選択された演算用レジスタ6の読み出し値)の一方を選択して出力するセレクタ2gと、デコーダ2bの出力(選択された演算用レジスタ6の読み出し値)とセレクタ2gの出力を入力し、比較器選択用レジスタ2fで選択された比較演算を行う比較器2hと、を備えている。なお、図1の条件設定比較部3、4も、条件設定比較部2と同一構成とされる。
命令デコーダ11において、条件設定命令
SETCMP c0, r1, L, r11
における、
“c0”は、“00b”(2進数)、
“r1”は、“0001b”、
“L”は、“010b”、
“r11”は、“1011b”
にデコードされる。
SETCMP c0, r1, L, r11
における、
“c0”は、“00b”(2進数)、
“r1”は、“0001b”、
“L”は、“010b”、
“r11”は、“1011b”
にデコードされる。
同時に、セレクタ1のレジスタ1aには、命令デコーダ11から、条件設定“c0”を示す値“00b”が格納される。
さらに、次の命令実行サイクルEXで、セレクタ1のレジスタ1aの値“c0”がセレクタ1のセレクタ1bに作用して、条件設定比較部2が選択され(図2のセレクタ1内のSaが活性化される)、条件設定比較部2のレジスタ2c、2d、及び2fに、それぞれ、命令デコーダ11から、“0001b”、“1011b”、及び“010b”が格納される。
なお、レジスタ2c〜2fの値は、条件設定命令
SETCMP c0, r1, L, r11
の命令実行後もそのまま保持される。すなわち、次に条件設定比較部2に作用する条件設定命令が実行されるまでの間、条件設定比較部2内の各レジスタの値は書き換えられない。
SETCMP c0, r1, L, r11
の命令実行後もそのまま保持される。すなわち、次に条件設定比較部2に作用する条件設定命令が実行されるまでの間、条件設定比較部2内の各レジスタの値は書き換えられない。
図2は、この時点までの動作を実行した状態を示している。
条件設定比較部2のレジスタ2cには、演算用レジスタr1を示すレジスタアドレス“1”(“0001b”)、
条件設定比較部2のレジスタ2dには、演算用レジスタr11を示すレジスタアドレス“11”(“1011b”)、
条件設定比較部2のレジスタ2fには、比較器の種類“L”を示す値(表1では“2”(“010b”)、図2(a)では“<”で表す)がそれぞれ記憶される。
条件設定比較部2のレジスタ2dには、演算用レジスタr11を示すレジスタアドレス“11”(“1011b”)、
条件設定比較部2のレジスタ2fには、比較器の種類“L”を示す値(表1では“2”(“010b”)、図2(a)では“<”で表す)がそれぞれ記憶される。
2つ目の条件設定命令
SETCMP c1,r2,GE,10
では、4番目のパラメータ(第4オペランド)に、演算用レジスタではなく、即値(immediate value)“10”が指定されている。
SETCMP c1,r2,GE,10
では、4番目のパラメータ(第4オペランド)に、演算用レジスタではなく、即値(immediate value)“10”が指定されている。
図7の7−2に示すように、動作的には、即値“10”を、条件設定比較部3のレジスタ3e(図3参照)へ記憶すること以外は、1つ目の条件設定命令のときと同様に処理される。
結果として、条件設定比較部3において、図3に示すように、
レジスタ3cには、演算用レジスタr2を示すレジスタアドレス“2”(“0010b”)、
レジスタ3eには、即値“10”を示す値“10”(“1010b”)、
レジスタ3fには、比較器の種類“GE”を示す値(表7では“5”(“101b”)、図2(b)では“≧”で表す)
がそれぞれ記憶される。
レジスタ3cには、演算用レジスタr2を示すレジスタアドレス“2”(“0010b”)、
レジスタ3eには、即値“10”を示す値“10”(“1010b”)、
レジスタ3fには、比較器の種類“GE”を示す値(表7では“5”(“101b”)、図2(b)では“≧”で表す)
がそれぞれ記憶される。
3つ目の条件設定命令
SETCMP c2,r3,EQ,r13
についても、条件設定“c2”により、条件設定比較部4が選択され、1つ目の命令SETCMP c0, r1, L, r11と同様に処理され、図7の7−3のような動作となる。
SETCMP c2,r3,EQ,r13
についても、条件設定“c2”により、条件設定比較部4が選択され、1つ目の命令SETCMP c0, r1, L, r11と同様に処理され、図7の7−3のような動作となる。
結果として、条件設定比較部4において、図4に示すように、
レジスタ4cには、演算用レジスタr3を示すレジスタアドレス“3”(“0011b”)、
レジスタ4dには、演算用レジスタr13を示すレジスタアドレス“13”(“1101b”)、
レジスタ4fには、比較器の種類“EQ”を示す値(表7では“0”(“000b”)、図2(c)では“==”で表す)
がそれぞれ記憶される。
レジスタ4cには、演算用レジスタr3を示すレジスタアドレス“3”(“0011b”)、
レジスタ4dには、演算用レジスタr13を示すレジスタアドレス“13”(“1101b”)、
レジスタ4fには、比較器の種類“EQ”を示す値(表7では“0”(“000b”)、図2(c)では“==”で表す)
がそれぞれ記憶される。
このように本実施例においては、複合条件分岐命令を実行する前に、複合条件を構成する複数の条件を条件設定命令を用いて設定しておく。
なお、条件設定命令は、条件を設定するだけであり、実際の比較演算は行わない。なんとなれば、この時点では、比較演算の対象となる演算用レジスタ6に、まだ値が格納されていないためである。複合条件分岐命令の実行で比較演算が行われる。
本実施例で命令セットに導入された、もう1つの追加命令である複合条件分岐命令は、条件設定命令で設定した各条件に対応する比較演算を行い、その結果と分岐条件値との比較演算を行う命令であり、アセンブラのニーモニックでは、図6に示す例の場合、以下のように表される。
XBEQ 0111b, L1
“XBNE”は、命令の名前で、“NE”の部分は比較演算器の種類(表7参照)を表している。“NE”以外に、“EQ”、“L”、“LE”,“G”、“GE”の比較であってもよい。
“0111b”は分岐条件値であり、各条件での比較演算結果との比較(ビット比較)を行う値を2進数で表している。
“L1”は、複合条件の分岐の判定結果が真であった場合に分岐する、プログラムのジャンプ先アドレスを表している。
本実施例における複合条件分岐命令の動作を説明する。
図8の8−1における1回目の複合条件分岐命令
XBNE 0111b,L1
において、命令フェッチサイクルFで、命令デコーダ11に命令コードが命令メモリ(図示せず)から読み込まれる。
XBNE 0111b,L1
において、命令フェッチサイクルFで、命令デコーダ11に命令コードが命令メモリ(図示せず)から読み込まれる。
次の命令デコードサイクルDで、読み込まれた命令コードは、図5の命令デコーダ11で、図5に示すように、解析される。なお、セレクタ7は、レジスタ7a、7b、比較器7cを備えている。
命令デコーダ11において、
XBNEの“NE”は“001b”、
“0111b”は、そのまま“0111b”、
“L1”は“XXXXXXXXb”(ジャンプ先アドレスL1を表す値)
にそれぞれデコードされる。
XBNEの“NE”は“001b”、
“0111b”は、そのまま“0111b”、
“L1”は“XXXXXXXXb”(ジャンプ先アドレスL1を表す値)
にそれぞれデコードされる。
同時に、命令デコーダ11から、
セレクタ7のレジスタ7aには、“0111b”がセットされ、
セレクタ7のレジスタ7bには、比較“NE”を示す値“001b” (表7では“1”、図5では“NE”を“!=”で表している)が格納される。
セレクタ7のレジスタ7aには、“0111b”がセットされ、
セレクタ7のレジスタ7bには、比較“NE”を示す値“001b” (表7では“1”、図5では“NE”を“!=”で表している)が格納される。
また、ジャンプ先アドレスレジスタ8には、命令デコーダ11からジャンプ先アドレス“L1”が格納される。各レジスタの値は、図8において、次のサイクル8−A(XBNEの命令実行実行サイクルEX)で反映される。
これと同時に、条件設定比較部2(図2参照)において、演算用レジスタ6のレジスタを指定するレジスタ2c、2dを用いて、デコーダ2a、2bが、演算用レジスタ6の中から、該当する演算用レジスタ6(この場合、r1、r11)の値を読み出す。読み出されたr1、r11の値は、比較器2hに供給される。
条件設定比較部3と条件設定比較部4においても、同様に処理される。図3を参照すると、デコーダ3aで指定された演算用レジスタ6の値が読み出される。条件設定比較部3では、レジスタ3cで選択された演算用レジスタ6のレジスタr2が読み出され、レジスタr2の値と、セレクタ3gで選択された即値レジスタ3eの値10とが比較器3hに供給される。
図4を参照すると、条件設定比較部4において、演算用レジスタ6のレジスタを指定するアドレスレジスタ4c、4dを用いて、デコーダ4a、4bが、演算用レジスタ6の中から、該当する演算用レジスタ6(この場合、r3、r13)の値を読み出す。読み出された演算用レジスタ6のr3、r13の値は、比較器4hに供給される。
XBNEの命令実行サイクルEX(図8の8−A)では、条件設定比較部2(図2参照)において、デコーダ2a、2bに読み出された2つの演算用レジスタの値を用いて、比較器2hは、比較器選択レジスタ2fが示す比較器で比較演算を実行し、結果をレジスタ5a(図5参照)へ格納する。
ここで、条件設定比較部3のように、比較演算の片方の値が即値であった場合には、即値レジスタ3e(図3)の値を、セレクタ3g(図3)にて選択し、比較器3hへ受け渡して比較演算する。条件設定比較部4においても同様の処理が行われる。
条件設定比較部2の比較器2h、条件設定比較部3の比較器3h、条件設定比較部4の比較器4hのそれぞれの演算結果を、レジスタ5a〜5cへ格納する。
さらに、次の命令実行サイクルEXで(図8の8−B)、図5を参照すると、比較演算結果を格納したレジスタ5a〜5cと、命令コードから得られた分岐条件値(レジスタ7aの値)との比較演算を、比較器7cで実行する。なお、複合条件分岐命令が、命令フェッチF、デコードDにつづいて、2つの命令実行サイクルEX(1つ目の命令実行サイクルEXは、条件設定比較部2、3、4での比較演算の実行と、レジスタ5への設定、2つ目の命令実行サイクルEXはレジスタ5の値と分岐条件値との比較による分岐判定)を含む。
ここで使用される比較器の種類は、レジスタ7bで選択された値“NE” (表7では“1”(“001b”)、図3では“!=”で表す)となる。
ここで、レジスタ5a、5b、5cは、図9(a)で示すように、分岐条件値7aのそれぞれビット0、1、2に対応付ける。なお、分岐条件値7aの値が“0011b”であった場合は、図9(b)のようになる。
XBNEの次の命令実行サイクルEX(図8の8−B)では、比較器7cの演算結果出力T/Fが“T”、すなわち、複合条件の各条件が全て成立してはいなかったときを表しており、ジャンプ先アドレス8がセレクタ9によって選択され、プログラムカウンタ10に代入される。
このとき、命令メモリバスにジャンプ先アドレス8のアドレス値が出力され、次の命令フェッチサイクルで“L1”番地の命令が命令メモリから読み込まれる(図8の8−C)。
その後、再び複合条件分岐命令 XBNE 0111b,L1 を実行するとき(図8の8−2)、前記と同様の処理が行われるが、今度は、図8の8−D(XBNEの命令実行サイクルEX)に示すように、すべての条件が成立したので、比較器7c(図3参照)の演算結果出力T/Fが“F”となり、次の命令のアドレス(n+1)が、セレクタ9によって選択され、プログラムカウンタ10に代入される。
このとき、命令メモリバスに、次の命令のアドレス値が出力され、次の命令フェッチサイクルで、複合条件分岐命令XBNE 0111b,L1の次の命令が、不図示の命令メモリから読み込まれる(図8の8−F)。
以上のように、予め条件設定命令で複数の条件を設定しておき、複合条件分岐命令で複数の条件の比較演算を行い、さらにその結果と、指定した分岐条件値との比較によって分岐の有無を判定することで、複数条件の条件分岐を1つの命令で行うことができる。
以下、本実施例の作用効果について、特許文献1に記載された従来方式との比較対比を交えて説明する。
前記した従来方式では、必ず比較命令と条件分岐命令の2つの命令を組み合わせて条件分岐していたのに対して、本実施例では、条件分岐で用いられる条件の設定を予め行っておくことで、条件分岐処理を、1つの条件分岐命令で実行することができる。このため、より高速化に対応可能としている。特に、同じ条件を繰り返し実行する処理に適用することで、従来と比べて高速性が増す効果がある。また、複合条件分岐命令において、複数の条件に対応する比較処理は、並列実行されるため、
また、従来方式のように、すべての複合条件を1つの命令で表現した場合、オペランド部分が多く、命令長が長くなる。命令メモリのバス幅が比較的狭いシステムでは、命令フェッチに追加サイクルが必要となる。
これに対して、本実施例では、条件分岐命令とは別の条件設定命令を用いて条件を設定できるようにしたことにより、条件設定命令及び条件分岐命令は、通常の比較命令や条件分岐命令とさほど変わらない命令長で実現できる。よって、命令メモリ幅が比較的狭いシステムでも、命令フェッチの追加サイクルは無くても済むようにできる場合が多くなる。これは、複数の条件を予め設定しておける条件設定命令と、設定された複合条件の演算と分岐条件との比較を行い、分岐するか否かを判定する複合条件分岐命令を有するためである。
本実施例において、条件分岐処理は、1つの複合条件分岐命令のみが実行され、1命令分の実行サイクルで済むため、従来の2つの命令で条件分岐するよりも高速に条件分岐できるためである。
さらに、本実施例では、条件設定を1つずつ行うためのセレクタ1、複合条件を記憶しておくためのレジスタ2c〜2fと、演算用レジスタ6から値を取得するためのデコーダ2aおよび2bを備え、かかる構成によって、複合条件の比較演算を、複合条件分岐命令の中で実行できるようにしている。
これにより、以下のような作用効果(優位点)を奏する。
従来方式では、複合条件比較命令と、条件分岐命令の2つの命令の組み合わせとなっているため、2回分の命令フェッチと命令デコードのサイクルが必要となる。
これに対して、本実施例では、条件分岐命令1つの命令で同じ結果が得られ、1回分の命令フェッチと命令デコードで済むため、その分命令サイクル数が少なくなり、より高速である。ただし、予め複数の条件をそれぞれ条件設定命令でセットしているので、その分を含めると、1回だけの条件分岐処理では従来方式の方が高速に見える。しかしながら、同じ複合条件を複数回繰り返す処理に適用した場合は、本発明の方が繰り返し回数が多いほど高速に処理できる。
従来方式の複合条件比較の命令は、複数の条件をすべて1つの命令で指定してるため、命令のオペランド部分が長くなる。このため、命令メモリのバス幅がその命令長よりも狭ければ、追加の命令フェッチサイクルが必要となり、その分命令実行サイクル数が増える。
一方、本実施例では、基本的には1つの命令で1つの条件を指定しているので、他の通常の演算命令などと同程度の命令長にできる。このため、追加の命令フェッチサイクルも不要にできる可能性が高いので、実行サイクル数も増加しない。
なお、上記実施例では、条件分岐命令の条件(condition)として、数値の大小を比較する2項比較演算を例に説明したが、本発明は、かかる2項比較演算に制限されるものでなく、また、大小比較以外にも、プロセッサのフラグ(ゼロフラグ、キャリフラグ)等の判定による条件分岐に対しても適用可能であることは勿論である。また、条件の比較演算として、論理演算を用いるようにしてもよいことは勿論である。
以上、本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
1 セレクタ
1a レジスタ
1b セレクタ
2、3、4 条件設定比較部
2a、2b、3a、3b、4a、4b デコーダ
2c、2d、3c、3d、4c、4d レジスタ(アドレスレジスタ)
2e、3e、4e レジスタ(即値レジスタ)
2f、3f、4f レジスタ(比較器選択レジスタ)
2h、3h、4h 比較器
5 レジスタ
5a、5b、5c レジスタ
6 演算用レジスタ
7 複合条件分岐判定部
7a レジスタ(分岐条件値レジスタ)
7b レジスタ(比較器選択レジスタ)
7c 比較器
8 ジャンプ先アドレスレジスタ
9 セレクタ
10 プログラムカウンタ
11 命令デコーダ
1a レジスタ
1b セレクタ
2、3、4 条件設定比較部
2a、2b、3a、3b、4a、4b デコーダ
2c、2d、3c、3d、4c、4d レジスタ(アドレスレジスタ)
2e、3e、4e レジスタ(即値レジスタ)
2f、3f、4f レジスタ(比較器選択レジスタ)
2h、3h、4h 比較器
5 レジスタ
5a、5b、5c レジスタ
6 演算用レジスタ
7 複合条件分岐判定部
7a レジスタ(分岐条件値レジスタ)
7b レジスタ(比較器選択レジスタ)
7c 比較器
8 ジャンプ先アドレスレジスタ
9 セレクタ
10 プログラムカウンタ
11 命令デコーダ
Claims (13)
- 命令セットとして、条件の成立の有無に応じて、分岐先へ分岐/非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、を含み、
前記条件設定命令の実行時に、前記条件設定命令で指定された条件を設定し、前記条件に対応する比較演算は行わず、
前記条件分岐命令の実行時、前記条件設定命令によって前もって設定された前記条件に対応する比較演算を行い、前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する手段を備えている、ことを特徴とするプロセッサ装置。 - 前記条件分岐命令が、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、
複数の前記条件設定命令を実行することで、前記複合条件の各条件の設定が行われ、
前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複数の条件の各々に対応する比較演算が、並列に実行され、複数の前記比較演算の結果に基づき、分岐判定を行い、前記複合条件による条件分岐処理を、1つの複合条件分岐命令で実行できるようにしてなる、ことを特徴とする請求項1記載のプロセッサ装置。 - 命令セットとして、1つ又は複数の条件の各々に対応する比較演算を行い、前記比較演算の結果と、指定した分岐条件値との間での比較演算に基づき、指定した分岐先に分岐する複合条件分岐命令と、
1つの前記条件を設定する条件設定命令と、
を含み、
前記条件設定命令の実行により選択され、前記条件設定命令で指定された条件が設定され、前記複合条件分岐命令の実行時に、前記条件設定命令で設定された条件に対応する比較演算をそれぞれ実行する、複数の条件設定比較部と、
前記複合条件分岐命令の実行時に、複数の前記条件設定比較部でそれぞれ行われる比較演算の結果と、前記複合条件分岐命令で指定された前記分岐条件値とを比較した結果を用いて、前記分岐先へ分岐するか否かを判定する複合条件分岐判定部と、
を備えている、ことを特徴とするプロセッサ装置。 - 前記条件設定命令は、オペランドに、前記条件設定比較部の指定と、比較演算の種別と、比較演算対象の演算用レジスタのレジスタ、又は、前記演算用レジスタのレジスタと即値データを含む、ことを特徴とする請求項2又は3に記載のプロセッサ装置。
- 前記複合条件分岐命令は、オペコードに比較演算の種別を含み、オペランドに、前記分岐条件値と、前記分岐先を含む、ことを特徴とする請求項2又は3に記載のプロセッサ装置。
- 前記条件設定比較部において、前記条件設定命令の実行によって設定された条件は、前記条件設定命令のあとに別の条件設定命令が実行され、前記別の条件設定命令によって前記条件設定比較部が再び選択され別の条件に書き換えられるまでの間、保持される、ことを特徴とする請求項3又は4記載のプロセッサ装置。
- 前記条件設定比較部は、比較対象の2つの演算用レジスタのアドレス情報を格納する第1及び第2のアドレスレジスタと、即値データを格納する即値レジスタと、比較演算の種別を格納する比較器選択レジスタと、比較器と、前記第1及び第2のアドレスレジスタのアドレスをデコードする第1及び第2のデコーダを備え、
前記条件設定命令の実行により、前記第1及び第2のアドレスレジスタ、又は前記第1のアドレスレジスタ及び前記即値レジスタと、前記比較器選択レジスタの各レジスタの値が設定され、
前記複合条件分岐命令の実行により、前記第1及び第2のアドレスレジスタ、又は前記第1のアドレスレジスタで指定された前記演算用レジスタが読み出され、前記第1及び第2のアドレスレジスタの指定で読み出された2つの前記演算用レジスタの値、又は前記第1のアドレスレジスタの指定で読み出された前記演算用レジスタの値と前記即値データが、前記比較器で比較される、ことを特徴とする請求項3又は4記載のプロセッサ装置。 - 前記複数の条件設定比較部の比較演算結果をそれぞれ保存する複数のレジスタを備えている、ことを特徴とする請求項3乃至7のいずれか一に記載のプロセッサ装置。
- 前記複合条件分岐判定部は、前記複合条件分岐命令をデコードする命令デコーダからの出力を受け、前記複合条件分岐命令で指定された前記分岐条件値を記憶する第1のレジスタと、比較演算の種類を記憶する第2のレジスタと、
前記複数の条件設定比較部の比較演算結果をそれぞれ保存する前記複数のレジスタの出力と、前記第1のレジスタで指定された分岐条件値に関して、前記第2のレジスタで指定された比較演算を行い比較結果を出力する比較器と、
を備えている、ことを特徴とする請求項8記載のプロセッサ装置。 - 命令デコーダによる前記条件設定命令のデコード結果に基づき、前記条件設定命令で指定された前記条件設定比較部を選択するセレクタを備えている、ことを特徴とする請求項3乃至9のいずれか一に記載のプロセッサ装置。
- 前記命令デコーダでデコードされた複合条件分岐命令で指定されたジャンプ先アドレスを格納するジャンプ先アドレスレジスタと、
前記複合条件分岐判定部から出力された結果の真偽値を受け、真である場合には、前記ジャンプ先アドレスを選択し、偽の場合には、プログラムカウンタの値+1のアドレスを選択してプログラムカウンタに設定するセレクタと、
をさらに備えている、ことを特徴とする請求項10記載のプロセッサ装置。 - プロセッサにおける条件分岐の処理方法であって、
命令セットに、条件の成立の有無に応じて、分岐先へ分岐/非分岐する条件分岐命令と、前記条件を設定する条件設定命令と、
を含み、
前記条件設定命令の実行時に、前記条件設定命令で指定された条件を設定し、前記条件に対応する比較演算は行わず、
前記条件分岐命令の実行時、前記条件設定命令によって前もって設定された前記条件に対応する比較演算を行い、前記比較演算結果に基づき、分岐先へ分岐するか否かを判定する、ことを特徴とする条件分岐処理方法。 - 前記条件分岐命令は、分岐判定用に、複数の条件からなる複合条件を含む複合分岐条件命令よりなり、
複数の前記条件設定命令を実行することで、前記複合条件の各条件の設定が行われ、
前記複合条件分岐命令の実行時、前記条件分岐命令によって前もって設定された複数の条件の各々に対応する比較演算が、並列に実行され、複数の前記比較演算の結果に基づき、分岐判定を行い、前記複合条件による条件分岐処理を、1つの複合条件分岐命令で実行できるようにしてなる、ことを特徴とする請求項12記載の条件分岐処理方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006094589A JP2007272353A (ja) | 2006-03-30 | 2006-03-30 | プロセッサ装置及び複合条件処理方法 |
US11/723,623 US20070234019A1 (en) | 2006-03-30 | 2007-03-21 | Processor apparatus and complex condition processing method |
TW096110549A TW200809621A (en) | 2006-03-30 | 2007-03-27 | Processor apparatus and complex condition processing method |
KR1020070031101A KR100875401B1 (ko) | 2006-03-30 | 2007-03-29 | 프로세서 장치 및 복합 조건 처리 방법 |
CN2007100919567A CN101046741B (zh) | 2006-03-30 | 2007-03-30 | 处理器装置和复合条件处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006094589A JP2007272353A (ja) | 2006-03-30 | 2006-03-30 | プロセッサ装置及び複合条件処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007272353A true JP2007272353A (ja) | 2007-10-18 |
Family
ID=38560846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006094589A Withdrawn JP2007272353A (ja) | 2006-03-30 | 2006-03-30 | プロセッサ装置及び複合条件処理方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20070234019A1 (ja) |
JP (1) | JP2007272353A (ja) |
KR (1) | KR100875401B1 (ja) |
CN (1) | CN101046741B (ja) |
TW (1) | TW200809621A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013530450A (ja) * | 2010-05-11 | 2013-07-25 | アーム・リミテッド | 条件付き比較命令 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008305185A (ja) * | 2007-06-07 | 2008-12-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
KR101507783B1 (ko) | 2007-10-01 | 2015-04-03 | 엘지전자 주식회사 | 가전장치 및 이의 제어방법 |
US20090198876A1 (en) * | 2008-01-31 | 2009-08-06 | Jimmy Kwok Lap Lai | Programmable Command Sequencer |
US8078849B2 (en) * | 2008-12-23 | 2011-12-13 | Juniper Networks, Inc. | Fast execution of branch instruction with multiple conditional expressions using programmable branch offset table |
US8880854B2 (en) * | 2009-02-11 | 2014-11-04 | Via Technologies, Inc. | Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register |
US8832417B2 (en) | 2011-09-07 | 2014-09-09 | Qualcomm Incorporated | Program flow control for multiple divergent SIMD threads using a minimum resume counter |
US9256429B2 (en) | 2012-08-08 | 2016-02-09 | Qualcomm Incorporated | Selectively activating a resume check operation in a multi-threaded processing system |
US9229721B2 (en) | 2012-09-10 | 2016-01-05 | Qualcomm Incorporated | Executing subroutines in a multi-threaded processing system |
US10698688B2 (en) * | 2015-06-24 | 2020-06-30 | International Business Machines Corporation | Efficient quantization of compare results |
US10620952B2 (en) | 2015-06-24 | 2020-04-14 | International Business Machines Corporation | Conversion of boolean conditions |
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 |
CN106775593B (zh) * | 2016-12-30 | 2019-12-31 | 智车优行科技(北京)有限公司 | 去除循环处理流程中条件判断语句的方法和装置、应用单元 |
CN113485748B (zh) * | 2021-05-31 | 2022-08-12 | 上海卫星工程研究所 | 卫星条件指令系统及其执行方法 |
US11886883B2 (en) * | 2021-08-26 | 2024-01-30 | International Business Machines Corporation | Dependency skipping in a load-compare-jump sequence of instructions by incorporating compare functionality into the jump instruction and auto-finishing the compare instruction |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5203002A (en) * | 1989-12-27 | 1993-04-13 | Wetzel Glen F | System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle |
CA2038264C (en) * | 1990-06-26 | 1995-06-27 | Richard James Eickemeyer | In-memory preprocessor for a scalable compound instruction set machine processor |
EP0474297B1 (en) * | 1990-09-05 | 1998-06-10 | Koninklijke Philips Electronics N.V. | Very long instruction word machine for efficient execution of programs with conditional branches |
JPH1185506A (ja) | 1997-09-11 | 1999-03-30 | Fujitsu Ltd | 複数条件コード処理機能を有するデータ処理装置 |
-
2006
- 2006-03-30 JP JP2006094589A patent/JP2007272353A/ja not_active Withdrawn
-
2007
- 2007-03-21 US US11/723,623 patent/US20070234019A1/en not_active Abandoned
- 2007-03-27 TW TW096110549A patent/TW200809621A/zh unknown
- 2007-03-29 KR KR1020070031101A patent/KR100875401B1/ko not_active IP Right Cessation
- 2007-03-30 CN CN2007100919567A patent/CN101046741B/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013530450A (ja) * | 2010-05-11 | 2013-07-25 | アーム・リミテッド | 条件付き比較命令 |
US9383999B2 (en) | 2010-05-11 | 2016-07-05 | Arm Limited | Conditional compare instruction |
Also Published As
Publication number | Publication date |
---|---|
KR20070098688A (ko) | 2007-10-05 |
CN101046741A (zh) | 2007-10-03 |
CN101046741B (zh) | 2010-05-26 |
US20070234019A1 (en) | 2007-10-04 |
TW200809621A (en) | 2008-02-16 |
KR100875401B1 (ko) | 2008-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007272353A (ja) | プロセッサ装置及び複合条件処理方法 | |
JP2009163624A (ja) | プロセッサ装置及び条件分岐処理方法 | |
JPS62197830A (ja) | デ−タ処理システム | |
JP2013539883A (ja) | 複数の命令セットからの命令の復号 | |
KR100995269B1 (ko) | 프로세서 장치 및 복합 조건 처리 방법 | |
JP2009059246A (ja) | マイクロプロセッサ | |
JP2007128378A (ja) | プログラマブルコントローラのプログラミング装置 | |
JP2580396B2 (ja) | パイプラインにおける分岐命令制御方式 | |
JP2006053830A (ja) | 分岐予測装置および分岐予測方法 | |
JP4159586B2 (ja) | 情報処理装置および情報処理の高速化方法 | |
JP2007004475A (ja) | プロセッサ及びプログラム実行方法 | |
JP2001184209A (ja) | 命令コード復号装置及びその復号方法 | |
JP3060917B2 (ja) | プロセッサ | |
JP2008083762A (ja) | マイクロコンピュータ | |
JP2689894B2 (ja) | マイクロプログラム制御型情報処理装置 | |
JPH0713758A (ja) | 命令デコード方法 | |
JP2005141651A (ja) | プロセッサ及びプロセッサの制御方法 | |
JPH06332701A (ja) | 情報処理装置 | |
JP2008107902A (ja) | マイクロプロセッサ | |
JPH0619705A (ja) | パイプライン制御方式 | |
JPS62115541A (ja) | マイクロ命令分岐アドレス生成方式 | |
JP2008158810A (ja) | 命令実行処理装置 | |
JP2001306318A (ja) | マイクロコンピュータ | |
JPH03263222A (ja) | マイクロプログラム分岐処理方式 | |
JP2005134987A (ja) | パイプライン演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090213 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20101228 |