cache的原理、設計及實現
前言 雖然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的原理 設計及實現
前言 雖然cpu主頻的提公升會帶動系統效能的改善,但系統效能的提高不僅僅取決於cpu,還與系統架構 指令結構 資訊在各個部件之間的傳送速度及儲存部件的訪問速度等因素有關,特別是與cpu 記憶體之間的訪問速度有關。若cpu工作速度較高,但記憶體訪問速度相對較低,則造成cpu等待,降低處理速度,浪費cp...
Mysql事務實現原理及設計
一 事務基本概念 事務特性 aidc 原子性 隔離性 永續性 一致性 併發問題 髒讀 讀取到未提交的資料。不可重複讀 兩次讀取的結果不同。幻讀 select操作得到的結果表徵的資料狀態無法支撐後續的業務操作。隔離級別 未提交讀 最低隔離級別,會讀取到其他事務為提交的資料。髒讀 提交讀 事務過程中可以...
Cache的分級體系設計
cache的分級體系設計 微處理器效能由如下幾種因素估算 效能 k f 1 cpi 1 h n 式中 k為比例常數,f為工作頻率,cpi為執行每條指令需要的週期數,h為cache的命中率,n為儲存週期數。雖然,為了提高處理器的效能,應提高工作頻率,減少執行每條指令需要的週期數,提高cache的命中率...