sum: X86,X64指的是CPU硬件架构的并发处理能力,前者是32位,后者是64位的;

1、x86是指x86指令集,最早从8086处理器就开始了, 但是32位是从80386才开始有的,只不过慢慢大家都习惯称目前的32位架构为x86了.
2、64位的目前一般指x64(最先amd推出的,但是后来intel也做了个完全兼容的), 另外Intel还有个IA64架构,也是64位的,只不过不怎么成功而已,虽然windows server还是支持IA64的. 

理论上一个系统的寻址空间大小(也就是支持的内存的容量)等于2的这个系统的位数次方,即 32位系统支持2的32次方 bytes = 4GB,但是为什么大家的32位系统都只报告3.12G左右的内存(Vista x86 装了sp1以后可以报告4G了,但是实际能用到还是3.12 G)?这里不得不提一下MMIO —— 内存映射,所谓内存映射就是指有些硬件是需要在内存里映射一部分保留空间以保证访问,比如,你有1块256MB独显的显卡,那么系统就必须要在内存里给显卡保留出256MB的映射空间,诸如此类,各种设备都会占用一部分内存(映射掉的空间对操作系统是不可用的)。而对于32位系统来说,因为最多只能访问4G的内存,所以映射空间只能从这4G内存空间 里面扣,从而使得操作系统的可用内存变少。具体少多少本来应该是因人而异的,但是在32位的vista里面我们却无论如何也不能使用多过3.12G的内存,因为按照微软官方的说法是:“为了避免潜在的驱动兼容危险,32位vista的可用内存被限制到了3.12 G(也就是说Vista为哪怕没有安装的设备也保留了映射空间)。”其实即使在x64系统里,内存映射也是要吃掉一部分空间的,并不是所有的内存空间都是操作系统可用的http://support.microsoft.com/kb/929605,只不过微软从Vista Sp1以后在系统信息里都会报告系统安装的最大内存容量,可能被骂怕了吧。在这里我就不讨论PAE了,如果要讨论的话,估计又是一大段篇幅。 事实上,如果一台机器上连接的设备太多的话,可用的内存还会变得更少,有兴趣的朋友可以自己试一下,哈哈。

 

说完32位下面来说64位,先不说2的64次方是多少,由于BIOS,PCI总线(包括桥间通信带宽)和PCI Express支持能力的限制,当前64位系统支持的最大的内存容量就是128 GB了。看上去很美,不是么?但事实上,大部分程序需要也只需要1-2G的空间就能运行得很好,只有等到应用程序全面64位化而且硬件也跟上了,大内存的优势才能逐渐体现,目前也就服务器,2/3D图像处理,视频编辑和虚拟机等应用上能体现出x64的优势。(大内存既是机遇又是挑战,因为指针容积翻倍,64位程序运行的时候需要的内存也会增加,这也是windows x64系统进程占用的内存空间比x86要大的原因。如果程序人员因为觉得有大量内存可用而不注意优化的化,64位带来的就不是进步了,当然这是目前小部分人才需要考虑的事情。)64位同时还意味着带宽的增加,简单的说就是以前32位程序需要移动2次的数据现在移动一次就成,利用了大内存同时也减少了硬盘读取,这也是为什么说64位的7z解压缩比32位的7z要快的原因,当然,之前提到的SSE x指令集也是功不可没(好吧,我没看过7z的源码,但是相信是针对x64的cpu优化过的,而不是仅仅通过64位编译来利用大的带宽而已)。带宽的提升对于photoshop,3ds max等需要吞吐大量数据的程序的提升还是很明显的,配合上SSE x帮助大概能有10-30%左右?不要指望100%了,别忘了一个系统由很多部分组成,瓶颈无处不在啊。。。