Zynq PS上的加速器一致性接口(Accelerator Coherency Port, ACP)是一個兼容AXI3的64位從機接口,連接到SCU(Snoop Control Unit),為PL提供異步緩存一致性直接訪問PS的入口。
處理器可以標記ACP上的傳輸為一致性或非一致性。PL端的AXI主機通過ARUSERS[1:0]指示是否為一致性讀傳輸,通過AWUSERS[1:0]指示寫傳輸,這幾個信號都是AXI總線相關(guān)信號。設(shè)備端或強烈要求順序傳輸?shù)那闆r常常按照非一致性傳輸對待(這些情況是指由AXI主機接口產(chǎn)生的傳輸,他們不被緩存,常常產(chǎn)生固定尺寸和數(shù)目的傳輸)。
【簡介】
非一致性傳輸直接經(jīng)過SCU,出現(xiàn)在AXI主機接口保持不變。
ACP從機的一致性傳輸?shù)紸XI主機會變?yōu)榛蚨嗷蛏賯鬏?,一些屬性會隨之變化。
當(dāng)ACP收到來自外部主機的一致性寫請求時,SCU檢查CPU內(nèi)核L1數(shù)據(jù)緩存中相應(yīng)地址,如果命中,一致性協(xié)議清空并invalidate 相應(yīng)cache行,并合并清掉的數(shù)據(jù)和寫請求。
從外部主機箱一致性內(nèi)存區(qū)域發(fā)起讀請求時,與SCU交互,測試是否需要數(shù)據(jù)已經(jīng)存入處理器L1 Cache,如果命中,SCU直接向請求方返回數(shù)據(jù);如果miss,SCU檢查先L2 cache,再不然訪問主存。

【ACP請求】
ACP一致性讀請求:當(dāng)ARUSER[0] == 1,ARCACHE[1] ==1,同時ARVALID有效時,產(chǎn)生ACP一致性讀請求。這時,SCU強制一致性。
當(dāng)ARUSER[0] == 0 或ARCACHE[1] ==0,同時ARVALID有效時,產(chǎn)生ACP非一致性讀請求。這時SCU并不強制一致性,讀請求直接傳遞到可用的SCU AXI master口通向L2 Cache控制器或OCM。
ACP一致性寫請求:當(dāng)AWUSER[0] == 1且AWCACHE[1] == 1,同時AWVALID有效時,產(chǎn)生ACP一致性寫請求。這時SCU強制一致性,當(dāng)數(shù)據(jù)存在于某個Cortex-A9處理器中時,PS區(qū)域邏輯首先清除并invalidate相應(yīng)CPU的數(shù)據(jù)。當(dāng)數(shù)據(jù)不在任一個CPU,或者當(dāng)已經(jīng)清掉、invalidate,則寫請求通過某個Cortex-A9處理器的AXI主機接口發(fā)起到L2 Cache或主存。
當(dāng)AWUSER[0] ==0 或AWCACHE[1] ==0,同時AWVALID有效時,產(chǎn)生ACP非一致性寫請求。這時SCU不強制一致性,寫請求直接傳遞到某個可用的SCU AXI master port。
【ACP的限制】
一致性訪存不允許互斥訪問;
一致性訪存不允許鎖定訪問;
寫傳輸,以length = 3, size = 3, 寫選通11111111會引起CPU cache line破壞;
通過ACP連續(xù)訪問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
電子發(fā)燒友App




評論