执行计算机程序的方法、操作系统和计算设备的制作方法

文档序号:6656589阅读:174来源:国知局
专利名称:执行计算机程序的方法、操作系统和计算设备的制作方法
技术领域
本发明涉及在计算设备上、尤其是在微处理器上执行计算机程序的方法。该计算机程序包含多个程序对象。在该方法中当在计算设备上执行计算机程序时检测错误。
此外,本发明涉及操作系统,该操作系统可以运行在一个计算设备上、尤其是运行在一个微处理器上。
最后本发明还涉及用于执行计算机程序的计算设备,该计算机程序包含多个程序对象。该计算设备具有一个用于当在计算设备上执行计算机程序时检测错误的错误发觉机制。
背景技术
当在计算设备上执行一个计算机程序时可能发生所谓的瞬态错误。因为在半导体器件(所谓的芯片)上的结构始终较小、而信号的时钟频率较高并且信号的电压较低,所以经常出现瞬态错误。与永久错误不同,瞬态错误仅仅暂时出现并且通常在一段时间之后自动消失。在瞬态错误的情况下,仅仅个别的位出错,而不会永久损坏计算设备本身。瞬态错误可能由不同的原因造成,比如电磁影响、α粒子或中子。
在通信系统中,目前关注的重点在于对瞬态错误的错误处理。在通信系统中(例如在区域控制网络,CAN)中已知,在检测错误时重新发送错误传递的数据。此外已知,在通信系统中使用错误计数器,其在检测到错误时递增,在正确发送时低减,并且只要其超过一个确定的值,就阻止发送数据。
可是在用于执行计算机程序的计算设备中基本上仅仅对永久错误进行错误处理。对瞬态错误的考虑局限于错误计数器的增量和也许可能的减量。二者存放在一个存储器并且可以脱机、也就是说例如在一个形成为汽车控制设备的计算设备中在车间停留期间、可以作为诊断信息或错误信息读出。然后可以对错误作出相应反应。
借助于错误计数器的错误处理一方面不允许在一个特别对于比较安全的系统要求的较短容错时间内部进行错误处理并且另一方面在这个意义上也不进行有益的错误处理即在容错时间内按规定再度执行计算机程序。在现有技术的情况下,替代的解决方案在于当超过错误计数器的一个确定值之后计算机程序转入到紧急运行。这表明代替有错误的计算机程序部分而执行另外的计算机程序并且把通过这种方式确定的等效值用于另外的计算。例如可以根据另外的量模拟该等效值。另外也可以认为以计算机程序的有错误部分计算的结果是有错误的而不予理睬并且采用为紧急运行设置的标准值替代用于另外的计算。已知的、处理在计算设备上运行的计算机程序的瞬态错误的方法因而不可能在系统上有益地涉及大多数错误的瞬态本性。
此外从现有技术已知通过完全重新启动计算设备消除当在计算设备上执行计算机程序时出现的瞬态错误。这种解决方案仍不能真正令人满意。因为将会使在目前执行计算机程序的过程中获得的量丢失并且计算设备在重新启动的持续时间内不能履行其规定的功能。尤其在比较安全的系统中这是不能接受的。
最后还公知作为在一个计算设备上执行的计算机程序的瞬态错误的错误处理,计算机程序后移几个时钟脉冲并且重复计算机程序的各个机器指令。该方法也称为微卷回(Micro Roll-Back)。在已知的方法中仅仅后跳在机器层面上的对象(时钟,机器指令)。该对象在机器层面上要求相应的硬件支持,这在计算设备的范围内显著增加费用。该已知方法的实施不能单纯通过软件控制。
从现有技术中已知的错误处理机制不能以适当的方式对在计算设备上执行计算机程序时出现的瞬态错误作出反应。
本发明基于以下的技术问题在一个计算机系统中当在执行计算机程序中出现瞬态错误时如此有益地处理该错误,即在一个尽可能短的容错时间内重新恢复计算机系统的全部功能作用和功能可靠性。
为了解决这个技术问题,以开始所述形式的方法为出发点提出在检测到一个错误时把至少一个已经执行的程序对象转入一个定义的状态,并且从这个状态重新启动。

发明内容
重新启动的程序对象在检测到错误时必须没有被完全执行。在本发明的意义上,也可以在出现错误时重新启动以下的程序对象其在错误检测的时刻还没有被完全执行,可是该程序对象一定已经开始执行。根据本发明在出现一个瞬态或一个永久错误时重新执行至少一个操作系统对象。与微卷回方案相比的优点尤其在于以非常有限的硬件支持即可实现程序对象的重复。最多需要附加的存储位置,以便可以暂时存储几个对于重新执行程序对象所需要的信息(例如该程序对象的输入参数)。通过计算设备的操作系统实施根据本发明的方法的管理。也就是说以传统的、商业上通用的处理器即可实现根据本发明的方法,不需要附加硬件。可是当然也能够实现具有硬件支持的根据本发明的方法。
也可以按照任意的方法实现错误检测。可以考虑使用各种形式的错误发觉机制,其在执行计算机程序时检测错误(所谓的并行检验)。例如在双核结构中双倍地形成整个计算机核心。如果计算机核心运行在锁步模式,则对于每个指令可以比较,是否两个计算机核心提供同样的结果。结果不同肯定推断出错误。这种错误发觉机制在执行程序对象时能够实时地发现错误。相应也适合于发觉错误的代码、其在处理器体系结构中普遍使用,或也适合于计算机设备的加倍的部分元件。所有这些错误发觉机制的共同点是,非常快速地发觉瞬态错误并且如果检测到一个错误,则提供一个错误信号。
根据以下所述的错误信号可以触发一个错误处理机制,该错误信号重复程序对象。如果在重新执行时再一次出现同样的错误,则可以推断出永久错误,或错误计数器增值,对此只有在超过一个确定值的情况下才推断出一个永久错误。与此相反如果在重新执行程序对象时不再出现该错误,则可以得出如下结论该错误是一个瞬态错误。在无错误重新执行该程序对象时再度提供该计算机程序用于其按规定的功能。因此重复至少一个程序对象是一个很好的处理瞬态错误的方法。
根据本发明的一个有益的改进提出把该程序对象形成为计算机程序的渡越时间对象(在下面称为任务)并且在检测到一个错误时重新执行至少一个任务。任务是在操作系统级上的一个典型对象。如果希望甚至单纯软件控制,则以最低的费用实现任务的重复。
根据本发明的一个优选实施形式提出重新启动在检测错误时刻执行的程序对象。作为替代或附加地也可以启动并重新执行在检测错误时刻已经完全执行的程序对象。
建议,在执行程序对象期间、尤其是在执行程序对象开始时产生并存储该程序对象的至少一个定义的状态。这例如通过以下方式实现存储所有与该程序对象状态至关重要的参数值。
此外建议,一个与在其上面执行具有多个程序对象的计算机程序的计算机设备冗余工作的计算设备用于错误检测。当然也可以使用多于一个的冗余计算设备进行错误检测。
根据本发明的方法有益地应用在汽车中、尤其是应用在汽车控制设备中,以在执行一个计算机程序时尽管出现不可避免的瞬态错误仍能保证计算机程序的安全而可靠的执行。这在汽车的在安全严格的应用中对于执行控制和/或调解程序尤其重要。
此外建议,如果在重新执行至少一个程序对象时再度出现同样的错误,则推断出永久错误。也可以考虑,如果在预定数目的重复程序对象之后还始终出现该错误,那么才推断出一个永久错误。在这种情况下如果在第三或还要后面的重复该程序对象之后消除该错误,这当然还断定为一个瞬态错误。通过本发明的这个改进可以例如三次而不是仅仅两次地重复重要的程序对象。
根据本发明的另一个有益的改进提出把至少一个程序对象的重复数目限制在一个预定值内。由此防止在永久错误的情况下任意多次地重复同样的程序对象。例如借助于一个计数器或通过时间限制可以实现对至少一个程序对象的重复数目的限制。通过规定并取决于任务的重复此外能够与不太重要的任务相比更多次重复重要的任务并因此给重要的任务更多或更长的机会,不必完美地运行瞬态错误,然而在不太重要的任务的情况下相对较快地推断出永久错误并且引发另外的系统反应。
根据本发明的另一个优选的实施形式提出把至少一个程序对象的重复数目动态地限制在一个规定的值内。至少一个程序对象的重复数目有益地依赖于作业调度的剩余时间动态地限制在一个规定的值内。通过这种方式例如在多次重复第三任务期间可以执行第一任务和第二任务。
为了实现根据本发明的方法提出在执行计算机程序时在执行一个程序对象之前存储为了执行该程序对象所必需的或者定义该程序对象状态的参数值。就是说根据该实施形式暂时存储所有程序对象的参数。
替代方案建议在一个周期内应当周期执行的计算机程序中当在确定的程序对象上检测到错误时跳回在计算机程序的周期内一个可规定的返回点。根据该实施形式在一个错误的情况下始终跳回到周期内的同一位置。在执行处理计算机程序期间在执行一个程序对象之前最好在返回点存储与该程序对象状态所有至关重要的参数值。也就是每循环或周期在返回点仅仅一次存储程序对象的重要参数值。由此可以节省存储时间和存储位置。
在检测到一个错误之后重新执行一个程序对象时调用已经存储的输入参数并且提供给要重新执行的程序对象作为输入参数。
作为本发明的另一个实施形式提出给一个程序对象设置多个返回点。在出现错误时不必重新执行整个程序对象,而是仅仅重新执行一部分程序对象。在出现错误时简单地转移到前面的直到无误地执行程序对象的返回点。例如在无误执行程序对象一直到第n个返回点时当在该返回点与第(n+1)个返回点之间出现错误,则回跳到第n个返回点。然后从第n个返回点重新执行该程序对象。因此能够节省时间。当在执行程序对象期间在越过一个返回点时分别产生并存储至少一个定义的状态。
以操作系统的形式来实现根据本发明的方法具有特别重要的意义。在此情况下,操作系统能够在一个计算设备上、尤其是在一个微处理器上运行并且如果操作系统在计算设备上运行,则为了实施根据本发明的方法对该操作系统进行编程。在这种情况下,通过操作系统实现本发明,使得该操作系统通过与适合于实施操作系统的方法相同的方式来描述本发明。该操作系统最好存储在一个存储元件上并且为了执行而传递给计算设备。一个任意的数据载体或一个电子存储介质可以用作存储元件,例如一个随机存取存储器(RAM)、只读存储器(ROM)或闪速存储器。
作为本发明技术问题的其它解决方案以开篇所述形式的计算设备为出发点提出该计算设备具有一个错误处理机制,其在检测到错误的情况下通过错误发觉机制促使重新执行至少一个程序对象。
根据本发明的一个有益改进提出该错误处理机制具有一个触发器逻辑电路,其在检测到一个错误时重新启动至少一个程序对象。
根据一个优选实施形式体提出在计算设备上运行一个实时操作系统或OSEK时间。最后建议,计算设备包含一个微处理器。


从下面在附图中示出的、本发明的实施例的描述中得出本发明的另外特征、应用可能性和优点。对此不依赖于其在权利要求书中的归纳或其后面的关系以及不依赖于其表达或者在说明书中或在附图中的阐述形成所有描述的或示出的特征或以任意的组合形成本发明的主题。
图1指出了根据优选实施形式的、按照本发明方法的流程图;图2以示意图指出了根据一个优选实施形式的、按照本发明的计算设备。
具体实施例方式
本发明涉及一个用于在计算设备上、尤其是在一个微处理器上执行计算机程序的方法。该计算机程序包含多个、主要形成为任务的程序对象。在该方法中当在计算机设备上执行计算机程序期间检测错误,检测的错误可以是瞬态(也就是暂时的)或永久的错误。
当在一个计算设备上执行一个计算机程序时可能会出现瞬态错误。因为在计算设备的半导体器件(所谓的芯片)的结构始终较小、而信号的时钟频率较高并且信号的电压较低,所以当在一个计算设备上执行一个计算机程序时经常出现瞬态错误。不同于永久错误,瞬态错误仅仅暂时出现并且通常在一段时间之后自动消失。在瞬态错误的情况下,仅是个别的位出错,而不会永久损坏计算设备本身。瞬态错误可能有不同的原因,比如电磁影响、α粒子或中子。
基于以下事实瞬态错误几乎不可预见地出现并因此不可能重现,在从现有技术中已知的计算设备中基本上仅仅对于永久错误进行处理。对瞬态错误的一种考虑局限于错误计数器的增量和也许可能的减量。二者存放在存储器中并且可以脱机也就是说例如在车间可以作为诊断信息或错误信息读出。然后可以对错误作出相应反应。已知的错误处理不允许在一个特别对于安全重要的系统所需要的、较短的容错时间内处理错误并且另一方面在这个意义上不能进行有益的错误处理,即在容错时间内再度按规定执行计算机程序并且计算设备可以完成其按规定的任务。
与之相反,根据本发明的方法允许利用与大多数错误的瞬态本性在系统上有益的交流来对在一个计算设备上运行的计算机程序的瞬态错误进行处理。以一个渡越时间对象、所谓的任务为例在图1中示出了根据本发明的方法的流程图。其它任务的存在并不影响原理过程,从而不考虑这种情况。如此根据在图1中示出的过程处理一个任务,根据本发明也可以处理多个任务。并行工作的错误发觉机制(所谓的Concurrent checking)是特别有益的。可是在流程图中没有示出该机制,其在相应位置作为串联器件被嵌入。
根据本发明的方法以功能块1开始。在功能块1中开始在计算设备上执行一个任务;该任务被调用。在功能块2中产生一个返回点。为了这个目的在计算设备的存储元件中暂时存储与安全相关的任务输入参数、其足以把该任务置于重新启动的一个定义的状态或再次启动该任务。最好存储该任务的所有输入参数。然后在功能块3中继续执行该任务。该执行直到一个返回点或直到任务结束。然后实施错误发觉机制。可以按照任意的方法检测错误。在执行计算机程序时检测错误(所谓的并行检测)。如此例如在一个所谓的双核结构中两倍地形成整个计算机核心。如果计算机核心运行在所谓的锁步模式,对于每个指令可以比较上述两个计算机核心是否提供同样的结果。如果结果不相同则能够肯定推断出一个错误。这种错误发觉机制实时地发现在执行任务中的错误。相应也适合于发觉错误的代码、其在处理器体系结构中普遍使用,或也适合于计算机设备的加倍的部分元件。最好使用这样的错误发觉机制,其非常快速地发觉瞬态错误并且如果检测到一个错误,则提供一个错误信号。
在一个询问块4中检查是否发现错误、也就是瞬态或永久错误。假如发现一个错误,则转移到另外的询问块7中,在那里检查错误计数器逻辑电路的当前值。如果错误计数器不低于(在减量错误计数器的情况下)或还没有超过(在增量错误计数器的情况下)规定的计数器读数,再一次执行在其执行期间出现错误的任务或者在出现该错误之前已经执行的确定数目的任务。如果能够重新启动该任务的执行,则转移到功能块8,在该功能块8中利用出现的另外错误的信息来更新错误计数器逻辑电路的状态(递减或者递增)。从这里转移到功能块5,在该功能块中加载在功能块2中存储的参数并且提供给该任务以产生开始执行的定义状态。然后转移到功能块3,在这里再一次部分、也就是说例如从已经执行的返回点、或完整地、也就是说从开始再一次启动该任务、执行要重复的任务。
如果在询问块4中得知,当在功能决3中执行任务时没有出现错误,则转移到功能块9,在功能块9中以该信息来更新错误计数器逻辑电路,即没有检测到错误。从功能块9转移到询问块11,在此检查,该计算机程序是否结束。如果结束,则转移到功能块6来结束该计算机程序。否则转移到功能块12中,在那里根据当前的状态产生另一个返回点,这是通过定义并暂时存储安全重要的任务输入参数实现的,该输入参数足以再一次启动该任务。然后从功能块12再度转移到功能块3,在那里重新启动应当重复的任务并且或者部分或者完全地再一次执行该任务。
如果在询问块7中得知,根据错误计数器逻辑电路的状态不能再进一步尝试重新执行该任务,则转移到功能块10。在询问块7中检查,该任务的错误计数器逻辑电路的值是否大于取决于任务的重复值。该取决于任务的重复值或者对于不同的任务是相同的或者对于每个任务单独规定特殊的值。通过这种方式能够在告知永久错误之前例如首先多次重复特别重要的任务。如果取决于任务的重复值规定为1,则在检测到一个永久错误之前仅仅重复一次该任务。如果取决于任务的重复值规定为2或3,则在检测到一个永久错误之前重复两次或三次该任务。在这种情况下该任务支配较长的时间或者多个过程,直到不再出现瞬态错误。在功能块10中检测到一个永久错误并且引发相应的措施。该措施例如可能是计算机程序转移到紧急运行,或者首先不采取措施而然后结束该计算机程序的运行。
根据本发明的方法不必包含所有在图1中示出并且在上面阐述的功能块和询问块。这样例如可以省去涉及错误计数器逻辑电路的块7至9。在检测到错误的情况下要重新启动的并且执行的任务重复长时间直到不再出现错误。如果没有检测到永久错误,还可以取消功能块10。作为替代方案,把取决于任务的重复值规定为1,从而可以省去用于更新错误计数器的功能块8和9。最后如果执行具有唯一返回点的唯一任务,则也可以省去块11和12。
在图2中示出了根据其优选实施形式的、用于执行计算机程序的根据本发明的计算设备。该计算设备整体用参考符号20表示。该计算设备包含一个存储元件21,其例如形成为电子存储器、尤其是形成为一个闪速存储器。此外该计算设备20包含一个微处理器22,在该微处理器上可以执行一个计算机程序。该计算机程序存储在电子存储介质21上并且以参考符号23表示。为了在微处理器22上执行计算机程序,该计算机程序或者完整或者逐段地、例如指令方式地经过数据连接24传输到微处理器22上。该数据连接24可以形成为一个或多个数据线或形成为用于数据传输的总线系统。在存储介质21上此外存储操作系统,其在计算设备20上行时至少部分从存储器21从传输到微处理器22并且在那里执行该操作系统。该操作系统以参考符号25表示。其具有以下任务控制并管理计算机程序在微处理器22和连接在计算设备20上的外围设备上的执行。根据本发明以特别的方式形成操作系统25,如果该操作系统在微处理器22上运行,则为了执行根据本发明的方法该操作系统可以编程并且完成根据本发明的方法。该操作系统特别包含对错误发觉机制的访问,该错误发觉机制用于在微处理器22上执行计算机程序23期间检测错误。此外该操作系统25包含一个错误处理机制,其在检测到错误时促使重新执行计算机程序23的至少一个程序对象(一个任务)。
权利要求
1.在计算设备(20)上、尤其是在微处理器(22)上执行计算机程序(23)的方法,其中所述计算机程序(23)包含多个程序对象,在所述方法中,在计算设备(20)上执行该计算机程序(23)期间检测错误,其特征在于,当检测到一个错误时,把至少一个已经执行的程序对象转入到一个定义的状态并且从这个状态重新启动至少一个程序对象。
2.按照权利要求1的方法,其特征在于,该程序对象被形成为计算机程序(23)的任务并且在检测到一个错误时重新执行至少一个任务。
3.按照权利要求1或2的方法,其特征在于,重新执行一个在检测到错误的时刻已经执行的程序对象。
4.按照权利要求1至3之一的方法,其特征在于,在执行程序对象期间,尤其是在执行程序对象的开始时产生并存储该程序对象的至少一个定义的状态。
5.按照权利要求1至4之一的方法,其特征在于,对于计算设备(20)而言以冗余方式工作的另外的计算设备被用来检测错误。
6.按照权利要求1至5之一的方法,其特征在于,该方法应用于汽车中、尤其应用于汽车控制设备中。
7.按照权利要求1至6之一的方法,其特征在于,如果在重新执行至少一个程序对象时再度出现同样的错误,则推断为永久错误(12)。
8.按照权利要求7的方法,其特征在于,把至少一个程序对象的重复数目限制在一个可规定的值内。
9.按照权利要求8的方法,其特征在于,把至少一个程序对象的重复数目动态地限制在一个可规定的值内。
10.按照权利要求9的方法,其特征在于,根据作业调度的剩余时间把至少一个程序对象的重复数目动态地限制在一个可规定的值内。
11.按照权利要求1至10之一的方法,其特征在于,在执行计算机程序(23)期间,在执行一个程序对象之前存储为了执行该程序对象所需的参数值。
12.按照权利要求1至10之一的方法,其特征在于,在一个在周期中周期执行的计算机程序(23)中,如果在一个确定的程序对象上检测到一个错误,则在计算机程序(23)的这个周期内跳回到一个可规定的返回点。
13.按照权利要求12的方法,其特征在于,在执行计算机程序(23)期间,仅仅在执行一个程序对象之前在返回点上存储所有在该程序对象上存在的输入参数。
14.按照权利要求11或13的方法,其特征在于,在重新执行一个程序对象期间,在检测到一个错误之后,利用为该程序对象存储的输入参数来重新执行该程序对象。
15.操作系统(25),其可以运行在一个计算设备(20)上、尤其是运行在一个微处理器(22)上,其特征在于,该操作系统(25)为了执行按照权利要求1至14之一的方法可以被编程,并且该操作系统运行在计算设备(20)上是执行根据本发明的方法。
16.用于执行包含多个程序对象的计算机程序(23)的计算设备(20),其中所述计算设备(20)具有一个错误发觉机制以在计算设备上执行计算机程序(23)时检测错误,其特征在于,该计算设备(20)具有一个错误处理机制,该错误处理机制在通过错误发觉机制检测到一个错误时促使已经执行了的至少一个程序对象转入到一个定义的状态,并且从该状态重新启动。
17.按照权利要求16的计算设备(20),其特征在于,所述错误处理机制具有一个触发器逻辑电路,该触发器逻辑电路在检测到一个错误时重新启动至少一个程序对象。
18.按照权利要求16或17的计算设备(20),其特征在于,在计算设备(20)上运行一个实时操作系统(25)。
19.按照权利要求16至18之一的计算设备(20),其特征在于,该计算设备(20)包含一个微处理器(22)。
全文摘要
本发明涉及用于在计算设备(20)上、尤其是在微处理器(22)上执行计算机程序(23)的方法。该计算机程序(23)包含多个、例如形成为任务的程序对象。在计算机设备(20)上执行计算机程序(23)期间检测瞬态或永久错误。为了在出现瞬态错误期间在一个计算机系统内可以有益地处理这个错误即在尽可能短的容错时间内再度恢复该计算机系统的作用能力和功能可靠性而建议在检测到一个错误时已经执行的至少一个程序对象转入到一个定义的状态,并且从这个状态重新启动该程序对象。该程序对象例如是计算机程序(23)的一个渡越时间对象、所谓的任务。在本发明的意义上可以重新启动并执行在出现错误时还在执行或已经执行的一个任务或多个任务。
文档编号G06F11/14GK1993679SQ200580026278
公开日2007年7月4日 申请日期2005年7月25日 优先权日2004年8月4日
发明者R·维伯勒, B·穆勒, W·哈特, T·科克, Y·科拉尼, R·格梅利彻 申请人:罗伯特·博世有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1