用于在m核处理器上操作n核应用程序的虚拟机的制作方法

文档序号:6455009阅读:183来源:国知局
专利名称:用于在m核处理器上操作n核应用程序的虚拟机的制作方法
技术领域
本发明涉及在计算设备的多核处理器上操作应用程序。具体而言,本发明 涉及在具有M核处理器的计算设备上操作为N核处理器设计的应用程序。更 具体而言,本发明设计在该计算设备上使用虚拟机以便在该M核处理器上操 作该N核应用程序。
背景技术
如可以理解的,多核处理器是基于多核处理器体系结构来设计的,以便在 单个计算设备中包括两个或多个基于处理器的计算引擎,即"核"。通常,但不 必然地,这一多核处理器被安装到计算设备的单个处理器插槽中,但是在该计 算设备上操作的操作系统将该多核处理器的每个执行核视为是具有所有相关 联的执行资源的分立的逻辑处理器。
通常,多核处理器及其架构旨在实现提升性能的策略,该策略通过将由典 型的单核处理器执行的工作分成各分立部分并在特定核上执行每个部分,由此 在给定处理器时钟周期内执行更多的工作来实现。为了能够充分利用多核处理 器,于是在该处理器上运行的特定应用程序必须被构造成在可用的核上分配应 用程序工作部分,g卩"线程"。
值得注意的是,多核处理器能够执行来自 一个应用程序或来自多个应用程 序的完全分开的代码线程,且所有的执行都是并行的。例如,具有两个核的这 一多核处理器能够并行地在第一核上执行来自应用程序的线程并且在第二核 上执行来自操作系统的线程,或者在第一和第二核上执行来自该应用程序的并 行线程。类似地,具有更多数量的核的这一多核处理器能够并行执行所有来自 多个应用程序和操作系统的线程的多种变型。如现在应该理解的,有了多个核 上的这样的并行处理,多核处理器在计算设备上提供真正的并行多任务处理, 而非顺序的伪多任务处理。这一真正的并行多任务处理可包括例如家庭用户在 录制视频源的同时编辑图片,或者办公室用户在运行环境监视应用程序的同时 从服务器复制数据。有了真正的并行多任务处理,多核处理器可用于改进其中用户活动地在两个或多应用程序中工作,或者后台应用程序相互之间并与用户应用程序竞争处理时间的任何计算设备环境中的响应性。由此,可在计算设备上执行多个处理器密集型任务,而具有更少的诸如冻结、过多时间滞后、自发停止、不规则性能、音频和/或视频失真等问题。
然而,注意,在特定应用程序被构造成使用计算设备上的多核处理器的一个数量N个核,而这一多核处理器实际上具有另一数量M个核的情况下出现
了一个问题。在N比M大以使得M核处理器所具有的核比该N核应用程序被构造成使用的核少的一种情况下,该N核应用程序的工作极有可能必须以并非最初预期的方式被分配给该M核处理器的核。例如,如果应用程序是期望4个核的4核应用程序并且处理器实际上具有2个核,则最初由该应用程序分成4部分以便由4个核来处理的工作现在必须以某种方式由该计算设备的操作系统等,或许通过将这些部分重复,来分配给这两个可用的核。如可以理解的,这样的重新分配可能在特设的基础上,并且在不了解要采用的优选方法(如果的确存在这一方法)的情况下由该操作系统等来执行。因此,这样的重新非配可能导致低效并且可能在某些情况下甚至导致错误或甚至是致命错误。
在M比N大以使得该M核处理器所具有的核比该N核应用程序被构造成使用的核多的另一种情况下,该M核处理器,即该处理器的M个核中的至少某一些即使可能是可用的也不被使用。例如,如果该应用程序是期望4个核的4核应用程序并且该处理器实际上具有8个核,则最初由该应用程序分成4部分以便由4个核处理的工作本可进一步被分成8个部分,而现在只由该8核处理器中的4个核来处理,另外4个核至少对于该应用程序是空闲的。如可以理解的,这些空闲的核表示浪费的容量,并且更广泛而言浪费了更快地和/或更高效地操作该应用程序的机会。
因此,需要一种可以用于实际上在M核处理器上高效地操作被构造成在N核处理器上操作的N核应用程序的系统,其中M大于或小于N。具体而言,需要这样一种系统,其中该N核应用程序即使实际上在M核处理器上,也犹如在N核处理器上那样操作。更具体而言,需要这样一种系统,其中该N核应用程序在仿真N核处理器并且以高效的方式将该应用程序的工作重新分配给该M核处理器的虚拟机上操作。发明概述
上述需求由其中计算设备具有多核处理器、多核应用程序和虚拟机的本发
明来满足。该多核处理器具有一特定数量M个执行核,其中每一个核都是能够被单独分配工作的分立的逻辑处理实体,并且该多核应用程序在该计算设备上被实例化并且期望该M核处理器上存在一特定数量N个执行核以使该N核应用程序分配一特定数量N个应用程序工作部分。该虚拟机在该M核处理器上被实例化,并且该N核应用程序在该虚拟机上被实例化以使该虚拟机对该N核应用程序仿真N核处理器。由此,该虚拟机隐藏了该应用程序所期望的N个核与可从该处理器获得的M个核之间的差别。
附图简述
以上概述以及以下本发明实施例的详细描述在结合附图阅读时能够被更好地理解。出于说明本发明的目的,在附图中示出目前优选的实施例。然而,
如应理解的,本发明不限于所示的精确安排和手段。在附图中


图1是表示其中可结合本发明和/或其各部分的各方面的通用计算机系统的框图2和3是示出在具有4核处理器的计算设备上操作的8核应用程序(图2)和2核应用程序(图3)的框图4是示出根据本发明的一个实施例的通过仿真N核应用程序的虚拟机在具有M核处理器的计算设备上操作的N核应用程序的框图;以及
图5、 6和7是示出根据本发明的一个实施例的图4的基于交互(图5)、工作负载(图6)和功能(图7)来将各工作部分分配给处理器的各核的虚拟机的框图。
发明详述
计算机环境
图1及以下讨论旨在提供对适于在其中实现本发明的合适的计算环境的简要概括描述。尽管并非所需,但本发明在诸如程序模块等由诸如客户机工作 站或服务器等计算机执行的计算机可执行指令的一般上下文中描述。 一般而 言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、 组件、数据结构等。此外,应该理解,本发明和/或其各部分可用其它计算机系 统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费 电子产品、网络PC、小型机、大型计算机等。本发明也可以在其中任务由通 过通信网络链接的远程处理设备执行的分布式计算环境中实施。在分布式计算 环境中,程序模块可位于本地和远程存储器存储设备中。
如图1所示,示例性通用计算系统包括常规个人计算机120等,该计算机 包括处理单元121、系统存储器122和将包括系统存储器的各种系统组件耦合 到处理单元121的系统总线123。系统总线123可以是几种类型的总线结构中 的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体 系结构中的任一种的局部总线。系统存储器包括只读存储器(ROM) 124和随 机存取存储器(RAM) 125。基本输入/输出系统126 (BIOS)包含有助于诸如 启动时在个人计算机120中的元件之间传递信息的基本例程,它被存储在ROM 124中。
个人计算机120还包括对硬盘(未示出)读写的硬盘驱动器127、对可移 动磁盘129读写的磁盘驱动器128、以及对诸如CD-ROM或其它光学介质等可 移动光盘131读写的光盘驱动器130。硬盘驱动器127、磁盘驱动器128和光 盘驱动器130分别通过硬盘驱动器接口 132、磁盘驱动器接口 133和光盘驱动 器接口 134连接到系统总线123。驱动器及其相关联的计算机可读介质为个人 计算机120提供了对计算机可读指令、数据结构、程序模块和其它数据的非易 失性存储。
尽管此处所述的示例性环境使用硬盘、可移动磁盘129和可移动光盘131, 但是应该理解,在示例性操作环境中也可使用能够存储可由计算机访问的数据 的其它类型的计算机可读介质。这样的其它类型介质包括磁带盒、闪存卡、数 字视频盘、贝努利盒式磁带、随机存取存储器(RAM)、只读存储器(ROM) 等。
可在硬盘、磁盘129、光盘131、 ROM 124或RAM 125上存储多个程序模块,包括操作系统135、 一个或多个应用程序136、其它程序模块137和程序数据138。用户可通过诸如键盘140和定点设备142等输入设备向个人计算机120中输入命令和信息。其它输入设备(未示出)可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线的串行端口接口 146连接至处理单元121,但也可以由其它接口,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器147或其它类型的显示设备也经由接口,诸如视频适配器148连接至系统总线123。除了监视器147之外,个人计算机通常包括诸如扬声器和打印机等其它外围输出设备(未示出)。图1的示例性系统还包括主机适配器155、小型计算机系统接口 (SCSI)总线156以及连接到SCSI总线156的外置存储设备162。
个人计算机120可使用至一个或多个远程计算机,诸如远程计算机149的逻辑连接在网络化环境中操作。远程计算机149可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,且通常包括上文相对于个人计算机120描述的许多或所有元件,尽管在图1中只示出存储器存储设备150。图1中所示逻辑连接包括局域网(LAN) 151和广域网(WAN)152。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,个人计算机120通过网络接口或适配器153连接至LAN151。当在WAN联网环境中使用时,个人计算机120通常包括调制解调器154或用于通过诸如因特网等广域网152建立通信的其它装置。或为内置或为外置的调制解调器154经由串行端口接口 146连接到系统总线123。在网络化环境中,相对于个人计算机120所描述的程序模块或其部分可以存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
多核处理器
如上所述,本发明关于诸如图2和3所示的多核处理器10来执行。多核处理器10是基于多核处理器架构来设计的,以便在单个处理器10中包括两个或更多基于处理器的计算引擎,g卩"核"12。如所见,图2和3的处理器10包括4个核12,但是可在处理器10中使用任何数量的核12而不背离本发明的精 神和范围。具有多个核12的处理器10被安装到计算设备14的单个处理器插 槽等中,但是计算设备14的操作系统16将处理器10的每个执行核12视为能 够单独地被分配工作并且可访问所有相关联的执行资源的分立的逻辑处理器。 这样的多核处理器10、计算设备14和操作系统16是已知的或应该对相关公众 是显而易见的,并因而除所提供的之外,无需在此详细阐明。因此,这样的多 核处理器10、计算设备14和操作系统16可以是任何合适的多核处理器、计算 设备和操作系统而不背离本发明的精神和范围。
假定任何特定计算设备14上的多核处理器10可具有不同数量的核12, 并且还假定任何特定处理器IO上的不同的核12可提供不同的功能或甚至采用 不同的指令集。因此,如可以理解的,难以开发能够处理这样的多样性的多核 应用程序18。举一个例子,经常难以编写能够处理处理器10中变化数量的核 12的多核应用程序18,因为这些核12之中的数据和计算的划分可能与独立控 制线程的数量紧密相联系。举另一个例子,经常难以为具有不同功能单元的机 器编写编译器,因为该编译器将对于每个这样的不同的功能单元采用不同的优 化策略和代码生成技术。
从图2和3可以看出,特定应用程序18在计算设备14的操作系统16中 或由其来实例化,并且已被构造成跨处理器10的期望数量的的核12来分配特 定数量的应用程序工作部分19。例如,如从图2中可以看到,应用程序18是 期望跨处理器10的8个核12分配应用程序工作部分19的8核应用程序18。 同样,如从图3中可以看到,应用程序18是期望跨处理器10的2个核12分 配应用程序工作部分19的2核应用程序18。如图2和3所示的这样的多核应 用程序18是已知的或应该对相关公众是显而易见的,并因而除所提供的之外, 无需在此详细阐明。因此,这样的多核应用程序18可以是任何合适的多核应 用程序而不背离本发明的精神和范围。
如应该理解的,如由图2和图3中的应用程序IO来分配的每个工作部分 19可以在任何合适的基础上定义而不背离本发明的精神和范围。例如,每个工 作部分19都可包括一个或多个线程等等,并且可被选择为要求大致相同数量 的处理容量或"带宽"。有了这些工作部分19,并且如也应该理解的,多核处理器10通过在特定核上执行每个部分,由此在给定的处理器时钟周期内执行更 多的工作来提升性能。
如从图2可以看出,因为应用程序18期望从所示的处理器10获得8个核 12,而这一处理器10实际上具有4个核12,所以应用程序18正为操作系统 16生成8个工作部分19以便进行处理。因此,操作系统16必须以某种方式将 这8个工作部分19引导到处理器10的4个核12。例如,如图所示,操作系统 16可简单地选择将两个工作部分19重新分配到每个核12。如上所述,这样的 重新分配可能在特设的基础上、且在不具有来自应用程序18的协助或关于要 采用的优选方法(如果的确存在这一方法)的任何知识的情况下由该操作系统 等来执行。因此,这样的重新分配可能导致低效率,例如,如果第一核12最 终被分配到需要相对较大量带宽的工作,而第二核12最终被分配到需要相对 较少量带宽的工作,则该应用程序就必须持续地等待该第一核12。类似地,这 样的分配在某些情况下甚至可能导致错误或甚至致命错误,诸如在等待应用程 序18时由于某种原因错过了来自某一源的关键数据。
如从图3可以看出,与图2相反,因为应用程序期望从所示的处理器10 获得2个核12,而这一处理器10实际上具有4个核12,所以应用程序18正 为操作系统16生成2个工作部分19以便进行处理。因此,操作系统16同样 将这2个工作部分19引导到处理器10的4个核12。结果,另两个核12至少 对于该应用程序而言是空闲的。如可以理解的,这些空闲的核12表示浪费的 容量,并且更广泛而言浪费了更快地和/或更高效地操作该应用程序18的机会。
一般而言,因而,当应用程序18被构造成利用该计算设备14上的处理器 10的一个数量N个核12,且这一处理器10实际上具有另一数量M个核12时, 可能引发低效率和/或其他问题。由此,本发明解决了这些低效率和/或其他问 题,这通过如图4所示将虚拟机20插入到应用程序18与处理器10之间以便 实际上对N核应用程序18仿真N核处理器10来实现。
虚拟机20
如应该理解的,诸如图4的虚拟机20等虚拟机是出于仿真硬件系统的目 的在计算设备14上操作的软件构造等。具体而言,在本发明中,虚拟机20对N核应用程序18仿真N核处理器10。通常,但不必然地,虚拟机20本身是 应用程序等,并在计算设备"上用于主存N核应用程序18。如应该理解的, 这一虚拟机20可表示计算设备14的划分,并由此可将应用程序18与在这一 计算设备上的其他应用程序隔离开。
此处注意,虚拟机20可被构造成仿真具有特定数量的核12的处理器10, 或可被构造成仿真具有任何所需数量的核12的处理器10。在前一情况下,图 2的8核应用程序18将需要仿真8核处理器10的第一虚拟机20,而图3的2 核应用程序18将需要仿真2核处理器10的第二虚拟机20。在后一情况下,同 一虚拟机能够为图2的8核应用程序18仿真8核处理器10,并且也能够为图 3的2核应用程序18仿真2核处理器10。
构造虚拟机20并在具有M核处理器10的计算设备14上将其实例化一般 是已知的或应该对相关公众是显而易见的,并因而除所提供的之外,无需在此 详细阐明。因此,可以使用任何合适的虚拟机20来为N核应用程序18仿真具 有特定数量N个核12的处理器IO而不背离本发明的精神和范围,当然假定虚 拟机20执行本发明所需的功能。
此处注意,对这一虚拟机20的使用总体而言可能不是特别高效,尤其在 该虚拟机20正在仿真比处理器10的M个核12多的一数量N个核12的情况 下。然而,为N核应用程序18仿真特定数量N个核12的这一虚拟机20通过 实际上向这一 N核应用程序表示这样的N个核12来至少允许该应用程序18 在M核处理器10上执行。g卩,为N核应用程序18仿真N个核12的虚拟机 20实际上在这一应用程序18本来不能在该M核处理器10上操作时允许该应 用程序18在该M核处理器IO上操作。
虚拟机20实际上操作以便隐藏应用程序18所期望的N个核12与可从处 理器10获得的M个核12之间的差别。由此,虚拟机20提供一机器的单个的、 统一的抽象,该机器具有一给定数量的处理器核12以及一给定的功能单元的 集合,且该抽象独立于底层处理器10实际上所提供的。结果,开发者可基于 采取N核处理器10的单个底层框架来开发N核应用程序18,即使处理器10 实际上有M个核12。
注意,虽然可以使用虚拟机20来基于处理器10的M个核12尽可能高效地操作应用程序18,但是在某些情况下可能更期望改为强调这样做会牺牲效率
的其他操作方面。例如,对于2核应用程序18和4核处理器10,该虚拟机对 于应用程序18所期望的每个核12使用处理器10的2个核12可能是更加高效 的。然而,这样做在某些情况下可能是不明智的,也许在应用程序18的每个 工作部分19不能够在处理器10的2个核12之间划分的情况下。在这一情况 下,于是,该虛拟机可改为对于应用程序18所期望的每个核12使用处理器10 的1个核12,即使这样做将导致该处理器10的2个核12被留为空闲。
使用虚拟机20作为应用程序18与处理器10之间的中介能够在至少某些 情况下提供附属但显著的优点。例如,如果应用程序18包括频繁地进行通信 和/或共享相对较大量数据的一对工作部分19,则这些工作部分19应该有利地 共享存储器、缓冲区等以使得这样的通信或共享涉及一个工作部分19将数据 放置在共享空间中并且另一个工作部分19检索该数据。
值得注意的是,如从图5可以看出, 一典型的多核处理器10组织核12 以便以分层的方式共享高速缓存22。具体而言,每个核12本身具有一级(Ll) 高速缓存22,各对核12共享二级(L2)高速缓存22,四个核12的组共享三 级(L3)高速缓存22等。因此,共享一特定L2高速缓存22的一对核12可通 过相应的一对Ll高速缓存22和共享的L2高速缓存22以相对更高效的方式相 互之间进行通信或共享。相反,不共享一特定L2高速缓存22但共享一特定 L3高速缓存22的一对核12可通过相应的一对Ll高速缓存22、相应的一对 L2高速缓存22和共享的L3高速缓存22以相对较不高效的方式相互之间进行 通信或共享。
由此,在这一典型的多核处理器10中,如果应用程序18包括频繁地进行 通信和/或共享相对较大量数据的一对工作部分19,则这些工作部分19应该被 分配给共享L2高速缓存22的一对核12。因此,在本发明的一个实施例中, 作为应用程序18与处理器10之间的中介的虚拟机20根据对该工作部分19具 有多少与任何其他工作部分的交互的评估来将应用程序18的每个工作部分19 分配给处理器10的相应核12。
由此,如从图5可以看出,相对较大量地交互的一对工作部分19可被分 配给处理器10的共享L2高速缓存22的一对核12,而相对较少量地交互的一对工作部分19可被分配给处理器10的共享L3高速缓存22的一对核12,以 及即使不是没有交互也是最少量地交互的一对工作部分19可被分配给处理器 10的共享L4、 L5、 L6等高速缓存22 (假设这一高速缓存22存在)的一对核 12。在任何这样的情况下,是虚拟机20而不是应用程序18执行这样的分配, 并且因此应用程序18不需要被开发成具有这一分配功能。当然,根据交互来 分配工作部分19的实际方法可以是任何合适的方法而不背离本发明的精神和 范围。
使用虚拟机20作为应用程序18与处理器10之间的中介还可提供附属但 显著的优点,这表现在虚拟机20可以在处理器10的核12之间执行动态负载 平衡。具体而言,如果应用程序18将其工作分成多个工作部分19,则虚拟机 20可基于对一特定核12的工作负载的评估来决定将一特定工作部分19分配给 这一特定核12。
由此,如从图6可以看出,虚拟机20可将该特定工作部分19分配给具有 相对较小工作负载的核12,诸如最左边的具有20%工作负载(20%WL)的核 12,而不是具有相对较大工作负载的核12,诸如最右边的具有80%工作负载 (80%WL)的核12。此外,虚拟机20可将一特定工作部分19从具有相对较 大工作负载的核,诸如中间靠右的具有100%工作负载(100% WL)的核12, 重新分配给具有相对较小工作负载的核12,诸如中间靠左的具有35%工作负 载(35% WL)的核12。在任何这样的情况下,是虚拟机20而不是应用程序 18执行这样的负载平衡,并且因此应用程序18不需要被开发成具有这一负载 平衡功能。当然,根据工作负载来分配工作部分19的实际方法可以是任何合 适的方法而不背离本发明的精神和范围。
值得注意的是, 一特定多核处理器10不必具有相同的核12。相反,每个 核12都可以是一特定的专用类型。例如,情况可以是在8核处理器10中,核 12中的6个执行通用处理,而核中的一个执行视频图形处理且核中的一个执行 密码处理。类似地,如可以从图7中看出,4核处理器10可包括音频核12、 视频核12、安全核12和通用核12。
在这些专用类型的核12的情况下,于是,使用虚拟机20作为应用程序 18与处理器IO之间的中介可另外提供附属但显著的优点,这表现在虚拟机20可根据工作部分19的类型以及可从处理器10获得的核12的类型来执行工作 部分19的分配。具体而言,如果应用程序18具有需要密码处理的工作部分19, 则虚拟机20将基于处理器10是否具有密码处理核12,并且还基于这一密码核 12的工作负载来分配这一工作部分19。如可以理解的,如果这一密码核12存 在并且可用,则虚拟机20会将这一工作部分19分配给该密码核12而不会有 进一步的忙乱。然而,如果这一密码核12存在但是忙碌,则该虚拟机20可将 这一工作部分19分配给该密码核12、或另一个密码核12、或具有其上运行的 密码软件的通用核12,所有都取决于各种情况。当然,如果密码核12不存在, 则虚拟机20将必须将这一工作部分19分配给具有其上运行的密码软件的通用 核12等。在任何这样的情况下,并且再一次,是虚拟机20而不是应用程序18 执行这样的基于功能的分配,并且因此应用程序18不需要被开发成具有这些 基于功能的分配的能力。当然,根据功能来分配工作部分19的实际方法可以 是任何合适的方法而不背离本发明的精神和范围。
结论
实现结合本发明执行的过程所需的编程相当直接,且应对相关编程公众是 显而易见的。因而,这样的编程不附在此。因此,可采用任何特定的编程来实 现本发明,而不背离其精神和范围。
在前述描述中,可以看到本发明包括可以用于实际上在M核处理器10上 高效地操作被构造成在N核处理器10上操作的N核应用程序18的新颖且有 用的方法,其中M大于或小于N。该N核应用程序18即使实际上在M核处 理器10上,也犹如在N核处理器10上那样操作。具体而言,N核应用程序 18在仿真N核处理器10并且以高效的方式将该应用程序18的工作重新分配 给该M核处理器10的虚拟机上操作。这样的分配可基于应用程序18的工作 部分19之间的交互、基于负载平衡考虑、和/或基于应用程序18的每个工作部 分19所需的功能等来执行。
应当理解,可对上述实施例作出改变而不脱离其发明概念。从而应理解,本发 明不限于所公开的具体实施例,而是旨在覆盖落入如由所附权利要求书定义的本发明 的精神和范围内的修改。
权利要求
1. 一种计算设备,具有具有特定数量M个执行核的多核处理器,每一个核都是能够单独被分配工作的分立的逻辑处理实体;在所述计算设备上被实例化并且期望在所述M核处理器上存在特定数量N个执行核的多核应用程序,所述N核应用程序由此分配特定数量N个应用程序工作部分;以及在所述M核处理器上被实例化的虚拟机,所述N核应用程序在所述虚拟机上被实例化,所述虚拟机对所述N核应用程序仿真N核处理器,并且由此隐藏所述应用程序所期望的N个核与可从所述处理器获得M个核之间的差别。
2. 如权利要求1所述的计算设备,其特征在于,由所述应用程序分配的每 个工作部分都包括至少一个线程。
3. 如权利要求1所述的计算设备,其特征在于,所述虚拟机表示将所述应 用程序与所述计算设备上的其他应用程序隔离开的这一计算设备的划分。
4. 如权利要求1所述的计算设备,其特征在于,所述虚拟机为应用程序仿 真所述处理器的多个不同数量N个核,并且其中所述虚拟机可以在各自具有不 同数量M个核的多个处理器中的任一个上被实例化。
5. 如权利要求1所述的计算设备,其特征在于,所述虚拟机为应用程序仿 真所述处理器的多个不同数量N个核,并且其中所述虚拟机可以在各自具有不 同数量M个核的多个处理器中的任一个上被实例化。
6. 如权利要求1所述的计算设备,其特征在于,所述处理器的核被组织成 对,每对核中的每个核都耦合至一级(Ll)高速缓存,并且每对核的L1高速 缓存耦合至共享的二级(L2)高速缓存,以使得所述一对核能够通过所述共享 的L2高速缓存在其间直接传送数据,并且其中,所述虚拟机在将所述应用程序的一对工作部分分配给所述处理器的相应核时评估在所述一对工作部分之 间存在多少交互,并且基于这一评估分配所述一对工作部分,所述虚拟机将相对较大量地交互的一对工作部分分配给所述处理器的共享L2高速缓存的一对 核,而将相对较少量地交互的一对工作部分分配给所述处理器的不共享L2高 速缓存的核。
7. 如权利要求1所述的计算设备,其特征在于,所述虚拟机在将所述应用 程序的工作部分分配给所述处理器的核时在所述处理器的核之间执行动态负 载平衡,所述虚拟机基于对一特定核的工作负载的评估来将每个工作部分分配 给这一特定核。
8. 如权利要求1所述的计算设备,其特征在于,所述多核处理器的每个核 都具有选自多个核类型的特定类型,其中所述应用程序的每个工作部分都具有 选自多个工作部分类型的特定类型,并且其中,所述虚拟机根据所述工作部分 的类型以及可从所述处理器获得的每个核的类型来将所述应用程序的每个工 作部分分配给所述处理器的核。
9. 如权利要求7所述的计算设备,其特征在于,所述处理器的第一核是执 行相应的专门任务的专门类型的核,并且第二核是执行通用任务的通用类型的 核,其中如果所述第一核是可用的,则所述虚拟机将对应于所述专门任务的工作部分分配给这一第一核,并且其中如果这一第一核是不可用的,则所述虚拟 机将所述对应于所述专门任务的工作部分分配给所述第二核,所述第二核运行 仿真以便执行所述专门任务。
10. —种其上存储有用于在计算设备上实现虚拟机的计算机可执行指 令的计算机可读介质,所述计算设备具有具有特定数量M个执行核的多核处理器,每一个核都是能够单独被分配 工作的分立的逻辑处理实体;以及在所述计算设备上被实例化并且期望在所述M核处理器上存在特定数量N个执行核的多核应用程序,所述N核应用程序由此分配特定数量N个应用 程序工作部分,用于在所述M核处理器上被实例化的虚拟机,所述N核应用程序在所述 虚拟机上被实例化,所述虚拟机对所述N核应用程序仿真N核处理器,并且 由此隐藏所述应用程序所期望的N个核与可从所述处理器获得M个核之间的 差别。
11. 如权利要求9所述的介质,其特征在于,所述虚拟机表示将所述应 用程序与所述计算设备上的其他应用程序隔离开的这一计算设备的划分。
12. 如权利要求9所述的介质,其特征在于,所述虚拟机为应用程序仿 真所述处理器的多个不同数量N个核,并且其中,所述虚拟机可以在各自具有 不同数量M个核的多个处理器中的任一个上被实例化。
13. 如权利要求9所述的介质,其特征在于,所述处理器的核被组织成 对,每对核中的每个核都耦合至一级(Ll)高速缓存,并且每对核的L1高速 缓存耦合至共享的二级(L2)高速缓存,以使得所述一对核能够通过所述共享 的L2高速缓存在其间直接传送数据,并且其中,所述虚拟机在将所述应用程 序的一对工作部分分配给所述处理器的相应核时评估在所述一对工作部分之 间存在多少交互,并且基于这一评估分配所述一对工作部分,所述虚拟机将相 对较大量地交互的一对工作部分分配给所述处理器的共享L2高速缓存的一对 核,而将相对较少量地交互的一对工作部分分配给所述处理器的不共享L2高 速缓存的核。
14. 如权利要求9所述的介质,其特征在于,所述虚拟机在将所述应用 程序的工作部分分配给所述处理器的核时在所述处理器的核之间执行动态负 载平衡,所述虚拟机基于对一特定核的工作负载的评估来将每个工作部分分配 给这一特定核。
15. 如权利要求9所述的介质,其特征在于,所述多核处理器的每个核 都具有选自多个核类型的特定类型,其中所述应用程序的每个工作部分都具有 选自多个工作部分类型的特定类型,并且其中所述虚拟机根据所述工作部分的 类型以及可从所述处理器获得的每个核的类型来将所述应用程序的每个工作 部分分配给所述处理器的核。
16. 如权利要求14所述的介质,其特征在于,所述处理器的第一核是 执行相应的专门任务的专门类型的核,并且第二核是执行通用任务的通用类型 的核,其中如果所述第一核是可用的,则所述虚拟机将对应于所述专门任务的 工作部分分配给这一第一核,并且其中如果这一第一核是不可用的,则所述虚 拟机将所述对应于所述专门任务的工作部分分配给所述第二核,所述第二核运 行仿真以便执行所述专门任务。
全文摘要
虚拟机在M核处理器上被实例化,并且N核应用程序在该虚拟机上被实例化,以使得该虚拟机对该N核应用程序仿真N核处理器。由此,该虚拟机隐藏了该应用程序所期望的N个核与可从该处理器获得的M个核之间的差别。
文档编号G06F9/44GK101460923SQ200780020314
公开日2009年6月17日 申请日期2007年6月1日 优先权日2006年6月1日
发明者J·R·劳瑞斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1