第七章 分布共享存储多处理机
Download
1 / 88

第七章 分布共享存储多处理机 - PowerPoint PPT Presentation


  • 89 Views
  • Uploaded on

第七章 分布共享存储多处理机. 第一节 分布存储与可扩展性. 可扩展通信网络. 一、分布 存储的系统结构. ···. 节点. CA. NIC. 1 、分布 存储的系统 结构 有共享存储、非 共享 存储 2 种. C. M. Shell. P. LD. *NUMA/NORMA 系统与 UMA 系统的 区别: 存储系统 — 一致性模型的实现不同 ( 复杂 ) 通信模型 — 编程 模型、通信辅助部件 ( CA) 的实现不同 同步操作 — 实现方法不同 ( 复杂 ). 回下页. 2 、系统结构相关设计内容.

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 ' 第七章 分布共享存储多处理机' - cecile


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

第一节 分布存储与可扩展性

可扩展通信网络

一、分布存储的系统结构

···

节点

CA

NIC

1、分布存储的系统结构

有共享存储、非共享存储2种

C

M

Shell

P

LD

*NUMA/NORMA系统与UMA系统的区别:

存储系统—一致性模型的实现不同(复杂)

通信模型—编程模型、通信辅助部件(CA)的实现不同

同步操作—实现方法不同(复杂)

回下页


2、系统结构相关设计内容

(1)存储系统

*Cache一致性:是否支持、协议种类、硬/软分配

*存储一致性:模型种类、对节点硬件/编程模型的限制

(2)通信系统

*编程模型:编程模型的实现(传输协议)、存储一致性的实现

*节点通信:CA结构、通信抽象的实现

(3)同步操作

硬件原语、同步算法的设计(详见上一章)

(4)互联网络

拓扑结构、交换策略、路由算法、流控机制(详见第5章)

※本章主要内容: --基于分布共享存储的体系结构

编程模型及CA的实现,一致性模型的设计,时延包容技术

转上页


、硬件系统可扩展性

*扩展内容:处理器、存储器、I/O、通信等方面

*扩展目标:有效扩展处理器数量

1、带宽可扩展性

*目标:系统带宽及吞吐率可扩展(节点带宽基本不变)

*实现:可扩展IN,分布存储结构,并发事务无全局仲裁

2、时延可扩展性

通信时延—t(n)=t额外+t路由+n/B +t竞争

*目标:节点操作/通信的时延随处理器数(p)增加较少

思考—IN由多级2×2交换开关构成,若忽略IN的网络竞争、t额外=1μs、B=64MBps、t路由0=125ns/跳,p从64→1024时,直通、转发及虫蚀方式传输128B的时延各上升多少?

*实现:交换开关快速、拓扑结构合理、网络竞争较小


3、成本可扩展性

成本—C(p,m)=C固定+C增量(p,m),p为处理器数、m为MEM容量

*目标:固定成本比例适中,增量成本接近线性增长

思考—IN由多级2×2交换开关构成,64个节点时CPU、MEM、IN成本等量平衡(各33.3%),1024个节点时,IN成本上升到多少?

*实现:配置可多样性,基本硬件模块化,IN接近线性增长

※带宽、时延、成本相互关联,设计时需折中

4、物理可扩展性

物理扩展—有芯片级、板级、系统级集成3种方式

紧密封装与松散封装的特点相矛盾

*目标:对资源可扩展性、技术可扩展性均有好处

*实现:在几种方式之间进行折中


第二节 编程模型的实现

*编程模型的实现:

通信操作通过用户/系统的通信原语实现;

通信原语通过节点的软件/硬件实现

多道程序 共享变量 消息传递 数据并行 编程模型

编译或库层

通信抽象

用户/系统边界

操作系统层

软件/硬件边界

通信硬件层(如NIC)

物理通信介质层(如IN)

*(通信)硬件原语的实现:

总线互连—总线控制器通过总线事务实现硬件原语

网络互连—CA通过网络事务实现硬件原语


串行化的数据包

互连网络

源节点

输出缓冲区

输入缓冲区

目的节点

编程模型的操作请求

编程模型的操作处理

一、基本网络事务

1、网络事务

定义:从源输出缓冲区到目的输入缓冲区的单向传输,并在目的节点引发从源节点不能直接看到的动作。

网络事务的驱动与解释方案:

①表示为I/O操作,由软件驱动和解释;

②集成到存储系统中,由专用硬件控制器驱动和解释

网络事务的实现方法,给CA带来较大的设计空间。


2、网络事务相关内容

(1)网络与总线互连特征的主要区别

(2)网络事务相关内容

格式—由信息在传输链路(不同段宽度可能不同)上串行的方式决定(如定长信息/可变长信息);

输出缓冲—固定格式时(含小的变化范围)可用缓冲区,可变格式时一般用描述符缓冲区;

目的地命名及路由—源提供命名(目的地逻辑地址→物理地址转换)和路由信息(总线事务为目的节点匹配);

回下页


介质仲裁—无全局仲裁,源端进行局部仲裁后决定是否启动事务,事务所需资源在消息前进过程中逐步分配;

保护—网络事务前进过程中各网络部件对事务进行检查;

输入缓冲—是多个源所共享的资源,可能发生溢出现象;

动作—目的节点对不同事务有不同动作,对任何事务均会产生一个响应;

结束检测—网络事务非原子性事务,源只有事务已发送到网络的信息,结束信息只能通过编程模型实现(如响应/确认等);

事务排序—节点无法察觉事务的全局顺序性,须对网络事务强加次序约束实现事务的排序(点-点次序的软/硬件实现);

死锁避免—不能产生(发送)事务时,可接收进入的事务;

传输保证—缓冲区满时,可采用抛弃信息并重发或推迟传输直到有空间的方法。

转上页

回下页


源读 目的地 源写

Load r←[全局地址] Store r→[全局地址]

启动存储器访问

地址变换

局部/全局检查

请求事务

远程存储器访问

应答事务

存储器访问完成

存储器访问

读请求

写请求

读/写请求

等待

等待

读响应/写确认

写确认

读响应

二、共享变量模型实现

命名:共享变量地址常分解成模块(节点)号+局部地址。

操作:包括读、写、读-改-写、作废、更新等。

定序:按操作发出及完成的串行化定序(双向传输)。

1、传输协议—编程模型与网络事务的对应关系

编程模型定序要求采用双向的请求-响应协议。

转上页

回下页


2、一致性问题解决

Cache一致性问题解决:--相同地址写操作

同一源节点的远程访问发出串行化由源节点保证,远程访问完成串行化由请求-响应传输协议保证;

同一目的节点的远程访问处理与本地访问处理一致,目的节点串行化处理保证不同源节点操作的串行化;

不同源节点远程访问的写传播由Cache一致性协议实现.

顺序一致性问题解决:

同一源节点远程访问的顺序一致性—

通过读响应和写确认来实现发出与完成串行化;

不同节点对远程访问的顺序一致性--

不能保证,通过节点对接收端的顺序一致性来尽量实现(源端串行化发送,目的端串行化接收和处理)。

转上页


三、消息传递模型实现

命名:通过消息方式(包括消息信封和消息缓冲区)命名。

操作:包括发送[消息]、接收[消息]等。

定序:按发送及接收原语的操作序定序(单向传输)。

消息传递类型:

同步传送--发送端、相匹配的接收端全部到达,且操作被执行后才可离开,继续后续的操作;

异步互锁传送—发送端、相匹配的接收端任一个到达,即可执行操作,操作完成后(发送请求到达网络、接收操作完成)即可离开;

异步非互锁传送—发送端、相匹配的接收端任一个到达,即可执行操作,操作完成前(发送请求进入缓冲区但未到达网络、接收操作完成)即可离开。

回下页


源 目的地

Send(Pdest,local,VA,len) Recv(Psrc,local,VA,len)

启动发送

Psrc上地址变换

本地/远程检查

发送准备好请求

远程检查接收条件

应答事务

块数据传输

发送准备好请求

检查

等待

接收准备好应答

数据传输请求

1、消息同步传输协议

发送者启动、接收端维护匹配表的三阶段传输协议:

接收者启动、发送端维护匹配表的为两阶段传输协议。

所有传输协议均假设网络是可靠的,即不需要接收完成后的握手步骤。

转上页

回下页

回下二页


源 目的地

Send(Pdest,local,VA,len)

启动发送

地址变换

本地/远程检查

块数据发送

接收端检查

接收/缓冲数据

数据传送请求

标志匹配

分配缓冲区

Recv(Psrc,local,VA,len)

2、消息异步传输协议

均由发送者启动、接收端维护匹配表。

非锁定方式传输协议:

若接收标志匹配失败,则将数据存入临时缓冲区,当稍后的接收操作到达时立即处理。

非锁定方式对接收端的缓冲区要求很大。

转上页


源 目的地

Send(Pdest,local,VA,len)

启动发送

Psrc上地址变换

本地/远程检查

发送准备好请求

远程检查并记录

发送准备好

接收准备好请求

块数据应答

(源→目的地)

发送准备好请求

返回并计算

Recv(Psrc,local,VA,len)

接收准备好请求

检查

数据传送请求

锁定方式传输协议:

同步传送和异步非互锁协议的折中。

锁定方式对接收端的缓冲区要求一般。

转上二页


四、主动消息机制—硬件原语的低层通信抽象

以受限制的远程过程调用的形式,形成了请求和应答事务

消息的组成:

请求消息包含目标PE地址、目标PE的处理例程标识符(每种消息与一个处理例程对应)、作为处理例程参数的数据等;

应答消息包含源PE地址、源PE的响应例程标识符等。

主动机制的实现:

消息到达通知—通过中断调用或激活线程方式实现,对应程序为用户消息处理程序(可减小系统介入切换开销);

中断调用:用户可直接访问NIC时,可用轮询方式代替

激活线程:可建立服务请求例程栈、用堆栈代替线程切换

数据缓冲管理—数据直接从网络上读入用户数据区。

主动消息机制的应用:可在此基础上建立高级编程模型。


五、编程模型实现的相关问题

1、输入缓冲区溢出问题

输入缓冲区管理:一般采用固定容量的单个队列进行管理。

溢出处理方法:

①输入缓冲区变大,并为每个源预留部分空间,源在目的端无空间(目的端将流控或否认信息反馈给源端)时可限制发送速度;

②输入缓冲区满时,拒绝接收待进入的事务(事务停留在网络中会向源端产生反向压力),源端感应到反向压力、收到流控信息、否认信息时放慢发送速度。


2、取死锁问题

产生原因:无法发送(如输出缓冲区满时网络阻塞)时,接收的事务需要一个响应,而响应也无法发送。

死锁解决方法:

①为请求和响应提供两个逻辑上独立的通信网络,如同一方向的虚拟通道中有请求和响应虚拟通道相互独立;

②保证任何节点输出缓冲区总是够用,可通过限制未决事务数量来实现响应的永远可发送(即输出缓冲区事务数量-允许的最大未决事务数量≥1);

③保证任何节点输入缓冲区总是够用(为响应预留缓冲空间),可通过对进入的请求事务抛弃(用否认NACK来应答)、对进入的响应事务吸纳(已预留缓冲空间)并处理实现。

回48页

回28页


第三节 通信辅助部件CA的实现

编程模型中网络事务的组成:

有消息的组织、发送、接收、解释(处理)四个环节。

网络事务完成与消息处理:

消息的解释方(含网络事务请求方)按硬件通信原语语义(传输协议)解释或/并发出另一个消息;

网络事务请求方根据传输协议可得知网络事务的完成。

CA的设计空间:

设计基础:硬件通信原语(基于本地总线的总线事务);

设计空间:硬件对网络事务中消息的组织和解释程度(消息发送、接收必须由NIC硬件完成)。


数据

目的地

互连网络

DMA通道

Addr

Length

Status

DMA通道

Addr

Length

Status

CA

CA

DMA

DMA

状态,中断

状态,中断

Cmd

Cmd

NIC

NIC

P

P

存储器

存储器

一、物理DMA的CA

硬件不对消息进行组织和解释。

1、CA结构

CA组成:由输入、输出的缓冲队列和DMA通道组成。

DMA通道:包含地址和长度REG、状态REG(含中断使能)。

回下页

回下二页


消息发送:将陷入OS,OS的特权指令提供地址转换、路由信息、包封装等,仲裁物理介质,并启动DMA通道传输消息。

消息到达通知:DMA完成消息到存储器的映射后产生中断。

消息解释:通道的中断程序根据I/O或特权指令访问DMA的REG,得到消息头指针,解释消息由用户进程完成。

2、编程模型通信抽象的实现

①直接在内核支持消息传递的抽象

若有匹配的接收,数据直接拷贝到用户的存储空间;

否则,内核自动分配空间缓冲数据,直到有匹配的接收。

②用户进程预先分配缓冲区并通知内核在何处接收消息。

转上页


输入端口

NIC

输入端口

NIC010

NIC011

NIC100

NIC111

交换机

Addr

Length

Addr

Length

DMA

通道

NIC000

NIC001

Addr

Addr

存储器总线

NIC100

NIC100

存储器

处理器

3、案例分析—nCUBE/2多处理机

IN:为超立方体静态网络,节点NIC支持路由功能;

节点CA:包含2×log2N个DMA通道(输入、输出独立),

一个交换机(负责各维节点的事务消息转发),

输入通道无长度REG(要求各节点保证消息长度小于存储器缓冲区大小);

通信抽象:网络事务的通信抽象采用主动消息机制。

转上二页


用户虚拟地址空间

数据

目的地

用户/系统

互连网络

网络输出端口

网络输入端口

状态端口

状态,

中断

状态,

中断

P

P

二、用户级访问的CA

硬件组织消息,消息解释只能区分系统消息和用户消息。

1、CA结构

消息组织与发送:将用户虚地址空间的某区域映射到NIC相关端口,系统/用户通过访问这些端口来触发CA组织消息,CA组织消息时打上系统/用户标记,进行介质仲裁后发送。

消息接收与解释:系统消息到达时产生系统中断,由OS立即处理;用户消息则加到输入FIFO队列,直到用户进程读取它或产生用户级中断(可借用系统中断处理)。

回下页


诊断网络

数据网络

控制网络

网络接口NIC

存储器总线

2、案例分析—Thinking Machine CM5多处理机

IN:由两个数据网络、一个控制网络、一个诊断网络组成。

CA结构:

NIC有两对数据网络端口和一对

控制网络端口,均以FIFO队列管理;

通过用户虚拟地址空间映射NIC

端口方法,触发NIC启动和接收网络事务;

CA维护一张表,指出哪些网络事务标记应引起中断。

CA传输实现:是否采用DMA通道传输,取决于传输产生的总线操作次数及缓冲区能否被缓存等因素。

死锁问题解决:

①两个数据网络分别独立地用于请求和响应;

②通过端到端的流控保证缓冲区不溢出(P22方法②③).

转上页

转22页


数据

用户信息

目的地

CA

CA

CA

MEM

MEM

CP

MEM

P

P

CP

CP

P

三、专用消息处理的CA

硬件(通信处理器CP)组织和解释所有网络事务消息。

1、CA结构

分为CP与P对称、CP集成在NIC中两种结构。

消息组织与发送:P用硬件原语将数据写入共享MEM,CP从共享MEM取数据、组织并发送消息,共享MEM通过标记和锁互斥;

消息接收与解释:CP→MEM、MEM→P。

死锁问题解决:CP未完全消除死锁,需采取相应方法处理。

回下页


网 络

175Mbps

NIC片

2KB FIFO

MEM

64bit、400Mbps

Cache一致的Mem bus

P CP

L1$

i860XP

L1$

i860XP

DMA

2、案例分析—Intel Paragon多处理机

CA:NIC负责封装消息(不区分系统/用户消息),状态REG的标记位变化将产生中断,DMA对FIFO的读/写不经过Cache;

DMA引擎:分别对应于发送和接收,总线仲裁时DMA优先级高于P,传输时DMA监听P的总线操作保持Cache一致性,CA硬件流控在适当时候(如FI、FO满或空等)使DMA暂停并释放总线。

转上页


数据

Rrsp

Src

Tag

Addr

Src

Dest

Tag

可扩展网络

伪存储器

伪处理器

伪处理器

伪存储器

MEM

MEM

MMU

P

P

MMU

LD R←Addr

$

$

四、共享物理地址的CA

硬件组织和解释消息(在总线事务与网络事务间相互转换)。

1、CA结构

CA可看成由伪存储器模块和伪处理器构成。

MEM总线需求:仅是事务拆分型总线不行,必须有两条独立到达MEM的路径,或支持乱序结束的分裂阶段操作,以隐藏时延。

回下页


伪存储器

伪处理器

Respond

Req

Req

Respond

消息队列

节点间三维双向环网

DMA

块传输引擎

预取队列

5

节点PE:DEC Alpha(64位)

8KBI-Cache+8KBD-Cache

43位虚地址

DTB:32个表项(寄存器)

[21位PE#+FC(访问标志)]

32

$

P

DTB

特殊寄存器

·Swaperand

·Fetch&add

·barrier

27

MMU

DRAM

32位物理地址

64MB

2、案例分析—CRAY T3D多处理机

PE的总线操作:

总线地址--高5位(DTB索引)+低27位(本地MEM物理地址);

虚-实地址转换—各PE建立全局页表,远程操作不支持分页(低27位物理地址可简单保持到所有节点的总线上);

DTB--0#REG总指向本地PE,MMU用LL-SC对REG操作;

转上页

回下页


/写操作微程序--①虚-实地址转换②存PE#到DTB③构建临时虚地址(高位为DTB索引)④对临时虚地址执行LD/ST指令。

CA与总线接口:

CA响应地址高5位i非零的总线操作,根据DTB[i]和相关信息组织网络事务,与远程节点通信后给总线返回操作结果;

NIC响应网络请求消息,CA产生本地总线操作请求,并将结果住址成消息返回给源节点。

远程操作性能优化:

时延容忍--PE提供零等待写(写缓冲)功能和预取指令,可隐藏网络时延;

块传输--通过DMA提供≤64KB(页大小)的块传输,支持可变长度通信和预取指令。

同步操作的实现:节点设置外部同步REG组,支持同步操作。

转上页


3、几种CA实现方法比较


第四节 高速缓存一致性的实现

分布存储结构的Cache一致性实现方法:

串行化特性--

用网络事务的结束检测代替总线事务的原子性;

用对宿主单元操作的串行化代替总线事务的串行化。

写传播特性--

用目录协议代替总线监听协议实现写传播和一致性。

Cache一致性的协议:

采用基于目录的作废或更新协议,如MESI协议,本章基本上均基于改进的MESI协议进行讨论。

复杂分布存储结构的Cache一致性实现方法:

不同节点内、节点间互连结构可构成监听-目录、目录-监听、目录-目录的一致性实现方法。


一、基于目录的一致性协议

1、简单目录组织的协议

节点定义:

宿主节点—主存中含有该块的节点,其他节点该块只在Cache存在;

脏节点—Cache中块的副本处于脏(M)状态的节点;

拥有者节点—保持块副本最新值的节点,需要时提供数据,只有宿主节点或脏节点才可能符合要求;

本地节点或请求节点—发出对块的操作请求的节点。

Cache一致性协议的状态转换图:

与MESI一致或类似。

注意:MESI中的原子性总线事务已变成非原子性的网络事务序列。


请求节点

请求节点

1

块目录节点

1

对目录的

RdX请求

对目录的

Rd请求

Mem/dir

Mem/dir

Mem/dir

Mem/dir

Mem/dir

Mem/dir

Mem/dir

块目录

节点

$

$

$

$

$

$

$

2

用共享者的

标识符响应

NIC

NIC

NIC

NIC

NIC

NIC

NIC

2

用拥有者的

标识符响应

P

P

P

P

P

P

P

3

对拥有者

的Rd请求

3a

3b

对共享的

作废请求

对共享的

作废请求

4b

4a

作废确认

数据回答

4a

4b

作废确认

对目录的

修正信息

脏节点

共享节点

共享节点

Cache一致性协议的操作:

注意:①操作过程与MESI有不同(如M态时的修正信息);

②块目录节点一般是宿主节点,但不一定是。

回下二页


P1

Pn

目录

存储器

$

$

NIC

NIC

互连网络

目录

存储器

脏位

存在位

Cache一致性协议的目录组织(简单方法):

将块的目录信息存放在宿主节点的相应存储器中;

块的目录信息由n(为PE总数)个存在位和1个脏位组成(脏位为ON时只有一个存在位为ON)。

注意:本地(远程)节点Cache中不需要保存块的宿主节点信息(因为共享地址空间时,可根据块地址定位到宿主节点)。

回下页


2、影响目录协议可扩展性的因素

(1)影响协议性能可扩展性的因素

带宽:由扑空率×扑空产生的网络事务量决定;

时延:由关键路径上事务数量决定。

应用特性:

实验表明共享块副本的节点数基本不随节点数增长。

相关分析:

扑空率—与协议的状态转换图有关;

扑空网络事务量—与协议实现及NIC有关;

关键路径事务数量--与目录组织和协议操作有关。

(2)影响目录存储开销可扩展性的因素

存储开销可扩展性由目录随节点数、主存增长的幅度决定。

如上页目录组织的可扩展性不好(开销线性增长)。

转上二页

转上页


3)基于目录一致性协议的优化

状态转换图的优化目标:

减少扑空率,减少网络事务数量;

操作的优化目标:

减少网络事务数量和大小,减少关键路径上事务数量,增加网络事务的并行性;

目录组织的优化目标:

减少存储开销,优化结构以适应协议操作的优化。


脏位

所有节点的

所有存储块

地址

存在位

3、目录组织的方法

不同组织方法主要差别:

寻找目录信息源和确定副本位置的方法不同。

组织方法:中心目录、分布目录(全映射目录、有限目录、链式目录)。

(1)中心目录

目录信息源:某特定的节点。

目录结构:

存储开销:目录表容量巨大,需采用相联检索;

对协议性能影响:会产生网络冲突,检索时间过长。


脏位

宿主节点所

有的存储块

存在位

(2)全映射目录—分布目录

目录信息源:各宿主节点(只保存本节点块目录)。

目录结构:

存储开销:

目录空间=[(N+1)/8]×(M/K)×N,

其中:N为节点数,M为各节点MEM容量,K为常量(块大小);

存储开销的复杂度为O(MN2)。

对协议性能影响:

无影响,关键路径上网络事务的数量只与协议有关。

回下页


脏位

宿主节点所

有的存储块

存在指针

(3)有限目录—分布目录

全映射目录的优化,目标是改善目录存储开销。

目录结构:共i个存在指针(节点号),

i为常量(最大允许节点数)。

存储开销:

目录空间=[(i×log2N+1)/8]×(M/K)×N;

存储开销的复杂度为O(MNlog2N)。

存在指针溢出的处理:

驱逐法(作废所有共享)、替换法(作废某个共享)、软件法(软件中断处理)等。

对协议性能影响:

共享块指针溢出的处理过程,降低了协议的性能,可通过选择i值来减少影响程度。

转上页

回下页


宿主主存

节点0 $

节点1 $

节点2 $

null

null

目录表项:

地址

状态

指针

(4)链式目录—分布目录

是全映射目录和有限目录的折中。

目录信息源:同一块的目录分布在多个节点中,共享块的目录头在宿主节点中。

目录结构:有分布式单向链表和双向链表两种结构。

存储开销:目录空间=[(s×2×log2N+1)/8]×(M/K)×N,

其中:s为块的平均共享节点数;

存储开销的复杂度为O(MNlog2N)。

对协议性能影响:

时延有所增加,带宽需求减小,有利于避免活锁。

转上页

回58页


3:干涉

2:干涉

1:请求

2:干涉

1:请求

1:请求

4a:修改

3a:修改

L

L

L

H

H

H

2:响应

4:响应

3:响应

3b:响应

4b:响应

R

R

R

a)严格的请求-响应

b)干涉转发

c)应答转发

说明:L—请求节点,H—宿主节点,R—拥有者节点

4、协议操作的实现

目标:减少网络事务量和大小,减少关键路径上操作数量,增加网络事务的并行性。

实现方法:严格的请求-响应、非严格的请求-响应(干涉转发、应答转发)三种。

考虑折中时延与带宽因素,采用应答转发方法较好。

5、协议的状态转换

在后面的案例分析中讲解。

回下页


L2$

L2$

L2$

L2$

P

P

P

P

P

P

P

P

NIC

主存

交叉开关

L2$

NIC

主存

二、目录协议设计的相关问题

1、协议的性能问题

(1)协议操作的优化

在时延与带宽两者间折中,以达到最佳效果。

(2)机器的高层组织结构

在两级Cache结构中,节点使用多处理器,以改进性能。

成本上:节点的固定开销增加;

性能上:降低了跨节点网络事务数量,且可合并多个请求;节点内网络带宽为各PE分摊。

转上页


2、协议的正确性问题

满足协议需求、保证存储一致性语义、避免死锁和活锁。

(1)协议需求保证

写传播通过目录结构、按照一致性协议稳定状态转换图的要求产生网络事务,实现写结果为所有PE所见的效果;

串行化通过宿主存储器按请求到达的次序和FIFO完成来实现所有PE按相同顺序看到结果的效果;

请求的完成通过请求的应答、响应或确认到达来标记,其间块状态用忙(或未决)状态表示(构成带过渡状态的转换图)。

块处于忙状态时,对后续操作请求的处理:

采用宿主提供缓冲、请求者提供缓冲、NACK回答并重试、转发给脏节点几种方法中的一种,或几种的混合方式。


2)顺序一致性语义保证

单个节点访存的顺序一致性通过对该节点存储器的所有访问串行化(按FIFO接收和处理)和原子性保证;

全局节点访问的顺序一致性无法保证(也不需要)。

访问完成通过协议所规定的所有响应/确认标记;

访问原子性通过访问请求发送后,PE一直等待,直到访问完成来保证。

(3)死锁和活锁避免

严格的请求-响应方案:与编程模型解决“取死锁”一致。

非严格的请求-响应扩充方案:

有潜在死锁时,临时性将转发应答协议回到严格的请求-响应协议。

活锁避免:采用FIFO缓冲,只通过头请求(其他回答NACK)。

转22页


I/O接口

主存

(1~4G)

SysAD总线

集线器

P

P

L2$

(1~4M)

L2$

(1~4M)

互连网络

三、全映射目录的协议分析—SGI的Origin系统

1、Origin2000硬件结构

(1)节点结构

处理器间不采用总线监听一致性协议,由Hub实现处理器间的Cache一致性(网络→PE采用广播、PE→网络采用合并)。

回下页


PE接口

扩展

目录

消息控制器

MEM/DIR接口

路由器

(交换机)

协议表

4×4

交叉开关

路由表

NIC

16位

目录

存储器

I/O接口

Hub(通信辅助部件CA)结构:

(2)网络互连

根据节点规模,节点间采用超立方体、或胖超立方体拓扑结构,通过SPIDER路由器和Cray路由器实现互连,互连节点数≤512(1024个PE)。

转上页


SSD/SSR

LLP

LLP

SSD/SSR

说明:

SSD—源同步

驱动器

SSR—源同步

接收器

LLP—链路级

协议电路

路由表

路由器

本地部件

发送器

接收器

发送器

接收器

SSD/SSR

LLP

LLP

SSD/SSR

LLP

SSD/SSR

SSD/SSR

LLP

发送器

发送器

6×6交叉开关

接收器

接收器

发送器

接收器

发送器

接收器

SPIDER路由器:--连接节点或路由器

由6个全双工、虫孔寻径链路组成,每条链路有两个单向16位物理通道,每个物理通道支持2个虚拟通道。

其中只有两个链路能与节点相连。

Cray路由器:--连接路由器

由8个独立的元路由器组成;每个元路由器节点度为7,各个元路由器与每个SPIDER路由器的不同顶点相连。

回下页


节点

SPIDER路由器

16个节点

32个节点

4个节点

8个节点

—Cray路由器

—元路由器

512个节点

64个节点

拓扑结构(胖超立方体结构):

节点≤32时,采用SPIDER路由器构成超立方体网络;

节点>32时,需采用Cray路由器构成胖超立方体网络。

转上页


2、Cache一致性协议

采用改进的MESI协议。

(1)块状态

稳定状态—未拥有(I)、共享(S)、排他(E/M);

忙状态—读忙(RdBusy)、排他读忙(RdXBusy)、非高速缓存读忙(NCRdBusy);

毒化状态—P(用于TLB管理)。

(2)目录组织的方法

目录结构为全位向量的扩展,表高度为存储器块数量。

(3)协议操作的实现

操作:读(Rd)、写(RdX)、回写(WB)。

实现:采用应答-转发方式,减少时延;

采用“忙”状态+NACK方式解决竞争和缓冲区满问题。

回57页


4)协议的状态转换图

说明:① 块状态—H指主存块状态(非H的Cache块状态),R/L指Cache块状态;

② 每种图例包括几种状态时的操作,如a(11)、a(12)、a(21)等;

③ R的“无动作”表示操作不影响R块状态或操作请求的完成;

④ “无网络事务”表示只有本地操作。

转下页


2b:干涉

1:Rd请求

1:①Rd/②RdX请求

2a:①共享响应/②无事务

3b:修改

2:①排他/②共享响应

3a:①无事务/②共享响应

(a)I/S态Rd和I态RdX请求

(b)E/M态Rd请求

2b:作废

1:RdX请求

1:①RdX/②Upgr请求

2b:作废

2a:①排他响应/②无事务

3b:修改

2a:排他响应

3a:①作废确认/②排他响应

3:①作废确认/②升级确认

(d)M态Rd/RdX请求

(c)S/E态RdX请求

L

L

L

L

L

L

L

1:①Rd/②RdX

/③Upgr请求

H

H

H

H

H

H

H

1:未决请求

2b:作废请求

1:WB请求

R

R

R

R

2a:WB请求

3a:响应

2:NACK

2:确认

2c:投机应答

3b:回写确认

(e)Busy态请求

(f)S/E/M态WB请求

(g)Busy态WB请求

操作请求对应的网络事务:

回上页


3、正确性问题分析

对一致性中串行化的保证:

忙状态下宿主拒绝请求(请求者缓冲请求),串行化由宿主节点接收请求的次序(FIFO)决定;

未决操作完成前不允许对同块的操作请求保证写原子性。

对存储一致性的保证:

串行化--PE能够保证操作请求按程序次序到达Hub,Hub的FIFO缓冲队列保证了请求的串行化;

写原子性--Hub只在收到全部应答(如响应和确认分时到达)时才将操作结果送回PE,保证完成次序与请求次序一致。

死锁、活锁问题解决:

检测到潜在死锁时,应答-转发转换为严格的请求-响应协议避免死锁;

用忙状态和NACK可避免活锁。


4、全位向量目录组织的扩展

目标:满足可配置的系统规模(如节点数量可变)需要。

基本目录硬件:存储块带有16位位向量目录;

并行查找的扩展目录MEM可扩展48位,组成64位目录。

目录结构组织:

节点数≤16时,只使用自带的16位全位向量作为目录;

节点数≤64时,使用带扩展的64位全位向量作为目录;

目录每位对应一个节点。

节点数n>64时,使用64位粗糙位向量作为目录:

位向量每位表示一个组(组内有n/64个节点);

网络事务被发送到组内所有节点,命中的节点按协议进行响应。

转53页


P

L2$

P

L2$

P

L2$

P

L2$

Quad

Quad

IQ-link

Quad

Quad

PCI IO

存储器

IO设备

Quad

Quad

管理与诊断控制器

Quad

网络互连结构

Sequent的NUMA-Q节点结构

四、链式目录的SCI协议分析—Sequent的NUMA-Q

1、NUMA-Q硬件结构

(1)基本结构

网络互连:采用高速SCI环结构互连(节点数≤8)。

节点结构:节点为4处理器(Pentium Pro)的SMP结构,L2$为512KB或1MB;PE间采用总线监听一致性的协议,节点间采用SCI协议(可扩展Cache一致性)。

回下页

转44页


交换机网络

SCI转入

目录控制器

(SCLIC)

···

Quad

IQ-Plus

Quad

SCI NIC

远程$标记

本地目录

Quad

Quad

SCI转出

总线接口控制器

(OBIC)

本地目录

远程$标记

远程$数据

处理器总线

(2)可扩展结构

网络互连:采用基于交换机互连的多个SCI环结构。

SCI环接口:用IQ-Plus盒连接SCI环和交换机网络。

(3)IQ-Link链路板结构

为支持总线监听协议,IQ-Link必须实现伪MEM和伪PE功能。

转上页

回下页


OBIC--管理远程Cache、总线监听和请求,是伪MEM和伪PE;

SCLIC--管理SCI一致性协议;

远程Cache—存储远程块的副本,容量为32MB,为4个P6所共享,以减少网络事务;

本地目录—所有本地存储块的一致性目录,分为总线侧目录和网络侧目录,以减少SCLIC与OBIC通信及满足总线速度要求,网络侧用DRAM组成,总线侧用SRAM组成;

总线侧信息—2位状态

网络侧信息—2位状态、6位SCI链表头指针(单向)

远程Cache标记—远程Cache中的Cache块的标记,设置思路与本地目录一致。

总线侧信息—4位状态

网络侧信息—7位状态、两个6位SCI链表指针(双向)

转上页

回下页


SCI NIC

SCI NIC

传播

一致性

远程$

标记

远程$

标记

本地

目录

本地

目录

SCLIC

SCLIC

目录SCI

一致性

OBIC

OBIC

远程$

标记

远程$

标记

远程$

远程$

本地

目录

本地

目录

L1$

L1$

L1$

L2$

L2$

L2$

存储器

存储器

总线监听MESI一致性

2、Cache一致性协议

各PE L2$、远程$间采用总线监听一致性的MESI协议;

节点间采用基于链式目录的SCI一致性协议。

IQ-Link中远程$与本地各L2$间保持包含关系。即:

本地各L2$--可包含本地存储块和远程存储块;

远程$--只包含远程存储块,且可能不在本地某L2$中。

转上页


1)块状态

L1$、L2$的块状态—M、E、S、I;

本地目录的块状态—宿主HOME(远程I态)、新鲜FRESH(远程E/S态)、过时GONE(远程M态);

远程$标记的块状态—用7位表示29个稳定态和多个未决态

稳定态—包括链表位置+实际状态

链表位置状态—惟一ONLY、头HEAD、尾TAIL、中间MID,

实际状态—脏DIRTY、干净CLEAN、新鲜FRESH、副本COPY等;

如OD(ONLY-DIRTY)、HD、MD、TD、OF、HF、MF、TF等

未决状态—在两个稳定态转变过程未完成时的状态。

(2)目录组织的方法

目录结构为分布式双向链表,宿主节点只要一个指针即可。

回下页

回下二页


R1

R2

R1

R2

R1

R2

H

H

H

操作:

null

null

null

L

R1

R1

结果:

R1

R2

H

R2

R1

H

null

L

R1

R2

H

null

(a)构造

(b)转出

(c)清除

null

(3)协议操作的实现

链表操作:构造、转出、清除(作废)。

构造—将请求操作的节点加到链表头部(头节点);

转出—从链表中去掉一个节点;

清除(作废)—(只有)链表头节点清除所有其他节点。

操作实现:采用严格的请求-响应协议;

采用未决链表避免缓冲区满和解决竞争问题。

协议操作:读(Rd)、写(RdX)、回写(WB)。

操作实现:根据块状态,由一系列链表操作组成。

转上页


4)协议的状态转换图

①GONE态时数据由链表原头节点提供,HOME、FRESH态时由宿主提供;

②原链表节点变化:OF→TF、HF→MF、其他不变,下同;

转上二页

回下页


null

null

TD

MD

TD

HD

HD

③与更新协议类似,不立即更新宿主节点,请求节点成为新的头脏节点,各节点数据相同,链表有如下两种形式:

链表节点状态变化:OD→TD、HD→MD、其他节点不变;

④Rdx请求要求先将请求节点置为头节点,然后清除所有非头节点,将状态改为OD,*F/*D指原链表所有节点(请求节点除外)各种FRESH/GONE状态;

⑤*F态的WB请求仅将L从链表中转出,新链表各节点状态相应变化,H节点根据新链表节点数变为HOME(H)/FRESH(F)态;

⑥~OD态的WB请求仅将L从链表中转出,新链表各节点状态相应变化,只有请求节点状态为OD时才将数据写回宿主节点。

转上页


宿主

C

B

A

X

PENDING

TF/TD

稳定态

PENDING

PENDING

未决头部

头部

共享链表

未决链表

请求次序:A→B→C;

未决节点处理:更新pBack指针,指向后续请求者,操作完成时响应pBack所指节点完成其操作请求;

完成次序:A→B→C。

3、正确性问题

对一致性中串行化的保证:

只有请求节点有“忙”状态(未决状态),宿主节点和链表中节点无此状态;

未决状态节点不采用NACK应答后续请求者,而形成未决链表(状态是PENDING),未决链表以FIFO次序完成;

串行化次序由请求到达宿主节点的次序决定。


对存储一致性的保证:

不满足顺序一致性,使用处理器一致性模型。即:

串行化--PE按程序次序发出操作请求到节点总线,IQ-Link的FIFO缓冲队列按序接收总线请求;

写原子性--未决链表FIFO处理方式保证宿主节点完成请求的次序与PE请求次序一致。

死锁、活锁和挨饿避免:

未决链表使请求者缓冲请求(等待pNext节点完成请求),输入缓冲区不会满,同时采用严格的请求-响应协议,不存在死锁问题;

采用未决链表方法,避免了活锁和挨饿的发生。


第五节 放松的存储一致性模型

一、放松的一致性模型

有处理器一致性PC、弱一致性WC、释放一致性RC等模型。

正确性要求:放松的一致性模型的执行结果必须和顺序一致性模型的执行结果相同。

存储次序要求:不同的放松的一致性模型对存储次序的要求不同。不同的存储次序意味着所有处理器执行顺序的不同。

1、处理器一致性(PC)模型

定义:满足正确性要求,同时须满足下列条件:

①某读操作允许执行前,所有先于该读操作的同一处理器的所有读操作均已完成;

②某写操作允许执行前,所有先于该写操作的同一处理器的所有访存(读和写)操作均已完成。

回下页


条件②

P0:

无此要求,宿主MEM按FIFO处理

P1:

正确性要求

条件①

S

W2

R1

W1

W2

W3

S

R3

W4

R2

R1

程序次序与执行次序:

W→W、R→R、R→W按序执行,W→R的R可提前执行。

处理器一致性的扩展:

全存储定序TSO:放松W→R访存序,采用该方法的有Intel系列、SPARC V8等;

部分存储定序PSO:更松的限制,如放松W→R、W→W访存序,采用该方法的有SPARC V9等。

处理器一致性的应用特性:

可实现存储器的访问缓冲和顺序流水线操作。

转上页

回下页

回下三页


P0:

P1:

W1

R2

W2

S2

S2

S3

W1

W2

R3

W3

R1

S1

2、弱一致性(WC)模型

定义:满足正确性要求,同时须满足下列条件:

①某读/写访问允许执行前,所有先于该读/写操作的同一处理器的所有同步访问均已完成;

②某同步访问允许执行前,所有先于该同步操作的同一处理器的所有读写访问均已完成;

③各同步访问之间满足顺序一致性。

程序次序与执行次序:

同步间的操作不需遵循SC模型,同步操作内遵循SC模型

弱一致性的应用特性:

可基本实现单处理器中所有优化技术。

转上页

回下页

回下二页


P0:

R1

W2

R2

W1

R3

R3

W2

R1

SA1

SA2

SR1

SR2

P1:

3、释放一致性(RC)模型

定义:满足正确性要求,同时须满足下列条件:

①某读/写操作允许执行前,所有先于该读/写操作的同一处理器的所有获得操作均已完成;

②某释放操作允许执行前,所有先于该释放操作的同一处理器的所有读/写操作均已完成;

③特殊操作(获得和释放)之间满足处理机一致性。

释放一致性的应用特性:

可在同步点间操作和同步操作内基本实现单处理器中所有优化技术。

转上页

回下页


顺序一致性(SC)

任何执行结果认为是在多线程顺序机器上各操作交错执行的结果

处理机一致性(PC)

各处理机的写操作按程序次序,但不同处理机的写操作无此要求

弱一致性(WC)

程序员利用同步操作确保顺序一致性

释放一致性(RC)

具有获得和释放两类同步操作的弱一致性,每类操作保证处理机一致性

4、存储一致性模型比较

转上三页

转上二页

转上页


二、存储一致性模型的框架模型

存储一致性模型的本质:是决定程序执行结果和正确程序的编制界面的某种机制。

1、面向硬件设计的存储一致性模型

通过限制访存次序来描述存储一致性模型。

原因:程序执行结果由程序中访存操作的执行次序决定;

如PE间同步操作的执行次序限制直接决定了程序的执行结果。

2、面向程序设计的存储一致性模型

通过定序所有冲突访问来描述,以保证不出现访问的冲突。

原因:程序执行结果由程序中冲突访问的定序决定;

如同步操作与读写操作间,及同步操作间次序。

框架模型包含内容:包含冲突访问的类型及其次序限制。


三、Cache一致性协议与存储一致性模型关系

Cache一致性协议是为实现某种存储一致性模型而设计的。

①存储一致性模型是一种标准,规定了Cache一致性协议中“一致性”的定义(或含义);

如SC模型中PE写后立即传播,而RC模型中其他PE等到锁释放时才看到。

② Cache一致性协议是一种传播新值的机制,是存储一致性模型的具体实现。

一致性协议包含如下方面:

如何传新值—写无效/写更新

谁产生新值—单写协议/多写协议

何时传新值—及时传播/延迟传播

新值传向谁—监听协议/目录协议


第六节 时延包容技术

一、时延包容技术概述

1、时延包容技术

执行时间:T(n)=Tcomput+Tlocaldata+Tcomm+Tsynch+Tpara

通信时间:Tcomm=频率×(T处理+TCA+T路由+T通道+T竞争-T重叠)

减少数据访问时延的方法:

①优化访存路径,以减少每层的访问时间;

②重构系统,以减少高时延访问的频率;

③重写应用程序,以减少高时延访问的频率;

④开发通信、计算并行性,隐藏访问时延。

开发T重叠的方法--时延包容技术

开发通信与计算间、通信与通信间的并行性。


时延包容技术:

①时延避免—采用放松的存储一致性模型、大块数据传输等方法,避免一部分通信;

②时延容忍—采用预通信、多线程等基于重叠的方法,隐藏通信时延;

③时延减少—采用用户级通信技术(如远程存储器读写和主动消息等)和流水技术,减少必要通信中的时延。

回78页


1.0

Tcomp

Tcomm

0.5

(a) Tcomp与Tcomm重叠,Tcomm间不重叠

(b) Tcomp与Tcomm重叠、Tcomm间重叠

2、时延包容技术的基本要求与性能

(1)基本要求

足够的并行度:可重叠的计算/通信无相关,并行度>PE数;

更高的带宽:通信量并没减少,能够减少通信时间;

更复杂的硬件和协议:并行性的要求、多写协议等。

(2)性能上限分析

设:Tcomp=T计算+T处理,Tcomm=TCA+T网络+T竞争

则:S重叠=(Tcomp+Tcomm)/Tcomp=1+Tcomm/Tcomp

通信间不重叠时,S重叠≤2;为提高性能,通信间须重叠。


3、消息传递模型的各种时延包容技术

(1)大块数据传输

分摊每字节数据的通信开销(即T处理、TCA、T路由)。

(2)预通信

采用异步发送方式,使计算与通信重叠;

采用软件流水思想,增加计算与通信重叠的程度,及尽量平衡每个流水步的计算时间与通信时间。

(3)跨越同一线程的通信操作

采用异步接收方式,使本进程/线程后续的、与所接收消息无关的计算或通信可以继续进行。

阻塞点:与通信有关的计算、或到达最大未完成消息数。

(4)多线程

进行发送或接收操作时,挂起当前线程、切换到另一线程。

转76页


二、时延避免

以下均基于共享地址模型(不一定是CC-NUMA) 讨论。

1、采用放松的一致性模型

硬件DSM:采用放松的存储一致性模型,放松对PE内访存次序的限制,以利用优化的硬件技术和编译技术避免延迟;

软件DSM(SVM):采用放松的Cache一致性协议,减少通信次数和通信量。

硬件避免时延机制:--越过长延迟事件

缓冲—使访存操作非阻塞,PE可越过访存操作执行后续指令,如读/写缓冲、动态调度等机制,重叠计算与访存延迟;

流水--存储操作以流水方式进行,重叠访存延迟。

重叠程度:由一致性模型、编译器及硬件提供的机制决定。


2、大块数据传输

传输机制:

程序采用显式命令(如put)触发大块传输;

大块传输可指定数据在目的节点的虚地址;

采用DMA引擎或Cache一致性硬件逻辑负责传输。

传输策略:

①只允许包含全部大块数据的宿主节点进行大块传输;

②由发送者从其他宿主节点获取数据,并流水发送;

③由发送者通知其他宿主节点将数据发送到接收者处。

策略选择:需注意一致性问题和网络事务流量。

目的节点在何处存放大块数据:

将数据存放在较大的L2$中较好,而非主存或L1$中。


三、时延容忍

1、预通信—预取和预送

预取分类:

硬件控制的预取—无需程序添加指令,对软件透明;

软件控制的预取—由程序员或编译器用指令实现。

扩展:可与大块传输结合,实现大块预取和大块预送。

预取数据与一致性:

绑定预取—数据预取后值不再发生变化(不受Cache一致性影响),适用于非CC-NUMA系统(数据预取到缓冲区内);

非绑定预取—数据预取后受Cache一致性影响(可被无效或更新),适用于CC-NUMA系统。


预取分析(取何数据)与调度(何时预取):

分析目标—最大化覆盖率、最小化不必要的预取;

调度目标—最大化预取的效率。

影响因素--不必要的预取与程序数据访问模式和局部性、Cache结构和容量有关。

(1)硬件控制的预取

硬件需提供动态检测数据访问模式的功能。方法:

a.使用更大的Cache块,但无法控制分析与调度的三个目标;

b.使用基于PC、包含数据访问信息的历史表,通过堆栈形式的表实现何时预取数据(访问局部性),通过历史信息对预测数据进行预测实现取何数据要求。

特点:硬件预取技术的灵活性不高,一般系统倾向于提供预取指令,使用软件控制的预取。


2)软件控制的预取

由编译器或程序员在程序的适当位置插入预取指令实现。

单处理器的预取技术:

对规则的访问模式,编译器插入预取指令可行;

对不规则或动态访问模式,程序员应手工进行预取。

支持Cache一致性的多处理机预取:

a.预取通信失效—不应过早预取,或使用前再次预取;

b.按所有权预取—系统提供独占预取指令,减少通信。

(3)预取的性能分析

采用非绑定预取(支持一致性Cache)和放松的存储一致性模型可有效改进性能;

采用预取和多线程方法可获得更好的性能改进(预取主要利用单线程内的并行性,无法利用多线程的并行性)。


节点N1

节点N2

节点N1

节点N2

ready1

CTEXT

A

CTEXT

A

C

vA

vB

pA

pB

C

vA

vB

pA

pB

指针

ready2

节点N3

节点N3

B

B

节点N1要求执行C=B-A=vB-vA

vA=rolad pA

vB=rolad pB

节点N1要求执行C=B-A=vB-vA

A、B并发地进行计算

A、B准备就绪后,必须通知N1上的线程

远程加载

(a)远程加载问题

(b)同步加载问题

2、多线程

多线程不能加速单个线程的执行,可加速进程的执行。

(1)并行程序异步性问题

异步性引起远程加载和同步加载两个基本时延问题。

特征:远程加载时延可预测,同步加载时延不可预测。

解决:分布式Cache可解决问题一,多线程可解决两种问题。


处理器

存储器

处理器

存储器

就绪线程队列:

CPU

REGs

PC

现场选择控制器

就绪线程队列:

Cache

CPU

PSW

PC

……

PSW

REGs

PC

REGs

Cache

PSW

装载的线程

装载的线程

(a)软件实现的多线程机制

(b)多套硬件实现的多线程机制

(2)多线程实现的方法

软件实现的多线程PE:PE空闲时,从就绪线程队列中选择一个线程装入PE,硬件只有一组REG(对应一个现场)。

多套现场硬件实现的多线程PE:PE中有多套现场,可同时装载多个线程,减少线程切换时延。

回下页


处理器

存储器

就绪线程队列:

CPU

REGs

PC

Cache

PSW

CPU

REGs

PC

Cache

PSW

装载的线程

(c)多片P实现的多线程机制

多片P实现的多线程PE:PE中有多个P,每个P对应一个现场(线程),进一步提高线程切换速度。

三种方案比较:多套现场硬件实现的多线程PE较好。

转上页


I-Cache

取指部件

I-FIFO

I-FIFO

I-FIFO

PC

PC

PC

译码部件

译码部件

译码部件

指令调度部件

整数加法器

桶形移位器

整数乘法器

FP加法器

FP乘法器

取/存部件

取/存部件

D-Cache

组1

组2

组3

组4

组n

REGs(分配给

执行线程)

REGs(分配给

等待线程)

REGs(分配给

就绪线程)

大型REG堆和

队列REG

(3)多线程处理器分析

多线程处理器示例:三套线程硬件现场的多线程处理器。


现场切换策略:

有在Cache扑空时切换、在每次加载时切换、执行每条指令时切换、执行指令块时切换四种策略;

选择:一般只选择1~2种切换策略。

处理器效率分析:

单线程—E1=R/(R+L),R为两次远程访问间隔、

L为远程访问时延;

饱和区--Esat=R/(R+C),C为线程切换开销,C<<L;

线性区--Elin=NR/(R+C+L),N为执行线程数。

多线程提高了处理器效率,但增加了网络带宽(单位时间内的流量)需求。


四、时延减少

主要思想:用户级通信技术(让用户绕过OS直接通过CA/NIC进行通信),流水技术(使传输过程重叠和流水)。

相关问题:用户级网络ULN的通信模式、DMA/PIO传输、地址转换和保护的实现、NIC是否支持流水、消息到达通知实现等。

(1)通信模型

有标准消息传递、远程存储器读写访问、主动消息方式3种。

标准消息传递模式:

同步方式(消息约会)—发送/接收端相互等待,如MPI;

异步互锁方式(请求-应答)—接收的消息存储在缓冲区队列中,通过中断或查询机制实现消息到达通知;

异步非互锁方式(重定向)—接收的消息存储到临时缓冲区中,接收操作执行时查询缓冲区实现(无消息到达通知)。


远程存储器读写访问模式:

通信前,用户通过系统调用建立好发送端和接收端的共享虚存的映射关系(即两端数据块虚拟地址的对应关系);

通信时,接收端CA直接将数据复制到相应位置上,以减少OS介入的时延,如专用消息处理的CA或共享物理地址的CA。

主动消息模式:

消息中携带接收端的消息处理函数句柄,接收端直接利用句柄进行处理,以减少OS介入和中间环节的时延。

(2)数据传输方式

PIO适合短消息的数据传输;DMA适合长消息的数据传输(建立时间长和实地址导致的拷贝问题);

选择:取决于通信模型相关问题的抉择,但大块数据传输肯定使用DMA方式(如页拷贝)。


3)保护机制的实现

原因:多个用户/进程同时对NIC操作所致;

实现:每个进程只能访问NIC存储器的不同部分;

实现时冲突的解决:采用高速缓存技术进行切换。

(4)地址转换的实现

PE直接将数据写到NIC,可实现零拷贝,但PE介入通信操作会引起额外开销。

实现:对需传输的页面(或块)采用动态插桩方法,使DMA能够访问已插桩的页面(或块),以实现零拷贝、减少额外开销。

实现时冲突的解决:可采用用户实现地址转换(如系统调用实现映射),或OS内核与NIC协作实现地址转换。


5)消息的流水处理

消息传输过程:发送节点MEM→发送NIC的MEM→IN→接收NIC的MEM→接收节点MEM。

流水处理:

消息间流水—多个消息传输重叠,如虚拟通道;

消息内流水—同一消息传输过程重叠,如虫孔寻径。

(6)消息到达的通知

通知方式:PE定时查询、NIC发出中断[、PE需要时查询(如异步非互锁方式)];

性能分析:查询频率、处理时延←→中断处理开销;

实现:一般同时支持两种方式,且可动态转换。

用户级通信技术的选择与实现:

应根据对通信系统的性能、成本要求进行权衡与折中。


ad