用雙MicroBlaze監(jiān)控汽車應(yīng)用
基于軟核處理器的多處理器片上系統(tǒng)(MPSoC)設(shè)計正日益風(fēng)靡于嵌入式系統(tǒng)設(shè)計領(lǐng)域。為了向多個處理器提供一致的數(shù)據(jù),存儲區(qū)架構(gòu)和管理已成為設(shè)計工作中非常重要的組成部分。在原型汽車應(yīng)用中,我們準(zhǔn)備構(gòu)建一個雙MicroBlaze系統(tǒng),用于在兩個MicroBlaze上支持賽靈思(Xilinx)公司嵌入式處理器內(nèi)核Xilkernel。
在開發(fā)自主汽車原型轉(zhuǎn)向平臺前,我們根據(jù)Xilinx技術(shù)規(guī)范、參考設(shè)計和雙處理器設(shè)計套件,研究出一套通用的設(shè)計工作流和工藝。該設(shè)計結(jié)合了多種功能,比如:防碰撞、行車道檢測和自動停放。Xilkernel設(shè)計提供了諸如Posix線程這樣的庫函數(shù),可重復(fù)利用基于QNX的防碰撞應(yīng)用以及對其進(jìn)行分割。
緊密連接
我們構(gòu)建了一個緊密連接的處理器系統(tǒng),內(nèi)含兩個配置完全相同的MicroBlaze處理器,在Harvard架構(gòu)中,每個處理器都與一個16KB的局部塊RAM(BRAM)相連(圖1)。另外,這兩個處理器還與一個128MB的DDR存儲器模塊相連,用于存儲代碼和數(shù)據(jù)交換。Xilinx平臺工作室(XPS)Mutex內(nèi)核負(fù)責(zé)對兩個MicroBlaze共享的存儲器訪問進(jìn)行同步。兩個處理器還能通過一對快速單工鏈路(FSL)直接通信,F(xiàn)SL支持主/從和流水線處理器設(shè)計概念。采用FSL實(shí)現(xiàn)這兩個MicroBlaze的互聯(lián),而不采用XPS Mailbox實(shí)現(xiàn),可以提高性能,并降低資源耗用。
圖1:面向XtremeDSP開發(fā)平臺的雙MicroBlaze Xilkernel配置。
兩個定時器外設(shè)負(fù)責(zé)為Xilkernel的調(diào)度實(shí)現(xiàn)提供中斷源。開發(fā)階段的第一步,我們通過UART接口將激光掃描儀連接到系統(tǒng),為防碰撞系統(tǒng)提供目標(biāo)檢測。為以中斷控制器而非直接連接的時鐘中斷部署Xilkernel,我們在板支持包(BSP)設(shè)置中調(diào)整了與Xilkernel相關(guān)的參數(shù)sysintc_spec。
我們把兩個MicroBlaze連接到MicroBlaze調(diào)試模塊進(jìn)行調(diào)試,并通過microblaze_1的JTAG UART輸出ST.DIO。我們分析了系統(tǒng)的兩種實(shí)現(xiàn)方案,一種用XtremeDSP開發(fā)平臺搭配Spartan-3A DSP 1800A FPGA,另一種用ML605評估板搭配Virtex-6 XC6VLX240T FPGA。
存儲器和高速緩存架構(gòu)
多端口存儲器控制器(MPMC)通過Xilinx緩存鏈路(XCL)將Microblaze與外部DDR2存儲器相連,并分配直接存儲訪問。由于采用統(tǒng)一的存儲器架構(gòu),每個處理器具有相同的存儲延遲和訪問方式。我們?yōu)槊總€MicroBlaze配置了8KB指令和8KB數(shù)據(jù)緩存,均連接到單一MPMC PIM。這種布線方式可以讓我們將最多8個MicroBlaze關(guān)聯(lián)到一個MPMC。
單一MPMC地址總線連接和數(shù)據(jù)總線連接,會導(dǎo)致MPMC與外部存儲器之間出現(xiàn)數(shù)據(jù)流和取指瓶頸。但內(nèi)部的時間片輪轉(zhuǎn)仲裁,能夠保證所有請求都能順序訪問存儲器。另外,MicroBlaze還能通過處理器局部總線(PLB)保持與MPMC的連接,以提供對無緩存共享存儲區(qū)的訪問。
在多處理器環(huán)境中,確保數(shù)據(jù)高速緩存的一致性非常重要。因此,我們將外部存儲的地址范圍分為三段(圖2)。每個MicroBlaze占有自己的地址空間,而只有數(shù)據(jù)存儲在其特定的區(qū)域,XCL才會緩存數(shù)據(jù)。第三個地址空間提供一個獨(dú)立段,可通過PLB訪問,而用于交換未緩存的共享數(shù)據(jù)。通過在鏈接腳本中預(yù)定義變量,軟件工程師可以得到一個指向該段基址的指針。我們用寫通策略配置高速緩存,因?yàn)槿绻捎没貙懖呗裕幚矶鄠€寫訪問會導(dǎo)致更多延遲。
圖2:DMX系統(tǒng)的內(nèi)存印象圖。
連接器腳本的配置
連接器腳本的作用是,根據(jù)硬件設(shè)計信息,正確的板支持包和軟件應(yīng)用本身,來定義處理器系統(tǒng)的存儲分段。XPS工具負(fù)責(zé)為每個MicroBlaze的復(fù)位、中斷和異常向量分配固定段,這些向量將存儲在處理器的BRAM中。常用的方法是把.heap和.stack段也存儲在局部BRAM中,以便在執(zhí)行線程的時候快速訪問局部變量。
評論