dsp代码优化等级(dsp代码优化等级是多少)
大家好!今天让创意岭的小编来大家介绍下关于dsp代码优化等级的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008
本文目录:
一、如何将DSP和MCU两者完美结合
按照传统方式,嵌入式应用中的数字信号处理器(DSP)相对于主微控制器(MCU)起从属作用。在这些
应用中,MCU用作系统控制器,而大量的数据处理留给DSP。例如,在音频或视频处理应用中有可能需要人
机界面管理,或者是整个系统的控制。
设计方案选择
为完成这些任务,有几种系统设计方案选择。
第一种方案将DSP和MCU芯片组合在印制电路板(PCB)上。这种方案成本高并且占用面积大,但是可
适当地调整每个芯片的尺寸以最大限度地满足系统需要。
第二种方案是一种将DSP和MCU组合在单个封装内的多芯片模块(MCM)。这种方案的局限性是,设计
工程师必须按“50/50”的时间比例分配给控制和DSP功能;例如,一旦DSP超出时间,MCU将不能完成计算
任务。像第一种方案选择一样,当DSP和MCU内核独立存在时,需要两套开发工具。
第三种方案是将DSP功能合并到一个MCU中。这种方案只适合于直接的信号处理应用。MCU的时钟频率
和计算体系结构根本上不太适合大量的数字处理。有些MCU试图通过增加一个乘法和累加器(MAC)(DSP
的一个特点)来补偿上述不足。但是这种方案仍然缺乏高级应用所需要的基本的“由下至上 ”的体系结
构设计 。
最近,已经出现第四种方案它是将MCU的功能合并到一个DSP中。这类方案的一个例子是美国模拟器件
公司(Anolog Device Inc.,简称ADI)的Blackfin™ 处理器系列。这些新型处理器具有统一的经过优化的
体系结构,不仅适于数据计算,而且也适于有关的控制任务。通过平衡执行控制任务与复杂计算的要求,
这种方案可以根据系统实时处理的需要,完成100%的控制或者100%的计算任务。完成所有这一切任务不需
要在DSP模式和MCU模式之间的模式转换。
(translation of graphics)
System Control blocks=系统控制单元
Emulator & Test control=仿真器和测试控制
Voltage regulation=稳压电源
Event controller=事件控制器
Clock(PLL)=时钟
锁相环(PLL)
Memory dma=存储器
直接存储器存取(DMA)
Watchdog timer=监视定时器
Real Time clock=实时时钟
Core=内核
48 KB Instruction SRAM/Cache=48 KB指令
静态存储器(SRAM)
和高速缓存
32 KB Instruction rom="32" KB指令
只读存储器(ROM)
32 KB Data SRAM/Cache=32 KB数据
静态存储器(SRAM)
和高速缓存
4 KB Scratchpad ram="4" KB
高速暂存
随机存储器(RAM)
System Interface unit=系统接口单元
External Memory interface=外部存储器接口
High Speed I/O=高速I/O端口
Parallel Peripheral Interface/GPIO=并行外围接口(PPI)
和通用输入输出接口(GPIO)
UART=通用异步收发器
SPI=串行外围接口(SPI)
Hi-speed Serial ports=高速串行端口
PCI/USB=可编程通信接口(PCI)和通用串行总线(USB)
Timers 0/1/2=定时器0,1,2
Peripheral blocks=外围设备单元
一类新型的DSP也提供一套RISC指令系统集、存储器管理单元、事件控制器和多种外设以便在一颗单
芯片内提供大量计算和高效系统控制功能。
DSP与MCU比较
首先让我们回顾一下DSP和MCU的典型功能。DSP主要是在一单个时钟周期内尽可能完成多个MAC(乘法
和累加)操作。为了这一点,指令的操作代码通常是可变的超长的指令字(VLIW)。DSP也适于工作在紧
密、高效的环路中。另外,为了达到性能指标通常需要编写优化的汇编代码。由于DSP的算法程序一般装
在小容量、短等待时间的内置存储器中,所以代码密度通常不是大问题。
像DSP主要用于完成计算一样,MCU主要用于完成控制功能。同样地,典型的MCU应用包括许多条件操
作,在程序流程中频繁地跳转。通常使用C或者C++语言编写程序。代码密度极为重要,并且根据编译代
码的长度来评估算法。存储器系统是基于高速缓存从而允许该系统设计工程师用较长等待时间从较大的存
储器中调用较大程序。利用基于高速缓存系统,程序员不需要考虑如何以及何时将指令输入到内核去执行
。
统一的DSP和MCU兼备两者的优点。它的指令集由16 bit,32 bit和64 bit操作码组成,但是由于最常
用的指令采用16 bit编码,所以编译代码密度大小与那些流行的MCU相同。另外,它包括一个存储器保护
功能以及指令高速缓存和数据高速缓存,作为整个存储器管理单元(MMU)的一部分。此外,容易提供一
套完整的C/C++开发工具,提供可选汇编语言或者全部汇编语言适合算法优化的编程。
支持RTOS
系统控制的一个重要方面是任务管理。实时操作系统(RTOS)逐渐地用于控制复杂系统中多种正在进
行的和同时发生的任务。通过提供对任务调度与管理的支持,RTOS简化了编程模式,这通常是由MCU控制
的,由于普通的DSP不具备支持RTOS需要的所有功能以便有效地控制。
然而,统一的DSP和MCU促进了RTOS几个重要功能的发展。第一个是限制访问功能以保护或者保留存储
单元。第二个是配备单独的堆栈和帧指针以减少操作系统(OS)请求以及中断和异常处理所需的等待时间
。第三个是具备单独的用户操作模式和管理员操作模式。过去,DSP按照等效于管理员操作模式工作,从
而允许在任何时间完全访问所有的系统资源。然而MCU提供类似的在用户操作模式,它允许在OS的顶层运
行应用软件。现在,在一个统一的体系结构下提供两种操作模式,因为增强的DSP系统能够限制用户应用
软件仅通过OS访问系统资源。
外围设备
MCU的一个优点是包含使用灵活和种类齐全的外围设备。作为通用的嵌入式控制器,它们通常具备可
编程输入输出(I/O)标志、定时器、串行接口和日益增加越来越复杂的标准接口。MCU外围设备的主要作
用是嵌入式控制,而不是大量计算。例如,一个实时时钟信号可以唤醒一只温度传感器用以采集环境温度
并且将一个延迟的信息通过I/O引脚反馈到MCU。然后,一个定时器的脉冲宽度调制(PWM)输出相应地能
够增加或者减小风扇电机的转速。
像MCU一样,统一的DSP和MCU具备一套系统控制外围设备(例如,实时时钟、多功能定时器、监视定
时器、双向标志位引脚)。然而,它还包括一些高速接口(例如,PCI、异步或者同步存储器控制器、USB
、并行视频接口)以便通过这些接口,与许多DMA通道配合快速搬移数据,从而有助于有效利用高速DSP内
核的信号处理能力。
电源管理
功耗控制一直是嵌入式控制器的一项功能。但是,当系统要求DSP具有优良的性能时,对其电源的选
择就不太理想。如果将独立的MCU和DSP芯片应用于电源敏感的场合,通常必须为每个芯片提供一个单独的
开关稳压器,因为这两个器件的内核电压经常不一致。这会导致降低电源变换效率和增加设计器件的引脚
数目,最终增加布线的复杂程度和解决方案的成本。此外,当MCU和DSP的内核集成到一个芯片上时,电源
解决方案本质上不是最佳的,因为它必须满足2个完全独立并具有不同负载特性处理器的需求。
将这种情况与统一的DSP和MCU相比较,它包含一个集成动态电源管理(DPM)控制器。由于它是只有
一个处理器的体系结构,所以该控制器能够完全适合给定应用的需求。它提供几种固有的电源模式以支持
多种系统性能等级。另外,对于未使用的时钟和L2存储器可选择性地禁止。该PLL的频率可在一个宽范围
(通常1倍~31倍)进行调节,以满足在DSP和MCU内部多层次的处理需求。最后能够调节电压(外部或者
通过一个集成的开关控制器)以提供指数式的节省功耗。
由于系统成本、开发容易、器件采购和升级能力的原因,设计工程师正趋向采用一种单芯片解决方案
用于嵌入式信号处理解决方案。这种单芯片解决方案必须能够同样好地完成DSP和MCU的功能,所以有必要
提出一种统一的处理器体系结构。面对MCU的挑战,比较简单的解决方案是将MCU的功能合并到一个高性能
的DSP内核,而不是与此相反。当今一个统一的DSP和MCU平台(由Blackfin™ DSP系列产品说明)已经投放
二、请问FPGA与DSP有什么区别?
请问FPGA与DSP有什么区别?
这么说吧
DSP是处理器,它的作用是高速执行串行算法,数字信号处理常用。
FPGA是一块逻辑门电路阵列,通过改变其内部逻辑单元的链接,用它能够实现各种各样的 组合数字电路。
这两者之间没有什么必然的联系,但您之所以一起问 也许是因为 现在FPGA由于逻辑单元数量节节攀升,导致在一些高规格的FPGA芯片上已经能够实现DSP处理器了(或者单片机 ARM的软核) 通过植入DSP处理器的软核,在FPGA上能够实现灵活的设计,最终节约开发设计周期和成本。
FPGA与单片机,DSP,PLC,DCS有什么区别啊?
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
MCU嵌入式微控制器(Microcontroller Unit)简称单片机,是典型的集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
FPGA与单片机比较,相当于FPGA用EDA硬件描述语言(软件)实现了单片机的硬件功能。单片机接口单一,一般只能提供TTL,CMOS等接口电平,其它的就需要外围电路实现;而现在FPGA的发展,大有超越和包含CPU的趋势,甚至能涵盖整个系统——只有想不到,没有做不到。
但是单片机简单实用,在机电工控领域应用广泛;而FPGA前途无量但复杂难学……
DSP(digital signal processor)与单片机区别在于核心的DSP核的运算能力(信号处理能力,如时钟频率、加乘法器、特定事件处理硬件等)与接口控制能力等。但是也有结合了DSP与单片机的产品问世,可见各种优缺点。关键看产品的需求了。
PLC (Programmable Logic Controller,可编程逻辑控制器)可以说是加强型的工业单片机,可适应于较为恶劣的工作环境。她的进一步开发,可以应用梯形图编写等等方法实现逻辑控制等。
DCS(distributedcontrolsystems)是一种“分散式控制系统”,而 PLC(可编程控制器)只是一种控制“装置”,两者是“系统”与“装置”的区别。系统可以实现任何装置的功能与协调,PLC装置只实现本单元所具备的功能。
具体你可以参考其他资料,希望回答了您的问题……
GPU与DSP有什么区别
GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。GPU是相对于CPU的一个概念,由于在现代的计算机中(特别是家用系统,游戏的发烧友)图形的处理变得越来越重要,需要一个专门的图形的核心处理器。
GPU的作用
GPU是显示卡的“心脏”,也就相当于CPU在电脑中的作用,它决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。显示芯片通常是显示卡上最大的芯片(也是引脚最多的)。现在市场上的显卡大多采用NVIDIA和ATI两家公司的图形处理芯片。
于是NVIDIA公司在1999年发布GeForce 256图形处理芯片时首先提出GPU的概念。GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时。GPU所采用的核心技术有硬体T&L、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬体T&L技术可以说是GPU的标志。
简单说GPU就是能够从硬件上支持T&L(Transform and Lighting,多边形转换与光源处理)的显示芯片,因为T&L是3D渲染中的一个重要部分,其作用是计算多边形的3D位置和处理动态光线效果,也可以称为“几何处理”。一个好的T&L单元,可以提供细致的3D物体和高级的光线特效;只大多数PC中,T&L的大部分运算是交由CPU处理的(这就也就是所谓的软件T&L),由于CPU的任务繁多,除了T&L之外,还要做内存管理、输入响应等非3D图形处理工作,因此在实际运算的时候性能会大打折扣,常常出现显卡等待CPU数据的情况,其运算速度远跟不上今天复杂三维游戏的要求。即使CPU的工作频率超过1GHz或更高,对它的帮助也不大,由于这是PC本身设计造成的问题,与CPU的速度无太大关系。
GPU与DSP的区别
GPU在几个主要方面有别于DSP架构。其所有计算均使用浮点算法,而且目前还没有位或整数运算指令。此外,由于GPU专为图像处理设计,因此存储系统实际上是一个二维的分段存储空间,包括一个区段号(从中读取图像)和二维地址(图像中的X、Y坐标)。此外,没有任何间接写指令。输出写地址由光栅处理器确定,而且不能由程序改变。这对于自然分布在存储器之中的算法而言是极大的挑战。最后一点,不同碎片的处理过程间不允许通信。实际上,碎片处理器是一个SIMD数据并行执行单元,在所有碎片中独立执行代码。
尽管有上述约束,但是GPU还是可以有效地执行多种运算,从线性代数和信号处理到数值仿真。虽然概念简单,但新用户在使用GPU计算时还是会感到迷惑,因为GPU需要专有的图形知识。这种情况下,一些软件工具可以提供帮助。两种高级描影语言CG和HLSL能够让用户编写类似C的代码,随后编译成碎片程序汇编语言。Brook是专为GPU计算设计,且不需要图形知识的高级语言。因此对第一次使用GPU进行开发的工作人员而言,它可以算是一个很好的起点。Brook是C语言的延伸,整合了可以直接映射到GPU的简单数据并行编程构造。经 GPU存储和操作的数据被形象地比喻成“流”(stream),类似于标准C中的数组。核心(Kernel)是在流上操作的函数。在一系列输入流上调用一个核心函数意味着在流元素上实施了隐含的循环,即对每一个流元素调用核心体。Brook还提供了约简机制,例如对一个流中所有的元素进行和、最大值或乘积计算。Brook还完全隐藏了图形API的所有细节,并把GPU中类似二维存储器系统这样许多用户不熟悉的部分进行了虚拟化处理。用Brook编写的应用程序包括线性代数子程序、快速傅立叶转换、光线追踪和图像处理。利用ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU,在相同高速缓存、SSE汇编优化Pentium 4执行条件下,许多此类应用的速度提升高达7倍之多。
对GPU计算感兴趣的用户努力将算法映射到图形基本元素。类似Brook这样的高级编程语言的问世使编程新手也能够很容易就掌握GPU的性能优势。访问GPU计算功能的便利性也使得GPU的演变将继续下去,不仅仅作为绘制引擎,而是会成为个人电脑的主要计算引擎。
EDA 与FPGA 有什么区别
FPGA是一种芯片,EDA是电子设计自动化的意思,是一种技术,两者谈区别似乎不太恰当,利用EDA技术可以在FPGA芯片上构造自己所需的硬件电路,EDA技术包括编写verilog代码或者VHDL代码,仿真、综合。
有人知道DSP ARM OMAP FPGA都有什么区别吗?
老大,你问的问题太直接了吧。。。
DSP,一般用于复杂而要求实时的数字信号处理上,比如图像处理、音频处理等。因为其内部至少有2个ALU(逻辑运算单元),所以其支持并行指令(并行32bit加法)。有的厂家的DSP根据其特点,内嵌硬件视频、音频处理IP。如ADI的Blackfin5xx系列DSP就内嵌了多个视频处理IP,对图像处理有很快的响应。
ARM,本人搞得不多。了解过三星的S3C6410 & 意法半导体的STM32F107。感觉,就内核而言,与MCU比较接近。但是,多了DLL、cache等高性能机制。而且,根据芯片应用不通,其还具备图像处理、2D加速等硬件IP。ARM的控制性能应该比DSP强,因为其接口种类、驱动强度等更丰富吧,但高速处理能力没有DSP强。毕竟DSP有多个ALU&硬件视频、音频处理IP。
OMAP,是TI公司的利器吧。没怎么用过,只是了解过一点点。好像,里面集成了ARM9 + DSP了。可以说是嵌入式中信号处理与外设控制的很好结合了。但是IC的价格也很给力,200多RMB!
FPGA,最后说说它吧。在相同频率下,任何CPU对外界信号的响应都没有FPGA快!因为CPU对外界的响应,尤其是中断,需要几个机器周期,中断下甚至还得进行压栈过程!而FPGA就没有这些琐事了,其运行完全按照同步时钟来的。CPU不是基于同步电路设计的,其执行是按照指令周期为最小时间单位(即使使用指令流水)。FPGA完全基于同步电路设计,其执行完全按照电路的时钟进行的,其没有指令的。所以,FPGA最适合做高速编码与解码、视频缓冲接口等逻辑不是很复杂,但是对时间要求很严格的场合。
这里,只能简单的讲一讲了,具体的关系很是很复杂很有内容的。
请问co *** osworks与COSMOS有什么区别
我理解co *** osworks是COSMOS的一部分,co *** osworks是分析用的,还有co *** o *** otion等,应该都是co *** os的一部分 查看原帖>>
请问: ourself 与ourselves有什么区别
ourselves
pron.
1. (反身代词)我们自己
We have bought ourselves a new house.
我们给自己买了一栋新房子。
2. (用以加强语气)我们亲自,我们本人
We have a bathroom to ourselves.
我们自己有一间浴室,不必和人共用。
We did it by ourselves.
我们自己做了。
We ourselves built the house.
我们自己造的房子。
We renovated the old furniture ourselves.
我们自己动手把旧家具整修如新。
3. 我们正常的情绪;我们的正常健康状况
ourself
pron.
1. 本人
都是代词,唯一的区别就是,ourself只有一个意思吧!?
请问know of 与know有什么区别?
■know作“认识”、“知道”解
例句:
1.I know your brother but not your sister.
我认识你的弟弟, 但不认识你的妹妹。
2.We've known each other eight years.
我们相识已有八年了。
■know of 作“ 听说过”、“ 略知”解。
例句:
1.Do you know Mr Morrison? No, but I know of him.
你认识莫里森先生吗? 不认识, 但是我听说过他。
2.I know o f Mr. Edward McCrath, of couse. But I don't know him.
我当然听说过爱德华·麦克拉斯先生,但是我不认识他。
请问PET与APET有什么区别?
pet分为纤维级和非纤维级的聚酯切片统称,非纤维级还有瓶,薄膜,等!apet是和pvc做对比的,比pvc强度高百分之20以上,apet可以用做胶片,食品包装,建筑,汽车等上面的应用,(120度范围可以长期使用,短期可以在150度范围使用,)可以阻挡紫外线等功能!
请问innerHTML与innerTest有什么区别?
一楼的说法已经非常明确了,innerHTML就是在JS里加入HTML标签代码。而innerText则是插入文本内容。至于简单实例,我留了个地址给你,你看看。
三、dsp信息流优化是什么?
就是出价和创意的优化,说简单点就是怎样做才是最好的
四、对DSP而言,CCS用C语言编程和汇编编程,二者的效率相差多少?
我用的是28XX系列的,不知道经验对你有没有用,因为不同系列的芯片多少有些差别。
TI提供的库已经相当可以了,兼顾易用与效率。我当时做过这样的测试
1. 用IQMATH实现
2. 直接C语言实现
3. C语言优化实现
4. 原生汇编实现
IQMATH的运行周期在1000左右,比方案3快几十个周期,比方案4慢几个周期,方案2是10000多个周期。
另外,因为只是单独测的算法,汇编之所以快是快在寄存器的使用上,操作数可以直接入寄存器,但是考虑到程序其他部分是用C语言编写的话,把操作栈的时间也加上,并不比方案1快。毕竟我对TI的汇编吃的也不透。
在编写上,无疑是方案1提供了最接近C语言风格的实现,几乎不用考虑ISA方面的问题。
另外对于执行效率,我觉得主要考虑三点:
1.分支的使用
CCS对C语言的优化我没做过太多比对。其实单从反汇编的结果看,我接触过的嵌入式开发环境的编译器都能做出很好的优化。但是几乎每个编译器都会在逻辑的优化上有欠缺——它只能对一些显而易见的判断条件进行优化,而在写程序的过程中,我们经常出于易读性的考虑,或者稳定性的考虑,或者其他的考虑加入几乎不会发生的分支,这样的分支判断会消耗一定比率的代码段执行效率,视乎代码段内有用功能的长度而定,越长这个比率越小,越短这个比率越高。
2.一般操作,就是各种赋值操作
在一般的操作上,编译器的优化已经很令人满意了,基本上可以作为编写汇编的范本。我觉得所谓效率能达到90%就是针对这个部分说的。
3.特殊操作,比如对整块内存的操作,或者是浮点运算上。
在一些特殊的操作上,就要看是否有现成的库,或者看硬件是否支持。比如对整块内存操作就别用循环一个字节一个字节的搬了。
以上三点都能考虑到的话,相信执行效率方面已经没有太大的提升空间了。
另外如果你的代码发生在初始化部分,也就是只在系统运行开始的时候运行一次,那么优化不优化其实没有太大的必要,除非你对系统初始化的时间有严格的要求。但是如果你的代码是作为任务要被反复运行的,那就有优化的必要了。
在CCS里有代码消耗时钟周期的统计,如果你觉得某段代码效率低下的话,可以先分段进行消耗时钟周期的计算,这样优化比较有针对性。
以上就是关于dsp代码优化等级相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: