命令を記憶する記憶部と、前記記憶部が記憶する命令を取得する命令フェッチ要求に基づいて前記記憶部から取得された命令を保持する命令バッファと、前記命令バッファが出力した命令をデコードする命令デコード部と、前記命令デコード部がデコードした命令を実行する実行部と、前記実行部が実行した命令のうち、分岐命令のアドレスである分岐命令アドレスと分岐先の命令のアドレスである分岐先命令アドレスとの差を示す距離情報を含む分岐履歴情報を保持し、前記保持した分岐履歴情報を用いて命令フェッチ要求に基づいて取得される命令の分岐予測を行う分岐予測部と、前記命令フェッチ要求を発行するとともに、第1のアドレスに対する命令フェッチ要求を発行してから、前記分岐予測部が前記発行された命令フェッチ要求に基づいて取得される第1の命令の分岐予測結果を出力するまでに、前記第1のアドレスに所定の値を加算した第2のアドレスに対する命令フェッチ要求を発行する制御部とを有し、前記分岐予測部が前記第1の命令の分岐予測結果が分岐成立であると予測した場合、前記第2のアドレスに対する命令フェッチ要求に対応するアドレスに前記分岐成立であると予測された分岐先命令アドレスが含まれると前記距離情報に基づいて判断したとき、前記制御部が、前記分岐先命令アドレスに対する命令フェッチ要求を発行せずに、前記第2のアドレスに対する命令フェッチ要求に基づいて前記命令バッファに保持された命令を前記命令デコード部に出力させることを特徴とする演算処理装置。前記制御部は、前記分岐予測部が、前記第1の命令の分岐予測結果が分岐成立であると予測した場合、前記距離情報に基づいて、命令バッファに保持された命令のうち、前記第1のアドレスに係る命令フェッチ要求により保持された命令を無効にすることを特徴とする請求項1記載の演算処理装置。前記分岐予測部が保持する前記分岐履歴情報はさらに、分岐命令アドレス、分岐先命令アドレスを含むことを特徴とする請求項1又は2記載の演算処理装置。命令を記憶する記憶部を有する演算処理装置の制御方法において、前記演算処理装置が有する制御部が、第1のアドレスに対する命令を取得する命令フェッチ要求を発行し、前記演算処理装置が有する命令バッファが、前記記憶部が記憶する命令を取得する命令フェッチ要求に基づいて前記記憶部から取得された命令を保持し、前記演算処理装置が有する実行部が実行した命令のうち、分岐命令のアドレスである分岐命令アドレスと分岐先の命令のアドレスである分岐先命令アドレスとの差を示す距離情報を含む分岐履歴情報を保持し、前記保持した分岐履歴情報を用いて命令フェッチ要求に基づいて取得される命令の分岐予測を行う分岐予測部と、前記制御部が、前記分岐予測部が前記発行された命令フェッチ要求に基づいて取得される第1の命令の分岐予測結果を出力するまでに、前記第1のアドレスに所定の値を加算した第2のアドレスに対する命令フェッチ要求を発行し、前記分岐予測部が前記第1の命令の分岐予測結果が分岐成立であると予測した場合、前記第2のアドレスに対する命令フェッチ要求に対応するアドレスに前記分岐成立であると予測された分岐先命令アドレスが含まれると前記距離情報に基づいて判断したとき、前記制御部が、前記分岐先命令アドレスに対する命令フェッチ要求を発行せずに、前記第2のアドレスに対する命令フェッチ要求に基づいて前記命令バッファに保持された命令を出力させ、前記演算処理装置が有する命令デコード部が、前記命令バッファが出力した命令をデコードし、前記実行部が、前記命令デコード部がデコードした命令を実行することを特徴とする演算処理装置の制御方法。前記演算処理装置の制御方法において、前記分岐予測部が、前記第1の命令の分岐予測結果が分岐成立であると予測した場合、前記距離情報に基づいて、命令バッファに保持された命令のうち、前記第1のアドレスに係る命令フェッチ要求により保持された命令を無効にすることを特徴とする請求項4記載の演算処理装置の制御方法。前記演算処理装置の制御方法において、前記分岐予測部が保持する前記分岐履歴情報はさらに、分岐命令アドレス、分岐先命令アドレスを含むことを特徴とする請求項4又は5記載の演算処理装置の制御方法。前述した従来の分岐予測動作において、命令デコード前に行われる分岐予測の時点では、分岐先予測アドレスと分岐命令アドレスとの差に関する情報がない。そのため、分岐予測結果が分岐成立であり、分岐予測結果の判明前に行われるシーケンシャル方向のN回の命令フェッチリクエストに分岐先予測アドレスに対する命令フェッチリクエストが含まれる場合でも、そのN回の命令フェッチリクエストについてはキャンセルされる。そして、再度分岐先予測アドレスに対する命令フェッチリクエストが発行されるという処理になり、性能が低下するという問題があった。この問題を解決する方法として、分岐予測の時点で分岐先予測アドレスと分岐命令アドレスとの差を計算し、それを利用して分岐予測結果の判明前に行われるシーケンシャル方向のN回の命令フェッチリクエストに分岐先予測アドレスに対する命令フェッチリクエストが含まれるか否かを判断する方法が考えられる。しかしながら、命令アドレスのビット数が多い場合には、分岐先予測アドレスと分岐命令アドレスとの差を計算するための回路の規模が大きくなり、計算する時間もかかり、分岐予測結果の判明と同一のタイミングで計算を行うことは困難である。したがって、分岐予測結果が判明してから、さらに1~数サイクルが経過しないと分岐先予測アドレスと分岐命令アドレスとの差が得られず、命令フェッチの高速化を図ることができない。1つの側面では、本発明の目的は、分岐予測を行う演算処理装置にて、命令バッファに保持されている命令を効率よく利用し、命令フェッチの性能を向上させることにある。演算処理装置の一態様は、命令を記憶する記憶部と、命令フェッチ要求に基づいて記憶部から取得された命令を保持する命令バッファと、命令バッファが出力した命令をデコードする命令デコード部と、命令デコード部がデコードした命令を実行する実行部と、実行部が実行した命令のうち、分岐命令のアドレスである分岐命令アドレスと分岐先の命令のアドレスである分岐先命令アドレスとの差を示す距離情報を含む分岐履歴情報を保持し、保持した分岐履歴情報を用いて命令フェッチ要求に基づいて取得される命令の分岐予測を行う分岐予測部と、命令フェッチ要求を発行する制御部とを有する。制御部は、第1のアドレスに対する命令フェッチ要求を発行してから、分岐予測部が前記発行された命令フェッチ要求に基づいて取得される第1の命令の分岐予測結果を出力するまでに、第1のアドレスに所定の値を加算した第2のアドレスに対する命令フェッチ要求を発行する。分岐予測部が第1の命令の分岐予測結果が分岐成立であると予測した場合、第2のアドレスに対する命令フェッチ要求に対応するアドレスに分岐成立であると予測された分岐先命令アドレスが含まれると距離情報に基づいて判断したとき、制御部が、分岐先命令アドレスに対する命令フェッチ要求を発行せずに、第2のアドレスに対する命令フェッチ要求に基づいて命令バッファに保持された命令を命令デコード部に出力させる。発明の一態様においては、既に発行されている命令フェッチ要求の内に予測された分岐先のアドレスに対応する命令フェッチ要求が含まれる場合には、命令バッファに保持されている命令をそのまま使用するので、命令バッファに保持されている命令を効率よく利用し、命令フェッチの性能を向上させることができる。以下、本発明の実施形態を図面に基づいて説明する。図1は、本発明の一実施形態における演算処理装置CPU:CentralProcessingUnitの構成例を示すブロック図である。演算処理装置10は、命令フェッチ部11、命令実行制御部12、プログラマブルレジスタ13、演算部14、命令キャッシュ部15、データキャッシュ部16、及び2次キャッシュ部17を有する。命令フェッチ部11は、命令キャッシュ部15に命令の取り出しを指示し、その応答として供給された命令を内部の命令バッファに保持する。また、命令フェッチ部11は、命令バッファに保持した命令を命令実行制御部12に供給する。命令実行制御部12は、命令フェッチ部11から供給された命令をデコードし、デコード結果に応じて処理を実行する。デコード結果に応じて実行される処理は、例えば演算部14への命令発行、プログラマブルレジスタ13の読み出しや更新制御、データキャッシュ部16の読み出しや更新制御などである。プログラマブルレジスタ13は、プログラムカウンタPC:ProgramCounter、汎用レジスタGPR:GeneralPurposeRegister、浮動小数点レジスタFPR:FloatingPointRegisterなどのソフトウェアから読み書き可能なレジスタ群である。プログラマブルレジスタ13は、命令実行制御部12からの指示に従って、演算部14へレジスタ値を供給したり演算部14による演算結果を格納したりする。演算部14は、命令実行制御部12からの指示に従って、整数演算、浮動小数点演算、主記憶アドレス演算などの各種演算を行う。命令キャッシュ部15、データキャッシュ部16、及び2次キャッシュ部17は、主記憶18に記憶されているデータの一部を格納する記憶部である。命令フェッチ部11から要求された命令が命令キャッシュ部15に存在すれば、その命令が命令キャッシュ部15から読み出されて供給され、命令キャッシュ部15に存在しなければ、2次キャッシュ部17、主記憶18と順に命令の要求が行われる。同様に、命令実行制御部12から要求されたデータがデータキャッシュ部16に存在すれば、そのデータがデータキャッシュ部16から読み出されて供給され、データキャッシュ部16に存在しなければ、2次キャッシュ部17、主記憶18と順にデータの要求が行われる。図2は、本実施形態における命令制御装置の構成例の概要を示すブロック図である。命令フェッチ部11は、命令キャッシュ部25に命令の出力を指示し、出力された命令を命令バッファに保持し、保持した命令を命令実行制御部が有する命令デコーダ26に供給する。命令フェッチ部11は、命令フェッチ制御部21、分岐予測機構22、命令アドレス制御部23、及び命令バッファ24を有する。命令フェッチ制御部21は、分岐予測機構22から供給される分岐予測結果を利用して命令アドレス制御部23に命令フェッチアドレスの生成を指示する。また、命令フェッチ制御部21は、命令アドレス制御部23から送信される命令フェッチアドレスに対する分岐予測の実行を分岐予測機構22に指示する。また、命令フェッチ制御部21は、命令キャッシュ部25に命令フェッチリクエストを発行するとともに、命令バッファ24の制御を行う。命令フェッチ制御部21による命令バッファ24の制御は、命令フェッチリクエストを発行してから命令バッファが保持している全ての命令が命令デコーダ26に供給されるまで行われる。分岐予測機構22は、過去に実行された分岐命令の情報分岐命令アドレス、分岐先アドレス、分岐の成否、等を分岐履歴として保存し、保存した分岐履歴を用いて分岐予測を行う。分岐予測機構22は、命令フェッチ制御部21から分岐予測の実行が指示されると、命令アドレス制御部23から通知された命令フェッチアドレスを用いて分岐履歴を検索し、その分岐予測結果を命令フェッチ制御部21に通知する。また、分岐予測機構22は、分岐成立と予測した場合には、分岐履歴における分岐先アドレスを分岐先予測アドレスとして命令アドレス制御部23に通知する。命令アドレス制御部23は、命令フェッチ制御部21からの指示に応じて、シーケンシャル方向にアドレス値を所定値だけ増加させた命令アドレス又は分岐予測機構22から供給された分岐先予測アドレスを選択する。命令アドレス制御部23は、選択したアドレスを命令フェッチアドレスとして命令キャッシュ部25及び分岐予測機構22に送信し、その命令フェッチアドレスを命令バッファ24のエントリ毎に保持する。命令バッファ24は、命令フェッチリクエストに対応して命令キャッシュ部25から送信されてきた命令を保持する。なお、シーケンシャル方向にアドレス値を増加させるときの所定値は、1回の命令フェッチリクエストに対して命令キャッシュ部25から転送され命令バッファ24のエントリに保持される命令の量に応じた値である。例えば、命令キャッシュ部25から転送され命令バッファ24のエントリに保持される命令の量が32バイトである場合には、シーケンシャル方向にアドレス値を8命令分である32ずつ増加させれば良い。命令アドレス制御部23及び命令バッファ24は、複数のエントリを有する。各エントリIBR0、IBR1、...、IBR7は、命令フェッチアドレスとして送信された命令アドレスIAD、及びそれに対応する命令IDT、命令アドレスIADが有効であるか否かを示すバリッドビットIADF、命令IDTが有効であるか否かを示すバリッドビットIDTFを含む。各エントリは、保持している命令IDTの命令デコーダ26への供給が完了するとクリアされエントリが無効であることを示すようにバリッドビットIADF、IDTFが制御され、新たな命令フェッチリクエストに使用される。なお、図2においては、8つのエントリIBR0、IBR1、...、IBR7を有する例を示しているが、エントリの数は任意である。また、図2に示した例では、各エントリに2つのバリッドビットIADF、IDTFを設けているが、各エントリに少なくとも1つのバリッドビットを備えていれば良い。命令フェッチの開始から命令が命令デコーダに供給されるまでは、本実施形態に示す例ではIAサイクル、ITサイクル、IMサイクル、IBサイクル、IRサイクル、Dサイクルの処理があり、最短で5サイクルかかる。なお、以下の説明は、IAサイクルの2サイクル後に分岐予測結果が得られるとともに、命令フェッチリクエストに対応する命令が命令キャッシュ部25に存在する場合の例である。IAサイクルでは、命令フェッチ制御部21から命令キャッシュ部25に命令フェッチリクエストが発行され、同時に命令アドレス制御部23から命令キャッシュ部25に命令フェッチアドレスが送信される。また、この命令フェッチリクエストに対応するエントリが割り当てられる。ITサイクルでは、命令キャッシュ部25にて命令フェッチアドレスに応じてタグが検索される。また、命令アドレス制御部23はIAサイクルで生成した命令フェッチアドレスを分岐予測機構22に送信し、分岐予測機構22は、この命令フェッチアドレスを用いて分岐予測を行う。IMサイクルでは、命令キャッシュ部25にてITサイクルで検索されたタグと命令フェッチアドレスとの一致判断が行われる。また、分岐予測機構22は分岐予測結果を命令フェッチ制御部21に送信し、分岐成立と予測した場合には、さらに分岐先予測アドレスを命令アドレス制御部23に送信する。IBサイクルでは、IAサイクルで発行された命令フェッチリクエストに対する命令が命令キャッシュ部25から命令バッファ24に送信される。また、IAサイクルで発行された命令フェッチリクエストについての分岐予測結果が分岐成立であった場合には、分岐先予測アドレスに対する命令フェッチリクエストが命令フェッチ制御部21から命令キャッシュ部25に発行される。同時に、その分岐先予測アドレスが命令フェッチアドレスとして命令アドレス制御部23から命令キャッシュ部25に送信される。IRサイクルでは、IBサイクルで命令バッファ24に送信された命令の有効性を示す信号が命令キャッシュ部25から命令フェッチ制御部21に送信される。また、命令バッファ24から命令デコーダ26に命令が送信される。命令バッファ24のエントリ内のすべての命令が命令デコーダ26に送信されるとそのエントリは開放される。Dサイクルでは、命令デコーダ26で命令のデコードが行われる。ここで、本実施形態では、分岐予測機構が保存する分岐履歴に、分岐命令自身の命令アドレスである分岐命令アドレスと分岐先命令の命令アドレスである分岐先アドレスとがどのくらい離れているかを示す移動距離フラグを持たせる。移動距離フラグは、1サイクル毎にシーケンシャル方向にアドレス値を所定値ずつ増加させて命令フェッチリクエストを順次発行するとした場合に、分岐命令アドレスの命令フェッチリクエストを発行してから分岐先アドレスの命令フェッチリクエストを発行するまでのサイクル数に相当する情報である。例えば、命令バッファのエントリに保持される命令の量がMバイトであるとすると、分岐先アドレスが分岐命令アドレスM×P以上、かつ分岐命令アドレスM×P1未満の場合にはPの値、それ以外の場合には0を移動距離フラグとして使用する。言い換えれば、移動距離フラグは、分岐命令アドレスと分岐先アドレスとの差が一定範囲以内であることを示す情報である。なお、Pは1~NNは、分岐命令アドレスの命令フェッチリクエストを発行してから、分岐予測結果に基づく分岐先アドレスの命令フェッチリクエストが発行されるまでのサイクル数までの任意の整数である。そして、本実施形態では、分岐予測により分岐成立と予測された場合には、分岐予測結果とともに移動距離フラグを命令フェッチ制御部に供給し、移動距離フラグを用いて、以下のように命令バッファの制御を行う。1移動距離フラグが0である場合従来と同様にN回のシーケンシャル方向の命令フェッチリクエストについてキャンセルし、新規に分岐先予測アドレスに対する命令フェッチリクエストを発行する。2移動距離フラグが1である場合すでに発行された命令フェッチリクエストについてキャンセルは行わずに、そのまま使用する。3移動距離フラグがP>1である場合分岐命令アドレスの命令フェッチリクエストを発行した後のP-1回分のシーケンシャル方向の命令フェッチリクエストについてキャンセルし、P回目以降の命令フェッチリクエストについてはそのまま使用する。このように移動距離フラグを分岐履歴に持つことで、分岐予測結果の判明前に行われるN回のシーケンシャル方向の命令フェッチリクエストに分岐先予測アドレスに対する命令フェッチリクエストが含まれるか否かを、分岐予測結果の判明と同時に判断することができる。そして、分岐先予測アドレスに対する命令フェッチリクエストが含まれると判断した場合には、その命令フェッチリクエストについてキャンセルせずにそのまま使用することで、命令フェッチの高速化を図り、性能を向上させることができる。また、分岐命令アドレスと分岐先アドレスとのアドレス値の差を、サイクル数によりコード化して移動距離フラグとして分岐履歴に含ませることで、わずかなデータ量の増分ですみ移動距離フラグの付加に伴うデータ量の増加を抑制できる。次に、本実施形態における命令制御装置の動作について説明する。図3は、本実施形態における命令制御装置での分岐予測動作を説明するための図である。分岐予測を行うには、過去に実行された分岐命令の情報が必要である。命令デコードの結果、命令が分岐命令であることが確定した場合には、命令デコーダから分岐命令制御部31に分岐命令が送信される。分岐命令制御部31は、分岐命令を基に、分岐命令の分岐の成否を調べ、分岐成立の場合には分岐先アドレスの確定を待ってから、その分岐命令に関する分岐命令情報N31を分岐予測機構32に送信する。分岐予測機構32に送信される分岐命令情報N31は、分岐の成否、分岐命令アドレス、分岐先アドレスを含む。分岐予測機構32は、分岐命令制御部31から送信されてきた分岐命令情報N31の分岐命令アドレス及び分岐先アドレスに基づいて、分岐命令アドレスと分岐先アドレスとの差から移動距離フラグを算出する。そして、分岐予測機構22は、図4に示すように、送信されてきた分岐命令情報N31の分岐命令アドレス42及び分岐先アドレス43に加え、算出した移動距離フラグ44を分岐履歴41-1、41-2、...、41-nとして保存する。命令フェッチ制御部33は、IAサイクルで命令キャッシュ部に命令フェッチリクエストを発行するとともに、命令アドレス制御指示N32及び命令バッファ制御指示N33を、命令バッファ命令アドレス制御部34に出力する。命令バッファ命令アドレス制御部34は、命令フェッチリクエストに対応して出力された命令アドレス制御指示N32及び命令バッファ制御指示N33を受けると、命令キャッシュ部に命令フェッチアドレスを出力するとともに、命令キャッシュ部から転送される命令を格納するための命令バッファのエントリを割り当てる。その後のITサイクルで、命令フェッチ制御部33は、命令フェッチリクエストとともに出力された命令フェッチアドレスの通知N35を分岐予測機構32へ行うように命令バッファ命令アドレス制御部34に対して指示する。また、命令フェッチ制御部33は、その命令フェッチアドレスに対する分岐予測指示N34を分岐予測機構32に出力する。分岐予測機構32は、分岐予測指示N34を受けると、命令バッファ命令アドレス制御部34から通知された命令フェッチアドレスを用いて分岐履歴を検索し、その分岐予測結果分岐の成否N36を命令フェッチ制御部33に通知する。分岐予測機構32は、分岐成立と予測した場合には、分岐予測結果N36として分岐履歴における移動距離フラグの内容もあわせて命令フェッチ制御部33に通知する。また、分岐予測機構32は、分岐成立と予測した場合には、分岐履歴における分岐先アドレスを分岐先予測アドレスN37として命令バッファ命令アドレス制御部34に通知する。分岐予測結果が命令フェッチリクエストを発行したNサイクル後に判明する場合、命令フェッチ制御部33は、分岐予測結果を得るまでにN回のシーケンシャル方向での命令フェッチリクエストを発行し、各リクエストに対応させてN個の命令バッファのエントリを既に確保している。命令フェッチ制御部33は、分岐予測元の命令フェッチリクエストについての分岐予測結果を分岐予測機構32から得ると、その分岐予測結果に応じて、次のような制御を行う。A分岐予測結果が分岐不成立であった場合すでに発行されているN回のシーケンシャル方向での命令フェッチリクエストについてキャンセルは行わずに、そのまま使用する。B分岐予測結果が分岐成立であり、かつ移動距離フラグが0である場合すでに発行されているN回のシーケンシャル方向の命令フェッチリクエストについてキャンセルし、そのリクエスト用に確保していた命令バッファのエントリの開放を指示する。また、分岐先予測アドレスに対する命令フェッチリクエストを新規に発行し、そのリクエストに対応する命令バッファのエントリを確保する。C分岐予測結果が分岐成立であり、かつ移動距離フラグが1である場合すでに発行されているN回のシーケンシャル方向での命令フェッチリクエストについてキャンセルは行わない。分岐予測元の命令フェッチリクエストを発行した直後のサイクルで発行されている命令フェッチリクエストを、分岐先予測アドレスに対する命令フェッチリクエストのかわりとして、そのまま使用する。D分岐予測結果が分岐成立であり、かつ移動距離フラグがP1<P≦Nである場合すでに発行されているN回のシーケンシャル方向での命令フェッチリクエストのうち、分岐元の命令フェッチリクエストを発行した後のP-1回分のシーケンシャル方向の命令フェッチリクエストについてキャンセルし、そのリクエスト用に確保していた命令バッファのエントリの開放を指示する。また、P回目以降の命令フェッチリクエストについては、P回目の命令フェッチリクエストを分岐先予測アドレスに対する命令フェッチリクエストのかわりとするようにして、そのまま使用する。前述したA~Dの制御において、命令フェッチリクエストのキャンセル及び命令バッファのエントリの開放は、対応する命令アドレス制御部23及び命令バッファ24のエントリのバリッドビットを制御することにより行われる。図5は、本実施形態における命令制御装置による命令フェッチ動作の一例を示すフローチャートである。図5においては、命令フェッチアドレスがAである命令フェッチリクエストについての分岐予測結果に応じた動作を一例として示している。また、シーケンシャル方向での命令フェッチリクエストではアドレス値を8命令分である32バイト分ずつ増加させ、また、命令フェッチリクエストを発行した2サイクル後に分岐予測結果が判明するものとする。したがって、図5に示した例においては、分岐先アドレスが分岐命令アドレス32バイト以上かつ分岐命令アドレス64バイト未満に相当する場合には、分岐履歴における移動フラグとして1が保存される。また、分岐先アドレスが分岐命令アドレス64バイト以上かつ分岐命令アドレス96バイト未満に相当する場合には、分岐履歴における移動フラグとして2が保存される。それ以外の場合には、分岐履歴における移動距離フラグとして0が保存される。まず、命令フェッチ制御部21が命令キャッシュ部25に命令フェッチリクエストを発行するとともに、命令アドレス制御部23が命令キャッシュ部25に命令フェッチアドレスAを送信し、命令フェッチの要求を行うS11。また、この命令フェッチリクエストに対応するエントリが割り当てられる。ここでは、エントリIBR0が命令フェッチアドレスAに対して割り当てられるものとし、エントリIBR0のバリッドビットIADF、IDTFが有効を示すように設定され、命令キャッシュ部25からの命令IDTがエントリIBR0に格納される。ここで、命令フェッチ制御部21が分岐予測機構22から命令フェッチアドレスAを用いた分岐予測の結果を受け取るまでには2サイクルかかるので、その間に2回分のシーケンシャル方向の命令フェッチリクエストが発行される。すなわち、ステップS11と同様にして、命令フェッチアドレスA32に対する命令フェッチリクエストが発行されS12、その後に命令フェッチアドレスA64に対する命令フェッチリクエストが発行されるS13。また、それぞれの命令フェッチリクエストに対してエントリIBR1、IBR2が割り当てられ、そのバリッドビットIADF、IDTFが有効を示すように制御され、命令フェッチリクエストに対する応答として供給される命令IDTが格納される。命令フェッチ制御部21は、分岐予測機構22から命令フェッチアドレスAを用いた分岐予測の結果を受け取ると、その分岐予測結果が分岐成立である場合には、ステップS15へ進み、分岐成立でない場合には当該分岐予測結果に応じた動作を終了するS14。分岐予測結果が分岐成立である場合に、命令フェッチ制御部21は、分岐予測結果とともに分岐予測機構22から供給された移動距離フラグを用いて以下のような制御を行うS15。移動距離フラグが0である場合には、命令フェッチ制御部21は、2回のシーケンシャル方向の命令フェッチリクエストについてキャンセルし、その命令フェッチリクエストに対して割り当てた命令バッファのエントリIBR1、IBR2を開放するS16。すなわち、命令フェッチ制御部21は、エントリIBR1、IBR2のバリッドビットIADF、IDTFが無効である旨を示すように設定する。また、命令フェッチアドレスを分岐先予測アドレスTGTとする分岐先予測アドレスに対する命令フェッチリクエストを発行し、その命令フェッチリクエストに対応するエントリとして、エントリIBR3を割り当てるS17。分岐先予測アドレスに対する命令フェッチリクエストの応答として供給される命令IDTは、命令バッファのエントリIBR3に格納された後、命令デコーダ26に供給される。このように移動距離フラグが0である場合には、図6Aに示すように、サイクル1で命令フェッチアドレスAに対する命令フェッチリクエストが発行された後、サイクル3で命令フェッチアドレスAについての分岐予測結果が判明すると、この間に発行された2回のシーケンシャル方向の命令フェッチリクエストについてキャンセルされる。そして、サイクル4で分岐先予測アドレスTGTに対する命令フェッチリクエストが発行されて、以降の処理が実行される。また、移動距離フラグが1である場合には、命令フェッチ制御部21は、2回のシーケンシャル方向の命令フェッチリクエストについてのキャンセルは行わない。すなわち、エントリIBR1、IBR2のバリッドビットIADF、IDTFは有効であることを示す状態で維持される。命令フェッチ制御部21は、既に発行されている命令フェッチアドレスA32に対する命令フェッチリクエストを、分岐先予測アドレスTGTに対する命令フェッチリクエストのかわりに使用するS18。また、命令フェッチ制御部21は、既に発行されている命令フェッチアドレスA64に対する命令フェッチリクエストを分岐先予測アドレスTGTの次のアドレスTGT32に対する命令フェッチリクエストのかわりに使用する。図6Bに示すように、サイクル1で命令フェッチアドレスAに対する命令フェッチリクエストが発行された後、サイクル3で命令フェッチアドレスAについての分岐予測結果が判明する。その分岐予測結果が分岐成立かつ移動距離フラグが1である場合には、この間に発行されたシーケンシャル方向の命令フェッチリクエストについてはキャンセルせずに、そのまま使用されて、以降の処理が実行される。これにより、図6Aに示した場合と比較すると、2サイクルの性能向上効果が得られる。また、移動距離フラグが2である場合には、命令フェッチ制御部21は、既に発行されている命令フェッチアドレスA32についてキャンセルし、その命令フェッチリクエストに対して割り当てた命令バッファのエントリIBR1を開放するS19。一方、命令フェッチ制御部21は、既に発行されている命令フェッチアドレスA64に対する命令フェッチリクエストについてはキャンセルせずに、分岐先予測アドレスTGTに対する命令フェッチリクエストのかわりに使用するS20。すなわち、エントリIBR1のバリッドビットIADF、IDTFは無効である旨を示すように設定され、エントリIBR2のバリッドビットIADF、IDTFは有効であることを示す状態で維持される。図6Cに示すように、サイクル1IAサイクルで命令フェッチアドレスAに対する命令フェッチリクエストが発行された後、サイクル3IMサイクルで命令フェッチアドレスAについての分岐予測結果が判明する。その分岐予測結果が分岐成立かつ移動距離フラグが2である場合には、既に発行された1回目のシーケンシャル方向の命令フェッチリクエストについてはキャンセルされ、2回目のシーケンシャル方向の命令フェッチリクエストについてはキャンセルせずにそのまま使用されて、以降の処理が実行される。これにより、図6Aに示した場合と比較すると、1サイクルの性能向上効果が得られる。命令フェッチリクエストについてのキャンセルに係る制御命令フェッチキャンセル制御、及び命令バッファのエントリの開放に係る制御命令バッファキャンセルについて説明する。これらの制御は、命令フェッチ制御部21により実現される。図7は、命令フェッチキャンセル制御の例を示す図である。IAサイクルにおいて命令フェッチリクエストが発行されると、その発行されたリクエストについての処理がどの処理サイクルにいるかを示す情報として、IT_VALID71、IM_VALID72、IB_VALID73が順番にセットされる。また、そのリクエストについての分岐予測結果がIMサイクルにおいて分岐予測機構22から通知されると、命令フェッチ制御部21は、分岐予測結果に基づいて各フラグ74~76をセットする。命令フェッチ制御部21は、分岐成立であると予測された分岐予測結果を受けた場合には、IBサイクル分岐成立予測74をセットする。さらに、命令フェッチ制御部21は、分岐予測結果とともに受けた移動距離フラグの値をデコードし、値が1のときにはIBサイクル移動距離フラグ175をセットし、値が2のときにはIBサイクル移動距離フラグ276をセットする。命令フェッチ制御部21は、1サイクル後のIBサイクルにおいて、この3つのフラグ74~76を使って分岐命令後に発行された2つ命令フェッチリクエストをキャンセルするか否かを制御する。ここで、図6に示したように、分岐命令の処理サイクルがIBサイクルであるとき、分岐予測結果が判明するまでの間に発行されたシーケンシャル方向の命令フェッチリクエストの処理サイクルはIMサイクル及びITサイクルである。IT_VALID71が1、かつ、IBサイクル分岐成立予測74が1、かつ、IBサイクル移動距離フラグ175及びIBサイクル移動距離フラグ276がいずれも0の場合には、ANDゲート論理積演算回路77の入力がすべて1となる。したがって、ANDゲート77により出力されるITサイクル命令フェッチキャンセル信号IFC-ITは1となる。ITサイクル命令フェッチキャンセル信号IFC-ITは、値が1であるときに、今現在ITサイクルにいる命令フェッチリクエストのキャンセルを指示する信号である。また、IM_VALID72が1、かつ、IBサイクル分岐成立予測74が1、かつ、IBサイクル移動距離フラグ175が0の場合には、ANDゲート78の入力がすべて1となる。したがって、ANDゲート78により出力されるIMサイクル命令フェッチキャンセル信号IFC-IMは1となる。IMサイクル命令フェッチキャンセル信号IFC-IMは、値が1であるときに、今現在IMサイクルにいる命令フェッチリクエストのキャンセルを指示する信号である。すなわち、IBサイクル移動距離フラグ175が1の場合には、ITサイクル命令フェッチキャンセル信号IFC-ITとIMサイクル命令フェッチキャンセル信号IFC-IMはいずれも抑止される値が0。また、IBサイクル移動距離フラグ276が1の場合には、IMサイクル命令フェッチキャンセル信号IFC-IMが抑止される値が0。図8は、命令バッファキャンセル制御の例を示す図である。IAサイクルにおいて命令フェッチリクエストが発行されると、その発行された命令フェッチリクエストに対応する命令バッファのエントリが割り当てられる。この命令バッファのエントリ番号IBR_IDは、命令フェッチリクエストの処理サイクルに対応して、IA_IBR_ID81、IT_IBR_ID82、IM_IBR_ID83、IB_IBR_ID84に順番にセットされる。供給されるITサイクル命令フェッチキャンセル信号IFC-ITの値が1である場合には、ITサイクルの命令バッファのエントリ番号であるIT_IBR_ID82が指すエントリに対するキャンセル信号CA0~CA7が処理部85より発行される。同様に、IMサイクル命令フェッチキャンセル信号の値が1である場合には、IMサイクルの命令バッファのエントリ番号であるIM_IBR_ID83が指すエントリに対するキャンセル信号CB0~CB7が処理部86より発行される。処理部85より発行されたキャンセル信号CAi及び処理部86より発行されたキャンセル信号CBiは、ORゲート論理和演算回路87-iに入力され、その演算結果がエントリのキャンセル信号IBRCiとして出力される。なお、iは添え字であり、i=0~7の整数である。エントリのキャンセル信号IBRCiの値が1になると、そのエントリのバリッドビットIADF、IDTFが無効である旨を示すように設定され、エントリはクリアされる。本実施形態によれば、分岐予測結果が判明するのと同じタイミングで、移動距離フラグにより分岐命令アドレスと分岐先アドレスとの差に関する情報が得られる。そのため、分岐予測結果が判明するまでの間に行われるN回のシーケンシャル方向の命令フェッチリクエストに分岐先予測アドレスに対応する命令フェッチリクエストが含まれるか否かを分岐予測結果の判明と同時に判断することが可能となる。これによって、分岐先予測アドレスに対応する命令フェッチリクエストが含まれる場合には、そのリクエストにより命令バッファのエントリに保持された命令をキャンセルせずにそのまま使用する。したがって、命令バッファのエントリをそのまま利用できる可能性が高まり、命令バッファに保持されている命令を効率よく利用し、命令フェッチの性能を向上させることができる。また、分岐予測機構に登録されている移動距離フラグを利用するため、レジスタ相対アドレス指定の分岐命令の場合であっても、命令バッファを有効利用することが可能になる。なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。