slide1
Download
Skip this Video
Download Presentation
第 9 章 互连网络 和多处理

Loading in 2 Seconds...

play fullscreen
1 / 237

第 9 章 互连网络 和多处理 - PowerPoint PPT Presentation


  • 206 Views
  • Uploaded on

第 9 章 互连网络 和多处理. 7.1 互连网络的基本概念 7.2 互连网络的结构. 互连网络 是一种由开关元件按照一定的拓扑结构和控制方式构成的网络,用来实现计算机系统中结点之间的相互连接。 结点: 处理器、存储模块或其他设备。 互连网络在系统中的位置,如图所示。 在拓扑上, 互连网络为输入结点到输出结点之间的一组互连或映象。. 7.1 互连网络的基本概念. 7.1.1 互连网络的功能和特性. 7.1 互连网络的基本概念. 互连网络在系统中的位置. 7.1 互连网络的基本概念. 可以从 4 个不同的方面来描述互连网络

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第 9 章 互连网络 和多处理' - onawa


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
7.1 互连网络的基本概念

7.2 互连网络的结构

slide3
互连网络是一种由开关元件按照一定的拓扑结构和控制方式构成的网络,用来实现计算机系统中结点之间的相互连接。
    • 结点:处理器、存储模块或其他设备。
    • 互连网络在系统中的位置,如图所示。
    • 在拓扑上,互连网络为输入结点到输出结点之间的一组互连或映象。

7.1 互连网络的基本概念

7.1.1 互连网络的功能和特性

slide4
7.1 互连网络的基本概念

互连网络在系统中的位置

slide5
7.1 互连网络的基本概念
  • 可以从4个不同的方面来描述互连网络
    • 定时方式:有同步和异步两种。
      • 同步系统:使用一个统一的时钟。

SIMD阵列处理机就属于这一种类型。

      • 异步系统:没有统一的时钟,系统中的各个处理机都是独立地工作。
    • 交换方法:有线路交换和分组交换两种。
      • 线路交换:源结点和目的结点之间的物理通路在整个数据传送期间一直保持连接。
      • 分组交换:把信息分割成许多组(又称为包),将它们分别送入互连网络。
slide6
7.1 互连网络的基本概念
      • 这些数据包可以通过不同的路径传送,到达目的结点后再拼合成原来的数据。
      • 结点之间不存在固定连接的物理通路。
  • 控制策略:有集中式和分散式两种
    • 集中控制方式:有一个全局的控制器接收所有的通信请求,并由它设置互连网络的开关连接。
    • 分散控制方式:不存在全局的控制器,通信请求的处理和开关的设置由互连网络分散地进行。
slide7
7.1 互连网络的基本概念
  • 拓扑结构:有静态和动态两种。
    • 静态拓扑结构:在各结点之间有专用的连接通路,且在运行过程中不能改变。
    • 动态拓扑结构:可根据需要设置互连网络中的开关,从而对结点之间的连接通路进行重新组合,实现所要求的通信模式。
slide8
7.1 互连网络的基本概念

7.1.2 互连函数

变量x:输入(设x=0,1,…,N-1)

函数f(x):输出

通过数学表达式建立输入端与输出端的一一对应关系。即在互连函数f的作用下,输入端x连接到输出端f(x)。

  • 互连函数反映了网络输入数组和输出数组之间对应的置换关系或排列关系。

(有时也称为置换函数或排列函数)

slide9
7.1 互连网络的基本概念
    • 互连函数f(x)有时可以采用循环表示

即:(x0 x1 x2… xj-1)

表示: f(x0)=x1,f(x1)=x2,…,f(xj-1)=x0

j称为该循环的长度。

几种常用的基本互连函数及其主要特征:

  • 交换函数
    • 交换函数:实现二进制地址编码中第k位互反的输入端与输出端之间的连接。
slide10
7.1 互连网络的基本概念
  • 主要用于构造立方体互连网络和各种超立方体互连网络。
  • 它共有n=log2N种互连函数。

(N为结点个数)

  • 当N=8时,n=3,可得到常用的立方体互连函数:
slide11
7.1 互连网络的基本概念
  • 变换图形

N=8 的立方体交换函数

slide13
7.1 互连网络的基本概念
  • 均匀洗牌函数
    • 均匀洗牌函数:将输入端分成数目相等的两半,前一半和后一半按类似均匀混洗扑克牌的方式交叉地连接到输出端(输出端相当于混洗的结果)。
      • 函数关系

即把输入端的二进制编号循环左移一位。

slide14
7.1 互连网络的基本概念
  • N=8的均匀洗牌和逆均匀洗牌函数

N=8 的均匀洗牌和逆均匀洗牌函数

slide15
7.1 互连网络的基本概念
    • 逆均匀洗牌函数:将输入端的二进制编号循环右移一位而得到所连接的输出端编号。
      • 互连函数

逆均匀洗牌是均匀洗牌的逆函数

  • 碟式函数
    • 蝶式互连函数:把输入端的二进制编号的最高位与最低位互换位置,便得到了输出端的编号。
slide16
7.1 互连网络的基本概念
  • 反位序函数
    • 反位序函数:将输入端二进制编号的位序颠倒过来求得相应输出端的编号。
      • 互连函数
      • 对于N=8的情况,B(x)函数等于R(x)函数。
slide17
7.1 互连网络的基本概念
  • N=8的蝶式函数的变换图形

N=8 的碟式函数和反位序函数

slide18
7.1 互连网络的基本概念
  • PM2I函数
    • PM2I函数:一种移数函数,它是将各输入端都循环移动一定的位置连到输出端。
    • 互连函数

PM2+i(x) = x+2i mod N

PM2-i(x) = x-2i mod N

其中:

0≤x≤N-1,0≤i≤n-1,n=log2N,N为结点数。

    • PM2I互连网络共有2n个互连函数。
slide19
7.1 互连网络的基本概念
  • 当N=8时,有6个PM2I函数:
    • PM2+0:(0 1 2 3 4 5 6 7)
    • PM2-0:(7 6 5 4 3 2 1 0)
    • PM2+1:(0 2 4 6 )(1 3 5 7)
    • PM2-1:(6 4 2 0)(7 5 3 1)
    • PM2±2:(0 4)(1 5)(2 6)(3 7)
slide21
阵列计算机ILLIAC Ⅳ

采用PM2±0和PM2±n/2构成其互连网络,实现各处理单元之间的上下左右互连 。

用移数函数构成ILLIAC Ⅳ 阵列机的互连网络

slide22
7.1 互连网络的基本概念

7.1.3 互连网络的特性参数

  • 网络通常是用有向边或无向边连接有限个结点的图来表示。
  • 互连网络的主要特性参数有:
    • 网络规模:网络中结点的个数。

表示该网络所能连接的部件的数量。

    • 结点度:与结点相连接的边数(通道数),包括入度和出度。
      • 进入结点的边数称为入度。
      • 从结点出来的边数称为出度。
slide23
7.1 互连网络的基本概念
  • 距离:对于网络中的任意两个结点,从一个结点出发到另一个结点终止所需要跨越的边数的最小值。
  • 网络直径:网络中任意两个结点之间距离的最大值。

网络直径应当尽可能地小。

  • 结点之间的线长:两个结点之间连线的长度,用米、千米等表示。
  • 等分宽度:当某一网络被切成相等的两半时,沿切口的边数(通道数)的最小值称为通道等分宽度,用b表示。
slide24
7.1 互连网络的基本概念
    • 线等分宽度:B=b×w
    • 其中:w为通道宽度(用位表示)。
    • 该参数主要反映了网络最大流量。
  • 对称性:从任何结点看到的拓扑结构都是相同的网络称为对称网络。

对称网络比较容易实现,编程也比较容易。

slide25
7.2 互连网络的结构

互连网络通常可以分为两大类:

  • 静态互连网络

各结点之间有固定的连接通路且在运行中不能改变的网络。

  • 动态互连网络

由交换开关构成、可按运行程序的要求动态地改变连接状态的网络。

下面介绍几种静态互连网络。

(其中:N表示结点的个数)

7.2.1 静态互连网络

slide26
7.2 互连网络的结构
  • 线性阵列一种一维的线性网络,其中N个结点用N-1个链路连成一行。
  • 端结点的度:1
  • 其余结点的度:2
  • 直径:N-1
  • 等分宽度b=1
slide28
7.2 互连网络的结构

2. 环和带弦环

用一条附加链路将线性阵列的两个端点连接起来而构成。可以单向工作,也可以双向工作。

  • 对称
  • 结点的度:2
  • 双向环的直径:N/2
  • 单向环的直径:N
slide29
7.2 互连网络的结构
  • 带弦环

增加的链路愈多,结点度愈高,网络直径就愈小。

slide30
7.2 互连网络的结构
  • 全连接网络
    • 结点度:15
    • 直径最短,为1。
slide31
3. 循环移数网络
  • 通过在环上每个结点到所有与其距离为2的整数幂的结点之间都增加一条附加链而构成。

N=16

  • 结点度:7
  • 直径:2
slide32
7.2 互连网络的结构
  • 一般地,如果|j-i|=2r(r=0,1,2,…,n-1,n=log2N),则结点i与结点j连接。
    • 结点度:2n-1
    • 直径:n/2
slide33
7.2 互连网络的结构

4. 树形和星形

  • 一棵5层31个结点的二叉树

一般说来,一棵k层完全平衡的二叉树有N=2k-1个结点。

    • 最大结点度:3
    • 直径:2(k-1)
  • 星形
    • 结点度较高,为N-1。
    • 直径较小,是一常数2。
    • 可靠性比较差,只要中心结点出故障,整个系统就会瘫痪。
slide36
7.2 互连网络的结构

6. 网格形和环网形

  • 网格形
    • 一个3×3的网格形网络
    • 一般来说,N=nk 个结点的k维网络的内部结点度是2k,网络直径为k(n-1)。
  • 环形网
    • 可看作是直径更短的另一种网格。
    • 将环形和网格形组合在一起,并能向高维扩展。
    • 沿阵列的每行和每列都有环形连接。
    • 一个n×n二元环网
      • 结点度:4
      • 直径:2×n/2
slide38
7.2 互连网络的结构

7. 超立方体

  • 一种二元n维立方体结构
  • 一般来说,一个二元n维立方体由N=2n个结点组成,它们分布在n维上,每维有两个结点。

例 8个结点的3维立方体

4维立方体

  • 为实现一个n维立方体,只要把两个(n-1)维立方体中相对应的结点用链路连接起来即可。共需要2n-1条链路。
  • n维立方体中结点的度都是n,直径也是n。
slide41
例6-1

用度与直径的乘积作为性能指标,分析环、二维网格和n维立方体这三种静态网络在结点数为4、16、64、256、1024和4096时的性能指标,指出哪一种网络是最好的拓扑结构。

slide42
  • 在环形网络中,度d=2,直径D=N/2,乘积为N。
  • 在网格网络中,d = 4(N>4),D = 2 (-1),乘积为8 (-1),(N = 4时的网格退化为环,d=2,乘积为4)。
  • 在立方体网络中,d=log2N,D=log2N,乘积为(log2N)2。
slide43
例6-2

对于不带环的3维网格网络,设每一维方向上有r个节点,求:

  • (1) 节点总数
  • (2) 网络的直径
  • (3) 链路总数
  • (4) 对分带宽
  • (5) 网络的度

= r3

= 3(r-1)

= 3(r-1)r2

= r2

= 6

slide44
例6-3

立方体单级网络(Cube)立方体的每一个顶点代表一个处理器,共有8个处理器,用zxy三位二进制代码予以标号,所能实现的入、出端连接如同立方体各顶点间能实现的互连一样,即每个处理器只能直接连到其二进制标号的某一位取反的其它3个处理器上。

slide45
7.2 互连网络的结构

7.2.2 动态互连网络

  • 总线
    • 一组导线和插座,用于进行与总线相连的处理机、存储模块和外围设备等之间的数据传送。
    • 每一次总线只能用于一个源(主部件)到一个或多个目的(从部件)之间的数据传送。
    • 多个功能模块之间的争用总线或时分总线。
    • 特点
      • 价格低
      • 带宽较窄
slide46
7.2 互连网络的结构
  • 一种由总线连接的多处理机系统
slide47
7.2 互连网络的结构

2. 多级互连网络

  • MIMD和SIMD计算机都使用多级互连网络MIN(Multistage Interconnection Network)
  • 一种通用的多级互连网络
    • 由a×b开关模块和级间连接构成的通用多级互连网络结构
    • 每一级都用了多个a×b开关
      • a个输入和b个输出
      • 在理论上,a和b不一定相等,然而实际上a和b经常选为2的整数幂,即a=b=2k,k≥1。
    • 相邻各级开关之间都有固定的级间连接
slide49
7.2 互连网络的结构
  • 几种常用的开关模块
slide50
7.2 互连网络的结构
  • 最简单的开关模块:2×2开关

2×2开关的4种连接方式

slide51
7.2 互连网络的结构
  • 各种多级互连网络的区别在于所用开关模块、控制方式和级间互连模式的不同。
    • 控制方式:对各个开关模块进行控制的方式。
      • 级控制:每一级的所有开关只用一个控制信号控制,只能同时处于同一种状态;
      • 单元控制:每一个开关都有一个独立的控制信号,可各自处于不同的状态;
      • 部分级控制:第i级的所有开关分别用i+1个信号控制,0≤i≤n-1,n为级数。
    • 常用的级间互连模式:

均匀洗牌、蝶式、多路洗牌、纵横交叉、立方体连接等

slide52
7.2 互连网络的结构
  • 两种多级互连网络
    • Omega网络

8×8的Omega网络

slide53
7.2 互连网络的结构
  • 一个N输入的Omega网络有log2N级,每级用N/2个2×2开关模块,共需要Nlog2N/2个开关。
  • 每个开关模块均采用单元控制方式。
  • 不同的开关状态组合可实现各种置换、广播或从输入到输出的其他连接。
slide54
7.2 互连网络的结构
  • 多级立方体网络
    • 采用二功能(直送和交换)的2×2开关和交换函数构成
    • 级间互连按从左到右的次序分别是C0、C1、C2互连函数

例如:

① 当所有开关都直送时,实现恒等变换;

② 当A、B、C、D四个开关交换、其余直送时,实现C0互连函数;

③ 当E、F、G、H四个开关交换、其余直送时,实现C1互连函数;

④ 当I、J、K、L四个开关交换、其余直送时,实现C2互连函数。

slide55
7.2 互连网络的结构

多级立方体网络

slide56
7.2 互连网络的结构
  • 通过选择不同的控制方式,可以构成不同的互连网络。

例如:采用以下3种不同的控制方式可以构成3种不同的互连网络:

① 级控制:构成交换网;

② 部分级控制:构成移数网;

③ 单元控制:构成间接二进制n方体网。

slide57
7.2 互连网络的结构

3. 交叉开关网络

  • 单级开关网络
  • 交叉点开关能在对偶(源、目的)之间形成动态连接,同时实现多个对偶之间的无阻塞连接。
  • 带宽和互连特性最好。
  • 一个n×n的交叉开关网络,可以无阻塞地实现n!种置换。
  • C.mmp多处理机的互连结构(一种交叉网络)
slide59
交叉开关crossbar
  • 非阻塞
  • 扇出:N
  • 步数:1
slide60
交叉开关的端口冲突
  • 有多个输入端的分组需要转发到同一个输出端
    • 建立队列使分组排队等待
slide61
排队方式
  • 输入队列(IQ)
  • 输出队列(OQ)
  • 虚拟输出队列(VOQ)
  • 输入与开关队列的组合(CICQ)
  • 输入与输出队列的组合(CIOQ)
slide64
P1

P2

P16

M2

M1

M16

⑵ 交叉开关网络

图6-16 处理机—存储器交叉开关

上一张

返回

2014/8/31

64

slide65
7.2 互连网络的结构

动态网络的比较

slide66
数据片

数据片

包2

包5

包3

包1

数据片

数据片

包4

数据片

顺序号

导径片

消息

7.3.1 消息的寻径 (跳过)

1.消息的格式

消息是结点间传输信息的逻辑单位。消息的组织格式如图6-36所示。

图6-36 消息的组织方法

上一张

返回

2014/8/31

66

slide67
包的长度取决于寻径方式和网络的实现方法,通常选择在64位和512位之间。由于消息的长度不可能正好是包的整数倍,所以,往往最后一个包的长度会小于选定的包长。在采用虫蚀法寻径的网络中,包还可以进一步分成片,片的大小主要取决于网

络的规模。一个256个结点的网络,常用8位作为一个片的长度。包中顺序号通常要占用1~2个片,这取决于系统在组织消息时所采用的策略,如果消息长度控制在256个包以内,那只要一个片就够了,反之就需要两个片。

2014/8/31

67

slide68
2.寻径方式

从原则上讲,信息的寻径可以分为线路交换和包交换两种基本方式。

包交换是当前数据传输中效率最高,也是使用和研究得最多的方式。

目前,常见的包交换有:存储转发、虚拟通道和虫蚀寻径三种方式。

⑴ 线路交换

一种以建立从源结点到目的结点间的直达物理通路为信息传输基础的交换方式。

图3-37表示了线路交换的信息传输过程。

上一张

返回

2014/8/31

68

slide69
结点1

TCS

结点2

D

结点3

结点4

时间

图6-37 线路交换时的开关寻径

线路交换的时延公式可以表示成:T = ( Lt / B )×D + L / B,式中的Lt是在一个结点中建立路径所需要的小信息包长度,B为带宽,D为通路上总的结点数,L为信息包的长度。

2014/8/31

69

slide70
在并行计算机中的频繁的小信息包通信的这种方式下,由于在传递一个消息之前,需要频繁地建立从源结点到目的结点的物理通路,开销将会很大,这种寻径方式与以下的几种包交换(packet switch)的寻径方式相比这是一个很大的缺点。

包交换的寻径方式以其较高的传输带宽和较低的平均传输时延,更适合于具有动态和突发特性的MPP数据传送。

slide71
结点1

TSF

D

结点2

结点3

时间

结点4

⑵ 存储转发

每个结点中有一个缓冲区,消息在传送中以信息包为单位,先按寻径信息传送到最近的结点存储,再根据寻径信息从此结点出发传至下一结点,逐段传送—存储,直至到达目的结点。存储转发方式可以根据网络各结点间的忙闲情况调整信息包的发送路径和时间,比较灵活,但是时延长是其最致命的缺点,特别是当中间结点数量大时更加突出,另外包缓冲区大,不利于VLSI实现。下图表示了存储转发方式寻径时信息包的传送过程。

存储转发寻径的时延为:T = ( L / B )×D + L / B = ( D + 1 )×L / B。

图6-38 存储转发寻径时的信息传送过程

上一张

返回

2014/8/31

71

slide72
⑶ 虚拟直通

虚拟直通(virtual cut through) 目前有一些多计算机系统采用的是虚拟直通的寻径方式。虚拟直通的寻径方式的思想是,为了减少时延,没有必要等到整个消息全部缓冲后再作路由选择,只要接收到用作寻径的消息头部即可判断。

其通信时延用公式表示为:

T = ( Lh / B )×D + L / B = ( Lh×D + L ) / B,Lh是消息的寻径头部的长度。一般来说,L>>Lh×D,所以公式可以近似为T=L/B,可以看到此时通信时延与结点数无关,这相对于存储转发的寻径方式来说是一个非常大的改进。

上一张

返回

2014/8/31

72

slide73
当出现寻径阻塞时,虚拟直通方式只有将整个消息全部存储在寻径结点中,直到寻径通道不阻塞时才能将消息发出,这就需要每个寻径结点都有足够的缓冲区来存储可能出现的最大的信息包,在这一点上,虚拟直通方式与存储转发的寻径方式是一样的,同样不利于VLSI的实现。因此,虚拟直通方式在最坏的情况下与存储转发方式的通信时延是一样的。由此出现了下面将要讨论的新的寻径方式虫蚀寻径方式,它改进了以上提到的缺点。
slide74
中间结点

R/A

R/A

R/A

目的结点N4

源结点N0

N2

N3

⑷ 虫蚀寻径

虫蚀寻径是现代多计算机系统中采用的一种先进寻径方法。在这种方法中,系统将信息包划分成更小的片(Flit),且在每个结点中也设立片缓冲器。

虫蚀通信方式

上一张

返回

2014/8/31

74

slide75
为了实现上述一个包内相继片的异步流水操作, 采用如图所示的握手协议。
  • 沿着路径,相邻寻径器之间有一根一位的就绪/请求(R/A)线。当接收寻径器(D)就绪时如图(a)所示,就可以接收一片,就是片缓冲区可用了,R/A线的电平变低。
  • 当发送的寻径器(S)就绪时,如图(b)所示,R/A线的电平变高并通过通道传送片i。
  • 当D正在接收片时,如图(c)所示,R/A线保持高电平。
  • 当片i从 D的缓冲区移走后(即传送到下一个结点), 如图(d)所示,重复上述操作过程以便传送片i+1,直到整个包都被接收。
slide78
同一个包中所有的片象不可分离的同伴一样以流水方式顺序地传送。包可以看作是一列火车,由火车(头片)和被牵引的车厢(数据片)组成。

  只有头片知道包将发往何处。所有的数据片必须跟着头片。不同的包可以交替地传送,但不同包的片不能交叉,否则它们可能被送到错误的目的地。

  用头片直接开辟一条以输入链路到输出链路的路径的方法来进行操作。每个消息中的片以流水方式在网络中向前"蠕动"。每个片相当于虫的一个节,"蠕动"是以节为单位顺序地向前爬行。

slide79
当消息的头片到达一个结点A的寻径器后,寻径器根据头片的寻径消息立即做出路由选择:

  如果所选择的通道空闲且所选择的结点B的片缓冲区可用,那么这个头片就不必等待,直接通过结点A传向下一个结点B。随后的其它数据片跟着相应地向前"蠕动"一步。当消息的尾片向前"蠕动"一步之后,它刚才所占有的结点就被放弃了。

  如果所选择的通道忙或所选择的结点的片缓冲区不可用时,那么这个头片就必须在该结点的片缓冲区中等待,直到上述两者都可用时为止,其它数据片也在原来的结点上等待。此时,被阻塞的消息不从网络中移去,片也不放弃它所占有的结点和通道。

slide80
全部通信的延时公式为:

T = Tf×D + L / B = ( Lf / B )×D + L / B = ( Lf×D + L ) / B。

式中,Lf是片的长度,Tf是一个片经过一个结点所需的时间。通常,Lf×D总是远小于L,所以可以认为:T = L / B,即延时长短与结点数的多少基本无关。

2014/8/31

80

slide81
可以看出,虫蚀寻径有以下的优点:
  •    每个结点的缓冲区较小,易于VLSI实现。
  •    较低的网络传输时延。所有的片以流水方式向前传输,采用了时间并行性。而存储转发方式的消息包整个地从一个结点"跳"到另一个结点,通道的使用是串行的,所以它的传输时延基本上正比于消息在网络中传输的距离。虫蚀寻径方式的网络传输时延正比于消息包的长度,传输距离对它的影响很小。
  •    通道共享性好,利用率高,对通道的预约和释放是结合在一起的一个完整的过程,有一段新的通道后将立即放弃用过的一段旧通道。
  •    易于实现选播和广播通信方式。允许寻径器复制消息包的片并把它们从其多个输出通道输出。
slide82
然而虫蚀寻径方式也有缺点,当消息的一个片被阻塞时,整个消息的所有片都将被阻塞在所在结点,占用了结点资源,因此需要采用虚拟通道的方式来避免由此引起的一连串的阻塞。

  虫蚀寻径方式也可以分为无缓冲和有缓冲两类,区别在于缓冲的大小。缓冲大有利于性能的提高,但会增加结点的复杂度。

IBM SP2采用的寻径方式就是带缓冲的虫蚀寻径方式,它采用共享的存储区来对输入/输出消息进行缓冲。

slide83
例:交换开关的设计

网络设计最终要归结到交换开关的设计和如何将交换开关连接起来。交换开关的度、内部的选路机制和内部的缓冲策略决定了能支持什么样的网络拓扑和选路算法。在本章前面的网络部件部分,我们已经描述了交换开关的基本结构(如图3.3),现在我们详细的来看一下交换开关的设计。

slide84
4.6.1端口

交换开关的引脚数目是输入和输出端口的总数乘以通道宽度。相对于芯片面积来说,芯片周长增长缓慢,因此交换开关引脚数目受到限制。由于高速串行连接使用最少的引脚,并且消除了在通道的不同位线之间歪斜(Skew)的问题,因此很受欢迎。但其主要缺点是,时钟和所有的控制信息都必须在串行位流的帧内进行编码。使用并行连接,需要有一根线专门用来传递时钟信号。另外,流量控制可以通过另外一根提供准备/确认(Ready/Acknowledge)握手信号的线来实现。

slide85
4.6.2内部数据路径

数据路径是输入端口和输出端口之间的通路,虽然它可以用许多方法来实现,但通常是指内部的(纵横)交叉开关在一个非阻塞交叉开关中,每个输入端口能以任何置换次序连向一个独立的输出端口。如图4.20(a),从逻辑上来说,一个n×n交换开关的非阻塞交叉开关无非是一个与每个目标相关的n-路多路复用器。依赖于底层技术,多路复用器可以用不同的方法来实现。例如,采用VLSI技术,典型的实现是采用如4.20(b)所示的n个3态驱动电路形成单个总线。在这种情况下,对于每个输出端口,控制通路提供n个使能点。另外,还有一种使用得很普遍的技术是利用内存来实现交叉开关,如图4.20(c)所示,通过输入端口向里写,输出端口向外读。

slide87
4.6.3通道缓冲区

交换开关中缓冲区的组织对性能影响很大。传统的路由器和交换开关设计,常常在交换开关组织(Fabric)外设置很大的SRAM或DRAM,但在VLSI设计中,缓冲区在交叉开关内部,与数据通路和控制部分一样占据硅片。缓冲区设置有四种基本选择:不设置缓冲区、在输入端设置缓冲区、在输出端设置缓冲区和设置一个集中的共享缓冲池。

slide88
1.输入端缓冲

一种方法是在每个输入端口提供独立的FIFO缓冲区,如图4.21所示。每个缓冲区在一个时钟周期内接收一个节片,并向输出端口发送一个节片。这样一来,交换开关的内部带宽就能很容易匹配进来的数据流。交换开关的操作相对简单,它监控每个输入FIFO队列的头,计算出每个要去的输出端口,然后调度相应信包通过交叉开关。选路逻辑与每个输入端口相关,用来决定想要去的输出端口。

slide89
如果是算术选路,每个输入端口需要一个算术单元;

如果是查表选路,每个输入端口需要一个选路表;

如果是切通选路,选路逻辑不需要每个时钟周期都作出决定,只需要对每个信包作决定即可。

实际上,选路逻辑是个有限状态机,在信包的边界作出新的路由决定之前,将同一个信包的所有数据片送到同一个输出通道。

slide91
然而这种简单的输入端缓冲方法会形成一个“排头”(Head-Of-Line)阻塞问题。例如,如果两个输入端口都有信包要传到同一个输出端口,其中一个将会被调度输出,另一个将会被阻塞。可是,在被阻塞的信包后面的信包,可能是要传到一个没有被使用的输出端口,但是它却不能被传输。“排头”阻塞对通道利用率会有很大影响。
slide92
2.输出缓冲

我们需要对交换开关作的基本改进是解决在每个输入端口有多个信包等待传到输出端口的情况。如图3.42所示,一种方法是扩展输入FIFO队列,为每个输出端口设置独立的缓冲区,这样一来,信包在到达时就按目的端口排序了。假如输入端口通信流稳定的话,输出端能100%驱动。尽管这种设计有很大好处,但是代价也很高,需要额外的缓冲区和复杂的内部连接,并且需要一个排序阶段和更宽的多路复用器。这些可能会导致交换开关的时钟周期变长,或者增加了选路延迟。

slide93
图4.22中缓冲区是与输入端口还是与输出端口相关完全是一个视角问题。如果看作是输出端口缓冲区,主要特点是在一个时钟周期内,每个输出端口有足够的内部带宽来从每个输入端口接收一个信包。这些也能够用一个单个的输出FIFO来实现,只不过它要求队列的内部时钟速率要比输入端口的时钟速率快n倍。
slide95
3.共享池

使用共享池(Shared Pool),每个输入端口都将数据放到一个集中的内存中,每个输出端口从那里读数据。这种方法不会出现“排头”阻塞问题,因为只要有空间,每个输入端口都能向共享池写数据,而不管是传到哪个输出端口。这种方法的一个问题是如何将n个输入端口的带宽匹配n个输出端口的带宽。一种办法是使连到共享池的内部数据通路的宽度是链路的2n倍,每个输入端口在写入共享池之前缓存2n节片,每个输出端口一次取得2n节片。共享池通常采用SRAM。

slide96
4.虚拟通道缓冲

虚拟通道提供了另一种组织交换开关内部缓冲区的方法。在前面选路部分,我们介绍了一组虚拟通道使得多个独立的信包能够通过同一个物理链路。如图3.34所示,为了支持虚拟通道,通过链路的数据流在到达输入端口时被分解后放到独立的通道缓冲区中。在通过交叉开关之前或者之后,被重新合并后进入输出端口。如果一个虚拟通道被阻塞,则其他的虚拟通道还能继续通向输出端口。尽管有可能所有的虚拟通道都选路到同一个输出端口,但是期望的输出端口覆盖率(Expected Coverage of Outputs)会好得多。

slide97
4.6.4 输出调度

在交换开关设计中还有一个主要的部分是调度算法,它决定在每个时钟周期选择要传送的信包。解决输出调度问题也有多种方法。一种简单的方法是将调度问题看作是n个仲裁问题,每个输出端口一个。如图4.23所示,每个输入缓冲区都有请求线连向每个输出端口,且每个输出端口有一根授予(Grant)线连到输入缓冲区。选路逻辑计算出欲发送到的输出端口,并置位(Assert)跟选定的输出图端口相连的请求线。输出端口调度逻辑在这些请求之间进行仲裁,选出一个并置位相应的授予信号线。然后,选中的输入缓冲逻辑就开始传送它的信包。

slide98
另一个设计问题是选择什么样的仲裁算法?

有多种方法可供选择,包括静态优先权、随机法和轮转法等。每种方法都有不同的性能特征和实现复杂度。

静态优先权法实现最简单,只需要用一个简单的优先权编码器。然而在一个很大的网络里,可能会造成不确定的延迟。一般来说,给每个输入端口提供公平服务的调度算法性能会更好。轮转法需要一个额外的位,在每个时钟周期改变优先级的次序。

slide99
4.7 实例研究

现以IBM SP-1、SP-2网络为例进行实例研究。IBM SP-1和SP-2并行机中互连网络特点是:包交换,采用切通源选路算法,无虚拟通道。交换开关有8个双向的40MB/s端口,能够支持多种拓扑结构。

如图1所示,在SP机器中,一个机架(Rack)内将8个交换开关组织成4-路2-维的蝶形的交换开关板,该交换开关板的16个内部端口连接机柜内的16个主机节点,16个外部端口连接其他的机架。各个机器的机架间拓扑结构不一样,一般为蝶形网络的变种。

slide101
一个信包最多由255个字节构成,其中第一个字节是包长度,紧接着是一个或多个选路字节,最后是数据信息。每个选路字节包含2个3-位输出说明符和一个选择器位。链路是同步的、宽的、长的。所有交换开关由40-MHz时钟驱动。链路由10根线组成,其中8根数据线,一个帧“标记”控制位,一个反向的流量控制位。因此,每个节片是一个字节。帧“标记”控制位用来确认长度和选路节片。数据片是2个字节;两个时钟周期用来发信号以表示在接收端缓冲区中是否有两个字节的空闲存储空间。在任何时刻,一个数据/标记流能够沿着链路一个方向传播,而一个信用令牌流则沿着相反方向传播。
slide102
交换开关在每个输入端口提供一个31字节的FIFO缓冲区,允许链路为16个节片长。此外,在每个输出端口设置7个字节的FIFO缓冲区,并且提供一个能容纳128个8-字节块(Chunk)的集中共享队列。如图2所示,交换开关利用一个无缓冲字节串行的交叉开关和一个位双端口RAM来作为输入和输出端口之间的连接。在信包的2个字节到达输入端口后,输入端口控制逻辑就请求想要的输出端口。如果输出端口空闲,则信包直接切通交叉开关到达输出端口,这样的选路延迟最小,仅为每个交换开关5个时钟周期。如果输出端口不空闲,则将包放入到输入FIFO队列。
slide104
如果输出端口继续阻塞,则将信包放入到集中队列的8字节块中。由于集中队列在每个时钟周期能接受一个8字节的输入或者输出,因此它的带宽能够匹配交换开关的8字节的串行输入和输出端口。内部实现时,集中队列可以组织成8个FIFO的链接列表,每个输出端口一个,并且利用的RAM来存放这些链接表。为每个输出端口保留了一个8-字节的块。因此,当负载轻的时候,交换开关以字节-串行的方式运行;当有竞争的时候,就通过集中队列来分时复用8-字节的块,这时输入就作为一个集中器(Deserializer),而输出作为一个串行器(Serializer)。
slide105
每个输出端口以LRU方式来选择请求,并且同时考虑到集中队列中块的优先权要高于输入端口的FIFO队列中的字节。集中队列也以LRU方式来服务输出端口,并且在服务输入端口时,优先选择那些它的“块”的目标输出端口不阻塞的输入端口。

SP网络有两个特殊的地方。首先,它的操作是全局同步的,时间被划分成64周期的“帧”。它的信包中不包含CRC信息(错误校验信息),而是在每个帧的最后两个节片中携带CRC。输入端口检查CRC,而输出端口产生CRC信息。其次,为了诊断的需要,交换开关支持一种电路交换的“服务模式”。在改变模式之前,网络中的信包应该全部被传输完毕。

slide107
SIMD计算机

单指令流多数据流(SIMD)计算机在同一个控制单元的控制下,由多个处理单元组成的阵列同时执行相同的操作,所以这种计算机又可以称为阵列计算机,或并行计算机。

slide108
SIMD与向量计算机的区别:

在向量计算机中,同一条指令可以连续地处理一个数据组,而这些数据是以流水线的方式通过处理机,即采用一种时间复用的方式,而在SIMD计算机中,通过大量处理单元对向量中包含的各分量同时进行处理,也就是说,SIMD是通过硬件资源的重复设置来实现并行运算的,即采用空间复用方式。

slide109
阵列机

CU

PE

M

IN

N个

M个

7.2 SIMD并行计算机(阵列处理机)

--细粒度并行性开发主要采用SIMD方式

1.阵列机的基本结构

PE/PE和M间实现通信连接

指令广播给PE

活跃的PE同步地执行指令

slide110
存储器:存放系统/用户程序,共享数据

运算部件:执行标量/控制指令

CU

指令

CU

PE0

活跃PE

非活跃PE

PEn-1

P0

Pn-1

M0

Mn-1

IN

2.阵列机的分类

  • 分类依据

存储器模块是分布式/集中式存取

  • 分布式存储器的阵列机

对指令译码,判断它在何处执行

向量指令

数据对象

PE间数据交换,单向性

slide111
指令

CU

PE0

PE1

PEn-1

IN

数据对象

M0

M1

Mm-1

  • 集中式存储器的阵列机

每个PE没有局存,存储器模块以集中形式通过IN为所有PE共享

PE、M间的数据交换通路,双向性

3. 阵列机的特征

屏蔽方式集合,

C=

PE数

指令集,进行标/向量,数据传送通路操作,网络变换操作

确定互连网络结构及连接拓扑的参数

slide112
4. 阵列机的主要特点

相同的PE

  • 利用资源重复(空间因素)而非时间重叠;
  • 利用同时性而非并发性。每个PE在同一时
  • 刻同等地担负起运算功能;
  • 提高运算速度靠增大PE个数,比向量流水
  • 线处理机靠缩短时钟周期,速度提高的潜
  • 力大得多;
  • 使用简单、规整的IN确定多个PE间的连接
  • 模式;
  • 阵列机研究+并行算法研究,使之适应性更
  • 强,应用面更广;
  • 异构型多处理机(PE+CU+前端机)。

同构型并行机

slide113
阵列机通过各种途径把数据转化为对数组/
  • 向量的处理,利用多个处理单元对向量/数
  • 组包含的各分量同时运算,易于获得很高
  • 的处理速度。
slide114
I(i,j+1)

I(i+1,j+1)

I(i-1,j+1)

I

I(i,j)

S(i,j)

I(i-1,j)

I(i+1,j)

512*512

512*512

I(i,j)

I(i-1,j-1)

I(i+1,j-1)

I(i,j-1)

5. 阵列机的并行算法

①图象平滑化算法

平滑输入图象的灰度级(表示象素的黑色

程度,0—白色,255—黑色)

输出图象

S

输入图象

=I(i,j)和8个最邻近的象素的灰度级的平均值

slide115
512象素

PE0 PE1 PE31

PE32 …

PE992 … PE1023

512象素

16象素

PEJ

16象素

32*32

  • 数据分配

并行处理完成的平滑操作:

16*16=256次

串行处理完成的平滑操作:

512*512=262144次

∴并行算法比串行算法快:

262144/256=1024倍

slide116
1象素

1象素

16象素

PEJ

16象素

16象素

16象素

1象素

1象素

  • PE间数据传送

并行数据元素的传送数:

4*16+1*4=68次

计入PE间传送的时间,设每次并行数据传送时间相当于1次平滑操作时间,则改进倍数:

262144/(256+68)=809倍

slide117
PE 值 步1 步2 步3

0 A0 A0+A1 A0+A1+A2+A3 A0+A1+…+A7

1 A1

2 A2 A2+A3

3 A3

4 A4 A4+A5 A4+A5+A6+A7

5 A5

6 A6 A6+A7

7 A7

求累加和的过程,并非每个处理器始终参加运算

②递归折叠方法

例:求向量元素累加和。某向量含N个向量元素,

求这些元素的累加和。

(1)单机中的串行方法

N-1次加法

(2)递归折叠方法

slide118
PE0

PEM0

PE63

PEM63

累加器

操作数寄存器

数据路由寄存器

通用寄存器

变址寄存器

方式寄存器:存放PE屏

蔽信息

APPA网

I/O

前端机B6500

PE

CU

4.典型SIMD计算机举例

①ILLIAC-IV阵列机

美国宝来公司和伊利诺斯大学于1965年研制,1972年由宝来公司生产

分布式共享存储器的SIMD并行计算机代表。

宿主机

统一控制

2K,字长:64位

64个PE

slide119
i-8

PE0

PE0

PE0

i-1

i

i+1

PE0

PE0

PE0

i+8

PE0

PE0

PE0

  • PE间的互连

闭螺线阵列

互连网络适合求解偏微分方程、矩阵运算

slide120
优缺点

结构上简单,但每个PE连接度不高,灵

活性差;分布式存储结构,对PE中的数据分

配要求较严。

  • 应用范围

天气预报、核工程等领域

②BSP计算机

1979年,宝来公司和伊利诺斯大学研制

集中式共享存储器的SIMD并行计算机代表。

特点:资源重复+时间重复

slide121
17个MM

写入

读出

对准网络NW2

对准网络NW1

CU

全交叉开关网络

16个PE

  • 流水线结构

错开存放数据

5级流水线

512KW

PE结果从原正常次序转换后,以错开方式写入MM

使MM读出的错开存放的数据转换成正常次序

保证多模块存储器的无冲突访问

正常次序排列,处理数据

slide122
SIMD并行计算机的性能与算法相关,串行算法
  • 不能发挥其并行处理能力;
  • 求解过程,并非每个PE始终参与运算,CU借助
  • 屏蔽方法使不参加运算的PE处于不活跃状态;
  • 互连网络特性的好坏较大地影响求解速度;
  • 求解问题前,要将有关数据预分配到各PE的局
  • 存中。
slide123
1.一维数组

例:对地址连续的元素访问,低位交叉存放这些

元素在各个体中;

若以间距=2的跑步模式访问,会因访存冲突

降低存储器的带宽;

解决方法:将存储体分体数取成质数,且与

跑步距离互质,可实现无冲突访问;

slide124
存储体号

0 1 2 3 4

a0

a1

a2

a3

a4

a5

a6

a7

a8

a9

a10

a11

a12

a13

a14

存储体分体数=5

例:一维数组存储

∵存储体分体数=5

∴只要跳步访问间距≠5的倍数,则

不会发生访存冲突

slide125
存储体号

0 1 2 3

a00

a01

a02

a03

a10

a11

a12

a13

4*4

a20

a21

a22

a23

a30

a31

a32

a33

2.多维数组

例:

(1)直接按行存放

不冲突

跳步访问间距=存储分体数的倍数,冲突

存储分体数=4

slide126
存储体号

0 1 2 3

a00

a01

a02

a03

a13

a10

a11

a12

4*4

a22

a23

a20

a21

a31

a32

a33

a30

存储分体数=4

(2)错位存放

--行/列采用不同的错开距离

跳步访问间距=存储分体数的倍数,冲突

不冲突

slide127
实现无冲突方法

存储体数M>每次访问的向量元素N,且为

质数,行、列等方向上采用不相同的错开距离

(d1、d2)。当模块数(存储分体数)=m,当

m=22P+1(P>0),实现的充分条件: d1=22P,

d2=1。

例:BSP中,存储模块数m=17,运算单元数

n=16(m>n),P=2( m=22P+1 ), d1= 4

(d1=22P),d2=1,可实现各种模式的无冲

突访问。

slide128
存储模块号j=a mod m

0 1 2 3 4 5 6

a00

a10

a20

a30

a01

a11

*

0123

块内地址

i= a/n

4*5

a31

a02

a12

a22

a32

*

a21

a23

a33

a04

a14

*

a03

a13

*

a24

a34

未用

*

m(存储体模块数)=7,n(运算单元数)=6

例:

错位存放:

一维线性地址空间

存储模块损失

步长≠7的倍数,不发生冲突

slide129
[例]

分别确定下列各计算机中,计算点积S=∑(i=1-8)ai*bi所

需的时间(尽可能给出时空图示意):

(1)通用PE的串行SISD系统;

(2)具有一个加法器和乘法器的多功能并行流水SISD系统;

(3)有8个处理器的SIMD系统;

(4)有8个处理器的MIMD系统。

设访存取指和取数的时间可以忽略不计;加与乘分别需要2拍和4拍;在SIMD和MIMD系统中处理器(机)之间每进行一次数据传送的时间为1拍,而在SISD的串行或流水系统中都可忽略;在SIMD系统中PE之间采用线性环形互连拓扑,即每个PE与其左右两个相邻的PE直接相连,而在MIMD中每个PE都可以和其它PE有直接的通路。

slide130
[解答]

(1)利用通用PE的串行SISD系统计算点积所需时间为46拍(8乘7加),时空图如下图所示:

slide135
8.1 引言

8.2 对称式共享存储器系统结构

8.3 分布式共享存储器系统结构

8.4 同步

8.5 同时多线程

8.6 多处理机实例

slide136
8.1 引 言

1. 单处理机系统结构正在走向尽头?

2. 多处理机正起着越来越重要的作用。近两年来,我们已经开始进入多处理机将起主要作用的新时期。

  • 期望:将来更加普及
  • 问题:
    • 如何发挥其潜在计算能力? (并行程序)
    • 应用是否具有足够的并行性?

并行计算机应用软件已有了稳定的发展。

(尽管缓慢)

并行处理已经成为重要和主流的技术。

3.本章重点:中小规模的计算机(处理器的个数<128)

(多处理机设计的主流)

slide137
8.1 引 言
  • Flynn分类法

SISD、SIMD、MISD、MIMD

  • MIMD已成为通用多处理机系统结构的选择,原因:
    • MIMD具有灵活性。
    • MIMD可以充分利用商品化微处理器在性能价格比方面的优势。

计算机机群系统(cluster)是一类广泛被采用的MIMD计算机。

8.1.1 并行计算机系统结构的分类

slide138
8.1 引 言
  • 根据系统中处理器个数的多少,可把现有的MIMD计算机分为两类:

(每一类代表了一种存储器的结构和互连策略)

    • 集中式共享存储器结构 动画
      • 最多由几十个处理器构成。
      • 通过大容量的Cache和总线互连使各处理器共享一个单独的物理存储器。

这类计算机有时被称为

      • SMP计算机

(Symmetric shared-memory MultiProcessor)

      • UMA计算机(Uniform Memory Access)
slide139
8.1 引 言

对称式共享存储器多处理机的基本结构

slide140
8.1 引 言
  • 分布式存储器结构 动画
    • 每个结点包含:
      • 处理器
      • 存储器
      • I/O
      • 互连网络接口
    • 在许多情况下,分布式存储器结构优于集中式共享存储器结构。
slide142
8.1 引 言
  • 分布式存储器结构的优点
    • 如果大多数的访问是针对本结点的局部存储器,则可降低对存储器和互连网络的带宽要求。
    • 对局部存储器的访问延迟低。
  • 最主要的缺点
    • 处理器之间的通信较为复杂,且各处理器之间访问延迟较大。
  • 簇:超级结点
    • 每个结点内包含个数较少(例如2~8)的处理器;
    • 处理器之间可采用另一种互连技术(例如总线)相互连接形成簇。
slide143
8.1 引 言

8.1.2 通信模型和存储器的结构模型

  • 地址空间的组织方案(两种)
    • 共享地址空间
      • 物理上分离的多个存储器作为一个逻辑上共享的存储空间进行编址。
      • 任何一个处理器可以访问该共享空间中的任何一个单元(如果它具有访问权),而且不同处理器上的同一个物理地址指向的是同一个存储单元。
      • 这类机器的结构被称为

分布式共享存储器结构

(DSM: Distributed Shared-Memory)

NUMA机器 (NUMA: Non-Uniform Memory Access)

slide144
8.1 引 言
    • 整个地址空间由多个独立的地址空间构成,它们在逻辑上也是独立的,远程的处理器不能对其直接寻址。
      • 每一个处理器-存储器模块实际上是一台单独的计算机
      • 现在的这种机器多以集群的形式存在
  • 两种通信机制
    • 共享地址空间的机器

利用load和store指令中的地址隐含地进行数据通信。

    • 多个地址空间的机器

通过处理器间显式地传递消息来完成。

(消息传递多处理机)

slide145
8.1 引 言
  • 消息传递计算机通过传递消息来请求某些服务或传输数据,从而完成通信。

例如:一个处理器要对远程存储器上的数据进行访问或操作:

    • 发送消息,请求传递数据或对数据进行操作;

远程进程调用(RPC,Remote Process Call)

    • 目的处理器接收到消息以后,执行相应的操作或代替远程处理器进行访问,并发送一个应答消息将结果返回。
  • 同步消息传递

请求处理器发送一个请求后一直要等到应答结果才继续运行。

slide146
8.1 引 言
      • 异步消息传递

发送方不经请求就直接把数据送往数据接收方。

  • 通信机制的性能指标(3个)
    • 通信带宽

理想状态下的通信带宽受限于处理器、存储器和互连网络的带宽。

    • 通信延迟

理想状态下通信延迟应尽可能地小。

通信延迟=发送开销+跨越时间+传输延迟+接收开销

      • 跨越时间:数字信号从发送方的线路端传送到接收方的线路端所经过的时间。
      • 传输时间:全部的消息量除以线路带宽。
slide147
8.1 引 言
    • 通信延迟的隐藏
      • 如何才能较好地将通信和计算或多次通信之间重叠起来,以实现通信延迟的隐藏。
      • 通常的原则:只要可能就隐藏延迟。
      • 通信延迟隐藏是一种提高性能的有效途径,但它对操作系统和编程者来讲增加了额外的负担。
  • 不同通信机制的优点
    • 共享存储器通信的主要优点
      • 与常用的对称式多处理机使用的通信机制兼容。
      • 易于编程,同时在简化编译器设计方面也占有优势。
slide148
8.1 引 言
    • 当通信数据量较小时,通信开销较低,带宽利用较好。
    • 通过硬件控制的Cache减少了远程通信的频度,减少了通信延迟以及对共享数据的访问冲突。
  • 消息传递通信机制的主要优点
    • 硬件较简单。
    • 通信是显式的,因此更容易搞清楚何时发生通信以及通信开销是多少,以便编程者和编译程序设法减少通信开销。
slide149
8.1 引 言
  • 可在支持上面任何一种通信机制的硬件模型上建立所需的通信模式平台。
    • 在共享存储器上支持消息传递相对简单。
    • 在消息传递的硬件上支持共享存储器就困难得多。所有对共享存储器的访问均要求操作系统提供地址转换和存储保护功能,即将存储器访问转换为消息的发送和接收。
slide150
8.1 引 言

并行处理面临着两个重要的挑战

  • 程序中的并行性有限
  • 相对较高的通信开销

8.1.3 并行处理面临的挑战

系统加速比 =

slide151
8.1 引 言
  • 第一个挑战

有限的并行性使机器要达到好的加速比十分困难。

例8.1假设想用100个处理器达到80的加速比,求原计算程序中串行部分最多可占多大的比例?

解Amdahl定律为

由上式可得,并行比例=0.9975

slide152
8.1 引 言

2. 第二个挑战:多处理机中远程访问的延迟较大

  • 在现有的计算机中,处理器之间的数据通信大约需要100~1000个时钟周期。
  • 主要取决于:

通信机制、互连网络的种类和计算机的规模

  • 在几种不同的共享存储器并行计算机中远程访问一个字的典型延迟
slide154
8.1 引 言

例8.2假设有一台32个处理器的多处理机,对远程存储器访问时间为400 ns。除了通信以外,假设所有其他访问均命中局部存储器。当发出一个远程请求时,本处理器挂起。处理器的时钟频率为1 GHz,如果指令基本的IPC为2(设所有访存均命中Cache),求在没有远程访问的情况下和有0.2%的指令需要远程访问的情况下,前者比后者快多少?

slide155
8.1 引 言

解 没有远程访问时,机器的CPI为 1/基本IPC=1/2=0.5

有0.2%远程访问的机器的实际CPI为

CPI=基本CPI+远程访问率×远程访问开销

=0.5+0.2%×远程访问开销

远程访问开销为

远程访问时间/时钟周期时间=400 ns/1 ns=400个时

钟周期

∴ CPI=0.5+0.2%×400=1.3

因此在没有远程访问的情况下的计算机速度是有0.2%远程访问的计算机速度的1.3/0.5=2.6倍。

slide156
8.1 引 言
    • 问题的解决
      • 并行性不足: 采用并行性更好的算法
      • 远程访问延迟的降低:靠系统结构支持和编程技术
  • 在并行处理中,影响性能(负载平衡、同步和存储器访问延迟等)的关键因素常依赖于:

应用程序的高层特性

如数据的分配,并行算法的结构以及在空间和时间上对数据的访问模式等。

    • 依据应用特点可把多机工作负载大致分成两类:
      • 单个程序在多处理机上的并行工作负载
      • 多个程序在多处理机上的并行工作负载
slide157
8.1 引 言
  • 并行程序的计算/通信比率
    • 反映并行程序性能的一个重要的度量:

计算与通信的比率

    • 计算/通信比率随着处理数据规模的增大而增加;随着处理器数目的增加而降低。
slide158
多个处理器共享一个存储器。
  • 当处理机规模较小时,这种计算机十分经济。

教材中图8.1是这种计算机的一个简单示意图。

  • 支持对共享数据和私有数据的Cache缓存

私有数据供一个单独的处理器使用,而共享数据则是供多个处理器使用。

  • 共享数据进入Cache产生了一个新的问题

Cache的一致性问题

8.2 对称式共享存储器系统结构

slide159
8.2 对称式共享存储器系统结构
  • 不一致产生的原因(Cache一致性问题)
    • I/O操作

Cache中的内容可能与由I/O子系统输入/输出形成的存储器对应部分的内容不同。

    • 共享数据

不同处理器的Cache都保存有对应存储器单元的内容。

例两个处理器的读写

8.2.1 多处理机Cache一致性

slide160
8.2 对称式共享存储器系统结构

由两个处理器(A和B)读写引起的Cache一致性问题

slide161
8.2 对称式共享存储器系统结构
  • 存储器的一致性(非正式定义)

如果对某个数据项的任何读操作均可得到其最新写入的值,则认为这个存储系统是一致的。

    • 存储系统行为的两个不同方面
      • What:读操作得到的是什么值
      • When:什么时候才能将已写入的值返回给读操作
    • 需要满足以下条件
      • 处理器P对单元X进行一次写之后又对单元X进行读,读和写之间没有其他处理器对单元X进行写,则P读到的值总是前面写进去的值。
slide162
8.2 对称式共享存储器系统结构
    • 处理器P对单元X进行写之后,另一处理器Q对单元X进行读,读和写之间无其他写,则Q读到的值应为P写进去的值。
    • 对同一单元的写是顺序化的,即任意两个处理器对同一单元的两次写,从各个处理器的角度看来顺序都是相同的。(写顺序化 )
  • 在后面的讨论中,我们假设:
    • 直到所有的处理器均看到了写的结果,这个写操作才算完成;
    • 处理器的任何访存均不能改变写的顺序。就是说,允许处理器对读进行重排序,但必须以程序规定的顺序进行写。
slide163
8.2 对称式共享存储器系统结构

在一致的多处理机中,Cache提供两种功能:

  • 共享数据的迁移

降低了对远程共享数据的访问延迟,也减少了对共享存储器带宽的要求。

  • 共享数据的复制

不仅降低了访存的延迟,也减少了访问共享数据所产生的冲突。

一般情况下,小规模多处理机采用硬件的方法来实现Cache的一致性。

8.2.2 实现一致性的基本方案

slide164
8.2 对称式共享存储器系统结构
  • Cache一致性协议

在多个处理器中用来维护一致性的协议。

    • 关键:跟踪记录共享数据块的状态
    • 两类协议(采用不同的共享数据状态跟踪技术)
      • 目录法(directory)

物理存储器中共享数据块的状态及相关信息均被保存在一个称为目录的地方。

      • 监听法(snooping)
        • 每个Cache除了包含物理存储器中块的数据副本之外,也保存着各个块的共享状态信息。
slide165
8.2 对称式共享存储器系统结构
        • Cache通常连在共享存储器的总线上,各个Cache控制器通过监听总线来判断它们是否有总线上请求的数据块。
  • 两种更新协议(维持一致性要求)
    • 写作废协议

在处理器对某个数据项进行写入之前,保证它拥有对该数据项的唯一的访问权。(作废其他副本)

slide166
8.2 对称式共享存储器系统结构

例在写回Cache、监听总线的情况下,写作废协议的实现

slide167
8.2 对称式共享存储器系统结构
  • 写更新协议

当一个处理器对某数据项进行写入时,通过广播使其他Cache中所有对应于该数据项的副本进行更新。

例 在写回Cache、监听总线的情况下,写更新协议的实现。

slide168
8.2 对称式共享存储器系统结构
  • 写更新和写作废协议性能上的差别主要来自:
    • 在对同一个数据进行多次写操作而中间无读操作的情况下,写更新协议需进行多次写广播操作,而写作废协议只需一次作废操作。
    • 在对同一Cache块的多个字进行写操作的情况下,写更新协议对于每一个写操作都要进行一次广播,而写作废协议仅在对该块的第一次写时进行作废操作即可。

写作废是针对Cache块进行操作,而写更新则是针对字(或字节)进行。

    • 考虑从一个处理器A进行写操作后到另一个处理器B能读到该写入数据之间的延迟时间。

写更新协议的延迟时间较小。

slide169
8.2 对称式共享存储器系统结构

8.2.3 监听协议及其实现

  • 小规模多处理机中实现写作废协议的关键

利用总线进行作废操作:把要作废的地址放到总线上

(一个放,多个读)

    • 写操作的顺序性:由总线实现

(获取总线控制权的顺序性)

    • 写直达Cache:因为所有写的数据同时被写回主存,所以从主存中总可以取到最新的数据值。
    • 对于写回Cache,得到数据的最新值会困难一些,因为最新值可能在某个Cache中,也可能在主存中。
slide170
8.2 对称式共享存储器系统结构
  • 在写回法Cache条件下的实现技术
    • Cache的标识(tag)用于实现监听。
    • 作废一个块只需将其有效位(valid)置为无效。
    • 给每个Cache块加一个特殊的状态位。

状态:

      • 共享(shared)—— 至少一个副本,clean
      • 专有(exclusive)—— 唯一副本,dirty

Cache块的拥有者:拥有唯一的Cache块副本的处理器。

slide171
8.2 对称式共享存储器系统结构
  • 在每个结点内嵌入一个Cache状态控制器。

控制器根据来自处理器或总线的请求,改变所选择的数据块的状态。

  • 因为每次总线操作均要检查Cache的地址标识,这可能会影响CPU对Cache的访问。可通过下列两种技术之一来减少影响 :
    • 复制标志位
    • 采用多级包容Cache(许多系统采用)
slide172
8.3 分布式共享存储器系统结构

存储器分布于各结点中,所有的结点通过网络互连。访问可以是本地的,也可是远程的。

  • 可以不支持Cache一致性:规定共享数据不进入Cache,仅私有数据才能保存在Cache中。
  • 优点:所需的硬件支持很少

(因为远程访问存取量仅是一个字(或双字)而不是一个Cache块)

如何将支持Cache一致性的共享存储器模式扩展到可扩缩的大规模多处理机系统?

slide173
8.3 分布式共享存储器系统结构

解决Cache一致性问题的关键:

寻找替代监听协议的一致性协议。(采用目录协议)

8.3.1 基于目录的Cache一致性

  • 目录协议
    • 目录:一种专用的数据结构,用于记录可以进入Cache的每个数据块的状态、哪些处理器有该块的副本以及是否修改过等信息。
    • 分布式目录
slide174
8.3 分布式共享存储器系统结构
  • 目录与存储器一起分布到各结点中,从而对于不同目录内容的访问可以在不同的结点进行。
  • 特点:

存储块的共享状态信息可以在唯一的一个固定单元中找到。这使一致性协议避免了广播操作。

  • 对每个结点增加目录表后的分布式存储器多处理机的系统结构。
slide176
8.3 分布式共享存储器系统结构
  • 目录协议必须完成两种主要的操作:
    • 处理读失效
    • 处理对共享、干净(clean)块的写

一个共享块的写失效处理可用这两个操作组合而成。

  • 目录必须跟踪记录每个Cache块的状态

存储块的状态有三种:

      • 共享

在一个或多个处理器上具有这个块的副本,且存储器中的值是最新的(所有Cache中的副本均相同)。

slide177
8.3 分布式共享存储器系统结构
      • 未缓冲

所有处理器的Cache都没有该块的副本。

      • 专有

仅有一个处理器上有该块的副本,且已对该块进行了写操作,而主存中的副本仍是旧的。这个处理器称为该块的拥有者。

  • 由于写作废操作的需要,还必须记录哪些处理器有该块的副本。

方法:对每个主存块设置一个位向量

      • 当该块被共享时,每个位指出与之对应的处理器是否有该块的副本。
      • 当该块为专有时,可根据位向量来寻找其拥有者。
slide178
8.3 分布式共享存储器系统结构

假设:对于本地Cache中非“专有”状态Cache块的写入操作总会产生写失效,处理器封锁直到写操作完成。

  • 一个例子
    • 本地结点、宿主结点以及远程结点的关系
      • 本地结点:发出访问请求的结点
      • 宿主结点:包含所访问的存储单元及其目录项的结点
      • 远程结点可以和宿主结点是同一个结点,也可以不是同一个结点。
slide179
P

CPU

副本

Cache

Cache

远程结点C

本地结点A

K

存储器

目录

宿主结点B

(Home)

宿主结点:存放有对应地址的存储器块和目录项的结点

slide180
8.3 分布式共享存储器系统结构
  • 响应访问请求时,要将宿主结点中相应的值返回给请求结点。
  • 数据写回在两种情况下发生:
    • Cache中某个块被替换时必须写回到其宿主结点的存储器。
    • 响应宿主结点发出的取数和取数/作废消息时也要写回。
slide181
8.3 分布式共享存储器系统结构

总结:目录协议的基本点

  • 在每个结点中增加了目录存储器用于存放目录。
  • 存储器的每一块在目录中有对应的一项。
  • 每一个目录项主要由两个字段构成:
    • 状态:描述所对应的存储块的当前状态。
    • 位向量:每一位对应于一个处理器,用于指出该处理器的Cache中是否有该存储块的副本。当处理器对某一块进行写操作时,只要根据位向量通知具有相应副本的处理器进行作废操作。

位向量中记录的处理器集合称为共享集合。

slide182
8.3 分布式共享存储器系统结构
  • 在基于目录的协议中,目录承担了一致性协议操作的主要功能。
  • 发往一个目录的消息会产生两种不同类型的动作:
    • 更新目录状态
    • 发送消息以完成所请求的操作
  • 目录可能接收三种不同的请求:
    • 读失效
    • 写失效
    • 数据写回

8.3.2 目录协议及其实现

slide183
8.3 分布式共享存储器系统结构
  • 当一个块处于未缓冲状态时,对该块发出的请求及目录的处理操作为:
    • 读失效
      • 将存储器数据送往请求方处理器,且该处理器成为该块的唯一共享结点,本块的状态变成共享。
    • 写失效
      • 将存储器数据送往请求方处理器,该块的状态变成专有,表示该块仅存在唯一的有效副本。
      • 其共享集合仅包含该处理器,指出该处理器是其拥有者。
slide184
8.3 分布式共享存储器系统结构
  • 当一个块处于共享状态时,其在存储器中的数据是当前最新的,对该块发出的请求及其处理操作为:
    • 读失效
      • 将存储器数据送往请求方处理器,并将其加入共享集合。
    • 写失效
      • 将数据送往请求方处理器,对共享集合中所有的处理器发送写作废消息。
      • 将共享集合改为仅含有该处理器,该块的状态变为专有。
slide185
8.3 分布式共享存储器系统结构
  • 当某块处于专有状态时,该块的最新值保存在共享集合所指出的唯一处理器(拥有者)中。

有三种可能的目录请求:

    • 读失效
      • 将“取数据”的消息发往拥有者处理器,使该块的状态转变为共享。
      • 将数据送回宿主结点写入存储器,进而把该数据送回请求方处理器,将请求方处理器加入共享集合。
      • 此时共享集合中仍保留原拥有者处理器(因为它仍有一个可读的副本)。
slide186
8.3 分布式共享存储器系统结构
  • 写失效
    • 该块将有一个新的拥有者。
    • 给旧的拥有者处理器发送消息,要求它将数据块送回宿主结点写入存储器,然后再从该结点送给请求方处理器。
    • 把请求处理器加入共享者集合,使之成为新的拥有者。该块的状态仍旧是专有。
  • 数据写回
    • 当一个块的拥有者处理器要从其Cache中把该块替换出去时,必须将该块写回其宿主结点的存储器中,从而使存储器中相应的块中存放的数据是最新的(宿主结点实际上成为拥有者),该块的状态变成非共享,其共享集合为空。
slide187
8.3 分布式共享存储器系统结构
  • 对基于目录的Cache一致性的多种改进
    • 有限映射目录
    • 链式结构目录
  • 基于目录的Cache一致性协议是完全由硬件实现的。此外,还可以用软硬结合的办法实现。
slide188
8.4 同 步

同步机制通常是在硬件提供的同步指令的基础上,通过用户级软件例程来建立的。

8.4.1 基本硬件原语

在多处理机中实现同步,所需的主要功能是:

  • 一组能以原子操作的方式读出并修改存储单元的硬件原语。它们能够自动读/修改单元。
  • 通常情况下,用户不直接使用基本的硬件原语,原语主要供系统程序员用来编制同步库函数。
slide189
8.4 同 步
  • 典型操作:原子交换(atomic exchange)
    • 功能:将一个存储单元的值和一个寄存器的值进行交换。

建立一个锁,锁值:

        • 0:表示开(可用)
        • 1:表示已上锁(不可用)
    • 处理器上锁时,将对应于该锁的存储单元的值与存放在某个寄存器中的1进行交换。如果返回值为0,存储单元的值此时已置换为1,防止了其他进程竞争该锁。
    • 实现同步的关键:操作的原子性。
slide190
8.4 同 步
  • 测试并置定(test_and_set)
    • 先测试一个存储单元的值,如果符合条件则修改其值。
  • 读取并加1(fetch_and_increment)
    • 它返回存储单元的值并自动增加该值。
  • 使用指令对
      • LL(load linked或load locked)的取指令
      • SC(store conditional)的特殊存指令
slide191
8.4 同 步
  • 指令顺序执行:
    • 如果由LL指明的存储单元的内容在SC对其进行写之前已被其他指令改写过,则第二条指令SC执行失败。
    • 如果在两条指令间进行切换也会导致SC执行失败。
    • SC将返回一个值来指出该指令操作是否成功:
      • “1”:成功
      • “0”:不成功
    • LL则返回该存储单元初始值。
slide192
8.4 同 步

例:实现对由R1指出的存储单元进行原子交换操作。

try:OR R3, R4, R0 // R4中为交换值。把该值送入R3

LL R2, 0(R1)

// 把单元0(R1)中的值取到R2

SC R3, 0(R1) // 若0(R1)中的值与R3中的值相

// 同,则置R3的值为1,否则置为0

BEQZ R3, try // 存失败(R3的值为0)则转移

MOV R4, R2 // 将取的值送往R4

最终R4和由R1指向的单元值进行原子交换,在LL和SC之间如有别的处理器插入并修改了存储单元的值,SC将返回0并存入R3中,从而使这段程序再次执行。

slide193
8.4 同 步
  • LL/SC机制的一个优点:用来构造别的同步原语

例如:构造原子操作fetch_and_increment:

try:LL R2, 0(R1)

DADDIU R2, R2, #1

SC R2, 0(R1)

BEQZ R2, try

  • 指令对的实现必须跟踪地址

由LL指令指定一个寄存器,该寄存器存放着一个单元地址,这个寄存器常称为连接寄存器。

slide194
8.4 同 步
  • 采用多处理机的一致性机制来实现旋转锁。
  • 旋转锁

处理器环绕一个锁不停地旋转而请求获得该锁。它适合于这样的场合:锁被占用的时间很少,在获得锁后加锁过程延迟很小。

8.4.2 用一致性实现锁

slide195
8.4 同 步
  • 无Cache一致性机制

在存储器中保存锁变量,处理器可以不断地通过一个原子操作请求使用权。

比如:利用原子交换操作,并通过测试返回值而知道锁的使用情况。释放锁的时候,处理器只需简单地将锁置为0。

例如,用原子交换操作对旋转锁进行加锁,R1中存放的是该旋转锁的地址。

DADDIU R2, R0, #1

lockit: EXCH R2, 0(R1)

BNEZ R2, lockit

slide196
8.4 同 步
  • 支持Cache一致性
    • 将锁调入Cache,并通过一致性机制使锁值保持一致。
    • 优点:
      • 可使“环绕”的进程只对本地Cache中的锁(副本)进行操作,而不用在每次请求占用锁时都进行一次全局的存储器访问。
      • 可利用访问锁时所具有的局部性,即处理器最近使用过的锁不久又会使用。

(减少为获得锁而花费的时间)

slide197
8.4 同 步
  • 改进旋转锁(获得第一条好处)
    • 只对本地Cache中锁的副本进行读取和检测,直到发现该锁已经被释放。然后,该程序立即进行交换操作,去跟在其他处理器上的进程争用该锁变量。
    • 修改后的旋转锁程序:

lockit: LD R2, 0(R1)

BNEZ R2, lockit

DADDIU R2, R0, #1

EXCH R2, 0(R1)

BNEZ R2, lockit

    • 3个处理器利用原子交换争用旋转锁所进行的操作。
slide199
8.4 同 步
  • LL/SC原语的另一个优点:读写操作明显分开

LL不产生总线数据传送,这使下面代码与使用经过优化交换的代码具有相同的特点:

lockit: LL R2, 0(R1)

BNEZ R2, lockit

DADDIU R2, R0, #1

SC R2, 0(R1)

BEQZ R2, lockit

第一个分支形成环绕的循环体,第二个分支解决了两个处理器同时看到锁可用的情况下的争用问题。尽管旋转锁机制简单并且具有吸引力,但难以将它应用于处理器数量很多的情况。

slide200
8.4 同 步

简单旋转锁不能很好地适应可扩缩性。大规模多处理机中,若所有的处理器都同时争用同一个锁,则会导致大量的争用和通信开销。

8.4.3 同步性能问题

slide201
8.4 同 步

例8.3假设某条总线上有10个处理器同时准备对同一变量加锁。如果每个总线事务处理(读失效或写失效)的时间是100个时钟周期,而且忽略对已调入Cache中的锁进行读写的时间以及占用该锁的时间。

(1)假设该锁在时间为0时被释放,并且所有处理器都在旋转等待该锁。问:所有10个处理器都获得该锁所需的总线事务数目是多少?

(2)假设总线是非常公平的,在处理新请求之前,要先全部处理好已有的请求。并且各处理器的速度相同。问:处理10个请求大概需要多少时间?

slide202
8.4 同 步

解 当i个处理器争用锁的时候,它们都各自完成以下操作序列,每一个操作产生一个总线事务:

  • 访问该锁的i个LL指令操作
  • 试图占用该锁(并上锁)的i个SC指令操作
  • 1个释放锁的存操作指令

因此对于i个处理器来说,一个处理器获得该锁所要进行的总线事务的个数为2i+1。

由此可知,对n个处理器,总的总线事务个数为:

对于10个处理器来说,其总线事务数为120个,需要12000个时钟周期。

slide203
8.4 同 步
    • 本例中问题的根源:锁的争用、对锁进行访问的串行性以及总线访问的延迟。
    • 旋转锁的主要优点:总线开销或网络开销比较低,而且当一个锁被同一个处理器重用时具有很好的性能。
  • 如何用旋转锁来实现一个常用的高级同步原语:栅栏
    • 栅栏强制所有到达该栅栏的进程进行等待,直到全部的进程到达栅栏,然后释放全部的进程,从而形成同步。
slide204
8.4 同 步
  • 栅栏的典型实现

用两个旋转锁:

    • 用来保护一个计数器,它记录已到达该栅栏的进程数;
    • 用来封锁进程直至最后一个进程到达该栅栏。
  • 一种典型的实现

其中:

    • lock和unlock提供基本的旋转锁
    • 变量count记录已到达栅栏的进程数
    • total规定了要到达栅栏的进程总数
slide205
8.4 同 步

lock(counterlock); //确保更新的原子性

if(count==0)release=0; //第一个进程则重置release

count=count+1; //到达进程数加1

unlock(counterlock); //释放锁

if(count==total){ //进程全部到达

count=0; //重置计数器

release=1; //释放进程

else { //还有进程未到达

spin(release=1); //等待别的进程到达

slide206
8.4 同 步
    • 对counterlock加锁保证增量操作的原子性。
    • release用来封锁进程直到最后一个进程到达栅栏。
    • spin(release=1)使进程等待直到全部的进程到达栅栏。
  • 实际情况中会出现的问题

可能反复使用一个栅栏,栅栏释放的进程运行一段后又会再次返回栅栏,这样有可能出现某个进程永远离不开栅栏的状况(它停在旋转操作上)。

    • 一种解决方法

当进程离开栅栏时进行计数(和到达时一样),在上次栅栏使用中的所有进程离开之前,不允许任何进程重用并初始化本栅栏。但这会明显增加栅栏的延迟和竞争。

slide207
8.4 同 步
  • 另一种解决办法
    • 采用sense_reversing栅栏,每个进程均使用一个私有变量local_sense,该变量初始化为1。
    • sense_reversing栅栏的代码。

优缺点:使用安全,但性能比较差。

对于10个处理器来说,当同时进行栅栏操作时,如果忽略对Cache的访问时间以及其他非同步操作所需的时间,则其总线事务数为204个,如果每个总线事物需要100个时钟周期,则总共需要20400个时钟周期。

slide208
8.4 同 步

local_sense=! local_sense;//local-sense取反

lock(counterlock);//确保更新的原子性

count++; //到达进程数加1

unlock(counterlock); //释放锁

if(count==total){ //进程全部到达

count=0; //重置计数器

release=local_sense; //释放进程

else { //还有进程未到达

spin(release==local_sense);//等待信号

slide209
8.4 同 步
  • 当竞争不激烈且同步操作较少时,我们主要关心的是一个同步原语操作的延迟。
    • 即单个进程要花多长时间才完成一个同步操作。
    • 基本的旋转锁操作可在两个总线周期内完成:
      • 一个读锁
      • 一个写锁

我们可用多种方法改进,使它在单个周期内完成操作。

  • 同步操作最严重的问题:进程进行同步操作的顺序化。它极大地增加了同步操作的时间。
slide210
8.5 同时多进程
  • 线程级并行性

(Thread Level Parallelism,TLP)

    • 线程是指具有自己的程序和数据的进程。它可以是一个并行执行程序的一部分,也可以是一个独立的程序。
    • 每个线程包含自己执行所需要的状态,包括指令、数据、程序计数器、寄存器状态等。
  • 多线程使多个线程以重叠的方式共享单个处理器的功能单元。
  • 硬件必须对较快地完成线程间的切换提供支持。
    • 线程的切换应该比进程的切换高效得多。
    • 进程的切换一般需要成百上千个处理器时钟周期。
slide211
8.5 同时多进程

实现多线程有两种主要的方法:

  • 细粒度(fine-grained)多线程技术
    • 在每条指令之间都能进行线程的切换,从而导致多个线程的交替执行。
    • 通常以时间片轮转的方法实现这样的交替执行,在轮转的过程中跳过当时处于停顿的线程。
    • CPU必须在每个时钟周期都能进行线程的切换。
    • 主要优点:既能够隐藏由长时间停顿引起的吞吐率的损失,又能够隐藏由短时间停顿带来的损失。
    • 主要缺点:减慢了每个独立线程的执行
slide212
8.5 同时多进程
  • 粗粒度(coarse-grained)多线程技术
    • 线程之间的切换只发生在时间较长的停顿出现时。

例如:第二级Cache失效。

    • 减少了切换次数,也不太会降低单个线程的执行速度 。
    • 缺点:减少吞吐率损失的能力有限,特别是对于较短的停顿来说更是如此。
    • 原因:由粗粒度多线程的流水线建立时间的开销造成的。由于实现粗粒度多线程的CPU只执行单个线程的指令,因此当发生停顿时,流水线必须排空或暂停。停顿后切换的新的线程在第一条指令执行完之前必须先填满整个流水线。
slide213
8.5 同时多进程

8.5.1 将线程级并行转换为指令级并行

    • 同时多线程技术
      • Simultaneous MultiThreading,SMT
      • 一种在多流出、动态调度的处理器上同时开发线程级并行和指令级并行的技术。
  • 提出SMT的主要原因
    • 现代多流出处理器通常含有多个并行的功能单元,而单个线程不能有效地利用这些功能单元。
    • 通过寄存器重命名和动态调度机制,来自各个独立线程的多条指令可以同时流出,而不用考虑它们之间的相互依赖关系,其相互依赖关系将通过动态调度机制得以解决。
slide214
8.5 同时多进程
  • 一个超标量处理器在4种情况下的资源使用情况:
    • 不支持多线程技术的超标量处理器

由于缺乏足够的指令级并行而限制了流出槽的利用率 。

    • 支持粗粒度多线程的超标量处理器
      • 通过线程的切换部分隐藏了长时间停顿带来的开销,提高了硬件资源的利用率。
      • 只有发生停顿时才进行线程切换,而且新线程还有个启动期,所以仍然可能有一些完全空闲的时钟周期。
slide215
8.5 同时多进程

超标量处理器中使用流出槽的4种方法

slide216
8.5 同时多进程
  • 支持细粒度多线程的超标量处理器
    • 线程的交替执行消除了完全空闲的时钟周期。
    • 由于在每个时钟周期内只能流出一个线程的指令,ILP的限制导致了一些时钟周期中依然存在不少空闲流出槽。
  • 支持同时多线程的超标量处理器
    • 在同一个时钟周期中可以让多个线程使用流出槽。
    • 理想情况下,流出槽的利用率只受限于多个线程对资源的需求和可用资源间的不平衡 。
slide217
8.5 同时多进程
  • 开发的基础:动态调度的处理器已经具备了开发线程级并行所需的许多硬件设置。
    • 动态调度超标量处理器有一组虚拟寄存器,可以用作各独立线程的寄存器组。
    • 由于寄存器重命名机制给各寄存器提供了唯一的标识,多个线程的指令可以在数据路径上混合执行,而不会导致各线程之间源操作数和目的操作数的混乱。
    • 多线程可以在一个乱序执行的处理器的基础上实现,只要为每个线程设置重命名表、分别设置各自的程序计数器并为多个线程提供指令确认的能力。
slide218
8.5 同时多进程
  • 同时多线程只有在细粒度的实现方式下才有意义
  • 细粒度调度方式会对单个线程的性能产生不利的影响

可以通过指定优先线程来减小这种影响,既能保持多线程在性能上的优势,又对单个线程的性能影响比较少。

  • 多个线程的混合执行不可避免地会影响单个线程的执行速度

8.5.2 同时多线程处理器的设计

slide219
8.5 同时多进程
  • 为提高单个线程的性能,应该为指定的优先线程尽可能多地向前取指(或许在分支指令的两条路径上都要向前取指)。
  • 在分支预测失效和预取缓冲失效的情况下需要清空取指单元。但是这样限制了其他线程可用来调度的指令条数,从而减少了吞吐率。
  • 所有的多线程处理器都必须在这里寻求一种折中方案。
slide220
8.5 同时多进程
  • 只要一有可能,处理器就运行指定的优先线程。
  • 从取指阶段开始就优先处理优先线程:只要优先线程的指令预取缓冲区未满,就为它们优先取指。
  • 只有当优先线程的缓冲区填满以后才为其他线程预取指令。
  • 当有两个优先线程时,意味着需要并发预取两条指令流,这给取指部件和指令Cache都增添了复杂度。
  • 指令流出单元也要优先考虑指定的优先线程,只有当优先线程停顿不能流出的时候才考虑其他线程。
slide221
8.5 同时多进程
  • 设计同时多线程处理器时面临的其他主要问题:
    • 需要设置更大的寄存器组,用来保存多个线程的现场。
    • 不能影响时钟周期,特别是在关键路径上。

如指令流出和指令完成:

      • 指令流出时,有更多的候选指令需要考虑。
      • 指令完成时,选择提交哪些指令可能会比较困难。
    • 需要保证由于并发执行多个线程带来的Cache冲突和TLB冲突不会导致明显的性能下降。
slide222
8.5 同时多进程
  • 需要重视的两个实际情况:
    • 在许多情况下,多线程所导致的潜在额外性能开销是很小的,简单的线程切换选择算法就足够好了。
    • 目前的超标量处理器的效率是比较低的,还有很大的改进余地,即使增加一些开销也是值得的。
slide223
8.5.3 同时多线程处理器的性能

在超标量处理器上增添8个线程的同时多线程能力时获得的性能提高(单位:指令数/每拍)

slide225
8.5 同时多进程
  • 两个特点
    • 超标量处理器本身功能十分强大,它具有很大的一级Cache、二级Cache以及大量的功能单元。仅仅采用指令级并行,不可能利用全部的硬件性能,因此超标量处理器的设计者不可能不考虑使用诸如同时多线程这样的技术来开发线程级并行。
    • 同时多线程的能力也很强大,可以支持8个线程,并为两个线程同步取指。

将超标量和同时多线程结合起来,在指令级并行基础上进一步开发线程级并行,可以获得显著的性能提高。

slide226
Origin 2000是一个分布共享存储器结构的大规模并行多处理机系统,采用超结点的模块结构,可以从1个处理器扩展到128个处理器。
  • Origin 2000采用超标量MIPS R10000处理器,运行UNIX的64位IRIX操作系统。
  • Origin是基于NUMA系统结构

8.6 多处理机实例

slide228
8.6 多处理机实例

每个结点可安装1个或2个MIPS R10000微处理器、第二级高速缓存(L2 Cache)、主存储器、目录存储器及Hub等,Hub用于连接微处理器、存储器、I/O和路由器等。

  • Origin存储器系统每个结点的主存储器容量: 4GB
  • 结点的Hub内含4个接口和交叉开关
  • 存储器最大传输率为780Mbps
  • I/O和路由器接口最大传输率:2×780Mbs(1.56Gbps)
  • Origin的路由器有6个端口,用于连接结点或其他路由器。Origin的路由器和互连网络是ASIC芯片,通过芯片内部的交叉开关选择数据传送路径。
slide229
两个结点互连的情况
  • Origin系统可由1~128个处理器组成。

4处理器系统

slide230
由8结点构成的16处理器系统
  • 为了减少数据在路由器之间的传送延迟,加快传送速度,可将处于对角位置的路由器进行连接。

16处理器系统

slide231
8.6 多处理机实例
  • 128处理器系统

128处理器构成的Origin 2000系统由4个立方体组成,在立方体之间传送数据多经过了一级路由器。

    • 在结点内部实现的是SMP(对称多处理器)结构,由于只有两个处理器,所以不存在SMP结构的总线瓶颈问题。
    • 在结点之间实现的是大规模并行处理结构,但又解决了共享存储器问题。因此在Origin系统中,无论是访问存储器的时间还是结点间传送数据的带宽都很理想。
slide233
8.6 多处理机实例
  • Origin系统中CPU访问存储器的延迟时间
    • 假设:
      • CPU的主频为195MHz
      • Cache不命中
      • 最小延迟时间:CPU访问本结点存储器的时间
      • 最大延迟时间:CPU访问距离最远的存储器的时间
slide234
8.6 多处理机实例

Origin系统中CPU访问存储器的延迟时间

slide235
8.6 多处理机实例
  • Origin系统的带宽

每个Hub连到路由器和互连网络的最大频宽为

1.56 Gbps(全双工,2×780 Mbps)

slide236
8.6 多处理机实例
  • Origin系统的存储器层次结构可分为:

寄存器、L1 Cache、L2 Cache和主存储器

    • 寄存器和L1 Cache在R10000微处理器中
    • 寄存器的存取时间最短
    • L1 Cache又分成指令Cache和数据Cache两部分

(避免取指令和存/取数据发生冲突)

    • L2 Cache安装在结点卡中,统一存放指令和数据,由SRAM组成。
    • 主存储器地址是统一编址的,每个处理器通过互连网络可访问系统中任一存储单元。
slide237
8.6 多处理机实例
  • 实现Cache的一致性
    • 基于目录协议与写作废协议
    • 每个结点中,有一个存储器和一个目录存储器。
    • 每块对应于一个目录项,每个目录项包含其对应存储器块的状态信息和系统中各Cache共享该存储块情况的位向量,根据位向量可以知道哪些Cache中有其副本。
ad