用于可扩展RAM的寻址方案?

时间:2012-09-11 05:49:20

标签: processor computer-architecture

大家好,我想知道操作系统用于扩展RAM的称为寻址方案的东西。让我们考虑一个例子来说明这一点。

“如果我们的计算机具有32位架构,那么这意味着我们有一个32位长的计算机地址,相当于2 ^ 32可寻址内存位置,大约4GB数据。”

但是如果我们添加另外4GB的主内存,现在是8GB的RAM,那么计算机如何寻址额外的主内存位置,因为额外的数量超出了32位地址的范围,即2 ^ 32。 / p>

任何人都可以对这个问题有所了解。

1 个答案:

答案 0 :(得分:0)

基本上,只有32位才能解决8GB问题。在使用32位的任何给定时间点,您只能从4G内存位置中进行选择。

一种流行的解决方法是使用page tables中大于32位的物理地址。这允许操作系统定义程序能够访问的8GB的哪个子集。但是,此子集永远不会超过4GB。 x86 PAE就是一个例子,但others也是如此。

通过这种解决方法,操作系统本身只能通过更改自己的页面表来访问整个8GB。例如。要访问内存位置,首先必须通过更改页表将内存位置映射到自己的地址空间,然后才能开始访问内存位置。当然这非常麻烦(至少可以说)。如果在不考虑这种类型的内存扩展的情况下编写操作系统的某些部分,它也会导致问题,设备驱动程序就是典型的例子。

问题不是新问题。像Commodores C64这样的8位计算机使用bank switching来访问超过64KB的16位地址。早期的PC使用expanded memory来处理640KB的限制。 Right Thing(TM)当然是在你不得不诉诸丑陋的解决方案之前切换到更大的地址。