用于系统适配的动态程序评估的制作方法_2

文档序号:9355159阅读:来源:国知局
0031]可预先确定和/或动态决定用于针对处理任务而测试运行可执行程序的测试案例。在一个实施例中,动态程序评估可针对任务来选择之前执行的一个或多个实际案例(或输入)以测试运行可执行程序的不同变型。在一个实施例中,动态程序评估可将最终的实际输入案例(例如图形帧)用于处理任务(例如帧解码任务)而非使用与可执行程序相关联的预先确定的测试案例(例如测试图形帧)。确定将那些测试案例用于测试运行可执行程序可取决于用户配置、运行时硬件/软件环境、预先确定的测试案例的可用性或其他适用的运行时因素。
[0032]在一个实施例中,可执行程序彼此之间可具有依赖关系。例如,如果第一可执行程序包括第二可执行程序(例如调用第二可执行程序),则第一可执行程序可取决于第二可执行程序。动态程序评估可用自下而上的方式经由依赖关系来测试运行可执行程序,从而选择相关可执行程序的组合或配置。选择可基于总体成本或经由依赖关系从较低级别向上从多个可执行程序聚集的度量。
[0033]在一个实施例中,动态可执行程序适配可经由例如用户界面基于可选配置选择可执行程序。这些配置可基于某些条件指定要评估哪些库、何时执行动态评估和/或使用那个可执行程序,而无需为评估而执行测试。用户配置可包括待监视的事件列表、要为动态可执行程序适配考虑或排除哪个可执行程序。
[0034]例如,用户可在系统附接了特定显卡时为图形处理任务指定一个可执行程序。这些配置可允许用户拾取要包括在评估运行中和/或采用的某些可执行程序而无需运行评估测试。在动态适配期间,用户输入可对哪些可执行程序可供选择或不可选择进行约束。
[0035]在一个实施例中,可基于系统中是否集成了显卡或者是否在系统外部耦接了显卡(或其他适用硬件设备)来选择用于执行OpenGU开放式图形库)任务的可执行程序。由于执行OpenGL相关任务(或其他适用任务)的复杂性,运行相同例程(或可执行程序)的功耗可基于输入参数和/或硬件平台而有所不同。
[0036]在系统初始化期间,动态程序评估可确定系统是否包括内置显卡(或其他适用的硬件部件)或外置显卡。在系统初始化期间,动态程序评估可使用默认测试案例(例如与可执行程序相关联)来测试运行可执行程序以用于选择可执行程序,从而例如配置OpenGL库或安装在系统中的其他适用系统软件。动态程序评估可使用实际自定义数据来测试运行可执行程序以进一步微调选择。
[0037]在一个实施例中,可动态地链接多个部件或集成在一起以进行API调用从而执行任务,诸如帧解码或内存分配(例如mallocO)。执行任务的相关部件可存储在寄存器、表格或其他适用的数据结构中。可单独评估(或执行)每个部件(可执行程序)。选择可基于评估结果中的每个评估结果的组合。例如,组合可对应于使用测试案例在测试运行期间为执行任务所消耗的总能源或花费的总时间。
[0038]在一些实施例中,用于动态程序评估的可执行程序评估可取决于设备中可用的处理资源。评估可包括权衡,诸如通过所需的可执行程序在将来执行中节省的资源量对执行评估所需的资源量。在一个实施例中,确定是否和/或何时执行动态和渐进动态适配可取决于待评估的可执行程序(或例程)的数目、测试运行每个可执行程序所需的资源量、预期执行可执行程序的相关任务的频率或次数,和/或其他适用度量。
[0039]在一个实施例中,动态程序评估可在系统变化(例如经由配置、引导、驱动器加载、网络连接或其他适用环境变化等)期间发生,使得响应于可执行程序评估期间的用户命令存在轻微延迟。随后,根据针对适配采用的标准,已适配的系统可用改善的模式(例如更优的功率使用、更有效的执行、更佳的内存利用率等)执行数据处理任务。
[0040]可基于计算环境的变化引发的事件动态地触发可执行程序评估或选择。例如,计算环境可包括硬件环境,该环境可在以下情况下发生变化:外部USB设备连接/断开连接系统的USB(通用串行总线)端口时;以太网缆线插入/拔出系统的以太网连接器时;外部电源插入/拔下时或电源切换至另一电源(内部或外部)时等等。作为另外一种选择或除此之外,加载/卸载软件驱动器(例如在存储器和非易失性存储设备之间)可能表示在计算环境中发生了变化。
[0041]在一个实施例中,可经由用户界面配置或计划哪些事件可触发动态可执行程序选择或重新链接。在某些实施例中,可监视系统的处理负载以确定何时执行动态可执行程序选择或重新链接,使得对于系统的性能影响可最小化。例如,当系统被检测为空闲(或者处于空闲状态,在该状态下处理负载低于预先确定或动态地确定的某个阈值)时,可开始或恢复评估过程。当例如请求或开始更高优先级的任务时,可(暂时)停止评估过程。
[0042]作为另外一种选择或任选地,可执行程序选择或重新链接可在系统初始化期间和/或当驱动器或其他软件模块被加载时(例如从盘或其他存储装置加载到存储器以用于执行)触发。在一些实施例中,动态程序评估中的可执行程序重新链接可将指针更新为选择的可执行程序以实现数据处理任务。当在将来调用针对任务的相应API时,可跟踪更新的指针来激活或执行所选择的可执行程序来执行任务。
[0043]在一个实施例中,动态程序评估可包括经由设备中的微控制器收集传感器数据。微控制器可包括功率传感器(或其他适用硬件传感器),可经由软件来控制该功率传感器。硬件传感器可为足够复杂的处理任务(例如执行时间为毫秒而非纳秒的任务)提供可测量的数据。所感测的可测量数据可包括电流、电压、经过时间、存在或缺少一个或多个外围设备等,或其他适用的感测数据。系统内核(核心系统软件)能够与微控制器通信以与任务计划调度(何时开始、停止、恢复等)配合,从而同时监视多个任务和/或硬件传感器。从微控制器转储的传感器数据可经由内核准确地归因于对应任务和/或传感器。例如,可同时为并行执行的不同任务(例如基于电池功率使用或其他感测数据)测量处理器(例如CPU、GPU等)以及外围设备(例如USB设备、网卡或其他设备)。
[0044]在一个实施例中,可从用户程序或直接从用户界面发送指令来开始/停止功率感测。可测量每个例程的功耗来选择最具能量效率的一个历程用于将来执行任务。这些例程中的每个例程可适用于某些类型的设备(或机器),例如基于硬件平台(例如处理器类型)或软件平台(例如操作系统)。设备可自动识别哪些例程兼容并选择当前运行环境下最有效率的一个例程。
[0045]在一些实施例中,传感器系统控制器可提供接口以在不同时间从设备的不同部分收集传感器数据(例如CPU功率使用、电池功率使用等)来实现系统级或应用级控制。接口可允许收集传感器数据以开始、停止、重置、断开或放回(例如用于累积数据)。因此,数据处理任务可在不同时间间隔处分割为多段,而无需占用持续时间间隔用于传感器数据收集。
[0046]动态程序评估可利用传感器系统控制器以允许操作系统(或其他系统部件)确定在当前运行环境下哪些算法或相应可执行程序最适合为任务执行。决策可基于某些系统测量标准,诸如最小化功率使用、最大化处理性能或最大化处理效率等。
[0047]图1是示出用于动态适配的系统部件的一个实施例的框图。系统100可包括操作环境101,诸如移动电话设备中的iPhone操作系统或台式计算机的Macintosh OS X操作系统。在一个实施例中,可用包括可执行程序(或例程、程序)的库109配置操作环境101,以执行系统或应用级任务。库109可被例如动态地配置或从耦接到系统101的存储设备(硬盘、闪存或其他非易失性存储设备)加载到操作环境101中。一个或多个用户级和/或系统级应用115可与库109链接以调用库109内的库例程以执行所需的任务,例如经由API调用。
[0048]在一个实施例中,库109可包括具有可执行程序变型的可执行程序储存库111,每个可执行程序已经过编译以执行共同任务。例如,不同的可执行程序(或程序例程)可由同一作者使用不同的首选项、性能优先级(速度、内存使用率、功率使用)、开发工具约束、硬件配置、系统平台和/或其他适用条件来编写。可执行每个可执行程序以在系统100的不同运行时状态执行具有不同的性能和/或资源利用率影响的相同任务。库109可存储指向实际可执行程序的指针,该可执行程序可从耦接的存储设备动态载入。
[0049]运行时状态可包括时间点上系统100的硬件和/或软件环境。可基于网络连接、电源、外围设备或其他物理部件/配置确定硬件环境。软件环境可取决于正在执行的任务、当前活动的可执行程序(程序)、支持的驱动器、系统配置、和/或其他适用程序运行时状
??τ O
[0050]在一个实施例中,适配模块107可动态地配置库109以规定或指定应当执行哪些可执行程序储存库111,例如当通过应用115请求时。适配模块107可包括链接模块119,该模块能够执行动态链接/重新链接(不用重新编译),以将指针或程序地址切换至指定的可执行程序以执行任务。应用115可能不了解在进行请求时在库109中实际调用了哪个可执行程序(例如通过API调用隔离)。储存库111中的可用的可执行程序的一部分(或一个)可经由来自应用115的API调用来加载(或链接)。
[0051]适配模块107可包括动态评估模块113以在库109中的可执行程序上执行评估测试运行。在某些实施例中,储存库111中的可执行程序可与测试案例相关联以进行评估测试运行。测试案例可以与可执行程序封装在一起。例如,用于编译自源代码以执行任务(例如帧解码或其他适用功能、例程等)的可执行程序的原始源代码(或其他适用测试案例生成机制)的作者可为可执行程序提供对应的测试案例(例如作为
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1