JP4330582B2 - Pipelined loop structure by MAP compiler - Google Patents

Pipelined loop structure by MAP compiler Download PDF

Info

Publication number
JP4330582B2
JP4330582B2 JP2005502182A JP2005502182A JP4330582B2 JP 4330582 B2 JP4330582 B2 JP 4330582B2 JP 2005502182 A JP2005502182 A JP 2005502182A JP 2005502182 A JP2005502182 A JP 2005502182A JP 4330582 B2 JP4330582 B2 JP 4330582B2
Authority
JP
Japan
Prior art keywords
loop
node
pipelined
valid
iteration
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.)
Expired - Fee Related
Application number
JP2005502182A
Other languages
Japanese (ja)
Other versions
JP2006510125A5 (en
JP2006510125A (en
Inventor
ハメス,ジェフリー
Original Assignee
エス・アール・シィ・コンピューターズ・インコーポレイテッド
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
Priority claimed from US10/285,299 external-priority patent/US6983456B2/en
Application filed by エス・アール・シィ・コンピューターズ・インコーポレイテッド filed Critical エス・アール・シィ・コンピューターズ・インコーポレイテッド
Publication of JP2006510125A publication Critical patent/JP2006510125A/en
Publication of JP2006510125A5 publication Critical patent/JP2006510125A5/ja
Application granted granted Critical
Publication of JP4330582B2 publication Critical patent/JP4330582B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

関連特許出願との相互参照
本発明は、本発明の譲受人であるコロラド(Colorado)州、コロラド・スプリングス(Colorado Springs)のエス・アール・シィ・コンピューターズ・インコーポレイテッド(SRC Computers, Inc.)に譲渡された、2002年10月31日出願の米国特許出願連続番号第10/285,299号「高級プログラミング言語のプログラムをハイブリッド計算プラットフォームのための統一された実行可能なプログラムに変換するためのプロセス」(" Process For Converting Programs In High-Level Programming Languages To A Unified Executable For Hybrid Computing Platforms ")の主題に関連する主題を含み、その開示はここに引用により援用される。
CROSS REFERENCE TO RELATED PATENT APPLICATIONS This invention is a SRC Computers, Inc. of Colorado Springs, Colorado, the assignee of the present invention. U.S. Patent Application Serial No. 10 / 285,299, filed October 31, 2002, for assigning a high-level programming language program to a unified executable program for a hybrid computing platform. Including subject matter related to the subject matter of “Process For Converting Programs In High-Level Programming Languages To A Unified Executable For Hybrid Computing Platforms”, the disclosure of which is incorporated herein by reference.

著作権表示/許可
この特許文献の開示の一部には、著作権保護の対象となる資料が含まれる。著作権所有者は、米国特許商標局の特許ファイルまたは特許記録に現われるように、特許開示の特許文献の何人による複製にも異議を唱えないが、それ以外ではいかなる著作権をも保有する。以下の表示は、適用可能であれは図面を含む以下に記載のソフトウェアおよびデータに適用される。(C)2002 エス・アール・シィ・コンピューターズ・インコーポレイテッド(SRC Computers, Inc.)。
Copyright Notice / Permission Part of the disclosure of this patent document includes material that is subject to copyright protection. The copyright owner does not object to any reproduction of the patent document of the patent disclosure as it appears in the US Patent and Trademark Office patent file or patent record, but otherwise holds any copyright. The following displays apply to the software and data described below, including the drawings, where applicable. (C) 2002 SRC Computers, Inc.

発明の背景
発明の分野
本発明は、再構成可能なハードウェアコンパイラによって作り出される、パイプライン化されたループ構造に関する。より具体的には、本発明は、数が変動するループサイクルおよび長さが変動するクロックレイテンシを有する、パイプライン化されたループ構造のコンパイルに関する。
Background of the Invention
The present invention relates to pipelined loop structures created by reconfigurable hardware compilers. More specifically, the present invention relates to the compilation of pipelined loop structures having loop cycles that vary in number and clock latencies that vary in length.

関連する背景
命令プロセッサは処理能力が急速に向上し続けているため、かつては専らスーパーコンピュータによってなされていたコンピュータインテンシブな計算に益々頻繁に使われている。しかしながら、たとえばコンピュータインテンシブな画像処理および流体力学的シミュレーションを含む、今日の命令プロセッサで実行するのは未だ現実的ではないコンピュータインテンシブなタスクが、依然存在する。
Related background instruction processors are increasingly being used in computer-intensive computations that were once done exclusively by supercomputers, as processing power continues to improve rapidly. However, there are still computer intensive tasks that are not yet practical to perform with today's instruction processors, including, for example, computer intensive image processing and hydrodynamic simulation.

再構成可能な計算は、計算技術の中で益々注目を集める技術である。伝統的な汎用計算は、1つ以上の汎用プロセッサにおいて順次実行されるコンピュータコードによって特徴付けられる。再構成可能な計算は、フィールドプログラマブルゲートアレイ(FPGA)などの再構成可能なハードウェアを論理ルーチンを実行するようプログラミングすることを特徴とする。   Reconfigurable computation is a technology that is gaining more and more attention among computational technologies. Traditional general purpose computing is characterized by computer code that is executed sequentially on one or more general purpose processors. Reconfigurable computation is characterized by programming reconfigurable hardware, such as a field programmable gate array (FPGA), to perform logic routines.

再構成可能な計算によって、コンピュータインテンシブな処理において著しい性能の進歩がもたらされる。たとえば、再構成可能なハードウェアは従来の命令プロセッサよりさらに多くの並列処理およびパイプライン化の特性を有する論理構成でプログラミングされ得る。さらに、再構成可能なハードウェアは、プログラムによって割当てられたタスクを実行するのに非常に効率のよいカスタム論理構成でプログラミングされ得る。さらに、命令プロセッサと再構成可能なハードウェアとの間でプログラムの処理要件を分担すると、コンピュータの処理能力全体を向上させることができる。   Reconfigurable computations provide significant performance advancements in computer intensive processing. For example, reconfigurable hardware can be programmed with a logical configuration that has more parallel processing and pipelining characteristics than conventional instruction processors. Furthermore, the reconfigurable hardware can be programmed with custom logic configurations that are very efficient to perform tasks assigned by the program. Furthermore, sharing the program processing requirements between the instruction processor and reconfigurable hardware can improve the overall processing power of the computer.

たとえば、Cまたはフォートランなどの高級言語で書かれたソフトウェアプログラムは、MAPコンパイラのある再構成可能なハードウェアで実行可能なソフトウェアに変換され得る。高級言語のループ構造は、MAPコンパイラによって、再構成可能なハードウェアの並行処理およびパイプライン化の特性を発揮する形式に変換され得る。   For example, a software program written in a high-level language such as C or Fortran can be converted to software executable on reconfigurable hardware with a MAP compiler. The loop structure of the high-level language can be converted by the MAP compiler into a format that exhibits reconfigurable hardware parallel processing and pipelining characteristics.

不運なことに、既存のMAPコンパイラは、数ある要件の中でも、ループが終了する前のループ反復の回数が予め定められており、かつループの周期が1クロックであるようなすべてのループ構造のうち小さなサブセットにしか動作しない。したがって、ループが予定の反復数の後に終了してしまわず、かつループが1クロックより大きい周期を有するような、ループ構造をコンパイルできるコンパイラが依然として必要である。   Unfortunately, existing MAP compilers, among other requirements, have all loop structures that have a predetermined number of loop iterations before the loop ends and that have a loop period of one clock. Only works for a small subset. Therefore, there is still a need for a compiler that can compile loop structures such that the loop does not end after a predetermined number of iterations and the loop has a period greater than one clock.

発明の概要
したがって、本発明の1つの実施例は、制御フローデータフローグラフのパイプライン化されたループ構造であって、ループ本体の連続的反復の中で入力値を処理し出力値を生成するループ本体を含み、出力値は、ループ本体に結合される循環ノードによって捉えられ、上記構造はさらに、ループ本体に結合される、最終のループ反復を判断するループ有効ノードと、循環ノードに結合される出力値記憶ノードとを含み、出力値記憶ノードは、ループ有効ノードが最終のループ反復が起ったと判断した後生成される出力値を無視する。
SUMMARY OF THE INVENTION Accordingly, one embodiment of the present invention is a pipelined loop structure of a control flow data flow graph that processes input values and generates output values in successive iterations of the loop body. Including the loop body, the output value is captured by a circular node coupled to the loop body, and the above structure is further coupled to the loop body to determine the final loop iteration, coupled to the loop body, and to the circular node. The output value storage node ignores output values generated after the loop valid node determines that the final loop iteration has occurred.

本発明の他の実施例は、ループ本体の連続的反復の中で入力値を処理して出力値を生成するループ本体を含む、制御フローデータフローグラフのパイプライン化されたループ構造を含み、出力値はループ本体に結合される循環ノードによって捉えられ、さらに、循環ノードに結合されるループドライバノードを含み、ループドライバノードは、周期、すなわち連続した2つのループ反復の実行の間で起るクロックの回数を、ループに対して設定する。   Other embodiments of the present invention include a pipelined loop structure of a control flow data flow graph that includes a loop body that processes input values and generates output values in successive iterations of the loop body; The output value is captured by a circular node that is coupled to the loop body and further includes a loop driver node that is coupled to the circular node, the loop driver node occurring between periods of execution, ie two consecutive loop iterations. Set the number of clocks for the loop.

追加的な新規な特徴が、一部は下記の説明に明示され、一部は下記の明細を考察することで当業者には明らかとなるか、または本発明の実施により学習されるであろう。本発明の特徴と利点とは、付随する請求項の中で特に指摘される、指示、組合せ、および方法によって認識され、会得されるであろう。   Additional novel features will be set forth in part in the description which follows, and in part will be apparent to those of ordinary skill in the art upon review of the following specification, or may be learned by practice of the invention. . The features and advantages of the invention will be realized and attained by means of the instructions, combinations and methods particularly pointed out in the appended claims.

発明の詳細な説明
単純なループ関数においては、ループは、固定した予定の回数を反復してから最終のループ反復の後停止する。対照的に、より複雑なループ関数は、固定した回数を反復した後終了するのではなく、条件が合うまで予測不可能な回数を反復し得る。これらのより複雑なループ関数は最終のループ反復の後も動き続け、そのため、終値の後に続く出力ではない、最終のループ反復出力値を出力記憶ノードが捉えることが困難になる。
Detailed Description of the Invention In a simple loop function, the loop repeats a fixed scheduled number of times and then stops after the final loop iteration. In contrast, a more complex loop function may repeat an unpredictable number of times until a condition is met, rather than exiting after a fixed number of iterations. These more complex loop functions continue to run after the final loop iteration, which makes it difficult for the output storage node to capture the final loop iteration output value, not the output following the closing price.

本発明は、条件が合うまで予測不可能な回数を反復するループ関数を含む、パイプライン化されたループ構造、およびループのパイプライン化の方法を含む。本発明の1つの実施例は、各ループ反復について生成される情報を受け、その情報が最終のループ反復を指示するか否かを判断する、ループ有効ノードを含む。たとえば、各ループ反復について生成された情報はループ有効ノードによって処理され、ループの終了を要求する条件が満たされたか否かが判断される。条件が満たされると、ループ有効ノードは、ループからの次
の出力値が最終のループ反復出力値であることを、終了ノードおよび出力値記憶ノードなどの他のノードに知らせることができる。
The present invention includes a pipelined loop structure and a loop pipelining method that includes a loop function that repeats an unpredictable number of times until a condition is met. One embodiment of the present invention includes a loop valid node that receives information generated for each loop iteration and determines whether the information indicates a final loop iteration. For example, the information generated for each loop iteration is processed by the loop valid node to determine whether a condition requesting the end of the loop has been met. When the condition is met, the loop valid node can inform other nodes, such as the end node and output value storage node, that the next output value from the loop is the final loop iteration output value.

多くのパイプライン化されたループ関数が、1反復につき1クロックよりも大きな周期をさらに必要とする。これらのループ関数と、1クロックサイクルにつき1入力値または1出力値の周波数でのみ動作するパイプライン化されたループ構造とは、互換性がなくてもよい。本発明では、ループ本体に入力される値と値の間で1以上のクロックサイクルが経過するよう周期を調整することができる、ループドライバノードが与えられる。本発明の1つの実施例において、ループドライバノードは周期値「D」を受入れ、D値はループ関数の入力および/または出力の間で経過するクロックサイクルの回数を表わす。   Many pipelined loop functions further require a period greater than one clock per iteration. These loop functions may not be compatible with pipelined loop structures that operate only at a frequency of one input value or one output value per clock cycle. In the present invention, a loop driver node is provided that can adjust the period so that one or more clock cycles elapse between values entered into the loop body. In one embodiment of the invention, the loop driver node accepts a period value “D”, where the D value represents the number of clock cycles that elapse between the input and / or output of the loop function.

図1を参照すると、本発明による、パイプライン化されたループ構造100の1つの実施例が示される。パイプライン化されたループ構造100は、ロードスカラノード104および106とループドライバノード108とにループ関数の実行を開始するよう信号を送る、開始ノード102で始まる。ループドライバノード108は、次に、循環ノード110,112,114に、ロードスカラノード104および106から初期値をロードしてその値をループ本体116に示すよう信号を送る。ループ本体116の各反復において、循環ノード110,112,114は、ループ本体116のそれぞれの反復で生成される出力値を捉え、それらをループ本体116の次の反復のための入力値として送るよう準備する。   Referring to FIG. 1, one embodiment of a pipelined loop structure 100 according to the present invention is shown. Pipelined loop structure 100 begins at start node 102 that signals load scalar nodes 104 and 106 and loop driver node 108 to begin execution of the loop function. The loop driver node 108 then signals the circular nodes 110, 112, 114 to load the initial values from the load scalar nodes 104 and 106 and indicate the values to the loop body 116. At each iteration of the loop body 116, the circular nodes 110, 112, 114 capture the output values generated at each iteration of the loop body 116 and send them as input values for the next iteration of the loop body 116. prepare.

下記にさらに詳細に説明されるように、ループドライバノード108は「D」とラベル付けされた入力を受入れることができ、D値はループ反復の間に追加で起るクロックサイクルの回数を表わす。たとえば、D=0の場合、1反復につき1クロックサイクルであり、D=1の場合は1反復につき2クロックサイクルである。   As described in further detail below, the loop driver node 108 can accept an input labeled “D”, where the D value represents the number of additional clock cycles that occur during the loop iteration. For example, if D = 0, there are 1 clock cycle per iteration, and if D = 1, there are 2 clock cycles per iteration.

D値はループ関数のすべての反復に対して固定されていてもよく、またはより複雑なループ関数動作においては、ループ反復間で変動してもよい。D値はプログラマによって手動で入力されてもよく、またはループ関数の分析に基づいて自動的に計算されてもよい。ループ関数が開始されると、ループドライバノード108は、パイプライン化されたループ構造100において循環ノード110,112,114などの他のノードをアクティブにする速度を、D値を用いて決定する。   The D value may be fixed for all iterations of the loop function, or may vary between loop iterations in more complex loop function operations. The D value may be entered manually by the programmer or automatically calculated based on the analysis of the loop function. When the loop function is initiated, the loop driver node 108 uses the D value to determine the rate at which other nodes, such as the circular nodes 110, 112, 114, in the pipelined loop structure 100 are active.

パイプライン化されたループ構造100におけるループの終了は、循環ノード114と繋がっているループ有効ノード118によって開始できる。1つの実施例において、シングルビット値によって表わせるループ終了信号がループ有効ノード118に入力され、ループの終了を指示する条件が満たされたか否かが判断される。ループ有効ノード118は「無効」出力信号(「偽」信号とも呼ばれる)を循環ノード114に送り、ループ関数が再開されるまで無効な出力信号を送り続ける状態に自らをラッチすることができる。   The end of the loop in the pipelined loop structure 100 can be initiated by a loop valid node 118 connected to the circulation node 114. In one embodiment, a loop end signal, which can be represented by a single bit value, is input to the loop valid node 118 to determine whether a condition for instructing the end of the loop is satisfied. The loop valid node 118 can send an “invalid” output signal (also referred to as a “false” signal) to the circular node 114 and latch itself into a state where it continues to send the invalid output signal until the loop function is resumed.

循環ノード114がループ有効ノード118から無効な出力信号を受取った後、信号は終了ノード120に渡される。終了ノード120は次に出力値記憶ノード122,124をトリガして、ループ本体116の最終のループ反復からの最終のループ反復出力値を捉える準備ができる。この機構により、ループが最終反復の後にフリーランを続けたとしても、出力値記憶ノード122,124は最終のループ反復出力値を捉えることができる。   After circular node 114 receives an invalid output signal from loop valid node 118, the signal is passed to end node 120. The end node 120 is then ready to trigger the output value storage nodes 122, 124 to capture the final loop iteration output value from the final loop iteration of the loop body 116. This mechanism allows the output value storage nodes 122 and 124 to capture the final loop iteration output value even if the loop continues to free run after the final iteration.

ループが終了し、最終のループ反復出力値が出力値記憶ノード122,124に格納されると、続いてそれらの値はラッチアンドノード126によってラッチされ、次に出力ノード128を介して分配される。パイプライン化されたループ構造100において、終了ノード120はラッチアンドノード126にさらに結合され、出力値記憶ノード122,
124からいつ値を捉えるべきかをノード126に知らせることができる。
When the loop is finished and the final loop iteration output values are stored in the output value storage nodes 122, 124, those values are subsequently latched by the latch and node 126 and then distributed via the output node 128. . In the pipelined loop structure 100, the end node 120 is further coupled to a latch and node 126 to provide output value storage nodes 122,
Node 126 can be informed of when to capture the value from 124.

図2を参照すると、図1のループドライバノード108に含まれ得るタイミング信号のタイミング図が示される。CLOCK信号は、クロックサイクルの開始をトリガする、システムのクロック信号から与えられる入力である。START信号はループの開始をトリガする。この信号は開始ノード102から受取られる。CIRC_TRIGGER信号はループが開始していることを循環ノードに知らせる。この信号は、循環ノード110,112,114が初期値をロードするために用いる出力である。LOOP_STARTING信号は、リセットパルスを必要とするノードに、新たなループ実行のために状態をクリアするよう告げる。LEADING信号は初期値をロードするよう定期的入力ノードに告げる。最後に、ACTIVE_LAST信号が各反復の最後のクロックにおいてハイになる。この信号を用いて、パイプライン化されたループ構造100のノードが有効な入力を有することをノードに示す。   Referring to FIG. 2, a timing diagram of timing signals that may be included in the loop driver node 108 of FIG. 1 is shown. The CLOCK signal is an input provided by the system clock signal that triggers the start of a clock cycle. The START signal triggers the start of the loop. This signal is received from the start node 102. The CIRC_TRIGGER signal informs the circular node that the loop has started. This signal is an output that the circular nodes 110, 112, 114 use to load the initial value. The LOOP_STARTING signal tells the node that needs a reset pulse to clear the state for a new loop execution. The LEADING signal tells the periodic input node to load the initial value. Finally, the ACTIVE_LAST signal goes high at the last clock of each iteration. This signal is used to indicate to the node that the node of the pipelined loop structure 100 has a valid input.

ループ運搬されるスカラ変数は、制御フローデータフローのパイプライン化されたループ構造において周期を生成することができる。周期はループ反復間のクロックサイクル数を増やし、それにより、次にD値を上げて、ループ本体と循環ノードとが同期して正しいループ本体出力値を確実に捉え、新たな各ループ反復を開始できるようにする必要がある。   Loop-carried scalar variables can generate periods in the pipelined loop structure of the control flow data flow. The period increases the number of clock cycles between loop iterations, which in turn increases the D value, ensuring that the loop body and the circular node are synchronized to ensure that the correct loop body output value is captured and each new loop iteration is started. It needs to be possible.

図3は、パイプライン化されたループ構造300の部分の例を示し、そこでループドライバノード308のD値は、少なくとも1ループ反復につき追加の4クロックサイクルを表わす4に、設定されなければならない。上記の図1と同様に、パイプライン化されたループ構造300は、ロードスカラノード304,306およびループドライバノード308に信号を送る開始ノード302で、開始する。この例において、D=4の値がループドライバノード308に入力されてループ構造の周波数を1ループ反復につき5クロックサイクルとする。D=4の値は、MULTノード314で体現される乗算マクロの固有のクロックサイクルレイテンシに基づいて選択される。D=4をループドライバノード308に入力することにより、循環ノード310,312は5クロックサイクル毎にMULTノード314に値を入力する。   FIG. 3 shows an example of a portion of a pipelined loop structure 300 where the D value of the loop driver node 308 must be set to 4 representing at least 4 additional clock cycles per loop iteration. Similar to FIG. 1 above, the pipelined loop structure 300 begins with a start node 302 that signals the load scalar nodes 304 and 306 and the loop driver node 308. In this example, a value of D = 4 is input to the loop driver node 308 to set the frequency of the loop structure to 5 clock cycles per loop iteration. The value of D = 4 is selected based on the inherent clock cycle latency of the multiplication macro that is embodied at the MULT node 314. By inputting D = 4 to the loop driver node 308, the circular nodes 310 and 312 input a value to the MULT node 314 every five clock cycles.

一般にD値は、パイプライン化されたループ構造における循環ノードの入力および出力の間の経路の最長のものに比例する。図3は、循環ノード310,312の出力がすべてMULTノード314に送られ、その入力をMULTノード314が直接ノード310,312に送り返す単純な例を示す。より複雑なループ関数と、それらのパイプライン化されたループ構造との例を次にいくつか示す。   In general, the D value is proportional to the longest path between the input and output of the circular node in the pipelined loop structure. FIG. 3 shows a simple example in which all the outputs of the circular nodes 310 and 312 are sent to the MULT node 314 and the inputs are sent directly back to the nodes 310 and 312 by the MULT node 314. Here are some examples of more complex loop functions and their pipelined loop structures:

図4は、1ループ反復につき4クロックサイクルのレイテンシを有する第1の関数(F1)ノード414、および1ループ反復につき6クロックサイクルのレイテンシを有する第2の関数(F2)ノード416がある、制御フローデータフローグラフのパイプライン化されたループ構造400を示す。パイプライン化されたループ構造400は、ロードスカラノード404,406およびループドライバノード408に信号を送る開始ノード402で開始する。この例においてD値は、パイプライン化されたループ構造400におけるループ関数のうち、最長のレイテンシに基づいて選択される。第2の関数(F2)ノードは1反復につき6クロックサイクルの最長レイテンシを有するので、D値は6である。循環ノード410,412は、D値に基づいてタイミングを取られるループドライバから信号を受取り、それにより7クロックサイクル毎に値を第1の関数(F1)ノード414および第2の関数(F2)ノード416に入力する。   FIG. 4 illustrates a control where there is a first function (F1) node 414 having a latency of 4 clock cycles per loop iteration and a second function (F2) node 416 having a latency of 6 clock cycles per loop iteration. Fig. 5 shows a pipelined loop structure 400 of a flow data flow graph. Pipelined loop structure 400 begins at start node 402 that signals load scalar nodes 404 and 406 and loop driver node 408. In this example, the D value is selected based on the longest latency among the loop functions in the pipelined loop structure 400. The second function (F2) node has a longest latency of 6 clock cycles per iteration, so the D value is 6. The circular nodes 410, 412 receive signals from the loop driver that is timed based on the D value, so that the value is sent every seven clock cycles to the first function (F1) node 414 and the second function (F2) node. Input to 416.

図5は、循環ノード516,518,520,522,524とループ関数本体526,528,530,532、534,536,538,540との間に多くの循環経路を
有する、さらに複雑な、パイプライン化されたループ構造500を示す。この例において、ループ関数500の実行は、ロードスカラノード504,506,508,510,512とロードドライバノード514とに信号を送る開始ノード502で開始する。ループドライバノード514に入力されるD値は次の態様で決定され得る。
FIG. 5 shows a more complex pipe with many circulation paths between the circular nodes 516, 518, 520, 522, 524 and the loop function bodies 526, 528, 530, 532, 534, 536, 538, 540. A lined loop structure 500 is shown. In this example, execution of loop function 500 begins at start node 502 that signals load scalar nodes 504, 506, 508, 510, 512 and load driver node 514. The D value input to the loop driver node 514 can be determined in the following manner.

パイプライン化されたループ構造500は、サイクルに関連するノードと関連しないノードとに分けられ得る、循環ノードを有する。サイクルに関連する循環ノードについて、パイプライン化されたループ構造における循環経路は次のように説明され得る。   Pipelined loop structure 500 has circular nodes that can be divided into nodes that are related to the cycle and nodes that are not related to the cycle. For a circular node associated with a cycle, the circular path in a pipelined loop structure can be described as follows.

1.C1→D1→D6→C1
2.C1→D0→D6→C1
3.C1→D2→C2→C3→D4→D6→C1
ここで、C0,C1,C2,C3およびC4は循環ノード516,518,520,522および524のそれぞれのラベルであり、D0,D1,D2,D3,D4,D5,D6およびD7はループ関数ノード526,528,530,632,534,536,538および540のそれぞれのラベルである。
1. C1 → D1 → D6 → C1
2. C1 → D0 → D6 → C1
3. C1->D2->C2->C3->D4->D6-> C1
Here, C0, C1, C2, C3 and C4 are the labels of the circulating nodes 516, 518, 520, 522 and 524, respectively, and D0, D1, D2, D3, D4, D5, D6 and D7 are loop function nodes. 526, 528, 530, 632, 534, 536, 538 and 540, respectively.

D値を決定する際、サイクルに関連しない循環ノードは無視してもよい。なぜならノードのすべての入力に遅延を挿入することでループ本体に押し込まれるからである。この例では循環(C4)ノード524はパイプライン化されたループ構造500のサイクルに関連せず、D値を決定する際に無視される。   In determining the D value, circular nodes not associated with a cycle may be ignored. This is because it is pushed into the loop body by inserting delays into all inputs of the node. In this example, the circular (C4) node 524 is not associated with a cycle of the pipelined loop structure 500 and is ignored in determining the D value.

残りの循環(C0,C1,C2,C3)ノード516,518,520,522については、図6に示される表1のような表が作られ、値が1つの循環ノードから他の循環ノードへと移動するか、または同じ循環ノードに戻るのに、どのループ関数本体を通るかを示す。たとえばセルC0,C0は、値が循環(C0)ノード516から出て元の位置に戻るまでに通らなければならないループ関数本体を特定する。パイプライン化されたループ構造500において、C0は元の位置に戻る循環経路を有しておらず、セルは空のまま残される。対照的に、値が循環(C1)ノード518から出て元の位置に戻るために通ることができる循環経路が存在し、この経路はセルC1,C1においてD1+D6で表わされる。   For the remaining cyclic (C0, C1, C2, C3) nodes 516, 518, 520, and 522, a table such as Table 1 shown in FIG. 6 is created, and the value is changed from one cyclic node to another cyclic node. To indicate which loop function body to go to or return to the same circular node. For example, cells C0 and C0 specify the loop function body that the value must pass before exiting from the cycle (C0) node 516 and returning to its original position. In the pipelined loop structure 500, C0 has no circulation path back to its original position, and the cell is left empty. In contrast, there is a circular path through which the value can be taken to exit the circular (C1) node 518 and return to its original position, which is represented by D1 + D6 in cells C1, C1.

D0からD6のループ関数本体の各々に対してクロックレイテンシが決定され、これらのレイテンシを表1に当てはめて、最長のレイテンシを有する循環経路が決定できる。最長のレイテンシ値を用いて次にDの最小値が設定され、最小値はループドライバノード514に入力されて、パイプライン化されたループ構造500全体の周期を決定する。   Clock latencies are determined for each of the loop function bodies D0 to D6, and these latencies are applied to Table 1 to determine the circular path having the longest latency. The minimum value of D is then set using the longest latency value and the minimum value is input to the loop driver node 514 to determine the overall period of the pipelined loop structure 500.

状態を持つノード:制御フローデータフローのパイプライン化されたループ構造において、ノードの状態をクリアし、各反復がいつ起るかをノードに告げ、ノードの入力がいつ有効であるかをノードに告げるなどの、状態を持つノードに関する問題を扱うために、状態を持つノードは追加的サポートを必要とする。図7は、ループドライバノード708の3個の信号がこの情報を伝えるためにどのよう用いられ得るかを示す。 Node with state: In the pipelined loop structure of the control flow data flow, clear the state of the node, tell the node when each iteration occurs, and tell the node when the node input is valid Stateful nodes need additional support to handle problems with stateful nodes, such as telling. FIG. 7 shows how the three signals of the loop driver node 708 can be used to convey this information.

図7に示されるパイプライン化されたループ構造700の例は、状態を持つノード716の存在を除いては、他のパイプライン化されたループ構造の例と同様に見える。ループ関数は、ロードスカラノード704,706およびループドライバノード708に開始ノード702から信号を送らせることによって実行される。ループドライバノード708がループの周期により決定された速度で循環ノード710,712,714に活性化信号を送る間、ロードスカラノード704,706が循環ノード710,712,714に初期値をロードする。循環ノード710,712,714は1つ以上のループ本体(図示され
ない)に結合され、それは次に状態を持つノード716に結合される。
The example pipelined loop structure 700 shown in FIG. 7 looks similar to other pipelined loop structure examples, except for the presence of stateful nodes 716. The loop function is executed by having the load scalar nodes 704 and 706 and the loop driver node 708 signal from the start node 702. While the loop driver node 708 sends an activation signal to the circulation nodes 710, 712, 714 at a speed determined by the period of the loop, the load scalar nodes 704, 706 load the circulation nodes 710, 712, 714 with initial values. The circular nodes 710, 712, 714 are coupled to one or more loop bodies (not shown), which in turn are coupled to a node 716 having a state.

上述のように、状態を持つノード716に情報を伝えるために、ループドライバノード708によって3個の信号が与えられる。これらのうち最初の信号は「有効」信号と呼ばれ、ループドライバノード708に結合される循環ノード714によって状態を持つノード716に到達する。有効信号はさらに、状態を持つノードが条件式内にある場合、条件式を経ることができる。   As described above, three signals are provided by loop driver node 708 to convey information to stateful node 716. The first of these is called the “valid” signal and arrives at a node 716 having a state by a circular node 714 coupled to the loop driver node 708. The valid signal can also go through a conditional expression if the stateful node is in the conditional expression.

ループ関数の中で条件がどのように構築されるかに依存して、有効な信号は状態を持つノード716から無視されてもよい。ノードを条件テストの中に置くのではなく、ノードに明示的な述語入力を与えることにより、状態を持つノードの条件が扱われると、有効信号は無視されてもよい。例示的に、42より大きなアレイの値をすべて合計するためにアキュムレータを扱う場合の方法を2つ考える。   Depending on how the condition is constructed in the loop function, the valid signal may be ignored from the stateful node 716. Rather than placing the node in a conditional test, the valid signal may be ignored if the condition of the stateful node is handled by giving the node an explicit predicate input. Illustratively, consider two ways to handle an accumulator to sum all the values of an array greater than 42.

Figure 0004330582
Figure 0004330582

下記と比較する。   Compare with:

Figure 0004330582
Figure 0004330582

第2のアプローチでは、コンパイラによって構築されるループ構造は、条件付きデータフローを構築する必要がないのでより単純である。さらに、第1のアプローチでは条件式が真のときのみ値が「res」に割当てられるのに対し、第2のアプローチでは、各反復において値が「res」に割当てられる。したがって、アキュムレータが第2のアプローチによって構築されると、状態を持つノードに対する有効な信号入力は不要であり、信号は無視されてもよい。有効な信号が所望される場合、状態を持つノードは信号を受入れるために1ビット入力で設計されてもよい。 In the second approach, the loop structure built by the compiler is simpler because there is no need to build a conditional data flow. Furthermore, in the first approach, a value is assigned to “res” only when the conditional expression is true, whereas in the second approach, a value is assigned to “res” at each iteration. Thus, when the accumulator is built by the second approach, no valid signal input to the stateful node is necessary and the signal may be ignored. If a valid signal is desired, the stateful node may be designed with a 1-bit input to accept the signal.

状態を持つノード716に対する第2の信号は、ノード内部の状態をクリアするのに用いられる「starting」信号である。この信号はloop_startings出力においてループドライバ708によって生成され得る。ループドライバ708からの信号が状態を持つノード716に到達する前に遅延を経る場合、状態を持つノード716はコードブロックの「code_block_reset」信号に接続されない。なぜなら、ループがコードブロックに入る際にブロックの以前の実行からフリーランを続けている可能性があり、「code_block_reset」信号が遅延を経ていないと「code_block_reset」信号を用いることによりノードがリセットし、コードブロックの以前の実行によって依然生じている値の処理を始める可能性があるか
らである。
The second signal for stateful node 716 is a “starting” signal used to clear the internal state of the node. This signal may be generated by the loop driver 708 at the loop_startings output. If the signal from the loop driver 708 is delayed before reaching the stateful node 716, the stateful node 716 is not connected to the “code_block_reset” signal of the code block. Because when the loop enters the code block, it may continue to free run from the previous execution of the block, and if the "code_block_reset" signal has not been delayed, the node resets by using the "code_block_reset" signal, This is because there is a possibility that processing of values still occurring due to the previous execution of the code block may be started.

状態を持つノード716に対する第3の信号入力は、各ループ反復において最後のクロックサイクルでハイになる信号である。この信号は元来はループドライバノード708から「active_last」信号として出たものであってもよい。状態を持つノード716はこの信号がハイになったのを見ると、入力に有効なデータがあると推定する。   The third signal input to stateful node 716 is the signal that goes high in the last clock cycle in each loop iteration. This signal may originally originate from the loop driver node 708 as an “active_last” signal. When the stateful node 716 sees this signal go high, it assumes that there is valid data at the input.

通常は、状態を持つノード716はループ終了とは無関係である。ループの終了条件が満たされると、対応する結果が捉えられ、そしてループは動き続ける。しかし、ループのコードブロックが次回実行されるまで、状態を持つノード716がその状態を保持しなければならない場合もあり、ノードはループがいつ終了したのかを知る必要がある。この場合、マクロは「有効」入力を用い、「starting」信号を見てもリセットしない。なぜなら、その状態はコードブロック呼出の間保持されることになっているからである。   Normally, a node 716 having a state is independent of the loop end. When the loop termination condition is met, the corresponding result is captured and the loop continues to run. However, there may be cases where the stateful node 716 has to hold that state until the next time the code block of the loop is executed, and the node needs to know when the loop has finished. In this case, the macro uses the “valid” input and does not reset when the “starting” signal is seen. This is because the state is to be held during the code block call.

図8は状態を持つノード716に対して用いられ得る信号のタイミング図の例を示す。この例において、「有効」信号は第1の反復の間ハイである。なぜならループは少なくとも1つの反復を実行するボトムテストループだからである。以後、ハイの「有効」信号は、ループが未だ終了しておらず、ノードが条件内にあると、その条件付きの分岐がとられることを示す。「starting」信号はループが始まる前に1クロックの間ハイになり、状態を持つノード716の状態をクリアするのに用いられることができる。「active_last」信号は各ループ反復において最後のクロックサイクルでハイになり、ループが終了した後であってもこの動作を続ける。状態を持つノード716へのデータ入力は「active_last」信号がハイのとき有効と推定される。   FIG. 8 shows an example of a timing diagram of signals that can be used for stateful node 716. In this example, the “valid” signal is high during the first iteration. This is because the loop is a bottom test loop that performs at least one iteration. Thereafter, a high “valid” signal indicates that if the loop has not yet terminated and the node is in condition, the conditional branch is taken. The “starting” signal goes high for one clock before the loop begins and can be used to clear the state of the stateful node 716. The “active_last” signal goes high on the last clock cycle in each loop iteration and continues this operation even after the loop is finished. Data input to stateful node 716 is assumed to be valid when the “active_last” signal is high.

「leading」信号は定期的入力ノードに適切な同期を与える。1クロックサイクル毎に新たな入力を受入れることができないノードもある。たとえばある整数乗算は、単一のオンチップ乗算機を再使用して3クロック毎にのみ入力を受入れることができる。この問題は、入力の集合とそれに対応する出力との間のクロック遅延の回数であるレイテンシの問題と直交する。ノードが1クロック毎に入力を受入れられない場合は入力が正しく整調された状態に置く必要があり、そこにはノードがいつ新たな入力を受けるかを確立する同期が存在する必要がある。これは「leading」信号によって与えられる関数であり、このようなノードの「valid in」入力に接続され得る。ループドライバノードのD値もさらに、少なくとも定期的入力ノードが正しく動作するのに十分な程度にループを遅らせるよう設定されなければならない。   The “leading” signal provides proper synchronization to the periodic input node. Some nodes cannot accept a new input every clock cycle. For example, some integer multiplications can only accept inputs every 3 clocks using a single on-chip multiplier. This problem is orthogonal to the latency problem, which is the number of clock delays between the set of inputs and the corresponding output. If a node cannot accept an input every clock, it must be put in a correctly tuned state, and there must be a synchronization that establishes when the node receives a new input. This is a function given by the “leading” signal and can be connected to the “valid in” input of such a node. The D value of the loop driver node must also be set to delay the loop at least enough to allow the periodic input node to operate correctly.

本発明で用いられてもよい状態を持つノードには少なくとも2種類がある。1つの種類では、ノードのレイテンシはループの反復周期に拘らず(すなわちループドライバノードへのD入力の値に拘らず)一定である。他の種類では、状態を持つノードのレイテンシはループの反復周期に基づいて変動する。たとえば、出力の生成を開始する前にN個のデータアイテムを受ける状態を持つノードは、ループがループドライバノードによって遅くなる場合、第1の結果が生成される前により多くのクロックサイクルを消費する。状態を保つノードのこの種の動作は、その情報ファイルエントリによって特定される。ノード書込器はこのような状態を持つノードを書込むことを選択し、ループが遅くならない場合、すなわちD=0の場合にのみノードが正しく機能するようにし、かつノードの情報ファイルエントリがその事実を特定しなければならない。   There are at least two types of nodes that may be used in the present invention. In one type, node latency is constant regardless of the loop iteration period (ie, regardless of the value of the D input to the loop driver node). In other types, the latency of stateful nodes varies based on the loop repetition period. For example, a node that has a state that receives N data items before it starts generating output consumes more clock cycles before the first result is generated if the loop is slowed by the loop driver node. . This kind of behavior of the node that maintains state is specified by its information file entry. The node writer chooses to write a node with such a state, makes the node function correctly only if the loop does not slow down, ie D = 0, and the node's information file entry You must identify the facts.

この明細書および付随する特許請求の範囲で使用される「備える」「備えた」「含む」および「含んだ」という用語は、記載される特徴、完全体、構成要素またはステップの存在を特定することを目的としたものであるが、その他1つ以上の特徴、完全体、構成要素、ステップまたは群の存在または追加を除外するものではない。   As used in this specification and the appended claims, the terms “comprising”, “comprising”, “including”, and “included” identify the presence of the described feature, completeness, component, or step. It is intended that this is not to exclude the presence or addition of one or more other features, completeness, components, steps or groups.

本発明の実施例による制御フローデータフローグラフのパイプライン化されたループ構造の例を示す図である。FIG. 6 illustrates an example of a pipelined loop structure of a control flow data flow graph according to an embodiment of the present invention. ループ反復の間が2クロックサイクルであるループドライバノードのタイミング図の例を示す図である。FIG. 6 is an example timing diagram for a loop driver node with 2 clock cycles between loop iterations. ループ運搬されるスカラサイクルを持つループを有する制御フローデータフローグラフのパイプライン化されたループ構造の例を示す図である。FIG. 5 is a diagram illustrating an example of a pipelined loop structure of a control flow data flow graph having a loop with a scalar cycle carried by the loop. 2つ以上の循環ノードを用いるループ運搬されるスカラサイクルがあるループを有する制御フローデータフローグラフのパイプライン化されたループ構造の例を示す図である。FIG. 7 illustrates an example of a pipelined loop structure of a control flow data flow graph having a loop with a loop-carrying scalar cycle using two or more circular nodes. 多くのループ運搬されるスカラサイクルを有する、制御フローデータフローグラフのパイプライン化されたループ構造の例を示す図である。FIG. 6 illustrates an example of a pipelined loop structure of a control flow data flow graph having many loop-carried scalar cycles. 図5に示されるループ構造の、循環ノードの間の経路を表わすチャートの例を示す図である。It is a figure which shows the example of the chart showing the path | route between circulation nodes of the loop structure shown by FIG. 状態を持つノードを含む、制御フローデータフローグラフのパイプライン化されたループ構造の例を示す図である。FIG. 6 is a diagram illustrating an example of a pipelined loop structure of a control flow data flow graph including nodes having states. 状態を持つノードマクロのタイミング図の例を示す図である。It is a figure which shows the example of the timing diagram of the node macro which has a state.

Claims (21)

制御フローデータフローのパイプライン化されたループ構造を含む再構成可能なコンピュータシステムであって、前記システムは、
マルチアダプティブプロセッサを含み、前記マルチアダプティブプロセッサはフィールドプログラマブルゲートアレイを含み、さらに、
マルチアダプティブプロセッサ上で実行可能なコードを生成することができるマルチアダプティブプロセッサコンパイラを含み、前記マルチアダプティブプロセッサコンパイラは、パイプライン化されたループ構造を形成するコードを生成し、前記パイプライン化されたループ構造は最終の条件が満たされた後に反復し、前記パイプライン化されたループ構造は、
ループ本体の連続的反復の中で入力値を処理し出力値を生成するループ本体を含み、前記出力値は前記ループ本体に結合される循環ノードに捉えられ、前記構造はさらに、
前記ループ本体に結合される、最終のループ反復を判断するループ有効ノードと、
前記循環ノードに結合される出力値記憶ノードとを含み、前記出力値記憶ノードは、最後の出力値を記憶し、前記最後の出力値は分配のためにラッチされ、前記出力値記憶ノードは続いてループ有効ノードが前記最終のループ反復が起ったと判断した後生成される出力値を無視し、前記最終のループ反復に基づいた最終ループ値を保存し、前記ループ構造はさらに、
1以上のクロックサイクルが、前記ループ本体に入力される値と値との間で経過するように、前記ループ本体の各反復のための期間を調整するためのループドライバノードを含む、再構成可能なコンピュータシステム。
A reconfigurable computer system including a pipelined loop structure of control flow data flow, the system comprising:
A multi-adaptive processor, wherein the multi-adaptive processor includes a field programmable gate array;
Including a multi-adaptive processor compiler capable of generating code executable on a multi-adaptive processor, wherein the multi-adaptive processor compiler generates code that forms a pipelined loop structure and the pipelined The loop structure repeats after the final condition is met, and the pipelined loop structure is
A loop body that processes input values and generates output values in successive iterations of the loop body, wherein the output values are captured by a circular node coupled to the loop body, the structure further comprising:
A loop valid node coupled to the loop body to determine a final loop iteration;
An output value storage node coupled to the cyclic node, the output value storage node storing a last output value , the last output value being latched for distribution, the output value storage node continuing Ignoring the output value generated after the loop valid node determines that the final loop iteration has occurred, storing the final loop value based on the final loop iteration, and the loop structure further comprising:
Reconfigurable , including a loop driver node for adjusting the period for each iteration of the loop body such that one or more clock cycles elapse between values entered into the loop body Computer system.
前記ループ有効ノードは、前記最終のループ反復が起ったと判断するとループ有効終了信号を出力する、請求項1に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 1, wherein the loop valid node outputs a loop valid end signal upon determining that the final loop iteration has occurred. 前記ループ有効ノードは、前記最終のループ反復が起った後前記ループが再開されるまで各ループ反復において前記ループ有効終了信号を出力する、請求項2に記載のパイプライン化されたループ構造。  3. The pipelined loop structure of claim 2, wherein the loop valid node outputs the loop valid end signal at each loop iteration until the loop is resumed after the final loop iteration occurs. 前記ループ有効終了信号はデータビットを含む、請求項2に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 2, wherein the loop valid end signal includes a data bit. 前記ループ有効ノードおよび前記出力値記憶ノードに結合される終了ノードを含む、請求項1に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 1 including an end node coupled to the loop valid node and the output value storage node. 前記終了ノードは、前記ループ有効ノードからループ有効終了信号を受取るための終了入力を含む、請求項5に記載のパイプライン化されたループ構造。  6. The pipelined loop structure of claim 5, wherein the end node includes an end input for receiving a loop valid end signal from the loop valid node. 前記終了ノードは、記憶ノード終了信号を前記出力値記憶ノードに送るための終了出力を含む、請求項6に記載のパイプライン化されたループ構造。  7. The pipelined loop structure of claim 6, wherein the end node includes an end output for sending a storage node end signal to the output value storage node. 記ループドライバノードは前記循環ノードに結合されている、請求項1に記載のパイプライン化されたループ構造。 Before Symbol loop driver node is coupled to the circulation node, pipelined loop structure of claim 1. クロックレイテンシは、前記ループドライバノードに入力される周期値に基づく、請求項8に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 8, wherein clock latency is based on a period value input to the loop driver node. マルチアダプティブプロセッサおよびマルチアダプティブコンパイラを含む再構成可能なコンピュータシステムであって、前記マルチアダプティブコンパイラは、高レベル命令をマルチアダプティブプロセッサで実行可能なコードに変換することができ、制御フローデータフローのパイプライン化されたループ構造を形成するための命令を含み、前記パイプライン化されたループ構造は、最終の条件が満たされた後に、予測不可能な回数を反復し、前記パイプライン化された構造は、
ループ本体の連続的反復の中で入力値を処理し出力値を生成するループ本体を含み、前記出力値は前記ループ本体に結合される循環ノードに捉えられ、前記最終の条件が満たされたことに応答して、前記出力値がラッチされ、出力ノードに分配され、その後の出力値が無視され、前記構造はさらに、
前記循環ノードに結合されるループドライバノードを含み、前記ループドライバノードは前記ループ本体の各反復に対して周期を設定し、そのため1つ以上のクロック周期は前記ループ本体が第2の入力値を処理する前に経過し、前記ループドライブノードは状態を持つ機能ユニットに関連する信号を出力する、再構成可能なコンピュータシステム。
A reconfigurable computer system including a multi-adaptive processor and a multi-adaptive compiler, wherein the multi-adaptive compiler is capable of converting high-level instructions into code that can be executed by the multi-adaptive processor. Including instructions for forming a lined loop structure, wherein the pipelined loop structure repeats an unpredictable number of times after a final condition is satisfied, and the pipelined structure Is
A loop body that processes input values and generates output values in successive iterations of the loop body, wherein the output values are captured by a circular node coupled to the loop body and the final condition is met In response to the output value being latched and distributed to the output node, the subsequent output value is ignored, and the structure further comprises:
Including a loop driver node coupled to the circular node, wherein the loop driver node sets a period for each iteration of the loop body, so that one or more clock periods have the loop body set to a second input value. A reconfigurable computer system that passes before processing and the loop drive node outputs a signal associated with a functional unit having a state.
前記ループドライバノードは、ループが開始していることを前記循環ノードに告げるためのCIRC_TRIGGER信号を出力する、請求項10に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 10, wherein the loop driver node outputs a CIRC_TRIGGER signal to inform the circular node that a loop has started. 前記ループドライバノードは、ループの開始をトリガするためのSTART信号を出力する、請求項10に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 10, wherein the loop driver node outputs a START signal for triggering the start of a loop. 前記ループドライバノードは、リセットパルスを必要とするノードの状態をクリアするためのLOOP_STARTING信号を出力する、請求項10に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 10, wherein the loop driver node outputs a LOOP_STARTING signal for clearing a state of a node that requires a reset pulse. 前記ループドライバノードは、値をロードするよう定期的入力ノードに告げるためのLEADING信号を出力する、請求項10に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 10, wherein the loop driver node outputs a LEADING signal to tell a periodic input node to load a value. 周期値は、前記パイプライン化されたループ構造におけるループ運搬される最長のスカラサイクルの周期に等しい、請求項10に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 10, wherein a period value is equal to a period of a longest scalar cycle carried in the pipelined loop structure. 前記周期は、前記ループドライバノードに入力される周期値に基づく、請求項10に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 10, wherein the period is based on a period value input to the loop driver node. 前記ループ本体に結合される、最終のループ反復を判断するループ有効ノードを含む、請求項10に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 10 including a loop valid node coupled to the loop body to determine a final loop iteration. 前記ループ有効ノードは、前記最終のループ反復が起ったと判断するとループ有効終了信号を出力する、請求項17に記載のパイプライン化されたループ構造。  18. The pipelined loop structure of claim 17, wherein the loop valid node outputs a loop valid end signal upon determining that the final loop iteration has occurred. 前記循環ノードに結合される出力値記憶ノードを含む、請求項18に記載のパイプライン化されたループ構造。  The pipelined loop structure of claim 18 including an output value storage node coupled to the circular node. 前記出力値記憶ノードは、前記ループ有効ノードが前記最終のループ反復が起ったと判断した後生成される出力値を無視する、請求項19に記載のパイプライン化されたループ構造。  20. The pipelined loop structure of claim 19, wherein the output value storage node ignores output values generated after the loop valid node determines that the final loop iteration has occurred. 前記ループ有効ノードおよび前記出力値記憶ノードに結合される終了ノードを含む、請求項20に記載のパイプライン化されたループ構造。  21. The pipelined loop structure of claim 20 including an end node coupled to the loop valid node and the output value storage node.
JP2005502182A 2002-10-31 2003-10-17 Pipelined loop structure by MAP compiler Expired - Fee Related JP4330582B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/285,299 US6983456B2 (en) 2002-10-31 2002-10-31 Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US10/345,082 US7134120B2 (en) 2002-10-31 2003-01-14 Map compiler pipelined loop structure
PCT/US2003/033171 WO2004042503A2 (en) 2002-10-31 2003-10-17 Map compiler pipelined loop structure

Publications (3)

Publication Number Publication Date
JP2006510125A JP2006510125A (en) 2006-03-23
JP2006510125A5 JP2006510125A5 (en) 2006-11-24
JP4330582B2 true JP4330582B2 (en) 2009-09-16

Family

ID=32314353

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005502182A Expired - Fee Related JP4330582B2 (en) 2002-10-31 2003-10-17 Pipelined loop structure by MAP compiler

Country Status (5)

Country Link
EP (1) EP1573461A4 (en)
JP (1) JP4330582B2 (en)
AU (1) AU2003284288A1 (en)
CA (1) CA2498866A1 (en)
WO (1) WO2004042503A2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8276120B2 (en) * 2007-10-30 2012-09-25 Coreworks, S.A. Reconfigurable coprocessor architecture template for nested loops and programming tool

Also Published As

Publication number Publication date
WO2004042503A3 (en) 2005-11-17
AU2003284288A1 (en) 2004-06-07
WO2004042503A2 (en) 2004-05-21
JP2006510125A (en) 2006-03-23
EP1573461A2 (en) 2005-09-14
CA2498866A1 (en) 2005-03-11
EP1573461A4 (en) 2006-10-18

Similar Documents

Publication Publication Date Title
US7134120B2 (en) Map compiler pipelined loop structure
EP0843257B1 (en) Improved code optimiser for pipelined computers
Ku et al. High level synthesis of ASICs under timing and synchronization constraints
Cronquist et al. Specifying and compiling applications for RaPiD
JP3835754B2 (en) Integrated circuit design method and integrated circuit designed thereby
US8893080B2 (en) Parallelization of dataflow actors with local state
JPH09282179A (en) Method and device for instruction scheduling in optimized compiler for minimizing overhead instruction
Chou et al. Software scheduling in the co-synthesis of reactive real-time systems
Buck et al. The token flow model
US20080120497A1 (en) Automated configuration of a processing system using decoupled memory access and computation
US11815935B2 (en) Programming a coarse grained reconfigurable array through description of data flow graphs
JP4330582B2 (en) Pipelined loop structure by MAP compiler
Haldar et al. Automated synthesis of pipelined designs on FPGAs for signal and image processing applications described in MATLAB
Reinders et al. Programming for FPGAs
JP2004062909A (en) System and method for software pipelining loop having multiple control flow passes
Ku et al. Synthesis of asics with hercules and hebe
Salcic et al. HiDRA—A reactive multiprocessor architecture for heterogeneous embedded systems
JP2004021890A (en) Data processor
Luchetta et al. General purpose architecture for real-time feedback control in nuclear fusion experiments
Bergeron et al. High level synthesis for data-driven applications
US20230305842A1 (en) Configure a Coarse Grained Reconfigurable Array to Execute Instructions of a Program of Data Flows
US20230305848A1 (en) Schedule Instructions of a Program of Data Flows for Execution in Tiles of a Coarse Grained Reconfigurable Array
Webster et al. Predictable parallel real-time code generation
Mekenkamp et al. A syntax based VHDL to CDFG translation model for high-level synthesis
Bispo et al. Hardware pipelining of runtime-detected loops

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061003

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081209

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090306

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090519

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090616

R150 Certificate of patent or registration of utility model

Ref document number: 4330582

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130626

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130626

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees