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