我们拥有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每个字的位数都不是2的幂。

特别是,Seymour Cray和他的团队构建了许多极具影响力的机器,具有非二字大小和地址大小 - 12位,48位,60位等。

令人惊讶的是,大量的早期计算机都有36位字,这完全是因为人类有10个手指。 维基百科“36位”文章有关于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)出于软件兼容性原因,制造商甚至在具有64位前端总线(如Intel Pentium和AMD K5等)的处理器上或在带有a的主板上保持了32位数据总线的错觉。 4位宽总线(LPC总线)。

你的内存系统希望是一个字节倍数,这使得你的缓存想要是一个字节倍数,这使你的整个系统想成为一个字节倍。

作为一名硬件设计师,您通常希望将CPU设计为某种类型的字节边界,即8的倍数。否则,您必须向49位系统添加许多笨拙的电路,以使其利用该模块-8位,或者你最终忽略了额外的位,在这种情况下它是浪费,除非你需要额外的位指令,这在16位或更宽的系统上绝不是这种情况。

正如其他人所指出的那样,在早期,事情并没有那么明确:各种奇怪的大小都出现了。

但是,8bit字节标准化的推动也是由内存芯片技术推动的。在早期,许多存储芯片被组织为每个地址1位。 n位字的存储器是通过使用n组存储器芯片构成的(相应的地址线连接在一起,每个芯片单个数据位有助于n位字的一位)。

随着存储器芯片密度的增加,制造商将多个芯片封装在一个封装中。因为最常用的字大小是8位的倍数,所以8位内存特别受欢迎:这意味着它也是最便宜的。随着越来越多的架构跳上8位字节的潮流,不使用8位字节的内存芯片的价格溢价变得越来越大。类似的论据考虑了从8-> 16,16-> 32,32-> 64的移动。

您仍然可以设计一个具有24位内存的系统,但该内存可能比使用32位内存的类似设计昂贵得多。除非有一个非常好的理由坚持24位,否则大多数设计师会选择32位,因为它更便宜,功能更强。

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

IBM为Los Alamos制作了一台高性能计算机STRETCH,它有64位字。它有一个不同寻常的特点,即计算机内存中的各个位可以直接寻址,这迫使字长为2的幂。它还有一个更加扩展的字符集,允许包含数学符号(除了小写);它们被用在名为COLASL的特殊高级语言中。

当IBM推出非常流行的System / 360大型机时,即使它没有位寻址,它也保留了8位字节,主要是为了有效存储四位到十进制数的压缩十进制数。因为这台机器非常受欢迎,所以它非常有影响力,DEC的PDP-11计算机设计有16位字和8位字符。 PDP-11也是第一台真正的小端机器,它也非常受欢迎和有影响力。

但这不仅仅是因为追随时尚。 8位字符允许小写文本,并且随着计算机变得更便宜,能够轻松地将它们用于文字处理是有价值的。就像STRETCH需要有一个具有两位大小的字位以允许容易地寻址的字一样,今天的计算机需要有一个8的幂倍数的单词(恰好是两个到三个电源本身),以便容易地解决字符。

如果我们仍然使用6位字符,计算机往往会有24,48或96位字。

相关,但可能不是原因,我听说一位字节中的8位是因为IBM是如何操纵IBM System / 360架构的。

一个常见的原因是你可以用二进制数来编号。这在很多情况下都很有用。例如,在bitshift或rotate操作中。您可以在0到15位之间旋转16位值。尝试旋转超过16位也是微不足道的:这相当于超过0位的旋转。并且超过1027位的旋转等于3位以上的旋转。通常,宽度W超过N位的寄存器的旋转等于N模W的旋转,并且操作“模W”。当W是2的幂时,这是微不足道的。

80186,8086,8088和“Real Mode”。在80286及更高版本的处理器上使用了20位分段存储器寻址系统。 80286有24个本地地址行,然后是386,后来有32或64。

另一个反例:PIC16C8X系列微控制器具有14位宽的指令集。

字节与大多数西方世界的字符编码有关,因此是8位。 Word与地址宽度相关的编码无关,因此它从4到80等变化

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

因为为地址保留的空间始终是固定的位数。 一旦定义了固定地址(或指针)大小,那么您希望充分利用它,因此必须使用其所有值,直到它可以存储的最大数量。你可以从一个位的倍数(0或1)得到的最高数字总是2的幂

可能你可以在这里找到一些东西: Binary_numeral_system

ICL 1900全都是24位(字)。打赌那里没有很多人记住这些。你呢??

我们只看一下PIC微控制器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top