精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

多核異構中A核與M核通信過程

832065824 ? 來源: 汽車電子嵌入式 ? 2023-10-31 11:09 ? 次閱讀

前言

目前域控項目有的采用S32G這類多核異構的芯片,轉載一篇分析下多核異構中A核與M核通信過程的文章。

正文

一、 硬件層通信實現原理

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

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

現在越來越多的產品具有M core和A core的異構架構,既能達到M核的實時要求,又能滿足A核的生態和算力。比如NXP的i.MX8系列、瑞薩的RZ/G2L系列以及TI的AM62x系列等等。雖然這些處理器品牌及性能有所不同,但多核通信原理基本一致,都是基于寄存器和中斷傳遞消息,基于共享內存傳輸數據。

7841ad42-7799-11ee-939d-92fbcf53809c.png

通信過程整體架構說明

一、 硬件層通信實現原理

通過物理內存DDR分配,將硬件層分為了兩部分:TXVring Buffer(發送虛擬環狀緩沖區)和RXVring Buffer(接收虛擬環狀緩沖區);其中M核從TXVring區發送數據,從RXVring區讀取接收數據,A核反之。

處理器支持消息傳遞單元(MessagingUnit,簡稱MU)功能模塊,通過MU傳遞消息進行通信和協調,M核和A核之間通過寄存器中斷的方式傳遞命令,最多支持4組MU雙向傳遞消息,既可通過中斷告知對方數據傳遞的狀態,也可發送最多4字節數據,還可在低功耗模式下喚醒對方,是保證雙核通信實時性的重要手段。

下面看下完成了1次從CoreA向CoreB 傳遞消息的具體過程:

7859f852-7799-11ee-939d-92fbcf53809c.png

寄存器輸入輸出通信模型

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

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

virtio 是一個通用的 I/O 虛擬化框架,位于設備之上的抽象層,負責前后端之間的通知機制和控制流程,為異構多核間數據通信提供了層的實現。hypervisor 通過他模擬出一系列的虛擬化設備,例如:virtio-net、virtio-blk等,并使得這些設備在虛擬機內部通過 api 調用的方式變得可用。它包含4個部分:前端驅動、后端驅動、 vring 及通信間統一的接口。與其他的模擬 I/O 方式對比, virtio 減少了虛擬機的退出和數據拷貝,能夠極大地提高 I/O 性能。計算機中存在不同的總線標準,而 virtio 采用的是 pci 總線(當然也可以用其他總線來實現)。每一個 virtio 設備就是一個 pci 設備。

78661574-7799-11ee-939d-92fbcf53809c.png

virtio前端驅動

virtio 前端驅動位于 Linux 內核中,運行在虛擬機 VM,針對不同類型的設備有不同類型的驅動程序,包括virtio-net、virtio-blk、virtio-pci等,這些驅動程序與后端驅動交互的接口都是統一的。

virtio層

virtio層實現虛擬隊列接口,作為前后端通信的橋梁,不同類型的設備使用的虛擬隊列數量不同,例如 virtio-net 使用兩個虛擬隊列,一個用于接收,一個用于發送;virtio-blk 驅動僅使用一個虛擬隊列。虛擬隊列實際上被實現為跨越客戶機操作系統和 hypervisor 的銜接點,可以通過任意方式實現,前提是客戶機操作系統和 virtio 后端程序都遵循一定的標準,以相互匹配的方式實現它。

virtio-ring層

virtio-ring 是虛擬隊列的具體實現,其中實現了環形緩沖區(ring buffer),用于保存前端驅動和后端處理程序執行的信息,并且它可以一次性保存前端驅動的多次I/O請求,并且交由后端驅動去批量處理,最后實際調用宿主機中設備驅動實現物理上的I/O操作,這樣做就可以根據約定實現批量處理而不是客戶機中每次I/O請求都需要處理一次,從而提高客戶機與 hypervisor 信息交換的效率。

virtio后端驅動

virtio 后端驅動位于 qemu ,后端設備承擔的主體功能分為兩部分:

virtio后端設備的模擬;

依據virtio協議處理來自虛擬機端發送的請求。

在 QEMU 的實現中, virtio 設備是 QEMU 為虛擬機模擬的 PCI 設備,遵循 PCI-SIG 定義的 PCI 規范,具有配置空間、中斷配置等功能;virtio 后端驅動運行在宿主機中,用于實現 virtio 后端操作硬件設備,例如向內核協議棧發送一個數據包完成虛擬機對網絡數據的操作。

RPMsg消息框架是Linux系統基于Virtio緩存隊列實現的主處理核和協處理核間進行消息通信的框架,當客戶端驅動需要發送消息時,RPMsg會把消息封裝成Virtio緩存并添加到緩存隊列中以完成消息的發送,當消息總線接收到協處理器送到的消息時也會合理地派送給客戶驅動程序進行處理。

在驅動層,對A核,Linux采用RPMsg框架+Virtio驅動模型,將RPMsg封裝為了tty文件供應用層調用;在M核,將Virtio移植,并使用簡化版的RPMsg,因為涉及到互斥鎖和信號量,最終使用FreeRTOS完成過程的封裝,流程框圖如下方所示。

787ade1e-7799-11ee-939d-92fbcf53809c.png

主處理核與協處理核數據傳遞流程圖

(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函數進行調用,不做重點闡述。從整體架構上看,關系如下:

787f3982-7799-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    18927

    瀏覽量

    227247
  • 芯片
    +關注

    關注

    450

    文章

    49636

    瀏覽量

    417211
  • 通信
    +關注

    關注

    18

    文章

    5880

    瀏覽量

    135323
  • 瑞薩
    +關注

    關注

    33

    文章

    22274

    瀏覽量

    85513
  • 多核異構
    +關注

    關注

    0

    文章

    16

    瀏覽量

    5432

原文標題:A核與M核異構通信過程解析

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    創龍帶您解密TI、Xilinx異構多核SoC處理器間通訊

    促進進程間通信的模塊。通信包括消息傳遞、流和鏈接列表。這些模塊提供的服務和功能可用于異構多核SoC處理器ARM和DSP核心之間的
    發表于 09-08 09:39

    通信(IPC)解決方案

    ;Processor 1:從Share Memory的指定地址讀取消息;Processor 1:處理接收到的消息。總結核間通信廣泛應用于TI的多核異構處理器,本文介紹了TI
    發表于 11-03 07:26

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

    秒即可傳輸完成,數據傳輸效率提升數十倍!同時還避免了串行總線易受EMC干擾的問題,提高了數據傳輸穩定性,簡化了應用編程,可滿足用戶快速開發的需求。以上就是關于多核異構處理器A
    發表于 11-21 09:45

    A+M通信過程解析

    數據傳輸效率低,這將嚴重影響產品的性能;而如果采用高速并口,則占用管腳多,硬件成本將會增加。為解決這一痛點,各大芯片公司陸續推出了兼具AM
    發表于 11-23 15:09

    多核異構-雙高速率CAN-FD評測

    forlinx_m7_tcm_firmware.bin;放到**/run/media/mmcblk2p1/**目錄下。詳細操作可看上篇文章《【玩轉多核異構M
    發表于 02-17 15:37

    多核異構-M程序的啟動、編寫和仿真

    文章,小編就將以飛凌嵌入式的OKMX8MP-C開發板為例,為大家介紹多核異構處理器M程序的啟動配置、程序編寫和實時仿真的過程。飛凌嵌入式O
    發表于 02-21 16:08

    多核異構處理器對共享外設和資源的調配方法

    多核異構CPU,多個內核就如同多個大腦,而外設和內存等資源就如同手足,那么多個大腦該如何控制手足才能保證它們正常有序地運行呢?以NXP i.MX8M Plus處理器的
    發表于 03-10 11:54

    S32G274有沒有MA共享的PFE相關的例程或文檔?

    使用hif2與PFE模塊通信。1、看文檔說多核PFE中有Main driver和Secondary driver,但是PFE的MCAL沒有相關配置。如何配置二級驅動程序? 2、M
    發表于 03-24 07:48

    Arm+RISC-V雙異構前景如何?

    2021航順HK32MCU新品發布會上,航順介紹了自主研發的雙異構MCU-HK32U1xx9系列產品。Arm Cortex-M3大負責主運算;RISC-V小
    發表于 04-14 10:06

    專用M4F+四A53,異構多核AM62x讓工業控制“更實時、更安全”

    Cortex-M4F + Cortex-A53異構多核給工業控制帶來何種意義?創龍科技SOM-TL62x工業核心板搭載TI AM62x最新處理器,因其Cortex-
    發表于 06-15 17:18

    專用R5F+雙A53,異構多核AM64x讓工控“更實時”

    Cortex-R5F + Cortex-A53異構多核, 給工控帶來何種意義? 創龍科技SOM-TL64x工業核心板搭載TI AM64x最新工業處理器,因其CortexR5F + 雙
    發表于 08-23 15:34

    嵌入式異構多核的片上通信架構設計

    為了克服目前嵌入式異構多核處理器的片上通信架構無法提供高效的異構多核協作架構的問題,本文分析了嵌入式異構
    發表于 12-04 11:30 ?26次下載

    基于SystemC的異構多核通信模塊設計

    通過分析異構多核體系片上處理通信,采用共享存儲區實現
    發表于 01-20 15:01 ?10次下載

    基于SystemC的異構多核通信模塊設計

    通過分析異構多核體系片上處理通信,采用共享存儲區實現
    發表于 07-17 16:51 ?19次下載

    MPU進化,多核異構處理器有多強?AM通信過程解析

    數據傳輸效率低,這將嚴重影響產品的性能;而如果采用高速并口,則占用管腳多,硬件成本將會增加。為解決這一痛點,各大芯片公司陸續推出了兼具AM
    的頭像 發表于 11-21 14:42 ?835次閱讀
    MPU進化,<b class='flag-5'>多核</b><b class='flag-5'>異構</b>處理器有多強?<b class='flag-5'>A</b><b class='flag-5'>核</b>與<b class='flag-5'>M</b><b class='flag-5'>核</b><b class='flag-5'>通信</b><b class='flag-5'>過程</b>解析