找回密码
 立即注册
楼主: LAOXU

世上(也是史上)功能最全的STC8 MDU16应用 LIB

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-04-08 16:39:39

0

主题

2

回帖

34

积分

新手上路

积分
34
发表于 2023-8-18 18:25:40 | 显示全部楼层
感谢LAOXU的无私奉献。
回复 支持 反对

使用道具 举报 送花

0

主题

3

回帖

38

积分

新手上路

积分
38
发表于 2023-11-24 17:34:41 来自手机 | 显示全部楼层
用了楼主的库,确实能提速,但是有时候乘法运算反而会变慢???不加库快一倍左右
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-11-26 22:37:20 | 显示全部楼层
Hel*** 发表于 2023-11-24 17:34
用了楼主的库,确实能提速,但是有时候乘法运算反而会变慢???不加库快一倍左右 ...

确实有问题, 经确认是 MDU16 问题, 由于操作数寄存器都放在 扩展 XFR 中, 大量数据传送 需要通过 DPTR转送, 拖慢且影响整体速度,  

用官方 MDU16 库中的 16位 int 乘法, 和 用 软件 计算 16位 int 乘法, 经测试速度对比, 相差 约 3倍, 注意, 不是快 3倍, 是慢了 3倍.

分析主要原因是:  MDU16 操作寄存器 的 大量数据 都要通过 DPTR转送, 拖慢速度
而 STC8H 单周期指令全面提速,  软件法 计算 速度 提速,  反正, 最终的结果是, MDU16 败给了 软件库

51 对 内该的提升, 主要有 3点, 增加 DPTR指针, 增加数学运算库, 堆栈指针升级为 16位.

STC 对前 2项的提升, 做了 尝试, 从目前来看, 都不算成功, 建议 不要轻易使用这些功能(除非你是汇编高手)

相比之下, STC32 这 一块, 就做的比较成功(DPTR 双指针, 一般用不到, 数学运算库 做的还行 )
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:434
  • 最近打卡:2025-05-01 20:16:58
已绑定手机

229

主题

328

回帖

1471

积分

金牌会员

积分
1471
发表于 2023-11-27 08:19:39 | 显示全部楼层
LAO*** 发表于 2023-1-5 19:32
目前我仅想到这些内联库函数(包括部分STC原LIB), 同学们如能想到其他的, 请提出来, 我加进去.

?C?LSHL     ...

能把双数据指针加进去吗

点评

可以加进去, 但更多的考虑数据安全性. 不能影响 用户中断 等使用  详情 回复 发表于 2023-12-17 02:54
回复 支持 反对

使用道具 举报 送花

0

主题

3

回帖

38

积分

新手上路

积分
38
发表于 2023-11-28 09:27:51 来自手机 | 显示全部楼层
LAOXU 发表于 2023-11-26 22:37
确实有问题, 经确认是 MDU16 问题, 由于操作数寄存器都放在 扩展 XFR 中, 大量数据传送 需要通过 DPTR转 ...

那楼主可否出一个去除MDU乘法的库,这样就是真正的全面提速了

点评

临时解决办法,去除这个无需加速的 16位硬件乘  详情 回复 发表于 2023-11-28 09:36
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-11-28 09:36:05 | 显示全部楼层
Hel*** 发表于 2023-11-28 09:27
那楼主可否出一个去除MDU乘法的库,这样就是真正的全面提速了

临时解决办法,去除这个无需加速的 16位硬件
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:211
  • 最近打卡:2025-03-21 01:00:25

8

主题

84

回帖

782

积分

高级会员

积分
782
发表于 2023-12-16 22:29:37 | 显示全部楼层
好帖,mark一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-12-17 02:54:05 | 显示全部楼层
QQ6243*** 发表于 2023-11-27 08:19
能把双数据指针加进去吗

可以加进去, 但更多的考虑数据安全性.

不能影响 用户中断 等使用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-12-17 12:17:07 | 显示全部楼层
sunca*** 发表于 2023-12-17 12:11
楼主很棒!向你学习,期待获得提高!中间遇到的问题及解决办法,能共享吗?谢谢! ...

遇到什么 问题 ?
回复 支持 1 反对 0

使用道具 举报 送花

6

主题

26

回帖

137

积分

注册会员

积分
137
发表于 2023-12-25 22:15:03 | 显示全部楼层
LAO*** 发表于 2023-11-26 22:37
确实有问题, 经确认是 MDU16 问题, 由于操作数寄存器都放在 扩展 XFR 中, 大量数据传送 需要通过 DPTR转 ...

您好,最近看到您发布的MDU16应用库,我是新手,看到这么宝贵的资料希望前后学习一下。其中我把前面网友们的问题和您的回复做个梳理,您看看是否正确。
1. 第一版 2023-1-5 19:32:29 ~ 2023-1-5 19:42:45 发布的内容,其中您提到EAXFR信息,请问这个外部扩展RAM是不是一般的芯片应用中都不会使用,是外挂RAM芯片的意思?
2. 如果我设置该寄存器为1时,在不外挂RAM芯片时,无任何使用限制及条件范围,是吗?
3. 在您 2023-1-6 13:23:02 发布的消息中,前面部分都测试完成,后面4个函数中加入浮点数加/减/除法, 仅乘一个 浮点数乘法还没测试好,对吧(确认下)。
4.在您 2023-1-6 13:49:49 ~ 2023-1-6 13:50:51 介绍中,提到我们只需要把LIB加入进去,所有我们C语言写的+-*/操作都会自动替代,对吗?
5. 在 2023-1-7 07:47:30 消息中,您已经把所有操作都确认好了,对吗?
6. 后面的 2023-1-7 11:06:58 ~ 2023-1-7 11:57:48 交流中,您提到如果需要把我们C语言写的+-*/操作都会自动替代硬件实现,必须使用标准底层库,并讲了使用方法,对吗?
7. 您在 2023-1-10 12:17:52 提到您尽可能在性能优先的基础上优化长度了,原因是硬件寄存器的问题,对吗?
8. 大家都对性能有要求,代码长度无所谓,您说了第一版的LIB中已经完成了math.h的所有函数的优化(原因是底层都是调用浮点加减乘除运算),对吗?但我有一个不明白,应该 2023-1-7 07:47:30 中您才把所有浮点加减乘除测试完的,应该是那个版本才能用的吧?
9. 有人提到有时候乘法运算反而会变慢,您在 2023-11-26 22:37:20 提到没有办法,所以有人建议去除这个无需加速的 16位硬件乘法 操作。请问您能推出这个去除 16位硬件乘法 的LIB和项目吗?我想前后对比一下怎么操作生成LIB,因为文章中并没有对这个的介绍。
10. 有人提到能把双数据指针加进去吗,您在 2023-12-17 02:54:05 提到更多的考虑数据安全性,不能影响中断使用,所以不能加入。对吗?

然后,我迫切期望您能推出这个去除 16位硬件乘法 的LIB和项目吗?

点评

STC8 MDU16确实设计的不好, 其根源就是把大量需反复 操作 的 操作数寄存器都放在 扩展 XFR 中, 大量数据传送 需要通过 DPTR转 , 拖慢了整体速度, 注: 其实 MDU16 在功能上讲, 比 现在 老姚 准备 用在 STC8 上的 MD  详情 回复 发表于 2023-12-26 02:55
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:19 , Processed in 0.135280 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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