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

珠海手机网站建设公司wordpress模版仿制

珠海手机网站建设公司,wordpress模版仿制,网店代运营服务,北京ui设计app制作公司这一文#xff0c;让我们分析一下#xff0c;《浅谈 Cache》 一文中的奇怪现象#xff0c;事实上如今来看也并不奇怪了。在什么情况下 r1 和 r2 都为 0 呢#xff1f;细致看代码#xff0c;你会发现#xff0c;两个线程分别被执行在不同的 CPU 核上#xff0c;而且在线程…这一文让我们分析一下《浅谈 Cache》 一文中的奇怪现象事实上如今来看也并不奇怪了。         在什么情况下 r1 和 r2 都为 0 呢         细致看代码你会发现两个线程分别被执行在不同的 CPU 核上而且在线程開始的阶段还使用了一个随机数是为了让两个线程能尽量同一时候执行。         如果 CPU0 执行         x 1;         r1 y;         CPU1 执行:         y 1;         r2 x;         假设以下的情况发生         x 在 CPU1 的 Cache 中。 y 在 CPU0 的 Cache 中。         1. CPU0 运行 x 1, cache miss, 发送 read invalidate 消息并把 x 的值 1 存入 Store Buffer 開始运行 r1 y, Cache 命中r1 为 0;         2. CPU1 运行 y 1cache miss, 发送 read invalidate 消息并把 y 的值 1 存入 Store Buffer, 開始运行 r2 xCache 命中r2 为 0;         3. CPU0 和 CPU1 各自收到了对方的消息并作出回应x 和 y 的值均应用到 Cache 中且都为 1;         主函数收到信号比較 r1 和 r2 的值奇迹发生了。         假设你知道我讲的这些细节就会发现事实上这并非奇怪了。那么假设解决问题呢         事实上答案就非常easy了要么让两个线程执行在同一个核心上要么在两个语句之间加上内存屏障经验证问题攻克了。         题外篇         在不同 CPU 架构下对内存的乱序訪问事实上是不同的一般的内存乱序分为下面四种:         LoadStore, LoadLoad, StoreStore, StoreLoad。而且 X86 下仅仅会出现 StoreLoad 乱序也就是上面的样例我的 CPU 是 X86 的所以出现了这样的情况由此可知事实上 X86 内存乱序訪问的还不算太厉害。         简单解释一下x 1为 Store, 读取 y 的过程为 Load所以 Load 指令在 X86 下同意在 Store 还未更新到 Cache 中之前被运行。         走出一个误区内存乱序訪问与 CPU 乱序运行Out of Order即 OOO不同。早期的处理器为有序处理器In-order processors有序处理器处理指令通常有下面几步         1. 指令获取        2. 假设指令的输入操作对象input operands可用比如已经在寄存器中了则将此指令分发到适当的功能单元中。假设一个或者多个操作对象不可用一般是因为须要从内存中获取则处理器会等待直到它们可用         3. 指令被适当的功能单元运行         4. 功能单元将结果写回寄存器堆Register file一个 CPU 中的一组寄存器           相比之下乱序处理器Out-of-order processors处理指令通常有下面几步         1. 指令获取         2. 指令被分发到指令队列         3. 指令在指令队列中等待直到输入操作对象可用一旦输入操作对象可用指令就能够离开队列即便更早的指令未被运行         4. 指令被分配到适当的功能单元并运行         5. 运行结果被放入队列而不马上写入寄存器堆         仅仅有全部更早请求运行的指令的运行结果被写入寄存器堆后指令运行的结果才被写入寄存器堆运行结果重排序让运行看起来是有序的         从上面的运行过程能够看出乱序运行相比有序运行能够避免等待不可用的操作对象有序运行的第二步从而提高了效率。现代的机器上处理器运行的速度比内存快非常多有序处理器花在等待可用数据的时间里已经能够处理大量指令了。         如今思考一下乱序处理器处理指令的过程我们能得到几个结论         对于单个 CPU 指令获取是有序的通过队列实现         对于单个 CPU 指令运行结果也是有序返回寄存器堆的通过队列实现         由此可知在单 CPU 上不考虑编译器优化导致乱序的前提下多线程运行不存在内存乱序訪问的问题         CPU 尽管是乱序运行可是是顺序流出结果在我们看来乱序运行对我们来讲是透明的我们看到的结果和指令顺序是一样的。 转载于:https://www.cnblogs.com/gcczhongduan/p/4065365.html
http://wiki.neutronadmin.com/news/27731/

相关文章:

  • ps网站首页直线教程西安做网站程序
  • 简单大气网站网站建设 平面设计合同
  • 教外国人做中国菜网站wordpress 站点群
  • 在线网站地图生成器免费公众号排版编辑器
  • 改图网站wordpress更换网站数据库
  • 免费网站源码模板下载怎么用vscode做网站
  • 网站建设请示怎么写有什么推广方法
  • 网站建设的目的分析网站的建设方案
  • 网站的二级栏目怎么做商务网站开发意义
  • 做网站建设怎么跑客户网站前端设计公司
  • 个人网站名字取名怎么做wordpress comicpress
  • 网站里网格怎么做纯前端网站怎么做rest
  • 阿里建站模板2023电商平台排行
  • 泰和县建设局网站怎样做能直接上传微信的视频网站
  • node.js做网站好累制作类似网站软件
  • 外贸网站建设哪家好手机版wordpress使用
  • 怎么查网站关键词密度平面设计找素材的网站
  • 徐州网站建设价格基于django电商网站开发课设报告
  • 五个h5制作网站传媒公司官网
  • 各主流网站做景区宣传网站整改建设安全设备方案
  • 企业建站系统营销吧tt团队展览网站建设方案
  • 优化网站推广网站江苏城市建设职业学院网站
  • 网店美工培训肥城市区seo关键词排名
  • h5商城网站建设是什么微信代运营是什么意思
  • 西安网站设计建设公司 概况潍坊娜娜网站制作
  • 招生网站转换率低制作视频的软件手机
  • 用vs2017做网站国际网站建设招标
  • 网站建设项目心得体会网站的类型大全
  • 建设旅游网站数据库设计百度收录什么意思
  • 天津网站建设制作价格中文wordpress案例