摘要: 本文主要對緩存一致性的相關知識進行介紹。
關鍵字:Armv8、體系結構、緩存一致性、Cache、MESI
1. 緩存一致性
緩存一致性是指在采用層次結構存儲系統(tǒng)的控制器系統(tǒng)中保證高速緩沖存儲器中數據與主存儲器中數據相同的機制。
緩存一致性關注的是同一個數據在多個高速緩存和內存中的一致性問題。解決高速緩存的一致性的方法主要是總線監(jiān)聽協(xié)議。
緩存一致性根據系統(tǒng)設計的復雜度可以分為兩大類:
- 多核之間的緩存一致性,通常指CPU簇內的處理器內核之間的緩存一致性。
- 系統(tǒng)之間的緩存一致性,包括CPU簇之間的緩存一致性及全系統(tǒng)間的緩存一致性。
2. MESI協(xié)議
緩存一致性方案可以通過多種標準方式進行操作。大多數 ARM 處理器使用 MOESI 協(xié)議,而 Cortex-A9 使用 MESI 協(xié)議。
MESI是四個單詞首字母縮寫Modified修改,Exclusive獨占,Shared共享,Invalid無效,下面就簡要介紹一下這四種狀態(tài)。
- M:表示當前CPU的高速緩存中的變量副本是獨占的,而且和主存中的變量值不一致,而且別的CPU的flag不可能是這個狀態(tài)。如果別的CPU想要讀取變量的值,不能直接讀主內存中的值,而是需要將處于M狀態(tài)的變量刷新回主內存才可以。
- E:表示當前CPU的高速緩存中的變量副本是獨占的,別的CPU高速緩存中該變量的副本不能處于該狀態(tài),但是,處于E狀態(tài)的高速緩存變量的值和主內存中的變量值是一致的。
- S:處于S狀態(tài)表示CPU中的變量副本和主存中數據一致,而且多個CPU都可以處于S狀態(tài),舉例,當多個CPU讀取主內存的值的時候高速緩存的flag就處于S狀態(tài)。
- I:表示當前CPU的高速緩存的變量副本處于不合法狀態(tài),不可以直接使用,需要從主內存重新讀取,flag的初始狀態(tài)就是I。
該協(xié)議的標準實現規(guī)則如下:
- 僅當高速緩存行處于已修改或獨占狀態(tài)時才能進行寫入。如果處于 Shared 狀態(tài),則必須先使所有其他緩存的副本失效。寫入將行移動到修改狀態(tài)。
- 緩存可以隨時丟棄共享行,變?yōu)闊o效狀態(tài)。修改后的行首先被寫回。
- 如果一個緩存保持一行處于 Modified 狀態(tài),那么從系統(tǒng)中的其他緩存讀取數據將從緩存中獲取更新的數據。按照慣例,這是通過首先將數據寫入主存儲器,然后在執(zhí)行讀取之前將高速緩存行更改為共享狀態(tài)來完成的。
- 當另一個高速緩存讀取該行時,具有處于獨占狀態(tài)的行的高速緩存必須將該行移動到共享狀態(tài)。
- 共享狀態(tài)可能不準確。如果一個緩存丟棄了共享行,另一個緩存可能不知道它現在可以將該行移動到獨占狀態(tài)。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
關于億道電子
億道電子技術有限公司(英文名稱:Emdoor Electronics Technology Co.,Ltd)是國內資深的研發(fā)工具軟件提供商,公司成立于 2002 年,面向中國廣大的制造業(yè)客戶提供研發(fā)、設計、管理過程中使用的各種軟件開發(fā)工具,致力于幫助客戶提高研發(fā)管理效率、縮短產品設計周期,提升產品可靠性。
20 年來,先后與 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立戰(zhàn)略合作伙伴關系,并作為他們在中國區(qū)的主要分銷合作伙伴服務了數千家中國本土客戶,為客戶提供從芯片級開發(fā)工具、EDA 設計工具、軟件編譯以及測試工具、結構設計工具、仿真工具、電氣設計工具、以及嵌入式 GUI 工具等等。億道電子憑借多年的經驗積累,真正的幫助客戶實現了讓研發(fā)更簡單、更可靠、更高效的目標。
歡迎關注“億道電子”公眾號
了解更多研發(fā)工具軟件知識