请问新的CH55X 汇编指令周期表是不是有错?

你好,

“CH55X 汇编指令周期表?”这份文件我在官网上没有直接找到,但是google能搜到两个版本

/uploads/file/20190413/1555130456189763.pdf

这个版本旧一些,没有什么问题

/uploads/file/20220728/1658941041195430.pdf

这个版本新一些,但多出来这两行:

a.指令单周期型号:CH557、CH558、CH559;??

b.指令4周期型号:CH551、CH552、CH553、CH554

我手头的CH552确实是单周期没错,请问是手册错了还是新款的CH552变弱了?


==更正==

搜出来的地址似乎是这个论坛上上传的,上传时间不代表版本发布时间。

不过观察PDF里的数据,旧的文件编辑时间是?Dec 30, 2015 at 4:31 AM。新的文件编辑时间是Mar 6, 2017 at 2:16 AM。还是新一些。我手上的芯片有很多是2.5.0或者更新的引导程序,应该是2017年以后出厂的。

您好,最新的周期表可以从ch554evt->pub文件夹中找到,另外方便问下咨询周期时间是有什么需求的应用场景?可以展开说说


谢谢回复,我检查一下新的版本。

我这边有不少代码需要汇编优化。大概分三种情况:


c语言运算效率太低。比如计算crc,汇编可以用寄存器辗转所有数据,无需使用内存,能比C快几倍。


IO口操作输出时序数据,比如驱动ws2812之类。不仅需要精确时钟周期,还得考虑双字节对齐。


再就是写框架的时候,受限于51的架构,指针不能指向P1等寄存器。这时候就需要嵌入汇编往查找表里面跳入等操作。需要根据汇编速度写出优化的代码。


我下来了最新的CH554包,里面的说明是2018年11月的版本,确实没有了4倍这个问题。


但是里面有这样一句不是很好理解:





MOVC指令多4个周期起,如本指令地址为奇数再加1周期,如下条指令地址为奇数再加1周期





MOVC是单字节指令,那么无非是本指令或者下条指令为奇数,不可能同时为奇数或者同时为偶数。那为什么不固定是1+4+1=6?而且下方表格里,MOVC的周期,是5/6/7。


四个周期起,是指最少四个周期的意思,实际周期数您可以测试下。


奇怪的优化方式……

CRC用查表效率也不慢吧?

WS2812要么用DMA的PWM/串口/SPI都能凑出来还能节省大量时间来运算特效?

至于框架?如果有过多的中断只会更浪费效率吧?



只有登录才能回复,可以选择微信账号登录