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