CPU设计过程

Table of Contents

CPU设计过程

构建芯片:芯片的布局和物理构建


https://mp.weixin.qq.com/s/R6kuv60e8X3dLRYk0YsO3w

4级流水线示例。彩色方框表示相互独立的指令。(图片来源:维基百科)

在典型的处理器上,每个核心将有两个L1缓存:一个用于数据缓存,一个用于指令缓存。L1缓存的总容量通常在100KB左右,大小可能因芯片和代际而异。每个核心通常也有一个L2缓存,尽管在某些体系结构中,它可能在两个核心之间共享。L2缓存通常为几百KB。最后,还有一个L3缓存在所有核心之间共享,大小为几十MB。

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工艺。但是,这些数字意味着什么呢?传统上,特征尺寸表示晶体管的漏极和源极之间的最小宽度。随着技术的进步,我们已经能够缩小晶体管,以便能够在单个芯片上容纳越来越多的晶体管。随着晶体管变得越来越小,它们也变得越来越快。

在查看这些数字时,需要注意的是,一些公司可能会根据不同的指标而不是标准宽度来确定工艺尺寸。这意味着不同公司的不同尺寸的工艺实际上可能产生相同尺寸的晶体管。另一方面,在给定的工艺中,并非所有的晶体管都是相同的大小。设计师可能会根据某些权衡来选择制造比其他晶体管更大的晶体管。对于给定的设计过程,较小的晶体管将更快,因为它的栅极充放电需要的时间更短。然而,较小的晶体管只能驱动很小数量的输出。某个特定的部件,如果逻辑要驱动的东西需要很大的功率,如输出引脚,它就需要做得更大。这些输出晶体管可能比内部逻辑晶体管大几个数量级。

然而,设计和制造晶体管只是芯片的一半。我们需要根据原理图把所有的东西连接起来。这些连接使用晶体管上方的金属层制成。请设想多层公路交汇处,有上坡道、下坡道和相互交叉的不同道路。这正是芯片内部发生的事情,不过尺度要小得多。不同的工艺在晶体管上方会有不同数量的金属互连层。随着晶体管变得越来越小,我们需要更多的金属层来传送所有的信号。台积电即将推出的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年的时间。这意味着今天最快的芯片是用几年前的技术制造出来的,而我们在许多年内都不会看到使用当今最先进制造技术的芯片。

由此,我们完成了对处理器构建方式的深入研究。

https://mp.weixin.qq.com/s/R6kuv60e8X3dLRYk0YsO3w

中科院半导体所

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值