|
发表于 2024-4-6 12:45:31
|
显示全部楼层
执行 DSP/DPU351 + TFPU, DPU32 指令时, 为什么要停CPU时钟?
我想很多人还是不能理解. 可以继续讨论一下这个话题.
我是这样理解的, 有几种方法可以实现 DSP/DPU351 + TFPU, DPU32 的功能:
1. 外设寄存器模式, 把数据传给外设寄存器, 启动运算, 查询结果.
2. 协处理器.
3. 真正的 DSP/DPU351 + TFPU, DPU32 指令, 即真正意义上的扩充CPU指令.
4. 模仿 DSP/DPU351 + TFPU, DPU32 指令.
对于方法 2,3 因为出现了新的指令, 需要编译器支持 , 短时间内很难改变现状, 暂不考虑
现在只剩下方法1 和 4 , 各位认为应该怎么选呢. 显然 STC 选择了方法 4
继续分析方法 1 和 4 各自的优缺点.
方法1的优点很明显, 外设和CPU没有直接关系, 各行其事. 逻辑比较简单. 执行期间CPU不需要断时钟.
缺点也明显, 作为外设来运作, 必然是要互斥访问的, 这对于中断来说很不友好.
中断可不能等. 如果选用此方式, 就相当于把问题抛给了程序员. (欢迎补充, 让大家对硬件更加认识)
在说方法4前先说一下真的正CPU指令, 比如DIV AB 指令, 执行时间是6个时钟.
执行指令是一个元子过程, 即在此期间CPU不可能做其它的事情, 也不可以响应中断!
CPU专心致致的做这一件事情. 运算结束后自动把结果存放在指定的位置, 并做好标志.
方法4, 即在执行 DSP/DPU351 + TFPU, DPU32 指令时, 停掉CPU的时钟.
就好像是CPU真的在运行一样的效果. 运算结束后通过DMA把结果放在指定的位置, 并设置好标志.
此方法的优点很明显, 和真正的指令一样, 效率高, 随时可用, 没有互斥问题.
缺点, 如果执行时间过长是会影响中断响应的,
===但是通过努力提高新增指令速度, 可以把这个缺点降低到很低的程度! (欢迎补充)
===还有通过努力提高 【DSP/DPU351 + TFPU】 的主频,远远高于CPU的主频
如果让我选, 我也会选方法4, 不知道大家怎么选呢?
|
|