(57)【特許請求の範囲】
【請求項１】
中央演算装置と演算装置とを相互接続して演算処理を行なうパイプライン処理方法において、
前記演算装置が、
前記中央演算装置から供給される演算命令を第１格納手段に格納する段階と、
前記第１格納手段に格納された演算命令に従って第１演算器が演算を行い、演算終了までに複数サイクルの時間を必要とするマルチプル演算命令であるか確認する段階と、
マルチプル演算命令であれば、前記マルチプル演算命令を複数の第２格納手段のうちのいずれかに格納する段階と、
前記マルチプル演算命令を前記複数の第２格納手段のうちのいずれかに格納するときに、前記複数の第２格納手段毎に付随して設けられている識別手段により、前記複数の第２格納手段に既に格納されている前記マルチプル演算命令と新たに格納されるマルチプル演算命令との発行順序を示す段階と、
前記識別手段に従って前記複数の第２格納手段に格納されているマルチプル演算命令のうち最先に発行された前記マルチプル演算命令を選択し、選択された前記マルチプル演算命令に従って複数の第２演算器のいずれかが前記識別手段の示す発行順序で演算終了まで演算を行なう段階と
を実行するパイプライン処理方法。
【請求項２】
中央演算装置と演算装置とを相互接続して演算処理を行なうパイプライン処理装置において、
前記演算装置は、
前記中央演算装置から供給される演算命令を格納する第１格納手段と、
前記第１格納手段に格納された演算命令に従って演算を行なう第１演算器と、
前記演算を行なった演算命令が演算終了までに複数サイクルの時間を必要とするマルチプル演算命令であれば、前記マルチプル演算命令をいずれかが格納する複数の第２格納手段と、
前記マルチプル演算命令を前記複数の第２格納手段のうちのいずれかに格納するときに、前記複数の第２格納手段毎に付随して設けられ、前記複数の第２格納手段に既に格納されている前記マルチプル演算命令と新たに格納されるマルチプル演算命令との発行順序を示す識別手段と、
前記識別手段に従って前記複数の第２格納手段に格納されているマルチプル演算命令のうち最先に発行された前記マルチプル演算命令を選択し、選択された前記マルチプル演算命令に従って前記識別手段の示す発行順序で演算終了までいずれかが演算を行なう複数の第２演算器と
を有するパイプライン処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パイプライン処理方法並びにその方法を利用するパイプライン処理装置に係り、特に、中央演算装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と演算装置とを相互接続して非同期に演算を行なうパイプライン処理方法並びにその方法を利用するパイプライン処理装置に関する。
【０００２】
【従来の技術】
近年、コンピュータ装置は処理速度の更なる高速化が要求されるようになり、中央演算装置（以下、ＣＰＵという。）単体では要求される処理速度を満たさない場合が生じている。そこで、高速演算を実行する為の演算装置を別途設け、ＣＰＵと並列に非同期演算を行なわせることによりＣＰＵを補完する処理方法が用いられるようになってきている。このような演算装置としては、例えば浮動小数点演算を行なうコプロセッサ（Ｃｏ−Ｐｒｏｃｅｓｓｏｒ：以下、ＣＯＰという。）がある。
【０００３】
なお、パイプライン処理方法とは、命令の処理過程を複数の段階に分割し、複数個の命令をパイプライン的に先回り並行処理する制御方法である。パイプライン処理方法は、各段階の時間間隔毎に命令実行が可能であり、単位時間当りの処理能力が向上する。
【０００４】
図１は、パイプライン処理装置の一例のプロック図を示す。パイプライン処理装置は、ＣＰＵ１００とＣＯＰ２００とを含む構成である。ＣＰＵ１００はＣＯＰ２００と相互接続されており、浮動小数点演算等のＣＯＰ２００を使用する演算命令があると、その演算命令の命令コードとレジスタ番号とをＣＯＰ２００に供給する。
【０００５】
ＣＯＰ２００はＣＰＵ１００から供給される命令コード及びレジスタ番号を命令バッファ２３０に格納する。命令バッファ２３０に格納された演算命令は各種パイプラインハザードが解消された段階でパイプラインド演算器２２０で実行される。演算命令は、パイプラインド演算器２２０の演算ステージＳ１，Ｓ２等に対応するように命令キュー２４０，２４１を伝播していく。
【０００６】
最終の演算ステージＳ２では例外チェックが行われ、演算が正常終了しているか判定される。演算が正常終了していれば、演算命令は命令キュー２４１からデキューされる。また、演算結果はパイプラインド演算器２２０からレジスタファイル２１０に格納される。演算が正常終了せず例外が検出された場合、演算命令は命令キュー２４１に残る。そして、例外情報が命令キュー２４１に登録されると共に、ＣＰＵ１００に対して割り込み要求が行われる。このとき、命令キュー２４０にある後続の命令は、未完了の命令として命令キュー２４０に格納される。
【０００７】
但し、マルチサイクルを必要とするマルチプル演算命令の場合、演算レイテンシが長い為にマルチプル演算命令の情報が、ある命令キュー２４０，２４１に複数サイクルの間留まることになる。この間、後続の演算命令は前のステージの命令キュー２４０又は命令バッファ２３０で待ちの状態となる。この待ちの状態を最小限にする為、命令バッファ２３０は待ち命令キュー２３１，待ち命令キュー２３２を設けて複数段の構成とし、ＣＰＵ１００が供給する演算命令を格納する。このように、従来のパイプライン処理装置は演算命令と演算の実行との対応を容易とし、例外検出時の割り込み処理も容易としていた。
【０００８】
【発明が解決しようとする課題】
図２は、パイプライン処理装置の一例のタイムチャートを示す。図２のタイムチャートは、演算命令がマルチプル演算命令ａ，パイプラインド演算命令ｂ，パイプラインド演算命令ｃ，パイプラインド演算命令ｄ，パイプラインド演算命令ｅの順番で実行される場合について示したものである。
【０００９】
まず、時刻ｔにマルチプル演算命令ａがＣＰＵ１００に供給され、命令バッファ２３０を介して命令キュー２４０に格納される。しかし、マルチプル演算命令ａは実行の終了までにマルチサイクルを必要とするので、時刻ｔ＋２から命令キュー２４０に留まり続ける。
【００１０】
続いて時刻ｔ＋１にはパイプラインド演算命令ｂがＣＰＵ１００に供給され、命令バッファ２３０に格納される。時刻ｔ＋３では、命令キュー２４０にマルチプル演算命令ａが格納されているのでパイプラインド演算命令ｂが命令バッファ２３０から待ち命令キュー２３１に供給される。また、時刻ｔ＋４では、パイプラインド演算命令ｂが待ち命令キュー２３１から待ち命令キュー２３２に供給された後、待ち命令キュー２３２に留まり続ける。
【００１１】
時刻ｔ＋２には、パイプラインド演算命令ｃがＣＰＵ１００に供給され、命令バッファ２３０に格納される。時刻ｔ＋４では、命令キュー２４０にマルチプル演算命令ａが格納されているのでパイプラインド演算命令ｃが命令バッファ２３０から待ち命令キュー２３１に供給された後、待ち命令キュー２３１に留まり続ける。
【００１２】
さらに、時刻ｔ＋３にはパイプラインド演算命令ｄがＣＰＵ１００に供給され、命令バッファ２３０に格納される。しかし、待ち命令キュー２３１，２３２にパイプラインド演算命令ｂ，ｃが留まり続けている為、パイプラインド演算命令ｄは命令バッファ２３０に留まり続ける。
【００１３】
従って、時刻ｔ＋４にパイプラインド演算命令ｅがＣＰＵ１００に供給されても命令バッファ２３０に空きが生じない為、パイプラインド演算命令ｅは処理待ち状態、言い換えればＣＰＵストール状態となる。つまり、従来のパイプライン処理装置は、マルチプル演算命令が供給されると後続の命令がマルチプル演算命令の完了待ちを行なう為、全体の命令処理性能が低下するという問題があった。また、実装されている待ち命令キュー２３１，２３２の数を増加すればＣＰＵストール状態を減少させることができるが、消費電力の増加，コストの上昇等の問題があった。
【００１４】
本発明は、上記の点に鑑みなされたもので、命令処理性能の低下を防ぐことができ、消費電力及びコストを削減することが可能なパイプライン処理方法並びにその方法を利用するパイプライン処理装置を提供することを目的とする。
【００１５】
【課題を解決するための手段】
そこで、上記課題を解決するため、中央演算装置と演算装置とを相互接続して演算処理を行なうパイプライン処理方法において、前記演算装置が、前記中央演算装置から供給される演算命令を第１格納手段に格納する段階と、前記第１格納手段に格納された演算命令に従って第１演算器が演算を行い、演算終了までに複数サイクルの時間を必要とするマルチプル演算命令であるか確認する段階と、マルチプル演算命令であれば、前記マルチプル演算命令を複数の第２格納手段のうちのいずれかに格納する段階と、前記マルチプル演算命令を前記複数の第２格納手段のうちのいずれかに格納するときに、前記複数の第２格納手段毎に付随して設けられている識別手段により、前記複数の第２格納手段に既に格納されている前記マルチプル演算命令と新たに格納されるマルチプル演算命令との発行順序を示す段階と、前記識別手段に従って前記複数の第２格納手段に格納されているマルチプル演算命令のうち最先に発行された前記マルチプル演算命令を選択し、選択された前記マルチプル演算命令に従って複数の第２演算器のいずれかが前記識別手段の示す発行順序で演算終了まで演算を行なう段階とを実行することを特徴とする。
【００２２】
また、中央演算装置と演算装置とを相互接続して演算処理を行なうパイプライン処理装置において、前記演算装置は、前記中央演算装置から供給される演算命令を格納する第１格納手段と、前記第１格納手段に格納された演算命令に従って演算を行なう第１演算器と、前記演算を行なった演算命令が演算終了までに複数サイクルの時間を必要とするマルチプル演算命令であれば、前記マルチプル演算命令をいずれかが格納する複数の第２格納手段と、前記マルチプル演算命令を前記複数の第２格納手段のうちのいずれかに格納するときに、前記複数の第２格納手段毎に付随して設けられ、前記複数の第２格納手段に既に格納されている前記マルチプル演算命令と新たに格納されるマルチプル演算命令との発行順序を示す識別手段と、前記識別手段に従って前記複数の第２格納手段に格納されているマルチプル演算命令のうち最先に発行された前記マルチプル演算命令を選択し、選択された前記マルチプル演算命令に従って前記識別手段の示す発行順序で演算終了までいずれかが演算を行なう複数の第２演算器とを有することを特徴とする。
【００２３】
このように、複数の第２格納手段に格納されている演算命令の発行順序を示す識別手段を有することにより、演算命令の命令発行順に演算終了までに時間の掛かる例えばマルチプル演算命令を実行することが可能となる。
【００２８】
なお、上記括弧内の符号は理解を容易とするために附したものであり、一例にすぎない。
【００２９】
【発明の実施の形態】
次に、本発明の実施の形態について図面に基づいて説明する。図３は、本発明のパイプライン処理装置の第１実施例のブロック図を示す。パイプライン処理装置は、相互接続されているＣＰＵ１０とＣＯＰ２０とを含むように構成される。また、ＣＰＵ１０は、データキャッシュ１１，整数演算部＆汎用レジスタファイル１２，命令制御部１３，及び命令キャッシュ１４を含むように構成される。ＣＯＰ２０はレジスタファイル２１、演算器２２、命令バッファ２７、デコーダ２８、命令キュー２９，３０、及びマルチプル演算命令用の命令キュー３１を含むように構成される。
【００３０】
ＣＰＵ１０の命令キャッシュ１４はプログラムが格納されており、演算命令を命令制御部１３に供給する。命令制御部１３は演算命令が供給されると、その演算命令が浮動小数点演算等のＣＯＰ２０を使用する演算命令であるか判断する。ＣＯＰ２０を使用する演算命令であると判断すると、その演算命令の命令コードとレジスタ番号とをＣＯＰ２０の命令バッファ２７に供給する。一方、ＣＯＰ２０を使用しない整数演算等の演算命令であると判断すると、その演算命令の命令コードとレジスタ番号とを整数演算部＆汎用レジスタファイル１２に供給する。
【００３１】
整数演算部＆汎用レジスタファイル１２はレジスタ番号に従ってデータキャッシュ１１からデータを読出し、命令コードに従ってそのデータの演算を行なう。その後、整数演算部＆汎用レジスタファイル１２は演算結果をデータキャッシュ１１に書込む。
【００３２】
命令バッファ２７は命令制御部１３から供給された命令コードとレジスタ番号とを、各種パイプラインハザードが解消された段階でデコーダ２８に供給する。即ち、レジスタ干渉，ハードウェアの資源競合がないことを確認する。デコーダ２８は供給された命令コードをデコードし、命令キュー２９に演算命令を格納すると共に、演算命令及びレジスタ番号を演算器２２の演算ステージ２４に供給する。なお、各種パイプラインハザードが解消されていない場合、命令バッファ２７は命令コード及びレジスタ番号をデコーダ２８に供給せず、次サイクルで再度各種パイプラインハザードが解消されているか確認される。
【００３３】
命令キュー２９は、格納されている演算命令をパイプライン形式で演算キュー３０に供給する。このとき、演算器２２の演算ステージ２４に格納されている演算命令及びレジスタ番号は、演算ステージ２５に供給される。演算ステージ２４から演算命令及びレジスタ番号が供給されると、演算ステージ２５は必要なデータをレジスタファイル２１から読出し、その演算命令に従って演算を行なう。
【００３４】
つまり、演算ステージ２５に演算命令及びレジスタ番号が供給されると、次サイクルで演算結果が求まる。演算結果が求まると演算ステージ２５では演算例外の有無を調べ、演算が正常終了している場合は演算命令がデキューされる。そして、演算器２２からレジスタファイル２１に演算結果を供給する。一方、演算例外が発生している場合、演算ステージ２５及び命令キュー３０に演算命令及び演算例外情報を格納して割り込み動作に入る。
【００３５】
マルチプル演算命令の場合、更に演算が続行するので演算ステージ２５及び命令キュー３０に格納されている演算命令及び演算例外情報がマルチプル演算命令用の演算ステージ２６及び命令キュー３１に遷移される。なお、演算の開始時に分かる演算例外、例えばゼロ除算は他のパイプラインド演算命令と同様に、例外検出を行なうことも可能である。
【００３６】
マルチプル演算命令用の演算ステージ２６及び命令キュー３１に演算終了まで保持される演算命令は、演算終了時に再度演算例外の有無を調べられる。演算例外がなければ、演算ステージ２６及び命令キュー３１から演算命令がデキューされる。一方、演算例外があれば演算ステージ２６及び命令キュー３１に演算命令を残し、割り込み動作に入る。なお、演算結果はレジスタファイル２１に格納される。
【００３７】
図３のパイプライン処理装置の処理について図４を参照しつつ説明する。図４は、パイプライン処理装置の一例のタイムチャートを示す。なお、図４では説明に不要な部分を省略している。図４のタイムチャートは、演算命令がマルチプル演算命令ａ，パイプラインド演算命令ｂ，パイプラインド演算命令ｃ，パイプラインド演算命令ｄ，パイプラインド演算命令ｅの順番で実行される場合について示したものである。
【００３８】
まず、時刻ｔにマルチプル演算命令ａが命令キャッシュ１４から命令制御部１３に供給される。時刻ｔ＋１に命令制御部１３はマルチプル演算命令ａを命令バッファ２７に供給する。また、パイプラインド演算命令ｂが命令キャッシュ１４から命令制御部１３に供給される。
【００３９】
続いて時刻ｔ＋２にマルチプル演算命令ａが命令バッファ２７から命令キュー２９に供給される。命令制御部１３はパイプラインド演算命令ｂを命令バッファ２７に供給する。また、パイプラインド演算命令ｃが命令キャッシュ１４から命令制御部１３に供給される。
【００４０】
時刻ｔ＋３では、マルチプル演算命令ａが命令キュー２９から命令キュー３０に供給される。パイプラインド演算命令ｂが命令バッファ２７から命令キュー２９に供給される。命令制御部１３はパイプラインド演算命令ｃを命令バッファ２７に供給する。また、パイプラインド演算命令ｄが命令キャッシュ１４から命令制御部１３に供給される。
【００４１】
時刻ｔ＋４では、マルチプル演算命令ａが命令キュー３０からマルチプル演算命令用の命令キュー３１に供給される。パイプラインド演算命令ｂが命令キュー２９から命令キュー３０に供給される。パイプラインド演算命令ｃが命令バッファ２７から命令キュー２９に供給される。命令制御部１３はパイプラインド演算命令ｄを命令バッファ２７に供給する。また、パイプラインド演算命令ｅが命令キャッシュ１４から命令制御部１３に供給される。
【００４２】
時刻ｔ＋５では、マルチプル演算命令ａが命令キュー３１に引き続き格納される。そして、パイプラインド演算命令ｂが演算処理を終了し、デキューされる。パイプラインド演算命令ｃが命令キュー２９から命令キュー３０に供給される。パイプラインド演算命令ｄが命令バッファ２７から命令キュー２９に供給される。命令制御部１３はパイプラインド演算命令ｅを命令バッファ２７に供給する。
【００４３】
ここで、図２を参照しつつ説明したタイムチャートと比較すると、図２のタイムチャートでは時刻ｔ＋５でＣＰＵストールが発生しているが、図４のタイムチャートでは時刻ｔ＋５でＣＰＵストールを発生していない。つまり、本発明の第１実施例のパイプライン処理装置では、マルチプル演算命令であっても他のパイプラインド演算命令と同様のタイミングで命令キュー２９，３０を遷移する為、後続のパイプラインド命令をストールさせることなく演算処理が可能である。従って、全体としての演算性能が飛躍的に向上すると共に、ストールを極力回避する為に実装されていた複数段の命令バッファの段数を削減することが可能となる。
【００４４】
なお、後続の演算命令は先行するマルチプル演算命令が実行中であっても演算例外を発生する場合がある。このように後続の演算命令が演算例外を発生した場合、先行する演算命令は実行を完了させるか、マルチプル演算命令の検出時或いは後続の演算命令の演算例外の検出時に、命令キューに演算命令，レジスタ番号，及び演算例外情報等を保持することができる。
【００４５】
図５は、本発明のパイプライン処理装置の第２実施例のブロック図を示す。なお、図５のブロック図はパイプライン演算装置のＣＯＰ２０を記載したものであり、ＣＰＵ１０の記載を省略している。また、図３のパイプライン演算装置と同様な部分については同一符号を付して説明を省略している。
【００４６】
図５のパイプライン演算装置は、マルチプル演算命令用の命令キュー３７，３８及び演算ステージ３５，３６を設けていることを特徴としている。この場合、マルチプル演算命令用の命令キュー３７，３８及び演算ステージ３５，３６に格納されている演算命令の命令発行順序を外部に通知する必要があり、命令キュー３７，３８にアドレス操作ビット３９，４０を設けることにより、命令発行順序を明確にすることが可能となっている。
【００４７】
レイテンシの異なる２つのマルチプル演算命令ａ，ｂを異なるマルチプル演算ステージ３５，３６で実行する場合、この演算ステージ３５，３６に夫々対応するように命令キュー３７，３８及びアドレス操作ビット３９，４０を設ける。アドレス操作ビットとは、命令キューのアドレスを決定する為に使用されるビットである。
【００４８】
例えば、命令キュー３７，３８のアドレスに「０００」，「００１」が割り当てられているものとする。マルチプル演算命令ａが発行され、専用の命令キュー３７に格納される際に、他方の命令キュー３８に付随するアドレス操作ビット４０が「０」であればアドレス操作ビット３９に「１」をセットする。また、他方の命令キュー３８に付随するアドレス操作ビット４０が「１」であればアドレス操作ビット３９に「０」をセットする。
【００４９】
そして、アドレス操作ビットが「１」であるマルチプル演算命令が実行完了した場合は、そのアドレス操作ビットを「１」から「０」に変更すると共に、他方の命令キューに付随するアドレス操作ビットを「０」から「１」に変更する。つまり、２つのマルチプル演算命令ａ，ｂのうち、先に発行されたマルチプル演算命令用の命令キューに付随するアドレス操作ビットは常に「１」となり、先に発行されたマルチプル演算命令を２ビットのレジスタで知ることが可能である。
【００５０】
更に、付随するアドレス操作ビットが「１」であるマルチプル演算命令用の命令キューのアドレスは「０００」であり、付随するアドレス操作ビットが「０」であるマルチプル演算命令用の命令キューのアドレスは「００１」であると決めておくことで、アドレスの昇順に命令キューを読み出せば、常に命令発行順にマルチプル演算命令の情報を命令キューから読み出すことができる。
【００５１】
図６は、本発明のパイプライン処理装置の第３実施例のブロック図を示す。なお、図６のブロック図は複数のＣＯＰを有するパイプライン演算装置を記載したものであり、説明に不要な記載を省略している。また、図３のパイプライン演算装置と同様な部分については同一符号を付して説明を省略している。
【００５２】
図６のパイプライン処理装置は二つのＣＯＰ５０，６０を有し、夫々のＣＯＰ５０，６０にマルチプル演算命令用の命令キュー５４，６４が含まれる。マルチプル演算命令用の命令キュー５４，６４は、図６の第２実施例と同様に、命令キュー５４，６４に付随するようにアドレス操作ビットが設けられている。
【００５３】
このように、パイプライン演算装置に複数のＣＯＰが含まれる場合、異なるＣＯＰに含まれるマルチプル演算命令用の命令キュー５４，６４に同時にマルチプル演算命令が格納されることがある。この場合、マルチプル演算命令が命令キュー５４，６４に同時に発行されたことが保証される限りにおいては、命令キュー５４，６４に付随するアドレス操作ビットに値をセットする優先順位を決めておく必要がある。この優先順位は、ｖａｌｉｄ生成装置５６，６６により決定される。なお、その他のタイミングについては、一つのＣＯＰ内にマルチプル演算命令用の命令キューが実装されている場合と同様であり説明を省略する。
【００５４】
【発明の効果】
上述の如く、本発明によれば、マルチプル演算命令を実行する場合に、後続の演算命令に対する命令処理性能の低下を防ぐことが可能であり、命令バッファの段数を削減することにより消費電力及びコストの削減が可能である。
【図面の簡単な説明】
【図１】パイプライン処理装置の一例のブロック図である。
【図２】パイプライン処理装置の一例のタイムチャートである。
【図３】本発明のパイプライン処理装置の第１実施例のブロック図である。
【図４】パイプライン処理装置の一例のタイムチャートである。
【図５】本発明のパイプライン処理装置の第２実施例のブロック図である。
【図６】本発明のパイプライン処理装置の第３実施例のブロック図である。
【符号の説明】
１０    中央演算装置
１１    データキャッシュ
１２    整数演算部＆汎用レジスタファイル
１３    命令制御部
１４    命令キャッシュ
２０    コプロセッサ
２１    レジスタファイル
２２    演算器
２７，５１，６１    命令バッファ
２８    デコーダ
２４〜２６，３５，３６    演算ステージ
２９〜３１，３７，３８，５２〜５４，６２〜６４    命令キュー
３９，４０，５５，６５    アドレス操作ビット
５６，６６    ｖａｌｉｄ生成装置
【図１】
0005185478.tif 000002
【図２】
0005185478.tif 000003
【図３】
0005185478.tif 000004
【図４】
0005185478.tif 000005
【図５】
0005185478.tif 000006
【図６】
0005185478.tif 000007