我搜索过这些话题,但不确定我是否正确地理解了它们之间的关系。我总结了以下几点,请更正/补充。
另外,我有两个问题与记忆有关。

发布于 2012-03-21 16:37:07
有许多不同的处理器(ARM,MIPS,x86,…)。。
我可以只讨论x86(32位)/x86-64(64位)。
位计数主要指寄存器大小。对于x86,虚拟地址空间被限制为32位(4GiB)。这意味着32位应用程序(假设它运行在32位CPU上)只能同时看到4 4GiB。
对于x86-64,所有虚拟地址都是64位大小的.但是CPU可以自由地不支持所有64位,因为它要求所有不受支持的位都具有与最重要的支持位相同的值。操作系统必须查询支持的位数。(我的核心i5在这里支持48位)
物理地址空间,即实际可由CPU处理的内存量,首先是用于x86的32位大小。但是由于Pentium 1,CPU支持一个并行地址扩展(PAE),允许最多36位(64 Bit)的RAM。(操作系统必须启用扩展)
目前,x86-64将物理地址空间限制为52位(4 4PiB)。这里再一次CPU免费支持更少的位。(我的核心i5在这里支持36位)
由于x86和x86-64都使用了含义略有不同的相同操作码,所以32位应用程序不能只在64位CPU上运行(在64位模式/长模式下)。
但是x86-64有一种所谓的兼容性模式(长模式的子模式),它允许执行32位应用程序。(操作系统必须切换模式。)
处理器不选择内存映射。这是主机和BIOS的责任,可以部分地由操作系统进行配置。mainbord & BIOS制造商之所以要将所有内容保存在地址空间的较低的4GiB中,是因为它与32位OSes兼容。(由于与旧的16位DOS应用程序的兼容性原因,甚至x86-64 CPU在默认情况下每2 MiB就禁用物理地址空间的访问)
如前所述,x86-64按规范将物理地址空间限制为52位。更远的是地址空间受到CPU实现的限制,更远的是受主板实现的限制。(所做的一切都是为了减少执行费用)。因此,没有办法解决2⁶⁴的内存。
https://stackoverflow.com/questions/9808014
复制相似问题