資料來源于ARM AXI4_specification
ACE為AXI緩存擴充接口
ACE協定特點:
1、正确的跨緩存共享(CACHEs)
2、具有不同特征的器件互動
3、最大利用緩存資料
4、高性能低功耗之間的選擇
ACE協定提供了系統級一緻性架構,系統級設計包括
1、一緻性存儲範圍
2、具有一緻性擴充的存儲系統器件
3、系統器件之間互動的軟體模型
ACE協定實作通過
1、五個狀态緩存模型,指明了Cache line的狀态,決定接口可以執行哪些操作
2、擴充了AXI4接口信号,提供了新的傳輸類型
3、擴充了Cache Master與其他Master互動的通道,以便共享資料
ACE 1、支援Barrier傳輸 2、支援DVM(Distributed Virtual Memory)虛記憶體位址管理
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuMDO4QTNwYTM5EDNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
一緻性互聯系統,即多個具有Cache的Master通過内部互聯器件管理來通路主存。
Cache line的五種狀态:
Cache line:
invalid、valid:表明Cache line是否在cache中
Unique、Shared:表明Cache line存在一個Cache還是多個Cache中
Dirty、Clean:表明cache line是否需要更新到主存
ACE對AXI4通道信号的擴充:
對寫資料和寫應答通道未進行擴充
ACE自身擴充的通道:
snoop address(AC):cache主端提供snoop傳輸的位址和控制資訊
snoop response(CR):cache主端提供snoop傳輸的響應
snoop data(CD):可選的主端傳遞資料通道。通常發送在主端snooped時複制傳回的有效資料(讀事務和clean snoop)
ACE額外使用RACK和WACK通知完成讀寫事務
一、從共享位址加載資料操作流程:
1、主端在讀位址通道發起讀事務
2、interconnect查詢是否在其他Cache儲存有此位址的cache line存在
3、 1)如果存在
-----在CR通道響應
-----在interconnect上提供資料,在CD通道提供資料
2)不存在
-----在interconnect上發起主存傳輸事務,由目前的主端發起事務效率較高
-----在AXI讀資料通道(RD)上傳回資料,為AXI标準的讀事務
4、主端器件使用RACK信号響應讀完成
注:1、如果發起主端或被snooped的cache都不負責将dirty line寫入主存則interconnect負責在讀取的同時将資料寫進主存2、在這種情況下interconnect負責産生傳輸位址和從snooped的資料寫進主存
二、向共享位址store資料操作流程:
寫入分為四種情況:
一、寫入partial cache line
二、寫入entire cache line
三、寫入已經cache的資料
四、重複寫入Overlapping store
一、 partial cache line(主端存儲前必須獲得目前cache line的拷貝)
1、主端獲得cache line預存儲形式,并且通過在RA通道上發起RU(ReadUnique)事務删除其他cache拷貝
2、interconnect在AC通道上傳輸給其他cache
3、snooped cache使用CR通道響應interconnect的傳輸,并使用CR通道傳回資料
4、interconnect 使用RD通道響應響應最初的主端
-----如果沒有snooped則interconnect 讀取主存,然後響應主端-----
5、主端器件執行存儲,并使用RACK信号訓示傳輸已完成。
-----如果cache line是unique的,不需要廣播給其他cache進行snoop-----
二、entire cache line(存儲前不需要獲得資料)
1、主端在RA通道上發起(Make Unique)事務獲得cache line拷貝,這将移除其他的cache line拷貝
2、interconnect在AC通道上将事務傳遞給其他cache
3、snooped cache 在CR通道上響應表明copy已經被删除
4、interconnect使用RD通道響應主端已完成
-----隻有響應,不傳遞資料-----
5、主端使用RACK信号表明傳輸完成
三、cache line is already cached(主端已經獲得cache line)
1、主端在RA通道上發起(Clean Unique)事務獲得cache line拷貝,這将移除其他的cache line拷貝并且将dirty寫入主存
-----cache line不必傳回給主端-----
2、interconnect在AC通道上将事務傳遞給其他cache。snooped cache使用CR通道響應表明copy已經被删除,interconnect是否需要将dirty寫入主存
4、interconnect使用RD通道響應主端已完成
-----隻有響應,不傳遞資料-----
5、主端使用RACK信号表明傳輸完成
四、Overlapping store(兩個主端存儲同一個line,interconnect決定傳輸順序)
1、主端1執行正常一~三的store流程
2、主端2使用snoop port擷取主端1的操作
1)如果主端2請求資料,需要等到1操作完成,能夠進行主端2操作的時候
2)如果主端2在進行full cache line存儲,當2檢測到1的存儲操作後删除資料的拷貝。當主端2的oberserve完成後可以繼續進行2的store操作
3)如果主端2存儲partial cache line,且已經有資料的copy,當2 observes到1的store操作,2必須移除copy,且必須進行以下操作
-----主端2必須重新組織一個資料請求操作,然後重新完成store-----
-----主端2可以将partial cache line寫入主存,但不保留資料的copy,在後續重新擷取這個cache line時需要重新取資料-----
ACE協定中使用到的事務類型(transaction,個人習慣叫傳輸)
1、Non-snooping transactions
不會引起snoop transaction,通路的位址可以是Non-shareable/Device 具體可以分為Read No Snoop和Write No Snoop
2、Coherent transactions
一、從共享位址加載資料
1)Read Clean:隻接受clean cache line,如果master沒有接受dirty cache的能力或使用write-through cache.
時使用
2)Read Not Shared Dirty:隻接受clean(unique/shared),unique dirty的cache
3)Read Shared:接受任意line
二、向共享位址store資料
1)Read Unique:在partial cache line的store操作中,沒有copy的cache line存在,獲得cache line的copy,并且保證沒有其他copy存在
2)Clean Unique:在partial cache line的store操作中,有copy的cache line存在,獲得cache line的copy,并将dirty cache寫入main memory, 并保證沒有其他copy cache line存在。
3)Make Unique:進行full cache line的store,invalid其他的copy的cache line
三、向共享位址store資料但不需要copy時
1)Read Once:得到一份cache data 的snapshot但是原Unique cache不需要從Unique變為Shared
2)Write Unique: 在write transaction之前移除所有的cache copy,在該指令之前必須保證dirty data已經都被寫入memory(full or partial cache line)
3)Write Line Unique:與2)相同但隻能用于full cache line
-----Read Once和Write Unique不需要full line size,Write Line Unique需要----
3、Memory update transactions
1)Write Back:将cache line寫入主存,來釋放位置,不能保留此line的copy
2)Write Clean:将cache line寫入主存,來釋放位置,允許保留此line的copy
3)Evict:訓示此cache line位址被排除,且不需要寫入主存。用于特定被跟蹤的器件cache line也可用來建立snoop 過濾器,在Evict中不傳輸資料
4、Cache maintenance transactions
主端器件廣播此事務通路和維持系統中其他主端的cache。并且此操作能夠讓主端器件檢視加載和存儲操作對那些無法通路的系統緩存的影響,此操作叫作Software Cache Maintenance.且Cache maintenance transactions可傳播到下遊緩存,允許維護系統中所有緩存
-----主端初始化其他緩存時也對本地緩存進行操作----
1)Clean Shared:清空其他cache,如果有dirty line必須寫入主存,snooped 本地cache可以保留cache line的copy
2)Clean Invalid: 清空并invalid 其他cache。如果有dirty line必須寫入主存,然後将clean和dirty的所有line 全部删除
3)Make Invalid: 清空并invalid 其他cache,dirty不寫入主存。
5、Snoop transactions
通過snoop的三個channel來進行操作,是coherency和maintenance transaction的子集。
6、Barrier transactions
保證系統中的order和observation
memory barrier:保證在barrier之後domain中的另一個master能夠觀察到所有的transaction
synchronization barrier:保證在該barrier transaction之前所有的transaction都必須被某個domain内的master觀察到。有些synchronization barrier需要在barrier transaction到達從端之前所有事務都已經被組織好。
7、Distributed virtual memory transactions
用于維護虛拟記憶體位址,用于兩個具有虛拟記憶體位址的器件之間消息傳遞。
Trasnaction的處理過程:
1)intial master發起一個transaction
2)根據address decode直接到slave,(不需要coherency支援)
交給interconnect中的coherency支援子產品。
3):coherency transaction與其他master的transaction的順序控制,order
4):interconnect發出必要的snoop transaction
5):每個cache master收到snoop transaction,并提供響應,有些操作提供data
6):interconnect決定是否需要通路主存
7):interconenct得到snoop響應和data
8):initial master完成transaction
ACE中一些名詞的概念
Domains
Non-shareable :
Inner Shareable :
Outer Shareable:
System:
ACE中cache與域的關系
Distributed Virtual Memory
典型的DVM操作
1、主端在虛位址空間發起事務
2、SMMU接收虛位址轉換為實體位址
----- 如果SMMU最近執行過此虛位址,則從他的TLB中直接獲得翻譯------
----- 否則SMMU周遊轉換表進行轉換-----
3、SMMU使用實體位址為主端組織事務