英特尔8086微处理器是42年前的这个月推出的,1所以我拍了一些芯片的高分辨率芯片照片来庆祝。8086是有史以来最有影响力的芯片之一,它开启了x86架构,至今仍主导着台式机和服务器计算。通过观察芯片的硅片,我们可以看到这款芯片的内部特征。
下面的照片显示了8086的模具。在这张照片中,可以看到芯片的金属层,大部分遮挡住了芯片下面的硅。在芯片的边缘,细小的焊线提供了芯片上的焊盘和外部引脚之间的连接。(电源焊盘和接地焊盘各有两条焊线来支持更高的电流。)芯片在当时是很复杂的,包含2.9万个晶体管。
8086的模具照片,显示了金属层。在边缘周围,焊线连接到芯片上的焊盘。单击查看大的高分辨率图像。
为了检查芯片,我从下面的8086集成电路开始。大多数集成电路都是用环氧树脂封装的,所以必须用危险的酸来溶解封装。为了避免这种情况,我用陶瓷封装代替了8086。打开陶瓷封装很简单,只需用凿子沿着接缝轻敲,弹出陶瓷顶部即可。
去掉顶部后,可以在中心看到硅芯片。芯片通过细小的焊线连接到芯片的金属管脚上。这是一个40针的DIP封装,这是当时微处理器的标准封装。请注意,硅芯片本身只占芯片尺寸的一小部分。
我用冶金显微镜拍摄了几十张芯片的照片,并用一种名为Hugin(Details)的程序将它们缝合成一张高分辨率的图像。博客文章开头的照片显示了芯片的金属层,但这一层隐藏了下面的硅。
在显微镜下,可以看到8086的零件号和版权日期。焊线连接到焊盘。微码ROM的一部分在顶部。
对于下面的芯片照片,去除了金属层和多晶硅层,显示了具有29,000个晶体管的底层硅。2基于我的逆向工程,标签显示了主要功能模块。芯片左侧包含16位数据路径:芯片的寄存器和算术电路。加法器和上部寄存器组成与外部存储器通信的总线接口单元,下部寄存器和算术逻辑单元组成处理数据的执行单元。芯片右侧有控制电路和指令解码,以及控制每条指令的微码ROM。
8086的一个功能是指令预取,它通过在需要之前从存储器中获取指令来提高性能。这是由左上角的总线接口单元实现的,它访问外部存储器。上面的寄存器包括8086臭名昭著的段寄存器,它提供对比16位地址所允许的64千字节更大的地址空间的访问。对于每一次存储器访问,增加一个段寄存器和一个存储器偏移量以形成最终的存储器地址,为了提高性能,8086有一个单独的加法器来计算这些存储器地址,而不是使用ALU,上面的寄存器还包括6字节的指令预取缓冲器和程序计数器。
芯片的左下角容纳执行单元,执行数据操作。下部寄存器包括通用寄存器和索引寄存器,如堆栈指针。16位ALU执行算术运算(加法和减法)、布尔逻辑运算和移位。ALU不实现乘法和除法;这些操作是通过移位和加/减的顺序执行的,因此速度相对较慢。
计算机设计中最难的部分之一是创建控制逻辑,该逻辑告诉处理器的每个部分如何执行每条指令。1951年,莫里斯·威尔克斯(Maurice Wilkes)提出了微码的想法:不是从复杂的逻辑门电路构建控制逻辑,而是可以用称为微码的特殊代码取代控制逻辑。为了执行指令,计算机在内部执行几条由微码指定的更简单的微指令。有了微码,构建处理器的控制逻辑就变成了编程任务,而不是逻辑设计任务。
微码在20世纪60年代的大型计算机中很常见,但早期的微处理器如6502和Z-80没有使用微码,因为早期的芯片没有存储微码的空间。但后来的芯片,如8086和68000,利用芯片密度增加的优势,使用微码。这使得8086可以执行复杂的指令(如乘法和字符串复制),而不会使电路更加复杂。缺点是微码占据了8086的一大部分。3个。
微码ROM的一部分。通过晶体管的存在或不存在来存储位。晶体管是每个暗矩形上方和/或下方的白色小矩形。深色矩形连接到金属层中的水平输出总线。
上面的照片显示了微码ROM的一部分。在显微镜下,微码ROM的内容是可见的,位可以根据每个位置上有没有晶体管而读出。ROM由512条微指令组成,每条微指令有21位宽。每条微指令规定了数据在源和目的地之间的移动,还规定了一种微操作,可以是跳转、ALU操作、存储器操作、微码子例程调用或微码记账。微码相当有效;一条简单的指令(如递增或递减)由两条微指令组成,而更复杂的字符串复制指令由八条微指令实现。3个。
通往8086的道路并不像你想象的那样直接和有计划,它最早的祖先是数据点2200,1970年的一台台式计算机/终端。DataPoint2200出现在微处理器问世之前,所以它使用的是一个8位处理器,该处理器由一块装满单独TTL集成电路的电路板构成。Datapoint询问英特尔和德州仪器是否有可能用单个芯片取代那块芯片板。仿照DataPoint2200的体系结构,德州仪器创建了TMX 1795处理器(1971),英特尔创建了8008处理器(1972)。然而,Datapint拒绝了这些处理器。由于没有找到TMX 1795处理器的客户并放弃了它,英特尔决定将8008作为产品出售,从而创造了微处理器市场。英特尔继8008之后推出了改进的8080(1974)和8085(1976)处理器。(我在这里写了更多关于早期微处理器的内容。)。
1975年,英特尔的下一个大计划是8800处理器,该处理器被设计成英特尔在20世纪80年代的主要架构。这款处理器因其计划中的高性能而被称为微型大型机。它有一个全新的指令集,专为高级语言如Ada设计,并在硬件层面支持面向对象的编程和垃圾收集。不幸的是,这款芯片当时过于雄心勃勃,远远落后于计划。它最终于1981年推出(名为iAPX432),表现令人失望,在商业上也是失败的。
由于iAPX432落后于计划,英特尔在1976年决定,他们需要一种简单的权宜之计的处理器来销售,直到iAPX432准备就绪。英特尔迅速将8086设计为与1978年发布的8位8080 4有点兼容的16位处理器。1981年IBM个人计算机(PC)的引入使8086获得了重大突破。到1983年,IBM PC成为最畅销的计算机,并成为个人计算机的标准。IBM PC中的处理器是8088,它是IBM PC的变种。42年后。
为什么IBMPC选择Intel8088处理器?7根据IBMPC最初的工程师之一David Bradley博士的说法,一个关键因素是团队熟悉英特尔的开发系统和处理器。(他们在早期的IBM Datamaster台式计算机上使用过Intel8085。)另一位工程师刘易斯·埃格布雷希特(Lewis Eggebrecht)说,摩托罗拉68000是一个有价值的竞争对手6,但它的16位数据总线会显著增加成本(就像8086一样)。他还赞扬了英特尔更好的支持芯片和开发工具。5个。
无论如何,使用8088处理器的决定巩固了x86家族的成功。IBM PC AT(1984年)升级到兼容但功能更强大的80286处理器。1985年,x86系列使用80386升级到32位,然后在2003年使用AMD的皓龙架构升级到64位。x86架构仍然在扩展,具有诸如AVX-512矢量运算(2016年)这样的功能。但是,尽管有了所有这些变化,x86架构仍然保持了与原来的8086的兼容性。
8086芯片是用一种叫做NMOS的晶体管建造的。这种晶体管可以被认为是一个开关,控制源极和漏极两个区域之间的电流流动。这些晶体管是通过在硅衬底上掺杂杂质区域来建立的,从而产生具有不同电学特性的扩散区域。晶体管由栅极激活,栅极由一种特殊类型的硅制成,称为多晶硅,位于衬底硅的上方。晶体管由顶部的一层金属层连线在一起,形成完整的集成电路。这些晶体管是由位于衬底硅之上的一种特殊类型的硅制成的栅极激活的。晶体管通过顶部的金属层连接在一起,建立了完整的集成电路。
下面的特写照片显示了一些来自算术逻辑单元(ALU)的晶体管。掺杂的导电硅是深紫色的。白色条纹是多晶硅线穿过硅形成晶体管栅极的地方。(我数了23个晶体管,形成7个栅极。)晶体管形状复杂,使布局尽可能高效。此外,晶体管有不同的大小,以便在需要的地方提供更高的功率。请注意,相邻的晶体管可以共用源极或漏极,从而使它们连接在一起。请注意,相邻的晶体管可以共享源极或漏极,从而使它们连接在一起。此外,晶体管具有不同的大小,以便在需要的地方提供更高的功率。请注意,相邻的晶体管可以共享源极或漏极,从而使它们连接在一起。而小正方形是硅层和多晶硅之间的连接。
8086中一些晶体管的特写。在这张照片中,金属层和多晶硅层已经被移除。由于薄膜干涉,掺杂的硅具有深紫色的外观。
在英特尔发布其旗舰芯片iAPX 432之前,8086原本是一款临时的权宜之计处理器,它是由满是TTL芯片的主板构建而成的处理器的后代。但从这些卑微的开始,8086的架构(X86)出人意料地最终主导了台式机和服务器计算,直到现在。
虽然8086是一个复杂的芯片,但它可以在显微镜下进行检查,精确到单个晶体管。我计划在未来的博客文章8中更详细地分析8086,所以请在Twitter上关注我的更新,邮箱是@kensheriff。我还有一个RSS订阅源。这里有一张8086的额外高分辨率照片,上面去掉了金属和多晶硅;点击查看大图。
英特尔8086处理器的芯片照片。金属和多晶硅已经被移除,以显露出下面的硅。
为了暴露芯片的硅片,我用铠甲蚀刻玻璃蚀刻膏去除了二氧化硅层。然后,我用盐酸(池酸)从五金库中溶解了金属。我重复了这些步骤,直到裸露的硅仍然存在,露出了晶体管。-↩。
8086中的设计者使用了几种技术来保持微码的大小易于管理。例如,他们没有为字节操作和字操作实现单独的微码例程,而是重用微码并实现控制电路(带有逻辑门)来处理不同的大小。类似地,他们使用相同的微码来增加和减少指令,电路根据操作码进行加或减。微码在来自大芯片的新选项和专利4449184中有详细的讨论。↩↩。
8086机的设计目的是提供一条从8080机升级的途径,但体系结构有很大的差异,因此它们在汇编代码级别上不是二进制兼容的,甚至是不兼容的。8080机的汇编代码可以通过一个名为CONV-86的程序转换成8086汇编程序,这通常需要在之后进行人工清理。早期的许多8086程序都是8080程序的转换。↩。
埃格布雷希特是IBM PC的最初工程师之一,他在这里总结了选择8088作为IBM个人计算机接口的原因。他讨论了为什么其他芯片被拒绝:IBM微处理器缺乏良好的开发工具,而像6502或Z-80这样的8位处理器性能有限,将使IBM成为竞争对手的追随者。我得到的印象是,他更喜欢摩托罗拉68000。他得出结论说,8088对IBM来说是一个舒适的解决方案。它是当时可用的最好的处理器架构吗?可能不会,但历史似乎对这一决定很友好。";↩。
摩托罗拉68000处理器内部是32位处理器,有16位总线,通常被认为是比8086/8088更先进的处理器。它被用于SUN工作站(1982年)、Silicon Graphics IRIS(1984年)、AMIGA(1985年)和许多苹果系统。苹果在最初的苹果Macintosh(1984年)中使用68000,在Macintosh IIx(1988年)升级到68030,在Macintosh Quadra上使用68040。在8086推出近28年后,苹果转向英特尔x86处理器。现在,有传言称,苹果将从英特尔转向自己的基于ARM的处理器。--↩。
有关IBMPC开发的更多信息,请参阅布拉德利博士著的A Personal History of the IBMPC。-↩。
我没有对8086做更多分析的主要原因是,我在去除金属和多晶硅的同时对芯片进行了太长时间的蚀刻,所以我无法拍摄和研究多晶硅层。因此,我无法确定8086电路是如何连接在一起的。我已经订购了另一块8086芯片来重试。-↩