FPGA實(shí)現(xiàn)多處理器解決方案
尋求高性能處理能力的嵌入式設(shè)計(jì)人員在成本、性能、功耗上,不可避免的面臨類似“百慕大三角”的困境,無法同時實(shí)現(xiàn)三者的最佳組合,而只能達(dá)到其中的兩個目標(biāo)。定制ASIC設(shè)計(jì)適用于那些能夠負(fù)擔(dān)得起時間、費(fèi)用和風(fēng)險的少數(shù)人,但是由于器件尺寸持續(xù)減小,而ASIC設(shè)計(jì)成本不斷攀升,完全定制設(shè)計(jì)受成本限制,能夠應(yīng)用的領(lǐng)域越來越少。
具有多個軟核處理器的FPGA嵌入式系統(tǒng)為嵌入式設(shè)計(jì)人員提供了強(qiáng)大的多種功能選項(xiàng),通過定制功能配置性能最佳的片內(nèi)系統(tǒng)不再是ASIC設(shè)計(jì)人員的專利?,F(xiàn)在,開發(fā)人員能夠趕在產(chǎn)品進(jìn)入最終測試之前,對其嵌入式系統(tǒng)性能特性進(jìn)行修改。開發(fā)人員還可以延長產(chǎn)品生命周期,將產(chǎn)品迅速推向市場,通過互聯(lián)網(wǎng)對硬件和軟件功能進(jìn)行遠(yuǎn)端升級。
盡管術(shù)語“多處理器”會使人聯(lián)想起學(xué)術(shù)文章中的“并行處理”一詞,實(shí)際商用的單器件多CPU則簡單明了得多。開始進(jìn)行一個新設(shè)計(jì)時,開發(fā)人員必須考慮一定的性能標(biāo)準(zhǔn)。多個軟核處理器之間的任務(wù)劃分具有很大的設(shè)計(jì)靈活性,實(shí)現(xiàn)了由于規(guī)范或競爭產(chǎn)品變化而進(jìn)行的最后一刻設(shè)計(jì)更改,同時能夠與這些性能標(biāo)準(zhǔn)保持同步。
多軟核處理器可作為一種分而治之的策略來提高系統(tǒng)整體性能,或者卸載現(xiàn)有處理器任務(wù)。設(shè)計(jì)人員通常采用400MHz~800MHz的分立處理器實(shí)現(xiàn)簡單和復(fù)雜的多種器件任務(wù)。采用多個軟核處理器,可根據(jù)時間和功耗要求,通過任務(wù)劃分,更高效的發(fā)揮處理能力,提供同樣甚至更好的整體性能。
單個FPGA中能夠?qū)崿F(xiàn)的軟核處理器數(shù)量僅受器件資源的限制(如,邏輯和存儲器資源)。例如,高密度FPGA可以含有幾百個軟核處理器,并且可以采用不同類型的軟核處理器,如16位或32位、性能最佳、邏輯面積最佳處理器等。
根據(jù)任務(wù)不同,編碼算法由多個處理器進(jìn)行分擔(dān)。專用處理器承擔(dān)對時間要求嚴(yán)的任務(wù),而要求不高的任務(wù)則由一個或多個其他CPU分擔(dān)。這種靈活性實(shí)現(xiàn)了任務(wù)的邏輯分組,能夠以較低的時鐘頻率和功耗實(shí)現(xiàn)較高的性能。
FPGA中的嵌入式處理器
ASIC設(shè)計(jì)人員對構(gòu)建定制器件進(jìn)行了多年的研究,因此,我們不難想象定制器件應(yīng)包含一組合適的外設(shè)、存儲器接口和處理功能。直到1990年后期,FPGA才能夠提供足夠的片內(nèi)存儲器、可編程邏輯等基本性能資源來實(shí)現(xiàn)經(jīng)濟(jì)可行的定制FPGA嵌入式處理器器件。現(xiàn)在,可直接使用專為FPGA設(shè)計(jì)的嵌入式IP功能(包括CPU、信號處理引擎、外設(shè)和標(biāo)準(zhǔn)通信接口等),與傳統(tǒng)分立的嵌入式器件相比,它具有成本和性能的雙重優(yōu)勢。
從本質(zhì)上看,設(shè)計(jì)人員對問題的劃分與在印刷電路板上構(gòu)建一個多處理器系統(tǒng)相類似。每一部分分配不同的任務(wù),一個處理器進(jìn)行一般的系統(tǒng)管理(風(fēng)扇監(jiān)控、人機(jī)接口、系統(tǒng)控制臺等),其他的則處理通信、信號處理、統(tǒng)計(jì)收集等系統(tǒng)任務(wù)。
多處理器方案將分立的處理器功能由電路板移到FPGA內(nèi)部,從而降低了器件整體成本,也同時減小了電路板尺寸。這種方案需要較少的互連,減少了處理器之間的信號布線。更多的低級處理器運(yùn)行在更低的時鐘頻率上,減少了電路板層數(shù)。
該方法還可以降低軟件設(shè)計(jì)成本,減少80%由于耗時的代碼編寫而造成的系統(tǒng)整體設(shè)計(jì)時間代價。如果任務(wù)能夠劃分給多個處理器,那么工程師就能夠直接迅速的進(jìn)行源代碼編寫、調(diào)試和維護(hù)。產(chǎn)品成熟時,由于可以方便的對源代碼進(jìn)行分析,因此代碼維護(hù)比較輕松。
多通道應(yīng)用
多通道應(yīng)用采用單芯片多處理器來滿足系統(tǒng)吞吐量要求,每個處理器專用于處理全部通道吞吐量的不同部分,它們運(yùn)行完全相同的源代碼,也可以根據(jù)系統(tǒng)要求靈活的改變算法。在有些情況下,加入主處理器來處理一般的系統(tǒng)管理任務(wù),如系統(tǒng)初始化、統(tǒng)計(jì)收集和錯誤處理等。
串行鏈接的處理器
系統(tǒng)結(jié)構(gòu)將一個鏈上的幾個處理器組合對待為更復(fù)雜流水線上的一級。每個CPU負(fù)責(zé)全部處理任務(wù)的一部分,共享數(shù)據(jù)存儲器(片外采用仲裁或?qū)S么鎯ζ鹘涌?片內(nèi)采用雙端口存儲器),將結(jié)果由一級的輸出傳向下一級的輸入。
處理器協(xié)同芯片
不管CPU是否在FPGA內(nèi)部,與FPGA連接的分立處理器和DSP芯片也可以使用硬件加速、外設(shè)擴(kuò)展和接口橋接等?,F(xiàn)在,可直接使用芯片間接口IP,實(shí)現(xiàn)對FPGA內(nèi)部外設(shè)、加速邏輯和I/O接口的外部訪問。
確定處理器性能
在應(yīng)用軟件還沒有明確時,很難確定嵌入式系統(tǒng)的處理器性能。業(yè)界標(biāo)準(zhǔn)會有一些幫助,但是在軟件完成之前,一切都具有不確定性。這使得設(shè)計(jì)人員非常謹(jǐn)慎,擔(dān)心低估性能要求,而選擇高于所需性能(價格也高)要求的器件。如果設(shè)計(jì)人員能夠準(zhǔn)確的預(yù)測所需性能,那么選擇處理器將變得非常簡單。這種預(yù)測要考慮對時間要求嚴(yán)的任務(wù)以及一個或多個低級任務(wù)所產(chǎn)生的負(fù)載對性能的要求。
基于FPGA的嵌入式系統(tǒng)提供靈活的性能,支持最后一刻更改,根據(jù)客戶要求來提升系統(tǒng)性能。將
含有大量計(jì)算的算法轉(zhuǎn)換為FPGA中的邏輯后,其運(yùn)行速度比微處理器或數(shù)字信號處理器實(shí)現(xiàn)的相同軟件算法快出幾個數(shù)量級。更重要的是,硬件資源可提供給對性能要求高的算法,從而降低了對高性能CPU的需求,并降低了時鐘頻率和功耗,簡化了電路板設(shè)計(jì)。[!--empirenews.page--]
擴(kuò)展指令集
多個處理器IP供應(yīng)商能夠擴(kuò)展處理器指令集,以包含在硬件中實(shí)施的專用算法,并在FPGA中實(shí)現(xiàn)。采用處理器常用的加載/存儲操作,數(shù)據(jù)可饋入到定制邏輯模塊中,成為處理器算法邏輯單元(ALU)的一部分。在有些情況下,定制指令能夠支持多周期操作,實(shí)現(xiàn)對FIFO和存儲器緩沖等其他系統(tǒng)資源的訪問。定制指令的典型應(yīng)用包括位處理、復(fù)雜的數(shù)值和邏輯運(yùn)算等。
依靠處理器加載和存儲操作,定制指令與采用通用ALU資源運(yùn)行同樣算法相比,具有明顯的性能優(yōu)勢。例如,64kbyte的循環(huán)冗余校驗(yàn)(CRC)以定制指令運(yùn)行時,運(yùn)行速度比軟件快出27倍1。不同的應(yīng)用具有不同的性能結(jié)果,但是總體上比單獨(dú)采用軟件快得多。
處理器IP供應(yīng)商不同,開發(fā)人員如何使用定制指令也各不相同。例如,在加入定制指令時,有的必須生成一個新的編譯器。然后,根據(jù)應(yīng)用標(biāo)準(zhǔn),這種定制編譯器導(dǎo)出定制指令調(diào)用。更簡單的方法是由用戶在其C源代碼中作為子程序來直接調(diào)用指令。由于軟件設(shè)計(jì)人員能夠更清楚的掌握何時使用定制指令,因此這種方法更自然一些。
提升系統(tǒng)性能的多種方法
其他提升系統(tǒng)整體性能的方法包括利用硬件加速(也稱為協(xié)處理器)、處理器協(xié)同芯片以及定制片內(nèi)系統(tǒng)等。
與定制指令不同,硬件加速器作為獨(dú)立的邏輯模塊直接從嵌入式CPU獲取指令,不需要CPU干預(yù),處理全部數(shù)據(jù)緩沖。一個簡單的模塊框圖包括帶有兩個1/2 DMA通道的處理模塊(一個讀取輸入數(shù)據(jù),另一個存儲結(jié)果)以及一個控制接口,用于CPU建立、啟動、停止以及工作中對各單元的輪詢等。這種體系結(jié)構(gòu)非常適合于對大塊數(shù)據(jù)的處理,此時,CPU加載數(shù)據(jù)并存儲結(jié)果成為性能瓶頸。
硬件加速器由于其固有的自治特性,能夠比軟件運(yùn)行任務(wù)提高幾個數(shù)量級的性能增益,因此加速功能通常在硬件中設(shè)計(jì)實(shí)現(xiàn)。
不管CPU是否在FPGA內(nèi)部,與FPGA連接的分立處理器和DSP協(xié)同芯片都可以使用硬件加速、擴(kuò)展外設(shè)以及接口橋接等?,F(xiàn)在,可直接使用芯片間接口IP,實(shí)現(xiàn)對FPGA內(nèi)部外設(shè)、加速邏輯和I/O接口的外部訪問。
總結(jié)
在FPGA中采用多個軟核處理器,根據(jù)時間和功耗要求劃分任務(wù),可高效使用處理能力,與分立處理器相比,具有相同甚至更高的整體性能。多個軟核處理器還可以用作分而治之的策略,來提升系統(tǒng)整體性能或者卸載現(xiàn)有處理器任務(wù),這種策略僅受目標(biāo)FPGA邏輯和存儲器資源的限制。
一類新的硬件開發(fā)工具、知識產(chǎn)權(quán)內(nèi)核以及FPGA體系實(shí)現(xiàn)了這些技術(shù)的主流應(yīng)用。在嵌入式領(lǐng)域,由于這些技術(shù)的成功,主要FPGA供應(yīng)商進(jìn)一步加大了開發(fā)和投入。在您下一個設(shè)計(jì)中,應(yīng)考慮如何應(yīng)用這些技術(shù)。