第8章数据流机和归约机 下面仍以一元二次方程求根的例子来说明.图8-1表 示了程序中数据间的相关关系,其中,①与②,③与④, ⑤与⑥均可并行操作,但相互之间因为存在数据相关而不 能执行.如果用加,减,乘,除,平方根等基本操作表示 出相应的数据流程序,则其数据流程序图如图8-2所示.
第8章数据流机和归约机
第8章数据流机和归约机
图8-6常用控制类操作结点及其激发规则 (a)T门控结点;(b)F门控结点;(c)开关门控结点;(d)归并门控结点
第8章数据流机和归约机 此外,根据数据流程序设计的需要,还可以设计一些 其他的基本结点和功能更强的复合型结点,这里就不一一 列举了. 利用上述这些结点,可以画出一些常见程序结构的数 据流程序图.例如,图8-7是具有条件分支结构的数据流程 序图的例子,以实现当x>0时,让x加y,否则,就让x减y 的功能.图8-8为具有循环结构的数据流程序图的例子,以 实现对x循环累加,直到x的值超过1000为止,所得结果为z 的功能.
第8章数据流机和归约机 上述的数据驱动计算,只是数据流计算模型中的一种. 还有另一种叫需求驱动计算模型.数据驱动计算,其操作 是按输入数据可用性决定的次序进行.需求驱动计算,其 操作则按数据需求所决定的次序进行.前者只要所要求的 输入数据全部就绪,即可驱动操作执行,是一种提前求值 的策略;而后者则是按需求值,只有当某一函数需要用到 某一自变量时,才驱动对该自变量的求值操作,是一种滞 后求值的策略.显然后者较之前者可以减少许多不必要的 求值,辅助开销少,有助于提高系统的效率.作为本节讨 论的数据流机来说,一般是指数据驱动计算,需求驱动更 适合面向函数程序设计的计算机.然而,由于它们都属于 数据流方式,因此数据流机也同样比较适合于执行用函数 式语言书写的程序.