JP2012185803A - Reconfiguration device, processing arrangement method, and program - Google Patents
Reconfiguration device, processing arrangement method, and program Download PDFInfo
- Publication number
- JP2012185803A JP2012185803A JP2012003035A JP2012003035A JP2012185803A JP 2012185803 A JP2012185803 A JP 2012185803A JP 2012003035 A JP2012003035 A JP 2012003035A JP 2012003035 A JP2012003035 A JP 2012003035A JP 2012185803 A JP2012185803 A JP 2012185803A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- data flow
- setting
- data
- arrangement
- 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.)
- Granted
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
Description
本発明は、回路構成を変更することができる再構成デバイス、その処理配置方法等に関する。 The present invention relates to a reconfigurable device capable of changing a circuit configuration, a processing arrangement method thereof, and the like.
従来から製造後のLSI回路装置であっても内部の回路構成を変更することで、上記回路が行う処理内容を変更することが可能な再構成デバイスが提案されている。製造後のLSI回路装置でも処理を変更することが可能であるため、仕様変更などに伴うLSIの作り直しを行わなくて済む。製造コストを抑えることが可能な点や開発期間が短縮可能な点で、現在様々な分野において再構成デバイスが使用されている。 Conventionally, there has been proposed a reconfigurable device capable of changing the processing content performed by the above circuit by changing the internal circuit configuration even in an LSI circuit device after manufacture. Since the processing can be changed even in the manufactured LSI circuit device, it is not necessary to recreate the LSI in accordance with the specification change or the like. Currently, reconfigurable devices are used in various fields in that the manufacturing cost can be reduced and the development period can be shortened.
再構成デバイスの構成として、多数のLUT(Look−Up−Table)を搭載したタイプや多数のプロセッシングエレメントを搭載したタイプが代表的である。また各々のエレメントにはマルチプレクサなどのスイッチングエレメントが接続されている。ここではLUTやプロセッシングエレメント、スイッチングエレメントなどの各構成要素を動作させるための設定を総称し回路構成情報と呼んでいる。回路構成情報の生成方法としては様々あるが、一般に(1)テクノロジーマッピングと呼ばれる論理的な処理の割り当て、(2)各構成要素への物理的な配置、(3)各構成要素の経路決定、の工程に分けられ、順番に行われことが多い。上記三つの工程を経て最終的に回路構成情報が生成される。 As a configuration of the reconfigurable device, a type in which a large number of LUTs (Look-Up-Tables) are mounted and a type in which a large number of processing elements are mounted are typical. Each element is connected to a switching element such as a multiplexer. Here, settings for operating each component such as the LUT, processing element, and switching element are collectively referred to as circuit configuration information. There are various methods for generating circuit configuration information. Generally, (1) logical processing called technology mapping, (2) physical allocation to each component, (3) route determination of each component, These processes are often performed in order. The circuit configuration information is finally generated through the above three steps.
(1)論理的な処理の割り当て工程では、処理を構成要素に割り当てることを行う。具体的には、各処理を物理的な構成要素を特定せずに論理的な構成要素に割り当てる。順序変更の指標としては、回路面積、動作速度、消費電力の観点が一般的である。(2)配置工程では、再構成デバイス内のどの構成要素でどの処理を行うかの物理的な割り当てを決定する。データの入出力関係にある処理が配置されているプロセッシングエレメント間の距離によって、データ通信に係るスイッチングエレメント数が異なるため、遅延時間(最大動作周波数)が大きく変化する。そのため、通常は入出力関係のある処理はできる限り近い距離のプロセッシングエレメントに配置させることが遅延時間を短縮する上で重要となる。(3)経路決定の工程では、データ通信の入出力関係にあるプロセッシングエレメント間のデータ通信のため、スイッチングエレメントによる経路を決定する。配置工程と比べ具体的な経路を決定するため、プロセッシングエレメント間の遅延時間を短縮した経路を決定することが重要となってくる。 (1) In the logical process assignment step, the process is assigned to a component. Specifically, each process is assigned to a logical component without specifying a physical component. As an index for order change, the viewpoint of circuit area, operation speed, and power consumption is generally used. (2) In the placement step, physical assignment of which process is performed with which component in the reconfigurable device is determined. Since the number of switching elements related to data communication differs depending on the distance between processing elements in which processing related to data input / output is arranged, the delay time (maximum operating frequency) varies greatly. For this reason, it is usually important to arrange the processing having an input / output relationship on the processing elements as close as possible to shorten the delay time. (3) In the route determination step, a route by the switching element is determined for data communication between processing elements in an input / output relationship of data communication. In order to determine a specific path as compared with the arrangement process, it is important to determine a path with a reduced delay time between processing elements.
近年、集積度の向上に伴い、再構成デバイスにおいて実行可能な処理の規模は増えている。しかし、最近ではそれにも増して、処理自体への要求が複雑化・高度化しており、一つの再構成デバイスで全ての処理を一度に行うことは難しい場合がある。これに対して、一つの再構成デバイスにおいて時分割で処理を順々に行う方法がある。より具体的にはまず所望の処理を分割し、分割した処理に対応した回路構成情報を生成する。その後、回路構成情報に基づいた再構成デバイスの回路構成の変更、処理を順々に行っていく。これにより、再構成デバイスで大きな規模の処理を行うことが可能となる。しかしながら、毎回全ての回路構成を変更させていては全体の処理時間が長くなってしまい、速度性能が劣化してしまう。また上記の処理分割数が多い場合も同様に、処理速度の劣化を生じさせてしまう。 In recent years, the scale of processing that can be executed in the reconfigurable device is increasing with the improvement in the degree of integration. However, recently, the demand for processing itself has become more complicated and sophisticated than that, and it may be difficult to perform all processing at once with one reconfigurable device. In contrast, there is a method in which processing is sequentially performed in a time-division manner in one reconfigurable device. More specifically, first, a desired process is divided, and circuit configuration information corresponding to the divided process is generated. Thereafter, the circuit configuration of the reconfigurable device is changed and processed based on the circuit configuration information. This makes it possible to perform large-scale processing with the reconfigurable device. However, if all the circuit configurations are changed every time, the entire processing time becomes long, and the speed performance deteriorates. Similarly, when the number of processing divisions is large, the processing speed is deteriorated.
この問題を解決するための方法として、マルチコンテキスト型の再構成デバイスがある。コンテキストとは、回路構成情報のことで、マルチコンテキスト型の再構成デバイスとは、複数の回路構成情報を格納するメモリを再構成デバイス内に搭載したものである。回路構成を変更する場合には、上記メモリを切り替えてデバイスを再構成することが可能であり、高速に切り換え可能なことで回路の再構成時間を大幅に短縮することが可能である。しかし、追加で回路構成情報用のメモリを搭載する必要があるため、回路規模が増大する問題がある。 As a method for solving this problem, there is a multi-context reconfiguration device. The context is circuit configuration information, and the multi-context reconfiguration device is a device in which a memory for storing a plurality of circuit configuration information is mounted in the reconfiguration device. When the circuit configuration is changed, the device can be reconfigured by switching the memory, and the circuit reconfiguration time can be greatly reduced by switching at high speed. However, since it is necessary to additionally install a memory for circuit configuration information, there is a problem that the circuit scale increases.
これに対し、特許文献1では、再構成時間を短縮する方法としてスケルトン回路技術に基づいた手法が提案されている。この手法では、先行ベース回路と呼ばれる回路構成情報を、予め再構成デバイスに構成しておく。ここで先行ベース回路とは複数の回路構成情報において全てに共通する共通回路部分と、複数個の回路で互いに共通せず、かつ、再構成デバイス上で回路構成情報を共有しない非排他的独立回路部分からなる回路構成情報のことである。再構成デバイス上において回路の差分のみを部分的に再構成することにより、処理に必要な回路を構成するようにする。この方法は、マルチコンテキスト型に比べ、追加で構成用のメモリを必要としないため回路規模が増大はしない。
On the other hand,
しかしながら、一般に再構成デバイスでは様々なアプリケーションを実行する可能性があり、アプリケーションによっては共通部分が少なくなる。また、再構成すべき回路構成情報の数もアプリケーションによって異なる。特許文献1で述べられている先行ベース回路部生成において、共通部分が少ないもしくは、回路構成情報の数が多く再構成デバイスの回路規模を大幅に超えてしまう場合には回路構成を変更するための期間を効率的に削減することが難しい。また、上述した処理配置工程においては、回路構成の変更期間を削減することに加え、データ入出力関係にあるプロセッシングエレメント間の距離が近い必要がある。入出力に係るプロセッシングエレメント間の通信距離が遠い場合、データ通信の遅延時間を増やし、結果として処理全体の期間を増大させてしまう。
However, in general, the reconstruction device may execute various applications, and the number of common parts is reduced depending on the application. Further, the number of circuit configuration information to be reconfigured varies depending on the application. In the generation of the preceding base circuit unit described in
本発明は上述した問題点に鑑みてなされたものであり、回路構成変更の順序を考慮することで、プロセッシングエレメント間のデータ通信遅延を抑えつつ回路規模を増やすことなく回路変更期間を効率的に削減することを目的とする。 The present invention has been made in view of the above-described problems, and by considering the order of circuit configuration change, the circuit change period can be efficiently performed without increasing the circuit scale while suppressing the data communication delay between the processing elements. The purpose is to reduce.
本発明の処理葉位置方法は、複数の構成要素で構成される再構成デバイスに対し、データフローの各処理を行う構成要素を決定するための処理配置方法であって、少なくとも二つの異なるデータフローと前記データフローの処理順序を入力する入力ステップと、再構成デバイスの構成要素の制約を入力する制約ステップと、前記データフローに応じた、前記再構成に必要な設定変更数と前記データフローのデータ入出力の依存関係に基づく構成要素間の距離とを用い、構成要素の配置を決めることで、要求される処理をどの構成要素で実行させるかを決定する決定ステップとを有することを特徴とする。 The processing leaf position method of the present invention is a processing arrangement method for determining a constituent element that performs each processing of a data flow for a reconfigurable device composed of a plurality of constituent elements, and is at least two different data flows And an input step for inputting the processing order of the data flow, a constraint step for inputting constraints on the components of the reconfigurable device, the number of setting changes necessary for the reconfiguration according to the data flow, and the data flow Using a distance between components based on data input / output dependency, and determining a component to execute a required process by determining the arrangement of the components, To do.
本発明によれば、データ通信の遅延時間を抑えつつ再構成に必要な設定数を減らすように回路構成情報を作成することで、回路規模を増やすことなく再構成デバイスの再構成期間を短縮することが可能である。 According to the present invention, the circuit configuration information is created so as to reduce the number of settings required for reconfiguration while suppressing the delay time of data communication, thereby reducing the reconfiguration period of the reconfiguration device without increasing the circuit scale. It is possible.
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。 DESCRIPTION OF EXEMPLARY EMBODIMENTS Hereinafter, preferred embodiments to which the invention is applied will be described in detail with reference to the accompanying drawings.
先ず、本発明の第1の実施形態について説明する。第1の実施形態に係る再構成デバイスを有するシステムの全体構成の例を図1に示す。外部メモリ101は、内部に回路構成情報106を保持している。回路構成情報106は再構成デバイス105を構成する要素を動作させる設定群である。コンフィギュレーションコントローラ102は上記メモリ101から結線104を通じ回路構成情報106を取得する。取得した回路構成情報106は結線103を通じて再構成デバイス105へ送られる。ここで再構成デバイス105の例としてプロセッシングエレメントアレイとしている。また以下では、具体的にプロセッシングエレメントアレイ内の説明をするが、本発明は下記の各プロセッシングエレメントの構成や経路構成に限定されるものではない。
First, a first embodiment of the present invention will be described. An example of the overall configuration of a system having a reconfigurable device according to the first embodiment is shown in FIG. The
図2に、本実施形態における再構成デバイスであるプロセッシングエレメントアレイの概要図を示す。再構成デバイスには、8入力8出力の入出力処理手段であるスイッチングエレメント201が二次元格子状に配置されている。演算処理手段である4入力4出力のプロセッシングエレメント202が、スイッチングエレメント201の格子内に配置されている。スイッチングエレメント201a〜iの8入力8出力は1入力1出力を一組としてそれぞれ東西南北(右左下上)方向の、他の4つのスイッチングエレメント201と結線203aおよび203bを介して夫々接続されている。
FIG. 2 shows a schematic diagram of a processing element array which is a reconstruction device in the present embodiment. In the reconstruction device, switching
さらに、北東、南東、南西、北西方向の、それぞれ別の4つのプロセッシングエレメント202と結線204aおよび204bを介して双方向に接続された構成を持つ。またスイッチングエレメント201a〜201iおよびプロセッシングエレメント202a〜202dは結線205で一方向に数珠繋ぎに接続されている。
Furthermore, it has a configuration in which it is bidirectionally connected to four
結線203a、203bおよび結線204a、204bはスイッチングエレメント201やプロセッシングエレメント202の間で処理対象データを通信するために接続された結線である。結線205は、スイッチングエレメント201やプロセッシングエレメント202に設定を供給するための結線である。
上述の設定によって、スイッチングエレメント201においては処理対象データの入出力先が決定され、プロセッシングエレメント202においては処理対象データの入出力先や処理内容が決定される。なお、図2の各結線203a、203b、204a、204b、205の矢印の方向はデータの方向を示している。またスイッチングエレメント201a〜201iはそれぞれ同じ構成を有し、プロセッシングエレメント202a〜202dはそれぞれ同じ構成を有する。
With the above settings, the switching
ここで、各結線203a、203b、204a、204b、205の通信プロトコルの一例として、Valid信号とReady信号による2線ハンドシェークを図3に示す。図3では送信側であるモジュールA301と受信側であるモジュールB302間はデータ信号線303、Valid信号線304およびReady信号線305が接続されている。Valid信号はValid信号線304を通じ送信側が受信側に対し送信可能状態を示す信号である。Ready信号はReady信号線305を通じ受信側が送信側に対しデータ受信可能状態を示す信号である。本プロトコルではモジュールA301からのValid信号線304とモジュールB302のReady信号線305とが両方有効となるクロック立ち上がりのタイミングでデータ信号線303のデータがモジュールA301からモジュールB302へと送信される。図3の波形中では306aのタイミングでデータAが、306bのタイミングでデータBが、306cのタイミングでデータC、306dのタイミングでデータDがモジュールA301からモジュールB302へと転送されている。
Here, as an example of a communication protocol for each of the
プロセッシングエレメント202の構成を図4に示す。プロセッシングエレメント202は、コンフィギュレーションユニット401、インプットユニット402、コンピュテーショナルユニット403、アウトプットユニット404、テンポラリーバッファ405で構成されている。前記コンフィギュレーションユニット401はプロセッシングエレメント202の動作内容を決定するための設定の管理を行う。前記インプットユニット402はコンフィギュレーションユニット401の設定に基づき、入力処理を行う。コンピュテーショナルユニット403はコンフィギュレーションユニット401の設定に基づき、演算処理を行う。また、コンピュテーショナルユニット403は、再度コンピュテーショナルユニット403に入力するためテンポラリーバッファ405に処理された結果を保持することが可能である。アウトプットユニット404はコンフィギュレーションユニット401の設定に基づき、出力処理を行う。
The configuration of the
上記プロセッシングエレメント202の動作をより具体的に説明する。インプットユニット402はコンフィギュレーションユニット401から入力先を決定するための設定情報を、結線406を通じて取得する。取得した設定情報はどの入力ポートを介して外部接続されているモジュールと通信を行うかが指定されている。その情報を元に、結線204a−ne、204a−se、204a−sw、204a−nw、を通じて処理対象であるデータを取得する。ここで参照符号のne,se、sw,nwはそれぞれ方向を示しており、結線204a−neは北東に配置されたスイッチングエレメントと接続されている。また、204a−seは南東に配置されたスイッチングエレメントと接続されている。204a−swは南西に配置されたスイッチングエレメントと接続されている。204a−nwは北西に配置されたスイッチングエレメントと接続されている。取得したデータは、結線409を通してコンピュテーショナルユニット403に送られる。
The operation of the
コンピュテーショナルユニット403は、コンフィギュレーションユニット401から処理内容を決定するための設定情報を、結線407を通じて取得する。取得した設定情報に基づいてインプットユニット402から送られてくるデータを取得し、処理を行う。処理したデータは結線410を通じてアウトプットユニット404に送られる。
The
コンピュテーショナルユニット403は、少なくとも一つの演算器を保持している。上記演算器は、例えば、加減算器、比較器、乗算器、除算器、論理演算器等の演算器、または、これらの組合せからなる演算器、さらにはこれらと他の演算器の組合せからなる演算器などである。以下では具体的な例として、上記コンピュテーショナルユニット403では、積和演算と比較演算処理が行え、一度の演算でどちらかを一方を選択的に行うことができるものとし説明する。積和演算では、a・b+c・dの処理を行い、比較演算では、もしa>bならばcを出力、そうでなければdを出力するといった処理を行う。また、コンピュテーショナルユニット403は一度の入力に対して、上記演算器を繰り返し使用することが可能な構成となっている。繰り返しで使用する場合は一旦上記演算器で使用された処理結果を、結線412を通して、テンポラリーバッファに保存し、その後、結線411を通して、再度コンピュテーショナルユニット403に入力する。再度入力されたデータに対して、新たに上記演算器にて処理を行う。後で詳細を述べるが、上記設定とは上記演算の種類や繰り返し処理、またそれぞれの処理で必要な変数a、b、c、dはどの値を参照するか、また固定値ならばその値を指定することを意味する。
The
アウトプットユニット404は、処理したデータの出力先を示す設定情報を結線408を通じて取得する。取得した設定情報は、どの出力ポートを介してスイッチングエレメントと通信を行うかが指定されている。その情報を元に、結線204b−ne、204b−se、204b−sw、204b−nw、を通じてスイッチングエレメントへ出力する。ここで結線204b−neは北東に配置されたスイッチングエレメントと接続されている。また、204b−seは南東に配置されたスイッチングエレメントと接続されている。204b−swは南西に配置されたスイッチングエレメントと接続されている。204b−nwは北西に配置されたスイッチングエレメントと接続されている。
The
次にコンフィギュレーションユニット401の動作について説明する。コンフィギュレーションユニット401はプロセッシングエレメント202毎にユニークなIDを保持している。コンフィギュレーションユニットは入力側の結線205より送られてくる設定情報を取得し、コンフィギュレーションユニット内で処理し、出力側の結線205を通して設定を出力する。コンフィギュレーションユニット401は自らのIDに対応する設定を格納するためコンフィギュレーションメモリ413を有している。
Next, the operation of the configuration unit 401 will be described. The configuration unit 401 holds a unique ID for each
図5にコンフィギュレーションユニットに送受信される、設定のためのコンフィギュレーションコマンド501を示す。コンフィギュレーションコマンド501はリード/ライトモード502、ID503、コンフィギュレーションアドレス504、設定値505で構成されている。リード/ライトモード502はコンフィギュレーションコマンドの読み書きの処理を決定する信号である。ID503は処理対象のプロセッシングエレメント202を決める信号である。コンフィギュレーションアドレス504はコンフィギュレーションユニット401中の設定が保持されているメモリ内の番地を指定する信号である。設定値505は実際の設定値を表す信号である。図5中のビット幅を示すM、N、O、Pは実際に構成するアーキテクチャによって決められる値である。以下では上述した構成に基づく設定に関してより具体的に説明する。
FIG. 5 shows a
図6中の601はコンフィギュレーションメモリ413のアドレスを示しており、図5のコンフィギュレーションアドレス504で指定されるアドレスに相当する。602は実際の設定値を示しており、図5の設定値505に相当する。本実施形態はこれら一つ一つを設定と読んでいるが、本発明は上述の単位に限るものではない。図ではインプットユニット402、コンピュテーショナルユニット403、アウトプットユニット404に関する設定がコンフィギュレーションメモリ413に保持されている例を示している。
アドレス0x0000_0000(“0x”は16進数を示している)で示した設定値は、インプットユニット402における入力先を決定するための設定情報で、この値に応じて所定の入力先が決まる。アドレス0x0000_0004で示したイタレーションナンバーは、コンピュテーショナルユニット403における、演算の繰り返し回数を決定するための設定情報で、値に応じて演算の繰り返し回数が決まる。本実施形態では4回までの演算を想定している。
A setting value indicated by an address 0x0000 — 0000 (“0x” indicates a hexadecimal number) is setting information for determining an input destination in the
アドレス0x0000_0008で示したオペレーションセッティングは1度目の演算で行う、演算の種類を決定するための設定で、値に応じて積和演算か比較演算かが決まる。アドレス0x0000_000cで示したバリアブルセッティングは1度目の演算で、変数aの値の参照先を決めるための設定である。参照先としては、入力ポートからの入力値、コンフィギュレーションメモリ413に保持されている固定値、以前の計算結果が保持されているテンポラリーバッファの値がある。この値に応じて、上記いずれかの値がこの変数aに入力される。また0x0000_000cと同様に、0x0000_0010、0x0000_0014、0x0000_0018で示したバリアブルセッティングはそれぞれ、1度目の演算における変数b、c、dの値の参照先を決めるための設定である。
The operation setting indicated by the address 0x0000 — 0008 is a setting for determining the type of calculation performed in the first calculation, and the product-sum calculation or the comparison calculation is determined according to the value. The variable setting indicated by the address 0x0000 — 000c is a setting for determining the reference destination of the value of the variable a in the first calculation. The reference destination includes an input value from the input port, a fixed value held in the
次に0x0000_001cで示したパラメータは、1度目の演算において0x0000_000cで指定された参照先が固定値の場合の、変数aのための固定値である。0x0000_001cと同様に0x0000_0020、0x0000_0024、0x0000_0028で示した固定値は、それぞれ1度目の演算で変数b、c、d、で使用される場合の値である。 Next, the parameter indicated by 0x0000 — 001c is a fixed value for the variable a when the reference destination specified by 0x0000 — 000c in the first calculation is a fixed value. Similar to 0x0000 — 001c, the fixed values indicated by 0x0000 — 0020, 0x0000 — 0024, and 0x0000 — 0028 are values used in the variables b, c, and d in the first calculation.
続く0x0000_002c〜から0x0000_0094は、上記0x0000_0008〜0x0000_0028で示した1度目の演算に係る設定と同様にそれぞれ、2度目、3度目、4度目の設定値を示している。最後に0x0000_0098で示したアウトプットセレクトバリューは、アウトプットユニット404における出力先を決定するための設定値で、値に応じて所定の出力先が決まる。
Subsequent 0x0000 — 002c to 0x0000 — 0094 indicate setting values for the second, third, and fourth times, respectively, similarly to the settings related to the first calculation indicated by the above 0x0000 — 0008 to 0x0000 — 0028. Finally, an output select value indicated by 0x0000 — 0098 is a setting value for determining an output destination in the
次にコンフィギュレーションユニットで行われる処理フローを図7に示す。ステップS701では、コンフィギュレーションコマンド501を入力する。ステップS702では、入力されたコンフィギュレーションコマンド501で指定されたID503が、コンフィギュレーションユニット401の持つ自身のIDと一致するかどうかを判断する。もし、ステップS702で自身のIDと違うと判断された場合はステップS711、712で、入力されたコンフィギュレーションコマンド501に対して、何も処理せずにそのまま出力する。もし、自身のIDと一致する場合は、次にステップS703でリード/ライトモード502の値がリードモードかどうかを判断する。リードモードでなければステップS707でライトモードかどうかを判断する。いずれのモードでもない場合はステップS711、712で何も処理せずにそのまま出力する。もし、リードモードと判断された場合は、ステップS704において、コンフィギュレーションメモリ413からコンフィギュレーションアドレス504で指定されたデータを読み出す。その後、ステップS705にて、入力されたコンフィギュレーションコマンド501の設定値505に読み出したデータを書き込み、ステップS706でそのコンフィギュレーションコマンド501を出力する。ライトモードと判断された場合は、ステップS708にて入力されたコンフィギュレーションコマンド501の設定値505をコンフィギュレーションアドレス504で指定されたコンフィギュレーションメモリ413に書き込む。次にステップS709では、入力されたコンフィギュレーションコマンド501の値を変更せず、ステップS710にて、そのまま出力する。一度のコンフィギュレーションコマンドで一つの設定値505を変更することが可能であり、順次コンフィギュレーションコマンドを送信し、必要な設定値を全て変更することで所望の処理を実現する。つまり、この設定数が処理内容の切り替え時間を決めていることとなる。
Next, FIG. 7 shows a processing flow performed in the configuration unit. In step S701, a
スイッチングエレメント201の構成を図8に示す。スイッチングエレメント201は、コンフィギュレーションユニット801と、クロスバースイッチ802で構成される。コンフィギュレーションユニット801はデータを転送する接続先を決定するための設定値の管理をする。クロスバースイッチ802はコンフィギュレーションユニット801の設定に基づき一対一に入出力を接続する。プロセッシングエレメント202のコンフィギュレーションユニット401と同様、コンフィギュレーションユニット801はスイッチングエレメント201毎にユニークなIDを保持している。コンフィギュレーションユニットは入力側の結線205より送られてくる設定情報を取得し、コンフィギュレーションユニット内で処理を行い、出力側の結線205を通して設定値を出力する。コンフィギュレーションユニットは上記取得した設定をコンフィギュレーションメモリ804に保持している。コンフィギュレーションユニットのコンフィギュレーションコマンドとその処理フローは、図5に示したフォーマット、および図7に示した処理フローと同様である。クロスバースイッチ802はコンフィギュレーションユニット801からデータの入出力先を決定する設定情報を、結線803を通じて取得する。スイッチングエレメント201は取得した設定値に基づき結線203a−w、−s、203b−e、−n、結線204b−ne、−se、−sw、−nwを通じてデータを取得する。取得したデータは、接続されている結線203a−e、−n、203b−w、−s、結線204a−ne、−se、−sw、−nwを通じて渡す。
The configuration of the
ここで結線203a−w、−sはそれぞれ西、南に配置されたスイッチングエレメントと接続されていることを意味する。203b−e、−nはそれぞれ東、北に配置されたスイッチングエレメントと接続されていることを意味している。
Here, the
結線203a−e、−nはそれぞれ東、北に配置されたスイッチングエレメントと接続されていることを意味する。203b−w、−sはそれぞれ西、南に配置されたスイッチングエレメントと接続されていることを意味している。
結線204a−ne、−se、−sw、−nwはそれぞれ北東、南東、南西、北西に配置されたスイッチングエレメントと接続されていることを意味している。結線204b−ne、−se、−sw、−nwはそれぞれ北東、南東、南西、北西に配置されたスイッチングエレメントと接続されていることを意味している。
図9にコンフィギュレーションメモリ804に保持されている、スイッチングエレメント201におけるクロスバースイッチ802の入出力の接続に関する設定例を示す。901はメモリのアドレスを示しており、図5のコンフィギュレーションアドレス504で指定されるアドレスに相当する。902は設定値を示しており、図5の設定値505を示している。アドレス0x0000_0000で示したコネクション設定は結線203a−wからの入力を203a−e、n、203b−w、−s、204a−ne、−se、−sw、−nwのいずれに出力するかを決定するための設定値である。続く、0x0000_0004は結線203a−sからの入力を0x0000_0000と同様どの結線に出力するかを決定する設定値である。0x0000_0008は結線203b−eからの入力を0x0000_0000と同様どの結線に出力するかを決定する設定値である。0x0000_000cは結線203b−nからの入力を0x0000_0000と同様どの結線に出力するかを決定する設定値である。0x0000_0010は結線204b−neからの入力を0x0000_0000と同様どの結線に出力するかを決定する設定値である。0x0000_0014は結線204b−seからの入力を0x0000_0000と同様どの結線に出力するかを決定する設定値である。0x0000_0018は結線204b−swからの入力を0x0000_0000と同様どの結線に出力するかを決定する設定値である。0x0000_001cは結線204b−nwからの入力を0x0000_0000と同様どの結線に出力するかを決定する設定値である。
FIG. 9 shows a setting example related to the input / output connection of the
次にデータフローの構成要素への配置の概要について図10を用いて説明する。ここで、配置とはデータフローの処理を、所定の配置で規定されるプロセッシングエレメントで実行させるかを決定することを意味している。図10ではデータフロー1001のノード1002、1003、1004、1005はそれぞれ一つのプロセッシングエレメントで行われる処理である。これらノード1002、1003、1004、1005に対応する処理を、再構成デバイス105のプロセッシングエレメント202−1、−2、−3、−4へ配置する例を示している。設定1006、1007、1008、1009はそれぞれ1002、1003、1004、1005の処理内容に対応したアドレス601、設定値602で構成されている。なお、各ノードで行う処理内容の割り当ては済んでおり、設定1006、1007、1008、1009は予め決められているものとしている。配置を決定することで、各設定の書き込み先であるプロセッシングエレメントに対応したID503を決定することが可能となる。
Next, the outline of the arrangement of the data flow in the components will be described with reference to FIG. Here, the arrangement means to determine whether or not to execute the data flow process by a processing element defined by a predetermined arrangement. In FIG. 10, the
上述した再構成デバイスの構成を複数種類変更して所望の処理を実現するためのタイムチャート例を図11に示す。図11では同一の再構成デバイスで複数の異なるデータフローA〜Zを順に実行しているタイムチャートを示している。本実施形態で扱うデータフローとは、再構成デバイスのプロセッシングエレメントに配置可能な単位で構成されたデータフローのことである。各データフローを処理するための設定は予め生成しておく。再構成デバイスに対して予め生成された設定に基づき再構成デバイスを再構成し、その構成のもとで処理をするという一連の処理が、所定の順序で順々に行われる。 FIG. 11 shows an example of a time chart for realizing a desired process by changing a plurality of types of the configuration of the reconfigurable device described above. FIG. 11 shows a time chart in which a plurality of different data flows A to Z are sequentially executed by the same reconstruction device. The data flow handled in the present embodiment is a data flow configured in units that can be arranged in the processing element of the reconfigurable device. Settings for processing each data flow are generated in advance. A series of processes in which a reconfigurable device is reconfigured based on settings generated in advance for the reconfigurable device and processing is performed based on the configuration is sequentially performed in a predetermined order.
以下ではデータフローAを配置済みとし、データフローBを配置対象として説明する。具体的には、配置済みのデータフローAを実行するための設定値を参照し、データフローBの処理配置を決定する。データフローAの処理配置を参照しデータフローBの処理配置を決定した後、次はデータフローBを配置済みとし、データフローCを配置対象とする。具体的にはデータフローBの処理配置を決定した時と同様に、処理配置済みのデータフローBを実行するための設定値を参照し、データフローCの処理配置を決定する。上記の手順を順々に繰り返すことでAからZまでのデータフローの配置を行うことが可能となる。 In the following description, it is assumed that the data flow A is already arranged and the data flow B is an arrangement target. Specifically, the processing arrangement of the data flow B is determined with reference to a setting value for executing the arranged data flow A. After determining the processing arrangement of the data flow B with reference to the processing arrangement of the data flow A, the data flow B is already arranged and the data flow C is set as an arrangement target. Specifically, the processing arrangement of the data flow C is determined with reference to the setting value for executing the data flow B that has already been arranged in the same manner as when the processing arrangement of the data flow B is determined. By repeating the above procedure in sequence, the data flow from A to Z can be arranged.
一般に、配置問題は配置のみを決定するだけでも解空間が広い。そのため、詳細配線決定を同時に行うと、良い解を算出できないだけでなく、解自体を算出できない可能性が出てくる。そのため本配置方法では詳細な配線情報は決定せず、図12に示す配置モデルに基づく概略の距離を用いて配置を決定する。本実施形態では配置モデルとしてプロセッシングエレメントアレイをプロセッシングエレメントの位置に基づいたマンハッタンモデルを用いている。プロセッシングエレメント間のマンハッタン距離を指標として解を算出する。ただし、本発明は、概略の距離としてはマンハッタン距離に限定されるものではない。指標として、詳細配線を同時に行うことも可能である。また、本実施形態では配置モデルとしてマンハッタンモデルに基づく配置モデルを用いたが、それに限るものではない。アーキテクチャに依存したモデルやユークリッド空間に基づいたモデルでも良い。 In general, the placement problem has a wide solution space just by determining only the placement. Therefore, if detailed wiring determination is performed at the same time, not only a good solution cannot be calculated, but also the solution itself may not be calculated. For this reason, in this arrangement method, detailed wiring information is not determined, and the arrangement is determined using the approximate distance based on the arrangement model shown in FIG. In the present embodiment, a processing element array is used as an arrangement model, and a Manhattan model based on the position of the processing element is used. The solution is calculated using the Manhattan distance between processing elements as an index. However, in the present invention, the approximate distance is not limited to the Manhattan distance. As an index, detailed wiring can be performed simultaneously. In the present embodiment, an arrangement model based on the Manhattan model is used as the arrangement model, but the arrangement model is not limited thereto. It may be an architecture-dependent model or a model based on Euclidean space.
図12に示すように、スイッチングエレメント201とプロセッシングエレメント202で構成される再構成デバイス105に対し、配置モデル1201を定義する。配置モデル1201はプロセッシングエレメント202のみで構成しており、指標となる距離としては、横方向のプロセッシングエレメント間の距離1202と縦方向の距離1203で表す。本実施形態では縦横の距離は等しいものとしているが、異なっても良い。また本発明で扱う距離とは、物理的な長さであっても良いし、各エレメント間の通信に要する時間の長さであっても良く、これらに限るものではない。
As illustrated in FIG. 12, an
次に、図12の配置モデルを用いて、図11のタイムチャートで示した処理の切り替わりに注目した処理のプロセッシングエレメントへの配置方法について述べる。 Next, with reference to the arrangement model shown in FIG. 12, a method for arranging processing focused on processing elements shown in the time chart of FIG. 11 on processing elements will be described.
図13では本実施形態における配置の概要を示している。データフローAはノード1301、1302、1303、1304として表される処理で構成されており、設定1305、1306、1307、1308はそれぞれのノードで行う処理の設定である。またフロー1309はノード1301と1302間のデータ入出力関係を表している。フロー1310はノード1301と1303間のデータ入出力関係を表している。フロー1311はノード1302と1304間のデータ入出力関係を表している。フロー1312はノード1303と1304間のデータ入出力関係を表している。
FIG. 13 shows an outline of the arrangement in the present embodiment. The data flow A includes processes represented as
データフローBはノード1313、1314、1315、1316として表される処理で構成されており、設定1317、1318、1319、1320はそれぞれのノードで行う処理の設定である。またフロー1321はノード1313と1315間のデータ入出力関係を表している。フロー1322はノード1314と1315間のデータ入出力関係を表している。フロー1323はノード1315と1316間のデータ入出力関係を表している。
Data flow B is composed of processes represented as
ここではプロセッシングエレメントアレイの配置モデル1201内の領域1324に上述のデータフローA、Bの処理を配置させることを想定している。本実施形態ではプロセッシングエレメントアレイ内の一部への配置について述べるが、それに限られるものではなく、複数の部分や全体への配置でも良い。1325は上記の領域1324のデータフローA向けの処理配置例を表している。1326は上記の領域1326のデータフローB向けの処理配置例を表している。各々の処理配置1325、1326内のプロセッシングエレメント1327、1328、1329、1330はそれぞれ物理的に同じプロセッシングエレメントを表している。処理配置1325では、データフローAにおいてはノード1301の処理をプロセッシングエレメント1327に配置させている。ノード1302の処理をプロセッシングエレメント1329に配置させている。ノード1303の処理をプロセッシングエレメント1328に配置させている。ノード1304の処理をプロセッシングエレメント1330に配置させている。またプロセッシングエレメント間のデータ通信の距離を、フロー1309は距離1331、フロー1310は距離1332、フロー1311は距離1333、フロー1312は距離1334として表している。
Here, it is assumed that the processing of the above-described data flows A and B is arranged in the
続いてデータフローBに関しては、ノード1313の処理をプロセッシングエレメント1327に配置させている。ノード1314の処理をプロセッシングエレメント1328に配置させている。ノード1315の処理をプロセッシングエレメント1329に配置させている。ノード1316の処理をプロセッシングエレメント1330に配置させている。またプロセッシングエレメント間のデータ通信の距離を、フロー1321は距離1335、フロー1322は距離1336および1337、フロー1323は距離1338として表している。
Subsequently, for the data flow B, the processing of the
データフローAからデータフローBに処理が切り替わる際に、プロセッシングエレメント1327においては、設定変更1339で示すように設定1305から設定1317へと設定が変更される。プロセッシングエレメント1328においては、設定変更1341で示すように設定1307から設定1318へと設定が変更される。プロセッシングエレメント1329においては、設定変更1339で示すように設定1306から設定1319へと設定が変更される。プロセッシングエレメント1330においては、設定変更1339で示すように設定1308から設定1320へと設定が変更される。
When processing is switched from data flow A to data flow B, the
本実施形態では、配置を行う上で、処理が切り替わる際の設定変更数とデータフローの依存関係に基づく構成要素間の距離の二つの要素に注目する。 In the present embodiment, attention is paid to two elements, that is, the number of setting changes when processing is switched and the distance between components based on the dependency relationship of the data flow when performing the arrangement.
本実施形態で用いる図13の例ではデータフローAは既に処理配置済みであり、データフローAに関する各プロセッシングエレメントの各メモリ内の設定値は固定値として与えられるものとする。データフローBに関しては処理配置対象である。つまりデータフローの処理順序は決まっており、既に配置済みの配置情報をもとに次に処理されるデータフローの配置を決定することを想定している。 In the example of FIG. 13 used in the present embodiment, the data flow A has already been processed and arranged, and the setting value in each memory of each processing element related to the data flow A is given as a fixed value. Data flow B is a processing arrangement target. That is, it is assumed that the processing order of the data flow is determined, and the arrangement of the data flow to be processed next is determined based on the already arranged arrangement information.
図19は、データフローからデータフローへ処理を切り替えるための回路構成情報106を生成するための装置のブロック構成図を示している。図19において、2501は装置全体の制御を司るCPUである。2502はブートプログラムやBIOSを記憶しているROMである。2503はCPU2501のワークエリアとして利用され、且つ、OS(オペレーティングシステム)、アプリケーションを格納するためのRAMである。2504はOS、回路構成情報106を作成するためのアプリケーション、ならびに、様々なデータを格納するためのハードディスクドライブ(HDD)である。2505はキーボード、2506はマウスであり、ユーザインタフェースとして機能する。2507は内部にビデオメモリ及び表示コントローラを内蔵する表示制御部であり、2508は表示制御部2507からの映像信号を受信し、表示するための表示装置である。2509は各種外部デバイスと通信するインタフェースであり、例えば、図1に示した外部メモリ101を接続することで、本装置が作成した回路構成情報106をその外部メモリ101に書込むことになる。
FIG. 19 shows a block configuration diagram of an apparatus for generating
上記構成において、本装置に電源が投入されると、CPU2501はROM2502に格納されたブートプログラムを実行し、HDD2504に格納されたOSをRAMにロードし、その後、回路構成情報106を作成するアプリケーションを起動することで、本装置が回路構成情報作成装置として機能することになる。
In the above configuration, when the apparatus is turned on, the
以下、本発明を実施するための回路構成情報作成装置として機能する本装置の処理を、図14のフローチャートを用いて説明する。本手順はシミュレーテッドアニーリングに基づく処理配置方法の例を示すが、本発明は上記手法のみに限定されるものではなく、遺伝的アルゴリズムなどのさまざまな近似解法や線形計画法や非線形計画法など数値最適化法でも良い。また、配置する問題の規模に応じて方法を変えてもよい。 Hereinafter, the processing of this apparatus that functions as a circuit configuration information creation apparatus for carrying out the present invention will be described with reference to the flowchart of FIG. Although this procedure shows an example of a processing arrangement method based on simulated annealing, the present invention is not limited to the above method, and numerical values such as various approximate solutions such as genetic algorithms, linear programming, and nonlinear programming are used. An optimization method may be used. Further, the method may be changed according to the scale of the problem to be arranged.
図13に示す各データフローを表すインデックスをi、ノードのインデックスをj、図6のアドレス601や図9で示したアドレス901に相当するエレメント内で保持しているメモリのコンフィギュレーションアドレスをkとする。また、各ノードj間のフローに関するインデックスをlとする。上記より各メモリ内の設定値はui,j,kと表すことができる。またi番目のデータフローにおける、フローlの出発側のノードをSi,l、到着側のノードをdi,lとする。
The index representing each data flow shown in FIG. 13 is i, the node index is j, and the configuration address of the memory held in the element corresponding to the
また、図12に示す通り、各プロセッシングエレメントを表すインデックスをrとする。各データフローiの各ノードjの配置位置はxi,jおよびyi,jと表すことができる。本実施形態では同じプロセッシングエレメントに同じデータフロー内の異なる処理を配置することはしないため、xi,j、yi,jは、ノードjごとに必ず異なる。つまり、同じプロセッシングエレメントに異なる処理を配置しない。 Also, as shown in FIG. 12, an index representing each processing element is r. The location of each node j in each data flow i can be expressed as x i, j and y i, j . In this embodiment, since different processes in the same data flow are not arranged in the same processing element, x i, j and y i, j are always different for each node j. That is, different processes are not arranged in the same processing element.
ここで処理配置済みのデータフローをi0、処理配置対象のデータフローをi1とする。初めに、ステップS1401では複数のデータフローとその順序関係(iの順序)を入力する。処理配置済みのデータフローに関しては、設定値ui0,j,kと共に配置情報xi0,j、yi0,jも入力する。 Here, it is assumed that the data flow that has undergone processing arrangement is i0, and the data flow to be processed is i1. First, in step S1401, a plurality of data flows and their order relationship (i order) are input. For the data flow that has been processed and arranged, the arrangement information x i0, j and y i0, j are also input together with the set value u i0, j, k .
次に、ステップS1402で要求仕様とハードウェアの制約の条件を入力する。ここでハードウェア制約条件とは、ヘテロ構成に伴う各プロセッシングエレメントが個別に持つ構成情報や、処理によって発生する発熱量などの制限などハードウェア構成上の制約となりうるものである。また要求仕様とは、プロセッシングエレメント間の距離制限やステップS1406で後述する設定変更数と距離の要素の優先度合の割合などハードウェア使用上で制限すべき項目である。ただし、本発明は上述の制約のみに限られるものではない。 Next, in step S1402, the requirement specification and hardware constraint conditions are input. Here, the hardware restriction condition can be a restriction on the hardware configuration such as the configuration information that each processing element associated with the hetero configuration individually has and the amount of heat generated by the processing. The required specifications are items that should be restricted in terms of hardware use, such as the distance restriction between processing elements and the ratio of the number of setting changes and the priority of the distance element described later in step S1406. However, the present invention is not limited only to the above-described restrictions.
続いてステップS1403では対象となるデータフローの処理配置を行う。初期の処理の配置においては、ランダムに配置する、ないしはデータフローの深さ方向とプロセッシングエレメントアレイの入出力方向とを連動させて処理を配置させる方法があるが、これらの方法に限られるものではない。初期の配置でない場合は、シミュレーテッドアニーリングに基づき処理の配置を変更する。本実施形態では、処理配置である対象のデータフローBに関して初期処理配置、ないしは処理配置変更を行う。処理配置済みのデータフローAに関しては、制約に基づき処理配置の変更は行わない。 In step S1403, the processing arrangement of the target data flow is performed. In the initial process arrangement, there is a method of arranging the process randomly or by linking the depth direction of the data flow and the input / output direction of the processing element array. However, the method is not limited to these methods. Absent. If it is not the initial arrangement, the arrangement of the process is changed based on simulated annealing. In the present embodiment, the initial processing arrangement or the processing arrangement change is performed for the target data flow B that is the processing arrangement. For data flow A that has already been processed, the processing layout is not changed based on the constraints.
ステップS1404では、処理配置結果がステップS1403で入力した要求仕様を満たしているか判断する。以下の式に示すように、制約を満たしていれば、ペナルティ変数p0を0とし、違反している場合はペナルティ変数p0をペナルティ値Cp0とする。 In step S1404, it is determined whether the processing arrangement result satisfies the requirement specification input in step S1403. As shown in the following equation, if the constraint is satisfied, the penalty variable p 0 is set to 0, and if it is violated, the penalty variable p 0 is set to the penalty value C p0 .
ここで本実施形態では、違反があった場合に一律Cp0は定数値として扱っているが、違反項目に応じた変数値としてもよい。ステップS1405では、処理配置結果がステップS1302で入力したハードウェア制約条件を満たしているかを判断する。 Here, in this embodiment, when there is a violation, the uniform C p0 is treated as a constant value, but it may be a variable value according to the violation item. In step S1405, it is determined whether the processing arrangement result satisfies the hardware constraint condition input in step S1302.
以下の式に示すように、制約を満たしていれば、ペナルティ変数p1を0とし、違反している場合はペナルティ変数p1をペナルティ値Cp1とする。 As shown in the following equation, if the constraint is satisfied, the penalty variable p 1 is set to 0, and if it is violated, the penalty variable p 1 is set to the penalty value C p1 .
ここで本実施形態では、違反があった場合に一律Cp1は定数値として扱っているが、違反項目に応じた変数値としてもよい。次にステップS1406では、対象となるデータフロー変更間における設定変更数と配置に基づく距離の算出を行い、評価値を計算する。まず設定変更数の算出について説明する。図13の例で説明するとの設定変更1339、1340、1341、1342の際に変更の必要がある設定数である。
Here, in this embodiment, when there is a violation, the uniform C p1 is treated as a constant value, but it may be a variable value according to the violation item. In step S1406, the distance based on the number of setting changes and the arrangement between data flow changes to be processed is calculated, and an evaluation value is calculated. First, calculation of the number of setting changes will be described. This is the number of settings that need to be changed in the case of setting
より具体的には、処理配置済みのデータフローi0における、設定値ui0,j,kと、処理配置対象のデータフローi1における、同じ位置に配置されたプロセッシングエレメントの同じ種類の設定値ui1,j,kの値が一致していなければα1を設定変更数に加える。上述の値が一致していれば何も加えない。 More specifically, the set value u i0, j, k in the data flow i0 that has been processed and the set value u i1 of the same type of processing elements that are arranged at the same position in the data flow i1 to be processed. If the values of , j, k do not match, α 1 is added to the setting change number. If the above values match, nothing is added.
ここで、プロセッシングエレメントrに配置されているデータフローi0のノードj0をj0rと表し、データフローi1のノードj1をj1rと表す。ここでrは前述したとおり、各プロセッシングエレメントを表すインデックスである。データフローが切り替わる際の同じ位置に配置されているノードの処理内容の変更に必要な設定変更数は以下の式で求めることができる。 Here, the node j0 of the data flow i0 arranged in the processing element r is represented as j0 r, and the node j1 of the data flow i1 is represented as j1 r . Here, r is an index representing each processing element as described above. The number of setting changes necessary for changing the processing contents of the nodes arranged at the same position when the data flow is switched can be obtained by the following expression.
ここでα1は通常1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。図7で示した通り、一度のコンフィギュレーションコマンドで一つの設定値を変更することができることから、この数が少なくなれば、処理の切り替え時間を削減することが可能となる。 Here, α 1 is normally 1, but it is also possible to change the weight for each address where each setting is stored according to the structure of the configuration memory of the processing element. In addition, in order to give priority to the switching time for each data flow, it is possible to weight each data flow. As shown in FIG. 7, one setting value can be changed by a single configuration command. Therefore, if this number is reduced, the process switching time can be reduced.
続いて距離の算出について述べる。距離とは、配置対象であるデータフローBにおける距離1335、1336、1337、1338の合計量である。ステップS1403での配置とデータフローのデータ入出力関係に基づいて、以下の式で距離を表すことが可能である。
Next, distance calculation will be described. The distance is the total amount of the
ここでκ1l、λ1lはノード間の距離のx、y毎の重みであって、ノード間の距離などのアーキテクチャによって重みを一律ないしは別々に変更することも可能である。本ステップで評価値算出する際の式は上述の式より、以下と定義する。 Here, κ 1l and λ 1l are the weights of the distances between the nodes for each x and y, and the weights can be changed uniformly or separately depending on the architecture such as the distance between the nodes. The formula for calculating the evaluation value in this step is defined as follows from the above formula.
ここで、δはステップS1402で与えた設定変更数と距離のどちらを優先させるかの割合を表す指標である。つまり、要求仕様とハードウェア制約条件を満たしつつ、また距離が少なく、再構成に必要な設定変更数が少なくなるほど上記評価値は小さくなる。 Here, δ is an index representing the ratio of the priority of the number of setting changes and distance given in step S1402. In other words, the evaluation value decreases as the required specifications and hardware constraints are satisfied, the distance is shorter, and the number of setting changes required for reconfiguration is smaller.
最後にステップS1407では、シミュレーテッドアニーリングに基づき目標達成したかを判断し、目標を達成した場合は終了する。目標未達の場合はステップS1403に戻り、ステップS1403〜S1407を繰り返し行う。ここで、目標値とは十分良い結果が得られるまで、もしくは予定された計算時間に達するまで繰り返す。 Finally, in step S1407, it is determined whether the target has been achieved based on simulated annealing. If the target has been achieved, the process ends. If the target has not been reached, the process returns to step S1403, and steps S1403 to S1407 are repeated. Here, the target value is repeated until a sufficiently good result is obtained or a predetermined calculation time is reached.
以上の結果、回路構成情報106がHDD2504に生成されるので、後はインタフェース2509を介して、利用する外部メモリ101にそれを書き出し、実製品に搭載すれば良いことになる。
As a result, the
なお、上記実施形態では、回路構成情報106を、外部装置(図17)にて作成する例を示した。これは以降に説明する全実施形態でも同じである。また、コンフィギュレーションコントローラ102が外部装置の代わりに、図13の処理を実行し、回路構成情報106を作成しても構わない。例えば、外部メモリ101に複数のデータフロー毎の設定(必要なプロセッサ数と各プロセッサの処理パラメータ)を保持させ、コンフィギュレーションコントローラ102が複数のデータフローの設定に基づいて回路構成106を作成すればよい。係る点も、以降に説明する全実施形態にも適用できることである。
In the embodiment described above, the example in which the
一般的な再構成デバイスにおけるデータフローのプロセッシングエレメントへの処理配置方法では設定変更数を意識しないため、データフローの処理変更間で全ての設定を変更する必要が生じる。 In the processing arrangement method of the data flow to the processing element in a general reconfigurable device, since the number of setting changes is not conscious, it is necessary to change all the settings between the data flow processing changes.
本実施形態では、データフローの処理順に注目し、距離に加え設定変更の合計数が少なくすることで、設定変更数削減を効果的に行うことが可能となる。 In the present embodiment, it is possible to reduce the number of setting changes effectively by paying attention to the processing order of the data flow and reducing the total number of setting changes in addition to the distance.
次に、本発明の第2の実施形態について説明する。第2の実施形態に係る処理のタイムチャートおよび、処理配置の概要を図15に示す。本実施形態では再構成デバイスの設定を変更において、各データフローの処理内容自体は決まっているが、その変更順序が不定で、状況や入力データなどに応じて変わる場合の処理配置に関する実施形態である。 Next, a second embodiment of the present invention will be described. FIG. 15 shows a time chart of processing according to the second embodiment and an outline of processing arrangement. In this embodiment, when changing the setting of the reconfigurable device, the processing content itself of each data flow is determined, but in the embodiment related to processing arrangement when the change order is indefinite and changes depending on the situation, input data, etc. is there.
タイムチャート1501における期間1502ではデータフローAに関する処理が行われ、期間1504、1508ではデータフローCに関する処理が行われ、期間1506ではデータフローBに関する処理が行われる。期間1503ではデータフローAからデータフローCの設定変更が行われる。期間1505ではデータフローCからデータフローBの設定変更が行われる。期間1507ではデータフローBからデータフローCの設定変更が行われる。本実施形態では、データフローA、B、Cの処理変更の順序が一定でないため、それぞれのデータフロー間の全ての設定変更を考慮して処理の配置を行う必要がある。
In the
図中の1509、1522、1431はそれぞれデータフローA、B、Cにおけるプロセッシングエレメントの配置例を示しており、ここではこれら全てのデータフローの処理の配置を一度に一括して行う。なお配置例1509、1522、1531中のプロセッシングエレメント1510、1511、1512、1513はそれぞれ物理的に同じプロセッシングエレメントを指す。
In the figure,
設定1514、1515、1516、1517は、それぞれデータフローAの配置におけるプロセッシングエレメント1510、1511、1512、1513への設定を表している。設定1523、1524、1525、1526は、それぞれデータフローBの配置におけるプロセッシングエレメント1510、1511、1512、1513への設定を表している。設定1532、1533、1534、1535は、それぞれデータフローCの配置におけるプロセッシングエレメント1510、1511、1512、1513への設定を表している。ここで上記の設定とは実施形態1と同様に、図6で説明した設定のことである。本実施形態では、データフローA、B間、B、C間、C、A間のプロセッシングエレメント1510、1511、1512、1513でデータフロー変更に必要な合計の設定変更数と各プロセッシングエレメント間接続の合計距離に注目する。
上記合計数および距離数が図14で示したフローチャート1406で示す評価値に加える設定変更数を後述する評価値として算出することで、距離を考慮した、再構成デバイスの再構成時の設定変更数の削減を行う。 By calculating the setting change number that the total number and the distance number add to the evaluation value shown in the flowchart 1406 shown in FIG. 14 as an evaluation value to be described later, the number of setting changes at the time of reconfiguring the reconfigurable device in consideration of the distance Reduce.
なお、データフローA、B間でのプロセッシングエレメント1510、1511、1512、1513の設定変更は1539で表している。またデータフローB、C間でのプロセッシングエレメント1510、1511、1512、1513の設定変更は1540で表している。データフローC、A間でのプロセッシングエレメント1510、1511、1512、1513の設定変更は1541で表している。
Note that the setting change of the
本実施形態と第1の実施形態との違いは、同時に複数のデータフローの処理配置を行う点にある。図14のステップS1401では、複数のデータフローを入力すると同時に、処理順序が任意であることを入力する。図14のステップS1404で行う処理配置では、処理配置対象であるデータフローA、B、C全てに対して処理配置を行う。図14のステップS1406で第1の実施形態に対して以下の違いがある。 The difference between this embodiment and the first embodiment is that processing arrangement of a plurality of data flows is performed at the same time. In step S1401 of FIG. 14, a plurality of data flows are input, and at the same time, the processing order is arbitrary. In the processing placement performed in step S1404 in FIG. 14, processing placement is performed for all the data flows A, B, and C that are processing placement targets. In step S1406 of FIG. 14, there are the following differences from the first embodiment.
処理配置対象のデータフローi0における、設定値uio,j,kと、処理配置対象のデータフローi1における、同じ位置に配置されたプロセッシングエレメントの同じ種類の設定値ui1,j,kの値が一致していなければα2を設定変更数に加える。また、処理配置対象のデータフローi1における、設定値ui1,j,kと、処理配置対象のデータフローi2における、同じ位置に配置されたプロセッシングエレメントの同じ種類の設定値ui2,j,kの値が一致していなければβ2を設定変更数に加える。さらに、処理配置対象のデータフローi2における、設定値ui2,j,kと、処理配置対象のデータフローi0における、同じ位置に配置されたプロセッシングエレメントの同じ種類の設定値ui0,j,kの値が一致していなければγ2を設定変更数に加える。上述以外で、設定値が一致していれ場合は何も加えない。 The value of the setting value u io, j, k in the data flow i0 to be processed and the setting value u i1, j, k of the same type of processing elements arranged at the same position in the data flow i1 to be processed If does not match, α 2 is added to the number of setting changes. Also, the setting value u i1, j, k in the data flow i1 to be processed and the setting value u i2, j, k of the same type of processing elements arranged at the same position in the data flow i2 to be processed. If the values do not match, β 2 is added to the number of setting changes. Further, the setting value u i2, j, k in the data flow i2 to be processed and the setting value u i0, j, k of the same type of processing elements arranged at the same position in the data flow i0 to be processed. If the values do not match, γ 2 is added to the number of setting changes. Other than the above, nothing is added if the set values match.
ここで、プロセッシングエレメントrに配置されているデータフローi0のノードj0をj0rと表し、データフローi1のノードj1をj1rと表し、データフローi2のノードj2をj2rと表す。ここでrは前述したとおり、各プロセッシングエレメントを表すインデックスである。 Here, the node j0 of the data flow i0 arranged in the processing element r is represented as j0 r , the node j1 of the data flow i1 is represented as j1 r, and the node j2 of the data flow i2 is represented as j2 r . Here, r is an index representing each processing element as described above.
データフローが切り替わる際に、同じ位置に配置されているノードの処理内容の変更に必要な設定変更数は以下の式で求めることができる。 When the data flow is switched, the number of setting changes necessary for changing the processing contents of the nodes arranged at the same position can be obtained by the following equation.
ここでα2、β2、γ2は通常それぞれ1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。 Here, α 2 , β 2 , and γ 2 are each normally 1, but the weight can be changed for each address in which each setting is stored according to the configuration of the configuration memory of the processing element. In addition, in order to give priority to the switching time for each data flow, it is possible to weight each data flow.
また距離については以下の違いがある。図15で示した例では、距離は、距離1518、1519、1520、1521、1527、1528、1529、1530、1536、1537、1538の合計量として表される。図中のプロセッシングエレメントの配置は一例を示してだけであり、配置を変更することでこれらの距離合計量も変わる。配置後にその配置と、データフローのデータ入出力に基づいて以下の式で距離を表すことが可能である。
There are the following differences in distance. In the example illustrated in FIG. 15, the distance is expressed as a total amount of the
ここでκ2i,l、λ2i,lは、データフロー毎のノード間の距離などのアーキテクチャによって重みを一律ないしは別々に変更することも可能である。本実施形態により、全てのデータフロー間を考慮することで、処理の実行順序が不定な場合でも、距離を考慮したうえで平均して設定変更数削減効果が得られる。 Here, the weights of κ2 i, l and λ2 i, l can be changed uniformly or separately depending on the architecture such as the distance between nodes for each data flow. According to the present embodiment, by considering all the data flows, even if the execution order of processing is indefinite, an effect of reducing the number of setting changes can be obtained on average taking the distance into consideration.
次に、本発明の第3の実施形態について説明する。第3の実施形態に係る処理のタイムチャートおよび、処理配置の概要を図16に示す。本実施形態では既に複数のデータフローの処理順序およびそれぞれの処理配置も決まっている場合を想定している。上述の処理順序における任意のデータフローの処理間に、挿入前後の処理配置は変えずに、新たなデータフローに対応した処理を挿入するための処理配置に関する実施形態である。 Next, a third embodiment of the present invention will be described. FIG. 16 shows a time chart of processing according to the third embodiment and an outline of processing arrangement. In the present embodiment, it is assumed that the processing order of a plurality of data flows and the processing arrangement of each are already determined. This embodiment relates to a processing arrangement for inserting a process corresponding to a new data flow without changing the processing arrangement before and after the insertion between processes of an arbitrary data flow in the above-described processing order.
図16のタイムチャート1601は再構成デバイスで行う処理順序が既に決められ、その処理配置も決められているタイムチャートである。タイムチャート1601ではデータフローAの処理1603後、データフローAの設定からデータフローCの設定へ変更する期間1604を経てデータフローCの処理1605を行っている。このタイムチャート1601のデータフローAとデータフローC間に新たにデータフローBを挿入したタイムチャートがタイムチャート1602である。データフローAの処理1603の後にデータフローAの設定からデータフローBの設定へ変更する期間1606を経て新たに挿入したデータフローBの処理1607が行われる。その後データフローBの設定からデータフローCの設定へ変更する期間1608を経てデータフローBの処理1605が行われる。この際データフローAとCの処理配置は変更せずにデータフローBの処理配置を決定するため、挿入する前後の既に処理配置済みのデータフロー間の設定変更量を考慮する。
A
図中の1609、1622、1631はそれぞれデータフローA、B、Cにおけるプロセッシングエレメントの配置例を示している。本実施形態ではデータフローAおよびCは処理配置済みであり、データフローBの処理配置を行う。なお配置例1609、1622、1631中のプロセッシングエレメント1610、1611、1612、1613はそれぞれ同じプロセッシングエレメントを指す。
設定1614、1615、1616、1617は、それぞれデータフローAの配置におけるプロセッシングエレメント1610、1611、1612、1613への設定を表している。設定1623、1624、1625、1626は、それぞれデータフローBの配置におけるプロセッシングエレメント1610、1611、1612、1613への設定を表している。設定1632、1633、1634、1635は、それぞれデータフローCの配置におけるプロセッシングエレメント1610、1611、1612、1613への設定を表している。ここで上記の設定とは実施形態1と同様に、図6で説明した設定のことである。本実施形態では、データフローA、B間、B、C間、C、A間のプロセッシングエレメント1610、1611、1612、1613でデータフロー変更に必要な合計の設定変更数と各プロセッシングエレメント間接続の合計距離に注目する。
なお、新たに挿入するデータフローBに伴う、データフローA、B間でのプロセッシングエレメント1610、1611、1612、1613の設定変更は1639で表している。またデータフローB、C間でのプロセッシングエレメント1610、1611、1612、1613の設定変更は1640で表している。
The setting change of the
本実施形態と第1の実施形態との違いは、複数の処理配置済みのデータフローを参照して、対象となるデータフローの処理配置を行う点である。 The difference between the present embodiment and the first embodiment is that the processing arrangement of the target data flow is performed with reference to a plurality of data flows that have already been arranged.
図14のステップS1403で行う処理配置は、データフローBのみが対象である。データフローA、Cは処理配置済みであり、処理配置変更は行わない。図14のステップS1406では第一の実施形態に対して以下の違いがある。 The processing arrangement performed in step S1403 in FIG. 14 is only for the data flow B. Data flows A and C are already processed and are not changed. In step S1406 of FIG. 14, there are the following differences from the first embodiment.
処理配置済みのデータフローi0における、設定値ui0,j,kと、処理配置対象のデータフローi1における、同じ位置に配置されたプロセッシングエレメントの設定値ui1,j,kの値が一致していなければα3を設定変更数に加える。また、処理配置対象のデータフローi1における、設定値ui1,j,kと、処理配置済みのデータフローi2における、同じ位置に配置されたプロセッシングエレメントの設定値ui2,j,kの値が一致していなければβ3を設定変更数に加える。上述の値が一致していなければ何も加えない。 The set value u i0, j, k in the data flow i0 that has already been processed matches the set value u i1, j, k of the processing element that is placed at the same position in the data flow i1 to be processed. If not, add α 3 to the number of setting changes. Further, the setting value u i1, j, k in the data flow i1 to be processed and the setting value u i2, j, k of the processing element arranged at the same position in the data flow i2 that has been processed are If they do not match, β 3 is added to the number of setting changes. If the above values do not match, nothing is added.
ここで、あるプロセッシングエレメントrに配置されているデータフローi0のノードj0をj0rと表し、データフローi1のノードj1をj1rと表し、データフローi2のノードj2をj2rと表す。ここでrは前述したとおり、各プロセッシングエレメントを表すインデックスである。 Here, the node j0 of the data flow i0 arranged in a certain processing element r is represented as j0 r , the node j1 of the data flow i1 is represented as j1 r, and the node j2 of the data flow i2 is represented as j2 r . Here, r is an index representing each processing element as described above.
データフローが切り替わる際の同じ位置に配置されているノードの処理内容の変更に必要な設定変更数は以下の式で求めることができる。 The number of setting changes necessary for changing the processing contents of the nodes arranged at the same position when the data flow is switched can be obtained by the following expression.
またα3、β3は通常それぞれ1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。 Α 3 and β 3 are normally 1 respectively, but the weight can be changed for each address where each setting is stored according to the configuration of the configuration memory of the processing element. In addition, in order to give priority to the switching time for each data flow, it is possible to weight each data flow.
また距離については以下の違いがある。図16で示した例では、距離は、距離1618、1619、1620、1621、1627、1628、1629、1630、1636、1637、1638の合計量として表される。図中のプロセッシングエレメントの配置は一例を示してだけであり、配置を変更することでこれらの距離合計量も変わる。配置後にその配置と、データフローのデータ入出力に基づいて以下の式で距離を表すことが可能である。
There are the following differences in distance. In the example illustrated in FIG. 16, the distance is expressed as a total amount of the
ここでκ3l、λ3lは、データフロー毎のノード間の距離などのアーキテクチャによって重みを一律ないしは別々に変更することも可能である。新たにデータフロー挿入する場合に、挿入前後のデータフローとの設定変更数の削減に関する効果が得られる。 Here, the weights of κ3 l and λ3 l can be changed uniformly or separately depending on the architecture such as the distance between nodes for each data flow. When a new data flow is inserted, the effect of reducing the number of setting changes with the data flow before and after the insertion can be obtained.
次に、本発明の第4の実施形態について説明する。第4の実施形態に係る処理のタイムチャートおよび、処理配置の概要を図17に示す。本実施形態では、ある基準となるデータフローの処理後、その結果に応じて次に行われるデータフローが異なる場合の処理配置に関する実施形態である。 Next, a fourth embodiment of the present invention will be described. FIG. 17 shows a time chart of processing according to the fourth embodiment and an outline of processing arrangement. In the present embodiment, after processing a certain standard data flow, an embodiment relating to processing arrangement in the case where the data flow to be performed next differs depending on the result.
図17のタイムチャート1701は基準となるデータフローXの処理を期間1702で行った後、その結果に応じて、データフローXからデータフローAかBかCへの設定変更を期間1703で行う。設定完了後、データフローAかBかCの処理が期間1704で行われ、再度基準となるデータフローXの処理を行うため期間1705でデータフローAかBかCからデータフローXへと設定変更を行う。上記順序が繰り返されが、データフローAかBかCのどれが行われるかはデータフローXの結果に応じて変わる。
In the
図中の1706、1719、1728、1737はそれぞれデータフローX、A、B、Cにおける配置例を示している。本実施形態では、データフローX、A、B、Cの全てのデータフローの処理配置を行う。なお配置例1706、1719、1728、1737中のプロセッシングエレメント1707、1708、1709、1710はそれぞれ同じプロセッシングエレメントを指す。
In the figure,
設定1711、1712、1713、1714は、それぞれデータフローXの配置におけるプロセッシングエレメント1707、1708、1709、1710への設定を表している。設定1720、1721、1722、1723は、それぞれデータフローAの配置におけるプロセッシングエレメント1707、1708、1709、1710への設定を表している。設定1729、1730、1731、1732は、それぞれデータフローBの配置におけるプロセッシングエレメント1707、1708、1709、1710への設定を表している。設定1738、1739、1740、1741は、それぞれデータフローCの配置におけるプロセッシングエレメント1707、1708、1709、1710への設定を表している。ここで上記の設定とは第1の実施形態と同様に、図6で説明した設定のことである。
本実施形態では具体的には、データフローX、A、B、Cの処理配置を行う。処理配置に際して、データフローX、A間、X、B間、X、C間のプロセッシングエレメント1707、1708、1709、1710でデータフロー変更に必要な設定変更数の合計数と各プロセッシングエレメント間接続の合計距離に注目する。
Specifically, in this embodiment, processing arrangement of the data flows X, A, B, and C is performed. At the time of processing arrangement, the total number of setting changes required for the data flow change in the
なお、データフローX、A間でのプロセッシングエレメント1707、1708、1709、1710の設定変更は1745で表している。データフローX、B間でのプロセッシングエレメント1707、1708、1709、1710の設定変更は1746で表している。
Note that the setting change of the
データフローX、C間でのプロセッシングエレメント1707、1708、1709、1710の設定変更は1747で表している。
A setting change of the
本実施形態と第1の実施形態との違いは、処理順序に分岐があり、分岐先と分岐元間のデータフローに対して処理配置を行う点にある。 The difference between this embodiment and the first embodiment is that there is a branch in the processing order, and processing is arranged for the data flow between the branch destination and the branch source.
図13のステップS1301では、複数のデータフローを入力すると同時に、部分的に任意の順序関係を含んだ処理順序を入力する。ここで部分的な任意とは本実施形態では実行順序に分岐があり、分岐元と分岐先の実行順序のみ任意であるということを指す。 In step S1301 in FIG. 13, a plurality of data flows are input and a processing order partially including an arbitrary order relation is input. Here, “partial arbitrary” means that there is a branch in the execution order in this embodiment, and only the execution order of the branch source and the branch destination is arbitrary.
図14のステップS1403で行う処理配置は、処理配置対象であるデータフローX、A、B、Cの全てに対して処理配置を行う。本実施形態では全てのデータフローを処理配置対象として扱う例を示しているが、それに限ったものではない。本実施形態は処理順序に注目したものであり、少なくとも一つのデータフローが、既に処理配置済みの場合には、それ以外のデータフローの処理配置を行うこととなる。 The processing placement performed in step S1403 in FIG. 14 performs processing placement for all of the data flows X, A, B, and C that are the processing placement targets. In the present embodiment, an example is shown in which all data flows are handled as processing arrangement targets, but the present invention is not limited to this. In this embodiment, attention is paid to the processing order. When at least one data flow has already been processed and arranged, the processing arrangement of other data flows is performed.
図14のステップS1406では第1の実施形態に対して以下の違いがある。処理配置対象のデータフローi0における、設定値ui0,j,kと、処理配置対象のデータフローi1における、同じ位置に配置されたプロセッシングエレメントの同じ種類の設定値ui1,j,kの値が一致していなければα4を設定変更数に加える。また、処理配置対象のデータフローi0における、設定値ui0,j,kと、処理配置対象のデータフローi2における、同じ位置に配置されたプロセッシングエレメントの同じ種類の設定値ui2,j,kの値が一致していなければβ4を設定変更数に加える。さらに、処理配置対象のデータフローi0における、設定値ui0,j,kと、処理配置対象のデータフローi3における、同じ位置に配置されたプロセッシングエレメントの同じ種類の設定値ui3,j,kの値が一致していなければγ4を設定変更数に加える。上述以外で、設定値が一致している場合は何も加えない。 In step S1406 of FIG. 14, there are the following differences from the first embodiment. The value of the setting value u i0, j, k in the data flow i0 to be processed and the setting value u i1, j, k of the same type of processing element arranged at the same position in the data flow i1 to be processed If does not match, add α 4 to the number of setting changes. In addition, the setting value u i0, j, k in the data flow i0 to be processed and the setting value u i2, j, k of the same type of processing elements arranged at the same position in the data flow i2 to be processed. If the values do not match, β 4 is added to the setting change number. Further, the setting value u i0, j, k in the data flow i0 to be processed and the setting value u i3, j, k of the same type of processing elements arranged at the same position in the data flow i3 to be processed. If the values do not match, γ 4 is added to the number of setting changes. Other than the above, nothing is added when the set values match.
ここで、あるプロセッシングエレメントrに配置されているデータフローi0のノードj0をj0rと表し、データフローi1のノードj1をj1rと表し、データフローi2のノードj2をj2rと表し、データフローi3のノードj3をj3rと表す。ここでrは前述したとおり、各プロセッシングエレメントを表すインデックスである。 Here, the node j0 of the data flow i0 arranged in a certain processing element r is represented as j0 r , the node j1 of the data flow i1 is represented as j1 r , the node j2 of the data flow i2 is represented as j2 r, and the data flow. The node j3 of i3 is represented as j3 r . Here, r is an index representing each processing element as described above.
データフローが切り替わる際の同じ位置に配置されているノードの処理内容の変更に必要な設定変更数は以下の式で求めることができる。 The number of setting changes necessary for changing the processing contents of the nodes arranged at the same position when the data flow is switched can be obtained by the following expression.
ここでα4、β4、γ4は通常それぞれ1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。 Here, α 4 , β 4 , and γ 4 are normally 1 respectively, but the weight can be changed for each address in which each setting is stored according to the configuration of the configuration memory of the processing element. In addition, in order to give priority to the switching time for each data flow, it is possible to weight each data flow.
また距離については以下の違いがある。図17で示した例では、距離は、距離1715、1716、1717、1718、1724、1725、1726、1727、1733、1734、1735、1736、1742、1743、1744の合計量として表される。図中のプロセッシングエレメントの配置は一例を示してだけであり、配置を変更することでこれらの距離合計量も変わる。配置後にその配置と、データフローのデータ入出力に基づいて以下の式で距離を表すことが可能である。
There are the following differences in distance. In the example shown in FIG. 17, the distance is expressed as a total amount of the
ここで、κ4i,l、λ4i,lは、データフロー毎のノード間の距離などのアーキテクチャによって重みを一律ないしは別々に変更することも可能である。本実施形態により、複数のデータフローを順々に行う上で、その実行順序に分岐がある場合でも、分岐元となるデータフローと分岐先となる複数の他のデータフローを考慮することで、設定変更数削減効果が得られる。 Here, the weights of κ4 i, l and λ4 i, l can be changed uniformly or separately depending on the architecture such as the distance between nodes for each data flow. According to this embodiment, when performing a plurality of data flows in order, even if there is a branch in the execution order, by considering a data flow that is a branch source and a plurality of other data flows that are a branch destination, The effect of reducing the number of setting changes can be obtained.
次に、本発明の第5の実施形態について説明する。第5の実施形態に係るデータフローと処理配置制限方法に関する概要を図18に示す。処理配置問題は一般的に難しく解算出のための時間が大きくかかる場合が多い。本発明のように複数のデータフローを同時に配置させる場合はさらに問題が大きくなる。そのため本実施形態では処理の配置可能範囲を制限することで効果的に解算出時間を短縮する。 Next, a fifth embodiment of the present invention will be described. FIG. 18 shows an outline of the data flow and the processing arrangement restriction method according to the fifth embodiment. The processing placement problem is generally difficult and often takes a long time to calculate a solution. The problem is further increased when a plurality of data flows are arranged simultaneously as in the present invention. Therefore, in this embodiment, the solution calculation time is effectively shortened by limiting the range in which processing can be arranged.
データフロー1819は複数の処理に対応するノード1801〜1818で構成されている。また1826はプロセッシングエレメントアレイに対する入力装置を1820、出力装置を1821とし、それらの間にプロセッシングエレメントアレイがある構成となっている。
The
本実施形態では、これらをデータフロー1819の処理を配置モデル1201に配置させる際、データフローの深さ方向とプロセッシングエレメントアレイへの入出力の位置を対応させることで解空間を効率的に狭める。具体的にはノード1801から1804は1821で示した範囲のみ配置可能と設定する。また1805から1810は1822で示した範囲のみ配置可能と設定する。また1811から1814は1822で示した範囲のみ配置可能と設定する。また1815から1818は1823で示した範囲のみ配置可能と設定する。
In this embodiment, when the processing of the
これらの制限は図14のステップS1402で入力することを想定している。本実施形態では配置可能範囲はデータフローの深さとプロセッシングエレメントアレイの入出力の方向に対応付けさせたが、それに限るものではない。 These restrictions are assumed to be input in step S1402 of FIG. In this embodiment, the possible arrangement range is associated with the depth of the data flow and the input / output direction of the processing element array, but is not limited thereto.
上述した実施形態では、ユースケース別に各々の処理配置方法について述べたが、本発明はこれらの方法の組み合わせでも良い。また、再構成デバイスの構成要素としてプロセッシングエレメントを説明したが、これに限るものではなく、LUTや、それとの組み合わせでも良い。また、設定は、実施形態で示した設定に限るものではなく、LUTベースの再構成デバイスで使用される設定でも良い。また、実施形態では入力するデータフロー全てに対して処理配置対象としたが、データフローの処理配置対象範囲を指定することで、データフローの一部のみに対して処理配置を行っても良い。また、実施形態ではプロセッシングエレメント数はデータフロー間で同じとしているが、処理を配置するプロセッシングエレメント数が異なっても良い。また、実施形態で示した、距離合計値が少なくなるように記載しているが、各距離の最大値が小さくなるように配置を決定しても良い。また、各距離の平均値が少なくなるように配置を決定しても良い。 In the above-described embodiment, each processing arrangement method is described for each use case, but the present invention may be a combination of these methods. Further, although the processing element has been described as a component of the reconfigurable device, the present invention is not limited to this, and an LUT or a combination thereof may be used. Further, the setting is not limited to the setting shown in the embodiment, and may be a setting used in an LUT-based reconfiguration device. In the embodiment, the processing arrangement target is set for all the input data flows. However, the processing arrangement may be performed for only a part of the data flow by specifying the processing arrangement target range of the data flow. In the embodiment, the number of processing elements is the same between data flows, but the number of processing elements in which processing is arranged may be different. Further, although the description is made so that the total distance value shown in the embodiment is small, the arrangement may be determined so that the maximum value of each distance is small. Further, the arrangement may be determined so that the average value of each distance is reduced.
上述した実施形態ではプロセッシングエレメントは格子状に均一に配置され、それぞれのプロセッシングエレメント間の接続距離は一定を前提に記載したが、これに限るものではない。プロセッシングエレメントの接続形態が例えば木構造のように接続されている場合はそれぞれの距離は、木構造に応じて重みづけても良い。つまり、プロセッシングエレメントの接続形態に応じてそれぞれの距離を重みづけても良い。 In the above-described embodiment, the processing elements are uniformly arranged in a lattice shape, and the connection distance between the processing elements is described as being constant. However, the present invention is not limited to this. When processing elements are connected in a manner such as a tree structure, the distances may be weighted according to the tree structure. That is, each distance may be weighted according to the connection form of the processing elements.
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。 The present invention can also be realized by executing the following processing. That is, software (program) that realizes the functions of the above-described embodiments is supplied to a system or apparatus via a network or various storage media, and a computer (or CPU, MPU, or the like) of the system or apparatus reads the program. It is a process to be executed.
Claims (6)
少なくとも二つの異なるデータフローと前記データフローの処理順序を入力する入力ステップと、
再構成デバイスの構成要素の制約を入力する制約ステップと、
前記データフローに応じた、前記再構成に必要な設定変更数と前記データフローのデータ入出力の依存関係に基づく構成要素間の距離とを用い、構成要素の配置を決めることで、要求される処理をどの構成要素で実行させるかを決定する決定ステップとを有することを特徴とする処理配置方法。 A processing arrangement method for determining a component that performs each process of data flow for a reconfigurable device composed of a plurality of components,
An input step for inputting at least two different data flows and a processing order of the data flows;
A constraint step for entering constraints on the components of the reconfigurable device;
Required by determining the arrangement of the components using the number of setting changes necessary for the reconfiguration according to the data flow and the distance between the components based on the data input / output dependency of the data flow. And a determination step for determining which component causes the process to be executed.
少なくとも二つの異なるデータフローと前記データフローの処理順序を入力する入力ステップと、
再構成デバイスの構成要素の制約を入力する制約ステップと、
前記データフローに応じた、前記再構成に必要な設定変更数と前記データフローのデータ入出力の依存関係に基づく構成要素間の距離とを用い、構成要素の配置を決めることで、要求される処理をどの構成要素で実行させるかを決定する決定ステップとをコンピュータに実行させるためのプログラム。 A program for causing a computer to execute a processing arrangement method for determining a component for performing each process of data flow for a reconfigurable device including a plurality of components,
An input step for inputting at least two different data flows and a processing order of the data flows;
A constraint step for entering constraints on the components of the reconfigurable device;
Required by determining the arrangement of the components using the number of setting changes necessary for the reconfiguration according to the data flow and the distance between the components based on the data input / output dependency of the data flow. A program for causing a computer to execute a determination step for determining which component causes a process to be executed.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012003035A JP5907607B2 (en) | 2011-02-16 | 2012-01-11 | Processing arrangement method and program |
US13/354,735 US9116751B2 (en) | 2011-02-08 | 2012-01-20 | Reconfigurable device, processing assignment method, processing arrangement method, information processing apparatus, and control method therefor |
CN201210027897.8A CN102693207B (en) | 2011-02-08 | 2012-02-08 | Reconfigurable device and method, information processing apparatus, and control method therefor |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011031220 | 2011-02-16 | ||
JP2011031220 | 2011-02-16 | ||
JP2012003035A JP5907607B2 (en) | 2011-02-16 | 2012-01-11 | Processing arrangement method and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012185803A true JP2012185803A (en) | 2012-09-27 |
JP5907607B2 JP5907607B2 (en) | 2016-04-26 |
Family
ID=47015811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012003035A Active JP5907607B2 (en) | 2011-02-08 | 2012-01-11 | Processing arrangement method and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5907607B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012248114A (en) * | 2011-05-30 | 2012-12-13 | Canon Inc | Information processing apparatus, method of controlling the same, and program |
WO2018211349A1 (en) * | 2017-05-19 | 2018-11-22 | 株式会社半導体エネルギー研究所 | Semiconductor device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11249904A (en) * | 1997-12-17 | 1999-09-17 | Hewlett Packard Co <Hp> | Compiling method |
JP2006004345A (en) * | 2004-06-21 | 2006-01-05 | Sanyo Electric Co Ltd | Dataflow graph processing method, reconfigurable circuit, and processing apparatus |
JP2007058571A (en) * | 2005-08-24 | 2007-03-08 | Fujitsu Ltd | Circuit and circuit connection method |
-
2012
- 2012-01-11 JP JP2012003035A patent/JP5907607B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11249904A (en) * | 1997-12-17 | 1999-09-17 | Hewlett Packard Co <Hp> | Compiling method |
JP2006004345A (en) * | 2004-06-21 | 2006-01-05 | Sanyo Electric Co Ltd | Dataflow graph processing method, reconfigurable circuit, and processing apparatus |
JP2007058571A (en) * | 2005-08-24 | 2007-03-08 | Fujitsu Ltd | Circuit and circuit connection method |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012248114A (en) * | 2011-05-30 | 2012-12-13 | Canon Inc | Information processing apparatus, method of controlling the same, and program |
WO2018211349A1 (en) * | 2017-05-19 | 2018-11-22 | 株式会社半導体エネルギー研究所 | Semiconductor device |
JPWO2018211349A1 (en) * | 2017-05-19 | 2020-07-02 | 株式会社半導体エネルギー研究所 | Semiconductor device |
US11314484B2 (en) | 2017-05-19 | 2022-04-26 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device comprising operation circuits and switch circuits |
JP7127018B2 (en) | 2017-05-19 | 2022-08-29 | 株式会社半導体エネルギー研究所 | Semiconductor device and integrated circuit |
JP2022176964A (en) * | 2017-05-19 | 2022-11-30 | 株式会社半導体エネルギー研究所 | Semiconductor device |
JP7289976B2 (en) | 2017-05-19 | 2023-06-12 | 株式会社半導体エネルギー研究所 | semiconductor equipment |
Also Published As
Publication number | Publication date |
---|---|
JP5907607B2 (en) | 2016-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI803663B (en) | A computing device and computing method | |
KR102544597B1 (en) | Methods and systems for simulating structural behaviors of reinforced concrete in finite element analysis | |
JPWO2006046711A1 (en) | Data processing apparatus having reconfigurable logic circuit | |
JP5798378B2 (en) | Apparatus, processing method, and program | |
US20190057060A1 (en) | Reconfigurable fabric data routing | |
CN106095563B (en) | Flexible physical function and virtual function mapping | |
CN103914433B (en) | For the system and method for factorization square matrix again on parallel processor | |
CN109167595A (en) | Implement the method and apparatus of peripheral components on programmable circuit using partial reconfiguration | |
US9116751B2 (en) | Reconfigurable device, processing assignment method, processing arrangement method, information processing apparatus, and control method therefor | |
KR102539571B1 (en) | Network-on-chip data processing method and device | |
KR102539572B1 (en) | Network-on-chip data processing method and device | |
US20190156245A1 (en) | Platform as a service cloud server and machine learning data processing method thereof | |
WO2023022851A1 (en) | Data storage during loop execution in a reconfigurable compute fabric | |
WO2023022906A1 (en) | Tile-based result buffering in memory-compute systems | |
JP5907607B2 (en) | Processing arrangement method and program | |
WO2018080735A2 (en) | Method, apparatus and system for automatically performing end-to-end channel mapping for an interconnect | |
JP5832311B2 (en) | Reconfiguration device, process allocation method, and program | |
US9910810B1 (en) | Multiphase I/O for processor-based emulation system | |
KR102074387B1 (en) | Method of self-adaptive design of embedded software | |
JP4664724B2 (en) | Semiconductor integrated circuit device and semiconductor integrated circuit device design apparatus | |
WO2023050807A1 (en) | Data processing method, apparatus, and system, electronic device, and storage medium | |
CN117795496A (en) | Parallel matrix operations in reconfigurable computing fabrics | |
KR102539574B1 (en) | Network-on-chip data processing method and device | |
KR102539573B1 (en) | Network-on-chip data processing method and device | |
US20210133579A1 (en) | Neural network instruction streaming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20141209 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20151028 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20151110 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160126 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160201 |
|
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: 20160223 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160318 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5907607 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |