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