设为首页
收藏本站
开启辅助访问
切换到窄版
用户名
Email
记 住
找回密码
密码
立即注册
微信扫一扫,快速登录
快捷导航
兰溪在线
Portal
兰溪家园
BBS
杂谈
热点
兰江
民生
答疑
市场
男婚女嫁
同城
文娱
生活
招聘求职
房屋租售
教育
旅游
饮食
我形我塑
情感随笔
妈咪宝贝
消费
商家展厅
视频
小说
游戏
摄影沙龙
家有爱宠
便民
养生
装修
数码
钓鱼
搜索
搜索
热搜:
活动
交友
discuz
本版
文章
帖子
用户
兰溪在线|lanxi.online|兰溪新闻|兰溪社区|兰溪论坛|兰溪信息|兰溪网|兰溪村
»
兰溪家园
›
兰溪在线--俱乐部联盟
›
网吧网游
›
4GB内存比实际少的问题解答
社区广播台
返回列表
查看:
372
|
回复:
0
4GB内存比实际少的问题解答
[复制链接]
钱塘在线
钱塘在线
当前离线
积分
1526
508
主题
508
帖子
1526
积分
金牌会员
金牌会员, 积分 1526, 距离下一级还需 1474 积分
金牌会员, 积分 1526, 距离下一级还需 1474 积分
积分
1526
发消息
发表于 2019-4-13 10:40:39
|
显示全部楼层
|
阅读模式
首先我们还必须要先了解两个概念:
其一是 物理内存 。大家常说的物理内存就是指安装在主板上的内存条,其实不然,在计算机的系统中,物理内存不仅包括装在主板上的内存条(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系列。
表2:支持4GB以上内存的芯片组
注:AMD的64位Socket AM2 CPU把内存控制器放到CPU中,提供40bit的物理地址总线,地址空间可达到1000GB。具体支持的地址空间和内存量取决于芯片组及的总线设计。
从上面的芯片组参数来看,地址总线从32位提升到36位,地址空间达到64GB,支持安装8GB的物理内存。但由于IA32架构的规则是开机时必须从4GB的FFFF_FFFFh地址读取BIOS信息,尽管芯片组支持的地址空间变大了,且最大支持的物理内存容量也达到了8GB(或以上),但从本质上来说仍然不能解决MMIO地址占用4GB内存编址的问题。这要怎么办呢?
36位地址总线最大可以支持64GB的地址空间,这就为移动MMIO地址区提供了条件。现在解决这个问题的办法就是 内存重映射 技术 就是在IA32架构的基础上,把BIOS(ROM)和PCI/PCI-E设备占用的MMIO地址区段重新映射到内存条顶端地址以上 (例如4GB以上)的地址空间,从而把IA32架构规定的这一段操作系统不可使用的、位于4GB下面的MMIO地址空间回收给物理内存使用,保证物理内存编址的连续性。具体的映射方式如下图所示。
三、BIOS必须支持 内存重映射
内存重映射 技术必须通过BIOS完成。所以BIOS必须具有支持内存重映射的功能模块,以便根据用户安装的内存容量来确定是否需要启用内存重映射功能。同时,在BIOS的设置选单中也要有 Memory Re-Mapping 的设置选项,使用4GB或者4GB以上内存的用户一定要将此项设置设为 Enable ,如下图所示:
四、解决4GB内存问题还需要操作系统支持
我们常使用的桌面操作系统是32位的,支持4GB的地址空间。前面我们介绍了解决4GB问题的芯片组是支持64GB地址空间的,在这样的芯片组上安装32位的操作系统,就只能使用4GB的地址空间,因此安装4GB内存不能使用仅支持4GB地址空间的32位的操作系统。应该使用支持大于4GB地址空间的32位操作系统或64位的操作系统。
五、小结
1、由于iA32架构要求BIOS(ROM)芯片的地址, PCI、PCI-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位操作系统(表3)。
6、所有地址空间为4GB的芯片组(Intel945和nForce550之前的),和32位操作系统均不能利用 内存重映射 技术解决4GB内存问题。
回复
使用道具
举报
返回列表
发表回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
© 2001-2013
兰溪在线
(http://www.lanxi.online) 版权所有 All Rights Reserved.
风格购买及设计联系:13199855600 QQ:119331234 Designed By
优源码
Powered by
Discuz!
X3.4
技术支持:
源码论坛
快速回复
返回顶部
返回列表