Re: [情报] Linux将停止AMD 3D Now!指令集支援

楼主: oopFoo (3d)   2021-12-17 10:12:10
※ 引述《hn9480412 (ilinker)》之铭言:
: https://www.tomshardware.com/news/linux-says-goodbye-to-amd-3d-now
: Linux预计将在核心版本5.17中停止AMD的3D Now!指令集支援,也代表着这个活了23年的
: 指令集也即将退出舞台
: 3D Now!是AMD在1998年推出的SIMD指令集,用来强化x86的3D影像处理的效能,也是为了
: 抗衡Intel的MMX指令集,不过MMX只支援整数运算,浮点运算还是要靠x87协同处理器。而
: 3D Now!支援单精度浮点运算,AMD也在K6-2加入3D Now!的支援,在单精度浮点运算效果
: 方面是x87的四倍。同时微软在DirectX 7为3D Now!进行最佳化使得AMD首此在游戏效能上
: 超越Intel。K6-2和K6-III也成为当时市场上的热门产品
: 在1999年的Athlon上AMD又加入了5条新指令并改称为Extended 3DNow!。后来Intel也为了
: 抗衡推出SSE,SSE完全支援3D Now!的所有功能,至此AMD在往后都是跟进Intel支援SSE
: 的相关指令集而不再更新3D Now!
: 在硬件方面AMD早在Bulldozer后的架构就不再加入3D Now!的支援,并建议开发者改用SSE
: 取代,最后一颗支援3D Now!的CPU是AMD的A8-3870K
真的是时代的眼泪了。不过3D Now!不是用来对抗MMX的,3D Now!是架构在MMX上的。我应该是少数有经验写3D Now!程式的。
先回来讲x87。x87是一个搞砸的架构,我当年写x87组合语言时,觉得有点怪,一直要FXCH,不好用但ok啦(其实也是我不懂StackMachine的写法)。后来有看到当初设计x87的访问,才知道美国设计的人跟以色列实做的人沟通不良,以色列的人不懂Stack Machine是什么,所以才实做成x87那样。我用过Forth之后就更能体会一个正常的x87 Stack Machine其实是超好用的。x87现在还有用因为它支援80bit的精度,有些用途无法取代。
3D Now!的诞生是因为k6的x87浮点运算比Intel的x87慢(25%?), 但3d游戏开始起飞需要大量的浮点运算,这点k6很吃亏。AMD设计的人很聪明,发展3D Now!架构在MMX的registers上,可以同时运算两个32bit浮点。容易写(register),又提升性能,变成Intel的1.5倍(?)
我第一次写的时候,Assembler还不支援,还要自己inc一些Macro,就跟当初MMX一样。3d游戏性能确实在k6-2上有提升,但最后有没有跟游戏一起出就不记得了。后来的Athlon浮点还比Intel的强,那真的是AMD的第一个黄金时代。
Intel的SSE是128bit vector,3D Now!是架在MMX的64bit vector(3D Now!用的时候MMX不能用),所以其实SSE算是3D Now!的延伸与改良。
真的是有竞争对消费者才是福音,感谢AMD打趴Intel才能让Pat回来带来更多竞争。

Links booklink

Contact Us: admin [ a t ] ucptt.com