[請問]為何我的XP插了4GB的記憶體只顯示出3.2GB

轉載:華碩官網 常見問題

問題


當我插滿 4G 記憶體, 並開啟記憶體 remap 功能時, 可使用的記憶體在 32 位元 Windows XP 下只有 2G. 而我將記憶體 remap 功能關閉後, 可使用的記憶體在 32 位元 Windows XP 下就可有 2.93GB. 這很不正常. 要如何修正此問題?

解答
這是 32 位元作業系統的限制. 因為開啟記憶體 remap 功能後, 原來被佔用的位址會被 remap 到 4G 以上, 並且以1G 為單位 remap. 當 remap 未開啟時, 32 位元 Windows XP 下可使用的記憶體為 2.93G. 開起 remap 後, 2G-4G 的位址就被 remap 到 4G 以上. 但是 32 位元作業系統只能認到 4G, 所以 2G remap 上去後會認不到. 因此反而造成可使用的記憶體變少到 2G. 所以建議在 32 位元作業系統下將 remap 功能關閉.

P.S.
VISTA 32位元也是如此!



=================================================

問題

我的P5B系列主機板在Windows2000/XP/2003下無法正常抓到4GB或以上大小的記憶體容量。
此主機板不是應該支援到最高8GB的記憶體嗎?請問這是為什麼?又該如何排除這個問題呢?

解答

此問題分為兩部份:
1. 作業系統支援性
2. X86相容電腦架構限制

作業系統部份,由於32位元的作業系統(如WindowsXP/2000/2003)因為先天性限制,並無法定址到所有的記憶體容量(因為部份用來定址記憶體的位元組被用來定址PCI/PCI-e裝置了)。
若您有需求使用4GB或以上的記憶體容量,請務必更新至64位元之作業系統,如Windows XP 64bit或是Server 2003 64bit等等。

至於電腦架構部份,請進入BIOS設定畫面,並將"Advanced-->Chipset-->Northbridge Configuration-->Memory Remap Feature"選項設定為"Enabled"即可。

只要以上兩個條件都符合,應該就能正常偵測並使用所有記憶體容量了。



另外參考intel

請參考這篇文章 !!
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=327089&SiteID=14
Mobius wrote:
結論就是想不受限制使...(恕刪)


不行啦...我就是用VISTA X64的版本一樣抓不到 4GB,但是BIOS有看到4096唷
主要是看BIOS是哪個廠商出的吧?
小弟使用939平台,OS為64bit XP,
之前用A8N-SLI Premium,BIOS開啟支援4G記憶體選項為
S/W DRAM Over 4G Remapping
H/W DRAM Over 4G Remapping

現在使用A8R32-MVP Deluxe,找好久才發現BIOS選項為
Hardware memory hole
只要是64位元平台,不管是A家或I家的板子應該都能支援4G以上記憶體。
XP是32位元最多就只能認得 到3.2G 所以這很正常 要辨識4G 請灌好64位元的作業系統
--引言
2007-03-24 12:52 by ss939
因為這樣 :

在32Bit 裡只能定址到4GB (含虛擬記憶體 , 這很重要) , 也就是假設你現在只裝2gb , 再加上系統佔用資源(virtual memory & BIOS & PEI-E resource etc..)假設共3gb , 這樣離4gb限制還遠 !--

請問一下,若我插不到4GB的記憶體時,那系統佔用資源會佔用哪一部份的記憶體?硬碟的嗎?
謝謝~
cactusho wrote:
請問一下,若我插不到4GB的記憶體時,那系統佔用資源會佔用哪一部份的記憶體?硬碟的嗎?
(恕刪)

先提供些背景資料:想像晶片組提供若干GB個"門牌號碼"資源,而由BIOS作為戶政管理單位在開機時配置給系統/PCI/PCI-E裝置的Memory Mapped Input/Output以及供定址實體記憶體之用,但是從第4GB個位置往前算的"門牌號碼",系統/PCI/PCI-E裝置具有優先配用權。舉例來說,如果某特定電腦的系統/PCI/PCI-E裝置已經優先佔用了從第3GB到第4GB的"門牌號碼",但是電腦中同時又插了4GB的實體記憶體,則最後那1GB的實體記憶體會拿不到合法的門牌號碼,造成這1GB的實體記憶體無法被利用(就算裝了64位元 Vista也無解),但是如果是在955/965晶片組(含)以後且BIOS支援memory remapping功能的主機板,BIOS則會重新給予這1GB實體記憶體從第4GB到第5GB的門牌號碼(remapped from 3GB~4GB address space to 4GB~5GB address space),只要是沒被刻意封印且支援Physical Address Extension(PAE)的32位元作業系統(如Linux、FreeBSD、Solaris、Novell、Windows Server 2003/2008中高階版、甚至是XP SP1)或是64位元作業系統,在此例中都能夠妥善利用這被對應到第4GB到第5GB門牌號碼的1GB實體記憶體分配給程式使用,但是32-bit XP SP2以後到Vista SP1,雖然也支援PAE,但屬於被刻意封印的那一類,會對這1GB已經拿到戶口的實體記憶體故意視而不見。

針對你的問題,若插不到4GB的實體記憶體,系統資源還是會固定佔用從第4GB個位置往前的"門牌號碼"(記憶體定址位址),並不是佔用實體記憶體,也不是佔用硬碟。

ss939 wrote:
在32Bit 裡只能定址到4GB (含虛擬記憶體 , 這很重要) ....
(恕刪)

錯的離譜!!講的不夠清楚會造成大問題!

樓主的問題與另一個硬碟容量問題同居兩大超級月經題,每次一有新手發問此記憶體問題,通常就會被虧到無地自容,但是說實話,能夠回答的正確的人卻少之又少,因為這不是會算1000^3/1024^3等於多少或是2^32=4GB就可以了,絕大多數回帖都在傳播一些以訛傳訛、倒果為因的片段說法,而這一棟從2007年初就在蓋的樓也是典型錯誤回答多於正確回答。

"32Bit作業系統只能定址4GB實體記憶體"、"因為2^32=4GB"...是最經典以訛傳訛、倒果為因的回答,大大您這個"在32Bit 裡只能定址到4GB (含虛擬記憶體) "的說法又更上一層樓...,這不用去K Intel/AMD的white paper/data book,從Wiki找一下資料就知道錯的很離譜...

另一個實務的反例如32位元XP/Vista的虛擬記憶體Swap檔,也不會只能設到4GB大小而已吧!

ss939 wrote:
再來 , /3GB的指令其實只是為了突破除了os kernel外最高只能用2gb的限制 , 也就是說本來不加此指令時就算你裝到3GB的實體記憶體 , 全部的應用程式加起來也只能用到總共2gb , 剩下的一率給os用 , 不管os用不用得到 !
但當你加上/3GB的指令後 , 會將限制提升到3gb , 這樣對應用程式有幫助 !
(恕刪)

錯錯錯! 離譜中的離譜...,特別是這一句"全部的應用程式加起來也只能用到總共2gb , 剩下的一率給os用",

建議閱讀資料:
MSDN : Windows Memory Management

此外也建議把作業系統的教科書關於記憶體管理的部份重讀一次,再加上拜Google大神找關於Linux/Unix記憶體管理的資料讀一讀。

ss939 wrote:
最後也是最重要的 : 不要妄想在32bit native os上可以藉由4gb ram來多得多少效能 !

因為此時是用36bit的PAE模式 , 是一種非原生模式 , 許多軟體和驅動並無對此設計過 , 在所有用來配置記憶體給處理序的記憶體重新對應情況中,對於很多 PAE 都算是尋常的變數,所以容易當機 , 效能更有可能低落 , 尤其是大量的 I/O 動作時 .

好久沒打這麼多字了 , 希望對你們有幫助
(恕刪)

您都知道PAE了,居然還會打出這麼一大段認知錯誤的資料...

從32位元XP SP2以後到Vista SP1,只要用的是支援Intel eXecute Disable(XD) 或是AMD No eXecute(NX)能力的處理器,作業系統的PAE模式預設便是打開的,而這種處理器老早已經是主流了,造成當機?大量I/O動作效能低落?想太多了,不管是用32位元Windows Server 2003/2008中高階版或是Linux來架伺服器,也幾乎都是運作在PAE模式下以管理最多可達64GB的實體記憶體以及處理伺服器上的大量I/O存取。

PAE啟動後,memory paging會從2 level 的page table access變成3 level 的access,這從Wiki就能找到完整資料,雖多了一個level的acces,對於效能影響實在有限,而且能管理運用到的實體記憶體可高達64GB,利遠大於弊。

64位元Windows的page table access,也是3 level access。
Cruz-KUO wrote:
原本的
--------------------------------------------------
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect




更改為
--------------------------------------------------
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect/4gb /pae



是這樣嗎???...(恕刪)


這樣設定還是抓不到4GB耶
彩色 wrote:
multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect/4gb /pae
這樣設定還是抓不到4GB耶


嗯...Windows核心只有 /3gb 的參數,沒有/4gb喔...
除此之外,這個參數對於XP 32bit先天上的限制(最多4GB的實體位址空間,與系統資源共用)並沒有幫助。

/3GB
這個參數會強迫 x86 系統配置 3 GB 的虛擬位址空間給程式使用,並且配置 1 GB 給核心與執行元件使用。必須將程式設計為能夠利用額外的記憶體位址空間。當使用這個參數時,使用者模式程式能夠存取 Windows 對使用者模式程式所配置的 3 GB 記憶體 (而不是平常的 2 GB)。這個參數會將核心記憶體的起始點移至 3 GB。Microsoft Exchange Server 2003 和 Microsoft Windows Server 2003 的某些設定會需要這個參數。

以上節錄自:
Windows XP 和 Windows Server 2003 Boot.ini 檔可用的參數選項

如同ycweng提供的參考資料中所述,4GB虛擬定址空間的限制是每個處理程序各自獨立,而非共用。
wingth wrote:
vista 32bi...(恕刪)


Vista x86 還是有限制的

至於XP x86 4GB 妳先搞出來吧!!
關閉廣告
文章分享
評分
複製連結

今日熱門文章 網友點擊推薦!