TA的每日心情 | 开心 3 小时前 |
---|
签到天数: 223 天 [LV.7]常住居民III
荣誉版主
- 积分
- 4851
|
发表于 2024-4-12 07:19:55
|
显示全部楼层
方法1的优点, 你总结了, 咱再不说了.
至于缺点, 只要你想做, 就不存在什么互斥访问的(欢迎讨论补充, 让大家对硬件更加认识)
顺便说一下, 本人早些年前, 熟读老外搞的用200多片TTL设计的CPU, 也设计过世上最烂的4位CPU(仅用14片TTL),
也搞过多种用TTL设计8位机方案, 不要听 XX 胡言乱语(敬其70多岁, 老小孩了, 咱不和他一般见识).
本人方案2:
在 DPU32 中, 增加 EAX'/EBX'/ECX'/EDX' 映像寄存器(5级堆栈).
C251 状态下 DPU32 执行动作:
1. 读入 CPU 的 EAX/EBX/ECX/EDX 寄存器
2. 执行 DPU32 动作
3. 结果写入 DPU32 EAX'/EBX'/ECX'/EDX' 映像寄存器(压栈).
4. 由 CPU 读入 最终结果(弹栈).
C51 状态下 DPU32 执行动作:
1. CPU 预装 ECX/EDX 内容到 ECX'/EDX' 映像寄存器(按需要执行).
1. 读入 CPU 的 EAX/EBX 和 ECX'/EDX' 寄存器
2. 执行 DPU32 动作
3. 结果写入 DPU32 EAX'/EBX'/ECX'/EDX' 映像寄存器(压栈).
4. 由 CPU 读入 最终结果(弹栈).
由于输出都是暂存 DPU32 EAX'/EBX'/ECX'/EDX' 映像寄存器(堆栈)中. 不存在硬件重入问题.
针对我的方案, 欢迎大家指出可能存在的缺点和错误, 欢迎拍砖!
纯技术讨论, 至于老姚最终选啥方案, 那是老姚的事.
----------------------------------------------------------------------------
方法4, 即在执行 DSP/DPU351 + TFPU, DPU32 指令时, 停掉CPU的时钟.
就好像是CPU真的在运行一样的效果. 运算结束后通过DMA把结果放在指定的位置, 并设置好标志.
此方法的优点很明显, 和真正的指令一样, 效率高, 随时可用, 没有互斥问题.
缺点, 如果执行时间过长是会影响中断响应频率的,
综合执行速度比 方法1 慢一些(不管努力提高新增指令速度还是主频),
如果让我选, 我会选方法1, 在性能不降低的性况下, 速度优先.
|
|