處理器微架構訪問
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 多年中,隨著時間的推移,處理器和儲存器在效...