JP6638362B2 - 演算処理装置、演算処理システムおよび演算処理方法 - Google Patents

演算処理装置、演算処理システムおよび演算処理方法 Download PDF

Info

Publication number
JP6638362B2
JP6638362B2 JP2015241788A JP2015241788A JP6638362B2 JP 6638362 B2 JP6638362 B2 JP 6638362B2 JP 2015241788 A JP2015241788 A JP 2015241788A JP 2015241788 A JP2015241788 A JP 2015241788A JP 6638362 B2 JP6638362 B2 JP 6638362B2
Authority
JP
Japan
Prior art keywords
arithmetic
circuit
area
arithmetic circuit
processing
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
JP2015241788A
Other languages
English (en)
Other versions
JP2017107465A (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 JP2015241788A priority Critical patent/JP6638362B2/ja
Priority to US15/289,410 priority patent/US10319436B2/en
Publication of JP2017107465A publication Critical patent/JP2017107465A/ja
Application granted granted Critical
Publication of JP6638362B2 publication Critical patent/JP6638362B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Stored Programmes (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Microcomputers (AREA)

Description

本発明は、演算処理装置、演算処理システムおよび演算処理方法に関する。
近年、データセンターにおけるデータ処理の高速化や低電力化を目的として、CPU(Central Processing Unit)とFPGA(Field Programmable Gate Array)とをプロセッサとして混載した演算処理システムが実現されている。
FPGAは、プログラミングすることができる集積回路(LSI:Large Scale Integration)であり、上述の如き演算処理システムにおいて、アルゴリズムの修正、拡張が可能なハードウェアという位置づけで用いられる。
特開平9−26870号公報 特開2006−236106号公報
このような従来の演算処理システムにおいては、FPGAを1種類のタスクの実行に使用しており、有効に活用できていない。
1つの側面では、本発明は、演算処理装置の処理性能を向上させることを目的とする。
このため、この演算処理装置は、内部の回路構成を任意に変更可能なプログラマブル集積回路を制御する演算処理装置であって、前記プログラマブル集積回路が、同一形状を有する複数の第1の領域と、前記第1の領域の間に形成された複数の第2の領域とを備え、前記プログラマブル集積回路によって実行される演算要求を認識する認識部と、前記複数の第1の領域および前記複数の第2の領域の中から、前記演算要求にかかる処理を実行させる演算回路の構成に用いる第1の領域および第2の領域を選択する選択部と、選択された前記第1の領域および第2の領域を演算処理部として機能させることで演算回路を生成する演算回路生成部と、前記演算回路生成部によって生成された前記演算回路に対して、前記演算要求にかかる処理を実行させる演算制御部と、前記演算回路による前記処理の終了後に、前記演算回路に含まれる前記第2の領域を通信路として機能させる接続回路生成部とを備える。
一実施形態によれば、演算処理装置の処理性能を向上させることができる。
第1実施形態の一例としての演算処理装置のハードウェア構成を示す図である。 第1実施形態の一例としての演算処理装置に備えられるFPGAを説明するための図である。 第1実施形態の一例としての演算処理装置において用いられる演算情報のデータ構造を例示する図である。 第1実施形態の一例としての演算処理装置におけるFPGAに形成される演算回路を説明するための図である。 第1実施形態の一例としての演算処理装置において用いられるFPGA管理情報のデータ構造を例示する図である。 第1実施形態の一例としての演算処理装置において用いられる実行中処理情報のデータ構造を例示する図である。 第1実施形態の一例としての演算処理装置におけるFPGAの初期化手法を例示する図である。 第1実施形態の一例としての演算処理装置における実行中処理情報を例示する図である。 第1実施形態の一例としての演算処理装置の機能構成を示す図である。 第1実施形態の一例としての演算処理装置における演算回路生成部の機能を説明するための図である。 第1実施形態の一例としての演算処理装置における接続回路生成部の機能を説明するための図である。 第1実施形態の一例としての演算処理装置におけるFPGAへの演算回路の形成方法を説明するための図である。 第1実施形態の一例としての演算処理装置における演算要求に対する処理の概要を説明するためのフローチャートである。 第1実施形態の一例としての演算処理装置における演算要求に対する処理の詳細を説明するためのフローチャートである。 第1実施形態の一例としての演算処理装置における演算要求に対する処理の詳細を説明するためのフローチャートである。 第1実施形態の一例としての演算処理装置における演算要求に対する処理の詳細を説明するためのフローチャートである。 第1実施形態の一例としての演算処理装置における演算要求に対する処理の詳細を説明するためのフローチャートである。 第1実施形態の一例としての演算処理装置における演算要求に対する処理の詳細を説明するためのフローチャートである。 第1実施形態の一例としての演算処理装置における演算要求に対する処理の詳細を説明するためのフローチャートである。 第2実施形態の一例としての演算処理装置におけるFPGAへの演算回路の形成方法を説明するための図である。 第2実施形態の一例としての演算処理装置における接続回路生成部による通信網復元処理の概要を説明するためのフローチャートである。 第2実施形態の一例としての演算処理装置における演算要求に対する処理の詳細を説明するためのフローチャートである。 第2実施形態の一例としての演算処理装置における演算要求に対する処理の詳細を説明するためのフローチャートである。 第1実施形態の変形例としての演算処理装置における演算要求に対する処理の概要を説明するフローチャートである。
以下、図面を参照して本演算処理装置、演算処理システムおよび演算処理方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形(実施形態及び各変形例を組み合わせる等)して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
(A)第1実施形態
(A−1)ハードウェア構成
図1は第1実施形態の一例としての演算処理装置1のハードウェア構成を示す図である。
演算処理装置1は、例えばサーバ機能を備えたコンピュータ(情報処理装置)であり、図1に示すように、プロセッサ11とFPGA19とを備え、これらの処理装置(処理部)を用いて演算等の情報処理を実行する。
まず、図1を参照しながら、本第1実施形態の演算処理装置1のハードウェア構成について説明する。
演算処理装置1は、例えば、プロセッサ11,RAM(Random Access Memory)12,HDD(Hard Disk Drive)13,グラフィック処理装置14,入力インタフェース15,光学ドライブ装置16,機器接続インタフェース17,ネットワークインタフェース18およびFPGA19を構成要素として有する。これらの構成要素11〜19は、バス20を介して相互に通信可能に構成される。
プロセッサ11は、演算処理装置1全体を制御する。プロセッサ11は、マルチプロセッサであってもよい。プロセッサ11は、例えばCPU(Central Processing Unit),MPU(Micro Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device)のいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,DSP,ASIC,PLDのうちの2種類以上の要素の組み合わせであってもよい。以下、プロセッサ11がCPUである例について示すものとし、プロセッサ11をCPU11と表す。
RAM(記憶部)12は、演算処理装置1の主記憶装置として使用される。RAM12には、プロセッサ11に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM12には、プロセッサ11による処理に必要な各種データが格納される。アプリケーションプログラムには、コンピュータである演算処理装置1によって本第1実施形態の演算処理機能を実現するためにCPU11によって実行される演算処理プログラムが含まれてもよい。
また、RAM12には、後述の如く、FPGA19に演算回路を形成するための構成情報(部分構成情報)がHDD13等から適宜読み出されて格納される。
HDD(記憶部)13は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行なう。HDD13は、演算処理装置1の補助記憶装置として使用される。HDD13には、OSプログラム,アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、フラッシュメモリ等の半導体記憶装置(SSD:Solid State Drive)を使用することもできる。
グラフィック処理装置14には、モニタ14aが接続されている。グラフィック処理装置14は、プロセッサ11からの命令に従って、画像をモニタ14aの画面に表示させる。モニタ14aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置等が挙げられる。
入力インタフェース15には、キーボード15aおよびマウス15bが接続されている。入力インタフェース15は、キーボード15aやマウス15bから送られてくる信号をCPU11に送信する。なお、マウス15bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル,タブレット,タッチパッド,トラックボール等が挙げられる。
光学ドライブ装置16は、レーザ光等を利用して、光ディスク16aに記録されたデータの読み取りを行なう。光ディスク16aは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスク16aには、DVD(Digital Versatile Disc),DVD−RAM,CD−ROM(Compact Disc Read Only Memory),CD−R(Recordable)/RW(ReWritable)等が挙げられる。
機器接続インタフェース17は、演算処理装置1に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース17には、メモリ装置17aやメモリリーダライタ17bを接続することができる。メモリ装置17aは、機器接続インタフェース17との通信機能を搭載した非一時的な記録媒体、例えばUSB(Universal Serial Bus)メモリである。メモリリーダライタ17bは、メモリカード17cへのデータの書き込み、またはメモリカード17cからのデータの読み出しを行なう。メモリカード17cは、カード型の非一時的な記録媒体である。
ネットワークインタフェース18は、図示しないネットワークに接続される。ネットワークインタフェース18は、ネットワークを介して、他のコンピュータまたは通信機器との間でデータの送受信を行なう。
FPGA19は、プログラミングすることができるLSI(プログラマブル集積回路)である。FPGA19は、演算回路をNoC(Network On Chip)によってFPGA外部と接続するアーキテクチャを有する。演算回路とNoCは、ともにプログラマブルな論理回路上に構築されるものであり、製造時に作りこまれ変更不可能なNoCを持つアーキテクチャではない。
図2は第1実施形態の一例としての演算処理装置1に備えられるFPGA19を説明するための図である。
FPGA19は、図2に示すように、第1共用領域31,第2共用領域32および演算回路領域33を、それぞれ複数備える。
演算回路領域33は、演算処理を実行させるための演算回路として用いられる領域である。FPGA19において備えられる複数の演算回路領域33は互いに同一な矩形形状を有する。本第1実施形態においては、各演算回路領域33は正方形状を有する。
これらの演算回路領域33は、図2に示すように、FPGA19において上下左右方向のそれぞれの方向において等間隔に配置されている。すなわち、複数の演算回路領域33はFPGA19においてマトリクス状に配置されている。すなわち、FPGA19においては、演算回路領域33がグリッド単位配置されている。
各演算回路領域33は、後述するCPU11により演算回路を構成する構成情報(演算回路構成情報)が設定されることにより、演算回路として機能する。
従って、演算回路領域33は、FPGA19を分割して形成された領域であって、内部の回路を再構成可能な同一形状を有する複数の第1の領域(演算回路配置領域)に相当する。以下、演算回路用領域33を演算回路として機能させるための構成情報(演算回路構成情報)を、第1の部分構成情報という場合がある。
また、FPGA19において、隣り合う演算回路領域33間の隙間は、第1共用領域31を構成する。すなわち、第1共用領域31は、FPGA19において演算回路領域33を縦方向および横方向に等間隔に区画する格子状に配置されている。
さらに、格子状に配列された第1共用領域31の各交点部分には、第2共用領域32が配置されている。
第1共用領域31は、CPU11により配線回路を構成する構成情報(配線回路構成情報)が設定されることにより配線領域(接続回路)として機能する。以下、配線回路を構成する構成情報が設定されたことにより配線領域として機能している第1共用領域31を配線31という場合がある。
配線31は、演算回路領域33と他の要素 とをアクセス可能に接続するものであり、例えば、演算回路領域33に対して、CPU11やRAM12等を接続する。なお、配線31が演算回路領域33に接続する対象はこれらのCPU11やRAM12に限定されるものではない。例えば、FPGA19を備えるボードを汎用サーバに搭載する場合には、演算回路領域33に対して、当該ボード上に搭載されたRAM12の他、イーサネット(登録商標)モジュール等種々の要素が多岐にわたって接続される。以下、演算回路領域33が配線31によりCPU11に接続される例について説明する。
また、以下、配線31のうち、縦方向に沿って形成されたものを縦配線31bといい、横方向に沿って形成されたものを横配線31aという場合がある。
第2共用領域32は、CPU11によりルータ回路を構成する構成情報(ルータ回路構成情報)が設定されることによりルータとして機能する。以下、ルータ回路を構成する構成情報が設定されたことによりルータとして機能している第2共用領域32をルータ32という場合がある。
ルータ32は、演算回路領域33をCPU11とアクセス可能に接続するものである。本第1実施形態においては、演算回路領域33は、当該演算回路領域33の左上隅に位置するルータ32を介して配線31に接続される。
そして、FPGA19において、1つ以上の演算回路領域33等を用いて形成された演算回路は、配線31およびルータ32を連結して形成された接続回路(通信網)を介して、外部インタフェース(I/F)191 に接続され、バス20を介してCPU11に接続される。
外部I/F191は、FPGA19において外部との通信を行なうためのインタフェース回路であり、FPGA19に形成された演算回路は、この外部I/F191を介して、FPGA19の外部(例えば、CPU11)と通信を行なう。
第1共用領域31および第2共用領域32は、演算回路領域33とCPU11とを接続する接続回路(通信網)として機能する。以下、第1共用領域31および第2共用領域32を接続回路として機能させるための構成情報を、接続回路構成情報という場合がある。
さらに、第1共用領域31および第2共用領域32は、CPU11により演算回路を構成する構成情報(演算回路構成情報)が設定されることにより、演算回路領域33と同様に演算回路としても機能する。すなわち、FPGA19は、非固定的なNoC構成を有する。
従って、第1共用領域31および第2共用領域32は、接続回路として機能する一方で、演算回路としてもそれぞれ機能する。以下、第1共用領域31および第2共用領域32を演算回路として機能させるための構成情報(演算回路構成情報)を、第2の部分構成情報という場合がある。
そして、第1共用領域31および第2共用領域32は、それぞれ、FPGA19を分割して形成された領域であって、内部の回路を再構成可能な同一形状を有する複数の第2の領域(接続回路配置領域)に相当する。
以下、第1共用領域31,第2共用領域32および演算回路領域33をまとめて、部分領域30という場合がある。
さらに、以下、一つの演算回路を構成する複数の部分領域30(第1共用領域31,第2共用領域32および演算回路領域33)の集合を演算回路用リソース群という場合がある。また、以下、例えばアルファベット(A,B,・・・)を演算種別の識別子として用い、例えば、演算種別Aを実現する演算回路を演算回路Aと表す。そして、演算回路Aを構成する複数の部分領域30を演算回路用リソース群Aという場合がある。
以上のようなハードウェア構成を有する演算処理装置(コンピュータ)1によって、本第1実施形態の演算処理機能を実現することができる。
なお、演算処理装置1は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム(演算処理プログラム等)を実行することにより、本第1実施形態の演算処理機能を実現する。演算処理装置1に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、演算処理装置1に実行させるプログラムをHDD13に格納しておくことができる。CPU11は、HDD13内のプログラムの少なくとも一部をRAM12にロードし、ロードしたプログラムを実行する。
また、演算処理装置1(CPU11)に実行させるプログラムを、光ディスク16a,メモリ装置17a,メモリカード17c等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ11からの制御により、HDD13にインストールされた後、実行可能になる。また、プロセッサ11が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
(A−2)各種情報等
次に、本演算処理装置1において用いられる各種情報等について説明する。
以下においては、データ構造やコマンド等をC言語に準じた形式を用いて記述する例を示す。ただし、これに限定されるものではなく、C言語以外のプログラミング言語に準じた形式で表してもよく種々変形して実施することができる。
図3は第1実施形態の一例としての演算処理装置1において用いられる演算情報のデータ構造を例示する図であり、FPGA19で実行可能な演算に関する情報およびFPGA19の部分構成情報のデータ構造を示す。
例えば、config_ptr_t はRAM12に格納された各構成情報(部分構成情報)の格納場所を示すポインタである。
area_type_routerはルータ32を実現するための構成情報である。また、area_type_path_horiは横配線31aを実現するための構成情報であり、area_type_path_vert は縦配線31bを実現するための構成情報である。
以下、これらのルータ32,縦配線31bおよび横配線31aを実現するための各構成情報を通信網構成情報という場合がある。
noc_config_data[3] は接続回路を実現するための構成情報であり、上述したルータ32,横配線31aおよび縦配線31bのそれぞれに対応した構成情報へのポインタを列挙することにより構成されるポインタ配列である。
このように、本演算処理装置1においては、FPGA19の回路構成情報が、横配線31a,縦配線31b,ルータ32をそれぞれ構成する複数のモジュール(部分構成情報)に分割して構成されている。そして、これらの部分構成情報は、各部分領域30に対して個別に設定することで、部分的に(部分領域30毎に)回路設定を行なうことができる。
calc_type_info_tは演算についての情報(演算情報122)であって、FPGA19において当該演算を実現するために使用する部分領域30の数を示す。calc_type_info_tは、calc_sizexおよびcalc_sizeyを備える。
calc_sizexは、当該演算に使用する部分領域30の横方向(x方向)の数(列数)を示し、calc_sizeyは、当該演算に使用する部分領域30の縦方向(y方向)の数(行数)を示す。
config_data[calc_sizex][calc_sizey]は、演算回路を構成する構成情報へのポインタの2次元配列であり、上述したcalc_sizex/yを用いて表す。
例えば、後述する図4の符号(2)に示す例において、演算種別Bの演算回路は、“config_data[1][3]”であり、これは、この演算回路がFPGA19において、横方向に1列、縦方向に3行の部分領域30を用いて形成されることを示す。
また、演算配列のindexが、calc_type_idとなる。calc_type_info[演算種別数]は、演算種別の数を示す、本第1実施形態においては、演算種別数は2(演算種別A,B)である。
図4は第1実施形態の一例としての演算処理装置1におけるFPGA19に形成される演算回路を説明するための図である。
図4中において、符号(1)は、演算種別Aの演算要求を処理するための演算回路を模式的に示す。また、符号(2)は、演算種別Bの演算要求を処理するための演算回路を模式的に示す。
以下、演算種別Aの演算要求を処理するための演算回路を演算回路Aといい、演算種別Bの演算要求を処理するための演算回路を演算回路Bという。
なお、FPGA19に配置された、実行可能な状態にある演算回路を演算インスタンスもしくは単にインスタンスという場合がある。また、以下、FPGA19に演算回路を形成することを、演算回路をロードするという場合がある。
また、図4中において、符号(3)は、演算回路Bを実現するための構成情報(部分構成情報)がRAM12に格納された状態を示すメモリマップである。
RAM12における所定の領域には、演算回路を形成するための構成情報が格納されており、FPGA19によって実現される演算処理の種類に応じて複数種類の構成情報が格納されている。
前述の如く、FPGA19に形成される演算回路には、第1共用領域31,第2共用領域32および演算回路領域33が含まれる。従って、RAM12には、これらの第1共用領域31,第2共用領域32および演算回路領域33の各領域を設定するための別々の構成情報(部分構成情報)がそれぞれ格納されている。
図4の符号(3)に示すRAM12のメモリマップにおいては、演算種別Bの演算回路を構成するための3つの部分領域30(図4の符号(2)参照)に対応する3つの部分構成情報が格納され、各格納位置がポインタ(ptr00,ptr01,ptr02)によって示されている。
また、これらのポインタが、config_data[1][3]に格納されることで、演算種別Bの演算回路を構成する部分構成情報として、演算種別Bと関連づけられている例が示されている。
図5は第1実施形態の一例としての演算処理装置1において用いられるFPGA管理情報121のデータ構造を例示する図である。
FPGA管理情報121は、FPGA19上の各部分領域30が、どのように用いられているかを示す情報であり、図5においては、FPGA管理情報121をarea_infoとして記述した例を示す。
この図5に示す例において、area_type_routerは、ルータ32を表し、“0”によって選択される。area_type_path_hori は、水平の配線領域(横配線31a)を表し、“1”によって選択される。area_type_path_vert は、垂直の配線領域(縦配線31b)を表し、“2”によって選択される。area_type_calcは、演算用領域(演算回路領域33)を表し、“3”によって選択される。
また、area_info_tは1つの部分領域に関する情報 であって、area_type ,used,calc_type_id,calc_posxおよびcalc_posyを備える。
area_type は、領域の種別を示す。このarea_typeの値は、初期化後に変化することはない。usedは、領域が演算回路として使われているかを示すフラグである。また、calc_type_idは、領域上にある演算種別を識別するID(identification)を示す。なお、図4に示す例において、演算種別Aの演算のIDは“0”であり、演算種別Bの演算のIDは“1”である。
また、calc_posxおよびcalc_posyは、演算内のどの領域に使用中かを示すものであり、calc_posxはx方向における位置を、calc_posyはy方向における位置を、それぞれ示す。
area_info[FPGA_SIZE_X][FPGA_SIZE_Y]は、FPGA19の全ての部分回路について、どのように用いられているかを管理する。FPGA_SIZE_X、FPGA_SIZE_YはそれぞれFPGAの横方向と縦方向の大きさを部分領域の個数で表したものである。
図6は第1実施形態の一例としての演算処理装置1において用いられる実行中処理情報123のデータ構造を例示する図である。
演算情報123は、FPGA19上における演算回路(演算インスタンス)についての情報である。図6においては、1つの演算回路(演算インスタンス)に対応する演算情報のデータ構造をcalc_instance_info_tとして記述した例を示す。
この図6に示す例において、calc_instance_info_tは、calc_type_id ,posx およびposy を備える。
calc_type_idは、演算種別の識別情報(ID)であり、演算種別ごとに一意の値が設定される。
posxは、演算インスタンスの基準位置(本第1実施形態においては左上領域)が配置される部分領域30のx座標を示す。posyは、演算インスタンスの基準位置(本第1実施形態においては左上領域)が配置される部分領域30のy座標を示す。
また、本演算処理装置1においては、executing_calc_instance_info_list(図8参照)を用いて、不定数のcalc_instance_info_tのインスタンスを管理する。なお、このexecuting_calc_instance_info_list は、例えば、C++の標準テンプレートライブラリ (STL:Standard Template Library)のlistやvectorのイメージである。
図7は第1実施形態の一例としての演算処理装置1におけるFPGA19の初期化手法を例示する図であり、C言語に準じたプログラムの形式で表したものである。
システムの起動時にはFPGA19には何も書き込まれていない。そこで、演算回路生成部112は、初期化処理において、area_infoに対して接続回路(配線31,ルータ32)および演算回路領域33を設定する。
図7に示す例においては、各部分領域30に対して、ルータ32,横配線31a,縦配線31bおよび演算回路用領域33のいずれかが設定される(符号P1参照)。その後、ルータ32に対応する部分領域30にルータ32を構成するための構成情報noc_config_info[0]の書き込みが行なわれる。また、同様に、横配線31aに対応する部分領域30に横配線31aを構成するための構成情報noc_config_info[1]の書き込みが、また、縦配線31bに対応する部分領域30に縦配線31bを構成するための構成情報noc_config_info[2]の書き込みが、それぞれ行なわれる(符号P2参照)。
また、各部分領域30に対して使用されていないことを示すフラグの設定が行なわれる(符号P3参照)。また、executing_calc_instance_info_listが要素なしの状態にされる(符号P4参照)。
以上の処理により、FPGA19が初期化される。この図7に示したFPGA19の初期化は、例えば、後述する演算回路生成部112によって実施される。
図8は第1実施形態の一例としての演算処理装置1における実行中処理情報123を例示する図である。
この図8中において、符号(2)はFPGA19に設定された複数の演算インスタンスを例示する。また、符号(1)は、符号(2)に示した実行中の演算インスタンスに関する情報についてのexecuting_calc_instance_info_listの詳細を例示する。
図8に示す例においては、符号(2)に示すように、FPGA19には3つの実行集の演算インスタンスA1,B1,A2と、演算実行後に他の演算回路等による上書きがされずに残っている領域B0とが形成されている。
なお、演算インスタンスA1,A2は演算種別Aについてのものであり、演算インスタンスB1および領域B0は、演算種別Bについてのものである。また、符号(1)に示すように、executing_calc_instance_info_listには、実行中の演算インスタンスのみが登録される。従って、executing_calc_instance_info_listには、演算実行後であって上書きされずに残っている演算処理にかかる領域B0は登録されていない。
また、executing_calc_instance_info_listには、実行中の各演算インスタンスについて、calc_instance_info_list[n].calc_type_id,calc_instance_info_list[n].posx およびcalc_instance_info_list[n].posyが登録されている。(n=0, 1, 2)
すなわち、このexecuting_calc_instance_info_list(実行中処理情報123)を参照することで、FPGA19における、実行中の演算インスタンスの位置を把握することができる。
(A−3)機能構成
次に、図9を参照しながら、本第1実施形態の演算処理機能を有する演算処理装置1の機能構成について説明する。図9は第1実施形態の一例としての演算処理装置1の機能構成を示す図である。
演算処理装置1は、FPGA19の回路構成を書き換え、また、FPGA19に演算処理を割り当て、さらには演算を実行する、演算処理機能を果たす。
このため、演算処理装置1は、図9に示すように、少なくとも演算認識部110,選択部111,演算回路生成部112,演算制御部113,接続回路生成部114,演算実行部115,FPGA状態管理部116および演算情報管理部117としての機能を有している。
演算認識部110は、FPGA19に処理させるべき演算要求の発生を認識する。本演算処理装置1においては、FPGA19に実行させる2種類以上(例えば、演算種別A,B)の演算が予め決定されている。演算認識部110は、CPU11における何らかの処理の実行中に、FPGA19に処理させるべき演算要求が発生した場合に、これを認識する。
選択部111は、FPGA19によって処理されるべき演算要求の発生が演算認識部110によって認識されると、FPGA19中において演算要求を割り当てる領域を選択する。
例えば、選択部111は、FPGA19において、演算要求に対応する演算回路であって演算回路領域33が使用可能な状態であるものが存在するかを確認する。FPGA19に、演算要求に対応する演算回路であって、演算回路領域33が使用可能であり、 且つ不使用状態(他の演算処理を実行中ではない状態)のものが存在する場合には、選択部111は、この演算回路領域33を含む演算回路用リソース群を、演算要求を割り当てる領域として選択する。
また、選択部111は、FPGA19において、演算要求に対応する演算回路であって演算回路領域33が使用可能な状態であるものが存在しない場合であっても、演算要求に対応する演算回路を割り当て可能な領域が存在するかを確認する。選択部111は、FPGA19において、実行中の他の演算要求にかかる演算回路の領域と重複することなく、演算要求に対応する演算回路を形成することができるかを検討する。検討の結果、実行中の他の演算要求にかかる演算回路の領域と重複することなく、演算要求に対応する演算回路を形成することができる場合には、選択部111は、その演算回路領域33を含む演算回路用リソース群を、演算回路を形成可能な領域として選択する。
演算回路生成部112は、選択部111によって選択された領域に演算要求に対応する演算回路を形成する。
図10は第1実施形態の一例としての演算処理装置1における演算回路生成部112の機能を説明するための図である。この図10中において、符号(1)は、FPGA19に演算回路を形成する前の状態を示し、選択部111が、FPGA19に演算要求に対応する演算回路であって、演算回路領域33が使用可能であり、且つ不使用状態(演算を実行中ではない状態)ものが存在すると判断した状態を示す。
後述の如く、接続回路生成部114は、演算回路による演算処理の終了後に、演算回路として機能していた第1共用領域31および第2共用領域32に対して、配線回路を構成する構成情報やルータ回路を構成する構成情報を設定することにより、接続回路として機能させる制御を行なう。すなわち、接続回路生成部114は、演算処理の終了後の演算回路において、接続回路を復元(形成)させる制御を行なう。
演算回路生成部112は、このように接続回路 が復元されただけで、演算回路用領域33が他の演算回路により書き換えられていない演算回路(図10の符号(1)参照)に対して、接続回路に相当する部分領域30に対してだけ演算回路を構成する構成情報を設定する。これにより、図10の符号(2)に示すように、その演算回路を再現させる。
演算制御部113は、FPGA19に形成された演算回路に演算要求にかかる処理を実行させる。なお、FPGA19に演算処理を実行させる手法は既知であり、その詳細な説明は省略する。
FPGA19によって実行された演算処理の結果は、CPU11に受け渡されて使用される。
FPGA状態管理部116は、FPGA19の状態を管理する。このFPGA状態管理部116は、FPGA19上の各部分領域30が、どのように用いられているかをFPGA管理情報121を用いて管理する。
演算情報管理部117は、演算情報122を管理する。例えば、演算情報管理部117は、前述したcalc_type_infoやcalc_instance_infoを用いて、演算に関する情報を管理する。
接続回路生成部114は、演算処理の終了後に、演算回路として機能していた部分領域30のうち、第1共用領域31および第2共用領域32に対して、配線回路を構成する構成情報やルータ回路を構成する構成情報(通信網構成情報)を設定することにより、接続回路として機能させる制御を行なう。
図11は第1実施形態の一例としての演算処理装置1における接続回路生成部114の機能を説明するための図である。この図11中において、符号(1)はFPGA19に演算回路が形成され、演算処理を実行中の状態を例示する。また、符号(2)は演算処理が完了した後の状態を示す。
接続回路生成部114は、図11の符号(2)に示すように、演算処理の実行が終了した演算回路において、第1共用領域31および第2共用領域32に対して、配線回路を構成する構成情報を設定することにより配線領域として機能させる。
接続回路生成部114は、例えば演算認識部110が次の演算要求の発生を認識する前に第1共用領域31および第2共用領域32を配線領域にすることが望ましい。従って、接続回路生成部114は、例えば、演算回路における演算処理の実行の終了直後に、第1共用領域31および第2共用領域32を配線領域にすることが望ましい。
演算実行部115は、演算要求にかかる演算回路をFPGA19に割り当てることができなかった場合、すなわち、選択部111が演算回路を設定する領域を選択できなかった場合に、特定回路が行なう処理と同一処理が既述された、CPU11が実行可能なプログラムを実行する。これにより、FPGA19に特定回路が構成されなくとも、特定回路が行なう処理をCPU11によって実行される。
(A−4)動作
先ず、上述の如く構成された第1実施形態の一例としての演算処理装置1におけるFPGA19への演算回路の形成方法を、図12を用いて説明する。
初期状態においては、FPGA19に演算回路が設定されていない(符号(1)参照)。演算認識部110が演算Aの実行要求が認識すると、選択部111が、この演算Aを処理(実行)させることが可能な演算回路AがFPGA19上に不使用の状態で存在するかを確認する。
本例においては、FPGA19上に演算回路Aが存在しないので、選択部111は、FPGA19における空き領域を、演算回路を形成可能な領域として選択する。
演算回路生成部112は、選択部111によって選択された領域に演算要求に対応する演算回路Aを形成する(符号(2)参照)。演算回路Aは、FPGA19上において、隣り合う複数の部分領域30(第1共用領域31,第2共用領域32および演算回路用領域33)を用いて構成される。
ここで、FPGA19上に演算回路Aが形成された状態において、演算回路Aに隣接する位置に演算回路Cが形成された場合について考える。この演算回路Cの左上に位置するルータ32と外部I/F191との間が、演算回路Aを迂回するように、演算回路Aの外周に沿う配線経路で接続される。
演算回路Aによる処理が終了すると、接続回路生成部114は、演算回路として機能していた第1共用領域31および第2共用領域32に対して、配線回路を構成する構成情報やルータ回路を構成する構成情報(通信網構成情報)を設定することにより、接続回路(NoC)を復活させる(符号(3)参照)。
これにより、演算回路Aに隣接する位置に形成された演算回路Cは、その左上に位置するルータ32と外部I/F191との間が、演算回路Aの領域内に形成された接続回路を介して接続される。すなわち、演算回路Cと外部I/F191とが最短経路で接続される。
その後、演算認識部110が、再度、演算Aの実行要求を受信すると、演算回路生成部112は、演算回路において、接続回路となっている領域(配線回路部分)に演算回路を構成する構成情報を設定する。これにより、演算回路生成部112は演算回路Aを再現させる(符号(4)参照)。
また、これにより、演算回路Aに隣接する位置に形成された演算回路Cの左上に位置するルータ32と外部I/F191との間が、再度、演算回路Aを迂回するように、演算回路Aの外周に沿う配線経路で接続される。
この演算回路Aによる処理が終了すると、接続回路生成部114は、演算回路として機能していた第1共用領域31および第2共用領域32に対して、配線回路を構成する構成情報やルータ回路を構成する構成情報(通信網構成情報)を設定することにより、接続回路(NoC)を復活させる(符号(5)参照)。
これにより、演算回路Aに隣接する位置に形成された演算回路Cは、その左上に位置するルータ32と外部I/F191との間が、演算回路Aの領域内に形成された接続回路を介して接続される。すなわち、演算回路Cと外部I/F191とが最短経路で接続される。
その後、他の演算要求が行なわれ、演算回路Aの構成に用いられていた一部の演算回路用領域33は、他の演算回路によって書き換えられたものとする(符号(6)参照)。
この状態において、演算認識部110が、再度、演算Aの実行要求を受信すると、演算回路生成部112は、演算回路Aを構成する全領域30に対して、演算回路Aを構成する構成情報を設定する。これにより、演算回路生成部112は演算回路Aを再現させる(符号(7)参照)。
(A−4−1)演算処理の概要
次に、上述の如く構成された第1実施形態の一例としての演算処理装置1における演算要求に対する処理の概要を、図13に示すフローチャート(ステップA1〜A10)に従って説明する。
FPGA19に処理させるべき演算要求(以下、演算要求Aとする)の発生を演算認識部110が認識すると、ステップA1において、選択部111は、FPGA19において、その全ての演算回路用領域33(演算回路用リソース群)が他の演算回路によって書き換えられていない演算回路の演算回路用リソース群(A)があるかを確認する。
確認の結果、該当する演算回路の演算回路用リソース群AがFPGA19上にある場合には(ステップA1のYesルート参照)、ステップA2に移行する。
本演算処理装置1においては、演算回路において演算処理が終了した時点で、演算回路を構成していた部分領域30のうち第1共用領域31および第2共用領域32が、接続回路生成部114によって接続回路(配線領域)に戻されている。ステップA2において、接続回路生成部114が、FPGA19上における演算回路の演算回路用リソース群Aのうち接続回路部分だけに演算回路構成情報(第2の部分構成情報)を設定する。これにより、演算回路用リソース群Aを用いてFPGA19上に演算回路が再現される。
ステップA3において、演算制御部113は、FPGA19に再現された演算回路に演算要求にかかる処理を実行させる。
ステップA4において、接続回路生成部114は、FPGA19上における演算回路の演算回路用リソース群Aのうち配線回路部分だけに接続回路構成情報を設定する。これにより、演算回路を構成していた部分領域30のうち第1共用領域31および第2共用領域32が、接続回路生成部114によって接続回路(配線領域)に戻される。その後、処理を終了する。
一方、ステップA1における確認の結果、該当する演算回路の演算回路用リソース群AがFPGA19上にない場合には(ステップA1のNoルート参照)、ステップA5に移行する。
ステップA5において、選択部111は、FPGA19において、その全ての演算回路用領域33(演算回路用リソース群)を書き込み可能な、他の演算回路によって使用されていない演算回路用リソース群(B)があるかを確認する。
確認の結果、該当する演算回路の演算回路用リソース群BがFPGA19上にある場合には(ステップA5のYesルート参照)、ステップA6に移行する。
ステップA6において、演算回路生成部112が、FPGA19上における演算回路の演算回路用リソース群Bのうち演算回路用領域33に演算回路構成情報(第1の部分構成情報)を設定する。
ステップA7において、接続回路生成部114が、FPGA19上における演算回路の演算回路用リソース群Bのうち接続回路部分だけに演算回路構成情報(第2の部分構成情報)を設定する。これにより、演算回路用リソース群Bを用いてFPGA19上に演算回路が再現される。
ステップA8において、演算制御部113は、FPGA19に再現された演算回路に演算要求にかかる処理を実行させる。
ステップA9において、接続回路生成部114は、FPGA19上における演算回路の演算回路用リソース群Bのうち配線回路部分だけに接続回路構成情報を設定する。これにより、演算回路を構成していた部分領域30のうち第1共用領域31および第2共用領域32が、接続回路生成部114によって接続回路(配線領域)に戻される。その後、処理を終了する。
また、ステップA5における確認の結果、該当する演算回路の演算回路用リソース群BがFPGA19上にない場合には(ステップA5のNoルート参照)、当該演算要求をFPGA19で処理することができない。
そこで、ステップA10において、演算実行部115が、当該演算要求を処理する。その後、処理は終了する。
(A−4−2)演算要求に対する処理の詳細
次に、上述の如く構成された第1実施形態の一例としての演算処理装置1における演算要求に対する処理の詳細を、図14〜図19に示すフローチャートに従って説明する。
なお、図14はその演算要求に対する処理の全体の流れを説明するためのフローチャート(ステップB1〜B17)であり、引数として、演算要求にかかる演算種別Xが引数として用いられる。
図15および図16は、演算後不使用領域発見処理の詳細を示すフローチャートであり、図15はステップC1〜C8を、図16はステップC9〜C17を、それぞれ示す。
図17は演算構成情報書き込み処理の詳細を示すフローチャート(ステップD1〜D5)である。図18は通信網復元処理の詳細を示すフローチャート(ステップE1〜E5)である。図19は使用可能領域発見処理を示すフローチャート(ステップF1〜F13)である。
まず、図14のステップB1において、演算後不使用領域発見処理が行なわれる。演算後不使用領域発見処理は、演算後不使用領域を発見する処理であり、主に選択部111によって実行される。ここで、演算後不使用領域とは、演算要求にかかる演算回路の演算回路用領域33が維持された状態の領域(演算回路用リソース群)であり、実行中の他の演算処理に、使用されていない(不使用)領域である。なお、この演算後不使用領域発見処理の詳細は、図15および図16を用いて後述する。
演算後不使用領域発見処理を実行するに際して、引数として演算種別Xが用いられる。演算後不使用領域発見処理を実行することにより、戻り値としてbool Yおよび座標x,yが得られる。
なお、bool Yは、真か偽かを表す値であり、FPGA19上に演算回路を割り当て可能な不使用領域が発見された場合にtrueが設定され、発見出来なかった場合にfalseが設定される。また、座標x,yは、FPGA19上に演算回路を割り当て可能な不使用領域が発見された場合に、その位置を表す。
図14のステップB2において、ステップB1における戻り値Yがtrueであるか、すなわち、演算回路を割り当て可能な領域が発見されたかが確認される。
ステップB2における確認の結果、演算回路を割り当て可能な領域が発見された場合、すなわち、Y=trueである場合に(ステップB2のYesルート参照)、図14のステップB3に移行する。
ステップB3において、書き込み情報種別tとして通信網相当部分が設定される。ステップB4において、演算構成情報の書き込み処理が行なわれる。なお、この演算構成情報の書き込み処理の詳細は、図17を用いて後述する。また、この演算構成情報の書き込み処理を実行するに際して、引数として、演算種別X、座標x,yおよび書き込み情報種別tが用いられる。
その後、図14のステップB5において、executing_calc_instance_info_listに実行中の演算の情報として、calc_type_id=X,posx=x,posy=yの要素を追加する。
図14のステップB6において、2つ前のステップ、すなわち、ステップB4において書き込みを行なった情報で演算を実行する。
演算の終了後、ステップB7において、ステップB5でexecuting_calc_instance_info_listに追加した、calc_type_id=X,posx=x,posy=yの要素を削除する。
図14のステップB8において、通信網復元処理が行なわれる。なお、この通信網復元処理の詳細は、図17を用いて後述する。また、この通信網復元処理を実行するに際して、引数として演算種別Xおよび座標x,yが用いられる。その後処理を終了する。
一方、ステップB2における確認の結果、演算回路を割り当て可能な領域が発見されなかった場合、すなわち、Y=falseである場合に(ステップB2のNoルート参照)、図14のステップB9に移行する。
ステップB9においては、使用可能領域発見処理が行なわれる。この使用可能領域発見処理は、主に選択部111によって実行される。なお、この使用可能領域発見処理の詳細は、図19を用いて後述する。
なお、この使用可能領域発見処理を実行するに際して、引数として演算種別Xが用いられる。また、使用可能領域発見処理を実行することにより、戻り値としてbool Yおよび座標x,yが得られる。
図14のステップB10において、戻り値Yがtrueであるか、すなわち、演算回路を割り当て可能な領域が発見されたかが確認される。
ステップB10における確認の結果、演算回路を割り当て可能な領域が発見された場合、すなわち、Y=trueである場合に(ステップB10のYesルート参照)、図14のステップB11に移行する。
ステップB11において、書き込み情報種別tとして演算回路に含まれる部分領域30全体が設定される。ステップB12において、演算構成情報の書き込み処理が行なわれる。なお、この演算構成情報の書き込み処理の詳細は、図17を用いて後述する。また、この演算構成情報の書き込み処理を実行するに際して、引数として、演算種別X、座標x,yおよび書き込み情報種別tが用いられる。
その後、図14のステップB13において、executing_calc_instance_info_listに実行中の演算の情報として、calc_type_id=X,posx=x,posy=yの要素を追加する。
図14のステップB14において、2つ前のステップ、すなわち、ステップB12において書き込みを行なった情報で演算を実行する。
演算の終了後、図14のステップB15において、ステップB13でexecuting_calc_instance_info_listに追加した、calc_type_id=X,posx=x,posy=yの要素を削除する。
図14のステップB16において、通信網復元処理が行なわれる。なお、この通信網復元処理の詳細は、図17を用いて後述する。また、この通信網復元処理を実行するに際して、引数として演算種別Xおよび座標x,yが用いられる。その後処理を終了する。
また、ステップB10における確認の結果、演算回路を割り当て可能な領域が発見されなかった場合、すなわち、Y=falseである場合に(ステップB10のNoルート参照)、当該演算要求をCPU11において実行し(図14のステップB17)、処理を終了する。
(A−4−3)演算後不使用領域発見処理
次に、第1実施形態の一例としての演算処理装置1における演算後不使用領域発見処理を、図15および図16に示すフローチャート(ステップC1〜C17)に従って説明する。
図15のステップC1において、mx = FPGA_SIZE_X - calc_type_info[X].sizexおよびmy = FPGA_SIZE_Y - calc_type_info[x].sizeyを設定する。これにより、演算種別Xを実行するための演算回路として検証する演算回路用リソース群の左上位置として使われる領域を設定する。
図15のステップC2では、area_info内の、“area_type==area_type_calc且つ、0≦ax<mx && 0≦ay<my”の全ての要素に対して、ステップF8までの制御を繰り返し実施するループ処理を開始する。なお、ax,ayは、対象領域のarea_infoの配列添え字である。
図15のステップC3では、area_info[ax][ay].used ==1且つ、area_info[ax][ay].calc_type_id==X且つ、area_info[ax][ay].calc_posx==0且つ、area_info[ax][ay].calc_posy==0であるかを確認する。
すなわち、その演算回路領域33が、演算要求にかかる演算種別Xについて演算回路であり、その演算回路における左上隅の基準位置に相当する領域(0,0)であるかを確認する。
上記要件を満たさない場合には(ステップC3のNoルート参照)、ステップC16に移行する。
一方、上記要件が満たされる場合には(ステップC3のYesルート参照)、図15のステップC4において、変数NGにfalseが設定される。その後、図15のステップC5に移行する。
ステップC5では、演算種別X内の全部分領域30に対して、ステップC6,C7の制御を繰り返し実施するループ処理を開始する。
なお、x,yは、演算種別X内の領域の座標であり、それぞれ、0〜calc_type_info[X]/sizex-1、0〜calc_type_info[X]/sizey-1の範囲で変化する。
図15のステップC6において、選択部111は、対象演算種別(本例においては演算種別X)の演算回路に相当する領域(以下、対象領域という)内において、演算回路領域33が全て揃っているかをチェックする。
すなわち、条件(1)area_info[ax+x][ay+y].area_type!=area_type_calc、または、条件(2)area_info[ax+x][ay+y].used==1 且つ、area_info[ax+x][ay+y].calc_type_id==X且つ、area_info[ax+x][ay+y].calc_posx==x且つ、area_info[ax+x][ay+y].calc_posy==yのいずれかを満たすかを判断する。
ここで条件(1)は、対象領域内に含まれるに全ての部分領域30が演算回路用領域33であるかを確認する。
また、条件(2)は、対象領域内に含まれる各部分領域30が、演算種別Xの演算回路であり、なおかつ演算回路中における期待する位置の部分演算回路であるかを確認する。
ステップC6における確認の結果、条件(1),(2)のいずれも満たされない場合には(ステップC6のNoルート参照)、図15のステップC7において、変数NGにtrueを設定する。その後、図15のステップC8において、ステップC5に対応するループ端処理が実施される。ここで、演算種別X内の全部分領域30に対して、演算種別Xの演算回路の演算回路領域33が全て揃っているかの確認処理が完了すると、制御がステップC9に進む。
また、ステップC6における確認の結果、条件(1),(2)の少なくともいずれか一方が満たされた場合には(ステップC6のYesルート参照)、ステップC7をスキップしてステップC8に移行する。
図16のステップC9において、NGにtrueが設定されているかが確認される。NGにfalseが設定されている場合には(ステップC9のNoルート参照)、図16のステップC10に移行する。また、NGにtrueが設定されている場合には(ステップC9のYesルート参照)、図16のステップC14に移行する。
ステップC10では、execute_calc_instance_info_list中に登録されている全ての実行中の演算処理に対して、図16のステップC11〜C13の制御を繰り返し実施するループ処理を開始する。すなわち、見つけた領域が実行中の他の演算インスタンス(演算回路)で使用中でないかを確認する。
ステップC11では、i.calc_type_info==X 且つ、i.x_pos=ax且つ、i.y_pos=ayであるかを確認する。これにより、対象領域がexecute_calc_instance_info_listに登録されていないことを確認する。
確認の結果、対象領域がexecute_calc_instance_info_listに登録されている場合、すなわち、対象領域が実行中の他の演算インスタンスによって使用されている場合には(ステップ(C11のYesルート参照)、ステップC12に移行する。ステップC12においては、フラグNGにtrueを設定する。その後、ステップC13に移行する。
ステップC13では、ステップC10に対応するループ端処理が実施される。ここで、execute_calc_instance_info_list中に登録されている全ての実行中の演算処理についての処理が完了すると、制御がステップC14に進む。
一方、対象領域がexecute_calc_instance_info_listに登録されていない場合には(ステップC11のNoルート参照)、ステップC12をスキップしてステップC13に移行する。
図16のステップC14において、NGにtrueが設定されているかを確認する。NGにtrueが設定されていない場合、すなわち、NGにfalseが設定されている場合には(ステップC14のNoルート参照)、図16のステップC15に移行する。ステップC15においては、Y(bool Y)にtrueを設定するとともに、x=ax,y=ayを設定する。その後、処理を終了し、図14のフローチャートのステップB2に移行する。
すなわち、ステップC11における確認の結果、他の演算インスタンスによって使用されていない演算回路用リソース群が検出された場合には、早急に演算後不使用領域発見処理を終了するのである。
ステップC14における確認の結果、NGにtrueが設定されている場合には(ステップC14のYesルート参照)、図16のステップC16に移行する。ステップC16では、ステップC2に対応するループ端処理が実施される。ここで、FPGA19における全ての演算回路領域33についての処理が完了すると、制御が図16のステップC17に進む。
ステップC17においては、Y(bool Y)にfalseが設定される。その後、処理を終了し、図14のフローチャートのステップB2に移行する。
(A−4−4)演算構成情報書き込み処理
次に、第1実施形態の一例としての演算処理装置1における演算構成情報書き込み処理を、図17に示すフローチャート(ステップD1〜D5)に従って説明する。
図17のステップD1では、演算種別Xの演算回路内に含まれる全ての部分領域30に対して、ステップD4までの制御を繰り返し実施するループ処理を開始する。
なお、cx,cyは演算種別X内の領域の座標で、それぞれ0〜calc_type_info[X].sizex-1、0〜calc_type_info[x].sizey-1の範囲で変化する。
図17のステップD2では、area_infoを更新する。すなわち、area_info[x+cx][y+cy].usedにtrueを、area_info[x+cx][y+cy].calc_type_id にXを、area_info[x+cx][y+cy].calc_posx にcxを、area_info[x+cx][y+cy].calc_posx にcyを、それぞれ設定する。
図17のステップD3では、条件(1)t==全体、または、条件(2)area_info[x+cx][y+cy].area_typeがarea_type_calcでない、のいずれかを満たすかを判断する。
条件(1),(2)の少なくともいずれか一方が満たされる場合には(ステップD3のYesルート参照)、図17のステップD4に移行する。
ステップD4においては、area_info[x+cx][y+cy]に対応する位置に、calc_type_info.config_data[cx][cy]が書き込まれる。
また、条件(1),(2)のいずれも満たされない場合には(ステップD3のNoルート参照)、図17のステップD5に移行する。
図17のステップD5では、ステップD1に対応するループ端処理が実施される。演算回路内に含まれる全ての部分領域30に対しての処理が完了すると、本フローが終了し、図14に示すフローチャートのステップB5またはステップB13に移行する。
(A−4−5)通信網復元処理
次に、第1実施形態の一例としての演算処理装置1における通信網復元処理を、図18に示すフローチャート(ステップE1〜E5)に従って説明する。以下の処理は、主に接続回路生成部114によって行なわれる。
図18のステップE1では、演算種別Xの演算回路内に含まれる全ての部分領域30に対して、ステップE4までの制御を繰り返し実施するループ処理を開始する。
なお、cx,cyは演算種別X内の領域の座標で、それぞれ0〜calc_type_info[X].sizex-1、0〜calc_type_info[x].sizey-1の範囲で変化する。
図18のステップE2では、area_info[x+cx][y+cy].area_typeがarea_type_calcであるかを確認する。確認の結果、area_info[x+cx][y+cy].area_typeがarea_type_calcでない場合には(ステップE2のNoルート参照)、図18のステップE3に移行する。
ステップE3においては、area_info[x+cx][y+cy].used = falseを設定する。
その後、図18のステップE4において、area_info[x+cx][y+cy]に対応する位置に、noc_config_data[area_info[x+cx][y+cy].area_type]を書き込む。これにより、演算回路における、第1共用領域31および第2共用領域32に第1配線31やルータ32が形成され、接続回路が復元される。
また、ステップE2における確認の結果、area_info[x+cx][y+cy].area_typeがarea_type_calcと一致する場合には(ステップE2のYesルート参照)、図18のステップE5に移行する。
図18のステップE5では、ステップE1に対応するループ端処理が実施される。演算回路内に含まれる全ての部分領域30に対しての処理が完了すると、本フローが終了し、図14に示すフローチャートにおける処理が終了する。
(A−4−6)使用可能領域発見
次に、第1実施形態の一例としての演算処理装置1における使用可能領域発見処理を、図19に示すフローチャート(ステップF1〜F13)に従って説明する。
図19のステップF1において、mx = FPGA_SIZE_X - calc_type_info[X].sizexおよびmy = FPGA_SIZE_Y - calc_type_info[x].sizeyを設定する。これにより、演算種別Xを実行するための演算回路として検証する演算回路用リソース群の左上位置として使われる領域を設定する。
図19のステップF2では、area_info内の、“area_type==area_type_calc且つ、0≦ax<mx && 0≦ay<my”の全ての要素に対して、ステップF8までの制御を繰り返し実施するループ処理を開始する。なお、ax,ayは、対象領域のarea_infoの配列添え字である。
図19のステップF3において、bool NG=falseを設定する。
図19のステップF4では、execute_calc_instance_info_listの全要素に対して、ステップF5〜F8までの制御を繰り返し実施するループ処理を開始する。すなわち、確保したい領域(部分領域30)が既に実行中の演算インスタンスと重なっていないかを確認する。なお、iは、リストの要素であって、calc_instance_info_t型である。
図19のステップF5において、t=i.calc_type_idを設定する。
図19のステップF6において、
ax_start = ax
ax_end = ax + calc_type_info[X].sizex - 1
ay_start = ay
ay_end = ay + calc_type_info[X].sizey - 1
ex_start = i.x_pos,
ex_end = ex_start + calc_type_info[t].sizex - 1
ey_start = i.y_pos,
ey_end = ey_start + calc_type_info[t].sizey - 1
をそれぞれ設定する。
なお、ax_startは、検証対象の演算回路用リソース群の左端位置、ax_endは、検証対象の回路用リソース群の右端位置、ay_startは、検証対象の回路用リソース群の上端位置、ay_endは、検証対象の回路用リソース群の下端位置である。
また、ex_start は、演算を実行中の演算回路用リソース群の左端位置、ex_endは演算を実行中の演算回路用リソース群の右端位置、ey_startは演算を実行中の演算回路用リソース群の上端位置、ey_endは演算を実行中の演算回路用リソース群の下端位置である。
これらの検証対象の演算回路用リソース群と演算を実行中の演算回路用リソース群との各端部位置の大小を比較することで、検証対象の演算回路用リソース群と演算を実行中の演算回路用リソース群との重合関係を判断する。
そして、ステップF7において、条件(1)ax_end<ex_start、または、条件(2)ex_end<ay_start、または、条件(3)ay_end<ey_start、または、条件(4)ey_end<ay_startのうち、少なくともいずれかが1つが満たされたかを確認する。これにより、execute_calc_instance_info_list中に登録された実行中の演算によって使用されている部分領域30との重なりが生じていないことを確認する。
確認の結果、条件(1)〜(4)のいずれも満たされていない場合には(ステップF7のNoルート参照)、重なりが生じていると判断され、図19のステップF8において、NG=trueを設定する。
また、ステップF7における確認の結果、少なくとも条件(1)〜(4)のいずれかが満たされている場合には(ステップF7のYesルート参照)、ステップF8をスキップして図19のステップF9に移行する。x方向またはy方向のいずれかにおいて重なりがなければ、領域の重合は生じていないからである。
ステップF9では、ステップF4に対応するループ端処理が実施される。ここで、execute_calc_instance_info_listの全要素に対する処理が完了すると、制御がステップF10に進む。
図19のステップF10において、NGにtrueが設定されているかを確認する。NGにtrueが設定されていない場合、すなわち、NGにfalseが設定されている場合には(ステップF10のNoルート参照)、図19のステップF11に移行する。ステップF11においては、Y(bool Y)にtrueを設定するとともに、x=ax,y=ayを設定する。その後、処理を終了し、図14のフローチャートのステップB10に移行する。
すなわち、ステップF7における確認の結果、実行中の演算回路用リソース群と重合していない、演算回路を設定可能な演算回路用リソース群が検出された場合には、早急に使用可能領域発見処理を終了するのである。
ステップF10における確認の結果、NGにtrueが設定されている場合(ステップF10のYesルート参照)、図19のステップF12に移行する。ステップF12では、ステップF2に対応するループ端処理が実施される。ここで、area_info内の、“area_type==area_type_calc且つ、0≦ax<mx && 0≦ay<my”の全ての要素についての処理が完了すると、制御が図19のステップF13に進む。
ステップF13においては、Y(bool Y)にfalseが設定される。その後、処理を終了し、図14のフローチャートのステップB10に移行する。
(A−5)効果
このように、第1実施形態の一例としての演算処理装置1においては、演算回路を用いた演算処理の終了後に、接続回路生成部114が、演算回路として機能していた部分領域30のうち、第1共用領域31および第2共用領域32を接続回路として機能させる制御を行なう。すなわち、演算回路による演算処理の終了後に演算回路における接続回路部分を復活させる。
これにより、FPGA19上における他の演算回路が、演算回路において復活された接続回路を用いて外部I/F191に対してアクセスすることができ、FPGA19上に形成された演算回路からのIO(Input Output)性能を向上させることができる。すなわち、FPGA19における処理性能を向上させることができる。
また、演算要求にかかる演算回路と同一の演算回路の演算回路用領域33がFPGA19上に残っている場合に、演算回路生成部112が、その演算回路における配線回路部分だけに演算回路を構成する構成情報を設定する。
これにより、演算回路用領域33について構成情報の書き込みを行なうことなく、FPGA19上に演算回路を形成することができ、演算回路全体を短時間で復元させることができる。すなわち、演算回路の形成に要する時間を短縮することができ、これによってもFPGA19における処理性能を向上させることができる。
(B)第2実施形態
上述した第1実施形態の演算処理装置1においては、接続回路生成部114が、演算回路を用いた演算処理の終了後に、演算回路における接続回路部分を復活させている。
これに対して、第2実施形態の演算処理装置1においては、接続回路生成部114は、演算回路を用いた演算処理の終了直後の時点では接続回路部分の復活は行なわず、その後、他の演算回路を形成する際に、当該演算回路と外部I/F191とを接続する経路上にある配線回路部分だけを復活させる。
このように、第2実施形態の演算処理装置1は、主に第1実施形態の接続回路生成部114と接続回路部分を復活させるタイミングにおいて異なり、その他の部分は第1実施形態の演算処理装置1と同様に構成されている。
(B−1)動作
上述の如く構成された第2実施形態の一例としての演算処理装置1におけるFPGA19への演算回路の形成方法を、図20を用いて説明する。
初期状態においては、FPGA19に演算回路が設定されていない(符号(1)参照)。なお、FPGA19には外部I/F191が備えられており、FPGA19に形成された演算回路は、この外部I/F191を介して、FPGA19の外部(例えば、CPU11)と通信を行なう。
演算認識部110が演算Aの実行要求が認識すると、選択部111が、この演算Aを処理(実行)させることが可能な演算回路AがFPGA19上に不使用の状態で存在するかを確認する。
本例においては、FPGA19上に演算回路Aが存在しないので、選択部111は、FPGA19における空き領域を、演算回路を形成可能な領域として選択する。
演算回路生成部112は、選択部111によって選択された領域に演算要求に対応する演算回路Aを形成する(符号(2)参照)。
演算回路Aは、FPGA19上において、隣り合う複数の部分領域30(第1共用領域31,第2共用領域32および演算回路用領域33)を用いて構成される。
ここで、FPGA19上に演算回路Aによる処理が終了した時点において、演算回路Aに隣接する位置に演算回路Cが形成された場合について考える。
本第2実施形態の演算処理装置1においては、この演算回路Cと外部I/F191とを最短で接続する配線経路が形成される。すなわち、接続回路生成部114は、演算回路Aを構成していた演算回路用リソース群のうち、この配線経路上に位置する第1共用領域31および第2共用領域32に対して配線回路を構成する構成情報(通信網構成情報)を設定することにより、接続回路(NoC)を復活させる(符号(3)参照)。
これにより、演算回路Aに隣接する位置に形成された演算回路Cは、その左上に位置するルータ32と外部I/F191との間が、演算回路Aの領域内に形成された接続回路を介して接続される。すなわち、演算回路Cと外部I/F191とが最短経路で接続される。
従って、演算回路Cが、演算回路において復活された接続回路を用いて外部I/F191に対して最短経路でアクセスすることができ、FPGA19上に形成された演算回路からのIO性能を向上させることができる。
その後、演算認識部110が、再度、演算Aの実行要求を受信すると、演算回路生成部112は、演算回路において、接続回路となっている領域(配線回路部分)に演算回路を構成する構成情報を設定する。これにより、演算回路生成部112は演算回路Aを再現させる(符号(4)参照)。
本第2実施形態においては、この演算回路Aによる処理が終了した時点では、接続回路生成部114は、演算回路Aにおける接続回路(NoC)の復活は行なわない(符号(5)参照)。
その後、他の演算要求が行なわれ、演算回路Aの構成に用いられていた一部の演算回路用領域33は、他の演算回路によって書き換えられたものとする(符号(6)参照)。
この状態において、演算認識部110が、再度、演算Aの実行要求を受信すると、演算回路生成部112は、演算回路Aを構成する全領域30に対して、演算回路Aを構成する構成情報を設定する。これにより、演算回路生成部112は演算回路Aを再現させる(符号(7)参照)。
(B−2−1)演算処理の概要
次に、上述の如く構成された第2実施形態の一例としての演算処理装置1における接続回路生成部114による通信網復元処理の概要を、図21に示すフローチャート(ステップG1〜G5)に従って説明する。
以下に示す例においては、図21中の符号(1)に示すように、FPGA19上に演算B,Cを実行する演算回路B,Cがそれぞれ配置され実行中の状態で、演算Dの実行要求
が生じた場合について示す。
また、演算Dを実行する演算回路Dは、図21中の符号(2)に示すように、FPGA19上において、演算回路B,Cと離隔した位置に形成されるものとする。
ステップG1において、接続回路生成部114は、ルーティングアルゴリズムに基づいて、FPGA19上において、演算回路Dが使用するルータ32と外部I/F191とを連絡する全ての経路を列挙する。そして、接続回路生成部114は、これらの全ての経路を構成する配線31およびルータ32についての部分領域30(管理単位,要素)を全て列挙し、集合Lとする。
なお、演算回路が使用するルータ32は、当該演算回路の演算回路用領域33に設定された演算回路構成情報(第1の部分構成情報)によって特定される。
また、ルーティングアルゴリズムとしては、例えば、XYルーティング(次元順ルーティング)を用いることができる。なお、ルーティングアルゴリズムはこれに限定されるものではなく、固定型ルーティングやランダム型ルーティング、適応型ルーティング、ディペンダブル・ルーティング等の他の手法を用いてもよく、種々変形して実施することができる。
ステップG2では、集合L中に存在する全ての部分領域30に対して、ステップG4までの制御を繰り返し実施するループ処理を開始する。
ステップG3においては、その部分領域30に通信網がマッピング済みであるかを確認する。
確認の結果、その部分領域30に通信網がマッピング済みでない場合には(ステップG3のNoルート参照)、ステップG4に移行する。
ステップG4においては、通信網構成情報を用いて、その部分領域30に通信網を形成(復元)する。
その後、制御がステップG5に進む。ステップG5では、ステップG2に対応するループ端処理が実施される。ここで、集合L中に存在する全ての部分領域30についての処理が完了すると、本フローが終了する。
また、ステップG3における確認の結果、その部分領域30に通信網がマッピング済みである場合には(ステップG3のYesルート参照)、ステップG5に移行する。
(B−2−2)演算要求に対する処理の詳細
次に、上述の如く構成された第2実施形態の一例としての演算処理装置1における演算要求に対する処理の詳細を、図15〜図17および図19を参照しながら、図22および図23に示すフローチャートに従って説明する。
なお、図22はその演算要求に対する処理の全体の流れを説明するためのフローチャート(ステップB1〜B4,B5,B7,B9〜B13,B15,B17,H1〜H4)であり、引数として、演算要求にかかる演算種別Xが引数として用いられる。
また、図23は第2実施形態の一例としての演算処理装置1における通信網復元処理の詳細を示すフローチャート(ステップJ1〜J5)である。
なお、図22中において、図14に示したフローチャートと同じ符号が付されたステップは同様の処理を示しており、その詳細な説明は省略する。
図22のステップB4において、演算構成情報の書き込み処理が行なわれた後に、ステップH1において、通信網復元処理が行なわれる。なお、この通信網復元処理の詳細は、図23を用いて後述する。また、この通信網復元処理を実行するに際して、引数として演算種別Xおよび座標x,yが用いられる。その後、図22のステップB5に移行する。
ステップB5において、executing_calc_instance_info_listに実行中の演算の情報として、calc_type_id=X,posx=x,posy=yの要素を追加する。
図22のステップH2において、3つ前のステップ、すなわち、ステップB4において書き込みを行なった情報で演算を実行する。
図22のステップB7において、2つ前のステップ、すなわち、ステップB5においてexecuting_calc_instance_info_listに追加した、calc_type_id=X,posx=x,posy=yの要素を削除する。その後、処理を終了する。
また、図22のステップB12において、演算構成情報の書き込み処理が行なわれた後に、ステップH3において、通信網復元処理が行なわれる。なお、この通信網復元処理の詳細は、図23を用いて後述する。また、この通信網復元処理を実行するに際して、引数として演算種別Xおよび座標x,yが用いられる。その後、図22のステップB13に移行する。
ステップB13において、executing_calc_instance_info_listに実行中の演算の情報として、calc_type_id=X,posx=x,posy=yの要素を追加する。
図22のステップH4において、3つ前のステップ、すなわち、ステップB12において書き込みを行なった情報で演算を実行する。
図22のステップB15において、2つ前のステップ、すなわち、ステップB13においてexecuting_calc_instance_info_listに追加した、calc_type_id=X,posx=x,posy=yの要素を削除する。その後、処理を終了する。
(B−2−3)通信網復元処理
次に、第2実施形態の一例としての演算処理装置1における通信網復元処理を、図23に示すフローチャート(ステップJ1〜J6)に従って説明する。以下の処理は、主に接続回路生成部114によって行なわれる。
図23のステップJ1において、ルーティングアルゴリズムに基づいて、x-1, y-1の領域のルータ32から接続が必要な外部I/F191への経路を構成する配線回路に含まれる各部分領域30のx,y座標組を列挙して、集合Lとする。
図23のステップJ2では、集合Lに含まれる全ての部分領域30(要素)に対して、ステップJ5までの制御を繰り返し実施するループ処理を開始する。なお、集合Lの各要素のx,y座標をax,ayとする。
図23のステップJ3において、area_info[ax][ay].used==trueであるかを確認する。確認の結果、area_info[ax][ay].used==trueでない場合には(ステップJ3のNoルート参照)、図23のステップJ6に移行する。
一方、確認の結果、area_info[ax][ay].used==trueである場合には(ステップJ3のYesルート参照)、図23のステップJ4に移行する。ステップJ4においては、area_info[ax][ay].usedにfalseが設定される。
その後、図23のステップJ5において、area_info[ax][ay]に対応する位置に、noc_config_data[area_info[ax][ay].area_type]が書き込まれる。
図23のステップJ6では、ステップJ2に対応するループ端処理が実施される。集合Lに含まれる全ての部分領域30に対しての処理が完了すると、本フローが終了し、図22に示すフローチャートにおけるステップB5またはステップB13に移行する。
(B−3)効果
このように、第2実施形態の一例としての演算処理装置1においては、演算回路を用いた演算処理の終了後において、他の演算回路を形成する際に、接続回路生成部114が当該演算回路と外部I/F191とを接続する経路上にある配線回路部分を復活させる。
これにより、FPGA19上における他の演算回路が、演算回路において復活された接続回路を用いて外部I/F191に対してアクセスすることができ、FPGA19上に形成された演算回路からのIO(Input Output)性能を向上させることができる。すなわち、FPGA19における処理性能を向上させることができる。
また、この際、接続回路生成部114は、新たに形成される演算回路と外部I/F191とを接続する経路上にある配線回路部分だけを復活させることにより、負荷を軽減し、処理の高速化を図ることができる。
接続回路生成部114は、演算回路を用いた演算処理の終了の時点では接続回路部分の復活は行なわないので、これによっても、負荷を軽減し、処理の高速化を図ることができる。
(C)その他
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
例えば、上述した各実施形態においては、FPGA19に演算回路を形成することができなかった場合に、当該演算要求をCPU11において実行しているが、これに限定されるものではない。すなわち、FPGA19に演算回路を形成できるまで待つ等、種々変形して実施することができる。
図24は、第1実施形態の変形例としての演算処理装置1における演算要求に対する処理の概要を説明するフローチャート(ステップA1〜A9)である。
なお、図24中において、図13に示したフローチャートと同じ符号が付されたステップは同様の処理を示しており、その詳細な説明は省略する。
本変形例においては、ステップA5における確認の結果、該当する演算回路の演算回路用リソース群BがFPGA19上にない場合には(ステップA5のNoルート参照)、ステップA1に戻る。これにより、FPGA19に演算回路を割り当て可能な演算回路用リソース群が生じるまで、処理を繰り返し実行することで待ち合わせるのである。
また、本変形例は第2実施形態の演算処理装置1に適用してもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
(D)付記
(付記1)
内部の回路構成を任意に変更可能なプログラマブル集積回路を制御する演算処理装置であって、
前記プログラマブル集積回路が、同一形状を有する複数の第1の領域と、前記第1の領域の間に形成された複数の第2の領域とを備え、
前記プログラマブル集積回路によって実行される演算要求を認識する認識部と、
前記複数の第1の領域および前記複数の第2の領域の中から、前記演算要求にかかる処理を実行させる演算回路の構成に用いる第1の領域および第2の領域を選択する選択部と、
選択された前記第1の領域および第2の領域を演算処理部として機能させることで演算回路を生成する演算回路生成部と、
前記演算回路生成部によって生成された前記演算回路に対して、前記演算要求にかかる処理を実行させる演算制御部と、
前記演算制御部による前記処理の終了後に、前記演算回路に含まれる前記第2の領域を通信路として機能させる接続回路生成部と
を備えることを特徴とする、演算処理装置。
(付記2)
前記認識部が、同一の演算要求を再度受信すると、
前記演算回路生成部が、
前記通信処理部として機能する前記第2の領域を、前記演算処理部として機能させることで、前記演算回路を復活させる
ことを特徴とする、付記1記載の演算処理装置。
(付記3)
前記プログラマブル集積回路における前記複数の第1の領域および前記複数の第2の領域の使用状態を第1管理情報を用いて管理する第1管理部と、
前記プログラマブル集積回路において実行中の処理を第2管理情報を用いて管理する、第2管理部とを備え、
前記第1管理情報および前記第2管理情報を参照して、前記プログラマブル集積回路において、前記演算要求に対応する演算回路であって、当該演算回路において前記第1の領域が不使用状態ものが存在する場合に、前記接続回路生成部が、前記演算回路に含まれる前記第2の領域を通信路として機能させる
ことを特徴とする、付記1又は2記載の演算処理装置。
(付記4)
前記接続回路生成部が、
前記演算制御部による前記処理の終了後であって、前記演算回路生成部が前記演算要求とは異なる他の演算要求にかかる演算回路を生成する際に、前記演算回路に含まれる前記第2の領域を通信路として機能させる
ことを特徴とする、付記1又は2記載の演算処理装置。
(付記5)
演算を処理するプロセッサと、
内部の回路構成を任意に変更可能に構成され、同一形状を有する複数の第1の領域と、前記第1の領域の間に形成された複数の第2の領域とを備え、演算回路が形成されて演算を処理するプログラマブル集積回路と、
前記プログラマブル集積回路によって実行される演算要求を認識する認識部と、
前記複数の第1の領域および前記複数の第2の領域の中から、前記演算要求にかかる処理を実行させる演算回路の構成に用いる第1の領域および第2の領域を選択する選択部と、
選択された前記第1の領域および第2の領域を演算処理部として機能させることで演算回路を生成する演算回路生成部と、
前記演算回路生成部によって生成された前記演算回路に対して、前記演算要求にかかる処理を実行させる演算制御部と、
前記演算制御部による前記処理の終了後に、前記演算回路に含まれる前記第2の領域を通信路として機能させる接続回路生成部と
を備えることを特徴とする、演算処理システム。
(付記6)
前記認識部が、同一の演算要求を再度受信すると、
前記演算回路生成部が、
前記通信処理部として機能する前記第2の領域を、前記演算処理部として機能させることで、前記演算回路を復活させる
ことを特徴とする、付記5記載の演算処理システム。
(付記7)
前記プログラマブル集積回路における前記複数の第1の領域および前記複数の第2の領域の使用状態を第1管理情報を用いて管理する第1管理部と、
前記プログラマブル集積回路において実行中の処理を第2管理情報を用いて管理する、第2管理部とを備え、
前記第1管理情報および前記第2管理情報を参照して、前記プログラマブル集積回路において、前記演算要求に対応する演算回路であって、当該演算回路において前記第1の領域が不使用状態ものが存在するか場合に、前記接続回路生成部が、前記演算回路に含まれる前記第2の領域を通信路として機能させる
ことを特徴とする、付記5又は6記載の演算処理システム。
(付記8)
前記接続回路生成部が、
前記演算制御部による前記処理の終了後であって、前記演算回路生成部が前記演算要求とは異なる他の演算要求にかかる演算回路を生成する際に、前記演算回路に含まれる前記第2の領域を通信路として機能させる
ことを特徴とする、付記5又は6記載の演算処理システム。
(付記9)
内部の回路構成を任意に変更可能なプログラマブル集積回路を制御して演算を処理する演算処理方法であって、
前記プログラマブル集積回路が、同一形状を有する複数の第1の領域と、前記第1の領域の間に形成された複数の第2の領域とを備え、
前記プログラマブル集積回路によって実行される演算要求を認識する処理と、
前記複数の第1の領域および前記複数の第2の領域の中から、前記演算要求にかかる処理を実行させる演算回路の構成に用いる第1の領域および第2の領域を選択する処理と、
選択された前記第1の領域および第2の領域を演算処理部として機能させることで演算回路を生成する処理と、
生成された前記演算回路に対して、前記演算要求にかかる処理を実行させる処理と、
前記演算要求にかかる処理の終了後に、前記演算回路に含まれる前記第2の領域を通信路として機能させる処理と
を備えることを特徴とする、演算処理方法。
(付記10)
前記認識部が、同一の演算要求を再度受信すると、
前記通信処理部として機能する前記第2の領域を、前記演算処理部として機能させることで、前記演算回路を復活させる
ことを特徴とする、付記9記載の演算処理方法。
(付記11)
前記プログラマブル集積回路における前記複数の第1の領域および前記複数の第2の領域の使用状態を第1管理情報を用いて管理する処理と、
前記プログラマブル集積回路において実行中の処理を第2管理情報を用いて管理する処理と、
前記第1管理情報および前記第2管理情報を参照して、前記プログラマブル集積回路において、前記演算要求に対応する演算回路であって、当該演算回路において前記第1の領域が不使用状態ものが存在するか場合に、前記接続回路生成部が、前記演算回路に含まれる前記第2の領域を通信路として機能させる処理と
を備えることを特徴とする、付記9又は10記載の演算処理方法。
(付記12)
前記処理の終了後であって、前記演算要求とは異なる他の演算要求にかかる演算回路を生成する際に、前記演算回路に含まれる前記第2の領域を通信路として機能させる
ことを特徴とする、付記9又は10記載の演算処理方法。
1 演算処理装置
11 CPU
12 RAM
13 HDD
14 グラフィック処理装置
14a モニタ
15 入力インタフェース
15a キーボード
15b マウス
16 光学ドライブ装置
16a 光ディスク
17 機器接続インタフェース
17a メモリ装置
17b メモリリーダライタ
17c メモリカード
18 ネットワークインタフェース
19 FPGA
30 部分領域
31 第1共用領域
31a 横配線
31b 縦配線
32 第2共用領域
33 演算回路領域
20 バス
110 演算認識部
111 選択部
112 演算回路生成部
113 演算制御部
114 接続回路生成部
115 演算実行部
116 FPGA状態管理部
117 演算情報管理部
121 FPGA管理情報
122 演算情報
123 実行中処理情報
191 外部I/F

Claims (6)

  1. 内部の回路構成を任意に変更可能なプログラマブル集積回路を制御する演算処理装置であって、
    前記プログラマブル集積回路が、同一形状を有する複数の第1の領域と、前記第1の領域の間に形成された複数の第2の領域とを備え、
    前記プログラマブル集積回路によって実行される演算要求を認識する認識部と、
    前記複数の第1の領域および前記複数の第2の領域の中から、前記演算要求にかかる処理を実行させる演算回路の構成に用いる第1の領域および第2の領域を選択する選択部と、
    選択された前記第1の領域および第2の領域を演算処理部として機能させることで演算回路を生成する演算回路生成部と、
    前記演算回路生成部によって生成された前記演算回路に対して、前記演算要求にかかる処理を実行させる演算制御部と、
    前記演算回路による前記処理の終了後に、前記演算回路に含まれる前記第2の領域を通信路として機能させる接続回路生成部と
    を備えることを特徴とする、演算処理装置。
  2. 前記認識部が、同一の演算要求を再度受信すると、
    前記演算回路生成部が、
    信処理部として機能する前記第2の領域を、前記演算処理部として機能させることで、前記演算回路を復活させる
    ことを特徴とする、請求項1記載の演算処理装置。
  3. 前記プログラマブル集積回路における前記複数の第1の領域および前記複数の第2の領域の使用状態を第1管理情報を用いて管理する第1管理部と、
    前記プログラマブル集積回路において実行中の処理を第2管理情報を用いて管理する、第2管理部とを備え、
    前記第1管理情報および前記第2管理情報を参照して、前記プログラマブル集積回路において、前記演算要求に対応する演算回路であって、当該演算回路において前記第1の領域が不使用状態ものが存在する場合に、前記接続回路生成部が、前記演算回路に含まれる前記第2の領域を通信路として機能させる
    ことを特徴とする、請求項1又は2記載の演算処理装置。
  4. 前記接続回路生成部が、
    前記演算制御部による前記処理の終了後であって、前記演算回路生成部が前記演算要求とは異なる他の演算要求にかかる演算回路を生成する際に、前記演算回路に含まれる前記第2の領域を通信路として機能させる
    ことを特徴とする、請求項1又は2記載の演算処理装置。
  5. 演算を処理するプロセッサと、
    内部の回路構成を任意に変更可能に構成され、同一形状を有する複数の第1の領域と、前記第1の領域の間に形成された複数の第2の領域とを備え、演算回路が形成されて演算を処理するプログラマブル集積回路と、
    前記プログラマブル集積回路によって実行される演算要求を認識する認識部と、
    前記複数の第1の領域および前記複数の第2の領域の中から、前記演算要求にかかる処理を実行させる演算回路の構成に用いる第1の領域および第2の領域を選択する選択部と、
    選択された前記第1の領域および第2の領域を演算処理部として機能させることで演算回路を生成する演算回路生成部と、
    前記演算回路生成部によって生成された前記演算回路に対して、前記演算要求にかかる処理を実行させる演算制御部と、
    前記演算回路による前記処理の終了後に、前記演算回路に含まれる前記第2の領域を通信路として機能させる接続回路生成部と
    を備えることを特徴とする、演算処理システム。
  6. 内部の回路構成を任意に変更可能なプログラマブル集積回路を制御して演算を処理する演算処理方法であって、
    前記プログラマブル集積回路が、同一形状を有する複数の第1の領域と、前記第1の領域の間に形成された複数の第2の領域とを備え、
    前記プログラマブル集積回路によって実行される演算要求を認識する処理と、
    前記複数の第1の領域および前記複数の第2の領域の中から、前記演算要求にかかる処理を実行させる演算回路の構成に用いる第1の領域および第2の領域を選択する処理と、
    選択された前記第1の領域および第2の領域を演算処理部として機能させることで演算回路を生成する処理と、
    生成された前記演算回路に対して、前記演算要求にかかる処理を実行させる処理と、
    前記演算要求にかかる処理の終了後に、前記演算回路に含まれる前記第2の領域を通信路として機能させる処理と
    を備えることを特徴とする、演算処理方法。
JP2015241788A 2015-12-11 2015-12-11 演算処理装置、演算処理システムおよび演算処理方法 Expired - Fee Related JP6638362B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015241788A JP6638362B2 (ja) 2015-12-11 2015-12-11 演算処理装置、演算処理システムおよび演算処理方法
US15/289,410 US10319436B2 (en) 2015-12-11 2016-10-10 System including programmable integrated circuit including first areas having same shape and second areas formed between first areas, and operation processing device and method for controlling the programmable integrated circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015241788A JP6638362B2 (ja) 2015-12-11 2015-12-11 演算処理装置、演算処理システムおよび演算処理方法

Publications (2)

Publication Number Publication Date
JP2017107465A JP2017107465A (ja) 2017-06-15
JP6638362B2 true JP6638362B2 (ja) 2020-01-29

Family

ID=59020088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015241788A Expired - Fee Related JP6638362B2 (ja) 2015-12-11 2015-12-11 演算処理装置、演算処理システムおよび演算処理方法

Country Status (2)

Country Link
US (1) US10319436B2 (ja)
JP (1) JP6638362B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10958273B2 (en) * 2016-04-28 2021-03-23 Nec Solution Innovators, Ltd. Circuit device, circuit rewriting method, and computer-readable recording medium

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5631578A (en) 1995-06-02 1997-05-20 International Business Machines Corporation Programmable array interconnect network
JP2006236106A (ja) 2005-02-25 2006-09-07 Canon Inc データ処理装置及びデータ処理方法

Also Published As

Publication number Publication date
US20170169882A1 (en) 2017-06-15
US10319436B2 (en) 2019-06-11
JP2017107465A (ja) 2017-06-15

Similar Documents

Publication Publication Date Title
US10311190B2 (en) Virtual hierarchical layer patterning
JP2004502259A (ja) 階層型金属末端、包囲、および曝露をチェックする方法およびシステム
JP3042761B2 (ja) 論理エミュレーションシステムにおけるプログラマブルデバイスのプログラムデータ生成方法およびプログラマブルデバイスのプログラムデータ生成装置
US20120151429A1 (en) Multistage, hybrid synthesis processing facilitating integrated circuit layout
WO2013018204A1 (ja) 画像処理ソフトウェア開発方法、画像処理ソフトウェア開発装置、および、画像処理ソフトウェア開発プログラム
US8711160B1 (en) System and method for efficient resource management of a signal flow programmed digital signal processor code
US9830731B2 (en) Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus
CN111488153A (zh) 由电子装置的处理器实施的方法和操作电子装置的处理器
US10255399B2 (en) Method, apparatus and system for automatically performing end-to-end channel mapping for an interconnect
JP6638362B2 (ja) 演算処理装置、演算処理システムおよび演算処理方法
US8572504B1 (en) Determining comprehensibility of a graphical model in a graphical modeling environment
EP1583008A2 (en) Distributed CAD apparatus
US20240112397A1 (en) Spatial test of bounding volumes for rasterization
US9875329B1 (en) Method and system for import of mask layout data to a target system
CN113495876A (zh) 一种基于Spark的影像金字塔分布式切片系统及方法
JP6265462B2 (ja) プログラム、及び情報処理装置
US8484589B2 (en) Logical repartitioning in design compiler
US8813020B2 (en) Automatically modifying a circuit layout to perform electromagnetic simulation
US11928500B1 (en) Multi-threaded network routing based on partitioning
US20230334758A1 (en) Methods and hardware logic for writing ray tracing data from a shader processing unit of a graphics processing unit
WO2021250898A1 (ja) 情報処理装置、情報処理方法およびプログラム
JP3989397B2 (ja) 集積回路装置およびその装置に対するデータ設定装置
JP5791797B2 (ja) Lsi設計装置及びlsi設計方法及びプログラム
CN118133757A (zh) 芯片设计的方法和装置
JP2000068190A (ja) 露光データ作成方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190410

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190521

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190620

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191209

R150 Certificate of patent or registration of utility model

Ref document number: 6638362

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees