什麼是Cache?作用是什麼?說明其在微處理機中的位置

2021-05-15 23:56:17 字數 4697 閱讀 4633

1樓:

前言 雖然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的源脈。希望可以給廣大使用者一個較系統的參考。

cache的作用是什麼,cache作用

我們都知道 mysql 的 table cache 是表定義的快取,江湖上流傳著各種對這個引數的調優方法。table cache 的作用,就是節約讀取表結構檔案的開銷。對於table cache 是否命中,其實table cache 是針對於執行緒的,每個執行緒有自己的快取,只快取本執行緒的表結構定...

語言的作用是什麼語言的作用是什麼?舉例說明

第一,語言是人類最重要的交際工具。第二,語言是人類的思維工具。第三,語言是一定社會的產物,是社會特有的一種現象,社會以外無所謂語言,沒有社會,也就沒有語言,語言的發展受社會制約,語言隨著社會的產生而產生,隨著社會的發展而發展,隨著社會的死亡而死亡。第四,語言是社會成員相互聯絡的橋樑和紐帶,是相互溝通...

的作用是什麼文件的作用是什麼

文件的作用和分類 軟體文件 document 也稱檔案,通常指的是一些記錄的資料 和資料 它具有固定不變的形式,可被人和計算機閱讀.它和 計算機程式共同構成了能完成特定功能的計算機軟體 有人把源 程式也當作文件的一部分 我們知道,硬體產品和產品資料在整 個生產過程中都是有形可見的,軟體生產則有很大不...