(57)【要約】      （修正有）【課題】データのバイパスを制御する回路の回路規模の増加を抑制する。【解決手段】実行制御部２は、デコーダ部１が解読した命令を保持し、実行可能な命令を順次に出力する。メモリ制御部４は、実行制御部２から受けるメモリアクセス命令に基づいてメモリ５にアクセス要求を出力する。第２レジスタ８は、演算実行部３が演算に使用するデータを保持する第１レジスタ７に対応して割り当てられ、メモリ５から読み出されたデータを第１レジスタ７に転送する前に一時的に保持する。メモリ制御部４がメモリアクセス命令に基づいて複数のアクセス要求を出力し、メモリ５から複数回に分けて読み出されるデータを第２レジスタ８に順次に転送する場合、バイパス制御部６は、メモリ５から最後に読み出されるデータが第２レジスタ８に転送された後に第２レジスタ８から演算実行部３へデータをバイパスするタイミングで、実行制御部２に演算命令を出力させる。【選択図】図１
2015201026.tif 000002
【特許請求の範囲】
【請求項１】
命令を解読するデコーダ部と、
前記デコーダ部が解読した命令を保持し、実行可能な命令を順次に出力する実行制御部と、
前記実行制御部から受ける演算の実行を示す演算命令に基づいて演算を実行する演算実行部と、
前記演算実行部で使用するデータを記憶するメモリと、
前記演算実行部が実行する演算に使用するデータを保持する複数の第１レジスタと、
演算に使用する第１レジスタに対応して割り当てられ、前記演算命令または前記メモリアクセス命令の実行により得られるデータを前記第１レジスタに転送する前に一時的に保持する複数の第２レジスタと、
前記第１レジスタと前記第２レジスタとの割り当ての関係を保持し、前記実行制御部により参照されるレジスタ管理部と、
前記実行制御部から受ける前記メモリからデータを読み出すメモリアクセス命令に基づいて前記メモリにアクセス要求を出力するメモリ制御部と、
前記メモリ制御部が前記メモリアクセス命令に基づいて複数の前記アクセス要求を出力し、前記メモリから複数回に分けて読み出されるデータを前記第２レジスタに順次に転送する場合、前記メモリから最後に読み出されるデータが前記第２レジスタに転送された後に前記第２レジスタから前記演算実行部へデータをバイパスするタイミングで、前記実行制御部に前記演算命令を出力させるバイパス制御部を有することを特徴とする演算処理装置。
【請求項２】
前記メモリ制御部は、前記メモリアクセス命令に基づいて、複数のデータ群を含むデータを前記メモリから読み出し、前記複数のデータ群それぞれの前記メモリからの読み出しの開始を示す複数の開始信号を前記バイパス制御部に出力し、
前記バイパス制御部は、前記複数のデータ群に対応する前記開始信号を異なるタイミングで受けた場合、前記第２レジスタから前記演算実行部へのデータのバイパスを許可するバイパス可能信号を、前記メモリ制御部から最後の開始信号を受信してから所定のサイクル後に出力し、全ての前記複数のデータ群に対応する前記開始信号を共通なタイミングで受けた場合、前記バイパス可能信号を前記開始信号の受信に基づいて出力し、
前記実行制御部は、前記バイパス可能信号の受信後、前記第２レジスタから前記演算実行部へのデータのバイパスを可能にするタイミングで前記演算実行部に前記演算命令を出力することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記バイパス制御部は、
複数の前記開始信号の前記共通なタイミングでの受信に基づいて第１セット信号を生成する第１生成回路と、
前記最後の開始信号の受信から前記所定のサイクル後に第２セット信号を生成する第２生成回路と、
前記第１セット信号または前記第２セット信号に基づいて、前記バイパス可能信号を出力する出力回路を有することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記各第２レジスタは、前記メモリから複数回に分けて読み出される前記複数のデータ群のそれぞれを格納する複数の記憶領域を有し、
演算処理装置は、さらに、
前記メモリから前記複数のデータ群が複数回に分けて読み出される場合、前記複数のデータ群のそれぞれを前記複数の記憶領域に格納する複数の書き込み制御信号を前記データ群毎に順次に生成し、前記メモリから前記複数のデータ群が一度に読み出される場合、前記複数の書き込み制御信号を共通なタイミングで生成する書き込み制御部を有することを特徴とする請求項２または請求項３記載の演算処理装置。
【請求項５】
前記メモリは、データを記憶する複数のキャッシュラインを含むデータキャッシュを有し、
前記メモリ制御部は、前記メモリアクセス命令に基づいて前記データキャッシュから読み出すデータが、前記複数のキャッシュラインに跨いで保持される場合、前記キャッシュライン毎に前記アクセス要求を順次に出力することを特徴とする請求項１ないし請求項４のいずれか１項記載の演算処理装置。
【請求項６】
演算処理装置は、さらに、
前記メモリと前記第２レジスタの間に配置され、前記メモリから読み出されるデータを前記第２レジスタに転送する前に一時的に保持する第３レジスタを有し、
前記メモリ制御部がデータを前記メモリから複数回に分けて読み出す場合、前記バイパス制御部は、前記第３レジスタから前記演算実行部へのデータのバイパスを禁止することを特徴とする請求項１ないし請求項５のいずれか１項記載の演算処理装置。
【請求項７】
命令を解読するデコーダ部と、前記デコーダ部が解読した命令を保持し、実行可能な命令を順次に出力する実行制御部と、前記実行制御部から受ける演算の実行を示す演算命令に基づいて演算を実行する演算実行部と、前記演算実行部で使用するデータを記憶するメモリと、前記演算実行部が実行する演算に使用するデータを保持する複数の第１レジスタと、演算に使用する第１レジスタに対応して割り当てられ、前記演算命令または前記メモリアクセス命令の実行により得られるデータを前記第１レジスタに転送する前に一時的に保持する複数の第２レジスタと、前記第１レジスタと前記第２レジスタとの割り当ての関係を保持し、前記実行制御部により参照されるレジスタ管理部を有する演算処理装置の制御方法において、
前記演算処理装置が有するメモリ制御部が、前記実行制御部から受ける前記メモリからデータを読み出すメモリアクセス命令に基づいて前記メモリにアクセス要求を出力し、
前記メモリ制御部が前記メモリアクセス命令に基づいて複数の前記アクセス要求を出力し、前記メモリから複数回に分けて読み出されるデータを前記第２レジスタに順次に転送する場合、前記演算処理装置が有するバイパス制御部が、前記メモリから最後に読み出されるデータが前記第２レジスタに転送された後に前記第２レジスタから前記演算実行部へデータをバイパスするタイミングで、前記実行制御部に前記演算命令を出力させることを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算を実行する演算処理装置は、例えば、先行する命令の実行により得られたデータがレジスタに格納される前に、データを演算器にバイパスさせるバイパス機能を有する。この種の演算処理装置は、先行する命令で使用するレジスタと後続の命令で使用するレジスタとの依存関係を検出し、依存関係がある場合にバイパス機能を有効にする回路を有する。また、この種の演算処理装置が有する倍精度浮動小数点レジスタは、１つの倍精度浮動小数点データまたは２つの単精度浮動小数点データを格納可能である。例えば、倍精度浮動小数点レジスタの上位ビット側に１つの単精度浮動小数点データを格納することで、バイパス機能におけるレジスタの依存関係の検出は、既存の回路を用いて実現可能である。また、この種の演算処理装置は、演算器による演算により得られたデータおよびデータキャッシュから読み出されたデータを一時的に保持するリネーミングレジスタを有する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２３０３３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、倍精度浮動小数点レジスタに格納する２つの単精度浮動小数点データが、データキャッシュにおける互いに異なるキャッシュラインに保持される場合、２つの単精度浮動小数点データは、互いに異なるタイミングでデータキャッシュから読み出される。この場合、各キャッシュラインから読み出されるデータを順次に保持するバッファと、演算器へのデータのバイパスが可能になるタイミングを判定する回路とが演算処理装置に設けられる。しかしながら、新たな回路の追加により、演算処理装置の回路規模は増加する。
【０００５】
本件開示の演算処理装置および演算処理装置の制御方法は、メモリアクセス命令に基づいてデータをメモリから複数回に分けて読み出す場合に、データのバイパスを制御する回路の回路規模の増加を抑制することを目的とする。
【課題を解決するための手段】
【０００６】
一つの観点によれば、演算処理装置は、命令を解読するデコーダ部と、デコーダ部が解読した命令を保持し、実行可能な命令を順次に出力する実行制御部と、実行制御部から受ける演算の実行を示す演算命令に基づいて演算を実行する演算実行部と、演算実行部で使用するデータを記憶するメモリと、演算実行部が実行する演算に使用するデータを保持する複数の第１レジスタと、演算に使用する第１レジスタに対応して割り当てられ、演算命令またはメモリアクセス命令の実行により得られるデータを第１レジスタに転送する前に一時的に保持する複数の第２レジスタと、第１レジスタと第２レジスタとの割り当ての関係を保持し、実行制御部により参照されるレジスタ管理部と、実行制御部から受けるメモリからデータを読み出すメモリアクセス命令に基づいてメモリにアクセス要求を出力するメモリ制御部と、メモリ制御部がメモリアクセス命令に基づいて複数のアクセス要求を出力し、メモリから複数回に分けて読み出されるデータを第２レジスタに順次に転送する場合、メモリから最後に読み出されるデータが第２レジスタに転送された後に第２レジスタから演算実行部へデータをバイパスするタイミングで、実行制御部に演算命令を出力させるバイパス制御部を有する。
【０００７】
別の観点によれば、命令を解読するデコーダ部と、デコーダ部が解読した命令を保持し、実行可能な命令を順次に出力する実行制御部と、実行制御部から受ける演算の実行を示す演算命令に基づいて演算を実行する演算実行部と、演算実行部で使用するデータを記憶するメモリと、演算実行部が実行する演算に使用するデータを保持する複数の第１レジスタと、演算に使用する第１レジスタに対応して割り当てられ、演算命令またはメモリアクセス命令の実行により得られるデータを第１レジスタに転送する前に一時的に保持する複数の第２レジスタと、第１レジスタと第２レジスタとの割り当ての関係を保持し、実行制御部により参照されるレジスタ管理部を有する演算処理装置の制御方法は、演算処理装置が有するメモリ制御部が、実行制御部から受けるメモリからデータを読み出すメモリアクセス命令に基づいてメモリにアクセス要求を出力し、メモリ制御部がメモリアクセス命令に基づいて複数のアクセス要求を出力し、メモリから複数回に分けて読み出されるデータを第２レジスタに順次に転送する場合、演算処理装置が有するバイパス制御部が、メモリから最後に読み出されるデータが第２レジスタに転送された後に第２レジスタから演算実行部へデータをバイパスするタイミングで、実行制御部に演算命令を出力させる。
【発明の効果】
【０００８】
本件開示の演算処理装置および演算処理装置の制御方法は、メモリアクセス命令に基づいてデータをメモリから複数回に分けて読み出す場合に、データのバイパスを制御する回路の回路規模の増加を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】演算処理装置および演算処理装置の制御方法の一実施形態を示す図である。
【図２】演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図３】図２に示す浮動小数点レジスタ部および固定小数点レジスタ部の例を示す図である。
【図４】図２に示すリネーミングレジスタ部の例を示す図である。
【図５】図２に示すレジスタ管理テーブルの例を示す図である。
【図６】図２に示すデータキャッシュからデータをロードする例を示す図である。
【図７】図２に示すバイパス制御部に設けられるセット信号生成回路の例を示す図である。
【図８】バイパス制御部に設けられるバイパス管理テーブルおよびテーブル制御回路の例を示す図である。
【図９】図７および図８に示すバイパス制御部の動作の例を示す図である。
【図１０】図２に示す演算処理装置の動作の例を示す図である。
【図１１】図２に示す演算処理装置の動作の別の例を示す図である。
【図１２】図２に示す演算処理装置の動作のさらなる別の例を示す図である。
【図１３】図２に示す演算処理装置の動作のさらなる別の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態を説明する。
【００１１】
図１は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図１に示す演算処理装置ＯＰＤ１は、デコーダ部１、実行制御部２、演算実行部３、メモリ制御部４、メモリ５、バイパス制御部６、複数の第１レジスタ７、複数の第２レジスタ８およびレジスタ管理部９を有する。
【００１２】
デコーダ部１は、命令バッファ等から受ける命令を解読し、解読した命令を実行制御部２に出力する。実行制御部２は、デコーダ部１により解読された命令を保持し、実行可能な命令を演算実行部３またはメモリ制御部４に順次に出力する。すなわち、実行制御部２は、命令の実行順序を変更するアウトオブオーダ実行を制御する。実行制御部２は、命令が演算の実行を示す演算命令の場合、演算命令を演算実行部３に出力し、命令がメモリ５からデータを読み出すメモリアクセス命令の場合、メモリアクセス命令をメモリ制御部４に出力する。
【００１３】
演算実行部３は、実行制御部２から受ける演算命令に基づいて、第１レジスタ７に格納されたデータを用いて演算を実行する。なお、演算に使用するデータが第２レジスタ８に格納されている場合、演算実行部３は、第１レジスタ７を介することなく、図１に太い破線の矢印で示すバイパス経路を介して第２レジスタ８からデータを受け、演算を実行することが可能である。第２レジスタ８からのデータのバイパスの可否は、バイパス制御部６により判断される。実行制御部２は、バイパス制御部６がバイパスの可能を判断した場合、演算命令をバイパスが可能なタイミングで演算実行部３に投入する。演算実行部３は、演算の実行より得られるデータを第２レジスタ８に出力する。
【００１４】
メモリ制御部４は、実行制御部２から受けるメモリアクセス命令（例えば、ロード命令）に基づいてメモリ５にアクセス要求を出力する。例えば、メモリアクセス命令で読み出すデータが、メモリ５における１つのアドレスが割り当てられた領域に記憶されている場合、メモリ制御部４は、メモリアクセス命令に基づいて１つのアクセス要求を生成する。そして、アクセス要求によりメモリ５から読み出されたデータは、第２レジスタ８に一度で格納される。
【００１５】
一方、メモリアクセス命令で読み出すデータが、メモリ５における複数のアドレスが割り当てられた領域に記憶されている場合、メモリ制御部４は、メモリアクセス命令に基づいて複数のアクセス要求を順次に生成する。そして、複数のアクセス要求によりメモリ５から読み出されるデータは、第２レジスタ８に順次に格納される。すなわち、メモリアクセス命令で読み出すデータが、メモリ５における複数のアドレスが割り当てられた領域に記憶されている場合、ロードデータのタイミングずれが発生する。
【００１６】
メモリアクセス命令に基づいて複数回に分けて読み出されるデータは、最後のアクセス要求に対応してメモリ５から読み出されたデータが第２レジスタ８に格納されたときに、第２レジスタ８内に揃う。換言すれば、メモリアクセス命令で読み出すデータが、複数のアクセス要求によりメモリ５から読み出される場合、第２レジスタ８を利用してデータを待ち合わせることができる。この結果、演算処理装置ＯＰＤ１は、メモリアクセス命令に基づいてデータをメモリ５から複数回に分けて読み出す場合にも、新たな回路を設けることなくデータを待ち合わせることができ、回路規模の増加を抑制することができる。
【００１７】
メモリ５は、演算実行部３で使用するデータを記憶し、アクセス要求に基づいて記憶しているデータを出力する。メモリ５から読み出されるデータは、第２レジスタ８を経由して第１レジスタ７に転送される。
【００１８】
第１レジスタ７の各々は、演算実行部３が実行する演算に使用するデータを保持する。第２レジスタ８の各々は、演算に使用する第１レジスタ７に対応して割り当てられる。第１レジスタ７に対応して割り当てられた第２レジスタ８は、演算命令またはメモリアクセス命令の実行により得られるデータを第１レジスタ７に転送する前に一時的に保持する。
【００１９】
レジスタ管理部９は、第１レジスタ７と第２レジスタ８との割り当ての関係を保持する。実行制御部２は、レジスタ管理部９を参照することで、例えば、命令のオペランドにより指示される第１レジスタ７を割り当てた第２レジスタ８を認識する。例えば、デコーダ部１は、命令を解読した際に、第１レジスタ７を割り当てる第２レジスタ８を決定し、決定した割り当てを示す情報をレジスタ管理部９が有するテーブルに格納する。デコーダ部１が、演算に使用する第１レジスタ７に対応して第２レジスタ８を割り当てることで、第１レジスタ７が命令のオペランドで重複して指示され、依存関係が生じる場合にも、依存関係がないもとのとして演算を実行することができる。この結果、第２レジスタ８を使用しない場合に比べて、演算実行部３による演算の効率を向上することができる。
【００２０】
例えば、バイパス制御部６は、メモリ制御部４から受けるメモリ５のアクセスの状況を示す情報に基づいて、メモリ５から読み出され第２レジスタ８に格納されたデータを演算実行部３にバイパス可能か否かを判定する。また、バイパス制御部６は、実行制御部２から受ける演算実行部３による演算の実行状況を示す情報に基づいて、演算実行部３の演算により得られ第２レジスタ８に格納されたデータを演算実行部３にバイパス可能か否かを判定する。
【００２１】
バイパス制御部６は、メモリ制御部４がメモリアクセス命令に基づいてデータを１回でメモリ５から読み出す場合、データのバイパスが、メモリ５から第２レジスタ８に転送された後に可能になると判断する。この場合、メモリ５から読み出されるデータは、最初のデータでもあり、最後のデータでもある。そして、バイパス制御部６は、第２レジスタ８から演算実行部３へのデータを、最後のデータがメモリ５から第２レジスタ８に転送された後にバイパスするタイミングで、実行制御部２に演算命令を出力させる。
【００２２】
一方、バイパス制御部６は、メモリ制御部４がメモリアクセス命令に基づいてデータをメモリ５から複数回に分けて読み出す場合、データのバイパスが、メモリ５から第２レジスタ８に最後のデータが転送された後に可能になると判断する。そして、バイパス制御部６は、第２レジスタ８から演算実行部３へのデータのバイパスを、最後のデータがメモリ５から第２レジスタ８に転送された後に実行させるタイミングで、実行制御部２に演算命令を出力させる。
【００２３】
以上、図１に示す実施形態では、バイパス制御部６は、メモリ５から読み出されるデータが第２レジスタ８に全て揃った後に、データのバイパスが可能になったことを実行制御部２に通知する。これにより、メモリ５から第２レジスタ８へロードされるデータのタイミングずれが発生する場合にも、既存の第２レジスタ８を利用してデータを待ち合わせることができる。すなわち、新たな回路を設けることなくデータを待ち合わせることができ、演算処理装置ＯＰＤ１の回路規模の増加を抑制することができる。
【００２４】
また、メモリアクセス命令に基づいてデータがメモリ５から１回で読み出されるか複数回に分けて読み出されるかに依存せず、バイパス制御部６は、メモリ５から第２レジスタ８に最後のデータが転送された後にバイパスが可能になると判断する。これにより、バイパス制御部６によるバイパスタイミングの制御を従来と同様に簡易にすることができる。この結果、メモリアクセス命令に基づいてデータがメモリ５から１回で読み出される場合と、複数回に分けて読み出される場合とでバイパスタイミングを変更する場合にも、演算処理装置ＯＰＤ１の回路規模の増加を抑制することができる。さらに、回路規模の増加を抑制することで、演算処理装置ＯＰＤ１の消費電力の増加を抑制することができ、演算処理装置ＯＰＤ１の動作周波数を向上させることができる。
【００２５】
図２は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図２の太い実線の矢印は、ロード命令の実行時における浮動小数点データの転送経路を示す。図２の太い破線の矢印は、ロード命令の実行時における浮動小数点データのバイパス経路を示す。なお、固定小数点データのバイパス経路の図示は省略する。
【００２６】
図２に示す演算処理装置ＯＰＤ２は、命令キャッシュ１０、命令バッファ１２、デコーダ部１４、レジスタ管理テーブル１６、リザベーションステーション１８、アドレス生成部２０、データキャッシュ２２およびバイパス制御部２４を有する。また、演算処理装置ＯＰＤ２は、浮動小数点演算器２６、固定小数点演算器２８、ロードレジスタ３０、リザルトレジスタ３２、３４、リネーミングレジスタ部３６、３８、浮動小数点レジスタ部４０、固定小数点レジスタ部４２およびコミット制御部４４を有する。
【００２７】
例えば、命令キャッシュ１０は、二次命令キャッシュまたはメインメモリ等から転送される命令を格納する一次命令キャッシュである。命令バッファ１２は、命令キャッシュ１０から順次に転送される命令を保持し、保持した命令をデコーダ部１４に順次に転送する。
【００２８】
デコーダ部１４は、命令バッファ１２から転送される命令を順次に解読し、解読した命令に含まれる情報ＩＮＳ（以下、命令情報ＩＮＳと称される）を、リザベーションステーション１８に格納する。例えば、命令情報ＩＮＳは、命令の種別に応じて、リザベーションステーション１８が有するリザベーションステーションＲＳＦＬＴ、ＲＳＦＩＸ、ＲＳＭＡのいずれかに格納される。
【００２９】
デコーダ部１４は、解読した命令が浮動小数点レジスタ部４０内の浮動小数点レジスタをデータの格納先に使用することを示す場合、使用する浮動小数点レジスタを、リネーミングレジスタ部３６内のリネーミングレジスタのいずれかに割り当てる。例えば、デコーダ部１４は、データの格納先に使用する浮動小数点レジスタのレジスタ番号ＲＮと、割り当てるリネーミングレジスタを示すアドレスＵＢＡとを、書き込み要求ＷＥとともにレジスタ管理テーブル１６およびコミット制御部４４に出力する。例えば、アドレスＵＢＡは、”Update Buffer Address”の略称である。リネーミングレジスタ部３６が３２個のリネーミングレジスタを有する場合、アドレスＵＢＡは５ビットである。なお、アドレスＵＢＡは、リザベーションステーション１８にも出力される。浮動小数点レジスタ部４０の例は、図３に示し、リネーミングレジスタ部３６の例は、図４に示す。
【００３０】
同様に、デコーダ部１４は、解読した命令が固定小数点レジスタ部４２内の固定小数点レジスタをデータの格納先に使用することを示す場合、使用する固定小数点レジスタを、リネーミングレジスタ部３８内のリネーミングレジスタのいずれかに割り当てる。例えば、デコーダ部１４は、データの格納先に使用する固定小数点レジスタを示すレジスタ番号ＲＮと、割り当てたリネーミングレジスタを示すアドレスＵＢＡとを、書き込み要求ＷＥとともにレジスタ管理テーブル１６およびコミット制御部４４に出力する。なお、デコーダ部１４は、浮動小数点レジスタ部４０と固定小数点レジスタとを識別可能なレジスタ番号ＲＮおよびアドレスＵＢＡを出力する。固定小数点レジスタ部４２の例は、図３に示し、リネーミングレジスタ部３８の例は、図４に示す。
【００３１】
レジスタ管理テーブル１６は、浮動小数点レジスタ用のテーブルＲＭＴＢＬ１と固定小数点レジスタ用のテーブルＲＭＴＢＬ２とを有する。レジスタ管理テーブル１６は、デコーダ部１４から受けるレジスタ番号ＲＮ、アドレスＵＢＡおよび書き込み要求ＷＥに応じて、テーブルＲＭＴＢＬ１、ＲＭＴＢＬ２のいずれかに格納された情報を更新する。レジスタ管理テーブル１６は、リザベーションステーション１８からの読み出し要求に応じて、テーブルＲＭＴＢＬ１、ＲＭＴＢＬ２に記憶しているアドレスＵＢＡおよびビット値Ｐをリザベーションステーション１８に出力する。レジスタ管理テーブル１６は、コミット制御部４４からのリセット要求ＲＳＴ１に基づいて、テーブルＲＭＴＢＬ１、ＲＭＴＢＬ２のいずれかに登録したアドレスＵＢＡを無効化する。レジスタ管理テーブル１６は、浮動小数点レジスタＦＲとリネーミングレジスタＲＮＦＲとの割り当ての関係を保持し、リザベーションステーションＲＳＦＬＴにより参照されるレジスタ管理部の一例である。レジスタ管理テーブル１６の例は、図５に示す。
【００３２】
リザベーションステーション１８は、３つのリザベーションステーションＲＳＦＬＴ、ＲＳＦＩＸ、ＲＳＭＡを含む。リザベーションステーション１８は、デコーダ部１４が解読した命令（命令情報ＩＮＳ）を保持し、実行可能な命令を順次に出力する実行制御部の一例である。リザベーションステーションＲＳＦＬＴは、浮動小数点データの演算用の命令に含まれる命令情報ＩＮＳを保持する。リザベーションステーションＲＳＦＩＸは、固定小数点データの演算用の命令に含まれる命令情報ＩＮＳを保持する。また、リザベーションステーションＲＳＭＡは、メモリアクセス用の命令に含まれる命令情報ＩＮＳを保持する。
【００３３】
リザベーションステーション１８は、命令情報ＩＮＳに基づいて、レジスタ管理テーブル１６を参照して得られる浮動小数点レジスタ（または固定小数点レジスタ）を割り当てたリネーミングレジスタを示すアドレスＵＢＡおよびビット値Ｐを保持する。保持したビット値Ｐは、命令の実行の完了時にコミット制御部４４から受けるリセット要求ＲＳＴ２に基づいて無効化され、実行が完了した命令のアドレスＵＢＡは、ビット値Ｐの無効化により破棄される。
【００３４】
なお、リザベーションステーション１８は、データを格納する浮動小数点レジスタ（または固定小数点レジスタ）を割り当てたリネーミングレジスタのアドレスＵＢＡを、命令情報ＩＮＳとともにデコーダ部１４から受ける。また、リザベーションステーション１８は、データを読み出す浮動小数点レジスタ（または固定小数点レジスタ）を割り当てたリネーミングレジスタのアドレスＵＢＡを、レジスタ管理テーブル１６から読み出す。以下では、データを格納する浮動小数点レジスタ（または固定小数点レジスタ）は、ディスティネーションレジスタとも称され、データを読み出す浮動小数点レジスタ（または固定小数点レジスタ）は、ソースレジスタとも称される。
【００３５】
リザベーションステーション１８は、レジスタ管理テーブル１６から読み出したアドレスＵＢＡおよびバイパス制御部２４から出力されるバイパス可能信号ＢＰＥＮ（ＢＰＥＮ０−ＢＰＥＮ３１）に基づいて、保持した命令の依存関係を判定する。そして、リザベーションステーション１８は、保持した命令の中から実行可能な演算命令を浮動小数点演算器２６または固定小数点演算器２８に順次に投入する。あるいは、リザベーションステーション１８は、保持した命令の中から実行可能なロード命令またはストア命令をアクセス要求ＭＲＥＱとしてアドレス生成部２０に順次に投入する。ロード命令を示すアクセス要求ＭＲＥＱは、データキャッシュ２２からデータを読み出すメモリアクセス命令の一例である。リザベーションステーション１８は、命令の実行順序を変更するアウトオブオーダ実行を制御する実行制御部の一例である。
【００３６】
リザベーションステーション１８は、浮動小数点演算器２６の演算により得られるデータがリザルトレジスタ３２またはリネーミングレジスタ部３６からバイパス可能な場合、制御信号Ｂ１ＦＰおよびアドレスＢ１ＦＰＵＢＡをバイパス制御部２４に出力する。制御信号Ｂ１ＦＰは、浮動小数点演算器２６が演算を開始するタイミングを示す開始信号である。制御信号Ｂ１ＦＰの出力タイミングは、バイパス制御部２４のバイパス管理テーブルのフラグ領域ＦＬＧ（図８）をセットするタイミングを示す。制御信号Ｂ１ＦＰおよびアドレスＢ１ＦＰＵＢＡの先頭の”Ｂ１”は、制御信号Ｂ１ＦＰおよびアドレスＢ１ＦＰＵＢＡが後述するＢ１サイクルで生成されることを示す。制御信号Ｂ１ＦＰおよびアドレスＢ１ＦＰＵＢＡを受けた場合のバイパス制御部２４の動作は、図１１で説明される。
【００３７】
アドレス生成部２０は、リザベーションステーション１８から出力されるアクセス要求ＭＲＥＱに基づいて、データキャッシュ２２に出力するアクセス要求ＭＲＥＱＣを生成する。アドレス生成部２０は、データキャッシュ２２から浮動小数点データを読み出すアクセス要求ＭＲＥＱＣとともに、制御信号ＡＬＤＬ、ＡＬＤＨおよびアドレスＡＬＤＵＢＡをバイパス制御部２４に出力する。制御信号ＡＬＤＬ、ＡＬＤＨは、データキャッシュ２２からデータのロードを開始するタイミングを示す開始信号の一例であり、例えば、アクセス要求ＭＲＥＱＣに同期して生成される。制御信号ＡＬＤＬは下位４バイトのデータをロードする場合に生成され、制御信号ＡＬＤＨは上位４バイトのデータをロードする場合に生成される。下位４バイトのデータおよび上位４バイトのデータは、データ群の一例である。
【００３８】
制御信号ＡＬＤＬ、ＡＬＤＨおよびアドレスＡＬＤＵＢＡの先頭の”Ａ”は、制御信号ＡＬＤＬ、ＡＬＤＨおよびアドレスＡＬＤＵＢＡが後述するＡサイクルで生成されることを示す。アドレスＡＬＤＵＢＡの値は、バイパス可能なデータが転送されるリネーミングレジスタＲＮＦＲ（図４）を示す。アドレスＡＬＤＵＢＡのビット数は、６４個のリネーミングレジスタＲＮＦＲを識別可能な６ビットである。
【００３９】
アクセス要求ＭＲＥＱに基づいて、データキャッシュ２２内の１つのキャッシュラインからデータが読み出し可能な場合、アドレス生成部２０は、１つのアクセス要求ＭＲＥＱＣを生成する。一方、アクセス要求ＭＲＥＱに基づいて、データキャッシュ２２内の２つのキャッシュラインに保持される場合、あるいは、データの一部がデータキャッシュ２２に保持されていない場合（キャッシュミス）がある。この場合、アドレス生成部２０は、１つのキャッシュラインからデータを読み出すアクセス要求ＭＲＥＱＣを生成した後、時間間隔を置いて、他の１つのキャッシュラインからデータを読み出すアクセス要求ＭＲＥＱＣを生成する。すなわち、データキャッシュ２２から読み出すロードデータのタイミングずれが発生する。
【００４０】
例えば、アドレス生成部２０は、１つのアクセス要求ＭＲＥＱＣにより、リネーミングレジスタ部３６へ転送する８バイトのデータをデータキャッシュ２２から一度で読み出す場合、制御信号ＡＬＤＬ、ＡＬＤＨの両方を生成する。アドレス生成部２０は、２つのアクセス要求ＭＲＥＱＣにより、リネーミングレジスタ部３６へ転送する８バイトのデータを２つの４バイトのデータ毎にデータキャッシュ２２から読み出す場合、制御信号ＡＬＤＬ、ＡＬＤＨを互いに異なるタイミングで生成する。
【００４１】
例えば、アドレス生成部２０は、８バイトのデータを４バイトずつデータキャッシュ２２から読み出す場合、上位４バイトのデータを読み出した後、下位４バイトのデータを読み出す。このため、制御信号ＡＬＤＬが出力されるタイミングで、上位４バイトのデータは、データキャッシュ２２から出力されており、ロードレジスタ３０およびリネーミングレジスタ部３６に順次に転送される。制御信号ＡＬＤＬ、ＡＬＤＨおよびアドレスＡＬＤＵＢＡを受けた場合のバイパス制御部２４の動作は、図９で説明する。アドレス生成部２０は、リザベーションステーションＲＳＦＬＴから受けるアクセス要求ＭＲＥＱ（メモリアクセス命令）に基づいてデータキャッシュ２２にアクセス要求ＭＲＥＱＣを出力するメモリ制御部の一例である。
【００４２】
例えば、データキャッシュ２２は、二次データキャッシュまたはメインメモリ等から転送されるデータを格納する一次データキャッシュである。データキャッシュ２２は、アドレス生成部２０からのアクセス要求ＭＲＥＱＣによりアクセスされる。データキャッシュ２２は、アクセス要求ＭＲＥＱＣに対応するデータを保持している場合（キャッシュヒット）、保持しているデータをロードレジスタ３０に出力する。データキャッシュ２２は、アクセス要求ＭＲＥＱＣに対応するデータを保持していない場合（キャッシュミス）、二次データキャッシュまたはメインメモリ等からデータを読み出し、読み出したデータをデータキャッシュ２２の記憶領域に格納する。
【００４３】
また、データキャッシュ２２は、キャッシュヒット時に、データをロードレジスタ３０に出力するサイクルで完了信号ＣＥをバイパス制御部２４に出力する。データキャッシュ２２は、キャッシュミス時に、完了信号ＣＥの出力を禁止する。
【００４４】
バイパス制御部２４は、リネーミングレジスタ部３６が有するリネーミングレジスタ毎に、浮動小数点データのバイパスが可能か否かを示す情報を保持するバイパス管理テーブルＢＰＴＢＬを有する。バイパス制御部２４は、バイパス管理テーブルＢＰＴＢＬが保持する情報に基づいて、バイパス可能信号ＢＰＥＮ（ＢＰＥＮ０−ＢＰＥＮ３１）を出力する。また、バイパス制御部２４は、リネーミングレジスタ部３８のリネーミングレジスタ毎に、固定小数点データのバイパスが可能か否かを示す情報を保持する図示しないバイパス管理テーブルを有する。
【００４５】
バイパス制御部２４は、制御信号Ｂ１ＦＰ、ＡＬＤＬ、ＡＬＤＨに基づいて、アドレスＢ１ＦＰＵＢＡ、ＡＬＤＵＢＡに対応するバイパス可能信号ＢＰＥＮ（ＢＰＥＮ０−ＢＰＥＮ３１のいずれか）を有効レベルに設定する。バイパス制御部２４は、制御信号ＷＣＭＴに基づいて、アドレスＷＣＭＴＵＢＡに対応するバイパス可能信号ＢＰＥＮを無効レベルに設定する。バイパス制御部２４は、完了信号ＣＥに基づいて、キャッシュミスしたアクセス命令ＭＲＥＱＣに対応するアドレスＡＬＤＵＢＡが示すバイパス可能信号ＢＰＥＮを無効レベルに設定する。バイパス制御部２４の例は、図７および図８に示される。
【００４６】
浮動小数点演算器２６は、リザベーションステーションＲＳＦＬＴから転送される命令に基づいて演算を実行し、実行結果をリザルトレジスタ３２に格納する。浮動小数点演算器２６は、リザベーションステーションＲＳＦＬＴから受ける演算の実行を示す演算命令に基づいて演算を実行する演算実行部の一例である。浮動小数点演算器２６による演算は、浮動小数点レジスタ部４０、リネーミングレジスタ部３６、リザルトレジスタ３２およびロードレジスタ３０の少なくともいずれかに格納されたデータを用いて実行される。
【００４７】
固定小数点演算器２８は、リザベーションステーションＲＳＦＩＸから転送される命令に基づいて演算を実行し、実行結果をリザルトレジスタ３４に格納する。固定小数点演算器２８による演算は、固定小数点レジスタ部４２、リネーミングレジスタ部３８、リザルトレジスタ３４およびロードレジスタ３０の少なくともいずれかに格納されたデータを用いて実行される。
【００４８】
ロードレジスタ３０は、ロード命令の実行に基づいてデータキャッシュ２２から読み出されるデータを一時的に保持し、保持したデータをリネーミングレジスタ部３６またはリネーミングレジスタ部３８にデータ線ＬＤＤを介して転送する。ロードレジスタ３０は、データキャッシュ２２とリネーミングレジスタＲＮＦＲ（図４）との間に配置され、データキャッシュ２２から読み出されるデータをリネーミングレジスタＲＮＦＲに転送する前に一時的に保持する第３レジスタの一例である。
【００４９】
リザルトレジスタ３２は、浮動小数点演算器２６による演算結果を一時的に保持し、保持したデータをリネーミングレジスタ部３６にデータ線ＥＸＤ１を介して転送する。リザルトレジスタ３４は、固定小数点演算器２８による演算結果を一時的に保持し、保持したデータをリネーミングレジスタ部３８にデータ線ＥＸＤ２を介して転送する。
【００５０】
例えば、リネーミングレジスタ部３６は、浮動小数点演算器２６が実行した演算により得られた浮動小数点データまたはデータキャッシュから転送される浮動小数点データを一次的に保持する３２個のリネーミングレジスタＲＮＦＲ（図４）を有する。各リネーミングレジスタＲＮＦＲに保持されたデータは、命令の完了に基づいてコミット制御部４４が出力する読み出し要求ＲＣＭＴ１に応答して、浮動小数点レジスタ部４０に転送される。リネーミングレジスタＲＮＦＲは、浮動小数点レジスタＦＲ（図３）に対応して割り当てられ、演算命令またはメモリアクセス命令の実行により得られるデータを浮動小数点レジスタＦＲに転送する前に一時的に保持する第２レジスタの一例である。
【００５１】
例えば、リネーミングレジスタ部３８は、固定小数点演算器２８が実行した演算により得られた固定小数点データまたはデータキャッシュから転送される固定小数点データを一次的に保持する３２個のリネーミングレジスタＲＮＲ（図４）を有する。各リネーミングレジスタＲＮＲに保持されたデータは、命令の完了に基づいてコミット制御部４４が出力する読み出し要求ＲＣＭＴ２に応答して、固定小数点レジスタ部４２に転送される。リネーミングレジスタ部３６、３８の例は、図４に示す。
【００５２】
例えば、浮動小数点レジスタ部４０は、浮動小数点演算器２６が実行する演算により得られた浮動小数点データまたはデータキャッシュ２２から転送される浮動小数点データを保持する６４個の浮動小数点レジスタＦＲ（図３）を有する。浮動小数点レジスタＦＲは、浮動小数点演算器２６が実行する演算に使用するデータを保持する第１レジスタの一例である。浮動小数点レジスタ部４０は、命令の完了に基づいてコミット制御部４４が出力する書き込み要求ＷＣＭＴ１に応答して、リネーミングレジスタ部３６から転送されるデータを記憶する。
【００５３】
例えば、固定小数点レジスタ部４２は、固定小数点演算器２８が実行する演算により得られた固定小数点データまたはデータキャッシュ２２から転送される固定小数点データを保持する３２個の固定小数点レジスタＲ（図３）を有する。固定小数点レジスタ部４２は、命令の完了に基づいてコミット制御部４４が出力する書き込み要求ＷＣＭＴ２に応答して、リネーミングレジスタ部３８から転送されるデータを記憶する。浮動小数点レジスタ部４０および固定小数点レジスタ部４２の例は、図３に示す。
【００５４】
コミット制御部４４は、命令の実行の完了に基づいて、レジスタ管理テーブル１６にリセット要求ＲＳＴ１を出力し、リザベーションステーション１８にリセット要求ＲＳＴ２を出力する。また、コミット制御部４４は、命令の実行の完了に基づいて、バイパス制御部２４に制御信号ＷＣＭＴおよびアドレスＷＣＭＴＵＢＡを出力する。コミット制御部４４は、デコーダ部１４が命令の解読に基づいて出力するレジスタ番号ＲＮおよびアドレスＵＢＡを命令毎に保持する。コミット制御部４４は、保持したアドレスＵＢＡのうち、実行が完了した命令に対応するアドレスＵＢＡが示すリネーミングレジスタＲＮＦＲからデータを読み出す読み出し要求ＲＣＭＴ１（またはＲＣＭＴ２）を出力する。コミット制御部４４は、保持したレジスタ番号ＲＮのうち、実行が完了した命令に対応するレジスタ番号ＲＮが示すディスティネーションレジスタにデータを書き込む書き込み要求ＷＣＭＴ１（またはＷＣＭＴ２）を出力する。
【００５５】
図３は、図２に示す浮動小数点レジスタ部４０および固定小数点レジスタ部４２の例を示す。浮動小数点レジスタ部４０は、倍精度（８バイト）の浮動小数点データを格納する６４個の浮動小数点レジスタＦＲ（ＦＲ０−ＦＲ６３）を有する。また、浮動小数点レジスタ部４０は、浮動小数点レジスタＦＲへのデータの書き込みを制御する書き込み制御部ＷＣＮＴ１および浮動小数点レジスタＦＲからのデータの読み出しを制御する読み出し制御部ＲＣＮＴ１を有する。
【００５６】
各浮動小数点レジスタＦＲは、８バイトのダブルデータＤＤ（倍精度の浮動小数点データ）または４バイトの２つのシングルデータＳＤ（単精度の浮動小数点データ）を記憶する８バイトの記憶領域を有している。すなわち、各浮動小数点レジスタＦＲは、２つの単精度（４バイト）の浮動小数点データを格納可能である。図３は、浮動小数点レジスタＦＲ０にダブルデータＤＤが格納され、浮動小数点レジスタＦＲ１に２つのシングルデータＳＤが格納された状態を示す。
【００５７】
１つの浮動小数点レジスタＦＲに２つのシングルデータＳＤを格納することで、１つの浮動小数点レジスタＦＲの番号により２つのシングルデータＳＤを使用することができる。これにより、２つの浮動小数点レジスタＦＲのそれぞれにシングルデータＳＤを格納する場合に比べて、単精度浮動小数点データの演算性能は向上する。以降、２つのシングルデータＳＤを格納する浮動小数点レジスタＦＲは、倍幅単精度浮動小数点レジスタとも称され、倍幅単精度浮動小数点レジスタに格納されるデータは、倍幅単精度浮動小数点データとも称される。
【００５８】
固定小数点レジスタ部４２は、８バイトの固定小数点データを格納する３２個の固定小数点レジスタＲ（Ｒ０−Ｒ３１）を有する。また、固定小数点レジスタ部４２は、固定小数点レジスタＲへのデータの書き込みを制御する書き込み制御部ＷＣＮＴ２および固定小数点レジスタＲからのデータの読み出しを制御する読み出し制御部ＲＣＮＴ２を有する。各固定小数点レジスタＲは、８バイトのダブルデータＤＤを記憶する８バイトの記憶領域を有している。図３は、固定小数点レジスタＲ１にダブルデータＤＤが格納された状態を示す。
【００５９】
図４は、図２に示すリネーミングレジスタ部３６、３８の例を示す。リネーミングレジスタ部３６は、図３に示す浮動小数点レジスタＦＲのいずれかが割り当てられる３２個のリネーミングレジスタＲＮＦＲ（ＲＮＦＲ０−ＲＮＦＲ３１）、書き込み制御部ＷＣＮＴ３および読み出し制御部ＲＣＮＴ３を有する。各リネーミングレジスタＲＮＦＲは、２つの４バイトの記憶領域を含む８バイトの記憶領域を有する。書き込み制御部ＷＣＮＴ３は、演算命令の実行時にリザルトレジスタ３２から転送されるデータＥＸＤ１またはロード命令の実行時にロードレジスタ３０から転送されるデータＬＤＤのいずれかを選択するセレクタＳＥＬ３を有する。例えば、書き込み制御部ＷＣＮＴ３によりデータが書き込まれるリネーミングレジスタＲＮＦＲは、レジスタ管理テーブル１６に格納された情報に基づいてリザベーションステーション１８が指定する。
【００６０】
セレクタＳＥＬ３は、各リネーミングレジスタＲＮＦＲの上位４バイトにデータを格納する場合、書き込み制御信号ＷＥ１Ｈおよび４バイト（すなわち、３２ビット）のデータＥＸＤ１ＨをリネーミングレジスタＲＮＦＲに出力する。セレクタＳＥＬ３は、リネーミングレジスタＲＮＦＲの下位４バイトにデータを格納する場合、書き込み制御信号ＷＥ１Ｌおよび４バイト（すなわち、３２ビット）のデータＥＸＤ１ＬをリネーミングレジスタＲＮＦＲに出力する。例えば、書き込み制御信号ＷＥ１Ｈ、ＷＥ１Ｌは、書き込み制御部ＷＣＮＴ３がデータＥＸＤ１、ＬＤＤ（各々６４ビット）の受信に基づいて生成する。
【００６１】
浮動小数点演算器２６からリザルトレジスタ３２に転送されるデータおよびリザルトレジスタ３２からリネーミングレジスタ部３６に転送されるデータＥＸＤ１は、８バイトである。このため、書き込み制御部ＷＣＮＴ３は、データＥＸＤ１を受けた場合、書き込み制御信号ＷＥ１Ｈ、ＷＥ１Ｌを生成し、８バイトのデータＥＸＤ１Ｈ、ＥＸＤ１ＬをリネーミングレジスタＲＮＦＲに格納する。
【００６２】
ロード命令に基づいてロードレジスタ３０から転送されるデータＬＤＤが倍精度浮動小数点データ（８バイト）の場合、書き込み制御部ＷＣＮＴ３は、書き込み制御信号ＷＥ１Ｈ、ＷＥ１Ｌを生成する。これにより、８バイトのデータＥＸＤ１Ｈ、ＥＸＤ１Ｌ（すなわち、倍精度浮動小数点データ）がリネーミングレジスタＲＮＦＲに格納される。ロード命令に基づいてロードレジスタ３０から転送されるデータＬＤＤが倍幅単精度浮動小数点データ（８バイト）の場合も、書き込み制御部ＷＣＮＴ３は、書き込み制御信号ＷＥ１Ｈ、ＷＥ１Ｌを生成する。
【００６３】
一方、ロード命令に基づいてロードレジスタ３０から転送されるデータＬＤＤが倍幅単精度浮動小数点データの上位４バイトの場合、書き込み制御部ＷＣＮＴ３は、書き込み制御信号ＷＥ１Ｈを生成する。これにより、４バイトのデータＥＸＤ１Ｈ（すなわち、倍幅単精度浮動小数点データの上位４バイト）がリネーミングレジスタＲＮＦＲの上位４バイトの領域に格納される。同様に、ロード命令に基づいてロードレジスタ３０から転送されるデータＬＤＤが倍幅単精度浮動小数点データの下位４バイトの場合、書き込み制御部ＷＣＮＴ３は、書き込み制御信号ＷＥ１Ｌを生成する。これにより、４バイトのデータＥＸＤ１Ｌ（すなわち、倍幅単精度浮動小数点データの下位４バイト）がリネーミングレジスタＲＮＦＲの下位４バイトの領域に格納される。
【００６４】
ここで、倍幅単精度浮動小数点データは、データキャッシュ２２の１つのキャッシュラインに含まれる場合、一度で転送され、２つのキャッシュラインに跨って含まれる場合、上位４バイトと下位４バイトに分けて順次に転送される。
【００６５】
読み出し制御部ＲＣＮＴ３は、コミット制御部４４から出力される読み出し要求ＲＣＭＴ１に基づいて、リネーミングレジスタＲＮＦＲ０−ＲＮＦＲ３１のいずれかからデータを読み出し、読み出したデータを浮動小数点レジスタ部４０に出力する。例えば、読み出し制御部ＲＣＮＴ３によりデータが読み出されるリネーミングレジスタＲＮＦＲは、レジスタ管理テーブル１６に格納された情報に基づいてリザベーションステーション１８が指定する。
【００６６】
リネーミングレジスタ部３８は、図３に示す固定小数点レジスタＲのいずれかが割り当てられる３２個のリネーミングレジスタＲＮＲ（ＲＮＲ０−ＲＮＲ３１）、書き込み制御部ＷＣＮＴ４および読み出し制御部ＲＣＮＴ４を有する。各リネーミングレジスタＲＮＲは、８バイトの記憶領域を有する。書き込み制御部ＷＣＮＴ４は、演算命令の実行時にリザルトレジスタ３４から出力されるデータＥＸＤ２またはロード命令の実行時にロードレジスタ３０から出力されるデータＬＤＤのいずれかを選択するセレクタＳＥＬ４を有する。例えば、書き込み制御部ＷＣＮＴ４によりデータが書き込まれるリネーミングレジスタＲＮＲは、リザベーションステーション１８により指定される。
【００６７】
セレクタＳＥＬ４は、リネーミングレジスタＲＮＲにデータを格納する場合、書き込み制御信号ＷＥ２および８バイト（６４ビット）のデータＥＸＤ２をリネーミングレジスタＲＮＲに出力する。例えば、書き込み制御信号ＷＥ２は、書き込み制御部ＷＣＮＴ４がデータＥＸＤ２、ＬＤＤ（各々６４ビット）の受信に基づいて生成する。読み出し制御部ＲＣＮＴ３は、コミット制御部４４から出力される読み出し要求ＲＣＭＴ２に基づいて、リネーミングレジスタＲＮＲ０−ＲＮＲ３１のいずれかからデータを読み出し、読み出したデータを固定小数点レジスタ部４２に出力する。例えば、読み出し制御部ＲＣＮＴ４によりデータが読み出されるリネーミングレジスタＲＮＲは、レジスタ管理テーブル１６に格納された情報に基づいてリザベーションステーション１８が指定する。
【００６８】
図４では、セレクタＳＥＬ３の回路規模が、セレクタＳＥＬ４の回路規模より大きく見える。しかしながら、セレクタＳＥＬ３が出力するデータＥＸＤ１Ｈ、ＥＸＤ１Ｌの幅の合計は６４ビットであり、セレクタＳＥＬ４が出力するデータＥＸＤ２の幅と同じである。このため、上位４バイトのデータと下位４バイトのデータとがリネーミングレジスタＲＮＦＲにそれぞれ格納される場合の書き込み制御部ＷＣＮＴ３の回路規模を、書き込み制御部ＷＣＮＴ４の回路規模と同等にすることができる。例えば、書き込み制御部ＷＣＮＴ４に対して追加される書き込み制御部ＷＣＮＴ３の要素は、書き込み制御信号ＷＥ１Ｈ、ＷＥ１Ｌを生成する論理回路と、書き込み制御信号ＷＥ１Ｈの配線領域である。したがって、リネーミングレジスタ部３６の回路規模は、既存のリネーミングレジスタ部およびリネーミングレジスタ部３８の回路規模と同等である。
【００６９】
倍幅単精度浮動小数点データが上位４バイトと下位４バイトに分けてデータキャッシュ２２から読み出される場合、下位４バイトのデータがリネーミングレジスタＲＮＦＲに格納された時点で、８バイトのデータがリネーミングレジスタＲＮＦＲ内に揃う。すなわち、上位４バイトと下位４バイトに分けて転送される倍幅単精度浮動小数点データは、リネーミングレジスタ部３６で待ち合わされ、結合される。図４に示すリネーミングレジスタ部３６を用いない場合、上位４バイトと下位４バイトに分けて転送される倍幅単精度浮動小数点データを結合する新たなバッファ回路等が、例えば、データキャッシュ２２の出力に接続される。上述したように、リネーミングレジスタ部３６の回路規模は、既存のリネーミングレジスタ部の回路規模と同等である。このため、リネーミングレジスタ部３６を有する演算処理装置ＯＰＤ２は、上位４バイトと下位４バイトとのデータ群に分けて転送される倍幅単精度浮動小数点データを結合する新たなバッファ回路を有する演算処理装置に比べて、回路規模を削減することができる。
【００７０】
図５は、図２に示すレジスタ管理テーブル１６の例を示す。レジスタ管理テーブル１６のテーブルＲＭＴＢＬ１は、浮動小数点レジスタ部４０の６４個の浮動小数点レジスタＦＲ０−ＦＲ６３のそれぞれに対応してビット値ＰとアドレスＵＢＡとを格納する６４個の領域を有する。図５において、テーブルＲＭＴＢＬ１の左端に示す数字は、浮動小数点レジスタＦＲの番号（すなわち、レジスタ番号ＲＮ）を示す。
【００７１】
レジスタ管理テーブル１６は、デコーダ部１４からライト要求ＷＥとともに浮動小数点レジスタＦＲを示すレジスタ番号ＲＮおよびアドレスＵＢＡを受けた場合、テーブルＲＭＴＢＬ１におけるレジスタ番号ＲＮに対応する領域にアドレスＵＢＡを格納する。アドレスＵＢＡは、浮動小数点レジスタＦＲを割り当てるリネーミングレジスタＲＮＦＲを示す。そして、レジスタ管理テーブル１６は、アドレスＵＢＡを格納した領域のビット値Ｐをセットする。ビット値Ｐは、アドレスＵＢＡが有効か無効かを示す。これにより、デコーダ部１４が決定した浮動小数点レジスタＦＲとリネーミングレジスタＲＮＦＲとの対応付けが、テーブルＲＭＴＢＬ１に保持される。
【００７２】
レジスタ管理テーブル１６は、デコーダ部１４からテーブルＲＭＴＢＬ１を参照する読み出し要求を受けた場合、読み出し要求に含まれるレジスタ番号ＲＮに対応する領域からビット値ＰとアドレスＵＢＡとを読み出す。そして、レジスタ管理テーブル１６は、読み出したビット値ＰとアドレスＵＢＡとをリザベーションステーション１８に出力する。
【００７３】
レジスタ管理テーブル１６のテーブルＲＭＴＢＬ２は、固定小数点レジスタ部４２の３２個の固定小数点レジスタＲ０−Ｒ３１のそれぞれに対応してビット値ＰとアドレスＵＢＡとを格納する３２個の領域を有する。図５において、テーブルＲＭＴＢＬ２の左端に示す数字は、固定小数点レジスタＲの番号（すなわち、レジスタ番号ＲＮ）を示す。
【００７４】
レジスタ管理テーブル１６は、テーブルＲＭＴＢＬ１と同様に、テーブルＲＭＴＢＬ２におけるレジスタ番号Ｒに対応する領域にアドレスＵＢＡを格納し、ビット値Ｐをセットする。アドレスＵＢＡは、固定小数点レジスタＲを割り当てるリネーミングレジスタＲＮＲを示す。これにより、デコーダ部１４が決定した固定小数点レジスタＲとリネーミングレジスタＲＮＲとの対応付けが、テーブルＲＭＴＢＬ２に保持される。また、レジスタ管理テーブル１６は、テーブルＲＭＴＢＬ１と同様に、リザベーションステーション１８からの読み出し要求に含まれるレジスタ番号Ｒに対応する領域からビット値ＰとアドレスＵＢＡとを読み出し、リザベーションステーション１８に出力する。
【００７５】
図６は、図２に示すデータキャッシュ２２からデータをロードする例を示す。例えば、データキャッシュ２２は、１２８バイトの幅を有する６４個のキャッシュラインを有する。図６に示す”７０”および”８０”等は、１６進数であり、連続する２つのキャッシュラインの先頭アドレスの下位８ビットを示す。１６進数のアドレスの右側に示す括弧内の数値は、アドレスを２進数で表した値である。以下では、図６に示す連続する２つのキャッシュラインにデータが続けて格納されているとする。
【００７６】
例えば、倍精度浮動小数点データ（８バイト）をロードするロード命令では、アドレスの下位３ビットが”０００”に設定され、倍幅単精度浮動小数点データをロードするロード命令では、アドレスの下位２ビットが”００”に設定される。このため、データキャッシュ２２からロードされる倍精度浮動小数点データは、キャッシュラインの境界を跨がない（図６（ａ））。データキャッシュ２２からロードされる倍幅単精度浮動小数点データも、先頭アドレスの下位３ビットが”０００”の場合、キャッシュラインの境界を跨がない（図６（ｂ））。しかしながら、先頭アドレスの下位３ビットが”１００”の場合、データキャッシュ２２からロードされる倍幅単精度浮動小数点データは、キャッシュラインの境界を跨ぐ場合がある（図６（ｃ））。なお、図６（ｄ）は、先頭アドレスの下位３ビットが”１００”の場合で、キャッシュラインの境界を跨がない例を示す。
【００７７】
倍幅単精度浮動小数点データをロードするロード命令において、キャッシュラインの境界を跨ぐ先頭アドレスが指定された場合、図２に示すアドレス生成部２０は、キャッシュライン毎にアクセス要求ＭＲＥＱＣを生成する。すなわち、倍幅単精度浮動小数点データがキャッシュラインの境界を跨いで、データキャッシュ２２に格納されている場合、アドレス生成部２０は、倍幅単精度浮動小数点データを２回に分けてデータキャッシュ２２から読み出す。この実施形態では、図１２で説明するように、ロード命令によりデータが２回に分けてデータキャッシュ２２から読み出される場合にも、回路規模の増加を抑制して、正しいタイミングでデータを浮動小数点演算器２６へバイパスさせることができる。
【００７８】
なお、倍幅単精度浮動小数点データの上位４バイトまたは下位４バイトがデータキャッシュ２２に格納されていない場合（キャッシュミス）、データキャッシュ２２は、二次データキャッシュ２２またはメインメモリ等から１２８バイトのデータを読み出す。そして、データキャッシュ２２は、読み出した１２８バイトのデータをキャッシュラインのいずれかに格納する。そして、アドレス生成部２０は、データキャッシュ２２にデータが格納された後に、倍幅単精度浮動小数点データの上位４バイトまたは下位４バイトを読み出すアクセス要求ＭＲＥＱＣをデータキャッシュ２２に発行する。
【００７９】
図７は、図２に示すバイパス制御部２４に設けられるセット信号生成回路ＳＳＧＥＮの例を示す。セット信号生成回路ＳＳＧＥＮは、直列に接続された２つのラッチ回路ＦＦ１、ＦＦ２およびサイクル信号生成部ＡＳＧＥＮ、ＭＳＧＥＮを有する。ラッチ回路ＦＦ１、ＦＦ２は、クロック信号ＣＬＫに同期して動作し、アドレス生成部２０からの制御信号ＡＬＤＬ、ＡＬＤＨ、ＡＬＤＢＵＡをラッチする。
【００８０】
サイクル信号生成部ＡＳＧＥＮは、制御信号ＡＬＤＬ、ＡＬＤＨを受けるアンド回路ＡＮＤ１を有する。サイクル信号生成部ＡＳＧＥＮは、制御信号ＡＬＤＬ、ＡＬＤＨがともに有効レベル（例えば、ハイレベル）のときにセット信号ＡＬＤＳＥＴを有効レベルに設定する。有効レベルのセット信号ＡＬＤＳＥＴにより、図８に示すバイパステーブルＢＰＴＢＬのフラグ領域ＦＬＧのいずれかがセットされる。セットされるフラグ領域ＦＬＧは、アドレスＡＬＤＵＢＡで示される。セット信号ＡＬＤＳＥＴによるフラグ領域ＦＬＧのセットタイミングは、後述するＡサイクルである。サイクル信号生成部ＡＳＧＥＮは、制御信号ＡＬＤＬ、ＡＬＤＨの少なくともいずれかが無効レベル（例えば、ロウレベル）のときにセット信号ＡＬＤＳＥＴを無効レベルに設定する。サイクル信号生成部ＡＳＧＥＮは、複数の制御信号ＡＬＤＬ、ＡＬＤＨの共通なタイミングでの受信に基づいてセット信号ＡＬＤＳＥＴを生成する第１生成回路の一例である。
【００８１】
サイクル信号生成部ＭＳＧＥＮは、ラッチ回路ＦＦ２の出力Ｑ１に接続されたインバータＩＶ１と、ラッチ回路ＦＦ２の出力Ｑ０およびインバータＩＶ１の出力に接続されたアンド回路ＡＮＤ２とを有する。ラッチ回路ＦＦ２は、制御信号ＡＬＤＬを２クロックサイクル遅らせた信号を出力Ｑ０から出力し、制御信号ＡＬＤＨを２クロックサイクル遅らせた信号を出力Ｑ２から出力する。サイクル信号生成部ＭＳＧＥＮは、２クロックサイクル遅らせた制御信号ＡＬＤＬ、ＡＬＤＨのそれぞれが有効レベルと無効レベルのとき、セット信号ＭＬＤＳＥＴを有効レベルに設定する。有効レベルのセット信号ＭＬＤＳＥＴにより、図８に示すバイパステーブルＢＰＴＢＬのフラグ領域ＦＬＧのいずれかがセットされる。セットされるフラグ領域ＦＬＧは、アドレスＭＬＤＵＢＡで示される。セット信号ＭＬＤＳＥＴによるフラグ領域ＦＬＧのセットタイミングは、後述するＭサイクルである。
【００８２】
サイクル信号生成部ＭＳＧＥＮは、２クロックサイクル遅らせた制御信号ＡＬＤＬが無効レベルのとき、または２クロックサイクル遅らせた制御信号ＡＬＤＨが有効レベルのとき、セット信号ＭＬＤＳＥＴを無効レベルに設定する。サイクル信号生成部ＭＳＧＥＮは、最後の制御信号ＡＬＤＬの受信から所定のサイクル後にセット信号ＭＬＤＳＥＴを生成する第２生成回路の一例である。
【００８３】
制御信号ＡＬＤＬ、ＡＬＤＨがどちらも無効レベルの場合、アドレス生成部２０はデータキャッシュ２２にアクセス要求ＭＲＥＱＣを出力していないため、セット信号ＡＬＤＳＥＴ、ＭＬＤＳＥＴはどちらも有効レベルにならない。このため、フラグ領域ＦＬＧはセットされない。
【００８４】
制御信号ＡＬＤＬ、ＡＬＤＨがどちらも有効レベルの場合、アドレス生成部２０は、８バイトのデータをデータキャッシュ２２から読み出すアクセス要求ＭＲＥＱＣを出力している。この場合、セット信号ＡＬＤＳＥＴは有効レベルになり、セット信号ＭＬＤＳＥＴは無効レベルになり、フラグ領域ＦＬＧは、Ａサイクルでセットされる。
【００８５】
制御信号ＡＬＤＬが無効レベルで、制御信号ＡＬＤＨが有効レベルの場合、アドレス生成部２０は、倍幅単精度浮動小数点データの上位４バイトのデータをデータキャッシュ２２から読み出すアクセス要求ＭＲＥＱＣを出力している。この場合、セット信号ＡＬＤＳＥＴ、ＭＬＤＳＥＴはどちらも有効レベルにならず、フラグ領域ＦＬＧはセットされない。
【００８６】
制御信号ＡＬＤＬが有効レベルで、制御信号ＡＬＤＨが無効レベルの場合、アドレス生成部２０は、倍幅単精度浮動小数点データの下位４バイトのデータをデータキャッシュ２２から読み出すアクセス要求ＭＲＥＱＣを出力している。この時点で、倍幅単精度浮動小数点データの上位４バイトは、データキャッシュ２２から既にロードされており、下位４バイトのデータがデータキャッシュ２２から読み出されることで、８バイトの倍幅単精度浮動小数点データが揃う。この場合、セット信号ＡＬＤＳＥＴは無効レベルになり、セット信号ＭＬＤＳＥＴは有効レベルになり、フラグ領域ＦＬＧは、Ｍサイクルでセットされる。
【００８７】
この実施形態では、数ゲート規模のサイクル信号生成部ＡＳＧＥＮ、ＭＳＧＥＮにより、８バイトのデータがデータキャッシュ２２から読み出されるか否かを判定し、セット信号ＡＬＤＳＥＴまたはセット信号ＭＬＤＳＥＴを生成することができる。
【００８８】
図８は、バイパス制御部２４に設けられるバイパス管理テーブルＢＰＴＢＬおよびテーブル制御回路ＴＳＣＮＴの例を示す。
【００８９】
バイパス管理テーブルＢＰＴＢＬは、１ビットのラッチ回路を有する３２個のフラグ領域ＦＬＧ（ＦＬＧ０−ＦＬＧ３１）を有する。バイパス管理テーブルＢＰＴＢＬは、クロック信号ＣＬＫに同期して入力端子の論理をラッチして各フラグ領域ＦＬＧに保持し、保持した論理をバイパス可能信号ＢＰＥＮ（ＢＰＥＮ０−ＢＰＥＮ３１）として出力する。
【００９０】
有効レベル（例えば、ハイレベル）のバイパス可能信号ＢＰＥＮは、図２に太い破線で示したバイパス経路を用いたデータのバイパスが可能であることを示す。すなわち、セット状態のフラグ領域ＦＬＧは、リネーミングレジスタＲＮＦＲ、リザルトレジスタ３２またはロードレジスタ３０に格納されたデータを、浮動小数点レジスタ部４０を介さずに浮動小数点演算器２６にバイパス可能であることを示す。なお、バイパス制御部２４は、固定小数点レジスタ部４２に対応するリネーミングレジスタ部３８に対応するバイパス管理テーブルを有するが、図示は省略する。
【００９１】
図２に示す演算処理装置ＯＰＤ２では、８バイトの倍幅単精度浮動小数点データが４バイトずつデータキャッシュ２２から読み出される場合、アドレス生成部２０は、上位４バイトと下位４バイトのデータを読み出すアクセス要求ＭＲＥＱＣを順次に生成する。これにより、下位４バイトのデータがデータキャッシュ２２からの出力されたことに基づいて、８バイト全ての倍幅単精度浮動小数点データがデータキャッシュ２２から読み出されたと判定することができる。したがって、バイパスが可能なことを示すフラグ領域ＦＬＧを、下位４バイトのデータの読み出しを示す制御信号ＡＬＤＬに基づいてセットさせることが可能になる。この結果、４バイトのデータが互いに異なるタイミングで２回に分けて読み出される場合にも、１ビットのフラグ領域ＦＬＧによりバイパス動作を許可させることができ、バイパス管理テーブルＢＰＴＢＬの回路規模の増加を抑制することができる。
【００９２】
テーブル制御回路ＴＳＣＮＴは、セット信号生成部ＡＳＳＥＴ、ＭＳＳＥＴ、Ｂ１ＳＥＴ、リセット信号生成部ＷＲＳＴおよびテーブル制御部ＴＢＬＣＮＴを有する。
【００９３】
セット信号生成部ＡＳＳＥＴは、アドレスＡＬＤＵＢＡを受けるデコーダＡＤＥＣと、デコーダＡＤＥＣの出力に接続され、制御信号ＡＬＤＳＥＴを受ける３２個のアンド回路とを有する。デコーダＡＤＥＣは、アドレスＡＬＤＵＢＡの値を解読し、アドレスＡＬＤＵＢＡの値が示すフラグ領域ＦＬＧに対応する３２個の出力端子のいずれかを有効レベルに設定する。そして、デコーダＡＤＥＣからの有効レベルと制御信号ＡＬＤＳＥＴとを受けるアンド回路が出力するハイレベルにより、対応するフラグ領域ＦＬＧがセットされる。セット信号生成部ＡＳＳＥＴは、倍精度浮動小数点データまたは倍幅単精度浮動小数点データ（何れも８バイト）をロードする場合、フラグ領域ＦＬＧをセットする。
【００９４】
セット信号生成部ＭＳＳＥＴは、デコーダＡＤＥＣの代わりにデコーダＭＤＥＣを有し、アドレスＡＬＤＵＢＡと制御信号ＡＬＤＳＥＴの代わりにアドレスＭＬＤＵＢＡと制御信号ＭＬＤＳＥＴを受けることを除き、セット信号生成部ＡＳＳＥＴと同様である。セット信号生成部ＭＳＳＥＴは、デコーダＭＤＥＣからの有効レベルと制御信号ＭＬＤＳＥＴとを受けるアンド回路が出力するハイレベルにより、対応するフラグ領域ＦＬＧをセットする。セット信号生成部ＭＳＳＥＴは、倍幅単精度浮動小数点データを４バイトずつ互いに異なるタイミングでロードする場合、フラグ領域ＦＬＧをセットする。
【００９５】
セット信号生成部Ｂ１ＳＥＴは、デコーダＡＤＥＣの代わりにデコーダＢＤＥＣを有し、アドレスＡＬＤＵＢＡと制御信号ＡＬＤＳＥＴの代わりにアドレスＢ１ＦＰＵＢＡと制御信号Ｂ１ＦＰを受けることを除き、セット信号生成部ＡＳＳＥＴと同様である。セット信号生成部Ｂ１ＳＥＴは、デコーダＢＤＥＣからの有効レベルと制御信号Ｂ１ＦＰとを受けるアンド回路が出力するハイレベルにより、対応するフラグ領域ＦＬＧをセットする。セット信号生成部Ｂ１ＳＥＴは、浮動小数点データの演算命令による演算の開始を示す信号を後述するＢ１サイクルまで保持した制御信号Ｂ１ＦＰに応答して、アドレスＢ１ＦＰＵＢＡが示すフラグ領域ＦＬＧをセットする。
【００９６】
リセット信号生成部ＷＲＳＴは、アドレスＷＣＭＴＵＢＡを受けるデコーダＷＤＥＣと、デコーダＷＤＥＣの出力に接続され、制御信号ＷＣＭＴを受ける３２個のナンド回路と、ナンド回路の出力に接続された３２個のアンド回路とを有する。デコーダＷＤＥＣは、デコーダＡＤＥＣと同様に、アドレスＷＣＭＴＵＢＡの値を解読し、アドレスＷＣＭＴＵＢＡの値が示すフラグ領域ＦＬＧに対応する３２個の出力端子のいずれかを有効レベルに設定する。デコーダＷＤＥＣからの有効レベルと制御信号ＷＣＭＴとを受けるナンド回路は、ロウレベルを出力し、ナンド回路の出力に接続されたアンド回路の出力をロウレベルに設定する。これにより、対応するフラグ領域ＦＬＧがリセットされる。
【００９７】
なお、制御信号ＡＬＤＳＥＴ、ＭＬＤＳＥＴ、Ｂ１ＦＰの出力期間は、１クロックサイクルである。このため、各セット信号生成部ＡＳＳＥＴ、ＭＳＳＥＴ、Ｂ１ＳＥＴは、制御信号ＡＬＤＳＥＴ、ＭＬＤＳＥＴ、Ｂ１ＦＰを受けるクロックサイクルを除き、アンド回路からロウレベルを出力する。一方、リセット信号生成部ＷＲＳＴにおいてナンド回路の出力に接続されたアンド回路は、ハイレベルのバイパス可能信号ＢＰＥＮを受け、ナンド回路がロウレベルを出力するまでハイレベルを出力する。これにより、セット信号生成部ＡＳＳＥＴ、ＭＳＳＥＴ、Ｂ１ＳＥＴによりセットされたフラグ領域ＦＬＧのセット状態は、ナンド回路がロウレベルを出力するまで維持される。
【００９８】
テーブル制御部ＴＢＬＣＮＴは、セット信号生成部ＡＳＳＥＴ、ＭＳＳＥＴ、Ｂ１ＳＥＴの出力およびリセット信号生成部ＷＲＳＴの出力のオア論理を演算し、演算した論理をバイパステーブルＢＰＴＢＬの入力端子に出力する複数のオア回路を有する。
【００９９】
図７および図８に示す回路に基づいて、バイパス制御部２４は、アドレス生成部２０からの制御信号ＡＬＤＬ、ＡＬＤＨの論理に応じたタイミングで、制御信号ＡＬＤＢＵＡの論理が示すバイパス管理テーブルＢＰＴＢＬのフラグ領域ＦＬＧ（図８）をセットする。また、バイパス制御部２４は、リザベーションステーション１８からの制御信号Ｂ１ＦＰのタイミングで、アドレスＢ１ＦＰＵＢＡの論理が示すバイパス管理テーブルＢＰＴＢＬのフラグ領域ＦＬＧをセットする。
【０１００】
バイパス制御部２４は、セットしたフラグ領域ＦＬＧに対応するバイパス可能信号ＢＰＥＮ（ＢＰＥＮ０−ＢＰＥＮ３１のいずれか）を有効レベルに設定する。バイパス制御部２４は、コミット制御部４４からの制御信号ＷＣＭＴのタイミングで、アドレスＷＣＭＴＵＢＡの論理が示すバイパス管理テーブルＢＰＴＢＬのフラグ領域ＦＬＧをリセットする。バイパス制御部２４は、リセットしたフラグ領域ＦＬＧに対応するバイパス可能信号ＢＰＥＮ（ＢＰＥＮ０−ＢＰＥＮ３１のいずれか）を無効レベルに設定する。テーブル制御部ＴＢＬＣＮＴおよびバイパス管理テーブルＢＰＴＢＬは、セット信号ＡＬＤＳＥＴまたはセット信号ＭＬＤＳＥＴに基づいて、バイパス可能信号ＢＰＥＮを出力する出力回路の一例である。
【０１０１】
なお、バイパス制御部２４は、バイパス管理テーブルＢＰＴＢＬのフラグ領域ＦＬＧをセットした後、データキャッシュ２２から完了信号ＣＥを受けない場合、セットしたフラグ領域ＦＬＧをリセットする。データキャッシュ２２によるキャッシュミス時、データキャッシュ２２からのデータは、ロードレジスタ３０およびリネーミングレジスタ部３６に所望のサイクルで転送されない。この場合、ロードレジスタ３０およびリネーミングレジスタ部３６は、浮動小数点演算器２６へバイパスするデータを保持しないため、バイパスを禁止するために、フラグ領域ＦＬＧがリセットされる。完了信号ＣＥに基づいてフラグ領域ＦＬＧをリセットする論理は、例えば、リセット信号生成部ＷＲＳＴ内に設けられる。例えば、リセット信号生成部ＷＲＳＴは、完了信号ＣＥに対応してリセットするフラグ領域ＦＬＧを示すアドレスとアドレスＷＣＭＴＵＢＡとのオア論理をデコーダＷＤＥＣに供給するオア回路を有する。また、リセット信号生成部ＷＲＳＴは、制御信号ＷＣＭＴと完了信号ＣＥとのオア論理を各ナンド回路に供給するオア回路を有する。
【０１０２】
図９は、図７および図８に示すバイパス制御部２４の動作の例を示す。図２に示すアドレス生成部２０は、８バイトの倍精度浮動小数点データまたは８バイトの倍幅単精度浮動小数点データを１回のアクセス要求ＭＲＥＱＣでデータキャッシュ２２から読み出す場合、制御信号ＡＬＤＬ、ＡＬＤＨを同時に生成する。また、アドレス生成部２０は、倍幅単精度浮動小数点データを２回のアクセス要求ＭＲＥＱＣでデータキャッシュ２２から４バイトずつ読み出す場合、制御信号ＡＬＤＨ、ＡＬＤＬを順次に生成する。この場合、８バイトの倍幅単精度浮動小数点データのうち、上位４バイトがデータキャッシュ２２から読み出された後、下位４バイトがデータキャッシュ２２から読み出される。
【０１０３】
例えば、動作ＯＰ１０において、バイパス制御部２４は、制御信号ＡＬＤＬの生成の有無を判定する。制御信号ＡＬＤＬが生成されない場合、８バイトの倍精度浮動小数点データまたは８バイトの倍幅単精度浮動小数点データは、データキャッシュ２２から読み出されていない。バイパス制御部２４は、動作ＯＰ１２において、リネーミングレジスタＲＮＦＲの下位４バイトに対応する制御信号ＡＬＤＬが生成されない場合、バイパステーブルＢＰＴＢＬを更新しない。
【０１０４】
制御信号ＡＬＤＬが生成された場合、８バイトの倍精度浮動小数点データまたは８バイトの倍幅単精度浮動小数点データが一度にデータキャッシュ２２から読み出される。バイパス制御部２４は、動作ＯＰ１４において、制御信号ＡＬＤＬとともに制御信号ＡＬＤＨが生成されたか否かを判定する。
【０１０５】
制御信号ＡＬＤＬとともに制御信号ＡＬＤＨが生成された場合、８バイトの倍精度浮動小数点データまたは８バイトの倍幅単精度浮動小数点データがデータキャッシュ２２から１回のアクセス要求ＭＲＥＱＣで読み出される。すなわち、８バイトのデータの上位４バイトと下位４バイトとがデータキャッシュ２２からロードされるタイミングのずれは発生しない。この場合、バイパス制御部２４は、動作ＯＰ１６において、制御信号ＡＬＤＬ、ＡＬＤＨとともに受けるアドレスＭＡＬＤＵＢＡにより示されるバイパステーブルＢＰＴＢＬのフラグ領域ＦＬＧをセットする。
【０１０６】
制御信号ＡＬＤＬとともに制御信号ＡＬＤＨが生成されない場合、８バイトの倍幅単精度浮動小数点データは、２回に分けてデータキャッシュ２２から読み出される。すなわち、８バイトのデータの上位４バイトと下位４バイトとがデータキャッシュ２２からロードされるタイミングのずれが発生する。この場合、バイパス制御部２４は、動作ＯＰ１８において、制御信号ＡＬＤＬの受信から２クロックサイクル後にセット信号ＭＬＤＳＥＴとアドレスＭＬＤＵＢＡを生成する。この後、バイパス制御部２４は、動作ＯＰ１６において、セット信号ＭＬＤＳＥＴに同期してアドレスＭＬＤＵＢＡにより示されるバイパステーブルＢＰＴＢＬのフラグ領域ＦＬＧをセットする。セット信号ＭＬＤＳＥＴに同期するフラグ領域ＦＬＧのセットにより、２回に分けてデータキャッシュ２２から読み出された倍幅単精度浮動小数点データは、図１２に示すように、リネーミングレジスタＲＮＦＲを介してバイパス可能になる。図１２で説明するように、リネーミングレジスタＲＮＦＲからのデータの読み出しは、２クロックサイクル掛かる。このため、バイパス制御部２４は、セット信号ＭＬＤＳＥＴを制御信号ＡＬＤＬから２クロックサイクル後に生成することで、リネーミングレジスタＲＮＦＲからバイパスされたデータを用いた演算の開始を遅らせる。
【０１０７】
図１０は、図２に示す演算処理装置ＯＰＤ２の動作の例を示す。図１０では、先行する浮動小数点データのロード命令の実行後に複数の浮動小数点データの演算命令Ａ、Ｂ、Ｃ、Ｄが実行される。図１０のロード命令は、倍精度浮動小数点データまたは倍幅単精度浮動小数点データがデータキャッシュ２２の１つのキャッシュラインから読み出される例を示す。また、演算命令Ａ、Ｂ、Ｃ、Ｄは、ロード命令によりロードされたデータが浮動小数点レジスタＦＲに格納される前に、ロードレジスタ３０またはリネーミングレジスタＲＮＦＲからバイパスさせるデータを使用して実行される。
【０１０８】
図１０において、ロード命令のＤ、ＤＴ、Ｐ、ＰＴ、Ｂ１、Ｂ２、Ａ、Ｔ、Ｍ、Ｂ、Ｒ、ＲＴサイクルは、以下に示すように、ロード命令の実行時のパイプラインのステージを示す。
（ａ）Ｄ（Decode）：デコーダ部１４が命令を解読し、解読した命令情報ＩＮＳをメモリアクセス命令用のリザベーションステーションＲＳＭＡへ転送する。
（ｂ）ＤＴ（Decode Transfer)：リザベーションステーションＲＳＭＡが、Ｄサイクルで出力された命令情報ＩＮＳを保持する。
（ｃ）Ｐ（Priority)：リザベーションステーションＲＳＭＡが、アドレス生成部２０に出力する命令を決定する。
（ｄ）ＰＴ（Priority Transfer)：リザベーションステーションＲＳＭＡが、Ｐサイクルで決定した命令をアドレス生成部２０に出力する。
（ｅ）Ｂ１、Ｂ２（Buffer)：アドレス生成部２０が、データキャッシュ２２等にアクセスするアドレスを生成するためのデータ（ソースレジスタ）を決定する。
（ｆ）Ａ（Address)：アドレス生成部２０が、データキャッシュ２２等にアクセスするアドレスを計算する。
（ｇ）Ｔ（Tag)：データキャッシュ２２がタグ領域にアクセスする。
（ｈ）Ｍ（Match)：データキャッシュ２２がタグ領域から読み出したアドレスをアドレス生成部２０から受けたアドレスと比較し、キャッシュヒット、キャッシュミスを判定する。
（ｉ）Ｂ（Buffer)：データキャッシュ２２内で読み出したデータをバッファする。
（ｊ）Ｒ（Result)：データキャッシュ２２へのアクセスを完了し、読み出したデータをロードレジスタ３０に転送する。
（ｋ）ＲＴ（Result)：Ｒサイクルでロードレジスタ３０に転送されたデータをリネーミングレジスタ部３６に転送する。
【０１０９】
図１０において、演算命令のＤ、ＤＴ、Ｐ、ＰＴ、Ｂ１、Ｂ２、Ｘ１、Ｘ２、Ｘ３、Ｘ４サイクルは、以下に示すように、演算命令の実行時のパイプラインのステージを示す。
（ｌ）Ｄ（Decode)：デコーダ部１４が命令を解読し、解読した命令情報ＩＮＳを浮動小数点データの演算用のリザベーションステーションＲＳＦＬＴへ転送する。
（ｍ）ＤＴ（Decode Transfer)：リザベーションステーションＲＳＦＬＴが、Ｄサイクルで出力された命令情報ＩＮＳを保持する。
（ｎ）Ｐ（Priority)：リザベーションステーションＲＳＦＬＴが、浮動小数点演算器２６に投入する命令を決定する。
（ｏ）ＰＴ（Priority Transfer)：リザベーションステーションＲＳＦＬＴが、Ｐサイクルで決定した命令を浮動小数点演算器２６に投入する。
（ｐ）Ｂ１、Ｂ２（Buffer)：浮動小数点演算器２６が、演算に必要なデータ（ソースレジスタ）を決定する。
（ｑ）Ｘ１、Ｘ２、Ｘ３、Ｘ４（Execute 1-4)：浮動小数点演算器２６が、命令を実行する。浮動小数点データの演算は、Ｘ１−Ｘ４の４サイクルで実行される。Ｘ４サイクルの次のサイクルで、演算により得られたデータがリネーミングレジスタ部３６へ格納される。
【０１１０】
図１０のロード命令は、キャッシュヒット時の動作を示す。キャッシュミス時には、Ｄ、ＤＴ、Ｐ、ＰＴ、Ｂ１、Ｂ２、Ａ、Ｔ、Ｍサイクルが、１番目のクロックサイクルより手前のクロックサイクルで実行される。そして、アドレス生成部２０およびデータキャッシュ２２は、７番目のクロックサイクルからＡ、Ｔ、Ｍサイクルを再度実行し、キャッシュヒット時に、Ｍサイクルに続けてＢ、Ｒ、ＲＴサイクルを再度実行する。すなわち、ロード命令におけるキャッシュミス時の動作は、図１０からＤ、ＤＴ、Ｐ、ＰＴ、Ｂ１、Ｂ２サイクルが削除される。
【０１１１】
また、図２に示す演算処理装置ＯＰＤ２は、デコーダ部１４が解読した命令の順に限定せず、実行可能な命令を実行するアウトオブオーダ実行を行う。このため、演算命令Ａ、Ｂ、Ｃ、Ｄにおいて、ＤＴサイクルの実行からＰサイクルの実行までのクロックサイクル数は、リザベーションステーションＲＳＦＬＴによる実行順の判定結果に依存して変化する。例えば、演算命令ＡのＤ、ＤＴサイクルは、１番目のクロックサイクルより手前のクロックサイクルで実行される。
【０１１２】
ロード命令において、アドレス生成部２０は、Ａサイクルでデータキャッシュへの１回のアクセスでデータを読み出せると判断し、データキャッシュ２２に図２に示すアクセス要求ＭＲＥＱＣを発行する。また、アドレス生成部２０は、アクセス要求ＭＲＥＱＣとともに、バイパス制御部２４に制御信号ＡＬＤＬ、ＡＬＤＨおよびアドレスＡＬＤＵＢＡを出力する（図１０（ａ））。
【０１１３】
バイパス制御部２４は、制御信号ＡＬＤＬ、ＡＬＤＨに応答してセット信号ＡＬＤＳＥＴを生成し、アドレスＡＬＤＵＢＡが示すフラグ領域ＦＬＧをセットすることでバイパス可能信号ＢＰＥＮを有効レベルに設定する（図１０（ｂ））。
【０１１４】
データキャッシュ２２は、ロード命令のＲサイクルにおいて読み出しサイクルを完了し、読み出した８バイトのデータをロードレジスタ３０に転送する（図１０（ｃ））。ロードレジスタ３０に転送されたデータは、ＲＴサイクルでリネーミングレジスタ部３６に転送される。リネーミングレジスタ部３６の書き込み制御部ＷＣＮＴ３（図４）は、ロードレジスタ３０から転送される８バイトのデータに基づいて、共通なタイミングで書き込み制御信号ＷＥ１Ｈ、ＷＥ１Ｌを生成する（図１０（ｄ））。そして、書き込み制御部ＷＣＮＴ３は、リネーミングレジスタＲＮＦＲのいずれかに８バイトのデータを格納する（図１０（ｅ））。例えば、書き込み制御部ＷＣＮＴ３は、リザベーションステーション１８から受ける有効レベルに設定されたバイパス可能信号ＢＰＥＮを示す情報に基づいてデータを格納するリネーミングレジスタＲＮＦＲを決定する。なお、例えば、リネーミングレジスタＲＮＦＲからのデータの読み出しは、２クロックサイクル掛かるため、リネーミングレジスタＲＮＦＲからのデータのバイパスは、１４番目のクロックサイクルから可能になる。
【０１１５】
リザベーションステーションＲＳＦＬＴは、リザベーションステーションＲＳＭＡがＢ１、Ｂ２サイクルでソースレジスタを決定した後、８番目のクロックサイクルで、バイパスが可能なことを判断する。そして、リザベーションステーションＲＳＦＬＴは、９番目のクロックサイクルで演算命令ＡのＰサイクルを実行し、演算命令Ａを浮動小数点演算器２６に投入する（図１０（ｆ））。
【０１１６】
浮動小数点演算器２６は、演算命令ＡのＢ２サイクルでロードレジスタ３０からバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１０（ｇ））。図１０において、太い破線で示す矢印は、データがロードレジスタ３０またはリネーミングレジスタＲＮＦＲから浮動小数点演算器２６にバイパスされることを示す。浮動小数点演算器２６は、演算命令ＢのＢ１サイクルでロードレジスタ３０からバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１０（ｈ））。
【０１１７】
また、浮動小数点演算器２６は、演算命令ＣのＢ２サイクルでリネーミングレジスタＲＮＦＲからバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１０（ｉ））。浮動小数点演算器２６は、演算命令ＤのＢ２サイクルでリネーミングレジスタＲＮＦＲからバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１０（ｊ））。
【０１１８】
図１１は、図２に示す演算処理装置ＯＰＤ２の動作の別の例を示す。図１０と同一または同様の動作については、詳細な説明は省略する。図１１では、先行する浮動小数点データの演算命令の実行後に複数の浮動小数点データの演算命令Ａ、Ｂ、Ｃ、Ｄが実行される。図１１において先行する演算命令では、倍精度浮動小数点データ、倍幅単精度浮動小数点データまたは単精度浮動小数点データが使用される。また、演算命令Ａ、Ｂ、Ｃ、Ｄは、先行する演算命令により得られたデータが浮動小数点レジスタＦＲに格納される前に、リザルトレジスタ３２またはリネーミングレジスタＲＮＦＲからバイパスさせるデータを使用して実行される。
【０１１９】
リザベーションステーションＲＳＦＬＴは、先行する演算命令のＢ１サイクルで、演算命令Ａ、Ｂ、Ｃ、Ｄで使用するデータをリザルトレジスタ３２またはリネーミングレジスタＲＮＦＲからバイパス可能と判断する。そして、リザベーションステーションＲＳＦＬＴは、制御信号Ｂ１ＦＰおよびアドレスＢ１ＦＰＵＢＡを出力する（図１１（ａ））。
【０１２０】
バイパス制御部２４は、制御信号Ｂ１ＦＰに応答してアドレスＢ１ＦＰＵＢＡが示すフラグ領域ＦＬＧをセットすることでバイパス可能信号ＢＰＥＮを有効レベルに設定する（図１１（ｂ））。
【０１２１】
浮動小数点演算器２６は、先行する演算命令をＸ１からＸ４サイクルで実行し、演算結果をＸ４サイクルでリザルトレジスタ３２に転送する（図１１（ｃ））。リザルトレジスタ３２に転送されたデータは、次のクロックサイクルでリネーミングレジスタＲＮＦＲに転送される（図１１（ｄ））。
【０１２２】
リザベーションステーションＲＳＦＬＴは、７番目のクロックサイクルで演算命令ＡのＰサイクルを実行し、演算命令Ａを浮動小数点演算器２６に投入する（図１１（ｅ））。浮動小数点演算器２６は、演算命令ＡのＸ１サイクルでリザルトレジスタ３２からバイパスされるデータを選択し、選択したデータを用いてＸ１サイクルから演算を開始する（図１１（ｆ））。浮動小数点演算器２６は、演算命令ＢのＢ２サイクルでリザルトレジスタ３２からバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１１（ｇ））。浮動小数点演算器２６は、演算命令ＣのＢ１サイクルでリザルトレジスタ３２からバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１１（ｈ））。浮動小数点演算器２６は、演算命令ＤのＢ２サイクルでリネーミングレジスタＲＮＦＲからバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１１（ｉ））。なお、図１０で説明したように、リネーミングレジスタＲＮＦＲからのデータの読み出しは、２クロックサイクル掛かるため、リネーミングレジスタＲＮＦＲからのデータのバイパスは、１３番目のクロックサイクルから可能になる。
【０１２３】
図１２は、図２に示す演算処理装置ＯＰＤ２の動作のさらなる別の例を示す。図１０と同一または同様の動作については、詳細な説明は省略する。図１２では、先行する倍幅単精度浮動小数点データのロード命令において、８バイトのデータがデータキャッシュ２２の２つのキャッシュラインを跨いで保持されている。また、演算命令Ａ、Ｂ、Ｃ、Ｄは、倍幅単精度浮動小数点データの演算を実行する命令であり、先行するロード命令により得られたデータが浮動小数点レジスタＦＲに格納される前にリネーミングレジスタＲＮＦＲからバイパスさせるデータを使用して実行される。
【０１２４】
ロード命令で読み出される倍幅単精度浮動小数点データが２つのキャッシュラインから読み出される場合、Ａ、Ｔ、Ｍ、Ｂ、Ｒ、ＲＴサイクルが間隔を置いて２回実行される（図１２（ａ）、（ｂ））。図２に示すアドレス生成部２０は、最初の読み出しサイクルで倍幅単精度浮動小数点データのうち上位４バイトを読み出し、２番目の読み出しサイクルで倍幅単精度浮動小数点データのうち下位４バイトを読み出す。
【０１２５】
アドレス生成部２０は、上位４バイトのデータをデータキャッシュ２２から読み出すための最初のＡサイクルにおいて、バイパス制御部２４に制御信号ＡＬＤＨおよびアドレスＡＬＤＵＢＡを出力する（図１２（ｃ））。１番目のクロックサイクルにおいて、バイパス制御部２４のセット信号生成回路ＳＳＧＥＮ（図７）は、無効レベルの制御信号ＡＬＤＬと有効レベルの制御信号ＡＬＤＨとを受け、セット信号ＡＳＤＳＥＴを無効レベルに維持する（図１２（ｄ））。このため、バイパス管理テーブルＢＰＴＢＬにおいて、アドレスＡＬＤＵＢＡが示すフラグ領域ＦＬＧはセットされず、バイパス可能信号ＢＰＥＮは出力されない（図１２（ｅ））。
【０１２６】
セット信号生成回路ＳＳＧＥＮは、アドレスＡＬＤＵＢＡを２クロックサイクル遅らせてアドレスＭＬＤＵＢＡを出力する（図１２（ｆ））。しかし、セット信号ＭＬＤＳＥＴが無効レベルに維持されるため、アドレスＡＬＤＵＢＡが示すフラグ領域ＦＬＧはセットされず、バイパス可能信号ＢＰＥＮは出力されない（図１２（ｇ））。
【０１２７】
データキャッシュ２２は、最初のアクセスサイクルのＲサイクルにおいて読み出した上位４バイトのデータをロードレジスタ３０に転送する（図１２（ｈ））。リネーミングレジスタ部３６の書き込み制御部ＷＣＮＴ３（図４）は、ロードレジスタ３０から転送される上位４バイトのデータに基づいて、書き込み制御信号ＷＥ１Ｈを生成する（図１２（ｉ））。そして、書き込み制御部ＷＣＮＴ３は、リネーミングレジスタＲＮＦＲのいずれかに上位４バイトのデータを格納する（図１２（ｊ））。例えば、書き込み制御部ＷＣＮＴ３は、リザベーションステーション１８から受ける有効レベルに設定されたバイパス可能信号ＢＰＥＮを示す情報に基づいてデータを格納するリネーミングレジスタＲＮＦＲを決定する。
【０１２８】
アドレス生成部２０は、下位４バイトのデータをデータキャッシュ２２から読み出すための最初のＡサイクルにおいて、バイパス制御部２４に制御信号ＡＬＤＬおよびアドレスＡＬＤＵＢＡを出力する（図１２（ｋ））。９番目のクロックサイクルにおいて、バイパス制御部２４のセット信号生成回路ＳＳＧＥＮは、有効レベルの制御信号ＡＬＤＬと無効レベルの制御信号ＡＬＤＨとを受け、セット信号ＡＳＤＳＥＴを無効レベルに維持する（図１２（ｌ））。このため、バイパス管理テーブルＢＰＴＢＬにおいて、アドレスＡＬＤＵＢＡが示すフラグ領域ＦＬＧはセットされず、バイパス可能信号ＢＰＥＮは出力されない（図１２（ｍ））。
【０１２９】
一方、セット信号生成回路ＳＳＧＥＮ（図７）におけるサイクル信号生成部ＭＳＧＥＮは、有効レベルの制御信号ＡＬＤＬと無効レベルの制御信号ＡＬＤＨと２クロックサイクル遅らせた信号を１１番目のクロックサイクルに受ける。そして、サイクル信号生成部ＭＳＧＥＮは、セット信号ＭＬＤＳＥＴを有効レベルに設定する（図１２（ｎ））。また、セット信号生成回路ＳＳＧＥＮは、アドレスＡＬＤＵＢＡを２クロックサイクル遅らせたアドレスＭＬＤＵＢＡを出力する（図１２（ｏ））。これにより、バイパス管理テーブルＢＰＴＢＬにおいて、アドレスＡＬＤＵＢＡが示すフラグ領域ＦＬＧがセットされ、バイパス可能信号ＢＰＥＮが出力される（図１２（ｐ））。
【０１３０】
データキャッシュ２２は、２番目のアクセスサイクルのＲサイクルにおいて読み出した下位４バイトのデータをロードレジスタ３０に転送する（図１２（ｑ））。リネーミングレジスタ部３６の書き込み制御部ＷＣＮＴ３（図４）は、ロードレジスタ３０から転送される下位４バイトのデータに基づいて、書き込み制御信号ＷＥ１Ｌを生成する（図１２（ｒ））。そして、書き込み制御部ＷＣＮＴ３は、リネーミングレジスタＲＮＦＲのいずれかに下位４バイトのデータを格納する（図１２（ｓ））。例えば、書き込み制御部ＷＣＮＴ３は、リザベーションステーション１８から受ける有効レベルに設定されたバイパス可能信号ＢＰＥＮを示す情報に基づいてデータを格納するリネーミングレジスタＲＮＦＲを決定する。
【０１３１】
これにより、８バイトの倍幅単精度浮動小数点データがリネーミングレジスタＲＮＦＲ内に揃い、リネーミングレジスタＲＮＦＲからの倍幅単精度浮動小数点データのバイパスが可能になる。なお、８バイトの倍幅単精度浮動小数点データが２つのキャッシュラインから読み出される場合、ロードレジスタ３０は、上位４バイトのデータまたは下位４バイトのデータを互いに異なるタイミングで保持する。このため、ロードレジスタ３０は、倍幅単精度浮動小数点データのバイパスには使用されない。換言すれば、バイパス制御部２４は、バイパス可能信号ＢＰＥＮの出力サイクルを図１０および図１１に比べて遅らせ、ロードレジスタ３０から浮動小数点演算器２６へのデータのバイパスを禁止する。データが揃っていないロードレジスタ３０からのバイパスを禁止することで、演算処理装置ＯＰＤ２の誤動作を抑制することができる。
【０１３２】
浮動小数点演算器２６は、演算命令Ａ、Ｂ、Ｃ、Ｄのそれぞれにおいて、Ｂ２サイクルでリネーミングレジスタＲＮＦＲからバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１２（ｔ）、（ｕ）、（ｖ）、（ｗ））。
【０１３３】
図１２に示すように、倍幅単精度浮動小数点データが２つのキャッシュラインから読み出される場合、バイパス制御部２４は、上位４バイトのデータより後に読み出される下位４バイトのデータの読み出しを待つ。さらに、バイパス制御部２４は、下位４バイトのデータの読み出しの開始に対応する制御信号ＡＬＤＬの生成から２クロックサイクル後に、フラグ領域ＦＬＧをセットし、バイパス可能信号ＢＰＥＮを出力する。
【０１３４】
これにより、リザベーションステーションＲＳＦＬＴは、図１０に比べて２クロックサイクル遅くイネーブル信号ＢＰＥＮを受ける。データキャッシュ２２からロードレジスタ３０へのデータの転送は、演算命令ＡのＰサイクルと同じサイクルで実行される。このため、演算命令ＡのＰサイクルにおいて、リザベーションステーションＲＳＦＬＴは、ロードレジスタ３０からのデータのバイパスをあきらめ、リネーミングレジスタＲＮＦＲからデータをバイパスさせることを決定する。この結果、倍幅単精度浮動小数点データがリネーミングレジスタＲＮＦＲに揃う前に、ロードレジスタ３０からデータがバイパスされることを抑止することができる。換言すれば、リザベーションステーションＲＳＦＬＴは、演算命令ＡのＰサイクルを、リネーミングレジスタＲＮＦＲからデータをバイパス可能な最も早いクロックサイクルに割り当てる。例えば、リネーミングレジスタＲＮＦＲからのデータの読み出しは２クロックサイクル掛かるため、演算命令ＡのＰサイクルは、１３番目のクロックサイクルに設定される。
【０１３５】
図１３は、図２に示す演算処理装置ＯＰＤ２の動作のさらなる別の例を示す。図１０と同一または同様の動作については、詳細な説明は省略する。図１３は、先行する浮動小数点データのロード命令または先行する浮動小数点データの演算命令の実行完了時の動作を示す。
【０１３６】
図１３において、７番目と８番目のクロックサイクルのＣサイクルとＷサイクルは、以下に示すように、命令の実行が完了したときのコミット制御部４４によるパイプラインのステージを示す。
（ａ）Ｃ（Commit)：コミット制御部４４が、命令の実行が完了したか否かを判定する。
（ｂ）Ｗ（Write)：コミット制御部４４が、実行が完了した命令で使用したリネーミングレジスタＲＮＦＲ、ＲＮＲ、浮動小数点レジスタＦＲ、固定小数点レジスタＲ等を更新する。また、コミット制御部４４が、レジスタ管理テーブル１６、リザベーションステーション１８、バイパス制御部２４等における命令で使用したリソースの解放を行う。
【０１３７】
例えば、先行するロード命令のＲＴサイクルまたは先行する演算命令のＸ４サイクルは、３番目のクロックサイクルで完了している。コミット制御部４４は、命令の完了処理を、デコーダ部１４が命令を解読した順（プログラムの記述順）に実行するため、Ｃサイクルは、先行して解読した命令の完了を待って実行される。この例では、Ｘ４サイクルまたはＲＴサイクルの４クロックサイクル後にＣサイクルが実行される。なお、Ｃサイクルは、最短で、ＲＴサイクルまたはＸ４サイクルの次のクロックサイクルで実行される。
【０１３８】
コミット制御部４４は、Ｗサイクルにおいて、制御信号ＷＣＭＴおよびアドレスＷＣＭＴＵＢＡをバイパス制御部２４に出力する（図１３（ａ））。アドレスＷＣＭＴＵＢＡは、ロード命令または演算命令で使用されたリネーミングレジスタＲＮＦＲを示す。
【０１３９】
また、コミット制御部４４は、Ｗサイクルにおいて、レジスタ管理テーブル１６にリセット信号ＲＳＴ１を出力し、リザベーションステーション１８にリセット信号ＲＳＴ２を出力する（図１３（ｂ））。さらに、コミット制御部４４は、Ｗサイクルにおいて、リネーミングレジスタ部３６に読み出し要求ＲＣＭＴ１を出力する（図１３（ｃ））。コミット制御部４４は、読み出し要求ＲＣＭＴ１から２クロックサイクル後に、浮動小数点レジスタ部４０に書き込み要求ＷＣＭＴ１を出力する（図１３（ｄ））。図１０で説明したように、２クロックサイクルは、リネーミングレジスタＲＮＦＲからの読み出しに掛かる時間である。
【０１４０】
なお、図１３では、リセット信号ＲＳＴ１、ＲＳＴ２は、単一の信号で示されるが、リセット信号ＲＳＴ１、ＲＳＴ２のそれぞれは、複数ビットの信号である。例えば、リセット信号ＲＳＴ１、ＲＳＴ２は、アドレスＷＣＭＴＵＢＡと同じ情報を含む。同様に、読み出し要求ＲＣＭＴ１および書き込み要求ＷＣＭＴ１のそれぞれは、単一の信号で示されるが、読み出し要求ＲＣＭＴ１および書き込み要求ＷＣＭＴ１のそれぞれは、複数ビットの信号である。例えば、読み出し要求ＲＣＭＴ１および書き込み要求ＷＣＭＴ１は、リネーミングレジスタＲＮＦＲおよび浮動小数点レジスタＦＲの番号を示す情報を含む。
【０１４１】
バイパス制御部２４は、制御信号ＷＣＭＴに応答してアドレスＷＣＭＴＵＢＡが示すフラグ領域ＦＬＧをリセットすることでバイパス可能信号ＢＰＥＮを無効レベルに設定する（図１３（ｅ））。
【０１４２】
レジスタ管理テーブル１６は、リセット信号ＲＳＴ１に基づいて、リセット信号ＲＳＴ１で指示されるリネーミングレジスタＲＮＦＲに対応する領域のビット値Ｐをリセットする（図１３（ｆ））。リザベーションステーション１８は、リセット信号ＲＳＴ２に基づいて、リセット信号ＲＳＴ２で指示されるリネーミングレジスタＲＮＦＲに対応して保持しているビット値Ｐをリセットする。
【０１４３】
リネーミングレジスタ部３６は、読み出し要求ＲＣＭＴ１に基づいて、読み出し要求ＲＣＭＴ１で指示されるリネーミングレジスタＲＮＦＲからデータを出力する。浮動小数点レジスタ部４０は、書き込み要求ＷＣＭＴ１に基づいて、リネーミングレジスタＲＮＦＲから出力されるデータを、書き込み要求ＷＣＭＴ１で指示される浮動小数点レジスタＦＲに格納する（図１３（ｇ））。すなわち、リネーミングレジスタＲＮＦＲから浮動小数点レジスタＦＲにデータが転送される。
【０１４４】
リザベーションステーションＲＳＦＬＴは、ビット値Ｐがリセットされる前の７番目のクロックサイクルで、リネーミングレジスタＲＮＦＲからデータをバイパス可能と判断する。そして、リザベーションステーションＲＳＦＬＴは、８番目のクロックサイクルにおいて、演算命令ＡのＰサイクルを実行し、演算命令Ａを浮動小数点演算器２６に投入する（図１３（ｈ））。
【０１４５】
同様に、リザベーションステーションＲＳＦＬＴは、ビット値Ｐがリセットされる前の８番目のクロックサイクルで、リネーミングレジスタＲＮＦＲからデータをバイパス可能と判断する。そして、リザベーションステーションＲＳＦＬＴは、９番目のクロックサイクルにおいて、演算命令ＢのＰサイクルを実行し、演算命令Ｂを浮動小数点演算器２６に投入する（図１３（ｉ））。
【０１４６】
浮動小数点演算器２６は、演算命令ＡのＢ２サイクルでリネーミングレジスタＲＮＦＲからバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１３（ｊ））。浮動小数点演算器２６は、演算命令ＢのＢ２サイクルでリネーミングレジスタＲＮＦＲからバイパスされるデータを選択し、選択したデータをＸ１サイクルで使用する（図１３（ｋ））。
【０１４７】
一方、リザベーションステーションＲＳＦＬＴは、ビット値Ｐがリセットされた後の９番目のクロックサイクルで、リネーミングレジスタＲＮＦＲからのデータのバイパスは無理であると判断する。そして、リザベーションステーションＲＳＦＬＴは、１０番目のクロックサイクルにおいて、演算命令ＣのＰサイクルを実行し、演算命令Ｃを浮動小数点演算器２６に投入する（図１３（ｌ））。浮動小数点演算器２６は、演算命令ＣのＢ２サイクルで浮動小数点レジスタＦＲからデータを読み出し、読み出したデータをＸ１サイクルで使用する（図１３（ｍ））。
【０１４８】
以上、図２から図１３に示す実施形態においても、図１に示す実施形態と同様の効果を得ることができる。すなわち、データキャッシュ２２からリネーミングレジスタＲＮＦＲへロードされるデータのタイミングずれが発生する場合にも、既存のリネーミングレジスタＲＮＦＲを利用してデータを待ち合わせることができる。また、バイパス制御部２４は、図７で説明した簡易な回路により、データがデータキャッシュ２２から１回で読み出されるか複数回に分けて読み出されるかを判定することができる。この結果、演算処理装置ＯＰＤ２の回路規模の増加を抑制することができ、演算処理装置ＯＰＤ２の消費電力の増加を抑えることができ、演算処理装置ＯＰＤ２の動作周波数を向上させることができる。
【０１４９】
例えば、データがデータキャッシュ２２から複数回に分けて読み出される場合にも、図４で説明したように、リネーミングレジスタ部３６の回路規模を従来と同等にすることができる。また、データキャッシュ２２から異なるタイミングで読み出されるデータをリネーミングレジスタＲＮＦＲで結合することできるため、データの結合用の回路は演算処理装置ＯＰＤ２に設けられない。
【０１５０】
さらに、データがデータキャッシュ２２から複数回に分けて読み出される場合、バイパス制御部２４は、データが揃っていないロードレジスタ３０からのバイパスを禁止することで、演算処理装置ＯＰＤ２の誤動作を抑制することができる。
【０１５１】
一方、例えば、上位４バイトと下位４バイトとのデータに対応して、２ビットを記憶可能なフラグ領域ＦＬＧをバイパス管理テーブルＢＰＴＢＬに設け、２ビットが両方セットされたときにデータが揃ったと判断して２つの４バイトデータを結合してもよい。しかしながら、この場合、バイパス管理テーブルＢＰＴＢＬの規模が大きくなり、また、フラグ領域ＦＬＧの各ビットをセットする制御回路が追加される。さらに、データキャッシュ２２の出力で上位４バイトと下位４バイトとのデータを結合する場合、下位４バイトのデータがデータキャッシュ２２から出力されるまで、先に出力された上位４バイトのデータを保持するバッファ回路が設けられる。このため、回路規模は増加する。
【０１５２】
なお、図２から図１３に示す実施形態は、ロード命令に基づいて、データキャッシュ２２から複数回に分けて出力される固定小数点データを固定小数点レジスタＲに転送する場合のバイパス制御に適用されてもよい。
【０１５３】
また、上述した実施形態は、ＳＩＭＤ（single instruction multiple data）方式の演算処理装置に適用されてもよい。この場合、図３に示す各浮動小数点レジスタＦＲは、並列処理される複数のデータ群を格納する複数の領域を有し、図４に示す各リネーミングレジスタＲＮＦＲは、並列処理される複数のデータ群を格納する複数の領域を有する。また、浮動小数点演算器２６は、複数のデータ群を並列に演算する複数の演算器を有する。なお、ロード命令に基づいて、データキャッシュ２２から３回以上に分けてデータが読み出される場合、バイパス制御部は、最後に読み出すデータの開始信号（ＡＬＤＬ等）に基づいて、バイパス可能信号ＢＰＥＮを生成する。
【０１５４】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１５５】
１…デコーダ部；２…実行制御部；３…演算実行部；４…メモリ制御部；５…メモリ；６…バイパス制御部；７…第１レジスタ；８…第２レジスタ；９…レジスタ管理部；１０…命令キャッシュ；１２…命令バッファ；１４…デコーダ部；１６…レジスタ管理テーブル；１８…リザベーションステーション；２０…アドレス生成部；２２…データキャッシュ；２４…バイパス制御部；２６…浮動小数点演算器；２８…固定小数点演算器；３０…ロードレジスタ；３２、３４…リザルトレジスタ；３６、３８…リネーミングレジスタ部；４０…浮動小数点レジスタ部；４２…固定小数点レジスタ部；４４…コミット制御部；ＡＬＤＬ、ＡＬＤＨ…制御信号；ＡＬＤＵＢＡ…アドレス；ＡＳＧＥＮ…サイクル信号生成部；ＢＰＥＮ…バイパス可能信号；ＢＰＴＢＬ…バイパス管理テーブル；ＦＬＧ…フラグ領域；ＦＲ…浮動小数点レジスタ；ＭＲＥＱ、ＭＲＥＱＣ…アクセス要求；ＭＳＧＥＮ…サイクル信号生成部；ＯＰＤ１、ＯＰＤ２…演算処理装置；Ｒ…固定小数点レジスタ；ＲＭＴＢＬ１、ＲＭＴＢＬ２…テーブル；ＲＮＦＲ、ＲＮＲ…リネーミングレジスタ；ＲＳＦＬＴ、ＲＳＦＩＸ、ＲＳＭＡ…リザベーションステーション；ＳＳＧＥＮ…セット信号生成回路；ＴＳＣＮＴ…テーブル
【図１】
2015201026.tif 000003
【図２】
2015201026.tif 000004
【図３】
2015201026.tif 000005
【図４】
2015201026.tif 000006
【図５】
2015201026.tif 000007
【図６】
2015201026.tif 000008
【図７】
2015201026.tif 000009
【図８】
2015201026.tif 000010
【図９】
2015201026.tif 000011
【図１０】
2015201026.tif 000012
【図１１】
2015201026.tif 000013
【図１２】
2015201026.tif 000014
【図１３】
2015201026.tif 000015