(57)【要約】【課題】  パイプラインプロセスステージの制御システム及び制御方法を提供する。【解決手段】  本発明の汎用パイプラインの一実施の形態は、複数のステージと、複数の所定の遅延を制御するパイプラインタイミングコントローラとを備え、このパイプラインでは、所定の遅延の１つが満了すると、パイプラインタイミングコントローラが、複数のステージのうちの関連したステージ内の少なくとも１つのプロセスを起動する制御信号を送信する。
2006505060.tif 000002
【特許請求の範囲】
【請求項１】
複数のステージと、
複数の所定の遅延を制御するパイプラインタイミングコントローラであって、該所定の遅延の１つが満了すると、該パイプラインタイミングコントローラは、制御信号を送信して、前記複数のステージのうちの関連したステージ内で少なくとも１つのプロセスを起動する、パイプラインタイミングコントローラと、
を備える、汎用パイプライン。
【請求項２】
前記制御信号は、前記パイプラインのステージの初期化、計算の開始、および終了化の少なくとも１つを制御する、
請求項１に記載の汎用パイプライン。
【請求項３】
第１の所定の遅延が、前記パイプラインの第１のステージが計算を開始する前の時間量を表す、
請求項１に記載の汎用パイプライン。
【請求項４】
前記パイプラインタイミングコントローラは、制御信号を初期化ブロックに送信し、該初期化ブロックは、前記複数のステージの少なくとも１つのステージと通信する、
請求項１に記載の汎用パイプライン。
【請求項５】
前記パイプラインタイミングコントローラは、制御信号を初期化ブロックに送信し、該初期化ブロックは、第２の制御信号を前記複数のステージの少なくとも１つのステージに送信し、該ステージは、第３の制御信号を終了化ブロックに送信する、
請求項１に記載の汎用パイプライン。
【請求項６】
前記パイプラインタイミングコントローラは複数のカウンタを含み、各カウンタは所定の遅延で指定され、該指定された所定の遅延の満了時に、前記カウンタは制御信号を生成する、
請求項１に記載の汎用パイプライン。
【請求項７】
前記第１の所定の遅延を有する第１のカウンタが、第１の制御信号を初期化ブロックに提供し、第２の所定の遅延を有する第２のカウンタが、第２の制御信号を前記複数のステージの少なくとも１つのステージに提供する、
請求項６に記載の汎用パイプライン。
【請求項８】
前記第１の所定の遅延は、データの初期化の開始前に経過する必要のある時間量を表し、前記第２の所定の遅延は、前記複数のステージの少なくとも１つのステージにおけるデータの処理の開始前に経過する必要のある時間量を表す、
請求項７に記載の汎用パイプライン。
【請求項９】
前記第１の所定の遅延を有する第１のカウンタが、第１の制御信号を初期化ブロックに提供し、第２の所定の遅延を有する第２のカウンタが、第２の制御信号を前記複数のステージの１つのステージに提供し、第３の所定の遅延を有する第３のカウンタが、第３の制御信号を終了化ブロックに提供する、
請求項６に記載の汎用パイプライン。
【請求項１０】
前記カウンタは自己初期化カウンタである、請求項６に記載の汎用パイプライン。
【請求項１１】
複数の構成コントローラをさらに含み、該複数の構成コントローラのそれぞれは、前記複数のステージの少なくとも１つのステージを構成する、請求項１に記載の汎用パイプライン。
【請求項１２】
前記タイミングコントローラは、前記パイプラインの異なるステージの複数のタスクを同時に制御するように構成される、請求項１に記載の汎用パイプライン。
【請求項１３】
前記タイミングコントローラは、前記パイプラインの同じステージの初期化、計算、および終了化の少なくとも１つにおいて、複数のタスクを同時に制御するように構成される、請求項１に記載の汎用パイプライン。
【請求項１４】
複数のパイプラインステージを通るデータの進行を制御する方法であって、
前記複数のパイプラインステージの各ステージのタイミング特性を事前に決定するステップと、
前記複数のパイプラインステージの各ステージの前記事前に決定されたタイミング特性によって特徴付けられた複数の制御信号でタイミングコントローラを設計するステップと、
前記複数の制御信号を前記複数のパイプラインステージに電気的に接続するステップと、
前記複数のパイプラインステージを通るデータの進行をスケジューリングするように、前記複数の制御信号のそれぞれ１つを用いて前記複数のパイプラインステージの各ステージに信号を送るステップと、
を含む方法。
【請求項１５】
前記複数のパイプラインステージの少なくとも１つのステージによって使用される初期化データを提供すること、
をさらに含む、請求項１４に記載の複数のパイプラインステージを通るデータの進行を制御する方法。
【請求項１６】
前記複数のパイプラインステージの少なくとも１つのステージによって生成された終了化データを受信すること、
をさらに含む、請求項１４に記載の複数のパイプラインステージを通るデータの進行を制御する方法。
【請求項１７】
前記タイミングコントローラを複数のカウンタとして設計することにおいて、各カウンタには、前記複数のパイプラインステージの各ステージの前記タイミング特性を表す所定のカウントが割り当てられる、
請求項１４に記載の複数のパイプラインステージを通るデータの進行を制御する方法。
【請求項１８】
信号を送る前記ステップは、前記複数のパイプラインステージの個々のパイプラインステージによって実行される処理における遅延を導入するのに使用される、
請求項１４に記載の複数のパイプラインステージを通るデータの進行を制御する方法。
【請求項１９】
前記遅延は、各パイプラインステージが計算を開始する前の時間量を表す、
請求項１８に記載の複数のパイプラインステージを通るデータの進行を制御する方法。
【請求項２０】
信号を送る前記ステップは、前記複数のパイプラインステージの個々の各ステージに制御信号を送信するパイプラインタイミングコントローラによって実行される、
請求項１４に記載の複数のパイプラインステージを通るデータの進行を制御する方法。
【請求項２１】
前記複数のパイプラインステージの少なくとも１つのステージの入力データを初期化すること、および
前記複数のパイプラインステージの少なくとも１つのステージからの出力データを終了化すること、
をさらに含む、請求項１４に記載の複数のパイプラインステージを通るデータの進行を制御する方法。
【請求項２２】
入力データを初期化する前記ステップに信号を送ること、および
出力データを終了化する前記ステップに信号を送ること、
をさらに含む、請求項２１に記載の複数のパイプラインステージを通るデータの進行を制御する方法。
【請求項２３】
複数のパイプラインステージを通るデータの進行を制御する方法であって、
前記複数のパイプラインステージの各ステージのタイミング特性を事前に決定するステップと、
前記複数のステージのうちの関連したステージ内のプロセスを起動するステップと、
を含み、
前記プロセスの起動は、第１の所定の遅延の満了に応答して行われる、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［発明の分野］
本発明は、コンピュータシステムによって実行されるオペレーションに関し、詳細には、パイプラインステージの制御に関する。
【０００２】
［関連出願］
この出願は、同時に出願され同時係属中の「Method and System for the Design of Pipelines of Processors」という発明の名称の特許出願第［１００１１０５５７−１号］に関連する。この出願の開示は、参照により本明細書に援用される。
【背景技術】
【０００３】
［背景］
現代の組み込み型システムの計算の大きなクラスは、データストリームに対する変換シーケンスとして表すことができる。この変換シーケンスは、外部源から入力データを受け取る少なくとも１つの開始ステージと、データを外部の宛先に出力する少なくとも１つの終了ステージと、少なくとも１つの先行ステージからデータを受け取って、特定の計算または変換を実行し、その結果を少なくとも１つの後続ステージに転送する或る個数の中間ステージとを有するプロセスステージの非循環ネットワークによって実行することができる。このプロセスステージの非循環ネットワークは、「一般パイプライン（general pipeline）」（または単に「パイプライン」）としてこの技術分野では知られている。「一般パイプライン」の簡単な例は、処理ステージの線形シーケンスから成るリニアパイプラインの一般概念である。このリニアパイプラインでは、パイプラインの第１ステージが入力データを受け取り、パイプラインの各後続ステージが先行ステージからデータを受け取って、データに対して特定の計算または変換を実行し、その結果を次々にパイプラインの次のステージへ渡すことができ、パイプラインの最終ステージの場合には、データを出力することができる。所与の１組の入力データに対するこの全体的な計算シーケンスは「タスク」と呼ばれ、その入力データについてのパイプラインの各ステージ内の計算は「サブタスク」と呼ばれる。パイプラインのステージ間で渡されるデータに加えて、制御情報も、パイプラインのさまざまなステージが自身の機能を適切な時刻に実行することを確保するのに必要な場合がある。パイプラインステージは、例えばレジスタといったバッファにより分離することができる。このバッファは、パイプラインのさまざまなステージ間でデータを記憶するのに使用することができる。
【０００４】
パイプラインの各ステージは、一般に、その結果を後続ステージに渡す前に、数サイクルの間計算を行うことができる。パイプラインのさまざまなステージを通るデータのフローを制御するには、クロック信号を使用することができる。パイプラインの隣接したステージ間の通信も、各パイプラインステージを通るデータのフローを制御するのに使用することができる。このステージ間通信は、通常、ハンドシェークと呼ばれる。この形のパイプライン制御では、先行ステージからの出力データが、後続ステージの入力に利用可能になると、制御メッセージがステージ間で送信されて、ステージ間のアクティビティを調整することができる。換言すると、先行する「プロデューサ」ステージからのデータが利用可能になると、そのデータはレジスタまたはバッファに書き込まれ、そのデータの使用が利用可能であることを示す独立した制御信号を後続の「コンシューマ」ステージに送信することができる。コンシューマステージは、レジスタまたは入力バッファからのデータの読み出しを終了すると、レジスタまたはバッファからデータを読み出したことをプロデューサステージに信号で伝えることもできる。プロデューサステージは、すべてのコンシューマステージからの通信を受信すると、まだ読み出されていないデータを不注意に上書きすることなく、その後のサイクルで使用される新たなデータをレジスタまたはバッファに書き込むことができる。
【０００５】
パイプラインにおいて情報を処理するのに必要な時間を削減する一方法は、プロデューサステージとコンシューマステージとの間のデータ処理をオーバーラップさせることである。データ処理をオーバーラップさせる一方法は、さまざまなステージ間でデータを記憶するのに利用可能なレジスタの個数またはバッファのサイズを２倍にすることに依拠することができる。さまざまなステージ間のレジスタの個数またはバッファのサイズを２倍にすることによって、プロデューサステージは、読み出し前に第１のバッファまたはレジスタに書き込みを行うことができる一方、コンシューマステージは、前のタスクからのデータを第２のバッファから同時に読み出す。このようにして、プロデューサステージは、コンシューマステージが準備できていない場合に遅延することがなく、その結果、情報がパイプラインを通過する全時間が削減される。
【０００６】
パイプラインのステージは、入力データに加えて、計算を実行するための他の情報へのアクセスを必要とすることがある。例えば、パイプラインステージは、所定の状態への初期化もしくは構成、または、そのステージでの計算もしくは変換の前もしくは最中に外部メモリ位置に記憶されたデータへアクセスを必要とすることがある。
【０００７】
【特許文献１】米国特許第６１５４８２９号
【非特許文献１】PANNEERSELVAM G: "WHY DYNAMIC PIPELINES FOR SYSTOLIC SYSTEMS?" VLSI AND COMPUTERS. HAMBURG, MAY 11 - 15, 1987, PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON COMPUTER TECHNOLOGY, SYSTEMS AND APPLICATIONS. (COMPEURO), WASHINGTON, IEEE COMP. SOC. PRESS, US, vol. CONF. 1, 11 May 1987 (1987-05-11), pages 689-694. XP000120566 page 689, column 2 page 690, column 1
【非特許文献２】VALERO-GARCIA M ET AL: "A METHOD FOR IMPLEMENTATION OF ONE-DIMENSIONAL SYSTOLIC ALGORITHMS WITH DATA CONTRAFLOW USING PIPELINED FUNCTIONAL UNITS" JOURNAL OF VLSI SIGNAL PROCESSING SYSTEMS FOR SIGNAL, IMAGE, AND VIDEO TECHNOLOGY KLUWER ACADEMIC PUBLISHERS, DORDRECHT, NL, vol. 4, no. 1, 1 February 1992 (1992-02-01), pages 7-25, XP000263429 ISSN: 0922-5773 the whole document
【発明の開示】
【課題を解決するための手段】
【０００８】
本発明の一実施の形態は、複数のステージと、複数の所定の遅延を制御するパイプラインタイミングコントローラであって、該所定の遅延の１つが満了すると、該パイプラインタイミングコントローラは、制御信号を送信して、前記複数のステージのうちの関連したステージ内で少なくとも１つのプロセスを起動する、パイプラインタイミングコントローラと、を備える、汎用パイプラインを含む。
【発明を実施するための最良の形態】
【０００９】
［詳細な説明］
図１は、シストリックアレイ（ＳＡ）１０１〜１０５を含んだ５つのステージを含む汎用パイプライン（generalized pipeline）の一実施の形態を示している。バッファ１０６はＳＡ１０１とＳＡ１０２との間に接続されている。同様に、バッファ１０７はＳＡ１０２とＳＡ１０３との間に接続され、バッファ１０８はＳＡ１０３とＳＡ１０４との間に接続され、バッファ１０９はＳＡ１０４とＳＡ１０５との間に接続されている。バッファをステージ間に示しているが、他の構成では、１つまたは２つ以上のバッファを省略することができることに留意されたい。あるいは、２つ以上のバッファをステージ間に使用することもできる。あるいは、２つ以上のステージが、同じバッファに書き込みを行うこともできるし、同じバッファから読み出しを行うこともできる。ＳＡは、特定の順序で実行する必要がある特定のステージサブタスクを実行する１群のプロセッサである。図１は、各ステージがＳＡを含んだ、順に接続されたパイプラインの５つのステージを示しているが、この特定の構成は、本発明と一致する一実施の形態を例示する目的で選択されたものにすぎず、汎用パイプラインを形成するステージの個数およびタイプの一例にすぎないことに留意されたい。本発明は、汎用パイプラインと一致するあらゆる方法で接続されたあらゆるタイプのステージを含むあらゆる個数のステージに適用可能である。
【００１０】
また、図１は、別々のデータパスおよび制御パスも含む。データパスは、ＳＡ１０１に適用される入力データ１１０、バッファ１０６に接続された入力データ１１１、ＳＡ１０２に接続された入力データ１１２、バッファ１０７に接続された入力データ１１３、ＳＡ１０３に接続された入力データ１１４、バッファ１０８に接続された入力データ１１５、ＳＡ１０４に接続された入力データ１１６、バッファ１０９に接続された入力データ１１７、Ａ１０５に接続された入力データ１１８、および出力データ１１９であるＳＡ１０５の出力から開始する。また、データは、ホストインターフェース１４６から初期化（ＩＮＩＴ）ブロック１２０〜１２４のそれぞれにも送信される。これらのデータパスは破線で示されている。
【００１１】
さまざまなパイプラインステージを通るデータフローに加えて、パイプラインのさまざまなステージがそれらステージに割り当てられたサブタスクを適切な時刻に実行することを確保するために、制御情報も存在することがある。ＩＮＩＴブロック１２０〜１２４は、それぞれ、ＳＡ１０１〜１０５内で使用されるデータを初期化するのに使用される。この初期化データは、パイプラインのさまざまなステージが、そのステージに入力されたデータを用いて自身の計算を実行する前、または、それ以外に自身の特定のサブタスクを実行する前に利用可能でなければならない。また、ＩＮＩＴブロック１２０〜１２４は、関連したＳＡのレジスタにデータを書き込むのに使用することもできる。ＦＩＮＡＬ（最終）ブロック１２５〜１２９は、終了化ブロックであり、それぞれ、ステージＳＡ１０１〜１０５から結果を受け取り、それによって、各ステージの出力を、パイプラインにおいて次のタスクに利用可能にするために解放する。ＦＩＮＡＬブロック１２５〜１２９およびＩＮＩＴブロック１２０〜１２４は、ステージに特有のものであり、パイプラインの機能に応じて存在することもあるし、存在しないこともあることに留意されたい。ＦＩＮＡＬブロック１２５〜１２９は、関連したＳＡに位置するレジスタからデータを読み出すのに使用することができる。これらのブロックが存在する場合、これらのブロックの初期化制御情報および同期が必要とされることがある。
【００１２】
図１に示すように、パイプラインタイミングコントローラ１３０は、接続１３１〜１３５を介してそれぞれＩＮＩＴブロック１２０〜１２４へタイミング信号を供給することができる。これらのタイミング信号は、ＩＮＩＴブロックを初期化するのに使用できる一方、ＩＮＩＴブロック１２０〜１２４は、それぞれＳＡ１０１〜１０５を初期化するのに使用される。ＩＮＩＴブロックの初期化は、タイミングコントローラからの開始信号の送信を含む一方、ＳＡの初期化は、サブタスクの実行に必要な制御データを用いてＳＡの内部レジスタまたはメモリを初期化すること、および、ＳＡのサブタスクを適切な時刻に開始することを含むことに留意されたい。
【００１３】
タイミングコントローラ１３０が接続１３１を介してＩＮＩＴブロック１２０にタイミング信号を供給すると、ＩＮＩＴブロック１２０は、接続１３６を介して、ＳＡ１０１が実行するサブタスクを初期化する。サブタスク、計算、または変換がＳＡ１０１で行われると、ＳＡ１０１は、接続１４１を介してＦＩＮＡＬブロック１２５を初期化する。同様に、ＩＮＩＴブロック１２１は、接続１３７を介して、ＳＡ１０２で実行されるプロセスを初期化し、ＳＡ１０２は、接続１４２を介してＦＩＮＡＬブロック１２６を初期化する。ＳＡ１０３で実行されるプロセスは、ＩＮＩＴブロック１２２を介し、接続１３８を介して初期化され、ＳＡ１０３は、接続１４３を介してＦＩＮＡＬブロック１２７を初期化する。ＩＮＩＴブロック１２３は、接続１３９を介してＳＡ１０４を初期化し、ＳＡ１０４は、接続１４４を介してＦＩＮＡＬブロック１２８にデータを記憶する。ＩＮＩＴブロック１２４は、ＳＡ１０５との接続１４０を介してＳＡ１０５を初期化し、ＳＡ１０５は、接続１４５を介してＦＩＮＡＬブロック１２９にデータを記憶する。
【００１４】
図１は、本発明の一実施の形態を示し、他の実施の形態も可能であることに留意されたい。図５に示すような一構成では、タイミングコントローラ１３０は、ＩＮＩＴブロック１２０〜１２４、ＳＡ１０１〜１０５、およびＦＩＮＡＬブロック１２５〜１２９に別々のタイミング信号を提供することができる。この構成では、パイプラインタイミングコントローラ１３０は、パイプラインの５つのステージのそれぞれについて、ＩＮＩＴブロック、パイプラインステージ、およびＦＩＮＡＬブロックの初期化を直接制御する。また、図１に示す実施の形態では、ＩＮＩＴブロック、ＳＡ、およびＦＩＮＡＬブロックの計算は逐次化されていることに留意されたい。一方、図５に示す実施の形態では、これらの計算をオーバーラップさせることができ、ＳＡが現在のタスクに対して処理を行い、かつ、ＦＩＮＡＬブロックが前のタスクに対して処理を行っている間、ＩＮＩＴブロックは次のタスクに対して処理を行っていることもある。さらに別の実施の形態では、同じステージに複数のカウンタを割り当てて、そのステージで異なるサブタスクを制御することができる。
【００１５】
バッファ１０６〜１０９は、パイプラインのさまざまなステージ間における情報用のラッチまたは保持エリアである。通常、バッファは、厳しいサイズ要件および厳しいアクセスパターンを有する。このことは、バッファへの非常に厳しいデータ移動制御およびバッファからの非常に厳しいデータ読み出し制御を含む。プロデューサステージは、コンシューマステージが処理を開始するのに過不足のないデータを生成することができ、コンシューマステージが消費するデータを生成し続けることができる。このように、タスク全体の完了に必要な全時間を削減すると同時に、バッファを小さくすることが必要とされる。この時間の削減は、コンシューマステージが限られたデータを使用して、プロデューサステージと並列に動作した結果である。逆に、ＦＩＮＡＬブロック１２５〜１２９は、パイプラインプロセスの各ステージの完了後にブックキーピング（bookkeeping）データを含むことができる。ブックキーピングデータは、後に使用される情報をパイプラインから抽出するのに使用することができる。
【００１６】
ホストインターフェース（ホストＩＦ）ブロック１４６は、パイプラインとコンピュータシステムの他の回路との間のインターフェースである。ホストＩＦブロック１４６は、パイプラインプロセスが使用する、コンピュータメモリまたはレジスタファイルからの情報にアクセスすることができる。また、ホストＩＦブロック１４６は、コンピュータシステム内の他のプロセスから新たなタスクの開始信号を受け取ることもでき、この信号を接続１４７を介してタイミングコントローラ１３０に渡すこともできる。タイミングコントローラ１３０は、ホストＩＦブロック１４６から受信した開始信号を使用して、適切な信号を接続１３１〜１３５を介してそれぞれＩＮＩＴブロック１２０〜１２４に提供する。パイプライン１００の外部のコンピュータプロセスは、ホストインターフェースまたはパイプライン出力１１９を通じて、パイプライン１００のさまざまなステージからの情報にアクセスすることができる。
【００１７】
一実施の形態では、ホストＩＦブロック１４６は、制御データ（タスクフレームとしても知られている）の位置を示すポインタまたはメモリ位置の他の表示を第１のＩＮＩＴブロック１２０に渡すことができる。タスクフレームは、パイプラインのさまざまなステージを通じた或る特定のタスクの実行を制御するのに必要なすべての情報を含む。パイプライン１００の異なるステージは、タスクフレームの異なる部分を必要とすることがある。さまざまなＩＮＩＴブロック１２０〜１２４は、ホストＩＦブロック１４６が供給したポインタを使用してメモリトランザクションを実行し、各ＳＡが使用する、タスクフレームからの制御データにアクセスすることができる。これらのトランザクションのタイミングは、各ＩＮＩＴブロックを開始するタイミングコントローラによって慎重に制御される。ホストＩＦブロック１４６は、ホストプロセッサからのコマンドを復号する。このコマンドは、パイプラインで新たなタスクの処理を開始する実行コマンドを含む。リンク１４７〜１５５を含むチェーンリンクは、ＩＮＩＴブロックおよびＦＩＮＡＬブロックのそれぞれをリンクし、実行されるタスクと並列に、タスクフレームベースアドレスをパイプラインステージを通じて伝搬するのに使用される。このチェーンリンクによって、多数のタスクが同時にパイプラインに存在することが可能になり、対応するベースアドレスと同期状態を維持することが可能になる。
【００１８】
パイプラインタイミングコントローラ１３０は、受信パルス１４７を複数のパルスに変換する。好ましい実施の形態では、このパルスの個数は、ステージ数に１を加えたものに等しい。これらのパルスは、ステージごとに変化し得る複数のクロックサイクル分、遅延される。一実施の形態では、パイプラインステージのそれぞれにつき、１つのパルスが生成され、対応する初期化ユニットを適切な時刻で開始するために遅延される。初期化ユニットは、次に、必要な値がパイプラインステージに確実にロードされるようにし、次いで、パイプラインステージに実行コマンドを発行する。現在のタスクの計算終了時には、最終パルスが生成され、ホストプロセッサに送信される通知信号として使用することができる。
【００１９】
図２は、初期化（ＩＮＩＴ）ブロックの一実施の形態を示している。ＩＮＩＴブロックのこの実施の形態の全ジョブは、外部メモリインターフェース２０１からのタスクフレーム制御データにアクセスしてこのデータを受信し、この情報をＳＡインターフェースに渡すことである。ＩＮＩＴブロック１２０は、タスクフレームからのデータを必要とし、そのデータを適切なＳＡに戻して記憶する。また、初期化データが適切なＳＡに通信される前に、そのデータを処理するのにＩＮＩＴブロックを使用できることにも留意されたい。また、ＩＮＩＴブロックは、さらに複雑な処理を実行するプロセッサであってもよい。
【００２０】
一実施の形態では、ホストインターフェースブロック１４６は、新たなタスクの開始時に、タスクフレームベースアドレスを提供して、第１のＩＮＩＴブロックのタスクフレームベースレジスタ２０４（ＴＦベース）を初期化する。ロードユニット２０２は、外部メモリにおいてタスクフレームベースアドレスから一定のオフセットにある制御データをホストインターフェースを介してフェッチする。ロードユニット２０２からのデータは、ストアユニット２０３に転送され、ストアユニット２０３は、フェッチされたデータを、関連したＳＡに記憶し、その関連したＳＡを制御する。ロードユニット２０２およびストアユニット２０３は、データのこの転送を制御するロード／ストア（Ｌ／Ｓ）タイミング制御ロジック２０５によって制御される。ＴＦベース２０４は、現在のタスクに関連した正しいタスクフレームを指し示すのに使用される。好ましい実施の形態では、パイプラインの異なるステージで実行中の複数のタスクを同時にサポートするために、タスクフレームベースメモリアドレスもステージごとにパイプライン化される。Ｌ／Ｓ制御２０５は、ホストインターフェースからＳＡインターフェースへのロードの時間を調節する信号を提供する。Ｌ／Ｓ制御への開始入力は、タイミングコントローラから得られる。
【００２１】
図３は、５つのステージを有するパイプラインの全プロセスのタイミングの特定の例を示している。タイミングバー分類３００は、パイプラインのさまざまなステージで実行されるサブタスクの相対的なタイミング要件を示している。縦のバー３０１、３０２、３０３、３０４、および３０５は、図１のパイプライン１００のさまざまなステージの各サブタスクに必要なタイミング要件を示している。これらのさまざまなパイプラインステージには、通常、一部がオーバーラップした範囲が少なからずあり、それぞれの範囲は、複数のクロックサイクルに及び、多くの場合、多数のクロックサイクルに及ぶことに留意されたい。各ステージは、異なったタイミング考慮事項を有することがある。
【００２２】
通常、各バーは、ステージ初期化、処理、および最終的なステージクリーンアップの実行中の時間の３つのフェーズのステージオペレーションを表す。したがって、縦のタイミングバー３０１は、ＩＮＩＴブロック時間３０６、ＳＡ時間３０７、およびＦＩＮＡＬブロック時間３０８の３つの部分から構成される。このバーのさまざまなセクションの縦方向部分の長さは、含まれるさまざまなプロセスのそれぞれに必要な時間量を示す。図３の部分３０９は、パイプラインのさまざまなステージの変位を表す。この変位は、実際のサブタスクの計算が第１のステージで開始する時と、実際のサブタスクの計算が他の後続ステージで開始する時との間の時間遅延である。例えば、変位３１０は、ＳＡ１０１の実際のサブタスクの計算の開始と、同じタスクにおけるＳＡ１０２の実際のサブタスクの計算の開始との間で経過する時間量を示している。同様に、変位３１１は、第１のステージ１０１の開始から第３のステージ１０３の開始に関連した遅延を示し、変位３１２は、第１のステージ１０１の開始から第４のステージ１０４の開始に関連した遅延を示し、変位３１３は、第１のステージ１０１の開始から第５のステージ１０５の開始に関連した遅延を示している。２つ以上のステージが、同じ変位で計算を開始することもできる。これらの所定の固定されたタイミング変位は、パイプラインのさまざまなステージで同じタスクに対して実行されているさまざまな計算間の相対的なタイミングを示している。これらの遅延によって、パイプラインプロセスの各ステージは、適切な時刻で処理を開始することが保証され、例えば、適切な入力データおよび資源が利用可能になるとすぐに、処理を開始することが保証される。これらの遅延は、ステージの処理開始時刻間の時間差として計測されているが、この代わりに、ＩＮＩＴブロックの開始からの遅延、ＩＮＩＴブロックの終了からの遅延、そのステージの開始からの遅延、そのステージの終了からの遅延、ＦＩＮＡＬブロックの開始からの遅延、ＦＩＮＡＬブロックの終了からの遅延、またはこれらの期間の或る組み合わせからの遅延として表すこともできることに留意されたい。
【００２３】
一実施の形態では、タイミング変位によって、例えば、第２のステージが自身のプロセスを開始する前に、第１のステージの結果データが仲介バッファに存在することを必要とする場合に、この第２のステージの開始前に、第１のステージが自身の計算を完了し、その結果を仲介バッファに書き込むことが保証される。第２のステージの開始を遅延させて、第１のステージが自身の処理を完了してデータを記憶するのに必要な時間を考慮することにより、ステージ２が自身に必要な入力を有することが保証される。このタイミング方法論によって、パイプラインの各ステージは、パイプラインの後続の従属したステージが開始される前に完了することが保証される。一方、この機構は、各ステージが先行ステージのサブタスクの実際の完了時にのみオペレーションを起動する逐次方式で動作するのではなく、図３に示すように、ステージのオペレーションがオーバーラップできるようにステージを順序付ける可能性を提供する。ステージのオーバーラップを許容できること、ステージを事前に初期化でき、それによって、ステージの初期化がそのステージにおける先行するサブタスクの実行とオーバーラップされること、および、ステージのタイミング要件を、データ通信で考慮すべき事項以外の考慮すべき事項によって駆動できることに留意されたい。
【００２４】
説明したように、ＳＡが自身の指定されたサブタスクの実行を開始できる前に、適切な初期化ブロックは、その機能を実行しなければならない。したがって、ＩＮＩＴブロックが自身のタスクを実行するのに必要な時間も、タイミング解析に考慮されなければならない。ＩＮＩＴブロックに必要な時間を含める一方法を図３のセクション３１４に示す。本発明のこの実施の形態では、第２のＩＮＩＴブロック１２１の開始を基準として、第１のＩＮＩＴブロック１２０の開始から必要とされる時間遅延が決定され、３１５として例示される。同様に、第１のＩＮＩＴブロック１２０の開始を基準とした第３のＩＮＩＴブロック１２２の開始の遅延が３１６として例示され、第４のＩＮＩＴブロック１０３の開始までの遅延は３１７であり、第５のＩＮＩＴブロック１２４の開始までの遅延は３１８である。例えば、第１のＩＮＩＴブロックが時刻０で開始する場合、第２のＩＮＩＴブロックの開始は１０マイクロ秒だけ遅延させることができ、第３のＩＮＩＴブロックの開始は１５マイクロ秒だけ遅延させることができ、第４のＩＮＩＴブロックの開始は４０マイクロ秒だけ遅延させることができ、第５のＩＮＩＴブロックの開始は３５マイクロ秒だけ遅延させることができる。
【００２５】
これらの時間遅延が決定されると、次第に増加する時間順序でこれらのイベントをトリガするように一連のカウンタを構成することができる。この例では、これらのイベントは３０１、３０２、３０３、３０５、３０４となる。同じ時間遅延で発生するイベントは同時にトリガされる。この一連の各カウンタは、連続したイベント間の時間差をカウントするように設計される。これらのカウンタは、図１のパイプラインタイミングコントローラ１３０の一部を成す。タイミングコントローラ内部のカウンタを使用することは、単なる本発明の一実施の形態にすぎない。別の実施の形態では、カウンタの代わりに、一連のシフトレジスタを使用して、連続したイベント間の時間遅延をカウントすることができる。別の実施の形態では、慎重に制御された時間間隔で制御信号を放出できるプログラマブルコントローラを使用することができる。
【００２６】
図３から、いくつかのステージの初期化は、他のステージの初期化よりも長い時間を必要とすることがあることに留意されたい。したがって、さまざまな初期化ステージの開始に関連した遅延は、パイプラインのさまざまなステージ内のプロセスの開始に関連した時間遅延と異なることがある。ステージの順序付けは、絶対時間、相対時間、マイクロ秒、またはクロックサイクルを使用して行うことができることに留意されたい。初期化ステージの開始順序も、さまざまなステージ内のプロセスの開始順序と異なることがある。また、初期化カウンタは、ステージの順序とは異なることのある時間順序によってステージオペレーションをトリガすることにも留意されたい。例えば、図３のステージ５は、大きな初期化期間を必要とすることから、ステージ４の前に開始しなければならない。これは、ステージ４の初期化エリア３０４と比較して、ステージ５の初期化エリア３０５が大きいことによって示されている。また、ステージ４および５の相対的な配置によって示すように、ステージ５の初期化は、ステージ４の初期化の前に開始する。また、ステージの時間順序は、回路構成が異なることによって変化し得ることにも留意されたい。
【００２７】
別の実施の形態では、さまざまなＦＩＮＡＬブロックに必要な時間も、さまざまなステージ間の時間遅延を決定する際に考慮することができる。ＩＮＩＴブロック、ＳＡブロック、およびＦＩＮＡＬブロックに関連した時間遅延が決定されると、パイプラインのさまざまなコンポーネントを適切な時刻でトリガするメカニズムを、使用される資源の量を最小にしつつ設計しなければならない。一実施の形態では、ＩＮＩＴイベントはステージの処理をトリガし、ステージの処理はＦＩＮＡＬイベントをトリガする。本発明の他の実施の形態は、他のトリガメカニズムを含むことができる。
【００２８】
パイプラインは、一連のタスクを処理するのに使用されることに留意されたい。パイプラインが現在のタスクを受け付けた時刻から次のタスクを受け付ける準備ができるのに必要な最小時間は、最小タスク間間隔（ＭＩＴＩ（Minimum Inter-Task Interval））と呼ばれることがある。ＭＩＴＩは、外部タスクの連続した起動間に許容される最小間隔の時間である。また、これは、タスク到着レートと呼ばれることもある。タスクはＭＩＴＩで到着することもできるし、より長い間隔で到着することもできる。連続した外部タスクが、ＭＩＴＩに等しい時間量の経過前に到着すると、パイプラインの或るステージは、まだ先行タスクの処理中の場合があるが、次のタスクを実行するようにトリガされる。これは、初期化および終了化がステージ計算とオーバーラップしない場合に、ステージにおけるサブタスクの初期化、ステージ計算、および終了化に要する全時間がＭＩＴＩを超えることができないことを意味する。別の実施の形態では、初期化および終了化が計算とオーバーラップすることが許容される場合に、ステージにおけるサブタスクの初期化、ステージ計算、および終了化の最大のものに要する時間がＭＩＴＩを超えることができない。同様に、タイミングコントローラの各カウンタが制御する時間遅延も、ＭＩＴＩによって制限される。２つの連続したイベント間の遅延が偶然ＭＩＴＩよりも大きくなると、その遅延は複数のイベントに分割され、複数のイベントのそれぞれはＭＩＴＩよりも長くない。その結果、次のタスクがＭＩＴＩサイクルの後に到着すると、対応する一連のカウンタにおける各カウンタは、自身の先行するカウントを完了して、次のタスクの制御の準備をすることができる。
【００２９】
図４は、単一のカウンタがパイプライン１００の各ステージに利用可能であるパイプラインタイミングコントローラ１３０の一実施の形態を示している。この実施の形態では、カウンタ４０１〜４０５は、パイプラインのさまざまなステージの適切なタイミングを確保するのに利用可能である。一実施の形態では、カウンタ４０１のカウント完了信号を、図１のＩＮＩＴブロック１２０の開始信号に接続することができる。同様に、カウンタ４０２、４０３、４０４、および４０５が、それぞれＩＮＩＴブロック１２１、１２２、１２３、および１２４に電気的に接続される。この構成では、パイプラインタイミングコントローラ１３０は、カウンタ４０１〜４０５を通じてパイプラインステージのオペレーションを制御する。例えば、タイミングコントローラは、新たなタスクの開始時にカウンタ４０１を開始する。カウンタ４０１は、その指定されたカウントの完了時に、ＩＮＩＴブロック１２０にそのオペレーションを開始させる信号をＩＮＩＴブロック１２０に送信する。ＩＮＩＴブロック１２０が初期化されると、ＳＡ１０１が自身の必要なオペレーションを受信データ１１０に対して実行できるように、信号がＳＡ１０１に送信される。ＳＡ１０１のオペレーションが完了すると、ＳＡ１０１から受信したデータを記憶することを含むことができるオペレーションを完了させる信号が、ＦＩＮＡＬブロック１２５に送信される。
【００３０】
一方、カウンタ４０１からの完了信号によって、カウンタ４０２も開始する。カウンタ４０２は、その指定されたカウントの完了時に、ＳＡ１０２で使用されるデータの初期化を開始する信号をＩＮＩＴブロック１２１に送信する。一実施の形態では、第１のステージの終了化および第２のステージの初期化を含めて、すべての処理が、第２のステージのＳＡ１０２のオペレーションの開始前に完了することを保証するように、パイプラインタイミングコントローラ１３０のカウンタの値が設定される。一方、ステージのオペレーション、ステージの初期化、または終了化のオーバーラップを含むことができるパイプライン１００を通じて入力データをできるだけ高速に処理することを確保するように、カウンタ４０１〜４０５によって設定された相対的なタイミングを調整することができる。例えば、バッファ１０６がパイプラインプロセスに遅延を導入せず、ＩＮＩＴ１２１に必要とされる初期化が１０マイクロ秒を要する場合、カウンタ４０２は、ＦＩＮＡＬブロック１２５の終了化の完了前に１０マイクロ秒を開始する信号をＩＮＩＴ１２１に送信することができる。
【００３１】
ＩＮＩＴ１２１が指令したプロセスをより早く開始することによって、データは、より高速にパイプライン１００を通じて処理される。また、カウンタ４０１〜４０５は、ステージ計算の部分的なオーバーラップを可能にするように調整できることにも留意されたい。例えば、データがＳＡ１０１から生成された後、バッファ１０６に記憶されるのに６マイクロ秒が必要とされる場合、最初のデータがＳＡ１０１で生成された後、ＳＡ１０２の実際の計算が６マイクロ秒程度で開始するような時刻でＩＮＩＴ１２１が開始するように、カウンタ４０２はＩＮＩＴ１２１に信号を送ることができる。また、カウンタ４０１〜４０５は、複数のイベントを並列に制御するように設計することもできる。例えば、終了化がＦＩＮＡＬブロック１２５で完了する前にデータがバッファ１０６に書き込まれる場合、終了化がＦＩＮＡＬブロック１２５で完了している最中、または、データがバッファ１０６に記憶されている最中に、カウンタ４０２はＩＮＩＴブロック１２１の初期化を開始することができる。
【００３２】
データがパイプラインステージ間をフローするのに必要な時間を事前に規定することによって、カウンタ４０１〜４０５は、データができるだけ高速にパイプラインステージをフローすることを確保する。各カウンタは、初期化用のステージ構成コントローラの開始、ステージの実行の開始、または終了化用のステージ構成コントローラの開始を行うことができる。また、図４のカウンタ４０１〜４０５は、パイプラインの初期化、パイプラインのクリーンアップ、データ可用性、または他のあらゆるタイミング考慮事項を考慮するように構成できることにも留意されたい。ステージのタスクは、順次実行することもできるし、並列に実行することもでき、複数のタスクを同時に制御することもできる。
【００３３】
図５は、パイプラインタイミングコントローラ１３０の代替的な実施の形態を示している。この実施の形態では、カウンタ５０１、５０４、５０７、５１０、および５１３の出力は、それぞれ、ＩＮＩＴブロック１２０〜１２４のオペレーションを起動する当該ＩＮＩＴブロック１２０〜１２４の制御入力に電気的に接続される。カウンタ５０２、５０５、５０８、５１１、および５１４の出力は、それぞれ、ＳＡ１０１〜１０５の制御入力に電気的に接続される。カウンタ５０３、５０６、５０９、５１２、および５１５の出力は、それぞれ、ＦＩＮＡＬブロック１２５〜１２９の制御入力に電気的に接続される。この実施の形態では、ステージのそれぞれの内部の初期化、ステージ計算、および終了化は、独立したカウンタを有し、そのカウンタ値は、ステージの初期化または終了化をステージ計算とオーバーラップさせるように規定することができる。この場合、サブタスクがステージで完了するとすぐに、ステージは次のサブタスクに切り換わることができ、それによって、データは、パイプラインを通じてより高速に処理される。隣接するＳＡエレメント間でバッファも利用可能な場合があることに留意されたい。
【００３４】
図６は、各ステージのＩＮＩＴブロックおよびＦＩＮＡＬブロックがそのステージの一般的な構成コントローラに置き換えられたパイプライン１００の別の実施の形態を示している。この一般的な構成コントローラは、初期化および終了化のステージを構成し、外部世界とステージ計算（ＳＡ）との間で制御データへのアクセスを仲介するものである。前述したように、パイプラインステージは、付加的情報にアクセスすることが必要となる場合がある。付加的データが必要とされる場合、構成コントローラを使用して、外部メモリからステージの内部レジスタにデータをコピーしてステージの初期化を行うことができる。また、構成コントローラは、終了化中、ステージの内部レジスタから外部メモリにデータを移動させるのに使用することもできる。外部メモリへのアクセスまたは記憶を必要とするパイプラインステージごとに個別の構成コントローラが利用可能な場合もあるし、複数のパイプラインステージが外部メモリにアクセスすることを可能にする単一の構成コントローラが使用される場合もある。構成コントローラは、所与のタスクの制御データが記憶されたメモリにおけるタスクフレームブロックの始点を記録する１つまたは２つ以上のベースレジスタを含むことができる。ステージ初期化イベントが起動された時に、或るステージのベースレジスタが先行ステージのベースレジスタの値を自動的にコピーするように、これらのベースレジスタもパイプライン化することができる。構成コントローラは、対応するステージ計算を容易にするために、制御データの初期化および終了化に加えて、事前処理または事後処理を追加して行うこともできる。
【００３５】
図６は、パイプラインタイミングコントローラ１３０のカウンタ４０１〜４０５にそれぞれ電気的に接続された構成コントローラ６０１〜６０５を示している。構成コントローラ６０１〜６０５は、それぞれ、ベースレジスタ６０６〜６１０を含む。これらのベースレジスタは、それぞれ、ＳＡ１０１〜１０５が必要とする情報を収容するメモリアドレスを記憶するのに使用される。外部情報へのアクセスがパイプライン１００のステージによって必要とされる場合、カウンタ４０１等のカウンタを使用して、関連したパイプラインステージが必要な情報にアクセスできることを保証する信号を構成コントローラ６０１に送信することができる。構成コントローラのさまざまな実施の形態は、以下のことを行うことによって外部メモリへのアクセスを提供することができる。すなわち、（１）各パイプラインステージにメモリアドレスを転送すること、（２）外部メモリアドレスにアクセスして、外部メモリアドレスに収容された情報をパイプラインステージに提供すること、（３）外部メモリアドレスを別個のメモリアクセス手段（ダイレクトメモリアクセスエンジン等）に提供し、次いで、このメモリアドレス手段が、そのメモリアドレスにアクセスして、パイプラインステージにデータを提供すること、または、（４）パイプラインステージが、記憶されたデータにアクセスできることを保証するあらゆる類似の方法、によって提供することができる。カウンタは、適切な回路オペレーションに必要とされない場合に、図６（または、さらに言えば図１）から省略できることに留意されたい。例えば、ＳＡエレメント１０１が遅延を伴うことなく直ちに開始できる場合、カウンタ４０１を省略することができる。
【００３６】
図７は、本発明と共に使用できるプロセッサパイプラインコントローラのフローを示している。入力仕様７０１は、パイプラインハードウェアを設計するための関連情報を供給する。この関連情報は、例えば、ＭＩＴＩと、各ループが初期化コード、本体コード、および終了化コードから成る１組のループと、開始間隔および最初のループの開始を基準とした各ループの開始時刻と、バッファのサイズ、タイプ、およびさまざまなパイプラインステージへの接続を含んだ設計に使用されるループ間バッファの記述とを含む。この情報は、手動で提供することもできるし、同時に出願されて同時係属中の「A Method of, System and Program for the Design of Pipelines of Processors」という発明の名称の特許出願第［１００１１０５５７−１号］にあるように、入力プログラムを解析することによって自動的に提供することもできる。なお、この出願の開示は、参照により本明細書に援用される。
【００３７】
マルチループパイプラインコントローラの設計は、２つの主要なフェーズに分割することができる。第１のフェーズは、プログラムを解析して、ブックキーピング情報を収集するものであり（ステップ７０２および７０９）、第２のフェーズは、その情報を使用してパイプラインハードウェアを設計するものである（ステップ７０３、７０４、７０５、７０６、および７０７）。このプログラム解析フェーズのステップ７０２は、生存変数解析（liveness analysis）である。生存変数解析は、入力仕様７０１を読み込んで、各ループ内で使用される入力（リブイン（live-in））レジスタおよび出力（リブアウト（live-out））レジスタを特定するものである。ステップ７０９において、これらのレジスタは収集されてタスクフレームを形成し、それぞれにオフセットアドレスが割り当てられる。タスクフレームマップ７１０は、レジスタと、レジスタに割り当てられたタスクフレームオフセットアドレスとの間のマッピングを記録するこのステップから生成される。
【００３８】
パイプライン設計フェーズは、パイプラインの外部インターフェースと、データパスと、制御パスとを備えるさまざまなハードウェアモジュールを構築する。ステップ７０３において、ＭＩＴＩまたはそれよりも長い時間間隔で新たなタスクを開始するために、タスク開始信号およびタスクフレームベースアドレスを受け取る外部インターフェースハードウェア（例えば、ホストＩＦブロック）が構築される。また、この外部インターフェースハードウェアは、タスクがパイプラインの最終ステージから終了するごとに、タスク終了信号も返す。ステップ７０４において、さまざまなパイプラインステージが、入力仕様７０１によって与えられるようなループ本体コードブロックから構築される。ループ間バッファも、このステップで割り当てられ、それらの各パイプラインステージに接続される。ステップ７０５において、パイプラインステージの初期化、計算、および終了化用のさまざまなイベントの順序および時刻が決定される。これらのイベントを正しい順序で実行するタイミングコントローラも、このステップで割り当てられる。ステップ７０６において、パイプラインの各ステージについて、構成コントローラが割り当てられる。この構成コントローラは、初期化コントローラ、１つまたは２つ以上のベースレジスタ、および終了化コントローラから成る。初期化コントローラまたは終了化コントローラのいずれかはなくてもよい。ステップ７０７において、パイプラインのさまざまな制御信号が相互接続され、最終的なマルチループ設計７０８が生成される。
【００３９】
この設計フローの一実施態様では、初期化タスクおよび終了化タスクを実行するコードは、タスクフレームマップ７１０を使用してステップ７０６で自動的に生成される。初期化ブロックコードは、タスクフレームベースレジスタを基準としたそのフレームオフセットからリブインデータをロードするオペレーションと、次に、シストリックアレイパイプラインステージの対応するリブインレジスタにそのリブインデータを記憶するオペレーションとから成る。初期化ブロックの最後のオペレーションは、そのパイプラインステージの計算を開始することである。終了化ブロックコードは、シストリックアレイパイプラインステージのリブアウトレジスタからリブアウトデータをロードするオペレーションと、次に、タスクフレームベースレジスタを基準とした、タスクフレームマップ７１０で指定されたタスクフレームオフセットにそのリブアウトデータを戻して記憶するオペレーションとから成る。このコードは、次に、図２に示すような簡単なハードウェア方式に間に合うようにスケジューリングされる。初期化／終了化ブロックハードウェアは、その後、自動的に割り当てられ、タスクフレームベースアドレスレジスタが初期化され、初期化コードおよび終了コードがそれぞれ実行される。
【００４０】
このように生成された初期化ブロックおよび終了化ブロックでスケジューリングされたコードの長さは、初期化および終了化の時間間隔（例えば３０１〜３０５）の間に経過する時間の継続期間を規定する。これらは、入力仕様７０１で指定されたような各パイプラインステージ内での計算開始の相対時刻と共にステップ７０５で使用されて、初期化ブロック開始イベント、計算ブロック開始イベント、および終了化ブロック開始イベントの適切な順序付けおよびタイミングが特定される。一実施態様では、終了化ブロックは、ステージ計算の終了イベントによって自動的に開始され、したがって、タイミングコントローラによって直接制御を受ける必要はない。パイプラインステージ初期化イベントの開始は、初期化時間間隔を、対応するステージ計算の相対的な開始時刻から減算することによって計算される。
【００４１】
次に、そのようにして得られた初期化イベントが、次第に増加する時間順序で記憶される。次に、最初の初期化イベントの開始時刻をあらゆる初期化イベントから減算することによって、これらのイベントのタイミングが０から開始して直線的に調整される。次に、そのようにして得られた初期化イベントのタイミングおよび順序付けが、連続したイベント間のタイミング差に初期化される一連のカウンタを割り当てることによって、ハードウェアに変換される。このタイミング差がＭＩＴＩを超える場合、このタイミング差は、複数のカウンタ間で分割される。これら複数のカウンタのそれぞれは、ＭＩＴＩよりも長くない。上記で行われたタイミング調整によって、最初の初期化イベントは、時刻０で開始し、したがって、カウンタを必要としない。後続の各カウンタが０カウントに達したイベントは、その時刻で開始するようにスケジューリングされたパイプラインの後続ステージの初期化信号になる。そのように構築された一連のカウンタは、適切な時刻における各パイプラインステージの開始を信号で伝えるタイミングコントローラを構成する。
【００４２】
別の実施態様では、すべての制御信号が次のようにステップ７０７で相互接続される。外部インターフェースからのタスク開始信号が、タイミングコントローラに配線される。外部インターフェースからタスクフレームベースアドレスを運ぶデータ信号および制御信号が、最初の初期化ブロックに配線され、後続の初期化ブロックおよび終了化ブロックに時間シーケンスでパイプライン化される。タイミングコントローラからのさまざまなパイプラインステージ開始信号が、対応する初期化ブロックに接続される。リブインをロードしてステージ計算を開始する初期化ブロックからのデータ信号および制御信号が、対応するＳＡステージに接続される。各パイプラインステージからの終了信号が、終了化ブロックの開始に接続される。最後の終了化ブロックの完了が、外部インターフェースに戻されるタスク終了信号を生成する。
【図面の簡単な説明】
【００４３】
【図１】シストリックアレイから成る５つのステージを含んだ汎用パイプラインの一実施の形態のブロック図である。
【図２】初期化ブロックの一実施の形態のブロック図である。
【図３】本発明の一実施の形態による、５つのステージを含むパイプラインのオペレーションのタイミング図である。
【図４】単一のカウンタがパイプラインの各ステージに利用可能であるパイプラインタイミングコントローラの一実施の形態の図である。
【図５】パイプラインタイミングコントローラの代替的な実施の形態のブロック図である。
【図６】本発明の一実施の形態による、構成コントローラとパイプラインタイミングコントローラとの間の可能な接続を示すブロック図である。
【図７】本発明の一実施の形態と共に使用できるプロセッサパイプラインコントローラの設計を示すフロー図である。
【符号の説明】
【００４４】
１００  パイプライン
１０１、１０２、１０３、１０４、１０５  シストリックアレイ
１０６、１０７、１０８、１０９  バッファ
１１０、１１１、１１２、１１３、１１４、１１５、１１６、１１７、１１８  入力データ
１１９  出力データ
１２０、１２１、１２２、１２３、１２４  初期化ブロック
１２５、１２６、１２７、１２８、１２９  ＦＩＮＡＬブロック
１３０  パイプラインタイミングコントローラ
１３１、１３２、１３３、１３４、１３５、１３６、１３７、１３８、１３９、１４０、１４１、１４２、１４３、１４４、１４５  接続
１４６  ホストインターフェースブロック
１４７、１４８、１４９、１５０、１５１、１５２、１５３、１５４、１５５  リンク
２０２  ロードユニット
２０３  ストアユニット
２０４  タスクフレームベースレジスタ
２０５  ロード／ストア（Ｌ／Ｓ）タイミング制御ロジック
４０１、４０２、４０３、４０４、４０５、５０１、５０２、５０３、５０４、５０５、５０６、５０７、５０８、５０９、５１０、５１１、５１２、５１３、５１４、５１５  カウンタ
６０１、６０２、６０３、６０４、６０５  構成コントローラ
６０６、６０７、６０８、６０９、６１０  ベースレジスタ
【図１】
2006505060.tif 000003
【図２】
2006505060.tif 000004
【図３】
2006505060.tif 000005
【図４】
2006505060.tif 000006
【図５】
2006505060.tif 000007
【図６】
2006505060.tif 000008
【図７】
2006505060.tif 000009
【国際調査報告】
2006505060.tif 000010
2006505060.tif 000011
2006505060.tif 000012