WO2014209286A1 - Reconfiguration with virtual machine switching - Google Patents
Reconfiguration with virtual machine switching Download PDFInfo
- Publication number
- WO2014209286A1 WO2014209286A1 PCT/US2013/047650 US2013047650W WO2014209286A1 WO 2014209286 A1 WO2014209286 A1 WO 2014209286A1 US 2013047650 W US2013047650 W US 2013047650W WO 2014209286 A1 WO2014209286 A1 WO 2014209286A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- virtual machine
- accelerator
- map
- processor
- trigger
- Prior art date
Links
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/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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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
Definitions
- multiple processor cores may be included in a single integrated circuit die or on multiple integrated circuit dies that are arranged in a single chip package.
- a cache may be used to store data for access by one or more of the processor cores.
- An accelerator may be a special purpose processor focused on one or more applications.
- the methods may include detecting a trigger.
- the trigger may indicate a command has been sent to a processor to switch from execution of a first virtual machine to a second virtual machine.
- the methods may include, in response to detecting the trigger, selecting a programmable circuit and a program for the programmable circuit, where the programmable circuit is associated with the second virtual machine.
- the methods may further include generating a write command to write the program to the programmable circuit.
- the devices may include a memory, a switch detector, and a second processor.
- the switch detector may be effective to detect a trigger.
- the trigger may indicate that a command has been sent to a first processor to switch from execution of a first virtual machine to a second virtual machine.
- the second processor may be configured to be in communication with the memory and the switch detector.
- the second processor may be effective to detect the trigger.
- the second processor may be effective to identify an accelerator and accelerator map for the programmable circuit associated with the second virtual machine.
- the second processor may be effective to generate a write command to write the accelerator map to the accelerator.
- the systems may include a first processor, a virtual machine manager, a programmable circuit, and a reconfiguration device.
- the virtual machine manager may be effective to send a command to the first processor to switch from execution of a first virtual machine to a second virtual machine.
- the virtual machine manager may further be effective to generate a trigger in response to the command.
- the reconfiguration device may include a memory, a switch detector, and a second processor.
- the second processor may be effective to detect the trigger.
- the second processor may be effective to identify the programmable circuit and a map associated with the second virtual machine.
- the second processor may be effective to generate a write command to write the map to the programmable circuit.
- Fig. 1 illustrates an example system that can be utilized to implement reconfiguration with virtual machine switching
- Fig. 2 illustrates an example system that can be utilized to implement reconfiguration with virtual machine switching
- Fig. 3 illustrates an example system that can be utilized to implement reconfiguration with virtual machine switching
- Fig. 4 illustrates an example system that can be utilized to implement reconfiguration with virtual machine switching
- Fig. 5 illustrates an example system that can be utilized to implement reconfiguration with virtual machine switching
- Fig. 6 depicts a flow diagram for an example process for implementing reconfiguration with virtual machine switching
- Fig. 7 illustrates a computer program product that can be utilized to implement reconfiguration with virtual machine switching
- Fig. 8 is a block diagram illustrating an example computing device that is arranged to implement reconfiguration with virtual machine switching
- This disclosure is generally drawn, inter alia, to methods, apparatus, systems, devices, and computer program products related to reconfiguration with virtual machine switching.
- An accelerator reconfiguration device may detect a trigger.
- the trigger may indicate that a command has been sent to a processor to switch from execution of a first virtual machine to a second virtual machine.
- the reconfiguration device may identify a programmable circuit and a program for the programmable circuit associated with the second virtual machine.
- the reconfiguration device may further generate a write command to write the program to the programmable circuit.
- FIG. 1 illustrates an example system that can be utilized to implement reconfiguration with virtual machine switching arranged in accordance with at least some embodiments described herein.
- An example system 100 may include a processor core 108, a programmable circuit such as an accelerator 102, a
- programmable circuit such as an accelerator 104, a programmer such as an accelerator programmer 112, a virtual machine manager 120 and/or an accelerator reconfiguration device 116 all arranged in communication with one another.
- Accelerator programmer 112 may be a dedicated unit or a general purpose processor.
- Processor core 108 may include a memory 106 effective to store information that may be used by processor core 108 during operation. Accelerators 102 or 104 may be configured or reconfigured by a map 114 to be operable to execute a particular application or code.
- processor core 108, reconfigurable accelerators 102, 104, accelerator programmer 112, virtual machine manager 120 and/or an accelerator reconfiguration device 116 may be located on the same die 110.
- one or more of processor core 108, reconfigurable accelerators 102, 104, accelerator programmer 112, virtual machine manager 120 and/or an accelerator reconfiguration device 116 may be located on different dies.
- Accelerator reconfiguration device 116 may be implemented as software, hardware, or a combination of software and hardware. Accelerator reconfiguration device 116 may be part of virtual machine manager 120. Processor core 108 may be configured to use one or more of reconfigurable accelerator 102, 104 to perform operations or tasks..
- Accelerator programmer 112 may include accelerator maps 114.
- Accelerator maps 114 may correspond to one or more programs for reconfigurable accelerators 102, 104. Accelerator maps 114 may include binary data that may be streamed into gates of reconfigurable accelerators. Accelerator programmer 112 may be configured to program reconfigurable accelerators 102, 104 based on accelerator maps 114.
- Accelerator programmer 112 may be configured to program
- accelerator maps 114 may be effective to define states of gates or switches in an FPGA (field programmable gate array), EEPROM (electrically erasable
- processor core 108 may control accelerator programmer 112 to load a requested accelerator map 114 into reconfigurable accelerator 102, 104 based on an execution queue.
- virtual machine manager 120 may send a command to processor core 108 to implement a first virtual machine. After a period of time, virtual machine manager 120 may send a switch command 142 to processor core 108 to implement a second virtual machine.
- Virtual machine manager 120 may be, for example, a hypervisor.
- switch command 142 may be effective to implement a context switch in processor core 120 or a world switch in processor core 120.
- processor core 108 may stop processing instructions that correspond to the first virtual machine and may start processing instructions that correspond to the second virtual machine.
- a state of processor core 108 may remain unaltered.
- the state of processor core 108 may correspond to the state registers, buffers, caches etc. of processor core 108.
- Context switching may be used in situations where resources are shared between operations and those resources modify user memory but not low level system state.
- Virtual machine manager 120 may be used to implement a world switch in situations where a virtual machine being implemented by processor core 108 requests access to low level system states. In world switching, processing states may be captured and saved and then replaced with a saved state of another virtual machine or "world”.
- virtual machine manager 120 may be configured to send switch command 142 to processor core 108.
- Switch command 142 may be a command to processor core 108 to switch from a first virtual machine to a second virtual machine.
- Switch command 142 may be, for example, a world switch command or a context switch command
- information in registers and queues of processor core 108, and information regarding states, and other processor core information may be saved by virtual machine manager 120 and stored in VMM memory 118. Prior information relating to the second virtual machine may be transferred from VMM memory 118 to processor core 108 by virtual machine manager 120.
- Accelerator reconfiguration device 116 may be configured to detect switch command 142.
- Accelerator reconfiguration device 116 may further be configured to reconfigure one or more of reconfigurable accelerators 102, 104 in response detecting switch command 142.
- FIG. 2 illustrates an example system that can be utilized to implement reconfiguration with virtual machine switching arranged in accordance with at least some embodiments described herein. Those components in Fig. 2 that are labeled identically to components of Fig. 1 will not be described again for the purposes of clarity.
- accelerator programmer 112 may load map 224 to reconfigurable accelerator 102. Accelerator programmer 112 may also load map 226 to
- reconfigurable accelerator 104 When accelerator programmer 112 loads maps 224, 226 to reconfigurable accelerators 102, 104, a map copy 228, that includes a copy of map 224 and/or 226, may be sent to accelerator reconfiguration device 116.
- virtual machine manager 120 may also send a trigger 222 to accelerator reconfiguration device 116.
- Trigger 222 may indicate that virtual machine manager 120 has sent switch command 142 to processor core 108.
- accelerator reconfiguration device 116 may send a write command 238 to an appropriate reconfigurable accelerator 102, 104.
- Write command 238 may be a command to write the map in map copy 228 to an applicable reconfigurable accelerator 102, 104.
- Reconfiguration memory 336 may be adapted to store active accelerator maps 330 and/or virtual machine to accelerator relationships data 332.
- accelerator reconfiguration device 116 receives map copy 228, copies of maps for reconfigurable accelerators 102, 104 may be stored in active accelerator maps 330.
- Processor 340 may determine an active virtual machine at a time when maps 224, 226 are sent to reconfigurable accelerators 102, 104.
- a program executing within a virtual machine may recognize accelerator maps that are active.
- Processor 340 may store an association between the active virtual machine and active accelerator maps 224, 226 in virtual machine to accelerator relationships data 332.
- Virtual machine to accelerator relationships data 332 may include a table identifying relationships between virtual machines, accelerators, and accelerator maps.
- Virtual machine switch detector 334 may be configured to detect switch command 142 such as by detecting trigger 222.
- processor 340 may identify the particular virtual machine identified in switch command 142.
- trigger 222 may be a signal sent from virtual machine manager 120 and may identify the particular virtual machine in switch command 142.
- Processor 340 may then analyze virtual machine to accelerator relationships data 332 to identify a particular reconfigurable accelerator associated with the particular virtual machine.
- Processor 340 may also identify the particular accelerator map from active accelerator maps 330 associated with the particular virtual machine.
- Processor 340 may generate write command 238 to write the particular accelerator map to the particular reconfigurable accelerator.
- processor 340 may identify which virtual machine is under execution by processor core 108. For example, processor 340 may communicate with virtual machine manager 120 and/or processor core 108 to identify the virtual machine under execution. Alternatively, virtual machine manager 120 may send a signal, such as trigger 222, to accelerator reconfiguration device 116 indicating what virtual machine is under execution. Processor 340 may then update virtual machine to accelerator relationships data 332 to associate the virtual machine under execution with the corresponding accelerator and map.
- a direct memory access environment may be used to wall off location ranges in memory 106 so that those ranges belong to particular virtual machines and are inaccessible to other virtual machines.
- Virtual machine to accelerator relationship data 332 may store associations between virtual machines and memory location ranges.
- Processor 340 may then analyze virtual machine to accelerator relationship data 332 and detect that processor core 108 has switched to executing a different virtual machine based upon memory locations being accessed. For example, a first virtual machine may be associated memory locations 1 through 5 of memory 106.
- a second virtual machine may be associated with memory locations 6 through 10 in memory 106.
- Virtual machine to accelerator relationship data 332 may be configured to store indications of a virtual machine, an associated accelerator, a map, and a range of memory locations in memory 106.
- Fig. 4 illustrates an example system that can be utilized to implement accelerator reconfiguration with virtual machine switching arranged in accordance with at least some embodiments described herein. Those components in Fig. 4 that are labeled identically to components of Figs. 1, 2 and 3 will not be described again for the purposes of clarity.
- a system in accordance with the disclosure may be able to allow virtual machines to effectively work with relevant reconfigurable accelerators.
- Virtual machines may be prevented from working with accelerators associated with, or configured for, other virtual machines.
- Security may be improved in that a virtual machine may avoid working with a processor with an accelerator used by a prior virtual machine.
- processor 804 may be of any type including but not limited to a microprocessor ( ⁇ ), a microcontroller ( ⁇ ), a digital signal processor (DSP), or any combination thereof.
- Processor 804 may include one more levels of caching, such as a level one cache 810 and a level two cache 812, a processor core 814, and registers 816.
- An example processor core 814 may include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof.
- Processor 804 may include a programmable circuit 817 such as reconfigurable accelerators 102 and/or 104.
- An example memory controller 818 may also be used with processor 804, or in implementations memory controller 818 may be an internal part of processor
- the network communication link may be one example of a
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/233,848 US9619265B2 (en) | 2013-06-25 | 2013-06-25 | Reconfiguration with virtual machine switching |
CN201380077736.2A CN105393218B (zh) | 2013-06-25 | 2013-06-25 | 用来重构可编程电路的方法、设备以及系统 |
PCT/US2013/047650 WO2014209286A1 (en) | 2013-06-25 | 2013-06-25 | Reconfiguration with virtual machine switching |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/047650 WO2014209286A1 (en) | 2013-06-25 | 2013-06-25 | Reconfiguration with virtual machine switching |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014209286A1 true WO2014209286A1 (en) | 2014-12-31 |
Family
ID=52142430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2013/047650 WO2014209286A1 (en) | 2013-06-25 | 2013-06-25 | Reconfiguration with virtual machine switching |
Country Status (3)
Country | Link |
---|---|
US (1) | US9619265B2 (zh) |
CN (1) | CN105393218B (zh) |
WO (1) | WO2014209286A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018148082A1 (en) * | 2017-02-10 | 2018-08-16 | Xilinx, Inc. | Migrating accelerators between compute systems |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3089035A1 (en) * | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
US10860357B1 (en) | 2017-04-18 | 2020-12-08 | Amazon Technologies, Inc. | Secure reconfiguring programmable hardware with host logic comprising a static portion and a reconfigurable portion |
US10338592B2 (en) | 2017-08-24 | 2019-07-02 | Saudi Arabian Oil Company | High accuracy remote coordinate machine |
US10776142B1 (en) * | 2017-12-13 | 2020-09-15 | Amazon Technologies, Inc. | Reconfiguring programmable hardware when a virtual machine is active |
CN109039711B (zh) * | 2018-07-12 | 2021-01-15 | 联想(北京)有限公司 | 一种硬件加速器的更换方法、装置及服务器 |
CN109976876B (zh) * | 2019-03-20 | 2021-11-16 | 联想(北京)有限公司 | 加速器管理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132363A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US20070192765A1 (en) * | 2006-02-15 | 2007-08-16 | Fujitsu Limited | Virtual machine system |
US20130152086A1 (en) * | 2011-12-09 | 2013-06-13 | Jung-hyun Yoo | Apparatus and method for managing virtual memory |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438737B1 (en) * | 2000-02-15 | 2002-08-20 | Intel Corporation | Reconfigurable logic for a computer |
US8020176B2 (en) | 2000-04-06 | 2011-09-13 | Infineon Technologies Ag | Virtual machine interface for hardware reconfigurable and software programmable processors |
US7703107B2 (en) | 2000-04-06 | 2010-04-20 | Infineon Technologies Ag | Virtual machine interface for hardware reconfigurable and software programmable processors |
US7260794B2 (en) * | 2002-12-20 | 2007-08-21 | Quickturn Design Systems, Inc. | Logic multiprocessor for FPGA implementation |
US9264384B1 (en) | 2004-07-22 | 2016-02-16 | Oracle International Corporation | Resource virtualization mechanism including virtual host bus adapters |
US7383374B2 (en) * | 2005-03-31 | 2008-06-03 | Intel Corporation | Method and apparatus for managing virtual addresses |
CN101383688B (zh) * | 2007-09-06 | 2013-12-04 | 艾优克服务有限公司 | 数据通信装置及保持数据通信装置高可用性的方法 |
US8082418B2 (en) | 2007-12-17 | 2011-12-20 | Intel Corporation | Method and apparatus for coherent device initialization and access |
US9058183B2 (en) * | 2009-12-29 | 2015-06-16 | Advanced Micro Devices, Inc. | Hypervisor isolation of processor cores to enable computing accelerator cores |
US8776060B2 (en) * | 2010-11-04 | 2014-07-08 | Lsi Corporation | Methods and structure for near-live reprogramming of firmware in storage systems using a hypervisor |
-
2013
- 2013-06-25 WO PCT/US2013/047650 patent/WO2014209286A1/en active Application Filing
- 2013-06-25 CN CN201380077736.2A patent/CN105393218B/zh not_active Expired - Fee Related
- 2013-06-25 US US14/233,848 patent/US9619265B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132363A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US20070192765A1 (en) * | 2006-02-15 | 2007-08-16 | Fujitsu Limited | Virtual machine system |
US20130152086A1 (en) * | 2011-12-09 | 2013-06-13 | Jung-hyun Yoo | Apparatus and method for managing virtual memory |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018148082A1 (en) * | 2017-02-10 | 2018-08-16 | Xilinx, Inc. | Migrating accelerators between compute systems |
US10740146B2 (en) | 2017-02-10 | 2020-08-11 | Xilinx, Inc. | Migrating virtual machines between compute systems by transmitting programmable logic accelerator state |
Also Published As
Publication number | Publication date |
---|---|
CN105393218B (zh) | 2019-03-01 |
US20150205629A1 (en) | 2015-07-23 |
CN105393218A (zh) | 2016-03-09 |
US9619265B2 (en) | 2017-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9619265B2 (en) | Reconfiguration with virtual machine switching | |
US8954993B2 (en) | Local message queue processing for co-located workers | |
JP4690988B2 (ja) | 持続的なユーザレベルスレッド用の装置、システムおよび方法 | |
US9792062B2 (en) | Acceleration of memory access | |
US9529615B2 (en) | Virtual device emulation via hypervisor shared memory | |
US9201823B2 (en) | Pessimistic interrupt affinity for devices | |
US9483318B2 (en) | Distributed procedure execution in multi-core processors | |
WO2017112149A1 (en) | Thread and/or virtual machine scheduling for cores with diverse capabilities | |
US9003094B2 (en) | Optimistic interrupt affinity for devices | |
EP2936317A1 (en) | In-place change between transient and persistent state for data structures in non-volatile memory | |
US20140344550A1 (en) | Core affinity bitmask translation | |
US10409350B2 (en) | Instruction optimization using voltage-based functional performance variation | |
US9898307B2 (en) | Starting application processors of a virtual machine | |
WO2015009288A1 (en) | Processor identification for virtual machines | |
WO2017160427A1 (en) | Wireless component state based power management | |
WO2013191673A1 (en) | Virtual machine migration in a cloud fabric | |
US9710303B2 (en) | Shared cache data movement in thread migration | |
US9766917B2 (en) | Limited virtual device polling based on virtual CPU pre-emption | |
US9298502B2 (en) | Pausing virtual machines using API signaling | |
US8868800B2 (en) | Accelerator buffer access | |
US9965310B2 (en) | Virtual machine exit analyzer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 201380077736.2 Country of ref document: CN |
|
WWE | Wipo information: entry into national phase |
Ref document number: 14233848 Country of ref document: US |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 13887785 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 13887785 Country of ref document: EP Kind code of ref document: A1 |