多处理机
8 多处理机
8.1 多处理机结构
8.1.1 多处理机分类
-
多处理机系统由多个独立的处理机组成,每个处理机都能够独立执行自己的程序
-
连接程度:紧耦合、松散耦合
-
是否共享主存:共享存储器、分布存储器多处理机
-
按处理机类型:同构型、异构型 多处理机
-
按处理机的个数:大规模并行处理机MPP 和 堆成多处理机 SMP
-
按照PE和IIOP之间的连接方式分: 对称型:每个IOP能连接到所有的PE上、 非对称型:每个IOP只与一个PE连接、
冗余对成型:一个PE和多个IOP连接 -
按照存储器的访问方式:均匀存储器 UMA模型、非均匀存储器 NUMA模型、 只有cache COMA模型
-
多向量处理机、机群系统
基本概念
- 属于多指令流、多数据流系统
8.1.2 多处理机和并行处理机的差别
8.1.3 多处理机存在的技术问题
- 硬件结构互联
- 最大限度并行
- 分割任务大小
- 并行任务同步
- 资源调度、防止死锁
- 系统故障,如何重新组织正常工作
多处理机硬件结构
1 紧耦合多处理机
- 通过共享主存实现处理机间通讯,通信速率首先有主存频率
- 为减少主存冲突,采用模M多体交叉
- 各个处理机为同构型,同一类型、功能相同的多处理机
- I/O-处理机互连网络虽然连接灵活,但价格昂贵,所以多数多处理机采用非对称互连。
非对称会连:每个IOP之和一个PE连接,容错性小 - 处理机共享主存,通过高速总线或告诉开关连接
- 多个输入输出处理机IOP也连接在互连网络上,IO设备与CPU共享主存
- 处理机数量不能太多,几个到几十个
- 要求较高通信带宽
2 松散耦合处理机
- 每台处理及有较大的局部存储器,减少冲突访问
- 处理机通过信道互连 或者 信息传递系统 实现通信
- 松散耦合,粗粒度执行并行计算
- 两种构型: 松耦合非层次型多处理机、层次型总线形式多处理机
- 主机间连接频带较低
- 通过并口、串口把多台计算机连接起来
- 通过以太网连接多台计算机
机间互联形式
总线形式:
- 总线仲裁算法:
- 静态优先级
- 固定时间片
- 动态优先级
- 先来先服务
环形互联;
- 令牌 token
交叉开关形式; - 交叉开关阵列复杂
多端口存储形式
蠕虫穿洞寻径网络
机间采用小容量缓冲存储器,实现消息分组寻径存储转发之用
开关枢纽结构形式
把互连结构的开关设置在各个处理机或其接口内部,组成分布式结构
存储器组织
并行存储器,高位交叉、低位交叉;
低位交叉:
- 按物理地址轮流分布在各个存储模块中,同一个存储体内不连续
- 同一个存储体内,步距为m
- 向量、流水或阵列处理机中采用低位交叉
高位交叉:
- 同一存储体内连续分布
- 多处理机采用高位交叉
8.2 多处理机 cache 一致性
采用局部cache 引起cache和共享存储器之间一致性的问题
8.2.1 多处理机cache一致性问题的产生
1 写共享数据引起的不一致性
2 进程迁移引起的数据不一致
3 I/O造成的数据不一致
8.2.2 监听协议
解决cache不一致性问题的协议;
-
监听协议:总线互联
-
目录协议:用于无法进行监听时
1 两种监听协议
写无效策略: 本地cache修改时,使远程数据块都无效
写更新策略: 本地cache修改时,将数据块广播给其他cache
-
cache采用写通过,在使用无效、更新策略时,还要同时修改共享存储器中的内容。
-
写更新,总线负担重,大多数处理机系统用写无效
2 采用写通过方式的cache
- 数据块有两种状态: 有效、无效
3 采用写回方式的cache
- 只读状态: 表示整个系统中,有多个数据块拷贝是正确的(例如: 一个在cache种,另一个在存储器中)
- 读写状态: 表示数据块至少被修改过一次,存储器中相应数据块还没有修改,在整个系统中只有一个数据块拷贝是正确的
4 写一次协议
- 第一次写cache用写通过,以后用写回
四种状态:
- 有效: 从存储器中读入并与存储器拷贝一直的cache数据块
- 无效:在cache中找不到或数据块已作废
- 保留:数据从存储器读入cache后只被写过一次,cache和存储器中都正确
- 重写:cache中数据块被写过多次,且唯一正确
- 主要缺点:当主存储器的内容无效时,读缺失引起的总线读操作必须禁止访问主存储器,而大多数总线不支持这种操作
- 主要优点: 减少了大量无效访问,提高总线效率
上图有bug,无效应该是 WR RR的自环
CPU读cache的两种可能性
写命中、写不命中
8.2.3 基于目录的协议
把使得其他cache块无效的一致性命令只发给存储响应数据块的cache
1 cahce目录结构
- Cache目录中存放大量指针,指明拷贝块的地址,每个目录项有一个重写位,指明,是否允许一个cahce块写入数据
- cache目录的存放形式,有集中式和分布式两种
目录协议分成三类:
- 全映射目录: 存放全局存储器每个块的有关数据
- 有限目录:每个目录的指针数固定
- 链式目录:把目录分布到cahce块中
目录使用规则:
- 当一个CPU对cache进行写操作时,将cache目录中,所有存有相同拷贝的块置无效,并置重写位
- 在CPU对Cache进行读操作时,如果读命中,则直接读Cache即可
- 如果重写位为“0”,则从主存或其他Cache中读入该块,并修改目录
2 全映射目录
- 优点:全目录协议效率高
- 缺点: 开销与处理机数目的平方成正比,不具有扩展性
3 有限目录
- 处理机数目为N时,限制目录大小 O(N log2N)
- 因为目录有限,cache1 cache2 都有X的拷贝时,P3访问X,需要驱逐一个
4 链式目录
- 当cache中的数据块需要替换的时候,把该cache从目录链中删除,解决方法:
- 优点:不限制共享数据块的拷贝数目,保持可扩展性
- 缺点:复杂度高