|
主题 : : 常说的32位CPU,64位,其中"32位\64位"究竟指的是什么? [已解决] |
回复[ 9次 ]
点击[ 503次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-05-13 14:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2008-05-12 09:14 |
常说的32位CPU,64位,其中"32位\64位"究竟指的是什么?
看到有些人说指。。地址总线的宽度。。。有些人说。指数据总线的宽度(CPU一次可以处理的二进制的位宽!)。。。。。
有点迷惑。。。到底指的什么??
如果要是指数据总线的宽度。。。那么为什么32位的CPU不能装64位的系统???分2次传送数据不行吗???
望解答。。。谢谢了 | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-05-13 14:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23 |
指的是数据总线的宽度。
虽然64位数据可以由32位的cpu分两次读,但是,具体到程序中就不太一样了。比如说,一个双字的数据可以分两个字读取,但是,在使用数据的时候要有相应的处理,都则计算结果就会有问题。我想,如果32位cpu运行64位的程序,如果cpu本身没有什么特殊化处理的话,数据的运算是会出问题的,毕竟不是一开始就考虑了cpu数据中线的扩展,所以,cpu很有可能就没有相应的处理过程,导致64位的程序无法在32位cpu上正确运行。
不过,我觉得不能排除经过特殊处理的32位cpu能运行特定的64位程序的可能吧。
个人看法,希望不吝指教。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-05-13 16:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2008-05-12 09:14 |
哦。。。那32位的CPU包含了32位寄存器组 那64位的CPU呢?、有多少寄存器组? | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-05-13 19:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-09-12 08:42 |
我想所谓64位CPU也不能保证数据总线和地址总线都是64位吧?! | | |
|
|
|
|
[第4楼]
[ 回复时间:2008-05-13 21:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:2
注册日期:2008-05-12 16:27 |
从内存的角度来说,64位总线的处理器对于单个进程来说,其虚拟地址的寻址范围可以达到2的64次方字节,而单个页的容量从4K变为8K,盲人摸象似的看法,见笑了 | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-05-14 10:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:152
信誉值:3
注册日期:2008-01-24 21:26 |
楼上的说法,我觉得不太合适,因为数据总线和地址总线不一定一样宽度的。比如说8086,其数据总显示16位,而地址总线是20位。所以,我们从“*位cpu”这个概念上,我们能确定的只有数据总线的宽度,并不能百分百确定地址总线的宽度。
还有就是2楼的问题,没接触过64位的汇编概念,所以,这个问题还不能说清楚,等什么时候出来64位汇编了,我想我们就能体验一下了。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-05-15 13:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:2
注册日期:2008-05-12 16:27 |
crazyman说的很对,在80386中采用的地址总线是32位,可能intel觉得4G的寻址空间还不够大,在Pentium中引入了PAE,实现第三级映射,地址总线是36位 | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-05-15 18:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2008-05-15 17:39 |
“那么为什么32位的CPU不能装64位的系统???分2次传送数据不行吗??? ”
CPU并不知道将要运行的程序是32位还是64位的,或者说CPU根本就不知道64位这回事
64位的操作数位数是32位CPU的2倍,而取指令是不会分2次去一个操作数放到IP里再定位2次的
如果改造一下CPU,可以做到,但是就没有任何实用价值了(直接64位CPU了) | | |
|
|
|
|
[第8楼]
[ 回复时间:2008-05-17 02:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:16
信誉值:0
注册日期:2008-05-17 01:25 |
个人觉得的话,这个32位和64位的区分就是数据宽度的区分,64位的CPU的地址总线不可能为64位,只是通过64位指令和扩展寄存器什么的可以达到一次性传输64bit的数据?作用的区别,当然就是运算的速度,和支持的内存空间了..(具体的什么构造那些,就需要大虾讲解了,我不懂)
至于为什么32位的CPU不能装64位的系统..
额..打个比方..你原先有一辆负载可以达到32吨的大型货车,那么你是不是最多就只能装32吨的东西? 是的。或者换成64吨的货车的话,你不仅可以装32吨的,还可以装64吨的,但是如果你要硬把64吨的东西,塞进32吨的货车里?可能么? | | |
|
|
|
|
[第9楼]
[ 回复时间:2008-05-20 17:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2008-05-12 09:14 |
此贴由 贴主 于 [ 2008-05-20 17:35 ] 结贴。 结贴原因:问题已解决 | | |