之前發(fā)了一期講萬能芯片FPGA的視頻反響不錯,很多人問我FPGA既然這么牛掰,它到底能干點啥、有啥具體應用呢?
巧了~前兩周我去看了一個專業(yè)視聽領域的頂級展會infocomm,里面有各種超高畫質超強性能的專業(yè)影像設備,給了我這個part-time自媒體博主一點小小的震撼。講道理,從芯片的角度來看,這些對圖形圖像進行處理的應用應該是圖形處理器GPU最擅長的領域,但萬萬沒想到,這些頂級音視頻設備背后的主控芯片竟然絕大部分都是我們之前說的萬能芯片——FPGA,真的把GPU的老家給端了。究其原因,離不開FPGA的三個核心優(yōu)勢。
那今天這篇文章,就和你分享一下這次在infocomm展會上看到的一些典型的FPGA應用,以及背后體現的FPGA的三個獨特優(yōu)勢。
多說兩句:這期內容的視頻版在各個平臺上發(fā)了,視頻在文末,也獲得很多專業(yè)人士的點贊+轉發(fā)。不過有些留言上來就開噴,說我不懂FPGA……所以咱們還是要多發(fā)FPGA的內容,畢竟不懂要多學。
優(yōu)勢一:細粒度并行
FPGA的第一個優(yōu)勢,就是很強的并行處理能力、以及其帶來的超高性能。什么是并行處理呢?它其實是和串行處理是相對的概念。好多年前,流言終結者做了一個形象的比喻。我們畫一幅畫其實有兩種方式,第一種是一個一個往畫布上打點,最終畫出來一個笑臉,這也叫串行處理;而另外一種方法則更加暴力,通過一次性噴出來N多個點,直接畫出來一個蒙娜麗莎,效率的提升肉眼可見,這就是并行處理。
并行處理或者并行計算本身也是GPU的優(yōu)勢,不是FPGA專屬;但兩者的區(qū)別是,GPU只能以一個比較大的計算單元為基礎做并行,而FPGA可以繼續(xù)拆分,可以在更細粒度的邏輯單元級別做并行計算。
對于高清視頻來說,要處理的數據量是巨大的。比如,8K視頻單幀像素高達3300萬,每秒60幀時數據量達20億像素,需要對這么多像素做并行處理,CPU一條指令一條指令做肯定不行,GPU能多核渲染,但既沒有這么多核、也很難做到像素級并行。
相比之下,FPGA可以將視頻處理流程分解為多個階段,每個階段設計專門的硬件模塊去處理。比如對于像素的顏色空間轉換,把RGB888轉成YUV420時,可以把每個像素的轉換邏輯獨立出來分別實現,FPGA就可同時并行的計算所有像素的Y、U、V分量,這樣只需要幾個時鐘周期就能完成所有像素的轉換。
這次展會上我看到來自諾瓦星云的MX2000Pro顯示控制器(不是廣告),它就是使用AMD的FPGA,實現了單臺設備帶載8K超大屏的能力,屬于行業(yè)頂級了。這個東西有個很有意思的應用,就是像阿凡達這些電影大片拍攝中的虛擬拍攝技術。也就是不用斥巨資布景,也不用搞個綠幕讓演員做無實物表演,而是在后面、地面、甚至天花板鋪滿8K高清大屏,從而直接在屏幕上展示戲里的場景,然后用攝像機懟著拍,所拍即所得。
但為了實現這樣的無縫體驗,就需要控制這么多高清LED顯示實現備頻,插幀,以及240Hz+高幀頻與幀頻自適應技術,才能和電影攝影機實現快門的精確同步,避免摩爾紋和畫面撕裂。這些功能都離不開FPGA的細粒度并行處理能力。根據展會上專家的介紹,不僅高清大屏的驅動用的是FPGA,連攝影機里用的也是FPGA,夢幻聯動了屬于是。
除了并行計算,FPGA還能通過集成一些定制化的硬件IP、高速接口、高速的片上存儲等等很多方式去提升系統性能,文章篇幅有限就不一一展開介紹了,如果你對這些內容感興趣的話就請一定點一下關注,這樣我才知道原來有這么多人對這些技術感興趣,我們的賬號變得越來越大,才能讓我?guī)憧吹礁噙@樣有意思的展覽,做出更多對你更有幫助的內容。
優(yōu)勢二:超低延時
接著說FPGA的第二個獨特優(yōu)勢,那就是超低延時處理。特別是現在的各種直播、線上會議,甚至是很多工業(yè)和醫(yī)療的視頻應用,都需要極低甚至是無感的延時。比如經常下礦坑的觀眾都知道,我們需要實時觀測礦井下面的情況,畫質也不能拉胯,否則漏掉要命的細節(jié)就出大事了。對海量數據的超低延時處理,其實就是FPGA的獨門絕技了。
FPGA之所以能實現超低延時,核心原因是它能用硬件直接實現特定的算法,繞過了傳統CPU或者GPU的軟件堆棧瓶頸,也就是不用經過操作系統的一系列進程調度、內存管理、中斷響應等等環(huán)節(jié)。中間商少了,延時自然就低了。
還是拿前面說的顏色空間轉換為例,在FPGA中只需要三個周期就能完成,如果每個周期是300MHz,那總延時就只不過10納秒。相比之下,CPU和GPU都需要用到循環(huán)指令,雖然頻率要高得多,但軟件開銷很大,總延時仍然需要1000納秒,是FPGA的100倍。
FPGA不僅延時低,它還能保證確定性的延時,這個是被很多人忽視的隱藏版優(yōu)點。由于FPGA上的電路結構是固定的,那么從輸入到輸出有多少個周期也是確定的;相比之下,CPU或者GPU由于有操作系統和線程調度,就會有各種不確定性,所以延時可能會來回抖動。
這種確定性的延時對于很多應用非常重要。比如在醫(yī)療領域的8K內窺鏡視頻處理這個應用里,FPGA從傳感器輸入到顯示輸出的總延時穩(wěn)定在2ms以內,而GPU方案會因為線程調度波動而導致延時在5-20ms間抖動。事實上,這種確定性低延時的特點,也是幫助FPGA在高頻交易中被廣泛采用的主要原因,之前講DeepSeek和幻方的文章里我們說過,鏈接在這里。
那在這次展會上,我就看到了來自保凌的基于AMD Zynq UltraScale+ MPSoC的云臺攝像機(不是廣告),自由度和可玩度很高,可以360度旋轉、也能大角度俯仰和縮放。它的一個典型的應用就是放在各種專業(yè)的直播車上做賽事直播,并提供超低延時的視頻處理。它還在FPGA上同時實現了視頻編解碼、AI推理與網絡協議處理這一整套功能,讓攝像機能智能跟蹤拍攝主體,響應速度提升40%,還能把低分辨率的視頻信號AI優(yōu)化成4K畫質,實現實時升頻,這就很厲害了,相當是AI能力和專業(yè)音視頻的很好結合,當然這些功能都是基于FPGA的硬件能力的驅動。
優(yōu)勢三:靈活定制
FPGA第三個獨特優(yōu)勢,就是超強的靈活性,以及帶來的極致差異化。特別是在專業(yè)音視頻領域,有各種視頻傳輸協議(HDMI、SDI、DP)、壓縮編碼標準(H.264/AVC、H.265/HEVC、AV1)、同步和控制協議,以及一些行業(yè)特定的標準等等。他們有些是行業(yè)規(guī)范和標準,而有些是公司自己定義的,而且隨著技術演進,還不斷有更多協議出現。比如現在5G網絡的大背景下,就有AV over IP等等。
協議越來越多,對畫質、無損率以及延時的要求肯定越來越高。但CPU或者GPU造好之后就很難在上面增加專門針對這些協議的硬件模塊了,就只能用軟件處理,性能肯定就拉胯。FPGA就不一樣,它之所以叫「萬能芯片」,就是可以通過改變自身的邏輯功能,來直接生成這些協議和標準的硬件處理模塊。
比如我就看到一家叫美樂威的公司(不是廣告),就自研了名叫Weehoo的淺壓縮編解碼技術,能在保證視覺無損的前提下,實現高達4K60fps 4:4:4 10bit的視頻編解碼,以及幀內延遲和低于500Mbps的碼率。但這么高的指標,市面上是肯定沒有相應的解碼芯片或者硬件來實現的,用CPU或者GPU延時和性能都太低。所以他們就用了FPGA,設計了一整套硬件編解碼電路,能運行在400MHz的頻率,并實現了在千兆網上點對點17毫秒左右的延時,這么短的時間,人眼根本分辨不出來。
除了定制化和私有協議,用戶也能在FPGA上同時實現那些公有協議和標準,實現所謂的「一機多?!梗簿褪且慌_機器,多種模式或模態(tài)。關鍵是最終的產品化形態(tài)還非常小,和我手掌差不多大,摸起來也并不燙手,說明功耗很低。這明顯比用GPU顯卡+轉碼芯片的方案性能更高、成本更低,也更加靈活。
FPGA的這種高度可定制性,就讓不同的用戶不是一味地去卷大算力,而是很有巧思的去找到自己的差異化路線,用更小的芯片,開發(fā)更有特點的產品,解決更有意思的問題。我感覺這才是FPGA最吸引人的地方。
其實在看展的過程中,我也給廠商提出了一些靈魂拷問、也是很多FPGA開發(fā)者一定會遇到的問題,比如FPGA的開發(fā)難度到底怎么樣,做成產品之后的可靠性和質量到底如何。通過和各種專業(yè)人士的交流,他們告訴我其實現在FPGA的開發(fā)門檻相比之前已經降低了很多。雖然還是有需要硬件工程師寫RTL的時候,但其實像AMD這樣的FPGA廠商就已經提供了很多專業(yè)音視頻相關的IP模塊,甚至他們還有專門的解決方案團隊,就是為音視頻客戶提供完整的解決方案。甚至有些開發(fā)者會直接用高層綜合HLS的方法來進行FPGA算法的硬件開發(fā)了,高層綜合這種方法特別適合開發(fā)專業(yè)音視頻處理這種流式計算的算法,現在Vivado等工具的支持也不錯,開發(fā)起來其實很方便,我的研究團隊也在做相關的研究工作。
說到可靠性,這其實也是FPGA的優(yōu)勢。之前文章說過,FPGA的生命周期非常長,甚至可能達到十年之久,對于專業(yè)音視頻設備動輒10年+的服役要求來說這個非常關鍵。有個參展商甚至說,FPGA更多是一次開發(fā)、終身可用,相當于「高門檻自由」;而GPU依賴持續(xù)算力升級,相當于「低門檻受限」。所以雖然GPU在AI領域大殺四方,但在專業(yè)音視頻領域,他們仍然是堅定選擇使用FPGA。
希望看完今天的文章能讓你對FPGA的應用有了更新的認識。還想看關于FPGA的哪些內容,記得留言區(qū)告訴我。
(注:本文不代表老石任職單位的觀點。)