<address id="thnfp"></address>

    <address id="thnfp"><th id="thnfp"><progress id="thnfp"></progress></th></address>
    <listing id="thnfp"><nobr id="thnfp"><meter id="thnfp"></meter></nobr></listing>
    以文本方式查看主題

    -  安易免費財務軟件交流論壇  (http://m.gangyx.cn/bbs/index.asp)
    --  電腦知識交流  (http://m.gangyx.cn/bbs/list.asp?boardid=11)
    ----  Win7等32位系統無法使用4G內存的原因及解決方法-理論篇  (http://m.gangyx.cn/bbs/dispbbs.asp?boardid=11&id=40096)

    --  作者:chinafish
    --  發布時間:2013/6/27 22:06:49
    --  Win7等32位系統無法使用4G內存的原因及解決方法-理論篇
    前幾天給筆記本加到了4G內存,雖然自帶的WIN7 32位系統能認出4G,但實際只能用到2.99G,如下圖:
    圖片點擊可在新窗口打開查看 

    這不是浪費了足足1G內存?用GOOGLE搜了下,很多人說ReadyFor4GB這個軟件可以破解Win7/Vista 無法支持4G內存的限制,但也有很多人持懷疑態度,粗略想下,同樣的32位系統Win2008、Win2003 等系統不是能支持4G/4G以上的內存嗎?Win7、Vista、XP又憑什么不明不白的吃掉了我們差不多1G的內存呢?現在讓我們一起來討論這個問題,解開32位系統無法支持4G之迷,測試ReadyFor4GB這個軟件是否有效?以及其它的解決方法。
    下面我們先看看微軟對于這個問題的說法:
    http://support.microsoft.com/kb/929605/zh-tw
    ------------------------------------
    發生原因:
    這種行為是某些硬體和軟體因素的預期結果。 
    一般電腦中的多種裝置都需要進行記憶體對應存取。這就稱為記憶體對應 I/O (MMIO)。為了使 MMIO 空間可供 32 位元作業系統使用,MMIO 空間必須位於位址空間的最前面 4 GB 之內。
    例如,如果您擁有具 256 MB 內建記憶體的視訊卡,該記憶體就必須對應至位址空間的最前面 4 GB 之內。如果已經安裝了 4 GB 的系統記憶體,該位址空間的一部分就必須保留給圖形記憶體對應。圖形記憶體對應會覆寫系統記憶體的一部分。這些情況會減少可供作業系統使用之系統記憶體的總量。 
    可用系統記憶體所減少的數量,會取決於電腦中所安裝的裝置。然而,為了避免發生驅動程式相容性的潛在問題,32 位元版本 Windows Vista 將可用的記憶體總量限制到 3.12 GB。如需有關驅動程式相容性潛在問題的資訊,請參閱<其他相關資訊>一節。 
    如果電腦具有許多已安裝的裝置,可用的記憶體數量就可能減少到 3 GB 或者更少。然而,32 位元版本 Windows Vista 的可用記憶體上限一般是 3.12 GB。
    其它可能方案:
    在安裝了 4 GB 記憶體的電腦上,若要讓 Windows Vista 使用所有 4 GB 的記憶體,該電腦就必須滿足下列需求: 
    晶片組必須能支援至少 8 GB 的位址空間。具有這項功能的晶片組包括下列:
    Intel 975X
    Intel P965
    採用 Socket 775 插槽的 Intel 955X
    支援採用 socket F、socket 940、socket 939 或 socket AM2 插槽之 AMD 處理器的晶片組。這些晶片組包括 AMD 插槽和 CPU 的任意組合,只要記憶體控制器位於 CPU 中。
    CPU 必須支援 x64 指令集。AMD64 CPU 和 Intel EM64T CPU 都支援這個指令集。 
    BIOS 必須能支援記憶體重新對應的功能。記憶體重新對應功能,可讓先前由週邊元件連接 (Peripheral Component Interconnect,PCI) 設定空間覆寫的系統記憶體片段,重新對應到 4 GB 位址之上。這項功能必須在電腦上的 BIOS 設定公用程式中啟用。請參考您的電腦產品文件,以取得如何啟用這項功能的指示。許多消費者導向的電腦系統,可能不支援記憶體重新對應的功能。對於這項功能,在文件中或在 BIOS 設定公用程式中皆未使用標準術語。因此,您可能要閱讀各項可用 BIOS 設定的說明,來判斷該設定是否可啟用記憶體重新對應的功能。
    必須使用 x64 (64 位元) 版本的 Windows Vista。
    請連絡電腦廠商,來判斷您的電腦是否可滿足這些需要。 
    注意 如果安裝在電腦上的實體 RAM 等於晶片組所能支援的位址空間,可供作業系統使用的總系統記憶體,永遠會少於已安裝的實體 RAM。例如,以支援 8 GB 位址空間之 Intel 975X 晶片組的電腦為例。如果您安裝了 8 GB 的 RAM,可供作業系統使用的系統記憶體就會因 PCI 設定的需求而減少。在此案例中,PCI 設定的需求將會減少作業系統可用的記憶體大約 200 MB 至 1 GB 之間。減少的數量將取決於設定。
    -----------------------------------
    從微軟的解釋我們得知要32位系統支持4G、4G以上的內存首先要達到以下幾點要求:
    1.芯片組必須能支援至少 8 GB 的位址空間。
    2.CPU 必須支持 x64 指令集。AMD64 CPU 和 Intel EM64T CPU 都支持這個指令集。 
    3.BIOS 必須能支持打開內存重映射的功能(Memory Remapping)。

    圖片點擊可在新窗口打開查看 
    --  作者:chinafish
    --  發布時間:2013/6/27 22:07:06
    --  
    4.必須使用64位操作系統。
    (但這點令人非常懷疑,因為Win2008 32位就能支持4G、4G以上的內存,后面我們會做實驗證實。)

    圖片點擊可在新窗口打開查看 

    主板芯片對內存大小的限制,不支持4G/4G以上內存的原因以及應對方法:
    上面微軟已經說過原因了,但說得比較令人難明白。我們來看以下這篇來自互聯網的文章:
    ------------------------------------
    認識4G地址空間的局限----MMIO內存映射的問題
    首先我們還必須要先了解兩個概念
    其一是“物理內存”。大家常說的物理內存就是指安裝在主板上的內存條,其實不然,在計算機的系統中,物理內存不僅包括裝在主板上的內存條(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 nForce 550及以前的芯片組都沒有辦法繞過這個限制。具體原因有三方面:其一是芯片組沒有剩余空間分配來供操作系統來調配;其二是物理內存的編址必須是連續的,不能被割斷;其三是系統開機時必需先從4GB的頂端地址(FFFF_FFFFh)讀取BIOS數據, 這是IA32架構和4GB地址空間的局限. 
    所以建議使用這些芯片組主板的用戶不要安裝4GB的內存,這樣會有部分內存容量不能被操作系統所使用。而解決4GB內存限制的唯一辦法就是擴展地址空間。
    支持大于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地址區提供了條件,F在解決這個問題的辦法就是“內存重映射”技術——就是在IA32架構的基礎上,把BIOS(ROM)和PCI/PCI-E設備占用的MMIO地址區段重新映射到內存條頂端地址以上 (例如4GB以上)的地址空間,從而把IA32架構規定的這一段操作系統不可使用的、位于4GB下面的MMIO地址空間回收給物理內存使用,保證物理內存編址的連續性。
    BIOS必須支持“內存重映射”
    “內存重映射”技術必須通過BIOS完成。所以BIOS必須具有支持內存重映射的功能模塊,以便根據用戶安裝的內存容量來確定是否需要啟用內存重映射功能。同時,在BIOS的設置選單中也要有“Memory Re-Mapping”的設置選項,使用4GB或者4GB以上內存的用戶一定要將此項設置設為“Enable”

    圖片點擊可在新窗口打開查看 
    --  作者:chinafish
    --  發布時間:2013/6/27 22:07:43
    --  
    由此我們知道:由于iA32架構要求BIOS(ROM)芯片的地址,PCI、PCI-E存儲器地址、APCI中斷路由地址等必須占用從4GB開始以下的256M-1GB空間,這段MMIO地址區不能分配給內存條,4GB的內存條有256MB-1GB的容量不能編址而浪費。使用4GB或者以上的內存條,必須使用地址(編址)空間64GB的芯片組主板,內存重映射就是把被MMIO占用的地址移到內存條容量以上的地址空間,BIOS具有支持“內存重映射”功能的,設置項里有 Memory Remap Feature 選項,應該設置為Enable,這樣就可以解決MMIO地址區占用了內存地址的問題。
    前面我們介紹了解決4GB問題的芯片組是支持64GB地址空間的,硬件芯片組上的限制解決了,但Win7/Vista/XP 等32bit操作系統還會受限于32位架構限制,即使是采用虛擬內存的方式,最多只能尋址到4GB。針對這個問題又有什么解決方法呢?




    虛擬內存

    在早年的計算機中,地址的轉換很單純,有效地址就直接等于物理存儲器的地址,這適合同一時間只有一個進程在運作。但Windows不會只有一個Window,多進程并存是現代計算機的基本情形。后來人們決定為每個進程劃定一塊專用內存區域,這樣可以讓多個進程同時運作。但這種分段方式會讓內存在進程開開關關的過程中產生很多碎片,很多小塊內存無法被利用。由于內存空間總是相對有限的,因此應用程序也不能瘋狂的將所有東西直接塞進內存當中。同時我們也不能依賴硬盤這個緩慢的二級存儲器去充當內存,那實在太慢了。為了調和這個矛盾,操作系統都引入了虛擬內存機制。
    Windows的虛擬內存并非簡單的指位于我們硬盤上的那個pagefile.sys文件,或者是在內存裝不下的時候用于應急的“模擬內存”。在當代Windows系統中,任何一個進程都會被賦予其自己的虛擬地址空間,這是一種邏輯地址空間,并不存在實體,該虛擬地址空間可以覆蓋了一個相當大的范圍。對于一個32位進程,其可以擁有的虛擬地址空間為2^32=4GB,典型情況為2GB用戶空間,2GB系統內核空間(最大可調整為3GB用戶空間和1GB內核空間),這與安裝了多少物理內存沒有任何關系。每個進程的虛擬地址空間都會被標上各自的ID,這樣兩個進程之間的虛擬地址就不會互相干擾。雖然每一個32位進程可使用4GB的地址空間,但并不意味著每一個進程實際擁有4GB的物理地址空間或使用4GB物理內存,虛擬地址僅僅是一種邏輯地址。
    應用程序自然不能總在看不見摸不著的虛擬地址里溜達,最終還是需要實實在在的物理存儲器關聯。應用程序會去為其虛擬地址申請物理存儲空間,這個空間通常會小于應用程序的總虛擬空間。這里所說的物理存儲器并不局限于計算機內存,還包括在磁盤空間上創建的頁文件(pagefile.sys),其存儲空間大小為計算機內存和頁文件存儲容量之和(所以Windows自動管理時的pagefile.sys是很大的)。由于通常情況下磁盤存儲空間要遠大于內存的存儲空間,因此頁文件的使用對于應用程序而言確實相當于透明的增加了其所能使用的內存容量,只是速度慢了點。有了虛擬內存的存在,程序本身就不用完全裝入內存,或者完全存于硬盤,系統會將目前需要的部分讀入內存處理,暫時不需要的就放在硬盤的頁文件留作交換。不過CPU并不能直接去訪問磁盤上的信息,每次磁盤訪問都必須通過內存,所以若所需的內容在磁盤上的頁文件中,就需要先加載到內存然后訪問。
    應用程序本身并不關心自己占用的內存大小,它只要求提交物理存儲器,無論是磁盤還是內存。那么自然是盡量分配更多的高速的內存作為物理存儲器最佳,所以我們也知道內存大的機器在大量應用程序啟動時會快。當一個進程的虛擬內存提交的物理存儲器是物理內存時,我們就可以省去從磁盤的頁文件加載數據到物理內存的時間,程序的工作效率自然就會提高。盡管我們的內存超出了32bit系統的地址結構范圍,但我們只要將4GB地址以上的物理內存為虛擬內存所用就不會浪費內存了。


    物理地址擴展(Physical Address Extension,PAE)


    物理地址擴展(PAE)是早在Pentium Pro時代就有的東東,它可以提高IA32處理器應對4GB以上內存的能力。當啟用 PAE之后,Windows操作系統將從兩級線性地址轉換變為三層地址轉換,額外的一層轉換用于訪問超過4GB地址的物理內存,可以將超出4GB地址的物理內存映射為應用程序進程的虛擬地址空間以提升虛擬內存性能。地址窗口擴展(AWE)更是可以將未分頁的物理內存轉換到進程的虛擬地址。通過PAE,我們可以完整的利用到被回收至4GB以上地址的那部分內存。
    PAE內存分頁和非PAE內存分頁模式的主要區別是PAE模式要求的額外分頁級別(3級而非2級)。PAE模式要求多于4GB的RAM。硬件驅動程序在PAE模式下應該始終接收64位地址,而一些舊驅動程序或硬件不能解釋這種地址。就是因為一些舊硬件不支持 PAE X86,因此在PAE功能默認是不開啟的,后面我會介紹Win7、Win2008如何開啟PAE模式,XP、2003的開啟方法網上遍地都是,我就略過了。


    那么是不是開啟了PAE模式,32位系統就能完美使用4G/4G以上的內存呢?



    --  作者:注冊會計師
    --  發布時間:2013/10/17 9:48:17
    --  
    這大一篇,其實,其實并不是這些原因
    --  作者:msmds2008
    --  發布時間:2014/5/28 15:10:10
    --  
    直接安裝64位系統就好了
    Channel