緩存是一種高速的存儲器,用于存放處理器經(jīng)常訪問的數(shù)據(jù)和指令。緩存的組織方式有多種,其中一種是按照不同的關(guān)聯(lián)度(associativity)來劃分。關(guān)聯(lián)度表示一個緩存塊(block)可以放在緩存中的位置數(shù)。關(guān)聯(lián)度越高,緩存中可以容納的不同塊的數(shù)量越多,從而減少了沖突不命中(conflict miss)的概率。沖突不命中是指由于緩存中位置有限,導(dǎo)致兩個或多個不同的塊爭奪同一個位置而發(fā)生的不命中。
優(yōu)化一:小型且簡單的一級緩存,減少命中時間和功耗
一級緩存的大小受到快速時鐘周期和功率限制。 類似地,使用較低級別的關(guān)聯(lián)性可以減少命中時間和功率,但這種權(quán)衡比涉及大小的權(quán)衡更復(fù)雜。
高速緩存命中的關(guān)鍵時序路徑有三個步驟:使用地址的索引部分對標(biāo)簽存儲器進(jìn)行尋址、將讀取的標(biāo)簽值與地址進(jìn)行比較、以及設(shè)置多路復(fù)用器,這里是確保在高速緩存處于可用狀態(tài)時選擇正確的數(shù)據(jù)項(xiàng)。
關(guān)聯(lián)較少的直接映射緩存可以將標(biāo)簽檢查與數(shù)據(jù)傳輸重疊,有效減少命中時間。 此外,較低級別的關(guān)聯(lián)性通常會降低功耗,因?yàn)楸仨氃L問的高速緩存行較少。
下圖顯示了緩存大小和關(guān)聯(lián)性變化對命中時間的估計影響。 根據(jù)緩存大小,對于這些參數(shù),模型表明直接映射的命中時間略快于兩路組關(guān)聯(lián),并且兩路組關(guān)聯(lián)的速度是四路的 1.2 倍。
相對訪問時間通常會隨著緩存大小和關(guān)聯(lián)性的增加而增加。 數(shù)據(jù)采用典型的嵌入式 SRAM 技術(shù)、單個存儲體和 64 字節(jié)塊。 關(guān)于緩存布局的假設(shè)以及互連延遲(取決于正在訪問的緩存塊的大?。┡c標(biāo)簽檢查和多路復(fù)用的成本之間的復(fù)雜權(quán)衡偶爾會導(dǎo)致看似不太合理的結(jié)果,例如2-way64KB訪問時間。 同樣,隨著緩存大小的增加,八路集關(guān)聯(lián)性的結(jié)果會產(chǎn)生異常行為。?
在選擇緩存大小和關(guān)聯(lián)性時,能耗也是一個考慮因素,如下圖所示。 當(dāng)從直接映射到雙向集關(guān)聯(lián)時,較高關(guān)聯(lián)性的能量成本范圍從超過 2 倍到在 128 或 256 KiB 緩存中可以忽略不計。八路組關(guān)聯(lián)高速緩存的巨大損失是由于并行讀出八個標(biāo)簽和相應(yīng)數(shù)據(jù)的成本造成的。
?另一種方法是按存儲體組織高速緩存,以便訪問僅激活高速緩存的一部分,即所需塊所在的存儲體。 多組緩存的主要用途是增加緩存的帶寬。事實(shí)上多銀行(multibanked)緩存的方法,它可以將緩存分成若干個部分(bank),每次訪問只激活其中一個部分,從而節(jié)省能量并提高帶寬。多核處理器中的L3緩存就是一種多銀行緩存,它在邏輯上是統(tǒng)一的,但在物理上是分布的,每個核心只訪問自己對應(yīng)的L3緩存部分。
三個因素導(dǎo)致了一級緩存(L1 cache)使用更高的關(guān)聯(lián)度。
第一個因素是許多處理器訪問緩存需要至少2個時鐘周期,所以增加關(guān)聯(lián)度帶來的命中時間(hit time)延長可能不是很重要。
第二個因素是為了避免TLB(轉(zhuǎn)換后備緩沖器)成為關(guān)鍵路徑,幾乎所有的L1緩存都應(yīng)該使用虛擬索引(virtually indexed),即用虛擬地址而不是物理地址來索引緩存。這樣做會限制緩存的大小為頁大小(page size)乘以關(guān)聯(lián)度,因?yàn)橹挥许搩?nèi)的位才能用于索引。虛擬索引也可以解決在地址轉(zhuǎn)換完成之前索引緩存的問題。
第三個因素是隨著多線程(multithreading)的引入,沖突不命中可能會增加,所以更高的關(guān)聯(lián)度更有吸引力。
這里簡單介紹一下TLB:
TLB是translation?lookaside?buffer的簡稱,也就是地址轉(zhuǎn)換緩存。它是一種存儲虛擬地址和物理地址對應(yīng)關(guān)系的高速緩存,用于加速內(nèi)存訪問。當(dāng)處理器訪問一個虛擬地址時,首先會在TLB中查找是否有相應(yīng)的物理地址,如果有,就直接使用該物理地址訪問內(nèi)存,這叫做TLB命中(hit)。如果沒有,就需要通過多級頁表(page?table)來查找物理地址,這叫做TLB不命中(miss)。這個過程比較耗時,所以TLB可以提高內(nèi)存訪問的效率。TLB通常位于處理器和緩存之間,或者緩存和主存之間,或者多級緩存的不同層次之間。文章來源:http://www.zghlxwxcb.cn/news/detail-542768.html
TLB成為關(guān)鍵路徑的意思是,TLB的訪問時間或者不命中率對內(nèi)存訪問的性能有很大的影響。如果TLB的訪問時間太長,或者TLB不命中的概率太高,那么內(nèi)存訪問的效率就會降低,從而影響整個程序的執(zhí)行速度。文章來源地址http://www.zghlxwxcb.cn/news/detail-542768.html
到了這里,關(guān)于計算機(jī)體系結(jié)構(gòu)基礎(chǔ)知識介紹之緩存性能的十大進(jìn)階優(yōu)化之小型且簡單的一級緩存(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!