计算机系统结构 互联网路、并行主存系统、霍纳法则和forkjoin

互联网络的设计目标

  • 成本要低:结构不要复杂
  • 性能要高:处理单元间信息传送的步数要少
  • 灵活性高:满足算法和应用需要
  • 可扩充性:能用基本构件组合实现复杂的互连

互联网络要抉择的问题

  • 操作方式:同步(阵列处理机(单处理机):SIMD)、异步(多处理机)、同步异步组合
  • 控制策略:集中式(SIMD)、分布式
  • 交换方式:线路交换、包交换、线路与包交换组合
  • 拓扑结构:
    • 静态拓扑(线型、环型、树型、网络型等):不灵活
    • 动态拓扑(单级、多级)

单级互联网络

  • 立方体单级网络(Cube(N))
  • PM2I单级网络(PM2(±i))
  • 混洗交换单级网络(Shuffle)
  • 蝶形单级网络(Butterfly)

立方体单级网络(Cube(N))

          _
Cube₀(b₂b₁b₀)
        _
Cube₁(b₂b₁b₀)
        _
Cube₂(b₂b₁b₀)

上图中,立方体有8个顶点,编号为0-7,根据log₂8=3,所以每个顶点边线直连为三个顶点。如果把每个顶点编号都换成二进制编号,则可以发现直连顶点与当前顶点关系只会对某一个二进制数位取反。比如顶点7,二进制为111,与之相连的是3(011),5(101),6(110),每次111其中一个数位取反则可以得到其他三个数值

PM2I单级网络(PM2(±i))


PM2+i(j) = j + 2^i mod N
PM2-i(j) = j - 2^i mod N

其中的j是代表顶点编号,i代表代表log₂N的数值,比如N=8的时候,log₂8=3,i取值为0,1,2这三个数

最大传输距离:N/2

混洗交换单级网络(Shuffle)

Shuffle(b₂b₁b₀) = b₁b₀b₂

蝶形单级网络(Butterfly)

Butterfly(b₂b₁b₀) = b₀b₁b₂
如果是四位,直观点看:Butterfly(ABCD) = DCBA

多级互联网路

  • 多级立方体网络
  • 多级混洗交换网络
  • 多级PM2I网络
  • 基准网络

交换开关

四个状态:
直连
交换
上拨
下拨

如果有个开关只有一个状态,被称为单功能开关,两个状态被称为二功能开关,四个状态都有,称为四功能开关

级控制方式

  • 级控制
设定某一个级中所有开关所拥有哪些状态,同一级别下,所有开关状态是一致的,比如只设定0级中所有开关为直连,那么此时就只会直连
  • 单元控制
不同开关有各自不同的状态,不分级别,只把开关看成一个个体
  • 部分级控制
比如设定第0级别开关只有一种状态,那么第1级别就是两种状态,第2级别就是三种状态,第N个就是N+1种状态

多级立方体网络

  • STARAN网络
  • 间接二进制N方体网络

多级混洗交换网络

  • 又称Omega网络
  • 四功能交换单元
  • 单元控制

并行主存系统的无冲突访问

要实现无冲突访问,需要进行存储体拓展,按质数个拓展,比如途中是4列,则拓展为5列,如果是8列,则拓展为11列。然后下一行与上一行第一个相差2个存储体,如下图所示

多处理机(MIMD)

  • 概念
    • 两台以上
    • 共享I/O
    • 通过共享主存或通信网络通信
    • 协同求解
  • 目标
    • 提高性能
    • 提高系统可靠性、适应性和可用性

硬件结构

  • 紧耦合多处理机
    • 通过共享主存实现通信
    • 有两种构型,区别在于是否自带专用Cache
  • 松耦合多处理机
    • 较大的局部存储器
    • 通信: 通道互连、消息传送系统
    • 两种构型:层次型和非层次型

机间互连形式

  • 总线
  • 环形互连
  • 交叉开关
  • 多端口存储器
  • 蠕虫穿洞寻径网络
  • 开关枢纽结构形式(分布结构多处理机)

多Cache的一致性问题解决办法

  • 解决进程迁移引起的多Cache不一致性
    • 禁止进程迁移
    • 让进程中的数据重新写回主存中
  • 以硬件为基础实现多Cache的一致性
    • 监视Cache协议法:实现简单,只适用于总线互连、机数较少的多处理机
      • 写作废法:IBM 370
      • 写更新法(又叫播写法)
    • 目录表法
      • 全映像目录表
      • 有限目录表
      • 链式目录表
  • 以软件为基础实现多Cache的一致性(低成本、低可靠性)

并行算法

  • 按运算对象来分:数值型和非数值型
  • 按并行进程间的操作顺序来分:同步型、异步型、独立型
  • 按任务粒度来分:细粒度、中粒度、粗粒度

霍纳法则

  • 利用交换律、分配律:把相同的计算集中在一起
  • 利用结合律、分配律:把操作数配对,尽可能并行,减少树高

程序段的数据相关

  • 无任何相关:可以并行、交换串行、顺序串行
  • 数据相关(先写后读):不能并行,特殊情况下可以交换串行
  • 数据反相关(先读后写):可以并行,不能交换串行
  • 数据输出相关(写-写):可以并行,不能交换串行
  • 先写后读+先读后写:必须并行、读写要同步,不能交换串行和顺序串行

FORK JOIN

  • 题目
Z = E + A *B * C / D + F

这道题我们先通过霍纳法则进行划分,然后再看其步骤

(E + F) + [(A * B) * (C / D)]

所有可以得到步骤:
X1 = A * B
X2 = C / D
X3 = G * H
X4 = E + F
Z = X3 + X4

根据分析X1和X2并行,X3和X4并行
根据上面步骤,我们可以得到以下FORK JOIN语句:

FORK S20
S10 X1
JOIN 2
GOTO S30
S20 X2
JOIN 2
S30 FORK S50
S40 X3
JOIN 2
GOTO 60
S50 X4
JOIN 2
S60 Z

多处理机操作系统分类

  • 主从型操作系统(适用:负荷固定、功能相差大的异构多处理机)
    • 简单、经济、方便,是目前主流
    • 对主处理机可靠性要求高(单点故障率高)
  • 各自独立型操作系统(适用:松耦合多处理机)
    • 可靠性高、效率高
    • 实现复杂、各处理机负荷平衡困难、存储器利用率低
  • 浮动型操作系统(适用:紧耦合多处理机)
    • 各类资源负荷平衡、灵活性高
    • 设计最困难

数据流计算机和归约机

工作方式

  • 控制驱动:冯诺依曼型计算机
  • 数据驱动:数据流计算机
  • 需求驱动:归约机(函数式语言)

数据流计算机模型(基于异步性、函数性)

  • 数据驱动
  • 需求驱动

数据驱动

  • 按数据可用性次序进行
  • 数据就绪即可执行,是提前求值的策略

需求驱动

  • 按数据需求所决定的次序
  • 某函数需要用到数据时才驱动求值操作,是滞后求值的策略

数据流计算机的结构(根据对数据令牌处理方式不同)

  • 静态数据流计算机
    • 数据令牌没加标号
    • 不支持递归的并发激活,只支持一般的循环
  • 动态数据流计算机
    • 令牌带标记
数据流计算机存在的问题
  • 不适用于数据相关性强的场景
  • 给数据建立、识别、处理标记需要额外开销和存储空间
  • 不保存数组
  • 变量表示数值,而不是存储单元位置
  • 互联网络设计困难,I/O系统不完善
  • 没有程序计数器,诊断和维护困难
数据流计算机的进展
  • 采用提高并行性等级的数据流计算机
  • 采用同步、异步结合的数据流计算机
  • 采用控制流、数据流相结合的数据流计算机

归约机

  • 基于数据流计算机模型
  • 采用需求驱动(对数据的需求来源于函数式语言对表达式的归约)
归约机的特点
  • 面向函数式语言、或以函数式语言为机器语言的非冯诺依曼机器
  • 具有大容量物理存储器和虚拟存储器
  • 处理部分是多个处理机并行的结构
  • 采用适合于函数式程序运行的多处理机互连结构(如树形互连、多层次复合的互连)
  • 进程、数据、结点机、处理机尽量靠近
posted @ 2024-10-20 15:34  影梦无痕  阅读(190)  评论(0)    收藏  举报