用于在计算设备中提供独立于操作系统的错误控制的系统和方法与流程

文档序号:14649842发布日期:2018-06-08 21:33阅读:213来源:国知局
用于在计算设备中提供独立于操作系统的错误控制的系统和方法与流程

便携式计算设备(例如,蜂窝电话、智能电话、平板型计算机、便携式数字助理(PDA)和便携式游戏控制台)和其它计算设备(诸如服务器)持续提供一批不断扩展的特征和服务,并且向用户提供前所未有的性能等级。为了跟上这些服务增强和针对增加的性能等级的需求,这些计算设备(包括便携式计算设备(PCD)和服务器)变得更强大且更复杂。现在,这些计算设备通常包括片上系统(SoC),SoC包括嵌入在单个基底上的一个或多个芯片组件(例如,一个或多个中央处理单元(CPU)、微处理器、数字信号处理器等)。SoC可以经由一个或数据通信总线耦合到位于SoC上和SoC外的一个或多个存储器设备,诸如动态随机存取存储器(DRAM)。

SoC的处理器中的一个或多个处理器上的应用或进程的操作可能导致产生各种错误,诸如一个或多个存储器处的单比特和/或双比特错误。在典型的计算设备中,这种错误导致产生针对执行操作系统的CPU的中断,从而导致性能降级和/或针对CPU操作的应用的延时。然而,不是每个生成中断的错误都要求操作系统采取立即动作进行纠正。计算设备(尤其是具有基于ARM的处理器的计算设备)不具有在要求立即动作的错误和不要求立即动作的错误之间进行区分、或者在操作系统不进行动作的情况下单独地处理不同类型的错误的能力。

因此,存在针对提供用于在这些计算设备中提供独立于操作系统的错误控制的系统和方法的需求,并且特别地,存在针对提供无论可以由计算设备的一个或多个处理器实现的操作系统如何都可以起作用的系统和方法的需求。



技术实现要素:

公开了用于在计算设备中提供独立于操作系统的错误控制的系统、方法和计算机程序。一个实施例是一种方法,包括:利用可靠性、可用性和可服务性(RAS)控制器来定义用于可纠正错误的第一存储器区域和用于不可纠正错误的第二存储器区域;在所述RAS控制器处接收错误指示;利用所述RAS控制器来确定所接收的错误指示是否是可纠正错误;以及响应于所述确定,如果所接收的错误指示是可纠正错误,则利用所述RAS控制器将关于所述可纠正错误的信息写入所述第一存储器区域,以及如果所接收的错误指示是不可纠正错误,则利用所述RAS控制器将关于所述不可纠正错误的信息写入所述第二存储器区域,并且从所述RAS控制器向在处理器上执行的操作系统发送中断请求。

另一个实施例是一种系统,所述系统包括片上系统(SoC),所述SoC包括执行操作系统的处理设备和耦合到所述处理设备的可靠性、可用性和可服务性(RAS)控制器。所述RAS控制器被配置为:定义用于可纠正错误的第一存储器区域和用于不可纠正错误的第二存储器区域。所述RAS控制器接收错误指示并且确定所述错误指示是否是针对可纠正错误的。如果所接收的错误指示是可纠正错误,则所述RAS控制器将关于所述可纠正错误的信息写入所述第一存储器区域。如果所接收的错误指示是不可纠正错误,则所述RAS控制器将关于所述不可纠正错误的信息写入所述第二存储器区域并且向所述操作系统发送中断请求。

附图说明

在附图中,除非另外指示,否则遍及各个视图,相似的附图标记指代相似的部分。对于具有诸如“102A”或“102B”的字母字符标记的附图标记,字母字符标记可以区分出现在同一附图中的两个相似的部分或元素。当旨在使附图标记涵盖在所有附图中具有相同附图标记的所有部分时,可以省略附图标记的字母字符标记。

图1是用于在计算设备中提供独立于操作系统的错误控制的系统的实施例的框图。

图2A是示出了图1的系统的部分的示例性方面和互操作的框图。

图2B是示出了图1的系统的部分的额外的示例性方面和互操作的框图。

图3是可以并入用于提供独立于操作系统的错误控制的系统和方法的计算设备的示例性实施例的框图。

图4A是示出了用于在计算设备中提供独立于操作系统的错误控制的方法的示例性实施例的流程图。

图4B是示出了用于在计算设备中提供独立于操作系统的错误控制的示例性方法的额外方面的流程图。

图4C是示出了用于在计算设备中提供独立于操作系统的错误控制的示例性方法的额外方面的流程图。

图5是可以并入用于提供独立于操作系统的错误控制的系统和方法的另一个计算设备的示例性实施例的框图。

图6是示出了用于在图5的计算设备中提供独立于操作系统的错误控制的方法的示例性实施例的流程图。

具体实施方式

本文使用的词语“示例性”意味着“作为示例、实例或说明”。本文中描述为“示例性”的任何方面不必被解释为优选于其它方面或者比其它方面有优势。

在本描述中,术语“应用”或“图像”还可以包括具有可执行内容(诸如:对象代码、脚本、字节代码、标记语言文件以及补丁)的文件。另外,本文中所引用的“应用”还可以包括本质上不可执行的文件(诸如可能需要被打开的文档或需要被访问的其它数据文件)。

术语“内容”还可以包括具有可执行内容(诸如:对象代码、脚本、字节代码、标记语言文件以及补丁)的文件。另外,本文中所引用的“内容”还可以包括本质上不可执行的文件(诸如可能需要被打开的文档或需要被访问的其它数据文件)。

如在本描述中使用的,术语“组件”、“数据库”、“模块”、“系统”等等旨在指代计算机相关的实体,要么是硬件、固件、硬件和软件的组合、软件,要么是执行中的软件。例如,组件可以是,但不限于是:在处理器上运行的过程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。通过说明的方式,在计算设备运行上的应用和计算设备两者可以是组件。一个或多个组件可以存在于过程和/或执行的线程中,并且组件可以位于一个计算机中和/或分布在两个或更多计算机之间。此外,这些组件可以从具有存储在其上的各种数据结构的各种计算机可读介质中执行。组件可以诸如根据具有一个或多个数据分组(例如,来自与本地系统、分布式系统中的另一个组件进行交互,和/或跨越诸如互联网的网络通过信号的方式与其它系统进行交互的一个组件的数据)的信号通过本地和/或远程过程进行通信。

在本描述中,术语“通信设备”、“无线设备”、“无线电话”、“无线通信设备”和“无线手机”可互换地使用。随着第三代(“3G”)无线技术和第四代(“4G”)的到来,更大的带宽可用性实现了具有更加多样的无线能力的更便携的计算设备。因此,便携式计算设备可以包括蜂窝电话、寻呼机、PDA、智能电话、导航设备、或者具有无线连接或链路的手持计算机。

图1示出了用于在这些计算设备中提供独立于操作系统的错误控制的系统100的实施例。系统100可以实现在任何计算设备中,包括个人计算机、工作站、服务器、便携式计算设备(PCD)(诸如电话、便携式数字助理(PDA)、便携式游戏控制台、膝上型计算机或平板型计算机)。图1的系统100包括片上系统(SoC)102,SoC 102包括经由SoC总线115互连的各种片上或管芯上组件,SoC总线115可以是允许SoC 102上的通信的任何类型的互连。如将理解的,系统100的其它配置是可能的,包括不包括SoC 102的系统。

SoC 102可以具有任何期望的架构。在一个实施例中,SoC 102可以是基于ARM的架构或非基于ARM的架构(如果期望的话),并且包括一个或多个处理设备,诸如数字信号处理器(DSP)、中央处理单元(CPU)或任何其它类型的处理器。在图1中示出的实施例中,SoC 102包括两个CPU 106、110和可靠性、可用性和可服务性控制器(RAS控制器)130,在一些实施例中,RAS控制器130可以被实现成与CPU 106、110分离的处理器。在其它实施例中,RAS控制器130可以是CPU 106或CPU 110中的一个CPU的部件、部分或组件。

图1的CPU 110执行系统100的操作系统(O/S)120,O/S 120可以是高级操作系统(HLOS)。CPU 110还可以包括驱动器、硬件接口、和/或有必要在O/S 120上运行的其它组件。O/S 120可以包括内核调度器122,其用于调度要由CPU 110或CPU 106中的一个或多个CPU执行的任务或线程,诸如用于执行CPU 110和/或CPU 106上的应用或进程。O/S 120还可以包括中断处理器124,以用于处理O/S 120在操作期间接收的中断请求。

CPU 110还被示为与L2高速缓存112相通信,L2高速缓存112可以是CPU 110的专用高速缓存存储器或者可以是与其它处理器(诸如CPU 106)共享的高速缓存存储器,并且在一些实施例中,可以是不同级别的高速缓存,诸如L3高速缓存。在其它实施例中,L2高速缓存112可以替代地是CPU 100的一部分,而不是SoC 102上的分离的组件。CPU 100还可以与其它存储器设备(诸如被示为位于SoC 102上的存储器114、以及被示为位于片外或管芯外(即,在SoC 102外部)的DDR存储器108)相通信。将认识到的是,存储器114可以包括任何期望类型的存储器,诸如举例来说,非易失性存储器闪存、安全数字(SD)卡、固态驱动(SSD)或其它类型的存储器。同样,DDR存储器108可以是任何双数据速率存储器(或这种DDR存储器的任何世代,例如DDR2、DDR3等)并且可以是同步动态随机存取存储器(DDR SDRAM)或其它类型的随机存取存储器(诸如SRAM)。

存储器114、DDR存储器108和/或L2高速缓存112中的一个或多个可以由耦合到SoC总线115的存储器控制器104来控制,从而允许CPU 106、110读取和/或写入存储器114、DDR存储器108和/或L2高速缓存112中的一个或多个。纠错能力可以由存储器114、DDR存储器108和/或L2高速缓存112中的一个或多个来实现。这种纠错可以包括纠错码(ECC)能力。例如,可以将数据连同通过ECC或另一种算法(诸如在存储器控制器104中或在存储器本身中的算法)生成/校验的纠错比特一起存储在存储器114、DDR存储器108和/或L2高速缓存112中或者从存储器114、DDR存储器108和/或L2高速缓存112取回,以检测存储器114、DDR存储器108和/或L2高速缓存112中的读取错误或写入错误。

这种错误检测、SoC总线115上的任何总线错误、和/或任何期望的错误源(诸如一些实施例中的外围错误)的输出连接到或导向到RAS控制器130。RAS控制器130可以是固件或硬件组件,并且在一些实施例中,可以是与CPU 110和/或CPU 106分离的处理设备。在其它实施例中,(未示出的)RAS控制器130可以替代地是CPU 110的部分或组件,诸如CPU 110内的固件。

RAS控制器130可以按期望包括各种组件,诸如错误翻译逻辑单元132。RAS控制器130可以使用错误翻译逻辑单元132或其它逻辑单元来确定接收到的错误的类型。在一个实施例中,确定错误的类型包括确定错误是硬件组件(诸如存储器114)自己能够纠正的可纠正错误还是需要O/S 120即刻关注的不可纠正错误。RAS控制器130还可以使用错误翻译逻辑单元132来将接收到的错误翻译成标准化或通用格式,诸如通用硬件错误源(GHES),以允许RAS控制器130利用制造商或终端用户可以在CPU 110上实现的任何O/S 120(例如,Linux版本、Windows等)来操作。在其它实施例中,确定错误的类型并且翻译成类似GHES的标准化格式可以由在RAS控制器130内或者与RAS控制器130相通信的分离的逻辑单元来执行。在其它实施例中,存储器或其它组件可能已经提供了类似GHES的标准化格式的错误消息,使得不需要RAS控制器130进行额外的翻译。

系统100的SoC 102还可以包括用于存储错误的存储器,诸如存储器140,在图1的实施例中,存储器140是GHES存储器140。GHES存储器140可以包括用于存储不同类型的错误的不同区域。如图1所示,这些区域可以包括GHES中断存储器区域142和GHES轮询存储器区域144。在图1中示出的实施例中,中断存储器区域142是系统控制中断(SCI)存储器区域。在其它实施例中,中断的类型可以是本地中断、外部中断、GPIO中断、非可屏蔽中断、或可以被重新导向RAS控制器130的任何其它类型的异步异常。如下文论述的,RAS控制器130使得关于不可纠正错误的信息被存储在GHES SCI存储器区域142中,而关于可纠正错误的信息被存储在GHES轮询存储器区域144中。在一些实施例中,两个存储器区域142、144可以是单个存储器设备的区域,而在其它实施例中,两个存储器区域142、144可以是分离的存储器设备。

回到RAS控制器130,在图1中示出的实施例还包括用于可纠正错误的缓冲器(CE缓冲器134)和用于不可纠正错误的缓冲器(UE缓冲器136)。错误缓冲器134、136可以是任何期望类型的缓冲器存储器或高速缓存,并且可以是RAS控制器130的部分,诸如在RAS控制器130的内部SRAM缓冲器中。在其它实施例中,错误缓冲器134、136可以从RAS控制器130远程地定位。如下文论述的,在RAS控制器130在GHES SCI存储器区域142或GHES轮询存储器区域144中的一个或多个存储器区域中写入或存储错误之后,RAS控制器130不能够将在RAS控制器130处接收的后续错误写入GHES存储器区域142、144,直到O/S 120已经处理了错误为止。

如下文论述的,在O/S 120已经处理了存储在GHES存储器区域142、144中的一个或多个存储器区域中的错误之后,O/S 120可以向RAS控制器130发送或提供确认。在这样的实施例中,一旦RAS控制器130已经将错误写入GHES存储器区域142、144中的一个或多个存储器区域,RAS控制器130接收到的后续错误通知就被存储在适当的缓冲器(CE缓冲器134或UE缓冲器136)中,直到RAS控制器130从O/S 120接收到关于先前错误已经被处理的确认。以此方式,错误缓冲器134、136允许RAS控制器130避免在O/S 120有机会处理错误之前重写GHES存储器区域142、144中存储的错误信息。另外地,如下文论述的,RAS控制器130可以使用错误缓冲器134、136来检测和/或解决非响应O/S 120状况或状态。

RAS控制器130可以具有与在图1中示出的那些组件相比更多或更少的组件。例如,虽然被示为图1中的GHES存储器140的部分,但是GHES SCI存储器区域142和GHES轮询存储器区域144中的一个或两者可以位于其它地方,并且在一些实施例中,可以是RAS控制器130的部分。在其它实施例中,存储器区域142、144可以不是专用于错误的存储器设备的部分,但是可以替代地是通用存储器(诸如举例来说,存储器114)中的区域。在其它实施例中,存储器区域142、144可以位于SoC 102外部(即,管芯外)。类似地,在一些实施例中,RAS控制器130可以位于SoC 102外部(即,管芯外)和/或单个RAS控制器130可以执行针对多个不同SoC 102的错误处理(见图5)。

同样如图1所示,RAS控制器130经由中断请求(IRQ)总线117来与CPU 110和/或O/S 120相通信。如下文论述的,不是各种存储器错误、总线错误、以及其它期望错误产生了被发送给O/S 120的中断请求,而是首先在RAS控制器130处接收到错误,随后,RAS控制器130可以适时地生成中断请求并且将中断请求发送给O/S 120(诸如经由IRQ总线117)。

在其它实施例中,RAS控制器130可以包括图1中示出的那些组件以外的各种其它组件和/或按期望执行其它功能。例如,本领域技术人员理解的是,在类似存储器设备的各个硬件中的可纠正错误的数量、速率和/或定时可以指示组件降级、过度的操作温度等。因此,RAS控制器130还可以包含用于提供可靠性监测(诸如用于监测SoC 102和/或SoC 102的组件的健康)的逻辑单元,例如,使用可纠正错误的速率或可纠正错误的增长速率来预测组件失败和/或提供关于组件健康的报警。

图2A-2B是示出了图1的系统100的部分的示例性方面和互操作的框图。如图2A所示,RAS控制器130定义将在其中存储关于不可纠正错误的信息的GHES SCI存储器区域142。RAS控制器130还定义将在其中存储关于可纠正错误的信息的GHES轮询区域144。在图1中示出的系统100的操作之前,RAS控制器130向O/S 120传送这些存储器区域142、144的位置,使得O/S 120将知道去哪发现针对可纠正错误和不可纠正错误两者的错误信息。

在一个实施例中,RAS控制器130可以直接向O/S 120传送存储器区域142、144的位置,诸如当O/S 120启动时。对于这样的实施例,RAS控制器130将告诉O/S 120定期地轮询GHES轮询存储器区域144,以便处理将会使得信息存储在GHES轮询存储器区域144中的不太关键的可纠正错误。可以以周期性间隔(其可以是固定间隔或可变间隔)、当CPU 110在某个工作负载门限以下操作时(即,当CPU 110不“繁忙”时)和/或这些情况的组合时来进行这样的轮询。

在一些实施例中,RAS控制器130可以将存储器区域142、144的位置写入O/S 120在启动期间访问和/或被加载到O/S 120的存储器地址、启动文件、位置或表(诸如固件表202)。以此方式,当O/S 120启动时,两个不同的存储器区域142、144的位置可以被自动地加载到O/S 120。在这样的实施例中,RAS控制器130将直接地或者通过存储器地址、启动文件或固件表202中放置的指令来告诉O/S 120定期地轮询GHES轮询存储器区域144,以便处理可以在操作期间被放置在GHES轮询存储器区域144中的不太关键的可纠正错误。再次,可以指示O/S 120以固定或可变的周期性间隔、当CPU 110不繁忙时和/或这些情况的组合来轮询。以这种方式来使用RAS控制器130允许针对广泛的多种多样的操作系统(诸如Linux的版本、Windows等)的改进的错误控制,而不需要针对每种不同类型的操作系统创建定制的错误处理系统或代码。

如图2B所示,在系统200的操作期间,RAS控制器130(而不是O/S 120)接收错误中断,诸如来自存储器114、DDR存储器108、L2高速缓存112、SoC总线115上的总线错误、或者甚至一些实施例中的软件错误。例如,如果处理器或应用尝试访问已经被掉电的存储器的存储器位置,则错误可以被生成并且被发送到RAS控制器130,即使存储器本身没有错误。如上文论述的,额外的错误(诸如外围错误、光盘错误、PCI错误等)可以按期望被连接或转发到RAS控制器130。一旦接收到错误,RAS控制器130就使用逻辑单元(诸如错误翻译逻辑单元132)来确定错误是可纠正错误还是不可纠正错误和/或将错误信息翻译成标准化格式(诸如GHES)。在各个实施例中,RAS控制器130可以使用相同的逻辑单元或使用不同的逻辑单元,将对错误类型的翻译和确定两者作为单个动作的一部分或者作为分离的动作或步骤来执行。

一个示例是其中在RAS控制器130处接收的错误是来自存储器设备(诸如图1的存储器114)的实施例。可纠正错误可以是存储器114中的、存储器114或存储器控制器108能够诸如通过使用如上文论述的ECC来纠正的单比特错误。对于这样的可纠正错误,存储器114或存储器控制器108照例纠正错误并且发送中断请求或其它错误通知。然而,中断请求被RAS控制器130接收,而不是像在典型系统中会发生的那样被O/S 120接收。继续该示例,不可纠正错误可以是存储器114和/或存储器控制器108甚至利用ECC也不能够纠正的双比特错误(或另一种类型的不可纠正错误)。对于这样的不可纠正错误,中断请求照例被发送,但是被RAS控制器130接收,而不是被O/S 120接收。如将理解的,其它类型的可纠正和/或不可纠正错误是可能的。

在上文示例中,一旦在RAS控制器130处接收到错误通知/中断请求,RAS控制器130就将错误翻译成通用格式(诸如GHES)并且确定错误通知是针对不可纠正错误还是可纠正错误的。如果RAS控制器130接收的错误通知是针对可纠正错误的,则RAS控制器130将关于错误的信息写入GHES轮询存储器区域144,并且不针对该特定的错误通知采取进一步的动作(除了针对向RAS控制器130发送错误的组件的接收的可能确认)。根据RAS控制器130先前发送的和/或在启动时被加载到O/S 120的指令,O/S 120将在将来的时间处轮询GHES轮询存储器区域144,并且在该时间处采取必要动作(若存在)来解决与GHES轮询存储器区域144中存储的信息相关联的可纠正错误。

例如,在图2B中示出的实施例中,O/S 120可以从GHES轮询存储器区域144中读取错误信息(读取错误块167)。随后,O/S 120可以采取任何必要动作(若存在)来处理错误。一旦完成处理错误,随后,O/S 120可以从GHES轮询存储器区域144中删除关于错误的信息(清除块169)。随后,O/S 120可以向RAS控制器130发送关于错误已经被处理的确认(错误确认119),使得RAS控制器130可以向GHES轮询存储器区域144的现已清除(now-cleared)的存储器块写入下一错误。

可以用任何期望的方式来完成图2B的错误确认119。例如,在一些实施例中,错误确认119可以是直接从O/S 120向RAS控制器130发送的中断。在其它实施例中,错误确认119可以包括O/S 120向注册表(registry)进行写入。在这样的实施例中,注册表是硬连线的,以向RAS控制器130发送中断,或者RAS控制器130可以针对来自O/S 120的错误确认119来轮询注册表。

继续该示例,在RAS控制器130在从O/S 120接收到错误确认119之前接收到额外的可纠正错误的第二(或第三)错误中断/通知的情况下,RAS控制器130将在可纠正错误(CE)缓冲器134中存储关于第二(或第三)可纠正错误的信息。在接收错误确认119之前使用CE缓冲器134允许RAS控制器130避免在O/S 120有机会处理错误之前重写GHES轮询存储器区域144中的错误信息,并且还避免可以由独立于O/S 120进行操作的RAS控制器130造成的其它潜在的定时问题。

注意,在一些实施例中,错误确认119将包含或指向标识哪个错误已经被O/S 120处理的信息。在上文示例中,这可以包括向RAS控制器130通知可纠正错误已经被O/S 120处理和/或GHES轮询存储器区域144的存储器块在解决可纠正错误之后已经被O/S 120清除或检测到的信息。

在图2B中示出的实施例中,错误确认119不包含这样的标识信息,因此在接收到错误确认119之后,RAS控制器130将确定哪个错误已经被O/S 120处理。图2B的RAS控制器130通过如下操作来确定哪个错误已经被处理:对GHES存储器140的存储器块进行检查(检查存储器块159),来查看GHES SCI存储器区域142和/或GHES轮询存储器区域144中的哪一个已经被O/S120清除。

结束可纠正错误的上文示例,在确定哪个错误已经被O/S 120处理之后(根据错误确认119中的信息或者通过检查存储器块159),RAS控制器130可以将任何后续接收的可纠正错误写入GHES轮询存储器区域144。如果存在在CE缓冲器134中排队的错误信息,则写入GHES轮询存储器区域144可以包括将队列中的下一错误信息从CE缓冲器134写入GHES轮询存储器区域144。

在图2B和图1的实施例中,CE缓冲器134是固定大小并且大小可以被设置为存储关于在系统200(和/或图1的系统100)的正常操作期间期望或估计的多个可纠正错误的信息。如果可纠正错误继续在CE缓冲器134中存储或排队,而不具有来自O/S 120的错误确认119,则CE缓冲器134将溢出。CE缓冲器134的这种溢出可以被RAS控制器130用作关于O/S 120或系统200不在“正常地”操作和/或O/S 120已经变为停止响应的信息。随后,响应于CE缓冲器溢出,RAS控制器130可以按期望采取适当动作。例如,如果CE缓冲器134溢出,则RAS控制器130可以生成被写入GHES SCI存储器区域142的不可纠正错误,并且RAS控制器130可以生成针对O/S 120的中断117。

转向不可纠正错误,系统200的操作与上文针对RAS控制器130接收(或生成)的可纠正错误论述的操作类似。因此,如果图2B中的RAS控制器130接收(或生成)的错误通知是不可纠正错误,则RAS控制器130将关于错误的信息写入GHES SCI存储器区域142并且还向O/S 120发送中断请求(诸如通过IRQ总线117)。在接收到中断请求时,O/S 120可以立即地查看GHES SCI存储器区域142中的关于错误的信息,并且采取必要动作(若存在)来解决不可纠正错误。例如,在一个实施例中,O/S 120的中断处理器124可以确定用于不可纠正错误的数据区域被毁坏,并且停止或重启在不使用被毁坏的数据区域的情况下尝试访问被毁坏的数据区域的进程或应用。在其它示例中,O/S 120可以确定不可纠正错误在关键区域(诸如内核)中并且可以重启整个系统。

在图2B中示出的实施例中,O/S 120可以从GHES SCI存储器区域142中读取错误信息(读取错误块167)。随后,O/S 120可以采取任何必要动作(若存在)来处理不可纠正错误。一旦完成处理错误,随后,O/S 120可以从GHES SCI存储器区域142中删除关于错误的信息(清除块169)。随后,O/S 120可以向RAS控制器130发送关于错误已经被处理的确认(错误确认119),使得RAS控制器130可以向GHES SCI存储器区域142的现已清除的存储器块写入下一不可纠正错误(若存在)。可以用任何期望的方式来完成图2B的错误确认119,如上文关于可纠正错误论述的。

与上文针对可纠正错误的论述类似,在RAS控制器130在从O/S 120接收到错误确认119之前接收到额外的不可纠正错误的第二(或第三)错误中断/通知的情况下,RAS控制器130将在不可纠正错误(CE)缓冲器136中存储关于第二(或第三)不可纠正错误的信息。在接收错误确认119之前使用CE缓冲器136再次允许RAS控制器130避免在O/S 120有机会处理错误之前重写GHES SCI存储器区域142中的错误信息,并且还避免可以由独立于O/S 120进行操作的RAS控制器130造成的其它潜在的定时问题。

如所论述的,在一些实施例中,错误确认119将包含或指向标识哪个错误已经被O/S 120处理的信息。在其它实施例中,错误确认119将不包含这样的信息,并且RAS控制器130可以诸如通过如下操作来确定哪个错误已经被处理:对GHES存储器区域142、144进行检查(检查存储器块159),来查看作为O/S 120处理错误的结果,哪些存储器块已经被删除。

结束不可纠正错误的示例,在确定哪个错误已经被O/S 120处理之后(根据错误确认119中的信息或者通过检查存储器块159),RAS控制器130可以将任何后续接收的不可纠正错误写入GHES SCI存储器区域142。如果存在在CE错误缓冲器136中排队的错误信息,则写入GHES SCI存储器区域142可以包括将队列中的下一错误信息从CE缓冲器136写入GHES SCI存储器区域142。另外地,针对信息向GHES SCI存储器区域142的这一新的写入,可以设置新的定时器138/可以重新设置定时器138。

在当向GHES SCI存储器区域142写入不可纠正错误时设置定时器138的实施例中,定时器138可以用于确定O/S 120是停止响应的或者已经变成停止响应。例如,如果RAS控制器130在定时器138到期之前没有接收到错误确认119,则RAS控制器130可以确定O/S 120是停止响应的。随后,响应于定时器138的到期,RAS控制器130可以采取适当动作。在一个实施例中,如果定时器138到期,则RAS控制器130可以使得一个或多个组件重新启动或重启。在不同的实施例中,重启可以包括少于整个系统200(或图1的系统100)的热重启或者整个系统100/200的冷重启。

在一些实施例中,RAS控制器130可以根据向GHES SCI存储器区域写入的不可纠正错误信息(例如,不可纠正错误是否来自可以利用热重启来重启的系统100/200的组件,诸如PCI错误)来确定重启的类型。在其它实施例中,当定时器138到期时,RAS控制器130可以在执行系统100/200的冷重启之前,首先执行热重启以将系统100/200带到稳定或已知状态并且保存错误信息。在这样的实施例中,保存错误信息可以包括:RAS控制器130将关于与到期的定时器138相关联的不可纠正错误的信息存储在O/S 120在重启之后可用或访问的持久存储器中。

如图2A-2B所示,系统100/200仅允许当存在不可纠正错误时(诸如在来自存储器设备的错误的情况下的数据或存储器区域毁坏)对O/S 120的中断。系统100/200防止针对更频繁且不太重要的可纠正错误对O/S 120的中断。以此方式,系统100/200减少了由针对可纠正错误的中断造成的性能打击和/或CPU 110、106的延时。对于基于ARM的处理器或SoC 102以及不提供对可纠正错误和不可纠正错误的分开处理的其它架构来说,这种分叉的错误处理是尤其有用的。另外地,在其中RAS控制器130被实现成与执行O/S 120和/或各种应用、线程或进程的CPU 110、106分离的处理器的实施例中,系统100可以提供更大的益处。

如上文提及的,系统100可以被并入到任何期望的计算系统或设备中。图3示出了包括SoC 102的示例性便携式计算设备(PCD)300。在该实施例中,SoC 102包括多内核处理器(CPU)302。多内核CPU 302可以包括第零内核310、第一内核312以及第N内核314。这些内核中的一个内核可以包括例如图形处理单元(GPU),而其它内核中的一个或多个内核包括通用CPU(诸如图1的操作O/S 120的CPU 110)。

显示器控制器328和触摸屏控制器330可以耦合到CPU 302。继而,在SoC 102外部的触摸屏显示器306可以耦合到显示器控制器328和触摸屏控制器330。

图3还示出了视频编码器334(例如,逐行倒相制式(PAL)编码器、顺序存储彩色制式(SECAM)编码器、或国家电视系统委员会(NTSC)编码器)耦合到多内核CPU 302。此外,视频放大器336耦合到视频编码器334和触摸屏显示器306。此外,视频端口338耦合到视频放大器336。如图13所示,通用串行总线(USB)控制器340耦合到多内核CPU 302。此外,USB端口342耦合到USB控制器340。存储器114和用户身份模块(SIM)卡346也可以耦合到多内核CPU 302。

此外,如图3所示,数字相机348可以耦合到多内核CPU 302。在示例性方面中,数字相机348是电荷耦合器件(CCD)相机或互补金属氧化物半导体(CMOS)相机。

如图3进一步所示的,立体声音频编解码器(CODEC)350可以耦合到多内核CPU 302。此外,音频放大器352可以耦合到立体声音频CODEC 350。在示例性方面中,第一立体声扬声器354和第二立体声扬声器356耦合到音频放大器352。图3示出麦克风放大器358也可以耦合到立体声音频CODEC 350。此外,麦克风360可以耦合到麦克风放大器358。在特定方面中,调频(FM)无线电调谐器362可以耦合到立体声音频CODEC 350。此外,FM天线364耦合到FM无线电调谐器362。此外,立体声耳机366可以耦合到立体声音频CODEC 350。

图3还示出了可以耦合到多内核CPU 302的射频(RF)收发机368。RF开关370可以耦合到RF收发机368和RF天线372。小键盘375可以耦合到多内核CPU 802。此外,具有麦克风的单声道耳麦376可以耦合到多内核CPU 302。此外,振动器设备378可以耦合到多内核CPU 302。

图3还示出电源380可以耦合到SoC 302。在特定方面中,电源380是向PCD 300的需要电力的各个组件提供电力的直流(DC)电源。此外,在特定方面中,电源是可再充电DC电池或者从连接到交流(AC)电源的AC到DC变压器得到的DC电源。

图3还指示PCD 300还可以包括网卡388,其可以用于接入数据网络,例如,局域网、个域网或任何其它网络。网卡388可以是蓝牙网卡、WiFi网卡、个域网(PAN)卡、个域网超低功率技术(PeANUT)网卡、电视机/电缆/卫星调谐器、或本领域公知的任何其它网卡。此外,网卡388可以集成在芯片中,即,网卡388可以是芯片中的完全解决方案,并且可以不是单独的网卡388。

参照图3,应当认识到的是,存储器104、触摸屏显示器306、视频端口338、USB端口342、相机348、第一立体声扬声器354、第二立体声扬声器356、麦克风360、FM天线364、立体声耳机366、RF开关370、RF天线372、小键盘375、单声道耳麦376、振动器378以及电源380可以在片上系统102外部。

图4A-4C是示出了用于在计算设备中提供独立于操作系统的错误控制的方法的示例性实施例的方面的流程图。在一个实施例中,在图4A-4C中示出的示例性方法400可以由图1的系统100来实现。开始于图4A,在框402处,定义用于可纠正错误的GHES存储器区域。该存储器区域将用于操作以保持关于可纠正错误的信息。如上文论述的,GHES存储器区域可以是由RAS控制器130定义的GHES轮询存储器区域144。在一个实施例中,在框402中定义存储器区域可以包括:将存储器区域的位置写入位置或表,诸如在图2A中示出的固件表202。

在框404处,定义用于不可纠正错误的GHES存储器区域。该存储器区域将用于操作以保持关于不可纠正错误的信息。如上文论述的,GHES存储器区域可以是由RAS控制器130定义的GHES SCI存储器区域142。在一个实施例中,在框404中定义存储器区域可以包括:将存储器区域的位置写入位置或表,诸如在图2A中示出的固件表202。

在框406处,向操作系统传送存储器区域。如上文针对图2A论述的,在图1中示出的系统100的操作之前,RAS控制器130向O/S 120传送这些存储器区域的位置。在一个实施例中,RAS控制器130可以直接向O/S 120传送存储器区域位置,诸如当O/S 120启动时。在其它实施例中,RAS控制器130可以将存储器区域的位置和通知/中断类型(例如,SCI中断、GPIO等,如上文论述的)写入O/S 120在启动期间读取的位置或表,诸如固件表202。以这种方式,当O/S 120启动时,两个不同的存储器区域的位置将作为启动的一部分被加载到O/S 120。

在框408处,向操作系统传送用于轮询可纠正错误存储器区域的指令。在一个实施例中,可以将轮询指令直接地传送给操作系统。例如,RAS控制器130可以将指令直接地传送给O/S 120,以定期地轮询GHES轮询存储器区域144,如上文针对图2A论述的。在其它实施例中,这种轮询指令可以替代地或者还被放置在操作系统诸如在启动期间访问的位置。例如,RAS控制器130将轮询指令写入O/S 120在启动期间读取的位置或表,诸如固件表202,如针对图2A论述的。轮询指令可以包括关于何时执行这种轮询的指令,诸如举例来说,以周期性间隔(固定间隔或可变间隔),当CPU 110在某个工作负载门限以下操作时(即,当CPU 110不“繁忙”时)和/或时间间隔和工作负载门限两者的组合。

在图4A中已经将用于轮询可纠正错误的存储器区域和指令加载到操作系统之后,在操作系统的操作期间,方法400可以在图4B中继续。在框410处,可以诸如在图1和2A的RAS控制器130处接收错误。在图4B的方法400中,在框410中,该错误不是直接由O/S 120接收的,而是替代地由另一个组件(诸如RAS控制器130)接收的。该错误可以是来自存储器(诸如图1的存储器114、DDR存储器108或L2高速缓存112)的错误。在框410中接收的错误还可以或替代地是总线错误,诸如图1的SoC总线115上的错误。另外地,在框410中接收的错误还可以或替代地是软件错误,诸如对访问已经被掉电的存储器中的地址的尝试。在其它实施例中,可以在框410中接收额外的错误。例如,如上文论述的,对于图2B,各种类型的错误(诸如外围错误、光盘错误、PCI错误等)可以按期望连接到或被转发到RAS控制器130。

在框412处,可以将关于错误的信息翻译成多种多样的不同操作系统可以理解的标准或通用格式。例如,如上文针对图2B论述的,RAS控制器130可以使用逻辑单元(诸如错误翻译逻辑单元132)来将错误信息翻译成标准化格式(诸如GHES)。在框414处,做出关于所接收的错误是否是可纠正错误的确定。在一个实施例中,图1或图2B的RAS控制器130可以使用逻辑单元(在框412中使用的相同逻辑单元或不同逻辑单元)来做出框414的确定。如将认识到的,在一些实施例中,框412和414可以不是分离的框或步骤,但是可以替代地是单个翻译/确定框或步骤。

如果在框414中确定所接收的错误是可纠正错误,则在框416中,将关于错误的信息写入用于可纠正错误的GHES存储器区域,并且方法400继续进行到图4C。例如,如上文论述的,如果图1或2B的RAS控制器130接收到的错误是可纠正错误,则RAS控制器130将错误信息写入GHES轮询存储器区域144,并且不针对该特定的错误通知采取进一步的动作(除了针对发送错误的组件的接收的可能确认)。根据RAS控制器130先前发送的指令(见图4A),O/S 120将在将来的时间处轮询GHES轮询存储器区域144,并且在该时间处采取必要动作(若存在)来解决该可纠正错误。

如果在框414中确定所接收的错误是不可纠正错误,则在框418中,将关于错误的信息写入用于不可纠正错误的GHES存储器区域,并且在框420中,向操作系统发送中断请求。另外地,在框422中,可以针对在框418中向GHES不可纠正存储器区域(例如,GHES SCI存储器区域142)写入的不可纠正错误启动定时器(诸如上文针对图2B论述的定时器138)。随后,方法400继续进行到图4C。例如,如上文论述的,如果图1或2B的RAS控制器130接收到的错误是不可纠正错误,RAS控制器130将错误信息写入GHES SCI存储器区域142并且向O/S 120发送中断请求(诸如通过IRQ总线117)。在接收到中断请求时,O/S 120可以立即地采取必要动作(若存在)来解决不可纠正错误。

在图4B中已经向GHES存储器区域142、144中的一个或多个存储器区域写入错误信息之后,在操作期间,方法400可以在图4C中继续。如图4C所示,在操作期间,在框430中接收后续的错误通知。在框430中接收的后续的错误通知可以是第三、第四...第N错误通知。与上文图4B中的框410类似,在框430中,错误通知可以不是直接由O/S 120接收的,而是替代地由另一个组件(诸如RAS控制器130)接收的。框430中的错误通知可以是上文针对图4B的框410论述的任何类型的错误通知,包括来自存储器的错误、总线错误或软件错误。

在一些实施例中,作为在框430中接收后续的错误通知的一部分,可以做出关于该错误通知对应于可纠正错误还是不可纠正错误的确定,如上文在图4B的框414中论述的。在一个实施例中,图1或图2B的RAS控制器130可以使用逻辑单元来确定错误的类型。如将认识到的,在一些实施例中,对错误的类型的确定可以不作为框430的一部分来执行,但是可以替代地是在框430中接收到后续的错误通知之后的分离的框或步骤。

继续进行框432,方法400确定是否已经接收到针对先前向一个或多个错误存储器区域(诸如图1和2A-2B的GHES存储器区域142、144)写入的错误信息的确认。如果框432中的确定是尚未接收到确认(诸如图2B的错误确认119),则在框434中,对关于后续错误的信息进行缓冲。

如上文针对图2B论述的,在一些实施例中,在O/S 120已经处理了错误之后,O/S 120(直接地或间接地)向RAS控制器130发送错误确认119。如图4C所示,如果在从O/S接收到这种错误确认119(框432)之前,RAS控制器130接收到后续的错误通知(框430),则在框434中,将对关于新错误的信息进行缓冲。在框434中对错误进行缓冲可以包括:如果框430的后续的错误通知与可纠正错误有关,则在CE缓冲器134中存储可纠正错误。替代地,在框434中对错误进行缓冲可以包括:如果框430的后续的错误通知与不可纠正错误有关,则在UE缓冲器136中存储不可纠正错误。

如还在图2B中论述的,对于一些实施例,错误确认119将仅是关于错误已经被O/S 120处理的确认,并且将不包括关于处理的错误的类型的信息。对于这样的实施例,RAS控制器130将确定什么错误已经被O/S 120处理。如图4C所示,这可以诸如通过在框436中确定哪些(若存在)GHES存储器区域是清除的来完成。例如,在接收到错误确认119(框432)之后,RAS控制器130可以轮询或检查GHES存储器140的存储器块中的一个或多个存储器块(见图2B的检查存储器块159),以确定哪个(哪些)错误已经被O/S 120处理。如果框436中的确定是在框430中接收的后续错误与先前向尚未被O/S 120清除的GHES存储器区域142、144写入的错误相对应,则在框434中,对关于后续错误的信息进行缓冲。在框436中确定GHES存储器区域142、144是否是清除的可以作为确定是否在框432中已经接收到确认的一部分来发生(即,在一些实施例中,框432和436可以合并)。

注意,在其它实施例中,在框432中接收的错误确认119可以包含标识O/S 120处理的错误的类型和/或哪个GHES存储器区域142、144在错误处理之后已经被清除或者使信息被O/S 120删除的信息。对于这样的实施例,框436将不被执行和/或将被包括在框432中的关于确认已经被接收的确定中(未在图4C中示出)。

如果框436(或者如果错误确认119包括关于错误类型的信息,则框432)中的确定是在框430中接收的后续错误对应于清除的GHES存储器区域142、144,则在框438中,方法400将错误信息写入适当的GHES存储器区域142、144。因此,当先前向GHES存储器140写入的错误已经被O/S 120处理并且GHES存储器区域142、144被O/S 120清除时,可以将关于后续错误的信息写入现已清除的GHES存储器区域142、144。

如果在框434中已经对错误信息进行了缓冲,则在框438中将错误写入GHES错误存储器区域将包括:将关于队列中的下一(第一个排队的)错误的信息从缓冲器写入适当的GHES存储器区域142、144。举一个示例,假设在框434中已经对关于一个或多个可纠正错误的信息进行了缓冲(诸如在图2B的CE缓冲器134中),则在框432/436中做出关于O/S 120已经处理了先前向GHES轮询存储器区域144写入的可纠正错误的确定。在该示例中,框438将包括:将队列中的下一(最老)的经缓冲的错误信息从CE缓冲器134写入GHES轮询存储器区域144。如果在上文示例中没有在CE缓冲器134中缓冲任何信息,则框438将包括:将框430的所接收的可纠正错误信息写入GHES轮询存储器区域144,而不在框434中首先进行缓冲。

如将理解的,对于可以接收(框430)和/或在框434中缓冲的后续的不可纠正错误,上文示例也是成立的。对于不可纠正错误,框434中的缓冲将是由图2B的UE缓冲器136进行的。类似地,在框438中写入错误将是向图2B的GHES SCI区域142的。另外地,在不可纠正错误的情况下,在框438中写入错误还将包括向O/S 120发送中断,如上文在图4B的框420中描述的。

因此,图4C的方法400的方面允许RAS控制器130避免在O/S 120有机会解决GHES存储器区域142、144中存储的任何先前错误之前重写那些存储器存储器区域142、144。另外地,RAS控制器130可以确保关于在O/S 120确认处理了先前错误(框432)之前接收的每个额外错误的信息(框430)被保存并且被缓冲(框434),直到O/S 120已经处理了先前错误为止。

图4C还示出了可以作为检测或解决图1和2A-2B的系统100/200的异常操作(诸如停止响应的O/S 120)的一部分发生的示例性步骤。例如,如果已经针对被写入GHES存储器区域142的不可纠正错误设置了定时器138(见图4B的框422),则可以在图4C的框440中诸如由RAS控制器130来做出关于定时器138是否已经到期的确定。

注意,框440可以在方法400期间的任何时间处发生,并且可以替代地包括在RAS控制器130处对来自定时器138的到期通知或中断的接收,而不包括RAS控制器130做出的确定。无论是如何接收或确定的,如果与被写入GHES SCI存储器区域142的不可纠正错误相关联的定时器138已经到期(框440),则RAS控制器130可以采取纠正性动作。例如,如图4C所示,如果在框440中,定时器138已经到期,则在框444中,可以存储关于与到期的定时器138相关联的不可纠正错误的信息(以及额外的错误信息,诸如GHES轮询存储器区域144、CE缓冲器134和/或UE缓冲器136中存储的信息)。框444中的存储可以包括:将这样的错误信息存储在O/S 120在O/S启动时可用或访问的非暂时性或永久存储器中。RAS控制器130可以采取额外的纠正性动作,诸如在框446中产生重启。如上文针对图2B论述的,该重启可以是系统100/200的一个或多个组件的热重启,可以是整个系统100/200的冷重启。

另外地,如图4C所示,CE缓冲器134还可以用于检测图1和2A-2B的系统100/200的异常操作,诸如停止响应的O/S 120。例如,在框448中,可以做出关于CE缓冲器134溢出指示系统100/200的异常操作的确定,如上文在图2B中论述的。注意,对CE缓冲器134溢出的确定可以是单独的步骤或框448(如图4C所示),但是可以发生在与在图4C中示出的时间相比不同的时间处,诸如在方法400的框434中向CE缓冲器134写入可纠正错误信息之前。在其它实施例中,框448的确定可以不是单独的步骤,而是可以是在图4C的框434中将可纠正错误缓冲到CE缓冲器134的一部分。

无论其何时发生,RAS控制器130都可以将对CE缓冲器134溢出的确定作为新的不可纠正错误来处理。如图4C所示,在框450中,作为CE缓冲器134溢出的结果,RAS控制器130可以生成新的不可纠正错误。随后,根据上文描述的方法400的步骤,该新的不可纠正错误将被写入GHES SCI存储器区域(连同针对O/S 120的后续中断一起)或者将被缓冲在UE缓冲器136中。

应当认识到的是,上文描述的用于提供独立于操作系统的错误控制的系统和方法可以被并入到包含多个SoC的计算设备中。例如,图5示出了可以并入用于提供独立于操作系统的错误控制的系统和方法的另一个计算设备500的示例性实施例。如图5所示,计算设备500可以包括多个SoC 510、520、530。计算设备500可以是单个设备,诸如具有包括SoC 510、520、530中的一个SoC的多个刀片或板的服务器。在其它实施例中,计算设备500可以包括具有其自己的SoC的分离的设备。

SoC 510、520、530均可以类似于上文针对图1论述的SoC 102。为了清楚起见,在图5中仅示出了SoC 510、520、530的组件中的少数几个组件。然而,将理解的是,SoC 510、520、530中的每个SoC都可以但是不必需包括上文论述的SoC 102的额外组件。SoC 510、520、530中的每个SoC分别包括至少一个处理器CPU 512、522、532,但是可以包括如上文论述的额外处理器。

另外地,每个CPU 512、522、532均分别操作操作系统O/S 514、524、534,O/S 514、524、534可以是相同或不同的操作系统。换句话说,O/S 514可以是第一版本的Linux,O/S 524可以是第二版本的Linux,以及O/S 534可以是某一版本的Windows。在其它实施例中,O/S 514、524、534可以是在多个插槽/管芯上运行的相同的操作系统。在其它实施例中,O/S 514、524、534中的一个或多个O/S可以替代地是实现虚拟机的管理程序或虚拟机监视器(VMM)。在其它实施例中,可以实现操作系统的其它组合和其它类型的操作系统。

SoC 510还包括与上文针对图1和2A-2B论述的RAS控制器130类似的RAS控制器616。类似地,SoC 520上的RAS控制器526与SoC 520的O/S 524和SoC 530的O/S 534两者相通信。RAS控制器626也类似于RAS控制器130并且提供上文针对O/S 524和O/S 534描述的类似功能。在一些实施例中,RAS控制器516、526以如上文针对图1、2A-2B和4A-4B论述的方式相同的方式来操作,其中每个RAS控制器516、526提供对可纠正/不可纠正错误的相同的翻译和确定,并且在不可纠正错误的情况下向O/S 514、524、534发送中断,如上文论述的。

在其它实施例(诸如在图5中示出的)中,设备500还可以包括与RAS控制器516、526和CPU 512、522、532相通信的RAS聚合器540。RAS聚合器540可以是单独的组件,如在图5中示出的,或者在其它实施例中,可以是RAS控制器516、526中的一个RAS控制器的一部分。在图5的实施例中,RAS控制器516、526可以建立如上文针对图4A论述的存储器区域并且还可以接收错误,并且执行如上文在图4B中论述的翻译/确定(见图6)。

然而,RAS控制器516、526向RAS聚合器540发送针对接收到的不可纠正错误的任何中断请求,而不是直接向O/S 514、524、534发送中断。随后,RAS聚合器540确定向哪个O/S 514、524、534发送中断(诸如通过IRQ总线617),从而防止针对相同的不可纠正错误发送多个中断。类似地,RAS控制器516、526还向RAS聚合器540发送对接收到的可纠正错误的通知,使得RAS聚合器可以确定需要的任何进一步的动作。

图6是示出了用于在图5的计算设备中提供独立于操作系统的错误控制的方法600(类似于图4B的步骤)的示例性实施例的流程图。RAS控制器516、526中的每个RAS控制器建立存储器区域,并且向O/S 514、524、534传送存储器和轮询指令,如上文针对图4A描述的。随后,如图6所示,在操作期间,RAS控制器516、526中的每个RAS控制器可以接收错误(框610),将错误翻译成通用格式(框612),确定错误是否是可纠正的(框614),以及将关于错误的信息写入适当的GHES存储器区域(框616、618),如上文针对图4B的框410、412、414、416和418描述的。

然而,对于可纠正错误,RAS控制器516、526还将在方法600返回之前向RAS聚合器540通知该可纠正错误。类似地,对于不可纠正错误,在将信息写入GHES不可纠正存储器区域之后,在框619中,RAS控制器516、526通知RAS聚合器540,并且在框620(类似于图4B的框420)中,RAS聚合器540向适当的O/S 514、524、534发送中断请求,并且在框622(类似于图4B的框422)中,启动任何定时器138。

在本说明书(包括图4A-4C和6)中描述的过程或过程流中的某些步骤自然地先于其它步骤,以使本发明如所描述的运作。但是,本发明不限于所描述的步骤的次序,如果这样的次序或顺序不改变本发明的功能的话。即,要认识到的是,在不脱离本发明的范围和精神的情况下,某些步骤可以在其它步骤之前、之后或与其它步骤并行地(大体同时地)执行。在一些实例中,可以在不脱离本发明的情况下省略或不执行某些步骤,如上文论述的。此外,诸如“其后”、“然后”、“接下来”等的词语不旨在限制步骤的次序。这些词语仅用于引导读者完成示例性方法的描述。

应当认识到的是,本文在图4A-4C和图6中描述的方法步骤中的一个或多个方法步骤可以作为计算机程序指令被存储在存储器中。这些指令可以由任何适当的处理器与其它组件结合或合作来执行,以执行本文描述的方法。另外,编程领域的普通技术人员能够基于例如在本说明书中的流程图和相关联的描述,在没有困难的情况下编写计算机代码或识别适当的硬件和/或电路以实现所公开的发明。因此,对程序代码指令的特定集合或详细的硬件设备的公开不被认为是获得对如何实现以及使用本发明的足够的理解所必须的。

在一个或多个示例性方面中,所描述的功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质中或者通过其进行传输。计算机可读介质包括计算机存储介质和通信介质两者,所述通信介质包括促进程序从一个地方传送到另一个地方的任何介质。存储介质可以是可由计算机或处理器存取的任何可用的介质。通过举例而非限制性的方式,这样的计算机可读介质可以包括RAM、ROM、EEPROM、NAND闪存、NOR闪存、M-RAM、P-RAM、R-RAM、CD-ROM或其它光盘存储、磁盘存储介质或其它磁存储设备、或者可以用于以指令或数据结构的形式携带或存储期望的程序代码以及可以由计算机来存取的任何其它介质。

此外,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤光缆、双绞线、数字用户线(“DSL”)或者无线技术(诸如红外线、无线电和微波)从网站、服务器或其它远程源传输软件,则同轴电缆、光纤光缆、双绞线、DSL或者无线技术(诸如红外线、无线电和微波)包括在介质的定义中。

如本文所使用的,磁盘和光盘包括压缩光盘(“CD”)、激光光盘、光盘、数字多功能光盘(“DVD”)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上述的组合也应当包括在非暂时性计算机可读介质的范围内。

在不脱离本发明的精神和范围的情况下,替代实施例对于本发明所涉及的领域的技术人员将变得显而易见。因此,尽管已经详细地说明和描述了选择的方面,但是将理解的是,如下面的权利要求书所限定的,可以在不脱离本发明的精神和范围的情况下,在本文中作出各种替代和改变。

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