我们有8位、16位、32位和64位的硬件架构和操作系统。但没有,比如说,42位或69位。
为什么呢?是因为2^n位更好的选择,还是只是为了与现有系统兼容?(显然,64位寄存器可以容纳两个32位指针,或者32位数据单元可以容纳4个字节,这显然很方便。)
我们有8位、16位、32位和64位的硬件架构和操作系统。但没有,比如说,42位或69位。
为什么呢?是因为2^n位更好的选择,还是只是为了与现有系统兼容?(显然,64位寄存器可以容纳两个32位指针,或者32位数据单元可以容纳4个字节,这显然很方便。)
这在很大程度上是一种传统惯例,甚至并非总是正确的。例如,处理器中浮点数单元(即使是现代处理器)拥有80位寄存器,并没有什么能迫使我们使用8位字节而不是13位字节。
有时候也会有数学原因。例如,如果你决定使用一个N位字节来进行整数乘法,那么你需要正好2N位来存储结果。然后,您还想要对这些2N位整数进行加/减/乘运算,现在您需要2N位通用寄存器来存储加/减结果和4N位寄存器来存储乘结果。
http://en.wikipedia.org/wiki/Word_%28computer_architecture%29#Word_size_choice
不同精度的数据值需要使用不同数量的内存来存储。常用的大小通常是地址解析单元(字节或字)的2的整数次幂倍。将数组中的项的索引转换为该项的地址,只需要执行一次移位操作,而不需要进行乘法运算。在某些情况下,这种关系还可以避免使用除法运算。因此,大多数现代计算机设计的字长(以及其他操作数的大小)都是字节大小的2的整数次幂倍。
部分原因是地址相关的。拥有N位地址最多允许你寻址2^N位内存,硬件设计师更喜欢充分利用这一能力。所以,你可以使用3位来寻址8位总线等等...
古老的 PDP-10 是36位的。
你的内存系统需要以字节为单位进行,这使得你的缓存也需要以字节为单位进行,从而使整个系统都需要以字节为单位进行。
作为一名硬件设计师,通常希望将CPU设计为某种字节边界,即8的倍数。否则,您必须向49位系统添加大量尴尬的电路才能利用mod-8位,否则您会忽略额外的位,除非您需要额外的位进行指令,但在16位或更宽的系统上从不这样。
Byte与字符编码有关,主要是西方世界的编码,因此为8位。 Word与编码无关,它与地址宽度有关,因此它的范围从4到80等等。
虽然可能不是唯一的原因,但我听说一个字节有8位的惯例是因为IBM在IBM System/360架构中这样设置的。