瀏覽單個文章
拿破崙波拿巴
*停權中*
 
拿破崙波拿巴的大頭照
 

加入日期: Dec 2018
文章: 53
引用:
作者bureia
之前在站上有談過,狀況是當時intel compiler會偵測非intel的CPU然後只能跑最保守的代碼。

其實照規矩應該用CPUID確認功能有沒有支援就可以,不該偵測品牌
記得後來intel compiler把偵測品牌的步驟拿掉了

那篇作者是在討論兩家CPU架構設計上的不同,他的論點我的解讀是
intel有專門強化AVX的運算效能,然後AMD的AVX其實是2個SSE拼出來的,
所以AMD的AVX效能比intel差很多

然後兩家在SSE跟基本x86指令的效能差不多,但是AMD給的資源比較多(較多核心、HT等)
所以跑分跑起來AMD得分較高

但是軟體有對AVX最佳化的話,intel的效能會高出AMD一截
如果只用SSE跟基本x86指令的話AMD會吃香一點,不過他也說這種軟體對多核心支援
通常不佳,那AMD的多核跟HT也佔不到多大便宜


我覺得那個人是白ㄘ

這個東西我剛看爛而已,所以我很清楚 會這樣講的 代表說的人 根本看不懂 opcode 也不知道指令集到底是什麼東西

你說的 軟體有對AVX最佳化 光這個就打槍打到死

編譯的時候 指令已經編在軟體裡面了 還有 軟體有對AVX最佳化 這種說法? 代表根本就是不懂裝懂

「AMD的AVX其實是2個SSE拼出來的」?
那 AMD 的 CPU 也跟我寫的東西一樣 用模擬出來的嗎

為什麼會說 AVX 比 SSE 指令集效能更好,那我跟你說 不一定

AVX 有包含 VEX 編碼的 SSE 指令 說 AVX 效能比 SSE 好,是指 SSE 指令只有2到3個操作數
AVX VEX 版本 編碼的 SSE 指令可以有 3-4個操作數,

我舉個例就好了
https://www.felixcloutier.com/x86/palignr

SSSE3 的指令 PALIGNR

SSSE3 版本:
PALIGNR xmm1, xmm2, imm8
modrm.reg / modrm.r/m imm8 共計三個操作數

opcode 佔用 6 byte
66 0F 3A 0F C2 01


AVX (VEX) 編碼版本:
(V)PALIGNR xmm1, xmm2, xmm3, imm8

modrm.reg / vex.v / modrm.r/m imm8 共計四個操作數

opcode 佔用 5或6 byte
C4 XX XX 0F XX 01

C5 XX 0F XX 01

說好壞是只同一個指令 AVX 版本 比 SSE 版本 佔用比較少的 Byte。
另外 AVX 還有 VEX.256 的版本 可以一次處理 32 byte 的資料 一次搞定
SSE 版本最多只有 128-bit 只能處理 16-byte 好就好在這裡而已

舊 2019-05-30, 07:18 PM #84
回應時引用此文章
拿破崙波拿巴離線中