(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-11
(45)【発行日】2024-11-19
(54)【発明の名称】リソース制御装置、リソース制御システム、および、リソース制御方法
(51)【国際特許分類】
G06F 9/48 20060101AFI20241112BHJP
【FI】
G06F9/48 300C
(21)【出願番号】P 2022581083
(86)(22)【出願日】2021-02-10
(86)【国際出願番号】 JP2021004998
(87)【国際公開番号】W WO2022172365
(87)【国際公開日】2022-08-18
【審査請求日】2023-06-12
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110001807
【氏名又は名称】弁理士法人磯野国際特許商標事務所
(72)【発明者】
【氏名】中村 哲朗
(72)【発明者】
【氏名】白神 彰則
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2000-155693(JP,A)
【文献】特開2019-082819(JP,A)
【文献】特開2015-130135(JP,A)
【文献】特開2007-004340(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、
前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、
前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、
を備え
、
前記コントローラ部は、
前記プログラムによって指定された数のIPコアを確保すると共に、IPコアの排他的使用の指定を受け付けると、各プログラムに対してIPコアを固定的に割り当てたマップを作成して管理する使用IPコア制御部を備え、
前記使用IPコア制御部は、
前記プログラムによって新たに指定されたIPコアの数の総和がFPGAのIPコアの数を超えたならば、この指定を受け付けない、
ことを特徴とするリソース制御装置。
【請求項2】
前記スケジューラ部は、
タスクの取り出し元となるユーザキューを選択するユーザキュー間スケジューラ部と、
前記ユーザキュー間スケジューラ部が選択した前記ユーザキュー内で、タスクが登録されているキューのうち最も優先度の高いキューからタスクを取り出すユーザキュー内スケジューラ部と、
を備えることを特徴とする請求項1に記載のリソース制御装置。
【請求項3】
前記スケジューラ部は、
各タスクに対して、指定されていないIPコアを使用しないように制御するIPコアマスク設定部を更に備える、
ことを特徴とする請求項1に記載のリソース制御装置。
【請求項4】
前記共通部は、
新たにプログラムが起動する毎に、当該プログラム用のユーザキューを作成するユーザキュー作成部を備える、
ことを特徴とする請求項1に記載のリソース制御装置。
【請求項5】
前記共通部は、
前記プログラムからタスクを受け付けると、識別子に基づいて当該プログラムに係るユーザキューを選択し、タスク優先度を元に前記ユーザキューに前記タスクを登録する、
ことを特徴とする請求項1に記載のリソース制御装置。
【請求項6】
プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、
前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、
前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、
を備え
、
前記コントローラ部は、
前記プログラムによって指定された数のIPコアを確保すると共に、IPコアの排他的使用の指定を受け付けると、各プログラムに対してIPコアを固定的に割り当てたマップを作成して管理する使用IPコア制御部を備え、
前記使用IPコア制御部は、
前記プログラムによって新たに指定されたIPコアの数の総和がFPGAのIPコアの数を超えたならば、この指定を受け付けない、
ことを特徴とするリソース制御システム。
【請求項7】
プログラムがタスクを実行するFPGAのIPコアに係るリソースをコントローラ部が設定するステップと、
共通部が、前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納するステップと、
スケジューラ部が、前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するステップと、
前記コントローラ部の使用IPコア制御部が、前記プログラムによって指定された数のIPコアを確保すると共に、IPコアの排他的使用の指定を受け付けると、各プログラムに対してIPコアを固定的に割り当てたマップを作成して管理するステップと、
前記使用IPコア制御部が、前記プログラムによって新たに指定されたIPコアの数の総和がFPGAのIPコアの数を超えたならば、この指定を受け付けないステップと、
を備えることを特徴とするリソース制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、FPGAのリソース制御装置、リソース制御システム、および、リソース制御方法に関する。
【背景技術】
【0002】
近年、推論用畳み込みニューラルネットワークがIPコア(Intellectual Property Core)単位で複数搭載されたFPGA(Field-Programmable Gate Array)が使われるようになっている(非特許文献1,2参照)。このようなFPGAは、複数のユースケース(例えば:ポーズ同定・人物検出・物体検出など)で使用可能である。エンドユーザはそれらIPコア機能を書き換えることなく、同程度の実行時間オーダを持つタスク毎にFPGAを利用することが可能である。FPGAで実施される共通処理は各エンドユーザのホストCPUプログラムがFPGAに処理を渡すことで開始され、FPGAでの各処理は非プリエンプティブなタスクとして実行された後、CPU(Central Processing Unit)に実行結果が返却される。FPGAの共通機能で実現できない各エンドユーザ固有の処理は、CPUプログラム内で実施される。
【先行技術文献】
【非特許文献】
【0003】
【文献】Xilinx Vitis-AI,[令和3年2月1日検索日],インターネット<URL:https://github.com/Xilinx/Vitis-AI>
【文献】M. Bacis, R. Brondolin and M. D. Santambrogio, "BlastFunction: an FPGA-as-a-Service system for Accelerated Serverless Computing," 2020 Design, Automation & Test in Europe Conference & Exhibition (DATE), Grenoble, France, 2020, pp. 852-857, doi: 10.23919/DATE48585.2020.9116333.
【発明の概要】
【発明が解決しようとする課題】
【0004】
FPGAをクラウドサーバに搭載して、サービスを提供するときには、抽象性と柔軟性と制御性と公平性の要件を満たすことが望ましい。
抽象性とは、IPコアマスクなどのクラウド内部の情報がユーザに露呈しないことをいう。柔軟性とは、FPGAの中のIPコア数などのように必要なリソース量について、プログラムの外部から動的に変更できることをいう。制御性とは、各ユーザがそのユーザのもつ他のタスクに対してあるタスクの優先度を相対的に設定できることをいう。公平性とは、ユーザの要求するFPGAリソース量と実際に得られる実行時間に差がないことをいう。
単に各ユーザのプログラムをマルチプロセスとして複数動作させた場合、抽象性と柔軟性と制御性と公平性の要件を同時に満たせないという問題がある。
そこで、本発明は、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることを課題とする。
【課題を解決するための手段】
【0005】
前記した課題を解決するため、本発明のリソース制御装置は、プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、を備え、前記コントローラ部は、前記プログラムによって指定された数のIPコアを確保すると共に、IPコアの排他的使用の指定を受け付けると、各プログラムに対してIPコアを固定的に割り当てたマップを作成して管理する使用IPコア制御部を備え、前記使用IPコア制御部は、前記プログラムによって新たに指定されたIPコアの数の総和がFPGAのIPコアの数を超えたならば、この指定を受け付けないことを特徴とする。
その他の手段については、発明を実施するための形態のなかで説明する。
【発明の効果】
【0006】
本発明によれば、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることが可能となる。
【図面の簡単な説明】
【0007】
【
図1】本実施形態におけるアクセラレータデバイス共有のためのリソース制御装置の構成図である。
【
図2】リソース制御装置における動作の一例を示す図である。
【
図3】リソース制御装置によるIPコアの排他的使用動作の一例を示す図である。
【
図4】ホストマシンのユーザ空間に配備されたリソース制御装置の一例を示す図である。
【
図5】ホストマシンのOSカーネルに配備されたリソース制御装置の一例を示す図である。
【
図6】コントローラ部を他のホストマシンのユーザ空間に配備したリソース制御システムの一例を示す図である。
【発明を実施するための形態】
【0008】
以降、比較例と本発明を実施するための形態とを、各図を参照して詳細に説明する。
《比較例》
図7は、比較例のリソース制御装置1Gの構成図である。
リソース制御装置1Gは、ハードウエアとして実装されたFPGA8を含み、不図示のCPUがソフトウエアプログラムを実行することによって、キューセット5Gおよびスケジューラ部7Gが具現化されている。このリソース制御装置1Gは、例えばデータセンタに設置されて、各ユーザに対してインターネット経由でサービスを提供するクラウドサーバである。
【0009】
FPGA8は、複数のIPコア81~83を含んで構成されており、同時に複数のタスクを非プリエンプティブに実行する。
図7では、IPコア81のことを「IPコア#0」と記載し、IPコア82のことを「IPコア#1」と記載し、IPコア83のことを「IPコア#2」と記載している。
【0010】
キューセット5Gは、複数のキュー50,51~5Fを備えている。キュー50の優先度は、他の何れのキューの優先度よりも低いため、
図7では「キュー#0」と記載している。キュー51の優先度は、キュー50の優先度よりも高いが、その他の何れのキューの優先度よりも低いため、
図7では「キュー#1」と記載している。キュー5Fの優先度は、他の何れのキューの優先度よりも高いため、
図7では「キュー#15」と記載している。
【0011】
スケジューラ部7Gは、固定優先度スケジューラ部74を備えており、キュー50,51~5Fに格納されたタスク6a~6dを、各キューの優先度順にスケジューリングしてFPGA8に実行させる。
【0012】
リソース制御装置1Gは、複数のユーザプログラム3a,3bからタスク6a~6dなどを受け付けて、FPGA8に実行させる。そのため、ユーザプログラム3a,3bは、IPコアマスク設定部31と、タスク優先度設定部32とを備えている。タスク6aは、人物を特定するタスクである。タスク6b,6cは、ポーズを同定するタスクである。これらタスク6a~6cは、ユーザプログラム3aの指示を受けてFPGA8が実行する。タスク6dは、物体を認識するタスクである。タスク6dは、ユーザプログラム3bの指示を受けてFPGA8が実行する。
【0013】
IPコアマスク設定部31は、FPGA8のIPコア81~83のうち、何れにタスクを実行させるか、または何れにタスクを実行させないかを設定するものである。つまり、使用したいIPコアについて、コアマスクがユーザプログラム3a,3bなどから直接指定できてしまう。そのため、クラウドサーバの内部情報がユーザに露呈してしまい、抽象性に欠けるという欠点がある。
【0014】
タスク優先度設定部32は、タスクの優先度を設定するものである。タスク優先度設定部32は、キューセット5Gのキュー50,51~5Fのうち、何れにタスクを格納するかを決定する。タスク優先度設定部32により、各ユーザは、このユーザの他のタスクに対して、或るタスクの優先度を相対的に設定できる。具体的にいうと、人物を特定するタスク6aよりもポーズを同定するタスク6b,6cを先に実行させることができる。
しかし、使用したいFPGA8のリソース量がユーザプログラム3a,3bの内部で決定されてしまうため、ユーザプログラム3a,3bの外部から動的に変更することができず、柔軟性がないという欠点がある。
【0015】
固定優先度スケジューラ部74は、単に優先度の高いキューに格納されているタスクから順に取り出してIPコアに割り当てる。よってユーザは、タスクに対して使用したいリソース量を指定できない。そして、ユーザプログラムが要求するFPGA8のリソース量と、実際に得られる実行時間の期待値に差が発生し、公平性に欠けるおそれがある。
【0016】
つまり、単にユーザプログラムをマルチプロセスとして複数動作させた場合、抽象性と柔軟性と制御性と公平性の要件を同時に満たせないおそれがある。
【0017】
《本実施形態》
図1は、本実施形態におけるアクセラレータデバイス共有のためのリソース制御装置1の構成図である。
リソース制御装置1は、ハードウエアとして実装されたFPGA8を含み、不図示のCPUがソフトウエアプログラムを実行することによって、コントローラ部2、共通部4、ユーザキュー5a,5bおよびスケジューラ部7が具現化されている。このリソース制御装置1は、例えばデータセンタに設置されて、各ユーザに対してインターネット経由でサービスを提供するクラウドサーバである。
【0018】
コントローラ部2は、コマンド受付部21と、ユーザキュー管理部22と、使用IPコア制御部23とを含んでいる。コントローラ部2は、IPコア設定に関する機能を有しており、プログラムがタスクを実行するFPGA8のIPコア81~83に係るリソースを設定する。コントローラ部2がIPコアの空き状態を見て内部でIPコアマスクを指定し、スケジューラ部7に設定する。そのため、クラウドサーバ内部の情報がユーザプログラム3a,3bなどに露呈しなくなる。また、コントローラ部2がコマンド受付部21を備えることにより、リソースが動的に制御できるので、柔軟性を持たせることができる。
【0019】
コマンド受付部21は、ユーザからのリソース制御命令についてプログラム外から動的に受け付ける。リソース制御命令は、使用IPコア数やIPコアを排他的に使用するか否かなどが記載された命令である。コマンド受付部21は、リソース制御命令が受け付けられなかった場合、ユーザにその旨を報知する。
【0020】
ユーザキュー管理部22は、ユーザプログラム3a,3bなどが立ち上がるごとに、このプログラム用のユーザキューの作成を、共通部4のユーザキュー作成部41に通達する。
【0021】
使用IPコア制御部23は、物理ホスト内のFPGA8のIPコア81~83の占有/空き状態を管理し、コマンド受付部21から指定された数のIPコアを確保し、必要に応じてユーザ毎に排他的となるように固定的に割り当てたマップを作成して管理する。また、使用IPコア制御部23は、タスクにIPコア81~83のうち何れかを割り当てた割り当て情報を更新する度に、スケジューラ部7に割り当て情報を通達する。使用IPコア制御部23は、ユーザプログラムが実行しようとするタスクに対して空きIPコアの数が足りない場合、この指定が受け付けられない旨をコマンド受付部21に通達する。そしてコマンド受付部21は、ユーザからのリソース制御命令が受け付けられなかった旨を、このユーザに報知する。
【0022】
共通部4は、ユーザキュー作成部41と、ユーザキュー振分部42とを含んでいる。共通部4は、プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、このユーザキューにタスクを格納する。
ユーザキュー作成部41は、コントローラ部2から使用可能なユーザキューに関する情報を受け取り、新たにプログラムがデプロイされて起動する毎に、このプログラム用のユーザキューを作成する。
【0023】
ユーザキュー振分部42は、プログラムからタスクを受け付けると、このプログラムに付与されたユーザ識別子に対応するユーザキューを選択し、ユーザプログラム3a,3b内のタスクの優先度を元に、該当する優先度のキューにタスクを格納する。なお、ユーザプログラム3a,3bは、タスク優先度設定部32を備え、各タスクに優先度を設定する。
【0024】
ユーザプログラム3aのタスク優先度設定部32は、タスク6a,6bに優先度#0を設定して共通部4に引き渡し、タスク6cに優先度#1を設定して共通部4に引き渡す。
ユーザプログラム3bのタスク優先度設定部32は、タスク6dに優先度#1を設定して共通部4に引き渡す。タスク6a,6bがユーザキュー5aのキュー50に格納され、タスク6cがユーザキュー5aのキュー51に格納されている。タスク6dがユーザキュー5bのキュー51に格納されている。
【0025】
スケジューラ部7は、ユーザキュー間スケジューラ部71と、ユーザキュー内スケジューラ部72と、IPコアマスク設定部73とを含んでいる。スケジューラ部7は、ユーザキュー内およびユーザキュー間にて多段スケジューリングによりIPコア81~83の何れかに実行させるタスクを選択する。
ユーザキュー間スケジューラ部71は、ラウンドロビン等の公平なアルゴリズムによって、タスクの取り出し元とのなるユーザキュー5a,5bを選択する。これらユーザキュー5a,5bは、複数の優先度を持つキュー50,51のセットである。なお、ユーザキュー5a,5bは、16段階の優先度を持つキューセットであるが、そのうち2つのキューのみを図示している。
【0026】
ユーザキュー内スケジューラ部72は、ユーザキュー間スケジューラ部71が選択したユーザキュー内で、最も優先度の高いキューからタスクを取り出す等、優先度を考慮したアルゴリズムによって、実行するタスクを選択する。ユーザキュー内スケジューラ部72は、ユーザキュー5a,5bの中で、ユーザキュー間スケジューラ部71とは独立にユーザのタスクのスケジューリングを行うことで、各タスクの優先制御が可能となる。つまり、ユーザキュー内スケジューラ部72とユーザキュー間スケジューラ部71は、リソース制御装置1の制御性を実現している。
【0027】
IPコアマスク設定部73は、コントローラ部2からの情報を受け取り、各タスクにIPコアマスクを設定し、指定されていないIPコアを使用しないように制御する。ここでIPコアマスクとは、タスクに対するIPコアの指定のことをいう。
【0028】
共通部4は、各優先度のキューを内包する独立したユーザキュー5a,5bを複数用意する。さらにスケジューラ部7は、どのユーザキュー5a,5bを選択するか決定するユーザキュー間スケジューラ部71を含んでいる。共通部4は、ユーザキュー内スケジューラ部72の優先制御アルゴリズムとユーザキュー間スケジューラ部71のアルゴリズムを併せて多段でスケジュールすることで、FPGA8のリソース割り当ての公平性を担保する。
【0029】
図2は、リソース制御装置1における動作の一例を示す図である。
図2のコントローラ部2には、リソース制御命令20a~20cが順番に通知される。
最初、コントローラ部2に、リソース制御命令20aが通知される。リソース制御命令20aは、ユーザプログラムA(ユーザプログラム3a)に係るデプロイ要求である旨と、使用するIPコア数が2個であることが記載されている。ユーザプログラム3aと一緒にリソース制御命令20aをコントローラ部2に通知することで、ユーザプログラム3aがデプロイされて、その実行が開始される。コントローラ部2は、FPGA8内の2個のIPコアとユーザプログラム3aとのマッピングを管理する。このとき、FPGA8内の2個のIPコアが、ユーザプログラム3aのタスク実行に割り当てられている。
【0030】
次にコントローラ部2には、リソース制御命令20bが通知される。リソース制御命令20bは、ユーザプログラムB(ユーザプログラム3b)に係るデプロイ要求である旨と、使用するIPコア数が1個であることが記載されている。既にユーザプログラム3aが実行中でも、ユーザプログラム3bと一緒にリソース制御命令20bをコントローラ部2に通知することで、ユーザプログラム3bがデプロイされて、その実行が開始される。コントローラ部2は、FPGA8内の1個のIPコアとユーザプログラム3bとのマッピングを管理する。
【0031】
このとき、FPGA8内の2個のIPコアが、ユーザプログラム3aのタスク実行に割り当てられており、残り1個のIPコアが、ユーザプログラム3bのタスク実行に割り当てられている。
【0032】
最後にコントローラ部2には、リソース制御命令20cが通知される。リソース制御命令20cは、不図示のユーザプログラムCに係るコマンドである。既にユーザプログラム3a,3bが実行中であり、FPGA8内の全てのIPコアが、これらユーザプログラム3a,3bに割り当てられている。よってリソース容量を超えたデプロイリクエストであるため、コントローラ部2は、その旨をユーザに通知し、かつ当該ユーザプログラムCをデプロイしない。
【0033】
ユーザプログラム3a,3bがデプロイされているとき、スケジューラ部7のユーザキュー内スケジューラ部72は、ラウンドロビン等のアルゴリズムにより、ユーザプログラム3a,3bの実行時間の比を2:1に調整する。この実行時間の比は、リソース制御命令20a,20bにおけるIPコアの個数の比と等しい。これにより、コントローラ部2は、ユーザプログラム3a,3bに対して公平にFPGA8のIPコアを割り当てることができる。
【0034】
図3は、リソース制御装置1によるIPコアの排他的使用動作の一例を示す図である。
図3のコントローラ部2には、リソース制御命令20a,20bが通知されている。
リソース制御命令20aは、ユーザプログラムA(ユーザプログラム3a)に係るデプロイリクエストである旨と、使用するIPコア数が2個であることと、IPコアを排他的に使用することが記載されている。
ユーザがユーザプログラム3aと一緒にリソース制御命令20aをコントローラ部2に通知することで、ユーザプログラム3aがデプロイされて、その実行が開始される。コントローラ部2は、FPGA8内の2個のIPコアを管理し、ユーザプログラム3aとIPコアとの排他的なマッピングを管理する。このとき、FPGA8内の2個のIPコアが、ユーザプログラム3aのタスク実行に排他的に割り当てられている。
【0035】
リソース制御命令20bは、ユーザプログラムB(ユーザプログラム3b)に係るデプロイリクエストである旨と、使用するIPコア数が1個であることと、IPコアを排他的に使用することが記載されている。
既にユーザプログラム3aが実行中でも、ユーザがユーザプログラム3bと一緒にリソース制御命令20bをコントローラ部2に通知することで、ユーザプログラム3bがデプロイされて、その実行が開始される。コントローラ部2は、FPGA8内のIPコアとユーザプログラム3a,3bとのマッピングを管理する。このとき、FPGA8内の2個のIPコアが排他的にユーザプログラム3aのタスク実行に割り当てられており、残り1個のIPコアが排他的にユーザプログラム3bのタスク実行に割り当てられている。
【0036】
図4は、ホストマシン1Bのユーザ空間に配備されたリソース制御装置1の一例を示す図である。
ホストマシン1Bは、ハードウエア層としてCPU93とFPGA8を備え、OS(Operating System)92がインストールされている。ホストマシン1Bのユーザ空間には、コントローラ部2とFPGAライブラリ91が具現化されており、ユーザプログラム3a,3bがデプロイされている。
【0037】
FPGAライブラリ91は、マルチキュー5とスケジューラ部7を含んでおり、コントローラ部2と組み合わせて、前述したリソース制御装置1として動作する。マルチキュー5には、ユーザプログラムがデプロイされるごとに、新たなユーザキューが生成される。スケジューラ部7は、
図1に示したユーザキュー間スケジューラ部71と、ユーザキュー内スケジューラ部72と、IPコアマスク設定部73に相当する部位を含んでいる。
【0038】
コントローラ部2は、マルチキュー5とスケジューラ部7にコマンドを通達する。FPGAライブラリ91は、OS92にインストールされたFPGAドライバ94を介して、FPGA8とIPコア81~83にタスクを実行させる。
【0039】
図5は、ホストマシン1CのOS92のカーネル空間に配備されたリソース制御装置1の一例を示す図である。
ホストマシン1Cは、ハードウエア層としてCPU93とFPGA8を備え、OS92がインストールされている。ホストマシン1BのOS92のカーネル空間には、コントローラ部2と、CPUスケジューラ921と、FPGAドライバ94とがインストールされている。ホストマシン1Cのユーザ空間には、FPGAライブラリ91とユーザプログラム3a,3bがデプロイされている。
【0040】
コントローラ部2は、CPU制御部24と、デバイス制御部25と、GPU(Graphic Processing Unit)制御部26と、FPGA制御部27とを含んで構成される。
CPU制御部24は、CPU93内に構成されているコア931~932に対して制御を行う部位であり、CPUスケジューラ921に対して指示を通達する。
【0041】
GPU制御部26は、不図示のGPUを制御する部位である。FPGA制御部27は、FPGA8を制御する部位であり、
図1に示したコマンド受付部21とユーザキュー管理部22と使用IPコア制御部23に相当する部位を含んでいる。
【0042】
FPGAドライバ94は、マルチキュー5とスケジューラ部7を含んでいる。マルチキュー5とスケジューラ部7は、FPGA制御部27によって制御される。マルチキュー5には、ユーザプログラムが新たにデプロイされるごとに、新たなユーザキューが生成される。スケジューラ部7は、
図1に示したユーザキュー間スケジューラ部71と、ユーザキュー内スケジューラ部72と、IPコアマスク設定部73に相当する部位を含んでいる。
【0043】
図6は、コントローラ部2を他のホストマシン1Dのユーザ空間に配備したリソース制御システムの一例を示す図である。
図6に示すリソース制御システムは、ホストマシン1Eに加えて、コントローラ部2が配備されているホストマシン1Dを含んで構成される。ホストマシン1Dは、ハードウエア層としてCPU93を備え、OS92がインストールされている。ホストマシン1Dのユーザ空間には、コントローラ部2が具現化されている。このコントローラ部2は、
図1に示したコントローラ部2と同様の機能を有している。
【0044】
ホストマシン1Eは、ハードウエア層としてCPU93とFPGA8を備え、OS92がインストールされている。ホストマシン1Eのユーザ空間には、FPGAライブラリ91が具現化されており、ユーザプログラム3a,3bがデプロイされている。このFPGAライブラリ91は、
図1に示したFPGAライブラリ91と同様の機能を有している。
【0045】
FPGAライブラリ91は、マルチキュー5とスケジューラ部7を含んでおり、ホストマシン1Dのコントローラ部2と組み合わせて、前述したリソース制御装置1として動作する。マルチキュー5には、ユーザプログラムがデプロイされるごとに、このユーザプログラムに対応した新たなユーザキューが生成される。スケジューラ部7は、
図1に示したユーザキュー間スケジューラ部71と、ユーザキュー内スケジューラ部72と、IPコアマスク設定部73に相当する部位を含んでいる。
【0046】
コントローラ部2は、マルチキュー5とスケジューラ部7にコマンドを通達する。FPGAライブラリ91は、OS92にインストールされたFPGAドライバ94を介して、FPGA8とIPコア81~83にタスクを実行させる。
【0047】
《効果》
以下、本発明に係るリソース制御装置、リソース制御システム、および、リソース制御方法等の効果について説明する
。
【0048】
《請求項1》
プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、
前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、
前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、
を備えることを特徴とするリソース制御装置。
【0049】
これにより、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることができる。
【0050】
《請求項2》
前記スケジューラ部は、
タスクの取り出し元となるユーザキューを選択するユーザキュー間スケジューラ部と、
前記ユーザキュー間スケジューラ部が選択した前記ユーザキュー内で、タスクが登録されているキューのうち最も優先度の高いキューからタスクを取り出すユーザキュー内スケジューラ部と、
を備えることを特徴とする請求項1に記載のリソース制御装置。
【0051】
これにより、マルチユーザ間とユーザ内の多段スケジューリングを実現し、FPGAのリソース効率を高めることができる。
【0052】
《請求項3》
前記スケジューラ部は、
各タスクに対して、指定されていないIPコアを使用しないように制御するIPコアマスク設定部を更に備える、
ことを特徴とする請求項1に記載のリソース制御装置。
【0053】
これにより、マルチユーザ間とユーザ内の多段スケジューリングを実現し、FPGAのリソース効率を高めることができる。
【0054】
《請求項4》
前記コントローラ部は、
前記プログラムによって指定された数のIPコアを確保すると共に、IPコアの排他的使用の指定を受け付けると、各プログラムに対してIPコアを固定的に割り当てたマップを作成して管理する使用IPコア制御部を備え、
前記使用IPコア制御部は、
前記プログラムによって新たに指定されたIPコアの数の総和がFPGAのIPコアの数を超えたならば、この指定を受け付けない、
ことを特徴とする請求項1に記載のリソース制御装置。
【0055】
これにより、マルチユーザ間でFPGAの機能を好適に共用することができる。
《請求項5》
前記共通部は、
新たにプログラムが起動する毎に、当該プログラム用のユーザキューを作成するユーザキュー作成部を備える、
ことを特徴とする請求項1に記載のリソース制御装置。
【0056】
これにより、マルチユーザ間で公平にFPGAのリソースを共用することができる。
【0057】
《請求項6》
前記共通部は、
前記プログラムからタスクを受け付けると、識別子に基づいて当該プログラムに係るユーザキューを選択し、タスク優先度を元に前記ユーザキューに前記タスクを登録する、
ことを特徴とする請求項1に記載のリソース制御装置。
【0058】
これにより、マルチユーザ間で公平にFPGAのリソースを共用することができる。
【0059】
《請求項7》
プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、
前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、
前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、
を備えることを特徴とするリソース制御システム。
【0060】
これにより、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることができる。
【0061】
《請求項8》
プログラムがタスクを実行するFPGAのIPコアに係るリソースをコントローラ部が設定するステップと、
共通部が、前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納するステップと、
スケジューラ部が、前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するステップと、
を実行することを特徴とするリソース制御方法。
【0062】
これにより、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることができる。
【符号の説明】
【0063】
1,1G リソース制御装置
1B,1C,1D,1E ホストマシン
2 コントローラ部
20a~20c リソース制御命令
21 コマンド受付部
22 ユーザキュー管理部
23 使用IPコア制御部
24 CPU制御部
25 デバイス制御部
26 GPU制御部
27 FPGA制御部
3a ユーザプログラム
3b ユーザプログラム
31 IPコアマスク設定部
32 タスク優先度設定部
4 共通部
41 ユーザキュー作成部
42 ユーザキュー振分部
5 マルチキュー
5a,5b ユーザキュー
5G キューセット
50,51,5F キュー
6a~6d タスク
7 スケジューラ部
7G スケジューラ部
71 ユーザキュー間スケジューラ部
72 ユーザキュー内スケジューラ部
73 IPコアマスク設定部
74 固定優先度スケジューラ部
8 FPGA
81~83 IPコア
91 FPGAライブラリ
92 OS
921 CPUスケジューラ
93 CPU
931~933 コア
94 FPGAドライバ