处理器/DSP
让你说出知道的芯片的名称,你可能会一时想不起,也不能一一罗列DSP芯片都有哪些。或许是对DSP芯片深刻的了解才了然于心,由于种种原因的忘却;或许是因为大家在说DSP芯片好,既然大家都说好,那才是真的好,至于怎样好,可能是似懂非懂。那好吧,不管是懂还是不懂,现在让我们从新的视角来读懂这个芯片的世界,让你发现不曾明白的细节。
DSP芯片,也称数字信号处理器,采用特殊的软硬件结构,是一种专注于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理,是数字信号处理理论实用化过程的重要技术工具。在语音处理、图像处理等技术领域得到了广泛的应用。那根据对DSP芯片的理解来对比与其他芯片的最要的区别是什么?杭州海康威视数字技术股份有限公司的高级嵌入式开发经理黄田认为,DSP芯片与其它芯片的最大区别在于它拥有针对各种算法设计的大量专用指令,比如各种向量运算。另外DSP芯片在设计时更多地考虑到数据总线的带宽以及吞吐量,避免数据访问成为影响算法性能的瓶颈。
芯片的基本结构
为了快速地实现数字信号处理运算,DSP芯片一般都采用特殊的软硬件结构。下面简单介绍DSP芯片的基本结构。
(1)哈佛结构
主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。与两个存储器相对应的是系统中设置了程序总线和数据总线,从而使数据的吞吐率提高了一倍。由于程序和数据在两个分开的空间,因此取指和执行能完全重叠。
(2)流水线操作
流水线与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行时间,从而增强了处理器的处理能力。处理器可以并行处理二到四条指令,每条指令处于流水线的不同阶段。下面所列是一个三级流水线操作的例子:
CLLOUT1
取指 N N-1 N-2;
译码 N-1 N N-2;
执行 N-2 N-1 N,
(3)专用的硬件乘法器
专用的硬件乘法器,乘法速度越快,DSP处理器的性能越高。由于具有专用的应用乘法器,乘法可在一个指令周期内完成。
(4)特殊的DSP指令
DSP是采用特殊的指令。
(5)快速的指令周期
特殊的DSP指令,DSP芯片是采用特殊的指令。快速的指令周期、哈佛结构、流水线操作、专用的硬件乘法器、特殊的DSP指令,再加上集成电路的优化设计可使DSP芯片的指令周期在200ns以下。
DSP系统的特点
数字信号处理有别于普通的科学计算与分析,它强调运算处理的实时性,因此DSP除了具备普通微处理器所强调的高速运算和控制功能外,针对实时数字信号处理,在处理器结构、指令系统、指令流程上具有许多新的特征,其特点如下:
算术单元
具有硬件乘法器和多功能运算单元,硬件乘法器可以在单个指令周期内完成乘法操作,这是DSP区别于通用的微处理器的一个重要标志。多功能运算单元可以完成加减、逻辑、移位、数据传送等操作。新一代DSP内部甚至还包含多个并行的运算单元,以提高其处理能力。针对滤波、相关、矩阵运算等需要大量乘和累加运算的特点,DSP的算术单元的乘法器和加法器,可以在一个时钟周期内完成相乘、累加两个运算。近年出现的一些DSP如ADSP2106X、DSP96000系列DSP可以同时进行乘、加、减运算,大大加快了FFT的蝶形运算速度。
总线结构
传统的通用处理器采用统一的程序和数据空间、共享的程序和数据总线结构,即所谓的冯。诺依曼结构。DSP普遍采用了数据总线和程序总线分离的哈佛结构或者改进的哈佛结构,极大地提高了指令执行速度。片内的多套总线可以同时进行取指令和多个数据存取操作,许多DSP片内嵌有DMA控制器,配合片内多总线结构,使数据块传送速度大大提高。
专用寻址单元
DSP面向数据密集型应用,伴随着频繁的数据访问,数据地址的计算也需要大量时间。DSP内部配置了专用的寻址单元,用于地址的修改和更新,它们可以在寻址访问前或访问后自动修改内容,以指向下一个要访问的地址。地址的修改和更新与算术单元并行工作,不需要额外的时间。DSP的地址产生器支持直接寻址、间接寻址操作,大部分DSP还支持位反转寻址(用于FFT算法)和循环寻址(用于数字滤波算法)。
片内存储器
针对数字信号处理的数据密集运算的需要,DSP对程序和数据访问的时间要求很高,为了减小指令和数据的传送时间,许多DSP内部集成了高速程序存储器和数据存储器,以提高程序和数据访问存储器的速度。
流水处理技术
DSP大多采用流水技术,即将一条指令的执行过程分解成取指、译码、取数、执行等若干个阶段,每个阶段称为一级流水。每条指令都由片内多个功能单元分别完成取指、译码、取数、执行等操作,从而在不提高时钟频率的条件下减少了每条指令的执行时间。
DSP与其它处理器的差别
数字信号处理器(DSP)、通用微处理器(MPU)、微控制器(MCU)三者的区别在于:DSP面向高性能、 重复性、数值运算密集型的实时处理;MPU大量应用于计算机;MCU则适用于以控制为主的处理过程。
DSP芯片的优点
DSP的运算速度比其它处理器要高得多,以FFT为例,高性能DSP不仅处理速度是MPU的 4~10倍,而且可以连续不断地完成数据的实时输入/输出。DSP结构相对单一,普遍采用汇编语言编程,其任务完成时间的可预测性相对于结构和指令复杂(超标量指令)、严重依赖于编译系统的MPU强得多。以一个FIR滤波器实现为例,每输入一个数据,对应每阶滤波器系数需要一次乘、一次加、一次取指、二次取数,还需要专门的数据移动操作,DSP可以单周期完成乘加并行操作以及3~4次数据存取操作,而普通MPU完成同样的操作至少需要4个指令周期。因此,在相同的指令周期和片内指令缓存条件下,DSP的运算速度可以超过MPU运算速度的4倍以上。
DSP芯片的浮点与定点之分
在选择DSP器件的时候,是采用浮点还是采用定点,如果用定点是16位还是32位?其实这个问题和你的算法所要求的信号的动态范围有关。
浮点运算DSP比定点运算DSP的动态范围(动态范围:如音响系统重放时最大不失真输出功率与静态时系统噪声输出功率之比的对数值,又如一个多媒体硬盘播放器输出图像的最亮和最暗部分之间的相对比值)要大很多。定点DSP的字长每增加1bit,动态范围扩大6dB,16bit字长的动态范围为96dB。程序员必须时刻关注溢出的发生。例如:在做图像处理时,图像做旋转、移动等,就很容易产生溢出。这时,要么不断地移位定标,要么作截尾。前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。
总之,是使整个系统的性能下降。在处理低信噪比信号的场合,例如进行语音识别、雷达和声纳信号处理时,也会发生类似的问题。而32bit浮点运算DSP的动态范围可以作到1536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。
由于浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其处理速度大大高于定点DSP,这一优点在实现高精度复杂算法时尤为突出。
定点的计算不过是把一个数据当作整数来处理,通常AD采样来的都是整数,这个数相对于真实的模拟信号有一个刻度因子,大家都知道用一个16位的AD 去采样一个0到5V的信号,那么AD输出的整数除以2^16再乘以5V就是对应的电压。在定点DSP中是直接对这个16位的采样进行处理,并不将它转换成以小数表示的电压,因为定点DSP无法以足够的精度表示一个小数,它只能对整数进行计算。
而浮点DSP的优势在于它可以把这个采样得到的整数转换成小数表示的电压,并不损失精度(这个小数用科学记数法来表示),原因在于科学记数法可以表示很大的动态范围的一个信号,以IEEE754浮点数为例,单精度浮点格式:[31] 1位符号[30-23]8位指数[22-00]23位小数。这样的能表示的最小的数是+-2^-149,最大的数是+-(2-2^23)*2^127,动态范围为20*log(最大的数/最小的数)=1667.6dB这样大的动态范围使得在编程的时候几乎不必考虑乘法和累加的溢出,而如果使用定点处理器编程,对计算结果进行舍入和移位则是家常便饭,这在一定程度上会损失精度。
原因在于定点处理的信号的动态范围有限,比如16位定点DSP,可以表示整数范围为1-65536,其动态范围为 20*log(65536/1)=96dB.对于32定点DSP,动态范围为20*log(2^32/1)=192dB,远小于32位ieee浮点数的1667.6dB,但是实际上192dB对绝大多数应用所处理的信号已经足够了。由于AD转换器的位数限制,一般输入信号的动态范围都比较小,但在 DSP的信号处理中,由于点积运算会使中间节点信号的动态范围增加,所以主要考虑信号处理流程中中间结果的动态范围,以及算法对中间结果的精度要求,来选择相应的DSP。另外就是浮点的DSP更易于编程,定点DSP编程中程序员要不断调整中间结果的PQ值,实际就是不断对中间结果进行移位调整和舍入。
实数运算可直接透过代码加入硬件运算中,而定点元件必须透过软件才能间接执行实数运算,这就增加了运算法指令并延长了开发时间。
整体上说,定点DSP在成本上具有优势而浮点DSP在易用上较优。
DSP芯片的发展现状与应用
自从DSP芯片诞生以来,DSP芯片得到了飞速的发展。一方面得益于集成电路的发展,另一方面也得益于巨大的市场。在短短的十多年时间,DSP芯片已经在信号处理、通信等许多领域得到了广泛的应用。
对于DSP芯片的发展现状和DSP如何与其他产品搭配应用解决方案海康威视的黄田作出了如下这样的看法:DSP芯片已经在向专业化、多元化方向发展,各厂家的市场划分越来越细,差异性也越来越大。另外,单纯的DSP芯片已经不多见,更多的是DSP芯片与其它处理核心集成在一起,形成一个集成度高、针对性强的SOC,不仅极大地降低了板级空间,也带来了功耗、成本以及开发周期的全面优势,从而推动了行业的发展和产品性能的提高。
DSP的优势在于灵活的算法集成,可以给产品提供强大的性能以及灵活的定制,同一产品针对各类客户不同的需求实现不同的解决方案。为了提高产品的竞争力,厂商都会在算法上做足文章,算法变得越来越复杂,但是算法的稳定性、产品的功耗、开发周期等都会成为难以驾驭的风险。DSP算法不是一大堆理论公式的堆砌,而是与所使用DSP芯片的具体特点紧密结合的精致软件。
这些因素在产品设计时就需要予以充分考虑,不要为了一些噱头功能而盲目采用所谓的先进算法和高性能DSP,而是要从用户需求出发,寻找算法与DSP的最佳组合。在产品方案中,算法和DSP是核心,这个组合确定了,再去搭配其它的处理芯片和外围设备,才能形成一套高效的产品解决方案。
目前DSP技术应用从军用到民用,从航空航天到生产生活,都越来越多地使用DSP。DSP技术在航空航天方面,主要用于雷达和声纳信号处理;在通信方面,主要用于移动电话、IP电话 (voice over IP)、ADSL和HFC的信号传输;在控制方面,主要用于电机控制、光驱和硬盘驱动器;在测试/测量方面,主要用于虚拟仪器、自动测试系统、医疗诊断 等;在电子娱乐方面,主要用于高清晰度电视(HDTV)、机顶盒(STB)、AC-3、家庭影院、DVD等应用;
在图像/图形上,主要用于二维和三维图形处理、图像压缩与传输、图像增强、动画等;还有数字相机、网络相机等等都应用了 DSP技术。同时,SOC芯片系统、无线应用、嵌入式DSP都是未来DSP的发展方向和趋势。可以说,没有DSP就没有对互联网的访问,也不会有多媒体, 也没有无线通信。因此,DSP仍将是整个半导体工业的技术驱动力。现在,DSP应用领域不断拓宽,其函盖面包括宽带Internet接入业务、下一代无线通信系统的发展、数字消费电子市场、汽车电子市场的发展等诸多方面。
DSP芯片的分类
为不同算法而专门设计的DSP芯片可以分为基础特性、数据格式和按用途分三大类。
按基础特性分 ,根据DSP芯片的工作时钟和指令类型来分类的。如果DSP芯片在某时钟频率范围内的任何频率上能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称之为静态DSP芯片。如果有两种或两种以上的DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类DSP芯片称之为一致性的DSP芯片。
按数据格式分,这是根据DSP芯片工作的数据格式来分类的。数据以定点格式工作的DSP芯片称之为定点DSP芯片。以浮点格式工作的称为DSP芯片。不同的浮点DSP芯片所采用的浮点格式不完全一样,有的DSP芯片采用自定义的浮点格式,有的DSP芯片则采用IEEE的标准浮点格式。
按用途分,可分为通用型DSP芯片和专用型的DSP芯片。通用型DSP芯片适合普通的DSP应用,如TI公司的一系列DSP芯片。专用型DSP芯片是为特定的DSP运算而设计,更适合特殊的运算,如数字滤波,卷积和FFT等。
结语
随着安防行业的高速发展,特别是高清和智能化需求的井喷,整个行业已经全面进入数字化时代,而作为数字化安防产品的核心,安防芯片已经成为一个巨大的产业,所以需要更多不同的算法。对于不断涌现的算法需求来说,DSP的处理能力永远是不够的,算法开发人员需要不断在性能指标和DSP的处理能力之间做平衡,是少做一次循环,还是允许偶尔丢帧,类似这样,如果无法做取舍,则需要进一步对算法进行优化,可能是算法架构上的,也可能是汇编代码级的。片内缓存是影响算法性能的一个重要因素,DDR带宽则往往是系统级的。
由于DSP精于计算,而不善于逻辑处理,特别是网络协议、数据库管理方面,因此DSP往往与其它芯片配合使用。在安防领域的各种开发方案中,DSP+ARM最为主流,ARM负责网络、存储、外设管理,DSP负责图像、音频处理及编解码。目前DSP+ARM基本上都集成到一个SOC中,尽管如此,对于软件开发来说,DSP和ARM还都是分开的。在需要更高处理性能的领域,往往采用多片DSP共同处理的方式。这些也是海康威视黄田,具多年行业资深技术人的深刻体会。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !