Thursday, May 25, 2017

Windows 7/8/10各版本支持最大内存容量

Windows 7 中的物理内存限制

Windows 7有6个主要版本,分别是Windows 7 Starter(简易版),Windows 7 Home Basic(家庭普通版),Windows 7 Home Premium(家庭高级版),Windows 7 Professional(专业版),Windows 7 Enterprise(企业版),Windows 7 Ultimate(旗舰版)。

通过拨打微软中国客服电话(免费电话800-820-3800 付费电话400-820-3800)咨询微软客服人员和在微软官网查询,我们得知:

32位Windows 7的除了简易版仅支持2GB内存外,其他版本均支持4GB内存,但32位的Windows 7实际可利用的最大内存只有3.25GB左右。

64位的Windows 7家庭普通版能支持8GB内存,家庭高级版能支持16GB内存,而64位的Windows 7专业版、企业版和旗舰版最高可支持192GB内存。

下表规定了不同 Windows 7 版本对物理内存的限制。

Version Limit on X86 Limit on X64
Windows 7 Ultimate 4 GB 192 GB
Windows 7 Enterprise 4 GB 192 GB
Windows 7 Professional 4 GB 192 GB
Windows 7 Home Premium 4 GB 16 GB
Windows 7 Home Basic 4 GB 8 GB
Windows 7 Starter 2 GB N/A

Windows 8 中的物理内存限制

Windows 8有3个主要版本,分别是Windows 8(标准版),Windows 8 Professional(专业版),Windows 8 Enterprise(企业版)。

32位Windows 8的所有版本均支持4GB内存,但32位的Windows 8实际可利用的最大内存只有3.25GB左右。

64位的Windows 8标准版能支持128GB内存,64位的Windows 7专业版和企业版可支持512GB内存。

下表规定了不同 Windows 8 版本对物理内存的限制。

Version Limit on X86 Limit on X64
Windows 8 Enterprise 4 GB 512 GB
Windows 8 Professional 4 GB 512 GB
Windows 8 4 GB 128 GB

Windows 10 中的物理内存限制

Windows 10有4个主要版本,分别是Windows 10 Home(家庭版),Windows 10 Pro(专业版),Windows 10 Education(教育版),Windows 10 Enterprise(企业版)。

32位Windows 10的所有版本均支持4GB内存,但32位的Windows 10实际可利用的最大内存只有3.25GB左右。

64位的Windows 10家庭版能支持128GB内存,64位的Windows 10专业版、教育版和企业版可支持2TB内存。

下表规定了不同 Windows 10 版本对物理内存的限制。

Version Limit on X86 Limit on X64
Windows 10 Enterprise 4 GB 2TB
Windows 10 Education 4 GB 2TB
Windows 10 Pro 4 GB 2TB
Windows 10 Home 4 GB 128GB

为什么Windows 7/8/10的32位版不能支持4GB以上内存呢?

32位系统使用32位地址线的最大寻址空间为2的32次方bytes,计算后即4294967296 Bytes,也就是我们常说的4096MB,32位地址线的寻址空间封顶即为4GB。但是,虽然系统能够识别4096MB,我们还是不能完全使用它,这是因为还有内存映像输入/输出(Memory-Mapped Input Output)作怪,我们的系统中除了CPU和内存占据寻址空间外,还有显卡也需占用寻址空间,这就是为什么32位系统不能全部调用内存的原因,32位Windows 7/8系统支持的最大内存事实上只有3.25GB左右。

这里要纠正一个常识错误:32位系统不能使用大于4G的内存。早在16位系统上,系统可使用的内存就远远大于64KB(2的16次方bytes)了,这是因为采用了内存分段和20位地址线,最大寻址空间为2的20次方bytes,即1MB。那么在32位系统上,32位CPU使用36位地址线的最大寻址空间为2的36次方bytes,也就是64GB。32位Linux系统早就直接支持4G以上的内存。Windows系统因为微软的人为限制,不允许32位系统使用大于4G的内存。

如果启用PAE(Physical Address Extension),32位Windows就可以使用超过4GB的内存,比如Windows Server 2003/2008 Enterprise/Datacenter X86(32bit)可以支持最大64GB内存(16 GB with 4GT)。所以在当前x86架构中,通过ReadyFor4G直接修改Windows内核(使用36位地址线),32位Windows最多可以使用64GB的内存。不过,这个方法也有很多限制,32位Windows的每个进程最大可用内存被限制在4GB之内,一些不规范的驱动程序不能支持大于4G的内存,会导致系统崩溃。

64位系统使用64位地址线的最大寻址空间为2的64次方bytes,计算后其可寻址空间达到了惊人的18446744073709551616 Bytes,即16384PB(PebiByte)=16777216TB(TebiByte),但是,很多64位CPU使用40位地址线,最大寻址空间仅为1TB,加之别的种种原因,目前Windows 7 64位版最大仅能使用192GB内存,Windows 8 64位版最大仅能使用512GB内存。

微软官方文档:《Windows 7 的物理内存限制》《Memory Limits for Windows Releases》

CPU的位数和地址线

所谓多少位CPU,最准确的定义是指CPU内部通用寄存器的位宽。

比如8088,16位通用寄存器,8位数据线,20位地址线,它是16位CPU;

8086,16位通用寄存器,16位数据线,20位地址线,它是16位CPU;

又比如Pentium Pro或者Pentium II,32位通用寄存器,64位浮点寄存器,64位数据线,36位地址线,它是32位CPU。

用比较少位数的寄存器确定较多位地址的时候会多一重转换,稍微麻烦一点,也慢一点。

8086用16位寻址20位叫做分段寻址,要多一次移位加的操作;Pentium Pro/II/III/4 等32位寻址36位叫做PAE36寻址,更慢。

使用PAE40技术的Intel x86-64 CPU是40位地址线,使用PAE48或PAE52技术的AMD x86-64 CPU是48位或52位地址线。目前没有64位地址线的CPU,原因很简单,就是现在还用不着这么多地址线(而且过大的虚拟地址空间需要更多级的分页,这会导致硬件更复杂,寻址速度更慢)。

6 comments

  1. 应该是16384PB(PebiByte)。

  2. 2^64计算之后可不止16384GB吧?

  3. 通过各种破解方式使32位win系统支持4GB以上内存的方式会造成系统不稳定,个人不推荐。

  4. 据说有人在win7上成功运行支持pae的windows内核

  5. 其实32位x86芯片完全可以通过PAE技术支持大内存,windows2003,就可以支持32G内存,linux也一样,因为x86硬件本身就支持的,但m$因为各种原因不允许工作站版的OS支持PAE,所以就造成了现在的现实。

  6. 所以正要配的机器,使用单根4G内存,直接上win7 64位,反正基本程序游戏都能运行

Leave a Reply

Your email address will not be published. Required fields are marked *