JP2002342075A - マイクロプロセッサ - Google Patents

マイクロプロセッサ

Info

Publication number
JP2002342075A
JP2002342075A JP2001142188A JP2001142188A JP2002342075A JP 2002342075 A JP2002342075 A JP 2002342075A JP 2001142188 A JP2001142188 A JP 2001142188A JP 2001142188 A JP2001142188 A JP 2001142188A JP 2002342075 A JP2002342075 A JP 2002342075A
Authority
JP
Japan
Prior art keywords
instruction
branch
queue buffer
queue
program counter
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.)
Pending
Application number
JP2001142188A
Other languages
English (en)
Inventor
Yoshiyuki Haraguchi
喜行 原口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2001142188A priority Critical patent/JP2002342075A/ja
Priority to TW090122725A priority patent/TW530263B/zh
Priority to US09/956,908 priority patent/US6862680B2/en
Priority to KR10-2002-0002197A priority patent/KR100465250B1/ko
Priority to DE10201439A priority patent/DE10201439B4/de
Priority to CN02101873A priority patent/CN1385782A/zh
Publication of JP2002342075A publication Critical patent/JP2002342075A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

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

(57)【要約】 【課題】 簡便な構成で分岐の際の再フェッチを減らす
ことができ、処理速度を向上させるマイクロプロセッサ
を得ること。 【解決手段】 新たな分岐命令(BJMP)を追加し、
この分岐命令(BJMP)によって指定される分岐先の
手前の命令までを当該分岐命令(BJMP)のオペラン
ドとして処理することで処理する命令数を可変とする。
前記オペランドとして処理した命令を含む当該分岐命令
の命令語長をプログラムカウンタ8に出力してプログラ
ムカウンタ8のアドレスを更新させるとともに、この分
岐命令(BJMP)のときはキューバッファ2のフラッ
シュを行わない。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、命令プリフェッチ
機能を有するマイクロプロセッサに関し、特にプリフェ
ッチ命令を格納するキューバッファにおける分岐命令実
行の際のフラッシュをなくすようにしたマイクロプロセ
ッサに関するものである。
【0002】
【従来の技術】マイクロプロセッサの高速化の手法とし
て、命令の先取り(プリフェッチ)方式がある。通常の
逐次計算機では、連続アドレスに格納されている命令群
を順次実行するのが基本である。一方、命令先取り方式
では、将来実行が予想される数個先の取り出しを、前の
命令の実行や解読と並行して行う。
【0003】すなわち、あらかじめ主記憶あるいはキャ
ッシュよりプリフェッチされた命令を、高速にアクセス
可能な小容量の命令プリフェッチバッファ(キューバッ
ファ)に格納することで、命令フェッチ時のメモリアク
セスにより生じる実行の遅れを実質的に削減しようとす
るものである。
【0004】従来技術では、分岐命令が実行されると、
分岐先アドレスにかかわらず、プリフェッチおよび後続
命令の実行を中止し、キューバッファをフラッシュ(ク
リア)することにより、そのときまでストアしていた命
令を無効にし、分岐先アドレスから新たにプリフェッチ
してキューバッファに分岐先令令が格納されるのを待っ
て命令の実行を再開する。
【0005】このように、従来技術では、分岐命令実行
時にキューバッファをフラッシュするようにしているの
で、プリフェッチ回数が増え、パイプライン処理の乱
れ、高速化の妨げとなっていた。
【0006】そこで、特開平7−73034号公報にお
いては、分岐命令実行時の分岐先アドレスとキューバッ
ファ内に存在する命令の該当アドレス範囲とを比較し、
分岐先アドレスが該当アドレス範囲にあるときは、キュ
ーバッファをフラッシュすることなくキューバッファ内
の命令を用いるようにして、分岐後のプリフェッチ回数
を減らすようにしている。
【0007】
【発明が解決しようとする課題】この従来技術では、確
かに分岐後のプリフェッチ回数を減らすことができる
が、分岐命令を通常の無条件分岐命令として取り扱って
いるので、命令デコード後の分岐のためのアドレス生成
処理が複雑になり、そのための回路も複雑かつ大規模と
なる問題がある。
【0008】この発明は上記に鑑みてなされたもので、
内部に複雑な構造を設けることなく無条件分岐の際にお
ける不要なキューバッファのフラッシュをなくすように
したマイクロプロセッサを得ることを目的としている。
【0009】
【課題を解決するための手段】上記目的を達成するため
この発明にかかるマイクロプロセッサは、主記憶と、こ
の主記憶からプリフェッチされた命令が格納されるキュ
ーバッファと、主記憶上の次に実行する命令が記憶され
ているアドレスを生成するプログラムカウンタと、前記
キューバッファから出力された命令を解読する命令デコ
ーダと、前記プログラムカウンタの出力を用いて前記キ
ューバッファに対する命令の入出力制御を行うキューコ
ントローラ部とを備えたマイクロプロセッサにおいて、
前記命令デコーダは、前記キューバッファから入力され
た命令が所定の分岐命令であることを認知すると、この
分岐命令によって指定される分岐先の手前の命令までを
当該分岐命令のオペランドとして処理し、該オペランド
部分を含む当該分岐命令の命令語長を前記プログラムカ
ウンタに出力してプログラムカウンタのアドレスを更新
させるとともに前記キューバッファのフラッシュを行わ
せないようにしたことを特徴とする。
【0010】この発明によれば、通常の分岐命令として
動作するのではなく、通常のデータ転送命令、演算命令
などと同様に動作する新たな分岐命令(例えばBJM
P)がマイクロプロセッサに追加される。この分岐命令
(BJMP)によれば、キューバッファ内の命令数が可
変となる。すなわち、命令デコーダにおいては、キュー
バッファから入力された命令が予め設定された所定の分
岐命令(BJMP)であることを認知すると、この分岐
命令(BJMP)によって指定される分岐先の手前の命
令までを当該分岐命令(BJMP)のオペランドとして
処理することで、キューバッファ内の命令数を可変とす
る。そして、該オペランド部分を含む当該分岐命令の命
令語長をプログラムカウンタに出力してプログラムカウ
ンタのアドレスを更新させる。また、命令デコーダは、
この分岐命令(BJMP)のとき、キューバッファのフ
ラッシュを行わせないようにしている。
【0011】つぎの発明にかかるマイクロプロセッサ
は、上記発明において、前記分岐先の指定に、ラベルを
用いることを特徴とする。
【0012】この発明によれば、分岐命令(BJMP)
のオペランド部分にラベル(label)を付加するよ
うにしており、ラベル(label)で指定された分岐
先の手前の命令までが当該分岐命令(BJMP)のオペ
ランドとして処理される。
【0013】つぎの発明にかかるマイクロプロセッサ
は、上記発明において、前記分岐先の指定に、当該分岐
命令と分岐先との相対アドレスを指定することを特徴と
する。
【0014】この発明によれば、分岐命令(BJMP)
のオペランド部分に相対番地を付加するようにしてお
り、相対番地で指定された分岐先の手前の命令までが当
該分岐命令(BJMP)のオペランドとして処理され
る。
【0015】つぎの発明にかかるマイクロプロセッサ
は、上記発明において、前記キューコントローラ部は、
現在実行されている命令から予め設定された所定の相対
アドレス分だけ前の複数の命令を残すように前記キュー
バッファの入出力制御を行い、前記相対アドレスとして
マイナスの相対アドレスを指定可能としたことを特徴と
する。
【0016】この発明によれば、キューコントローラ部
は、現在実行されている命令から予め設定された所定の
個数の相対アドレス分だけ前の複数の命令を残すように
前記キューバッファの入出力制御を行っており、これに
よりキューバッファには、現在実行されている命令より
前のアドレスに記憶されている命令が少なくとも前記所
定の個数だけは残っていることになる。したがって、分
岐命令のオペランド部分にマイナスの相対番地を付加す
れば、マイナスアドレス側への分岐が可能となる。
【0017】つぎの発明にかかるマイクロプロセッサ
は、主記憶と、この主記憶からプリフェッチされた命令
が格納されるキューバッファと、主記憶上の次に実行す
る命令が記憶されているアドレスを生成するプログラム
カウンタと、前記キューバッファから出力された命令を
解読する命令デコーダと、前記プログラムカウンタの出
力を用いて前記キューバッファに対する命令の入出力制
御を行うキューコントローラ部とを備えたマイクロプロ
セッサにおいて、前記命令デコーダは、前記キューバッ
ファから入力された命令が所定の分岐命令であることを
認知すると、この分岐命令によって指定される分岐先の
手前の命令までをNOP命令として処理し、当該分岐命
令および前記NOP命令分の命令語長を前記プログラム
カウンタに出力してプログラムカウンタのアドレスを更
新させるとともに、前記キューバッファのフラッシュを
行わせないようにしたことを特徴とする。
【0018】この発明によれば、命令デコーダは、キュ
ーバッファから入力された命令が予め設定された所定の
分岐命令(BJMP)であることを認知すると、この分
岐命令(BJMP)によって指定される分岐先の手前の
命令までをNOP命令として処理し、当該分岐命令(B
JMP)の命令語長および前記NOP命令分の命令語長
をプログラムカウンタに出力してプログラムカウンタの
アドレスを更新させる。また、命令デコーダは、この分
岐命令(BJMP)のとき、キューバッファのフラッシ
ュを行わせないようにする。
【0019】
【発明の実施の形態】以下に添付図面を参照して、この
発明にかかるマイクロプロセッサの好適な実施の形態を
詳細に説明する。
【0020】図1はこの発明にかかるマイクロプロセッ
サの内部構成例を示すブロック図である。図1におい
て、1は主記憶装置、2はキューバッファ(命令キュ
ー)、3は入力ポインタ、4は出力ポインタ、5はキュ
ーコントローラ、6はデコーダ、7は実行部、8はプロ
グラムカウンタである。キューコントローラ5、入力ポ
インタ3および出力ポインタ4を含めて請求の範囲で言
うところのキューコントローラ部を構成している。
【0021】主記憶装置1には、実行するプログラムの
命令列が記憶されている。キューバッファ2は、例えば
32個の命令を記憶することができるバッファであり、
主記憶装置1からプリフェッチした命令を格納する。命
令デコーダ6は、キューバッファ2から読み出した命令
の命令コードをデコード(解読)する。この命令デコー
ダ6の動作は、本発明の主要をなすので、後で詳述す
る。
【0022】実行部7には、命令デコーダ6の解読結果
および命令のオペランド部が入力される。実行部7は、
入力されたデコード結果およびオペランド部を用いて、
データ転送、四則演算、論理演算、大小比較、シフト演
算などの処理を行って命令を実行する。
【0023】プログラムカウンタ8は、主記憶装置1上
における次の命令の実行アドレスを格納しているレジス
タであり、命令デコーダ6から与えられた命令語の長さ
を現在のプログラムカウンタのカウンタ値(レジスタ
値)に加算するよう動作する。
【0024】キューコントローラ5は、プログラムカウ
ンタ8あるいは命令デコーダ6の出力に基づいて入力ポ
インタ3および出力ポインタ4を制御することで、キュ
ーバッファ2に対する命令の入出力制御を実行する。入
力ポインタ3は、キューコントローラ5からのライト制
御信号によってインクリメント(あるいはデクリメン
ト)されることで、主記憶装置1からプリフェッチした
命令のキューバッファ2に対する書き込み制御を実行す
る。出力ポインタ4は、キューコントローラ5からのリ
ード制御信号によってインクリメント(あるいはデクリ
メント)されることで、キューバッファ2に格納された
命令の命令デコーダ6に対する読み出し制御を実行す
る。
【0025】実施の形態1.つぎに、図1の他に図2を
用いてこの発明の実施の形態1について説明する。この
実施の形態1においては、図1のマイクロプロセッサに
対し、新たな分岐命令「BJMP」を追加する(図2参
照)。この分岐命令「BJMP」は、通常の分岐命令と
は異なる処理を行うが、結果的に通常の分岐命令と同様
の分岐処理を行うものである。ただし、この分岐命令
「BJMP」においては、命令実行の際、キューバッフ
ァ2はフラッシュされない。図2は、キューバッファ2
に格納された命令列を概念的に示すものである。
【0026】この実施の形態1においては、分岐命令
「BJMP」の分岐先を示すオペランド部にラベル(L
abel)を指定するようにしている。
【0027】図1の命令デコーダ6では、キューバッフ
ァ2から入力された命令を解読して、入力された命令が
上記分岐命令「BJMP」であると認識すると、この分
岐命令「BJMP」のオペランド部のラベル(lave
l)で指定される相対番地の手前までに存在する命令
(この場合インクリメント命令;INXおよびINY)
を分岐命令「BJMP」のオペランドとして処理する。
【0028】すなわち、命令デコーダ6は、キューコン
トローラ5に対し、出力ポインタ4を更新させるための
制御信号を送る。この制御信号によってキューコントロ
ーラ5は出力ポインタ4を更新する。この結果、命令デ
コーダ6には、キューバッファ2から次の命令(この場
合INX)が入力される。この入力された命令を解読し
て、この命令がラベル(label)であるか否かを判
定する。この場合は、命令(INX)がラベル(lab
el)ではないので、命令デコーダ6は、キューコント
ローラ5に対しさらに制御信号を送って出力ポインタ4
を更新させる。このようにして、命令デコーダ6はラベ
ル(Label)を検出するまで、キューコントローラ
に制御信号を送ってラベル(lavel)で指定される
相対番地の手前までに存在する命令を読み込む。このよ
うにして、命令デコーダ6は、オペランドとして処理す
べき命令部分(この場合INXおよびINY)の命令数
およびオペランドとして処理する命令部分の命令語長を
検出する。
【0029】そして、命令デコーダ6は、分岐命令「B
JMP」の命令語長に、前記オペランドとして処理する
命令部分(この場合INXおよびINY)の命令語長を
加算し、この加算結果を当該分岐命令「BJMP」の命
令語長として、プログラムカウンタ8に出力する。さら
に、命令デコーダ6は、キューコントローラ5にフラッ
シュ禁止のための所定の制御信号を出力する。
【0030】プログラムカウンタ8は、現在のアドレス
値に、命令デコーダ6から入力された分岐命令「BJM
P」の命令語長を加算して、アドレス値を更新する。ま
た、キューコントローラ5は、命令デコーダ6からの前
記制御信号の入力によってキューバッファ2のフラッシ
ュを行わない。
【0031】したがって、今度は、命令デコーダ6に
は、キューバッファ2からラベル(lavel)で指定
される相対番地の次の命令(この場合はロード命令;L
DA)が読み出されて解読処理されることになり、結果
的に通常の分岐命令と同様の処理が行われたことにな
る。
【0032】このように、この実施の形態1において
は、分岐命令「BJMP」のラベル(label)で指
定される分岐先までの命令コードを分岐命令「BJM
P」のオペランドとして処理するようにしたので、分岐
先までの命令コードが分岐命令「BJMP」の1命令と
して扱われることになり、結果的に処理される命令数が
可変されることになる。すなわち、命令数を可変とする
ことで無条件分岐と同じ分岐動作が得られることにな
る。
【0033】実施の形態1においては、分岐命令「BJ
MP」は、通常の分岐命令としては動作せず、他のデー
タ転送命令、演算命令などと同様に動作させかつ通常の
分岐命令として扱わずにキューバッファ2のフラッシュ
を発生させないようにしたので、分岐の際のアドレス演
算が従来より簡単になり、これにより内部に複雑な回路
構成を設けることなく分岐の際における不要なキューバ
ッファのフラッシュをなくすことができる。したがっ
て、簡便な構成で分岐の際の再フェッチを減らすことが
でき、処理速度を向上させることができる。
【0034】なお、図2の場合は、ラベル指定される相
対番地までに存在する命令が2つの場合について示した
が、この命令数は勿論1または3以上でもよい。また、
分岐命令「BJMP」のオペランドの対象となる命令
も、図2に示した、インクリメント命令INX,INY
に限るわけではない。
【0035】実施の形態2.つぎに、図1および図3を
用いてこの発明の実施の形態2について説明する。この
実施の形態2においては、図3に示すように、分岐命令
「BJMP」の分岐先を相対番地で指定するようにして
いる。図3においては、分岐命令「BJMP」のオペラ
ンド部に相対番地として「3」を指定するようにしてい
る。
【0036】命令デコーダ6では、キューバッファ2か
ら入力された命令を解読して、入力された命令が上記分
岐命令「BJMP」であると認識すると、この分岐命令
「BJMP」のオペランド部の相対番地(この場合3)
で指定される相対番地の手前までに存在する命令(この
場合インクリメント命令;INXおよびINY)を分岐
命令「BJMP」のオペランドとして処理する。
【0037】すなわち、命令デコーダ6は、キューコン
トローラ5に対し、分岐命令「BJMP」のオペランド
部の相対番地(この場合3)に基づいてオペランドとし
て処理すべき命令部分(この場合INXおよびINY)
の命令数(この場合2)および命令語長を認識する。
【0038】そして、命令デコーダ6は、分岐命令「B
JMP」の命令語長に、前記オペランドとして処理した
命令部分(この場合INXおよびINY)の命令語長を
加算し、この加算結果を当該分岐命令「BJMP」の命
令語長として、プログラムカウンタ8に出力する。ま
た、命令デコーダ6は、キューコントローラ5にフラッ
シュ禁止のための所定の制御信号を出力する。
【0039】プログラムカウンタ8は、現在のアドレス
値に、命令デコーダ6から入力された分岐命令「BJM
P」の命令語長(INXおよびINYの命令語長を含
む)を加算して、アドレス値を更新する。また、キュー
コントローラ5では、命令デコーダ6からの前記制御信
号の入力によってキューバッファ2のフラッシュを行わ
ない。
【0040】したがって、今度は、命令デコーダ6に
は、分岐命令「BJMP」のオペランド部で指定される
相対番地の命令(この場合はロード命令;LDA)がキ
ューバッファ2から読み出されて解読処理されることに
なり、結果的に通常の分岐命令と同様の処理が行われた
ことになる。
【0041】このように、この実施の形態2において
は、分岐命令「BJMP」のオペランド部に相対番地と
して指定される分岐先までの命令コードを分岐命令「B
JMP」のオペランドとして処理するようにしたので、
分岐先までの命令コードが分岐命令「BJMP」の1命
令として扱われることになり、結果的に処理される命令
数が可変されることになる。すなわち、先の実施の形態
1と同様命令数を可変とすることで無条件分岐と同じ分
岐動作が得られるようにしている。
【0042】実施の形態2においては、分岐命令「BJ
MP」の結果的なオペランド長を分岐命令「BJMP」
の本来のオペランド部で指定された相対番地に対応する
長さとすることで通常の分岐命令に相当する動作を行な
うようにしたので、分岐の際のアドレス演算が従来より
簡単になり、これにより内部に複雑な構成を設けること
なく分岐の際における不要なキューバッファのフラッシ
ュをなくすことができる。したがって、簡便な構成で分
岐の際の再フェッチを減らすことができ、処理速度を向
上させることができる。
【0043】なお、図3の場合は、ラベル指定される相
対番地までに存在する命令が2つの場合について示した
が、この命令数は勿論1または3以上でもよい。また、
分岐命令「BJMP」のオペランドの対象となる命令
も、図3に示した、インクリメント命令INX,INY
に限るわけではない。
【0044】実施の形態3.つぎに、図1および図4を
用いてこの発明の実施の形態3について説明する。この
実施の形態3においては、図4に示すように、分岐命令
「BJMP」の分岐先を相対番地(この場合は「−
3」)で指定するようにしている。ただし、この場合
は、先の実施の形態2とは異なり、マイナスアドレス側
への分岐を可能としている。
【0045】この実施の形態3では、キューコントロー
ラ5は、現在実行されている命令から予め設定された所
定の個数(例えば5個)の相対アドレス分だけ前の複数
の命令を残すように前記キューバッファの入出力制御を
行うようにしている。すなわち、入力ポインタ3と出力
ポインタ4に常に少なくとも5アドレス分の差をあけて
各ポインタ3,4の出力が進むようにしている。
【0046】命令デコーダ6では、キューバッファ2か
ら入力された命令を解読して、入力された命令が上記分
岐命令「BJMP」であると認識すると、この分岐命令
「BJMP」のオペランド部の相対番地(この場合−
3)で指定される相対番地の手前までに存在する命令
(この場合インクリメント命令;INXおよびINY)
を分岐命令「BJMP」のオペランドとして処理する。
【0047】すなわち、命令デコーダ6は、キューコン
トローラ5に対し、分岐命令「BJMP」のオペランド
部の相対番地(この場合−3)に基づいてオペランドと
して処理すべき命令部分(この場合INXおよびIN
Y)の命令数および命令語長を認識する。
【0048】そして、命令デコーダ6は、分岐命令「B
JMP」の命令語長に、前記オペランドとして処理した
命令部分(この場合INXおよびINY)の命令語長を
加算し、この加算結果にマイナスの符号を付けたものを
当該分岐命令「BJMP」の命令語長として、プログラ
ムカウンタ8に出力する。また、命令デコーダ6は、キ
ューコントローラ5にフラッシュ禁止のための所定の制
御信号を出力する。
【0049】プログラムカウンタ8は、現在のアドレス
値に、命令デコーダ6から入力された分岐命令「BJM
P」の命令語長を加算して、アドレス値を更新する。ま
た、キューコントローラ5では、命令デコーダ6からの
前記制御信号の入力によってキューバッファ2のフラッ
シュを行わない。
【0050】したがって、今度は、命令デコーダ6に
は、分岐命令「BJMP」のオペランド部で指定される
相対番地(−3)の命令(この場合はロード命令;LD
A)がキューバッファ2から読み出されて解読処理され
ることになり、結果的に通常のマイナスアドレスへの分
岐命令と同様の処理が行われたことになる。
【0051】このように、この実施の形態3において
も、分岐命令「BJMP」のオペランド部の相対番地で
指定されるマイナスアドレスへの分岐先までの命令コー
ドを分岐命令「BJMP」のオペランドとして処理する
ようにしたので、分岐先までの命令コードが分岐命令
「BJMP」の1命令として扱われることになり、結果
的に処理される命令数が可変されることになる。
【0052】この実施の形態3においては、分岐命令
「BJMP」の結果的なオペランド長を分岐命令「BJ
MP」の本来のオペランド部で指定された相対番地に対
応する長さとすることでマイナスアドレスへの分岐命令
に相当する動作を行なうようにしたので、分岐の際のア
ドレス演算が従来より簡単になり、これにより内部に複
雑な構成を設けることなく分岐の際における不要なキュ
ーバッファのフラッシュをなくすことができる。したが
って、簡便な構成で分岐の際の再フェッチを減らすこと
ができ、処理速度を向上させることができる。
【0053】なお、図4の場合は、ラベル指定される相
対番地までに存在する命令が2つの場合について示した
が、この命令数は勿論1または3以上でもよい。ただ
し、この上限は、キューバッファ2に残す命令の個数に
よって規定される。また、分岐命令「BJMP」のオペ
ランドの対象となる命令も、図4に示した、インクリメ
ント命令INX,INYに限るわけではない。
【0054】実施の形態4.つぎに、図1および図5に
従ってこの発明の実施の形態4について説明する。先の
実施の形態1〜3では、分岐先までに存在する命令を分
岐命令「BJMP」のオペランドとして処理するように
したが、これらオペランド処理された命令は、実際には
何も命令を実行するわけではないので、ノーオペレーシ
ョン(NOP)に置き換えても問題はない。
【0055】例えば、CISC(Complex Instruction
Set Computer)のようなアセンブラレベルでの高度な命
令セットを提供するプロセッサでは、1令令のアセンブ
リコードで非常に高度な処理を行なえる。その際、オペ
ランド中にある実際に実行されないただ記述のみがされ
た命令をNOPに置き換え、実行することができるよう
にすれば、命令数を変更せずに先の実施形態と同様の分
岐動作の実行が可能になる。
【0056】この実施の形態4においては、図5に示す
ように、分岐命令「BJMP」の分岐先を示すオペラン
ド部にラベル(Label)を指定するようにしてい
る。
【0057】この場合、図1の命令デコーダ6では、キ
ューバッファ2から入力された命令を解読して、入力さ
れた命令が分岐命令「BJMP」であると認識すると、
この分岐命令「BJMP」のオペランド部のラベル(l
avel)で指定される相対番地の手前までに存在する
命令(この場合インクリメント命令;INXおよびIN
Y)をすべてNOPとして処理する。
【0058】すなわち、命令デコーダ6は、キューコン
トローラ5に対し、出力ポインタ4を更新させるための
制御信号を送る。この制御信号によってキューコントロ
ーラ5は出力ポインタ4を更新する。この結果、命令デ
コーダ6には、キューバッファ2から次の命令(この場
合INX)が入力される。この入力された命令INXを
NOPとして処理する。さらに、命令デコーダ6は、キ
ューコントローラ5に対し制御信号を送って出力ポイン
タ4を更新させる。この制御信号によってキューコント
ローラ5は出力ポインタ4を更新する。この結果、命令
デコーダ6には、キューバッファ2から次の命令(この
場合INY)が入力される。この入力された命令INY
をNOPとして処理する。
【0059】このようにして、命令デコーダ6はラベル
(Label)を検出するまで、キューコントローラ5
に制御信号を送ってラベル(lavel)で指定される
相対番地までに存在する命令を読み込み、これらを全て
NOPとして処理する。また、この場合、命令デコーダ
6は、キューバッファ2から命令が入力される度に、プ
ログラムカウンタ8に各命令に対応する命令語長を送
る。さらに、命令デコーダ6は、キューコントローラ5
にフラッシュ禁止のための所定の制御信号を出力する。
【0060】プログラムカウンタ8は、命令デコーダ6
から命令語長(この場合は通常の1命令分の語長)が送
られてくる度に、この命令語長を現在のアドレス値に加
算して、アドレス値を更新する。また、キューコントロ
ーラ5は、命令デコーダ6からの前記制御信号の入力に
よってキューバッファ2のフラッシュを行わない。
【0061】したがって、今度は、命令デコーダ6に
は、キューバッファ2からラベル(lavel)で指定
される相対番地の命令(この場合はロード命令;LD
A)が読み出されて解読処理されることになり、結果的
に命令数を変えない通常の分岐命令と同様の処理が行わ
れたことになる。
【0062】このようにこの実施の形態4においては、
分岐命令「BJMP」のラベル(label)で指定さ
れる分岐先までの命令コードをNOPとして処理するよ
うにしたので、命令数を変えることなく無条件分岐と同
じ分岐動作が得られるようになる。したがって、分岐の
際のアドレス演算が簡単になり、これにより内部に複雑
な構成を設けることなく分岐の際における不要なキュー
バッファのフラッシュをなくすことができる。したがっ
て、簡便な構成で分岐の際の再フェッチを減らすことが
でき、処理速度を向上させることができる。
【0063】なお、図5の場合は、ラベル指定される相
対番地までに存在する命令が2つの場合について示した
が、この命令数は勿論1または3以上でもよい。また、
NOP処理の対象となる命令も、図5に示した、インク
リメント命令INX,INYに限るわけではない。
【0064】ところで、上記の各実施の形態では、命令
デコーダ6は、分岐命令「BJMP」が入力されたと
き、キューコントローラ5に対しフラッシュ禁止のため
の所定の制御信号を出力するようにしているが、特にキ
ューコントローラ5に対し制御信号を出力することなく
キューバッファ2でのフラッシュを禁止させても良い。
この場合は、キューコントローラ5は、制御信号が入力
されたときにフラッシュを行うことになる。
【0065】
【発明の効果】以上説明したように、この発明によれ
ば、新たな分岐命令(BJMP)を追加し、この分岐命
令(BJMP)によって指定される分岐先の手前の命令
までを当該分岐命令(BJMP)のオペランドとして処
理することでキューバッファ内の命令数を可変とし、該
オペランド部分を含む当該分岐命令の命令語長をプログ
ラムカウンタに出力してプログラムカウンタのアドレス
を更新させるとともに、この分岐命令(BJMP)のと
きはキューバッファのフラッシュを行わせないようにし
たので、分岐の際のアドレス演算が簡単になり、これに
より内部に複雑な構成を設けることなく分岐の際におけ
る不要なキューバッファのフラッシュをなくすことがで
きる。したがって、簡便な構成で分岐の際の再フェッチ
を減らすことができ、処理速度を向上させることができ
る。
【0066】つぎの発明にかかるマイクロプロセッサに
よれば、分岐先の指定に、ラベル(Label)を用い
るようにしているので、分岐先までの相対番地を指定す
ることなく分岐を行えることができる。また、簡便な構
成で分岐の際の再フェッチを減らすことができ、処理速
度を向上させることができる。
【0067】つぎの発明にかかるマイクロプロセッサに
よれば、分岐先の指定に、当該分岐命令と分岐先との相
対アドレスを指定するようにしており、簡便な構成で分
岐の際の再フェッチを減らすことができ、処理速度を向
上させることができる。
【0068】つぎの発明にかかるマイクロプロセッサに
よれば、現在実行されている命令から予め設定された所
定の相対アドレス分だけ前の複数の命令を残すように前
記キューバッファの入出力制御を行うとともに、マイナ
スの相対アドレスを指定可能としたので、マイナスアド
レス側への分岐が可能となる。また、簡便な構成で分岐
の際の再フェッチを減らすことができ、処理速度を向上
させることができる。
【0069】つぎの発明にかかるマイクロプロセッサに
よれば、新たな分岐命令(BJMP)を追加し、この分
岐命令(BJMP)によって指定される分岐先の手前の
命令までをNOP命令として処理し、当該分岐命令およ
びNOP命令の命令語長を前記プログラムカウンタに出
力してプログラムカウンタのアドレスを更新させるとと
もに、この分岐命令(BJMP)のときはキューバッフ
ァのフラッシュを行わせないようにしたので、分岐の際
のアドレス演算が簡単になり、また分岐の際に命令数が
変更することもない。これにより内部に複雑な構成を設
けることなく分岐の際における不要なキューバッファの
フラッシュをなくすことができる。したがって、簡便な
構成で分岐の際の再フェッチを減らすことができ、処理
速度を向上させることができる。
【図面の簡単な説明】
【図1】 この発明にかかるマイクロプロセッサの内部
構成例を示すブロック図である。
【図2】 この発明の実施の形態1を説明するための命
令列を示す図である。
【図3】 この発明の実施の形態2を説明するための命
令列を示す図である。
【図4】 この発明の実施の形態3を説明するための命
令列を示す図である。
【図5】 この発明の実施の形態4を説明するための命
令列を示す図である。
【符号の説明】
1 主記憶装置、2 キューバッファ(命令キュー)、
3 入力ポインタ、4出力ポインタ、5 キューコント
ローラ、6 デコーダ、7 実行部、8 プログラムカ
ウンタ、BJMP 分岐命令。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 主記憶と、この主記憶からプリフェッチ
    された命令が格納されるキューバッファと、主記憶上の
    次に実行する命令が記憶されているアドレスを生成する
    プログラムカウンタと、前記キューバッファから出力さ
    れた命令を解読する命令デコーダと、前記プログラムカ
    ウンタの出力を用いて前記キューバッファに対する命令
    の入出力制御を行うキューコントローラ部とを備えたマ
    イクロプロセッサにおいて、 前記命令デコーダは、 前記キューバッファから入力された命令が所定の分岐命
    令であることを認知すると、この分岐命令によって指定
    される分岐先の手前の命令までを当該分岐命令のオペラ
    ンドとして処理し、該オペランド部分を含む当該分岐命
    令の命令語長を前記プログラムカウンタに出力してプロ
    グラムカウンタのアドレスを更新させるとともに前記キ
    ューバッファのフラッシュを行わせないようにしたこと
    を特徴とするマイクロプロセッサ。
  2. 【請求項2】 前記分岐先の指定に、ラベルを用いるこ
    とを特徴とする請求項1に記載のマイクロプロセッサ。
  3. 【請求項3】 前記分岐先の指定に、当該分岐命令と分
    岐先との相対アドレスを指定することを特徴とする請求
    項1に記載のマイクロプロセッサ。
  4. 【請求項4】 前記キューコントローラ部は、現在実行
    されている命令から予め設定された所定の個数の相対ア
    ドレス分だけ前の複数の命令を残すように前記キューバ
    ッファの入出力制御を行い、 前記相対アドレスとしてマイナスの相対アドレスを指定
    可能としたことを特徴とする請求項3に記載のマイクロ
    プロセッサ。
  5. 【請求項5】 主記憶と、この主記憶からプリフェッチ
    された命令が格納されるキューバッファと、主記憶上の
    次に実行する命令が記憶されているアドレスを生成する
    プログラムカウンタと、前記キューバッファから出力さ
    れた命令を解読する命令デコーダと、前記プログラムカ
    ウンタの出力を用いて前記キューバッファに対する命令
    の入出力制御を行うキューコントローラ部とを備えたマ
    イクロプロセッサにおいて、 前記命令デコーダは、 前記キューバッファから入力された命令が所定の分岐命
    令であることを認知すると、この分岐命令によって指定
    される分岐先の手前の命令までをNOP命令として処理
    し、当該分岐命令および前記NOP命令分の命令語長を
    前記プログラムカウンタに出力してプログラムカウンタ
    のアドレスを更新させるとともに、前記キューバッファ
    のフラッシュを行わせないようにしたことを特徴とする
    マイクロプロセッサ。
JP2001142188A 2001-05-11 2001-05-11 マイクロプロセッサ Pending JP2002342075A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2001142188A JP2002342075A (ja) 2001-05-11 2001-05-11 マイクロプロセッサ
TW090122725A TW530263B (en) 2001-05-11 2001-09-13 Microprocessor
US09/956,908 US6862680B2 (en) 2001-05-11 2001-09-21 Microprocessor processing specified instructions as operands
KR10-2002-0002197A KR100465250B1 (ko) 2001-05-11 2002-01-15 마이크로프로세서
DE10201439A DE10201439B4 (de) 2001-05-11 2002-01-16 Mikroprozessor
CN02101873A CN1385782A (zh) 2001-05-11 2002-01-16 微处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001142188A JP2002342075A (ja) 2001-05-11 2001-05-11 マイクロプロセッサ

Publications (1)

Publication Number Publication Date
JP2002342075A true JP2002342075A (ja) 2002-11-29

Family

ID=18988537

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001142188A Pending JP2002342075A (ja) 2001-05-11 2001-05-11 マイクロプロセッサ

Country Status (6)

Country Link
US (1) US6862680B2 (ja)
JP (1) JP2002342075A (ja)
KR (1) KR100465250B1 (ja)
CN (1) CN1385782A (ja)
DE (1) DE10201439B4 (ja)
TW (1) TW530263B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162617B2 (en) * 2003-02-14 2007-01-09 Fine Arc Incorporated Data processor with changeable architecture
JP2005149297A (ja) * 2003-11-18 2005-06-09 Renesas Technology Corp プロセッサおよびそのアセンブラ
CN100492279C (zh) * 2006-07-27 2009-05-27 中国科学院计算技术研究所 对复杂指令译码生成微码的译码装置和方法
US8209488B2 (en) * 2008-02-01 2012-06-26 International Business Machines Corporation Techniques for prediction-based indirect data prefetching
US8166277B2 (en) * 2008-02-01 2012-04-24 International Business Machines Corporation Data prefetching using indirect addressing
US20170075572A1 (en) * 2015-09-11 2017-03-16 Sandisk Technologies Inc. Extending hardware queues with software queues

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61211744A (ja) * 1985-03-18 1986-09-19 Nec Corp 命令先取り制御装置
JPS63178335A (ja) * 1987-01-20 1988-07-22 Mitsubishi Electric Corp マイクロプロセツサ
JPH0540624A (ja) * 1991-02-05 1993-02-19 V M Technol Kk 集積回路マイクロプロセツサの命令フエツチ装置
JP3182438B2 (ja) * 1991-10-28 2001-07-03 株式会社日立製作所 データプロセッサ
JP2694799B2 (ja) 1993-09-07 1997-12-24 日本電気株式会社 情報処理装置
JPH07239781A (ja) 1994-02-25 1995-09-12 Hitachi Ltd 情報処理装置
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5889986A (en) * 1997-01-28 1999-03-30 Samsung Electronics Co., Ltd. Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer
JP3498831B2 (ja) 1998-06-30 2004-02-23 松下電器産業株式会社 プログラム制御方法およびその装置

Also Published As

Publication number Publication date
TW530263B (en) 2003-05-01
DE10201439A1 (de) 2002-11-21
US6862680B2 (en) 2005-03-01
KR20020086214A (ko) 2002-11-18
DE10201439B4 (de) 2005-03-03
KR100465250B1 (ko) 2005-01-13
US20020169945A1 (en) 2002-11-14
CN1385782A (zh) 2002-12-18

Similar Documents

Publication Publication Date Title
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
KR20100132032A (ko) 실행되는 명령의 결과를 선택적으로 커밋하는 시스템 및 방법
KR20090094335A (ko) 서브루틴 호를 인지하기 위한 방법들 및 장치
JP5611972B2 (ja) デジタルプロセッサにおいてジャンプ動作を実施するための方法および装置
US7203826B2 (en) Method and apparatus for managing a return stack
JP3558163B2 (ja) 拡張命令語縮約装置
US7984280B2 (en) Storing branch information in an address table of a processor
WO1999041659A1 (en) Microprocessor including multiple register files occupying the same logical space
JPH08320788A (ja) パイプライン方式プロセッサ
JP2002342075A (ja) マイクロプロセッサ
JP3811140B2 (ja) 情報処理装置
JP3532835B2 (ja) データ処理装置およびプログラム変換装置
JP3599499B2 (ja) 中央処理装置
JP2004038338A (ja) 分岐予測機構を有する情報処理装置
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JP4002288B2 (ja) 情報処理装置
JP3493110B2 (ja) 高速分岐処理装置
US20040054874A1 (en) Data processing device with a spare field in the instruction
JP2591325B2 (ja) 分岐制御装置
JP2004062427A (ja) マイクロプロセッサ
JPS6324421A (ja) 情報処理装置
JPS63168730A (ja) 分岐命令処理装置
JPH0553807A (ja) 条件分岐命令先行制御方式
JPH06222919A (ja) パイプライン情報処理装置
JP2006048258A (ja) データプロセッサ