JP2015039155A - 制御方法、演算装置、および制御プログラム - Google Patents

制御方法、演算装置、および制御プログラム Download PDF

Info

Publication number
JP2015039155A
JP2015039155A JP2013169969A JP2013169969A JP2015039155A JP 2015039155 A JP2015039155 A JP 2015039155A JP 2013169969 A JP2013169969 A JP 2013169969A JP 2013169969 A JP2013169969 A JP 2013169969A JP 2015039155 A JP2015039155 A JP 2015039155A
Authority
JP
Japan
Prior art keywords
circuit
cpu
processing
divided
unused area
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.)
Pending
Application number
JP2013169969A
Other languages
English (en)
Inventor
佐々木 貴行
Takayuki Sasaki
貴行 佐々木
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 JP2013169969A priority Critical patent/JP2015039155A/ja
Publication of JP2015039155A publication Critical patent/JP2015039155A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】再構成処理を簡単にすること。
【解決手段】CPU100が、特定回路103を集積回路に構成させた場合の特定回路103の形状を示す形状情報111を取得する。また、CPU100は、形状情報111と、特定回路103を集積回路に構成可能な特定回路103を示すコンフィギュレーションデータ112と、特定回路103が行う処理と同一処理が記述されたプログラム113と、を取得する。CPU100が、複数の分割領域A1〜A20の各々について使用中か否かを示す管理情報に基づいて、複数の分割領域A1〜A20のうち少なくともいずれかの分割領域Aを含む未使用領域であって、取得した形状情報111が示す形状に適合する未使用領域を検出する。CPU100が、未使用領域を検出できた場合、集積回路に対して、検出した未使用領域に特定回路103を構成させる。
【選択図】図1

Description

本発明は、制御方法、演算装置、および制御プログラムに関する。
従来、FPGA(Field Programmable Gate Array)に回路を構成させる場合、FPGAの空き領域に応じてコンフィギュレーションデータが作成される。また、従来、FPGAに構成される回路について複数通りの形状の各々についてコンフィギュレーションデータを作成しておき、FPGA内の空き領域に合う形状を複数通りの形状から選択して回路を構成させる技術が公知である(例えば、下記特許文献1参照。)。
特開平11−17524号公報
しかしながら、従来技術では、コンフィギュレーションデータを空き領域に合うように作成するための再構成処理が複雑になるという問題点がある。
1つの側面では、本発明は、再構成処理を簡単にすることができる制御方法、演算装置、および制御プログラムを提供することを目的とする。
本発明の一側面によれば、内部の回路を再構成可能な集積回路を区切った同一形状の複数の分割領域の各々にアクセス可能なプロセッサが、特定回路を前記集積回路に構成させた場合の前記特定回路の形状を示す形状情報を取得し、前記複数の分割領域の各々について使用中か否かを示す使用情報に基づいて、前記複数の分割領域のうち少なくともいずれかの分割領域を含む未使用領域であって、取得した前記形状情報が示す形状に適合する未使用領域を検出し、前記未使用領域を検出できた場合、前記集積回路に対して、検出した前記未使用領域に前記特定回路を構成させる制御方法、演算装置、および制御プログラムが提案される。
本発明の一態様によれば、再構成処理を簡単にすることができる。
図1は、本発明にかかる再構成処理例を示す説明図である。 図2は、FPGAの分割とアドレスマップ例を示す説明図である。 図3は、FPGAとCPUとが積層された演算装置例を示す説明図である。 図4は、演算装置の詳細例を示す説明図である。 図5は、演算装置を有するシステム例を示す説明図である。 図6は、アプリケーションのバイナリ構造例を示す説明図である。 図7は、アプリケーションおよびOSの動作の記述例を示す説明図(その1)である。 図8は、アプリケーションおよびOSの動作の記述例を示す説明図(その2)である。 図9は、アプリケーションおよびOSの動作の記述例を示す説明図(その3)である。 図10は、アプリケーションおよびOSの動作の記述例を示す説明図(その4)である。 図11は、実行結果例を示す説明図である。 図12は、CPUとバスとの詳細例を示す説明図である。 図13は、アドレス構成例を示す説明図である。 図14は、並列処理のプログラム例を示す説明図である。 図15は、スレッドプログラミング例を示す説明図である。 図16は、システム動作例1を示す説明図である。 図17は、システム動作例2を示す説明図である。 図18は、システムアーキテクチャ例を示す説明図である。
以下に添付図面を参照して、本発明にかかる制御方法、演算装置、および制御プログラムの実施の形態を詳細に説明する。
図1は、本発明にかかる再構成処理例を示す説明図である。FPGA101は、内部の回路を再構成可能な集積回路である。FPGA101は複数の分割領域A1〜A20に区切られてある。分割領域A1〜A20の各々には、CPU(Central Processing Unit)100と直接アクセス可能な通信路であるポートviaが分割領域A内における同一の位置に設けられる。分割領域A内における同一の位置は、分割領域の各頂点からの距離が同一の位置である。図1の例では、ポートviaは、分割領域A1〜A20の各々の右上に設けられる。
CPU100が、特定回路103を集積回路に構成させた場合の特定回路103の形状を示す形状情報111を取得する。また、CPU100は、形状情報111と、特定回路103を集積回路に構成可能な特定回路103を示すコンフィギュレーションデータ112と、特定回路103が行う処理と同一処理が記述されたプログラム113と、を取得する。
つぎに、CPU100が、複数の分割領域A1〜A20の各々について使用中か否かを示す使用情報に基づいて、複数の分割領域A1〜A20のうち、未使用領域を検出する。ここで検出される未使用領域は、少なくともいずれかの分割領域Aを含む未使用領域であって形状情報111が示す形状に適合する未使用領域である。ここで、使用情報については、管理テーブル102と称する。管理テーブル102では、“−1”は未使用であることを示す。また、管理テーブル102では、“−1”以外は使用中であることを示し、“−1”以外は構成された回路を示す識別情報である。管理テーブル102を参照すると、分割領域A1〜A4には処理P1を行う回路が構成されてある。また、管理テーブル102を参照すると、分割領域A6〜A8には処理P2を行う回路が構成されてある。図1の例では、形状情報111が示す形状は、縦3×横2の領域である。図1の例では、領域A9と、領域A10と、領域A13と、領域A14と、領域A17と、領域A18と、が未使用領域として検出される。
CPU100が、未使用領域を検出できた場合、集積回路に対して、検出した未使用領域に特定回路103を構成させる。これにより、FPGA101への再構成処理を簡単にすることができる。
また、図示していないが、CPU100は、未使用領域を検出できなかった場合、特定回路103が行う処理と同一処理が記述された、CPU100が実行可能なプログラム113を実行する。FPGA101への再構成処理によって特定回路103がFPGA101に構成されなくとも、特定回路103が行う処理はCPU100によって実行される。このため、CPU100は、未使用領域に応じて、すべての処理をCPU100のプログラムとして実行することもできるし、一部分をFPGA101への再構成を行って処理することもできる。したがって、プログラム113よりも高速な特定回路103を用意しておくことにより、アプリケーションをCPU100だけで実行させるよりも処理性能の向上を図ることができる。
また、CPU100は、FPGA101に構成された特定回路103へ開始指示を送信すると、特定回路103が処理を開始する。これにより、任意のタイミングで特定回路103の処理を開始させることができる。そして、特定回路103が、処理を完了すると、完了通知をCPU100へ送信する。そして、CPU100は、特定回路103が構成された分割領域Aを未使用領域となるように管理テーブル102を更新する。これにより、特定回路103が構成された分割領域Aを解放され、あらたに使用可能となる。
また、CPU100とFPGA101とは積層されていてもよい。これにより、低消費電力化を図ることができる。
また、CPU100は、複数の所定回路の各々にアクセス可能であってもよい。所定回路は、例えば、図1に示した分割領域Aであってもよいし、特定用途回路であってもよい。所定回路が分割領域Aの場合、複数の所定回路はFPGA101となる。特定用途回路は、例えば、DSP(Digital Signal Processor)などが挙げられる。例えば、CPU100は、所定の処理を行うために使用される所定回路を示す領域情報を取得する。所定の処理は、例えば、アプリケーションの複数の処理の一部である。所定回路が分割領域Aの場合、領域情報は、例えば、所定の処理を行う特定回路103をFPGA100に構成させた場合の特定回路103の形状を示す形状情報である。所定回路が特定用途回路の場合、領域情報は、例えば、特定の処理を行うことが可能な特定用途回路の機能の種別を示す種別情報である。
そして、CPU100は、複数の所定回路の各々について使用中か否かを示す使用情報に基づいて、複数の所定回路のうち、取得した領域情報が示す所定回路に適合する未使用領域を検出する。そして、CPU100は、検出した未使用領域によって特定の処理を行わせる。例えば、所定回路が分割領域Aの場合、CPU100による処理は図1に示した処理と同じであるため、詳細な説明を省略する。また、例えば、所定回路が特定用途回路の場合、使用情報は、特定用途回路の各々について使用か否かを示す。または、例えば、所定回路が特定用途回路の場合、使用情報は、特定用途回路の機能の種別の各々について使用か否かを示す。例えば、所定回路が特定用途回路の場合、CPU100は、複数の特定用途回路のうち、領域情報である種別情報が示す種別に適合する種別の特定用途回路の未使用を検出する。そして、CPU100は、検出した未使用の特定用途回路によって所定の処理を行わせる。
図2は、FPGAの分割とアドレスマップ例を示す説明図である。図2の例では、FPGA101は、4つの分割領域A1〜A4に区切られる。図2の例では、FPGA101内のコンフィギュレーションデータメモリが4つの記憶領域に区切られる。ここで、区切られた各記憶領域をセグメントと称する。各セグメントには、ベースアドレスが割り当てられる。各分割領域に対して、セグメントのいずれか一つが割り当てられる。分割領域に割り当てられたセグメントにコンフィギュレーションデータが記憶されると、コンフィギュレーションデータが示す回路が分割領域Aに構成される。
図2の例では、分割領域A1に対して割り当てられたセグメントのベースアドレスは0であり、分割領域A2に対して割り当てられたセグメントのベースアドレスは5000である。分割領域A3に対して割り当てられたセグメントのベースアドレスは10000であり、分割領域A4に対して割り当てられたセグメントのベースアドレスは15000である。
また、複数の分割領域A1〜A4の各々には、分割領域A内における同一の位置に物理的なポートvia1〜via4が設けられる。同一の位置とは、例えば、分割領域の各頂点からの距離が同一の位置である。ポートvia1〜via4は、例えば、FPGA101が通信可能なメモリへの出力、起動レジスタへの出力、終了信号などの出力機能を有する。また、ポートvia1〜via4には、リセット端子、割り込みベクタ端子、レディ端子などが設けられていてもよい。
図3は、FPGAとCPUとが積層された演算装置例を示す説明図である。図3に示すように、演算装置300は、FPGA層にFPGA101が設けられ、CPU層にCPU100が設けられる。FPGA101とCPU100とは積層される。これにより、FPGA101とCPU100との間の通信に要する消費電力量を低減させることができる。積層方法については、ワイヤボンディングやTSV(Through Silicon Via)が挙げられる。
図4は、演算装置の詳細例を示す説明図である。演算装置300は、CPU層において、1または複数のCPU100と、周辺回路402と、データ転送回路401と、を有する。演算装置300は、FPGA層において、FPGA101を有する。データ転送回路401は、CPU100と、周辺回路402と、ポートviaを介してFPGA101と、を接続する。データ転送回路401は、例えば、バスやNoCなどによって実現される。周辺回路402とは、例えば、UART(Universal Asynchronous Receiver Transmitter)などが挙げられる。
図5は、演算装置を有するシステム例を示す説明図である。システム500は、例えば、演算装置300と、RAM(Random Access Memory)501と、ディスクドライブ502と、ディスク503と、入力装置504と、出力装置505と、I/F(Inter/Face)506と、を有する。各部は、バス507を介して接続される。
演算装置300は、全体の制御を司る。演算装置300内のCPU100は、OS(Operating System)511とユーザの指示によってアプリケーション512を実行する。RAM501は、演算装置300のワークエリアとして使用される。ディスクドライブ502は、CPU100の制御にしたがってディスク503に対するデータのリード/ライトを制御する。ディスク503は、ディスクドライブ502の制御で書き込まれたデータを記憶する。ディスク503としては、磁気ディスク、光ディスクなどが挙げられる。ここでは、演算装置300が全体の制御を司る場合を示したが、通常のCPUと同様、演算装置300をコプロセッサとして利用してもよい。
I/F506は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、I/F506は、ネットワークNETと内部のインターフェイスを司り、外部装置からのデータの入出力を制御する。I/F506には、例えばモデムやLANアダプタなどを採用することができる。
入力装置504は、キーボード、マウス、タッチパネルなどユーザの操作により、各種データの入力を行うインターフェイスである。また、入力装置504は、カメラから画像や動画を取り込むこともできる。また、入力装置504は、マイクから音声を取り込むこともできる。出力装置505は、CPU100の指示により、データを出力するインターフェイスである。出力装置505には、ディスプレイやプリンタが挙げられる。
図6は、アプリケーションのバイナリ構造例を示す説明図である。本実施の形態では、演算装置300が、アプリケーション512のプログラムを実行する例について説明する。アプリケーション512のバイナリ600には、初期部iniと、CPU部分proc_swと、コンフィギュレーション部分g_hw_sw_point_listと、非CPU部分proc_hwと、がある。
ここで、CPU部分proc_swは、アプリケーション512の処理が記述されたプログラムであり、CPU100が実行可能なプログラムである。CPU部分proc_swは、複数のコードに区切られる。図6の例では、0〜N(N=2)に区切られてある。コードの実行をソフトウェア処理と称し、FPGA101に回路を構成させ、当該回路による処理をハードウェア処理と称する。また、CPU部分proc_swは、ソフトウェア処理とハードウェア処理とのいずれを行うかをOS511に指示するコードを含む。また、CPU部分proc_swは、ハードウェア処理となった場合に、コンフィギュレーションデータをFPGA101の指定されたポート番号via_idが示すポートviaに送信するためのコードを含む。また、CPU部分proc_swは、ハードウェア処理となった場合に、送信が完了したらFPGA101に開始指示を送信するためのコードを含む。また、CPU部分proc_swは、ハードウェア処理となった場合に、FPGA101からの完了通知を受け付けるためのコードを含む。
コンフィギュレーション部分g_hw_sw_point_listは、例えば、CPU部分proc_swを区切ったコードごとに、処理情報601を有する。処理情報601は、CPU部分proc_swと非CPU部分proc_hwとの各々が記憶されたアドレスと、非CPU部分proc_hwが示す回路をFPGA101に構成させた場合の回路の形状情報と、を有する。形状情報は、縦方向の領域数と、横方向の領域数と、を有する。例えば、処理情報601{CPU部分proc_swが記憶されたアドレス,非CPU部分proc_hwが記憶されたアドレス,縦方向の領域数,横方向の領域数}である。図6の例では、処理情報601−0〜601−2がある。CPU部分proc_swを区切るとは、スレッド単位でもよいし、関数単位でもよく、特に限定しない。形状情報は、縦方向に使用する分割領域数と横方向に使用する分割領域数とを含む。
非CPU部分proc_hwは、アプリケーション512のプログラムを区切った部分プログラムごとに、部分プログラムに記述された処理と同じ処理を行う回路を示すコンフィギュレーションデータである。
(アプリケーション512およびOS511の動作を示す記述例)
図7〜図10は、アプリケーションおよびOSの動作の記述例を示す説明図である。ここで、CPU100は、ディスク503などの記憶装置に記憶されたアプリケーション512およびOS511のプログラムを読み出す。そして、CPU100は、アプリケーション512およびOS511のプログラムを実行することにより、各機能を実現する。まず、図7には、管理テーブルg_management_tableとポート番号テーブルg_via_id_tableとコンフィギュレーション部分g_hw_sw_point_listとが記述されてある。ここでは、FPGA101は5×5に区切られる。図7中の管理テーブルg_management_tableは、分割領域の各々について、いずれの回路が構成されているか、未使用であるかを示す使用情報である。ここでの管理テーブルg_management_tableには、初期値として、使用中でないこと示す“−1”が設定されてある。ポート番号テーブルg_via_id_tableは、分割領域の各々について、ポートを示す識別情報である。コンフィギュレーション部分g_hw_sw_point_listは、図6に示した例と同じである。
図8には、実行結果を表示するための関数801と、コードの実行とFPGA101に回路を構成させるか、またはコードを実行するかを決定するための関数decide_HW_or_SWと、が記述されてある。
関数decide_HW_or_SWは、ハードウェア処理とソフトウェア処理とのいずれにするかを処理情報601ごとに決定する処理を行う。具体的には、関数decide_HW_or_SWは、管理テーブルg_management_tableに基づいて、処理情報601に含まれる形状情報が示す形状に適合する未使用領域を検出する処理を行う。図8の例では、関数decide_HW_or_SWが行う処理を、コメントなどを用いて簡易的に記述してある。戻り値テーブルreturn_value_tableは、処理情報601ごとに3つの要素を有する。0番目の要素は、ポート番号via_idである。1番目の要素は、検出された未使用領域である矩形の左上座標の縦方向座標である。2番目の要素は、検出された未使用領域である矩形の左上座標の横方向座標である。ここでは、ソフトウェア処理の場合、3つの要素として“−1”が設定されてある。
例えば、処理情報601−0については、FPGA101が5×5に区切られているため、OS511は10×10の未使用領域を検出することができない。そのため、処理情報601−1については、ソフトウェア処理となるため、OS511は、戻り値テーブルreturn_value_tableの3つの要素として“−1”を設定する。
また、処理情報601−1について検出される未使用領域は、{(0,0),(1,2)}である。領域は、{左上座標(縦方向の座標値,横方向の座標値),右下座標(縦方向の座標値,横方向の座標値)}によって表される。そのため、OS511は、戻り値テーブルreturn_value_tableの0番目の要素を領域(0,0)のポート番号にする。領域(0,0)のポート番号は、ポート番号テーブルg_via_id_table[0][0]である。そして、OS511は、1番目の要素を0にし、2番目の要素を0にする。
また、処理情報601−2について検出される未使用領域は、{(0,3),(2,4)}である。そのため、OS511は、戻り値テーブルreturn_value_tableの0番目の要素を、領域(0,3)のポート番号にする。領域(0,3)のポート番号は、ポート番号テーブルg_via_id_table[0][3]である。そして、OS511は、1番目の要素を0にし、2番目の要素を3にする。
図9には、FPGA101内に回路が構成された特定の分割領域を解放させるための関数release_HWと、FPGA101内に構成された回路にデータを送信するための関数send_dataと、が記述されてある。また、図9には、FPGA101に構成された回路からデータを受信するための関数recv_dataが記述されてある。
図10には、処理情報601−0について、ソフトウェア処理となった場合に行われる関数proc_0_swと、ハードウェア処理となった場合に行われる関数proc_0_hwが記述されてある。関数proc_0_hwは、ハードウェア処理となった場合に、コンフィギュレーションデータをFPGA101の指定されたポート番号via_idが示すポートviaに送信するためのコードを含む。また、関数proc_0_hwは、ハードウェア処理となった場合に、送信が完了したらFPGA101に開始指示を送信するためのコードを含む。また、関数proc_0_hwは、ハードウェア処理となった場合に、FPGA101からの完了通知を受け付けるためのコードを含む。図10の例では、処理情報601−1と処理情報601−2との各々についてのソフトウェア処理となった場合に行われる関数と、ハードウェア処理となった場合に行われる関数との記述は省略されてある。
また、図10には、メイン関数が記述されてある。メイン関数では、アプリケーション512とアプリケーション512が呼び出すOS511との処理が記述されてある。メイン関数では、アプリケーション512が(1)戻り値テーブル作成および初期化を行う。つぎに、メイン関数では、アプリケーション512によって(2)OS511のサービスルーチンが呼ばれると、処理情報601ごとに、サービスルーチンの中でソフトウェア処理とハードウェア処理とのいずれかを決定する。そして、決定結果は戻り値テーブルreturn_value_tableに記憶する。そして、メイン関数では、(3)戻り値テーブルreturn_value_tableに基づいて、ソフトウェア処理とハードウェア処理とのいずれかを実行する。メイン関数では、(4)アプリケーション512によってOS511のサービスを呼び出し、FPGA101内においてハードウェア処理が完了した回路が構成された領域を解放する。
図11は、実行結果例を示す説明図である。実行結果1100は、図7から図10に記述されたプログラムを実行した結果である。例えば、図11中の0番目の処理は初期値を設定する処理を示し、図11中の1〜3番目の処理は、それぞれ図10に示した(1)〜(3)の処理と対応する。1番目の処理によって、管理テーブルg_management_tableと戻り値テーブルreturn_value_tableとが更新される。
つぎに、アプリケーション512において並列処理が行われる場合について説明する。
図12は、CPUとバスとの詳細例を示す説明図である。図13は、アドレス構成例を示す説明図である。上述したように、CPU100と、FPGA101内の各領域とは、相互結合網1201と領域ごとのバスインターフェイス部1202と、によって接続される。ポートには、ポート番号via_idが予め付されてある。相互結合網1201とバスインターフェイス部1202とは上述したデータ転送回路401である。
また、CPU100は、バスアクセス部1211と、割り込み処理部1212と、を有する。CPU100は、バスアクセス部1211を介して相互結合網1201と接続される。ポートの各々は、開始レジスタ1221と、完了レジスタ1222と、を有する。
また、バスインターフェイス部1202は、CPU100からはメモリのデバイスとして解釈されるため、CPU100からFPGA101へのアドレス構成を、例えば、図13のように決めておく。この例では、CPU100からFPGA101へのアドレス構成では、上位ビットから順に、FPGA101を示す識別情報と、ポート番号と、ローカルアドレスと、なっている。図13の例では、FPGA101を示す識別情報が“111”である。ローカルアドレスは、開始レジスタ1221を示すアドレスと、完了レジスタ1222を示すアドレスと、ユーザ領域を示すアドレスと、を有する。ユーザ領域とは、所定のRAM、またはバスインターフェイス部1202に接続される領域を示す。
図13の例では、開始レジスタ1221を示すアドレスは0であり、完了レジスタ1222を示すアドレスは1であり、ユーザ領域を示すアドレスは2以上の値である。例えば、ポート番号via_idが5ビット、ローカルアドレスが24ビットであったとすると、バスインターフェイス部1202−1(つまり,ポート番号via_id=0)の開始レジスタ1221−1に値を設定する場合、アドレスは“0xE0000000”となる。
CPU100からのアクセスは、リードアクセスとライトアクセスとがある。ライトアクセスの場合、CPU100は、アドレスと、ライトを示す情報と、データとを送信する。例えば、バスインターフェイス部1202は、ローカルアドレスが0または1の場合に、バスインターフェイス部1202内のレジスタに値が設定される。また、例えば、バスインターフェイス部1202は、ローカルアドレスが2以上の場合に、WE信号をアサートし、アドレスの値とデータとをそれぞれバスインターフェイス部1202内のポートvia_Addrとポートvia_Wdataとに転送する。FPGA101の各分割領域は、各ポートviaと接続され、分割領域には、各ポートviaに対応するI/Oが設けられてある。当該I/Oに接続された分割領域へのダウンロードデータを作成しておけば、Addr,Wdata,WE信号によって各データを受け取る。
また、リードアクセスの場合、CPU100は、アドレスと、リードを示す情報と、を送信する。バスインターフェイス部1202は、ローカルアドレスが0または1である場合、バスインターフェイス部1202の内部レジスタを読み出す。バスインターフェイス部1202は、ローカルアドレスが2以上の場合、RE(Read)信号をアサートして、ローカルアドレスをAddr信号とする。バスインターフェイス部1202に接続された領域は、該当のデータを読み出し、ポートvia_Vをアサートして、ポートvia_Rdataを介して読み出したデータを送信する。これにより、バスインターフェイス部1202は、所望のデータを受け取り、CPU100へ返す。
開始レジスタ1221は、回路の処理の開始を示すレジスタである。開始レジスタ1221は、CPU100やFPGA101内に構成された他の回路によって値が設定される。開始レジスタ1221の値はポートvia_Sを介してFPGA101の領域に接続される。例えば、開始レジスタ1221の値が0から1に変化すると、バスインターフェイス部1202は、開始指示を受信したと判断し、バスインターフェイス部1202に接続された領域に構成された回路が処理を開始する。
完了レジスタ1222の値はポートvia_Dを介してFPGA101の領域に接続される。FPGA101の領域に構成された回路の処理が終了した場合、回路は、完了信号をポートvia_Dによって送信し、完了レジスタ1222に、完了を示す値を設定する。例えば、完了を示す値を1とする。
また、完了レジスタ1222は、割り込み処理部1212に接続される。そのため、完了レジスタ1222に1が設定されると、OS511は、割り込み処理部1212によって完了の割り込み処理を検出する。そして、OS511は、割り込み処理があったバスインターフェイス部1202の開始レジスタ1221に0を設定する。バスインターフェイス部1202は、開始レジスタ1221の値が1から0に変化した場合、FPGA101内の領域において完了信号の出力を完了する。これにより、割り込みが解除される。
図14は、並列処理のプログラム例を示す説明図である。例えば、プログラム1400は、処理PA〜PDに基づいてコードが区切られてある。処理PAの完了後に、処理PBと処理PCとが並列処理され、処理PBと処理PCとの完了後に、処理PDが実行される。
図15は、スレッドプログラミング例を示す説明図である。スレッド1500とスレッド1501とが並列に処理される。例えば、処理PAの後に、処理PCについてのコンフィギュレーションデータが示す回路をFPGA101によって構成させ、スレッド1500は、処理PCを起動させる。そして、スレッド1501の処理PCの実行が完了すると、スレッド1501はOS511に対して終了通知を送信する。
図16は、システム動作例1を示す説明図である。ここでは、例えば、アプリケーション512についての処理PCと処理PBとを実行する例を説明する。また、処理PCと処理PBとは並列処理である。
OS511は、管理テーブルg_management_tableを生成する(ステップS1601)。そして、例えば、ユーザが入力装置504を介してアプリケーション512の起動指示をOS511に通知する(ステップS1602)。ここでの管理テーブルg_management_tableの各値は初期値である。つぎに、OS511はプロセスを生成する(ステップS1603)ことにより、アプリケーション512の実行が開始される。例えば、アプリケーション512は、あらたな実行ポイントとなると、戻り値テーブルを確保する(ステップS1604)。そして、アプリケーション512は、FPGA101に構成させるかコードを実行するかの判断通知をOS511へ送る(ステップS1605)。これにより、OS511は、関数decide_HW_or_SWを行う。
そして、OS511は、管理テーブルg_management_tableを参照して、処理PCについての非CPU部分proc_hwが示す回路をFPGA101に構成可能な未使用領域を検出する(ステップS1606)。図16の例では未使用領域が検出されたとする。つぎに、未使用領域が検出された場合、OS511は、管理テーブルg_management_tableを更新する(ステップS1606)。そして、OS511は、戻り値テーブルreturn_value_tableを更新する(ステップS1607)。OS511は、非CPU部分proc_hwを取得する(ステップS1608)。OS511は、検出した未使用領域についてのコンフィギュレーションデータメモリに非CPU部分proc_hwを書き込む(ステップS1609)。これにより、未使用領域を検出できた場合、OS511は、FPGA101に対して、検出した未使用領域に非CPU部分proc_hwが示す回路を構成させる。OS511は、アプリケーション512に対して、完了を通知する(ステップS1610)。
つぎに、アプリケーション512は、スレッド1500で、処理PAを実行する。つぎに、スレッド1501に起動イベントを送る(またはスレッド1501を生成する)。これにより、スレッド1500とスレッド1501とが並列に実行され、スレッド1500では処理PBが、スレッド1501では処理PCが、それぞれ実行される。具体的には、スレッド1500では、処理PBについてのCPU部分proc_swが実行される。一方、スレッド1501では、戻り値テーブルreturn_value_tableに基づいて、処理PCについてSWまたはHWの実行区別を判定する(ステップS1611)。この例では、処理PCはFPGA101に割り当てられているので、戻り値テーブルの該当のポート番号via_idは非負整数になっている。アプリケーション512は、前記値が非負整数であることより、処理PCはハードウェア処理と判定し、前記値をポート番号via_idとして採用する(ステップS1612)。
つぎに、アプリケーション512は、スレッド1501で、処理PCに対応する、図10中proc_0_hw相当を実行する。最初に、send_data処理を実行する。取得したポート番号via_idに基づいて、処理PCについての非CPU部分proc_hwが示す回路が構成された領域へ所望のデータ書き込みを行い、開始指示を通知する(ステップS1613)。上述したように、アプリケーション512は、ポート番号via_idに基づいて、バスインターフェイス部1202内の開始レジスタ1221の値を1にする。つぎに、recv_data処理を実行する。FPGA101から処理PBの完了通知の割り込みを待機する(ステップS1614)。ハードウェア処理は、処理が完了したら、完了通知の割り込みをあげる(ステップS1615−1)。上述のように、バスインターフェイス部1202内の終了レジスタ1222の値が1になると、アプリケーション512は、完了通知の割り込みを受け付ける。割り込みがあがったら、recv_dataの処理が再開され、データ読み込みが行われれ(ステップS1615−2)、recv_data処理が終了する。これにより、処理PCに対応する図10中proc_0_hw相当が終了、スレッド1501の処理が終了する。
スレッド1500では、処理PBが終わったら、図15のように、スレッド1501が終わっていなければスレッド1501の終了を待ち、スレッド1501が終わったら、処理PDを実行する。ここで注目したいのは、スレッドプログラミングを利用すると、ソフトウェア処理部分とハードウェア処理部分の並列実行が自然に扱えていることである。つまり、本発明が提案する仕組みを使えば並列実行が自然に行えるのである。最後に、終了処理を行う。アプリケーション512は、処理PCを行う回路が構成された領域の解放指示を行う(ステップS1616)。解放指示を受け付けると、OS511は、FPGA101内の、処理PCを行う回路が構成された領域をリセットする(ステップS1617)。そして、OS511は、リセットの完了通知をFPGA101から受け付ける(ステップS1618)と、リセット後となるように管理テーブルg_management_tableを更新する(S1619)。そして、OS511は、処理PCに関する戻り値テーブルreturn_value_tableを削除し(ステップS1620)、削除の完了通知をアプリケーション512へ送信する(ステップS1621)。そして、アプリケーション512は、終了する(ステップS1622)。
図17は、システム動作例2を示す説明図である。システム動作例2では、未使用領域が検出されない例を示す。OS511は、管理テーブルg_management_tableを生成する(ステップS1701)。例えば、ユーザが入力装置504を介してアプリケーション512の起動指示をOS511に通知する(ステップS1702)。ここでの管理テーブルg_management_tableの各値は初期値である。つぎに、OS511はプロセスを生成する(ステップS1703)ことにより、アプリケーション512の実行が開始される。例えば、アプリケーション512は、あらたな実行ポイントとなると、戻り値テーブルを確保する(ステップS1704)。そして、アプリケーション512は、FPGA101に構成させるかコードを実行するかの判断通知をOS511へ送る(ステップS1705)。これにより、OS511は、関数decide_HW_or_SWを行う。
そして、OS511は、管理テーブルg_management_tableを参照して、処理Cについての非CPU部分proc_hwが示す回路をFPGA101に構成可能な未使用領域を検出する(ステップS1706)。図17の例では未使用領域が検出されないとする。つぎに、未使用領域が検出されなかった場合、OS511は、戻り値テーブルreturn_value_tableを更新する(ステップS1707)。そして、OS511は、未使用領域が検出されなかったことをアプリケーション512に通知する(ステップS1708)。そして、アプリケーション512は、処理CについてのCPU部分proc_swを実行する(ステップS1709)。
図18は、システムアーキテクチャ例を示す説明図である。従来では、CPUが、機能が拡張されていないOSと、CPUが実行可能なプログラムのアプリケーションとを実行する。本実施の形態では、CPU100とFPGA101とを有する演算装置300が、機能が拡張されたOS511と、非CPU部分proc_hwとCPU部分proc_swとを有するアプリケーション512と、を実行する。
以上説明したように、CPU100は、FPGA101を同一形状の複数の分割領域に分割しておき、複数の分割領域から、FPGA101に特定回路を構成させた場合の形状に適合する未使用領域を検出し、検出した分割領域に特定回路を構成させる。このように、特定回路をFPGA101に構成させた場合の形状を予め特定しておくことにより、再構成処理を簡単にすることができる。
また、CPU100は、未使用領域を検出できなかった場合、特定回路の処理と同一の処理が記述されたプログラムを実行する。これにより、FPGA101を利用しつつCPU100による処理性能を維持する。未使用領域が検出されなかった場合に、未使用領域が空くのを待機せずに、直ちに特定回路が行う処理と同一の処理が実現される。
また、コンフィギュレーションデータをFPGA101の空き領域に基づいて作成しておかなくてよいため、コンフィギュレーションデータの作成が簡単になる。また、異なる種類のFPGA101であってFPGA101の各々に同一形状の分割領域を設け、アプリケーションの処理を区切った部分処理の各々についてCPU部分と非CPU部分とを用意する。これにより、非CPU部分があるアプリケーションをより多くのシステムで実行可能となる。すなわち、従来であれば、FPGAが異なる度に、コンフィギュレーションデータを作成しなければならない。これに対して、CPU100とOS511の種類などによって、コンフィギュレーションデータの種類が定まり、同一形状の分割領域が設けられたFPGAが接続されていれば、あらたにコンフィギュレーションデータを作成しなくてよい。また、ユーザは、CPUとOSの種類などに基づいて、CPU部分と非CPU部分とを含むアプリケーションをダウンロードサイトからダウンロードして利用すればよい。したがって、アプリケーションプログラムの配布の容易化を図ることができる。さらに、アプリケーションの作成者のアプリケーションの開発効率の向上を図ることができる。
また、演算装置300は、CPU100とFPGA101とを有し、CPU100とFPGA101は積層される。これにより、消費電力量を低減させることができる。
また、FPGA101の分割領域の各々は、CPU100とアクセス可能な通信路を分割領域内における同一の位置に有する。これにより、各分割領域が、同一形状であり、同一機能となる。そのため、いずれの分割領域に回路が構成されても、CPU100とのアクセスを同様に行うことができる。
また、CPU100が、検出した未使用領域に構成された特定回路に、処理の開始を示す開始通知を送信する。これにより、特定回路が行う処理の開始タイミングを制御することができる。このように、開始タイミングが制御可能であれば、並列処理を行うことができる。
また、CPU100が、構成された特定回路から処理の終了を示す完了通知を受信すると、特定回路が構成された領域を未使用領域となるように使用情報を更新する。これにより、処理が終了した後に特定回路が構成された領域を解放することができる。ここまでは、説明の簡易化のため、再構成可能な回路をFPGAに限って説明したが、本発明はFPGAに限らない。再構成可能な回路を、CPU、DSPなどのプロセッサ・エレメントとしてもよい。この場合、1分割領域に1プロセッサ・エレメントがある構造にしておき、非CPU部分proc_hwにプロセッサ・エレメントのコード、コンフィギュレーション部分で形状情報の代わりにコード長を書くとすれば、当然のことながら、同様の効果が得られる。更に、ここまでは、対象を再構成可能な回路としたが、特定用途回路を含めてもよい。特定用途回路の種別を示すID番号を予め決めておき、コンフィギュレーション部分に必要とする特定用途回路IDを書き、該当する特定用途回路IDに対応する回路が使用可能であれば使用し、使用中または該当の特定用途回路が存在しなければ、ソフトウェア処理またはハードウェア処理(FPGAをはじめとする再構成可能な回路を利用)で処理するとしてもよい。もし、特定用途回路IDに対応する回路の利用が必須の場合には、例えば、decide_HW_or_SWの中で、該当の特定用途回路がなければエラーとし、該当の特定用途回路が使用中であれば、未使用になるのを待つ、とすれば対応できる。このように、本発明は、様々な形態で、CPUで実行する処理と非CPUで実行する処理が混在したソフトウェアを処理する仕組みを提供しているのである。つまり、CPUで実行するソフトウェアとその他回路のやり取りを、ハードウェアとOS(の拡張)とソフトウェアの協調で実現する仕組みを提供しているといえる。
なお、本実施の形態で説明した制御方法は、予め用意された制御プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)内部の回路を再構成可能な集積回路を区切った同一形状の複数の分割領域の各々にアクセス可能なプロセッサが、
特定回路を前記集積回路に構成させた場合の前記特定回路の形状を示す形状情報を取得し、
前記複数の分割領域の各々について使用中か否かを示す使用情報に基づいて、前記複数の分割領域のうち少なくともいずれかの分割領域を含む未使用領域であって、取得した前記形状情報が示す形状に適合する未使用領域を検出し、
前記未使用領域を検出できた場合、前記集積回路に対して、検出した前記未使用領域に前記特定回路を構成させる、
処理を実行することを特徴とする制御方法。
(付記2)前記プロセッサが、
前記未使用領域を検出できなかった場合、前記特定回路が行う処理と同一処理が記述されたプログラムであって前記プロセッサが実行可能なプログラムを実行することを特徴とする付記1に記載の制御方法。
(付記3)内部の回路を再構成可能な集積回路であって同一形状の複数の分割領域に区切られた集積回路と、
前記複数の分割領域の各々にアクセス可能なプロセッサと、
前記複数の分割領域の各々が使用中か否かを示す使用情報を記憶する記憶部と、
を有する演算装置であって、
前記プロセッサが、
特定回路を前記集積回路に構成させた場合の前記特定回路の形状を示す形状情報を取得し、
前記複数の分割領域の各々について使用中か否かを示す使用情報に基づいて、前記複数の分割領域のうち少なくともいずれかの分割領域を含む未使用領域であって、取得した前記形状情報が示す形状に適合する未使用領域を検出し、
前記未使用領域を検出できた場合、前記集積回路に対して、検出した前記未使用領域に前記特定回路を構成させる処理を実行することを特徴とする演算装置。
(付記4)前記プロセッサが、
検出した前記未使用領域に構成された前記特定回路に、前記処理の開始を示す開始指示を前記集積回路へ送信する処理を実行し、
前記集積回路は、前記開始指示を受信すると、前記処理を開始することを特徴とする付記3に記載の演算装置。
(付記5)前記プロセッサと前記集積回路とが積層されたことを特徴とする付記3または4に記載の演算装置。
(付記6)前記複数の分割領域の各々は前記プロセッサとアクセス可能な通信路を前記分割領域内における同一の位置に有することを特徴とする付記3〜5のいずれか一つに記載の演算装置。
(付記7)内部の回路を再構成可能な集積回路を区切った同一形状の複数の分割領域の各々にアクセス可能なプロセッサに、
特定回路を前記集積回路に構成させた場合の前記特定回路の形状を示す形状情報を取得し、
前記複数の分割領域の各々について使用中か否かを示す使用情報に基づいて、前記複数の分割領域のうち少なくともいずれかの分割領域を含む未使用領域であって、取得した前記形状情報が示す形状に適合する未使用領域を検出し、
前記未使用領域を検出できた場合、前記集積回路に対して、検出した前記未使用領域に前記特定回路を構成させる、
処理を実行させることを特徴とする制御プログラム。
(付記8)内部の回路を再構成可能な集積回路を区切った同一形状の複数の分割領域の各々にアクセス可能なプロセッサに、
特定回路を前記集積回路に構成させた場合の前記特定回路の形状を示す形状情報を取得し、
前記複数の分割領域の各々について使用中か否かを示す使用情報に基づいて、前記複数の分割領域のうち少なくともいずれかの分割領域を含む未使用領域であって、取得した前記形状情報が示す形状に適合する未使用領域を検出し、
前記未使用領域を検出できた場合、前記集積回路に対して、検出した前記未使用領域に前記特定回路を構成させる、
処理を実行させる制御プログラムを記録したことを特徴とする記録媒体。
100 CPU
101 FPGA
102 管理テーブル
103 特定回路
111 形状情報
112 コンフィギュレーションデータ
113 プログラム
300 演算装置
via ポート
A1〜A20 分割領域

Claims (6)

  1. 内部の回路を再構成可能な集積回路を区切った同一形状の複数の分割領域の各々にアクセス可能なプロセッサが、
    特定回路を前記集積回路に構成させた場合の前記特定回路の形状を示す形状情報を取得し、
    前記複数の分割領域の各々について使用中か否かを示す使用情報に基づいて、前記複数の分割領域のうち少なくともいずれかの分割領域を含む未使用領域であって、取得した前記形状情報が示す形状に適合する未使用領域を検出し、
    前記未使用領域を検出できた場合、前記集積回路に対して、検出した前記未使用領域に前記特定回路を構成させる、
    処理を実行することを特徴とする制御方法。
  2. 前記プロセッサが、
    前記未使用領域を検出できなかった場合、前記特定回路が行う処理と同一処理が記述されたプログラムであって前記プロセッサが実行可能なプログラムを実行することを特徴とする請求項1に記載の制御方法。
  3. 内部の回路を再構成可能な集積回路であって同一形状の複数の分割領域に区切られた集積回路と、
    前記複数の分割領域の各々にアクセス可能なプロセッサと、
    前記複数の分割領域の各々が使用中か否かを示す使用情報を記憶する記憶部と、
    を有する演算装置であって、
    前記プロセッサが、
    特定回路を前記集積回路に構成させた場合の前記特定回路の形状を示す形状情報を取得し、
    前記複数の分割領域の各々について使用中か否かを示す使用情報に基づいて、前記複数の分割領域のうち少なくともいずれかの分割領域を含む未使用領域であって、取得した前記形状情報が示す形状に適合する未使用領域を検出し、
    前記未使用領域を検出できた場合、前記集積回路に対して、検出した前記未使用領域に前記特定回路を構成させる処理を実行することを特徴とする演算装置。
  4. 前記プロセッサと前記集積回路とが積層されたことを特徴とする請求項3に記載の演算装置。
  5. 前記複数の分割領域の各々は前記プロセッサとアクセス可能な通信路を前記分割領域内における同一の位置に有することを特徴とする請求項3または4に記載の演算装置。
  6. 内部の回路を再構成可能な集積回路を区切った同一形状の複数の分割領域の各々にアクセス可能なプロセッサに、
    特定回路を前記集積回路に構成させた場合の前記特定回路の形状を示す形状情報を取得し、
    前記複数の分割領域の各々について使用中か否かを示す使用情報に基づいて、前記複数の分割領域のうち少なくともいずれかの分割領域を含む未使用領域であって、取得した前記形状情報が示す形状に適合する未使用領域を検出し、
    前記未使用領域を検出できた場合、前記集積回路に対して、検出した前記未使用領域に前記特定回路を構成させる、
    処理を実行させることを特徴とする制御プログラム。
JP2013169969A 2013-08-19 2013-08-19 制御方法、演算装置、および制御プログラム Pending JP2015039155A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013169969A JP2015039155A (ja) 2013-08-19 2013-08-19 制御方法、演算装置、および制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013169969A JP2015039155A (ja) 2013-08-19 2013-08-19 制御方法、演算装置、および制御プログラム

Publications (1)

Publication Number Publication Date
JP2015039155A true JP2015039155A (ja) 2015-02-26

Family

ID=52631981

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013169969A Pending JP2015039155A (ja) 2013-08-19 2013-08-19 制御方法、演算装置、および制御プログラム

Country Status (1)

Country Link
JP (1) JP2015039155A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017011424A (ja) * 2015-06-19 2017-01-12 ルネサスエレクトロニクス株式会社 半導体装置及びその制御方法
US10769090B2 (en) 2017-03-13 2020-09-08 Fujitsu Limited Information processing apparatus, control method of information processing, and non-transitory computer-readable storage medium for storing program

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11168185A (ja) * 1997-12-03 1999-06-22 Rohm Co Ltd 積層基板体および半導体装置
JP2000252814A (ja) * 1999-03-02 2000-09-14 Fuji Xerox Co Ltd 情報処理システム
JP2001135728A (ja) * 1999-07-15 2001-05-18 Altera Corp 信号インターフェース・バンプを含む統合セル構造を有するプログラマブル・ロジック・デバイス
JP2007529894A (ja) * 2004-03-16 2007-10-25 アーバー・カンパニー・リミテッド・ライアビリティ・パートナーシップ ダイ素子が積層された再構成可能なプロセッサモジュール
JP2009025953A (ja) * 2007-07-18 2009-02-05 Fuji Xerox Co Ltd 演算処理装置及び演算処理プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11168185A (ja) * 1997-12-03 1999-06-22 Rohm Co Ltd 積層基板体および半導体装置
JP2000252814A (ja) * 1999-03-02 2000-09-14 Fuji Xerox Co Ltd 情報処理システム
JP2001135728A (ja) * 1999-07-15 2001-05-18 Altera Corp 信号インターフェース・バンプを含む統合セル構造を有するプログラマブル・ロジック・デバイス
JP2007529894A (ja) * 2004-03-16 2007-10-25 アーバー・カンパニー・リミテッド・ライアビリティ・パートナーシップ ダイ素子が積層された再構成可能なプロセッサモジュール
JP2009025953A (ja) * 2007-07-18 2009-02-05 Fuji Xerox Co Ltd 演算処理装置及び演算処理プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017011424A (ja) * 2015-06-19 2017-01-12 ルネサスエレクトロニクス株式会社 半導体装置及びその制御方法
US10769090B2 (en) 2017-03-13 2020-09-08 Fujitsu Limited Information processing apparatus, control method of information processing, and non-transitory computer-readable storage medium for storing program

Similar Documents

Publication Publication Date Title
TWI610167B (zh) 改善平台管理的計算裝置建置方法、保持電腦可執行指令之非暫存媒體及配置為提供強化管理資訊之計算裝置
CN106445576B (zh) 主机板及其计算机实现方法及非暂态计算机可读储存装置
US10671556B2 (en) Selectable peripheral logic in programmable apparatus
US7552312B2 (en) Identifying messaging completion in a parallel computer by checking for change in message received and transmitted count at each node
EP3217270A1 (en) A scalable pooled nvme storage box
TW201818262A (zh) 讀寫請求處理方法及裝置
EP3168752B1 (en) Chipset and server system using the same
US9026687B1 (en) Host based enumeration and configuration for computer expansion bus controllers
US8185901B2 (en) Parsing an application to find serial and parallel data segments to minimize migration overhead between serial and parallel compute nodes
US20170031694A1 (en) System and method for remote system configuration managment
JP6331504B2 (ja) 電子機器、及び情報処理システム
JP2016518654A (ja) サーバ制御方法及びサーバ制御装置
WO2019072111A1 (zh) Fpga设备、基于fpga设备的云系统
WO2018205267A1 (zh) 输入设备实现方法及其实现装置
CN116541227B (zh) 故障诊断方法、装置、存储介质、电子装置及bmc芯片
CN115562738B (zh) 一种端口配置方法、组件及硬盘扩展装置
CN106815164A (zh) 自动时钟配置系统及方法
JP2018531461A6 (ja) マルチステージブートイメージロードおよびプログラマブルロジックデバイスの構成
JP2015039155A (ja) 制御方法、演算装置、および制御プログラム
US20160156518A1 (en) Server for automatically switching sharing-network
US20150186317A1 (en) Method and apparatus for detecting the initiator/target orientation of a smart bridge
JP2016513838A (ja) セキュリティ・コプロセッサ・ブート性能
US11544129B2 (en) Cross-component health monitoring and improved repair for self-healing platforms
CN117480498A (zh) 在运行时间为裸金属服务器动态提供PCIe器件
WO2018107394A1 (en) I/o emulation abortion in virtualized environments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170522

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171107