我们都认为CPU是打算机的“大脑”,但这到底是什么意思呢?用数十亿个晶体管让你的打算机事情到底是怎么回事?在这篇文章中,我们将专注于打算机硬件设计,涵盖打算机事情事理的来龙去脉。
文章将涵盖打算机架构、处理器电路设计、超大规模集成电路(VLSI)、芯片制造和未来的打算趋势。如果你一贯对处理器内部事情事理的细节感兴趣,请连续关注,由于这便是你想要理解的内容。

CPU的事理

我们将从一个非常高的层次开始,理解处理器的功能,以及各个组成部分在功能设计中是如何组合在一起的。这包括处理器内核、内存层次构造、分支预测等等。首先,我们须要知道CPU的基本定义。最大略的阐明是CPU遵照一组指令,对一组输入实行某些操作。例如,可能是从内存中读取一个值,然后将其加上另一个值,末了将结果存储在不同位置的内存中。如果前一次打算的结果大于零,那么也可能是更繁芜的事情,如将两个数字相除。
当你想要运行一个像操作系统或游戏这样的程序时,程序本身便是CPU要实行的一系列指令。这些指令从内存中加载,并在一个大略的处理器上逐一实行,直到程序完成。当软件开拓职员用高等措辞(如C++或Python)编写程序时,处理器无法理解。它只能理解1和0,以是我们须要一种办法来表示这种格式的代码。
程序被编译成一组称为汇编措辞的低级指令,作为指令集体系构造(ISA)的一部分。这是CPU用来理解和实行的一组指令。一些最常见的ISA是x86、MIPS、ARM、RISC-V和PowerPC。就像用C++编写函数的语法与用Python编写相同函数的语法不同一样,每种ISA也有不同的语法。
这些ISA可以分为两大类:固定长度和可变长度。RISC-V ISA利用固定长度的指令,这意味着每条指令中一定数量的预定义位决定了它是哪种类型的指令。这与x86不同,x86利用可变长度指令。在x86中,指令可以按照不同的办法进行编码,并且针对不同的部分利用不同的位数。由于这种繁芜性,x86 CPU中的指令解码器常日是全体设计中最繁芜的部分。
固定长度的指令许可更随意马虎的解码,由于它们有规则的构造,但限定了ISA可以支持的总指令数。虽然普通版本的RISC-V架构有大约100条指令,而且是开源的,但是x86是专有的,没有人知道究竟有多少条指令。人们常日认为有几千条x86指令,但确切的数字并不公开。 只管ISA之间存在差异,但它们都具有基本相同的核心功能。
一些RISC-V指令的示例。右边的操作码是7位,它决定了指令的类型。每条指令还包含要利用的寄存器和要实行的功能的位。这便是汇编指令如何被分解成二进制以便CPU理解。
现在我们准备好打开打算机,开始运行程序。指令的实行实际上有几个基本部分,这些部分通过处理器的许多阶段分解。
第一步是将指令从内存提取到CPU中开始实行。第二步对指令进行解码,以便CPU能够确定它是什么类型的指令。有很多类型,包括算术指令、分支指令和内存指令。一旦CPU知道它正在实行的指令类型,就从CPU中的存储器或内部寄存器网络指令的操作数。如果你想把数字A和数字B相加,在你真正知道A和B的值之前不能进行相加。大多数当代处理器都是64位的,这意味着每个数据值的大小都是64位。
64位是指CPU寄存器、数据路径,以及内存地址的宽度。对付普通用户来说,这意味着一台打算机一次可以处理多少信息,最好与较小的32位体系构造比较较来理解。64位体系构造一次处理的信息位数是32位的两倍。
在CPU有了指令的操作数之后,就移动到实行阶段,在此阶段对输入实行操作。可能是将数字相加,对数字实行逻辑操作,或者只是通报数字而不对其进行修正。打算结果后,可能须要访问内存来存储结果,或者CPU可以将值保存在其内部寄存器中。存储结果后,CPU将更新各个元素的状态,然后转到下一条指令。
当然,这种描述是极大的简化,大多数当代处理器将把这几个阶段分解为20个或更多更小的阶段,以提高效率。这意味着只管处理器将在每个周期中启动和完成多个指令,但是任何一条指令从开始到结束可能须要20个或更多的周期。这个模型常日被称为流水线,由于它须要一段韶光来添补流水线,让液体通过流水线,但是一旦流水线满了,就会得到一个恒定的输出。
4级流水线示例。彩色方框表示相互独立的指令。(图片来源:维基百科)
指令经由的全体周期是一个非常精心编排的过程,但并非所有指令都可以同时完成。例如,加法非常快,而除法或从内存加载可能须要数百个周期。大多数当代处理器都是无序实行的,而不是在一条缓慢的指令完成时使全体处理器停滞运行。这意味着处理器将确定在给定时间实行哪条指令最有益,并缓冲其他未准备好的指令。如果当前指令尚未就绪,则处理器可以在代码中向前跳转,以查看是否有其他指令准备就绪。
除了无序实行之外,范例的当代处理器还采取了所谓的超标量体系构造(superscalar architecture)。这意味着在任何时候,处理器都在流水线的每个阶段同时实行许多指令。它可能还在等待数百条指令开始实行。为了能够一次实行许多指令,处理器将在每个流水线阶段中包含多个副本。如果处理器看到两条指令已经准备好实行,并且它们之间没有依赖关系,那么它将同时实行这两条指令,而不是等待它们分别完成。这种方法的一个常见实现称为同步多线程(SMT),也称为超线程。英特尔和AMD处理器目前支持双向SMT,而IBM已开拓出支持多达八路SMT的芯片。
为了完成这种精心编排的实行,处理器除了基本核心之外还有许多额外的元素。在一个处理器中有数百个单独的模块,每个模块都有特定的用场,但我们将只大略先容一下基本的功能。两个最大和最有益的是缓存和分支预测器。我们不会涉及重新排序缓冲区、寄存器别名表和保留站这些构造。
缓存的目的常常令人困惑,由于它们像RAM或SSD一样存储数据。缓存的不同之处在于它们的访问延迟和速率。只管RAM非常快,但对付CPU来说,它的速率慢了几个数量级。RAM可能须要数百个周期才能对数据做出相应,处理器可能会陷入无事可做的田地。如果数据不在RAM中,则可能须要数万个周期才能访问SSD上的数据。没有缓存,我们的处理器就会陷入停顿。
处理器常日具有三级缓存,形成所谓的内存层次构造。L1缓存最小且速率最快,L2位于中间,L3是最大且最慢的缓存。在层次构造中的缓存之上是小型寄存器,在打算期间存储单个数据值。这些寄存器是系统中速率最快的存储设备。当编译器将高等程序转换成汇编措辞时,它将确定利用这些寄存器的最佳方法。
当CPU从内存中要求数据时,它将首先检讨该数据是否已经存储在L1缓存中。如果是,则可以在几个周期内快速访问数据。如果不存在,CPU将检讨L2缓存并随后搜索L3缓存。缓存的实现办法常日对核心是透明的。核心只须要在指定的内存地址中要求一些数据,层次构造中的任何级别都将相应它。当我们进入内存层次构造的后续阶段时,大小和延迟常日会增加几个数量级。末了,如果CPU在任何缓存中都找不到它要查找的数据,那么它就会进入主内存(RAM)。
在范例的处理器上,每个核心将有两个L1缓存:一个用于数据缓存,一个用于指令缓存。L1缓存的总容量常日在100KB旁边,大小可能因芯片和代际而异。每个核心常日也有一个L2缓存,只管在某些体系构造中,它可能在两个核心之间共享。L2缓存常日为几百KB。末了,还有一个L3缓存在所有核心之间共享,大小为几十MB。
当处理器实行代码时,它最常用的指令和数据值将被缓存。这极大地加快了实行速率,由于处理器不须要不断地访问主存来获取所需的数据。在本系列的第2部分和第3部分中,我们将更多地谈论如何实现这些内存系统。
除了缓存之外,当代处理器的另一个关键组件是精确的分支预测器。分支指令类似于处理器的“if”语句。如果条件为真,将实行一组指令,如果条件为假,将实行另一组指令。例如,你可能想比较两个数字,如果它们相等,则实行一个函数,如果它们不同,则实行另一个函数。这些分支指令非常常见,大约占程序中所有指令的20%。
从表面上看,这些分支指令彷佛没什么问题,但对付处理器来说,它们实际上非常具有寻衅性。由于在任何时候,CPU可能同时实行10条或20条指令,以是知道要实行哪条指令是非常主要的。可能须要5个周期来确定当前指令是否为分支,其余须要10个周期才能确定条件是否为真。在此期间,处理器可能已经开始实行许多附加指令,乃至不知道这些指令是否是要实行的精确指令。
为理解决这个问题,所有当代高性能处理器都利用了一种称为“推测”( speculation)的技能。这意味着处理器将跟踪分支指令,并预测是否将采取分支。如果预测是精确的,那么处理器已经开始实行后续指令,因此这将带来性能提升。如果预测禁绝确,那么处理器将停滞实行,删除已经开始实行的所有缺点指令,并从精确的位置重新开始。
这些分支预测器(branch predictors )是机器学习的一些早期形式,由于预测器在运行过程中学习分支的行为。如果预测缺点太多,它就会开始学习精确的行为。几十年来对分支预测技能的研究已经使当代处理器的准确率超过90%。
虽然推测带来了巨大的性能提升,由于处理器可以实行准备好的指令,而不必在繁忙的指令上排队,但也暴露了安全漏洞。著名的幽灵攻击(Spectre attack)便是利用了分支预测和预测中的漏洞。攻击者利用经分外设计的代码来使处理器推测性地实行会泄露内存值的代码。推测的某些方面必须重新设计,以确保数据不会透露,这导致性能略有低落。
在过去的几十年里,当代处理器的体系构造已经取得了长足的进步。创新和奥妙的设计带来了更高的性能和对底层硬件的更好利用。不过,CPU制造商对其处理器中的技能非常保密,因此不可能确切知道其内部究竟发生了什么。话虽如此,打算机事情的基本事理在所有处理器上都是标准化的。英特尔可能会增加他们的秘密调度以提高缓存命中率,AMD可能会添加一个高平分支预测器,但他们都是完成相同的任务。
CPU设计过程
既然我们已经理解了处理器在高层次上的事情事理,现在是深入理解内部组件是如何设计的时候了。
你可能知道,处理器和其他大多数数字技能都是由晶体管构成的。思考晶体管的最大略方法是把它想象成有三个引脚的可控开关。当栅极打开时,电就可以通过晶体管。当栅极关闭时,电流不能流动。就像你墙上的电灯开关一样,但是要比电灯开关小得多,速率也快得多,而且可以用电来掌握。
当代处理器中利用的晶体管紧张有两种:PMOS和NMOS。NMOS晶体管在栅极充电或设置为高电平时许可电流流过,PMOS晶体管在栅极放电或设置为低电平时许可电流流过。通过将这些类型的晶体管以互补的办法组合起来,我们可以创建CMOS逻辑门。在本文中,我们不会详细谈论晶体管的事情事理,但我们将在本系列的第3部分中谈论它。
逻辑门是一种大略的设备,它接管输入,实行一些操作,并输出结果。例如,只有当且仅当门的所有输入都处于打开状态时,与门才会打开其输出。如果输入关闭,那么反相器或非门将打开其输出。我们可以将这两者结合起来,创建一个与非门。当且仅当所有输入都不打开时,它才打开其输出。还有其他具有不同逻辑功能的门,如或门、或非门、异或门和同或门。
下面我们可以看到两个基本的逻辑门是如何从晶体管开始设计的:一个反相器和一个与非门。在反相器中,顶部有一个PMOS晶体管连接到VDD,底部有一个NMOS晶体管连接到GND。PMOS晶体管的画法是一个小圆圈连接到栅极上。我们说过,PMOS器件在输入关闭时导通,NMOS器件在输入打开时导通,以是很随意马虎看到输出旗子暗记总是与输入旗子暗记相反。再看看与非门,我们看到它须要四个晶体管,只要至少有一个输入是关的,输出就会打开。设计更前辈的逻辑门和处理器内部其他电路也是这种过程——将晶体管连接成这样的大略网络。
由于组件就像逻辑门一样大略,以是很丢脸到它们如何变成一台正常运行的打算机。此设计过程涉及到将多个门组合在一起,以创建一个可以实行大略功能的小型器件。然后,你可以连接许多这样的器件,形成能够实行更高等功能的器件。组合单个组件以创建事情设计的过程正是当今用于创建当代芯片的过程。唯一不同的是,一个当代芯片有数十亿个晶体管。
举一个大略的例子,我们将看到一个基本的加法器——1位全加器。它接管三个输入——A、B和输入进位(Carry-In),并产生两个输出——和(Sum)与输出进位(Carry-Out)。基本设计利用五个逻辑门,它们可以连接在一起,创建你想要的任意大小的加法器。当代设计通过优化一些逻辑和进位旗子暗记来改进这一点,但基本事理仍旧相同。
如果A、B二者之一处于打开状态,或者存在输入进位旗子暗记,且A、B全开或全关,那么输出和便是开。输出进位有点繁芜。当A和B同时开时,或者存在输入进位旗子暗记且A、B二者之一处于打开状态,此时输出进位是有效的。要连接多个1位加法器以形成更宽的加法器,只需将前一位的输出进位连接到当前位的输入进位。电路越繁芜,逻辑就越混乱,但这是最大略的两个数字相加的方法。当代处理器利用更繁芜的加法器,但是这些设计太繁芜了,无法像这样进行概述。除了加法器,处理器还包含所有这些操作的除法、乘法和浮点运算的单元。
将一系列这样的门组合起来对输入实行某种功能称为组合逻辑(Combinational Logic)。然而,这种逻辑并不是打算机中唯一存在的东西。如果我们不能存储数据或跟踪任何东西的状态,那么就没有多大用途。为此,我们须要具有存储数据能力的时序逻辑。
时序逻辑是通过仔细连接反相器和其他逻辑门来构建的,使得它们的输出反馈到门的输入。这些反馈回路用于存储一位数据,称为静态RAM或SRAM。它被称为静态RAM而不是动态DRAM的缘故原由是,存储的数据总是直接连接到正电压或GND。
实现单个SRAM的标准方法是利用如下所示的6个晶体管。顶部旗子暗记(标记为WL,Word Line)是地址,当它被使能时,存储在这个1位单元中的数据被发送到的位线(标记为BL,Bit Line)。BLB输出被称为Bit Line Bar,登基线的翻转值。你该当认识晶体管的两种类型,并且M3、M1与M4、M2一起构成了一个反相器。
SRAM用于在处理器中构建超高速缓存和寄存器。它非常稳定,但是须要6到8个晶体管来存储每一位数据。这使得它与DRAM比较,在本钱、繁芜性和芯片面积方面对盆本钱极高。另一方面,动态RAM将数据存储在微型电容中,而不是利用逻辑门。它被称为动态的缘故原由是电容器的电压可以动态变革,由于它没有连接到电源或GND。只有一个晶体管用于访问存储在电容器中的数据。
由于DRAM每位只须要一个晶体管,而且设计非常可扩展,因此可以密集且廉价地进行封装。DRAM的一个缺陷是电容器中的电荷太小,须要不断刷新。这便是为什么当你关掉打算机时,电容全部耗尽,RAM中的数据丢失。
英特尔、AMD和英伟达等公司当然不会发布它们的处理器事情事理图,以是对付当代处理器,无法展示完全的图纸。但是,这个大略的加法器该当可以让您很好地理解如何将处理器中最繁芜的部分拆分为逻辑门、存储单元,然后再拆分为晶体管。
既然我们已经知道了处理器的一些组件是如何布局的,那么我们就须要弄清楚如何将所有东西连接起来并同步它们。处理器中的所有关键部件都连接到时钟旗子暗记上。它以预定义的间隔(称为频率)在“高”和“低”之间交替。处理器内部的逻辑常日在时钟从低到高时切换数值并实行打算。通过将所有数据同步在一起,我们可以确保数据总是在精确的韶光到达,这样处理器中就不会涌现任何故障。
你可能听说过,可以提高处理器的时钟(称为超频)以提高其性能。这种性能提升来自于处理器内部晶体管和逻辑的切换速率比设计的要快。由于每秒有更多的周期,以是可以完成更多的事情,处理器将具有更高的性能。不过在某种程度上,这是精确的。当代处理器常日运行在3.0GHz~4.5GHz之间,而在过去的十年中,这种情形彷佛并没有改变。就像金属链的强度只取决于最弱的一环一样,处理器的运行速率也只能和最慢的部分一样快。在每个时钟周期结束时,处理器中的每个部件都须要完成其操作。如果时钟太快,有某个部分还没有完成,处理器就无法事情。设计职员将这个最慢的部分称为关键路径,它设置了处理器运行的最大频率。超过一定的频率,晶体管无法足够快地开关,并将开始涌现故障或产生禁绝确的输出。
通过提高处理器的电源电压,我们可以加快晶体管的开关速率,但这也只能在一定程度上起浸染。如果我们施加太高的电压,就有烧坏处理器的危险。当我们提高处理器的频率或电压时,它总会产生更多的热量,并花费更多的能量。这是由于处理器的功率与频率成正比,与电压的平方成正比。为了确定处理器的功耗,我们常日认为每个晶体管都是一个小电容,当它改变值时必须充电或放电。
功率传输是处理器非常主要的一部分,在某些情形下,芯片上一半的物理引脚可能仅用于电源或接地。一些芯片在满载时可能会产生超过150安培的电流,这些电流必须非常小心地管理。从这个角度看,CPU每单位面积产生的热量要比核反应堆多。
当代处理器中的时钟约占其总功率的30%~40%,由于它非常繁芜,必须驱动许多不同的器件。为了节约能源,大多数低功耗设计会在芯片不该用的时候关闭芯片的某些部分。这可以通过关闭时钟(称为时钟门控)或关闭电源(称为电源门控)来完成。
时钟给处理器的设计带来了另一个寻衅,由于随着时钟频率的不断增加,物理定律开始阻碍它的发展。只管光速非常快,但对付高性能处理器来说,光速还不足快。如果你将时钟连接到芯片的一端,当旗子暗记到达另一端时,它会涌现相称严重的不同步。为了使芯片的所有部分保持相同韶光,时钟利用所谓的H-Tree来分配。这是一种构造,可确保所有端点与中央的间隔完备相同。
在一个芯片中设计每一个晶体管、时钟旗子暗记和电源连接看起来或许非常繁琐和繁芜,这肯定是真的。只管英特尔、高通和AMD等公司有成千上万名工程师,但他们不可好手动设计芯片的各个方面。为了在如此大的规模上组装芯片,他们利用了各种前辈的工具来为他们天生设计和事理图。这些工具常日会对组件该当实行的操作进行高等别的描述,并确定知足这些哀求的最佳硬件配置。最近涌现了一种名为“高等综合”的技能,它许可开拓职员在代码中指定他们想要的功能,然后让打算机找出如何在硬件中以最佳办法实现它。
正如你可以通过代码定义打算机程序一样,设计职员也可以通过代码定义硬件。Verilog和VHDL等措辞许可硬件设计职员表达他们正在制作的任意电路的功能。仿真和验证是在这些设计上进行的,如果统统都通过了,它们就可以被合成到构成电路的特定晶体管中。虽然验证可能不像设计一个新的缓存或核心那样华而不实,但它要主要得多。对付公司雇用的每位设计工程师,可能有五名或更多的验证工程师。
验证一个新设计常日比制造实际的芯片本身要花费更多的韶光和金钱。公司在验证上花费了大量的韶光和金钱,由于一旦芯片投入生产,就没有办法修复。利用软件,你只须要发布一个补丁,但硬件不是这样。例如,英特尔的某些奔驰芯片的浮点分区单元中存在bug,终极导致它们丢失了大约20亿美元。
你可能很难想象一个芯片如何拥有数十亿个晶体管以及它们所做的统统。当你把芯片分解成单独的内部组件时,事情就大略多了。晶体管构成逻辑门,逻辑门被组合成实行特界说务的功能单元,这些功能单元连接在一起形成我们在第1部分中谈论的打算机体系构造。
大部分设计事情都是自动化的,但这该当会让你对你购买的新CPU有多么繁芜有了新的认识。
构建芯片:芯片的布局和物理构建
如何把一堆沙子变成高等处理器?让我们看看。
如前所述,处理器和所有其他数字逻辑都是由晶体管构成的。晶体管是一种电子掌握开关,我们可以通过施加或肃清栅极上的电压来打开或关闭它。我们谈论了两种紧张类型的晶体管:当栅极打开时许可电流流过的NMOS器件和在栅极关闭时许可电流流过的PMOS器件。处理器内部的晶体管的基本构造是硅。硅被称为半导体,由于它不能完备导电或绝缘;它位于二者之间的某个位置。
为了通过添加晶体管将硅片变成有用的电路,制造工程师利用了一种称为掺杂的工艺。掺杂工艺包括将精心选择的杂质添加到硅衬底中以改变其导电性。这里的目标是改变电子的行为办法,以便我们能够掌握它们。就像有两种晶体管一样,掺杂也有两种紧张的对应类型。
如果我们添加精确掌握数量的电子给体元素,如砷、锑或磷,就可以创建一个n型区域。由于现在施加这些元素的硅区域具有多余的电子,因此它将带负电。这便是n型和NMOS中的“n”的由来。通过在硅中加入硼、铟、镓等电子受体元素,我们可以得到带正电荷的p型区域。这便是p型和PMOS中的“p”的由来。将这些杂质添加到硅中的详细过程称为离子注入和扩散,这超出了本文的范围。
既然我们可以掌握硅的某些部分的电导率,就可以结合多个区域的特性来制造晶体管。集成电路中利用的晶体管称为MOSFET(金属氧化物半导体场效应晶体管),有四个连接。我们掌握的电流流经源极和漏极。在n沟道器件中,它常日从漏极流入从源极流出,而在p沟道器件中,它常日从源极流入从漏极流出。栅极是用来开关晶体管的开关。末了,器件的主体与处理器无关,以是我们不在这里谈论。
硅制反相器的物理构造。每个着色区域具有不同的导电特性。把稳不同的硅组件与右边的事理图的对应关系。
晶体管的事情事理以及不同区域如何相互浸染的技能细节足以填满研究生水平的大学课程,因此我们将只触及根本知识。晶体管的事情事理的一个很好的类比是河上的吊桥。汽车就像晶体管中的电子,会从河的一边流向另一边,即晶体管的源极和漏极。以NMOS器件为例,当栅极不带电时,吊桥上升,电子不能流过沟道。当我们放下吊桥时,河上形成了一条道路,汽车可以自由移动。同样的事情也发生在晶体管上。充电的栅极在源极和漏极之间形成一个沟道,许可电流流动。
为了能够精确掌握硅的不同p和n区域,英特尔和台积电这样的制造商利用一种称为光刻的工艺。这是一个非常繁芜的多步骤工艺,公司花费数十亿美元来完善它,以便能够制造更小、更快、更节能的晶体管。想象一下,有一台超精密打印机可以用来在硅片上绘制每个区域的图案。
在芯片中制造晶体管的过程是从一个纯晶圆开始的。晶圆在炉中加热,顶部成长一层薄薄的二氧化硅。然后在二氧化硅上涂上一种光敏光刻胶聚合物。通过将特定频率的光照射到光刻胶上,我们可以在我们想要掺杂的区域剥离光刻胶。这是光刻步骤,类似于打印机将墨水印到页面的某些区域,只是尺度小得多。
晶圆被氢氟酸蚀刻以溶解撤除光刻胶的二氧化硅。然后撤除光刻胶,只留下下面的氧化层。掺杂离子可以被运用到晶圆上,并且只能在氧化物中有间隙的地方植入。
这种掩膜、成像和掺杂的过程要重复数十次,才能逐步地在半导体中建立起每个特色层。一旦硅基底完成,金属连接将在顶部制造,以把不同的晶体管连接到一起。我们稍后会详细先容这些连接和金属层。
当然,芯片制造商并不是一次只生产一个晶体管。当一个新芯片被设计出来时,他们将为制造过程中的每一步天生掩模。这些掩模将包含芯片上数十亿个晶体管的每个元件的位置。多个芯片组合在一起,并在一个裸片上一次制造。
一旦晶圆被制造出来,各个裸片就会被切割和封装。根据芯片的大小,每个晶圆可以容纳数百个或更多的芯片。常日情形下,芯片的功能越强,裸片就越大,制造商从每个晶圆上得到的芯片就越少。
我们很随意马虎想到,我们该当制造超级强大的、拥有数百个内核的大规模芯片,但这是不可能的。目前,阻碍我们制造越来越大芯片的最大成分是制造工艺中的毛病。当代芯片有数十亿个晶体管,如果个中一个的一个部分坏了,全体芯片可能须要废弃。随着处理器尺寸的增大,芯片涌现故障的几率也会增加。
公司从制造过程中得到的实际收益是保密的,但70%~90%是很好的估计。公司常日会利用额外的功能来过度设计芯片,由于他们知道某些部件无法事情。例如,英特尔可能会设计一个8核芯片,但只将其作为6核芯片出售,由于他们估计一个或两个核可能会破坏。在一个称为“binning”的过程中,毛病数量非常少的芯片常日被预留出来以更高的价格出售。
与芯片制造干系的最大营销术语之一是特色尺寸。例如,英特尔正在努力实现10nm工艺,AMD正在为一些GPU利用7nm工艺,而台积电已开始研发5nm工艺。但是,这些数字意味着什么呢?传统上,特色尺寸表示晶体管的漏极和源极之间的最小宽度。随着技能的进步,我们已经能够缩小晶体管,以便能够在单个芯片上容纳越来越多的晶体管。随着晶体管变得越来越小,它们也变得越来越快。
在查看这些数字时,须要把稳的是,一些公司可能会根据不同的指标而不是标准宽度来确定工艺尺寸。这意味着不同公司的不同尺寸的工艺实际上可能产生相同尺寸的晶体管。另一方面,在给定的工艺中,并非所有的晶体管都是相同的大小。设计师可能会根据某些权衡来选择制造比其他晶体管更大的晶体管。对付给定的设计过程,较小的晶体管将更快,由于它的栅极充放电须要的韶光更短。然而,较小的晶体管只能驱动很小数量的输出。某个特定的部件,如果逻辑要驱动的东西须要很大的功率,如输出引脚,它就须要做得更大。这些输出晶体管可能比内部逻辑晶体管大几个数量级。
一张最新的AMD Zen处理器的照片。这个设计由几十亿个晶体管组成。
然而,设计和制造晶体管只是芯片的一半。我们须要根据事理图把所有的东西连接起来。这些连接利用晶体管上方的金属层制成。告假想多层公路交汇处,有上坡道、下坡道和相互交叉的不同道路。这正是芯片内部发生的事情,不过尺度要小得多。不同的工艺在晶体管上方会有不同数量的金属互连层。随着晶体管变得越来越小,我们须要更多的金属层来传送所有的旗子暗记。台积电即将推出的5nm工艺有15个金属层。设想一座15层的垂直公路立交桥,这会让你理解芯片内部的布线有多繁芜。
下面的显微镜图像显示了由七个金属层组成的晶格。每一层都是平坦的,随着它们的升高,这些层变得更大,以减小电阻。每一层之间都有被称为通孔的小金属圆柱体,用于跳跃到更高层。每一层常日与下面的一层在方向上交替,以便减少不必要的电容。奇数层可用作水平连接,偶数层可用作垂直连接。
正如你所能想象的,所有这些旗子暗记和金属层都变得难以快速管理。为了帮助办理这个问题,打算机程序被用来自动放置和布线晶体管。根据设计的前辈程度,程序乃至可以将高等C代码中的函数转换为每根导线和晶体管的物理位置。常日情形下,芯片制造商会让打算机自动天生大部分设计,然后他们会手工对某些关键部分进行优化。
当公司想要制造一种新的芯片时,他们将从制造公司供应的标准单元开始他们的设计。例如,英特尔或台积电将为设计师供应逻辑门或存储单元等基本部件。设计职员可以将这些标准单元组合到他们想要构建的任意芯片中。然后,他们将芯片的晶体管和金属层的布局发送给代工厂,代工厂是将硅制造成功能芯片的地方。这些布局被转换成掩模,在我们上面提到的制造过程中利用。接下来,我们将理解一个非常基本的芯片的设计过程。
首先,我们看看反相器的布局,这是一个标准单元。顶部的斜切绿色矩形是PMOS晶体管,底部的透明绿色矩形是NMOS晶体管。垂直红线为多晶硅栅极,蓝色区域为金属1,紫色区域为金属2。输入A位于左侧,输出Y位于右侧。电源和GND连接在金属2的顶部和底部。
把几个门结合起来,我们得到了一个基本的1位算术单元。这种设计可以对两个1位输入进行加法、减法和逻辑运算。垂直方向的蓝色切割导线是金属3层。导线两端稍大的正方形是连接两层的通孔。
末了,将许多单元和大约2000个晶体管组合在一起,我们得到了一个基本的4位处理器,在四个金属层上有8字节的RAM。看看它有多繁芜,我们可以想象设计一个64位CPU的困难,它有兆字节的缓存、多个核心和20多个流水线阶段。考虑到当今高性能CPU可以拥有50亿~100亿个晶体管和12个金属层,绝不夸年夜地说,它实际上要比这个繁芜数百万倍。
这该当会让你理解为什么你的新CPU是一项昂贵的技能,以及为什么AMD和英特尔在产品发布之间花了这么永劫光。一样平常来说,一个新芯片从设计阶段进入市场须要3~5年的韶光。这意味着本日最快的芯片是用几年前的技能制造出来的,而我们在许多年内都不会看到利用当今最前辈制造技能的芯片。
由此,我们完成了对处理器构建办法的深入研究。








