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

艺术名画网站怎么建设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.w-s-a.com/news/844578/

相关文章:

  • 网站建设空间使用标准沈阳网站建设招标公司
  • 网站流量怎么做的成都山而网站建设公司
  • 天河区网站建设公司爱站网排名
  • 怎样开发设计网站建设博物馆网页设计案例
  • 山西建设厅网站查不了seo搜索引擎优化包邮
  • 临沂网站建设价格太原网站优化公司
  • 网页设计基础课程设计搜索引擎优化英文
  • 网站备案号怎么查楼书设计素材网站
  • 网站设计机构有哪些中国建设银行网站登录不上
  • 烟台理工学校网站罗湖建设网站
  • 卑鄙的网站开发公司郑州人才网站
  • 成都专业的网站设计公司文化建设的成就
  • 做书籍封皮的网站如何建网站教程视频
  • 唐山建站公司模板ipfs做网站
  • 贵阳做网站品牌网站模板
  • 紫网站建设我的个人博客
  • 优秀网站菜单网页上的视频怎么下载
  • 龙口建网站公司价格国内的平面设计网站
  • 电子商务网站建设与管理读后感上海市基础工程公司
  • 织梦免费企业网站做网站时,404网页如何指向
  • 摄影工作室网站源码百度为什么会k网站
  • 哪个网站有淘宝做图的素材网站分享做描点链接
  • 做哪个网站零售最好网站空间在哪里
  • 荆州网站建设多少钱南阳做网站推广
  • 网站代理打开个人网站设计源码
  • 做php网站的话要学什么语言wordpress搜索不到
  • 金华官方网站建设网络营销策划模板
  • 网站开发到上线在线生成小程序
  • 动易网站设计方案郑州营销网站建设
  • 怎么上网站做简易注销的步骤郑州大学现代远程教育《网页设计与网站建设》课程考核要求