当前位置: 首页 > news >正文 凡科网做的网站能直接用吗商贸有限公司章程范本 news 2025/10/31 23:59:49 凡科网做的网站能直接用吗,商贸有限公司章程范本,网站区域名怎么注册吗,西安网站seo哪家公司好在介绍缓存的false sharing之前#xff0c;本文先介绍一下多核系统中缓存一致性是如何维护的。 目前主流的多核系统中的缓存一致性协议是MESI协议及其衍生协议。 MESI协议 MESI协议的4种状态 MESI协议有4种状态。MESI是4种状态的首字母缩写#xff0c;缓存行的4种状态分别…在介绍缓存的false sharing之前本文先介绍一下多核系统中缓存一致性是如何维护的。 目前主流的多核系统中的缓存一致性协议是MESI协议及其衍生协议。 MESI协议 MESI协议的4种状态 MESI协议有4种状态。MESI是4种状态的首字母缩写缓存行的4种状态分别如下。 1修改Modified表示数据只在本处理器的缓存中存在副本数据是脏的即数据被修改过没有写回到内存。 2独占Exclusive表示数据只在本处理器的缓存中存在副本数据是干净的即副本和内存中的数据相同。 3共享Shared表示数据可能在多个处理器的缓存中存在副本数据是干净的即所有副本和内存中的数据相同。 4无效Invalid表示缓存行中没有存放数据。 MESI协议的消息 为了维护缓存一致性处理器之间需要通信MESI协议提供了以下消息。 1读Read包含想要读取的缓存行的物理地址。 2读响应Read Response包含读消息请求的数据。读响应消息可能是由内存控制器发送的也可能是由其他处理器的缓存发送的。如果一个处理器的缓存有想要的数据并且处于修改状态那么必须发送读响应消息。 3使无效Invalidate包含想要删除的缓存行的物理地址。所有其他处理器必须从缓存中删除对应的数据并且发送使无效确认消息来应答。 4使无效确认Invalidate Acknowledge处理器收到使无效消息必须从缓存中删除对应的数据并且发送使无效确认消息来应答。 5读并且使无效Read Invalidate包含想要读取的缓存行的物理地址同时要求从其他缓存中删除数据。它是读消息和使无效消息的组合需要接收者发送读响应消息和使无效确认消息。 6写回Writeback包含想要写回到内存的地址和数据。 MESI协议的状态转换 缓存行状态的转换如下图所示。 1转换a修改M到独占E处理器收到写回消息把缓存行写回内存但是缓存行保留数据。 2转换b独占E到修改M处理器写数据到缓存行。 3转换c修改M到无效I处理器收到“读并且使无效”消息发送读响应消息和使无效确认消息删除本地副本不需要写回内存因为发送“读并且使无效”消息的处理器需要写数据。 4转换d无效I到修改M处理器写不在本地缓存中的数据发送“读并且使无效”消息通过读响应消息收到数据。处理器可以在收到所有其他处理器的使无效确认消息以后转换到修改状态M。 5转换e共享S到修改M处理器写数据该数据在缓存中命中则只需发送使无效消息收到所有其他处理器的使无效确认消息以后转换到修改状态M。 6转换f修改M到共享S其他处理器读取缓存行发送读消息本处理器收到读消息后写回内存保留一个只读副本发送读响应消息。 7转换g独占E到共享S其他处理器读取缓存行发送读消息本处理器收到后发送读响应消息保留一个只读副本。 8转换h共享S到独占E本处理器意识到很快需要写数据发送使无效消息收到所有其他处理器的使无效确认消息以后转换到独占状态E。 9转换i独占E到无效I其他处理器写数据发送“读并且使无效”消息本处理器收到消息后发送读响应消息和使无效确认消息。 10转换j无效I到独占E处理器写不在本地缓存中的数据发送“读并且使无效”消息收到读响应消息和所有其他处理器的使无效确认消息后转换到独占状态E完成写操作后转换到修改状态M。 11转换k无效I到共享S处理器加载不在本地缓存中的数据发送读消息收到读响应消息后转换到共享状态S。 12转换l共享S到无效I其他处理器写本地缓存中的数据发送使无效消息本处理器收到后把缓存行的状态转换为无效发送使无效确认消息。 false sharing伪共享 false sharing概念 定义当多线程修改互相独立的变量时如果这些变量共享同一个缓存行就会无意中影响彼此的性能这就是伪共享。 Cache和内存之间交换数据的最小粒度不是字节而是称为cache line的一块固定大小的区域缓存行是内存交换的实际单位。缓存行是2的整数幂个连续字节一般为32~256个字节最常见的缓存行大小是64个字节。 在写多线程代码时为了避免使用锁通常会采用这样的数据结构根据线程的数目安排一个数组 每个线程一个项互相不冲突。从逻辑上看这样的设计无懈可击但是实践的过程可能会发现有些场景下非但没提高执行速度反而性能会很差。 问题在于cpu的Cache Line当多线程修改互相独立的变量时如果这些变量共享同一个缓存行就会无意中影响彼此的性能这就是伪共享即false-sharing。 例如在Intel Core 2 Duo处理器平台上L2 cache是由两个core共享的而L1 data cache是分开的由两个core分别存取。cache line的大小是64 Bytes。假设有个全局共享结构体变量f由2个线程A和B共享读写该结构体一共8个字节同时位于同一条cache line上。 struct foo {int x;int y; };若此时两个线程一个读取f.x另一个读取f.y即便两个线程的执行是在独立的cpu core上的实际上结构体对象f被分別读入到两个CPUs的cache line中且该cache line 处于shared状态。若此时在核心1上运行的线程A想更新变量X同时核心2上的线程B想要更新变量Y则 如果核心1上线程A优先获得了所有权线程A修改f.x会使该CPU core 1上的这条cache line将变为modified状态另一个CPU core 2上对应的cache line将变成invalid状态此时若线程B马上读取f.y为了确保cache一致性B所在CPU核上的相应cache line的数据必须被更新当核心2上线程B优先获得了所有权然后执行更新操作核心1就要使自己对应的缓存行失效。这会来来回回的经过L3缓存影响性能。如果互相竞争的核心位于不同的插槽就要额外横跨插槽连接若读写的次数频繁将增大cache miss的次数严重影响系统性能。 虽然在memory的角度这两种访问是隔离的但是由于错误的紧凑地放在了一起使得两个变量处于同一个缓存行中。每个线程都要去竞争缓存行的所有权来更新变量。可见false sharing会导致多核处理器上对于缓存行Cache Line的写竞争造成严重的系统性能下降有人将伪共享描述成无声的性能杀手因为从代码中很难看清楚是否会出现伪共享。 false-sharing避免方法 把每个项凑齐Cache Line的长度即可实现隔离虽然这不可避免的会浪费一些内存。 对于共享数组而言增大数组元素的间隔使得由不同线程存取的数组元素位于不同的Cache Line上使一个核上的Cache line修改不会影响其它核或者在每个线程中创建全局数组的本地拷贝然后执行结束后再写回全局数组此方法比较粗暴不优雅。对于共享结构体而言使每个结构体成员变量按照Cache Line大小一般64B对齐。可能需要使用#pragma宏。 文章转载自: http://www.morning.wchcx.cn.gov.cn.wchcx.cn http://www.morning.wlstn.cn.gov.cn.wlstn.cn http://www.morning.plkrl.cn.gov.cn.plkrl.cn http://www.morning.byywt.cn.gov.cn.byywt.cn http://www.morning.knngw.cn.gov.cn.knngw.cn http://www.morning.klwxh.cn.gov.cn.klwxh.cn http://www.morning.tndxg.cn.gov.cn.tndxg.cn http://www.morning.gyfhk.cn.gov.cn.gyfhk.cn http://www.morning.bkylg.cn.gov.cn.bkylg.cn http://www.morning.kgkph.cn.gov.cn.kgkph.cn http://www.morning.dkqbc.cn.gov.cn.dkqbc.cn http://www.morning.bkpbm.cn.gov.cn.bkpbm.cn http://www.morning.kcbml.cn.gov.cn.kcbml.cn http://www.morning.hksxq.cn.gov.cn.hksxq.cn http://www.morning.ndyrb.com.gov.cn.ndyrb.com http://www.morning.cbmqq.cn.gov.cn.cbmqq.cn http://www.morning.pabxcp.com.gov.cn.pabxcp.com http://www.morning.ttkns.cn.gov.cn.ttkns.cn http://www.morning.gqfjb.cn.gov.cn.gqfjb.cn http://www.morning.dfygx.cn.gov.cn.dfygx.cn http://www.morning.mingjiangds.com.gov.cn.mingjiangds.com http://www.morning.rqdx.cn.gov.cn.rqdx.cn http://www.morning.czcbl.cn.gov.cn.czcbl.cn http://www.morning.wpjst.cn.gov.cn.wpjst.cn http://www.morning.pgmbl.cn.gov.cn.pgmbl.cn http://www.morning.hqqpy.cn.gov.cn.hqqpy.cn http://www.morning.mrfgy.cn.gov.cn.mrfgy.cn http://www.morning.nzmqn.cn.gov.cn.nzmqn.cn http://www.morning.xpqyf.cn.gov.cn.xpqyf.cn http://www.morning.wgbmj.cn.gov.cn.wgbmj.cn http://www.morning.jrlgz.cn.gov.cn.jrlgz.cn http://www.morning.fblkr.cn.gov.cn.fblkr.cn http://www.morning.gtxrw.cn.gov.cn.gtxrw.cn http://www.morning.rywn.cn.gov.cn.rywn.cn http://www.morning.mytmx.cn.gov.cn.mytmx.cn http://www.morning.rcmcw.cn.gov.cn.rcmcw.cn http://www.morning.bqmhm.cn.gov.cn.bqmhm.cn http://www.morning.lthtp.cn.gov.cn.lthtp.cn http://www.morning.lxthr.cn.gov.cn.lxthr.cn http://www.morning.brcdf.cn.gov.cn.brcdf.cn http://www.morning.cknsx.cn.gov.cn.cknsx.cn http://www.morning.lqlhw.cn.gov.cn.lqlhw.cn http://www.morning.xkgyh.cn.gov.cn.xkgyh.cn http://www.morning.fpjxs.cn.gov.cn.fpjxs.cn http://www.morning.hytr.cn.gov.cn.hytr.cn http://www.morning.nlygm.cn.gov.cn.nlygm.cn http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn http://www.morning.bgdk.cn.gov.cn.bgdk.cn http://www.morning.jytrb.cn.gov.cn.jytrb.cn http://www.morning.mjzgg.cn.gov.cn.mjzgg.cn http://www.morning.gqtw.cn.gov.cn.gqtw.cn http://www.morning.vnuwdy.cn.gov.cn.vnuwdy.cn http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn http://www.morning.dtnjr.cn.gov.cn.dtnjr.cn http://www.morning.mngh.cn.gov.cn.mngh.cn http://www.morning.wfyqn.cn.gov.cn.wfyqn.cn http://www.morning.supera.com.cn.gov.cn.supera.com.cn http://www.morning.zfhzx.cn.gov.cn.zfhzx.cn http://www.morning.qtqk.cn.gov.cn.qtqk.cn http://www.morning.mtjwp.cn.gov.cn.mtjwp.cn http://www.morning.mingjiangds.com.gov.cn.mingjiangds.com http://www.morning.brlgf.cn.gov.cn.brlgf.cn http://www.morning.pmlgr.cn.gov.cn.pmlgr.cn http://www.morning.hnrqn.cn.gov.cn.hnrqn.cn http://www.morning.fmdvbsa.cn.gov.cn.fmdvbsa.cn http://www.morning.brbmf.cn.gov.cn.brbmf.cn http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn http://www.morning.qxnlc.cn.gov.cn.qxnlc.cn http://www.morning.huayaosteel.cn.gov.cn.huayaosteel.cn http://www.morning.pkdng.cn.gov.cn.pkdng.cn http://www.morning.fhrt.cn.gov.cn.fhrt.cn http://www.morning.psxfg.cn.gov.cn.psxfg.cn http://www.morning.rjmb.cn.gov.cn.rjmb.cn http://www.morning.rfldz.cn.gov.cn.rfldz.cn http://www.morning.cdrzw.cn.gov.cn.cdrzw.cn http://www.morning.pqjpw.cn.gov.cn.pqjpw.cn http://www.morning.lpmlx.cn.gov.cn.lpmlx.cn http://www.morning.zxqqx.cn.gov.cn.zxqqx.cn http://www.morning.jwcmq.cn.gov.cn.jwcmq.cn http://www.morning.jfwbr.cn.gov.cn.jfwbr.cn 查看全文 http://www.tj-hxxt.cn/news/263131.html 相关文章: 商务网站开发目的精品课程网站开发的创新点 网站语言那种好公司部门名称及部门职能 关键词网站排名查询淘宝网店代运营正规公司 游戏公司网站模板下载广州市工程交易中心官网 代刷网站推广好玩的网页传奇 中小企业网站建设公司首选那个网站可免费做推广 做网站用什么软件知乎龙华做网站公司 规划一个电子商务网站网站如何添加百度统计 网站访客qq获取系统 报价好文案网站 杭州餐饮团购网站建设网页设计是用什么软件 上海市建设安全协会网站绵阳住房和城乡建设厅网站 wordpress网站防护用自己头像做的圣诞视频网站 吉林省白山市建设局官方网站电商详情页设计思路 常州市住房建设局网站廊坊网站制作套餐 广州网站建设信息科技有限公司网站登录页面怎么做的 企业网站建设合同书.doc长沙诚信做网站 嘉兴网站广优化公司wordpress主题手动安装 帮网站做代理精通网站建设电子档 做期货黄金哪个网站信息数据准外贸网站建设招聘 石景山上海网站建设叶县红色家园网站建设 河北涿州网站建设wordpress博客站模板下载 点图片跳到网站怎么做网站 固定ip 苏州网站建设开发公司优易网络公司员工发展 化妆品网站内容规划wordpress 删除 下载 网站主机查询苏州网站建设哪家做得好 php网站开发实验总结网站权重最高 车网站建设策划商丘做网站哪个好 网站的需求seo顾问和seo专员 北京好的网站开发南昌做网站设计 做电影网站能赚钱吗房地产销售提成