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

注册分公司流程及所需资料seo是什么味

注册分公司流程及所需资料,seo是什么味,网站seo的重要性,如何做手机网站文章目录 CPU 多级缓存 缓存一致性协议#xff08;MESI#xff09;CPU 多级缓存缓存一致性协议#xff08;MESI#xff09;缓存行#xff08;Cache line#xff09;四种缓存状态缓存行状态转换多核协同示例网站体验 MESI优化和引入的问题Store Bufferes Inva… 文章目录 CPU 多级缓存 缓存一致性协议MESICPU 多级缓存缓存一致性协议MESI缓存行Cache line四种缓存状态缓存行状态转换多核协同示例网站体验 MESI优化和引入的问题Store Bufferes Invalidate QueueStore Bufferes Invalidate Queue 带来的问题 硬件内存模型读屏障 写屏障 思考 联系 CPU 多级缓存 缓存一致性协议MESI CPU 多级缓存 参考Java Memory Model 缓存一致性协议MESI 多级缓存的出现解决了CPU处理速度和内存读取速度不一致的问题但是同时也带来缓存不一致的问题为了解决这个问题我们引入了缓存一致性协议常见的缓存一致性协议有MSIMESIMOSISynapseFirefly及DragonProtocol等等下文以MESI协议进行讲述。 缓存行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状态的缓存失效另外一个缓存行可能已经独享了该缓存行但是不会升迁为独享状态因为失效并不会广播给其它缓存行。 缓存行状态转换 多核协同示例 初始状态CPUB 存在缓存变量 X 状态为 MCPUA 发出指令读取 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中并立即返回响应在合适的时机去执行。 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.hkea.cn/news/14540398/

相关文章:

  • 浙江 外贸网站建设买完域名接下来怎么弄
  • 成都网站建设哪家好山东省住房和城乡城乡建设厅网站
  • 郑州网站建设哪家强广州市研发网站建设价格
  • 柬埔寨网站建设开发区网站建设在哪
  • 游戏网站建设的目的电子产品定制开发
  • 电商erp网站开发公共资源交易中心级别
  • 为什么建设网站要年年交钱常见的网络营销形式有
  • 企业网站自助建设现在还有做网站的必要吗
  • 中企动力做的网站山西太原销售网站模板
  • 网站备案后可以修改吗化妆品网站建设需求问卷调查
  • 西安市建设工程信息网诚信平台官网长沙做网站seo优化外包
  • 网站建设的主要内容包括建设京东物流网站的目标是什么
  • 无锡八匹马网站建设腾讯邮箱企业邮箱登录
  • 网站标准字体样站内seo是什么意思
  • 正规营销型网站建设如何用两台电脑做服务器建网站
  • 长沙建站公司动画制作app
  • 网站开发网络公司flash 网站头部
  • 免费做网站的网站长沙建站公司模板
  • 做网站要备案吗 要几天网站设计济南
  • 用jsp做的网站代码上海做网站最低价
  • 山西省大同市网站建设公司重庆做网站开发的公司有哪些
  • 网站里添加图片超链接怎么做软件设计工资一般多少
  • 做企业网站申请域名百度指数查询工具
  • 爬虫做网站相关教程wordpress文章付费阅读设置
  • 广安们内网站建设Lms wordpress功能
  • 中山服装网站建设东莞阳光官方网
  • 关于网站建设的职位北京怎样做企业网站
  • 台州网站公司网站建设使页面内容居中
  • wordpress给公司建站优秀设计案例网站
  • 自己能建设网站吗wordpress表单反馈