認識物理內存4G地址空間的侷限

認識物理內存4G地址空間的侷限--轉載ios


識別到4G內存知足的條件:
1.
須要Cpu EM64T64bit OS的支持。
2.
主板芯片組的支持。
945芯片組以前(包括945)的都是32bit的芯片組,已經沒有空間來映射地址,擴展內存尋址,因此就算知足cpu,os兩個條件也沒法使用所有4G內存。好比370M65,M90,在945以後芯片組爲36位,BIOS會自動映射。因此知足cpu,os條件後就能夠正常識別4G內存服務器

1、4GB地址空間的侷限

首先咱們還必需要先了解兩個概念:

其一是物理內存:你們常說的物理內存就是指安裝在主板上的內存條,其實否則,在計算機的系統中,物理內存不只包括裝在主板上的內存條(RAM),還應該包括主板BIOS芯片的ROM,顯卡上的顯存(RAM)BIOS(ROM),以及各類PCIPCI-E設備上的RAMROM

其二是地址空間:地址空間就是對物理內存編碼(地址編碼)的範圍。

所謂編碼就是對每個物理存儲單元(一個字節)分配一個惟一的地址號碼,這個過程又叫作編址或者地址映射。這個過程就好像在平常生活中咱們給每家每戶分配一個地址門牌號。與編碼相對應的是尋址過程——分配一個地址號碼給一個存儲單元的目的是爲了便於找到它,完成數據的讀寫,這就是尋址,所以地址空間有時候又被稱做尋址空間。系統不只要給主板上的內存條編址,還要給上述的其它物理內存編址;它們都被編在同一個地址空間內,編址後的物理內存就能夠被系統資源使用或佔用。

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內存時操做系統也不可能使用到所有的內存容量,諸如傳統DOSUMA區就有部分被佔用的地址空間,但由於被佔用的容量相比之下實在太少,因此就被不少讀者忽略了。MMIO佔用的地址空間在256MB1GB之間,這麼大的浪費你們確定不能熟視無睹

由於受4GB芯片組地址空間的限制(32條地址線的限制)Intel 945系列及之前的芯片組、NVIDIA nForce550及之前的芯片組都沒有辦法繞過這個限制。具體緣由有三方面:其一是芯片組沒有剩餘空間分配來供操做系統來調配;其二是物理內存的編址必須是連續的,不能被割斷;其三是系統開機時必需先從4GB的頂端地址(FFFF_FFFFh)讀取BIOS數據, 這是IA32架構和4GB地址空間的侷限。

因此建議使用這些芯片組主板的用戶不要安裝4GB的內存,這樣會有部份內存容量不能被操做系統所使用。而解決4GB內存限制的惟一辦法就是擴展地址空間。

2、支持大於4GB內存的芯片組和內存重映射技術:

面對原有芯片組4GB內存的侷限,IntelNVIDIA早就開始未雨綢繆,他們對傳統的32位地址總線進行了調整,將其升級到36位,並推出了一系列能夠突破4GB內存限制的芯片組,這就是Intel965系列以及975系列、NVIDIAnForce 570/590以及680系列。

注:AMD64Socket AM2 CPU把內存控制器放到CPU中,提供40bit的物理地址總線,地址空間可達到1000GB。具體支持的地址空間和內存量取決於芯片組及主板的總線設計。

從上面的芯片組參數來看,地址總線從32位提高到36位,地址空間達到64GB,支持安裝8GB的物理內存。但因爲IA32架構的規則是開機時必須從4GBFFFF_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)芯片的地址, PCIPCI-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的芯片組(Intel945nForce550以前的),和32位操做系統均不能利用內存重映射技術解決4GB內存問題。

看到這裏,相信你們應該知道,4G內存不僅須要主板bios支持,還須要這個操做系統支持,64位自己就支持超過4G,因此配合支持4G的芯片組就能夠識別4G或者以上。可是32位系統,則須要系統自己能夠拓展內存地址空間,而後和支持4G的芯片組才能識別4G。對於通常的桌面操做系統而言,是沒有拓展功能的,如xpVista32位版本。可是2003這類服務器,須要消耗如此巨大的內存,因此擁有拓展功能。架構

相關文章
相關標籤/搜索