JP2010079841A - マイクロコンピュータ及びその命令実行方法 - Google Patents

マイクロコンピュータ及びその命令実行方法 Download PDF

Info

Publication number
JP2010079841A
JP2010079841A JP2008250485A JP2008250485A JP2010079841A JP 2010079841 A JP2010079841 A JP 2010079841A JP 2008250485 A JP2008250485 A JP 2008250485A JP 2008250485 A JP2008250485 A JP 2008250485A JP 2010079841 A JP2010079841 A JP 2010079841A
Authority
JP
Japan
Prior art keywords
instruction
branch
satisfied
executed
calculation
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.)
Granted
Application number
JP2008250485A
Other languages
English (en)
Other versions
JP4383496B1 (ja
Inventor
Masahito Fuchigami
誠仁 渕上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2008250485A priority Critical patent/JP4383496B1/ja
Priority to US12/318,210 priority patent/US20100082946A1/en
Application granted granted Critical
Publication of JP4383496B1 publication Critical patent/JP4383496B1/ja
Publication of JP2010079841A publication Critical patent/JP2010079841A/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional 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)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】従来のマイクロコンピュータでは処理能力を十分に高めることできない問題があった。
【解決手段】本発明にかかるマイクロコンピュータは、第1の実行ステージにおいて実行される条件分岐命令と第2の実行ステージにおいて実行される第1の演算命令とを含む分岐複合命令と、第2の実行ステージにおいて実行される第2の演算命令を含む順次演算命令と、をデコードして演算情報を出力する命令デコーダ14と、第1の演算命令に対応した第1の演算情報を格納する演算情報格納回路15、16と、条件分岐命令に基づき、分岐条件の成立/不成立を判断して判定結果信号J1を出力する分岐条件判定回路18と、判定結果信号J1が分岐条件の成立又は不成立の一方の状態を示す場合に演算情報格納回路15、16に格納された第1の演算情報を出力するセレクタ17と、セレクタが出力した演算情報に基づき演算を行う演算器21と、を有する。
【選択図】図1

Description

本発明にかかるマイクロコンピュータ及びその命令実行方法は、特にパイプライン処理により演算を実行するマイクロコンピュータ及びその命令実行方法に関する。
マイクロコンピュータでは、演算速度を向上させるためにパイプライン処理と呼ばれる情報処理方法が採用される。パイプライン処理では、複数の演算系列に対して演算命令を順次投入し、演算器における命令実行期間に空白が発生しないように演算処理を行う。そのために、パイプライン処理では後続の演算命令を予測して投機的に演算命令をフェッチする。しかしながら、演算器における処理には条件分岐命令等の処理が完了しなければ次に実行する命令が定まらない処理がある。この条件分岐命令が発生した場合、分岐先を予測して後続の演算命令をフェッチすることが行われるが、予測が外れた場合は投機的にフェッチした演算命令を廃棄しなければならない。このような演算命令の廃棄が発生すると実行期間に空白(この空白期間を分岐ペナルティと称す)が生じ演算性能が低下する。
そこで、条件分岐命令が発生した場合における分岐ペナルティを低減するパイプライン計算機の命令方式が特許文献1に開示されている。特許文献1には、分岐命令の後に無演算命令NOPと演算命令と分岐先命令がある場合、分岐命令と無演算命令と演算命令を分岐条件が成立しないという条件付きの演算命令に代える、という技術が開示されている。図8(a)(b)は最も単純な一例である。図8(a)は、パイプライン計算機において採用される命令の元となる命令群である。そして、図8(b)は、パイプライン計算機において採用される命令群である。
図8(a)に示すように、この例では、命令1として比較命令cmpを実行する。続いて命令2として分岐命令jgを実行する。この分岐命令は、比較命令cmpにおいてr1が0を超える場合にL1のフェッチアドレスにジャンプするものである。そして、分岐条件が成立しなければ、命令3として何らの演算を行わない無演算命令nopが実行される。続いて、命令4として加算命令addが実行される。一方、条件分岐命令jgにおいて分岐命令が成立した場合、命令1aとして減算命令subが実行される。
このような命令群を実行する場合、パイプライン計算機では、条件命令の後に無演算命令と演算命令と分岐先演算命令がある場合に、条件命令、無演算命令及び演算命令に代えて、分岐条件が不成立のときに演算命令を実行するという条件の付いた演算命令を実行する。この命令群を図8(b)に示す。
図8(b)に示すようにパイプライン計算機において採用される演算命令には、命令2として分岐条件が不成立であった場合に図8(a)の命令4の演算を指示する条件付演算命令add.leを有する。この演算命令add.leを採用することで、分岐条件が成立したときは条件付演算命令add.leは実行されず、その先にある分岐先演算命令である減算命令subが実行される。一方、分岐条件が不成立であった場合は条件付演算命令add.leが実行され、その後分岐先演算命令である減算命令subが実行される。
このような条件付演算命令を備えることで、パイプライン計算機では、分岐命令が不成立であった場合に発生する分岐ペナルティのサイクル数を削減することができる。例えば、図8(a)に示す場合、分岐命令が不成立であった場合に無演算命令nopを実行する必要があったが、パイプライン計算機ではこの無演算命令nopを実行する必要がない。
図8(a)、(b)は最も単純な例で、分岐条件の成立/不成立に依存する命令が、加算命令addしかないものである。減算命令subは、条件の成立/不成立に関係なく、常に実行される命令である。このような分岐条件の成立/不成立に依存する命令が1つしかないような単純な例であれば、図8(b)とすることで分岐ペナルティのサイクル数は削減が可能である。
また、図9(a)、(b)に、特許文献1において開示されている別の例を示す。図9(b)は、特許文献1が開示している技術により、図9(a)の命令群から作成された命令群である。そのため、図9(a)と図9(b)との関係の基本的な考え方は図8と同様であるため詳細説明は省略する。図9に示す例では、図8に示す例と異なり、分岐条件の成立/不成立に依存する命令が複数ある。具体的には、命令3の条件付き加算命令add.g命令と命令4の減算命令subは、命令2の分岐命令jleの条件が不成立の場合に実行される命令である。また、命令1aの減算命令subと命令2aの加算命令addは、命令2の分岐命令jleの条件が成立した場合に実行される命令である。図9(b)においては、図9(a)と比較して、条件が不成立の場合に無演算命令nop分のサイクル数の削減が可能となる。
特開平6−161749号公報
しかしながら、特許文献1に記載の技術では、条件の成立に依存する命令、不成立に依存する命令が存在する場合は、分岐ペナルティのサイクル数を十分に削減できない場合がある。このような場合を図9(b)の例を用いて説明する。
まず、図9(b)の命令群を、フェッチ/デコード/実行の各ステージを持つ一般的なパイプラインで処理する場合について説明する。命令1の比較命令cmp、命令2の分岐命令jle、命令3の条件付き加算命令add.g、命令4の減算命令subは、この順番で、それぞれフェッチ/デコード/実行が行われる。一方、命令2の分岐命令jleの実行ステージでは、命令3の条件付き加算命令add.gのデコード及び命令4の減算命令subのフェッチが行われることになる。このパイプライン処理において、命令2の分岐命令jleの実行ステージで、条件が成立しない結果となった場合、デコード中の条件付き加算命令add.g及びフェッチ中の減算命令subはそれぞれそのまま実行が継続される。この場合は、図9(a)の無演算命令nop分のサイクル数が削減できる。しかし、命令2の分岐命令jleの実行ステージで、条件が成立する結果となった場合、デコード中の条件付き加算命令add.g及びフェッチ中の減算命令subの処理は廃棄し、新たに命令1aの減算命令subのフェッチ処理を開始しなければならない。すなわち、命令3の条件付き加算命令add.gのデコード及び命令4の減算命令subのフェッチ処理にかかる2サイクルの分岐ペナルティが生じることになる。
本発明にかかるマイクロコンピュータの一態様は、パイプライン処理により演算を実行するマイクロコンピュータであって、第1の実行ステージにおいて実行される条件分岐命令と第2の実行ステージにおいて実行される第1の演算命令とを含む分岐複合命令と、前記第2の実行ステージにおいて実行される第2の演算命令を含む順次演算命令と、をフェッチした順にデコードし、デコードした命令に応じた演算情報を出力する命令デコーダと、前記分岐複合命令のデコードにより得られる演算情報のうち前記第1の演算命令に対応した第1の演算情報を格納する演算情報格納回路と、前記分岐複合命令のデコードにより得られる演算情報のうち前記条件分岐命令に対応した条件分岐演算情報に基づき、分岐条件の成立/不成立を判断し、判定結果信号を出力する分岐条件判定回路と、 前記判定結果信号が分岐条件の成立又は不成立の一方の状態を示す場合に前記演算情報格納回路に格納された前記第1の演算情報を出力し、前記判定結果信号が分岐条件の成立又は不成立の他方の状態を示す場合に前記第2の演算命令に対応した第2の演算情報を出力するセレクタと、前記セレクタが出力した演算情報に基づき演算を行い、演算結果信号を出力する演算器と、を有するものである。
また、本発明にかかるマイクロコンピュータにおける命令実行方法の一態様は、パイプライン処理により演算を実行するマイクロコンピュータにおける命令実行方法であって、第1の実行ステージにおいて実行される条件分岐命令と第2の実行ステージにおいて実行される第1の演算命令とを含む分岐複合命令をデコードして前記条件分岐命令に応じた条件分岐演算情報と前記第1の演算命令に応じた第1の演算情報とを生成し、前記第1の演算情報を演算情報格納回路に格納し、前記条件分岐演算情報に基づき分岐条件の成立/不成立を判断すると共に、前記第2の実行ステージにおいて実行される第2の演算命令を含む順次演算命令をデコードして前記第2の演算命令に応じた第2の演算情報とを生成し、前記分岐条件が成立又は不成立の一方の状態となった場合は前記演算情報格納回路に格納された前記第1の演算情報に基づき演算を行い、前記分岐条件の成立又は不成立の他方の状態となった場合は前記第2の演算情報に基づき演算を行うものである。
本発明にかかるマイクロコンピュータ及びその命令実行方法によれば、条件分岐命令の実行により分岐条件の成立/不成立が判明した時点において、分岐条件が成立した場合に実行される第1の演算命令と分岐条件が不成立であった場合に実行される第2の演算命令とが共にデコードされた状態となる。そして、本発明にかかるマイクロコンピュータ及びその命令実行方法では、分岐条件の成立/不成立に応じて第1の演算命令と第2の演算命令とのいずれか一方を選択的に実行する。これにより、本発明にかかるマイクロコンピュータ及びその命令実行方法では、分岐条件の成立/不成立にかかわらず分岐ペナルティを発生させることはない。
本発明にかかるマイクロコンピュータ及びその命令実行方法によれば、条件の成立に依存する命令又は不成立に依存する命令が存在する場合に、分岐ペナルティを削減することが可能となる。
実施の形態1
以下、図面を参照して本発明の実施の形態について説明する。図1に本実施の形態にかかるマイクロコンピュータ1のブロック図を示す。なお、以下の説明では、マイクロコンピュータ1は、第1の実行ステージにおいて実行される条件分岐命令と第2の実行ステージにおいて実行される第1の演算命令とを含む分岐複合命令と、第2の実行ステージにおいて実行される第2の演算命令を含む順次演算命令とを順次フェッチし、条件分岐命令の成立/不成立に応じて前記第2の実行ステージにおいて実行する命令を切り替えるものとする。また、第2の実行ステージにおいて実行される演算命令は一つに限られないものとする。
図1に示すようにマイクロコンピュータ1は、命令フェッチアドレスレジスタ10、セレクタ11、17、加算器12、命令格納部13、命令デコーダ14、演算情報保持回路15、16、分岐条件判定回路18、入力制御回路19、プログラムカウンタ20、演算器21、演算結果保持回路22を有する。
命令フェッチアドレスレジスタ10は、予め決められた順序で第1のフェッチアドレスFA1を出力する。セレクタ11は、判定結果信号J1の値に基づき第1のフェッチアドレスFA1と分岐先フェッチアドレスFA3とのいずれか一方を選択して、選択したアドレスを実行フェッチアドレスFA4として出力する。加算器12は、実行フェッチアドレスFA4のアドレス値に1を加算して、その値を命令フェッチアドレスレジスタ10に与える。なお、命令フェッチアドレスレジスタ10が出力する第1のフェッチアドレスは、加算器12から与えられたアドレス値に基づき決められるものである。
命令格納部13は、実行フェッチアドレスFA4の値に関連付けて分岐複合命令及び順次演算命令を格納する。そして、命令格納部13は、入力される実行フェッチアドレスFA4の値に関連付けられた命令を命令デコーダ14に出力する。命令デコーダ14は、分岐複合命令と順次演算命令とをフェッチした順にデコードし、デコードした命令に応じた演算情報を出力する。より具体的には、命令デコーダ14は、分岐複合命令をデコードすることで、条件分岐命令に対応した条件分岐演算情報及び第1の演算命令に対応した第1の演算情報を出力する。また、命令デコーダ14は、順次実行命令をデコードすることで、第2の演算命令に対応した第2の演算情報を出力する。ここで、本実施の形態では、第1の演算命令は、条件分岐命令に基づく分岐条件が成立した場合に実行される演算命令であるものとする。また、本実施の形態では、第1の演算情報には2つの演算情報が含まれるものとする。例えば、第1の演算情報には、第2の実行ステージの前半で実行される前期演算情報と第2の実行ステージの後半で実行される後期演算情報とを含むものとする。
演算情報保持回路15、16は、分岐複合命令をデコードすることで得られる第1の演算情報を格納する。より具体的には、演算情報保持回路15は、第1の演算情報のうち前期演算情報を格納し、演算情報保持回路16は、第1の演算情報のうち後期演算情報を格納する。なお、演算情報保持回路の数は、第1の演算情報に含まれる演算情報の数に応じて増減させることが可能である。
セレクタ17は、第1の入力端子a、第2の入力端子b、cを有する。第1の入力端子aには、命令デコーダ14の出力が接続される。第2の入力端子bには、演算情報保持回路15の出力が接続される。第2の入力端子cには演算情報保持回路16の出力が接続される。そして、セレクタ17は、3つの入力端子に入力される演算情報をセレクタ制御信号J2に応じて一つ選択して、選択した演算情報を出力する。なお、本実施の形態ではセレクタ制御信号J2は、後述する入力制御回路19により出力される。
分岐条件判定回路18は、命令デコーダ14においてデコードされた条件分岐演算情報が入力されたことに応じて、条件分岐演算情報に対する処理が行われる以前に算出された演算結果を参照し、分岐条件が成立したか否かを判定する。そして、その判定結果は、条件分岐の成立/不成立を示す判定結果信号J1として出力される。入力制御回路19は、命令デコーダ14においてデコードされた条件分岐演算情報が入力されたことに応じて、判定結果信号J1を参照する。そして、判定結果信号J1が条件分岐の成立を示す場合に、セレクタ制御信号J2を出力する。より具体的には、セレクタ制御信号J2は、所定のタイミングでセレクタ17が選択する入力端子を切り替えるための制御信号である。つまり、セレクタ制御信号J2に応じてセレクタ17が動作することで、セレクタ17は、判定結果信号J1が分岐条件の成立を示す場合、所定のタイミングで選択すべき入力端子を切り替える。
プログラムカウンタ20は、命令フェッチアドレスレジスタ10から出力される第1のフェッチアドレスFA1を遅延させて第2のフェッチアドレスFA2として出力する。本実施の形態では、第1のフェッチアドレスFA1が出力されてから、第1のフェッチアドレスに対応する命令が演算器21で処理されるまでに2処理ステージの間隔がある。そのため、本実施の形態では、プログラムカウンタ20は、2処理ステージ分の遅延期間を経て第1のフェッチアドレスFA1を第2のフェッチアドレスFA2として出力する。
演算器21は、セレクタ17を介して入力される演算情報に基づき演算命令を実行する。より具体的には、演算器21は、入力される演算情報が条件分岐演算情報である場合、分岐先のフェッチアドレスを第2のフェッチアドレスに基づき演算して分岐先フェッチアドレスFA3を出力する。一方、演算器21は、入力される演算情報が第1の演算命令又は第2の演算命令に応じたものである場合、加算等の演算結果を出力する。
演算結果保持回路22は、演算器21において演算された演算結果を保持し、保持している演算結果を分岐条件判定回路18に対して出力する。なお、演算結果保持回路22において保持されている演算結果は、演算器21において演算が行われる度に更新されるものとする。
次に、本実施の形態において採用する分岐複合命令及び順次演算命令について詳細に説明する。本実施の形態において採用する命令群を説明するための図を図2に示す。図2(a)は、本実施の形態において行う処理を記載した標準的な命令の一例を示すものである。図2(b)は、本実施の形態において採用する命令の一例を示すものである。
図2(a)に示すように、本実施の形態では、まず命令1よりも前に実行された演算結果に基づき条件分岐命令jleが実行される。このとき分岐条件が満たされれば、L1にジャンプしてL1よりも後のフェッチアドレスに関連付けられた順次演算命令LAA〜LDDを実行する。一方、分岐条件が満たされない場合、条件分岐命令jleに続くフェッチアドレスに関連付けられた順次演算命令AA〜DDを実行する。
このような演算処理に対して、本実施の形態では、分岐複合命令Xjleを用いる。分岐複合命令Xjleは、第1の実行ステージにおいて実行される条件分岐命令jleと、条件分岐の成立後に第1の実行ステージに続く第2の実行ステージにおいて実行される順次演算命令LAA、LBBを含む命令である。ここで、順次演算命令とは、フェッチアドレスが後に実行される命令と連続した命令であって、演算器21において行う演算を単純に定義した命令である。
図2(b)に示すように、分岐複合命令Xjleを用いることで、分岐先のL1には順次演算命令LCC、LDDが定義される。そして、本実施の形態にかかるマイクロコンピュータ1では、分岐複合命令Xjleに含まれる条件分岐命令jleを実行し、分岐条件が成立した場合は、L1にジャンプし順次演算命令LCC及びLDDをフェッチする。一方、分岐複合命令Xjleに含まれる条件分岐命令jleを実行し、分岐条件が不成立であった場合は、順次演算命令AA〜DDをフェッチする。
次に、図2(b)に示す命令群をマイクロコンピュータ1において実行した場合の命令実行シーケンスを図3に示す。図3に示すように、各命令は、フェッチステージIFにおいてフェッチされ、デコードステージIDでデコードされ、実行ステージEXで実行される。また、マイクロコンピュータ1では、1処理ステージに一つの命令をフェッチするものとする。
まず、分岐複合命令Xjleは、条件分岐命令jleと分岐条件の成立後に実行される第1の演算命令(例えば、命令LAA、LBB)を含む。命令LAA、LBBは、順次演算命令である。そのため、フェッチステージIF及びデコードステージIDを経ることで、分岐複合命令Xjleから条件分岐命令jleに対応した条件分岐演算情報と、命令LAA、LBBに対応した2つの第1の演算情報とが生成される。条件分岐演算情報は第1の実行ステージで実行されるもので、2つの第1の演算情報は、分岐条件が成立した場合に第2の実行ステージで実行される。また、命令LAAに対応した第1の演算情報は演算情報保持回路15に格納され、命令LBBに対応した第1の演算情報は演算情報保持回路16に格納される。
命令AAは、分岐複合命令Xjleよりも1処理ステージ遅れてフェッチされる。命令AAは、第2の演算命令であって、順次演算命令である。命令AAは、フェッチステージIF及びデコードステージIDを経ることで、分岐条件が不成立であった場合に第2の実行ステージのうち前半部分で実行される第2の演算情報となる。命令BBは、命令AAよりも1処理ステージ遅れてフェッチされる。命令BBは、第2の演算命令であって、順次演算命令である。命令BBは、フェッチステージIF及びデコードステージIDを経ることで、分岐条件が不成立であった場合に第2の実行ステージのうち後半部分で実行される第2の演算情報となる。
命令BBよりも1処理ステージ遅れてフェッチされる命令は、分岐条件が成立したか否かによって異なる。具体的には、分岐条件が不成立であった場合には、命令BBに続く命令CCがフェッチされる。一方、分岐条件が成立した場合には、命令LBBに続く命令LCCがフェッチされる。命令CC及び命令LCCは、順次演算命令である。命令CC及び命令LCCは、フェッチステージIF及びデコードステージIDを経ることで、第3の実行ステージで実行される演算情報となる。
マイクロコンピュータ1では、このような動作を行うことにより、分岐判断が行われる第1の実行ステージの完了後に、分岐条件が成立した場合に実行すべき命令と不成立であった場合に実行すべき命令とがデコードされた状態となる。そして、マイクロコンピュータ1は、分岐判断に従ってデコード済みの2つの命令のいずれを用いるかを選択する。
この選択動作を行った場合には、選択されなかった命令は廃棄される。そこで、図4に分岐条件が成立した場合の命令群を示し、図5に分岐条件が不成立であった場合の命令群を示す。図4に示すように、分岐条件が成立した場合、第2の実行ステージで命令AA及び命令BBが廃棄される。また、分岐条件が成立した場合、分岐先の命令LCCがフェッチされる。また、図5に示すように、分岐条件が不成立であった場合、第2の実行ステージで命令LAA及び命令LBBに対応する第1の演算情報が廃棄される。また、分岐条件が不成立であった場合、命令BBに続く命令CCがフェッチされる。
次に、マイクロコンピュータ1における命令実行手順を示すフローチャートを図6に示す。そして、この図6を参照してマイクロコンピュータ1の動作を説明する。図6に示すように、マイクロコンピュータ1は、ステップS1において分岐複合命令Xjleをフェッチする。続いてステップS1でフェッチした分岐複合命令Xjleを命令デコーダ14でデコードすると共に分岐複合命令Xjleに続く命令AAをフェッチする(ステップS2)。このステップS2のデコード処理では、分岐複合命令Xjleから条件分岐演算情報、命令LAAに対応した第1の演算情報及び命令LBBに対応した第1の演算情報が得られる。そして、命令LAAに対応した第1の演算情報は演算情報保持回路15に格納され、命令LBBに対応した第1の演算情報は演算情報保持回路16に格納される。また、このステップS1、S2では、セレクタ17は第1の入力端子aを選択した状態である。
そして、ステップS3では、ステップS2でフェッチした命令AAを命令デコーダ14でデコードすると共に命令AAに続く命令BBをフェッチする。さらにステップS3では、ステップS2におけるデコード処理で得られた条件分岐演算情報が分岐条件判定回路18及び入力制御回路19に入力される。これにより分岐条件判定回路18は、演算結果保持回路22を参照して、すでに演算された演算結果を参照して、分岐条件が成立したか否かを判定する分岐判断を実行する(EX1)。ステップS3の分岐判断において分岐条件が成立した場合、分岐条件判定回路18は、判定結果信号J1を分岐条件成立状態とする。そして、この判定結果信号J1に応じて、入力制御回路19は、セレクタ17に所定のタイミングで選択する入力端子を切り替える指示を与えるセレクタ制御信号J2を出力する。一方、ステップS3の分岐判断において分岐条件が不成立であった場合、分岐条件判定回路18は、判定結果信号J1を分岐条件不成立状態とする。そして、この判定結果信号J1に応じて、入力制御回路19は、セレクタ17に選択する入力端子を第1の入力端子aで固定する指示を与えるセレクタ制御信号J2を出力する。
ステップS4以降の動作では、ステップS3における分岐判断の結果によって動作が異なる。そこで、まずステップS3において分岐条件が成立した場合の動作について説明する。この場合、ステップS4では、セレクタ17が第2の入力端子bを選択する。そのためセレクタ17から出力される演算情報は、演算情報保持回路15に格納されている命令LAAに対応した第1の演算情報となる。そして、セレクタ17から出力される演算情報に基づき演算器21は、命令LAAを実行する。一方、セレクタ17が第2の入力端子bを選択しているため、命令AA及び命令BBは演算器21に送られることはなく実質的に廃棄される状態となる。また、分岐条件が成立しているため、ステップS4では、分岐先の命令LCCがフェッチされる。
続いて、ステップS5では、セレクタ17が第2の入力端子cを選択する。そのためセレクタ17から出力される演算情報は、演算情報保持回路16に格納されている命令LBBに対応した第1の演算情報となる。そして、セレクタ17から出力される演算情報に基づき演算器21は、命令LBBを実行する。また、命令デコーダ14は、ステップS4でフェッチされた命令LCCをデコードする。そして、ステップS6では、セレクタ17がセレクタ制御信号J2に基づき選択する入力する端子を第1の入力端子aとする。そのためセレクタ17から出力される演算情報は、命令デコーダ14がステップS5でデコードした命令LCC演算情報となる。そして、セレクタ17から出力される演算情報に基づき演算器21は、命令LCCを実行する。
次いで、ステップS3において分岐条件が不成立であった場合の動作について説明する。この場合、ステップS4では、セレクタ17が第1の入力端子aを選択する。そのためセレクタ17から出力される演算情報は、命令デコーダ14がステップS3でデコードした命令AAに対応した第2の演算情報となる。そして、セレクタ17から出力される演算情報に基づき演算器21は、命令AAを実行する。また、命令デコーダ14は、ステップS3でフェッチされた命令BBをデコードする。一方、セレクタ17が第2の入力端子aを選択しているため、命令LAA及び命令LBBに対応した演算情報は演算器21に送られることはなく実質的に廃棄される状態となる。また、分岐条件が不成立であるため、ステップS4では、命令BBに続く命令CCがフェッチされる。
続いて、ステップS5においても、セレクタ17は第2の入力端子aを選択する。そのためセレクタ17から出力される演算情報は、命令デコーダ14がステップS4でデコードした命令BBに対応した第2の演算情報となる。そして、セレクタ17から出力される演算情報に基づき演算器21は、命令BBを実行する。また、命令デコーダ14は、ステップS4でフェッチされた命令CCをデコードする。そして、ステップS6においてもセレクタ17が第1の入力端子aを選択する。そのためセレクタ17から出力される演算情報は、命令デコーダ14がステップS5でデコードした命令CCに対応した演算情報となる。そして、セレクタ17から出力される演算情報に基づき演算器21は、命令CCを実行する。
上記説明より、本実施の形態にかかるマイクロコンピュータ1は、条件分岐命令jleとその後に実行される第1の演算命令とを複合した分岐複合命令Xjleをデコードし、デコードにより生じた条件分岐演算情報以外の演算情報をその後の処理のために演算情報保持回路15、16により保持する。そして、分岐条件演算情報による分岐判断を分岐条件判定回路で行うと共に、条件分岐命令jleに続いて処理される第1の演算情報とは異なる第2の演算命令のデコードを行う。これにより、マイクロコンピュータ1では、分岐判断と同時に分岐条件が成立した場合に実行されるべき演算情報と分岐条件が不成立であった場合に実行されるべき演算情報とが共に準備された状態となる。そして、マイクロコンピュータ1は、分岐条件の成立/不成立に応じて準備された2つの演算情報のうちいずれを用いるかを選択する。従って、マイクロコンピュータ1では、分岐条件が成立/不成立のいずれの場合であっても、処理ステージに空白期間(分岐ペナルティ)を生じさせることなくその後の処理を実行することができる。つまり、マイクロコンピュータ1は、分岐条件の成立の如何にかかわらず処理能力の低下を生じさせることがない。言い換えると、条件の成立に依存する命令又は不成立に依存する命令が存在する場合に、分岐ペナルティを削減することが可能となる。
なお、本実施の形態では、分岐複合命令Xjleに分岐条件が成立した場合の順次演算命令を含める形態としたが、マイクロコンピュータの構成に応じて、分岐条件が不成立であった場合の順次演算命令を分岐複合命令に含めてもよい。また、分岐複合命令Xjleに含める順次演算命令の数は、分岐複合命令Xjleのフェッチから分岐判断が行われる第1の実行ステージまでの間に含まれる処理ステージの数に応じて増減させることが好ましい。分岐複合命令Xjleに含める順次演算命令の数を分岐複合命令Xjleのフェッチから分岐判断が行われる第1の実行ステージまでの間に含まれる処理ステージの数に合わせることで、処理ステージの空白期間をなくすことができるからである。
また、図7にマイクロコンピュータ1の変形例となるマイクロコンピュータ2のブロック図を示す。図7に示すように、マイクロコンピュータ2では、分岐先フェッチアドレスFA3を演算するために別途加算器23を有する。加算器23は、セレクタ17からの出力とプログラムカウンタ20から出力される第2のフェッチアドレスFA2とを加算して分岐先フェッチアドレスFA3を出力する。このようにすることで、演算器21の構成を簡略化することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
実施の形態1にかかるマイクロコンピュータのブロック図である。 実施の形態1にかかるマイクロコンピュータにおいて採用される命令群を説明するための図である。 実施の形態1にかかるマイクロコンピュータにおいて処理される命令群を説明するための図である。 実施の形態1にかかるマイクロコンピュータにおいて分岐条件が成立した場合の命令群の状態を示す図である。 実施の形態1にかかるマイクロコンピュータにおいて分岐条件が不成立であった場合の命令群の状態を示す図である。 実施の形態1にかかるマイクロコンピュータの動作手順を示すフローチャートである。 実施の形態1にかかるマイクロコンピュータの変形例を示すブロック図である。 従来のパイプライン計算機において採用される命令群を説明するための図である。 従来のパイプライン計算機において採用される命令群の別の例を説明するための図である。
符号の説明
1、2 マイクロコンピュータ
10 命令フェッチアドレスレジスタ
11、17 セレクタ
12、21 加算器
13 命令格納部
14 命令デコーダ
15、16 演算情報保持回路
18 分岐条件判定回路
19 入力制御回路
20 プログラムカウンタ
21 演算器
22 演算結果保持回路
FA1 第1のフェッチアドレス
FA2 第2のフェッチアドレス
FA3 分岐先フェッチアドレス
FA4 実行フェッチアドレス
J1 判定結果信号
J2 セレクタ制御信号

Claims (11)

  1. パイプライン処理により演算を実行するマイクロコンピュータであって、
    第1の実行ステージにおいて実行される条件分岐命令と第2の実行ステージにおいて実行される第1の演算命令とを含む分岐複合命令と、前記第2の実行ステージにおいて実行される第2の演算命令を含む順次演算命令と、をフェッチした順にデコードし、デコードした命令に応じた演算情報を出力する命令デコーダと、
    前記分岐複合命令のデコードにより得られる演算情報のうち前記第1の演算命令に対応した第1の演算情報を格納する演算情報格納回路と、
    前記分岐複合命令のデコードにより得られる演算情報のうち前記条件分岐命令に対応した条件分岐演算情報に基づき、分岐条件の成立/不成立を判断し、判定結果信号を出力する分岐条件判定回路と、
    前記判定結果信号が分岐条件の成立又は不成立の一方の状態を示す場合に前記演算情報格納回路に格納された前記第1の演算情報を出力し、前記判定結果信号が分岐条件の成立又は不成立の他方の状態を示す場合に前記第2の演算命令に対応した第2の演算情報を出力するセレクタと、
    前記セレクタが出力した演算情報に基づき演算を行い、演算結果信号を出力する演算器と、
    を有するマイクロコンピュータ。
  2. 前記セレクタは、前記命令デコーダの出力を受ける第1の入力端子と、前記演算情報格納回路の出力を受ける第2の入力端子とを有し、
    前記セレクタは、前記判定結果信号が分岐条件の成立又は不成立の一方の状態を示す場合において選択する入力端子を前記第1の入力端子から前記第2の入力端子へと所定のタイミングで切り替える請求項1に記載のマイクロコンピュータ。
  3. 前記所定のタイミングを制御する入力制御回路を有する請求項2に記載のマイクロコンピュータ。
  4. 前記演算器の演算結果を保持する演算結果保持回路を有し、
    前記分岐条件判定回路は、前記演算結果保持回路に保持されているすでに演算された演算結果を参照して、前記分岐条件の成立/不成立を判定する請求項1に記載のマイクロコンピュータ。
  5. 予め決められた順序で第1のフェッチアドレスを出力する命令フェッチアドレスレジスタと、
    前記第1のフェッチアドレスを遅延させ、前記演算回路において実行中の命令に対応する第2のフェッチアドレスを出力するプログラムカウンタと、
    前記第1のフェッチアドレスと、前記演算回路が前記第2のフェッチアドレスに基づき演算する分岐先フェッチアドレスと、を前記判定結果信号に基づき選択し、選択したフェッチアドレスを前記実行フェッチアドレスとして出力するセレクタと、
    前記実行フェッチアドレスに関連付けて前記分岐複合命令及び前記順次演算命令を格納し、入力される前記実行フェッチアドレスに関連付けられた命令を出力する命令格納部と、
    を有する請求項1に記載のマイクロコンピュータ。
  6. 前記第2のフェッチアドレスと前記分岐演算情報に基づき演算された演算結果とを加算し、前記分岐先フェッチアドレスを生成する加算器を有する請求項5に記載のマイクロコンピュータ。
  7. 前記演算情報格納回路は、前記第2の実行ステージが複数の実行ステージを含む場合、前記複数の実行ステージの数に応じた数が設けられる請求項1に記載のマイクロコンピュータ。
  8. 前記第1の演算命令は、前記条件分岐命令において分岐条件が成立又は不成立の一方の状態した場合に実行されるべき演算命令であり、
    前記第2の演算命令は、前記条件分岐命令において分岐条件が成立又は不成立の他方の状態であった場合に実行されるべき演算命令である請求項1に記載のマイクロコンピュータ
  9. パイプライン処理により演算を実行するマイクロコンピュータにおける命令実行方法であって、
    第1の実行ステージにおいて実行される条件分岐命令と第2の実行ステージにおいて実行される第1の演算命令とを含む分岐複合命令をデコードして前記条件分岐命令に応じた条件分岐演算情報と前記第1の演算命令に応じた第1の演算情報とを生成し、
    前記第1の演算情報を演算情報格納回路に格納し、
    前記条件分岐演算情報に基づき分岐条件の成立/不成立を判断すると共に、前記第2の実行ステージにおいて実行される第2の演算命令を含む順次演算命令をデコードして前記第2の演算命令に応じた第2の演算情報とを生成し、
    前記分岐条件が成立又は不成立の一方の状態となった場合は前記演算情報格納回路に格納された前記第1の演算情報に基づき演算を行い、前記分岐条件の成立又は不成立の他方の状態となった場合は前記第2の演算情報に基づき演算を行うマイクロコンピュータにおける命令実行方法。
  10. 前記分岐条件が成立したと判断された場合は、前記条件分岐演算情報に基づき分岐先の演算命令をフェッチし、前記分岐条件が不成立であると判断された場合は、命令のフェッチアドレスのジャンプを行わずに演算命令をフェッチする請求項9に記載のマイクロコンピュータにおける命令実行方法。
  11. 前記分岐条件が成立しているか否かの判定は、前記条件分岐演算情報を処理する以前に演算されている演算結果を参照して行われる請求項9に記載のマイクロコンピュータにおける命令実行方法。
JP2008250485A 2008-09-29 2008-09-29 マイクロコンピュータ及びその命令実行方法 Expired - Fee Related JP4383496B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008250485A JP4383496B1 (ja) 2008-09-29 2008-09-29 マイクロコンピュータ及びその命令実行方法
US12/318,210 US20100082946A1 (en) 2008-09-29 2008-12-23 Microcomputer and its instruction execution method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008250485A JP4383496B1 (ja) 2008-09-29 2008-09-29 マイクロコンピュータ及びその命令実行方法

Publications (2)

Publication Number Publication Date
JP4383496B1 JP4383496B1 (ja) 2009-12-16
JP2010079841A true JP2010079841A (ja) 2010-04-08

Family

ID=41549767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008250485A Expired - Fee Related JP4383496B1 (ja) 2008-09-29 2008-09-29 マイクロコンピュータ及びその命令実行方法

Country Status (2)

Country Link
US (1) US20100082946A1 (ja)
JP (1) JP4383496B1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103377034A (zh) * 2012-04-12 2013-10-30 无锡江南计算技术研究所 指令预送方法及装置、指令管理系统、运算核心
CN103473030A (zh) * 2013-09-03 2013-12-25 小米科技有限责任公司 一种处理指令的方法、装置和终端设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200109467A (ko) * 2019-03-13 2020-09-23 삼성전자주식회사 전자 장치 및 그 제어 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026488A (en) * 1998-02-20 2000-02-15 International Business Machines Corporation Method for conditional hedge fetching into cache storage
US7134004B1 (en) * 1999-09-29 2006-11-07 Fujitsu Limited Processing device for buffering sequential and target sequences and target address information for multiple branch instructions
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7010675B2 (en) * 2001-07-27 2006-03-07 Stmicroelectronics, Inc. Fetch branch architecture for reducing branch penalty without branch prediction
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
TWI328771B (en) * 2005-07-15 2010-08-11 Nvidia Corp Pipelined central processing unit structure and method of processing a sequence of instructions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103377034A (zh) * 2012-04-12 2013-10-30 无锡江南计算技术研究所 指令预送方法及装置、指令管理系统、运算核心
CN103473030A (zh) * 2013-09-03 2013-12-25 小米科技有限责任公司 一种处理指令的方法、装置和终端设备

Also Published As

Publication number Publication date
JP4383496B1 (ja) 2009-12-16
US20100082946A1 (en) 2010-04-01

Similar Documents

Publication Publication Date Title
TWI529618B (zh) 用於極早分支預測之包含影子快取的單一循環多分支預測
US10664280B2 (en) Fetch ahead branch target buffer
JPS633337B2 (ja)
JP2010271818A (ja) 命令融合演算装置および命令融合演算方法
JP4383496B1 (ja) マイクロコンピュータ及びその命令実行方法
US9639370B1 (en) Software instructed dynamic branch history pattern adjustment
EP2972786B1 (en) Add-compare-select instruction
KR100980076B1 (ko) 저전력 분기 예측 시스템 및 분기 예측 방법
JP3802038B2 (ja) 情報処理装置
JP2006053830A (ja) 分岐予測装置および分岐予測方法
KR100677207B1 (ko) Simd 디지탈 신호 처리기 및 연산방법
KR100528208B1 (ko) 프로그램제어방법
JP5696210B2 (ja) プロセッサ及びその命令処理方法
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JP2015185076A (ja) Vliwプロセッサ
JP2006285721A (ja) 演算処理装置および演算処理方法
JP2014160393A (ja) マイクロプロセッサ及び演算処理方法
US20060294345A1 (en) Methods and apparatus for implementing branching instructions within a processor
JP4735507B2 (ja) プログラマブルコントローラの演算方式
JP2010140398A (ja) データ処理装置及びデータ処理方法
JP5505083B2 (ja) 情報処理装置
JP5013966B2 (ja) 演算処理装置
JP3967363B2 (ja) 分岐予測装置および分岐予測方法
JP2000132392A (ja) 分岐予測システムおよび分岐予測方法
JP2008009473A (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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090918

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

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: 20121002

Year of fee payment: 3

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131002

Year of fee payment: 4

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

LAPS Cancellation because of no payment of annual fees