计算机CPU指令的32位、64位是如何区分呢?

计算机CPU指令的32位、64位是如何区分呢?

浏览次数:812次 
2011-1-3 11:51
提问者:wu123st
非常专业的一个问题。因为看到文章介绍了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条
2011-1-3 13:09huangxin121121 | 六级
其实就是说以前CPU可以一次处理的二进制二进制位数。比方说:1100110011001100,1100110011001100110011001100110011(二进制),最早CPU一次可以处理16位即:1100110011001100,现在可以处理1100110011001100110011001100110011001100110011001100110011001100。
就是说16位可以一次处理16个数值,32可以32个,64位就是64个了。
如果说CPU一次可以处理64位的数据,而操作系统只给它32位的数据,那CPu就有一半性能没有发挥,但是你换成64位的操作系统,那就使CPU的性能发挥出来了。


没有,AMDCPU中含有的SEE1.SEE2和SEE3是和intel购买的使用权 
0
2011-1-3 16:53天涯之独孤求教 | 五级
就像公路,一般的有一左一右两条,高速有2左2右4条,它车流速度就不同了嘛 
0
2011-1-5 10:45wrcr2010 | 四级
其实现在的x86系统就是32位的系统
x64的系统,就是64位的系统。
楼主也可以看到网上的光盘映像或cpu里边的参数,就很容易明白了。 

阅读更多
文章标签: 存储 2010 x86 os
个人分类: C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭