當前位置:首頁 » 硬碟大全 » 高速緩存一致性問題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

高速緩存一致性問題

發布時間: 2022-04-16 21:35:41

❶ 單片機裸機編程怎麼解決cache一致性問題

Cache原理
CPU緩存(Cache Memory)是位於CPU與內存之間的臨時存儲器,它的容量比內存小的多但是交換速度卻比內存要快得多。緩存的出現主要是為了解決CPU運算速度與內存 讀寫速度不匹配的矛盾,因為CPU運算速度要比內存讀寫速度快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。在緩存中的數據是內存中的 一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。
只要Cache的空間與主存空間在一定范圍內保持適當比例的映射關系,Cache的命中率還是相當高的。一般規定Cache與內存的空間比為4:1000,即128kB Cache可映射32MB內存;256kB Cache可映射64MB內存。在這種情況下。命中率都在90%以上。至於沒有命中的數據,CPU只好直接從內存獲取。獲取的同時,也把它拷進Cache。
cache一致性問題
由於緩存存在於cpu與內存中間,所以任何外設對內存的修改並不能保證cache中也得到同樣的更新,同樣處理器對緩存中內容的修改也不能保證內存中的數據 得到更新。這種緩存中數據與內存中數據的不同步和不一致現象將可能導致使用DMA 傳輸數據時 或 處理器運行自修改代碼時產生錯誤。
Cache的一致性就是直Cache中的數據,與對應的內存中的數據是一致的。

Cache的基本結構
Cache通常由相聯存儲器實現。相聯存儲器的每一個存儲塊都具有額外的存儲信息,稱為標簽(Tag)。當訪問相聯存儲器時,將地址和每一個標簽同時進行比較,從而對標簽相同的存儲塊進行訪問。Cache的3種基本結構如下:
全相聯Cache
在全相聯Cache中,存儲的塊與塊之間。以及存儲順序或保存的存儲器地址之間沒有直接的關系。程序可以訪問很多的子程序、堆棧和段,而它們是位於主存儲器的不同部位上。 因此。Cache保存著很多互不相關的數據塊。
Cache必須對每個塊和塊自身的地址加以存儲。當請求數據時,Cache控制器要把請求地址同所有地址加以比較進行確認。
這種Cache結構的主要優點是。
它能夠在給定的時間內去存儲主存器中的不同的塊,命中率高;缺點是每一次請求數據同Cache中的地址進行比較需要相當的時間,速度較慢。
直接映像Cache
直接映像Cache不同於全相聯Cache。地址僅需比較一次。
在直接映像Cache中。由於每個主存儲器的塊在Cache中僅存在一個位置,因而把地址的比較次數減少為一次。其做法是,為Cache中的每個塊位置分配一個索引欄位,用Tag欄位區分存放在Cache位置上的不同的塊。單路直接映像把主存儲器分成若干頁。主存儲器的每一頁與Cache存儲器的大小相同。匹配的主存儲器的偏移量可以直接映像為Cache偏移量。Cache的Tag存儲器(偏移量)保存著主存儲器的頁地址(頁號)。
以上可以看出。直接映像Cache優於全相聯Cache,能進行快速查找,其缺點是當主存儲器的組之間做頻繁調用時,Cache控制器必須做多次轉換。
組相聯Cache
組相聯Cache是介於全相聯Cache和直接映像Cache之間的一種結構。這種類型的Cache使用了幾組直接映像的塊。對於某一個給定的索引號,可以允許有幾個塊位置。因而可以增加命中率和系統效率。

Cache與DRAM存取的一致性
在CPU與主存之間增加了Cache之後,便存在數據在CPU和Cache及主存之間如何存取的問題。讀寫各有2種方式。
貫穿讀出式(Look Through)
該方式將Cache隔在CPU與主存之間,CPU對主存的所有數據請求都首先送到Cache,由Cache自行在自身查找。如果命中。 則切斷CPU對主存的請求,並將數據送出;不命中。則將數據請求傳給主存。
該方法的優點是降低了CPU對主存的請求次數,缺點是延遲了CPU對主存的訪問時間。
旁路讀出式(Look Aside)
在這種方式中,CPU發出數據請求時,並不是單通道地穿過Cache。而是向Cache和主存同時發出請求。由於Cache速度更快,如果命中,則Cache在將數據回送給CPU的同時,還來得及中斷CPU對主存的請求;不命中。則Cache不做任何動作。由CPU直接訪問主存。它的優點是沒有時間延遲,缺點是每次CPU對主存的訪問都存在,這樣。就佔用了一部分匯流排時間。
寫穿式(Write Through)
任一從CPU發出的寫信號送到Cache的同時,也寫入主存,以保證主存的數據能同步地更新。它的優點是操作簡單,但由於主存的慢速,降低了系統的寫速度並佔用了匯流排的時間。
回寫式(Copy Back)
為了克服貫穿式中每次數據寫入時都要訪問主存。從而導致系統寫速度降低並佔用匯流排時間的弊病,盡量減少對主存的訪問次數,又有了回寫式。
它是這樣工作的:數據一般只寫到Cache,這樣有可能出現Cache中的數據得到更新而主存中的數據不變(數據陳舊)的情況。但此時可在Cache 中設一標志地址及數據陳舊的信息。只有當Cache中的數據被再次更改時。才將原更新的數據寫入主存相應的單元中,然後再接受再次更新的數據。這樣保證了Cache和主存中的數據不致產生沖突。

Cache與DMA的一致性問題
在進行DMA 操作時,如果沒有對Cache 進行適當的操作,將可能產生以下兩種錯誤:
1.DMA 從外設讀取數據到供處理器使用。DMA 將外部數據直接傳到內存中,但cache 中仍然保留的是舊數據,這樣處理器在訪問數據時直接訪問緩存將得到錯誤的數據。
2.DMA 向外設寫入由處理器提供的數據。處理器在處理數據時數據會先存放到cache 中,此時cache 中的數據有可能還沒來得及寫回到內存中的數據。如果這時DMA 直接從內存中取出數據傳送到外設,外設將可能得到錯誤的數據。
為了正確進行DMA 傳輸,必須進行必要的cache 操作。 cache 操作主要分為 invalidate (作廢) 和writeback (寫回) ,有時也將兩著放在一起使用。

DMA如果使用cache,那麼一定要考慮cache的一致性。解決DMA導致的一致性的方法最簡單的就是禁止DMA目標地址范圍內的cache功能。但是這樣就會犧牲性能。
因此在DMA是否使用cache的問題上,可以根據DMA緩沖區期望保留的的時間長短來決策。DAM的映射就分為:一致性DMA映射和流式DMA映射。
一致性DMA映射申請的緩存區能夠使用cache,並且保持cache一致性。一致性映射具有很長的生命周期,在這段時間內佔用的映射寄存器,即使不使用也不會釋放。生命周期為該驅動的生命周期。
流式DMA映射實現比較復雜。只知道種方式的生命周期比較短,而且禁用cache。一些硬體對流式映射有優化。建立流式DMA映射,需要告訴內核數據的流動方向。
1. DMA 從外設讀取數據到供處理器使用時,可先進性invalidate 操作。這樣將迫使處理器在讀取cache中的數據時,先從內存中讀取數據到緩存,保證緩存和內存中數據的一致性。
2.DMA 向外設寫入由處理器提供的數據時,可先進性writeback 操作。這樣可以DMA傳輸數據之前先將緩存中的數據寫回到內存中。
如果不清楚DMA 操作的方向,也可先同時進行invalidate 和writeback 操作。操作的結果等同於invalidate 和 writeback 操作效果的和。

wince 操作系統也有一套cache 操作介面:
void OEMCacheRangeFlush( LPVOIDpAddr, DWORD dwLength, DWORD dwFlags );

❷ 計算機內,配置高速緩沖存儲器(CACHE)是為了解決什麼

B,CPU與內存儲器之間速度不匹配問題。

高速緩沖存儲器(Cache)其原始意義是指存取速度比一般隨機存取記憶體(RAM)來得快的一種RAM,一般而言它不像系統主記憶體那樣使用DRAM技術,而使用昂貴但較快速的SRAM技術,也有快取記憶體的名稱。

高速緩沖存儲器是存在於主存與CPU之間的一級存儲器, 由靜態存儲晶元(SRAM)組成,容量比較小但速度比主存高得多, 接近於CPU的速度。在計算機存儲系統的層次結構中,是介於中央處理器和主存儲器之間的高速小容量存儲器。它和主存儲器一起構成一級的存儲器。高速緩沖存儲器和主存儲器之間信息的調度和傳送是由硬體自動進行的。

(2)高速緩存一致性問題擴展閱讀:

高速緩沖存儲器組成結構

高速緩沖存儲器是存在於主存與CPU之間的一級存儲器, 由靜態存儲晶元(SRAM)組成,容量比較小但速度比主存高得多, 接近於CPU的速度。

主要由三大部分組成:

1、Cache存儲體:存放由主存調入的指令與數據塊。

2、地址轉換部件:建立目錄表以實現主存地址到緩存地址的轉換。

3、替換部件:在緩存已滿時按一定策略進行數據塊替換,並修改地址轉換部件。

❸ 計算機中為什麼要採用高速緩存器(CACHE)

是為了解決低速的外設和高速的CPU之間速度不匹配的問題。

主要由三大部分組成:

1、Cache存儲體:存放由主存調入的指令與數據塊。

2、地址轉換部件:建立目錄表以實現主存地址到緩存地址的轉換。

3、替換部件:在緩存已滿時按一定策略進行數據塊替換,並修改地址轉換部件。

在有高速緩沖存儲器的計算機系統中,中央處理器存取主存儲器的地址劃分為行號、列號和組內地址三個欄位。

於是,主存儲器就在邏輯上劃分為若干行;每行劃分為若乾的存儲單元組;每組包含幾個或幾十個字。高速存儲器也相應地劃分為行和列的存儲單元組。二者的列數相同,組的大小也相同,但高速存儲器的行數卻比主存儲器的行數少得多。

(3)高速緩存一致性問題擴展閱讀

當中央處理器存取主存儲器時,高速緩存器首先自動對存取地址的列號欄位進行解碼,以便將聯想存儲器該列的全部行號與存取主存儲器地址的行號欄位進行比較:若有相同的,表明要存取的主存儲器單元已在高速存儲器中,稱為命中,硬體就將存取主存儲器的地址映射為高速存儲器的地址並執行存取操作。

若都不相同,表明該單元不在高速存儲器中,稱為脫靶,硬體將執行存取主存儲器操作並自動將該單元所在的那一主存儲器單元組調入高速存儲器相同列中空著的存儲單元組中,同時將該組在主存儲器中的行號存入聯想存儲器對應位置的單元內。

當出現脫靶而高速存儲器對應列中沒有空的位置時,便淘汰該列中的某一組以騰出位置存放新調入的組,這稱為替換。確定替換的規則叫替換演算法,常用的替換演算法有:最近最少使用演算法(LRU)、先進先出法(FIFO)和隨機法(RAND)等。

替換邏輯電路就是執行這個功能的。另外,當執行寫主存儲器操作時,為保持主存儲器和高速存儲器內容的一致性,對命中和脫靶須分別處理。

❹ 如何保證緩存與資料庫雙寫時的數據一致性

一般來說,就是如果系統不是嚴格要求緩存+資料庫必須一致性的話,緩存可以稍微的跟資料庫偶爾有不一致的情況,最好不要做這個方案,讀請求和寫請求串列化,串到一個內存隊列里去,這樣就可以保證一定不會出現不一致的情況
串列化之後,就會導致系統的吞吐量會大幅度的降低,用比正常情況下多幾倍的機器去支撐線上的一個請求。

❺ 常見的緩存策略有哪些,如何做到緩存與 db 里的數據一致性

您: 種writer-reader架構般思路緩存更新階段由writer解決致性問題資料庫數據變化同步更新redis並確保緩存更新功 作完整性判斷檢查全部屬性數據使用自增版本號(或間戳)判斷否新 作置檢測優化降低掃描代價針近間周期內(依0min)資料庫更新數據集合應該比較redis進行檢查代價比較

❻ 客戶端告訴緩存使用主存儲器或磁碟各有什麼 優缺點

問題太簡略了,首先我不明白你所說的這個客戶端是指什麼~?
但是大概來說,
作為程序來看,
客戶端的高速緩存,用主存儲器的速度高於使用任何介質的磁碟存儲,原因後面我會復制一個主存的定義^_^
缺點則是,主存在斷電後,內容會消失,而介質磁碟則不會消失。(- -或許目前大部分介質磁碟都不會消失,誰知道將來會不會有傳說中的生物磁碟- -)
簡單來說,論速度,主存快於磁碟,
論存放時間長短,磁碟長於主存。
- -
後面是主存定義。。。。

主存儲器Mainmemory簡稱主存。是計算機硬體的一個重要部件,其作用是存放指令和數據,並能由中央處理器(CPU)直接隨機存取。

❼ CPU何時可以忽略LOCK前綴並使用高速緩存一致性

寄存器嚴格屬於CPU的一部分 緩存只是集成到cpu封裝
寄存器最快 其次緩存 最後內存

❽ 高速緩存Cache問題

本題高速緩沖存儲器地址映像與變換的內容

高速緩沖存儲器(Cache)簡稱高速緩存,它的功能是提高CPU數據輸入輸出的速率,突破所謂的「馮·諾依曼瓶頸」。使用高速緩存改善系統性能的依據是程序的局部性原理。如果CPU需要訪問的內容大多能在高速緩存中找到(稱為訪問命中,hit)則可大大提高系統的性能

1、高速緩存Cache的存儲系統的平均存儲時間可以表示為:t3=h*t1+(1-h)*t2.其中,Cachce的存取時間t1、主存的存取時間t2及平均存取時間為t3已知後,可以求出Cache的命中率h為99%

2、高速緩存與主存之間有多種地址映射方式。常見的有直接映射方式、全相聯映射方式和組相聯映射方式。

全相聯映射方式的基本單元分為兩部分:地址部分和數據部分、數據部分用於存放數據,而地址部分用於存放該數據的存儲器地址。

當進行映射時,相聯存儲器把CPU發出的存儲器地址與高速緩存內所有的地址信息同時進行比較,已確定是否命中。

全相聯映射方式的主存地址構成為:塊內地址+區號+塊號。高速緩存Cache的地址構成為:塊號+塊內地址。

將主存地址8888888H從十六進制轉換為二進制為:1000100010001000100010001000B

即塊內地址為10001000100010001000B,相聯存儲器中區號為100010B,區塊號為00B,所以相聯存儲器中存儲的是10001000B=88H。由相聯存儲器的地址變換表查出88H塊號為01B。最後根據Cache的地址構成,把Cache塊號與塊內地址連接起來後得到高速緩存Cache的地址為0110001000100010001000B,轉換為十六進制後即188888H