JP6485335B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP6485335B2
JP6485335B2 JP2015226658A JP2015226658A JP6485335B2 JP 6485335 B2 JP6485335 B2 JP 6485335B2 JP 2015226658 A JP2015226658 A JP 2015226658A JP 2015226658 A JP2015226658 A JP 2015226658A JP 6485335 B2 JP6485335 B2 JP 6485335B2
Authority
JP
Japan
Prior art keywords
logic circuit
processing
time
task
total
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
Application number
JP2015226658A
Other languages
English (en)
Other versions
JP2017097478A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015226658A priority Critical patent/JP6485335B2/ja
Publication of JP2017097478A publication Critical patent/JP2017097478A/ja
Application granted granted Critical
Publication of JP6485335B2 publication Critical patent/JP6485335B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
演算処理回路またはCPU(Central Processing Unit)などのプロセッサ回路と、プログラム可能なロジック回路であるPLD(Programmable Logic Device)とを混載する演算処理装置(CPUチップ)が提案されている。CPUはプログラムの命令をフェッチし実行する。これに対して、PLDは内部のロジック回路をコンフィグレーションデータ(構成データ、またはロジック回路を構成するための設定値)で再構成し、プログラム内の一部の命令またはタスク(例えば演算関数など、以下タスク等と称する)を処理するロジック回路を構成する。それによりPLDの内部に構成されたロジック回路が、タスク等を高速に処理する。たとえば、プログラマが、プログラム内の一部のタスク等をPLDにより処理するよう設定しておくことで、一部のタスク等はPLDにより実行され、残りのタスク等はCPUにより実行される。その結果、CPUチップによるデータ処理を高速化、低消費電力化を図ることができる。
一方、PLDはコンフィグレーションデータにより所望のロジック回路を構成する。そして、プログラム内のタスク等をPLDで実行するためには、タスク等のコードを高位合成してハードウエア記述言語(HDL)に変換し、そのHDLを論理合成してネットリストに変換し、ネットリストを実現するコンフィグレーションデータに変換する。PLDには、例えば、FPGA(Field Programmable Gate Array)やリコンフィギュラブルLSIなどがある。
命令コードは抽象度が高く制約条件に依存する複数種類のロジック回路に対応するHDLに変換できる。そして、複数のロジック回路のうちいずれかを選択するPLDについては、以下の特許文献に記載されている。
特開2000−252814号公報 特開2007−179358号公報
従来のCPUとPLDを混載する演算処理装置は、1つのタスク等に対応するロジック回路をPLD内に構成し、そのタスク等を実行することが行われている。つまり、従来のPLDは、1つのタスク等のロジック回路を構成(コンフィグレーション:configuration)して処理を実行し、その処理が完了した後、新たなタスク等のロジック回路に再構成(リコンフィグレーション:reconfiguration)してその処理を実行するというように、同期してロジック回路の再構成と処理の実行を行う。
しかしながら、近年においてPLDでもFPGAの高集積化及び高性能化により、1つのPLDで複数のタスク等を非同期に部分的に再構成し処理を実行することが可能になっている。この場合、複数のタスク等は、異なるプログラム内のタスクであり、異なるプログラムは互いに依存関係がない。この互いに独立関係にある複数のタスクの場合、PLD内に既に構成され実行中のロジック回路の処理が完了する前に、新規のロジック回路が構成される、部分的再構成が行われる。そのため、新規に構成するロジック回路を、単にその時点でのPDL内の再構成可能なスペースの大きさに応じて選択すると、面積が小さいが処理速度は低速のロジック回路が選択された結果、最終的な処理完了時間が遅くなるという課題が発生する。
そこで、実施の形態の第1の側面の目的は、命令またはタスクの処理完了時間を短くできる演算処理装置及び演算処理装置の制御方法を提供することにある。
開示の第1の側面は、複数のタスクを実行するプロセッサと、前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第1のロジック回路の総処理終了時刻と前記第1のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第2のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、前記複数種類の第2のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、より短い総処理時間の第2のロジック回路を選択し前記選択した第2のロジック回路を前記プログラマブルロジック回路内に構成する構成制御部とを有する、演算処理装置である。
第1の側面によれば、命令またはタスクの処理完了時間を短くできる。
本実施の形態における演算処理装置の構成を示す図である。 プログラマブルロジック回路(PLD)が複数のロジック回路を非同期に構成することを説明する図である。 FPGA内に配置(構成)するロジック回路の性能と面積について説明する図である。 図3の3つのロジック回路の処理時間を示す図である。 新たなタスクのロジック回路を非同期で配置(構成)する場合の問題点について説明する図である。 2つのロジック回路の実行時間と処理量を示す図である。 本実施の形態における構成制御プログラムによる新たなタスクのロジック回路を選択する例を示す図である。 タスクXを2つのロジック回路で処理する場合とCPUで処理する3つの実行プランを示す図である。 本実施の形態における構成制御プログラムのフローチャート図である。 構成制御プログラムの処理時間予測処理のフローチャート図である。 構成可能時間の計算のフローチャート図である。 図11の回路候補C#がFPGA内に構成(配置)可能か否かの判定処理のフローチャート図である。 構成制御プログラムによる各タスクのロジック回路の構成(配置)例1を示す図である。 構成制御プログラムによる各タスクのロジック回路の構成(配置)例2を示す図である。
図1は、本実施の形態における演算処理装置の構成を示す図である。演算処理装置(CPUチップ)10は、プログラム内の命令またはタスクをフェッチし実行するプロセッサ(またはCPU)11と、外部との入出力処理を行うI/O処理回路14と、外部のメインメモリへのアクセスを制御するメモリアクセス制御回路(MAC)17と、それらを接続するバスBUSとを有する。さらに、演算処理装置10は、プロセッサ11が実行するプログラム内の複数の命令またはタスクの少なくとも一部の命令またはタスク(以下タスク等と称する。)に対応するロジック回路に再構成されるプログラマブルロジック回路(PLD)16と、PLD16を再構成する構成情報(Configuration Data)を記憶する構成情報メモリ12と、PLD16のタスク等に対応するロジック回路の構成、削除と実行を制御する構成制御プログラムを格納するメモリ15とを有する。さらに、PLD16内に構成されたロジック回路の処理時間の実績値を格納する処理時間データベースを記憶するメモリ13を有する。
図1のPLD16は、例えばフィールドプログラマブルゲートアレイ(FPGA)や再構成可能な回路であり、いずれもコンフィグレーションデータによって内部に所望のロジック回路を構成することができる。
また、PLD16は、プロセッサからのタスク等(関数など)の処理要求に応じて、要求されたタスク等に対応するロジック回路の構成及び実行をすることなく、要求を受け付けた旨の応答をプロセッサに返信する。そして、プロセッサ10が構成制御プログラム15を実行することで構成される構成制御部が、PLD16内にロジック回路を構成し実行し、実行終了後ロジック回路を削除する。
プログラム内のタスク等を全てプロセッサ10が実行する場合に比較すると、専用のロジック回路により実行するほうが、処理を高速化でき低消費電力化できる。
以下、「命令やタスク、タスク等」を簡単化のために以下単に「タスク」と称する。
PLD16は、さらに、複数のタスクを非同期に構成し実行する。すなわち、PLDは、部分的な再構成を動的に行うことができ(動的/部分的再構成)、PLD内に構成したあるタスクのロジック回路の動作を停止することなく、新たなタスクに対応するロジック回路を構成し実行する。この場合、複数のタスクは互いに依存関係はなく、複数のタスクのロジック回路による実行の順番は、互いに依存する関係を有しない。
図2は、プログラマブルロジック回路(PLD)が複数のロジック回路を非同期に構成することを説明する図である。PLDのうち特にFPGAは、図示されるとおり、行列状に配置された複数の再構成可能な論理ブロックCLBと、論理ブロックCLB間に配置される配線用チャネル(図示せず)と、IOパッド(図示せず)を有する。そして、構成データ(コンフィグレーションデータ)をPLD内にダウンロードして設定することで、論理ブロックCLB内と配線用チャネルの例えば接続構成などが、構成データに対応した構成に設定される。
図2に示した例では、FPGAは4行4列の論理ブロックCLBを有する。まず、初期状態S1では、構成データが設定されておらず、全ての論理ブロックが未構成状態である。そこで、タスクAの処理要求が発生すると、構成制御プログラムが、タスクAに対応するロジック回路の構成データを生成し構成情報メモリ12内に格納する。具体的には、構成制御プログラムは、タスクAの命令コードを高位合成してRTL(Register Transfer Level)などのHDL(Hardware Description Language)に変換し、さらに、HDLを論理合成してネットリストに変換し、ネットリストのロジック回路を実現する構成データを生成する。そして、構成情報メモリ12内に記憶した構成データをFPGA内のラッチ回路に書き込む(設定する)ことでFPGA内に所望のロジック回路が構成される(S2)。その結果、FPGAは、2つの論理ブロックによりタスクAに対応するロジック回路を構成する。FPGAは、プログラムのタスクAに対する入力パラメータを入力し、入力パラメータに基づいて、新たに構成されたタスクAのロジック回路に動作を開始させ、その出力データをプロセッサ11に出力する。
図2では、次にタスクBの処理要求が発生すると、タスクAのロジック回路の動作が終了するのを待つことなく、構成制御プログラムが、タスクBの構成データをFPGA内に設定しタスクBに対応するロジック回路を構成し、動作を開始させる(S3)。図示されるとおり、工程S3では、タスクBに対応するロジック回路が、タスクAのロジック回路に隣接して6つの論理ブロックで構成されている。
そして、工程S4では、さらにタスクCの処理要求が発生し、構成制御プログラムが、タスクCの構成データをFPGA内に設定し、タスクCに対応するロジック回路を構成する。
次に、工程S5では、タスクBのロジック回路の処理が完了し、構成制御プログラムが、タスクBのロジック回路を削除する。具体的には、構成制御プログラムは、タスクBのロジック回路の構成データの設定をクリアする。その結果、未構成の論理ブロックの面積が増加している。
また、工程S6では、新たにタスクDの処理要求が発生し、構成制御プログラムが、タスクDの構成データをFPGA内に設定し、タスクDのロジック回路を構成する。この段階では、タスクA,Cのロジック回路の処理は未完了であり、タスクA,C,Dそれぞれのロジック回路がFPGA内に構成され、同時に動作している。
このように、FPGA内に非同期で新たな処理要求のタスクのロジック回路が構成され実行されるので、高い集積度のFPGA内の論理ブロックを有効に利用し、高速処理を可能にする。また、FPGA内の演算資源である論理ブロックの空き状況が逐一変化する。
図3は、FPGA内に配置(構成)するロジック回路の性能と面積について説明する図である。C言語などの高級言語によるプログラム内の命令やタスクは抽象度が高いため、同じ命令やタスクから、複数種類のロジック回路に変換可能である。例えば、低いクロック周波数で動作し処理時間が長くなる(処理速度が遅い)が回路面積が小さいロジック回路と、高いクロック周波数で動作し処理時間が短くなる(処理速度が速い)が回路面積が大きいロジック回路などである。
これらの異なるロジック回路への変換は、命令やタスクを高位合成するとき設定する制約条件(速度優先(高速処理を優先)または回路面積優先(小面積、省電力優先))に基づいて、異なるHDLに変換することで可能になる。
図3には、同じタスクに対応する演算Xを実行可能な3つのロジック回路CIR_1, 2, 3が示されている。ロジック回路CIR_1は、パイプライン構成されていない回路構成を有し、但し回路面積は最も小さい。ロジック回路CIR_2は、3ステージを有するパイプライン構成の回路であり、回路面積はロジック回路CIR_1よりも大きい。そして、ロジック回路CIR_3は、10ステージを有するパイプライン構成の回路であり、回路面積は最も大きい。回路面積が大きいほど回路規模が大きく、その分、単位時間当たりの消費電力も大きくなる。
図4は、図3の3つのロジック回路の処理時間を示す図である。図4の横軸は各回路の面積を、縦軸は各回路によるタスク処理時間を示す。図示されるとおり、第1のロジック回路CIR_1は、パイプライン構成でないので並列処理を行うことができないので、複数の入力を処理する場合のタスク処理時間が長くなる。一方、第2、第3のロジック回路CIR_2, CIR_3は、パイプライン構成であるため並列処理を行うことができる。そのため、複数の入力を処理する場合、第2のロジック回路CIR_2は第1のロジック回路CIR_1よりもタスク処理時間は短くなり、第3のロジック回路CIR_3はさらに短くなる。このように、ロジック回路内のパイプラインステージ数が多いほど並列処理が可能故、並列処理により処理時間が短くなる。
以上のとおり、回路面積が大きいほど回路規模が大きく単位時間当たりの消費電力が大きくなるが、並列処理を行うことでトータルの処理時間が短くなり、その分、全処理完了までに必要な消費電力はより低くなる可能性がある。
また、第2のロジック回路CIR_2よりも第3のロジック回路CIR_3のほうが、各パイプラインステージ内の回路規模が小さくその遅延時間が短い。そのため、第3のロジック回路CIR_3は第2のロジック回路CIR_2に比較すると、より高速クロックで動作可能である。この点からも単位時間当たりの消費電力が大きいのが理解できる。
図5は、新たなタスクのロジック回路を非同期で配置(構成)する場合の問題点について説明する図である。図3で説明したとおり、同じタスクでも複数種類のロジック回路で処理することができる。したがって、複数種類のロジック回路のうち、最適なロジック回路を選択することで、演算処理装置の処理性能を向上させることができる。
しかしながら、新たなタスクのロジック回路をFPGA内に配置(構成)する場合、図2で示したとおり、FPGA内の空き領域がその都度異なるので、空き領域が狭い場合は処理速度が速い高性能だが回路面積が大きいロジック回路を配置(構成)させることができない。そのため、処理速度は遅いが回路面積が小さいロジック回路を配置せざるをえない。
図5には、新たなタスクXを処理可能な2つのロジック回路CIR_1、CIR_2のいずれかを、状態S10のFPGAに配置(構成)する処理例が示されている。図示されるとおり、ロジック回路CIR_1は処理速度は低いが回路面積は小さく、ロジック回路CIR_2は処理速度は高いが回路面積は大きい例である。そして、状態S10のFPGAは、6つのロジック回路が既に配置(構成、使用中)済みのため、空き論理ブロックは4つであり、しかも空き領域は単一の矩形形状ではない。
そのため、状態S10のFPGAに配置(構成)可能なロジック回路は面積が小さいほうの回路CIR_1である。したがって、状態S11では、ロジック回路CIR_1が配置(構成)されてしまい、タスクXの処理時間は、ロジック回路CIR_2を配置できた場合に比較すると長くなる。
図6は、2つのロジック回路の実行時間と処理量を示す図である。図5の例のように、状態S10で新たなタスクXのために次に配置(構成)する回路をロジック回路CIR_1に選択すると、図6中、CIR_1で示されるとおり、短時間でロジック回路CIR_1の構成データをダウンロードしてFPGA内にロジック回路CIR_1を再構成できるが、処理速度が遅いため、タスクXの処理量に達するまでの時間は長くなる。
一方で、状態S10でタスクXのために配置(構成)する回路をロジック回路CIR_2に選択すると、図6中、CIR_2で示されるとおり、他のタスクのロジック回路の処理が完了してそのロジック回路が削除されるまで待つ必要があるので、ロジック回路CIR_2を配置(構成)するまでの待ち時間と再構成に要する時間の合計はロジック回路CIR_1よりも長い。しかし、ロジック回路CIR_2は処理速度が速いため、タスクXの処理量に達するまでの合計時間は、ロジック回路CIR_1よりも短くなる。
[本実施の形態のロジック回路の選択方法]
本実施の形態における構成制御プログラムは、以下のような処理を行って、より早く処理が終了するロジック回路を選択してPLD内に配置(構成)する。
すなわち、構成制御プログラムは、新たなタスクの処理要求に応じて、PLD内に既に構成されているまたは構成することが予約されている受付済みタスクのロジック回路の総処理終了時刻とそのロジック回路の面積とに基づいて、新たなタスクに対応する複数種類のロジック回路それぞれが構成可能となるまでの構成可能時間T#wait(#は複数種類の番号を表す。)を生成(または算出)する。つまり、受付済みタスクのロジック回路の総処理終了時刻毎にそのロジック回路が消去されて空き領域が形成されるので、新たなタスクの複数種類のロジック回路のうち総処理終了時刻それぞれの時点で配置(構成)可能なロジック回路を検出し、配置可能(構成可能)になるまでに待たされる時間、構成可能時間T#waitを求める。これは全ロジック回路それぞれについて求める。
次に、構成制御プログラムは、新たなタスクの複数種類のロジック回路それぞれの配置(構成)に要する構成時間T#confと、それぞれの処理に要する処理時間T#exeに、構成可能時間T#waitをそれぞれ加算した総処理時間T#totalを生成(または算出)する。そして、構成制御プログラムは、より短い総処理時間のロジック回路を選択し、選択したロジック回路をPLD内に配置(構成)する。望ましくは、最も短い総処理時間のロジック回路を選択する。
これにより、新たなタスクの処理が完了する時間が最も早くなるロジック回路を選択することができる。
図7は、本実施の形態における構成制御プログラムによる新たなタスクのロジック回路を選択する例を示す図である。図7の例は、図5と同様に、状態S10のFPGAに対して新規タスクXの処理依頼があった場合を想定している。そして、構成制御プログラムが、タスクXを高位合成してHDLに変換し更に論理合成してネットリストに変換しさらにネットリストの論理回路を構成するための構成データを生成したとする。つまり、タスクXを処理する2種類のロジック回路CIR_1、CIR_2の構成データが生成されたとする。状態S10ではFPGAには既に6つのロジック回路が構成済みで実行中であり、それらのロジック回路の処理が終了する予測総処理終了時刻が図示されるとおりとする。
上記の場合、構成制御プログラムは、2つの候補のロジック回路それぞれについて、配置(構成)可能になるまでに待たされる構成可能時間T#waitと、構成データをFPGAにダウンロードし設定するのに要する構成時間T#confと、それぞれの処理に要する処理時間T#exeを算出またはデータベースから抽出する。そして、構成制御プログラムは、2つの候補のロジック回路のうち、上記時間を加算した総処理時間T#totalが短いほうを選択する。
図8は、タスクXを2つのロジック回路で処理する場合とCPUで処理する3つの実行プランを示す図である。図8中、タスクXをロジック回路CIR_1で処理した場合Aと、ロジック回路CIR_2で処理した場合Bと、CPUで実行した場合C、それぞれの構成可能時間、構成時間、処理時間、そして総処理時間が示されている。
図7のタスクXの処理依頼が発生したときの状態S10に示されるFPGA内の配置(構成)済且つ実行中の6つのロジック回路の状態と、それぞれのロジック回路の総処理終了時刻とによれば、ロジック回路CIR_1であれば面積が小さいので、構成可能時間(構成するまでの待ち時間)は0secである。また、ロジック回路CIR_1の構成時間と処理時間と総処理時間は図8に示されるとおりである。
一方、ロジック回路CIR_2は面積が大きいので、予測総処理終了時刻が500nsのロジック回路が処理を終了するまで待てば構成可能になるので、構成可能時間は500nsである。そして、ロジック回路CIR_2の構成時間と処理時間と総処理時間は図8に示されるとおりである。ロジック回路CIR_2は、ロジック回路CIR_1よりも面積が大きいので構成時間がより長いが、処理時間はより短く、総処理時間はより短い。
さらに、タスクXをFPGA内のロジック回路で処理するのではなくCPUにより実行する場合は、構成可能時間と構成時間は共に0secである。但し、CPUによる実行のため2つのロジック回路より処理時間は長く、総処理時間も長くなっている。
そこで、構成制御プログラムは、図8の表に示されたロジック回路CIR_1, CIR_2の総処理時間に基づいて、総処理時間がより短いロジック回路CIR_2を選択し、FPGA内に配置(構成)する予約状態に登録する。
図9は、本実施の形態における構成制御プログラムのフローチャート図である。制御構成プログラムは、CPUから新規タスクの処理依頼を受信すると(S20のYES)、新規タスク構成・実行処理を行う(S21)。
新規タスク構成・実行処理S21は、図9の右側に示されている。構成制御プログラムは、まず、新規タスクに対し高位合成等を行い、新規タスクを処理可能な複数のロジック回路C#(#=1〜n)の構成データを生成し、構成情報メモリ12に書き込む(S30)。
次に、構成制御プログラムは、各ロジック回路について、構成データをPLDに設定してロジック回路を構成するのに要する回路構成時間T#confと、ロジック回路の処理時間T#exeとを算出する(S31)。これらの時間は、過去にFPGA内に構成された回路の実績に基づいて算出される。具体的な計算例については後述する。
さらに、構成制御プログラムは、各ロジック回路について、構成可能になるまで待たされる時間である構成可能時間T#waitを算出する(S32)。構成可能時間T#waitは、FPGA内に構成済みまたは構成予約済みのロジック回路の予測される総処理終了時刻とそれらロジック回路の面積と位置に基づいて、算出される。具体的な計算例については後述する。
そして、構成制御プログラムは、各ロジック回路の総処理時間T#totalを以下のとおり算出する(S33)
総処理時間T#total = T#wait + T#conf + T#exe
さらに、構成制御プログラムは、上記の複数のロジック回路の総処理時間T#totalが最小のものを選択する。そして、現在時刻に、選択した最小の総処理時間T#totalを次のとおり加算して、総処理終了時刻(予測総処理終了時刻)T#total_endを算出し、メモリに記憶する(S34)。
総処理終了時刻T#total_end = 現在時刻 + T#total(最小値)
この総処理終了時刻T#total_endは、後で構成可能時間T#waitを算出する際に参照されるので、メモリに記憶しておく。
以上の処理で新たなタスクを処理するロジック回路が選択され、そのロジック回路をFPGA内に配置(構成)する時刻(現在時刻+T#wait)が決定し、そのロジック回路の処理が完了する時刻(総処理終了時刻)T#total_endが算出される。
次に、構成制御プログラムは、選択されたロジック回路Cxが現時点で構成(配置)可能か否か判定する(S35)。この判定では、構成可能時間Tx_wait=0の場合に構成可能と判定される。構成可能な場合(S35のYES)、ロジック回路CxをFPGA内に構成する(S37)。一方、構成可能でない場合(構成可能時間Tx_waitが0でない場合)(S35のNO)、ロジック回路Cxの構成を予約する(S36)。構成の予約では、構成する位置と面積の情報や構成する予約時刻などとともに、ロジック回路Cxが予約行列に記憶される。
構成制御プログラムは、構成することを予約されたロジック回路について、FPGA内のロジック回路の処理が完了するタイミング毎に構成(配置)可能な否かを判定する(S35)。この判定では、構成可能時間Tx_waitが経過しそのロジック回路をPLDに構成できるか否かが判定される。やがて予約中のロジック回路が構成可能になると(S35のYES)、構成制御プログラムは、予約されていたロジック回路CxをFPGA内の予約位置に構成する(S37)。
構成制御プログラムは、ロジック回路CxをFPGA内に構成したとき、工程S34で記憶済みの総処理終了時刻Tx_total_endを、現在時刻にロジック回路の処理時間Tx_exeを加算した時刻に更新する(S37)。この更新処理は、構成予約された場合、予測した構成可能時間Tx_waitと実際に待たされた時間とが乖離している場合があるため、ロジック回路Cxの総処理終了時刻の精度を高めるために行われる。
そして、構成制御プログラムは、構成したロジック回路Cxが処理を実行し実行が完了すると、その処理時間Tx_exeの実績値を処理時間データベースのメモリ13に記憶する(S38)。処理時間の実績値は、ロジック回路の処理時間を見積もるときに参照される。
以上のとおり、構成制御プログラムは、新規タスクの処理要求を受け付けるたびに、その新規タスクを処理可能な複数のロジック回路のうち、総処理時間T#totalが最も短いロジック回路を選択し、その構成可能時刻(現在時刻+構成可能時間T#wait)、総処理終了時刻T#total_endをメモリに記憶しておく。また、ロジック回路が終了した時点で実際に要した処理時間T#exeの実績値も処理時間データベース内に記憶する。
[処理時間の計算方法]
図10は、構成制御プログラムの処理時間予測処理のフローチャート図である。構成制御プログラムは、タスクを処理するロジック回路の平均処理時間μを以下の通り計算する(S40)。
μ=Tconst+L(引数値)
ここで、Tconstは固定処理時間であり、高位合成時にタスクの内容に応じて予測される時間か、過去の同じタスクの処理時間の平均値である。また、L(x)は、タスクの引数xに応じた処理時間の変動に対応する。タスクの引数xで処理量が変動するのでその変動時間に対応する。
例えば、処理量に影響する引数の例は、処理が関数F(x,y)で、繰り返し回数が引数xである一重ループと、繰り返し回数が引数xと引数yの二重ループを有する場合、以下の遅延時間が生じる。
L(x,y)=c0*x + c1*x*y
C0, C1は係数である。
また、上記の平均処理時間μは、処理の重要度に応じてメモリアクセスの優先順位が設定される場合には、その重要度Cimpの係数を乗じて、以下のように変形させてもよい。
μ=Cimp *{Tconst + L(引数値)}
さらに、構成制御プログラムは、過去の同じタスクの実行結果から処理時間の分散の度合いである標準偏差σを求める(S41)。
次に、構成制御プログラムは、外乱による処理時間のブレ値Envを次のとおり計算する(S42)。
Env = T_fpga*E0 + P_fpga*E1
T_fpgaは、FPGAの温度Tに依存する処理時間のぶれ値であり、P_fpgaは、FPGAの消費電力Pに依存する処理時間のぶれ値である。FPGAの温度が高くなると処理速度が変化し、消費電力が上がると処理速度が変化するので、そのぶれ値を処理時間に反映させるのが望ましい。E0, E1は係数または重み値である。
上記以外にも、FPGAの動作周波数Fに依存するぶれ値F_fpgaを追加してもよい。動作周波数Fが上がれば処理時間は短くなる。さらに、回路の面積Sに依存するぶれ値S_fpgaを追加してもよい。回路の面積Sが大きいほど並列化処理による処理時間は短くなる。
例えば、FPGAの動作周波数F_fpgaが基準周波数F_refに対してどの程度高いかまたは低いかにより、処理時間を上下させて調整するのが望ましい。例えば、以下のとおりである。
Env = μ*{(F_ref-F_fpga)/F_ref}*Ct
ここで、Ctは変換係数または重み値である。F_fpga>F_refの場合はEvnが負の値になり処理時間は短くなり、逆の場合はEvnが正の値になり処理時間は長くなる。平均値μに両周波数の差の割合を乗じた分だけ、処理時間が長くなったり短くなったりする。
そして、最後に、構成制御プログラムは、タスクの処理をするロジック回路の処理時間T#exeを以下のとおり算出する(S43)。
T#exe = μ + W0*σ*rand + W1*Env
ここで、W0,W1は重み付け係数(W0,W1=0〜1)、randは標準正規乱数である。すなわち、標準正規乱数randは分布が正規分布になる乱数であり、標準正規乱数randに過去の処理時間の分散度合いである標準偏差σを乗じることで、毎回のロジック回路の処理時間のランダムな変動を加えることができる。
[処理時間の計算例1]
第1の例は、固定パケットの送信を行う関数send()であり、過去の処理時間の履歴が以下のとおりとする。
1回目:処理時間1105 ns
2回目:処理時間1320 ns
3回目:処理時間1190 ns
そこで、処理時間の導出方法は以下のとおりである。まず、過去の処理時間の履歴から処理時間がランダムであると仮定して、平均値Tconstと標準偏差σを以下のとおり算出する。
Tconst = 1205 ns
σ = 88.4 ns
また、ランダム要因が支配的であるので、ランダム要因の係数をW0=1.0とする。また、引数がないのでL(引数値)=0とする。さらに、外乱による雑音Env、W1については、以下のように仮定する。
Env = Tconst * {(250MHx-F_fpga)/250MHx}
= 1205 ns * {(250MHx-F_fpga)/250MHx}
W1 = 0.7
その結果、第1例の処理時間T#exeは、以下の通り算出される。
T#exe = Tconst + W0*σ*rand + W1*Env
= 1205 ns + W1*1205 ns * {(250MHx-F_fpga)/250MHx} + W0*σ*rand
= 1205 ns[1+0.7{(250-F_fpga)/250}] + 88.4 ns*rand
[処理時間の計算例2]
第2の例は、関数var(sizex, sizey, *image)である。この関数は、画素数がsizex * sizeyの入力画像に対して、4×4画素毎の画素値の分散値をメモリRAMに出力する関数であり、処理量が引数sizex * sizeyに比例する。*imageは分散値を求める画像フィルタのポインタを意味する。
そこで、過去の処理の履歴が以下のとおりだったと仮定する。
1回目:引数(256, 256, *ptr)、処理時間1200 ps
2回目:引数(64, 64, *ptr)、処理時間900 ps
上記の場合の処理時間の導出方法は、以下のとおりである。すなわち、この関数にはランダムな要因がないので、ランダムな項の係数W0をW0=0とする。
さらに、平均値に相当する部分μ=Tconst + L(*)を以下のような一次関数と仮定する。
μ = A * sizex * sizey + Tconst
つまり、L(*)=A * sizex * sizeyと見なしている。Aは係数である。
この一次関数に上記の過去の履歴の値を代入して連立方程式を解くと、AとTconstが以下のとおり求められる。
A = 0.184 [ps/pel]
Tconst = 146.2 ps
ここで、pelは画素(pixel)を意味する。
また、外乱による変動要因のEnvとその係数W1を以下のように仮定する。
Env = F(RAM使用量)
W1 = 0.1
ここで、RAM使用量が多いほどRAMの空き領域が少なくなり、処理時間は長くなるので、その変動要因が上記のEnvに反映されている。
この結果、処理時間T#exeは、以下のとおりになる。
T#exe = (sizex * sizey * 0.184) + 146.2 + 0.1*F(RAM使用量)
[構成可能時間の計算方法]
図11は、構成可能時間の計算のフローチャート図である。以下、構成可能時間T#waitの計算方法について説明する。構成可能時間T#waitは、複数のロジック回路の候補C#それぞれが、最も早くFPGA内に構成(配置)することができる時間である。また、FPGA内の空き領域は、発生済みのタスクのロジック回路が動作を終了した時刻(総処理終了時刻T#total_end)毎に変化するので、構成制御プログラムは、その変化する空き領域に基づいて候補C#を構成(配置)できるか否か判定する。
まず、新たなタスクを処理する全てのロジック回路の候補C#それぞれについて、工程S50〜S56を繰り返す。
さらに、各ロジック回路の候補C#について、発生済みの全タスクのロジック回路の総処理終了時刻T#_total_endの最も早いものから順に、工程S51〜S55を繰り返す。より詳しく言うと、現在時刻(T#_total_end=0)を最初に、その次から総処理終了時刻T#_total_endの最も早いものから順に、工程S51〜S55を繰り返す(S51)。
前述のとおり、これらの総処理終了時刻毎に、FPGA内の構成されたロジック回路の状況が変化するので、その変化する全てのタイミングで、FPGA内の実行中の全タスクのロジック回路の面積と位置に基づく空き領域に、新タスクの回路候補C#が構成(配置)可能か否かを判定する(S52)。この判定には、各総処理終了時刻でのFPGA内の空き領域と、回路候補C#が構成(配置)される期間中(T#conf+T#exe)のFPGA内の空き領域の両方が、回路候補C#の面積以上であることが必要である。
そして、回路候補C#が構成(配置)可能な場合は、その回路候補C#が構成までに待たされる構成可能時間T#waitは、判定対象の総処理終了時刻と現在時刻との差であるので、以下のとおり求められる。
T#wait = 総処理終了時刻T#_total_end - 現在時刻
上記の工程S51〜S55が、回路候補C#が構成可能になるまで繰り返され(S55)、さらに、全ての回路候補C#に対して繰り返される(S56)。
図12は、図11の回路候補C#がFPGA内に構成(配置)可能か否かの判定処理のフローチャート図である。図12は、図11の工程S53を2つの工程S53_1, S53_2で示す。構成制御プログラムは、総処理終了時刻T#total_endでのFPGA内の空き領域に新規の候補C#を構成(配置)可能か否か判定する(S53_1)。この判定では、構成制御プログラムは、総処理終了時刻T#total_endで処理終了するするロジック回路の削除と、同じ総処理終了時刻T#total_endで新たに構成される予約中のロジック回路の追加を考慮して、空き領域とその形状を算出し、その空き領域に新規の候補C#を構成可能か否かを判定する。
さらに、S53_1でYESの場合、構成制御プログラムは、新規の回路候補C#の構成時間と処理時間の合計T#cnf+T#exeの期間中、予約中の回路Cが構成(配置)されたとしても、新規の回路候補C#が構成可能か否かを判定する(S53_2)。すなわち、予約中の回路Cが今後配置されても、新規候補C#の構成状態を維持できる必要がある。
[ロジック回路の構成(配置)例1]
図13は、前述の構成制御プログラムによる各タスクのロジック回路の構成(配置)例1を示す図である。この例1では、プロセッサから4つの新規タスクTA0-TA3が順番に要求される。図13中、横軸は時刻を示す。
最初に時刻450nsで新規タスクTA0が要求される。構成制御プログラムは、FPGA内にはなにもロジック回路が構成されていないため、新規タスクTA0の回路候補C#のうち最適な(総処理時間T#totalが最速の)回路C0を選択し、FPGA内に構成(配置)し、その回路動作を開始させる。この回路C0の総処理時間と総処理終了時刻は以下のとおりとする。
総処理時間T0_total=1950ns
総処理終了時刻T0_total_end=2400ns
次に、時刻720nsで新規タスクTA1が要求される。構成制御プログラムは、FPGA内の空き領域に配置可能な新規タスクTA1の回路候補C#のうち最適な(総処理時間T#totalが最速の)回路C1を選択する。この時刻720nsでは選択した回路C1を構成可能であるので、構成制御プログラムは、FPGA内に構成(配置)し、その回路動作を開始させる。この回路C1の総処理時間と総処理終了時刻は以下のとおりとする。
総処理時間T1_total=2680ns
総処理終了時刻T1_total_end=3400ns
次に、時刻1500nsで新規タスクTA2が要求される。構成制御プログラムは、FPGA内の空き領域に配置可能な新規タスクTA2の回路候補C#のうち最適な回路C2を選択したが、現時刻1500nsでは回路C2を構成(配置)できず、回路C1が処理終了後に構成可能になるため、構成予約状態にする。この回路C2の構成可能時間、総処理時間、総処理終了時刻は以下のとおりである。
構成可能時間T2wait=900ns
総処理時間t2_total=500ns
総処理終了時刻T2_total_end=2900ns
最後に、時刻2100nsで新規タスクTA3が要求される。構成制御プログラムは、FPGA内の空き領域に配置可能な新規タスクTA3の回路候補C#のうち最適な回路C3を選択したが、現時刻では回路C3を構成(配置)できず、回路C2が処理終了後に構成可能になるので、構成予約状態にする。この回路C3の構成可能時間、総処理時間、総処理終了時刻は以下のとおりである。
構成可能時間T2wait=800ns
総処理時間t2_total=1000ns
総処理終了時刻T2_total_end=3900ns
上記のタスクTA2の回路C2は回路C1が終了する時刻2400nsでFPGA内に構成され、タスクTA3の回路C3は回路C2が終了する時刻2900nsでFPGA内に構成される。この例1では、タスクの発生順に回路がFPGA内に構成されている。
[ロジック回路の構成(配置)例2]
図14は、前述の構成制御プログラムによる各タスクのロジック回路の構成(配置)例2を示す図である。この例2でも、4つの新規タスクTA0-TA3が順番に要求される。そして、例2では、新規タスクT0, T1, T2の回路C0, C1, C2の構成(配置)は例1と同じであるが、新規タスクTA3の回路C3を構成(配置)するタイミングが例1と異なる。
新規タスクTA0, TA1, TA2については、例1と同じである。
最後に、時刻2100nsで新規タスクTA3が要求される。構成制御プログラムは、FPGA内の空き領域に配置可能な新規タスクTA3の回路候補C#のうち最適な回路C3を選択したが、例2の回路C3は、例1の回路C3より面積が小さいとする。
構成制御プログラムは、回路C3が新規タスクTA3の要求時刻2100nsでFPGA内に配置可能であり、回路C3の総処理時間T3_totalの間、予約中の回路C2の配置が行われてもFPGA内に配置可能であることを判定する。その結果、構成制御プルグラムは、回路C3をFPGA内に配置し、実行させる。したがって、回路C3の構成可能時間、総処理時間、総処理終了時刻は以下のとおりである。
構成可能時間T2wait=0ns
総処理時間t2_total=1000ns
総処理終了時刻T2_total_end=3100ns
上記のタスクTA2の回路C2は時刻2400nsでFPGA内に構成され、タスクTA3の回路C3は先に要求されたタスクTA2の回路C2よりも先に、時刻2100nsでFPGA内に構成される。例2では、タスクの発生の順番と回路がFPGA内に構成される順番とが異なっている。それぞれのタスクが互いに依存関係のない異なるプログラムから要求されているので、構成制御プログラムは、タスクに対応する回路の構成と実行の順番を独立して決定することができる。
以上のとおり、本実施の形態では、プログラマブルロジックデバイスPLDが複数のタスクを非同期で処理する場合、各タスクの処理を行う最適なロジック回路をPLD内に構成し、各タスクの処理効率を高めることができる。
以上の実施の形態をまとめると、次の付記のとおりである。
(付記1)
複数のタスクを実行するプロセッサと、
前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、
前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第1のロジック回路の総処理終了時刻と前記第1のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第2のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、前記複数種類の第2のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、より短い総処理時間の第2のロジック回路を選択し前記選択した第2のロジック回路を前記プログラマブルロジック回路内に構成する構成制御部とを有する、演算処理装置。
(付記2)
前記構成制御部は、
前記第2のロジック回路の選択において、前記複数の総処理時間のうち最短の総処理時間に対応する第2のロジック回路を選択する、付記1に記載の演算処理装置。
(付記3)
前記構成制御部は、
前記タスクの処理要求に応じて、前記プログラマブルロジック回路内に既に構成されている第1のロジック回路のタスク処理の終了と同期せずに、前記処理要求されたタスクに対応する第2のロジック回路を前記プログラマブルロジック回路に構成する、付記1または2に記載の演算処理装置。
(付記4)
前記構成制御部は、
前記タスクの処理要求の際に、前記選択した第2のロジック回路の総処理時間と現在時刻とから前記総処理終了時刻を算出して記憶し、
さらに、前記選択した第2のロジック回路を前記プログラマブルロジック回路内に構成した際に、前記処理時間と現在時刻から前記総処理終了時刻を算出し、前記記憶済みの総処理終了時刻を更新する、付記1または2に記載の演算処理装置。
(付記5)
前記構成制御部は、
前記タスクに対応する第2のロジック回路の処理時間の実績値を記憶し、
新たなタスクの処理要求の際に、前記新たなタスクに対応するタスクの前記処理時間の実績値に基づいて、前記新たなタスクに対応する第2のロジック回路の処理時間を予測する、付記1または2に記載の演算処理装置。
(付記6)
前記構成制御部は、
前記構成可能時間を算出する際に、発生済みタスクのロジック回路の前記総処理終了時刻が早い順に、前記新たなタスクに対応するロジック回路が前記プログラマブルロジック回路内に構成可能か否かを判定し、現在時刻から構成可能な前記総処理終了時刻までの時間を前記構成可能時間として算出する、付記1または2に記載の演算処理装置。
(付記7)
前記構成制御部は、
前記新たなタスクに対応するロジック回路が前記プログラマブルロジック回路内に構成可能か否かの判定を、前記ロジック回路が構成されてから実行終了までの期間において、前記ロジック回路が前記プログラマブルロジック回路内に構成可能か否かを判定する、付記6に記載の演算処理装置。
(付記8)
前記構成制御部は、
前記新たなタスクに対応するロジック回路を、当該新たなタスクよりも先に発生したタスクに対応するロジック回路を前記プログラマブルロジック回路内に構成するよりも前に、前記プログラマブルロジック回路内に構成する、付記7に記載の演算処理装置。
(付記9)
前記構成制御部は、
前記ロジック回路の処理終了後に、前記選択した第2のロジック回路の実績処理時間を対応するタスクと関連付けて記憶し、
前記複数種類の第2のロジック回路それぞれの処理に要する処理時間を、前記記憶した実績処理時間に基づいて予測する、付記1または2に記載の演算処理装置。
(付記10)
前記複数の第2のロジック回路は、少なくとも、第1の面積と第1の処理速度を有する第1の回路と、前記第1の面積より広い第2の面積と前記第1の処理速度より早い第2の処理速度を有する第2の回路とを有する、付記1に記載の演算処理装置。
(付記11)
前記プログラマブルロジック回路は、フィールドプログラマブルゲートアレイまたは再構成可能回路のいずれかである、付記1に記載の演算処理装置。
(付記12)
複数のタスクを実行するプロセッサと、
前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、を有する演算処理装置の制御方法であって、
前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第1のロジック回路の総処理終了時刻と前記第1のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第2のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、
前記複数種類の第2のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、
より短い総処理時間の第2のロジック回路を選択し、
前記選択した第2のロジック回路を前記プログラマブルロジック回路内に構成する演算処理装置の制御方法。
CPU:プロセッサ
PLD:プログラマブルロジックデバイス
15:構成制御プログラム
C#:候補のロジック回路
T#wait:構成可能時間
T#conf:構成時間
T#exe:処理時間
T#total:総処理時間
T#total_end:総処理終了時刻

Claims (10)

  1. 複数のタスクを実行するプロセッサと、
    前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、
    前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第1のロジック回路の総処理終了時刻と前記第1のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第2のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、前記複数種類の第2のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、より短い総処理時間の第2のロジック回路を選択し前記選択した第2のロジック回路を前記プログラマブルロジック回路内に構成する構成制御部とを有する、演算処理装置。
  2. 前記構成制御部は、
    前記第2のロジック回路の選択において、前記複数の総処理時間のうち最短の総処理時間に対応する第2のロジック回路を選択する、請求項1に記載の演算処理装置。
  3. 前記構成制御部は、
    前記タスクの処理要求に応じて、前記プログラマブルロジック回路内に既に構成されている第1のロジック回路のタスク処理の終了と同期せずに、前記処理要求されたタスクに対応する第2のロジック回路を前記プログラマブルロジック回路に構成する、請求項1または2に記載の演算処理装置。
  4. 前記構成制御部は、
    前記タスクの処理要求の際に、前記選択した第2のロジック回路の総処理時間と現在時刻とから前記総処理終了時刻を算出して記憶し、
    さらに、前記選択した第2のロジック回路を前記プログラマブルロジック回路内に構成した際に、前記処理時間と現在時刻から前記総処理終了時刻を算出し、前記記憶済みの総処理終了時刻を更新する、請求項1または2に記載の演算処理装置。
  5. 前記構成制御部は、
    前記タスクに対応する第2のロジック回路の処理時間の実績値を記憶し、
    新たなタスクの処理要求の際に、前記新たなタスクに対応するタスクの前記処理時間の実績値に基づいて、前記新たなタスクに対応する第2のロジック回路の処理時間を予測する、請求項1または2に記載の演算処理装置。
  6. 前記構成制御部は、
    前記構成可能時間を算出する際に、発生済みタスクのロジック回路の前記総処理終了時刻が早い順に、前記新たなタスクに対応するロジック回路が前記プログラマブルロジック回路内に構成可能か否かを判定し、現在時刻から構成可能な前記総処理終了時刻までの時間を前記構成可能時間として算出する、請求項1または2に記載の演算処理装置。
  7. 前記構成制御部は、
    前記新たなタスクに対応するロジック回路が前記プログラマブルロジック回路内に構成可能か否かの判定を、前記ロジック回路が構成されてから実行終了までの期間において、前記ロジック回路が前記プログラマブルロジック回路内に構成可能か否かを判定する、請求項6に記載の演算処理装置。
  8. 前記構成制御部は、
    前記新たなタスクに対応するロジック回路を、当該新たなタスクよりも先に発生したタスクに対応するロジック回路を前記プログラマブルロジック回路内に構成するよりも前に、前記プログラマブルロジック回路内に構成する、請求項7に記載の演算処理装置。
  9. 前記構成制御部は、
    前記ロジック回路の処理終了後に、前記選択した第2のロジック回路の実績処理時間を対応するタスクと関連付けて記憶し、
    前記複数種類の第2のロジック回路それぞれの処理に要する処理時間を、前記記憶した実績処理時間に基づいて予測する、請求項1または2に記載の演算処理装置。
  10. 複数のタスクを実行するプロセッサと、
    前記複数のタスクの少なくとも一部のタスクに対応するロジック回路を構成し、前記構成したロジック回路が前記タスクの処理を実行するプログラマブルロジック回路と、を有する演算処理装置の制御方法であって、
    前記タスクの処理要求に応じて、前記プログラマブルロジック回路内の構成済または構成予約済の第1のロジック回路の総処理終了時刻と前記第1のロジック回路の面積とに基づいて、前記処理要求されたタスクに対応する複数種類の第2のロジック回路それぞれが構成可能となるまでの構成可能時間を算出し、
    前記複数種類の第2のロジック回路それぞれの構成に要する構成時間とそれぞれの処理に要する処理時間とに前記構成可能時間をそれぞれ加算した複数の総処理時間を算出し、
    より短い総処理時間の第2のロジック回路を選択し、
    前記選択した第2のロジック回路を前記プログラマブルロジック回路内に構成する演算処理装置の制御方法。
JP2015226658A 2015-11-19 2015-11-19 演算処理装置及び演算処理装置の制御方法 Active JP6485335B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015226658A JP6485335B2 (ja) 2015-11-19 2015-11-19 演算処理装置及び演算処理装置の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015226658A JP6485335B2 (ja) 2015-11-19 2015-11-19 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2017097478A JP2017097478A (ja) 2017-06-01
JP6485335B2 true JP6485335B2 (ja) 2019-03-20

Family

ID=58803929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015226658A Active JP6485335B2 (ja) 2015-11-19 2015-11-19 演算処理装置及び演算処理装置の制御方法

Country Status (1)

Country Link
JP (1) JP6485335B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6823251B2 (ja) * 2016-10-13 2021-02-03 富士通株式会社 情報処理装置、情報処理方法及びプログラム
US11645059B2 (en) 2017-12-20 2023-05-09 International Business Machines Corporation Dynamically replacing a call to a software library with a call to an accelerator

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3684901B2 (ja) * 1999-03-02 2005-08-17 富士ゼロックス株式会社 情報処理システム
JP4909588B2 (ja) * 2005-12-28 2012-04-04 日本電気株式会社 情報処理装置及び再構成デバイスの利用方法
JP2009070265A (ja) * 2007-09-14 2009-04-02 Ricoh Co Ltd 情報処理装置
JP5441487B2 (ja) * 2009-04-27 2014-03-12 キヤノン株式会社 画像処理装置及びその制御方法
JP5589479B2 (ja) * 2010-03-25 2014-09-17 富士ゼロックス株式会社 データ処理装置

Also Published As

Publication number Publication date
JP2017097478A (ja) 2017-06-01

Similar Documents

Publication Publication Date Title
US8543955B1 (en) Apparatus and methods for time-multiplex field-programmable gate arrays
US8719550B2 (en) Reconfigurable processing system including synchronized postprocessing
US11171652B2 (en) Method and apparatus for implementing configurable streaming networks
TWI827792B (zh) 多路徑神經網路、資源配置的方法及多路徑神經網路分析器
EP4235421A2 (en) Controlling operation of a gpu
US10262096B2 (en) Component placement with repacking for programmable logic devices
US8522185B1 (en) Method for placement and routing of a circuit design
JP6485335B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP5798378B2 (ja) 装置、処理方法、およびプログラム
US10860775B1 (en) Clock pin to clock tap assignment based on circuit device connectivity
US20100228958A1 (en) Information processing apparatus, method for controlling information processing apparatus and computer readable medium
US9692688B2 (en) Delay specific routings for programmable logic devices
US10671429B2 (en) Circuit assignment within reconfigurable device based on predicted shortest processing completion time
US10664561B1 (en) Automatic pipelining of memory circuits
JP2003150657A (ja) 高位合成方法および高位合成装置
US10606972B2 (en) Method, design program, and design apparatus of a high level synthesis process of a circuit
US11657197B2 (en) Support system and computer readable medium
US9348619B1 (en) Interactive datasheet system
US11030377B1 (en) Routing based on pin placement within routing blockage
JP5832311B2 (ja) 再構成デバイス、処理割当て方法及びプログラム
JP5907607B2 (ja) 処理配置方法及びプログラム
US10706201B1 (en) Circuit design routing using multi-panel track assignment
US10579767B1 (en) Systems and methods for routing a clock net with multiple layer ranges
JP2008198003A (ja) アレイ型プロセッサ
WO2011155622A1 (ja) 回路合成装置、方法、及び、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180706

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181220

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190204

R150 Certificate of patent or registration of utility model

Ref document number: 6485335

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150