以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔A〕関連例
図1は、関連例におけるデータパイプライン処理(単に「パイプライン処理」と称されてもよい。)を説明するブロック図である。
関連例における情報処理システム600は、図1に示されるように、CPU6、SDRAM7及び複数(図示される例では6つ)のFPGAボード8(「FPGAボード#0〜#5」と称されてもよい。)を備える。なお、CPUはCentral Processing Unitの略称であり、SDRAMはSynchronous Dynamic Random Access Memoryの略称である。
CPU6とSDRAM7と各FPGAボード8とは、共用バス91によって互いに通信可能に接続される。また、隣り合う位置に備えられる2つのFPGAボード8は、広帯域バス92によって互いに通信可能に接続される。図1に示される例においては、広帯域バス92によって、FPGAボード#0とFPGAボード#1とが接続されており、FPGAボード#1とFPGAボード#2とが接続されており、FPGAボード#2とFPGAボード#3とが接続されている。また、図1に示される例においては、広帯域バス92によって、FPGAボード#3とFPGAボード#4とが接続されており、FPGAボード#4とFPGAボード#5とが接続されている。すなわち、複数のFPGAボード8は、広帯域バス92を介して、数珠つなぎで接続(「カスケード接続」や「縦列接続」と称されてもよい。)されている。
SDRAM7は、RAM(Random Access Memory)の一例であり、一次記録メモリあるいはワーキングメモリとして利用されてよい。
CPU6は、例示的に、種々の制御や演算を行なう処理装置であり、不図示のROM(Read Only Memory)に格納されたOS(Operating System)やプログラムを実行することにより、種々の機能を実現する。
FPGAボード8は、FPGA81(「FPGA#0〜#5」と称されてもよい。)及びSDRAM82(「SDRAM#0〜#5」と称されてもよい。)を備える。図1に示される例において、FPGAボード#0〜#5は、FPGA#0〜#5及びSDRAM#0〜#5をそれぞれ備える。
FPGA81は、任意に構成を設定できる集積回路である。図1に示される例において、FPGA#0〜#5は、処理A〜Fをそれぞれ実行する。
SDRAM82は、RAMの一例であり、一次記録メモリあるいはワーキングメモリとして利用されてよい。SDRAM82は、FPGA81によって実行された処理の結果を記憶する。図1に示される例において、SDRAM#0〜#5は、FPGA81によって実行された処理の出力として出力データAo〜Foをそれぞれ記憶する。出力データAo〜Foは、処理A〜Fが実行されることによってそれぞれ生成される。
図1に示される情報処理システム600は、出力データFoを取得するために実行される6つの処理A〜Fを6つのFPGA#0〜#5にそれぞれ割り当てることにより、パイプライン処理を行なう。
以下、図1を用いて、関連例の情報処理システム600におけるパイプライン処理を説明する。
まず、SDRAM7に記憶されている入力データAinがリードデータArとして共用バス91を介して読み出されて、FPGA#0は、リードデータArを用いて、処理Aを実行する。処理Aの出力は、出力データAoとして、SDRAM#0に記憶される。
SDRAM#0に記憶された出力データAoは、リードデータBrとしてFPGAボード#0からFPGAボード#1へ広帯域バス92を介して転送される。FPGA#1は、リードデータBrを用いて、処理Bを実行する。処理Bの出力は、出力データBoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データBoは、リードデータCrとしてFPGAボード#1からFPGAボード#2へ広帯域バス92を介して転送される。FPGA#2は、リードデータCrを用いて、処理Cを実行する。処理Cの出力は、出力データCoとして、SDRAM#2に記憶される。
SDRAM#2に記憶された出力データCoは、リードデータDrとしてFPGAボード#2からFPGAボード#3へ広帯域バス92を介して転送される。FPGA#3は、リードデータDrを用いて、処理Dを実行する。処理Dの出力は、出力データDoとして、SDRAM#3に記憶される。
SDRAM#3に記憶された出力データDoは、リードデータErとしてFPGAボード#3からFPGAボード#4へ広帯域バス92を介して転送される。FPGA#4は、リードデータErを用いて、処理Eを実行する。処理Eの出力は、出力データEoとして、SDRAM#4に記憶される。
SDRAM#4に記憶された出力データEoは、リードデータFrとしてFPGAボード#4からFPGAボード#5へ広帯域バス92を介して転送される。FPGA#5は、リードデータFrを用いて、処理Fを実行する。処理Fの出力は、出力データFoとして、SDRAM#5に記憶される。
SDRAM#5に記憶された出力データFoは、共用バス91を介してFPGAボード#5から出力され、例えばSDRAM7に記憶される。
図2は、図1に示したデータパイプライン処理の実施順序を説明する図である。
複数のFPGA81に割り当てられる各処理は、所定の単位時間(「1単位処理時間」と称されてもよい。)内で実行される。単位時間には、FPGAボード8間の転送時間が含まれてよい。
例えば、30 frame/secの動画像処理の場合は、1 frameに許容される処理時間は33 msecである。FPGA#0〜#5にそれぞれ割り当てられる処理A〜Fは、33 msecを超えないように、予め機能分割されていてよい。
図2に示される例において、FPGA#0は処理A1〜A5を実行し、FPGA#1は処理B1〜B5を実行し、FPGA#2は処理C1〜C5を実行する。また、図2に示される例において、FPGA#3は処理D1〜D5を実行し、FPGA#4は処理E1〜E5を実行し、FPGA#5は処理F1〜F5を実行する。
パイプライン処理において、複数のFPGA81に割り当てられる各処理には処理順序が定義されており、第1の処理の後に第2の処理を実行することが定義されている場合には、第1の処理が完了するまで、第2の処理は実行されない。
図2に示される例において、パイプライン処理は、処理A,B,C,D,E,Fの順に実行される。具体的には、処理Anが完了すると処理Bnが実行され、処理Bnが完了すると処理Cnが実行され、処理Cnが完了すると処理Dnが実行され、処理Dnが完了すると処理Enが実行され、処理Enが完了すると処理Fnが実行される(nは1〜5の整数)。
例えば、処理A1が完了すると処理B1が実行され、処理B1が完了すると処理C1が実行され、処理C1が完了すると処理D1が実行され、処理D1が完了すると処理E1が実行され、処理E1が完了すると処理F1が実行される。処理A2〜A5,処理B2〜B5,処理C2〜C5,処理D2〜D5,処理E2〜E5及び処理F2〜F5についても、同様である。
〔B〕実施形態
〔B−1〕システム構成
図3は、実施形態の一例における情報処理システム100のハードウェア構成例及びソフトウェア構成例を示すブロック図である。
実施形態の一例における情報処理システム100は、図3に示されるように、CPU1、SDRAM2及び複数(図示される例では6つ)のFPGAボード3(「FPGAボード#0〜#5」と称されてもよい。)を備える。
CPU1とSDRAM2と各FPGAボード3とは、共用バス41によって互いに通信可能に接続される。また、隣り合う位置に備えられる2つのFPGAボード3は、広帯域バス42によって互いに通信可能に接続される。図3に示される例においては、広帯域バス42によって、FPGAボード#0とFPGAボード#1とが接続されており、FPGAボード#1とFPGAボード#2とが接続されており、FPGAボード#2とFPGAボード#3とが接続されている。また、図3に示される例においては、広帯域バス42によって、FPGAボード#3とFPGAボード#4とが接続されており、FPGAボード#4とFPGAボード#5とが接続されている。すなわち、複数のFPGAボード3は、数珠つなぎで接続(「カスケード接続」や「縦列接続」と称されてもよい。)されている。
SDRAM2は、RAMの一例であり、一次記録メモリあるいはワーキングメモリとして利用されてよい。
FPGAボード3は、FPGA31(「FPGA#0〜#5」と称されてもよい。)及びSDRAM32(「SDRAM#0〜#5」と称されてもよい。)を備える。図3に示される例において、FPGAボード#0〜#5は、FPGA#0〜#5及びSDRAM#0〜#5をそれぞれ備える。
FPGA31は、任意に構成を設定できる、論理を再構成可能な集積回路である。
SDRAM32は、RAMの一例であり、一次記録メモリあるいはワーキングメモリとして利用されてよい。SDRAM32は、FPGA31によって実行された処理の結果を記憶する。
CPU1は、例示的に、種々の制御や演算を行なう処理装置であり、不図示のROMに格納されたOSやプログラムを実行することにより、種々の機能を実現する。すなわち、CPU1は、図3に示されるように、処理時間算出部11,データ転送量取得部12,第1判定部13,第2判定部14及び制御部15として機能してよい。
なお、これらの処理時間算出部11,データ転送量取得部12,第1判定部13,第2判定部14及び制御部15としての機能を実現するためのプログラムは、例えばフレキシブルディスク、CD(CD−ROM、CD−R、CD−RW等)、DVD(DVD−ROM、DVD−RAM、DVD−R、DVD+R、DVD−RW、DVD+RW、HD DVD等)、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ(本実施形態ではCPU1)は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
処理時間算出部11,データ転送量取得部12,第1判定部13,第2判定部14及び制御部15としての機能を実現する際には、内部記憶装置(本実施形態ではSDRAM2)に格納されたプログラムがコンピュータ(本実施形態ではCPU1)によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
処理時間算出部11は、複数のFPGA31に割り当てられる各処理の実行時間をそれぞれ算出する。処理時間算出部11は、FPGA31で実行された各処理の実行時間を実測してよい。また、処理時間算出部11は、例えばSDRAM2に予め記憶されたデータに基づいて各処理の実行時間を算出してよい。
処理時間算出部11は、FPGA31において論理を書き換える時間を算出する。処理時間算出部11は、FPGA31で実行された論理を書き換える時間を実測してよい。また、処理時間算出部11は、例えばSDRAM2に予め記憶されたデータに基づいて論理の書き換える時間を算出してよい。
処理時間算出部11は、算出した各処理の実行時間及び論理を書き換える時間をSDRAM2に記憶させてよい。
データ転送量取得部12は、広帯域バス42を介した各FPGAボード3間におけるデータ転送量を各FPGA31から取得する。データ転送量は、FPGA31に備えられる監視回路312(図4及び図5を用いて後述)によって、単位時間毎に計測されてよい。
第1判定部13は、処理時間の観点から、複数の処理を1つのFPGA31において併合して実行できるかを判定する。第1判定部13は、第1の処理の実行時間と、第2の処理の実行時間と、或るFPGA31において第1の処理を実行する論理から第2の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する。第1の処理時間、第2の処理時間及び論理を書き換える時間は、上述した処理時間算出部11によって算出されてよい。
第2判定部14は、FPGAボード3間の通信負荷の観点から、複数の処理を1つのFPGA31において併合して実行できるかを判定する。第2判定部14は、第1の処理と第2の処理とを或るFPGA31に実行させる場合に、複数のFPGA31の間におけるデータ通信量が閾値以下であるかを判定する。複数のFPGA31の間におけるデータ通信量は、上述したデータ転送量取得部12によって、複数のFPGA31からそれぞれ取得されてよい。
制御部15は、第1判定部13によって処理時間の合計値が単位時間以下であると判定され、且つ、第2判定部14によってデータ通信量が閾値以下であると判定された場合に、第1の処理と第2の処理とを或るFPGA31に併合させて実行させる。
また、制御部15は、併合可能な処理が3つ以上存在する場合に、複数のFPGA31の間の接続関係において、処理の併合先のFPGA31に最も近い位置に接続されたFPGA31に割り当てられた処理を併合してよい。
図4は、図3に示したFPGA31のハードウェア構成例を示すブロック図である。
図4に示されるFPGAボード3(「FPGAボード#m」と称されてもよい。)は、FPGA31(「FPGA#m」と称されてもよい。)及びSDRAM32(「SDRAM#m」と称されてもよい。)を備える。なお、mは1以上の整数である。FPGA#mは、図4に示されるように、処理Xを実行する。
FPGAボード#mは、広帯域バス42によって、FPGAボード#m−1及び#m+1(ともに不図示)と通信可能に接続される。FPGAボード#mに接続される広帯域バス42は、バスL421及びバスR422を含む。バスL421は、FPGA#mとFPGA#m−1とを接続する。また、バスR422は、FPGA#mとFPGA#m+1とを接続する。なお、図3に示した例においては、FPGAボード#0はバスL421と接続されていなくてよく、FPGAボード#5はバスR422と接続されていなくてよい。
FPGAボード#mは、共用バス(「バスP」と称されてもよい。)41によって、CPU1及びSDRAM2(ともに図4には不図示)と通信可能に接続される。
FPGA31は、図4に示されるように、処理回路311及び監視回路312を備える。
処理回路311は、FPGA31に割り当てられた処理(図4に示される例では「処理X」)を実行する。
処理回路311は、sdramIF(Interface)313を介して、SDRAM32と通信可能に接続される。また、処理回路311は、複数(図示される例では3つ)のバスIF314を介して、監視回路312,バスP41,バスL421及びバスR422と接続される。処理回路311は、バスIF314を介して、バスP41,バスL421及びバスR422との間で、データ信号及び制御信号の送受信を行なう。処理回路311とバスL421及びバスR422との間で送受信される制御信号は、監視回路312にも入力される。
監視回路312は、計測部の一例であり、単位時間毎に、処理回路311におけるデータ通信量を計測(別言すれば、「監視」)する。監視回路312は、バスIF3121を介して、バスP41と接続される。監視回路312は、バスIF3121を介して、データ信号及び制御信号の送受信を行なう。
図5は、図4に示した監視回路312の機能構成を示すブロック図である。
監視回路312は、図5に示されるように、制御部3122、バスLデータ量取得部3123、バスRデータ量取得部3124、バスLデータ量カウンタ3125、バスRデータ量カウンタ3126、バスLサイズ算出部3127、バスRサイズ算出部3128を備える。
バスLサイズ算出部3127は、バスL421を介して送受信されたデータ信号のサイズを算出する。
バスLデータ量カウンタ3125は、バスLサイズ算出部3127によって算出されたデータ信号のサイズに基づき、データ量をカウントアップする。バスLデータ量カウンタ3125は、制御部3122による制御に基づき、単位時間が経過した場合に、カウントしたデータ量をバスLデータ量取得部3123に通知し、カウントしたデータ量を0にリセットする。
バスLデータ量取得部3123は、バスLデータ量カウンタ3125から通知されたバスL421のデータ量を取得する。バスLデータ量取得部3123は、バスIF3121及びバスP41を介して、CPU1へ取得したバスL421のデータ量を送信する。
バスRサイズ算出部3128は、バスR422を介して送受信されたデータ信号のサイズを算出する。
バスRデータ量カウンタ3126は、バスRサイズ算出部3128によって算出されたデータ信号のサイズに基づき、データ量をカウントアップする。バスRデータ量カウンタ3126は、制御部3122による制御に基づき、単位時間が経過した場合に、カウントしたデータ量をバスRデータ量取得部3124に通知し、カウントしたデータ量を0にリセットする。
バスRデータ量取得部3124は、バスRデータ量カウンタ3126から通知されたバスR422のデータ量を取得する。バスRデータ量取得部3124は、バスIF3121及びバスP41を介して、CPU1へ取得したバスR422のデータ量を送信する。
制御部3122は、単位時間が経過した場合に、バスLデータ量カウンタ3125に、カウントしたデータ量をバスLデータ量取得部3123に通知させ、カウントしたデータ量をリセットさせる。また、制御部3122は、単位時間が経過した場合に、バスRデータ量カウンタ3126に、カウントしたデータ量をバスRデータ量取得部3124に通知させ、カウントしたデータ量をリセットさせる。
図6の(1)はデータパイプライン処理の実施順序の第1の例を説明する図であり、図6の(2)は図6の(1)に示したデータパイプライン処理において隣り合う処理を統合する場合の実施順序を説明する図である。
図6の(1)に示される例において、FPGA#0は処理A1〜A5を実行し、FPGA#1は処理B1〜B5を実行し、FPGA#2は処理C1〜C5を実行する。また、図2に示される例において、FPGA#3は処理D1〜D5を実行し、FPGA#4は処理E1〜E5を実行し、FPGA#5は処理F1〜F5を実行する。
パイプライン処理において、複数のFPGA31に割り当てられる各処理には処理順序が定義されており、第1の処理の後に第2の処理を実行することが定義されている場合には、第1の処理が完了するまで、第2の処理は実行されない。
図6の(1)に示される例において、パイプライン処理は、処理A,B,C,D,E,Fの順に実行される。具体的には、処理Anが完了すると処理Bnが実行され、処理Bnが完了すると処理Cnが実行され、処理Cnが完了すると処理Dnが実行され、処理Dnが完了すると処理Enが実行され、処理Enが完了すると処理Fnが実行される(nは1〜5の整数)。
例えば、処理A1が完了すると処理B1が実行され、処理B1が完了すると処理C1が実行され、処理C1が完了すると処理D1が実行され、処理D1が完了すると処理E1が実行され、処理E1が完了すると処理F1が実行される。処理A2〜A5,処理B2〜B5,処理C2〜C5,処理D2〜D5,処理E2〜E5及び処理F2〜F5についても、同様である。
図6の(1)に示される例において、処理A1〜A5及び処理B1〜B5の実行時間は、1単位処理時間よりも十分に小さい。また、図6の(1)に示される例において、処理C1〜C5,処理D1〜D5,処理E1〜E5及び処理F1〜F5の実行時間は、1単位処理時間と略同じである。
図7は、図6の(1)に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
まず、SDRAM2に記憶されている入力データAinがリードデータArとして共用バス41を介して読み出されて、FPGA#0は、リードデータArを用いて、処理Aを実行する。処理Aの出力は、出力データAoとして、SDRAM#0に記憶される。
SDRAM#0に記憶された出力データAoは、リードデータBrとしてFPGAボード#0からFPGAボード#1へ広帯域バス42を介して転送される。FPGA#1は、リードデータBrを用いて、処理Bを実行する。処理Bの出力は、出力データBoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データBoは、リードデータCrとしてFPGAボード#1からFPGAボード#2へ広帯域バス42を介して転送される。FPGA#2は、リードデータCrを用いて、処理Cを実行する。処理Cの出力は、出力データCoとして、SDRAM#2に記憶される。
SDRAM#2に記憶された出力データCoは、リードデータDrとしてFPGAボード#2からFPGAボード#3へ広帯域バス42を介して転送される。FPGA#3は、リードデータDrを用いて、処理Dを実行する。処理Dの出力は、出力データDoとして、SDRAM#3に記憶される。
SDRAM#3に記憶された出力データDoは、リードデータErとしてFPGAボード#3からFPGAボード#4へ広帯域バス42を介して転送される。FPGA#4は、リードデータErを用いて、処理Eを実行する。処理Eの出力は、出力データEoとして、SDRAM#4に記憶される。
SDRAM#4に記憶された出力データEoは、リードデータFrとしてFPGAボード#4からFPGAボード#5へ広帯域バス42を介して転送される。FPGA#5は、リードデータFrを用いて、処理Fを実行する。処理Fの出力は、出力データFoとして、SDRAM#5に記憶される。
SDRAM#5に記憶された出力データFoは、共用バス41を介してFPGAボード#5から出力され、例えばSDRAM2に記憶される。
制御部15は、第1判定部13及び第2判定部14によって図6の(1)に示した処理A1〜A5及びB1〜B5の実行をFPGA#0に統合できると判定された場合に、図6の(2)に示されるように、処理A1〜A5及びB1〜B5をFPGA#0に実行させる。
図6の(2)に示されるように、処理Aの実行時間と、処理Bの実行時間と、FPGA#0において処理Aを実行する論理から処理Bを実行する論理に書き換える時間(図中の「書換」参照)との合計値は、単位時間以下である。
制御部15は、処理An〜Fnの処理順序に従いつつ、論理の書き換え回数が最小となるように、FPGA#0に対して処理An及びBnを統合して割り当ててよい。
図6の(1)においてFPGA#2〜#5にそれぞれ割り当てられていた処理C〜Fは、図6の(2)に示されるように、FPGA#1〜#4にそれぞれ詰めて割り当てられてよい。これにより、FPGA#5は処理が割り当てられていない空き状態となり、FPGA#5には図6の(2)に示された処理A〜F以外の処理を割り当てることができる。すなわち、パイプライン処理における効率を向上させ、ハードウェア資源を有効に利用できる。
図8は、図6の(2)に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
まず、SDRAM2に記憶されている入力データAinがリードデータArとして共用バス41を介して読み出されて、FPGA#0は、リードデータArを用いて、処理Aを実行する。処理Aの出力は、出力データAoとして、SDRAM#0に記憶される。
FPGA#0は、SDRAM#0に記憶された出力データAoを用いて、処理Bを実行する。処理Bの出力は、出力データBoとして、SDRAM#0に記憶される。
SDRAM#0に記憶された出力データBoは、リードデータCrとしてFPGAボード#0からFPGAボード#1へ広帯域バス42を介して転送される。FPGA#1は、リードデータCrを用いて、処理Cを実行する。処理Cの出力は、出力データCoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データCoは、リードデータDrとしてFPGAボード#1からFPGAボード#2へ広帯域バス42を介して転送される。FPGA#2は、リードデータDrを用いて、処理Dを実行する。処理Dの出力は、出力データDoとして、SDRAM#2に記憶される。
SDRAM#2に記憶された出力データDoは、リードデータErとしてFPGAボード#2からFPGAボード#3へ広帯域バス42を介して転送される。FPGA#3は、リードデータErを用いて、処理Eを実行する。処理Eの出力は、出力データEoとして、SDRAM#3に記憶される。
SDRAM#3に記憶された出力データEoは、リードデータFrとしてFPGAボード#3からFPGAボード#4へ広帯域バス42を介して転送される。FPGA#4は、リードデータFrを用いて、処理Fを実行する。処理Fの出力は、出力データFoとして、SDRAM#4に記憶される。
SDRAM#4に記憶された出力データFoは、共用バス41を介してFPGAボード#4から出力され、例えばSDRAM2に記憶される。
図9の(1)はデータパイプライン処理の実施順序の第2の例を説明する図であり、図9の(2)は図9の(1)に示したデータパイプライン処理において隣り合わない処理を統合する場合の実施順序を説明する図である。
図9の(1)に示される例において、処理B1〜B5及び処理D1〜D5の実行時間は、1単位処理時間よりも十分に小さい。また、図9の(1)に示される例において、処理A1〜A5,処理C1〜C5,処理E1〜E5及び処理F1〜F5の実行時間は、1単位処理時間と略同じである。
図9の(1)に示すパイプライン処理におけるデータの流れは、図7に示したパイプライン処理におけるデータの流れと同様である。
第1判定部13及び第2判定部14によって図9の(1)に示す処理B1〜B5及びD1〜D5の実行をFPGA#1に統合できると判定された場合に、制御部15は、図9の(2)に示されるように、処理B1〜B5及びD1〜D5をFPGA#1に実行させる。
図9の(2)に示されるように、処理Bの実行時間と、処理Dの実行時間と、FPGA#1において処理Bを実行する論理から処理Dを実行する論理に書き換える時間(図中の「書換」参照)との合計値は、単位時間以下である。
制御部15は、処理An〜Fnの処理順序に従いつつ、論理の書き換え回数が最小となるように、FPGA#1に対して処理Bn及びDnを統合して割り当ててよい。
図9の(1)においてFPGA#4及び#5にそれぞれ割り当てられていた処理E及びFは、図9の(2)に示されるように、FPGA#3及び#4にそれぞれ詰めて割り当てられてよい。これにより、FPGA#5は処理が割り当てられていない空き状態となり、FPGA#5には図9の(2)に示された処理A〜F以外の処理を割り当てることができる。すなわち、パイプライン処理における効率を向上させ、ハードウェア資源を有効に利用できる。
図10は、図9の(2)に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
まず、SDRAM2に記憶されている入力データAinがリードデータArとして共用バス41を介して読み出されて、FPGA#0は、リードデータArを用いて、処理Aを実行する。処理Aの出力は、出力データAoとして、SDRAM#0に記憶される。
SDRAM#0に記憶された出力データAoは、リードデータBrとしてFPGAボード#0からFPGAボード#1へ広帯域バス42を介して転送される。FPGA#1は、リードデータBrを用いて、処理Bを実行する。処理Bの出力は、出力データBoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データBoは、リードデータCrとしてFPGAボード#1からFPGAボード#2へ広帯域バス42を介して転送される。FPGA#2は、リードデータCrを用いて、処理Cを実行する。処理Cの出力は、出力データCoとして、SDRAM#2に記憶される。
SDRAM#2に記憶された出力データCoは、リードデータDrとしてFPGAボード#2からFPGAボード#1へ広帯域バス42を介して転送される。FPGA#1は、リードデータDrを用いて、処理Dを実行する。処理Dの出力は、出力データDoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データDoは、リードデータErとしてFPGAボード#1からFPGA#2経由でFPGAボード#3へ広帯域バス42を介して転送される。FPGA#3は、リードデータErを用いて、処理Eを実行する。処理Eの出力は、出力データEoとして、SDRAM#3に記憶される。
SDRAM#3に記憶された出力データEoは、リードデータFrとしてFPGAボード#3からFPGAボード#4へ広帯域バス42を介して転送される。FPGA#4は、リードデータFrを用いて、処理Fを実行する。処理Fの出力は、出力データFoとして、SDRAM#4に記憶される。
SDRAM#4に記憶された出力データFoは、共用バス41を介してFPGAボード#4から出力され、例えばSDRAM2に記憶される。
図10に示すパイプライン処理においては、破線矢印で示されるように、リードデータDr及びErのFPGAボード3間の転送動作が、図8に示されたパイプライン処理と比較して増加する。
次に、図11〜図14を用いて、統合可能な処理が3つ以上存在する場合における、統合する処理の優先順位について説明する。
図11の(1)はデータパイプライン処理の実施順序の第3の例を説明する図であり、図11の(2)は図11の(1)に示したデータパイプライン処理における第1の統合例を説明する図である。
図11の(1)に示される例において、処理A1〜A5,B1〜B5,D1〜D5及びE1〜E5の実行時間は、1単位処理時間よりも十分に小さい。また、図11の(1)に示される例において、処理C1〜C5及びF1〜F5の実行時間は、1単位処理時間と略同じである。すなわち、図11の(1)に示される例においては、統合可能な4つの処理A1〜A5,B1〜B5,D1〜D5及びE1〜E5が存在する。図11の(1)に示すパイプライン処理は、図7に示したパイプライン処理と同様である。
図11の(2)に示される例において、制御部15は、接続関係において隣り合う(別言されれば、「距離が1ホップの」)2つのFPGA#0及び#1にそれぞれ割り当てられている処理A1〜A5及びB1〜B5をFPGA#0に実行させる。図11の(2)に示されるパイプライン処理におけるデータの流れは、図8に示されたパイプライン処理におけるデータの流れと同様である。
図12の(1)はデータパイプライン処理の実施順序の第3の例を説明する図であり、図12の(2)は図12(1)に示したデータパイプライン処理における第2の統合例を説明する図である。
図12の(1)に示されるデータパイプライン処理の実施順序は、図11の(1)に示されたデータパイプライン処理の実施順序と同様である。
図12の(2)に示される例において、制御部15は、接続関係において隣り合わない(別言されれば、「距離が2ホップの」)2つのFPGA#1及び#3にそれぞれ割り当てられている処理B1〜B5及びD1〜D5をFPGA#1に実行させる。図12の(2)に示されるパイプライン処理におけるデータの流れは、図10に示されたパイプライン処理におけるデータの流れと同様である。
図13の(1)はデータパイプライン処理の実施順序の第3の例を説明する図であり、図13の(2)は図13の(1)に示したデータパイプライン処理における第3の統合例を説明する図である。
図13の(1)に示されるデータパイプライン処理の実施順序は、図11の(1)及び図12の(1)に示されたデータパイプライン処理の実施順序と同様である。
図13の(2)に示される例において、制御部15は、接続関係において隣り合わない(別言されれば、「距離が3ホップの」)2つのFPGA#1及び#4にそれぞれ割り当てられている処理B1〜B5及びE1〜E5をFPGA#1に実行させる。
図14は、図13の(2)に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
まず、SDRAM2に記憶されている入力データAinがリードデータArとして共用バス41を介して読み出されて、FPGA#0は、リードデータArを用いて、処理Aを実行する。処理Aの出力は、出力データAoとして、SDRAM#0に記憶される。
SDRAM#0に記憶された出力データAoは、リードデータBrとしてFPGAボード#0からFPGAボード#1へ広帯域バス42を介して転送される。FPGA#1は、リードデータBrを用いて、処理Bを実行する。処理Bの出力は、出力データBoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データBoは、リードデータCrとしてFPGAボード#1からFPGAボード#2へ広帯域バス42を介して転送される。FPGA#2は、リードデータCrを用いて、処理Cを実行する。処理Cの出力は、出力データCoとして、SDRAM#2に記憶される。
SDRAM#2に記憶された出力データCoは、リードデータDrとしてFPGAボード#2からFPGAボード#3へ広帯域バス42を介して転送される。FPGA#3は、リードデータDrを用いて、処理Dを実行する。処理Dの出力は、出力データDoとして、SDRAM#3に記憶される。
SDRAM#3に記憶された出力データDoは、リードデータErとしてFPGAボード#3からFPGAボード#2を経由してFPGAボード#1へ広帯域バス42を介して転送される。FPGA#1は、リードデータErを用いて、処理Eを実行する。処理Eの出力は、出力データEoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データEoは、リードデータFrとしてFPGAボード#1からFPGAボード#2及び#3を経由してFPGAボード#4へ広帯域バス42を介して転送される。FPGA#4は、リードデータFrを用いて、処理Fを実行する。処理Fの出力は、出力データFoとして、SDRAM#4に記憶される。
SDRAM#4に記憶された出力データFoは、共用バス41を介してFPGAボード#4から出力され、例えばSDRAM2に記憶される。
図14に示すパイプライン処理においては、破線矢印で示されるように、2回のリードデータEr及び2回のリードデータFrのFPGAボード3間の転送動作が、図8に示されたパイプライン処理と比較して増加する。
制御部15は、複数のFPGA31の間の接続関係において、統合された処理を実行するFPGA31と最も近い位置に接続された他のFPGA31に割り当てられた処理を統合してFPGA31に実行させる。
制御部15は、図11の(2),図12の(2)及び図13の(2)の統合例のうち図11の(2)に示されるように、距離が1ホップのFPGA#0及び#1にそれぞれ割り当てられた処理A及びBを最も優先して統合する。図11の(2)に示されるパイプライン処理においては、図8に示されたように、FPGAボード3間のデータ転送量が最小限に抑えられる。
図11の(1)に示された処理A及びBの統合が、第1判定部13及び第2判定部14の判定結果により不可能な場合について考える。この場合には、制御部15は、図11の(2),図12の(2)及び図13の(2)の統合例のうち図12の(2)に示されるように、距離が2ホップのFPGA#1及び#3にそれぞれ割り当てられた処理B及びDを次に優先して統合する。図12の(2)に示されるパイプライン処理においては、図10に示されたように、FPGAボード3間のデータ転送回数が最小限の回数から2回増加する(図10の破線矢印参照)。
図11の(1)に示された処理A及びBの統合と、図12の(1)に示された処理B及びDの統合とが、いずれも、第1判定部13及び第2判定部14の判定結果により不可能な場合について考える。この場合には、制御部15は、図11の(2),図12の(2)及び図13の(2)の統合例のうち図13の(2)に示されるように、距離が3ホップのFPGA#1及び#4にそれぞれ割り当てられた処理B及びEを統合する。図13の(2)に示されるパイプライン処理においては、図14に示されたように、FPGAボード3間のデータ転送回数が最小限の回数から4回増加する(図14の破線矢印参照)。
このように、制御部15がFPGA31間の距離に基づいて統合する2つの処理を選択する。すなわち、距離が短い(別言されれば、「ホップ数が少ない」)FPGA31の処理が優先して統合される。これにより、情報処理システム100における通信負荷を抑えることができる。
〔B−2〕動作
上述した実施形態の一例の情報処理システム100におけるデータパイプライン処理の統合動作を、図15に示されるフローチャート(ステップS1〜S7)に従って説明する。
制御部15は、ホップ数Nを1に設定する(ステップS1)。これにより、制御部15は、2つの処理を統合して実行するFPGA31からのホップ数Nが1のFPGA31に割り当てられている統合可能な処理を検索する。
制御部15は、各FPGA31に割り当てられている複数の処理の中から、ホップ数(別言されれば、「間隔」)Nの2つの処理を抽出する(ステップS2)。
制御部15は、第1判定部13及び第2判定部14による判定結果に基づき、2つの処理が統合可能であるかを判定する(ステップS3)。
2つの処理が統合可能でない場合には(ステップS3のNoルート参照)、処理はステップS5へ移行する。
一方、2つの処理が統合可能である場合には(ステップS3のYesルート参照)、制御部15は、2つの処理を統合する(ステップS4)。
制御部15は、ホップ数(別言されれば、「間隔」)Nの全処理を抽出済みであり、且つ、統合不可であるかを判定する(ステップS5)。
間隔Nの全処理を抽出済みでなく、又は、統合可能である場合には(ステップS5のNoルート参照)、処理はステップS2へ戻る。
一方、間隔Nの全処理を抽出済みであり、且つ、統合不可である場合には(ステップS5のYesルート参照)、制御部15は、ホップ数Nを1インクリメントする(ステップS6)。
制御部15は、ホップ数Nが閾値Hより大きいかを判定する(ステップS7)。
ホップ数Nが閾値H以下である場合には(ステップS7のNoルート参照)、処理はステップS2へ戻る。
一方、ホップ数Nが閾値Hより大きい場合には(ステップS7のYesルート参照)、処理は終了する。
以上のように、第1判定部13は、第1の処理の実行時間と、第2の処理の実行時間と、1つのFPGAボード3において第1の処理を実行する論理から第2の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する。また、第2判定部14は、第1の処理と第2の処理とを1つのFPGA31に実行させる場合に、複数のFPGA31の間におけるデータ通信量が閾値以下であるかを判定する。そして、制御部15は、第1判定部によって合計値が単位時間以下であると判定され、第2判定部によってデータ通信量が閾値以下であると判定された場合に、第1の処理と第2の処理とを1つのFPGA31に実行させる。
これにより、パイプライン処理における効率を向上させ、ハードウェア資源を有効に利用できる。
制御部15は、複数のFPGA31の間の接続関係において、処理の併合先のFPGA31と最も近い位置に接続された他のFPGA31に割り当てられた処理を、第2の処理として、処理の併合先のFPGA31に実行させる。また、データ通信量は、複数のFPGA31に備えられる監視回路312によって単位時間毎に計測される。
これらにより、情報処理システム100における通信負荷を抑えることができる。
〔C〕変形例
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
図16は、実施形態の変形例における情報処理システム200のハードウェア構成例を示すブロック図である。
広帯域バス42のトポロジは、図3等に示された隣り合うFPGAボード3間の接続に限られた構成に限定されない。すなわち、図16に示されるように、各FPGAボード3は、ブリッジ43を介して、他の複数のFPGAボード3と接続されてよい。
図16に示される変形例の情報処理システム200は、図3等に示された情報処理システム100が備える機能構成に加えて、1以上(図16に示される例では2つ)のブリッジ43(「ブリッジ#0又は#1」と称されてもよい。)を備える。
図16に示される例においては、広帯域バス45によって、FPGAボード#0とFPGAボード#1とが接続されており、FPGAボード#1とFPGAボード#2とが接続されている。また、図16に示される例においては、広帯域バス45によって、FPGAボード#3とFPGAボード#4とが接続されており、FPGAボード#4とFPGAボード#5とが接続されている。
図16に示される例においては、FPGAボード#0〜#2は広帯域バス45及びブリッジ#0を介して互いに接続されており、FPGAボード#3〜#5は広帯域バス45及びブリッジ#1を介して互いに接続されている。
ブリッジ#0とブリッジ#1とは、広帯域バス44を介して接続される。広帯域バス44により、FPGAボード#0〜#2のいずれかと、FPGAボード#3〜#5のいずれかとは、ブリッジ#0及び#1を介して互いに接続される。
図16に示される例において、FPGA#0〜#5は、処理A〜Fをそれぞれ実行する。
図17は、図16に示した変形例の情報処理システム200において図11の(2)に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
図16に示された情報処理システム200において、図11の(1)に示されたパイプライン処理に対して、図11の(2)に示されたように処理A及びBを統合すると、FPGAボード3間のデータ通信は、図17に示されるようになる。
まず、SDRAM2に記憶されている入力データAinがリードデータArとして共用バス41を介して読み出される。FPGA#0は、リードデータArを用いて、処理Aを実行する。処理Aの出力は、出力データAoとして、SDRAM#0に記憶される。
FPGA#0は、SDRAM#0に記憶された出力データAoを用いて、処理Bを実行する。処理Bの出力は、出力データBoとして、SDRAM#0に記憶される。
SDRAM#0に記憶された出力データBoは、リードデータCrとしてFPGAボード#0からFPGAボード#1へ広帯域バス45を介して転送される。FPGA#1は、リードデータCrを用いて、処理Cを実行する。処理Cの出力は、出力データCoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データCoは、リードデータDrとしてFPGAボード#1からFPGAボード#2へ広帯域バス45を介して転送される。FPGA#2は、リードデータDrを用いて、処理Dを実行する。処理Dの出力は、出力データDoとして、SDRAM#2に記憶される。
SDRAM#2に記憶された出力データDoは、リードデータErとしてFPGAボード#2からFPGAボード#3へ広帯域バス45,ブリッジ#0,広帯域バス44,ブリッジ#1及び広帯域バス45を介して転送される。FPGA#3は、リードデータErを用いて、処理Eを実行する。処理Eの出力は、出力データEoとして、SDRAM#3に記憶される。
SDRAM#3に記憶された出力データEoは、リードデータFrとしてFPGAボード#3からFPGAボード#4へ広帯域バス45を介して転送される。FPGA#4は、リードデータFrを用いて、処理Fを実行する。処理Fの出力は、出力データFoとして、SDRAM#4に記憶される。
SDRAM#4に記憶された出力データFoは、共用バス41を介してFPGAボード#4から出力され、例えばSDRAM2に記憶される。
図17に示されるように、実施形態の変形例における情報処理システム200においても、隣り合う(別言されれば、「ホップ数が1の」)FPGA31に割り当てられている処理を統合して実行することができる。
図18は、図16に示した変形例の情報処理システム200において図12の(2)に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
図16に示された情報処理システム200において、図12の(1)に示されたパイプライン処理に対して、図12の(2)に示されたように処理B及びDを統合すると、FPGAボード3間のデータ通信は、図18に示されるようになる。
まず、SDRAM2に記憶されている入力データAinがリードデータArとして共用バス41を介して読み出される。FPGA#0は、リードデータArを用いて、処理Aを実行する。処理Aの出力は、出力データAoとして、SDRAM#0に記憶される。
SDRAM#0に記憶された出力データAoは、リードデータBrとしてFPGAボード#0からFPGAボード#1へ広帯域バス45を介して転送される。FPGA#1は、リードデータBrを用いて、処理Bを実行する。処理Bの出力は、出力データBoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データBoは、リードデータCrとしてFPGAボード#1からFPGAボード#2へ広帯域バス45を介して転送される。FPGA#2は、リードデータCrを用いて、処理Cを実行する。処理Cの出力は、出力データCoとして、SDRAM#2に記憶される。
SDRAM#2に記憶された出力データCoは、リードデータDrとしてFPGAボード#2からFPGAボード#1へ広帯域バス45を介して転送される。FPGA#1は、リードデータDrを用いて、処理Dを実行する。処理Dの出力は、出力データDoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データDoは、リードデータErとしてFPGAボード#1からFPGAボード#3へ広帯域バス45,ブリッジ#0,広帯域バス44,ブリッジ#1及び広帯域バス45を介して転送される。FPGA#3は、リードデータErを用いて、処理Eを実行する。処理Eの出力は、出力データEoとして、SDRAM#3に記憶される。
SDRAM#3に記憶された出力データEoは、リードデータFrとしてFPGAボード#3からFPGAボード#4へ広帯域バス45を介して転送される。FPGA#4は、リードデータFrを用いて、処理Fを実行する。処理Fの出力は、出力データFoとして、SDRAM#4に記憶される。
SDRAM#4に記憶された出力データFoは、共用バス41を介してFPGAボード#4から出力され、例えばSDRAM2に記憶される。
図18に示されるパイプライン処理においては、破線矢印で示されるように、リードデータDrのFPGAボード3間の転送動作が、図17に示されたパイプライン処理と比較して増加する。
図18に示されるように、実施形態の変形例における情報処理システム200においても、隣り合わない(別言されれば、「ホップ数が2の」)FPGA31に割り当てられている処理を統合して実行することができる。
図19は、図16に示した変形例の情報処理システム200において図13の(2)に示したデータパイプライン処理におけるデータの流れを説明するブロック図である。
図16に示された情報処理システム200において、図13の(1)に示されたパイプライン処理に対して、図13の(2)に示されたように処理B及びEを統合すると、FPGAボード3間のデータ通信は、図19に示されるようになる。
まず、SDRAM2に記憶されている入力データAinがリードデータArとして共用バス41を介して読み出される。FPGA#0は、リードデータArを用いて、処理Aを実行する。処理Aの出力は、出力データAoとして、SDRAM#0に記憶される。
SDRAM#0に記憶された出力データAoは、リードデータBrとしてFPGAボード#0からFPGAボード#1へ広帯域バス45を介して転送される。FPGA#1は、リードデータBrを用いて、処理Bを実行する。処理Bの出力は、出力データBoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データBoは、リードデータCrとしてFPGAボード#1からFPGAボード#2へ広帯域バス45を介して転送される。FPGA#2は、リードデータCrを用いて、処理Cを実行する。処理Cの出力は、出力データCoとして、SDRAM#2に記憶される。
SDRAM#2に記憶された出力データCoは、リードデータDrとしてFPGAボード#2からFPGAボード#3へ広帯域バス45,ブリッジ#0,広帯域バス44,ブリッジ#1及び広帯域バス45を介して転送される。FPGA#3は、リードデータDrを用いて、処理Dを実行する。処理Dの出力は、出力データDoとして、SDRAM#3に記憶される。
SDRAM#3に記憶された出力データDoは、リードデータErとしてFPGAボード#3からFPGAボード#1へ広帯域バス45,ブリッジ#1,広帯域バス44,ブリッジ#0及び広帯域バス45を介して転送される。FPGA#1は、リードデータErを用いて、処理Eを実行する。処理Eの出力は、出力データEoとして、SDRAM#1に記憶される。
SDRAM#1に記憶された出力データEoは、リードデータFrとしてFPGAボード#1からFPGAボード#4へ広帯域バス45,ブリッジ#0,広帯域バス44,ブリッジ#1及び広帯域バス45を介して転送される。FPGA#4は、リードデータFrを用いて、処理Fを実行する。処理Fの出力は、出力データFoとして、SDRAM#4に記憶される。
SDRAM#4に記憶された出力データFoは、共用バス41を介してFPGAボード#4から出力され、例えばSDRAM2に記憶される。
図19に示されるパイプライン処理においては、破線矢印で示されるように、3回のリードデータErの転送動作及び2回のリードデータFrの転送動作が、図17に示されたパイプライン処理と比較して増加する。なお、2つのFPGAボード3間の転送動作、FPGAボード3とブリッジ43との間の転送動作、又は、2つのブリッジ43間の転送動作が、それぞれ1回の転送動作としてカウントされている。
図19に示されるように、実施形態の変形例における情報処理システム200においても、隣り合わない(別言されれば、「ホップ数が3の」)FPGA31に割り当てられている処理を統合して実行することができる。
制御部15は、複数のFPGA31の間の接続関係において、統合された処理を実行するFPGA31と最も近い位置に接続された他のFPGA31に割り当てられた処理を統合してFPGA31に実行させる。
制御部15は、図11の(2),図12の(2)及び図13の(2)の統合例のうち図11の(2)に示されるように、距離が1ホップのFPGA#0及び#1にそれぞれ割り当てられた処理A及びBを最も優先して統合する。図11の(2)に示されるパイプライン処理においては、図17に示されたように、FPGAボード3間のデータ転送量が最小限に抑えられる。
図11の(1)に示された処理A及びBの統合が、第1判定部13及び第2判定部14の判定結果により不可能な場合について考える。この場合には、制御部15は、図11の(2),図12の(2)及び図13の(2)の統合例のうち図12の(2)に示されるように、距離が2ホップのFPGA#1及び#3にそれぞれ割り当てられた処理B及びDを次に優先して統合する。図12の(2)に示されるパイプライン処理においては、図18に示されたように、FPGAボード3間のデータ転送回数が最小限の回数から1回増加する(図17の破線矢印参照)。
図11の(1)に示された処理A及びBの統合と、図12の(1)に示された処理B及びDの統合とが、いずれも、第1判定部13及び第2判定部14の判定結果により不可能な場合について考える。この場合には、制御部15は、図11の(2),図12の(2)及び図13の(2)の統合例のうち図13の(2)に示されるように、距離が3ホップのFPGA#1及び#4にそれぞれ割り当てられた処理B及びEを統合する。図13の(2)に示されるパイプライン処理においては、図19に示されたように、FPGAボード3間のデータ転送回数が最小限の回数から5回増加する(図19の破線矢印参照)。
このように、制御部15がFPGA31間の距離に基づいて統合する2つの処理を選択する。すなわち、距離が短い(別言されれば、「ホップ数が少ない」)FPGA31の処理が優先して統合される。これにより、情報処理システム200における通信負荷を抑えることができる。
〔D〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
統合可能な処理が3つ以上存在する場合には、制御部15は、識別番号(例えば、「#0〜#5」)が1番目に小さいFPGA31と2番目に小さいFPGA31とにそれぞれ割り当てられた2つの処理を統合してよい。例えば、図11の(1)に示された例では、FPGA#0に割り当てられている処理Aと、FPGA#1に割り当てられている処理Bとが、統合されてよい。これにより、パイプライン処理における統合動作を効率的に行なうことができる。
統合可能な処理が3つ以上存在する場合には、制御部15は、ランダムに統合する処理を選択してよい。例えば、図11の(1)に示された例では、FPGA#3に割り当てられている処理Dと、FPGA#4に割り当てられている処理Eとが、統合されてもよい。これにより、識別番号が小さいFPGA31への負荷を低減できる。
統合可能な処理が4つ以上存在する場合には、制御部15は、統合する処理を2組以上選択してよい。例えば、図11の(1)に示された例では、FPGA#0に割り当てられている処理AとFPGA#1に割り当てられている処理Bとが統合されるとともに、FPGA#3に割り当てられている処理DとFPGA#4に割り当てられている処理Eとも統合されてよい。これにより、パイプライン処理における効率をより向上させることができる。
1つのFPGA31において統合されて実行される処理の数は、2つに限定されない。3つ以上の処理の実行時間のそれぞれと論理の書き換え時間との合計値が1単位処理時間以下であれば、1つのFPGA31において、3つ以上の処理が統合されて実行されてよい。これにより、パイプライン処理における効率をより向上させることができる。
〔E〕付記
以上の実施形態及び変形例に関し、さらに以下の付記を開示する。
(付記1)
複数の処理装置と通信可能に接続される制御装置であって、
第1の処理の実行時間と、第2の処理の実行時間と、前記複数の処理装置のうちの第1の処理装置において前記第1の処理を実行する論理から前記第2の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する第1判定部と、
前記第1の処理と前記第2の処理とを前記第1の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定する第2判定部と、
前記第1判定部によって前記合計値が前記単位時間以下であると判定され、前記第2判定部によって前記データ通信量が前記閾値以下であると判定された場合に、前記第1の処理と前記第2の処理とを前記第1の処理装置に実行させる制御部と、
を備える、制御装置。
(付記2)
前記制御部は、前記複数の処理装置の間の接続関係において、前記複数の処理装置のうち、前記第1の処理装置と最も近い位置に接続された第2の処理装置に割り当てられた処理を、前記第2の処理として、前記第1の処理装置に実行させる、
付記1に記載の制御装置。
(付記3)
前記データ通信量は、前記複数の通信装置に備えられる計測部によって前記単位時間毎に計測される、
付記1又は2に記載の制御装置。
(付記4)
複数の処理装置と、
前記複数の処理装置と通信可能に接続される制御装置と、
を備え、
前記制御装置は、
第1の処理の実行時間と、第2の処理の実行時間と、前記複数の処理装置のうちの第1の処理装置において前記第1の処理を実行する論理から前記第2の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定する第1判定部と、
前記第1の処理と前記第2の処理とを前記第1の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定する第2判定部と、
前記第1判定部によって前記合計値が前記単位時間以下であると判定され、前記第2判定部によって前記データ通信量が前記閾値以下であると判定された場合に、前記第1の処理と前記第2の処理とを前記第1の処理装置に実行させる制御部と、
を備える、情報処理システム。
(付記5)
前記制御部は、前記複数の処理装置の間の接続関係において、前記複数の処理装置のうち、前記第1の処理装置と最も近い位置に接続された第2の処理装置に割り当てられた処理を、前記第2の処理として、前記第1の処理装置に実行させる、
付記4に記載の情報処理システム。
(付記6)
前記複数の通信装置は、
前記単位時間毎に前記データ通信量を計測する計測部を備える、
付記4又は5に記載の情報処理システム。
(付記7)
複数の処理装置と通信可能に接続されるコンピュータに、
第1の処理の実行時間と、第2の処理の実行時間と、前記複数の処理装置のうちの第1の処理装置において前記第1の処理を実行する論理から前記第2の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定し、
前記第1の処理と前記第2の処理とを前記第1の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定し、
前記合計値が前記単位時間以下であると判定され、前記データ通信量が前記閾値以下であると判定された場合に、前記第1の処理と前記第2の処理とを前記第1の処理装置に実行させる、
処理を実行させる、プログラム。
(付記8)
前記複数の処理装置の間の接続関係において、前記複数の処理装置のうち、前記第1の処理装置と最も近い位置に接続された第2の処理装置に割り当てられた処理を、前記第2の処理として、前記第1の処理装置に実行させる、
処理を前記コンピュータに実行させる、付記7に記載のプログラム。
(付記9)
前記データ通信量は、前記単位時間毎に計測される、
付記7又は8に記載のプログラム。
(付記10)
複数の処理装置と通信可能に接続される制御装置は、
第1の処理の実行時間と、第2の処理の実行時間と、前記複数の処理装置のうちの第1の処理装置において前記第1の処理を実行する論理から前記第2の処理を実行する論理に書き換える時間との合計値が、単位時間以下であるかを判定し、
前記第1の処理と前記第2の処理とを前記第1の処理装置に実行させる場合に、前記複数の処理装置の間におけるデータ通信量が閾値以下であるかを判定し、
前記合計値が前記単位時間以下であると判定され、前記データ通信量が前記閾値以下であると判定された場合に、前記第1の処理と前記第2の処理とを前記第1の処理装置に実行させる、
情報処理方法。
(付記11)
前記制御装置は、
前記複数の処理装置の間の接続関係において、前記複数の処理装置のうち、前記第1の処理装置と最も近い位置に接続された第2の処理装置に割り当てられた処理を、前記第2の処理として、前記第1の処理装置に実行させる、
付記10に記載の情報処理方法。
(付記12)
前記複数の通信装置は、
前記単位時間毎に前記データ通信量を計測する、
付記10又は11に記載の情報処理方法。