JP2006505061A - プロセッサのパイプラインの設計方法および設計システム - Google Patents

プロセッサのパイプラインの設計方法および設計システム Download PDF

Info

Publication number
JP2006505061A
JP2006505061A JP2004550023A JP2004550023A JP2006505061A JP 2006505061 A JP2006505061 A JP 2006505061A JP 2004550023 A JP2004550023 A JP 2004550023A JP 2004550023 A JP2004550023 A JP 2004550023A JP 2006505061 A JP2006505061 A JP 2006505061A
Authority
JP
Japan
Prior art keywords
pipeline
processor
schedule
designing
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004550023A
Other languages
English (en)
Inventor
ロバート・エス・シュレイバー
シャイル・エイ・グプタ
バントウォール・アール・ロウ
ヴィノッド・ケイ・キャサエル
サントッシュ・ジー・アブラハム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2006505061A publication Critical patent/JP2006505061A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

【課題】 プロセッサのパイプラインの設計の方法、ソフトウェア、およびシステムを提供する。
【解決手段】 パイプラインを設計する方法であって、標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取るステップと、パイプラインの性能要件を受け取るステップと、パイプラインのハードウェア記述を自動的に作成するステップと、を含み、パイプラインは複数の相互接続されたプロセッサステージを備え、プロセッサステージのそれぞれは計算ステップの各1つを実行し、パイプラインはパイプラインの性能要件と一致した特性を有する。

Description

[発明の分野]
本発明は、コンピュータハードウェア設計に関し、特に、プロセッサのパイプラインの設計の方法、ソフトウェア、およびシステムに関する。
[関連出願の相互参照]
本出願は、「SYSTEM AND METHOD OF OPTIMIZING MEMORY USAGE WITH DATA LIFETIMES」という発明の名称の米国特許出願第(代理人整理番号第100110564−1号)、および、「METHOD AND SYSTEM FOR MEMORY MANAGEMENT OPTIMIZATION」という発明の名称の米国特許出願第(代理人整理番号第100110565−1号)、および、「SYSTEM FOR AND A METHOD OF CONTROLLING PIPELINE PROCESS STAGES」という発明の名称の米国特許出願第(代理人整理番号第100110558-1号)に関連する。これらの出願はすべて、その全内容が参照により本明細書に援用される。
[関連技術の説明]
現代の組み込み型システムの計算の大きなクラスは、1つまたは2つ以上のデータストリームに対する変換シーケンスとして表すことができる。このようなシステムの対応するアーキテクチャは、通常、プロセッサのパイプラインとして編成される。このパイプラインでは、各ステージは、初期入力または前のステージの出力からデータを受け取り、そのデータに対する特定のタスクまたは変換を実行し、次のステージ(もしあれば)またはパイプラインの出力へ次々に結果データを渡す。プロセッサという用語は、ここでは、プログラマブルな計算デバイスおよび非プログラマブルな計算デバイスの双方、静的にスケジューリングされた計算デバイスおよび動的にスケジューリングされた計算デバイスの双方を含めて、計算デバイスの広いクラスを包含するのに使用される。ステージ間で渡されるデータは、「きめの細かい」もの(例えば、ワードレベル)であってよいし、「きめの粗い」もの(例えば、データ要素のブロックまたはストライプ)であってもよい。ステージ間のデータ交換は、ステージ間のハンドシェイクメカニズムを使用して同期させることもできるし(例えば、非同期)、システム全体のクロックおよびステージ間の一定遅延によってタイミングを合わせることもできる(例えば、同期オペレーション)。プロセッサのこのようなパイプラインの設計は、各段の初期化、終了化、および制御を含む特定のタスクを実行する各段の設計と、各ステージ対間のバッファリングメカニズムの設計と、プロデューサ(すなわち、送信元または送信側)プロセッサステージおよびコンシューマ(すなわち、宛先または受信側)プロセッサステージのあらゆる対間で使用される同期メカニズムの設計とを含む。このようなパイプラインアーキテクチャは、システムの機能仕様(すなわち、設計文書および/または機能の基準実施態様)を調べて、設計のすべてのコンポーネントおよびパラメータを注意深く特定し、最小コストおよび最大性能を得るためにそれらコンポーネントおよびパラメータを最適化することによって手動で設計される。
さまざまな刊行物が、このような並列システムの設計に取り組んできた。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(非特許文献1)は、並列化または区画化の決定を定式化する前に、最初のステップとして多次元信号のシステムレベル記憶編成を記載している。F. Vermeulen、F. Catthoor、D. Verkest、H. De Manの「Extended Design Reuse Trade-Offs in Hardware-Software Architecture Mapping」、CODES, 2000(非特許文献2)は、必要なすべてのデータが共有メモリに利用可能な場合に、制御フロー検査メカニズムおよび割り込みメカニズムを使用してきめの細かな制御を提供するスイッチングプロトコルを提案している。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(非特許文献3)は、組み込み型システムにおけるデータおよびメモリの最適化に使用されるさまざまな技法の調査を含む。ここで言及したこれらの刊行物および特許ならびにこの明細書全体を通じて言及する他の刊行物および特許は、本発明の技術を示すものであり、その全内容が参照により援用される。
米国特許第6,298,071号 米国特許第5,764,951号 国際公開第01/59593号 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
このような手動設計方法論は、最終的には、パイプラインの設計およびアーキテクチャを提供するが、遅く、エラーを起こしやすく、また、利用可能な時間資源および人資源の制約内で最適な設計結果を達成しないことがある。
本発明の一つの態様によると、パイプラインを設計する方法は、標準プログラミング言語で表されたタスクプロシージャであって、計算ステップの集合を含む、タスクプロシージャ、を受け取り、パイプラインによって実行されるべき計算機能を規定する役割を果たすステップと、パイプラインの性能要件を受け取るステップと、パイプラインのハードウェア記述を自動的に作成するステップと、を含み、パイプラインは複数の相互接続されたプロセッサステージを備え、プロセッサステージのそれぞれは計算ステップの各1つを実行し、パイプラインはパイプラインの性能要件と一致した特性を有する。
本発明の別の態様によると、パイプラインを設計する方法は、1つまたは2つ以上の命令文を含むタスクプロシージャ、および、パイプラインの所望のスループットを読み込むステップと、繰り返し空間、入力、出力、および内部(すなわち、タスクプロシージャにローカルな)データ構造体を特定するステップと、命令文間の依存関係を解析するステップと、命令文間の少なくとも1つの依存関係を見つけるステップと、有効で望ましいマルチスケジュールであって、このマルチスケジュールは、上記繰り返し空間のそれぞれにおける各ポイントの(上記タスクプロシージャの開始時刻を基準にして相対的な)スケジューリングされた開始時刻、および、このオペレーションが存在する繰り返しの開始時刻を基準として相対的な各オペレーションのスケジューリングされた時刻である、マルチスケジュール、を計算するステップと、マルチスケジュールを使用して少なくとも1つの内部データ構造体のアクセスを最適化し、ハードウェアバッファのサイズを最小にするステップと、各ループネストおよび直線的セグメントのハードウェアプロセッサを生成するステップと、内部データ構造体の値を収容する最適化されたハードウェアバッファを生成するステップと、を含む。
本発明の別の態様によると、パイプラインを設計するシステムであって、1組のプログラム命令を記憶するメモリと、メモリに接続されたプロセッサであって、1組のプログラム命令に応答して、(i)標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取り、(ii)パイプラインの性能要件を受け取り、(iii)パイプラインのハードウェア記述を自動的に作成する、
プロセッサと、を備え、パイプラインは複数の相互接続されたプロセッサステージを備え、プロセッサステージのそれぞれは計算ステップの各1つを実行し、パイプラインはパイプラインの性能要件と一致した特性を有する。
本発明の別の態様によると、コンピュータ可読媒体に記憶されたコンピュータ命令のプログラムは、標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取るステップと、パイプラインの性能要件を受け取るステップと、パイプラインのハードウェア記述を自動的に作成するステップと、
を実行するコンピュータコードを含み、パイプラインは複数の相互接続されたプロセッサステージを備え、プロセッサステージのそれぞれは計算ステップの各1つを実行し、パイプラインはパイプラインの性能要件と一致した特性を有する。
[詳細な説明]
現代の組み込み型システムの計算の大きなクラスは、データストリームに対する変換シーケンスとして表すことができる。この変換シーケンスは、外部源から入力データを受け取る少なくとも1つの開始ステージと、データを外部の宛先に出力する少なくとも1つの終了ステージと、或る個数の中間ステージとを有するプロセスステージの非循環ネットワークによって実行することができる。このプロセスステージの非循環ネットワークは、「一般パイプライン(general pipeline)」(または単に「パイプライン」)として当技術分野では知られている。中間ステージのそれぞれは、少なくとも1つの先行ステージからデータを受け取り、特定の計算または変換を実行し、その結果を少なくとも1つの後続ステージに転送する。「一般パイプライン」の簡単な例は、処理ステージの線形シーケンスから成るリニアパイプラインの一般概念である。このリニアパイプラインでは、パイプラインの第1ステージが入力データを受け取り、パイプラインの各後続ステージが先行ステージからデータを受け取って、データに対して特定の計算または変換を実行し、その結果を次々にパイプラインの次のステージへ渡すことができ、パイプラインの最終ステージの場合には、データを出力することができる。所与の1組の入力データに対する全体的な計算シーケンスは「タスク」と呼ばれ、その入力データについてのパイプラインの各ステージ内の計算は「ステップ」と呼ばれる。パイプラインのステージ間で渡されるデータに加えて、制御情報も、パイプラインのさまざまなステージが自身の機能を適切な時刻に実行することを確保するのに必要な場合がある。パイプラインステージは、例えばレジスタ、FIFO、またはランダムアクセスメモリといったバッファにより分離することができる。このバッファは、パイプラインのさまざまなステージ間でデータを記憶するのに使用することができる。
本発明は、ハードウェアパイプラインまたはパイプラインハードウェアプロセッサを合成する実施の形態を含む。このようなハードウェアパイプラインプロセッサは、データパケットシーケンスに適用されるステップシーケンスを実施する。データパケットシーケンスの各項目は、その一続きのステップにより連続して処理され、データシーケンスの異なる項目は、パイプラインのステージのそれぞれによって並列に処理される。このようなパイプライン構成は、エレクトロニクス産業全体にわたって使用されて高度な計算能力を提供し、特に、写真品質のカラープリンタ、デジタルカメラ等によって実行される画像処理等、大量の「ナンバークランチング」および実時間スループットが必要とされる分野に使用される。
図面の図1を参照して、データがnステッププロセスのステップ1(例えば、プロセッサ等の第1の機能ユニットまたはシステム)に入力され、出力が最終ステップnから提供されるように、パイプラインを構成することができる。この計算の他のステップには、他の入力ストリームを入力することもできるし、この計算の他のステップからは、他の出力ストリームが出てくることもできる。nステップのすべてが、異なるデータに対する処理ではあるが、少なくとも部分的に並列に実行されるように、データはステップ1〜nのそれぞれに沿って進行する。上述したように、このようなアーキテクチャは、例えば、カラーパイプラインの実施およびそれ以外の画像処理の実行を行うデジタルカメラおよびプリンタに使用される。本発明の実施の形態は、いくつかのパイプラインのアーキテクチャを自動的に設計および合成するメカニズムを含む。
図1には図示しないが、パイプラインのあらゆる2つのステージ間には、前のステージから後のステージへ移動中のデータ値を記憶する或る種のバッファが存在することがある。この出願では、これらのハードウェア構造体をステージ間バッファと呼ぶ。ステージ間バッファは、レジスタ、レジスタセットもしくはレジスタファイル、シフトレジスタ、ハードウェアFIFO、ランダムアクセスメモリ(RAM)、またはデータ値を記憶するのに適した他の任意のハードウェア構造体の形を取ることができる。このようなバッファストレージのタイプおよび種類は、コストを最小にするために設計システムによって選択することができる。1つのループネストでしか参照されない内部データ構造体は、最適化されたステージ内バッファストレージに記憶することができ、そのタイプおよび関連パラメータも、コストを最小にするために設計システムによって選択することができる。
本発明の一実施の形態によるメカニズムは、使用されるハードウェア資源に関するすべての判断と、これらの資源に対して実行されるタスクのマッピングおよびスケジューリングと、ステップの初期化、終了化、およびさまざまなステージの開始/停止の制御ロジックの自動生成とを行うことができる。本発明の実施の形態は、パイプラインのいくつかの目標および合成を慎重にバランスさせるステップおよびメカニズムを含むことができる。この目的および合成は、例えば、パイプラインの高スループットを得ること、さまざまなステージの入出力(I/O)レートを整合させること、データブロックの要素の生成順序をデータブロックの要素の消費順序と整合させること、ステージ間バッファのサイズを最小にすることを含む。これらのステップのそれぞれは、本発明のさまざまな実施の形態によって実施される程度に、さらに有利な方法および構造を含むことができる。例えば、ステージ間バッファ資源およびステージ内バッファ資源の必要量の最小化には、バッファ再利用プロシージャを実施することができる。このバッファ再利用プロシージャでは、バッファ資源が時分割方式で利用される。さらに、本発明のさまざまな実施の形態の特徴は、同期メカニズムおよびパイプラインに適した粒度を選択することを含むことができる。
本発明の一実施の形態によると、設計者は、好ましくはループネストのシーケンスの形で計算ステップのシーケンスを記述したプログラムコードのセグメントを提供することによって、パイプラインの機能の記述を提供することができる。ループネストのそれぞれは、パイプラインの各ステージによって実施されるステップの1つを記述する。これに加えて、直線的コードのいくつかの部分をループネスト間に含めることもできる。概念的には、直線的コードのセグメントは、あたかも深度0のループネストのように取り扱うことができる。
本発明の別の態様によると、ユーザは、例えば、タスクをどの頻度でサブミットしてパイプラインにより処理するか等の判定基準を指定することによって所望の性能を記述することが可能になる。これには、ユーザが指定するように、一定の最小間隔がタスク間に必要とされることがある。この間隔は、最小タスク間[開始]間隔(MITI(minimum inter-task [initiation] interval))と呼ばれる。MITIは、タスクをパイプラインを「通じてプッシュする」(すなわちパイプラインによって処理する)ことができる最速レートを指定する。また、設計には、入力の読み込み順序および出力の生成順序に対する制約条件を順守することが必要とされることもある。
図2は、本発明の一実施の形態に準拠したコンピュータ200の詳細図を示している。このコンピュータ200は、メインメモリ201、キャッシュ203、2次記憶デバイス204、中央処理装置(CPU)206、ビデオ表示装置207、および入出力デバイス208を含む。これらはシステムバス209によって接続される。メインメモリ201はコンパイラ202を記憶する。コンパイラ202は、2次記憶デバイス204に記憶されたソースコード205に処理を行い、実行可能オブジェクトコードを生成することができる。簡単にするために、例えばリンクおよびロードを含む関連機能が必要に応じて実行されて、実行可能オブジェクトモジュールが提供されるものと仮定する。したがって、メモリ割り当ては、キャッシュ203用のメモリ割り当てを含めて、ソフトウェアおよび他のシステムの組み合わせによって実行することができる。このソフトウェアおよび他のシステムには、コンパイラ、リンカ、ローダ、専用ユーティリティ等が含まれるが、これらに限定されるものではない。
図2に示すようなシステムを使用すると、適切なプログラムコードを2次記憶デバイス204に記憶して、本発明の実施の形態による方法およびシステムを実施することができる。
図3を参照して、プロセッサのパイプラインによって実施されるプロシージャの一例が提供されている。このプロシージャは、明確に図示されている指定された内部データならびに指定された入力データおよび出力データについて明確に定義されるべきである。このプロシージャの別の望ましい特徴は、当該プロシージャが、ループネストおよび介在する十分に構造化されたコードのシーケンスから構成されて、十分に構造化されているということである。すなわち、とりわけ、プロシージャは「go to」命令文なしに表されることが好ましい。プロシージャ自体の仕様に加えて、パイプラインの所望の性能を提供することができ、これを行う1つの方法がMITIの仕様によるものである。前述したように、MITIは、入力データパケットの到着と到着との間の最小時間を記述する。例えば、MITIが100マシンサイクルである場合、ハードウェアパイプラインは、100サイクルごとに新たなデータパケットを受け取ることが可能でなければならず、したがって、100サイクルごとに、最大1タスクまでのタスクハンドリングレートを保持しなければならない。
好ましくは、本発明の実施の形態は、静的スケジューリングの使用を一部として含む。静的にスケジューリングされたハードウェアでは、タスクプロシージャのあらゆるオペレーションの時刻は、計算中に発生する或る1つまたは複数のイベントの結果として動的に決定される(例えば、非同期)のではなく、(タスクの開始時刻を基準として相対的に)事前に固定される(例えば、同期オペレーション)。
静的スケジューリングは、図3のプロシージャについて例示することができる。図3では、「task_proc」内に5つの割り当て命令文S1〜S5が見られる。これらの割り当て命令文のそれぞれに対して、ループ繰り返し空間が関連付けられ、エンクロージングループ(enclosing loop)インデックス変数の値が関連付けられる。例えば、S1の繰り返し空間は、
{i1|0≦i1<100}
となり、S5について、この空間は、
{(i2,i3)|0≦i2<100 & 0≦i3<5}
となる。直線的コードセグメント、すなわちネスト間に現れるS2やS3等の命令文シーケンスについては、タスクプロシージャの実行の際に命令文のそれぞれの1回の実行に対応して、1つの「ポイント」から成る単一の繰り返し空間が存在する。
静的スケジュールを提供するために、開始時刻をあらゆる繰り返し空間の各繰り返しに関連付けることができる。これらの開始時刻は繰り返しスケジュールを構成する。これに加えて、各繰り返し空間に見られるオペレーションは、そのオペレーションが存在する繰り返しの開始を基準として相対的な開始時刻を有することができる。これらの相対的な開始時刻は、タスクプロシージャの各オペレーションにつき1つ、オペレーションスケジュールを構成する。繰り返しスケジュールとオペレーションスケジュールとを組み合わせることによって、1つのタスクでの実行中に実行されるか、または、実行されることがあるあらゆるオペレーションの、タスクの開始時刻を基準にした相対的な開始時刻が正確に決定される。
使用可能な繰り返しスケジュールを提供するために、繰り返しインデックスベクトルのアフィン関数を使用することができる。整数ベクトルkは、各繰り返し空間に関連付けられる。インデックスベクトルがi=(i_1,i_2,…i_d)である繰り返しにおけるオペレーションの開始時刻は、
iteration_start_time(i)(繰り返し開始時刻)=k_0+i_1k_1+…+i_dk_d
によって与えられる。
すなわち、上記公式で表されるように、繰り返しiは、時刻k_0に、iと(k_1,k_2,…,k_d)とのドット積を加えた時刻に開始する。我々はこれを<k,i>によって表記する。各繰り返し空間について、異なるベクトルkが選択される。
したがって、インデックスベクトルがiによって表記される或る繰り返し空間に現れるオペレーション(図3に示すタスクプロシージャの命令文S5における加算オペレーション等)は、t(op)によって表記される開始時刻を有することができる。この開始時刻は、オペレーションスケジュールによって与えられ、繰り返しiの開始時刻を基準にした相対的な開始時刻である。前のパラグラフで説明したようなアフィン繰り返しスケジュールが使用される場合、繰り返しiに現れるオペレーションのインスタンスは、時刻<k,i>+t(op)で開始するようにスケジューリングされる。このようなスケジュールは、アフィン繰り返しスケジュールおよびオペレーションごとに1つの相対的な開始時刻から成り、シフティッドアフィンスケジュール(shifted-affine schedule)と呼ばれる。
インデックス空間のそれぞれを考慮すると、ループネストの計算を編成するアフィンスケジュールが提供される。単一のループネストからハードウェアプロセッサを作成する適切なメカニズムは、HP labsのPICO−NPAシステムによって提供される。このシステムは、アフィンスケジュールを使用して、ハードウェアプロセッサにより実施されたループネストの指定された計算時刻を得る。このようなシステムを使用すると、マルチループとして関数を指定するタスクプロシージャを呼び出すことが可能である。アフィンスケジュールの集合(ベクトルkとして表される)は、各繰り返し空間につき1つ、アフィン繰り返しマルチスケジュールを提供する。この出願では、本明細書においてアフィン繰り返しマルチスケジュールを単にマルチスケジュールと呼ぶ。オペレーションスケジュールとアフィンマルチスケジュールとを組み合わせることによって、シフティッドマルチスケジュールが構成される。したがって、本発明の実施の形態は、一定の必要な判定基準および一定の望ましい判定基準の双方を満たすシフティッドマルチスケジュールを決定するプロセスを含むことができる。このような必要な判定基準は、時間順序および必要なスループットを含むことができる一方、所望の判定基準は、パイプラインの実現に使用されるハードウェアの削減された総コストを含むことができる。特に、元のプログラムのセマンティクスに違反することなく、シフティッドマルチスケジュールによって指定された時間順序で必要な計算を実行することが可能でなければならない。これは、とりわけ、オペレーションO1によって計算された特定の値を必要とするオペレーションO2が、O1の実行前に実行されるべきでなく、必要なすべての値が、オペレーションO2によって必要とされる時に利用可能であるようにされるべきであることを意味する。シフティッドマルチスケジュールは、この要件を満たす場合に「有効」であるとみなされる。所与のアフィン繰り返しスケジュールが、有効なシフティッドマルチスケジュールを当該所与のアフィン繰り返しスケジュールと共に構成するオペレーションスケジュールを見つけることができるようなプロパティを有するかどうかを判断することは数学的に可能である。したがって、アフィン繰り返しスケジュールは、有効なシフティッドマルチスケジュールを当該アフィン繰り返しスケジュールと共に構成するオペレーションスケジュールを見つけることが可能である場合に有効であるとみなされる。
別の要件は、マルチスケジュールが意味するスループットが、少なくともユーザが必要とするものと同程度に大きくなければならないということである。例えば、ユーザがMITIを指定すると、繰り返し空間のスケジュールの全長(<k,i>の最大値(この空間におけるあらゆる繰り返しの最新の開始時刻)と<k,i>の最小値(あらゆる繰り返しの最も前の開始時刻)との差)は、指定されたMITIよりも小さくなければならない。
本発明の実施の形態は、望ましい判定基準の中でも、ハードウェアの総コストを考慮でき、これを最小にすることができる。一般に、総ハードウェアコストは、指定されたオペレーションの実現に必要なハードウェアおよび内部データ構造体に必要なストレージによって支配される。
本発明の実施の形態は、ハードウェアパイプラインの設計につながるステップを含む。このハードウェアパイプラインは、タスクプロシージャの各ループネストが、処理エレメントのアレイが配備されるパイプラインステージによって実施され、このような各処理エレメントがそれ自体パイプライン化され、かつ、開始間隔(II)によって決定されたレートでループネストの繰り返しを周期的に処理する能力を有するものである。このようなパイプライン化されたプロセッサは、IIのマシンサイクルごとに実行を開始し、ループネストの1つの繰り返しの実行を終了する。本発明の実施の形態は、タスクプロシージャの各ループネストについて、ループネストを実施するパイプラインステージに配備される処理エレメントの個数と、処理エレメントの開始間隔との双方を決定するステップを含み、それによって、必要なMITIを達成する判定基準と一致した方法で、パイプラインステージのスループットを決定する。
概して、本発明の実施の形態は、各繰り返し空間内において、かつ繰り返し空間全体にわたり、データ依存関係を特定するステップ、処理、および/または構造を含む。MITIは、各ループネストの所望のスループットを得るのに必要なプロセッサ数および各プロセッサの能力または性能を決定するのに使用される。依存関係およびスループット情報は、各ループネストの繰り返しのスケジューリング(例えば、パラメータk_1,…,k_nによるアフィンマッピング等、繰り返し空間インデックスベクトルから繰り返しの開始時刻へのマッピングの決定)と、繰り返しの空間へのマッピング(例えば、繰り返しインデックスベクトルから複数のプロセッサエレメントから成るアレイのプロセッサエレメントへのマッピングの決定)と、前のループネストの開始を基準にした相対的な各ループネストの開始の特定(例えば、上記アフィンマッピングにおけるk_0)とを行うのに使用される。或るループネストによって生成されて別のループネストによって消費されるデータは、ステージ間バッファを介して渡される。このステージ間バッファのタイプ、サイズ、およびデータマッピング(そのバッファにおける所与のデータ項目の位置はデータマッピングによって決定される)は、パイプライン設計プロセスによって生成される。1対のループネストのスケジュールは、このようなステージ間バッファのサイズが最小になるように選択される。各ループネストは、その後、各データ構造体のアドレス指定を適切な種類のステージ間バッファに変換するために、特定された繰り返しスケジュールに従って時空ループに変換される。このコードは、その後、アセンブリレベル表現に変換され、それによって、ハードウェア合成に向けて適合した最適化がさらに可能になる。詳細には、まず、各ループは、その繰り返しスケジュールおよびスループット要件に従ってプロセッサアレイに合成することができ、次いで、プロセッサの複数のアレイは、ステージ間バッファを介して通信するパイプラインに互いに「ストリング(strung)」される。バックエンドハードウェア合成ステップは、プロセッサアレイの詳細なハードウェア合成、および、ループの対応する繰り返しの開始時刻を基準にした相対的な各ループ本体の各オペレーションのスケジュールの決定に達することができる。詳細な合成およびオペレーションのスケジューリングの後、ステージ間バッファのアドレス指定およびサイズが一定に維持されることを確保するように、単一のループネストをプロセッサアレイに変換するメカニズムは拡張されることが好ましい。代替的に、このような詳細なオペレーションスケジュールが取得された後、ステージ間バッファハードウェアのタイプおよびサイズ、ならびに、このようなバッファのデータにアクセスするのに使用されるアドレス指定メカニズムは、スケジュールの混乱を補償するように調整することができる。パイプラインの各ステージの初期化および終了化を行うハードウェアも、各ループネストからの「リブイン(livein)」値および「リブアウト(liveout)」値(すなわち、データの最初の使用および最後の使用)の解析に基づいて生成することができる。最後に、事前に特定されたループネストの時間スケジュールを使用して自動的に生成されるパイプライン化されたタイミングコントローラが、パイプラインの各ステージを制御することができる。その後、パイプラインアーキテクチャ全体が、レジスタ転送レベルの標準記述言語で提供される。
本発明の一実施の形態では、繰り返しiのオペレーションは、<k,i>とオペレーションの相対的なスケジュール時刻との合計に等しい時刻でスケジューリングされる。本発明の好ましい実施の形態では、アフィンマルチスケジュール(繰り返し空間ごとに1つのベクトルk)が、本発明の方法に従って最初に決定される。その後、オペレーションスケジュールが決定される。データバッファのパラメータは、オペレーションスケジュールが選択された後に終了化することができる。別の実施の形態では、データバッファのパラメータは、オペレーションスケジュールの前に選択され、オペレーションスケジュールは、その後、パラメータが決定されているデータバッファの使用から導出された制約条件により選択することができる。
図4を参照して、本発明による一方法の一実施の形態は、ステップ401で開始することができる。ステップ402において、タスクプロシージャが、パイプラインによって提供される所望のスループットと共に読み込まれる。上述したように、タスクプロシージャは、図3に関して図示して説明したような1組の命令として提供することができる。ステップ412に示すように、タスクプロシージャは、例えばCプログラミング言語といった標準プログラミング言語で表すことができる。ステップ413に示すように、スループットは、MITIの形で提供することができる。これらの入力に応答して、ステップ403から410のシーケンスが、補助的なステップ414から418と共に実行される。これと共に、これらのステップは、相互接続されて同期スケジューリングされたプロセッサステージとしての同期ハードウェアパイプラインのハードウェア記述を作成するマクロステップを含む。
ステップ403において、パイプラインによって使用される繰り返し空間、入力、出力、および内部データ構造体が特定される。ステップ404において、命令文間のすべての依存関係の解析が行われ、すべての依存関係が見つけられる。ステップ405において、スケジュールに対するユーザの制約条件を、ユーザによるアフィンマルチスケジュールのいくつかのコンポーネントの仕様の形で受け取ることができる。これらの制約条件によって、ユーザは、とりわけ、入力を読み込むのに必要な順序またはパイプラインからの出力を書き込むのに必要な順序を指定することが可能になる。ステップ406において、計算を実行して、有効で望ましいマルチスケジュールを提供することができる。このような計算は、処理エレメント数と、それら処理エレメントの各ループネストの開始間隔とを決定するステップ(図のステップ416)を含むことができる。マルチスケジュールの部分的な仕様等、ユーザが指定した制約条件は、図のようにこのステップ(ステップ414)で順守される。ステップ406のさらに詳細な内容は以下で説明する。内部データ構造体にアクセスする方法の最適化が、ステップ407において行われ、マルチスケジュールの知識を利用して、内部データ構造体の記憶に使用されるハードウェアバッファのサイズが削減される。このような最適化は、1つまたは複数の内部データ構造体を実施するバッファストレージのタイプを選択するステップ(例えばステップ417)を含むことができる。内部配列の場合、ステップ415に示すように、配列の記憶に必要なメモリ量を最小にするために、このような最適化は、その配列のメモリ位置へのフォールディングされたマッピング(folded mapping)を決定することを含むことができる。内部データ構造体のサイズを削減するか、または、最小にする技法には、同時係属中の「OPTIMIZING MEMORY USAGE WITH DATA LIFETIMES」という発明の名称の米国特許出願第(代理人整理番号第100110564−1号)に記載されたような、データ配列のメモリへのフォールディングされたマッピングを通じたメモリの時分割方式、および/または、例えば同時係属中の「METHOD OF AND SYSTEM FOR MEMORY MANAGEMENT OPTIMAIZATION」という発明の名称の米国特許出願第(代理人整理番号第100110565−1号)に記載されたような最適化されたメモリ管理によるメモリの時分割方式が含まれ得る。これらの米国特許出願の双方は、その全内容が参照により本明細書に援用される。
ステップ408において、タスクプロシージャの各ループネストおよび直線的セグメントについて、ハードウェアプロセッサが生成される。このハードウェアプロセッサは、ステップ418に示すように、コスト削減されて同期スケジューリングされたプロセッサ、または、処理エレメントのアレイの形を取ることができる。ステップ409において、内部データ構造体の値を収容する最適化されたハードウェアバッファ構成が生成される。最後に、ステップ410において、パイプラインコントローラも同様に生成される。このパイプラインコントローラは、各パイプラインセグメントに、特定のタスクについて適切なクロックサイクルで開始するように信号を送る。この処理の結果、1つのパイプラインのレジスタ転送レベル(RTL)記述を生成するのに使用できるパイプライン化されたアーキテクチャが提供される。
図5を参照して、本発明による別の方法の一実施の形態はステップ501で開始することができる。ステップ502において、パイプラインによって提供される所望のスループットと共にタスクプロシージャが読み込まれる。前述したように、タスクプロシージャは、図3に関して図示して説明したような1組の命令として提供することができる。ステップ515に示すように、タスクプロシージャは、例えばCプログラミング言語といった標準プログラミング言語で表すことができる。ステップ516に示すように、スループットは、MITIの形で提供することができる。これらの入力の結果、ステップ503において、パイプラインによって使用される繰り返し空間、入力、出力、および内部データ構造体が特定される。ステップ504において、命令文間のすべての依存関係の解析が行われ、すべての依存関係が見つけられる。ステップ505において、タスクプロシージャのデータフローグラフ表現が構築される。ステップ506において、このデータフローグラフが、接続された部分グラフにセグメント化される。このセグメント化は、ヒューリスティックアルゴリズムを使用して自動的に導出することもできるし、ユーザが提供して、自動設計プロシージャが受け取ることもできる。
ステップ507において、スケジュールに対するユーザの制約条件を、ユーザによるアフィンマルチスケジュールのいくつかのコンポーネントの仕様の形で受け取ることができる。これらの制約条件によって、ユーザは、とりわけ、入力を読み込むのに必要な順序またはパイプラインからの出力を書き込むのに必要な順序を指定することが可能になる。
次に、ステップ508から512が、その補助的なステップ517から521と共に、ステップ506で決定された部分グラフのそれぞれについて1回、繰り返される。これらのステップは、セグメント化されたデータフローグラフの各部分グラフの同期ハードウェアサブパイプラインおよび制御ユニットのハードウェア記述を生成するマクロステップを構成する。これらのステップの説明は以下の通りである。
ステップ508において、有効で望ましいマルチスケジュールを提供する計算を実行することができる。このような計算は、各ループネストの処理エレメントの個数およびそれら処理エレメントの開始間隔を決定するステップ519を含むことができる。マルチスケジュールの部分的な仕様等、ユーザが指定した制約条件はステップ517で順守される。ステップ508のさらに詳細な内容は以下で説明する。内部データ構造体にアクセスする方法の最適化が、ステップ509において行われ、マルチスケジュールの知識を利用して、内部データ構造体の記憶に使用されるハードウェアバッファのサイズが削減される。このような最適化は、1つまたは複数の内部データ構造体を実施するバッファストレージのタイプを選択するステップ(例えばステップ520)を含むことができる。内部配列の場合、ステップ518に示すように、配列の記憶に必要なメモリ量を最小にするために、このような最適化は、その配列のメモリ位置へのフォールディングされたマッピングを決定することを含むことができる。内部データ構造体のサイズを削減するか、または、最小にする技法には、同時係属中の米国特許出願第(代理人整理番号第100110564−1号)に記載されたような、データ配列のメモリへのフォールディングされたマッピングを通じたメモリの時分割方式が含まれ得る。
ステップ510において、タスクプロシージャの各ループネストおよび直線的セグメントについて、ハードウェアプロセッサが生成される。当該ハードウェアプロセッサは、ステップ521に示すように、コスト削減されて同期スケジューリングされたプロセッサ、または、処理エレメントのアレイの形を取ることができる。ステップ511において、内部データ構造体の値を収容する最適化されたハードウェアバッファ構成が生成される。ステップ512において、パイプラインコントローラも同様に生成される。このパイプラインコントローラは、各パイプラインセグメントに、特定のタスクについて適切なクロックサイクルで開始するように信号を送る。この処理の結果、非同期複合パイプラインにおける1つの同期サブパイプラインのレジスタ転送レベル(RTL)記述を生成するのに使用できるパイプライン化されたアーキテクチャが提供される。
最後に、ステップ513において、同期ハードウェアと、先に作成された(部分グラフごとに1つの)同期サブパイプラインを接続する拡張可能データバッファとのハードウェア記述が生成される。この処理の結果、タスクプロシージャを実施する非同期複合パイプラインのRTLハードウェア記述が作成される。
本発明のさまざまな実施の形態の特徴は、最適化されて静的に選択されたアフィンマルチスケジュールの使用を含むことができる。アフィンマルチスケジュールの使用によって、ランタイム同期を行う時間および資源を浪費しない効率的なハードウェアの構築がサポートされる。すべての可能な合法的アフィンマルチスケジュールの中から選択されたスケジュールが、ハードウェア実施コストを最小にすると同時に、必要な性能基準を達成するという意味で、マルチスケジュールは最適化される。このマルチスケジュールは、自動的に特定することができる。
マルチスケジュールは、各繰り返し空間のアフィンスケジュールkから構成することができる。このアフィンスケジュールは、定数項k_0および線形項(k_1,…,k_d)を有する。これらの項のすべては整数を表す。繰り返し空間の全スケジュール長が、
(max iteration_start_time(i)−min iteration_start_time(i))
に等しくなるようなそのアフィンスケジュールが与えられると、当該全スケジュール長を計算することができる。
ここで、iは、繰り返し空間にわたって変化し、iteration_start_time(i)は、クロックサイクル、または、ユーザがMITIを指定するのに使用する他の単位で与えることができる。したがって、マルチスケジュールは、各繰り返し空間の全スケジュール長がMITIより小さい場合に十分高速である。
マルチスケジュールを見つけるのに、単一のループネストの繰り返し間の依存関係、および、異なるループネストの繰り返し間の依存関係を考慮することもできる。これらの依存関係によって、マルチスケジュールが有効であるかどうかが判断される。単一のループネストの繰り返し間の依存関係の場合、スケジュールベクトルkの線形部分が、一定の線形不等式を満たすことが必要とされ、これは依存関係の解析によって決定される。他の繰り返し空間のスケジュールベクトルは関係することはなく、定数項を考慮する必要はない。逐次制御フローにおいて、ループネストの一方が必然的に他方のループネストに先行するが、この異なるループネストの命令文間の依存関係の場合、状況は幾分異なる。この場合、マルチスケジュールの線形項がたまたま何であろうとも、後続のネストのスケジュールにおいて十分に大きな定数項k_0を選択することによって、必要なデータが利用可能となるまで、考慮の対象となっているネストの開始を遅らせることができる。したがって、本発明の一実施の形態による有効なマルチスケジュールを見つける1つの方法は、
−各ループネストの繰り返し空間の有効な線形スケジュールを別々に見つけるステップと、
−ループネストの定数項を順に選択し、有効性を犠牲にすることなく、各定数項を可能な限り小さくするステップと、
を含む。
ステップ406は、選択されたマルチスケジュールのハードウェアコストを見積もることをさらに含むことができる。この見積もりは、ハードウェアコストをモデル化すること、静的にスケジューリングされて専用化された専用プロセッサアレイとしての各ステップの実施のコストを計測すること、および、必要に応じて、内部データ構造体の値を保持するステージ間バッファおよびステージ内バッファのコストを計算することによって行うことができる。評価器を使用して、これらのコストを求めることができる。この評価器は、ユーザプログラムおよび提案したマルチスケジュールによって駆動される。その結果の見積もりは、このようなハードウェアコストを最小にするために、見積もったハードウェアコストを選択基準として使用して、提案した有効なマルチスケジュールの中からの選択をサポートする。
ステップ408によって指定された処理を実行する1つのプラットフォームには、「プログラムインチップアウト」(PICO(program in, chip out))技術が含まれる。このPICO技術は、Hewlett-Packard Laboratories(HPL)によって開発され、2001年10月2日に発行された米国特許6,298,071号(特許文献1)および米国特許出願第09/378,289号および第09/378,431号に記載されている。これらはすべて、その全内容が参照に本明細書に援用される。
本発明の別の実施の形態では、タスクプロシージャをデータフローグラフとして自動的に表すことができる。このデータフローグラフでは、各グラフ頂点が、タスクプロシージャの繰り返し空間の1つを表し、グラフエッジが、繰り返し空間と繰り返し空間との間のデータのフローを表す。このデータフローグラフは、各部分グラフが、静的にスケジューリングされた同期パイプラインとしての実施態様に適するように、本発明の方法を使用して、接続された部分グラフにセグメント化することができる。その後、データフローグラフの各部分グラフにつき1つ、それぞれを別々の同期ハードウェアクロック領域で、ハードウェアパイプラインの全体のハードウェアを合成することができる。非同期プロトコルおよびFIFOやRAMストレージ等の拡張可能記憶素子を使用して、データをバッファリングし、複数のクロック領域に及ぶトランザクションを同期させることができる。部分グラフの1つの可能な実施態様は、スループットが既知であるがスケジュールが動的に決定されるプログラマブルプロセッサへのコンパイルである。
一般的な従来技術のプロセッサのパイプライン構成のブロック図である。 本発明の一実施の形態と一致したコンピュータシステムのブロック図である。 本発明の一実施の形態による、プロセッサのパイプラインの形のハードウェアで実施される一続きのステップを規定するコードの一部である。 本発明の一実施の形態による、プロセッサパイプラインを合成する時に実行されるステップのフローチャートである。 本発明の別の実施の形態による、同期プロセッササブパイプラインで構成される非同期複合パイプラインを合成する時に実行されるステップのフローチャートである。 本発明の別の実施の形態による、同期プロセッササブパイプラインで構成される非同期複合パイプラインを合成する時に実行されるステップのフローチャートである。
符号の説明
200 コンピュータ
201 メインメモリ
202 コンパイラ
203 キャッシュ
204 2次記憶デバイス
205 ソースコード
206 CPU
207 ビデオ表示装置
208 入出力デバイス

Claims (23)

  1. パイプラインを設計する方法であって、
    標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取るステップと、
    前記パイプラインの性能要件を受け取るステップと、
    前記パイプラインのハードウェア記述を自動的に作成するステップと、
    を含み、
    前記パイプラインは複数の相互接続されたプロセッサステージを備え、該プロセッサステージのそれぞれは前記計算ステップの各1つを実行し、前記パイプラインは該パイプラインの前記性能要件と一致した特性を有する、
    方法。
  2. 前記性能要件は、最小タスク間間隔(MITI)パラメータ値の定義を含む、請求項1に記載のパイプラインを設計する方法。
  3. 前記パイプラインのハードウェア記述を自動的に作成する前記ステップは、
    前記タスクプロシージャと一致した1組の繰り返し空間を決定するステップと、
    有効で望ましいアフィンマルチスケジュールを決定するステップと、
    該アフィンマルチスケジュールと一致した機能を提供するハードウェアパイプラインおよび関連した制御メカニズムの記述を生成するステップと、
    をさらに含む、請求項1に記載のパイプラインを設計する方法。
  4. 有効で望ましいアフィンマルチスケジュールを決定する前記ステップは、前記マルチスケジュールの或る部分の仕様等の設計者が指定した制約条件を順守することをさらに含む、請求項3に記載のパイプラインを設計する方法。
  5. 有効で望ましいマルチスケジュールを決定する前記ステップは、複数の繰り返し空間のそれぞれにつき、プロセッサカウントおよび開始間隔を決定するステップをさらに含む、請求項3に記載のパイプラインを設計する方法。
  6. 前記パイプラインのハードウェア記述を自動的に作成する前記ステップは、前記プロセッサステージのそれぞれのオペレーションを開始するパイプライン制御メカニズムを作成するステップをさらに含む、請求項1に記載のパイプラインを設計する方法。
  7. 前記パイプラインのハードウェア記述を自動的に作成する前記ステップは、
    タスクプロシージャのデータフローグラフをセグメント化するステップと、
    前記セグメント化されたデータフローグラフの各セグメントについて有効で望ましいマルチスケジュールを決定するステップと、
    前記セグメント化されたデータフローグラフの各セグメントについて同期したハードウェアサブパイプラインおよび制御ユニットのハードウェア記述を自動的に生成するステップと、
    前記同期したハードウェアサブパイプライン間の非同期で拡張可能なデータおよび制御インターフェースのハードウェア記述を自動的に生成するステップと、
    をさらに含む、請求項1に記載のパイプラインを設計する方法。
  8. 内部配列データ構造体を特定するステップと、
    該配列データ構造体のそれぞれを実施するバッファストレージのタイプを決定するステップと、
    をさらに含む、請求項3に記載のパイプラインを設計する方法。
  9. 前記配列のフォールディング(folding)を決定するステップと、
    RAMバッファストレージであって、サイズが、前記内部配列の前記フォールディングと一致して縮小された、RAMバッファストレージ、の実施態様を決定するステップと、
    をさらに含む、請求項8に記載のパイプラインを設計する方法。
  10. 前記計算ステージは、コスト削減されて同期スケジューリングされたプロセッサとして実施されたパイプラインステージを備える、請求項3に記載のパイプラインを設計する方法。
  11. 前記コスト削減されて同期スケジューリングされたプロセッサは、処理エレメントのアレイを備える、請求項10に記載のパイプラインを設計する方法。
  12. 前記コスト削減されて同期スケジューリングされたプロセッサはプログラマブルでない、請求項10に記載のパイプラインを設計する方法。
  13. パイプラインを設計する方法であって、
    該パイプラインの1つまたは2つ以上の命令文を含むタスクプロシージャおよび所望のスループットを読み込むステップと、
    繰り返し空間、入力、出力、および内部データ構造体を特定するステップと、
    命令文間の依存関係を解析するステップと、
    前記命令文間の少なくとも1つの依存関係を見つけるステップと、
    有効で望ましいマルチスケジュールを計算するステップと、
    前記マルチスケジュールを使用して少なくとも1つの内部データ構造体のアクセスを最適化し、ハードウェアバッファのサイズを最小にするステップと、
    各ループネストおよび直線的セグメントのハードウェアプロセッサを生成するステップと、
    前記内部データ構造体の値を収容する最適化されたハードウェアバッファを生成するステップと、
    を含む方法。
  14. パイプラインを設計するシステムであって、
    1組のプログラム命令を記憶するメモリと、
    該メモリに接続されたプロセッサであって、前記1組のプログラム命令に応答して、
    (i)標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取り、
    (ii)前記パイプラインの性能要件を受け取り、
    (iii)前記パイプラインのハードウェア記述を自動的に作成する、
    プロセッサと、
    を備え、
    前記パイプラインは複数の相互接続されたプロセッサステージを備え、前記プロセッサステージのそれぞれは前記計算ステップの各1つを実行し、前記パイプラインは該パイプラインの前記性能要件と一致した特性を有する、
    システム。
  15. 前記性能要件は、最小タスク間間隔(MITI)パラメータ値の定義を含み、前記プロセッサは、前記MITIに応じて前記ハードウェア記述を作成する、請求項14に記載のパイプラインを設計するシステム。
  16. 前記プロセッサは、さらに、前記1組のプログラム命令に応答して、
    有効で望ましいアフィンマルチスケジュールを決定し、
    該アフィンマルチスケジュールと一致した機能を提供するハードウェアパイプラインおよび関連した制御メカニズムの記述を生成する、
    請求項14に記載のパイプラインを設計するシステム。
  17. 前記プロセッサは、さらに、前記1組のプログラム命令に応答して、
    内部配列データ構造体のフォールディングを決定し、
    RAMバッファストレージの実施態様を決定し、
    該RAMバッファストレージは、サイズが、前記内部配列の前記フォールディングと一致して縮小される、
    請求項16に記載のパイプラインを設計するシステム。
  18. 前記計算ステージは、コスト削減されて同期スケジューリングされたプロセッサとして実施されたパイプラインステージを備える、請求項16に記載のパイプラインを設計するシステム。
  19. コンピュータ可読媒体に記憶されたコンピュータ命令のプログラムであって、
    標準プログラミング言語で表されたタスクプロシージャであって、計算ステップのシーケンスを含む、タスクプロシージャ、を受け取るステップと、
    前記パイプラインの性能要件を受け取るステップと、
    前記パイプラインのハードウェア記述を自動的に作成するステップと、
    を実行するコンピュータコードを含み、
    前記パイプラインは複数の相互接続されたプロセッサステージを備え、前記プロセッサステージのそれぞれは前記計算ステップの各1つを実行し、前記パイプラインは該パイプラインの前記性能要件と一致した特性を有する、
    プログラム。
  20. 前記性能要件は、最小タスク間間隔(MITI)パラメータ値の定義を含む、請求項19に記載のコンピュータ可読媒体に記憶されたコンピュータ命令のプログラム。
  21. 前記プログラムは、
    有効で望ましいアフィンマルチスケジュールを決定するステップと、
    該アフィンマルチスケジュールと一致した機能を提供するハードウェアパイプラインおよび関連した制御メカニズムの記述を生成するステップと、
    を実行するコンピュータコードをさらに含む、
    請求項19に記載のコンピュータ可読媒体に記憶されたコンピュータ命令のプログラム。
  22. 内部配列のフォールディングを決定するステップと、
    RAMバッファストレージであって、サイズが、前記内部配列の前記フォールディングと一致して縮小された、RAMバッファストレージ、の実施態様を決定するステップと、
    を実行するコンピュータコードをさらに含む、請求項21に記載のコンピュータ可読媒体に記憶されたコンピュータ命令のプログラム。
  23. 前記計算ステージは、コスト削減されて同期スケジューリングされたプロセッサとして実施されたパイプラインステージを備える、請求項21に記載のコンピュータ可読媒体に記憶されたコンピュータ命令のプログラム。
JP2004550023A 2002-10-31 2003-10-10 プロセッサのパイプラインの設計方法および設計システム Pending JP2006505061A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/284,932 US7107199B2 (en) 2002-10-31 2002-10-31 Method and system for the design of pipelines of processors
PCT/US2003/032340 WO2004042623A2 (en) 2002-10-31 2003-10-10 Method and system for the design of pipelines of processors

Publications (1)

Publication Number Publication Date
JP2006505061A true JP2006505061A (ja) 2006-02-09

Family

ID=32175032

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004550023A Pending JP2006505061A (ja) 2002-10-31 2003-10-10 プロセッサのパイプラインの設計方法および設計システム

Country Status (5)

Country Link
US (1) US7107199B2 (ja)
EP (1) EP1559041A2 (ja)
JP (1) JP2006505061A (ja)
AU (1) AU2003282604A1 (ja)
WO (1) WO2004042623A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006350849A (ja) * 2005-06-17 2006-12-28 Toshiba Corp 動作合成装置及び自動動作合成方法
JP2010015339A (ja) * 2008-07-02 2010-01-21 Sharp Corp 動作合成装置、動作合成方法、プログラム、記録媒体、および半導体集積回路の製造方法
JP2012118835A (ja) * 2010-12-02 2012-06-21 Nec Corp 動作合成システム、動作合成方法、動作合成用プログラム及び半導体装置
JP2012174268A (ja) * 2011-02-17 2012-09-10 Maxeler Technologies Ltd 並列パイプライン化ハードウェアにおけるストリームスケジューリング方法および装置
JP2014225194A (ja) * 2013-05-17 2014-12-04 国立大学法人 筑波大学 ハードウェア設計装置,及びハードウェア設計用プログラム

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8087010B2 (en) * 2007-09-26 2011-12-27 International Business Machines Corporation Selective code generation optimization for an advanced dual-representation polyhedral loop transformation framework
US8087011B2 (en) * 2007-09-26 2011-12-27 International Business Machines Corporation Domain stretching for an advanced dual-representation polyhedral loop transformation framework
US8056065B2 (en) * 2007-09-26 2011-11-08 International Business Machines Corporation Stable transitions in the presence of conditionals for an advanced dual-representation polyhedral loop transformation framework
US8060870B2 (en) * 2007-09-26 2011-11-15 International Business Machines Corporation System and method for advanced polyhedral loop transformations of source code in a compiler
US8402449B1 (en) 2008-01-10 2013-03-19 The Mathworks, Inc. Technique for automatically assigning placement for pipeline registers within code generated from a program specification
US8127262B1 (en) * 2008-12-18 2012-02-28 Xilinx, Inc. Communicating state data between stages of pipelined packet processor
WO2013010159A1 (en) * 2011-07-14 2013-01-17 Siemens Corporation Reducing the scan cycle time of control applications through multi-core execution of user programs
JP5979966B2 (ja) * 2012-05-10 2016-08-31 三菱電機株式会社 回路設計支援装置及び回路設計支援方法及びプログラム
US9251554B2 (en) * 2012-12-26 2016-02-02 Analog Devices, Inc. Block-based signal processing
GB2523188A (en) * 2014-02-18 2015-08-19 Ibm Method and system for pipeline depth exploration in a register transfer level design description of an electronic circuit
US9813381B2 (en) * 2014-06-18 2017-11-07 Open Text Sa Ulc Flexible and secure transformation of data using stream pipes
US9875104B2 (en) * 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10248908B2 (en) 2017-06-19 2019-04-02 Google Llc Alternative loop limits for accessing data in multi-dimensional tensors
GB2568776B (en) 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064819A (en) 1993-12-08 2000-05-16 Imec Control flow and memory management optimization
US5455938A (en) 1994-09-14 1995-10-03 Ahmed; Sultan Network based machine instruction generator for design verification
US5764951A (en) 1995-05-12 1998-06-09 Synopsys, Inc. Methods for automatically pipelining loops
US5742814A (en) 1995-11-01 1998-04-21 Imec Vzw Background memory allocation for multi-dimensional signal processing
DE69804708T2 (de) 1997-03-29 2002-11-14 Imec Vzw Verfahren und Gerät für Grössenoptimierung von Speichereinheiten
JP3291238B2 (ja) 1998-02-19 2002-06-10 富士通株式会社 プロセッサのシミュレータ及びシミュレーション方法
EP0974906A3 (en) 1998-07-24 2008-12-24 Interuniversitair Microelektronica Centrum Vzw Method for determining an optimized memory organization of a digital device
US6298071B1 (en) 1998-09-03 2001-10-02 Diva Systems Corporation Method and apparatus for processing variable bit rate information in an information distribution system
US6934250B1 (en) * 1999-10-14 2005-08-23 Nokia, Inc. Method and apparatus for an output packet organizer
US6230114B1 (en) 1999-10-29 2001-05-08 Vast Systems Technology Corporation Hardware and software co-simulation including executing an analyzed user program
US6594814B1 (en) * 1999-12-29 2003-07-15 National Science Council Dynamic pipelining approach for high performance circuit design
US6853968B2 (en) * 2000-01-20 2005-02-08 Arm Limited Simulation of data processing apparatus
US6772415B1 (en) 2000-01-31 2004-08-03 Interuniversitair Microelektronica Centrum (Imec) Vzw Loop optimization with mapping code on an architecture
JP2001222442A (ja) * 2000-02-08 2001-08-17 Fujitsu Ltd パイプライン試験方法、パイプライン試験命令生成方法及びその記憶媒体
US6625797B1 (en) 2000-02-10 2003-09-23 Xilinx, Inc. Means and method for compiling high level software languages into algorithmically equivalent hardware representations
WO2001065774A1 (en) * 2000-03-01 2001-09-07 Integrated Telecom Express, Inc. Scaleable architecture for multiple-port, system-on-chip adsl communications systems

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006350849A (ja) * 2005-06-17 2006-12-28 Toshiba Corp 動作合成装置及び自動動作合成方法
JP4580827B2 (ja) * 2005-06-17 2010-11-17 株式会社東芝 動作合成装置及び自動動作合成方法
JP2010015339A (ja) * 2008-07-02 2010-01-21 Sharp Corp 動作合成装置、動作合成方法、プログラム、記録媒体、および半導体集積回路の製造方法
JP2012118835A (ja) * 2010-12-02 2012-06-21 Nec Corp 動作合成システム、動作合成方法、動作合成用プログラム及び半導体装置
JP2012174268A (ja) * 2011-02-17 2012-09-10 Maxeler Technologies Ltd 並列パイプライン化ハードウェアにおけるストリームスケジューリング方法および装置
JP2014225194A (ja) * 2013-05-17 2014-12-04 国立大学法人 筑波大学 ハードウェア設計装置,及びハードウェア設計用プログラム

Also Published As

Publication number Publication date
WO2004042623A3 (en) 2004-12-29
WO2004042623A2 (en) 2004-05-21
US7107199B2 (en) 2006-09-12
AU2003282604A1 (en) 2004-06-07
EP1559041A2 (en) 2005-08-03
US20040088529A1 (en) 2004-05-06

Similar Documents

Publication Publication Date Title
JP2006505061A (ja) プロセッサのパイプラインの設計方法および設計システム
Chatha et al. Hardware-software partitioning and pipelined scheduling of transformative applications
US7509619B1 (en) Auto generation of a multi-staged processing pipeline hardware implementation for designs captured in high level languages
Ku et al. High level synthesis of ASICs under timing and synchronization constraints
US20050193359A1 (en) Method and apparatus for designing circuits using high-level synthesis
Bakshi et al. Partitioning and pipelining for performance-constrained hardware/software systems
WO2006115635A2 (en) Automatic configuration of streaming processor architectures
Van Meerbergen et al. PHIDEO: high-level synthesis for high throughput applications
US7076777B2 (en) Run-time parallelization of loops in computer programs with static irregular memory access patterns
Gogniat et al. Communication synthesis and HW/SW integration for embedded system design
Chen et al. MULTIPAR: Behavioral partition for synthesizing multiprocessor architectures
Teich et al. Exact partitioning of affine dependence algorithms
Haldar et al. Automated synthesis of pipelined designs on FPGAs for signal and image processing applications described in MATLAB
Misra et al. Efficient HW and SW Interface Design for Convolutional Neural Networks Using High-Level Synthesis and TensorFlow
US20220147675A1 (en) Method of realizing a hardware device for executing operations defined by a high-level software code
CN115004150A (zh) 用于预测和调度软件流水化循环中的复制指令的方法和装置
Ku et al. Synthesis of asics with hercules and hebe
Hoang et al. A compiler for multiprocessor DSP implementation
Sriram et al. Statically sceduling communication resources in multiprocessor dsp architectures
JP3028821B2 (ja) 並列化コンパイル方法
Depuydt et al. Clustering techniques for register optimization during scheduling preprocessing
Koster et al. ASIC design using the high-level synthesis system CALLAS: A case study
Corvino et al. Design space exploration for efficient data intensive computing on socs
Styles et al. Exploiting program branch probabilities in hardware compilation
JP6761182B2 (ja) 情報処理装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080814

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090202