CN1627263A - 真实及理想化硬件基装置的双模态装置虚拟化系统和方法 - Google Patents

真实及理想化硬件基装置的双模态装置虚拟化系统和方法 Download PDF

Info

Publication number
CN1627263A
CN1627263A CNA2004101039185A CN200410103918A CN1627263A CN 1627263 A CN1627263 A CN 1627263A CN A2004101039185 A CNA2004101039185 A CN A2004101039185A CN 200410103918 A CN200410103918 A CN 200410103918A CN 1627263 A CN1627263 A CN 1627263A
Authority
CN
China
Prior art keywords
pattern
virtual bench
bimodal
functional
hardware
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
Application number
CNA2004101039185A
Other languages
English (en)
Other versions
CN100449488C (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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1627263A publication Critical patent/CN1627263A/zh
Application granted granted Critical
Publication of CN100449488C publication Critical patent/CN100449488C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/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/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明的各种实施例针对的都是双模态虚拟装置方法(即,“双模态装置”)。在某些实施例中,双模态装置是一种主要基于真实硬件以提供与运行在客环境中的软件的广泛兼容性的虚拟装置(类似于硬件装置虚拟化方法)。但是,为克服困扰硬件虚拟装置的性能低下问题,这些实施例还提供一种在原基于硬件的装置中无法找到的理想化“高性能”模式。为与原硬件装置交互开发的、不知晓(和不能使用)高性能模式的软件驱动程序(和其它软件)将继续使用“延用模式”(硬件虚拟化),而客软件的增强版本则能识别和利用高性能模式(理想化虚拟)。

Description

真实及理想化硬件基装置的双模态装置虚拟化系统和方法
(1)技术领域
本发明一般涉及计算机系统中的虚拟装置领域,更明确地涉及计算机系统中可按硬件虚拟装置或理想化虚拟装置何者更为合适而选择性地操作的增强虚拟装置。
(2)背景技术
虚拟装置是一种用软件实现的、与某种真实的或理想化的物理装置相对应的逻辑装置。一般有两种为虚拟化装置建模的方法:直接为现存硬件建模的“硬件虚拟装置”法;以及不仅仅是物理硬件反映而是为VM环境而优化的“理想化虚拟装置”法。
硬件虚拟装置方法在兼容性上提供优势-因为在每一方面,虚拟装置都产生如同真实装置那样的效果,被设计成与该装置(例如,驱动器)交互的软件不经改动就可在硬件虚拟装置上工作。但是,论及性能时,硬件虚拟装置就处于劣势-因为硬件设计者一般不会考虑到虚拟化问题,在不发生重大开销成本(和低效率)的情况下,物理硬件常常难以用虚拟装置仿效,因此硬件虚拟装置常常显著地慢于相对应的真实硬件。
另一方面,理想化虚拟装置为开发者提供了有效的自由度,来设计一种既易于实现又可有效使用的虚拟装置。因为理想化虚拟装置的设计不需要囿于加在物理硬件设计上的限制,理想化虚拟装置可以优化,以在VM环境中使用。而且,理想化虚拟装置的开发者不需要使自己关注那些现存软件正确运行所可能倚赖的微妙副作用(诸如定时、状态改变等等)。此外,开发者也可以创造类似于实际上并不存在的硬件的理想化虚拟装置-例如,允许客系统和主系统之间通讯的虚拟装置。然而,不利之处在于兼容性问题可能会在理想化虚拟装置方法中产生,因为虚拟装置实际上可能不会在每一方面都正好像真实装置一样操作,被设计成与该物理装置(例如,驱动器)交互的软件不经改动可能不能正确地在理想化虚拟装置上工作,甚至根本工作不了。
本领域所需要的是一种虚拟化装置的方法,其具备所述两种现有方法优点但没有它们的大多数局限。
(3)发明内容
本发明的各种实施例都是针对结合了硬件和理想化装置虚拟化方法的相对强项而同时减轻它们各自弱点的双模态虚拟装置方法(即,“双模态装置”)。在某些实施例中,双模态装置是一种主要基于真实硬件提供与运行在客环境中的软件广泛兼容性的虚拟装置(类似于硬件装置虚拟化方法)。但是,为克服困扰硬件虚拟装置的性能低下问题,这些实施例还提供一种在原基于硬件的装置中无法找到的理想化“高性能模式”。为与原硬件装置互动而开发的和未意识到(和不能使用)高性能模式的软件驱动程序(driver)(和其它软件)将继续使用“延用模式(legacy mode)”(硬件虚拟化),而客软件的增强版将可以识别和利用高性能模式(理想化虚拟)。
(4)附图说明
结合附图参阅前述发明内容和以下优选实施例的具体说明会有更好的理解。为了阐述本发明,附图中显示了本发明的示例型结构;但是,本发明并不限于所公开的具体方法和手段。在附图中:
图1所示的块图表示了本发明的诸方面可在其中应用的计算机系统;
图2图示了计算机系统中仿真操作环境的硬件及软件体系结构的逻辑分层;
图3A图示了虚拟化计算系统;
图3B图示了包括运行在主运行系统之侧的虚拟机器监视器的虚拟化计算系统的可选实施例;
图4A图示了图3的虚拟化计算系统,还包括驱动器、虚拟装置、和硬件;
图4B图示了从客操作系统中运行的应用程序到图4A中计算机硬件的硬件装置的操作路径;
图5更简单地图示了与图4B相同的驱动器、虚拟装置和硬件之间的相互关系;
图6A图示了图5所示子系统中虚拟装置为双模态装置所替代,所述双模态装置以延用模式运行;以及
图6B图示了以高性能模式运行的图6A所示的双模态装置。
(5)具体实施方式
为了满足法规要求,本发明主题用具体细节进行了描述。然而,说明书本身并非用来限制本专利的范围。相反,发明者已预期本发明权利要求的主题也能用其它方式来具体实施,以结合其它现有的或未来的技术包含不同于本文件中所说明的步骤或类似步骤的组合。另外,尽管“步骤”这个术语可能在此处被用来意味着所采用方法的不同元素,但是,除非单个步骤间的顺序有很清晰的说明,该术语不应当被解释为暗含在此揭示的不同步骤之间有着任何特殊顺序。
计算机环境
本发明的很多实施例可以在计算机上运行。图1和以下讨论是要提供一种适于本发明在其中实现的计算环境的简要一般说明。尽管不是必需的,本发明将以计算机可执行指令的一般上下文进行说明,诸如由客户工作站或服务器等计算机执行的程序模块。一般,程序模块包括执行具体任务或实现具体抽象数据结构的例程、程序、对象、组件、数据结构等等。另外,本领域技术人员会理解本发明在其它计算机系统配置中,包括手持式装置、多处理器系统、基于微处理器的或可编程的电器消费品、网络PC、迷你计算机、大型机和类似配置,也是可以实践的。本发明还可在任务由经通讯网络连接的远程处理装置执行的分布式计算环境中实践。在分布式计算环境中,程序模块可置于本地和远程存储器存储设备。
如图1所示,示例性通用计算系统具有常规个人计算机20或类似物,包括处理单元21、系统存储器22以及把包括系统存储器在内的各种系统组件耦合到处理单元21的系统总线23。系统总线23可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线架构的任一种的本地总线。系统存储器包括只读存储器(ROM)24和随机存储器(RAM)25。含有帮助个人计算机20中元件间,如启动时,的信息交换的基本例程的基本输入/输出系统(BIOS)26存储在ROM24中。个人计算机20还包括读取和写入硬盘(未示出)的硬盘驱动器27、读取或写入可移动磁盘29的磁盘驱动器28、和读取或写入诸如CD ROM或其它光学介质等可移动光盘31的光盘驱动器30。硬盘驱动器27、磁盘驱动器28、光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33、光盘驱动器接口34连接至系统总线23。诸驱动器及其相应的计算机可读介质为个人计算机20提供计算机可读指令、数据结构、程序模块和其它数据的非易失储存。尽管所述示例性环境采用了硬盘、可移动磁盘29和可移动光盘31,但本领域技术人员应该理解其它类型计算机可访问的能够存储数据的计算机可读介质,如磁带、闪存卡、数字式视频盘、Bernoulli盘、随机存取存储器(RAM)、只读存储器(ROM)和其它类似物,也能用于示例性运行环境。
众多程序模块,包括操作系统35、一个或多个应用程序36、其它程序模块37和程序数据38,可以存储在硬盘、磁盘29、光盘31、ROM24或RAM25中。用户可通过输入装置如键盘40和定位装置42向个人计算机20输入指令和信息。其它输入装置(未示出)可包括话筒、游戏杆、游戏垫、卫星接收器、扫描仪或类似装置。这些和其它输入装置通常通过与系统总线耦合的串行端口接口46连接到处理单元21,但也可能通过其它接口相连,如并行端口、游戏端口或通用串行总线(USB)。监视器47或其它类型显示装置也通过接口,如视频适配器48和系统总线23相连。除了显示器47,个人计算机通常包括其它外围输出装置(未示出),如扬声器和打印机。图1的示例性系统还包括主适配器55、小型计算机系统接口(SCSI)总线56和与SCSI总线56相连的外部存储装置62。
个人计算机20可以在使用与一台或多台远程计算机,诸如远程计算机49的逻辑连接的网络化环境中运行。远程计算机49可以是另一台个人计算机、服务器、路由器、网络PC、同等装置或其它普通网络节点,而且通常包括上述与个人计算机20相关的许多或全部部件,尽管在图1中仅显示了存储器存储装置50。图1中所描绘的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这样的网络化环境在办公室、企业范围计算机网络、企业内部互联网和因特网上是常见的。
当用于LAN网络环境中时,个人计算机20通过网络接口或适配器53与LAN51连接。当用于WAN网络环境中时,个人计算机20通常包括调制解调器54或其它用于在广域网52,如因特网中建立通讯的装置。可以是内置式或外置式的调制解调器54,与系统总线23通过串行端口接口46连接。在网络环境中,所述与个人计算机20相关的程序模块或其一部分,可以存储在远程存储器存储装置中。可以理解的是,所示网络连接是示例性的,其它用于在计算机间建立通讯连接的方法也可以使用。此外,尽管可设想本发明有很多实施例能特别好地适合于计算机化系统,本文件并不是将本发明局限在这些实施例中。
虚拟机器
从概念角度而言,计算机系统通常包括运行于硬件基础层上的一层到多层软件。这样的分层是为抽象化而进行的。通过为一给定软件层定义接口,该层就可以由其上层不同地加以实现。在一个设计良好的计算机系统中,每一层都只知道(和只依靠)紧接其下的那一层。这就允许对层或“堆栈”(多个邻接层)进行替换而不会负面影响该层或堆栈之上的层。例如,软件应用程序(上层)通常依靠操作系统(下层)的较低层次来写文件到某些形式的永久存储器中,这些应用程序就无需理解写数据到软盘、硬盘、或网络文件夹中的区别。如果这一下层被新的用于写文件的操作系统组件所替换,上层软件应用程序的运行并不受影响。
分层式软件的灵活性使虚拟机器(VM)将实际上是另一个软件层的层表现为一个虚拟硬件层。这样,VM就为其上的软件层产生了它们是在自己专用的计算机系统中运行的印象,从而VM可以使多个“客系统”在单个“主系统”上同时运行。
图2是表现计算机系统中仿真操作环境的软件和硬件结构逻辑分层的图示。仿真程序94在主操作系统和/或硬件体系结构92之上运行。仿真程序94仿真客硬件体系结构96和客操作系统98。软件应用程序100则在客操作系统98上运行。在图2的仿真操作环境中,尽管软件应用程序100是设计成在通常与主操作系统和硬件体系结构92不兼容的操作系统中运行的,但由于仿真程序94的运行,软件应用程序100得以在计算机系统90上运行。
图3A图示了包括直接运行于物理计算机硬件102之上的主操作软件层104的虚拟化计算系统,主操作系统(主OS)104通过展露与主OS正在虚拟化的硬件(使得主OS为运行于其上的操作系统层所忽略)一样的接口来虚拟化所有的机器资源。
可选地,虚拟机器监视器即VMM软件层104’可以代替主操作系统104”运行,或与主操作系统104”并行运行,后一选项如图3B所示。为简化起见,以下所有讨论(特别是有关主操作系统104的)都是针对图3A中所示的实施例;然而,这种讨论的每一方面都同样适用于图3B中的实施例,其中图3B的实施例中VMM104’在功能层面上基本代替了以下要说明的图3A中主操作系统104的角色。
再来看图3A,在主OS104(或VMM104’)之上是两个虚拟机器(VM)实现,一个是可能如虚拟化英特尔386处理器的VM A108,另一个是可能如摩托罗拉680X0系列处理器之一的虚拟化版的VM B110。在VM108和110之上分别有客操作系统(客OS)A112和B114。在客操作系统A112之上运行有两个应用程序,应用程序A1 116和A2 118,而在客OS B114上有应用程序B1 120。
虚拟装置
对于物理硬件装置,VM提供了数个选项以使软件应用程序能够利用这些硬件装置。在一些VM系统中,硬件装置(如硬盘驱动器或网络适配器)可能被分配给单个VM中,只有在此VM中运行的软件可以使用这个硬件装置(专用装置体系结构)。然而,这样的设计使得在不同VM之间,以及VM和主系统之间都无法共享硬件装置。因此许多VM实现转而使用“虚拟装置”。
虚拟装置是用软件实现的逻辑装置,其对应于某种真实或理想化物理装置。虚拟装置一般拥有它们自己的一套装置状态,可能包括如寄存器设置、缓存数据、未执行命令队列、等等等等。作为非约束性示例,对于虚拟网络适配器,与之相关联的软件在运行于VM中的编码访问网络适配器时将被调用,然后虚拟适配器能以与真实适配器卡一致的方式对指令做出反应。这样,运行于VM中的编码并没有意识到它在与虚拟适配器而不是真实适配器“说话”,然后虚拟适配器可以直接或间接地与真实适配器交互,使真实适配器按需要运作。
在许多情况下,发给虚拟装置的请求会被映射到相应的主装置上。例如,从虚拟网络适配器发出的网络信息包可能会被路由到安装于主装置中的真实网络适配器之一中去。从这方面而言,虚拟装置体系结构提供了与早先说明的专用装置体系结构相似的性能。然而,有别于专用装置体系结构的是,虚拟装置体系结构允许多个虚拟装置被映射到单个主装置(真实装置)。例如,三个独立的VM都包含有各自的虚拟网络适配器,而所有这三个虚拟网络适配器能共享单个主适配器,而在专用装置体系结构中只有一个VM可以使用该主适配器。
图4A图示了加上驱动器、虚拟装置和硬件后的图3的虚拟化计算系统。客OSA112包括驱动器A122,虚拟机器A108包括对应于驱动器A122的虚拟装置A124。同样地,客OS B114包括驱动器B126,虚拟机器B110包括对应于驱动器B126的虚拟装置B128。另外,主OS104包括驱动器X130,计算机硬件102包括对应于驱动器X130的硬件装置X132。
图4B图示了从运行于客操作系统的应用程序到计算机硬件中的硬件装置的操作路径。应用程序A1 116与驱动器A122接口连接(134),而驱动器A122又接口连接到虚拟装置A124(136)。然后这个虚拟装置A124与驱动器X130(在主OS104中)接口相连(138),而驱动器X130又直接与硬件装置X132通讯(140)。图5更简单地图示了图4B中驱动器、虚拟装置和硬件之间的相互关系。
双模态装置
一般有两种为虚拟化装置建模的方法:直接为现存硬件建模的“硬件虚拟装置”方法;不仅仅是物理硬件反映而是为VM环境而进行优化的“理想化虚拟装置”方法。硬件虚拟装置方法在兼容性方面提供优势-因为在每一方面,虚拟装置都如同真实装置那样发挥作用,被设计成与该装置(如,驱动器)交互的软件不经改动就可在硬件虚拟装置上工作。但是,论及性能时,硬件虚拟装置就处于劣势了-因为硬件设计者一般不会考虑虚拟化因素,如果不发生重大成本开销(和低效率),物理硬件往往难以用虚拟装置仿效,因此硬件虚拟装置常常要显著地慢于真实硬件。
另一方面,理想化虚拟装置为开发者提供重大自由度来设计既易于实现又可有效使用的虚拟装置。因为理想化虚拟装置的设计不需要囿于强加在物理硬件设计上的限制,理想化虚拟装置可进行优化以在VM环境中使用。而且,理想化虚拟装置的开发者不需要使自己关注那些要现存软件正确执行所可能倚赖的微妙的副面作用(诸如定时、状态改变、等)。此外,开发者也可以创造类似于实际上并不存在的硬件的理想化虚拟装置-例如,准许客系统和主系统之间通讯的虚拟装置。然而,不利的方面在于兼容性问题可能会在理想化虚拟装置方法中发生,因为虚拟装置实际上可能不会在每个方面都正好像真实装置一样操作,被设计成与该物理装置(如,驱动器)交互的软件不经改动可能不能正确地在理想化虚拟装置上工作,甚至根本工作不了。
本发明的各种实施例针对的都是结合了硬件和理想化装置虚拟化方法的相对强项、而同时减轻它们各自弱点的双模态虚拟装置方法(即,“双模态装置”)。在某些实施例中,双模态装置是一种主要基于真实硬件以提供与运行在客环境中的软件广泛兼容性的虚拟装置(类似于硬件装置虚拟化方法)。但是,为克服困扰硬件虚拟装置的性能低下问题,这些实施例还提供一种在原基于硬件的装置中无法找到的理想化“高性能模式”。为与原硬件装置互动而开发的、不知晓(和不能使用)高性能模式的软件驱动器(和其它软件)将继续使用“延用模式”(硬件虚拟化),而客软件的增强版本将可以识别和使用高性能模式(理想化虚拟)。
对某些实施例,高性能模式能完全独立于虚拟装置延用模式的原有功能。或者,高性能模式可包括原有功能的扩充或替代。不管是独立于延用模式功能或是延用模式功能的增强,高性能模式与理想化处理器虚拟方法是类似的。此外,还应注意的是,取决于用了哪一个实施例,切换到高性能模式可能使延用模式完全失效,它可能使部分延用模式失效,和/或可扩充延用模式功能。
在本发明的某些实施例中,高性能模式可通过使用在虚拟装置的寄存器中的保留位来激活,而其它实施例转而可能增加新的寄存器(例如,特地为一个或多个虚拟装置使用而创建的寄存器)或者实现某种形式的信号交换,从而预定系列的指令或数据可写入延用寄存器中。
作为非限制性示例,考虑以太网网络接口卡(NIC)双模态装置。在延用模式中,将一个信息包发送到以太网卡可能要包括多达8次的写入延用I/O寄存器动作。需要这些I/O访问来为信息包传输设置参数,包括DMA地址(即,可发现信息包的RAM位置)、传输长度、和一旦指定了其它参数即启动传输的命令字节。然而,在VM中每一个这样的写入I/O寄存器的动作都是相对代价高昂的,而且虚拟化这些I/O访问累计所需时间长,导致整体性能下降。但是,“理想化”虚拟以太网卡-即以高性能模式运行的虚拟卡-可能只需要一次I/O访问来启动信息包的发送,因此在那些可利用高性能模式的实例中,以高性能模式扩充的以太网卡双模态装置(如,基于DEC21140芯片组的以太网卡双模态装置)可以引人注目地提升其性能。
对某些实施例,高性能模式可通过使用安装在客操作系统环境中的专用的经修正的驱动器而激活,而且一旦高性能模式被激活,驱动器在启动信息包传送时可使用最佳方法。但是,如果在客操作系统环境中不存在经修正的驱动器,虽然没有了高性能模式所给的性能最优化,延用驱动器将仍然能够提供网络化功能。
图6A图示了图5子系统中虚拟装置的双模态装置替代方案,所述双模态装置以延用方式运作。在此图中,延用驱动器A’122’与双模态装置150接口连接(136’),而这个双模态装置150包括硬件虚拟化的延用模式152和理想化虚拟的高性能模式154。因为延用驱动器A’122’并不是被设计为对双模态装置150的高性能模式154提供的理想化虚拟起作用,而是对双模态装置150的延用模式152(如图所示)提供的硬件虚拟化起作用,而双模态装置150又与主OS驱动器X130接口(138’)。
相反,图6B图示的是以高性能模式运行的双模态装置。在此图中,高性能驱动器A”122”与双模态装置150接口(136”)。因为高性能驱动器A”122”能对双模态装置150的高性能模式154提供的理想化虚拟起作用(如图所示),其即照此而行(如图所示),而双模态装置150又与主OS驱动器X130接口(138”)。
基于硬件的“双模态”方法已被用于不同技术领域中,给否则即不与旧功能性相兼容的硬件装置添加新功能性。例如,传统的PS/2鼠标往计算机发送3个字节的信息(X坐标,Y坐标,和按钮状态),但是如果鼠标制造商给鼠标加“滚轮”,发送的信息就需要切换成包括滚轮状态在内的四字节信息包。为给并无滚轮概念的鼠标驱动器提供反向兼容,新鼠标从“延用模式”开始,仅提供三个字节的信息,但是一旦新型驱动器载入,这个驱动器就会通过告诉鼠标开始发送四字节信息包来激活“滚轮模式”。
双模态装置技术
有几种客模式驱动器可借以识别双模态装置的技术(即,区分真实硬件装置和支持操作额外模式的仿真装置)。这些技术包括在但不限于:
独特装置版本号:许多装置都包含软件可访问的装置版本识别号。这些值有时通过I/O端口或者存储器映射寄存器可以直接访问。其它时候,可以发送特定命令给装置,使之回报版本信息。在这些情形中,有时可改动版本号使得它不与任何现存真实硬件相对应。大部分驱动器会忽略版本号或检测一个最低版本号,这样,不影响与现有延用驱动器的兼容性而选择一个新的、独特的版本号应当是可能的。
闲置寄存器:一些装置定义一个系列的I/O端口或存储器映射寄存器,但是只使用该系列中的一个子集。这是普遍的,因为系列通常是以2的幂数块来分配的,加上为了将来的扩展,工程师们一般会将该系列分配得比所需的大一些。有可能会将该系列内的“未定义”或“保留”寄存器用作识别符。当保留寄存器被读取时,真实硬件通常会报告0x00或0xFF的值。仿真双模态装置则会报告一个不同的、独特的值。
信号交换:如果以上两种技术都不可行,通常就有可能设计某种形式的秘密“信号交换”。这包括一系列特殊的在现实世界使用场合中不可能找到的寄存器访问或装置指令。例如,如果装置是磁盘控制器,信号交换技术可能包括发送一系列读取以特定顺序(如0,3和7)开始一个特殊的、预定扇区列表的零字节的命令。在真实控制器上,它就不会产生任何效果(因为零字节的读取定义为无操作)。但是,在双模态装置上,这样的序列会产生一些别的副作用(如,在状态寄存器中某一状态位被设置)。
自然地,用于识别能作双模态操作的仿真装置的相同技术也可用于为此装置自动激活“增强”模式。
结论
在这儿说明的各种系统、方法和技术可以用硬件或软件或适当时用其组合来实现。因此,本发明的方法和装置,或其中的某些方面或部分,可采用包含在有形介质中的程序编码(即,指令)的形式,这些有形介质是诸如软盘、CD-ROM、硬盘、或任何其它机器可读的存储介质,其中,当程序编码被诸如计算机之类的机器载入和执行时,这种机器就变成实践发明的装置了。在程序编码运行于可编程计算机的情况中,计算机一般包括处理器、处理器可读的存储介质(包括易失和非易失存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。为了与计算机系统通讯,一个或多个程序优选用高级过程化或面向对象的编程语言来实现。但是,程序也可以按需用汇编或机器语言实现。在任何情况下,语言可以是编译或解释语言,并与硬件实现相组合。
本发明的方法和装置也可以用通过传输介质传输的程序编码形式实施,诸如通过电线或电缆、通过光纤、或通过任何一种传输方式传输,其中,当程序编码被诸如EPROM、门阵列、可编程逻辑装置(PLD)、客户机、录像机或类似的机器接收、载入并执行时,这种机器就变成实践发明的装置了。当在通用处理器上实现时,程序编码与处理器一起形成一种运行即能实现本发明的索引功能的独特装置。
尽管是结合各种图示的优选实施例说明本发明,要理解其它类似实施方式也可被使用,或者可对所述实施例进行更改或增加来执行本发明的相同功能而不背离本发明。例如,尽管是在仿真个人计算机功能的数字式装置的上下文中来说明本发明的示例性实施例,本领域技术人员会意识到本发明并不限于此类数字式装置,因为在本申请中所述的可能适用于许多现有的或将出现的计算装置或环境,诸如无论是有线或是无线的游戏控制台、手持式计算机、便携式计算机、等等,还可能适用于许多通过通讯网络连接或通过网络交互的计算装置。此外,必须强调的是,包括手持式装置操作系统和其它应用程序专用的硬件/软件接口系统在内的多种计算机平台在此都设想到了,尤其是经无线网络化的装置在数量上持续增长。因此,本发明不应囿于任一单个实施例,在宽度和范围上应按所附权利要求书来解释。
最后,这里所描述已揭示的实施例可适于在其它处理器结构、基于计算机的系统、或系统虚拟化中使用,而这样的实施例可由在此所作的揭示明确地预期到,因此,本发明不应囿于所述特定实施例,而应最广泛地加以解释。同样地,在此所作的揭示还预期到了用于不同于处理器虚拟化目的的合成指令的使用,而任何这种合成指令在处理器虚拟化之外的上下文中的使用,都应最广泛地解读在这里所作的揭示中。

Claims (40)

1.一种在计算机系统中改进虚拟装置性能的方法,其特征在于,所述方法包括利用一种双模态虚拟装置,其可选择性地在第一模式中按硬件虚拟装置操作,而在第二模式中按理想化虚拟装置操作。
2.如权利要求1所述的方法,其特征在于:
当与所述双模态虚拟装置接口的驱动器未被设计为与以所述第二模式操作的双模态虚拟装置接口时,所述双模态虚拟装置选择性地按硬件虚拟装置操作;和
当与所述双模态虚拟装置接口的驱动器被设计为与以所述第二模式操作的双模态虚拟装置接口时,所述双模态虚拟装置选择性地按理想化虚拟装置操作。
3.如权利要求2所述的方法,其特征在于,第二模式的功能性扩展了第一模式的功能性。
4.如权利要求2所述的方法,其特征在于,第二模式的功能性独立于第一模式的功能性。
5.如权利要求4所述的方法,其特征在于,第二模式的功能性废止第一模式的功能性。
6.如权利要求4所述的方法,其特征在于,第二模式的功能性废止第一模式的部分功能性。
7.如权利要求2所述的方法,其特征在于,第二模式通过使用虚拟装置寄存器中的至少一位来激活。
8.如权利要求2所述的方法,其特征在于,第二模式通过使用寄存器中的至少一位来激活,该寄存器是特别创建给一个或多个虚拟装置使用的。
9.如权利要求2所述的方法,其特征在于,第二模式通过使用改变至少一个寄存器中值的预定序列的命令或数据来激活。
10.如权利要求2所述的方法,其特征在于:
第二模式通过使用安装在客操作系统环境中的第二模式驱动程序激活;以及
如果第二模式驱动程序不存在,则第一模式驱动程序转而被激活。
11.一种计算机系统,其特征在于,所述计算机系统包括一种双模态虚拟装置,其可选择性在在第一模式中按硬件虚拟装置操作,而在第二模式中按理想化虚拟装置操作。
12.如权利要求11所述的系统,其特征在于,:
当与所述双模态虚拟装置接口的驱动器未被设计为与以所述第二模式操作的双模态虚拟装置接口时,双模态虚拟装置选择性地按硬件虚拟装置操作;和
当与所述双模态虚拟装置接口的驱动器被设计为与以所述第二模式操作的双模态虚拟装置接口时,双模态虚拟装置选择性地按理想化虚拟装置操作。
13.如权利要求12所述的系统,其特征在于,第二模式的功能性扩展第一模式的功能性。
14.如权利要求12所述的系统,其特征在于,第二模式的功能性独立于第一模式的功能性。
15.如权利要求14所述的系统,其特征在于,第二模式的功能性废止第一模式的功能性。
16.如权利要求14所述的系统,其特征在于,第二模式的功能性废止第一模式的部分功能性。
17.如权利要求12所述的系统,其特征在于,第二模式通过使用虚拟装置寄存器中的至少一位来激活。
18.如权利要求12所述的系统,其特征在于,第二模式通过使用寄存器中的至少一位来激活,该寄存器是特别创建给一个或多个虚拟装置使用的。
19.如权利要求12所述的系统,其特征在于,第二模式通过使用改变至少一个寄存器中值的预定序列的命令或数据来激活。
20.如权利要求12所述的系统,其特征在于,
第二模式通过使用安装在客操作系统环境中的第二模式驱动程序激活;和
如果第二模式驱动程序不存在,则第一模式驱动程序转而被激活。
21.一种计算机系统,其特征在于,所述计算机系统包括虚拟机器环境和双模态虚拟装置,其在所述虚拟机器环境中可选择性在第一模式中按硬件虚拟装置操作,而在第二模式中按理想化虚拟装置操作。
22.如权利要求21所述的系统,其特征在于:
当与所述双模态虚拟装置接口的驱动器未被设计为与以所述第二模式操作的双模态虚拟装置接口时,双模态虚拟装置选择性地按硬件虚拟装置操作;和
当与所述双模态虚拟装置接口的驱动器被设计为与以所述第二种模式操作的双模态虚拟装置接口时,双模态虚拟装置选择性地按理想化虚拟装置操作。
23.如权利要求22所述的系统,其特征在于,第二模式的功能性扩展第一模式的功能性。
24.如权利要求22所述的系统,其特征在于,第二模式的功能性独立于第一模式的功能性。
25.如权利要求24所述的系统,其特征在于,第二模式的功能性废止第一模式的功能性。
26.如权利要求24所述的系统,其特征在于,第二模式的功能性废止第一模式的部分功能性。
27.如权利要求22所述的系统,其特征在于,第二模式通过使用虚拟装置寄存器中的至少一位来激活。
28.如权利要求22所述的系统,其特征在于,第二模式通过使用寄存器中的至少一位来激活,该寄存器是特别创建给一个或多个虚拟装置使用的。
29.如权利要求22所述的系统,其特征在于,第二模式通过使用改变至少一个寄存器中值的预定序列的命指令或数据来激活。
30.如权利要求22所述的系统,其特征在于,
第二模式通过使用安装在客操作系统环境中的第二模式驱动器激活;和
如果第二模式驱动器不存在,则第一模式驱动器转而被激活。
31.一种包括计算机可读指令的计算机可读介质,所述计算机可读指令包括使双模态虚拟装置可选择性地操作的指令:双模态虚拟装置在第一模式中按硬件虚拟装置操作,而在第二模式中按理想化虚拟装置操作。
32.如权利要求31所述的计算机可读介质,其特征在于,还包括指令,使:
当与所述双模态虚拟装置接口的驱动器未被设计为与以所述第二模式操作的双模态虚拟装置接口时,双模态虚拟装置选择性地按硬件虚拟装置操作;和
当与所述双模态虚拟装置接口的驱动器被设计为与以所述第二模式操作的双模态虚拟装置接口时,双模态虚拟装置选择性地按理想化虚拟装置操作。
33.如权利要求32所述的计算机可读介质,其特征在于,还包括指令,使第二模式的功能性扩展第一模式的功能性。
34.如权利要求32所述的计算机可读介质,其特征在于,还包括与第一模式功能性的指令分开而且截然不同的第二模式功能性的指令。
35.如权利要求34所述的计算机可读介质,其特征在于,还包括指令,使第二种模式废止第一种模式的功能。
36.如权利要求34所述的计算机可读介质,其特征在于,还包括指令,使第二种模式废止第一种模式的部分功能。
37.如权利要求32所述的计算机可读介质,其特征在于,还包括指令,使第二种模式通过使用虚拟装置寄存器中的至少一位来激活。
38.如权利要求32所述的计算机可读介质,其特征在于,还包括指令,使第二模式通过使用寄存器中的至少一位来激活,该寄存器是特别创建给一个或多个虚拟装置使用的。
39.如权利要求32所述的计算机可读介质,其特征在于,还包括指令,使第二模式通过使用改变至少一个寄存器中值的预定序列的命令或数据来激活。
40.如权利要求32所述的计算机可读介质,其特征在于,还包括指令,使:
第二模式通过使用安装在客操作系统环境中的第二模式驱动程序激活;和
如果第二模式驱动器不存在,则通过使用第一模式驱动程序激活第一模式。
CNB2004101039185A 2003-12-12 2004-12-10 真实及理想化硬件基装置的双模态装置虚拟化系统和方法 Expired - Fee Related CN100449488C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/734,450 US7558723B2 (en) 2003-12-12 2003-12-12 Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US10/734,450 2003-12-12

Publications (2)

Publication Number Publication Date
CN1627263A true CN1627263A (zh) 2005-06-15
CN100449488C CN100449488C (zh) 2009-01-07

Family

ID=34552773

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004101039185A Expired - Fee Related CN100449488C (zh) 2003-12-12 2004-12-10 真实及理想化硬件基装置的双模态装置虚拟化系统和方法

Country Status (13)

Country Link
US (1) US7558723B2 (zh)
EP (1) EP1548589B1 (zh)
JP (1) JP4610307B2 (zh)
KR (1) KR20050059409A (zh)
CN (1) CN100449488C (zh)
AU (1) AU2004220769A1 (zh)
BR (1) BRPI0404496A (zh)
CA (1) CA2485239A1 (zh)
ES (1) ES2664817T3 (zh)
MX (1) MXPA04011275A (zh)
RU (1) RU2406113C2 (zh)
TW (1) TW200519632A (zh)
ZA (1) ZA200409138B (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838743B2 (en) * 2004-02-13 2014-09-16 Intel Corporation Apparatus and method for a dynamically extensible virtual switch
US20060005190A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for implementing an operating system in a virtual machine environment
US8249853B2 (en) 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
JP4945186B2 (ja) * 2006-07-28 2012-06-06 株式会社東芝 記憶装置およびこれを含むメモリシステム
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
US7793307B2 (en) * 2007-04-06 2010-09-07 Network Appliance, Inc. Apparatus and method for providing virtualized hardware resources within a virtual execution environment
US20080320041A1 (en) * 2007-06-21 2008-12-25 Motorola, Inc. Adding virtual features via real world accessories
KR100917687B1 (ko) * 2007-06-26 2009-09-21 문창선 가상 인터페이스를 제공하기 위한 시스템 및 방법
US9043553B2 (en) 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8219988B2 (en) 2007-08-02 2012-07-10 International Business Machines Corporation Partition adjunct for data processing system
US8010763B2 (en) 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8645974B2 (en) 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
JP5056334B2 (ja) * 2007-10-15 2012-10-24 富士通株式会社 管理プログラム、管理装置、および管理方法
US7743389B2 (en) * 2007-11-06 2010-06-22 Vmware, Inc. Selecting between pass-through and emulation in a virtual machine environment
JP2009134601A (ja) * 2007-11-30 2009-06-18 Fujitsu Ltd ディスクアクセス方式切替装置
US8230155B2 (en) * 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
US8239938B2 (en) * 2008-12-08 2012-08-07 Nvidia Corporation Centralized device virtualization layer for heterogeneous processing units
US8989802B2 (en) * 2009-01-27 2015-03-24 Symbol Technologies, Inc. Methods and apparatus for a mobile unit with device virtualization
TWI433527B (zh) 2009-09-11 2014-04-01 Shih Pi Ta Technology Ltd 一種建立通訊連線之方法及其系統
KR101275293B1 (ko) * 2009-10-26 2013-06-14 한국전자통신연구원 네트워크 장치 및 네트워크 가상화 지원 방법
US9529615B2 (en) 2010-11-24 2016-12-27 International Business Machines Corporation Virtual device emulation via hypervisor shared memory
US20120167082A1 (en) * 2010-12-23 2012-06-28 Sanjay Kumar Direct sharing of smart devices through virtualization
JPWO2012102002A1 (ja) * 2011-01-24 2014-06-30 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、記録媒体、及び集積回路
US9804864B1 (en) * 2011-10-07 2017-10-31 BlueStack Systems, Inc. Method of mapping inputs and system thereof
US9329887B2 (en) 2011-10-19 2016-05-03 Hob Gmbh & Co. Kg System and method for controlling multiple computer peripheral devices using a generic driver
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
US8904388B2 (en) * 2013-01-10 2014-12-02 Vce Company, Llc Scripting language executor service for applications
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
CN116401184A (zh) * 2016-01-22 2023-07-07 索尼互动娱乐股份有限公司 模拟向后兼容的传统总线行为
CN113490292B (zh) * 2021-07-16 2023-04-28 联想(北京)有限公司 通信处理方法和电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0212340A (ja) * 1988-06-29 1990-01-17 Nec Corp 仮想計算機
JPH05151084A (ja) * 1991-11-26 1993-06-18 Nec Corp Tlbエントリクリア方式
EP0610677A3 (en) * 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US5548783A (en) * 1993-10-28 1996-08-20 Dell Usa, L.P. Composite drive controller including composite disk driver for supporting composite drive accesses and a pass-through driver for supporting accesses to stand-alone SCSI peripherals
US5604887A (en) 1994-01-21 1997-02-18 Microsoft Corporation Method and system using dedicated location to share information between real and protected mode device drivers
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5940613A (en) * 1996-05-01 1999-08-17 Sun Microsystems, Inc. Method for creating a single binary virtual device driver for a windowing operating system
US5958022A (en) * 1997-03-21 1999-09-28 International Business Machines Corporation System and method for I/O access mode selection
RU99122746A (ru) * 1997-04-02 2001-09-20 Майкрософт Корпорейшн (Us) Способ интеграции виртуальной машины с редакторами способов ввода
US6785894B1 (en) * 1999-04-09 2004-08-31 Sun Microsystems, Inc. Virtual device driver
JP2001256153A (ja) * 2000-03-09 2001-09-21 Canon Inc ネットワークデバイス制御装置および方法
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
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
US20030061401A1 (en) * 2001-09-25 2003-03-27 Luciani Luis E. Input device virtualization with a programmable logic device of a server
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation

Also Published As

Publication number Publication date
AU2004220769A1 (en) 2005-06-30
BRPI0404496A (pt) 2005-08-23
CA2485239A1 (en) 2005-06-12
RU2004133169A (ru) 2006-04-27
US7558723B2 (en) 2009-07-07
JP2005174307A (ja) 2005-06-30
EP1548589A3 (en) 2007-06-06
RU2406113C2 (ru) 2010-12-10
EP1548589B1 (en) 2018-02-28
EP1548589A2 (en) 2005-06-29
US20050131668A1 (en) 2005-06-16
CN100449488C (zh) 2009-01-07
KR20050059409A (ko) 2005-06-20
ES2664817T3 (es) 2018-04-23
JP4610307B2 (ja) 2011-01-12
TW200519632A (en) 2005-06-16
MXPA04011275A (es) 2005-06-16
ZA200409138B (en) 2006-07-26

Similar Documents

Publication Publication Date Title
CN1627263A (zh) 真实及理想化硬件基装置的双模态装置虚拟化系统和方法
CN1831775A (zh) 虚拟机环境中用于多级截取处理的系统和方法
US9037538B2 (en) File system migration
CN1794177A (zh) 用于为虚拟机揭示处理器拓扑结构的系统和方法
CN102193824A (zh) 虚拟机均质化以实现跨异构型计算机的迁移
CN1716148A (zh) 使用仿真计算环境收集操作系统许可证收益的系统和方法
CN1534457A (zh) 增强的运行时间主机支持
US20180059988A1 (en) STREAM IDENTIFIER BASED STORAGE SYSTEM FOR MANAGING AN ARRAY OF SSDs
US20150127975A1 (en) Distributed virtual array data storage system and method
CN1716203A (zh) 用于在64位x86处理器上运行传统32位x86虚拟机的系统和方法
CN1716193A (zh) 用于在虚拟机环境中实现操作系统的系统和方法
CN102279766B (zh) 并行模拟多个处理器的方法及系统、调度器
CN1716205A (zh) 用于初始化单个虚拟机内多个虚拟处理器的系统和方法
CN1499369A (zh) 用于在不同种类的体系结构中创建和执行集成可执行程序的方法和装置
CN105095121B (zh) 虚拟输入设备在驱动层的实现方法及其系统
CN1731347A (zh) 基于Linux的Windows软件兼容层体系结构
CN114047925A (zh) 隔离编译环境的构建方法、装置、设备及存储介质
CN103262034A (zh) 将数据分区至虚拟机
RU2008148347A (ru) Способ улучшения характеристик при обработке данных межпроцессной цифровой модели
JP6042454B2 (ja) ユーザ生成によるデータセンターの省電力
CN102902550B (zh) 计算机系统及其操作系统载入方法
CN114610337A (zh) 一种多系统安装方法、计算设备及存储介质
CN1694069A (zh) 用于配置计算机系统的系统和方法
US10545670B2 (en) Scalable page migration after memory de-duplication
CN1684030A (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
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150513

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150513

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090107

Termination date: 20191210

CF01 Termination of patent right due to non-payment of annual fee