CN102915236A - 使用硬件抽象执行软件应用程序的方法和系统 - Google Patents
使用硬件抽象执行软件应用程序的方法和系统 Download PDFInfo
- Publication number
- CN102915236A CN102915236A CN2012102186097A CN201210218609A CN102915236A CN 102915236 A CN102915236 A CN 102915236A CN 2012102186097 A CN2012102186097 A CN 2012102186097A CN 201210218609 A CN201210218609 A CN 201210218609A CN 102915236 A CN102915236 A CN 102915236A
- Authority
- CN
- China
- Prior art keywords
- software application
- hardware platform
- hdl
- hardware
- assembly
- 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.)
- Granted
Links
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/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/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/45566—Nested virtual machines
Abstract
本发明涉及一种使用虚拟机(VM)(205)执行软件应用程序(210)的方法和系统。确定目标硬件平台(215)的硬件描述语言(HDL)描述。基于HDL描述,可编程硬件组件(步骤315)配置为功能上等效于目标硬件平台(215)。使用经配置的可编程硬件组件(步骤315)执行该软件应用程序(210),例如在VM(205)中通过执行该软件应用程序(210),转而,由经配置的可编程硬件组件(步骤315)执行。
Description
技术领域
本发明一般涉及使用硬件抽象的软件应用程序的方法和系统。尤其,本发明一般涉及现有软件的再利用,并且更具体地,涉及使用硬件抽象执行软件应用程序(例如,经认证的软件应用程序)的方法和系统。
背景技术
现有软件应用程序与随时间被写的数千亿行源代码有关。通常,该源代码转换(例如,编译)为通过特定的物理硬件平台可执行的目标代码。物理的硬件设备最终也变得过时。一旦出现该硬件过时,即使原始设计保持所需功能,但要获得特定的硬件平台已不再可能。通常,系统供应商无法控制何时硬件制造商决定停止其硬件芯片的生产。因此,使用传统的软件开发和交付方法的与具体硬件平台相关的软件应用程序,在目标硬件平台过时的时候,尤其是软件应用程序的源代码不可再用的情况下,必须被重新实施(例如,重写),。
进一步地,在关键任务环境下使用软件应用程序之前,一些软件应用程序必须相对于目标硬件平台进行认证。新硬件平台上该软件的认证,可将相当大的延迟和/或成本引入所用软件的交付过程,同时不添加附加功能价值。
发明内容
一方面,提供一种用于执行软件应用程序的方法,其中该软件应用程序经认证通过目标硬件平台执行。本方法包括确定目标硬件平台的硬件描述语言(HDL)描述。基于HDL描述,硬件组件配置为在功能上等效于目标硬件平台。使用被配置的硬件组件执行软件应用程序。
另一方面,提供在使用虚拟机(VM)执行软件应用程序中使用的设备。该设备包括存储设备和耦合至该存储设备的可编程硬件组件。存储设备配置为存储虚拟机(VM)和软件应用程序。基于目标硬件平台的硬件描述语言(HDL)描述,该可编程硬件组件被编程。可编程硬件组件被编程,从而执行该软件应用程序,该软件应用程序经认证通过目标硬件平台和HDL描述之中的至少一个执行。
又一个方面,提供了一种用于执行使用虚拟机(VM)的软件应用程序的方法。本方法包括选择执行VM的目标硬件平台。确定目标硬件平台的硬件描述语言(HDL)描述。基于HDL描述,可编程硬件组件被编程,然后使用被编程的可编程硬件组件执行VM。
附图说明
图1示出示例性计算设备的方框图。
图2示出计算设备示例性配置的方框图,其中该计算设备可用于使用虚拟机来执行软件应用程序。
图3示出在使用VM执行软件应用程序中使用的示例性方法的流程图。
图4示出计算设备示例性配置的方框图,其中该计算设备可使用第二虚拟机用于为软件应用程序添加功能,其中第二虚拟机通过主机操作系统执行。
图5示出计算设备示例性配置的方框图,其中该计算设备使用第二虚拟机用于为软件应用程序添加功能,其中第二虚拟机通过本地虚拟化层执行。
图6示出计算设备示例性配置的方框图,其中该计算设备可被用于使用第二软件应用程序向通过虚拟机执行的一软件应用程序添加功能,其中第二软件应用程序由主机OS执行,其中该主机OS也执行虚拟机。
具体实施方式
通过有效利用由硬件描述语言(HDL)和虚拟化提供的硬件抽象,在此提供的实施例促进了在新硬件平台上重用遗留软件。更具体地,可使用硬件平台的虚拟化和硬件描述语言(HDL)描述,来获得硬件和软件平台,其能够用于延长使用期限(例如,数十年),这将比特定的硬件平台的使用寿命要长。即使当软件的源代码不可再用和/或没有包涵关于新硬件平台的软件认证费用,该实施例还能够使该软件继续使用。
图1示出示例性计算设备100的方框图。在示例性实施例中,计算设备100包括通信结构102,其提供处理器单元104、内存设备106、永久性存储器108、通信单元110、输入/输出(I/O)单元112以及例如显示器114的展示界面之间的通信。此外,或可选地,展示界面可包括音频设备(未示出)和/或任何能够将信息传递给用户的设备。
处理器单元104执行软件指令,其中该指令可被装载至内存设备106。依据特定实施例,处理器单元104可以是一个或更多处理器或可包括多个处理器核心。进一步地,使用一个或更多异构处理器系统可实施处理器单元104,其中在异构处理器系统中,在单个芯片上包括主处理器和辅助处理器。在另一个实施例中,处理器单元104可以是含有相同类型的多个处理器的同构处理器系统。
内存设备106和永久性存储器108为存储设备的例子。如在此使用的,存储设备是任何能够暂时和/或永久地存储信息的硬件部件。例如,但不限于,内存设备106可以是随机存取存储器和/或任何其他适合的易失性或非易失性存储设备。依据特定实施例,永久性存储器108可以采用多种形式,并且永久性存储器108可含有一个或更多组件或设备。例如,永久性存储器108可以是硬盘、闪存、可重写光盘、可重写磁带和/或上述一些组合。永久存储器108使用的介质也可以是可移动的。例如,但不限于,可移动硬盘可用于永久存储器108。
存储设备配置为用于存储在此描述的用于过程中的数据,例如内存设备106和/或永久存储器108。例如,存储设备可存储一个或更多软件应用程序(例如,包括源代码和/或计算机可执行指令),例如虚拟机和/或其他软件应用程序,和/或适用于在此描述的方法的任何其他信息。
在这些例子中,通信单元110提供了与其他计算设备或系统的通信。在示例性实施例中,通信单元110包括一个或更多网络接口卡。通信单元110通过使用物理和/或无线通信链路可提供通信。
输入/输出单元112能够用于与其他可连接至计算设备100的设备之间进行输入和输出数据。例如,但不限于,通过用户输入设备,例如键盘和/或鼠标,输入/输出单元112可提供用户输入连接。进一步,输入/输出单元112可将输出发送至打印机。显示器114提供一种为用户显示信息的装置。例如,展示界面,诸如显示器114可显示图形用户界面,例如在此所述的那些界面。
操作系统和应用或程序的指令位于永久存储器108中。这些指令可被装载至内存设备106中以便由处理器单元104执行。通过处理器单元104使用计算机实施指令和/或计算机可执行指令,执行不同实施例过程,其中这些指令可位于存储装置中,例如内存设备106。这些指令可被称为程序代码(例如,目标代码和/或源代码),其可由处理器单元104中的处理器读取和执行。不同实施例中的程序代码可储存在不同物理或有形计算机可读介质上,例如内存设备106或永久存储器108。
程序代码116可以功能或函数形式位于一个或更多存储设备上(例如,内存设备106、永久存储器108和/或计算机可读介质118),该存储设备选择性地可移动,并且可被装载至或传输至计算设备100上以便由处理器单元104执行。在这些例子中,程序代码116和计算机可读介质118形成计算机程序产品120。例如,在一个例子中,计算机可读介质118可以是有形的形式,例如,可被插入或放至驱动器或其他设备内的光盘或磁盘,其中驱动器或其他设备为传输至存储器设备的永久存储器108一部分,例如硬盘,其为永久存储器108一部分。以有形的形式,计算机可读介质118还可采用连接至计算设备100的硬盘、优盘或闪存的形式。计算机可读介质118的有形形式还被称为计算机可读存储介质。在一些实例中,计算机可读介质118可以是不可移动的。
可选地,通过到通信单元110的通信链路和/或通过到输入/输出单元112的连接,程序代码116从计算机可读介质118可被传输至计算设备100。在示例性例子中,通信链路和/或连接可以是物理的或无线的。计算机可读介质还可采用非有形介质,例如通信链路或含有程序代码的无线传输。
在一些示例性实施例中,通过网络,程序代码116可从另一个计算设备或计算机系统下载至永久存储器108以便在计算设备100中使用。例如,通过网络,存储在服务器中的计算机可读存储介质中的程序代码可下载至计算设备100。提供程序代码116的计算设备可以是服务器计算机、工作站、客户端计算机或一些其他能够存储和传输程序代码116的设备。
程序代码116可被编组至功能相关的计算机可执行组件中。例如,程序代码116可包括虚拟机、软件应用程序、管理程序和/或适合用于在此所述的方法的任何组件。每个组件可包括计算机可执行指令,当处理器单元104执行该指令时,可使得处理器单元104执行在此描述的一个或更多操作。
在此说明的计算设备100的不同组件,并不意味着提供可实施不同的实施例的方式上的结构限制。可在计算机系统中实施不同的示例性实施例,其包括除了或代替那些已示出的计算设备100的组件。例如,图1示出的其他组件能与示出的示例性例子不同。
例如,计算设备100的存储设备是任何可存储数据的硬件装置。内存设备106、永久存储器108和计算机可读介质118是有形的存储设备的例子。
在另一个例子中,总线系统可被用于实施通信结构102,并且可包括一个或更多总线,例如系统总线或输入/输出总线。当然,可使用任何适合的结构类型实施总线系统,其中适合的结构类型提供连接至总线系统的不同组件或设备之间的数据传输。此外,网络接口可包括一个或更多用于传输和接收数据的设备,例如调制解调器或网络适配器。进一步地,存储装置可以是,例如,但不限于,内存设备106或高速缓存,如可用在在通信结构102中的接口和内存控制器集线器中的这种组件。
图2示出计算设备(例如,计算设备100)的示例性配置200的方框图,其中计算设备使用虚拟机(VM)可用于执行软件应用程序。图3示出在使用VM 205执行软件应用程序中使用的示例性方法的流程图。
参考图2和图3,在示例性实施例中,目标硬件平台被选择(步骤305用于执行VM和/或原软件应用程序210。例如,目标硬件平台可以是当前直接执行软件应用程序210的硬件平台和/或当前由VM 205执行软件应用程序的硬件平台。此外,或可选地,目标硬件平台可以是VM 205所需执行的硬件平台。在一些实施例中,目标硬件平台与指令集架构(ISA)和/或实施ISA的微体系结构相关。
确定(步骤310目标硬件平台的硬件描述语言(HDL)描述。例如,HDL描述可从目标硬件平台的供应商(例如,制造商)获得、基于目标硬件平台的样品形成和/或基于新硬件平台的需要的操作形成。HDL描述可被理解为目标硬件平台(例如,微体系结构)的抽象。
基于HDL描述可配置(例如,被编程和/或形成)(步骤315硬件组件,例如可编程硬件组件和/或处理器。例如,可编程硬件组件可包括,但不限于,可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)和/或任何可被用于形成可重配置的数字电路的设备。基于HDL描述,可编程硬件组件被编程。此外,或可选地,基于HDL描述,可形成处理器,例如,专用集成电路(ASIC)。经配置的硬件组件可被称为HDL硬件平台215。
在示例性实施例中,基于HDL描述的硬件组件配置(步骤315包括将硬件组件配置成至少部分功能上等效于由HDL描述的目标硬件平台,以便通过目标硬件平台执行的软件应用程序210的认证可适用于由HDL硬件平台215执行软件应用程序210。
除了功能等效于目标硬件平台之外,HDL硬件平台215可包括目标硬件平台所不包括的特征。在一些实施例中,硬件组件配置(步骤315了仿真加速,以便该加速包括于HDL硬件平台215内。仿真加速对于虚拟平台软件开发设计是有价值的,其中虚拟平台代表底层硬件的抽象。例如,虚拟平台可被用于开发嵌入系统软件。传统的虚拟平台比底层硬件执行速度(例如,至少10%的速度)要慢的多,通常减慢了软件开发过程。
在一些实施例中,通过将附加的汇编指令添加至核心处理器,仿真加速器被添加至HDL硬件平台215。在一个例子中,在软件功能中实施相应于目标硬件平台的汇编指令,例如“立即加法”(“addi”)指令。在传统仿真中,为第二硬件平台可编译软件功能。为了实现仿真加速,在HDL描述中,软件功能逻辑可作为汇编指令被实施,例如“thp_addi”。因此,配置(步骤315硬件组件将使得HDL硬件平台215包括汇编指令的实施。在示例性实施例中,包括在HDL描述中的仿真加速处理寄存器和HDL描述自身的状态信息。中断和软件故障也可由HDL描述逻辑来调整。进一步地,HDL硬件平台内的资源受限时,物理内存和堆栈可与HDL硬件平台215分开安置,仿真处理器的存储管理单元可被包括于HDL描述内。
在一些实施例中,读取-解码-执行仿真方法与仿真加速器一起使用。尽管所有虚拟化和仿真可被移至HDL描述中,但在一些实施例中,在HDL描述中仅实施处理器仿真,而其他特征,例如I/O设备,在HDL描述中则被省略。
使用HDL硬件平台215执行软件应用程序210。在示例性实施例中,使用HDL硬件平台215执行(步骤320)VM 205,并且使用VM205执行(步骤325)软件应用程序210。更为具体地,可通过主机操作系统(OS)220执行VM 205,其中主机操作系统(OS)220由HDL硬件平台215直接执行。主机OS 220为VM 205执行虚拟层或虚拟化层(virtualization layer)225,其执行客户OS 230,其中客户OS 230可与主机OS 220相同或不同。客户OS 230转而执行软件应用程序210。
虚拟化层225和/或VM 205向客户OS 230提供HDL硬件平台215的抽象,其可被称为“虚拟化的”硬件。虚拟化的硬件可包括任何组件的抽象,其中该组件被包括于计算设备100(如图1所示)内,例如,但不限于,处理器单元104和内存106。
在一些实施例中,HDL硬件平台215包括多个输入/输出(I/O)设备235(例如,如图1所示,由输入/输出单元112),其促进设备间的交互,例如传感器、用户输入设备、控制设备(例如,马达)和/或其他可向计算设备(如图1所示)100提供输入和/或接收计算设备100的输出。例如,I/O设备235可包括串联通信端口和/或并行通信端口。
主机OS 220包括可被软件使用的I/O设备驱动240,其中所述软件由主机OS执行来访问I/O设备235。在示例性实施例中,虚拟化层225提供虚拟I/O设备245,其通过I/O设备驱动240相应于或“映射至”I/O设备235。因此,虚拟化层225将I/O设备235抽象提供至VM 205。类似于主机OS 220,客户OS 230包括可被软件使用的I/O设备驱动250,其中该软件可由客户OS 230执行访问虚拟I/O设备245。在一些实施例中,不同类型的I/O设备相互映射。例如,利用在虚拟化层225中进行的翻译,虚拟通用串行总线(USB)设备可被映射至物理的以太网设备。
显著地,因为VM 205仅访问由虚拟化层225提供的虚拟化硬件,VM 205和由VM 205执行的软件(例如,客户OS 230和/或软件应用程序210)与虚拟化层225的底层物理硬件的变化相隔离(例如,不受影响)。在示例性实施例中,目标硬件平台可被视为第一硬件平台,而软件应用程序210与同第一硬件平台不同的第二硬件平台有关(例如,由其执行)。VM 205配置为向软件应用程序210提供仿真第二硬件平台的虚拟硬件平台。因此,即使与客户OS 230和/或软件应用程序210有关的源代码不可用,或者不可修改以便通过新的硬件平台执行,该软件也可由VM 205执行。
在示例性实施例中,软件应用程序210经认证由目标硬件平台和/或一个或更多设备(例如,另一个HDL硬件平台215)执行,其中该设备基于描述目标硬件平台的HDL描述而配置。例如,对于通过目标硬件平台执行的软件应用程序210,已成功完成软件应用程序210的综合检验和/或验证测试。在这样的实施例中,相对于通过目标硬件平台执行的软件应用程序210的认证,可适用于通过HDL硬件平台215执行的软件应用程序。因此,可避免与认证过程相关的至少一些努力(例如,检验和/或验证测试)。
在一些实施例中,重复执行方法300。在一种情景中,基于HDL描述而配置(步骤315)的硬件组件将变得不可用。例如,硬件组件的供应商(例如,制造商)可停止硬件组件的生产。在这样的情景中,原始配置的或第一硬件组件与第一硬件规范有关,并且可取地是通过与第二硬件规范有关的替换或第二硬件组件执行软件应用程序210。例如,第二硬件组件可以是对第一硬件组件的修正或可与第一硬件组件无关。
因为已确定(步骤310)目标硬件平台的HDL描述,在该实施例中,如上所述,通过基于HDL描述配置(步骤315)的第二硬件组件,形成第二HDL硬件平台215,可实现第二硬件组件与软件应用程序210的兼容性。在示例性实施例中,基于与配置(步骤315)第一硬件组件所使用的相同HDL描述,配置(步骤315)第二硬件组件使得第二硬件组件功能上等效于第一硬件组件。因此,如上所述,如果软件应用程序210经认证由第一硬件组件执行,并且将第二硬件组件配置(步骤315)为功能上等效于第一硬件组件,可使得该认证适用于由第二硬件组件执行的软件应用程序210。
在这样的情境中,第一硬件组件可被视为执行VM 205的第一实例,其执行软件应用程序210的第一实例。借助于按以上描述配置的第二硬件组件,可使用第二硬件组件执行(步骤320)VM 205的第二实例,以及使用该VM 205的第二实例可执行(步骤325)软件应用程序210的第二实例。
在一些实施例中,添加软件应用程序210不包括的功能,而无需直接修改软件应用程序210。图4示出计算设备示例性配置400的方框图,其中该计算设备可被用于为软件应用程序210添加功能,其中使用由主机操作系统220执行的第二虚拟机410,通过第一VM 405执行软件应用程序210。
如上所示,在图4所示实施例中,第一VM 405执行原始软件应用程序210。通过第一虚拟I/O设备415延伸软件应用程序210的操作,其中该第一虚拟I/O设备415通过第一虚拟化层420被提供至第一VM405。第一虚拟化层420由主机OS 425执行,主机OS 425也执行第二虚拟化层430。第二虚拟化层430为第二VM 410提供第二虚拟I/O设备435,第二虚拟I/O设备435映射至第一虚拟I/O设备415,其中第二VM 410通过I/O设备驱动440访问第二虚拟I/O设备435。
由第二VM 410执行第二软件应用程序445,并且第二软件应用程序445提供原始软件应用程序210未包括的附加功能。使用第一虚拟I/O设备415和第二虚拟I/O设备435,至少部分地,通过路由原始软件应用程序210和第二软件应用程序445之间的数据能够,使用这样的附加功能。在示例性实施例中,第二软件应用程序445接收软件应用程序210的数据(例如,命令和/或请求),并且基于在第二软件应用程序445中实施的需求和/或规则响应该数据。例如,软件应用程序210可将用于控制设备的命令传输至第一虚拟I/O设备415。通过第一虚拟I/O设备415经过第二虚拟I/O设备435,命令可被路由至第二软件应用程序445。第二软件应用程序445可将命令传递到原始目的地(例如,控制设备),或基于在第二软件应用程序445中实施的需求和/或规则可修改和/或阻止命令。进一步地,基于该需求和规则,第二软件应用程序445经过第二虚拟I/O设备435和第一虚拟I/O设备415可将响应传输至原始软件应用程序210。
在一些实施例中,附加功能可由第二虚拟化层支持。图5示出计算设备示例性配置500的方框图,其中该计算设备可使用第二本地VM515为软件应用程序210添加功能,其中该软件应用程序210通过第一本地VM 510内的VM 505执行。
在示例性实施例中,第一本地VM 510和第二本地VM 515访问由本地虚拟化层520提供的虚拟化硬件,其中本地虚拟化层520由HDL硬件平台525直接执行(例如,无需介入OS)。例如,本地虚拟化层520可向第一本地VM 510提供第一虚拟I/O设备530,以及向第二本地VM 515提供第二虚拟I/O设备535,第二虚拟I/O设备535映射至虚拟I/O设备530。因此,如上参考图4所述,数据,如命令和/或请求,可从原始软件应用程序210路由至由第二本地VM 515执行的第二软件应用程序540,从而实现功能延伸。通过消除软件应用程序210、540和HDL硬件平台525之间的抽象层次,由本地虚拟化层520执行的本地VM 510、515的使用可促进改进系统性能。
在一些实施例中,附加功能可由在主机OS中直接执行的软件支持。图6示出计算设备示例性配置600的方框图,其中使用由主机OS615执行的第二软件应用程序610,该计算设备可用于为软件应用程序210添加功能,其中通过VM 605执行该软件应用程序210,该主机OS615也执行VM 605。在示例性实施例中,主机OS 615为VM 605提供虚拟化层620。虚拟化层620包括虚拟I/O设备625,通过虚拟I/O设备625软件应用程序210传输数据,例如命令和/或请求。如上参考图4所述,第二软件应用程序610配置为与虚拟I/O设备625直接通信,以便第二软件应用程序610可延伸原始软件应用程序210功能。
根据图1-6以及详细的描述,公开了在使用虚拟机(VM)205执行软件应用程序210中使用的方法,本方法包括选择用于执行VM 205的目标硬件平台215;确定目标硬件平台的硬件描述语言(HDL)描述,基于HDL描述(步骤315)为可编程硬件组件编程,以及使用被编程的可编程硬件组件(步骤315)执行VM 205。在一个变型中,本方法可包括使用VM 205执行软件应用程序210,所述VM 205由被编程的可编程硬件组件(步骤315)执行,其中软件应用程序210经认证在目标硬件平台215上执行,其中基于HDL描述,为可编程硬件组件(步骤315)编程包含将可编程硬件组件(步骤315)配置成功能上等效于目标硬件平台215,并且其中由目标硬件平台215执行的软件应用程序210的认证适用于由被编程的可编程硬件组件(步骤315)执行的软件应用程序210。在一个变型(变化的实施例)中,选择目标硬件平台215包括选择当前通过VM 205在其上执行软件应用程序210的硬件平台。在一个变型中,选择目标硬件平台215可包括选择VM 205需要在其上执行的硬件平台。
在又一个变型中,其中执行VM 205包括使用与第一硬件规范有关的第一可编程硬件组件,执行VM 205的第一实例,所述方法可还包括基于HDL描述,为与第二硬件规范有关的第二可编程硬件组件编程;以及使用第二可编程硬件组件执行VM 205的第二实例。
在又一个变型中,其中基于HDL描述,为第二可编程硬件组件215编程,包括将第二可编程硬件组件215配置成功能上等效于第一可编程硬件组件;其中软件应用程序210经认证在第一可编程硬件组件(步骤315)上执行,并且将第二可编程硬件组件(步骤315)配置成功能上等效于第一可编程硬件组件(步骤315)导致下列情况,即由第一可编程硬件组件(步骤315)执行的软件应用程序210的认证适用于由第二可编程硬件组件215执行的软件应用程序210。在又一个变型中,本方法可还包括使用VM 205的第一实例执行软件应用程序210的第一实例,以及使用VM 205的第二实例执行软件应用程序210的第二实例,其中软件应用程序210经认证在由HDL描述所描述的目标硬件平台215上执行。
为了例示和说明,给出了不同优选实施例的说明,这不是为了穷举或限制本发明于公开形式。许多改变和变型对于本领域技术人员是显而易见的。进一步地,在与其他优选实施例比较时,不同优选实施例可提供不同优势。选择和描述实施例或所选实施例是为了更好地解释本实施例、实际应用的确定原则,从而使得本领域一般技术人员能够理解不同实施例的公开,同时考虑适用于特定用途的不同改变。
该书面描述使用例子公开包括最佳模式的不同的实施例,从而使任何本领域技术人员能够实施那些实施例,其包括制作和使用任何设备或系统,以及执行任何包括的方法。可专利的保护范围由权利要求限定,并且可包括本领域技术人员想到的其他例子。如果例子具有与权利要求字面语言并无相异的结构元件,或者如果例子包括与权利要求字面语言有非实质性差异的等效结构,这样的其他例子意在包含于权利要求范围内。
Claims (10)
1.一种用于执行由目标硬件平台(步骤305)执行的软件应用程序(210)的方法,所述方法包含:
确定所述目标硬件平台(步骤310)的硬件描述语言(HDL)描述;
基于所述HDL描述(步骤315),将可编程硬件组件(步骤315)配置成功能上等效于所述目标硬件平台(步骤305);以及
使用所述经配置的可编程硬件组件(步骤315)执行所述软件应用程序(210)。
2.根据权利要求1所述方法,其中执行所述软件应用程序(210)包含:
使用所述经配置的硬件组件(步骤320)执行虚拟机(VM)(205);以及
使用所述VM(205)(步骤325)执行所述软件应用程序(210);
其中所述目标硬件平台(215)为第一硬件平台(215),并且所述软件应用程序(210)与第二硬件平台有关,以及
配置所述VM(205),从而提供仿真所述第二硬件平台的虚拟硬件平台。
3.根据权利要求2-3中任一项所述的方法,其中所述软件应用程序(210)为第一软件应用程序(210),所述方法还包含:
使用所述经配置的可编程硬件组件(步骤315)执行第二软件应用程序(445、610),其中所述第二软件应用程序(445、610)包括所述第一软件应用程序(210)中未包括的附加的功能;以及
将数据从所述第一软件应用程序(210)路由至所述第二软件应用程序(445、610),其中所述数据包括请求和命令之中的至少一个。
4.根据权利要求1-3中任一项所述的方法,其中配置可编程硬件组件(步骤315)包括为可编程硬件组件(步骤315)编程。
5.据权利要求1-4中任一项所述的方法,还包含在所述HDL描述中包括仿真加速,其中所述仿真加速包括相应于所述目标硬件平台(215)的至少一个汇编指令的实施。
6.一种在使用虚拟机(VM)(205)执行软件应用程序(210)中使用的设备,所述设备包含:
存储设备,配置为用于存储虚拟机(VM)(205)和软件应用程序(210),以及
可编程硬件组件(步骤315),其耦合至所述存储设备,其中基于目标硬件平台(215)的硬件描述语言(HDL)描述,所述可编程硬件组件(步骤315)被编程,所述可编程硬件组件(步骤315)被编程为用于执行所述软件应用程序(210),其中所述软件应用程序(210)经认证通过所述目标硬件平台(215)和所述HDL描述之中的至少一个执行。
7.根据权利要求6所述设备,其中所述可编程硬件组件(步骤315)功能上等效于所述目标硬件平台。
8.根据权利要求6所述的设备,其中所述可编程硬件组件(步骤315)被编程,从而使用所述VM(205)执行所述软件应用程序(210)。
9.根据权利要求6所述的设备,其中基于目标硬件平台的HDL描述,所述可编程硬件组件(步骤315)被编程,所述软件应用程序(210)经认证通过所述目标硬件平台来执行,并且其中所述认证适用于通过所述可编程硬件组件(步骤315)执行所述软件应用程序(210)。
10.根据权利要求6所述的设备,其中基于HDL描述,所述可编程硬件组件(步骤315)被编程,所述软件应用程序(210)经认证通过所述HDL描述来执行,并且其中所述认证适用于通过所述可编程硬件组件(步骤315)执行的所述软件应用程序(210)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/170,601 | 2011-06-28 | ||
US13/170,601 US8966478B2 (en) | 2011-06-28 | 2011-06-28 | Methods and systems for executing software applications using hardware abstraction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102915236A true CN102915236A (zh) | 2013-02-06 |
CN102915236B CN102915236B (zh) | 2017-07-28 |
Family
ID=46603561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210218609.7A Active CN102915236B (zh) | 2011-06-28 | 2012-06-28 | 使用硬件抽象执行软件应用程序的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8966478B2 (zh) |
EP (1) | EP2541403B1 (zh) |
JP (1) | JP5976409B2 (zh) |
CN (1) | CN102915236B (zh) |
AU (1) | AU2012203277B2 (zh) |
CA (1) | CA2780567C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110073342A (zh) * | 2016-12-23 | 2019-07-30 | 英特尔公司 | 用于硬件加速的虚拟信道 |
CN111123736A (zh) * | 2018-10-31 | 2020-05-08 | 波音公司 | 用于使用硬件抽象软件层的系统的通用虚拟化平台 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372770B2 (en) * | 2012-06-04 | 2016-06-21 | Karthick Gururaj | Hardware platform validation |
US8762916B1 (en) * | 2013-02-25 | 2014-06-24 | Xilinx, Inc. | Automatic generation of a data transfer network |
WO2014189529A1 (en) * | 2013-05-24 | 2014-11-27 | Empire Technology Development, Llc | Datacenter application packages with hardware accelerators |
US9075624B2 (en) | 2013-06-24 | 2015-07-07 | Xilinx, Inc. | Compilation of system designs |
US9323576B2 (en) | 2014-02-04 | 2016-04-26 | The Boeing Company | Removal of idle time in virtual machine operation |
US20150295793A1 (en) * | 2014-04-10 | 2015-10-15 | International Business Machines Corporation | High-performance computing evaluation |
US10108445B2 (en) | 2014-09-22 | 2018-10-23 | The Boeing Company | Parallelization in virtual machine operation |
US10210323B2 (en) | 2016-05-06 | 2019-02-19 | The Boeing Company | Information assurance system for secure program execution |
JP6702021B2 (ja) * | 2016-06-24 | 2020-05-27 | コニカミノルタ株式会社 | 画像処理装置、デバッグ支援方法およびデバッグ支援プログラム |
CN110399204A (zh) * | 2019-07-26 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种kvm的内存配置方法、装置、设备及可读存储介质 |
EP3961389A1 (en) * | 2020-08-26 | 2022-03-02 | The Boeing Company | Virtual machine for developing and testing target code for hardware designs |
JP7454518B2 (ja) | 2021-02-16 | 2024-03-22 | 株式会社リケン | ノイズ対策用環状磁性体及びノイズ対策用部材 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070028238A1 (en) * | 2005-07-27 | 2007-02-01 | Bennett Steven M | Virtualization event processing in a layered virtualization architecture |
CN101253481A (zh) * | 2005-08-30 | 2008-08-27 | 微软公司 | 具有多层虚拟化机制的分层虚拟化 |
CN101901129A (zh) * | 2004-12-02 | 2010-12-01 | 英特尔公司 | 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置 |
US20110072428A1 (en) * | 2009-09-22 | 2011-03-24 | International Business Machines Corporation | Nested Virtualization Performance In A Computer System |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0731945B1 (en) | 1993-12-01 | 2000-05-17 | Marathon Technologies Corporation | Fault resilient/fault tolerant computing |
US6253224B1 (en) | 1998-03-24 | 2001-06-26 | International Business Machines Corporation | Method and system for providing a hardware machine function in a protected virtual machine |
US6178391B1 (en) | 1998-04-15 | 2001-01-23 | Rockwell Collins, Inc. | Method for partitioning an integrated ground air traffic management communications system |
US6496847B1 (en) * | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US6397242B1 (en) * | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
US6253135B1 (en) | 2000-02-10 | 2001-06-26 | International Business Machines Corporation | Power window regulator for automobiles |
US6895501B1 (en) | 2000-03-13 | 2005-05-17 | Wrq, Inc. | Method and apparatus for distributing, interpreting, and storing heterogeneous certificates in a homogenous public key infrastructure |
US6658591B1 (en) | 2000-06-08 | 2003-12-02 | International Business Machines Corporation | Recovery from data fetch errors in hypervisor code |
US6877158B1 (en) | 2000-06-08 | 2005-04-05 | International Business Machines Corporation | Logical partitioning via hypervisor mediated address translation |
US7003771B1 (en) | 2000-06-08 | 2006-02-21 | International Business Machines Corporation | Logically partitioned processing system having hypervisor for creating a new translation table in response to OS request to directly access the non-assignable resource |
US6629162B1 (en) | 2000-06-08 | 2003-09-30 | International Business Machines Corporation | System, method, and product in a logically partitioned system for prohibiting I/O adapters from accessing memory assigned to other partitions during DMA |
US6820207B2 (en) | 2001-03-01 | 2004-11-16 | International Business Machines Corporation | Method for rebooting only a specific logical partition in a data processing system as per a request for reboot |
US20020129172A1 (en) * | 2001-03-08 | 2002-09-12 | International Business Machines Corporation | Inter-partition message passing method, system and program product for a shared I/O driver |
US6876864B1 (en) | 2001-03-15 | 2005-04-05 | Vanu, Inc. | Software-defined wireless communication device |
US7272831B2 (en) | 2001-03-30 | 2007-09-18 | Intel Corporation | Method and apparatus for constructing host processor soft devices independent of the host processor operating system |
JP2002351854A (ja) | 2001-05-30 | 2002-12-06 | Omron Corp | プログラム実行装置および携帯型情報処理装置 |
US6792514B2 (en) | 2001-06-14 | 2004-09-14 | International Business Machines Corporation | Method, system and computer program product to stress and test logical partition isolation features |
US7076416B2 (en) * | 2001-08-20 | 2006-07-11 | Sun Microsystems, Inc. | Method and apparatus for evaluating logic states of design nodes for cycle-based simulation |
US6883116B2 (en) | 2001-09-27 | 2005-04-19 | International Business Machines Corporation | Method and apparatus for verifying hardware implementation of a processor architecture in a logically partitioned data processing system |
US6925466B2 (en) | 2002-03-22 | 2005-08-02 | Sun Microsystems, Inc. | Asynchronous protocol framework |
US6928344B2 (en) | 2002-03-25 | 2005-08-09 | Sun Microsystems, Inc. | Vehicle mode manager |
US7178049B2 (en) | 2002-04-24 | 2007-02-13 | Medius, Inc. | Method for multi-tasking multiple Java virtual machines in a secure environment |
US7174545B2 (en) | 2003-04-08 | 2007-02-06 | The Boeing Company | Apparatus and method for producing display application software for embedded systems |
US7175136B2 (en) | 2003-04-16 | 2007-02-13 | The Boeing Company | Method and apparatus for detecting conditions conducive to ice formation |
US7130949B2 (en) | 2003-05-12 | 2006-10-31 | International Business Machines Corporation | Managing input/output interruptions in non-dedicated interruption hardware environments |
US20050086587A1 (en) * | 2003-05-14 | 2005-04-21 | Balz Christopher M. | System and method for presenting computerized interactive forms to respondents using a client-server-systems technology based on web standards |
US20070038867A1 (en) * | 2003-06-02 | 2007-02-15 | Verbauwhede Ingrid M | System for biometric signal processing with hardware and software acceleration |
US6851649B1 (en) | 2003-08-14 | 2005-02-08 | The Boeing Company | Methods and systems for controlling wheel brakes on aircraft and other vehicles |
WO2005036367A2 (en) | 2003-10-08 | 2005-04-21 | Unisys Corporation | Virtual data center that allocates and manages system resources across multiple nodes |
US7921425B2 (en) | 2005-03-14 | 2011-04-05 | Cisco Technology, Inc. | Techniques for allocating computing resources to applications in an embedded system |
US7607129B2 (en) | 2005-04-07 | 2009-10-20 | International Business Machines Corporation | Method and apparatus for using virtual machine technology for managing parallel communicating applications |
US7561531B2 (en) * | 2005-04-19 | 2009-07-14 | Intel Corporation | Apparatus and method having a virtual bridge to route data frames |
US7562349B2 (en) * | 2005-04-25 | 2009-07-14 | Sap Ag | Version adaptation interface for integration of different virtual machines |
US7272681B2 (en) | 2005-08-05 | 2007-09-18 | Raytheon Company | System having parallel data processors which generate redundant effector date to detect errors |
US8230153B2 (en) | 2006-01-20 | 2012-07-24 | Broadcom Corporation | Method and system for HBA assisted storage virtualization |
US8249853B2 (en) | 2006-03-31 | 2012-08-21 | Intel Corporation | Exposing device features in partitioned environment |
US7958506B2 (en) | 2006-06-22 | 2011-06-07 | Intel Corporation | Time sliced interrupt processing on virtualized platform |
US7346909B1 (en) | 2006-08-28 | 2008-03-18 | Intel Corporation | Network-like communication and stack synchronization for different virtual machines on the same physical device |
US7490191B2 (en) * | 2006-09-22 | 2009-02-10 | Intel Corporation | Sharing information between guests in a virtual machine environment |
JP4847272B2 (ja) | 2006-10-18 | 2011-12-28 | 株式会社日立製作所 | 論理区画ごとに電源を管理する計算機システム、ストレージ装置及びそれらの制御方法 |
JP4249779B2 (ja) | 2006-12-25 | 2009-04-08 | 株式会社東芝 | デバイス制御装置 |
JP5100133B2 (ja) | 2007-01-19 | 2012-12-19 | 株式会社東芝 | 情報処理装置 |
US8234624B2 (en) * | 2007-01-25 | 2012-07-31 | International Business Machines Corporation | System and method for developing embedded software in-situ |
US8554981B2 (en) | 2007-02-02 | 2013-10-08 | Vmware, Inc. | High availability virtual machine cluster |
US20080196043A1 (en) | 2007-02-08 | 2008-08-14 | David Feinleib | System and method for host and virtual machine administration |
US7813912B1 (en) * | 2007-02-14 | 2010-10-12 | Xilinx, Inc. | Profiling a hardware system generated by compiling a high level language onto a programmable logic device |
US7739554B2 (en) | 2007-02-28 | 2010-06-15 | Red Hat, Inc. | Method and system for automatic resolution and dispatching subscription service |
US8407696B2 (en) | 2007-06-04 | 2013-03-26 | International Business Machines Corporation | Method for delivering, testing, and applying software patches or other changes to a conventionally installed application in virtual application containers |
US8689224B2 (en) * | 2007-09-26 | 2014-04-01 | The Boeing Company | Methods and systems for preserving certified software through virtualization |
US9098698B2 (en) * | 2008-09-12 | 2015-08-04 | George Mason Research Foundation, Inc. | Methods and apparatus for application isolation |
US8054832B1 (en) * | 2008-12-30 | 2011-11-08 | Juniper Networks, Inc. | Methods and apparatus for routing between virtual resources based on a routing location policy |
US8484639B2 (en) * | 2011-04-05 | 2013-07-09 | International Business Machines Corporation | Fine-grained cloud management control using nested virtualization |
-
2011
- 2011-06-28 US US13/170,601 patent/US8966478B2/en active Active
-
2012
- 2012-06-01 AU AU2012203277A patent/AU2012203277B2/en active Active
- 2012-06-18 JP JP2012136938A patent/JP5976409B2/ja active Active
- 2012-06-19 CA CA2780567A patent/CA2780567C/en active Active
- 2012-06-28 EP EP12174226.6A patent/EP2541403B1/en active Active
- 2012-06-28 CN CN201210218609.7A patent/CN102915236B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901129A (zh) * | 2004-12-02 | 2010-12-01 | 英特尔公司 | 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置 |
US20070028238A1 (en) * | 2005-07-27 | 2007-02-01 | Bennett Steven M | Virtualization event processing in a layered virtualization architecture |
CN101253481A (zh) * | 2005-08-30 | 2008-08-27 | 微软公司 | 具有多层虚拟化机制的分层虚拟化 |
US20110072428A1 (en) * | 2009-09-22 | 2011-03-24 | International Business Machines Corporation | Nested Virtualization Performance In A Computer System |
Non-Patent Citations (1)
Title |
---|
ROBERT P. GOLDBERG: "Survey of Virtual Machine Research", 《IEEE SERVICE CENTER》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110073342A (zh) * | 2016-12-23 | 2019-07-30 | 英特尔公司 | 用于硬件加速的虚拟信道 |
CN111123736A (zh) * | 2018-10-31 | 2020-05-08 | 波音公司 | 用于使用硬件抽象软件层的系统的通用虚拟化平台 |
Also Published As
Publication number | Publication date |
---|---|
JP5976409B2 (ja) | 2016-08-23 |
EP2541403B1 (en) | 2020-11-18 |
EP2541403A1 (en) | 2013-01-02 |
CN102915236B (zh) | 2017-07-28 |
JP2013012196A (ja) | 2013-01-17 |
US20130007730A1 (en) | 2013-01-03 |
CA2780567A1 (en) | 2012-12-28 |
AU2012203277B2 (en) | 2016-12-01 |
US8966478B2 (en) | 2015-02-24 |
CA2780567C (en) | 2018-05-29 |
AU2012203277A1 (en) | 2013-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102915236A (zh) | 使用硬件抽象执行软件应用程序的方法和系统 | |
CN107924323B (zh) | 基于依赖的容器部署 | |
CN103493028B (zh) | 虚拟盘存储技术 | |
US9459850B2 (en) | Adaptive cloud aware just-in-time (JIT) compilation | |
JP5571208B2 (ja) | パフォーマンスカウンタの仮想化 | |
US9032122B2 (en) | Function transfer using virtualized mapping | |
CN110383246A (zh) | 虚拟机控制可编程硬件的单独子集 | |
CN102483718A (zh) | 虚拟化环境中的高速缓存分区 | |
JP5446157B2 (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
CN102576310A (zh) | 将物理计算资源的一部分分配给逻辑分区 | |
US10782995B2 (en) | Flexible physical function and virtual function mapping | |
WO2015008112A1 (en) | System on chip and method therefor | |
CN106648758A (zh) | 一种多核处理器boot启动系统及方法 | |
WO2018080735A2 (en) | Method, apparatus and system for automatically performing end-to-end channel mapping for an interconnect | |
CN104978226A (zh) | 输入输出重定向方法、虚拟化系统与方法及内容递送装置 | |
CN113127134A (zh) | 容器集群、基于容器集群的多租户部署方法及电子设备 | |
US7010666B1 (en) | Methods and apparatus for memory map generation on a programmable chip | |
KR101669567B1 (ko) | 가상 머신의 배치를 관리하는 방법 | |
CN111163187B (zh) | 虚拟机网络端口的mac地址生成方法和装置 | |
JP6821509B2 (ja) | 情報処理装置並びにその制御方法及び制御プログラム | |
JP5811301B2 (ja) | 仮想マシンの割当処理を行う情報処理装置及び仮想マシン割当方法 | |
US10372946B1 (en) | Systems and methods for configuring a secure computing environment on an integrated circuit | |
CN116126460A (zh) | 一种虚拟机创建方法及装置 | |
JP2012038341A (ja) | カーネルソースコード最適化方法、カーネルソースコード最適化装置及びプログラム |
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 |