A. CPU的一、二、三級緩存分別有什麼用
緩存大小也是CPU的重要指標之一,而且緩存的結構和大小對CPU速度的影響非常大,CPU內緩存的運行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於系統內存和硬碟。實際工作時,CPU往往需要重復讀取同樣的數據塊,而緩存容量的增大,可以大幅度提升CPU內部讀取數據的命中率,而不用再到內存或者硬碟上尋找,以此提高系統性能。但是從CPU晶元面積和成本的因素來考慮,緩存都很小。x0dx0ax0dx0aL1 Cache(一級緩存)x0dx0a L1 CPU緩存x0dx0aCache(一級緩存)是CPU第一層高速緩存,分為數據緩存和指令緩存。內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般伺服器CPU的L1緩存的容量通常在32—256KB。x0dx0ax0dx0aL2 Cache(二級緩存)x0dx0a L2 Cache(二級緩存)是CPU的第二層高速緩存,分內部和外部兩種晶元。內部的晶元二級緩存運行速度與主頻相同,而外部的二級緩存則只有主頻的一半。L2高速緩存容量也會影響CPU的性能,原則是越大越好,現在家庭用CPU容量最大的是4MB,而伺服器和工作站上用CPU的L2高速緩存更高達2MB—4MB,有的高達8MB或者19MB。x0dx0ax0dx0aL3 Cache(三級緩存)x0dx0a L3 C CPU緩存x0dx0aache(三級緩存),分為兩種,早期的是外置,現在的都是內置的。而它的實際作用即是,L3緩存的應用可以進一步降低內存延遲,同時提升大數據量計算時處理器的性能。降低內存延遲和提升大數據量計算能力對游戲都很有幫助。而在伺服器領域增加L3緩存在性能方面仍然有顯著的提升。比方具有較大L3緩存的配置利用物理內存會更有效,故它比較慢的磁碟I/O子系統可以處理更多的數據請求。具有較大L3緩存的處理器提供更有效的文件系統緩存行為及較短消息和處理器隊列長度。 x0dx0ax0dx0a其實最早的L3緩存被應用在AMD發布的K6-III處理器上,當時的L3緩存受限於製造工藝,並沒有被集成進晶元內部,而是集成在主板上。在只能夠和系統匯流排頻率同步的L3緩存同主內存其實差不了多少。後來使用L3緩存的是英特爾為伺服器市場所推出的Itanium處理器。接著就是P4EE和至強MP。Intel還打算推出一款9MB L3緩存的Itanium2處理器,和以後24MB L3緩存的雙核心Itanium2處理器。 但基本上L3緩存對處理器的性能提高顯得不是很重要,比方配備1MB L3緩存的Xeon MP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比緩存增加帶來更有效的性能提升。x0dx0ax0dx0a 具體的你到網路上有!!
B. 什麼是cpu的緩存
CPU緩存的概念
CPU緩存是位於CPU與內存之間的臨時數據交換器,它的容量比內存小的多但是交換速度卻比內存要快得多。CPU緩存一般直接跟CPU晶元集成或位於主板匯流排互連的獨立晶元上。
為了簡化與內存之間的通信,高速緩存控制器是針對數據塊,而不是位元組進行操作的。高速緩存其實就是一組稱之為緩存行(Cache Line)的固定大小的數據塊組成的,典型的一行是64位元組。
3. CPU緩存的意義
CPU往往需要重復處理相同的數據、重復執行相同的指令,如果這部分數據、指令CPU能在CPU緩存中找到,CPU就不需要從內存或硬碟中再讀取數據、指令,從而減少了整機的響應時間。所以,緩存的意義滿足以下兩種局部性原理:
時間局部性(Temporal Locality):如果一個信息項正在被訪問,那麼在近期它很可能還會被再次訪問。
空間局部性(Spatial Locality):如果一個存儲器的位置被引用,那麼將來他附近的位置也會被引用。
C. 電腦CPU所謂的,一級二級三級緩存分別在什麼位置
CPU中緩存是為了加快CPU讀取數據的速度,也是為了給內存一個緩沖期。因為CPU運算速度太快了,光靠內存讀寫完全跟不上,而CPU緩存的數據交換比內存快多了,大部分時候CPU可以直接從緩存讀取數據,找不到的話再從內存讀取,這樣可以節省CPU讀取內存數據時浪費的時間。
CPU緩存分為三類,一級緩存(L1)、二級緩存(L2)和三級緩存(L3)。CPU在實際數據讀取中重要的卻是一級緩存,因為一級緩存速度最快,二級緩存其次,三級緩存最慢,只是三級緩存的容量最大。
(3)cpu緩存屏障擴展閱讀:
一級緩存雖然速度最快,但容量最小,單位都是KB,不同CPU之間一級緩存沒有差距,所以現在不怎麼提了,二級緩存容量也不大,基本都是個位數MB,除了一些伺服器CPU會有10幾MB之外,現在CPU也不怎麼提二級緩存。CPU讀取緩存時會先從一級緩存開始,然是二級緩存,而讀取二級緩存有時候會出現數據未命中的情況,這時候就需要從三級緩存讀取。
但是要注意的是三級緩存越大並不一定說這個CPU性能就越強,因為三級緩存的容量還依靠CPU架構和工藝等方面的影響,如果是與架構工藝搭配升級的三級緩存,容量越大才會性能越高。
D. 簡述計算機cpu都有哪些新技術
未來的cpu預計會朝著多核、多通道、 集成內存、 集成顯卡 、節能、 減小面積、 提高集成度、散熱性更好、更滿足消費者的需求等方向發展。
CPU是計算機系統的心臟,計算機特別是微機的快速發展過程,實質上是CPU從低級別向高級、從簡單向復雜發展的過程。其設計、製造和處理技術的不斷更新換代以及處理能力的不斷增強。CPU 發展到今天已使微機在整體性能、處理速度、3D圖形圖像處理、多媒體信息處理及通信等諸多方面達到甚至超過了小型機。
新的通信、游戲及"寓教於樂"等應用程序要求具有視頻、3D圖形、動畫、音頻及虛
擬現實等多媒體功能,這些又對CPU提出了新的要求。Intel公司針對這些要求,繼386處理
器結構之後提出了CPU的進一步最大升級,這就是將MMX(MutliMedia eXtention多媒體擴
展)技術融入Pentium CPU中。採用MMX技術的處理器在解決了多媒體及通信處理等問題的
同時,還能對其他的任務或應用程序應付自如。
MMX的主要技術特點有以下幾點:
(1) 單指令、多數據(Single Instruction Mutli-Data,SIMD)技術是MMX的基礎,它
使得多條信息可由一條單一指令來處理,它與IA(InstructionArchitecture)超標量體系
結構相結合,極大地增強了PC機平台的性能。MMX技術執行指令時是將8位元組數據作為一個
包裝的64位值進入CPU的,全部過程由一條指令立即處理。
(2) MMX指令不具有特許性,其通用性很強,不僅能滿足建立在當前及未來演算法上的P
C機應用程序的大部分需求,而且可用於編碼解碼器、演算法及驅動程序等。
(3) IA MMX指令系統增加了4種新的數據類型,即緊縮位元組(8bit×8bit)、緊縮字(4
bit×16bit)、緊縮雙字(2bit×32bit)和四字(1bit×64bit)。其目的是緊縮定點整數,
將多個整數字組成一個單一的64位數據,從而使系統在同一時刻能夠處理更多的數據。
(4) 增加了8個64位MMX寄存器,即浮點寄存器的別名映象。
(5) 新增加了57條指令。用這些指令完成音頻、視頻、圖形圖像數據處理,使多媒體
、通信處理能力得到大幅度提高。其數學及邏輯指令可支持不同的緊縮整數數據類型,對
於每一種得到支持的數據類型,這些指令都有一個不同的操作碼。新的MMX技術指令採用
57個操作碼完成,它涉及的功能領域有:基本的算術操作;比較操作;進行新數據類型間的
轉換(緊縮數據及從小數據類型向大數據類型解壓);邏輯操作;用於MMX寄存器之間的數據
轉移(MOV)指令,或內存的64位、32位存取。
可以說09年的整個技術工藝的發展完全是在競爭下展開的。讓我們回首一下本年度的技術發展,看一看09年都有哪些處理器技術最具影響力。
睿頻技術
從08年11月酷睿i7 900系列處理器的上市開始,睿頻技術就已經開始了他的推廣,不過由於限定在了高端范圍內,並沒有使這項技術全面推廣。從酷睿i7 900系列的市場佔有率來看,Intel似乎對此也並不在意,畢竟酷睿i7 900系列產品的定位較高,因此試探性的測試了解的人數較少是可以理解的。
在今年的9月,Intel正式全球發布了面向主流市場的LGA1156介面酷睿i7/i5系列處理器,雖然在介面方面進行了從新設計,但是新發布的LGA1156介面酷睿i7/i5處理器提供了較為完整的酷睿i7 900系列處理器技術(超線程技術除外),其中就包括了睿頻技術。從此,該項技術也正是開始了普及之路。
介紹一下什麼是睿頻技術,和睿頻技術所帶來的好處。
●動態超頻,核心數量按需分配睿頻技術簡介
目前上市的所有Nehalem架構處理器都提供了睿頻技術(英文為Turbo Boost Mode),該項技術的運用可以幫助處理器在空閑時期將整體功耗降低,從而達到節能的目的,但是節能並不是睿頻技術的最大亮點,其最大的亮點就在於可以視平台運行狀態而定,選擇性的提高一個或多個核心的運行頻率,從而做到提高工作效率且降低功耗的目的。
睿頻技術可以提高一個或多個核心的頻率
我們以大型3D游戲為例,某些游戲可能對主頻更為敏感,多核心並不能帶來明顯的效能提升,對處理器進行超頻反而效果更好,如果這個時候開啟Turbo模式,並且將TDP設定在用戶所採用的散熱器允許范圍內,那麼CPU在這個時侯可以對某顆或某兩顆核心進行動態超頻來提升性能。
睿頻技術讓處理器超頻智能化,自動化
實現Turbo技術需要在核心內部設計一個功率控制器,大約需要消耗100萬個晶體管。但這個代價是值得的,因為在某些游戲中開啟Turbo模式可以直接帶來10%左右的性能提升,相當於將顯卡提升一個檔次。值得一提的是,Extreme版本的Core i7處理器最高可以將TDP在BIOS中設定到190W來執行Turbo模式,在個別應用中進一步提升CPU時鍾頻率,帶來效能上的提升。目前,主流的酷睿i7 750處理器在開啟該技術後,可在單線程任務是將一顆核心的主頻提高至3.2GHz。想必這樣高的主頻運行單線程任務可以說易如反掌。
超線程技術
超線程,早在2002年Intel便已經推出了這一技術,並且廣泛的在奔騰4處理器中大規模應用。採用了超線程技術的奔騰4處理器可以比原產品效能提升10%-15%左右,可見Intel對超線程技術的運用是信心滿滿的。
但是事實卻出乎Intel的意料。首先是來自操作系統端的問題,當時微軟已經發布了Windows 2000系統,然而該系統並沒有加入對超線程技術的支持,雖然後來出現的Windows XP系統加入了對該技術的支持,但也最終因為應用軟體端對超線程技術的優化較少而作罷。另一個問題是來自於Intel自身的奔騰4處理器。基於NetBurst架構的奔騰4處理器由於過分的追求高主頻加長了流水線設計,這導致了處理器的主頻雖然達到了3GHz以上,卻並沒有提供3GHz主頻相等的性能。由於過高的流水線已經造成數據運算錯誤率提高,在加上超線程技術的雙核模擬容易讓CPU在運算時命中失敗,且對帶寬的驚人需求。超線程技術不但沒為處理器帶來更高的執行效率,反而在某些情況下降低了奔騰4處理器的性能。所以說超線程技術雖然是一個非常先進且使用的概念,但在那個時代並不適合。
早在奔騰4時代Intel就加入了HT超線程技術
進入酷睿2時代後,由於內存帶寬沒有獲得突飛猛進,而且酷睿2處理器的短流水設計並不適合超線程技術,因此新一代的酷睿架構處理器也就取消了超線程這一概念。
隨著技術的進步,Intel已經進入了45nm工藝和Nehalem架構時代,在最新的Nehalem Core i7處理中,由於對DDR3內存控制器的整合,同時引入了三通道內存技術,內存帶寬得到了質的飛躍,QPI匯流排的引入也令處理器的帶寬大幅提升。這為超線程技術的回歸提供了契機,於是乎Intel在酷睿i7系列以及未來的雙核酷睿i5處理器中加入了超線程技術。
Nehalem架構時代超線程技術再次回歸
此外,新一代操作系統的推出也給多線程處理器提供了施展拳腳的機會,而3D游戲以及眾多的應用軟體也針對多線程進行了優化,可以說超線程技術在此時回歸時絕對的最佳時機。
可能看到這里依然會有眾多的讀者朋友會感到奇怪,這超線程技術目前只在高端酷睿i7處理器當中有所運用,並不是普通消費者能夠使用到的,為何把它也列為09年最具影響力的技術之一呢?相信了解硬體的讀者一定知道,處理器行業中的另一個領軍企業AMD一直以來並沒有為自身的處理器加入超線程技術。而AMD的高管人士甚至曾經一度認為超線程技術是影響處理器性能發揮的元兇之一。但是在看到Intel為伺服器的至強以及桌面高端處理器引入超線程技術得到了超高的執行效能後,AMD內部高層承認,沒有早早引入此類技術是一項技術選擇上的失誤。為了能夠盡快彌補這一技術缺陷,AMD已經決定在不久的將來為旗下的伺服器用以及桌面級處理器引入超線程技術。可見超線程技術在酷睿i7及未來的酷睿i5中回歸,影響的不僅僅是用戶,更影響到了對手。在不久的幾年裡,也許從低端到高端的所有處理器就可以全部應用到超線程技術。
VT虛擬化技術
我們接下來要介紹的這項技術與前邊的超線程技術一樣,也不是09年才被創新出來的。這項技術誕生於奔騰4處理器時代,兩大晶元巨頭當時均已這項技術為宣傳目標,但都因為受制於技術性能以及軟體方面的問題沒有推廣開(伺服器不在我們的討論范圍內)。隨著09年2月,新一代操作系統Windows 7測試版的發布,這項技術才被重新挖掘出來,並且被消費者廣為了解。這項技術就是虛擬化技術。
其實我們所提到的Windows 7系統下的虛擬化系統,也僅在高級至旗艦版本才提供了,並不是所有的版本都提供了這一技術。但其帶來的好處依然被廣大的消費者討論,即使消費者完全用不到這一技術,但在購買處理器的時候依然考慮到了自己所購買的產品能否提供虛擬化技術。
使用虛擬化系統運行的IE6.0瀏覽器
虛擬化技術到底有什麼過人之處竟然讓眾多消費者都參入其中呢?其實要說虛擬化的用途,對企業級用戶來講實質性較強,對於普通用戶來講,虛擬化的用途目前還並沒有被廣泛開發。在企業級用戶那裡,通過虛擬化系統,企業可以集中並且共享資源,實現降低成本、優化利用率的目的。以高性能伺服器為例,在系統閑置的過程中,伺服器的性能會造成嚴重的浪費。如果通過虛擬機將伺服器分為若干個部分,進行各自所需的工作,這樣就可以最大化的利用伺服器的全部性能,從而節省企業開支。而在一些情況下,企業甚至可以通過虛擬機出售伺服器的剩餘性能,從而達到利潤最大化。虛擬化所提供的另外一個好處就是安全。用戶可以通過虛擬網路進行數據傳輸,這樣可以最大限度的保證網路的加密能力,提高網路環境的安全度。以上兩點是對企業級用戶來講最為基本的用途。那麼對普通消費者而言又會有哪些好處呢?
我們以操作系統為例。目前微軟所提供的Windows操作系統的全球使用人數最多,而黑客也針對Windows系統進行的攻擊行為也是最多的。如何能夠保證操作系統的安全性就顯得尤為重要。在虛擬化系統推出之後,用戶在不確定自己手中的數據安全性的前提下,如軟體,網頁等,可以通過虛擬系統來檢測數據的安全性。如果發生了如病毒等問題,僅需簡單的關閉虛擬系統就可以保證系統的安全性。此外,現有系統在不支持某款軟體的情況下,用戶也可以通過虛擬機來實現對該軟體的支持。
簡單的用一句話來解釋虛擬化就是,可以提供最高的安全保障,並最大限度的利用系統所提供的性能的技術。
45nm工藝技術
在2007年年末,Intel正式發布了第一款採用45nm工藝製程的處理器,酷睿四核QX9650。由於運用了當時最先進的工藝技術,這款四核處理器雖然身價過萬,但依然吸引了不少人的目光,因為他的出現標志著45nm工藝時代的降臨。
QX9650的問世標志著CPU進入了45nm工藝時代
45nm有何本領?竟然讓一顆身價過萬的CPU也成為了矚目的焦點。這一切就要從Intel與AMD兩家晶元巨頭的45nm工藝入手了。
●Intel —— 突破式的45nm
2007年,Intel正式發布了四核心Core 2 Extreme QX9650處理器,由此引領行業搶先來到了45nm的新世界。Intel的45nm採用了突破式的新材料,為晶體管發展四十年來之最大進步。
在過往四十餘年的時間中,業內均普遍採用二氧化硅做為製造晶體管柵介質的材料。而在65納米製程工藝下,Intel公司已經將晶體管二氧化硅柵介質的厚度壓縮至1.2納米,基本上達到了這種傳統材料的極限。此時不但使得晶體管在效能增益以及製程提升等方面遭遇瓶頸,過薄的晶體管二氧化硅柵介質亦使得其阻隔上層柵極電流泄漏的能力逐漸降低,漏電率大幅攀升。
SOI是Silicon On Isolator的縮寫,即絕緣體上的硅技術。和傳統的純硅晶圓不同,SOI工藝使用的晶圓底部是一層絕緣層。這層絕緣體切斷了上方MOS管漏電流的迴路,使得基於SOI技術的晶元能夠輕松抵抗漏電流。
真正解決AMD在 45納米技術難題的是多重增強晶體管應變技術,AMD和IBM稱,與非應變技術相比,這一新技術能將P溝道晶體管的驅動電流提高80%,將N溝道晶體管的驅動電流提高24%。可見,製程的提升極大地提升了處理器的潛在性能,並同時賦予了產品更強的功耗控制能力。
「整合」技術
從09年起,CPU領域最大的的變化就是連個字「整合」,整合GPU,整合PCIe控制器,整合內存控制器,直至完全整合了北橋。而整合所帶來的不僅僅是性能上的提升,同時也帶來了平台功耗的進一步降低,可以說整合已經成為了未來CPU的發展趨勢。
完全整合了北橋功能的酷睿i5 750處理器
整合之路的開始起於AMD的K8架構時代,從K8架構時代開始,AMD將本來屬於北橋部分的內存控制器整合進了處理器當中。其好處就是CPU不在受制於FSB的限制,提高了CPU與內存之間的數據帶寬,性能得到了翻倍的提升。
隨著工藝製程的提升,整合內存控制器的CPU性能被突顯出來,Intel也在全新的Nehalem架構中整合進了內存控制器,放棄了傳統的前端匯流排概念。與老的前端匯流排處理器相比,酷睿i7處理器的QPI匯流排所提供的帶寬最高可以達到32GB/s,這要比1600MHz前端匯流排所提供的12.8GB/s提高了兩倍有餘,可見整合內存控制器後對CPU性能提高的影響。
在整合進了內存控制器大獲成功之後,Intel和AMD又將目光放在了PCIe控制器上,雙方都針對這一整合技術開展了研發。不過,在進度方面Intel方面走在了前邊,率先將PCIe控制器整合進了處理器當中,並且推出了LGA1156介面的酷睿i7/酷睿i5系列處理器。從LGA1156介面產品開始,北橋功能就已經完全被整合進入了CPU當中,傳統的三晶元概念已經被雙晶元完全取代。這樣做的好處一方面是提高CPU與內存,CPU與顯卡之間的數據帶寬,同時也將平台的整體功耗降至最低。可以說整合的概念是最符合未來晶元領域發展趨勢的。這也是為何Intel與AMD都在爭相推出整合處理器的緣故。
AMD的Fusion計劃就是整合技術的一部分
在不就的未來,用戶不僅可以使用到整合了北橋功能的處理器,更可以使用到整合了GPU的處理器,當前Intel與AMD都在著手進行著這一整合技術,用戶最早在2010年1月就可以使用到整合GPU的處理器。
整合可以說成為了09年下半年處理器的發展趨勢,並且在將來也將繼續影響著處理器的發展。整合可以算作是09年最有影響力的處理器技術之一
處理器高度集成化、性能更強、處理器更加智能:
英特爾酷睿i處理器
在傳統的處理器構架中,處理器基板上僅僅只有一個單獨的處理器晶元。而2010年發布的英特爾酷睿i系列處理器,首次在處理器的基板上集成了顯示核心。這項技術表面上看起來並沒有特別之處,但是對於筆記本產品來說,意味著高度集成化的處理器,可以把筆記本產品設計的更加輕薄。同時一些搭配獨立顯卡的機型,可以智能的進行雙顯卡的切換,解決了筆記本性能和電池續航之間的矛盾。
在英特爾酷睿i系列處理器中,除了英特爾 i3系列處理器以外。眾多的英特爾酷睿i系列處理器,都支持睿頻加速技術,這項技術可以自動檢測系統處理負載,而自動判斷是否需要自動提升頻率,來加快系統的響應速度。當然睿頻加速並不是無限制的加速,也是有一定的頻率限制。
筆記本首次加入3D顯示技術:
筆記本3D技術
隨著2010年火遍全球的電影《阿凡達》的上映,徹底引爆了人們對於3D技術的熱情。雖然3D技術已經不是什麼新鮮事了,而在筆記本上面大面積的使用還是頭一回。而筆記本上的3D技術其實也是分派別的,比如說英偉達使用的3D技術,就是紅藍3D和快門式3D技術,而配備ATI顯卡的筆記本則使用偏振式3D技術。對於筆記本來說,3D技術可以讓用戶擁有更加震撼的視覺享受。
筆記本多點觸控技筆記本多點觸控板
雖然多點觸控技術在蘋果電腦上早有應用,但是其他品牌的筆記本並沒有採用這一技術。而2010年是大規模採用這項技術的一年,多點觸控技術讓我們可以拋棄傳統的滑鼠來進行操作。比如說雙指向外拉申,就可以放大圖片和放大網頁。這項技術的出現,大大提高了筆記本觸摸板的使用效率,也提高了人們的操作筆記本的效率。
2010年的應用的技術我們基本上算是盤點完了,接下來我們要來盤點一下2011年,可能要裝備我們筆記本的那些新技術。
sandy bridge核心構架術:
說起融合可謂是IT技術的一大趨勢,比如說sandy bridge核心的新一代處理器。就是把處理器和顯卡成功的融合到一款。而AMD也同樣有相同的技術,比如說AMD公司的APU處理器,就是把處理器和顯卡成功的融合到單個晶元中。
2011年Sandy Bridge整合GPU圖形核心技術
雖然目前的處理器加入了睿頻加速和集成顯卡設計,但是這次SNB自帶的GPU圖形核心確實經過了大幅度的重新設計,擁有專門的視頻轉碼硬體模塊,性能大約是目前HDGraphics的兩倍,目前已經的測試也證明Intel所言非虛。藉助第二代Turbo Boost睿頻加速技術,SNB的CPU、GPU兩部分可以相互獨立地動態加速。如果你正在玩的游戲更需要GPU資源,那麼CPU部分可能會運行在原始頻率甚至降低,GPU則在功率允許范圍內盡量提速。
超線程和Turbo Boost動態加速技術
SNB移動版全部開啟了超線程和Turbo Boost動態加速技術,而且官方內存頻率最高提至1600MHz。特別值得一提的是,SNB移動版所集成的圖形核心都會有12個執行單元,兩倍於桌面版,而且頻率方面也不低,默認均為650MHz,動態加速最高1300MHz或者1150MHz。已知的測試可以證明,Intel集顯的性能已經相當驚人,照此推算移動版甚至還會更狠,移動獨立顯卡的生存空間將受到嚴重擠壓。
通過英特爾官方對睿頻加速技術的解釋。當啟動一個運行程序後,處理器會自動加速到合適的頻率,而原來的運行速度會提升10%~20% 以保證程序流暢運行;應對復雜應用時,處理器可自動提高運行主頻以提速,輕松進行對性能要求更高的多任務處理;當進行工作任務切換時,如果只有內存和硬碟在進行主要的工作,處理器會立刻處於節電狀態。這樣既保證了能源的有效利用,又使程序速度大幅提升。通過智能化地加快處理器速度,從而根據應用需求最大限度地提升性能,為高負載任務提升運行主頻高達20%以獲得最佳性能即最大限度地有效提升性能以符合高工作負載的應用需求:通過給人工智慧、物理模擬和渲染需求分配多條線程處理,可以給用戶帶來更流暢、更逼真的游戲體驗。同時,英特爾智能高速緩存技術提供性能更高、更高效的高速緩存子系統,從而進一步優化了多線程應用上的性能。
隨著處理器製程和設計越來越先進,筆記本性能也會隨著強大。而處理器和顯卡的高度融合,筆記本的續航時間會大大延長,而筆記本可能做的越來越輕薄,性能也會越來越強大。
隨著宏碁Iconia筆記本的發布,一下打破了我們對於傳統筆記本的定義。而傳統物理鍵盤的消失使得筆記本在用戶體驗方面更近一層。而物理鍵盤的消失,我們大可不必擔心。虛擬鍵盤的加入使得筆記本,在文字輸入方面不會存在任何問題,只不過沒有物理鍵盤那樣的手感了,這也是筆記本變革的「陣痛」。
上面的試用視頻中我們可以看到。雙屏觸摸筆記本無論是在瀏覽照片、看視頻還是瀏覽網頁,都顯得如此的簡單和便捷。這對於傳統鍵盤來說,無疑可以掀起一輪筆記本革新的風暴。這種用戶體驗的革新,好比Iphone對於手機業的革新一樣,明年各大廠商都應該會發布自家的雙屏筆記本。
在2010年電影阿凡達的上映,讓很多體驗到了3D技術的震撼。而筆記本裝備有3D顯示屏後,筆記本在用戶體驗會更上一城樓。比如說,一些第一人稱射擊游戲在3D技術的存托下,讓用戶臨場感覺更加好。而市場上的傳統的3D技術是佩戴3D眼睛來實現的。 而大多數用戶在長時間觀看3D電影和進行3D游戲的時候,會產生暈眩和視力下降的情況。
任天堂即將發售的裸眼3D游戲掌機3DS,把裸眼3D技術推向了3D技術時代浪尖。讓大多數人開始漸漸關注起裸眼3D技術。對於裸眼3D技術,大多是人還是很陌生。如今的裸眼3D技術可以分為兩派,一個是光屏障式3D技術也被稱為視差屏障或視差障柵技術,其原理和偏振式3D較為類似,是由夏普歐洲實驗室的工程師十餘年的研究成功。光屏障式3D產品與既有的LCD液晶工藝兼容。而這種技術的優點是成本低廉,但是可視角度比較差,而且在顯示亮度方面也偏暗。
光屏障礙裸眼3D技術
而如今柱狀透鏡式裸眼3D正好可以解決光屏障礙裸眼3D的缺陷。其最大的優勢便是其亮度不會受到影響。柱狀透鏡3D技術的原理是在液晶顯示屏的前面加上一層柱狀透鏡,使液晶屏的像平面位於透鏡的焦平面上,這樣在每個柱透鏡下面的圖像的像素被分成幾個子像素,這樣透鏡就能以不同的方向投影每個子像素。於是雙眼從不同的角度觀看顯示屏,就看到不同的子像素。不過像素間的間隙也會被放大,因此不能簡單地疊加子像素。
http://tech.huanqiu.com/digit/pc/news/2011-01/1394758_6.html
第1頁:2011年處理器/主板重大事件點評
-
2011年已經接近年底,在這一年中有諸多新技術新產品給我們留下了深刻的印象,明年也將會有更加值得期待的技術出現,今天我們就來做一個收尾總結。今年一年變化還是不小的,比如集成圖形性能還算不錯的Sandy Bridge處理器、全新概念的APU、最高端的Sandy Bridge-E架構Core i7、AMD正在進行的大裁員和戰略調整等等,這些都給我們帶來了不小的影響。
對於廠商來說,今年可以用有喜有憂來形容,一方面DIY產品價格越來越便宜,單價利潤並沒有增加,另外一方面,DIY消費者總量還在快速成長。當然,今年也碰到了諸如泰國發大水導致硬碟狂漲帶來的銷量影響,不過整體來說今年表現還是不錯的。那麼明年會是怎麼樣?目前還真不好說,希望明年行業發展會更好。對於消費者來說,價格便宜自然可以花更少錢玩到新奇的產品,當然便宜的東西也不一定就是好的,用戶還是需要理性選擇合適的產品。閑話少說,接下來就讓我們來一一回顧今年到來的新產品和新技術以及發生的新鮮事,我用時間倒敘的方式給大家做展示。
不得不提的AMD 「Project WIN」(勝利工程)
對於AMD來說,2011年並不是一個高速成長的一年,雖然今年有APU和推土機產品陸續登場,但是依然彌補不了和競爭對手的差距,無奈之下,只能進行這次幅度接近12%的大裁員,其中市場營銷部門被砍掉了大約60%,市場營銷副總裁Patrick "Pat" Moorhead、品牌副總裁JohnVolkmann、公關總監Dave Kroll等都黯然離去,技術人員也未能獨善其身,比如多名關鍵的Fusion工程師都丟掉了飯碗,大概是APU的表現仍然沒有達到讓AMD滿意的程度,甚至整個產品評測支持團隊都不存在了。不過與此同時,AMD已經在准備「Project WIN」(勝利工程)以調整未來公司的重心業務和發展方向。
不管該策略最終如何,都並非Rory Read一個人的主意,而是整個董事會的決定,主要目標就是提高效率、降低成本、增加收入、加快產品開發與上市時間。業界普遍認為,Rory Read將會把AMD更多地帶往消費級產品市場,低功耗的「山貓」架構將會扮演重要角色。AMD有可能在最近宣布加入ARM陣營,宣布獲得ARM許可。
不管怎麼樣,AMD都需要進一步明確自己的發展方向,找到真正能給自己帶來高速增長的契機,也許未來雲計算、低功耗以及發展迅猛的中國市場才是AMD需要重點把守的戰場。\微軟將在明年推出支持ARM架構處理器的Windows 8,ARM也在加緊近日PC以及伺服器領域的步伐。10月底,ARM公司正式宣布,其首個採用64位指令集的處理器架構「ARMv8」正式出爐,在這個64位處理器橫行的年代,ARM處理器終於跟上時代的腳步了
E. voliate怎麼保證可見性
上次我們學習了volatile是如何解決多線程環境下共享變數的內存可見性問題,並且簡單介紹了基於多核CPU並發緩存架構模型的Java內存模型。
詳情見文章:
volatile很難?由淺入深懟到CPU匯編,徹底搞清楚它的底層原理
在並發編程中,有三個重要的特性:
內存可見性
原子性
有序性
volatile解決了並發編程中的可見性和有序性,解決不了原子性的問題,原子性的問題需要依賴synchronized關鍵字來解決。
關於並發編程三大特性的詳細介紹,大家可以點擊下方卡片搜索查看:
搜更多精彩內容
並發編程三大特性
內存可見性在上一篇文章中已經驗證,本文我們繼續通過代碼學習如下內容:1、volatile為什麼解決不了原子性問題?2、緩存行、緩存行填充3、CPU優化導致的亂序執行4、經典面試題:DCL必須要有volatile關鍵字嗎?5、valatile關鍵字是如何禁止指令重排序的?
以上每一步都會有一段代碼來驗證,話不多說,開始輸出干貨!
1、volatile為什麼解決不了原子性問題?
如果你對volatile了解的還可以,那麼咱們繼續往下看,如果不是太熟悉,請先行閱讀上一篇文章。
老規矩,先來一段代碼:
volatile原子性問題代碼驗證
這段代碼的輸出結果是多少?10000?大於10000?小於10000?
程序執行10次輸出的結果如下:
join:10000
join:10000
join:10000
join:9819
join:10000
join:10000
join:10000
join:9898
join:10000
join:10000
會有小幾率的出現小於10000的情況,因此volatile是無法保證原子性的,那麼到底在什麼地方出問題了呢?
還是用上篇文章的圖來說明一下程序的整體流程:
當線程1從內存讀取num的值到工作內存,同時線程2也從內存讀取num的值到工作內存了,他倆各自操作自己的num++操作,但是關鍵點來了:
當線程1、2都執行完num++,線程1執行第五步store操作,通過匯流排將新的num值寫回內存,刷新了內存中的num值,同時觸發了匯流排嗅探機制,告知線程2其工作內存中的num不可用,因此線程2的num++得到的值被拋棄了,但是線程2的num++操作卻是執行了。
2、CPU緩存行
寫上篇文章的時候,有朋友問到了CPU的三級緩存以及緩存行相關的問題,然後我就找了一些資料學習,形成了下面的一張圖:
CPU緩存行
CPU和主內存RAM之間會有三級緩存,因為CPU的速度要比內存的速度要快的多,大概是100:1,也就是CPU的速度比內存要快100倍,因此有了CPU三級緩存,那為什麼是三級緩存呢?不是四級、五級呢?四個大字送給你:工業實踐!相關概念:
ALU:CPU計算單元,加減乘除都在這里算
PC:寄存器,ALU從寄存器讀取一次數據為一個周期,需要時間小於1ns
L1:1級緩存,當ALU從寄存器拿不到數據的時候,會從L1緩存去拿,耗時約1ns
L2:2級緩存,當L1緩存里沒有數據的時候,會從L2緩存去拿,耗時約3ns
L3:3級緩存,一顆CPU里的雙核共用,L2沒有,則去L3去拿,耗時約15ns
RAM內存:當緩存都沒有數據的時候,會從內存讀取數據
緩存行:CPU從內存讀取數據到緩存行的時候,是一行一行的緩存,每行是64位元組(現代處理器)
問題來了:
1、緩存行存在的意義?好處是什麼?
空間的考慮:一個地址被訪問,相連的地址很大可能也被訪問;
時間的考慮:最近訪問的會被頻繁訪問好處:比如相連的地址,典型的就是數組,連續內存訪問,很快!
2、緩存行會帶來什麼問題?
緩存行會導致緩存失效的問題,從而導致程序運行效率低下。例如下圖:
當x,y兩個變數在一個緩存行的時候:
1、線程1執行x++操作,將x和y所在的緩存行緩存到cpu core1裡面去,
2、線程2執行y++操作,也將x和y所在的緩存行緩存到cpu core2裡面去,
3、線程1執行了x++操作,寫入到內存,同時為了保證cpu的緩存一致性協議,需要使其他內核x,y所在的緩存行失效,意味著線程2去執行y++操作的時候,無法從自己的cpu緩存拿到數據,必須從內存獲取。
這就是緩存行失效!
一段代碼來驗證緩存行失效的問題:
緩存行失效常式
耗時:2079ms
這個時候我們做一個程序的改動,在x變數的前面和後面各加上7個long類型變數,如下:
再次運行,看耗時輸出:
耗時:671ms
大約三倍的速度差距!
關於緩存行的更多概念,大家也可以點擊下方卡片直接搜索更多信息:
搜更多精彩內容
緩存行
3、CPU優化導致的亂序執行
上文在說緩存行的時候,主要是因為CPU的速度大約是內存的速度的100倍,因此CPU在執行指令的時候,為了不等待內存數據的讀取,會存在CPU指令優化而導致亂序執行的情況。
看下面這段代碼:
cpu亂序執行常式
執行後輸出(我執行了900多萬次才遇到x=0,y=0的情況,可以試試你的運氣哦~):
因為CPU的速度比內存要快100倍,所以當有兩行不相關的代碼在執行的時候,CPU為了優化執行速度,是會亂序執行的,所以上面的程序會輸出:x=0,y=0的情況,也就是兩個線程的執行順序變成了:
x = b;
y = a;
a = 1;
b = 1;
這個時候我們就需要加volatile關鍵字了,來禁止CPU的指令重排序!
4、DCL單例模式需要加volatile嗎?
一道經典的面試題:DCL單例模式需要加volatile欄位嗎?先來看DCL單例模式的一段代碼:
DCL單例模式
DCL全稱叫做Double Check Lock,就是雙重檢查鎖來保證一個對象是單例的。
核心的問題就是這個INSTANCE變數是否需要加volatile關鍵字修飾?答案肯定是需要的。
首先我們來看new一個對象的位元組碼指令:
查看其位元組碼指令:
NEW java/lang/Object
DUP
INVOKESPECIAL java/lang/Object.<init> ()V
ASTORE 1
即:
1、創建並默認初始化Object對象;
2、復制操作數棧對該對象的引用;
3、調用Object對象的初始化方法;
4、將變數Object o指向創建的這個對象,此時變數o不再為null;
根據上文描述我們知道因為CPU和內存速度不匹配的問題,CPU在執行命令的時候是亂序執行的,即CPU在執行第3步初始化方法時候如果需要很長的時間,CPU是不會等待第3步執行完了才去執行第4步,所以執行順序可能是1、2、4、3。
那麼繼續看DCL單常式序,當線程1執行new DCLStudy()的順序是先astore再invokespecial,但是invokespecial方法還沒有執行的時候,線程2進來了,這個時候線程2拿到的就是一個半初始化的對象。
因此,DCL單例模式需要加volatile關鍵字,來禁止上述new對象的過程的指令重排序!
valatile關鍵字是如何禁止指令重排序的
JVM規范中規定:凡是被volatile修飾的變數,在進行其操作時候,需要加內存屏障!
JVM規范中定義的JSR內存屏障定義:
LoadLoad屏障:
對於語句Load1;LoadLoad;Load2;Load1和Load2語句不允許重排序。
StoreStore屏障:
對於語句Store1;StoreStore;Store2;Store1和Store2語句不允許重排序。
LoadStore屏障:
對於語句Load1;StoreStore;Store2;Load1和Store2語句不允許重排序。
StoreLoad屏障:
對於語句Store1;StoreStore;Load2;Store1和Load2語句不允許重排序。
JVM層面volatile的實現要求:
如果對一個volatile修飾的變數進行寫操作:
前面加StoreStoreBarrier屏障,保證前面所有的store操作都執行完了才能對當前volatile修飾的變數進行寫操作;
後面要加StoreLoadBarrier,保證後面所有的Load操作必須等volatile修飾的變數寫操作完成。
如果對一個volatile修飾的變數進行讀操作:
後面的讀操作LoadLoadBarrier必須等當前volatile修飾變數讀操作完成才能讀;
後面的寫操作LoadStoreBarrier必須等當前的volatile修飾變數讀操作完成才能寫。
上篇文章我們通過一定的方式看到了程序執行的volatile修飾的變數底層匯編碼:
0x000000010d3f3203: lock addl $0x0,(%rsp) ;*putstatic flag
; - com.java.study.VolatileStudy::lambda$main$1@9 (line 31)
也就是到CPU的底層執行的命令其實就是這個lock,這個lock指令既完成了變數的可見性還保證了禁止指令充排序:
LOCK用於在多處理器中執行指令時對共享內存的獨占使用。它的作用是能夠將當前處理器對應緩存的內容刷新到內存,並使其他處理器對應的緩存失效;另外還提供了有序的指令無法越過這個內存屏障的作用。
end
至此,對volatile的學習就到這里了,通過兩篇文章來對volatile這個關鍵字有了一個系統的學習。
學無止境,對volatile的學習還只是一個基礎學習,還有更多的知識等待我們去探索學習,例如:
什麼是as-if-serial?什麼是happens-before?
Java的哪些指令可以重排序呢?重排序的規則是什麼?
我們下期再見!
1372閱讀
搜索
java自學一般要學多久
volatile底層原理
匯編111條指令詳解
java必背100源代碼
volatile架構圖
嵌入式volatile詳解
F. 內存屏障
內存屏障(Memory barrier)
每個CPU都會有自己的緩存(有的甚至L1,L2,L3),緩存的目的就是為了提高性能,避免每次都要向內存取。但是這樣的弊端也很明顯:不能實時的和內存發生信息交換,分在不同CPU執行的不同線程對同一個變數的緩存值不同。
用volatile關鍵字修飾變數可以解決上述問題,那麼volatile是如何做到這一點的呢?那就是內存屏障,內存屏障是硬體層的概念,不同的硬體平台實現內存屏障的手段並不是一樣,java通過屏蔽這些差異,統一由jvm來生成內存屏障的指令。
硬體層的內存屏障分為兩種:Load Barrier 和 Store Barrier即讀屏障和寫屏障。
內存屏障有兩個作用:
對於Load Barrier來說,在指令前插入Load Barrier,可以讓高速緩存中的數據失效,強制從新從主內存載入數據;
對於Store Barrier來說,在指令後插入Store Barrier,能讓寫入緩存中的最新數據更新寫入主內存,讓其他線程可見。
java的內存屏障通常所謂的四種即LoadLoad,StoreStore,LoadStore,StoreLoad實際上也是上述兩種的組合,完成一系列的屏障和數據同步功能。
LoadLoad屏障:對於這樣的語句Load1; LoadLoad; Load2,在Load2及後續讀取操作要讀取的數據被訪問前,保證Load1要讀取的數據被讀取完畢。
StoreStore屏障:對於這樣的語句Store1; StoreStore; Store2,在Store2及後續寫入操作執行前,保證Store1的寫入操作對其它處理器可見。
LoadStore屏障:對於這樣的語句Load1; LoadStore; Store2,在Store2及後續寫入操作被刷出前,保證Load1要讀取的數據被讀取完畢。
StoreLoad屏障:對於這樣的語句Store1; StoreLoad; Load2,在Load2及後續所有讀取操作執行前,保證Store1的寫入對所有處理器可見。 它的開銷是四種屏障中最大的。在大多數處理器的實現中,這個屏障是個萬能屏障,兼具其它三種內存屏障的功能
volatile的內存屏障策略非常嚴格保守,非常悲觀且毫無安全感的心態:
由於內存屏障的作用,避免了volatile變數和其它指令重排序、線程之間實現了通信,使得volatile表現出了鎖的特性。
對於final域,編譯器和CPU會遵循兩個排序規則:
總之上面規則的意思可以這樣理解,必需保證一個對象的所有final域被寫入完畢後才能引用和讀取。這也是內存屏障的起的作用:
寫final域:在編譯器寫final域完畢,構造體結束之前,會插入一個StoreStore屏障,保證前面的對final寫入對其他線程/CPU可見,並阻止重排序。
讀final域:在上述規則2中,兩步操作不能重排序的機理就是在讀final域前插入了LoadLoad屏障。
X86處理器中,由於CPU不會對寫-寫操作進行重排序,所以StoreStore屏障會被省略;而X86也不會對邏輯上有先後依賴關系的操作進行重排序,所以LoadLoad也會變省略。
G. CPU的緩存是干什麼用的
CPU緩存是改善CPU運行速度的,理論上緩存越大性能越好,但是核心沒有那麼高的話,即使大緩存,也不見得處理器的性能會很高
第一個問題,你開QQ、MSN、旺旺用的都是內存,和CPU緩存沒有關系,CPU緩存是在處理數據的時候才會被應用,一半這類IM軟體的時候,CPU幾乎是不怎麼工作的,緩存多大也沒多大的用
第二個問題,瀏覽網站,和CPU有關系嘛?
同樣用的還是瀏覽器,除非你的網頁上有大量的圖片和視頻文件,這個時候CPU才會介入,CPU要解碼的自然會浪費CPU資源的
第三個問題,對CPU緩存要求大小,我覺得還是處理數據的時候,文件轉碼、解壓縮文件、做渲染的時候才會浪費的,但是前面也提到了,緩存只是CPU的一個參數而已,就像AMD和INTEL兩家的處理器一樣的原理,AMD的緩存都是很低的,相反INTEL越是強大的處理器緩存就越大,不同架構不同核心處理器的緩存不同。CPU緩存一般1M夠多了
H. CPU的緩存是什麼,為什麼作用這么大
請看來自於網路的引用:
CPU緩存簡介
CPU緩存(Cache
Memory)是位於CPU與內存之間的臨時存儲器,它的容量比內存小的多但是交換速率卻比內存要快得多。緩存的出現主要是為了解決CPU運算速率與內存讀寫速率不匹配的矛盾,因為CPU運算速率要比內存讀寫速率快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速率。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速率,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。
順便說一下,我們現在使用的CPU都有幾個級別的緩存,分別是一級緩存(L1
cache),二級緩存(L2
cache),三級緩存(L3
cache)(AMD處理器有些沒有三級緩存)。在CPU的其他參數都相同的情況下,緩存越大其性能也就越高。CPU緩存的讀取速率是非常高的,能達幾十萬MB/s.
I. CPU的緩存有什麼作用
CPU緩存:(Cache Memory)是位於CPU與內存之間的臨時存儲器,它的容量比內存小的多但是交換速度卻比內存要快得多。高速緩存的出現主要是為了解決CPU運算速度與內存讀寫速度不匹配的矛盾,因為CPU運算速度要比內存讀寫速度快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可先緩存中調用,從而加快讀取速度。
J. 內存屏障筆記
https://www.researchgate.net/publication/228824849_Memory_Barriers_a_Hardware_View_for_Software_Hackers
這是閱讀這篇文章的一個筆記。該文從CPU亂序執行和緩存實現的角度來說明內存屏障是怎麼回事。
CPU為了優化性能會同時執行多條指令,有可能後面的指令會先完成。CPU會保證從軟體的角度來看,這個亂序執行和順序執行的可觀察結果是一樣的,但這個僅僅限於單個CPU的情況。多個CPU的時候亂序執行有時不是程序想要的,而CPU沒有相關的信息做判斷,這時要軟體通過內存屏障強制CPU做些特殊處理。
CPU(或者CPU核,下同)有自己的緩存(Cache)。但是也要讓所有CPU看到一個一致的內存數據,各個CPU和內存控制器通過共享的匯流排運行一套協議(MESI協議及變種)來實現這點。
最主要的是當一個CPU要寫數據的時候,發送Invalidate消息給所有的其他CPU,其他的CPU要回應InvalidateAck,當所有的InvalidateAck都收到的時候,就可以寫數據到自己緩存。收到Invalidate的CPU要把這個數據從它自己的緩存中清除出去(如果有的話),這樣當這個CPU要讀取這個數據的時候,會發出Read消息,剛才寫數據的CPU會響應最新的數據。
但是上面的協議有兩個性能上的問題需要進行優化,而這兩個優化導致需要內存屏障。
性能問題1 - 引入Store Buffer
寫數據的CPU要等所有的InvalidateAck收到是需要等很久的,所以它先把數據暫時寫到Store Buffer裡面,然後繼續執行後面的指令。在Store Buffer裡面的數據別人都讀不到,只有它自己能讀。等收到所有InvalidateAck的時候再把Store Buffer裡面的數據更新到自己緩存,此時別的CPU才能通過Read消息讀到。
有了Store Buffer之後下面的程序會表現奇怪:
設想CPU1執行foo,CPU2執行bar。CPU1執行完成b=1的時候(InvalidateAck b都收到),a=1的執行結果還在Store Buffer中(有的InvalidateAck還沒有收到)。而CPU2此時沒有收到Invalidate a(或者收到Invalidate a,但還沒有從緩存清除數據a),那麼第10行的assert會fail。CPU2先觀察到b==1,退出循環,但是此時第10行讀取的a還是初始值0。
解決方法是在a=1和b=1之間插入寫內存屏障smp_wmb,其作用就是等待內存屏障之前Store Buffer清空,就是說所有的InvalidateAck a要收到,然後把a的最新值寫到緩存。而CPU2執行assert的時候必然已經發過InvalidateAck,再讀取a時需要時發送Read請求,CPU1可以響應a的最新值1。
性能問題2 - 引入Invalidate Queue
CPU在收到Invalidate後,要把數據從緩存中清除出去這個操作很慢,從而發送InvalidateAck延遲,進而導致寫操作變慢。解決方法是收到Invalidate之後立刻回應InvalidateAck,但是把Invalidate請求放在Invalidate Queue中慢慢處理。這時候上面的程序還有問題(盡管加了寫內存屏障),盡管在執行第10行的時候,CPU2收到了Invalidate a,但是還放在隊列中沒有執行,讀到的還是之前緩存的初始值0。解決方法是在第9行和第10行之間插入讀內存屏障smp_rmb,其作用是執行所有Invalidate Queue中的請求,從而對於smp_rmb之後的讀取時總是要發出Read請求,從而得到最新的數據。程序中執行第10行的時候,數據a已經從緩存清除出去了,再次發出Read時讀取到最新值1。