|
1
9
使用此方法,我们在18条指令中同时计算4个结果,而使用您的方法在13条指令中计算单个结果。我们也没有浪费任何成果。 还有待改进;由于要使用这种方法,必须重新排列数据结构,因此应该对齐数组,并使用对齐的加载和存储,而不是未对齐的加载和存储。您应该将c和s加载到寄存器中,并使用它们来处理 许多的 x和y的向量,而不是为每个向量重新加载它们。为了获得最佳性能,应该将两个或多个计算向量交错,以确保处理器有足够的工作来执行任务,从而防止管道暂停。
你在什么硬件上做计时的评论几乎把一切都弄清楚了:“奔腾4HT,2.79GHz”。这是一个非常古老的微体系结构,在这个微体系结构上,不对齐的移动和洗牌相当慢;在流水线中没有足够的工作来隐藏算术运算的延迟,而且重新排序引擎也没有在较新的微体系结构上那么聪明。 我希望你的向量码 将 证明它比i7上的标量代码快,也可能比Core2上的标量代码快。另一方面,如果可以的话,一次做四个会更快。 |