(57)【要約】  フロー制御によるパイプライン動作の停止如何に関わらず、クロック周波数を低下させても、処理レイテンシが大幅に増大せず、処理スループットに対する性能要求に応じ、クロック周波数の柔軟な制御が可能なパイプライン回路を提供する。第１から第Ｐまでの順に位相が遅れたＰ本（Ｐは正整数）のクロック例えばクロックＰ０〜Ｐ５の６本のクロックのうち、あらかじめ定めた位相ずつ位相が遅れた連続する２つのクロックを、複数段例えば５段のパイプライン・バッファ３２ａ〜３２ｅの前段から後段の順に割り当て、かつ、隣接の２つのパイプライン・バッファ間で同一位相の１つのクロック信号を共有するように割り当てる。例えば、第１段目のパイプライン・バッファ３２ａはクロックＰ０と次のクロックＰ１の２つで動作し、第２段目のパイプライン・バッファ３２ｂは第１段目と同じクロックＰ１とその次のクロックＰ２の２つで動作する。
2011004532.tif 000002
【特許請求の範囲】
【請求項１】
複数段のパイプライン・バッファを含むパイプライン回路であって、第１のクロック信号から第Ｐのクロック信号のＰ本（Ｐは正整数）のクロック信号のうち、あらかじめ定めた位相ずつ位相が遅れた連続する２つのクロック信号が、前記パイプライン回路の前段に位置するパイプライン・バッファから後段に位置するパイプライン・バッファのそれぞれに対して、順に、割り当てられ、かつ、隣接する２つのパイプライン・バッファ間で、それぞれに割り当てられた前記２つのクロック信号のうち、同一位相の１つのクロック信号を共有するように、割り当てられ、かつ、各前記パイプライン・バッファは、それぞれに割り当てられた前記２つのクロック信号によって動作し、前記Ｐ本のクロック信号は、前記第１のクロック信号から前記第Ｐのクロック信号の順に位相が遅いこと、を特徴とするパイプライン回路。
【請求項２】
前記Ｐ本のクロック信号は、（Ｍ／Ｎ）倍（Ｍは正整数、ＮはＭより大きい正整数）で規定された分周比に基づいて、高速クロック信号の連続するＮ個のクロックパルスのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクすることにより、当該高速クロック信号を（Ｍ／Ｎ）分周して生成したクロック信号であって、前記Ｐ本のクロック信号は、前記第１のクロック信号から第Ｐのクロック信号の順に、前記高速クロック信号のサイクル時間に等しい時間ずつ位相が遅いこと、を特徴とする請求項１に記載のパイプライン回路。
【請求項３】
隣接する２つのパイプライン・バッファのうち、後段のパイプライン・バッファが出力し、前段のパイプライン・バッファが入力する信号について、前記後段のパイプライン・バッファが備える前記信号を出力する回路と、前記前段のパイプライン・バッファが備える前記信号を入力する回路とは、同一のクロック信号で動作すること、を特徴とする請求項１または２に記載のパイプライン回路。
【請求項４】
パイプライン回路を搭載する半導体装置において、当該パイプライン回路として、請求項１ないし３のいずれかに記載のパイプライン回路を搭載することを特徴とする半導体装置。
【請求項５】
当該半導体装置が、多数のイベントをリアルタイムに処理する通信用サーバ装置であることを特徴とする請求項４に記載の半導体装置。
【請求項６】
複数段のパイプライン・バッファを含むパイプライン回路を制御するパイプライン制御方法であって、第１のクロック信号から第Ｐのクロック信号のＰ本（Ｐは正整数）のクロック信号のうち、あらかじめ定めた位相ずつ位相が遅れた連続する２つのクロック信号が、前記パイプライン回路の前段に位置するパイプライン・バッファから後段に位置するパイプライン・バッファのそれぞれに対して、順に、割り当てられ、かつ、隣接する２つのパイプライン・バッファ間で、それぞれに割り当てられた前記２つのクロック信号のうち、同一位相の１つのクロック信号を共有するように、割り当てられ、かつ、各前記パイプライン・バッファは、それぞれに割り当てられた前記２つのクロック信号によって動作し、前記Ｐ本のクロック信号は、前記第１のクロック信号から前記第Ｐのクロック信号の順に位相が遅いこと、を特徴とするパイプライン制御方法。
【請求項７】
前記Ｐ本のクロック信号は、（Ｍ／Ｎ）倍（Ｍは正整数、ＮはＭより大きい正整数）で規定された分周比に基づいて、高速クロック信号の連続するＮ個のクロックパルスのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクすることにより、当該高速クロック信号を（Ｍ／Ｎ）分周して生成したクロック信号であって、前記Ｐ本のクロック信号は、前記第１のクロック信号から第Ｐのクロック信号の順に、前記高速クロック信号のサイクル時間に等しい時間ずつ位相が遅いこと、を特徴とする請求項６に記載のパイプライン制御方法。
【請求項８】
隣接する２つのパイプライン・バッファのうち、後段のパイプライン・バッファが出力し、前段のパイプライン・バッファが入力する信号について、前記後段のパイプライン・バッファが備える前記信号を出力する回路と、前記前段のパイプライン・バッファが備える前記信号を入力する回路とは、同一のクロック信号で動作すること、を特徴とする請求項６または７に記載のパイプライン制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン回路、半導体装置およびパイプライン制御方法に関し、パイプライン回路を搭載した半導体装置の制御回路および制御方法に関する。より詳細には、低電力化のためにクロック信号の周波数を低下させた場合においても、低レイテンシでパイプライン処理が可能なパイプライン回路およびパイプライン制御方法に関する。特に、半導体装置として、多数のイベントをリアルタイムに処理する通信用サーバ装置に好適に適用することができる。
【背景技術】
【０００２】
ディジタル回路の処理性能を表す一般的な指標として、主に、スループットとレイテンシとがある。スループットは、単位時間当たりに処理可能な処理量を示す。一方、レイテンシは、或る処理が完了までの処理時間を示す。従来より、特許文献１の特開昭６３−２０１７２５号公報「信号処理回路」のように、動作周波数が高く、かつ、高い処理スループットを実現することが可能な回路構成として、パイプライン構成の回路が知られている。【０００３】
図１３は、従来技術によるパイプライン回路のブロック構成を示すブロック構成図であり、５段のパイプライン・レジスタ１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅを有している場合のパイプライン回路を示している。図１３において、パイプライン回路１００は、信号１１３に入力したデータを部分回路１１１ａ、１１１ｂ、１１１ｃ、１１１ｄによってパイプライン的に処理したのち信号１１４に出力する回路である。ここで、信号１１３および信号１１４は、複数ビットからなる信号である。【０００４】
より詳細には、パイプライン回路１００は、高い動作周波数と高いスループットを実現するために、４ステージのパイプライン回路で構成されている。すなわち、パイプライン回路１００において、データ処理を行う回路は、５段のパイプライン・レジスタ１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅにより、４つの部分回路１１１ａ、１１１ｂ、１１１ｃ、１１１ｄに分割されている。５段のパイプライン・レジスタ１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅは、すべて、高速なクロック信号であるクロックＦによって動作する。【０００５】
次に、図１４のタイムチャートを参照して、図１３の従来技術によるパイプライン回路１００の動作例について説明する。図１４は、図１３のパイプライン回路１００によるデータ処理のタイミング関係を説明するためのタイムチャートである。【０００６】
図１４のタイムチャートにおいて、パイプライン回路１００は、前段の回路（図示せず）が、タイミングＴ０において、信号１１３に出力したデータＤ０を、タイミングＴ１で入力する。具体的には、タイミングＴ１において、パイプライン・レジスタ１１０ａが該データＤ０をラッチし、部分回路１１１ａに出力する。しかる後、部分回路１１１ａは、該データＤ０の処理を行う。【０００７】
次に、タイミングＴ２において、パイプライン・レジスタ１１０ｂが、部分回路１１１ａによって処理された該データＤ０をラッチし、部分回路１１１ｂに出力する。しかる後、部分回路１１１ｂは、該データＤ０の処理を行う。【０００８】
以降、同様にして、部分回路１１１ｂによって処理された該データＤ０は、タイミングＴ３からＴ４にかけて、パイプライン・レジスタ１１０ｃ、１１０ｄそれぞれを介して、部分回路１１１ｃ、１１１ｄそれぞれによって処理される。【０００９】
最後に、タイミングＴ５において、パイプライン・レジスタ１１０ｅを介して、部分回路１１１ｄによって処理されたデータＤ０が信号１１４に出力される。【００１０】
同様に、パイプライン回路１００は、前段の回路（図示せず）が、タイミングＴ１において、信号１１３に出力したデータＤ１を、タイミングＴ２で入力する。具体的には、タイミングＴ２において、パイプライン・レジスタ１１０ａが該データＤ１をラッチし、部分回路１１１ａに出力する。しかる後、部分回路１１１ａは、該データＤ１の処理を行う。【００１１】
次に、タイミングＴ３において、パイプライン・レジスタ１１０ｂが、部分回路１１１ａによって処理された該データＤ１をラッチし、部分回路１１１ｂに出力する。しかる後、部分回路１１１ｂは、該データＤ１の処理を行う。【００１２】
以降、同様にして、部分回路１１１ｂによって処理された該データＤ１は、タイミングＴ４からＴ５にかけて、パイプライン・レジスタ１１０ｃ、１１０ｄそれぞれを介して、部分回路１１１ｃ、１１１ｄそれぞれによって処理される。【００１３】
最後に、タイミングＴ６において、パイプライン・レジスタ１１０ｅを介して、部分回路１１１ｄによって処理されたデータＤ１が信号１１４に出力される。【００１４】
以降も、同様に、前段の回路（図示せず）が、タイミングＴ２〜Ｔ７それぞれにおいて、信号１１３に出力したデータＤ２〜Ｄ７は、パイプライン回路１００によって処理された後、タイミングＴ７〜Ｔ１２それぞれにおいて、信号１１４に出力される。【００１５】
図１４のタイムチャートの例においては、前段の回路が出力したデータが、パイプライン回路１００によって処理された後、信号１１４に出力されるまでに、クロックＦの５サイクル分の時間がかかる（例えば、データＤ０はタイミングＴ０で信号１１３を介してパイプライン回路１００に入力され、タイミングＴ５でパイプライン回路１００から信号１１４に出力される）。すなわち、パイプライン回路１００のデータ処理のレイテンシは、クロックＦの５サイクルである。【００１６】
一方、パイプライン回路１００は、部分回路１１１ａ、１１１ｂ、１１１ｃ、１１１ｄの４ステージのパイプライン回路によって構成されていて、データ処理がパイプライン動作により実現されている。そのため、レイテンシが５サイクルであるにも関わらず、クロックＦの各サイクルごとにデータ処理を行うことができる。すなわち、パイプライン回路１００のデータ処理のスループットは、１．０データ／サイクル（クロックＦの１サイクル当たり１データを処理することを示す）である。【００１７】
ところで、パイプライン構成の回路においても、低電力化には、必要なスループットに応じて、クロック周波数を必要十分な値に制御する動的周波数制御技術（ＤＦＳ:Dynamic  Frequency Scaling）が有効である。ところが、従来のパイプライン回路では、クロック周波数を低下させると、その分だけスループットが低下するのに加えて、同時に、レイテンシが増大するという問題がある。【００１８】
図１５のタイムチャートを参照して、従来技術によるパイプライン回路の問題を具体的に説明する。図１５は、図１３のパイプライン回路１００について、クロックＦの周波数を（１／４）倍に低下させたクロックで動作させる場合のタイミング関係を説明するためのタイムチャートである。明確化のために、図１５には、該クロックＦの周波数の（１／４）倍の周波数のクロックをクロックＳと表記している。また、比較のためにクロックＳに加えてクロックＦも図示している。【００１９】
クロックＦからクロックＳにクロック周波数を低下させても、パイプライン回路１００の論理的な動作は変わらなく、クロックＦで動作させた場合とは動作のタイミングが異なるのみである。【００２０】
すなわち、図１５において、パイプライン回路１００は、前段の回路（図示せず）が、タイミングＴ０において、信号１１３に出力したデータＤ０を、タイミングＴ４で入力する。具体的には、クロックＳの次の立ち上がりタイミングであるタイミングＴ４において、パイプライン・レジスタ１１０ａが該データＤ０をラッチし、部分回路１１１ａに出力する。しかる後、部分回路１１１ａは、該データＤ０の処理を行う。【００２１】
次に、クロックＳの次の立ち上がりタイミングであるタイミングＴ８において、パイプライン・レジスタ１１０ｂが、部分回路１１１ａによって処理された該データＤ０をラッチし、部分回路１１１ｂに出力する。しかる後、部分回路１１１ｂは、該データＤ０の処理を行う。【００２２】
以降、同様にして、部分回路１１１ｂによって処理された該データＤ０は、タイミングＴ１２からＴ１６にかけて、パイプライン・レジスタ１１０ｃ、１１０ｄそれぞれを介して、部分回路１１１ｃ、１１１ｄそれぞれによって処理される。【００２３】
最後に、タイミングＴ２０において、パイプライン・レジスタ１１０ｅを介して、部分回路１１１ｄによって処理されたデータＤ０が信号１１４に出力される。【００２４】
同様に、パイプライン回路１００は、前段の回路（図示せず）が、タイミングＴ４において、信号１１３に出力したデータＤ１を、タイミングＴ８で入力する。具体的には、クロックＳの次の立ち上がりタイミングであるタイミングＴ８において、パイプライン・レジスタ１１０ａが該データＤ１をラッチし、部分回路１１１ａに出力する。しかる後、部分回路１１１ａは、該データＤ１の処理を行う。【００２５】
次に、タイミングＴ１２において、パイプライン・レジスタ１１０ｂが、部分回路１１１ａによって処理された該データＤ１をラッチし、部分回路１１１ｂに出力する。しかる後、部分回路１１１ｂは、該データＤ１の処理を行う。【００２６】
以降、同様にして、部分回路１１１ｂによって処理された該データＤ１は、タイミングＴ１６からＴ２０にかけて、パイプライン・レジスタ１１０ｃ、１１０ｄそれぞれを介して、部分回路１１１ｃ、１１１ｄそれぞれによって処理される。【００２７】
最後に、タイミングＴ２４において、パイプライン・レジスタ１１０ｅを介して、部分回路１１１ｄによって処理されたデータＤ１が信号１１４に出力される。【００２８】
以降も、同様に、前段の回路（図示せず）が、タイミングＴ８、Ｔ１２、Ｔ１６、Ｔ２０、Ｔ２４、Ｔ２８それぞれにおいて、信号１１３に出力したデータＤ２〜Ｄ７は、パイプライン回路１００によって処理された後、タイミングＴ２８、Ｔ３２、Ｔ３６、Ｔ４０、Ｔ４４、Ｔ４８それぞれにおいて、信号１１４に出力される（すべては図示していない）。【００２９】
図１５の例では、前段の回路が出力したデータが、パイプライン回路１００によって処理された後、信号１１４に出力されるまでに、クロックＦの２０サイクル分の時間がかかる（例えば、データＤ０はタイミングＴ０で信号１１３を介してパイプライン回路１００に入力され、タイミングＴ２０でパイプライン回路１００から信号１１４に出力される）。すなわち、パイプライン回路１００のデータ処理のレイテンシは、クロックＦの２０サイクルである。【００３０】
一方、パイプライン回路１００は、部分回路１１１ａ、１１１ｂ、１１１ｃ、１１１ｄの４ステージのパイプライン回路によって構成されていて、データ処理がパイプライン動作により実現されている。そのため、レイテンシがクロックＳの５サイクル（クロックＦの２０サイクル）であるにも関わらず、クロックＳの各サイクルごとにデータ処理を行うことができる。すなわち、クロックＦの４サイクルごとにデータ処理を行うことができるので、パイプライン回路１００のデータ処理のスループットは、０．２５データ／サイクル（クロックＦの１サイクル当たり０．２５データを処理することを示す）である。【００３１】
これは、クロックＳの周波数が、クロックＦの（１／４）倍であり、よって、クロックＳの周期時間がクロックＦの４倍であるためである。すわなち、クロックＦで動作させたパイプライン回路１００に対して、クロックＳで動作させたパイプライン回路１００のスループットは（１／４）倍、レイテンシは４倍になる。
【先行技術文献】
【特許文献】
【００３２】
【特許文献１】特開昭６３−２０１７２５号公報（第３−４頁）
【発明の概要】
【発明が解決しようとする課題】
【００３３】
前述したように、従来技術のパイプライン回路においては、より一般的に、Ｎを正整数としたとき、クロック周波数を（１／Ｎ）倍にすると、スループットが（１／Ｎ）倍になることに加えて、レイテンシもＮ倍になってしまう。そのため、スループットは、必要性能に十分足りていたとしても、レイテンシが必要性能に足りない場合は、クロック周波数を低下させることができず、低電力化の機会が減少してしまうという問題がある。【００３４】
また、パイプライン回路の処理結果を後続の回路で使用する場合、レイテンシが増大すると、後続の回路でデータが到着するまでの待ち時間が発生するので、処理全体のスループットが低下してしまう場合があるという問題がある。【００３５】
本発明は、このような課題を解決するためになされたものであり、フロー制御によるパイプライン動作の停止如何に関わらず、クロック周波数を低下させても、処理レイテンシが大幅には増大することなく、処理スループットに対する性能要求に応じて、柔軟に、クロック周波数を制御することが可能なパイプライン回路、半導体装置およびパイプライン制御方法を提供することを目的としている。
【課題を解決するための手段】
【００３６】
前述の課題を解決するため、本発明によるパイプライン回路、半導体装置およびパイプライン制御方法は、次のような特徴的な構成を採用している。下記（１）及び（６）なる番号は請求項の項番号にそれぞれ対応している。【００３７】
（１）複数段のパイプライン・バッファを含むパイプライン回路であって、第１のクロック信号から第Ｐのクロック信号のＰ本（Ｐは正整数）のクロック信号のうち、あらかじめ定めた位相ずつ位相が遅れた連続する２つのクロック信号が、前記パイプライン回路の前段に位置するパイプライン・バッファから後段に位置するパイプライン・バッファのそれぞれに対して、順に、割り当てられ、かつ、隣接する２つのパイプライン・バッファ間で、それぞれに割り当てられた前記２つのクロック信号のうち、同一位相の１つのクロック信号を共有するように、割り当てられ、かつ、各前記パイプライン・バッファは、それぞれに割り当てられた前記２つのクロック信号によって動作し、前記Ｐ本のクロック信号は、前記第１のクロック信号から前記第Ｐのクロック信号の順に位相が遅いパイプライン回路。
（６）複数段のパイプライン・バッファを含むパイプライン回路を制御するパイプライン制御方法であって、第１のクロック信号から第Ｐのクロック信号のＰ本（Ｐは正整数）のクロック信号のうち、あらかじめ定めた位相ずつ位相が遅れた連続する２つのクロック信号が、前記パイプライン回路の前段に位置するパイプライン・バッファから後段に位置するパイプライン・バッファのそれぞれに対して、順に、割り当てられ、かつ、隣接する２つのパイプライン・バッファ間で、それぞれに割り当てられた前記２つのクロック信号のうち、同一位相の１つのクロック信号を共有するように、割り当てられ、かつ、各前記パイプライン・バッファは、それぞれに割り当てられた前記２つのクロック信号によって動作し、前記Ｐ本のクロック信号は、前記第１のクロック信号から前記第Ｐのクロック信号の順に位相が遅いパイプライン制御方法。
【発明の効果】
【００３８】
本発明のパイプライン回路、半導体装置およびパイプライン制御方法によれば、以下のような効果を奏することができる。【００３９】
第１に、パイプライン回路を駆動するクロック信号の周波数を低下させても、フロー制御によるパイプライン動作の停止が発生しない限り、処理レイテンシが増大しないという効果が得られる。また、フロー制御によるパイプライン動作の停止が発生しても、停止した分だけしか処理レイテンシが増大しないという効果が得られる。そのため、スループットが必要性能に十分足りている場合には、クロック周波数を柔軟に低下させることができるので、パイプライン回路の消費電力を低減することができる。【００４０】
第２に、クロック周波数を低下させても、レイテンシが増大しない、または、パイプライン動作が停止した分だけしか増大しないので、パイプライン回路の処理結果を後続の回路で使用する場合でも、処理全体のスループットが低下しないという効果が得られる。
【図面の簡単な説明】
【００４１】
【図１】本発明の第１の実施形態に係るパイプライン回路のブロック構成を示すブロック構成図である。
【図２】図１のパイプライン回路によるデータ処理のタイミング関係の一例を説明するためのタイムチャートである。
【図３】図１のパイプライン回路によるデータ処理のタイミング関係の他の例を説明するためのタイムチャートである。
【図４】図１のパイプライン回路によるデータ処理のタイミング関係のさらに異なる例を説明するためのタイムチャートである。
【図５】本発明の第２の実施形態に係るパイプライン回路のブロック構成を示すブロック構成図である。
【図６】高速なクロック信号Ｆを（Ｍ／Ｎ）で規定される分周比で有理数分周して生成したクロックの一例を示すタイムチャートである。
【図７】図５のパイプライン回路を構成するクロック信号分周回路のブロック構成の一例を示すブロック構成図である。
【図８】図７のクロック信号分周回路を構成するマスク制御回路のブロック構成の一例を示すブロック構成図である。
【図９】本発明の第３の実施形態に係るパイプライン回路のブロック構成を示すブロック構成図である。
【図１０】図９のパイプライン回路を構成するパイプライン・バッファのブロック構成例を示すブロック構成図である。
【図１１】図９のパイプライン回路によるデータ処理のタイミング関係の一例を説明するためのタイムチャートである。
【図１２】図９のパイプライン回路によるデータ処理のタイミング関係の他の例を説明するためのタイムチャートである。
【図１３】従来技術によるパイプライン回路のブロック構成を示すブロック構成図である。
【図１４】図１３のパイプライン回路によるデータ処理のタイミング関係を説明するためのタイムチャートである。
【図１５】図１３のパイプライン回路のクロックの周波数を（１／４）倍に低下させたクロックで動作させる場合のタイミング関係を説明するためのタイムチャートである。
【発明を実施するための形態】
【００４２】
以下、本発明によるパイプライン回路、半導体装置およびパイプライン制御方法の好適な実施例について添付図を参照して説明する。なお、以下の説明においては、本発明によるパイプライン回路、パイプライン制御方法について説明するが、パイプライン動作を行う半導体装置に、かかるパイプライン回路を搭載して構成しても良く、特に、本発明によるパイプライン回路を搭載する半導体装置としては、多数のイベントをリアルタイムに同時処理する通信用サーバ装置に好適に適用することができる。
【００４３】
（本発明の特徴）
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明に係るパイプライン回路は、複数段のパイプライン・バッファを含むパイプライン回路であって、第１のクロック信号から第Ｐのクロック信号のＰ本（Ｐは正整数）のクロック信号のうち、あらかじめ定めた位相ずつ位相が遅れた連続する２つのクロック信号が、パイプライン回路の前段に位置するパイプライン・バッファから後段に位置するパイプライン・バッファのそれぞれに対して、順に割り当てられ、かつ、隣接する２つのパイプライン・バッファ間で、それぞれに割り当てられた２つのクロック信号のうち、同一位相の１つのクロック信号を共有するように割り当てられ、かつ、各前記パイプライン・バッファは、割り当てられた前記２つのクロック信号によって動作し、前記Ｐ本のクロック信号は、前記第１のクロック信号から第Ｐのクロック信号の順に位相が遅いこと、を主要な特徴としている。つまり、あらかじめ定めた位相ずつ位相が遅れた連続する２つのクロック信号を順次割り当てた各パイプライン・バッファのうち、隣接する２つのパイプライン・バッファ間においては、前段のパイプライン・バッファの後ろ側のクロック信号と後段のパイプライン・バッファの前側のクロック信号とは、同一位相のクロック信号となるように割り当てされる。
【００４４】
（第１の実施形態）
次に、図１を参照しながら、本発明の第１の実施形態に係るパイプライン回路について説明する。図１は、本発明の第１の実施形態に係るパイプライン回路のブロック構成を示すブロック構成図である。図１において、パイプライン回路１０は、信号１３に入力したデータを部分回路１１ａ、１１ｂ、１１ｃ、１１ｄによってパイプライン的に処理した後、信号１４に出力する回路である。ここで、信号１３および信号１４は、複数ビットからなる信号である。
【００４５】
より詳細には、パイプライン回路１０は、高い動作周波数と高いスループットを実現するために、４ステージのパイプライン回路で構成されている。すなわち、パイプライン回路１０において、データ処理を行う回路は、５段のパイプライン・レジスタ１２ａ、１２ｂ、１２ｃ、１２ｄ、１２ｅにより、４つの部分回路１１ａ、１１ｂ、１１ｃ、１１ｄに分割されている。
【００４６】
５段のパイプライン・レジスタ１２ａ、１２ｂ、１２ｃ、１２ｄ、１２ｅは、それぞれ、４本の独立したクロック信号であるクロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３のいずれかによって動作する。図１に示す例では、パイプライン・レジスタ１２ａ、１２ｅは、クロックＳ０によって動作し、パイプライン・レジスタ１２ｂは、クロックＳ１によって動作し、パイプライン・レジスタ１２ｃは、クロックＳ２によって動作し、パイプライン・レジスタ１２ｄは、クロックＳ３によって動作する。
【００４７】
ここで、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数が、それぞれ、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数の最大値に対して（１／Ｎ）倍（Ｎは正整数）であるものと仮定する。このとき、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の位相関係は、（１）クロックＳ０に対してクロックＳ１の位相が（３６０／Ｎ）°だけ遅く、（２）クロックＳ１に対してクロックＳ２の位相が（３６０／Ｎ）°だけ遅く、（３）クロックＳ２に対してクロックＳ３の位相が（３６０／Ｎ）°だけ遅いものとする。
【００４８】
（３６０／Ｎ）°の位相差は、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数が最大値の時のサイクル時間に等しい位相差である。このとき、パイプライン回路１０の前段のパイプライン・レジスタから後段のパイプライン・レジスタに対して、クロックＳ０〜Ｓ３のうち、（３６０／Ｎ）°ずつ位相が遅れたクロック信号をそれぞれ順に割り当てる。具体的には、（ａ）パイプライン・レジスタ１２ａにはクロックＳ０を割り当てる。（ｂ）パイプライン・レジスタ１２ｂにはクロックＳ１を割り当てる。（ｃ）パイプライン・レジスタ１２ｃにはクロックＳ２を割り当てる。（ｄ）パイプライン・レジスタ１２ｄにはクロックＳ３を割り当てる。（ｅ）パイプライン・レジスタ１２ｅにはクロックＳ０を割り当てる。
【００４９】
したがって、前述のように、（ａ）パイプライン・レジスタ１２ａはクロックＳ０で動作する。（ｂ）パイプライン・レジスタ１２ｂはクロックＳ１で動作する。（ｃ）パイプライン・レジスタ１２ｃはクロックＳ２で動作する。（ｄ）パイプライン・レジスタ１２ｄはクロックＳ３で動作する。（ｅ）パイプライン・レジスタ１２ｅはクロックＳ０で動作する。
【００５０】
なお、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３などのクロック信号は、従来のクロック生成回路で容易に生成することができる。例えば、ＰＬＬ（Ｐｈａｓｅｄ  Ｌｏｃｋ  Ｌｏｏｐ）回路などの発振回路によって直接生成しても良いし、高速なクロック信号を分周回路によって分周して生成しても良い。
【００５１】
（第１の実施形態の動作）
次に、図２を参照して、図１の第１の実施形態によるパイプライン回路１０の動作例について説明する。図２は、図１のパイプライン回路１０によるデータ処理のタイミング関係の一例を説明するためのタイムチャートであり、Ｎ＝４の場合を示している。また、図２には、明確化のために、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数が最大値のときのクロック信号をクロックＦとして表記している。
【００５２】
図２のタイムチャートにおいて、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数は、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数の最大値つまりクロックＦの（１／４）倍である。また、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の位相は、それぞれ、互いに（３６０／４）°ずつ異なっており、（１）クロックＳ０に対してクロックＳ１の位相が（３６０／４）°だけ遅く、（２）クロックＳ１に対してクロックＳ２の位相が（３６０／４）°だけ遅く、（３）クロックＳ２に対してクロックＳ３の位相が（３６０／４）°だけ遅くなっている。
【００５３】
図２のタイムチャートにおいて、パイプライン回路１０は、前段の回路（図示せず）が、タイミングＴ０において、信号１３に出力したデータＤ０を、タイミングＴ１で入力する。具体的には、クロックＳ０の立ち上がりタイミングであるタイミングＴ１において、クロックＳ０で動作するパイプライン・レジスタ１２ａが該データＤ０をラッチし、部分回路１１ａに出力する。しかる後、部分回路１１ａは、該データＤ０の処理を行う。
【００５４】
次に、クロックＳ１の立ち上がりタイミングであるタイミングＴ２において、クロックＳ１で動作するパイプライン・レジスタ１２ｂが、部分回路１１ａによって処理された該データＤ０をラッチし、部分回路１１ｂに出力する。しかる後、部分回路１１ｂは、該データＤ０の処理を行う。
【００５５】
次に、クロックＳ２の立ち上がりタイミングであるタイミングＴ３において、クロックＳ２で動作するパイプライン・レジスタ１２ｃが、部分回路１１ｂによって処理された該データＤ０をラッチし、部分回路１１ｃに出力する。しかる後、部分回路１１ｃは、該データＤ０の処理を行う。
【００５６】
次に、クロックＳ３の立ち上がりタイミングであるタイミングＴ４において、クロックＳ３で動作するパイプライン・レジスタ１２ｄが、部分回路１１ｃによって処理された該データＤ０をラッチし、部分回路１１ｄに出力する。しかる後、部分回路１１ｄは、該データＤ０の処理を行う。
【００５７】
最後に、クロックＳ０の立ち上がりタイミングであるタイミングＴ５において、クロックＳ０で動作するパイプライン・レジスタ１２ｅを介して、部分回路１１ｄによって処理されたデータＤ０が信号１４に出力される。
【００５８】
同様に、パイプライン回路１０は、前段の回路（図示せず）が、タイミングＴ４において、信号１３に出力したデータＤ１を、タイミングＴ５で入力する。具体的には、クロックＳ０の立ち上がりタイミングであるタイミングＴ５において、クロックＳ０で動作するパイプライン・レジスタ１２ａが該データＤ１をラッチし、部分回路１１ａに出力する。しかる後、部分回路１１ａは、該データＤ１の処理を行う。
【００５９】
次に、クロックＳ１の立ち上がりタイミングであるタイミングＴ６において、パイプライン・レジスタ１２ｂが、クロックＳ１で動作する部分回路１１ａによって処理された該データＤ１をラッチし、部分回路１１ｂに出力する。しかる後、部分回路１１ｂは、該データＤ１の処理を行う。
【００６０】
以降、同様にして、部分回路１１ｂによって処理された該データＤ１は、タイミングＴ７からＴ８にかけて、クロックＳ２、Ｓ３それぞれで動作するパイプライン・レジスタ１２ｃ、１２ｄそれぞれを介して、部分回路１１ｃ、１１ｄそれぞれによって処理される。
【００６１】
最後に、タイミングＴ９において、パイプライン・レジスタ１２ｅを介して、部分回路１１ｄによって処理されたデータＤ１が信号１４に出力される。
【００６２】
以降も、同様に、前段の回路（図示せず）が、タイミングＴ８、Ｔ１２、Ｔ１６、Ｔ２０、Ｔ２４それぞれにおいて、信号１３に出力したデータＤ２〜Ｄ６は、パイプライン回路１０によって処理された後、タイミングＴ１３、Ｔ１７、Ｔ２１、Ｔ２５、Ｔ２９それぞれにおいて、信号１４に出力される。
【００６３】
以上、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の順に位相が(３６０／４)°ずつ遅れた４本のクロック信号を使用する場合について説明した。本実施形態は、かかる場合に限らず、任意の本数のクロック信号を用いる場合であっても、同様に適用することができる。具体的には、パイプライン回路１０の前段のパイプライン・レジスタから後段のパイプライン・レジスタに対して、順に、あらかじめ定めた位相ずつ位相が遅れたクロック信号をそれぞれ順に割り当てれば良い。
【００６４】
（第１の実施形態の効果）
図２のタイムチャートの例においては、前段の回路が出力したデータが、パイプライン１０において処理された後、信号１４に出力されるまでに、クロックＦの５サイクル分の時間がかかる（例えば、データＤ０はタイミングＴ０で信号１３を介してパイプライン回路１０に入力され、タイミングＴ５でパイプライン回路１０から信号１４に出力される）。すなわち、パイプライン回路１０のデータ処理のレイテンシは、クロックＦの５サイクルである。
【００６５】
一方、パイプライン回路１０は、部分回路１１ａ、１１ｂ、１１ｃ、１１ｄの４ステージのパイプライン回路によって構成されていて、データ処理がパイプライン動作により実現されている。そのため、レイテンシが５サイクルであるにも関わらず、クロックＳ０〜Ｓ３の各サイクルごとにデータ処理を行うことができる。すなわち、クロックＦの４サイクルごとにデータ処理を行うことができるので、パイプライン回路１０のデータ処理のスループットは、（１／４）データ／サイクル（クロックＦの１サイクル当たり（１／４）のデータを処理することを示す）である。
【００６６】
これは、クロックＳ０〜Ｓ３の周波数はクロックＦの（１／４）倍であり、よって、クロックＳ０〜Ｓ３のサイクル時間はクロックＦの４倍であるためである。すなわち、本第１の実施形態では、クロック周波数を（１／４）倍にした場合、スループットは（１／４）倍になる一方、レイテンシは１倍のままであり、従来技術のように増大することはない。より一般的には、Ｎを正整数としたとき、周波数を（１／Ｎ）倍にすると、スループットは（１／Ｎ）倍になる。一方、レイテンシは１倍すなわち増大することはない。
【００６７】
例えば、図３は、図１のパイプライン回路１０によるデータ処理のタイミング関係の他の例を説明するためのタイムチャートであり、Ｎ＝１の場合を示している。このとき、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数は、クロックＦの周波数の（１／１）倍、すなわち、クロックＦと同じ周波数である。
【００６８】
かかる場合、図３から明らかなように、スループットは（１／１）倍になるが、一方、レイテンシについては１倍であり、図２の場合と同様である。
【００６９】
また、図４は、図１のパイプライン回路１０によるデータ処理のタイミング関係のさらに異なる例を説明するためのタイムチャートであり、Ｎ＝２の場合を示している。このとき、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数は、クロックＦの周波数の（１／２）倍である。
【００７０】
かかる場合、図４から明らかなように、スループットは（１／２）倍になるが、レイテンシについては１倍であり、図２の場合と同様である。
【００７１】
このため、スループットが必要性能に十分足りている場合、処理レイテンシを増大させることなく、クロック周波数を柔軟に低下させることができるので、パイプライン回路１０の消費電力を低減することができるという効果が得られる。また、クロック周波数を低下させても、処理レイテンシが増大しないので、パイプライン回路１０の処理結果を後続の処理で使用する場合でも、処理全体のスループットが低下しないという効果が得られる。
【００７２】
（第２の実施形態）
次に、本発明の第２の実施形態に係るパイプライン回路について説明する。前述の第１の実施形態では、パイプライン回路を駆動するクロック信号の周波数を、周波数の最大値に対して（１／Ｎ）倍（Ｎは正整数）にする場合について説明した。本第２の実施形態では、パイプライン回路を駆動するクロック信号の周波数を、周波数の最大値に対して（Ｍ／Ｎ）倍（Ｍは正の整数、ＮはＭより大きい正の整数）で規定される有理数倍にする場合について、図５を参照しながら説明する。
【００７３】
図５は、本発明の第２の実施形態に係るパイプライン回路のブロック構成を示すブロック構成図である。図５において、パイプライン回路２０は、信号２３から入力したデータを部分回路２１ａ、２１ｂ、２１ｃ、２１ｄによってパイプライン的に処理した後、信号２４に出力する回路である。ここで、信号２３および信号２４は、複数ビットからなる信号である。
【００７４】
より詳細には、パイプライン回路２０は、高い動作周波数と高いスループットを実現するために、４ステージのパイプライン回路で構成されている。すなわち、パイプライン回路２０において、データ処理を行う回路は、５段のパイプライン・レジスタ２２ａ、２２ｂ、２２ｃ、２２ｄ、２２ｅにより、４つの部分回路２１ａ、２１ｂ、２１ｃ、２１ｄに分割されている。
【００７５】
５段のパイプライン・レジスタ２２ａ、２２ｂ、２２ｃ、２２ｄ、２２ｅは、それぞれ、５本の独立したクロック信号であるクロックＰ０、クロックＰ１、クロックＰ２、クロックＰ３、クロックＰ４のいずれかによって動作する。図５に示す例では、パイプライン・レジスタ２２ａは、クロックＰ０によって動作し、パイプライン・レジスタ２２ｂは、クロックＰ１によって動作し、パイプライン・レジスタ２２ｃは、クロックＰ２によって動作し、パイプライン・レジスタ２２ｄは、クロックＰ３によって動作し、パイプライン・レジスタ２２ｅは、クロックＰ４によって動作する。
【００７６】
ここで、クロックＰ０〜Ｐ４の周波数が、それぞれ、クロックＰ０〜Ｐ４の周波数の最大値に対して（Ｍ／Ｎ）倍（Ｍは正の整数、ＮはＭより大きい正の整数）であるものと仮定する。また、クロックＰ０〜Ｐ４の周波数が最大値の場合のサイクル時間をＴｃｙｃとしたとき、クロックＰ０〜Ｐ４の位相関係は、（１）クロックＰ０に対してクロックＰ１の位相がＴｃｙｃだけ遅く、（２）クロックＰ１に対してクロックＰ２の位相がＴｃｙｃだけ遅く、（３）クロックＰ２に対してクロックＰ３の位相がＴｃｙｃだけ遅く、（４）クロックＰ３に対してクロックＰ４の位相がＴｃｙｃだけ遅いものとする。
【００７７】
このとき、パイプライン回路２０の前段のパイプライン・レジスタから後段のパイプライン・レジスタに対して、クロックＰ０〜Ｐ４のうち、Ｔｃｙｃずつ位相が遅れたクロック信号をそれぞれ順に割り当てる。具体的には、（ａ）パイプライン・レジスタ２２ａにはクロックＰ０を割り当てる。（ｂ）パイプライン・レジスタ２２ｂにはクロックＰ１を割り当てる。（ｃ）パイプライン・レジスタ２２ｃにはクロックＰ２を割り当てる。（ｄ）パイプライン・レジスタ２２ｄにはクロックＰ３を割り当てる。（ｅ）パイプライン・レジスタ２２ｅにはクロックＰ４を割り当てる。
【００７８】
したがって、前述のように、（ａ）パイプライン・レジスタ２２ａはクロックＰ０で動作する。（ｂ）パイプライン・レジスタ２２ｂはクロックＰ１で動作する。（ｃ）パイプライン・レジスタ２２ｃはクロックＰ２で動作する。（ｄ）パイプライン・レジスタ２２ｄはクロックＰ３で動作する。（ｅ）パイプライン・レジスタ２２ｅはクロックＰ４で動作する。
【００７９】
なお、クロックＰ０〜Ｐ４を生成する方法としては、例えば、高速なクロック信号を（Ｍ／Ｎ）で規定される分周比で有理数分周することによって生成しても良い。本実施形態においては、高速なクロック信号のクロックパルスを適切にマスクする（間引く）ことにより、有理数分周を実現して、クロックＰ０〜Ｐ４を生成する。図６から図８を参照して、クロックＰ０〜Ｐ４の生成方法について詳細に説明する。
【００８０】
図６は、高速なクロック信号Ｆを（Ｍ／Ｎ）で規定される分周比で有理数分周して生成したクロックＰ０〜Ｐ４の一例を示すタイムチャートであり、分周比（Ｍ／Ｎ）＝（３／５）の例を示している。なお、図６には、図５のパイプライン回路２０によるデータ処理のタイミング関係の一例を説明するためのタイムチャートも合わせて示している。
【００８１】
図６に図示する例においては、高速なクロック信号であるクロックＦを分周比（３／５）で分周して生成したクロックＰ０〜Ｐ４の例を示している。つまり、分周比（Ｍ／Ｎ）のクロックＰ０〜Ｐ４は、クロックＦのＮ個のクロックパルスのうち、いずれか（Ｎ−Ｍ）個のクロックパルスを適切にマスクすることにより生成することができる。より詳細には、分周比が（３／５）のクロックＰ０〜Ｐ４は、クロックＦの連続する５個のクロックパルスのうち、いずれか２個のクロックパルスをマスクすることによって生成している。
【００８２】
例えば、図６の例では、分周比が（３／５）のクロックＰ０は、クロックＦのタイミングＴ１〜Ｔ５に位置する５個の連続するクロックパルスのうち、タイミングＴ３、Ｔ５に位置する２個のクロックパルスをマスクすることによって生成している。同様に、クロックＰ０は、クロックＦのタイミングＴ６〜Ｔ１０に位置する５個の連続するクロックパルスのうち、タイミングＴ８、Ｔ１０に位置する２個のクロックパルスをマスクすることによって生成している。タイミングＴ１１以降についても、同様に、クロックＦの連続する５個のクロックパルスのうち、２個のクロックパルスをマスクすることによってクロックＰ０を生成している。
【００８３】
また、分周比が（３／５）のクロックＰ１は、クロックＦのタイミングＴ２〜Ｔ６に位置する５個の連続するクロックパルスのうち、タイミングＴ４、Ｔ６に位置する２個のクロックパルスをマスクすることによって生成している。また、分周比が（３／５）のクロックＰ２は、クロックＦのタイミングＴ３〜Ｔ７に位置する５個の連続するクロックパルスのうち、タイミングＴ５、Ｔ７に位置する２個のクロックパルスをマスクすることによって生成している。また、分周比が（３／５）のクロックＰ３は、クロックＦのタイミングＴ４〜Ｔ８に位置する５個の連続するクロックパルスのうち、タイミングＴ６、Ｔ８に位置する２個のクロックパルスをマスクすることによって生成している。また、分周比が（３／５）のクロックＰ４は、クロックＦのタイミングＴ５〜Ｔ９に位置する５個の連続するクロックパルスのうち、タイミングＴ７、Ｔ９に位置する２個のクロックパルスをマスクすることによって生成している。
【００８４】
なお、クロックＦのクロックパルスをまったくマスクしないで、クロックＰ０〜Ｐ４を生成した場合、クロックＰ０〜Ｐ４それぞれの周波数は最大になる。このとき、クロックＰ０〜Ｐ４それぞれの周波数の最大値はクロックＦの周波数に等しい。
【００８５】
したがって、クロックＦのサイクル時間をＴｃｙｃとしたとき、クロックＰ０〜Ｐ４の位相関係は、（１）クロックＰ０に対してクロックＰ１の位相がＴｃｙｃだけ遅く、（２）クロックＰ１に対してクロックＰ２の位相がＴｃｙｃだけ遅く、（３）クロックＰ２に対してクロックＰ３の位相がＴｃｙｃだけ遅く、（４）クロックＰ３に対してクロックＰ４の位相がＴｃｙｃだけ遅くなっている。
【００８６】
次に、図７を参照して、本発明の第２の実施形態に係るパイプライン回路２０を構成するクロック信号分周回路について説明する。図７は、図５のパイプライン回路２０を構成するクロック信号分周回路のブロック構成の一例を示すブロック構成図であり、分周比（Ｍ／Ｎ）のクロックＰ０〜Ｐ５を生成している場合について示している。
【００８７】
図７に示すクロック生成回路２８は、入力する分周比分母Ｎおよび分周比分子Ｍの（Ｍ／Ｎ）（Ｍは正整数，ＮはＭより大きい正整数）で規定された分周比に基づいて、クロックＦ（入力クロック信号）の連続するＮ個のクロックパルスのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクすることにより、クロックＦを（Ｍ／Ｎ）の分周比で有理数分周したクロックＰ０〜Ｐ５（出力クロック信号）を生成する回路である。
【００８８】
該クロック信号分周回路２８は、主な回路として、マスク回路２７ａ、２７ｂ、２７ｃ、２７ｄ、２７ｅ、２７ｆとマスク制御回路２５とを含んでいる。マスク回路２７ａは、入力されたマスク信号２６ａに応じてクロックＦのクロックパルスをマスクすることによりクロックＰ０を生成して出力する機能を有している。同様に、マスク回路２７ｂは、入力されたマスク信号２６ｂに応じてクロックＦのクロックパルスをマスクすることによりクロックＰ１を生成して出力する機能を有している。
【００８９】
同様に、マスク回路２７ｃは、入力されたマスク信号２６ｃに応じてクロックＦのクロックパルスをマスクすることによりクロックＰ２を生成して出力する機能を有している。同様に、マスク回路２７ｄは、入力されたマスク信号２６ｄに応じてクロックＦのクロックパルスをマスクすることによりクロックＰ３を生成して出力する機能を有している。同様に、マスク回路２７ｅは、入力されたマスク信号２６ｅに応じてクロックＦのクロックパルスをマスクすることによりクロックＰ４を生成して出力する機能を有している。同様に、マスク回路２７ｆは、入力されたマスク信号２６ｆに応じてクロックＦのクロックパルスをマスクすることによりクロックＰ５を生成して出力する機能を有している。
【００９０】
マスク制御回路２５は、入力された分周比分母Ｎおよび分周比分子Ｍに基づいて、クロックＦの連続するＮ個のクロックパルスのタイミングのうち、いずれか（Ｎ−Ｍ）個分のクロックパルスをマスクするマスクタイミングを、クロックＰ０の当該タイミングに割り当てたマスク信号２６ａとしてマスク回路２７ａへ出力する機能を有している。
【００９１】
さらに、マスク制御回路２５は、入力された分周比分母Ｎおよび分周比分子Ｍに基づいて、クロックＦの連続するＮ個のクロックパルスのタイミングのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクするマスクタイミングを、クロックＰ０の当該タイミングに対してＴｃｙｃだけ遅いタイミングに割り当てたマスク信号２６ｂとしてマスク回路２７ｂへ出力する機能を有している。
【００９２】
さらに、マスク制御回路２５は、入力された分周比分母Ｎおよび分周比分子Ｍに基づいて、クロックＦの連続するＮ個のクロックパルスのタイミングのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクするマスクタイミングを、クロックＰ１の当該タイミングに対してＴｃｙｃだけ遅いタイミングに割り当てたマスク信号２６ｃとしてマスク回路２７ｃへ出力する機能を有している。
【００９３】
さらに、マスク制御回路２５は、入力された分周比分母Ｎおよび分周比分子Ｍに基づいて、クロックＦの連続するＮ個のクロックパルスのタイミングのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクするマスクタイミングを、クロックＰ２の当該タイミングに対してＴｃｙｃだけ遅いタイミングに割り当てたマスク信号２６ｄとしてマスク回路２７ｄへ出力する機能を有している。
【００９４】
さらに、マスク制御回路２５は、入力された分周比分母Ｎおよび分周比分子Ｍに基づいて、クロックＦの連続するＮ個のクロックパルスのタイミングのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクするマスクタイミングを、クロックＰ３の当該タイミングに対してＴｃｙｃだけ遅いタイミングに割り当てたマスク信号２６ｅとしてマスク回路２７ｅへ出力する機能を有している。
【００９５】
さらに、マスク制御回路２５は、入力された分周比分母Ｎおよび分周比分子Ｍに基づいて、クロックＦの連続するＮ個のクロックパルスのタイミングのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクするマスクタイミングを、クロックＰ４の当該タイミングに対してＴｃｙｃだけ遅いタイミングに割り当てたマスク信号２６ｆとしてマスク回路２７ｆへ出力する機能を有している。
【００９６】
なお、クロックＦ、分周比分母Ｎおよび分周比分子Ｍについては、上位回路（図示せず）から供給されるものとする。
【００９７】
次に、図８を参照して、図７に示すマスク制御回路２５の具体例について説明する。図８は、図７のクロック信号分周回路２８を構成するマスク制御回路２５のブロック構成の一例を示すブロック構成図である。
【００９８】
図８において、マスク制御回路２５は、入力された分周比分母Ｎおよび分周比分子Ｍに基づいて、クロックＦのクロックパルスをカウントすることにより、出力クロック信号のクロックＦに対する相対的な位相を示すカウント値を生成し、生成したカウント値に基づいてマスクタイミングを割り当てたマスク信号２６ａ〜２６ｆを生成して出力する機能を有している。
【００９９】
図８に示す本実施形態において、該マスク制御回路２５は、カウンタ６１、テーブル回路６２、シフトレジスタ６５により構成されている。また、入力される分周比分母Ｎおよび分周比分子Ｍは、複数ビットの並列ビットデータによって構成されている。
【０１００】
カウンタ６１は、クロックＦのクロックパルスをカウントするとともに、当該カウンタ６１のカウント値６３が分周比分母Ｎに達した時点で、カウント値を「０」にリセットすることにより、出力クロック信号のクロックＦに対する相対的な位相を示す「０」から「Ｎ−１」までのカウント値６３を出力する機能を有している。これにより、カウンタ６１から、クロックＦと出力クロック信号の位相関係が一巡するサイクル数がカウント値６３として出力される。
【０１０１】
テーブル回路６２は、カウント値６３、分周比分母Ｎおよび分周比分子Ｍの組合せごとに、マスクの要否を示すテーブルデータ６４（図８の例では、Ｎ＝５、Ｍ＝３の場合として、第３番目と第５番目が「０」になっている「１１０１０」のデータ）をあらかじめテーブル形式で保持する機能と、入力されたカウント値６３、分周比分母Ｎおよび分周比分子Ｍの組合せに応じたテーブルデータをマスクタイミング信号６９として出力する機能とを有している。
【０１０２】
シフトレジスタ６５は、入力したマスクタイミング信号６９を、クロックＦのサイクル毎に、順々にシフトして、マスク信号２６ａから２６ｆまでとして出力する。したがって、（１）マスク信号２６ａは、テーブルデータ６４の値になる。（２）マスク信号２６ｂは、マスク信号２６ａをクロックＦの１サイクル分だけシフトした値になる。（３）同様に、マスク信号２６ｃは、マスク信号２６ｂをクロックＦの１サイクル分だけシフトした値になる。（４）同様に、マスク信号２６ｄは、マスク信号２６ｃをクロックＦの１サイクル分だけシフトした値になる。（５）同様に、マスク信号２６ｅは、マスク信号２６ｄをクロックＦの１サイクル分だけシフトした値になる。（６）同様に、マスク信号２６ｆは、マスク信号２６ｅをクロックＦの１サイクル分だけシフトした値になる。
【０１０３】
図８のようなマスク制御回路２５により、分周比分母Ｎ、分周比分子Ｍ、カウント値６３に応じて、テーブル回路６２からシフトレジスタ６５を通じて、図７のクロック信号分周回路２８のマスク回路２７ａ〜２７ｆにおいてクロックＦのクロックパルスをマスクするマスク信号２６ａ〜２６ｆが、クロックＦのクロックパルスごとに出力される。
【０１０４】
（第２の実施形態の動作）
次に、再び、図６を参照して、図５の第２の実施形態によるパイプライン回路２０の動作例について説明する。図６には、分周比（Ｍ／Ｎ）＝（３／５）の場合における、図５のパイプライン回路２０によるデータ処理のタイミング関係の一例を説明するためのタイムチャートも合わせて示している。
【０１０５】
図６のタイムチャートにおいて、パイプライン回路２０は、前段の回路（図示せず）が、タイミングＴ０において、信号２３に出力したデータＤ０を、タイミングＴ１で入力する。具体的には、クロックＰ０の立ち上がりタイミングの一つであるタイミングＴ１において、クロックＰ０で動作するパイプライン・レジスタ２２ａが該データＤ０をラッチし、部分回路２１ａに出力する。しかる後、部分回路２１ａは、該データＤ０の処理を行う。
【０１０６】
次に、クロックＰ１の立ち上がりタイミングの一つであるタイミングＴ２において、クロックＰ１で動作するパイプライン・レジスタ２２ｂが、部分回路２１ａによって処理された該データＤ０をラッチし、部分回路２１ｂに出力する。しかる後、部分回路２１ｂは、該データＤ０の処理を行う。
【０１０７】
次に、クロックＰ２の立ち上がりタイミングの一つであるタイミングＴ３において、クロックＰ２で動作するパイプライン・レジスタ２２ｃが、部分回路２１ｂによって処理された該データＤ０をラッチし、部分回路２１ｃに出力する。しかる後、部分回路２１ｃは、該データＤ０の処理を行う。
【０１０８】
次に、クロックＰ３の立ち上がりタイミングの一つであるタイミングＴ４において、クロックＰ３で動作するパイプライン・レジスタ２２ｄが、部分回路２１ｃによって処理された該データＤ０をラッチし、部分回路２１ｄに出力する。しかる後、部分回路２１ｄは、該データＤ０の処理を行う。
【０１０９】
最後に、クロックＰ４の立ち上がりタイミングの一つであるタイミングＴ５において、クロックＰ４で動作するパイプライン・レジスタ２２ｅを介して、部分回路２１ｄによって処理されたデータＤ０が信号２４に出力される。
【０１１０】
同様に、パイプライン回路２０は、前段の回路（図示せず）が、タイミングＴ１において、信号１３に出力したデータＤ１を、タイミングＴ２で入力する。具体的には、クロックＰ０の立ち上がりタイミングの一つであるタイミングＴ２において、クロックＰ０で動作するパイプライン・レジスタ２２ａが該データＤ１をラッチし、部分回路２１ａに出力する。しかる後、部分回路２１ａは、該データＤ１の処理を行う。
【０１１１】
次に、クロックＰ１の立ち上がりタイミングの一つであるタイミングＴ３において、クロックＰ１で動作するパイプライン・レジスタ２２ｂが、部分回路２１ａによって処理された該データＤ１をラッチし、部分回路２１ｂに出力する。しかる後、部分回路２１ｂは、該データＤ１の処理を行う。
【０１１２】
以降、同様にして、部分回路２１ｂによって処理された該データＤ１は、タイミングＴ４からＴ５にかけて、クロックＰ２、Ｐ３それぞれで動作するパイプライン・レジスタ２２ｃ、２２ｄそれぞれを介して、部分回路２１ｃ、２１ｄそれぞれによって処理される。
【０１１３】
最後に、タイミングＴ６において、パイプライン・レジスタ２２ｅを介して、部分回路２１ｄによって処理されたデータＤ１が信号１４に出力される。
【０１１４】
以降も、同様に、前段の回路（図示せず）が、タイミングＴ３、Ｔ５、Ｔ６、Ｔ８、Ｔ１０、Ｔ１１それぞれにおいて、信号２３に出力したデータＤ２〜Ｄ７は、パイプライン回路２０によって処理された後、タイミングＴ８、Ｔ１０、Ｔ１１、Ｔ１３、Ｔ１５、Ｔ１６それぞれにおいて、信号２４に出力される。
【０１１５】
以上、クロックＰ０〜Ｐ４の順に位相が遅れた５本のクロック信号を使用する場合について説明した。本第２の実施形態は、かかる場合に限らず、任意の本数のクロック信号を用いる場合であっても、同様に適用することができる。具体的には、パイプライン回路２０の前段のパイプライン・レジスタから後段のパイプライン・レジスタに対して、順に、位相が遅れたクロック信号をそれぞれ順に割り当てれば良い。
【０１１６】
（第２の実施形態の効果）
図６のタイムチャートの例においては、前段の回路が出力したデータが、パイプライン回路２０において処理された後、信号２４に出力されるまでに、クロックＦの５サイクル分の時間がかかる（例えば、データＤ０はタイミングＴ０で信号２３を介してパイプライン回路２０に入力され、タイミングＴ５でパイプライン回路２０から信号２４に出力される）。すなわち、パイプライン回路２０のデータ処理のレイテンシは、クロックＦの５サイクルである。
【０１１７】
一方、パイプライン回路２０は、部分回路２１ａ、２１ｂ、２１ｃ、２１ｄの４ステージのパイプライン回路によって構成されていて、データ処理がパイプライン動作により実現されている。そのため、レイテンシが５サイクルであるにも関わらず、クロックＰ０〜Ｐ４の各サイクルごとにデータ処理を行うことができる。すなわち、クロックＦの５サイクルのうち３サイクルごとにデータ処理を行うことができるので、パイプライン回路２０のデータ処理のスループットは、（３／５）データ／サイクル（クロックＦの１サイクル当たり（３／５）のデータを処理することを示す）である。
【０１１８】
これは、クロックＰ０〜Ｐ４の周波数はクロックＦの（３／５）倍であり、よって、クロックＰ０〜Ｐ４のサイクル時間はクロックＦの（５／３）倍であるためである。すなわち、本実施例では、クロック周波数を（３／５）倍にした場合、スループットは（３／５）倍になる一方、レイテンシは１倍のままであり、従来技術のように増大することはない。より一般的には、Ｍを正の整数、ＮをＭより大きい正の整数としたとき、周波数を（Ｍ／Ｎ）倍にすると、スループットは（Ｍ／Ｎ）倍になる。一方、レイテンシは１倍すなわち増大することはない。例えば、本第２の実施形態では、クロックＰ０〜Ｐ４の周波数はクロックＦの（３／５）倍であり、よって、クロックＰ０〜Ｐ４のサイクル時間は平均すると、クロックＦの（５／３）倍であるためである。すなわち、本実施例では、クロック周波数を（３／５）倍にした場合、スループットは（３／５）倍になる一方、レイテンシは１倍のままである。
【０１１９】
このため、スループットが必要性能に十分足りている場合、処理レイテンシを増大させることなく、クロック周波数を（Ｍ／Ｎ）倍で規定される任意の有理数倍で柔軟に低下させることができるので、パイプライン回路２０の消費電力を低減することができるという効果が得られる。また、クロック周波数を低下させても、処理レイテンシが増大しないので、パイプライン回路２０の処理結果を後続の処理で使用する場合でも、処理全体のスループットが低下しないという効果が得られる。
【０１２０】
（第３の実施形態）
次に、本発明の第３の実施形態に係るパイプライン回路について説明する。本第３の実施形態では、フロー制御機能を備えたパイプライン回路に対して、パイプライン回路を駆動するクロック信号の周波数を、周波数の最大値に対して（Ｍ／Ｎ）倍（Ｍは正の整数、ＮはＭより大きい正の整数）で規定される有理数倍にする場合について、図９を参照しながら説明する。
【０１２１】
図９は、本発明の第３の実施形態に係るパイプライン回路のブロック構成を示すブロック構成図である。図９において、パイプライン回路３０は、信号３３から入力したデータを部分回路３１ａ、３１ｂ、３１ｃ、３１ｄによってパイプライン的に処理した後、信号３４に出力する回路である。ここで、信号３３および信号３４は、複数ビットからなる信号である。
【０１２２】
より詳細には、パイプライン回路３０は、高い動作周波数と高いスループットを実現するために、４ステージのパイプライン回路で構成されている。すなわち、パイプライン回路３０において、データ処理を行う回路は、５段のパイプライン・バッファ３２ａ、３２ｂ、３２ｃ、３２ｄ、３２ｅにより、４つの部分回路３１ａ、３１ｂ、３１ｃ、３１ｄに分割されている。
【０１２３】
さらに、パイプライン回路３０は、前段の回路（図示せず）および後続の回路（図示せず）との間に、パイプライン回路３０で処理するデータのフロー制御のための入出力信号を備える。
【０１２４】
具体的には、前段の回路（図示せず）からデータ要求信号４３を入力し、前段の回路（図示せず）へデータ応答信号４５を出力する。データ要求信号４３は、前段の回路が信号３３にデータを出力したことを示す信号である。一方、データ応答信号４５は、信号３３に出力されるデータをパイプライン・バッファ３２ａ（すなわちパイプライン回路３０）が入力可能であることを示す信号である。
【０１２５】
また、後続の回路（図示せず）へデータ要求信号４４を出力し、後続の回路（図示せず）からデータ応答信号４６を入力する。データ要求信号４４は、パイプライン・バッファ３２ｅ（すなわちパイプライン回路３０）が信号３４にデータを出力したことを示す信号である。一方、データ応答信号４６は、信号３４に出力されるデータを後続の回路が入力可能であることを示す信号である。
【０１２６】
さらに、パイプライン回路３０は、パイプライン・バッファ３２ａ〜３２ｅの間において、データのフロー制御のための信号を備える。
【０１２７】
具体的には、パイプライン・バッファ３２ａは、前段の回路（図示せず）からデータ要求信号４３を入力し、前段の回路（図示せず）へデータ応答信号４５を出力することに加えて、次段のパイプライン・バッファ３２ｂへデータ要求信号４１ａを出力し、パイプライン・バッファ３２ｂからデータ応答信号４２ａを入力する。データ要求信号４１ａは、パイプライン・バッファ３２ａが信号３８ａにデータを出力したことを示す信号である。一方、データ応答信号４２ａは、信号３８ａに出力されるデータをパイプライン・バッファ３２ｂが入力可能であることを示す信号である。
【０１２８】
同様に、パイプライン・バッファ３２ｂは、前段のパイプライン・バッファ３２ａからデータ要求信号４１ａを入力し、パイプライン・バッファ３２ａへデータ応答信号４２ａを出力することに加えて、次段のパイプライン・バッファ３２ｃへデータ要求信号４１ｂを出力し、パイプライン・バッファ３２ｃからデータ応答信号４２ｂを入力する。データ要求信号４１ｂは、パイプライン・バッファ３２ｂが信号３８ｂにデータを出力したことを示す信号である。一方、データ応答信号４２ｂは、信号３８ｂに出力されるデータをパイプライン・バッファ３２ｃが入力可能であることを示す信号である。
【０１２９】
同様に、パイプライン・バッファ３２ｃは、前段のパイプライン・バッファ３２ｂからデータ要求信号４１ｂを入力し、パイプライン・バッファ３２ｂへデータ応答信号４２ｂを出力することに加えて、次段のパイプライン・バッファ３２ｄへデータ要求信号４１ｃを出力し、パイプライン・バッファ３２ｄからデータ応答信号４２ｃを入力する。データ要求信号４１ｃは、パイプライン・バッファ３２ｃが信号３８ｃにデータを出力したことを示す信号である。一方、データ応答信号４２ｃは、信号３８ｃに出力されるデータをパイプライン・バッファ３２ｄが入力可能であることを示す信号である。
【０１３０】
同様に、パイプライン・バッファ３２ｄは、前段のパイプライン・バッファ３２ｃからデータ要求信号４１ｃを入力し、パイプライン・バッファ３２ｃへデータ応答信号４２ｃを出力することに加えて、次段のパイプライン・バッファ３２ｅへデータ要求信号４１ｄを出力し、パイプライン・バッファ３２ｅからデータ応答信号４２ｄを入力する。データ要求信号４１ｄは、パイプライン・バッファ３２ｄが信号３８ｄにデータを出力したことを示す信号である。一方、データ応答信号４２ｄは、信号３８ｄに出力されるデータをパイプライン・バッファ３２ｅが入力可能であることを示す信号である。
【０１３１】
同様に、パイプライン・バッファ３２ｅは、前段のパイプライン・バッファ３２ｄからデータ要求信号４１ｄを入力し、パイプライン・バッファ３２ｄへデータ応答信号４２ｄを出力することに加えて、後続の回路（図示せず）へデータ要求信号４４を出力し、後続の回路（図示せず）からデータ応答信号４６を入力する。
【０１３２】
５段のパイプライン・バッファ３２ａ、３２ｂ、３２ｃ、３２ｄ、３２ｅは、それぞれ、６本の独立したクロック信号であるクロックＰ０、クロックＰ１、クロックＰ２、クロックＰ３、クロックＰ４、クロックＰ５のいずれか２つのクロックによって動作する。図９に示す例では、パイプライン・バッファ３２ａは、クロックＰ０，Ｐ１によって動作し、パイプライン・バッファ３２ｂは、クロックＰ１，Ｐ２によって動作し、パイプライン・バッファ３２ｃは、クロックＰ２，Ｐ３によって動作し、パイプライン・バッファ３２ｄは、クロックＰ３，Ｐ４によって動作し、パイプライン・バッファ３２ｅは、クロックＰ４，Ｐ５によって動作する。
【０１３３】
ここで、クロックＰ０〜Ｐ５の周波数が、それぞれ、クロックＰ０〜Ｐ５の周波数の最大値に対して（Ｍ／Ｎ）倍（Ｍは正の整数、ＮはＭより大きい正の整数）であるものと仮定する。また、クロックＰ０〜Ｐ５の周波数が最大値の場合のサイクル時間をＴｃｙｃとしたとき、クロックＰ０〜Ｐ５の位相関係は、（１）クロックＰ０に対してクロックＰ１の位相がＴｃｙｃだけ遅く、（２）クロックＰ１に対してクロックＰ２の位相がＴｃｙｃだけ遅く、（３）クロックＰ２に対してクロックＰ３の位相がＴｃｙｃだけ遅く、（４）クロックＰ３に対してクロックＰ４の位相がＴｃｙｃだけ遅く、（５）クロックＰ４に対してクロックＰ５の位相がＴｃｙｃだけ遅いものとする。
【０１３４】
このとき、パイプライン回路３０の前段のパイプライン・バッファから後段のパイプライン・バッファに対して、クロックＰ０〜Ｐ５のうち、あらかじめ定めた位相となるＴｃｙｃだけ位相が遅れた連続する２つのクロック信号を、順に割り当てるとともに、隣接するパイプライン・バッファ間では、割り当てられた２つのクロック信号のうち、同一位相の１つのクロック信号を共有するように割り当てる。つまり、クロックＰ０〜Ｐ５のうち、各パイプライン・バッファ３２ａ〜３２ｅにあらかじめ定めた位相ずつ位相が遅れた連続する２つのクロック信号を順に割り当てる際に、前段のパイプライン・バッファに割り当てた後ろ側のクロック信号と、次段のパイプライン・バッファに割り当てた前側のクロック信号との位相を同一にする。具体的には、（ａ）パイプライン・バッファ３２ａにはクロックＰ０とクロックＰ１とを割り当てる。（ｂ）パイプライン・バッファ３２ｂにはクロックＰ１とクロックＰ２とを割り当てる。（ｃ）パイプライン・バッファ３２ｃにはクロックＰ２とクロックＰ３とを割り当てる。（ｄ）パイプライン・バッファ３２ｄにはクロックＰ３とクロックＰ４とを割り当てる。（ｅ）パイプライン・バッファ３２ｅにはクロックＰ４とクロックＰ５とを割り当てる。
【０１３５】
したがって、前述のように、（ａ）パイプライン・バッファ３２ａはクロックＰ０とクロックＰ１とで動作する。（ｂ）パイプライン・バッファ３２ｂはクロックＰ１とクロックＰ２とで動作する。（ｃ）パイプライン・バッファ３２ｃはクロックＰ２とクロックＰ３とで動作する。（ｄ）パイプライン・バッファ３２ｄはクロックＰ３とクロックＰ４とで動作する。（ｅ）パイプライン・バッファ３２ｅはクロックＰ４とクロックＰ５とで動作する。
【０１３６】
以上のように、各パイプライン・バッファ３２ａ〜３２ｅのそれぞれに対して、順に、クロックＰ０〜Ｐ５のうち、Ｔｃｙｃだけ位相が遅れた連続する２つのクロック信号を、隣接するパイプライン・バッファ間で位相が同一の１つのクロック信号を共有するように割り当てる点が、本第３の実施形態の特徴の一つである。かかる特徴により、（Ｍ／Ｎ）倍（Ｍは正の整数、ＮはＭより大きい正の整数）に分周する有理数分周によってクロック周波数を低下させた場合であっても、正常に動作するフロー制御機能を実現することができる。
【０１３７】
なお、クロックＰ０〜Ｐ５を生成する方法としては、例えば、第２の実施形態の図７に示したクロック信号分周回路２８によって生成することができる。
【０１３８】
次に、本発明の第３の実施形態にかかるパイプライン・バッファの詳細について、図１０を参照しながら説明する。図１０は、図９のパイプライン回路３０を構成するパイプライン・バッファ３２ａのブロック構成例を示すブロック構成図である。なお、図１０には、パイプライン回路３０の第１段目のパイプライン・バッファ３２ａについて例示しているが、第２段目以降のパイプライン・バッファ３２ｂ、３２ｃ、３２ｄ、３２ｅについても、同様のブロック構成によって構成するようにしても良い。
【０１３９】
図１０に例示するように、パイプライン・バッファ３２ａは、主な回路として、データバッファ５５、入力制御回路５６、出力制御回路５７、セレクタ５８を少なくとも含んで構成している。
【０１４０】
データバッファ５５は、入力制御回路５６による制御に応じて、信号３３に出力されたデータを一時的に格納する先入れ先出し（ＦＩＦＯ：First-In  First-Out）バッファである。本実施形態では、データバッファ５５は、最大２つまでデータを一時的に格納できるものとしている。パイプライン・バッファ３２ａのデータバッファ５５は、クロックＰ０を入力し、クロックＰ０のタイミングでデータを格納する。
【０１４１】
入力制御回路５６は、データバッファ５５に一時的に格納するデータの、データバッファ５５への書き込みを制御する。また、入力制御回路５６は、前段の回路と、データ要求信号４３およびデータ応答信号４５を介して、前段の回路からのデータの入力に関するフロー制御を行う。
【０１４２】
データ要求信号４３は、前段の回路が信号３３にデータを出力したことを示す信号である。入力制御回路５６は、データ要求信号４３を参照して、前段の回路が信号３３にデータを出力したことを認識する。一方、データ応答信号４５は、信号３３に出力されるデータをパイプライン・バッファ３２ａが入力可能であることを示す信号である。入力制御回路５６は、信号３３に出力されるデータを入力可能である場合には、その旨をデータ応答信号４５に出力する。
【０１４３】
また、入力制御回路５６は、データバッファ５５に入力制御信号５１を出力する。入力制御信号５１は、前段の回路が信号３３に出力したデータを、データバッファ５５に格納するか否かを指示する信号である。また、入力制御回路５６は、データバッファ５５および出力制御回路５７に、書き込み位置信号５２を出力する。書き込み位置信号５２は、信号３３に出力されたデータを入力する場合に、そのデータをデータバッファ５５に格納する際の、データの書き込み先であるデータバッファ５５内の位置を指示する信号である。
【０１４４】
また、入力制御回路５６は、出力制御回路５７から、読み出し位置信号５３を入力する。読み出し位置信号５３は、データバッファ５５に格納したデータを信号３８ａに出力する場合に、そのデータをデータバッファ５５から読み出す際の、読み出し元であるデータバッファ５５内の位置を指示する信号である。
【０１４５】
入力制御回路５６は、出力する書き込み位置信号５２の値と、入力する読み出し位置信号５３の値とから、データバッファ５５にデータを格納する空きがあるか否かを判断する。空きがある場合は、データ応答信号４５にデータを入力可能であることを示す値"１"を出力する。一方、空きがない場合には、データ応答信号４５にデータを入力することができないことを示す値"０"を出力する。
【０１４６】
入力制御回路５６は、クロックＰ０を入力して、クロックＰ０のタイミングで、データ要求信号４３、読み出し位置信号５３の入力、および、データ応答信号４５、入力制御信号５１、書き込み位置信号５２の出力を行う。
【０１４７】
一方、出力制御回路５７は、データバッファ５５に一時的に格納したデータの、データバッファ５５からの読み出し、および、信号３８ａへの出力を制御する。また、出力制御回路５７は、次段のパイプライン・バッファ３２ｂと、データ要求信号４１ａおよびデータ応答信号４２ａを介して、パイプライン・バッファ３２ｂへのデータの出力に関するフロー制御を行う。
【０１４８】
データ要求信号４１ａは、パイプライン・バッファ３２ａが信号３８ａにデータを出力したことを示す信号である。出力制御回路５７は、データバッファ５５に一時的に格納したデータを読み出して信号３８ａに出力する場合、その旨をデータ要求信号４１ａに出力する。一方、データ応答信号４２ａは、信号３８ａに出力されるデータを次段のパイプライン・バッファ３２ｂが入力可能であることを示す信号である。出力制御回路５７は、データ応答信号４２ａを参照して、信号３８ａに出力するデータを次段のパイプライン・バッファ３２ｂが入力可能であることを認識する。
【０１４９】
また、出力制御回路５７は、セレクタ５８および入力制御回路５６に、読み出し位置信号５３を出力する。データバッファ５５にデータが格納されている場合、出力制御回路５７は、読み出し位置信号５３に、最も先に格納されたデータを読み出すようにセレクタ５８を制御する値を出力する。
【０１５０】
また、出力制御回路５７は、入力制御回路５６から、書き込み位置信号５２を入力する。出力制御回路５７は、出力する読み出し位置信号５３の値と、入力する書き込み位置信号５２の値とから、データバッファ５５にデータが格納されているか否かを判断する。データが格納されている場合、読み出し位置信号５３によりセレクタ５８を制御して、最も先に格納されたデータを選択して信号３８ａに出力する。また、データ要求信号４１ａにデータを出力したことを示す値"１"を出力する。一方、データが格納されていない場合、出力制御回路５７は、データ要求信号４１ａにデータを出力していないことを示す値"０"を出力する。
【０１５１】
出力制御回路５７は、クロックＰ１を入力して、クロックＰ１のタイミングでデータ応答信号４２ａの入力、および、読み出し位置信号５３の出力を行う。一方、出力制御回路５７において、書き込み位置信号５２の入力およびデータ要求信号４１ａの出力に関する部分は、組み合わせ回路によって構成されている。したがって、出力制御回路５７は、書き込み位置信号５２の入力およびデータ要求信号４１ａの出力を、クロックＰ１のタイミングによらずに随時行う。
【０１５２】
セレクタ５８は、読み出し位置信号５３を参照して、データバッファ５５に格納された最大２つまでのデータのうち、いずれか１つを選択して信号３８ａに出力する。
【０１５３】
以上、パイプライン・バッファ３２ａの構成の詳細を説明したが、本実施形態の他のパイプライン・バッファ３２ｂ〜３２ｅについても、入力するクロック信号が異なるのみであり、前述したように、同様の構成である。例えば、パイプライン・バッファ３２ｂの入力制御回路５６とデータバッファ５５とはクロックＰ１を入力し、出力制御回路５７はクロックＰ２を入力する。
【０１５４】
同様に、パイプライン・バッファ３２ｃの入力制御回路５６とデータバッファ５５とはクロックＰ２を入力し、出力制御回路５７はクロックＰ３を入力する。同様に、パイプライン・バッファ３２ｄの入力制御回路５６とデータバッファ５５とはクロックＰ３を入力し、出力制御回路５７はクロックＰ４を入力する。同様に、パイプライン・バッファ３２ｅの入力制御回路５６とデータバッファ５５とはクロックＰ４を入力し、出力制御回路５７はクロックＰ５を入力する。
【０１５５】
（第３の実施形態の動作）
次に、図１１、図１２を参照して、図９の第３の実施形態によるパイプライン回路３０の動作例について説明する。図１１は、クロックＦを分周比（Ｍ／Ｎ）＝（７／１０）で分周してクロックＰ０〜Ｐ５を生成した場合における、図９のパイプライン回路３０によるデータ処理のタイミング関係の一例を説明するためのタイムチャートであり、フロー制御によるパイプライン動作の停止（パイプライン・ストール）が発生しない場合について示している。また、図１２は、クロックＦを分周比（Ｍ／Ｎ）＝（７／１０）で分周してクロックＰ０〜Ｐ５を生成した場合における、図９のパイプライン回路３０によるデータ処理のタイミング関係の他の例を説明するためのタイムチャートであり、フロー制御によるパイプライン動作の停止（パイプライン・ストール）が発生する場合について示している。
【０１５６】
（パイプライン停止が発生しない場合の動作）
まず、クロックＦを分周比（Ｍ／Ｎ）＝（７／１０）で分周してクロックＰ０〜Ｐ５を生成した場合を例にとって、パイプライン回路３０においてフロー制御によるパイプライン動作の停止（パイプライン・ストール）が発生しない場合について、図１１のタイムチャートを参照して説明する。
【０１５７】
まず、データＤ０の処理について説明する。図１１のタイムチャートにおいて、前段の回路（図示せず）は、タイミングＴ０において、信号３３にデータＤ０を出力するとともに、データ要求信号４３にデータを出力したことを示す値"１"を出力する。次に、クロックＰ０の立ち上がりタイミングの一つであるタイミングＴ１において、パイプライン回路３０のパイプライン・バッファ３２ａは、データ要求信号４３から値"１"を入力して、信号３３にデータが出力されていることを認識する。ここで、タイミングＴ１において、パイプライン・バッファ３２ａは、データを入力可能であるものとする。したがって、パイプライン・バッファ３２ａは、クロックＰ０の立ち上がりタイミングの一つであるタイミングＴ１でデータＤ０を入力して、パイプライン・バッファ３２ａのデータバッファ５５に格納する。
【０１５８】
このとき、パイプライン・バッファ３２ａは、データを入力可能な旨を前段の回路に通知するために、データ応答信号４５に値"１"を出力している。前段の回路は、データ応答信号４５から値"１"を入力して、パイプライン・バッファ３２ａに出力したデータＤ０がパイプライン・バッファ３２ａに入力されて、かつ、次のデータＤ１を出力することができるものと認識する。
【０１５９】
また、タイミングＴ１におけるパイプライン・バッファ３２ａにおいて、読み出し位置信号５３には、データバッファ５５に最も先に格納されたデータを信号３８ａに出力するように、セレクタ５８を制御する値が出力されている。したがって、パイプライン・バッファ３２ａは、入力したデータＤ０を、直ちに部分回路３１ａに出力するとともに、データ要求信号４１ａには、信号３８ａに部分回路３１ａを介してデータを出力したことを示す値"１"を出力する。部分回路３１ａは、該データＤ０の処理を行う。
【０１６０】
次に、クロックＰ１の立ち上がりタイミングの一つであるタイミングＴ２において、パイプライン・バッファ３２ｂは、データ要求信号４１ａから値"１"を入力して、信号３８ａにデータが出力されていることを認識する。ここで、タイミングＴ２において、パイプライン・バッファ３２ｂは、データを入力可能であるものとする。したがって、パイプライン・バッファ３２ｂは、クロックＰ１のタイミングの一つであるタイミングＴ２で、部分回路２１ａによって処理されたデータＤ０を入力して、パイプライン・バッファ３２ｂのデータバッファ５５に格納する。
【０１６１】
このとき、パイプライン・バッファ３２ｂは、データを入力可能な旨を前段のパイプライン・バッファ３２ａに通知するために、データ応答信号４２ａに値"１"を出力している。パイプライン・バッファ３２ａは、データ応答信号４２ａから値"１"を入力して、パイプライン・バッファ３２ｂに出力したデータＤ０がパイプライン・バッファ３２ｂに入力されて、かつ、次のデータＤ１を出力することができるものと認識する。
【０１６２】
また、タイミングＴ２におけるパイプライン・バッファ３２ｂにおいて、読み出し位置信号５３には、データバッファ５５に最も先に格納されたデータを信号３８ｂに出力するように、セレクタ５８を制御する値が出力されている。したがって、パイプライン・バッファ３２ｂは、入力したデータＤ０を、直ちに部分回路３１ｂに出力するとともに、データ要求信号４１ｂには、信号３８ｂに部分回路３１ｂを介してデータを出力したことを示す値"１"を出力する。部分回路３１ｂは、該データＤ０の処理を行う。
【０１６３】
以降、同様にして、クロックＰ２の立ち上がりタイミングの一つであるタイミングＴ３において、パイプライン・バッファ３２ｃは、部分回路３１ｂによって処理された該データＤ０をパイプライン・バッファ３２ｃのデータバッファ５５に格納し、さらに、入力した該データＤ０を直ちに部分回路３１ｃに出力する。部分回路３１ｃは、該データＤ０の処理を行う。次に、クロックＰ３の立ち上がりタイミングの一つであるタイミングＴ４において、パイプライン・バッファ３２ｄは、部分回路３１ｃによって処理された該データＤ０をパイプライン・バッファ３２ｄのデータバッファ５５に格納し、さらに、入力した該データＤ０を直ちに部分回路３１ｄに出力する。部分回路３１ｄは、該データＤ０の処理を行う。
【０１６４】
最後に、クロックＰ４の立ち上がりタイミングの一つであるタイミングＴ５において、パイプライン・バッファ３２ｅは、部分回路３１ｄによって処理された該データＤ０をパイプライン・バッファ３２ｅのデータバッファ５５に格納し、さらに、入力した該データＤ０を直ちに信号３４に出力する。
【０１６５】
次に、次のデータであるデータＤ１の処理について説明する。図１１のタイムチャートにおいて、前段の回路（図示せず）は、タイミングＴ１において、データ応答信号４５から値"１"を入力して、データＤ０がパイプライン・バッファ３２ａに入力されて、かつ、次のデータＤ１を出力することができると認識する。したがって、前段の回路（図示せず）は、タイミングＴ１において、信号３３に次のデータであるデータＤ１を出力するとともに、データ要求信号４３にデータを出力したことを示す値"１"を出力する。次に、クロックＰ０の立ち上がりタイミングの一つであるタイミングＴ２において、パイプライン回路３０のパイプライン・バッファ３２ａは、データ要求信号４３から値"１"を入力して、信号３３に次のデータが出力されていることを認識する。ここで、タイミングＴ２において、パイプライン・バッファ３２ａは、データを入力可能であるものとする。したがって、パイプライン・バッファ３２ａは、クロックＰ０の立ち上がりタイミングの一つであるタイミングＴ２でデータＤ１を入力して、パイプライン・バッファ３２ａのデータバッファ５５に格納する。
【０１６６】
このとき、パイプライン・バッファ３２ａは、データを入力可能な旨を前段の回路に通知するために、データ応答信号４５に値"１"を出力している。前段の回路は、データ応答信号４５から値"１"を入力して、パイプライン・バッファ３２ａに出力したデータＤ１がパイプライン・バッファ３２ａに入力されて、かつ、次のデータＤ２を出力することができるものと認識する。
【０１６７】
また、タイミングＴ２におけるパイプライン・バッファ３２ａにおいて、読み出し位置信号５３には、データバッファ５５に最も先に格納されたデータを信号３８ａに出力するように、セレクタ５８を制御する値が出力されている。したがって、パイプライン・バッファ３２ａは、入力したデータＤ１を、直ちに部分回路３１ａに出力するとともに、データ要求信号４１ａには、信号３８ａに部分回路３１ａを介してデータを出力したことを示す値"１"を出力する。部分回路３１ａは、該データＤ１の処理を行う。
【０１６８】
次に、クロックＰ１の立ち上がりタイミングの一つであるタイミングＴ３において、パイプライン・バッファ３２ｂは、データ要求信号４１ａから値"１"を入力して、信号３８ａに次のデータが出力されていることを認識する。ここで、タイミングＴ３において、パイプライン・バッファ３２ｂは、データを入力可能であるものとする。したがって、パイプライン・バッファ３２ｂは、クロックＰ１のタイミングの一つであるタイミングＴ３で、部分回路２１ａによって処理されたデータＤ１を入力して、パイプライン・バッファ３２ｂのデータバッファ５５に格納する。
【０１６９】
このとき、パイプライン・バッファ３２ｂは、データを入力可能な旨を前段のパイプライン・バッファ３２ａに通知するために、データ応答信号４２ａに値"１"を出力している。パイプライン・バッファ３２ａは、データ応答信号４２ａから値"１"を入力して、パイプライン・バッファ３２ｂに出力したデータＤ１がパイプライン・バッファ３２ｂに入力されて、かつ、次のデータＤ２を出力することができるものと認識する。
【０１７０】
また、タイミングＴ３におけるパイプライン・バッファ３２ｂにおいて、読み出し位置信号５３には、データバッファ５５に最も先に格納されたデータを信号３８ｂに出力するように、セレクタ５８を制御する値が出力されている。したがって、パイプライン・バッファ３２ｂは、入力したデータＤ１を、直ちに部分回路３１ｂに出力するとともに、データ要求信号４１ｂには、信号３８ｂに部分回路３１ｂを介してデータを出力したことを示す値"１"を出力する。部分回路３１ｂは、該データＤ１の処理を行う。
【０１７１】
以降、同様にして、クロックＰ２の立ち上がりタイミングの一つであるタイミングＴ４において、パイプライン・バッファ３２ｃは、部分回路３１ｂによって処理された該データＤ１をパイプライン・バッファ３２ｃのデータバッファ５５に格納し、さらに、入力した該データＤ１を直ちに部分回路３１ｃに出力する。部分回路３１ｃは、該データＤ１の処理を行う。次に、クロックＰ３の立ち上がりタイミングの一つであるタイミングＴ５において、パイプライン・バッファ３２ｄは、部分回路３１ｃによって処理された該データＤ１をパイプライン・バッファ３２ｄのデータバッファ５５に格納し、さらに、入力した該データＤ１を直ちに部分回路３１ｄに出力する。部分回路３１ｄは、該データＤ１の処理を行う。
【０１７２】
最後に、クロックＰ４の立ち上がりタイミングの一つであるタイミングＴ６において、パイプライン・バッファ３２ｅは、部分回路３１ｄによって処理された該データＤ１をパイプライン・バッファ３２ｅのデータバッファ５５に格納し、さらに、入力した該データＤ１を直ちに信号３４に出力する。
【０１７３】
以降も、同様に、前段の回路（図示せず）が、タイミングＴ２、Ｔ４、Ｔ５、Ｔ６、Ｔ８、Ｔ１０それぞれにおいて、信号３３に出力したデータＤ２〜Ｄ７は、パイプライン回路３０によって処理された後、タイミングＴ７、Ｔ９、Ｔ１０、Ｔ１１、Ｔ１３、Ｔ１５それぞれにおいて、信号３４に出力される。
【０１７４】
（パイプライン停止が発生する場合の動作）
次に、クロックＦを分周比（Ｍ／Ｎ）＝（７／１０）で分周してクロックＰ０〜Ｐ５を生成した場合を例にとって、パイプライン回路３０においてフロー制御によるパイプライン動作の停止（パイプライン・ストール）が発生する場合について、図１２のタイムチャートを参照して説明する。図１２は、前述したように、フロー制御によるパイプライン動作の停止（パイプライン・ストール）が発生する場合における図９のパイプライン回路３０によるデータ処理のタイミング関係について示している。
【０１７５】
図１１と図１２とのタイムチャートにおけるデータ処理例の違いは、図１２においては、タイミングＴ７において、信号３４に出力されたデータＤ１を後続の回路（図示せず）が入力することができない状態が発生していることにある。第１の実施形態や第２の実施形態の場合のように、フロー制御機能を備えていないパイプライン回路１０やパイプライン回路２０においては、かくのごとく、後続の回路や次段のパイプライン・レジスタにデータを入力することができない状況が発生すると、データを紛失してしまうという問題がある。なぜなら、データを入力することができないにも関わらず、次のデータが、パイプライン回路の前段から順々に出力されてくるからである。
【０１７６】
一方、本第３の実施形態のように、フロー制御機能を備えたパイプライン回路３０においては、データを入力することができない状況が発生する場合であっても、適宜、パイプライン動作を停止することにより、データの紛失を回避することができる。
【０１７７】
以降では、まず、図１２のタイムチャートにおいて、タイミングＴ７において、後続の回路（図示せず）が入力することができなくなるデータＤ１の処理について説明する。
【０１７８】
（タイミングＴ２〜Ｔ６における動作）
まず、クロックＰ０の立ち上がりタイミングの一つであるタイミングＴ２において、パイプライン回路３０のパイプライン・バッファ３２ａは、前段の回路（図示せず）が信号３３に出力したデータＤ１を入力して、パイプライン・バッファ３２ａのデータバッファ５５に格納し、さらに、入力した該データＤ１を直ちに信号３８ａに出力し、部分回路３１ａに出力する。部分回路３１ａは、該データＤ１の処理を行う。
【０１７９】
次に、クロックＰ１の立ち上がりタイミングの一つであるタイミングＴ３において、パイプライン・バッファ３２ｂは、部分回路３１ａによって処理された該データＤ１をパイプライン・バッファ３２ｂのデータバッファ５５に格納し、さらに、信号３８ｂに出力し、部分回路３１ｂに出力する。部分回路３１ｂは、該データＤ１の処理を行う。
【０１８０】
次に、クロックＰ２の立ち上がりタイミングの一つであるタイミングＴ４において、パイプライン・バッファ３２ｃは、部分回路３１ｂによって処理された該データＤ１をパイプライン・バッファ３２ｃのデータバッファ５５に格納し、さらに、信号３８ｃに出力し、部分回路３１ｃに出力する。部分回路３１ｃは、該データＤ１の処理を行う。
【０１８１】
次に、クロックＰ３の立ち上がりタイミングの一つであるタイミングＴ５において、パイプライン・バッファ３２ｄは、部分回路３１ｃによって処理された該データＤ１をパイプライン・バッファ３２ｄのデータバッファ５５に格納し、さらに、信号３８ｄに出力し、部分回路３１ｄに出力する。部分回路３１ｄは、該データＤ１の処理を行う。
【０１８２】
次に、クロックＰ４の立ち上がりタイミングの一つであるタイミングＴ６において、パイプライン・バッファ３２ｅは、部分回路３１ｄによって処理された該データＤ１をパイプライン・バッファ３２ｅのデータバッファ５５に格納し、さらに、信号３４に出力する。
【０１８３】
ここで、クロックＰ３の立ち上がりタイミングの一つでもあるタイミングＴ６においては、パイプライン・バッファ３２ｅの前段のパイプライン・バッファ３２ｄは、次のデータＤ２を信号３８ｄに出力し、部分回路３１ｄに出力する。部分回路３１ｄは、該データＤ２の処理を行っている。
【０１８４】
（タイミングＴ７における動作）
ところが、後続の回路（図示せず）は、前述したように、パイプライン・バッファ３２ｅからタイミングＴ６で信号３４に出力されたデータＤ１を、タイミングＴ７において、入力することができないものと仮定する。このとき、後続の回路（図示せず）は、データ応答信号４６に値"０"を出力することによって、データを入力することができないことを、パイプライン・バッファ３２ｅに通知してくる。
【０１８５】
したがって、パイプライン・バッファ３２ｅは、クロックＰ５の立ち上がりタイミングの一つであるタイミングＴ７において、データ応答信号４６から値"０"を入力して、後続の回路がデータＤ１を入力することができなかったことを認識する。その結果、パイプライン・バッファ３２ｅは、読み出し位置信号５３の値を変更することなく、引き続き、信号３４にデータＤ１を出力するように制御する。また、パイプライン・バッファ３２ｅは、タイミングＴ７において、データＤ１をパイプライン・バッファ３２ｅのデータバッファ５５に継続して格納することに加えて、前段のパイプライン・バッファ３２ｄから信号３８ｄに出力されている次のデータＤ２を入力してパイプライン・バッファ３２ｅのデータバッファ５５に格納する。
【０１８６】
ここで、パイプライン・バッファ３２ａ〜３２ｅの各データバッファ５５は、データを最大２つまで格納可能としている。したがって、パイプライン・バッファ３２ｅに、データＤ１と次のデータＤ２とを同時に格納することができる。しかし、２つを超えるデータは、パイプライン・バッファ３２ｅのデータバッファ５５には格納することができないので、かかる場合には、パイプライン・バッファ３２ｅは、データ応答信号４２ｄに値"０"を出力することによって、その旨を、前段のパイプライン・バッファ３２ｄに通知する。
【０１８７】
（タイミングＴ８における動作）
ここで、タイミングＴ８において、後続の回路（図示せず）は、データＤ１を入力することができるものと仮定する。かかる場合には、後続の回路は、パイプライン・バッファ３２ｅから信号３４に出力されたデータＤ１を入力するとともに、データ応答信号４６に値"１"を出力することによって、データＤ１を入力して、かつ、次のデータＤ２を入力することができることをパイプライン・バッファ３２ｅに通知する。したがって、パイプライン・バッファ３２ｅは、データ応答信号４６から値"１"を入力して、後続の回路がデータＤ１を入力して、かつ、次のデータＤ２を出力することができることを認識する。その結果、パイプライン・バッファ３２ｅは、クロックＰ５の立ち上がりタイミングの一つであるタイミングＴ８において、読み出し位置信号５３の値を変更して、パイプライン・バッファ３２ｅのデータバッファ５５に格納している次のデータＤ２を信号３４に出力する。
【０１８８】
また、パイプライン・バッファ３２ｅは、データＤ１の出力が完了して、パイプライン・バッファ３２ｅのデータバッファ５５には空きが１つできたため、データ応答信号４２ｄに値"１"を出力することによって、データを入力可能であることを、前段のパイプライン・バッファ３２ｄに通知する。
【０１８９】
また、クロックＰ３の立ち上がりタイミング一つでもあるタイミングＴ８においては、パイプライン・バッファ３２ｅの前段のパイプライン・バッファ３２ｄは、次のデータＤ３を信号３８ｄに出力し、部分回路３１ｄに出力する。部分回路３１ｄは、該データＤ３の処理を行っている。
【０１９０】
（タイミングＴ９における動作）
ここで、タイミングＴ９においては、後続の回路（図示せず）は、データＤ２を入力することができるものと仮定する。かかる場合には、後続の回路は、パイプライン・バッファ３２ｅから信号３４に出力されたデータＤ２を入力するとともに、データ応答信号４６に値"１"を出力することによって、データＤ２を入力したことをパイプライン・バッファ３２ｅに通知する。したがって、パイプライン・バッファ３２ｅは、データ応答信号４６から値"１"を入力して、後続の回路がデータＤ２を入力して、かつ、次のデータＤ３を出力することができることを認識する。
【０１９１】
しかし、タイミングＴ９は、クロックＰ５の立ち上がりタイミングではないので、パイプライン・バッファ３２ｅは、読み出し位置信号５３の値を変更しないで、信号３４にデータＤ２を引き続き出力する。
【０１９２】
一方、タイミングＴ９は、クロックＰ４の立ち上がりタイミングの一つであるので、パイプライン・バッファ３２ｅは、データＤ２を継続してパイプライン・バッファ３２ｅのデータバッファ５５に格納していることに加えて、信号３８ｄに出力されている次のデータＤ３を入力してパイプライン・バッファ３２ｅのデータバッファ５５に格納する。しかし、２つのデータを超えて、パイプライン・バッファ３２ｅのデータバッファ５５にはデータを格納することができないので、パイプライン・バッファ３２ｅは、データ応答信号４２ｄに値"０"を出力することによって、その旨を、前段のパイプライン・バッファ３２ｄに通知する。
【０１９３】
（タイミングＴ１０における動作）
次に、クロックＰ５の立ち上がりタイミングの一つであるタイミングＴ１０において、パイプライン・バッファ３２ｅは、データ応答信号４６から値"１"を入力して、後続の回路がデータＤ２を入力して、かつ、次のデータＤ３を出力することができることを認識する。その結果、パイプライン・バッファ３２ｅは、読み出し位置信号５３の値を変更して、次のデータＤ３を信号３４に出力する。一方、後続の回路は、パイプライン・バッファ３２ｅから信号３４に出力された該データＤ３を入力するとともに、データ応答信号４６に値"１"を出力することによって、データＤ３を入力し、かつ、次のデータＤ４を入力することができることをパイプライン・バッファ３２ｅに通知する。
【０１９４】
（タイミングＴ１１以降における動作）
以降も、同様に、パイプライン回路３０によって処理されたデータＤ４〜Ｄ７それぞれは、タイミングＴ１１、Ｔ１３、Ｔ１５、Ｔ１６それぞれにおいて、パイプライン・バッファ３２ｅがデータ応答信号４６から値"１"を入力することにより、パイプライン・バッファ３２ｅから信号３４に出力される。後続の回路は、それらのデータＤ４〜Ｄ７を順次入力する。
【０１９５】
以上、クロックＰ０〜Ｐ５の順に位相がＴｃｙｃずつ遅れた６本のクロック信号（クロックＰ０〜Ｐ５）を使用する場合について、説明した。しかし、本実施形態は、かかる場合に限らず、任意の本数のクロック信号を用いる場合であっても、同様に適用することができる。具体的には、パイプライン回路３０の前段のパイプライン・バッファから後段のパイプライン・バッファに対して、任意の本数のクロック信号のうち、順に、あらかじめ定めた位相ずつ位相が遅れたクロック信号を、それぞれ２つずつ、順に、割り当て、かつ、隣接するパイプライン・バッファ間で、同一位相の１つのクロック信号を共有するように割り当てれば良い。
【０１９６】
（第３の実施形態の効果）
以上に説明したように、本第３の実施形態によるパイプライン回路３０は、クロック周波数を（Ｍ／Ｎ）倍（Ｍは正の整数、ＮはＭよりも大きい正の整数）で規定される有理数倍で分周して低下させる場合において、後続の回路やパイプライン回路を構成する各パイプライン・バッファが、データを入力することができない場合があったとしても、データ応答信号４２ａ〜４２ｄ、４６を用いたフロー制御を行うことによって、データを正常に処理することができる。
【０１９７】
その理由は、本第３の実施形態によるパイプライン回路３０は、前段のパイプライン・バッファから後段のパイプライン・バッファに対して、クロックＰ０〜Ｐ５のうち、あらかじめ定めた位相ずつ位相が遅れた連続する２つのクロックをそれぞれ順に割り当て、かつ、隣接するパイプライン・バッファ間で同一位相の１つのクロック信号を共有するように割り当てているからである。その結果、有理数倍分周してクロック周波数を低下させた場合であっても、フロー制御機能が正常に動作するからである。而して、該フロー制御機能が、適宜、パイプライン動作の停止制御を行うので、データの紛失を回避することができる。
【０１９８】
一方、第１の実施形態や第２の実施形態の場合のように、パイプライン回路を構成する各パイプライン・バッファにそれぞれ単一のクロック信号を割り当てた構成では、仮に、フロー制御機能を付加したとしても、有理数倍分周してクロック周波数を低下させた場合に、フロー制御機能が正常に動作しないという問題がある。この問題は、パイプライン回路において、データ応答信号４２ａ〜４２ｄのように、処理するデータが転送される方向とは逆の信号がある場合、あるデータ応答信号を出力するパイプライン・バッファに割り当てたクロック信号と、該データ応答信号を入力する前段のパイプライン・バッファに割り当てたクロック信号との位相が異なると、前段のパイプライン・バッファは、次段のパイプライン・バッファからの該データ応答信号を入力することができない場合が発生することに、その原因がある。
【０１９９】
例をあげて、この原因をより詳細に説明する。仮に、図９のパイプライン回路３０におけるパイプライン・バッファ３２ｃがすべてクロックＰ２のタイミングのみで動作するものと仮定する。このとき、パイプライン・バッファ３２ｃは、次段のパイプライン・バッファ３２ｄからのデータ応答信号４２ｃをクロックＰ２の立ち上がりのタイミングで入力することになる。
【０２００】
図１１において、例えば、パイプライン・バッファ３２ｄは、クロックＰ３の立ち上がりタイミングの一つである、タイミングＴ５やタイミングＴ６でデータ応答信号４２ｃを出力する。一方、パイプライン・バッファ３２ｄがタイミングＴ５で出力したデータ応答信号４２ｃを、前段のパイプライン・バッファ３２ｃが入力するのは、クロックＰ２の次の立ち上がりのタイミングであるタイミングＴ７である。同様に、パイプライン・バッファ３２ｄがタイミングＴ６で出力したデータ応答信号４２ｃを、前段のパイプライン・バッファ３２ｃが入力するのも、同様に、タイミングＴ７である。
【０２０１】
すわなち、次段のパイプライン・バッファ３２ｄがタイミングＴ５で出力したデータ応答信号４２ｃを、前段のパイプライン・バッファ３２ｃがタイミングＴ７で入力する前に、次段のパイプライン・バッファ３２ｄからは次のデータ応答信号４２ｃがタイミングＴ６で出力されるので、前段のパイプライン・バッファ３２ｃは、次段のパイプライン・バッファ３２ｄがタイミングＴ５で出力したデータ応答信号４２ｃを入力することができない。
【０２０２】
一方、本第３の実施形態によるパイプライン回路３０は、前段のパイプライン・バッファから後段のパイプライン・バッファに対して、クロックＰ０〜Ｐ５のうち、あらかじめ定めた位相ずつ位相が遅れた連続する２つのクロック信号をそれぞれ順に割り当て、かつ、隣接するパイプライン・バッファ間で同一位相の１つのクロック信号を共有するように割り当てることによって、あるデータ応答信号を出力する後段のパイプライン・バッファの入力制御回路５６と、該データ応答信号を入力する前段のパイプライン・バッファの出力制御回路５７とが、同一のクロック信号で動作する。このため、前段のパイプライン・バッファは、次段のパイプライン・バッファからの該データ応答信号を入力できない場合が発生することがないので、有理数倍分周してクロック周波数を低下させた場合であっても、本第３の実施形態のフロー制御機能は正常に動作するという特徴を奏することができる。
【０２０３】
また、フロー制御によってパイプライン動作の停止が発生しない図１１の例においては、前段の回路が出力したデータが、パイプライン回路３０において処理された後、信号３４に出力されるまでに、クロックＦの５サイクル分の時間がかかる（例えば、データＤ０はタイミングＴ０で信号３３を介してパイプライン回路３０に入力され、タイミングＴ５でパイプライン回路３０から信号３４に出力される）。すなわち、パイプライン回路３０のデータ処理のレイテンシは、クロックＦの５サイクルである。
【０２０４】
一方、パイプライン回路３０は、部分回路３１ａ、３１ｂ、３１ｃ、３１ｄの４ステージのパイプライン回路によって構成されていて、データ処理がパイプライン動作により実現されている。そのため、レイテンシが５サイクルであるにも関わらず、クロックＰ０〜Ｐ５の各サイクルごとにデータ処理を行うことができる。すなわち、クロックＦの１０サイクルのうち７サイクルごとにデータ処理を行うことができるので、パイプライン回路３０のデータ処理のスループットは、（７／１０）データ／サイクル（クロックＦの１サイクル当たり（７／１０）のデータを処理することを示す）である。
【０２０５】
すなわち、本第３の実施形態では、フロー制御によってパイプライン動作の停止が発生しない場合には、クロック周波数を（７／１０）倍にした場合、スループットは（７／１０）倍になる一方、レイテンシは１倍のままであり、従来技術のように増大することはない。
【０２０６】
また、フロー制御によってパイプライン動作の停止が発生する図１２の例では、前段の回路が出力したデータが、パイプライン回路３０において処理された後、信号３４に出力されるまでに、最大クロックＦの６サイクル分の時間がかかる（例えば、データＤ２はタイミングＴ２で信号３３を介してパイプライン回路３０に入力され、タイミングＴ８でパイプライン回路３０から信号３４に出力される）。すなわち、パイプライン回路３０のデータ処理のレイテンシは、クロックＦの６サイクルである。これは、パイプライン回路３０がクロックＦの１サイクル分だけ停止したからである。
【０２０７】
一方、スループットについても、パイプライン回路３０がクロックＦの１サイクル分だけ停止した分だけ低下する。具体的には、停止した１サイクルも含めたクロックＦの１１サイクルのうち７サイクルにおいてデータ処理を行ったので、パイプライン回路３０のデータ処理のスループットは、（７／１１）データ／サイクル（クロックＦの１サイクル当たり（７／１１）のデータを処理することを示す）である。
【０２０８】
より一般的には、本第３の実施形態によると、フロー制御によってパイプライン動作が停止しない場合、周波数を（Ｍ／Ｎ）倍（Ｍは正の整数、ＮはＭより大きい正の整数）にすると、スループットは（Ｍ／Ｎ）倍になる。一方、レイテンシは１倍すなわち増大することはない。また、フロー制御によってパイプライン動作がＳサイクル（Ｓは正整数）停止した場合、周波数を（Ｍ／Ｎ）倍（Ｍは正の整数、ＮはＭより大きい正の整数）にすると、スループットは｛Ｍ／（Ｎ＋Ｓ）｝倍になる。一方、レイテンシはＳサイクルだけしか増加しない。
【０２０９】
このため、スループットが必要性能に十分足りている場合、処理レイテンシを増大させることなく、クロック周波数を（Ｍ／Ｎ）倍で規定される任意の有理数倍で柔軟に低下させることができるので、パイプライン回路３０の消費電力を低減することができるという効果が得られる。また、クロック周波数を低下させても、処理レイテンシが増大しないか、あるいは、パイプラインが停止した分だけしか増大しないので、パイプライン回路３０の処理結果を後続の処理で使用する場合でも、処理全体のスループットが低下しないという効果が得られる。
【０２１０】
以上、本発明の好適実施例の構成を説明した。しかし、斯かる実施例は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。例えば、本発明の実施態様は、課題を解決するための手段における構成（１）及び（６）に加え、次のような構成として表現できる。下記（２）−（５）及び（７）−（８）なる番号は、請求項の項番号にそれぞれ対応している。
（２）前記Ｐ本のクロック信号は、（Ｍ／Ｎ）倍（Ｍは正整数、ＮはＭより大きい正整数）で規定された分周比に基づいて、高速クロック信号の連続するＮ個のクロックパルスのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクすることにより、当該高速クロック信号を（Ｍ／Ｎ）分周して生成したクロック信号であって、前記Ｐ本のクロック信号は、前記第１のクロック信号から第Ｐのクロック信号の順に、前記高速クロック信号のサイクル時間に等しい時間ずつ位相が遅い上記（１）のパイプライン回路。
（３）隣接する２つのパイプライン・バッファのうち、後段のパイプライン・バッファが出力し、前段のパイプライン・バッファが入力する信号について、前記後段のパイプライン・バッファが備える前記信号を出力する回路と、前記前段のパイプライン・バッファが備える前記信号を入力する回路とは、同一のクロック信号で動作する上記（１）または（２）のパイプライン回路。
（４）パイプライン回路を搭載する半導体装置において、当該パイプライン回路として、上記（１）ないし（３）のいずれかのパイプライン回路を搭載する半導体装置。
（５）当該半導体装置が、多数のイベントをリアルタイムに処理する通信用サーバ装置である上記（４）の半導体装置。
（７）前記Ｐ本のクロック信号は、（Ｍ／Ｎ）倍（Ｍは正整数、ＮはＭより大きい正整数）で規定された分周比に基づいて、高速クロック信号の連続するＮ個のクロックパルスのうち、（Ｎ−Ｍ）個分のクロックパルスをマスクすることにより、当該高速クロック信号を（Ｍ／Ｎ）分周して生成したクロック信号であって、前記Ｐ本のクロック信号は、前記第１のクロック信号から第Ｐのクロック信号の順に、前記高速クロック信号のサイクル時間に等しい時間ずつ位相が遅い上記（６）のパイプライン制御方法。
（８）隣接する２つのパイプライン・バッファのうち、後段のパイプライン・バッファが出力し、前段のパイプライン・バッファが入力する信号について、前記後段のパイプライン・バッファが備える前記信号を出力する回路と、前記前段のパイプライン・バッファが備える前記信号を入力する回路とは、同一のクロック信号で動作する上記（６）または（７）のパイプライン制御方法。
【０２１１】
上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。）
【０２１２】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０２１３】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２１４】
この出願は、２００９年７月８日に出願された日本出願特願２００９−１６１８１３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０２１５】
本発明は、パイプライン回路、半導体装置およびパイプライン制御方法に関し、パイプライン回路を搭載した半導体装置の制御回路および制御方法に利用することができる。
【符号の説明】
【０２１６】
１０  パイプライン回路
１１ａ、１１ｂ、１１ｃ、１１ｄ  部分回路
１２ａ、１２ｂ、１２ｃ、１２ｄ、１２ｅ  パイプライン・レジスタ
１３、１４  信号
２０  パイプライン回路
２１ａ、２１ｂ、２１ｃ、２１ｄ  部分回路
２２ａ、２２ｂ、２２ｃ、２２ｄ、２２ｅ  パイプライン・レジスタ
２３、２４  信号
２５  マスク制御回路
２６ａ、２６ｂ、２６ｃ、２６ｄ、２６ｅ、２６ｆ  マスク信号
２７ａ、２７ｂ、２７ｃ、２７ｄ、２７ｅ、２７ｆ  マスク回路
２８  クロック信号分周回路
３０  パイプライン回路
３１ａ、３１ｂ、３１ｃ、３１ｄ  部分回路
３２ａ、３２ｂ、３２ｃ、３２ｄ、３２ｅ  パイプライン・バッファ
３３、３４  信号
３８ａ、３８ｂ、３８ｃ、３８ｄ  信号
４１ａ、４１ｂ、４１ｃ、４１ｄ  データ要求信号
４２ａ、４２ｂ、４２ｃ、４２ｄ  データ応答信号
４３、４４  データ要求信号
４５、４６  データ応答信号
５１  入力制御信号
５２  書き込み位置信号
５３  読み出し位置信号
５５  データバッファ
５６  入力制御回路
５７  出力制御回路
５８  セレクタ
６１  カウンタ
６２  テーブル回路
６３  カウント値
６４  テーブルデータ
６５  シフトレジスタ
６９  マスクタイミング信号
１００  パイプライン回路
１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅ  パイプライン・レジスタ
１１１ａ、１１１ｂ、１１１ｃ、１１１ｄ  部分回路
１１３  信号
１１４  信号
Ｆ  クロック
【図１】
2011004532.tif 000003
【図２】
2011004532.tif 000004
【図３】
2011004532.tif 000005
【図４】
2011004532.tif 000006
【図５】
2011004532.tif 000007
【図６】
2011004532.tif 000008
【図７】
2011004532.tif 000009
【図８】
2011004532.tif 000010
【図９】
2011004532.tif 000011
【図１０】
2011004532.tif 000012
【図１１】
2011004532.tif 000013
【図１２】
2011004532.tif 000014
【図１３】
2011004532.tif 000015
【図１４】
2011004532.tif 000016
【図１５】
2011004532.tif 000017
【国際調査報告】
2011004532.tif 000018
2011004532.tif 000019