- 主题:顺便在这里问问有没有人在51上跑过Dhrystone
我在若干开发板上测的结果如下
NRF24LE1也号称1T 8051,看指令集,效率比STC还稍高一点,结果实测DMIPS/MHz性能只有AVR和STM8的1/10左右
到处都找不到STC的数据,STC官网只说“DMIPS比传统51快69.7倍”,就是不说具体多少
(GD32两个280M的数据是超频的)
(编译器: PC, GD32, STM32, AVR用gcc, STM8是cosmic, NRF24LE1是sdcc)
MCU Opt Freq/MHz Time/ms DMIPS DMIPS/MHz
AMD R5-3600X O3 4350 0.02 24322.73 5.59
AMD R5-3600X Os 4350 0.05 11383.04 2.62
GD32FFPRTGU6 O3 280 1.76 323.38 1.15
GD32F350CBT6 O3 280 1.80 316.20 1.13
STM32F407VET6 O3 168 2.59 219.75 1.31
GD32FFPRTGU6 O3 168 2.93 194.25 1.16
GD32F350CBT6 O3 108 4.57 124.54 1.15
STM32F407VET6 Os 168 4.84 117.59 0.70
STM32F401RET6 O3 84 5.21 109.24 1.30
STM32F103VET6 O3 72 8.71 65.34 0.91
STM32F401RET6 Os 84 9.19 61.93 0.74
STM32F070CBT6 O3 48 14.90 38.20 0.80
STM32F103VET6 Os 72 18.33 31.05 0.43
STM32F407VET6 O3 16 27.00 21.08 1.32
STM32F401RET6 O3 16 27.23 20.90 1.31
STM32F070CBT6 Os 48 27.52 20.68 0.43
STM32F103VET6 O3 8 59.00 9.65 1.21
GD32FFPRTGU6 O3 8 61.50 9.25 1.16
GD32F350CBT6 O3 8 61.55 9.25 1.16
ATMEGA328P O3 16 71.90 7.92 0.49
ATMEGA328P Os 16 74.00 7.69 0.48
STM32F070CBT6 O3 8 80.00 7.11 0.89
STM8L151G6U6 fast 16 107.10 5.31 0.33
STM8S003F3U6 fast 16 107.20 5.31 0.33
STM8S003F3U6 compact 16 108.10 5.27 0.33
STM8L151G6U6 compact 16 121.00 4.70 0.29
NRF24LE1 opt-code-size 16 883.00 0.64 0.04
NRF24LE1 opt-code-speed 16 884.00 0.64 0.04
--
修改:tom6bj FROM 106.121.160.*
FROM 106.121.160.*
私信下核心代码,我在STC上试试
【 在 tom6bj (tom) 的大作中提到: 】
: 我在若干开发板上测的结果如下
: NRF24LE1也号称1T 8051,看指令集,效率比STC还稍高一点,结果实测DMIPS/MHz性能只有AVR和STM8的1/10左右
: 到处都找不到STC的数据,STC官网只说“DMIPS比传统51快69.7倍”,就是不说具体多少
: ...................
--
FROM 36.45.173.*
见附件, nrf24le1的,稍微改改应该就能在stc上跑了
e_lib.h里, avr/stm8/stm32都是用标准库的strcpy和strcmp就可以, 不知道为啥51只能用自己写的,可能是sdcc的问题
以及25和25*25的两个数组本来应该是32位的吧,nrf24le1的ram不够, 8K的STC应该够了,得改回来,你参考一下gd32f350的
【 在 spadger (echo) 的大作中提到: 】
: 私信下核心代码,我在STC上试试
--
FROM 106.121.160.*
附件(40.6KB) dhrystone.zip附件(139.8KB) dhrystone_gd32f350.zip扫了眼,发现ram是在xdata中,众所周知,51访问xdata是很慢的,不过架构定了也没啥好办法。
【 在 tom6bj (tom) 的大作中提到: 】
: 见附件, nrf24le1的,稍微改改应该就能在stc上跑了
: e_lib.h里, avr/stm8/stm32都是用标准库的strcpy和strcmp就可以, 不知道为啥51只能用自己写的,可能是sdcc的问题
: 以及25和25*25的两个数组本来应该是32位的吧,nrf24le1的ram不够, 8K的STC应该够了,得改回来,你参考一下gd32f350的
: ...................
--
FROM 36.45.173.*
只能在xdata吧,25x25 data肯定放不下
【 在 spadger 的大作中提到: 】
: 扫了眼,发现ram是在xdata中,众所周知,51访问xdata是很慢的,不过架构定了也没啥好办法。
:
--
FROM 218.83.127.*
真巧,昨天我在网上找一摸一样的问题,也看到了这个。我就是想告诉客户他换的1T 8051比STM32差多了,用不了
【 在 tom6bj 的大作中提到: 】
: 我在若干开发板上测的结果如下
: NRF24LE1也号称1T 8051,看指令集,效率比STC还稍高一点,结果实测DMIPS/MHz性能只有AVR和STM8的1/10左右
: 到处都找不到STC的数据,STC官网只说“DMIPS比传统51快69.7倍”,就是不说具体多少
: ...................
--
FROM 163.116.200.*
需要几个时钟周期?
不和STM32比, 和AVR、STM8比就行了嘛, STC一直也是这么宣传的
【 在 spadger (echo) 的大作中提到: 】
扫了眼,发现ram是在xdata中,众所周知,51访问xdata是很慢的,不过架构定了也没啥好办法。
【 在 tom6bj (tom) 的大作中提到: 】
: 见附件, nrf24le1的,稍微改改应该就能在stc上跑了
: e_lib.h里, avr/stm8/stm32都是用标准库的strcpy和strcmp就可以, 不知道为啥51只能用自己写的,可能是sdcc的问题
: 以及25和25*25的两个数组本来应该是32位的吧,nrf24le1的ram不够, 8K的STC应该够了,得改回来,你参考一下gd32f350的
: ...................
--
FROM 106.121.160.*
补充一下STC测试结果
型号:STC8G1K17A
频率:22.1184MHz
内存模型:Large,数据全部在xdata,默认的small模式data空间装不下。
编译器:C51.exe V9.59.0.0
速度优化运行时间:476ms
尺寸优化运行时间:482ms
折算到16MHz的话大概是658ms,比nrfle01稍微快一点点,也可能是编译器的差异。
AVR不是太清楚,STM8稍微熟悉一点,这东西说是8位机,实际上就是个16位机。它的X Y SP都是16位的,PC甚至是24位的。51真正寻址快的区域只有256字节。XDATA区域实际是间接寻址的,快不起来。
【 在 tom6bj (tom) 的大作中提到: 】
: 我在若干开发板上测的结果如下
: NRF24LE1也号称1T 8051,看指令集,效率比STC还稍高一点,结果实测DMIPS/MHz性能只有AVR和STM8的1/10左右
: 到处都找不到STC的数据,STC官网只说“DMIPS比传统51快69.7倍”,就是不说具体多少
: ...................
--
FROM 36.45.173.*
zan
strcpy和strcmp试试用标准库的?我这儿用不了, 不知道为啥
stm32和avr,用标准库的strcpy和strcmp快得多
avr有X Y Z三个16位指针,有一部分指令可以操作16位,不过不能象STM8一样原子操作SP。
主要还是寄存多,加上大部分指令单周期吧
【 在 spadger (echo) 的大作中提到: 】
补充一下STC测试结果
型号:STC8G1K17A
频率:22.1184MHz
内存模型:Large,数据全部在xdata,默认的small模式data空间装不下。
编译器:C51.exe V9.59.0.0
速度优化运行时间:476ms
尺寸优化运行时间:482ms
折算到16MHz的话大概是658ms,比nrfle01稍微快一点点,也可能是编译器的差异。
AVR不是太清楚,STM8稍微熟悉一点,这东西说是8位机,实际上就是个16位机。它的X Y SP都是16位的,PC甚至是24位的。51真正寻址快的区域只有256字节。XDATA区域实际是间接寻址的,快不起来。
【 在 tom6bj (tom) 的大作中提到: 】
: 我在若干开发板上测的结果如下
: NRF24LE1也号称1T 8051,看指令集,效率比STC还稍高一点,结果实测DMIPS/MHz性能只有AVR和STM8的1/10左右
: 到处都找不到STC的数据,STC官网只说“DMIPS比传统51快69.7倍”,就是不说具体多少
: ...................
--
FROM 106.121.160.*
换成标准库确实快很多
速度优化:476->235ms
面积优化:482->246ms
我这里也测试了下nRF24LE1
使用标准库,16M主频
速度优化:597ms
面积优化:624ms
16M主频折算到22.1184,分别是432ms和451ms,比STC慢了接近一倍。
【 在 tom6bj (tom) 的大作中提到: 】
: zan
: strcpy和strcmp试试用标准库的?我这儿用不了, 不知道为啥
: stm32和avr,用标准库的strcpy和strcmp快得多
: ...................
--
修改:spadger FROM 36.45.173.*
FROM 36.45.170.*