分配线程给虚拟化硬件用的多个处理器核心的装置和方法与流程

文档序号:25543677发布日期:2021-06-18 20:40
分配线程给虚拟化硬件用的多个处理器核心的装置和方法与流程

本公开涉及将线程分配给用于虚拟化硬件配置的多个处理器核心的装置和方法。



背景技术:

测试工具用于模拟或测试软件程序的运行。作为例示,在一些测试环境中,测试台(testbed)系统包括在测试期间执行软件程序并在测试期间记录或测量软件程序的性能的硬件。在一些情况下,在测试期间可能检测到错误(例如,漏洞(bug)),并且可以更新软件程序以更正错误。

在一些情况下,测试台系统中包括的硬件不同于与软件程序关联的目标硬件。例如,在一些情况下,软件程序被设计成由具有与测试台系统不同的硬件配置的终端用户设备执行。在这种情况下,使用测试台系统执行的模拟或测试可能不准确或不可靠。

某些测试技术对软件程序或测试环境进行修改,以使软件程序与测试台系统匹配。例如,在一些测试环境中,测试台系统的硬件执行仿真程序,该仿真程序对与软件程序关联的目标硬件配置进行仿真。在一些情况下,目标硬件配置的仿真会降低测试台系统的性能,诸如减慢测试。结果,测试的结果可能被延迟,并且测试的成本增加。



技术实现要素:

在特定示例中,一种装置,该装置包括存储器,该存储器被配置成存储与第一程序的线程的分配关联的一个或更多个参数。该装置还包括联接至存储器的多个处理器核心。所述多个处理器核心中的一个或更多个处理器核心具有第一硬件配置,并且被配置成在执行第一程序期间执行与和第一硬件配置不同的第二硬件配置的虚拟化关联的第二程序。第二程序包括调度器,该调度器可执行以基于一个或更多个参数将第一程序的线程分配给多个处理器核心。

在另一示例中,一种方法,该方法包括接收与将第一程序的线程分配给多个处理器核心中的具有第一硬件配置的一个或更多个处理器核心关联的一个或更多个参数。该方法还包括在执行第一程序期间执行与和第一硬件配置不同的第二硬件配置的虚拟化关联的第二程序。执行第二程序包括通过第二程序的调度器基于一个或更多个参数将第一程序的线程分配给多个处理器核心。

在另一示例中,一种计算机可读介质,该计算机可读介质存储能由处理器执行以发起、执行或控制操作的指令。这些操作包括接收与将第一程序的线程分配给多个处理器核心中的具有第一硬件配置的一个或更多个处理器核心关联的一个或更多个参数。这些操作还包括在执行第一程序期间执行与和第一硬件配置不同的第二硬件配置的虚拟化关联的第二程序。执行第二程序包括通过第二程序的调度器基于一个或更多个参数将第一程序的线程分配给多个处理器核心。

附图说明

图1是例示了根据本公开的多个方面的被配置成将线程重新调度到处理器核心的系统的示例的框图。

图2是例示了根据本发明的多个方面的由图1的系统执行的操作的示例的数据流程图。

图3是根据本公开的多个方面的操作图1的系统的方法的示例的流程图。

图4是例示了被配置成执行指令以发起、执行或控制诸如图3的方法的操作之类的操作的计算系统的示例的多个方面的框图。

图5是例示了包括图1的系统的一个或更多个组件的运载工具的例示性实现方式的多个方面的框图。

具体实施方式

根据本公开的虚拟化系统是第一硬件系统(例如,第一计算设备),其执行软件以对第二硬件系统(例如,第二计算设备,也称为目标系统)进行虚拟化(virtualize)(例如,呈现或仿真(representoremulate))。虚拟化系统通过执行虚拟化程序来对目标系统的目标硬件配置进行仿真,该虚拟化程序将目标硬件配置的虚拟化表示呈现给目标程序(例如,被配置成在目标系统上执行的程序)。例如,在一些实现方式中,测试台可以使用虚拟化系统来测试要在目标系统上执行的目标软件应用。在这样的实现方式中,测试台执行虚拟化程序并在虚拟化程序执行的同时执行目标程序。虚拟化程序通过向目标程序呈现表示目标硬件配置的虚拟的计算资源集合来控制目标程序对计算资源的访问。作为例示,目标程序通过向虚拟化程序发送指令来将线程的执行分配给处理资源。进而,虚拟化程序与虚拟化系统的基础计算资源(例如,实际的硬件资源,诸如处理器核心)通信,虚拟化系统可以具有与目标硬件配置非常不同的硬件配置。

出于各种原因,可以使用对目标硬件配置进行虚拟化。例如,通常可以通过以目标硬件的虚拟化表示执行软件来更容易地测试旨在目标硬件上执行的软件,因为虚拟化使得能够监测目标程序和目标硬件的基础操作。作为另一示例,虚拟化可以用于加快测试。作为例示,虚拟化程序可以使多个计算操作在虚拟化系统的多个处理核心处并行执行,而不是在目标硬件配置的处理核心处顺序地执行。作为另一例示,如果期望移动线程的执行减少目标程序测试的执行时间,则虚拟化程序可以将线程移动到虚拟化系统的不同处理核心。

虚拟化也可以用于提高模拟器或训练器(例如,模拟硬件环境以监测用户与硬件环境的交互的计算设备)的保真度(fidelity)。例如,通常期望飞行模拟器准确地模仿所模拟的飞行器的操作。飞行模拟器不是使用来自所模拟的飞行器的实际飞行器外场可更换单元(例如,飞行控制计算机)来模仿所模拟的飞行器的操作,而是执行包括所模拟的飞行器使用的控制规则的飞行控制应用。然而,飞行模拟器还必须执行大量其它操作,诸如,模拟环境效应(例如,照明和天气)和物理建模,而实际飞行器系统则不需要。飞行模拟器的虚拟化系统控制对实际硬件资源的访问,以便确保以及时、高效和准确的方式执行模拟飞行器的操作所需的每个操作。

在一些实现方式中,虚拟化程序包括调度器,该调度器使得能够选择提高目标程序的执行或测试的效率(例如,速度或保真度)的一个或更多个参数。作为示例,在一些实现方式中,一个或更多个参数指示用于将目标程序的特定线程映射到虚拟化系统(例如,飞行模拟器硬件或试验台系统)的特定处理器核心的规则(在本文中也称为映射规则)。在一些示例中,映射规则允许将目标程序的线程从虚拟化系统的较频繁使用的处理核心,重新调度到虚拟化系统的较不频繁使用的处理核心(例如,使得较不频繁的核心被更经常地使用,从而提高目标程序的执行速度或目标程序的测试速度)。另选地或附加地,在一些示例中,重新调度目标程序的频繁执行线程,以允许执行目标程序的较不频繁执行的线程(例如,使得较不频繁执行的线程被更经常地执行,从而提高目标程序的执行速度或目标程序的测试速度)。

作为进一步例示,在一些示例中,一个或更多个参数指示:目标程序的适合(或不适合)被移动到虚拟化系统的未充分利用的处理器核心的一个或更多个线程。另选地或附加地,在一些示例中,所述一个或更多个参数指示:适合(或不适合)被移动到虚拟化系统的未充分利用的处理器核心的线程将要执行的时间长度。另选地或附加地,在一些示例中,所述一个或更多个参数指示将线程移动到虚拟化系统的另一核心的条件、适合(或不适合)执行该线程的核心或两者。因此,根据本公开内容的多个方面的系统的技术效果是提高了目标程序的执行速度或目标程序的测试速度(例如,通过重新调度较不频繁使用的线程,以使得较不频繁使用的线程被允许执行,从而减少或防止失速状态(stallcondition)或“瓶颈(bottleneck)”)。根据本公开的多个方面的系统的另一技术效果是增加特定硬件配置的虚拟化的保真度(例如,通过增加特定硬件配置的虚拟化的准确性)。

根据特定示例,作为例示性示例,所述一个或更多个参数可以由目标程序的软件开发人员、操作虚拟化系统的测试工程师、另一用户或其组合来指定。在另一示例中,所述一个或更多个参数由诸如机器学习程序之类的特定程序来确定。作为例示,在一个示例中,机器学习程序对具有一个或更多个共同特征的多个目标程序的测试进行分析,并“学习”在测试期间与其它处理核心相比较频繁使用或较不频繁使用的特定处理核心。机器学习程序还可确定:哪些线程从移动到其它处理核心受益、时间限制或指示线程何时可以从移动受益的其它执行阈值。

尽管这里参考用作测试台系统的虚拟化系统描述了某些示例,但是在其它示例中,可以在其它系统(诸如包含在运载工具内的嵌入式系统)中实现虚拟化系统。在一些情况下,嵌入式系统可能具有无法利用软件容易地修改的硬件配置,因此无法利用某些软件程序良好运行。作为特定示例,在一些情况下,嵌入式系统(例如,运载工具的系统)可能难以升级并且升级昂贵。例如,如果修改了飞行管理计算机(fmc:flightmanagementcomputer)或操作飞行程序(ofp:operationalflightprogram),则在飞行器上运行ofp的fmc可能必须经历重新认证。在一些实现方式中,虚拟化系统可以通过对fmc的硬件配置虚拟化来代替fmc执行ofp。在该示例中,虚拟化系统可以被重新认证,但是ofp不需要经历重新认证。随着飞行器机队的老化,较新的计算系统变得可用,并且旧式系统(例如,较旧的处理器)可能难以购买。对旧式系统进行虚拟化可以减少与升级难以购买旧式系统关联的影响(例如成本和时间)。

下面参照附图描述本公开的特定多个方面。在描述中,共同的特征由共同的附图标记表示。多种术语仅用于描述特定实现方式的目的而并非旨在限制实现方式。例如,单数形式的“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外明确指出。术语“包含(comprises)”和“包含(comprising)”与“包括(includes)”和“包括(including)”能够互换使用。另外,术语“其中(wherein)”与“在……中(where)”能够互换使用。如本文所使用的,用于修饰诸如结构、组件、操作等的元素的序数术语(例如,“第一”、“第二”、“第三”等)本身并不表示元素相对于另一元素的任何优先级或顺序,而仅仅是将元素与具有相同名称(但除了序数术语的使用以外)的另一元素区分开。如本文所使用的,术语“集合”是指一个或更多个特定元素,并且术语“多个”是指多个(例如两个或更多个)特定元素。

此外,诸如“确定”、“计算”、“移位”、“调整”等术语可以用于描述如何执行一个或更多个操作。应当注意,这些术语不应被解释为限制性的,并且可以利用其它技术来执行类似的操作。另外,如本文所指,“生成”、“计算”、“使用”、“选择”、“访问”和“确定”可以互换使用。例如,“生成”、“计算”或“确定”参数(或信号)可以指主动生成、计算或确定参数(或信号),或者指使用、选择或访问已经诸如由另一组件或装置生成的参数(或信号)。

参照图1,示出了被配置成将线程重新调度到处理器核心的系统的特定示例,并且该系统通常指定为100。系统100包括存储器104和联接至存储器104的多个处理器核心120。在一些实现方式中,存储器104和多个处理器核心120被包括在虚拟化系统102(例如,测试台系统、嵌入式系统或模拟器)中。

作为例示,在特定示例中,虚拟化系统102被配置成测试要由诸如飞行管理计算机(fmc:flightmanagementcomputer)这样的飞行器系统执行的操作飞行程序(ofp:operationalflightprogram)。在一些示例中,虚拟化系统102具有不同于飞行器系统的硬件配置的“通用(generic)”硬件配置。在这种情况下,虚拟化系统102执行虚拟化程序以对飞行器系统的硬件配置进行虚拟化或仿真。在一些系统中,硬件配置的仿真会降低测试性能,诸如减慢测试、延迟测试结果或增加测试成本。如下面进一步说明的,根据本公开的某些方面的技术重新调度线程执行以增加虚拟化测试的速度。

在一些示例中,多个处理器核心120包括一个或更多个中央处理单元(cpu)处理核心、一个或更多个图形处理单元(gpu)处理核、一个或更多个数字信号处理器(dsp)处理核、一个或更多个其它处理器核心、或其组合。在图1中,多个处理器核心120包括两个处理器核心,诸如第一处理器核心122和第二处理器核心124。在其它示例中,多个处理器核心120可以包括多于两个的处理器核心。

多个处理器核心120中的一个或更多个处理器核心具有第一硬件配置130。作为例示,在一些示例中,第一硬件配置130对应于多个处理器核心120中包括的或可用于多个处理器核心120的一个或更多个缓存的特定数量或大小、提供给多个处理器核心120的时钟信号的频率、与多个处理器核心120关联的指令集架构(isa:instructionsetarchitecture)、多个处理器核心120的流水线配置、一个或更多个其它特征或其组合。

多个处理器核心120中的一个或更多个处理器核心被配置成执行第二程序114(例如,虚拟化程序)以生成虚拟环境,诸如虚拟机器164。在特定示例中,多个处理器核心120被配置成执行第二程序114以对与第一硬件配置130不同的第二硬件配置118进行虚拟化。如本文所使用的,第一硬件配置130可以指虚拟化系统102的、与对应于第二硬件配置118的另一配置(例如,另一种类型的硬件)不同的配置(例如,某类型的硬件)。在例示性示例中,第二硬件配置118对应于fmc的配置。

虚拟机器164被配置成执行第一程序106(例如,作为例示性示例,诸如要由fmc执行的ofp之类的目标程序)。在特定示例中,存储器104被配置成存储第一程序106,并且虚拟机器164被配置成从存储器104读取第一程序106。在一些实现方式中,虚拟机器164被配置成在第一程序106的测试过程190(例如,调试过程、模拟过程或另一测试)期间执行第一程序106。作为进一步例示,在特定的非限制性示例中,虚拟化系统102被配置成从第一程序106的软件开发人员的计算机接收第一程序106,并请求测试第一程序106。

在特定示例中,虚拟机器164对第二硬件配置118进行仿真,使得第一程序106的执行类似于第二硬件配置118(或者与第一硬件配置130相比,更类似于第二硬件配置118)。例如,在一些情况下,虚拟化系统102的硬件不同于目标硬件的硬件,第一程序106被设计(例如,由软件开发者的计算机)成在该目标硬件上执行。在该示例中,多个处理器核心120可以在第一程序106的测试过程190期间执行第二程序114,以便增加测试过程190的保真度、性能、速度或准确性(与在没有对第二硬件配置118进行虚拟化的情况下执行测试过程190相比)。

作为特定示例,在一些情况下,第一程序106的特定测试过程190可能取决于第二硬件配置118的某些方面而非全部方面。作为特定示例,在一些实现方式中,第二硬件配置118规定(在其它特征中)使用多个处理器核心120中的单个处理器核心的单核硬件配置。如果第一程序106的特定测试过程190不取决于线程108是使用一个处理器核心还是使用多个处理器核心执行的,则通过将测试过程190限制到第二硬件配置118规定的单核硬件配置可能不必要地减慢测试过程190。此外,在一些常规系统中,对每个测试过程190的第二程序114的行为(或执行)的修改可能是昂贵的或不可行的(例如,如果源代码访问不可用)。结果,在这样的常规系统中,由于对第二硬件配置118进行仿真(例如,通过避免将线程108调度到第二处理器核心124,以便对单核硬件配置进行仿真),线程108的执行被减慢(例如,停顿)。根据本公开的一些方面,使用一个或更多个参数136掌控(override)第二程序114和第二硬件配置118的一个或更多个方面(例如,对于第一程序106的特定测试过程190不重要的一个或更多个方面)。

作为特定的非限制性示例,在一些实现方式中,第一硬件配置130规定多个处理器核心120中的每个处理器核心具有对特定资源(例如,缓存或存储器)的无限定访问,并且第二硬件配置118规定多个处理器核心120中的每个处理器核心将与多个处理器核心120中的其它处理器核心共享特定资源。作为进一步例示,在一些示例中,第二硬件配置118对应于与第一硬件配置130不同的一个或更多个缓存的特定数量或大小、与第一硬件配置130不同的时钟信号的频率、与第一硬件配置130不同的指令集架构(isa)、与第一硬件配置130不同的流水线配置、与第一硬件配置130不同的一个或更多个其它特性或其组合。

第二程序114包括调度器116。调度器116可执行以将第一程序106的线程108分配给多个处理器核心120。例如,在一些实现方式中,调度器116可执行以基于一个或更多个参数136将线程108分配(或重新分配)到多个处理器核心120。在一些示例中,一个或更多个参数136在第二程序114的执行期间修改(或掌控)调度器116的某些调度默认操作,以便增加第二硬件配置118的模拟的保真度、性能、速度或准确性(与在第二程序114的执行期间的调度默认操作相比)。如本文所使用的,“线程”可以指代特定的指令集,该特定的指令集可执行以执行可以由调度器(例如,调度器116)独立于一个或更多个其它特定的指令集进行管理的特定过程。

在特定示例中,存储器104被配置成存储一个或更多个参数136,并且虚拟机器164被配置成从存储器104读取一个或更多个参数136。在一些实现方式中,作为例示性示例,一个或更多个参数136包括在元数据中或一个或更多个文件中,诸如配置文件(例如.ini文件)、测试数据文件、数据库文件(例如平面文件)、一个或更多个其它文件或其组合。作为进一步例示,在一些示例中,元数据指示多个处理器核心120中的适合执行第一程序106的特定线程的一个或更多个核心(例如,通过指示主要、次级和第三级核心来执行特定线程)、多个处理器核心120中的不适合执行第一程序106的特定线程的一个或更多个核心、多个处理器内核120中的在一个或多个条件下适合执行第一程序106的特定线程的一个或多个核心、或其组合。作为特定示例,特定条件可以指示规则(例如,映射规则162中的一个),诸如规定第一程序106的特定线程直到第一程序106的另一特定线程已经完成执行才执行的规则。

作为进一步例示,在一些示例中,作为例示性示例,虚拟化系统102被配置成经由诸如图形用户界面(gui)这样的用户接口132来接收一个或更多个参数136作为用户输入134。在这样的示例中,用户(例如,软件开发人员、测试工程师或另一用户)可以通过经由用户接口132输入一个或更多个参数136作为用户输入134,来规定调度器116的一个或更多个调度操作。作为特定示例,在一些实现方式中,测试工程师可以监测第一程序106的测试过程190并且使用一个或更多个参数136来修改测试过程190和/或测试执行(例如,通过响应于确定测试过程190的性能相对较慢或未按预期执行,而增加多个处理器核心120中的用于执行第一程序的处理器核心的数量)。

另选地或附加地,可以使用一个或更多个其它技术来接收或确定一个或更多个参数136。作为例示,在一个示例中,机器学习程序160是可执行的(例如,通过多个处理器核心120或通过另一处理设备),以确定一个或更多个参数136,诸如通过“学习”与第二硬件配置118关联的特性来确定。在一些示例中,机器学习程序160基于具有一个或更多个共同特性的多个程序的执行来监测或接收训练数据。机器学习程序160被训练以识别多个处理器核心120中的与多个处理器核心120的其它处理核心相比较频繁使用或较不频繁使用的特定处理核心,并基于此信息调整映射规则162。作为另一示例,机器学习程序160识别第一程序106的可以被移动到不同处理核心的一个或更多个线程,或者识别指示特定线程何时将从被移动到另一处理核心受益的条件(例如,阈值条件)。

在一些示例中,使用多个源来确定一个或更多个参数136,诸如使用用户输入134和机器学习程序160二者来确定一个或更多个参数136。例如,在一些实现方式中,机器学习程序160可执行以向用户提供参数建议(例如,经由用户界面132),该参数建议可以被用户确认、否定(disconfirm)或修改以确定一个或更多个参数136。作为另一示例,用户输入134定义映射规则162,并且机器学习程序160基于用于训练机器学习程序160的训练数据来选择映射规则162的预期提供良好性能的特定子集。

在另一示例中,机器学习程序160可执行以“检查”用户经由用户输入134指示的一个或更多个参数。作为例示,在一个示例中,机器学习程序160将由用户输入134指示的一个或更多个参数与由机器学习程序160独立于用户输入134确定的一个或更多个参数进行比较。在一些示例中,由用户输入134指示的一个或更多个参数中的特定参数可以与由机器学习程序160确定的一个或更多个参数不同(例如,其中,由用户输入134规定的线程到核心映射在机器学习程序160确定的映射规则162中不存在)。在一些示例中,机器学习程序160可执行以提示用户(例如,经由用户接口132)确认特定参数。

作为进一步例示,在一些示例中,调度器116可执行以基于一个或更多个参数136来将第一程序106的特定线程(例如,第一线程110或第二线程112)从由第一处理器核心122执行重新调度到由第二处理器核心124执行。在一些示例中,与由第一处理器核心122执行特定线程相比,重新调度特定线程的执行以由第二处理器核心124执行会减少执行时间或增加第二硬件配置118的虚拟化的保真度。如本文所使用的,重新调度线程的执行可以包括:将线程的执行从一个处理器核心改变到另一处理器核心;改变由特定处理器核心执行该线程和一个或更多个其它线程的顺序;执行一个或更多个其它操作或其组合。

作为非限制性示例,在一些实现方式中,在第一硬件配置130中可用的特定类型的资源(例如,特定类型的处理核心)在第二硬件配置118中可能不可用。在一个特定示例中,第二处理器核心124对应于第二硬件配置118中不可用的特定类型的处理核心(例如,cpu处理核心、gpu处理核心、dsp处理核心或另一类型的处理核心)。在这种情况下,一个或更多个参数136可以指示调度器116从执行第一程序106的一个或更多个线程108中排除第二处理器核心124。

在一些实现方式中,一个或更多个参数136规定特定条件138,以将第一程序106的线程从由第一处理器核心122执行重新调度到由第二处理器核心124执行。作为特定示例,在一些实现方式中,特定条件138对应于在第一程序106的执行期间确定第一处理器核心122的第一使用(usage)126满足使用阈值142、确定第二处理器核心124的第二使用128不满足使用阈值142或者、确定两者。作为非限制例示性示例,第一使用126和第二使用128中的一者或两者可以分别对应于或指示第一处理器核心122和第二处理器核心124在第一程序106执行期间的处理器利用率的特定水平(例如,处理器核心繁忙的时间百分比),并且使用阈值142具有与阈值处理器利用率值相对应的值,作为示例性非限制示例,诸如百分之九十的利用率。在另一非限制例示性示例中,第一使用126和第二使用128中的一者或两者可以分别对应于或指示第一处理器核心122或第二处理器核心124的估计功耗,并且使用阈值142指示阈值功耗值。可以将使用阈值142与第一使用126、第二使用128或者两者进行比较,以确定是否将线程从由第一处理器核心122执行重新调度带由第二处理器核心124执行。

另选地或附加地,在一些示例中,一个或更多个参数136规定将第一程序106的特定线程的执行从第一处理器核心122重新调度到第二处理器核心124的执行阈值144。在特定示例中,执行阈值144指示阈值时间值(例如,分配用于完成每个线程或每个线程的任务集的时间量),该阈值时间值可以与特定线程在第一处理器核心122处执行的时间量进行比较,以确定是否将特定线程的执行重新调度到第二处理器核心124。

另选地或附加地,在一些示例中,一个或更多个参数136规定第一程序106的特定线程中的适合被调度器116重新调度的一个或多个特定线程、多个处理器核心120中的适合执行特定线程的特定处理器核心、或者多个处理器核心120中用于执行特定线程的优选处理器核心。例如,在图1中,一个或更多个参数136包括第一程序106的适合由调度器116重新调度的特定线程的适合线程指示146。作为例示,在一些实现方式中,第一程序106的每个线程与对应的索引值关联,并且适合线程指示146包括规定第一程序106的特定线程的索引值的数据。在一些示例中,用户(例如,软件开发人员、测试工程师或另一用户)可以规定适合线程指示(例如,通过经由用户接口132输入一个或更多个参数136作为用户输入134)。作为另一示例,图1还示出了一个或更多个参数136包括多个处理器核心120中的适合执行特定线程的特定处理器核心的适合线程处理器核心指示148。作为另一示例,在图1中,一个或更更多个参数136包括多个处理器核心120中的用于执行特定线程的特定处理器核心的优选处理器核心指示150。在一些示例中,与多个处理器核心120中的其它处理器核心相比,由优选处理器核心指示150指示的特定处理器核心具有更好的性能(减少了第一程序106的测试过程190的执行时间)。

另选地或附加地,在一些示例中,一个或更多个参数136规定了约束(restriction)140。在一些示例中,约束140标识第一程序106将不被调度器116重新调度的线程。

在特定示例中,一个或更多个参数136指示或用于确定第一程序106的线程到多个处理器核心120中的处理器核心的映射规则162。在一些实现方式中,映射规则162指示基于一个或更多个参数136(诸如基于以下参数中的一个或更多个参数:特定条件138、约束140、使用阈值142、执行阈值144、适合线程指示146、适合线程处理器核心指示148、优选处理器核心指示150或者一个或更多个其它参数)将第一程序106的线程108中的一个或更多个线程重新分配给多个处理器核心120中的一个或更多个处理器核心。

在一些示例中,在执行第一程序106之前(例如,在从存储器104访问第一程序106之前,或在运行第一程序106之前)确定映射规则162。另选地或附加地,在一些实现方式中,在第一程序106的执行期间确定或修改(例如,选择)映射规则162。作为例示,在一些示例中,在第一程序106的执行期间对第一使用126和第二使用128进行监测。在一些示例中,响应于确定第一处理器核心122的第一使用126满足使用阈值142、确定第二处理器核心124的第二使用128不满足使用阈值142或者确定两者来修改映射规则162(例如,选择不同的映射规则162集)。

在一些示例中,映射规则162包括:指示第一程序106的线程108中的每个线程是否适合由多个处理器核心120中的每个处理器核心执行的矩阵。在这样的示例中,矩阵的特定条目的“1”值(或“0”值)可以指示第一程序106的线程108中适合(或不适合)由多个处理器核心120中的特定处理器核心执行的特定线程。另选地或附加地,在另一例示性示例中,映射规则162包括:指示线程108中的线程的执行优先级、多个处理器核心120中的处理器核心的执行优先级、其它信息或者其组合的矩阵。作为示例,矩阵的特定条目的特定值可以指示第一程序106的线程108的特定线程与多个处理器核心120的特定处理器核心之间的映射是主要映射(例如,优选映射),并且矩阵的另一条目的另一个值可以指示特定线程与多个处理器核心120中的另一处理器核心之间的另一个映射是次级映射(例如,次优映射)。

在一些示例中,机器学习程序160可执行以接收指示一个或更多个参数136中的任一参数的输入,并基于该输入来识别线程108到多个处理器核心120的一个或更多个映射。在一些示例中,一个或更多个映射基于映射规则162。在一些实现方式中,机器学习程序160使用与条件和约束集(例如,条件138和约束140)关联的多个权重(例如,介于下限与上限之间的值)。在特定示例中,每个条件和约束与用于确定分数的特定权重关联(例如,其中,较大的权重与较高的分数关联)。在一些示例中,使用分数来识别多个处理器核心120中的用于执行重新调度线程108中的线程的特定处理器核心。在一些示例中,机器学习程序160被训练以选择线程108到多个处理器核心120的“最佳”映射(例如,对应于最高的预测执行性能的映射)。在一些实现方式中,可以接收(例如,经由用户接口132)用户输入,以确认或否定由机器学习程序160识别的特定映射(例如,其中,经由用户接口132提示用户确认或否定由机器学习程序160识别的映射)。在一些示例中,否定由机器学习程序160识别的特定映射的用户输入发起对机器学习程序160的多个权重的调整(例如,通过提示用户调整多个权重以利于由机器学习程序160进行“学习”)。作为进一步例示,在一些实现方式中,作为例示性示例,机器学习程序160可执行以使用一个或更多个神经网络或遗传算法来执行一个或更多个人工智能(ai)操作。

与其它技术相比,参照图1描述的一个或更多个方面可以改进系统(例如,虚拟化系统102)的性能。例如,通过基于一个或更多个参数136重新调度线程108中一个或更多个线程和/或多个处理器核心120中的一个或更多个处理器核心,可以提高第一程序106的测试过程190的速度,降低测试的成本、提高测试的保真度或两者兼有。

参照图2,示出了由图1的系统100执行的操作的某些示例,并且该操作的某些示例通常规定为200。在特定示例中,图2的操作200由图1的虚拟机器164执行。

在202处,操作200包括执行第一初始化。在特定示例中,多个处理器核心120通过从存储器104读取一个或更多个参数136来执行第一初始化。

在204处,操作200还包括执行第二初始化。在特定示例中,虚拟机器164通过对一个或更多个参数136进行解析来执行第二初始化。

在206处,操作200还包括将线程映射到处理器核心。作为例示,在一个示例中,例如根据映射规则162,基于一个或更多个参数136来将第一程序106的线程108映射到多个处理器核心120中的处理器核心。在一些示例中,基于特定条件138、约束140、使用阈值142、执行阈值144、适合线程指示146、适合线程处理器核心指示148、优选处理器核心指示150或者一个或更多个其它参数中的一个或更多个参数,将第一程序106的线程108映射到多个处理器核心120中的处理器核心。

在208处,操作200还包括基于映射执行线程。在特定示例中,多个处理器核心120(或多个处理器核心120的子集)基于映射规则162执行第一程序106的线程108。

在210处,操作200还包括生成审核文件(auditfile)。在一些示例中,审核文件指示多个处理器核心120中的每个处理器核心的第一程序的线程108的初始布局。在一些示例中,审核文件指示线程108的线程从特定处理器核心重新调度到多个处理器核心120中的另一处理器核心的时间(例如,特定时钟周期)。作为特定示例,审核文件可以指示例如响应于第一使用126满足使用阈值142、响应于第二使用128不满足使用阈值142或者响应于两者,在特定时间(例如,第一处理器核心122或第二处理器核心124的特定时钟周期)将第一线程110从第一处理器核心122重新调度到第二处理器核心124。在一些示例中,审核文件跟踪线程到核心的静态映射(例如,其中,审核文件记录线程到核心的初始映射)。另选地或附加地,在一些实现方式中,审核文件被动态更新以跟踪对线程调度映射的一个或更多个改变。

与其它技术相比,参照图2描述的一个或更多个方面可以改进系统(例如,图1的虚拟化系统102)的性能。例如,通过基于一个或更多个参数136重新调度线程108中一个或更多个线程和/或多个处理器核心120中的一个或更多个处理器核心,可以提高第一程序106的测试的速度,降低测试的成本、提高测试的保真度或两者兼有。

参照图3,示出了方法的特定例示性示例,并且该方法的特定例示性示例总体标记为300。在特定示例中,方法300的操作由图1的多个处理器核心120中的一个或更多个处理器核心执行。

在302处,方法300包括接收与将第一程序的线程分配给多个处理器核心中的具有第一硬件配置的一个或更多个处理器核心关联的一个或更多个参数。在特定示例中,虚拟机器164接收与将线程108分配给多个处理器核心120中的具有第一硬件配置130的一个或更多个处理器核心关联的一个或更多个参数136。在一些示例中,多个处理器核心120经由用户输入134接收一个或更多个参数136。在一示例中,虚拟机器164通过从存储器104读取一个或更多个参数136来接收一个或更多个参数136。在一示例中,结合机器学习程序的执行来确定一个或更多个参数136。在这种情况下,虚拟机器164可以通过执行机器学习程序160以确定一个或更多个参数136来接收一个或更多个参数136。

在方法300的一个例示性示例中,一个或更多个参数136规定第一程序106的线程(例如,第一线程110或第二线程112)到多个处理器核心120中的特定处理器核心(例如,第一处理器核心122)的映射(例如,映射规则162)。另选地或附加地,在方法300的另一示例中,一个或更多个参数136规定将重新调度第一程序106的频繁执行的线程(例如,第一线程110或第二线程112)以使得能够执行第一程序106的较不频繁执行的线程(例如,第二线程112或第一线程110)。另选地或附加地,在方法300的其它示例中,一个或更多个参数136可以规定其它信息。

在304处,方法300还包括在执行第一程序期间执行与第一硬件配置不同的第二硬件配置的虚拟化关联的第二程序。执行第二程序包括通过第二程序的调度器基于一个或更多个参数将第一程序的线程分配给多个处理器核心。作为例示,在一些示例中,多个处理器核心120在第一程序106的执行期间执行第二程序114,以对第二硬件配置118进行虚拟化,并且第二程序114的执行包括由调度器116基于一个或更多个参数136将线程108分配给多个处理器核心120。

与其它技术相比,参照图3描述的一个或更多个方面可以改进系统(例如,图1的虚拟化系统102)的性能。例如,通过基于一个或更多个参数136重新调度线程108中一个或更多个线程和/或多个处理器核心120中的一个或更多个处理器核心,可以提高第一程序106的测试的速度,降低测试的成本、提高测试的保真度或两者兼有。

图4是包括计算设备410的计算环境400的框图的图示。计算设备410被配置成支持根据本公开的计算机实现的方法和计算机可执行的程序指令(或代码)的实施方式。在一些示例中,计算设备410或其一部分被配置成执行指令以发起、执行或控制本文所述的操作,诸如图2的操作200、图3的方法300的操作或二者。

计算设备410包括多个处理器核心120。多个处理器核心120被配置成与存储器104(例如,系统存储器或另一存储器)、一个或更多个存储设备440、一个或多个输入/输出接口450、通信接口426或其组合进行通信。

根据特定实现方式,存储器104包括易失性存储器(例如,易失性随机存取存储器(ram)设备)、非易失性存储器(例如,只读存储器(rom)设备、可编程只读存储器或闪速存储器)、一个或更多个其它存储器设备或者其组合。在图4中,存储器104存储操作系统432,该操作系统432可以包括用于启动计算设备410的基本输入/输出系统以及使得该计算设备410能够与用户、其它程序和其它设备进行交互的完整操作系统。在一些示例中,存储器104存储可以由多个处理器核心120执行的指令,以在计算设备410的组件(诸如,存储器104、一个或更多个存储设备440、一个或更多个输入/输出接口450、通信接口426或其组合)之间传输数据或信号。

在一些实现方式中,一个或更多个存储设备440包括非易失性存储设备,诸如磁盘、光盘或闪速存储器设备。在一些示例中,一个或更多个存储设备440包括可移动存储设备、不可移动存储设备或两者。在一些情况下,一个或更多个存储设备440被配置成存储操作系统、操作系统的图像、应用和程序数据。在特定示例中,存储器104、一个或更多个存储设备440或两者包括有形的计算机可读介质。

在图4的示例中,操作系统432可执行以与一个或更多个输入/输出接口450通信,以使得计算设备410能够与一个或更多个输入/输出设备470通信,以促进用户交互。在一些实现方式中,一个或更多个输入/输出接口450包括一个或更多个串行接口(例如,通用串行总线(usb)接口或以太网接口)、并行接口、显示适配器、音频适配器、一个或更多个其它接口或者其组合。在一些示例中,一个或更多个输入/输出设备470包括键盘、指示设备、显示器、扬声器、麦克风、触摸屏、一个或更多个其它设备或其组合。在一些示例中,多个处理器核心120被配置成基于经由一个或更多个输入/输出接口450接收的用户输入来检测交互事件。另选地或附加地,在一些实现方式中,多个处理器核120被配置成经由一个或更多个输入/输出接口450将信息发送到显示器。

在特定示例中,操作系统432可执行以使用通信接口426与一个或更多个设备480通信(例如,向一个或更多个设备480发送信号)。在一些实现方式中,通信接口426包括一个或更多个有线接口(例如,以太网接口)、符合ieee802.11通信协议的一个或更多个无线接口、一个或更多个其它无线接口、一个或更多个光学接口或者一个或更多其它网络接口或者其组合。在一些示例中,一个或更多个设备480包括主机计算机、服务器、工作站、一个或更多个其它计算设备或其组合。

在一些示例中,计算设备410被包括在图1的虚拟化系统102中,并且多个处理器核心120被配置成在第一程序106的执行期间执行第二程序114(例如,以在测试过程190期间对第二硬件配置118进行虚拟化)。注意,其它方面在本公开的范围内。作为例示,在另一示例中,计算设备410被包括在另一系统(例如,作为例示性示例,医疗设备或运载工具)中,并且多个处理器核心120被配置成在系统的操作期间执行第二程序114(例如,以在系统操作期间对第二硬件配置118进行虚拟化)。

作为进一步例示,可以在如图5的示例中所示的运载工具500的背景下描述本公开的多个方面。在一些示例中,作为例示性示例,运载工具500对应于飞行器、航天器或地面运载工具。

如图5所示,运载工具500包括具有内部516和多个系统520的框架514(例如,飞行器的机身)。多个系统520的示例包括推进系统524、电气系统526、环境系统528、液压系统530和嵌入式系统532中的一个或更多个系统。如本文所使用的,嵌入式系统(例如,嵌入式系统532)可以指的是包括特定硬件和针对特定硬件开发(例如,使得指令被设计成由特定硬件执行)的指令的系统。在一些情况下,可以开发软件以通过相对少量类型的硬件设备来执行。相比之下,企业系统可以包括为相对大量类型的硬件系统开发的软件,诸如为各种计算设备开发的互联网网页(internetweb)浏览器。

在图5中,嵌入式系统532包括存储器104和多个处理器核心120。图5还例示了存储器104可以被配置成存储可由多个处理器核心120使用的一个或更多个参数136,以将一个或更多个线程重新调度到多个处理器核心120中的一个或更多个处理器核心。

在一些情况下,与第一程序106相比,嵌入式系统532具有最近(或更新)的设计,并且第一程序106对应于被设计成在先前硬件配置550上执行的“旧式”(例如,已弃用)程序。在该示例中,嵌入式系统532可以执行第二程序114(例如,在飞行器500的操作期间)以对先前硬件配置550进行虚拟化(例如,以对与另一飞行器关联并且与第一程序106兼容的“旧式”硬件配置进行虚拟化)。在另一示例中,嵌入式系统532具有旧式硬件配置,并且第一程序106对应于被设计用于由嵌入式系统532执行的特定程序的最近版本(例如,更新的版本)。在该示例中,嵌入式系统532可以执行第二程序114以对与第一程序106兼容的最近的硬件配置进行虚拟化。

本文描述的示例的例示旨在提供对多个实现方式的结构的一般理解。这些例示并不旨在用作对利用本文中描述的结构或方法的装置和系统的所有元件和特征的完整描述。在阅读本公开后,许多其它实现方式对于本领域技术人员而言可能是显而易见的。可以利用其它实现方式并从本公开中得出其它实现方式,使得可以在不脱离本公开的范围的情况下进行结构和逻辑上的替换和改变。例如,可以以与图中所示的顺序不同的顺序来执行方法操作,或者可以省略一个或更多个方法操作。因此,本公开和附图应被认为是例示性而非限制性的。

此外,本公开包括根据以下条款的实施方式:

1.一种装置,所述装置包括:

存储器(104),所述存储器(104)被配置成存储与第一程序(106)的线程(108)的分配关联的一个或更多个参数(136);以及

多个处理器核心(120),所述多个处理器核心(120)联接至所述存储器,所述多个处理器核心中的一个或更多个处理器核心具有第一硬件配置(130),其中,所述多个处理器核心中的一个或更多个处理器核心被配置成在执行所述第一程序期间执行与和所述第一硬件配置不同的第二硬件配置(118)的虚拟化关联的第二程序(114),并且其中,所述第二程序包括调度器(116),所述调度器(116)能执行以基于所述一个或更多个参数将所述第一程序的线程分配给所述多个处理器核心。

2.根据条款1所述的装置,所述装置还包括虚拟化系统(102),所述虚拟化系统(102)包括所述存储器和所述多个处理器核心,其中,所述多个处理器核心被配置成在所述第一程序的测试过程(190)期间执行所述第二程序。

3.根据条款1或2中的任一项所述的装置,其中,所述存储器和所述多个处理器核心被包括在嵌入式系统中(532),并且其中,所述多个处理器核心被配置成在所述嵌入式系统的操作期间执行所述第二程序。

4.根据条款3所述的装置,所述装置还包括运载工具(500),所述运载工具(500)包括所述嵌入式系统。

5.根据条款1至4中的任一项所述的装置,其中,所述存储器和所述多个处理器核心被包括在模拟器或训练器中。

6.根据条款1至5中的任一项所述的装置,其中,所述调度器还能执行以基于所述一个或更多个参数(136)将所述第一程序的特定线程(110或112)从由所述多个处理器核心中的第一处理器核心(122)执行重新调度到由所述多个处理器核心中的第二处理器核心(124)执行。

7.根据条款6所述的装置,其中,与由所述第一处理器核心执行所述特定线程相比,针对执行来重新调度所述特定线程的执行增加了所述第二硬件配置的虚拟化的保真度。

8.根据条款6所述的装置,其中,所述一个或更多个参数指示用于重新调度所述第一程序的特定线程(110或112)的执行的特定条件(138)或约束(140),并且其中,所述特定条件对应于在执行所述第一程序期间确定所述第一处理器核心的第一使用(126)满足使用阈值(142)、确定所述第二处理器核心的第二使用(128)不满足使用阈值,或确定二者。

9.根据条款6所述的装置,其中,所述一个或更多个参数规定执行阈值(144),所述执行阈值(144)用于将所述第一程序的特定线程(110或112)的执行从所述多个处理器核心中的第一处理器核心(122)重新调度到所述多个处理器核心中的第二处理器核心(124),所述执行阈值对应于所述特定线程被执行的时间量。

10.根据条款1至9中的任一项所述的装置,所述装置还包括用户接口(132),所述用户接口(132)被配置成经由用户输入(134)接收所述一个或更多个参数。

11.根据条款1至10中的任一项所述的装置,其中,所述存储器还被配置成存储机器学习程序(160),所述机器学习程序(160)能执行以确定所述一个或更多个参数。

12.一种方法(300),所述方法(300)包括如下步骤:

接收(302)与将第一程序(106)的线程(108)分配给多个处理器核心(120)中的具有第一硬件配置(130)的一个或更多个处理器核心关联的一个或更多个参数(136);以及

在执行所述第一程序期间,执行(304)与和所述第一硬件配置的不同第二硬件配置(118)的虚拟化关联的第二程序(114),其中,执行所述第二程序包括通过所述第二程序的调度器(116)基于所述一个或更多个参数将所述第一程序的线程分配到所述多个处理器核心。

13.根据条款12所述的方法,其中,经由用户输入(134)接收所述一个或更多个参数。

14.根据条款12至13中的任一项所述的方法,其中,结合机器学习程序(160)的执行来确定所述一个或更多个参数。

15.根据条款12至14中的任一项所述的方法,所述方法还包括如下步骤:基于所述一个或更多个参数,并由所述调度器将所述第一程序的特定线程(110或112)从由所述多个处理器核心中的第一处理器核心(122)执行重新调度到由所述多个处理器核心中的第二处理器核心(124)执行。

16.根据条款12至15中的任一项所述的方法,其中,所述一个或更多个参数规定将重新调度所述第一程序的频繁执行的线程(110或112),以使得能够执行所述第一程序的较不频繁执行的线程(112或110)。

17.根据条款12至16中的任一项所述的方法,其中,所述一个或更多个参数规定执行阈值(144),所述执行阈值(144)用于将所述第一程序的线程(110或112)的执行从所述多个处理器核心中的第一处理器核心(122)重新调度到所述多个处理器核心中的第二处理器核心(124)。

18.根据条款12至17中的任一项所述的方法,其中,所述一个或更多个参数规定所述第一程序的适合被所述调度器重新调度的特定线程(110或112)、所述多个处理器核心中的适合执行所述特定线程的特定处理器核心(122或124)或者所述多个处理器核心中的用于执行所述特定线程的优选处理器核心(122或124)。

19.一种计算机可读介质(104),所述计算机可读介质(104)存储能由处理器(120)执行以发起、执行或控制操作的指令(436),所述操作包括:

接收(302)与将第一程序(106)的线程(108)分配给多个处理器核心(120)中的具有第一硬件配置(130)的一个或更多个处理器核心关联的一个或更多个参数(136);以及

在执行所述第一程序期间,执行(304)与和所述第一硬件配置不同的第二硬件配置(118)的虚拟化关联的第二程序(114),其中,执行所述第二程序包括通过所述第二程序的调度器(116)基于所述一个或更多个参数将所述第一程序的线程分配到所述多个处理器核心。

20.根据条款19所述的计算机可读介质,其中,所述操作还包括:基于所述一个或更多个参数,并由所述调度器将所述第一程序的特定线程(110或112)从由所述多个处理器核心中的第一处理器核心(122)执行重新调度到由所述多个处理器核心中的第二处理器核心(124)执行。

此外,尽管本文已经例示和描述了具体示例,但是应当理解,被设计成实现相同或相似结果的任何后续布置可以代替示出的具体实现方式。本公开旨在覆盖各种实现方式的任何和所有随后的调整或变化。通过阅读说明书,以上实现方式的组合以及本文中未具体描述的其它实现方式对于本领域技术人员将是显而易见的。

提交本公开的摘要的前提是,摘要将不被用来解释或限制权利要求的范围或含义。另外,在前述具体实施方式中,为了使本公开合理化,将多个特征组合在一起或在单个实现方式中进行描述。以上描述的示例例示但不限制本公开。还应该理解,根据本公开的原理,许多修改和变化是可能的。如以下权利要求所反映的,所要求保护的主题可以针对少于所公开的示例中的任何示例的所有特征。因此,本公开的范围由所附权利要求及其等同物限定。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1