優(yōu)化二:減少命中時間的方式預測
路預測是一種高速緩存優(yōu)化技術(shù),它在高速緩存中保存額外的位來預測下一次高速緩存訪問的路(或者組內(nèi)的塊)。這種預測可以提前設(shè)置多路選擇器來選擇期望的塊,并且在那個時鐘周期內(nèi),只進行一次標記比較,同時讀取高速緩存數(shù)據(jù)。如果預測正確,高速緩存訪問延遲就是快速命中時間。如果不正確,就嘗試另一個塊,改變路預測位,并且延遲多一個時鐘周期。路預測可以減少沖突不命中,同時保持直接映射高速緩存的命中速度。
模擬表明,兩路組相聯(lián)高速緩存的組預測準確度超過 90%,四路組相聯(lián)高速緩存的組預測準確度超過 80%,I 高速緩存的準確度高于 D 高速緩存。
I高速緩存和D高速緩存是指L1級別的高速緩存,分別用于緩存指令和數(shù)據(jù)。它們的作用是加速CPU對內(nèi)存的訪問,提高程序的執(zhí)行效率。I高速緩存和D高速緩存一般是私有的,每個CPU核心都有自己的I高速緩存和D高速緩存。它們的容量一般比較小,通常在幾十KB到幾百KB之間。
I高速緩存和D高速緩存之間可能存在一致性問題,即當數(shù)據(jù)被修改為指令時,I高速緩存和D高速緩存中的內(nèi)容可能不同步。這種情況一般發(fā)生在自修改代碼(self-modifying code)或者調(diào)試器(debugger)等場景中。為了解決這個問題,可以采用硬件或者軟件的方法來維護一致性。硬件方法是讓I高速緩存和D高速緩存之間進行通信,每次修改數(shù)據(jù)時,檢查并更新I高速緩存中的內(nèi)容。軟件方法是讓操作系統(tǒng)在修改數(shù)據(jù)時,清除D高速緩存中的內(nèi)容,并使I高速緩存中的內(nèi)容失效,從而保證從主存中讀取新的指令。
路預測還可以擴展為一種形式來降低功耗,通過使用路預測位來決定實際訪問哪個高速緩存塊(路預測位本質(zhì)上是額外的地址位);這種方法,也許可以叫做路選擇(way selection),在路預測正確時節(jié)省功耗,但是在路預測錯誤時增加了很多時間,因為訪問,而不僅僅是標記匹配和選擇,必須重復。這種優(yōu)化可能只適合低功耗處理器。路選擇的一個重要缺點是它使得很難流水線化高速緩存訪問;然而,隨著能源問題的增加,不需要給整個高速緩存供電的方案變得更有意義。
不能流水化原因:每個訪問都可能需要兩個時鐘周期,而不能在一個時鐘周期內(nèi)完成。
優(yōu)化三:流水線訪問和多組緩存以增加帶寬
這些優(yōu)化方法都是通過流水線化高速緩存訪問或者增加高速緩存的多路并行性來提高高速緩存的帶寬;這些優(yōu)化方法相當于超流水線和超標量技術(shù)提高指令吞吐量的對偶。
超流水線和超標量技術(shù)是兩種提高CPU性能的技術(shù),它們都利用了指令級并行的思想,但是實現(xiàn)方式不同。
超流水線技術(shù)是通過將每個流水線階段細分為更小的子階段,從而縮短機器周期,提高時鐘頻率,使得在相同的時間內(nèi)執(zhí)行更多的指令。超流水線技術(shù)可以看作是流水線技術(shù)的一種延伸,它不需要增加太多的硬件資源,但是會增加流水線級數(shù),從而增加分支預測錯誤和數(shù)據(jù)相關(guān)的開銷。
超標量技術(shù)是通過在CPU中設(shè)置多條流水線,并且每個時鐘周期內(nèi)可以發(fā)射和執(zhí)行多條指令,從而提高指令吞吐率。超標量技術(shù)可以看作是標量流水線技術(shù)的一種擴展,它需要增加硬件資源的重復,例如多個取指、譯碼、執(zhí)行和寫回部件,并且需要由硬件來完成指令調(diào)度。
這些優(yōu)化方法主要針對L1級別的高速緩存,因為訪問帶寬限制了指令吞吐量。多路并行也用在L2和L3級別的高速緩存中,但主要是作為一種功耗管理技術(shù)。流水線化L1可以提高時鐘周期,但代價是增加了延遲。例如,Intel Pentium處理器在1990年代中期的指令高速緩存訪問流水線需要1個時鐘周期;Pentium Pro到Pentium III在1990年代中期到2000年的需要2個時鐘周期;Pentium 4在2000年推出的和當前的Intel Core i7需要4個時鐘周期。
流水線化指令高速緩存實際上增加了流水線階段的數(shù)量,導致錯誤預測分支的懲罰更大。相應(yīng)地,流水線化數(shù)據(jù)高速緩存導致發(fā)出加載指令和使用數(shù)據(jù)之間的時鐘周期更多。
今天,所有的處理器都使用一些L1的流水線化,即使只是為了簡單地分離訪問和命中檢測,而且許多高速處理器有三個或更多級別的高速緩存流水線。流水線化指令高速緩存比數(shù)據(jù)高速緩存更容易,因為處理器可以依賴高性能的分支預測來限制延遲效應(yīng)。許多超標量處理器可以每個時鐘周期發(fā)出和執(zhí)行多于一個內(nèi)存引用。
為了處理每個時鐘周期多個數(shù)據(jù)高速緩存訪問,我們可以將高速緩存劃分為獨立的路,每一路支持一個獨立的訪問。路最初用來提高主存儲器的性能,并且現(xiàn)在用在現(xiàn)代DRAM芯片以及高速緩存中。
路并行工作得最好是當訪問自然地分布在各路上,所以地址到路的映射影響了內(nèi)存系統(tǒng)的行為。一個簡單的映射方法是將塊的地址順序地分布在各路上,叫做順序交錯(sequential interleaving)。例如,如果有四路,路0有所有地址模4等于0的塊,路1有所有地址模4等于1的塊,以此類推。
多路并行也是一種降低高速緩存和DRAM功耗的方法。多路并行也用在L2或者L3級別的高速緩存中,但是出于不同的原因。有了多路并行的L2,我們可以處理多于一個未完成的L1不命中,如果各路沒有沖突。
多路并行技術(shù)和多路關(guān)聯(lián)技術(shù)的區(qū)別是:文章來源:http://www.zghlxwxcb.cn/news/detail-524679.html
多路并行技術(shù)是指在一個程序中,將一個任務(wù)劃分為多個子任務(wù),讓它們在不同的處理器或線程上同時執(zhí)行,以提高程序的運行效率和響應(yīng)速度。
多路關(guān)聯(lián)技術(shù)是指在一個處理器中,設(shè)置多條流水線,并且每個時鐘周期內(nèi)可以選擇其中一條流水線發(fā)射和執(zhí)行一條指令,以提高處理器的指令吞吐率。文章來源地址http://www.zghlxwxcb.cn/news/detail-524679.html
到了這里,關(guān)于計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之緩存性能的十大進階優(yōu)化之減少命中時間和流水線訪問和多組緩存增加帶寬(三)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!