java多线程(8) cpu与多线程

  • 一个exe文件运行到内存中就是一条条的指令,CPU将指令从内存中读取到寄存器中进行执行,每条指令结束后将结果返回,PC程序计数器用于存储下一条指令的地址
  • 寄存器(L0)下是高速缓存,总共有L1、L2、L3,然后是主存L4、磁盘L5、远程文件存储L6
  • 内存相较于cpu是慢动作,所以之间加了很多级别的缓存
  • 一个cpu一个核包含ALU、Registers、PC和多层缓存
  • 超线程:一个ALU对应多个PC|Registers,线程切换速度变快
  • 程序读取数据首先通过寄存器,没有再找旗下的多级缓存,最后才到主存,且读取的时候是一块一块地读取的,一块64个字节,我们称单独的一块为cache line
  • cpu级别的数据一致性是通过cache line来作为基本单位的,现比如x、y在同一个cache line中(比如一个数组中相邻的两个同类型的对象),如果一个核修改了x(如果加了valitile)那么我就要通知另一个核中我已经修改了x,此时就需要同步,所以当x、y不在同一个cache line时就不需要同步了,如何让他们不在同一个cache line呢,人为添加一些多余的数据占满cache line的64个字节,这种写法叫做缓存行对齐
  • 缓存行对齐可以参考disruptor
  • MESI cache
  • LinkedTransferQueue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值