处理器的设计和制造方式:CPU设计

图片

现在我们知道处理器是如何工作的,现在该深入研究其内部组件的设计过程了。 这是有关处理器开发的系列文章中的第二篇。 我建议您首先学习第一部分,以使您理解下面概述的概念。

第1部分:计算机体系结构基础知识 (指令集体系结构,缓存,管道,超线程)
第2部分:CPU设计过程 (电路,晶体管,逻辑元件,同步)
第3部分:芯片的布局和物理制造(VLSI和硅制造)
第4部分:计算机体系结构中的当前趋势和重要的未来方向(加速器之海,三维集成,FPGA,近存储器计算)

如您所知,处理器和大多数其他数字设备由晶体管组成。 将晶体管感知为具有三个触点的受控开关的最简单方法。 当快门打开时,电流可能流过晶体管。 当快门关闭时,电流无法流动。 百叶窗就像房间里的电灯开关一样,只是更小,更快,可以电动控制。

现代处理器中使用的晶体管主要有两种类型:pMOS(PMOS)和nMOS(NMOS)。 当栅极充电或具有高电压时,nMOS晶体管通过电流,而当栅极放电或具有低电压时,pMOS晶体管通过电流。 通过以互补的方式组合这些类型的晶体管,我们可以创建CMOS逻辑元件。 在本文中,我们不会详细分析晶体管的工作特性,但是我们将在本系列的第三部分中对此进行探讨。

逻辑元件是一种简单的设备,可以接收输入信号,执行操作并输出结果。 例如,当且仅当所有门输入均打开时,AND元件(AND)才打开其输出信号。 如果输入被禁用,则逆变器或元素NOT(NOT)会打开其输出。 您可以将这两个快门组合在一起,并获得一个NAND元件,只要且仅当任何一个输入都未打开时,它才能打开输出。 还有其他具有逻辑功能的元素,例如,OR(OR),OR-NOT(NOR),异或(XOR)和带取反的异或(XNOR)。

下面显示了如何用晶体管组装两个简单的元件:反相器和NAND。 在逆变器中,pMOS晶体管(顶部)连接到电源,nMOS晶体管(底部)连接到地。 在pMOS晶体管的名称上,有一个小圆圈连接到栅极。 我们说过pMOS器件在输入关闭时会通过电流,而nMOS器件在输入打开时会通过电流,因此很容易注意到输出信号(Out)总是与输入信号(In)相反。 看一下NAND元件,我们看到它需要四个晶体管,并且如果至少一个输入被关闭,则输出将始终被禁用。 以这种方式连接晶体管以形成简单的网络与用于设计处理器内部更复杂的逻辑元件和其他电路的过程相同。


逻辑元素形式的构建块是如此简单,以至于很难理解它们如何转变为功能正常的计算机。 设计过程包括组合多个元素以创建可以执行简单功能的小型设备。 然后,您可以组合许多这些设备来创建执行更复杂功能的设备。 组合单个组件以创建工作结构的过程正是当今用于创建现代芯片的过程。 唯一的区别是,现代芯片由数十亿个晶体管组成。

举一个小例子,我们来看一个简单的加法器-1位全加法器。 它接收三个输入信号-A,B和进位(传输输入信号),并创建两个输出信号-总和(求和)和进位(传输输出信号)。 最简单的电路使用五个逻辑元件,它们可以连接在一起以创建任意大小的加法器。 在现代方案中,通过优化部分逻辑和传输信号来改进此过程,但是基本原理保持不变。

Sum的输出是A或B,但两者都不输出,或者有输入进位信号,然后A和B导通或都关断。 传输输出稍微复杂一些。 当A和B同时打开,或者有进位且A或B中的一个打开时,它处于活动状态。 要连接多个1位加法器以创建更宽的加法器,我们只需要将前一位的进位与当前位的进位连接即可。 电路越复杂,逻辑就越混乱,但这是将两个数字相加的最简单方法。 现代处理器使用更复杂的加法器,但其电路过于复杂,无法进行此类审查。 除加法器外,处理器还包含用于对所有这些浮点运算进行除法,乘法和版本控制的设备。


在输入信号上执行功能的元素序列的这种组合称为组合逻辑 。 但是,这不是计算机中使用的唯一逻辑类型。 如果我们无法存储数据或跟踪状态,它将不会有太大用处。 为了能够保存数据,我们需要顺序逻辑。

顺序逻辑通过整洁地连接逆变器和其他逻辑元件来构建,以便它们的输出将反馈信号传输到元件的输入。 这种反馈回路用于存储一位数据,称为静态RAM或SRAM。 与动态RAM(DRAM)相对,此存储器称为静态RAM,因为存储的数据始终直接连接到正电压或接地。

实现一个SRAM位的标准方法是使用以下所示的6晶体管电路。 标记为WL( 字线 )的最上面的信号是地址,当它打开时,存储在此1位单元中的数据将传输到标记为BL的位线 。 BLB输出称为位线条 ; 这只是位线的倒数。 您必须识别两种类型的晶体管,并了解带有M1的M3,就像带有M2的M4一样,构成反相器。


SRAM用于在处理器内部构建超高速缓存和寄存器。 该存储器非常稳定,但是需要六到八个晶体管来存储数据的每一位。 因此,与DRAM相比,在成本,复杂性和芯片上面积方面非常昂贵。 另一方面,动态RAM将数据存储在很小的电容器中,而不是使用逻辑门。 之所以称为动态,是因为电容器上的电压未连接到电源或接地,因此其电压可能会发生很大变化。 只有一个晶体管用于访问电容器中存储的数据。

由于DRAM每位只需要一个晶体管,并且具有高度可扩展性,因此可以密集且廉价地封装它。 DRAM的缺点是电容器上的电荷太小,需要不断更新。 因此,在关闭计算机电源后,所有电容器都会放电,RAM中的数据会丢失。


诸如Intel,AMD和Nvidia之类的公司未发布其处理器的电路图,因此不可能显示出用于现代处理器的完整电路。 但是,这个简单的加法器使您可以将处理器的最复杂部分分为逻辑和存储元素,然后再分为晶体管。

现在我们知道一些处理器组件是如何制造的,我们需要弄清楚如何将所有组件放在一起并进行同步。 处理器的所有关键组件都连接到时钟信号 。 它交替具有高电压和低电压,以给定的间隔(称为频率)进行更改。 当时钟信号将电压从低变高时,处理器内部的逻辑通常会切换值并执行计算。 通过同步所有部分,我们可以确保数据始终在正确的时间到达,从而在处理器中不会出现故障。

您可能听说过可以提高时钟速度来提高处理器性能。 这种性能提高是由于以下事实:处理器内部的开关晶体管和逻辑开始出现的次数比预期的多。 由于每秒有更多的周期,因此可以完成更多的工作,并且处理器将具有更高的性能。 但是,在一定程度上是正确的。 现代处理器通常在3.0 GHz至4.5 GHz的频率下运行,并且该值在过去十年中变化不大。 就像一条金属链并不比其最弱的链接更强大一样,处理器的运行速度也不会比其最慢的部分快。 在每个时钟周期结束时,每个处理器元件都应完成其工作。 如果某些部件尚未完成,则时钟信号太快,处理器将无法工作。 设计人员将此最慢的部分称为关键路径,由他来决定处理器可以工作的最大频率。 高于某个频率时,晶体管根本没有时间足够快地切换,并开始出现故障或产生错误的输出值。

通过增加处理器的电压,我们可以加速晶体管的开关,但这也可以达到一定的极限。 如果施加的电压过多,则可能会烧毁处理器。 当我们增加处理器的频率或电压时,它总是开始散发更多的热量并消耗更多的功率。 这是因为处理器功率与频率成正比,与电压的平方成正比。 为了确定处理器的功耗,我们将每个晶体管视为一个小型电容器,当其值发生变化时需要对其进行充电或放电。

电源是处理器的重要组成部分,在某些情况下,芯片上多达一半的物理触点只能用于电源或接地。 某些满载芯片可能消耗超过150安培的电流,因此,在使用所有这些电流时,都需要非常小心地进行控制。 为了进行比较:中央处理器比核反应堆每单位面积产生更多的热量。

现代处理器中的时钟信号约占其总功率的30-40%,因为它非常复杂并且必须管理许多不同的设备。 为了节省能量,大多数低功耗处理器在不使用时会禁用部分芯片。 这可以通过关闭时钟(此方法称为“时钟门控”)或关闭电源(“电源门控”)来完成。

时钟信号给处理器的设计带来了另一个困难:由于时钟频率不断增长,因此物理定律开始影响工作。 尽管光速极高,但对于高性能处理器而言,它还不够大。 如果您将时钟信号连接到芯片的一端,那么当信号到达另一端时,它将不同步很多。 为了同步芯片的所有部分,使用所谓的H-Tree分配时钟信号。 这种结构可确保所有端点到中心的距离完全相同。


芯片中每个晶体管,时钟信号和电源触点的设计似乎是极其单调且困难的任务,实际上确实如此。 即使成千上万的工程师在英特尔,高通和AMD等公司工作,他们也无法手动设计芯片的各个方面。 为了设计这种规模的芯片,他们使用许多复杂的工具来自动生成设计和电路。 此类工具通常获得组件应执行的操作的高级描述,并确定满足这些要求的最佳硬件配置。 最近,出现了一种称为“ 高级综合”的开发方向,该方向允许开发人员在代码中指定必要的功能,然后计算机确定如何在设备中最佳实现该功能。

就像您可以通过代码描述计算机程序一样,设计人员可以使用代码描述硬件设备。 诸如Verilog和VHDL之类的语言允许设备设计人员表达他们创建的任何电路的功能。 在对此类项目进行仿真和验证之后,可以将它们合成为特定的晶体管,其中包括电路。 尽管验证阶段似乎不像设计新的缓存或内核那样令人兴奋,但它比它们重要得多。 对于公司雇用的每个设计工程师,可能会有五名或更多的验证工程师。

验证新项目通常比创建芯片本身要花费更多的时间和金钱。 公司在验证上花费了很多时间和金钱,因为将芯片投入生产后就无法修复。 如果软件出现错误,您可以发布补丁,但设备的工作方式有所不同。 例如,英特尔某些奔腾芯片的浮点除法模块中发现了一个错误,结果造成的损失相当于目前的20亿美元。

很难理解一个芯片中可以有数十亿个晶体管并了解它们的全部功能。 如果您将芯片分成单独的内部组件,则变得容易一些。 逻辑元件由晶体管组成,逻辑元件被组合成执行特定任务的功能模块,这些功能模块连接在一起以形成我们在本系列的第一部分中讨论的计算机体系结构。

大部分设计工作都是自动化的,但是以上所述使我们认识到我们刚购买的新CPU的复杂性。

在系列的第二部分中,我讨论了CPU设计过程。 我们讨论了晶体管,逻辑门,电源和时钟信号,设计综合以及验证。 在第三部分中,我们了解了芯片物理生产所需的条件。 所有公司都喜欢炫耀其制造工艺的现代化程度(Intel-10nm,Apple和AMD-7nm等),但是这些数字到底意味着什么? 我们将在下一部分中讨论这一点。

推荐读物

Source: https://habr.com/ru/post/zh-CN457178/


All Articles