关于处理器静态动态内存屏障的原理和应用
CPU为什么会乱序?
本质原因是为了提高CPU的效率,挖掘程序并行度,将不相关的操作并行执行,排在后面的指令不等前面的指令执行结束就开始执行,并且在前面的指令执行结束前结束,例如在CPU0上执行下面两条指令:
在上述情况下,b=2会早于a=1执行完。这种乱序,在其他流水线上是可见的,因为毕竟内存是共享的,如果另一条流水线运行的业务依赖这个赋值的先后顺序,如果不加处理,则有可能会导致业务逻辑出现错误。在单个流水线上乱序执行有没有这种问题呢?我认为是没有的,原因如下:
1.首先,如果a先于b完成自闭不言,本身就符合逻辑顺序。
2.b先于a完成,但是都早于assert完成,这种执行上虽然是乱序,但是从结果上和逻辑一致,也不会有问题。
3.b先于a完成,assert执行时,a还没有退役,这种情况下,a虽然没有完成,但是a最新状态要么在保留站中,要么在ROB中,要么由于数据相关指向另一个ROB或者保留站,无论哪种情况,最新状态都会从流水线内部的状态获得,而不会直接取内存(具体分析可以看量化这本书),所以仍然能够获取新值,不会出错。
a的最新值要么在流水线中,要么在内存中,即便执行顺序被打乱,但是仍然能够获取到正确的数据,所以ÿ
关于处理器静态动态内存屏障的原理和应用相关推荐
- 《为什么在多核处理器下需要内存屏障(MenmoryBarrier)?》
<为什么在多核处理器下需要内存屏障(MenmoryBarrier)?> 因为CPU的乱序执行技术虽然可以极大的提高流水线的工作效率,但是导致了实际运行次序和program的次序不一致,如果 ...
- java内存屏障的原理与应用
目录 1. java内存屏障 2.java内存屏障的使用 一. java内存屏障 1.1 什么是内存屏障(Memory Barrier)? 内存屏障(memory barrier)是一个CPU指令.基 ...
- 解析原理和实战Linux中如何正确地使用内存屏障
圈里流传着一句话"珍爱生命,远离屏障",这足以说明内存屏障是一个相当晦涩和难以准确把握的东西.使用过弱的屏障,会导致软件不稳定.使用过强的屏障,会引起性能问题.所以工程上,追求恰到 ...
- java内存屏障_java内存屏障
java内存屏障 java的内存屏障通常所谓的四种即LoadLoad,StoreStore,LoadStore,StoreLoad实际上也是上述两种的组合,完成一系列的屏障和数据同步功能. LoadL ...
- 内存屏障(cpu内存屏障 与java内存屏障)
文章目录 CPU 内存屏障 定义 读写屏障指令 为什么会出现内存屏障 java内存屏障 java内存屏障存在意义 java中内存屏障的主要类型 LoadLoad 屏障 StoreStore 屏障 Lo ...
- 谈乱序执行和内存屏障
10多年前的程序员对处理器乱序执行和内存屏障应该是很熟悉的,但随着计算机技术突飞猛进的发展,我们离底层原理越来越远,这并不是一件坏事,但在有些情况下了解一些底层原理有助于我们更好的工作,比如现代高级语 ...
- 多线程基础——内存屏障
内存屏障 内存屏障(memory barrier)是一种概念.编译器和CPU可以在保证输出结果一样的情况下对指令重排序,使性能得到优化.插入一个内存屏障,相当于告诉CPU和编译器先于这个命令的必须先执 ...
- 让你了解什么是内存屏障
重排 内存屏障 内存屏障种类 编译器和处理器必须同时遵守重排规则.多核处理器需使用内存屏障指令来确保一致性.即使编译器优化掉了一个字段访问(因为一个读入的值未被使用),需要产生内存屏障,就像这个访问仍 ...
- [zz]Memory Barriers(内存屏障): a Hardware View for Software Hackers 阅读笔记
Memory Barriers: a Hardware View for Software Hackers(原文地址:http://www.puppetmastertrading.com/images ...
最新文章
- 爱奇艺才被做空又爆裁员,技术研发为裁员重灾区
- 使用FIO对SATA、SSD和PCIe Flash进行测试
- Error: Cannot find module ‘webpack-cli/bin/config-yargs‘
- Java--缓存热点数据,最近最少使用算法
- python爬虫编程100例_哪种Python程序员最赚钱?爬虫数据告诉你!
- 程序员如何高效的学习?
- [css] 使用css的attr()写一个类似a标签title的提示框
- 【转】ubuntu 开机sudo启动应用程序
- MAC 安装 pygraphviz 找不到头文件
- nil和NSNull
- 学生选课系统,第二版
- js对日期进行升序排序
- “衣带渐宽终不悔,为伊消得人憔悴” 读《唐宋词十七讲》有感二 —— 2021.12.23 晚八时
- 什么是 promise?
- coffeescript html5,CoffeeScript语法
- r7 6800u核显相当于什么显卡
- Android仿朋友圈照片定点放大和滑动查看(未完待续)
- 知乎上那些简短却让你印象深刻的回答
- 大学生常用网站链接汇总
- 判断子序列(C语言)
热门文章
- Fisher线性判别分析
- 使用计算机录音需要准备什么,初入录音圈,你需要知道些什么?
- 浅析SaaS的渠道推广
- 2.STC15W408AS单片机时钟
- linux脚本里用expect,如何在bash脚本中使用expect
- du 查看使用 linux命令,Linux命令(17)du 查看文件和目录磁盘使用情况
- GNSS说第(二)讲----加权最小二乘法(WLS)相关概念及基本步骤解析
- 只要2.5分钟!机器手轻松完成最危险复杂的手术
- MTK芯片功能机改IMEI+智能机,合并软件工具介绍
- Android ListView点击事件无反应