cache 相關常用術語

Allocation
         CACHE中發現一個位置,並把新的cache數據存到這個位置的過程。這個處理過程可能包括evicting(驅逐)cache中已存在的數據,從而爲新的數據騰出空間。
Associativity
         指每個Set(集)裏包含的line frames(行幀)數。也就是cacheway(路)數。
Capacity miss容量失效
         因爲cache的容量限制,導致不能包括一個程序的整個working set(工作集),從而造成cache失效。這是三個cache失效原因(容量、強制、衝突)之一。
Clean乾淨
         一個有效的cache行,它的內容沒有被更高層內存或CPU修改寫過,我們稱這個cache行是“乾淨”的,顯然相反狀態是dirty(“髒”)
Coherence一致性
         如果讀內存任意地址的數據返回的總是這個地址的數據最近的更新,我們說內存系統是一致的。存取指CPUEDMA等的存取
Compulsory miss強制失效
         有時稱爲首次引用失效。強制失效是一種肯定發生的一種失效,因爲數據事先從沒有使用過也就沒有機會被cache。但有些情況也被稱爲強制失效,儘管它們不是第一被引用的數據,比如對非寫定位的cache進行同一位置的重複寫,以及對一個不被cache內存區域的存取。這是三個cache失效原因(容量、強制、衝突)之一。
Conflict miss 衝突失效
         由於Associativity的限制導致的而非容量限製造成的cache失效。
Direct-mapped cache直接映射cache
         直接映射cache映射低層內存的每個地址到cache的一個單一位置。這樣低層內存的多個地址可能被映射到cache中的同一位置上。它相當於1-way set-associative cache
Dirty
         writeback回寫cache,寫到達多級存儲結構的某一層,並更新這一層內容,但並不更新更低層的內存,這樣,當一個cache行有效幷包含更新後的數據,但卻不更新下一更低層的內存,我們說這個cache是“髒”的,顯然一個有效行的相反狀態是“乾淨”。
DMA直接內存存取
         直接內存存取,通常一個DMA操作copy一個內存塊從一個區域到另一個區域,或在外設和內存之間傳輸數據。對C64x DSPDMA傳輸使用EDAM,這些DMA傳輸與程序執行是並行的。從cache一致性角度,EDMA的存取可以看成是另外一個並行處理器。
Eviction驅逐
         cache移出一個line從而爲新的數據騰出空間的過程我們成爲EvictionEviction可以由用戶發出的writeback-invalidate產生,被驅逐的line我們稱爲victim line。當victim linedirty(“髒”)的時候,數據必須回寫道下一級存儲器中以維持內存的一致性。
Execute packet執行包
         在一個週期裏並行執行的一個指令塊,一個執行包可以包含1-8個指令。
Fetch packet取指包
         1個週期裏存取的包含8條指令的指令塊。顯然一個取指包可以包含多個執行包,這樣可能消耗多個週期。
First-reference miss首次引用失效
         是強制失效的一種形式。見強制失效。
Fully-associative cache全關聯cache
         任何內存地址都可以被存儲在cache的任何位置。這樣的cache非常靈活,但通常硬件上不可實現。這種cache同直接映射cache和集關聯cache形成鮮明對比,這兩種cache在定位策略方面都有更多的限制,全關聯cache只具有概念上的意義,當分析直接映射cache和集相關cache性能時對區分衝突失效和容量失效是有用的,全關聯cache等價於這樣一個集關聯cache:它有line frameway僅有一個set
Higher-level memory高層內存
在多級內存系統中,距離CPU較近的內存稱爲高層內存。在C64x系統中,最高層內存通常是L1CACHE,這一層的內存直接同CPU相連。較高層內存通常充當較低層內存的CACHE
Hit命中
         當請求的內存地址的數據在cache中,我們說cache命中。命中的反義詞是miss(失效)。Cache的命中使cpu的阻塞時間最短,因爲才cache中去數據要比從原始位置取更快。在某一層內存的“失效”可能在較低層“命中”。
Invalidate無效
         將一個有效的行標記爲無效行的過程。這相當於廢棄了這一行的內容,但並不回寫任何更新的數據。當與writeback組合時,會先將dirty數據更新到保存有這個地址的下一層內存。這通常用於維持內存的一致性。
Least Recently UsedLRUallocation
         對於set-associativefully-associative cache,最近最少使用原則被用來一個set裏選擇一個line frame作爲被驅逐的line,用來保存新的cache數據。
Line
         cache處理的最小單位塊。顯然一個cache行的尺寸要比CPU或高層內存存取的數據尺寸要大。例如儘管CPU可以進行單字節的存取,但如果發生一次讀失效,則cache會將整個cache行的數據讀入。
Line frame行幀
         Cache的一個位置,包含被cache的數據(一行)、一個關聯的tag地址,這個行的狀態信息。狀態信息包括這一行是否valid(有效)、dirty(髒)、LRU狀態
Line size行尺寸
         一個行的尺寸,單位字節。
Load through
         CPU請求在第一級和第二級cache中都失效時,數據從外部內存獲得,同時會存儲在第一級和第二級內存中,如果一個cache,它保存數據並同時把數據送到高一層cache中,這種cache我們稱之爲load-through cache。相對於那種首先存儲數據到低層然後第二步再把數據送到高層的cache,這種cache可以減少阻塞時間。
Long-distance access長距離存取
         CPU對不被cache內存區域數據的存取。顯然,由於這種存取,不會影響cache的狀態,但速度會比較慢。
Lower-level memory 低層內存
         在多級內存系統中,距離CPU較遠的內存稱爲低層內存。在C64x系統中,最低層內存包括L2以下的外部系統內存和內存映射的外設。
LRU
         表示cache line的最近最少使用的狀態信息。
Memory ordering內存訪問排序
    定義在內存裏以什麼樣的順序看內存操作的結果,有時稱爲consistency(連貫性)。在分級結構的特定層的強內存訪問排序表示在這一層上不可能以不同與程序序的順序來觀察內存存取的結果。鬆散內存訪問排序允許內存分級體系結構以不同的順序看內存操作的結果,注意強排序並不要求系統內存以程序序順序操作,而僅僅是使操作的結果在其它請求者看來是與程序序一致的。
Miss失效
         當請求的內存地址的數據不在cache中,就是說發生了cache失效。一個cache失效,會引起阻塞請求者直到line frame被定位,數據從低層內存中獲得爲止。在某些情況下,比如CPUL1D出現寫失效,阻塞CPU是不必要的。Cache失效通常分爲三種類型:強制失效、衝突失效和容量失效。
Miss pipelining
         服務單一的cache失效的過程需要多個流水週期。如果對連續的失效處理進行流水線操作,顯然就增加對失效處理的效率,降低了阻塞週期。
Read allocate
讀失效cache是僅在發生讀失效時纔在cache中定位空間並把數據讀入。寫失效發生時不會產生數據讀入到cache中,而是直接把寫數據送到下一層cache中。
Set
         Line frames的一個集合。直接映射的cache一個set包含一個line frameN-way set-associative cache每個set包含Nline frameFull-associative cache僅有一個set,這個唯一的set包含所有的line frames
Set-associative cache集相關cache
         一個set-associative cache包含多個line frames用於cache低層內存。當爲一個新的line數據定位一個空間時,選擇哪個line frame是基於cache的定位策略的。C64x是基於LRU策略的。
Snoop偵測
         lower-level memory(低層內存)查詢higher-level memory(高層內存)以確定高層內存是否包含給定地址的數據的一種方法。Snoop的主要目的是通過允許低層內存請求高層內存進行數據更新來維持內存的一致性,snoop操作可以觸發writeback(回寫),或更普通的writeback-invalidate(回寫並無效),觸發writeback-invalidate(回寫並無效)操作的snoop有時又稱爲snoop-invalidates
Tag標籤
         地址高位作爲一個Tag存儲在line中,在決定cache是否命中的時候,cache控制器會查詢Tag
Thrash
         當存取操作引起cache性能遭受嚴重損壞,我們說thrash cache了。Thrash的原因可以有很多:一個可能是算法在短時間存取太多的數據而很少或根本不重複使用。也就是說working set太大。這樣的算法將引起非常嚴重的容量失效。另一種情況是算法重複存取一小組不同地址的數據,這些數據映射到cache的相同set,這樣就人爲造成嚴的衝突失效。
Touch
         對一個給定地址的存儲器操作,我們稱之爲touch那個地址。Touch也可以指讀數組元素或存儲器地址的其它範圍,定位它們在一個特定層cache的唯一目的。一個CPU中心環用作touch一個範圍的內存是爲了定位它到cache經常被引用作爲一個touch環。Touching一個數組是軟件控制預取數據的一種形式。
Valid有效
         當一個cache line保存從下一級內存取的數據,那麼這個line frame就是有效的。無效狀態發生在line frame不保存任何數據,或者說還沒有被cache的數據,或先前cache的數據由於某種原因(內存一直性要求、程序要求等)被無效。有效的狀態並不表示數據是否已經被修改(其實這有另外的狀態來表示,即dirtyclean)。
Victim
cache移出一個line從而爲新的數據騰出空間的過程我們成爲EvictionEviction可以由用戶發出的writeback-invalidate產生,被驅逐的line我們稱爲victim。當victim linedirty(“髒”)的時候,數據必須回寫到下一級存儲器中以維持內存的一致性。
Victim Buffer
         保存victim直到它們揹回寫的特殊bufferVictim lines被移到victim buffer,這樣位新的數據騰出空間。
Victim Writeback
         victim linedirty(“髒”)的時候,數據必須回寫道下一級存儲器中以維持內存的一致性。我們稱這個過程爲Victim Writeback
Way
         set-associative cache,每個set包含多個line frames。每個set包含的line frames數被稱爲way。以set做爲行,line frame作爲列,那麼一列的line frames集合稱爲一個way。例如,一個4-way set-associative cache4way,每個set4個關聯的line frames,結果,對於一個可cache的內存地址,在cache中有4個可能的映射位置。
Working Set
         程序或算法就是數據和指令代碼的集合。在一個特定時間內被引用的這個集合我們稱爲working set(工作集)。通常,對於一個算法,我們需要考慮高層內存的工作集,對於整個程序我們需要考慮底層內存的工作集。
Write allocate
         對於一個write allocate cache,如果發生寫失效,就會定位一個空間並將失效的數據讀入到cache中。空間定位按照LRU原則。一旦數據被讀入到cache中,就進行寫操作,對write allocate cache,僅更新當前層的內存,寫的數據並不立刻送到下一層更低的內存。
Writeback回寫
         將一個有效的但爲髒的cache line回寫到較低層內存的過程。回寫後的這個cache line我們稱之爲clean(“乾淨”)。回寫後的cache line狀態依然爲有效。
Writeback cache回寫cache
         回寫cache僅修改它自己的寫命中的數據,它不會立刻更新下一級較低層內存的內容。數據在將來某時被回寫,如:當這個cache line被驅逐時,或當低層內存向高層內存snoop這個地址時,當然也可以直接通過程序發送writeback命令。一個寫命中,會引起對應的line被標記爲dirty(“髒”),也就是說數據被更新了,但還沒來得及更新低層內存。
Writeback-invalidate回寫後使無效
將一個有效的但爲髒的cache line回寫到較低層內存並置這些cache line爲無效狀態的過程。對C64x,對一組cache line進行Writeback-invalidate時,僅回寫那些有效且爲髒的cache lines,但卻置那一組中的所有cache lines爲無效。
Write merging
         Write merging是組合多個獨立的寫操作成一個、位寬更大的寫操作。顯然這可以改善了內存系統的性能。例如,對C64x CPUL1D寫緩衝在某些情況下(如果它們是對同一個雙字地址的寫)能合併多個寫。
Write-through cache
         對於一個write-through cache,能把所有的寫直接旁路到較低層內存。Cache中永遠不包含更新的數據,這樣做的結果是cache line永遠不會是dirtyC64xcache並不使用這種cache
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章