0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

可編程網(wǎng)絡(luò)發(fā)展歷史:FPGA是定制計(jì)算領(lǐng)域的不二選擇

454398 ? 來源:網(wǎng)絡(luò)交換FPGA ? 作者:網(wǎng)絡(luò)交換FPGA ? 2020-10-09 16:51 ? 次閱讀

最近有朋友問,公眾號為什么起名叫網(wǎng)絡(luò)交換FPGA?今天這篇文章就來回答一下。我們將從網(wǎng)絡(luò)交換的歷史講起,也正如機(jī)器學(xué)習(xí)也趕上了ASIC工藝發(fā)展才引起革命性的變化一樣。技術(shù)發(fā)展的歷程中,總有那些看似不相關(guān)的技術(shù)結(jié)合起來,結(jié)果導(dǎo)致翻天覆地的變化。我覺得網(wǎng)絡(luò)交換與FPGA就是屬于這樣的兩種技術(shù),必將會給整個(gè)行業(yè)帶來革命性的變化。

前兩天華為公布了單端口800Gbps的方案,而在FPGA領(lǐng)域,ISSCC2020會議上,Xilinx公司則發(fā)布了單通道112Gbps的高速串口。

華為單端口800Gbps的光口,Xilinx發(fā)布的單通道112Gbps的高速串口,一家是世界上目前最大的通信設(shè)備商,另一家則是世界上最大的FPGA廠商,正因?yàn)橐恍┶ぺぶ械脑蜃叩脑絹碓浇?00Gbps光口中所使用的技術(shù),就是8個(gè)112Gbps的高速串行通道綁定而實(shí)現(xiàn)的。FPGA與網(wǎng)絡(luò)交換的淵源,讓我從可編程網(wǎng)絡(luò)的歷史說起。

可編程網(wǎng)絡(luò)的歷史

1、基于小型計(jì)算機(jī)的路由器(1969年至1990年代中期)
分組交換網(wǎng)絡(luò)上的第一個(gè)路由器可能是1969年ARPANET上的接口消息處理器(IMP)。IMP論文中描述的IMP是在Honeywell DDP-516微型計(jì)算機(jī)上實(shí)現(xiàn)的。在今天的術(shù)語中,這種路由器被稱為軟件路由器,因?yàn)樗亲鳛橥ㄓ糜?jì)算機(jī)之上的軟件實(shí)現(xiàn)的。

在小型計(jì)算機(jī)之上實(shí)現(xiàn)路由器的這種方法足以滿足當(dāng)時(shí)所需的適度轉(zhuǎn)發(fā)速率。例如,IMP論文報(bào)告說,IMP的最大吞吐量約為700 kbit/s,足以在兩個(gè)方向上服務(wù)于多條50 kbit/s的線路。此類基于微型計(jì)算機(jī)的路由器也非常出色:可編程路由器的功能僅需升級微型計(jì)算機(jī)上的轉(zhuǎn)發(fā)軟件即可。

這種使用小型計(jì)算機(jī)構(gòu)建生產(chǎn)路由器的方法一直持續(xù)到1990年代中期。1970年代著名的軟件路由器例子是David Mills的Fuzzball路由器。1980年代最著名的例子是Noel Chiappa的C網(wǎng)關(guān),這是MIT初創(chuàng)公司Proteon 的基礎(chǔ),以及William Yeager的“夜間運(yùn)貨”多協(xié)議路由器,這是斯坦福初創(chuàng)公司思科系統(tǒng)公司的基礎(chǔ)。

到1990年代中期,由于互聯(lián)網(wǎng)和萬維網(wǎng)的迅速采用,軟件已無法滿足對更高鏈接速度的需求。瞻博網(wǎng)絡(luò)的M40路由器是1998年硬件路由器的早期示例。M40包含用于實(shí)現(xiàn)路由器的數(shù)據(jù)平面的專用芯片以及用于實(shí)現(xiàn)路由器的控制平面的控制處理器。正如我們在第一章中所描述的那樣,自1990年代中期以來,最快的路由器主要由專用硬件構(gòu)成,因?yàn)橛布I(yè)化是維持鏈路速度逐年提高的唯一方法。


圖1:自1969年ARPANET上的第一臺路由器以來,軟件路由器的總?cè)萘?。直?990年代中期,軟件路由器才夠用。但是,從那時(shí)起,最快的路由器主要是固定功能的設(shè)備,這些設(shè)備是由專用的非可編程硬件構(gòu)建而成的,與最好的軟件路由器相比,這些路由器的性能提高了10-100倍。

2、主動網(wǎng)絡(luò)(1990年代中期)
1990年代中期,有源網(wǎng)絡(luò)得到了發(fā)展,這種方法提倡網(wǎng)絡(luò)是可編程的或“有源的”,以允許在網(wǎng)絡(luò)基礎(chǔ)架構(gòu)中部署新服務(wù)。主動網(wǎng)絡(luò)至少有兩種方法。首先,可編程路由器方法,它允許網(wǎng)絡(luò)運(yùn)營商以受限方式對路由器進(jìn)行編程。其次,封裝方法,其中最終主機(jī)會將程序作為封裝嵌入到數(shù)據(jù)包中,然后由路由器執(zhí)行。

主動網(wǎng)絡(luò)主要與膠囊方法有關(guān)。但是膠囊方法引起了一些安全隱患。由于程序是由最終用戶嵌入到數(shù)據(jù)包中的,因此惡意或錯(cuò)誤的最終用戶程序可能會破壞整個(gè)路由器。解決安全問題的一種方法是在隔離的應(yīng)用程序級虛擬機(jī)(如Java虛擬機(jī))中執(zhí)行膠囊程序。但是,使用虛擬機(jī)進(jìn)行隔離以降低轉(zhuǎn)發(fā)性能為代價(jià)。

即使使用提供有效隔離的技術(shù)(例如SNAP),在通用處理器上執(zhí)行數(shù)據(jù)包轉(zhuǎn)發(fā)時(shí),也會對性能造成重大影響。例如,SNAP在2001年報(bào)告的轉(zhuǎn)發(fā)速率為100Mbit/s,比1998年開發(fā)的Juniper M40 40Gbit/s硬件路由器慢了兩個(gè)數(shù)量級。

膠囊方法可能是所有主動網(wǎng)絡(luò)愿景中最雄心勃勃的方法,由于安全方面的考慮,它并未以最通用的形式出現(xiàn)。但是,最近的系統(tǒng)向終端主機(jī)公開了路由器功能的一個(gè)更為受限的子集(例如,終端主機(jī)讀取路由器狀態(tài)但不寫入路由器狀態(tài)的能力),這使人想起了封裝方法。另一方面,可編程路由器方法已經(jīng)以各種形式被采用:軟件定義的網(wǎng)絡(luò)和可編程路由器芯片都為網(wǎng)絡(luò)運(yùn)營商提供了不同種類的受限路由器可編程性。

3、軟件路由器(1999年至今)
自1990年代后期以來,一種可編程性的方法就是使用通用基板來編寫數(shù)據(jù)包處理程序,而固定功能路由器硬件則無法編程。多年來,通用基板已經(jīng)發(fā)生了變化。例如,Click 在2000年使用了單核CPU。在2000年代初期,英特爾推出了專門針對網(wǎng)絡(luò)的一系列處理器,稱為網(wǎng)絡(luò)處理器,例如2000年的IXP1200 和2000年的IXP2800 。RouteBricks項(xiàng)目在2009年使用了多核處理器,PacketShader項(xiàng)目在2010年使用了GPU ,而NetFPGA-SUME項(xiàng)目在2014年使用了FPGA 。

已經(jīng)發(fā)現(xiàn)軟件路由器被用作對路由器進(jìn)行編程的一種手段,但是卻犧牲了性能。在鏈接速度較低但計(jì)算要求較高的情況下,它們特別有用。例如,該方法已被用于實(shí)現(xiàn)WiFi 中的MAC層算法和無線物理層中的信號處理算法。

在開發(fā)軟件路由器的同時(shí),還開發(fā)了許多用于數(shù)據(jù)包處理的特定領(lǐng)域語言(DSL)。例如,單擊使用C ++在軟件路由器上進(jìn)行數(shù)據(jù)包處理。packetC 和Microengine C 目標(biāo)網(wǎng)絡(luò)處理器。

4、軟件定義的網(wǎng)絡(luò)(2004年至今)
從2000年代初期開始,研究人員就主張將路由器的控制平面(運(yùn)行分布式路由協(xié)議以計(jì)算其路由表的路由器部分)與路由器的數(shù)據(jù)平面(通過查看路由表的數(shù)據(jù)來轉(zhuǎn)發(fā)數(shù)據(jù)包)分開。作為示例,鏈路狀態(tài)路由協(xié)議的實(shí)現(xiàn)將是控制平面的一部分,而基于最長前綴的表查找的實(shí)現(xiàn)將是數(shù)據(jù)平面的一部分。

這種方法背后的思想,后來被稱為軟件定義網(wǎng)絡(luò)(SDN),是網(wǎng)絡(luò)運(yùn)營商在管理大型網(wǎng)絡(luò)(例如流量工程,訪問控制,創(chuàng)建虛擬網(wǎng)絡(luò))時(shí)所需要的大部分靈活性。與控制平面有關(guān),與數(shù)據(jù)平面無關(guān)。此外,與數(shù)據(jù)平面相比,控制平面執(zhí)行的頻率相對較低:每幾毫秒一次,而不是每幾納秒一次。因此,雖然必須以硬件來實(shí)現(xiàn)數(shù)據(jù)平面以提高性能,但控制平面操作的相對少見的性質(zhì)允許將其從路由器移出并移至商品通用處理器,在此可以更輕松地進(jìn)行操作程序。

SDN還引入了集中控制的概念:通過將路由器控制平面從路由器移到通用處理器上,可以將整個(gè)網(wǎng)絡(luò)控制平面集中在幾個(gè)服務(wù)器上。這樣一來,這幾臺服務(wù)器就可以利用全局網(wǎng)絡(luò)可見性來計(jì)算整個(gè)網(wǎng)絡(luò)的路由。SDN有效地用了更簡單的集中圖計(jì)算(例如,使用Dijkstra算法的最短路徑)代替了易于出錯(cuò)的分布式路由計(jì)算協(xié)議。

一旦控制平面為每個(gè)路由器計(jì)算了路由,SDN還需要一種控制平面的機(jī)制來填充路由表的內(nèi)容。在轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí),數(shù)據(jù)平面將查詢這些表。這些機(jī)制中最著名的是OpenFlow API ,它公開了路由器硬件中路由表的最小接口。OpenFlow的目標(biāo)是充當(dāng)跨接口到不同路由器芯片中的路由表的最小公分母。這樣一來,現(xiàn)有芯片就可以立即支持OpenFlow API。

盡管OpenFlow API使對網(wǎng)絡(luò)的控制平面進(jìn)行編程成為可能,但并不一定使它變得容易。因此,SDN的發(fā)展也導(dǎo)致了高級編程語言的發(fā)展,以對路由器的控制平面進(jìn)行編程。盡管SDN在編程和驗(yàn)證豐富的控制平面策略方面進(jìn)行了大量研究工作,但在啟用數(shù)據(jù)平面中的可編程性方面卻進(jìn)行了很多工作。

5、網(wǎng)絡(luò)功能虛擬化(2012年至今)
網(wǎng)絡(luò)功能虛擬化(NFV)試圖將更豐富的數(shù)據(jù)包處理功能(超出原始數(shù)據(jù)包轉(zhuǎn)發(fā)功能)轉(zhuǎn)移到商品通用處理器和云基礎(chǔ)架構(gòu)中。這種數(shù)據(jù)包處理功能包括深度數(shù)據(jù)包檢查,負(fù)載平衡,入侵檢測和WAN加速,通常統(tǒng)稱為“中間盒”。出現(xiàn)了一些系統(tǒng)來對這種中間盒的數(shù)據(jù)和控制平面進(jìn)行編程。

這種中間盒的一種常見用例是在網(wǎng)絡(luò)的邊緣(例如,在蜂窩基站處),其中,每當(dāng)客戶端訪問因特網(wǎng)時(shí),各種分組處理功能就在處理器集群上運(yùn)行。由于NFV是在軟件平臺上執(zhí)行數(shù)據(jù)包處理的,因此它也可以看作是鏈路速率要求相對較低的邊緣上的軟件路由器的實(shí)際用例。

6、基于邊緣/終端主機(jī)的軟件定義網(wǎng)絡(luò)(2013年至今)
很快就清楚了,OpenFlow API不足以表達(dá)網(wǎng)絡(luò)運(yùn)營商的所有需求,因?yàn)樗辉O(shè)計(jì)為易于采用的通用最小分母API。OpenFlow缺乏表達(dá)能力,導(dǎo)致了基于邊緣的軟件定義網(wǎng)絡(luò)方法。

通過這種方法,網(wǎng)絡(luò)的路由器分為兩類。邊緣路由器位于網(wǎng)絡(luò)的入口或邊緣,并執(zhí)行可編程的數(shù)據(jù)包處理。網(wǎng)絡(luò)的核心是核心路由器,這些路由器簡單地轉(zhuǎn)發(fā)幾乎沒有可編程性的數(shù)據(jù)包。由于邊緣路由器在空間上分布以服務(wù)于不同位置的客戶端,因此每個(gè)邊緣路由器只需要處理進(jìn)出網(wǎng)絡(luò)的總流量中的一小部分。

因此,相對于核心,邊緣路由器對性能的要求要低得多,這使得它們可以在通用CPU上實(shí)現(xiàn)。使用通用CPU對邊緣路由器進(jìn)行編程可以使它們比受限的OpenFlow API更具可編程性。開放式虛擬交換機(jī)是邊緣路由器的一個(gè)眾所周知的示例。它在終端主機(jī)上的虛擬機(jī)管理程序中運(yùn)行,并將單個(gè)終端主機(jī)上的多個(gè)虛擬機(jī)連接到網(wǎng)絡(luò)。最近,邊緣上不斷增長的性能要求已導(dǎo)致在FPGA 上實(shí)現(xiàn)此類虛擬交換機(jī)。

從邏輯上講,邊緣路由器可能是終端主機(jī)本身。因此,在討論基于邊緣的方法時(shí),我們還包括一些近期的提案,這些提案使用最終主機(jī)來實(shí)現(xiàn)網(wǎng)絡(luò)靈活性。例如,Eden通過僅對終端主機(jī)進(jìn)行編程就可以使用商用路由器提供可編程數(shù)據(jù)平面。微型數(shù)據(jù)包程序(TPP)允許最終主機(jī)將小程序嵌入數(shù)據(jù)包頭中,然后由路由器以類似于基于膠囊的活動網(wǎng)絡(luò)的樣式由路由器執(zhí)行。TPP使用受限制的指令集來緩解活動網(wǎng)絡(luò)的性能和安全問題。在測量和監(jiān)視方面,許多系統(tǒng)僅從終端主機(jī)監(jiān)視網(wǎng)絡(luò)性能。

對于網(wǎng)絡(luò)中不可用的應(yīng)用程序上下文,基于邊緣或基于最終主機(jī)的解決方案是必需的。例如,只有在終端主機(jī)上才能獲得有關(guān)哪個(gè)應(yīng)用程序使用了網(wǎng)絡(luò)的知識(可能對監(jiān)視有用)。同樣,許多網(wǎng)絡(luò)安全應(yīng)用程序(例如,過濾垃圾郵件)最好在最終主機(jī)上運(yùn)行,因?yàn)槌鲇陔[私原因,確定什么是垃圾郵件以及什么不是最好的信息留在最終主機(jī)上。此外,可以僅通過邊緣可編程性來實(shí)現(xiàn)很多可編程網(wǎng)絡(luò)功能(例如,網(wǎng)絡(luò)虛擬化,訪問控制,安全策略等)。

但是,基于邊緣的方法不足以解決所有網(wǎng)絡(luò)問題。例如,通過使用網(wǎng)絡(luò)支持進(jìn)行擁塞控制(例如,使用來自路由器的顯式擁塞通知支持的DCTCP 和使用來自路由器的擁塞程度的顯式信息的XCP),性能有了顯著提高。用于提高網(wǎng)絡(luò)性能的許多其他最新提議依賴于網(wǎng)絡(luò)核心內(nèi)路由器的支持。與使用來自不同終端主機(jī)有利位置的網(wǎng)絡(luò)測量結(jié)果“三角剖分”網(wǎng)絡(luò)問題的根本原因相比,直接在網(wǎng)絡(luò)中進(jìn)行監(jiān)視,網(wǎng)絡(luò)可見性也有了顯著提高??偠灾鄙倏删幊叹W(wǎng)絡(luò)核心會大大降低性能,并使網(wǎng)絡(luò)調(diào)試復(fù)雜化。

有人可能會提出一種混合網(wǎng)絡(luò)架構(gòu),該架構(gòu)將基于邊緣的可編程性與更智能但固定的核心路由器相結(jié)合。這樣的體系結(jié)構(gòu)仍然將所有可編程性置于邊緣,但是通過少量固定功能擴(kuò)展了核心路由器,以支持來自邊緣的可編程性。這種方法的示例包括通用數(shù)據(jù)包調(diào)度和帶內(nèi)網(wǎng)絡(luò)遙測,它們通過細(xì)粒度的優(yōu)先級隊(duì)列擴(kuò)展了路由器,并且能夠?qū)㈥?duì)列大小信息導(dǎo)出到數(shù)據(jù)包中,但是保留了所有到邊緣的可編程性。

如果存在一小部分功能,這些功能對于固定功能路由器就足夠了,那么這種混合方法將是面向未來的通用方法。如果確實(shí)存在如此少的一組固定功能,則構(gòu)建固定功能路由器而不是可編程路由器將是更好且更簡單的方法。但是最近幾十年來,路由器中不斷增加的功能不斷涌現(xiàn)。在這種不斷變化的功能中,網(wǎng)絡(luò)內(nèi)的可編程性為網(wǎng)絡(luò)運(yùn)營商提供了未來的證明和安心:能夠在需要時(shí)快速向路由器添加功能,而無需冗長的硬件迭代周期。

而這正是FPGA所具有的得天獨(dú)厚的優(yōu)勢。

FPGA是定制計(jì)算領(lǐng)域的不二選擇

引用前幾天FPGA領(lǐng)域大牛叢京生老師在2020年ASP-DAC會議上對于FPGA的一段論述:

可定制計(jì)算和人們通常所知的通用處理器相比有著巨大優(yōu)勢。實(shí)際我在UCLA的同事Ingrid Verbauwhede教授的工作對我們的研究有不少啟發(fā)。她2003年在加密編碼算法的研究中得到了對于可定制計(jì)算非常有利的實(shí)驗(yàn)結(jié)果[6]。她使用加密算法的專用集成電路(ASIC)實(shí)現(xiàn)作為性能基數(shù),如下圖左邊表格第一行所示。第二行是使用可定制計(jì)算的方法得到的運(yùn)行數(shù)據(jù),第三行是在ARM上編寫匯編得出的運(yùn)行數(shù)據(jù)。可以看見可定制計(jì)算總體優(yōu)于此種方式85倍。再往下一行是在奔騰CPU上編寫相同功能的匯編代碼得到的運(yùn)行數(shù)據(jù),這在當(dāng)時(shí)是最好的臺式機(jī)芯片。可定制計(jì)算的優(yōu)勢高達(dá)8000倍。也許你會說這項(xiàng)研究是否有點(diǎn)老?那我們再來看一些其它的比較工作。下圖右側(cè)的圖表來自一篇斯坦福大學(xué)2010年發(fā)表的文章。他們使用H.264視頻編解碼算法對定制指令集進(jìn)行了評估??梢钥匆娂词故怯蒙狭?a target="_blank">SIMD和定制指令集,通用CPU和ASIC的差距還是有50倍。顯然你不可能對每個(gè)計(jì)算應(yīng)用都開發(fā)專門的ASIC,這是一項(xiàng)既燒錢又耗時(shí)的工作。關(guān)鍵問題是任何算法的改動都需要重新開發(fā)一整塊新的ASIC。請注意在左邊的例子中,第二行的可定制計(jì)算是使用可重構(gòu)的現(xiàn)場可編程邏輯門陣列(FPGA)做的實(shí)現(xiàn)。它既可以做到快速低成本,又保證高于通用CPU的性能。所以利用FPGA是一個(gè)非常有前景的解決方案。

有些同學(xué)可能會比較好奇說:等一會,我在計(jì)算機(jī)原理課上學(xué)過CPU的架構(gòu)。為什么CPU的性能這么差,差到甚至成百上千倍?實(shí)際上原因通過下圖看來非常簡單明了。你們可以想一想CPU是怎么進(jìn)行加法操作的。第一件事是從緩存或者內(nèi)存里拿到這個(gè)指令放進(jìn)處理器流水線。這個(gè)過程就已經(jīng)有9%的能量消耗了。接著指令需要被解碼從而CPU才知道這條指令到底要做什么事情,這里又有6%的能耗。因?yàn)楝F(xiàn)代處理器可以支持亂序執(zhí)行,這樣指令很有可能要被重命名來解決一些沖突的問題,這又導(dǎo)致12%的能耗。接下來從寄存器堆拿數(shù)據(jù)又產(chǎn)生3%?,F(xiàn)在萬事俱備就等著做加法了,等待數(shù)據(jù)會有11%的能耗。最終實(shí)際的計(jì)算部分只占了14%能耗,而剩下的雜事又產(chǎn)生23%能耗。在以上CPU的一系列操作中實(shí)際上只有做加法這一步是你關(guān)心的。然而,為了得到正確的加法結(jié)果一條加法指令需要走一個(gè)非常復(fù)雜的計(jì)算流水線。這就是為什么CPU不高效的原因。

因此,未來或許不僅僅是網(wǎng)絡(luò)交換領(lǐng)域,更多的領(lǐng)域都需要硬件定制。而FPGA則是硬件定制的首要選擇。

FPGA是網(wǎng)絡(luò)交換發(fā)展的必然選擇

網(wǎng)絡(luò)將受益于快速靈活的分組處理器。如果分組處理器可以處理自定義標(biāo)頭位,則它將簡化新網(wǎng)絡(luò)協(xié)議的設(shè)計(jì)和部署。同樣,如果分組處理器可以處理自定義有效載荷位,則可以將關(guān)鍵網(wǎng)絡(luò)功能(例如分組分類和共識協(xié)議)卸載到網(wǎng)絡(luò)數(shù)據(jù)平面。同時(shí),分組處理器必須是快速的。例如,截至目前,數(shù)據(jù)中心網(wǎng)絡(luò)帶寬一直在穩(wěn)定增長:10Gbps以太網(wǎng)普及,25Gbps越來越流行,而100Gbps和400Gbps也已經(jīng)普及。在執(zhí)行復(fù)雜的數(shù)據(jù)包處理時(shí)以線速處理數(shù)據(jù)包轉(zhuǎn)發(fā)需要大量的計(jì)算能力和可編程性。不幸的是,現(xiàn)有網(wǎng)絡(luò)數(shù)據(jù)平面都無法同時(shí)實(shí)現(xiàn)靈活性和性能。

我們調(diào)查了2008年,2012年和2016年的三種數(shù)據(jù)平面實(shí)施技術(shù),以了解不同類型的網(wǎng)絡(luò)數(shù)據(jù)平面如何發(fā)展以及為什么現(xiàn)有數(shù)據(jù)平面缺乏靈活性或性能;也就是說,網(wǎng)絡(luò)數(shù)據(jù)平面是靈活的(可編程的)或高性能的,但不能兼而有之。

1、軟件分組處理器
軟件分組處理器是靈活的,但不是很快。軟件分組處理器是用高級編程語言(例如C或C ++)編寫并在通用CPU上執(zhí)行的軟件程序。25Gbps網(wǎng)絡(luò)接口可以每19.2ns接收最小大小(64B)的數(shù)據(jù)包。但是,以這種速度,即使是對最后一級緩存的單次訪問也將花費(fèi)比數(shù)據(jù)包的到達(dá)時(shí)間更長的時(shí)間。即使使用所有高級軟件技術(shù)(例如內(nèi)核旁路,接收方縮放和數(shù)據(jù)直接I / O),在軟件數(shù)據(jù)平面中處理數(shù)據(jù)包也具有挑戰(zhàn)性。更糟糕的是,由于頻率縮放停滯,CPU性能不可能提高。表1總結(jié)了2008、2012和2016年用于構(gòu)建軟件數(shù)據(jù)平面的CPU的三個(gè)示例,它們比較了CPU頻率,內(nèi)核總數(shù),制造過程和內(nèi)存帶寬。表格的“核心數(shù)量”行顯示,2016年CPU核心總數(shù)從4個(gè)增加到24個(gè),而時(shí)鐘頻率從3.4GHz減少到2.2GHz。如果我們使用時(shí)鐘頻率來估計(jì)單線程性能,則性能在2008年至2016年期間不會得到改善。由于網(wǎng)絡(luò)鏈接速度接近25Gbps或100Gbps,軟件網(wǎng)絡(luò)數(shù)據(jù)平面對服務(wù)器計(jì)算和內(nèi)存功能造成了很大壓力,因此變得不切實(shí)際。


表1:從2008年到2016年的Dell服務(wù)器規(guī)格,2008年的XeonCPU沒有按核L2高速緩存,而是使用按插槽的L3高速緩存。

2、基于ASIC的分組處理器
基于ASIC的分組處理器速度很快,但不靈活。 這些分組處理器通常用于現(xiàn)代交換機(jī)和路由器中,并且傾向于處理一組有限的協(xié)議。例如,表2比較了從2008年到2016年的三代Broadcom交換機(jī)ASIC,它們是交換機(jī)開發(fā)中使用的主要設(shè)備。收發(fā)器行顯示,在此期間,端口數(shù)量和每端口鏈接速度已顯著提高。但是,開關(guān)ASIC提供的功能集在很大程度上保持不變。因此,盡管性能有所提高,但在提供可編程數(shù)據(jù)平面方面,ASIC仍然不是最佳選擇,因?yàn)殡y以滿足未直接支持的應(yīng)用要求。


表2:2008年至2016年Broadcom Trident系列交換機(jī)ASIC規(guī)范

3、基于FPGA的分組處理器

用FPGA實(shí)現(xiàn)的分組處理器在硬件性能和軟件靈活性之間取得了平衡。例如,NetFPGA項(xiàng)目已被用于原型最短路徑路由和擁塞控制算法。使用諸如Verilog之類的硬件描述語言來表達(dá)設(shè)計(jì),并使用供應(yīng)商特定的布局布線工具將其綜合到FPGA。表3展示了Xilinx在2008、2012和2016年中的三代Virtex系列FPGA。我們?yōu)槊恳淮x擇了頂級的FPGA模型。Xilinx在每一代產(chǎn)品中使用的工藝技術(shù)與Broadcom在同一時(shí)期所采用的制造工藝相似。在此期間,Virtex FPGA上收發(fā)器的數(shù)據(jù)速率增加了3倍(從Virtex-6中的11.2Gbps增長到Virtex UltraScale +中的32.75Gbps),收發(fā)器的總數(shù)從Virtex-6中的72個(gè)略微增加到96個(gè)在UltraScale +中,由于封裝限制,縮放比例有限。FPGA上的邏輯和內(nèi)存資源分別增加了2倍和5倍??傮w而言,F(xiàn)PGA由于具有可重新配置性,因此可以為軟件提供競爭性的靈活性。它們提供了與ASIC相當(dāng)?shù)男阅堋?/p>

基于FPGA的設(shè)計(jì)面臨的挑戰(zhàn)是,數(shù)據(jù)包處理管道通常使用數(shù)據(jù)包處理算法進(jìn)行硬編碼。實(shí)施新的數(shù)據(jù)包處理算法需要用戶使用硬件描述語言進(jìn)行編程。而這也是FPGA所面臨的一個(gè)挑戰(zhàn)。能否有更敏捷的開發(fā)方式來快速的實(shí)現(xiàn)FPGA的可編程,HLS?Chisel?還是別的什么?

二十分鐘掌握Vivado2018.2

所以,我們面臨著一個(gè)對FPGA有著強(qiáng)勁需求的時(shí)代,AI、通信、SmartNIC,可定制計(jì)算等等,未來行業(yè)對FPGA人才的需求也與日俱增,下面還引用本公眾號前兩天發(fā)布的Vivado入門文檔,【新手入門】Vivado工程升級及板級信號調(diào)試,配以視頻介紹,可以在二十分鐘內(nèi)學(xué)會Vivado的使用。加油,從現(xiàn)在就開始學(xué)FPGA吧。

編輯:hfy


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18927

    瀏覽量

    227245
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598956
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3641

    瀏覽量

    112815
  • 軟件定義
    +關(guān)注

    關(guān)注

    0

    文章

    76

    瀏覽量

    13648
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA的“可編程”使你迷惑嗎?

    效果。 FPGA是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺
    發(fā)表于 08-21 15:40

    可編程邏輯器件發(fā)展歷史

    到標(biāo)準(zhǔn)不斷變化這一問題的干擾。 不斷變化的標(biāo)準(zhǔn)使得 ASSP 供應(yīng)商無法明確產(chǎn)品技術(shù)的未來發(fā)展方向,這使得人們不得不轉(zhuǎn)向可編程 ASSP 方案。 采用 FPGA 這樣的可編程ASSP
    發(fā)表于 02-26 10:08

    可編程技術(shù)的引爆點(diǎn)

    25年前,賽靈思(Xilinx)公司發(fā)明了FPGA(現(xiàn)場可編程門陣列)。如今,以FPGA為代表的可編程芯片應(yīng)用已經(jīng)成為勢不可擋的發(fā)展趨勢,尤
    發(fā)表于 07-25 08:05

    如何利用FPGA設(shè)計(jì)可編程電壓源系統(tǒng)?

    可編程電源指某些功能或參數(shù)可以通過計(jì)算機(jī)軟件編程進(jìn)行控制的電源。可編程電源的實(shí)現(xiàn)方法有很多種。其中,現(xiàn)場可編程門陣列(Field Progr
    發(fā)表于 08-07 08:03

    怎么利用FPGA設(shè)計(jì)可編程電壓源系統(tǒng)?

    可編程電源指某些功能或參數(shù)可以通過計(jì)算機(jī)軟件編程進(jìn)行控制的電源。可編程電源的實(shí)現(xiàn)方法有很多種。其中,現(xiàn)場可編程門陣列(Field Progr
    發(fā)表于 08-19 06:54

    請問可編程應(yīng)用的引爆點(diǎn)在哪里?

    25年前,賽靈思(Xilinx)公司發(fā)明了FPGA(現(xiàn)場可編程門陣列)。如今,以FPGA為代表的可編程芯片應(yīng)用已經(jīng)成為勢不可擋的發(fā)展趨勢,尤
    發(fā)表于 10-31 06:30

    如何設(shè)計(jì)基于FPGA可編程電壓源系統(tǒng)?

    可編程電源指某些功能或參數(shù)可以通過計(jì)算機(jī)軟件編程進(jìn)行控制的電源。可編程電源的實(shí)現(xiàn)方法有很多種。其中,現(xiàn)場可編程門陣列(Field Progr
    發(fā)表于 11-04 06:26

    采用FPGA可編程電壓源系統(tǒng)原理及設(shè)計(jì)

    采用FPGA可編程電壓源系統(tǒng)原理及設(shè)計(jì)計(jì) 概述:介紹一種基于FPGA可編程電壓源系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。采用FPGA為控制芯片,應(yīng)用Quar
    發(fā)表于 03-22 14:31 ?2288次閱讀
    采用<b class='flag-5'>FPGA</b>的<b class='flag-5'>可編程</b>電壓源系統(tǒng)原理及設(shè)計(jì)

    現(xiàn)場可編程門陣列(FPGA)——知識專題

    FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。在專用集成電路(ASIC
    發(fā)表于 09-08 16:34
    現(xiàn)場<b class='flag-5'>可編程</b>門陣列(<b class='flag-5'>FPGA</b>)——知識專題

    可編程邏輯器件與FPGA發(fā)展(1)

    Peterson發(fā)起這個(gè)概念后,它們已經(jīng)有很長的一段歷史了。FPGA和它們最相近的兄弟復(fù)雜可編程邏輯器件(CPLD)的區(qū)別在于它們能夠完成復(fù)雜功能的能力,它們就像一個(gè)“空白的畫布”,它們的功能在之后被描繪在畫布上,而不是由廠家
    的頭像 發(fā)表于 09-25 09:17 ?6041次閱讀

    可編程邏輯器件:GAL、CPLD、FPGA

    FPGA(Field Programmable Gate Array,FPGA),場式可編程閘數(shù)組或現(xiàn)場可編程閘數(shù)組,是以閘數(shù)組(Gate Array)技術(shù)為基礎(chǔ)所
    的頭像 發(fā)表于 01-08 16:01 ?6650次閱讀

    片上可編程系統(tǒng)原理及應(yīng)用

    片上可編程系統(tǒng)SOPC是一種靈活、高效的SoC解決方案,而FPGA可編程再設(shè)計(jì)的“萬能”芯片,FPGA是作為專用集成電路(ASIC)領(lǐng)域
    發(fā)表于 10-01 09:07 ?1788次閱讀

    英特爾為云和網(wǎng)絡(luò)客戶提供高度定制可編程的解決方案

    近日,英特爾宣布與浪潮、銳捷網(wǎng)絡(luò)和Silicom開發(fā)基于FPGA基礎(chǔ)設(shè)施處理單元 (IPU) 的解決方案。此舉旨在為云和網(wǎng)絡(luò)客戶提供高度定制可編程
    的頭像 發(fā)表于 12-16 15:20 ?1781次閱讀

    可編程網(wǎng)絡(luò)發(fā)展將走向何方?

    通過利用英特爾 P4 可編程語言來定制白盒解決方案或固定配置產(chǎn)品,用戶可以在數(shù)周內(nèi)部署新協(xié)議,而不需要新版本的芯片來支持;英特爾 Tofino 芯片的可編程能力極大地?cái)U(kuò)展了網(wǎng)絡(luò)處理的靈
    發(fā)表于 10-26 15:13 ?921次閱讀

    現(xiàn)場可編程門陣列是什么

    現(xiàn)場可編程門陣列(Field Programmable Gate Array,簡稱FPGA)是一種超大規(guī)模可編程邏輯器件,由可編程邏輯資源、可編程
    的頭像 發(fā)表于 03-16 16:38 ?2246次閱讀