并行与分布式 第七章 体系结构 上

2023-12-13 13:26:56

并行与分布式 第七章 体系结构 上

7.1 多处理器结构

7.1.1 多处理器存储结构分类

非共享存储多处理器

  • 每个处理器内存私有,逻辑上独立编址不共享,无Cache一致性问题
  • 属于松散耦合系统,支持消息传递编程模型,如OpenMPI。
  • 多个处理器存在于多个计算机中,实质是多进程MIMD问题
  • 集群工作站(Cluster of Workstations,COW)/大规模并行处理机
    (Massively Parallel Processing,MPP)

共享存储多处理器

  • 所有处理器内存共享,逻辑上统一编址共享,有Cache一致性问题
  • 属于紧密耦合系统,支持共享存储编程模型。如OpenMP
  • 多个处理器存在于同一个计算机中,实质是多线程MIMD问题

7.1.2 非共享存储多处理器

工作站机群(COW)
? 每个节点是一套完整的计算机系统(SMP或Workstation),拥有本地
磁盘和独立完整的OS;
? 使用低成本的商用互联网络实现节点间的互联
? 作业通常由大量服务组成,服务有各自的私有地址空间
? 服务间采用RPC或Resful API互相调用,通过消息队列来协调工作流程
? 企业级应用,廉价、大规模、扩展性,MapReduce@Hadoop

请添加图片描述
三高系统目标

  • 高可用:结构鲁棒性(多活实例)、数据可靠(热备与副本)、可重构系统(多点协同) (节点宕机与链路断路实验)
  • 高性能:负载均衡(反向代理)、弹性计算(webservice)、低延迟(消息队列,分布式缓存) (峰值性能暴力测试)
  • 高可信:数据加密,身份认证,权限控制

大规模并行处理机(MPP)
? 使用高宽带低延时的通信网络实现节点间的互联
? 具有较好的可扩放性,支持数百/千万级别的处理器规模
? 作业通常由大量进程组成,进程有各自的私有地址空间
? 进程采用消息传递机制,常采用阻塞报文交互方式
? 一个OS管理所有的硬件 超算

请添加图片描述

7.1.3 共享存储多处理器

集中式共享存储多处理器
? CSM:Centralized Shared-Memory Multiprocessor
? SMP:Symmetric Shared-Memory Multiprocessor
? UMA:Uniform Memory Access Multiprocessor
? 处理器访问存储器的时间是一样的(均匀的)

请添加图片描述

分布式共享存储多处理器
? DSM: Distributed Shared-Memory Multiprocessor
? AMP:Asymmetric Shared-Memory Multiprocessor
? NUMA:Non-Uniform Memory Access Multiprocessor
? 处理器访问存储器的时间是不一样的(非均匀)
请添加图片描述

7.1.4 多核结构

原有的多处理器是指多个CPU,每个CPU是单核的。多核技术是对多处理器技术的进一步扩展,多核技术是指在一枚处理器中集成两个或多个完整的计算内核,从而提高计算能力的技术。多核CPU采用了与原来的单CPU相同的硬件体系结构,显著提升计算能力的同时无需进行硬件技术的变更。

多核架构的研究内容

  • 片内处理核心的个数
  • Cache层次和容量分布
  • 互连结构
  • 晶体管使用的平衡度

典型多核结构:专用L1-Cache结构
早期多核处理器的一种组织架构,现在在嵌入式芯片中仍能见到。在这种组
织方式中,只有一级片内Cache,每个核带有自己的专用L1 Cache,分成指令Cache和数据Cache。这种组织的一个典型实例是ARM11 MPCore。
请添加图片描述

典型多核结构:专用L2-Cache结构
专用L2 Cache多核系统结构无片内共享Cache,在这种结构里,片内有
足够的可用面积容纳多个L2 Cache。这种组织的一个典型实例是AMD Opteron。

请添加图片描述

典型多核结构:共享L2-Cache结构
共享L2 Cache多核系统结构采用了和专用L2 Cache多核结构类似的存储空间分配,不同的是该处理器架构拥有共享L2 Cache,Intel的Core Duo处理器就是这种结构。
请添加图片描述

典型多核结构:共享L3-Cache结构
共享L3 Cache多核系统结构出于性能上的考虑,分离出一个独立的三级
Cache,每个CPU计算内核除了拥有专用的一、二级Cache外,还共享L3
Cache; Intel Core i7就是这种结构。

请添加图片描述

基于Cache结构的优点

  • 全局数据在共享Cache级上不需要复制,内核间通信开销低
  • 层次化Cache系统化减少整个系统的不命中概率,局部线程能使用更多的Cache空间
  • Cache在芯片晶体管面积中占比增大,可以显著降低系统功耗

7.2 Cache一致性问题

7.2.1数据共享引发的问题

共享数据在共享存储多处理器结构中,只供一个处理器使用的数据称为私有数据,多个处理器共同使用的数据称为共享数据,各个处理器通过对共享数据的读写来实现通信。

缓存一致性问题
? 数据进入Cache,可减少平均访存时间和减轻对存储器的带宽要求。
? 私有数据进入Cache,不会引入新的问题
? 共享数据进入Cache,则同一存储块在多个处理器的Cache中有副本,当某个处理器对其Cache中的副本修改后,该副本与其他副本中的数据不一致,称为多处理机的Cache一致性问题

7.2.2 Cache一致性协议

Cache一致性协议的分类

  • 写作废协议(Write invalidate)vs 写更新协议
    ·发生WtHit时,把所有其他副本全部作废,还是将新数据同步更新到所有副本
  • 写直达协议 vs 替换写回协议
    ? 发生RdMiss/WtMiss时,去存储器获得最新数据,还是从远程cache获得最新数据
  • 按写分配协议(经过cache)vs 不按写分配协议(绕过cache)
    ? 发生wt时,先调入本地cache再wt,还是直接到数据所在处wt

Cache一致性协议的两种实现方式

监听式协议
? 基于总线传递信息:1vN
? 存储器中数据块的共享状态信息分散保存在各个Cache中,物理上分布的各个存储器拼合成逻辑上统一的大存储器,物理上分布的cache状态信息拼合成逻辑上统一的Cache Hot状态。

目录式协议
? 基于互联网络传递信息:1v1
? 存储器中数据块的共享状态信息集中保存在本地目录中,物理上分布的各
个存储器拼合成逻辑上统一的大存储器,物理上分布的目录拼合成逻辑上
统一的大目录。

写更新 vs 写作废

? 占用总线进行状态信息传输的次数、内容和数据量
? 占用总线进行数据传输的次数、内容和数据量
? 对同一个数据,从对它的写操作到它的读操作之间的延迟

7.2.3 监听协议的实现

监听协议的实现保存信息

? 替换写回法Cache的修改位可直接实现一致性(修改位置1的必然是系统中唯一最新副本)
? Cache原有的有效位可以直接实现作废操作
? Cache原有的Tag可直接实现监听(地址Tag比对)
? 给每个Cache块增设一个共享位(独占为0共享为1)
监听协议的实现传递信息
RdMiss/WtMiss/Invalidate
监听协议状态、操作、时序

? 每个Cache控制器内嵌入有限状态机
? 操作包括:改变Cache状态,通过总线访问存储器,通过总线发送Cache作废
? 写访问串行化通过总线控制权的竞争来保证

每个cache包含四个部件
? Cache控制器
? Cache地址表(lookup table)
? Cache数据表(data table)
? Cache状态表

每个cache中的数据块只有三种状态:

? Invalid(无副本)
? Shared(至少1副本且存储器中的值是最新值,clean,只读)
? Modified(唯一副本且存储器中的值是旧值,dirty,读写)

Cache控制器有两个探针

? 一个探针监听本地CPU
? 一个探针监听共享总线

每个CPU只与本地cache控制器交互
? CPU不连入共享总线,所有远程访问均经过本地cache控制器实现

本地Cache控制器监听本地CPU的数据请求地址
请添加图片描述

本地Cache控制器通过总线监听其他远程Cache
请添加图片描述

监听式协议小结

? 两种情况下cache块写回存储器:发生M块替换,以及M变S之前
? 两种情况下Invalidate:收到Invalidate,以及收到WtMiss
? 调入新块时,优先从远程cache调,没有才从存储器调;多个远程cache可能都有share状态的副本,多个cache要竞争
? 直接利用系统中已经存在的总线和Cache状态位,实现容易,成本 较低
? 一个cache在总线上广播,其他cache监听,系统规模变大时,广播 操作将成为系统瓶颈,因此该协议的可扩放性较差

7.2.4目录式协议

目录:一种逻辑上集中的数据结构。对于存储器中的每一个可以调入Cache的数据块,在目录中设置一条目录项,用于记录该块的状态以及哪些Cache中有副本等相关信息。 对于任何一个数据块,都可以快速地在唯一的一个位置中找到相关的信息。

物理上分布式:适用分布式共享存储多处理器,目录与存储器均分布在各节点中,每个目录中仅保存对应本地存储器的cache状态信息,对不同目录的访问可以在不同节点上并行

分布式共享存储多处理器(增加目录)
请添加图片描述

节点分类及关系
? 请求节点A(发出访问请求地址K)
? 目录节点B(维护地址K对应的唯一存储器的目录,不分本地还是远程)
? 远程节点C(其cache中拥有对应副本,逻辑上的远程)

请添加图片描述

宿主

  • 请求节点A通过K可以解析出唯一目录节点B,K高位为存储器节点索引,K低位为存储器节点内偏移,所有存储器采用高位交叉编址,对存储单元矩阵按列优先的方式进行编址,同一个存储器中的高log2m位都是相同的
  • 目录节点B通过查询目录状态信息,可能从自己的存储器中取出数据向A提供服务,也可能会从共享集中选中一个远程节点C,从其Cache中取回副本然后向A提供数据服务

系统各部件状态

  • 目录为存储器中的每个存储块记录状态,共有三种状态
    ? Uncached(所有cache中无副本)
    ? Shared(至少1副本且存储器中的值是最新值,clean,只读模式)
    ? Exclusive(其拥有者cache具有唯一副本且存储器中的值是旧值,dirty,读写模式)

每个cache为本地缓存的数据块记录状态,共有三种状态
? Invalid(无副本)
? Shared(至少1副本且存储器中的值是最新值,clean,只读模式)
? Modified(唯一副本且存储器中的值是旧值,dirty,读写模式)

每个cache为本地缓存的数据块记录状态,共有三种状态:
? Invalid(无副本)
? Shared(至少1副本且存储器中的值是最新值,clean,只读模式)
? Modified(唯一副本且存储器中的值是旧值,dirty,读写模式)

目录状态信息
? 目录状态信息是一种数据结构,用于记录哪些cache拥有数据块的副本。
? 最常用的实现技术是采用位向量:为被缓存的设置是每个主存块设置一个位向量,向量中的每一位对应于一个处理器,其长度与处理器的个数成正比。由位向量指定的处理机的集合称为共享集G。
? 处理器个数N,每个本地存储块个数m,则信息量m x N x N,O(N^2) ? 可以仅对进入cache的块设置目录(动态法),也可以让目录项的位向量长度固定(静态法)

请添加图片描述
本地Cache控制器监听本地CPU的数据请求地址,根据该地址查询本地数据cache
请添加图片描述
远程节点C响应目录节点B
请添加图片描述
目录节点B响应A
请添加图片描述
目录节点B响应C
请添加图片描述

目录结构分为3类
? 全映像:每一个目录项都包含一个位向量,N个处理机,位向量N位,每一位对应于一个处理机,目录所占用的空间与N^2成正比。
? 有限映像:每一个目录项存放一个处理机号码,共有m个目录项,m为常数,N个处理机,则号码位数log_2^N,目录所占空间Nm log_2^N。(替换策略)
? 链式目录:每一个目录项存放一个指针链表项,链表的长度随着副本数的增减动态变化,平均长度m为常数级,N个处理机,目录所占空间Nm log_2^N。(单向链表 双向链表)

目录式协议小结
? 目录式协议中,cache的基本状态,cache块的状态转换规则,与
监听式协议在实质上是相同的
? 当对cache块进行写操作时,该cache块必须处于独占状态
? 对于任何一个处于共享态的块,目录节点的存储器的内容是更新过的最新值
? 监听式协议中的“消息广播”,改为“点对点通信”
? 当出现某cache块被替换写回时,被写回的旧块有唯一目录节点B1,被调入的新块有唯一目录节点B2,cache和B1、B2都是单线联系,B1和B2在逻辑上是不同的节点,当然地址分布重合也可能导致B1和B2落在相同的物理节点中

文章来源:https://blog.csdn.net/weixin_61197809/article/details/134504992
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。