標籤:style 使用 資料 sp 問題 on c 工作 時間
前言
雖然CPU主頻的提升會帶動系統效能的改善,但系統效能的提高不僅僅取決於CPU,還與系統架構、指令結構、資訊在各個組件之間的傳送速度及儲存組件的存取速度等因素有關,特別是與CPU/記憶體之間的存取速度有關。
若CPU工作速度較高,但記憶體存取速度相對較低,則造成CPU等待,降低處理速度,浪費CPU的能力。
如500MHz的PⅢ,一次指令執行時間為2ns,與其相配的記憶體(SDRAM)存取時間為10ns,比前者慢5倍,CPU和PC的效能怎麼發揮出來?
如何減少CPU與記憶體之間的速度差異?有4種辦法:
一種是在基本匯流排周期中插入等待,但這樣會浪費CPU的能力。
另一種方法是採用存取時間較快的SRAM作儲存空間,這樣雖然解決了CPU與儲存空間間速度不匹配的問題,但卻大幅提升了系統成本。
第3種方法是在慢速的DRAM和快速CPU之間插入一速度較快、容量較小的SRAM,起到緩衝作用;使CPU既可以以較快速度存取SRAM中的資料,又不使系統成本上升過高,這就是Cache法。
還有一種方法,採用新型儲存空間。
目前,一般採用第3種方法。它是PC系統在不大增加成本的前提下,使效能提升的一個非常有效技術。
本文簡介了Cache的概念、原理、結構設計以及在PC及CPU中的實現。
Cache的工作原理
Cache的工作原理是基於程式訪問的局部性。
對大量典型程式運行情況的分析結果表明,在一個較短的時間間隔內,由程式產生的地址往往集中在儲存空間邏輯地址空間的很小範圍內。指令地址的分布本來就是連續的,再加上迴圈程式段和子程式段要重複執行多次。因此,對這些地址的訪問就自然地具有時間上集中分布的傾向。
資料分布的這種集中傾向不如指令明顯,但對數組的儲存和訪問以及工作單元的選擇都可以使儲存空間地址相對集中。這種對局部範圍的儲存空間地址頻繁訪問,而對此範圍以外的地址則訪問甚少的現象,就稱為程式訪問的局部性。
根據程式的局部性原理,可以在主存和CPU通用寄存器之間設定一個高速的容量相對較小的儲存空間,把正在執行的指令地址附近的一部分指令或資料從主存調入這個儲存空間,供CPU在一段時間內使用。這對提高程式的運行速度有很大的作用。這個介於主存和CPU之間的高速小容量儲存空間稱作高速緩衝儲存空間(Cache)。
系統正是依據此原理,不斷地將與當前指令集相關聯的一個不太大的後繼指令集從記憶體讀到Cache,然後再與CPU高速傳送,從而達到速度匹配。
CPU對儲存空間進行資料請求時,通常先訪問Cache。由於局部性原理不能保證所請求的資料百分之百地在Cache中,這裡便存在一個命中率。即CPU在任一時刻從Cache中可靠擷取資料的幾率。
命中率越高,正確擷取資料的可靠性就越大。一般來說,Cache的儲存容量比主存的容量小得多,但不能太小,太小會使命中率太低;也沒有必要過大,過大不僅會增加成本,而且當容量超過一定值後,命中率隨容量的增加將不會有明顯地增長。
只要Cache的空間與主存空間在一定範圍內保持適當比例的映射關係,Cache的命中率還是相當高的。
一般規定Cache與記憶體的空間比為4:1000,即128kB Cache可映射32MB記憶體;256kB Cache可映射64MB記憶體。在這種情況下,命中率都在90%以上。至於沒有命中的資料,CPU只好直接從記憶體擷取。擷取的同時,也把它拷進Cache,以備下次訪問。
Cache的基本結構
Cache通常由相聯儲存空間實現。相聯儲存空間的每一個儲存塊都具有額外的儲存資訊,稱為標籤(Tag)。當訪問相聯儲存空間時,將地址和每一個標籤同時進行比較,從而對標籤相同的儲存塊進行訪問。Cache的3種基本結構如下:
全相聯Cache
在全相聯Cache中,儲存的塊與塊之間,以及儲存順序或儲存的儲存空間地址之間沒有直接的關係。程式可以訪問很多的子程式、堆棧和段,而它們是位於主儲存空間的不同部位上。
因此,Cache儲存著很多互不相關的資料區塊,Cache必須對每個塊和塊自身的地址加以儲存。當請求資料時,Cache控制器要把請求地址同所有地址加以比較,進行確認。
這種Cache結構的主要優點是,它能夠在給定的時間內去儲存主存器中的不同的塊,命中率高;缺點是每一次請求資料同Cache中的地址進行比較需要相當的時間,速度較慢。
直接映像Cache
直接映像Cache不同於全相聯Cache,地址僅需比較一次。
在直接映像Cache中,由於每個主儲存空間的塊在Cache中僅存在一個位置,因而把地址的比較次數減少為一次。其做法是,為Cache中的每個塊位置分配一個索引欄位,用Tag欄位區分存放在Cache位置上的不同的塊。
單路直接映像把主儲存空間分成若干頁,主儲存空間的每一頁與Cache儲存空間的大小相同,匹配的主儲存空間的位移量可以直接映像為Cache位移量。Cache的Tag儲存空間(位移量)儲存著主儲存空間的頁地址(頁號)。
以上可以看出,直接映像Cache優於全相聯Cache,能進行快速尋找,其缺點是當主儲存空間的組之間做頻繁調用時,Cache控制器必須做多次轉換。
組相聯Cache
組相聯Cache是介於全相聯Cache和直接映像Cache之間的一種結構。這種類型的Cache使用了幾組直接映像的塊,對於某一個給定的索引號,可以允許有幾個塊位置,因而可以增加命中率和系統效率。
Cache與DRAM存取的一致性
在CPU與主存之間增加了Cache之後,便存在資料在CPU和Cache及主存之間如何存取的問題。讀寫各有2種方式。
貫穿讀出式(Look Through)
該方式將Cache隔在CPU與主存之間,CPU對主存的所有資料請求都首先送到Cache,由Cache自行在自身尋找。如果命中,則切斷CPU對主存的請求,並將資料送出;不命中,則將資料請求傳給主存。
該方法的優點是降低了CPU對主存的請求次數,缺點是延遲了CPU對主存的訪問時間。
旁路讀出式(Look Aside)
在這種方式中,CPU發出資料請求時,並不是單通道地穿過Cache,而是向Cache和主存同時發出請求。由於Cache速度更快,如果命中,則Cache在將資料回送給CPU的同時,還來得及中斷CPU對主存的請求;不命中,則Cache不做任何動作,由CPU直接存取主存。
它的優點是沒有時間延遲,缺點是每次CPU對主存的訪問都存在,這樣,就佔用了一部分匯流排時間。
寫穿式(Write Through)
任一從CPU發出的寫訊號送到Cache的同時,也寫入主存,以保證主存的資料能同步地更新。
它的優點是操作簡單,但由於主存的慢速,降低了系統的寫速度並佔用了匯流排的時間。
回寫式(Copy Back)
為了克服貫穿式中每次資料寫入時都要訪問主存,從而導致系統寫速度降低並佔用匯流排時間的弊病,盡量減少對主存的訪問次數,又有了回寫式。
它是這樣工作的:資料一般唯寫到Cache,這樣有可能出現Cache中的資料得到更新而主存中的資料不變(資料陳舊)的情況。但此時可在Cache 中設一標誌地址及資料陳舊的資訊,只有當Cache中的資料被再次更改時,才將原更新的資料寫入主存相應的單元中,然後再接受再次更新的資料。這樣保證了Cache和主存中的資料不致產生衝突。
Cache的分級體系設計
微處理器效能由如下幾種因素估算:
效能=k(fⅹ1/CPI-(1-H)ⅹN)
式中:k為比例常數,f為工作頻率,CPI為執行每條指令需要的周期數,H為Cache的命中率,N為儲存周期數。
雖然,為了提高處理器的效能,應提高工作頻率,減少執行每條指令需要的周期數,提高Cache的命中率。同時分發多條指令和採用亂序控制,可以減少CPI值;採用轉移預測和增加Cache容量,可以提高H值。為了減少儲存周期數N,可採用高速的匯流排介面和不分塊的Cache方案。
以前提高處理器的效能,主要靠提高工作頻率和提高指令級的並行度,今後則主要靠提高Cache的命中率。設計出無阻塞Cache分級結構。
Cache分級結構的主要優勢在於,對於一個典型的一級緩衝系統的80%的記憶體申請都發生在CPU內部,只有20%的記憶體申請是與外部記憶體打交道。而這20%的外部記憶體申請中的80%又與二級緩衝打交道。因此,只有4%的記憶體申請定向到DRAM中。
Cache分級結構的不足在於快取組數目受限,需要佔用線路板空間和一些支援邏輯電路,會使成本增加。綜合比較結果還是採用分級Cache。
L1 Cache的設計有在片一級分離和統一設計兩種方案。
Intel、AMD、原DEC等公司將L1 Cache設計成指令Cache與資料Cache分離型。因為這種雙路快取結構減少了爭用快取所造成的衝突,改進了處理器效能,以便資料訪問和指令調用在同一刻度內進行。
但是,僅依靠增加在片一級Cache的容量,並不能使微處理器效能隨之成正比例地提高,還需設定二級Cache。
在L1 Cache結構方面,一般採用回寫式靜態隨機儲存空間(SRAM)。目前,L1 Cache容量有加大的趨勢。
L2 Cache的設計分晶片內建和外置兩種設計。
如AMD K6-3內建的256kB L2 Cache與CPU同步工作。外置L2 Cache,一般都要使二級Cache與CPU實現緊密耦合,並且與在片一級Cache形成無阻塞階層結構。同時還要採用分離的前台匯流排(外部I/O匯流排)和後台匯流排(二級Cache匯流排)模式。
顯然,將來隨著半導體整合工藝的提高,如果CPU與二級Cache整合在單晶片上,則CPU與二級Cache的耦合效果可能更佳。
由於L2 Cache內建,因此,還可以在原主板上再外置大容量緩衝1MB~2MB,它被稱為L3 Cache。
PC中的Cache技術的實現
PC中Cache的發展是以80386為界的。
結語
目前,PC系統的發展趨勢之一是CPU主頻越做越高,系統架構越做越先進,而主存DRAM的結構和存取時間改進較慢。因此,Cache技術愈顯重要,在PC系統中Cache越做越大。廣大使用者已把Cache做為評價和選購PC系統的一個重要指標。本文小結了Cache的源脈。希望可以給廣大使用者一個較系統的參考。
(轉載自中計報)
[z]電腦架構中Cache的原理、設計及實現