(57)【特許請求の範囲】
【請求項１】
各ステージにおける演算を行う少なくとも２つのパイプライン演算回路と、
このパイプライン演算回路の演算結果を保持し、次段のパイプライン演算回路に出力する少なくとも１つのフリップフロップと、
を備え、前記フリップフロップに保持された演算結果を用いて次段のパイプライン演算回路がパイプライン処理による演算処理を行う演算回路において、
前記複数のパイプライン演算回路のうち、演算途中に係るパイプライン演算回路からそのパイプライン演算回路の演算結果を入力し、途中演算結果を生成して出力する演算結果生成回路と、
前記演算途中に係るパイプライン演算回路で処理される演算の種類若しくはオペランドデータから前記演算結果生成回路の出力が有効か否かを判定し、判定信号を出力する判定回路と、
を備えることを特徴とする演算回路。
【請求項２】
パイプライン構造を有する演算回路において、
演算を行うデータのビット位置により複数のセクションに分割され、このセクション毎にキャリー入力がある場合及び無い場合の演算結果を生成する加減算回路と、
前記セクションが生成する前記キャリー入力がある場合及び無い場合の演算結果を入力し、前記下位のキャリー信号により演算結果を選択して途中加減算結果として出力するセレクタと、
前記各セクション及び前記セレクタに接続され、データを保持する複数のフリップフロップと、
前記セレクタの出力が有効か否かを判定し、判定信号を出力する判定回路と、
前記フリップフロップに接続され、全体のキャリー伝搬を計算し、有効な演算結果を選択して加減算最終結果を出力する最終加減算結果生成部と、
を有し、
次の処理を行う演算回路は、前記判定信号に基づいて、前記加減算最終結果若しくは前記途中加減算結果のいずれかを使用することを特徴とする演算回路。
【請求項３】
前記判定回路は、
当該セクションへのキャリー入力がある場合のキャリー出力及び前記セクションへのキャリー入力が無い場合のキャリー入力に基づいて、前記演算結果生成回路の出力が有効か否かを判定し、判定信号を出力することを特徴とする請求項２記載の演算回路。
【請求項４】
前記演算結果生成回路は、前記パイプライン演算回路が入力する演算データを直接入力して演算結果を生成することを特徴とする請求項１記載の演算回路。
【請求項５】
パイプライン処理による演算処理を行う演算回路において、
ステージにおける演算を行う少なくとも２つのパイプライン演算回路と、
このパイプライン演算回路の演算結果を保持し、次段のパイプライン演算回路に出力する少なくとも１つのフリップフロップと、
前記演算途中に係るパイプライン演算回路で処理される演算の種類若しくはオペランドデータから前記演算結果生成回路の出力が有効か否かを判定し、判定信号を出力する判定回路と、
を備え、
前記パイプライン演算回路の少なくとも１つは、当該パイプライン演算回路の中間結果をそのまま演算結果として出力することを特徴とする演算回路。
【請求項６】
前記判定回路は、前記パイプライン演算回路が入力する演算データを直接入力し、前記演算途中に係るパイプライン演算回路で処理される演算の種類若しくはオペランドデータから前記演算結果生成回路の出力が有効か否かを判定し、判定信号を出力する判定信号を生成することを特徴とする請求項１記載の演算回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演算回路に関し、特に、マイクロプロセッサ、ＤＳＰといった論理ＬＳＩに含まれる演算回路に関する。
【０００２】
【従来の技術】
マイクロプロセッサや、ＤＳＰといった論理ＬＳＩを高性能化するためには、処理の並列実行を行うという方法の他に、動作サイクルの短縮という方法がある。
【０００３】
論理ＬＳＩの動作サイクルを短縮するためには、その主要構成要素の一つである演算回路の動作サイクルを短縮することが不可欠である。これまで、半導体デバイス技術の進歩およびダイナミック回路等の先端回路技術を駆使することにより、演算回路の動作サイクルの短縮を図ってきた。
【０００４】
しかし、マーケットニーズにこたえるためには、より一層の高速化が必要になっている。そこで、近年では、演算回路のパイプライン化することによる動作サイクルの短縮化を図ることが知られている。
【０００５】
図８は従来から知られているパイプライン化された演算回路を説明するための図である。この演算回路は、各ステージにおける演算処理を行うパイプライン演算回路１００を複数個設け、このパイプライン演算回路１００の間にパイプライン演算回路１００の演算結果を保持し、次段のパイプライン演算回路に出力するフリップフロップ２００を備えるようにしてある。このように構成した演算回路は、ステージレベルの先行制御を行うことができるので命令の実行時間を短縮することができる。このように、従来から、演算回路をパイプライン化することで動作サイクルの短縮化を図ることが行われている。
【０００６】
【発明が解決しようとする課題】
上述の如く、パイプライン化を行った場合、演算動作サイクルの短縮により、演算処理のスループットは上がる。しかし、演算を開始してからその演算結果が使用可能になる時間、いわゆるレーテンシは大きくなってしまう。通常の処理では、演算結果をその直後の演算で使う処理が相当数あるので、演算回路をパイプライン化して動作サイクルを短縮しても、性能という観点から見るとたいして効果をあげないことが指摘されている。
【０００７】
本発明は上記問題点をかんがみてなされたものであり、動作サイクルが短く、演算レーテンシに関しても平均すると小さい演算回路を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するため、本発明に係る演算回路は、各ステージにおける演算を行う少なくとも２つのパイプライン演算回路と、このパイプライン演算回路の演算結果を保持し、次段のパイプライン演算回路に出力する少なくとも１つのフリップフロップと、を備え、前記フリップフロップに保持された演算結果を用いて次段のパイプライン演算回路がパイプライン処理による演算処理を行う演算回路において、前記複数のパイプライン演算回路のうち、演算途中に係るパイプライン演算回路からそのパイプライン演算回路の演算結果を入力し、途中演算結果を生成して出力する演算結果生成回路と、前記演算途中に係るパイプライン演算回路で処理される演算の種類若しくはオペランドデータから前記演算結果生成回路の出力が有効か否かを判定し、判定信号を出力する判定回路と、を備えることを特徴とする。
【０００９】
本発明による演算回路は、基本的にはパイプライン化されているので、その動作サイクルは短縮されている。さらに、あるオペランドデータに対しては、パイプラインの早いステージで途中の演算結果を出力するようにしてある。従って、これらのオペランドデータに対する演算は小さいレーテンシで演算結果を出力することができるのである。
【００１１】
一般に、加減算の動作時間は、オペランドデータに大きく依存する。回路の構成にもよるが、一般的に加減算時のキャリー伝播の長さが長い程、演算時間がかかる。キャリー伝播が短いオペランドデータに対する演算結果の生成は、短い時間でできる。したがって、このようなオペランドデータに対しては、回路全体の動作サイクルに影響を与えることなく、パイプラインの早いステージでの演算結果出力が可能である。実際大半の加減算演算では、演算時のキャリー伝播は短いことが知られている。例えば、３２ビット長の加減算の場合、オペランドデータをランダムに発生させて調べると、９０％以上の演算で、キャリー伝播は、８ビット以下であることがわかる。したがって、本発明に係る演算回路は、動作サイクルが短く、大半の場合小さいレーテンシで演算結果を出力することができるのである。
【００１２】
なお、ある種類のオペランドデータに対して高速に演算可能であるということは、比較演算、シフト演算といった他の演算についても言えることであり、それらの演算に対しても本発明は適用可能である。
【００１３】
【発明の実施の形態】
本発明に係る演算回路について、図面を参照しながら詳細に説明する。
【００１４】
第１の実施の形態
図１は本発明に係る演算回路を示したブロック図である。この演算回路は、各ステージ（１乃至ｎ）における演算処理を行うパイプライン演算回路１００と、このパイプライン演算回路１００の演算を保持し、次段のパイプライン演算回路１００に出力するフリップフロップ２００と、を備え、フリップフロップ２００に保持された演算結果を用いて次段のパイプライン演算回路１００がパイプライン処理による演算処理を行うものであり、複数のパイプライン演算回路１００のうち、演算途中に係るパイプライン演算回路１００からそのパイプライン演算回路の演算結果を入力し、途中演算結果を生成して出力する演算結果生成回路３００と、演算途中に係るパイプライン演算回路１００で処理される演算の種類若しくはオペランドデータから演算結果生成回路３００の出力が有効か否かを判定し、判定信号を出力する判定回路４００とを備えるようにしてある。
【００１５】
図２は、本実施形態の演算回路のブロック図である。説明と理解の容易さを考慮してパイプラインのステージ数を２つとしてある。以下、この回路の動作について説明する。まず、オペランドデータ入力信号１、２は第１ステージのパイプライン演算回路１００に入力され、パイプライン演算回路１００は、第１ステージにおける演算を行う。第１ステージのパイプライン演算部１００の途中演算結果４はフリップフロップ２００に一旦保持され、次のクロックで第２ステージのパイプライン演算回路１００に入力される。この第２ステージのパイプライン演算回路１００は所定の演算を行い、最終的な演算結果８を出力する。
【００１６】
一方、第１ステージのパイプライン演算回路１００の演算結果５は高速演算結果生成回路３００に入力される。この高速演算結果生成回路３００では第１ステージおける演算結果を生成し、その結果を途中演算結果９として出力する。ここで、第１ステージで終了可能であるか否かは、パイプライン演算回路１００の演算途中の演算途中信号３を用いて、判定回路４００で判断し判定信号７を出力する。この演算回路の演算結果を用いて次の処理を行う演算回路等は、上述の判定信号７により最終演算結果８を使用するか、途中演算結果９を使用するかを判断する。
【００１７】
以上のように本実施形態においては、演算を短時間で実行できるある種類のオペランドデータに対しては、パイプラインの第１ステージで演算結果を生成し出力するようにしてある。そのため、動作サイクルの短い演算回路を提供可能であると同時に第１ステージで演算終了可能なオペランドに対しては、第１ステージで演算結果を出力することによりレーテンシを小さくすることができる。
【００１８】
本実施形態の具体例を図３に示す。この演算回路は３２ビットの加減算回路である。この３２ビットの加減算回路におけるパイプラインの第１ステージは８ビット単位で４つのセクションに分かれている。１１０は、８ビットの加減算を実行する回路であり、キャリー入力がある場合の演算結果４４と無い場合の演算結果４３を生成する。また同時に、演算結果４４のキャリー出力４１と演算結果４３のキャリー出力４２も同時に生成する。
【００１９】
演算結果４３と４４は、セレクタ３１０において下位ビットの演算セクションからのキャリー出力信号５１により選択され、途中演算結果９が出力される。キャリー出力信号５１は、そのセクションへのキャリー入力が無い場合の演算結果に伴うキャリー出力である。セレクタ３１０は、信号５１が‘０’の時すなわちキャリーが無い時、演算結果４３を選択する。したがって、キャリー伝播が８ビット以下であるオペランドデータに対しては、この途中演算結果９として有効な演算結果が出力される。
【００２０】
８ビット加減算回路１１０の演算結果は、動作サイクルの終わりに、フリップフロップ２００に取り込まれた後、第２ステージの演算回路１２０に渡される。この回路１２０で、全体のキャリー伝播が計算され、適切な演算結果が選択され、最終演算結果８を出力する。
【００２１】
上記の加減算回路に対する判定回路４００の一例を図４に示す。判定信号７は、‘１’の時、途中演算結果９が無効であることを示す。この回路への入力は８ビット加減算回路２０３のキャリー出力である。Ｃ１ｎ  はそのセクションへのキャリー入力がある場合の演算結果のｎビット目からのキャリー出力である。Ｃ０ｎはそのセクションへのキャリー入力が無い場合の演算結果のｎビット目からのキャリー出力である。Ｃ１ｎ  が‘１’でありかつＣ０ｎ  が‘０’の時、そのセクションはキャリー伝播状態にある。連続する２つのセクションがキャリー伝播状態にある時、途中演算結果９が無効になる。
【００２２】
この加減算器は、パイプライン化されているので短いサイクルタイムで動作する。また、キャリー伝播が８ビット以下の時は、パイプラインの第１ステージで演算結果を出力する。加減算の場合、多くのオペランドに対する演算においてキャリー伝播は８ビット以下である。したがって、この加減算回路は、多くの場合、小さいレーテンシの演算回路として動作する。
【００２３】
第２の実施形態
本発明に係る演算回路の第２の実施形態について図５を用いて説明する。図５の演算回路における高速演算結果生成回路３００は、オペランドデータ１、２を直接入力して演算結果を生成するようにしてある。このように、高速演算結果生成回路３００を独立に構成すると回路規模は増加するが、より高速に演算結果を得ることができるので一層の最適化が可能になる。
【００２４】
第３の実施の形態
本発明に係る演算回路の第３の実施形態について図６を用いて説明する。図６の演算回路においては図２等に示すような高速演算結果生成回路３００を省略したものである。すなわち、第１ステージのパイプライン演算回路１００と共有して構成するようにしてある。演算の種類によってはパイプライン化された演算回路の中間結果をそのまま演算結果として出力することが可能である場合がある。係る場合には上記実施形態の如く構成することでハードウエアの増加を回避しつつ高速に演算結果を得ることができる。
【００２５】
第４の実施の形態
本発明に係る演算回路の第４の実施の形態について図７を用いて説明する。図７の演算回路においては、判定回路４００は、オペランドデータ１、２を直接入力して判定信号を生成するようにしてある。演算の種類によってはオペランドデータから判断ができる場合がある。係る場合には上記実施形態の如く、演算の中間結果を使わずに完全に独立に構成することにより、判定信号を早く生成することができるのである。
【００２６】
以上、本発明の実施形態を説明してきたが、本実施形態においては判定信号の出力タイミングについては言及していない。システム構築上、早く出力することが望ましいが、高速演算結果の出力よりも遅くなったとしても適当なシステム構築は可能である。また、上記実施形態以外にもさまざまなバリエーションが可能であるが、それらについても、本発明に係る演算回路として実施可能である。
【００２７】
【発明の効果】
以上述べてきたように、本発明に係る演算回路は、動作サイクルが短く、演算レーテンシに関しても平均すると小さくすることができる。
【図面の簡単な説明】
【図１】本発明に係る演算回路を示すブロック図である。
【図２】第１の実施形態の演算回路を示すブロック図である。
【図３】第１の実施形態の３２ビット加減算回路を示すブロック図である。
【図４】上記３２ビット加減算回路の４００の具体例を示すブロック図である。
【図５】第２の実施形態の演算回路を示すブロック図である。
【図６】第３の実施形態の演算回路を示すブロック図である。
【図７】第４の実施形態の演算回路を示すブロック図である。
【図８】従来のパイプライン化された演算回路を示すブロック図である。
【符号の説明】
１，２  オペランドデータ入力信号
３  演算途中信号
４，５，６  パイプライン演算回路１００の演算結果
７  判定信号
８  最終演算結果
９  途中演算結果
４１，４２  キャリー出力
４３，４４  ８ビット加減算結果
１００  パイプライン演算回路
１１０  ８ビット加減算器
１２０  最終加減算結果生成部
２００  フリップフロップ
３００  高速演算結果出力回路
３１０  セレクタ
４００  判定回路
４１１  ＮＯＴゲート
４１２，４１３  ＡＮＤゲート
４１４  ＯＲゲート
【図１】
0003573874.tif 000002
【図２】
0003573874.tif 000003
【図３】
0003573874.tif 000004
【図４】
0003573874.tif 000005
【図５】
0003573874.tif 000006
【図６】
0003573874.tif 000007
【図７】
0003573874.tif 000008
【図８】
0003573874.tif 000009