基本名词
CPU:中央处理器(central processing unit)
ALU:运算器(arithmetic and logic unit)
PC:程序计数器(programme counter)
Registers:寄存器
CU:控制单元(control unit)
MMU:内存管理单元(memory management unit)
CPU读取内存中的数据流程:
1、先从L1中读取数据,没有数据再从L2中读取数据,在没有从L3中读取数据,在没有从内存中以缓存行为单位读取数据
2、从内存中读取完数据,更新缓存L3、L2、L1
缓存行:每次每颗CPU以缓存行为单位读取数据(Inet 64字节)
缓存一致性协议:保证多个CPU中相同的缓存行数据一致(即一个CPU修改后,其他CPU过期重新从内存中读取)
锁总线:只能一个CPU访问内存,性能比较低
缓存行对齐:对于有些特别敏感的数字,会存在线程高竞争访问,为了保证不发生伪共享,可以使用缓存行对齐的编程方式(disruptor)
JDK7:很多采用long padding提高效率
JDK8:加入了@Contended注解,需要加上JVM参数:-XX:-RestrictContended(去除竞争)