为什么位数总是(?)二的幂?(Why is number of bits always(?) a p

2019-08-31 10:30发布

我们有8位,16位,32位和64位的硬件体系结构和操作系统。 但不是,说,42位或69位的。

为什么? 它是一个根本的转变,使得2 ^ n位是更好的选择,或者是只是与现有系统的兼容性? (这显然方便的是一个64位寄存器,可容纳两个32位指针,或32位的数据单元可容纳4个字节)。

Answer 1:

这主要是传统的问题。 它甚至不是总是如此。 例如,在处理器浮点单元(甚至当代的)具有80位的寄存器。 并没有什么,这将迫使我们有8位字节而不是13位字节。

有时,这种具有数学推理。 例如,如果你决定要一个N位字节和想要做的整数乘法正是你需要2N位来存储结果。 然后,你也想加/减/乘那些2N位整数,现在你需要2N位通用寄存器,用于存储加法/减法的结果和4N位寄存器,用于存储相乘的结果。



Answer 2:

http://en.wikipedia.org/wiki/Word_%28computer_architecture%29#Word_size_choice

不同数量的存储器被用于将数据值存储与不同的精确度。 常用的尺寸通常是2的多个地址解析(字节或字)的单元中的功率。 在阵列入项的地址转换的项的索引,然后只需要移位操作而不是相乘。 在某些情况下,这种关系也可避免使用除法运算。 其结果是,最现代化的计算机设计具有字长(和其他的操作数大小)是一个字节大小的2倍的功率。



Answer 3:

部分地,这是解决的问题。 具有地址的N位允许你最多解决内存2 ^ N位,硬件设计师喜欢运用最这种能力的。 所以,你可以使用3位地址访问8位总线等..



Answer 4:

古老的PDP-10为36位。



Answer 5:

许多(大多数?)早微处理器预CPU具有每字是不是2的幂位的某一数量。

特别是,西摩·克雷和他的团队与非幂的两个字尺寸和地址尺寸许多极具影响力的机器 - 12位,48位,60位,等等。

令人惊讶大量的早期计算机有36位字,完全是由于这样的事实,人类有10个手指。 维基百科“36位”一文,对to文章在许多其他重要历史意义的,但已经不再流行位大小10个手指和36位,和链接之间的关系更多的细节,他们大多不是2的力量。

我推测,

(a)中的8位可寻址存储器走红,因为它是用于存储7位ASCII 4位BCD,没有任一别扭填料或浪费每个字符多个位略微更方便; 并没有其他的内存宽度有任何很大的优势。

(b)由于斯蒂芬C.钢指出,这微弱的优势乘以规模和市场力量的经济体 - 使用更多的8位宽存储器等规模经济使他们稍微便宜一些,从而导致更加8位宽存储器在新的设计等使用

(c)以理论更宽的总线宽度由CPU更快,但把整个CPU在单个芯片上制成它大大便宜,可能比任何总线宽度的任何先前的多部分CPU系统稍快。 一开始有勉强够晶体管用于4位的CPU,则8位CPU。 后来,有仅够晶体管的16位CPU,一个巨大的大张旗鼓和“16位”的营销活动。 对周围的时候人们所期望的24位CPU ...

(d)的RISC革命给了。 前两个RISC芯片为32位,无论出于何种原因,人们已经习惯于认为“更多位更好”,所以每一个制造商对32位见风使舵。 此外,IEEE 754-1985用的32位和64位浮点数标准化。 有一些24位CPU,但大多数人从来没有听说过他们。

(e)对于软件兼容性的原因,制造商保持着32比特的数据总线的错觉甚至在具有64位的前端总线的处理器(例如英特尔奔腾和AMD K5,等)或与一个4位宽的主板总线(LPC总线)。



Answer 6:

你的记忆系统要成为一个字节的倍数,这使得缓存想成为一个字节的倍数,这使得你的整个系统要成为一个字节的倍数。

谈到作为一个硬件设计师,你通常要设计的CPU,以字节某种界限,即8的倍数,否则你要么有很多尴尬的电路添加到49位系统,使其利用MOD-8位或者你最终忽视了额外的比特,在这种情况下,这是一种浪费,除非你需要额外位的说明,这是从来没有在16位或更宽的系统的情况。



Answer 7:

正如其他人所指出的那样,在创业初期,事情没那么明确的:字排在各种古怪的尺寸。

但是,对8位字节标准化推动也受到内存芯片技术驱动。 在创业初期,很多内存芯片被组织为每个地址1位。 存储器对于n位字是由n个的组使用存储器芯片构成(具有捆在一起相应的地址线,并且每个芯片单个数据比特有助于n比特字的一个位)。

随着内存芯片密度高了,制造商在单一封装中封装多个芯片。 由于在使用中最流行的文字大小为8位的倍数,8位存储器是特别受欢迎:这意味着它也是最便宜的。 随着越来越多的架构跳上8位字节的行列,溢价内存芯片未使用的8位字节变得越来越大。 类似的论点考虑来自8-> 16,16-> 32,32-> 64移动。

您还可以设计一个系统,24位内存,但内存可能会比使用32位内存类似的设计更加昂贵。 除非有一个非常好的理由,坚持在24位,大部分的设计师会选择32位时,其都更便宜和有效。



Answer 8:

在同一时间,计算机字长往往是6位的倍数,由于计算机通常使用的6位字符集,而不为小写字母的支持。

IBM提出了高性能计算机,拉伸,为洛斯阿拉莫斯国家实验室,其中有一个64位字。 它有不同寻常的特点,在计算机的内存中各个位可直接寻址,这迫使字长度为二的幂。 它也有一个更扩展的字符集,这使得要被包括数学符号(除了小写); 他们在名为COLASL一个特殊的高级语言使用。

当IBM推出了非常流行的System / 360大型机,即使它没有位寻址,它保留了八位字节,主要是为了允许压缩十进制量的有效存储在四位的十进制数。 因为这台机器是如此受欢迎,这是非常有影响力的,并从DEC的PDP-11计算机的设计采用16位字和8位字符。 在PDP-11也是第一个真正的小端机,而且它也很受欢迎,影响力。

但它是跟着流行走的,只是因为没有。 8位字符允许小写文本,并作为计算机变得更便宜,能够很容易地使用他们的字处理受到重视。 而且,正如STRETCH需要有一个有两个大小位的权力,允许位是容易解决的,需要今天的计算机有那的8次方数个多(这恰好是一个字一个字二至第三电源本身),使字符可以很容易地解决。

如果我们仍然使用6个字符,计算机将趋向于24,48或96位字。



Answer 9:

相关,但可能不是这个原因,我听说的约定8位字节是因为它是IBM如何操纵了IBM的System / 360架构。



Answer 10:

一个常见的原因是,你可以在二进制数的位。 这都在有用在不少情况。 例如,在位位移或旋转操作。 您可以在0到15位旋转16位值。 旋转超过16位的尝试也简单:这相当于在0位旋转。 和超过1027个比特的旋转等于在3个比特的旋转。 一般地,宽度W超过N个比特的寄存器的旋转等于在N个模W上的旋转,并且操作“模数W”是微不足道当W是2的幂。



Answer 11:

80286个以后的处理器80186,8086,8088和“实模式”中使用的20位的分段存储器寻址系统。 80286有24条天然的地址线,然后将386和以后有32或64。



Answer 12:

另一个反例:在PIC16C8X系列单片机有一个14位宽的指令集。



Answer 13:

字节是关系到大部分西方世界,因此8位字符的编码。 字是不相关的编码它与地址,因此它是从4变化到80等等等等的宽度



Answer 14:

我的可信赖岁HP 32S计算器是12位。



Answer 15:

由于用于地址保留的空间始终是固定的比特数。 一旦你已经确定的固定地址(或指针)的大小,然后你想它的最好的,所以你必须使用其所有的值,直到它可以存储最多。 你可以从一个位的倍数获得最高数(0:1)始终是两个电源



Answer 16:

可能是你能找到的东西在这里: Binary_numeral_system



Answer 17:

ICL的1900都是24位(字)。 投注还有人记得这不是很多。 你做 ??



Answer 18:

我们,只要看看PIC微控制器。



文章来源: Why is number of bits always(?) a power of two?