|
|
51CTO旗下网站
|
|
移动端

1.5.2 有限与无限状态

《高性能嵌入式计算》第1章嵌入式计算,本章讲述的是许多嵌入式计算系统都建立在标准之上,标准表述形式会影响嵌入式系统设计方法。嵌入式系统容易受到新型安全性和可靠性威胁。需要实时控制的嵌入式计算机产生了许多特定的需求。本节为大家介绍有限与无限状态。

作者:鞠大鹏译来源:机械工业出版社|2010-06-30 16:48

1.5.2 有限与无限状态

模型能够描述的状态数目是任何计算模型最基本的方面。关于可计算性的早期研究工作强调有限与无限状态机的能力;一般认为无限状态很好,因为它表明计算机的能力更强。然而,有限状态模型在理论和实践中更容易检验。因此,有限状态编程模型在嵌入式计算中占有重要地位。

软件和硬件设计人员都对有限状态机(FSM)非常了解。图1-17显示了一个例子。一个FSM通常定义为

 

其中,I和O是状态机的输入和输出,S是其当前状态,Δ和T分别是状态转换图的状态和转换。在摩尔机(Moore machine)中,输出只是S的函数,而在米利机(Mealy machine)中,输出是当前状态和当前输入的函数。

尽管存在异步FSM的模型,但有限状态机模型开发中的一个关键特点是同步操作概念:输入只在特定时刻被接收。有限状态机把时间当作整数值看待,而非实数值。对于每个输入,FSM评估其状态并基于接收到的输入和当前状态决定其下一个状态。

除了状态机本身,我们还需要对其输入和输出建模。流(stream)广泛用作终端行为模型,因为它描述了连续行为——时间当作序数,而非实数值。流的元素是字母表中的符号。字母表可能是二进制的,还可能是其他进制的,还可能包含其他类型的值,但流本身不强加任何语义。流是整体有序的符号集合<s0,s1,…>。流可以是有限或无限的。非正式地,一个符号在流中出现的时间由其在流中的序号决定。在这个等式中

 

符号st表示流S的第t个元素。

我们可以利用流来描述有限状态机的输入/输出或终端行为。如果把FSM看成有若干二进制值输入,输入流的字母表就是二进制数字;其他情况下,可以把输入看成由值构成的一个组,组中的值由一个单独符号确定,符号定义了所有输入的状态。对于输出同样可以这样考虑。输入的行为随后描述为一个或多个流,取决于使用的字母表。同样地,输出行为也描述为一个或多个流。在时刻i,FSM消耗了其各个输入流中的一个符号,并在其输出流中产生了一个符号。从输入到输出的映射由状态转换图和状态机的内部状态决定。从终端角度看,FSM是同步的,因为消耗输入和产生输出是同时的。

尽管硬件设计人员不是最熟悉同步有限状态机,但同步行为是嵌入式语言设计的发展趋势。有限状态机提供了用于软件的有趣模型,因为它们比无限状态机更容易检验。由于FSM有有限个状态,我们能够在有限时间内访问所有的状态并执行所有的转换。如果一个系统有无数个状态,我们就不能在有限时间内访问其所有状态。尽管在实际中遍历FSM的所有状态可能并不可行,但过去20年的研究已经为我们提供了探索大型状态空间的高效算法。

有序二叉决策图(Ordered Boolean Decision Diagram,OBDD)\[Bry86\]可用于描述组合布尔函数。已经开发了根据 OBDD 描述状态空间的技术,使得很多情况下可以有效检验状态空间的属性。OBDD并没有解决组合和状态空间搜索问题

最基本的NP完全性问题;在某些情况下OBDD可能变得很大并且计算很慢。但在很多情况下,它们运行得很快,甚至在病态情况下能快过其他竞争方法。OBDD允许我们完成很多关于实际系统正确性的测试。

产品机(product machines)——通常更容易把复杂功能表示为通信机系统。然而,隐藏的缺陷可能潜伏在那些组件之间的通信中。建立通信机产品是很多正确性检验的第一步。

可达性(reachability)——很多缺陷表现在不能达到状态机中的某些状态。在有些情况下,不可达状态可能只表示无用但不重要的行为。其他情况下,不可达状态可能意味着系统功能的缺失。

非确定FSM(nondeterministic FSM),也称为非确定有限自动机(NFA),用于描述有些类型的系统。图1-18显示了一个例子:状态s1的两个转换具有相同的输入标志。思考这个模型的一种方法是,状态机不确定地选取一个转换,这样未来的输入将会使自动机处于适当的状态;另一种考虑自动机执行的方法是,自动机同时遵循所有可能的转换,直到未来输入导致它放弃某些路径。需要牢记的是,非确定自动机在形式上并不比确定自动机更有表达能力。有一个算法能将任意NFA转化成等价的确定自动机。这是关于表现力风格方面的一个简单但清楚的例子。

 
图1-18一个非确定有限状态机

已经开发了很多用于描述控制的语言。状态图是一个有名的例子。我们将在3.5.3节中更详细的讨论状态图。

图灵机(Turing machine)是最有名的无限状态计算模型(Church首先开发了Lambda演算,但图灵机更紧密地模拟了实际计算机的运行)。如图1-19所示,图灵机自身包含一个程序,一个读写头和一个状态。图灵机读写磁带,磁带划分为许多格,每个格包含一个符号。磁带可以在读写头下面前后移动;读写头在磁带上既可以读也可以写符号。由于磁带可能无限长,因此它可以描述无限状态计算。图灵机的一个操作循环包含以下步骤:

 
(点击查看大图)图1-19一个图灵机

1.图灵机使用读写头来读在其下方磁带格中的符号。

2.图灵机擦掉读写头下面格中的符号。

3.图灵机依据其程序确定下面该做什么。基于当前状态和读到的符号,图灵机可能写一个新符号和/或移动磁带。

4.图灵机依据程序的描述改变其状态。

图灵机是一个强大的模型,允许我们表示可计算性的能力和限制。然而,正如我们之前提到的,尽管有限状态的基本编程模型有更多的限制,但它使实际程序的很多重要方面能够进行验证。例如,理论计算机科学的一个关键结果是停机问题(halting problem)——图灵模型允许我们判定,对于任意一个程序,我们不能确定它在有限时间内是否会停止。无法保证程序会停止导致我们不可能检验无限状态系统程序中的很多重要问题。相反,因为我们能够在有限时间内访问有限状态系统的所有状态,重要属性就变得更容易处理。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

Jenkins Pipeline可持续化集成

Jenkins Pipeline可持续化集成

优化运维流水线
共3章 | youerning

25人订阅学习

笑熬浆糊之职场那些事

笑熬浆糊之职场那些事

IT人的职场心法
共22章 | Bear_Boss

64人订阅学习

Redis运维秘籍

Redis运维秘籍

运维标配技术
共15章 | one叶孤舟

140人订阅学习

读 书 +更多

ASP快速建站全程实录

本书从一个网站制作过程入手,详细介绍基于ASP技术建设网站的全过程。全书共10章。第1章,网站制作规划与流程;第2章,IIS安装与调试;第3...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客