近年來,處理器性能越來越強,無論是通用處理器還是嵌入式處理器,都進入了多核處理器時代,多核處理器中,每個核心不能獨立工作,需要協(xié)同工作才能充分發(fā)揮處理器的性能,也就是需要高效的核間通信(Inter-processor Communication)機制。核間通信的主要目標(biāo)是,充分利用硬件提供的機制,實現(xiàn)高效的核間通信,從而充分發(fā)揮Soc的整體性能。
核間通信(IPC)方案簡介
TI J7 DRA8xx/TDA4xx、AM65xx、J6家族的處理器,基于異構(gòu)、可擴展的架構(gòu)開發(fā),拿TDA4VM的處理器來說,該處理器包含了TI DSP處理器(C66/C7x)、Cortex A72、Main域Cortex R5F、MCU域Cortex R5F、深度學(xué)習(xí)加速器MMA、圖形處理器GPU等核,屬于多核異構(gòu)的架構(gòu)。Cortex A72可用于通用計算、圖形處理器GPU用于3D圖像的加速、DSP可用于算法的加速、C7x/MMA可支持深度學(xué)習(xí)的處理、Cortex-R5F可用于外設(shè)的控制和圖像的前后處理等。多核異構(gòu)的優(yōu)點是采用適合的核做擅長的事,再加上專用硬件加速器也可處理特定任務(wù),從而在性能、功耗和成本 上達到最佳平衡。
核間通信(IPC)從軟件的角度來講, IPC提供了運行在處理器上的軟件接口,可供客戶調(diào)用,從而實現(xiàn)在多核處理器中核與核之間的通信。舉個例子來說,如圖1: TI Jacinto7軟件框架紫色框模塊所示,每個核上都運行了IPC軟件模塊,從而實現(xiàn)了TDA4VM上不同核之間的核間通信。本文的后續(xù)部分將以TDA4VM為例說明TI多核異構(gòu)處理器的核間通信方案,對于其它Jacinto7處理器、AM65xx、J6 等多核環(huán)境中的處理器之間進行通信采用的是同樣的方式。
圖1 : TI Jacinto7 TDA4VM SW Framework
Jacinto7 TDA4VM處理器的核間通信(IPC)框圖如圖2所示,TDA4VM擁有2*A72、6*R5F、2*C66、C7x等核,不同核之間的通信依賴IPC(Inter-Processor Communication)。同時,同一種類型的多個核心又可以運行在不同的模式,比如A72可以運行的SMP模式,雙核R5F可以運行在Lockstep或Split Mode上,因此,核間通信方案要充分利用硬件提供的機制,實現(xiàn)高效的核間通信,從而充分發(fā)揮Soc的整體性能。
圖2 : TI Jacinto7 TDA4VM IPC Framework
TDA4VM硬件提供了Mailbox硬件模塊,Mailbox中斷機制允許軟件在兩核之間建立通信通道,這種機制類似于郵箱工作的方式。每個核都有一個專屬的郵箱,郵件就是消息內(nèi)容,通過指定接收方,就可以將消息傳遞到指定核。Mailbox硬件上支持中斷,因此指定核有消息時,就會收到中斷,然后開始處理郵件,即處理消息。這就是Mailbox的工作方式。
TDA4VM的IPC方案,基于Mailbox的實現(xiàn)的方式的不同,常用的核間通信方式有兩種。
基于RPMSG的核間通信解決方案,適合小塊數(shù)據(jù)消息傳遞。
基于Share Memory核間通信解決方案,適合大塊數(shù)據(jù)傳輸。
基于RPMSG的核間通信解決方案
RPMSG定義了通信協(xié)議的接口,采用RPMSG協(xié)議,基于Mailbox模塊的核間通信方案如圖3所示,該方案傳遞消息時,首先需要將消息拷貝到的共享內(nèi)存中(VRing),然后,利用Mailbox將消息傳遞到指定核上。
圖3: RPMSG的核間通信解決方案
上圖中術(shù)語和縮寫解釋如下:
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ù)制到兩個 CORE 之間使用的 VRING。此后,IPC 驅(qū)動程序?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ù)制到兩個 CORE之間使用的 VRING。此后,IPC驅(qū)動程序?qū)?VRING ID 發(fā)布到硬件Mailbox 的另外一個通道中。
發(fā)送端接收: Core1核上Mailbox觸發(fā)中斷,在core1的ISR中,它提取 VRING ID,然后根據(jù) VRING ID,檢查該 VRING 中的任何消息。
注意事項:
RPMSG傳輸消息最大512 Byte。
Performance 參考這里.
基于Share Memory核間通信解決方案
基于Share Memory的核間通信解決方案,底層仍然使用的是硬件的模塊Mailbox,如圖4所示所示,發(fā)送和接受采用的是不同的Mailbox通道。 每一組核與核之間使用的都是指定的Mailbox通道。同時,Share Memory的解決方案需要分配指定Share Memory用以核間通信共享數(shù)據(jù)。 Share Memory是一段memory 能夠被多個核所所訪問,所以名為共享內(nèi)存,在TDA4VM中,這段內(nèi)存通常是來自于DDR中的一個數(shù)據(jù)段。共享內(nèi)存在核間通信方案中,一個核可以將數(shù)據(jù)寫入共享內(nèi)存,Mailbox可以將內(nèi)存指針傳遞到另一個核上,另一個核可以拿到內(nèi)存指針后,直接從Share Memory讀取數(shù)據(jù),這一個過程不需要經(jīng)過數(shù)據(jù)的拷貝,因此,非常高效,適合大數(shù)據(jù)量的傳輸。
圖4: 基于Share Memory的核間通信解決方案
核間通信步驟如下所述:
Processor 1: 拷貝數(shù)據(jù)到Share Memory中的指定位置;
Processor 1:將Share Memory中的指定地址等信息寫入Mailbox的指定通道;
Processor 2:接收Mailbox 中斷和消息的地址;
Processor 2:從Share Memory中的指定地址讀取消息;
Processor 2: 處理接收到的消息,并準備回復(fù)消息;
Processor 2:拷貝數(shù)據(jù)到Share Memory 指定位置;
Processor 2:將Share Memory中的指定地址等信息寫入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)部核之間的消息傳遞,比如不同核對Camera的控制。適用于消息量小的類型?;赟hare Memory核間通信解決方案,由于消息傳遞過程不需要數(shù)據(jù)拷貝,數(shù)據(jù)傳輸更高效,因此,適用于大塊的數(shù)據(jù)傳輸,TDA4VM內(nèi)部圖像數(shù)據(jù)的傳輸就來自于這種方案。另外,需要注意的時,TDA4VM劃分了主域核MCU域,MCU域的軟件通常單獨開發(fā),對于MCU與其它核的通信采用CDD IPC軟件模塊,基于Share Memory核間通信解決方案可適用有大數(shù)據(jù)量傳輸?shù)男枨蟆?/span>
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19329瀏覽量
230134 -
ti
+關(guān)注
關(guān)注
112文章
7985瀏覽量
212548 -
多核處理器
+關(guān)注
關(guān)注
0文章
109瀏覽量
19929 -
IPC
+關(guān)注
關(guān)注
3文章
349瀏覽量
51947
發(fā)布評論請先 登錄
相關(guān)推薦
評論