tomzbj 发表于 2021-3-31 11:08:09

请问哪里能找到STC的Dhrystone数据?

在某个地方看到“Dhrystone 2.1测试表明它的运行速度同频率比原始的8051快69.7倍以上,而不需要外部算术加速单元(如MDU),以最大频率运行时速度超过原始8051的1500倍以上!”
但是没说具体到底多少DMIPS

在另一个地方看到STC15能跑到36 DMIPS,有点不可思议,比AVR快几倍,已经接近48M的stm32f0xx的水平了。
有没有具体的测试数据?

takashiki 发表于 2021-3-31 12:02:39

STC15能跑到36 DMIPS你看真相信啊。人家测的是36 MIPS,全部跑单周期指令。看看AVR吹的,16MHz时高达16MIPS。然后这个再进一步吹,混淆下DMIPS和MIPS,就是你看到的了

lindabell 发表于 2021-3-31 12:10:52

我有疑惑单周期指令就是向MOV这样的指令一个周期
向i++;可能需要很多周期,
还有间接寻址等等要花费很多周期。

kundi 发表于 2021-3-31 12:12:13

这个好像是某个80251的内核吧,和STC16很类似,但是有一些差异,STC16不用MDU和FPMU时比同频的M0内核快。

chunjiu 发表于 2021-3-31 12:21:01

lindabell 发表于 2021-3-31 12:10
我有疑惑单周期指令就是向MOV这样的指令一个周期
向i++;可能需要很多周期,
还有间接寻址等等要花费很多周 ...

兄弟 , 你将 C 和机器指令搞混淆了 ...

modbus 发表于 2021-3-31 12:38:31

STC跑Dhrystone 2.1要优化下数据才能看,比如关键变量要定义为DATA类型,有些32位变量实际上定义为16位变量甚至8位变量也行,在32位机上影响不大,但在16位机和8位机上却影响很大,Dhrystone 2.1就是为32位机性能测试而生的,8位机的话不针对性优化测试数据绝对难看

wye11083 发表于 2021-3-31 12:41:30

lindabell 发表于 2021-3-31 12:10
我有疑惑单周期指令就是向MOV这样的指令一个周期
向i++;可能需要很多周期,
还有间接寻址等等要花费很多周 ...

不会。优化过之后就一条inc指令。反而在arm/riscv之类因为没有inc指令,要至少2条指令(ldi x1,1,add a1,x1,a1)

间接寻址看cpu设计,比如x86不到1个周期(大规模并行)。

tomzbj 发表于 2021-3-31 12:45:45

modbus 发表于 2021-3-31 12:38
STC跑Dhrystone 2.1要优化下数据才能看,比如关键变量要定义为DATA类型,有些32位变量实际上定义为16位变量 ...

上面有avr和stm8的跑分啊,不和stm32比,跟这俩8位机比就行了呗

kundi 发表于 2021-3-31 16:30:08

tomzbj 发表于 2021-3-31 12:45
上面有avr和stm8的跑分啊,不和stm32比,跟这俩8位机比就行了呗

有链接吗?百度找不到这个结果

tomzbj 发表于 2021-3-31 16:33:11

本帖最后由 tomzbj 于 2021-3-31 16:34 编辑

用16M主频的NRF24LE1试了一下, 因为ram不够,把两个大数组都从int改成char.
实测883ms跑一个dhrystone, 相当于0.64DMIPS, 0.04DMIPS/MHz, 这个性能只比stm8的1/10强点, 比avr的1/10弱。

NRF24LE1也是1T 8051,看指令集,效率和STC差不多,那说明STC的同频性能应该也是这个水平?
见图

tomzbj 发表于 2021-3-31 16:35:37

kundi 发表于 2021-3-31 16:30
有链接吗?百度找不到这个结果

sorry
我自己测试的结果:
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

kundi 发表于 2021-3-31 16:36:33

tomzbj 发表于 2021-3-31 16:33
用16M主频的NRF24LE1试了一下, 因为ram不够,把两个大数组都从int改成char.
实测883ms跑一个dhrystone, 相 ...

如果换成STC8系列,那就更快了,据说比STC15快30%。因为绝大多数是单周期的指令

tomzbj 发表于 2021-3-31 16:39:53

kundi 发表于 2021-3-31 16:36
如果换成STC8系列,那就更快了,据说比STC15快30%。因为绝大多数是单周期的指令 ...

要不你试试?
把这几个文件加到工程里,主函数里直接调用dhrystone()
看看多长时间执行一次

我这里在NRF24LE1上是883ms一次

kundi 发表于 2021-3-31 16:40:17

tomzbj 发表于 2021-3-31 16:35
sorry
我自己测试的结果:

STC8/15系列你有测试过吗?
还有,可以试试最新的STC16,正在送样中,据说不带MDU和FPMU时,就比M0快

modbus 发表于 2021-3-31 16:47:26

tomzbj 发表于 2021-3-31 16:33
用16M主频的NRF24LE1试了一下, 因为ram不够,把两个大数组都从int改成char.
实测883ms跑一个dhrystone, 相 ...

51核的大数组访问是弱项,只有1个数据指针,并且还只能加1,没有变址寻址指令,访问XRAM只有MOVX A,@DPTR和MOVX @DPTR,A这两条指令

modbus 发表于 2021-3-31 16:52:42

kundi 发表于 2021-3-31 16:36
如果换成STC8系列,那就更快了,据说比STC15快30%。因为绝大多数是单周期的指令 ...

DMIPS测试大数组处理能力很重要,换成STC8估计也快不了多少,虽然STC8有数据指针自动增减和自动切换功能,但编译器用不了

小李非刀 发表于 2021-4-6 23:24:34

lindabell 发表于 2021-3-31 12:10
我有疑惑单周期指令就是向MOV这样的指令一个周期
向i++;可能需要很多周期,
还有间接寻址等等要花费很多周 ...

执行指令速度都是指汇编指令,不是C语言指令。
页: [1]
查看完整版本: 请问哪里能找到STC的Dhrystone数据?