(57)【要約】【課題】  ２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減する。【解決手段】  ステートマシンＴ１は、フォワーディング機構を利用したベクトルパイプライン処理において、論理回路Ｒ２にて得られた２つ前の系列の演算結果が論理回路Ｒ１で行われる今回の系列の実行ステージにバイパスされるように、セレクタＳ１、Ｓ２の切り替え制御を行う。【選択図】      図１
2006285721.tif 000002
【特許請求の範囲】
【請求項１】
２サイクルで演算処理を実行する演算処理部と、
前記演算処理部にて得られた２つ前の系列の２サイクル目の演算結果を今回の系列の１サイクル目の実行ステージにバイパスさせるステートマシンとを備えることを特徴とする演算処理装置。
【請求項２】
前記ステートマシンは、
前記演算処理部にて得られた偶数番目の要素の２サイクル目の演算結果を次の偶数番目の要素の１サイクル目の実行ステージにバイパスさせるとともに、前記演算処理部にて得られた奇数番目の要素の２サイクル目の演算結果を次の奇数番目の要素の１サイクル目の実行ステージにバイパスさせることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記ステートマシンは、
偶数番目の全ての要素の演算と奇数番目の全ての要素の演算が終了した後、１サイクル分の空処理を挿入してから、偶数番目の要素の演算結果と奇数番目の要素の演算結果とを前記演算処理部にて演算させることを特徴とする請求項２記載の演算処理装置。
【請求項４】
第１系列の１サイクル目の実行ステージにて演算処理するステップと、
前記第１系列の１サイクル目の実行ステージにて処理された演算結果を前記第１系列の２サイクル目の実行ステージにて処理するステップと、
前記第１系列の２サイクル目の実行ステージにて処理された演算結果を、前記第１系列の２つ後の第３系列の１サイクル目の実行ステージにバイパスさせて演算処理するステップと、
前記第１系列の１つ後の第２系列の１サイクル目の実行ステージにて演算処理するステップと、
前記第２系列の１サイクル目の実行ステージにて処理された演算結果を前記第２系列の２サイクル目の実行ステージにて処理するステップと、
前記第２系列の２サイクル目の実行ステージにて処理された演算結果を、前記第２系列の２つ後の第４系列の１サイクル目の実行ステージにバイパスさせて演算処理するステップとを備えることを特徴とする演算処理方法。
【請求項５】
第１系列の１サイクル目の実行ステージにて偶数番目の要素を処理するステップと、
前記第１系列の１サイクル目の実行ステージにて処理された偶数番目の要素の演算結果を前記第１系列の２サイクル目の実行ステージにて処理するステップと、
前記第１系列の２サイクル目の実行ステージにて処理された偶数番目の要素の演算結果を次の偶数番目の要素の１サイクル目の実行ステージにバイパスさせて処理するステップと、
前記第１系列の１つ後の第２系列の１サイクル目の実行ステージにて奇数番目の要素を処理するステップと、
前記第２系列の１サイクル目の実行ステージにて処理された奇数番目の要素の演算結果を前記第２系列の２サイクル目の実行ステージにて処理するステップと、
前記第２系列の２サイクル目の実行ステージにて処理された奇数番目の要素の演算結果を次の奇数番目の要素の１サイクル目の実行ステージにバイパスさせて処理するステップとを備えることを特徴とする演算処理方法。
【請求項６】
偶数番目の全ての要素の演算と奇数番目の全ての要素の演算が終了した後、１サイクル分の空処理を挿入するステップと、
偶数番目の要素の演算結果と奇数番目の要素の演算結果とを１サイクル目の実行ステージにて処理するステップと、
前記１サイクル目の実行ステージにて処理された演算結果を２サイクル目の実行ステージにて処理するステップとを備えることを特徴とする請求項６記載の演算処理方法。
【請求項７】
ソースレジスタに格納されている偶数番目の要素を第１系列の１サイクル目の実行ステージにて処理するステップと、
前記第１系列の１サイクル目の実行ステージにて処理された偶数番目の要素の演算結果を前記第１系列の２サイクル目の実行ステージにて処理するステップと、
前記第１系列の２サイクル目の実行ステージにて処理された偶数番目の要素の演算結果を、前記第１系列の２つ後の第３系列の１サイクル目の実行ステージにバイパスさせるとともに、ソースレジスタに格納されている次の偶数番目の要素を前記第３系列の１サイクル目の実行ステージに入力して処理するステップと、
ソースレジスタに格納されている奇数番目の要素を第１系列の１つ後の第２系列の１サイクル目の実行ステージにて処理するステップと、
前記第２系列の１サイクル目の実行ステージにて処理された奇数番目の要素の演算結果を前記第２系列の２サイクル目の実行ステージにて処理するステップと、
前記第２系列の２サイクル目の実行ステージにて処理された奇数番目の要素の演算結果を、前記第２系列の２つ後の第４系列の１サイクル目の実行ステージにバイパスさせるとともに、ソースレジスタに格納されている次の奇数番目の要素を前記第４系列の１サイクル目の実行ステージに入力して処理するステップとを備えることを特徴とする演算処理方法。
【請求項８】
偶数番目の全ての要素の演算と奇数番目の全ての要素の演算が終了した後、１サイクル分の空処理を挿入するステップと、
前記第３系列のレジスタライトステージにて書き込まれた演算結果と、前記第４系列の２サイクル目の実行ステージにて処理された演算結果とを最終系列の１サイクル目の実行ステージにて処理するステップと、
前記最終系列の１サイクル目の実行ステージにて処理された演算結果を前記最終系列の２サイクル目の実行ステージにて処理するステップとを備えることを特徴とする請求項７記載の演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算処理装置および演算処理方法に関し、特に、ベクトルパイプライン処理におけるフォワーディング機構に適用して好適なものである。
【背景技術】
【０００２】
ベクトルパイプライン処理では、例えば、４要素の累和を求める場合、図５に示すように、命令フェッチステージＩＦ→命令デコードステージＩＤ→実行ステージＥＸ→レジスタライトステージＲＷを一まとまりとして、４回繰り返す方法がある（非特許文献１）。ここで、命令フェッチステージＩＦでは命令の取り込みが行われる。命令デコードステージＩＤでは、命令フェッチステージＩＦで取り込まれた命令の解読が行われる。実行ステージＥＸでは、命令デコードステージＩＤで解読された命令で指定された演算が行われる。なお、実行ステージＥＸでは、命令デコードステージＩＤで解読された命令で指定されたソースレジスタｓｒｃ１、ｓｒｃ２から、演算対象となるデータを取り込むことができる。レジスタライトステージＲＷでは、実行ステージＥＸにて得られた演算結果をレジスタファイルに書き込む。なお、レジスタライトステージＲＷでは、命令デコードステージＩＤで解読された命令で指定されたディスティネーションレジスタｄｓｔに演算結果を書き込むことができる。
【０００３】
ここで、レジスタライトステージＲＷにおいて前回の演算結果がレジスタファイルに書き込まれるまで、次回の命令デコードステージＩＤに移ることができない。このため、前回の命令デコードステージＩＤと次回の命令デコードステージＩＤとの間に、何も処理が行われないＮＯＰ処理を２サイクル分挿入する必要があることから、４要素の累和を求めるために１３サイクルだけ時間がかかる。
【０００４】
また、図６に示すように、図５のベクトルパイプライン処理にフォワーディング機構を設けることにより、図５のＮＯＰ処理を挿入することなく、次回の実行ステージＥＸに移れるようにした方法がある。このフォワーディング機構では、次回の演算を実行するモジュールの入力と出力がバイパスされるので、前回の命令デコードステージＩＤと次回の命令デコードステージＩＤとの間にＮＯＰ処理を２サイクル分挿入する必要がなくなり、４要素の累和を７サイクルで求めることができる。
【非特許文献１】パターソン＆ヘネシー、「コンピュータの構成と設計」、６．１パイプラインの処理と概要  パイプラインハザード（ｐ４０７）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のフォワーディング処理では、例えば、シフト処理や飽和処理などが加算処理に伴っているため、１サイクル以内では実行ステージＥＸを完了することができない場合、前回の実行ステージＥＸを終えたデータをそのまま次回の実行ステージＥＸにバイパスさせることができず、処理を完了させるために必要なサイクル数が増大するという問題があった。
【０００６】
図７は、２サイクル演算におけるフォワーディング処理を示すタイミングチャートである。
図７において、図６の実行ステージＥＸを１サイクル以内では完了させることができないため、２サイクル分の実行ステージＥＸ１、ＥＸ２が設けられているものとする。この場合、前回の実行ステージＥＸ１を終えても、前回の実行ステージＥＸ２が完了するまでは、次回の実行ステージＥＸ１に移ることはできない。このため、前回の実行ステージＥＸ２を終えたデータを一旦フリップフロップで１サイクル分遅らせてから次回の実行ステージＥＸ１に送る必要があり、４要素の２サイクル演算を完了させるために１１サイクルかかる。
【０００７】
図７の方法での処理完了までにかかる全サイクル数Ｎｃを一般的に書き表せば、以下の（１）式のようになる。
Ｎｃ＝５＋（ｎ−１）×２                                          ・・・（１）
ただし、ｎは演算要素数である。
そこで、本発明の目的は、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能な演算処理装置および演算処理方法を提供することである。
【課題を解決するための手段】
【０００８】
上述した課題を解決するために、本発明の一態様に係る演算処理装置によれば、２サイクルで演算処理を実行する演算処理部と、前記演算処理部にて得られた２つ前の系列の２サイクル目の演算結果を今回の系列の１サイクル目の実行ステージにバイパスさせるステートマシンとを備えることを特徴とする。
これにより、演算処理部にデータを入力するタイミングを制御することで、実行ステージが２サイクル分だけ遅く開始される系列に対して、今回の演算結果をバイパスさせることが可能となる。このため、今回の演算に必要なデータを２サイクル分だけ前の系列から取得することが可能となり、１サイクル分だけ前の系列における２サイクル目の実行ステージの終了を待つことなく、フォワーディング処理を行わせることが可能となる。この結果、実行ステージが２サイクル化されている場合においても、処理を何も行わないＮＯＰステージを各系列ごとに挿入する必要がなくなり、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【０００９】
また、本発明の一態様に係る演算処理装置によれば、前記ステートマシンは、前記演算処理部にて得られた偶数番目の要素の２サイクル目の演算結果を次の偶数番目の要素の１サイクル目の実行ステージにバイパスさせるとともに、前記演算処理部にて得られた奇数番目の要素の２サイクル目の演算結果を次の奇数番目の要素の１サイクル目の実行ステージにバイパスさせることを特徴とする。
【００１０】
これにより、偶数番目の要素と奇数番目の要素との２系列に分けて処理を行わせることが可能となり、偶数番目の要素の処理を実行させる系列と奇数番目の要素の処理を実行させる系列とを交互に行わせることで、２つ前の系列の２サイクル目の演算結果を今回の系列の１サイクル目の実行ステージにバイパスさせることができる。このため、偶数番目の要素の演算に必要なデータを２サイクル分だけ前の系列から取得することが可能となるとともに、奇数番目の要素の演算に必要なデータを２サイクル分だけ前の系列から取得することが可能となり、１サイクル分だけ前の系列における２サイクル目の実行ステージの終了を待つことなく、フォワーディング処理を行わせることが可能となる。この結果、実行ステージが２サイクル化されている場合においても、処理を何も行わないＮＯＰステージを各系列ごとに挿入する必要がなくなり、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【００１１】
また、本発明の一態様に係る演算処理装置によれば、前記ステートマシンは、偶数番目の全ての要素の演算と奇数番目の全ての要素の演算が終了した後、１サイクル分の空処理を挿入してから、偶数番目の要素の演算結果と奇数番目の要素の演算結果とを前記演算処理部にて演算させることを特徴とする。
これにより、最終系列において１サイクル分の空処理を挿入することで、偶数番目の要素の演算結果と奇数番目の要素の演算結果とを演算処理部にて演算させることが可能となる。このため、偶数番目の要素と奇数番目の要素との２系列に分けて処理を行わせた場合においても、処理を何も行わないＮＯＰステージを必要以上に増加させることなく、所望の演算結果を得ることが可能となり、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【００１２】
また、本発明の一態様に係る演算処理方法によれば、第１系列の１サイクル目の実行ステージにて演算処理するステップと、前記第１系列の１サイクル目の実行ステージにて処理された演算結果を前記第１系列の２サイクル目の実行ステージにて処理するステップと、前記第１系列の２サイクル目の実行ステージにて処理された演算結果を、前記第１系列の２つ後の第３系列の１サイクル目の実行ステージにバイパスさせて演算処理するステップと、前記第１系列の１つ後の第２系列の１サイクル目の実行ステージにて演算処理するステップと、前記第２系列の１サイクル目の実行ステージにて処理された演算結果を前記第２系列の２サイクル目の実行ステージにて処理するステップと、前記第２系列の２サイクル目の実行ステージにて処理された演算結果を、前記第２系列の２つ後の第４系列の１サイクル目の実行ステージにバイパスさせて演算処理するステップとを備えることを特徴とする。
【００１３】
これにより、実行ステージにデータを入力するタイミングを制御することで、第１系列よりも実行ステージが２サイクル分だけ遅く開始される第３系列に対して、第１系列の演算結果をバイパスさせることが可能となるとともに、第２系列よりも実行ステージが２サイクル分だけ遅く開始される第４系列に対して、第２系列の演算結果をバイパスさせることが可能となる。このため、第３系列の実行ステージで必要なデータを２サイクル分だけ前の第１系列から取得することが可能となるとともに、第４系列の実行ステージで必要なデータを２サイクル分だけ前の第２系列から取得することが可能となり、第１系列の２サイクル目の実行ステージの終了を待つことなく、第２系列の１サイクル目の実行ステージを開始させることが可能となるとともに、第３系列の２サイクル目の実行ステージの終了を待つことなく、第４系列の１サイクル目の実行ステージを開始させることが可能となる。この結果、実行ステージが２サイクル化されている場合においても、処理を何も行わないＮＯＰステージを各系列ごとに挿入する必要がなくなり、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【００１４】
また、本発明の一態様に係る演算処理方法によれば、第１系列の１サイクル目の実行ステージにて偶数番目の要素を処理するステップと、前記第１系列の１サイクル目の実行ステージにて処理された偶数番目の要素の演算結果を前記第１系列の２サイクル目の実行ステージにて処理するステップと、前記第１系列の２サイクル目の実行ステージにて処理された偶数番目の要素の演算結果を次の偶数番目の要素の１サイクル目の実行ステージにバイパスさせて処理するステップと、前記第１系列の１つ後の第２系列の１サイクル目の実行ステージにて奇数番目の要素を処理するステップと、前記第２系列の１サイクル目の実行ステージにて処理された奇数番目の要素の演算結果を前記第２系列の２サイクル目の実行ステージにて処理するステップと、前記第２系列の２サイクル目の実行ステージにて処理された奇数番目の要素の演算結果を次の奇数番目の要素の１サイクル目の実行ステージにバイパスさせて処理するステップとを備えることを特徴とする。
【００１５】
これにより、偶数番目の要素の処理を実行させる系列と奇数番目の要素の処理を実行させる系列とを交互に行わせることが可能となり、偶数番目の要素の演算に必要なデータを２サイクル分だけ前の系列から取得することが可能となるとともに、奇数番目の要素の演算に必要なデータを２サイクル分だけ前の系列から取得することが可能となる。このため、１サイクル分だけ前の系列における２サイクル目の実行ステージの終了を待つことなく、フォワーディング処理を行わせることが可能となり、実行ステージが２サイクル化されている場合においても、フォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【００１６】
また、本発明の一態様に係る演算処理方法によれば、偶数番目の全ての要素の演算と奇数番目の全ての要素の演算が終了した後、１サイクル分の空処理を挿入するステップと、偶数番目の要素の演算結果と奇数番目の要素の演算結果とを１サイクル目の実行ステージにて処理するステップと、前記１サイクル目の実行ステージにて処理された演算結果を２サイクル目の実行ステージにて処理するステップとを備えることを特徴とする。
【００１７】
これにより、最終系列において１サイクル分の空処理を挿入することで、偶数番目の要素の演算結果と奇数番目の要素の演算結果とを演算処理部にて２サイクル演算させることが可能となる。このため、偶数番目の要素と奇数番目の要素との２系列に分けて処理を行わせた場合においても、余分なレジスタを増やすことなく、所望の演算結果を得ることが可能となり、ハードウェア構成を複雑化することなく、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【００１８】
また、本発明の一態様に係る演算処理方法によれば、ソースレジスタに格納されている偶数番目の要素を第１系列の１サイクル目の実行ステージにて処理するステップと、前記第１系列の１サイクル目の実行ステージにて処理された偶数番目の要素の演算結果を前記第１系列の２サイクル目の実行ステージにて処理するステップと、前記第１系列の２サイクル目の実行ステージにて処理された偶数番目の要素の演算結果を、前記第１系列の２つ後の第３系列の１サイクル目の実行ステージにバイパスさせるとともに、ソースレジスタに格納されている次の偶数番目の要素を前記第３系列の１サイクル目の実行ステージに入力して処理するステップと、ソースレジスタに格納されている奇数番目の要素を第１系列の１つ後の第２系列の１サイクル目の実行ステージにて処理するステップと、前記第２系列の１サイクル目の実行ステージにて処理された奇数番目の要素の演算結果を前記第２系列の２サイクル目の実行ステージにて処理するステップと、前記第２系列の２サイクル目の実行ステージにて処理された奇数番目の要素の演算結果を、前記第２系列の２つ後の第４系列の１サイクル目の実行ステージにバイパスさせるとともに、ソースレジスタに格納されている次の奇数番目の要素を前記第４系列の１サイクル目の実行ステージに入力して処理するステップとを備えることを特徴とする。
【００１９】
これにより、ベクトルレジスタに格納されている偶数番目の要素と奇数番目の要素とを分けて処理を行わせることが可能となり、１サイクル分だけ前の系列における２サイクル目の実行ステージの終了を待つことなく、フォワーディング処理を行わせることが可能となる。このため、実行ステージが２サイクル化されている場合においても、フォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【００２０】
また、本発明の一態様に係る演算処理方法によれば、偶数番目の全ての要素の演算と奇数番目の全ての要素の演算が終了した後、１サイクル分の空処理を挿入するステップと、前記第３系列のレジスタライトステージにて書き込まれた演算結果と、前記第４系列の２サイクル目の実行ステージにて処理された演算結果とを最終系列の１サイクル目の実行ステージにて処理するステップと、前記最終系列の１サイクル目の実行ステージにて処理された演算結果を前記最終系列の２サイクル目の実行ステージにて処理するステップとを備えることを特徴とする。
【００２１】
これにより、偶数番目の要素と奇数番目の要素との２系列に分けて処理を行わせた場合においても、余分なレジスタを増やすことなく、所望の演算結果を得ることが可能となり、ハードウェア構成を複雑化することなく、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施形態に係る演算処理装置およびその方法について図面を参照しながら説明する。
図１は、本発明の一実施形態に係る演算処理装置の概略構成を示すブロック図である。
図１において、演算処理装置には、論理演算を行う論理回路Ｒ１、Ｒ２およびデータを保持するフリップフロップＦ１〜Ｆ３が設けられている。なお、論理回路Ｒ１、Ｒ２では、例えば、加算処理、シフト処理または飽和処理などを行うことができる。
【００２３】
ここで、フリップフロップＦ１の出力は論理回路Ｒ１に供給され、論理回路Ｒ１の出力はフリップフロップＦ２に供給され、フリップフロップＦ２の出力は論理回路Ｒ２に供給され、論理回路Ｒ２の出力はフリップフロップＦ３に供給される。また、演算処理装置には、レジスタファイルＧ１、セレクタＳ１、Ｓ２およびステートマシンＴ１が設けられている。ここで、レジスタファイルＧ１には、論理回路Ｒ１、Ｒ２で処理されるデータを格納するソースレジスタｓｒｃ１、ｓｒｃ２が設けられるとともに、論理回路Ｒ１、Ｒ２で処理されたデータを格納するディスティネーションレジスタｄｓｔが設けられている。また、セレクタＳ１、Ｓ２には、レジスタファイルＧ１、論理回路Ｒ１およびフリップフロップＦ３からの出力が入力され、これらのレジスタファイルＧ１、論理回路Ｒ１およびフリップフロップＦ３からの出力のいずれか１つをそれぞれ選択してフリップフロップＦ１に供給する。ステートマシンＴ１は、セレクタＳ１、Ｓ２の切り替え制御をそれぞれ行うことにより、レジスタファイルＧ１、論理回路Ｒ１およびフリップフロップＦ３からの出力のいずれか１つをセレクタＳ１、Ｓ２にそれぞれ選択させて、フリップフロップＦ１に出力させる。
【００２４】
ここで、ステートマシンＴ１は、フォワーディング機構を利用したベクトルパイプライン処理において、論理回路Ｒ２にて得られた２つ前の系列の演算結果が論理回路Ｒ１で行われる今回の系列の実行ステージにバイパスされるように、セレクタＳ１、Ｓ２の切り替え制御を行うことができる。具体的には、ステートマシンＴ１は、ベクトルレジスタに格納されている偶数番目の要素と奇数番目の要素との２系列に分けてベクトルパイプライン処理を行わせることができる。すなわち、論理回路Ｒ２で得られた偶数番目の要素の演算結果を、次の偶数番目の要素の演算が行われる時に論理回路Ｒ１にバイパスさせるとともに、論理回路Ｒ２で得られた奇数番目の要素の演算結果を、次の奇数番目の要素の演算が行われる時に論理回路Ｒ１にバイパスさせることができる。そして、ステートマシンＴ１は、偶数番目の全ての要素の演算と奇数番目の全ての要素の演算が終了した後、偶数番目の要素の演算結果と奇数番目の要素の演算結果とをフリップフロップＦ３を介してセレクタＳ１、Ｓ２に選択させ、論理回路Ｒ１、Ｒ２に順次入力させることができる。
【００２５】
図２は、図１の演算処理装置の動作を示すタイミングチャートである。
図２のサイクルＣ１において、命令フェッチステージＩＦにて命令が取り込まれる。次に、サイクルＣ２において、命令デコードステージＩＤに移ると、命令フェッチステージＩＦにて取り込まれた命令が解読される。ここで、命令フェッチステージＩＦにて命令を解読することにより、オペコードｏｐｅｃｏｄｅおよびリピートアマウントｒｐｔａｍｔを抽出することができ、どのような演算を何回分行うかを判別することができる。
【００２６】
次に、サイクルＣ３において、ステートマシンＴ１は、レジスタファイルＧ１からの出力がセレクタＳ１、Ｓ２にそれぞれ選択されるようにセレクタＳ１、Ｓ２の切り替え制御を行うことで、レジスタファイルＧ１のソースレジスタに格納されている最初の要素をフリップフロップＦ１に取り込ませ、論理回路Ｒ１にて１番目の系列の演算処理を行わせる。また、サイクルＣ３においては、２番目の系列の命令デコードステージＩＤが実行される。
【００２７】
次に、サイクルＣ４において、論理回路Ｒ１にて処理された１番目の系列の演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にて１番目の系列の演算処理が行われる。また、サイクルＣ４において、ステートマシンＴ１は、レジスタファイルＧ１からの出力がセレクタＳ１、Ｓ２にそれぞれ選択されるようにセレクタＳ１、Ｓ２の切り替え制御を行うことで、レジスタファイルＧ１のソースレジスタに格納されている次の要素をフリップフロップＦ１に取り込ませ、論理回路Ｒ１にて２番目の系列の演算処理を行わせる。また、サイクルＣ４においては、３番目の系列の命令デコードステージＩＤが実行される。
【００２８】
次に、サイクルＣ５において、論理回路Ｒ２にて処理された１番目の系列の演算結果はフリップフロップＦ３に取り込まれ、１番目の系列のレジスタライトステージＲＷが実行される。また、サイクルＣ５において、論理回路Ｒ１にて処理された２番目の系列の演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にて２番目の系列の演算処理が行われる。また、サイクルＣ５において、ステートマシンＴ１は、セレクタＳ１、Ｓ２の切り替え制御を行うことで、レジスタファイルＧ１のソースレジスタに格納されている次の要素をフリップフロップＦ１に取り込ませるとともに、論理回路Ｒ２にて処理された１番目の系列の演算結果をフリップフロップＦ１に取り込ませ、論理回路Ｒ１にて３番目の系列の演算処理を行わせる。また、サイクルＣ５においては、４番目の系列の命令デコードステージＩＤが実行される。
【００２９】
次に、サイクルＣ６において、論理回路Ｒ２にて処理された２番目の系列の演算結果はフリップフロップＦ３に取り込まれ、２番目の系列のレジスタライトステージＲＷが実行される。また、サイクルＣ６において、論理回路Ｒ１にて処理された３番目の系列の演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にて３番目の系列の演算処理が行われる。また、サイクルＣ６において、ステートマシンＴ１は、セレクタＳ１、Ｓ２の切り替え制御を行うことで、レジスタファイルＧ１のソースレジスタに格納されている次の要素をフリップフロップＦ１に取り込ませるとともに、論理回路Ｒ２にて処理された２番目の系列の演算結果をフリップフロップＦ１に取り込ませ、論理回路Ｒ１にて４番目の系列の演算処理を行わせる。また、サイクルＣ６においては、次の系列の処理が開始される前に何も処理を行わないＮＯＰステージが挿入される。
【００３０】
次に、サイクルＣ７において、論理回路Ｒ２にて処理された３番目の系列の演算結果はフリップフロップＦ３に取り込まれ、３番目の系列のレジスタライトステージＲＷが実行される。また、サイクルＣ７において、論理回路Ｒ１にて処理された４番目の系列の演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にて４番目の系列の演算処理が行われる。また、サイクルＣ７においては、最終系列の命令デコードステージＩＤが実行される。
【００３１】
次に、サイクルＣ８において、論理回路Ｒ２にて処理された４番目の系列の演算結果はフリップフロップＦ３に取り込まれ、４番目の系列のレジスタライトステージＲＷが実行される。また、サイクルＣ８において、ステートマシンＴ１は、セレクタＳ１、Ｓ２の切り替え制御を行うことで、フリップフロップＦ３に保持されている演算結果をフリップフロップＦ１に取り込ませるとともに、論理回路Ｒ２にて処理された４番目の系列の演算結果をフリップフロップＦ１に取り込ませ、論理回路Ｒ１にて最終系列の演算処理を行わせる。
【００３２】
次に、サイクルＣ９において、論理回路Ｒ１にて処理された最終系列の演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にて最終系列の演算処理が行われる。そして、サイクルＣ１０において、論理回路Ｒ２にて処理された最終系列の演算結果はフリップフロップＦ３に取り込まれ、最終系列のレジスタライトステージＲＷが実行される。
これにより、セレクタＳ１、Ｓ２の切り替え制御を行うことで、実行ステージが２サイクル分だけ遅く開始される系列に対して、今回の演算結果をバイパスさせることが可能となる。このため、今回の演算に必要なデータを２サイクル分だけ前の系列から取得することが可能となり、１サイクル分だけ前の系列における２サイクル目の実行ステージの終了を待つことなく、フォワーディング処理を行わせることが可能となる。この結果、実行ステージが２サイクル化されている場合においても、処理を何も行わないＮＯＰステージを各系列ごとに挿入する必要がなくなり、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【００３３】
図３は、図１の演算処理装置の動作の具体例を示すタイミングチャートである。
図３において、図１のレジスタファイルＧ１には、４要素分のベクトルレジスタＶＲ００〜ＶＲ０３およびスカラーレジスタＳＲＣ０がソースレジスタとして用意されているものとする。そして、ベクトルレジスタＶＲ００〜ＶＲ０３およびスカラーレジスタＳＲＣ０にそれぞれ格納されているデータの総和を求めるものとする。
【００３４】
この場合、サイクルＣ１において、命令フェッチステージＩＦにて命令が取り込まれる。次に、サイクルＣ２において、命令デコードステージＩＤに移ると、命令フェッチステージＩＦにて取り込まれた命令が解読される。
次に、サイクルＣ３において、ステートマシンＴ１は、セレクタＳ１、Ｓ２の切り替え制御を行うことで、ベクトルレジスタＶＲ００およびスカラーレジスタＳＲＣ０にそれぞれ格納されているデータをフリップフロップＦ１に取り込ませ、ベクトルレジスタＶＲ００およびスカラーレジスタＳＲＣ０にそれぞれ格納されていたデータの演算処理を論理回路Ｒ１にて行わせる。また、サイクルＣ３においては、２番目の系列の命令デコードステージＩＤが実行される。
【００３５】
次に、サイクルＣ４において、ベクトルレジスタＶＲ００およびスカラーレジスタＳＲＣ０にそれぞれ格納されていたデータの論理回路Ｒ１による演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にてさらに演算処理が行われる。また、サイクルＣ４において、ステートマシンＴ１は、セレクタＳ１、Ｓ２の切り替え制御を行うことで、ベクトルレジスタＶＲ０１に格納されているデータおよび“０”をフリップフロップＦ１に取り込ませ、ベクトルレジスタＶＲ０１に格納されているデータおよび“０”の演算処理を論理回路Ｒ１にて行わせる。また、サイクルＣ４においては、３番目の系列の命令デコードステージＩＤが実行される。
【００３６】
次に、サイクルＣ５において、ベクトルレジスタＶＲ００およびスカラーレジスタＳＲＣ０にそれぞれ格納されていたデータの論理回路Ｒ２による演算結果はフリップフロップＦ３に取り込まれ、１番目の系列のレジスタライトステージＲＷが実行される。また、サイクルＣ５において、ベクトルレジスタＶＲ０１に格納されていたデータおよび“０”の論理回路Ｒ１による演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にてさらに演算処理が行われる。また、サイクルＣ５において、ステートマシンＴ１は、セレクタＳ１、Ｓ２の切り替え制御を行うことで、ベクトルレジスタＶＲ０２に格納されているデータをフリップフロップＦ１に取り込ませるとともに、ベクトルレジスタＶＲ００およびスカラーレジスタＳＲＣ０にそれぞれ格納されていたデータ論理回路Ｒ２による演算結果をフリップフロップＦ１に取り込ませ、ベクトルレジスタＶＲ００、ＶＲ０２およびスカラーレジスタＳＲＣ０にそれぞれ格納されていたデータの演算処理を論理回路Ｒ１にて行わせる。また、サイクルＣ５においては、４番目の系列の命令デコードステージＩＤが実行される。
【００３７】
次に、サイクルＣ６において、ベクトルレジスタＶＲ０１に格納されていたデータおよび“０”の論理回路Ｒ２による演算結果はフリップフロップＦ３に取り込まれ、２番目の系列のレジスタライトステージＲＷが実行される。また、サイクルＣ６において、ベクトルレジスタＶＲ００、ＶＲ０２およびスカラーレジスタＳＲＣ０にそれぞれ格納されていたデータの論理回路Ｒ１による演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にてさらに演算処理が行われる。また、サイクルＣ６において、ステートマシンＴ１は、ベクトルレジスタＶＲ０３に格納されているデータをフリップフロップＦ１に取り込ませるとともに、ベクトルレジスタＶＲ０１に格納されていたデータおよび“０”の論理回路Ｒ２による演算結果をフリップフロップＦ１に取り込ませ、ベクトルレジスタＶＲ０１、ＶＲ０３にそれぞれ格納されていたデータおよび“０”の演算処理を論理回路Ｒ１にて行わせる。また、サイクルＣ６においては、次の系列の処理が開始される前に何も処理を行わないＮＯＰステージが挿入される。
【００３８】
次に、サイクルＣ７において、ベクトルレジスタＶＲ００、ＶＲ０２およびスカラーレジスタＳＲＣ０に格納されていたデータの論理回路Ｒ２による演算結果はフリップフロップＦ３に取り込まれ、３番目の系列のレジスタライトステージＲＷが実行される。また、サイクルＣ７において、ベクトルレジスタＶＲ０１、ＶＲ０３にそれぞれ格納されていたデータおよび“０”の論理回路Ｒ１による演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にてさらに演算処理が行われる。また、サイクルＣ７においては、最終系列の命令デコードステージＩＤが実行される。
【００３９】
次に、サイクルＣ８において、ベクトルレジスタＶＲ０１、ＶＲ０３にそれぞれ格納されていたデータおよび“０”の論理回路Ｒ２による演算結果はフリップフロップＦ３に取り込まれ、４番目の系列のレジスタライトステージＲＷが実行される。また、サイクルＣ８において、ステートマシンＴ１は、セレクタＳ１、Ｓ２の切り替え制御を行うことで、ベクトルレジスタＶＲ００、ＶＲ０２およびスカラーレジスタＳＲＣ０に格納されていたデータの論理回路Ｒ２による演算結果をフリップフロップＦ３を介してフリップフロップＦ１取り込ませるとともに、ベクトルレジスタＶＲ０１、ＶＲ０３にそれぞれ格納されていたデータおよび“０”の論理回路Ｒ２による演算結果をフリップフロップＦ１に取り込ませ、ベクトルレジスタＶＲ００〜ＶＲ０３およびスカラーレジスタＳＲＣ０にそれぞれ格納されていたデータの演算処理を論理回路Ｒ１にて行わせる。
【００４０】
次に、サイクルＣ９において、ベクトルレジスタＶＲ００〜ＶＲ０３およびスカラーレジスタＳＲＣ０にそれぞれ格納されていたデータの論理回路Ｒ１による演算結果はフリップフロップＦ２に取り込まれ、論理回路Ｒ２にてさらに演算処理が行われる。
次に、サイクルＣ１０において、ベクトルレジスタＶＲ００〜ＶＲ０３およびスカラーレジスタＳＲＣ０にそれぞれ格納されていたデータの論理回路Ｒ２による演算結果はフリップフロップＦ３に取り込まれ、最終系列のレジスタライトステージＲＷが実行される。
【００４１】
これにより、セレクタＳ１、Ｓ２の切り替え制御を行うことで、第１系列よりも実行ステージが２サイクル分だけ遅く開始される第３系列に対して、第１系列の演算結果をバイパスさせることが可能となるとともに、第２系列よりも実行ステージが２サイクル分だけ遅く開始される第４系列に対して、第２系列の演算結果をバイパスさせることが可能となる。このため、第３系列の実行ステージで必要なデータを２サイクル分だけ前の第１系列から取得することが可能となるとともに、第４系列の実行ステージで必要なデータを２サイクル分だけ前の第２系列から取得することが可能となり、第１系列の２サイクル目の実行ステージの終了を待つことなく、第２系列の１サイクル目の実行ステージを開始させることが可能となるとともに、第３系列の２サイクル目の実行ステージの終了を待つことなく、第４系列の１サイクル目の実行ステージを開始させることが可能となる。この結果、実行ステージが２サイクル化されている場合においても、処理を何も行わないＮＯＰステージを各系列ごとに挿入する必要がなくなり、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【００４２】
また、最終系列において１サイクル分の空処理を挿入することで、偶数番目の要素の演算結果と奇数番目の要素の演算結果とを論理回路Ｒ１、Ｒ２にて２サイクル演算させることが可能となる。このため、偶数番目の要素と奇数番目の要素との２系列に分けて処理を行わせた場合においても、余分なレジスタを増やすことなく、所望の演算結果を得ることが可能となり、ハードウェア構成を複雑化することなく、２サイクル演算におけるフォワーディング機構を利用したパイプライン処理のサイクル数を低減することが可能となる。
【００４３】
ここで、図２の方法での処理完了までにかかる全サイクル数Ｎｃを一般的に書き表せば、以下の（２）式のようになる。
Ｎｃ＝５＋（ｎ−１）×１＋１                                    ・・・（２）
ただし、ｎは演算要素数である。
このため、図２の方法では、演算要素数ｎが増大すると、処処理完了までにかかる全サイクル数Ｎｃは、図７の方法に比較してほぼ１／２に削減することができる。
【００４４】
図４は、図１の演算処理装置の動作に必要なサイクル数を従来例と比較して示す図である。
図４において、演算要素数ｎが増大するに従って、処処理完了までにかかる全サイクル数が従来例と比較して少なくなることが判る。
【図面の簡単な説明】
【００４５】
【図１】本発明の一実施形態に係る演算処理装置の概略構成を示すブロック図。
【図２】図１の演算処理装置の動作を示すタイミングチャート。
【図３】図１の演算処理装置の動作の具体例を示すタイミングチャート。
【図４】図１の演算処理装置の動作に必要なサイクル数を従来例と比較して示す図。
【図５】従来のベクトルパイプライン処理を示すタイミングチャート。
【図６】従来のフォワーディング処理を示すタイミングチャート。
【図７】２サイクル演算のフォワーディング処理を示すタイミングチャート。
【符号の説明】
【００４６】
Ｇ１  レジスタファイル、Ｔ１  ステートマシン、Ｓ１、Ｓ２  セレクタ、Ｆ１〜Ｆ３  フリップフロップ、Ｒ１、Ｒ２  論理回路
【図１】
2006285721.tif 000003
【図２】
2006285721.tif 000004
【図３】
2006285721.tif 000005
【図４】
2006285721.tif 000006
【図５】
2006285721.tif 000007
【図６】
2006285721.tif 000008
【図７】
2006285721.tif 000009