背景技术:
旁路攻击涉及通过观察敏感代码的影响来获得关于敏感代码的信息。
许多不同类型的旁路攻击已被发现针对敏感代码发生。用于减轻这种攻击的先前尝试经常是针对特定类型的旁路攻击定制的,这使得难以给予全面的保护。
下文所描述的实施例不限于解决已知旁路攻击保护机制的任何或者全部缺点的实现。
技术实现要素:
下文展现本公开的简化摘要以便为读者提供基础的理解。本摘要不旨在识别所要求权利主题的关键特性或者基本特性,也不旨在被用于限制所要求权利主题的范围。它的唯一目的是以简化形式展现本文所公开概念的选集,以作为之后展现的更详细描述的前奏。
在各种示例中,存在经由通信网络与至少一个其他计算设备通信的计算设备。该计算设备具有存储器和中央处理单元,该中央处理单元具有包括存储器的可信区域的可信执行环境。计算设备具有操作系统,该操作系统被配置为在存储器的虚拟地址空间和至少一个其他计算设备的存储器之间创建存储器映射,并且将存储器映射的细节提供给可信执行环境。可信执行环境被配置为执行能够直接使用由操作系统提供的存储器映射与其他计算设备进行通信的应用。
通过参考以下被考虑关于附图的详细描述,许多伴随的特性将更容易被理解
附图说明
根据附图阅读以下详细描述将更好地理解本描述
图1是具有可信执行环境的计算设备104的示意图;
图1a是具有可信执行环境的另一计算设备的示意图;
图2是图1的计算设备的虚拟存储器地址空间的示意图;
图3是一种方法的流程图,该方法使在可信执行环境中执行的软件能够与远程计算设备进行通信并且具有一些情况下的旁路保护;
图4是图3的流程图并且具有在可信执行环境内通过原子化的执行的旁路保护;
图5是实现原子性方法的流程图;
图6是实现原子性的另一种方法的流程图;
图7图示了基于计算的示例性设备,该设备中具有旁路保护的可信执行环境的实施例被实现。
相似的参考数字在附图中被用于指定相似的部分。
具体实施方式
下文所提供的关于附图的详细描述旨在作为本示例的描述,并且并非旨在代表本示例被构建或者被利用的唯一形式。本描述阐述了示例的功能以及针对构建和操作示例的操作序列。然而,相同或等价的功能和序列也可以通过不同的示例被实现。
本发明人认识到多核处理器中的旁路攻击涉及到恶意代码,该恶意代码能够观察敏感代码对多核处理器的共享资源的影响。多核处理器被广泛使用于数据中心和其他部署,并且数据中心和其他部署经常存在多个数据中心租户或者其他用户。使用多核处理器的一个核心的恶意租户能够通过观察对共享资源的影响来获得关于在其他核心之一上执行的敏感代码信息。在安全性重要的情况下(诸如在敏感代码被执行的情况下),旁路攻击是重要的问题。
多核处理器中的旁路攻击的示例现在被描述。假设在多核处理器中存在双核,并且该双核被隔离在不同的权限域中,以使得在两个核心的第一核心上执行的代码与在两个核心上的第二核心上执行的代码相隔离。假设第一核心执行敏感代码并且第二核心执行恶意代码。多核处理器的共享资源由第一和第二核心共享并且在第一和第二代码执行期间被使用。恶意代码能够观察第一代码对共享资源的影响并且能够使用该观测结果推断第一代码。通过这种方式,恶意代码能够得到关于敏感代码的知识。
本发明人认识到,可信执行环境通常被设计以用于防止常规攻击,诸如操作系统被危害的情况,并且通常不能防止旁路攻击。本发明人也认识到在多核处理器上使用可信执行环境会产生缺点,因为这使得难以高效地使在可信执行环境内执行的代码以有效的方式与可信执行环境之外的实体进行通信的。本发明人认识到该问题,并且开发了使能在多核处理器的可信执行环境中执行的代码和一个或多个远程计算设备之间的有效通信的方法。在各种实施例中,在可信执行环境中执行的过程经常能够直接存储器访问一个或多个远程计算设备。为实现直接存储器访问,可信执行环境使用托管可信执行环境的计算设备的虚拟存储器和远程计算设备的存储器之间的映射。映射由托管可信执行环境的计算设备的操作系统建立。多核处理器的操作系统没有必要被信任,因为如果存储器映射未完成,或者被完成的不正确,则存在使用常规拒绝服务攻击检测机制检测到的拒绝服务攻击,并且常规算法被用于防止计算设备与一些或者所有其他设备的通信。
所公开的可信执行环境和操作系统以非常规的方式操作,以实现旁路攻击的减轻,同时保持效率。
可信执行环境和操作系统通过在可信执行环境中执行应用,提高了底层计算设备的功能,所述应用能够直接使用由操作系统提供的存储器映射与其他计算设备进行通信。
图1图示了在中央处理单元106上具有可信执行环境108的计算设备104。可信执行环境使用硬件或者以任何其他适合的方式被实现。在该示例中,4个处理核心110在可信执行环境内被示出,但是使用4个处理核心并非是必须的。存在多个处理核心。计算设备104具有由处理核心110所共享的共享资源112。所共享的资源包括存储器和/或寄存器。共享资源112的示例的非穷尽清单是:微架构缓冲(诸如用于分支目标预测的缓冲)、寄存器、缓存、存储器、永久存储。
中央处理单元106与存储器114相连接,并且也被连接到网卡116。为了图1清晰,计算设备104的其他部件被省略,并且之后在本文中参考图8给出合适的计算设备104的详细示例。网卡116能够经由任何合适的类型的通信网络100使计算设备与一个或多个其他远程计算设备102进行通信。远程计算设备102是与计算设备104分离的任何计算设备,以使得在一些示例中使远程计算设备102物理接近计算设备104。存储器114是任何合适的片外存储器,诸如动态随机存取存储器(dram)、非易失性存储器或者其他存储器。
使用加密以使得存储器114上的代码和数据被加密。图1中的z字形线标示加密屏障,其示意性地表示了以下事实:从除cpu之外的任何其他实体的角度来看,存储器被加密。硬件和/或软件加密根据任何广为人知的加密技术被使用。
计算设备104的操作系统(未在图1中示出)创建了从计算设备104的虚拟存储器到一个或多个远程计算设备102的存储器的存储器映射。可信执行环境被配置以使得在其内执行的代码使用由存储系统创建的存储器映射,以便直接访问一个或多个远程计算设备的存储器(即不经由操作系统)。在一些示例中,内核旁路(kernel-bypass)方法或者用户空间设备驱动过程被用于实现直接存储器访问。
在可信执行环境108中运行的核心将不发动旁路攻击(side-channelattack),因为在该核心上的代码由控制可信执行环境的一方控制。这是因为由于仅可信代码被放置在可信执行环境内,恶意代码出现的风险显著降低。下文参考图3描述了在减轻旁路攻击的同时提高关于远程计算设备的直接存储器访问的性能的方法。
本发明人认识到即使在可信执行环境被使用的情况下,如现在参考图1a所解释的,在恶意代码执行在可信执行环境外的核心上的情况下,也存在旁路攻击的可能性。除了在中央处理单元106上增加核心118之外,图1a与图1相同,但核心118在可信执行环境108之外。假设恶意方具有在中央处理单元106的核心118上执行的代码,其中核心118在可信执行环境之外。敏感代码在可信执行环境内的一个或多个核心110上执行。中央处理单元106的共享资源112由在可信执行环境之外的核心118上执行的代码以及由在可信执行环境内执行的敏感代码使用。恶意方能够设计在核心118上执行的代码,以使其观察敏感代码对共享资源112的影响,并且因此能够推断敏感代码。用于设计在核心118上执行的代码的各种不同方式能够使不同类型的旁路攻击成为可能。
恶意代码可以以各种方式在可信执行环境之外的核心上开始执行。在一个示例中,事件在网络接口卡处发生(诸如通信到达),网络接口卡将发送中断到计算设备104的操作系统上。然后计算设备分配计算设备的核心之一以用于在可信执行环境之外执行过程,以便处理到来的通信。现在在可信执行环境之外执行的过程是潜在恶意的,并且其能够观察共享资源112并且推断在可信执行环境中执行的敏感代码。
在各种示例中,在图1a的场景中,通过使可信执行环境内的代码的执行原子化(atomic)而防止旁路攻击,即,可信执行环境内的代码的执行仅在敏感代码知道存在对所有活跃(active)核心的控制时发生。计算设备的共享资源中的任何敏感数据在进入原子化执行和退出原子化执行时被冲刷(flush),以加强安全性。原子性(atomicity)在处于可信执行环境内的多个核心之上。如参考图4至图6所描述的,实现原子性的各种不同方式是可能的。
在本文所描述的实施例中,操作系统被配置为创建如参考图2所说明的存储器映射。可信执行环境108是常规过程的一个或多个部分(这里的过程是软件执行过程)。每个常规过程具有其由计算设备104的操作系统所制作的自身的地址空间。图2是过程200(诸如被执行的文字处理应用)的地址空间的示意图。地址空间包括映射到物理存储器的多个页面的虚拟存储器。在图2中,存在虚拟存储器的页面的两列202和204。虚拟存储器的页面中的一些但不是全部页面在可信执行环境内并且是可信的,这些页面在图2中被图示为交叉阴影线区域208并且是可信地址空间。虚拟存储器的其他页面在可信执行环境之外并且是不可信的;这些页面在图2中被图示为区域206、210、212,并且是不可信地址空间。如由图2的页面210中的箭头指示的,在可信执行环境中执行的过程的部分能够读写不可信的页面。但在可信执行环境之外运行的任何事物都不能看到可信执行环境的存储器区域208的内部。
操作系统被配置为将物理设备,诸如网络接口卡、显卡、或者远程直接存储器访问(rdma)接口映射为不可信地址空间212的部分。以这种方式,存在到如图1中所图示的远程计算设备的存储器映射。这样的有益效果是可信执行环境能够直接与远程计算设备通信而无需要求操作系统代表其处理通信。结果是,当可信执行环境与远程计算设备进行通信时,使可信执行环境中的执行能够以高效的方式进行。
图3是由在图1的可信执行环境108中执行的敏感代码所执行的示例过程的流程图。在该示例中,旁路保护(side-channelprotection)在某些程度上被提供,但并不完全保证能提供。由于运行在核心中的代码最初是在可信执行环境内,并且因此在操作可信执行环境的一方的控制之下,因此代码被给予了一些旁路保护。然而,保护没有被完全地保证,因为恶意方能够在可信执行环境之外的核心中引入过程。
敏感代码标识300其期望对远程实体进行读取或者写入,并且其请求302操作系统创建针对远程实体的存储器映射。敏感代码针对其期望读取或者写入的每个远程实体执行该操作。操作系统将消息发送回敏感代码以指示存储器映射已被完成并且携带有关于存储器映射的细节。敏感信息检查304已从操作系统接收到针对其所需要的全部存储器映射的确认。如果没有接收到,则返回302并且向操作系统发出请求。如果已接收到确认,则其继续在可信执行环境中执行306敏感应用。如果执行步骤需要在检查308处使用远程实体,敏感代码从可信执行环境内直接向移除实体发送直接存储器存取请求。由于操作系统已经建立了适当的存储器映射,因此可以这样执行。
直接存储器访问请求是使用由操作系统创建的存储器映射和使用任何合适的直接存储器访问过程(诸如内核旁路过程或者用户空间设备驱动过程)完成的。在该情况下,用户空间设备驱动过程被使用,然后,在操作系统建立了主机计算设备与远程计算设备之间的连接之后,用户空间驱动在可信执行环境(tee)中被执行,以在主机计算设备和远程计算设备之间进行通信。在一些示例中,用户空间驱动将虚拟存储器映射到远程计算设备。
由于可信执行环境被使用,图3的方法给出了针对旁路攻击的一些保护。由于在可信执行环境中执行的代码能够使直接存储器访问远程计算设备,因此该方法也显著提高了性能。
图4是由在图1a的可信执行环境108中执行的敏感代码所执行的示例过程的流程图。在该情况下,实现原子性以便防止来自在可信执行环境之外的核心上执行的不可信代码的旁路攻击。操作300、302和304和针对图3的上述描述相同。一旦存储器映射已经由操作系统创建,敏感代码在可信执行环境内跨可信执行环境内的一个或多个核心原子化地执行自身400。原子性意味着在敏感代码执行的同时,其他过程被阻止或者不能够在计算设备上执行。如果敏感代码想要在检查308处读取或者写入远程实体之一,则它在操作310处将直接存储器访问请求发送给远程实体。操作310与针对图3的上述描述相同。
为了实现敏感代码的执行的原子性,图5的方法被使用。图5的方法由包括敏感代码的应用和/或由可信执行环境执行。
参考图5,敏感代码a决定执行500是否安全。在一个示例中,当敏感代码具有足够的证据证明所有处理器的核心与其自身在相同的tee内执行时,敏感代码决定执行是安全的。该证据可以直接来自处理器并且在一个非限制性示例中,在可信执行环境包括包围区(enclave)的情况下,该证据可能来自包围区。
一旦敏感代码a已经决定执行是安全的,则它可选地触发缓存和微架构组件的冲刷501,以便防止异步旁路攻击。它在可信执行环境中执行502敏感代码a,并且监测可信执行环境之外的线程或者预期线程执行的证据。在一个示例中,当它从可信执行环境的处理器(诸如图1的cpu106)接收到“退出”消息时,其获得tee外部的线程的证据。在另一示例中,它等待接收来自操作系统的消息,该消息指示核心之一即将离开可信执行环境。上述方法的各种混合或者组合是可能的。
当证据被接收时,敏感代码a停止执行506并且可选地触发缓存和微架构组件的冲刷508,以便防止异步旁路攻击。
敏感代码可选地终止510使用由处理器(诸如图1的cpu106)提供的功能在tee外部执行的任何线程。使用这种方式,任何潜在恶意的线程都无法执行并且在tee内执行的线程不会受到旁路攻击。另一选择是检测线程何时离开tee,并且一旦该情况发生,使所有线程离开tee以使针对任何线程不存在旁路保护。该过程返回操作500并重复。
在一个实施例中,对是可信执行环境108的硬件包围区进行硬件修改。硬件修改配置包围区以向敏感代码发送“进入”消息,指示敏感代码控制所有活跃核心,并且发送“退出”消息,指示敏感代码即将失去对所有活跃核心的控制。敏感代码针对进入和退出的消息进行监测。当它接收到进入消息时,它开始执行。当它接收到退出消息时它停止执行。它可选地触发对存储在共享存储器中的任何数据的冲刷,该数据可能会向恶意方泄露信息,或者可能损害敏感代码的执行。冲刷在进入信息被接收到并且在执行开始前立刻被触发,并且当退出消息被接收到时再次被触发。
在另一个实施例中。如现在参考图6所描述的,敏感代码知道可信执行环境的期望的核心的数目。敏感代码在可信执行环境中执行。它存储可信执行环境中所使用的期望的核心的数目的知识。预期的核心的数目少于或者等于计算设备的实际的核心的数目。知识由运营商预先配置。敏感代码监测来自于操作系统的“进入tee”消息。它一直等到接收的“进入tee”的消息的数目和期望的核心的数目相同。然后它使用期望数目的核心在可信执行环境中执行604敏感代码a。它监测606来自tee的可信处理器的消息,该消息指示线程之一将要退出可信执行环境。当它在操作606处接收“将要退出”的消息时,它停止608敏感代码的执行。它可选地触发如上文所述的缓存和微架构组件的冲刷610,并且返回操作600以重复该方法。
图7图示了各种基于计算的设备700的示例性组件,其被实现为任何形式的计算和/或电子设备,并且其中在一些示例中实现了旁路保护的实施例。
基于计算的设备700包括具有可信执行环境和多个处理器的中央处理单元704,该处理器是用于处理计算机可执行指令以控制设备操作的任何合适类型的处理器。可信执行环境包括硬件,诸如包围区。平台软件包括操作系统706或者在基于计算的设备处被提供的任何其他合适的平台软件。虚拟存储器映射708被存储在存储器702中,并且包括从可信执行环境的不安全存储器到经由通信接口714与基于计算的设备700通信的一个或多个远程实体的存储器映射。数据存储710持有可信执行环境的期望的核心的数目的知识。加密协议712被用于对数据利用完整性进行加密。
使用由基于计算的设备700可访问的任何计算机可读介质提供计算机可执行指令。计算机可读介质包括,例如计算机存储介质(诸如存储器702)和通信介质。计算机存储介质(诸如存储器702)包括以任何方法或技术实现的用于存储信息(诸如计算机可读指令、数据结构、程序模块等)的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、电子可擦除可编程只读存储器(eeprom)、闪存或者其他存储技术、光盘只读存储器(cd-rom)、数字通用盘或者其他光存储、盒式磁带、磁带、磁盘存储或者其他磁存储设备、或者被用于存储信息以用于通过计算机访问的任何其他非传输介质。相反,通信介质将可读指令、数据结构、程序模块等体现在调制数据信号(例如载波)或者其他传输机制中。如本文所定义的,计算机存储介质不包括通信介质。因此,计算机存储介质不应被解释为传播信号本身。虽然计算机存储介质(存储器702)被示出在基于计算的设备700内,但是应当理解的是在一些示例中,该存储是分布式或者远程定位的,并且经由网络或者其他通信链路(例如,在某些情况下使用作为网卡的通信接口714)被访问。
基于计算的设备700也包括被布置为向显示设备输出显示信息的输入/输出接口716,该显示设备可以从基于计算的设备分离或者集成进基于计算的设备。显示信息可以提供图形用户界面。输入/输出接口716还被布置为接收和处理来自一个或多个设备的输入,诸如用户输入设备(例如,鼠标、键盘、照相机、麦克风或者其他传感器)。在一些示例中,用户输入设备检测语音输入、用户姿势或者其他用户动作,并且提供自然的用户接口(nui)。该用户输入可以被用于选择变化表示、查看集群、选择建议的内容项目版本。在一个实施例中,如果显示设备是触感显示设备,则显示设备也作为用户输入设备。在一些示例中,输入/输出接口716向除显示设备之外的设备输出数据。
备选地或者除了本文描述的其他示例,示例包括以下项的任何组合:
条款a。经由通信网络与至少一个其他计算设备通信的计算设备,该计算设备包括:
存储器;
中央处理单元,具有包括存储器的可信区域的可信执行环境;
操作系统,被配置为在存储器的虚拟地址空间与至少一个其他计算设备的存储器之间创建存储器映射,并且将存储器映射的细节提供给可信执行环境。
可信执行环境,被配置为执行能够直接使用由操作系统提供的存储器映射与其他计算设备进行通信的应用。与必须经由操作系统与其他计算设备通信的应用相比较,这提供了性能提高的有益效果。
条款b。根据条款a的计算设备,其中操作系统被配置为在存储器的不可信区域的虚拟地址空间与至少一个其他计算设备的存储器之间创建存储器映射。使用该方法,存储器映射以高效并且有效的方式形成。如果操作系统是恶意的并且没有创建存储器映射,或者创建的存储器映射不正确,则使用任何众所周知的加密协议处理该错误,因为该效果与拒绝服务攻击中的效果相同。
条款c。根据条款a或者条款b的计算设备,其中操作系统被配置为经由网络接口卡、显卡中的一项或多项来创建存储器映射。使用该方法,显卡是计算设备和一个或多个远程计算设备之间的中介。用户空间设备驱动可以如本文之前所说明的那样被使用。
条款d。根据任何前述条款的计算设备,其中操作系统被配置为创建存储器映射以供内核旁路过程或者用户空间设备驱动过程使用。内核旁路过程和用户空间设备驱动过程两者都是众所周知的过程,并且使用它们的任何一种过程都能够提供有效且高效的直接存储器访问方法。
条款e。根据任何前述条款的计算设备,其中操作系统被配置为当操作系统从可信执行环境中的应用接收到创建存储器映射的请求时,创建存储器映射。因此,存储器映射是按照需求被创建的。
条款f。根据任何前述条款的计算设备,其中计算设备具有多个处理核心,并且其中在可信执行环境中执行的应用被配置为,仅当其具有其控制了所有活跃的处理核心的证据时才继续执行敏感代码。由于恶意代码无法与敏感代码同时在处理核心中的一个或多个处理核心上执行,因此旁路攻击被阻止。
条款g。根据条款f的计算设备,其中可信执行环境包括硬件包围区,硬件包围区被配置为当所有的处理核心处于可信执行环境内时,向应用发送消息。使用以此方式被配置的硬件包围区,可以提供高效、可靠和安全的方法来使应用具有其控制所有活跃的处理核心的证据。
条款h。根据条款f或者条款g的计算设备,其中可信执行环境包括硬件包围区,硬件包围区被配置为当处理核心中的一个处理核心即将离开可信执行环境时,向应用发送消息。使用以此方式被配置的硬件包围区,可以提供了高效、可靠和安全的方法来使应用具有其控制所有活跃的处理核心的证据。
条款i。根据条款f的计算设备,其中在可信执行环境中执行的应用知道在敏感代码的执行期间,期望在可信执行环境内的处理核心的期望的数目。
条款j。根据条款i的计算设备,其中应用被配置为将处理核心的期望的数目与从可信执行环境接收的信息进行比较,并且当处理核心的期望的数目与从可信执行环境接收的信息匹配时,执行敏感代码。这提供了高效、可靠和安全的方法来使应用具有其控制所有活跃的处理核心的证据。
条款k。根据条款f或者条款i或者条款j的计算设备,其中在可信执行环境中执行的应用被配置为当应用从可信执行环境接收到指示核心之一即将离开可信执行环境的消息时,停止执行敏感代码。这提供了高效、可靠和安全的方法来使应用具有其控制所有活跃的处理核心的证据。
条款l。根据任何条款f至条款k的计算设备,其中在可信执行环境中执行的应用被配置为终止在可信执行环境之外的核心上执行的任何过程。这是一种可靠的方法来使应用具有其控制所有活跃的处理核心的证据。
条款m。根据任何条款f至条款l的计算设备,其中在可信执行环境中执行的应用被配置为在开始敏感代码的执行之前,从计算设备的微架构组件冲刷敏感数据。这帮助减轻了异步旁路攻击。
条款n。根据任何条款f至条款m的计算设备,其中在可信执行环境中执行的应用被配置为当其停止执行敏感代码时,从计算设备的微架构组件冲刷敏感数据。这帮助减轻了异步旁路攻击。该敏感数据是敏感代码执行的直接或间接的结果。例如,关于特定执行分支被采用(taken)的信息是可能对攻击者有用的敏感代码的执行的间接结果。
条款p。一种计算设备执行的方法,该计算设备经由通信网络和至少一个计算设备进行通信,方法包括:
使用操作系统以在计算设备的存储器的虚拟地址空间与至少一个其他计算设备的存储器之间创建存储器映射;以及
将存储器映射的细节提供给计算设备的中央处理单元处的可信执行环境,可信执行环境包括存储器的可信区域;
在可信执行环境中执行应用,该应用直接使用由操作系统提供的存储器映射与其他计算设备进行通信。
条款q。根据条款p的方法包括,仅当可信执行环境或者应用控制所有活跃的处理核心时,才继续执行应用的敏感代码。由于恶意代码无法与敏感代码同时执行,因此旁路攻击被阻止。
条款r。根据条款p或者条款q的方法包括,当所有处理核心在可信执行环境内或者当处理核心之一将离开可信执行环境时,使用可信执行环境的硬件包围区向应用发送消息。
条款s。根据条款p或者条款q的方法包括,使用在应用的敏感代码的执行期间、期望在可信执行环境内的期望的处理核心的数目的知识。
条款t。一种计算设备的操作系统,该计算设备经由通信网络与至少一个其他计算设备通信,该操作系统包括:
被配置为在计算设备的存储器的虚拟地址空间与至少一个其他计算设备的存储器之间创建存储器映射的软件;
被配置为将存储器映射的细节提供给计算设备的可信执行环境,以使在可信执行环境中执行的应用能够直接使用存储器映射与其他计算设备进行通信的软件。与可信执行环境中的应用必须经由操作系统与其他计算设备通信相比较时,该操作系统提供了性能的有益效果。
术语‘计算机(computer)’或者‘基于计算的设备(computing-baseddevice)’在本文中被使用指具有处理能力以使其执行指令的任何设备。本领域的技术人员将认识到,该处理能力被结合到许多不同的设备并且因此该术语‘计算机’和‘基于计算的设备’各自包括个人计算机(pc)、服务器、移动电话(包括智能电话)、平板计算机、机顶盒、媒体播放器、游戏主机、个人数字助理、可穿戴计算机和许多其他设备。
在一些示例中,本文所描述的方法由机器可读形式的软件在有形存储中介上执行,例如,以包括计算机程序代码部件的计算机程序的形式执行,当该程序在计算机上运行时,该计算机程序代码部件适配于执行本文所描述的一个或多个方法的全部操作,并且计算机程序可以体现在计算机可读介质上。该软件适合于在并行处理器或串行处理器上执行,以使该方法操作可以以任何合适的顺序或者同时被执行。
这认可了软件是有价值的、可分别交易的商品。它旨在涵盖运行在或者控制“哑巴”或者标准硬件上的软件,以执行所期望的功能。它还旨在涵盖“描述”或者定义硬件配置的软件,诸如hdl(硬件描述语言)软件,其被用于设计硅片或者用于配置通用可编程芯片以执行所期望的功能。
本领域的技术人员将认识到,被利用以存储程序指令的存储设备是跨网络可选分布式的。例如,远程计算机能够存储被描述为软件的过程的示例。本地或者终端计算机能够访问远程计算机并且下载软件的部分或者全部以运行该软件。备选地,本地计算机可以按照需求下载软件段,或者在本地终端和一些在远程计算机(或者计算机网络)处执行一些软件指令。本领域技术人员将也认识到,通过利用本领域技术人员所知的常规技术,全部或者部分软件指令可以由专用电路(诸如数字信号处理器(dsp),可编程逻辑阵列等)执行。
正如对技术人员而言明显的,本文所提供的任何范围或者设备值可以在不失所求效果的情况下被扩展或者改变。
虽然主题已按照特定于结构特征和/或方法动作的语言被描述。但应当理解的是,所附权利要求中所定义的主题不必然限定于上文描述的特定特征或者动作。可替代地,上文所描述的特定特征和动作作为实现权利要求的示例形式被公开。
将被理解的是,上文所描述的有益效果和优势可以与一个实施例有关或者可以与若干个实施例有关。实施例不限于解决任何或全部所陈述的问题的实施例,或者具有任何或全部所陈述优点的实施例。还将理解的是,提及‘一个(an)’项目指一个或多个该项目。
本文所描述的方法的操作可以以任何合适的顺序,或者在适当的情况下同时被执行。附加地,个别区块可以在不脱离本文所述主题的范围的情况下从任何的方法中删除。上文所描述的任何示例的方面可以和所描述的其他示例的任何方面相结合以在不失所求效果的情况下形成进一步的示例。
术语‘包括(comprising)’被用于本文以示意包括所识别的方法块或者元素,但该块或元素不包括排他性清单,并且方法或者装置可能包含附加块或元素。
将被理解的是,上述描述仅作为示例给出,并且可以由本领域技术人员进行各种修改。上述说明书、示例以及数据提供了示例性实施例的结果和使用的完整描述。尽管各种实施例已经按照一定程度的特殊性,或者参考一个或多个单个的实施例在上文被描述,但本领域的技术人员可以在不脱离被所描述范围的情况下对所公开的实施例做出许多变更。