• 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的请求会被总线禁止。
    总线的这种工作机制可以把所有处理器对内存的访问以串行化的方式来执行。在任意时间
    点,最多只能有一个处理器可以访问内存。这个特性确保了单个总线事务之中的内存读/写操作
    具有原子性。
    原子操作是指不可被中断的一个或者一组操作。处理器会自动保证基本的内存操作

    两个方法保证了锁定

    就是总线锁定与缓存锁定

    伪共享的问题

     

     

     下面讲解两个原则

     

     

     

     

     

  • 相关阅读:
    浏览器插件实现国税网自动登录,以及解决浏览器记住密码会自动填充表单无法修改的问题
    Android Glide preload RecyclerView切入后台不可见再切换可见只加载当前视野可见区域item图片,Kotlin
    打破JSON的束缚:探寻Spring @JsonComponent的灵活性和扩展性
    yolo改进替换VanillaNet backbone
    轻量级3D STEP STL 格式处理 SDK 之CAD DLL C++ Crack
    分段管理存储
    C使用指针注意事项(学习笔记)
    docker 安装 Jenkins
    基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习高级应用
    51单片机数字电压表仿真设计_LCD显示
  • 原文地址:https://blog.csdn.net/Pxx520Tangtian/article/details/133936595