|
對于微處理界第一顆基于ARM? Cortex?-M7內核的高性能微控制器STM32F7系列,相信很多人對它不陌生了。比如STM32F7系列微控制器采用90nm工藝,工作頻率高達216MHz,采用6級超標量流水線,帶浮點單元,測試分數高達1000CoreMarks,性能提升的同時保持高能效,與STM32F4系列管腳高度兼容等等。
一般來講,基于ARM? Cortex?-M7內核的微控制器大多具有類似的處理器配置選項。通常包括:
一個64位AXI系統總線接口
一個指令和數據高速緩存
64位指令緊耦合存儲器(ITCM)
雙32位數據緊耦合存儲器(DTCM)
不過,本文從應用開發的層面側重介紹STM32F7系列有別于其它使用Cortex-M7內核的MCU的幾個特性。
首先,第一個重要區別在于STM32F7器件同時具有ITCM接口和AXI接口連接到片內閃存,如圖1所示。

圖1:基于ARMCortex-M7內核的系統級芯片的框圖
ITCM和AXI雙接口的存在使得執行代碼具備更大的靈活性。此外,STM32F7還有一個稱為自適應實時加速器(ARTAccelerator?)的內置閃存加速器,從而實現閃存零等待執行。使用TCM接口和ART加速器能能實現與帶緩存AXI接口相似的性能。同時用戶代碼也不會有高速緩存失效或高速緩存維護操作的麻煩。
利用ARTAccelerator加速引擎和高達16kB的L1緩存,STM32F7 MCU可實現ARM Cortex-M7的最佳性能。不管是從片內閃存還是外部存儲器執行代碼,在216MHz下均可達到1082 CoreMark/462 DMIPS。
第二個重大區別在于內部SRAM分布在幾個模塊中,以降低動態功耗,并允許從各個總線主機同時訪問不同的SRAM模塊,以優化帶寬和延遲。
此架構的一個典型應用實例就是人機界面,在人機界面中,音頻和圖形數據與系統RAM之間的傳輸必須同時進行。
第三個就是它的高級浮點單元。STM32F7系列器件具有一個高性能的單或雙精度浮點單元(FPU),支持所有ARM單或雙數據處理指令和數據類型。FPU在需要浮點數學精度的許多應用中提供了優勢,包括環路控制、音頻處理、音頻解碼和數字濾波等。
當然它還有個額外優勢,那就是將某些功能的執行或處理從CPU分流到FPU,使CPU用于其他任務。它支持雙精度,因此更易于使用雙精度浮點指令的基于PC的數學軟件。
第四,STM32F7MCU最有特色的設計之一是它們的智能系統架構,它使用兩個子系統,如圖2所示:

圖2:STM32F7微控制器的總線矩陣
AXI-to-multi-AHB橋將AXI4協議轉換成AHB-Lite協議
multi-AHB總線矩陣管理主機之間的訪問仲裁
該仲裁使用循環調度算法保障主機對從機的訪問,即使多個高速外設同時工作,也能實現同時訪問并高效運行。
最后,不得不提它的L1高速緩存。STM32F7嵌入了指令和數據高速緩存,當從片上或片外存儲器讀取代碼和數據時可彌補插入等待的時間,從而提高性能。當然,如果出現高速緩存失效和高速緩存行填充,此時讀取高速緩存將無法保證數據的確定性。
由于可緩存存儲器不僅可以被CPU訪問,也可以被其他主機訪問(如DM),因此需要軟件維護操作。比如,訪問物理存儲器時,主機可能會讀出過期的數據,而更新的數據在CPU高速緩存中已經有效可用了。
為了避免這個問題,開發者編寫用戶代碼時可以采取以下措施:
當CPU以外的主機要對可緩存存儲器進行訪問操作之前,建議先進行高速緩存清除操作。這是為了確保CPU的最新數據被寫回到物理存儲器。
當CPU以外的主機對可緩存的存儲器更新數據后,在對該位置進行讀操作之前,CPU應該使高速緩存失效。這是為了確保從物理存儲器的直接讀取。
有時可以考慮無高速緩存操作。當一個可被緩存的存儲器被其它主機頻繁訪問時,可以配置該存儲器的不可緩存屬性從而防止數據的不一致問題發生。
|
|