不敢相信,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)的运行时间。请问大家,有这么快么? 而且4000个字节只花了31us cache操作,当然快了。100MHz主频,2us是正常的。 多高主频下运行? 96mhz96mhz 这还能骗你不成?首先,Cortex-M3是哈佛总线结构,也就是指令、数据总线分离的;其次,NXP充分发挥内核特性,设计了AHB总线矩阵;再次,NXP设计了flash加速控制器,使得代码在flash中的运行速度接近主频!如果你的程序代码在flash里面执行,数据放在内部SRAM,这是指令和数据的访问是并行的,达到这个速度是很自然的了。
其它CM3芯片没有NXP设计得这么充分,所以我喜欢NXP。 NXP有这么快么?没测过。以前测过ST的F2,120M主频,从main跳进入一个函数,做几个bool判断后出来就花了2us了。 就算是120M主频,每个时钟周期复制一字节,也不止2微秒
使用memcp()时,或许有部分32位对齐的复制操作,不然不可能这么快 你首先需要确认2us对应的那个计时器工作速度,这样才能根据ww来算,还有种可能,流水线导致memcpy没执行完毕先执行读计时器,总之我认为你测量错了想想,2/256=8ns 楼主失踪了? 看来大家都特别感兴趣,我测的就是2us,大家都解释了,应该没疑问 Clinging 发表于 2013-6-7 16:09 static/image/common/back.gif
就算是120M主频,每个时钟周期复制一字节,也不止2微秒
使用memcp()时,或许有部分32位对齐的复制操作,不 ...
看到人家调用memcpy()函数没?你用调试方法看看memcpy的实现方式,这个函数很牛逼的,它先1字节为单位拷贝那些非4字节对齐的数据,然后4字节为单位拷贝剩余的数据,最后再看看有没有剩余的不足4字节的数据,如果有在以1字节为单位拷贝,就这样,优化了大量拷贝时间和循环时间。 ARM还有块拷贝指令,一次能拷贝4字节的n整数倍。memcpy函数会见机行事的! 搞的也想弄个LPC玩玩 感觉M4内核,恩智浦的也比STM32的牛逼,而且货源好。 NXP的什么都好,就资料写的不好 ww具体等于多少啊?
页:
[1]