数据流体系结构
数据流体系结构是一种计算机体系结构,直接与传统的冯·诺依曼体系结构或控制流体系结构进行了对比。数据流体系结构没有概念上的程序计数器:指令的可执行性和执行仅基于指令输入参数的可用性来确定,因此,指令执行的顺序是不可预测的,即行为是不确定的。
数据流架构主题
静态和动态数据流机器
使用常规内存地址作为数据依赖项标签的设计称为静态数据流计算机。这些机器不允许同时执行同一例程的多个实例,因为简单标记无法区分它们。
使用内容可寻址内存(CAM)的设计称为动态数据流计算机。他们在内存中使用标签来促进并行性。
编译器
通常,在控制流体系结构中,编译器会分析程序源代码中指令之间的数据依存关系,以便更好地组织二进制输出文件中的指令序列。指令是按顺序组织的,但是相关性信息本身未记录在二进制文件中。为数据流计算机编译的二进制文件包含此依赖项信息。
数据流编译器通过为每个依赖项创建xxx的标签而不是使用变量名来记录这些依赖项。通过为每个依赖项赋予xxx的标记,它允许二进制文件中的非依赖性代码段无序且并行地执行。编译器检测循环,break语句和各种编程控制语法以获取数据流。
程序
程序被加载到动态数据流计算机的CAM中。当指令的所有加标签的操作数可用时(即,从先前指令的输出和/或用户输入),该指令被标记为准备好由执行单元执行。
这称为激活或触发指令。一旦执行单元完成了一条指令,其输出数据(及其标签)就会发送到CAM。然后,将任何依赖于此特定基准面(由其标记值标识)的指令标记为可以执行。这样,后续指令将以正确的顺序执行,从而避免出现竞争状况。该顺序可能不同于人类程序员所设想的顺序顺序,即编程顺序。
说明
指令及其所需的数据操作数将作为数据包(也称为指令令牌)传输到执行单元。类似地,输出数据作为数据令牌被发送回CAM 。指令和结果的分组化允许大规模并行执行就绪指令。
数据流网络将指令令牌传递给执行单元,并将数据令牌返回给CAM。与常规的von Neumann体系结构相比,数据令牌不是xxx存储在内存中,而是暂时性消息,仅在传输到指令存储时才存在。