国产在线中文字幕亚洲,一区视频国产精品观看,欧美日韩国产高清片,久久久久久AV无码免费网站,亚洲无码一二三四五区,日韩无码www.,sese444

您好,歡迎來到維庫電子市場網(wǎng) 登錄 | 免費注冊

CPU緩存
閱讀�10007時間�2010-11-14 15:28:51

  CPU緩存其是就是CPU��(nèi)�之間的一個中�(zhuǎn)�。由于目前CPU的頻率(速度)已�(jīng)大大超過�(nèi)�,往往CPU會為了讀取或存儲�(shù)�(jù)白白浪費幾十個時鐘周�。這造成了巨大的資源浪費。于�CPU緩存的設(shè)計思想被提上日�,幾�(jīng)實驗修改后,逐漸形成了我們現(xiàn)在所能夠看到的Cache架構(gòu)�

簡介

  CPU緩存(Cache Memory)是位于CPU與內(nèi)存之間的臨時存儲�,它的容量比�(nèi)存小的多但是交換速度卻比�(nèi)存要快得�。緩存的出現(xiàn)主要是為了解決CPU運算速度與內(nèi)存讀寫速度不匹配的矛盾,因為CPU運算速度要比�(nèi)存讀寫速度快很多,這樣會使CPU花費很長時間等待�(shù)�(jù)到來或把�(shù)�(jù)寫入�(nèi)�。在緩存中的�(shù)�(jù)是內(nèi)存中的一小部�,但這一小部分是短時間內(nèi)CPU即將訪問的,當CPU�(diào)用大量數(shù)�(jù)�,就可避開內(nèi)存直接從緩存中調(diào)�,從而加快讀取速度。由此可�,在CPU中加入緩存是一種高效的解決方案,這樣整個內(nèi)存儲器(緩存+�(nèi)存)就變成了既有緩存的高速度,又有內(nèi)存的大容量的存儲系統(tǒng)�。緩存對CPU的性能影響很大,主要是因為CPU的數(shù)�(jù)交換順序和CPU與緩存間的帶寬引起的�
  在現(xiàn)代CPU�(shè)計中,設(shè)計師們要解決的最主要問題,就是找到一個在CPU和內(nèi)存之間平衡的均點。Cache作為CPU---�(nèi)存的中轉(zhuǎn)站,在其中發(fā)揮了巨大的作�。CPU在請求數(shù)�(jù)或指令時,除了常�(guī)的在�(nèi)存中進行查找�,還會在Cache中進行查找。一旦命�,就可以直接從Cache中讀取,節(jié)約大量時�。正因為如此�CPU緩存在現(xiàn)代CPU中顯得越來越重要�

實現(xiàn)原理

  眾所周知�CPU緩存屬于SRAM(Satic Random Access Memory),它利用晶體管的邏輯開�(guān)狀�(tài)來存取數(shù)�(jù)。也正因為如�,SRAM�(nèi)部的電路�(gòu)造比起常見的DRAM(Dynamic Random Memory)要�(fù)雜得多,�(dǎo)致了成本的巨�。這也是SRAM不能普及的一個重要原��

  CPU緩存在計算機存儲系統(tǒng)中沒有編配固定的地址,這樣程序員在寫程序時就不用考慮指令是運行在�(nèi)存中還是Cache�,Cache對于計算機上層來說是完全透明��

  CPU在讀取數(shù)�(jù)�,會首先向內(nèi)存和Cache都發(fā)送一個查找指令。如果所需要的�(shù)�(jù)在Cache中(命中),則直接從Cache讀取數(shù)�(jù),以節(jié)約時間和資源。CPU對Cache的搜索叫做Tag search,即通過Cache中的CAM(Content Addressed Memory)對希望得到的Tag�(shù)�(jù)進行搜索。CAM是一種存儲芯�,延遲很�,常用于�(wǎng)�(luò)�(shè)備中用作路由選擇�

  CPU進行Tag search的過程是這樣的:在Cache中數(shù)�(jù)或指令是以行為單位存儲的,一行又包含了很多字。如�(xiàn)在主流的�(shè)計是一行包�64Byte。每一行擁有一個Tag。因�,假�(shè)CPU需要一個標為Tag 1的行中的�(shù)�(jù),它會通過CAM對Cache中的行進行查找,一旦找到相同Tag的行,就對其中的�(shù)�(jù)進行讀��

  在現(xiàn)代計算機中,雖然Cache的容量一直在增漲,但�(xiàn)在桌面處理器中Cache的也不過4MB,設(shè)計師們是如何保證在這小小的Cache中保存的�(shù)�(jù)或指令就一定是CPU需要的�?這就要利用到CPU運行時的兩個基本局限性:時間局限性和空間局限��

  所謂時間局限性,是指CPU在某一時刻使用到的�(shù)�(jù)或指�,在下一時刻也會被重�(fù)利用。比�3D游戲�,同一場景會在不同時間被渲染多次,如果在次渲染中Cache存儲了相�(guān)指令、數(shù)�(jù),那么在下一次需要重�(fù)渲染�,就能夠直接從Cache中讀取相�(guān)�(nèi)��

  而空間局限性,指的是CPU在讀取某一地址的數(shù)�(jù)�,也有可能會用到該地址附近的數(shù)�(jù)。也就是�,CPU需要的�(shù)�(jù)在很多時候是連續(xù)的。例如在聽歌或看電影�,數(shù)�(jù)流總是連續(xù)的(正常播放狀�(tài)下)。這樣的應(yīng)用對于CPU來說是很有利的,�(shù)�(jù)�(yù)讀取單元也能夠�(fā)揮作��

  CPU緩存正是利用了上述兩個局限�,得已實�(xiàn)并工�。設(shè)計師們能夠充分利用這兩個局限,在容量較小的Cache中存入CPU在將來某時刻需要的�(nèi)�。需要指出的�,很多程序在�(zhí)行指令或�(shù)�(jù)�,所呈現(xiàn)出來的局限性是不同的。有可能�(zhí)行指令的時候呈�(xiàn)出時間局限�,而數(shù)�(jù)呈現(xiàn)出空間局限�,因此設(shè)計師們把L1 Cache分成了Instruction Cache(指令緩存)和Data Cache(數(shù)�(jù)緩存��

運行機制

  前面已經(jīng)說過,Cache的數(shù)�(jù)存儲是以行(Line)為單位�,每一行又包含64Byte。行是存儲在“框架”(Block frame)這種�(shù)�(jù)容器中的,而框架則直接與內(nèi)存相對應(yīng)。很明顯,Cache中可能包含數(shù)個框架。那么這些Cache框架是怎么與內(nèi)存相對應(yīng)相聯(lián)系的�?有三種辦法�

  種方法叫完全相聯(lián)�。即�(nèi)存中的數(shù)�(jù)可以存儲在任何Cache框架�,同一�(shù)�(jù)也可以存儲在不同的框架中。這樣�(shù)�(jù)的存儲相當靈�,CPU在查找時也很方便:只需在框架中對比找出需要的Tag行,即實�(xiàn)命中,顯著的提升了命中率。然而這樣做的缺陷也很明顯:對于容量較大的Cache來說,CPU需要在成百的框架中查找需要的Tag�,延遲大大增�。因此這種�(shè)計方式只適用于容量較小的Cache�

  由于完全相聯(lián)法的這種局限性,�(shè)計師們很快提出了另一種旨在降低延遲的組織方式:直接映象法。和完全相聯(lián)不同,在直接映象中內(nèi)存會將數(shù)�(jù)存入的Cache框架地址“記住�,以后再次存儲時就只能使用該框架。這樣做的好處是使CPU只需要進行一次Tag search,在以后的讀取操作中就可以直接找到所需Tag行所在的框架,從而達到降低延遲的目的�

  而至于內(nèi)存會將數(shù)�(jù)存入Cache的哪個框架中,這有個算法——塊地址與整個框架數(shù)的同�。我們舉個簡單的例子來看,有�1K的緩存,塊大小為64字節(jié),則總共�16個緩存塊,也就是�16個框�,那在內(nèi)存中首地址�12480的內(nèi)存塊�(yīng)該保存在緩存的哪個框架中��12480/64=195�195mod16=3,則它�(yīng)該放入第4個框架中。這樣一�,內(nèi)存中的數(shù)�(jù)能很快的讀取到緩存中的某個塊�,CPU也能很快的在這個塊中找到所要的�(shù)�(jù),這樣就省下了對比各個框架的時間,自然延遲就小了,但�,如果第4個框架中裝入了內(nèi)存塊195的數(shù)�(jù),而其它同余依然是3�35�51�67等這些塊就不能裝入�,這樣,當CPU需�35�51�67這些塊的時候,就會�(fā)生沖突(collision�,導(dǎo)致出�(xiàn)Cache miss的情�,大大的降低了命中率�

級別分類

  按照�(shù)�(jù)讀取順序和與CPU�(jié)合的緊密程度,CPU緩存可以分為一級緩�,二級緩�,部分高端CPU還具有三級緩�,每一級緩存中所儲存的全部數(shù)�(jù)都是下一級緩存的一部分,這三種緩存的技�(shù)難度和制造成本是相對遞減的,所以其容量也是相對遞增�。當CPU要讀取一個數(shù)�(jù)�,首先從一級緩存中查找,如果沒有找到再從二級緩存中查找,如果還是沒有就從三級緩存或�(nèi)存中查找。一般來說,每級緩存的命中率大概都在80[%]左右,也就是說全部數(shù)�(jù)量的80[%]都可以在一級緩存中找到,只剩下20[%]的總�(shù)�(jù)量才需要從二級緩存、三級緩存或�(nèi)存中讀�,由此可見一級緩存是整個CPU緩存架構(gòu)中最為重要的部分�

 ?。保┮患壘彺?/FONT>

  一級緩存(Level 1 Cache)簡稱L1 Cache,位于CPU�(nèi)核的旁邊,是與CPU�(jié)合最為緊密的CPU緩存,也是歷史上最早出�(xiàn)的CPU緩存。由于一級緩存的技�(shù)難度和制造成本,提高容量所帶來的技�(shù)難度增加和成本增加非常大,所帶來的性能提升卻不明顯,性價比很�,而且�(xiàn)有的一級緩存的命中率已�(jīng)很高,所以一級緩存是所有緩存中容量最小的,比二級緩存要小得多�

  2)二級緩存

  二級緩存是CPU的第二層高速緩�,分�(nèi)部和外部兩種芯片。內(nèi)部的芯片二級緩存運行速度與主頻相�,而外部的二級緩存則只有主頻的一�。L2高速緩存容量也會影響CPU的性能,原則是越大越好,現(xiàn)在家庭用CPU容量的是4MB,而服�(wù)器和工作站上用CPU的L2高速緩存更高達2MB�4MB,有的高�8MB或�19MB�

  3)三級緩存

  三級緩存分為兩種,早期的是外�,現(xiàn)在的都是�(nèi)置的。而它的實際作用即是,L3緩存的應(yīng)用可以進一步降低內(nèi)存延�,同時提升大�(shù)�(jù)量計算時處理器的性能。降低內(nèi)存延遲和提升大數(shù)�(jù)量計算能力對游戲都很有幫�。而在服務(wù)器領(lǐng)域增加L3緩存在性能方面仍然有顯著的提升。比方具有較大L3緩存的配置利用物理內(nèi)存會更有效,故它比較慢的磁盤I/O子系�(tǒng)可以處理更多的數(shù)�(jù)請求。具有較大L3緩存的處理器提供更有效的文件系統(tǒng)緩存行為及較短消息和處理器隊列長度�

三種級別緩存的比�

  一級緩存和二級緩存用于存儲�(shù)�(jù)的緩存部分通常被稱為RAM,掉電以后其中的信息就會消失�

  RAM又分兩種,其中一種是靜態(tài)RAM(SRAM);另外一種是動態(tài)RAM(DRAM)。前者的存儲速度要比后者快得多,我們現(xiàn)在使用的�(nèi)存一般都是動�(tài)RAM。CPU的L1級緩存通常都是靜態(tài)RAM,速度非常的快,但是靜�(tài)RAM集成度低(存儲相同的數(shù)�(jù),靜�(tài)RAM的體積是動態(tài)RAM�6�),而且價格也相對較為昂�(同容量的靜態(tài)RAM是動�(tài)RAM的四�)。擴大靜�(tài)RAM作為緩存是一個不太合算的做法,但是為了提高系�(tǒng)的性能和速度又必須要擴大緩存,這就有了一個折中的方法:在不擴大原來的靜態(tài)RAM緩存容量的情況下,僅僅增加一些高速動�(tài)RAM做為L2級緩�。高速動�(tài)RAM速度要比常規(guī)動態(tài)RAM快,但比原來的靜�(tài)RAM緩存�,而且成本也較為適�。一級緩存和二級緩存中的�(nèi)容都是內(nèi)存中訪問頻率高的�(shù)�(jù)的復(fù)制品(映射),它們的存在都是為了減少高速CPU對慢速內(nèi)存的訪問�

  二級緩存是CPU性能表現(xiàn)的關(guān)鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提�。而同一核心的CPU高低端之分往往也是在二級緩存上存在差異,由此可見二級緩存對CPU的重要�。CPU在緩存中找到有用的數(shù)�(jù)被稱為命中,當緩存中沒有CPU所需的數(shù)�(jù)�(這時稱為未命�),CPU才訪問內(nèi)��

  從理論上�,在一顆擁有二級緩存的CPU�,讀取一級緩存的命中率為80[%]。也就是說CPU一級緩存中找到的有用數(shù)�(jù)占數(shù)�(jù)總量�80[%],剩下的20[%]從二級緩存中讀取。由于不能準確預(yù)測將要執(zhí)行的�(shù)�(jù),讀取二級緩存的命中率也�80[%]左右(從二級緩存讀到有用的�(shù)�(jù)占總�(shù)�(jù)�16[%])。那么還有的�(shù)�(jù)就不得不從內(nèi)存調(diào)�,但這已�(jīng)是一個相當小的比例了�

  三級緩存是為讀取二級緩存后未命中的�(shù)�(jù)�(shè)計的—種緩存,在擁有三級緩存的CPU中,只有�5[%]的數(shù)�(jù)需要從�(nèi)存中�(diào)�,這進一步提高了CPU的效率�