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

文章目录

  • [并行与分布式 第七章 体系结构 上](#并行与分布式 第七章 体系结构 上)
    • [7.1 多处理器结构](#7.1 多处理器结构)
      • [7.1.1 多处理器存储结构分类](#7.1.1 多处理器存储结构分类)
      • [7.1.2 非共享存储多处理器](#7.1.2 非共享存储多处理器)
      • [7.1.3 共享存储多处理器](#7.1.3 共享存储多处理器)
      • [7.1.4 多核结构](#7.1.4 多核结构)
    • [7.2 Cache一致性问题](#7.2 Cache一致性问题)

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

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落在相同的物理节点中

相关推荐
阿无,17 小时前
RabbitMQ面试题
分布式·rabbitmq
盛世宏博智慧档案19 小时前
全国100个分布式机房环境温湿度智能监测系统建设方案
分布式·机房·温湿度
六bring个六20 小时前
分布式设备连接对端失败问题分析
分布式·分布式软总线
天涯明月19931 天前
ray深度研究报告
大数据·人工智能·分布式·ray
Rain的Java大神之路2 天前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
大菠萝爱上小西瓜2 天前
【大数据实战】Spark 2.2.2 完全分布式集群搭建
大数据·分布式·spark
肠畔码农2 天前
深度解析 RocketMQ 消费端限流与重平衡(Rebalance):分布式队列分配与流控防雪崩本质
分布式·rocketmq
海兰2 天前
【 Kafka进阶3】Apache Kafka 分布式事件流平台:架构原理与微服务解耦机制简要分析
分布式·架构·kafka
麻瓜记录Jackson3 天前
深入剖析 ZooKeeper 分布式 互斥锁:Curator 之 InterProcessMutex 源码全解(附图解)
java·spring boot·分布式·后端·zookeeper·java-zookeeper
Keystone_Onion3 天前
跨境电商架构演进:基于美国海外仓的中大件分布式仓网路由优化方案
分布式·架构