高速緩存(Cache),高速緩存(Cache)原理是什么?
高速緩存(Cache),高速緩存(Cache)原理是什么?
高速緩存Cache是位于CPU和主存儲器之間規(guī)模較小、存取速度快捷的靜態(tài)存儲器。Cache一般由高速RAM (例如雙極型存儲器或靜態(tài)MOs存儲器)構(gòu)成,采用的映射方式有直接映像方式、全相聯(lián)映像和組相聯(lián)映像方式。可以使程序和數(shù)據(jù)共享一個Cache,也可以按程序和數(shù)據(jù)分別設(shè)置。還可以把Cache存儲器分成若干個體,采用多體N路相聯(lián)映像。
Cache在CPU中起著舉足輕重的作用,借助Cache, CPU可以以較快的速度存取靜態(tài)存儲器中的數(shù)據(jù),而且系統(tǒng)成本上升不大。它是微機系統(tǒng)在不大幅度增加成本的前提下,使性能提升的一個非常有效的技術(shù)。
Cache的發(fā)展歷史和現(xiàn)狀
Intel 高速緩存結(jié)構(gòu)
為了彌補CPU與內(nèi)存之間的差距,從80486開始,在CPU內(nèi)部采用了Cache CPU內(nèi)部的Cache由硬件進行控制運行,對操作系統(tǒng)和應(yīng)用軟件都是透明的。在80486中,數(shù)據(jù)和指令都統(tǒng)一存儲在同一個高速緩存中,因此也稱為“統(tǒng)一的寫通式高速緩存”?!皩懲ā钡暮x是:對高速緩存單元內(nèi)任何數(shù)據(jù)的修改,同時必須寫入到內(nèi)存中,以保持高速緩存與內(nèi)存數(shù)據(jù)的一致性。這個過程不需要操作系統(tǒng)或應(yīng)用軟件干預(yù)。80486只有一級高速緩存。
Pentium 高速緩存結(jié)構(gòu)
Pentium CPU 有兩個獨立的一級高速緩存,一個為8KB的指令高速緩存(LII Cache ),另一個為8KB的數(shù)據(jù)高速緩存(L1 Cache)。允許兩個高速緩存同時進行指令和數(shù)據(jù)地存取。為了保證高速緩存中數(shù)據(jù)的一致性,采用了高速緩存一致性協(xié)議(MESI)。在Pentium CPU一級高速緩存中,公共的64位內(nèi)部總線給兩個高速緩存輸入數(shù)據(jù)或指令,每個高速緩存的行長為32個字節(jié),適合于數(shù)據(jù)的突發(fā)傳輸,一次突發(fā)傳輸可以傳送4個64位的數(shù)據(jù)。
指令高速緩存和數(shù)據(jù)高速緩存都是雙路組相關(guān)的(第1路和第2路)。相關(guān)是指高速緩存的靜態(tài)存儲器(SRAM)和特征位(TAG)存儲區(qū)既是分割開的,又是相互聯(lián)系的。每路分為128個組(0-127),每組分為:指令高速緩存一致性位(M ESI) 、指令特征位(TAG)、指令高速緩存(SRAM)、數(shù)據(jù)高速緩存一致性位(MESI) 、數(shù)據(jù)特征位(TAG)、數(shù)據(jù)高速緩存(SRAM)。
在數(shù)據(jù)高速緩存中,一共分為2路,每路4KB (128個雙行組)。每個雙行組由32個字節(jié)構(gòu)成。每組有自己的特征位,特征位實際上是一個20位的地址,特征地址用于確定所請求的信息是否在高速緩存中。指令存放在指令高速緩存中,它連接在流水線的開頭部分(預(yù)取單元)。數(shù)據(jù)高速緩存不必連接流水線的開頭部分(預(yù)取單元)。數(shù)據(jù)高速緩存必須準備好,隨時提供給寄存器單元(RU)、算術(shù)邏輯單元(ALU)、地址生成電路(AU)等使用。
高速緩存只能提供數(shù)據(jù)和指令的臨時存儲。當數(shù)據(jù)從數(shù)據(jù)高速緩存中撤銷時,如果還沒有進行對內(nèi)存的修改,就必須將數(shù)據(jù)寫入到內(nèi)存中。數(shù)據(jù)高速緩存可以配置成為寫回或?qū)懲ǖ墓ぷ鞣绞?目前大多為寫回方式),以便一行一行地對內(nèi)存進行修改。在寫回方式中,內(nèi)存的修改是為了保持數(shù)據(jù)的一致性。
高速緩存中很少使用的數(shù)據(jù)要清除掉,以便CPU從內(nèi)存中讀取一行數(shù)據(jù)時,有空間存放新的數(shù)據(jù)。為了確保提供最新的數(shù)據(jù),目前CPU都采用“高速緩存一致性協(xié)議一MESI" 。該協(xié)議有4種狀態(tài):修改(M)、獨占(E)、共享(S)無效(I)。每個高速緩存中的每一行都分配一種狀態(tài),以表示存在該處指令或數(shù)據(jù)的狀態(tài)。MESI(高速緩存一致性協(xié)議)為2位,一般放在指令特征位前。
指令高速緩存中的每一行與一個MESI相關(guān),指令只能夠是兩種狀態(tài)的一種,無效狀態(tài)(工)說明指令不在該高速緩存中,共享狀態(tài)(S)說明高速緩存與內(nèi)存的內(nèi)容都是有效的,因為CPU不能寫或修改指令高速緩存的內(nèi)容。
數(shù)據(jù)高速緩存需要2個MESI位來表示4種數(shù)據(jù)狀態(tài)。由于數(shù)據(jù)高速緩存可以工作在寫回方式,因此數(shù)據(jù)高速緩存的內(nèi)容可以修改。這就需要2個另外的標志來標明它們的狀態(tài)。修改狀態(tài)(M)說明只有該高速緩存中具有有效數(shù)據(jù),獨占狀態(tài)(E )說明只有該高速緩存和內(nèi)存中具有有效數(shù)據(jù)。Pentium CPU 的二級高速緩存設(shè)計在主板上。
在Pentium 11 CPU 中,一級指令高速緩存(LII Cache)用于預(yù)取指令單元(IFU)產(chǎn)生的指令請求。指令預(yù)取單元也是唯一可以訪問指令高速緩存的單元。指令預(yù)取單元只能在指令高速緩存中讀取指令,不能改寫指令,因此指令高速緩存是只讀的。一級數(shù)據(jù)高速緩存(Ll DCache)用于CPU執(zhí)行單元(EXU),執(zhí)行內(nèi)存數(shù)據(jù)的讀寫請求。執(zhí)行單元可以在數(shù)據(jù)高速緩存中讀取指令,或者改寫指令,因此數(shù)據(jù)高速緩存是可讀的。
在Pentium 11CPU中,二級高速緩存為“統(tǒng)一式高速緩存”。它用于一級緩存中指令或數(shù)據(jù)沒有命中時,由二級緩存提供。如果二級緩存也沒有命中,它將發(fā)出一個事務(wù)請求給總線接口單元(BIU),從內(nèi)存中讀取指令和數(shù)據(jù)行。這些讀取的指令或數(shù)據(jù)存放于二級緩存中,同時也被送到一級緩存中。
Alpha 系列處理器
Alpha 21064主頻為166/200MHz,片上高緩包含兩級。即在芯片內(nèi)設(shè)有直接映像的8KB指令高緩和8KB的數(shù)據(jù)高緩,在芯片外設(shè)有128KB-16MB的片外高緩。Alp ha 2 1164微處理器是Alpha的最新產(chǎn)品,21164的時鐘頻率可達到300MHz,在Alpha 21164上,片上高緩也包含兩級,即除了像21064那樣,在芯片內(nèi)設(shè)有直接映像的8KB指令高緩和8KB數(shù)據(jù)高緩以外,還在芯片內(nèi)設(shè)有96KB三路組相聯(lián)的統(tǒng)一高緩,作為指令和數(shù)據(jù)合用的第二級高緩。這個片上高緩極大地減少了一級高緩不命中時存儲器訪問的平均等待時間。
PowerPC系列處理器
由美國IBM、Apple和Motorola公司聯(lián)合開發(fā)的微處理芯片。PowerPC 601采用0.6pmCMOS工藝,工作主頻50/66MHz。只包含一級片上高緩,容量為32KB,組織形式為8路組相聯(lián),指令和數(shù)據(jù)合存。PowerPC 604只在芯片內(nèi)設(shè)有四路組相聯(lián)的16KB指令高緩和16KB的數(shù)據(jù)高緩。PowerPC 620包含兩級片上高緩,在芯片內(nèi)設(shè)有四路組相聯(lián)的32KB指令高緩和32KB的數(shù)據(jù)高緩,在芯片外設(shè)有1一128MB的片外高緩。
Super SPARC
美國德州儀器公司(TI)為SUN微系統(tǒng)公司生產(chǎn)的第四代SPARC,采用超標量RISC體系結(jié)構(gòu)。時鐘頻率最初為33至50MHz,最高可達100MHz。芯片上集成了36K字節(jié)Harvard結(jié)構(gòu)的高緩(16KB數(shù)據(jù)和20KB指令)。
非常好我支持^.^
(1) 9.1%
不好我反對
(10) 90.9%
相關(guān)閱讀:
- [電子說] ARM9處理器從哪些方面保證了FIQ異常響應(yīng)的快速性? 2023-10-19
- [電子說] Python 中怎么來實現(xiàn)類似 Cache 的功能 2023-10-17
- [電子說] Cache工作原理講解 Cache寫入方式原理簡介 2023-10-17
- [電子說] 深入理解Armv9 DSU-110中的L3 cache 2023-10-11
- [電子說] 在組相聯(lián)cache中,用于替換cache line的算法有哪些? 2023-10-08
- [電子說] Linux性能優(yōu)化:Cache對性能的影響 2023-10-04
- [電子說] 為多個Vivado?工程復(fù)用遠程IP高速緩存 2023-09-22
- [電子說] Linux內(nèi)存泄漏該如何去檢測呢? 2023-09-21
( 發(fā)表人:admin )