i386和i686的区别[通俗易懂]

i386和i686的区别[通俗易懂]i386和i686现在所有的intel32位体系(包括AMD等兼容CPU)都叫i386体系,包括P4。、i686仍然属于i386体系,不过对CPU(相对于386)的特性作了指令优化。GNU/Linux分为alpha、PowerPC、Sun等各个不同版本,所有从Intel386-P4都用i386版本,但i386版本中有几个内核(i486,i486,i586,i686),安装时安装程序检测到

大家好,又见面了,我是你们的朋友全栈君。

i386和i686

现在所有的intel 32位体系(包括AMD等兼容CPU)都叫i386体系,包括P4。、i686仍然属于i386体系,不过对CPU(相对于386)的特性作了指令优化。GNU/Linux分为alpha、PowerPC、Sun等各个不同版本,所有从Intel386-P4都用i386版本,但i386版本中有几个内核(i486,i486,i586,i686),安装时安装程序检测到你得CPU级别后,自动为你安装相应内核。

与cpu的指令集有关.I代表与intel的指令集兼容,后面的数字是指cpu的分类。
因为intel的cpu经过这么久的发展,不断的更新,产生从8086,8088,80286,80386,80486,奔腾(586),奔腾二代(686),奔腾三代(686)…cpu的每次换代,都增加了一些新的指令集,但都向后兼容(就是说后面的CPU都能完全使用前面的CPU的指令集)。而软件包为了能发挥好cpu的全部性能,就加入cpu相对应能指行的指令。因此就产生了各种不同的软件包。所以,i686的软件包能在奔腾二代以上的cpu上执行,但基本不能在此之先的cpu如486上执行。而i386的软件包既可在i386的电脑上执行,也可在后面所有的cpu上执行(如奔三、奔四,但不能发挥cpu的最佳性能。)

i686指的是Pentium Pro以及此后的Intel IA32 CPU,也就是平常我们所说的P6系列处理器。

i386不用说了,泛指80386以后的。

IA32划分子集的话:386、486是一个,Pentium自己是一个, Pentium Pro、Pentium II、Pentium III是P6系列,Pentium IV又独自算一个。 Pentium 4是NetBurst架构的,比起P6系列有些变化。

i686是pentiumpro及以后的通用arch,而i386是所有x86的通用arch,i386包括而i686没有包括的就是386、486、586(pentium)、pentium-mmx
现在应该没有人还在用586及以前的cpu,甚至是pentiumpro。而rpm都是为i386打的包,运行效率会低很多。
兼容性关系大概是
i386:
i386:
i486:
winchip-c6: MMX 3dNOW!
winchip2: MMX 3dNOW!
i586(pentium):
pentium-mmx: MMX 
i686:
pentiumpro: 
pentium2: MMX
pentium3(m): MMX SSE
pentium-m: MMX SSE SSE2
pentium4(m): MMX SSE SSE2
prescott: MMX SSE SSE2 SSE3
nocona: MMX SSE SSE2 SSE3 (64bit)
c3: MMX 3dNOW!
c3-2: MMX SSE
k6: MMX
k6-2,k6-3: MMX 3dNow!
althon,althon-tbird: MMX 3dNow! SSE(prefetch only)
athlon-4, athlon-xp, athlon-mp: MMX 3dNOW! 3dNOW(enhanced) SSE(full)
k8, opteron, athlon64, athlon-fx: MMX 3dNOW! 3dNOW(enhanced) SSE SSE2 (64bit)
可以看出,i686囊括了现在正在使用的所有x86,所以把rpm打包是的arch改为i686是没有问题的,反而能在指令调度上优化,填满流水线,使程序运行的更快。

而其中除了pentiumpro外,所有兼容i686的x86都有MMX,大多数有SSE。十分使用扩展指令基对大规模计算来说很重要,如昨天加了-mmmx -march=i686打包了一下GIMP,发现有些处理(如马赛克滤镜)快了5倍以上。
另外,如果浮点运算使用-mfpmath=sse -msse的话,浮点除法速度有近百倍的提高,这对浮点运算偏重的如音、视频解码,编码很重要。
当然为了兼容,可以打包两个版本,有sse和没有sse的。
希望开发者能考虑一下,把/usr/lib/rpm/rpmrc中的buildtranslator xxx:i386改为 xxx:i686,并在optflag i686:中加入 -mmmx。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133804.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月7日 下午9:36
下一篇 2022年6月7日 下午9:46


相关推荐

  • 并发编程之线程中断interrupt

    并发编程之线程中断interrupt

    2021年8月3日
    80
  • 养“虾”有风险!多所高校发布安全提示

    养“虾”有风险!多所高校发布安全提示

    2026年3月13日
    2
  • Cloudsim_java源码大全

    Cloudsim_java源码大全CloudSim介绍和使用1.CloudSim简介:2.CloudSim提供了以下新的特点:(1)支持大型云计算的基础设施的建模与仿真;(2)一个自足的支持数据中心、服务代理人、调度和分配策略的平台。(3)CloudSim独特功能有:3.CloudSim源代码介绍几个核心类:4.CloudSim下载,CloudSim在IDEA中配置5.CloudSim环境配置6.CloudSim的扩展7.使用CloudSim仿真的一般步骤1.CloudSim简介:2009年4月8日,澳大利亚墨尔本

    2022年10月13日
    7
  • python3变量命名规则_python 变量命名规则

    python3变量命名规则_python 变量命名规则原博文2020-05-1410:53−python标识符命名规则:1,标识符只能包含大、小写字母、数字、下划线“_”,并且不能以数字开头2,标识符不能与python关键字相同,但可以包含3,标识符不能包含空格tips:a,python的标识符区分大小写,如变量number与变量Number表示不同的变量…相关推荐2019-09-2821:13−Pythonpython是一种跨平台的计…

    2022年6月22日
    61
  • java过滤器怎么使用(过滤器滤纸怎么配置)

    过滤器的作用:用于过滤请求,在请求发出前后,做一些检查或操作,配置及使用步骤如下:1.要配置Filter,首先建立一个Java类,实现Filter接口,代码如下importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servl

    2022年4月12日
    142
  • pycharm添加快捷按钮

    pycharm添加快捷按钮welcometomyb 使用 pycharm 远程调试的时候 总想着点一下上传按钮再开始运行 虽然开启了自动上传 但怕有延迟 感觉运行前会先自动同步 再执行程序 所以我这纯属多虑 上传文件的快捷键是 CTRL ALT SHIFT X 按起来太麻烦了 我也不想改快捷键 于是就想着直接点击上传按钮我是增加了下图右上角黄框左边的四个按钮 具体操作流程跟着下图的红色数字一步一

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号