CN112527494A - 信息处理设备和方法以及非暂态计算机可读记录介质 - Google Patents
信息处理设备和方法以及非暂态计算机可读记录介质 Download PDFInfo
- Publication number
- CN112527494A CN112527494A CN202010968057.6A CN202010968057A CN112527494A CN 112527494 A CN112527494 A CN 112527494A CN 202010968057 A CN202010968057 A CN 202010968057A CN 112527494 A CN112527494 A CN 112527494A
- Authority
- CN
- China
- Prior art keywords
- data
- coprocessor
- reception buffer
- index
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000010365 information processing Effects 0.000 title claims abstract description 43
- 239000000872 buffer Substances 0.000 claims abstract description 201
- 238000012545 processing Methods 0.000 claims abstract description 172
- 230000015654 memory Effects 0.000 claims abstract description 83
- 230000008569 process Effects 0.000 claims description 40
- 238000003672 processing method Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 114
- 238000010586 diagram Methods 0.000 description 30
- 238000012546 transfer Methods 0.000 description 28
- 238000007726 management method Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 19
- 230000009471 action Effects 0.000 description 11
- 238000001914 filtration Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 6
- 230000006837 decompression Effects 0.000 description 5
- 230000000052 comparative effect Effects 0.000 description 4
- 238000013144 data compression Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005401 electroluminescence Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Information Transfer Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及信息处理设备和方法以及非暂态计算机可读记录介质。信息处理设备包括存储器和处理器,该存储器被配置成包括接收缓冲区,在该接收缓冲区中写入以在该信息处理设备中操作的虚拟机为目的地的数据,该处理器耦接至该存储器,并且被配置成:将接收缓冲区的第一存储区域连续地分配给作为虚拟交换机的中继处理的卸载目的地的第一协处理器,并且当从作为虚拟交换机的扩展处理的卸载目的地的第二协处理器接收到对接收缓冲区的分配请求时,将接收缓冲区的第二存储区域分配给第二协处理器。
Description
技术领域
本文讨论的实施方式涉及信息处理设备和信息处理方法。
背景技术
在信息处理领域中,使用在物理计算机(有时称为物理机器或物理主机)上操作多个虚拟计算机(有时称为虚拟机或虚拟主机)的虚拟化技术。每个虚拟机可以执行诸如OS(操作系统)的软件。使用虚拟化技术的物理机器执行用于管理多个虚拟机的软件。例如,被称为管理程序的软件可以将CPU(中央处理单元)的处理能力和RAM(随机存取存储器)的存储区域分配给多个虚拟机作为计算资源。
虚拟机可以经由以管理程序实现的被称为虚拟交换机的数据中继功能与其他虚拟机和其他物理机器通信。例如,提议通过将虚拟交换机的任务从主机机器卸载到网络接口卡(NIC)来减少主机机器上的计算负荷。
同时,在主机OS与客机OS之间的通信路径上部署用于负载分布的新的虚拟机的情况下,也提出了在新的虚拟机上操作主机OS上的后端驱动器同时保持缓冲区内容,从而在通信途中保持状态的同时动态地部署负载分布功能。
相关技术在例如日本公开特许公报第2015-039166号和第2016-170669号中公开。
发明内容
根据一个方面,本公开内容的目的是提供一种能够减少在总线上流动的数据量的信息处理设备和信息处理方法。
根据本发明的一个方面,信息处理设备包括存储器和处理器,该存储器被配置成包括接收缓冲区,在该接收缓冲区中写入以在该信息处理设备中操作的虚拟机为目的地的数据,该处理器耦接至该存储器,并且被配置成将接收缓冲区的第一存储区域连续地分配给作为虚拟交换机的中继处理的卸载目的地的第一协处理器,并且当从作为虚拟交换机的扩展处理的卸载目的地的第二协处理器接收到对接收缓冲区的分配请求时,将接收缓冲区的第二存储区域分配给第二协处理器。
附图说明
图1是示出根据第一实施方式的信息处理设备的处理示例的图;
图2是示出根据第二实施方式的信息处理系统的示例的图;
图3是示出服务器的硬件示例的框图;
图4是示出虚拟化机制的示例的图;
图5是示出虚拟交换机的卸载的示例的图;
图6是示出中继功能和扩展功能的卸载的示例的图;
图7是示出服务器的功能的示例的图;
图8是示出服务器的功能的示例(继续)的图;
图9是示出预留单元的处理的示例的图;
图10是示出由仲裁单元进行的分配处理的示例的图;
图11是示出由仲裁单元进行的分配处理的示例的图(继续);
图12是示出由仲裁单元进行的仲裁处理的示例的图;
图13是示出由仲裁单元进行的仲裁处理的示例的图(继续);
图14是示出用于中继功能的FPGA的处理的示例的流程图;
图15是示出用于扩展功能的FPGA的处理的示例的流程图;
图16是示出中继功能FPGA的分配处理的示例的流程图;
图17是示出扩展功能FPGA的分配处理的示例的流程图;
图18是示出仲裁处理的示例的流程图;
图19是示出虚拟机的接收处理的示例的流程图;
图20是示出经由总线的通信的示例的图;以及
图21是示出经由总线的通信的比较示例的图。
具体实施方式
虚拟交换机的功能可以从物理机器的处理器卸载到协处理器,诸如FPGA(现场可编程门阵列)或智能NIC(网络接口卡)。此处,除了中继功能之外,虚拟交换机还可以执行扩展功能诸如密码处理和数据压缩。同时,协处理器的计算资源相对小,并且可能难以将中继功能和扩展功能两者都卸载至单个协处理器。因此,可以想到将中继功能和扩展功能卸载到分开的协处理器。
虚拟机访问的RAM上的接收缓冲区可以通过单个队列实现。例如,可以想到,在每个功能的卸载目的地的多个协处理器之中,仅负责作为主功能的中继功能的协处理器负责将以物理机器上的虚拟机为目的地的接收数据写入接收缓冲区的处理。在这种情况下,负责中继功能的协处理器将接收数据之中作为扩展处理的目标的接收数据发送至负责扩展功能的另一协处理器,从该另一协处理器获取扩展处理之后的接收数据,并且将接收数据写入目的地虚拟机的接收缓冲区中。
但是,在该方法中,对于扩展处理目标的接收数据,在物理机器的内部总线上在协处理器之间发生从一个协处理器至另一个协处理器以及从另一个协处理器至一个协处理器的返回通信。为此,流过内部总线的数据量增加,使得内部总线的负载变高,结果,整个物理机器的性能可能劣化。
在下文中,将参照附图描述能够减少在总线上流动的数据量的技术的实施方式。
第一实施方式
图1是示出根据第一实施方式的信息处理设备的处理示例的图。信息处理设备1执行一个或更多个虚拟机。信息处理设备1执行例如管理程序(图1中未示出),并且通过管理程序的功能将信息处理设备1的计算资源分配给每个虚拟机。
信息处理设备1包括硬件10和软件20。硬件10包括存储器11、处理器12、协处理器13和协处理器14以及总线15。存储器11、处理器12以及协处理器13和14连接至总线15。硬件10还包括连接至网络的NIC(未示出)。软件20包括虚拟机21和管理程序(未示出)。
存储器11是主存储装置诸如RAM。存储器11包括接收缓冲区11a。接收缓冲区11a存储其目的地是虚拟机21的数据。接收缓冲区11a由单个队列实现。可以由协处理器13和14中的每一个在接收缓冲区11a中执行写操作。针对每个虚拟机设置接收缓冲区。除了存储器11之外,信息处理设备1还可以包括辅助存储装置诸如HDD(硬盘驱动器)或SSD(固态驱动器)。
处理器12是运算单元诸如CPU。处理器12还可以包括多个处理器的集合(多处理器)。处理器12执行存储在存储器11中的软件程序诸如虚拟机21和管理程序。处理器12控制将接收缓冲区11a的存储区域分配给协处理器13和14中的每一个。
协处理器13和14是用作由处理器12执行的虚拟交换机功能的卸载目的地的辅助运算单元。协处理器13和14能够将相应协处理器13和14的数据直接写入由处理器12分配的接收缓冲区11a的存储区域中。协处理器13和14由例如FPGA或智能NIC实现。虚拟交换机具有中继功能以及扩展功能诸如对接收数据的密码处理(加密或解密)和数据压缩处理(或解压缩处理),该中继功能指定接收数据以其为目的地的虚拟机。处理器12将虚拟交换机的中继功能卸载至协处理器13。处理器12将虚拟交换机的扩展功能卸载至协处理器14。卸载减少了处理器12上的负载。同时,多个协处理器可以是虚拟交换机的扩展功能的卸载目的地。
协处理器13包括中继处理单元13a。中继处理单元13a执行与虚拟交换机的中继功能有关的处理(中继处理)。中继处理单元13a对在信息处理设备1的NIC(未图示)上的物理端口处接收的数据进行中继。在接收到以在其自己的设备(例如信息处理设备1)中操作的虚拟机21为目的地的数据的情况下,中继处理单元13a确定该数据是否是与扩展功能相关的处理(扩展处理)的目标。在该数据是扩展处理的目标的情况下,中继处理单元13a经由总线15向协处理器14传送该数据。中继处理单元13a将在物理端口处接收到的以虚拟机21为目的地的数据之中的除了扩展处理的目标数据以外的数据写入接收缓冲区11a中的为协处理器13分配的存储区域(协处理器13的分配区域)。基于例如由协处理器13所保持的针对附加至该数据的标头信息等预先确定的规则信息,确定该数据是否是扩展处理的目标数据。
协处理器14包括扩展处理单元14a。扩展处理单元14a对从协处理器13接收的扩展处理的目标数据执行扩展处理。扩展处理是例如上述的密码处理(加密或解密)、数据压缩处理以及压缩数据的解压缩处理。协处理器14将经处理的数据写入接收缓冲区11a内的为协处理器14分配的存储区域(协处理器14的分配区域)中。
虚拟机21通过使用诸如存储器11和处理器12的资源来实现。虚拟机21通过卸载到协处理器13和14的虚拟交换机的功能与在信息处理设备1上或在另一信息处理设备上操作的虚拟机通信,或者与另一信息处理设备通信。虚拟机21获取存储在接收缓冲区11a中并且以虚拟机21为目的地的数据,并且处理该数据。虚拟机21释放接收缓冲区11a的存储经处理的数据的存储区域。由于虚拟机21由处理器12执行,因此可以说由虚拟机21执行的处理也是由处理器12执行的处理。
以这种方式,在信息处理设备1中,通常由处理器12执行的虚拟交换机的中继功能被卸载至协处理器13,并且伴随中继功能的虚拟交换机的扩展功能被卸载至协处理器14。然后,协处理器13和14二者都可以直接将数据写入虚拟机21的接收缓冲区11a。
因此,处理器12将接收缓冲区11a的第一存储区域连续地分配给作为虚拟交换机的中继处理的卸载目的地的协处理器13。在从作为虚拟交换机的扩展处理的卸载目的地的的协处理器14接收到对接收缓冲区11a的分配请求时,处理器12还将接收缓冲区11a的第二存储区域分配给协处理器14。
更具体地,处理器12将接收缓冲区11a的第一存储区域分配给协处理器13,并且在第一存储区域的至少一部分被释放时,处理器12将根据所释放的区域的大小的另外的存储区域分配给协处理器13。在从协处理器14接收到对接收缓冲区11a的分配请求时,处理器12将该分配请求所请求的大小的第二存储区域分配给协处理器14。例如,处理器12通过虚拟机21的功能,按照接收缓冲区11a的存储区域的分配顺序对写入存储区域中的数据进行处理。处理器12释放经处理的存储区域(例如,存储经处理的数据的存储区域)。
接下来,描述由处理器12将接收缓冲区11a分配给协处理器13和14的示例。在图1中,协处理器13可以被称为“协处理器#1”,并且协处理器14可以被称为“协处理器#2”。
例如,当虚拟机21被激活时,处理器12分配存储器11中的第一大小的区域作为虚拟机21的接收缓冲区11a(操作S1)。第一大小被设置为例如8。最初,接收缓冲区11a的整个区域是未分配区域。指示接收缓冲区11a的开始的索引(或地址)是0。指示接收缓冲区11a的结束的索引是8。接收缓冲区11a的未分配区域按从最小索引起的顺序被分配给每个协处理器。
处理器12将接收缓冲区11a的第一存储区域分配给协处理器13(操作S2)。例如,处理器12将预定的第二大小的区域分配给协处理器13。第二大小被设置为例如4。然后,处理器12将接收缓冲区11a中的索引i对应于0≤i<4的存储区域(第一存储区域)分配给协处理器13。可以预期,将连续生成从负责中继功能的协处理器13写入到接收缓冲区11a的数据。因此,处理器12将分配给协处理器13的存储区域(第一存储区域)保持为具有第二大小。
处理器12从协处理器14接收对缓冲区11a的分配请求。然后,处理器12将接收缓冲区11a的与包括在分配请求中的请求大小相对应的第二存储区域分配给协处理器14(操作S3)。通过向协处理器14分配必要的存储区域,可以有效地使用接收缓冲区11a。例如,当接收到扩展处理的目标数据时,协处理器14将对接收缓冲区11a的分配请求发送至处理器12,以便预留用于写入经扩展处理的数据的存储区域。协处理器14向处理器12指定包括与要写入的数据相对应的请求大小的分配请求。此处,作为示例,假设请求大小为2。然后,处理器12将接收缓冲区11a中对应于4≤i<6的存储区域(第二存储区域)分配给协处理器14。
此处,中继功能是伴随扩展功能的功能,并且并非所有由中继处理单元13a接收的接收数据都是扩展功能的目标。因此,当存在来自协处理器14的分配请求时,处理器12将与请求大小对应的第二存储区域分配给协处理器14。
例如,当从协处理器13接收到扩展处理的目标数据时,协处理器14可以开始对该数据的扩展处理,并且向处理器12通知对接收缓冲区11a的分配请求。由于扩展处理需要时间,因此通过在开始扩展处理的同时通知分配请求,可以将经处理的数据快速地写入接收缓冲区11a中。
处理器12(或由处理器12执行的虚拟机21)按照接收缓冲区11a的存储区域分配顺序处理写入存储区域中的数据。即,处理器12以FIFO(先进先出)过程处理写入接收缓冲区11a中的数据。例如,处理器12处理由协处理器13写入接收缓冲区11a的对应于0≤i<2的存储区域中的数据。此后,处理器12释放对应于0≤i<2的存储区域(操作S4)。由于处理器12已经释放了对应于0≤i<2的存储区域(大小为2),因此处理器向接收缓冲区11a的结束处的索引加2。然后,在接收缓冲区11a的开始处的索引变为2,并且在接收缓冲区11a的结束处的索引变为10。此处,在操作S4中释放的存储区域是分配给协处理器13的第一存储区域的一部分,协处理器13是中继功能的卸载目的地。因此,处理器12另外将与释放的存储区域的大小2相对应、与6≤i<8相对应的存储区域分配给协处理器13。以这种方式,第二大小的第一存储区域总是分配给协处理器13并且连续地分配给协处理器13。
随后,处理器12(或者由处理器12执行的虚拟机21)处理由协处理器13写入对应于例如2≤i<4的存储区域中的数据。此外,处理器12(或者由处理器12执行的虚拟机21)处理由协处理器14写入对应于例如4≤i<6的存储区域中的数据。处理器12释放对应于2≤i<6的存储区域(操作S5)。由于处理器12已经释放了对应于2≤i<6(大小为4)的存储区域,因此向接收缓冲区11a的结束处的索引加4。然后,在接收缓冲区11a的开始处的索引变为6,并且在结束处的索引变为14。此处,在操作S5中释放的与2≤i<4相对应的存储区域是分配给协处理器13的第一存储区域的一部分。因此,处理器12另外将与对应于2≤i<4的释放的存储区域的大小2相对应、与8≤i<10相对应的存储区域分配给协处理器13。此后,处理器12重复以上过程(当协处理器14发出分配请求时,执行与操作S3类似的处理)。
如上所述,根据信息处理设备1,接收缓冲区的第一存储区域被连续地分配给作为虚拟交换机的中继处理的卸载目的地的第一协处理器。在从作为虚拟交换机的扩展处理的卸载目的地的第二协处理器接收到接收缓冲区分配请求时,接收缓冲区的第二存储区域也被分配给第二协处理器。结果,可以减少在总线15上流动的数据量。
此处,由于数据按照接收的顺序被写入到作为单个队列的接收缓冲区11a中,并且由虚拟机21顺序处理,因此也认为接收缓冲区11a的存储区域仅分配给协处理器13和14之中的协处理器13。然而,在这种情况下,由于作为扩展处理的目标的接收数据被从协处理器13发送至协处理器14,然后被写入接收缓冲区11a中,因此发生从协处理器14至协处理器13的返回通信。因此,消耗了总线15的大频带,并且信息处理设备1的性能可能劣化。
相比之下,可以想到将数据从两个协处理器13和14直接写入接收缓冲区11a。在可以将数据从两个协处理器13和14直接写入接收缓冲区11a的情况下,不会发生上述协处理器13与协处理器14之间的返回通信,从而降低总线15的频带消耗。然而此时,不影响使用接收缓冲区11a(单个队列)的虚拟机21的处理的效应的实现方法存在问题。这是因为,当涉及虚拟机侧的修改时,可能不能使用由第三方提供的虚拟机图像,并且可能损害作为虚拟化的优点的便携性。
因此,处理器12向作为中继功能的卸载目的地的协处理器13连续地分配预定大小的存储区域,并且当存在来自协处理器14的分配请求时,向协处理器14分配存储区域。
向协处理器13连续地分配预定大小的存储区域的原因是,期望连续地生成从负责中继功能的协处理器13写入接收缓冲区11a中的数据。另外,响应于分配请求向协处理器14分配存储区域的原因是,中继功能是伴随扩展功能的功能,并且并非所有由中继处理单元13a从外部接收的数据都是扩展功能的目标。
例如,可以简单地想到,总是将预定大小的存储区域分配给协处理器13和14两者。然而,在通过FIFO处理接收缓冲区11a的情况下,当在未写入数据的存储区域之后存在数据写入完成的另一存储区域时,写入该另一存储区域中的数据可能不被处理,除非在未写入数据的存储区域中完成数据写入。因此,例如,在向协处理器14的分配区域的数据写入发生之前,写入在协处理器14的分配区域之后的协处理器13的分配区域中的数据的处理可能被延迟。
因此,为了减少延迟,当接收到分配请求时(例如,仅当协处理器14需要时),处理器12将接收缓冲区11a的存储区域分配给作为扩展功能的卸载目的地的协处理器14。
因此,根据信息处理设备1,可以直接从协处理器13和14将数据写入接收缓冲区11a中,并且减少在总线15上流动的数据量。此外,可以降低总线15的大频带消耗和信息处理设备1的性能劣化的可能性。
第二实施方式
图2是示出根据第二实施方式的信息处理系统的示例的图。
根据第二实施方式的信息处理系统包括服务器100和服务器200。服务器100和200连接至网络50。网络50例如是LAN(局域网)、WAN(广域网)、因特网等。
服务器100和200中的每一个是能够执行虚拟机的服务器计算机。服务器100和200可以被称为物理机器、物理主机等。服务器100上的虚拟机和服务器200上的虚拟机能够经由网络50彼此通信。虚拟机还能够与连接至网络50的其他物理机器(未示出)通信。服务器100上的虚拟机连接至由服务器100执行的虚拟交换机。类似地,服务器200上的虚拟机连接至由服务器200执行的虚拟交换机。
图3是示出服务器的硬件示例的框图。服务器100包括CPU 101、RAM 102、HDD 103、FPGA 104和105、图像信号处理单元106、输入信号处理单元107、介质读取器108以及NIC109。这些硬件部件连接至服务器100的总线111。CPU 101对应于第一实施方式的处理器12。RAM 102对应于第一实施方式的存储器11。
CPU 101是执行程序的指令的处理器。CPU 101将存储在HDD 103中的程序和数据中的至少一部分加载到RAM 102中并执行程序。CPU 101可以包括多个处理器核。此外,服务器100可以具有多个处理器。可以使用多个处理器或处理器核并行地执行以下描述的处理。多个处理器的集合可以被称为“多处理器”或简称为“处理器”。
RAM 102是易失性半导体存储器,其临时存储由CPU 101执行的程序和由CPU 101使用以进行计算的数据。同时,服务器100可以包括除了RAM以外的类型的存储器,或者可以包括多个存储器。
HDD 103是非易失性存储装置,其存储软件程序例如OS、中间件和应用软件以及数据。服务器100可以包括其他类型的存储装置诸如闪速存储器或SSD,或者可以包括多个非易失性存储装置。
FPGA104和FPGA105是用作虚拟交换机的功能的卸载目的地的协处理器。虚拟交换机具有将接收到的分组中继到服务器100上的虚拟机的中继功能。此外,虚拟交换机具有扩展功能,例如对接收的分组的密码处理(加密/解密)和数据压缩/解压缩。扩展功能可以包括诸如分组处理和分组控制的处理。例如,虚拟交换机的中继功能被卸载至FPGA 104,并且FPGA 104基于中继功能执行中继处理。虚拟交换机的扩展功能被卸载至FPGA 105,并且FPGA 105基于扩展功能执行扩展处理。FPGA 104是第一实施方式的协处理器13的示例。FPGA 105是第一实施方式的协处理器14的示例。
图像信号处理单元106根据来自CPU 101的指令,将图像输出至连接至服务器100的显示器51。对于显示器51,可以使用CRT(阴极射线管)显示器、液晶显示器(LCD)、等离子显示器、有机EL(OEL:有机电致发光)显示器或任何其他类型的显示器。
输入信号处理单元107从连接至服务器100的输入装置52获取输入信号,并将获取的输入信号输出至CPU 101。对于输入装置52,可以使用定点装置诸如鼠标、触摸面板、触摸板或轨迹球、键盘、远程控制器、按钮开关等。多种类型的输入装置可以连接至服务器100。
介质读取器108是读取记录在记录介质53中的程序和数据的读取装置。对于记录介质53,可以使用例如磁盘、光盘、磁光盘(MO)、半导体存储器等。磁盘包括软盘(FD)和HDD。光盘包括CD(致密盘)和DVD(数字多功能光盘)。
介质读取器108将从例如记录介质53读取的程序或数据复制到另一记录介质例如RAM 102或HDD 103。读取的程序由例如CPU 101执行。记录介质53可以是便携式记录介质,并且可以用于分发程序和数据。此外,记录介质53和HDD 103可以被称为计算机可读记录介质。
NIC 109是连接至网络50并经由网络50与其他计算机通信的物理接口。NIC 109具有耦接至线缆连接器的多个物理端口,并且通过线缆连接至通信装置诸如交换机或路由器。
同时,NIC 109可以是具有多个协处理器的智能NIC。在这种情况下,中继交换机的卸载目的地可以是NIC 109上的多个协处理器。例如,可以考虑中继功能被卸载至NIC 109上的第一协处理器并且扩展功能被卸载至NIC 109上的第二协处理器的配置。此外,通过使用与服务器100相同的硬件来实现服务器200。
图4是示出虚拟化机制的示例的图。服务器100包括硬件110,并且硬件110用于操作管理程序120以及虚拟机130、130a和130b。
硬件110是服务器100中用于数据输入/输出和计算的物理资源,并且包括图3中所示的CPU 101和RAM 102。管理程序120通过将服务器100的硬件110分配给虚拟机130、130a和130b来操作服务器100上的虚拟机130、130a和130b。管理程序120具有虚拟交换机的功能。然而,管理程序120将虚拟交换机的功能卸载至FPGA 104和FPGA 105。因此,管理程序120可以对被卸载的虚拟交换机执行控制功能,或者可以不执行虚拟交换机的中继功能或扩展功能。
虚拟机130、130a和130b是使用硬件110操作的虚拟计算机。与服务器100一样,服务器200也执行管理程序和虚拟机。
图5是示出虚拟交换机的卸载的示例的图。例如,虚拟交换机140的中继功能被卸载至FPGA 104。虚拟交换机140具有虚拟端口141、142、143、144和145。虚拟端口141至145是连接至物理端口或虚拟机的虚拟接口。
NIC 109具有物理端口109a和109b。例如,物理端口109a连接至虚拟端口141。物理端口109b连接至虚拟端口142。
虚拟机130具有虚拟NIC(vnic)131。虚拟机130a具有vnic 131a。虚拟机130b具有vnic 131b。vnic 131、vnic 131a和vnic 131b是虚拟机130、虚拟机130a和虚拟机130b的连接至虚拟交换机140的虚拟端口的虚拟接口。例如,vnic 131连接至虚拟端口143。vnic131a连接至虚拟端口144。vnic 131b连接至虚拟端口145。
例如,管理程序120包括虚拟交换机控制器120a。虚拟交换机控制器120a控制虚拟交换机140的虚拟端口与物理端口之间的连接、虚拟端口与vnic之间的连接等。
虚拟机130、130a和130b能够经由虚拟交换机140彼此通信。例如,虚拟机130通过经由vnic 131、虚拟端口143和144以及vnic 131a的通信路径与虚拟机130a通信。此外,虚拟机130、130a和130b还能够与在服务器200上操作的虚拟机或其他物理机器通信。例如,虚拟机130b通过经由vnic 131b、虚拟端口145和141以及物理端口109a的通信路径将数据发送至在服务器200上操作的虚拟机或另一物理机器。此外,虚拟机130b通过经由物理端口109a、虚拟端口141和145以及vnic 131b的通信路径接收由在服务器200中操作的虚拟机或另一物理机器传送的、以虚拟机130b为目的地的数据。
图6是示出中继功能和扩展功能的卸载的示例的图。CPU 101具有IO(输入/输出)控制器101a和IO控制器101b。FPGA 104连接至IO控制器101a。FPGA 105连接至IO控制器101b。FPGA 104与FPGA 105之间的经由IO控制器101a和101b的通信路径是总线111的一部分。用于识别FPGA 104的编号被称为“#1”。用于识别FPGA 105的编号被称为“#2”。
虚拟交换机140具有中继功能150和扩展功能170。FPGA 104具有虚拟交换机140的中继功能150。中继功能150由FPGA 104中的电子电路实现。FPGA 105具有虚拟交换机140的扩展功能170。扩展功能170由FPGA 105中的电子电路实现。FPGA 104使用中继功能150,以经由物理端口109a和109b从外部接收数据/向外部发送数据。
例如,至少对于数据接收,某个虚拟机的单个vnic逻辑上连接至FPGA 104上的虚拟端口和FPGA 105上的虚拟端口两者。替选地,至少对于数据接收,可以说FPGA 104上的虚拟端口和FPGA 105上的虚拟端口两者在逻辑上表现为针对虚拟机的vnic的一个虚拟端口,并且该一个虚拟端口连接至vnic。
图7是示出服务器的功能的示例的图。vnic 131具有接收队列132和发送队列133。虚拟机130具有接收缓冲区134。由RAM 102上的存储区域实现接收缓冲区134,并且接收到的以虚拟机130为目的地的数据被写入接收缓冲区134中。
接收队列132具有描述符132a。描述符132a是用于接收缓冲区134中的FIFO控制的信息。描述符132a具有表示接收缓冲区134的被分配的存储区域的索引(avail_idx)和表示接收缓冲区134的数据写入完成的存储区域的虚拟机130侧索引(used_idx)。“avail”是“可用的(available)”的缩写。“idx”是“索引(index)”的缩写。由虚拟机130基于描述符132a将接收缓冲区134用作单个队列。
发送队列133是用于管理要发送的数据的队列。管理程序120具有接收队列121和122以及仲裁单元123。通过使用RAM 102上的存储区域来实现接收队列121和122。
接收队列121具有描述符121a。描述符121a具有表示接收缓冲区134中分配给FPGA104的存储区域的FPGA 104侧索引(avail_idx)。描述符121a具有表示接收缓冲区134的由FPGA 104完成数据写入的存储区域的FPGA 104侧索引(used_idx)。
接收队列122具有描述符122a。描述符122a具有表示接收缓冲区134中分配给FPGA105的存储区域的FPGA 105侧索引(avail_idx)。描述符122a具有表示接收缓冲区134的由FPGA 105完成数据写入的存储区域的FPGA 105侧索引(used_idx)。
仲裁单元123对由FPGA 104和105向虚拟机130的接收缓冲区134中写入数据进行仲裁。仲裁单元123通过基于描述符132a中的索引“avail_idx”更新描述符121a和122a中的每一个的索引“avail_idx”,来执行将接收缓冲区134的存储区域分配给FPGA 104和FPGA105的分发处理。另外,仲裁单元123响应于由FPGA 104对描述符121a的索引“used_idx”的更新或者由FPGA 105对描述符122a的索引“used_idx”的更新,来执行对描述符132a的索引“used_idx”进行更新的仲裁处理。
虚拟机130基于描述符132a的索引“used_idx”指定接收缓冲区134的数据写入完成的存储区域,并处理写入该存储区域中的数据。虚拟机130释放与经处理的数据相对应的存储区域。
虚拟端口143从仲裁单元123获取接收缓冲区134中的写入目的地存储区域的索引,并且通过DMA(直接存储器存取)将数据传送至存储区域。虚拟端口143根据写入(DMA传送)到接收缓冲区134中来更新描述符121a的索引“used_idx”。
FPGA 105包括虚拟端口143a和预留单元190。虚拟端口143a从仲裁单元123获取接收缓冲区134中的写入目的地存储区域的索引,并且通过DMA将数据传送至存储区域。虚拟端口143a根据写入(DMA传送)到接收缓冲区134中来更新描述符122a的索引“used_idx”。
当从FPGA 104接收到要应用扩展功能的新数据时,预留单元190为仲裁单元123预留接收缓冲区134的存储区域。具体地,预留单元190将包括根据接收数据的大小的请求大小的分配请求输出至仲裁单元123。结果,接收缓冲区134的存储区域经由仲裁单元123被分配给FPGA 105,并且通过虚拟端口143a直接写入接收缓冲区134成为可能。虚拟机130a和130b也具有与虚拟机130的功能相同的功能。
图8是示出服务器的功能的示例的图(继续)。FPGA 104包括虚拟端口143、144、146……、中继功能150、存储单元161、虚拟端口处理单元162、FPGA间传送处理单元163和IO控制器164。在图8中,虚拟端口141、142和145未示出。虚拟端口146是用于向FPGA105传送数据的虚拟端口。
中继功能150将经由物理端口109a从外部接收到的数据中继到目的地虚拟机。中继功能150具有搜索单元151、动作应用单元152和纵横交换机153。数据以称为分组的单位接收。在逐个分组地描述过程时,有时会使用术语“分组”。
搜索单元151基于预设规则搜索接收的分组,并确定与接收的分组相对应的动作。规则包括要例如针对输入端口号和标头信息执行的动作。该动作除了目的地虚拟机的输出虚拟端口的确定之外,还包括例如标头信息的重写。
动作应用单元152将由搜索单元151搜索到的动作应用于接收的分组,并且将应用的结果输出至纵横交换机153。此处,当诸如密码处理或者压缩/解压缩的扩展处理作为动作被应用时,由FPGA 105执行该动作。动作应用单元152例如通过向接收的分组添加指示输出目的地的虚拟端口号的元数据,向FPGA 105通知中继处理的结果。在这种情况下,FPGA104中的连接至某个虚拟机的虚拟端口号和FPGA 105中的连接至同一虚拟机的虚拟端口号可以是相同的编号。替选地,FPGA 104可以预先获取并保存FPGA 105中的连接至虚拟机的虚拟端口号,并且可以通过将虚拟端口号作为元数据添加到接收的数据来向FPGA 105通知虚拟端口号。
纵横交换机153将从动作应用单元152获取的接收分组输出至输出目的地虚拟端口。此处,纵横交换机153将要应用扩展功能的接收分组输出至虚拟端口146。
存储单元161存储DMA存储器信息。DMA存储器信息是用于识别与虚拟端口对应的DMA传送目的地的接收缓冲区的信息。DMA存储器信息可以包括关于接收缓冲区中的数据可写索引的信息。
虚拟端口处理单元162使用与虚拟端口对应的DMA存储器信息,经由IO控制器164访问虚拟机的存储器区域,以发送和接收数据(例如将所接收的数据写入接收缓冲区)。
FPGA间传送处理单元163将由纵横交换机153输出至虚拟端口146的接收分组经由IO控制器164发送至FPGA 105。
IO控制器164控制服务器100中的总线111和DMA传送。IO控制器164可以包括控制经由总线111的数据传送的IO总线控制器和控制DMA传送的DMA控制器。
FPGA 105具有虚拟端口143a、144a、……、扩展功能170、存储单元181、虚拟端口处理单元182、FPGA间传送处理单元183、IO控制器184以及预留单元190。
虚拟端口143a和144a是连接至服务器100上的虚拟机的虚拟端口。虚拟端口143a连接至虚拟机130。虚拟端口144a连接至虚拟机130a。
扩展功能170对从FPGA 104接收到的扩展处理目标数据执行扩展处理,并且将经处理的数据传送至目的地虚拟机。扩展功能170具有存储单元171、过滤单元172、扩展功能处理单元173和纵横交换机174。
存储单元171存储过滤规则。过滤规则是指示针对分组标头信息的输出目的地虚拟端口的信息。过滤单元172经由预留单元190获取由FPGA 104传送的接收数据。过滤单元172基于存储在存储单元171中的过滤规则,指定从FPGA 104接收的数据的输出目的地虚拟端口,并且将指定的输出目的地虚拟端口提供给纵横交换机174。
扩展功能处理单元173从FPGA间传送处理单元183获取由FPGA 104传送的接收数据。扩展功能处理单元173对接收数据执行扩展处理诸如密码处理(例如,解密)或从压缩状态的解压缩,并且将经处理的数据提供给纵横交换机174。
纵横交换机174将从扩展功能处理单元173提供的经处理的数据输出至从过滤单元172提供的输出目的地虚拟端口。
存储单元181存储DMA存储器信息。如上所述,DMA存储器信息是用于识别与虚拟端口对应的DMA传送目的地的接收缓冲区的信息。
虚拟端口处理单元182使用与虚拟端口对应的DMA存储器信息,经由IO控制器184访问虚拟机的存储器区域,并且发送和接收数据(例如将所接收的数据写入接收缓冲区)。
FPGA间传送处理单元183经由IO控制器164接收由FPGA 104传送的接收分组,并将接收分组输出至扩展功能处理单元173和预留单元190。
IO控制器184控制服务器100中的总线111和DMA传送。IO控制器184可以包括控制经由总线111的数据传送的IO总线控制器和控制DMA传送的DMA控制器。
预留单元190对针对由FPGA间传送处理单元183接收的数据的每个目的地虚拟端口的分组的数量进行计数,或者对从虚拟端口输入并被过滤单元172命中的分组的数量进行计数,并获得每个虚拟端口所需的接收缓冲区中的区域的数量。预留单元190定期向仲裁单元123通知FPGA 105的每个虚拟端口所需的接收缓冲区的区域的数量。此处,扩展功能处理单元173的处理花费时间。因此,预留单元190在数据被输入至FPGA 104的定时处,向仲裁单元123请求写入所需的缓冲区域的数量,使得在扩展处理完成时(分配完成时),可以准备好至虚拟端口的输出所需的接收缓冲区的存储区域。
同时,图8中所示的虚拟端口的数量和物理端口的数量是示例,并且可以是其他数量。
图9是示出预留单元的处理的示例的图。从FPGA 104传送至FPGA 105的要应用扩展功能的接收数据60包括元数据和分组数据。如上所述,元数据包括与目的地虚拟机相对应的输出目的地虚拟端口号(例如,out_port=1)。分组数据是与包括标头信息和各个层的用户数据体的分组相对应的部分。
当经由服务器100的总线111从FPGA 104接收接收数据60时,FPGA间传送处理单元183将接收数据60输出至预留单元190和扩展功能处理单元173。
扩展功能处理单元173开始对接收数据60的用户数据体的扩展处理。此处,预留单元190包括请求数量计数器191、更新单元192和通知单元193。
请求数量计数器191是用于管理针对每个虚拟端口号的每个虚拟机所需的接收缓冲区的存储区域的数量的信息。
更新单元192根据接收数据60的元数据,对输出目的地虚拟端口所需的存储区域的数量进行计数,并更新请求数量计数器191。
通知单元193定期参考请求数量计数器191,以向仲裁单元123通知包括连接至虚拟端口的虚拟机的接收缓冲区所需的存储区域的数量(例如请求大小)的分配请求。
当完成了对接收数据60的扩展处理时,扩展功能处理单元173经由纵横交换机174(未示出)将经处理的数据提供给例如与输出目的地的虚拟端口143a相对应的端口#1输出单元143a1。另外,在扩展处理中,例如,移除添加到接收数据60的元数据。
此处,对于从FPGA 104接收到的数据,更新单元192可以根据数据的标头信息(流动规则)指定与流动规则对应的输出目的地虚拟端口。例如,当存储单元171保持过滤规则171a时,更新单元192可以获取由过滤单元172针对流动规则指定的虚拟端口号(输出端口),并且可以更新请求数量计数器191。例如,当过滤单元172经由与作为发送目标数据的输入源的虚拟端口143a相对应的端口#1输入单元143a2获取发送数据时,过滤单元172将以发送数据的发送源地址为目的地的数据的输出目的地识别为虚拟端口143a。过滤单元172将识别的结果记录在过滤规则171a中,并将其保存在存储单元171中。
当从通知单元193接收到分配请求时,仲裁单元123将相关虚拟机的接收缓冲区的存储区域分配给FPGA 105。仲裁单元123基于存储在端口信息存储单元124中的信息来管理接收缓冲区向FPGA 104和FPGA 105的分配。
此处,图9示出了虚拟机130的接收缓冲区134的分配管理的示例。可以与管理虚拟机130类似地管理其他虚拟机。
通过使用RAM 102的预定存储区域来实现端口信息存储单元124。端口信息存储单元124具有索引历史125和索引管理信息126。
当接收缓冲区被分别分配给FPGA 104和FPGA 105时,索引历史125记录被分配的描述符132a的结束的索引和描述符121a或描述符122a的结束的索引。索引历史125是队列,并且通过FIFO处理。
根据记录在索引历史125中的FPGA 104和FPGA 105的头数据的描述符132a侧索引之间的比较,可以确定应当首先处理哪个FPGA数据(首先处理较小的索引)。此外,可以使用记录在索引历史125中的描述符121a侧或描述符122a侧索引来确定要处理的FPGA的数据的缓冲区分配边界。当完成了针对要处理的FPGA的数据写入,直到缓冲区分配边界时,通过删除索引历史125中的FPGA的头数据,可以切换要处理的FPGA的数据。同时,索引历史125中的“n/a”是“不可用(not available)”的缩写,并且指示没有数据。
索引管理信息126包括“fpga1 last_used_idx”、“fpga2 last_used_idx”的信息以及FPGA 105(FPGA#2)的存储区域的请求数量。
“fpga1 last_used_idx”指示接收缓冲区134中由FPGA 104完成数据写入的存储区域的结束的索引。“fpga2 last_used_idx”指示接收缓冲区134中由FPGA 105完成数据写入的存储区域的结束的索引。
请求数量指示请求分配给FPGA 105的存储区域的数量。例如,请求数量=1对应于与一个索引对应的一个存储区域。可以说请求数量=1指示存储区域的大小。
例如,假设预留单元190获取接收数据60,并且将请求数量计数器191中的虚拟端口143(端口号=1)的请求数量从1更新为2。通知单元193在下一个分配请求通知定时处,向仲裁单元123通知对连接至虚拟端口143的虚拟机130的接收缓冲区134的分配请求,该分配请求指示请求数量=2。在通知分配请求之后,预留单元190可以将请求数量计数器191的通知已完成的请求数量重置为零。
然后,仲裁单元123响应于分配请求,将接收缓冲区134的存储区域分配给FPGA105。此处,假设在通知分配请求时,已经在索引历史125中为FPGA 104注册了“4,4”。这指示接收缓冲区134的0≤i<4(i指示索引)的存储区域已被分配给FPGA 104。另外,假设在描述符121a中,avail_idx=4并且used_idx=2,并且在描述符122a中,avail_idx=0并且used_idx=0。此外,假设在索引管理信息126中,fpga1 last_used_idx=2,fpga2 last_used_idx=0,并且请求数量=0。
仲裁单元123将分配请求所请求的请求数量“2”加到索引管理信息126的请求数量。结果,索引管理信息126中的请求数量被更新为0+2=2。仲裁单元123基于索引管理信息126中的请求数量“2”将描述符122a的索引avail_idx从0更新为2。另外,仲裁单元123在索引历史125中记录针对FPGA 105的“6,2”。当存储区域被分配给FPGA 105时,仲裁单元123从索引管理信息126中的请求数量中减去所分配的存储区域的数量。
图10是示出由仲裁单元进行的分配处理的示例的图。分配处理是将接收缓冲区134中的由索引划分的存储区域分配给FPGA 104和FPGA 105的处理。例如,仲裁单元123如下对虚拟机130执行分配处理(对其他虚拟机执行相同的处理)。
在初始状态下,接收缓冲区134未被确保,并且在索引历史125中未设置索引信息。另外,索引管理信息126和描述符121a、122a和132a的所有参数都是0。
首先,当虚拟机130启动时,虚拟机130确保RAM 102上的接收缓冲区134的存储区域,并将接收缓冲区134分配给接收队列132(接收缓冲区134和接收队列132的初始化)。例如,接收缓冲区134的大小是预定的。此处,作为示例,初始化之后的接收缓冲区134的大小被设置为8。此时,接收缓冲区134的起始索引为0。接收缓冲区134的结束索引为8。接收缓冲区134的0≤i<8的存储区域处于未分配状态。虚拟机130将接收队列132的描述符132a中的索引“avail_idx”更新为8,并且将索引“used_idx”更新为0。
然后,仲裁单元123通过更新接收队列132中的索引“avail_idx”来检测接收缓冲区134的分配。然后,仲裁单元123在负责中继功能的FPGA 104的接收队列121中设置例如由虚拟机130设置的接收缓冲区134的存储区域的总数的一半(在该示例中,8÷2=4)。即,仲裁单元123将描述符121a中的索引“avail_idx”更新为4。仲裁单元123将分配给FPGA 104的描述符132a上的结束索引=4和描述符121a的索引avail_idx=4的集合(4,4)设置在索引历史125的FPGA 104(FPGA#1)的头部的列中。然而,仲裁单元123可以将分配给FPGA 104的存储区域的数量设置为其他数量。
当存在来自FPGA 105的对接收缓冲区134的分配请求时,仲裁单元123执行以下处理。仲裁单元123在FPGA 105中设置从接收缓冲区134的未分配区域的开始(在该示例中索引=4)起的与请求数量相对应的存储区域。例如,当请求数量=2时,仲裁单元123将索引管理信息126中的请求数量从0更新为2。然后,仲裁单元123将描述符122a中的索引“avail_idx”更新为2。仲裁单元123将分配给FPGA 105的描述符132a上的结束索引=6和描述符122a的索引avail_idx=2的集合(6,2)设置在索引历史125的FPGA 105(FPGA#2)的列的头部中。仲裁单元123从索引管理信息126的请求数量中减去此次分配的存储区域的数量。例如,由于仲裁单元123此时已向FPGA 105分配了两个存储区域,因此仲裁单元123将请求数量更新为2-2=0。
图11是示出由仲裁单元进行的分配处理的示例的图(继续)。随后,FPGA 104从分配给接收队列121的描述符121a的较小“avail_idx”起,依次将数据写入接收缓冲区134的与索引“avail_idx”相对应的存储区域中。例如,假设FPGA 104将数据写入接收缓冲区134的0≤i<2的存储区域中。然后,FPGA 104将描述符121a的索引“used_idx”从0更新为2。
仲裁单元123根据稍后将描述的仲裁处理,将索引“fpga1last_used_idx”从0更新为2,并将接收队列132的描述符132a中的索引“used_idx”从0更新为2。
虚拟机130通过描述符132a中的索引used_idx=2检测数据被写入到从接收缓冲区134的头索引(在这种情况下为0)开始的对应于0≤i<2的存储区域中,并且处理该数据。当完成对数据的处理时,虚拟机130释放接收缓冲区134的与0≤i<2相对应的存储区域。当接收缓冲区134的存储区域被释放时,虚拟机130用释放的存储区域来补充接收缓冲区134。结果,对于接收缓冲区134,描述符132a的头索引变为2,并且其结束索引变为10。此外,描述符132a的索引“avail_idx”从8更新为10。
当仲裁单元123检测到描述符132a的索引“avail_idx”的更新时,仲裁单元123检测与具有索引历史125中的描述符132a中的较小分配结束索引的FPGA 104相对应的存储区域的释放。然后,仲裁单元123将接收缓冲区134的存储区域另外分配给FPGA 104(在这种情况下,另外分配的数量为2),直到接收缓冲区134的存储区域的数量达到总数的一半(在该示例中为4)。仲裁单元123将描述符121a中的索引“avail_idx”更新为6(=4+2)。仲裁单元123将分配给FPGA 104的描述符132a上的结束索引=6+2=8和描述符121a的索引avail_idx=6的集合(8,6)设置在索引历史125的FPGA 104(FPGA#1)的第二列中。
以这种方式,仲裁单元123将接收缓冲区134的存储区域分配给FPGA 104和FPGA105中的每一个。
图12是示出由仲裁单元进行的仲裁处理的示例的图。仲裁处理是以下处理:根据FPGA 104对描述符121a的索引“used_idx”的更新或者FPGA 105对描述符122a的索引“used_idx”的更新,来更新描述符132a的索引“used_idx”。尽管下面将描述图11的状态之后的处理,但是当图11中的描述符121a的索引“used_idx”从0更新为2时,也执行与下面描述的处理相同的处理。
FPGA 104按照由接收队列121的描述符121a分配的索引“avail_idx”的升序,将数据写入接收缓冲区134的与索引“avail_idx”相对应的存储区域中。
此处,例如,仲裁单元123根据索引历史125的FPGA 104的头数据和索引管理信息126的索引“fpga1 last_used_idx”,计算接收缓冲区134中分配给FPGA 104的区域的头索引。当索引历史125的FPGA 104的头数据是(4,4)并且索引fpga1 last_used_idx=2时,接收缓冲区134中分配给FPGA 104的区域的头索引是2(=4-(4-2))。然后,仲裁单元123指示FPGA 104从接收缓冲区134中与分配给FPGA 104的头索引相对应的存储区域写入数据。仅利用由索引历史125的FPGA 104的头数据指示的存储区域,可写大小可能是不够的。在这种情况下,仲裁单元123使用索引历史125的FPGA 104的第二数据来指定接收缓冲区134的可写存储区域。
例如,假设FPGA 104将数据写入接收缓冲区134的2≤i<4的存储区域中。然后,FPGA 104将描述符121a的索引“used_idx”从2更新为4。
仲裁单元123比较索引历史125的FPGA 104和FPGA 105中的每一个的头数据中的描述符132a侧索引(在图12的示例中为4和6),并且选择对应于较小索引的FPGA(FPGA104)。
对于所选择的FPGA,仲裁单元123将索引历史125的FPGA侧描述符的索引设置为H,并且通过以下表达式(1)获得计数。
计数=MIN(used_idx,H)-last_used_idx…(1)
其中,MIN是取自变量的最小值的函数。表达式(1)中的索引“used_idx”是所选择的FPGA侧描述符(描述符121a或描述符122a)的索引“used_idx”。表达式(1)中的索引“last_used_idx”是索引管理信息126中对应于所选择的FPGA的值。
当计数≥1时,仲裁单元123将计数加到描述符132a的索引“used_idx”和对应于FPGA的索引“last_used_idx”中的每一个。
然后,当对于FPGA,索引“last_used_idx”变为等于H时,仲裁单元123从索引历史125中删除FPGA的头数据。
在图12的示例中,从索引历史125中选择FPGA 104。然后,计数=MIN(4,4)–2=4–2=2。因此,仲裁单元123将描述符132a中的索引“used_idx”更新为2+计数(=4)。此外,仲裁单元123将索引管理信息126中的索引fpga1 last_used_idx更新为2+计数(=2+2=4)。此处,由于索引fpga1 last_used_idx=4变为等于H=4,所以仲裁单元123删除索引历史125的FPGA 104的头数据(4,4)。然后,在索引历史125中,(8,6)成为FPGA 104的头数据。
图13是示出由仲裁单元进行的仲裁处理的示例(继续)的图。随后,FPGA 105按照由接收队列122的描述符122a分配的索引avail_idx的升序,将数据写入接收缓冲区134的与索引“avail_idx”相对应的存储区域中。
此处,例如,仲裁单元123根据索引历史125的FPGA 105的头数据和索引管理信息126的索引fpga2 last_used_idx,计算接收缓冲区134中分配给FPGA 105的区域的头索引。当索引历史125的FPGA 105的头数据是(6,2)并且索引fpga2 last_used_idx=0时,接收缓冲区134中分配给FPGA 105的区域的头索引是4(=6-(2-0))。然后,仲裁单元123指示FPGA105从接收缓冲区134中与分配给FPGA 105的头索引相对应的存储区域写入数据。仅利用由索引历史125的FPGA 105的头数据指示的存储区域,可写大小可能是不够的。在这种情况下,仲裁单元123使用索引历史125的FPGA 105的第二数据来指定接收缓冲区134的可写存储区域。
例如,假设FPGA 105将数据写入接收缓冲区134的4≤i<6的存储区域中。然后,FPGA 105将描述符122a的索引“used_idx”从0更新为2。
仲裁单元123比较索引历史125的FPGA 104和FPGA 105中的每一个的头数据中的描述符132a侧索引(在图13的示例中为8和6),并且选择对应于较小索引的FPGA(FPGA104)。
仲裁单元123通过表达式(1)获得针对所选择的FPGA的计数。在该示例中,计数=MIN(2,2)-0=2。由于计数=2≥1,因此仲裁单元123将描述符132a的索引“used_idx”更新为4+计数=4+2=6。此外,仲裁单元123将索引管理信息126中的索引fpga2 last_used_idx更新为0+计数=0+2=2。此处,由于索引fpga2 last_used_idx=2变为等于H=2,所以仲裁单元123删除索引历史125的FPGA 105的头数据(6,2)。以这种方式,仲裁单元123执行仲裁处理。
接下来,将描述服务器100的处理过程。下面,示出了接收以虚拟机130为目的地的数据的情况,但是当接收以另一虚拟机为目的地的数据时,可以执行相同的过程。首先,将描述FPGA 104和FPGA 105的处理过程。
图14是示出用于中继功能的FPGA的处理的示例的流程图。
(S10)FPGA 104经由物理端口109a接收数据。
(S11)FPGA 104确定接收的数据是否是扩展处理目标。当确定接收的数据是扩展处理目标时,处理进行至操作S12。当确定接收的数据不是扩展处理目标时,处理进行至操作S13。例如,FPGA 104基于接收数据的标头信息等,通过指定由针对标头信息的规则预先确定的动作,确定接收的数据是否是扩展处理目标。
(S12)FPGA 104将作为中继处理的结果获取的目的地虚拟端口号添加到接收的数据,并将添加后的数据传送至FPGA 105以进行扩展处理。然后,用于中继功能的FPGA的处理结束。
(S13)FPGA 104向仲裁单元123询问关于接收缓冲区134的存储目的地索引。FPGA104从仲裁单元123获取接收缓冲区134的存储目的地索引。
(S14)FPGA 104将接收的数据写入接收缓冲区134的与存储目的地索引对应的存储区域中(DMA传送)。
(S15)FPGA 104更新FPGA 104(FPGA#1)侧索引“used_idx”。也就是说,FPGA 104将其中写入数据的存储区域的数量(与存储区域相对应的索引的数量)加到描述符121a的索引“used_idx”。然后,用于中继功能的FPGA的处理结束。
图15是示出用于扩展功能的FPGA的处理的示例的流程图。
(S20)FPGA 105从用于中继功能的FPGA(例如FPGA 104)接收扩展处理目标的数据。
(S21)FPGA 105开始执行扩展处理。FPGA 105可以并行地执行在操作S21中开始的扩展处理以及随后的操作S22至S24。
(S22)FPGA 105根据在操作S20中接收到的数据的大小,获得扩展处理后的数据的写入大小,并且基于该写入大小,获得对接收缓冲区134的存储区域的请求数量。FPGA 105更新与作为扩展处理后的数据的输出目的地的虚拟端口143a对应的接收缓冲区134的存储区域的请求数量。如上所述,在请求数量计数器191中登记针对每个虚拟端口的请求数量。
(S23)FPGA 105向仲裁单元123通知包括在操作S22中获得的请求数量的对接收缓冲区134的存储区域的分配请求。
(S24)FPGA 105从仲裁单元123获取接收缓冲区134的存储区域的分配的结果。
(S25)当扩展处理完成时,FPGA 105将扩展处理后的数据输出至接收缓冲区134的分配给FPGA 105的存储区域(DMA传送)。
(S26)FPGA 105更新FPGA 105(FPGA#2)侧索引“used_idx”。也就是说,FPGA 105将其中写入数据的存储区域的数量(与存储区域相对应的索引的数量)加到描述符122a的索引“used_idx”。然后,用于扩展功能的FPGA的处理结束。
接下来,将描述仲裁单元123的处理过程。在下文中,在附图中可以将虚拟机缩写为VM。
图16是示出针对用于中继功能的FPGA的分配处理的示例的流程图。
(S30)仲裁单元123检测虚拟机(VM)130对接收缓冲区134的分配。例如,如上所述,仲裁单元123通过检测描述符132a的索引“avail_idx”在虚拟机130激活之后被更新来检测虚拟机130对接收缓冲区134的分配。
(S31)仲裁单元123将接收缓冲区134的预定大小分配给FPGA 104(FPGA#1)。即,仲裁单元123根据分配更新与FPGA 104相对应的接收队列121的描述符121a中的索引“avail_idx”。预定大小是例如接收缓冲区134的总大小的一半(预定大小可以是另一值)。在索引历史125中,仲裁单元123在FPGA 104中记录描述符132a的当前分配的存储区域的结束索引和描述符121a的索引“avail_idx”的集合。然后,处理进行至操作S30。
同时,在操作S30中,即使在接收缓冲区134的一部分被释放时,新的区域也被分配给由虚拟机130释放的区域。在由虚拟机130分配新区域时,在分配给FPGA 104的区域的大小尚未达到预定大小的情况下,在操作S31,仲裁单元123向FPGA 104分配另外的存储区域,直到分配区域的大小变为预定大小。仲裁单元123根据分配更新描述符121a中的索引“avail_idx”。在索引历史125中,仲裁单元123在FPGA 104中记录与当前分配的存储区域相对应的描述符132a中的结束索引和描述符121a的索引“avail_idx”的集合。
图17是示出针对用于扩展功能的FPGA的分配处理的示例的流程图。
(S40)仲裁单元123从FPGA 105(FPGA#2)接收对接收缓冲区134的存储区域的分配请求。
(S41)仲裁单元123将包括在分配请求中的请求数量加到索引管理信息126中的FPGA 105(FPGA#2)的请求数量。
(S42)仲裁单元123从接收缓冲区134的头部起,顺序地将接收缓冲区134的未分配区域分配给FPGA 105(FPGA#2)。仲裁单元123仅更新以下存储区域,向该存储区域分配与FPGA 105相对应的接收队列122的描述符122a的索引“avail_idx”。在索引历史125中,仲裁单元123在FPGA105中记录与当前分配的存储区域相对应的描述符132a中的结束索引和描述符122a的索引“avail_idx”的集合。
(S43)仲裁单元123从索引管理信息126中的FPGA 105(FPGA#2)的请求数量中减去在操作S42中已经分配的分配数量。
(S44)仲裁单元123确定索引管理信息126中的请求数量是否为0。当确定请求数量≠0时,处理进行至操作S42。当确定请求数量=0时,用于扩展功能的FPGA的分配处理结束。
图18是示出仲裁处理的示例的流程图。例如,当描述符121a的索引“used_idx”或者描述符122a的索引“used_idx”被更新时,仲裁单元123执行以下过程,或者仲裁单元123以预定周期执行以下过程。
(S50)仲裁单元123比较索引历史125的两个FPGA的头数据的虚拟机(VM)130上的索引,并选择具有较小索引的FPGA。此处,虚拟机130侧索引指示描述符132a中为每个FPGA分配的区域的结束索引。
(S51)对于在操作S50中选择的FPGA,在索引历史125的头数据的FPGA侧索引被设置为H的情况下,仲裁单元123根据表达式(1)来计算计数。
(S52)仲裁单元123确定是否计数≥1。当确定计数≥1时,处理进行至操作S53。当确定计数<1时,仲裁处理结束。
(S53)仲裁单元123将计数加到虚拟机130侧“used_idx”(描述符132a中的索引“used_idx”)和索引管理信息126中的FPGA的索引“last_used_idx”中的每一个。
(S54)仲裁单元123确定对于FPGA是否索引last_used_idx=H。当确定索引last_used_idx=H时,处理进行至操作S55。当确定索引last_used_idx≠H时,仲裁处理结束。
(S55)仲裁单元123从索引历史125中删除FPGA的头数据。然后,仲裁处理结束。
以这种方式,仲裁单元123检测FPGA 104将数据写入接收缓冲区134中或者FPGA105将扩展处理之后的数据写入接收缓冲区134中。然后,仲裁单元123通过更新虚拟机130所参考并指示接收缓冲区134中数据写入完成的存储区域的信息(描述符132a的索引“used_idx”),来向虚拟机130通知数据写入已完成的存储区域。描述符132a是由虚拟机130参考的现有信息。通过仲裁单元123的仲裁处理,可以在不影响虚拟机130的处理的情况下,从FPGA 104和FPGA 105两者将数据写入接收缓冲区134中。
接下来,将描述由虚拟机130进行的接收处理。其他虚拟机执行相同的过程。图19是示出虚拟机的接收处理的示例的流程图。
(S60)虚拟机130对存储在接收缓冲区134中由VM侧索引“used_idx”(描述符132a中的索引“used_idx”)指示的存储区域中的接收数据执行预定处理。
(S61)虚拟机130释放接收缓冲区134中的经处理的区域。
(S62)虚拟机130将释放的存储区域分配给接收缓冲区134。虚拟机130通过新分配的量来更新描述符132a的索引“avail_idx”。然后,虚拟机130的接收处理结束。
图20是示出经由总线的通信的示例的图。在仲裁单元123的控制下,FPGA 104和FPGA 105中的每一个可以将数据写入虚拟机130的接收缓冲区134中。例如,当接收到的数据是扩展处理目标时,FPGA 104经由总线111将接收到的数据传送至FPGA 105。FPGA 105对数据执行扩展处理,并将经处理的数据写入虚拟机130的接收缓冲区134中。结果,虚拟机130可以对数据执行接收处理。
图21是示出经由总线的通信的比较示例的图。在比较示例中,可以考虑仅FPGA104将数据写入接收缓冲区134中的情况。例如,当接收到的数据是扩展处理目标时,FPGA104经由总线111将接收到的数据传送至FPGA 105。FPGA 105对数据执行扩展处理,并将经处理的数据传送至FPGA 104。FPGA 104将经处理的数据写入虚拟机130的接收缓冲区134中。结果,虚拟机130可以对数据执行接收处理。
在图21的比较示例中,对于扩展处理目标的数据,经由总线111发生从FPGA 105到FPGA 104的返回通信。在这种情况下,当扩展处理目标的数据量相对大时,总线111的通信频带的消耗量可能过大。总线111上的负载的增加导致服务器100的整体性能劣化。
因此,如图20所示,服务器100通过使得能够将数据不仅从FPGA 104而且从FPGA105直接写入虚拟机130的接收缓冲区134中,来抑制从FPGA 105到FPGA 104的返回通信。因此,可以减少总线111的通信频带的消耗量,并且抑制由于总线111的通信频带的过度消耗而导致的服务器100的性能劣化。
同时,为了能够将数据从FPGA 104和FPGA 105两者直接写入接收缓冲区134,可以想到采用软件方法诸如使用例如锁定变量或不可分离(原子)指令的独占访问。然而,由于经由总线111从装置进行的存储器访问趋于具有大的开销,因此通过使用访问通常是一对一的事实来每数十周期至100个周期读出索引,并且抑制访问延迟。然而,在来自多个装置诸如FPGA 104和FPGA 105的的独占访问中,在每个周期中访问锁定变量和索引,并且在卸载期间性能可能显著劣化。因此,可能不应用诸如独占访问的方法。
此外,例如,还可以想到简单地控制FPGA 104和FPGA 105,使得通过例如接收缓冲区134的均匀分布或比率分布,总是将预定大小的存储区域分配给FPGA 104和FPGA 105两者。然而,当通过FIFO处理接收缓冲区134时,在未写入数据的存储区域之后存在数据写入完成的另一存储区域的情况下,写入该另一存储区域中的数据可能不被处理,直到在未写入数据的存储区域中完成数据写入。因此,例如,在FPGA 105的分配区域中发生数据写入之前,对在该分配区域之后存在的FPGA 104的分配区域中的写入数据的处理可能被延迟。
相比之下,仲裁单元123向作为中继功能的卸载目的地的FPGA 104连续地分配预定大小的存储区域。然后,当存在分配请求时,仲裁单元123向作为扩展功能的卸载目的地的FPGA 105分配接收缓冲区134的与请求大小相对应的存储区域。由此,可以减少处理延迟。
保持向FPGA 104分配预定大小的原因是,期望连续生成从负责中继功能的FPGA104写入接收缓冲区134中的数据。此外,在生成要被写入的数据时向FPGA 105分配存储区域的原因是中继功能是附属于扩展功能的功能,并且并非由FPGA 104从外部接收的所有数据都是扩展功能目标。
仲裁单元123还向FPGA 104和FPGA 105分配缓冲区域,以便不影响使用接收缓冲区134(单个队列)的虚拟机130的处理。因此,不必修改虚拟机130侧。
如上所述,仲裁单元123提供了用于安全地从多个装置访问虚拟机的接收的单个队列(接收缓冲区134)而不使性能劣化的过程。结果,对于不使用扩展功能的流,从中继功能侧的FPGA实现数据到虚拟机的直接传送,并且对于使用扩展功能的流,从扩展功能侧的FPGA实现数据到虚拟机的直接传送。这样,可以在不对虚拟机做出任何改变的情况下,减少由于使用虚拟机的接收流的扩展功能而引起的总线111上的返回数据量。
可以通过使处理器12执行程序来实现根据第一实施方式的信息处理。可以通过使CPU 101执行程序来实现根据第二实施方式的信息处理。程序可以记录在计算机可读记录介质53中。
例如,可以通过分发其中记录有程序的记录介质53来分发程序。替选地,程序可以存储在另一计算机中并且经由网络分发。例如,计算机可以将记录在记录介质53中的程序或从另一计算机接收的程序存储(安装)在存储装置诸如RAM 102或HDD 103中,并且可以从该存储装置读取并执行程序。
Claims (9)
1.一种信息处理设备,包括:
存储器,其被配置成包括接收缓冲区,在所述接收缓冲区中写入以在所述信息处理设备中操作的虚拟机为目的地的数据;以及
处理器,其耦接至所述存储器并且被配置成:
将所述接收缓冲区的第一存储区域连续地分配给作为虚拟交换机的中继处理的卸载目的地的第一协处理器;以及
当从作为所述虚拟交换机的扩展处理的卸载目的地的第二协处理器接收到对所述接收缓冲区的分配请求时,将所述接收缓冲区的第二存储区域分配给所述第二协处理器。
2.根据权利要求1所述的信息处理设备,
其中,当所述第一存储区域的至少一个区域被释放时,
所述处理器被配置成:
将根据所释放的区域的大小的第三存储区域分配给所述第一协处理器;以及
按照所述接收缓冲区的缓冲区域的分配顺序,处理写入所述缓冲区域中的数据,并且释放完成处理的所述缓冲区域,并且
其中,所述缓冲区域被配置成包括所述第一存储区域、所述第二存储区域和所述第三存储区域。
3.根据权利要求1或权利要求2所述的信息处理设备,
其中,所述处理器被配置成将所述分配请求所要求的大小的所述第二存储区域分配给所述第二协处理器。
4.根据权利要求1至权利要求3中任一项所述的信息处理设备,
其中,当接收到以所述虚拟机为目的地的所述数据时,
所述第一协处理器被配置成:
确定所述数据是否是所述扩展处理的目标;
当所述数据是所述扩展处理的目标时,将所述数据传送至所述第二协处理器;以及
当所述数据不是所述扩展处理的目标时,将所述数据写入所述第一存储区域,以及
所述第二协处理器被配置成:
从所述第一协处理器接收作为所述扩展处理的目标的所述数据;
对所述数据执行所述扩展处理;以及
将经处理的数据写入所述第二存储区域。
5.根据权利要求4所述的信息处理设备,
其中,所述第二协处理器从所述第一协处理器接收作为所述扩展处理的目标的所述数据,
所述第二协处理器被配置成:
开始对所述数据的所述扩展处理;以及
向所述处理器通知所述分配请求。
6.根据权利要求1至权利要求5中任一项所述的信息处理设备,
其中,当通过所述处理器检测到所述第一协处理器向所述接收缓冲区写入所述数据或者所述第二协处理器在所述扩展处理之后向所述接收缓冲区写入所述数据时,
所述处理器被配置成通过更新由所述虚拟机参考并且指示所述接收缓冲区的所述数据的写入已完成的第四存储区域的信息,向所述虚拟机通知所述第四存储区域。
7.根据权利要求1至权利要求6中任一项所述的信息处理设备,
其中,所述接收缓冲区是单个队列。
8.一种信息处理方法,其由计算机执行,所述方法包括:
将接收缓冲区的第一存储区域连续地分配给作为虚拟交换机的中继处理的卸载目的地的第一协处理器;以及
当从作为所述虚拟交换机的扩展处理的卸载目的地的第二协处理器接收到对所述接收缓冲区的分配请求时,将所述接收缓冲区的第二存储区域分配给所述第二协处理器。
9.一种非暂态计算机可读记录介质,其中存储有使计算机执行处理的分组分析程序,所述处理包括:
将接收缓冲区的第一存储区域连续地分配给作为虚拟交换机的中继处理的卸载目的地的第一协处理器;以及
当从作为所述虚拟交换机的扩展处理的卸载目的地的第二协处理器接收到对所述接收缓冲区的分配请求时,将所述接收缓冲区的第二存储区域分配给所述第二协处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019170412A JP7280508B2 (ja) | 2019-09-19 | 2019-09-19 | 情報処理装置、情報処理方法および仮想マシン接続管理プログラム |
JP2019-170412 | 2019-09-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112527494A true CN112527494A (zh) | 2021-03-19 |
Family
ID=72266142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010968057.6A Pending CN112527494A (zh) | 2019-09-19 | 2020-09-15 | 信息处理设备和方法以及非暂态计算机可读记录介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210089343A1 (zh) |
EP (1) | EP3796168A1 (zh) |
JP (1) | JP7280508B2 (zh) |
CN (1) | CN112527494A (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
US11182221B1 (en) | 2020-12-18 | 2021-11-23 | SambaNova Systems, Inc. | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
US11392740B2 (en) | 2020-12-18 | 2022-07-19 | SambaNova Systems, Inc. | Dataflow function offload to reconfigurable processors |
US11237880B1 (en) | 2020-12-18 | 2022-02-01 | SambaNova Systems, Inc. | Dataflow all-reduce for reconfigurable processor systems |
US11782760B2 (en) | 2021-02-25 | 2023-10-10 | SambaNova Systems, Inc. | Time-multiplexed use of reconfigurable hardware |
US11200096B1 (en) | 2021-03-26 | 2021-12-14 | SambaNova Systems, Inc. | Resource allocation for reconfigurable processors |
JP2023003987A (ja) | 2021-06-25 | 2023-01-17 | 富士通株式会社 | 情報処理装置、情報処理プログラム、及び情報処理方法 |
US20230297527A1 (en) * | 2022-03-18 | 2023-09-21 | SambaNova Systems, Inc. | Direct Access to Reconfigurable Processor Memory |
CN115412502B (zh) * | 2022-11-02 | 2023-03-24 | 之江实验室 | 一种网络端口扩展和报文快速均衡处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103389944A (zh) * | 2012-05-09 | 2013-11-13 | 辉达公司 | 用于具有存储器分配限制的协处理器的虚拟存储器结构 |
CN104221000A (zh) * | 2012-03-28 | 2014-12-17 | 英特尔公司 | 用于网络设备上的处理元件的共享的缓冲区 |
US20180095750A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Hardware accelerators and methods for offload operations |
CN108696461A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于智能网络接口卡的共享存储器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9401967B2 (en) * | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US10353722B2 (en) * | 2010-07-21 | 2019-07-16 | Nec Corporation | System and method of offloading cryptography processing from a virtual machine to a management module |
US8473689B2 (en) * | 2010-07-27 | 2013-06-25 | Texas Instruments Incorporated | Predictive sequential prefetching for data caching |
US20150033222A1 (en) * | 2013-07-25 | 2015-01-29 | Cavium, Inc. | Network Interface Card with Virtual Switch and Traffic Flow Policy Enforcement |
JP2016170669A (ja) | 2015-03-13 | 2016-09-23 | 富士通株式会社 | 負荷分散機能配備方法、負荷分散機能配備装置および負荷分散機能配備プログラム |
JP6551049B2 (ja) * | 2015-08-24 | 2019-07-31 | 富士通株式会社 | 帯域制御回路、演算処理装置、および装置の帯域制御方法 |
KR102174979B1 (ko) * | 2015-11-17 | 2020-11-05 | 에스케이텔레콤 주식회사 | 가상 스위치의 패킷 전송 제어 방법 |
JP2018137616A (ja) * | 2017-02-22 | 2018-08-30 | 株式会社アルチザネットワークス | アクセラレータ |
US20190044892A1 (en) * | 2018-09-27 | 2019-02-07 | Intel Corporation | Technologies for using a hardware queue manager as a virtual guest to host networking interface |
-
2019
- 2019-09-19 JP JP2019170412A patent/JP7280508B2/ja active Active
-
2020
- 2020-08-26 EP EP20192975.9A patent/EP3796168A1/en active Pending
- 2020-09-02 US US17/010,406 patent/US20210089343A1/en active Pending
- 2020-09-15 CN CN202010968057.6A patent/CN112527494A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104221000A (zh) * | 2012-03-28 | 2014-12-17 | 英特尔公司 | 用于网络设备上的处理元件的共享的缓冲区 |
CN103389944A (zh) * | 2012-05-09 | 2013-11-13 | 辉达公司 | 用于具有存储器分配限制的协处理器的虚拟存储器结构 |
US20180095750A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Hardware accelerators and methods for offload operations |
CN109690475A (zh) * | 2016-09-30 | 2019-04-26 | 英特尔公司 | 用于转移操作的硬件加速器和方法 |
CN108696461A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于智能网络接口卡的共享存储器 |
Non-Patent Citations (2)
Title |
---|
WEI WANG 等: "pvFPGA: Accessing an FPGA-based hardware accelerator in a paravirtualized environment", 《2013 INTERNATIONAL CONFERENCE ON HARDWARE/SOFTWARE CODESIGN AND SYSTEM SYNTHESIS》, pages 1 - 9 * |
凌志浩: "《DCS与现场总线控制系统》", 30 September 2008, 华东理工大学出版社, pages: 244 - 245 * |
Also Published As
Publication number | Publication date |
---|---|
JP7280508B2 (ja) | 2023-05-24 |
US20210089343A1 (en) | 2021-03-25 |
JP2021048513A (ja) | 2021-03-25 |
EP3796168A1 (en) | 2021-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3796168A1 (en) | Information processing apparatus, information processing method, and virtual machine connection management program | |
US10387202B2 (en) | Quality of service implementation in a networked storage system with hierarchical schedulers | |
CN110059037B (zh) | 用于管理输入/输出的方法、设备和计算机程序产品 | |
US9606838B2 (en) | Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines | |
US9055119B2 (en) | Method and system for VM-granular SSD/FLASH cache live migration | |
US7529867B2 (en) | Adaptive, scalable I/O request handling architecture in virtualized computer systems and networks | |
US20080104589A1 (en) | Adaptive, Scalable I/O Request Handling Architecture in Virtualized Computer Systems and Networks | |
US20120304171A1 (en) | Managing Data Input/Output Operations | |
CN110196681B (zh) | 业务写操作的磁盘数据写入控制方法及装置、电子设备 | |
CN110196770B (zh) | 云系统内存数据处理方法、装置、设备及存储介质 | |
JP2016170669A (ja) | 負荷分散機能配備方法、負荷分散機能配備装置および負荷分散機能配備プログラム | |
US20220066928A1 (en) | Pooled memory controller for thin-provisioning disaggregated memory | |
US8166339B2 (en) | Information processing apparatus, information processing method, and computer program | |
WO2016056140A1 (ja) | インターフェースデバイス、及びインターフェースデバイスを含む計算機システム | |
JP2008090657A (ja) | ストレージシステム及び制御方法 | |
US20080104590A1 (en) | Adaptive, Scalable I/O Request Handling Architecture in Virtualized Computer Systems and Networks | |
JP5969122B2 (ja) | ホストバスアダプタおよびシステム | |
CN113031857B (zh) | 数据写入方法、装置、服务器及存储介质 | |
US8868876B2 (en) | Dedicated large page memory pools | |
CN113986137A (zh) | 存储装置和存储系统 | |
JP6653786B2 (ja) | I/o制御方法およびi/o制御システム | |
CN117311910B (zh) | 一种高性能虚拟密码机运行方法 | |
US11366595B2 (en) | Management apparatus and non-transitory computer-readable storage medium for storing program | |
US20240037032A1 (en) | Lcs data provisioning system | |
US10599334B2 (en) | Use of capi-attached storage as extended memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |