日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java并发 cpu高_java高并发核心要点|系列5|CPU内存伪共享

發布時間:2025/3/12 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java并发 cpu高_java高并发核心要点|系列5|CPU内存伪共享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上節提到的:偽共享,今天我們來說說。

那什么是偽共享呢?

這得從CPU的緩存結構說起。以下如圖,CPU一般來說是有三級緩存,1 級,2級,3級,越上面的,越靠近CPU的,速度越快,成本也越高。也就是說速度方面:1級>2級>3級。

圖1

圖2

如上圖2我們來看看不同級別的緩存的時延:

到CPU的延遲CPU時鐘耗時

主內存

很多(Multiple)

~60-80 ns

L3 緩存

~40-45 周期

~15 ns

L2 緩存

~10 周期

~3 ns

L1 緩存

~3-4 周期

~1 ns

寄存器

一周期

小于1ns,飛快

更多CPU架構信息:https://blog.csdn.net/karamos/article/details/80126704

說到這里,我們要理解一個很重要的概念:緩存行。什么是緩存行?

首先我們來看這幾級緩存,其中,1,2級緩存是CPU核心私有的,也就是說每個核,之間不會共享1,2級緩存,那它們之間怎么通信或共享數據呢?

答案是:3級緩存,如下圖:

那core1,和core2之間,是通過什么方式共享緩存呢?

答案是:緩存行!

什么是緩存行?簡單來說,就是CPU內核之間共享數據的最小單位。如下圖:x,y是在同一個緩存行,那每次CPU內核之間通信時交換x,y值,可以同時共享兩個值。是不是很高效?

是的,一般情況下,如果x,y是屬于數組內的數據 ,是可以達到高效共享數據的功能,但問題又來了:如果,x,y并不屬于同一數組,x屬于core1,而y屬于core2,這個時候,如果core1更新了x,會導致y值失效了。為什么失效了,因為他們在同一緩存行。這時,只有把緩存行 flush到主存后, 其他內核中的相應的緩存行才會被置為過期數據,而緩存行什么時候flush到memory, 這個是有一定延時的 ,在這個延時當中, 其他CPU core是無法得知你的更新的 。那么內核core2再去讀取Y的值時,由于L1的緩存里的數據已失效,那么就需要從L3獲取,然后放入L2,再放入L1。 這樣核心2讀取Y值就需要從L3級的緩存讀了。但是明明是內核core1修改的X的值,卻影響到內核2去讀取Y值了。同理,如果是內核2去修改Y的值,也會影響內核1去讀取X的值。

簡單來說,x,y同放在緩存行,而且它們又屬于不同CPU內核的數據值(事實上CPU內核也就是代碼中的:線程)。那就會因為各自更新其中一個值,而導致緩存失效。

這就是著名的偽共享問題。

有沒有什么解決方案呢?

有的。

方案是:緩存行填充。

還是回到上面的例子,如果x,y同放到同一個緩存行,會造成偽共享。很簡單,那就不要放在一起好了!

比如:x有8byte(字節),而一般緩存行總共有64byte。那其他剩下的位置,我們就用預定的空變量填充就行了,代碼如下 (java6版本):

public final static classVolatileLong {

public volatile long x= 0L;

public long p1, p2, p3, p4, p5, p6,p7;//緩存行填充}

這個時候,core1更新x值,也就不會影響y值,從而造成偽共享問題。

上面的代碼是java6的解決方案。

JAVA 8下的方案

在JAVA 8中,緩存行填充終于被JAVA原生支持了。JAVA 8中添加了一個@Contended的注解,添加這個的注解,將會在自動進行緩存行填充,如下代碼:

import sun.misc.Contended;

@Contended

public class VolatileLong {

public volatile long value = 0L;

}

執行時,必須加上虛擬機參數-XX:-RestrictContended,@Contended注釋才會生效。很多文章把這個漏掉了,那樣的話實際上就沒有起作用。

這就是偽共享的解決方案,多么簡單!

本系列完畢!

如果各位讀者,還有什么意見或建議,歡迎拍磚吐槽!

總結

以上是生活随笔為你收集整理的java并发 cpu高_java高并发核心要点|系列5|CPU内存伪共享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人动漫在线观看视频 | 久久久精品一区二区 | 欧美不卡一二三 | 青青青青草 | 成人黄色在线观看视频 | 蓝牛av| 日韩成人高清在线 | 精品欧美乱码久久久久久 | 精品无码av一区二区三区 | 亚洲一区二区国产精品 | 桃色激情网 | 依人综合网| 国产激情综合五月久久 | 精品国产黄色 | 深夜福利在线免费观看 | 国产91精品看黄网站在线观看 | 精品国产乱码一区二区三区99 | 97avcc| 日韩女优在线观看 | 欧美第一精品 | 国产二级毛片 | 26uuu精品一区二区在线观看 | 河北彩花av在线播放 | 欧洲女同同性吃奶 | 日韩欧美视频在线 | 日韩在线视频网 | 亚洲第一综合网 | 天天干夜夜草 | 天堂中文资源在线观看 | 欧美日韩xxx| 无码人妻一区二区三区一 | 少妇不卡视频 | 日韩视频在线视频 | 农村妇女精品一区二区 | 国产精品久久久久久久9999 | 亚洲精品无码一区二区 | 久久久久亚洲av无码专区桃色 | 免费在线观看a视频 | 台湾swag在线观看 | 加勒比久久综合 | 荷兰女人裸体性做爰 | 三级自拍 | 青青青手机在线视频 | 欧美专区综合 | 国产精品v欧美精品v日韩精品 | 男人私人影院 | 欧美大片免费在线观看 | 香港黄色网址 | 久久艹国产 | 女主播在线观看 | 人人干av| 91色精品 | 大桥未久av在线播放 | 欧美一区二区黄色 | 91啪国产在线 | 99久久久国产精品无码网爆 | 国产又粗又黄又猛 | 免费看黄色片的网站 | 69精品久久久久久久 | 欧美黄色三级 | 宅男午夜影院 | 中文字幕av免费观看 | 美女久久久| 特级西西444www大精品视频免费看 | 久久婷婷一区二区 | 国产精品白嫩极品美女 | 日韩成人综合网 | 国产精品一区二区在线观看 | 久久久久久亚洲av毛片大全 | 欧美综合激情 | av官网在线观看 | 黄色91视频| 超污网站在线观看 | 黄色一级免费观看 | 熟妇人妻无码xxx视频 | 色翁荡息又大又硬又粗又爽 | 国产精品av一区二区 | 午夜免费播放观看在线视频 | 国产精品久久久久久久av福利 | 亚洲成人三区 | 成年午夜视频 | 射死你天天日 | 毛茸茸日本熟妇高潮 | 性日韩| 国语对白少妇spa私密按摩 | 国产主播第一页 | 中文字幕在线观看网址 | 中文字幕+乱码+中文乱码91 | 香蕉在线观看视频 | 国产精品一区二区三区四区在线观看 | 你懂的在线网站 | 超碰个人在线 | 日本不卡视频一区 | 黄色在线网站 | 美女131爽爽爽 | 国产有码在线观看 | 亚洲天堂123| 国产91影院| 影音先锋一区 |