標籤:

Linux 當中選擇的軟體包 i386 和 i686 有和區別?

比如 Fedora 中 repo 文件的 $basearch 標識?


x86架構首度出現在1978年推出的Intel 8086中央處理器,它是從Intel 8008處理器中發展而來的,而8008則是發展自Intel 4004的。Intel之後又推出了包括80186、80286、80386以及80486。 在設計上,這些後續的處理器使用的指令集都是在8086的基礎上添加新支持的指令進行改進的,因此可以說都是向下兼容的(backward compatibie),即能再8086上運行的程序在80486上也一定能運行。由於都是以86結尾(不過8088也是x86),所以把這一系列的指令 集 稱之為x86指令集(架構)。準確的來講,x86這一術語並不是指的某一個(具體CPU使用的)具體的指令集,而是在8086(的指令集)基礎上發展而來 的所有指令集的泛稱。

實際上,在80486以後Intel推出的絕大多數CPU都是「x86」的,包括Pentium 、Pentium Pro 、Pentium MMX ,Pentium 2 ,還有後面的Pentium 3、Pentium 4 、Pentium D 、Core 全系列,(x86系列的) Xeon。另外,使用x86架構的處理器製造商遠非Intel一家,最著名的就是AMD,其他的還有VIA,Cyrix。具體的產品及特性可以見附錄的表 格。可以說,x86架構就是桌面級CPU的標準,你能買到的品牌或者組裝的PC,幾乎沒有不是x86 CPU的。不過雖說都是x86的,但只能說明使用的指令集是兼容8086的,除8086指令集之外的其他指令支持情況就不一樣;其內部實現的微體系結構 microarchitecture顯然也是各自不同,就好比Linux和Unix雖然都是POSIX兼容的OS,都有fork這個系統調用,但是這個調 用的實現確實各不相同。

從1985年80386開始,intel通過對x86架構進行32位的擴展,實現了32位CPU,而之前的都是16位。 Intel把支持32位的 x86指令集架構命名為ia-32(Intel Architecture 32bit)。實際上由於32位x86處理器的統治性,術語「x86」幾乎等於IA-32,即32位的x86或x86-32,例如Windows和 Linux發行版的32位命名都是x86(而不是x86-32或ia-32)。後來的「x86-64」名稱也繼續強化了這種約定方式。這裡還是要強調 x86是一系列架構的泛稱,支持16位、32位和64位的指令都有。

該來的還是會來,在1999年,AMD宣布了x86-64架構。其實 現方式與之前的80386思路一致,繼續對IA-32擴展,增加64位通用寄存器、證書預算單元和邏輯操作,支持64位虛地址;向前兼容ia-32。 2003年第一款x86-64處理器發布,AMD Operon。同時AMD也將x86-64正式命名為AMD64。這下Intel徹底2B了(原因後面說),以前都是AMD小弟追隨者Intel大哥的腳 步,如今AMD先實現了64位民用桌面級CPU。其實Intel也有其64位計劃,在2004年的IDF上,Intel承認其64 位計劃,命名為ia-32e,即ia-32 extension,之後又改成EM64T,Extended Memory 64 Technology,最終命名為Intel64。 實際上EM64T與AMD64幾乎相同。早期EM64T不兼容AMD64的少量指令,但是由於AMD在64位技術中的領先地位,Intel2005年不得 不宣布將完全兼容AMD64。所以現在裝的64位版本操作系統從沒有說是面向Intel還是AMD的。不過在稱謂上,大多數廠商還是使用 x86-64(x86_64,或者就是x64)來稱呼此架構,從而保持中立。

「i386「和」i486″作為Intel 80386和80486處理器的別名是比較顯然的。由於不能使用數字作為註冊商標,而且也需要一個正式的名稱命名,從586開始就變為Pentium了, 這時候i586就作為了最原始Pentium的微處理架構「P5」的別名,同樣的i686對P6(Pentium Pro使用),i786對應P68,或NetBurst架構。

在我看來,在軟體包的命名上使用「i某86」時應該是說適用於使用這一代微架構的 CPU。但微架構是硬體上事,因此還是在說明適用對應CPU使用的 指令集。比如,i386對應IA-32,並且由於兼容性肯定適用於i486~i686;i686不僅適用Pentium Pro,也適用K7架構的Athlon

前文提到Intel在AMD推出民用64位技術後很被動。其實 Intel也有64位x86 CPU的計劃,但是由於對於這個市場的不重視,認為需求不足,一直不見面世。而在對64位需求更加強勁的企業伺服器和高性能計算市場上,1994年HP就 和 Intel合作開始開發一款與x86架構完全沒關係的全新的IA-64架構。顯然IA-64不兼容x86-64更別說IA32,IA64天生就是64位, 基於顯式並行指令運算(EPIC)。 2001年第一款IA-64架構的處理器Itanium安騰發布。可見,IA-64跟IA-32在實現上沒有什麼關係,跟x86-64也是完全並行的兩種 架構,x86架構的Intel的Xeon就是Intel Itanium的競爭對手之一。後來Intel把IA-64也乾脆改稱為Intel Itanium架構。

參考和附錄在我博客原文上有。歡迎訪問。

http://jimoxiang.com/research...


i686僅對應P6及以上級別的CPU,i386則廣泛適用於80386以上的各種CPU。

x86體系中在P6系列第一次引入了亂序執行等技術,大幅提高了多分支程序的運行效率。

故而通常情況下,如果一個包同時有i686和i386版本,通常i686的效率會更高。只有i386版本的話,可能是該程序對於效率並無需求。

事實上一般使用無需考慮這個問題,P6已經誕生十餘年了,我最後一次見到P6系列的CPU也已經是五年前的故事了。


你要知道只能用i686但不能用i386的電腦幾乎是找不出來的,都是老古董了,所以選擇i686沒什麼問題。


沒什麼太大區別, 注意區別32位和64位就成...`~


推薦閱讀:

只使用 Linux 系統是怎樣一種體驗?
如何反駁「Powershell 比 Linux 終端好得多」這種說法?
Archlinux 真的很好嗎?真的適合深入學習Linux嗎?
deepin15.3在那些方面有進步?或者是到達了什麼地步?
程序計數器(Program Counter)是一個實際存在的寄存器嗎?

TAG:Linux | i386 | Fedora |