• 8

Intel「被迫移除」編譯器中「讓AMD變廢」的功能

第一:那串GenuineIntel字樣我很常看到。在CPU-z上用ES的CPU就會秀在CPU name上面。
要是正式版的CPU則是i7 OOO E8XXX Q9XXX之類的。
所以真的是認這玩意?豈不是連Retail的市售版 CPU都受害?

好吧,或許在其他地方還有這字樣吧。
ICC我也有用,不過我感受不到用AMD跟Intel CPU的時間差異。或許我編寫的程式太小了吧。

第二:文章我記得在VIA Nano發佈的時候就有看過了。而且不是針對性的,不是嗎?連舉例都是拿VIA的CPU舉例子。

第三:自己做的軟體對自己的產品做優化有啥不對?
別家的指令我怎麼知道能不能跟我的軟體相容,去call他會不會出事?
我覺得沒反過來怪其他製造商沒送產品來驗證吧。
居然忘了01要當流量大的營利網站,而不是專業網站,我還囉唆雞婆個雕~一起喊無腦萬萬歲就行了呀,多省事。
蛙鳴之地 wrote:
第一:那串Genui...(恕刪)

第一點我覺得還有一個地方可以找

BIOS的CPU資訊裡面很多都是寫GenuineIntel
AKSN74 wrote:
第一點我覺得還有一個...(恕刪)

你講的就是我說的CPU name.
在DMI要填,BIOS讀得也是那裡。
MSR多少的...要翻翻Datasheet.
居然忘了01要當流量大的營利網站,而不是專業網站,我還囉唆雞婆個雕~一起喊無腦萬萬歲就行了呀,多省事。
那個字串,指的是執行x86 cpuid指令的Get Vendor ID功能(eax暫存器設為0),會傳回一個十二個字元的字串(存在ebx、ecx、edx暫存器內)===============================================================
Calling CPUID
In assembly language the CPUID instruction takes no parameters as CPUID implicitly uses the EAX register. The EAX register should be loaded with a value specifying what information to return. CPUID should be called with EAX = 0 first, as this will return the highest calling parameter that the CPU supports. To obtain extended function information CPUID should be called with bit 31 of EAX set. To determine the highest extended function calling parameter, call CPUID with EAX = 80000000h.

EAX=0: Get vendor ID
This returns the CPU's manufacturer ID string - a twelve character ASCII string stored in EBX, EDX, ECX - in that order. The highest basic calling parameter is returned in EAX.

The following are known processor manufacturer ID strings:

"AMDisbetter!" - early engineering samples of AMD K5 processor
"AuthenticAMD" - AMD
"CentaurHauls" - Centaur
"CyrixInstead" - Cyrix
"GenuineIntel" - Intel
"GenuineTMx86", "TransmetaCPU" - Transmeta
"Geode by NSC" - National Semiconductor
"NexGenDriven" - NexGen
"RiseRiseRise" - Rise
"SiS SiS SiS " - SiS
"UMC UMC UMC " - UMC
"VIA VIA VIA " - VIA
=========================================================
所謂"讓AMD變廢",從現在看到的資料,倒不是類似刻意去塞dummy指令給AMD CPU這種情況,指的是若Vendor ID不是"GenuineIntel"、也就是非Intel CPU,就不執行針對Intel CPU優化的code path。

通常這是在程式有link進Intel提供的現成library的情況下,例如Intel所提供的IPP(Intel Performance Primitives)函式庫,內含Intel軟體工程師已經運用MMX/SSE最佳化過的各種基本函式(像IDCT、Fourier Transform、Cryptography....等)。

我自己之前寫這種可運用MMX/SSE等SIMD指令集加速的程式,通常不會去link Intel寫好的library,而是自己用SIMD指令去寫,在偵測到CPU支援MMX/SSE家族指令集後,就走MMX/SSE的code path(不管是Intel、AMD的CPU),如果沒有支援MMX/SSE家族指令集,就走SISD的scalar code path。至於把Intel跟AMD的SIMD code path進一步再分開的事兒,早年在AMD獨家支援3DNow!指令集、有提供幾個不錯用的特殊指令時(例如PAVGUSB...),小弟也幹過......

這個問題等下又有吵起來的潛力:會說Intel家大業大,為什麼不大方一點讓AMD的CPU也能分享經過Intel工程師最佳化過的函式庫的執行成果,唉!這兩家公司快卅年的恩怨情仇.....假如身為小市民的我有個廿多年處不好的鄰居,而兩家都有一些無法搬離的主客觀因素,我也不知道我有沒有這個雅量見了面一定還要保持最高風度熱情打聲招呼、逢年過節還主動送他些自家作的粽子、年菜等........照道理,微軟也應該主動公布IE的原始碼、別自訂網頁語法,讓其他較小間的瀏覽器廠商能夠從源頭解決某些網頁的相容性問題.........

對錯難判,鄰居例子舉的又很爛,如果有軟體業朋友,在資源允許的情況下,建議可以自己寫SIMD程式,程式邏輯、原始碼及元件自行掌控,較不受影響.....

ycweng wrote:
那個字串,指的是執行...(恕刪)


YC 大您好~

我看了"AMDisbetter!" 及 "Rise Rise Rise" (升升升)後, 我笑了
theplum wrote:
YC 大您好~我看了...(恕刪)

您好,小弟之前也沒怎麼刻意注意過Intel、AMD以外的CPU string,這次一找才發現老外真幽默、華人系統的公司還大多真是中規中矩.....
蛙鳴之地 wrote:
...........................(恕刪)
第三:自己做的軟體對自己的產品做優化有啥不對?
別家的指令我怎麼知道能不能跟我的軟體相容,去call他會不會出事?
我覺得沒反過來怪其他製造商沒送產品來驗證吧。


"但秘密在於,調度程序不僅僅檢查CPU支持的指令集,它還檢查供應商身份識別碼。"

只要指令集有支援
何須多此一舉去擔心對手的相容性問題
真不相容的話,該抱著頭燒的也是AMD才對
原來Intel是佛心來著
有個網路笑話是關於VIA & Intel
那個笑話是這麼說的...: 台灣的IC設計大廠威盛,目前也大舉進軍CPU市場。
有一天,威盛邀請國外客戶到公司參觀,
某位眼尖的客戶看到威盛CPU研發部門前的小花園裡,
有個小土堆,上面插了一個十字架。
那位客戶心裡想說:「聽說威盛的高階主管篤信基督
教, 難怪他們會用十字架來裝飾花園。」
可是當他驅前一看.......



才發現那是一個墳墓。

十字架墓碑上寫著:




「Intel Inside!」 
面對壞事的態度,決定了你心情的高度; 做人的態度,決定了你名聲的高度; 做事的態度,決定了你成就的高度。
squarelfox wrote:
真不相容的話,該抱著頭燒的也是AMD才對

不相容的話..
User抱怨的對象八成還是Intel.....
面對壞事的態度,決定了你心情的高度; 做人的態度,決定了你名聲的高度; 做事的態度,決定了你成就的高度。
Intel自己寫的Compiler只針對自己的處理器做最佳化是理所當然的吧,
它沒事幹麻那麼佛心幫其他家的處理器最佳化,
而且不管怎麼寫,只要寫出來的效能比Intel的差,還不是一堆人跳出來說打壓。

所以我看這文章是有人刻意寫出來攻擊Intel的吧,
雖然Intel不是什麼良心企業,
但是他沒做或沒做錯的事也不能隨便賴在他身上。
  • 8
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 8)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?