軟件開發(fā)
MCAPI多核軟件開發(fā)
基于MCAPI的多核軟件開發(fā)方法
隨著技術(shù)的進步,電子產(chǎn)品更新?lián)Q代的速度越來越快。單純提高主頻來提升系統(tǒng)性能的方式已經(jīng)接近瓶頸,而使用多片處理器搭建系統(tǒng)又不符合產(chǎn)品的小型化要求。傳統(tǒng)的單核處理器已經(jīng)不能滿足日益增長的性能需求,能夠完成并行任務(wù)處理的多核處理器應運而生?,F(xiàn)代多核處理器主要依靠增加核數(shù)而不是頻率來提升性能,同時芯片的高集成度也帶來了資源調(diào)度和功耗等問題。隨著多核處理器并行度的增加,各類同構(gòu)、異構(gòu)多核處理器的出現(xiàn)使得軟件開發(fā)面臨著巨大的挑戰(zhàn)。如何在多核上高效地實現(xiàn)算法,如何合理地分配資源都是需要解決的問題。
一、多核DSP器件簡介
TMS320C6678是德州儀器公司(Texas Instruments,TI)在2010年推出的一款經(jīng)典的同構(gòu)多核數(shù)字信號處理器(Digital Signal Processor,DSP),包含8個DSP內(nèi)核,每個核在1.4GHz的最高工作頻率下性能可達到22.4G每秒浮點運算次數(shù)(FLoating—point Operations Per Second,F(xiàn)LOPS),支持Hyperlink等多種高速接口,可廣泛用于移動通信、醫(yī)療電子、高性能計算等領(lǐng)域。
核間通信(InterP rocessor Communication,IPC)以及核與外設(shè)的通信是多核軟件開發(fā)的關(guān)鍵所在。針對這一需求,德州儀器公司在其新一代Keystone架構(gòu)的處理器上提供了多核導航器,包括硬件隊列管理器和基于包的直接存儲訪問(Direct Memory Address,DMA),以實現(xiàn)核間高速數(shù)據(jù)傳輸。使用多核導航器進行核問通信,可以通過軟件對相應的控制寄存器進行讀寫和查詢實現(xiàn),也可通過內(nèi)部硬件進行事件觸發(fā)實現(xiàn),這種方式可大大簡化核間通信處理,但是仍存在缺點。一旦軟件拓撲結(jié)構(gòu)發(fā)生改變,或者需要調(diào)整核的運算負載來提升系統(tǒng)性能時,這部分工作量很大,而且應用受限于廠商。
二、多核通信應用程序接口概述
多核通信應用程序接口MCAPI(Muhicore Communications Application Program Interface)是由多核聯(lián)盟提出的基于消息傳遞的輕量級應用程序接口標準,特別適用于嵌人式系統(tǒng)處理器核間通信和同步。MCAPI的應用不受處理器核的數(shù)目、處理器架構(gòu)以及操作系統(tǒng)的限制,并且提供了源碼級的兼容性支持,可擴展性很強。相對于普通的多片處理器間通信來說,多核處理器的核間通信普遍要求低延遲、高帶寬。大部分多核處理器都包含片上存儲器或高速緩存(cache)。為了避免出現(xiàn)計算瓶頸,核間通信需要減少不必要的存儲器訪問。MCAPI中定義了域(domain)、節(jié)點(node)、端點(end.point)、通道(channe1)等關(guān)鍵概念。域是依賴于具體實現(xiàn)的,既可以是具有多個處理器核的單個芯片,也可以是板上的多個處理器。節(jié)點可以是線程、處理器或硬件加速器等,通??捎锰幚砥骱俗鳛楣?jié)點。端點是類似于套接字的通信點,一個節(jié)點通常包括多個端點。通道提供了一對端點之間的點到點的先人先出First In First Out,F(xiàn)IFO)存儲器用于通信,方向為單向的。
此外,MCAPI定義了3種通信基本類型:消息、包通道和標量通道。消息是最常用的通信類型,提供了端點之間收發(fā)數(shù)據(jù)的機制,支持優(yōu)先級動態(tài)調(diào)整,可用于同步、初始化和負載平衡。包通道和標量通道提供了輕量級的流通信機制,相應的程序開銷很小。
三、基于Poly—Platform工具的多核軟件開發(fā)流程
3.1Poly—Platform工具簡介
Poly—Platform是Poly Core公司提供的針對多核軟件開發(fā)的集成開發(fā)工具套件,包含Poly-Mapper、Poly-Generator、Poly—Messenger/MCAPI、Poly—Templates等功能模塊。采用該工具進行開發(fā)可以基于MCAPI標準建立應用程序節(jié)點,利用用戶圖形界面(Graphical User Interfaces,GUI1向?qū)ё詣由纱a,在幾乎不修改源代碼的基礎(chǔ)上,實現(xiàn)應用程序在同構(gòu)多核、異構(gòu)多核、多處理器等不同平臺上的靈活配置和擴展,不受限于廠商,應用前景廣闊。
3.2多核軟件開發(fā)流程
將Poly—Platform軟件使用插件方式集成到Eclipse軟件環(huán)境中后會在TI的Code Composer Studio開發(fā)環(huán)境下出現(xiàn)相應的菜單和選項,即可進行基于Poly—Platform的多核軟件開發(fā)。這里選擇TMS320C6678多核DSP器件進行開發(fā),并且以8個DSP核之間依次相連并傳遞數(shù)據(jù)的環(huán)形拓撲結(jié)構(gòu)為例描述開發(fā)流程。
(1)建立拓撲結(jié)構(gòu)。首先建立一個拓撲(Topology)工程,拓撲主要描述了應用程序在(多核)平臺上的映射關(guān)系。借助Poly—Mapper工具在建立工程后生成的拓撲映射文件中進行屬性設(shè)置,選擇處理器類型,設(shè)置節(jié)點個數(shù)為8(對應8個DSP核),名稱分別為N0一N7,操作系統(tǒng)為TI的DSP專用操作系統(tǒng)。然后在拓撲圖中繪制8個節(jié)點,并在每個節(jié)點中間繪制一條鏈路(1ink),得到環(huán)形結(jié)構(gòu)的8節(jié)點拓撲結(jié)構(gòu)圖。
(2)建立內(nèi)存映射文件并分配資源。建立內(nèi)存映射文件并分配若干個段(section1,設(shè)置其起始地址、大小、方向等參數(shù)。這些段分別用于內(nèi)存訪問區(qū)域(Memory Access Regions,MARs)和鏈路(1ink)。其中內(nèi)存訪問區(qū)域包括一些常用的資源池(poo1),如消息池、消息隊列池、數(shù)據(jù)池、等待池等,不同節(jié)點之間通過MARs共享資源可以提高資源利用效率,提升系統(tǒng)性能。
(3)在拓撲結(jié)構(gòu)圖中進行內(nèi)存映射。針對每一個節(jié)點(N0一N7),設(shè)置其可訪問的內(nèi)存訪問區(qū)域。然后,還需要對內(nèi)存訪問區(qū)域包含的每一個資源池進行參數(shù)設(shè)置,如起始地址等。同樣地,對鏈路也需要進行參數(shù)設(shè)置。
(4)建立節(jié)點工程。這里與常規(guī)的DSP開發(fā)流程基本一致,針對8個節(jié)點(對應處理器核)分別建立節(jié)點工程,然后需要將這8個節(jié)點工程與第一步建立的拓撲工程建立映射關(guān)系。
(5)編寫初始化代碼和配置文件。首先利用Poly—Generator工具將拓撲結(jié)構(gòu)圖轉(zhuǎn)化為基于拓撲定義的C語言和相應的頭文件,并存放到每個節(jié)點工程的工作目錄下。然后利用Polv—Template工具,按照軟件自帶的MCAPI模板,自動為每個節(jié)點工程生成節(jié)點初始化文件和硬件初始化文件。最后編寫TI專用的實時軟件組件Real Time Software Component,RTSC)配置文件和用于存儲器分配的連接器命令文件。
(6)編寫每個節(jié)點工程的主函數(shù)。主函數(shù)主要內(nèi)容包括調(diào)用節(jié)點初始化函數(shù),硬件初始化函數(shù),以及節(jié)點之間消息收發(fā)的函數(shù)(基于MCAPI)等。這些都可以利用Poly—Template工具提供的模板快速完成。
(7)編寫每個節(jié)點工程的應用程序。將用戶的算法進行代碼實現(xiàn)并加入節(jié)點工程,這一步與常規(guī)的DSP開發(fā)流程完全一致。
(8)建立目標配置文件和RTSC平臺。首先建立用于仿真調(diào)試的目標配置文件,然后建立RTSC平臺用于硬件配置,并將其加入節(jié)點工程。這些都是TI專用的文件。
(9)編譯、調(diào)試、運行。對每個節(jié)點工程進行編譯、調(diào)試、運行,觀察程序運行結(jié)果。注意不要編譯拓撲工程。
(10)程序性能分析和優(yōu)化。借助Poly—inspector工具提供的交互式報告環(huán)境,可以對多核軟件實現(xiàn)進行性能分析,方便用戶進行程序優(yōu)化和調(diào)整。
結(jié)論
當前計算環(huán)境變得越來越多元化,DSP、可編程邏輯器件(Field Programmable Gate Array,F(xiàn)PGA)、圖形處理器(Graphics Processing Unit,GPU)都具有較強的運算能力,并適用于不同的應用場合。多核處理器是當前的研究熱點,而高集成度的異構(gòu)多核處理器是未來的發(fā)展趨勢。基于多核的軟件開發(fā)始終是一個難點,給軟件開發(fā)人員帶來了巨大的挑戰(zhàn)。本文提出的基于MCAPI的多核軟件開發(fā)方法可應用于同構(gòu)多核、異構(gòu)多核以及多處理器平臺,通用性較強,不受廠商、處理器、操作系統(tǒng)的限制,可幫助用戶簡化軟件設(shè)計和優(yōu)化過程中的拓撲設(shè)計、運算負載平衡以及核間通信和資源分配等工作,顯著地提升開發(fā)效率。
以上就是我們深圳市組創(chuàng)微電子有限公司為您介紹的基于MCAPI的多核軟件開發(fā)方法。如果您有智能電子產(chǎn)品的軟硬件功能開發(fā)需求,可以放心交給我們,我們有豐富的電子產(chǎn)品定制開發(fā)經(jīng)驗,可以盡快評估開發(fā)周期與IC價格,也可以核算PCBA報價。我們是多家國內(nèi)外芯片代理商:松翰、應廣、杰理、安凱、全志、realtek,有MCU、語音IC、藍牙IC與模塊、wifi模塊。我們的擁有硬件設(shè)計與軟件開發(fā)能力。涵蓋了電路設(shè)計、PCB設(shè)計、單片機開發(fā)、軟件定制開發(fā)、APP定制開發(fā)、微信公眾號開發(fā)、語音識別技術(shù)、藍牙wifi開發(fā)等。還可以承接智能電子產(chǎn)品研發(fā)、家用電器方案設(shè)計、美容儀器開發(fā)、物聯(lián)網(wǎng)應用開發(fā)、智能家居方案設(shè)計、TWS耳機開發(fā)、藍牙耳機音箱開發(fā)、兒童玩具方案開發(fā)、電子教育產(chǎn)品研發(fā)。
- 返回頂部