2 1 Cache的工作原理

2021-07-26 20:41:43 字數 3978 閱讀 4126

處理器微架構訪問

cache

的方法與訪問主儲存器有類似之處。主儲存器使用位址編碼方式,微架構可以位址定址方式訪問這些儲存器。

cache

也使用了類似的位址編碼方式,微架構也是使用這些位址操縱著各級

cache

,可以將資料寫入

cache

,也可以從

cache

中讀出內容。只是這一切微架構針對

cache

的操作並不是簡單的位址訪問操作。為簡化起見,我們忽略各類

virtual cache

,討論最基礎的

cache

訪問操作,並藉此討論

cpu如何使用

tlb完成虛實位址轉換,最終完成對

cache

的讀寫操作。

cache

的存在使得

cpu core

的儲存器讀寫操作略微顯得複雜。

cpu core

在進行儲存器方式時,首先使用

epn(effective pagenumber)

進行虛實位址轉換,並同時使用

cln(cache linenumber)

查詢合適的

cache block

。這兩個步驟可以同時進行。在使用

virtual cache

時,還可以使用虛擬位址對

cache

進行定址。為簡化起見,我們並不考慮

virtual cache

的實現細節。

epn經過轉換後得到

vpn,之後在

tlb中查詢並得到最終的

rpn(real pagenumber)

。如果期間發生了

tlb miss

,將帶來一系列的嚴重的系統懲罰,我們只討論

tlb hit

的情況,此時將很快獲得合適的

rpn,並依此得到

pa(physicaladdress)。

在多數處理器微架構中,

cache

由多行多列組成,使用

cln進行索引最終可以得到乙個完整的

cache block

。但是在這個

cache block

中的資料並不一定是

cpu core

所需要的。因此有必要進行一些檢查,將

cache block

中存放的

address

與通過虛實位址轉換得到的

pa進行位址比較

(compare address)

。如果結果相同而且狀態位匹配,則表明

cache hit

。此時微架構再經過

byte select andalign

部件最終獲得所需要的資料。如果發生

cache miss

,cpu

需要使用

pa進一步索引主儲存器獲得最終的資料。

由上文的分析,我們可以發現,乙個

cache block

由預先存放的位址資訊,狀態位和資料單元組成。乙個

cache

由多個這樣的

cache block

組成,在不同的微架構中,可以使用不同的

cache block

組成結構。我們首先分析單個

cache block

的組成結構。單個

cache block

由tag

字段,狀態位和資料單元組成,如

圖2‑2

所示。

其中data

字段存放該

cache block

中的資料,在多數處理器微架構中,其大小為

32或者

64位元組。

status

字段存放當前

cache block

的狀態,在多數處理器系統中,這個狀態字段包含

mesi

,moesi

或者mesif

這些狀態資訊,在有些微架構的

cache block

中,還存在乙個

l位,表示當前

cache block

是否可以鎖定。許多將

cache

模擬成sram

的微架構就是利用了這個

l位。有關

moesifl

這些狀態位的說明將在下文中詳細描述。在多核處理器和複雜的

cache hierarchy

環境下,狀態資訊遠不止

moesif。

rat(real address tag)

記錄在該

cache block

中存放的

data

欄位與那個位址相關,在

rat中存放的是部分實體地址資訊,雖然在乙個

cpu中實體地址可能有40,

46或者

48位,但是在

cache

中並不需要存放全部位址資訊。因為從

cache

的角度上看,

cpu使用的位址被分解成為了若干段,如圖2

‑3所示。

這個位址也可以理解為

cpu訪問

cache

使用的位址,由多個資料段組成。首先需要說明的是

cache line index

字段。這一字段與圖2

‑1中的

cache line number

類似,cpu

使用該字段從

cache

中選擇乙個或者一組

entry[2]。

bank

和byte

欄位之和確定了單個

cache

的data

字段長度,通常也將這個長度稱為

cache

行長度,圖2

‑3所示的微架構中的

cache block

長度為64

位元組。目前多數支援

ddr3 sdram

的微架構使用的

cache block

長度都是

64位元組。部分原因是由於

ddr3 sdram

的一次burst line為8

[24]

,一次基本

burst

操作訪問的資料大小為

64位元組。

在處理器微架構中,將位址為

bank

和byte

兩個字段出於提高

cache block

訪問效率的考慮。

multi-bank mechanism

是一種常用的提高訪問效率的方法,採用這種機制後,

cpu訪問

cache

時,只要不是對同乙個

bank

進行訪問,即可併發執行。

byte

字段決定了

cache

的埠位寬,在現代微架構中,訪問

cache

的匯流排位寬為

64位或者為

128位。

剩餘的字段即為

real addresstag

,這個欄位與單個

cache

中的real address tag

的字段長度相同。

cpu使用位址中的

real address tag

欄位與cache block

的對應欄位和一些狀態位進行聯合比較,判斷其訪問資料是否在

cache

中命中。

[1] 該圖源自

[19]

的figure 2. a typical cache and tlbdesign

,拷貝後過於模糊,重畫這個示意圖,並有所改動。

[2] 如果使用

set-associative

方式組織

cache

結構,此時使用

index

字段可以獲得一組

entry。

Cache工作原理 1

原帖 http blog.csdn.net chinacodec archive 2008 11 29 3408560.aspx 2.4.1 cache 工作原理 圖 2 27給出乙個位於 cpu與主存之間的 cache 最基本的結構。cache 容量與主存容量相比是很小的,差 二 三個數量級,目前...

Cache的功能 結構與工作原理

高速緩衝儲存器是存在於主存與cpu之間的一級儲存器,由靜態儲存晶元 sram 組成,容量比較小但速度比主存高得多,接近於cpu的速度。cache的功能是用來存放那些近期需要執行的指令與資料。目的是提高cpu對儲存器的訪問速度。為此需要解決2個技術問題 一是主存位址與快取位址的映象及轉換 二是按一定原...

CaChe基本概念及工作原理

計算機中程式執行時所有的指令和資料都是從儲存器中取出來執行的。儲存器是計算機系統中的重要組成部分,相當於計算機的倉庫,用來存放各類程式及其處理的資料。因此儲存器的容量和效能應當隨著處理器的速度和效能的提高而通過提高,以保持系統效能的平衡。然而在過去的 20 多年中,隨著時間的推移,處理器和儲存器在效...