JP5798378B2 - 装置、処理方法、およびプログラム - Google Patents

装置、処理方法、およびプログラム Download PDF

Info

Publication number
JP5798378B2
JP5798378B2 JP2011120990A JP2011120990A JP5798378B2 JP 5798378 B2 JP5798378 B2 JP 5798378B2 JP 2011120990 A JP2011120990 A JP 2011120990A JP 2011120990 A JP2011120990 A JP 2011120990A JP 5798378 B2 JP5798378 B2 JP 5798378B2
Authority
JP
Japan
Prior art keywords
data flow
setting
processing
configuration
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011120990A
Other languages
English (en)
Other versions
JP2012248114A (ja
Inventor
悠介 谷内出
悠介 谷内出
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2011120990A priority Critical patent/JP5798378B2/ja
Priority to US13/354,735 priority patent/US9116751B2/en
Priority to CN201210027897.8A priority patent/CN102693207B/zh
Publication of JP2012248114A publication Critical patent/JP2012248114A/ja
Application granted granted Critical
Publication of JP5798378B2 publication Critical patent/JP5798378B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Logic Circuits (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置、情報処理装置制御方法、およびプログラムに関し、特に回路構成を変更することができる情報処理装置、情報処理装置の制御方法、およびプログラムに関する。
従来から製造後のLSI回路装置であっても内部の回路構成を変更することにより、回路が行う処理内容を変更することが可能な再構成デバイスが提案されている。製造後のLSI回路装置であっても処理を変更することが可能であるため、仕様変更などに伴うLSIの作り直しを行わなくて済む。製造コストを抑えることが可能な点や開発期間が短縮可能な点で、現在様々な分野において再構成デバイスが使用されている。
再構成デバイスの構成として、多数のLUT(Look−Up−Table)を搭載したタイプや多数のプロセッシングエレメント(PE)を搭載したタイプが代表的である。また各々のエレメントにはマルチプレクサなどのスイッチングエレメントが接続されている。ここではLUTやプロセッシングエレメント、スイッチングエレメントなどの各構成要素を動作させるための設定情報を総称して「回路構成情報」と称する。回路構成情報の生成方法としては様々な方法があるが、一般に(1)テクノロジーマッピングと呼ばれる論理的な処理の割り当て工程、(2)各構成要素への物理的な配置工程、(3)各構成要素の経路決定工程、に分けられ、各工程が順番に行われることが多い。上記三つの工程を経て最終的に回路構成情報が生成される。
(1)論理的な処理の割り当て工程では、処理を構成要素に割り当てることを行う。具体的には、各処理を物理的な構成要素を特定せずに論理的な構成要素に割り当てる。順序変更の指標としては、回路面積、動作速度、消費電力を用いることが一般的である。(2)配置工程では、再構成デバイス内のどの構成要素でどの処理を行うかの物理的な割り当てを決定する。データの入出力関係にある処理が配置されているプロセッシングエレメント間の距離によって、データ通信に係るスイッチングエレメント数が異なるため、遅延時間(最大動作周波数)が大きく変化する。そのため、通常は入出力関係のある処理はできる限り近い距離のプロセッシングエレメントに配置させることが遅延時間を短縮する上で重要となる。(3)経路決定工程では、データ通信の入出力関係にあるプロセッシングエレメント間のデータ通信のため、スイッチングエレメントによる経路を決定する。配置工程と比べ具体的な経路を決定するため、プロセッシングエレメント間の遅延時間を短縮した経路を決定することが重要となってくる。
近年、集積度の向上に伴い、再構成デバイスにおいて実行可能な処理の規模は増えている。しかし、最近ではそれにも増して、処理自体への要求が複雑化・高度化しており、一つの再構成デバイスで全ての処理を一度に行うことは難しい場合がある。これに対して、一つの再構成デバイスにおいて時分割で処理を順々に行う方法がある。より具体的にはまず所望の処理を分割し、分割した処理に対応した回路構成情報を生成する。その後、回路構成情報に基づいた再構成デバイスの回路構成の変更、処理を順々に行っていく。これにより、一つの再構成デバイスで大きな規模の処理を行うことが可能となる。しかしながら、毎回全ての回路構成を変更させていては全体の処理時間が長くなってしまい、速度性能が低下してしまう。また処理分割数が多い場合も同様に、処理速度の低下を生じさせてしまう。
この問題を解決するための方法として、マルチコンテキスト型の再構成デバイスがある。コンテキストとは、回路構成情報のことであり、マルチコンテキスト型の再構成デバイスとは、複数の回路構成情報を格納するメモリを再構成デバイス内に搭載したものである。回路構成を変更する場合には、そのメモリを切り替えてデバイスを再構成することが可能であり、高速に切り換え可能であるため、回路の再構成時間を大幅に短縮することが可能である。しかし、追加で回路構成情報用のメモリを搭載する必要があるため、回路規模が増大するという問題がある。
これに対し特許文献1では、再構成時間を短縮する方法としてスケルトン回路技術に基づいた手法が提案されている。この手法では、先行ベース回路と呼ばれる回路構成情報を、予め再構成デバイスに構成しておく。ここで先行ベース回路とは複数の回路構成情報において全てに共通する共通回路部分と、複数個の回路で互いに共通せず、かつ、再構成デバイス上で回路構成情報を共有しない非排他的独立回路部分と、からなる回路構成情報のことである。再構成デバイス上において回路の差分のみを部分的に再構成することにより、処理に必要な回路を構成するようにする。この方法によれば、マルチコンテキスト型に比べ、追加で構成用のメモリを必要としないため回路規模が増大はしない。
特許03558119号公報
しかしながら、一般に再構成デバイスでは様々なアプリケーションを実行する可能性があり、アプリケーションによっては共通部分が少なくなる。また、再構成すべき回路構成情報の数もアプリケーションによって異なる。特許文献1で述べられている先行ベース回路において、共通部分が少ないもしくは、回路構成情報の数が多く再構成デバイスの回路規模を大幅に超えてしまう場合には回路構成を変更するための期間を効率的に削減することが難しいという課題がある。
上記の課題に鑑み、本発明は、回路構成変更の順序を考慮することで、回路規模を増やすことなく回路変更に要する時間を効率的に短縮することを目的とする。
上記の目的を達成する本発明に係る装置は、
データフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素へ処理を割り当てるための設定情報を定める装置であって、
複数のデータフローのそれぞれを前記複数の構成要素によって実現するための設定値を含む設定情報と、前記複数の構成要素の構成情報とを入力する入力手段と、
前記設定情報と前記構成情報とに基づいて、処理を割り当て済みである第1および第2のデータフローの間に処理を割り当て済みではない第3のデータフローを挿入する場合に、前記第1のデータフローから前記第3のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数と、前記第3のデータフローから前記第2のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数との合計数を取得する取得手段と、
前記合計数が小さくなるように、前記第3のデータフローについて前記複数の構成要素へ処理を割り当てる制御手段と、
を備え、
前記設定変更数は、各構成要素内のコンフィギュレーションメモリの各アドレスに対する前記設定値の変更の有無に基づく値であることを特徴とする。

本発明によれば、再構成に必要な設定数を減らすように回路構成情報を作成することにより、回路規模を増やすことなく再構成デバイスの再構成に要する時間を短縮することが可能となる。
再構成デバイスを含む処理装置の構成例を示す図。 再構成デバイスの構成例を示す図。 再構成デバイスのエレメント間のデータ通信の手順例を示す図。 プロセッシングエレメントの構成例を示す図。 コンフィギュレーションコマンドのフォーマット例を示す図。 プロセッシングエレメントのコンフィギュレーションメモリに格納される設定の概要例を示す図。 設定を読み書きする処理の手順を示すフローチャート。 スイッチングエレメントの構成例を示す図。 スイッチングエレメントのコンフィギュレーションメモリに格納される設定の概要例を示す図。 複数のデータフローを順次実行するタイムチャート。 処理割り当ての概要例を示す図。 第1実施形態に係るデータフローの処理割り当てを行うための概要例の図。 第1実施形態に係る処理割り当てを行うための処理の手順を示すフローチャート。 第2実施形態に係るデータフローの処理割り当てを行うための概要例を示す図。 第3実施形態に係るデータフローの処理割り当てを行うための概要例を示す図。 第4実施形態に係るデータフローの処理割り当てを行うための概要例を示す図。
(第1実施形態)
図1を参照して、データフローを実現するための部分処理をそれぞれ割当可能な複数の構成要素を備える情報処理装置として機能する、再構成デバイスを有するシステムの全体構成の一例を示す。ここで、データフローとは、1つ以上の処理を有する一連の処理を示すものとし、パイプライン処理もその1つである。外部メモリ101は、内部に回路構成情報106を保持している。回路構成情報106は再構成デバイス105を構成する要素を制御して動作させる設定情報である。コンフィギュレーションコントローラ102は、上記外部メモリ101から結線104を通じ回路構成情報106を取得する。取得した回路構成情報106は結線103を通じて再構成デバイス105へ送られる。ここで再構成デバイス105の例としてプロセッシングエレメントアレイとしている。
また以下では具体的にプロセッシングエレメントアレイ内の説明をするが、本発明は下記の各プロセッシングエレメントの構成や経路構成に限定されるものではない。
図2は、本実施形態における再構成デバイス105であるプロセッシングエレメントアレイの概要を示す。
再構成デバイス105には、8入力8出力の入出力処理部であるスイッチングエレメント201が二次元格子状に配置され、演算処理部である4入力4出力のプロセッシングエレメント202が、スイッチングエレメント201により形成される格子内に配置されている。スイッチングエレメント201a〜スイッチングエレメント201iの8入力8出力は、1入力1出力を一組としてそれぞれ図面上部を北方向として東西南北(右左下上)方向の、他の4つのスイッチングエレメント201と、結線203aおよび結線203bを介して夫々接続されている。さらに、北東、南東、南西、北西方向の、それぞれ別の4つのプロセッシングエレメント202と結線204aおよび結線204bを介して双方向に接続されている。またスイッチングエレメント201a〜スイッチングエレメント201iおよびプロセッシングエレメント202a〜プロセッシングエレメント202dは結線205により一方向に数珠繋ぎに接続されている。
結線203a、結線203bおよび結線204a、結線204bはスイッチングエレメント201やプロセッシングエレメント202の間で処理対象データを通信するための結線である。結線205は、スイッチングエレメント201やプロセッシングエレメント202に設定を供給するための結線である。上述の設定によって、スイッチングエレメント201においては処理対象データの入出力先が決定され、プロセッシングエレメント202においては処理対象データの入出力先や処理内容が決定される。なお、図2の各結線203a、結線203b、結線204a、結線204b、結線205の矢印の方向はデータの流れる方向を示している。またスイッチングエレメント201a〜スイッチングエレメント201iはそれぞれ同じ構成を有し、プロセッシングエレメント202a〜プロセッシングエレメント202dはそれぞれ同じ構成を有する。
ここで、図3を参照して、各結線203a、結線203b、結線204a、結線204b、結線205の通信プロトコルの一例として、Valid信号とReady信号による2線ハンドシェークを説明する。図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へと転送されている。
次に、図4を参照して、プロセッシングエレメント202の構成を説明する。プロセッシングエレメント202は、コンフィギュレーションユニット401と、インプットユニット402と、コンピュテーショナルユニット403と、アウトプットユニット404と、テンポラリーバッファ405とを備える。コンフィギュレーションユニット401は、プロセッシングエレメント202の動作内容を決定するための設定の管理を行う。インプットユニット402は、コンフィギュレーションユニット401の設定に基づき、入力処理を行う。コンピュテーショナルユニット403は、コンフィギュレーションユニット401の設定に基づき、演算処理を行う。また、コンピュテーショナルユニット403は、再度コンピュテーショナルユニット403に入力するためテンポラリーバッファ405に処理された結果を保持することが可能である。アウトプットユニット404は、コンフィギュレーションユニット401の設定に基づき、出力処理を行う。
プロセッシングエレメント202の動作をより具体的に説明する。インプットユニット402は、コンフィギュレーションユニット401から、入力先を決定するための設定情報を、結線406を通じて取得する。取得した設定情報にはどの入力ポートを介して外部接続されているモジュールと通信を行うかが指定されている。その設定情報に基づいて、結線204a−ne、結線204a−se、結線204a−sw、結線204a−nw、を通じて処理対象であるデータを取得する。ここで結線204a−neは北東に配置されたスイッチングエレメントと接続されている。また、結線204a−seは南東に配置されたスイッチングエレメントと接続されている。結線204a−swは南西に配置されたスイッチングエレメントと接続されている。結線204a−nwは北西に配置されたスイッチングエレメントと接続されている。各結線を通じて取得したデータは、結線409を通してコンピュテーショナルユニット403に送られる。
コンピュテーショナルユニット403は、コンフィギュレーションユニット401から、処理内容を決定するための設定情報を、結線407を通じて取得する。取得した設定情報に基づいてインプットユニット402から送られてくるデータを取得し、処理を行う。処理したデータは結線410を通じてアウトプットユニット404に送られる。コンピュテーショナルユニット403は、少なくとも一つの演算器を保持している。演算器は例えば、加減算器、比較器、乗算器、除算器、論理演算器、などの演算器、または、これらの組合せからなる演算器、さらにはこれらと他の演算器の組合せからなる演算器などである。以下では具体的な例として、コンピュテーショナルユニット403では、積和演算処理または比較演算処理を行うことが可能であり、一度の演算でどちらか一方を選択的に行うことができるものとして説明する。積和演算では、a・b+c・dといった処理を行い、比較演算では、もしa>bならばcを出力、そうでなければdを出力するといった処理を行う。また、コンピュテーショナルユニット403は、一度の入力に対して、演算器を繰り返し使用することが可能な構成となっている。繰り返して使用する場合は一旦演算器で使用された処理結果を、結線412を通して、テンポラリーバッファ405に保存し、その後、結線411を通して、再度コンピュテーショナルユニット403に入力する。再度入力されたデータに対して、新たに演算器にて処理を行う。後で詳細を述べるが、設定情報には、演算の種類や繰り返し処理、またそれぞれの処理で必要な変数a、b、c、dはどの値を参照するか、また固定値ならばその値を指定することなどの情報が含まれる。
アウトプットユニット404は、処理したデータの出力先を示す設定情報を、結線408を通じて取得する。取得した設定情報には、どの出力ポートを介してスイッチングエレメントと通信を行うかが指定されており、その設定情報に基づいて、結線204b−ne、結線204b−se、結線204b−sw、結線204b−nw、を通じてスイッチングエレメントへ出力する。ここで結線204b−neは北東に配置されたスイッチングエレメントと接続されている。また、結線204b−seは南東に配置されたスイッチングエレメントと接続されている。結線204b−swは南西に配置されたスイッチングエレメントと接続されている。結線204b−nwは北西に配置されたスイッチングエレメントと接続されている。
次にコンフィギュレーションユニット401の動作について説明する。コンフィギュレーションユニット401は、プロセッシングエレメント202毎にユニークなIDを保持している。コンフィギュレーションユニットは、入力側の結線205より送られてくる設定情報を取得し、コンフィギュレーションユニット内で処理し、出力側の結線205を通して設定情報を出力する。コンフィギュレーションユニット401は、自らのIDに対応する設定情報を格納するためのコンフィギュレーションメモリ413を有している。
図5を参照して、コンフィギュレーションユニット401に対して送受信される、設定のためのコンフィギュレーションコマンド501を説明する。コンフィギュレーションコマンド501は、リード/ライトモード502、ID503、コンフィギュレーションアドレス504、設定値505を備える。リード/ライトモード502は、コンフィギュレーションコマンド501の読み書きの処理を決定する信号である。ID503は、処理対象のプロセッシングエレメント202を決める信号である。コンフィギュレーションアドレス504は、コンフィギュレーションユニット401中の設定が保持されているメモリ内の番地を指定する信号である。設定値505は、実際の設定値を表す信号である。図5においてビット幅を示すM、N、O、Pは実際に構成するアーキテクチャによって決められる値である。
以下では上述した構成に基づく設定に関して、図6を参照してより具体的に説明する。図6において、アドレス601は、コンフィギュレーションメモリ413のアドレスを示しており、図5のコンフィギュレーションアドレス504により指定されるアドレスに相当する。設定値602は、実際の設定値を示しており、図5の設定値505に相当する。本実施形態ではこれら一つ一つを設定情報と読んでいるが、本発明は上述の単位に限るものではない。図6はインプットユニット402、コンピュテーショナルユニット403、アウトプットユニット404に関する設定情報がコンフィギュレーションメモリ413に保持されている例を示している。
アドレス0x0000_0000で示した入力選択値は、インプットユニット402における入力先を決定するための設定値であり、当該値に応じて所定の入力先が決まる。アドレス0x0000_0004で示した繰り返し数は、コンピュテーショナルユニット403における演算の繰り返し回数を決定するための設定値であり、当該値に応じて演算の繰り返し回数が決まる。本実施形態では4回までの演算を想定している。アドレス0x0000_0008で示した動作設定は、1度目の演算で行う、演算の種類を決定するための設定値であり、当該値に応じて積和演算か比較演算かが決まる。アドレス0x0000_000cで示した可変設定は、1度目の演算で、変数aの値の参照先を決めるための設定値である。参照先としては、入力ポートからの入力値、コンフィギュレーションメモリ413に保持されている固定値、以前の計算結果が保持されているテンポラリーバッファ405の値がある。この値に応じて、上記いずれかの値がこの変数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で使用される場合の値である。
続くアドレス0x0000_002c(不図示)からアドレス0x0000_0094までは、上記アドレス0x0000_0008〜アドレス0x0000_0028で示した1度目の演算に係る設定と同様にそれぞれ、2度目、3度目、4度目の設定値を示している。最後にアドレス0x0000_0098で示した出力選択値は、アウトプットユニット404における出力先を決定するための設定値であり、当該値に応じて所定の出力先が決まる。
次に図7のフローチャートを参照して、コンフィギュレーションユニット401で行われる処理の手順を説明する。
S701において、コンフィギュレーションユニット401は、コンフィギュレーションコマンド501を取得する。すなわち、コンフィギュレーションユニット401へコンフィギュレーションコマンド501が入力される。
S702において、取得されたコンフィギュレーションコマンド501により指定されたID503が、コンフィギュレーションユニット401の持つ自身のIDと一致するかどうかを判定する。ID503が自身のIDと一致すると判定された場合(S702;YES)、ステップS703へ進む。一方、ID503が自身のIDと一致しないと判定された場合(S702;NO)、ステップS711へ進む。
S703において、コンフィギュレーションユニット401は、リード/ライトモード502の値がリードモードを示すかどうかを判定する。リード/ライトモード502の値がリードモードを示すと判定された場合(S703;YES)、S704へ進む。一方、リード/ライトモード502の値がリードモードを示さないと判定された場合(S703;NO)、S707へ進む。
S704において、コンフィギュレーションユニット401は、コンフィギュレーションメモリ413からコンフィギュレーションアドレス504により指定されたデータを読み出す。
S705において、コンフィギュレーションユニット401は、S701で取得されたコンフィギュレーションコマンド501の設定値505へ、S704で読み出されたデータを書き込む。
S706において、コンフィギュレーションユニット401は、そのコンフィギュレーションコマンド501を出力する。その後、処理を終了する。
S707において、コンフィギュレーションユニット401は、リード/ライトモード502の値がライトモードを示すかどうかを判定する。リード/ライトモード502の値がライトモードを示すと判定された場合(S707;YES)、S708へ進む。一方、リード/ライトモード502の値がライトモードを示さないと判定された場合(S707;NO)、S711へ進む。
S708において、コンフィギュレーションユニット401は、S701で取得されたコンフィギュレーションコマンド501の設定値505を、コンフィギュレーションアドレス504で指定されたコンフィギュレーションメモリ413に書き込む。
S709において、コンフィギュレーションユニット401は、S701で取得されたコンフィギュレーションコマンド501の値を変更せずにそのまま保持する。
S710において、コンフィギュレーションユニット401は、コンフィギュレーションコマンド501の値を変更せずにそのまま出力する。その後、処理を終了する。
S711において、コンフィギュレーションユニット401は、S701で取得されたコンフィギュレーションコマンド501の値を変更せずにそのまま保持する。
S712において、コンフィギュレーションユニット401は、コンフィギュレーションコマンド501の値を変更せずにそのまま出力する。その後、処理を終了する。
図7のフローにおいては、一度のコンフィギュレーションコマンド501で一つの設定値505を変更するため、順次コンフィギュレーションコマンド501を送信し、必要な設定値を全て変更することにより所望の処理を実現する。つまり、この設定数が処理内容の切り替え時間を決めていることとなる。
次に図8を参照して、スイッチングエレメント201の構成を説明する。スイッチングエレメント201は、コンフィギュレーションユニット801と、クロスバースイッチ802とを備える。コンフィギュレーションユニット801は、データを転送する接続先を決定するための設定値を管理する。クロスバースイッチ802は、コンフィギュレーションユニット801の設定に基づき一対一に入出力を接続する。プロセッシングエレメント202のコンフィギュレーションユニット401と同様に、コンフィギュレーションユニット801は、スイッチングエレメント201毎にユニークなIDを保持している。コンフィギュレーションユニットは入力側の結線205より送られてくる設定値を取得し、コンフィギュレーションユニット内で処理を行い、出力側の結線205を通して設定値を出力する。コンフィギュレーションユニット801は、取得された設定情報をコンフィギュレーションメモリ804に保持している。コンフィギュレーションユニット801のコンフィギュレーションコマンドおよびその処理フローは、図5に示したフォーマット、および図7に示した処理フローと同様である。クロスバースイッチ802は、コンフィギュレーションユニット801から、データの入出力先を決定する設定情報を、結線803を通じて取得する。スイッチングエレメント201は、取得された設定値に基づき結線203a−w、結線203a−s、結線203b−e、結線203b−n、結線204b−ne、結線204b−se、結線204b−sw、結線204b−nwの少なくとも何れかを通じてデータを取得する。取得されたデータは、接続されている結線203a−e、結線203a−n、結線203b−w、結線203b−s、結線204a−ne、結線204a−se、結線204a−sw、結線204a−nwの少なくとも何れかを通じて渡す。
ここで結線203a−w、結線203a−sはそれぞれ西、南に配置されたスイッチングエレメントと接続されていることを意味する。結線203b−e、結線203b−nはそれぞれ東、北に配置されたスイッチングエレメントと接続されていることを意味している。
また、結線203a−e、結線203a−nはそれぞれ東、北に配置されたスイッチングエレメントと接続されていることを意味する。結線203b−w、結線203b−sはそれぞれ西、南に配置されたスイッチングエレメントと接続されていることを意味している。結線204a−ne、結線204a−se、結線204a−sw、結線204a−nwはそれぞれ北東、南東、南西、北西に配置されたスイッチングエレメントと接続されていることを意味している。結線204b−ne、結線204b−se、結線204b−sw、結線204b−nwはそれぞれ北東、南東、南西、北西に配置されたスイッチングエレメントと接続されていることを意味している。
図9を参照して、コンフィギュレーションメモリ804に保持されている、スイッチングエレメント201におけるクロスバースイッチ802の入出力の接続に関する設定例を説明する。アドレス901はメモリのアドレスを示しており、図5のコンフィギュレーションアドレス504で指定されるアドレスに相当する。コネクション設定902は、図5の設定値505を示している。アドレス0x0000_0000で示したコネクション設定902は、結線203a−wからの入力を、結線203a−e、結線203a−n、結線203b−w、結線203b−s、結線204a−ne、結線204a−se、結線204a−sw、結線204a−nwのいずれに出力するかを決定するための設定値である。
続く、アドレス0x0000_0004で示したコネクション設定902は、結線203a−sからの入力を、アドレス0x0000_0000で示したコネクション設定902と同様にどの結線に出力するかを決定する設定値である。アドレス0x0000_0008で示したコネクション設定902は、結線203b−eからの入力をアドレス0x0000_0000で示したコネクション設定902と同様にどの結線に出力するかを決定する設定値である。アドレス0x0000_000cで示したコネクション設定902は、結線203b−nからの入力を、アドレス0x0000_0000で示したコネクション設定902と同様にどの結線に出力するかを決定する設定値である。アドレス0x0000_0010で示したコネクション設定902は、結線204b−neからの入力を、アドレス0x0000_0000で示したコネクション設定902と同様にどの結線に出力するかを決定する設定値である。アドレス0x0000_0014で示したコネクション設定は、結線204b−seからの入力を、アドレス0x0000_0000で示したコネクション設定902と同様にどの結線に出力するかを決定する設定値である。アドレス0x0000_0018で示したコネクション設定902は、結線204b−swからの入力を、アドレス0x0000_0000で示したコネクション設定902と同様にどの結線に出力するかを決定する設定値である。アドレス0x0000_001cで示したコネクション設定902は、結線204b−nwからの入力を、アドレス0x0000_0000で示したコネクション設定902と同様にどの結線に出力するかを決定する設定値である。
図10を参照して、上述した再構成デバイスの構成を複数種類変更して所望の処理を実現するためのタイムチャートの一例を説明する。図10は、同一の再構成デバイスにおいて複数の異なるデータフローA〜Zを順に実行しているタイムチャートを示している。本実施形態で扱うデータフローとは、再構成デバイスへ一度に処理を割り当て可能な単位で構成されたデータフローのことである。各データフローを処理するための設定は予め生成しておく。再構成デバイスに対して予め生成された設定に基づき再構成デバイスを再構成し、その構成のもとで処理をするという一連の処理が、所望の実行順序で順々に行われる。
以下ではデータフローA(第2のデータフロー)を処理割り当て済みとし、データフローB(第1のデータフロー)を処理割り当て対象として説明する。具体的には、処理割り当て済みのデータフローAを実行するための設定値を参照し、データフローBの処理割り当てを決定する。データフローAの処理割り当てを参照しデータフローBの処理割り当てを決定した後、次はデータフローBを処理割り当て済みとし、データフローCを処理割り当て対象とする。具体的にはデータフローBの処理割り当てを決定した時と同様に、処理割り当て済みのデータフローBを実行するための設定値を参照し、データフローCの処理割り当てを決定する。上記の手順を順々に繰り返すことでAからZまでのデータフローの処理割り当てを行うことが可能となる。なお、第1のデータフローと第2のデータフローとの両方が処理割り当て対象であってもよい。その場合は、一括して割当を行うことになるが、そのような場合については第2実施形態で後述する。
次に、再構成デバイスのプロセッシングエレメントへのデータフローの処理割り当てについて説明する。ここで、データフローのプロセッシングエレメントへの処理割り当てとは、データフローの各処理をプロセッシングエレメントに論理的に割り当てる方法である。より具体的には、図11に示すように、データフローの各ノードに対応する処理内容をどのプロセッシングエレメントにおいて、どの順序で行うかを決めることである。図11(a)はあるデータフローAを表し、図11(b)は処理割り当て例を表し、図11(c)は処理割り当てに基づく、図6で示した設定を表す。前述の通り、本実施形態で示すプロセッシングエレメントが有する機能としては、繰り返し処理数や、各処理回数目での処理内容やその際に必要となる固定値を想定しており、実際にはこの設定を決めることになる。なお、本実施形態では最大の繰り返し処理回数は4回という想定である。
データフローAの処理は、A0、A1、…A13までの各処理が図11(a)に示すような流れで行われる。このデータフローAに対して、図11(b)で表すように、グループ1101a〜グループ1104aでくくったグループごとに、異なるプロセッシングエレメント202−1〜プロセッシングエレメント202−4に対して処理を順序付けて割り当てる。グループ1101a〜グループ1104aに基づき、それぞれプロセッシングエレメント202−1〜プロセッシングエレメント202−4に対する設定1101b〜設定1104bを決定する(図11(c))。本発明は、図10で示したように同一の再構成デバイスにおいて処理内容(データフロー)が切り替わる際に必要となる、図11で示したような設定数の削減を目的とした処理割り当て方法を提供する。ここで図12を参照して、再構成デバイスにおける処理がデータフローAからデータフローBへ変更される際に各プロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更について説明する。
データフローAの設定1204の処理は、タイムチャートの処理A1201に相当し、既に処理割り当て済みであるものとする。データフローBの設定1205の処理は、タイムチャートの処理B1203に相当し、処理割り当て対象のデータフローとする。データフローAの設定1204とデータフローBの設定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の処理割り当てを行う。
以下、図13のフローチャートを参照して、本発明を実施する処理の手順を説明する。本実施形態では、シミュレーテッドアニーリングに基づく処理割り当て方法の例を示すが、本発明は上記手法のみに限定されるものではなく、遺伝的アルゴリズムなどのさまざまな近似解法や数値最適化法に基づいてもよい。
まず、図12において、図13のフローチャートの説明に必要な要素について言及する。各データフローを示すインデックスをi、プロセッシングエレメントのインデックスをj、図6のアドレス601に相当するプロセッシングエレメント内で保持しているメモリのコンフィギュレーションアドレスをkとする。上記より各メモリ内の設定値はui,j,kと表すことができる。ここで処理割り当て済みのデータフローをi0、処理割り当て対象のデータフローをi1とする。
S1301において、複数のデータフローとその実行順序関係(iの順序)を入力する。既に処理割り当て済みのデータフローに関しては、その設定値ui,j,kも入力する。本実施形態ではデータフロー1204は既に処理割り当て済みであり、データフロー1204に関する各プロセッシングエレメントの各メモリ内の設定値は固定値として与えられる。そしてデータフロー1205は処理割り当て対象である。
次に、S1302において、ハードウェア制約条件と要求仕様とを入力する(制約入力処理)。ここでハードウェア制約条件とは、再構成デバイス内のプロセッシングエレメントの個数やプロセッシングエレメントで処理可能な繰り返し処理回数、演算器の種類などハードウェア構成上の制約となりうる構成情報である。また要求仕様とは、プロセッシングエレメントの使用個数や繰り返し処理の回数の制限、使用可能な演算器の種類などハードウェア使用上で制限すべき項目である。さらに処理の入出力の順序関係に矛盾がないか、デッドロックがないか、なども本制約に関する。また、既に処理割り当て済みのデータフローに関しては処理割り当てを変更しないという制約も含む。ただし、本発明は上述の制約のみに限られるものではない。
続いてS1303において、処理割り当て対象となるデータフローの処理割り当てを行う(割当候補決定処理)。初期処理割り当てにおいては、ランダムに割り当てる、ないしはデータフローの深さ方向順に処理を割り当てる方法があるが、これらの方法に限られるものではない。初期割り当てでない場合は、例えばランダムに二つの配置を選出し交換するように、シミュレーテッドアニーリングに基づき処理割り当てを変更する。本実施形態では、処理割り当て対象のデータフロー1205に関して初期処理割り当て、ないしは処理割り当て変更を行う。処理割り当て済みのデータフローに関しては、制約に基づき処理割り当ての変更は行わない。
S1304において、処理割り当て結果がS1302で入力された要求仕様を満たしているか判断する。
以下の式に示すように、制約を満たしていれば、ペナルティ変数pを0とし、制約を満たしていない、すなわち違反があればペナルティ変数pをペナルティ値Cp0とする(ペナルティ値決定処理)。
Figure 0005798378
ここで本実施形態では、違反があった場合に一律Cp0を定数値として扱っているが、違反項目に応じた変数値としてもよい()。
S1305において、処理割り当て結果がS1302で入力されたハードウェア制約条件を満たしているかを判断する。
以下の式に示すように、制約を満たしていれば、ペナルティ変数pを0とし、違反している場合はペナルティ変数pをペナルティ値Cp1とする(ペナルティ値決定処理)。
Figure 0005798378
ここで本実施形態では、違反があった場合に一律Cp1を定数値として扱っているが、違反項目に応じた変数値としてもよい。
次にS1306において、対象となるデータフロー変更期間における設定変更数の算出を行い、評価値を計算する(設定変更数算出処理、評価値算出処理)。なお、設定変更数のみに着目して、設定変更数が少なくなるような処理の割当を決定する構成であってもよい。図12の例で説明すると設定変更1210、設定変更1211、設定変更1212、設定変更1213の際に変更の必要がある設定数である。より具体的には、処理割り当て済みのデータフローi0における、設定値ui0,j,kと、処理割り当て対象のデータフローi1における、同じアドレスの設定値ui1,j,kとが一致していなければαp1を設定変更数に加える。一方、値が一致していれば何も加えない。上述の計算を全てのプロセッシングエレメントjの全てのメモリkに関して行う。以上で説明した設定変更数sは以下の式で表すことできる。
Figure 0005798378
ここでαp1は通常1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。図7で示した通り、一度のコンフィギュレーションコマンドで一つの設定値を変更することができることから、この数が少なくなれば、処理内容の切り替え時間を削減することが可能となる。
本ステップで評価値Eを算出する際の式は上述の式より、以下のように定義する。
Figure 0005798378
つまり、要求仕様とハードウェア制約条件を満たしつつ、再構成に必要な設定変更数が少なくなるほど評価値Eは小さくなる。
最後にS1307において、シミュレーテッドアニーリングに基づき評価値Eが目標値を達成したか否かを判断する。評価値Eが目標値を達成したと判断された場合(S1307;YES)、処理を終了する。一方、評価値Eが目標値を達成していないと判断された場合(S1307;NO)、S1303へ戻る。ここで、目標値とは、例えば予定された計算時間に達する際の値であってもよい。評価値Eが目標値を達成したとは、例えば、評価値が閾値以下である場合である(評価値判定処理)。
一般的な再構成デバイスにおけるデータフローのプロセッシングエレメントへの処理割り当て方法では設定変更数を意識しないため、データフローの処理変更で全ての設定を変更する必要が生じる。
本実施形態によれば、データフローの処理順に注目し、最小単位である設定レベルでの変更合計数を少なくすることにより、設定変更数削減を効果的に行うことが可能となる。
(第2実施形態)
図14(a)および(b)を参照して、本実施形態に係る処理のタイムチャートおよび、処理割り当ての概要を示す。本実施形態では、再構成デバイスの設定を変更することにより複数のデータフローの処理を行う際に、各データフローの処理内容自体は決まっているが、そのデータフローの実行順序が不定で、状況や入力データなどに応じて変更する場合の処理割り当てに関する実施形態である。具体的には図14(a)では、再構成デバイスで行う処理として、タイムチャート1401で示すようにその実行順序が結果や状態などに応じて変わるなど、一定でない場合を想定している。
タイムチャート1401における処理1402ではデータフローAに関する処理が行われ、処理1404、処理1408ではデータフローCに関する処理が行われ、処理1406ではデータフローBに関する処理が行われる。設定1403ではデータフローAからデータフローCへの設定変更が行われる。設定1405ではデータフローCからデータフローBへの設定変更が行われる。設定1407ではデータフローBからデータフローCへの設定変更が行われる。本実施形態では、データフローA、データフローB、データフローCの実行順序が一定でないため、それぞれのデータフロー間の全ての設定変更を考慮して処理割り当てを行う必要がある。また、データフローA、データフローB、データフローCは全て処理割り当て対象とする。
データフローAの設定1409、データフローBの設定1410、データフローCの設定1411は、それぞれデータフローA、データフローB、データフローCにおけるプロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定例を示している。これら全てのデータフローA、データフローB、データフローCの処理割り当てを一度に一括して行う。データフローAの設定1409、データフローBの設定1410、データフローCの設定1411は第1実施形態の図6で示した設定と同様であるである。本実施形態では、データフローAおよびデータフローBの間、データフローBおよびデータフローCの間、データフローCおよびデータフローAの間において、プロセッシングエレメント202−1〜プロセッシングエレメント202−4でデータフローの変更に必要な設定変更数の合計数に注目する。この合計数を評価値Eとして算出することで再構成デバイスの再構成時の設定変更数の削減を行う。
なおデータフローAおよびデータフローBの間でのプロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更は、それぞれ設定変更1412、設定変更1415、設定変更1418、設定変更1421で表している。またデータフローBおよびデータフローCの間でのプロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更は、それぞれ設定変更1413、設定変更1416、設定変更1419、設定変更1422で表している。データフローCおよびデータフローAの間でのプロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更は、設定変更1414、設定変更1417、設定変更1420、設定変更1423で表している。
本実施形態と第1実施形態との違いは、同時に複数のデータフローの処理割り当てを行う点にある。以下、図13のフローチャートに示される処理との差異点を説明する。
S1301において、複数のデータフローを入力すると同時に、実行順序が任意であることを入力する。
S1303において、処理割り当て対象であるデータフローA1409、データフローB1410、データフローC1411の全てに対して処理割り当てを行う。
S1306において、本実施形態で使用する設定変更数sは、第1実施形態の設定変更数に対して以下の違いがある。
処理割り当て対象のデータフローi0における、設定値ui0,j,kと、処理割り当て対象のデータフローi1における、同じアドレスの設定値ui1,j,kの値が一致していなければαを設定変更数sに加える。また、処理割り当て対象のデータフローi1における、設定値ui1,j,kと、処理割り当て対象のデータフローi2における、同じアドレスの設定値ui2,j,kの値が一致していなければβを設定変更数sに加える。さらに、処理割り当て対象のデータフローi2における、設定値ui2,j,kと、処理割り当て対象のデータフローi0における、同じアドレスの設定値ui0,j,kの値が一致していなければγを設定変更数sに加える。上述以外で、設定値が一致していれば何も加えない。上述の計算を全てのプロセッシングエレメントjの全てのメモリkに関して行う。
Figure 0005798378
ここでi0はデータフローA1409、i1はデータフローB1410、i2はデータフローC1411を示しており、上記式で示す値が小さくなるように、これらの設定値ui0,j,k、ui1,j,k、ui2,j,kを決める。またα、β、γは通常それぞれ1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重みづけることも可能としている。
本実施形態によれば、全てのデータフロー間を考慮することで、処理の実行順序が不定な場合であっても平均して設定変更数削減効果が得られる。
(第3実施形態)
図15(a)および(b)を参照して、本実施形態に係る処理のタイムチャートおよび、処理割り当ての概要を説明する。本実施形態では、既に複数のデータフローの実行順序およびそれぞれの処理割り当ても決まっている場合を想定している。本実施形態は、上述の実行順序における任意のデータフローの処理の間に、処理の挿入前後の処理割り当ては変えずに、新たなデータフローに対応した処理を挿入するための処理割り当てに関する。
図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およびデータフローACの処理割り当ては変更せずにデータフローBの処理割り当てを決定するため、データフローBを挿入する挿入先順序の前後の順序における、既に処理割り当て済みのデータフロー間の設定変更量を考慮する。
設定1509、設定1510、設定1511は、それぞれデータフローA、データフローB、データフローCにおけるプロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定を示している。本実施形態ではデータフローAおよびデータフローCは処理割り当て済みであり、データフローBの処理割り当てを行う。設定1509、設定1510、設定1511は第1実施形態と同様に、図6で示した設定である。
本実施形態では、データフローAからデータフローBへ、およびデータフローBからデータフローCへの設定変更に関して、プロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更に必要な設定変更数の合計数に注目する。この合計数を第1実施形態の図13におけるS1308で示す評価値Eとして算出し、当該評価値に基づいて再構成デバイスの再構成時の設定変更数の削減を行う。
なおデータフローAおよびデータフローBの間での、プロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更は、それぞれ設定変更1512、設定変更1514、設定変更1516、設定変更1518で表している。またデータフローBおよびデータフローCの間での、プロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更は、設定変更1513、設定変更1515、設定変更1517、設定変更1519で表している。
本実施形態と第1実施形態との違いは、一つのデータフローの処理割り当てに際し、他の複数の処理割り当て済みのデータフローを同時に参照する点である。以下、図13のフローチャートに示される処理との差異点を説明する。
図13のS1303で行う処理割り当ては、処理割り当て対象であるデータフローA1510である。データフローA1509、データフローC1511は処理割り当て済みであり、処理割り当て変更は行わない。
図13のS1306で使用する設定変更数sとして、第1実施形態に対して以下の違いがある。
処理割り当て済みのデータフローi0における、設定値ui0,j,kと、処理割り当て対象のデータフローi1における、同じアドレスの設定値ui1,j,kの値が一致していなければαを設定変更数に加える。また、処理割り当て対象のデータフローi1における、設定値ui1,j,kと、処理割り当て済みのデータフローi2における、同じアドレスの設定値ui2,j,kの値が一致していなければβを設定変更数に加える。上述の値が一致していれば何も加えない。上述の計算を全てのプロセッシングエレメントjの全てのメモリkに関して行う。以上で説明した設定変更数sは以下の式で表すことできる。
Figure 0005798378
ここでi0はデータフローA1509、i1はデータフローB1510、i2はデータフローC1511を示している。これらの設定値の内、ui0,j,k、ui2,j,kは既に処理割り当て済みで、上記式で示す値が少なくなるようにui1,j,kを決めることとなる。またα、βは通常それぞれ1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重み付けることも可能としている。
本実施形態によれば、新たにデータフロー挿入する場合に、挿入前後のデータフローとの間での設定変更数を削減できる。
(第4実施形態)
図16(a)および(b)を参照して、本実施形態に係る処理のタイムチャートおよび、処理割り当ての概要を説明する。本実施形態では、ある基準となるデータフローの処理後、その結果に応じて次に行われるデータフローが異なる場合の処理割り当てに関する実施形態である。
図16(a)のタイムチャート1601は、基準となるデータフローXの処理を、処理1602で示される期間に行った後、その結果に応じて、データフローXからデータフローA、データフローBまたはデータフローCへの設定変更を、設定1603で示される期間に行う。設定完了後、データフローA、データフローBまたはデータフローCの処理が、処理Aまたは処理Bまたは処理C1604で示される期間に行われ、再度基準となるデータフローXの処理を行うために、設定1605で示される期間にデータフローA、データフローBまたはデータフローCからデータフローXへと設定変更を行う。上記実行順序が繰り返されるが、データフローA、データフローBまたはデータフローCの何れが行われるかはデータフローXの処理結果に応じて変わるものとする。
設定1606、設定1607、設定1608、設定1609はそれぞれデータフローX、データフローA、データフローB、データフローCにおけるプロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定を示している。本実施形態では、データフローX、データフローA、データフローB、データフローCの全てのデータフローに対して処理割り当てを行う。設定1606、設定1607、設定1608、設定1609は、第1実施形態と同様に、図6で示した設定である。処理割り当てに際して、データフローXおよびデータフローAの間、データフローXおよびデータフローBの間、データフローXおよびデータフローCの間でのプロセッシングエレメント202−1〜プロセッシングエレメント202−4でデータフロー変更に必要な設定変更数の合計数に注目している。上記合計数が第1実施形態の図13のS1304で示す評価値Eとして算出して、当該評価値Eに基づいて再構成デバイスの再構成時の設定変更数の削減を行う。
なおデータフローXおよびデータフローAの間でのプロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更は、それぞれ設定変更1610、設定変更1613、設定変更1616、設定変更1619で表している。
なおデータフローXおよびデータフローBの間でのプロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更は、それぞれ設定変更1611、設定変更1614、設定変更1617、設定変更1620で表している。
データフローXおよびデータフローCの間でのプロセッシングエレメント202−1〜プロセッシングエレメント202−4の設定変更は、それぞれ設定変更1612、設定変更1615、設定変更1618、設定変更1621で表している。
本実施形態と第1実施形態との違いは、実行順序に分岐があり、分岐先と分岐元との間のデータフローに対して処理割り当てを行う点にある。以下、図13のフローチャートに示される処理との差異点を説明する。
図13のS1301では、複数のデータフローを入力すると同時に、部分的に任意の実行順序を入力する。
図13のS1303で行う処理割り当ては、処理割り当て対象であるデータフローX1606、データフロー1607A、データフローB1608、データフローC1609の全てに対して処理割り当てを行う。本実施形態では、全てのデータフローを処理割り当て対象として扱う例を示しているが、それに限定されるものではない。本実施形態はデータフローの実行順序に注目したものであり、少なくとも一つのデータフローが、既に処理割り当て済みの場合には、それ以外のデータフローの処理割り当てを行うこととなる。
図13のS1306で使用する設定変更数sとして、第1実施形態に対して以下の違いがある。
処理割り当て対象のデータフローi0における、設定値ui0,j,kと、処理割り当て対象のデータフローi1における、同じアドレスの設定値ui1,j,kの値が一致していなければαを設定変更数に加える。また、処理割り当て対象のデータフローi0における、設定値ui0,j,kと、処理割り当て対象のデータフローi2における、同じアドレスの設定値ui2,j,kの値が一致していなければβを設定変更数に加える。さらに、処理割り当て対象のデータフローi0における、設定値ui0,j,kと、処理割り当て対象のデータフローi3における、同じアドレスの設定値ui3,j,kの値が一致していなければγを設定変更数に加える。上述以外で、設定値が一致している場合は何も加えない。上述の計算を全てのプロセッシングエレメントjの全てのメモリkに関して行う。
Figure 0005798378
ここでi0はデータフローX1606、i1はデータフローA1607、i2はデータフローB1608、i3はデータフローC1609、をそれぞれ示している。上記式で示す値が少なくなるようにui0,j,k、ui1,j,k、ui2,j,k、ui3,j,kを決める。またα、β、γは通常それぞれ1であるが、プロセッシングエレメントのコンフィギュレーションメモリの構造に応じて、各設定が格納されているアドレス毎に重み付けを変更することも可能としている。またデータフロー毎に切り替え時間の優先度をつけるためにデータフロー毎に重み付けることも可能としている。
本実施形態によれば、複数のデータフローを順々に行う上で、その実行順序に分岐がある場合でも、分岐元となるデータフローと分岐先となる複数の他のデータフローを考慮することで、設定変更数を削減することができる。
(第5実施形態)
上記の各実施形態では、ユースケース別に各々の経路設定方法について述べたが、本発明はこれらの方法の組み合わせでも良い。
また、再構成デバイスの構成要素としてプロセッシングエレメントを説明したが、これに限るものではなく、LUTや、それとの組み合わせでも良い。また、設定は、上記の各実施形態で示した設定に限るものではなく、LUTベースの再構成デバイスで使用される設定でも良い。
また、上記の各実施形態では入力するデータフロー全てに対して処理割り当て対象としたが、処理割り当て範囲を指定することで、データフローの一部のみに対して処理割り当てを行っても良い。
また、上記の各実施形態ではプロセッシングエレメント数はデータフロー間で同じとしているが、処理を割り当てるプロセッシングエレメント数が異なっても良い。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (8)

  1. データフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素へ処理を割り当てるための設定情報を定める装置であって、
    複数のデータフローのそれぞれを前記複数の構成要素によって実現するための設定値を含む設定情報と、前記複数の構成要素の構成情報とを入力する入力手段と、
    前記設定情報と前記構成情報とに基づいて、処理を割り当て済みである第1および第2のデータフローの間に処理を割り当て済みではない第3のデータフローを挿入する場合に、前記第1のデータフローから前記第3のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数と、前記第3のデータフローから前記第2のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数との合計数を取得する取得手段と、
    前記合計数が小さくなるように、前記第3のデータフローについて前記複数の構成要素へ処理を割り当てる制御手段と、
    を備え、
    前記設定変更数は、各構成要素内のコンフィギュレーションメモリの各アドレスに対する前記設定値の変更の有無に基づく値であることを特徴とする装置。
  2. 前記入力手段は、前記複数のデータフローの実行順序をさらに入力することを特徴とする請求項1に記載の装置。
  3. 前記制御手段は、
    前記実行順序に基づいて、前記第3のデータフローに対して前記構成要素のそれぞれに処理を割り当てる割当候補を決定する候補決定手段と、
    前記設定情報と前記構成情報とに基づいて、前記割当候補ごとに前記設定変更数を算出する変更数算出手段と、
    前記設定変更数が小さくなるように前記構成要素への処理の割り当てを決定する決定手段と、
    を備えることを特徴とする請求項2に記載の装置。
  4. 前記決定手段は、
    前記構成情報に基づいて前記割当候補が前記構成要素に割当可能であるか否かを判定する判定手段と、
    前記判定手段により割当可能でないと判定された場合、ペナルティ値を決定するペナルティ値決定手段と、
    前記設定変更数と前記ペナルティ値とに基づいて割り当てを決定するための評価値を算出する評価値算出手段と、
    前記評価値が閾値以下であるか否かを判定する評価値判定手段と、を備え、
    前記決定手段は、前記評価値が閾値以下であると判定された場合に、前記割当候補を前記構成要素への処理の割り当てとして決定することを特徴とする請求項3に記載の装置。
  5. データフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素へ処理を割り当てるための設定情報を定める装置であって、
    処理を割り当て済みである第1および第2のデータフローの間に、処理を割り当て済みではない第3のデータフローを挿入する場合、前記第1のデータフローから前記第3のデータフローへの構成要素の設定変更数と、前記第3のデータフローから前記第2のデータフローへの構成要素の設定変更数とに基づいて、前記第3のデータフローについて前記複数の構成要素へ処理を割り当てる制御手段を備え、
    前記設定変更数は、各構成要素内のコンフィギュレーションメモリの各アドレスに対する設定値の変更の有無に基づく値であることを特徴とする装置。
  6. ータフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素に処理を割り当てるための設定情報を定める装置であって、入力手段と取得手段と制御手段を備える前記装置における処理方法であって、
    前記入力手段が、複数のデータフローのそれぞれを前記複数の構成要素によって実現するための設定値を含む設定情報と、前記複数の構成要素の構成情報とを入力する入力工程と、
    前記取得手段が、前記設定情報と前記構成情報とに基づいて、処理を割り当て済みである第1および第2のデータフローの間に処理を割り当て済みではない第3のデータフローを挿入する場合に、前記第1のデータフローから前記第3のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数と、前記第3のデータフローから前記第2のデータフローへ前記再構成デバイスを再構成するのに要する構成要素の設定変更数との合計数を取得する取得工程と、
    前記制御手段が、前記合計数が小さくなるように、前記第3のデータフローについて前記複数の構成要素へ処理を割り当てる制御工程と、
    を備えることを特徴とする処理方法。
  7. データフローを実現するための処理をそれぞれ割り当て可能な複数の構成要素を有する再構成デバイスのために、データフローについて前記複数の構成要素に処理を割り当てるための設定情報を定める装置における処理方法であって、
    制御手段が、処理を割り当て済みである第1および第2のデータフローの間に、処理を割り当て済みではない第3のデータフローを挿入する場合、前記第1のデータフローから前記第3のデータフローへの構成要素の設定変更数と、前記第3のデータフローから前記第2のデータフローへの構成要素の設定変更数とに基づいて、前記第3のデータフローについて前記複数の構成要素へ処理を割り当てる制御工程を有し、
    前記設定変更数は、各構成要素内のコンフィギュレーションメモリの各アドレスに対する設定値の変更の有無に基づく値であることを特徴とする処理方法。
  8. 請求項6又は7に記載の処理方法の各工程をコンピュータに実行させるためのプログラム。
JP2011120990A 2011-02-08 2011-05-30 装置、処理方法、およびプログラム Expired - Fee Related JP5798378B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011120990A JP5798378B2 (ja) 2011-05-30 2011-05-30 装置、処理方法、およびプログラム
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 (zh) 2011-02-08 2012-02-08 可重构装置及其方法、信息处理设备及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011120990A JP5798378B2 (ja) 2011-05-30 2011-05-30 装置、処理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2012248114A JP2012248114A (ja) 2012-12-13
JP5798378B2 true JP5798378B2 (ja) 2015-10-21

Family

ID=47468479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011120990A Expired - Fee Related JP5798378B2 (ja) 2011-02-08 2011-05-30 装置、処理方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP5798378B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6087663B2 (ja) * 2013-02-28 2017-03-01 キヤノン株式会社 構成情報生成装置およびその制御方法
JP6141073B2 (ja) * 2013-04-02 2017-06-07 キヤノン株式会社 情報処理装置及び情報処理装置の制御方法
JP2015001828A (ja) * 2013-06-14 2015-01-05 富士通株式会社 割当プログラム、割当装置および割当方法
JP6516489B2 (ja) * 2015-01-29 2019-05-22 キヤノン株式会社 情報処理装置
US11204745B2 (en) 2019-05-23 2021-12-21 Xilinx, Inc. Dataflow graph programming environment for a heterogenous processing system
KR20220031717A (ko) * 2019-08-22 2022-03-11 구글 엘엘씨 동기식 프로세서를 위한 샤딩

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69737750T2 (de) * 1997-12-17 2008-03-06 Hewlett-Packard Development Co., L.P., Houston Erst- und Zweitprozessoren verwendetes Verfahren
US6034538A (en) * 1998-01-21 2000-03-07 Lucent Technologies Inc. Virtual logic system for reconfigurable hardware
US6678646B1 (en) * 1999-12-14 2004-01-13 Atmel Corporation Method for implementing a physical design for a dynamically reconfigurable logic circuit
JP2006065786A (ja) * 2004-08-30 2006-03-09 Sanyo Electric Co Ltd 処理装置
JP5907607B2 (ja) * 2011-02-16 2016-04-26 キヤノン株式会社 処理配置方法及びプログラム
JP5832311B2 (ja) * 2011-02-08 2015-12-16 キヤノン株式会社 再構成デバイス、処理割当て方法及びプログラム

Also Published As

Publication number Publication date
JP2012248114A (ja) 2012-12-13

Similar Documents

Publication Publication Date Title
JP5798378B2 (ja) 装置、処理方法、およびプログラム
JP6669961B2 (ja) プロセッサ、再構成可能回路の制御方法及びプログラム
WO2008026731A1 (fr) Procédé et système pour le montage d'un modèle de circuit sur un dispositif reconfigurable
KR20220047397A (ko) 프로세서를 위한 산술 논리 유닛 레이아웃
JPWO2006046711A1 (ja) 再構成可能な論理回路を有するデータ処理装置
WO2012020474A1 (ja) ジョブ管理装置及びジョブ管理方法
CN103258074B (zh) 使用部分重构在可编程电路上实施外围器件的方法和装置
US10615800B1 (en) Method and apparatus for implementing configurable streaming networks
JP2008537268A (ja) 可変精度相互接続を具えたデータ処理エレメントの配列
JP3722351B2 (ja) 高位合成方法およびその実施に使用される記録媒体
US9116751B2 (en) Reconfigurable device, processing assignment method, processing arrangement method, information processing apparatus, and control method therefor
CN111767121B (zh) 运算方法、装置及相关产品
CN114386349A (zh) 系统级数字电路的布线方法及装置、设备、存储介质
JP5832311B2 (ja) 再構成デバイス、処理割当て方法及びプログラム
JP5907607B2 (ja) 処理配置方法及びプログラム
JP4664724B2 (ja) 半導体集積回路装置および半導体集積回路装置の設計装置
JP6485335B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9503096B1 (en) Multiple-layer configuration storage for runtime reconfigurable systems
WO2018063737A1 (en) Method, apparatus and system for automatically deriving parameters for an interconnect
US10534885B1 (en) Modifying data flow graphs using range information
CN111142808A (zh) 存取设备及存取方法
US8056030B2 (en) Behavioral synthesis system, behavioral synthesis method, and behavioral synthesis program
JPWO2021100122A1 (ja) 設計支援システムおよび設計支援プログラム
CN111767999A (zh) 数据处理方法、装置及相关产品
Geurts et al. Heuristic techniques for the synthesis of complex functional units

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140527

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150710

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: 20150724

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150821

R151 Written notification of patent or utility model registration

Ref document number: 5798378

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees