专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java并发编程(20)CPU处理器中高速缓存的数据结构

temp10 2025-01-01 22:47:33 java教程 12 ℃ 0 评论

上一篇:Java并发编程(19)synchronized如何保证原子性、可见性、有序性

高速缓存是什么

所谓的高速缓存(CPU Cache),就是我们常说的一级,二级,三级缓存。也是嵌入在CPU芯片中的芯片组。访问速度逐级减小而容量增加增大。

Java并发编程(20)CPU处理器中高速缓存的数据结构

高速缓存数据结构

缓存条目中又包含三个属性:

组标记(Tag)指向了这个缓存数据在主内存中的数据的地址;

flag标识了缓存行的状态;

Data Block包含多个变量的值;

怎么在高速缓存里定位到这个变量呢?

处理器在读写高速缓存的时候,会根据变量名执行一个内存地址解码的操作,解析出来3个东西,index、tag和offset。

index用于定位到拉链散列表中的某个bucket的位置

tag是用于定位缓存条目;

offset是用于定位一个变量在cache line中的位置;

如果说可以成功定位到一个高速缓存中的数据,而且flag还标志着有效,则缓存命中;否则不满足上述条件,就是缓存未命中。如果是读数据未命中的话,会从主内存重新加载数据到高速缓存中,现在处理器一般都有三级高速缓存,L1、L2、L3,越靠前面的缓存读写速度越快;

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表