打印
[MCU]

理论周期计算

[复制链接]
627|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yszong|  楼主 | 2020-10-20 20:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TMS320C6678初学,哪位大神指导一下理论周期怎么算
C6678 单周期定点可算4个32*32bit乘法及加减,
          单周期浮点可算1,2,或4个单精度乘法
         计算复数乘法:
X = a + bi;
Y = c + di
X*Y = (a*c – b*d)+ (a*d + c*b)
初始化程序:
        int a[1024], b[1024] ,c[1024] = {0};
        int N = 1024;
        int i;
        for(i = 0;i < N;i++)
                {
                        a[i] = i;
                        b[i] = i;
                }
//随意定义两个数组a,b,复数实部和虚部放数组相邻位置
总共是512对复数相乘,每次计算需要4次乘法,1加,1减
算完所需的时钟周期 = 512*4/4 = 512 clock
是这么算的嘛,,取数据,和,存数据时间还要不要算上?

使用特权

评论回复

相关帖子

沙发
gongche| | 2020-10-20 21:00 | 只看该作者
应该不止512个   建议跑一下试试

使用特权

评论回复
板凳
yszong|  楼主 | 2020-10-20 21:03 | 只看该作者

#include "c6x.h"
#include "stdio.h"
#include "math.h"

extern int complex_asm(int*x,int*y,int*z,int lenth);

int main (void){

        int a[1024], b[1024] ,c[1024] = {0};
        int N = 1024;
        int i;
        unsigned int time1, time2, time;

        for(i = 0;i < N;i++)
                {
                        a = i;
                        b = i;
                }

        TSCH = 1, TSCL = 1;
        time1 = _itoll(TSCH,TSCL);

                 complex_asm(a, b, c, N);

        time2 = _itoll(TSCH,TSCL);
        time = time2 - time1;

return(0);

这个是主函数

使用特权

评论回复
地板
yszong|  楼主 | 2020-10-20 21:06 | 只看该作者
.global     complex_asm

complex_asm:
                        MVK                .S2                512, B0

LOOP:                  LDDW        .D1                *A4++,A9:A8
                 ||         LDDW        .D2                *B4++,B9:B8

                         SUB                 .s2        B0,1,B0
                         NOP                2
        [B0]        B                 .s1        LOOP


                        MPY                .M1x        A9, B9, A10
                 ||        MPY                .M2x        A8, B8, B10

                        MPY                .M1x        A9, B8, A11
                 ||        MPY                .M2x        A8, B9, B11

                         SUB                .s1x        B10, A10, A14
                        ADD                .L1x        A11, B11, A15
                        STDW     .D                A15:A14, *A6++

                        MV                .S1                A6,A4
                        BNOP    .s2                B3,5

这个是我用汇编写的乘法函数,执行时间,是5135个时钟周期

使用特权

评论回复
5
chenjunt| | 2020-10-20 21:10 | 只看该作者
汇编应该是运行最块的,

使用特权

评论回复
6
kangzj| | 2020-10-20 21:16 | 只看该作者
就是看到这个执行周期,,我才疑惑理论周期到底怎么算?

使用特权

评论回复
7
gwsan| | 2020-11-11 12:53 | 只看该作者
直接做乘**不会拖慢速度

使用特权

评论回复
8
kxsi| | 2020-11-11 12:53 | 只看该作者
每个计算周期需要多长时间大概

使用特权

评论回复
9
nawu| | 2020-11-11 12:54 | 只看该作者
看不太懂汇编代码

使用特权

评论回复
10
qcliu| | 2020-11-11 12:54 | 只看该作者
这两种做过对比吗

使用特权

评论回复
11
tfqi| | 2020-11-11 12:55 | 只看该作者
感觉第二种方式好一点

使用特权

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

本版积分规则

830

主题

11379

帖子

4

粉丝