cpu指令集的问题?

cpu的指令集有好象有x86, x86-64, MMX, SSE, SSE2, SSE3, SSSE3 这几种,但是不同的cpu的指令集也不相同,我的问题就是,如果两个cpu的指令集不相同,而一个程序(是已经编译好的程序)在两种cpu上好像都能运行(我没有发现过一个程序在Windows中运行的时候因为CPU的问题而运行不了),这是怎么回事?
还有就是intel的指令集和AMD的指令集好像不太一样,如果一个程序被编译的时候用的是intel的指令集,并且这种指令集是intel专有的,那么它怎么能在AMD上运行呢?

你说的x86和x64或者ia64是CPU架构,也就是编译程序的标准,而MMX、SSE这些是指令集。指令集并非会限制某些程序的运行,而会影响程序运行的速度。

通俗的说,指令集是优化某些程序中的可执行代码的执行效率,就是说,某些程序在运行在支持某个指令集的CPU上会有很高的性能。比如说,SSE指令集就是为了多媒体程序的性能而设计的,使用了SSE指令集编写的程序,当他运行在支持这个指令集的CPU上时,性能会有极大提升,而运行在不支持SSE指令集的CPU上,虽然CPU的速度和指标可能一致,但是会有极大地下降。

指令集是一种知识产权,所以amd和intel的不一样,如果AMD想支持intel的指令集,是需要为intel付费的,所以amd会另外开发一套指令集,以白皮书的形式发放给程序员,让程序员编制出适合amd cpu使用的程序。

往往一个程序不只可以兼容一套指令集,假如编译时选择兼容多种指令集,程序的体积会大一些,但是这并不会造成太大的问题。

而X86是CPU的架构,也就是在只支持X86架构的计算机上,为X64编写的任何程序是不能运行的,这个不是指令集。

综上,指令集并不能限制程序是否能够在该计算机上运行,而是制约了程序运行的速度。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-23
纠正你三个问题,
第一个问题:还有SSE4.1/4.2 NX-BIT Execute Disable Bit EM64T AVX指令集 3D Now! 等等等等的指令集,远远不止你提到几种。
第二个问题:已经编译好的程序在计算机中是以汇编语言的机器码来运行的,而高级语言依赖于汇编语言,仅仅和操作系统有关,与你使用什么CPU无关。
第三个问题:NTEL的指令集和AMD的指令集虽然不一样,但是实际上这对应用层几乎没有任何关系。只是在底层的任务上的完成的方法不一样,最终目的却都是可以执行,好比一个做飞机,一个开汽车,最后都能到达目的地。
第2个回答  2010-11-23
因为现在所有windows的程序都是基于X86架构的,所以只要是windows的程序就能在AMD、Intel的CPU上运行。现阶段Intel跟AMD公用所有指令集,AMD-V、3D NOW指令集是AMD专用的,但是所有的程序开发商部可能做一种封闭式的程序,要求就是兼容性要绝对好。所以到现在也没有任何一个只能运行在一种平台上的应用程序。
第3个回答  2019-08-16
CPU扩展指令集指的是CPU增加的多媒体或者是3D处理指令,这些扩展指令可以提高CPU处理多媒体和3D图形的能力。著名的有MMX(多媒体扩展指令)、SSE(因特网数据流单指令扩展)和3DNow!指令集。
第4个回答  2010-11-23
你忽视了一点,编译程序可选择指令集,所以你可不比关心这个问题,不信自己做个试验不久行了,邻居、朋友、同学中找到两种CPU电脑很容易
相似回答