我正在阅读http://duartes.org/gustavo/blog/post/motherboard-chipsets-memory-map,具体而言,我阅读了以下部分:
在主板上,CPU通往世界的大门是前端总线,把它连接到北桥。每当CPU需要读取或写入内存时,它都会通过这条总线进行读写。它使用一些引脚来传输它想要写入或读取的物理内存地址,而另一些引脚则发送要写入的值或接收正在读取的值。英特尔核心2 QX6600有33个引脚来传输物理内存地址(因此有2^33个内存位置的选择)和64个引脚来发送或接收数据(因此数据以64位数据路径或8字节块的方式传输)。这允许CPU物理地寻址64G内存(2^33个位置*8个字节),尽管大多数芯片组最多只能处理8G内存。
现在,上面的数学说明,由于有33个寻址引脚,2^33 *8字节= 64 GB。很好,但现在我有点糊涂了。假设我安装了一个64位操作系统,我将能够处理64 GB总数或2^64 GB*8=2^64 GB(这要多得多)?另外,假设我在32位cpu上使用相同的cpu,我仍然只能寻址4Gb (2^32位=4GB*8= 4GB)?
我觉得物理和“操作系统允许的”让我很困惑。
谢谢!
发布于 2010-07-07 16:53:12
你把很多事情搞混了:
此外,还请注意其他几点:
发布于 2010-07-07 16:28:53
关于物理地址线,有几件事需要考虑:
发布于 2010-07-07 16:27:03
64位操作系统和32位操作系统之间的主要区别是,人们仅仅认为原始数据类型(例如,一个单词)更宽。如果CPU只能物理地定位2^33个位置,这不会因为您使用64位操作系统而改变。另一方面,使用32位操作系统通常会限制您的可寻址内存,因为32位指针不能表示CPU用来寻址内存的所有可能值(在您的示例中,32位指针是有点短)。
长话短说,可寻址内存受到指针宽度( OS限制)和数据地址总线宽度(物理限制)的限制。有些体系结构通过使用两个指针来绕过OS指针宽度,其中一个指针用于寻址“内存库”,另一个指针位于银行内的本地地址。不过,这些计划最近已经风行一时。
此外,现代OSes通常使用虚拟内存子系统,将逻辑地址转换为相应的物理地址。有了缓存,内存的实际物理位置可以在一个(或多个)中!沿内存传递性的组件(例如处理器缓存、主内存、硬盘等)不知道我怎么会完全忘记提到VM,但是它肯定会帮助您了解它。
https://stackoverflow.com/questions/3196684
复制相似问题