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