(57)【要約】【課題】  フロー依存にある先行命令および後続命令を処理する場合に、複雑な処理を必要とせずに処理時間を短縮する。【解決手段】  本発明の命令融合演算装置は、命令融合検出回路と命令融合回路と演算器とを備える。命令融合検出回路は、フロー依存にある先行命令および後続命令の融合が可能か否かを判断する。命令融合回路は、命令融合検出回路により融合可能と判断された先行命令と後続命令とを１つの命令に融合する。演算器は、命令融合回路により融合された命令を実行して演算結果を出力するとともに、先行命令および後続命令の演算結果の少なくとも１つを途中結果として出力する。【選択図】      図１
2010271818.tif 000002
【特許請求の範囲】
【請求項１】
フロー依存にある先行命令および後続命令の融合が可能か否かを判断する命令融合検出回路と、
前記命令融合検出回路により融合可能と判断された先行命令と後続命令とを１つの命令に融合する命令融合回路と、
前記命令融合回路により融合された命令を実行して演算結果を出力するとともに、前記先行命令および前記後続命令の演算結果の少なくとも１つを途中結果として出力する演算器と、
を備えることを特徴とする命令融合演算装置。
【請求項２】
前記命令融合検出回路は、前記先行命令が乗算命令でありかつ前記後続命令が加算命令である場合、または、前記先行命令が加算命令でありかつ前記後続命令が乗算命令である場合、または、前記先行命令および前記後続命令が加算命令である場合、または、前記先行命令および前記後続命令が乗算命令である場合、前記先行命令と前記後続命令とがフロー依存の関係にあるとき、前記先行命令と前記後続命令とが融合可能と判断することを特徴とする請求項１記載の命令融合演算装置。
【請求項３】
命令列中において融合可能と判断された前記先行命令と前記後続命令との間に他の命令が存在するとき、前記後続命令の追い越し処理を行う命令追い越し回路を備えることを特徴とする請求項１または２記載の命令融合演算装置。
【請求項４】
リプライパスを介して演算器に接続された汎用レジスタを備え、前記リプライパス上にバッファを備えることを特徴とする請求項１ないし３のいずれか１項に記載の命令融合演算装置。
【請求項５】
前記リプライパスが前記汎用レジスタの書き込みポートの数よりも多いとき、前記汎用レジスタの書き込みポートの数に合わせて前記リプライパスを統合することを特徴とする請求項４記載の命令融合演算装置。
【請求項６】
複数の演算器を備え、前記演算器毎に実行のタイミングを変えることを特徴とする請求項１ないし５のいずれか１項に記載の命令融合演算装置。
【請求項７】
前記演算器の入力側と出力側とがバイパスパスで接続され、
前記バイパスパスを介して演算結果が前記演算器に直接入力されることを特徴とする請求項１ないし６のいずれか１項に記載の命令融合演算装置。
【請求項８】
フロー依存にある先行命令および後続命令の融合が可能か否かを判断する命令融合検出回路を備えた命令融合演算装置において、
前記命令融合検出回路により融合可能と判断された先行命令と後続命令とを１つの命令に融合する融合ステップと、
前記融合された命令を実行して演算結果を出力するとともに、先行命令および後続命令の演算結果の少なくとも１つを途中結果として出力する実行ステップと、
を有することを特徴とする命令融合演算方法。
【請求項９】
前記融合ステップにおいて、
前記先行命令が乗算命令でありかつ前記後続命令が加算命令である場合、または、前記先行命令が加算命令でありかつ前記後続命令が乗算命令である場合、または、前記先行命令および前記後続命令が加算命令である場合、または、前記先行命令および前記後続命令が乗算命令である場合、前記先行命令と前記後続命令とがフロー依存の関係にあるとき、前記先行命令と前記後続命令とを融合可能と判断して１つの命令に融合することを特徴とする請求項８記載の命令融合演算方法。
【請求項１０】
前記命令融合演算装置は命令追い越し回路を備え、
前記命令追い越し回路は、命令列中において融合可能と判断された前記先行命令と前記後続命令との間に他の命令が存在するとき、前記後続命令の追い越し処理を行う追い越しステップを有することを特徴とする請求項８または９記載の命令融合演算方法。
【請求項１１】
リプライパスを介して演算器に接続された汎用レジスタとバッファとを備え、
前記演算器は、前記融合された命令の実行結果を所定の時間バッファに格納した後、汎用レジスタに送り出すことを特徴とする請求項８ないし１０のいずれか１項記載の命令融合演算方法。
【請求項１２】
前記リプライパスが前記汎用レジスタの書き込みポートの数よりも多いとき、前記汎用レジスタの書き込みポートの数に合わせて前記リプライパスを統合するステップを有することを特徴とする請求項８ないし１１のいずれか１項に記載の命令融合演算方法。
【請求項１３】
前記命令融合演算装置は複数の演算器を備え、
前記実行ステップにおいて、前記演算器毎に実行のタイミングが異なることを特徴とする請求項８ないし１２のいずれか１項に記載の命令融合演算方法。
【請求項１４】
前記演算器の入力側と出力側とがバイパスパスで接続され、
前記演算器は、前記バイパスパスを介して演算結果を前記演算器に直接入力することを特徴とする請求項８ないし１３のいずれか１項に記載の命令融合演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は命令融合演算装置および命令融合演算方法に関し、特に、複雑な処理を必要とせずに処理時間を短縮することが可能な命令融合演算装置および命令融合演算方法に関する。
【背景技術】
【０００２】
一般的に、命令演算装置では、
命令１：fmp S3←S1*S2
命令２：fmp S5←S3*S4
命令３：fad S6←S3+S4
命令４：fad S8←S6+S7
（fmp: Floating Multiply  浮動小数点乗算，  fad: Floating Add  浮動小数点加算）
の命令列を実行する場合、命令１の結果を命令２および命令３が参照する複数のフロー依存関係となっており、命令１が完了しないと命令２および命令３を実行できない状況にあった。この命令を、複合演算器である積和演算器で実行させるために積和命令を使用する命令列に置き換えてみると、以下のようになる。
命令１：fmp S3←S1*S2
命令２：fmp S5←S3*S4
命令３’：fad S6←S1*S2+S4
命令４：fad S8←S6+S7  
命令３が積和命令の命令３’に置換されるだけであって、データ依存関係どおりにデータ処理を行う必要があり、処理時間短縮にはならない。つまり、複数のフロー依存関係がある命令列では、複合命令に置き換えても高速化できない。
【０００３】
特許文献１には、命令シーケンスAを複数回繰り返す命令ループの最終ループと引き続いて行われる命令シーケンスBのイニシャライズ処理との間の命令追い越しを行うため、データの依存関係があるか否かを表すクラスビットを命令の所定のフィールドに設けて追い越し制御を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−０２０３１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１は、予め、データの依存関係があるか否かを表すクラスビットを命令の所定フィールドに設けなければならない。
【０００６】
本発明の目的は、フロー依存にある先行命令および後続命令の処理において、予めクラスビットを所定フィールドに設ける等の複雑な処理を行うことなく、処理時間を短縮することが可能な命令融合演算装置および命令融合演算方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の命令融合演算装置は、フロー依存にある先行命令および後続命令の融合が可能か否かを判断する命令融合検出回路と、命令融合検出回路により融合可能と判断された先行命令と後続命令とを１つの命令に融合する命令融合回路と、命令融合回路により融合された命令を実行して演算結果を出力するとともに、先行命令および後続命令の演算結果の少なくとも１つを途中結果として出力する演算器とを備えることを特徴とする。
【０００８】
本発明の命令融合演算方法は、フロー依存にある先行命令および後続命令の融合が可能か否かを判断する命令融合検出回路を備えた命令融合演算装置において、命令融合検出回路により融合可能と判断された先行命令と後続命令とを１つの命令に融合する融合ステップと、融合された命令を実行して演算結果を出力するとともに、先行命令および後続命令の演算結果の少なくとも１つを途中結果として出力する実行ステップとを有することを特徴とする。
【発明の効果】
【０００９】
本発明は、複雑な処理を必要とせずに処理時間を短縮することができるという効果を有する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の命令融合演算装置の第１の実施形態に係る回路構成を示す図である。
【図２】一般的に用いられている命令融合演算装置において命令列を実行したときのタイムチャートである。
【図３】本発明の第１の実施形態において、命令追い越しのみ行った場合のタイムチャートである。
【図４】本発明の第１の実施形態におけるタイムチャートである。
【図５】本発明の第２の実施形態におけるタイムチャートである。
【図６】本発明の第３の実施形態におけるタイムチャートである。
【図７】本発明の第４の実施形態におけるタイムチャートである。
【図８】本発明の命令融合演算装置の第２の実施形態に係る回路構成を示す図である。
【図９】本発明の命令融合演算装置の第３の実施形態に係る回路構成を示す図である。
【図１０】本発明の命令融合演算装置の第４の実施形態に係る回路構成を示す図である。
【図１１】一般的に用いられている命令融合演算装置の回路構成を示す図である。
【発明を実施するための形態】
【００１１】
図１に、本発明の命令融合演算装置の第１の実施形態に係る回路構成を示す。
【００１２】
命令融合演算装置１は、融合命令検出回路３と、命令追い越し回路４と、命令融合回路６と、退避レジスタ８と、書き込みポートを４つ有する汎用レジスタ９と、積和演算器１０および１１と、レジスタ２、５および７とから構成される。命令追い越し回路４はIR（Instruction Reservation）レジスタ４１を備える。図１では、積和演算器をfma（Floating fused Multiply-Add，浮動小数点積和）と示す。
【００１３】
図１を参照して、本実施形態の動作の概要について説明する。
【００１４】
融合命令検出回路３は、IF（Instruction Fetch：命令取出し）ステージで、先行命令と後続命令との融合が可能か否かのチェックを行う。融合可能と判断された場合、命令追い越し回路４の命令追い越し機構は、フロー依存が発生していても命令追い越しを行うように動作する。これにより、命令同士の融合頻度を上げることができる。なお、本実施形態では、フロー依存にある命令が加算命令および乗算命令のとき命令融合可能としているが（フロー依存にある加算命令および乗算命令を融合可能な積和演算器を使用しているため）、これに限定されるものではない。フロー依存にある２つの命令が加算命令の場合、あるいは、フロー依存にある２つの命令が乗算命令の場合であっても、各々の場合に対応可能な複合演算器を用いることにより命令融合が可能である。
【００１５】
命令融合可能と判断された場合、DEC（DECode：命令解読）ステージでは、命令融合回路６が先行命令と後続命令との命令融合を行い、それら２つの命令を１つの融合命令に置き換え、レジスタ７に格納する。
【００１６】
次に、命令融合回路６は、IS（ISsue：命令発行）ステージで、命令発行に必要なリソースをチェックし、発行可能と判断したらレジスタ７に対し融合命令の発行指示を行う。
【００１７】
一方、融合命令の発行を待たされる場合には、命令融合回路６は退避レジスタ８に当該融合命令を格納し、発行可能になるまで待たせる(RS（Reservation：保留）ステージ)。
【００１８】
命令が発行されると、RD（Read Data：データ読出し）ステージで、積和演算器１０および１１は汎用レジスタ９からレジスタ７内の命令で指定されるデータを読み出す。
【００１９】
次に、積和演算器１０および１１は、EX1,EX2（EXecution1, EXecution2：命令実行）ステージで、レジスタ７内の命令で指定される演算処理を行い、その後、WD（Write Data：データ書込み）ステージで演算の途中結果および演算最終結果を汎用レジスタに書き込む。本実施形態では、積和演算器は、融合命令の最終結果に加え、途中結果も出力するように設計されている。
【００２０】
次に、図１を参照して、本実施形態の動作について詳細に説明する。
【００２１】
まず、IFステージで、レジスタ２が後続命令のオペコードをフェッチする。
【００２２】
次に、このオペコードに基づいて、融合命令検出回路３が先行命令との依存関係のチェックを行う。先行命令とフロー依存にあっても命令追い越しにより命令融合が可能な場合は、命令融合検出回路３は「融合可能」と判断し、命令追い越し処理を行わせる。すなわち、命令追い越し回路４が先行命令をIRレジスタ４１に一旦保持し、後続命令を優先処理する。
【００２３】
命令追い越し回路４を通過したのち、DECステージのレジスタ５は命令情報を保持し、必要な情報を得るためのデコードが行われ、このデコード結果に基づき、融合できる２つの命令が命令融合回路６で１つの融合命令に変換される。
【００２４】
次に、ISステージのレジスタ７は融合命令情報を保持し、融合命令の実行開始に必要なリソースチェックを行い、リソースが確保できる場合には命令発行を行う。
【００２５】
リソースが確保できず、融合命令の発行が待たされる場合は、発行可能になるまで、退避レジスタ８が融合命令情報を保持しておく(RSステージ)。
【００２６】
融合命令が発行されると、汎用レジスタ９から当該命令のオペランドにより指定されるデータが読み出され、バイパスセレクタにより、積和演算器１０および１１へ供給される(RDステージ)。
【００２７】
その後、積和演算器１０および１１へ命令実行指示がなされ、EX1ステージ、EX2ステージで演算処理が行われる。積和演算器１０での演算結果はリプライパス１０１とリプライパス１０２とを介して汎用レジスタ９に書き込まれる（WDステージ）。同様に、積和演算器１１での演算結果はリプライパス１１１とリプライパス１１２とを介して汎用レジスタ９に書き込まれる。
【００２８】
なお、本実施形態では、積和演算器１０および１１を用いているが、これに限定されるものではなく、他の複合演算器でも良い。
【００２９】
次に、本実施形態の動作について、以下の具体的な命令列を用いて、一般的に用いられている構成と対比して説明する。
（命令列）
命令１：fmp  S3←S1*S2
命令２：fmp  S5←S3*S4
命令３：fad S6←S3+S4
命令４：fad S8←S6+S7  
図１１に、一般的に用いられている命令融合演算装置１８の回路構成を示す。命令融合演算装置１は、レジスタ２、５および７と、退避レジスタ８と、汎用レジスタ９と、積和演算器１０および１１とから構成される。
【００３０】
図２に、本装置で上記命令列を実行した場合のタイムチャートを示す。
【００３１】
タイミング１で、命令１と命令２のフェッチ(IF)が行われる。
【００３２】
タイミング２で、命令１と命令２のデコード(DEC)が行われ、タイミング３で発行(IS)が行われる。命令２は、命令１とフロー依存になっているので、タイミング７で命令１の結果が得られるまでRSステージで発行が待たされる。タイミング８で命令２の実行が再開され、汎用レジスタ９から命令１の演算結果データが読み出され、タイミング１１で演算結果が汎用レジスタに書き込まれる。
【００３３】
命令３および命令４は、タイミング２でフェッチ(IF)され、タイミング３でデコード(DEC)され、タイミング４で発行(IS)される。
【００３４】
命令３は命令１のフロー依存であり、命令４は命令３のフロー依存となっている。
【００３５】
命令３は命令１の結果が得られるまでRSステージで発行が待たされ、命令４は命令３の結果が得られるまでRSステージで発行が待たされる。
【００３６】
タイミング８で汎用レジスタから命令１の演算結果データが読み出され、タイミング１１で命令３の演算結果データが汎用レジスタに書き戻される。
【００３７】
さらに、タイミング１２で汎用レジスタから命令３の演算結果データが読み出され、タイミング１５で命令４の演算結果が汎用レジスタに書き戻される。
【００３８】
次に、本実施形態の動作で上記命令列を実行した場合のタイムチャートについて説明する。
【００３９】
図３に、命令追い越しのみを行った場合のタイムチャートを示す。
【００４０】
タイミング１で、命令１と命令２とのフェッチ(IF)を行う。命令２は、命令１とフロー依存関係にありかつ同じ乗算命令なので命令融合できないが、後続命令３は、命令１とフロー依存関係にあるが加算命令なので命令１と命令融合できる。そのため、命令２は、タイミング２でIRレジスタ２に格納される。
【００４１】
この場合、命令１は、後続命令３の追い越しにより命令融合できるので、タイミング３までDECステージにて待たされることになる。図２に示す命令融合されないケースでは、命令１はタイミング２でDECステージに移り、タイミング３では次のステージに移るので、図３の場合には図２の場合に比べ１タイミング遅れる結果となる。それ以降の動作も、全て１タイミング遅れて実行されることとなる。
【００４２】
次に、本実施形態におけるように、命令追い越し処理と命令融合処理との両方を実行した場合のタイムチャートを図４に示す。
【００４３】
図４では、タイミング１で命令１と命令２とのフェッチ(IF)が行われる。
【００４４】
命令２は、命令１とフロー依存関係にあるが同じ乗算命令なので命令融合できない。一方、後続命令３は命令１とフロー依存関係にあるが加算命令なので命令１と命令融合できる。そのため、命令２は、タイミング２でフェッチされ、IRレジスタ４１に格納される。
【００４５】
命令１は、後続命令３の追い越しにより命令融合できるので、タイミング３までDECステージにて待たされる。命令３は、タイミング３のＤＥＣステージでデコードされた後、待たされていた命令１と命令融合回路６により融合される。
【００４６】
融合された命令はタイミング４で発行(IS)され、タイミング５で汎用レジスタから演算対象データが読み出され(RD)、タイミング６および７でそれらデータが演算器で実行(EX1,EX2)され、タイミング８で演算結果が汎用レジスタに書き込まれる(WD)。
【００４７】
図４から明らかなように、本実施形態では、命令１と命令３の融合命令である命令１’の演算結果の汎用レジスタ書き込みが、図２の命令３による演算結果の書き込みに比べて、３タイミング高速化されている。
【００４８】
一方、命令２は、タイミング４でIRレジスタ４１からDECステージに移りデコード処理され、融合命令１’の結果が得られるタイミング８までRSステージで発行が待たされ、タイミング９で演算対象のデータが汎用レジスタから読み出され、タイミング１０および１１のEXおよび,EX2ステージでそれらデータに対して演算処理が行われ、タイミング１２で演算結果が汎用レジスタに書き込まれる。
【００４９】
また、命令４については、タイミング２でフェッチ(IF)処理、タイミング３でデコード(DEC)処理がなされた後、フロー依存関係のある先行命令の結果が得られるタイミング８までRSステージで命令発行が待たされる。その後、タイミング９で汎用レジスタからの演算対象データの読み出し、タイミング１０および１１のEX1および,EX2ステージでそれらデータに対する演算処理、タイミング１２で演算結果の汎用レジスタへの書き込みが行われる。
【００５０】
以上のように、本実施形態には、フロー依存にある先行命令および後続命令の命令融合を行い、さらにフロー依存にある命令間のデータ受け渡しを、汎用レジスタを介した受け渡しでなく積和演算器のような複合演算器内で行うようにしたため、複雑な処理を必要とせずに処理時間を短縮できるという効果がある。また、命令追い越し処理により命令の並びを変えることで、命令融合の範囲を広げることもできる。
【００５１】
次に、第２の実施形態として、命令追い越し処理と命令融合処理とを合わせ、汎用レジスタの書き込みポートを減らし、他の積和演算器のリプライパスを使用した場合ついて説明する。図８に、本実施形態の命令融合演算装置１５の回路構成を、図５に本実施形態のタイムチャートをそれぞれ示す。
【００５２】
命令１および命令３の融合命令である命令１’の演算結果の汎用レジスタへの書き込みをタイミング８で実行するまでは、図６と同じである。命令２と命令４については、同一タイミングで実行しようとすると、２つの積和演算器の最終結果と途中結果の４つのリプライパスでの競合が発生するので、命令４の実行指示を１タイミング遅らせ、タイミング１２で命令２の結果を、タイミング１３で命令４の結果を汎用レジスタにそれぞれ書き込むように処理が行われる。
【００５３】
第２の実施形態では、第１の実施形態と同様の効果に加え、汎用レジスタ９の書き込みポートを増やすことなく書き込み競合を防ぐことができるという効果がある。
【００５４】
次に、第３の実施形態として、命令追い越し処理と命令融合処理とを合わせ、汎用レジスタ書き込みポートを増やさず、リプライパスが空くまで待たせる場合について説明する。
【００５５】
図９に、本実施形態の命令融合演算装置１６の回路構成を示す。リプライパス上にバッファ１２および１３を備える点のみが第２の実施形態（図８）と異なる。
【００５６】
図６に本実施形態のタイミングチャートを示す。
【００５７】
命令１と命令３の融合命令である命令１’の処理については図５と同じである。
【００５８】
命令２および命令４の実行指示を同一タイミングで行うと、４つのリプライパスに対して２ポートしかないため、タイミング１２で汎用レジスタの書き込みポートの競合が発生する。
【００５９】
しかし、途中結果パス上に用意されたバッファ１２および１３にデータを保持できるので、同一タイミングで実行指示を行う。途中結果パス上に用意されたバッファ１２および１３にデータを保持して、競合が解消するタイミング１３で書き込みを行う。
【００６０】
本実施形態では、第２の実施形態と同様の効果がある。
【００６１】
次に、第４の実施形態として、命令追い越し処理と命令融合処理とを合わせ、汎用レジスタ書き込みポートを増やさず、リプライパスが空くまで待たせる処理（第３の実施形態）に、バイパス動作を追加した場合について説明する。
【００６２】
図１０に、本実施形態の命令融合演算装置１７の回路構成を示す。バイパスパス１４１〜１４４を備える点のみが第１の実施形態と異なる。
【００６３】
図７に本実施形態のタイミングチャートを示す。
【００６４】
命令追い越しを行い命令融合させた処理にバイパス動作を行うと、先行命令１’の演算結果がタイミング７で得られる。命令１’とフロー依存にある命令２および命令４の実行指示は、タイミング８で先行演算結果を演算器入力にセットできるように制御する。そうすることで、命令２と命令４の演算結果はタイミング９で得られるが、４つのリプライパスが２ポートしかない汎用レジスタへの書き込みポートで競合が発生する。
【００６５】
しかし、途中結果パス上に用意されたバッファにデータを保持できるので、同一タイミングで実行指示を行う。途中結果パス上に用意されたバッファにデータを保持して、競合が解消するタイミング１１で書き込み処理を行う。
【００６６】
本実施形態では、演算結果を積和演算器１１、１２に直接入力するバイパスパスを設けたことで、第１の実施形態よりもさらに処理時間を短縮することができるという効果がある。
【符号の説明】
【００６７】
１    命令融合演算装置
２    レジスタ
３    融合命令検出回路
４    命令追い越し回路
４１  IRレジスタ
５    レジスタ
６    命令融合回路
７    レジスタ
８    退避レジスタ
９    汎用レジスタ
１０  積和演算器
１１  積和演算器
１２  バッファ
１３  バッファ
１４１〜１４４  バイパスバス
１５〜１８  命令融合演算装置
【図１】
2010271818.tif 000003
【図２】
2010271818.tif 000004
【図３】
2010271818.tif 000005
【図４】
2010271818.tif 000006
【図５】
2010271818.tif 000007
【図６】
2010271818.tif 000008
【図７】
2010271818.tif 000009
【図８】
2010271818.tif 000010
【図９】
2010271818.tif 000011
【図１０】
2010271818.tif 000012
【図１１】
2010271818.tif 000013