64位处理器的64位输出指令
大家好:在32为平台下,输出数据最长的输出指令是outl,可以输出32bit的数据,因为32位cpu中,寄存器和数据总线均为32位宽。但到了64位时代,寄存器和数据总线都扩展到了64位宽,请问是否增加了一个64位的输入输出指令。
谢谢。 看gcc的输出,好像从l变q了,但是out指令我不知道。
查手册,or,问mik。 这是 AMD 的一句话:
If the operand size is 64 bits, OUT only writes to a 32-bit I/O port. mik兄是版主啊,失敬失敬。
可能是因为外设仅有32位的寄存器,所以才不需要设置64位的out。但如果没有64位的out指令,外设又怎么能发展到64位呢。 原帖由 arethe 于 2009-7-31 10:02 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
mik兄是版主啊,失敬失敬。
可能是因为外设仅有32位的寄存器,所以才不需要设置64位的out。但如果没有64位的out指令,外设又怎么能发展到64位呢。
这些个宽度之间没有必然的关系.
64位是指字长,也就是运算的宽度,这和接口甚至地址线宽度什么的没有必然关系.
我们一直用32位嵌入式CPU,但是所用RAM的数据宽度却是16位 但对通用的64位CPU而言,地址总线和数据总线的宽度都是64位的吧。 原帖由 arethe 于 2009-7-31 10:02 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
mik兄是版主啊,失敬失敬。
可能是因为外设仅有32位的寄存器,所以才不需要设置64位的out。但如果没有64位的out指令,外设又怎么能发展到64位呢。
out 指令不能写 64 位端口,怎么会限制 64 位的外设发展呢?
相反,若实现 64 位的 I/O 端口,才会限制 64 位的外设的发展呢。
1、x86 平台的 I/O 空间就那么 64 K(0000~FFFF),若实现 64 位 I/O 端口,扣除了原来占有大部分的端口,能有多少个端口可以使用?
2、最重要的一点是:
现在的发展趋势都是使用 MMIO 方式,即 memory-map I/O 内存映射方式访问总线上的设备。由芯片组、bus 总线等等在物理层面上支持。而原有的 I/O address space 已经没多大发展空间了。
64 位的地址空间远远要于 64K 空间。 对于IA32来说,虽然地址总线是32位的,记得CPU内部的数据总线好像是64位的。
而且,x64来说,内部寄存器64了,外部地址总线好像实现上有52根的?记不清了,反正不到64根。 原帖由 prolj 于 2009-7-31 21:35 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
对于IA32来说,虽然地址总线是32位的,记得CPU内部的数据总线好像是64位的。
而且,x64来说,内部寄存器64了,外部地址总线好像实现上有52根的?记不清了,反正不到64根。
AMD 最高可实现 52 条
Intel 最高可实现 40 条
----------------------------------------------------------
AMD 比 Intel 厚道多了, Intel 总是忽忧人 原帖由 mik 于 2009-7-31 21:40 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
AMD 最高可实现 52 条
Intel 最高可实现 40 条
----------------------------------------------------------
AMD 比 Intel 厚道多了, Intel 总是忽忧人
Intel的工艺好,Core i7的实现功耗和性能比AMD的K10好一点点,现实就是这么不理想,我知道AMD的手册写的好,设计先进,可是决定成败的还有其他因素,我现在现实多了,这种不能改变的事情就接受,但是有机会仍然去试图改变。
页:
[1]
2