1. 程式人生 > >轉:cache一致性中 寫無效、寫更新;直寫、寫回 的區別

轉:cache一致性中 寫無效、寫更新;直寫、寫回 的區別

原文:

1.基於監聽協議:

        通常使用兩種策略來解決Cache一致性問題:寫無效策略寫更新策略

        寫無效策略(write invalidate)是指當某個處理器更新其私有Cache中的某個資料時,它通知所有其它Cache這一資料在它們中的副本從此均無效。這樣就可以避免其它"過時"的副本被使用而造成錯誤。

        寫更新策略(write update)是指當某個處理器更新其私有Cache中的某個資料時,它把所更新的資料傳送給所有的其它Cache,以更新這一資料在其它Cache中的所有副本。一般來說,使用寫更新策略,需要傳輸更新後的資料,而寫無效只需傳輸寫無效資訊,因此寫更新傳輸的資料量比寫無效要大。而且,被更新的資料的某些副本以後也不一定再被使用。例如上圖中,P1

更新X後,P2不一定再使用變數X的值。因此每次都對所有的副本都更新是沒有必要的。

       請注意,寫無效和寫更新是維護Cache一致性的策略,它與維護Cache與主儲存器一致性的策略沒有必然的關係。無論是使用寫無效策略還是寫更新策略,共享儲存器中的資料副本都可以通過寫直達寫回策略來維護與Cache的一致性。

      寫回法:當CPU寫Cache命中時,只修改Cache的內容,而不立即寫入主存;只有當此行被換出時才寫回主存。

      寫直達:又稱全寫法,當寫Cache命中時,Cache與主存同時發生寫修改,因而較好的維護了與主存的內容一致性。

      寫一次法:是寫回法與全寫法的折中方法:寫命中與寫未命中的處理方法與寫回法基本相同,只是第一次寫命中時要同時寫入主存。這是因為第一次寫Cache時,CPU要在總線上啟動一個儲存寫週期,其他Cache監聽到此主存塊地址及寫訊號後,即可拷貝該塊或及時作廢,以便維護系統全部Cache的一致性。

       例如,如果採用寫無效策略和寫直達策略,當處理器P修改私有Cache中的某一資料時,不但要向其它處理器的Cache傳送無效資訊,而且要將共享儲存器中該資料的副本更新。最終,處理器P的私有Cache和共享儲存器中的資料是相同而且是正確的,而其它處理器Cache中該資料的副本被標記為無效。如果採用寫無效策略和寫回策略,當處理器P修改私有Cache中的某一資料時,不但要向其它處理器的Cache傳送無效資訊,而且要向共享儲存器傳送無效資訊。最終,只有處理器P的私有Cache中的資料是正確的,而共享儲存器和其它處理器Cache中該資料的副本均被標記為無效。

2.基於目錄協議

       使用Cache目錄來存放有關資料塊拷貝駐留在Cache中的資訊,把使其他Cache資料塊無效的一致性命令只發給存放有相應資料塊的Cache,從而支援Cache的一致性。 根據目錄的結構特點,基於目錄的協議可分為3類:全對映(full-map)目錄、有限(limited)目錄、和鏈式(chained)目錄。


相關推薦

cache一致性 無效更新區別

原文: 1.基於監聽協議:         通常使用兩種策略來解決Cache一致性問題:寫無效策略和寫更新策略。         寫無效策略(write invalidate)是指當某個處理器更新其私有Cache中的某個資料時,它通知所有其它Cache這一資料在

顯示技術的幀幀數幀率 FPS

  在視訊領域,電影、電視、數字視訊等可視為隨時間連續變換的許多張畫面,而“幀( Frame)”是指每一張畫面。而我們日常口語習慣或者說不嚴謹的交流中,通常對於幀數( Frames)與幀率( Frame rate)之間都是混淆的,那麼今天子凡就簡單的來科普一下這些科技生活方式的小知識。 幀 Frame 簡

機器學習的範數規則化之(一)L0L1與L2範數

今天我們聊聊機器學習中出現的非常頻繁的問題:過擬合與規則化。我們先簡單的來理解下常用的L0、L1、L2和核範數規則化。最後聊下規則化項引數的選擇問題。這裡因為篇幅比較龐大,為了不嚇到大家,我將這個五個部分分成兩篇博文。知識有限,以下都是我一些淺顯的看法,如果理解存在錯誤

判斷js的數據類型的幾種方法

asc 選擇 function obj spa 自己的 iam ring param 判斷js中的數據類型有一下幾種方法:typeof、instanceof、 constructor、 prototype、 $.type()/jquery.type(),接下來主要比較一下這

【MFC】在CHtmlView判斷頁面加載完成

事件處理 什麽 回調 c++ ase BE guid info bool 原帖:http://blog.csdn.net/wangjia184/article/details/3684862 論壇上有人問如何在CHtmlView中判斷頁面加載完成。這裏給出一點想法。首先

非廣告《工作軟件分享》--PDF/EXCEL/WORD優化壓縮處理軟件

PDF 壓縮 分享原因:工作中通過一體式打印機掃描紙質文件後產生的 PDF 實在是太大,不可以在通過郵箱正常的發送出去。 為了解決這個頭痛與苦惱的問題,一直以來都在麻煩度娘。 測試過的方法: 1、pdf打印機再打印。 >>>>>>使用cutpdf打印機再打印後,文

SQL Server服務器角色和數據庫角色權限詳解

ice 擁有 錯誤 update ini 語法 remote login spl 當幾個用戶需要在某個特定的數據庫中執行類似的動作時(這裏沒有相應的Windows用戶組),就可以向該數據庫中添加一個角色(role)。數據庫角色指定了可以訪問相同數據庫對象的一組數據庫用戶。數

RabbitMQ實現AMQP與MQTT消息收發異同

開始 離線消息 現象 交換機 .html rabbit uci log www. 轉自:http://www.cnblogs.com/lucifer1997/p/9438186.html 實現了AMQP與MQTT(至多一次)後,用多個隊列以topic exchange的方式

Spring AOP的動態代理

原文連結:Spring AOP中的動態代理 0  前言 1  動態代理 1.1 JDK動態代理 1.2 CGLIB動態代理 1.2.1 CGLIB的代理用法 1.2.2 CGLIB的過濾功能

關於 Java finally 語句塊的深度辨析

可不能小看這個簡單的 finally,看似簡單的問題背後,卻隱藏了無數的玄機。接下來我就帶您一步一步的揭開這個 finally 的神祕面紗。 問題分析 首先來問大家一個問題:finally 語句塊一定會執行嗎? 很多人都認為 finally 語句塊是肯定要執行的,其

關於java的native關鍵字介紹

native是與C++聯合開發的時候用的!java自己開發不用的! 使用native關鍵字說明這個方法是原生函式,也就是這個方法是用C/C++語言實現的,並且被編譯成了DLL,由java去呼叫。 這些函式的實現體在DLL中,JDK的原始碼中並不包含,你應該是看不到的。對於

說說售前,關於售前,售前軟體工程師----的很好

說說售前(一):售前的作用 在ITPUB上有個哥們問做售前最需要什麼,大多數答:“忽悠”。應該說,很有意思的印象詞。濃縮的是精華,細想一下,如果用兩個字給售前定性的話,還真找不出另外的更合適的詞。但“忽悠”本身就是一種能力,常聽到人說某人太能忽悠了,到底怎麼樣才算是能忽悠呢

定義控制元件三部曲之動畫篇(一)——alphascaletranslaterotateset的xml屬性及用法

前言:這幾天做客戶回訪,感觸很大,使用者只要是留反饋資訊,總是一種恨鐵不成鋼的心態,想用你的app,卻是因為你的技術問題,讓他們不得不放棄,而你一個回訪電話卻讓他們盡釋前嫌,當最後把手機號留給他們以便隨時溝通的時候,總會發來一條條的鼓勵簡訊,讓我不自主的開始內疚。哎,多麼

在VS建立類庫了以後生成的DLL檔案帶有註釋的方法

   剛剛在做專案的時候自己建立一個"類庫",寫了幾個方法,都加上了///註釋,但是生成DLL後在另一個WEB專案中應用,發現寫的註釋都沒有了,上網查 了下具體的原因,原來在生成DLL的同時沒有生成相應的XML檔案,而註釋是放在XML檔案中的,生成XML的方法如

在python3安裝pip(windows7下)

1.下載get-pip.py檔案: 訪問https://bootstrap.pypa.io/get-pip.py。如果出現對話方塊,請選擇儲存檔案;如果get-pip.py程式碼出現在瀏覽器中,可以按ctrl+s進行下載。 2.進入CMD程式中: 點選桌面左下方的“

android專案values幾個檔案的作用

最近反編譯了幾個Android軟體,發現一些以前未用到的資原始檔:ids.xml——為應用的相關資源提供唯一的資源id。id是為了獲得xml中的物件而需要的引數,也就是Object = findViewById(R.id.id_name)中的id_name。這些值可以在程式碼中用android.R.id引用

DNS伺服器叢集部署加密更新DNS伺服器資源花生殼(DDNS)|動態域名解析

簡介 DNS伺服器一般在使用時,當訪問量太大時,為了緩解伺服器的壓力,可以使用一個主DNS伺服器,多個輔助DNS伺服器,這些DNS伺服器就組成一個DNS叢集。DNS叢集部署當伺服器遷移或者IP變更時,使用相同的主機域名,就無需更改大量相關配置檔案。 DNS叢集部署 在另一臺虛

javastaticfinalstatic final的區別

重寫 一個 修改 表示 指針 子類 不同 常數 ati http://blog.csdn.net/qq1623267754/article/details/36190715 final可以修飾:屬性,方法,類,局部變量(方法中的變量) final修飾的屬性的初始化

C++constvolatilemutable的用法

const修飾普通變數和指標 const修飾變數,一般有兩種寫法: const TYPE value; TYPE const value; 這兩種寫法在本質上是一樣的。它的含義是:const修飾的型別為TYPE的變數value是不可變的。對於一個非指標的型別T

Vim常用編輯命令移動到文件某位置

vi編輯器是Linux和Unix上最基本的文字編輯器,是visual editor的簡稱,工作在字元模式下。由於不需要圖形介面,vi是效率很高的文字編輯器。它在Linux上的地位就像Edit程式在DOS上一樣。它可以執行輸出、刪除、查詢、替換、塊操作等眾多文字操