在FPGA中置入可配置的32位處理器增加設(shè)計靈活度
2011-07-27
作者:Navanee Sundaram 賽靈思公司
嵌入式系統(tǒng)與桌面PC結(jié)構(gòu)非常不同,,但其底層技術(shù)發(fā)展卻是一樣的,而且遵循著類似發(fā)展趨勢,。當桌面PC轉(zhuǎn)向64位架構(gòu)來滿足不斷增長的存儲器要求時,嵌入式系統(tǒng)也由于同樣的原因快速轉(zhuǎn)向32位處理器,。桌面/服務器計算市場主要圍繞x86架構(gòu),,大多數(shù)創(chuàng)新和差異都在系統(tǒng)級,如雙核,、四核或多核架構(gòu),、集成圖像處理器單元和存儲器控制器等等。同樣,,嵌入式系統(tǒng)則主要圍繞簡單的32位RISC處理器,,多核架構(gòu)、集成外設(shè)以及可配置處理等系統(tǒng)級進展,,使得設(shè)計人員能夠快速適應不斷變化的應用要求,。
根據(jù)iSuppli的研究報告,2007年32位微控制器(MCU)市場將超過8位MCU市場,。如圖1所示,, 32位MCU市場的增長速度超過了半導體市場其它部分的增長速度,而8位MCU市場的份額過去幾年時間里則有所下降,。
這一趨勢的主要推動力是嵌入式系統(tǒng)中軟件內(nèi)容和復雜性不斷增加,,因此直接產(chǎn)生的后果是需要更寬的存儲器總線(32位)來滿足軟件程序所使用的代碼和數(shù)據(jù)要求。與傳統(tǒng)微處理器不同,32位處理器不需要分段等存儲器管理技巧就可以處理更大的存儲器空間,,因此使編程更容易,。8位MCU必須采用難學難用的匯編語言來滿足小存儲器空間限制(少于32K字節(jié)),而許多32位嵌入式應用則可以利用C/C++來編程,,從而提高了嵌入式軟件開發(fā)人員生產(chǎn)力,。更為重要的是,越來越多的操作系統(tǒng)(實時和非實時)都提供現(xiàn)成的驅(qū)動程序和軟件庫,,從而使軟件開發(fā)人員能夠集中于應用本身的開發(fā),。
集成 = 更低的價格
在摩爾定律的指引下,越來越細的硅工藝線寬使得32位嵌入式解決方案的成本不斷降低,,從而可以滿足更多的應用對價格的要求,。此外,集成外設(shè)和片上存儲器進一步降低了元器件和總體材料清單成本,。通過集成針對手機和游戲機等垂直應用而優(yōu)化的外設(shè),,許多器件的價格大大降低,直接推動了市場增長,。
價格壓力還導致只能在這些系統(tǒng)中集成一組固定的外設(shè),,因此通常的外設(shè)組合是面向大批量應用的。然而,,不可能有適用于所有應用的萬能器件,,因此許多小批量、中等規(guī)模甚至大批量應用都無法直接利用成品集成解決方案,。其結(jié)果是設(shè)計人員必須采用額外的芯片來擴展外設(shè),、分流處理器的負擔,或增加膠合邏輯,。這也是可配置處理解決方案產(chǎn)生的原因,。
可配置32位處理
根據(jù)Gartner Dataquest的報告,如圖2所示,,基于FPGA嵌入式處理方案的應用正在增長,到2010年,,約40%的FPGA設(shè)計將包括嵌入式處理器,。因為能夠定制滿足特定應用或產(chǎn)品的要求,嵌入系統(tǒng)設(shè)計人員正在越來越多地采用基于FPGA的可配置處理解決方案,。這一方法的主要優(yōu)點是可通過集成降低成本,,同時還可實現(xiàn)產(chǎn)品在市場上的差異化。
通過選擇同一FPGA系列中的不同器件,,或者將設(shè)計重新適配到新的FPGA器件中,,能夠針對更高性能、更低成本、或者不同的I/O標準進行個性設(shè)計,。這樣可以降低設(shè)計過時的風險,,從而保證設(shè)計是未來可用的。對于必須有長使用壽命的產(chǎn)品(如汽車或工業(yè)應用),,這是特別關(guān)鍵的一個因素,。
可配置處理系統(tǒng)的配置(或定制)的層面包括:
處理器配置:
- 乘法器、除法器,、浮點單元以及其它,。
- 指令或數(shù)據(jù)緩沖配置。
- 協(xié)處理器或硬件加速器,。
系統(tǒng)配置
- I/O外設(shè)選擇,、定制、DMA選擇,。
- 存儲器外設(shè)選擇,、定制。
應用配置
- RTOS選擇,、定制,。
- 應用庫/中間件定制。
許多產(chǎn)品都包括需要某種形式網(wǎng)絡(luò)或通信接口的嵌入式系統(tǒng),。由于以太網(wǎng)成本低,、幾乎無處不在,并且可以利用TCP/IP等因特網(wǎng)協(xié)議連接因特網(wǎng),,因此以太網(wǎng)是目前在嵌入式產(chǎn)品中應用最廣泛的網(wǎng)絡(luò)接口之一,。根據(jù)目標應用的不同,網(wǎng)絡(luò)子系統(tǒng)的要求變化也相當大,。簡單的遠程控制和監(jiān)控應用只需要每秒數(shù)千bps的傳輸能力,,而高端存儲可視頻應用則需要持續(xù)的Gbps吞吐能力。
為簡單起見,,我們將使用TCP載荷吞吐能力做為性能比較的主要指標,。表1列出了一些典型應用以及相應的TCP/IP載荷吞吐能力要求。
表一,、示例應用的網(wǎng)絡(luò)吞吐量要求
例子應用 |
吞吐量要求 |
工業(yè)控制/監(jiān)視 |
< 1 Mbps |
安全/監(jiān)控 |
10-50 Mbps |
廣播質(zhì)量視頻流 |
50-500 Mbps |
可配置的嵌入式網(wǎng)絡(luò)
基于FPGA的處理解決方案提供的強大靈活性允許您根據(jù)需要開啟或禁止處理器,、IP內(nèi)核以及軟件平臺的高級功能,并且可以對許多獨立參數(shù)進行精細調(diào)整,,直到在軟件一級滿足應用的要求,。此外,利用建模工具可以識別任何性能關(guān)鍵的軟件功能并將其分流至適當?shù)挠布铀倨骰騾f(xié)處理器來完成,。
讓我們來分別看一下可利用IP內(nèi)核滿足典型應用性能要求的三種以太網(wǎng)子系統(tǒng)的例子,。每種設(shè)計具有不同的系統(tǒng)架構(gòu):包括處理器配置,、Ethernet MAC IP配置以及存儲器接口。此外,,這些例子還突出了可與這些硬件子系統(tǒng)配合使用的不同TCP/IP軟件棧,。由于硬件構(gòu)建模塊和軟件層都是可定制的,因此您可以根據(jù)應用的需要對這些系統(tǒng)進行增減,。
簡化以太網(wǎng)子系統(tǒng)
對于遠程監(jiān)視或控制應用中所需要的簡單網(wǎng)絡(luò)接口來說,,如圖3所示的最小化網(wǎng)絡(luò)子系統(tǒng)就足夠了。在此類應用中,,TCP/IP性能要求較低(< 1 Mbps),,因此LwIP(簡化版因特網(wǎng)協(xié)議棧)這樣的小TCP/IP堆棧(不需要RTOS實時操作系統(tǒng))就足夠了。
這可以使用不間斷的Ethernet Lite IP在簡單的查詢模式下實現(xiàn),。全部軟件,,包括簡單的應用層,可全部存儲在FPGA中的本地存儲器中,。如圖3中所示,,其它需要的I/O接口,RS-232 UART和GPIO,,可以增加到基本子系統(tǒng)中,。
通過對圖3中的最小系統(tǒng)做一定的修改,可以實現(xiàn)更高TCP/IP吞吐能力(10-50 Mbps),,并轉(zhuǎn)向如圖4所示的更為典型的10/100以及網(wǎng)解決方案,。
主要的變化有:
- 為Ethernet MAC增加直接存儲器訪問(DMA)引擎,實現(xiàn)中斷驅(qū)動,。
- 為系統(tǒng)增加外部存儲器,,為處理器增加緩存。
- 更復雜的TCP/IP棧,,如Linux (Clinux)系統(tǒng)TCP/IP協(xié)議棧,。
對于需要100 Mbps以上TCP/IP吞吐能力的應用,可以考慮硬IP或軟IP內(nèi)核方式提供的三模式以太網(wǎng)MAC(圖5),。為獲得高端應用所需要的500+ Mbps吞吐能力,,需要同時配合使用環(huán)形緩沖(scatter/gather)DMA(SGDMA)等高級DMA技術(shù),以及數(shù)據(jù)對齊引擎(DRE)和校驗和分流(CSO)等FPGA硬加速器,。
為滿足千兆以太網(wǎng)對更高數(shù)據(jù)吞吐率的需求,,可能需要更高性能的嵌入式(硬)處理器或FPGA上實現(xiàn)的可定制軟處理器,以及更大的緩沖容量,、如16 kbit指令和數(shù)據(jù)緩存。就軟件平臺來說,,Linux,、VxWorks、Integrity和QNX等軟件平臺中的高級TCP/IP棧支持諸如零拷貝和校驗和旁路等功能。
包括硬件和軟件在內(nèi)的許多因素都會影響到TCP性能,,并進而影響系統(tǒng)TCP吞吐能力,。這些因素包括:
處理器,包括頻率,、功能和緩存:
頻率:TCP/IP協(xié)議通常需要將載荷從用戶緩存拷貝到協(xié)議??刂频木彺妫缓笤賹⑵淇截惖揭蕴W(wǎng)MAC的FIFO中去,。這些存儲器拷貝操作有些是以軟件方式完成的,,因此需要處理器的處理周期。同時處理器還參與TCP校驗和的計算,,計算過程中需要將整個數(shù)據(jù)包從存儲器讀出,。更快的處理器配合更快的存儲器能在更短的時間內(nèi)完成這些操作,從而可以保持較高的數(shù)據(jù)速率,。
功能:TCP/IP協(xié)議棧需要對數(shù)據(jù)包的頭和載荷進行訪問處理,。做為頭處理的一部分,典型的訪問包括讀取頭信息的特定位,。因此每個數(shù)據(jù)包的處理過程都需要相當多的移位操作,。此外在處理每個數(shù)據(jù)包時都需要進行乘法操作。在可配置的處理器中,,必須開啟完成移位或乘法的指令才能獲得更高的性能,。
緩存:數(shù)據(jù)包從以太網(wǎng)MAC被拷貝到存儲器中之后,將會通過TCP/IP協(xié)議棧的不同層,。然后TCP/IP棧中的數(shù)據(jù)包處理代碼會被執(zhí)行,。將所有代碼和數(shù)據(jù)包讀到緩存中會大大提高處理器效率并提高以太網(wǎng)帶寬。
存儲器:存儲器訪問時間和延遲對于系統(tǒng)性能有巨大的影響,。典型應用中,,TCP/IP應用并不存儲在本地存儲器中,程序和數(shù)據(jù)存儲在外部存儲器中,。存取數(shù)據(jù)和指令所花費的時間對于性能有很大影響,。存儲器因素通常與緩存大小有關(guān)。提高指令和數(shù)據(jù)緩存大小有助于減輕外部存儲器延遲和存取時間所帶來的影響,。
以太網(wǎng)MAC:在FPGA中實現(xiàn)的以太網(wǎng)MAC外設(shè)提供了很大的靈活性,,特別是在工作模式(無DMA與SGDMA)、數(shù)據(jù)包FIFO深度,、DRE支持,、CSO支持以及巨型幀(jumbo frame)支持方面。每一項都會影響到MAC所需要的資源,,以及其能夠從處理器分流的功能多少,,從而對整體性能造成影響,。
TCP/IP協(xié)議棧:靈活的優(yōu)化TCP/IP協(xié)議棧是影響系統(tǒng)性能的重要因素。對硬件CSO和零拷貝API(數(shù)據(jù)不需要從應用拷貝到協(xié)議棧緩存)以及可配置棧選項等TCP/IP棧功能的支持可幫助提高系統(tǒng)性能,。
信息多少:信息(應用數(shù)據(jù))的大小是影響性能的另一個因素,。隨著信息減少,TCP/IP協(xié)議頭(如TCP,、IP和以太網(wǎng)頭)的開銷增加,,從而會減小總體的數(shù)據(jù)載荷吞吐能力。
大多數(shù)應用對于價格,、性能和功能都有一組基本的要求,。當為特定應用設(shè)計產(chǎn)品時,設(shè)計人員必須在這些要求之間進行正確的折衷,,然而,,為了適應市場條件,這些要求在產(chǎn)品生命周期內(nèi)可能會發(fā)生變化,。采用靈活可配置的平臺能夠在不改變設(shè)計平臺或供應商的情況下根據(jù)需要對這些要求進行重新平衡,。