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