ARM的BUS Matrix的作用

simoma發表於2020-12-25

ARM的BUSMatrix就是多主(Core,DMA等),多從(內部RAM,APB,外部匯流排等)的交聯和仲裁。目的是為了提高不同主機訪問不同外設情況下的頻寬,另外一個就是簡化BusMaster的協議設計。

比如,DMA把片內RAM的資料搬運到APB的外設,如序列口。同時Core從外部匯流排,SDRAM取指令。如果單一匯流排,那麼Core和DMA控制器就需要先仲裁匯流排控制權,然後才能訪問對應的外設,此時單一匯流排的頻寬不一定夠。如果用交聯矩陣,那麼Core可以直接訪問SDRAM,同時DMA訪問APB外設。

如果沒有用到多個BUSMaster,典型如DMA,LCD控制器等都沒有用到,具體看晶片,那麼Matrix不會有什麼效能提升;當然,如果用到了多個Slave,可能會有少量的效能損失,切換匯流排節點可能需要比直接仲裁更多的時間;(仲裁完成-傳輸資料vs仲裁完成-切換/保持匯流排節點-傳輸資料)
如果只用了一個Slave,比如Core,DMA,LCD都是隻訪問外部匯流排的SDRAM,實質上就是多主單從結構,效率或許會下降。至少看ATmel的手冊,切換連線節點好像需要一個MCK,單匯流排仲裁,不一定會需要這一個週期。
多主多從的應用才會得到較為明顯的好處。

在這裡插入圖片描述