FPGA:下一代機器人感知處理器
發布時間:2017-11-23 責任編輯:lina
要(yao)想(xiang)機(ji)器(qi)人(ren)有(you)智(zhi)能(neng),必(bi)先(xian)賦(fu)予(yu)其(qi)感(gan)知(zhi)能(neng)力(li)。感(gan)知(zhi)計(ji)算(suan),特(te)別(bie)是(shi)視(shi)覺(jiao)以(yi)及(ji)深(shen)度(du)學(xue)習(xi),通(tong)常(chang)計(ji)算(suan)量(liang)比(bi)較(jiao)大(da),對(dui)性(xing)能(neng)要(yao)求(qiu)高(gao)。但(dan)是(shi)機(ji)器(qi)人(ren)受(shou)電(dian)池(chi)容(rong)量(liang)限(xian)製(zhi),可(ke)分(fen)配(pei)給(gei)計(ji)算(suan)的(de)能(neng)源(yuan)比(bi)較(jiao)低(di)。除(chu)此(ci)之(zhi)外(wai),由(you)於(yu)感(gan)知(zhi)算(suan)法(fa)不(bu)斷(duan)發(fa)展(zhan),我(wo)們(men)還(hai)需(xu)要(yao)不(bu)斷(duan)更(geng)新(xin)機(ji)器(qi)人(ren)的(de)感(gan)知(zhi)處(chu)理(li)器(qi)。與(yu)其(qi)它(ta)處(chu)理(li)器(qi)相(xiang)比(bi),FPGA具有低能耗、高性能以及可編程等特性,十分適合感知計算。本文首先解析FPGA的特性,然後介紹FPGA對感知算法的加速以及節能,最後談一談機器人操作係統對FPGA的支持。
FPGA:高性能、低能耗、可編程
與其它計算載體如CPU與GPU相比,FPGA具有高性能、低能耗以及可硬件編程的特點。圖1介紹了FPGA的硬件架構,每個FPGA主要由三個部分組成:輸入輸出邏輯,主要用於FPGA與外部其他部件,比如傳感器的通信;計算邏輯部件,主要用於建造計算模塊;以yi及ji可ke編bian程cheng連lian接jie網wang絡luo,主zhu要yao用yong於yu連lian接jie不bu同tong的de計ji算suan邏luo輯ji部bu件jian去qu組zu成cheng一yi個ge計ji算suan器qi。在zai編bian程cheng時shi,我wo們men可ke以yi把ba計ji算suan邏luo輯ji映ying射she到dao硬ying件jian上shang,通tong過guo調tiao整zheng網wang絡luo連lian接jie把ba不bu同tong的de邏luo輯ji部bu件jian連lian通tong在zai一yi起qi去qu完wan成cheng一yi個ge計ji算suan任ren務wu。比bi如ru要yao完wan成cheng一yi個ge圖tu像xiang特te征zheng提ti取qu的de任ren務wu,我wo們men會hui連lian接jieFPGA的輸入邏輯與照相機的輸出邏輯,讓圖片可以進入FPGA。然後,連接FPGA的輸入邏輯與多個計算邏輯部件,讓這些計算邏輯部件並行提取每個圖片區域的特征點。最後,我們可以連接計算邏輯部件與FPGA的輸出邏輯,把特征點彙總後輸出。由此可見,FPGA通常把算法的數據流以及執行指令寫死在硬件邏輯中,從而避免了CPU的Instruction Fetch與Instruction Decode 工作。

圖1 FPGA硬件架構
高性能
雖然FPGA的頻率一般比CPU低,但是可以用FPGA實現並行度很大的硬件計算器。比如一般CPU每次隻能處理4到8個指令,在FPGA上使用數據並行的方法可以每次處理256個或者更多的指令,讓FPGA可以處理比CPU多很多的數據量。另外,如上所述,在FPGA中一般不需要Instruction Fetch與Instruction Decode, 減少了這些流水線工序後也節省了不少計算時間。
為了讓讀者對FPGA加速有更好的了解,我們總結了微軟研究院2010年對BLAS算法的FPGA加速研究。BLAS是矩陣運算的底層庫,被廣泛運用到高性能計算、機器學習等領域。在這個研究中,微軟的研究人員分析了CPU、GPU以及FPGA對BLAS的加速以及能耗。圖2對比了FPGA以及CPU、GPU執行GaxPy算法每次迭代的時間,相對於CPU,GPU與FPGA都達到了60%的加速。圖中顯示的是小矩陣運算,隨著矩陣的增大,GPU與FPGA相對與CPU的加速比會越來越明顯。

圖2 GaxPy 算法性能對比 (單位:微秒)
低能耗
FPGA相對於CPU與GPU有明顯的能耗優勢,主要有兩個原因。首先,在FPGA中沒有Instruction Fetch與Instruction Decode,在Intel的CPU裏麵,由於使用的是CISC架構,僅僅Decoder就占整個芯片能耗的50%;在GPU裏麵,Fetch與Decode也消耗了10%~20%的能源。其次,FPGA的主頻比CPU與GPU低很多,通常CPU與GPU都在1GHz到3GHz之間,而FPGA的主頻一般在500MHz以下。如此大的頻率差使得FPGA消耗的能源遠低於CPU與GPU。
圖3對比了FPGA以及CPU、GPU執行GaxPy算法每次迭代的能源消耗。可以發現CPU與GPU的能耗是相仿的,而FPGA的能耗隻是CPU與GPU的8%左右。由此可見,FPGA計算比CPU快60%,而能耗隻是CPU的1/12,有相當大的優勢,特別在能源受限的情況下,使用FPGA會使電池壽命延長不少。

圖3 GaxPy 算法能耗對比(單位:毫焦)
可硬件編程
由於FPGA是可硬件編程的,相對於ASIC而言,使用FPGA可以對硬件邏輯進行迭代更新。但是FPGA也會被詬病,因為把算法寫到FPGA硬件並不是一個容易的過程,相比在CPU與GPU上編程技術門檻高許多,開發周期也會長很多。

圖4 傳統FPGA開發流程與C-to-FPGA開發流程
圖4顯示了傳統FPGA開發流程與C-to-FPGA開發流程的對比。在傳統的FPGA開發流程中,我們需要把C/C++寫成的算法逐行翻譯成基於Verilog的硬件語言,然後再編譯Verilog,把邏輯寫入硬件。隨著近幾年FPGA技術的發展,從C直接編譯到FPGA的技術已經逐漸成熟,並已在百度廣泛被使用。在C-to-FPGA開發流程中,我們可以在CC++的代碼中加Pragma, 指出哪個計算Kernel應該被加速,然後C-to-FPGA引擎會自動把代碼編譯成硬件。在我們的經驗中,使用傳統開發流程,完成一個項目大約需要半年時間,而使用了C-to-FPGA開發流程後,一個項目大約兩周便可完成,效率提升了10倍以上。
感知計算在FPGA上的加速
接下來主要介紹機器人感知計算在FPGA上的加速,特別是特征提取與位置追蹤的計算(可以認為是機器人的眼睛),以及深度學習計算(可以認為是機器人的大腦)。當機器人有了眼睛以及大腦後,就可以在空間中移動並定位自己,在移動過程中識別所見到的物體。
特征提取與位置追蹤
特征提取與位置追蹤的主要算法包括SIFT、SURF和SLAM。SIFT是一種檢測局部特征的算法,通過求一幅圖中的特征點及其有關規模和方向的描述得到特征並進行圖像特征點匹配。SIFT特征匹配算法可以處理兩幅圖像之間發生平移、旋轉、仿射變換情況下的匹配問題,具有很強的匹配能力。SIFT算法有三大工序:1. 提取關鍵點;2. 對關鍵點附加詳細的信息(局部特征)也就是所謂的描述器;3. 通過兩方特征點(附帶上特征向量的關鍵點)的兩兩比較找出相互匹配的若幹對特征點,也就建立了景物間的對應關係。SURF算法是對SIFT算法的一種改進,主要是通過積分圖像Haar求導提高SIFT算法的執行效率。SLAMjitongshidingweiyudituzhongjian,mudejiushizaijiqirenyundongdetongshijianlitujingdeditu,bingtongshiqiaodingjiqirenzaidituzhongdeweizhi。shiyonggaijishuhou,jiqirenkeyizaibujiezhuwaibuxinhao(WIFI、Beacon、GPS)的情況下進行定位,在室內定位場景中特別有用。定位的方法主要是利用卡曼濾波器對不同的傳感器信息(圖片、陀螺儀)進行融合,從而推斷機器人當前的位置。
為了讓讀者了解FPGA對特征提取與位置追蹤的加速以及節能,下麵我們關注加州大學洛杉磯分校的一個關於在FPGA上加速特征提取與SLAM算法的研究。圖5展示了FPGA相對CPU在執行SIFT feature-matching、SURF feature-matching以及SLAM算法的加速比。使用FPGA後,SIFT與SURF的feature-matching分別取得了30倍與9倍的加速,而SLAM的算法也取得了15倍的加速比。假設照片以30FPS的速度進入計算器,那麼感知與定位的算法需要在33毫秒內完成對一張圖片的處理,也就是說在33毫秒內做完一次特征提取與SLAM計算,這對CPU會造成很大的壓力。用了FPGA以後,整個處理流程提速了10倍以上,讓高幀率的數據處理變得可能。

圖5 感知算法性能對比 (單位:加速比)
圖6展示了FPGA相對CPU在執行SIFT、SURF以及SLAM算法的節能比。使用FPGA後,SIFT與SURF分別取得了1.5倍與1.9倍的節能比,而SLAM的算法取得了14倍的節能比。根據我們的經驗,如果機器人將手機電池用於一個多核的Mobile CPU去跑這一套感知算法,電池將會在40分鍾左右耗光。但是如果使用FPGA進行計算,手機電池就足以支撐6小時以上,即可以達到10倍左右的總體節能 (因為SLAM的計算量比特征提取高很多)。

圖6 感知算法能耗對比 (單位:節能比)
根據數據總結一下,如果使用FPGA進jin行xing視shi覺jiao感gan知zhi定ding位wei的de運yun算suan,不bu僅jin可ke以yi提ti高gao感gan知zhi幀zhen率lv,讓rang感gan知zhi更geng加jia精jing準zhun,還hai可ke以yi節jie能neng,讓rang計ji算suan持chi續xu多duo個ge小xiao時shi。當dang感gan知zhi算suan法fa確que定ding,而er且qie對dui芯xin片pian的de需xu求qiu達da到dao一yi定ding的de量liang後hou,我wo們men還hai可ke以yi把baFPGA芯片設計成ASIC,進一步的提高性能以及降低能耗。
深度學習
深shen度du神shen經jing網wang絡luo是shi一yi種zhong具ju備bei至zhi少shao一yi個ge隱yin層ceng的de神shen經jing網wang絡luo。與yu淺qian層ceng神shen經jing網wang絡luo類lei似si,深shen度du神shen經jing網wang絡luo也ye能neng夠gou為wei複fu雜za非fei線xian性xing係xi統tong提ti供gong建jian模mo,但dan多duo出chu的de層ceng次ci為wei模mo型xing提ti供gong了le更geng高gao的de抽chou象xiang層ceng次ci,因yin而er提ti高gao了le模mo型xing的de能neng力li。在zai過guo去qu幾ji年nian,卷juan積ji深shen度du神shen經jing網wang絡luo(CNN)在計算機視覺領域以及自動語音識別領域取得了很大的進步。在視覺方麵,Google、Microsoft與Facebook不斷在ImageNet比賽上刷新識別率紀錄。在語音識別方麵,百度的DeepSpeech 2係統相比之前的係統在詞彙識別率上有顯著提高,把詞彙識別錯誤率降到了7%左右。
為了讓讀者了解FPGA對深度學習的加速以及節能,我們下麵關注北京大學與加州大學的一個關於FPGA加速CNN算法的合作研究。圖7展示了FPGA與CPU在執行CNN時的耗時對比。在運行一次迭代時,使用CPU耗時375毫秒,而使用FPGA隻耗時21毫秒,取得了18倍左右的加速比。假設如果這個CNN運算是有實時要求,比如需要跟上相機幀率(33毫秒/幀),那麼CPU就不可以達到計算要求,但是通過FPGA加速後,CNN計算就可以跟上相機幀率,對每一幀進行分析。

圖7 CNN性能對比 (單位:毫秒)
圖8展示了FPGA與CPU在執行CNN時的耗能對比。在執行一次CNN運算,使用CPU耗能36焦,而使用FPGA隻耗能10焦,取得了3.5倍左右的節能比。與SLAM計算相似,通過用FPGA加速與節能,讓深度學習實時計算更容易在移動端運行。

圖8 CNN能耗對比 (單位:焦)
FPGA與ROS機器人操作係統的結合
上文介紹了FPGA對感知算法的加速以及節能,可以看出FPGA在感知計算上相對CPU與GPU有巨大優勢。本節介紹FPGA在當今機器人行業被使用的狀況,特別是FPGA在ROS機器人操作係統中被使用的情況。
機器人操作係統(ROS),是專為機器人軟件開發所設計出來的一套操作係統架構。它提供類似於操作係統的服務,包括硬件抽象描述、底層驅動程序管理、共用功能的執行、程序間消息傳遞、程序發行包管理,它也提供一些工具和庫用於獲取、建立、編寫和執行多機融合的程序。ROS的首要設計目標是在機器人研發領域提高代碼複用率。ROS是一種分布式處理框架(又名Nodes)。這使可執行文件能被單獨設計,並且在運行時鬆散耦合。這些過程可以封裝到數據包(Packages)和堆棧(Stacks)中,以便於共享和分發。ROS還支持代碼庫的聯合係統,使得協作亦能被分發。ROS目前被廣泛應用到多種機器人中,逐漸變成機器人的標準操作係統。在2015年的DARPA Robotics Challenge比賽中,有過半數的參賽機器人使用了ROS。
隨著FPGA技術的發展,越來越多的機器人使用上了FPGA,在ROS社區中也有越來越多的聲音要求ROS兼容FPGA。一個例子是美國Sandia國家實驗室的機器人手臂Sandia Hand。如圖9所示,Sandia Hand使用FPGA預處理照相機以及機器人手掌返回的信息,然後把預處理的結果傳遞ROS的其它計算Node。

圖9 ROS在Sandia Hand中對FPGA的支持
為了使ROS與FPGA之間可以連接,Sandia Hand使用了Rosbridge機製。 Rosbridge通過JSON API來連接ROS與非ROS的程序。比如一個ROS的程序可以通過JSON API連接一個非ROS的網絡前端。在Sandia Hand的設計中,一個ROS Node通過JSON API連接到FPGA計算器,FPGA傳遞數據以及發起計算指令,然後從FPGA取回計算結果。
Rosbridge為ROS與FPGA的聯通提供了一種溝通機製,但是在這種機製中,ROS Node並不能運行在FPGA上,而且通過JSON API的連接機製也帶來了一定的性能損耗。為了讓FPGA與ROS更好的耦合,最近日本的研究人員提出了ROS-Compliant FPGA的設計,讓ROS Node可以直接運行在FPGA上。如圖10所示,在這個設計中,FPGA了實現一個輸入的接口,這個接口可以直接訂閱ROS的topic,使數據可以無縫連接流入FPGA計算單元中。另外,FPGA上也實現了一個輸出接口, 讓FPGA上的ROS Node可以直接發表數據,讓訂閱這個topic的其他ROS Node可以直接使用FPGA產出的數據。在這個設計中,開發者隻要把自己開發的FPGA計算器插入到ROS-compliant的FPGA框架中,便可以無縫連接其他ROS Node。

圖10 FPGA成為ROS的一部分
最近跟ROS的運營機構Open Source Robotics Foundation溝通中發現,越來越多的機器人開發者使用FPGA作為傳感器的計算單元以及控製器,對FPGA融入ROS的需求越來越多。相信ROS很快將會拿出一個與FPGA緊密耦合的解決方案。
展望未來
FPGA具有低能耗、高性能以及可編程等特性,十分適合感知計算。特別是在能源受限的情況下,FPGA相對於CPU與GPU有明顯的性能與能耗優勢。除此之外,由於感知算法不斷發展,我們需要不斷更新機器人的感知處理器。相比ASIC,FPGA又具有硬件可升級可迭代的優勢。由於這些原因,筆者堅信FPGA在機器人時代將會是最重要的芯片之一。由於FPGA的低能耗特性,FPGA很適合用於傳感器的數據預處理工作。可以預見,FPGA與傳感器的緊密結合將會很快普及。而後隨著視覺、語音、深度學習的算法在FPGA上的不斷優化,FPGA將逐漸取代GPU與CPU成為機器人上的主要芯片。
推薦閱讀:
五大優勢凸顯 可編程邏輯或將呈現快速增長
量子點和OLED,誰會是電視市場下半場的主流技術數
淺顯易懂的理解嵌入式開發中的硬件知識
為什麼分立式JFET仍然活躍於模擬設計中?
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 從機械執行到智能互動:移遠Q-Robotbox助力具身智能加速落地
- 品英Pickering將亮相2026航空電子國際論壇,展示航電與電池測試前沿方案
- 模擬芯片設計師的噩夢:晶體管差1毫伏就廢了,溫度升1度特性全飄
- 3A大電流僅需3x1.6mm?意法半導體DCP3603重新定義電源設計
- 芯科科技Tech Talks與藍牙亞洲大會聯動,線上線下賦能物聯網創新
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall



