x86架构首度出现在1978年推出的Intel 8086中央处理器,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。Intel之后又推出了包括80186、80286、80386以及80486。 在设计上,这些后续的处理器使用的指令集都是在8086的基础上添加新支持的指令进行改进的,因此可以说都是向下兼容的(backward compatibie),即能再8086上运行的程序在80486上也一定能运行。由于都是以86结尾(不过8088也是x86),所以把这一系列的指令集称之为x86指令集(架构)。准确的来讲,x86这一术语并不是指的某一个(具体CPU使用的)具体的指令集,而是在8086(的指令集)基础上发展而来 的所有指令集的泛称。

实际上,在80486以后Intel推出的绝大多数CPU都是“x86”的,包括Pentium 、Pentium Pro 、Pentium MMX ,Pentium 2 ,还有后面的Pentium 3、Pentium 4 、Pentium D 、Core全系列,(x86系列的) Xeon。另外,使用x86架构的处理器制造商远非Intel一家,最著名的就是AMD,其他的还有VIA,Cyrix。具体的产品及特性可以见附录的表 格。可以说,x86架构就是桌面级CPU的标准,你能买到的品牌或者组装的PC,几乎没有不是x86 CPU的。不过虽说都是x86的,但只能说明使用的指令集是兼容8086的,除8086指令集之外的其他指令支持情况就不一样;其内部实现的微体系结构microarchitecture显然也是各自不同,就好比Linux和Unix虽然都是POSIX兼容的OS,都有fork这个系统调用,但是这个调用的实现确实各不相同。

从1985年80386开始,Intel通过对x86架构进行32位的扩展,实现了32位CPU,而之前的都是16位。Intel把支持32位的x86指令集架构命名为IA-32(Intel Architecture 32bit)。实际上由于32位x86处理器的统治性,术语“x86”几乎等于IA-32,即32位的x86或x86-32,例如Windows和Linux发行版的32位命名都是x86(而不是x86-32或IA-32)。后来的“x86-64”名称也继续强化了这种约定方式。这里还是要强调 x86是一系列架构的泛称,支持16位、32位和64位的指令都有。

该来的还是会来,在1999年,AMD宣布了x86-64架构。其实现方式与之前的80386思路一致,继续对IA-32扩展,增加64位通用寄存器、证书预算单元和逻辑操作,支持64位虚地址;向前兼容IA-32。2003年第一款x86-64处理器发布,AMD Operon。同时AMD也将x86-64正式命名为AMD64。这下Intel彻底2B了(原因后面说),以前都是AMD小弟追随者Intel大哥的脚步,如今AMD先实现了64位民用桌面级CPU。其实Intel也有其64位计划,在2004年的IDF上,Intel承认其64位计划,命名为IA-32e,即IA-32 extension,之后又改成EM64T,Extended Memory 64 Technology,最终命名为Intel64。 实际上EM64T与AMD64几乎相同。早期EM64T不兼容AMD64的少量指令,但是由于AMD在64位技术中的领先地位,Intel2005年不得不宣布将完全兼容AMD64。所以现在装的64位版本操作系统从没有说是面向Intel还是AMD的。不过在称谓上,大多数厂商还是使用x86-64(x86_64,或者就是x64)来称呼此架构,从而保持中立。

“i386“和”i486″作为Intel 80386和80486处理器的别名是比较显然的。由于不能使用数字作为注册商标,而且也需要一个正式的名称命名,从586开始就变为Pentium了, 这时候i586就作为了最原始Pentium的微处理架构“P5”的别名,同样的i686对P6(Pentium Pro使用),i786对应P68,或NetBurst架构。

在我看来,在软件包的命名上使用“i某86”时应该是说适用于使用这一代微架构的CPU。但微架构是硬件上事,因此还是在说明适用对应CPU使用的指令集。比如,i386对应IA-32,并且由于兼容性肯定适用于i486~i686;i686不仅适用Pentium Pro,也适用K7架构的Athlon。

前文提到Intel在AMD推出民用64位技术后很被动。其实Intel也有64位x86 CPU的计划,但是由于对于这个市场的不重视,认为需求不足,一直不见面世。而在对64位需求更加强劲的企业服务器和高性能计算市场上,1994年HP就和Intel合作开始开发一款与x86架构完全没关系的全新的IA-64架构。显然IA-64不兼容x86-64更别说IA32,IA64天生就是64位,基于显式并行指令运算(EPIC)。 2001年第一款IA-64架构的处理器Itanium安腾发布。可见,IA-64跟IA-32在实现上没有什么关系,跟x86-64也是完全并行的两种架构,x86架构的Intel的Xeon就是Intel Itanium的竞争对手之一。后来Intel把IA-64也干脆改称为Intel Itanium架构。

参考:

https://www.zhihu.com/question/19573226/answer/14267936(以上内容转自知乎回答)

https://zh.wikipedia.org/wiki/Intel_80386

==>如有问题,请联系我:easonjim#163.com,或者下方发表评论。<==

i386和x86-64区别通俗易懂版本(转)相关推荐

  1. 发行版中的i386/i686/x86-64的区别: i386用来处理32位系统,i686是i386的下集;x86-64用来处理64位系统。 linux发行版中的i386/i686/x86-64各自含

    发行版中的i386/i686/x86-64的区别: i386用来处理32位系统,i686是i386的下集:x86-64用来处理64位系统. linux发行版中的i386/i686/x86-64各自含义 ...

  2. 模块XXXX可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86(32位)x64(64位)版本兼容。

    最近自己在编写ActiveX控件.遇到的麻烦事不少. 今天遇到了这个问题"模块XXXX可能与您正在运行的Windows版本不兼容.检查该模块是否与regsvr32.exe的x86(32位)x ...

  3. 【linux】i386与AMD64的区别

    [时间]2018.09.21 [题目]i386与AMD64的区别 [参考链接]https://www.cnblogs.com/hongrunhui/p/5179454.html 概述 之前重装utun ...

  4. win7 x32 x64 x86的区别

    x86和x32代表32位操作系统 ,x64代表64位操作系统.x86是以前intel对32位系统的传统叫法,如486.586,他们都是32位的.64位版本比32位的可以处理更多的内存和应用程序.32位 ...

  5. 【转】arm和x86的区别

    [转]arm和x86的区别 来自: https://blog.csdn.net/u012513972/article/details/78349192/ 信不信,随便逮住一个人问他知不知道CPU,我想 ...

  6. linux的x64与x86_在Linux x86 64机器上链接

    linux的x64与x86 Linking is the process of combining various pieces of code and files in order to const ...

  7. SpringBoot入门到精通 idea教学 (余胜军通俗易懂版本)

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...

  8. linux32-64区别,关于linux发行版i386/i686/x86-64/的区别

    一. I386 为32位 x86 64位 二.安装介质 1. i386 适用于intel和AMD所有32位的cpu.以及via采用X86架构的32的cpu. intel平台包括8086,80286,8 ...

  9. X86 X64 区别

    有时候遇见 X86, X64这样的说法,那X86和X64分别是什么意思呢? 简单来说,X86就是32位, x64就是64位系统. 比如WIN7,Ubuntu都有32位和64位操作系统的版本哦. 就是这 ...

  10. 下载Ubuntu镜像时,i386 和 amd64 的区别

    下载Ubuntu镜像时,i386 和 amd64 的区别 在我们下载Ubuntu镜像的时候,有的人会搞不清楚是要下载适合amd64.iso还是i386.iso的镜像. amd64.iso 对于目前绝大 ...

最新文章

  1. 文件上传服务器保存形式,78.上传文件及在服务器保存文件到任意路径
  2. java有点_JAVA 有点儿冷
  3. 首届清华智班30人名单公布:贵校第一批AI本科生,状元金牌云集,与姚班“抢人”...
  4. 软件分享:将应用一键打包成dmg文件
  5. 第四章(变量、作用域、内存问题)
  6. arduino控制点阵屏与蜂鸣器_数字制造讲义08-Arduino声音应用2
  7. nginx多域名设置和多子目录实现共用一端口
  8. 使用 Apache 工具类 HttpClients 进行 GET、POST请求
  9. 如何隐藏地址栏中的真实地址_代理IP如何隐藏真实IP
  10. set_union()和set_intersection()用法:原来并集和交集这样求!
  11. 【14年浙江省赛 ZOJ 3780】Paint the Grid Again【图转换】
  12. Flash Player不支持火狐_谷歌浏览器
  13. 使用接口接收json数据
  14. 苹果蓝牙耳机平替哪个好用?商务通话蓝牙耳机推荐
  15. orCAD中的文本编辑框如何换行?
  16. SQL零基础入门学习(十三)
  17. 阿里云Codeup云效使用flow+k8s部署go语言项目
  18. 如何计算时间复杂度?
  19. HDFS加密存储(Ranger集成KMS方式)
  20. C# List集合快速拼接字符串

热门文章

  1. SQL SERVER 2000日期处理(转)
  2. 【 数据结构(C语言)】线性表——链表反转
  3. 单例模式(含多线程处理)
  4. 【BZOJ4837】LRU算法 [模拟]
  5. IE Developer ToolBar,这是IE用于调试页面的小工具
  6. Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载][续]...
  7. https认证和httpclient远程调度https的接口的方法
  8. 优先队列/oriority queue 之最大优先队列的实现
  9. 在Mysql中遇到关于区间范围内的索引优化
  10. MySQL 显示版本、端口、状态