天天看點

i386/i686/x86-64的差別

大家好,又見面了,我是你們的朋友全棧君。

1. i386 适用于intel和AMD所有32位的cpu.以及via采用X86架構的32的cpu.intel平台包括8086,80286,80386,80486,奔騰系列(1.2.3.4)、賽揚系列,Pentium D系列以及centrino P-M,core duo 等.

2. X86_64 适用于intel的Core 2 Duo, Centrino Core 2 Duo, and Xeon 和AMD Athlon64/x2, Sempron64/x2, Duron64等采用X86架構的64位cpu.

3.I686 隻是i386的一個子集,支援的cpu從Pentium 2 (686)開始,之前的型号不支援.

i386和i686的差別:

現在所有的intel 32位體系(包括AMD等相容CPU)都叫i386體系,包括P4。、i686仍然屬于i386體系,不過對CPU(相對于386)的特性作了指令優化。GNU/Linux分為alpha、PowerPC、Sun等各個不同版本,所有從Intel386-P4都用i386版本,但i386版本中有幾個核心(i486,i486,i586,i686),安裝時安裝程式檢測到你得CPU級别後,自動為你安裝相應核心。

與cpu的指令集有關.I代表與intel的指令集相容,後面的數字是指cpu的分類。

因為intel的cpu經過這麼久的發展,不斷的更新,産生從8086,8088,80286,80386,80486,奔騰(586),奔騰二代(686),奔騰三代(686)…cpu的每次換代,都增加了一些新的指令集,但都向後相容(就是說後面的CPU都能完全使用前面的CPU的指令集)。而軟體包為了能發揮好cpu的全部性能,就加入cpu相對應能指行的指令。是以就産生了各種不同的軟體包。是以,i686的軟體包能在奔騰二代以上的cpu上執行,但基本不能在此之先的cpu如486上執行。而i386的軟體包既可在i386的電腦上執行,也可在後面所有的cpu上執行(如奔三、奔四,但不能發揮cpu的最佳性能。)

i686指的是Pentium Pro以及此後的Intel IA32 CPU,也就是平常我們所說的P6系列處理器。

i386不用說了,泛指80386以後的。

IA32劃分子集的話:386、486是一個,Pentium自己是一個, Pentium Pro、Pentium II、Pentium III是P6系列,Pentium IV又獨自算一個。 Pentium 4是NetBurst架構的,比起P6系列有些變化。

i686是pentiumpro及以後的通用arch,而i386是所有x86的通用arch,i386包括而i686沒有包括的就是386、486、586(pentium)、pentium-mmx

現在應該沒有人還在用586及以前的cpu,甚至是pentiumpro。而rpm都是為i386打的包,運作效率會低很多。

相容性關系大概是

i386:

i386:

i486:

winchip-c6: MMX 3dNOW!

winchip2: MMX 3dNOW!

i586(pentium):

pentium-mmx: MMX

i686:

pentiumpro:

pentium2: MMX

pentium3(m): MMX SSE

pentium-m: MMX SSE SSE2

pentium4(m): MMX SSE SSE2

prescott: MMX SSE SSE2 SSE3

nocona: MMX SSE SSE2 SSE3 (64bit)

c3: MMX 3dNOW!

c3-2: MMX SSE

k6: MMX

k6-2,k6-3: MMX 3dNow!

althon,althon-tbird: MMX 3dNow! SSE(prefetch only)

athlon-4, athlon-xp, athlon-mp: MMX 3dNOW! 3dNOW(enhanced) SSE(full)

k8, opteron, athlon64, athlon-fx: MMX 3dNOW! 3dNOW(enhanced) SSE SSE2 (64bit)

可以看出,i686囊括了現在正在使用的所有x86,是以把rpm打包是的arch改為i686是沒有問題的,反而能在指令排程上優化,填滿流水線,使程式運作的更快。

而其中除了pentiumpro外,所有相容i686的x86都有MMX,大多數有SSE。十分使用擴充指令基對大規模計算來說很重要,如昨天加了-mmmx -march=i686打包了一下GIMP,發現有些處理(如馬賽克濾鏡)快了5倍以上。

另外,如果浮點運算使用-mfpmath=sse -msse的話,浮點除法速度有近百倍的提高,這對浮點運算偏重的如音、視訊解碼,編碼很重要。

當然為了相容,可以打包兩個版本,有sse和沒有sse的。

希望開發者能考慮一下,把/usr/lib/rpm/rpmrc中的buildtranslator xxx:i386改為 xxx:i686,并在optflag i686:中加入 -mmmx。

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/143059.html原文連結:https://javaforall.cn

繼續閱讀