tomzbj 发表于 2021-7-5 15:49:25

实测了STC8A8K64S4A的dhrystone性能

本帖最后由 tomzbj 于 2021-7-6 10:48 编辑

网上一直搜不到数据, 只说STC比传统51快69.7倍, 所以自己买了个开发板来试验.

24M主频, 每254ms完成一次dhrystone, 折算2.24DMIPS, 或者0.09DMIPS/MHz.

确实比NRF24LE1快几倍, 不过同频性能只有AVR的1/5, STM8的1/3左右.

编译器是sdcc, 优化选项用--opt-code-size和--opt-code-speed基本没区别.

顺便贴一下代码尺寸,avr的4144字节, stc的6380字节,nrf24le1的6501字节, stm8l051上5289字节, stm8s003上4721字节. 除了同样1T 51核的nrf24le1就是stc的大了.

在stm32f103ve和stm32f407ve上都是17k左右,问题是,人家总共有512k.

--------------------补充, 一哥们用keil测了--------------------------
STC8G1K17A, 22.1184M, Keil C51 v9.59
速度优化, 235ms, 折算2.42DMIPS, 0.11DMIPS/MHz, 确实比sdcc快一点点
同 频 性 能 是 AVR 的 1/4,STM8 的 1/3, STM32 的 1/11.

哪位再测一下STC16的? 有人说这东西比M0 M3快, 最好还是用数据说话.

mowin 发表于 2021-7-5 15:54:44

能换Keil编译试试吗?不行帮顶

tomzbj 发表于 2021-7-5 15:59:55

mowin 发表于 2021-7-5 15:54
能换Keil编译试试吗?不行帮顶

我这儿没有keil, 只有gcc和sdcc
不过能差多少呢...

MYQQ2021 发表于 2021-7-5 16:22:50

不过同频性能只有AVR的1/5, STM8的1/3左右?我也建议keil试试

tomzbj 发表于 2021-7-5 16:23:55

MYQQ2021 发表于 2021-7-5 16:22
不过同频性能只有AVR的1/5, STM8的1/3左右?我也建议keil试试

dhrystone网上到处有, 你要有keil你试呗
我反正是不用keil的.

kundi 发表于 2021-7-5 17:03:04

stc16才是比传统8051快70倍左右。stc8是8位机,要用dhrystone1.1就行了,2.1版是用于16位或以上的。
我之前用keil,选用stc8仿真,发现在12MHZ下是384dhrystones.程序是keil自带的dhry。

tomzbj 发表于 2021-7-5 17:07:18

kundi 发表于 2021-7-5 17:03
stc16才是比传统8051快70倍左右。stc8是8位机,要用dhrystone1.1就行了,2.1版是用于16位或以上的。
我之前 ...

AVR和STM8不也是8位机吗? 和它俩比, 没啥不公平的吧.

nade 发表于 2021-7-5 17:28:06

历史证明stc宇宙第一不是你说的算的

modbus 发表于 2021-7-5 18:09:13

同频下STC8不可能比传统51快69.7倍,51内核访问XDATA数据是一大劣势,不过用8位机就别指望速度了

modbus 发表于 2021-7-5 18:15:17

AVR的缺点就是代码密度不行,通过牺牲代码密度来获得执行速度

kundi 发表于 2021-7-5 18:26:12

modbus 发表于 2021-7-5 18:15
AVR的缺点就是代码密度不行,通过牺牲代码密度来获得执行速度

是呀,arduino只要是avr的,即使程序很简单,但是编译出来的就比stc8做相同功能得的大很多。

tomzbj 发表于 2021-7-5 21:19:38

kundi 发表于 2021-7-5 18:26
是呀,arduino只要是avr的,即使程序很简单,但是编译出来的就比stc8做相同功能得的大很多。 ...


别信口开河, 拿数据说话!
我这儿的dhrystone程序, avr的4144字节, stc的6380字节,谁的大?

你说avr的大, 贴你的数据!

Heatpump 发表于 2021-7-5 21:36:04

tomzbj 发表于 2021-7-5 21:19
别信口开河, 拿数据说话!
我这儿的dhrystone程序, avr的4144字节, stc的6380字节,谁的大?



反正STC直插M4、力压M3、横推M0、口爆H7、颜射RISC-V、中出A8、强奸X86就是了,各种体位天下无敌!

BOERLBH 发表于 2021-7-5 21:51:35

Heatpump 发表于 2021-7-5 21:36
反正STC直插M4、力压M3、横推M0、口爆H7、颜射RISC-V、中出A8、强奸X86就是了,各种体位天下无敌! ...

{:lol:} {:lol:}   各种姿势都让你掌握了。

1181zjf 发表于 2021-7-6 08:32:19

性能不知道翻翻没有,价格倒是翻了又翻{:titter:}!

国学芯用 发表于 2021-7-6 09:45:02

STC8H4K64TLR-45I-LQFP48 开始送样   

C指针 发表于 2021-7-6 16:40:48

Heatpump 发表于 2021-7-5 21:36
反正STC直插M4、力压M3、横推M0、口爆H7、颜射RISC-V、中出A8、强奸X86就是了,各种体位天下无敌! ...

看来你是个老铁粉了

modbus 发表于 2021-7-6 16:45:40

STM32的代码尺寸怎么那么大,感觉应该最小才是

国学芯用 发表于 2021-7-6 17:06:47

STC8H4K64TLCD-45I-LQFP64一周后送样

tomzbj 发表于 2021-7-6 17:32:45

modbus 发表于 2021-7-6 16:45
STM32的代码尺寸怎么那么大,感觉应该最小才是

sorry, 开了printf-float, 其实不需要
关掉以后8k多一点.

用的是标准库的printf, 几款8位机用的都是elm-chan的xprintf.
如果给stm32也换成xprintf, 可能就是它最小了.

eddia2012 发表于 2021-7-6 23:03:32

支持楼主数据说话!

cddyy 发表于 2021-7-6 23:12:45

AVR的架构在8位机里还是很先进的。

kundi 发表于 2021-7-6 23:54:53

不知道avr8架构,专利都过期了吗?

tomzbj 发表于 2021-7-7 09:05:35

kundi 发表于 2021-7-6 23:54
不知道avr8架构,专利都过期了吗?

国产山寨有啊, LGT, 在amobbs火过一阵, 现在好象没动静了

kundi 发表于 2021-7-7 12:19:58

tomzbj 发表于 2021-7-7 09:05
国产山寨有啊, LGT, 在amobbs火过一阵, 现在好象没动静了

我不知道会不会是吃官司了,市场上不见什么动静。

ecbm 发表于 2021-7-7 16:08:52

可否提供一下算法的源码呢?

tomzbj 发表于 2021-7-7 17:31:27

ecbm 发表于 2021-7-7 16:08
可否提供一下算法的源码呢?

dhrystone2.1, 网上到处都有啊...

算了,我贴一个

dellric 发表于 2021-7-7 22:48:03

本帖最后由 dellric 于 2021-7-7 22:49 编辑

根据楼主提供程序,KEIL C51 下情况如下:

优化级别:LARGE OPTIMIZE (8,SIZE)
用程序自带的xprintf
Program Size: data=9.0 xdata=838 code=4687

用C51的printf
Program Size: data=15.1 xdata=832 code=4146

优化级别:LARGE OPTIMIZE (9,SIZE)
用C51的printf
Program Size: data=15.1 xdata=832 code=3970




kundi 发表于 2021-7-7 23:46:41

dellric 发表于 2021-7-7 22:48
根据楼主提供程序,KEIL C51 下情况如下:

优化级别:LARGE OPTIMIZE (8,SIZE)


分别测得多少DIMPS,折合到DMIPS/MHZ呢?

kundi 发表于 2021-7-8 01:02:29

这个数据是怎么看的,和我以前见过的dhry测试程序不一样?测量串口输出“.”的间隔时间,再推算一秒有多少个dhry就行?如果是这样的话,还不如把间隔一定时间串口输出“.”改为直接拉高或拉低一个GPIO的电平,方便示波器计时。

tomzbj 发表于 2021-7-8 09:04:49

kundi 发表于 2021-7-8 01:02
这个数据是怎么看的,和我以前见过的dhry测试程序不一样?测量串口输出“.”的间隔时间,再推算一秒有多少个 ...

那有什么不一样了?9600波特率,输出一个.也只需要1毫秒,STC8跑一次dhrystone200多毫秒,这点误差可以忽略不计了吧

倒是STM32需要循环跑100次或者1000次再输出一个.,不然误差就大了.

modbus 发表于 2021-7-8 10:12:33

看了一下KEIL的代码,所有的变量全在XDATA区域,DATA和IDATA都没用到,这速度能快才见鬼了,要根据51的特点进行优化,应该尽量把变量定义在DATA区,比如:
int Int_Glob;
Boolean Bool_Glob;
char Ch_1_Glob, Ch_2_Glob;

char Arr_1_Glob;
这些变量都要加DATA定义,还有指针定义都要指明是DATA区还是XDATA区

modbus 发表于 2021-7-8 10:16:13

本帖最后由 modbus 于 2021-7-8 10:17 编辑

51访问XDATA就MOVX A,@DPTR和MOVX @DPTR,A这两条指令和一个DPTR指针,并且DPTR还只有增1指令没有减1指令,想想这速度也不可能快

tomzbj 发表于 2021-7-8 10:28:41

modbus 发表于 2021-7-8 10:12
看了一下KEIL的代码,所有的变量全在XDATA区域,DATA和IDATA都没用到,这速度能快才见鬼了,要根据51的特点 ...

你再跑一个看看结果呗~

kundi 发表于 2021-7-8 13:13:00

我把28楼的最后一种9级优化,把当中的putc(“.”)改为putc(0x0a),也就是换行,部分输出结果如下:
13-09-22.921->
13-09-23.390->
13-09-23.858->
因为家里面没有逻辑分析器了,我就拿带时间戳的串口查看器看了时间间隔,基本上是间隔468ms,和你们得结果相差很大,不知道是什么问题?

kundi 发表于 2021-7-8 13:28:12

本帖最后由 kundi 于 2021-7-8 13:40 编辑

modbus 发表于 2021-7-8 10:12
看了一下KEIL的代码,所有的变量全在XDATA区域,DATA和IDATA都没用到,这速度能快才见鬼了,要根据51的特点 ...

我照你呢这样做试了一下,发现间隔变得特别小了,变成了47ms。和我上一次回复的条件一样,22.184MHZ,9600bps,9级优化

为了方便和楼主几个月之前发的实验数据比较(见https://www.amobbs.com/thread-5748231-1-1.html),换成16MHZ,也是47ms。


modbus 发表于 2021-7-8 13:42:30

tomzbj 发表于 2021-7-8 10:28
你再跑一个看看结果呗~

手头没有STC8的开发板。51的特点就是小数据量处理效率很高,而大数据量处理效率很低,平时用时都是把使用频率高的变量或者对执行速度要求高的变量定义在DATA区,另外KEIL51的指针定义时指名存储区域和不指名存储区域执行效率相差很大,有可能差10倍都不止

kundi 发表于 2021-7-8 13:42:55

手上有两个之前焊的STC16开发板,稍晚些实验并公布结果,短时间内不能发这么多帖子。

mtdzok 发表于 2021-7-8 14:04:48

不要让软件和编译软件以及个人偏见影响硬件的客观检测,物尽其用就好

tomzbj 发表于 2021-7-8 15:34:52

modbus 发表于 2021-7-8 10:12
看了一下KEIL的代码,所有的变量全在XDATA区域,DATA和IDATA都没用到,这速度能快才见鬼了,要根据51的特点 ...

前面几个变量都加了__data, 没变化,还是254ms

两个数组如果不是__xdata,通不过编译

kundi 发表于 2021-7-8 16:50:26

本帖最后由 kundi 于 2021-7-8 16:59 编辑

换成STC16,仍然保持16MHZ不变,波特率改为115200。此时xdata根本不需要用到(xdata=0),也是用9级优化。发现串口监视器滚动速度比之前stc8在16MHZ下的47ms快很多(可以和第二张图的STM8,AVR比较看),但是问题在于,这样的速度已经超过了串口监视器的极限,会看到同一时间戳出现多次,这就应该改用示波器(逻辑分析器)查看某gpio的电平持续时间,来准确测量完成一次dhry需时间。
虽然今天我因此不能给出STC16具体执行一次dhrystone所需的时间,但是可以肯定的是,同频速度还是能够比AVR8和STM8要快很多。
附:楼主测试其他芯片结果帖子的截图(前面已经注明链接),方便大家比较.

tomzbj 发表于 2021-7-8 17:15:07

kundi 发表于 2021-7-8 16:50
换成STC16,仍然保持16MHZ不变,波特率改为115200。此时xdata根本不需要用到(xdata=0),也是用9级优化。发 ...

你在里面加一层循环, 让他跑100次或者1000次dhrystone再输出一个点呗

modbus 发表于 2021-7-8 17:55:18

tomzbj 发表于 2021-7-8 15:34
前面几个变量都加了__data, 没变化,还是254ms

两个数组如果不是__xdata,通不过编译 ...

对sdcc不懂,第2个数组肯定不能定义在data区了,太大了,625个字节,data区总共也就128个字节,还包含32个R寄存器,大数组处理51效率很低的,连个变址寻址指令都没有

modbus 发表于 2021-7-8 18:04:08

做一个两轴运动控制的差补运算,或者带自动加减速的定位脉冲串输出,这时STC8对比AVR8的速度优势就出来

kundi 发表于 2021-7-8 20:22:39

本帖最后由 kundi 于 2021-7-8 20:29 编辑

tomzbj 发表于 2021-7-8 17:15
你在里面加一层循环, 让他跑100次或者1000次dhrystone再输出一个点呗

根据您的意见,测试结果如下。
在16MHZ时 ,波特率115200,9级优化,不使用MDU32(没必要用)的情况下,每100次dhry输出一次换行符号,用时约938ms,平均每执行一次dhry,用时约9.38ms。
可以和前面图片中的16MHZ下,32f401和32f407相比较 。

kundi 发表于 2021-7-8 20:38:10

Heatpump 发表于 2021-7-5 21:36
反正STC直插M4、力压M3、横推M0、口爆H7、颜射RISC-V、中出A8、强奸X86就是了,各种体位天下无敌! ...

根据楼上的结果,M4都要比不过stc16了,看来STC真的是yyds.

Heatpump 发表于 2021-7-8 21:11:47

kundi 发表于 2021-7-8 20:38
根据楼上的结果,M4都要比不过stc16了,看来STC真的是yyds.

哈哈,大STC无敌,您喜欢就好

tomzbj 发表于 2021-7-8 22:16:21

kundi 发表于 2021-7-8 20:22
根据您的意见,测试结果如下。
在16MHZ时 ,波特率115200,9级优化,不使用MDU32(没必要用)的情况下, ...

这还真神了, 同频性能3.79DMIPS/MHz, 不但有STM32的三倍多, 比AMD R5-3600x在-Os时还快了
官方怎么没拿这个数据宣传宣传?

我感觉是什么地方没跑对吧, 再检查检查?

你再试试coremark之类? 或者直接跑点现成算法, qsort, crc32, sha256什么的, 看看不同平台的运算结果能不能对上

wangweibeyond 发表于 2021-7-14 13:48:56

Heatpump 发表于 2021-7-5 21:36
反正STC直插M4、力压M3、横推M0、口爆H7、颜射RISC-V、中出A8、强奸X86就是了,各种体位天下无敌! ...

{:lol:} 不简单

rootxie 发表于 2021-7-15 21:32:33

老妖:STC 单片鸡中yyds,就这么愉快的收尾了 {:victory:}

loohoo0302 发表于 2021-7-16 08:58:08

BOERLBH 发表于 2021-7-5 21:51
各种姿势都让你掌握了。

还有:吊打AMD,在地面摩擦Qualcomm,踩脸NVIDIA,吓懵麒麟,
炮轰SAMSUNG,LoongISon一看就报警了,
发飙,沉默,前兆,震怒,玩完,慌了(对象不够了)

除了标题党,另外鸡汤党:STC无敌性能,传遍IT界,其pdf成为深度好文,
X86转发,M4必读、M3必看,看哭了H7,RISC-V看后痛哭,
克服AMD通病,LoongISon表示我要,Qualcomm没看就遗憾……

eddia2012 发表于 2021-7-16 22:21:57

就只会吹stc天下无敌

modbus 发表于 2021-7-18 21:17:39

dellric 发表于 2021-7-7 22:48
根据楼主提供程序,KEIL C51 下情况如下:

优化级别:LARGE OPTIMIZE (8,SIZE)


对你的代码又优化了一下,关键变量放在DATA区,在KEIL C51的9级优化下code=3613

dellric 发表于 2021-7-18 22:45:47

modbus 发表于 2021-7-18 21:17
对你的代码又优化了一下,关键变量放在DATA区,在KEIL C51的9级优化下code=3613
...

谢谢, 我没有芯片无法测试, 希望你能搞出运行数据来。

kundi 发表于 2021-7-19 00:27:57

dellric 发表于 2021-7-18 22:45
谢谢, 我没有芯片无法测试, 希望你能搞出运行数据来。

我前面也按照他说的方法修改了,分别在STC8和STC16上做了实验,结果在前面。

dellric 发表于 2021-7-19 22:53:14

kundi 发表于 2021-7-19 00:27
我前面也按照他说的方法修改了,分别在STC8和STC16上做了实验,结果在前面。 ...

哦,看到了你的成果,很棒啊!

Robot_V1 发表于 2021-7-19 23:34:03

kundi 发表于 2021-7-8 20:22
根据您的意见,测试结果如下。
在16MHZ时 ,波特率115200,9级优化,不使用MDU32(没必要用)的情况下, ...

这么看STC16还真有不小的可玩性,可惜主频实在是低的离谱。

modbus 发表于 2021-7-20 17:30:20

dellric 发表于 2021-7-18 22:45
谢谢, 我没有芯片无法测试, 希望你能搞出运行数据来。

优化后通过每个计算周期对管脚取反测量脉冲宽度,测试结果如下(24MHz主频):
9级优化下计算时间为96毫秒,
8级优化下计算时间为88毫秒。

dellric 发表于 2021-7-20 19:18:39

modbus 发表于 2021-7-20 17:30
优化后通过每个计算周期对管脚取反测量脉冲宽度,测试结果如下(24MHz主频):
9级优化下计算时间为96毫 ...

兄弟,这个和kundi的47ms数据相差比较大,会不会是哪个变量没有优化好呢?不过就这个数据来看,STC的单片机也是不错的。

modbus 发表于 2021-7-20 20:44:10

dellric 发表于 2021-7-20 19:18
兄弟,这个和kundi的47ms数据相差比较大,会不会是哪个变量没有优化好呢?不过就这个数据来看,STC的单片 ...

所有的数组无论大小都没定义在DATA区。电脑测量毫秒级的时间不准,也可能是测量误差,我这是硬件级的测量。另外STC8的双数据指针和数据指针自动增减切换不知道怎么样能让编译器用上,如果能用上的话估计还能提高速度

kundi 发表于 2021-8-11 23:59:01

今天拿逻辑分析仪重新测试了一下,测量IO口电平持续时间,其他条件不变。
1.发现STC16完成一次dhrystone,用时约9.68ms。

2.发现STC8系列,完成一次dhrystone,用时约56.25ms。

与之前用串口时间戳相比,相差不大。可见STC8/16的优势仍然很大。


王二小 发表于 2021-8-12 04:08:12

tomzbj 发表于 2021-7-5 21:19
别信口开河, 拿数据说话!
我这儿的dhrystone程序, avr的4144字节, stc的6380字节,谁的大?



说AVR大的怕是没用过 IAR Embedded Workbench for AVR

王二小 发表于 2021-8-12 04:12:26

modbus 发表于 2021-7-8 13:42
手头没有STC8的开发板。51的特点就是小数据量处理效率很高,而大数据量处理效率很低,平时用时都是把使用 ...

找厂家申请芯片样品。现在都3家PCB厂打样免费了。随便拉线打个最小系统板就行了。

kundi 发表于 2021-8-12 08:34:59

王二小 发表于 2021-8-12 04:12
找厂家申请芯片样品。现在都3家PCB厂打样免费了。随便拉线打个最小系统板就行了。 ...

PCB厂除了嘉立创和JP免费,第三家是哪个?

keshipt 发表于 2021-8-12 09:47:09

百度搜“PCB 免费打样”,前三家就是{:titter:}

国学芯用 发表于 2021-8-12 11:31:04

本帖最后由 国学芯用 于 2021-8-12 11:49 编辑

https://www.stcmcudata.com/STC8F-DATASHEET/STC8H.pdf.   2021/8/11更新

最新 STC-ISP烧录/各种辅助开发智能小工具包,http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.88H.zip,见到简体中文操作系统就是中文显示,见到非简体中文操作系统就是英文显示,或鼠标右键点击标题栏,在弹出菜单中选择英文/中文显示,要在 KEIL 中 添加 STC 新型号,见软件右上方 KEIL 仿真设置, 最重要====有实时 供货信息

小李非刀 发表于 2021-8-13 21:43:02

我测速都是按实际需要来测的,我常用的测试方法是,计算256点FFT,计算8阶或16阶数字滤波,相同程序,相同频率或各自的最高频率,看其运行时间,分别使用整数或单精度浮点数运算。
页: [1]
查看完整版本: 实测了STC8A8K64S4A的dhrystone性能