識別到4G內存知足的條件:
1.須要Cpu EM64T及64bit OS的支持。
2.主板芯片組的支持。
在945芯片組以前(包括945)的都是32bit的芯片組,已經沒有空間來映射地址,擴展內存尋址,因此就算知足cpu,os兩個條件也沒法使用所有4G內存。好比370,M65,M90,在945以後芯片組爲36位,BIOS會自動映射。因此知足cpu,os條件後就能夠正常識別4G內存服務器
1、4GB地址空間的侷限
首先咱們還必需要先了解兩個概念:
其一是「物理內存」:你們常說的物理內存就是指安裝在主板上的內存條,其實否則,在計算機的系統中,物理內存不只包括裝在主板上的內存條(RAM),還應該包括主板BIOS芯片的ROM,顯卡上的顯存(RAM)和BIOS(ROM),以及各類PCI、PCI-E設備上的RAM和ROM。
其二是「地址空間」:地址空間就是對物理內存編碼(地址編碼)的範圍。
所謂編碼就是對每個物理存儲單元(一個字節)分配一個惟一的地址號碼,這個過程又叫作「編址」或者「地址映射」。這個過程就好像在平常生活中咱們給每家每戶分配一個地址門牌號。與編碼相對應的是「尋址」過程——分配一個地址號碼給一個存儲單元的目的是爲了便於找到它,完成數據的讀寫,這就是「尋址」,所以地址空間有時候又被稱做「尋址空間」。系統不只要給主板上的內存條編址,還要給上述的其它物理內存編址;它們都被編在同一個地址空間內,編址後的物理內存就能夠被系統資源使用或佔用。
從Pentium Pro處理器開始,CPU的地址總線已經升級到36位,尋址能力達到64GB,按理說CPU支持4GB的內存是沒有問題的;所以,芯片組(北橋—MCH)地址總線的數量就成了決定物理內存地址空間大小的決定性因素。在Intel 945系列和945之前的芯片組,nForce 550系列和550之前的芯片組都只有32條地址線,爲系統提供4GB的地址空間,即最高能夠安裝4GB的內存條。
雖然能夠安裝4GB內存條,但這4GB的內存空間不能所有紛配給內存,由於從4GB空間的頂端地址(FFFF_FFFFh)開始向下要有400MB-1GB的地址空間要分配給主板上的其餘物理內存。
咱們能夠看到4GB的地址空間能夠分爲兩大部分,0MB~物理內存頂端的地址分配給主板上安裝的物理內存,4GB到物理內存頂端的地址分配給BIOS(ROM)和PCI/PCI-E設備的存儲器。因爲這些存儲器基本上是用於系統的輸入和輸出,因此Intel又把這段地址空間稱之爲「MMIO」(Memory-Mapped I/O—I/O存儲器映射)。當系統安裝3GB如下的內存時,MMIO區域不會與物理內存條的地址空間相重疊,操做系統能夠訪問幾乎所有的物理內存,而操做系統屬性裏顯示的物理內存基本接近實際內存的容量。
而當系統安裝上4GB內存時,問題出現了。因爲位於4GB下面的部分地址空間要優先分配給MMIO,內存條上對應的這段區間就得不到編址,因此操做系統就不能使用。
嚴格意義上來講,即便安裝2GB內存時操做系統也不可能使用到所有的內存容量,諸如傳統DOS的UMA區就有部分被佔用的地址空間,但由於被佔用的容量相比之下實在太少,因此就被不少讀者忽略了。MMIO佔用的地址空間在256MB~1GB之間,這麼大的「浪費」你們確定不能「熟視無睹」。
由於受4GB芯片組地址空間的限制(32條地址線的限制),Intel 945系列及之前的芯片組、NVIDIA nForce550及之前的芯片組都沒有辦法繞過這個限制。具體緣由有三方面:其一是芯片組沒有剩餘空間分配來供操做系統來調配;其二是物理內存的編址必須是連續的,不能被割斷;其三是系統開機時必需先從4GB的頂端地址(FFFF_FFFFh)讀取BIOS數據, 這是IA32架構和4GB地址空間的侷限。
因此建議使用這些芯片組主板的用戶不要安裝4GB的內存,這樣會有部份內存容量不能被操做系統所使用。而解決4GB內存限制的惟一辦法就是擴展地址空間。
2、支持大於4GB內存的芯片組和「內存重映射」技術:
面對原有芯片組4GB內存的侷限,Intel和NVIDIA早就開始未雨綢繆,他們對傳統的32位地址總線進行了調整,將其升級到36位,並推出了一系列能夠突破4GB內存限制的芯片組,這就是Intel的965系列以及975系列、NVIDIA的nForce 570/590以及680系列。
注:AMD的64位Socket AM2 CPU把內存控制器放到CPU中,提供40bit的物理地址總線,地址空間可達到1000GB。具體支持的地址空間和內存量取決於芯片組及主板的總線設計。
從上面的芯片組參數來看,地址總線從32位提高到36位,地址空間達到64GB,支持安裝8GB的物理內存。但因爲IA32架構的規則是開機時必須從4GB的FFFF_FFFFh地址讀取BIOS信息,儘管芯片組支持的地址空間變大了,且最大支持的物理內存容量也達到了8GB(或以上),但從本質上來講仍然不能解決MMIO地址佔用4GB內存編址的問題。這要怎麼辦呢?
36位地址總線最大能夠支持64GB的地址空間,這就爲移動MMIO地址區提供了條件。如今解決這個問題的辦法就是「內存重映射」技術——就是在IA32架構的基礎上,把BIOS(ROM)和PCI/PCI-E設備佔用的MMIO地址區段從新映射到內存條頂端地址以上 (例如4GB以上)的地址空間,從而把IA32架構規定的這一段操做系統不可以使用的、位於4GB下面的MMIO地址空間回收給物理內存使用,保證物理內存編址的連續性。
3、BIOS必須支持「內存重映射」:
「內存重映射」技術必須經過BIOS完成。因此BIOS必須具備支持內存重映射的功能模塊,以便根據用戶安裝的內存容量來肯定是否須要啓用內存重映射功能。同時,在BIOS的設置選單中也要有「Memory Re-Mapping」的設置選項,使用4GB或者4GB以上內存的用戶必定要將此項設置設爲「Enable」。
4、解決4GB內存問題還須要操做系統支持:
咱們常使用的桌面操做系統是32位的,支持4GB的地址空間。前面咱們介紹瞭解決4GB問題的芯片組是支持64GB地址空間的,在這樣的芯片組主板上安裝32位的操做系統,就只能使用4GB的地址空間,所以安裝4GB內存不能使用僅支持4GB地址空間的32位的操做系統。應該使用支持大於4GB地址空間的32位操做系統或64位的操做系統。
5、小結
1、因爲iA32架構要求BIOS(ROM)芯片的地址, PCI、PCI-E存儲器地址、APCI中斷路由地址等必須佔用從4GB開始如下的256M-1GB空間。這段MMIO地址區不能分配給內存條。4GB的內存條有256MB-1GB的容量不能編址而浪費。
2、使用4GB或者以上的內存條,必須使用地址(編址)空間64GB的芯片組主板。
3、內存重映射就是把被MMIO佔用的地址移到內存條容量以上的地址空間。
4、BIOS應具備支持「內存重映射」功能,設置項裏有 Memory Remap Feature 選項,並設置爲Enable。
5、必須安裝尋址空間大於4GB的操做系統。好比Windows 2000高級服務器版,以及64位操做系統。
6、全部地址空間爲4GB的芯片組(Intel945和nForce550以前的),和32位操做系統均不能利用「內存重映射」技術解決4GB內存問題。
看到這裏,相信你們應該知道,4G內存不僅須要主板bios支持,還須要這個操做系統支持,64位自己就支持超過4G,因此配合支持4G的芯片組就能夠識別4G或者以上。可是32位系統,則須要系統自己能夠拓展內存地址空間,而後和支持4G的芯片組才能識別4G。對於通常的桌面操做系統而言,是沒有拓展功能的,如xp、Vista的32位版本。可是2003這類服務器,須要消耗如此巨大的內存,因此擁有拓展功能。架構