本文介绍: 多核CPU采用了与原来的单CPU相同的硬件体系结构,显著提升计算能力的同时无需进行硬件技术的变更。• 当出现某cache块被替换写回时,被写回的旧块有唯一目录节点B1,被调入的新块有唯一目录节点B2,cache和B1、B2都是单线联系,B1和B2在逻辑上是不同的节点,当然地址分布重合也可能导致B1和B2落在相同的物理节点中。• 共享数据进入Cache,则同一存储块在多个处理器的Cache中有副本,当某个处理器对其Cache中的副本修改后,该副本与其他副本中的数据不一致,称为多处理机的Cache一致性问题

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

7.1 多处理器结构

7.1.1 多处理器存储结构分类

共享存储处理器

共享存储处理器

7.1.2 非共享存储多处理器

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

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

大规模并行处理机(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相同的硬件体系结构,显著提升计算能力的同时无需进行硬件技术的变更。

多核架构研究内容

典型多核结构:专用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结构的优点

7.2 Cache一致性问题

7.2.1数据共享引发的问题

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

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

7.2.2 Cache一致性协议

Cache一致性协议分类

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_7605.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注