X86架构


X86架构

文章插图
X86架构【X86架构】X86架构(The X86 architecture)是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标準编号缩写,也标识一套通用的计算机指令集合 。
基本介绍中文名:X86架构
外文名:The X86 architecture
发布时间:1978年6月8日
发布历史:41年
释义:微处理器执行的计算机语言指令集
发布公司:Intel
X86历史1978年6月8日,Intel发布了新款16位微处理器“8086”,也同时开创了一个新时代:x86架构诞生了 。x86指的是特定微处理器执行的一些计算机语言指令集,定义了晶片的基本使用规则,一如今天的x64、IA64等 。
X86架构

文章插图
Intel 8086处理器事实上,8086处理器发布之初并没有获得太多关注,开始也没有被大範围採用,但它在PC业界的地位怎幺形容都不为过,这就是因为它带来了x86 。它不仅成就了Intel如日中天的地位,也成为了一种业界标準,即使是在当今强大的多核心处理器上也能看到x86的身影 。在30年的发展史中,x86家族不断壮大,从桌面转战笔记本、伺服器、超级计算机、编写设备,期间还挫败或者限制了很多竞争对手的发展,让不少处理器厂商及其架构技术成为历史名字,即使有些封闭发展的也难以为继,比如苹果就已经放弃PowerPC了 。当然,我们不能忘了x86-64和EM64T的斗争 。2003年,AMD推出了业界首款64位处理器Athlon 64,也带来了x86-64,即x86指令集的64位扩展超集,具备向下兼容的特点 。当时Intel也在推行64位技术,但其IA64架构并不兼容x86,只是用在伺服器处理器Itanium上 。为了和AMD展开竞争,Intel也在2004年推出了自己的64位版x86,也就是EM64T 。对此,AMD和Intel互相指责对方,但无论如何至少推广了64位技术的发展和普及,也让x86技术得以继续发扬光大 。加州大学伯克利分校计算机科学教授、RISC发明人之一David Patterson表示:“这证明,x86指令集的弹性完全可以拿来对付Intel,所以即使Intel统治了整个市场,其他公司依然可以改变x86的发展方向 。”x86是一个intel通用计算机系列的标準编号缩写,也标识一套通用的计算机指令集合,X与处理器没有任何关係,它是一个对所有*86系统的简单的通配符定义,例如:i386, 586,奔腾(pentium) 。由于早期intel的CPU编号都是如8086,80286来编号,由于这整个系列的CPU都是指令兼容的,所以都用X86来标识所使用的指令集合如今的奔腾,P2,P4,赛扬系列都是支持X86指令系统的,所以都属于X86家族。X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU--i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87晶片系列数学协处理器则另外使用X87指令,以后就将X86指令集和X87指令集统称为X86指令集 。虽然随着CPU技术的不断发展,Intel陆续研製出更新型的i80386、i80486直到今天的Pentium 4(以下简为P4)系列,但为了保证电脑能继续运行以往开发的各类应用程式以保护和继承丰富的软体资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列 。另外除Intel公司之外,AMD和Cyrix等厂家也相继生产出能使用X86指令集的CPU,由于这些CPU能运行所有的为Intel CPU所开发的各种软体,所以电脑业内人士就将这些CPU列为Intel的CPU兼容产品 。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容 。当然在台式(携带型)电脑中并不都是使用X86系列CPU,部分伺服器和苹果(Macintosh)机中还使用美国DIGITAL(数字)公司的Alpha 61164和PowerPC 604e系列CPU 。Intel从8086开始,286、386、486、586、P1、P2、P3、P4都用的同一种CPU架构,统称X86 。X86展望英特尔推出X86架构已满40年了,同486相比,Pentium向前迈进了一大步,而PⅡ的前进步伐则没有这幺大了,X86 CPU的发展似乎已到了尽头 。英特尔非常清楚,是X86指令集限制了CPU性能的进一步提高,因此,他们正同惠普共同努力开发下一代指令集架构(Instruction Set Architecture,ISA): EPIC(Explicitly Parallel Instruction Computing,显性并行指令计算) 。对英特尔而言,IA-64(英特尔的64位架构)是下一个10到15年的架构 。新的ISA将使英特尔摆脱X86架构的限制,从而设计出超越所有现有RISC CPU和X86 CPU的新型处理器 。那幺EPIC的先进之处在什幺地方呢?为什幺英特尔会放弃使它成为晶片巨人的X86架构呢?一、IA-32的问题 我们知道,工程师可以通过提高每个时钟的指令执行数来提高性能,英特尔新的指令集的首要目的在于,让指令更容易解码,更容易并行执行 。这样就可以不受限制地开发新型处理器 。但是,对工程师而言,兼容8086的X86指令集一直是必须完成的任务 。毕竟,兼容前代产品是使英特尔成长壮大起来的关键因素,而且还可以保护用户原先的投资和使用数以百万计套用软体 。既然如此,为什幺又要放弃整个X86指令集重新开始呢?X86的不足在什幺地方?(1)可变的指令长度X86指令的长度是不定的,而且有几种不同的格式,结果造成X86 CPU的解码工作非常複杂,为了提高CPU的工作频率,不得不延长CPU中的流水线,而过长的流水线在分支预测出错的情况下,又会带来CPU工作停滞时间较长的弊端 。(2)暂存器的贫乏 X86指令集架构只有8个通用暂存器,而且实际只能使用6个 。这种情况同现代的超标量CPU极不适应,虽然工程师们採用暂存器重命名的技术来弥补这个缺陷,但造成了CPU过于複杂,流水线过长的局面 。(3)记忆体访问 X86指令可访问记忆体地址,而现代RISC CPU则使用LOAD/STORE模式,只有LOAD和STORE指令才能从记忆体中读取数据到暂存器,所有其他指令只对暂存器中的运算元计算 。在CPU的速度是记忆体速度的5倍或5倍以上的情况下,后一种工作模式才是正途 。(4)浮点堆叠 X87 FPU是目前最慢的FPU,主要的原因之一就在于X87指令使用一个运算元堆叠 。如果没有足够多的暂存器进行计算,你就不得不使用堆叠来存放数据,这会浪费大量的时间来使用FXCH指令(即把正确的数据放到堆叠的顶部) 。(5)4GB限制 这似乎不是问题,但是,在2000年前,主流PC只有4MB记忆体,现在绝大部分PC装备了2G以上的记忆体,是以前的512倍,所以,PC记忆体突破16GB绝对不会令人惊讶,大型伺服器已经使用了32GB以上的记忆体,突破64GB记忆体的情况已经出现 。(6)晶片变大 所有用于提高X86 CPU性能的方法,如暂存器重命名、巨大的缓冲器、乱序执行、分支预测、X86指令转化等等,都使CPU的晶片面积变得更大,也限制了工作频率的进一步提高,而额外集成的这些电晶体都只是为了解决X86指令的问题 。