Joo*_*kka 51 architecture theory hardware bit
我们有8位,16位,32位和64位硬件架构和操作系统.但不是说42位或69位.
为什么?它是否能使2 ^ n位成为更好的选择,或仅仅是与现有系统的兼容性?(64位寄存器可以容纳两个32位指针,或者一个32位数据单元可以容纳4个字节,这显然很方便.)
sha*_*oth 25
这主要是传统问题.它甚至都不是真的.例如,处理器中的浮点单元(即使是现代的)具有80位寄存器.而且没有什么会迫使我们拥有8位字节而不是13位字节.
有时这有数学推理.例如,如果您决定使用N位字节并希望进行整数乘法,则需要2N位才能存储结果.然后,您还要添加/减去/乘以这些2N位整数,现在需要2N位通用寄存器来存储加法/减法结果,4N位寄存器用于存储乘法结果.
小智 23
http://en.wikipedia.org/wiki/Word_%28computer_architecture%29#Word_size_choice
不同数量的存储器用于存储具有不同精度的数据值.常用的大小通常是地址分辨率单位(字节或字)的2倍的幂.将数组中项的索引转换为项的地址则只需要移位操作而不是乘法.在某些情况下,这种关系也可以避免使用除法运算.结果,大多数现代计算机设计具有字长(和其他操作数大小),其功率是字节大小的2倍.
DVK*_*DVK 20
部分地,这是一个解决问题.具有N位地址允许您最多寻址2 ^ N位存储器,并且硬件设计者更喜欢利用该功能的大部分.因此,您可以使用3位来寻址8位总线等...
你的内存系统想要成为字节倍数,这使得你的缓存想要成为字节倍数,这使得你的整个系统想要成为字节倍数。
作为一名硬件设计者,您通常希望将 CPU 设计为某种字节边界,即 8 的倍数。否则,您要么必须向 49 位系统添加大量笨拙的电路,以使其利用 mod-8 位,或者您最终会忽略额外的位,在这种情况下这是一种浪费,除非您需要额外的指令位,而在 16 位或更宽的系统上绝不会出现这种情况。
许多(大多数?)早期的预微处理器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等)的处理器上或在4位宽的主板上保持32位数据总线的错觉公共汽车(LPC巴士).