我最近从在线资源开始学习计算机体系结构课程。我从我收到的一本书中读到,x86处理器有32条地址线,可以在数据总线上一次读取数据4个字节。现在我知道32个地址线限制了可寻址内存到40亿个唯一地址。我无法解决的问题是,如果CPU能够在每个周期读取4个字节的数据,那么这些40亿个唯一地址中的每一个,为什么x86系统上的RAM限制为4 GB。它应该不是16 GB(4 GB 4)?有人可以为我清除这个吗?另外,当我谈到32位或64位微处理器时,32/64是否指的是CPU上的地址线数或数据线数? (对于我的第一个问题,我应该提一下,我假设一个没有物理地址扩展的系统。)
答案 0 :(得分:1)
Real Mode
的特殊模式运行)。 8086具有16位寄存器和16位总线到存储器和I / O,它是byte addressable,意味着程序使用的地址是单个字节的地址。 8086可以从内存加载1或2个字节(称为单词)。随着时间的推移,较新的x86处理器向地址线添加了更多位,并添加了虚拟内存,并添加了更大的words
。因此,32位数据项称为double word
,64位数据项称为quad word
,然后SSE出现,我们有128位octaword or double quadword
,{{ 3}}。较新的x86处理器可以访问任何这些大小的数据,实际上最新的here's a table of data sizes具有256位向量寄存器。从程序的角度来看,寻址存储器仍然是通过在最低地址给出字节的地址来完成的。
您可以阅读有关64位计算AVX instructions的更多信息。这是一个很好的总结:
如果不进一步限定,64位计算机体系结构通常具有64位宽的整数和寻址寄存器,允许直接支持64位数据类型和地址。但是,CPU可能具有与寄存器不同大小的外部数据总线或地址总线,甚至更大(例如,32位Pentium具有64位数据总线)。