(57)【特許請求の範囲】
【請求項１】
１実行ステージを複数のクロック・サイクルで実行するパイプライン制御部と、命令コード格納用メモリと実行データ格納用メモリのそれぞれに対して備えたメモリアクセス機構と、命令コード格納用メモリへのアクセスに対して複数のクロック・サイクルを割り当てて命令コードのフェッチを行なう命令コードフェッチ部と、インデックスレジスタによる修飾を伴ったアドレス計算をデコードステージの最後のクロック・サイクルで行なうデコード部と、全ての演算を１クロック・サイクルで終了する演算器と、１実行ステージ中で最終クロック・サイクルを除いて複数のレジスタ演算命令を発行する演算器・レジスタ制御部を持つ実行部とを有するパイプラインを備え、メモリアクセスを伴う演算命令とメモリアクセスを伴わないレジスタ演算命令とで構成され、アドレス修飾に使用するインデックスレジスタの変更を上記レジスタ間演算のみに制限した命令セットを用いることにより、メモリバスの競合とアドレス計算時のパイプラインハザードを回避したことを特徴とするパイプライン制御型計算機。
【請求項２】
１実行ステージ内に複数のクロック・サイクルを割り当てるパイプライン制御部と、全ての演算を１クロック・サイクルで終了する演算器と、メモリリードアクセスを伴う命令とメモリアクセスを伴わないレジスタ演算命令が実行される実行ステージにおいて、上記レジスタ演算命令をメモリリード中のクロック・サイクルで実行する演算器・レジスタ制御部を備えることにより、上記レジスタ演算に関してパイプラインハザード回避したことを特徴とする請求項１記載のパイプライン制御型計算機。
【請求項３】
１実行ステージ内に複数のクロック・サイクルを割り当てるパイプライン制御部と、全ての演算を１クロック・サイクルで終了する演算器と、メモリライトアクセスを伴う命令とメモリアクセスを伴わないレジスタ演算命令が実行される実行ステージにおいて、メモリライトデータ生成のための演算をステージ中の先頭のクロック・サイクルで実行した後、以後のクロック・サイクルで上記レジスタ演算命令をステージの最終クロック・サイクル以前に実行する演算器・レジスタ制御部を備え、上記レジスタ演算に関してパイプラインハザードを回避したことを特徴とする請求項１のパイプライン制御型計算機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、高速性と高い応答性とコストパフォーマンスが要求される産業用計算機に適したパイプライン制御型計算機に関するものである。
【０００２】
【従来の技術】
パイプライン処理は複数の命令をオーバーラップさせて同時実行する技術である。現在、この技術はＣＰＵ高速化のための基本技術となっている。パイプラインは工場の組立ラインに似ている。パイプラインの１ステップで命令の１部分を担当し実行する。自動車の組立ライン同様、１個の命令の処理過程を複数の小さな処理単位に分割する。各処理単位の実行時間の和が、命令全体を実行するのに要する時間に等しいが各処理単位の実行時間毎に１つの割合で命令が実行されるので、全体としての命令実行速度は各処理単位の分割数に比例して速くなる。
【０００３】
パイプライン処理では命令実行をオーバラップするので、逐時実行に比べて命令の相対的な実行タイミングが厳しくなる。これが原因で、データ・ハザードおよび制御ハザードが生じる。データ・ハザードは、命令の逐次実行とパイプライン実行とでオペランドへのアクセス順序が異なる場合に生じる。この様な問題は、フォワーディングまたはバイパス、あるいはショート・サーキットと呼ぶ簡単なハードウェア技術で解決できる。すなわち、ＡＬＵ演算結果をＡＬＵ入力ラッチにフィードバックするようにしておく。そして、当該ラッチ・データがこれから行なうＡＬＵ演算のに使用するデータに等しい場合、レジスタから読み出したデータではなく、当該ラッチ・データをそのままＡＬＵ入力として用いるようにする。
【０００４】
パイプラインのスループットは、命令がパイプラインを出ていく速度で決まる。各ステージは互いに連結しているので、全てのステージが同時に処理を完了しなければならない。１ステージの処理に要する時間がマシン・サイクルである。マシン・サイクル時間は、最も遅いステージの処理時間によって決まる。通常、1マシン・サイクルは1クロック・サイクルに等しい。
【０００５】
さらなる高速化の手段として、スーパースカラ・マシン、ＶＬＩＷ（ＶｅｒｙＬｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）マシンのように、１クロック・サイクルあたりに複数の命令を発行する方法がある。こうすることにより、命令実行速度がクロック速度を超えることが可能になる。コンパイラによってコードが適切にスケジューリングされてることを前提として、１クロック・サイクルあたりに複数の独立した命令を発行できるマシンを、スーパースカラ・マシンと呼ぶ。スーパースカラ・マシンのハードウェアは、1クロック・サイクル中に２〜４個の独立した命令を発行できる。ただし、命令流中の命令が互いに使用データやアドレス計算で依存していたり、あるいは、発行条件を満たしていない場合は、命令流の先頭命令のみが発行されることになる。これに対して、ＶＬＩＷでは、同時に発行可能な命令をまとめて、データ・ハザードの回避を保証した１つの超長形式機械命令とするところまでコンパイラが責任をもって行なうので、ハードウェアは命令の同時実行可能性に関して対策の必要性がない。
【０００６】
ただし、ＶＬＩＷは複数の独立した機能ユニットを用いる必要がある。ＶＬＩＷは１つの機能ユニットに対して複数の独立な命令を発行しようと試みるのではなく、複数の演算操作を非常に語長の長い１個の命令に詰め込み、複数の機能ユニットに各タスクを分配するのである。
【０００７】
【発明が解決しようとする課題】
従来のパイプライン制御型計算機は、パイプラインを多くのステージに分割し、命令処理速度を向上させている。この方法では、命令処理速度が最も遅いステージを処理する時間に影響されるという点から、フェッチ部が行なうメモリアクセスの速度が高速化できないため、ステージ数を多くしても速度面での向上は限られている。また、ステージ数を多くするとパイプラインがフラッシュした場合にパイプラインを再充填する時間が長く、応答性が低いという問題があった。また、ステージ数が多くなり、命令セットの多様性が増加すると、データハザードが発生するケースが多くなる。そのため、これらを検出して回避する回路を設ける必要があり、回路規模が増加するという問題があった。
【０００８】
その他の従来の高速化技術は、スーパースカラー、ＶＬＩＷ共に命令を１クロックの間に並列に動作させることで高速化を図っている。この方法では回路資源が多数必要であることが問題であり、またフェッチステージでのメモリアクセスや実行ステージでのメモリアクセスが処理速度を制限するようなパイプラインでは巣折時間の無駄が多いという問題があった。
【０００９】
【課題を解決するための手段】
この発明の第１の構成によるパイプライン制御型計算機は、１実行ステージを複数のクロック・サイクルで実行するパイプライン制御部と、命令コード格納用メモリと実行データ格納用メモリのそれぞれに対して備えたメモリアクセス機構と、命令コード格納用メモリへのアクセスに対して複数のクロック・サイクルを割り当てて命令コードのフェッチを行なう命令コードフェッチ部と、インデックスレジスタによる修飾を伴ったアドレス計算をデコードステージの最後のクロック・サイクルで行なうデコード部と、全ての演算を１クロック・サイクルで終了する演算器と、１実行ステージ中で最終クロック・サイクルを除いて複数のレジスタ演算命令を発行する演算器・レジスタ制御部を持つ実行部とを有するパイプラインを備え、メモリアクセスを伴う演算命令とメモリアクセスを伴わないレジスタ演算命令とで構成され、アドレス修飾に使用するインデックスレジスタの変更を上記レジスタ間演算のみに制限した命令セットを用いることにより、メモリバスの競合とアドレス計算時のパイプラインハザードを回避したものである。
【００１０】
また、この発明の第２の構成によるパイプライン制御型計算機は、この発明のの第１の構成において、１実行ステージ内に複数のクロック・サイクルを割り当てるパイプライン制御部と、全ての演算を１クロック・サイクルで終了する演算器と、メモリリードアクセスを伴う命令とメモリアクセスを伴わないレジスタ演算命令が実行される実行ステージにおいて、上記レジスタ演算命令をメモリリード中のクロック・サイクルで実行する演算器・レジスタ制御部を備えることにより、上記レジスタ演算に関してパイプラインハザード回避したものである。
【００１１】
また、この発明の第３の構成によるパイプライン制御型計算機は、この発明の第１の構成において、１実行ステージ内に複数のクロック・サイクルを割り当てるパイプライン制御部と、全ての演算を１クロック・サイクルで終了する演算器と、メモリライトアクセスを伴う命令とメモリアクセスを伴わないレジスタ演算命令が実行される実行ステージにおいて、メモリライトデータ生成のための演算をステージ中の先頭のクロック・サイクルで実行した後、以後のクロック・サイクルで上記レジスタ演算命令をステージの最終クロック・サイクル以前に実行する演算器・レジスタ制御部を備え、上記レジスタ演算に関してパイプラインハザードを回避したものである。
【００１２】
【発明の実施の形態】
実施の形態１．
本実施の形態では、命令コードフェッチ用と実行用メモリでメモリアクセス機構を分離し、フェッチ部と実行部がメモリアクセスで競合しない構成とし、パイプライン制御は１ステージに複数のクロック・サイクルを割り当て、フェッチステージに含まれるメモリアクセスが複数のクロック・サイクルで実行される様にクロック・サイクルを規定し、上記のパイプラインがフラッシュした際の再起動ロスを小さくするために命令コードフェッチステージ、デコードステージ、実行ステージの３ステージから成るパイプラインを用い、インデックスレジスタを用いたアドレス計算をステージの最終クロック・サイクルで実行するデコードステージを持ち、メモリアクセスを伴った演算ではインデックスレジスタを変更せず、レジスタ間演算でのみインデックスレジスタの変更を許す命令セットを用い、レジスタ演算は実行ステージの最終のクロック・サイクルより前に実行が終了する実行ステージを持つことにより、アドレス計算に関するパイプラインハザードが発生しないパイプライン制御方式を提供するものである。
【００１３】
図１はこの実施の形態１のパイプライン制御型計算機の構成を示す図である。図において、１はパイプラインのフェッチステージを実行する命令コードフェッチ部であり、命令コード保存用メモリ５に接続されている。また、デコード部２とも接続されており、フェッチしたデータをパイプライン制御部４の指示に従ってデコード部２へ渡す。
【００１４】
デコード部２は実行部３に接続されており、デコード結果に応じて実行部３の動作が制御される。デコード結果を受け取った演算器・レジスタ制御部１０が、クロック・サイクル単位で演算器１２とレジスタファイル１１の制御を行なう。
【００１５】
デコード部２は、実行部３の内部のメモリアクセス部１３にも接続されている。上記の演算器・レジスタ制御部１０と同じく、デコード結果に応じてメモリアクセス部１３に対する制御を行なう。
【００１６】
メモリアクセス部１３は実行データ用メモリ６に接続されており、実行用データのリード・ライトを行なう。メモリアクセスを伴った命令の実行手順は、実行データ用メモリ６からリードしたデータがメモリアクセス部１３を経由して演算器１２に渡され、演算された後にレジスタファイル１１へ格納される。ライトされるデータは、レジスタファイル１１のデータを演算器１２で演算した結果が実行データ用メモリ６へ格納される。また、メモリアクセス部１３が実行データ用メモリ６からリードしたデータを演算器１２が演算し、メモリアクセス部１３を経て実行データ用メモリ６の同じアドレスへ書き込むという手順も可能である。
【００１７】
図２に本実施の形態１のタイミングチャートを示す。命令コードのフェッチ２００に３クロック・サイクルを割当てる場合のタイミングチャートである。デコード２１０はステージの最終クロックでのみ動作するが、命令コードフェッチに３クロックサイクルかかるため、最初の２クロックサイクルを無処理２１１とし、ステージの最終クロックでアドレス計算２１２を実行している。メモリアクセスを伴った演算２２０を実行する場合、図２に示すようにメモリリード２２１が先頭の３クロック・サイクルで実行され、最終クロック・サイクルで演算が実行されるが、メモリアクセスを伴う演算命令ではインデックスレジスタを変更せず、レジスタ間演算でのみインデックスレジスタの変更を許す命令セットを用いることにより、このメモリアクセス演算命令２２０とデコード部で実行しているアドレス計算２３０の間のハザードは発生しない。また、レジスタ演算命令２４１，２４２はステージの最終クロック・サイクル以前に実行終了されるので、デコードステージのアドレス計算時２５０には最新の値を使用することが可能である。このためハザードは発生せず、フォクーディング回路等のハザード処理回路を設ける必要はない。上記に示した様に、この実施の形態によれば、単一の機能ユニットを用いた３段のパイプラインを用いて、１ステージ内で複数の演算命令を実行することができ、ハザード処理回路を用いることなくハザードを回避できるので、高速で経済的なパイプライン制御型計算機が構成できる。
【００１８】
実施の形態２．
本実施の形態では、この発明の第１の構成による計算機に高速化技術を取り入れたものである。メモリリードアクセスを伴った演算命令を実行する際には、ステージの最初にメモリリードアクセスを行なう。このアクセスの間、使用されていない演算器を用いて上記のメモリリードアクセスを伴う演算命令よりも前に実行可能なレジスタ演算命令を実行する制御回路を持つことにより、複数の機能ユニットを用いることなく、命令処理速度を向上させることができる。
【００１９】
この発明の実施の形態２によるパイプライン制御型計算機の構成は図１に示した実施の形態１と同様であるため、その説明は省略する。この際のタイミングチャートを図３に示す。実施の形態２はメモリリードアクセスを必要とするメモリアクセス演算命令３４０を実行中に、使用されていない演算器１２を使用して上記の命令よりも事前に実行されなければならない命令や、データ依存性のない命令を図１中の演算器・レジスタ制御部１０がクロック・サイクル単位で実行させる。図３中のメモリアクセス命令３４０中のメモリリードアクセス実行時３４１には、演算器１２は使用されていない。ここで演算器１２を使用してレジスタ演算命令３１０，３２０，３３０を実行する。この実行は最終クロック以前に終了しているので、この結果と上記のメモリアクセス演算命令３４０がハザードを起こすことはない。また、このステージの最終クロック・サイクルはメモリアクセスの結果を用いた演算３４２であるため、この命令と次の命令のアドレス計算との間でハザードが発生することはない。さらに、ここで実行されるレジスタ演算命令３１０，３２０，３３０は、ステージ内の最終クロックでは実行されないため、次の命令のデコードステージで実行されるアドレス計算３５０とハザードを起こすことはない。
【００２０】
上記に示したように、ハザードが発生しないためハザード処理回路を設ける必要がなく、１つの演算器１２により実行ステージ中に複数の命令を実行するため、高速で経済的なパイプライン制御型計算機が構成できる。
【００２１】
実施の形態３．
本実施の形態では、この発明の第１の構成による計算機に高速化技術を取り入れたものである。メモリライトアクセスを伴った演算命令を実行する際には、ステージの最初に演算器を使用してライトデータを作成し、次のクロック・サイクルからメモリライトアクセスを行なう。このメモリライトアクセスの期間中に、使用されていない演算器を用いて上記のメモリライトアクセスを伴う演算命令よりも後に実行可能なレジスタ演算命令を最終クロック以前に実行する制御回路を持つことにより、回路規模を上昇させることなく、命令処理速度を向上させることができる。また、ステージの最終クロック・サイクルではインデックスレジスタの値の変更を行うレジスタ演算は実行しない制御回路により、このレジスタ演算とその次に実行される命令のデコード段におけるアドレス計算とのハザードが避けられる。
【００２２】
この発明の実施の形態３によるパイプライン制御型計算機の構成は図１に示した実施の形態１と同様であるため、その説明は省略する。実施の形態３はメモリライトアクセスを必要とするメモリアクセス演算命令４３０を実行中に、使用されていない演算器１２を使用して上記の命令よりも後で実行される命令や上記の命令とデータ依存性のない命令を図１中の演算器・レジスタ制御部１０がクロック・サイクル単位で実行を行なう。この際のタイミングチャートを図４に示す。図４中のメモリアクセス命令中のメモリライトアクセス４３２の実行時には、演算器１２は使用されていない。ここで演算器１２を使用してレジスタ演算命令４１０，４２０をメモリライトアクセスのライトデータ生成用演算４３１の終了時に実行する。従って、このレジスタ演算４１０，４２０の実行結果と上記のメモリアクセス演算命令４３０はハザードを発生することはない。実行ステージの最終クロックでは次の命令のデコードステージにおいてアドレス計算４４０が行なわれているため、レジスタ演算命令４１０，４２０はこのクロックでは実行しない。そのため、１実行ステージに複数の命令を実行してもハザードを発生することはない。ハザードが発生しないためハザード処理回路を設ける必要がなく、１つの演算器１２により実行ステージ中に複数の命令を実行するため、高速で経済的なパイプライン型計算機が構成できる。
【００２３】
【発明の効果】
この発明の第１の構成であるパイプライン制御型計算機によれば、命令コード格納用メモリと実行データ格納用メモリを分離し、それぞれに対して並列にアクセスを行なえる機構を持つことで、命令コードフェッチ部と実行部がメモリアクセスの競合を起こすことがなく、３つのステージを持つパイプラインを採用し、メモリアクセスを伴う演算命令の実行結果ではインデックスレジスタを変更しないような命令セットを持ち、デコード段の最終クロック・サイクルでアドレス計算を行うデコード部を持ち、レジスタ演算の実行はステージの最終のクロック・サイクルより前に終了するような実行部を持つため、アドレス計算におけるハザードが発生せず、ハザード処理回路が必要なく、処理速度を高める効果がある。
【００２４】
また、この発明の第２の構成であるパイプライン制御型計算機によれば、第１の構成のパイプライン制御型計算機において、メモリリードアクセス演算命令を実行する際、メモリリードアクセス中は使用されていない演算器や内部の制御回路を使用し、複数のレジスタ演算命令をクロック・サイクル毎に連続して実行することにより、回路資源を増加させずに命令処理速度を向上するという効果があり、メモリリードアクセスの結果得られたデータを用いて最終クロック・サイクルで演算を行なうため、次の命令のデコード段で行われているアドレス計算とはハザードが発生せず、ハザード処理部を加える必要がないという効果がある。
【００２５】
また、この発明の第３の構成であるパイプライン制御型計算機によれば、第１の構成のパイプライン制御型計算機において、メモリライトアクセス演算命令を実行する際、メモリアクセス中は使用されていない演算器や内部の制御回路を使用し、複数のレジスタ演算命令を実行することにより、回路資源を増加させずに命令処理速度を向上することが可能であり、ステージの先頭のクロック・サイクルはメモリライトアクセス命令のライトデータ作成用の演算に使用され、ステージの最後のクロック・サイクルは次の命令のデコード段で実行されているアドレス計算とのハザードが発生する可能性があるため無処理とし、それ以外のクロック・サイクルで上記命令よりも後で実行可能な複数のレジスタ演算命令を実行し、命令処理速度を向上するという効果があり、またハザードが発生しないためハザード処理部を加える必要がないという効果がある。
【図面の簡単な説明】
【図１】 この発明の実施の形態１によるパイプライン制御型計算機を示す構成図である。
【図２】 この発明の実施の形態１によるパイプライン制御型計算機の実施時のタイミングチャートを示す図である。
【図３】 この発明の実施の形態２によるパイプライン制御型計算機の実施時のタイミングチャートを示す図である。
【図４】 この発明の実施の形態３によるパイプライン制御型計算機の実施時のタイミングチャートを示す図である。
【符号の説明】
１  命令コードフェッチ部、２  デコード部、３  実行部、４  パイプライン制御部、５  命令コード保存用メモリ、６  実行データ用メモリ、１０  演算器・レジスタ制御部、１１  レジスタファイル、１２  演算器、１３  メモリアクセス部、２００  命令フェッチサイクル、２１０  デコードサイクル、２１１  無処理フェイズ、２１２  命令１のアドレス計算、２２０  メモリアクセス演算命令、２２１  メモリリードアクセス、２２２  演算フェイズ、２３０  命令２のアドレス計算、２４０  命令２のレジスタ演算命令、２４１  命令２のレジスタ演算命令１、２４２  命令２のレジスタ演算命令２、２５０  命令３のデコード、３１０  命令１のレジスタ演算１、３２０  命令１のレジスタ演算２、３３０命令１のレジスタ演算３、３４０  命令１のメモリアクセス演算命令、３４１命令１のメモリアクセス演算命令中のメモリリード、３４２  命令１のメモリアクセス演算命令中の演算、３５０  命令２のデコード、４１０  命令１のレジスタ演算命令１、４２０  命令１のレジスタ演算命令２、４３０  メモリアクセス命令、４３１  ライトデータ生成用演算、４３２  メモリライトアクセス、４４０  命令２のデコード。
【図１】
0003743155.tif 000002
【図２】
0003743155.tif 000003
【図３】
0003743155.tif 000004
【図４】
0003743155.tif 000005