如何确定最佳(处理器)字大小?越大越好?

时间:2016-11-14 02:37:50

标签: operating-system cpu word

我的理解是处理器的字大小是该处理器在单次计算中处理的位数。这(目前)通常为32或64位。然而,我的研究表明,过去的字数较小,并且随着时间的推移逐渐增加。

我也明白字大小决定了通过系统总线传输数据,指令大小,地址大小等。

鉴于此,如何确定最佳字数?字大小总是更好吗?如果没有,为什么?

我怀疑更大的字大小并不总是更好,因为更大的字大小可能意味着一个总线周期(在总线上传输一个字所需的时间)需要更长的时间? / p>

谢谢。

2 个答案:

答案 0 :(得分:1)

  

然而,我的研究表明,字数较小   过去,并且随着时间的推移逐渐增加。

是的,非常正确。虽然英特尔为16位和32位CPU(8086和80386处理器分别是同类产品中的第一款)做了开创性工作,但AMD创建了他们的AMD64(又名x86-64或简称x64)架构,这是对32位x86架构始于80386.英特尔创建了一个全新的东西,IA-64架构,但没有人真正使用它。

  

我怀疑较大的字大小并不总是更好,因为更大   字大小可能意味着一个总线周期(传输所需的时间)   公交车上的一个字需要更长的时间?

假设您的公共汽车没有您想要运输的数据那么宽,那是正确的。通过16位总线发送32位数据确实需要更长时间。但是,通过64位总线传输64位数据的速度与16位总线上的16位数据一样长。

因此,字大小等于总线的宽度。在Von Neumann机器中,有三条总线,因此关于实际定义为字大小的内容存在一些争议,但通常是数据总线。

因此,多年来字数增加的事实是由于技术的进步(相关:Moore's Law)。科学已经向前推进,旨在提供更好,更快的CPU。

现在我们有64位CPU,但是使用它们的指令集,立即操作数(文字)也被视为64位。这意味着,例如,将0x1加载到64位寄存器中需要至少9个字节(立即操作数+操作码)。如果架构没有提供将一个符号或零扩展字节加载到64位寄存器的特殊指令,那么这显然是不利的。因此,有一些方法可以改进它,特别是ARM Thumb 1 指令集,它试图以增加执行时间为代价来减小代码大小。

毕竟,没有"最佳字数。"这取决于应用程序和环境。有些程序需要速度,有些程序必须很小。

1 我不知道为什么叫它" Thumb,"也许是因为指令很小,它们适合顶针。

答案 1 :(得分:1)

  

鉴于此,如何确定最佳字数?

字大小被确定为处理器设计的一部分。它不一定是最佳的。在过去,字大小包括8,12,16,32,36和64位。字大小越多,处理器实现的复杂程度就越高。 64位加法(包括计算存储器地址)的比较是16位加法的4倍。

  

字大小总是更好吗?如果没有,为什么?

" 640K对任何人都应该足够了。"

有一段时间,32位(4GB的内存)被认为足以永远持续下去。 64位就足够多久了?

较大的字大小会占用更多内存,并且实现起来会变得更加复杂。有一个权衡。

  

我怀疑字大小并不总是更好,因为较大的字大小可能意味着一个总线周期(在总线上传输一个字所需的时间)需要更长的时间?

总线传输大小可能与处理器字大小不同。这往往是一个瓶颈。