JP6102511B2 - Integrated circuit, control apparatus, control method, and control program - Google Patents

Integrated circuit, control apparatus, control method, and control program Download PDF

Info

Publication number
JP6102511B2
JP6102511B2 JP2013109394A JP2013109394A JP6102511B2 JP 6102511 B2 JP6102511 B2 JP 6102511B2 JP 2013109394 A JP2013109394 A JP 2013109394A JP 2013109394 A JP2013109394 A JP 2013109394A JP 6102511 B2 JP6102511 B2 JP 6102511B2
Authority
JP
Japan
Prior art keywords
access
access request
circuit
integrated circuit
unit
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.)
Active
Application number
JP2013109394A
Other languages
Japanese (ja)
Other versions
JP2014230174A (en
Inventor
富田 憲範
憲範 富田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013109394A priority Critical patent/JP6102511B2/en
Publication of JP2014230174A publication Critical patent/JP2014230174A/en
Application granted granted Critical
Publication of JP6102511B2 publication Critical patent/JP6102511B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、集積回路、制御装置、制御方法、および制御プログラムに関する。   The present invention relates to an integrated circuit, a control device, a control method, and a control program.

従来、サーバに複数のFPGA(Field Programmable Gate Array)が接続されることにより、複数の利用者がサーバを介して複数のFPGAを利用可能となる技術がある(例えば、下記特許文献1参照。)。例えば、サーバは、利用者が利用中のFPGAを他の利用者によって利用させないように制御する。   Conventionally, there is a technique in which a plurality of users can use a plurality of FPGAs via a server by connecting a plurality of FPGAs (Field Programmable Gate Array) to the server (see, for example, Patent Document 1 below). . For example, the server controls the FPGA that is being used by the user not to be used by other users.

米国特許第7376917号明細書U.S. Pat. No. 7,376,917

しかしながら、複数の利用者が同一のFPGAを共同で利用すると、FPGAを介して利用者の記憶領域へのアクセスを行う場合に利用者間の干渉が生じる場合がある。このため、利用者の処理環境が不安定になるという問題点がある。   However, when a plurality of users jointly use the same FPGA, there may be interference between users when accessing the storage area of the user via the FPGA. For this reason, there exists a problem that a user's processing environment becomes unstable.

1つの側面では、本発明は、利用者の処理環境を安定させることができる集積回路、制御装置、制御方法、および制御プログラムを提供することを目的とする。   In one aspect, an object of the present invention is to provide an integrated circuit, a control device, a control method, and a control program that can stabilize a processing environment of a user.

本発明の一の側面によれば、集積回路は、内部の回路を再構成可能であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成される。部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能であり、前記部分回路のうちのいずれかからのアクセス要求を受け付け、受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスをアクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない集積回路、および制御方法が提案される。   According to one aspect of the present invention, an integrated circuit can reconfigure an internal circuit, and partial circuits assigned to each of a plurality of computers are configured in different areas. Each of the different storage areas allocated to each of the partial circuits is accessible, accepts an access request from any of the partial circuits, and the access destination indicated by the received access request is the request source of the access request If the storage area is allocated to the partial circuit, the access unit executes access based on the access request, and if it is not the allocated storage area, the access unit does not execute access based on the access request. An integrated circuit and a control method are proposed.

本発明の他の側面によれば、制御装置は、内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続される。複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない制御装置、制御方法、および制御プログラムが提案される。   According to another aspect of the present invention, the control device is an integrated circuit in which an internal circuit can be reconfigured, and an integrated circuit in which partial circuits assigned to each of a plurality of computers are configured in different regions. Connected. An access request to the integrated circuit is received from any of a plurality of computers, and the access destination indicated by the received access request is an area in which a partial circuit assigned to the requesting computer of the access request is configured. In some cases, a control device, a control method, and a control program that execute access based on the access request and that do not execute access based on the access request when the area is not configured are proposed.

本発明の一態様によれば、利用者の処理環境を安定させることができる。   According to one aspect of the present invention, the user's processing environment can be stabilized.

図1は、本実施の形態にかかるシステムの動作例1を示す説明図である。FIG. 1 is an explanatory diagram of an operation example 1 of the system according to the present embodiment. 図2は、本実施の形態にかかるシステムの動作例2を示す説明図である。FIG. 2 is an explanatory diagram of an operation example 2 of the system according to the present embodiment. 図3は、システムの詳細例を示す説明図である。FIG. 3 is an explanatory diagram showing a detailed example of the system. 図4は、端末とサーバのハードウェア構成例を示すブロック図である。FIG. 4 is a block diagram illustrating a hardware configuration example of the terminal and the server. 図5は、サーバによるソフトウェアの実行例を示す説明図である。FIG. 5 is an explanatory diagram of an example of software execution by the server. 図6は、システムの利用開始時のフロー例を示す説明図である。FIG. 6 is an explanatory diagram showing an example of a flow at the start of use of the system. 図7は、開発システム例を示す説明図である。FIG. 7 is an explanatory diagram illustrating an example of a development system. 図8は、仮想マシン生成プログラムを実行するサーバによる生成処理手順例を示すフローチャートである。FIG. 8 is a flowchart illustrating an example of a generation processing procedure by a server that executes a virtual machine generation program. 図9は、運用時のサーバによる初期設定処理手順例を示すフローチャートである。FIG. 9 is a flowchart illustrating an example of an initial setting process procedure by the server during operation. 図10は、受け入れ検査プログラムを実行するサーバのデータフロー例を示す説明図である。FIG. 10 is an explanatory diagram illustrating a data flow example of a server that executes an acceptance inspection program. 図11は、サーバの機能的構成例を示すブロック図である。FIG. 11 is a block diagram illustrating a functional configuration example of the server. 図12は、メモリアロケーション例を示す説明図である。FIG. 12 is an explanatory diagram of an example of memory allocation. 図13は、各ユーザモジュールに割り当てられた記憶領域の詳細例を示す説明図である。FIG. 13 is an explanatory diagram showing a detailed example of the storage area allocated to each user module. 図14は、FPGAに構成された各ユーザモジュール例を示すブロック図である。FIG. 14 is a block diagram illustrating an example of each user module configured in the FPGA. 図15は、アクセス許可設定レジスタの設定例を示す説明図である。FIG. 15 is an explanatory diagram of a setting example of the access permission setting register. 図16は、ユーザモジュールとポートの対応例を示す説明図である。FIG. 16 is an explanatory diagram showing an example of correspondence between user modules and ports. 図17は、デバイスドライバが有するテーブル例を示す説明図である。FIG. 17 is an explanatory diagram illustrating an example of a table included in the device driver. 図18は、仮想マシンからユーザモジュールへのアクセス例を示す説明図である。FIG. 18 is an explanatory diagram of an example of access from the virtual machine to the user module. 図19は、ユーザモジュールからサーバ内のメモリへのアクセス例を示す説明図である。FIG. 19 is an explanatory diagram illustrating an example of access from the user module to the memory in the server. 図20は、アドレス判断処理の詳細例を示す説明図である。FIG. 20 is an explanatory diagram illustrating a detailed example of the address determination process. 図21は、データ量制限処理の詳細例を示す説明図である。FIG. 21 is an explanatory diagram showing a detailed example of the data amount restriction process.

本実施の形態では、複数の利用者が異なる回路を同一のFPGA内に構成させる。また、本実施の形態では、複数の利用者の各々に割り当てられたコンピュータは、制御装置であるサーバを介してFPGAにアクセスする。   In this embodiment, a plurality of different users are configured in the same FPGA. In the present embodiment, a computer assigned to each of a plurality of users accesses the FPGA via a server that is a control device.

また、複数の利用者が同一のFPGAを共同で利用すると、FPGAを介して利用者の記憶領域へのアクセスを行う場合に、FPGAはサーバなどのコンピュータバスに接続されるため、いずれの利用者の記憶領域であってもアクセス可能である。そのため、利用者間の干渉が生じる場合がある。本実施の形態では、FPGAを介して利用者の記憶領域へのアクセスを行う場合に、異なる利用者の記憶領域へアクセスさせないようにFPGA内の管理モジュールが制御する。   In addition, when a plurality of users use the same FPGA jointly, when accessing the user's storage area via the FPGA, the FPGA is connected to a computer bus such as a server. Can be accessed even in the storage area. Therefore, interference between users may occur. In the present embodiment, when accessing a user's storage area via the FPGA, the management module in the FPGA controls not to access the storage area of a different user.

また、複数の利用者が同一のFPGAを共同で利用すると、複数の利用者がFPGAへのアクセスを行う場合に、利用者がFPGA内の異なる利用者の回路にアクセス可能であるため、利用者間の干渉が生じる場合がある。本実施の形態では、利用者がFPGAへのアクセスを行う場合に、異なる利用者の回路にアクセスさせないようにサーバが制御する。   In addition, when a plurality of users use the same FPGA jointly, when the plurality of users access the FPGA, the user can access the circuits of different users in the FPGA. Interference may occur. In the present embodiment, when the user accesses the FPGA, the server controls so as not to access the circuits of different users.

以下に添付図面を参照して、本発明にかかる集積回路、制御装置、制御方法、および制御プログラムの実施の形態を詳細に説明する。   Exemplary embodiments of an integrated circuit, a control device, a control method, and a control program according to the present invention will be explained below in detail with reference to the accompanying drawings.

図1は、本実施の形態にかかるシステムの動作例1を示す説明図である。システム100は、サーバ111と、複数の利用者の各々に割り当てられたコンピュータ121と、サーバ111に接続されたFPGA101と、を有する。システム100の詳細例は図3に示す。   FIG. 1 is an explanatory diagram of an operation example 1 of the system according to the present embodiment. The system 100 includes a server 111, a computer 121 assigned to each of a plurality of users, and an FPGA 101 connected to the server 111. A detailed example of the system 100 is shown in FIG.

サーバ111は、コンピュータ121からFPGA101へのアクセスを制御可能な制御装置である。FPGA101は、内部の回路を再構成可能な集積回路である。図1の例では、FPGA101には、部分回路としてユーザモジュール102−1とユーザモジュール102−2と、管理モジュール103と、が構成されてある。例えば、FPGA101の内部の回路を最構成させるソフトウェアには、FPGA101内の許可された領域のみにユーザモジュール102を構成可能なパーシャルコンフィギュレーション機能がある。そのため、FPGA101には、ユーザモジュール102−1と、ユーザモジュール102−2と、管理モジュール103と、がそれぞれ異なる領域に構成可能である。例えば、ユーザモジュール102−1は、コンピュータ121−1に割り当てられてあり、コンピュータ121−1がアクセス可能である。例えば、ユーザモジュール102−2は、コンピュータ121−2に割り当てられてあり、コンピュータ121−2がアクセス可能である。例えば、コンピュータ121−1と、コンピュータ121−2と、は利用者がそれぞれ異なる。複数の利用者の各々に割り当てられたコンピュータ121は、図1に示すように物理的な装置であってもよいし、サーバ111上に構築された仮想マシンであってもよい。   The server 111 is a control device that can control access from the computer 121 to the FPGA 101. The FPGA 101 is an integrated circuit that can reconfigure an internal circuit. In the example of FIG. 1, the FPGA 101 includes a user module 102-1, a user module 102-2, and a management module 103 as partial circuits. For example, the software that reconfigures the internal circuit of the FPGA 101 has a partial configuration function that allows the user module 102 to be configured only in a permitted area in the FPGA 101. Therefore, in the FPGA 101, the user module 102-1, the user module 102-2, and the management module 103 can be configured in different areas. For example, the user module 102-1 is assigned to the computer 121-1, and can be accessed by the computer 121-1. For example, the user module 102-2 is assigned to the computer 121-2 and can be accessed by the computer 121-2. For example, the computer 121-1 and the computer 121-2 have different users. The computer 121 assigned to each of a plurality of users may be a physical device as shown in FIG. 1 or may be a virtual machine constructed on the server 111.

管理モジュール103は、アクセス部104と、受け付け部105と、制御部106と、を有する。アクセス部104は、ユーザモジュール102の各々に割り当てられた異なる記憶領域112の各々にアクセス可能である。アクセス部104は、例えば、DMA(Direct Memory Access)機能を有する。受け付け部105は、ユーザモジュール102−1とユーザモジュール102−2とのうちのいずれかからのアクセス要求を受け付ける。図1の例では、受け付け部105は、ユーザモジュール102−1からのアクセス要求を受け付ける。アクセス部104がDMA機能を実現する場合、具体的にアクセス要求は、DMAのパラメータを有する。DMAのパラメータは、例えば、転送方向、転送先アドレス、転送元アドレス、データ長、を有する。転送方向は、FPGA101からサーバ111へ、またはサーバ111からFPGA101へのいずれかである。   The management module 103 includes an access unit 104, a reception unit 105, and a control unit 106. The access unit 104 can access each of the different storage areas 112 assigned to each of the user modules 102. The access unit 104 has, for example, a DMA (Direct Memory Access) function. The accepting unit 105 accepts an access request from either the user module 102-1 or the user module 102-2. In the example of FIG. 1, the accepting unit 105 accepts an access request from the user module 102-1. When the access unit 104 implements the DMA function, specifically, the access request has a DMA parameter. The DMA parameters include, for example, a transfer direction, a transfer destination address, a transfer source address, and a data length. The transfer direction is either from the FPGA 101 to the server 111 or from the server 111 to the FPGA 101.

例えば、制御部106は記憶部107を有する。記憶部107には、各ユーザモジュール102の各々について、ユーザモジュール102に割り当てられた記憶領域112を示す情報を記憶する。記憶領域112は、FPGA101に接続されたサーバ111内のメモリの領域であってもよい。記憶領域112を示す情報は、例えば、記憶領域112を示すアドレスである。または、コンピュータ121−1およびコンピュータ121−2が物理的なコンピュータ121である場合に、記憶領域112は、各コンピュータ121に設けられたメモリの領域であってもよい。記憶領域112を示す情報は、例えば、記憶装置のアドレスである。例えば、ユーザモジュール102−1については、0〜100番が示す記憶領域112−1であり、ユーザモジュール102−2については、300〜400番が示す記憶領域112−2である。   For example, the control unit 106 includes a storage unit 107. The storage unit 107 stores information indicating the storage area 112 allocated to the user module 102 for each user module 102. The storage area 112 may be a memory area in the server 111 connected to the FPGA 101. The information indicating the storage area 112 is, for example, an address indicating the storage area 112. Alternatively, when the computer 121-1 and the computer 121-2 are physical computers 121, the storage area 112 may be a memory area provided in each computer 121. The information indicating the storage area 112 is, for example, an address of the storage device. For example, the user module 102-1 is the storage area 112-1 indicated by number 0 to 100, and the user module 102-2 is the storage area 112-2 indicated by number 300 to 400.

制御部106は、受け付け部105が受け付けたアクセス要求が示すアクセス先が記憶領域112−1である場合、アクセス要求に基づくアクセスをアクセス部104に実行させる。例えば、制御部106は、ユーザモジュール102−1から0〜100番が示す記憶領域112−1へのアクセス要求に基づくアクセスをアクセス部104に実行させる。   When the access destination indicated by the access request received by the receiving unit 105 is the storage area 112-1, the control unit 106 causes the access unit 104 to perform access based on the access request. For example, the control unit 106 causes the access unit 104 to perform access based on an access request to the storage area 112-1 indicated by the numbers 0 to 100 from the user module 102-1.

一方、制御部106は、割り当てられた記憶領域112−1でない場合、アクセス要求に基づくアクセスをアクセス部104に実行させない。例えば、制御部106は、ユーザモジュール102−1から300〜400番が示す記憶領域112−2へのアクセス要求に基づくアクセスをアクセス部104に実行させない。   On the other hand, if the storage unit 112-1 is not allocated, the control unit 106 does not cause the access unit 104 to perform access based on the access request. For example, the control unit 106 does not cause the access unit 104 to perform access based on an access request to the storage area 112-2 indicated by the numbers 300 to 400 from the user module 102-1.

図1に示したように、ある利用者が利用可能なFPGA101内の回路から、他の利用者が利用可能な該FPGA101内の他の回路に割り当てられた記憶領域へアクセスさせない。これにより、他の利用者の記憶領域がある利用者が利用可能な回路に干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。   As shown in FIG. 1, a storage area assigned to another circuit in the FPGA 101 that can be used by another user is not accessed from a circuit in the FPGA 101 that can be used by a certain user. Accordingly, it is possible to prevent a user having a storage area of another user from being interfered with an available circuit. Therefore, the processing environment of each user can be made to function stably.

図2は、本実施の形態にかかるシステムの動作例2を示す説明図である。システム100は、図1と同様の例を用いるため、詳細な説明を省略する。サーバ111は、受け付け部211と、制御部212と、を有する。   FIG. 2 is an explanatory diagram of an operation example 2 of the system according to the present embodiment. Since the system 100 uses the same example as in FIG. 1, detailed description is omitted. The server 111 includes a receiving unit 211 and a control unit 212.

受け付け部211は、複数のコンピュータ121のうちのいずれかからFPGA101へのアクセス要求を受け付ける。図2の例では、制御部212は、コンピュータ121−1からのアクセス要求を受け付ける。   The accepting unit 211 accepts an access request to the FPGA 101 from any one of the plurality of computers 121. In the example of FIG. 2, the control unit 212 receives an access request from the computer 121-1.

制御部212は、記憶部213を有する。記憶部213は、複数のコンピュータ121の各々について、コンピュータ121に割り当てられたユーザモジュール102が構成された記憶領域201を示す情報を記憶する。例えば、ユーザモジュール102が構成された領域を示す情報は、FPGA101が有するメモリのうち、ユーザモジュール102内のメモリが構成された記憶領域201を示すアドレスである。   The control unit 212 includes a storage unit 213. The storage unit 213 stores information indicating the storage area 201 in which the user module 102 assigned to the computer 121 is configured for each of the plurality of computers 121. For example, the information indicating the area in which the user module 102 is configured is an address indicating the storage area 201 in which the memory in the user module 102 is configured in the memory of the FPGA 101.

制御部212は、記憶部213の記憶内容に基づいて、受け付けたアクセス要求が示すアクセス先が、アクセス要求の要求元のコンピュータ121に割り当てられたユーザモジュール102が構成された領域である場合、アクセス要求に基づくアクセスを実行する。制御部212は、例えば、コンピュータ121−1からFPGA101内のメモリの0〜100番が示す記憶領域201−1へのアクセス要求に基づくアクセスを実行する。   When the access destination indicated by the received access request is an area in which the user module 102 assigned to the requesting computer 121 is configured based on the storage contents of the storage unit 213, the control unit 212 accesses Perform request-based access. For example, the control unit 212 executes access based on an access request from the computer 121-1 to the storage area 201-1 indicated by the numbers 0 to 100 in the memory in the FPGA 101.

一方、制御部212は、記憶部213の記憶内容に基づいて、要求元のコンピュータ121に割り当てられたユーザモジュール102が構成された領域でない場合、アクセス要求に基づくアクセスを実行しない。制御部212は、例えば、コンピュータ121−1からFPGA101内のメモリの300〜400番が示す記憶領域201−2へのアクセス要求に基づくアクセスを実行しない。   On the other hand, the control unit 212 does not execute access based on the access request when the user module 102 allocated to the requesting computer 121 is not configured based on the storage content of the storage unit 213. For example, the control unit 212 does not execute access based on an access request to the storage area 201-2 indicated by the numbers 300 to 400 of the memory in the FPGA 101 from the computer 121-1.

図2に示したように、FPGA101は、ある利用者から他の利用者に割り当てられた該FPGA101内のユーザモジュール102へアクセスさせない。これにより、他の利用者に割り当てられたFPGA101内のユーザモジュールがある利用者によって干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。   As shown in FIG. 2, the FPGA 101 does not access a user module 102 in the FPGA 101 assigned to another user from a certain user. Accordingly, it is possible to prevent the user module in the FPGA 101 assigned to another user from being interfered by a certain user. Therefore, the processing environment of each user can be made to function stably.

図3は、システムの詳細例を示す説明図である。システム100では、複数の利用者がデータセンタ301にあるサーバに接続されたFPGA101を利用して所望の回路を実現する。システム100は、端末302と、データセンタ301と、を有する。データセンタ301には、複数のサーバがある。   FIG. 3 is an explanatory diagram showing a detailed example of the system. In the system 100, a plurality of users realize a desired circuit using the FPGA 101 connected to a server in the data center 301. The system 100 includes a terminal 302 and a data center 301. The data center 301 has a plurality of servers.

端末302は利用者が直接操作可能な装置であり、図3の例では、利用者が2人であるため、端末302−1と端末302−2を示す。端末302は、例えば、PC(Personal Computer)やワークステーションである。   The terminal 302 is a device that can be directly operated by the user. In the example of FIG. 3, since there are two users, the terminal 302-1 and the terminal 302-2 are shown. The terminal 302 is, for example, a PC (Personal Computer) or a workstation.

また、具体的に、データセンタ301には、例えば、FPGA101にプログラムさせるためのコンフィギュレーションデータを生成するための開発システム303用のサーバ304−1,304−2がある。また、データセンタ301には、コンフィギュレーションデータがプログラムされることにより内部の回路が構成される当該FPGA101に接続されたサーバ111がある。開発システム303と、サーバ111とは、想定される利用者の総数に応じて複数用意される。   Specifically, the data center 301 includes, for example, servers 304-1 and 304-2 for the development system 303 for generating configuration data for causing the FPGA 101 to program. In addition, the data center 301 includes a server 111 connected to the FPGA 101 in which an internal circuit is configured by programming configuration data. A plurality of development systems 303 and servers 111 are prepared according to the assumed total number of users.

また、データセンタ301には、サーバプールデータベース332とFPGAデータベース331などを記憶するデータベースサーバ306がある。サーバプールデータベース332用のデータベースサーバ306と、FPGAデータベース331用のデータベースサーバ306と、に分けて用意されてもよい。   The data center 301 includes a database server 306 that stores a server pool database 332 and an FPGA database 331. The database server 306 for the server pool database 332 and the database server 306 for the FPGA database 331 may be separately provided.

また、データセンタ301には、後述する仮想マシン生成プログラム321を実行するサーバ305と、後述する受け入れ検査プログラム322を実行するサーバ307と、がある。また、データセンタ301には、本実施の形態にかかるシステム100の全体を制御する全体制御プログラム323を実行する制御用のサーバ308がある。また、データセンタ301には、一般的な運用管理用のサーバ309がある。   The data center 301 includes a server 305 that executes a virtual machine generation program 321 described later and a server 307 that executes an acceptance inspection program 322 described later. Further, the data center 301 includes a control server 308 that executes an overall control program 323 that controls the entire system 100 according to the present embodiment. The data center 301 includes a general operation management server 309.

ここで、図1、図2に示したコンピュータ121は、端末302であっても、仮想マシンVMであってもよいが、本実施の形態では、仮想マシンVMを例に挙げる。仮想マシンVMを利用することにより、通信に要する時間を短縮させることができる。各利用者は、所望のユーザモジュール102をサーバ111に接続されたFPGA101によって構成させ、当該サーバ111上で仮想マシンVMを構築させる。これにより、各利用者は、サーバ111が実現する仮想マシンVM上で実行されるアプリケーションソフトウェアと、FPGA101に構成されたユーザモジュール102と、の間でやり取りを行わせることができる。図3の例では、サーバ111は、端末302−1に割り当てられた仮想マシンVM1と、端末302−2に割り当てられた仮想マシンVM2と、を構築する。仮想マシンVM1はユーザモジュール102−1に割り当てられ、仮想マシンVM2はユーザモジュール102−2に割り当てられる。   Here, the computer 121 illustrated in FIGS. 1 and 2 may be the terminal 302 or the virtual machine VM, but in this embodiment, the virtual machine VM is taken as an example. By using the virtual machine VM, the time required for communication can be shortened. Each user configures a desired user module 102 by the FPGA 101 connected to the server 111 and constructs a virtual machine VM on the server 111. Thus, each user can exchange data between the application software executed on the virtual machine VM realized by the server 111 and the user module 102 configured in the FPGA 101. In the example of FIG. 3, the server 111 constructs a virtual machine VM1 assigned to the terminal 302-1 and a virtual machine VM2 assigned to the terminal 302-2. The virtual machine VM1 is assigned to the user module 102-1, and the virtual machine VM2 is assigned to the user module 102-2.

図4は、端末とサーバのハードウェア構成例を示すブロック図である。サーバ111は、例えば、CPU411と、メモリ412と、ディスク413と、ディスクドライブ414と、PCIe(Peripheral Component Interconnect express)415と、ネットワークインターフェース416と、を有する。   FIG. 4 is a block diagram illustrating a hardware configuration example of the terminal and the server. The server 111 includes, for example, a CPU 411, a memory 412, a disk 413, a disk drive 414, a PCIe (Peripheral Component Interconnect express) 415, and a network interface 416.

また、サーバ111は、PCIe415によってFPGA101を搭載した拡張ボード401と、接続される。PCIe415は、インターフェースの一種である。拡張ボード401は、例えば、FPGA101と、FPGA101の外部のメモリ402と、I/O(Input/Output)インターフェース403と、などを有する。また、サーバ111は、ネットワークインターフェース416によってネットワークNETを介して利用者が直接操作可能な端末302と接続される。   The server 111 is connected to the expansion board 401 on which the FPGA 101 is mounted by the PCIe 415. The PCIe 415 is a kind of interface. The expansion board 401 includes, for example, an FPGA 101, a memory 402 external to the FPGA 101, an I / O (Input / Output) interface 403, and the like. The server 111 is connected to a terminal 302 that can be directly operated by a user via a network NET through a network interface 416.

まず、CPU411は、サーバ111の全体の制御を司る。メモリ412は、CPU411のワークエリアとして使用される記憶部である。メモリ412としては、例えば、RAM(Random Access Memory)などが挙げられる。ディスクドライブ414は、CPU411の制御にしたがってディスク413に対するデータのリード/ライトを制御する。ディスク413は、ディスクドライブ414の制御で書き込まれたデータを記憶する記憶部である。ディスク413としては、例えば、磁気ディスク、光ディスクなどが挙げられる。   First, the CPU 411 governs overall control of the server 111. The memory 412 is a storage unit used as a work area for the CPU 411. Examples of the memory 412 include a RAM (Random Access Memory). The disk drive 414 controls data read / write with respect to the disk 413 according to the control of the CPU 411. The disk 413 is a storage unit that stores data written under the control of the disk drive 414. Examples of the disk 413 include a magnetic disk and an optical disk.

ネットワークインターフェース416は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、ネットワークインターフェース416は、ネットワークNETと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。ネットワークインターフェース416には、例えば、モデムやLANアダプタなどを採用することができる。   The network interface 416 is connected to a network NET such as a LAN (Local Area Network), a WAN (Wide Area Network), and the Internet through a communication line, and is connected to other devices via the network NET. The network interface 416 serves as an internal interface with the network NET, and controls data input / output from an external device. As the network interface 416, for example, a modem or a LAN adapter can be employed.

また、データセンタ301内の各種サーバは、サーバ111と同様のハードウェア構成とする。   The various servers in the data center 301 have the same hardware configuration as the server 111.

また、端末302は、例えば、PCやワークステーションなどが挙げられる。端末302は、例えば、CPU421と、メモリ422と、ディスク423と、ディスクドライブ424と、入力装置425と、出力装置426と、ネットワークインターフェース427と、を有する。   Examples of the terminal 302 include a PC and a workstation. The terminal 302 includes, for example, a CPU 421, a memory 422, a disk 423, a disk drive 424, an input device 425, an output device 426, and a network interface 427.

CPU421は、端末302の全体の制御を司る。メモリ422は、CPU421のワークエリアとして使用される記憶部である。ディスクドライブ424は、CPU421の制御にしたがってディスク423に対するデータのリード/ライトを制御する。ディスク423は、ディスクドライブ424の制御で書き込まれたデータを記憶する。ディスク423としては、磁気ディスク、光ディスクなどが挙げられる。   The CPU 421 governs overall control of the terminal 302. The memory 422 is a storage unit used as a work area for the CPU 421. The disk drive 424 controls reading / writing of data with respect to the disk 423 according to the control of the CPU 421. The disk 423 stores data written under the control of the disk drive 424. Examples of the disk 423 include a magnetic disk and an optical disk.

ネットワークインターフェース427は、通信回線を通じてLAN、WAN、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、ネットワークインターフェース427は、ネットワークNETと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。ネットワークインターフェース427には、例えば、モデムやLANアダプタなどを採用することができる。   The network interface 427 is connected to a network NET such as a LAN, a WAN, or the Internet through a communication line, and is connected to another device via the network NET. The network interface 427 serves as an internal interface with the network NET, and controls data input / output from an external device. As the network interface 427, for example, a modem or a LAN adapter can be employed.

入力装置425は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置425は、カメラから画像や動画を取り込むこともできる。また、入力装置425は、マイクから音声を取り込むこともできる。出力装置426は、CPU421の指示により、データを出力するインターフェースである。出力装置426には、ディスプレイやプリンタが挙げられる。   The input device 425 is an interface for inputting various data by a user operation such as a keyboard, a mouse, and a touch panel. The input device 425 can also capture images and moving images from the camera. The input device 425 can also capture audio from a microphone. The output device 426 is an interface that outputs data in accordance with an instruction from the CPU 421. Examples of the output device 426 include a display and a printer.

図5は、サーバによるソフトウェアの実行例を示す説明図である。サーバ111は、ディスク413などの記憶装置に記憶されたプログラムをCPU411がロードすることにより、ハイパーバイザHVと、管理OS(Operating System)501−cを実行する仮想マシンVMcとなどを実行する。例えば、サーバ111は、仮想マシンVMcと、端末302の各々に割り当てられた仮想マシンVMx(図5中x=1,2)と、の各々を制御するハイパーバイザHVと、を実行する。   FIG. 5 is an explanatory diagram of an example of software execution by the server. The server 111 executes a hypervisor HV, a virtual machine VMc that executes a management OS (Operating System) 501-c, and the like when the CPU 411 loads a program stored in a storage device such as the disk 413. For example, the server 111 executes the virtual machine VMc and the hypervisor HV that controls each of the virtual machines VMx (x = 1, 2 in FIG. 5) assigned to each of the terminals 302.

説明上仮想マシンVM、OS501、アプリケーションソフトウェア503、デバイスドライバ502は、サーバ111によって実行されるものであるが、ここでは、説明上実行主体して記載する。仮想マシンVMcは、管理OS501−cと、管理OS501−cに呼び出されるデバイスドライバ502−cと、管理OS501−cが実行するソフトウェア503−cと、を実行する。ソフトウェア503−cは、端末302に割り当てられた仮想マシンVM全体を管理するプログラムである。デバイスドライバ502−cは、拡張ボード401を制御して、各アプリケーションソフトウェア503に対するインターフェースを提供するソフトウェアである。   For the purpose of explanation, the virtual machine VM, OS 501, application software 503, and device driver 502 are executed by the server 111. Here, however, they will be described as execution subjects for explanation. The virtual machine VMc executes a management OS 501-c, a device driver 502-c called by the management OS 501-c, and software 503-c executed by the management OS 501-c. The software 503-c is a program that manages the entire virtual machine VM assigned to the terminal 302. The device driver 502-c is software that controls the expansion board 401 and provides an interface to each application software 503.

端末302−xに各々割り当てられた仮想マシンVMxは、それぞれOS501−xを実行する。また、仮想マシンVMxは、それぞれOS501−xに呼び出されるデバイスドライバ502−xと、OS501−xが実行するアプリケーションソフトウェア503−xと、を実行する。デバイスドライバ502−xは、仮想マシンVMxの各々に割り当てられたFPGA101内のユーザモジュール102−xへのアクセスを制御する。   Each virtual machine VMx assigned to the terminal 302-x executes the OS 501-x. The virtual machine VMx executes a device driver 502-x called by the OS 501-x and application software 503-x executed by the OS 501-x. The device driver 502-x controls access to the user module 102-x in the FPGA 101 assigned to each of the virtual machines VMx.

(利用開始時)
図6は、システムの利用開始時のフロー例を示す説明図である。全体制御プログラム323を実行するサーバ308は、開発システム303やサーバ305やサーバ307やサーバ111などを制御することにより、全体を制御する。全体制御プログラム323は、制御用のサーバ308内のディスク413などの記憶装置に記憶され、サーバ308内のCPU411は、記憶装置から全体制御プログラム323を読み出して実行する。これにより、全体制御プログラム323にコーディングされた機能が実現される。具体的には、サーバ308は、各利用者からの指示に応じて開発システム303を利用者が操作可能なように割り当てる。また、当該サーバ308は、受け入れ検査プログラム322を実行するサーバ307や仮想マシン生成プログラム321を実行するサーバ305に処理を依頼するなどの全体の制御を行う。
(At start of use)
FIG. 6 is an explanatory diagram showing an example of a flow at the start of use of the system. The server 308 that executes the overall control program 323 controls the entire system by controlling the development system 303, the server 305, the server 307, the server 111, and the like. The overall control program 323 is stored in a storage device such as a disk 413 in the control server 308, and the CPU 411 in the server 308 reads the overall control program 323 from the storage device and executes it. Thereby, the function coded in the overall control program 323 is realized. Specifically, the server 308 assigns the development system 303 so that the user can operate in accordance with an instruction from each user. The server 308 performs overall control such as requesting the server 307 that executes the acceptance inspection program 322 and the server 305 that executes the virtual machine generation program 321 to perform processing.

各利用者は、開発システム303によって、FPGA101上で動作するユーザモジュール102を設計する。開発システム303は、利用者によって設計されたユーザモジュール102を示すコンフィギュレーションデータを生成する。   Each user designs the user module 102 operating on the FPGA 101 by the development system 303. The development system 303 generates configuration data indicating the user module 102 designed by the user.

また、サーバ305は、仮想マシン仕様定義ファイル611と、サーバプールデータベース332に登録された仮想マシンVMと、によって、仮想マシンVMを配置可能なサーバ111を決定する。仮想マシン仕様定義ファイル611は、仮想マシンVMの仕様を示す情報、コンフィギュレーションデータを示す識別情報などを有する。仮想マシンVMの仕様を示す情報は、CPU、メモリ、ディスク、ネットワークインターフェースなどの仕様を示す。利用者は、仮想マシンの仕様を決定し、仮想マシン仕様定義ファイル611をデータセンタ301へ端末302を介して入力する。また、サーバ307は、利用者によって設計されたユーザモジュール102が、決定したサーバ111に接続された拡張ボード401のFPGA101に構成可能か否かを判断する。   In addition, the server 305 determines the server 111 on which the virtual machine VM can be placed, based on the virtual machine specification definition file 611 and the virtual machine VM registered in the server pool database 332. The virtual machine specification definition file 611 includes information indicating the specifications of the virtual machine VM, identification information indicating configuration data, and the like. The information indicating the specifications of the virtual machine VM indicates specifications of the CPU, memory, disk, network interface, and the like. The user determines the specifications of the virtual machine and inputs the virtual machine specification definition file 611 to the data center 301 via the terminal 302. Further, the server 307 determines whether or not the user module 102 designed by the user can be configured in the FPGA 101 of the expansion board 401 connected to the determined server 111.

図7は、開発システム例を示す説明図である。データセンタ301には、拡張ボード704に接続されたサーバ304−1と、FPGA開発ソフトウェア703を実行中のサーバ304−2と、ゲートウェイ701と、がある。拡張ボード704は、拡張ボード401と同様のボードとする。   FIG. 7 is an explanatory diagram illustrating an example of a development system. The data center 301 includes a server 304-1 connected to the expansion board 704, a server 304-2 executing the FPGA development software 703, and a gateway 701. The expansion board 704 is a board similar to the expansion board 401.

FPGAプログラミングケーブル705は、サーバ304−2と拡張ボード704とを接続する。拡張ボード704には、管理モジュール103が予め構成されてあってもよい。FPGAプログラミングケーブル705は、JTAGによってサーバ304−2が設計したユーザモジュール102を示すコンフィギュレーションデータを拡張ボード704に書き込むことができる。また、FPGAプログラミングケーブル705は、FPGA101内の内部状態を参照または変更することができる。端末302はネットワークNETを介してデータセンタ301のゲートウェイ701に接続される。利用者は、端末302を介してサーバ304−2が実行中のFPGA開発ソフトウェア703によってユーザモジュール102の設計やデバッグを行う。また、サーバ304−2については、サーバ304−1上に仮想マシンVMとして構築されてもよい。   The FPGA programming cable 705 connects the server 304-2 and the expansion board 704. The management module 103 may be configured in advance on the expansion board 704. The FPGA programming cable 705 can write configuration data indicating the user module 102 designed by the server 304-2 to the expansion board 704 by JTAG. Also, the FPGA programming cable 705 can refer to or change the internal state in the FPGA 101. The terminal 302 is connected to the gateway 701 of the data center 301 via the network NET. The user designs and debugs the user module 102 using the FPGA development software 703 being executed by the server 304-2 via the terminal 302. Further, the server 304-2 may be constructed as a virtual machine VM on the server 304-1.

利用者は、JTAGによって、拡張ボード704のFPGA101内部全体にアクセス可能となるため、開発システム303については、全体制御プログラム323を実行するサーバ308によって、複数の利用者が同時に利用しないように制限されてもよい。そのため、開発システム303については、想定される利用者の数に応じて複数用意される。   Since the user can access the entire inside of the FPGA 101 of the expansion board 704 by JTAG, the development system 303 is restricted from being used by a plurality of users at the same time by the server 308 that executes the overall control program 323. May be. Therefore, a plurality of development systems 303 are prepared according to the number of users assumed.

また、利用者がサーバ304−1を占有する場合、開発システム303にリモート制御702の機能が用意され、サーバ304−1の電源オンまたは電源オフ、リセット、コンソールアクセスなどが可能な仕組みが用意される。   Further, when the user occupies the server 304-1, the development system 303 is provided with a function of the remote control 702, and a mechanism capable of powering on or off the server 304-1, resetting, console access, etc. is prepared. The

図8は、仮想マシン生成プログラムを実行するサーバによる生成処理手順例を示すフローチャートである。仮想マシン生成プログラム321は、例えば、サーバ305内のディスク413などの記憶装置に記憶され、サーバ305内のCPU411が、記憶装置から仮想マシン生成プログラム321を読み出して実行する。これにより、仮想マシン生成プログラム321にコーディングされた機能が実現される。   FIG. 8 is a flowchart illustrating an example of a generation processing procedure by a server that executes a virtual machine generation program. For example, the virtual machine generation program 321 is stored in a storage device such as the disk 413 in the server 305, and the CPU 411 in the server 305 reads the virtual machine generation program 321 from the storage device and executes it. Thereby, the function coded in the virtual machine generation program 321 is realized.

まず、サーバ305は、仮想マシン仕様定義ファイル611と、コンフィギュレーションデータ802と、を受け付ける(ステップS801)。上述したように、仮想マシン仕様定義ファイル611は、仮想マシンVMの仕様を示す情報、コンフィギュレーションデータ802を示す識別情報などを有する。   First, the server 305 receives a virtual machine specification definition file 611 and configuration data 802 (step S801). As described above, the virtual machine specification definition file 611 includes information indicating the specifications of the virtual machine VM, identification information indicating the configuration data 802, and the like.

つぎに、サーバ305は、サーバプールデータベース332を検索して、仮想マシン仕様定義ファイル611が示す仮想マシンVMを配置可能なサーバ111を特定する(ステップS802)。そして、サーバ305は、特定したサーバ111の中に未選択のサーバ305があるか否かを判断する(ステップS803)。サーバプールデータベース332には、運用時に使用される各サーバ111にどのような仮想マシンVMが動作中であるかを示す情報と、各仮想マシンVMに割り当てられたリソース情報などが記憶される。ここでの割り当てられたリソース情報には、各仮想マシンVMに割り当てられたサーバ111内のCPU、メモリ412内の記憶領域、ディスク413内の記憶領域などを示す情報が含まれる。また、リソース情報は、サーバ305に接続されたFPGA101にどのユーザモジュール102が構成されたかを示す情報が含まれる。   Next, the server 305 searches the server pool database 332 and identifies the server 111 on which the virtual machine VM indicated by the virtual machine specification definition file 611 can be placed (step S802). Then, the server 305 determines whether or not there is an unselected server 305 in the identified server 111 (step S803). The server pool database 332 stores information indicating what virtual machine VM is operating on each server 111 used during operation, resource information assigned to each virtual machine VM, and the like. The resource information assigned here includes information indicating the CPU in the server 111, the storage area in the memory 412, the storage area in the disk 413, etc., assigned to each virtual machine VM. The resource information includes information indicating which user module 102 is configured in the FPGA 101 connected to the server 305.

未選択のサーバ111がある場合(ステップS803:Yes)、サーバ305は、未選択のサーバ111から1つのサーバ111を選択する(ステップS804)。サーバ305は、FPGAデータベース331を検索して、選択したサーバ111に接続された拡張ボード401のFPGA101を利用可能か確認する(ステップS805)。サーバ305は、FPGA101を利用可能か否か判断する(ステップS806)。利用可能でない場合(ステップS806:No)、サーバ305は、ステップS803へ戻る。   When there is an unselected server 111 (step S803: Yes), the server 305 selects one server 111 from the unselected servers 111 (step S804). The server 305 searches the FPGA database 331 and confirms whether the FPGA 101 of the expansion board 401 connected to the selected server 111 can be used (step S805). The server 305 determines whether the FPGA 101 can be used (step S806). If it is not available (step S806: No), the server 305 returns to step S803.

利用可能である場合(ステップS806:Yes)、サーバ305は、ステップS807へ移行する。サーバ305は、開発システム303からのコンフィギュレーションデータ802に基づいて、FPGA101設計ツールを用いてユーザモジュール102をレイアウトする。そして、サーバ305は、選択したサーバ111に接続されたFPGA101に書き込むコンフィギュレーションデータ803を生成する(ステップS807)。つぎに、サーバ305は、仮想マシン定義ファイル804を生成し(ステップS808)、サーバ305は、選択したサーバ111に仮想マシン定義ファイル804を転送し(ステップS809)、一連の処理を終了する。仮想マシン定義ファイル804は、仮想マシンVMの仕様を示す情報、仮想マシンVMに含まれるメモリやディスクなどのディスクイメージ、ステップS807によって生成されたコンフィギュレーションデータ803などが含まれる。   If it is available (step S806: Yes), the server 305 proceeds to step S807. The server 305 lays out the user module 102 using the FPGA 101 design tool based on the configuration data 802 from the development system 303. Then, the server 305 generates configuration data 803 to be written in the FPGA 101 connected to the selected server 111 (step S807). Next, the server 305 generates a virtual machine definition file 804 (step S808), the server 305 transfers the virtual machine definition file 804 to the selected server 111 (step S809), and ends a series of processing. The virtual machine definition file 804 includes information indicating the specifications of the virtual machine VM, a disk image such as a memory or a disk included in the virtual machine VM, the configuration data 803 generated in step S807, and the like.

ステップS803において、未選択のサーバ111がない場合(ステップS803:No)、サーバ305は、エラーを出力し(ステップS810)、一連の処理を終了する。   In step S803, when there is no unselected server 111 (step S803: No), the server 305 outputs an error (step S810) and ends a series of processing.

図9は、運用時のサーバによる初期設定処理手順例を示すフローチャートである。サーバ111は、仮想マシン定義ファイル804を受け付けたか否かを判断する(ステップS901)。仮想マシン定義ファイル804を受け付けていない場合(ステップS901:No)、サーバ111は、ステップS901へ戻る。仮想マシン定義ファイル804を受け付けた場合(ステップS901:Yes)、サーバ111は、コンフィギュレーションデータ803が示すユーザモジュール102が許可された領域のみに再構成されるかを受け入れ検査プログラム322を実行するサーバ307に確認を依頼する(ステップS902)。   FIG. 9 is a flowchart illustrating an example of an initial setting process procedure by the server during operation. The server 111 determines whether the virtual machine definition file 804 has been received (step S901). If the virtual machine definition file 804 has not been received (step S901: NO), the server 111 returns to step S901. When the virtual machine definition file 804 is received (step S901: Yes), the server 111 executes the inspection program 322 that accepts whether the user module 102 indicated by the configuration data 803 is reconfigured only in the permitted area. Confirmation is requested to 307 (step S902).

サーバ111は、再構成可能か否かを判断する(ステップS903)。再構成可能である場合(ステップS903:Yes)、サーバ111は、ハイパーバイザHVによって、仮想マシンVMを構築する(ステップS904)。サーバ111は、管理OS501−cによって、パーシャル・リコンフィギュレーション機能を用いてFPGA101内にユーザモジュール102を構成する(ステップS905)。サーバ111は、管理OS501−cによって、FPGA101内の管理モジュール103にある後述するアクセス許可設定レジスタに、ユーザモジュールがアクセス可能なメモリ412の物理アドレス範囲を設定する(ステップS906)。   The server 111 determines whether or not reconfiguration is possible (step S903). When reconfiguration is possible (step S903: Yes), the server 111 constructs a virtual machine VM by the hypervisor HV (step S904). The server 111 configures the user module 102 in the FPGA 101 by using the partial reconfiguration function by the management OS 501-c (step S905). The server 111 sets the physical address range of the memory 412 accessible by the user module in an access permission setting register (to be described later) in the management module 103 in the FPGA 101 by the management OS 501-c (step S906).

つぎに、サーバ111は、デバイスドライバ502によって、FPGA101内のあらたなユーザモジュール102を認識する(ステップS907)。そして、サーバ111は、ハイパーバイザHVによって、仮想マシンVMを起動し(ステップS908)、一連の処理を終了する。これにより、利用者が仮想マシンVM上でアプリケーションソフトウェアを実行し、FPGA101に構成されたユーザモジュール102が利用可能となる。一方、ステップS903において、再構成可能でない場合(ステップS903:No)、サーバ111は、エラーを出力し(ステップS909)、一連の処理を終了する。   Next, the server 111 recognizes the new user module 102 in the FPGA 101 by using the device driver 502 (step S907). Then, the server 111 activates the virtual machine VM with the hypervisor HV (step S908), and ends a series of processing. As a result, the user executes application software on the virtual machine VM, and the user module 102 configured in the FPGA 101 can be used. On the other hand, if reconfiguration is not possible in step S903 (step S903: No), the server 111 outputs an error (step S909) and ends a series of processing.

図10は、受け入れ検査プログラムを実行するサーバのデータフロー例を示す説明図である。受け入れ検査プログラム322は、例えば、サーバ307内のディスク413などの記憶装置に記憶され、サーバ307内のCPU411が、記憶装置から受け入れ検査プログラム322を読み出して実行する。   FIG. 10 is an explanatory diagram illustrating a data flow example of a server that executes an acceptance inspection program. The acceptance inspection program 322 is stored in, for example, a storage device such as the disk 413 in the server 307, and the CPU 411 in the server 307 reads the acceptance inspection program 322 from the storage device and executes it.

サーバ307は、受け入れ検査プログラム322によって、コンフィギュレーションデータ803と、デバイス情報1001と、を入力として受け付ける。デバイス情報1001には、利用者がプログラミング可能なFPGA101の領域の情報、デバイスがアドレス空間にマップする領域の情報などが含まれる。サーバ307は、受け入れ検査プログラム322によって、利用者によって設計されたユーザモジュール102をデータセンタ301にあるいずれのFPGA101で構成可能かをFPGAデータベース331に基づいて判断する。また、サーバ307は、実際にサーバ311に接続されたえFPGA101に書き込み、管理モジュール103、他のユーザモジュール102、などを領域が変更されていないかをCRC(Cyclic Redundancy Check)チェックサムなどによって確認してもよい。サーバ307は、受け入れ検査プログラム322によって、受け入れ可能なであると判断した場合にFPGAデータベース331に、検査結果を登録する。   The server 307 receives the configuration data 803 and the device information 1001 as input by the acceptance inspection program 322. The device information 1001 includes information on the area of the FPGA 101 that can be programmed by the user, information on the area that the device maps to the address space, and the like. Based on the FPGA database 331, the server 307 determines, by the acceptance inspection program 322, which FPGA 101 in the data center 301 can be configured by the user module 102 designed by the user. In addition, the server 307 actually writes to the FPGA 101 connected to the server 311, and checks whether the area of the management module 103, another user module 102, etc. has been changed by a CRC (Cyclic Redundancy Check) checksum or the like. May be. The server 307 registers the inspection result in the FPGA database 331 when the acceptance inspection program 322 determines that it is acceptable.

例えば、検査結果として、1.コンフィギュレーションデータ803を示す識別情報、2.コンフィギュレーションデータ803、3.作成者の識別情報、4.利用許可情報、5.改変許可情報、6.デバイス種類情報がFPGAデータベース331へ登録される。作成者の識別情報としては、例えば、利用者の氏名情報であってもよいし、利用者が操作可能な端末302の識別情報であってもよい。利用許可情報は、いずれの利用者または端末302がコンフィギュレーションデータ803を使用可能であるかを示す情報である。利用許可情報によって、複数の利用者がコンフィギュレーションデータ803を共用することができ、複数の利用者が同一機能のユーザモジュール102を利用することができる。改変許可情報は、いずれの利用者または端末302がコンフィギュレーションデータ803を変更可能であるかを示す情報である。デバイス種類情報は、いずれの種類のFPGA101であれば利用可能であるかを示す情報である。   For example, as an inspection result, 1. 1. identification information indicating configuration data 803; Configuration data 803,3. 3. Identification information of creator, Usage permission information, 5. Modification permission information, 6. Device type information is registered in the FPGA database 331. The creator identification information may be, for example, user name information or identification information of the terminal 302 that can be operated by the user. The usage permission information is information indicating which user or terminal 302 can use the configuration data 803. With the use permission information, a plurality of users can share the configuration data 803, and a plurality of users can use the user module 102 having the same function. The modification permission information is information indicating which user or terminal 302 can change the configuration data 803. The device type information is information indicating which type of FPGA 101 can be used.

(サーバ111の機能的構成例)
図11は、サーバの機能的構成例を示すブロック図である。サーバ111は、受け付け部211と、制御部212と、計測部1101と、を有する。受け付け部211と制御部212と計測部1101は、例えば、管理OS501−cのデバイスドライバ502−cにコーディングされてあり、サーバ111が仮想マシンVMcによって管理OS501−cを実行する。これにより、受け付け部211と制御部212と計測部1101とが実現される。
(Example of functional configuration of server 111)
FIG. 11 is a block diagram illustrating a functional configuration example of the server. The server 111 includes a reception unit 211, a control unit 212, and a measurement unit 1101. The reception unit 211, the control unit 212, and the measurement unit 1101 are coded in the device driver 502-c of the management OS 501-c, for example, and the server 111 executes the management OS 501-c by the virtual machine VMc. Thereby, the reception part 211, the control part 212, and the measurement part 1101 are implement | achieved.

また、計測部1101については、サーバ111の機能でなく、管理モジュール103に設けられていてもよい。管理モジュール103に計測部1101が設けられる場合、制御部212は、管理モジュール103からデータ量を取得する機能を有する。   Further, the measurement unit 1101 may be provided in the management module 103 instead of the function of the server 111. When the measurement module 1101 is provided in the management module 103, the control unit 212 has a function of acquiring a data amount from the management module 103.

図12は、メモリアロケーション例を示す説明図である。仮想マシン環境では、2段階のアドレス変換が行われる。仮想マシンVMcには、仮想アドレス空間1211−cと、メモリ412やFPGA101などの各種デバイスにアクセスするための物理アドレス空間1213と、が対応付けられる。仮想マシンVMcの仮想アドレス空間1211−cには、例えば、管理OS501−cが使用するメモリのアドレス空間がある。管理OS501−cが使用するメモリには、例えば、論理アドレスを物理アドレスに変換するためのテーブル1201などが記憶される。仮想マシンVMcの仮想アドレス空間1211−cには、例えば、各種デバイスドライバ502−cが使用するメモリと、ソフトウェア503−cが使用するメモリと、のそれぞれのアドレス空間がある。デバイスドライバ502−cが使用するメモリには、サーバ111が転送したデータ量を計測するための累積データ量カウンタが記憶される。この累積データ量カウンタが計測部1101である。   FIG. 12 is an explanatory diagram of an example of memory allocation. In the virtual machine environment, two-stage address translation is performed. A virtual address space 1211-c and a physical address space 1213 for accessing various devices such as the memory 412 and the FPGA 101 are associated with the virtual machine VMc. The virtual address space 1211-c of the virtual machine VMc includes, for example, a memory address space used by the management OS 501-c. In the memory used by the management OS 501-c, for example, a table 1201 for converting a logical address into a physical address is stored. The virtual address space 1211-c of the virtual machine VMc has, for example, respective address spaces of a memory used by various device drivers 502-c and a memory used by software 503-c. The memory used by the device driver 502-c stores an accumulated data amount counter for measuring the amount of data transferred by the server 111. This accumulated data amount counter is the measuring unit 1101.

また、端末302−xに割り当てられた仮想マシンVMxには、仮想アドレス空間1211−xと仮想マシンVM−xに割り当てられたユーザモジュール102−xにアクセスするための物理アドレス空間1213とが対応付けられる。仮想マシンVMxの仮想アドレス空間1211−xには、例えば、OS501−xが使用するメモリのアドレス空間がある。OS501−xが使用するメモリには、例えば、論理アドレスを物理アドレスに変換するためのテーブル1202がある。また、仮想マシンVM−xの仮想アドレス空間1211−xには、ユーザモジュール102−x用のデバイスドライバ502−xが使用するメモリのアドレス空間がある。また、仮想マシンVMxの仮想アドレス空間1211−xには、アプリケーションソフトウェア503−xが使用するメモリの仮想アドレス空間がある。デバイスドライバ502−xが使用するメモリと、アプリケーションソフトウェア503−xが使用するメモリとは、例えば、バッファメモリ1203は、デバイスドライバ502−xがアプリケーションソフトウェア503−xが使用するメモリとのうちの少なくともいずれか一方にある。バッファメモリ1203は、FPGA101と、デバイスドライバ502−xまたはアプリケーションソフトウェア503−xと、の間でデータ転送するためのメモリである。   The virtual machine VMx assigned to the terminal 302-x is associated with the virtual address space 1211-x and the physical address space 1213 for accessing the user module 102-x assigned to the virtual machine VM-x. It is done. The virtual address space 1211-x of the virtual machine VMx includes, for example, an address space of a memory used by the OS 501-x. The memory used by the OS 501-x includes, for example, a table 1202 for converting a logical address into a physical address. Further, the virtual address space 1211-x of the virtual machine VM-x has an address space of a memory used by the device driver 502-x for the user module 102-x. Further, the virtual address space 1211-x of the virtual machine VMx has a virtual address space of a memory used by the application software 503-x. The memory used by the device driver 502-x and the memory used by the application software 503-x are, for example, the buffer memory 1203, and at least the memory used by the application software 503-x by the device driver 502-x. Either one. The buffer memory 1203 is a memory for transferring data between the FPGA 101 and the device driver 502-x or application software 503-x.

また、仮想アドレス空間1212は、ハイパーバイザHVのレベルで認識される。物理アドレス空間1213は、メモリ412内の各OS、デバイスドライバ502、アプリケーションの各々が使用する領域と、FPGA101内の各ユーザモジュール102が使用するメモリと、がある。CPU411が有するMMU(Memory Management Unit)は、各仮想マシンVMの仮想アドレス空間1211と、仮想アドレス空間1212と、の間のアドレス変換を行う。さらに、CPU411が有するMMUは、仮想アドレス空間1212と、物理アドレス空間1213と、の間のアドレス変換を行う。   The virtual address space 1212 is recognized at the level of the hypervisor HV. The physical address space 1213 includes an area used by each OS, device driver 502, and application in the memory 412, and a memory used by each user module 102 in the FPGA 101. An MMU (Memory Management Unit) included in the CPU 411 performs address conversion between the virtual address space 1211 and the virtual address space 1212 of each virtual machine VM. Further, the MMU included in the CPU 411 performs address conversion between the virtual address space 1212 and the physical address space 1213.

図13は、各ユーザモジュールに割り当てられた記憶領域の詳細例を示す説明図である。例えば、仮想アドレス空間1211における管理OS501−cが使用するためのI/Oメモリは、物理アドレス空間1213における記憶領域acと、記憶領域au1と、記憶領域au2と、である。記憶領域acは、管理モジュール103に割り当てられたメモリ412内の領域である。記憶領域au1は、ユーザモジュール102−1に割り当てられたメモリ412内の領域である。記憶領域au2は、ユーザモジュール102−2に割り当てられたメモリ412内の領域である。   FIG. 13 is an explanatory diagram showing a detailed example of the storage area allocated to each user module. For example, the I / O memory used by the management OS 501-c in the virtual address space 1211 is the storage area ac, the storage area au 1, and the storage area au 2 in the physical address space 1213. The storage area ac is an area in the memory 412 allocated to the management module 103. The storage area au1 is an area in the memory 412 allocated to the user module 102-1. The storage area au2 is an area in the memory 412 allocated to the user module 102-2.

仮想アドレス空間1211における仮想マシンVM1が使用するメモリは、物理アドレス空間1213におけるメモリ412内の記憶領域a1である。仮想アドレス空間1211における仮想マシンVM1が使用するI/Oメモリは、物理アドレス空間1213における記憶領域au1である。仮想アドレス空間1211における仮想マシンVM2が使用するメモリは、物理アドレス空間1213におけるメモリ412内の記憶領域a2である。仮想アドレス空間1211における仮想マシンVM2が使用するI/Oメモリは、物理アドレス空間1213における記憶領域au2である。   The memory used by the virtual machine VM1 in the virtual address space 1211 is a storage area a1 in the memory 412 in the physical address space 1213. The I / O memory used by the virtual machine VM1 in the virtual address space 1211 is the storage area au1 in the physical address space 1213. The memory used by the virtual machine VM2 in the virtual address space 1211 is a storage area a2 in the memory 412 in the physical address space 1213. The I / O memory used by the virtual machine VM2 in the virtual address space 1211 is the storage area au2 in the physical address space 1213.

記憶領域acを示すアドレス範囲は、e0000000〜e00fffffである。記憶領域au1を示すアドレス範囲は、e0100000〜e01fffffである。記憶領域au2を示すアドレス範囲は、e0200000〜e02fffffである。   The address range indicating the storage area ac is e0000000 to e00fffff. The address range indicating the storage area au1 is e0100000 to e01fffff. The address range indicating the storage area au2 is e0200000 to e02fffff.

(FPGA101に構成された各ユーザモジュール102)
図14は、FPGAに構成された各ユーザモジュール例を示すブロック図である。FPGA101には、管理モジュール103と、ユーザモジュール102と、が構成される。管理モジュール103は、DMA回路1403と、再構成回路1404と、PCIe1405と、制御回路1406と、メモリコントローラ1407と、メモリ1408と、を有する。ユーザモジュール102は、上述したように、利用者によって設計され、利用者の端末302に割り当てられる。ユーザモジュール102は、メモリ601と、回路1401と、を有する。管理モジュール103とユーザモジュール102とは、ポート1402を介して接続される。管理モジュール103は、アクセス要求をいずれのポート1402を介して受け付けたかによって要求元のユーザモジュール102を判別することができる。
(Each user module 102 configured in the FPGA 101)
FIG. 14 is a block diagram illustrating an example of each user module configured in the FPGA. The FPGA 101 includes a management module 103 and a user module 102. The management module 103 includes a DMA circuit 1403, a reconfiguration circuit 1404, a PCIe 1405, a control circuit 1406, a memory controller 1407, and a memory 1408. The user module 102 is designed by the user and assigned to the user terminal 302 as described above. The user module 102 includes a memory 601 and a circuit 1401. The management module 103 and the user module 102 are connected via a port 1402. The management module 103 can determine the requesting user module 102 based on which port 1402 the access request is received through.

DMA回路1403は、DMAのパラメータを設定するレジスタ1411を有する。上述したように、DMAのパラメータは、例えば、転送方向、転送先アドレス、転送元アドレス、データ長、を有する。転送方向は、FPGA101からサーバ111へ、またはサーバ111からFPGA101へのいずれかである。制御回路1406は、累積データ量カウンタ1412と、アクセス許可設定レジスタ1413と、を有する。累積データ量カウンタ1412は、ユーザモジュール102からのアクセス要求に基づくDMA回路1403によるデータ量を計測する計測部である。アクセス許可設定レジスタ1413は、サーバ111内のメモリ412のうちの、ユーザモジュール102ごとにユーザモジュール102に対応付けられた仮想マシンVMに割り当てられた記憶領域を示す情報が記憶される記憶部107である。   The DMA circuit 1403 has a register 1411 for setting DMA parameters. As described above, the DMA parameters include, for example, the transfer direction, the transfer destination address, the transfer source address, and the data length. The transfer direction is either from the FPGA 101 to the server 111 or from the server 111 to the FPGA 101. The control circuit 1406 includes an accumulated data amount counter 1412 and an access permission setting register 1413. The accumulated data amount counter 1412 is a measuring unit that measures the amount of data by the DMA circuit 1403 based on an access request from the user module 102. The access permission setting register 1413 is a storage unit 107 that stores information indicating a storage area allocated to the virtual machine VM associated with the user module 102 for each user module 102 in the memory 412 in the server 111. is there.

また、アクセス許可設定レジスタ1413は、ユーザモジュール102ごとに、メモリ412内のアクセス可能な領域を示すアドレス範囲と、転送量の規制値と、が記憶される記憶部107である。例えば、アクセス許可設定レジスタ1413には、ユーザモジュール102が管理OS501−cによって構成される際に、メモリ412について、管理OS501−cによってアドレス範囲を示す情報と、データ量の制限値と、が設定される。設定例は図15に示す。   The access permission setting register 1413 is a storage unit 107 that stores, for each user module 102, an address range indicating an accessible area in the memory 412 and a transfer amount restriction value. For example, in the access permission setting register 1413, when the user module 102 is configured by the management OS 501-c, information indicating an address range and a data amount limit value are set for the memory 412 by the management OS 501-c. Is done. A setting example is shown in FIG.

また、アクセス許可設定レジスタ1413には、ユーザモジュール102ごとに、メモリ402、メモリ602、I/Oインターフェース403などのアクセス許可を示す情報が記憶される。例えば、アクセス許可設定レジスタ1413には、ユーザモジュール102が管理OS501−cによって構成される際に、メモリ402、メモリ602、I/Oインターフェース403について、管理OS501−cによってアクセス許可を示す情報が設定される。そのため、ユーザモジュール102からメモリ402、メモリ602,I/Oインターフェース403などへのアクセスは、制御回路1406を介して行われる。ユーザモジュール102からメモリ402、メモリ602,I/Oインターフェース403などへのアクセスについての詳細例は省略するが、ユーザモジュール102からメモリ412へのアクセスと同様に制御回路1406がアクセス可能か否かを判断する。   The access permission setting register 1413 stores information indicating access permission of the memory 402, the memory 602, the I / O interface 403, and the like for each user module 102. For example, when the user module 102 is configured by the management OS 501-c, information indicating access permission is set in the access permission setting register 1413 by the management OS 501-c for the memory 402, the memory 602, and the I / O interface 403. Is done. Therefore, access from the user module 102 to the memory 402, the memory 602, the I / O interface 403, and the like is performed via the control circuit 1406. Although detailed examples of access from the user module 102 to the memory 402, the memory 602, the I / O interface 403, and the like are omitted, it is determined whether or not the control circuit 1406 is accessible in the same manner as the access from the user module 102 to the memory 412. to decide.

再構成回路1404は、サーバ111からのコンフィギュレーションデータ803に基づいて、FPGA101内にユーザモジュール102が構成される際にポート1402などを構成する機能を有する。メモリコントローラ1407は、メモリ1408を制御する。PCIe1405は、PCIe415を介してサーバ111にアクセスする際の制御を行う。   The reconfiguration circuit 1404 has a function of configuring the port 1402 and the like when the user module 102 is configured in the FPGA 101 based on the configuration data 803 from the server 111. The memory controller 1407 controls the memory 1408. The PCIe 1405 performs control when accessing the server 111 via the PCIe 415.

図15は、アクセス許可設定レジスタの設定例を示す説明図である。ここでは、理解の容易化のために、アクセス許可設定レジスタ1413をテーブルのように表す。アクセス許可設定レジスタ1413には、ユーザモジュール102ごとに、メモリ412内のアクセス可能な領域を示すアドレス範囲と、転送量の規制値と、が設定される。   FIG. 15 is an explanatory diagram of a setting example of the access permission setting register. Here, for easy understanding, the access permission setting register 1413 is represented as a table. In the access permission setting register 1413, for each user module 102, an address range indicating an accessible area in the memory 412 and a transfer amount restriction value are set.

転送量の規制値は、複数のユーザモジュール102からのアクセス要求が重なった際にいずれかのユーザモジュール102によってアクセスが占有されるのを防ぐための、ユーザモジュール102のアクセス優先度を決定するための閾値である。転送量の規制値については、例えば、ユーザモジュール102の回路規模などに基づいて決定される。例えば、転送量の規制値は、受け入れ検査プログラム322や管理OS501−cなどによって決定される。例えば、管理モジュール103については、他のユーザモジュール102よりも重要度が高いとして、転送量の規制値によってアクセスを制限させないこととする。例えば、管理モジュール103については、アドレス範囲がe0000000〜e00fffffであり、転送量の規制値は、∞である。ユーザモジュール102−1については、アドレス範囲がe0100000〜e01fffffであり、転送量の規制値は500[Mbps]である。例えば、ユーザモジュール102−2については、アドレス範囲がe0200000〜e02fffffであり、転送量の規制値は1000[Mbps]である。   The restriction value of the transfer amount is for determining the access priority of the user module 102 for preventing the access from being occupied by any of the user modules 102 when the access requests from the plurality of user modules 102 overlap. Is the threshold value. The restriction value of the transfer amount is determined based on the circuit scale of the user module 102, for example. For example, the transfer amount restriction value is determined by the acceptance inspection program 322, the management OS 501-c, or the like. For example, the management module 103 is assumed to be more important than the other user modules 102, and access is not restricted by the transfer amount restriction value. For example, for the management module 103, the address range is e0000000 to e00fffff, and the transfer amount restriction value is ∞. For the user module 102-1, the address range is e0100000 to e01fffff, and the transfer amount restriction value is 500 [Mbps]. For example, for the user module 102-2, the address range is e0200000 to e02fffff, and the transfer amount restriction value is 1000 [Mbps].

図16は、ユーザモジュールとポートの対応例を示す説明図である。例えば、テーブル1600が示すように、管理モジュール103のポート1402−1にはユーザモジュール102−1が接続され、管理モジュール103のポート1402−2にはユーザモジュール102−2が接続される。例えば、ユーザモジュール102とポート1402の対応関係については、管理モジュール103内にテーブル化されてあってもよい。また、例えば、管理モジュール103には、予め複数のポート1402が用意され、ユーザモジュール102が構成される領域に応じてユーザモジュール102に使用されるポート1402が決定されてもよい。   FIG. 16 is an explanatory diagram showing an example of correspondence between user modules and ports. For example, as shown in the table 1600, the user module 102-1 is connected to the port 1402-1 of the management module 103, and the user module 102-2 is connected to the port 1402-2 of the management module 103. For example, the correspondence between the user module 102 and the port 1402 may be tabulated in the management module 103. Further, for example, a plurality of ports 1402 may be prepared in the management module 103 in advance, and the port 1402 used for the user module 102 may be determined according to the area where the user module 102 is configured.

図17は、デバイスドライバが有するテーブル例を示す説明図である。テーブル1700は、仮想マシンVMに割り当てられたFPGA101内の領域を示す記憶部213である。仮想マシンVMに割り当てられたFPGA101内の領域とは、仮想マシンVMに割り当てられたFPGA101内のユーザモジュール102が構成された領域に含まれる記憶領域である。テーブル1700は、例えば、デバイスドライバ502−cに割り当てられたメモリ412内の記憶領域に記憶される。具体的に、テーブル1700には、仮想マシンVMごとに仮想マシンVMに割り当てられたFPGA101内のユーザモジュール102の記憶領域を示すアドレス範囲が記憶される。   FIG. 17 is an explanatory diagram illustrating an example of a table included in the device driver. The table 1700 is a storage unit 213 that indicates an area in the FPGA 101 allocated to the virtual machine VM. The area in the FPGA 101 assigned to the virtual machine VM is a storage area included in the area in which the user module 102 in the FPGA 101 assigned to the virtual machine VM is configured. The table 1700 is stored in, for example, a storage area in the memory 412 assigned to the device driver 502-c. Specifically, the table 1700 stores an address range indicating the storage area of the user module 102 in the FPGA 101 assigned to the virtual machine VM for each virtual machine VM.

仮想マシンVMcについては、端末302に割り当てられた仮想マシンVMxを管理するため、FPGA101内のすべての領域に対してアクセス可能とする。また、仮想マシンVMcについては、端末302に割り当てられた仮想マシンVMxよりもアクセス要求の重要度が高いとし、転送量の規制値によってアクセスを制限させないこととする。そのため、仮想マシンVMcについては、アドレス範囲がe0100000〜e03fffffであり、転送量の規制値は∞である。仮想マシンVM1については、アドレス範囲がe0100000〜e01fffffであり、転送量の規制値は500[Mbps]である。仮想マシンVM2については、アドレス範囲がe0200000〜e02fffffであり、転送量の規制値は1000[Mbps]である。   The virtual machine VMc is made accessible to all areas in the FPGA 101 in order to manage the virtual machine VMx assigned to the terminal 302. Further, regarding the virtual machine VMc, it is assumed that the importance of the access request is higher than that of the virtual machine VMx assigned to the terminal 302, and the access is not restricted by the transfer amount restriction value. Therefore, for the virtual machine VMc, the address range is e0100000 to e03fffff, and the transfer amount restriction value is ∞. For the virtual machine VM1, the address range is e0100000 to e01fffff, and the transfer amount restriction value is 500 [Mbps]. For the virtual machine VM2, the address range is e0200000 to e02fffff, and the transfer amount restriction value is 1000 [Mbps].

(仮想マシンVMからユーザモジュール102へのアクセス要求)
本実施の形態では、仮想マシンVMからユーザモジュール102へのアクセスは、PIO(Programmed I/O)やMemory Mapped I/Oによって実現される。
(Access request from the virtual machine VM to the user module 102)
In this embodiment, access from the virtual machine VM to the user module 102 is realized by PIO (Programmed I / O) or Memory Mapped I / O.

受け付け部211は、端末302に割り当てられた仮想マシンVMのいずれかからFPGA101へのアクセス要求を受け付ける。制御部212は、受け付けたアクセス要求が示すアクセス先が、アクセス要求の要求元の仮想マシンVMに割り当てられたユーザモジュール102が構成された領域である場合、アクセス要求に基づくアクセスを実行する。具体的には、制御部212は、テーブル1700に基づいて、アクセス要求に含まれるFPGA101内の領域を示すアドレスが、アクセス要求の要求元の仮想マシンVMについてのアドレス範囲に含まれる場合、アクセス要求に基づくアクセスを実行する。制御部212は、構成された領域でない場合、アクセス要求に基づくアクセスを実行しない。具体的に、制御部212は、テーブル1700に基づいて、アクセス要求に含まれるFPGA101内の領域を示すアドレスが、アクセス要求の要求元の仮想マシンVMについてのアドレス範囲に含まれない場合、アクセス要求に基づくアクセスを実行しない。また、制御部212は、構成された領域でない場合、アクセス要求の要求元の仮想マシンVMに対してエラーを出力してもよい。   The accepting unit 211 accepts an access request to the FPGA 101 from any of the virtual machines VM assigned to the terminal 302. When the access destination indicated by the received access request is an area in which the user module 102 assigned to the requesting virtual machine VM is configured, the control unit 212 performs access based on the access request. Specifically, when the address indicating the area in the FPGA 101 included in the access request is included in the address range of the access request requesting virtual machine VM based on the table 1700, the control unit 212 determines that the access request Perform access based on. If the area is not a configured area, the control unit 212 does not perform access based on the access request. Specifically, when the address indicating the area in the FPGA 101 included in the access request is not included in the address range for the virtual machine VM that requested the access request based on the table 1700, the control unit 212 determines that the access request Do not perform access based on. Further, when the area is not a configured area, the control unit 212 may output an error to the virtual machine VM that has requested the access request.

また、制御部212は、構成された領域でない場合に、アクセス要求を要求元の仮想マシンVMに割り当てられたユーザモジュール102が構成された領域へのアクセス要求に補正し、補正したアクセス要求を実行してもよい。具体的に、制御部212は、テーブル1700に基づいて、仮想マシンVMについてのアドレス範囲に含まれない場合、アクセス要求をアドレス範囲に含まれる領域へのアクセス要求に補正する。より詳細な例は、図20を用いて後述する。   In addition, when the area is not the configured area, the control unit 212 corrects the access request to an access request to the area where the user module 102 allocated to the requesting virtual machine VM is configured, and executes the corrected access request. May be. Specifically, based on the table 1700, the control unit 212 corrects the access request to an access request to an area included in the address range when the virtual machine VM is not included in the address range based on the table 1700. A more detailed example will be described later with reference to FIG.

また、制御部212は、構成された領域である場合において、他の仮想マシンVMからのアクセス要求に基づくアクセスを実行している場合、他の仮想マシンVMからのアクセス要求に基づくアクセスの終了を待機する。ここでは、例えば、あらたに受け付けられたアクセス要求の要求元を第1仮想マシンVMとし、該他の仮想マシンVMを第2仮想マシンVMとする。そして、制御部212は、終了後に、第1仮想マシンVMからのアクセス要求に基づくアクセスを実行する。これにより、複数の仮想マシンVMからFPGA101へのアクセスが重なっても、アクセス要求を受け付けた時刻が早い順にアクセス要求が示すアクセスを終了させることができる。   In addition, in the case where the control unit 212 is executing the access based on the access request from the other virtual machine VM in the configured area, the control unit 212 terminates the access based on the access request from the other virtual machine VM. stand by. Here, for example, the request source of the newly accepted access request is the first virtual machine VM, and the other virtual machine VM is the second virtual machine VM. Then, after the end, the control unit 212 executes access based on the access request from the first virtual machine VM. As a result, even when accesses from a plurality of virtual machines VM to the FPGA 101 overlap, the access indicated by the access request can be terminated in the order from the time when the access request is received.

また、いずれかの仮想マシンVMが、FPGA101とサーバ111とを接続するPCIe1405などの共用リソースを連続して使用すると、他の仮想マシンVMがPCIe1405を利用できなくなってしまう。そこで、計測部1101は、第1仮想マシンVMからのアクセス要求に基づいて転送した所定時間当たりの第1データ量と、第2仮想マシンVMからの前アクセス要求に基づいて転送した所定時間当たりの第2データ量と、を計測する。所定時間については、運用前にシステム100の開発者やデータセンタ301の管理者によって決定されることとする。具体的には、計測部1101は、第1仮想マシンVMからのアクセス要求に基づいて転送したデータ量を累積し、所定時間間隔でサンプリングすることにより、所定時間当たりの転送したデータ量を計測する。   In addition, if any one of the virtual machines VM continuously uses a shared resource such as PCIe 1405 that connects the FPGA 101 and the server 111, the other virtual machine VM cannot use the PCIe 1405. Therefore, the measurement unit 1101 receives the first data amount per predetermined time transferred based on the access request from the first virtual machine VM and the predetermined data per predetermined time transferred based on the previous access request from the second virtual machine VM. The second data amount is measured. The predetermined time is determined by the developer of the system 100 and the administrator of the data center 301 before operation. Specifically, the measurement unit 1101 accumulates the amount of data transferred based on the access request from the first virtual machine VM, and measures the amount of data transferred per predetermined time by sampling at a predetermined time interval. .

制御部212は、第2仮想マシンVMからのアクセス要求に基づくアクセスを実行している場合において、計測部1101が計測した第1データ量と、計測部1101が計測した第2データ量と、に基づいて、第1状態と第2状態とを切り替える。第1状態は、第1仮想マシンVMからのアクセス要求に基づくアクセスを実行する状態であり、第2状態は、第2仮想マシンVMからのアクセス要求に基づくアクセスを実行する状態である。   When executing access based on an access request from the second virtual machine VM, the control unit 212 includes a first data amount measured by the measurement unit 1101 and a second data amount measured by the measurement unit 1101. Based on the first state and the second state. The first state is a state in which access based on an access request from the first virtual machine VM is executed, and the second state is a state in which access based on an access request from the second virtual machine VM is executed.

制御部212は、第1データ量と第1仮想マシンVMについての閾値との比較結果と、第2データ量と第1仮想マシンVMについての閾値との比較結果と、に基づいて、第1状態と第2状態とを切り替える。閾値は、上述した転送量の規制値である。例えば、制御部212は、第1状態の場合において、第1データ量が第1仮想マシンVMについての規制値を超えた場合、第1状態から第2状態に切り替える。また、例えば、制御部212は、第2状態の場合において、第2データ量が第2仮想マシンVMについての規制値を超えた場合、第2状態から第1状態に切り替える。より詳細な例については、図21を用いて後述する。このように、各仮想マシンVMからのアクセス要求に基づくアクセスの実行を切り替えることにより、サーバ111内のPCIe415などの共用リソースを複数の仮想マシンVMが公平に利用可能となる。   Based on the comparison result between the first data amount and the threshold value for the first virtual machine VM, and the comparison result between the second data amount and the threshold value for the first virtual machine VM, the control unit 212 performs the first state. And the second state. The threshold value is the transfer amount restriction value described above. For example, in the case of the first state, the control unit 212 switches from the first state to the second state when the first data amount exceeds the regulation value for the first virtual machine VM. For example, in the case of the second state, the control unit 212 switches from the second state to the first state when the second data amount exceeds the regulation value for the second virtual machine VM. A more detailed example will be described later with reference to FIG. In this way, by switching the execution of access based on the access request from each virtual machine VM, a plurality of virtual machines VM can use shared resources such as PCIe 415 in the server 111 fairly.

ここで、上述したように、受け付け部211と制御部212が管理OS501−cのデバイスドライバ502−cによって実現されることにより、要求元の仮想マシンVMによるFPGA101への不正なアクセスや誤ったアクセスを防ぐことができる。例えば、管理モジュール103によって当該受け付け部211と制御部212の機能を実現させる場合、管理モジュール103は、いずれの仮想マシンVMからのアクセス要求を受け付けたかを区別することができない。アクセス要求に要求元である仮想マシンVMの識別情報を付加させるように予め取り決めてあっても、各仮想マシンVMが故意または誤って他の仮想マシンVMの識別情報を付加させる場合がある。この場合、管理モジュール103は、アクセス要求に含まれる要求元の仮想マシンVMの識別情報が正しいか否かを判断することができないため、不正なアクセスや誤ったアクセスが発生する可能性がある。   Here, as described above, the reception unit 211 and the control unit 212 are realized by the device driver 502-c of the management OS 501-c, so that unauthorized or erroneous access to the FPGA 101 by the requesting virtual machine VM. Can be prevented. For example, when the functions of the receiving unit 211 and the control unit 212 are realized by the management module 103, the management module 103 cannot distinguish which virtual machine VM has received the access request. Even if it is determined in advance that the identification information of the requesting virtual machine VM is added to the access request, each virtual machine VM may intentionally or mistakenly add the identification information of another virtual machine VM. In this case, since the management module 103 cannot determine whether the identification information of the requesting virtual machine VM included in the access request is correct, there is a possibility that unauthorized access or incorrect access may occur.

一方、管理OS501−cのデバイスドライバ502−cは、要求元の仮想マシンVMを判別可能である。そのため、受け付け部211と制御部212とが管理OS501−cのデバイスドライバ502−cによって実現されることにより、要求元の仮想マシンVMによるFPGA101への不正なアクセスや誤ったアクセスを防ぐことができる。   On the other hand, the device driver 502-c of the management OS 501-c can determine the requesting virtual machine VM. For this reason, the reception unit 211 and the control unit 212 are realized by the device driver 502-c of the management OS 501-c, so that unauthorized access and incorrect access to the FPGA 101 by the requesting virtual machine VM can be prevented. .

図18は、仮想マシンからユーザモジュールへのアクセス例を示す説明図である。管理OS501−c、仮想マシンVM、各デバイスドライバ502、ハイパーバイザHVは、サーバ111が実行するソフトウェアであるが、理解の容易化のために、各々を実行主体として説明する。   FIG. 18 is an explanatory diagram of an example of access from the virtual machine to the user module. The management OS 501-c, the virtual machine VM, each device driver 502, and the hypervisor HV are software executed by the server 111. However, in order to facilitate understanding, each will be described as an execution subject.

例えば、仮想マシンVM1上で実行中のアプリケーションソフトウェア503−1からアクセス要求があると、仮想マシンVM1上で実行中のOS501−1は、FPGA101へのアクセス要求を生成する。そして、仮想マシンVM1上で実行中のOS501−1は、デバイスドライバ502−1を呼び出し、デバイスドライバ502−1にアクセス要求を通知する(ステップS1801)。図18中、アプリケーションソフトウェア503−1を省略する。   For example, when there is an access request from the application software 503-1 running on the virtual machine VM1, the OS 501-1 running on the virtual machine VM1 generates an access request to the FPGA 101. Then, the OS 501-1 running on the virtual machine VM1 calls the device driver 502-1 and notifies the device driver 502-1 of an access request (step S1801). In FIG. 18, the application software 503-1 is omitted.

デバイスドライバ502−1は、アクセス要求を受け付けると、ハイパーバイザHVへアクセス要求を通知する(ステップS1802)。ハイパーバイザHVは、デバイスドライバ502−1からのアクセス要求を管理OS501−cへ通知する(ステップS1803)。管理OS501−cは、ハイパーバイザHVから仮想マシンVM1が要求元であるアクセス要求を受け付けると、デバイスドライバ502−cを呼び出し、受け付けたアクセス要求をデバイスドライバ502−cへ通知する(ステップS1804)。   Upon receiving the access request, the device driver 502-1 notifies the access request to the hypervisor HV (step S1802). The hypervisor HV notifies the management OS 501-c of an access request from the device driver 502-1 (step S1803). When the management OS 501-c receives an access request for which the virtual machine VM1 is a request source from the hypervisor HV, the management OS 501-c calls the device driver 502-c and notifies the received access request to the device driver 502-c (step S1804).

デバイスドライバ502−cは、アクセス要求に含まれるアクセス先のアドレスが受け付けたアクセス要求の要求元である仮想マシンVM1についてのアドレス範囲に含まれる場合、アクセス要求に基づくアクセスを実行する(ステップS1805)。ステップS1805において、デバイスドライバ502−cは、アクセス要求に含まれるアクセス先のアドレスが受け付けたアクセス要求の要求元である仮想マシンVM1についてのアドレス範囲に含まれない場合、アクセス要求を補正する。具体的に、デバイスドライバ502−cは、アクセス要求を仮想マシンVM1についてのアドレス範囲に含まれるように補正する。そして、デバイスドライバ502−cは、補正したアクセス要求に基づくアクセスを実行する。管理モジュール103は、デバイスドライバ502−cによるアクセス要求に基づくアクセスの実行に基づいてユーザモジュール102−1にアクセスする(ステップS1806)。   When the access destination address included in the access request is included in the address range of the virtual machine VM1 that is the request source of the received access request, the device driver 502-c executes access based on the access request (step S1805). . In step S1805, the device driver 502-c corrects the access request when the access destination address included in the access request is not included in the address range of the virtual machine VM1 that is the request source of the received access request. Specifically, the device driver 502-c corrects the access request to be included in the address range for the virtual machine VM1. The device driver 502-c executes access based on the corrected access request. The management module 103 accesses the user module 102-1 based on the execution of access based on the access request by the device driver 502-c (step S1806).

(ユーザモジュール102からサーバ111内のメモリ412へのアクセス要求)
つぎに、ユーザモジュール102からサーバ111内のメモリ412へのアクセス要求について説明する。本実施の形態では、ユーザモジュール102からメモリ412へのアクセスは、DMAによって実現される。上述したように、制御回路1406は、受け付け部105と、制御部106と、計測部と、を有する。また、上述したように、DMA回路1403は、アクセス部104を有する。
(Access request from the user module 102 to the memory 412 in the server 111)
Next, an access request from the user module 102 to the memory 412 in the server 111 will be described. In the present embodiment, access from the user module 102 to the memory 412 is realized by DMA. As described above, the control circuit 1406 includes the reception unit 105, the control unit 106, and the measurement unit. As described above, the DMA circuit 1403 includes the access unit 104.

制御回路1406は、受け付け部211によって、ユーザモジュール102のうちのいずれかからのアクセス要求を受け付ける。アクセス要求には、DMA回路1403に与えるDMAのパラメータが含まれる。   The control circuit 1406 accepts an access request from any of the user modules 102 by the accepting unit 211. The access request includes a DMA parameter to be given to the DMA circuit 1403.

制御回路1406は、受け付けたアクセス要求が示すアクセス先がアクセス要求の要求元のユーザモジュール102に割り当てられた記憶領域である場合は、アクセス要求に基づくアクセスをDMA回路1403に実行させる。具体的に制御回路1406は、アクセス要求が示すアクセス先が要求元のユーザモジュール102についてのアクセス許可設定レジスタ1413に設定されたアドレス範囲に含まれる場合、アクセス要求内のDMAのパラメータをレジスタ1411に設定する。   When the access destination indicated by the received access request is a storage area allocated to the user module 102 that requested the access request, the control circuit 1406 causes the DMA circuit 1403 to execute access based on the access request. Specifically, when the access destination indicated by the access request is included in the address range set in the access permission setting register 1413 for the requesting user module 102, the control circuit 1406 stores the DMA parameter in the access request in the register 1411. Set.

一方、制御回路1406は、割り当てられた記憶領域でない場合は、アクセス要求に基づくアクセスをDMA回路1403に実行させない。具体的に制御回路1406は、アクセス要求が示すアクセス先がアドレス範囲に含まれない場合、アクセス要求内のDMAのパラメータをDMA回路1403のレジスタ1411に設定しない。また、制御回路1406は、割り当てられた記憶領域でない場合、アクセス要求を要求元のユーザモジュール102に割り当てられた記憶領域へのアクセス要求に補正し、補正したアクセス要求をDMA回路1403に実行させる。具体的に制御回路1406は、アクセス要求が示すアクセス先がアドレス範囲に含まれない場合、アドレス範囲に含まれるようにアクセス要求内のDMAのパラメータを補正する。そして、制御回路1406は、補正したDMAのパラメータをレジスタ1411に設定する。   On the other hand, if it is not the allocated storage area, the control circuit 1406 does not cause the DMA circuit 1403 to perform access based on the access request. Specifically, when the access destination indicated by the access request is not included in the address range, the control circuit 1406 does not set the DMA parameter in the access request in the register 1411 of the DMA circuit 1403. If it is not the allocated storage area, the control circuit 1406 corrects the access request to an access request to the storage area allocated to the requesting user module 102 and causes the DMA circuit 1403 to execute the corrected access request. Specifically, when the access destination indicated by the access request is not included in the address range, the control circuit 1406 corrects the DMA parameter in the access request so as to be included in the address range. Then, the control circuit 1406 sets the corrected DMA parameter in the register 1411.

また、制御回路1406は、割り当てられた記憶領域である場合において、他のユーザモジュール102からのアクセス要求に基づくアクセスをDMA回路1403に実行させている場合、当該アクセスの終了を待機する。ここでは、あらたに受け付けられたアクセス要求の要求元のユーザモジュール102を第1ユーザモジュール102と称し、該他のユーザモジュール102を第2ユーザモジュールと称する。そして、制御回路1406は、終了後に、第1ユーザモジュール102からのアクセス要求に基づくアクセスをDMA回路1403に実行させる。   Further, in the case of the allocated storage area, when the control circuit 1406 causes the DMA circuit 1403 to execute an access based on an access request from another user module 102, the control circuit 1406 waits for the end of the access. Here, the user module 102 that is the request source of the newly accepted access request is referred to as a first user module 102, and the other user module 102 is referred to as a second user module. Then, the control circuit 1406 causes the DMA circuit 1403 to execute access based on the access request from the first user module 102 after the end.

また、FPGA101内のいずれかのユーザモジュール102が、FPGA101とサーバ111とを接続するPCIe1405などの共用リソースを連続して使用すると、他のユーザモジュール102がPCIe1405を利用できなくなってしまう。そこで、制御回路1406は、累積データ量カウンタ1412によって、第1ユーザモジュール102からのアクセス要求に基づくDMA回路1403による所定時間当たりの第1データ量を計測する。制御回路1406は、累積データ量カウンタ1412によって、第2ユーザモジュール102からのアクセス要求に基づくアクセス部104による所定時間当たりの第2データ量を計測する。所定時間については、運用前にシステム100の開発者やデータセンサーの管理者によって決定されることとする。具体的には、制御回路1406は、第1ユーザモジュール102からのアクセス要求に基づいて転送したデータ量を累積し、所定時間間隔でサンプリングすることにより、所定時間当たりの転送したデータ量を計測する。   In addition, if any user module 102 in the FPGA 101 continuously uses a shared resource such as the PCIe 1405 that connects the FPGA 101 and the server 111, the other user module 102 cannot use the PCIe 1405. Therefore, the control circuit 1406 measures the first data amount per predetermined time by the DMA circuit 1403 based on the access request from the first user module 102 by the accumulated data amount counter 1412. The control circuit 1406 measures the second data amount per predetermined time by the access unit 104 based on the access request from the second user module 102 by the accumulated data amount counter 1412. The predetermined time is determined by the developer of the system 100 and the manager of the data sensor before the operation. Specifically, the control circuit 1406 accumulates the amount of data transferred based on the access request from the first user module 102, and measures the amount of data transferred per predetermined time by sampling at a predetermined time interval. .

制御回路1406は、計測した第1データ量と、計測した第2データ量と、に基づいて、第1状態と第2状態とを切り替える。第1状態は、第1ユーザモジュール102からのアクセス要求に基づくアクセスをDMA回路1403に実行させる状態である。また、第2状態は、第2ユーザモジュール102からのアクセス要求に基づくアクセスをアクセス部104に実行させる状態である。   The control circuit 1406 switches between the first state and the second state based on the measured first data amount and the measured second data amount. The first state is a state in which the DMA circuit 1403 executes access based on the access request from the first user module 102. The second state is a state in which the access unit 104 executes access based on an access request from the second user module 102.

また、制御回路1406は、第1データ量と前記第1ユーザモジュール102についての閾値との比較結果と、第2データ量と第2ユーザモジュール102についての閾値との比較結果と、に基づいて、第1状態と第2状態と、を切り替える。各ユーザモジュール102についての閾値は、上述したアクセス許可設定レジスタ1413に設定された転送量の規制値である。例えば、制御回路1406は、第1状態の場合において、第1データ量が第1ユーザモジュール102についての規制値を超えた場合、第1状態から第2状態に切り替える。また、例えば、制御回路1406は、第2状態の場合において、第2データ量が第2ユーザモジュール102についての規制値を超えた場合、第2状態から第1状態に切り替える。より詳細な例については、図21を用いて後述する。このように、各ユーザモジュール102からのアクセス要求に基づくアクセスの実行を切り替えることにより、FPGA101のPCIe1405などの共用リソースを複数のユーザモジュール102が公平に利用可能となる。利用者が、FPGA101を共同利用する他の利用者を意識することなく、システム100を利用できる。   Further, the control circuit 1406, based on the comparison result between the first data amount and the threshold value for the first user module 102, and the comparison result between the second data amount and the threshold value for the second user module 102, Switching between the first state and the second state. The threshold for each user module 102 is a transfer amount restriction value set in the access permission setting register 1413 described above. For example, in the case of the first state, the control circuit 1406 switches from the first state to the second state when the first data amount exceeds the regulation value for the first user module 102. For example, in the case of the second state, the control circuit 1406 switches from the second state to the first state when the second data amount exceeds the regulation value for the second user module 102. A more detailed example will be described later with reference to FIG. As described above, by switching the execution of access based on the access request from each user module 102, the shared resources such as the PCIe 1405 of the FPGA 101 can be used fairly by the plurality of user modules 102. The user can use the system 100 without being aware of other users who share the FPGA 101.

図19は、ユーザモジュールからサーバ内のメモリへのアクセス例を示す説明図である。ユーザモジュール102−1は、DMAのパラメータを生成し、生成したDMAのパラメータを含むアクセス要求を、ポート1402−1を介して管理モジュール103へ送信する(ステップS1901)。   FIG. 19 is an explanatory diagram illustrating an example of access from the user module to the memory in the server. The user module 102-1 generates a DMA parameter, and transmits an access request including the generated DMA parameter to the management module 103 via the port 1402-1 (step S1901).

制御回路1406は、ポート1402−1を介してアクセス要求を受信すると、ポート1402−1に基づいてアクセス要求の要求元を判別する。制御回路1406は、アクセス許可設定レジスタ1413に基づいて、DMAのパラメータが示すアクセス先のアドレスが要求元に割り当てられたアドレス範囲に含まれる場合、DMAのパラメータをレジスタ1411に設定する(ステップS1902,S1903)。また、ステップS1902,S1903において、制御回路1406は、アクセス先のアドレスが要求元についてのアドレス範囲に含まれない場合、DMAのパラメータを、アクセス先のアドレスがアドレス範囲に含まれるように補正する。そして、制御回路1406は、補正したDMAのパラメータをDMA回路1403内のレジスタ1411に設定する。   When receiving an access request via the port 1402-1, the control circuit 1406 determines the request source of the access request based on the port 1402-1. Based on the access permission setting register 1413, the control circuit 1406 sets the DMA parameter in the register 1411 when the address of the access destination indicated by the DMA parameter is included in the address range assigned to the request source (step S1902, S1903). In steps S1902 and S1903, when the access destination address is not included in the address range for the request source, the control circuit 1406 corrects the DMA parameter so that the access destination address is included in the address range. Then, the control circuit 1406 sets the corrected DMA parameter in the register 1411 in the DMA circuit 1403.

DMA回路1403は、レジスタ1411に設定されたDMAのパラメータに基づいてPCIe1405を介してサーバ111内のメモリ412にアクセスする(ステップS1904,S1905)。   The DMA circuit 1403 accesses the memory 412 in the server 111 via the PCIe 1405 based on the DMA parameter set in the register 1411 (steps S1904 and S1905).

図20は、アドレス判断処理の詳細例を示す説明図である。図20の上側では、BASE_ADDR_USER1とMASK_ADDR_USER1とは仮想マシンVM1の構築時に決定されるパラメータ例を示す。BASE_ADDR_USER2とMASK_ADDR_USER2とは仮想マシンVM2の構築時に決定されるパラメータ例を示す。図20の上側は、例えば、アクセス許可設定レジスタ1413やテーブル1700に各アドレス範囲が設定されることと同様のことを示す。   FIG. 20 is an explanatory diagram illustrating a detailed example of the address determination process. On the upper side of FIG. 20, BASE_ADDR_USER1 and MASK_ADDR_USER1 indicate parameter examples determined when the virtual machine VM1 is constructed. BASE_ADDR_USER2 and MASK_ADDR_USER2 indicate parameter examples determined when the virtual machine VM2 is constructed. The upper side of FIG. 20 shows the same thing as the setting of each address range in the access permission setting register 1413 and the table 1700, for example.

また、図20の下側では、仮想マシンVM1からのアクセス要求を受け付けた場合のデバイスドライバ502−cのアドレス判断処理、またはユーザモジュール102−1からのアクセス要求が発生した場合の管理モジュール103のアドレス判断処理を示す。アドレス判断処理では、アクセス要求が示すアクセス先の先頭アドレスと、アクセス要求が示すアクセス先のデータ長と、の入力を受け付ける。アドレス判断処理では、入力された先頭アドレスが、BASE_ADDR_USER1とMASK_ADDR_USER1とによって示されるアドレス範囲に含まれる場合、入力された先頭アドレスをそのまま出力する。アドレス判断処理では、入力された先頭アドレスがアドレス範囲に含まれない場合、入力された先頭アドレスがアドレス範囲に含まれるように補正した先頭アドレスを出力する。   On the lower side of FIG. 20, the address determination process of the device driver 502-c when an access request from the virtual machine VM1 is received, or the management module 103 when an access request from the user module 102-1 occurs. An address determination process is shown. In the address determination process, the input of the start address of the access destination indicated by the access request and the data length of the access destination indicated by the access request are accepted. In the address determination process, when the input head address is included in the address range indicated by BASE_ADDR_USER1 and MASK_ADDR_USER1, the input head address is output as it is. In the address determination process, if the input start address is not included in the address range, the corrected start address is output so that the input start address is included in the address range.

また、アドレス判断処理では、入力されたデータ長が、MASK_ADDR_USER1が示すデータ長以内の場合、入力されたデータ長をそのまま出力する。アドレス判断処理では、入力されたデータ長が、MASK_ADDR_USER1が示すデータ長より大きい場合、入力されたデータ長をMASK_ADDR_USER1が示すデータ長以内となるように補正したデータ長を出力する。   In the address determination process, when the input data length is within the data length indicated by MASK_ADDR_USER1, the input data length is output as it is. In the address determination process, when the input data length is larger than the data length indicated by MASK_ADDR_USER1, the data length corrected to be within the data length indicated by MASK_ADDR_USER1 is output.

図21は、データ量制限処理の詳細例を示す説明図である。図21では、複数の仮想マシンVMからアクセス要求を受け付けた場合のデバイスドライバ502−cのデータ量制限処理例を示す。また、複数のアクセス要求を受け付けた場合の管理モジュール103のデータ量制限処理も同様である。   FIG. 21 is an explanatory diagram showing a detailed example of the data amount restriction process. FIG. 21 illustrates an example of a data amount restriction process of the device driver 502-c when an access request is received from a plurality of virtual machines VM. The same applies to the data amount restriction processing of the management module 103 when a plurality of access requests are received.

number_of_requester()はアクセス要求の数を示す。number_of_requester()が1の場合、データ量制限処理では、1つのアクセス要求を受け付けた状態であるため、受け付けたアクセス要求に基づくアクセスが実行される。get_requesters_top()は、各仮想マシンVMからのアクセス要求を登録可能なキューの先頭のアクセス要求を取得する処理を示す。do_transfer()は、()内のアクセス要求に基づくアクセスを実行する処理を示す。   number_of_requester () indicates the number of access requests. When number_of_requester () is 1, since the data amount restriction process has accepted one access request, access based on the accepted access request is executed. get_requesters_top () indicates a process of acquiring the first access request in the queue that can register the access request from each virtual machine VM. do_transfer () indicates processing for executing access based on the access request in parentheses.

number_of_requester()が1より大きい場合、アクセス要求の要求元の仮想マシンVMについての「(規制値)−(直近の計測されたデータ量)」に基づいてアクセス要求を降順でソートする。データ量制限処理では、ソート後に、先頭のアクセス要求に基づくアクセスから順に実行する。   When number_of_requester () is greater than 1, the access requests are sorted in descending order based on “(restriction value) − (recent measured data amount)” for the virtual machine VM that requested the access request. In the data amount restriction process, after the sorting, the access is executed in order from the access based on the top access request.

例えば、get_requesters()は、アクセス要求を登録可能なキューに登録されたすべてのアクセス要求を取得する処理を示す。reqsには、取得されたアクセス要求が登録される。reqsに登録されたアクセス要求が、各アクセス要求の要求元の仮想マシンVMについての「「規制値」−「直近の計測されたデータ量」」に基づいて、降順にソートされる。reqs.top()は、先頭に登録されたアクセス要求を取得する処理を示す。do_transfer()は、()内のアクセス要求に基づくアクセスを実行する処理を示し、ここではreqsの先頭に登録されたアクセス要求に基づくアクセスを実行する。   For example, get_requesters () indicates a process for acquiring all access requests registered in a queue capable of registering access requests. In reqs, the acquired access request is registered. The access requests registered in reqs are sorted in descending order based on ““ restriction value ”−“ recent measured data amount ”for the virtual machine VM that is the request source of each access request. reqs. top () indicates a process for acquiring an access request registered at the top. do_transfer () indicates processing for executing access based on the access request in (), and here, access based on the access request registered at the head of reqs is executed.

また、データ量制限処理では、データ量が規制値を超えたアクセス要求の要求元の仮想マシンVMを検出した場合、管理OS501−cに通知する。   Further, in the data amount restriction process, when a virtual machine VM requesting an access request whose data amount exceeds the regulation value is detected, the management OS 501-c is notified.

以上説明したように、本実施の形態にかかる集積回路は、ある利用者に割り当てられたFPGA内の回路から、他の利用者に割り当てられた該FPGA内の他の回路に割り当てられた記憶領域へアクセスさせない。これにより、他の利用者の記憶領域がある利用者が利用可能な回路に干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。   As described above, the integrated circuit according to the present embodiment has a storage area allocated from a circuit in an FPGA allocated to a certain user to another circuit in the FPGA allocated to another user. Do not allow access. Accordingly, it is possible to prevent a user having a storage area of another user from being interfered with an available circuit. Therefore, the processing environment of each user can be made to function stably.

また、本実施の形態にかかる集積回路は、ある利用者に割り当てられた回路からのアクセス要求のアクセス先が要求元の回路に割り当てられた記憶領域でない場合に、要求元の回路に割り当てられた記憶領域へのアクセス要求に補正する。これにより、他の利用者に割り当てられたFPGA内の回路がある利用者によって干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。   Further, the integrated circuit according to the present embodiment is assigned to the request source circuit when the access destination of the access request from the circuit assigned to a certain user is not the storage area assigned to the request source circuit. It corrects to the access request to the storage area. Thereby, it is possible to prevent the circuit in the FPGA assigned to another user from being interfered by a certain user. Therefore, the processing environment of each user can be made to function stably.

また、集積回路は1つのバスを介してサーバと接続されてあるため、集積回路内の複数の回路からサーバへのアクセス要求が重なる可能性がある。そのため、本実施の形態にかかる集積回路は、複数のアクセス要求がある場合、受け付けた時刻が早いアクセス要求に基づくアクセスが終了するのを待機して、受け付けた時刻が遅いアクセス要求に基づくアクセスを実行する。これにより、アクセス要求の発生順にアクセス要求に基づくアクセスを実行することができる。   In addition, since the integrated circuit is connected to the server via one bus, there is a possibility that access requests to the server from a plurality of circuits in the integrated circuit overlap. Therefore, when there are a plurality of access requests, the integrated circuit according to the present embodiment waits for the access based on the access request with the earlier received time to end, and performs the access based on the access request with the later received time. Run. Thereby, access based on the access requests can be executed in the order in which the access requests are generated.

また、集積回路内のいずれかの回路が集積回路と制御装置とを接続するバスを連続して使用すると、集積回路内の他の回路が制御装置内の記憶領域にアクセスできなくなる。そこで、本実施の形態にかかる集積回路は、集積回路内の回路ごとに回路から制御装置内の記憶領域への転送量を計測し、計測したデータ量に基づいて、いずれの回路からのアクセス要求に基づくアクセスを実行するかを切り替える。これにより、複数の利用者が集積回路を公平に利用可能となる。   In addition, when any circuit in the integrated circuit continuously uses the bus connecting the integrated circuit and the control device, other circuits in the integrated circuit cannot access the storage area in the control device. Therefore, the integrated circuit according to the present embodiment measures the transfer amount from the circuit to the storage area in the control device for each circuit in the integrated circuit, and the access request from any circuit based on the measured data amount. Switch whether to perform access based on. Thereby, a plurality of users can use the integrated circuit fairly.

また、制御装置は、実行中のアクセスによって転送したデータ量が実行中のアクセスについてのアクセス要求の要求元についての規制値を超えた場合、実行対象となるアクセス要求を切り替える。これにより、複数の利用者が集積回路を公平に利用可能となる。   The control device switches the access request to be executed when the amount of data transferred by the access being executed exceeds the restriction value for the request source of the access request for the access being executed. Thereby, a plurality of users can use the integrated circuit fairly.

以上説明したように、本実施の形態にかかる制御装置は、ある利用者から他の利用者に割り当てられた該FPGA内の回路へアクセスさせない。これにより、他の利用者に割り当てられたFPGA内の回路がある利用者によって干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。   As described above, the control device according to the present embodiment does not allow a user to access a circuit in the FPGA assigned to another user. Thereby, it is possible to prevent the circuit in the FPGA assigned to another user from being interfered by a certain user. Therefore, the processing environment of each user can be made to function stably.

また、本実施の形態にかかる制御装置は、ある利用者からのアクセス要求のアクセス先が要求元に割り当てられた集積回路内の回路でない場合に、要求元の利用者に割り当てられた回路へのアクセス要求に補正する。これにより、他の利用者に割り当てられた集積回路内の回路がある利用者によって干渉されるのを防ぐことができる。したがって、各利用者の処理環境を安定して機能させることができる。   In addition, the control device according to the present embodiment, when the access destination of the access request from a certain user is not a circuit in the integrated circuit assigned to the request source, to the circuit assigned to the request source user. Correct for access requests. Thereby, it is possible to prevent a circuit in an integrated circuit assigned to another user from being interfered by a certain user. Therefore, the processing environment of each user can be made to function stably.

また、制御装置は1つのバスを介して集積回路と接続されてあるため、複数の利用者から集積回路へのアクセス要求が重なる可能性がある。そのため、本実施の形態にかかる制御装置は、複数のアクセス要求がある場合、受け付けた時刻が早いアクセス要求に基づくアクセスが終了するのを待機して、受け付けた時刻が遅いアクセス要求に基づくアクセスを実行する。これにより、アクセス要求の発生順にアクセス要求に基づくアクセスを実行することができる。   In addition, since the control device is connected to the integrated circuit via a single bus, there is a possibility that requests for access to the integrated circuit from a plurality of users may overlap. Therefore, when there are a plurality of access requests, the control device according to the present embodiment waits for the access based on the access request with the earlier received time to end, and performs the access based on the access request with the later received time. Run. Thereby, access based on the access requests can be executed in the order in which the access requests are generated.

また、いずれかの利用者が集積回路と制御装置とを接続するバスを連続して使用すると、他の利用者が集積回路を利用できなくなる。そこで、本実施の形態にかかる制御装置は、利用者ごとに利用者から集積回路内の回路への転送量を計測し、計測したデータ量に基づいて、いずれの利用者からのアクセス要求に基づくアクセスを実行するかを切り替える。これにより、複数の利用者が集積回路を公平に利用可能となる。   In addition, if any one of the users continuously uses the bus connecting the integrated circuit and the control device, other users cannot use the integrated circuit. Therefore, the control device according to the present embodiment measures the transfer amount from the user to the circuit in the integrated circuit for each user, and based on the access request from any user based on the measured data amount. Switch whether to perform access. Thereby, a plurality of users can use the integrated circuit fairly.

また、制御装置は、実行中のアクセスによって転送したデータ量が実行中のアクセスについてのアクセス要求の要求元についての規制値を超えた場合、実行対象となるアクセス要求を切り替える。これにより、複数の利用者が集積回路を公平に利用可能となる。   The control device switches the access request to be executed when the amount of data transferred by the access being executed exceeds the restriction value for the request source of the access request for the access being executed. Thereby, a plurality of users can use the integrated circuit fairly.

また、本実施の形態によれば、サーバ上で実行される仮想マシンとFPGAとの両方において、利用者間の処理環境が分離され、共用リソースが公平に利用可能となる。そのため、複数の利用者が同一のサーバ、FPGAを、安定した処理環境で共同利用可能となる。   Further, according to the present embodiment, the processing environment between users is separated in both the virtual machine and the FPGA executed on the server, and the shared resource can be used fairly. Therefore, a plurality of users can share the same server and FPGA in a stable processing environment.

また、クラウドコンピューティングのようにFPGAを複数の利用者によって共同で利用可能とすることにより、利用者の各々にFPGAを割り当てる場合と比較して、投資コストや運用コストを削減することができる。運用コストとは、例えば、時間的なコストなどである。また、本実施の形態で説明したシステムをASP(Application Service Provider)サービスとして提供可能であれば、様々な利用者が利用できるようになる。   Further, by enabling the FPGA to be used jointly by a plurality of users as in cloud computing, it is possible to reduce the investment cost and the operation cost compared to the case where the FPGA is assigned to each user. The operation cost is, for example, a time cost. In addition, if the system described in this embodiment can be provided as an ASP (Application Service Provider) service, various users can use it.

また、例えば、専用ハードウェアやGPGPU(General−Purpose computing on Graphics Processing Unit)などの電力効率のよいハードウェアであっても、それらのハードウェアに適合しない処理であれば、消費電力あたりの性能が低下する可能性がある。専用ハードウェアやGPGPUなどに適さない処理であっても、FPGAを利用することにより、消費電力あたりの処理性能を向上させることが可能となる。そのため、本実施の形態におけるシステムでは、専用ハードウェアやGPGPUなどを利用する場合と比較して、電力効率を向上させることができる。また、専用ハードウェアを開発するほどの需要がないような回路であっても、FPGAによって実現することができる。   In addition, for example, even power-efficient hardware such as dedicated hardware or GPGPU (General-Purpose computing on Graphics Processing Unit) has performance per unit of power if it is not compatible with those hardware. May be reduced. Even if the processing is not suitable for dedicated hardware or GPGPU, the processing performance per power consumption can be improved by using the FPGA. Therefore, in the system according to the present embodiment, power efficiency can be improved as compared with the case where dedicated hardware, GPGPU, or the like is used. Even a circuit that does not have enough demand to develop dedicated hardware can be realized by the FPGA.

また、本実施の形態では、利用者がユーザモジュールを設計する例を挙げたが、予め用意されたユーザモジュールを利用者が選択して利用してもよい。   In this embodiment, an example in which a user designs a user module has been described. However, a user module prepared in advance may be selected and used.

上述した実施の形態に関し、さらに以下の付記を開示する。   The following additional notes are disclosed with respect to the embodiment described above.

(付記1)内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路であって、
前記部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能なアクセス部と、
前記部分回路のうちのいずれかからのアクセス要求を受け付ける受け付け部と、
前記受け付け部が受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない制御部と、
を有することを特徴とする集積回路。
(Appendix 1) An integrated circuit in which an internal circuit can be reconfigured, wherein partial circuits assigned to each of a plurality of computers are configured in different areas,
An access unit capable of accessing each of the different storage areas assigned to each of the partial circuits;
A receiving unit that receives an access request from any of the partial circuits;
When the access destination indicated by the access request received by the accepting unit is a storage area assigned to the partial circuit that is the request source of the access request, the access unit performs access based on the access request and is assigned If it is not the storage area, a control unit that does not allow the access unit to execute access based on the access request,
An integrated circuit comprising:

(付記2)前記制御部は、割り当てられた前記記憶領域でない場合、前記アクセス要求を前記要求元の部分回路に割り当てられた前記記憶領域へのアクセス要求に補正し、補正した前記アクセス要求を前記アクセス部に実行させることを特徴とする付記1に記載の集積回路。 (Supplementary Note 2) If the storage unit is not the allocated storage area, the control unit corrects the access request to an access request to the storage area allocated to the requesting partial circuit, and the corrected access request is The integrated circuit according to appendix 1, wherein the integrated circuit is executed by an access unit.

(付記3)前記制御部は、割り当てられた前記記憶領域である場合において、前記部分回路のうちの前記要求元の部分回路(以下、「第1部分回路」と称する。)と異なる第2部分回路からのアクセス要求に基づくアクセスを前記アクセス部に実行させている場合、前記第2部分回路からの前記アクセス要求に基づくアクセスが終了した後に、前記第1部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させることを特徴とする付記1または2に記載の集積回路。 (Supplementary Note 3) In the case where the control unit is the allocated storage area, a second part different from the requesting partial circuit (hereinafter referred to as “first partial circuit”) of the partial circuits. When the access unit executes an access based on an access request from a circuit, an access based on the access request from the first partial circuit after the access based on the access request from the second partial circuit is completed 3. The integrated circuit according to appendix 1 or 2, wherein the access unit is caused to execute.

(付記4)前記第1部分回路からの前記アクセス要求に基づく前記アクセス部による所定時間当たりの第1データ量と、前記第2部分回路からの前記アクセス要求に基づく前記アクセス部による前記所定時間当たりの第2データ量と、を計測する計測部を有し、
前記制御部は、前記計測部が計測した前記第1データ量と、前記計測部が計測した前記第2データ量と、に基づいて、前記第1部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させる第1状態と、前記第2部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させる第2状態と、を切り替えることを特徴とする付記3に記載の集積回路。
(Supplementary Note 4) The first data amount per predetermined time by the access unit based on the access request from the first partial circuit, and the predetermined time by the access unit based on the access request from the second partial circuit A measurement unit that measures the second data amount of
The control unit performs access based on the access request from the first partial circuit based on the first data amount measured by the measurement unit and the second data amount measured by the measurement unit. The integrated circuit according to appendix 3, wherein a first state to be executed by the access unit and a second state in which the access unit executes an access based on the access request from the second partial circuit are switched.

(付記5)前記制御部は、前記第1データ量と前記第1部分回路についての閾値との比較結果と、前記第2データ量と前記第2部分回路についての閾値との比較結果と、に基づいて、前記第1状態と、前記第2状態と、を切り替えることを特徴とする付記4に記載の集積回路。 (Additional remark 5) The said control part is compared with the comparison result with the threshold value about the said 1st data amount and the said 1st partial circuit, and the comparison result with the said 2nd data amount and the threshold value about the said 2nd partial circuit. The integrated circuit according to appendix 4, wherein the first state and the second state are switched based on the first state.

(付記6)前記複数のコンピュータの各々が、物理的な装置または仮想的な装置のいずれかであることを特徴とする付記1〜5のいずれか一つに記載の集積回路。 (Supplementary note 6) The integrated circuit according to any one of Supplementary notes 1 to 5, wherein each of the plurality of computers is either a physical device or a virtual device.

(付記7)内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置であって、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付ける受け付け部と、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない制御を行う制御部と、
を有することを特徴とする制御装置。
(Appendix 7) An integrated circuit capable of reconfiguring an internal circuit, wherein the control circuit is connected to an integrated circuit in which partial circuits assigned to each of a plurality of computers are configured in different regions,
A receiving unit that receives an access request to the integrated circuit from any of the plurality of computers;
When the access destination indicated by the received access request is an area in which a partial circuit assigned to the requesting computer of the access request is configured, access based on the access request is executed, and the configured area If not, a control unit that performs control not to execute access based on the access request
A control device comprising:

(付記8)前記制御部は、構成された前記領域でない場合に、前記アクセス要求を前記要求元のコンピュータに割り当てられた部分回路が構成された領域へのアクセス要求に補正し、補正した前記アクセス要求を実行することを特徴とする付記7に記載の制御装置。 (Supplementary note 8) If the control unit is not the configured area, the control unit corrects the access request to an access request to the area where the partial circuit allocated to the requesting computer is configured, and corrects the access The control device according to appendix 7, wherein the control is executed.

(付記9)前記制御部は、構成された前記領域である場合において、前記コンピュータのうちの前記要求元のコンピュータ(以下、「第1コンピュータ」と称する。)と異なる第2コンピュータからのアクセス要求に基づくアクセスを実行している場合、前記第2コンピュータからの前記アクセス要求に基づくアクセスが終了した後に、前記第1コンピュータからの前記アクセス要求に基づくアクセスを実行することを特徴とする付記7または8に記載の制御装置。 (Additional remark 9) When the said control part is the area | region comprised, the access request from the 2nd computer different from the said requesting computer (henceforth a "1st computer") among the said computers. Or an access based on the access request from the first computer after the access based on the access request from the second computer is completed. 8. The control device according to 8.

(付記10)前記第1コンピュータからの前記アクセス要求に基づいて転送した所定時間当たりの第1データ量と、前記第2コンピュータからの前記アクセス要求に基づいて転送した前記所定時間当たりの第2データ量と、を計測する計測部を有し、
前記制御部は、前記第2コンピュータからのアクセス要求に基づくアクセスを実行している場合において、前記計測部が計測した前記第1データ量と、前記計測部が計測した前記第2データ量と、に基づいて、前記第1コンピュータからの前記アクセス要求に基づくアクセスを実行する第1状態と、前記第2コンピュータからの前記アクセス要求に基づくアクセスを実行する第2状態と、を切り替えることを特徴とする付記9に記載の制御装置。
(Supplementary Note 10) The first data amount per predetermined time transferred based on the access request from the first computer and the second data per predetermined time transferred based on the access request from the second computer A measuring unit that measures the quantity,
The control unit, when executing an access based on an access request from the second computer, the first data amount measured by the measurement unit, the second data amount measured by the measurement unit, And switching between a first state in which access based on the access request from the first computer is executed and a second state in which access based on the access request from the second computer is executed. The control device according to appendix 9.

(付記11)前記制御部は、前記第1データ量と前記第1コンピュータについての閾値との比較結果と、前記第2データ量と前記第2コンピュータについての閾値との比較結果と、に基づいて、前記第1状態と前記第2状態とを切り替えることを特徴とする付記10に記載の制御装置。 (Additional remark 11) The said control part is based on the comparison result of the said 1st data amount and the threshold value about the said 1st computer, and the comparison result of the said 2nd data amount and the threshold value about the said 2nd computer. The control device according to appendix 10, wherein the control unit switches between the first state and the second state.

(付記12)前記集積回路は、前記第1コンピュータからの前記アクセス要求に基づいて転送した所定時間当たりの第1データ量と、前記第2コンピュータからの前記アクセス要求に基づいて転送した前記所定時間当たりの第2データ量と、を計測する計測部を有し、
前記制御部は、前記第2コンピュータからのアクセス要求に基づくアクセスを実行している場合において、前記計測部が計測した前記第1データ量と、前記計測部が計測した前記第2データ量と、に基づいて、前記第1コンピュータからの前記アクセス要求に基づくアクセスを実行する第1状態と、前記第2コンピュータからの前記アクセス要求に基づくアクセスを実行する第2状態と、を切り替えることを特徴とする付記9に記載の制御装置。
(Supplementary Note 12) The integrated circuit transfers the first data amount per predetermined time transferred based on the access request from the first computer and the predetermined time transferred based on the access request from the second computer. A measurement unit for measuring the second data amount per hit,
The control unit, when executing an access based on an access request from the second computer, the first data amount measured by the measurement unit, the second data amount measured by the measurement unit, And switching between a first state in which access based on the access request from the first computer is executed and a second state in which access based on the access request from the second computer is executed. The control device according to appendix 9.

(付記13)前記複数のコンピュータの各々が、物理的な装置または仮想的な装置のいずれかであることを特徴とする付記7〜12のいずれか一つに記載の制御装置。 (Supplementary note 13) The control device according to any one of supplementary notes 7 to 12, wherein each of the plurality of computers is either a physical device or a virtual device.

(付記14)内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路であって、前記部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能なアクセス部を有する集積回路が、
前記部分回路のうちのいずれかからのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない、
処理を実行することを特徴とする制御方法。
(Supplementary Note 14) An integrated circuit in which internal circuits can be reconfigured, wherein the partial circuits allocated to each of the plurality of computers are configured in different areas, and are allocated to each of the partial circuits. An integrated circuit having an access unit accessible to each of the different storage areas
Accepting an access request from any of the partial circuits;
When the access destination indicated by the received access request is a storage area assigned to the partial circuit that is the request source of the access request, the access unit executes access based on the access request, and the assigned storage area If not, do not allow the access unit to perform access based on the access request,
A control method characterized by executing processing.

(付記15)内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置が、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行することを特徴とする制御方法。
(Supplementary Note 15) An integrated circuit in which an internal circuit can be reconfigured, and a control device to which an integrated circuit in which partial circuits assigned to each of a plurality of computers are configured in different regions is connected,
Receiving an access request to the integrated circuit from any of the plurality of computers;
When the access destination indicated by the received access request is an area in which a partial circuit assigned to the requesting computer of the access request is configured, access based on the access request is executed, and the configured area If not, do not perform access based on the access request,
A control method characterized by executing processing.

(付記16)内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置に、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行させることを特徴とする制御プログラム。
(Supplementary Note 16) An integrated circuit capable of reconfiguring an internal circuit, wherein a partial circuit assigned to each of a plurality of computers is connected to an integrated circuit configured in a different area,
Receiving an access request to the integrated circuit from any of the plurality of computers;
When the access destination indicated by the received access request is an area in which a partial circuit assigned to the requesting computer of the access request is configured, access based on the access request is executed, and the configured area If not, do not perform access based on the access request,
A control program characterized by causing a process to be executed.

(付記17)内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置に、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行させる制御プログラムを記録したことを特徴とする記録媒体。
(Supplementary Note 17) An integrated circuit in which an internal circuit can be reconfigured, and a control device to which an integrated circuit in which partial circuits assigned to each of a plurality of computers are configured in different regions is connected,
Receiving an access request to the integrated circuit from any of the plurality of computers;
When the access destination indicated by the received access request is an area in which a partial circuit assigned to the requesting computer of the access request is configured, access based on the access request is executed, and the configured area If not, do not perform access based on the access request,
A recording medium on which a control program for executing processing is recorded.

100 システム
101 FPGA
102 ユーザモジュール
103 管理モジュール
104 アクセス部
105,211 受け付け部
106,212 制御部
111 サーバ
112 記憶領域
121 コンピュータ
1101 計測部
1403 DMA回路
1406 制御回路
1412 累積データ量カウンタ
1413 アクセス許可設定レジスタ
VM 仮想マシン
100 system 101 FPGA
DESCRIPTION OF SYMBOLS 102 User module 103 Management module 104 Access part 105, 211 Acceptance part 106, 212 Control part 111 Server 112 Storage area 121 Computer 1101 Measurement part 1403 DMA circuit 1406 Control circuit 1412 Cumulative data amount counter 1413 Access permission setting register VM Virtual machine

Claims (13)

内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路であって、
前記部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能なアクセス部と、
前記部分回路のうちのいずれかからのアクセス要求を受け付ける受け付け部と、
前記受け付け部が受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない制御部と、
を有することを特徴とする集積回路。
An integrated circuit capable of reconfiguring an internal circuit, wherein the partial circuits assigned to each of a plurality of computers are configured in different areas,
An access unit capable of accessing each of the different storage areas assigned to each of the partial circuits;
A receiving unit that receives an access request from any of the partial circuits;
When the access destination indicated by the access request received by the accepting unit is a storage area assigned to the partial circuit that is the request source of the access request, the access unit performs access based on the access request and is assigned If it is not the storage area, a control unit that does not allow the access unit to execute access based on the access request,
An integrated circuit comprising:
前記制御部は、割り当てられた前記記憶領域である場合において、前記部分回路のうちの前記要求元の部分回路(以下、「第1部分回路」と称する。)と異なる第2部分回路からのアクセス要求に基づくアクセスを前記アクセス部に実行させている場合、前記第2部分回路からの前記アクセス要求に基づくアクセスが終了した後に、前記第1部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させることを特徴とする請求項1に記載の集積回路。   In the case where the control unit is the allocated storage area, the control unit accesses from a second partial circuit different from the requesting partial circuit (hereinafter referred to as “first partial circuit”) of the partial circuits. When the access unit performs access based on a request, the access unit performs access based on the access request from the first partial circuit after the access based on the access request from the second partial circuit ends. The integrated circuit according to claim 1, wherein the integrated circuit is executed. 前記第1部分回路からの前記アクセス要求に基づく前記アクセス部による所定時間当たりの第1データ量と、前記第2部分回路からの前記アクセス要求に基づく前記アクセス部による前記所定時間当たりの第2データ量と、を計測する計測部を有し、
前記制御部は、前記計測部が計測した前記第1データ量と、前記計測部が計測した前記第2データ量と、に基づいて、前記第1部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させる第1状態と、前記第2部分回路からの前記アクセス要求に基づくアクセスを前記アクセス部に実行させる第2状態と、を切り替えることを特徴とする請求項2に記載の集積回路。
The first data amount per predetermined time by the access unit based on the access request from the first partial circuit, and the second data per predetermined time by the access unit based on the access request from the second partial circuit. A measuring unit that measures the quantity,
The control unit performs access based on the access request from the first partial circuit based on the first data amount measured by the measurement unit and the second data amount measured by the measurement unit. 3. The integrated circuit according to claim 2, wherein the integrated circuit is switched between a first state to be executed by the access unit and a second state in which the access unit executes an access based on the access request from the second partial circuit. .
前記制御部は、前記第1状態の場合において、前記第1データ量前記第1部分回路についての閾値を超えた場合、前記第2状態に切り替え、前記第2状態の場合において、前記第2データ量前記第2部分回路についての閾値を超えた場合、前記第1状態に切り替えることを特徴とする請求項3に記載の集積回路。 Wherein, in the case of the first state, when the first data amount exceeds the threshold value for said first partial circuit, switching to the second state, in the case of the second state, the second 4. The integrated circuit according to claim 3 , wherein when the amount of data exceeds a threshold value for the second partial circuit, the integrated circuit is switched to the first state . 前記複数のコンピュータの各々が、物理的な装置または仮想的な装置のいずれかであることを特徴とする請求項1〜4のいずれか一つに記載の集積回路。   The integrated circuit according to claim 1, wherein each of the plurality of computers is one of a physical device and a virtual device. 内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置であって、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付ける受け付け部と、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない制御を行う制御部と、
を有することを特徴とする制御装置。
An integrated circuit capable of reconfiguring an internal circuit, wherein a control circuit is connected to an integrated circuit in which partial circuits assigned to each of a plurality of computers are configured in different regions,
A receiving unit that receives an access request to the integrated circuit from any of the plurality of computers;
When the access destination indicated by the received access request is an area in which a partial circuit assigned to the requesting computer of the access request is configured, access based on the access request is executed, and the configured area If not, a control unit that performs control not to perform access based on the access request;
A control device comprising:
前記制御部は、構成された前記領域である場合において、前記コンピュータのうちの前記要求元のコンピュータ(以下、「第1コンピュータ」と称する。)と異なる第2コンピュータからのアクセス要求に基づくアクセスを実行している場合、前記第2コンピュータからの前記アクセス要求に基づくアクセスが終了した後に、前記第1コンピュータからの前記アクセス要求に基づくアクセスを実行することを特徴とする請求項6に記載の制御装置。   In the case of the configured area, the control unit performs access based on an access request from a second computer different from the requesting computer (hereinafter referred to as “first computer”) of the computers. 7. The control according to claim 6, wherein when executing, the access based on the access request from the first computer is executed after the access based on the access request from the second computer is completed. apparatus. 前記第1コンピュータからの前記アクセス要求に基づいて転送した所定時間当たりの第1データ量と、前記第2コンピュータからの前記アクセス要求に基づいて転送した前記所定時間当たりの第2データ量と、を計測する計測部を有し、
前記制御部は、前記第2コンピュータからのアクセス要求に基づくアクセスを実行している場合において、前記計測部が計測した前記第1データ量と、前記計測部が計測した前記第2データ量と、に基づいて、前記第1コンピュータからの前記アクセス要求に基づくアクセスを実行する第1状態と、前記第2コンピュータからの前記アクセス要求に基づくアクセスを実行する第2状態と、を切り替えることを特徴とする請求項7に記載の制御装置。
A first data amount per predetermined time transferred based on the access request from the first computer and a second data amount transferred per predetermined time based on the access request from the second computer; Has a measuring unit to measure,
The control unit, when executing an access based on an access request from the second computer, the first data amount measured by the measurement unit, the second data amount measured by the measurement unit, And switching between a first state in which access based on the access request from the first computer is executed and a second state in which access based on the access request from the second computer is executed. The control device according to claim 7.
前記制御部は、前記第1状態の場合において、前記第1データ量前記第1コンピュータについての閾値を超えた場合、前記第2状態に切り替え、前記第2状態の場合において、前記第2データ量前記第2コンピュータについての閾値を超えた場合、前記第1状態に切り替えることを特徴とする請求項8に記載の制御装置。 Wherein, in the case of the first state, when the first data amount exceeds the threshold value for said first computer, switch to the second state, in the case of the second state, the second data If the amount exceeds the threshold value for said second computer control device according to claim 8, characterized in that switching to the first state. 前記複数のコンピュータの各々が、物理的な装置または仮想的な装置のいずれかであることを特徴とする請求項6〜9のいずれか一つに記載の制御装置。   The control device according to claim 6, wherein each of the plurality of computers is either a physical device or a virtual device. 内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路であって、前記部分回路の各々に割り当てられた異なる記憶領域の各々にアクセス可能なアクセス部を有する集積回路が、
前記部分回路のうちのいずれかからのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が前記アクセス要求の要求元の部分回路に割り当てられた記憶領域である場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させ、割り当てられた前記記憶領域でない場合は、前記アクセス要求に基づくアクセスを前記アクセス部に実行させない、
処理を実行することを特徴とする制御方法。
An integrated circuit capable of reconfiguring an internal circuit, wherein the partial circuits assigned to each of a plurality of computers are integrated circuits in different areas, and different memories assigned to each of the partial circuits An integrated circuit having an access portion accessible to each of the regions;
Accepting an access request from any of the partial circuits;
When the access destination indicated by the received access request is a storage area assigned to the partial circuit that is the request source of the access request, the access unit executes access based on the access request, and the assigned storage area If not, do not allow the access unit to perform access based on the access request,
A control method characterized by executing processing.
内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置が、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行することを特徴とする制御方法。
An integrated circuit in which an internal circuit can be reconfigured, and a control device to which an integrated circuit in which partial circuits assigned to each of a plurality of computers are configured in different regions is connected,
Receiving an access request to the integrated circuit from any of the plurality of computers;
When the access destination indicated by the received access request is an area in which a partial circuit assigned to the requesting computer of the access request is configured, access based on the access request is executed, and the configured area If not, do not perform access based on the access request,
A control method characterized by executing processing.
内部の回路を再構成可能な集積回路であって、複数のコンピュータの各々に割り当てられた部分回路が各々異なる領域に構成された集積回路が接続された制御装置に、
前記複数のコンピュータのうちのいずれかから前記集積回路へのアクセス要求を受け付け、
受け付けた前記アクセス要求が示すアクセス先が、前記アクセス要求の要求元のコンピュータに割り当てられた部分回路が構成された領域である場合は、前記アクセス要求に基づくアクセスを実行し、構成された前記領域でない場合は、前記アクセス要求に基づくアクセスを実行しない、
処理を実行させることを特徴とする制御プログラム。
An integrated circuit in which an internal circuit can be reconfigured, wherein a partial circuit assigned to each of a plurality of computers is connected to an integrated circuit configured in a different area,
Receiving an access request to the integrated circuit from any of the plurality of computers;
When the access destination indicated by the received access request is an area in which a partial circuit assigned to the requesting computer of the access request is configured, access based on the access request is executed, and the configured area If not, do not perform access based on the access request,
A control program characterized by causing a process to be executed.
JP2013109394A 2013-05-23 2013-05-23 Integrated circuit, control apparatus, control method, and control program Active JP6102511B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013109394A JP6102511B2 (en) 2013-05-23 2013-05-23 Integrated circuit, control apparatus, control method, and control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013109394A JP6102511B2 (en) 2013-05-23 2013-05-23 Integrated circuit, control apparatus, control method, and control program

Publications (2)

Publication Number Publication Date
JP2014230174A JP2014230174A (en) 2014-12-08
JP6102511B2 true JP6102511B2 (en) 2017-03-29

Family

ID=52129630

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013109394A Active JP6102511B2 (en) 2013-05-23 2013-05-23 Integrated circuit, control apparatus, control method, and control program

Country Status (1)

Country Link
JP (1) JP6102511B2 (en)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
JP6516489B2 (en) * 2015-01-29 2019-05-22 キヤノン株式会社 Information processing device
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
JP6610271B2 (en) * 2016-01-08 2019-11-27 富士通株式会社 Control circuit, data processing apparatus, and logic circuit management method
JP6620595B2 (en) * 2016-02-25 2019-12-18 富士通株式会社 Information processing system, information processing apparatus, management apparatus, processing program, and processing method
JP6563363B2 (en) * 2016-05-13 2019-08-21 日本電信電話株式会社 Setting server, setting method and setting program
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10338135B2 (en) 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US10282330B2 (en) 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319627A (en) * 1994-05-24 1995-12-08 Mitsubishi Electric Corp External storage device
JP4272275B2 (en) * 1998-04-28 2009-06-03 株式会社日立製作所 Storage subsystem
JP2001075853A (en) * 1999-09-03 2001-03-23 Hitachi Ltd Computer system, and computer and storage device used for the computer system
JP3837953B2 (en) * 1999-03-12 2006-10-25 株式会社日立製作所 Computer system
JP2001306343A (en) * 2000-04-21 2001-11-02 Fujitsu I-Network Systems Ltd System for device with fpga
JP2003233510A (en) * 2002-02-08 2003-08-22 Fujitsu Ltd Logic verification method and device for therefor
JP2004030437A (en) * 2002-06-27 2004-01-29 Ntt Me Corp Device and method for managing data and computer program
JP4304308B2 (en) * 2004-06-15 2009-07-29 日本電気株式会社 Storage device and logical storage device allocation control method
JP2006333496A (en) * 2006-06-22 2006-12-07 Fuji Xerox Co Ltd Programmable logic circuit device and information processing system
JP2010282422A (en) * 2009-06-04 2010-12-16 Toshiba Corp Data storage device and data transfer control method
JP5589479B2 (en) * 2010-03-25 2014-09-17 富士ゼロックス株式会社 Data processing device

Also Published As

Publication number Publication date
JP2014230174A (en) 2014-12-08

Similar Documents

Publication Publication Date Title
JP6102511B2 (en) Integrated circuit, control apparatus, control method, and control program
KR102268722B1 (en) Data access apparatus and operating method thereof
JP5911985B2 (en) Providing hardware support for virtual memory shared between local and remote physical memory
CN103080912B (en) Microprocessor system and by Memory Management Unit thereon and management method
KR102240774B1 (en) Method for using local bmc to allocate shared gpu resources inside nvme over fabrics system
US20090271172A1 (en) Emulating A Computer Run Time Environment
US10289785B1 (en) Platform architecture creation for a system-on-chip
KR20200078331A (en) System and method for offloading application functions to a device
CN101425966A (en) Network-on-chip and use network-on-chip carry out the method for data processing
CN102119508B (en) Presenting multi-function devices behind a switch hierarchy as a single function device
CN101876954B (en) Virtual machine control system and working method thereof
CN102934096A (en) Accelerating memory operations using virtualization information
CN114580344A (en) Test excitation generation method, verification system and related equipment
Marcus et al. The MPRACE framework: An open source stack for communication with custom FPGA-based accelerators
JP5756554B2 (en) Semiconductor device
KR101054231B1 (en) How to Create Lightweight, High-Yield Test Cases for Cache / TLB Interference and Diagnostic Tests
US20080022052A1 (en) Bus Coupled Multiprocessor
US11347512B1 (en) Substitution through protocol to protocol translation
Nadig et al. Venice: Improving Solid-State Drive Parallelism at Low Cost via Conflict-Free Accesses
US9032405B2 (en) Systems and method for assigning executable functions to available processors in a multiprocessing environment
US11119787B1 (en) Non-intrusive hardware profiling
US20130238884A1 (en) Computer-readable recording medium storing memory dump program, information processing apparatus, and memory dump method
JP5104501B2 (en) Virtual machine system, host computer, virtual machine construction method and program
US11003378B2 (en) Memory-fabric-based data-mover-enabled memory tiering system
Wu et al. A hardware platform for exploring predictable cache coherence protocols for real-time multicores

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161025

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161101

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170104

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170213

R150 Certificate of patent or registration of utility model

Ref document number: 6102511

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150