<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wake up and smell the Coffee &#187; Windows</title>
	<atom:link href="http://www.yannicafe.info/wp/tag/windows/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yannicafe.info/wp</link>
	<description>There's nothing about the Coffee, just Wake up!</description>
	<lastBuildDate>Fri, 13 Nov 2009 22:22:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>32位元Windows XP和Vista下安裝4G記憶體的問題</title>
		<link>http://www.yannicafe.info/wp/2008/07/12/66.html</link>
		<comments>http://www.yannicafe.info/wp/2008/07/12/66.html#comments</comments>
		<pubDate>Sat, 12 Jul 2008 14:40:12 +0000</pubDate>
		<dc:creator>yanni</dc:creator>
				<category><![CDATA[資訊]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.yannicafe.info/wp/2008/07/12/66.html</guid>
		<description><![CDATA[其實這是個老問題了，只是剛好最近又有人問到我這個問題。也就是為什麼在他的XP/Vista中，4G的記憶體只看的到3G左右而已。所以我把先前在BBS上寫的文章再拿出來貼到blog做個記錄&#8230; ※ 引述《eoda (eoda)》之銘言： &#62; 32bit OS 的只能定址到 4GB 的實體記憶體，這也是為什麼當你 &#62; 實體記憶體超過 4GB 時預設是無法使用 4GB 以上的實體記憶體 &#62; (因為定址不到)。Intel 在 Pentium Pro 後加上了 &#62; PAE(Physical Address Extension) 增加 4bit 來讓定址能到 64GB。 &#62; 所以以你的例子來說要在 boot.ini 中加上 /PAE 參處才能定址到所 &#62; 有的記憶體。 &#62; [略] 關於這個問題，我有稍微研究過。因為公司買的一批4GB RAM機器讓我花了不少時間解決這個問題，以下是我survey的一點心得，若有錯誤歡迎指教。 很不幸的，雖然32bits的OS可以定址到4GB的RAM，或是透過PAE擴展到36bits的位址線以支援到64GB [1]。但當你在32bits的XP/VISTA上安裝了4GB的RAM時，你在系統(OS)中看到的只會有不到4GB的記憶體(視硬體而定)，也就是說你的可用記憶體到不了4GB的，可能是 2.x ~ 3.x GB。 雖然定址空間可以到4GB（或是開啟PAE到64GB）。但別忘了！硬體的記憶體也是需要定址，OS才能存取到的！所以僅管你可以定址到4GB，你也裝了4GB的RAM，但因為要做硬體記憶體映射，所以在4GB頂端的那些定址空間中，有部分的位址會被拿去mapping到hardware的memory，也是是所謂的MMIO (Memory Mapped Input/Output) [2]。 這部分的位址佔用是很恐怖的，光PCI, Chipset, [...]]]></description>
			<content:encoded><![CDATA[<p>其實這是個老問題了，只是剛好最近又有人問到我這個問題。也就是為什麼在他的XP/Vista中，4G的記憶體只看的到3G左右而已。所以我把先前在BBS上寫的文章再拿出來貼到blog做個記錄&#8230;</p>
<p><span id="more-66"></span></p>
<p>※ 引述《eoda (eoda)》之銘言：   <br />&gt; 32bit OS 的只能定址到 4GB 的實體記憶體，這也是為什麼當你    <br />&gt; 實體記憶體超過 4GB 時預設是無法使用 4GB 以上的實體記憶體    <br />&gt; (因為定址不到)。Intel 在 Pentium Pro 後加上了    <br />&gt; PAE(Physical Address Extension) 增加 4bit 來讓定址能到 64GB。    <br />&gt; 所以以你的例子來說要在 boot.ini 中加上 /PAE 參處才能定址到所    <br />&gt; 有的記憶體。    <br />&gt; [略]</p>
<p>關於這個問題，我有稍微研究過。因為公司買的一批4GB RAM機器讓我花了不少時間解決這個問題，以下是我survey的一點心得，若有錯誤歡迎指教。</p>
<p>很不幸的，雖然32bits的OS可以定址到4GB的RAM，或是透過PAE擴展到36bits的位址線以支援到64GB [1]。但當你在32bits的XP/VISTA上安裝了4GB的RAM時，你在系統(OS)中看到的只會有不到4GB的記憶體(視硬體而定)，也就是說你的可用記憶體到不了4GB的，可能是 2.x ~ 3.x GB。</p>
<p>雖然定址空間可以到4GB（或是開啟PAE到64GB）。但別忘了！硬體的記憶體也是需要定址，OS才能存取到的！所以僅管你可以定址到4GB，你也裝了4GB的RAM，但因為要做硬體記憶體映射，所以在4GB頂端的那些定址空間中，有部分的位址會被拿去mapping到hardware的memory，也是是所謂的MMIO (Memory Mapped Input/Output) [2]。 </p>
<p>這部分的位址佔用是很恐怖的，光PCI, Chipset, DMI&#8230;等，就要用去600~1G以上不等的定址空間（如果有PCI-E的卡更傷，每張要額外佔用256MB的定址空間）。試想，如果你有1GB的定址空間被硬體映射佔用了，那不管你裝了幾GB的RAM，OS最多就只能用剩下的那3G的定址空間，因此你在OS裡當然就只看(抓)到的3G的RAM了，更別提如果是內建顯卡還要分記憶去放材質。 </p>
<p>除此之外，因為當初Intel的標準是使用4GB頂端的那些位址（當時覺得沒人會有那麼多的RAM吧 XD），因此就算你的定址空間到64GB，你也裝了超過4G的RAM。但由於定址空間已因MMIO而不連續，所以將導致OS無法使用，所以還是不能使用到4GB以上的RAM。</p>
<p>在現今記憶體越來越便宜，容量越來越大的情況下，這實在是很令人傷心的一件事。因此廠商(Intel)就研發了新的技術來解決這個問題，也就是Memory Remapping [3]。（或稱 Intel Memory Remapping，畢竟Intel的錯誤還是要由他自已來解決XD）。簡單的來說就是可以將MMIO的部分搬移到實體記憶體之上的位址空間。如此一來就不會佔用了實體記憶體的定址空間，自然也就不會有上述問題了。但可惜的是只有伺服器的晶片組或桌上型較新的晶片組/CPU才有這樣的功能。如：   <br />Intel: 955X, 975X, P965和多數的Server Chipset    <br />AMD:&#160;&#160; Athlon 64以上（AMD的記憶體控制是做在CPU內的，不是在北橋晶片）    <br />NVidia:680i SLI (for Intel CPU) </p>
<p>不過還有很重要的一點，就是作業系統本身支援度的問題。比方說像32bits的XP/Vista，雖然說在&quot;規格&quot;上支援到4GB的RAM（甚至說開啟PAE理論上可以支援到64GB的RAM），但由於作業系統本身對記憶體和Memory Remapping的支援不足，因此不管你怎麼搞，最多最多就是只有3.5GB的RAM出現在OS中（視硬體不同而定）。但像32bits的Windows 2003 Server Standard以上就可以正確的抓到4GB以上的RAM(With PAE mode)。</p>
<p>因此目前想在32bits的OS上使用4GB以上的RAM，以Windows來說只有2003 Server這個選擇，不然就只能選64bits的OS了（64bits的OS也不存在PAE的問題）。</p>
<p>除此之外，驅動程式的支援也是一環，像NVidia之前的driver是無法在4GB以上的位址運作的，因此一但被Remapping到4GB以上的位址就會有問題。（ATI就無此問題，這或許也是server onboard的vga幾乎ati的關係吧） </p>
<p>所以，要能完整的使用超過4GB的RAM，以下項目缺一不可 [4]   <br />1.要有插4GB以上的RAM（廢話）    <br />2.硬體支援Memory Remapping（通常BIOS中會有此選項，或像多數的server chipset預設就是開啟）    <br />3.64bit的作業系統（或32bit+PAE，但XP/Vista支援不足）    <br />4.驅動程式的支援 </p>
<p>BTW, 64bits的Windows作業系統是沒有AWE API的，因為它原生就支援到8TB的RAM </p>
<p>References:   <br />[1] PAE &#8211; <a href="http://en.wikipedia.org/wiki/Physical_Address_Extension">http://en.wikipedia.org/wiki/Physical_Address_Extension</a></p>
<p>[2] MMIO &#8211; <a href="http://en.wikipedia.org/wiki/Memory-mapped_IO">http://en.wikipedia.org/wiki/Memory-mapped_IO</a></p>
<p>[3] Intel&#174; Chipset 4 GB System Memory Support White Paper, February 2005 Revision 1.0, Chapter 4 &#8211; <a href="http://dlsvr01.asus.com/pub/ASUS/mb/4GB_Rev1.pdf">http://dlsvr01.asus.com/pub/ASUS/mb/4GB_Rev1.pdf</a></p>
<p>[4] The system memory that is reported in the System Information dialog box in Windows Vista is less than you expect if 4 GB of RAM is installed &#8211; <a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B929605&amp;x=12&amp;y=11">http://support.microsoft.com/?scid=kb%3Ben-us%3B929605&amp;x=12&amp;y=11</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yannicafe.info/wp/2008/07/12/66.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

