如何評價微軟在資料中心使用 FPGA 代替傳統 CPU 的做法?

時間 2021-05-06 02:33:18

1樓:Winston Hao

導致這一方案被提出的根源是來自於CPU和FPGA兩者的架構。

CPU:馮諾依曼結構,採用標準的指令,基本的運算器,共享的儲存器,匯流排這些標準裝置組成。目的是採用可大量複製的同架構硬體配合無限靈活的軟體來完成無限多種類的工作。

這好比是手工作坊,給你足夠多的通用工具,只要給你提供詳細的圖紙便可以製造出任何產品。但你的每乙個步驟都需要完成以下的工作:放下當前的工件,取來工具,檢視圖紙的當前要求,使用該工具加工零件,放回工具,完成該步的零件組裝或將當前零件暫時存放到臨時貨架,下乙個零件。

而這一步裡面唯一的核心價值是——使用該工具加工零件。

FPGA: 本質上是可程式設計邏輯門和暫存器,可程式設計連線線,片內的DSP和RAM資源組成的集合。通過程式設計可以形成無限可能(只要硬體資源足夠豐富)的數位電路。

繼續以製造產品來舉例。如果設計得當,那麼原則上你可以設計出針對某乙個產品的自動化生產線,每乙個工序所需的工具和圖紙已經完全準備完畢,只需要產品順著流水線到達該工序的時候進行相應的加工操作,有需要暫時存放的半成品的也會進入專用貨架等待取用。

相比之下,流水線方式可以省去所有的工具準備(呼叫運算器)、圖紙檢視(獲取指令和資料)、半成品暫存(運算結果暫存),中間所有的行動損耗(匯流排消耗)。所以不言而喻,像生產流水線一樣的數位電路集合能夠獲得高得多的處理效率和少得多的能量消耗。

FPGA與ASIC的巨大不同在於,ASIC是預先設計好的固定電路;而FPGA只要通過重配置便可在幾百毫秒內變身為另外一套電路,以不變(同架構硬體)應萬變。

微軟現在的打法就是注意到了FPGA的原始價值,以同架構的FPGA加速板卡作為CPU進行複雜大負荷運算的加速器,以不同的FPGA軟配置來獲得足夠豐富的靈活性,功能性。CPU做複雜邏輯判斷和任務排程,FPGA做高速高負荷的多樣性運算加速。

2樓:pipi shaou

完全是忽悠啊,FPGA和ASIC的功耗對比更是搞笑,完成相同功能和效能處理的功耗,FPGA只會遠遠超過ASIC的,要知道FPGA的走線效率是遠遠比不上ASIC的效率,功耗怎麼可能比FPGA大。

3樓:麥大麥

FPGA用來跑並行演算法是非常合適的。速度快,開發周期短。cpu是取指執行,在跑一些大規模數值運算的時候,很弱雞。

當然,用gpu來跑平行計算也很合適。

4樓:HgOCN2

關於FPGA的描述前面的大大們都講的挺詳細了,我稍微補充一下。

與CPU相比總體優勢(具體視情況而論):

01.並行性的速度與頻寬

FPGA通過硬體描述語言配置,為每個功能建立單獨的硬體來實現整體應用程式所需要的邏輯功能。因此,它具有並行處理的內在特點(空間並行,時間並行,邏輯並行),硬體設計使其具有較高的執行速度(空間&邏輯並行)和較大的吞吐量/位寬(基於流處理的時間並行),有時會將幾種並行方式進行組合來最小化模組之間的通訊以減少效能的開銷 (例如屬於邏輯並行的功能模組組與屬於時間並行的流水線組合在一起時產生的同步脈動結構)。

雖然根據費林大大的觀點,作為序列處理器的CPU所接收到的指令、資料呈流水線/管線化的時候,單指令單資料流(SISD)也可以擁有平行計算(時間並行)的特點,但就另外兩個並行方式而言,FPGA在速度上仍具有很大優勢,而且,這三種方式的組合在效果上是加成的。

02.功耗

FPGA的功耗分為兩個部分:

1). 動態功耗:輸出改變狀態時的功率消耗。

2). 靜態功耗:開機時CMOS電路的損耗。

動態功耗由下式給出:

P = N C Vdd^2 f

(其中,N是每個時鐘週期發生變化的均值;C是每個輸出的平均電容;f是時鐘頻率)

實現的難度主要有:

01.微軟伺服器中CPU上傳統的軟體演算法向FPGA硬體演算法的移植。

提一下FPGA上的硬體演算法:

「在FPGA上實現乙個演算法的技巧就成為,將該演算法分解為乙個暫存器傳遞序列,並確定各個暫存器之間的恰當邏輯關係。需要注意的是,與軟體演算法的實現不同,每個邏輯模組是在並行執行的,因而也要求我們將演算法從常規的順序執行方式改變為可以利用硬體進行並行執行的方式。」

待續…つづく

(得趕火車去了,到了繼續碼 · v · )

[參考資料:《Design for Embedded Image Processing on FPGAs》Donald G·Bailey]

5樓:

因為FPGA是功能定製的。

CPU是通用的,馮諾依曼計算架構要把過程變成一條一條指令序列執行,靠很高很高的主頻來提高執行速度。這樣一來,功耗很高(功耗主要跟主頻有關),效率有限。

FPGA可以定製你想要的功能,比如說可並行的東西全部單獨做成模組,乙個週期就全算出來了,這樣就把功耗降下去了效率提上來了。

FPGA做伺服器晶元是早幾年就有的事,中國的高校都有老師接這種專案。伺服器端有很多功能是成熟穩定的,把它們做成晶元,電費和散熱費都減掉不少。畢竟CPU要靠堆數量堆電費來滿足計算需求,FPGA定製雖然單個成本高,總體成本對比就是優勢,時間越長越省錢(電費)。

前兩年高階號稱要做神經網路晶元,目標市場第乙個就是伺服器端。原因就是這樣,省錢還提高效率。不過後來沒訊息了……

6樓:李創

FPGA在這個場合是乙個可程式設計的協處理器,海量運算器+大本地快取,比如某段大資料的簡單處理,統計,統計資料整體本地快取,分段並行搜尋比較,這是馮諾曼比不了的。

主頻高又如何,FPGA現在的運算器可是能到4位數的。

7樓:

這個很容易理解,演算法設計在硬體裡面永遠是比演算法設計在軟體裡面快的。

基本就是CPU渲染3D和GPU渲染的差別。

當年本科的時候就想過以後有機會做FPGA方向的,可惜一直沒什麼機會。

8樓:

首先,可信度很高。這是一條可行的技術路線,有先例可循,無(很大)難度,所以只要微軟想做,做出來是板上釘釘的。IBM的Netezza一體機早就用FPGA參與商用關聯式資料庫運算了。

其次,能達到加速的效果。很多答案中也提過原因了。

FPGA比通用CPU的效能優勢在於,執行相同計算邏輯的封裝層次少,能在硬體層面設計出的計算邏輯越複雜,效率優勢越明顯,簡單的純粹加減運算效能優勢反而相對較低。

FPGA的缺點在於太過複雜的計算邏輯無法在硬體層面實現,這點也就導致FPGA在計算中心這樣的環境中,不可能「取代」通用CPU,一定是和通用CPU配合。比如利用FPGA在固定簡單邏輯計算中「傻跑快」的優勢,先對資料做預處理,如果業務簡單就直接出結果,如果複雜,再將計算結果(處理量已大大減少)交給通用CPU做複雜演算法計算。所以有人回答FPGA會衝擊Intel是不大會變成顯示的。

當然,還有固定好的演算法再次改變(相對通用CPU)不靈活的缺點。

9樓:

FPGA是全並行執行,一次可處理的資料位寬比CPU高,但FPGA邏輯實現難度要比CPU軟體程式設計要大,微軟在伺服器中用 FPGA 代替傳統 CPU屬於FPGA的可重構計算的應用。

10樓:飛行機

FPGA是一堆邏輯門器件連在一起的。簡單的說,裡面的處理過程是死的,在什麼情況傳來什麼資料需要得出什麼結果,已經是固定的,內部幾乎沒有任何計算。所以可以輸入的資料只是按照裡面預先設定好的路徑經過那些邏輯門,並得到所需的邏輯結果。

比如計算1+1,FPGA裡面有許多個加法器,或者只要按照加法器的規律把各個邏輯門連起來,就能得到1+1的結果。注意,這裡是設定好了1+1的結果就是等於2,而不是通過計算得到2。因為內部沒有計算,所以輸入到輸出的速度非常非常的高。

而傳統cpu就需要計算了,傳統cpu需要了解1是什麼型別的數字,+號是什麼運算,然後再計算出原來1+1=2,最後再輸出2這個數字。

11樓:

獻醜一發.

伺服器端用FPGA應該也不是什麼大新聞了, 微軟也不是第一家這麼做的.

在NYSE的話, 每秒鐘需要處理的transaction已經遠超過10Gbs, 也就是遠遠的把x86架構的極限甩在了後面, 真的是不得不用FPGA. 現在的話差不多能到40Gbs...當然, 非常貴, 乙個月的維護費用就是上10萬刀級別, 如果我沒記錯的話.

用FPGA來實現加速演算法還是不太現實, 樓上各位確實提到了很多FPGA的並行優勢, 但是畢竟clock在這兒擺著, 500MHz不能再多. 從輸入訊號和輸出訊號入手, 中間插再多的combination logic也未必比人家4GHz的CPU快. 當然只是未必.

當用盡心力把verilog寫出來之後, 跑一下ModelSim, 發現計算時間遠超CPU的10倍, 那感覺真是誰用誰知道.....這個真的是不能保證的. 除非你是數字前端的神牛...

當然, MSR是不缺神牛的.

所以說, FPGA這種東西, 也就只能用在Computer Network上提公升一下throughput. 有了throughput, 伺服器數量減少也無所謂. 每個使用者在佇列上的等待時間明顯變短, 自然速度就上來了.

12樓:Kaiser Li

很簡單的,若了解FPGA的原理就很簡單了。

FPGA+軟體,整個系統的架構是針對演算法專用的,例如cache大小,指令處理都可以是最優化的。通用CPU的架構對於某種應用不一定是最優的,整個系統為了迎合CPU的架構,需要犧牲一些效能,是泛用型的。

舉個例子:對話Ⅱ:高新技術在高頻交易中的運用及風險控制高頻交易的技術與裝置

FPGA用在美國交易所裡貼著交易所主機做高頻交易,他們已經很成熟了。

13樓:一直在改

fpga演算法相比通用cpu的軟體演算法具有並行和復用的優點。以通訊上的tpc通道解碼演算法為例,通常情況下單模組綜合速度可以到120mhz以上,是intel 酷睿cpu軟體演算法效率的50倍以上。而且fpga模組很容易就可以實現多路並行。

做這種單純的演算法fpga的優越性實在是太強了。但fpga並不擅長做大儲存量資料複雜的數學計算,如果做這種事情fpga一樣的要用到cpu核來做,優勢就沒有了,因為fpga的時鐘可是遠低於我們目前cpu的4ghz的。我不清楚bing演算法細節,可能微軟將其改造得適合fpga演算法了,那理論上40倍的提公升是沒有問題的

如何評價 NVIDIA 禁止資料中心使用 GeForce 顯示卡跑深度學習?

JensenCat 基本沒什麼影響。個人使用者和科研單位的非商業用途不受限制。說白了就是自己用可以,但你想佔老黃便宜拿Geforce和Titan來做商業部署賺錢那老黃分分鐘跳起來搞你。PS.Geforce Titan這玩意輔助供電口朝上塞不進標準4U機架啊,DataCenter用它不難受麼? 晨陽 ...

VXLAN在資料中心大量VM互聯場景下,能否免去flood learn學習?

阿布 a.Multicast做控制平面 資料中心每台交換機上需要配置VTEP,保證VNI加入到相同的組播組中組播必須支援Any Source Multicast ASM RFC 7384 b.Unicast做控制平面 這個沒什麼好說的,靜態配置,指定VETP路徑c.MP BGP EVPN作為控制平面...

如何評價阿里「麒麟」 全浸沒液冷資料中心在技術領域應用

其實沒什麼好黑的。阿里一直是在一步一步走的。好的方面 關於阿里硬體方面引入新技術 特指大規模部署的情況下 阿里引入一種伺服器的時間週期很長,大概一種新硬體出現到線上大規模部署的中間間隔時間一般在兩年以上。中間並不僅僅是觀望,而是實打實的進行測試。其實摩爾定律已經不太靈了,intel也都一直在被人說擠...