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