2017-10-12 243 views
1

如果我们有一个32位计算机体系结构,它意味着我们可以解决2^322^64字节尺寸的存储器位置?上32位和64位架构寻址

我们是否总是将寻址与最小的存储单元相关联字节

回答

4

不,没有。 (但在“正常”的CPU上,有点是)。

x86-64是64位体系结构,带有64位整数寄存器,但是它only has 48-bit virtual address space(如果需要,将来可扩展到64位)。指针是64位整数,但前16位必须是低48位的符号扩展。最初的实现(AMD K8)仅支持40位物理地址。该page-table format allows up to 52-bit physical addresses, but current implementations only support 48-bit (256TiB of RAM)。 32位x86具有分段和分页功能,所以它可以从cs,ss,ds,es,fs和gs中的每一个寻址4GiB。 (这是非常不方便的,所以所有主要的操作系统都只使用一个4GiB内存空间)。

大多数8位CPU可以使用一对8位寄存器作为16位指针。 AVR(具有32个8位寄存器的8位RISC微控制器)仍然如此。

术语32位或64位体系结构相当模糊。这是否意味着寄存器大小,数据总线宽度,指针宽度?人们(有时包括营销部门)随心所欲地打电话给他们。 Skylake-avx512在执行单元和L1D缓存之间有一个512位路径(用于矢量加载/存储)。那么它是一个512位SIMD架构吗?是的,我想是的。这也是一个64位体系结构。 AMD Ryzen将256b AVX指令拆分为两个128b半部分。它是一个256位SIMD架构吗?当然,为什么不呢。 体系结构上,寄存器宽度为256b。它是否也是128b SIMD架构?是。


大多数现代架构字节寻址,但有些(如可能的DSP?)只是字寻址。每个地址可以是整个机器字(例如,在一些奇怪的CPU上是36位)。在这种情况下,32位地址会为您提供每字4GiB *字节的地址空间,但您必须加载+ shift &掩码才能将其用作许多单独的字节。