JPWO2017199383A1 - Pld管理方法及びpld管理システム - Google Patents

Pld管理方法及びpld管理システム Download PDF

Info

Publication number
JPWO2017199383A1
JPWO2017199383A1 JP2017544369A JP2017544369A JPWO2017199383A1 JP WO2017199383 A1 JPWO2017199383 A1 JP WO2017199383A1 JP 2017544369 A JP2017544369 A JP 2017544369A JP 2017544369 A JP2017544369 A JP 2017544369A JP WO2017199383 A1 JPWO2017199383 A1 JP WO2017199383A1
Authority
JP
Japan
Prior art keywords
pld
fpga
request
usage
management system
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.)
Granted
Application number
JP2017544369A
Other languages
English (en)
Other versions
JP6368434B2 (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2017199383A1 publication Critical patent/JPWO2017199383A1/ja
Application granted granted Critical
Publication of JP6368434B2 publication Critical patent/JP6368434B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Abstract

PLD管理システムが、1以上のPLDの各々の使用状況を管理するPLD管理部を備える。PLD管理部は、1以上のPLDの各々を共有する複数の処理モジュールのいずれかである要求元モジュールからPLDの利用要求を受け付ける。PLD管理部は、利用要求を受け付けたときに、その利用要求に該当するPLDの現在の使用状況と、その利用要求の内容に基づき、要求元モジュールを含む2以上の処理モジュールが同一のPLDを同時に使用しないように制御する。

Description

本発明が、概して、PLD(Programmable Logic Device)を管理する方法及びシステムに関する。
近年、CPUの性能向上が鈍化傾向にあり、CPUだけでなく、FPGA(Field Programmable Gate Array)を利用して高速に計算する計算装置に関する研究が盛んに行われている。FPGAは、PLDの一例である。
FPGAの使い方としては、電源投入時にFPGAコンフィグデータをFPGAにロードして、専用ハードウェアとして使う方法が一般的である。この方法では、電源起動時のみにFPGAコンフィグデータをロードするので、複数アプリケーションでFPGAをシェアしたい場合は、使用する可能性のある全てのアプリケーションの機能に対応したFPGAコンフィグデータをロードする必要がある。しかし、1つのアプリケーションでは、一部の機能のみしか使用できず、また、全てのアプリケーションが使用されるとは限らないため、FPGAを効率的に利用できていない。
特許文献1には「CPUのバスラインにFPGAボード(プログラマブル論理回路)を設け、フロッピィディスク装置などの外部記憶装置からアプリケーションプログラムとともにFPGAボードに書き込むべき回路データをロードし、FPGAボードに回路データを書き込むことによって、FPGAボードをそのアプリケーションにおける専用の論理回路として用いる。」という技術が開示されている。
特開平5−150943号公報
特許文献1に記載の処理を行うと、アプリケーション毎に最適なFPGAコンフィグデータをロードすることができる。
しかし、複数アプリケーションが同時動作した時、または1つのアプリケーションでも複数の指示を受けて並列に動作する時に、同時に同一FPGAを使ってしまうと正しい結果が得られなくなるが、その回避方法については特許文献1に記載されていない。また、効率よく同一FPGAをシェアする方法についても特許文献1に記載されていない。
同様の課題は、FPGA以外のPLD(Programmable Logic Device)が利用される場合にも発生し得る。
PLD管理システムが、1以上のPLDの各々の使用状況を管理するPLD管理部を備える。PLD管理部は、1以上のPLDの各々を共有する複数の処理モジュールのいずれかである要求元モジュールからPLDの利用要求を受け付ける。PLD管理部は、利用要求を受け付けたときに、その利用要求に該当するPLDの現在の利用状況と、その利用要求の内容とに基づき、要求元モジュールを含む2以上の処理モジュールが同一のPLDを同時に使用しないように制御する。
本発明によれば、複数の処理モジュールが同時に同一のPLDを使用することを回避でき、且つ、効率良く同一PLDを使用することが可能となる。更に、複数のPLDが存在しても、複数の処理モジュールに対してはPLD管理部によりPLDが複数存在することを隠蔽することが可能となるため、複数の処理モジュールがあることを意識しない設計(例えばプログラム設計又は装置設計)が可能となる。
実施例1に係る計算装置の構成を示す。 実施例1においてアプリ#1及び#2が同時に動作したときの動作フローの例を示す。 アプリ#1及び#2の各々を単体で動作させたときの動作時間の例を示す。 実施例1に係るメモリのメモリマップの概念図を示す。 実施例1に係るFPGA管理情報、利用要求及び利用要求返答の一例を示す。 実施例1に係る利用要求を受けたFPGA管理部が行う処理のフローチャートを示す。 実施例1に係る利用完了通知プロセスのフローチャートを示す。 比較例の効果の一例と実施例1の効果の一例を示す。 実施例1の概念図を示す。 実施例2に係るクラウドの構成を示す。 実施例2に係るメモリのメモリマップの概念図を示す。 実施例2に係るFPGA管理情報の一例を示す。 実施例3の概念図を示す。 実施例3においてアプリ#1及び#2が同時に動作したときの動作フローの例を示す。 実施例3に係るFPGA管理情報、利用要求及び利用要求返答の一例を示す。 実施例3に係る利用要求を受けたFPGA管理部が行う処理のフローチャートを示す。 実施例3に係る利用完了通知プロセスのフローチャートを示す。 実施例4の概念図を示す。
以下、本発明の実施例について、図面を用いて説明する。なお、以下に説明する実施例は、請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
また、以後の説明では「プログラム」(例えばアプリケーション)を主語として説明を行う場合があるが、実際にはプログラムはプロセッサによって実行されることで、定められた処理が行われる。ただし説明が冗長になることを防ぐため、プログラムを主語として説明することがある。また、プログラムの一部または全ては、専用ハードウェアによって実現されてもよい。記憶デバイスとしては、例えば、IC(Integrated Circuit)カード、SD(Secure Digital)カード、DVD(Digital Versatile Disk)、ストレージ装置等であってもよい。
また、本発明は、PLD全般に適用可能であるが、実施例では、PLDの一例としてFPGAが採用される。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合は、参照符号に代えて要素の識別符号を使用することがある。例えば、アプリを特に区別しないで説明する場合には、「アプリ101」と記載し、個々のアプリを区別して説明する場合には、「アプリ#1」、「アプリ#2」のように記載することがある。
図1は、実施例1に係る計算装置の構成を示す。
計算装置1は、プロセッサ10、メモリ11、FPGA12、FPGAメモリ13、記憶デバイス14、及びI/F(インターフェース)20を有する。プロセッサ10は、ユーザが業務などで使用するプログラムを実行する。図1ではプロセッサ10は1つだけ記載されているが、複数のプロセッサ10が存在してもよい。またプロセッサ10がマルチコアプロセッサであってもよい。本実施例を、4コアのマルチコアプロセッサを用いている例で説明する。
メモリ11はプロセッサ10の主記憶として用いられる。プロセッサ10がプログラムを実行する際、メモリ11にプログラム及びデータがロードされ、プロセッサ10はメモリ11からプログラムを読み出して実行する。メモリ11には、プログラムとして、例えば、複数のアプリケーション(アプリ)と、FPGA管理部103とが格納されている。図1には、複数のアプリとして、2つのアプリ#1(101)及びアプリ#2(102)が代表的に図示されている。これらのプログラムがプロセッサ10により実行される。
FPGA12は、PLD(Programmable Logic Device)の一例であり、機能を書きかえることができるハードウェアである。FPGAコンフィグデータをFPGA12の中のコンフィグデータ格納領域121にロードすることによって、FPGA12の中の動作を柔軟に変更することが可能である。そのため、装置構成を変更することなく、機能をバージョンアップしていくことが可能となる。また、FPGAメモリ13は、FPGA12だけがアクセスできる専用のメモリ(例えばDRAM(Dynamic Random Access Memory))である。図1では、FPGA12が専用でアクセスできるメモリを用いているが、メモリ11を共有して用いるなど、FPGA12だけがアクセスできる専用のメモリである必要はない。
記憶デバイス14は、プロセッサ10からのライトデータを格納する不揮発性の記憶デバイスであり、例えばSSD(Solid State Drive)あるいはHDD(Hard Disk Drive)が用いられる。
I/F20は、プロセッサ10と、周辺デバイス(非図示のネットワークデバイス等も周辺デバイスの一種である)との間でデータ転送するためのコンポーネントである。本実施例では、プロセッサ10とFPGA12との間、及び、プロセッサ10と記憶デバイス14との間では、PCI−Expess(以下、「PCIe」と呼ぶ)規格に従って通信が行われる。しかし、このI/F20は、PCIeに限定されずに、デバイス間の転送を目的とした他の規格や、独自I/Fでもよい。
図2は、FPGA12を利用する異なる2つのアプリ#1及び#2が同時に動作したときの動作フローの例を示す。
縦軸は、計算装置1の各コンポーネントを表している。アプリ#1、アプリ#2、及びFPGA管理部103は、上述したように、プロセッサ10によって実行されるプログラムである。アプリ#1とアプリ#2は両方とも、FPGA12を使用するプログラムであり、図3は、アプリ#1及び#2の各々を単体で動作させたときの動作時間の例を示す。それぞれのアプリの動作を比べるために、両アプリとも時刻T0で開始したとして、上下に並べて記載している。各アプリの下の「FPGA」という箱は、FPGA12を使用している時間を示している。図3より、アプリ#1は、時刻T1〜時刻T3の時間でFPGA12を使用し、終了時刻はT6となる。一方、アプリ#2は、時刻T2〜時刻T4の時間でFPGA12を使用し、終了時刻はT5となる。また、FPGA12以外は、プロセッサ10での処理を意味する。なお、FPGA12が処理している最中のそれぞれのアプリは、FPGA12の処理が終わるまでFPGA12の処理完了待ちをしてもよいし、並列で別の処理をしていてもよい。
図4は、プロセッサ10が使用するメモリ11のメモリマップの概念図を示す。
それぞれの領域に対するサイズについては、使用するアプリによって異なるため、図4には具体的には記載しない。例えば、アプリ101毎に、プログラム1100、FPGAコンフィグ情報1101及びFPGAコンフィグデータ1102がある。具体的には、例えば、アプリ#1に関しては、アプリ#1プログラム#1、アプリ#1が使用する機能が入った、FPGAコンフィグデータ#1及びFPGAコンフィグ情報#1(対応するFPGAデバイス情報、FPGAコンフィグデータのサイズ及び格納アドレスなど)が必要になる。また、アプリ#2に関しても、アプリ#2プログラム#2、FPGAコンフィグ情報#2、及びFPGAコンフィグデータ#2が必要になる。ここで、それぞれのアプリのプログラム1100とFPGAコンフィグデータ1102は、計算装置1でコンパイルしてデータを作成してもよいし、同一環境でコンパイル済みのデータを持ってきてもよい。
その他に、メモリ11には、FPGA12にアプリの処理の一部をオフロードするときに使うFPGAライトデータ格納領域1120、具体的には、アプリ#1及び#2にそれぞれ対応したFPGAライトデータ格納領域#1及び#2がある。これらは、それぞれ、FPGA12に転送する入力データを格納する領域である。また、メモリ11には、FPGAリードデータ格納領域1122、具体的には、アプリ#1及び#2にそれぞれ対応したFPGAリードデータ格納領域#1及び#2がある。これらは、それぞれ、FPGA12が処理し終わった結果データを格納する領域である。これらのデータ格納領域は、必要なときに動的に確保されてもよいし、予め静的に確保されておいてもよい。また、ライトデータ格納領域とリードデータ格納領域は同一領域(つまり一体)であってもよい。
さらに、メモリ11には、FPGA管理部103のみがアクセスできるFPGA管理情報格納領域1130がある。FPGA管理情報格納領域1130には、FPGA管理情報が格納される。図5は、FPGA管理情報500の一例を示す。このFPGA管理情報500は、大きく分けて、FPGA12のFPGAデバイス情報502と、FPGA使用状況501の2つがある。FPGAデバイス情報502は、FPGA型番504(FPGA12の型番を表す情報)、接続先PCIeのバス番号、DRAMアドレス507(FPGAメモリ13のアドレスを表す情報)、コンフィグ格納領域アドレス505(コンフィグデータ格納領域121のアドレスを表す情報)、及びレジスタアドレス50(FPGAレジスタのアドレスを表す情報)など、FPGA12にアクセスするために必要な情報を含む。また、FPGAデバイス情報502は、デバイスID503(FPGA12毎につけられるユニークな識別子であるデバイスIDを表す情報)も含む。本実施例では、FPGA管理情報500は、FPGA12毎に存在する。FPGA12の型番だけでFPGA管理情報500を管理するとなると、同一型番のFPGA12が複数あった場合、いずれのFPGA12といずれのFPGA管理情報500とが対応するかわからなくなるので、本実施例では、FPGA12の型番に加えて、FPGA12を一意に識別するためのデバイスIDが使用される。なお、FPGA12は、同一型番であるか異なる型番であるかに関わらず複数存在してよいが、本実施例では、FPGA12は1つであるとする。
FPGAデバイス情報502は、計算装置1の起動時、または、新たにデバイスが計算装置1に挿入されたことを検知した時に、接続されているFPGAを探し、接続されているFPGAデバイス情報を取得することにより得られる。これにより、計算装置1に接続されているFPGAを使用することができるようになる。本実施例では、FPGAデバイス情報502を具体的に記載したが、その情報だけに限定されず、FPGA12にアクセスできる情報であることが条件であり、本形式にとらわれず、別の形式でもよい。また、FPGA使用状況501は、主に、このFPGA管理情報500に対応したFPGA12が使用中か未使用かを表す情報である。実施例によって、その他の情報も管理するが、実施例毎に必要な情報が異なるため、以降、具体的に例を挙げて説明していく。
図2に戻り、図3の処理時間で動作をするアプリ#1及び#2を同時に動作させたときの動作フローを説明する。本実施例のプロセッサ10はマルチコアプロセッサのため、それぞれのコアで同時に動き出すことが可能である。
まず、図3の時刻T1で、アプリ#1が、FPGA管理部103にFPGA12の利用要求を送信する。図5に示すように、利用要求510は、FPGA型番511(FPGA12の型番を表す情報)を含む。利用要求510に対する返答である利用要求返答520は、使用可否情報521と、対象デバイス情報522とを含む(これらの情報521及び522については後述する)。
図6は、利用要求510を受けたFPGA管理部103の動作フローのフローチャートを示す。
まず、FPGA管理部103は、受けた利用要求510内のFPGA型番511から、利用可能なFPGA12があるか否かを判断する(S100)。すなわち、FPGA管理部103は、FPGA型番511と一致するFPGA型番504を含んだFPGA管理情報500の有無を判断する。
FPGA型番511と一致するFPGA型番504を含んだFPGA管理情報500が無い場合、FPGA管理部103は、使用可否情報521に“デバイス未対応”をセットし(S101)、要求元アプリに、“デバイス未対応”を含んだ利用要求返答520を返す(S107)。
FPGA型番511と一致するFPGA型番504を含んだFPGA管理情報500がある場合、FPGA管理部103は、その一致したFPGA型番504を含んだFPGA管理情報500内のFPGA使用状況501の値が“使用中”か否か、つまり、対象FPGA12が使用中か否かを判断する(S102)。本明細書において、「対象FPGA」とは、上記一致したFPGA型番504を含んだFPGA管理情報500内のデバイスID503に対応するFPGA12である。なお、本実施例では、FPGA12は1つなので、対象FPGA12は、上述のFPGA12である。
対象FPGA12が未使用の場合は、FPGA管理部103は、FPGA使用状況501を“使用中”に変更してから、使用可否情報521に“利用OK”をセットする(S105)。次に、FPGA管理部103は、対象デバイス情報522に、上記一致したFPGA型番504を含んだFPGA管理情報500内のFPGAデバイス情報502が有する情報、すなわち、対象FPGA12にアクセスするための情報をセットする(S106)。ここで、対象デバイス情報522は、コンフィグ格納領域アドレス524(対象FPGA12のコンフィグデータ格納領域121のアドレスを表す情報)、レジスタアドレス525(対象FPGA12のレジスタのアドレスを表す情報)、DRAMアドレス526(対象FPGA12のFPGAメモリ13のアドレスを表す情報)を含む。対象デバイス情報522は、デバイスID523(対象FPGA12を一意に識別するデバイスIDを表す情報)を含んでもよい。情報523〜526は、対象FPGA12に対応したFPGA管理情報500内の情報503、505〜507の複製でよい。最後に、FPGA管理部103は、要求元アプリに、“利用OK”を含んだ利用要求返答520を返す(S107)。
一方、対象FPGA12が使用中の場合は、FPGA管理部103は、使用可否情報521に“利用NG”をセットする(S103)。“利用NG”を含んだ利用要求返答502には、対象デバイス情報522として、対象FPGA12にアクセスするための情報はセットされない。その後、FPGA管理部103は、対象FPGA12の利用待ちを管理するFPGA利用待ちキュー(図示せず)にリクエスト(利用要求510)を積んだ後、要求元アプリに、“利用NG”を含んだ利用要求返答520を返す(S107)。
以上が、利用要求510を受けたFPGA管理部103の動作フローになる。
図2の例では、アプリ#1が利用要求501を出したT1の時点で(S21)、FPGA12は未使用なので、アプリ#1は、“利用OK”と対象デバイス情報522とを含んだ利用要求返答520を受ける(S22)。“利用OK”を含んだ利用要求返答520を受けたアプリ#1(101)は、利用要求返答520内のコンフィグ格納領域アドレス524を基に、使用するFPGAコンフィグデータ#1を、FPGA12のコンフィグデータ格納領域121にロードする(S23)。この際、プロセッサ10がFPGAコンフィグデータ#1を数バイトずつ転送してもよいが、プロセッサ10内やFPGA12内、または別デバイスにある図示しないDMA(Direct Memory Accese)回路を用いて、FPGAコンフィグデータ#1をバースト転送してもよい。FPGAコンフィグデータ#1のロードが完了した後、FPGA管理部103は、入力データをFPGAライトデータ格納領域#1に格納し、利用要求返答520内のDRAMアドレス526を基に、FPGAメモリ13の領域を確保し、確保した領域に入力データをライトする(S24)。その後、アプリ#1は、入力データのFPGAメモリ13上のアドレスと、結果データを格納するFPGAメモリ13上のアドレスと、FPGA12の図示しないカーネル部(FPGA12の中の処理実行部(アプリ毎に動作が異なる))の引数とを指定しFPGA12のカーネル部を起動すると(S25)、FPGA12のカーネル部は、FPGAメモリ13にある入力データを読み込んで、カーネル部の処理を行い、結果をFPGAメモリ13に書き戻す(S28)。カーネル部の処理が完了したら、FPGA12のカーネル部は、アプリ#1に完了通知を発行する(S29)。
完了通知を受信したアプリ#1は、FPGAメモリ13から結果データをリードして(S30)、メモリ11のリードデータ格納領域#1に格納する。その後、アプリ#1は、FPGA管理部103に、FPGA12の利用完了通知を出して(S31)、アプリ#1の残りのソフト処理を続ける。
次にアプリ#1と同時に動いているアプリ#2の動作について説明する。アプリ#1と同時に起動されたアプリ#2は、時刻T2で、FPGA管理部103に利用要求510を送信する(S26)。しかし、時刻T2より早い時刻T1からアプリ#1がFPGA12を使用中のため、FPGA管理部103は、FPGA利用待ちキューにリクエスト(利用要求510)をセットする(図6のS102〜S104)。つまり、FPGA管理部103は、そのリクエスト(利用要求510)を、待ち状態の利用要求として管理する。そして、FPGA管理部103は、“利用NG”を含んだ利用要求返答520をアプリ#2に返す(S27)。“利用NG”を含んだ利用要求返答520を受信したアプリ#2は、FPGA12が利用可能になるまで待ち状態に入る。ここで、時刻がT3になり、アプリ#1が、FPGA12の利用が終わってFPGA管理部103に利用完了通知をすると(S31)、FPGA管理部103は、図7に記載の利用完了通知プロセスを行う。まず、FPGA管理部103は、FPGA使用状況501(使用中フラグ)を“未使用”に変更する。次に、FPGA管理部103は、FPGA利用待ちキューをみて、利用待ちのリクエスト(利用要求510)がある場合は、FPGA使用状況501を“使用中”にして、そのリクエストの要求元アプリ#2(102)に、使用許可の割り込みを発行する(図2のS32及び図7のS202)。なお、図7では、各ステップを記載したが、例えば、S200とS201が逆でもかまわないし、全てを一発で判定してもよい。また、使用許可の割り込みの例を記載したが、メッセージを送る、共有メモリ上のフラグで通知するなど、アプリに通知できれば手段は問わない。
使用許可割り込みを受けたアプリ#2は、FPGAコンフィグデータ#2をFPGA12のコンフィグデータ格納領域121に格納し(S33)、入力データをFPGAメモリ13にライトする(S34)。その後、アプリ#2(102)は、カーネル部に引数をセットし、FPGA12のカーネル部を起動する(S35)。FPGA12のカーネル部は、FPGAメモリ13にある入力データを読み込んで、カーネル部の処理を行い、結果をFPGAメモリ13に書き戻す(S36)。アプリ#2は、カーネルの完了通知を受けたら(S37)、結果データをリードして(S38)、FPGA管理部103に利用完了を通知する。その後、アプリ#2は、ソフト処理を続ける。
以上、FPGA管理部103は、複数の利用要求510を受け付けるインタフェースを持ち、同一時刻に同一FPGA12を使用しないように排他制御を行うことで、あるアプリがFPGA12を利用しているときに、他のアプリがFPGA12を勝手に利用してしまうというエラー状態を防ぐことが可能となり、且つ、割り込みまたはキュー管理しているので、FPGAリソースを効率よく使用することが可能である。
また、図8に効果を記載する。
図8の上側は、比較例(本実施例を使わない場合の例)の効果の一例を示す。比較例は、アプリを実行するユーザがFPGAの利用状況を判断して、2つのアプリを実行する例である。この場合、ユーザがまずアプリ#1を実行し、アプリ#1の処理が完了したのをユーザが確認してから、ユーザがアプリ#2を起動する。このため、合計で、アプリ#1の実行時間+アプリ#2の実行時間がかかる。
一方、図8の下側は、本実施例の効果の一例を示す。本実施例では、アプリ#1は単体で動作したときと同様に理想的な状態で終了する。また並列で動作しているアプリ#2は、時刻T2から時刻T5の間だけFPGA12の待ち時間が生じ、アプリ#2の理想の実行時間の終了時刻T3より遅く終わる。ただし、アプリ#1の終了時刻T4より早く終わっており、FPGA12をアプリ#1とアプリ#2で時分割して有効に使うことができていることがわかる。
図9は、本実施例の概念図を示す。
アプリ#1とアプリ#2は、FPGA12を使用するときにFPGA管理部103に利用要求510を出す。ここで、FPGA管理部103は、FPGA12の現在の使用状況に応じて、FPGA12が未使用であれば、“利用OK”を含んだ利用要求返答520を返し、使用中であれば“利用NG”を含んだ利用要求返答520を返す。このように、FPGA12を使うときにFPGA管理部103に必ず問い合わせることで、同一時刻に異なる2以上のアプリがFPGA12を使用してしまうという、エラー状態になるのを防ぐことが可能となる。
以上が、実施例1の説明である。なお、実施例1について、例えば、下記のような幾つかの変形例が考えられる。
<実施例1の変形例1>
実施例1の変形例1では、利用要求510が、FPGA型番511のほかに、要求元アプリが管理しているFPGAコンフィグデータのアドレスも含んでよい。具体的には、例えば、アプリ#1が要求元の場合、利用要求510が、アプリ#1に対応したコンフィグアドレス(FPGAコンフィグデータ#1のアドレスを表す情報)含んでよい。このような利用要求510を受けたFPGA管理部103は、FPGA12が未使用ならば、受けた利用要求510が表すコンフィグアドレス(メモリ11のアドレス)からFPGA12のコンフィグデータ格納領域121にFPGAコンフィグデータ#1をロードし、その後に、アプリ#1に利用要求返答520を返すことになる。FPGA12が使用中の場合も、FPGA12が未使用になってから、FPGA管理部103は、FPGA12のコンフィグデータ格納領域121にFPGAコンフィグデータ#1をロードしてから、アプリ#1に割り込みを上げればよい。よって、コンフィグ格納領域アドレス524を利用要求返答520に含める必要がなくなる。これにより、アプリ101は、FPGA12のコンフィグデータ格納領域121のアドレスを意識しなくても良くなるという利点がある。
<実施例1の変形例2>
実施例1の変形例2では、“利用NG”を含んだ利用要求返答520を受けたアプリ101は、FPGA管理部103に、FPGA利用のキャンセル要求を出してもよい。そのようなキャンセル要求を受けたFPGA管理部103は、待ちキューにあるリクエスト(利用要求510)のうち、キャンセル要求に対応したリクエストを待ちキューから削除する。こうすることにより、アプリ101は、ソフトウエアで処理する(すなわち、FPGA12に処理をオフロードするのではなくアプリ101自身が処理を実行する)という選択をすることも可能になる。
<実施例1の変形例3>
アプリ101がFPGA利用をキャンセルするか否かを、アプリ101がどのぐらい待つか分かると、決めやすい。そこで、実施例1の変形例3では、利用要求510が、入力データサイズ(入力データのサイズを表す情報)を含んでよい。すなわち、FPGA管理部103は、FPGA使用状況だけでなく、受けた利用要求510内の入力データサイズから処理予測時間を計算して、処理予測時間(受け付けた利用要求510の処理に要すると入力データサイズに基づき予測された時間)と、スタート時間とを保存しておいてもよい。これにより、FPGA12を使用中に利用要求510があった場合に、FPGA管理部103は、処理予測時間、スタート時間、及び現在の時間から、終了予測時間を計算して、“利用NG”とともに終了予測時間を含んだ利用要求返答520を返すことができる。これにより、アプリ101は、終了予測時間を基に、ソフトウエアで処理するかFPGA12が使えるまで待つかを選択可能となり、アプリ101毎に最も早く終了する方法で処理することが可能となる。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
実施例2として、クラウドの例を記載する。なお、本明細書において「クラウド」とは、1以上の計算装置で構成された計算システムの一例である。
図10は、実施例2に係るクラウドの構成を示す。
計算装置1と同一のコンポーネントは、同一の参照符号をつけたので説明を省略する。コンポーネントの観点での図1との違いは、FPGA12が2つある点である。つまり、FPGA#1及び#2が存在する。また、クラウド2が採用されているため、ネットワーク1001を介してクライアント3が複数台つながっている。クライアント3は、例えば、パーソナルコンピュータのような計算装置である。また、プロセッサ10は、実施例1と同様に4コアのマルチコアプロセッサの例を考える。
実施例2では、クラウド2で実行するアプリとして、プロセッサ10上では、ミドルウエアのデータベースプログラム(以降DBプログラム)800を実行する場合について述べる。この場合、DBプログラム800は、複数のクライアント3からSQLを受け付けることができる。また、DBプログラム800は、マルチスレッドに対応しており、複数のSQLが来た場合に複数のスレッドに分けて、複数のコアで並列に処理できるとする。なお、本実施例において、「SQL」とは、Structured Query Languageで記述された命令である。SQLに代えて他種言語で記述された命令が採用されてもよい。
図11は、実施例2に係るメモリ11のメモリマップの概念図を示す。
メモリ11は、DBプログラム800と、SQLの機能毎のFPGAコンフィグデータ802を持っている。具体的には、例えば、Join処理用のFPGAコンフィグデータ#A、シーケンシャルスキャン用のFPGAコンフィグデータ#B、及び、集約演算用のFPGAコンフィグデータ#Cの3つのFPGAコンフィグデータ802が存在するとする。また、メモリ11は、これらのコンフィグデータ#A〜#Cの情報を示すFPGAコンフィグ情報801を持つ。ここで、FPGAコンフィグ情報801は1つの領域にまとめて、3個分の情報を格納する例を示したが、FPGAコンフィグデータ毎にFPGAコンフィグ情報801の領域が存在してもかまわない。
図12は、実施例2に係るFPGA管理情報の例を示す。
本実施例では、FPGA12が2つあるため、FPGA使用状況501もFPGAデバイス情報502もそれぞれFPGA12毎に存在する。すなわち、FPGA#1及び#2にそれぞれ対応するFPGA使用状況#1及び#2がある。また、FPGA#1及び#2にそれぞれ対応するFPGAデバイス情報#1及び#2がある。本実施例では、FPGA12が2つの例を記載しているが、FPGA12は何個であっても良い。その場合は、FPGA12の個数分だけFPGA使用状況501とFPGAデバイス情報502が存在すればよい。
ここで、クライアント3からSQL#1(Join処理)、SQL#2(シーケンシャルスキャン処理)、SQL#3(集約演算処理)が来た場合は、DBプログラム800は、3つのスレッド(DB処理#1、DB処理#2、DB処理#3)を立てて、それぞれのコアで並列に処理する。DB処理#1〜#3の各々は、FPGA12を使用するときに、利用要求510をFPGA管理部103に出す。FPGA管理部103は、図6のS100〜S106の処理を最大でFPGA12の数の回数分ループしてから、未使用のFPGA12が見つかったか、または、全てのFPGA12が使用中だった場合に、S107の利用要求返答を返せばよい。以下に具体的な例を記載する。
例えば、DB処理#1→DB処理#2→DB処理#3の順番で利用要求510が発行されたとする。DB処理#1からの利用要求510について、FPGA管理部103は、まず、FPGA#1が使用中か否かの判断を行う。FPGA#1が未使用なので、FPGA管理部103は、FPGA#1のFPGA使用状況#1を“使用中”にして、FPGAデバイス情報#1に対応した対象デバイス情報522を含んだ利用要求返答520をDB処理#1に返す。次に、DB処理#2からの利用要求510について、FPGA管理部103は、まずFPGA#1が使用中か否かを判断するが、FPGA#1が使用中なので、次にFPGA#2が使用中か否かを判断する。FPGA#2は未使用なので、FPGA管理部103は、FPGA#2のFPGA使用状況#2を“使用中”にして、FPGAデバイス情報#2に対応した対象デバイス情報522を含んだ利用要求返答520をDB処理#2に返す。最後に、DB処理#3からの利用要求510について、FPGA管理部103は、両方のFPGA#1及び#2共に使用中なので、“利用NG”を含んだ利用要求応答520をDB処理#3に返す。
以上、FPGA12が複数になった場合でもFPGAデバイス情報502とFPGA使用状況501をFPGA数分保存し、いずれかのスレッドから利用要求を受けたFPGA管理部103は、未使用のFPGA12が見つかるまで全てのFPGAに対して使用中か否かの判断を行うことで、実施例1と同等の効果が得られる。また、複数のFPGA12がある構成の場合、FPGA管理部103で複数のアクセラレータの管理を隠蔽することが可能となるため、アプリのプログラマは、複数のFPGA12があることを意識しないでプログラムすることが可能となる。実施例1の構成においても、同等の効果が得られる。すなわち、仮に実施例1の構成において複数のFPGA12が存在したとしても、アプリのプログラマは、複数のFPGA12があることを意識しないでプログラムすることが可能となる。
<実施例2の変形例1>
実施例2の変形例1では、利用要求510が、FPGA型番511のほかに、要求元アプリが利用したいFPGA12の数である希望FPGA数を含んでも良い。これにより、利用要求510を受けたFPGA管理部103は、その利用要求510から希望FPGA数を特定できる。FPGA管理部103は、FPGA12の空き状況(複数のFPGA12の各々に対応したFPGA使用状況501)から特定される未使用FPGA数(未使用のFPGA12の数)と、利用要求510から特定された希望FPGA数とを基に、例えば、(式1)のように、割当てFPGA数(割り与えられるFPGA数)を決めて、割当てFPGA数と、割当てFPGA数分の対象デバイス情報522とを含んだ利用要求返答520を返答すればよい。
(未使用FPGA数<希望FPGA数)のとき、割当てFPGA数は、未使用FPGA数
(未使用FPGA数>=希望FPGA数)のとき、割当てFPGA数は、希望FPGA数
・・・(式1)
<実施例2の変形例2>
割当てFPGA数は、(式1)に限定されない。例えば、N個(例えばN=10)のFPGA12があるクラウド2において、割当てFPGA数の最大値を閾値n(nは2以上の整数)として予め設定しておき、FPGA管理部103は、希望FPGA数=M(n<M=<N)を含んだ利用要求510を受けた場合、FPGA12の使用状況にかかわらず(例えば、未使用FPGA数がnより大きくても)、最大値がnである割当てFPGA数を含んだ利用要求返答520を返すとしてもよい。
<実施例2の変形例3>
FPGA管理部103は、利用要求510の頻度を学習して、割当てFPGA数は、利用要求510の頻度に基づいてよい。例えば、利用要求510の頻度が低頻度(例えば閾値p未満)と判断された場合は、FPGA管理部103は、FPGAを積極的に割り与えてよい。一方、利用要求510の頻度が高頻度(例えば閾値p以上)と判断された場合は、FPGA管理部103は、複数のFPGAが未使用の状況でも、1つまでしかFPGAの利用を許可しないとしても良い。
<実施例2の変形例4>
FPGA管理部103は、待ちキューにある利用要求510を、利用要求510の優先度の高い順に処理するようになっていて、スレッド(またはアプリ)が、希望FPGA数と共に優先度を含んだ利用要求510をFPGA管理部103に渡しても良い。例えば、FPGA管理部103は、優先度が高い利用要求510については、未使用なFPGAがある限りFPGA数を割り当ててよい(すなわち、希望FPGA数より未使用FPGA数が大きくても、割当てFPGA数を、未使用FPGA数としてもよい)。また、例えば、FPGA管理部103は、優先度が低い利用要求510については、希望FPGA数分のFPGAの利用を許可しても、まだ未使用のFPGAがある場合に複数のFPGAの使用を許可するなどの制御を入れてもよい(例えば、希望FPGA数を割当てFPGA数としても少なくとも1つの未使用のFPGAがある場合に、割当てFPGA数=希望FPGA数としてもよい)。
<実施例2の変形例5>
また、実施例2では、同一FPGA型番のFPGAが2つ搭載されていが、それに限定されず、実施例2の変形例5では、FPGA型番が異なる複数のFPGA12が搭載されていてもよい。その場合、図6のS100で、利用可能でないので、次のデバイスの判定に移ればよい。また、アプリが、複数のFPGA型番の各々についてのFPGAコンフィグデータを持っていたら、そのアプリからの利用要求510が、複数のFPGA型番の各々についての情報(例えば、FPGAコンフィグデータのアドレス)を含んでもかまわない。この場合は、FPGA管理部103が、複数のFPGA型番のうちのどのFPGA型番のFPGAを使うかを決めることができる。
実施例3を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
図13は、実施例3の概念図を示す。
本実施例では、FPGA管理部103に代えてFPGA管理部104が採用される。FPGA管理部104は、FPGA12のアクセスを全て行い、アプリ#1及び#2は、仮想化された世界でFPGA12を利用する。すなわち、本実施例では、アプリ#1及び#2は、FPGA12に直接アクセスしない。なお、本実施例では、図1の計算装置1を用いて説明するが、図10のようなクラウドでも応用可能である。
図14は、本実施例の動作フローを示す。
実施例1と同様のアプリ#1及び#2が同時に動作する場合で説明する。
まず、アプリ#1が、時刻T1で、図15に記載の利用要求1510をFPGA管理部104に送信する(S61)。利用要求1510は、FPGA型番511の他に、コンフィグデータ格納アドレス1512及びFPGA起動用引数1513を含む。コンフィグデータ格納アドレス1512は、FPGAコンフィグデータ#1(図4参照)のアドレスを表す情報である。FPGA起動用引数1513は、FPGA起動に関する引数であり、例えば、入力データのアドレス、FPGA12のカーネル部の引数、結果データの格納アドレスデータ転送、などを含む。なお、図15に示すように、FPGA管理情報500は実施例1と同様の情報である。利用要求返答1520は、ステータス1521を含む。ステータス1521は、利用要求1510のステータスを表す情報である。
図16は、利用要求1510を受けたFPGA管理部104の動作フローのフローチャートを示す。
まず、FPGA管理部104は、図6と同様に、FPGA型番511と一致するFPGA型番504を含んだFPGA管理情報500の有無を判断する(S300)。一致するFPGA型番504を含んだFPGA管理情報500が無い場合は、FPGA管理部104は、ステータス1521に“デバイス未対応”をセットして(S301)、“デバイス未対応”を含んだ利用要求返答1520を、要求元アプリに返す(S313)。
一致するFPGA型番504を含んだFPGA管理情報500がある場合は、FPGA管理部104は、そのFPGA管理情報500内のFPGA使用状況501が“使用中”か否かを判断する(S302)。
FPGA使用状況501が“使用中”の場合は、FPGA管理部104は、ステータス1521に“待ち中”をセットし(S303)、FPGA利用待ちキューにリクエスト(利用要求1510)を積む(S304)。FPGA管理部105は、要求元アプリに、“待ち中”を含んだ利用要求返答1520を返す(S313)。
一方、FPGA使用状況501が“未使用”の場合、FPGA管理部104は、ステータス1521に“処理中”をセットして、“処理中”を含んだ利用要求返答1520を要求元アプリに返す(S313)。それと共に、FPGA管理部104は、要求元アプリに対応したFPGAコンフィグデータをコンフィグデータ格納領域121にロードして(S308)、FPGA12に入力データを転送する(S309)。その後、FPGA管理部104は、FPGA12のカーネル部の引数をセットして、カーネル部を起動する(S310)。その後、FPGA管理部104は、結果データをリードして(S311)、要求元アプリにFPGA処理完了応答を返す(S312)。なお、図16では、S302の判断でYesの場合に、すぐに“待ち中”を返すが、FPGA12が未使用になるまでループし、FPGA12の利用が完了するまで、FPGA管理部104は利用要求返答1520を返さないとしても良い。また、図16では、S202でNoと判断したときに要求元アプリに“処理中”を返すが、FPGA管理部104は、“処置中”を返さなくてもよい。また、利用要求返答1520は、実施例1の変形例3と同様の終了予想時刻(又は待ちの利用要求数)などの情報を含んでもよい。そうすることにより、ステータス1521を含んだ利用要求返答を受けたアプリは、FPGA管理部104からの処理完了通知を受け取るまで他の処理をしても良いし、処理待ちをしても良い。
ここで、図14の例に戻ると、アプリ#1が利用要求1510を出したT1の時点で、FPGA12は未使用なので、FPGA管理部104は、“処理中”を含んだ利用要求返答1520をアプリ#1に返す(S62)。FPGA管理部104は、FPGAコンフィグデータ#1をメモリ11からFPGA12のコンフィグデータ領域121にロードすること(S63)、入力データをFPGAメモリ13にライトすること(S64)、及び、FPGA起動用引数1513を用いてFPGA12を起動すること(S65)を行う。それにより、入力データのリードと書き戻しがFPGA12のカーネル部により行われ(S68)、FPGA12が、完了通知をFPGA管理部104に送る(S69)。FPGA104は、結果データをFPGAメモリ13からリードして(S70)、完了通知をアプリ#1(101)に送信するようになっている。
“処理中”を含んだ利用要求返答1520を受けたアプリ#1は、完了通知を受けるまで、待機するか別の処理をしていても良い。しばらくすると、アプリ#1はFPGA管理部104から完了通知を受信する(S71)。完了通知を受信したアプリ#1は、残りのソフト処理を続ける。
次にアプリ#1と同時に動いているアプリ#2の動作について説明する。アプリ#1と同時に起動されたアプリ#2は、時刻T2で、FPGA管理部104に利用要求1510を送信する。しかし、時刻T2より早い時刻T1からアプリ#1がFPGA12を使用中のため、FPGA管理部104はS302でYesと判断し、FPGA利用待ちキューにリクエスト(利用要求1510)をセットして、“待ち中”を含んだ利用要求返答1520をアプリ#2(102)に返す。“待ち中”を含んだ利用要求返答1520を受信したアプリ#2は、待ち状態に入る。ここで、時刻がT3になり、アプリ#1がFPGA12の利用が終わると、FPGA管理部104は、図17のFPGAの利用完了通知プロセスを行う。まず、FPGA管理部104は、FPGA使用状況501(使用中フラグ)を“未使用”に変更する(S400)。次に、FPGA管理部104は、FPGA利用待ちキューをみて、利用待ちのリクエスト(利用要求1510)がある場合は、FPGA使用状況501を“使用中”にして、図16のS308〜S312の処理を行う。なお、図17では、各ステップを記載したが、例えば、S400とS401が逆でもかまわないし、全てを一発で判定してもよい。また、使用許可の割り込みの例を記載したが、メッセージを送る、共有メモリ上のフラグで通知するなど、アプリケーションに通知できれば手段は問わない。
本実施例では、FPGA管理部104が、FPGA12へのアクセスを全て行い、アプリ#1及び#2は、仮想化された世界でFPGA12を利用する。すなわち、本実施例では、アプリ#1及び#2は、FPGA12に直接アクセスしない。言い換えれば、FPGA管理部104がFPGA12のドライバとして機能する。このため、アプリはFPGA12を一切意識せずにアプリの処理の一部をオフロードできる。つまり、FPGA12のアドレスを意識しないでアプリを設計可能である。
<実施例3の変形例1>
実施例3の変形例1では、FPGA管理部104が、一度使ったFPGAコンフィグデータ1102をキャッシュし、そのFPGAコンフィグデー1102タ毎の使用頻度を取得し、その情報を解析して、FPGA12を使用していないときに、次に使用される可能性が高いFPGAコンフィグデータ1102を予めFPGA12にロードしておいてもよい。この場合、もし、予測が当たれば、FPGA12の使用時に既に使用対象のFPGAコンフィグデータ1102がロードされていることになるので、ロード時間を短縮できる。予測が外れても、必要なFPGAコンフィグデータ1102をロードすればよく、デメリットは特にない。
<実施例3の変形例2>
実施例3の変形例2では、FPGA管理部104は、FPGA起動用引数1513に代えて実行関数とその引数とのセットを含んだ利用要求を受け付けてもよい。この場合、共有メモリや、カーネルが管理するメモリなどを用いて、アプリ101とFPGA管理部104間で、実行関数のプログラムデータを受け渡す必要があるが、FPGA管理部104で予め決められた制御だけでなく、アプリ101毎に柔軟なFPGA制御が可能となるという利点がある。なお、実行関数とその引数とのセットは、利用要求に含まれる設定値の一例である。
<実施例3の変形例3>
実施例3の変形例3では、利用要求1510は、分割用情報を含んでもよい。分割用情報は、FPGA12を使用した処理を分割するための情報である。分割用情報は、例えば、処理の繰り返し数と、分割した入力データとを含み、この分割情報を基に、FPGA管理部104は、利用要求1510に対応した処理の一部を1回実行するたびにFPGA利用待ちキューを確認し、もし他のリクエスト(利用要求1510)がある場合は、そのリクエストの処理を実行してから、利用要求1510に対応した処理の別の一部を実行するなど、インタリーブして処理することが可能となる。これにより、例えば、FPGA12を長時間使うアプリがあった場合に、これまでは、FPGA12を長時間使うアプリ(以下、アプリ#A)が終わるまで、他のアプリ(以下、アプリ#B)がFPGA12を使用することができなかったが、アプリ#AのFPGA12の利用を途中で止めて、アプリ#BがFPGA12を使用してから、再度アプリ#Aの利用要求1510の処理をすることが可能となり、効率的にFPGA12を使うことが可能となる。
実施例4を説明する。その際、実施例3との相違点を主に説明し、実施例3との共通点については説明を省略又は簡略する。
最後に、FPGA内部で2つのコンフィグデータ領域を持ち、コンフィグ制御部が時分割で処理を切り替える例について記載する。
図18は、実施例4の概念図を示す。
FPGA1200が、2つのコンフィグデータ格納領域#A及び#Bと、このどちらを使用するかを制御するコンフィグ制御部123とを有する。なお、説明の都合上、コンフィグデータ領域121は2つであるが、コンフィグデータ領域121は3つ以上でも良い。
まず、FPGA管理部105は、FPGA1200内のコンフィグデータ格納領域#A及び#Bの使用状況を管理しており、アプリ#1から利用要求1510を受け付けたら、未使用のコンフィグデータ格納領域#Aにアプリ#1のFPGAコンフィグデータ#1をロードして、さらに、アプリ#2から利用要求1510を受け付けたら、未使用のコンフィグデータ格納領域#Bにアプリ#2のFPGAコンフィグデータ#2をロードする。その後、FPGA管理部105は、ある一定時間で(つまり周期的に)、コンフィグ制御部123に、切り替えを指示する。コンフィグ制御部123は、切り替えの指示を受けたら、入力データをFPGAメモリ103から読み出す制御を止め、FPGA1200のカーネル部の処理が全て終わったことを確認した後(特にFPGA1200の外部のデバイスへの要求がないことも確認した後)、フリップフロップの値をFPGA1200内または、FPGAメモリ103に格納し、使用対象のFPGAコンフィグデータをコンフィグデータ格納領域#Aから#Bに切り替えて、別のカーネル処理を行う。このようにすることで、時分割で処理が可能となり、一定の時間毎に平等にリソースを使うことが可能となる。なお、アプリ101とFPGA管理部105とのインタフェースは、実施例3と同じインタフェース(図15)でよいため、本実施例では説明を省略する。
本実施例では、FPGA1200内部にコンフィグデータ領域121がある例を記載したが、コンフィグデータ領域121は、FPGA1200内部にある必要はない。例えば、コンフィグデータ領域121は、FPGAメモリ103にあって、コンフィグ制御部123がFPGAメモリ103からFPGAコンフィグデータを読み出すなど、FPGAコンフィグデータを自分からロードできるところであればどこでも良い。また、FPGA管理部105から切り替えを指示する例を記載したが、コンフィグ制御部123に切り替え時間(周期)を設定するレジスタのような領域がFPGA1200にあり、その領域にFPGA管理部105が切り替え時間をセットするとその切り替え時間で自動で(コンフィグ制御部123により)コンフィグデータ領域が切り替わるようにしても良い。
本実施例では、コンフィグデータ格納領域の切り替えが可能である。つまり、時分割で処理が可能である。このため、FPGAを長時間使うアプリがあっても、平等にFPGAリソースを使うことができる。
なお、本実施例を実行する際は、初期化時に、デバイス情報として、FPGA管理部105が、FPGA1200に対し、複数コンフィグ対応の可否を問い合わせ、その問い合わせに対する回答を基に、制御する必要がある。
以上、幾つかの実施例及び変形例を説明したが、本発明は、それらの実施例及び変形例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、実施例1〜4では、機能を切り替えるときに、1つのFPGAを全て利用するが、パーシャルリコンフィグ技術を用いて、FPGA内を論理的に分割していた場合も本発明は有効である。この場合も、複数のFPGAが接続されていた例と同様に、FPGA内の論理分割毎にFPGAデバイス情報とFPGA使用状況をFPGA管理部が管理すればよい。
また、例えば、実施例1〜4では、アプリが直接利用要求を出すが、VM(Vertual Machine)上でアプリが動作しており、VMから利用要求を出す場合でも本発明を適用可能である。
また、例えば、計算装置やクラウドは図1や図10の構成に限定されない。例えば、プロセッサとFPGAが独立した構成で記載したが、FPGAの中にプロセッサが入っており、独自バスでFPGAのロジック部分と接続されている構成でもかまわなし、プロセッサの中にFPGAが搭載されており、プロセッサの内部バスで構成されている構成でもかまわない。
また、例えば、実施例1〜4では、説明を簡単にするために複数のアプリを同時にスタートさせたが、起動開始は当然異なっていてもかまわない。
また、例えば、実施例1〜4では、FPGA管理情報、利用要求及び利用返答要求など、実施例ごとに様々な情報をやり取りする例を記載したが、これらの情報を個別ではなく、複数を組み合わせてもよい。また、本明細書では、アプリとFPGA管理部のやり取りを詳しく記載したが、やりとりはこれに限定されず、一回の問い合わせで複数の機能を行ってしまっても良いし、複数回に分けて実装してもよく、実装するときに細かいやり取りが異なっていてもよい。
また、例えば実施例1において、FPGA12は、計算装置1に内蔵されている必要はなく、通信ネットワークを介して計算装置1に接続されてよい。また、1つのFPGA12が、複数の計算装置1に共有されてもよい。すなわち、1以上のFPGA12の各々を共有する複数の処理モジュールの各々の一例として、アプリ、スレッド、VM及び計算装置のうちのいずれかが採用されてよい。
また、本発明は、FPGA以外のPLD、例えばCPLD(Complex Programmable Logic Device)に提供されてもよい。
また、上述のI/F20は、インターフェース部の一例である。インターフェース部は、1以上のインターフェースである。インターフェースとFPGA12が1:1、多:1、1:多、または多:多で接続されてもよい。FPGA12は、PLDの一例である。
また、上述のプロセッサ10は、プロセッサ部の一例である。プロセッサ部は、1以上のプロセッサである。プロセッサとインターフェースが1:1、多:1、1:多、または多:多で接続されてもよい。
また、例えば、プロセッサ、I/F及びFPGA管理部を含んだシステムを、FPGA管理システムと言うことができる。このため、例えば、実施例1では、計算装置1が、FPGA管理システムを含む。また、例えば、実施例2では、クラウド2が、FPGA管理システムを含む。FPGA管理システムは、FPGAを含んでいてもいなくてもよい。FPGAはPLDの一例である。このため、FPGA管理システムは、PLD管理システムの一例である。具体的には、例えば、FPGA管理部は、PLD管理部の一例であり、I/Fは、インターフェース部の一例であり、プロセッサは、プロセッサ部の一例であり、このため、PLD管理システムは、1以上のPLDに接続されたインターフェース部と、インターフェース部に接続されたプロセッサ部と、プロセッサ部により実行されるPLD管理部とを有する。
また、図5及び図15に例示したように、FPGA利用要求は、FPGA型番511のような1種類以上の情報要素を含む。FPGA利用要求は、PLDの利用要求の一例である。PLDの利用要求の内容が、当該利用要求が含む1種類以上の情報要素、例えば、PLDの型番や、PLDのコンフィグデータの格納位置(アドレス)のうちの少なくとも1つに相当する。
また、実施例1〜4では、FPGA利用要求も利用要求返答も、それぞれ1種類以上の情報を含むが、情報を含むことは、情報が関連付けられることの一例である。例えば、少なくとも1種類の情報について、FPGA利用要求または利用要求返答には、情報それ自体ではなく、情報へのポインタが含まれていてもよい。
上述した実施例及び変形例のうちの2以上を適宜に組み合わせることが可能である。例えば、実施例2の変形例1(利用要求510が、FPGA型番511のほかに、要求元アプリが利用したいFPGA12の数である希望FPGA数を含むこと)は、いずれの実施例及び変形例にも適用可能である。また、例えば、実施例2の変形例4の一部(FPGA管理部103は、待ちキューにある利用要求510を、利用要求510の優先度の高い順に処理するようになっていて、スレッド(またはアプリ)が、優先度を含んだ利用要求510をFPGA管理部103に渡すこと)も、いずれの実施例及び変形例にも適用可能である。
1 計算装置
10 プロセッサ
11 メモリ
12 FPGA
13 FPGAメモリ
14 記憶デバイス
20 I/F
121 コンフィグデータ格納領域

Claims (20)

  1. 1以上のPLD(Programmable Logic Device)に接続されたインターフェース部と、
    前記インターフェース部に接続されたプロセッサ部と、
    前記1以上のPLDの各々の使用状況を管理するコンピュータプログラムであり前記プロセッサ部により実行されるPLD管理部と
    備え、
    前記PLD管理部は、
    前記1以上のPLDの各々を共有する複数の処理モジュールのいずれかである要求元モジュールからPLDの利用要求を受け付け、
    前記利用要求を受け付けたときに、前記利用要求に該当するPLDである該当PLDの現在の使用状況と、前記利用要求の内容とに基づき、前記要求元モジュールを含む2以上の処理モジュールが同一のPLDを同時に使用しないように制御する
    ことを特徴とするPLD管理システム。
  2. 請求項1に記載のPLD管理システムであって、
    前記制御は、前記受け付けた利用要求に対し、前記該当PLDの使用可否を表す情報である使用可否情報と、前記該当PLDへのアクセスを制御するための情報である対象デバイス情報とが関連付けられた利用要求返答を、前記要求元モジュールに返すことである
    ことを特徴とするPLD管理システム。
  3. 請求項2に記載のPLD管理システムであって、
    前記PLD管理部は、
    前記該当PLDが使用可の場合、前記対象デバイス情報に、前記該当PLDへアクセスするための情報を含め、
    前記該当PLDが使用不可の場合、前記対象デバイス情報に、前記該当PLDへアクセスするための情報を含めない
    ことを特徴とする方法。
  4. 請求項2に記載のPLD管理システムであって、
    前記受け付けた利用要求に、前記該当PLDのコンフィグデータの格納位置が関連付けられており、
    前記該当PLDが使用可の場合、前記格納位置から前記該当PLDに前記コンフィグデータをロードした後に、前記PLD管理部が、前記利用要求返答を前記要求元モジュールに返す
    ことを特徴とするPLD管理システム。
  5. 請求項2に記載のPLD管理システムであって、
    前記該当PLDが使用不可の場合、前記PLD管理部は、前記受け付けた利用要求を、待ち状態の利用要求として管理し、
    前記使用不可を意味する前記使用可否情報が関連付けられた前記利用要求応答を受けた前記要求元モジュールからキャンセル要求を受け付けた場合、前記PLD管理部は、前記受け付けたキャンセル要求に対応する前記待ち状態の利用要求をキャンセルする、
    ことを特徴とするPLD管理システム。
  6. 請求項5に記載のPLD管理システムであって、
    前記該当PLDが使用不可の場合、前記PLD管理部は、前記利用要求返答に、前記受け付けた利用要求の終了予測時間、又は、待ち状態の利用要求の数を関連付ける、
    ことを特徴とするPLD管理システム。
  7. 請求項2に記載のPLD管理システムであって、
    前記受け付けた利用要求に、前記要求元モジュールが同時に使用したいPLDの数である希望PLD数が関連付けられており、
    前記PLD管理部は、使用可の前記該当PLDの数である未利用PLD数と、前記希望PLD数とに基づき決定されたPLD数分の前記該当PLDの各々に対応した前記対象デバイス情報を、前記利用要求返答に関連付ける
    ことを特徴とするPLD管理システム。
  8. 請求項7に記載のPLD管理システムであって、
    前記決定されたPLD数は、前記PLD管理部が前記利用要求を受け付けた頻度に基づいている
    ことを特徴とするPLD管理システム。
  9. 請求項7に記載のPLD管理システムであって、
    前記PLD管理部は、待ち状態の利用要求を、優先度の高い順に処理するようになっており、
    前記受け付けた利用要求に、その利用要求の優先度が関連付けられており、
    前記決定されたPLD数は、前記受け付けた利用要求に関連付けられている優先度に基づいている
    ことを特徴とするPLD管理システム。
  10. 請求項1に記載のPLD管理システムであって、
    前記受け付けた利用要求に、前記要求元モジュールが同時に使用したいPLDの数である希望PLD数が関連付けられている、
    ことを特徴とするPLD管理システム。
  11. 請求項1に記載のPLD管理システムであって、
    前記PLD管理部は、待ち状態の利用要求を、優先度の高い順に処理するようになっており、
    前記受け付けた利用要求に、その利用要求の優先度が関連付けられている、
    ことを特徴とするPLD管理システム。
  12. 請求項1に記載のPLD管理システムであって、
    前記受け付けた利用要求に、前記該当PLDのコンフィグデータの格納位置と前記該当PLDを実行するときに必要な設定値とが関連付けられており、
    前記PLD管理部は、
    前記格納位置から使用可の前記該当PLDに前記コンフィグデータがロードされた後に、前記設定値を用いて前記該当PLDを実行し、
    前記該当PLDを用いて処理した結果データを、前記要求元モジュールに返す
    ことを特徴とするPLD管理システム。
  13. 請求項12に記載のPLD管理システムであって、
    前記PLD管理部は、ロードされたことのあるコンフィグデータ毎の使用頻度を管理し、
    前記PLD管理部は、使用可のPLDがあれば、最も高い使用頻度に対応したコンフィグデータをその使用可のPLDにロードしておく
    ことを特徴とするPLD管理システム。
  14. 請求項12に記載のPLD管理システムであって、
    前記必要な設定は、前記該当PLDの起動に関する引数、または、実行関数及びその引数である
    ことを特徴とするPLD管理システム。
  15. 請求項12に記載のPLD管理システムであって、
    前記受け付けた利用要求に、前記該当PLDを使用した処理を分割するための情報である分割用情報が関連付けられており、
    前記該当PLDが使用不可の場合、前記PLD管理部は、前記受け付けた利用要求を、待ち状態の利用要求として管理し、
    前記PLD管理部は、前記該当PLDを使用した処理の最中に、待ち状態の利用要求があれば、前記分割用情報を基に当該処理を中断し、その待ち状態の利用要求に該当するPLDを使用した処理を実行する
    ことを特徴とするPLD管理システム。
  16. 請求項1に記載のPLD管理システムであって、
    前記該当PLDは、
    複数のコンフィグデータ格納領域と、
    前記複数のコンフィグデータ格納領域のうち利用対象とするコンフィグデータ格納領域の切り替えを制御するコンフィグ制御部と
    を備え、
    前記コンフィグ制御部が、一定時間毎に、利用対象とするコンフィグデータ格納領域を切り替える
    ことを特徴とするPLD管理システム。
  17. 1以上のPLDの各々を共有する複数の処理モジュールのいずれかである要求元モジュールからPLDの利用要求を受け付け、
    前記利用要求を受け付けたときに、前記利用要求に該当するPLDである該当PLDの現在の使用状況と、前記利用要求の内容とに基づき、前記要求元モジュールを含む2以上の処理モジュールが同一のPLDを同時に使用しないように制御する
    ことを特徴とするPLD管理方法。
  18. 請求項17に記載のPLD管理方法であって、
    前記制御は、前記受け付けた利用要求に対し、前記該当PLDの使用可否を表す情報である使用可否情報と、前記該当PLDへのアクセスを制御するための情報である対象デバイス情報とが関連付けられた利用要求返答を、前記要求元モジュールに返すことである
    ことを特徴とするPLD管理方法。
  19. 請求項17に記載のPLD管理方法であって、
    前記該当PLDのコンフィグデータの格納位置から、使用可の前記該当PLDに前記コンフィグデータをロードした後に、前記該当PLDを実行するときに必要な設定値を用いて前記該当PLDを実行し、
    前記該当PLDを用いて処理した結果データを、前記要求元モジュールに返す
    ことを特徴とするPLD管理方法。
  20. 請求項17に記載のPLD管理方法であって、
    一定時間毎に、複数のコンフィグデータ格納領域のうちの利用対象とするコンフィグデータ格納領域を切り替える
    ことを特徴とするPLD管理方法。
JP2017544369A 2016-05-19 2016-05-19 Pld管理方法及びpld管理システム Expired - Fee Related JP6368434B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/064809 WO2017199383A1 (ja) 2016-05-19 2016-05-19 Pld管理方法及びpld管理システム

Publications (2)

Publication Number Publication Date
JPWO2017199383A1 true JPWO2017199383A1 (ja) 2018-05-31
JP6368434B2 JP6368434B2 (ja) 2018-08-01

Family

ID=60325889

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017544369A Expired - Fee Related JP6368434B2 (ja) 2016-05-19 2016-05-19 Pld管理方法及びpld管理システム

Country Status (3)

Country Link
US (1) US10459773B2 (ja)
JP (1) JP6368434B2 (ja)
WO (1) WO2017199383A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109314103B (zh) * 2016-06-30 2023-08-15 英特尔公司 用于远程现场可编程门阵列处理的方法和装置
US10754588B2 (en) * 2017-03-31 2020-08-25 Intel Corporation Performing data operations in a storage area network
US10747565B2 (en) * 2017-04-18 2020-08-18 Amazon Technologies, Inc. Virtualization of control and status signals
WO2019116984A1 (ja) * 2017-12-12 2019-06-20 日本電気株式会社 Fpgaシステム、パーシャルリコンフィグレーション実行方法及び記憶媒体
US10599553B2 (en) * 2018-04-27 2020-03-24 International Business Machines Corporation Managing cloud-based hardware accelerators
US10831975B2 (en) 2018-11-29 2020-11-10 International Business Machines Corporation Debug boundaries in a hardware accelerator
US11044099B2 (en) * 2018-12-28 2021-06-22 Intel Corporation Technologies for providing certified telemetry data indicative of resources utilizations
US11086815B1 (en) * 2019-04-15 2021-08-10 Xilinx, Inc. Supporting access to accelerators on a programmable integrated circuit by multiple host processes
JPWO2022219727A1 (ja) * 2021-04-13 2022-10-20

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184718A (ja) * 1997-12-19 1999-07-09 Matsushita Electric Ind Co Ltd プログラマブルなデータ処理装置
JP2013065172A (ja) * 2011-09-16 2013-04-11 Ricoh Co Ltd 情報処理装置、プログラムおよび情報処理システム
JP2013239199A (ja) * 2005-09-30 2013-11-28 Synopsys Inc マルチコアアーキテクチャにおけるスケジューリング

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1199745B (it) * 1986-12-12 1988-12-30 Honeywell Inf Systems Circuito arbitratore di accesso
US4977494A (en) * 1989-02-17 1990-12-11 Hughes Aircraft Company High speed digital motion controller architecture
US7356620B2 (en) * 2003-06-10 2008-04-08 Altera Corporation Apparatus and methods for communicating with programmable logic devices
JPH05150943A (ja) 1991-11-28 1993-06-18 Sharp Corp コンピユータ装置
EP1329816B1 (de) * 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
US6049487A (en) * 1998-03-16 2000-04-11 Actel Corporation Embedded static random access memory for field programmable gate array
US6721872B1 (en) * 1999-10-25 2004-04-13 Lucent Technologies Inc. Reconfigurable network interface architecture
US7096324B1 (en) * 2000-06-12 2006-08-22 Altera Corporation Embedded processor with dual-port SRAM for programmable logic
US7032029B1 (en) * 2000-07-07 2006-04-18 Schneider Automation Inc. Method and apparatus for an active standby control system on a network
US6915518B1 (en) * 2000-07-24 2005-07-05 Xilinx, Inc. System and method for runtime reallocation of PLD resources
US6684346B2 (en) * 2000-12-22 2004-01-27 Intel Corporation Method and apparatus for machine check abort handling in a multiprocessing system
US7747143B2 (en) * 2001-01-15 2010-06-29 Fast Forward Video, Inc. Digital video recorder
US7093249B2 (en) * 2001-03-02 2006-08-15 National Instruments Corporation System and method for synchronizing execution of a test sequence
US6605960B2 (en) * 2002-01-03 2003-08-12 Altera Corporation Programmable logic configuration device with configuration memory accessible to a second device
AU2003263782A1 (en) * 2002-07-12 2004-02-02 Sca Technica, Inc Self-booting software defined radio module
US7356554B1 (en) * 2002-12-20 2008-04-08 Altera Corporation Variable fixed multipliers using memory blocks
US6888372B1 (en) * 2002-12-20 2005-05-03 Altera Corporation Programmable logic device with soft multiplier
US6856171B1 (en) * 2003-06-11 2005-02-15 Lattice Semiconductor Corporation Synchronization of programmable multiplexers and demultiplexers
US7272677B1 (en) * 2003-08-08 2007-09-18 Altera Corporation Multi-channel synchronization for programmable logic device serial interface
US6828822B1 (en) * 2003-10-03 2004-12-07 Altera Corporation Apparatus and methods for shared memory interfaces in programmable logic devices
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
EP1589433A1 (en) * 2004-04-20 2005-10-26 Ecole Polytechnique Federale De Lausanne Virtual memory window with dynamic prefetching support
US7610586B2 (en) * 2004-04-30 2009-10-27 Tvworks, Llc Resource manager for clients in an information distribution system
US7836448B1 (en) * 2004-06-30 2010-11-16 Emc Corporation System and methods for task management
US7721291B2 (en) * 2004-10-15 2010-05-18 International Business Machines Corporation Apparatus, system, and method for automatically minimizing real-time task latency and maximizing non-real time task throughput
US20060156308A1 (en) * 2005-01-07 2006-07-13 Jarvis Thomas C Deadlock-prevention system
EP2541431A1 (en) * 2005-10-07 2013-01-02 Altera Corporation Data input for systolic array processors
US7890686B2 (en) * 2005-10-17 2011-02-15 Src Computers, Inc. Dynamic priority conflict resolution in a multi-processor computer system having shared resources
US20080024165A1 (en) * 2006-07-28 2008-01-31 Raminda Udaya Madurawe Configurable embedded multi-port memory
KR100921007B1 (ko) * 2006-12-19 2009-10-09 삼성전자주식회사 비 실시간 운영체제 시스템을 위한 타임 키퍼 장치 및 방법
EP2083525A1 (en) * 2008-01-28 2009-07-29 Merging Technologies S.A. System to process a plurality of audio sources
US8234647B1 (en) * 2008-01-31 2012-07-31 The Mathworks, Inc. Checking for mutual exclusiveness of a shared resource
US8131983B2 (en) * 2008-04-28 2012-03-06 International Business Machines Corporation Method, apparatus and article of manufacture for timeout waits on locks
GB2466976B (en) * 2009-01-16 2011-04-27 Springsource Ltd Controlling access to a shared resourse in a computer system
US8270671B1 (en) * 2009-02-27 2012-09-18 Hrl Laboratories, Llc Method and system for generic object detection using block features
US9329951B2 (en) * 2009-07-31 2016-05-03 Paypal, Inc. System and method to uniformly manage operational life cycles and service levels
US8510738B2 (en) * 2009-08-20 2013-08-13 Microsoft Corporation Preventing unnecessary context switching by employing an indicator associated with a lock on a resource
US9600347B2 (en) * 2009-11-26 2017-03-21 International Business Machines Corporation Verifying synchronization coverage in logic code
US8519739B1 (en) * 2010-05-03 2013-08-27 ISC8 Inc. High-speed processor core comprising direct processor-to-memory connectivity
US20120005684A1 (en) * 2010-07-02 2012-01-05 Fiji Systems, Inc. Priority rollback protocol
WO2012142069A2 (en) * 2011-04-11 2012-10-18 University Of Florida Research Foundation, Inc. Elastic computing
US20130055284A1 (en) * 2011-08-29 2013-02-28 Cisco Technology, Inc. Managing shared computer resources
US9141440B2 (en) * 2011-12-29 2015-09-22 Red Hat, Inc. Fault tolerant distributed lock manager
JP5962088B2 (ja) * 2012-03-15 2016-08-03 オムロン株式会社 Plcシミュレーションシステム、plcシミュレータ、制御プログラム、および記録媒体
US8966494B2 (en) * 2012-03-16 2015-02-24 Arm Limited Apparatus and method for processing threads requiring resources
US9141434B2 (en) * 2012-05-30 2015-09-22 Red Hat Israel, Ltd. Robust non-shareable resource access under live virtual machine cloning
EP3022657A4 (en) * 2013-07-15 2017-03-15 Intel Corporation Techniques for controlling use of locks
US9077339B2 (en) * 2013-09-27 2015-07-07 Scaleo Chip Robust flexible logic unit
US9048827B2 (en) * 2013-09-27 2015-06-02 Scaleo Chip Flexible logic unit
US9252778B2 (en) * 2013-09-27 2016-02-02 Scaleo Chip Robust flexible logic unit
US9378321B2 (en) * 2013-11-21 2016-06-28 Siliconpro Inc. Apparatus and methods for partitioning an integrated circuit design into multiple programmable devices
US9471397B2 (en) * 2014-10-03 2016-10-18 International Business Machines Corporation Global lock contention predictor
US10002098B2 (en) * 2014-10-09 2018-06-19 Netapp, Inc. Methods and systems for sharing information between processors
US10108466B2 (en) * 2015-06-29 2018-10-23 International Business Machines Corporation Optimizing the initialization of a queue via a batch operation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184718A (ja) * 1997-12-19 1999-07-09 Matsushita Electric Ind Co Ltd プログラマブルなデータ処理装置
JP2013239199A (ja) * 2005-09-30 2013-11-28 Synopsys Inc マルチコアアーキテクチャにおけるスケジューリング
JP2013065172A (ja) * 2011-09-16 2013-04-11 Ricoh Co Ltd 情報処理装置、プログラムおよび情報処理システム

Also Published As

Publication number Publication date
JP6368434B2 (ja) 2018-08-01
US20180260257A1 (en) 2018-09-13
WO2017199383A1 (ja) 2017-11-23
US10459773B2 (en) 2019-10-29

Similar Documents

Publication Publication Date Title
JP6368434B2 (ja) Pld管理方法及びpld管理システム
CN112099941B (zh) 实现硬件加速处理的方法、设备和系统
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
CN109997113B (zh) 用于数据处理的方法和装置
TWI506559B (zh) 可動態和選擇性停用核心以及重新設定之多核心微處理器及其方法
US6820187B2 (en) Multiprocessor system and control method thereof
TWI239450B (en) Apparatus, computer readable recording medium, and method for yielding to a processor within a logically partitioned data processing system
CN109983440B (zh) 数据处理
JP6947723B2 (ja) 競合の存在下での効率的なタスクスケジューリングのための方法
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
JP2016541072A (ja) リソース処理方法、オペレーティング・システム、およびデバイス
WO2018157836A1 (zh) 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质
JP2018534676A5 (ja)
GB2529740A (en) Data processing systems
JP2007219816A (ja) マルチプロセッサシステム
WO2013035246A1 (ja) 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路
JP5131269B2 (ja) マルチプロセッシングシステム
JP2009070265A (ja) 情報処理装置
KR20130104958A (ko) 다중 운영체제들을 실행하는 장치 및 방법
US20140281343A1 (en) Information processing apparatus, program, and memory area allocation method
JP2007141155A (ja) マルチコアプロセッサにおけるマルチコア制御方法
JP4727480B2 (ja) 情報処理方法、情報処理システム、情報処理装置、マルチプロセッサ、情報処理プログラム及び情報処理プログラムを記憶したコンピュータ読み取り可能な記憶媒体
JP2007122337A (ja) 演算装置
JP2017161954A (ja) データ処理システム及びデータ処理方法及びプログラム
KR102608939B1 (ko) 멀티코어 프로세서를 이용한 주변 장치 공유 방법 및 이를 이용하는 전자 장치

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180403

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180615

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180706

R150 Certificate of patent or registration of utility model

Ref document number: 6368434

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees