(57)【特許請求の範囲】
【請求項１】
パイプライン処理により命令記憶部内の命令を読み出し、保持し、デコードして実行する情報処理装置において、
前記命令記憶部に読み出し用アドレスを与える命令読出し要求部と、
前記命令記憶部から読み出した命令列を保持する第１の命令バッファ及び第２の命令バッファとを含む命令保持部と、
前記命令保持部が保持する命令をデコードして実行する命令実行ユニットと、
前記命令記憶部から読み出した命令列内の分岐命令を検出する分岐命令検出部と、
前記分岐命令検出部が分岐命令を検出した時に、当該分岐命令の分岐先アドレスを求めるための分岐先アドレスデータを保持する第１の分岐先アドレスデータバッファ及び第２の分岐先アドレスデータバッファとを含む分岐先アドレスデータ保持部とを有し、
処理中の第１の命令列が前記第１又は第２の命令バッファの一方に格納され、前記分岐命令検出部が前記第１の命令列内の分岐命令を検出した時に、当該分岐命令の分岐先アドレスデータに従って、分岐先の第２の命令列を前記第１又は第２の命令バッファの他方に格納し、
前記第１の命令列内の次の分岐命令の分岐先アドレスデータを前記第１又は第２の分岐先アドレスデータバッファの一方に格納し、前記第２の命令列内の分岐命令の分岐先アドレスデータを前記第１又は第２の分岐先アドレスデータバッファの他方に格納することを特徴とする情報処理装置。
【請求項２】
請求項１において、
処理中の前記第１の命令列が、前記第１又は第２の命令バッファの一方に格納され、前記第１の命令列内の分岐命令の分岐先の第２の命令列が、前記第１又は第２の命令バッファの他方に格納され、前記第１の命令列内の次の分岐命令の分岐先アドレスデータが前記第１の分岐先アドレスデータバッファに格納され、前記第２の命令列内の分岐命令の分岐先アドレスデータが、前記第２の分岐先アドレスデータバッファに格納されている状態で、
前記第１の命令列内の分岐命令が実行された結果分岐が確定した場合は、前記第１の命令列、及び前記第１の命令列内の次の分岐命令の分岐先アドレスデータを無効化し、
前記第１又は第２の分岐先アドレスデータバッファの他方に格納されている分岐先アドレスデータに従って、前記第１又は第２の命令バッファの一方に、前記第２の命令列内の分岐命令の分岐先の第３の命令列を格納し、
前記第１又は第２の分岐先アドレスデータバッファの一方に、前記第２の命令列内の次の分岐命令の分岐先アドレスデータを格納すると共に、前記第１又は第２の分岐先アドレスデータバッファの他方に、前記第３の命令列内の分岐命令の分岐先アドレスデータを格納することを特徴とする情報処理装置。
【請求項３】
請求項１において、
処理中の前記第１の命令列が、前記第１又は第２の命令バッファの一方に格納され、前記第１の命令列内の分岐命令の分岐先の第２の命令列が、前記第１又は第２の命令バッファの他方に格納され、前記第１の命令列内の次の分岐命令の分岐先アドレスデータが前記第１の分岐先アドレスデータバッファに格納され、前記第２の命令列内の分岐命令の分岐先アドレスデータが、前記第２の分岐先アドレスデータバッファに格納されている状態で、
前記第１の命令列内の分岐命令が実行された結果分岐しないことが確定した場合は、前記第２の命令列、及び前記第２の命令列内の分岐命令の分岐先アドレスデータを無効化し、
前記第１又は第２の分岐先アドレスデータバッファの一方に格納されている分岐先アドレスデータに従って、前記第１又は第２の命令バッファの他方に、前記第１の命令列内の次の分岐命令の分岐先の第４の命令列を格納し、
前記第１又は第２の分岐先アドレスデータバッファの一方に、前記第１の命令列内の更に次の分岐命令の分岐先アドレスデータを格納すると共に、前記第１又は第２の分岐先アドレスデータバッファの他方に、前記第４の命令列内の分岐命令の分岐先アドレスデータを格納することを特徴とする情報処理装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記命令読み出し要求部からの１回の命令読み出し要求に応答して、前記読み出し用アドレスから複数の連続する命令が前記命令記憶部から読み出され、前記命令保持部に保持されることを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パイプライン処理により命令の読み出し、保持、実行を行なう情報処理装置に関し、特に、分岐命令を含む命令列を実行する場合にも、パイプライン処理の乱れを少なくすることができる情報処理装置に関する。
【０００２】
【従来の技術】
パイプライン処理を採用したマイクロプロセッサ等の情報処理装置において、連続する命令列の読み出しは、それぞれの命令の実行の完了を待たずに次々と行われ、実行ユニットの実行サイクルに空きがない様に命令バッファに保持される。しかし、命令列の中に分岐命令があると、その分岐命令の次に実行する可能性がある分岐先命令が、その分岐命令とアドレスが連続しない命令となり、パイプライン処理が乱れ、情報処理装置の性能の低下を引き起こす場合がある。
【０００３】
このため、情報処理装置が分岐命令を読み出した場合に、前もってその分岐命令の分岐先命令列を読み出し、命令バッファに保持しておくことにより、パイプライン処理の乱れを少なくする方法が考えられている。
【０００４】
図１３は、このようなパイプライン処理を行なう従来の情報処理装置の概略構成図である。従来の情報処理装置は、実行すべき命令列を格納する命令記憶部１１と、命令記憶部１１から読み出した命令を保持し、実行すると予測される命令をデコーダ２１に供給する命令バッファ部１２と、命令バッファ部１２から供給された命令をデコードすると共に、その命令が分岐命令である場合は分岐先アドレス用データ（通常相対アドレス）を分岐先アドレス生成部１６に供給するデコーダ２１を備えた命令実行ユニット２０と、デコーダ２１から受けとった分岐先アドレス用データと、現在のアドレスカウンタ値とをもとに分岐先アドレスを生成する分岐先アドレス生成部１６と、プログラムカウンタの値、又は分岐先アドレス生成部１６から受けとった分岐先アドレス、又は命令実行ユニット２０から要求されるアドレス等のうち、次に読み出すべき命令のアドレスを選択し、命令記憶部１１にそのアドレスを供給して命令読み出し要求を行なう命令読み出し要求部１７とを有する。
【０００５】
このような情報処理装置は、デコーダ２１が命令バッファ部１２から供給される命令をデコードし、その命令が分岐命令であることが分かった場合は、その分岐命令の実行前に、その分岐命令の次に実行する命令の候補である分岐先命令のアドレスを求め、前もって命令記憶部１１からその分岐先命令及びそれに続く命令列を読み出して命令バッファ部１２に保持しておくことができる。
【０００６】
従って、分岐命令の実行により分岐先命令への分岐が決定した時、又は分岐先命令への分岐が予測された時に、その分岐先命令列を命令バッファ部１２から命令実行ユニット２０に取り出すことにより、あまりパイプライン処理を乱すことなく高速に分岐命令列の処理を行うことができる。
【０００７】
この場合、命令バッファ部１２に複数系列の命令バッファを設ければ、分岐が予想される分岐先命令列それぞれを複数系列の命令バッファに保持し、分岐が決定した時に分岐先命令をすぐに命令バッファから取り出すことができので、分岐命令が連続するような場合でも、パイプライン処理の乱れを少なくすることができる。
【０００８】
【発明が解決しようとする課題】
しかし、従来の構成は、分岐命令が多く存在する場合に、分岐が予想される分岐先命令列を全て保持できるように、多数系列の命令バッファを備える。従って、情報処理装置のハードウエアの増大を招くという問題がある。
【０００９】
また、従来の情報処理装置において、分岐命令の分岐先命令列を読み出すためには、分岐命令をデコードして分岐先アドレスを求める必要があったため、分岐命令を読み出してから、それに対応する分岐先命令を読み出すまでに多くの処理時間を要し、複数系列の命令バッファを有効に活用することができなかった。
【００１０】
そこで、本発明の目的は、パイプライン処理によって命令の読み出しを命令実行に先行させて行なう情報処理装置において、命令バッファ等のハードウエアの増大を押えつつ、連続した分岐命令によってパイプライン処理が乱されるのを減らすことができる情報処理装置を提供することにある。
【００１１】
【課題を解決するための手段】
上記の目的を達成するために、本発明の一つの側面は、パイプライン処理により命令記憶部内の命令を読み出し、保持し、デコードして実行する情報処理装置において、前記命令記憶部に読み出し用アドレスを与える命令読出し要求部と、前記命令記憶部から読み出した命令列を保持する複数の命令バッファを含む命令保持部と、前記命令保持部が保持する命令をデコードして実行する命令実行ユニットと、前記命令記憶部から読み出した命令列内の分岐命令を検出する分岐命令検出部と、前記分岐命令検出部が分岐命令を検出した時に、当該分岐命令の分岐先アドレスを求めるための分岐先アドレスデータを保持する複数の分岐先アドレスデータバッファを含む分岐先アドレスデータ保持部とを有し、前記分岐命令検出部が分岐命令を検出した時に、当該分岐命令の分岐先アドレスデータを前記複数の分岐先アドレスデータバッファの１つに格納するか、又は、前記分岐先アドレスデータバッファへの格納に加えて更に当該分岐命令の分岐先の命令列を前記複数の命令バッファの１つに格納することを特徴とする。
【００１２】
上記の目的を達成するために、本発明の別の側面は、パイプライン処理により命令記憶部内の命令を読み出し、保持し、デコードして実行する情報処理装置において、前記命令記憶部に読み出し用アドレスを与える命令読出し要求部と、前記命令記憶部から読み出した命令列を保持する複数の命令バッファを含む命令保持部と、前記命令保持部が保持する命令をデコードして実行する命令実行ユニットと、前記命令記憶部から読み出した命令列内の分岐命令を検出する分岐命令検出部と、前記分岐命令検出部が分岐命令を検出した時に、当該分岐命令の分岐先アドレスを求めるための分岐先アドレスデータを保持する複数の分岐先アドレスデータバッファを含む分岐先アドレスデータ保持部とを有し、処理中の第１の命令列が第１又は第２の命令バッファの一方に格納され、前記分岐命令検出部が前記第１の命令列内の分岐命令を検出した時に、当該分岐命令の分岐先アドレスデータに従って、分岐先の第２の命令列を前記第１又は第２の命令バッファの他方に格納し、前記第１の命令列内の次の分岐命令の分岐先アドレスデータを第１又は第２の分岐先アドレスデータバッファの一方に格納し、前記第２の命令列内の分岐命令の分岐先アドレスデータを前記第１又は第２の分岐先アドレスデータバッファの他方に格納することを特徴とする。
【００１３】
本発明によれば、命令記憶部から読み出した命令列内の分岐命令を検出する分岐命令検出部を有するので、第１又は第２の命令バッファ内に保持された命令のデコードに先んじて、読み出した命令列の中から分岐命令を検出することができる。
【００１４】
また、分岐命令が第１の命令列を処理する場合に、少なくとも処理中の第１の命令列と分岐先の第２の命令列とを格納する第１、第２の命令バッファを備えれば良いので、分岐先の命令列を格納する命令保持部のハードウェアを少なくすることができる。
【００１５】
また、処理中の第１の命令列内の次の分岐命令の分岐先アドレスデータと、分岐先の第２の命令列内の次の分岐命令の分岐先アドレスデータとを第１、第２の分岐先アドレスデータバッファに格納する。このため、分岐命令の実行により、分岐する又は分岐せずのいずれの状態になっても、その格納した分岐先アドレスデータにより、分岐先命令列を即座に読み出すことができ、連続した分岐命令によってパイプライン処理が乱されるのを減らすことができる。
【００１６】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。
【００１７】
図１はパイプライン処理を行なう本発明の実施の形態の情報処理装置の構成図であり、図２は分岐命令を含む命令列の基本形を示す。この命令列の基本形は、命令01から命令08までの命令列Ｃ１と、命令11から命令16までの命令列Ｃ２と、命令41から命令46までの命令列Ｃ３と、命令21から命令28までの命令列Ｃ４とで構成される。また、図２の命令列は、命令列Ｃ２に分岐する分岐命令02と、命令列Ｃ３に分岐する分岐命令04と、命令列Ｃ４に分岐する分岐命令12とを有する。
【００１８】
分岐命令02が分岐した時の分岐命先命令列Ｃ２内に分岐命令12が存在し、分岐命令02が分岐しない時の元の命令列Ｃ１内に次の分岐命令04が存在するのが、最も典型的な分岐命令を含む命令列といえる。次に、図１、図２により本発明の実施の形態の情報処理装置の構成及び各ブロックの動作について説明する。
【００１９】
本実施の形態の情報処理装置は、例えば図２に示した命令列C1〜C4が記憶される命令記憶部１１と、命令記憶部１１から読み出した命令を保持し、分岐予測部１３から供給される分岐予測に基づき、次に実行が予測される命令をデコーダ２１に供給する命令バッファ部１２と、命令バッファ部１２から供給された命令を解読するデコーダ２１と、デコーダ２１から供給される制御信号に従って命令を実行し、図示しないレジスタ等に演算結果を書き込む命令実行部２２とを備えた命令実行ユニット２０と、プログラムカウンタの値、又は分岐先アドレス生成部１６から受けとった分岐先アドレス、又は命令実行ユニット２０から要求されるアドレス等から、次に読み出すべき命令のアドレスを選択手段２３で選択し、命令記憶部１１に命令読み出し要求を行なう命令読み出し要求部１７とを有する。
【００２０】
また、本実施の形態の情報処理装置は、従来と異なり、命令記憶部１１から命令バッファ部１２に命令が読み出され、命令バッファe-1 又はe-2 に格納される段階で分岐命令の存在を検出し、分岐先命令の相対アドレスを分岐先アドレスデータバッファ部１５に伝える分岐命令検出部１４とを有する。更に、本実施の形態の情報処理装置は、分岐命令検出部１４から供給される分岐先命令の相対アドレスと、命令読み出し要求部１７から遅延回路１９を介して供給される当該分岐命令に対するプログラムカウンタの値とを保持する分岐先アドレスデータバッファ部１５と、分岐先アドレスデータバッファ部１５から送られてくるプログラムカウンタの値と相対アドレスとを加算して分岐先アドレスを求める分岐先アドレス生成部１６とを有する。
【００２１】
次に、本実施の形態の情報処理装置の各構成要素について詳細に説明する。命令バッファ部１２は、少なくとも２つの命令バッファe-1 、e-2 を有する。この命令バッファe-1 、e-2 には、ある時点で、図２に示した命令列C1、C2、C3、C4のうちの処理中の命令列と、処理中の命令列内にある分岐命令の分岐先命令列とがそれぞれ格納される。また、命令読み出し要求部１７は、命令記憶部１１に記憶されている命令列を、１度に例えば２命令ずつ読み出す。読み出された命令列は、予め選択された命令バッファe-1 又はe-2 にアドレス順に保持される。
【００２２】
命令バッファe-1 、e-2 に格納される命令列に対応するフェッチアドレスは、命令読み出し要求部１７内のフェッチアドレスレジスタd-1 、d-2 にそれぞれ格納され、アドレスインクレメント手段１８によって、インクレメントされる。
【００２３】
例えば、命令列Ｃ１の命令01、02が命令バッファe-1 に保持されており、次の命令アドレス03が命令読み出し要求部１７のフェッチアドレスレジスタd-1 に保持されている場合は、命令列Ｃ１の命令03、04が読み出され、命令バッファe-1 の先行する命令列01、02の後に順番に保持される。
【００２４】
一方、命令列Ｃ２の命令11、12が命令バッファe-2 に保持されており、次の命令アドレス13が命令読み出し要求部１７のフェッチアドレスレジスタd-2 に保持されている場合は、命令列Ｃ２の命令13、14は、命令バッファe-2 の先行する命令列11、12の後に順番に保持される。
【００２５】
命令バッファ部１２は、分岐予測部１３の分岐予測に基づき、次に実行すると予測される命令を、命令バッファe-1 又はe-2 のいずれかからデコーダ２１に提供する。この場合、分岐予測部１３の分岐予測は、例えば、分岐命令に付加される分岐優先度を示すヒントビットを参照して行う。また、命令バッファ部１２は、分岐命令の分岐の確定などにより、命令バッファe-1 又はe-2 に保持している命令列（例えばＣ１又はＣ２）を使用しないことが明らかになった場合は、新しく読み出す分岐先命令列（例えばＣ４又はＣ３）を保持するために、その時点で保持している命令列を無効にする。なお、命令バッファ部１２には、命令記憶部１１から読み出した命令を命令バッファe-1 、e-2 を経由しないでデコーダ２１に供給するバイパスルート２４が設けられている。これにより、読み出した命令を即座に実行ユニット２０に供給することができる。
【００２６】
分岐命令検出部１４は、命令記憶部１１から読み出した命令列内の分岐命令の存在を検出する。この場合、１度に読み出した２つの命令のうちの一方だけが分岐命令の場合には、その分岐命令の分岐先命令の相対アドレスを分岐先アドレスデータバッファ部１５に送る。
【００２７】
一方、命令記憶部１１から１度に読み出した２つの命令の両方が分岐命令の場合には、それらの分岐命令のなかで最も分岐する可能性が高い分岐先命令の相対アドレスを分岐先アドレスデータバッファ部１５に送る。この場合、分岐の可能性は、分岐命令に付加されたヒントビットによって判断する。なお、読み出した命令の中に分岐命令が１つも存在しない場合には何もしない。
【００２８】
分岐先アドレスデータバッファ部１５は、命令読み出し要求部１７から遅延回路１９を介して送られてくる分岐命令に対応するフェッチアドレスと、分岐命令検出部１４から送られてくる分岐先命令の相対アドレス（以下、フェッチアドレス及び分岐先命令の相対アドレスを分岐先アドレスデータという。）とを受けとる。そして、その時点で保持している分岐先アドレスデータとの優先度に応じて、どちらの分岐先アドレスデータを保持又は破棄するかを決定し、保持することを決定した分岐先アドレスデータを保持する。
【００２９】
例えば、図２に示す命令列において、命令列Ｃ１内の分岐命令02が処理中の場合、第１分岐先アドレスデータレジスタb-1 には、処理中の命令列Ｃ１に含まれる次の分岐命令04の分岐先命令41のアドレスデータが保持される。また、第２分岐先アドレスデータレジスタb-2 には、処理中の命令列Ｃ１の最初の分岐命令02の分岐先命令列Ｃ２に含まれる次の分岐命令12の分岐先命令21のアドレスデータが保持される。
【００３０】
分岐先アドレスデータバッファ部１５は、第１分岐先アドレスデータレジスタb-1 に分岐先アドレスデータが格納される場合には、一方の命令バッファe-1 又はe-2 が分岐の確定などで無効化され次第、分岐先アドレス生成部１６に第１分岐先アドレスデータレジスタb-1 で保持している分岐先アドレスデータを送る。そしてその後、第１分岐先アドレスデータレジスタb-1 に保持していた分岐先アドレスデータを無効化し、次の分岐先アドレスデータを保持できるようにする。
【００３１】
例えば、第１分岐先アドレスデータレジスタb-1 に分岐先命令41のアドレスデータが格納される場合に、分岐命令02が分岐しないことが確定した場合は、命令バッファe-2 に保持している命令列Ｃ２を無効化する。そして、分岐先アドレス生成部１６に分岐先命令41のアドレスデータを送り、その後、第１分岐先アドレスデータレジスタb-1 のアドレスデータを無効化して、命令列Ｃ１の次の分岐先アドレスデータを保持できるようにする。
【００３２】
一方、命令実行部２２による分岐命令02の実行により、その分岐が起こることが確定した場合は、第１分岐先アドレスデータレジスタb-1 に保持している現在処理中の命令列Ｃ１内の次の分岐命令04の分岐先アドレスデータを無効化する。更に、第２分岐先アドレスデータレジスタb-2 に保持している分岐先命令21のアドレスデータを第１分岐先アドレスデータレジスタb-1 に移動する。
【００３３】
なお、命令バッファ部１２に分岐先命令列Ｃ２の読み出しが行なわれていない場合で、分岐命令02の実行によりその分岐が起こらないことが確定した場合は、まだ分岐先命令列Ｃ２を読み出していないので特に無効化は行なわない。
【００３４】
また、命令バッファ部１２に分岐先命令列Ｃ２の読み出しが行なわれていない場合で、分岐命令02の実行によりその分岐が起こることが確定した場合は、分岐予測が失敗した場合である。この場合は、第１分岐先アドレスデータレジスタb-1 と第２分岐先アドレスデータレジスタb-2 の両方に保持している分岐先アドレスデータを無効化し、分岐が起こることが確定した分岐命令02の分岐先命令列Ｃ２を読み出して分岐処理をやり直す。
【００３５】
次に、命令読み出し要求部１７は、２つのフェッチアドレスレジスタd-1 、d-2 を有し、フェッチアドレスレジスタd-1 は、命令バッファ部１２の命令バッファe-1 に保持している命令列の後続の命令のアドレスを保持し、フェッチアドレスレジスタd-2 は、命令バッファe-2 に保持している命令列の後続の命令のアドレスを保持する。アドレスインクリメント手段１８は、命令バッファe-1 、e-2 が命令を２命令ずつ読み出すことに対応し、フェッチアドレスレジスタd-1 、d-2 の値に２を加算する。
【００３６】
命令読み出し要求部１７は、分岐がない場合は、フェッチアドレスレジスタd-1 を２ずつ加算して、連続する命令列を命令バッファe-1 に順番に読み出す。一方、分岐が有る場合、即ち、図２に示した分岐命令02を含む命令列Ｃ１を実行する場合は、フェッチアドレスレジスタd-1 でその分岐命令02に連続するアドレスを２ずつ加算し、その分岐命令02を含む命令列Ｃ１を命令バッファe-1 に順番に読み出す。一方、フェッチアドレスレジスタd-2 でその分岐命令02の分岐先命令11に連続するアドレスを２ずつ加算し、その分岐先命令列Ｃ２を命令バッファe-2 に順番に読み出す。
【００３７】
本実施の形態によれば、命令記憶部１１から読み出した命令列内に分岐命令が存在するか否かを検出する分岐命令検出部１４を有するので、命令バッファ部１２内に保持された命令のデコードに先んじて、読み出した命令列の中から分岐命令を検出することができる。
【００３８】
また、分岐命令がある命令列を処理する場合に、少なくとも処理中の命令列と最初の分岐先命令列とを格納する第１、第２の命令バッファe-1 、e-2 を備えれば良いので、分岐先命令列を格納する命令バッファ部１２のハードウェアを少なくすることができる。
【００３９】
また、処理中の命令列内の次の分岐命令の分岐先アドレスデータと、最初の分岐先命令列内の次の分岐命令の分岐先アドレスデータとを第１、第２の分岐先アドレスデータレジスタb-1 、b-2 に格納する。このため、分岐命令の実行により、分岐する又は分岐せずのいずれの状態になっても、その格納した分岐先アドレスデータにより、分岐先命令列を即座に読み出すことができ、連続した分岐命令によってパイプライン処理が乱されるのを減らすことができる。
【００４０】
図３は、連続して分岐命令がある命令列の具体例である。図３の命令列は、アドレスが01から08まで連続する命令列、アドレスが11から16まで連続する命令列、アドレスが21から28まで連続する命令列、アドレスが31から34まで連続する命令列、アドレスが41から46まで連続する命令列、アドレスが51から55まで連続する命令列、アドレスが61から66まで連続する命令列で構成されている。また、条件分岐命令02の分岐先アドレスは11であり、条件分岐命令02の分岐先命令列はアドレスが11から16まで連続する命令列である。
【００４１】
図４は、図３の命令列の分岐ルートを示す説明図である。例えば、図４の示す分岐ルート（１）は、命令02と命令12で連続して分岐する場合であり、分岐ルート（２）は、命令02で分岐し命令12では分岐しない場合のルートである。また、分岐ルート（３）は、命令02で分岐せず命令04で分岐する場合のルートであり、分岐ルート（４）は、命令02で分岐せず命令04でも分岐しない場合のルートである。以下、分岐ルート（１）〜（４）ごとの動作をタイミングチャートにより説明する。
【００４２】
図５は、本発明の実施の形態の情報処理装置で図４に示した分岐ルート（１）を実行した場合のタイミングチャートである。図５の各サイクルのＰ、Ｔ、Ｃ、Ｄ、Ｅ、Ｗの記号は、１つの命令に対するパイプライン処理の５つのステージを意味し、まず、各ステージの処理の内容について説明する。
【００４３】
フェッチ要求ステージ（P ステージ）は、命令読み出し要求部１７が、分岐先アドレス生成部１６又は命令実行ユニット２０から提供されるアドレスや、アドレスインクリメント手段１８によってインクリメントされたアドレスから、読み出す命令のアドレスを選択し、命令記憶部１１に命令の読み出し要求を行うパイプラインステージである。また、キャッシュステージ（T ステージ）は、命令記憶部１１の内部において、フェッチ要求されたアドレスの命令を取り出す準備を行なうパイプラインステージである。
【００４４】
命令取り出しステージ（C ステージ）は、命令記憶部１１から読み出した命令を命令バッファe-1 、e-2 に保持し、読み出した命令中に分岐命令が存在するかを分岐命令検出部１４によりチェックし、分岐命令が存在する場合には、分岐先アドレスデータバッファ部１５に分岐先命令の相対アドレスを送ると共に、次の命令を読み出すために、読み出した命令をバイパスルートを介してデコーダ２１に送るパイプラインステージである。
【００４５】
デコードステージ（D ステージ）は、デコーダ２１において命令バッファ部１２から受けとった命令を解読し、制御信号を生成するパイプラインステージである。また、実行ステージ（E ステージ）は、デコーダ２１で生成した制御信号を基に、命令実行部２２において命令の実行を行うパイプラインステージである。この実行ステージで、分岐命令の分岐の判定が行われる。また、書き込みステージ（W ステージ）は、命令の実行により得られた結果をレジスタ等に書き込むパイプラインステージである。
【００４６】
上記の５つのステージのうち、実行ステージＥが連続して実行されることにより、パイプライン処理が乱されることなく行われ、命令実行ユニット２０の資源を最も有効に利用することができる。
【００４７】
次に、図５のタイミングチャートについて説明する。図５は、図４の分岐ルート（１）の場合のタイミングチャートであり、分岐命令02と分岐命令12で連続して分岐する場合である。
【００４８】
フェッチアドレスレジスタd-1 内のアドレスに従い、命令01、02に対して、サイクル１で命令フェッチ要求が行なわれ（P ステージ）、サイクル２で命令の取り出し準備が行われる（T ステージ）。そして、命令01、02はサイクル３で命令記憶部１１から読み出され、命令バッファe-1 、e-2 は両方とも空いているので、命令バッファe-1 に格納される。この時、フェッチアドレスレジスタd-1 は、アドレスインクリメント手段１８により＋２され、命令01、02に連続するアドレス03を保持する。
【００４９】
また、サイクル３において、命令02は分岐命令検出部１４により分岐命令であることが検出され、分岐命令02の分岐先アドレスデータは、第１分岐先アドレスデータレジスタb-1 に保持される（C ステージ）。
【００５０】
図６は、サイクル３が終わった時点の命令バッファ等の内容を示す説明図である。命令列01〜08は、フェッチアドレスレジスタd-1 に対応する命令バッファe-1 に格納されるが、サイクル３が終わった時点では命令01、02だけが命令バッファe-1 に格納されている。また、分岐命令02の分岐先命令列11〜16は、フェッチアドレスレジスタd-2 に対応する命令バッファe-2 に格納されるが、サイクル３が終わった時点ではまだ格納されていない。
【００５１】
上記の通り、サイクル３では、分岐先アドレスデータレジスタb-1 には、その時点で実行中の命令列01〜08に含まれる最初の分岐命令02の分岐先アドレスデータ（命令11のアドレスデータ）が保持される。但し、分岐先アドレスデータレジスタb-1 に保持されている分岐先命令11のアドレスデータは、その後フェッチアドレスレジスタd-2 に保持されるので、後続のサイクルで無効化される。そして、現在実行中の命令列01〜08の次の分岐命令04の分岐先命令41のアドレスデータが、新たに分岐先アドレスデータレジスタb-1 に保持される。分岐命令02が分岐するか否かの最終決定は、サイクル６のE ステージまで待つ必要がある。
【００５２】
一方、分岐先アドレスデータレジスタb-2 には、その時点で読み出しが行われている分岐先命令列11〜16に含まれる最初の分岐命令12の分岐先アドレスデータが保持される。ただし、サイクル３では分岐命令12がまだ読み出されていないので保持されるデータはなく、後続のサイクルで、分岐命令12の分岐先命令21のアドレスデータが、分岐先アドレスデータレジスタb-2 に保持される。
【００５３】
次に、図５のサイクル４では、分岐先アドレス生成部１６が、分岐先アドレスデータレジスタb-1 の分岐先相対アドレスとフェッチアドレスレジスタd-1 からのカレントアドレスとから、分岐命令02の分岐先アドレス11を算出し、フェッチアドレスレジスタd-2 に格納する。そして、命令読み出し要求部１７が、フェッチアドレスレジスタd-2 のアドレスにもとづいて、分岐先命令11、12の読み出し要求を行なう。その直後に、アドレスインクリメント手段１８でフェッチアドレスレジスタd-2 のアドレスを＋２して、分岐先命令11、12に連続する命令アドレス13をフェッチアドレスレジスタd-2 に保持する。また、前述の通り、第１分岐先アドレスデータレジスタb-1 は、使用済の分岐命令02の分岐先アドレスデータを無効化し、新たに読み出した分岐命令04の分岐先命令41のアドレスデータを保持する。
【００５４】
サイクル４で分岐先命令11、12のフェッチ要求（P ステージ）を行うまでは、サイクル２、３において、分岐命令02に連続する命令03、04及び命令05、06のフェッチ要求（P ステージ）を毎サイクル行なう。そして、分岐先命令11、12のフェッチ要求（P ステージ）が行なわれた後の５、６サイクルでは、命令06に連続する命令07、08のフェッチ要求と、分岐先命令11、12に連続する命令13、14のフェッチ要求とを交互に行なう。
【００５５】
この場合、分岐先命令11に連続する命令列は、空いている命令バッファe-2 に格納される。但し、命令バッファe-2 が空いていても、分岐命令02の分岐可能性が低い場合は、分岐命令02の分岐先アドレスデータを第１分岐先アドレスデータレジスタb-1 に格納するだけで、分岐命令02の分岐先命令列を命令バッファe-2 に格納しなくても良い。
【００５６】
サイクル５において分岐命令02がD ステージに進み、例えば、分岐命令02に付加されたヒントビットにより、分岐命令02が分岐すると予測される場合は、命令バッファe-1 に保持している命令02に連続する命令列03〜06のかわりに、命令バッファe-2 に読み出された分岐先命令列11、12を、後続のサイクルでD ステージに提供する。しかし、図５の命令列の場合は、サイクル６の開始時点でまだ分岐先命令列11、12が命令バッファe-2 に読み出されていないため、次のサイクル７から、分岐先命令列11、12をD ステージに提供する。
【００５７】
サイクル６になると、分岐命令12が命令記憶部１１から読み出され（Ｃステージ）、分岐命令検出部１４により分岐命令であることが検出され、分岐命令12の分岐先命令21のアドレスデータが第２分岐先アドレスデータレジスタb-2 に保持される。この時点では、２つの命令バッファe-1 、e-2 が使用されているので、新たな分岐先命令列を保持することができず、どちらかの命令バッファe-1 、e-2 が無効化され空きが生じるまで、第２分岐先アドレスデータレジスタb-2 のアドレスデータは保持される。
【００５８】
この時点が、本実施の形態例の最も特徴的な状態である。即ち、現在処理中の命令列01〜08がフェッチアドレスレジスタd-1 により命令バッファe-1 に格納され、分岐命令02の分岐先命令列11〜16がフェッチアドレスレジスタd-2 により命令バッファe-2 に格納され、処理中の命令列01〜08の次の分岐命令04の分岐先アドレスデータが第１分岐先アドレスデータレジスタb-1 に格納され、分岐先命令列11〜16の次の分岐命令12の分岐先アドレスデータが第２分岐先アドレスデータレジスタb-2 に格納されている。そして、サイクル６における分岐命令02の実行ステージＥの結果を待っている。
【００５９】
そこで、サイクル６では、デコードされた分岐命令02がE ステージに進み、分岐の有無の判定が行なわれる。図４のルート（１）に従って、命令11に分岐することが確定すると、新しく分岐先命令を読み出せるように、命令02に連続する命令列03〜08に関連するフェッチアドレスレジスタd-1 及び命令バッファe-1 を無効化し、更に、分岐命令04の分岐先アドレスデータを保持している第１分岐先アドレスデータレジスタb-1 を無効化する。そして、第２分岐先アドレスデータレジスタb-2 に保持している分岐命令12の分岐先命令21のアドレスデータを、第１分岐先アドレスデータレジスタb-1 に転送する。
【００６０】
図７は、サイクル６が終わった時点の命令バッファ等の内容を示す説明図である。サイクル６では、分岐命令02が命令11に分岐することが確定するので、命令バッファe-1 に保持している命令02に連続する命令列03〜06を無効化する。更に、第１分岐先アドレスデータレジスタb-1 のデータから生成される分岐先アドレス(21)をフェッチアドレスレジスタd-1 に格納することで、その後命令バッファe-1 に、命令21から連続する命令列21〜28を格納できる状態にする。
【００６１】
また、前述のように、第２分岐先アドレスデータレジスタb-2 に保持されている分岐命令12の分岐先命令21のアドレスデータは、第１分岐先アドレスデータレジスタb-1 に転送されている。そして、後続のサイクルで、第１分岐先アドレスデータレジスタb-1 には、処理中の命令列11〜16内の次の分岐命令14の分岐先命令51のアドレスデータが保持され、第２分岐先アドレスデータレジスタb-2 には、分岐先命令列21〜28内の分岐命令22の分岐先命令31のアドレスデータが保持される。
【００６２】
図５に戻り、次のサイクル７では、分岐先アドレス生成部16が、第１分岐先アドレスデータレジスタb-1 に保持されている分岐命令12の分岐先アドレスデータから、分岐先アドレス(21)を計算し、命令読み出し要求部17が、命令列21、22のフェッチ要求を行う。そして、フェッチアドレスレジスタd-1 のアドレスはインクリメントされ、命令21、22に連続するアドレス(23)がフェッチアドレスレジスタd-1 に保持される。また、第１分岐先アドレスデータレジスタb-1 は、保持している分岐先アドレスデータを分岐先アドレス生成部１６に送った後、無効化される。
【００６３】
サイクル８では、命令11が命令実行部22により実行される（Ｅステージ）。この命令11のＥステージは、命令02のＥステージから１サイクル遅れで行われる。なぜなら、命令11のフェッチ開始であるＰステージが遅れてしまい、サイクル７の時点で命令11のＥステージへの移行が間に合わなかったからである。但し、分岐命令02のＥステージが、先行する命令列のために遅れている場合は、分岐命令02のＥステージの次のサイクルで、分岐先命令11のＥステージに移行することができる。この場合は、パイプライン処理にまったく乱れは生じない。
【００６４】
サイクル８では、分岐命令14の分岐先アドレスデータが第１分岐先アドレスデータレジスタb-1 に格納され、分岐命令12がD ステージに進む。分岐命令12に付加されるヒントビットにより、分岐命令12が分岐すると予測される場合は、図４のルート（１）に従って、命令バッファe-2 に保持している命令12に連続する命令列13、14のかわりに、命令バッファe-1 に保持している分岐先命令列21、22を、後続のサイクルからD ステージに提供する。しかし、図５の命令列の場合は、サイクル９の開始時点で、まだ分岐先命令列21、22が命令バッファe-1 に読み出されていないため、次のサイクル１０から、分岐先命令列21、22をD ステージに提供する。
【００６５】
サイクル９では、分岐命令22が命令記憶部１１から読み出され、分岐命令検出部１４により分岐命令であることが検出され、分岐命令22の分岐先アドレスデータが第２分岐先アドレスデータレジスタb-2 に保持される。そこで、デコードされた分岐命令12がE ステージに進み、分岐の有無の判定が行なわれる。ここの例では、命令21に分岐することが確定するので、第１分岐先アドレスデータレジスタb-1 に保持している分岐命令14の分岐先アドレスデータを無効化する。そして、分岐命令22の分岐先アドレスデータを第２分岐先アドレスデータレジスタb-2 から第１分岐先アドレスデータレジスタb-1 に転送して保持し、命令12に連続する命令列13〜16に関連するフェッチアドレスレジスタd-2 及び命令バッファe-2 を無効化する。
【００６６】
図８は、サイクル９が終わった時点の命令バッファ等の内容を示す説明図である。サイクル９では、分岐命令12が命令21に分岐することが確定するので、命令バッファe-2 に保持している命令12に連続する命令列13、14を無効化する。更に、第１分岐先アドレスデータレジスタb-1 のデータから生成される分岐先アドレス(31)をフェッチアドレスレジスタd-2 に格納することで、その後、命令バッファe-2 に、命令31から連続する命令列を格納できる状態にする。
【００６７】
また、第２分岐先アドレスデータレジスタb-2 に保持されている分岐命令22の分岐先命令31のアドレスデータは、第１分岐先アドレスデータレジスタb-1 に転送されている。そして、後続のサイクルで、第１分岐先アドレスデータレジスタb-1 には、実行中の命令列21〜28内の次の分岐命令24の分岐先アドレスデータが保持され、第２分岐先アドレスデータレジスタb-2 には、分岐先命令列31〜34内の分岐命令32の分岐先アドレスデータが保持される。
【００６８】
図５に戻り、次のサイクル１０において、分岐先アドレス生成部16が、分岐命令22の分岐先アドレスデータより、分岐先アドレスを計算する。そして、命令読み出し要求部17が、分岐先命令31、32のフェッチ要求を行う。これ以降は上記の処理とほぼ同様であるが、サイクル１２で分岐命令22がE ステージに進み、分岐しないことが確定するので、命令バッファe-2 に保持している命令31、32を無効化し、サイクル１３〜２０において命令列23〜28のパイプライン処理を行う。
【００６９】
パイプライン処理を高速に実行するためには、前述の通り、実行ステージ（E ステージ）を連続させることが重要である。本実施の形態の情報処理装置は、分岐命令が分岐すると予測した場合において、その分岐命令が予測どおりに分岐する場合は、通常、その分岐命令に十分先行して命令フェッチが行われているので、Ｅステージの空き時間、即ち分岐ペナルティはない。一方、その分岐命令が予測に反して分岐しなかった場合は、分岐命令のＥステージの後に分岐先命令のデコードステージ（Ｄステージ）が行われるので、分岐ペナルティは１になる。
【００７０】
ただし、分岐命令のＥステージが早く行われ、分岐先命令のフェッチ要求ステージ（Ｐステージ）が遅れた場合は、分岐ペナルティが１になる。また、命令バッファe-1 、e-2 に読み出した最初の命令が分岐命令の場合は、分岐先命令のＥステージは最も遅れ、分岐ペナルティは最悪の２になる。
【００７１】
同様に、本実施の形態の情報処理装置は、分岐命令が分岐しないと予測した場合において、その分岐命令が予測どおりに分岐しない場合は、通常、その分岐命令に十分先行して命令フェッチが行われているので、分岐ペナルティはない。一方、その分岐命令が予測に反して分岐した場合は、分岐命令のＥステージの後に分岐先命令のＤステージが行われるので、分岐ペナルティは１になる。
【００７２】
ただし、命令バッファe-1 、e-2 に読み出した最初の命令が分岐命令の場合は、分岐先命令のＥステージは最も遅れ、分岐ペナルティは最悪の２になる。
【００７３】
図５に示した分岐ルート（１）の場合、命令02による１番目の分岐に関して生じる分岐ペナルティは、図示される通り、サイクル７における１サイクル期間であり、命令12による２番目の分岐に関して生じる分岐ペナルティは、サイクル１０における１サイクル期間であり、命令22による３番目の分岐（この例では非分岐）に関して生じる分岐ペナルティは、サイクル１３における１サイクル期間である。
【００７４】
図９は、図４の分岐ルート（２）の場合のタイミングチャートであり、分岐命令02で分岐し、分岐命令12で分岐しない場合である。分岐命令02で分岐するのは分岐ルート（１）と同様であり、分岐命令12で分岐しない場合の動作は、分岐ルート（１）の分岐命令22で分岐しない場合の動作と同様である。即ち、図９の分岐命令12がサイクル９の実行ステージ（Ｅステージ）で分岐しないことが確定した場合に、命令バッファe-1 に読み出していた分岐先命令列21、22を無効化し、後続の命令列13〜16を実行する。
【００７５】
分岐ルート（２）の場合は、分岐ルート（１）の場合と同様に、命令02による１番目の分岐に関して生じる分岐ペナルティは、サイクル７における１サイクル期間であり、命令12による２番目の分岐に関して生じる分岐ペナルティは、サイクル１０における１サイクル期間であり、命令14による３番目の分岐に関して生じる分岐ペナルティは、サイクル１３における１サイクル期間である。
【００７６】
図１０は、図４の分岐ルート（３）の場合のタイミングチャートであり、分岐命令02で分岐せず、分岐命令04で分岐する場合である。分岐命令02で分岐しない場合の動作は、分岐ルート（１）の分岐命令22で分岐しない場合の動作と同様であり、分岐命令04で分岐する場合の動作は、分岐ルート（１）の分岐命令02で分岐する場合の動作と同様である。
【００７７】
分岐ルート（３）の場合も、分岐ルート（１）、（２）の場合と同様に、命令02による１番目の分岐に関して生じる分岐ペナルティは、サイクル７における１サイクル期間であり、命令04による２番目の分岐に関して生じる分岐ペナルティは、サイクル１０における１サイクル期間であり、命令42による３番目の分岐に関して生じる分岐ペナルティは、サイクル１３における１サイクル期間である。
【００７８】
図１１は、図１０の分岐ルート（３）の場合において、サイクル６が終わった時点の命令バッファ等の内容を示す説明図である。サイクル６では、分岐命令02が命令11に分岐しないことが確定するので、命令バッファe-2 に保持している命令列11、12を無効化する。そして、第１分岐先アドレスデータレジスタb-1 のデータから生成される分岐先アドレス(41)を、フェッチアドレスレジスタd-2 に格納することで、その後、命令バッファe-2 に、命令41から連続する命令列を格納できる状態にする。
【００７９】
また、第２分岐先アドレスデータレジスタb-2 に保持されている分岐命令12の分岐先命令21のアドレスデータが無効化され、後続のサイクルで、第２分岐先アドレスデータレジスタb-2 に分岐命令42の分岐先命令61のアドレスデータが保持される。
【００８０】
図１２は、図４の分岐ルート（４）の場合のタイミングチャートであり、分岐命令02、04で分岐しない場合である。分岐命令02で分岐しないのは分岐ルート（３）と同様であり、分岐命令04で分岐しない場合の動作は、分岐ルート（１）の分岐命令22で分岐しない場合の動作と同様である。
【００８１】
分岐ルート（４）の場合、命令02による１番目の分岐に関して生じる分岐ペナルティは、サイクル７における１サイクル期間であり、命令04による２番目の分岐に関して生じる分岐ペナルティは、サイクル９における１サイクル期間である。
【００８２】
このように本発明の実施の形態の情報処理装置によれば、命令記憶部１１から読み出した命令列内に分岐命令が存在するか否かを検出する分岐命令検出部１４を有するので、命令バッファ部１２内に保持された命令のデコードに先んじて、読み出された命令列の中から分岐命令を検出することができる。
【００８３】
また、分岐命令がある命令列を処理する場合に、少なくとも処理中の命令列と最初の分岐先命令列とを格納する第１、第２の命令バッファe-1 、e-2 を備えれば良いので、分岐先命令列を格納する命令バッファ部１２のハードウェアを少なくすることができる。
【００８４】
また、処理中の命令列内の次の分岐命令の分岐先アドレスデータと、最初の分岐先命令列内の次の分岐命令の分岐先アドレスデータとを第１、第２の分岐先アドレスデータレジスタb-1 、b-2 に格納しているので、分岐命令の実行により、分岐する又は分岐せずのいずれの状態になっても、その格納した分岐先アドレスデータにより、分岐先命令列を即座に読み出すことができ、連続した分岐命令によってパイプライン処理が乱されるのを減らすことができる。
【００８５】
なお、本実施の形態では、命令バッファe-1 、e-2 と分岐先アドレスデータレジスタb-1 、b-2 がそれぞれ２個ずつの場合について説明したが、それらは２個ずつに限定されるものではなく、３個以上の複数個であっても良い。
【００８６】
上記の実施の形態例について、更に整理すると、請求項に記載の発明に加えて以下の通りである。但し、本発明が以下のものに限定されることはない。
【００８７】
（１）パイプライン処理により命令記憶部内の命令を読み出し、保持し、デコードして実行する情報処理装置において、
前記命令記憶部に読み出し用アドレスを与える命令読出し要求部と、
前記命令記憶部から読み出した命令列を保持する複数の命令バッファを含む命令保持部と、
前記命令保持部が保持する命令をデコードして実行する命令実行ユニットと、前記命令記憶部から読み出した命令列内の分岐命令を検出すると共に、分岐命令の分岐予測の情報を検出する分岐命令検出部と、
前記分岐命令検出部が分岐命令を検出した時に、当該分岐命令の分岐先アドレスを求めるための分岐先アドレスデータを保持する複数の分岐先アドレスデータバッファを含む分岐先アドレスデータ保持部とを有し、
前記分岐命令検出部が分岐命令を検出した時に、当該分岐命令の分岐先アドレスデータを前記複数の分岐先アドレスデータバッファの１つに格納するか、又は、前記分岐先アドレスデータバッファへの格納に加えて更に当該分岐命令の分岐先の命令列を前記複数の命令バッファの１つに格納することを特徴とする情報処理装置。
【００８８】
（２）上記（１）において、
前記分岐命令検出部が検出した分岐命令の分岐予測の情報に従って、前記分岐先アドレスデータ保持部が当該分岐命令の分岐先アドレスデータを保持するか否かが選択されることを特徴とする情報処理装置。
【００８９】
（３）上記（１）において、
前記分岐命令検出部が検出した分岐命令の分岐予測の情報に従って、前記命令保持部が当該分岐命令の分岐先の命令列を取り込むか否かが選択されることを特徴とする情報処理装置。
【００９０】
（４）上記（１）において、
前記分岐命令検出部により分岐命令が所定の高い確率で分岐しないと予測された場合、
前記分岐先アドレスデータ保持部は、当該分岐命令の分岐先アドレスデータを保持せず、前記命令保持部は、当該分岐命令の分岐先の命令列を取り込まないことを特徴とする情報処理装置。
【００９１】
（５）上記（１）において、
前記分岐先アドレスデータ保持部が、第１の分岐命令の分岐先アドレスデータを保持している場合に、前記分岐命令検出部が、前記第１の分岐命令より分岐の可能性が高い第２の分岐命令を検出した場合は、
前記分岐先アドレスデータ保持部は、前記第１の分岐命令の分岐先アドレスデータを無効化し、前記第２の分岐命令の分岐先アドレスデータを保持することを特徴とする情報処理装置。
【００９２】
（６）上記（１）において、
前記命令保持部の命令バッファが空いている時において、前記分岐命令検出部が第１の分岐可能性を有する第１の分岐命令を検出した場合は、前記第１の分岐命令の分岐先命令列を前記命令保持部に取り込むことなく、前記分岐先アドレスデータ保持部が第１の分岐命令の分岐先アドレスデータを保持し、
前記分岐命令検出部が前記第１の分岐可能性より高い第２の分岐可能性を有する第２の分岐命令を検出した場合は、前記第２の分岐命令の分岐先命令列を前記命令保持部に取り込むことを特徴とする情報処理装置。
【００９３】
なお、本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００９４】
【発明の効果】
以上、本発明によれば、命令記憶部より読み出した命令を命令バッファに格納する前に分岐命令の存在を検出し、分岐命令が存在した場合に、検出した分岐命令の分岐先アドレスデータを保持することにより、命令バッファ等のハードウエアの増大を押えつつ、連続した分岐命令により生じるパイプラインの乱れを減らすことができる。
【図面の簡単な説明】
【図１】本発明の実施の形態の情報処理装置の構成図である。
【図２】分岐命令を含む命令列の基本形の説明図である。
【図３】情報処理装置で処理される命令列の例である。
【図４】図３の命令列の分岐ルートを示す説明図である。
【図５】図４の分岐ルート（１）の場合のタイミングチャートである。
【図６】分岐ルート（１）のサイクル３における命令バッファの内容を示す説明図である。
【図７】分岐ルート（１）のサイクル６における命令バッファの内容を示す説明図である。
【図８】分岐ルート（１）のサイクル９における命令バッファの内容を示す説明図である。
【図９】図４の分岐ルート（２）の場合のタイミングチャートである。
【図１０】図４の分岐ルート（３）の場合のタイミングチャートである。
【図１１】分岐ルート（３）のサイクル６における命令バッファの内容を示す説明図である。
【図１２】図４の分岐ルート（４）の場合のタイミングチャートである。
【図１３】従来の情報処理装置の概略構成図である。
【符号の説明】
１１  命令記憶部
１２  命令バッファ部
１３  分岐予測部
１４  分岐命令検出部
１５  分岐先アドレスデータバッファ部
１６  分岐先アドレス生成部
１７  命令読み出し要求部
１８  アドレスインクリメント手段
１９  遅延回路
２０  命令実行ユニット
２１  デコーダ
２２  命令実行部
【図１】
0004049490.tif 000002
【図２】
0004049490.tif 000003
【図３】
0004049490.tif 000004
【図４】
0004049490.tif 000005
【図５】
0004049490.tif 000006
【図６】
0004049490.tif 000007
【図７】
0004049490.tif 000008
【図８】
0004049490.tif 000009
【図９】
0004049490.tif 000010
【図１０】
0004049490.tif 000011
【図１１】
0004049490.tif 000012
【図１２】
0004049490.tif 000013
【図１３】
0004049490.tif 000014