• java并发编程之基础与原理2


    cpu缓存结构剖析

     下面说一下概念与作用

    CPU缓存即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储
    器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中
    保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调
    用,减少CPU的等待时间,提高了系统的效率。

    计算机在程序执行过程中有两种局部性原理:1.时间局部性和2.空间局部性

    cpu的缓存分类

    缓存一般分为了三级缓存:

     

     下面看一下多cpu的多核缓存架构

    上面l1缓存有两个,一个缓存指令,一个用来缓存数据  

     cpu的缓存访问延迟

    主内存访问延迟的时钟周期是167个,然后l1缓存最小,是4个

    我们可以这样来进行一个计算

     下面说一下缓存一致性的问题

     

     下面说一下窥探协议类型

     下面说一下MESI协议:

            

     如何解决原子性问题

     先来说一个总线的仲裁机制

    在计算机中,数据通过总线在处理器和内存之间传递。每次处理器和内存之间的数据传递都
    是通过一系列步骤来完成的,这一系列步骤称之为总线事务(Bus Transaction)

    总线会同步试图并发使用总线的事务。在一个处理器执行总线事务期间,总线会
    禁止其他的处理器和I/O设备执行内存的读/写

    假设处理器A,B和C同时向总线发起总线事务,这时总线仲裁(Bus Arbitration)会对竞
    争做出裁决,这里假设总线在仲裁后判定处理器A在竞争中获胜(总线仲裁会确保所有处理器都
    能公平的访问内存)。此时处理器A继续它的总线事务,而其他两个处理器则要等待处理器A的
    总线事务完成后才能再次执行内存访问。假设在处理器A执行总线事务期间(不管这个总线事务
    是读事务还是写事务),处理器D向总线发起了总线事务,此时处理器D的请求会被总线禁止。
    总线的这种工作机制可以把所有处理器对内存的访问以串行化的方式来执行。在任意时间
    点,最多只能有一个处理器可以访问内存。这个特性确保了单个总线事务之中的内存读/写操作
    具有原子性。
    原子操作是指不可被中断的一个或者一组操作。处理器会自动保证基本的内存操作

    两个方法保证了锁定

    就是总线锁定与缓存锁定

    伪共享的问题

     

     

     下面讲解两个原则

     

     

     

     

     

  • 相关阅读:
    vscode markdown preview enhanced插件显示图片alt标题注释
    Spring 对于事务上的应用的详细说明
    Spring Boot @Validated 和Javax的@Valid配合使用
    离线数仓搭建_05_电商业务简介与业务数据说明
    Python---pyecharts地图案例
    数据分析---SQL(4)
    运筹系列76:mps文件的读取与展示
    utc时间转毫秒
    最优传输(Optimal Transport)
    加权平均的重要作用
  • 原文地址:https://blog.csdn.net/Pxx520Tangtian/article/details/133936595