搜索
bottom↓
回复: 13

为什么DSP的指令执行速度可以高于主频?

[复制链接]

出0入0汤圆

发表于 2013-2-28 15:40:01 | 显示全部楼层 |阅读模式
一直搞单片机,不太明白这里,以TI C6000系列DSP为例,1000MIPS,主频才300MHZ左右。实际计算指令消耗的时间应该以MIPS为准吧?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-2-28 15:50:07 | 显示全部楼层
流水线,分支预测,并行处理等,一个时钟周期可以处理几个指令,但是编程不好的话可能会影响性能

出0入0汤圆

 楼主| 发表于 2013-2-28 16:05:00 | 显示全部楼层
本帖最后由 user_ourdev 于 2013-2-28 16:08 编辑
mcu5i51 发表于 2013-2-28 15:50
流水线,分支预测,并行处理等,一个时钟周期可以处理几个指令,但是编程不好的话可能会影响性能 ...


哦~记得上学时学的有的汇编指令一条可以完成乘法和加法两件事,应该就是这个意思吧?

出0入442汤圆

发表于 2013-2-28 16:19:39 | 显示全部楼层
一般的DSP都有四条以上并行流水线,即使用手工调整的汇编代码,DSP是可以达到至少4X主频的性能的。但是问题是没几个人会去手工优化,C编译器一般是不支持并行指令的。所以绝大多数你会发现你写的程序是蜗牛。

出0入0汤圆

发表于 2013-2-28 16:33:50 | 显示全部楼层
原理我不懂,但是编程的时候设置PLL  分频寄存器可以实现
Specify the PLL control register (PLLCR) and divide select (DIVSEL) value.

出0入0汤圆

发表于 2013-2-28 16:40:19 | 显示全部楼层
领教了!

出0入0汤圆

发表于 2013-2-28 17:01:20 | 显示全部楼层
xuancqu 发表于 2013-2-28 16:33
原理我不懂,但是编程的时候设置PLL  分频寄存器可以实现
Specify the PLL control register (PLLCR) and  ...

这个是晶振倍频吧。

出0入0汤圆

发表于 2013-2-28 17:43:23 | 显示全部楼层
哈佛结构 + 特殊的DSP指令 + 指令包(每次取指256位) + 每个时钟周期可并行执行 8 条指令(或6条浮点指令) +  深度流水线.

你说 1000MIPS算啥??? C6000系列中最高的可是接近 6000MIPS/1800MFLOPS的.

出0入0汤圆

 楼主| 发表于 2013-3-1 09:13:31 | 显示全部楼层
monkerman 发表于 2013-2-28 17:43
哈佛结构 + 特殊的DSP指令 + 指令包(每次取指256位) + 每个时钟周期可并行执行 8 条指令(或6条浮点指令) +  ...

1000MIPS举个例子而已。我觉得MIPS这个指标(每个周期并行执行多条指令)主要是做些特殊运算时才能达到,如果是单纯的MOV或者加法还是一个周期一条指令。

出300入477汤圆

发表于 2013-3-1 09:50:04 | 显示全部楼层
本帖最后由 redroof 于 2013-3-1 09:53 编辑
user_ourdev 发表于 2013-3-1 09:13
1000MIPS举个例子而已。我觉得MIPS这个指标(每个周期并行执行多条指令)主要是做些特殊运算时才能达到, ...


C6000每个时钟8条指令好像是这样分配的:可以做4个普通ALU指令(MOV,加减,逻辑操作等等),加上2个Load/Store,加上2个乘法/MAC,因为内部8个功能单元就是这样设计的。
浮点型的好像有2个功能单元只能做整数运算,另外6个单元可作浮点,所以浮点的MIPS是乘6,而整数MIPS乘8
如果你能把指令排成跟它要求的一样,并且无依赖性,就可以一个时钟执行,如果排不出这样的指令,只能空掉某些执行单元。
平常实际上如果能平均并发4条指令,已经是很NB的了。。。
笨一些的算法,最坏情况下只能当作单指令来执行,比如你读入一个数据,对它计算,然后写回,然后读入下一个数据......
(聪明的做法是在一个循环核心里面处理多个数据:读入第3个数据,算第2个数据,写回第1个结果,这样一个时钟就解决了。。。)
当然,人工排这种流水线指令是一种很杀脑细胞的活^_^  如果不是绝对必要,尽量少干。。。

出0入0汤圆

发表于 2013-3-1 10:20:47 来自手机 | 显示全部楼层
水印。。

出0入0汤圆

发表于 2013-3-1 10:23:15 | 显示全部楼层
user_ourdev 发表于 2013-3-1 09:13
1000MIPS举个例子而已。我觉得MIPS这个指标(每个周期并行执行多条指令)主要是做些特殊运算时才能达到, ...

DSP本来就是用于做特殊运算的.

所以.....搞DSP的, 程序优化是门很大很难很有挑战的学问.......不单单是算法层面的...还有语言结构级, 线性汇编/汇编, 编译器........ 都要针对DSP的特殊结构来进行.

ps: MIPS只是一个指标, 宣传作用更大些.

出0入0汤圆

发表于 2013-4-25 17:17:26 | 显示全部楼层
主要还是看指令集结构和处理器结构。比如C6000的一些处理器为超长指令字结构,一个指令包往往包含多条指令,这样的话单位时间内执行的指令条数显然会超过时钟主频

出0入0汤圆

发表于 2013-4-28 13:03:55 | 显示全部楼层
求楼主照片。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-17 17:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表