本文轉載自微信公眾號「程序喵大人」,作者程序喵大人。轉載本文請聯(lián)系程序喵大人公眾號。
想必大家都遇到過(guò)這樣的問(wèn)題:安裝某個(gè)軟件的時(shí)候,出現提示選擇32位版本還是64位版本?我們也可以查看自己的電腦是32位還是64位系統。
Windows
Linux
大家可能知道32位和64位和系統有關(guān),
但其實(shí) 32 vs 64 可以有多重含義。
一般情況下,有以下幾種可能:
CPU、程序、操作系統。
今天我來(lái)給大家一一介紹下!
→_→CPU
首先,我們要先從什么是位數講起。
計算機中的位數指的是CPU一次能處理的最大位數。在Intel由16位的286升級到386的時(shí)候,為了和16位系統兼容,它先推出的是386SX,這種CPU內部預算為32位,外部數據傳輸為16位。直到386DX以后,所有的CPU在內部和外部都是32位的了。
有些人往往會(huì )弄不清在計算機中出現的“位”和Byte,KB,MB等有何關(guān)系,8位等于一字節Byte,即8bit=1B。32位處理器每次最多處理4Byte(32bit),同理,64位處理器每次最多處理 8Byte(64bit) 。
32位架構的CPU數據總線(xiàn)寬度是32位,每次可以傳輸32位數據,可以計算4個(gè)字節。64位架構的CPU數據總線(xiàn)寬度是64位,每次可以傳輸64位數據,可以計算8個(gè)字節。
數據總線(xiàn)
數據總線(xiàn)是CPU與內存或其它器件之間的數據傳輸的通道,數據總線(xiàn)的寬度決定了CPU和外界的數據傳輸速度,每根線(xiàn)可以傳輸1位二進(jìn)制數據,32根線(xiàn)每次就可以傳輸32位數據,64根線(xiàn)每次就可以傳輸64位數據。除了數據總線(xiàn)外還有地址總線(xiàn)和控制總線(xiàn)。
地址總線(xiàn)
CPU通過(guò)地址總線(xiàn)來(lái)指定存儲單元,地址總線(xiàn)的寬度決定了CPU所能訪(fǎng)問(wèn)的最大內存空間大小,1根地址線(xiàn)能訪(fǎng)問(wèn)的內存空間是1bit,32根線(xiàn)訪(fǎng)問(wèn)的最大內存空間是4G,64根線(xiàn)...太大了。
控制總線(xiàn)
CPU通過(guò)控制總線(xiàn)對外部器件進(jìn)行控制,主要通過(guò)控制總線(xiàn)來(lái)傳輸控制信號和時(shí)序信號,控制總線(xiàn)是各種信號線(xiàn)的集合,是計算機各部件之間傳送數據、地址和控制信息的公共通道,控制總線(xiàn)的寬度決定了CPU對外部器件的控制能力。
總體來(lái)說(shuō),CPU作為總線(xiàn)的主控,通過(guò)控制總線(xiàn)向各個(gè)外部器件發(fā)送控制信號,通過(guò)地址總線(xiàn)訪(fǎng)問(wèn)內存地址,通過(guò)數據總線(xiàn)傳輸數據。
CPU的位數越大,可以計算的數值就越大,64位CPU可以執行更大數字的運算,但這個(gè)優(yōu)勢在普通應用上不太明顯,普通應用也沒(méi)必要進(jìn)行太大數字的運算,但是對于數值計算較多的應用就非常明顯。同時(shí)64位CPU有更大的尋址空間。
運算速度不同:64位CPU的通用寄存器數據寬度是64位,處理器依次可以讀取64位數據,比32位多一倍,運算速度理論上會(huì )提升一倍。像兩個(gè)不同的打工人一樣,打工人A一次性可以搬32塊磚,打工人B一次性可以搬64塊磚,誰(shuí)搬磚的速度快,自然你更喜歡用誰(shuí)。由于運算速度提升,64位CPU可以在多任務(wù)中運行順暢,來(lái)回切換也不會(huì )卡頓,王者榮耀都順暢多了。
那么有朋友要問(wèn)了,既然位數越高處理器運算速度越快,為什么不用128位、256位的CPU?因為位數越高,處理器芯片的設計也就越復雜,當前的科技水平還無(wú)法制造這么復雜的CPU。
→_→程序
指的是32位程序和64位程序。
32位指令的程序一般來(lái)說(shuō)可以在64位機器上運行,可以兼容。64位指令的程序不可以在32位機器上運行,因為32位的寄存器存不下64位的指令。注意其實(shí)還有16位的程序,但16位的程序不能運行在64位的機器上,因為沒(méi)有提供兼容機制。
→_→操作系統
操作系統其實(shí)也是程序,64位的操作系統使用的是64位的指令,不能安裝在32位機器上。
設計初衷不同
64位操作系統的設計初衷是為了滿(mǎn)足需要大量?jì)却婧蛷碗s浮點(diǎn)數運算的需求,一般用在科學(xué)計算、人工智能、平面設計、視頻處理、3D動(dòng)畫(huà)和游戲數據庫以及各種網(wǎng)絡(luò )服務(wù)器等領(lǐng)域中。
安裝環(huán)境不同
64位操作系統只能安裝在64位CPU的機器上,同時(shí)需要配合64位的程序才能發(fā)揮最佳性能,32位操作系統既可以安裝在32位CPU的機器上,也可以安裝在64位CPU的機器上,但沒(méi)啥意義,64位的性能會(huì )被大打折扣。
尋址能力不同
32位操作系統最多可以尋址2的32次方即4,294,967,296字節,約4GB內存,4GB的內存就現在而言在很多服務(wù)端程序上都是不夠用的,而64位操作系統理論上可以尋址2的64次方即18,446,744,073,709,551,616字節超過(guò)1億GB內存,但這只是理論上,由于不同架構的CPU設計不同,所以尋址能力也有錯差別。
32位操作系統
64位操作系統
char
1個(gè)字節
1個(gè)字節
short int
2個(gè)字節
2個(gè)字節
int
4個(gè)字節
4個(gè)字節
unsigned int
4個(gè)字節
4個(gè)字節
float
4個(gè)字節
4個(gè)字節
double
8個(gè)字節
8個(gè)字節
long(指針大?。?/div>
4個(gè)字節
8個(gè)字節
long long
8個(gè)字節
8個(gè)字節
unsigned long
4個(gè)字節
8個(gè)字節
20世紀和21世紀早期制造的計算機大多都是32位的機器,現如今大多都是64位的機器了,但為了兼容32位機器,一般編程都會(huì )開(kāi)發(fā)出兩個(gè)版本,例如打包一個(gè)Android SDK,SDK內部一般都會(huì )包含32位和64位的動(dòng)態(tài)鏈接庫,iOS的Framework內部也會(huì )有32位和64位的靜態(tài)鏈接庫。
總結
32位處理器的優(yōu)點(diǎn)唯一值得一提就是它可以與20世紀末和21世紀初開(kāi)發(fā)的所有舊程序兼容。64位處理器可以提升程序的性能,更好的利用64位操作系統的特性。64位的處理器有256TB的虛擬內存,其中128TB分配給了用戶(hù)空間,另外128TB分配給了內核空間(不同架構的CPU虛擬內存的設計大小不同,AMD的x86-64架構的CPU只有最低48位才會(huì )在地址轉換時(shí)被使用,所以總的虛擬地址空間為2的48次方即256TB,這里涉及到多級頁(yè)表中的四級頁(yè)表,后續程序喵會(huì )介紹)。
要實(shí)現真正意義上的64位計算,光有64位的處理器是不行的,還必須得有64位的操作系統以及64位的應用軟件才行,三者缺一不可,缺少其中任何一種要素都是無(wú)法實(shí)現64位計算的。在64位處理器方面,Intel和AMD兩大處理器廠(chǎng)商都發(fā)布了多個(gè)系列多種規格的64位處理器;
參考資料
https://blog.51cto.com/zliang90/1282301
https://www.zhihu.com/question/19862280
https://blog.csdn.net/qing101hua/article/details/80763764
https://www.geeksforgeeks.org/difference-32-bit-64-bit-operating-systems/
https://www.guru99.com/32-bit-vs-64-bit-operating-systems.html
https://www.werecoverdata.com/blog/whats-better-64-bit-vs-32-bit/
https://www.educba.com/32-bit-vs-64-bit-operating-system/
相關(guān)文章