JP2009163624A - プロセッサ装置及び条件分岐処理方法 - Google Patents
プロセッサ装置及び条件分岐処理方法 Download PDFInfo
- Publication number
- JP2009163624A JP2009163624A JP2008002344A JP2008002344A JP2009163624A JP 2009163624 A JP2009163624 A JP 2009163624A JP 2008002344 A JP2008002344 A JP 2008002344A JP 2008002344 A JP2008002344 A JP 2008002344A JP 2009163624 A JP2009163624 A JP 2009163624A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- condition
- instruction
- destination address
- storage unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000003672 processing method Methods 0.000 title claims description 6
- 238000000034 method Methods 0.000 claims abstract description 41
- 239000002131 composite material Substances 0.000 claims description 2
- 230000008569 process Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 11
- 230000001343 mnemonic effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004904 shortening 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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
-
- 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
-
- 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/30058—Conditional branch instructions
-
- 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/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/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
【課題】ループ処理内で繰り返し行われる条件分岐を高速化する装置、方法の提供。
【解決手段】条件設定命令で設定される分岐条件を記憶する記憶域を複数有する分岐条件記憶部1と、分岐条件の個々の条件に対して比較演算を行う分岐条件比較部5と、条件分岐命令においてプログラムの分岐を行うか否かを判定する条件分岐判定部6と、条件分岐判定部6からの出力値を元に、分岐先アドレスか次の命令のアドレスかを選択するセレクタ7とを備え、条件設定命令で指定された分岐条件を分岐条件記憶部1の記憶域のうち前記条件設定命令で指定された記憶域に記憶し、分岐判定命令を実行時、前記分岐条件記憶部に記憶されている複数の分岐条件の判定を個々に行い、同時に成立した分岐条件のうち、前記分岐条件記憶部の予め定められた所定の記憶域に記憶されている分岐条件に該当する分岐アドレスを前記分岐アドレス記憶部から選択し前記分岐アドレスに分岐する。
【選択図】図1
【解決手段】条件設定命令で設定される分岐条件を記憶する記憶域を複数有する分岐条件記憶部1と、分岐条件の個々の条件に対して比較演算を行う分岐条件比較部5と、条件分岐命令においてプログラムの分岐を行うか否かを判定する条件分岐判定部6と、条件分岐判定部6からの出力値を元に、分岐先アドレスか次の命令のアドレスかを選択するセレクタ7とを備え、条件設定命令で指定された分岐条件を分岐条件記憶部1の記憶域のうち前記条件設定命令で指定された記憶域に記憶し、分岐判定命令を実行時、前記分岐条件記憶部に記憶されている複数の分岐条件の判定を個々に行い、同時に成立した分岐条件のうち、前記分岐条件記憶部の予め定められた所定の記憶域に記憶されている分岐条件に該当する分岐アドレスを前記分岐アドレス記憶部から選択し前記分岐アドレスに分岐する。
【選択図】図1
Description
本発明は、プロセッサ装置及び条件分岐処理方法に関する。
一般的な汎用CPU等で用いられている条件分岐命令は、例えば図10に模式的に示すように、分岐条件の判定の元となる演算を行う命令(例えばアドレスNの条件A判別命令)を、条件分岐命令の実行前に実行しておき、次に、該命令(条件A判別命令)の演算結果を元にして、分岐条件が成立した場合には、該条件分岐命令のオペランドで指定された分岐先アドレス(例えば分岐先L1)に分岐し、不成立の場合は、そのまま次のアドレス(図10の場合、例えばN+2の条件B判別命令)の命令に進む、といった動作をする。
一例として、図10に示すように、4つの分岐条件を処理する場合、条件判別のための命令(アドレスN、N+2、N+4、N+6の条件A判別命令、条件B判別命令、条件C判別命令、条件D判別命令)とそれぞれに対応するアドレスN+1、N+3、N+5、N+7の条件分岐命令とが1組を成して4回連続することになり、結果として、8ステップ分の実行時間と命令記憶領域を必要とする。
条件分岐の関連技術として、特許文献1の条件分岐について説明する。図11は、特許文献1のプロセッサの構成を示す図である。図11において、演算器401から出力された演算結果422と分岐条件431を入力とする条件判別回路402の出力である条件成否情報429を、条件成否レジスタ選択信号424に従って条件成否レジスタ403〜406から選択して格納する。多分岐処理を行なう場合には、予め処理すべき複数の条件に応じてそれぞれ異なる条件成否レジスタに条件成否情報を書き込む。分岐先アドレスレジスタ408〜411には、各々分岐条件に対応した分岐アドレスが格納してあり、多分岐命令実行時にプライオリタイザ407が前記条件成否レジスタ403〜406の値を入力し分岐先アドレス選択信号427を生成し、セレクタ412を制御する。セレクタ412は、分岐先アドレスレジスタ408〜411のうち1つを選択することによりプログラムカウンタ413の値を得て分岐処理を実行する。
また、特許文献2には、命令コードによる命令が分岐命令か否かを判断する分岐命令判断手段と、複数の分岐先アドレスを格納する分岐先格納手段と、複数の分岐条件の全てについて分岐条件を満足するか否かを判断する分岐条件判断手段と、前記分岐命令判断手段によって分岐命令であると判断した場合に、前記分岐条件判断手段で分岐条件を満足すると判断した分岐条件に対応する1個の分岐先アドレスを前記分岐先格納手段に格納された複数の分岐先アドレスの中から選択する分岐先選択手段とを設ける構成が開示されている。これは、直前に実行した命令の演算結果を元に、1つの条件分岐命令で処理しており、実質的に2ステップ分の実行時間と命令記憶領域だけで済むことになる。
さらに、特許文献3には、演算器動作と並行に算術演算器出力、論理シフタ出力、乗算器出力のいずれかの選択を行い、選択されたデータに対して予め設定されたn個の閾値と同時に大小関係を比較し、n個の閾値によって区切られるn+1個のデータ領域、出力データがどの領域に存在するか判定し、判定結果に対して予め定められたデータ領域を指定するm個の領域限定条件と順次比較し、条件が一致した場合、m個の領域限定条件に対応したm個の分岐先アドレスの中から上記一致した領域限定条件に対応する分岐先アドレスを出力し、分岐先アドレスにプログラムカウンタを更新し、m個の条件すべてが不一致の場合、全条件不一致を示す信号を出力し、プログラムカウンタを1増加させるプロセッサ(デジタル信号プロセッサ)が開示されている。演算結果をその都度、条件判定する必要があるような処理を行うときに、いちいち条件判定の命令を実行しなくても済むので、高速な処理が可能となっている。
特許文献4には、順序づけられたシーケンスの複数の命令を含む命令シーケンスを有するプログラムを実行し、前記順序づけられたシーケンスは始まりおよび複数の分岐命令を含み、前記分岐命令のそれぞれが、指定された条件が満たされたときに、分岐先番地で指定された命令を実行するデータ処理システムであって、複数の前記分岐命令を指定し、各分岐命令に対応する分岐先番地、および、前記分岐命令の前記順序づけられたシーケンスの前記始まりからの相対的な位置を含む情報を記憶する記憶手段と、前記分岐命令の1つに関連する前記条件が満たされたことを示す情報を受け取る比較結果手段と、前記記憶手段に記憶されている情報を持つ前記分岐命令の1つを識別する分岐実行命令を受け取る手段と、前記識別された分岐命令に関連する前記条件が満たされ、前記識別された分岐命令よりも前記順序づけられたシーケンスの始まりに近い分岐命令に関連する前記条件が満たされなかった場合に、前記分岐実行命令を受け取って反応し、前記データ処理システムに、前記識別された分岐命令に対応する分岐先番地で指定された前記命令を実行させる制御手段と、を備えた分岐処理装置を有する、データ処理システムが開示されている。
以下、本発明による関連技術の分析を与える。
特許文献1に記載された発明は、図12に示すように、アドレスN〜N+3の個々の分岐条件判別命令(条件A判別命令、条件B判別命令、条件C判別命令、条件D判別命令)を、4回実行した後、1つの多分岐命令(アドレスN+4)で、条件分岐を処理できるため、5ステップ分の実行時間と、命令記憶領域が必要とされるだけとなり、高速および命令記憶領域の削減を実現している。
しかしながら、図12に示すように、分岐判定を行うに必要な回数分だけ、条件分岐判別命令を、多分岐命令の直前で実行する必要がある。このため、同じ分岐条件を繰り返し実行するループ処理において、条件分岐判別命令の実行が必要となる。
特許文献2に記載の発明は、特許文献1と同様に、分岐命令の直前の演算結果を元に分岐判定しており、しかも、直前の命令1つの演算結果のみが分岐判定に与えられるだけなので、特許文献1等に比べて非常に単純な分岐条件でしかない。分岐先アドレスの値を大きく取りたい場合、分岐先アドレスを複数含んでいることにより、条件分岐命令の命令長が長くなり、命令メモリの2ワードに跨ることを示している。この場合、2ワード目の値を命令デコーダに読み込むステップが発生するため、一般的にその分命令の実行サイクル数が長くなる。
特許文献3は、予め複数の分岐先アドレスを記憶しておき、演算処理と同時に条件判定処理を行っている。すなわち、図13に示すように、演算命令の中に条件分岐命令も含んでおり(演算+条件判定命令)、演算結果を元にして条件が成立すれば、その条件に対応する分岐先アドレスに分岐するようになっている。これは、演算命令の結果を比較対象として条件判定を行っており、単純な分岐条件しか設定できない。
本願で開示される発明は、前記課題を解決するため概略以下の構成とされる。
本発明の1つのアスペクト(側面)によれば、分岐条件と前記分岐条件の優先順位とを指定する条件設定命令を命令セットに含み、前記条件設定命令で設定される分岐条件を記憶する記憶域を複数有する分岐条件記憶部を備え、前記分岐条件記憶部は、命令デコーダでデコードされた命令が前記条件設定命令である場合、前記条件設定命令で指定された分岐条件を前記優先順位に対応した記憶域に記憶するプロセッサ装置が提供される。
本発明に係るプロセッサ装置において、分岐条件が成立時に分岐する分岐先アドレスを複数の記憶可能な分岐先アドレス記憶部を備えている。前記条件設定命令には、前記条件設定命令で指定した分岐条件が成立した時の分岐先アドレスが指定される。前記命令デコーダでデコードされた命令が前記条件設定命令である場合、前記分岐先アドレス記憶部には、前記条件設定命令で指定された分岐先アドレスが、前記条件設定命令で指定された優先順位に関連付けて記憶される。
本発明に係るプロセッサ装置において、分岐条件を判定し分岐条件成立時に分岐先アドレスへ分岐する条件分岐命令を前記命令セットに備えている。1つ又は複数の前記条件設定命令が実行され、前記分岐条件記憶部に分岐条件が設定され、且つ、前記分岐先アドレス記憶部に分岐先アドレスが記憶された状態において、前記条件分岐命令の実行時、前記分岐条件記憶部に記憶されている1つ又は複数の分岐条件について、それぞれ、個別に判定を行う1つ又は複数の条件比較部を有する分岐条件比較部と、複数の前記条件比較部での比較結果のうち、同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従って、前記分岐条件記憶部の所定の記憶域に記憶されている分岐条件に該当する分岐先アドレスを、前記分岐先アドレス記憶部から選択する条件分岐判定部と、を備え、前記条件分岐判定部で選択した前記分岐先アドレスに分岐する。
本発明に係るプロセッサ装置において、前記条件判定部は、同時に成立している複数の分岐条件のうち、前記分岐条件記憶部の最も優先順位の高い記憶域に記憶されている分岐条件に該当する分岐先アドレスを前記分岐先アドレス記憶部から選択し、前記分岐アドレスに分岐する。
本発明に係るプロセッサ装置において、前記条件判定部は、1つの分岐条件が成立している場合には、前記分岐条件に該当する分岐先アドレスを前記分岐先アドレス記憶部から選択し、前記分岐アドレスに分岐する。
本発明に係るプロセッサ装置において、前記条件判定部は、分岐条件が1つも成立していない場合には、分岐条件不成立の情報を出力し、分岐は行わず、プログラムカウンタを1増加させる。
本発明に係るプロセッサ装置において、前記分岐条件記憶部のそれぞれの記憶域に記憶される分岐条件は、
比較対象の2つの演算用レジスタの第1及び第2のレジスタアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、を含む。
比較対象の2つの演算用レジスタの第1及び第2のレジスタアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、を含む。
本発明に係るプロセッサ装置において、前記条件設定命令は、オペランドに、
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報と、
比較演算の種別と、
比較演算対象の演算用レジスタの第1のレジスタアドレスと、前記演算用レジスタの第2のレジスタアドレス又は即値データと、
分岐先アドレスと、を含む。
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報と、
比較演算の種別と、
比較演算対象の演算用レジスタの第1のレジスタアドレスと、前記演算用レジスタの第2のレジスタアドレス又は即値データと、
分岐先アドレスと、を含む。
本発明に係るプロセッサ装置において、前記分岐条件記憶部が、前記複数の記憶域として複数の条件記憶部を有し、
前記命令デコーダでデコードされた前記条件設定命令による分岐条件の優先順位情報に基づき、前記条件設定命令の分岐条件を格納する条件記憶部を選択するセレクタをさらに備えている。
前記命令デコーダでデコードされた前記条件設定命令による分岐条件の優先順位情報に基づき、前記条件設定命令の分岐条件を格納する条件記憶部を選択するセレクタをさらに備えている。
本発明に係るプロセッサ装置において、前記分岐条件記憶部を複数備え、前記複数の分岐条件記憶部のうちの1つを選択する別のセレクタをさらに備えている。
本発明に係るプロセッサ装置において、前記条件設定命令は、オペランドに、
前記複数の分岐条件記憶部のうち1つを指定する情報、
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報、
比較演算の種別と、
比較演算対象の演算用レジスタの第1のレジスタアドレスと、前記演算用レジスタの第2のレジスタアドレス又は即値データ、
分岐先アドレスと、を含む。
前記複数の分岐条件記憶部のうち1つを指定する情報、
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報、
比較演算の種別と、
比較演算対象の演算用レジスタの第1のレジスタアドレスと、前記演算用レジスタの第2のレジスタアドレス又は即値データ、
分岐先アドレスと、を含む。
本発明に係るプロセッサ装置において、前記分岐条件記憶部は、比較対象の2つの演算用レジスタの第1及び第2のレジスタアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、
からなる条件を1セットとして記憶する条件記憶部を複数備え、
前記複数の条件記憶部は、複数の分岐条件を記憶する前記複数の記憶域をなし、
前記複数の条件記憶部を選択するセレクタを備えている。
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、
からなる条件を1セットとして記憶する条件記憶部を複数備え、
前記複数の条件記憶部は、複数の分岐条件を記憶する前記複数の記憶域をなし、
前記複数の条件記憶部を選択するセレクタを備えている。
本発明に係るプロセッサ装置において、前記分岐条件比較部は、
それぞれが、対応する前記条件記憶部に記憶された前記第1及び第2のアドレスをデコードし、前記演算用レジスタに第1、第2のレジスタアドレスをそれぞれ出力するとともに、前記演算用レジスタから読み出されたデータをそれぞれ保持する第1及び第2のデコーダと、
前記条件記憶部に記憶された即値データと、前記第2のデコーダの値を受け、前記フラグの出力に基づき一方を選択する第3のセレクタと、
前記第3のセレクタの出力と前記第1のデコーダの出力を入力として受け、前記複合条件記憶部に記憶された演算種別に対応した演算を行う比較器と、
を含む条件比較部の組を、前記複数の条件記憶部にそれぞれ対応して備えている。
それぞれが、対応する前記条件記憶部に記憶された前記第1及び第2のアドレスをデコードし、前記演算用レジスタに第1、第2のレジスタアドレスをそれぞれ出力するとともに、前記演算用レジスタから読み出されたデータをそれぞれ保持する第1及び第2のデコーダと、
前記条件記憶部に記憶された即値データと、前記第2のデコーダの値を受け、前記フラグの出力に基づき一方を選択する第3のセレクタと、
前記第3のセレクタの出力と前記第1のデコーダの出力を入力として受け、前記複合条件記憶部に記憶された演算種別に対応した演算を行う比較器と、
を含む条件比較部の組を、前記複数の条件記憶部にそれぞれ対応して備えている。
本発明に係るプロセッサ装置においては、前記分岐条件記憶部において、前記条件設定命令の実行によって記憶された分岐条件は、前記条件設定命令が実行されたあとに、別の条件設定命令が実行され、前記別の条件設定命令によって別の条件に書き換えられるまでの間、保持される。
本発明に係るプロセッサ装置においては、前記分岐先アドレス記憶部において、前記条件設定命令の実行によって記憶された分岐先アドレスは、前記条件設定命令が実行されたあとに、別の条件設定命令が実行され、前記別の条件設定命令によって別の分岐先アドレスに書き換えられるまでの間、保持される。
本発明に係るプロセッサ装置において、前記条件分岐判定部は、前記命令デコーダでデコードされた前記条件設定命令で指定された優先順位から、前記分岐先アドレス記憶部の該当する記憶域に、前記条件設定命令で指定された分岐先アドレスを格納する第2のセレクタと、複数の前記条件比較部からの比較結果を受け、複数の比較結果が分岐条件成立を示す場合、予め定められた優先方式にしたがって1つの分岐先アドレスを選択する信号を出力し、分岐条件成立が1つの場合、該分岐条件に対応する分岐先アドレスを選択する信号を出力するプライオリティエンコーダと、前記分岐先アドレス記憶部に記憶された複数の分岐先アドレスのうちプライオリティエンコーダで選択された分岐先アドレスを選択する第3のセレクタと、複数の前記条件比較部からの比較結果が全て分岐条件不成立の場合、第1の値を出力し、複数の前記条件比較部からの比較結果のその他の組み合わせに対して第2の値を出力する論理回路を備え、プログラムカウンタの出力と、前記第3のセレクタの出力を受け、前記論理回路の出力が第1の値、第2の値であるかによって前記プログラムカウンタの出力、前記第3のセレクタの出力をプログラムカウンタに設定する第4のセレクタを備えている。
本発明に係るプロセッサ装置において、前記条件分岐判定部は、前記命令デコーダでデコードされた前記条件設定命令の分岐条件の記憶域の指定情報、分岐先アドレスから分岐先アドレス記憶部の該当する記憶域に分岐先アドレスを格納する第2のセレクタと、
出力カウント値によって、前記分岐先アドレス記憶部内の分岐先アドレス、および前記分岐条件記憶部内の分岐条件を選択するカウンタを備え、前記カウンタのカウント出力で選択された分岐条件の条件比較を実行し、前記分岐先アドレス記憶部に記憶された複数の分岐先アドレスのうち前記カウンタで選択された分岐先アドレスを選択する第3のセレクタと、を備え、プログラムカウンタの出力と、前記第3のセレクタの出力を受け、前記条件比較部の力が分岐条件不成立、成立であるかによって前記プログラムカウンタの出力、前記第3のセレクタの出力をプログラムカウンタに設定する第4のセレクタを備えている。
出力カウント値によって、前記分岐先アドレス記憶部内の分岐先アドレス、および前記分岐条件記憶部内の分岐条件を選択するカウンタを備え、前記カウンタのカウント出力で選択された分岐条件の条件比較を実行し、前記分岐先アドレス記憶部に記憶された複数の分岐先アドレスのうち前記カウンタで選択された分岐先アドレスを選択する第3のセレクタと、を備え、プログラムカウンタの出力と、前記第3のセレクタの出力を受け、前記条件比較部の力が分岐条件不成立、成立であるかによって前記プログラムカウンタの出力、前記第3のセレクタの出力をプログラムカウンタに設定する第4のセレクタを備えている。
本発明に係るプロセッサ装置において、前記分岐条件比較部は、1つ又は複数の前記条件設定命令が実行され、前記分岐条件記憶部に分岐条件が設定され、且つ、前記分岐先アドレス記憶部に分岐先アドレスが記憶された状態において、前記条件分岐命令の実行時、前記分岐条件記憶部に記憶されている1つ又は複数の分岐条件について、それぞれ、個別に判定を行う1つの条件比較部を有し、前記カウンタは、前記命令デコーダで条件分岐命令が解析された場合に、前記命令デコーダからリセット信号を受け取り、最高優先順位の番号にリセットされ、前記カウンタのカウント値に該当する優先順位の分岐条件を、前記分岐条件記憶部から読み出して、前記条件比較部へ格納し、優先順位の高い分岐条件から順番に条件分岐判定を行っていき、分岐条件が成立したとき、その時点で選択されている分岐先アドレスに分岐する。
本発明に係るプロセッサ装置は、分岐条件と前記分岐条件成立時の分岐先アドレスとを、指定した優先順位に対応させて設定する条件設定命令と、
前記条件設定命令によって設定済みの1つ又は複数の分岐条件の条件成立の有無を判定し、分岐条件成立時に分岐先アドレスへ分岐する条件分岐命令を前記命令と、を、
命令セットに含み、
1つ又は複数の前記条件設定命令でそれぞれ指定される1つ又は複数の分岐条件を、前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐条件記憶部と、
1つ又は複数の前記条件設定命令で指定される1又は複数の分岐先アドレスを前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐先アドレス記憶部と、
を備え、
1つ又は複数の前記条件設定命令の実行により、前記分岐条件記憶部に1つ又は複数の分岐条件が設定され、且つ、前記分岐先アドレス記憶部に1つ又は複数の分岐先アドレスが記憶された状態のもとで、1つ又は複数の前記条件設定命令の実行後、前記条件分岐命令の実行の間に、1つ又は複数の他の命令の実行が可能とされ、
前記条件分岐命令の実行時に、前記分岐条件記憶部に既に記憶されている1つ又は複数の分岐条件について、それぞれ、個別に判定を行い、同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従って、前記分岐条件記憶部の所定の記憶域に記憶されている分岐条件に該当する分岐先アドレスを、前記分岐先アドレス記憶部から選択する手段を備えている。
前記条件設定命令によって設定済みの1つ又は複数の分岐条件の条件成立の有無を判定し、分岐条件成立時に分岐先アドレスへ分岐する条件分岐命令を前記命令と、を、
命令セットに含み、
1つ又は複数の前記条件設定命令でそれぞれ指定される1つ又は複数の分岐条件を、前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐条件記憶部と、
1つ又は複数の前記条件設定命令で指定される1又は複数の分岐先アドレスを前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐先アドレス記憶部と、
を備え、
1つ又は複数の前記条件設定命令の実行により、前記分岐条件記憶部に1つ又は複数の分岐条件が設定され、且つ、前記分岐先アドレス記憶部に1つ又は複数の分岐先アドレスが記憶された状態のもとで、1つ又は複数の前記条件設定命令の実行後、前記条件分岐命令の実行の間に、1つ又は複数の他の命令の実行が可能とされ、
前記条件分岐命令の実行時に、前記分岐条件記憶部に既に記憶されている1つ又は複数の分岐条件について、それぞれ、個別に判定を行い、同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従って、前記分岐条件記憶部の所定の記憶域に記憶されている分岐条件に該当する分岐先アドレスを、前記分岐先アドレス記憶部から選択する手段を備えている。
本発明によれば、命令デコードされた命令が条件設定命令である場合、前記条件設定命令で指定された分岐条件を、複数の分岐条件を記憶する分岐条件記憶部のうち、前記条件設定命令で指定された優先順位に対応する記憶域に記憶するプロセッサの分岐処理方法が提供される。
本発明に係る方法において、前記条件設定命令には、前記条件設定命令で指定した分岐条件が成立した時の分岐先アドレスが指定され、
前記命令デコードされた命令が条件設定命令である場合、前記条件設定命令で指定された分岐先アドレスを、前記分岐条件の優先順位に対応付けて記憶する。
前記命令デコードされた命令が条件設定命令である場合、前記条件設定命令で指定された分岐先アドレスを、前記分岐条件の優先順位に対応付けて記憶する。
本発明に係る方法において、1つ又は複数の前記条件設定命令が実行され、分岐条件と分岐先アドレスが記憶されたのち、
条件分岐命令の実行時、記憶されている複数の分岐条件についてそれぞれ個別に判定を行い、
同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従い選択された分岐条件に該当する分岐先アドレスに分岐する。
条件分岐命令の実行時、記憶されている複数の分岐条件についてそれぞれ個別に判定を行い、
同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従い選択された分岐条件に該当する分岐先アドレスに分岐する。
本発明によれば、条件設定命令を複数回実行することによって分岐条件を複数記憶できるようにしているため、分岐条件を繰り返し行うループ処理等に適用した場合に、ループ処理内では、1つの条件分岐命令のみを実行するだけで条件分岐を処理することができ、処理を高速化する。
本発明においては、複数の分岐条件をそれぞれ記憶するための複数の記憶域(条件記憶部)を有する分岐条件記憶部(1)と、命令コードを保持および解析する命令デコーダ(2)と、分岐条件の個々の条件に対して比較演算を行う分岐条件比較部(5)と、条件分岐命令においてプログラムの分岐を行うか否かを判定する条件分岐判定部(6)と、条件分岐判定部(6)からの出力値を基に、分岐先アドレスか次の命令のアドレスかを選択するセレクタ(7)と、プロセッサの命令実行位置を表すプログラムカウンタ(8)とを備え、条件設定命令(SETCMP)で指定された分岐条件は、分岐条件記憶部(1)の記憶域のうち、前記条件設定命令(SETCMP)で指定された記憶域に記憶される。条件分岐命令(XBRA)を実行時、分岐条件比較部(5)では、分岐条件記憶部(1)に記憶されている複数の分岐条件の判定を個々に行う。条件分岐判定部(6)では、分岐条件比較部(5)からの比較結果を受け、同時に成立した分岐条件のうち、予め定められた所定の記憶域に記憶されている分岐条件に該当する分岐アドレスを、分岐先アドレス記憶部(6c)から選択し、分岐アドレスに分岐する。
本発明は、命令セットとして、分岐条件の判定に必要な情報(比較対象とする第1のレジスタアドレス、第2のレジスタアドレスまたは即値など)を指定可能な条件設定命令(分岐条件設定命令)と、
予め複数回実行した条件設定命令の情報を用いて分岐条件の判定を行い、同時に成立した条件のうち、最も優先度の高い分岐条件に対応する分岐先アドレスへ分岐することが可能な条件分岐命令と、を有し、複数の分岐条件を1ステップ分の実行時間と命令記憶領域だけで実行するようにしたものである。
予め複数回実行した条件設定命令の情報を用いて分岐条件の判定を行い、同時に成立した条件のうち、最も優先度の高い分岐条件に対応する分岐先アドレスへ分岐することが可能な条件分岐命令と、を有し、複数の分岐条件を1ステップ分の実行時間と命令記憶領域だけで実行するようにしたものである。
条件設定命令は、分岐条件と分岐先アドレスを、優先順位を付けて設定できる。
条件分岐命令は、1つの命令で予め条件設定命令によって設定された複数の分岐条件の成立/不成立を判定し、同時に成立した条件があれば、それらの内最も優先度の高い分岐条件に対応する分岐先アドレスを選択し、次の命令実行アドレスをする。
予め条件設定命令を複数実行するによって分岐条件を複数記憶できるようにしているため、同じ分岐条件を繰り返し行うループ処理等に適用したときに、ループ処理内では1つの条件分岐命令のみを実行するだけで条件分岐を処理できるため、高速に処理できる。
分岐条件と分岐先アドレスの情報量が増えて、命令長が2ワード以上になった場合でも、条件設定命令の命令長および実行ステップ数が増えるだけであって、条件分岐命令の命令長および実行ステップ数は増加しない。以下実施例に即して説明する。
<実施例1>
図1は、本発明の一実施例の構成を示す図である。図1を参照すると、本実施例のプロセッサ装置は、複数の分岐条件を記憶できる分岐条件記憶部1と、命令コードを保持および解析し、その命令に関連するブロックを制御する命令デコーダ2と、命令コードを記憶している命令メモリ3と、プロセッサが演算のために用いる演算用レジスタ(レジスタファイル)4と、分岐条件の個々の条件に対して比較演算を行う分岐条件比較部5と、条件分岐命令においてプログラムの分岐を行うか否かを判定する条件分岐判定部6と、条件分岐判定部6からの出力値を元に、分岐先アドレスか次の命令のアドレスかを選択するセレクタ7と、プロセッサの命令実行位置を表すプログラムカウンタ(PC)8と、を備えている。
図1は、本発明の一実施例の構成を示す図である。図1を参照すると、本実施例のプロセッサ装置は、複数の分岐条件を記憶できる分岐条件記憶部1と、命令コードを保持および解析し、その命令に関連するブロックを制御する命令デコーダ2と、命令コードを記憶している命令メモリ3と、プロセッサが演算のために用いる演算用レジスタ(レジスタファイル)4と、分岐条件の個々の条件に対して比較演算を行う分岐条件比較部5と、条件分岐命令においてプログラムの分岐を行うか否かを判定する条件分岐判定部6と、条件分岐判定部6からの出力値を元に、分岐先アドレスか次の命令のアドレスかを選択するセレクタ7と、プロセッサの命令実行位置を表すプログラムカウンタ(PC)8と、を備えている。
本実施例において、条件設定命令(ニーモニックはSETCMP;シンタックスは後述する)は、分岐条件のための比較演算に必要な情報(分岐条件が成立したときにジャンプする分岐先アドレスを含む)を分岐条件記憶部1に設定する命令である。条件設定命令は、優先順位を指定して、分岐条件のための比較演算に必要な情報を、分岐条件記憶部1の指定した記憶域(優先順位に対応した記憶域)に記憶する。
条件分岐命令(ニーモニックはXBRA)は、それぞれが分岐条件、分岐先アドレス、優先順位を指定した条件設定命令を事前に複数実行することによって設定された複数の分岐条件について、成立/不成立を判定し、同時に成立した複数の分岐条件が存在する場合、同時に成立した複数の分岐条件の内最も優先度の高い分岐条件に対応する分岐先アドレスを選択し、次の命令実行アドレスをする。なお、プログラムとして、条件設定命令をループの前に実行し、ループの終了判定を条件分岐命令1つで実行することで、繰り返し実行されるループ演算の処理時間の短縮に貢献する。
図2は、図1の分岐条件記憶部1の構成の一例を説明するための図である。分岐条件記憶部1は、命令デコーダ2でデコードされた条件設定命令によって指定される分岐条件を記憶する。すなわち、1つの条件設定命令を実行することで、条件設定命令で指定された1つの分岐条件が、分岐条件記憶部1の指定された記憶域に記憶される。複数の条件設定命令を実行することで、それぞれの条件設定命令で指定された複数の分岐条件が、分岐条件記憶部1の複数の記憶域に記憶される。なお、本実施例においては、1つの条件分岐命令の実行により、分岐条件記憶部1の複数の記憶域に記憶された複数の分岐条件が評価され、分岐条件成立時、分岐が行われる。
本実施例においては、条件設定命令(SETCMP)で指定される分岐条件に対して条件設定命令(SETCMP)で指定された優先順位を付与して、分岐条件記憶部1に記憶するために、分岐条件記憶部1の分岐条件の各記憶場所に対して優先順位が予め決められている。
図2を参照すると、分岐条件記憶部1は、複数の記憶域として、それぞれが1つ分の分岐条件を記憶する条件記憶部101〜104を備え、さらに、条件記憶部101〜104の内のいずれを有効とするかを選択するセレクタ105とを備えている。
条件記憶部101は、分岐設定命令の分岐判定の条件演算(2項演算)を行う2つのレジスタの第1のレジスタアドレスを記憶するレジスタr101a、第2のレジスタアドレスを記憶するレジスタr101b、即値を記憶するレジスタr101c、2項比較演算で2つのレジスタを用いるか、即値を用いるかを示すR/Iフラグを記憶するレジスタ(R=Register:レジスタアドレス、I=Immidiate:即値の)r101d、演算を行う比較器の種類を記憶するレジスタr101eを備えている。条件記憶部102〜104も同様の構成である。
ここで、条件設定命令のアセンブラの命令シンタックスについて説明しておく。
条件設定命令は、分岐条件のための比較演算に必要な情報を分岐条件記憶部に設定する命令であり、オペコードのニーモニックはSETCMPであり、例えば以下のようなオペランド形式を持つ。
SETCMP p0,r1,NE,r11,L1 ・・・(1)
“p0”は、1番目の優先順位の分岐条件を意味し、条件記憶部101を示している。同様に“p1”、“p2”、“p3”は、それぞれ条件記憶部102、103、104に対応する。なお、特に制限されないが、本実施例では、分岐条件記憶部1内の条件記憶部を4個備え、最大4つの分岐条件が同時に記憶される。優先順位p0、p1、p2、p2は例えば00b(bは2進表示を表す)、01b、10b、11bに対応する。
“r1”および“r11”は、演算用レジスタ4内のレジスタアドレス1および11のレジスタを表している。
“NE”は、r1とr11の値を比較するときに使用する比較演算器の種類“!=”を表している。
“L1”は、この分岐条件が成立したときにジャンプする分岐先アドレスを表している。
以下の表1に、条件設定命令(SETCMP)で指定される比較演算器の種類の例を、ニーモニック、意味、C言語表記、選択値(比較演算器の種類の対応2進コード)を示す。
図2において、命令デコーダ2は、条件設定命令(SETCMP)の命令コードを解析して、ビット列に分解された状態が示されている。“p0”(00b)は、セレクタ105に入力され、条件記憶部101を選択する。“r1”(0001b)は、レジスタr101aに入力されて記憶される。“r11”(1011b)は、レジスタr101bに入力されて記憶される。R/Iフラグ(0b)は、レジスタr101dに入力されて記憶される。比較器の種類“NE”(001b)はレジスタr101eに入力されて記憶される。
また、命令デコーダ2で解析された“p0”、“L1”の値は、条件分岐判定部6に入力される。“L1”の値は、条件分岐判定部6内の“p0”(00b)に対応する分岐先アドレス記憶部(図4の6c)に入力されて値が記憶される。
分岐条件記憶部1、分岐先アドレス記憶部にそれぞれ記憶された値は、次に同じ場所の分岐条件記憶部および分岐先アドレス記憶部に対する条件設定命令が実行されない限り保持される。
条件分岐命令は、条件設定命令(SETCMP)で設定した各分岐条件の比較演算を行い、その結果をもとに、分岐条件の判定を行う命令である。アセンブラのニーモニックでは、次のように表される。
XBRA ・・・(2)
“XBRA”は、条件分岐命令の名前を表している。オペランド等、他のパラメータは特に必要ない。すなわち、本実施例において、条件分岐命令はオペコードのみの命令とされる。
分岐条件比較部5は、命令デコーダ2で条件分岐命令がデコードされたとき、条件設定命令(SETCMP)の実行によって、事前に分岐条件記憶部1に設定された複数の分岐条件の比較演算を同時に実行する。
図3は、図1の分岐条件比較部5の構成の一例を示す図である。図3を参照すると、分岐条件比較部5は、複数の条件記憶部101、102、103にそれぞれ対応して、分岐条件の比較演算を行う複数の条件比較部51、52、53、54を備えている。
条件比較部51は、分岐条件記憶部1内の条件記憶部101のレジスタr101aの第1のレジスタアドレスを用いて演算用レジスタ4の中から該当するレジスタの値を取得するデコーダ51aと、レジスタr101bの第2のレジスタアドレスを用いて演算用レジスタ4の中から該当するレジスタの値を取得するデコーダ51bと、条件記憶部101のレジスタr101dの即値と、デコーダ51bで選択された演算用レジスタ4内のレジスタの値のいずれか一方を、条件記憶部101のレジスタr101eのR/Iフラグの値に基づき選択するセレクタ51cと、デコーダ51aで選択された演算用レジスタ4内のレジスタの値とセレクタ51aから出力された値とを比較演算し、比較演算結果c0を条件分岐判定部6に出力する比較器51dと、を備えている。
条件比較部51は、条件記憶部101のレジスタ(r101a,101b,r101c,r101d,r101e)の設定値に基づき比較演算を行い、比較演算結果c0を条件分岐判定部6に出力する。
条件比較部52、53、54の各構成も、条件比較部51と同様とされる。
条件比較部52、53、54のそれぞれ、分岐条件記憶部1内の条件記憶部102、103、104の各レジスタ(r102a,102b,r102c,r102d,r102e)、(r103a,103b,r103c,r103d,r103e)、(r104,a104b,r104c,r104d,r104e)の出力を入力し比較演算結果c1、c2、c3を条件分岐判定部6に出力する。
本実施例では、最大4個の分岐条件を処理できる場合を示しており、分岐条件比較部5の条件比較部51、52、53、54と、条件記憶部101、102、103、104とが対を成すように構成されている。
条件分岐命令(XBRA)が命令デコーダ2でデコードされた場合、2つの処理が実行される。
第1の処理は、図3を参照して説明したように、分岐条件記憶部1に記憶されている分岐条件の情報を用いて分岐条件比較部5において、それぞれの分岐条件を同時に比較演算を行い、その結果c0〜c3を条件分岐判定部6へ出力する。
第2の処理は、図4(A)に示すように、比較演算結果c0〜c3をプライオリティエンコーダ6bに入力し、比較演算結果c0〜c3の中で同時に条件が成立した場合でも、その中で最も優先度の高い条件(例えばc0)が選択されるようにする。
図4(A)は、図1の条件分岐判定部6の構成の一例を示す図である。図4(A)を参照すると、命令デコーダ2でのSETCMP命令のデコード結果である優先順位と、分岐先アドレスを入力するセレクタ(デコーダ)6aと、セレクタ6aで選択されたセレクトアドレスに分岐アドレスを格納する分岐先アドレス記憶部6cと、分岐条件比較部5からの比較結果c0、c1、c2、c3を入力し、比較演算結果c0〜c3の中で同時に条件が成立した場合、優先順位の高い分岐条件の比較を行った条件比較部を選択するプライオリティエンコーダ6bと、分岐先アドレス記憶部6cに記憶された複数の分岐先アドレスのうちから、プライオリティエンコーダ6bで選択された分岐条件に対応する分岐先アドレスを1つ選択するセレクタ6dと、分岐条件比較部5からの比較結果c0、c1、c2、c3を入力する論理和回路6eと、を備えている。
論理和回路6eは、分岐条件比較部5からの比較結果c0、c1、c2、c3が全て0のとき、セレクタ7の選択制御信号としてFを出力し、セレクタ7はPC+1をプログラムカウンタ8に設定する(分岐無し)。
論理和回路6eは、分岐条件比較部5からの比較結果c0、c1、c2、c3のうち少なくとも1つが1のとき、セレクタ7の選択制御信号としてTを出力し、セレクタ7はセレクタ6dからの分岐先アドレスをプログラムカウンタ8に設定する。
図4(B)に示すように、セレクタ6aのセレクト値として、条件設定命令より抽出された“p0”(00b)の値が与えられ、該当する記憶域(条件Aの箇所)に分岐先アドレスの値が格納される。すなわち、分岐先アドレス記憶部6cに記憶される分岐先アドレスは優先度順に並べられている。
セレクト値の00b側と11b側のどちらが優先順位が高いかは、図4(A)のプライオリティエンコーダ6bにおける優先方式によって異なる。
分岐先アドレス記憶部6cは、記憶した分岐アドレスをセレクタ6dへ出力し、セレクタ6dは、プライオリティエンコーダ6bの選択結果に基づき、分岐先アドレス記憶部6c内の該当する分岐アドレスを選択し、セレクタ7へ出力する。
特に制限されないが、本実施例において、プライオリティエンコーダ6bは、c3→c2→c1→c0の順に優先順位が高くなるものとする。すなわち、c0が1のとき、c1〜c3の少なくとも1つが同時に1の場合、c0を選択し、出力00bを出力する。c0が0で、c1が1の場合、c2〜c3の少なくとも1つが同時に1の場合、c1を選択し、出力01bを出力する。c0、c1が0で、c2が1の場合、c3が同時に1の場合、c1を選択し、出力10bを出力する。c0、c1、c2が0で、c3が1の場合、c3を選択し、出力11bを出力する。比較演算結果c0、c1、c2、c3のうち1つのci(iは0〜3の1つ)が1、他が0の場合、ciのiに対応する2ビットコードを出力する。プライオリティエンコーダ6bは比較演算結果が1の分岐先アドレスを選択するようにセレクタ7dでの選択を制御する。
プライオリティエンコーダ6bの動作を示す真理値表は、以下の表2のようになる。b0,b1は出力値であり、セレクタ6dの選択制御信号である。
(b0、b1)=(0,0)、(0,1)、(1,0)、(1,1)のとき、図4(B)の分岐先アドレス記憶部6cに記憶される分岐先アドレス1、2、3、4がそれぞれ選択される。
本実施例においては、条件設定命令(SETCMP)によって予め条件の設定を行っておくことで、条件分岐する段階では1つの条件分岐命令の実行に必要なステップ数しか掛からないので、より高速に分岐処理することが可能であるが、特に、同じ条件を繰り返し実行するループ処理に適用することで、ループ演算時間を短縮し、高速性を増すという作用効果を奏する。
図6は、本実施例において、複数の条件分岐を含むループ処理の例を説明するための説明図である。命令メモリのアドレスN〜N+3までの4つの命令で、分岐条件A〜Dの4つの分岐条件を条件設定命令(SETCMP)で設定している(分岐条件A〜Dの分岐先アドレスはそれぞれL1〜L4)。この設定処理はループ処理の外で1回だけ行えば良い。
その後、分岐条件A〜Dに何らかの影響を与える処理を実行した後、アドレスXの条件分岐命令を実行する。このとき、分岐条件A〜Dの何れかが条件を満たせば、該当する分岐先アドレスに戻り、一連の処理が繰り返される。
また、分岐条件A〜Dのうち2つ以上の条件が成立したときは、そのうち最も優先順位の高い分岐条件が選択されて、それに該当する分岐アドレスに戻る。例えば、分岐先A〜Dの分岐条件が同時に成立した場合、もっともネストレベルの深い分岐先L4への分岐に対応する分岐条件Dが選択され、L4へ分岐する。
さらに、すべての条件が不成立だったときは、分岐は行われず、ループ処理を抜けて、次の命令(アドレスX+1)が実行される。
なお、本実施例において、分岐条件記憶部1の条件記憶部101、102、103、104のうち、条件設定命令(SETCMP)を1回実行して1つの条件記憶部101に分岐条件を設定し、条件分岐命令(XBRA)の実行時、分岐条件比較部51のみで分岐条件の比較を行って分岐判定を行うようにしてもよい。すなわち、複合分岐条件として、条件設定命令(SETCMP)を4回実行してから、条件記憶部101〜104に分岐条件をそれぞれ設定したのち、条件分岐命令(XBRA)を実行して4つの分岐条件を判定するという構成に制限されるものでなく、1個の分岐条件、あるいは、複合条件として2個の分岐条件、3個の分岐条件、4個の分岐条件の複合条件であってもよいことは勿論である。条件設定命令(SETCMP)を1回だけ実行して分岐判定を行う場合、条件設定命令(SETCMP)では、優先順位の最も高い条件記憶部101を指定して分岐条件を設定し、分岐先アドレス記憶部6cに分岐先アドレスを格納するようにしてもよい。そして、分岐条件比較部5は、条件記憶部101、102に対応する条件比較部51、52のみを用いる場合、使用しない条件比較部53、54の比較演算結果c2、c3の値を0にマスクするようにしてもよい。図5は、かかる機能を実現する構成を示す図である。
条件分岐命令(XBRA)のオペランドにマスクビットを設ける。
XBRA マスクビット ・・・(3)
命令デコーダ2で条件分岐命令(XBRA)をデコードし、マスクビット(本実施例では4ビット)の各ビットと、条件比較部51、52、53、54の比較結果とのAND演算をとった結果が、プライオリティエンコーダ6bにc0、c1、c2、c3として入力される。図5に示した例では、条件分岐命令(XBRA)は、条件比較部51、52の比較演算結果をプライオリティエンコーダ6bにc0、c1として伝達し、条件比較部53、54の比較演算結果を0に設定してプライオリティエンコーダ6bに与えている。
前記第1の実施例では、分岐条件記憶部1に記憶できる分岐条件の数と、条件比較部の個数が1対1に対応しているが、本発明はかかる構成に限定されるものでないことは勿論である。条件比較部51の1個だけでも良い。
<実施例2>
本発明の第2の実施例は、分岐条件比較部5が1つの条件比較部51を備えた構成としたものである。図7は、本発明の第2の実施例の条件分岐判定部6の構成を示す図である。
本発明の第2の実施例は、分岐条件比較部5が1つの条件比較部51を備えた構成としたものである。図7は、本発明の第2の実施例の条件分岐判定部6の構成を示す図である。
本実施例は、図4、図5のプライオリティエンコーダ6bの代わりに、カウンタ6f(カウント値は2ビット)を備えている。
カウンタ6fは、分岐先アドレス記憶部6c内の分岐先アドレス、および分岐条件記憶部1内の分岐条件を選択する役割を果たす。すなわち、カウンタ6fは、カウント値が優先順位に対応し、優先順位にしたがって分岐条件記憶部1の記憶域(条件記憶部)、分岐先アドレス記憶部6cの記憶域を選択するアドレスカウンタとして機能する。
カウンタ6fの動作を説明する。まず、命令デコーダ2で条件分岐命令(XBRA)が解析された時点で命令デコーダ2からリセット信号を受け取り、最高優先順位の番号(例えばゼロ)にリセットされる。リセット信号は、命令デコーダ2で条件分岐命令(XBRA)をデコードした時点で活性化される任意の信号を用いることができる。
カウンタ6fのカウント値は、分岐条件記憶部1のセレクタ105に選択制御信号として入力される。なお、本実施例において、図2の分岐条件記憶部1のセレクタ105には、命令デコーダ2からの条件設定命令の優先順位情報(2ビット)と、カウンタ6fの出力(2ビット)を選択するセレクタ(不図示)を備え、条件設定命令(SETCMP)の実行時には、命令デコーダ2からの条件設定命令の優先順位情報(2ビット)がセレクタ105に供給され、条件分岐命令(XBRA)の実行時には、カウンタ6fの出力が選択されてセレクタ105に供給される。
カウンタ6fのカウント値に該当する優先順位の分岐条件が分岐条件記憶部1の選択された条件記憶部から読み出され、条件比較部51のデコーダ51a、51b、セレクタ51c、比較器51dに設定される。また、カウンタ6fの出力(2ビット)は、セレクタ6dに選択制御信号として入力される
条件比較部51で設定された分岐条件に関する比較演算を行い、比較演算結果c0が条件分岐判定部6の制御回路6gに入力され、比較演算結果c0が分岐成立を示す値(c0=1)のとき、制御回路6gは、セレクタ7の選択制御信号としてT(論理1)を出力する。分岐先アドレス記憶部6cに記憶される分岐先アドレスのうち、カウンタ6fのカウント値に対応する記憶域の分岐先アドレスがセレクタ6dによって選択されて、セレクタ7に出力され、該分岐先アドレスがプログラムカウンタ8にセットされる。
分岐条件が成立しない場合(c0=0)、制御回路6gは、カウンタ6fのカウント値を1つ進めるように、カウンタ6fに対してカウントクロックを出力する(例えば1インクリメント)。カウンタ6fはカウント値を1つ進め、分岐条件記憶部1の2番目の優先順位の条件記憶部に設定されている分岐条件を条件比較部51に設定する。また、カウンタ6fの出力(2ビット)は、セレクタ6dに選択制御信号として入力される。2番目に優先順位の分岐条件に関する条件比較部51からの比較演算結果c0が、分岐成立を示す値(c0=1)のとき、制御回路6gは、セレクタ7の選択制御信号としてT(論理1)を出力する。一方、比較演算結果c0=0のとき、制御回路6gはカウンタ6fのカウント値を1つ進めるようにカウントクロックを出力する(例えば1インクリメント)。このように、制御回路6gは、カウンタ6fを制御して、優先順位の高い分岐条件から順番に条件分岐判定を行っていき、分岐条件が成立したとき、その時点で選択されている分岐先アドレスに分岐するように制御する。分岐条件記憶部1の条件記憶部101〜104に記憶されている4つの分岐条件が全て不成立の場合、制御回路6gは、セレクタ7の選択制御信号として不成立(F)を出力し、セレクタ7は、現在のプログラムカウンタの値を1つ増加した値PC+1をプログラムカウンタ8に出力する。
本実施例では、条件分岐命令(XBRA)の実行サイクルは、最も優先順位の高い分岐条件が成立する場合を除き、複数サイクルにまたがる。そこで、制御回路6gは、プログラムカウンタ8に対してカウント制御信号を供給し、条件比較部51で優先順位の高い分岐条件から順番に分岐条件の成立の有無を比較判定する期間、プログラムカウンタ8のインクリメント動作をディセーブル状態に設定する。制御回路6gは、命令デコーダ2において、条件分岐命令(XBRA)をデコーダした時点で出力されるリセット信号に基づき、プログラムカウンタ8へのカウント制御信号をディスエーブル状態とし、分岐の有無が確定した場合、カウント制御信号をイネーブル状態とする。プログラムカウンタ8は、カウント制御信号がイネーブル状態の場合にのみ、インクリメント動作(PC+1)又は分岐先アドレスのラッチ動作を行う。なお、制御回路6gは、分岐条件記憶部1の4つの条件記憶部101〜104に記憶されている分岐条件を1つの条件比較部51で順次実行した比較演算結果をそれぞれ一時的に保持しておく4つのラッチ回路と、4つのラッチ回路の出力の論理和をとる論理和回路と、論理和(OR)回路の出力が0を示し、カウンタ6fでオーバフローが生じていない場合、カウンタ6fを1インクリメント(あるいは1デクリメント)させるためのカウントクロックを出力する回路を備え、論理和回路の出力が1を示した段階で、分岐成立として、セレクタ7の選択制御信号としてT(1)を供給する構成としてもよい。
本実施例において、分岐条件記憶部1が条件記憶部101〜104を備えている場合、制御回路6gは、4つの条件記憶部101〜104にそれぞれ設定されている分岐条件の成立の有無の判定を1つの条件比較部51で順番に全て実行したのちに、セレクタ7に選択制御信号を出力するようにしてもよい。あるいは、制御回路6gは、4つの条件記憶部101〜104にそれぞれ設定されている分岐条件のうち優先順位にしたがって選択されたいずれかの分岐条件が成立した段階で、残りの分岐条件の成立の判定を条件比較部51で行うことなく、セレクタ7に選択制御信号(T)を出力するようにしてもよい。
なお、本実施例においても、前記実施例と同様、条件分岐命令(XBRA)のオペランドにマスクビットを備え、分岐条件記憶部1が条件記憶部101〜104のうち選択した条件記憶部に記憶される分岐条件のみを有効とするようにしてもよい。この場合、命令デコーダ2でデコードされた条件分岐命令(XBRA)のオペランドのマスクビットの各ビットと、制御回路6g内の図示されない4つのラッチ回路の出力とのAND演算結果を、制御回路6g内の論理和(OR)回路に供給し、論理和(OR)回路の出力が0を示し、カウンタ6fでオーバフローが生じていない場合、カウンタ6fを1インクリメント(あるいは1デクリメント)させるためのカウントクロックを出力し、論理和回路の出力が1を示した段階で、分岐成立として、セレクタ7の選択制御信号としてT(1)を供給する構成としてもよい
本実施例において、条件分岐命令の実行サイクル数は、分岐条件の数だけ増加することになり、前記第1の実施例に比べて実行速度は低下するが、条件比較部5と条件分岐判定部6の構成は簡素となり、回路規模を小さくできる利点がある。
図8は、本発明のさらに別の実施例の構成を示す図である。分岐条件記憶部1として、該分岐条件記憶部1に記憶できる分岐条件の数を増やす際、単純にセレクタ105で選択できる数を増やしても良いが、図8に示すように、別のセレクタ500を設けて、階層構造的に選択できるようにしても良い。
図8を参照すると、分岐条件記憶部1は、それぞれ、条件記憶部100、200、300、400と、条件記憶部100〜400のうちいずれを有効とするかを選択するセレクタ500とを備えている。
条件記憶部100は、条件記憶部101、102、103、104と、条件記憶部101〜104のうちのいずれを有効とするかを選択するセレクタ105とを備えている。なお、図8では、簡略化のため、条件記憶部200、300、400の内部構成は図示されないが、これらは、いずれも条件記憶部100と同様の構成とされる。
条件記憶部101において、
r101aは、演算用レジスタ4の第1のレジスタアドレスを記憶するレジスタ、
r101bは、演算用レジスタ4の第2のレジスタアドレスを記憶するレジスタ、
r101cは、即値データを記憶するレジスタ、
r101dは、R/Iフラグを記憶するレジスタ(R=Register:レジスタアドレス)、I=Immediate:即値の意味)、
r101eは、比較器の演算の種類を記憶するレジスタ
である。
r101aは、演算用レジスタ4の第1のレジスタアドレスを記憶するレジスタ、
r101bは、演算用レジスタ4の第2のレジスタアドレスを記憶するレジスタ、
r101cは、即値データを記憶するレジスタ、
r101dは、R/Iフラグを記憶するレジスタ(R=Register:レジスタアドレス)、I=Immediate:即値の意味)、
r101eは、比較器の演算の種類を記憶するレジスタ
である。
本実施例では、例えば条件設定命令(SETCMP)のオペランドに、条件記憶部100〜400のうち1つを選択するための値“p0”〜“p3”を指定できるようにする。また、条件分岐命令にも同様の指定ができるようにする。
(条件設定命令の例)
SETCMP s0,p0,r1,NE,r11,L1 ・・・(4)
SETCMP s0,p0,r1,NE,r11,L1 ・・・(4)
“s0”で条件記憶部100を選択し、“p0”で条件記憶部100内の条件記憶部101を選択する。同様に、“s1”、“s2”、“s2”で条件記憶部200、300、400をそれぞれ選択する。
本実施例において、条件分岐命令は
XBRA s0 ・・・ (5)
“s0”で条件記憶部100の一連の分岐条件を選択する。
XBRA s0 ・・・ (5)
“s0”で条件記憶部100の一連の分岐条件を選択する。
なお、図8において、条件分岐命令(XBRA s0)実行時には、命令デコーダ2からの信号s0が、セレクタ500に供給され、条件記憶部100が選択される。条件分岐命令がXBRA s1の場合、セレクタ500は、条件記憶部200を選択する。同様に、“s2”、“s2”で条件記憶部300、400をそれぞれ選択する。
かかる構成により、条件記憶部101〜104で構成される一連の分岐条件を複数個記憶しておくことが可能となり、特に、多重ループ処理に適用したときに、一連の分岐条件を再設定することなく処理できることから、条件分岐処理の高速化を図ることができる。
<実施例3>
図9は、本発明の別の実施例を説明するための図である。前記第1の実施例において、条件設定命令(SETCMP)の命令長は1ワードで収まる(図6参照)。
図9は、本発明の別の実施例を説明するための図である。前記第1の実施例において、条件設定命令(SETCMP)の命令長は1ワードで収まる(図6参照)。
図8に示した前記実施例の条件設定命令のように、指定する分岐条件の情報が増えてくると、命令長が長くなり、図9(A)に示すように、命令メモリの1ワードに収まらなくなることがある。図9(A)に示す例では、オペコードと分岐条件の一部で1ワードとなっている。
本実施例においては、図9(B)に示すように、条件設定命令(SETCMP)の命令長を、2ワード以上に跨るようにしてもよい。この場合、条件設定命令の実行には、2ワード以上の命令長に対応して、例えば2ステップ分以上要する。しかしながら、本実施例において、条件分岐命令(XBRA)の実行サイクルは、1ステップのままである。このため、分岐処理にかかる実行時間は変わらず、実行速度を低下することなく処理可能である。これは、特に同じ条件を繰り返し行うループ処理においては、条件分岐の実行速度を低下させないという点で大変有効である。
特許文献1で同様の場合を想定すると、条件判別命令の命令長が2ワードになり、命令の実行に2ステップ掛かるとすると、4つの分岐条件を処理するのに2×4=8ステップ掛かり、さらに多分岐命令の1ステップが加わって合計9ステップ分がループ処理を繰り返す回数分掛かることになる。
(2×4+1)×ループ回数 ・・・(6)
これに対し、本実施例においては、ループ処理の外で条件設定命令を行うので、たとえ条件設定命令の実行が2ステップになっても、ループ処理に掛かる分岐処理のステップ数は条件分岐命令のみの分で済む。
2×4+1×ループ回数 ・・・(7)
また、命令メモリのアドレス空間が広くなると、条件設定命令で指定する分岐先アドレスのビット数が多くなり、この場合も命令長が長くなり、1ワードに収まらなくなることがある。
特許文献2のように、条件分岐命令で分岐先アドレスを複数指定すると、条件分岐命令の命令長が非常に長くなり、命令の実行ステップ数もその分増えることになる。
例えば、4つの分岐先アドレスを含んだため条件分岐命令の命令長が4ワードになった場合、条件分岐命令を1回実行するのに4ステップ掛かることになるため、ループ処理に掛かる分岐処理のステップ数は下記のようになる。
4×ループ回数 ・・・(8)
これに対して、本実施例では、分岐先アドレスは条件分岐命令には含まない構成となっているので、命令長は1ワードのままで済み、処理時間は1ステップしか掛からない。従って、下記のようになる。
1×ループ回数 ・・・(9)
<実施例4>
次に本発明のさらに別の実施例を説明する。図6のプライオリティエンコーダ6bは、表2で示した優先順位とは逆であってもよい。
次に本発明のさらに別の実施例を説明する。図6のプライオリティエンコーダ6bは、表2で示した優先順位とは逆であってもよい。
本実施例によれば、条件設定命令(SETCMP)において、優先順位の指定を行うことができることから、プライオリティエンコーダ6bのロジックは、表2で示した優先順位とは逆であってもよい。表2の優先順位とは逆の場合の真理値表を以下に示す。
図4又は図5のプライオリティエンコーダ6bは、c3→c2→c1→c0の順に優先順位が低くなる(c0→c1→c2→c3の順に優先順位が高くなる)。すなわち、c3が1のとき、c2〜c0の少なくとも1つが同時に1の場合、c3を選択し、出力11bを出力する。c3が0で、c2が1の場合、c1〜c0の少なくとも1つが同時に1の場合、c2を選択し、出力10bを出力する。c3、c2が0で、c1が1の場合、c0が同時に1の場合、c1を選択し、出力01bを出力する。c3、c2、c1が0で、c0が1の場合、c0を選択し、出力00bを出力する。比較演算結果c0、c1、c2、c3のうち1つのci(iは0〜3の1つ)が1、他が0の場合、ciのiに対応する2ビットコードを出力する。プライオリティエンコーダ6bは比較演算結果が1の分岐先アドレスを選択するようにセレクタ7dでの選択を制御する。
本実施例において、優先順位の正逆2種類のプライオリティエンコーダを用意しておき、これを条件分岐命令の指定で切り替え、もしくは選択できるようにすることも可能である。この場合、正逆切り替えのための指定は1ビット分で済む。条件分岐命令のオペコードあるいはオペランドに、正逆を指定するビット(0で正順、1で逆順)を追加すればよい。
条件分岐処理は、必ず比較または演算命令の直後に、その演算結果のフラグをフラグレジスタに保持しておき、次の分岐命令でそのフラグを評価して分岐処理を実行するという、2つの命令の組み合わせで行っている。これに対して、条件設定命令によって予め分岐条件の設定を行っておくことで、条件分岐処理を行う段階では1つの条件分岐命令の処理時間しか掛からないので、より高速に分岐処理を行うことが可能である。特に、同じ条件を繰り返し実行するループ処理に適用することで、高速性が増す。
複数の分岐条件の情報と分岐先アドレスを記憶できる、条件設定記憶部および分岐先アドレス記憶部を設けており、条件設定命令によって予め優先順位付けをして、それらの情報を記憶し、条件設定記憶部から一連の分岐条件を読み出して、比較演算を行う条件比較部を設け、その出力結果を基に、成立した分岐条件に該当する分岐先アドレスを選択できる条件分岐判定部を設けており、その処理を1つの条件分岐命令で実行できる。なお、条件分岐判定部は、複数の分岐条件が同時に成立した場合でも最も優先順位の高い分岐条件に該当する分岐アドレスを選択するようにしている。
条件設定記憶部を持つことで、分岐条件を複数個記憶させておくことができるので、より複雑な条件の組み合わせや多重ループ処理に適用させることができ、高速性が増す。
また、分岐条件や分岐先アドレスの情報が多くなることによる命令長の増大に対しても、これらの情報は、予め実行しておく条件設定命令で設定しているため、条件分岐命令の命令長にはほとんど影響しない。このため、本発明を用いない場合には、命令長の増大による実行速度の低下が起こる場合でも、本発明によれば、分岐処理の際の実行ステップ数を増やすことがなく、特にループ処理の際の条件分岐命令の実行速度は低下させること無く、高速に処理できる効果がある。
以下に、上記した本実施例と上記した関連技術との作用効果の相違を対比して説明する。
特許文献1では、分岐条件判定の命令が分岐条件に必要な回数分だけ条件分岐命令を実行する直前に必要であるため、同じ分岐条件を繰り返し実行するループ処理であっても、その一連の分岐条件判定の命令の実行が必要となる。本実施例によれば、1度設定した分岐条件は再度設定変更しない限り保持されることから、条件設定命令を再度実行する必要はなく、条件分岐命令のみの実行で処理できるので、分岐処理がより高速となる。
特許文献2は、特許文献1と同様に、分岐命令の直前の演算結果を元に分岐判定しており、しかも、直前の命令1つの演算結果のみが分岐判定に与えられるだけであるため、特許文献1や、本発明に比べて、非常に単純な分岐条件にしか対応できない。ただし、条件分岐命令1つ分のステップしか必要としないので、分岐処理の速さは、本発明の第1の実施例(図1)と同じである。
なお、特許文献2の第2の実施例は、分岐先アドレスの値を大きく取りたい場合、分岐先アドレスを複数含んでいることにより、条件分岐命令の命令長が長くなり、命令メモリの2ワードに跨ることを示している。この場合、2ワード目の値を命令デコーダに読み込むステップが発生するため、一般的にその分命令の実行サイクル数が長くなる。これに対して、本発明においては、前記実施例で説明したように、分岐先アドレスは条件分岐命令には含まれないことから、前述のような問題は発生しない。なお、本発明において、分岐先アドレスの値を大きく取りたい場合、条件設定命令の命令長が長くなるだけであり、分岐処理自体が遅くなることはない。
特許文献3に記載のデジタル信号プロセッサでは、演算命令の結果(請求項には、算術演算器、論理シフタ、乗算器のいずれかを選択するとある)を比較対象として条件判定を行っており、単純な分岐条件しか設定できない。
なお、上記の特許文献1乃至4の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施例ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
1 分岐条件記憶部
2 命令デコーダ
3 命令メモリ
4 演算用レジスタ
5 分岐条件比較部
6 条件分岐判定部
7 セレクタ
8 プログラムカウンタ
51、52、53、54 条件比較部
51a、51b デコーダ
51c セレクタ
52d 比較器
6a、6d セレクタ
6c 分岐先アドレス記憶部
6b プライオリティエンコーダ
6e 論理和回路
6f カウンタ
6g 制御回路
101、102、103、104 条件記憶部
100、200、300、400 条件記憶部
105 セレクタ
401 演算器
402 条件判別回路
403〜406 条件成否レジスタ
407 プライオリタイザ
408〜411 分岐先アドレスレジスタ
412 セレクタ
413 プログラムカウンタ
422 演算結果
424 条件成否レジスタ選択信号
427 分岐先アドレス選択信号
429 条件成否情報
431 分岐条件
500 セレクタ
r101a、101b、r101c、r101d、r101e レジスタ
r102a、102b、r102c、r102d、r102e レジスタ
r103a、103b、r103c、r103d、r103e レジスタ
r104a、104b、r104c、r104d、r104e レジスタ
2 命令デコーダ
3 命令メモリ
4 演算用レジスタ
5 分岐条件比較部
6 条件分岐判定部
7 セレクタ
8 プログラムカウンタ
51、52、53、54 条件比較部
51a、51b デコーダ
51c セレクタ
52d 比較器
6a、6d セレクタ
6c 分岐先アドレス記憶部
6b プライオリティエンコーダ
6e 論理和回路
6f カウンタ
6g 制御回路
101、102、103、104 条件記憶部
100、200、300、400 条件記憶部
105 セレクタ
401 演算器
402 条件判別回路
403〜406 条件成否レジスタ
407 プライオリタイザ
408〜411 分岐先アドレスレジスタ
412 セレクタ
413 プログラムカウンタ
422 演算結果
424 条件成否レジスタ選択信号
427 分岐先アドレス選択信号
429 条件成否情報
431 分岐条件
500 セレクタ
r101a、101b、r101c、r101d、r101e レジスタ
r102a、102b、r102c、r102d、r102e レジスタ
r103a、103b、r103c、r103d、r103e レジスタ
r104a、104b、r104c、r104d、r104e レジスタ
Claims (25)
- 分岐条件と前記分岐条件の優先順位とを指定する条件設定命令を命令セットに含み、
前記条件設定命令で設定される分岐条件を記憶する記憶域を複数有する分岐条件記憶部を備え、
前記分岐条件記憶部は、命令デコーダでデコードされた命令が前記条件設定命令である場合、前記条件設定命令で指定された分岐条件を前記優先順位に対応した記憶域に記憶する、ことを特徴とするプロセッサ装置。 - 分岐条件が成立時に分岐する分岐先アドレスを複数の記憶可能な分岐先アドレス記憶部を備え、
前記条件設定命令では、前記分岐条件と前記分岐条件の優先順位の指定に加え、前記条件設定命令で指定した分岐条件が成立した時の分岐先アドレスが指定され、
前記命令デコーダでデコードされた命令が前記条件設定命令である場合、
前記分岐先アドレス記憶部には、前記条件設定命令で指定された分岐先アドレスが、前記条件設定命令で指定された優先順位に関連付けて記憶される、ことを特徴とする請求項1記載のプロセッサ装置。 - 分岐条件を判定し分岐条件成立時に分岐先アドレスへ分岐する条件分岐命令を前記命令セットに備え、
1つ又は複数の前記条件設定命令が実行され、前記分岐条件記憶部に分岐条件が設定され、且つ、前記分岐先アドレス記憶部に分岐先アドレスが記憶された状態において、前記条件分岐命令の実行時、前記分岐条件記憶部に記憶されている1つ又は複数の分岐条件について、それぞれ個別に判定を行う、1つ又は複数の条件比較部を有する分岐条件比較部と、
複数の前記条件比較部での比較演算結果のうち、同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従って、前記分岐条件記憶部の所定の記憶域に記憶されている分岐条件に該当する分岐先アドレスを、前記分岐先アドレス記憶部から選択する条件分岐判定部と、
を備え、
前記条件分岐判定部で選択した前記分岐先アドレスに分岐する、ことを特徴とする請求項1又は2記載のプロセッサ装置。 - 前記条件判定部は、同時に成立している複数の分岐条件のうち、前記分岐条件記憶部の最も優先順位の高い記憶域に記憶されている分岐条件に該当する分岐先アドレスを前記分岐先アドレス記憶部から選択し、前記分岐アドレスに分岐する、ことを特徴とする請求項3記載のプロセッサ装置。
- 前記条件判定部は、1つの分岐条件が成立している場合には、前記分岐条件に該当する分岐先アドレスを前記分岐先アドレス記憶部から選択し、前記分岐アドレスに分岐する、ことを特徴とする請求項3又は4記載のプロセッサ装置。
- 前記条件判定部は、分岐条件が1つも成立していない場合には、分岐条件不成立の情報を出力し、分岐は行わず、プログラムカウンタを1増加させる、ことを特徴とする請求項3又は4記載のプロセッサ装置。
- 前記分岐条件記憶部のそれぞれの記憶域に記憶される分岐条件は、
比較対象の2つの演算用レジスタの第1及び第2のレジスタアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、
を含む、ことを特徴とする請求項1乃至6のいずれか一に記載のプロセッサ装置。 - 前記条件設定命令は、オペランドに、
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報と、
比較演算の種別と、
比較演算対象の演算用レジスタの第1のレジスタアドレスと、前記演算用レジスタの第2のレジスタアドレス又は即値データと、
分岐先アドレスと、
を含む、ことを特徴とする請求項1乃至7のいずれか一に記載のプロセッサ装置。 - 前記分岐条件記憶部が、前記複数の記憶域として複数の条件記憶部を有し、
前記命令デコーダでデコードされた前記条件設定命令による分岐条件の優先順位情報に基づき、前記条件設定命令の分岐条件を格納する条件記憶部を選択するセレクタをさらに備えている、ことを特徴とする請求項1乃至8のいずれか一に記載のプロセッサ装置。 - 前記分岐条件記憶部を複数備え、前記複数の分岐条件記憶部のうちの1つを選択する別のセレクタをさらに備えている、ことを特徴とする請求項1乃至9のいずれか一に記載のプロセッサ装置。
- 前記条件設定命令は、オペランドに、
前記複数の分岐条件記憶部のうち1つを指定する情報、
優先順位情報として機能し前記分岐条件記憶部における分岐条件の記憶域の指定する情報、
比較演算の種別と、
比較演算対象の演算用レジスタの第1のレジスタアドレスと、前記演算用レジスタの第2のレジスタアドレス又は即値データ、
分岐先アドレスを含む、ことを特徴とする請求項10記載のプロセッサ装置。 - 前記条件分岐命令は、オペランドに、前記複数の分岐条件記憶部のうち1つを指定する情報を含む、ことを特徴とする請求項11記載のプロセッサ装置。
- 前記条件分岐命令は、オペランドに、前記複数の条件記憶部での比較演算結果をマスクするか否かを指定するマスクビットを有する、ことを特徴とする請求項3乃至6のいずれか一に記載のプロセッサ装置。
- 前記分岐条件記憶部は、比較対象の2つの演算用レジスタの第1及び第2のレジスタアドレスと、
即値データと、
演算用レジスタのデータ間の比較演算、又は、演算用レジスタのデータと即値データと比較演算の種別を格納するフラグと、
比較器の演算の種別と、
からなる条件を1セットとして記憶する条件記憶部を複数備え、
前記複数の条件記憶部は、複数の分岐条件を記憶する前記複数の記憶域をなし、
前記複数の条件記憶部を選択するセレクタを備えている、ことを特徴とする請求項1乃至13のいずれか一に記載のプロセッサ装置。 - 前記分岐条件比較部は、
それぞれが、対応する前記条件記憶部に記憶された前記第1及び第2のアドレスをデコードし、前記演算用レジスタに第1、第2のレジスタアドレスをそれぞれ出力するとともに、前記演算用レジスタから読み出されたデータをそれぞれ保持する第1及び第2のデコーダと、
前記条件記憶部に記憶された即値データと、前記第2のデコーダの値を受け、前記フラグの出力に基づき一方を選択する第3のセレクタと、
前記第3のセレクタの出力と前記第1のデコーダの出力を入力として受け、前記複合条件記憶部に記憶された演算種別に対応した演算を行う比較器と、
を含む条件比較部の組を、前記複数の条件記憶部にそれぞれ対応して備えている、ことを特徴とする請求項9又は14記載のプロセッサ装置。 - 前記分岐条件記憶部において、前記条件設定命令の実行によって記憶された分岐条件は、前記条件設定命令が実行されたあとに、別の条件設定命令が実行され、前記別の条件設定命令によって別の条件に書き換えられるまでの間、保持される、ことを特徴とする請求項1乃至15のいずれか一に記載のプロセッサ装置。
- 前記分岐先アドレス記憶部において、前記条件設定命令の実行によって記憶された分岐先アドレスは、前記条件設定命令が実行されたあとに、別の条件設定命令が実行され、前記別の条件設定命令によって別の分岐先アドレスに書き換えられるまでの間、保持される、ことを特徴とする請求項1乃至16のいずれか一に記載のプロセッサ装置。
- 前記条件分岐判定部は、
前記命令デコーダでデコードされた前記条件設定命令で指定された優先順位から、前記分岐先アドレス記憶部の該当する記憶域に、前記条件設定命令で指定された分岐先アドレスを格納する第2のセレクタと、
複数の前記条件比較部からの比較演算結果を受け、複数の比較演算結果が分岐条件成立を示す場合、予め定められた優先方式にしたがって1つの分岐先アドレスを選択する信号を出力し、分岐条件成立が1つの場合、該分岐条件に対応する分岐先アドレスを選択する信号を出力するプライオリティエンコーダと、
前記分岐先アドレス記憶部に記憶された複数の分岐先アドレスのうちプライオリティエンコーダで選択された分岐先アドレスを選択する第3のセレクタと、
複数の前記条件比較部からの比較演算結果が全て分岐条件不成立の場合、第1の値を出力し、複数の前記条件比較部からの比較演算結果のその他の組み合わせに対して第2の値を出力する論理回路を備え、
プログラムカウンタの出力と、前記第3のセレクタの出力を受け、前記論理回路の出力が第1の値、第2の値であるかによって前記プログラムカウンタの出力、前記第3のセレクタの出力をプログラムカウンタに設定する第4のセレクタを備えている、ことを特徴とする請求項3記載のプロセッサ装置。 - 前記プライオリティエンコーダには、前記条件分岐命令で指定されたマスクビットと複数の前記条件比較部からの比較演算結果との論理演算結果が供給される、ことを特徴とする請求項18記載のプロセッサ装置。
- 前記条件分岐判定部は、
前記命令デコーダでデコードされた前記条件設定命令の分岐条件の記憶域の指定情報、分岐先アドレスから分岐先アドレス記憶部の該当する記憶域に分岐先アドレスを格納する第2のセレクタと、
出力カウント値によって、前記分岐先アドレス記憶部内の分岐先アドレス、および前記分岐条件記憶部内の分岐条件を選択するカウンタを備え、
前記カウンタのカウント出力で選択された分岐条件の条件比較を実行し、
前記分岐先アドレス記憶部に記憶された複数の分岐先アドレスのうち前記カウンタで選択された分岐先アドレスを選択する第3のセレクタと、
を備え、
プログラムカウンタの出力と、前記第3のセレクタの出力を受け、前記条件比較部の出力が分岐条件不成立、成立であるかによって前記プログラムカウンタの出力、前記第3のセレクタの出力をプログラムカウンタに設定する第4のセレクタを備えている、ことを特徴とする請求項3記載のプロセッサ装置。 - 前記分岐条件比較部は、1つ又は複数の前記条件設定命令が実行され、前記分岐条件記憶部に分岐条件が設定され、且つ、前記分岐先アドレス記憶部に分岐先アドレスが記憶された状態において、前記条件分岐命令の実行時、前記分岐条件記憶部に記憶されている1つ又は複数の分岐条件について、それぞれ、個別に判定を行う1つの条件比較部を有し、
前記カウンタは、前記命令デコーダで条件分岐命令が解析された場合に、前記命令デコーダからリセット信号を受け取り、最高優先順位の番号にリセットされ、
前記カウンタのカウント値に該当する優先順位の分岐条件を、前記分岐条件記憶部から読み出して、前記条件比較部へ格納し、
優先順位の高い分岐条件から順番に条件分岐判定を行っていき、分岐条件が成立したとき、その時点で選択されている分岐先アドレスに分岐する、ことを特徴とする請求項3記載のプロセッサ装置。 - 分岐条件と前記分岐条件成立時の分岐先アドレスとを、指定した優先順位に対応させて設定する条件設定命令と、
前記条件設定命令によって設定済みの1つ又は複数の分岐条件の条件成立の有無を判定し、分岐条件成立時に分岐先アドレスへ分岐する条件分岐命令と、
を命令セットに含み、
1つ又は複数の前記条件設定命令でそれぞれ指定される1つ又は複数の分岐条件を、前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐条件記憶部と、
1つ又は複数の前記条件設定命令で指定される1又は複数の分岐先アドレスを前記条件設定命令の優先順位に対応させてそれぞれ記憶する分岐先アドレス記憶部と、
を備え、
1つ又は複数の前記条件設定命令の実行により、前記分岐条件記憶部に1つ又は複数の分岐条件が設定され、且つ、前記分岐先アドレス記憶部に1つ又は複数の分岐先アドレスが記憶された状態のもとで、1つ又は複数の前記条件設定命令の実行後、前記条件分岐命令の実行の間に、1つ又は複数の他の命令の実行が可能とされ、
前記条件分岐命令の実行時に、前記分岐条件記憶部に既に記憶されている1つ又は複数の分岐条件について、それぞれ、個別に判定を行い、同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従って、前記分岐条件記憶部の所定の記憶域に記憶されている分岐条件に該当する分岐先アドレスを、前記分岐先アドレス記憶部から選択する手段を備えている、ことを特徴とするプロセッサ装置。 - 命令デコードされた命令が条件設定命令である場合、前記条件設定命令で指定された分岐条件を、複数の分岐条件を記憶する分岐条件記憶部のうち、前記条件設定命令で指定された優先順位に対応する記憶域に記憶する、ことを特徴とするプロセッサの条件分岐処理方法。
- 前記条件設定命令では、前記分岐条件と前記分岐条件の優先順位に加え、前記条件設定命令で指定された分岐条件が成立した時の分岐先アドレスが指定され、
前記命令デコードされた命令が条件設定命令である場合、前記条件設定命令で指定された分岐先アドレスを、前記分岐条件の優先順位に対応付けて記憶する、ことを特徴とする請求項23記載のプロセッサの条件分岐処理方法。 - 1つ又は複数の前記条件設定命令が実行され、分岐条件と分岐先アドレスが記憶されたのち、
条件分岐命令の実行時、記憶されている複数の分岐条件についてそれぞれ個別に判定を行い、
同時に分岐条件が成立しているものが複数ある場合、予め定められた優先方式に従い選択された分岐条件に該当する分岐先アドレスに分岐する、ことを特徴とする請求項23又は24記載のプロセッサの条件分岐処理方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008002344A JP2009163624A (ja) | 2008-01-09 | 2008-01-09 | プロセッサ装置及び条件分岐処理方法 |
TW098100031A TW200937283A (en) | 2008-01-09 | 2009-01-05 | Processor apparatus and conditional branch processing method |
US12/318,726 US20090177874A1 (en) | 2008-01-09 | 2009-01-07 | Processor apparatus and conditional branch processing method |
CNA2009100026161A CN101482812A (zh) | 2008-01-09 | 2009-01-09 | 处理器装置及条件分支处理方法 |
KR1020090001785A KR20090076848A (ko) | 2008-01-09 | 2009-01-09 | 프로세서 장치 및 조건 분기 처리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008002344A JP2009163624A (ja) | 2008-01-09 | 2008-01-09 | プロセッサ装置及び条件分岐処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009163624A true JP2009163624A (ja) | 2009-07-23 |
Family
ID=40845526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008002344A Withdrawn JP2009163624A (ja) | 2008-01-09 | 2008-01-09 | プロセッサ装置及び条件分岐処理方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20090177874A1 (ja) |
JP (1) | JP2009163624A (ja) |
KR (1) | KR20090076848A (ja) |
CN (1) | CN101482812A (ja) |
TW (1) | TW200937283A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7421850B1 (ja) | 2022-10-21 | 2024-01-25 | たけおかラボ株式会社 | 間接アドレス指定方式の条件ジャンプ命令を実行するプロセッサ、プログラム及び方法 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008305185A (ja) * | 2007-06-07 | 2008-12-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
US8429635B2 (en) * | 2009-10-28 | 2013-04-23 | International Buisness Machines Corporation | Controlling compiler optimizations |
CN102117198B (zh) * | 2009-12-31 | 2015-07-15 | 上海芯豪微电子有限公司 | 一种分支处理方法 |
GB2484654B (en) | 2010-10-12 | 2013-10-09 | Advanced Risc Mach Ltd | Conditional selection of data elements |
US9652242B2 (en) * | 2012-05-02 | 2017-05-16 | Apple Inc. | Apparatus for predicate calculation in processor instruction set |
US9411589B2 (en) * | 2012-12-11 | 2016-08-09 | International Business Machines Corporation | Branch-free condition evaluation |
US9747331B2 (en) * | 2014-10-06 | 2017-08-29 | International Business Machines Corporation | Limiting scans of loosely ordered and/or grouped relations in a database |
US10713048B2 (en) | 2017-01-19 | 2020-07-14 | International Business Machines Corporation | Conditional branch to an indirectly specified location |
CN111258643B (zh) * | 2018-11-30 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
TWI709046B (zh) * | 2019-09-09 | 2020-11-01 | 英業達股份有限公司 | 多地址響應的複雜可程式邏輯裝置及運作方法 |
JP7410085B2 (ja) * | 2021-06-11 | 2024-01-09 | 矢崎総業株式会社 | 通信システム及び上位制御装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1311063C (en) * | 1988-12-16 | 1992-12-01 | Tokumichi Murakami | Digital signal processor |
US5664135A (en) * | 1994-09-28 | 1997-09-02 | Hewlett-Packard Company | Apparatus and method for reducing delays due to branches |
US6260138B1 (en) * | 1998-07-17 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for branch instruction processing in a processor |
JP3629551B2 (ja) * | 2000-01-06 | 2005-03-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 基本キャッシュ・ブロックを利用したマイクロプロセッサ |
JP2004118669A (ja) * | 2002-09-27 | 2004-04-15 | Sony Corp | 制御装置及び制御方法並びに制御ソフトウェア |
-
2008
- 2008-01-09 JP JP2008002344A patent/JP2009163624A/ja not_active Withdrawn
-
2009
- 2009-01-05 TW TW098100031A patent/TW200937283A/zh unknown
- 2009-01-07 US US12/318,726 patent/US20090177874A1/en not_active Abandoned
- 2009-01-09 KR KR1020090001785A patent/KR20090076848A/ko not_active Application Discontinuation
- 2009-01-09 CN CNA2009100026161A patent/CN101482812A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7421850B1 (ja) | 2022-10-21 | 2024-01-25 | たけおかラボ株式会社 | 間接アドレス指定方式の条件ジャンプ命令を実行するプロセッサ、プログラム及び方法 |
WO2024084809A1 (ja) * | 2022-10-21 | 2024-04-25 | たけおかラボ株式会社 | 間接アドレス指定方式の条件ジャンプ命令を実行するプロセッサ、プログラム記録媒体及び方法 |
Also Published As
Publication number | Publication date |
---|---|
US20090177874A1 (en) | 2009-07-09 |
KR20090076848A (ko) | 2009-07-13 |
CN101482812A (zh) | 2009-07-15 |
TW200937283A (en) | 2009-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009163624A (ja) | プロセッサ装置及び条件分岐処理方法 | |
EP2569694B1 (en) | Conditional compare instruction | |
KR100464406B1 (ko) | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 | |
JP2007272353A (ja) | プロセッサ装置及び複合条件処理方法 | |
US20080141229A1 (en) | Processor, program conversion apparatus, program conversion method, and computer program | |
KR100995269B1 (ko) | 프로세서 장치 및 복합 조건 처리 방법 | |
JP2009059246A (ja) | マイクロプロセッサ | |
JP3749233B2 (ja) | パイプラインでの命令実行方法及び装置 | |
US6516407B1 (en) | Information processor | |
US7010670B2 (en) | Data processing device that controls an overriding of a subsequent instruction in accordance with a conditional execution status updated by a sequencer | |
JPH04245539A (ja) | パイプラインにおける分岐命令制御方式 | |
JP2006053830A (ja) | 分岐予測装置および分岐予測方法 | |
JP2009069960A (ja) | 分岐予測装置、分岐予測方法、及びマイクロプロセッサ | |
JP4159586B2 (ja) | 情報処理装置および情報処理の高速化方法 | |
JP2006285721A (ja) | 演算処理装置および演算処理方法 | |
JPH1196001A (ja) | プログラム実行装置及びプログラム変換方法 | |
JP2005149297A (ja) | プロセッサおよびそのアセンブラ | |
JPH09223009A (ja) | データ処理装置と方法 | |
US20060015704A1 (en) | Operation apparatus and instruction code executing method | |
JP4006887B2 (ja) | コンパイラ、プロセッサおよび記録媒体 | |
JP6191457B2 (ja) | 演算処理装置、演算処理方法 | |
CN118012504A (zh) | Risc-v向量指令的流水线译码微架构设计方法 | |
JP2011170758A (ja) | プロセッサ | |
JP2005141651A (ja) | プロセッサ及びプロセッサの制御方法 | |
JP2010140398A (ja) | データ処理装置及びデータ処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100812 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20101109 |