科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条
科技百科
  • 人气指数: 8621 次
  • 编辑次数: 2 次 历史版本
  • 更新时间: 2009-10-03
方兴东
方兴东
发短消息
方兴东
方兴东
发短消息
相关词条
CISC和RISC纠葛
CISC和RISC纠葛
世界第一台笔记本电脑
世界第一台笔记本电脑
Commodore 64发布三十周年
Commodore 64发布三十周年
手工之作Apple I电脑开拍
手工之作Apple I电脑开拍
AMD海盗文化
AMD海盗文化
沃兹尼克回顾自己的创新
沃兹尼克回顾自己的创新
当乔布斯遇上盖茨
当乔布斯遇上盖茨
奥斯本幕后故事
奥斯本幕后故事
IMSAI故事
IMSAI故事
1979年的电子打字机
1979年的电子打字机
推荐词条
希拉里二度竞选
希拉里二度竞选
《互联网百科系列》
《互联网百科系列》
《黑客百科》
《黑客百科》
《网络舆情百科》
《网络舆情百科》
《网络治理百科》
《网络治理百科》
《硅谷百科》
《硅谷百科》
2017年特斯拉
2017年特斯拉
MIT黑客全纪录
MIT黑客全纪录
桑达尔·皮查伊
桑达尔·皮查伊
阿里双十一成交额
阿里双十一成交额
最新词条

热门标签

微博侠 数字营销2011年度总结 政务微博元年 2011微博十大事件 美国十大创业孵化器 盘点美国导师型创业孵化器 盘点导师型创业孵化器 TechStars 智能电视大战前夜 竞争型国企 公益型国企 2011央视经济年度人物 Rhianna Pratchett 莱恩娜·普莱契 Zynga与Facebook关系 Zynga盈利危机 2010年手机社交游戏行业分析报告 游戏奖励 主流手机游戏公司运营表现 主流手机游戏公司运营对比数据 创建游戏原型 正反馈现象 易用性设计增强游戏体验 易用性设计 《The Sims Social》社交亮 心理生理学与游戏 Kixeye Storm8 Storm8公司 女性玩家营销策略 休闲游戏的创新性 游戏运营的数据分析 社交游戏分析学常见术语 游戏运营数据解析 iPad风行美国校园 iPad终结传统教科书 游戏平衡性 成长类型及情感元素 鸿蒙国际 云骗钱 2011年政务微博报告 《2011年政务微博报告》 方正产业图谱 方正改制考 通信企业属公益型国企 善用玩家作弊行为 手机游戏传播 每用户平均收入 ARPU值 ARPU 游戏授权三面观 游戏设计所运用的化学原理 iOS应用人性化界面设计原则 硬核游戏 硬核社交游戏 生物测量法研究玩家 全球移动用户 用户研究三部曲 Tagged转型故事 Tagged Instagram火爆的3大原因 全球第四大社交网络Badoo Badoo 2011年最迅猛的20大创业公司 病毒式传播功能支持的游戏设计 病毒式传播功能 美国社交游戏虚拟商品收益 Flipboard改变阅读 盘点10大最难iPhone游戏 移动应用设计7大主流趋势 成功的设计文件十个要点 游戏设计文件 应用内置付费功能 内置付费功能 IAP功能 IAP IAP模式 游戏易用性测试 生理心理游戏评估 游戏化游戏 全美社交游戏规模 美国社交游戏市场 全球平板电脑出货量 Facebook虚拟商品收益 Facebook全球广告营收 Facebook广告营收 失败游戏设计的数宗罪名 休闲游戏设计要点 玩游戏可提高认知能力 玩游戏与认知能力 全球游戏广告 独立开发者提高工作效率的100个要点 Facebook亚洲用户 免费游戏的10种创收模式 人类大脑可下载 2012年最值得期待的20位硅谷企业家 做空中概股的幕后黑手 做空中概股幕后黑手 苹果2013营收 Playfish社交游戏架构

x86

  x86或80x86是英特尔Intel首先开发制造的一种微处理器体系结构的泛称。
  该系列较早期的处理器名称是以数字来表示,并以“86”作为结尾,包括Intel 8086、80186、80286、80386以及80486,因此其架构被称为“x86”。由于数字并不能作为注册商标,因此Intel及其竞争者均在新一代处理器使用可注册的名称,如Pentium。现时Intel把x86-32称为IA-32,全名为“Intel Architecture, 32-bit”。不过,由于x86包括16位的处理器,这样的命名也出现麻烦。

目录

[显示全部]

历史编辑本段回目录

  x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构。
  其他公司也有制造x86架构的处理器,计有Cyrix(现为VIA所收购)、NEC集团、IBM、IDT以及Transmeta。Intel以外最成功的制造商为AMD,其早先产品Athlon系列处理器的市场份额仅次于Intel Pentium。


  8086是16位处理器;直到1985年32位的80386的开发,这个架构都维持是16位。接着一系列的处理器表示了32位架构的细微改进,推出了数种的扩充,直到2003年AMD对于这个架构发展了64位的扩充,并命名为AMD64。后来Intel也推出了与之兼容的处理器,并命名为Intel 64。两者一般被统称为x86-64或x64,开创了x86的64位时代。
  值得注意的是Intel早在1990年代就与HP合作提出了一种用在安腾系列处理器中的独立的64位架构,这种架构被称为IA-64。IA-64是一种崭新的系统,和x86架构完全没有相似性;不应该把它与x86-64或x64弄混。
设计
  x86架构是重要地可变指令长度的CISC(复杂指令集计算机,Complex Instruction Set Computer)。字组(word, 4字节)长度的存储器访问允许不对齐存储器地址,字组是以低位字节在前的顺序储存在存储器中。向前兼容性一直都是在x86架构的发展背后一股驱动力量(设计的需要决定了这项因素而常常导致批评,尤其是来自对手处理器的拥护者和理论界,他们对于一个被广泛认为是是落后设计的架构的持续成功感到不解)。但在较新的微架构中,x86处理器会把x86指令转换为更像RISC的微指令再予执行,从而获得可与RISC比拟的超标量性能,而仍然保持向前兼容。x86架构的处理器一共有四种执行模式,分别是真实模式,保护模式,系统管理模式以及虚拟V86模式。


  在这篇简短的文章中出现的指令和寄存器助忆符号的名称,都在Intel文件中有所指定以及使用在 Intel组译器(Assembler)中(和兼容的,比如微软的MASM、Borland的TASM、CAD-UL的as386 等等)。一个以Intel语法指定的指令"mov al, 30h"与AT&T语法的"movb $0x30, %al"相当,都是会被转译为两个位的机器码"B0 30"(十六进制)。你可以发现在这段程序中的"mov"或 "al",都是原来的Intel助忆符号。如果我们想要的话,我们可以写一个组译器由代码'move immediate byte hexadecimally encoded 30 into low half of the first register'(移动立即值位十六进制编码30到第一个寄存器的低半部位),来产生相同的机器码。然而,传统上汇编器(Assembler)一直使用Intel的助忆符号。
  x86汇编语言会在x86 汇编语言文章中有更详细的讨论。

实时模式编辑本段回目录

  Intel 8086和8088有14个16位寄存器。其中四个(AX, BX, CX, DX)是通用目的(尽管每个寄存器都有附加目的;举个例子:只有CX可以被用来当作loop(循环)指令的计数器。)每个寄存器可以被当成两个分开的字节访问(因此BX的高位可以被当成BH,低位则可以当成BL)。除了这些寄存器,还有四个区段寄存器(CS、DS、SS、ES)。他们用来产生存储器的绝对地址。还有两个指针寄存器(SP是指向堆栈的底部,BP可以用来指向堆栈或存储器的其它地方)。两个指针寄存器(SI和DI)可以用来指向数组的内部。最后,有旗标寄存器(包含状态旗标比如进位、溢出、结果为零,等等)。以及IP是用来指向目前运行指令的地址。


  在实模式下,存储器的访问是被区段开来。为了得到最后20位的存储器地址,要将区段的地址往左移动4位,并且加上偏移的地址。因此,实模式下总共可以寻址的空间是2字节,或者是1MB,于1979年是相当让人印象深刻的象征。在实模式下有两种寻址模式:near和far。在 far模式,区段跟偏移都需要被指定;在near模式,只需要偏移模式被指定,而存储器区段是由适当的区段寄存器获得。以数据而言是使用DS寄存器,代码是CS寄存器,堆栈是SS寄存器。举个例子,如果DS是A000h且SI是5677h,DS:SI会指向计忆体的绝对地址DS × 16 + SI = A5677h
  在这种架构下,两对不同的区段/偏移可以指向一个相同的绝对地址。因此如果DS是A111h且SI是4567h,DS:SI会指向跟上一段相同的A5677h。除了duplicity之外,这种架构无法同时一次拥有4个以上的区段。此外,CS、DS和SS是为了程序正确功能而必须的,因此仅仅只有ES可以被用来指向其它的地方。这种模式原本是为了与Intel 8085兼容,导致程序设计师永无止尽的痛苦。
  除了以上所说的,8086也拥有8-bit的64K(另一种说法是16-bit的32K)输入输出(en:I/O)空间,以及一个由硬件支持的64K(一个区段)存储器堆栈。只有words(2字节)可以被推入到堆栈中。堆栈是由存储器的上端往下成长,他的底端是由SS:SP指向。有256个中断(interrupts),可以由硬件或是软件同时组成。中断是可以串连在一起,使用堆栈来储存返回被中断的程序地址。

   16位保护模式编辑本段回目录

  Intel 80286可以在不改变任何东西下,支持8086的实模式16位软件,然而它也支持额外的工作模式称为保护模式,可以将可寻址的物理内存扩充到16MB,可寻址的虚拟内存最大到 1GB。这是使用节区寄存器来储存在节区表格中的索引值。处理器中有两个这样的表格,分别为GDT和LDT,每一个可以储存最多8192个节区的描述子,每一个节区可以给予最大到64KB的存储器访问。节区表格提供一个24位的基底地址(base address),可以用此基底地址增加想要的偏移量来创造出一个绝对地址。此外,每一个节区可以被赋予四种权限等级中的一种(称为 "rings")。
  尽管这个推出的功能是一项进步,但是他们并没有被广泛地使用,因为保护模式的操作系统无法运行现有的实模式软件。这样的能力只有在随后80386处理器的虚拟86模式中出现。
  在同时,操作系统比如OS/2尝试使用类似乒乓的方法,让处理器在保护和实模式间切换。这样都会让计算机变慢且不安全,像是在实模式下的程序可以轻易地使计算机当机。OS/2也定义了限制性的程序设计规则允许"Family API"或"bound"程序可以在实模式或保护模式下运行。然而这是给原本为保护模式下设计的程序有关,反之则不然。保护模式程序并不支持节区选择子和物理内存之间的关系。有时候会错误地相信在16位保护模式下运行实模式的程序,导致IBM必须选择使用Intel保留给BIOS的中断调用。事实上这类的程序使用任意的选择子数值和使用在上面提到的“节区运算”的方式有关。
  这个问题也在Windows 3.x上出现。这个推出版本想要在16位保护模式下运行程序,而先前的版本只能在实模式下运行。理论上,如果Windows 1.x或2.x程序是写得“适当”且避免使用节区运算的方式,它就有可能在真实和保护模式两者下运行。Windows程序一般来说都会避免节区运算,这是因为Windows实现出软件的虚拟内存方式,及当程序不运行时候,搬移存储器中的代码和数据,所以操作绝对地址的方式是很危险的;当程序不运行时,被认为要保持存储器区块的“handles”,这样的handles已经非常相当于保护模式的选择子。在保护模式下的Windows 3.0运行一个旧的程序,会触发一个警告对话盒,建议在实模式下运行Windows(推测还是仍然可以使用扩充存储器,可能是在80386机器用EMM386模拟,因此它并不被局限于640KB)或是从厂商那更新到新的版本。好的行为之程序可能可以使用特别的工具来避免这样的对话盒。不可能有些GUI程序在16位保护模式下运行,且其它GUI程序在实模式运行,可能是因为这会需要两个分开的环境且会依于前面所提到的处理器在两个模式间的乒乓效应。从Windows 3.1版开始,实模式就消失了。

32位保护模式编辑本段回目录

  Intel 80386推出后,也许是到目前为止x86架构的最大跃进。除了需要值得注意的Intel 80386SX是32位架构但仅只有24位寻址(和16位数据总线)。除此之外其他架构都是32位 - 所有的寄存器、指令集、输出输入空间和存储器寻址。为了能够在后者所说的功能工作,要使用32位扩充的保护模式。然而不像286,386所有的区段可以使用32位的偏移量,即使存储器空间有使用区段,但也允许应用程序访问超过4GB空间而不需要区段的分隔。此外,32位保护模式提供分页的支持,是一种让虚拟内存得以实现的机制。
  没有新的通用寄存器被加入。所有16位的寄存器除了区段寄存器外都扩充为32位。Intel在寄存器的助记符号上加入“E”来表示(因此扩充的AX变成EAX,SI变成ESI,依此类推)。因为有更多的寄存器数量、指令、和运算单元,因此机器码的格式也被扩充。为了提供与先前的架构兼容,包含运行码的区段可以被标示为16或是32位的指令集。此外,特殊的前置符号也可以用来在16位的区段包含32位的脚本,反之亦然。
  分页跟区段的存储器访问是为了支持现在多任务操作系统所必须要的。Linux、386BSD、Windows NT和Windows 95都是一开始为386所发展,因为它是第一颗提供可靠地程序分离存储器空间的支持(每个程序拥有自己的寻址空间)以及可以在必要的情况下打断他们程序的运行(使用ring,一种x86保护模式下权力分级的名称)。这种386的基本架构变成未来所有x86系列发展的基础。
  Intel 80386数学辅助运算处理器也在集成到这个CPU之后的x86系列中,也就是Intel 80486。新的FPU可以帮助浮点数运算,对于科学计算和图形设计是非常重要。
  
系统管理模式

  Intel首次在80386SL之后引入其x86体系结构。

虚拟V86模式

MMX和之后

  1996年Intel的MMX(AMD认为这是矩阵数学扩充Matrix Math Extensions的缩写,但大多数时候都被当成Multi-Media Extension,而Intel从来没有官方宣布过词源)技术出现。尽管这项新的技术得到广泛宣传,但它的精髓是非常简单的:MMX定义了八个64位SIMD寄存器,与Intel Pentium处理器的FPU堆栈有相重叠。不幸的是,这些指令无法非常简单地对应到由原来C编译器所产生的脚本中。MMX也只局限于整数的运算。这项技术的缺点导致MMX在它早期的存在有轻微的影响。现今,MMX通常是用在某些2D影片应用程序中。
  
3DNow!

  1997年AMD推出3DNow!,是对于MMX的SIMD的浮点指令增强(针对相同的 MMX 寄存器)。尽管这些也没有解决编译器的难题,但这项技术的推出符合了PC上的3D休闲娱乐应用程序之崛起。3D游戏开发者和3D绘图硬件制造商在AMD的AMD K6和Athlon系列处理器上,使用3DNow!来帮助增加他们的效能。微软后来也在其开发的Direct X7.0中加入针对3DNow!的最佳化,使当时的Athlon处理器在3D游戏效能上首次全面超过对手 Intel 的Pentium 3处理器。
  
SSE

  在1999年Intel推出SSE指令集,增加了八个新的128-bit寄存器(不跟其他的寄存器重叠使用)。这些指令类似于AMD的3DNow!,主要是增加浮点数运算的SIMD指令。
  
SSE2

  2001年Intel推出SSE2指令集,增加了:
  完整地补充了整数指令(与MMX相似)到原来的SSE寄存器。 64位的SIMD浮点运算指令到原来的SSE寄存器。 第一个的增加导致MMX几乎是过时可以舍弃的,第二个则允许这些指令可以让传统的编译器现实地产生。
  
SSE3

  于2004年随着Pentium 4处理器的改版Prescott内核推出。SSE3增加特定的存储器和thread-handling指令来提升Intel超线程的效能,在科学计算方面也有增强。
  
SSE4

  2007年1月,Intel公开发表使用其45纳米制程"Penryn"芯片家族的PC和服务器。"Penryn"是这一系列依据英特尔Core微架构之笔记本电脑、台式机和服务器芯片家族的代号,首次正式发布时共有16款处理器,除了一款Intel Core 2 Extreme QX9650是针对普通台式机市场外,其余的双核Xeon 5200系列和四核5400系列都是服务器处理器。基本上Penryn是继Merom之后的缩小版Core 2 Duo,再加上47条新的SSE4指令集等额外配备。SSE4指令集之首次发表时间为2006年9月的英特尔开发者论坛(IDF,Intel Developer Forum)。
  另外,x86处理器制造厂商AMD也在该公司最新K10架构的Phenom处理器中,加入4条新的SSE4A指令集。注意,SSE4与SSE4A无法彼此兼容。
  
64位

  到2002年,由于32位特性的长度,x86的架构开始到达某些设计的极限。这个导致要处理大量的信息储存大于4GB会有困难,像是在数据库或是影片编辑上可以发现。
  Intel原本已经决定在64位的世代完全地舍弃x86兼容性,推出新的架构称为IA-64技术作为他的Itanium处理器产品线的基础。IA-64与x86的软件天生不兼容;它使用各种模拟形式来运行x86的软件,不过,以模拟方式来运行的效率十分低下,并且会影响其他程序的运行。
  AMD主动把32位x86(或称为IA-32)扩充为64位。它以一个称为AMD64的架构出现(在重命名前也称为x86-64),且以这个技术为基础的第一个产品是单内核的Opteron和Athlon 64处理器家族。由于AMD的64位处理器产品线首先进入市场,且微软也不愿意为Intel和AMD开发两套不同的64位操作系统,Intel也被迫采纳AMD64指令集且增加某些新的扩充到他们自己的产品,命名为EM64T架构(显然他们不想承认这些指令集是来自它的主要对手),EM64T后来被Intel正式更名为Intel 64。
  这是由非Intel的制造商所发起和设计的第一次重大的x86架构升级。也许更重要的,它也是第一次Intel实际上从外部来源接受这项本质的技术。
  
虚拟

  虚拟x86是很困难的,因为它的架构并未达到波佩克与戈德堡虚拟化需求。然而,有好几个商业的虚拟x86产品,比如VMware和微软的Virtual PC。Intel和AMD两者都有公开宣布未来的x86处理器将会有新的增强来容易达到更有效率的虚拟。Intel针对这项虚拟特性的代号称为"Vanderpool"和"Silvervale";AMD则使用"Pacifica"这个代号。

生产商编辑本段回目录

  有多间公司设计、生产并售卖x86处理器及其兼容产品,其中包括:
  英特尔(Intel) AMD Chips and Technologies Cyrix(被VIA收购) IBM IDT 国家半导体(NS,National Semiconductor) 日本电气(NEC) NexGen(被AMD收购) Rise Technology(被硅统技术收购) SGS-Thomson 硅统技术(SiS) 德州仪器(TI,Texas Instruments) 全美达(Transmeta) 联华电子(UMC) 威盛电子(VIA)

x86架构步入而立之年编辑本段回目录

30年前的1978年6月8日,Intel发布了新款16位微处理器“8086”,也同时开创了一个新时代:x86架构诞生了。
x86指的是特定微处理器执行的一些计算机语言指令集,定义了芯片的基本使用规则,一如今天的x64、IA64等。

事实上,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的发展方向。”

参考文献编辑本段回目录

→如果您认为本词条还有待完善,请 编辑词条

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
0

标签: x86

收藏到: Favorites  

同义词: 暂无同义词

关于本词条的评论 (共0条)发表评论>>

对词条发表评论

评论长度最大为200个字符。