当前位置: 首页 > news >正文

郑州企业的网站建设免费网络推广网址

郑州企业的网站建设,免费网络推广网址,wordpress头像代码,wordpress 自带https文章目录 CPU 多级缓存 & 缓存一致性协议(MESI)CPU 多级缓存缓存一致性协议(MESI)缓存行(Cache line)四种缓存状态缓存行状态转换多核协同示例网站体验 MESI优化和引入的问题Store Bufferes & Inva…

文章目录

  • CPU 多级缓存 & 缓存一致性协议(MESI)
    • CPU 多级缓存
    • 缓存一致性协议(MESI)
      • 缓存行(Cache line)
      • 四种缓存状态
      • 缓存行状态转换
        • 多核协同示例
        • 网站体验
      • MESI优化和引入的问题
        • Store Bufferes & Invalidate Queue
          • Store Bufferes & Invalidate Queue 带来的问题
      • 硬件内存模型
        • 读屏障 & 写屏障
      • 思考 & 联系

CPU 多级缓存 & 缓存一致性协议(MESI)

CPU 多级缓存

  • 参考:Java Memory Model

缓存一致性协议(MESI)

  • 多级缓存的出现解决了CPU处理速度和内存读取速度不一致的问题,但是同时也带来缓存不一致的问题,为了解决这个问题,我们引入了缓存一致性协议,常见的缓存一致性协议有MSI,MESI,MOSI,Synapse,Firefly及DragonProtocol等等,下文以MESI协议进行讲述。

企业微信截图_16866534797390.png

缓存行(Cache line)

  • 缓存行是指在缓存中的最小数据单元。

四种缓存状态

  • 缓存行有4个状态,用2个bit表示。
状态描述监听任务
E 独享该Cache line有效,数据被修改,和内存数据一致,数据只存在本Cahe中必须监听所有试图读该缓存行的操作,操作必须在该缓存行写回主存并将状态变为S后执行
M 修改该Cache line有效,数据被修改,和内存数据不一致,数据只存在本Cahe中必须监听所有试图读该缓存行的操作,操作必须在该缓存行写回主存并将状态变为S后执行
S 共享该Cache line有效,数据和内存数据一致,数据存在多个Cache中必须监听其它缓存使该缓存无效或独享该缓存的请求,并将该缓存行变为无效
I 失效该Cache line无效
  • 注:对于M和E状态而言总是精确的,他们在和该缓存行的真正状态是一致的,而S状态可能是非一致的。如果一个处于S状态的缓存失效,另外一个缓存行可能已经独享了该缓存行,但是不会升迁为独享状态,因为失效并不会广播给其它缓存行。

缓存行状态转换

企业微信截图_16866494063738.png

多核协同示例

企业微信截图_16866534382085.png

  • 初始状态:CPUB 存在缓存变量 X 状态为 M
  • CPUA 发出指令读取 X 指令,通过 bus 读取 X,检测到地址冲突,将 CPUB 缓存变量状态置为 S,读取 X 到 CPUA 完成
  • 此时,CPUB 修改缓存变量并通过 bus 写回主存,发现地址冲突,将 CPUA 中的变量从 S 状态置为 I,数据写回主存
网站体验
  • 模拟一致性的整个过程:https://www.scss.tcd.ie/Jeremy.Jones/VivioJS/caches/MESIHelp.htm

MESI优化和引入的问题

  • 在上述多核CPU为保证缓存一致性进行协同的过程中,消息传递的时间远远大于CPU执行时间,如果每次的操作都需要等待协同指令响应完成,那么就会大大降低处理器的处理性能,因此引入了Store Bufferes和Invalidate Queue进行优化。
Store Bufferes & Invalidate Queue
  • 从上述的多核协同案例中我们可以发现,每次修改缓存中的元素,都需要将无效状态指令(Invalidate Acknowledge)执行完才能将修改的数据写回缓存行中,等待协同指令会造成CPU运算能力浪费,因此,Store Bufferes被引入,我们不需要等待协同指令返回就可以将修改的数据写入Store Bufferes,当再次读取时若在Store Bufferes中已存在直接从Buffer中读取(称为“Store Forwarding”),只有当收到所有协同指令响应后才能写回缓存行中。
  • Store Bufferes 是有限的,因此当要写回缓存行时为了更快的得到所有Invalidate Acknowledge指令的响应,实际上也不会立即执行,而是放入了Invalidate Queue中,并立即返回响应,在合适的时机去执行。

企业微信截图_16866534797390.png

Store Bufferes & Invalidate Queue 带来的问题
  • Store buffer 什么时候写回并没有保证
value = 3;void exeToCPUA(){value = 10;isFinsh = true;
}void exeToCPUB(){if(isFinsh){// value 一定等于10?// 如果 Store Bufferes 没有写回那么将导致数据不一致assert value == 10;}
}
  • Invalidate Acknowledge 什么时候执行没有保证
// 当一个CPU尝试读取实际已经失效但未执行 Invalidate Acknowledge 的数据时,会导致数据不一致

硬件内存模型

  • 由于 Store Bufferes & Invalidate Queue 的引入,导致 Store Bufferes 写入缓存行和执行 Invalidate Acknowledge 的时机需要十分合适才能尽可能释放CPU的处理能力,实际上CPU并不知道什么时候会执行,因此将这个任务留给了写程序的人,这就是我们常说的内存屏障。
读屏障 & 写屏障
  • 写屏障 Store Memory Barrier(a.k.a. ST, SMB, smp_wmb)是一条告诉处理器在执行这之后的指令之前,应用所有已经在Store buffer中的保存的指令到缓存行中。

  • 读屏障Load Memory Barrier (a.k.a. LD, RMB, smp_rmb)是一条告诉处理器在执行任何的加载前,应用所有已经在失效队列中的失效操作的指令。

void executedOnCpu0() {value = 10;// 在更新数据之前必须将所有存储缓存(store buffer)中的指令执行完毕。storeMemoryBarrier();finished = true;
}
void executedOnCpu1() {while(!finished);// 在读取之前将所有失效队列中关于该数据的指令执行完毕。loadMemoryBarrier();assert value == 10;
}

思考 & 联系

  • 不同的系统架构有不同的内存屏障,以X86架构为例:读屏障:lfence、写屏障:sfence、读写屏障:mfence。
  • MESI 缓存一致性协议中为了尽可能的提高性能,引入了 Store Bufferes & Invalidate Queue ,将数据具体的失效时机和写入时间交给了内存屏障控制,而 JMM 则基于内存屏障保证数据的可见性。
  • volatile 关键字底层使用了LOCK关键字,LOCK关键字的本质是锁(总线锁或缓存行锁),只是LOCK关键字的一部分能力具备和内存屏障相同的作用,但是和内存屏障还是有一定区别。
http://www.khdw.cn/news/50477.html

相关文章:

  • 网站在线预约模板百度合伙人答题兼职赚钱
  • 做翻译小说网站赚钱吗自助建站工具
  • 光谷企业网站建设推广网页
  • app上架应用市场需要什么条件互联网优化
  • 只做健康产品的网站百度搜索简洁版网址
  • 关于建设网站论坛的毕业论文开封网站优化公司
  • 织梦做的网站被黑了软文营销的技巧
  • 怎么做一个设计师网站40个免费网站推广平台
  • 辛集城乡建设管理局网站查询关键词排名工具
  • 帮忙建设公司网站宽带推广方案
  • 做阀门销售什么网站最好seo免费优化网址软件
  • 安阳网站怎么优化百度推广助手电脑版
  • 做游戏必备的几个网站网络营销推广经验总结
  • 资讯文章类网站织梦模板百度浏览器网址是多少
  • 我的网站设计联盟网络营销有哪些功能
  • 大型商城网站建设方案杭州最好的电商培训机构
  • 新手建站详细步骤竞价托管运营哪家好
  • 普通的订阅号怎么做微网站做优化的网站
  • me域名的网站百度搜索引擎推广
  • 网站设计建设收费标准怎么免费创建自己的网站
  • 网页被禁止浏览怎么解决网站关键词优化案例
  • 怎样做门户网站seo整站优化报价
  • wordpress 侧边栏位置郑州seo优化阿亮
  • 世代网络网站建设设计网站优化关键词公司
  • 初学者学做网站怎么学百度广告联盟平台的使用知识
  • 一起做的网站免费建站网站一级
  • 网站建设自助建站制作广州seo代理
  • wordpress去除缓存七台河网站seo
  • 做二手平台公益的网站2022推广app赚佣金平台
  • 手机网站建设公司长沙靠谱seo优化价格