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

i386和x86-64区别通俗易懂版本(转)的更多相关文章

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

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

  2. 【Hardware】i386、x86和x64的故事

    (1)x86的由来 x86架构首度出现在1978年推出的Intel 8086中央处理器,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的.在8086之后,Int ...

  3. < IOS > X-code 5.1 x86 - 64 编译问题

    关于xcode 5.1   x86 - 64 编译问题   坐等了N久,终于IOS 7.1 发布了,作为一个果粉,忍不住第一时间升级了.结果用设备测试的时候,出问题了,一直检测不到设备,哈哈,纠结了半 ...

  4. 关于VirtualBox在新建虚拟机时-选择操作系统类型后没有64位的版本选项

    今天笔者准备使用VirtualBox安装一台windows的虚拟时,在选项操作系统类型为Microsoft Windows后 发现下面的版本选择中,没有之前看到的64位选择,全是32位的,但实际昨天都 ...

  5. 【转】arm和x86的区别

    来自: https://blog.csdn.net/u012513972/article/details/78349192/ 信不信,随便逮住一个人问他知不知道CPU,我想他的答案一定会是肯定的,但是 ...

  6. Office 2016 Pro Plus \ Project 专业版 \ Visio 专业版 \ 64 位vol版本方便KMS小马oem

    在使用上,零售版和批量授权版并没有区别,只是授权方式方面的区别,相对而言,VOL 版的更容易激活一些,其他并没有什么区别了. 有需要的可以在下面下载:(以下均是 64位VL 版) 版本:Office ...

  7. 浅析win32 Win64 x86 x64 区别 及Eclipse启动报Java was started but returned exit code=13 错误

    win32.x86_64是64位 X86就是  32位系统 X64 就是64位系统 最好记得方法就是带有64的就是64位,其余都是32位 为什么要讲这个呢? 如果是绿色版本的eclipse,在打开ec ...

  8. program files与program files(x86)的区别

    简单来说:Program Files (x86)存放了一些32位的系统文件.它和正常的Program Files以及Windows文件夹一样,都属于系统文件夹,请勿随意改动. 64位Windows中提 ...

  9. CPU与GPU区别 通俗易懂

    转:https://blog.csdn.net/xiaolang85/article/details/51500340 有网友在网上提问:“为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚 ...

随机推荐

  1. 10.3.3 WebView的几个常见功能

    (1)背景设置,例如下面的代码. webView.setBackgroundColor(0);//先设置背景色为transparent webView.setBackgroundResource(R. ...

  2. selenium3 + python - page_source页面源码

    前言: 有时候通过元素的属性的查找页面上的某个元素,可能不太好找,这时候可以从源码中爬出想要的信息.selenium的page_source方法可以获取到页面源码. 本次以博客园为例,先爬取页面源码, ...

  3. Too Many open files 问题排查

    问题描述:使用netty做性能测试时,并发过大造成Too Many open files问题 该类错误是因为linux系统对socket连接时需要打开的文件句柄数有限制可以通过ulimit -a 查看 ...

  4. Spring Boot (10) mybatis三种动态sql

    脚本SQL xml配置方式见mybatis讲解,下面是用<script>的方式把它照搬过来,用注解来实现.适于xml配置转换到注解配置 @Select("<script&g ...

  5. 【JAVA练习】- 给定精度求圆周率π

    给定一个精度求圆周率π的近似值 给定公式:π/4=1-1/3+1/5-1/7+1/9-... public static void main(String[] args) { System.out.p ...

  6. 折纸---珠穆朗玛问题----简单for 循环

    一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)? package com.zuoye.test; public class Zhezhi { public s ...

  7. SAP computer之program counter

    Program counter The program is stored in memory with the first instruction at binary address 0000, t ...

  8. 【技术累积】【点】【java】【20】static关键字

    基础概念 是个修饰符: 修饰变量.常量.方法.代码块: 被修饰的为静态: 方便在没有创建对象的情况下来进行调用(方法/变量): static修饰的成员被所有的对象所共享: static优先于对象存在, ...

  9. Python标准模块--logging(转载)

    转载地址:http://www.cnblogs.com/zhbzz2007/p/5943685.html#undefined Python标准模块--logging 1 logging模块简介 log ...

  10. 关于MySQL,Oracle和SQLServer的特点以及之间区别

    关系型数据库:是指采用了关系模型来组织数据的数据库.简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织. 非关系型数据库:非关系型数据库严格上说不是 ...