有了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控制器等。