我的理解是处理器的字大小是该处理器在单次计算中处理的位数。这(目前)通常为32或64位。然而,我的研究表明,过去的字数较小,并且随着时间的推移逐渐增加。
我也明白字大小决定了通过系统总线传输数据,指令大小,地址大小等。
鉴于此,如何确定最佳字数?字大小总是更好吗?如果没有,为什么?
我怀疑更大的字大小并不总是更好,因为更大的字大小可能意味着一个总线周期(在总线上传输一个字所需的时间)需要更长的时间? / p>
谢谢。
答案 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位就足够多久了?
较大的字大小会占用更多内存,并且实现起来会变得更加复杂。有一个权衡。
我怀疑字大小并不总是更好,因为较大的字大小可能意味着一个总线周期(在总线上传输一个字所需的时间)需要更长的时间?
总线传输大小可能与处理器字大小不同。这往往是一个瓶颈。