打印

解释下M4中的SIMD

[复制链接]
2671|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
TI_MCU|  楼主 | 2011-11-25 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 TI_MCU 于 2011-11-25 11:25 编辑

经常有朋友在看到M4的特性后会问到底什么是SIMD,简单讲,SIMD就是单指令多数据(Single Instruction Multiple Data)的缩写。这套东西最早是并行计算机使用的,现在也是DSP中的重要特性。在M4中,SIMD作为M4的DSP特性的一部分,支持了8bit、16bit的SIMD。

在编程的时候,大家经常会用到诸如下面的代码:

char input_A[N] = {1, 2, 3, 4, ...};
char input_B[N] = {1, 2, 3, 4, ...};
char result[N];

for(int i = 0; i < N; i++)
{
    result = input_A * input_B;
}
CPU会在寄存器中存储input_A、input_B、result,每次循环,分别计算result[0]、result[1]、result[2]、result[3]...的结果。

但在M4中,因为寄存器是32bit的,而只用来进行8bit的计算,显然有些浪费。当采用SIMD后,寄存器会将4个8Bit数据放入32bit寄存器,一次完成4个8bit数(32bit)计算。也就是一次计算就可以完成result[0]、result[1]、result[2]、result[3]四个结果的输出。下一个循环就可以直接得到result[4]、result[5]、result[6]、result[7]的结果。这就是8bit的SIMD。

SIMD的神奇功效就是其并行计算的能力,在8bit计算中,四个循环可以合为一个,最多可以减少75%的计算时间。而16bit计算也是同样地道理,两个循环的事情,一个循环可以完成,最多可以减少50%的计算时间。

相关帖子

沙发
xinchen| | 2011-11-25 11:25 | 只看该作者
能给我解释一下msp430的看门狗功能吗?

使用特权

评论回复
板凳
TI_MCU|  楼主 | 2011-11-25 11:34 | 只看该作者
2# xinchen

楼上的太懒了吧...看门狗这种东西百度一下到处都是非常详细的解释,解释SIMD只是因为M4这方面资料比较少

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"

看门狗电路电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段不进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

420

帖子

7

粉丝