【计算机系统结构】第八章:数据流计算机和规约机

2024-04-02 04:44

本文主要是介绍【计算机系统结构】第八章:数据流计算机和规约机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一节:数据流计算机

知识点1:数据驱动的相关概念

(1)数据驱动的数据流方式指的是,只要一条或一组指令所要求的操作数全部准备就绪,就可以立即激发相应的指令或指令组执行。执行结果的输出将送往等待这一数据的下一条或下一组指令。

(2)控制流方式与数据流方式的比较如下:

控制驱动的控制流方式的特点是:通过访问共享存储单元让数据在指令之间传递;指令执行的顺序性隐含于控制流中,但却可以显式地使用专门的控制操作符来实现并行处理:指令执行的顺序受程序计数器控制,也就是受控制令牌所支配的。数据驱动的数据流方式则不同,它没有通常的共享变量的概念,即没有共享存储数据的概念;指令执行顺序只受指令中数据相关性的制约;数据是以数据令牌方式直接在指令之间传递的。

(3)数据流是基于异步性和函数性的一种计算模型。

(4)所谓异步性,是指一旦操作数到齐就开始操作,这是数据流计算机开拓并行性的基础。

(5)所谓函数性,是指每一数据流操作都是消耗一组输入值,产生一组输出值而不发生副作用,具有变量出现在赋值语句左边仅一次的单赋值特性,从而保证任何两个并发操作可以按任意次序执行,而不会相互干扰。

知识点2:数据流程序图和语言

为了满足数据流计算机程序设计的需要,还需进一步引入许多常用的其他结点。这些结点可分别表示如下:

(1)常数产生结点:没有输入端、只产生常数。激发后输出带常数的令牌。

(2)算逻运算操作结点,主要包括常用的十、一、*、/、乘方、开方等算术运算及非、与、或、异或、或非等布尔逻辑运算,激发后输出带相应操作结果的令牌。

(3)复制操作结点:可以是数据的多个复制,也可以是控制量的多个复制。

为了满足数据流计算机程序设计的需要,还需进一步引入许多常用的其他结点。这些结点可分别表示如下:

(4)判定操作结点:对输入数据按某种关系进行判断和比较,激发后在输出控制端给出带逻辑值真(T)或假(F)的控制令牌。

(5)控制类操作结点:控制类操作结点的激发条件需要加到布尔控制端,可以把控制类操作结点细分为常用的4种:T门控结点、F门控结点、开关门控结点和归并门控结点。

知识点3:数据流计算机结构

根据对数据令牌处理的方式不同,可以把数据流计算机的结构分成静态和动态两类。

(1)静态数据流计算机。

静态数据流计算机的数据令牌没加标号。为正确工作,任意给定时刻,当结点操作时,其任何一条输入弧上只能有一个数据令牌。只有当结点的所有输入弧上都有数据令牌时,该结点才被激活来执行相应的操作。

在静态数据流计算机中,为了满足迭代要求,除要多次重复激活同一操作结点外,还必须另设控制令牌,以识别数据令牌由一个结点传送到另一个结点的时间关系,从而区分属于不同迭代层次的各批数据,所以,静态数据流计算机不支持递归的并发激活,只支持一般的循环。

(2)动态数据流计算机。

动态数据流计算机最主要的特点是让令牌带上标记,使得在任意给定时刻,数据流程序图任何一条弧上允许出现多个带不同标记的令牌。

令牌的标记是令牌附带的一个能识别该令牌时间先后相对关系的标号,对于需要多组(次)数据令牌的指令,则是通过对令牌标记的配对来识别。为此,需要相应硬件将标记附加到数据令牌上,并完成对标记的匹配工作。

知识点4:数据流计算机存在的问题

数据流计算机在提高并行处理效能上有着非常显著的特点,但也存在一些问题:

(1)数据流计算机的主要目的是为了提高操作级并行的开发水平,但如果题目本身数据相关性很强,内涵并行性成分不多时,就会使效率反而比传统的Von Neumann型机的还要低。

(2)在数据流计算机中为给数据建立、识别、处理标记,需要花费较多的辅助开销和较大的存储空间,但如果不用标记,则无法递归并会降低并行能力。

知识点5:数据流计算机进展

随着数据流计算机研制的深人开展,已提出若干新的数据流计算机,它既继承了传统计算机采用的并行处理技术,又弥补了经典数据流计算机的一些缺陷。

(1)采用提高并行度等级的数据流计算机。

(2)采用同、异步结合的数据流计算机。

(3)采用控制流与数据流相结合的数据流计算机。

第二节:规约机

知识点1:规约机的结构

归约机和数据流计算机一样,都是基于数据流的计算模型,只是其采用的驱动方式不同。数据流计算机采用数据驱动,执行的操作序列取决于输入数据的可用性;归约机则是需求驱动,执行的操作序列取决于对数据的需求,对数据的需求又来源于函数式程序设计语言对表达式的归约。

知识点2:规约机的特点

归约机的特点如下:

(1)归约机应当是面向函数式语言,或以函数式语言为机器语言的非Neumann型机器,其内部结构应不同于Neumann型机器。

(2)具有大容量物理存储器并采用大虚存容量的虚拟存储器,具有高效的动态存储分配和管理的软、硬件支持,满足归约机对动态存储分配及所需存储空间大的要求。

(3)处理部分应当是一种有多个处理器或多个处理机并行的结构形式,以发挥函数式程序并行处理的特长。

(4)采用适合于函数式程序运行的多处理器(机)互连的结构,最好采用树形方式的互连结构或多层次复合的互连结构形式。

(5)为减少进程调度及进程间的通信开销,尽量把运行进程的结点机紧靠该进程所需用的数据安排,并使运行时需相互通信的进程所占用的处理机也靠近,让各处理机的负荷平衡。

知识点3:规约机的分类

根据计算机所用归约方式的不同,相应就有串归约机和图归约机两类:

(1)串归约机

可看成是一种特殊的符号串处理机,函数定义、表达式和目标都以字符串的形式存储于计算机中。函数式语言源程序可以不经翻译,直接在串归约机上进行处理。

(2)图归约

机采取将函数定义、表达式和目标以图的形式存储于计算机中,图是其处理对象。最常用的图是二叉树和N叉树。

这篇关于【计算机系统结构】第八章:数据流计算机和规约机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869001

相关文章

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c