頻率之外誰重要?計算機存儲系統(tǒng)解析_第1頁
頻率之外誰重要?計算機存儲系統(tǒng)解析_第2頁
頻率之外誰重要?計算機存儲系統(tǒng)解析_第3頁
頻率之外誰重要?計算機存儲系統(tǒng)解析_第4頁
頻率之外誰重要?計算機存儲系統(tǒng)解析_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、頻率之外誰重要?計算機存儲系統(tǒng)解析不管是臺式機還是筆記本的CPU,處理器的二/三緩存都是極其重要的一個數(shù)量,一方面是被廠家宣傳的重點,另一方面也確實影響著電腦的速度。同時在內(nèi)存不足的電腦里,增加內(nèi)存對系統(tǒng)的性能提升往往有著立桿見影的效果。于是玩家不禁要問,為什么CPU的緩存和內(nèi)存對系統(tǒng)的性能影響這么大呢?這就得從計算機的存儲系統(tǒng)的工作方式和原理談起。存儲器是計算機中用于存放指令和數(shù)據(jù)的部件。計算機在處理數(shù)據(jù)時,中央處理器從存儲器讀出指令,再按照指令中的地址從存儲器中讀出數(shù)據(jù),按照指令要求對數(shù)據(jù)進行操作。中央處理器的高速運算要求存儲器要在很短的時間內(nèi)完成指令和數(shù)據(jù)的存取操作。計算機層次結(jié)構(gòu)存儲器

2、隨著對計算機性能的要求越來越高,現(xiàn)代計算機對存儲系統(tǒng)有三個基本要求,即:存取時間短(速度快)、存儲容量大和價格成本低。而容量越大存取的時間就會長,速度越快,價格就越高。為了解決這個問題,便采用了高速緩沖存儲器,主存儲器和輔助存儲器3個部分組成。計算機各種存儲及其特點其中寄存器(Registe)是用于CPU內(nèi)部各單元之間的周轉(zhuǎn),是CPU內(nèi)部用來創(chuàng)建和儲存CPU運算結(jié)果和其它運算結(jié)果的地方,擁有非常高的讀寫速度,里面的數(shù)據(jù)是下一步必然會用到的,所以寄存器不屬于層次結(jié)構(gòu)存儲器。CPU內(nèi)部的寄存器有很多種類型。CPU對存儲器中的數(shù)據(jù)進行處理時,往往先把數(shù)據(jù)取到內(nèi)部寄存器中,而后再作處理。外部寄存器是計

3、算機中其它一些部件上用于暫存數(shù)據(jù)的寄存器,它與CPU之間通過“端口”交換數(shù)據(jù),外部寄存器具有寄存器和內(nèi)存儲器雙重特點。而通用寄存器的數(shù)據(jù)寬度決定了處理器一次可以運行的數(shù)據(jù)量。64位技術的寄存器變化X86-64技術就是新增的幾組CPU寄存器將提供更快的執(zhí)行效率。標準的32位的x86架構(gòu)包括8個通用寄存器,AMD在64 位X86架構(gòu)中又增加了8組,將寄存器的數(shù)目提高到了16組。X86-64寄存器默認位64-bit。還增加了8組128-bit XMM寄存器,將能給單指令多數(shù)據(jù)流技術運算提供更多的空間,這些128位的寄存器將提供在矢量和標量計算模式下進行128位雙精度處理,為3D建模、矢量分析和虛擬現(xiàn)

4、實的實現(xiàn)提供了硬件基礎。通過提供了更多的寄存器,按照X86-64標準生產(chǎn)的CPU可以更有效的處理數(shù)據(jù),可以在一個時鐘周期中傳輸更多的信息。高速緩沖存儲器就是我們平常所說的CPU緩存,通常包括一級、二級緩存,過去的高端產(chǎn)品還會有三級緩存,現(xiàn)在中低端產(chǎn)品也有L3了,比如AMD羿龍II雙核系列,Intel的i3系列。關于高速緩存,后面會有更詳細的介紹。主存儲器就是我們常說的內(nèi)存條。高速緩沖存儲器和主存儲器(內(nèi)存條)由于可以直接被CPU讀取,故稱之為內(nèi)存儲器。輔助存儲器主要是指硬盤,而海量存儲器則是指過去主要用的磁帶機一類的設備,現(xiàn)在隨便硬盤技術的提升,輔助存儲器也可以達到“海量”的標準。而且現(xiàn)在的輔

5、助存儲器一般都帶有自身的緩存。介紹完存儲結(jié)構(gòu)后,可能會產(chǎn)生一個疑問,那就是為什么層次結(jié)構(gòu)存儲器會加速計算機的速度,或者說層次結(jié)構(gòu)的依據(jù)是什么?下面就得引入必備的“程序的局部性原理”知識了。程序的局部性原理:是指程序在執(zhí)行時呈現(xiàn)出局部性規(guī)律,即在一段時間內(nèi),整個程序的執(zhí)行僅限于程序中的某一部分。相應地,執(zhí)行所訪問的存儲空間也局限于某個存儲區(qū)域。局部性原理又表現(xiàn)為:時間局部性(temporal locality)和空間局部性(spatial locality)。 程序的調(diào)用返回行為時間局部性是指如果程序中的某條指令一旦執(zhí)行,則不久之后該指令可能再次被執(zhí)行;如果某數(shù)據(jù)被訪問,則不久之后該數(shù)

6、據(jù)可能再次被訪問。空間局部性空間局部性是指一旦程序訪問了某個存儲單元,則不久之后。其附近的存儲單元也將被訪問。  空間局部性和時間局部性是有區(qū)別的??臻g局部性指執(zhí)行涉及很多簇聚的存儲器單元的趨勢,這反映了處理器順序訪問指令的傾向,同時,也反映了程序順序訪問數(shù)據(jù)單元的傾向,如處理數(shù)據(jù)表。時間局部性指處理器訪問最近使用過的存儲器單元的趨勢,例如,當執(zhí)行一個循環(huán)時,處理器重復執(zhí)行相同的指令集合。   傳統(tǒng)上,時間局部性是通過將最近使用的指令和數(shù)據(jù)值保存到高速緩存中并使用高速緩存的層次結(jié)構(gòu)實現(xiàn)的。空間局部性通常是使用較大的高速緩存并將預取機制集成到高速緩存控制邏輯中實現(xiàn)的

7、。舉例:當硬盤受到CPU指令控制開始讀取數(shù)據(jù)時,硬盤上的控制芯會控制磁頭把正在讀取的簇的下一個或者幾個簇中的數(shù)據(jù)讀到硬盤的緩存中(由于硬盤上數(shù)據(jù)存儲時是比較連續(xù)的,所以讀取命中率較高),當需要讀取下一個或者幾個簇中的數(shù)據(jù)的時候,硬盤則不需要再次讀取數(shù)據(jù),直接把緩存中的數(shù)據(jù)傳輸?shù)絻?nèi)存中就可以了,由于速度遠遠高于磁頭讀寫的速度,所以能夠達到明顯改善能的目的,即根據(jù)空間局部性原理,預測下一步所需要的數(shù)據(jù),并將其提前寫入內(nèi)存。為了保證CPU訪問時有較高的命中率,內(nèi)存儲器(包括CPU緩存和內(nèi)存)中的內(nèi)容應該按一定的算法替換。較常用的算法是“最近最少使用算法”(LRU算法),它是將最近一段時間內(nèi)最少被訪問

8、過的行淘汰出局。因此需要為每行設置一個計數(shù)器,LRU算法是把命中行的計數(shù)器清零,其他各行計數(shù)器加1。當需要替換時淘汰行計數(shù)器計數(shù)值最大的數(shù)據(jù)行出局。這是一種高效、科學的算法,其計數(shù)器清零過程可以把一些頻繁調(diào)用后再不需要的數(shù)據(jù)淘汰出,提高利用率。這樣內(nèi)存儲器中的數(shù)據(jù)在更新的時候則會根據(jù)時間局布性原理把讀取頻率高的及其周圍的相關數(shù)據(jù)留下,把低導入虛擬內(nèi)存或者淘汰掉(關于虛擬內(nèi)存后面會有描述)。在層次存儲結(jié)構(gòu)中的每一級都采用程序局部分布原理的原理來預讀和更替數(shù)據(jù)。由于預讀的命中率很高,故續(xù)約了時間,這也是采用層次存儲結(jié)構(gòu)的基礎。現(xiàn)在高速緩存的概念已被擴充,不僅在CPU和主內(nèi)存之間有高速緩存而且在內(nèi)存

9、和硬盤之間也有Cache(磁盤高速緩存),乃至在硬盤與網(wǎng)絡之間也有某種意義上的 Cache(Internet 臨時文件夾)凡是位于速度相差較大的兩種硬件之間的,用于協(xié)調(diào)兩者數(shù)據(jù)傳輸速度差異的結(jié)構(gòu),均可稱之為Cache。Cache與上下流之間的數(shù)據(jù)交換都是程序局部性原理。這次我們主要討論CPU的高速緩存,前面已經(jīng)介紹了CPU高速緩存是內(nèi)存儲器的一種,下面將介紹其產(chǎn)生的原因及演變。早期計算機的CPU與主存的工作速度較為接近,主內(nèi)存的速度并不影響整機的運算速度。隨著IC設計和半導體制造工藝的發(fā)展,CPU的運行速度遠高于主內(nèi)存的速度。這要求系統(tǒng)中主存的存取速度提高,存儲容量增大。而主存儲器一般采用DR

10、AM (動態(tài)隨機存儲器 ,其容量的提高是比較快的,但是讀取速度的提高卻很慢,因此在速度上與CPU主頻的提高產(chǎn)生了不相配的情況。為解決高速CPU 與低速內(nèi)存之間的速度差異,最經(jīng)濟、有效的方法是在兩者之間插入容量不大但操作速度很高的存儲器高速緩存(Cache ,起到緩沖作用,解決了兩者速度的平衡和匹配問題,對微處理器整體性能有很大提高。486時代的兩個代表產(chǎn)品486DX和486SX早期的80486相當于把80386和完成浮點運算的數(shù)學協(xié)處理器80387以及8kB的高速緩存集成到一起,這種片內(nèi)高速緩存稱為一級(L1)緩存,80486還支持主板上的二級(L2)緩存。緩存概念由此誕生,并一直延續(xù)到今天成

11、為影響CPU性能的重要因素。四核Nehalem架構(gòu)擁有高達8M的三級高速緩存隨著CPU制造工藝的發(fā)展,二級緩存和三級緩存也能輕易的集成在CPU內(nèi)核中,容量也在逐年提升。至今,在中低端產(chǎn)品中集成三級緩存的CPU也不少見。當然,有人可能要問,為什么不直接把內(nèi)存的速度提高到和緩存一樣快呢?這涉及到兩個方面,為了得到更高的速度,那信號的發(fā)射頻率必須提升,而為了得到更大的容量,就必須減少集成電路中信號傳輸中存在干擾,干擾與傳播速度又正相關,如果頻率提高,干擾就會增強,所以兩者比較難以統(tǒng)一。構(gòu)成緩存的6T SRAM晶體管結(jié)構(gòu)圖另一方面是“經(jīng)濟”原因,高速緩存緩存通常都是靜態(tài)RAM (SRAM,速度是非常的

12、快, 但是靜態(tài)RAM集成度低,存儲相同的數(shù)據(jù),靜態(tài)RAM的體積是動態(tài)RAM的6倍,高同容量的靜態(tài)RAM價格是動態(tài)RAM的四倍。這就限制了靜態(tài)RAM容量的進一步擴大,同時緩存大小也成了CPU級別的一個重要標志。雖然我們知道了高速緩存可以大幅的提高CPU的速度,那么,它們工作的具體原理是什么呢?當CPU處理數(shù)據(jù)時,它會先到Cache中去尋找,如果數(shù)據(jù)因之前的操作已經(jīng)讀取而被暫存其中,就不需要再從內(nèi)存中讀取數(shù)據(jù)由于CPU的運行速度一般比主內(nèi)存的讀取速度快,主存儲器周期(訪問主存儲器所需要的時間)為數(shù)個時鐘周期。因此若要訪問主內(nèi)存的話,就必須等待數(shù)個CPU周期從而造成浪費。Cache 的邏輯結(jié)構(gòu)Cac

13、he由控制和存儲器2部分組成,如上圖所示,其中虛線框內(nèi)為控制部分。Cache的存儲器中存放著主存的部分拷貝,其控制部分有3 個功能:(1 判斷要訪問的數(shù)據(jù)是否在Cache中,若在,為命中;否則,為未命中。(2 命中時,進行Cache 的尋址。(3 未命中時,按替換原則,確定主存中的信息塊要讀入到Cache 中的哪個信息塊空間。CPU在緩存中找到有用的數(shù)據(jù)被稱為命中,當緩存中沒有CPU所需的數(shù)據(jù)時(這時稱為未命中),CPU才訪問內(nèi)存。從理論上講,在一顆擁有一級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數(shù)據(jù)占數(shù)據(jù)總量的80%,剩下的20%從二級緩存中讀取。由于

14、不能準確預測將要執(zhí)行的數(shù)據(jù)并將其預讀到緩存中,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數(shù)據(jù)占總數(shù)據(jù)的16%)。那么還有的數(shù)據(jù)就不得不從內(nèi)存調(diào)用,但這已經(jīng)是一個相當小的比例了。較高端的CPU中,還會帶有三級緩存,它是為讀取二級緩存后未命中的數(shù)據(jù)設計的種緩存,在擁有三級緩存的CPU中,只有約5%的數(shù)據(jù)需要從內(nèi)存中調(diào)用,這進一步提高了CPU的效率。擁有144MB緩存的八路IBM POWER5處理器但這個比例也不是絕對的,因為隨著軟件的發(fā)展,需要越來越多的緩存來預存將要運算的數(shù)據(jù),如果緩存的容量不隨著軟件的發(fā)展而增大,就會出現(xiàn)不夠用的情況。另外在處理器緩存的發(fā)展中,Intel和AMD的

15、處理器一級緩存在邏輯結(jié)構(gòu)設計上在Core之前并不一樣。AMD對一級緩存的定位是“實數(shù)據(jù)讀寫緩存”,基于該架構(gòu)的一級數(shù)據(jù)緩存主要用于存儲CPU最先讀取的數(shù)據(jù);而更多的讀取數(shù)據(jù)則分別存儲在二/三級緩存和系統(tǒng)內(nèi)存當中。即二級/三級緩存中的一部分數(shù)據(jù)都要在一定的規(guī)則下搬到一級緩存中。二級緩存的容量自然對AMD CPU的整體性能影響小些。相對的,AMD則總是試圖把一級緩存做的更大些。Intel在對Core之前一級緩存的理解是“數(shù)據(jù)代碼指令追蹤緩存”,即是說一級緩存中存儲的其實只是二級緩存中數(shù)據(jù)的地址,而不是這些數(shù)據(jù)的復制。由于一級數(shù)據(jù)緩存不再存儲實際數(shù)據(jù),因此“數(shù)據(jù)代碼指令追蹤緩存”設計能夠極大地降CP

16、U對一級數(shù)據(jù)緩存容量的要求,降低處理器的生產(chǎn)難度。但這種設計的弊端在于數(shù)據(jù)讀取效率較“實數(shù)據(jù)讀寫緩存設計”低,而且對二級緩存容量的依賴性非常大。事實上CPU性能對二級緩存容量的“敏感”與否還受到諸如內(nèi)存控制器,流水線長度、頻率、總線架構(gòu)和指令集等等多方面的影響。在多核CPU中還關乎各個物理內(nèi)核之間的數(shù)據(jù)交換問題。從Core開始,Intel開始采用“實數(shù)據(jù)讀寫緩存”,而目前最新的Nehalm架構(gòu)則像AMD一樣,把內(nèi)存控制器集成在CPU內(nèi)部,并更新了總線。這一方面說明了AMD在CPU架構(gòu)設計上的強項,另一方面在Intel采用AMD的這種占優(yōu)勢的存儲架構(gòu)之后,AMD的優(yōu)勢將被進一步削弱。這里還涉及到

17、一個問題:CPU提供給Cache的地址是主存的地址,要訪問Cache,就必須將這個地址變換成Cache 的地址,這種地址變換為地址映射,Cache的地址映射有直接映射、全相聯(lián)映射和組相聯(lián)映射三種,目前的主流CPU都是采用組相聯(lián)。我們常說的虛擬內(nèi)存與前面的層次存儲結(jié)構(gòu)是不一樣。先看虛擬內(nèi)存的定義:虛擬內(nèi)存是計算機系統(tǒng)內(nèi)存管理的一種技術。它使得應用程序認為它擁有連續(xù)的可用的內(nèi)存(一個連續(xù)完整的地址空間),而實際上,它通常是被分隔成多個物理內(nèi)存碎片,還有部分暫時存儲在外部磁盤存儲器上,在需要時進行數(shù)據(jù)交換。虛擬內(nèi)存就是當物理內(nèi)存不足夠的時候,把硬盤的一部分當作內(nèi)存內(nèi)部數(shù)據(jù)的周轉(zhuǎn),而不是當做內(nèi)存來使用

18、。虛擬內(nèi)存原理比如當我們運行某程序時候占用了15M,不管此時內(nèi)存的空閑空間夠不夠15M,系統(tǒng)都會用虛擬內(nèi)存技術在硬盤上指定了一個虛擬空間,如果我們的物理內(nèi)存夠用,則此時這個虛擬空間里面沒有信息而已 。當物理內(nèi)存不足的時候,系統(tǒng)則會將些時內(nèi)存里暫時用不上的程序存放到原先給它指定的虛擬空間中,然后留出地方給新的程序使用,在物理內(nèi)存再次空閑,或者被存入虛擬空間的程序需要再次運行時,便會再將其讀入內(nèi)存。這樣一個循環(huán)交換過程就是虛擬內(nèi)存技術,為什么叫它虛擬呢,因為系統(tǒng)把文件釋放到了硬盤上,而這個硬盤可不是內(nèi)存,只是臨時的保存內(nèi)存信息的地方,這個區(qū)域并不可以被CPU讀取和運算。如果沒有虛擬內(nèi)存技術,我們在物理內(nèi)存不夠用的時候根本就啟動不了新的程序,因為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論