Intel 开创性的 8008 微处理器在 50 多年前首次生产。这是 Intel 的第一款 8 位微处理器,也是读者现在可能正在使用的 x86 处理器家族的祖先。(作者没办法找到 8008 的优质芯片照片,所以自己亲自打开了一个芯片并拍摄了一些详细的照片)这些新的芯片照片在这篇文章中,并附有关于 8008 内部设计的讨论。
下面的照片展示了 8008 封装内部的小硅芯片(点击获取更高分辨率的照片)。读者几乎看不到构成芯片的导线和晶体管。周围的方块是 18 个焊盘,它们通过微小的金属丝与外部 pin 脚相连。
可以在芯片的右边缘看到「8008」的文字,在底边看到「© Intel 1971」的文字。在右上角出现了「HF」的缩写,代表 Hal Feeney,他是芯片的逻辑设计和物理布局者。8008 的其他关键设计师还有 Ted Hoff、Stan Mazor 和 Federico Faggin。
下面的图表突出了芯片的一些基本功能模块。在左侧是 8 位算术/逻辑单元(ALU),它执行实际的数据计算。
ALU 使用两个临时寄存器来保存其输入值。这些寄存器在芯片上占据显著面积,不是因为它们复杂,而是因为它们需要大的晶体管来驱动通过 ALU 电路的信号。
在寄存器下面是进位预测电路。对于加法和减法,这个电路并行计算所有八个进位值以提高性能。由于低阶进位仅取决于低阶位,而高阶进位取决于多个位,因此该电路块呈三角形。
ALU 的三角形布局是不寻常的。大多数处理器将每个位的电路堆叠成一个规则的矩形(位切片布局)。然而,8008 有八个块(每个位一个),它们杂乱无章地排列以适应三角形进位发生器留下的空间,ALU 支持八种简单的操作。
在芯片的中心是指令寄存器和指令解码逻辑,它决定了每个 8 位机器指令的含义。解码是通过可编程逻辑阵列(PLA)完成的,这是一种门的排列,用于匹配位模式并为芯片的其余部分生成适当的控制信号,右侧是存储块。8008 的七个寄存器位于右上角,在右下角是地址堆栈,它由八个 14 位地址字组成。与大多数处理器不同,8008 的调用堆栈存储在芯片上,而不是内存中。程序计数器只是这些地址之一,使子程序调用和返回变得很简单,8008 使用动态内存进行这种存储。
芯片的物理结构与 8008 用户手册(如下)中的框图非常接近,芯片上的各个块几乎位于与框图中相同的位置。
芯片的照片展示了什么?它可以被视为三层。下面的图表展示了芯片的特写,指出了这些层。最顶层是金属线,这是最为显眼的特征。在下面的细节中,这些线路大部分是水平的,多晶硅层位于金属之下,在显微镜下呈现橙色。
芯片的基础是硅晶圆,在照片中呈现为紫灰色。纯硅本质上是一种绝缘体,其区域通过掺杂杂质来创造半导体硅。由于位于底部,硅层很难区分,但能够正常的看到掺杂硅和未掺杂硅之间的边界上有黑线。在照片中能够正常的看到几条垂直的硅「线」。
晶体管是芯片的关键组件,当一个多晶硅线穿过掺杂硅时,就形成了一个晶体管。在照片中,多晶硅在形成晶体管时呈现出较亮的橙色。
8008 的一个不便之处是它只有 18pin 脚,这使得芯片速度变慢且难以使用。8008 使用 14 位地址位和 8 位数据位,因此 18pin 脚对于每个信号来说都不够用。相反,该芯片有 8 个数据 pin 脚,这些 pin 脚在三个周期内被重复使用,以传输低地址位、高地址位和数据位。使用 8008 的计算机需要许多支持芯片来与这种不便的总线架构进行交互。
将芯片强行设计为 18 个 pin 脚没有充分的理由。其他制造商广泛使用 40 pin 脚或 48 pin 脚的包装,但 16 pin 脚在英特尔公司却「被奉为圭臬」,他们非常不情愿地才增加到了 18 pin 脚。几年后,当 8080 处理器问世时,英特尔已经接受了 40 pin 脚芯片。8080 处理器更加流行,部分原因是它采用了 40 pin 脚封装所允许的更简单的总线设计。
数据总线为芯片提供数据流。下面的图表展示了 8008 的 8 位数据总线 条数据线。数据总线连接到芯片上半部分外侧的 8 个数据 pin 脚,总线在左侧的算术逻辑单元(ALU)、中间的指令寄存器(IR)以及右侧的寄存器和堆栈之间运行,在左侧被分成两部分,分别沿着 ALU 的两侧延伸。
8008 微处理器的芯片照片。电源总线用红色和蓝色表示,数据总线 种彩虹色表示。
红色和蓝色线条显示了电源路由。电源路由是微处理器中一个被低估的方面,由于金属的电阻较低,因此电源在金属层中进行路由。但由于早期微处理器只有一层金属,因此必须仔细规划电源分配,以确保路径不交叉。上面的图表显示了蓝色的 Vcc 线和红色的 Vdd 线。电源通过左侧的 Vcc pin 脚和右侧的 Vdd pin 脚提供,然后分支成细小的、相互交织的线路,为芯片的所有部分供电。
为了详细展示芯片的外观,作者在下面的照片中放大了 8008 的寄存器文件。寄存器文件由 8x7 网格的动态随机存取存储器(DRAM)存储单元组成,每个存储单元使用三个晶体管来保存一个比特位。(能够正常的看到晶体管作为小矩形,其中橙色的多晶硅呈现出稍微更鲜艳的颜色。)每一行都是 8008 的七个 8 位寄存器之一(A、B、C、D、E、H、L)。在左侧,能够正常的看到七对水平线:每个寄存器的读取选择线和写入选择线。在顶部,能够正常的看到八条垂直线来读取或写入每个比特位的内容,以及五条较粗的线来提供 Vcc。使用 DRAM 作为寄存器(而不是更常见的静态锁存器)是一个有趣的选择。由于当时英特尔主要是一家内存公司,猜测他们选择 DRAM 是因为他们在该领域的专长。
8008 中的寄存器文件。该芯片有七个 8 位寄存器:A、B、C、D、E、H、L
8008 使用 PMOS 晶体管。简单地说,可以将 PMOS 晶体管视为两个硅线之间的开关,由多晶硅的栅极输入控制。当栅极输入为低电平时,开关闭合,它可以将其输出拉高。如果熟悉在像 6502 这样的微处理器中使用的 NMOS 晶体管,那么 PMOS 可能会有点令人困惑,因为一切都反过来了。
一个简单的 PMOS NAND 门可以按下面的方式构建。当两个输入都为高电平时,晶体管关闭,电阻将输出拉低。当任何输入为低电平时,晶体管将导通,将输出连接到+5V。因此,该电路实现了 NAND 门。为了与 5 伏 TTL 电路兼容,PMOS 门(因此 8008)使用不常见的电压供电:-9V 和+5V。
出于技术原因,电阻其实就是通过晶体管来实现的。下面的图表显示了晶体管是如何连接以作为下拉电阻的,右侧的细节显示了该电路在芯片上的样子,-9V 金属线在顶部,晶体管在中间,输出是底部的硅线。
在 PMOS 中,下拉电阻(左侧)是通过一个晶体管(中间)来实现的。右侧的照片显示了 8008 微处理器中的实际下拉电阻。
8008 的复杂故事始于 Datapoint 2200,这是一台于 1970 年推出的流行计算机,作为可编程终端推出。(有些人认为 Datapoint 2200 是第一台个人电脑。)Datapoint 2200 没用微处理器,而是使用由单个 TTL 芯片构建的板载 CPU。(这是微型计算机时代构建 CPU 的标准方式。)Datapoint 和英特尔决定可以用一个 MOS 芯片替换这个电路板,于是英特尔开始了 8008 项目来制造这个芯片。不久之后,德州仪器也同意为 Datapoint 制造单芯片处理器。这两款芯片都是为了与 Datapoint 2200 的 8 位指令集和架构兼容而设计的。
8008 处理器于 1970 年 10 月 25 日在《Electronic Design》杂志上首次公开描述。尽管英特尔声称该芯片将于 1971 年 1 月交付,但实际交付时间却比预期晚了一年多,直到 1972 年 4 月才完成。
大约在 1971 年 3 月,德州仪器完成了他们的处理器芯片,称为 TMC 1795。在推迟项目后,英特尔在大约 1971 年底完成了 8008 芯片。由于种种原因,Datapoint 拒绝了这两款微处理器,并基于更新的 TTL 芯片(包括 74181 ALU 芯片)构建了一个更快的 CPU。
德州仪器试图将 TMC 1795 处理器推销给福特等公司,但没有成功,最终放弃了这款处理器,转而专注于利润丰厚的计算器芯片。另一方面,英特尔将 8008 作为通用微处理器进行市场推广,这最后导致了 x86 架构的诞生。虽然德州仪器率先推出了 8 位处理器,但英特尔却成功地将他们的芯片推向市场,开创了微处理器行业。
上面的图表总结了 8008 及其相关处理器家族的「家谱」。黑色箭头表示向后兼容性,浅色箭头表示重要的架构变化。
跳转到 16 位的 8086 处理器并不是那么渐进的。虽然大多数 8080 汇编代码都能转换为在 8086 上运行,但并非轻而易举,因为指令集和架构都发生了根本性的变化。尽管如此,Datapoint 2200 的一些特性任旧存在于当今的 x86 处理器中。例如,Datapoint 2200 有一个串行处理器,每次处理一个字节的一位。由于需要首先处理最低位,所以 Datapoint 2200 是小端序的。为了兼容,8008 也是小端序的,英特尔的处理器至今仍然如此。Datapoint 2200 的另一个特性是奇偶校验标志,因为奇偶校验计算对于终端的通信很重要。奇偶校验标志一直延续到 x86 架构。
8008 在架构上与英特尔的 4 位 4004 处理器无关。8008 一定不是 4 位 4004 的 8 位版本。相似的名字纯粹是营销发明;在设计阶段,8008 有一个不那么引人注目的名字「1201」。
4004 和 8008 都使用了硅栅增强型 PMOS(Positive-channel Metal Oxide Semiconductor,正通道金属氧化物半导体),这是一种只短暂使用过的半导体技术。这使得这两款芯片在芯片制造技术中处于一个有趣的位置。
8008(以及现代处理器)使用的是 MOS 晶体管。这些晶体管在得到接受之前经历了漫长的道路,因为它们比 1960 年代大多数计算机中使用的双极晶体管速度慢且可靠性低。到了 1960 年代末,MOS 集成电路开始变得更普遍;当时的标准技术是带有金属栅的 PMOS 晶体管。晶体管的栅极由金属制成,同时也用于连接芯片上的组件。芯片基本上具有两层功能:硅本身和顶部的金属布线。这种技术被用于许多德州仪器的计算器芯片以及 TMC 1795 芯片(与 8008 具有相同指令集的芯片)。
使 8008 成为实用的关键创新是自对准栅——一种使用多晶硅栅而不是金属栅的晶体管。尽管这种技术是由费尔柴尔德(Fairchild)和贝尔实验室(Bell Labs)发明的,但英特尔推动了这一技术的发展。多晶硅栅晶体管比金属栅晶体管具有更加好的性能(由于复杂的半导体原因)。此外,添加多晶硅层使得芯片中的信号路由变得更容易,从而使芯片更加密集。下面的图表显示了自对准栅的好处:金属栅的 TMC 1795 比 4004 和 8008 芯片加在一起还要大。
英特尔的 4004 和 8008 处理器比德州仪器的 TMC 1795 芯片要密集得多,这主要是由于它们使用了自对准栅。
不久后,半导体技术再次进步,用 NMOS(Negative-channel Metal Oxide Semiconductor,负通道金属氧化物半导体)晶体管取代了 PMOS 晶体管。尽管 PMOS 晶体管最初更容易制造,但 NMOS 晶体管更快,因此一旦能可靠地制造 NMOS,它们就明显占据了优势。
NMOS 导致了更强大的芯片的出现,如英特尔的 8080 和摩托罗拉的 6800(都是 1974 年)。这一时期另一项技术改进是离子注入,用于改变晶体管的特性。这使得可以创建「耗尽型」晶体管用作上拉电阻。这些晶体管提高了芯片性能并降低了功耗。它们还允许创建使用标准五伏电源运行的芯片。
正如读者所看到的,20 世纪 70 年代是半导体芯片技术发生巨大变化的时期。4004 和 8008 的创造正是当时技术能力与市场需求交汇的结果。
第一步是打开芯片封装以暴露裸片。大多数芯片都装在环氧树脂封装中,这些封装可以用危险的酸来溶解。
由于想要避免煮沸硝酸,本文采用了更简单的方法。8008 也有陶瓷封装版本(如上所示),用凿子沿着接缝轻敲芯片,可以将两层陶瓷分开。下面的照片显示了陶瓷封装的下半部分,裸片已经暴露出来。大部分金属 pin 脚已经被移除,但它们在封装中的位置仍然可见。在裸片的右侧是一个小方块,它将地线(Vcc)连接到衬底。仍旧能看到几条微小的连接线,它们连接到裸片上。
一旦裸片暴露出来,就能够正常的使用显微镜拍摄照片。标准的显微镜是从下方照亮的,这对于裸片照片来说效果并不好。相反,作者使用了一台金相显微镜,它从上方照亮芯片。
为了拍摄照片,首先做着用显微镜拍摄了 48 张照片,然后使用 Hugin 拼接软件将它们组合成一张高分辨率的图像(细节)。最后,调整了图像的对比度,使芯片的结构更清晰可见。下面的原始图像(大约是通过显微镜看到的样子)用于比较。
虽然 8008 不是第一个微处理器,甚至不是第一个 8 位微处理器,但它确实具有革命性,引发了微处理器革命,并导致了 x86 架构的出现,该架构在未来几十年里主导了个人电脑。