(57)【要約】【課題】  プロセッサのパイプラインの設計の方法、ソフトウェア、およびシステムを提供する。【解決手段】  パイプラインを設計する方法であって、標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取るステップと、パイプラインの性能要件を受け取るステップと、パイプラインのハードウェア記述を自動的に作成するステップと、を含み、パイプラインは複数の相互接続されたプロセッサステージを備え、プロセッサステージのそれぞれは計算ステップの各１つを実行し、パイプラインはパイプラインの性能要件と一致した特性を有する。
2006505061.tif 000002
【特許請求の範囲】
【請求項１】
パイプラインを設計する方法であって、
標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取るステップと、
前記パイプラインの性能要件を受け取るステップと、
前記パイプラインのハードウェア記述を自動的に作成するステップと、
を含み、
前記パイプラインは複数の相互接続されたプロセッサステージを備え、該プロセッサステージのそれぞれは前記計算ステップの各１つを実行し、前記パイプラインは該パイプラインの前記性能要件と一致した特性を有する、
方法。
【請求項２】
前記性能要件は、最小タスク間間隔（ＭＩＴＩ）パラメータ値の定義を含む、請求項１に記載のパイプラインを設計する方法。
【請求項３】
前記パイプラインのハードウェア記述を自動的に作成する前記ステップは、
前記タスクプロシージャと一致した１組の繰り返し空間を決定するステップと、
有効で望ましいアフィンマルチスケジュールを決定するステップと、
該アフィンマルチスケジュールと一致した機能を提供するハードウェアパイプラインおよび関連した制御メカニズムの記述を生成するステップと、
をさらに含む、請求項１に記載のパイプラインを設計する方法。
【請求項４】
有効で望ましいアフィンマルチスケジュールを決定する前記ステップは、前記マルチスケジュールの或る部分の仕様等の設計者が指定した制約条件を順守することをさらに含む、請求項３に記載のパイプラインを設計する方法。
【請求項５】
有効で望ましいマルチスケジュールを決定する前記ステップは、複数の繰り返し空間のそれぞれにつき、プロセッサカウントおよび開始間隔を決定するステップをさらに含む、請求項３に記載のパイプラインを設計する方法。
【請求項６】
前記パイプラインのハードウェア記述を自動的に作成する前記ステップは、前記プロセッサステージのそれぞれのオペレーションを開始するパイプライン制御メカニズムを作成するステップをさらに含む、請求項１に記載のパイプラインを設計する方法。
【請求項７】
前記パイプラインのハードウェア記述を自動的に作成する前記ステップは、
タスクプロシージャのデータフローグラフをセグメント化するステップと、
前記セグメント化されたデータフローグラフの各セグメントについて有効で望ましいマルチスケジュールを決定するステップと、
前記セグメント化されたデータフローグラフの各セグメントについて同期したハードウェアサブパイプラインおよび制御ユニットのハードウェア記述を自動的に生成するステップと、
前記同期したハードウェアサブパイプライン間の非同期で拡張可能なデータおよび制御インターフェースのハードウェア記述を自動的に生成するステップと、
をさらに含む、請求項１に記載のパイプラインを設計する方法。
【請求項８】
内部配列データ構造体を特定するステップと、
該配列データ構造体のそれぞれを実施するバッファストレージのタイプを決定するステップと、
をさらに含む、請求項３に記載のパイプラインを設計する方法。
【請求項９】
前記配列のフォールディング（folding）を決定するステップと、
ＲＡＭバッファストレージであって、サイズが、前記内部配列の前記フォールディングと一致して縮小された、ＲＡＭバッファストレージ、の実施態様を決定するステップと、
をさらに含む、請求項８に記載のパイプラインを設計する方法。
【請求項１０】
前記計算ステージは、コスト削減されて同期スケジューリングされたプロセッサとして実施されたパイプラインステージを備える、請求項３に記載のパイプラインを設計する方法。
【請求項１１】
前記コスト削減されて同期スケジューリングされたプロセッサは、処理エレメントのアレイを備える、請求項１０に記載のパイプラインを設計する方法。
【請求項１２】
前記コスト削減されて同期スケジューリングされたプロセッサはプログラマブルでない、請求項１０に記載のパイプラインを設計する方法。
【請求項１３】
パイプラインを設計する方法であって、
該パイプラインの１つまたは２つ以上の命令文を含むタスクプロシージャおよび所望のスループットを読み込むステップと、
繰り返し空間、入力、出力、および内部データ構造体を特定するステップと、
命令文間の依存関係を解析するステップと、
前記命令文間の少なくとも１つの依存関係を見つけるステップと、
有効で望ましいマルチスケジュールを計算するステップと、
前記マルチスケジュールを使用して少なくとも１つの内部データ構造体のアクセスを最適化し、ハードウェアバッファのサイズを最小にするステップと、
各ループネストおよび直線的セグメントのハードウェアプロセッサを生成するステップと、
前記内部データ構造体の値を収容する最適化されたハードウェアバッファを生成するステップと、
を含む方法。
【請求項１４】
パイプラインを設計するシステムであって、
１組のプログラム命令を記憶するメモリと、
該メモリに接続されたプロセッサであって、前記１組のプログラム命令に応答して、
（ｉ）標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取り、
（ｉｉ）前記パイプラインの性能要件を受け取り、
（ｉｉｉ）前記パイプラインのハードウェア記述を自動的に作成する、
プロセッサと、
を備え、
前記パイプラインは複数の相互接続されたプロセッサステージを備え、前記プロセッサステージのそれぞれは前記計算ステップの各１つを実行し、前記パイプラインは該パイプラインの前記性能要件と一致した特性を有する、
システム。
【請求項１５】
前記性能要件は、最小タスク間間隔（ＭＩＴＩ）パラメータ値の定義を含み、前記プロセッサは、前記ＭＩＴＩに応じて前記ハードウェア記述を作成する、請求項１４に記載のパイプラインを設計するシステム。
【請求項１６】
前記プロセッサは、さらに、前記１組のプログラム命令に応答して、
有効で望ましいアフィンマルチスケジュールを決定し、
該アフィンマルチスケジュールと一致した機能を提供するハードウェアパイプラインおよび関連した制御メカニズムの記述を生成する、
請求項１４に記載のパイプラインを設計するシステム。
【請求項１７】
前記プロセッサは、さらに、前記１組のプログラム命令に応答して、
内部配列データ構造体のフォールディングを決定し、
ＲＡＭバッファストレージの実施態様を決定し、
該ＲＡＭバッファストレージは、サイズが、前記内部配列の前記フォールディングと一致して縮小される、
請求項１６に記載のパイプラインを設計するシステム。
【請求項１８】
前記計算ステージは、コスト削減されて同期スケジューリングされたプロセッサとして実施されたパイプラインステージを備える、請求項１６に記載のパイプラインを設計するシステム。
【請求項１９】
コンピュータ可読媒体に記憶されたコンピュータ命令のプログラムであって、
標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取るステップと、
前記パイプラインの性能要件を受け取るステップと、
前記パイプラインのハードウェア記述を自動的に作成するステップと、
を実行するコンピュータコードを含み、
前記パイプラインは複数の相互接続されたプロセッサステージを備え、前記プロセッサステージのそれぞれは前記計算ステップの各１つを実行し、前記パイプラインは該パイプラインの前記性能要件と一致した特性を有する、
プログラム。
【請求項２０】
前記性能要件は、最小タスク間間隔（ＭＩＴＩ）パラメータ値の定義を含む、請求項１９に記載のコンピュータ可読媒体に記憶されたコンピュータ命令のプログラム。
【請求項２１】
前記プログラムは、
有効で望ましいアフィンマルチスケジュールを決定するステップと、
該アフィンマルチスケジュールと一致した機能を提供するハードウェアパイプラインおよび関連した制御メカニズムの記述を生成するステップと、
を実行するコンピュータコードをさらに含む、
請求項１９に記載のコンピュータ可読媒体に記憶されたコンピュータ命令のプログラム。
【請求項２２】
内部配列のフォールディングを決定するステップと、
ＲＡＭバッファストレージであって、サイズが、前記内部配列の前記フォールディングと一致して縮小された、ＲＡＭバッファストレージ、の実施態様を決定するステップと、
を実行するコンピュータコードをさらに含む、請求項２１に記載のコンピュータ可読媒体に記憶されたコンピュータ命令のプログラム。
【請求項２３】
前記計算ステージは、コスト削減されて同期スケジューリングされたプロセッサとして実施されたパイプラインステージを備える、請求項２１に記載のコンピュータ可読媒体に記憶されたコンピュータ命令のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［発明の分野］
本発明は、コンピュータハードウェア設計に関し、特に、プロセッサのパイプラインの設計の方法、ソフトウェア、およびシステムに関する。
【０００２】
［関連出願の相互参照］
本出願は、「SYSTEM AND METHOD OF OPTIMIZING MEMORY USAGE WITH DATA LIFETIMES」という発明の名称の米国特許出願第（代理人整理番号第１００１１０５６４−１号）、および、「METHOD AND SYSTEM FOR MEMORY MANAGEMENT OPTIMIZATION」という発明の名称の米国特許出願第（代理人整理番号第１００１１０５６５−１号）、および、「SYSTEM FOR AND A METHOD OF CONTROLLING PIPELINE PROCESS STAGES」という発明の名称の米国特許出願第（代理人整理番号第１００１１０５５８-１号）に関連する。これらの出願はすべて、その全内容が参照により本明細書に援用される。
【背景技術】
【０００３】
［関連技術の説明］
現代の組み込み型システムの計算の大きなクラスは、１つまたは２つ以上のデータストリームに対する変換シーケンスとして表すことができる。このようなシステムの対応するアーキテクチャは、通常、プロセッサのパイプラインとして編成される。このパイプラインでは、各ステージは、初期入力または前のステージの出力からデータを受け取り、そのデータに対する特定のタスクまたは変換を実行し、次のステージ（もしあれば）またはパイプラインの出力へ次々に結果データを渡す。プロセッサという用語は、ここでは、プログラマブルな計算デバイスおよび非プログラマブルな計算デバイスの双方、静的にスケジューリングされた計算デバイスおよび動的にスケジューリングされた計算デバイスの双方を含めて、計算デバイスの広いクラスを包含するのに使用される。ステージ間で渡されるデータは、「きめの細かい」もの（例えば、ワードレベル）であってよいし、「きめの粗い」もの（例えば、データ要素のブロックまたはストライプ）であってもよい。ステージ間のデータ交換は、ステージ間のハンドシェイクメカニズムを使用して同期させることもできるし（例えば、非同期）、システム全体のクロックおよびステージ間の一定遅延によってタイミングを合わせることもできる（例えば、同期オペレーション）。プロセッサのこのようなパイプラインの設計は、各段の初期化、終了化、および制御を含む特定のタスクを実行する各段の設計と、各ステージ対間のバッファリングメカニズムの設計と、プロデューサ（すなわち、送信元または送信側）プロセッサステージおよびコンシューマ（すなわち、宛先または受信側）プロセッサステージのあらゆる対間で使用される同期メカニズムの設計とを含む。このようなパイプラインアーキテクチャは、システムの機能仕様（すなわち、設計文書および／または機能の基準実施態様）を調べて、設計のすべてのコンポーネントおよびパラメータを注意深く特定し、最小コストおよび最大性能を得るためにそれらコンポーネントおよびパラメータを最適化することによって手動で設計される。
【０００４】
さまざまな刊行物が、このような並列システムの設計に取り組んできた。K. K. Danckaert、K. Masselos、F. Catthoor、およびH. De Manの「Strategy for Power-Efficient Design of Parallel Systems」、IEEE Transactions on Very Large Scale Integration (VLSI) Systems, Vol. 7, No. 2, June 1999（非特許文献１）は、並列化または区画化の決定を定式化する前に、最初のステップとして多次元信号のシステムレベル記憶編成を記載している。F. Vermeulen、F. Catthoor、D. Verkest、H. De Manの「Extended Design Reuse Trade-Offs in Hardware-Software Architecture Mapping」、CODES, 2000（非特許文献２）は、必要なすべてのデータが共有メモリに利用可能な場合に、制御フロー検査メカニズムおよび割り込みメカニズムを使用してきめの細かな制御を提供するスイッチングプロトコルを提案している。P. Panda、F. Catthoor、N. Dutt、K. Danckaert、E. Brockmeyer、C. Kulkarnia、A. Vandercappelle、およびP. Kjeldsbergの「Data and Memory Optimization Techniques for Embedded Systems」、ACM Transactions on Design Automation of electronic Systems, Vol 6, No. 2, April 2001, Pages 149-206（非特許文献３）は、組み込み型システムにおけるデータおよびメモリの最適化に使用されるさまざまな技法の調査を含む。ここで言及したこれらの刊行物および特許ならびにこの明細書全体を通じて言及する他の刊行物および特許は、本発明の技術を示すものであり、その全内容が参照により援用される。
【０００５】
【特許文献１】米国特許第６，２９８，０７１号
【特許文献２】米国特許第５，７６４，９５１号
【特許文献３】国際公開第０１／５９５９３号
【非特許文献１】K. K. Danckaert、K. Masselos、F. Catthoor、およびH. De Man著「Strategy for Power-Efficient Design of Parallel Systems」、IEEE Transactions on Very Large Scale Integration (VLSI) Systems, Vol. 7, No. 2, June 1999
【非特許文献２】F. Vermeulen、F. Catthoor、D. Verkest、H. De Man著「Extended Design Reuse Trade-Offs in Hardware-Software Architecture Mapping」、CODES, 2000
【非特許文献３】P. Panda、F. Catthoor、N. Dutt、K. Danckaert、E. Brockmeyer、C. Kulkarnia、A. Vandercappelle、およびP. Kjeldsberg著「Data and Memory Optimization Techniques for Embedded Systems」、ACM Transactions on Design Automation of electronic Systems, Vol 6, No. 2, April 2001, Pages 149-206
【非特許文献４】MCFARLAND M C ET AL: "THE HIGH-LEVEL SYNTHESIS OF DIGITAL SYSTEMS" PROCEEDINGS OF THE IEEE, IEEE. NEW YORK, US, vol. 78, no. 2, 1 February 1990 (1990-02-01), pages 301-318, XP000128906 ISSN: 0018-9219 page 301 - page 311; figures 1-3, 5-10
【非特許文献５】PARK N ET AL: "Sehwa: a software package for synthesis of pipelines from behavioral specifications" IEEE TRANS. COMPUT.-AIDED DES. INTEGR. CIRCUITS SYST. (USA), IEEE TRANSACTIONS ON COMFUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS, MARCH 1988, USA, vol . 7, no. 3, March 1988 (1988-03), pages 356-370, XP002291439 ISSN: 0278-0070 the whole document
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このような手動設計方法論は、最終的には、パイプラインの設計およびアーキテクチャを提供するが、遅く、エラーを起こしやすく、また、利用可能な時間資源および人資源の制約内で最適な設計結果を達成しないことがある。
【課題を解決するための手段】
【０００７】
本発明の一つの態様によると、パイプラインを設計する方法は、標準プログラミング言語で表されたタスクプロシージャであって、計算ステップの集合を含む、タスクプロシージャ、を受け取り、パイプラインによって実行されるべき計算機能を規定する役割を果たすステップと、パイプラインの性能要件を受け取るステップと、パイプラインのハードウェア記述を自動的に作成するステップと、を含み、パイプラインは複数の相互接続されたプロセッサステージを備え、プロセッサステージのそれぞれは計算ステップの各１つを実行し、パイプラインはパイプラインの性能要件と一致した特性を有する。
【０００８】
本発明の別の態様によると、パイプラインを設計する方法は、１つまたは２つ以上の命令文を含むタスクプロシージャ、および、パイプラインの所望のスループットを読み込むステップと、繰り返し空間、入力、出力、および内部（すなわち、タスクプロシージャにローカルな）データ構造体を特定するステップと、命令文間の依存関係を解析するステップと、命令文間の少なくとも１つの依存関係を見つけるステップと、有効で望ましいマルチスケジュールであって、このマルチスケジュールは、上記繰り返し空間のそれぞれにおける各ポイントの（上記タスクプロシージャの開始時刻を基準にして相対的な）スケジューリングされた開始時刻、および、このオペレーションが存在する繰り返しの開始時刻を基準として相対的な各オペレーションのスケジューリングされた時刻である、マルチスケジュール、を計算するステップと、マルチスケジュールを使用して少なくとも１つの内部データ構造体のアクセスを最適化し、ハードウェアバッファのサイズを最小にするステップと、各ループネストおよび直線的セグメントのハードウェアプロセッサを生成するステップと、内部データ構造体の値を収容する最適化されたハードウェアバッファを生成するステップと、を含む。
【０００９】
本発明の別の態様によると、パイプラインを設計するシステムであって、１組のプログラム命令を記憶するメモリと、メモリに接続されたプロセッサであって、１組のプログラム命令に応答して、（ｉ）標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取り、（ｉｉ）パイプラインの性能要件を受け取り、（ｉｉｉ）パイプラインのハードウェア記述を自動的に作成する、
プロセッサと、を備え、パイプラインは複数の相互接続されたプロセッサステージを備え、プロセッサステージのそれぞれは計算ステップの各１つを実行し、パイプラインはパイプラインの性能要件と一致した特性を有する。
【００１０】
本発明の別の態様によると、コンピュータ可読媒体に記憶されたコンピュータ命令のプログラムは、標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取るステップと、パイプラインの性能要件を受け取るステップと、パイプラインのハードウェア記述を自動的に作成するステップと、
を実行するコンピュータコードを含み、パイプラインは複数の相互接続されたプロセッサステージを備え、プロセッサステージのそれぞれは計算ステップの各１つを実行し、パイプラインはパイプラインの性能要件と一致した特性を有する。
【発明を実施するための最良の形態】
【００１１】
［詳細な説明］
現代の組み込み型システムの計算の大きなクラスは、データストリームに対する変換シーケンスとして表すことができる。この変換シーケンスは、外部源から入力データを受け取る少なくとも１つの開始ステージと、データを外部の宛先に出力する少なくとも１つの終了ステージと、或る個数の中間ステージとを有するプロセスステージの非循環ネットワークによって実行することができる。このプロセスステージの非循環ネットワークは、「一般パイプライン（general pipeline）」（または単に「パイプライン」）として当技術分野では知られている。中間ステージのそれぞれは、少なくとも１つの先行ステージからデータを受け取り、特定の計算または変換を実行し、その結果を少なくとも１つの後続ステージに転送する。「一般パイプライン」の簡単な例は、処理ステージの線形シーケンスから成るリニアパイプラインの一般概念である。このリニアパイプラインでは、パイプラインの第１ステージが入力データを受け取り、パイプラインの各後続ステージが先行ステージからデータを受け取って、データに対して特定の計算または変換を実行し、その結果を次々にパイプラインの次のステージへ渡すことができ、パイプラインの最終ステージの場合には、データを出力することができる。所与の１組の入力データに対する全体的な計算シーケンスは「タスク」と呼ばれ、その入力データについてのパイプラインの各ステージ内の計算は「ステップ」と呼ばれる。パイプラインのステージ間で渡されるデータに加えて、制御情報も、パイプラインのさまざまなステージが自身の機能を適切な時刻に実行することを確保するのに必要な場合がある。パイプラインステージは、例えばレジスタ、ＦＩＦＯ、またはランダムアクセスメモリといったバッファにより分離することができる。このバッファは、パイプラインのさまざまなステージ間でデータを記憶するのに使用することができる。
【００１２】
本発明は、ハードウェアパイプラインまたはパイプラインハードウェアプロセッサを合成する実施の形態を含む。このようなハードウェアパイプラインプロセッサは、データパケットシーケンスに適用されるステップシーケンスを実施する。データパケットシーケンスの各項目は、その一続きのステップにより連続して処理され、データシーケンスの異なる項目は、パイプラインのステージのそれぞれによって並列に処理される。このようなパイプライン構成は、エレクトロニクス産業全体にわたって使用されて高度な計算能力を提供し、特に、写真品質のカラープリンタ、デジタルカメラ等によって実行される画像処理等、大量の「ナンバークランチング」および実時間スループットが必要とされる分野に使用される。
【００１３】
図面の図１を参照して、データがｎステッププロセスのステップ１（例えば、プロセッサ等の第１の機能ユニットまたはシステム）に入力され、出力が最終ステップｎから提供されるように、パイプラインを構成することができる。この計算の他のステップには、他の入力ストリームを入力することもできるし、この計算の他のステップからは、他の出力ストリームが出てくることもできる。ｎステップのすべてが、異なるデータに対する処理ではあるが、少なくとも部分的に並列に実行されるように、データはステップ１〜ｎのそれぞれに沿って進行する。上述したように、このようなアーキテクチャは、例えば、カラーパイプラインの実施およびそれ以外の画像処理の実行を行うデジタルカメラおよびプリンタに使用される。本発明の実施の形態は、いくつかのパイプラインのアーキテクチャを自動的に設計および合成するメカニズムを含む。
【００１４】
図１には図示しないが、パイプラインのあらゆる２つのステージ間には、前のステージから後のステージへ移動中のデータ値を記憶する或る種のバッファが存在することがある。この出願では、これらのハードウェア構造体をステージ間バッファと呼ぶ。ステージ間バッファは、レジスタ、レジスタセットもしくはレジスタファイル、シフトレジスタ、ハードウェアＦＩＦＯ、ランダムアクセスメモリ（ＲＡＭ）、またはデータ値を記憶するのに適した他の任意のハードウェア構造体の形を取ることができる。このようなバッファストレージのタイプおよび種類は、コストを最小にするために設計システムによって選択することができる。１つのループネストでしか参照されない内部データ構造体は、最適化されたステージ内バッファストレージに記憶することができ、そのタイプおよび関連パラメータも、コストを最小にするために設計システムによって選択することができる。
【００１５】
本発明の一実施の形態によるメカニズムは、使用されるハードウェア資源に関するすべての判断と、これらの資源に対して実行されるタスクのマッピングおよびスケジューリングと、ステップの初期化、終了化、およびさまざまなステージの開始／停止の制御ロジックの自動生成とを行うことができる。本発明の実施の形態は、パイプラインのいくつかの目標および合成を慎重にバランスさせるステップおよびメカニズムを含むことができる。この目的および合成は、例えば、パイプラインの高スループットを得ること、さまざまなステージの入出力（Ｉ／Ｏ）レートを整合させること、データブロックの要素の生成順序をデータブロックの要素の消費順序と整合させること、ステージ間バッファのサイズを最小にすることを含む。これらのステップのそれぞれは、本発明のさまざまな実施の形態によって実施される程度に、さらに有利な方法および構造を含むことができる。例えば、ステージ間バッファ資源およびステージ内バッファ資源の必要量の最小化には、バッファ再利用プロシージャを実施することができる。このバッファ再利用プロシージャでは、バッファ資源が時分割方式で利用される。さらに、本発明のさまざまな実施の形態の特徴は、同期メカニズムおよびパイプラインに適した粒度を選択することを含むことができる。
【００１６】
本発明の一実施の形態によると、設計者は、好ましくはループネストのシーケンスの形で計算ステップのシーケンスを記述したプログラムコードのセグメントを提供することによって、パイプラインの機能の記述を提供することができる。ループネストのそれぞれは、パイプラインの各ステージによって実施されるステップの１つを記述する。これに加えて、直線的コードのいくつかの部分をループネスト間に含めることもできる。概念的には、直線的コードのセグメントは、あたかも深度０のループネストのように取り扱うことができる。
【００１７】
本発明の別の態様によると、ユーザは、例えば、タスクをどの頻度でサブミットしてパイプラインにより処理するか等の判定基準を指定することによって所望の性能を記述することが可能になる。これには、ユーザが指定するように、一定の最小間隔がタスク間に必要とされることがある。この間隔は、最小タスク間［開始］間隔（ＭＩＴＩ（minimum inter-task [initiation] interval））と呼ばれる。ＭＩＴＩは、タスクをパイプラインを「通じてプッシュする」（すなわちパイプラインによって処理する）ことができる最速レートを指定する。また、設計には、入力の読み込み順序および出力の生成順序に対する制約条件を順守することが必要とされることもある。
【００１８】
図２は、本発明の一実施の形態に準拠したコンピュータ２００の詳細図を示している。このコンピュータ２００は、メインメモリ２０１、キャッシュ２０３、２次記憶デバイス２０４、中央処理装置（ＣＰＵ）２０６、ビデオ表示装置２０７、および入出力デバイス２０８を含む。これらはシステムバス２０９によって接続される。メインメモリ２０１はコンパイラ２０２を記憶する。コンパイラ２０２は、２次記憶デバイス２０４に記憶されたソースコード２０５に処理を行い、実行可能オブジェクトコードを生成することができる。簡単にするために、例えばリンクおよびロードを含む関連機能が必要に応じて実行されて、実行可能オブジェクトモジュールが提供されるものと仮定する。したがって、メモリ割り当ては、キャッシュ２０３用のメモリ割り当てを含めて、ソフトウェアおよび他のシステムの組み合わせによって実行することができる。このソフトウェアおよび他のシステムには、コンパイラ、リンカ、ローダ、専用ユーティリティ等が含まれるが、これらに限定されるものではない。
【００１９】
図２に示すようなシステムを使用すると、適切なプログラムコードを２次記憶デバイス２０４に記憶して、本発明の実施の形態による方法およびシステムを実施することができる。
【００２０】
図３を参照して、プロセッサのパイプラインによって実施されるプロシージャの一例が提供されている。このプロシージャは、明確に図示されている指定された内部データならびに指定された入力データおよび出力データについて明確に定義されるべきである。このプロシージャの別の望ましい特徴は、当該プロシージャが、ループネストおよび介在する十分に構造化されたコードのシーケンスから構成されて、十分に構造化されているということである。すなわち、とりわけ、プロシージャは「ｇｏ  ｔｏ」命令文なしに表されることが好ましい。プロシージャ自体の仕様に加えて、パイプラインの所望の性能を提供することができ、これを行う１つの方法がＭＩＴＩの仕様によるものである。前述したように、ＭＩＴＩは、入力データパケットの到着と到着との間の最小時間を記述する。例えば、ＭＩＴＩが１００マシンサイクルである場合、ハードウェアパイプラインは、１００サイクルごとに新たなデータパケットを受け取ることが可能でなければならず、したがって、１００サイクルごとに、最大１タスクまでのタスクハンドリングレートを保持しなければならない。
【００２１】
好ましくは、本発明の実施の形態は、静的スケジューリングの使用を一部として含む。静的にスケジューリングされたハードウェアでは、タスクプロシージャのあらゆるオペレーションの時刻は、計算中に発生する或る１つまたは複数のイベントの結果として動的に決定される（例えば、非同期）のではなく、（タスクの開始時刻を基準として相対的に）事前に固定される（例えば、同期オペレーション）。
【００２２】
静的スケジューリングは、図３のプロシージャについて例示することができる。図３では、「ｔａｓｋ＿ｐｒｏｃ」内に５つの割り当て命令文Ｓ１〜Ｓ５が見られる。これらの割り当て命令文のそれぞれに対して、ループ繰り返し空間が関連付けられ、エンクロージングループ（enclosing loop）インデックス変数の値が関連付けられる。例えば、Ｓ１の繰り返し空間は、
｛ｉ１｜０≦ｉ１＜１００｝
となり、Ｓ５について、この空間は、
｛（ｉ２，ｉ３）｜０≦ｉ２＜１００  ＆  ０≦ｉ３＜５｝
となる。直線的コードセグメント、すなわちネスト間に現れるＳ２やＳ３等の命令文シーケンスについては、タスクプロシージャの実行の際に命令文のそれぞれの１回の実行に対応して、１つの「ポイント」から成る単一の繰り返し空間が存在する。
【００２３】
静的スケジュールを提供するために、開始時刻をあらゆる繰り返し空間の各繰り返しに関連付けることができる。これらの開始時刻は繰り返しスケジュールを構成する。これに加えて、各繰り返し空間に見られるオペレーションは、そのオペレーションが存在する繰り返しの開始を基準として相対的な開始時刻を有することができる。これらの相対的な開始時刻は、タスクプロシージャの各オペレーションにつき１つ、オペレーションスケジュールを構成する。繰り返しスケジュールとオペレーションスケジュールとを組み合わせることによって、１つのタスクでの実行中に実行されるか、または、実行されることがあるあらゆるオペレーションの、タスクの開始時刻を基準にした相対的な開始時刻が正確に決定される。
【００２４】
使用可能な繰り返しスケジュールを提供するために、繰り返しインデックスベクトルのアフィン関数を使用することができる。整数ベクトルｋは、各繰り返し空間に関連付けられる。インデックスベクトルがｉ＝（ｉ＿１，ｉ＿２，…ｉ＿ｄ）である繰り返しにおけるオペレーションの開始時刻は、
ｉｔｅｒａｔｉｏｎ＿ｓｔａｒｔ＿ｔｉｍｅ（ｉ）（繰り返し開始時刻）＝ｋ＿０＋ｉ＿１ｋ＿１＋…＋ｉ＿ｄｋ＿ｄ
によって与えられる。
すなわち、上記公式で表されるように、繰り返しｉは、時刻ｋ＿０に、ｉと（ｋ＿１，ｋ＿２，…，ｋ＿ｄ）とのドット積を加えた時刻に開始する。我々はこれを＜ｋ，ｉ＞によって表記する。各繰り返し空間について、異なるベクトルｋが選択される。
【００２５】
したがって、インデックスベクトルがｉによって表記される或る繰り返し空間に現れるオペレーション（図３に示すタスクプロシージャの命令文Ｓ５における加算オペレーション等）は、ｔ（ｏｐ）によって表記される開始時刻を有することができる。この開始時刻は、オペレーションスケジュールによって与えられ、繰り返しｉの開始時刻を基準にした相対的な開始時刻である。前のパラグラフで説明したようなアフィン繰り返しスケジュールが使用される場合、繰り返しｉに現れるオペレーションのインスタンスは、時刻＜ｋ，ｉ＞＋ｔ（ｏｐ）で開始するようにスケジューリングされる。このようなスケジュールは、アフィン繰り返しスケジュールおよびオペレーションごとに１つの相対的な開始時刻から成り、シフティッドアフィンスケジュール（shifted-affine schedule）と呼ばれる。
【００２６】
インデックス空間のそれぞれを考慮すると、ループネストの計算を編成するアフィンスケジュールが提供される。単一のループネストからハードウェアプロセッサを作成する適切なメカニズムは、ＨＰ  ｌａｂｓのＰＩＣＯ−ＮＰＡシステムによって提供される。このシステムは、アフィンスケジュールを使用して、ハードウェアプロセッサにより実施されたループネストの指定された計算時刻を得る。このようなシステムを使用すると、マルチループとして関数を指定するタスクプロシージャを呼び出すことが可能である。アフィンスケジュールの集合（ベクトルｋとして表される）は、各繰り返し空間につき１つ、アフィン繰り返しマルチスケジュールを提供する。この出願では、本明細書においてアフィン繰り返しマルチスケジュールを単にマルチスケジュールと呼ぶ。オペレーションスケジュールとアフィンマルチスケジュールとを組み合わせることによって、シフティッドマルチスケジュールが構成される。したがって、本発明の実施の形態は、一定の必要な判定基準および一定の望ましい判定基準の双方を満たすシフティッドマルチスケジュールを決定するプロセスを含むことができる。このような必要な判定基準は、時間順序および必要なスループットを含むことができる一方、所望の判定基準は、パイプラインの実現に使用されるハードウェアの削減された総コストを含むことができる。特に、元のプログラムのセマンティクスに違反することなく、シフティッドマルチスケジュールによって指定された時間順序で必要な計算を実行することが可能でなければならない。これは、とりわけ、オペレーションＯ１によって計算された特定の値を必要とするオペレーションＯ２が、Ｏ１の実行前に実行されるべきでなく、必要なすべての値が、オペレーションＯ２によって必要とされる時に利用可能であるようにされるべきであることを意味する。シフティッドマルチスケジュールは、この要件を満たす場合に「有効」であるとみなされる。所与のアフィン繰り返しスケジュールが、有効なシフティッドマルチスケジュールを当該所与のアフィン繰り返しスケジュールと共に構成するオペレーションスケジュールを見つけることができるようなプロパティを有するかどうかを判断することは数学的に可能である。したがって、アフィン繰り返しスケジュールは、有効なシフティッドマルチスケジュールを当該アフィン繰り返しスケジュールと共に構成するオペレーションスケジュールを見つけることが可能である場合に有効であるとみなされる。
【００２７】
別の要件は、マルチスケジュールが意味するスループットが、少なくともユーザが必要とするものと同程度に大きくなければならないということである。例えば、ユーザがＭＩＴＩを指定すると、繰り返し空間のスケジュールの全長（＜ｋ，ｉ＞の最大値（この空間におけるあらゆる繰り返しの最新の開始時刻）と＜ｋ，ｉ＞の最小値（あらゆる繰り返しの最も前の開始時刻）との差）は、指定されたＭＩＴＩよりも小さくなければならない。
【００２８】
本発明の実施の形態は、望ましい判定基準の中でも、ハードウェアの総コストを考慮でき、これを最小にすることができる。一般に、総ハードウェアコストは、指定されたオペレーションの実現に必要なハードウェアおよび内部データ構造体に必要なストレージによって支配される。
【００２９】
本発明の実施の形態は、ハードウェアパイプラインの設計につながるステップを含む。このハードウェアパイプラインは、タスクプロシージャの各ループネストが、処理エレメントのアレイが配備されるパイプラインステージによって実施され、このような各処理エレメントがそれ自体パイプライン化され、かつ、開始間隔（ＩＩ）によって決定されたレートでループネストの繰り返しを周期的に処理する能力を有するものである。このようなパイプライン化されたプロセッサは、ＩＩのマシンサイクルごとに実行を開始し、ループネストの１つの繰り返しの実行を終了する。本発明の実施の形態は、タスクプロシージャの各ループネストについて、ループネストを実施するパイプラインステージに配備される処理エレメントの個数と、処理エレメントの開始間隔との双方を決定するステップを含み、それによって、必要なＭＩＴＩを達成する判定基準と一致した方法で、パイプラインステージのスループットを決定する。
【００３０】
概して、本発明の実施の形態は、各繰り返し空間内において、かつ繰り返し空間全体にわたり、データ依存関係を特定するステップ、処理、および／または構造を含む。ＭＩＴＩは、各ループネストの所望のスループットを得るのに必要なプロセッサ数および各プロセッサの能力または性能を決定するのに使用される。依存関係およびスループット情報は、各ループネストの繰り返しのスケジューリング（例えば、パラメータｋ＿１，…，ｋ＿ｎによるアフィンマッピング等、繰り返し空間インデックスベクトルから繰り返しの開始時刻へのマッピングの決定）と、繰り返しの空間へのマッピング（例えば、繰り返しインデックスベクトルから複数のプロセッサエレメントから成るアレイのプロセッサエレメントへのマッピングの決定）と、前のループネストの開始を基準にした相対的な各ループネストの開始の特定（例えば、上記アフィンマッピングにおけるｋ＿０）とを行うのに使用される。或るループネストによって生成されて別のループネストによって消費されるデータは、ステージ間バッファを介して渡される。このステージ間バッファのタイプ、サイズ、およびデータマッピング（そのバッファにおける所与のデータ項目の位置はデータマッピングによって決定される）は、パイプライン設計プロセスによって生成される。１対のループネストのスケジュールは、このようなステージ間バッファのサイズが最小になるように選択される。各ループネストは、その後、各データ構造体のアドレス指定を適切な種類のステージ間バッファに変換するために、特定された繰り返しスケジュールに従って時空ループに変換される。このコードは、その後、アセンブリレベル表現に変換され、それによって、ハードウェア合成に向けて適合した最適化がさらに可能になる。詳細には、まず、各ループは、その繰り返しスケジュールおよびスループット要件に従ってプロセッサアレイに合成することができ、次いで、プロセッサの複数のアレイは、ステージ間バッファを介して通信するパイプラインに互いに「ストリング（strung）」される。バックエンドハードウェア合成ステップは、プロセッサアレイの詳細なハードウェア合成、および、ループの対応する繰り返しの開始時刻を基準にした相対的な各ループ本体の各オペレーションのスケジュールの決定に達することができる。詳細な合成およびオペレーションのスケジューリングの後、ステージ間バッファのアドレス指定およびサイズが一定に維持されることを確保するように、単一のループネストをプロセッサアレイに変換するメカニズムは拡張されることが好ましい。代替的に、このような詳細なオペレーションスケジュールが取得された後、ステージ間バッファハードウェアのタイプおよびサイズ、ならびに、このようなバッファのデータにアクセスするのに使用されるアドレス指定メカニズムは、スケジュールの混乱を補償するように調整することができる。パイプラインの各ステージの初期化および終了化を行うハードウェアも、各ループネストからの「リブイン（livein）」値および「リブアウト（liveout）」値（すなわち、データの最初の使用および最後の使用）の解析に基づいて生成することができる。最後に、事前に特定されたループネストの時間スケジュール��使用して自動的に生成されるパイプライン化されたタイミングコントローラが、パイプラインの各ステージを制御することができる。その後、パイプラインアーキテクチャ全体が、レジスタ転送レベルの標準記述言語で提供される。
【００３１】
本発明の一実施の形態では、繰り返しｉのオペレーションは、＜ｋ，ｉ＞とオペレーションの相対的なスケジュール時刻との合計に等しい時刻でスケジューリングされる。本発明の好ましい実施の形態では、アフィンマルチスケジュール（繰り返し空間ごとに１つのベクトルｋ）が、本発明の方法に従って最初に決定される。その後、オペレーションスケジュールが決定される。データバッファのパラメータは、オペレーションスケジュールが選択された後に終了化することができる。別の実施の形態では、データバッファのパラメータは、オペレーションスケジュールの前に選択され、オペレーションスケジュールは、その後、パラメータが決定されているデータバッファの使用から導出された制約条件により選択することができる。
【００３２】
図４を参照して、本発明による一方法の一実施の形態は、ステップ４０１で開始することができる。ステップ４０２において、タスクプロシージャが、パイプラインによって提供される所望のスループットと共に読み込まれる。上述したように、タスクプロシージャは、図３に関して図示して説明したような１組の命令として提供することができる。ステップ４１２に示すように、タスクプロシージャは、例えばＣプログラミング言語といった標準プログラミング言語で表すことができる。ステップ４１３に示すように、スループットは、ＭＩＴＩの形で提供することができる。これらの入力に応答して、ステップ４０３から４１０のシーケンスが、補助的なステップ４１４から４１８と共に実行される。これと共に、これらのステップは、相互接続されて同期スケジューリングされたプロセッサステージとしての同期ハードウェアパイプラインのハードウェア記述を作成するマクロステップを含む。
【００３３】
ステップ４０３において、パイプラインによって使用される繰り返し空間、入力、出力、および内部データ構造体が特定される。ステップ４０４において、命令文間のすべての依存関係の解析が行われ、すべての依存関係が見つけられる。ステップ４０５において、スケジュールに対するユーザの制約条件を、ユーザによるアフィンマルチスケジュールのいくつかのコンポーネントの仕様の形で受け取ることができる。これらの制約条件によって、ユーザは、とりわけ、入力を読み込むのに必要な順序またはパイプラインからの出力を書き込むのに必要な順序を指定することが可能になる。ステップ４０６において、計算を実行して、有効で望ましいマルチスケジュールを提供することができる。このような計算は、処理エレメント数と、それら処理エレメントの各ループネストの開始間隔とを決定するステップ（図のステップ４１６）を含むことができる。マルチスケジュールの部分的な仕様等、ユーザが指定した制約条件は、図のようにこのステップ（ステップ４１４）で順守される。ステップ４０６のさらに詳細な内容は以下で説明する。内部データ構造体にアクセスする方法の最適化が、ステップ４０７において行われ、マルチスケジュールの知識を利用して、内部データ構造体の記憶に使用されるハードウェアバッファのサイズが削減される。このような最適化は、１つまたは複数の内部データ構造体を実施するバッファストレージのタイプを選択するステップ（例えばステップ４１７）を含むことができる。内部配列の場合、ステップ４１５に示すように、配列の記憶に必要なメモリ量を最小にするために、このような最適化は、その配列のメモリ位置へのフォールディングされたマッピング（folded mapping)を決定することを含むことができる。内部データ構造体のサイズを削減するか、または、最小にする技法には、同時係属中の「OPTIMIZING MEMORY USAGE WITH DATA LIFETIMES」という発明の名称の米国特許出願第（代理人整理番号第１００１１０５６４−１号）に記載されたような、データ配列のメモリへのフォールディングされたマッピングを通じたメモリの時分割方式、および／または、例えば同時係属中の「METHOD OF AND SYSTEM FOR MEMORY MANAGEMENT OPTIMAIZATION」という発明の名称の米国特許出願第（代理人整理番号第１００１１０５６５−１号）に記載されたような最適化されたメモリ管理によるメモリの時分割方式が含まれ得る。これらの米国特許出願の双方は、その全内容が参照により本明細書に援用される。
【００３４】
ステップ４０８において、タスクプロシージャの各ループネストおよび直線的セグメントについて、ハードウェアプロセッサが生成される。このハードウェアプロセッサは、ステップ４１８に示すように、コスト削減されて同期スケジューリングされたプロセッサ、または、処理エレメントのアレイの形を取ることができる。ステップ４０９において、内部データ構造体の値を収容する最適化されたハードウェアバッファ構成が生成される。最後に、ステップ４１０において、パイプラインコントローラも同様に生成される。このパイプラインコントローラは、各パイプラインセグメントに、特定のタスクについて適切なクロックサイクルで開始するように信号を送る。この処理の結果、１つのパイプラインのレジスタ転送レベル（ＲＴＬ）記述を生成するのに使用できるパイプライン化されたアーキテクチャが提供される。
【００３５】
図５を参照して、本発明による別の方法の一実施の形態はステップ５０１で開始することができる。ステップ５０２において、パイプラインによって提供される所望のスループットと共にタスクプロシージャが読み込まれる。前述したように、タスクプロシージャは、図３に関して図示して説明したような１組の命令として提供することができる。ステップ５１５に示すように、タスクプロシージャは、例えばＣプログラミング言語といった標準プログラミング言語で表すことができる。ステップ５１６に示すように、スループットは、ＭＩＴＩの形で提供することができる。これらの入力の結果、ステップ５０３において、パイプラインによって使用される繰り返し空間、入力、出力、および内部データ構造体が特定される。ステップ５０４において、命令文間のすべての依存関係の解析が行われ、すべての依存関係が見つけられる。ステップ５０５において、タスクプロシージャのデータフローグラフ表現が構築される。ステップ５０６において、このデータフローグラフが、接続された部分グラフにセグメント化される。このセグメント化は、ヒューリスティックアルゴリズムを使用して自動的に導出することもできるし、ユーザが提供して、自動設計プロシージャが受け取ることもできる。
【００３６】
ステップ５０７において、スケジュールに対するユーザの制約条件を、ユーザによるアフィンマルチスケジュールのいくつかのコンポーネントの仕様の形で受け取ることができる。これらの制約条件によって、ユーザは、とりわけ、入力を読み込むのに必要な順序またはパイプラインからの出力を書き込むのに必要な順序を指定することが可能になる。
【００３７】
次に、ステップ５０８から５１２が、その補助的なステップ５１７から５２１と共に、ステップ５０６で決定された部分グラフのそれぞれについて１回、繰り返される。これらのステップは、セグメント化されたデータフローグラフの各部分グラフの同期ハードウェアサブパイプラインおよび制御ユニットのハードウェア記述を生成するマクロステップを構成する。これらのステップの説明は以下の通りである。
【００３８】
ステップ５０８において、有効で望ましいマルチスケジュールを提供する計算を実行することができる。このような計算は、各ループネストの処理エレメントの個数およびそれら処理エレメントの開始間隔を決定するステップ５１９を含むことができる。マルチスケジュールの部分的な仕様等、ユーザが指定した制約条件はステップ５１７で順守される。ステップ５０８のさらに詳細な内容は以下で説明する。内部データ構造体にアクセスする方法の最適化が、ステップ５０９において行われ、マルチスケジュールの知識を利用して、内部データ構造体の記憶に使用されるハードウェアバッファのサイズが削減される。このような最適化は、１つまたは複数の内部データ構造体を実施するバッファストレージのタイプを選択するステップ（例えばステップ５２０）を含むことができる。内部配列の場合、ステップ５１８に示すように、配列の記憶に必要なメモリ量を最小にするために、このような最適化は、その配列のメモリ位置へのフォールディングされたマッピングを決定することを含むことができる。内部データ構造体のサイズを削減するか、または、最小にする技法には、同時係属中の米国特許出願第（代理人整理番号第１００１１０５６４−１号）に記載されたような、データ配列のメモリへのフォールディングされたマッピングを通じたメモリの時分割方式が含まれ得る。
【００３９】
ステップ５１０において、タスクプロシージャの各ループネストおよび直線的セグメントについて、ハードウェアプロセッサが生成される。当該ハードウェアプロセッサは、ステップ５２１に示すように、コスト削減されて同期スケジューリングされたプロセッサ、または、処理エレメントのアレイの形を取ることができる。ステップ５１１において、内部データ構造体の値を収容する最適化されたハードウェアバッファ構成が生成される。ステップ５１２において、パイプラインコントローラも同様に生成される。このパイプラインコントローラは、各パイプラインセグメントに、特定のタスクについて適切なクロックサイクルで開始するように信号を送る。この処理の結果、非同期複合パイプラインにおける１つの同期サブパイプラインのレジスタ転送レベル（ＲＴＬ）記述を生成するのに使用できるパイプライン化されたアーキテクチャが提供される。
【００４０】
最後に、ステップ５１３において、同期ハードウェアと、先に作成された（部分グラフごとに１つの）同期サブパイプラインを接続する拡張可能データバッファとのハードウェア記述が生成される。この処理の結果、タスクプロシージャを実施する非同期複合パイプラインのＲＴＬハードウェア記述が作成される。
【００４１】
本発明のさまざまな実施の形態の特徴は、最適化されて静的に選択されたアフィンマルチスケジュールの使用を含むことができる。アフィンマルチスケジュールの使用によって、ランタイム同期を行う時間および資源を浪費しない効率的なハードウェアの構築がサポートされる。すべての可能な合法的アフィンマルチスケジュールの中から選択されたスケジュールが、ハードウェア実施コストを最小にすると同時に、必要な性能基準を達成するという意味で、マルチスケジュールは最適化される。このマルチスケジュールは、自動的に特定することができる。
【００４２】
マルチスケジュールは、各繰り返し空間のアフィンスケジュールｋから構成することができる。このアフィンスケジュールは、定数項ｋ＿０および線形項（ｋ＿１，…，ｋ＿ｄ）を有する。これらの項のすべては整数を表す。繰り返し空間の全スケジュール長が、
（ｍａｘ  ｉｔｅｒａｔｉｏｎ＿ｓｔａｒｔ＿ｔｉｍｅ（ｉ）−ｍｉｎ  ｉｔｅｒａｔｉｏｎ＿ｓｔａｒｔ＿ｔｉｍｅ（ｉ））
に等しくなるようなそのアフィンスケジュールが与えられると、当該全スケジュール長を計算することができる。
ここで、ｉは、繰り返し空間にわたって変化し、ｉｔｅｒａｔｉｏｎ＿ｓｔａｒｔ＿ｔｉｍｅ（ｉ）は、クロックサイクル、または、ユーザがＭＩＴＩを指定するのに使用する他の単位で与えることができる。したがって、マルチスケジュールは、各繰り返し空間の全スケジュール長がＭＩＴＩより小さい場合に十分高速である。
【００４３】
マルチスケジュールを見つけるのに、単一のループネストの繰り返し間の依存関係、および、異なるループネストの繰り返し間の依存関係を考慮することもできる。これらの依存関係によって、マルチスケジュールが有効であるかどうかが判断される。単一のループネストの繰り返し間の依存関係の場合、スケジュールベクトルｋの線形部分が、一定の線形不等式を満たすことが必要とされ、これは依存関係の解析によって決定される。他の繰り返し空間のスケジュールベクトルは関係することはなく、定数項を考慮する必要はない。逐次制御フローにおいて、ループネストの一方が必然的に他方のループネストに先行するが、この異なるループネストの命令文間の依存関係の場合、状況は幾分異なる。この場合、マルチスケジュールの線形項がたまたま何であろうとも、後続のネストのスケジュールにおいて十分に大きな定数項ｋ＿０を選択することによって、必要なデータが利用可能となるまで、考慮の対象となっているネストの開始を遅らせることができる。したがって、本発明の一実施の形態による有効なマルチスケジュールを見つける１つの方法は、
−各ループネストの繰り返し空間の有効な線形スケジュールを別々に見つけるステップと、
−ループネストの定数項を順に選択し、有効性を犠牲にすることなく、各定数項を可能な限り小さくするステップと、
を含む。
【００４４】
ステップ４０６は、選択されたマルチスケジュールのハードウェアコストを見積もることをさらに含むことができる。この見積もりは、ハードウェアコストをモデル化すること、静的にスケジューリングされて専用化された専用プロセッサアレイとしての各ステップの実施のコストを計測すること、および、必要に応じて、内部データ構造体の値を保持するステージ間バッファおよびステージ内バッファのコストを計算することによって行うことができる。評価器を使用して、これらのコストを求めることができる。この評価器は、ユーザプログラムおよび提案したマルチスケジュールによって駆動される。その結果の見積もりは、このようなハードウェアコストを最小にするために、見積もったハードウェアコストを選択基準として使用して、提案した有効なマルチスケジュールの中からの選択をサポートする。
【００４５】
ステップ４０８によって指定された処理を実行する１つのプラットフォームには、「プログラムインチップアウト」（ＰＩＣＯ（program in, chip out））技術が含まれる。このＰＩＣＯ技術は、Hewlett-Packard Laboratories（ＨＰＬ）によって開発され、２００１年１０月２日に発行された米国特許６，２９８，０７１号（特許文献１）および米国特許出願第０９／３７８，２８９号および第０９／３７８，４３１号に記載されている。これらはすべて、その全内容が参照に本明細書に援用される。
【００４６】
本発明の別の実施の形態では、タスクプロシージャをデータフローグラフとして自動的に表すことができる。このデータフローグラフでは、各グラフ頂点が、タスクプロシージャの繰り返し空間の１つを表し、グラフエッジが、繰り返し空間と繰り返し空間との間のデータのフローを表す。このデータフローグラフは、各部分グラフが、静的にスケジューリングされた同期パイプラインとしての実施態様に適するように、本発明の方法を使用して、接続された部分グラフにセグメント化することができる。その後、データフローグラフの各部分グラフにつき１つ、それぞれを別々の同期ハードウェアクロック領域で、ハードウェアパイプラインの全体のハードウェアを合成することができる。非同期プロトコルおよびＦＩＦＯやＲＡＭストレージ等の拡張可能記憶素子を使用して、データをバッファリングし、複数のクロック領域に及ぶトランザクションを同期させることができる。部分グラフの１つの可能な実施態様は、スループットが既知であるがスケジュールが動的に決定されるプログラマブルプロセッサへのコンパイルである。
【図面の簡単な説明】
【００４７】
【図１】一般的な従来技術のプロセッサのパイプライン構成のブロック図である。
【図２】本発明の一実施の形態と一致したコンピュータシステムのブロック図である。
【図３】本発明の一実施の形態による、プロセッサのパイプラインの形のハードウェアで実施される一続きのステップを規定するコードの一部である。
【図４】本発明の一実施の形態による、プロセッサパイプラインを合成する時に実行されるステップのフローチャートである。
【図５Ａ】本発明の別の実施の形態による、同期プロセッササブパイプラインで構成される非同期複合パイプラインを合成する時に実行されるステップのフローチャートである。
【図５Ｂ】本発明の別の実施の形態による、同期プロセッササブパイプラインで構成される非同期複合パイプラインを合成する時に実行されるステップのフローチャートである。
【符号の説明】
【００４８】
２００  コンピュータ
２０１  メインメモリ
２０２  コンパイラ
２０３  キャッシュ
２０４  ２次記憶デバイス
２０５  ソースコード
２０６  ＣＰＵ
２０７  ビデオ表示装置
２０８  入出力デバイス
【図１】
2006505061.tif 000003
【図２】
2006505061.tif 000004
【図３】
2006505061.tif 000005
【図４】
2006505061.tif 000006
【図５Ａ】
2006505061.tif 000007
【図５Ｂ】
2006505061.tif 000008
【国際調査報告】
2006505061.tif 000009
2006505061.tif 000010
2006505061.tif 000011