CN105393218B - 用来重构可编程电路的方法、设备以及系统 - Google Patents

用来重构可编程电路的方法、设备以及系统 Download PDF

Info

Publication number
CN105393218B
CN105393218B CN201380077736.2A CN201380077736A CN105393218B CN 105393218 B CN105393218 B CN 105393218B CN 201380077736 A CN201380077736 A CN 201380077736A CN 105393218 B CN105393218 B CN 105393218B
Authority
CN
China
Prior art keywords
virtual machine
mapping
accelerator
processor
memory
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.)
Expired - Fee Related
Application number
CN201380077736.2A
Other languages
English (en)
Other versions
CN105393218A (zh
Inventor
E·克鲁格里克
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.)
Empire Technology Development LLC
Original Assignee
Empire Technology Development LLC
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 Empire Technology Development LLC filed Critical Empire Technology Development LLC
Publication of CN105393218A publication Critical patent/CN105393218A/zh
Application granted granted Critical
Publication of CN105393218B publication Critical patent/CN105393218B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

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)

Abstract

一般描述了用于重构可编程电路的系统和方法的技术。加速器重构设备可以检测触发信号。该触发信号可以指示命令已经发送到处理器以从第一虚拟机的执行切换到第二虚拟机。响应于检测到触发信号,重构设备可以标识可编程电路和与第二虚拟机相关联的用于可编程电路的程序。重构设备可以进一步生成写命令以将程序写入可编程电路。

Description

用来重构可编程电路的方法、设备以及系统
技术领域
本申请涉及一种用来重构可编程电路的方法、设备以及系统。
背景技术
除非在此处进行说明,否则此处所描述的材料不是本申请权利要求的现有技术并且不因包含在该部分中而承认是现有技术。
在多核体系结构中,可以在单个集成电路晶粒上包含多个处理器核,或者可以在布置于单个芯片封装中的多个集成电路晶粒上包括多个处理器核。高速缓冲存储器可用来存储数据以便由一个或多个处理器核访问。加速器可以是集中于一个或多个应用上的专用处理器。
发明内容
在一些示例中,一般地描述了重构可编程电路的方法。该方法可以包括检测触发器。该触发器可以指示命令已经发送到处理器以从第一虚拟机的执行切换到第二虚拟机。该方法可以包括:响应于检测到触发器,选择可编程电路和用于可编程电路的程序,其中可编程电路与第二虚拟机相关联。该方法可以进一步包括生成写命令以将程序写入可编程电路。
在一些示例中,一般地描述了用于重构可编程电路的设备。该设备可以包括存储器、切换检测器和第二处理器。该切换检测器可以用来检测触发器。该触发器可以指示命令已经发送到第一处理器以从第一虚拟机的执行切换到第二虚拟机。第二处理器可配置为与存储器和切换检测器通信。该第二处理器可用来检测触发器。该第二处理器可用来标识与第二虚拟机相关联的用于可编程电路的加速器和加速器映射。第二处理器可用来生成写命令以将所述加速器映射写入所述加速器。
在一些示例中,一般地描述了用来重构可编程电路的系统。该系统可以包括第一处理器、虚拟机管理器、可编程电路和重构设备。虚拟机管理器可用来将命令发送到第一处理器以从第一虚拟机的执行切换到第二虚拟机。虚拟机管理器可以进一步用来响应于命令而生成触发器。重构设备可以包括存储器、切换检测器和第二处理器。该第二处理器可以用来检测该触发器。第二处理器可用来标识与第二虚拟机相关联的可编程电路和映射。第二处理器可用来生成写命令以将映射写入可编程电路。
前面的概述仅仅是示例性的,而不意在以任何方式进行限制。通过参考附图以及下面的详细说明,除了上文所描述的示例性的方面、实施例和特征之外,另外的方面、实施例和特征将变得清晰可见。
附图说明
通过下面结合附图给出的详细说明和随附的权利要求,本公开的前述特征以及其它特征将变得更加清晰。应理解的是,这些附图仅描绘了依照本公开的多个实施例,因此,不应视为对本发明范围的限制,将通过利用附图结合附加的具体描述和细节对本公开进行说明,在附图中:
图1示出了能够用于通过虚拟机切换实现重构的示例的系统;
图2示出了能够用于通过虚拟机切换实现重构的示例的系统;
图3示出了能够用于通过虚拟机切换实现重构的示例的系统;
图4示出了能够用于通过虚拟机切换实现重构的示例的系统;
图5示出了能够用于通过虚拟机切换实现重构的示例的系统;
图6描绘了用于通过虚拟机切换实现重构的示例的过程的流程图;
图7示出了能够用来通过虚拟机切换实现重构的计算机程序产品;以及
图8是示出布置成通过虚拟机切换实现重构的示例的计算设备的框图;
全部根据本文所描述的至少一些实施例而布置。
具体实施方式
在下面的详细说明中,将参考附图,附图构成了详细说明的一部分。在附图中,除非上下文指出,否则相似的符号通常表示相似的部件。在详细说明、附图和权利要求中所描述的示例性实施例不意在限制。可以使用其它实施例,并且可以做出其它改变,而不偏离本文呈现的主题的精神或范围。将易于理解的是,如本文大致描述且如图中所图示的,本公开的方案能够以各种不同配置来布置、替代、组合、分离和设计,所有这些都在本文中明确地构思出。
本公开大体尤其涉及与通过虚拟机切换进行重构有关的方法、装置、系统、设备和计算机程序产品。
简言之,一般地描述了用于重构可编程电路的系统和方法的技术。加速器重构设备可以检测触发信号。该触发信号可以指示命令已经发送到处理器以从第一虚拟机的执行切换到第二虚拟机。响应于检测到触发信号,重构设备可以标识可编程电路以及与第二虚拟机相关联的用于可编程电路的程序。重构设备可以进一步生成写命令以将程序写入可编程电路。
图1示出了根据本文所描述的至少一些实施例布置的能够用来通过虚拟机切换实现重构的示例的系统。示例的系统100可以包括处理器核108、诸如加速器102的可编程电路、诸如加速器104的可编程电路、诸如加速器编程器112的编程器、虚拟机管理器120和/或加速器重构设备116,这些均布置成相互通信。加速器编程器112可以是专用单元或通用处理器。处理器核108可以包括用来存储在操作期间由处理器核108可使用的信息的存储器106。加速器102或104可以配置为可操作以执行特定的应用或代码或由映射114重构为可操作以执行特定的应用或代码。在一些示例中,处理器核108、可重构加速器102、104、加速器编程器112、虚拟机管理器120和/或加速器重构设备116中的一个或多个可以定位于同一晶粒110上。在其他示例中,处理器核108、可重构加速器102、104、加速器编程器112、虚拟机管理器120和/或加速器重构设备116中的一个或多个可以定位在不同的晶粒上。加速器重构设备116可以实现为软件、硬件或者软件和硬件的组合。加速器重构设备116可以是虚拟机管理器120的部分。处理器核108可以配置为使用可重构加速器102、104中的一个或多个来执行操作或任务。
加速器编程器112可以包括加速器映射114。加速器映射114可对应于用于可重构加速器102、104的一个或多个程序。加速器映射114可以包括被流送到可重构加速器的门的二进制数据。加速器编程器112可以配置为基于加速器映射114对可重构加速器102、104进行编程。
加速器编程器112可以配置为基于加速器映射114对可重构加速器102、104进行编程。例如,加速器映射114可用来定义可重构加速器102、104的FPGA(现场可编程门阵列)、EEPROM(电可擦除可编程只读存储器)中的门或开关的状态。在操作期间,处理器核108可以控制加速器编程器112以基于执行队列来将所请求的加速器映射114装载到可重构加速器102、104中。
在示例中,虚拟机管理器120可以将命令发送到处理器核108以实现第一虚拟机。在一定时间段之后,虚拟机管理器120可以将切换命令142发送到处理器核108以实现第二虚拟机。虚拟机管理器120可以为例如监督器。例如,切换命令142可以用来实现处理器核120中的上下文切换(context switch)或者处理器核120中的世界切换(world switch)。在上下文切换中,处理器核108可以停止处理对应于第一虚拟机的指令且可以开始处理对应于第二虚拟机的指令。在上下文切换中,处理器核108的状态可以保持不变。在一些示例中,处理器核108的状态可以对应于处理器核108的状态寄存器、缓冲器、高速缓冲存储器等。上下文切换可以用于如下情形:在操作之间共享资源,并且那些资源修改用户存储器,而不是低级系统状态。
虚拟机管理器120可以用来在由处理器核108实现的虚拟机请求访问低级系统状态的情形下实现世界切换。在世界切换中,处理状态可以被俘获和保存,然后用保存的另一虚拟机或“世界”的状态来替换。
如下文更详细论述的,虚拟机管理器120可以配置为将切换命令142发送到处理器核108。切换命令142可以是处理器核108从第一虚拟机切换到第二虚拟机的命令。切换命令142可以是例如世界切换命令或上下文切换命令。例如,处理器核108的寄存器和队列中的信息以及关于状态的信息和其他处理器核信息可以由虚拟机管理器120保存且存储在VMM存储器118中。关于第二虚拟机的在先信息可以通过虚拟机管理器120从VMM存储器118传输到处理器核108。加速器重构设备116可配置为检测切换命令142。加速器重构设备116可以进一步配置为响应于检测到切换命令142而重构可重构加速器102、104中的一个或多个。
图2示出了依照本文所描述的至少一些实施例布置的能够用来实现通过虚拟机切换实现重构的示例的系统。为简要的目的,图2中那些标记与图1的部件相同的部件不再进行描述。
在一些示例中,响应于诸如来自处理器核108的请求,加速器编程器112可以将映射224装载到可重构加速器102中。加速器编程器112还可以将映射226装载到可重构加速器104中。当加速器编程器112将映射224、226装载到可重构加速器102、104时,包括映射224和/或226的副本的映射副本228可以发送到加速器重构设备116。在虚拟机管理器120将切换命令142发送到处理器核108的示例中,虚拟机管理器120还可以将触发信号222发送到加速器重构设备116。触发信号222可以指示虚拟机管理器120已经发送切换命令142到处理器核108。响应于检测到触发信号222,加速器重构设备116可以将写命令238发送到适合的可重构加速器102、104中。写命令238可以是将映射副本228中的映射写入可应用重构加速器102、104中的命令。在示例的实施例中,写命令238可以通过加速器编程器112来路由。
图3示出了根据本文所描述的至少一些实施例布置的能够用来通过虚拟机切换实现重构的示例的系统。为简要的目的,不再描述图3中那些标记与图1和图2的部件相同的部件。
加速器重构设备116可以包括处理器340、重构存储器336和/或虚拟机切换检测器334。重构存储器336可适于存储活跃的加速器映射330和/或虚拟机与加速器关系数据332。在加速器重构设备116接收到映射副本228的示例中,用于可重构加速器102、104的映射的副本可以存储在活跃的加速器映射330中。处理器340可以在映射224、226发送到可重构加速器102、104时确定活跃的虚拟机。在一些示例中,在虚拟机内执行的程序可以识别出活跃的加速器映射。处理器340可以将活跃的虚拟机和活跃的加速器映射224、226之间的关联存储到虚拟机与加速器关系数据332中。虚拟机与加速器关系数据332可以包括标识出虚拟机、加速器与加速器映射之间的关系的表。当可重构加速器102、104在设计上类似时(在同类加速器构造中),可以存储虚拟机与加速器映射之间的关系。当可重构加速器102、104在设计上不相似时(在异类加速器构造中),可以存储虚拟机、加速器和加速器映射之间的关系。
虚拟机切换检测器334可以配置为例如通过检测触发信号222来检测切换命令142。当通过虚拟机切换检测器334检测到触发信号222时,处理器340可以标识出在切换命令142中标识的特定的虚拟机。例如,触发信号222可以是从虚拟机管理器120发送的信号并且可以标识切换命令142中的特定的虚拟机。处理器340随后可以分析虚拟机与加速器关系数据332以标识出与特定的虚拟机相关联的特定的可重构加速器。处理器340还可以标识来自与特定的虚拟机相关联的活跃的加速器映射330的特定的加速器映射。处理器340可以生成写命令238以将特定的加速器映射写入特定的可重构加速器。
活跃的加速器映射330可以包括用于各个虚拟机的多个加速器映射。在示例中,显示出两个可重构加速器。如果实现三个虚拟机,则可以存储6个活跃的加速器映射。
在加速器编程器112将映射224、226装载到可重构加速器102、104中的示例中,映射副本228可以发送到加速器重构设备116。例如,映射副本228可以通过有线复制动作来提供。例如,当映射226224、226装载到可重构加速器102、104中时,电线或其他通信介质可用来提取映射副本228。在另一示例中,当加速器编程器112将映射224、226装载到可重构加速器102、104中时,加速器编程器112还可以将映射副本228发送到加速器重构设备116。在另一示例中,当加速器编程器112将映射224、226装载到可重构加速器102、104时,处理器340可以捕获映射副本228且将映射副本228存储到存储器336中。
当映射副本228由加速器重构设备116接收到时,处理器340可以标识哪个虚拟机正由处理器核108执行。例如,处理器340可以与虚拟机管理器120和/或处理器核108来通信以标识虚拟机处于执行中。可选地,虚拟机管理器120可以将诸如触发信号222的信号发送到加速器重构设备116,指示哪个虚拟机正在执行中。处理器340随后可以更新虚拟机与加速器关系数据332以将执行中的虚拟机与对应的加速器和映射相关联。
触发信号222可以被虚拟机切换检测器334以各种方式来检测。例如,虚拟机管理器120可以生成与切换命令142有关的具体的信号或指令。信号或指令可以包括在处理器核108上哪个虚拟机当前正在执行中的指示。虚拟机切换检测器334可配置为检测与切换命令142有关的信号或指令。
在另一示例中,直接存储器访问环境可用来禁闭存储器106中的位置范围以使那些范围属于特定的虚拟机,而不能由其他虚拟机访问。虚拟机与加速器关系数据332可以存储虚拟机与存储器位置范围之间的关联。处理器340随后可以分析虚拟机与加速器关系数据332并且基于被访问的存储器位置而检测到处理器核108已经切换为执行不同的虚拟机。例如,第一虚拟机可以与存储器106的存储器位置1至5相关联。第二虚拟机可以与存储器106中的存储器位置6至10相关联。虚拟机与加速器关系数据332可配置为将虚拟机、关联的加速器、映射和存储器位置范围的指示存储在存储器106中。当处理器核108访问存储器位置时,虚拟机切换检测器334可以将访问的存储器位置与当前虚拟机的位置范围进行比较。如果所访问的存储器位置在当前虚拟机的位置范围之外,则虚拟机切换检测器334可以确定处理器核108已经切换,有效地检测触发信号222。虚拟机切换检测器334还可以基于所访问的存储器位置来标识新的虚拟机。在另一示例中,当核108将高速缓冲存储器或管线清空时,例如通过监控在这些转移中使用的定义的存储器区域来检测在虚拟机切换期间到虚拟机控制块区域的状态传输,可以检测虚拟机切换222。
在一些示例中,虚拟机可以共享一个或多个核,和/或一个虚拟机可以在多于一个核上延伸。虚拟机还可以共享可重构加速器。虚拟机与加速器关系数据332可适于在多个核和/或多个加速器上跟踪虚拟机与可重构加速器之间的关系。
图4示出了依照本文所描述的至少一些实施例布置的能够用来通过虚拟机切换实现加速器重构的示例的系统。为简要的目的,不再描述图4中那些标记与图1、图2和图3的部件相同的部件。
在示例中,虚拟机管理器120可以将命令444发送到处理器核108以实现第一虚拟机“VM1”。响应于命令444,处理器核108可以请求将映射1和2从加速器编程器112装载到可重构加速器102、104中。加速器重构设备116可以检测到映射224、226正装载到可重构加速器102、104中。加速器重构设备116可以提取映射副本228且将映射副本228存储到活跃的加速器映射330中。加速器重构设备116的处理器340可以进一步检测,第一虚拟机是活跃的,同时映射1和映射2被写。处理器340可以将第一虚拟机与分别用于加速器1和2的映射1和2之间的关联存储在虚拟机与加速器关系数据332中。在示例中,处理器340之前还可将第二虚拟机(“VM2”)与分别用于加速器1和2的映射3和映射4之间的关联存储在虚拟机与加速器关系数据332中。
图5示出了依照本文所描述的至少一些实施例布置的能够用来通过虚拟机切换实现重构的示例的系统。为简要的目的,不再描述图5中那些标记与图1、图2、图3和图4的部件相同的部件。
继续图4的示例,虚拟机管理器120可以将命令546发送到处理器核108以切换到第二虚拟机(“VM2”)。由于虚拟机管理器120已经切换了虚拟机,所以触发信号222可以被生成且被检测到,如本文所论述的。虚拟机切换检测器334可以检测触发信号222且标识第二虚拟机现在正在实现于处理器核108上。处理器340可以分析虚拟机与加速器关系数据332且确定映射3和映射4与虚拟机2以及加速器1和2相关联。处理器340随后可以发送写命令238以将映射3写入可重构加速器102且将映射4写入可重构加速器104。
在其他可能的有益之处当中,根据本公开的系统可能够允许虚拟机有效地与相关的可重构加速器一起工作。可以防止虚拟机和与其他虚拟机相关联的加速器一起工作,或者可以防止虚拟机与配置为用于其他虚拟机的加速器一起工作。可以改善安全性,因为虚拟机可以避免与具有在先虚拟机使用过的加速器的处理器一起工作。
图6描绘了根据本文所描述的至少一些实施例布置的通过虚拟机切换来实现重构的示例的过程的流程图。在一些示例中,图6的过程可以利用上述的系统100来实现。
示例的过程可以包括如框S2、S4、S6、S9、S10、S12和/或S14中的一个或多个所图示的一个或多个操作、动作或功能。虽然图示为离散的框,各个框可以分成额外的框、组合成较少的框,或者消除框,取决于期望的实现。
处理可以开始于框S2,“接收从编程器装载到可编程电路的源映射的映射副本”。在框S2中,诸如加速器重构设备的重构设备可以接收从编程器装载到可编程电路的源映射的映射副本。
处理可以从框S2继续到框S4,“将映射副本存储在存储器中”。在框S4中,重构设备可以将映射副本存储在存储器中。
处理可以从框S4继续到框S6,“在接收到映射副本时,确定由处理器来实现特定的虚拟机”。在框S6中,在接收到映射副本时,重构设备可以确定处理器正在实现特定的虚拟机。
处理可以从框S6继续到框S8,“存储特定的虚拟机、映射副本和可编程电路的关联”。在框S8中,重构设备可以存储特定的虚拟机、映射副本和加速器的关联。
处理可以从框S8继续到框S10,“检测触发信号,其中触发信号指示命令已经发送到处理器以从第一虚拟机的执行切换到第二虚拟机”。在框S10中,重构设备可以检测触发信号。触发信号可以指示命令已经发送到处理器,以便处理器从第一虚拟机的执行切换到第二虚拟机。触发信号可以为例如通过虚拟机管理器发送的信号。触发信号可以包括处理器已经访问与第二虚拟机相关联的存储器位置的检测。触发信号可以包括处理器已经将高速缓冲存储器或管线清空的检测。
处理可以从框S10继续到框S12,“响应于检测到触发信号,选择可编程电路和程序,其中可编程电路与第二虚拟机相关联”。在框S12,可重构电路可以标识可编程电路以及与第二虚拟机相关联的程序。
处理可以从框S12继续到框S14,“生成写命令以将程序写入可编程电路”。在框S14,可重构电路可以生成写命令以将程序写入可编程电路。
图7示出了依照本文所描述的至少一些实施例布置的能够用来通过虚拟机切换实现重构的示例的计算机程序产品700。程序产品700可以包括信号承载介质702。信号承载介质702可以包括一条或多条指令704,当通过例如处理器执行时,这些指令可以提供上文参考图1-6所描述的功能。因此,例如,参考系统100,加速器重构设备116可以响应于由介质702传送到系统100的指令704而承担图7中所示的一个或多个框。
在一些实现中,信号承载介质702可以包含计算机可读介质706,诸如但不限于硬盘驱动器、压缩盘(CD)、数字视频盘(DVD)、数字磁带、存储器等。在一些实施方式中,信号承载介质702可以包含可记录介质708,诸如但不限于存储器、读/写(R/W)CD、R/W DVD,等等。在一些实施方式中,信号承载介质702可以包含通信介质710,诸如但不限于数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。因此,例如,程序产品700可以通过RF信号承载介质702传送到系统100的一个或多个模块,其中信号承载介质702由无线通信介质710(例如,符合IEEE 802.11标准的无线通信介质)来传送。
图8是依照本文描述的至少一些实施例布置的布置成借助虚拟机切换来实现重构的示例的计算设备800的框图。在最基本的配置802中,计算设备800通常包括一个或多个处理器804以及系统存储器806。存储器总线806可用于处理器804与系统存储器806之间的通信。
根据所需的配置,处理器804可以是任意类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任意组合。处理器804可以包括诸如级别1高速缓冲存储器810和级别2高速缓冲存储器812的一级或多级高速缓存、处理器核814和寄存器816。示例的处理器核814可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSPCore)或其任意组合。处理器804可以包括诸如可重构加速器102和/或104的可编程电路817。示例的存储器控制器818还可与处理器804一起使用,或者在一些实现中,存储器控制器818可以是处理器804的内部部件。
根据所需的配置,系统存储器806可以是任意类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或其任意组合。系统存储器806可以包括操作系统820、一个或多个应用822以及程序数据824。应用822可以包括通过虚拟机算法826进行的重构,其布置成实施如本文所描述的功能,包括那些参考图1-7的系统100所描述的功能。程序数据824可以包括通过虚拟机切换数据828进行的重构,其可用来如本文所描述的那样通过虚拟机切换实现重构。在一些实施例中,应用822可以布置成在操作系统820上操作程序数据824,使得可以提供通过虚拟机切换的重构。该所描述的基本配置802通过内虚线框内的那些组件图示于图8中。
计算设备800可具有附加的特征或功能以及附加的接口以便于基本配置802与任何所需的设备和接口之间的通信。例如,总线/接口控制器830可用于利于基本配置802与一个或多个数据存储设备832之间经由存储接口总线834的通信。数据存储设备832可以是可移除存储设备836、非可移除存储设备838或者其组合。可移除存储设备和非可移除存储设备的示例包括诸如软盘驱动器和硬盘驱动器(HDD)的磁盘设备、诸如压缩盘(CD)驱动器或数字多功能盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和磁带驱动器,仅列举了几个。示例的计算机存储介质可以包括以用于诸如计算机可读指令、数据结构、程序模块或其它数据的信息的存储的任何方法或技术实现的易失性和非易失性的介质以及可移除和非可移除的介质。
系统存储器806、可移除存储设备836和非可移除存储设备838是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存(flash memory)或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储设备、磁盒、磁带、磁盘存储设备或其它磁存储设备、或者可用于存储所需信息并且可由计算设备800访问的任何其它介质。任意这样的计算机存储介质可以是计算设备800的部件。
计算设备800还可以包括接口总线840,该接口总线用于方便从各接口设备(例如,输出设备842、外围设备接口844和通信设备846)经由总线/接口控制器830到基本配置802的通信。示例的输出设备842包括图形处理单元848和音频处理单元850,其可配置为经由一个或多个A/V端口852与诸如显示器或扬声器的各外部设备通信。示例的外围设备接口844包括串行接口控制器854或并行接口控制器856,其可配置为经由一个或多个I/O端口858与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其它外围设备(例如,打印机、扫描仪等)的外部设备通信。示例的通信设备846包括网络控制器860,其可布置成便于经由一个或多个通信端口864通过网络通信链路与一个或多个其他计算设备862的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可通过计算机可读指令、数据结构、程序模块或诸如载波或其它传输机制的调制数据信号中的其它数据来具体化,并且可以包括任何信息输送介质。“调制数据信号”可以是使得其特性中的一个或多个以将信号中的信息编码的方式设定或改变的信号。通过举例而不是限制的方式,通信介质可以包括诸如有线网络或直接线连接的有线介质,以及诸如声波、射频(RF)、微波、红外(IR)和其它无线介质的无线介质。如本文所使用的术语计算机可读介质可以包括存储介质和通信介质两者。
计算设备800可实现为诸如蜂窝电话、个人数据助理(PDA)、个人媒体播放器设备、无线网页监视设备(wireless web-watch device)、个人头戴送受话器设备、专用设备或包括上述功能中的任一种的混合设备的小形状因数的便携式(或移动)电子设备的一部分。计算设备800还可实现为包括膝上型计算机和非膝上型计算机配置两者的个人计算机。
本公开不限于本文所描述的特定实施例,这些实施例意在各方案的示例。能够在不偏离其精神和范围的情况下做出多种改进和变型,这对于本领域技术人员而言是显而易见的。通过前面的说明,除了本文所列举的那些之外,在本公开的范围内的功能上等同的方法和装置对于本领域技术人员而言将是显而易见的。旨在使这些改进和变型落在所附权利要求书的范围内。本公开仅受所附权利要求书以及这些权利要是所给予权利的等同方案的整个范围所限制。应当理解的是,本公开不限于特定的方法、试剂、化合物组成或生物系统,当然这些会变化。还应理解的是,本文所使用的术语是仅仅是为了描述特定实施例的目的,而不意在限制。
关于本文中基本上任何复数和/或单数术语的使用,本领域技术人员能够根据上下文和/或应用适当地从复数变换成单数和/或从单数变换成复数。为了清晰的目的,本文中明确地阐明了各单数/复数的置换。
本领域技术人员将理解,一般地,本文所使用的术语,尤其是随附权利要求(例如,随附权利要求的主体)中所使用的术语,通常意在为“开放式”术语(例如,术语“包括”应当解释为“包括但不限于”,术语“具有”应解释为“至少具有”,术语“包括”应解释为“包括但不限于”,等等)。本领域技术人员还理解,如果意图表达引导性权利要求记述项的具体数量,该意图将明确地记述在权利要求中,并且在不存在这种记述的情况下,不存在这样的意图。例如,为辅助理解,下面的随附权利要求可能包含了引导性短语“至少一个”和“一个或多个”的使用以引导权利要求记述项。然而,这种短语的使用不应解释为暗指不定冠词“一”或“一个”引导权利要求记述项将包含该所引导的权利要求记述项的任何特定权利要求局限于仅包含一个该记述项的实施例,即使当同一权利要求包括了引导性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词(例如,“一”和/或“一个”应当解释为表示“至少一个”或“一个或多个”);这同样适用于对于用于引导权利要求记述项的定冠词的使用。另外,即使明确地记述了被引导的权利要求记述项的具体数量,本领域技术人员将理解到这些记述项应当解释为至少表示所记述的数量(例如,没有其它修饰语的裸记述“两个记述项”表示至少两个记述项或两个以上的记述项)。此外,在使用类似于“A、B和C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B和C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的系统)。在使用类似于“A、B或C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B或C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的系统)。本领域技术人员将进一步理解,呈现两个以上可选项的几乎任何分离词和/或短语,无论是在说明书、权利要求或附图中,都应理解为设想包括一项、任一项或两项的可能性。例如,术语“A或B”将理解为包括“A”或“B”或“A和B”的可能性。
另外,在根据马库什组(Markush group)描述本公开的特征或方案的情况下,本领域技术人员将理解的是本公开也因此以马库什组的任何独立成员或成员的子组来描述。
本领域技术人员将理解的是,为了任何以及全部的目的,诸如在提供所撰写的说明书方面,本文所公开的全部范围也涵盖了任何和全部的可能的子范围及其子范围的组合。能够容易地认识到任何所列范围都充分地描述了同一范围并且使同一范围分解成至少均等的一半、三分之一、四分之一、五分之一、十分之一等等。作为非限制示例,本文所论述的每个范围能够容易地分解成下三分之一、中三分之一和上三分之一,等等。本领域技术人员还将理解的是,诸如“多达”、“至少”、“大于”、“小于”等所有的语言包括所记述的数量并且是指如上文所论述的随后能够分解成子范围的范围。最后,本领域技术人员将理解的是,范围包括每个独立的成员。因此,例如,具有1-3个单元的组是指具有1个、2个或3个单元的组。类似地,具有1-5个单元的组是指具有1个、2个、3个、4个、或5个单元的组,等等。
虽然本文公开了各个方案和实施例,但是其它的方案和实施例对于本领域技术人员而言将是显而易见的。因此,本文所公开的各个方案和实施例是为了示例的目的而不意在限制,真正的范围和精神是通过随附的权利要求表示的。

Claims (24)

1.一种重构可编程电路的方法,所述方法包括:
检测触发信号,其中所述触发信号指示命令已经发送到处理器以从第一虚拟机的执行切换到第二虚拟机;
响应于检测到所述触发信号,选择可编程电路和程序,其中所述可编程电路与所述第二虚拟机相关联,并且其中选择所述可编程电路和所述程序包括:标识与所述第二虚拟机相关联的加速器和加速器映射;以及
生成写命令以将所述程序写入所述可编程电路。
2.如权利要求1所述的方法,进一步包括:
从虚拟机管理器接收所述触发信号,其中所述触发信号指示所述虚拟机管理器已经发送所述命令以从所述第一虚拟机的执行切换到所述第二虚拟机。
3.如权利要求1所述的方法,进一步包括:
接收装载到所述可编程电路中的源加速器映射的加速器映射副本;
将所述加速器映射副本存储在存储器中。
4.如权利要求3所述的方法,其中生成所述写命令包括生成将所述加速器映射副本写入所述加速器的写命令。
5.如权利要求1所述的方法,进一步包括:
接收装载到所述加速器的源映射的映射副本;
将所述映射副本存储在存储器中;
响应于接收到所述映射副本,确定在所述处理器上实现的特定虚拟机;
确定在所实现的所述特定的虚拟机、所述映射副本和所述加速器之间的关联;
将所述关联存储在所述存储器中;以及
响应于所述关联的所述确定,利用存储在所述存储器中的所述映射副本来生成所述写命令。
6.如权利要求1所述的方法,其中检测所述触发信号包括:响应于来自虚拟机管理器的信号而检测所述触发信号。
7.如权利要求1所述的方法,其中检测所述触发信号包括:检测所述处理器已经访问与所述第二虚拟机相关联的存储器位置。
8.如权利要求1所述的方法,其中检测所述触发信号包括:检测所述处理器已经将高速缓冲存储器或管线清空。
9.如权利要求1所述的方法,进一步包括:
接收装载到所述加速器中的源映射的映射副本;
将所述映射副本存储在存储器中;
响应于接收到所述映射副本,确定由所述处理器实现的特定虚拟机;
确定在所实现的所述特定的虚拟机、所述映射副本和所述加速器之间的关联;
将所述关联存储在所述存储器中;
响应于所述关联的所述确定,利用存储在所述存储器中的所述映射副本来生成所述写命令;以及
其中检测所述触发信号包括检测所述处理器已经访问与所述第二虚拟机相关联的存储器位置。
10.如权利要求1所述的方法,其中所述可编程电路包括一个或多个可重构的门和/或开关。
11.一种用来重构可编程电路的设备,所述设备包括:切换检测器,所述切换检测器用来检测触发信号,其中所述触发信号指示命令已经发送到第一处理器以从第一虚拟机的执行切换到第二虚拟机;
第二处理器,其配置为与所述切换检测器通信;
其中所述第二处理器用来:
响应于通过所述切换检测器检测到所述触发信号,标识用于与所述第二虚拟机相关联的可编程电路的加速器和加速器映射;以及
生成写命令以将所述加速器映射写入所述加速器。
12.如权利要求11所述的设备,其中:
所述触发信号指示虚拟机管理器已经发送所述命令以从所述第一虚拟机的执行切换到所述第二虚拟机。
13.如权利要求11所述的设备,进一步包括存储器,其包括所述第二虚拟机、所述加速器和所述加速器映射之间的关联。
14.如权利要求11所述的设备,其中所述第二处理器进一步用来:
接收装载到所述可编程电路的源映射的映射副本;
将所述映射副本存储在存储器中;以及
基于存储在所述存储器中的所述映射副本来生成所述写命令。
15.如权利要求11所述的设备,其中所述第二处理器进一步用来:
接收装载到所述加速器的源映射的映射副本;
将所述映射副本存储在存储器中;
响应于接收到所述映射副本,确定由所述第一处理器实现的特定虚拟机;
确定在所实现的所述特定的虚拟机、所述映射副本和所述加速器之间的关联;
将所述关联存储在所述存储器中;以及
响应于所述关联的所述确定,基于存储在所述存储器中的所述映射副本来生成所述写命令。
16.如权利要求11所述的设备,其中所述切换检测器用来响应于来自虚拟机管理器的信号而检测所述触发信号。
17.如权利要求11所述的设备,其中所述切换检测器用来通过检测虚拟机管理器已经访问与所述第二虚拟机相关联的存储器位置来检测所述触发信号。
18.如权利要求11所述的设备,其中所述切换检测器用来通过检测所述第一处理器已经将高速缓冲存储器或管线清空来检测所述触发信号。
19.一种用来重构可编程电路的系统,所述系统包括:
第一处理器;
虚拟机管理器,其与所述第一处理器耦合并且用来发送命令到所述第一处理器以从第一虚拟机的执行切换到第二虚拟机,其中所述虚拟机管理器进一步用来响应于所述命令而生成触发信号;
可编程电路;
重构设备,其与所述虚拟机管理器和所述可编程电路耦合,其中所述重构设备包括第二处理器;
其中所述第二处理器用来:
检测所述触发信号;
响应于检测到所述触发信号,标识所述可编程电路和与所述第二虚拟机相关联的映射;以及
生成写命令以将所述映射写入所述可编程电路;
其中所述可编程电路包括加速器,并且所述系统进一步包括:用来将源映射装载到所述加速器中的加速器编程器。
20.如权利要求19所述的系统,
其中所述第二处理器进一步用来:
接收所述源映射的映射副本;
将所述映射副本存储在存储器中;以及
基于存储在所述存储器中的所述映射副本来生成所述写命令。
21.如权利要求19所述的系统,其中所述第二处理器进一步用来:
接收所述源映射的映射副本;
将所述映射副本存储在存储器中;
响应于接收到所述映射副本,确定由所述第一处理器来实现的特定虚拟机;
确定在所实现的所述特定的虚拟机、所述映射副本和所述加速器之间的关联;
将所述关联存储在所述存储器中;以及
响应于所述关联的所述确定,基于存储在所述存储器中的所述映射副本来生成所述写命令。
22.如权利要求19所述的系统,其中所述重构设备包括:切换检测器,其用来通过检测所述虚拟机管理器已经访问与所述第二虚拟机相关联的存储器位置来检测所述触发信号。
23.如权利要求19所述的系统,其中所述重构设备包括:切换检测器,其用来响应于来自所述虚拟机管理器的信号而检测所述触发信号。
24.如权利要求19所述的系统,其中所述重构设备包括:切换检测器,其用来响应于检测所述第一处理器已经将高速缓冲存储器或管线清空而检测所述触发信号。
CN201380077736.2A 2013-06-25 2013-06-25 用来重构可编程电路的方法、设备以及系统 Expired - Fee Related CN105393218B (zh)

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 (2)

Publication Number Publication Date
CN105393218A CN105393218A (zh) 2016-03-09
CN105393218B true CN105393218B (zh) 2019-03-01

Family

ID=52142430

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380077736.2A Expired - Fee Related CN105393218B (zh) 2013-06-25 2013-06-25 用来重构可编程电路的方法、设备以及系统

Country Status (3)

Country Link
US (1) US9619265B2 (zh)
CN (1) CN105393218B (zh)
WO (1) WO2014209286A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
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
US10740146B2 (en) * 2017-02-10 2020-08-11 Xilinx, Inc. Migrating virtual machines between compute systems by transmitting programmable logic accelerator state
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101383688A (zh) * 2007-09-06 2009-03-11 凹凸科技(中国)有限公司 数据通信装置及保持数据通信装置高可用性的方法
CN102713847A (zh) * 2009-12-29 2012-10-03 超威半导体公司 处理器内核的监管程序隔离

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438737B1 (en) * 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US7703107B2 (en) 2000-04-06 2010-04-20 Infineon Technologies Ag Virtual machine interface for hardware reconfigurable and software programmable processors
US8020176B2 (en) 2000-04-06 2011-09-13 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
US20050132363A1 (en) * 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
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
JP4585463B2 (ja) 2006-02-15 2010-11-24 富士通株式会社 仮想計算機システムを機能させるためのプログラム
US8082418B2 (en) 2007-12-17 2011-12-20 Intel Corporation Method and apparatus for coherent device initialization and access
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
KR101850318B1 (ko) 2011-12-09 2018-04-20 삼성전자주식회사 가상 메모리 관리 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101383688A (zh) * 2007-09-06 2009-03-11 凹凸科技(中国)有限公司 数据通信装置及保持数据通信装置高可用性的方法
CN102713847A (zh) * 2009-12-29 2012-10-03 超威半导体公司 处理器内核的监管程序隔离

Also Published As

Publication number Publication date
US20150205629A1 (en) 2015-07-23
US9619265B2 (en) 2017-04-11
CN105393218A (zh) 2016-03-09
WO2014209286A1 (en) 2014-12-31

Similar Documents

Publication Publication Date Title
CN105393218B (zh) 用来重构可编程电路的方法、设备以及系统
KR101744126B1 (ko) 비대칭적 프로세서 코어 간의 협력적 실행을 위한 기법
US8954993B2 (en) Local message queue processing for co-located workers
CN104471540B (zh) 通过统一存储器架构的存储器共享
CN106716361B (zh) 用于运行时例程冗余跟踪的编译器高速缓存
CN104884145B (zh) 指令合并优化
CN108696461A (zh) 用于智能网络接口卡的共享存储器
US9405691B2 (en) Locating cached data in a multi-core processor
CN105474127B (zh) 用于多处理器系统的虚拟每处理器定时器
US9251048B2 (en) Memory page management
WO2014105019A1 (en) Virtual machine monitor (vmm) extension for time shared accelerator management and side-channel vulnerability prevention
CN105210038B (zh) 核亲和性位掩码变换
US9483318B2 (en) Distributed procedure execution in multi-core processors
CN105849669A (zh) 用于单个通道内的dram空间联合的方法和装置
CN108694076A (zh) 多节点存储操作
CN108140234A (zh) 基于命令流标记的gpu操作算法选择
CN106716949A (zh) 减少具有扩展mesi协议的多处理器系统的互连流量
US10204060B2 (en) Determining memory access categories to use to assign tasks to processor cores to execute
EP3779673B1 (en) Methods and apparatus to configure heterogenous components in an accelerator
CN108470008B (zh) 串口数据读写方法、装置、计算机设备和存储介质
US20180157605A1 (en) Configuration of a memory controller for copy-on-write
US20220108135A1 (en) Methods and apparatus for performing a machine learning operation using storage element pointers
US10241922B2 (en) Processor and method
US10223260B2 (en) Compiler-generated memory mapping hints
CN105074677B (zh) 用于加速器将数据存储在缓冲器中的方法的方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190301

Termination date: 20190625