多核CPU
Registers | < 1ns |
L1 | 约 1ns |
L2 | < 3ns |
L3 | 约15ns |
主存 | 约 80ns |
为什么三层:工业测试的效果最好
缓存行大小:越大,局部性空间效率越大,读取越慢;越小,局部性空间效率越小,读取越快。字节(intel)
Intel mesi 缓存一致性协议(又叫缓存锁)
其他 msi
一致性协议无法保证缓存一致性时 :跨越多个缓存行、无法缓存的数据
使用总线锁的策略
实践的指导意义:
缓存行对齐:对于有些特别敏感的数字,会存在线程高竞争的访问,为了保证不发生伪共享,可以使用缓存行对齐的编程方式
JDK7中,很多采用long padding提高效率 如disruptor
JDK8,加入了@Contended注解需要加上:JVM -XX:-RestrictContended 根据机器情况帮助填充
扩展概念:
1、合并写技术: Write Combining Buffer
一般是4个字节,由于ALU速度太快,所以在写入L1的同时,写入一个WC Buffer,满了之后,再直接更新到L2
2、UMA 和 NUMA 和 NUMA aware Non Uniform Memory Access
ZGC - NUMA aware:分配内存会优先分配该线程所在CPU的最近内存
参考:缓存一致性协议
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务