|
楼主 |
发表于 2005-6-6 17:33:25
|
显示全部楼层
Snake_SH 在 2005-6-6 02:17 AM 发表:
我觉得为SSE2好好优化一下,这个计算量还是扛得下的。64位运算现阶段象征意义大于实际意义。
我目前核心有两个版本:
用SSE2的效率反而低于不用SSE2的
一次核心计算实质是计算(a*b)mod c
a,b,c都是64bit,a*b只用算出低64bit,所以用SSE2反而有一些无效操作
我问了很多人,他们都说不太清楚在32位平台上应该怎样算
我自己设计了一种算法,还是比较高效的
目前版本在CeleronD上平均每次核心计算使用的CPU周期:
用SSE2和FPU:108个(已经经过精心优化)
不用SSE2(用最基础的32位指令和FPU):84个(还没有作进一步优化)
如果使用AMD64,大概是75个(从datasheet里直接加的,实测应该更低)
有SSE3的大概可以再减少5个周期
总的来说,用AMD64大概能快20%,前面说10倍确实多了点
比较令我费解的是,piHEX说用了1.2m个CPU时就完成了计算
我看过他的代码,用的周期肯定比我多,而且那时的CPU主频也就500MHz |
|