有了NPU,還要DSP嗎?
- 其實都是針對某種算法進行加速的處理器,不過NPU針對的是那些神經元算法,DSP針對的是信號處理算法,二者各有側重
NPU采用普林斯頓結構。
DSP采用哈弗結構。
各自有自己的指令系統。
DSP是專注數字信號處理的,即使DSP處理器其實也是分了很多針對不同類型的信號的不同型號類型,比如有音頻信號的、圖像的等待
NPU是專注於神經網絡處理的,處理不同的數據。
用通用架構的CPU處理AI和用NPU處理AI,速度是不同,但為什么還是離不開CPU呢,因為NPU只能處理AI計算,其它的也是不行的。
- DSP(digital signal processor)是專業做數字信號處理的。DSP是一種獨特的微處理器(采用哈佛結構,內部結構已經固定),有完整指令系統,通過指令和數據工作(這個也是CPU和ARM等的工作方式),開發遵循嵌入式軟件的設計原則,更注重於算法的實現。
NPU是嵌入式神經網絡處理器(NPU),采用“數據驅動並行計算”的架構,特別擅長處理視頻、圖像類的海量多媒體數據
在NPU中集成那些可支持必要服務操作的功能及服務。DSP可定制以便集成及增加通道的密度與速度,但不是設計用來增加DSL服務能力,如更好的網絡彈性、更精細的網絡流量管理、更完善服務保證以及用於處理新服務機會的更多靈活性等。NPU在這些功能上更具有優勢。
至於算力的衡量
國外知名媒體Anandtech選擇了使用麒麟960的華為Mate 9、使用麒麟970的華為Mate 10 Pro、使用驍龍835的谷歌Pixel 2 XL和LG V30四款手機,分別測試了ARM CPU、Hexagon DSP和NPU的AI性能,測試結果以性能(fps)和效能(mJ/inference)雙重指標來衡量。
NPU和CPU在處理AI運算時的性能有着幾十倍的巨大差異。這些算法在CPU上執行的速度最高不過2fps,同時還會消耗掉大量的電能。無論是驍龍835還是麒麟960的CPU平均功耗都已經超過可持續工作的上限。
作為對比,驍龍835的Hexagon DSP相比CPU約有8~10倍的性能提升,而麒麟970的NPU性能又可達到Hexagon DSP的1.5倍~4倍。不過在能耗比方面,雖然華為NPU相比CPU有着巨大到已經不在一個次元的優勢,但驍龍835的Hexagon DSP的綜合效率落后麒麟970的NPU僅6%左右。
傳統芯片廠商(如CPU、GPU和DSP)對於深度學習市場非常重視,因此利用他們巨大體量和市場推廣、銷售能力,大力推廣用這些傳統芯片來進行深度學習處理,其本質上也是對現有的技術進行微調,用傳統SIMD架構來適配神經網絡。
然而,由於傳統CPU、GPU和DSP本質上並非以硬件神經元和突觸為基本處理單元,相對於NPU在深度學習方面天生會有一定劣勢,在芯片集成度和制造工藝水平相當的情況下,其表現必然遜色於NPU。
DSP:和真正神經網絡芯片有差距
6月20日,中星微“數字多媒體芯片技術”國家重點實驗室在京宣布,中國首款嵌入式NPU(神經網絡處理器)芯片誕生,目前已應用於全球首款嵌入式視頻處理芯片“星光智能一號”。
媒體稱,“星光智能一號蘊含了當前計算機領域最前沿的生物人腦神經網絡仿生學創新技術,且對嚴重依賴國外進口產品的中國集成電路產業來說,也是實現‘彎道超車’的一次踴躍嘗試。它標志着我國在神經網絡處理器領域的研究和開發上取得了重大突破;使我國視頻監控行業發展由模擬時代、數字時代跨入智能時代,在全球確立領先地位。”
不過,在經過仔細分析后,所謂“中國首款嵌入式神經網絡處理器”很有可能是一款可以運行神經網絡的DSP,而非真正意義的神經網絡專用芯片。
從其低位寬的定點運算器推斷,星光智能一號僅可支持神經網絡正向運算,無法支持神經網絡的訓練。從片上存儲結構看,星光智能一號基於傳統的片上緩存(Cache),而非像最近流行的神經芯片或FPGA方案一樣使用便簽式存儲。因此,在技術上看星光智能一號是典型的“舊瓶裝新酒”方案,將傳統的面向數字信號處理的DSP處理器架構用於處理神經網絡,主要在運算器方面作了相應修改,例如低位寬和超越函數,而並非是“狹義的”神經網絡專用處理器,如IBM的“真北”芯片。
因此,星光智能一號其實是DSP,而非NPU,能夠適用於卷積神經網路(CNN),而對循環神經網絡(RNN)和長短期記憶網絡(LSTM)等處理語音和自然語言的網絡有可能就無能為力了。
換言之,星光智能一號暫時只面向機器視覺任務,而不能用於語音和自然語言類的問題。其實,這種用傳統SIMD/DSP架構來適配神經網絡的技術思想在國際上已有不少先例,甚至有成熟的產品,例如CEVA公司的XM4處理器、Cadence公司的Tensilica Vision P5處理器、Synopsys公司的EV處理器等。
比如說FPGA和DSP相比,因為DSP的硬件結構就是專門為了做數字信號處理運算的,所以如果需求就是專門做大量數據運算的話,肯定用DSP了,而且FPGA價格相對而言比較高的。 現在常見將FPGA和DSP(或者ARM)聯合使用,一個作為主處理器,一個作為協處理器,這樣可以結合兩者的優勢。
FPGA主要是硬件可配置,能夠使系統更集成化,且速度快。可以應用於速度、精度要求較高的場合。
如果你對硬件知識不太懂,也不甚感興趣,建議你可以先學習一下DSP。
1、DSP(digital signal processor)看它的名字就知道是專業做數字信號處理的。DSP是一種獨特的微處理器(采用哈佛結構,內部結構已經固定),有自己的完整指令系統,通過指令和數據工作(這個也是CPU和ARM等的工作方式),開發遵循嵌入式軟件的設計原則,更注重於算法的實現。
2、FPGA,是ASIC的一種,屬於硬件設計的范疇 。區別在於ASIC是硬件全定制 ,FPGA是硬件半定制 。
ASIC(Application Specific Integrated Circuits)是專用集成電路,指應特定用戶要求和特定電子系統的需要而設計、制造的集成電路,里面的電路結構式固定不可變的。
而FPGA內部是集成的可以由用戶來配置的基礎數字邏輯模塊(如寄存器、連接線、輸入輸出模塊等),用戶可以通過編程等方式,將這些基礎數字邏輯模塊組合成一個電路,從而達到目標功能。相當於是給你一堆原始邏輯與非門,你自己去拼積木吧。所以FPGA更靈活。
3、SoC是片上系統,指在一個芯片中實現用戶定義的系統。
SoC與FPGA之間:由於FPGA內部也可實現軟核(CPU),所以這時FPGA也算是SoC了。
SoC與ASIC之間:嚴格意義上來講,SoC也可以是ASIC,當某一SoC結構穩定后,可作為ASIC來批量生產。一般來講,SoC帶有CPU和一些外設。ASIC一般是指IP核的設計,也就是某一功能模塊,如USB,DDR控制器等。
參考鏈接:
https://www.icxbk.com/ask/detail/34343.html