点乘优化时使用了LDDW保证加载数据的效率,但存在如下现象:
1.若点乘的两路输入都32字节对齐,则点乘效率较最优时下降一半,此时,若两者同步后移8/16/24字节,工作效率均恢复正常。
2.若其中第一组数据的起始地址对齐方式往后偏移16字节,则两者同步后移8/16/24/32字节,都可以保证效率正常。
CPU指令集手册(sprufe8b)中,介绍LDDW指令时,未提及两个.D单元LDDW并行load数据时存在限制。考虑到1/2两种情况下,数据都始终保持8字节对齐,故不能用mem_bank冲突来解释。
我的疑问是,这一现象产生的原因是什么?
这是测试代码和结果