firefox 2009-9-11 17:13
iT自救術─x86和x64到底有什麼差異?
以前,處理器有所謂的8位元、16位元、32位元……但是到了Windows XP時代,這些字眼逐漸為世人所遺忘。大多數電腦用的處理器都是3 2 位元處理器, 而Windows XP也(應該)是個32位元作業系統,既然如此,也就沒有必要刻意去做描述。 <BR><BR>直到AMD開發了號稱「64位元」的處理器,事情漸漸變得複雜起來了。 <BR><BR>接著就會有各種論調跑出來,「64位元要有專屬的作業系統」、「64位元的程式要特別撰寫」、「64位元會比較快」……,這些論調固然是其來有自,是「似是而非」也罷,是「空穴來風」也好,總之,大部分人總是希望這些論調能有個「解釋」──至少多數人都想知道,「到底64位元能帶來什麼好處?」 <BR><BR>藉著Windows 7的發表以及64位元環境的成熟,本人就我自己的認知來給各位介紹一下好了。 <BR><BR><B>什麼是64位元電腦?</B> <BR>最早的處理器是4位元的,後來有8位元,16位元……的處理器,這些「位元(bit)」是怎麼一回事? <BR><BR>簡單的說,處理器裡面有很多的「暫存器」,而用來做運算的是一堆所謂的「通用暫存器」。這通常暫存器的「寬度」,就是我們俗稱的「幾位元處理器」。通用暫存器是32位元寬,那一般就稱這處理器是32位元處理器。目前來說,32位元處理器因為「夠用」,所以各行各業所採用的各種電子裝置(也包含手機和電腦),裡面的處理器大多以32位元為主。 <BR><BR>如果是32位元的暫存器寬度,要計算整數時,可以計算從-2147483648到2147483647的範圍,這數字說大不大,說小不小,但是沒關係,如果你要計算更大的數字範圍,你可以使用浮點數或是用「拼湊的」,把大的數字拆成好幾份,分別計算。 <BR><BR>如果你的暫存器寬度是64位元,那計算的範圍就大多了,可以計算從-263到263–1的範圍。如果你常要計算很大的數字,那64位元處理器應該會更有效率(數字不必被拆成兩份以上計算)。問題是,你要計算的數字是不是常會那麼大? <BR><BR>如果是所謂的3D運算,影像處理……那可能會,因為這類大量資料的運作處理,是常需要大量較大數字的運算。從處理器的角度來看,64位元處理器有他的必要性──也許不是極端必要,但在資料量大且數字較大時有點用處。 <BR><BR><B>OS與Processor的相依性</B> <BR>但是,作業系統設計之初,就一定會針對某個處理器的運作模式而撰寫。比方說,Windows XP(一般而言,都是32位元版)就已經針對了Intel的各式處理器(早期也都只是32位元的產品)而設計。所以在業界,有人稱此架構為「Wintel架構」。 <BR><BR>這架構可不是任何一邊可以說動就動的。 <BR><BR>比方說,有一天,Intel宣佈推出64位元處理器⋯⋯如果這處理器是全新的,和原來的32位元處理器不相容,那這產品一推出就會面臨「沒東西可用」的窘境。事實上,Intel真的推了一個新的6 4 位元處理器, 叫做Itanium,這就是個全新架構的Intel處理器,得搭配全新架構的Windows──不過可不是Windows XP,而是Windows Server。因為這東西並不是設計給一般人用的,所以你並不能拿一般的Windows XP就給它灌下去(我是沒試過就是)。 <BR><BR>所以,如果有一天,處理器廠商要把現有的處理器改成64位元,它們就得學習某製藥公司的理念:先求不傷身體再講求效果⋯⋯當然不是!是「先講求和現有軟體相容,再講求新作業系統/軟體的支援」。 <BR><BR>所以,當AMD公司先發表,而Intel後來跟進推出64位元處理器之後,其實已經過了好幾個年頭了。確實,Microsoft公司曾推出Windows XP x64版本,但這個作業系統鮮少人用⋯⋯事實上,這產品根本沒有公開發行,只提供給OEM廠商吧?而且這產品沒有原生中文版,你得裝了英文版,再自己更換語系。 <BR><BR><B>x86與x64到底是個什麼意思?</B> <BR>到了Windows Vista發表,終於,64位元的Windows有了所謂的原生中文版。所謂的「原生」是「native」這個字的中譯,意指裝好就是中文版,不需要(像Windows XP x64版一樣)再另外去安裝什麼語系片、修正程式的。某種程度上,Vista的x86版本和x64版本看起來幾乎一模一樣,表面上都是一樣的Windows,但是骨子裡的核心其實大不相同。 <BR><BR>首先,說明「x86」和「x64」這兩個字眼的意義。 <BR><BR>x86其實是指過去處理器的通稱,Intel以前的處理器大多以86為其產品編號的末兩碼──8086、80286、386、486……。即使到了Pentium時代,大家私底下還是用586、686這樣的說法。不過,太舊的處理器我們就不去探討了,總之,現在我們講x86,其實就是泛指過去32位元的處理器──就是這樣,x86等於32位元。 <BR><BR>至於x64,泛指現在新一代,支援64位元(處理器裡面有64位元通用暫存器)處理器的相關產品就對了。 <BR><BR>有人會問,「為何不叫x32、x64,幹麼叫什麼x86、x64?」這我也不清楚,請你去問Intel或Microsoft,反正我來的時候就這樣了,我也不知道為何不用容易辨識的方式,所以不要問我,謝謝。