當前位置:首頁 » 文件管理 » cpu緩存結構

cpu緩存結構

發布時間: 2023-01-15 19:53:23

Ⅰ 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 具體的你到網路上有!!

Ⅱ cpu和GPU有什麼區別。

CPU和GPU主要由以下5個方面的區別:

一、概念

1、CPU(Central Processing Unit-中央處理器),是一塊超大規模的集成電路,是一台計算機的運算核心(Core)和控制核心( Control Unit)。它的功能主要是解釋計算機指令以及處理計算機軟體中的數據。

二、緩存

1、CPU有大量的緩存結構,目前主流的CPU晶元上都有四級緩存,這些緩存結構消耗了大量的晶體管,在運行的時候需要大量的電力。

2、GPU的緩存就很簡單,目前主流的GPU晶元最多有兩層緩存,而且GPU可以利用晶體管上的空間和能耗做成ALU單元,因此GPU比CPU的效率要高一些。

三、響應方式

1、CPU要求的是實時響應,對單任務的速度要求很高,所以就要用很多層緩存的辦法來保證單任務的速度。

2、GPU是把所有的任務都排好,然後再批處理,對緩存的要求相對很低。

四、浮點運算方式

1、CPU除了負責浮點整形運算外,還有很多其他的指令集的負載,比如像多媒體解碼,硬體解碼等,因此CPU是多才多藝的。CPU注重的是單線程的性能,要保證指令流不中斷,需要消耗更多的晶體管和能耗用在控制部分,於是CPU分配在浮點計算的功耗就會變少。

2、GPU基本上只做浮點運算的,設計結構簡單,也就可以做的更快。GPU注重的是吞吐量,單指令能驅動更多的計算,相比較GPU消耗在控制部分的能耗就比較少,因此可以把電省下來的資源給浮點計算使用。

五、應用方向

1、CPU所擅長的像操作系統這一類應用,需要快速響應實時信息,需要針對延遲優化,所以晶體管數量和能耗都需要用在分支預測、亂序執行、低延遲緩存等控制部分。

2、GPU適合對於具有極高的可預測性和大量相似的運算以及高延遲、高吞吐的架構運算。

Ⅲ 電腦CPU所謂的,一級二級三級緩存分別在什麼位置

CPU中緩存是為了加快CPU讀取數據的速度,也是為了給內存一個緩沖期。因為CPU運算速度太快了,光靠內存讀寫完全跟不上,而CPU緩存的數據交換比內存快多了,大部分時候CPU可以直接從緩存讀取數據,找不到的話再從內存讀取,這樣可以節省CPU讀取內存數據時浪費的時間。

CPU緩存分為三類,一級緩存(L1)、二級緩存(L2)和三級緩存(L3)。CPU在實際數據讀取中重要的卻是一級緩存,因為一級緩存速度最快,二級緩存其次,三級緩存最慢,只是三級緩存的容量最大。

(3)cpu緩存結構擴展閱讀:

一級緩存雖然速度最快,但容量最小,單位都是KB,不同CPU之間一級緩存沒有差距,所以現在不怎麼提了,二級緩存容量也不大,基本都是個位數MB,除了一些伺服器CPU會有10幾MB之外,現在CPU也不怎麼提二級緩存。CPU讀取緩存時會先從一級緩存開始,然是二級緩存,而讀取二級緩存有時候會出現數據未命中的情況,這時候就需要從三級緩存讀取。

但是要注意的是三級緩存越大並不一定說這個CPU性能就越強,因為三級緩存的容量還依靠CPU架構和工藝等方面的影響,如果是與架構工藝搭配升級的三級緩存,容量越大才會性能越高。

Ⅳ CPU多級緩存架構

1、基本概念

1.1、匯流排

    前端匯流排(FSB)就是負責將CPU連接到內存的一座橋,前端匯流排頻率則直接影響CPU與內存數據交換速度,如果FSB頻率越高,說明這座橋越寬,可以同時通過的車輛越多,這樣CPU處理的速度就更快。目前PC機上CPU前端匯流排頻率有533MHz、800MHz、1066MHz、1333MHz、1600MHz等幾種,前端匯流排頻率越高,CPU與內存之間的數據傳輸量越大。
    前端匯流排——Front Side Bus(FSB),是將CPU連接到北橋晶元的匯流排。選購主板和CPU時,要注意兩者搭配問題,一般來說,前端匯流排是由CPU決定的,如果主板不支持CPU所需要的前端匯流排,系統就無法工作。

1.2、頻率與降頻

    只支持1333內存頻率的cpu和主板配1600內存條就會降頻。核心數跟ddr2和ddr3沒關系,核心數是cpu本身的性質,cpu是四核的就是四核的,是雙核的就是雙核的。如果cpu只支持1333,而主板支持1600,那也會降頻;cpu支持1600而主板只支持1333那不僅內存會降頻,而且發揮不出cpu全部性能。
    另外如果是較新的主板cpu,已經採用新的qpi匯流排,而不是以前的fsb匯流排。以前的fsb匯流排一般是匯流排為多少就支持多高的內存頻率。而qpi匯流排的cpu集成了內存控制器,5.0gt/s的cpu可能只支持1333內存頻率,但是匯流排帶寬相當於1333內存的內存帶寬的兩倍,這時候,組成1333雙通道,內存速度就會翻倍,相當於2666的內存頻率。

1.3、cache line

    Cache Line可以簡單的理解為CPU Cache中的最小緩存單位。目前主流的CPU Cache的Cache Line大小都是64Bytes。假設我們有一個512位元組的一級緩存,那麼按照64B的緩存單位大小來算,這個一級緩存所能存放的緩存個數就是512/64 = 8個。

2、CPU多級緩存架構



級別越小的緩存,越接近CPU, 意味著速度越快且容量越少。

3、多核CPU多級緩存一致性協議MESI

    為了解決這個問題,晶元設計者制定了一個規則。當一個 CPU 修改高速緩存行中的位元組時,計算機中的其它 CPU 會被通知,它們的高速緩存將視為無效。於是,在上面的情況下, CPU2 發現自己的高速緩存中數據已無效, CPU1 將立即把自己的數據寫回 RAM ,然後 CPU2 重新讀取該數據。 可以看出,高速緩存行在多處理器上會導致一些不利。

    多核CPU的情況下有多個一級緩存,如何保證緩存內部數據的一致,不讓系統數據混亂。這里就引出了一個一致性的協議MESI。

MESI 是指4中狀態的首字母。每個Cache line有4個狀態,可用2個bit表示,它們分別是:

注意: 對於M和E狀態而言總是精確的,他們在和該緩存行的真正狀態是一致的,而S狀態可能是非一致的。如果一個緩存將處於S狀態的緩存行作廢了,而另一個緩存實際上可能已經獨享了該緩存行,但是該緩存卻不會將該緩存行升遷為E狀態,這是因為其它緩存不會廣播他們作廢掉該緩存行的通知,同樣由於緩存並沒有保存該緩存行的的數量,因此(即使有這種通知)也沒有辦法確定自己是否已經獨享了該緩存行。

    從上面的意義看來E狀態是一種投機性的優化:如果一個CPU想修改一個處於S狀態的緩存行,匯流排事務需要將所有該緩存行的變成invalid狀態,而修改E狀態的緩存不需要使用匯流排事務。

3.2、MESI狀態轉換


1.觸發事件

觸發事件描述本地讀取(Local read)本地cache讀取本地cache數據本地寫入(Local write)本地cache寫入本地cache數據遠端讀取(Remote read)其他cache讀取本地cache數據遠端寫入(Remote write)其他cache寫入本地cache數據

2.cache分類:
前提:所有的cache共同緩存了主內存中的某一條數據。

本地cache:指當前cpu的cache。
觸發cache:觸發讀寫事件的cache。
其他cache:指既除了以上兩種之外的cache。
注意:本地的事件觸發 本地cache和觸發cache為相同。

下圖示意了,當一個cache line的調整的狀態的時候,另外一個cache line 需要調整的狀態。

 


3.3、多核緩存協同操作

假設有三個CPU A、B、C,對應三個緩存分別是cache a、b、 c。在主內存中定義了x的引用值為0。 

單核讀取

那麼執行流程是:
CPU A發出了一條指令,從主內存中讀取x。
從主內存通過bus讀取到緩存中(遠端讀取Remote read),這是該Cache line修改為E狀態(獨享). 

雙核讀取

那麼執行流程是:
CPU A發出了一條指令,從主內存中讀取x。
CPU A從主內存通過bus讀取到 cache a中並將該cache line 設置為E狀態。
CPU B發出了一條指令,從主內存中讀取x。
CPU B試圖從主內存中讀取x時,CPU A檢測到了地址沖突。這時CPU A對相關數據做出響應。此時x 存儲於cache a和cache b中,x在chche a和cache b中都被設置為S狀態(共享)。

修改數據

那麼執行流程是:
CPU A 計算完成後發指令需要修改x.
CPU A 將x設置為M狀態(修改)並通知緩存了x的CPU B, CPU B將本地cache b中的x設置為I狀態(無效)
CPU A 對x進行賦值。

同步數據

那麼執行流程是:

CPU B 發出了要讀取x的指令。
CPU B 通知CPU A,CPU A將修改後的數據同步到主內存時cache a 修改為E(獨享)
CPU A同步CPU B的x,將cache a和同步後cache b中的x設置為S狀態(共享)。

MESI優化和他們引入的問題

緩存的一致性消息傳遞是要時間的,這就使其切換時會產生延遲。當一個緩存被切換狀態時其他緩存收到消息完成各自的切換並且發出回應消息這么一長串的時間中CPU都會等待所有緩存響應完成。可能出現的阻塞都會導致各種各樣的性能問題和穩定性問題。

CPU切換狀態阻塞解決-存儲緩存(Store Bufferes)

比如你需要修改本地緩存中的一條信息,那麼你必須將I(無效)狀態通知到其他擁有該緩存數據的CPU緩存中,並且等待確認。等待確認的過程會阻塞處理器,這會降低處理器的性能。應為這個等待遠遠比一個指令的執行時間長的多。

Store Bufferes

為了避免這種CPU運算能力的浪費,Store Bufferes被引入使用。處理器把它想要寫入到主存的值寫到緩存,然後繼續去處理其他事情。當所有失效確認(Invalidate Acknowledge)都接收到時,數據才會最終被提交。 這么做有兩個風險

Store Bufferes的風險 第一、就是處理器會嘗試從存儲緩存(Store buffer)中讀取值,但它還沒有進行提交。這個的解決方案稱為Store Forwarding,它使得載入的時候,如果存儲緩存中存在,則進行返回。 第二、保存什麼時候會完成,這個並沒有任何保證。

試想一下開始執行時,CPU A保存著finished在E(獨享)狀態,而value並沒有保存在它的緩存中。(例如,Invalid)。在這種情況下,value會比finished更遲地拋棄存儲緩存。完全有可能CPU B讀取finished的值為true,而value的值不等於10。

即isFinsh的賦值在value賦值之前。

這種在可識別的行為中發生的變化稱為重排序(reordings)。注意,這不意味著你的指令的位置被惡意(或者好意)地更改。

它只是意味著其他的CPU會讀到跟程序中寫入的順序不一樣的結果。

3.4、硬體內存模型

執行失效也不是一個簡單的操作,它需要處理器去處理。另外,存儲緩存(Store Buffers)並不是無窮大的,所以處理器有時需要等待失效確認的返回。這兩個操作都會使得性能大幅降低。為了應付這種情況,引入了失效隊列。它們的約定如下:

原文連接


熱點內容
java多線程框架 發布:2025-09-08 11:53:46 瀏覽:104
java的excel導入 發布:2025-09-08 11:43:37 瀏覽:159
飛秋源碼c 發布:2025-09-08 11:37:06 瀏覽:702
浦西出國傢具存儲 發布:2025-09-08 11:26:38 瀏覽:906
intelli怎麼配置pom 發布:2025-09-08 11:25:49 瀏覽:231
電視wifi熱點密碼是多少 發布:2025-09-08 11:23:04 瀏覽:540
小米賬號訪問受限 發布:2025-09-08 11:17:20 瀏覽:141
生存戰爭的編譯代碼 發布:2025-09-08 11:15:56 瀏覽:40
手機上怎麼找qq密碼怎麼辦 發布:2025-09-08 10:47:34 瀏覽:843
android調用js代碼 發布:2025-09-08 10:46:48 瀏覽:937