MPU進化,多核異構處理器有多強?

ningmengzier發表於2022-11-21

隨著市場對 嵌入式裝置功能需求的提高,市面上出現了整合嵌入式處理器和微控制器的主控 方案,以兼顧效能和效率。

在實際應用中,嵌入式處理器和微控制器之間需要進行大量且頻繁的資料交換,如果採用低速序列介面,則資料傳輸效率低,這將嚴重影響產品的效能;而如果採用高速並口,則佔用管腳多,硬體成本將會增加。

為解決這一痛點,各大 晶片公司陸續推出了兼具A核和M核的多核異構處理器,如 NXPi.MX8系列、瑞薩的RZ/ G2L系列以及TI的 AM62x系列等等。雖然這些處理器的品牌及效能有所不同,但多核通訊原理基本一致,都是基於暫存器和中斷傳遞訊息,基於共享記憶體 傳輸資料

以配電終端產品為例,A核負責通訊和顯示等 人機互動任務,M核負責取樣和保護等對實時性要求較高的任務,雙核間互動模擬量、開關量和錄波檔案等多種資訊,A核+M核的方案既滿足了傳統取樣保護功能,又支援多種介面通訊及新增容器等功能,符合國家電網現行配電標準。

通訊過程整體架構說明

一、 硬體層通訊實現機制

透過實體記憶體DDR分配,將硬體層分為了兩部分:TXVring Buffer(傳送虛擬環狀緩衝區)和RXVring Buffer(接收虛擬環狀緩衝區);其中M核從TXVring區傳送資料,從RXVring區讀取接收資料,A核反之。

處理器支援訊息傳遞單元(MessagingUnit,簡稱MU)功能模組,透過MU傳遞訊息進行通訊和協調,晶片內的M7控制核和A53處理核透過透過暫存器中斷的方式傳遞 命令,最多支援4組MU雙向傳遞訊息,既可透過中斷告知對方資料傳遞的狀態,也可傳送最多4位元組資料,還可在低功耗模式下喚醒對方,是保證雙核通訊實時性的重要手段。

暫存器輸入輸出通訊模型

(1)CoreA寫入資料; (2)MU將Tx 空位清0,Rx滿位置1; (3)產生接收中斷請求,通知CoreB接收狀態暫存器中的接收器滿,可以讀取資料; (4)CoreB響應中斷,讀取資料; (5)CoreB讀完資料後,MU將Rx滿位清0,Tx空位置1; (6)狀態暫存器向CoreA生成傳送中斷請求,告知CoreB讀完資料,傳送暫存器空。

透過以上步驟,就完成了1次從CoreA向CoreB 傳遞訊息的過程,反之亦然。

二、驅動層Virtio下RPMsg通訊實現

Virtio是通用的IO虛擬化模型,位於裝置之上的抽象層,負責前後端之間的通知機制和控制流程,為異構多核間資料通訊提供了層的實現。

RPMsg訊息框架是 Linux系統基於Virtio快取佇列實現的主處理核和協處理核間進行訊息通訊的框架,當客戶端驅動需要傳送訊息時,RPMsg會把訊息封裝成Virtio快取並新增到快取佇列中以完成訊息的傳送,當訊息匯流排接收到協處理器送到的訊息時也會合理地派送給客戶驅動程式進行處理。

在驅動層,對A核,Linux採用RPMsg框架+Virtio驅動模型,將RPMsg封裝為了tty檔案供 應用層呼叫;在M核,將Virtio移植,並使用簡化版的RPMsg,因為涉及到互斥鎖和訊號量,最終使用Free RTOS完成過程的封裝,流程框圖如下方所示。

編輯切換為居中

新增圖片註釋,不超過 140 字(可選)

主處理核與協處理核資料傳遞流程圖

(1)Core0向Core1傳送資料,透過rpmsg_send函式將資料打包至Virtioavail連結串列區; (2)在avail連結串列尋找共享記憶體中空閒快取,將資料置於共享記憶體中; (3)透過中斷通知Core1資料到來,共享記憶體由avail連結串列區變至used區; (4)Core1收到中斷,觸發rpmsg的接收回撥函式,從used區獲取資料所在的共享記憶體的實體地址,完成資料接收; (5)透過中斷通知Core0資料接收完成,共享記憶體快取由used區變為avail區,供下次傳輸使用。

三、應用層雙核通訊實現方式

在應用層,對A核可使用open、write和read函式對 /dev下裝置檔案進行呼叫;對M核,可使用rpmsg_lite_remote_init、rpmsg_lite_send和rpmsg_queue_recv函式進行呼叫,不做重點闡述。

四、實際使用效果

透過程式實測,M核和A核可以批次傳輸大資料。同樣以配電產品為例——128點取樣的錄波檔案大約為43K,若透過傳統的序列匯流排傳輸方式,需要數秒才可完成傳輸。

而使用 i.MX8MP的雙核異構通訊方案,只需要不到0.5秒即可傳輸完成,資料傳輸效率提升數十倍!同時還避免了序列匯流排易受 EMC干擾的問題,提高了資料傳輸穩定性,簡化了應用程式設計,可滿足使用者快速開發的需求。

以上就是關於多核異構處理器中A核與M核通訊過程的解析, 飛凌多核異構平臺有NXP的i.MX8系列、瑞薩的RZ/G2L系列以及TI的AM62x系列等等,您可關注瞭解。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69989353/viewspace-2924237/,如需轉載,請註明出處,否則將追究法律責任。

相關文章