一窥Intel第一款X86处理器的内部构造

源:半导体行业观察


在42年前,Intel 8086微处理器问世,为此我为芯片制作了一些高分辨率的裸die来庆祝。8086是有史以来最有影响力的芯片之一。它启动了x86体系结构,该体系结构如今仍占据着台式机和服务器计算的主导地位。通过查看芯片的片,我们可以看到该芯片的内部功能。

下面的照片显示了8086的die。在这张照片中,可以看到芯片的金属层,大部分掩盖了下面的。围绕裸片边缘的细焊线在芯片上的焊盘与外部引脚之间提供连接。(电源垫和接地垫都有两条键合线以支持更高的电流。)该芯片当时很复杂,包含29,000个晶体管。


查看芯片内部


为了检查芯片,我从下面的8086集成电路开始。大多数集成电路都是用环氧树脂封装的,因此必须使用危险的酸来溶解封装。为避免这种情况,我改用陶瓷封装的得8086。打开陶瓷包装很简单,只需用凿子沿接缝将其拍打,然后将陶瓷顶部弹出即可。

8086芯片采用40引脚陶瓷DIP封装

除去顶部后,可以在中心看到芯片。芯片通过微小的键合线连接到芯片的金属引脚。这是40针DIP封装,当时是微处理器的标准封装。请注意,芯片本身仅占芯片尺寸的一小部分。

8086芯片在集成电路封装的中间可见

使用金相显微镜,我拍摄了数十张die的照片,并使用名为Hugin的程序将它们缝制成高分辨率图像。文章开头的照片显示了芯片的金属层,但是该层隐藏了下面的

在显微镜下,可以看到8086部件号以及版权日期。键合线连接到焊盘。微码ROM的一部分在顶部

对于下面的doe照片,去除了金属和多晶层,展示出了具有29,000个晶体管的底层硅。,上面的标签是根据我的逆向工程显示的主要功能块。芯片的左侧包含16位数据路径:芯片的寄存器和算术电路。加法器和高位寄存器构成与外部存储器通信的总线接口单元,而低位寄存器和ALU构成处理数据的执行单元。芯片的右侧具有控制电路和指令解码,以及控制每个指令的微码ROM。

显示主要功能块的8086微处理器die。

8086的一项功能是指令预取,它通过在需要之前从内存中提取指令来提高性能。这是通过左上角的总线接口单元实现的,该接口访问了外部存储器。高位寄存器包括8086的臭名昭著的段寄存器,该段寄存器提供对比16位地址所允许的64 KB更大的地址空间的访问。对于每次存储器访问,都添加了段寄存器和存储器偏移量以形成最终的存储器地址。为了提高性能,8086有一个用于这些存储器地址计算的单独加法器,而不是使用ALU。高位寄存器还包括六个字节的指令预取缓冲区和程序计数器

芯片的左下角装有执行单元,该执行单元执行数据操作。低位寄存器包括通用寄存器和索引寄存器,例如堆栈指针。16位ALU执行算术运算(加法和减法),布尔逻辑运算和移位。ALU不执行乘法或除法;这些操作是通过一系列移位和加/减操作执行的,因此它们相对较慢。

微码


计算机设计中最困难的部分之一就是创建控制逻辑,该逻辑告诉处理器的每个部分如何执行每个指令。1951年,莫里斯·威尔克斯(Maurice Wilkes)提出了微代码(Microcode)的思想:代替由复杂的逻辑门电路构建控制逻辑,可以用称为微代码的特殊代码代替控制逻辑。为了执行一条指令,计算机在内部执行一些更简单的微指令,这些指令由微码指定。使用微码,构建处理器的控制逻辑成为编程任务,而不是逻辑设计任务。

微代码 在1960年代的大型机计算机中很常见,但是早期的微处理器(例如6502和Z-80)不使用微代码,因为早期的芯片没有存储微代码的空间。但是,后来的芯片(例如8086和68000)使用了微码,从而利用了增加的芯片密度。这使8086能够实现复杂的指令(例如乘法和字符串复制),而不会使电路更加复杂。不利的一面是微代码占用了8086的大部分die。微码在die照片的右下角可见。

微码ROM的一部分

通过存在或不存在晶体管来存储位。晶体管是每个黑色矩形上方和/或下方的白色小矩形。深色矩形是到金属层中水平输出总线的连接。

上面的照片显示了微码ROM的一部分。在显微镜下,可以看到微码ROM的内容,并且可以根据每个位置上是否存在晶体管来读出位。ROM由512条微指令组成,每条21位宽。每个微指令指定数据在源和目标之间的移动。它还指定了微操作,可以是跳转,ALU操作,内存操作,微代码子例程调用或微代码簿记。微码非常有效;一个简单的指令(例如递增或递减)由两个微指令组成,而更复杂的字符串复制指令则由八个微指令实现。

8086的历史


通往8086的道路并不像您预期的那样直接和有规划性。它的最早祖先是1970年的台式计算机/终端Datapoint2200。Datapoint2200在创建微处理器之前就已使用,因此它使用的8位处理器是由一块装有单个TTL集成电路的电路板构成的。Datapoint询问英特尔德州仪器(TI),是否有可能用单个芯片替换那块芯片。为此英特尔复制了Datapoint 2200的体系结构后,创建了TMX 1795处理器(1971年),英特尔创建了8008处理器(1972年)。但是,Datapoint拒绝了这些处理器,这是一个影响巨大的决定。因为德州仪器(TI)找不到TMX 1795处理器的客户,并放弃了该产品,但英特尔还是决定将8008作为产品出售,从而建立了微处理器市场。英特尔紧随8008之后,改进了8080(1974)和8085(1976)处理器。

1975年,英特尔的下一个重大计划是将8800处理器设计为1980年代英特尔的主要架构。由于计划的高性能,该处理器被称为“微型大型机”。它具有为Ada等高级语言设计的全新指令集,并在硬件级别支持面向对象的编程和垃圾回收。不幸的是,该芯片当时过于雄心勃勃,大大落后于计划。它最终于1981年以iAPX 432的身份推出,但性能令人失望,且在商业上也失败了。

由于iAPX 432的进度落后,英特尔在1976年决定在iAPX 432就绪之前就需要一个简单的,权宜之计的处理器来销售。英特尔快速设计8086为16位处理器的8位8080,有些兼容在1978年公布的8086有其与引进的IBM个人计算机(PC)在1981年的大突破到了1983年,IBM的PC是最畅销的计算机,并成为个人计算机的标准。IBM PC中的处理器是8088,它是具有8位总线的8086的变体。IBM PC的成功使8086体系结构成为持续了42年的标准。

IBM PC为什么选择Intel 8088处理器?据IBM最初的PC工程师之一David Bradley博士说,一个关键因素是团队对Intel开发系统和处理器的熟悉程度。(他们在较早的IBM Datamaster台式计算机 中使用了Intel8085 。)另一位工程师Lewis Eggebrecht表示,Motorola 68000是值得竞争的产品,但其16位数据总线将大大增加成本(与8086一样)。他还称赞了英特尔更好的支持芯片和开发工具。

无论如何,使用8088处理器的决定巩固了x86系列的成功。IBM PC AT(1984)升级到兼容但功能更强大的80286处理器。1985年,x86系列产品的80386移植到32位,然后 在2003年采用AMD Opteron架构的移植到 64位。x86体系结构仍在通过AVX-512 矢量操作(2016)等功能进行扩展 。但是即使进行了所有这些更改,x86体系结构仍保留了与原始8086的兼容性

晶体管


8086芯片是用一种称为NMOS的晶体管构建的。可以将晶体管视为开关,控制在两个称为源极和漏极的区域之间的电流。这些晶体管是通过在衬底的区域中掺杂杂质以创建具有不同电特性的“扩散”区域而构建的。晶体管由栅极激活,该栅极由一种特殊类型的(称为多晶硅)制成,该硅层位于衬底硅上方。晶体管通过顶部的金属层连接在一起,构成了完整的集成电路。尽管现代处理器可能具有十几个金属层,但8086却只有一个金属层。

集成电路MOSFET的结构

下面的特写照片显示了算术逻辑单元(ALU)的一些晶体管。掺杂的导电具有深紫色。白色条纹是多晶硅线与硅相交的地方,形成晶体管的栅极。(我算出形成7个门的23个晶体管。)这些晶体管具有复杂的形状,以使布局尽可能高效。另外,晶体管具有不同的尺寸以在需要时提供更高的功率。请注意,相邻的晶体管可以共享源极或漏极,从而将它们连接在一起。圆圈是硅层和金属布线之间的连接(称为过孔),而小方块是硅层和多晶硅之间的连接。


结论


8086在英特尔发布其旗舰iAPX 432芯片之前被用作临时权宜的处理器,并且是由装有TTL芯片的主板构建的处理器的后代。但是从这些不起眼的开始,到现在为止,8086的体系结构(x86)意外地结束了对台式机和服务器计算的控制。

尽管8086是一个复杂的芯片,但可以在显微镜下检查单个晶体管。这是8086去除金属和多晶后的高分辨率照片。





公众号ID:imecas_wx