"2014年,微軟在計算機架構領域的頂會ISCA上發(fā)表了一篇名為“A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services”的論文,詳細介紹了微軟Catapult項目團隊如何在其數(shù)據(jù)中心里的1632臺服務器中部署了英特爾Stratix V FPGA,并用FPGA對必應(Bing)搜索引擎的文件排名運算進行了硬件加速,得到了高達95%的吞吐量提升。這篇文章一經(jīng)發(fā)表,立刻轟動了整個業(yè)界。它是第一篇真正意義上詳述由互聯(lián)網(wǎng)/軟件巨頭開發(fā)并部署FPGA的專業(yè)論文,標志著FPGA第一次在互聯(lián)網(wǎng)/軟件公司的大型數(shù)據(jù)中心里得到實質性應用。同時也將微軟Catapult項目引入大眾的視野,告訴人們FPGA已不再僅僅是硬件公司的專屬產(chǎn)品,而是可以有效的應用于像微軟這樣的互聯(lián)網(wǎng)公司,并有機會部署在谷歌、亞馬遜、臉書、阿里、百度、騰訊等其他互聯(lián)網(wǎng)巨頭遍布全球的成千上萬臺服務器中。"
Catapult項目的產(chǎn)生背景
微軟對FPGA在數(shù)據(jù)中心里應用的研究起源于2010年底,當時微軟正希望從一個基于PC軟件的公司,逐步轉型為提供各類互聯(lián)網(wǎng)服務的企業(yè)。Catapult項目的負責人Doug Burger認識到,像微軟這種體量的互聯(lián)網(wǎng)巨頭不能只提供軟件層面的互聯(lián)網(wǎng)服務,還要從根本上掌控最高效的網(wǎng)絡硬件設備。
隨著大數(shù)據(jù)時代的到來,包括人工智能在內的各類新應用不斷涌現(xiàn),網(wǎng)絡帶寬也由1Gbps不斷增長為10Gbps、40Gbps直至100Gbps甚至更高。此時,傳統(tǒng)的基于CPU的服務器和網(wǎng)絡設備已無法滿足日益增長的對計算量和網(wǎng)絡帶寬的需求。因此,尋找合適的網(wǎng)絡加速設備勢在必行。
雖然在很多微軟高管看來,微軟自研網(wǎng)絡硬件設備就好比“可口可樂宣布要做魚翅”,但Doug Burger還是得到了當時擔任必應(Bing)搜索引擎負責人陸奇的鼎力支持,并最終向時任微軟CEO鮑爾默及其繼任者納德拉展示了FPGA在加速數(shù)據(jù)中心實際應用時的巨大潛力。2016年,微軟在計算機體系架構頂會MICRO上發(fā)表了名為“A Cloud-Scale Acceleration Architecture”的論文,系統(tǒng)介紹了Catapult的新一代架構和工作。至此,Catapult項目已經(jīng)歷三個階段。
單板多FPGA
在Catapult項目最初期,微軟采用了單板多FPGA的方案,即每塊加速卡上集成6片Xilinx Virtix-6 FPGA,各FPGA之間通過自身的通用I/O端口相連和通信。然而,這種大型加速卡在實際部署時遇到了很多問題,最主要的有以下三點:
1.靈活性極差。如果某種大型應用需要多于6片F(xiàn)PGA,則無法用該方案實現(xiàn)。
2.同構性極差。由于功耗、供電和尺寸限制,這種大型板卡很難直接部署在數(shù)據(jù)中心的高密度服務器上。
3.穩(wěn)定性不足。在這種大型板卡中,任何元件發(fā)生故障都有可能造成整個板卡的失效,繼而可能導致相關服務器和應用的錯誤。
單板單FPGA
這個階段的工作是Catapult項目第一個代表性成果。與前一階段相比,加速卡架構從單板多FPGA,變成了單板單FPGA的結構。第二代FPGA架構的主要特點是使用了Shell&Role結構。
Catapult項目第二階段的最主要工作之一,是將Bing搜索引擎中原先超過3萬行C++代碼的文件排名運算,卸載到了FPGA上進行硬件加速,并得到了驚人的結果。
下圖總結了這項工作最具代表性的結果,即使用FPGA后與純軟件方案的對比。其中,坐標橫軸代表系統(tǒng)延時,縱軸代表吞吐量。由于純軟件方案已經(jīng)經(jīng)過了深度優(yōu)化,因此這個比較結果具有極高的說服力。
這個結果可以從兩個方面解讀:
當系統(tǒng)延時相同的情況下,采用FPGA進行硬件加速后吞吐量提升了接近一倍;
對于相同的吞吐量要求,采用FPGA后系統(tǒng)延時會下降29%。由此可見采用FPGA后,系統(tǒng)整體性能得到了大幅度提升。此外,每個FPGA帶來的額外功耗小于25W,相比原系統(tǒng)而言增加了不到10%,且總體成本的增加不超過30%。整個系統(tǒng)只有在部署初期發(fā)現(xiàn)了7塊板卡發(fā)生了硬件故障,占總板卡數(shù)量的0.4%。在之后幾個月的運行中,所有板卡都穩(wěn)定運轉,足以證明FPGA系統(tǒng)的穩(wěn)定性。
FPGA資源池化
第二階段的工作最主要的問題是,為了實現(xiàn)FPGA之間的低延時通信,引入了一個6x8的二維Torus網(wǎng)絡。相比于傳統(tǒng)數(shù)據(jù)中心網(wǎng)絡TOR交換機直連CPU的結構,這個Torus網(wǎng)絡相當于在當前數(shù)據(jù)中心網(wǎng)絡里額外增加了一個二層網(wǎng)絡,而這個二層網(wǎng)絡在擴展性和同構性方面帶來了很多問題。
為了解決問題,微軟在2016年發(fā)表了Catapult新一階段的工作,最主要的貢獻是取消了FPGA互連的第二級網(wǎng)絡,直接將FPGA與數(shù)據(jù)中心網(wǎng)絡進行互連。
和上一個版本相同,CPU可以通過PCIe訪問FPGA,并使用FPGA為各類計算任務進行加速運算。除此之外,新版本的硬件布局還帶來了以下幾點好處:
1. FPGA可以被用來加速數(shù)據(jù)中心的各類網(wǎng)絡和存儲功能。
2. 微軟在自家數(shù)據(jù)中心的5670個服務器里部署了新一代的FPGA加速卡,遍布全球五大洲的15個國家。
為了實現(xiàn)對池化FPGA資源的統(tǒng)一管理和分配,微軟提出了一種硬件即服務(Hardware-as-a-Service)”的使用模型
性能方面,Catapult被正式部署在微軟的Azure云數(shù)據(jù)中心,并將必應搜索引擎的頁面排序算法進行了FPGA加速,對于給定的延時要求,相比于深度優(yōu)化后的軟件實現(xiàn),F(xiàn)PGA可以輕松達到2.25倍的吞吐量提升。
同時,微軟還對比測試了使用遠程FPGA獲得的結果,使用遠程FPGA與使用本地FPGA相比,并沒有明顯的性能差異。這證明了LTL協(xié)議與HaaS使用模型的有效性。
由此,Catapult第三階段的工作很好的解決了FPGA在大型數(shù)據(jù)中心里部署的靈活性和擴展性問題,為今后FPGA的大規(guī)模部署打下了堅實的基礎。在2017年,微軟推出了一款基于FPGA的深度學習加速平臺,名為“腦波(brainwave)”項目。腦波項目代表著FPGA在數(shù)據(jù)中心里的應用正式擴展到人工智能領域。
結尾
微軟的Catapult項目可以稱作是FPGA在大型商業(yè)數(shù)據(jù)中心里進行大規(guī)模部署和使用的開山之作,直至目前仍然也是這個領域最具代表性的工作。Catapult兼顧了學術創(chuàng)新和工程的實用性,這樣對于業(yè)界其他公司更具有直接的借鑒意義。在結果方面,微軟使用了自家已經(jīng)深度優(yōu)化的純軟件方案作為對比,使得FPGA取得的顯著性能提升更具可信度和說服力。
有趣的是,除了項目初期的原型驗證外,微軟均采用了Intel/Altera的FPGA芯片,微軟也一躍成為英特爾FPGA的最大客戶之一。有人曾斷言,那些年叱咤風云的“Wintel”聯(lián)盟,在后PC時代終將土崩瓦解。然而,在風起云涌的大數(shù)據(jù)和AI時代,伴隨著兩家公司的一步步華麗轉型,Wintel組合正通過FPGA再一次獲得新生。