Dhrystone 比较GD32与STM32速度

[复制链接]
7790|33
 楼主 | 2013-7-13 10:45 | 显示全部楼层 |阅读模式
本帖最后由 listentoenglish 于 2013-7-15 14:25 编辑

Dhrystone比较GD32与STM32速度.

56M GD32比72M STM32快,108M GD32  比72M STM32 两倍还快

编译器:IAR 6.40
STM32F103测试结果:
//==============================================================================
//30.2ms @24M FLASH 1000LOPS
//1000/30.2/1.757=18.8461DMIPS
//18.8461/24.0000=0.7853DMIPS/MHz

//42.0ms @24M RAM 1000LOPS
//1000/42.0/1.757=13.5512DMIPS
//13.5512/24.0000=0.5646DMIPS/MHz

//25.2ms @36M FLASH 1000LOPS
//1000/25.2/1.757=22.5854DMIPS
//22.5854/36.0000=0.6274DMIPS/MHz

//27.8ms @36M RAM 1000LOPS
//1000/27.8/1.757=20.4731DMIPS
//20.4731/36.0000=0.5687DMIPS/MHz

//19.0ms @48M FLASH 1000LOPS
//1000/19.0/1.757=29.9554DMIPS
//29.9554/48.0000=0.6241DMIPS/MHz

//20.8ms @48M RAM 1000LOPS
//1000/20.8/1.757=27.3631DMIPS
//27.3631/48.0000=0.5701DMIPS/MHz

//21.8ms @56M FLASH 1000LOPS
//1000/21.8/1.757=26.1079DMIPS
//26.1079/56.0000=0.4662DMIPS/MHz

//18.0ms @56M RAM 1000LOPS
//1000/18.0/1.757=31.6196DMIPS
//31.6196/72.0000=0.4392DMIPS/MHz

//17.0ms @72M FLASH
//1000/17.0/1.757=33.4795DMIPS
//33.4795/72.0000=0.4650DMIPS/MHz

//14.0ms @72M RAM
//1000/14.0/1.757=40.6537DMIPS
//40.6537/72.0000=0.5646DMIPS/MHz

GD32测试结果
//================================================================================
//37.2ms @24M FLASH 1000LOPS   
//25.0ms @36M FLASH 1000LOPS  
//18.6ms @48M FLASH 1000LOPS   
//16.0ms @56M FLASH 1000LOPS   
//12.4ms @72M FLASH 1000LOPS  
//9.4ms  @96M FLASH 1000LOPS   
//9.0ms @100M FLASH 1000LOPS
//8.4ms @108M FLASH 1000LOPS


同频下:24M  STM32F反而比GD32快。
              36M 以上,GD32更快。

              STM32运算速度与频率不是线性关系。
              GD32运算速度与频率是简单的线性关系。 主频是几倍关系,运算速度就是几倍的关系。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2013-7-13 11:23 | 显示全部楼层
关键是怎么测试的啊??
| 2013-7-13 22:21 | 显示全部楼层
据说 V6.5 的 Coremark performance 比 V6.4 提高了 13%,改天我也试试。
| 2013-7-13 23:16 | 显示全部楼层
按照楼主的数据,GD32跑56M时都要比STM32跑72M时快。
| 2013-7-15 12:35 | 显示全部楼层
是这样滴不?

| 2013-7-15 12:47 | 显示全部楼层
永远的不知 发表于 2013-7-13 23:16
按照楼主的数据,GD32跑56M时都要比STM32跑72M时快。

我用另外的程序测试过,确实是这样!
| 2013-7-15 13:34 | 显示全部楼层
本帖最后由 GONGO 于 2013-7-15 13:38 编辑

没太仔细研究你的测试方法,但我觉得你还可以在研究一下,
1. 你对 ST 的测试中

//30.2ms @24M FLASH 1000LOPS
//1000/30.2/1.757=18.8461DMIPS
//18.8461/24.0000=0.7853DMIPS/MHz

//42.0ms @24M RAM 1000LOPS
//1000/42.0/1.757=13.5512DMIPS
//13.5512/24.0000=0.5646DMIPS/MHz

//25.2ms @36M FLASH 1000LOPS
//1000/25.2/1.757=22.5854DMIPS
//22.5854/36.0000=0.6274DMIPS/MHz

//27.8ms @36M RAM 1000LOPS
//1000/27.8/1.757=20.4731DMIPS
//20.4731/36.0000=0.5687DMIPS/MHz

//19.0ms @48M FLASH 1000LOPS
//1000/19.0/1.757=29.9554DMIPS
//29.9554/48.0000=0.6241DMIPS/MHz

//20.8ms @48M RAM 1000LOPS
//1000/20.8/1.757=27.3631DMIPS
//27.3631/48.0000=0.5701DMIPS/MHz

24M 36M 48M 你测试得 RAM 中的速度都比FLash中的慢,应该是有问题的?

2.道理上,GD 的结果应该和在RAM中的速度差不多。


| 2013-7-15 13:40 | 显示全部楼层
周立功GD32 发表于 2013-7-15 12:47
我用另外的程序测试过,确实是这样!

56M下快是一定的,只是快多少是和程序的内容相关的。
程序中跳转越多,差别越大。
 楼主 | 2013-7-15 14:26 | 显示全部楼层
GONGO 发表于 2013-7-15 13:34
没太仔细研究你的测试方法,但我觉得你还可以在研究一下,
1. 你对 ST 的测试中

24M 36M 48M 你测试得 RAM 中的速度都比FLash中的慢,应该是有问题的?
----------------
确实如此。
| 2013-7-18 10:21 | 显示全部楼层
本帖最后由 不爱说话 于 2013-7-18 10:23 编辑

RAM中跑得慢也是有可能的。因为程序和数据都放RAM里了,所以CPU对程序和数据的读写都走RAM这一个总线,而在Flash中运行,程序和数据的读写是各走各的总线自然会快的。
| 2013-7-18 12:31 | 显示全部楼层
不爱说话 发表于 2013-7-18 10:21
RAM中跑得慢也是有可能的。因为程序和数据都放RAM里了,所以CPU对程序和数据的读写都走RAM这一个总线,而在 ...

这样想也是有道理的,但是问题是,flash 和 RAM 的 fetch 速度要差很远



这个测试如果真是这样,就应该说明 BUS  Matrix 效率比较低。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2013-7-19 10:41 | 显示全部楼层
10X系列的stm32没有flash加速,36M以上要插入等待周期,楼主的测试结果正反应了这一点,GD主要是得益于flash速度快。用2系列测测看怎样?
| 2013-7-19 14:56 | 显示全部楼层
GONGO 发表于 2013-7-18 12:31
这样想也是有道理的,但是问题是,flash 和 RAM 的 fetch 速度要差很远

事实就是这样的。任凭什么架构的总线、接口,都是访问同一个SRAM。这是问题的关键所在,瓶颈在这。
| 2013-7-24 13:50 | 显示全部楼层
本帖最后由 GONGO 于 2013-7-24 14:15 编辑
不爱说话 发表于 2013-7-19 14:56
事实就是这样的。任凭什么架构的总线、接口,都是访问同一个SRAM。这是问题的关键所在,瓶颈在这。 ...

这个不能这样笼统的说的,虽然是访问同一个外部SRAM,但 Core 对于 SRAM 的访问速度也是一个重要指标。
在哈弗架构下,并不是每个周期 DCODE 和 ICODE 都要访问SRAM,要取决于程序以及分支预测的能力。
另外,测试程序的结构也有很大的影响。如果是使用寄存器操作比较多,自然对于外部SRAM的访问就会较少。
这个就是编译器的一个重要选项,或者选择比较快的速度,或者选择比较小的存储空间。

| 2013-7-25 10:49 | 显示全部楼层
本帖最后由 不爱说话 于 2013-7-25 10:51 编辑

现在事实很明显,程序是一个程序,不存在测试程序访问寄存器多少的差别。只是1个运行在flash里,另一个跑在ram里,ram速度是一定的,让DCODE和ICODE都从一个接口读取自然就会慢啦。这没什么可商榷的。
 楼主 | 2013-7-27 09:50 | 显示全部楼层
RAM运行与FLASH运行慢,尤其是跳转指令。

一个简单的循环就能测试出来。
| 2013-11-27 22:38 | 显示全部楼层
好奇怪
| 2013-11-27 22:49 | 显示全部楼层
性能不错啊
| 2013-11-27 23:15 | 显示全部楼层
前者貌似更好一些
| 2013-11-28 09:05 | 显示全部楼层
STM32F107都好多年了,与207/407比对怎么样?
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表