資料來源
(1) amba bus spec翻譯.pdf
(2) ARM各種Memory類型理解_谷公子的博客-CSDN博客_arm memory [未閱]
(3) ARMv8官方手冊學習筆記(十二):Device memory - 知乎 (zhihu.com) [未閱]
(4) Cacheable VS Non-Cacheable_亦大樂諜的博客-CSDN博客 [未閱]
(5) Cache寫機制:Write-through與Write-back_skate的博客-CSDN博客_write-back [未閱]
3.傳輸
3.6等待傳輸
(1) slave需要更多時間提供或采樣數據,將使用HREADYOUT信號插入等待狀態; 在等待狀態中,master只能改變傳輸類型(HTRANS)和地址;
3.6.1等待狀態傳輸類型改變
(1) slave正在請求等待狀態,master不能改變傳輸類型,除非空閑傳輸或者固定長度突發傳輸的忙傳輸BUSY或者未定義長度突發傳輸的忙傳輸;
(2) 空閑傳輸:在等待狀態中,master允許將空閑狀態IDLE轉為非連續傳輸NON-SEQ;當HTRANS傳輸類型改為NON-SEQ,master必須保持HTRANS不變,直至HREADY信號為高電平;
注1:T1-T2,master插入地址為Y的空閑傳輸,slave將HREADY拉低請求等待狀態;
注2:T2-T3,master插入地址為Z的空閑傳輸;
注3:T3-T4,master將傳輸類型改為NON-SEQ,使用增量為4,初始地址為B的突發傳輸;
注4:T4-T6,master需要保持HTRANS不變;
(3) 固定長度的突發傳輸中的忙傳輸:這種情況下,master可以將類型由BUSY變為SEQ;當HTRANS變為SEQ后,master必須保持HTRANS不變直至HREADY信號為高電平;
注1:T1-T3,master在地址0x28處插入忙傳輸,slave拉低HREADY插入等待狀態;
(4) 未定義長度的突發傳輸中的忙傳輸:這種情況下,當HREADY為低電平時,master可以將傳輸類型改為任何其他的傳輸類型;如果改為SEQ,則繼續突發傳輸,改為IDLE或者NONSEQ,則終止突發傳輸;
3.6.2等待狀態地址改變
(1) 當slave正在請求等待狀態,master只可以改變與一次地址,除非在一次空閑傳輸或者一個錯誤響應后;
(2) 在空閑傳輸中:在一個等待傳輸中,master允許改變地址;當HTRANS改為NONSEQ后,master必須保持地址不變直至HREADY為高電平;
注1:在T1-T2,master插入空閑傳輸IDLE,slave將HREADY拉低插入等待狀態;
注2:T5-T6,單次突發傳輸結束,地址A數據完成,master開始地址B的第一拍,也就是地址階段; T6-T7,地址B數據完成並開啟下一拍;
(3) 在錯誤響應后:如果slave發出ERROR響應,當HREADY為低電平時,master允許改變地址;
注1:T4-T5,slave回復ERROR;在T4-T5,master將傳輸類型改為IDLE;T4,slave回復ERROR且HREADY為低電平,master將地址改變為0xc0; T5,slave完成0x28的ERROR響應; T5-T6,slave完成地址0xc0的響應;
3.7保護控制protection control
(1) 保護控制信號HPROT提供總線訪問的額外信息,主要用於實現一些級別的保護;
(2) HPROT表明傳輸時一次取指令或者數據訪問,是特權模式還是普通用戶模式;對於有內存管理單元mmu的master,這些信號還表明當前訪問時cacheable的還是bufferable的;
(3) HPORT控制信號和地址總線有一樣的時序,但在整個突發傳輸中,它們必須保持不變;
3.8 存儲器類型
3.8.1數據或指令
(1) 所有傳輸都包含HPROT[0],該位有效表明是數據傳輸,失效則是取指操作;
(2) 規范推薦將該位設為高電平,除非已知是一次指令獲取;
3.8.2 非特權或特權
3.8.3 存儲器類型
(1) 下表中未列舉的組合是不允許出現的;
3.8.4設備存儲device memory要求
(1) Device-E可以提前應答;
(2) Device-nE必須最終目標應答;
注1:讀數據必須從最終目標中獲得;
注2:傳輸不能拆分或合並;
注3:讀不能預讀取prefetched或隨機執行;
注4:寫不能合並;
注5:來自同一個master和slave的所有傳輸必須保持有序;
3.8.5常規存儲normal memory要求
(1) non-cacheable memory;
(2) write through & write back;