• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      面向嵌入式異構(gòu)平臺的高實時通信中間件設(shè)計

      2023-05-29 09:24:44李路野丁琳琳黎賀
      電子技術(shù)與軟件工程 2023年7期
      關(guān)鍵詞:共享內(nèi)存拷貝中間件

      李路野 丁琳琳 黎賀

      (南京電子技術(shù)研究所 江蘇省南京市 210039)

      為了適應(yīng)未來裝備支持新功能、新算法快速迭代和應(yīng)用的需求,要求應(yīng)用軟件與底層操作系統(tǒng)和硬件解耦合,通信中間件屏蔽了底層分布式異構(gòu)硬件環(huán)境的差異,提供統(tǒng)一標準的通信接口,已經(jīng)成為雷達開放式體系架構(gòu)的核心組成部分[1]。

      雷達信息處理領(lǐng)域?qū)崟r性要求很高,多一次數(shù)據(jù)的拷貝都可能會帶來單幀數(shù)據(jù)時延的增加。為了最小化數(shù)據(jù)傳輸帶來的時延,本文提出了一種零拷貝方法設(shè)計面向嵌入式異構(gòu)平臺的通信中間件。同時,為了支持應(yīng)用靈活部署在不同節(jié)點上,應(yīng)用層采用同一種通信接口實現(xiàn)了節(jié)點內(nèi)、節(jié)點間的高實時通信。

      1 國內(nèi)外研究現(xiàn)狀

      公共對象請求代理體系結(jié)構(gòu)(CORBA, Common Object Request Broker Architecture)規(guī)范[2]由對象管理組織(OMG, Object Management Group)提出,于1991年頒布了1.0 版本。CORBA 技術(shù)用于提供分布式對象之間的互操作性,支持信息交換,獨立于硬件平臺、編程語言和操作系統(tǒng)。不過CORBA 標準過于復雜,并沒有大范圍流行。

      2004年,OMG 組織提出了數(shù)據(jù)分發(fā)服務(wù)(DDS,Data Distribution Service)規(guī)范[3],它是在CORBA 和HLA 等標準的基礎(chǔ)上,制定的分布式系統(tǒng)實時通信中間件技術(shù)規(guī)范。DDS 模型建立了共享數(shù)據(jù)空間的概念,數(shù)據(jù)發(fā)布者發(fā)布的數(shù)據(jù)可以被任何應(yīng)用使用。數(shù)據(jù)的發(fā)布者和訂閱者之間解耦合,無需知道彼此是否存在,也不用關(guān)注底層通信實現(xiàn)細節(jié),具有以下通信特點:

      (1)可擴展性,新的用戶可以很容易地加入系統(tǒng)中,而系統(tǒng)本身不需要做任何改動;

      (2)匿名性,信息生產(chǎn)者和消費者互相不向?qū)Ψ奖┞蹲约旱纳矸菪畔ⅲ?/p>

      (3)多點通信,一個事件可以同時被發(fā)送到多個信息消費者;

      (4)可配置通信,以數(shù)據(jù)為中心來進行數(shù)據(jù)分發(fā),并將資源狀況、對資源的期待程度、網(wǎng)絡(luò)狀況等都用QoS 參數(shù)來配置,大大增強了通信的實時性和靈活性。如圖1 所示。

      圖1:DDS 發(fā)布訂閱機制

      劉巍等[4]對國產(chǎn)化實時通信中間件DDS 在X86、PPC T4240 和國產(chǎn)化華睿2 號處理平臺上的性能進行了針對性的優(yōu)化,其中X86 平臺平均性能為美國同類產(chǎn)品RTI DDS 的2 倍。

      DDS 目前的收數(shù)接口和發(fā)數(shù)接口標準決定了其發(fā)數(shù)需要等數(shù)據(jù)發(fā)完或?qū)?shù)據(jù)拷貝到發(fā)數(shù)緩沖區(qū),收數(shù)需要將數(shù)據(jù)拷貝到用戶指定地址空間。在某些數(shù)據(jù)傳輸時延要求極為嚴苛的場景下,DDS 難以滿足實際需求。

      2 系統(tǒng)架構(gòu)

      面向嵌入式平臺的高實時通信中間件系統(tǒng)架構(gòu)主要包括底層適配層、通用層、用戶接口層,如圖2 所示。

      圖2:通信中間件系統(tǒng)架構(gòu)

      通信中間件系統(tǒng)架構(gòu)自底向上包括:

      (1)底層適配層:該層主要對DSP、CPU 等不同硬件平臺上用到的SRIO、UDP 等通信協(xié)議進行封裝。

      (2)通用層:信息庫模塊作為服務(wù)器節(jié)點,所有的發(fā)布訂閱信息都在信息庫模塊中完成握手匹配;通用發(fā)布、訂閱注冊模塊則是支持應(yīng)用往信息庫發(fā)送注冊信息。

      (3)用戶接口層:該層參考DDS 規(guī)范接口,提供通用的基于發(fā)布訂閱機制收發(fā)數(shù)的接口。

      本文工作的設(shè)計亮點在于為用戶的收發(fā)提供了兩對接口,發(fā)數(shù)接口包括preWrite 和write,其中preWrite是從發(fā)數(shù)緩沖區(qū)先申請一塊空間,將未來要發(fā)的數(shù)據(jù)放在其中,處理過程的目的地址可直接使用該地址,減少了一次數(shù)據(jù)拷貝;write 接口則是等要發(fā)的數(shù)準備好之后調(diào)用。收數(shù)接口包括read 和postRead,其中read 是獲取數(shù)據(jù)地址,當用戶使用完之后,調(diào)用postRead 釋放數(shù)據(jù)所占用的地址空間,減少了一次數(shù)據(jù)從緩沖區(qū)拷貝到用戶地址空間的操作。

      3 節(jié)點內(nèi)基于共享內(nèi)存的通信

      在CPU 或DSP 的單個節(jié)點內(nèi)部,兩個不同應(yīng)用之間利用通信中間件進行數(shù)據(jù)傳輸時,底層可采用共享內(nèi)存的方式,其收發(fā)數(shù)流程如圖3 和圖4 所示。

      圖3:共享內(nèi)存發(fā)數(shù)流程

      圖4:共享內(nèi)存收數(shù)流程

      對于共享內(nèi)存通信,每個CPU/DSP 節(jié)點內(nèi)部有一塊數(shù)據(jù)緩沖區(qū)DataBuf 用于存放應(yīng)用間待收發(fā)的數(shù)據(jù);每個主題對應(yīng)一個地址緩沖區(qū)AddrFifo,發(fā)端把數(shù)據(jù)準備好后,將數(shù)據(jù)首地址和長度寫入AddrFifo,收端則從AddrFifo 中獲取數(shù)據(jù)地址和長度。

      基于共享內(nèi)存的收發(fā)數(shù)過程中緩沖區(qū)狀態(tài)變化過程如圖5 所示。

      (1)緩沖區(qū)狀態(tài)1 表示在調(diào)用memPreWrite 之前,數(shù)據(jù)緩沖區(qū)的空間未被占用;

      (2) 緩沖區(qū)狀態(tài)2 是指在發(fā)數(shù)應(yīng)用調(diào)用memPreWrite 之后,數(shù)據(jù)緩沖區(qū)DataBuf 分配了一塊空間(陰影區(qū)域),表示該空間已分配,不能被其它應(yīng)用使用;

      (3)緩沖區(qū)狀態(tài)3 是指發(fā)數(shù)應(yīng)用將數(shù)據(jù)已經(jīng)寫入DataBuf(灰色區(qū)域);

      (4)緩沖區(qū)狀態(tài)4 是發(fā)數(shù)應(yīng)用在調(diào)用memWrite 后,將對應(yīng)的數(shù)據(jù)緩沖區(qū)首地址和長度寫入主題對應(yīng)的地址緩沖區(qū)AddrFifo 中;

      (5)緩沖區(qū)狀態(tài)5 是收數(shù)應(yīng)用調(diào)用memRead 接口讀取地址緩沖區(qū)AddrFifo,并按照其中的首地址和長度去數(shù)據(jù)緩沖區(qū)DataBuf 中獲取數(shù)據(jù)并使用;

      (6)緩沖區(qū)狀態(tài)6 是指收數(shù)應(yīng)用在使用完數(shù)據(jù)后調(diào)用memPostRead 釋放對DataBuf 灰色區(qū)域的占用。

      通過上述緩沖區(qū)狀態(tài)變化過程分析,數(shù)據(jù)從在應(yīng)用A 中產(chǎn)生到應(yīng)用B 中使用,沒有經(jīng)歷過數(shù)據(jù)拷貝,真正做到了零拷貝數(shù)據(jù)傳輸。而傳統(tǒng)的數(shù)據(jù)收發(fā)接口,即便同樣是基于共享內(nèi)存,發(fā)數(shù)應(yīng)用至少要將數(shù)據(jù)拷貝到發(fā)數(shù)緩沖區(qū),然后收數(shù)應(yīng)用將數(shù)據(jù)拷貝到應(yīng)用申請的地址空間,至少多出兩次數(shù)據(jù)拷貝時間。

      4 DSP節(jié)點間基于Rapid IO的通信

      在兩個DSP節(jié)點之間,數(shù)據(jù)收發(fā)采用Rapid IO協(xié)議,節(jié)點間的收發(fā)數(shù)流程如下。

      (1)收發(fā)端基于主題進行開窗等初始化操作,窗口大小可配置,窗口地址由通信中間件統(tǒng)一管理;初始化時發(fā)端啟動發(fā)數(shù)任務(wù),收端啟動收數(shù)任務(wù)。

      (2)發(fā)端所在節(jié)點包含一個統(tǒng)一的數(shù)據(jù)緩沖區(qū)DataBuf_send 和地址緩沖區(qū)AddrFifo,如圖6 所示。

      圖6:發(fā)數(shù)端的部件調(diào)用接口過程和發(fā)數(shù)任務(wù)流程

      1.首先在數(shù)據(jù)緩沖區(qū)申請一段空間(srioPreWrite),存放將要發(fā)送的數(shù)據(jù),真實數(shù)據(jù)前會由中間件添加一個包頭,包括要發(fā)送的目的SRIO 號;

      2.待數(shù)據(jù)放入數(shù)據(jù)緩沖區(qū)后,將該段數(shù)據(jù)的首地址和長度放入地址緩沖區(qū)AddrFifo 內(nèi)(srioWrite);

      3.發(fā)數(shù)任務(wù)通過讀取地址緩沖區(qū)AddrFifo 中的地址列表逐個發(fā)數(shù),發(fā)數(shù)的參數(shù)除了數(shù)據(jù)首地址和長度,還包括數(shù)據(jù)包頭中數(shù)據(jù)的目的SRIO;

      4.發(fā)數(shù)完成后,會緊接著發(fā)送一個門鈴給收端。

      (3)收端對應(yīng)每個發(fā)數(shù)節(jié)點有獨立的收數(shù)緩沖區(qū)DataBuf_recv_i,(收數(shù)緩沖區(qū)直接在收窗映射的空間內(nèi)創(chuàng)建,不再額外申請)對應(yīng)每一個訂閱的主題各有一個地址緩沖區(qū)AddrFifo_j,如圖7 所示。

      圖7:收數(shù)端收數(shù)過程

      1.收端在收到門鈴之后,響應(yīng)門鈴服務(wù)函數(shù)將門鈴號和門鈴值存放在DoorBellFifo 中,收數(shù)任務(wù)監(jiān)測DoorBellFifo,通過門鈴來源SRIO 號判斷收到的數(shù)據(jù)在哪個收數(shù)緩沖區(qū);

      2.讀取收到的數(shù)據(jù)包頭,獲取該數(shù)據(jù)對應(yīng)的主題信息,將該段數(shù)據(jù)的首地址和長度存入相應(yīng)主題在收數(shù)節(jié)點上對應(yīng)的地址緩沖區(qū);

      3.部件通過srioRead 獲取AddrFifo_j 中相應(yīng)數(shù)據(jù)的首地址和長度;

      4.數(shù)據(jù)使用完畢后,通過srioPostRead 釋放數(shù)據(jù)空間。

      DSP 節(jié)點間基于Rapid IO 的通信時,兩個節(jié)點上緩沖區(qū)的狀態(tài)變化過程如圖8 所示。

      圖8:節(jié)點間通信時緩沖區(qū)狀態(tài)

      在CPU 節(jié)點間通常采用UDP 網(wǎng)絡(luò)傳輸協(xié)議,整個通信過程與上文所屬DSP 節(jié)點間基于Rapid IO 的通信中間件設(shè)計原理基本一致,文中不再重復描述。

      5 總結(jié)

      針對雷達信息處理低時延需要,本文提出了一種嵌入式平臺高實時通信中間件設(shè)計,其主要具有2 個特點:

      (1)從接口形式上來說,將收數(shù)和發(fā)數(shù)接口分別從一個設(shè)計為一對,確保要發(fā)送的數(shù)據(jù)直接在發(fā)數(shù)緩沖區(qū)中產(chǎn)生,接收的數(shù)據(jù)直接在接收緩沖區(qū)中使用,真正做到數(shù)據(jù)零拷貝、降低時延;

      (2)從覆蓋的底層傳輸協(xié)議來說,支持節(jié)點內(nèi)的共享內(nèi)存和節(jié)點間的Rapid IO 傳輸,并且可以做到節(jié)點內(nèi)和節(jié)點間傳輸協(xié)議的自適應(yīng),節(jié)省傳輸開銷。

      猜你喜歡
      共享內(nèi)存拷貝中間件
      通過QT實現(xiàn)進程間的通信
      唐氏綜合征是因為“拷貝”走樣了
      RFID中間件技術(shù)及其應(yīng)用研究
      電子制作(2018年14期)2018-08-21 01:38:10
      基于VanConnect中間件的設(shè)計與開發(fā)
      電子測試(2018年10期)2018-06-26 05:54:02
      基于PCI總線的多處理器協(xié)同機制研究
      科技風(2017年20期)2017-07-10 18:56:06
      中間件在高速公路領(lǐng)域的應(yīng)用
      QNX下PEX8311多路實時數(shù)據(jù)采集的驅(qū)動設(shè)計
      電子世界(2014年21期)2014-04-29 06:41:36
      一種高效RTAI 共享內(nèi)存管理層的研究與實現(xiàn)*
      一種支持智能環(huán)境構(gòu)建的中間件
      小小拷貝工.最快Windows拷貝工具
      山阳县| 东台市| 莱西市| 图木舒克市| 松溪县| 怀柔区| 昌乐县| 无锡市| 富裕县| 莱芜市| 昂仁县| 长武县| 昌图县| 城口县| 航空| 黄山市| 天镇县| 车险| 临澧县| 武鸣县| 环江| 容城县| 朝阳县| 仙游县| 临漳县| 建湖县| 特克斯县| 西充县| 普洱| 如皋市| 德惠市| 米易县| 兴业县| 绿春县| 从江县| 云安县| 陕西省| 沐川县| 保靖县| 冕宁县| 滦平县|