非常专业的一个问题。因为看到文章介绍了CPU有32和64位,就想知道这个位数是由什么决定的。我知道肯定和硬件有相关,只是希望能得到一个通俗易懂的解释即可。 还有,近年提出的32位操作系统、64位操作系统和这里的32位、64位是一样的吗?
问题补充:
CPU中的微指令是公开的吗?比如Intel和amd的CPU中的指令是公开的吗?有没有开源的微指令CPU?
CPU有32和64位是由计算机中各个存储器所使用的位数决定的。 32位也就是一个寄存器使用的是一个32位0,1串,64位也就是一个寄存器使用的是一个64位0,1串。其中64位在32位的基础上还多增加了一些寄存器。 寄存器存储的是微指令,微指令由指令和操作数构成。寄存器的长度决定了Cpu 的指令长度和寻址能力。 指令长度越长,所能支持的指令越多,地址空间越长,所能访问的物理地址越多。 一个简单的例子就是32位的Cpu 地址线是20位,所以在实模式下只能使用1Mb的内存。 而64位的Cpu 地址线是48位,所以在实模式下可以使用256TB的内存。 现在的32位操作系统之所以能使用超过1Mb的内存,是使用了偏移的方式,在面向Cpu 的程序运行是,使用立即数寻址是最快的,所以在理论上64位的Cpu 应该是比32位的Cpu 要快。 现的64位Cpu 只是简单的多使用了64位Cpu 所提供的额外的寄存器,而没有在内核上做改变。 在32位Os中,由于1Mb的内存远远不够用,因而产生了偏移方式寻址,从而能使用到64G内存。 64位Cpu 则不然,使用立即数方式就可以达到256Tb,完全可以只使用立即数方式。立即数方式相较其它方式,速度至少快一倍。 可以认为现在的64位操作系统和32位操作系统是一样的。其他回答 共3条00