已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
上个月关门了。
Improve this question
This问题已经过时,因此这不是重复问题。
我们通常指的是64位和32位计算机。传统上,它直接对应于寄存器大小(根据我的理解),并且是在一个周期内能够流过简单的非流水线处理器的数据量。
然而,随着128位和512位寄存器的普及,字长又意味着什么呢?像movq
这样的指令在x86-64中移动64位,但是如果存在更大的寄存器,为什么我们不称CPU为128位?
另外,理解指针,在像C这样的语言中,可能会受到影响,但我看不出字大小和指针大小之间的相关性,因为指针应该取决于地址空间的大小。
1条答案
按热度按时间rn0zuynd1#
其含义根据处理器的不同而变化,我在下面举了几个例子。我认为,由于向前兼容性的概念,一旦一个WORD被赋予了一个大小(比如16位),它就会在整个系列的处理器中保持这种状态。请注意,有些处理器开始时是32位,但仍然有16位的WORD(参见68000)。所以,或多或少,你必须阅读处理器的文档,以找出一个字的大小,因此,没有确切的定义,将适用于所有处理器。
正如Peter Cordes所指出的,这个词也用于其他地方,如C/C++,在那里它们可以真正意味着任何东西。在这个
strlen()
post中,评论说:在这种情况下,我们可以说术语“长字”指的是32或64位的架构通用寄存器大小。
Intel/AMD处理器
对于Intel family of CPUs,WORD是16位,尽管这些CPU现在支持高达512位的寄存器(对于AVX 512,请参阅ZMM寄存器)。
这是8086的情况,因为当时寄存器是16位的。含义没有改变(参见 *4.1基本数据类型 *)。
我认为许多旧的处理器使用WORD来表示16位。如果你使用的是Intel / AMD或类似的处理器,肯定的是,一个WORD是16位的,我不认为它会改变。
68000处理器
这个过程也使用16位的WORD,尽管它也是一个32位处理器(并且没有16位版本)。
ARM处理器
下面是ARM处理器的数据类型列表,它是不同的。一个字是32位。然而,较新的处理器是64位的。
同样,我认为这是因为他们不想改变用户的术语,如果仅仅因为处理器变得更强大而改变,用户可能会感到非常困惑。
R5000(Risc)
这些较新的MIPS处理器也是64位处理器。一个字只有32位。同样,可能是为了保持与旧的32位版本的处理器的兼容性。
CUDA
CUDA处理器使用32位的WORD。我没有找到数据类型的定义,但找到了这一节,他们引用了半个字作为16位。它们也有一个字节(8位)。同样,这个CPU支持64位,并且已经有一段时间了。
安装
我在我的文档中找不到一个清晰的类型列表,但是有一个清晰的参考,它将半字定义为16位。根据注解和表5-2,定义如下:
CRAY-1
CRAY计算机从第一天起就使用64位CPU。因此,它们的字是64位。
调整部分