做門(mén)的網(wǎng)站建設(shè)百度競(jìng)價(jià)推廣是什么工作
基本概念
32位的CPU與64位CPU
以下內(nèi)容摘自維基百科:
64 位 CPU 是指 CPU 內(nèi)部的通用寄存器的寬度為 64 比特,支持整數(shù)的 64 比特寬度的算術(shù)與邏輯運(yùn)算。那么 32 位 CPU 同理。
一個(gè) CPU,聯(lián)系外部的數(shù)據(jù)總線與地址總線,可能有不同的寬度;術(shù)語(yǔ)“64位”也常用于描述這些總線的大小。不過(guò)這一術(shù)語(yǔ)也可能指電腦指令集的指令長(zhǎng)度,或其它的數(shù)據(jù)項(xiàng)。去掉進(jìn)一步的條件,“64位”電腦架構(gòu)一般具有 64 位寬的整數(shù)型寄存器,它可支持 64 位“區(qū)塊”的整數(shù)型數(shù)據(jù)。
64 位架構(gòu)無(wú)疑可應(yīng)用在需要處理大量數(shù)據(jù)的應(yīng)用程序,如數(shù)字視頻、科學(xué)運(yùn)算、和早期的大型數(shù)據(jù)庫(kù)。
那么 32 位 CPU 與 64 位 CPU 到底有什么區(qū)別?
- 數(shù)據(jù)處理能力增強(qiáng):64 位 CPU 通用寄存器的位寬增加一倍,這也就意味著 64 位 CPU 可以一次性處理 64bit 的整形數(shù)據(jù);
- 內(nèi)存尋址能力增強(qiáng):如果是 32 位 CPU 的話,它的地址總線最多不會(huì)超過(guò) 32,那么它所能達(dá)到的尋址范圍也就不會(huì)超過(guò) 2 的 32 次方字節(jié)(存儲(chǔ)單元以字節(jié)為單位),也就是 4GB,而如果是 64 位處理器的話,它所能達(dá)到的尋址范圍理論上就會(huì)是 2 的 64 次方字節(jié)(上億 GB)。
補(bǔ)充:一般處理器多少位是指通用寄存器的長(zhǎng)度,當(dāng)然數(shù)據(jù)線需要與之相同;地址線則不需要與之相等,好比 intel 64 位處理器則是 40 位地址總線,最大支持 1TB 的內(nèi)存尋址。
32位操作系統(tǒng)與64位操作系統(tǒng)
平時(shí)我們所說(shuō)的 32 位操作系統(tǒng)也被稱為 X86 系統(tǒng),x64 代表 64 位操作系統(tǒng),關(guān)于它的簡(jiǎn)略解釋:為什么32位的計(jì)算機(jī)系統(tǒng)不叫x32而叫x86呢?
關(guān)于 32 位操作系統(tǒng)與 64 位操作系統(tǒng)的區(qū)別如下:
32 位操作系統(tǒng)既可以運(yùn)行在 32 位的 CPU 上,也可以運(yùn)行在 64 位的 CPU 上,只不過(guò),運(yùn)行在 64 位 CPU 上的話,就有點(diǎn)“大馬拉小車”的感覺(jué)了——無(wú)法發(fā)揮出 CPU 的全部能力。
64 位操作系統(tǒng)只能運(yùn)行在 64 位的 CPU 上,因此如果一個(gè)操作系統(tǒng)是 64 位,那么它的 CPU 架構(gòu)也必定是 64 位。
64 位操作系統(tǒng)相比于 32 位操作系統(tǒng)的優(yōu)勢(shì)正如上述 64 位 CPU 與 32 位 CPU 的優(yōu)勢(shì)一樣。
總線結(jié)構(gòu)與主板構(gòu)成
注:以下兩部分內(nèi)容摘抄自:32位系統(tǒng)最大只能支持4GB內(nèi)存之由來(lái)~
在解決本文標(biāo)題所述的問(wèn)題之前,我們?cè)賮?lái)了解一些關(guān)于總線結(jié)構(gòu)與主板構(gòu)成的相關(guān)知識(shí)。
說(shuō)起總線大家肯定不陌生,而且大家平時(shí)肯定跟它打過(guò)交道,我們?cè)谟肬盤(pán)拷貝數(shù)據(jù)的時(shí)候先要把U盤(pán)通過(guò)USB接口與電腦相連才能拷貝。USB接口實(shí)際上就是一種總線,一般稱這種總線為USB總線(也叫做通用串行總線)。在很久之前是沒(méi)有USB總線的,那個(gè)時(shí)候每個(gè)外設(shè)各自采用自己的接口標(biāo)準(zhǔn),舉個(gè)最簡(jiǎn)單的例子:鼠標(biāo)生產(chǎn)廠商采用鼠標(biāo)特有的接口,鍵盤(pán)生產(chǎn)廠商用鍵盤(pán)特有的接口,這樣一來(lái)的話,PC機(jī)上就必須提供很多接口,這樣一來(lái)增加了硬件設(shè)計(jì)難度和成本,直到后來(lái)USB接口的出現(xiàn),它統(tǒng)一了很多外設(shè)接口的標(biāo)準(zhǔn),不僅使得用戶可以很方便地連接一些外設(shè),更增強(qiáng)了PC的可擴(kuò)展性。所以現(xiàn)在大家看到的鼠標(biāo)、鍵盤(pán)、U盤(pán)、打印機(jī)等等這些外設(shè)都可以直接通過(guò)USB接口直接插到電腦上的。
在計(jì)算機(jī)系統(tǒng)中總線是非常重要的一個(gè)概念,正是因?yàn)橛辛丝偩€,所有的組成部件才能一起正常協(xié)同分工合作。在很久以前的PC機(jī)中,采用的是三總線結(jié)構(gòu),即:數(shù)據(jù)總線、地址總線、控制總線。它們分別用來(lái)傳輸不同類型的數(shù)據(jù),數(shù)據(jù)總線用來(lái)傳輸數(shù)據(jù),地址總線用來(lái)傳輸?shù)刂?#xff0c;控制總線用來(lái)傳輸一些控制信號(hào)。
隨著時(shí)代的發(fā)展,這種簡(jiǎn)單的總線結(jié)構(gòu)逐漸被淘汰。下面這幅圖是現(xiàn)代計(jì)算機(jī)采用的結(jié)構(gòu):
事實(shí)上這也是現(xiàn)代主板所采用的結(jié)構(gòu),當(dāng)然可能部分地方有略微不同(大體結(jié)構(gòu)是差不多的),仔細(xì)觀察過(guò)主板構(gòu)成的朋友可能對(duì)上面一幅圖很熟悉。在主板上主要有兩大主要部分:北橋(North Bridge也稱Host Bridge)和南橋(South Bridge)。北橋主要負(fù)責(zé)CPU和內(nèi)存、顯卡這些部件的數(shù)據(jù)傳送,而南橋主要負(fù)責(zé)I/O設(shè)備、外部存儲(chǔ)設(shè)備以及BIOS之間的通信?,F(xiàn)在有些主板已經(jīng)沒(méi)有北橋了,因?yàn)樾酒瑥S商已經(jīng)把北橋所負(fù)責(zé)的功能直接集成到CPU中了(不過(guò)暫且我們以上副圖的模型來(lái)討論)。
在上副圖中,我沒(méi)有畫(huà)出數(shù)據(jù)總線和地址總線等,因?yàn)樵谀承┛偩€標(biāo)準(zhǔn)中它們被集成到一起了,比如在PCI總線中,地址總線和數(shù)據(jù)總線總是分時(shí)復(fù)用的(也就是說(shuō)假如PCI總線有32位數(shù)據(jù)總線,這32位總線在某個(gè)時(shí)刻可以充當(dāng)數(shù)據(jù)總線的作用,在下一時(shí)刻可以充當(dāng)?shù)刂房偩€的作用)。有的總線同時(shí)提供了數(shù)據(jù)總線和地址總線。
下面來(lái)說(shuō)一下幾個(gè)主要總線和南北橋的作用:
FSB總線:即前端總線(Front Side Bus),CPU和北橋之間的橋梁,CPU和北橋傳遞的所有數(shù)據(jù)必須經(jīng)過(guò)FSB總線,可以這么說(shuō),FSB總線的頻率直接影響到CPU訪問(wèn)內(nèi)存的速度。
北橋:北橋是CPU和內(nèi)存、顯卡等部件進(jìn)行數(shù)據(jù)交換的唯一橋梁,也就是說(shuō)CPU想和其他任何部分通信必須經(jīng)過(guò)北橋。北橋芯片中通常集成的還有內(nèi)存控制器等,用來(lái)控制與內(nèi)存的通信?,F(xiàn)在的主板上已經(jīng)看不到北橋了,它的功能已經(jīng)被集成到CPU當(dāng)中了。
PCI總線:PCI總線是一種高性能局部總線,其不受CPU限制,構(gòu)成了CPU和外設(shè)之間的高速通道。比如現(xiàn)在的顯卡一般都是用的PCI插槽,PCI總線傳輸速度快,能夠很好地讓顯卡和CPU進(jìn)行數(shù)據(jù)交換。
南橋:主要負(fù)責(zé)I/O設(shè)備之間的通信,CPU要想訪問(wèn)外設(shè)必須經(jīng)過(guò)南橋芯片。
在了解了這些基礎(chǔ)東西之后,下面來(lái)講解一下為何 32 位系統(tǒng)最大只支持 4GB 內(nèi)存。(是的,就算是 64 位的 CPU,裝載 32 位的操作系統(tǒng),它的尋址能力還是 4GB。)
對(duì)于標(biāo)題的解釋
在使用計(jì)算機(jī)時(shí),其最大支持的內(nèi)存是由操作系統(tǒng)和硬件兩方面決定的。
先說(shuō)一下硬件方面的因素,在上面已經(jīng)提到了地址總線,在計(jì)算機(jī)中 CPU的地址總線數(shù)目 決定了CPU 的 尋址 范圍,這種由地址總線對(duì)應(yīng)的地址稱作為物理地址。假如CPU有32根地址總線(一般情況下32位的CPU的地址總線是32位,也有部分32位的CPU地址總線是36位的,比如用做服務(wù)器的CPU),那么提供的可尋址物理地址范圍 為 232=4GB(在這里要注意一點(diǎn),我們平常所說(shuō)的32位CPU和64位CPU指的是CPU一次能夠處理的數(shù)據(jù)寬度,即位寬,不是地址總線的數(shù)目)。自從64位CPU出現(xiàn)之后,一次便能夠處理64位的數(shù)據(jù)了,其地址總線一般采用的是36位或者40位(即CPU能夠?qū)ぶ返奈锢淼刂房臻g為64GB或者1T)。在CPU訪問(wèn)其它任何部件的時(shí)候,都需要一個(gè)地址,就像一個(gè)快遞員送快遞,沒(méi)有地址他是不知道往哪里送達(dá)的,舉個(gè)例子,CPU想從顯存單元讀取數(shù)據(jù),必須知道要讀取的顯存單元的實(shí)際物理地址才能實(shí)現(xiàn)讀取操作,同樣地,從內(nèi)存條上的內(nèi)存單元讀取數(shù)據(jù)也需要知道內(nèi)存單元的物理地址。換句話說(shuō),CPU訪問(wèn)任何存儲(chǔ)單元必須知道其物理地址。
用戶在使用計(jì)算機(jī)時(shí)能夠訪問(wèn)的最大內(nèi)存不單是由CPU地址總線的位數(shù)決定的,還需要考慮操作系統(tǒng)的實(shí)現(xiàn)。實(shí)際上用戶在使用計(jì)算機(jī)時(shí),進(jìn)程所訪問(wèn)到的地址是邏輯地址,并不是真實(shí)的物理地址,這個(gè)邏輯地址是操作系統(tǒng)提供的,CPU在執(zhí)行指令時(shí)需要先將指令的邏輯地址變換為物理地址才能對(duì)相應(yīng)的存儲(chǔ)單元進(jìn)行數(shù)據(jù)的讀取或者寫(xiě)入(注意邏輯地址和物理地址是一一對(duì)應(yīng)的)。
對(duì)于32位的windows操作系統(tǒng),其邏輯地址編碼采用的地址位數(shù)是32位的,那么操作系統(tǒng)所提供的邏輯地址尋址范圍是4GB,而在intel x86架構(gòu)下,采用的是內(nèi)存映射技術(shù)(Memory-Mapped I/O, MMIO),也就說(shuō)將4GB邏輯地址中一部分要?jiǎng)澐殖鰜?lái)與BIOS ROM、CPU寄存器、I/O設(shè)備這些部件的物理地址進(jìn)行映射,那么邏輯地址中能夠與內(nèi)存條的物理地址進(jìn)行映射的空間肯定沒(méi)有4GB了,看下面這幅圖就明白了:
所以當(dāng)我們裝了32位的windows操作系統(tǒng),即使我們買(mǎi)了4GB的內(nèi)存條,實(shí)際上能被操作系統(tǒng)訪問(wèn)到的肯定小于4GB,一般情況是3.2GB左右。假如說(shuō)地址總線位數(shù)沒(méi)有32位,比如說(shuō)是20位,那么CPU能夠?qū)ぶ返?MB的物理地址空間,此時(shí)操作系統(tǒng)即使能支持4GB的邏輯地址空間并且假設(shè)內(nèi)存條是4GB的,能夠被用戶訪問(wèn)到的空間不會(huì)大于1MB(當(dāng)然此處不考慮虛擬內(nèi)存技術(shù)),所以用戶能夠訪問(wèn)到的最大內(nèi)存空間是由硬件和操作系統(tǒng)兩者共同決定的,兩者都有制約關(guān)系。
于64位的操作系統(tǒng),其邏輯地址編碼采用的地址位數(shù)是40位,能夠最大支持1T的邏輯地址空間??紤]一種情況,假如CPU是64位的,地址總線位數(shù)是40位,操作系統(tǒng)也是64位的,邏輯地址編碼采用的地址位數(shù)也是40位,內(nèi)存條大小是64GB,那么是不是內(nèi)存條的64GB全部都能被利用了呢?答案是不一定,因?yàn)檫@里面還要考慮一個(gè)因素就是內(nèi)存控制器,內(nèi)存控制器位于北橋之內(nèi)(現(xiàn)在基本都是放在CPU里面了),內(nèi)存控制器的實(shí)際連接內(nèi)存的地址線決定了可以支持的內(nèi)存容量,也就是說(shuō)內(nèi)存控制器與內(nèi)存槽實(shí)際連接的地址線如果沒(méi)有40位的話,是無(wú)法完全利用64GB的內(nèi)存條的存儲(chǔ)空間的。當(dāng)然對(duì)于內(nèi)存控制器這個(gè)問(wèn)題幾乎可以不用考慮,因?yàn)楝F(xiàn)在大多數(shù)的內(nèi)存控制器至少都采用的是40位地址總線。
總結(jié)
對(duì)于以上所述,我進(jìn)行一下簡(jiǎn)單的總結(jié):
一個(gè)計(jì)算機(jī),它的內(nèi)存訪問(wèn)能力是由硬件和軟件共同決定的。硬件層面就指 CPU 的尋址能力,也就是地址總線的個(gè)數(shù)。軟件層面,指的就是操作系統(tǒng)。實(shí)際上我們(進(jìn)程)在進(jìn)行內(nèi)存訪問(wèn)的時(shí)候,訪問(wèn)的都是邏輯地址,而邏輯地址是由操作系統(tǒng)提供的。對(duì)于 32 位的操作系統(tǒng),其邏輯地址編碼采用的地址位數(shù)是 32 位,那么操作系統(tǒng)所提供的邏輯地址尋址范圍就是 4GB。從這個(gè)方面來(lái)說(shuō),縱使你的 CPU 實(shí)際尋址能力為 2 的 64 次方,由于操作系統(tǒng)只提供 4GB 的邏輯地址,那 CPU 透過(guò)操作系統(tǒng)所能訪問(wèn)到的內(nèi)存大小也就只有4GB了。
對(duì)與上述總結(jié),我還有一個(gè)簡(jiǎn)單的補(bǔ)充:
在和我的大神小伙伴討論的時(shí)候,他對(duì)于“為什么 64 位 CPU 裝載 32 位操作系統(tǒng),它的尋址能力還是 4GB”這個(gè)問(wèn)題的解答,只說(shuō)了一句話:“32 位操作系統(tǒng)沒(méi)有對(duì)應(yīng) 64 位的尋址指令”。在細(xì)細(xì)品味之后,覺(jué)得頗有道理,我對(duì)于這句話的淺顯理解是:32 位操作系統(tǒng)沒(méi)有對(duì)應(yīng) 64 位的尋址指令,所以它不能提供 4GB 以上的邏輯地址,所以 64 位 CPU 透過(guò) 32 位操作系統(tǒng),它的尋址能力依舊是 4GB。
參考閱讀
維基百科:64位
32位系統(tǒng)最大只能支持4GB內(nèi)存之由來(lái)