加速器一致性接口

Zynq PS上的加速器一致性接口(Accelerator Coherency Port, ACP)是一個兼容AXI3的64位從機接口,連接到SCU(Snoop Control Unit),爲PL提供異步緩存一致性直接訪問PS的入口。


處理器可以標記ACP上的傳輸爲一致性或非一致性。PL端的AXI主機通過ARUSERS[1:0]指示是否爲一致性讀傳輸,通過AWUSERS[1:0]指示寫傳輸,這幾個信號都是AXI總線相關信號。設備端或強烈要求順序傳輸的情況常常按照非一致性傳輸對待(這些情況是指由AXI主機接口產生的傳輸,他們不被緩存,常常產生固定尺寸和數目的傳輸)。


【簡介】

非一致性傳輸直接經過SCU,出現在AXI主機接口保持不變。

ACP從機的一致性傳輸到AXI主機會變爲或多或少傳輸,一些屬性會隨之變化。

當ACP收到來自外部主機的一致性寫請求時,SCU檢查CPU內核L1數據緩存中相應地址,如果命中,一致性協議清空並invalidate 相應cache行,併合並清掉的數據和寫請求。

從外部主機箱一致性內存區域發起讀請求時,與SCU交互,測試是否需要數據已經存入處理器L1 Cache,如果命中,SCU直接向請求方返回數據;如果miss,SCU檢查先L2 cache,再不然訪問主存。


【ACP請求】

ACP一致性讀請求:當ARUSER[0] == 1,ARCACHE[1] ==1,同時ARVALID有效時,產生ACP一致性讀請求。這時,SCU強制一致性。

當ARUSER[0] == 0 或ARCACHE[1] ==0,同時ARVALID有效時,產生ACP非一致性讀請求。這時SCU並不強制一致性,讀請求直接傳遞到可用的SCU AXI master口通向L2 Cache控制器或OCM。

ACP一致性寫請求:當AWUSER[0] == 1且AWCACHE[1] == 1,同時AWVALID有效時,產生ACP一致性寫請求。這時SCU強制一致性,當數據存在於某個Cortex-A9處理器中時,PS區域邏輯首先清除並invalidate相應CPU的數據。當數據不在任一個CPU,或者當已經清掉、invalidate,則寫請求通過某個Cortex-A9處理器的AXI主機接口發起到L2 Cache或主存。

當AWUSER[0] ==0 或AWCACHE[1] ==0,同時AWVALID有效時,產生ACP非一致性寫請求。這時SCU不強制一致性,寫請求直接傳遞到某個可用的SCU AXI master port。


【ACP的限制】

一致性訪存不允許互斥訪問;

一致性訪存不允許鎖定訪問;

寫傳輸,以length = 3, size = 3, 寫選通11111111會引起CPU cache line破壞;

通過ACP連續訪問OCM可能會餓死其他AXI主機;限制burst size小於8 x 64bit字。


【參考文獻】

Zynq-7000 EPP TRM(UG585)

The Effect and Technique of System Coherence in ARM Multicore Technology by John Goodacre, Senior Program Manager, ARM Processor Division

ARM Cortex-A9 MPCore TRM, section 2.4, Accelerator Coherency Port

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章