TA的每日心情 | 开心 5 小时前 |
---|
签到天数: 223 天 [LV.7]常住居民III
荣誉版主
- 积分
- 4851
|
发表于 2024-4-5 06:08:50
|
显示全部楼层
这段时间太忙, 我已不想跟你争论了, 你老永远是 伟大光荣正确.
草案1,征求意见的帖子不停地叨叨叨, 核心的技术内容有 2点,
至于 EAX/EBX 对换, 根本排不上号(只不过和现有51/251风格完全不同, 不便记忆, 反感).
1. DPU32寄存器不能放在 RAM中, 一定要放在 受 C51/C251保护的 SFR中 ...... 草案2 已改
2. MDU16 执行时 不停止 CPU工作, 为什么 MDU32不这样做呢? .......
老姚解释, 指令就是指令(纯粹当 51/251指令执行).
以上两点都是为了 让 DPU32 指令, 执行的更快更有效.
依现有工艺, DPU32 指令的执行时钟周期是一定的, 但在整个系统运行中, 指令执行的总的时间是不确定可变的,
由以下几点花费时间累加确定.
1. 参数传递.
2. 子程序调用,
3. 保护受影响的SFR/RAM
4. 参数送DPU32寄存器.
5. 执行DPU32命令
6. 计算结果回送.
7. 恢复受影响的SFR/RAM
8. 子程序返回,
DPU32寄存器的设计与布局, 影响以上这些内容, 从而改变整个执行时间.
当然简单指令不会用到上述全部步序, 只有复杂指令才会用全,
1. 草案2 已改DPU32寄存器不放在 RAM中, 改为放在 受 C51/C251保护的 SFR中,
那么 上述 3,7 可取消(缩短指令总执行时间). 51会略为受点影响.
2. 草案2 DPU32 指令执行期间, CPU停止. 影响指令执行速度是一定的,
在上述中, 子程序返回需 3个时钟周期, 假如 DPU32 指令执行时间(绝大多数) 大于等于3个时钟周期
假如 DPU32 指令执行期间, CPU不停止工作. 那么, 经适当的延时(-3) , 提前 RET 返回, 总的
执行时间可缩短 3个时钟周期(变相提升DPU32 指令执行周期).
在复杂函数多次调用DPU32 指令的应用中, 优势明显, 因为 DPU32 指令执行期间, CPU不停止工作.
那么, CPU好做好多准备(辅助)工作, 相当于 双核同时运行(真正做到老姚所设想的 TFPU为主, CPU为辅 两核同时工作)
以梁工 所例举的 8阶滤波函数为例, 让我来编这个程序, 经初步评估, 快 10% 没问题, 经优化程序, 可望提升速度 约 20%,
这是针对单独 使用 DPU32 指令执行 8阶滤波函数 相 PK, 你单独用 DPU32 指令想提升速度20%,
DPU32 IP内核 起码要提速 > 20%-50%. 这个工艺不是那么容易解决的.
个人认为, DPU32 指令执行CPU停止工作(只是好看不实用), 并且影响中断的实时响应.
至于你老编个“8阶巴特沃斯”库函数, 我没兴趣, 这是我几十年前玩剩的, 你老如有兴趣, 不如咱们各自编个“8阶巴特沃斯”库函数,
PK 一下,
1. 谁的程序更短更精练.
2. 谁的程序执行速度更快更高效.
假如你老同意我以上观点, 我倒有兴趣玩一把.
为建立STC32/64位单片机的“DSP”函数库做贡献.
|
|