JP5832311B2 - Reconfiguration device, process allocation method, and program - Google Patents
Reconfiguration device, process allocation method, and program Download PDFInfo
- Publication number
- JP5832311B2 JP5832311B2 JP2012003497A JP2012003497A JP5832311B2 JP 5832311 B2 JP5832311 B2 JP 5832311B2 JP 2012003497 A JP2012003497 A JP 2012003497A JP 2012003497 A JP2012003497 A JP 2012003497A JP 5832311 B2 JP5832311 B2 JP 5832311B2
- Authority
- JP
- Japan
- Prior art keywords
- data flow
- processing
- setting
- data
- configuration
- 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.)
- Active
Links
Images
Description
本発明は、回路構成を変更することができる再構成デバイスの回路構成情報の生成技術に関するものである。 The present invention relates to a technique for generating circuit configuration information of a reconfigurable device whose circuit configuration can be changed.
従来から製造後の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, a desired process is first 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 an object thereof is to efficiently reduce the circuit change period without increasing the circuit scale by considering the order of circuit configuration change.
本発明の処理割当て方法は、複数の構成要素で構成される再構成デバイスに対し、各構成要素に処理を割り当てる処理割当て方法であって、少なくとも二つの異なるデータフローとデータフローの実行順序を入力するデータフロー入力ステップと、前記構成要素の制約を入力する制約ステップと、前記構成要素の制約と実行順序とに基づく前記構成要素の再構成に必要な設定変更数が少なくなるように処理割り当てを決定する処理割り当て決定ステップとを有することを特徴とする。 The process allocation method of the present invention is a process allocation method for allocating processes to each component for a reconfigurable device composed of a plurality of components, and inputting at least two different data flows and the execution order of the data flows. A data flow input step, a constraint step for inputting the constraint of the component, and a process allocation so that the number of setting changes necessary for reconfiguration of the component based on the constraint and execution order of the component is reduced. And a process allocation determining step for determining.
本発明によれば、再構成に必要な設定数を減らすように回路構成情報を作成することで、回路規模を増やすことなく再構成デバイスの再構成期間を短縮することが可能である。 According to the present invention, by creating circuit configuration information so as to reduce the number of settings required for reconfiguration, it is possible to shorten the reconfiguration period of the reconfiguration device without increasing the circuit scale.
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。 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は、本発明の実施形態に係る再構成デバイスを有するシステムの全体構成の一例を示す図である。外部メモリ101は内部に回路構成情報106を保持している。回路構成情報106は、再構成デバイス105を構成する要素を動作させる設定群である。コンフィギュレーションコントローラ102は、上記メモリ101から結線104を通じ、回路構成情報106を取得する。取得した回路構成情報106は結線103を通じて再構成デバイス105へ送られる。ここで再構成デバイス105の例としてプロセッシングエレメントアレイとしている。
FIG. 1 is a diagram showing an example of the overall configuration of a system having a reconfigurable device according to an embodiment of the present invention. The
また、以下では具体的にプロセッシングエレメントアレイ内の説明をするが、本発明は下記の各プロセッシングエレメントの構成や経路構成に限定されるものではない。 Although the processing element array will be specifically described below, the present invention is not limited to the configuration and path configuration of each processing element described below.
図2は、本実施形態における再構成デバイスであるプロセッシングエレメントアレイの概要を示す図である。再構成デバイスには、8入力8出力の入出力処理手段であるスイッチングエレメント201が二次元格子状に配置され、演算処理手段である4入力4出力のプロセッシングエレメント202が、スイッチングエレメント201の格子内に配置されている。スイッチングエレメント201a〜iの8入力8出力は1入力1出力を一組としてそれぞれ東西南北(右左下上)方向の、他の4つのスイッチングエレメント201と結線203aおよび203bを介して夫々接続されている。さらに、北東、南東、南西、北西方向の、それぞれ別の4つのプロセッシングエレメント202と結線204aおよび204bを介して双方向に接続された構成を持つ。またスイッチングエレメント201a〜201iおよびプロセッシングエレメント202a〜202dは結線205で一方向に数珠繋ぎに接続されている。
FIG. 2 is a diagram showing an outline of a processing element array which is a reconfigurable device in the present embodiment. In the reconfigurable device, switching
結線203a、203bおよび結線204a、204bはスイッチングエレメント201やプロセッシングエレメント202の間で処理対象データを通信するために接続された結線である。結線205は、スイッチングエレメント201やプロセッシングエレメント202に設定を供給するための結線である。上述の設定によって、スイッチングエレメント201においては処理対象データの入出力先が決定され、プロセッシングエレメント202においては処理対象データの入出力先や処理内容が決定される。なお、図2の各結線203a、203b、204a、204b、205の矢印の方向はデータの方向を示している。またスイッチングエレメント201a〜201iはそれぞれ同じ構成を有し、プロセッシングエレメント202a〜202dはそれぞれ同じ構成を有する。
ここで、各結線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へと転送されている。プロセッシングエレメント202の構成を図4に示す。プロセッシングエレメント202は、コンフィギュレーションユニット401、インプットユニット402、コンピュテーショナルユニット403、アウトプットユニット404、テンポラリーバッファ405で構成されている。
Here, as an example of a communication protocol for each of the
コンフィギュレーションユニット401はプロセッシングエレメント202の動作内容を決定するための設定の管理を行う。インプットユニット402はコンフィギュレーションユニット401の設定に基づき、入力処理を行う。コンピュテーショナルユニット403はコンフィギュレーションユニット401の設定に基づき、演算処理を行う。また、コンピュテーショナルユニット403は、再度コンピュテーショナルユニット403に入力するためテンポラリーバッファ405に処理された結果を保持することが可能である。アウトプットユニット404はコンフィギュレーションユニット401の設定に基づき、出力処理を行う。
The configuration unit 401 manages settings for determining the operation content 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に保持されている例を示している。
Hereinafter, the setting based on the above-described configuration will be described more specifically.
アドレス0x0000_0000(“0x”は16進数を示している)で示した設定値は、インプットユニット402における入力先を決定するための設定値であり、値に応じて所定の入力先が決まる。アドレス0x0000_0004で示したイタレーションナンバは、コンピュテーショナルユニット403における、演算の繰り返し回数を決定するための設定であり、値に応じて演算の繰り返し回数が決まる。本実施形態では4回までの演算を想定している。
A setting value indicated by an address 0x0000 — 0000 (“0x” indicates a hexadecimal number) is a setting value 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の値の参照先を決めるための設定である。次に0x0000_001cで示したパラメータは、1度目の演算において0x0000_000cで指定された参照先が固定値の場合の、変数aのための固定値である。0x0000_001cと同様に0x0000_0020、0x0000_0024、0x0000_0028で示した固定値は、それぞれ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_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 setting 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では同一の再構成デバイスで複数の異なるデータフローA〜Zを順に実行しているタイムチャートを示している。本実施形態では、これらデータフローとデータフローの実行順序とを入力するデータフロー入力によって入力される。
本実施形態で扱うデータフローとは、再構成デバイスへ一度に処理を割り当て可能な単位で構成されたデータフローのことである。各データフローを処理するための設定は予め生成しておく。再構成デバイスに対して予め生成された設定に基づき再構成デバイスを再構成し、その構成のもとで処理をするという一連の処理が、所望の実行順序で順々に行われる。
FIG. 10 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. 10 shows a time chart in which a plurality of different data flows A to Z are sequentially executed by the same reconstruction device. In this embodiment, the data flow and the data flow execution order are input by data flow input.
The data flow handled in the present embodiment is a data flow configured in units that can assign processing to the reconfigurable device at one time. Settings for processing each data flow are generated in advance. A series of processes of reconfiguring the reconfigurable device based on settings generated in advance for the reconfigurable device and performing processing based on the configuration is sequentially performed in a desired execution 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 assigned processing and the data flow B is subject to processing assignment. Specifically, the process allocation of data flow B is determined with reference to a setting value for executing data flow A to which process allocation has been performed. After determining the process assignment of the data flow B with reference to the process assignment of the data flow A, the data flow B is assumed to be already assigned and the data flow C is set as the process assignment target. Specifically, the processing assignment of data flow C is determined with reference to the setting value for executing the data flow B to which processing has been assigned in the same manner as when the processing assignment of data flow B has been determined. By repeating the above procedure in order, it is possible to assign processing of data flows from A to Z.
次にデータフローの上記再構成デバイスのプロセッシングエレメントへの処理を割り当てについて説明する。ここで、データフローのプロセッシングエレメントへの処理割り当てとは、データフローの各処理をプロセッシングエレメントに論理的に割り当てる方法である。より具体的には図11に示すようにデータフローの各ノードに対応する処理内容をどのプロセッシングエレメントにおいて、どの順序で行うかを決めることである。図11左図はあるデータフローAを表し、中央図は処理割り当て例を表し、右図は処理割り当てに基づく、図6で示した設定を表す。前述の通り、本実施形態で示すプロセッシングエレメントが有する機能としては繰り返し処理数や、各処理回数目での処理内容やその際に必要となる固定値を想定しており、実際にはこの設定を決めることになる。なお、本実施形態では最大の繰り返し処理回数は4回という想定である。上記データフローに対して、中央の図で表すように、1101a〜1104aでくくったグループごとに、異なるプロセッシングエレメント202に順序付けて処理を割り当てる。上記1101a〜1104aに基づき、それぞれプロセッシングエレメント202−1〜202−4に対する設定1101b〜1104bを決定する。
Next, allocation of processing to the processing element of the reconfigurable device in the data flow will be described. Here, the process assignment of the data flow to the processing element is a method of logically assigning each process of the data flow to the processing element. More specifically, as shown in FIG. 11, in which processing element and in which order processing contents corresponding to each node of the data flow are performed are determined. The left diagram in FIG. 11 represents a certain data flow A, the central diagram represents an example of process allocation, and the right diagram represents the settings shown in FIG. 6 based on the process allocation. As described above, the processing element shown in the present embodiment assumes the number of repeated processing, the processing content at each processing number, and a fixed value required at that time. To decide. In the present embodiment, it is assumed that the maximum number of iterations is four. For the data flow, as shown in the central diagram, processing is assigned in order to
本実施形態は、図10で示したように同一の再構成デバイスにおいて処理内容(データフロー)が切り替わる際に必要となる上記図11で示した設定数の削減を目的とした処理割り当て方法である。図12では再構成デバイスにおける処理がデータフローAからデータフローBへ変更される際に各プロセッシングエレメント202−1〜202−4の設定変更の概要を示している。データフロー1204の処理は、タイムチャートの処理1201に相当し、既に処理割り当て済みであるものとする。データフロー1205の処理は、タイムチャートの処理1203に相当し、処理割り当て対象のデータフローとする。データフロー1204とデータフロー1205のそれぞれの処理が割り当てられるプロセッシングエレメント202−1〜202−4は、それぞれ論理的に同一のプロセッシングエレメントを意味している。1101b〜1104bはそれぞれデータフローAの処理時のプロセッシングエレメント202−1〜202−4に関する設定であり、1206〜1209はそれぞれデータフローBの処理時のプロセッシングエレメント202―1〜202−4に関する設定である。プロセッシングエレメント202−1では、タイムチャートのデータフローAからBへの設定変更期間1202において設定1101bから設定1206へと設定変更1210が行われる。プロセッシングエレメント202−2では、タイムチャートのデータフローAからBへの設定変更期間1202において設定1102bから設定1207へと設定変更1211が行われる。プロセッシングエレメント202−3では、タイムチャートのデータフローAからBへの設定変更期間1202において設定1103bから設定1208へと設定変更1212が行われる。プロセッシングエレメント202−4では、タイムチャートのデータフローAからBへの設定変更期間1202において設定1104bから設定1209へと設定変更1213が行われる。本実施形態ではデータフローBの処理割り当てに際し、まず各プロセッシングエレメント202−1〜202−4における処理割り当て済みのデータフローAを参照する。その上で上記設定変更1210、1211、1212、1213する際に必要な設定変更数を少なくすることを目的としたデータフローBの処理割り当てを行う。
This embodiment is a process allocation method for the purpose of reducing the number of settings shown in FIG. 11, which is required when the processing content (data flow) is switched in the same reconfigurable device as shown in FIG. . FIG. 12 shows an outline of setting change of each processing element 202-1 to 202-4 when the processing in the reconfigurable device is changed from the data flow A to the data flow B. The process of the
図17は、上記データフローAからデータフローBへの移行する際の回路構成情報106を生成するための装置のブロック構成図を示している。図17において、2501は装置全体の制御を司るCPUである。2502はブートプログラムやBIOSを記憶しているROMである。2503はCPU2501のワークエリアとして利用され、且つ、OS(オペレーティングシステム)、アプリケーションを格納するためのRAMである。2504はOS、回路構成情報106を作成するためのアプリケーション、ならびに、様々なデータを格納するためのハードディスクドライブ(HDD)である。2505はキーボード、2506はマウスであり、ユーザインタフェースとして機能する。2507は内部にビデオメモリ及び表示コントローラを内蔵する表示制御部であり、2508は表示制御部2507からの映像信号を受信し、表示するための表示装置である。2509は各種外部デバイスと通信するインタフェースであり、例えば、図1に示した外部メモリ101を接続することで、本装置が作成した回路構成情報106をその外部メモリ101に書込むことになる。
FIG. 17 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
以下、回路構成情報作成装置として機能する本装置の処理手順を、図13のフローチャートを用いて説明する。本手順はシミュレーテッドアニーリングに基づき処理割り当て方法の例を示すが、本発明は上記手法のみに限定されるものではなく、遺伝的アルゴリズムなどの様々な近似解法や数値最適化法でも良い。 Hereinafter, the processing procedure of this apparatus functioning as the circuit configuration information creating apparatus will be described with reference to the flowchart of FIG. This procedure shows an example of a process assignment method based on simulated annealing, but the present invention is not limited to the above method, and various approximate solutions such as genetic algorithms and numerical optimization methods may be used.
まず、図12を用いてフローチャートの説明に必要な要素について言及する。各データフローを示すインデックスをi、プロセッシングエレメントのインデックスをj、図6のアドレス601に相当するプロセッシングエレメント内で保持しているメモリのコンフィギュレーションアドレスをkとする。上記より各メモリ内の設定値はui,j,kと表すことができる。ここで処理割り当て済みのデータフローをi0、処理割り当て対象のデータフローをi1とする。初めに、ステップS1301では複数のデータフローとその実行順序関係(iの順序)を入力する。既に処理割り当て済みのデータフローに関しては、その設定値
ui0,j,kも入力する。本実施形態ではデータフロー1204は既に処理割り当て済みであり、データフロー1204に関する各プロセッシングエレメントの各メモリ内の設定値は固定値として与えられる。データフロー1205に関しては処理割り当て対象である。
First, elements necessary for explaining the flowchart will be described with reference to FIG. Assume that the index indicating each data flow is i, the index of the processing element is j, and the configuration address of the memory held in the processing element corresponding to the
次に、ステップS1302で要求仕様とハードウェア制約の条件を入力する。ここでハードウェア制約条件とは再構成デバイス内のプロセッシングエレメントの個数やプロセッシングエレメントで処理可能な繰り返し処理回数、演算器の種類などハードウェア構成上の制約となりうるものである。また要求仕様とは、プロセッシングエレメントの使用個数や繰り返し処理の回数の制限、使用可能な演算器の種類などハードウェア使用上で制限すべき項目である。さらに処理の入出力の順序関係に矛盾がないか、デッドロックがないか、なども本制約に関する。また、既に処理割り当て済みのデータフローに関しては処理割り当てを変更しないという制約も含む。ただし、本発明は上述の制約のみに限られるものではない。 In step S1302, the required specifications and hardware constraint conditions are input. Here, the hardware constraint condition may be a constraint on the hardware configuration such as the number of processing elements in the reconfigurable device, the number of repetition processes that can be processed by the processing element, and the type of arithmetic unit. The required specifications are items that should be restricted in terms of hardware usage, such as the number of processing elements used, the number of repetitions, and the types of computing units that can be used. Furthermore, whether there is any contradiction in the input / output order relationship of processing, deadlocks, etc. are also related to this constraint. Further, there is a restriction that the processing assignment is not changed for a data flow that has already been assigned a processing. However, the present invention is not limited only to the above-described restrictions.
続いてステップS1303では処理割り当て対象となるデータフローの処理割り当てを行う。初期処理割り当てにおいては、ランダムに割り当てる、ないしはデータフローの深さ方向順に処理を割り当て方法があるが、これらの方法に限られるものではない。初期割り当てでない場合は、例えばランダムに二つの配置を選出し交換するようにシミュレーテッドアニーリングに基づき処理割り当てを変更する。本実施形態では、処理割り当て対象のデータフロー1205に関して初期処理割り当て、ないしは処理割り当て変更を行う。処理割り当て済みのデータフローに関しては、制約に基づき処理割り当ての変更は行わない。ステップS1304では、処理割り当て結果がステップS1303で入力した要求仕様を満たしているか判断する。
Subsequently, in step S1303, process allocation of the data flow to be processed is performed. In the initial process assignment, there is a method of assigning processes randomly or assigning processes in the order of the depth direction of the data flow, but it is not limited to these methods. If it is not the initial allocation, for example, the processing allocation is changed based on simulated annealing so that two arrangements are randomly selected and exchanged. In this embodiment, an initial process allocation or a process allocation change is performed for the
以下の式に示すように、制約を満たしていれば、ペナルティ変数p0を0とし、違反している場合はペナルティ変数p0をペナルティ値Cp0とする。 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は定数値として扱っているが、違反項目に応じた変数値としてもよい。ステップS1305では、処理割り当て結果がステップS1302で入力したハードウェア制約条件を満たしているかを判断する。以下の式に示すように、制約を満たしていれば、ペナルティ変数P1を0とし、違反している場合はペナルティ変数P1をペナルティ値Cp1とする。 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 S1305, it is determined whether the process assignment result satisfies the hardware constraint condition input in step S1302. 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は定数値として扱っているが、違反項目に応じた変数値としてもよい。次にステップS1306では、対象となるデータフロー変更間における設定変更数の算出を行い、評価値を計算する。図12の例で説明すると設定変更1210、1211、1212、1213の際に変更の必要がある設定数である。より具体的には、処理割り当て済みのデータフローi0における、設定値ui0,j,kと、処理割り当て対象のデータフローi1における、同じアドレスの設定値ui1,j,kの値が一致していなければα1を設定変更数に加える。上述の値が一致していれば何も加えない。上述の計算を全てのプロセッシングエレメントjの全てのメモリkに関して行う。以上で説明した設定変更数は以下の式で表すことできる。 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 S1306, the number of setting changes between target data flow changes is calculated, and an evaluation value is calculated. If it demonstrates in the example of FIG. 12, it is the setting number which needs to be changed in the case of the setting changes 1210, 1211, 1212, 1213. More specifically, the setting value u i0, j, k in the data flow i0 to which processing has been assigned matches the setting value u i1, j, k at the same address in the data flow i1 to be processed. If not, add α 1 to the number of setting changes. If the above values match, nothing is added. The above calculation is performed for all memories k of all processing elements j. The number of setting changes described above can be expressed by the following formula.
ここでα1は通常1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。 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.
図7で示した通り、一度のコンフィギュレーションコマンドで一つの設定値を変更することができることから、この数が少なくなれば、処理内容の切り替え時間を削減することが可能となる。本ステップで評価値算出する際の式は上述の式より、以下と定義する。 As shown in FIG. 7, since one setting value can be changed with a single configuration command, the processing content switching time can be reduced if this number is reduced. The formula for calculating the evaluation value in this step is defined as follows from the above formula.
つまり、要求仕様とハードウェア制約条件を満たしつつ、再構成に必要な設定変更数が少なくなるほど上記評価値は小さくなる。最後にステップS1307では、シミュレーテッドアニーリングに基づき目標達成したかを判断し、目標を達成した場合は終了する。目標未達の場合はステップS1303に戻り、ステップS1303〜S1307を繰り返し行う。ここで、目標値とは十分良い結果が得られるまで、もしくは予定された計算時間に達するまで繰り返す。 That is, the evaluation value decreases as the number of setting changes necessary for reconfiguration decreases while satisfying the required specifications and hardware constraint conditions. Finally, in step S1307, 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 S1303, and steps S1303 to S1307 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 method of assigning a process to a processing element of a data flow in a general reconfigurable device, since the number of setting changes is not conscious, it is necessary to change all settings between data flow process changes. In the present invention, it is possible to effectively reduce the number of setting changes by paying attention to the processing order of the data flow and reducing the total number of changes at the setting level which is the minimum unit.
次に、本発明の第2の実施形態について説明する。第2の実施形態に係る処理のタイムチャート及び処理割り当ての概要を図14に示す。本実施形態では再構成デバイスの設定を変更することで複数のデータフローの処理を行う際に、各データフローの処理内容自体は決まっているが、そのデータフローの実行順序が不定で、状況や入力データなどに応じて変更する場合の処理割り当てに関する実施形態である。具体的には図14では再構成デバイスで行う処理として、タイムチャート1401で示すようにその実行順序が結果や状態などに応じて変わるなど、一定でない場合を想定している。
Next, a second embodiment of the present invention will be described. FIG. 14 shows an overview of the process time chart and process allocation according to the second embodiment. In this embodiment, when processing a plurality of data flows by changing the setting of the reconfigurable device, the processing content itself of each data flow is determined, but the execution order of the data flow is indeterminate, This is an embodiment relating to process assignment when changing according to input data or the like. Specifically, in FIG. 14, it is assumed that the processing performed by the reconfigurable device is not constant, for example, the execution order changes according to the result or state as shown in the
タイムチャート1401における期間1402ではデータフローAに関する処理が行われ、期間1404、1408ではデータフローCに関する処理が行われ、期間1406ではデータフローBに関する処理が行われる。期間1403ではデータフローAからデータフローCの設定変更が行われる。期間1405ではデータフローCからデータフローBの設定変更が行われる。期間1407ではデータフローBからデータフローCの設定変更が行われる。本実施形態では、データフローA、B、Cの実行順序が一定でないため、それぞれのデータフロー間の全ての設定変更を考慮して処理割り当てを行う必要がある。また、データフローA、B、Cは全て処理割り当て対象とする。
In the
図14の1409、1410、1411はそれぞれデータフローA、B、CにおけるPE202−1〜PE202−4の設定例を示しており、これら全てのデータフローA、B、Cの処理割り当てを一度に一括して行う。1409、1410、1411は実施形態1と同様に、図6で示した設定である。本実施形態では、データフローA、B間、B、C間、C、A間のPE202−1〜202−4でデータフロー変更に必要な設定変更数の合計数に注目する。上記合計数を評価値として算出することで再構成デバイスの再構成時の設定変更数の削減を行う。 14, 1409, 1410, and 1411 respectively show setting examples of the PEs 202-1 to PE 202-4 in the data flows A, B, and C, and all the data flows A, B, and C are assigned processing at once. And do it. Similarly to the first embodiment, 1409, 1410, and 1411 are the settings shown in FIG. In the present embodiment, attention is paid to the total number of setting changes necessary for data flow change in the PEs 202-1 to 202-4 between the data flows A and B, between B and C, and between C and A. By calculating the total number as an evaluation value, the number of setting changes at the time of reconfiguration of the reconfigurable device is reduced.
なお、データフローA、B間でのPE202−1〜202−4の設定変更はそれぞれ1412、1415、1418、1421で表している。またデータフローB、C間でのPE202−1〜202−4の設定変更はそれぞれ1413、1416、1419、1422で表している。データフローC、A間でのPE202−1〜202−4の設定変更は1414、1417、1420、1423で表している。 Note that changes in the settings of the PEs 202-1 to 202-4 between the data flows A and B are represented by 1412, 1415, 1418, and 1421, respectively. In addition, setting changes of the PEs 202-1 to 202-4 between the data flows B and C are represented by 1413, 1416, 1419, and 1422, respectively. Changes in the settings of the PEs 202-1 to 202-4 between the data flows C and A are represented by 1414, 1417, 1420, and 1423, respectively.
本実施形態と第1の実施形態との違いは、同時に複数のデータフローの処理割り当てを行う点にある。図13のステップS1301では、複数のデータフローを入力すると同時に、実行順序が任意であることを入力する。 The difference between the present embodiment and the first embodiment is that processing allocation of a plurality of data flows is performed at the same time. In step S1301 in FIG. 13, a plurality of data flows are input, and at the same time, an arbitrary execution order is input.
図13のステップS1303で行う処理割り当てでは、処理割り当て対象であるデータフロー1409、1410、1411全てに対して処理割り当てを行う。図13のステップS1306で使用する設定変更数として、第一の実施形態に対して以下の違いがある。 In the process assignment performed in step S1303 of FIG. 13, process assignment is performed for all the data flows 1409, 1410, and 1411 that are the process assignment targets. The number of setting changes used in step S1306 in FIG. 13 has the following difference from the first embodiment.
処理割り当て対象のデータフローi0における、設定値ui0,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を設定変更数に加える。上述以外で、設定値が一致していれば何も加えない。次の式のように、上述の計算を全てのプロセッシングエレメントjの全てのメモリkに関して行う。 If the set value u i0, j, k in the data flow i0 to be processed and the set value u i1, j, k at the same address in the data flow i1 to be processed do not match, α 2 is set. Add to the number of setting changes. If the set value u i1, j, k in the data flow i1 to be processed and the set value u i2, j, k at the same address in the data flow i2 to be processed do not match, β Add 2 to the number of setting changes. Furthermore, if the set value u i2, j, k in the data flow i2 to be processed and the set value u i0, j, k at the same address in the data flow i0 to be processed do not match, γ Add 2 to the number of setting changes. Other than the above, nothing is added if the set values match. The above calculation is performed for all memories k of all processing elements j as in the following equation.
ここでi0はデータフローA1409、i1はデータフローB1410、i2はデータフローC1411を示しており、上記式で示す値が少なくなるように、これらの設定値ui0,j,k、ui1,j,k、ui2,j,kを決める。またα2、β2、γ2は通常それぞれ1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。本実施形態により、全てのデータフロー間を考慮することで、処理の実行順序が不定な場合でも平均して設定変更数削減効果が得られる。
Here, i0 indicates a
次に、本発明の第3の実施形態について説明する。本実施形態に係る処理のタイムチャートおよび、処理割り当ての概要を図15に示す。本実施形態では既に複数のデータフローの実行順序およびそれぞれの処理割り当ても決まっている場合を想定している。上述の実行順序における任意のデータフローの処理間に、挿入前後の処理割り当ては変えずに、新たなデータフローに対応した処理を挿入するための処理割り当てに関する実施形態である。 Next, a third embodiment of the present invention will be described. FIG. 15 shows a time chart of processing according to the present embodiment and an outline of processing allocation. In the present embodiment, it is assumed that the execution order of a plurality of data flows and the respective process assignments are already determined. This is an embodiment relating to process assignment for inserting a process corresponding to a new data flow without changing the process assignment before and after the insertion between processes of an arbitrary data flow in the execution order described above.
図15のタイムチャート1501は再構成デバイスで行う実行順序が既に決められ、その処理割り当ても決められているタイムチャートである。タイムチャート1501ではデータフローAの処理1503後、データフローAの設定からデータフローCの設定へ変更する期間1504を経てデータフローCの処理1505を行っている。このタイムチャート1501のデータフローAとデータフローC間に新たにデータフローBを挿入したタイムチャートがタイムチャート1502である。データフローAの処理1503の後にデータフローAの設定からデータフローBの設定へ変更する期間1506を経て新たに挿入したデータフローBの処理1507が行われる。その後データフローBの設定からデータフローCの設定へ変更する期間1508を経てデータフローBの処理1505が行われる。この際データフローAとCの処理割り当ては変更せずにデータフローBの処理割り当てを決定するため、挿入する前後の既に処理割り当て済みのデータフロー間の設定変更量を考慮する。
A
図15の1509、1510、1511はそれぞれデータフローA、B、CにおけるPE202−1〜PE202−4の設定を示している。本実施形態ではデータフローAおよびCは処理割り当て済みであり、データフローBの処理割り当てを行う。1509、1510、1511は実施形態1と同様に、図6で示した設定である。本実施形態では具体的には、データフローA、Cの処理割り当ては決定済であり、データフローBの処理割り当てを行う。 15, 1509, 1510, and 1511 indicate the settings of the PEs 202-1 to 202-4 in the data flows A, B, and C, respectively. In this embodiment, data flows A and C have already been assigned processing, and data flow B is assigned processing. Similarly to the first embodiment, 1509, 1510, and 1511 are the settings shown in FIG. Specifically, in the present embodiment, the process assignment for the data flows A and C has been determined, and the process assignment for the data flow B is performed.
その際データフローAからBへ、またBからCへと、PE202−1〜202−4の設定変更に必要な設定変更数との合計数に注目している。上記合計数が実施形態1の図13の1308で示す評価値として算出することで再構成デバイスの再構成時の設定変更数の削減を行う。 At that time, attention is paid to the total number of setting changes necessary for changing the settings of the PEs 202-1 to 202-4 from data flow A to B and from B to C. The total number is calculated as the evaluation value indicated by 1308 in FIG. 13 in the first embodiment, thereby reducing the number of setting changes when reconfiguring the reconfigurable device.
なお、データフローA、B間での、PE202−1〜202−4の設定変更はそれぞれ1512、1514、1516、1518で表している。またデータフローB、C間での、PE202−1〜202−4の設定変更は、1513、1515、1517、1519で表している。本実施形態と第1の実施形態との違いは、一つのデータフローの処理割り当てに際し、他の複数の処理割り当て済みのデータフローを同時に参照する点である。 Note that the setting changes of the PEs 202-1 to 202-4 between the data flows A and B are represented by 1512, 1514, 1516, and 1518, respectively. In addition, changes in the settings of the PEs 202-1 to 202-4 between the data flows B and C are represented by 1513, 1515, 1517, and 1519. The difference between the present embodiment and the first embodiment is that, when allocating a process of one data flow, a plurality of other process-allocated data flows are referred to at the same time.
図13のステップS1303で行う処理割り当ては、処理割り当て対象であるデータフロー1510である。データフロー1509、1511は処理割り当て済みであり、処理割り当て変更は行わない。図13のステップS1306で使用する設定変更数として、第一の実施形態に対して以下の違いがある。
The process assignment performed in step S1303 of FIG. 13 is the
処理割り当て済みのデータフローi0における、設定値ui0,j,kと、処理割り当て対象のデータフローi1における、同じアドレスの設定値ui1,j,kの値が一致していなければα3を設定変更数に加える。また、処理割り当て対象のデータフローi1における、設定値ui1,j,kと、処理割り当て済みのデータフローi2における、同じアドレスの設定値ui2,j,kの値が一致していなければβ3を設定変更数に加える。上述の値が一致していれば何も加えない。上述の計算を全てのプロセッシングエレメントjの全てのメモリkに関して行う。以上で説明した設定変更数は以下の式で表すことできる。 If the setting value u i0, j, k in the data flow i0 to which processing has been assigned and the setting value u i1, j, k at the same address in the data flow i1 to be processed do not match, α 3 is set. Add to the number of setting changes. If the setting value u i1, j, k in the data flow i1 to be allocated for processing does not match the value of the setting value u i2, j, k at the same address in the data flow i2 to which processing has been allocated, β Add 3 to the number of setting changes. If the above values match, nothing is added. The above calculation is performed for all memories k of all processing elements j. The number of setting changes described above can be expressed by the following formula.
ここで、i0はデータフローA1509、i1はデータフローB1510、i2はデータフローC1511を示している。これらの設定値の内、ui0,j,k、ui2,j,kは既に処理割り当て済みで、上記式で示す値が少なくなるようにui1,j,kを決めることとなる。またα3、β3は通常それぞれ1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。新たにデータフロー挿入する場合に、挿入前後のデータフローとの設定変更数の削減に関する効果が得られる。 Here, i0 indicates data flow A1509, i1 indicates data flow B1510, and i2 indicates data flow C1511. Among these set values, u i0, j, k and u i2, j, k have already been assigned to processing, and u i1, j, k is determined so that the value shown in the above equation is reduced. Α 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. 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の実施形態について説明する。本実施形態に係る処理のタイムチャートおよび、処理割り当ての概要を図16に示す。本実施形態では、ある基準となるデータフローの処理後、その結果に応じて次に行われるデータフローが異なる場合の処理割り当てに関する実施形態である。 Next, a fourth embodiment of the present invention will be described. FIG. 16 shows a time chart of processing according to the present embodiment and an outline of processing assignment. In this embodiment, after processing a data flow as a reference, the embodiment relates to processing allocation when the data flow to be performed next differs depending on the result.
図16のタイムチャート1601は基準となるデータフローXの処理を期間1602で行った後、その結果に応じて、データフローXからデータフローAかBかCへの設定変更を期間1603で行う。設定完了後、データフローAかBかCの処理が期間1604で行われ、再度基準となるデータフローXの処理を行うため期間1605でデータフローAかBかCからデータフローXへと設定変更を行う。上記実行順序が繰り返されが、データフローAかBかCのどれが行われるかはデータフローXの結果に応じて変わる。
The
図16の1606、1607、1608、1609はそれぞれデータフローX、A、B、CにおけるPE202−1〜PE202−4の設定を示している。本実施形態では、データフローX、A、B、Cの全てのデータフローの処理割り当てを行う。1606、1607、1608、1609は実施形態1と同様に、図6で示した設定である。本実施形態では具体的には、データフローX、A、B、Cの処理割り当てを行う。 In FIG. 16, 1606, 1607, 1608, and 1609 indicate the settings of the PEs 202-1 to PE202-4 in the data flows X, A, B, and C, respectively. In the present embodiment, processing allocation of all data flows X, A, B, and C is performed. Similar to the first embodiment, 1606, 1607, 1608, and 1609 are the settings shown in FIG. In the present embodiment, specifically, processing allocation of the data flows X, A, B, and C is performed.
処理割り当てに際して、データフローX、A間、X、B間、X、C間のPE202−1〜202−4でデータフロー変更に必要な設定変更数の合計数に注目している。上記合計数が実施形態1の図13の1304で示す評価値として算出することで再構成デバイスの再構成時の設定変更数の削減を行う。なお、データフローX、A間でのPE202−1〜202−4の設定変更はそれぞれ1610、1613、1616、1619で表している。また、データフローX、B間でのPE202−1〜202−4の設定変更はそれぞれ1611、1614、1617、1620で表している。データフローX、C間でのPE202−1〜202−4の設定変更はそれぞれ1612、1615、1618、1621で表している。本実施形態と第1の実施形態との違いは、実行順序に分岐があり、分岐先と分岐元間のデータフローに対して処理割り当てを行う点にある。 At the time of process allocation, attention is paid to the total number of setting changes necessary for data flow changes in the PEs 202-1 to 202-4 between the data flows X and A, between X and B, and between X and C. The total number is calculated as an evaluation value indicated by 1304 in FIG. 13 in the first embodiment, thereby reducing the number of setting changes when reconfiguring the reconfigurable device. Note that the setting changes of the PEs 202-1 to 202-4 between the data flows X and A are represented by 1610, 1613, 1616, and 1619, respectively. In addition, changes in the settings of the PEs 202-1 to 202-4 between the data flows X and B are represented by 1611, 1614, 1617, and 1620, respectively. Changes in the settings of the PEs 202-1 to 202-4 between the data flows X and C are represented by 1612, 1615, 1618, and 1621, respectively. The difference between this embodiment and the first embodiment is that there is a branch in the execution order, and processing is assigned to the data flow between the branch destination and the branch source.
図13のステップS1301では、複数のデータフローを入力すると同時に、部分的に任意の実行順序を入力する。図13のステップS1303で行う処理割り当ては、処理割り当て対象であるデータフロー1606、1607、1608、1609全てに対して処理割り当てを行う。本実施形態では全てのデータフローを処理割り当て対象として扱う例を示しているが、それに限ったものではない。本実施形態はデータフローの実行順序に注目したものであり、少なくとも一つのデータフローが、既に処理割り当て済みの場合には、それ以外のデータフローの処理割り当てを行うこととなる。 In step S1301 of FIG. 13, a plurality of data flows are input, and an arbitrary execution order is partially input. The process assignment performed in step S1303 in FIG. 13 assigns the process to all the data flows 1606, 1607, 1608, and 1609 that are the process assignment targets. In the present embodiment, an example is shown in which all data flows are handled as processing allocation targets, but the present invention is not limited to this. In this embodiment, attention is paid to the execution order of data flows. When at least one data flow has already been assigned processing, processing assignment for other data flows is performed.
図13のステップS1306で使用する設定変更数として、第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を設定変更数に加える。上述以外で、設定値が一致している場合は何も加えない。上述の計算を全てのプロセッシングエレメントjの全てのメモリkに関して行う。 The number of setting changes used in step S1306 in FIG. 13 has the following difference from the first embodiment. If the set value u i0, j, k in the data flow i0 to be processed and the set value u i1, j, k at the same address in the data flow i1 to be processed do not match, α 4 is set. Add to the number of setting changes. If the set value u i0, j, k in the data flow i0 to be processed and the set value u i2, j, k at the same address in the data flow i2 to be processed do not match, β Add 4 to the number of setting changes. Further, if the set value u i0, j, k in the data flow i0 to be processed and the set value u i3, j, k at the same address in the data flow i3 to be processed do not match, γ Add 4 to the number of setting changes. Other than the above, nothing is added when the set values match. The above calculation is performed for all memories k of all processing elements j.
ここでi0はデータフローX1606、i1はデータフローA1607、i2はデータフローB1608、i3はデータフローA1609、を示している。上記式で示す値が少なくなるようにui0,j,k、ui1,j,k、ui2,j,k、ui3,j,kを決める。またα4、β4、γ4は通常それぞれ1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。 Here, i0 indicates data flow X1606, i1 indicates data flow A1607, i2 indicates dataflow B1608, and i3 indicates dataflow A1609. U i0, j, k , u i1, j, k , u i2, j, k , u i3, j, k are determined so that the value shown in the above equation is reduced. Α 4 , β 4 , and γ 4 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.
本実施形態により、複数のデータフローを順々に行う上で、その実行順序に分岐がある場合でも、分岐元となるデータフローと分岐先となる複数の他のデータフローを考慮することで、設定変更数削減効果が得られる。 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.
上述した実施形態では、ユースケース別に各々の経路設定方法について述べたが、本発明はこれらの方法の組み合わせでも良い。また、再構成デバイスの構成要素としてプロセッシングエレメントを説明したが、これに限るものではなく、LUTや、それとの組み合わせでも良い。また、設定は、実施形態で示した設定に限るものではなく、LUTベースの再構成デバイスで使用される設定でも良い。また、実施形態では入力するデータフロー全てに対して処理割り当て対象としたが、処理割り当て範囲を指定することで、データフローの一部のみに対して処理割り当てを行っても良い。また、実施形態ではプロセッシングエレメント数はデータフロー間で同じとしているが、処理を割り当てるプロセッシングエレメント数が異なっても良い。 In the above-described embodiment, each route setting method has been 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 allocation target is set for all the input data flows. However, the processing allocation may be performed for only a part of the data flow by specifying the processing allocation range. In the embodiment, the number of processing elements is the same between data flows, but the number of processing elements to which processing is assigned may be different.
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(または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 process assignment method for assigning a process to each component with respect to a reconfigurable device composed of a plurality of components,
A data flow input step for entering at least two different data flows and the execution order of the data flows;
A constraint step for inputting constraints of the component;
And a process allocation determining step of determining a process allocation so that the number of setting changes necessary for reconfiguration of the component elements based on the constraints and execution order of the component elements is reduced.
少なくとも二つの異なるデータフローとデータフローの実行順序を入力するデータフロー入力手段と、
前記構成要素の制約を入力する制約手段と、
前記構成要素の制約と実行順序とに基づく前記構成要素の再構成に必要な設定変更数が少なくなるように処理割り当てを決定する処理割り当て決定手段とを有することを特徴とする再構成デバイス。 A reconfiguration device that assigns processing to each component for a reconfiguration device composed of a plurality of components,
Data flow input means for inputting at least two different data flows and the execution order of the data flows;
Constraint means for inputting the constraint of the component;
A reconfiguration device, comprising: process allocation determination means for determining a process allocation so that the number of setting changes required for reconfiguration of the component based on the constraint of the component and the execution order is reduced.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012003497A JP5832311B2 (en) | 2011-02-08 | 2012-01-11 | Reconfiguration device, process allocation 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 |
---|---|---|---|
JP2011025284 | 2011-02-08 | ||
JP2011025284 | 2011-02-08 | ||
JP2012003497A JP5832311B2 (en) | 2011-02-08 | 2012-01-11 | Reconfiguration device, process allocation method, and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012181824A JP2012181824A (en) | 2012-09-20 |
JP5832311B2 true JP5832311B2 (en) | 2015-12-16 |
Family
ID=47012937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012003497A Active JP5832311B2 (en) | 2011-02-08 | 2012-01-11 | Reconfiguration device, process allocation method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5832311B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5798378B2 (en) * | 2011-05-30 | 2015-10-21 | キヤノン株式会社 | Apparatus, processing method, and program |
JP6141073B2 (en) * | 2013-04-02 | 2017-06-07 | キヤノン株式会社 | Information processing apparatus and information processing apparatus control method |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW446780B (en) * | 1999-10-07 | 2001-07-21 | Mitsubishi Electric Corp | Full-rotary crocheting device |
JP2006065786A (en) * | 2004-08-30 | 2006-03-09 | Sanyo Electric Co Ltd | Processing apparatus |
JP2007207136A (en) * | 2006-02-06 | 2007-08-16 | Nec Corp | Data processor, data processing method, and data processing program |
-
2012
- 2012-01-11 JP JP2012003497A patent/JP5832311B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2012181824A (en) | 2012-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5798378B2 (en) | Apparatus, processing method, and program | |
JP6669961B2 (en) | Processor, control method of reconfigurable circuit, and program | |
US20190057060A1 (en) | Reconfigurable fabric data routing | |
US10615800B1 (en) | Method and apparatus for implementing configurable streaming networks | |
TWI827792B (en) | Multipath neural network, method to allocate resources and multipath neural network analyzer | |
JP2008537268A (en) | An array of data processing elements with variable precision interconnection | |
CN106095563B (en) | Flexible physical function and virtual function mapping | |
JP3722351B2 (en) | High level synthesis method and recording medium used for the implementation | |
US9116751B2 (en) | Reconfigurable device, processing assignment method, processing arrangement method, information processing apparatus, and control method therefor | |
US10255399B2 (en) | Method, apparatus and system for automatically performing end-to-end channel mapping for an interconnect | |
WO2023022851A1 (en) | Data storage during loop execution in a reconfigurable compute fabric | |
JP5832311B2 (en) | Reconfiguration device, process allocation method, and program | |
JP5907607B2 (en) | Processing arrangement method and program | |
US20220229880A1 (en) | Compute time point processor array for solving partial differential equations | |
JP4664724B2 (en) | Semiconductor integrated circuit device and semiconductor integrated circuit device design apparatus | |
US10235486B2 (en) | Method, apparatus and system for automatically deriving parameters for an interconnect | |
JP6485335B2 (en) | Arithmetic processing device and control method of arithmetic processing device | |
JP6752393B1 (en) | Design support system and design support program | |
JP4158458B2 (en) | Information processing apparatus and information processing method | |
US8056030B2 (en) | Behavioral synthesis system, behavioral synthesis method, and behavioral synthesis program | |
JP2017168957A (en) | Information processing device, information processing system, information processing program and information processing method | |
US8539415B2 (en) | Reconfigurable circuit, its design method, and design apparatus | |
CN116348883A (en) | Neural network generation device, neural network control method, and software generation program | |
JP2021150683A (en) | Semiconductor device, circuit arrangement method, circuit arrangement program and recording medium | |
JP6266183B2 (en) | Circuit design support device and circuit design support program |
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: 20150827 |
|
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: 20150929 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151027 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5832311 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |