leecny2012 发表于 2013-6-2 14:21:51

不敢相信,LPC1768的256字节数据copy只需要2us时间!

不敢相信,LPC1768的256字节数据copy只需要2us时间!测试代码如下:
    TIMER0_Init();
      for (i=0;i<256;i++)
    {
      xx=i;
    }
    OS_ENTER_CRITICAL();
    tt = LPC_TIM0->TC;
    memcpy(yy,xx,256);
    zz = LPC_TIM0->TC;
    ww= zz-tt;
    OS_EXIT_CRITICAL();
该测试代码计算了memcpy(yy,xx,256)的运行时间。请问大家,有这么快么?

leecny2012 发表于 2013-6-2 14:28:46

而且4000个字节只花了31us

wye11083 发表于 2013-6-2 14:34:27

cache操作,当然快了。100MHz主频,2us是正常的。

spy2008 发表于 2013-6-2 20:58:17

多高主频下运行?

leecny2012 发表于 2013-6-2 21:08:29

96mhz96mhz

armstrong 发表于 2013-6-7 13:50:19

这还能骗你不成?首先,Cortex-M3是哈佛总线结构,也就是指令、数据总线分离的;其次,NXP充分发挥内核特性,设计了AHB总线矩阵;再次,NXP设计了flash加速控制器,使得代码在flash中的运行速度接近主频!如果你的程序代码在flash里面执行,数据放在内部SRAM,这是指令和数据的访问是并行的,达到这个速度是很自然的了。
其它CM3芯片没有NXP设计得这么充分,所以我喜欢NXP。

BeichenPeng 发表于 2013-6-7 16:04:23

NXP有这么快么?没测过。以前测过ST的F2,120M主频,从main跳进入一个函数,做几个bool判断后出来就花了2us了。

Clinging 发表于 2013-6-7 16:09:35

就算是120M主频,每个时钟周期复制一字节,也不止2微秒

使用memcp()时,或许有部分32位对齐的复制操作,不然不可能这么快

NJ8888 发表于 2013-6-7 16:12:22

你首先需要确认2us对应的那个计时器工作速度,这样才能根据ww来算,还有种可能,流水线导致memcpy没执行完毕先执行读计时器,总之我认为你测量错了想想,2/256=8ns

NJ8888 发表于 2013-6-8 21:39:08

楼主失踪了?

leecny2012 发表于 2013-6-9 19:41:40

看来大家都特别感兴趣,我测的就是2us,大家都解释了,应该没疑问

armstrong 发表于 2013-6-10 20:07:08

Clinging 发表于 2013-6-7 16:09 static/image/common/back.gif
就算是120M主频,每个时钟周期复制一字节,也不止2微秒

使用memcp()时,或许有部分32位对齐的复制操作,不 ...

看到人家调用memcpy()函数没?你用调试方法看看memcpy的实现方式,这个函数很牛逼的,它先1字节为单位拷贝那些非4字节对齐的数据,然后4字节为单位拷贝剩余的数据,最后再看看有没有剩余的不足4字节的数据,如果有在以1字节为单位拷贝,就这样,优化了大量拷贝时间和循环时间。

armstrong 发表于 2013-6-10 20:11:32

ARM还有块拷贝指令,一次能拷贝4字节的n整数倍。memcpy函数会见机行事的!

cyr_hongfeng 发表于 2013-6-10 20:45:16

搞的也想弄个LPC玩玩

太阳哥 发表于 2013-6-10 22:16:49

感觉M4内核,恩智浦的也比STM32的牛逼,而且货源好。

leecny2012 发表于 2013-6-10 22:18:35

NXP的什么都好,就资料写的不好

king_20_10 发表于 2013-6-19 13:09:15

ww具体等于多少啊?
页: [1]
查看完整版本: 不敢相信,LPC1768的256字节数据copy只需要2us时间!