【问题标题】:What does it mean by word size in computer?计算机中的字长是什么意思?
【发布时间】:2013-11-18 05:20:33
【问题描述】:

我试图了解 "word" 的含义,并且我查看了 wiki,但定义很模糊。所以我的问题是什么是“word size”?是数据总线、地址总线的长度吗?

【问题讨论】:

标签: word computer-architecture


【解决方案1】:

“字长”是指计算机 CPU 一次处理的位数(现在通常是 32 位或 64 位)。数据总线大小、指令大小、地址大小通常是字大小的倍数。

为了混淆问题,为了向后兼容,Microsoft Windows API 将 WORD 定义为 16 位,DWORD 定义为 32 位,QWORD 定义为 64 位,与处理器无关。

【讨论】:

  • WORD=16 位是英特尔术语。现代 x86 CPU 从 8086 演变而来,其中寄存器宽度和总线宽度实际上是 16 位。 386 添加了 32 位模式,但没有删除 16 位模式,因此英特尔通过坚持所有未来 x86 的 8086 定义来保持理智。例如AVX512BW adds SIMD instructions that operate on 8-bit (B) and 16-bit (W) elements.。这是术语的一个小怪癖,而不是一个令人头疼的问题(例如,如果相同的 asm 指令意味着不同的东西,具体取决于您所处的模式。)
  • 知道为什么它被称为“单词”而不是“字母”吗?
【解决方案2】:

一个答案是——不像以前那么多。回到过去,计算机只能加载/存储完整的内存“字”,每个内存为 16/24/32/36/48 位(取决于特定的机器)。必须根据目标机器的字长仔细设计程序。

但是任何更多的计算机都可以访问单个字节或可以访问数十个字节长的数据字符串,而且操作相对无缝。比技术字长更重要的是内存总线宽度,它决定了在一个内存“周期”内 CPU 和内存之间可以传输多少字节。

所以“字长”有点没有意义,而且(正如另一个答案所暗示的)像微软这样的公司通常会以任意方式定义它,与任何事物都没有真正的关系。

【讨论】:

  • 我认为,这些天它更多地反映了寄存器大小,但即使是 SIMD 寄存器也有点模糊......
  • @twalberg - 是的,你有半、单、双寄存器,还有浮点寄存器。那是在您接近 SIMD 之前。
【解决方案3】:

考虑以下几点:

CPU(处理器)、RAM(主内存)、I/O 设备(鼠标、键盘、打印机)、总线(数据传输组件)。

您希望这些计算机部件如何通信和传输数据? 您肯定需要固定大小的位才能被视为单个数据单元。

为此,计算机科学家同意将此单元标准化为 32 位或 64 位(取决于制造商的选择)。

他们给这个单位起了一个名字,并称之为一个词。

所以一个字只不过是一个数据单元(一组位(零和一的信号电荷)),它从一个计算机组件移动到另一个组件。

例如,总线是用 32 位(4 字节)构建的,有些是用 64 位(8 字节)构建的。同样,CPU(硬件)和操作系统(软件)都是用 32 位或 64 位构建的。

它恰好是名为 Word 的标准单元,大小为 32 位或 64 位。

Ps:Word 是在计算机内部移动的众多数据大小单位之一,不同的计算机组件使用不同的大小来传输数据(表示 0 和 1 的信号电荷),例如 RAM 可以使用 64 位的大小,而总线可以使用 32 位。硬件设计人员在设计组件架构时会考虑到这些大小差异,要么仅在 CPU 上实现 32 位字大小,而在 RAM 上实现 64 位字大小,或者在所有组件上实现相同大小……等等。字长曾经是 8 位(1 字节),但现在大多数计算机组件(如 CPU 或 RAM,或总线等)上的注释单元大小为 64 位。

【讨论】:

  • I/O 设备(如 USB 主机控制器)不需要具有与 CPU 字长相同的 I/O 寄存器宽度。一个字节是基本单位;字长甚至不是 64 位架构上的寄存器宽度。例如,在 64 位 MIPS 上,dadd is (double-word add) 是 64 位加法的指令。或者在现代 x86 CPU 中,数据在比整数寄存器宽得多的总线上内部移动,例如Haswell/Skylake 中 L1d 和 L2 之间的 64 字节(完整缓存行)路径:How can cache be that fast?
  • 几乎所有现代 CPU 都原生支持单字节存储(1990 年代初期的 DEC Alpha 是最新的主流例外)参见 Can modern x86 hardware not store a single byte to memory?。因此,即使在 CPU 和内存之间,对于未缓存的存储,传输大小也并非严格固定在字大小或总线宽度上。
  • 我想你误解了我的回答。 OP 询问计算机中单词的含义,我用简单的英语解释了它是什么以及它是如何暗示的,但我从未说过一个单词在所有组件中实现的大小相同。当然,某些组件可能使用与其他组件不同的尺寸,具体取决于它们的设计方式。但是感谢您提供有关不同组件使用的单位数据大小的信息性解释。我添加了一个“Ps”注释来阐述我的观点并向读者说明。
  • 我仍然不认为这是一个很好的解释。它使“单词大小”听起来比实际重要得多。 PS 之外的所有内容都意味着一个单词是不同组件之间数据的基本单位,但这就是字节。 (除了只有字可寻址存储器的计算机。)字大小在现代计算中是一个相当模糊的术语,但通常与 CPU 的寄存器宽度有关。知道计算机的字长并不能像您希望的那样告诉您;你必须知道细节才能知道它对特定架构意味着什么!
  • 您可能已经知道其中的一些,并且为初学者简化了。但是一个过于简单的答案会给人一种错误的印象,即单词是最重要的,这会导致像uint8_t 这样的错误想法,对于所有的使用来说本质上是缓慢的。最好说这个词有点含糊。
【解决方案4】:

字大小表示没有。微处理器作为一个单元处理的数据位。

【讨论】:

    【解决方案5】:

    是一组位,用作微处理器处理的单个数据单元。但是,它可以是任何设定值,常见的值包括:16、18、24、32、36、40、48和64。

    类比:
    在英语中,单词是语音或写作中一个独特的、有意义的元素,与其他元素一起构成一个句子。

    【讨论】:

    • 不,一个字节是您可以单独加载或存储的最小数据单位。大多数计算机都有字节可寻址内存并支持字节加载/存储以及字加载/存储。有关所有 x86 和几乎所有现代 CPU 如何本机支持字节存储的更多详细信息,请参阅Can modern x86 hardware not store a single byte to memory?,而不是通过包含对齐字的读-修改-写来模拟它们。主要的例外是 DSP,它可能只支持字操作。
    • 在某些 CPU 上,单词是您可以使用的 最大 数据单元,但不是全部。这不是一个定义明确的术语。
    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2012-08-11
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    相关资源
    最近更新 更多