并发编程之JMM

157 阅读2分钟

JMM

  • 当代计算机理论模型与工作原理
    • 现代计算机模型是基于-冯诺依曼计算机模型
      • 计算机在运行时,先从内存中取出第一条指令,然后通过编译按照指令的要求,从 存储器 中取出数据进行制定的运算和逻辑操作等加工,然后在按地址把结果存储到内存中去。接下来,在取第二条指令,依次进行下去,直到停止指令
      • 程序与数据一样存储,按程序编排的顺序一步一步的取出指令,自动完成指令规定的操作, 是 计算机最基本的工作模式 ,是由 冯诺依曼 在1945年提出

计算机五大核心组成部分

  1. 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解 释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访 问等。
  2. 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进 行加工处理
  3. 存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需 要时提供这些信息。
  4. 输入(Input system):
  5. 输出 (OutPut system):

image.png

image.png

image.png

image.png

多核cpu保存数据一致性方法

1.总线加锁:早期cpu是通过总线加锁方式,总线加锁为了避免cpu的相互争抢,会对总线进行加锁(锁内存区域RAM),当一个cpu抢到后,另外一个cpu是无法去读取内存的数据的。这样严重降低了性能,永远只有一个cpu能获取资源

2.缓存一致性: 多核cpu运行,主要是缓存一致性保持数据一致,在多核cpu进行计算时,把每个cpu的结果强制刷新到缓存中,然后通过缓存一致性中去取最新的计算数据

缓存有最小存储单元:缓存行(Cache Line)大小:32字节,64字节,128字节
一个指令周期内,会进行指令裁决,所以不存在两个cpu同时去修改某个内存对象的状态
缓存一致性协议:MESI

image.png

多核cpu读取数据流程

image.png

缓存一致性协议,在什么情况下会失效?

  • 内存的数据x大于缓存行的容量横跨多个缓存行时 ,因为x大于一个缓存行的容量时,需要两个或多个缓存行才能存储,那么在汇编指令#lock 加锁时,无法对多个缓存行同时加锁,那么缓存一致性就失效了,会去加总线锁
  • 第二种就是cpu不支持缓存一致性,比如早期的奔腾cpu 引用:blog.csdn.net/weixin_4549…