zoukankan      html  css  js  c++  java
  • 并发与高并发(三)-CPU多级缓存の乱序执行优化

    前言

    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的存在,我们在编写单线程的程序时会觉得好像它就是按代码的顺序执行的,这让我们可以不用关心重排的影响。

  • 相关阅读:
    源代码的下载和编译
    Git使用入门
    搭建Android开发环境
    安卓系统移植与驱动开发概述
    第十章
    第九章
    第八章
    第七章读书笔记
    第六章读书笔记
    第五章读书笔记
  • 原文地址:https://www.cnblogs.com/xusp/p/11749650.html
Copyright © 2011-2022 走看看