(57)【特許請求の範囲】
【請求項１】
命令メモリに記憶された一の命令が読み込まれるまでに所定のステージ数を要する命令キューと、
前記命令メモリに記憶されている所定数の命令からなる命令グループ内の命令を所定の順番で所定回数だけ繰り返し実行するループ命令が発行された場合、前記ステージ数よりも１少ない数の命令を前記命令グループの先頭から前記順番に基づき記憶するループ命令キューと、
前記順番に従って、前記ループ命令キューに記憶された命令を前記命令キューに出力した後に、連続して前記命令メモリに記憶された前記命令グループ内の命令を前記命令キューに出力するセレクタと、
を有することを特徴とする情報処理装置。
【請求項２】
前記セレクタは、前記ループ命令キューに記憶された命令を前記ループ先頭命令から前記順番に従って前記命令キューに出力した後に、前記命令メモリに記憶された前記命令グループ内の命令を前記順番に従って前記命令キューに出力することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記セレクタは、前記ループ命令キューが有効であるか否かを示すループ有効フラグに基づいて、前記ループ命令キューに記憶された命令を前記命令キューに出力するか、前記命令メモリに記憶された命令を前記命令キューに出力するか、を切り替えることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記ループ有効フラグは、前記ループ命令が発行された場合に前記ループ命令キューが有効であることを示す、ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記ループ命令キューは、前記ループ命令の最初の繰り返しの際に、前記ステージ数よりも１少ない数の命令を前記ループ先頭命令から前記順番に従って記憶することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記命令グループ内の命令のうち、前記順番に従って最後に実行されるループ最終命令よりひとつ前に実行される命令に基づき、繰り返しを行った数が前記所定回数に達したか否かを判断することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記ループ命令キューから前記ループ先頭命令を読み出すステージと、前記命令メモリから前記命令グループ内の命令を読み出すステージとが、同時に開始されることを特徴とする請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン方式で複数の処理を並行して行う情報処理装置に関する。
【背景技術】
【０００２】
従来、情報処理装置の処理速度を高速化するために、複数の命令を少しずつずらして同時並行的に実行するパイプライン処理を行う「パイプライン方式」が用いられている。
【０００３】
パイプライン処理では、命令を実行する速度自体が高速化される訳ではないが、命令の処理（パイプライン処理においては、一般的にはステージという）が並行して行われるために、単位時間あたりの仕事量が増大し、結果的に処理速度が向上する。十分な仕事量がある場合、パイプライン処理による速度向上比は、一般的にはステージの数と等しくなる。
【０００４】
一般に、情報処理装置は、実行しようとする命令の命令パケットを命令メモリから読み出して順次命令キューに格納しておき、命令キューから命令パケットを読み出して動作を実行している。なお、このように、命令パケットを命令メモリから予め読み出して命令キューに格納しておく動作は、「先読み」とも呼ばれている。
【０００５】
しかし、先読みを行うパイプライン方式の情報処理装置は、同一手順の命令群を繰り返し実行させる場合（すなわち、情報処理装置にループ処理を行わせる場合）には、速度向上比が低くなってしまうことがある。
【０００６】
従来の情報処理装置におけるループバック時のパイプライン処理について説明する。図７に従来の情報処理装置の構成を示す。
プロセッサ５００は、命令キュー５０６を有する。
【０００７】
プロセッサ５００は命令メモリ６００から命令パケットを命令キュー５０６に読み込む。
また、プロセッサ５００は、実行する命令がループ開始命令であったか否か、すなわちループ命令が発行されたか否かを判断する。また、ループ命令実行中にループから抜けるか否かの判定を行う。
【０００８】
また、図８にこの情報処理装置のループバック（ループの処理回数が規定数に達していないためにループの先頭へ戻る）時の動作を示す。なお、ここでプロセッサ５００は命令メモリ６００から命令パケットを読み込むのに２ステージ分の時間を要するものとする。
図９に示すように、ループ処理を構成する命令群は、ループ命令が発行された後、ループ処理の先頭命令（ＬＴ１）からループ処理の最終命令（ＬＬ）までを規定の回数だけ繰り返す。図９に示す例では、ループ処理の最終命令（ＬＬ）の一つ前の命令でループエンド（ＬＥ）を検出している。ループエンドを検出すると、ループが規定回数繰り返されたか判断し、規定回数に達していない場合はループ最終アドレスの命令を実行後ループ処理の先頭命令に戻り、規定回数に達している場合はループ処理の最終命令を実行後そのままループを抜ける。
【０００９】
ここで、プロセッサ５００は、ループバック時には、ＬＥ→ＬＬ→ＬＴ１→ＬＴ２→・・・という順に命令を実行する必要がある。
【００１０】
しかし、図８に示したように、プロセッサ５００では、ループエンドのアドレスが検出された時点では、既に命令パケットの読み込みが開始されており、ループエンドを検出するサイクルで読み込みを開始した命令パケットは本来実行されないものである。したがって、ループバックが検出された時点で既に読み込みが開始されている命令パケットは無効なメモリアドレスのものであるから、ループバックした後の命令（ＬＴ１）を実行するためには、新たに命令パケットを命令メモリ６００から命令キュー５０６へ読み込み直さなければならない。
【００１１】
すなわち、ループエンドを検出した次のサイクルで、ループ処理の先頭命令の命令パケットの読み込みが行われるため、ループ処理の最終命令とループ処理の先頭命令の間に、図８で示す無駄なサイクル（Invalid）が発生してしまう事になる。
したがって、先読みを行うパイプライン方式の情報処理装置にループ処理を実行させると、ループバック時に遅延（レイテンシー）が生じてしまい、処理を高速化する妨げとなる。
【００１２】
ループ命令の高速実行を目的とした従来技術としては、特許文献１に開示される「データ処理装置」がある。
特許文献１に開示される発明は、先行する命令に付加されている付加情報が、ループを構成する命令群をループ命令キューへ格納する格納する命令であった場合には、ループを構成する命令群をループ命令キューに格納するデータ処理装置である。
【特許文献１】特開昭６３−３１４６４４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかし、特許文献１に開示される発明は、ループを構成する命令群の読み出し時間を削減することによってループ命令の高速実行を図るものであり、ループバック時のレイテンシーに関しては何ら考慮がなされていない。しかも、特許文献１に開示される発明は、ループ処理の高速実行のために、ループを構成する全ての命令群をループ命令キューに保持するため、ハードウェアの規模が大きくなってしまう。特に、多重ループの処理では、ループ命令キューに格納すべき情報量が莫大な量になってしまう。
【００１４】
このように、従来技術ではループバック時の遅延が発生しないようにすることができず、ループ処理の高速実行のためにループを構成する全ての命令群をループ命令キューに保持するためハードウェアの規模が大きくなってしまうという問題があった。
【００１５】
本発明はかかる問題に鑑みてなされたものであり、ハードウェアの規模が大きくすることなくループバック時の遅延が発生しないようにする情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するため、本発明の情報処理装置は、命令メモリに記憶された一の命令が読み込まれるまでに所定のステージ数を要する命令キューと、
前記命令メモリに記憶されている所定数の命令からなる命令グループ内の命令を所定の順番で所定回数だけ繰り返し実行するループ命令が発行された場合、前記命令グループ内の命令のうち、前記ステージ数より少ない数の命令を前記順番に基づき記憶するループ命令キューと、
前記順番に従って、前記ループ命令キューに記憶された命令を前記命令キューに出力した後に、連続して前記命令メモリに記憶された前記命令グループ内の命令を前記命令キューに出力するセレクタと、
を有することを特徴とする。
【発明の効果】
【００２６】
本発明によれば、ハードウェアの規模が大きくすることなくループバック時の遅延が発生しないようにする情報処理装置を提供できる。
【発明を実施するための最良の形態】
【００２７】
〔発明の原理〕
本発明の原理について説明する。
本発明においては、演算処理装置は、命令パケットを実行した際に、その命令パケットがループ開始命令のものであるか否かを判断する。実行した命令パケットがループ開始命令のものであれば、ループ処理を形成する命令群の先頭から所定数の命令パケットをループ命令キューに格納する。
その後、ループエンドを検出した場合には、ループ命令キューに格納されている命令パケットを命令キューに読み込む。このようにすることで、ループバック時には命令メモリからループ処理の先頭の命令パケットを読み込む必要が無くなるため、ループバック時にレイテンシーを発生させないようにすることができる。
【００２８】
以下、上記原理に基づく本発明の好適な実施の形態について説明する。
【００２９】
〔第１の実施形態〕
本発明を好適に実施した第１の実施形態について説明する。図１に本実施形態にかかる情報処理装置の構成を示す。
本実施形態にかかるパイプライン方式の情報処理装置は、ループ高速化回路１０７を備えたプロセッサ１００と命令メモリ２００とがバスを介して接続された構成である。
図２に、本実施形態にかかるパイプライン方式の情報処理装置のより詳細な構成を示す。
プロセッサ１００は、命令キュー１０６及びループ高速化回路１０７を有する。
【００３０】
プロセッサ１００は命令メモリ２００又はループキュー１０７１から命令パケットを命令キュー１０６に読み込む。
プロセッサ１００は、実行する命令がループ開始命令であったか否か、すなわちループ命令が発行されたか否かを判断する。また、ループ命令実行中にループから抜けるか否かの判定を行う。
ループ高速化回路１０７は、ループ命令キュー１０７１、ループキュー有効フラグ（特許請求の範囲におけるフラグ）１０７２及びセレクタ１０７３を有する。
プロセッサ１００は、ループ命令が発行されたと判断した際に、ループ開始アドレスの命令パケットをループ命令キュー１０７１に格納する。ループキュー有効フラグ１０７２は、ループ命令キュー１０７１が有効であるか否かを示すフラグである。セレクタ１０７３は、プロセッサ１００が命令メモリ２００から命令パケットを取り込むかループ命令キュー１０７１から命令パケットを取り込むのかを切り換える。
【００３１】
本実施形態にかかる情報処理装置の動作について説明する。図３に、本実施形態にかかる情報処理装置の動作の流れを示す。なお、初期状態ではセレクタ１０７３は命令メモリ２００側、ループキュー有効フラグ１０７３はinvalidとなっている。
プロセッサ１００は、ループ命令が発行されるまでは、命令メモリ２００から命令キュー１０６へ命令パケットを読み込み、命令キュー１０６に読み込まれている命令パケットを順次処理する（ステップＳ１０１、Ｓ１０２／Ｎｏ、Ｓ１０４、Ｓ１０５／Ｎｏ、Ｓ１０６／Ｎｏ、Ｓ１１１）。
プロセッサ１００が、ループ命令が発行されたと判断した場合（ステップＳ１０２／Ｙｅｓ）、プロセッサ１００は、ループ処理の先頭の命令パケットをループ命令キュー１０７１に格納するとともに、ループキュー有効フラグ１０７２を有効（valid）とする（ステップＳ１０３）。
【００３２】
ループキュー有効フラグ１０７２がvalidとされたのち、プロセッサ１００は、命令キュー１０６に読み込まれている命令パケットを実行する（ステップＳ１０４）。
なお、ループ命令が発行されていない場合（ステップＳ１０２／Ｎｏ）も同様に、プロセッサ１００は、命令キュー１０６に読み込まれている命令パケットを実行する。
【００３３】
プロセッサ１００は、実行する命令パケットがループを抜ける命令であるか否かを判断する（ステップＳ１０５）。
実行する命令パケットがループを抜ける命令であった場合（ステップＳ１０５／Ｙｅｓ（ループホップ））、プロセッサ１００は、ループキュー有効フラグ１０７２をinvalidにする（ステップＳ１１０）。
【００３４】
一方、プロセッサ１００で実行した命令パケットがループを抜ける命令では無かった場合（ステップＳ１０５／Ｎｏ）、プロセッサ１００はループエンドに達したか否かを判断する（ステップＳ１０６）。
ループエンドに達していない（ステップＳ１０６／Ｎｏ）のであれば、プロセッサ１００は、命令メモリ２００から命令キュー１０６へ命令パケットを読み込ませる（ステップＳ１１１）。一方、ループエンドに達している（ステップＳ１０６／Ｙｅｓ）のであれば、プロセッサ１００はループの回数がループ命令に規定される回数に達したか否かを判断する（ステップＳ１０７）。
ループ回数が規定回数に達しているのであれば（ステップＳ１０７／Ｙｅｓ）、プロセッサ１００はループキュー有効フラグ１０７２をinvalidにする（ステップＳ１１０）。
一方、ループ回数が規定回数に達していない（ループ処理を行っていない場合を含む）のであれば（ステップＳ１０７／Ｎｏ（ループバック））、プロセッサ１００は、ループキュー有効フラグ１０７２がvalidであるか否かを確認する（ステップＳ１０８）。
【００３５】
ループキュー有効フラグ１０７２がvalidであるならば（ステップＳ１０８／Ｙｅｓ）、プロセッサ１００は、セレクタ１０７３をループ命令キュー側に切り換えて、ループ命令キュー１０６１に格納されている命令パケット（即ちループスタートアドレスの命令パケット）を命令キュー１０６へ読み込む（ステップＳ１０９）。プロセッサ１００は、ループ命令キュー１０７１から命令キュー１０６へループ先頭の命令パケットを読み込んだら、セレクタ１０７３を命令メモリ２００に切り換える。
一方、ループキュー有効フラグ１０７２がinvalidであるならば（ステップＳ１０８／Ｎｏ）、プロセッサ１００は、命令メモリ２００から命令キュー１０６へ命令パケットを読み込む（ステップＳ１１１）。
【００３６】
この後は、ステップＳ１０２へ進み、処理が終了するまで上記同様の手順を繰り返す。
【００３７】
本実施形態においては、プロセッサ１００は、ループ命令キュー１０７１に格納されている命令パケットを、ループエンドを検出した次のサイクルで命令キュー１０６に読み込むため、ループエンドを検出した次のサイクルで命令メモリ２００から命令パケットを読み込むよりも１サイクル早く読み込める。このため、ループバック時にレイテンシーの発生させないようにできる。
【００３８】
図４に、本実施形態にかかる情報処理装置のループバック時の処理を示す。図４において、ＩＦ１、ＩＦ２はプロセッサ１００が命令メモリ２００から命令パケットを命令キュー１０６に読み込むのに、２ステージかかることを表す。また、ＤＱは、プロセッサ１００が命令パケットを割り振るステージを表す。また、ＤＥは、プロセッサ１００が命令をデコードするステージを示す。また、ＤＰは、プロセッサ１００がデータポインタを更新するステージを表す。また、ＥＸは、プロセッサ１００が命令を実行するステージを表す。
【００３９】
ループバック時には、ＬＥ→ＬＬ→ＬＴ１→ＬＴ２→・・・という順番で命令を実行する。
この例では、命令パケットの読込みに２ステージ分の時間が必要であるため、ループエンドを検出した時点では、ＬＴ１と異なる命令パケットの読込みが開始されている。しかし、本実施形態にかかる情報処理装置は、ループエンドが検出された時点で、プロセッサ１００はループ命令キュー１０７１からＬＴ１の命令パケットを読み込めるため、ループエンド時にレイテンシーが発生させることなくＬＴ１の命令パケットを読み込める。
【００４０】
ループ命令を実行する場合、ループ命令の命令パケットのＥＸステージが終了した次のステージで、ループ処理の先頭の命令パケットが命令キュー１０６からループ命令キュー１０７に書き写され、ループキュー有効フラグ１０７２が有効となる。
一方、ループエンドの検出は、プロセッサ１００によってループ処理の最終命令の一つ前の命令で行われる。よって、ループエンドが検出された次のサイクルで、プロセッサ１００はループ命令キュー１０６からループ処理の先頭の命令パケットを読み出すことができる。
【００４１】
このように、本実施形態にかかる情報処理装置は、ループバックの際には、ループ命令キューに格納されている命令パケットを読み込んで処理を行うため、ループバック時にレイテンシーが生じることが無くなる。
【００４２】
〔第２の実施形態〕
本発明を好適に実施した第２の実施形態について説明する。上記第１の実施形態においては、命令メモリから命令キューへ命令パケットを読み込むのに２ステージ分の時間が必要な場合について説明したが、本実施形態においては命令メモリから命令キューへ命令パケットを読み込むのにｎステージ分の時間を必要とする場合について説明する。
【００４３】
図５に、本実施形態にかかる情報処理装置の構成を示す。この情報処理装置は、第１の実施形態と同様の構成である。ただし、本実施形態においては、ループ命令キュー１０７１をｎ−１個（１０７１1〜１０７１(n-1)）有する。
【００４４】
本実施形態にかかる情報処理装置の動作について説明する。
本実施形態にかかる情報処理装置の動作の流れは、第１の実施形態にかかる情報処理装置とほぼ同様である。
ただし、ループバック時には、プロセッサ１００はセレクタ１０７３をループ命令キュー１０７１1側に切り換えて命令パケットＬＴ１を読み出した後に、セレクタ１０７３をループ命令キュー１０７１2側に切り換える。これにより次サイクルにおいて、プロセッサ１００はループ命令キュー１０７１2から命令パケットＬＴ２を読み出す。同様に、プロセッサ１００はステージごとにセレクタ１０７３を切り換えて各ループ命令キュー１０７１1〜１０７１(n-1)から命令パケットを順次読み込む。
【００４５】
これにより、ループバック時には、ループの先頭の命令パケットであるＬＴ１からループのｎ−１番目の命令パケットであるＬＴ（ｎ−１）までは、命令メモリ２００からではなくループ命令キュー１０７１1〜１０７１(n-1)からそれぞれ読み込まれる。
【００４６】
よって、プロセッサ１００は、これらの命令パケットをメモリアドレスの指定を行うことなく命令キュー１０６に読み込めるため、ループバック時にレイテンシーを生じさせることはない。
【００４７】
命令メモリ２００からの命令パケットの読み込みに４ステージの時間を要する場合を例として、本実施形態にかかるパイプライン方式の情報処理装置の動作について説明する。
図６に、本実施形態にかかる情報処理装置のループバック時の処理を示す。図６において、ＩＦ１、ＩＦ２、ＩＦ３及びＩＦ４はプロセッサ１００が命令メモリ２００から命令パケットを命令キュー１０６に読み込むのに、４ステージかかることを表す。また、ＤＱは、プロセッサ１００が命令パケットを割り振るステージを表す。また、ＤＥは、プロセッサ１００が命令をデコードするステージを示す。また、ＤＰは、プロセッサ１００がデータポインタを更新するステージを表す。また、ＥＸは、プロセッサ１００が命令を実行するステージを表す。
【００４８】
ループエンド時には、プロセッサ１００は、ＬＥ→ＬＬ→ＬＴ１→ＬＴ２→ＬＴ３→ＬＴ４→・・・という順番で命令パケットを実行する。
この例では、命令パケットの読み込みに４ステージ分の時間が必要であるため、ループエンドを検出した時点では、ＬＴ１、ＬＴ２及びＬＴ３と異なる命令パケットの読み込みが開始されている。しかし、本実施形態にかかる情報処理装置は、ループエンドが検出された時点で、プロセッサ１００はループ命令キュー１０７１1からＬＴ１の命令パケットを、ループ命令キュー１０７１2からＬＴ２の命令パケットを、ループ命令キュー１０７１3からＬＴ３の命令パケットを命令キューへ１０６読み込めるため、ループエンド時にレイテンシーが発生させることなくＬＴ１、ＬＴ２及びＬＴ３の命令パケットを読み込める。
【００４９】
このように、本実施形態にかかる情報処理装置は、ループバックの際には、ループ命令キューに格納されているｎ−１個のメモリパケットをそれぞれ読み込んでして実行するため、ループバック時にレイテンシーが生じることが無くなる。
【００５０】
なお、上記各実施形態は本発明の好適な実施の一例であり、本発明はこれらに限定されることはない。
例えば、上記各実施形態においては、各ステージが同じ時間長である場合を例に説明を行ったが、本発明は、ステージの時間長が異なる場合にも適用可能である。
このように、本発明は様々な変形が可能である。
【図面の簡単な説明】
【００５１】
【図１】本発明を好適に実施した第１の実施形態にかかるパイプライン方式の情報処理装置の概略構成を示す図である。
【図２】第１の実施形態にかかるパイプライン方式の情報処理装置の構成を示す図である。
【図３】第１の実施形態にかかるパイプライン方式の情報処理装置の動作の流れを示す図である。
【図４】第１の実施形態にかかるパイプライン方式の情報処理装置の動作タイミングの一例を示す図である。
【図５】本発明を好適に実施した第２の実施形態にかかるパイプライン方式の情報処理装置の構成を示す図である。
【図６】第２の実施形態にかかるパイプライン方式の情報処理装置の動作タイミングの一例を示す図である。
【図７】従来技術によるパイプライン方式の情報処理装置の構成を示す図である。
【図８】従来技術によるパイプライン方式の情報処理装置の動作タイミングの一例を示す図である。
【図９】ループバック時に実行すべき命令パケットの順序を示す図である。
【符号の説明】
【００５２】
１００    プロセッサ
１０１    命令読み込み部
１０２    デコーダ
１０３    命令実行部
１０４    ループ判断部
１０５    結果書き込み部
１０６    命令キュー
１０７    ループ高速化回路
２００    命令メモリ
１０７１、１０７１1〜１０７１(n-1)    ループ命令キュー
１０７２    ループキュー有効フラグ
１０７３    セレクタ
【図１】
0004610218.tif 000002
【図２】
0004610218.tif 000003
【図３】
0004610218.tif 000004
【図４】
0004610218.tif 000005
【図５】
0004610218.tif 000006
【図６】
0004610218.tif 000007
【図７】
0004610218.tif 000008
【図８】
0004610218.tif 000009
【図９】
0004610218.tif 000010