体系结构28_多处理机(2)

news2025/7/18 22:57:09

对称式共享存储器体系结构

多处理机Cache一致性

  **多个处理器共享一个存储器

  **当处理器规模较小时,这种机器十分经济

  **支持对共享数据和私有数据的Cache缓存

      私有数据供一个单独的处理器使用,而共享数据供多个处理器使用

  ** 共享数据进入Cache产生了一个新的问题:

           Cache的一致性问题

(1)不一致产生的原因(Cache一致性问题)

      I/O操作

       Cache中的内容可能与由I/O子系统输入输出形成的存储器对应部分的内容跟不同

     共享数据

        不同处理器的Cache都保存有对应存储器单元的内容

例:两个处理器cache 对应同一存储器单元产生出不同的值

(2)存储器是一致的(非正式定义)

  如果对某个数据项的任何读操作均可得到其最新写入的值,则认为这个存储系统是一致的。

       存储系统行为的两个不同方面: 一是返回给读操作的是什么值   二是什么时候才能将已写入的值返回给读操作

   满足条件:

  1.     处理器P对X进行一次写之后又对X进行读,读和写之间没有其它处理器对X进行写,则读的返回值总是写进的值。
  2.     一个处理器对X进行写之后,另一处理器对X进行读,读和写之间无其它写,则读X的返回值应为写进的值
  3.    对同一单元的写是顺序化的,即任意两个处理器对同一单元的两次写,从所有处理器看来顺序都应是相同的。

假设:直到所有的处理器均看到了写的结果,一次写操作才算完成;允许处理器无序读,但必须以程序规定的顺序进行写

实现一致性的基本方案

  在一致的多处理机中,Cache提供两种功能。

  1.    共享数据的迁移

       降低了对远程共享数据的访问延迟。

    2.   共享数据的复制

       不仅降低了访存的延迟,也减少了访问共享数据所产生的冲突

   小规模多处理机不是采用软件而是采用硬件技术实现Cache一致性。

  (1)Cache一致性协议

          对多个处理器维护一致性的协议

  (2)关键:跟踪共享数据块的状态

  (3)共享数据状态跟踪技术

  •    目录(这里指的是一个专门的硬件,一个目录存储器)

     物理存储器中共享数据块的状态及相关信息均被保存在目录中

  •    监听

      每个Cache除了包含物理存储器中块的数据拷贝之外,也保存着各个块的共享状态信息

    监听:Cache通常连在共享存储器的总线上,各个Cache控制器通过监听总线来判断它们是否有总线上请求的数据块

   3.两种协议

 (1)写作废协议

   在一个处理器写某个数据项之前保证它对该数据项有唯一的访问权

 例:在写回Cache的条件下,监听总线中写作废协议的实现

(2)写更新协议

  当一个处理器写某数据项时,通过广播使其它Cache中所有的读数据想拷贝进行更新。

 例:写回Cache条件下,监听总线中写更新协议的实现

(3)写作废和写更新协议性能上的差别

      对同一数据的多个写而中间无读操作的情况,写更新协议需多次写广播操作,而在写作废协议下只需一次作废操作。

      对同一块中多个字进行写,写更新协议对每个字的写均要进行一次广播,而在写作废协议下仅在对本块第一次写时进行作废操作

      从一个处理器写到另一个处理器读之间的延迟通常在写更新模式中较低。而在写作废协议中,需要读一个新的拷贝。

     在基于总线的多处理机中,写作废协议成为绝大多数系统设计的选择

监听协议及其实现

(1)小规模多处理机中实现写作废协议的关键利用总线进行作废操作,每个块的有效位使作废机制的实现较为容易。

(2)写直达Cache,因为所有写的数据同时被写回主存,则从主存中总可以取到最新的数据值

(3)对于写回Cache,得到数据的最新值会困难一些,;因为最新值可能在某个Cache中,也可能在主存中。

(4)在写回Cache条件下的实现技术

  •        用Cache中块的标志位实现监听过程
  •        给每个Cache块加一个特殊的状态位说明它是否为共享
  •        因为每次总线任务均要检查Cache的地址位,这可能与CPU对Cache的访问冲突。可通过下列两种技术之一降低冲突:

              复制标志位

              采用多级包含Cache

分布式共享存储器体系结构

1.基于目录的Cache一致性

  存储器分布于各节点中,所有的结点通过网络互连。访问可以是本地的,也可能是远程的。

不支持Cache一致性:

  规定共享数据不进入Cache,仅私有数据才能保存在Cache中。

 优点:所需的硬件支持很少(因为远程访问存取两仅是一个字(或双字)而不是一个Cache块)

 缺点:

(1)实现透明的软件Cache一致性的编译机制能力有限

(2)没有Cache一致性,机器就不能利用取出同一块中的多个字的,开销接近于取一个字的开销这个优点,这是因为共享数据是以Cache块为单位进行管理的。当每次访问要从远程存储器取一个字时,不能有效利用共享数据的空间局部性。

(3)诸如预取等延迟隐藏技术对于多个字的存取更为有效,比如针对一个Cache块的预取

解决cache一致性问题的关键:

 目录协议

   目录:用一种专门的存储器所记录的数据结构,他记录着可以进入Cache的每个数据块的访问状态、该块在各个处理器的共享状态以及是否修改过等信息

对每个结点增加目录表后的分布式存储器的系统结构

(1)目录协议的基本点

  • 在每个结点增加了目录存储器用于存放目录
  • 存储器的每一块在目录中对应有一项
  • 每一个目录项主要有状态和位向量两种成分。

 状态描述该目录所对应存储块的当前情况;

 位向量共有N位,其每一位对应于一个处理器的局部Cache,用于置出该Cache中有无该存储块的拷贝

(2)目录必须跟踪每个Cache块的状态

     Cache块状态有三种:

  共享:在一个或多个处理器上具有这个块的拷贝,且主存中的值是最新值(所有Cache均相同)

  未缓冲:所有处理器的Cache都没有此块的拷贝

  专有:仅有一个处理器上有此块的拷贝,且已对此块进行了写操作,而主存的拷贝仍旧是旧的。这个处理器称为此块的拥有者。

(3)由于写作废操作的需要,还必须记录共享此块的处理器信息

     方法:对每个主存块设置一个位向量。

           当此块被共享时,每个位指出与之对应的处理器是否有此块的拷贝。

           当此块为专有时,可根据位向量来寻找此块的拥有者。

(4)宿主结点

   存放有存储器块和对应地址目录项的结点

目录协议及其实现

  基于目录的协议中,目录承担了一致性协议操作的主要功能。

 (1)发往一个目录的消息会产生两种不同类型的动作

            更新目录状态

            发送消息满足请求服务

  (2)目录项可能接手到三种不同的请求

         读失效

         写失效

         数据写回

  (3)在各个状态下所接收到的请求和相应的操作

           1)当一个块处于未缓冲状态时,对此块发出的请求及处理操作为:

             读失效

                   将存储器数据送往请求方处理器,且本处理器成为此块的唯一共享结点,本块的状态转换为共享。

             写失效

                   将存储器数据送往请求方处理器,此块成为专有。

           2)当一个块是共享状态时,存储器中的数据是其当前最新值,对此块发出的请求及处理操作为:

              读失效

                   将存储器数据送往请求方处理器,并将其加入共享集合

              写失效

                   将数据送往请求方处理器,对共享集合中所有的处理器发送,写作废消息,且将共享集合置为仅含有此处理器,本块的状态变为专有。

           3)当某块处于专有状态时,本块的最新值保存在共享集合指出的拥有者处理器中,从而有三种可能的目录请求

               读失效

                      将“取数据”的消息发往拥有者处理器,使该块的状态转变为共享,并将数据送回目录结点写入存储器,进而把该数据返送请求方处理器,将请求方处理器加入共享集合

                写失效           本块将有一个新的拥有者

                数据写回

                        拥有者处理器的Cache要替换此块时必须将其写回,从而使存储器中有最新的拷贝(宿主结点实际上成为拥有者),此块成为非共享,共享集合为空。

3.对基于目录的Cache一致性的多种改进

      有限映射目录

      链式结构目录

4.基于目录的Cache一致性协议是完成由硬件实现的。此外,还可以用软硬结合的办法实现。

               

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 654.最大二叉树 617合并二叉树 700二叉搜索树中的搜索 98验证二叉搜索树

文章目录654最大二叉树c代码实现python 代码实现617合并二叉树c 代码实现python 代码实现700二叉搜索树中的搜索c代码实现python 代码实现98验证二叉搜索树c 代码实现python 代码实现654最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归…

[附源码]java毕业设计在线购物商城

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]java毕业设计疫情居家隔离服务系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

阿里云与信通院邀您参与云原生安全用户调研

云原生安全建设已经成为企业云原生平台建设、应用云原生化改造进程中的必备项。在云原生的大势所趋下,云的分布式架构、容器化部署、边界消失等特点也带来了有别于传统硬件安全的模式:镜像漏洞、容器逃逸、租户隔离等安全问题威胁着企业的云原生平台和应…

Unity动态创建Avatar骨骼映射

目录前言1 了解Avatar骨骼映射2 动态创建Avatar骨骼映射2.1 寻找相关APIAvatarBuilder.BuildHumanAvatarDeclarationParametersReturnsDescriptionHumanDescriptionDescriptionProperties2.2 创建Skeleton数据2.3 创建Human映射关系2.4 创建Avatar3 总结前言 为了让单个动画可…

Linux(基于Centos7)(四)

文章目录一、任务目标二、任务资讯三、任务实施3-1.RPM软件包管理3-2.YUM方式安装软件一、任务目标 实施该工单的任务目标如下: 知识目标 1.了解RPM提供的功能。 2.了解YUM相对于RPM所具有的优点。 能力目标 1.能够通过RPM安装及管理软件包。 2.能够通过YUM安装及管…

MCE | ATM 激酶活化变单体后的神奇开挂!

ATM (Ataxia-telangiectasia mutated proteins) 是一种丝氨酸-苏氨酸蛋白激酶,是 DNA 损伤应答 (DDR) 的关键调节因子。ATM 是位名副其实的“指挥官”,在 DNA 双链断裂 (DSB) 中,参与细胞周期检查点维护、DNA 损伤修复和端粒维护等&#xff0…

基于Android的个人健康管理系统

目 录 基于Android的个人健康管理系统 Personal Health Management System Based On Android 1 引言 1 1.1 课题背景 1 1.2 编写目的 1 1.3 关于Android 1 1.4 关于MVC框架 3 2 可行性研究 6 2.1 技术可行性 6 2.2 经济可行性 6 2.3 时间可行性 6 3 需求分析 7 4 总体设计 8 …

栈——算法专项刷题(六)

六、栈 6.1后缀表达式 原题链接 根据 逆波兰表示法,求该后缀表达式的计算结果。 有效的算符包括 、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话…

【kafka】五、kafka工作流程

kafka工作流程 工作流程 kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。 topic是逻辑上的概念,而partition是物理上的概念,每一个partition对应一个log文件,该log文件…

基建融资与预算软约束(2015年A股大牛市与“流动性堰塞湖”)-中国视角下的宏观经济

基建融资与预算软约束(2015年A股大牛市与“流动性堰塞湖”) – 潘登同学的宏观经济学笔记 文章目录基建融资与预算软约束(2015年A股大牛市与“流动性堰塞湖”) -- 潘登同学的宏观经济学笔记2015年A股大牛市定向宽松的货币政策导向定向宽松的货币政策原因投资项目的预算软约束政…

python基础之循环嵌套

文章目录一、break和continue二、while的循环嵌套知识点print:例题1打印星星:例题2打印九九乘法表一、break和continue break当某一条件满足时直接跳出当前循环; continue当某一条满足时,不执行后续循环重新开始新一轮循环; i1 …

[附源码]java毕业设计婴幼儿玩具共享租售平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

python基础之字典

文章目录一、字典1.dictionary(字典)2.和列表的区别:二、实例三、应用场景一、字典 1.dictionary(字典) 是除了列表之外最灵活的数据类型,字典同样可以用来存储多个数据(通常用于存储描述一个物体的相关信息); 2.和…

数据分析软件的使用

一 数据分析概述 1 概念 数据分析是利用数学,统计学理论相结合的科学统计分析方法,对Excel数据,数据库中的数据,收集的大量数据,网页抓取的数据进行分析,从中提前有价值的信息并形成结论进行展示的过程。…

用于调整PID控制器增益的遗传算法的实现(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

第八章 兼容多种模块标准的软件包封装

第八章 如何封装兼容多种JS模块标准的软件包? 为了方便用户使用,一款成熟的类库都会提供多种模块封装形式,比如大家最常用到的 Vue,就提供了cjs、esm、umd 等多种封装模式,并且还会提供对应的压缩版本,方便…

Python异或运算符示例

目录 异或 异或的性质 示例1:值交换 示例2:找出现一次的元素 示例2代码: 异或 英文为exclusive OR,缩写成xor,符号是^ aba^b0假0假0假0假1真1真1真0假1真1真1真0假 异或的性质 1、a ^ a0 任何数字和自己异或结…

Java项目:JSP蛋糕甜品店管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台,分为管理员与普通用户两种角色,管理员登录后台,普通用户登录前台; 管理员角色…

Zookeeper

文章目录Zk介绍特点数据结构应用场景Zk安装、集群下载、启动配置参数解读Zookeeper 集群操作选举机制(面试重点)客户端命令行操作客户端界面节点类型(持久 / 短暂 / 有序号 / 无序号)监听器1)节点的值变化监听2&#x…