(57)【要約】【課題】演算レジスタの一貫性を確保しつつ演算性能の高い情報処理装置を提供する。【解決手段】情報処理装置は、複数の演算レジスタ及び演算器と、演算命令の発行が決定すると当該演算命令に関係する演算レジスタ及び演算器について、当該命令の実行に使用する期間を表すビジー期間情報をセットし、発行が決定した命令の進行に応じてビジー期間情報を減算するビジー期間情報管理部と、ビジー期間情報と後続の命令の実行に要する時間である演算ＴＡＴとに基づいて、後続の命令を逐次的に実行したときの演算結果を確保できる後続の命令の発行タイミングを決定するチェック部と、発行が決定した後続の命令の演算ＴＡＴを、後続の演算命令に関係する演算器に応じて決定する決定部と、決定部が決定した演算ＴＡＴに基づいて、後続の演算命令の演算結果を演算レジスタに格納するタイミングを調整する制御部と、を備える。【選択図】図２
2015194844.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算レジスタと、
複数の演算器と、
演算命令の発行が決定すると、当該演算命令に関係する演算レジスタ及び演算器について、当該演算命令の実行のために使用する期間を表すビジー期間情報をセットし、前記発行が決定した演算命令の進行に応じて前記ビジー期間情報を減算するビジー期間情報管理部と、
前記ビジー期間情報と後続の演算命令の実行に要する時間である演算ＴＡＴ（ＴＵＲＮ  ＡＲＯＵＮＤ  ＴＩＭＥ）とに基づいて、前記後続の演算命令を逐次的に実行したときの演算結果を確保できる前記後続の演算命令の発行タイミングを決定するチェック部と、
発行が決定した前記後続の演算命令の演算ＴＡＴを、当該後続の演算命令に関係する演算器に応じて決定する決定部と、
前記決定部が決定した演算ＴＡＴに基づいて、発行が決定した前記後続の演算命令の演算結果を前記演算レジスタに格納するタイミングを調整する制御部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記チェック部は、後続の演算命令の演算ＴＡＴが、先行する演算命令の演算ＴＡＴよりも小さい場合、後続の演算命令の演算ＴＡＴに代えて前記複数の演算器について定められた演算ＴＡＴのうち最大の値を用いて前記後続の演算命令の発行タイミングを決定し、
前記決定部は、後続の演算命令の演算ＴＡＴが、先行する演算命令の演算ＴＡＴよりも小さい場合、発行が決定した前記後続の演算命令の演算ＴＡＴを、前記発行タイミングにおける前記ビジー期間情報に基づいて決定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記決定部は、後続の演算命令の演算ＴＡＴ以上且つ先行する演算命令の演算ＴＡＴ以下である値を可変的に決定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記ビジー期間情報管理部は、演算レジスタに対して連続して行われる書き込み処理又は読み取り処理の組み合わせ別にビジー期間情報をセットし、
前記決定部は、前記発行タイミングにおける前記組み合わせ別にセットされた前記ビジー期間情報のうち、最大の値を前記後続の演算命令の演算ＴＡＴとして決定する。
ことを特徴とする請求項２又は請求項３に記載の情報処理装置。
【請求項５】
前記ビジー期間情報管理部は、演算レジスタに対して連続して行われる書き込み処理又は読み取り処理の組み合わせ別にビジー期間情報をセットし、
前記チェック部は、前記組み合わせ別にセットされた前記ビジー期間情報に基づいて前記後続の演算命令の発行タイミングを決定する
ことを特徴とする請求項１から請求項４の何れか１項に記載の情報処理装置。
【請求項６】
前記チェック部は、前記後続の演算命令の演算ＴＡＴとして用いる予め定められた値を外部から取得し、前記ビジー期間情報と前記取得した値とに基づいて、前記後続の演算命令の発行タイミングを決定する
ことを特徴とする請求項１から請求項５の何れか１項に記載の情報処理装置。
【請求項７】
前記決定部が選択した演算ＴＡＴを取得して、演算ＴＡＴの値ごとに前記決定部が決定した回数をカウントする状態カウント部を備え、
前記状態カウント部は、カウントした回数が最も多い演算ＴＡＴの値が前記複数の演算器の演算ＴＡＴにおける最大値である場合、その演算ＴＡＴを前記チェック部に出力し、
前記チェック部は、前記ビジー期間情報と前記状態カウント部から取得した演算ＴＡＴとに基づいて、前記後続の演算命令の発行タイミングを決定する
ことを特徴とする請求項１から請求項６の何れか１項に記載の情報処理装置。
【請求項８】
複数の演算レジスタと、複数の演算器とを有する情報処理装置において、
演算命令の発行が決定すると、当該演算命令に関係する演算レジスタ及び演算器について、当該演算命令の実行のために使用する期間を表すビジー期間情報をセットし、前記発行が決定した演算命令の進行に応じて前記ビジー期間情報を減算し、
前記ビジー期間情報と後続の演算命令の実行に要する時間である演算ＴＡＴとに基づいて、前記後続の演算命令を逐次的に実行したときの演算結果を確保できる前記後続の演算命令の発行タイミングを決定し、
発行が決定した前記後続の演算命令の演算ＴＡＴを、当該後続の演算命令に関係する演算器に応じて決定し、
前記決定した演算ＴＡＴに基づいて、発行が決定した前記後続の演算命令の演算結果を前記演算レジスタに格納するタイミングを調整する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び制御方法に関する。
【背景技術】
【０００２】
情報処理装置において演算性能の向上は長年の課題である。演算性能の向上方法として演算器の数を増やした並列動作化や、演算レジスタ読み出しから演算レジスタ書き込みまでの時間である演算ターンアラウンドタイム（以下、演算ＴＡＴと称する）を短縮するなどの方法が採られてきた。しかし、演算種類によって演算ＴＡＴに差が生じた場合に演算性能が発揮できない場合があるという問題点があった。
【０００３】
例えば、異なる演算ＴＡＴを持つ演算器を有する演算装置において、異なった演算器からの結果の出力は、各演算器への演算命令の投入タイミングや各演算器の演算ＴＡＴの違いにより、同一タイミングで競合する可能性がある。これを避ける為、各演算器の演算ＴＡＴから逆算して、結果の出力タイミングが競合する場合には、後続の演算命令の投入タイミングを遅らせていた。例えば、ある１つの演算レジスタに書込みを行う演算命令が連続する場合、先行する演算命令による書き込みが完了してから後続の演算命令による書込みを行わなければならない。このような場面で後続の演算命令の演算ＴＡＴが先行する演算命令の演算ＴＡＴよりも小さい場合、後続の演算命令の投入は、先行する演算処理の進行を待ってから行わなければならない。これにより、それ以降の演算命令の投入も順次遅れることになり，性能の低下を招いていた。
【０００４】
この問題に対し、例えば特許文献１では演算ＴＡＴの異なる複数の演算器において演算ＴＡＴが小さい演算器に対してはその後段に単に結果の転送のみを行なうレジスタを付加し演算ＴＡＴを調整することで後続の演算命令の投入タイミングを早めることができる技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第２５０３９８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
また、例えば、ある演算レジスタＡに書込みを行う演算命令ａと、当該演算命令ａによって演算レジスタＡに書込まれた値を使用して行う演算命令ｂとが連続する場合、後続の演算命令ｂは、演算命令ａが演算レジスタＡに値を書き込んだ後に演算命令ｂが演算レジスタＡに格納された値を読み取ることができるようなタイミングで実行されなければならない。特許文献１に開示された技術は、異なる演算ＴＡＴを有する演算命令間の出力タイミングの競合を防ぎつつ処理を高速化する技術については開示があったが、このような演算命令間の演算レジスタの依存関係については考慮されていなかった。
【０００７】
そこでこの発明は、上述の課題を解決することのできる情報処理装置及び制御方法を提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明は、複数の演算レジスタと、複数の演算器と、演算命令の発行が決定すると、当該演算命令に関係する演算レジスタ及び演算器について、当該演算命令の実行のために使用する期間を表すビジー期間情報をセットし、前記発行が決定した演算命令の進行に応じて前記ビジー期間情報を減算するビジー期間情報管理部と、前記ビジー期間情報と後続の演算命令の実行に要する時間である演算ＴＡＴ（ＴＵＲＮ  ＡＲＯＵＮＤ  ＴＩＭＥ）とに基づいて、前記後続の演算命令を逐次的に実行したときの演算結果を確保できる前記後続の演算命令の発行タイミングを決定するチェック部と、発行が決定した前記後続の演算命令の演算ＴＡＴを、当該後続の演算命令に関係する演算器に応じて決定する決定部と、前記決定部が決定した演算ＴＡＴに基づいて、発行が決定した前記後続の演算命令の演算結果を前記演算レジスタに格納するタイミングを調整する制御部と、を備えることを特徴とする情報処理装置である。
【０００９】
また本発明は、複数の演算レジスタと、複数の演算器とを有する情報処理装置において、演算命令の発行が決定すると、当該演算命令に関係する演算レジスタ及び演算器について、当該演算命令の実行のために使用する期間を表すビジー期間情報をセットし、前記発行が決定した演算命令の進行に応じて前記ビジー期間情報を減算し、前記ビジー期間情報と後続の演算命令の実行に要する時間である演算ＴＡＴとに基づいて、前記後続の演算命令を逐次的に実行したときの演算結果を確保できる前記後続の演算命令の発行タイミングを決定し、発行が決定した前記後続の演算命令の演算ＴＡＴを、当該後続の演算命令に関係する演算器に応じて決定し、前記決定した演算ＴＡＴに基づいて、発行が決定した前記後続の演算命令の演算結果を前記演算レジスタに格納するタイミングを調整することを特徴とする制御方法である。
【発明の効果】
【００１０】
本発明によれば、演算レジスタの一貫性を確保しつつ、情報処理装置の性能を向上させることができるという効果が得られる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第一の実施形態による情報処理装置の具体的な構成を示す第一の図である。
【図２】本発明の第一の実施形態による情報処理装置の具体的な構成を示す第二の図である。
【図３】関連する情報処理装置による演算処理のタイムチャートを示す第一の図である。
【図４】関連する情報処理装置による演算処理のタイムチャートを示す第二の図である。
【図５】本発明の第一の実施形態による情報処理装置のタイムチャートを示す第一の図である。
【図６】関連する情報処理装置による演算処理のタイムチャートを示す第三の図である。
【図７】関連する情報処理装置による演算処理のタイムチャートを示す第四の図である。
【図８】本発明の第一の実施形態による情報処理装置のタイムチャートを示す第二の図である。
【図９】本発明の第一の実施形態による情報処理装置のタイムチャートを示す第三の図である。
【図１０】本発明の第一の実施形態による情報処理装置のタイムチャートを示す第四の図である。
【図１１】本発明の第一の実施形態による情報処理装置のタイムチャートを示す第五の図である。
【図１２】本発明の第二の実施形態による情報処理装置の具体的な構成を示す図である。
【図１３】本発明の第二の実施形態による情報処理装置のタイムチャートを示す図である。
【図１４】本発明の第三の実施形態による情報処理装置の具体的な構成を示す図である。
【発明を実施するための形態】
【００１２】
＜第一の実施形態＞
以下、本発明の一実施形態による情報処理装置を図１〜図１１を参照して説明する。
図１は第一の実施形態による情報処理装置の具体的な構成を示す第一の図である。図１は情報処理装置のプロセッサの概略ブロック図である。
この図において、符号２０は演算パイプ制御部を表している。演算パイプ制御部２０は、メモリから読み込んだ命令列をデコードして適切なタイミングで演算レジスタ、演算器等の演算リソースに指示を行い、読み込んだ命令列を実行する。
【００１３】
符号１００、１０１、１０２、１０３は演算レジスタＶ０、Ｖ１、Ｖ２，Ｖ３である。演算パイプ制御部２０は演算レジスタに対して指定されたベクトル長（以下、ＶＬと称する）分連続してデータの読み込み又は書込みを行う。通常は複数のベクトルパイプを用いて並列してベクトル長分の演算を処理するが、本実施形態ではベクトルパイプは１本とする。従って１つのベクトル命令が発行されると演算パイプ制御部２０はそのベクトル命令の処理をベクトル長分連続で行う。
なお、図１の演算レジスタＶ０はＶ０−０，１，２，３の４つの要素を持ちベクトル長が４の演算に対応することができる。
【００１４】
符号１１０、１１１、１１２、１１３はオペランドセレクタで、各演算器の入力側に接続されている。また、オペランドセレクタ１１０〜１１３は、演算レジスタ１００〜１０３に接続されている。そして演算パイプ制御部２０から指示のあった演算レジスタからの出力を選択して演算器に出力する。
符号１２０は積和演算器で、演算パイプ制御部２０からの指示に従ってベクトル長分の積和演算を実行する。積和演算器１２０は演算結果を伝送路９００を介してクロスバー１０６へ出力する。
符号１３０は論理演算器で、演算パイプ制御部２０からの指示に従ってベクトル長分の論理演算を実行する。論理演算器１３０は、演算結果をタイミング調整レジスタ１３１及びセレクタ１３３へ出力する。
符号１３１、１３２はタイミング調整レジスタである。タイミング調整レジスタ１３１は、論理演算器１３０の演算結果を取得すると１クロック後にタイミング調整レジスタ１３２に出力する。タイミング調整レジスタ１３２は演算結果を取得すると１クロック後にセレクタ１３３へ出力する。セレクタ１３３は、演算パイプ制御部２０からの指示に従って論理演算器１３０、タイミング調整レジスタ１３１、１３２の出力を選択して伝送路９００を介してクロスバー１０６へ出力する。
【００１５】
図２は第一の実施形態による情報処理装置の具体的な構成を示す第二の図である。図２は、図１における演算パイプ制御部２０をより詳細に示した図である。
符号２０１は、命令バッファ部でメモリから読み込んだ命令列を格納するバッファ部である。
符号２０２は、命令デコーダで命令バッファ部２０１から読み出した命令をデコードして命令発行キュー２０３へ出力する。
【００１６】
符号２０３は、命令デコーダ２０２が解読した命令を格納する命令発行キューである。発行が決定された命令は命令発行キュー２０３から削除され、命令発行キュー２０３は新しい命令を命令デコーダ２０２から取得する。なお、情報処理装置によっては発行キュー内の命令が複数発行可能なものもあるが、本明細書においては発行キュー内の命令配置方法や競合調停方法については考えないものとし、命令がキューに格納された順に１つずつ発行されるものとする。
【００１７】
符号２０４は、Ｗ→Ｗ発行チェック部である。Ｗ→Ｗ（「Ｗｒｉｔｅ→Ｗｒｉｔｅ」）とは、同一の演算レジスタについて連続して書き込み処理が行われる関係を示している。Ｗ→Ｗ発行チェック部２０４は、命令発行キュー２０３の命令情報および後述するＷ→Ｗビジー情報管理部２１０のビジー値を受け取り、個々の命令についてＷ→Ｗの関係について一貫性を確保できる場合は、命令発行チェック部２０８に命令発行可能であることを通知する。一貫性を確保できるとは、Ｗ→Ｗの関係にある連続する演算命令をこの順番で逐次的に実行したときと同じ結果が得られることをいう。特に、Ｗ→Ｗ発行チェック部２０４は、命令が論理演算器１３０を使用する命令であった場合は、積和演算器１２０の演算ＴＡＴ（ＴＵＲＮ  ＡＲＯＵＮＤ  ＴＩＭＥ）と後述するＷ→Ｗビジー情報管理部２１０のビジー値とを比較し、一貫性を確保できる場合にはＴＡＴ決定部２０７にＷ→Ｗビジー情報管理部２１０から受け取ったビジー値を送出する。なお、ビジー値とは、各演算レジスタや演算器の使用状況を管理するために用いる値である。ビジー値が０以外のときは対応する演算レジスタ等が使用されていることを示し、また、この値はカウンタとなっていて演算命令の進行に応じて減算される。また、演算ＴＡＴとは、ある演算器を用いて演算を実行した際の演算レジスタ読み出しから演算レジスタ格納までの時間である。
【００１８】
符号２０５は、Ｒ→Ｗ発行チェック部である。Ｒ→Ｗ（「Ｒｅａｄ→Ｗｒｉｔｅ」）とは、同一の演算レジスタについて連続して読み取り処理と書き込み処理が行われる関係を示している。Ｒ→Ｗ発行チェック部２０５は、命令発行キュー２０３の命令情報および後述するＲ→Ｗビジー情報管理部２２０のビジー値を受け取り、個々の命令についてＲ→Ｗの関係について一貫性を確保できる場合は、命令発行チェック部２０８に命令発行可能であることを通知する。特に、Ｒ→Ｗ発行チェック部２０５は、命令が論理演算器１３０を使用する命令であった場合は、積和演算器１２０の演算ＴＡＴとＲ→Ｗビジー情報管理部２２０の情報を比較し、一貫性を確保できる場合にはＴＡＴ決定部２０７にＲ→Ｗビジー情報管理部２２０から受け取ったビジー値を送出する。
【００１９】
符号２０６は、ビジーチェック部である。ビジーチェック部２０６は、命令発行キュー２０３およびＷ→Ｒビジー情報管理部２３０および演算器ビジー情報管理部２４０の情報を受け取り、個々の命令についてＷ→Ｒの関係および演算器のビジー状態を確認し、一貫性を確保できる場合は命令発行チェック部２０８に命令発行可能であることを通知する。なお、Ｗ→Ｒ（「Ｗｒｉｔｅ→Ｒｅａｄ」）とは、同一の演算レジスタについて連続して書き込み処理と読み取り処理が行われる関係を示している。
【００２０】
符号２０７は、ＴＡＴ決定部である。ＴＡＴ決定部２０７は、論理演算器１３０以外を使用する命令の場合は、命令本来の演算ＴＡＴを出力し、論理演算器１３０を使用する場合にはＷ→Ｗ発行チェック部２０４およびＲ→Ｗ発行チェック部２０５の出力値を比較して、大きい値を出力する。
【００２１】
符号２０８は命令発行チェック部で、命令発行キュー２０３に有効な命令が存在し且つＷ→Ｗ発行チェック部２０４およびＲ→Ｗ発行チェック部２０５およびビジーチェック部２０６の全てから命令発行可能である通知を受け取った場合に命令発行決定を命令発行キュー２０３および命令発行確定情報レジスタ２７０およびＷ→Ｗビジー情報生成部２６０,Ｒ→Ｗビジー情報生成部２６１,Ｗ→Ｒビジー情報生成部２６２,演算器ビジー情報生成部２６３に通知する。
【００２２】
符号２１０はＷ→Ｗビジー情報管理部である。Ｗ→Ｗビジー情報管理部２１０は、演算レジスタのＷ→Ｗとなる命令間におけるデータ一貫性を保証するためのビジー情報を管理する機能を持つ。演算レジスタＶ０〜Ｖ３に対応したＷ→Ｗビジー情報管理部２１１〜２１４が設けられている。
【００２３】
符号２２０はＲ→Ｗビジー情報管理部である。Ｒ→Ｗビジー情報管理部２２０は、演算レジスタのＲ→Ｗとなる命令間におけるデータ一貫性を保証するためのビジー値を管理する機能を持つ。演算レジスタＶ０〜Ｖ３に対応したＲ→Ｗビジー情報管理部２２１〜２２４が設けられている。
【００２４】
符号２３０はＷ→Ｒビジー情報管理部である。Ｗ→Ｒビジー情報管理部２３０は、演算レジスタのＷ→Ｒとなる命令間におけるデータ一貫性を保証するためのビジー値を管理する機能を持つ。演算レジスタＶ０〜Ｖ３に対応したＷ→Ｒビジー情報管理部２３１〜２３４が設けられている。
【００２５】
符号２４０は演算器ビジー情報管理部である。演算器ビジー情報管理部２４０は、演算器のビジー値を管理する機能を持つ。積和演算器１２０、論理演算器１３０に対応した演算器ビジー情報管理部２４１〜２４２が設けられている。
【００２６】
符号２６０は、Ｗ→Ｗビジー情報生成部である。Ｗ→Ｗビジー情報生成部２６０は、命令発行キュー２０３およびＴＡＴ決定部２０７および命令発行チェック部２０８からの信号を取得し、演算レジスタＶ０〜Ｖ３に書き込みを行う命令の発行確定の通知を受けた場合は、書き込み先演算レジスタ情報および演算ＴＡＴ情報をＷ→Ｗビジー情報管理部２１０に送出する。
【００２７】
符号２６１は、Ｒ→Ｗビジー情報生成部である。Ｒ→Ｗビジー情報生成部２６１は、命令発行キュー２０３およびＴＡＴ決定部２０７および命令発行チェック部２０８からの信号を取得し、演算レジスタＶ０〜Ｖ３から読み出しを行う命令の発行確定の通知を受けた場合は、読み出し先演算レジスタ情報および読み出しパターン情報をＲ→Ｗビジー情報管理部２２０に送出する。読み出しパターン情報とは、例えば、「１サイクルに１要素を読み出す」、「１サイクルに全要素を読み出す」、「何サイクルかごとに１要素ずつ読み出す」等である。
【００２８】
符号２６２はＷ→Ｒビジー情報生成部である。Ｗ→Ｒビジー情報生成部２６２は、命令発行キュー２０３およびＴＡＴ決定部２０７および命令発行チェック部２０８からの信号を取得し、演算レジスタＶ０〜Ｖ３に書き込みを行う命令の発行確定の通知を受けた場合は、書き込み先演算レジスタ情報および演算ＴＡＴ情報をＷ→Ｒビジー情報管理部２３０に送出する。
【００２９】
符号２６３は演算器ビジー情報生成部で、命令発行キュー２０３およびＴＡＴ決定部２０７および命令発行チェック部２０８からの信号を取得し、演算器を使う命令の発行確定の通知を受けた場合は、使用する演算器を示す情報およびＶＬを示す情報を演算器ビジー情報管理部２４０に送出する。
【００３０】
符号２７０は命令発行確定情報レジスタで、命令発行チェック部２０８から命令発行決定の通知を受け１サイクル間保持する。
符号２７１は発行確定命令情報レジスタで、命令発行キュー２０３から発行決定した命令の情報を受け１サイクル間保持する。
符号２７２は発行確定ＴＡＴ情報レジスタで、ＴＡＴ決定部２０７からのＴＡＴ情報を受け１Ｔ間保持する。
【００３１】
符号２７３〜２７８は制御タイミング調整レジスタで、図１に示す演算リソースをデータの流れるタイミングに合わせて制御する。
符号２８２〜２８７はデコーダで、図１の各機能部に発行確定した命令の必要箇所をデコードして動作指示を伝える機能を持つ。特にデコーダ２８５〜２８７は命令本来の最短ＴＡＴと２０７で決定されたＴＡＴ情報を比較し、差分値から判断してレジスタ格納指示を出す機能を持つ。例えば、デコーダ２８５は、差分値が０だったらレジスタに格納するタイミングであると識別して、レジスタ格納指示を出す機能を持つ。同様にデコーダ２８６は差分値が１だったらレジスタ格納指示を出し、デコーダ２８７は差分値が２の場合にレジスタ格納指示を出す。
【００３２】
以下において、いくつかの命令列を例に関連する情報処理装置及び本実施形態による情報処理装置の動作を説明する。
前提としてＶＡＤＤ命令、ＶＭＰＹ命令は、積和演算器１２０によって実行され、演算ＴＡＴは、５サイクルであるとする。また、ＶＡＮＤ命令は、論理演算器１３０によって実行され、演算ＴＡＴは３サイクルであるとする。
【００３３】
図３は、関連する情報処理装置による演算処理のタイムチャートを示す第一の図である。
図３を用いて以下の命令列「Ｉ１」、「Ｉ２」を例に関連する情報処理装置による動作を説明する。
命令「Ｉ１」  ＶＡＮＤ  Ｖ３  ←  Ｖ０  ＆  Ｖ１    ＶＬ＝２
命令「Ｉ２」  ＶＭＰＹ  Ｖ０  ←  Ｖ２  ×  Ｖ３    ＶＬ＝２
命令「Ｉ１」は、論理演算器１３０が、演算レジスタＶ０とＶ１の値を入力し、論理積を演算して結果を演算レジスタＶ３へ格納することを示している。命令「Ｉ２」は、積和演算器１２０が、演算レジスタＶ２とＶ３の値を入力し、これらの値を乗算して演算結果を演算レジスタＶ０へ格納することを示している。
命令「Ｉ１」と「Ｉ２」の関係における特徴は演算レジスタＶ３についてＷｒｉｔｅ→Ｒｅａｄの関係になることである。ここで演算レジスタＶ３についてＷｒｉｔｅ→Ｒｅａｄの関係になるということは演算レジスタＶ３に対してＷｒｉｔｅ処理が完了する前にＲｅａｄが完了してはならないことを意味する。
なお、関連する情報処理装置には図１におけるタイミング調整レジスタ１３１、１３２及びセレクタ１３３が備えられていない。また、図３において、「Ｌ−ｘ」（ｘ＝０，１）は、論理演算器１３０の出力値を示し、「Ｍ−ｘ」（ｘ＝０，１）は、積和演算器１２０の出力値を示している。
【００３４】
まず、クロック１において命令「Ｉ１」の発行が決定する（図３中、「Ｄｉｓｐａｔｃｈ」）。するとクロック２〜３において演算レジスタＶ０、Ｖ１からデータが読み出される。さらに演算パイプ制御部２０からの制御信号によってオペランドセレクタ１１２，１１３が演算レジスタＶ０、Ｖ１のデータを論理演算器１３０に出力する。ここでクロック２〜３の２サイクルに渡ってこれらの処理が連続して行われるのはＶＬ＝２だからである。クロック３〜４で論理演算器１３０は演算を行い（図３中、「演算ステージ１））、クロック４〜５で論理演算器１３０は演算結果をクロスバー１０６へ出力する。さらに演算パイプ制御部２０からの制御信号によって演算レジスタＶ３に演算結果が格納される。クロック５で命令「Ｉ１」の最初のデータが確定し、クロック６で命令「Ｉ１」の２番目のデータが確定する。
【００３５】
命令「Ｉ２」についても同様にして演算が行われる。命令「Ｉ１」によって演算レジスタＶ３への書き込み処理が完了する前に命令「Ｉ２」による演算レジスタＶ３からのデータ読込が行われないように一般的な演算パイプライン制御では後続の命令「Ｉ２」はクロック４で命令の発行が決定する。クロック４で命令「Ｉ２」の発行が決定すると、命令「Ｉ１」の演算結果が演算レジスタＶ３に格納された（図３中、クロック５の「Ｖ３レジスタ」）直後に命令「Ｉ２」で読み出される（図３中クロック５の「Ｖ３レジスタＲｅａｄＤａｔａ」）動作となる。このように命令が最速で動作することをチェイニングという。命令「Ｉ２」のＶＭＰＹ命令は、積和演算器１２０を使用するので演算ＴＡＴは５サイクルである。従って演算レジスタ読み出しから演算レジスタ書き込みまで５サイクルかかる。よってＶ０レジスタでの最初の値が確定するのがクロック１０である。
【００３６】
図４は、関連する情報処理装置による演算処理のタイムチャートを示す第二の図である。
図４を用いて関連する情報処理装置による演算処理の問題点を説明する。図４では以下の命令列を例に関連する情報処理装置による動作を説明する。
命令「Ｉ０」  ＶＡＤＤ＊  Ｖ３  ←  Ｖ０  ＋  Ｖ１    ＶＬ＝２
命令「Ｉ１」  ＶＡＮＤ＊  Ｖ３  ←  Ｖ０  ＆  Ｖ１    ＶＬ＝２
命令「Ｉ２」  ＶＭＰＹ    Ｖ０  ←  Ｖ１  ×  Ｖ２    ＶＬ＝２
命令「Ｉ０」は、積和演算器１２０が、演算レジスタＶ０とＶ１の値を入力し、これらの値を加算して演算結果を演算レジスタＶ３へ格納することを示している。命令「Ｉ１」は、論理演算器１３０が、演算レジスタＶ０とＶ１の値を入力し、論理積を演算して結果を演算レジスタＶ３へ格納することを示している。命令「Ｉ２」は、積和演算器１２０が、演算レジスタＶ１とＶ２の値を入力し、これらの値を乗算して演算結果を演算レジスタＶ０へ格納することを示している。
命令「Ｉ０」と「Ｉ１」の関係における特徴は演算レジスタＶ３についてＷｒｉｔｅ→Ｗｒｉｔｅの関係になることであり、これは演算レジスタＶ３について命令「Ｉ０」におけるＷｒｉｔｅ処理が完了する前に命令「Ｉ０」におけるＷｒｉｔｅ処理が完了してはならないことを意味する。
また、命令「Ｉ１」と「Ｉ２」の関係における特徴は演算レジスタＶ０についてＲｅａｄ→Ｗｒｉｔｅの関係になることである。演算レジスタＶ０について命令「Ｉ１」におけるＲｅａｄ処理が完了する前に命令「Ｉ２」におけるＷｒｉｔｅ処理が完了してはならないことを意味する。
【００３７】
このため命令「Ｉ０」がクロック１で発行決定後、命令「Ｉ０」によって演算レジスタＶ３への書き込み処理が完了する前に命令「Ｉ１」による演算レジスタＶ３への書き込み処理が行われないように一般的な演算パイプライン制御では後続の命令「Ｉ１」の発行の決定はクロック４となる。命令「Ｉ１」の発行決定が「Ｉ０」より２サイクル遅れるのは「Ｉ０」で使用する積和演算器１２０の演算ＴＡＴ（＝５）と「Ｉ１」で使用する論理演算器１３０の演算ＴＡＴ（＝３）の差が２サイクルだからである。
このため、命令「Ｉ１」と「Ｉ２」についても演算レジスタＶ０について読み取りが完了する前に、書き込みが行われないように命令「Ｉ２」の発行の決定は、必ず命令「Ｉ１」が発行された後でなければならない。従って命令「Ｉ２」の発行はクロック５に決定し、本命令による最後のデータ「Ｍ−１」の演算レジスタＶ０への書き込みが完了し値が確定するのはクロック１２である。このように、一般的な動作では、後続の演算命令の投入タイミングを遅らせることによって演算レジスタ間の一貫性を確保していた。その為、さらに後に予定されている演算命令についても次々と投入タイミングが遅れるという問題があった。
【００３８】
図５は、本実施形態による情報処理装置のタイムチャートを示す第一の図である。
図５を用いて本実施形態における動作を説明する。本実施形態では演算器毎の演算ＴＡＴは積和演算器１２０が５サイクルであり、論理演算器１３０は３〜５サイクルと可変である。また図５で説明した命令列は図４のときと同じであるものとする。
本実施形態ではこの命令列のように後続の演算命令の書込み先演算レジスタＶ３でＷｒｉｔｅ→Ｗｒｉｔｅの関係にあるときは、演算パイプ制御部２０が後続の演算命令の演算ＴＡＴを先行する演算命令の演算ＴＡＴに合わせて動作させる。図５の例では命令「Ｉ０」に後続する命令「Ｉ１」のＶＡＮＤ命令の演算ＴＡＴを５サイクルにするということである。このように、演算ＴＡＴを長い方に合わせることで、後続の命令は、１サイクル遅れて投入すればＶ３レジスタへの書き込みタイミングの競合を防ぐことができる。図５の場合、クロック１で命令「Ｉ０」の発行を決定した後、命令「Ｉ１」の発行をクロック２で決定することができる。さらに命令「Ｉ２」の発行はクロック３で決定することができ、演算レジスタＶ０への書き込みが完了し値が確定するのはクロック１０である。
このように本実施形態の情報処理装置によれば、図４の方法に比べ２サイクル早く命令列の演算を完了することができる。
なお、本実施形態による演算ＴＡＴの決定動作については後に図８を用いて説明する。
【００３９】
図６は、関連する情報処理装置による演算処理のタイムチャートを示す第三の図である。
図６及び図２を用いて演算パイプ制御部２０内部のビジー管理の動作について説明する。説明に用いるのは図３でも用いた以下の命令列である。
命令「Ｉ１」  ＶＡＮＤ    Ｖ３  ←  Ｖ０  ＆  Ｖ１    ＶＬ＝２
命令「Ｉ２」  ＶＭＰＹ    Ｖ０  ←  Ｖ２  ×  Ｖ３    ＶＬ＝２
ビジー管理は、命令を発行するにあたりその命令で使用する演算レジスタや演算器が先行する命令の実行により使用中であるかどうかや、何サイクル後に使用中でなくなるかなどを把握し、命令の発行タイミングを調整するために行う。本明細書ではカウンタを用いてビジー管理を行う方法で説明するがこれに限定されない。例えばレジスタで符号を持ちまわる方法などでもよい。本実施形態においてカウンタによるビジー管理を行うのはＷ→Ｗビジー情報管理部２１１〜２１４、Ｒ→Ｗビジー情報管理部２２１〜２２４、Ｗ→Ｒビジー情報管理部２３１〜２３４、演算器ビジー情報管理部２４１〜２４２である。これらの管理部のカウンタの初期値は０であるものとする。
【００４０】
まず、クロック１で命令「Ｉ１」の発行が決定すると、クロック２でＷ→Ｗビジー情報管理部２１４及びＷ→Ｒビジー情報管理部２３４にＶＡＮＤ命令の演算ＴＡＴ（＝３）がセットされる。演算器ビジー情報管理部２４２には命令「Ｉ１」の演算器使用時間である２がセットされる。演算器使用時間は、論理演算器１３０において演算ステージは１回（「１３０演算ステージ１」）で演算データがＶＬ＝２であることから２となる。これらの値がセットされたビジー情報管理部は対応する演算レジスタや演算器がビジー状態であることを示している。そして１クロックが経過するごとに各値は１ずつ減算される。以下において各ビジー情報管理部２１１〜２１４、２２１〜２２４、２３１〜２３４、２４１〜２４２が保持する値をビジー値という。ビジー値はビジー管理を行うためのカウンタである。
後続の命令「Ｉ２」は関連する演算レジスタのビジー状態を確認し、発行条件が整ったら発行を決定する。具体的には命令「Ｉ２」は「Ｖ０  ←  Ｖ２  ×  Ｖ３」なのでＲｅａｄを行う演算レジスタＶ２、Ｖ３についてはＷ→Ｒビジー情報管理部２３３、２３４のビジー状況を確認する。Ｗｒｉｔｅを行う演算レジスタＶ０についてはＷ→Ｗビジー情報管理部２１１、Ｒ→Ｗビジー情報管理部２２１のビジー状況を確認する。そして積和演算器１２０を使用するので演算器ビジー情報管理部２４１のビジー状況を確認する。
【００４１】
まず、クロック２におけるビジー状況を確認する。Ｗ→Ｒビジー情報管理部２３３については、先行する命令「Ｉ１」後に値をセットとしていないのでビジー状態を示すカウンタ値は初期値の０である。これはＲｅａｄを行う演算レジスタＶ２については、命令「Ｉ２」を発行するにあたり問題が無いことを示している。また、Ｗｒｉｔｅを行う演算レジスタＶ０については、Ｗ→Ｗビジー情報管理部２１１、Ｒ→Ｗビジー情報管理部２２１についても同様にビジー状態を示すカウンタ値が０なのでビジーではない。また、演算器ビジー情報管理部２４１についてもビジー状態を示すカウンタ値は０である。次に演算レジスタＶ３について確認すると、クロック２においてＷ→Ｒビジー情報管理部２３４の値は３である。これは演算レジスタＶ３がビジー状態なので命令「Ｉ２」の発行ができないことを示している。
【００４２】
ここで、Ｗ→Ｗビジー情報管理部２１１〜２１４はＷ→Ｗ発行チェック部２０４に１クロックごとにビジー値を出力する。同様に、Ｒ→Ｗビジー情報管理部２２１〜２２４はＲ→Ｗ発行チェック部２０５に、Ｗ→Ｗビジー情報管理部２３１〜２３４、演算器ビジー情報管理部２４１〜２４２はビジーチェック部２０６にビジー値を出力する。そして各チェック部２０４、２０５、２０６は取得したビジー値に基づいて後続の命令を発行するかどうかの判定を行う。判定の方法は自分が管理する対象である演算リソースの全てのビジー値が１以下となるかどうかで判定する。各チェック部２０４、２０５、２０６は、全てのビジー値が１以下であれば「１」を、そうでなければ「０」を命令発行チェック部２０８に出力する。そして命令発行チェック部２０８は、これらの取得した値が全て「１」であれば命令の発行が可能であると判定する。
【００４３】
図６のクロック２及び３においてＷ→Ｗ発行チェック部２０４及びＲ→Ｗ発行チェック部２０５の出力値が１であるが、ビジーチェック部２０６の出力値が０であるので命令発行チェック部２０８は後続命令の発行を決定できない。ビジーチェック部２０６の出力値が０であるのは、ビジーチェック部２０６が、Ｗ→Ｒビジー情報管理部２３４から取得したビジー値によって演算レジスタＶ３がビジー状態であると判断するためである。
クロック４ではＷ→Ｒビジー情報管理部２３４のビジー値は１となる。従って上述の判定方法によりビジーチェック部２０６は「１」を命令発行チェック部２０８に出力する。命令発行チェック部２０８は、各チェック部２０４〜２０６から取得した値が全て「１」となったので命令発行可能と判断して、その旨を示す「1」を伝送路９９９に出力する。この伝送路９９９に命令発行決定が伝わることをＤｉｓｐａｔｃｈという。
このようにしてクロック４に後続の命令「Ｉ２」の発行が決定し演算レジスタＶ３の読み出し動作がクロック５から開始する。先行命令「Ｉ１」による最後のデータが演算レジスタＶ３に格納されて確定するのはクロック５である。演算レジスタＶ３の値はデータ確定後すぐに読み出される（チェイニング動作）。
【００４４】
クロック４で命令「Ｉ２」の発行が決定されると、命令「Ｉ２」は積和演算器１２０を使用するのでＴＡＴ決定部２０７は命令本来の演算ＴＡＴ値である「５」を、Ｗ→Ｗビジー情報生成部２６０に出力する。そしてＷ→Ｗビジー情報生成部２６０は演算ＴＡＴの値「５」を、命令「Ｉ２」の書き込み先演算レジスタ番号情報「Ｖ０」とともにＷ→Ｗビジー情報管理部２１０に出力する。同様にＷ→Ｒビジー情報生成部２６２は命令「Ｉ２」の演算ＴＡＴの値「５」を、演算結果格納先の演算レジスタ情報「Ｖ０」とともにＷ→Ｒビジー情報管理部２３０に送出する。図６ではクロック５でＷ→Ｗビジー情報管理部２１１およびＷ→Ｒビジー情報管理部２３１に値「５」がセットされ、サイクル毎に減算されていくことが示されている。
なお、Ｒ→Ｗビジー情報生成部２６１は演算レジスタから特殊な読み出しが行われる際に使用される。図６の命令列は特殊な読み出しは行わないため、有意な値とはならないが、ストアパススループットの関係から演算レジスタから４サイクル周期で読み出すようなストア命令の場合など、最後のデータが読み出される前に後続命令の書き込みが行われないよう管理している。
【００４５】
図７は、関連する情報処理装置による演算処理のタイムチャートを示す第四の図である。
図７を用いて関連する情報処理装置によるビジー値と命令発行決定について説明する。図７は図４に、ビジー情報管理部２１０〜及びチェック部２０４〜２０６等の情報を加えた図である。図７でも図４と同様に以下の命令列を例に動作を説明する。
命令「Ｉ０」  ＶＡＤＤ＊  Ｖ３  ←  Ｖ０  ＋  Ｖ１    ＶＬ＝２
命令「Ｉ１」  ＶＡＮＤ＊  Ｖ３  ←  Ｖ０  ＆  Ｖ１    ＶＬ＝２
命令「Ｉ２」  ＶＭＰＹ    Ｖ０  ←  Ｖ１  ×  Ｖ２    ＶＬ＝２
図４で説明したとおり、命令「Ｉ１」の演算レジスタＶ３への書き込みは命令「Ｉ０」による演算レジスタＶ３への書き込みの後でなければならない。また、演算レジスタＶ０についても命令「Ｉ１」による読込みの後に命令「Ｉ２」の書き込みが行われるようにしなければならない。図６と同様に命令「Ｉ０」の発行決定後のクロック２で「ＶＡＤＤ」の演算ＴＡＴである「５」が、Ｗ→Ｗビジー情報管理部２１４及びＷ→Ｒビジー情報管理部２３４にセットされる。そして１クロックごとにビジー値が減算されていく。その間、Ｒ→Ｗ発行チェック部２０５は、Ｒ→Ｗビジー情報管理部２２０のビジー値は全て０なので命令発行可能を示す１を命令発行チェック部２０８へ出力する。ビジーチェック部２０６は、後続命令「Ｉ１」で使用する論理演算器１３０のビジー値は０なので命令発行可能を示す１を命令発行チェック部２０８へ出力する。Ｗ→Ｗ発行チェック部２０４は、Ｗ→Ｗビジー情報管理部２１０のビジー値のうち「Ｉ１」で書込みを行う演算レジスタＶ３のビジー値であるＷ→Ｗビジー情報管理部２１４のビジー値に注目して命令発行が可能かどうか判定する。図７に示すようにＷ→Ｗビジー情報管理部２１４のビジー値はクロック２〜６までの間は０ではない。この間Ｗ→Ｗ発行チェック部２０４は、以下の式を用いて後続命令の発行が可能かどうかを判定する。
Ｗ→Ｗビジー情報管理部２１４のビジー値  −  ＶＡＮＤ命令の演算ＴＡＴ値  ≦０
例えばクロック２においてはＷ→Ｗビジー情報管理部２１４のビジー値は５である。また、ＶＡＮＤ命令の演算ＴＡＴ値は３である。従ってクロック２では上の式は満たさない。同様にクロック３においても「４−３＝１」となるので上の式は満たさない。クロック４では「３−３＝０」となり上の式を満たす。Ｗ→Ｗ発行チェック部２０４は、クロック４において命令発行可能を示す１を命令発行チェック部２０８へ出力する。命令発行チェック部２０８は、各チェック部２０４〜２０６から取得した値が全て１となったので命令発行可能と判断して、その旨を示す「1」を伝送路９９９に出力し、命令「Ｉ１」の発行が決定する。このようにして命令「Ｉ１」の発行が決定するのはクロック４となる。同様にして、命令「Ｉ２」の発行が決定するのは命令「Ｉ１」の発行決定後のクロック５となる。命令「Ｉ２」の最後のデータが確定するのは図７に示すとおりクロック１２である。
【００４６】
図８は、本発明の第一の実施形態による情報処理装置のタイムチャートを示す第二の図である。
図８を用いて本実施形態によるビジー値と命令発行決定について説明する。図８においても図４、５、７と同じ命令列を発行するものとする。
図７と同様に命令「Ｉ０」の発行決定後のクロック２で「ＶＡＤＤ」の演算ＴＡＴである「５」が、Ｗ→Ｗビジー情報管理部２１４及びＷ→Ｒビジー情報管理部２３４にセットされ、Ｒ→Ｗ発行チェック部２０５及びビジーチェック部２０６は、後続命令の発行可能を示す１を命令発行チェック部２０８へ出力する。
ここで本実施形態においてはＷ→Ｗ発行チェック部２０４は、以下のような動作を行う。まず、Ｗ→Ｗ発行チェック部２０４は、命令発行キュー２０３から後続の命令の情報（「ＶＡＮＤ」）を取得し、後続の命令が論理演算器１３０を使用することを検出する。すると、Ｗ→Ｗ発行チェック部２０４は、演算ＴＡＴ値の大きい積和演算器１２０の演算ＴＡＴ値を用いて命令発行可否の判定を行うことを決定する。判定式は以下である。
Ｗ→Ｗビジー情報管理部２１４のビジー値  −  ＶＡＤＤ命令の演算ＴＡＴ値  ≦０
ＶＡＮＤ命令の演算ＴＡＴ値（＝３）ではなく、ＶＡＤＤ命令の演算ＴＡＴ値（＝５）を用いる点が図７の判定式とは異なる。このように本実施形態においてはＷ→Ｗ発行チェック部２０４において命令の発行条件を判定する際に演算器本来の演算ＴＡＴ値ではなく、他の演算器の演算ＴＡＴ値のうち最大の値を用いて判定を行うところに特徴がある。上記の式を用いるとクロック２において「５−５＝０」となり、上の式を満たす。従ってクロック２において、Ｗ→Ｗ発行チェック部２０４は、「１」を命令発行チェック部２０８へ出力する。命令発行チェック部２０８は、命令「Ｉ１」の発行可能を決定し、命令発行の決定を伝送路９９９、Ｗ→Ｗビジー情報生成部２６０、Ｒ→Ｗビジー情報生成部２６１、Ｗ→Ｒビジー情報生成部２６２、演算器ビジー情報生成部２６３へ出力する。また、Ｗ→Ｗ発行チェック部２０４は、ＴＡＴ決定部２０７にＷ→Ｗビジー情報管理部２１４のビジー値（クロック２では「５」）を出力する。そしてＴＡＴ決定部２０７はそのビジー値をＷ→Ｗビジー情報生成部２６０、Ｗ→Ｒビジー情報生成部２６２、発行確定ＴＡＴ情報レジスタ２７２へ出力する。Ｗ→Ｗビジー情報生成部２６０、Ｗ→Ｒビジー情報生成部２６２は、命令発行チェック部２０８から命令発行の決定を示す情報を取得すると、ＴＡＴ決定部２０７から取得した演算ＴＡＴ値、命令発行キュー２０３から取得した発行が決定した命令「Ｉ１」で書込み先となる演算レジスタＶ３を示す情報をそれぞれＷ→Ｗビジー情報管理部２１０、Ｗ→Ｒビジー情報管理部２３０へ出力する。同様にＲ→Ｗビジー情報生成部２６１は、０をＲ→Ｗビジー情報管理部２２０へ出力する。また、演算器ビジー情報生成部２６３は命令「Ｉ１」で使用する演算器（論理演算器１３０）を示す情報とＶＬの情報（＝２）を演算器ビジー情報管理部２４０へ出力する。
【００４７】
Ｗ→Ｗビジー情報管理部２１０、Ｗ→Ｒビジー情報管理部２３０は取得した情報に基づいてＷ→Ｗビジー情報管理部２１４及びＷ→Ｒビジー情報管理部２３４に「５」をセットする。Ｒ→Ｗビジー情報生成部２２０は、Ｒ→Ｗビジー情報生成部２２１、２２２に「０」をセットする。演算器ビジー情報管理部２４０は演算器ビジー情報管理部２４２に「２」をセットする。図８のクロック３におけるビジー情報管理部２１４、２２１、２２２、２３４、２４２の値はこのようにしてセットされたものである。その後、各ビジー値は１クロックごとに１ずつ減算されていく。
なお、命令「Ｉ２」の発行はクロック３に確定し、命令「Ｉ２」の最後のデータが確定するのは図８に示すとおりクロック１０である。
【００４８】
以上で本実施形態において演算パイプ制御部２０の各機能部でビジー管理と演算ＴＡＴ値を決定する方法について記載した。以下において決定した演算ＴＡＴ値に基づいて命令を実行する動作について簡単に説明する。
命令の発行が決定すると、命令発行チェック部２０８は、命令発行の決定を命令発行確定情報レジスタ２７０に通知する。命令発行キュー２０３は発行が決定した命令の情報を発行確定命令情報レジスタ２７１へ出力する。ＴＡＴ決定部２０７は発行が決定した命令の演算ＴＡＴ値を発行確定ＴＡＴ情報レジスタ２７２へ出力する。
例えば命令「Ｉ１」（ＶＡＮＤ＊  Ｖ３  ←  Ｖ０  ＆  Ｖ１  ）を例に説明すると、デコーダ２８２は、発行確定命令情報レジスタ２７１から命令情報を取得してそして演算レジスタＶ０、Ｖ１から値をＶＬ＝２だけ連続して読み出す指示をセレクタ１１２、１１３に与える。制御タイミングレジスタ２７３は、命令情報を１クロック保持し、デコーダ２８３に出力する。次にデコーダ２８３は演算処理の実行を論理演算器１３０に指示する。制御タイミングレジスタ２７４は、命令情報を１クロック保持し、デコーダ２８４に出力する。演算が終了すると図８の例では演算器本来の演算ＴＡＴ値を２増加させているので、それに合わせて論理演算器１３０の演算結果を１クロックずつタイミング調整レジスタ１３１、タイミング調整レジスタ１３２を経由させることで演算レジスタＶ３に格納するタイミングを調整する。つまりデコーダ２８４は、演算結果をタイミング調整レジスタ１３１（図１）に出力するように論理演算器１３０に指示する。制御タイミングレジスタ２７５は、命令情報を１クロック保持し、デコーダ２８５に出力する。デコーダ２８５は、演算結果をタイミング調整レジスタ１３２（図１）に出力するようにタイミング調整レジスタ１３１に指示する。制御タイミングレジスタ２７６は命令情報を１クロック保持し、デコーダ２８６に出力する。デコーダ２８６は、演算結果をタイミング調整レジスタ１３２から取得するようにセレクタ１３３に指示し、伝送路９０１を介してクロスバー１０６に出力する。続いて制御タイミングレジスタ２７７は、命令情報を１クロック保持し、デコーダ２８７に出力する。デコーダ２８７は、クロスバー１０６に演算結果を演算レジスタＶ３へ出力するよう指示を行う。
【００４９】
このように本実施形態によれば、演算命令で使用する演算器の本来の演算ＴＡＴ値に代わって、他の演算器の演算ＴＡＴ値のうち最大の値を用いることで、後続の命令を早く発行することができ、結果として命令列の演算を早く完了させることができる。
なお、図８の例では、他の演算器の演算ＴＡＴ値をそのまま使用しているが、Ｗ→Ｗ発行チェック部２０４、Ｒ→Ｗ発行チェック部２０５、ビジーチェック部２０６の発行チェック条件と合わせてビジー期間が管理できれば、任意の値を使用可能である。この具体例については、後に図１１を用いて説明する。
【００５０】
図９は、本発明の第一の実施形態による情報処理装置のタイムチャートを示す第三の図である。
図９を用いて本実施形態によるＴＡＴ決定部２０７が、論理演算器１３０を使用する場合にＷ→Ｗ発行チェック部２０４およびＲ→Ｗ発行チェック部２０５の出力値を比較して、値の大きい方を演算ＴＡＴとして出力する動作の一例を説明する。図９では以下の命令列を例に本実施形態の情報処理装置による動作を説明する。
命令「Ｉｓｔ」 ＶＳＴ      Ｍｅｍ  ←  Ｖ３            ＶＬ＝２
命令「Ｉ０」   ＶＡＤＤ＊  Ｖ３  ←  Ｖ０  ＋  Ｖ１    ＶＬ＝２
命令「Ｉ１」   ＶＡＮＤ＊  Ｖ３  ←  Ｖ０  ＆  Ｖ１    ＶＬ＝２
命令「Ｉ２」   ＶＭＰＹ    Ｖ０  ←  Ｖ１  ×  Ｖ２    ＶＬ＝２
ＶＳＴはストア命令のことで命令「Ｉｓｔ」は、演算レジスタＶ３の値をメモリに書き込む処理である。本実施形態においては４サイクルに1回レジスタからデータを読み出す設定になっているものとする。ＶＳＴ命令における命令ＴＡＴは次の式で算出するものとする。
（ＶＳＴ命令のＶＬ値  −  １）×（４  −  １）  ・・・  式２
式の２項目の「４」は４サイクルに1回レジスタからデータを読み出すことによる。図９の場合、ＶＬ＝２であるから式２の値は「３」となる。
命令「Ｉｓｔ」と「Ｉ０」、「Ｉ１」の関係における特徴は演算レジスタＶ３についてＲｅａｄ→Ｗｒｉｔｅの関係になることである。また、命令「Ｉ０」と「Ｉ１」の関係における特徴は演算レジスタＶ３についてＷｒｉｔｅ→Ｗｒｉｔｅの関係になることである。
命令「Ｉｓｔ」と「Ｉ０」、「Ｉ１」の関係に注目するとクロック０で命令「Ｉｓｔ」の発行が決定すると、クロック１で演算レジスタＶ３の１つ目の要素をメモリにストアする。そして４サイクル後の５クロックで２つ目の要素をメモリにストアする。命令「Ｉ０」、「Ｉ１」の演算レジスタＶ３への書き込みは５サイクル後に行わなければならない。命令「Ｉ０」と「Ｉ１」の関係については、図７、図８と同様である。
まず、クロック０で命令「Ｉｓｔ」の発行が決定すると、クロック１でＲ→Ｗビジー情報管理部２２４に式２で求めた値「３」がセットされる。ここでＲ→Ｗ発行チェック部２０５は、命令「Ｉ０」の発行の判定を次式で行う。
Ｒ→Ｗビジー情報管理部２２４のビジー値  −  ＶＡＤＤ命令の演算ＴＡＴ値  ≦０
この例の場合、「３−５」となるので上の式は満たされる。従って命令「Ｉ０」の発行がクロック１で決定する。命令「Ｉ０」の発行が完了するとクロック２において図８と同様に「５」が、Ｗ→Ｗビジー情報管理部２１４にセットされ、クロック１で「３」だったＲ→Ｗビジー情報管理部２２４の値は「２」となる。
このときＷ→Ｗ発行チェック部２０４は、「Ｉ０」と「Ｉ１」におけるＶ３へのＷ→Ｗの関係を、
Ｗ→Ｗビジー情報管理部２１４のビジー値  −  ＶＡＮＤ命令の演算ＴＡＴ値  ≦０
で判定する。ここでＶＡＮＤ命令の演算ＴＡＴ値は、命令「Ｉ０」のＶＡＤＤ命令の演算ＴＡＴである「５」として計算するので、この式の左辺は「５−５」となりこの式を満たす。従ってＲ→Ｗ発行チェック部２０４は、命令発行可能を示す「１」を命令発行チェック部２０８へ出力する。
Ｒ→Ｗ発行チェック部２０５は、「Ｉｓｔ」と「Ｉ１」におけるＶ３へのＲ→Ｗの関係を、
Ｒ→Ｗビジー情報管理部２２４のビジー値  −  ＶＡＮＤ命令の演算ＴＡＴ値  ≦０
で判定する。ここでＶＡＮＤ命令の演算ＴＡＴ値は、命令「Ｉｓｔ」の演算ＴＡＴと「ＶＡＮＤ」本来の演算ＴＡＴのうち大きい方の値となるが共に「３」であるので、この式の左辺は「２−３」となり、この式を満たす。従ってＲ→Ｗ発行チェック部２０５は、命令発行可能を示す「１」を命令発行チェック部２０８へ出力する。これによりクロック２で命令「Ｉ１」の発行が決定する。
一方、クロック２においてＴＡＴ決定部２０７は、Ｗ→Ｗビジー情報管理部２１４の値「５」をＷ→Ｗ発行チェック部２０４を介して取得する。また、ＴＡＴ決定部２０７は、Ｒ→Ｗビジー情報管理部２２４の値「２」をＲ→Ｗ発行チェック部２０５を介して取得する。そしてＴＡＴ決定部２０７は、命令「Ｉ１」の「ＶＡＮＤ」の演算ＴＡＴを、これらの値を比較して大きい方の値である「５」と決定する。以降の処理は図８と同じである。このようにＷ→Ｗビジー情報管理部とＲ→Ｗビジー情報管理部とに有意なビジー値を持つ場合であっても、ＴＡＴ決定部２０７は、それらのうち大きい方の値を次の命令における演算ＴＡＴの値と定める。それにより後続の命令を早く発行することができ、結果として命令列の演算を早く完了させることができる。
【００５１】
図１０は、本発明の第一の実施形態による情報処理装置のタイムチャートを示す第四の図である。
図１０を用いて本実施形態によるＴＡＴ決定部２０７が、他の演算器の最大演算ＴＡＴだけではなく、本来の演算ＴＡＴ値と他の演算器の最大演算ＴＡＴ値との中間的な値を取り得る例について説明する。図１０の説明で使用する命令列は図８と同じである。
この図における前提としてクロック１の時点でこの命令列以前に実行されたある演算命令によって例えばＶＬ＝４のＡＮＤ命令が発行され、この図のクロック１において演算器ビジー情報管理部２４２のビジー値が「３」であるものとする。また、この先行する命令による演算レジスタの干渉は考えないものとする。また、先行するＡＮＤ命令と干渉しない命令「Ｉ０」はクロック１で発行が決定しているものとする。するとこの図においては図８と異なり命令「Ｉ１」の発行に対して演算器ビジー情報管理部２４２のビジー値がネックとなる。命令「Ｉ１」もＡＮＤ命令であり、論理演算器１３０を使用するからである。クロック３までは、演算器ビジー情報管理部２４２のビジー値が示すように論理演算器１３０がビジー状態である。そのためビジーチェック部２０６の値は、クロック３まで次命令の発行可能を示す「１」にはならない。クロック３においてＲ→Ｗ発行チェック部２０４、Ｗ→Ｗ発行チェック部２０５、ビジーチェック部２０６全ての値が１となり命令「Ｉ１」の発行が可能になる。そのとき命令発行チェック部２０８は、「１」を伝送路９９９に出力する。一方、ＴＡＴ決定部２０７は、クロック３においてＲ→Ｗビジー情報管理部２１４の値「４」をＲ→Ｗ発行チェック部２０４を介して取得する。そしてＴＡＴ決定部２０７は命令「Ｉ１」の「ＶＡＤＤ」の演算ＴＡＴを「４」と決定する。命令「Ｉ１」においては、図８と異なり演算ＴＡＴを４にセットしたため、タイミング調整レジスタ１３１からクロスバー１０６へ出力する。従って図８と比べの命令「Ｉ１」の全サイクルが１クロック短くなっている。その為、仮に命令「Ｉ２」が命令「Ｉ１」と演算レジスタＶ３についてＲ→Ｗ関係にある場合など、図８の例のように命令「Ｉ１」の演算ＴＡＴを「５」と設定する場合に比べ１クロック早く命令発行を決定できることになる。
このように本実施形態によれば演算ＴＡＴとして本来の演算ＴＡＴ値と他の演算器の最大演算ＴＡＴ値との中間的な値を状況に応じて柔軟に取り得ることにより計算リソースの効率的な活用、処理の高速化が可能になる。
【００５２】
図１１は、本発明の第一の実施形態による情報処理装置のタイムチャートを示す第五の図である。
図１１を用いて本実施形態が、読み出される要素が連続では無く、何サイクルか空いて飛び飛びに読み出す読み出しパターンにも対応できることを説明する。説明に用いるのは以下の命令列である。
命令「Ｉ１」  ＶＳＴ      Ｍｅｍ  ←  Ｖ０              ＶＬ＝４
命令「Ｉ２」  ＶＡＮＤ    Ｖ０    ←  Ｖ２  ＆  Ｖ３    ＶＬ＝４
この命令列は、「Ｉ１」と「Ｉ２」が演算レジスタＶ０についてＲ→Ｗの関係になっていることが特徴である。
この例においても４サイクルに1回レジスタからデータを読み出す設定になっているものとする。図９で説明したとおりＶＳＴの演算ＴＡＴは、式２で計算する。すると図１１のＶＳＴの演算ＴＡＴは「９」である。クロック１でＲ→Ｗビジー情報管理部２２１に「９」がセットされる。Ｒ→Ｗ発行チェック部２０５の判定条件は、
Ｒ→Ｗビジー情報管理部２２１  −  ＶＡＮＤ命令ＴＡＴ  ≦  ０
である。
本実施形態の論理演算器１３０の演算ＴＡＴは３〜５の値を可変的にとり得る。この例では、ＶＡＮＤ命令ＴＡＴを５として判定する。するとクロック６においてこの式が満たされ、命令「Ｉ２」の発行が決定する。するとクロック１４において演算レジスタＶ０の４要素目がメモリにストアされてから、クロック１５において演算レジスタＶ０の４要素目に書き込みが行われデータの一貫性が保たれ、最短のタイミングでこの命令列の実行が完了する。
このように本実施形態によれば、演算レジスタから特殊な読み出しが行われる際にＲ→Ｗビジー情報生成部２６１を使用して図１１で示した例のようにストアパススループットの関係から演算レジスタから４サイクル周期で読み出すようなストア命令の場合など、最後のデータが読み出される前に後続命令の書き込みが行われないよう管理しながら最速のタイミングで処理を実行することができる。
【００５３】
＜第二の実施の形態＞
以下、本発明の第二の実施形態による情報処理装置の動作を図１２〜図１３を参照して説明する。
図１２に示すとおり第一の実施形態においては命令動作効率向上のためにＷ→Ｗビジー情報管理部、Ｗ→Ｗビジーチェック部など情報処理装置１のハードウェアによって演算ＴＡＴを決定していたが、第二の実施形態において演算ＴＡＴは、予めシミュレーションや実測などによって性能の良い演算ＴＡＴ値を決定しておき、その決定した値を演算パイプ制御部２０の外部から制御信号によってＷ→Ｗ発行チェック部２０４などに与える。例えば、図１２の信号９８０に値「５」が含まれており、Ｗ→Ｗ発行チェック部２０４、演算ＴＡＴ決定部２０７はこの信号９８０に含まれる値「５」を各命令の演算ＴＡＴ値とする。
図１３は第二実施形態におけるタームチャートである。この図における命令列は図７と同じである。図１３に示す通りクロック１以降、信号９８０によって値「５」が与えられる。
本実施形態によると予めジョブ毎に実行性能が良い値を決定しておき、信号９８０を介して演算ＴＡＴ値を受け取ることでより柔軟に効率の良い演算を行うことが出来る。
【００５４】
＜第三の実施の形態＞
以下、本発明の第三の実施形態による情報処理装置の動作を図１４を参照して説明する。
図１４に示すとおり第三の実施形態においては、状態カウント部８００を備えている。状態カウント部８００は、命令発行チェック部２０８が「１」を出力したときにおけるＴＡＴ決定部２０７が決定した演算ＴＡＴの値を取得する。そして、状態カウント部８００は、演算ＴＡＴの分布をカウントする。そして、例えば、演算ＴＡＴ＝５が２４５５回、演算ＴＡＴ＝４が１２４４回などのように演算ＴＡＴ値の最大値をカウントした回数が、他と比較して群を抜いて多い場合は、演算ＴＡＴ＝５と固定することを決定し、その決定した演算ＴＡＴをＷ→Ｗ発行チェック部２０４などに与える。
これにより、論理回路の信号変化を抑止して省電力化を図ることができる。
【００５５】
また、命令発行決定時は命令本来の演算ＴＡＴで命令の発行を決定し、例えばＲ→Ｗにある後続命令の発行決定時に、制御タイミングレジスタ２７４以降の演算ＴＡＴの値を変更する構成も考えられる。
【００５６】
なお、Ｗ→Ｗビジー情報管理部２１０、Ｒ→Ｗビジー情報管理部２２０、Ｗ→Ｒビジー情報管理部２３０、演算器ビジー情報管理部２４０は、ビジー期間情報管理部の一例である。また、ビジー値は、ビジー期間情報の一例である。また、チェック部は、例えば、Ｗ→Ｗ発行チェック部２０４、Ｒ→Ｗ発行チェック部２０５、ビジーチェック部２０６、命令発行チェック部２０８で構成される。また、ＴＡＴ決定部２０７は、決定部の一例である。また、制御部は、例えば、命令発行確定情報レジスタ２７０、発行確定命令情報レジスタ２７１、発行確定ＴＡＴ情報レジスタ２７２、デコーダ２７３〜２７８、タイミング調整レジスタ１３１〜１３２、セレクタ１３３で構成される。
【００５７】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
【符号の説明】
【００５８】
１００・・・演算レジスタＶ０
１０１・・・演算レジスタＶ１
１０２・・・演算レジスタＶ２
１０３・・・演算レジスタＶ３
１０６・・・クロスバー
１１０、１１１、１１２、１１３・・・オペランドセレクタ
１２０・・・積和演算器
１３０・・・論理演算器
１３１、１３２・・・タイミング調整レジスタ
１３３・・・セレクタ
２０・・・演算パイプ制御部
２０１・・・命令バッファ部
２０２・・・命令デコーダ
２０３・・・命令発行キュー
２０４・・・Ｗ→Ｗ発行チェック部
２０５・・・Ｒ→Ｗ発行チェック部
２０６・・・ビジーチェック部
２０７・・・ＴＡＴ決定部
２０８・・・命令発行チェック部
２１０・・・Ｗ→Ｗビジー情報管理部
２２０・・・Ｒ→Ｗビジー情報管理部
２３０・・・Ｗ→Ｒビジー情報管理部
２４０・・・演算器ビジー情報管理部
２６０・・・Ｗ→Ｗビジー情報生成部
２６１・・・Ｒ→Ｗビジー情報生成部
２６２・・・Ｗ→Ｒビジー情報生成部
２６３・・・演算器ビジー情報生成部
２７０・・・命令発行確定情報レジスタ
２７１・・・発行確定命令情報レジスタ
２７２・・・発行確定ＴＡＴ情報レジスタ
２７３、２７４、２７５、２７６、２７７、２７８・・・デコーダ
【図１】
2015194844.tif 000003
【図２】
2015194844.tif 000004
【図３】
2015194844.tif 000005
【図４】
2015194844.tif 000006
【図５】
2015194844.tif 000007
【図６】
2015194844.tif 000008
【図７】
2015194844.tif 000009
【図８】
2015194844.tif 000010
【図９】
2015194844.tif 000011
【図１０】
2015194844.tif 000012
【図１１】
2015194844.tif 000013
【図１２】
2015194844.tif 000014
【図１３】
2015194844.tif 000015
【図１４】
2015194844.tif 000016