近年來(lái),處理器性能越來(lái)越強(qiáng),無(wú)論是通用處理器還是嵌入式處理器,都進(jìn)入了多核處理器時(shí)代,多核處理器中,每個(gè)核心不能獨(dú)立工作,需要協(xié)同工作才能充分發(fā)揮處理器的性能,也就是需要高效的核間通信(Inter-processor Communication)機(jī)制。核間通信的主要目標(biāo)是,充分利用硬件提供的機(jī)制,實(shí)現(xiàn)高效的核間通信,從而充分發(fā)揮Soc的整體性能。
核間通信(IPC)方案簡(jiǎn)介
TI J7 DRA8xx/TDA4xx、AM65xx、J6家族的處理器,基于異構(gòu)、可擴(kuò)展的架構(gòu)開(kāi)發(fā),拿TDA4VM的處理器來(lái)說(shuō),該處理器包含了TI DSP處理器(C66/C7x)、Cortex A72、Main域Cortex R5F、MCU域Cortex R5F、深度學(xué)習(xí)加速器MMA、圖形處理器GPU等核,屬于多核異構(gòu)的架構(gòu)。Cortex A72可用于通用計(jì)算、圖形處理器GPU用于3D圖像的加速、DSP可用于算法的加速、C7x/MMA可支持深度學(xué)習(xí)的處理、Cortex-R5F可用于外設(shè)的控制和圖像的前后處理等。多核異構(gòu)的優(yōu)點(diǎn)是采用適合的核做擅長(zhǎng)的事,再加上專用硬件加速器也可處理特定任務(wù),從而在性能、功耗和成本 上達(dá)到最佳平衡。
核間通信(IPC)從軟件的角度來(lái)講, IPC提供了運(yùn)行在處理器上的軟件接口,可供客戶調(diào)用,從而實(shí)現(xiàn)在多核處理器中核與核之間的通信。舉個(gè)例子來(lái)說(shuō),如圖1: TI Jacinto7軟件框架紫色框模塊所示,每個(gè)核上都運(yùn)行了IPC軟件模塊,從而實(shí)現(xiàn)了TDA4VM上不同核之間的核間通信。本文的后續(xù)部分將以TDA4VM為例說(shuō)明TI多核異構(gòu)處理器的核間通信方案,對(duì)于其它Jacinto7處理器、AM65xx、J6 等多核環(huán)境中的處理器之間進(jìn)行通信采用的是同樣的方式。
圖1 : TI Jacinto7 TDA4VM SW Framework
Jacinto7 TDA4VM處理器的核間通信(IPC)框圖如圖2所示,TDA4VM擁有2*A72、6*R5F、2*C66、C7x等核,不同核之間的通信依賴IPC(Inter-Processor Communication)。同時(shí),同一種類型的多個(gè)核心又可以運(yùn)行在不同的模式,比如A72可以運(yùn)行的SMP模式,雙核R5F可以運(yùn)行在Lockstep或Split Mode上,因此,核間通信方案要充分利用硬件提供的機(jī)制,實(shí)現(xiàn)高效的核間通信,從而充分發(fā)揮Soc的整體性能。
圖2 : TI Jacinto7 TDA4VM IPC Framework
TDA4VM硬件提供了Mailbox硬件模塊,Mailbox中斷機(jī)制允許軟件在兩核之間建立通信通道,這種機(jī)制類似于郵箱工作的方式。每個(gè)核都有一個(gè)專屬的郵箱,郵件就是消息內(nèi)容,通過(guò)指定接收方,就可以將消息傳遞到指定核。Mailbox硬件上支持中斷,因此指定核有消息時(shí),就會(huì)收到中斷,然后開(kāi)始處理郵件,即處理消息。這就是Mailbox的工作方式。
TDA4VM的IPC方案,基于Mailbox的實(shí)現(xiàn)的方式的不同,常用的核間通信方式有兩種。
基于RPMSG的核間通信解決方案,適合小塊數(shù)據(jù)消息傳遞。
基于Share Memory核間通信解決方案,適合大塊數(shù)據(jù)傳輸。
基于RPMSG的核間通信解決方案
RPMSG定義了通信協(xié)議的接口,采用RPMSG協(xié)議,基于Mailbox模塊的核間通信方案如圖3所示,該方案?jìng)鬟f消息時(shí),首先需要將消息拷貝到的共享內(nèi)存中(VRing),然后,利用Mailbox將消息傳遞到指定核上。
圖3: RPMSG的核間通信解決方案
上圖中術(shù)語(yǔ)和縮寫(xiě)解釋如下:
Term | Definition or Explanation |
IPC | Inter-Processor Communication |
MailBox | IP which provides queued interrupt mechanism for communication channel |
VRing | Ring Buffer in shared memory |
Rpmsg | queue on local memory |
核間通信步驟如下所述(步驟如紅色圈中所示):
發(fā)送端發(fā)送: Core1核調(diào)用Rpmsg_send發(fā)送消息,應(yīng)用程序復(fù)制到兩個(gè) CORE 之間使用的 VRING。此后,IPC 驅(qū)動(dòng)程序?qū)?VRING ID 發(fā)布到硬件指定Mailbox的通道中。
接收端接收:Core2核上Mailbox觸發(fā)中斷,在core2的 ISR 中,它提取 VRING ID,然后根據(jù) VRING ID,檢查該 VRING 中的任何消息。
接收端發(fā)送: Core2核應(yīng)用程序調(diào)用Rpmsg_send發(fā)送消息,應(yīng)用程序復(fù)制到兩個(gè) CORE之間使用的 VRING。此后,IPC驅(qū)動(dòng)程序?qū)?VRING ID 發(fā)布到硬件Mailbox 的另外一個(gè)通道中。
發(fā)送端接收: Core1核上Mailbox觸發(fā)中斷,在core1的ISR中,它提取 VRING ID,然后根據(jù) VRING ID,檢查該 VRING 中的任何消息。
注意事項(xiàng):
RPMSG傳輸消息最大512 Byte。
Performance 參考這里.
基于Share Memory核間通信解決方案
基于Share Memory的核間通信解決方案,底層仍然使用的是硬件的模塊Mailbox,如圖4所示所示,發(fā)送和接受采用的是不同的Mailbox通道。 每一組核與核之間使用的都是指定的Mailbox通道。同時(shí),Share Memory的解決方案需要分配指定Share Memory用以核間通信共享數(shù)據(jù)。 Share Memory是一段memory 能夠被多個(gè)核所所訪問(wèn),所以名為共享內(nèi)存,在TDA4VM中,這段內(nèi)存通常是來(lái)自于DDR中的一個(gè)數(shù)據(jù)段。共享內(nèi)存在核間通信方案中,一個(gè)核可以將數(shù)據(jù)寫(xiě)入共享內(nèi)存,Mailbox可以將內(nèi)存指針傳遞到另一個(gè)核上,另一個(gè)核可以拿到內(nèi)存指針后,直接從Share Memory讀取數(shù)據(jù),這一個(gè)過(guò)程不需要經(jīng)過(guò)數(shù)據(jù)的拷貝,因此,非常高效,適合大數(shù)據(jù)量的傳輸。
圖4: 基于Share Memory的核間通信解決方案
核間通信步驟如下所述:
Processor 1: 拷貝數(shù)據(jù)到Share Memory中的指定位置;
Processor 1:將Share Memory中的指定地址等信息寫(xiě)入Mailbox的指定通道;
Processor 2:接收Mailbox 中斷和消息的地址;
Processor 2:從Share Memory中的指定地址讀取消息;
Processor 2: 處理接收到的消息,并準(zhǔn)備回復(fù)消息;
Processor 2:拷貝數(shù)據(jù)到Share Memory 指定位置;
Processor 2:將Share Memory中的指定地址等信息寫(xiě)入Mailbox的指定通道;
Processor 1:接收Mailbox 中斷和消息的地址;
Processor 1:從Share Memory中的指定地址讀取消息;
Processor 1:處理接收到的消息。
總結(jié)
核間通信廣泛應(yīng)用于TI的多核異構(gòu)處理器,本文介紹了TI多核異構(gòu)處理器的兩種核間通信(IPC)的兩種解決方案?;赗PMSG的核間通信解決方案采用了RPMSG協(xié)議,廣泛應(yīng)用于Soc內(nèi)部核之間的消息傳遞,比如不同核對(duì)Camera的控制。適用于消息量小的類型。基于Share Memory核間通信解決方案,由于消息傳遞過(guò)程不需要數(shù)據(jù)拷貝,數(shù)據(jù)傳輸更高效,因此,適用于大塊的數(shù)據(jù)傳輸,TDA4VM內(nèi)部圖像數(shù)據(jù)的傳輸就來(lái)自于這種方案。另外,需要注意的時(shí),TDA4VM劃分了主域核MCU域,MCU域的軟件通常單獨(dú)開(kāi)發(fā),對(duì)于MCU與其它核的通信采用CDD IPC軟件模塊,基于Share Memory核間通信解決方案可適用有大數(shù)據(jù)量傳輸?shù)男枨蟆?/span>
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19432瀏覽量
231282 -
ti
+關(guān)注
關(guān)注
112文章
7988瀏覽量
212999 -
多核處理器
+關(guān)注
關(guān)注
0文章
109瀏覽量
19993 -
IPC
+關(guān)注
關(guān)注
3文章
352瀏覽量
52096
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于雙TDA4VM行泊一體方案
核間通信(IPC)解決方案
TI TDA4VM的汽車電子程序應(yīng)用案例
TDA4VM 處理器可以滿足現(xiàn)代車輛的計(jì)算需求
Jacinto7處理器攝像頭接入和ISP的處理能力
![<b class='flag-5'>Jacinto7</b><b class='flag-5'>處理器</b>攝像頭接入和ISP的<b class='flag-5'>處理</b>能力](https://file.elecfans.com/web2/M00/4E/E6/pYYBAGK9ViCAbItpAABBlgwNmhM578.png)
Jacinto 7核間通信解決方案
![<b class='flag-5'>Jacinto</b> <b class='flag-5'>7</b><b class='flag-5'>核</b><b class='flag-5'>間</b><b class='flag-5'>通信</b><b class='flag-5'>解決方案</b>](https://file.elecfans.com//web2/M00/98/E5/pYYBAGQSbouAPcRBAACB5f3yvxI001.png)
面向TI TDA4VM處理器的恩智浦PMIC解決方案
![面向TI <b class='flag-5'>TDA4VM</b><b class='flag-5'>處理器</b>的恩智浦PMIC<b class='flag-5'>解決方案</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TDA4VE TDA4AL TDA4VL Jacinto?處理器數(shù)據(jù)表
![<b class='flag-5'>TDA4</b>VE <b class='flag-5'>TDA4</b>AL <b class='flag-5'>TDA4</b>VL <b class='flag-5'>Jacinto</b>?<b class='flag-5'>處理器</b>數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TDA4VM Jacinto?處理器數(shù)據(jù)表
![<b class='flag-5'>TDA4VM</b> <b class='flag-5'>Jacinto</b>?<b class='flag-5'>處理器</b>數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Jacinto7 HS設(shè)備閃存解決方案
![<b class='flag-5'>Jacinto7</b> HS設(shè)備閃存<b class='flag-5'>解決方案</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Jacinto7 J721E/DRA829/TDA4VM評(píng)估模塊(EVM)
![<b class='flag-5'>Jacinto7</b> J721E/DRA829/<b class='flag-5'>TDA4VM</b>評(píng)估模塊(EVM)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論