本文轉(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)用也沒必要進(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)闆]有提供兼容機(jī)制。
→_→操作系統(tǒng)
操作系統(tǒng)其實(shí)也是程序,64位的操作系統(tǒng)使用的是64位的指令,不能安裝在32位機(jī)器上。
設(shè)計(jì)初衷不同
64位操作系統(tǒng)的設(shè)計(jì)初衷是為了滿足需要大量?jī)?nèi)存和復(fù)雜浮點(diǎn)數(shù)運(yùn)算的需求,一般用在科學(xué)計(jì)算、人工智能、平面設(shè)計(jì)、視頻處理、3D動(dòng)畫和游戲數(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ī)器上,但沒啥意義,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(指針大?。?/div>
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ì)開發(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ì)初開發(fā)的所有舊程序兼容。64位處理器可以提升程序的性能,更好的利用64位操作系統(tǒng)的特性。64位的處理器有256TB的虛擬內(nèi)存,其中128TB分配給了用戶空間,另外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/
相關(guān)文章