追求极致的速度必须了解CPU指令集发展趋势
程序需要运行在相应的平台的,作为开发者(甚至使用者)应多少关心相关硬件的发展趋势,
这样才能充分发挥设备的优势。
为什么汇编可以那么快?正是因为它贴近于底层。
相对于硬盘、RAM等,
更应该关注CPU的指令集发展、寄存器的扩容。
今天偶尔得闲,搜索了一下先前关注的 SSE5,
才得知AMD已宣布放弃了SSE5,转而支持 Intel 的 AVX 指令集。
再查“CPU AVX”,才知道这确实是个令人期待的,尤其是引入了 256 位的 YMM 寄存器。 HugeCalc 已有近两年未公开升级了,
一则是比较忙;
二则是我一直想把它移植到64位平台,虽然尚未付诸实际行动(因为家里的机器配置太落后)。
在32位平台下,可以有128位的XMM寄存器可用,
而在64位平台下,当下却缺少相对应翻倍字长的寄存器可用,
所以有一些美妙的算法在移植时可能不得不割舍。
当发现即将有 AVX 指令集,以及 YMM 寄存器时,
内心的激动可想而知。
可惜,这样也许又会再次推迟我对家里电脑更新换代,同时也会增加相应的预算。 软件太依赖硬件不太好吧 普通的应用确实不需花太多的精力在硬件上,
但追求极致时就不得不去多了解了解了。 数学软件,从来都是最需要速度的
恨不得自己去优化CPU微代码
呵呵
数学程序要速度不要兼容 同意郭老大, 我的好几个素数程序借助
SSE4 性能能提高不少。 我还没用过 SSE4,因为还没有那好的机器供调试。 主要期待256位寄存器
另外,不知道是否增加了寄存器数量
还有,似乎是浮点指令多
有没有整数指令阿?
哪里有文档? 好像 YMM 寄存器也是 16 个,
指令嘛,应该是全面覆盖当前的 SIMD 指令,且会新增一些FMA(Fused Multiply Accumulate) 指令。
同样的 VAX 指令,可以用 YMM 寄存器,也可用 XMM 寄存器(不可混用吧,也没那个必要)。 看了英文文档
仅仅存在128位的操作
乘法也最多是32 * 32
256位不过能增加一次处理数据的次数吧
寄存器是影射的XMM
即低位128和XMM重合
高位128硬件附加的
页:
[1]