前言

CPU多级缓存中乱序执行优化究竟是怎么优化的呢?为什么会乱序呢?

主体概要

  • CPU多级缓存-乱序执行优化

主体内容

一、CPU多级缓存-乱序执行优化

处理器或编译器为提高运算速度而做出违背代码原有顺序的优化。

重排序遵循原则as-if-serial

as-if-serial语义:不管怎么重排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不会改变。

编译器、runtime和处理器都必须遵守as-if-serial语义。

为了遵守as-if-serial语义,编译器和处理器不会对存在数据依赖关系的操作做重排序,因为这种重排序会改变执行结果。

但是,如果操作之间不存在数据依赖关系,这些操作就可能被编译器和处理器重排序。

例如:

a=10;
b=200;
result=a*b;

其依赖关系如下图所示:

由于a=10和b=200之间不存在依赖关系,因此编译器或处理器可以将这两个操作进行重排,因此最终执行顺序可能有以下两种情况:

但无论哪种执行顺序,最终的结果都是对的。

正是因为as-if-serial的存在,我们在编写单线程的程序时会觉得好像它就是按代码的顺序执行的,这让我们可以不用关心重排的影响。

并发与高并发(三)-CPU多级缓存の乱序执行优化的更多相关文章

  1. 2-2+CPU多级缓存-乱序执行优化

  2. Java高并发--CPU多级缓存与Java内存模型

    Java高并发--CPU多级缓存与Java内存模型 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 CPU多级缓存 为什么需要CPU缓存:CPU的频率太快,以至于主存跟 ...

  3. 并发编程二、CPU多级缓存架构与MESI协议的诞生

    ​前言: 文章内容:线程与进程.线程生命周期.线程中断.线程常见问题总结 本文章内容来源于笔者学习笔记,内容可能与相关书籍内容重合 偏向于知识核心总结,非零基础学习文章,可用于知识的体系建立,核心内容 ...

  4. Java并发编程(一):并发与高并发等基础概念

    并发概念 同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或者换出内存,这些线程是同时存在的,每个线程都处于执行过程中的某个状态.如果运行在多核处理器上,程序中的每个线程都将 ...

  5. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  6. 【高并发】高并发环境下构建缓存服务需要注意哪些问题?我和阿里P9聊了很久!

    写在前面 周末,跟阿里的一个朋友(去年晋升为P9了)聊了很久,聊的内容几乎全是技术,当然了,两个技术男聊得最多的话题当然就是技术了.从基础到架构,从算法到AI,无所不谈.中间又穿插着不少天马行空的想象 ...

  7. 并发与高并发(七)-线程安全性-原子性-atomic

    一.线程安全性定义 定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程 ...

  8. 并发与高并发(二)-JAVA内存模型

    一.java内存模型(JMM)-同步操作与规则 它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式.一个线程如何和何时能看到其他线程共享 ...

  9. 【高并发】高并发环境下如何优化Tomcat配置?看完我懂了!

    写在前面 Tomcat作为最常用的Java Web服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢? Tomcat运行模式 Tomca ...

随机推荐

  1. JAVA作用域和排序算法介绍

    一.作用域 1.作用域的概念 所谓的作用域是指引用可以作用到的范围. 一个引用的作用域是从引用定义位置到包裹它的最近的大括号的结束位置.只有在作用域范围内才可以访问到引用,超出作用域无法访问引用. 定 ...

  2. Java算法练习—— Z 字形变换

    题目链接 题目描述 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L ...

  3. 21 ~ express ~ 内容详情展示 和 阅读数处理

    1,前台 ,/views/main/index.html ,将文章 id 通过url 传送给后台 {% for content in contents %} <div class="p ...

  4. 20 - CommonJS - 规范的具体内容

  5. jvm 优化

    1.jvm 运行参数 1.1 jvm 参数类型 1.1.1 标准参数 -help -version 1.1.2 -X参数(非标准参数) -Xint -Xcomp 1.1.3-XX参数(使用率高) -X ...

  6. k8s常用github网站

    1.集群安装地址 https://github.com/gjmzj/kubeasz 采用本网站安装需要注意点: 1.docker的cgroup驱动 需改为cgroupfs 2 .安装完master和n ...

  7. 剑指offer_1.18_Day_2

    怠惰怠惰,好好练练了要 二维数组中查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个 ...

  8. 如何写好一个完整的Essay写作论证

    主体段是我们留学生在Essay写作中陈述观点和论述观点的核心段落,那么一个完整的论证应该包含哪些要素呢?我觉得有这么几项:主旨句.解释.例证.小结(非必需) 这些其实也是我们在说服他人接受我们的观点时 ...

  9. 洛谷 P5662 纪念品

    题目传送门 解题思路: 一道DP,完全背包,不过有点不同于模板.因为本题的每件物品可自由在不同的时间买卖,且不同时间价格不同. 这道题的关键在于要明白一个非常傻逼的性质,就是我在某天买了第i个物品,然 ...

  10. ref与out区别

    ref与out   out.ref都是传递引用(内存地址),使用后都将改变原来参数的数值.   ref 当调用方法时,在方法中会对ref传入的参数数值进行改变,若使用ref参数,则方法定义和调用方法都 ...