打印

帮看一下理论周期计算正不正确

[复制链接]
787|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
惊鸿一笑|  楼主 | 2018-8-5 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
是这么算的嘛,,取数据,和,存数据时间还要不要算上?

相关帖子

沙发
惊鸿一笑|  楼主 | 2018-8-6 10:22 | 只看该作者
大佬们,刚看一下啊

使用特权

评论回复
板凳
zhangmangui| | 2018-8-6 22:11 | 只看该作者
应该不止512个   建议跑一下试试

使用特权

评论回复
地板
惊鸿一笑|  楼主 | 2018-8-7 17:37 | 只看该作者
zhangmangui 发表于 2018-8-6 22:11
应该不止512个   建议跑一下试试

#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);

这个是主函数

使用特权

评论回复
5
惊鸿一笑|  楼主 | 2018-8-7 17:39 | 只看该作者
zhangmangui 发表于 2018-8-6 22:11
应该不止512个   建议跑一下试试

        .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个时钟周期
汇编应该是运行最块的,
就是看到这个执行周期,,我才疑惑理论周期到底怎么算?

使用特权

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

本版积分规则

1

主题

13

帖子

1

粉丝