https://zhuanlan.zhihu.com/p/529872958
作为一种超大规模集成电路,CPU在过去几十年里始终遵循摩尔定律——每过十八到二十四个月,硅片单位面积上晶体管数量翻倍。从产业界的表现来看,每过一到两年,英特尔、AMD和IBM等公司就会推出自己的新产品。
那么问题就来了,这些高性能CPU是如何设计出来的?芯片公司凭借什么跟上摩尔定律?文章接下来会向大家讲解CPU设计的全流程,凭借这种规范化的流程,拥有强大研发能力的公司将延续定律并保持自己的股价,而被同行甩在身后的公司则会迅速消失。
文章接下来阐述的设计流程来源于Alpha CPU的设计团队,这个团队曾在九十年代激烈的性能竞技中屡获头筹,他们的设计流程是那个时代的业界典范。虽然这二十年里CPU的设计流程变得更复杂,业界也有了更多的设计理念,但是他们的设计流程仍然是关于芯片设计的一个极佳的介绍和示范,其中的所有步骤至今仍然是芯片设计过程中不可缺少的工作。
Alpha CPU是上世纪八九十年代DEC公司推出的RISC(精简指令集)风格CPU,性能卓越,几度称王。长期关注处理器技术发展的朋友,很难不每隔一段时间就偶尔看到“这技术受Alpha影响”“这是出自前Alpha研发团队成员的杰作”等表述,我国的神威•太湖之光超级计算机也使用Alpha CPU的技术。
现在很少有人还知道DEC公司,实际上该公司早在二十年前就被康柏收购。在风雨飘摇之际,Alpha团队的很多成员都离开DEC转投AMD,他们在AMD研发出K7、K8芯片,帮助AMD实现第一次逆袭。团队中的很多人后来又去到英特尔,帮助英特尔开发安腾系列CPU。现在Alpha团队里最有声望的当属“硅谷游侠”吉姆·凯勒,他离开DEC之后在硅谷“四处游荡”,对各家巨头进行“技术扶贫”,比如为AMD设计Zen架构,帮助AMD实现第二次逆袭。关于Alpha的传奇,感兴趣的朋友可以查看深度解读:传奇的Alpha处理器,关于吉姆·凯勒,可以直接在知乎搜到很多他的“个人传记”。
本文的重点不在于介绍Alpha CPU的辉煌历史或是其微体系结构,而是要向大家介绍Alpha CPU这种高性能集成电路是如何设计、制造出来的。本文的内容主要翻译自二十年前的一篇文章,这篇文章由康柏公司撰写,详细介绍了高性能CPU的完全设计流程,原始英文文章可以在百度网盘中获取,提取码:1234。如果觉得本文对你有帮助,不妨双击屏幕点一个赞~~
接下来开始正文。
对于那些有经验的人来说,任何大型工程项目都感觉像是在火箭上旅行。一开始,团队感到兴奋、期待并且经常遭遇挫折,大家都想知道整个项目是否会启动起来。然后是一个快速的加速阶段,此时大家意识到没有回头路。然后,在飞行中,随着火箭速度变得更加稳定,路径变得更加清晰,你会感觉到已经从发射模式转换到巡航模式。最后,随着deadline的临近,着陆区出现,大家一鼓作气,最终成功着陆。
康柏公司的处理器设计团队已经设计和制造微处理器(即CPU)大约20年。在过去的10年中,他们一直在设计Alpha处理器,目标是让每一代Alpha都保持业界领先的性能。在这段时间里,团队开发了一个支持这一目标的流程——如本文所述。
随着技术的进步,这一过程也发生变化。团队越来越大,项目越来越复杂。随着时间的推移,设计轨迹已经发生了变化,以适应技术和市场条件,但我们的设计目标仍然是生产性能领先的微处理器。
然而,与火箭的发射、着陆不同,新型Alpha微处理器的开发经历了十几个阶段,这些阶段在很大程度上重叠,有几个阶段会并行发生。但是,火箭类比依然是正确的。
在项目开始时,一个由高级技术人员和专业营销人员组成的小组调查市场、研究现状和竞争对手的计划。小组确定新处理器的性能目标和功能目标。
这项任务很复杂,因为市场在不断变化。从最初的计划到客户实际看到新处理器,可能需要五年或更长的时间。市场调查通常更像是观察水晶球,而不是钻研科学。五年后,后台服务器的处理器是否会与个人系统的处理器有实质性的不同?哪些工作负载将是重要的?语音识别将是台式机的主要计算任务吗?还是实时动画?多处理器平台有多重要?客户需要什么?
每年,组织都会派遣工程师、研究人员和管理人员参加数十场会议、研讨会。在这些会议上收集的大部分信息都被纳入到下一代处理器的设计考虑中。
微处理器的市场竞争异常激烈。客户想要知道他们正在考虑的处理器的技术路线。这种对信息的渴求,以及不同团队之间对营销和技术人员的竞争,使得大多数公司出人意料地渴望谈论自己的未来产品。
这种情况产生了相当好的效果,它创造了一个积极的反馈回路:摩尔定律之所以有效,是因为半导体公司表示它会有效。如果Froodly电脑公司宣布其SuperFroodly VX90将在四年内交付4000台bogoMips台式机,康柏的项目规划师在面对董事会咨询时最好有一个答案。
半导体行业也会定期做出自己的预测。这些芯片尺寸、晶圆尺寸、生产成本、设备性能、互连特性以及一系列其他技术和财务指标的预测为设备制造商提供了指导。
在这个阶段的最后,项目有了一个看起来像宪章的东西。产品定义小组概述了设计任务,列举了目标市场,建议了可能的技术特征和资源,并且(当然)定义了性能目标。
大多数产品定义的贡献者都有电路设计师、架构师、市场营销人员或研究人员的经验。这些广泛的经验对于在市场需求、可用技术和上市时间之间找到平衡至关重要。
随着开发需求推出,架构团队开始寻找设计方案。他们试图回答几个问题:如何使用固定的芯片面积来最大限度满足产品要求?CPU需要多少个功能单元?芯片内存有多少?哪些策略、结构和算法将最大限度地利用处理器的资源?
在这个阶段开始时,团队相对较小,可能只有不到十个架构师。然而,他们会得到规模更大的先进开发团队以及研究中心的协助。架构团队与产品定义组并行工作(有些甚至是产品定义组的成员)。
架构团队使用性能模型测试他们开发的大多数权衡和新概念。该模型是一个高级模拟器,其组件表征团队所考虑的每个主要结构及其特性。模型的设计、构建和维护本身就是一个重要的软件开发项目。
但并非所有问题都能通过模拟得到答案。这一阶段的大部分探索都是在白板上、技术会议上以及与电路设计师的讨论中进行。在回答了主要问题(如该处理器将有多少个整数单位,有多少个浮点单元和内存端口,流水线是什么样子的)之后,团队开始绘制处理器的结构框图。
这一阶段的研究结果是一个完整的性能模型和对处理器块级结构的定义。这些信息记录在各种功能单元规范、框图、图表、表格、备忘录和接口定义中。
在项目的这一环节,架构团队将处理器划分为“盒子”。每个盒子都有一个特定的功能。一个简单的处理器可能包括一个获取和解码指令的IBox、一个执行整数指令的EBox、一个执行浮点操作的FBox和一个处理内存操作的MBox。当团队将芯片分成盒子时,它也会对自己做同样的事情。这个任务和团队的划分贯穿于电路设计、布局和验证团队:每个盒子都有自己的工程师团队,负责其开发、设计和测试。将团队划分为多个子团队对于管理至关重要。将芯片划分为多个盒子会创建接口边界。如果选择不当或定义不当,边界周围的区域可能会成为“bug农场”。将团队成员分配到各个盒子本身就是一项有趣的管理任务:需要根据每个盒子的特点、复杂性来匹配不同的技能和气质。
将芯片划分为多个盒子也为解决全局问题创建了一个框架。它形成了团队之间善意竞争的框架,可以帮助解决由于竞争和观点冲突而发生的争议。例如,执行单元中的下游操作可能需要指令提取单元支持,而指令提取的设计团队有一套他们打算实现的绩效目标和项目里程碑,如果新特性损失了指令提取单元的性能,那么如何平衡这一损失与执行单元所获得提升?
与大多数企业一样,这些问题通过同行之间的理性讨论、暴风雪般的电子邮件、成堆的图表、数小时和数天的模拟以及偶尔的激烈辩论来解决。
体系结构团队的典型成员拥有计算机工程学位。经验水平各不相同,但大多数成员要么拥有电路设计、验证或系统架构方面的行业经验,要么拥有计算机工程博士学位。
通常,在产品定义之前,技术和工艺团队正在设计新的封装——微处理器电路周围的外壳。他们还与制造工厂(这里指的是台积电这样的代工厂)合作,选择一种新的制造工艺,通常是基于CMOS(互补金属氧化物半导体)的制造工艺。合作的目的是定义制造技术,该技术一般将在制造新处理器时就绪,但现在还未成熟。
尽管Alpha设计团队采用无晶圆厂模式(即没有自己的生产工厂),但制造工厂很少独立提出工艺流程。新Alpha产品的最终目标流程来自电路设计师、康柏技术团队和制造工厂之间的合作。该流程的开发将贯穿整个项目生命周期,并一直持续到新处理器的生产运行。
技术团队从电路设计师、架构师和产品经理那里收集需求。团队同时考虑外部和内部的研发工作。他们发布了一系列越来越详细的描述过程的注释,并最终形成了一套技术规范和低级设计规则。
例如,该文件将规定所有绝缘层的介电常数、每层金属的标称厚度、片上互连的电阻和电容以及晶体管特性。此外,技术规范将规定工艺限制,例如,指示每层导线的最小间距和宽度或晶体管之间的最小间距。这些细节记录在技术文件(实际上是一本书)中,该文件描述了特征尺寸、布局设计规则、电气限制和晶体管特性。
技术团队的成员有着材料科学、电子工程、物理、化学或其他物理科学领域的各种背景。与制造工厂合作的成员通常在工艺开发方面具有丰富的经验。
在设计过程的早期,与架构探索并行,电路设计师测试新的设计概念。例如,新芯片将使用何种类型的存储元件:边沿触发器或是电平感应锁存器。目标CMOS工艺的创新是否使新的电路类型成为可能?是否可以构建架构团队提出的结构?
可行性研究遵循架构团队给出的处理器框图。随着体系结构开始形成,电路设计人员识别可能难以实现的关键特性和体系结构。
研究可能发现,特定架构对应的电路可能会对项目带来无法忍受的风险,无论是在进度方面(设计、布局或验证会花费太多时间),还是在可靠性方面(在公司制造几千个零件之前,其可靠性都会受到质疑)。当研究表明某个体系结构特征不可行时,架构师和电路设计师会回到白板上,寻找替代方案。
在可行性研究过程的最后,电路可行性研究小组对芯片上的主要结构有了相当清晰的了解。此外,成员们在新技术和体系结构方面积累了丰富的经验。这些信息大多影响到项目设计指南,这是一本手册(或一套手册),电路设计师和布局设计师将使用该手册绘制和布置电路原理图。
从事可行性研究的团队最终将成为电路设计团队的核心。通常,成员拥有电子或计算机工程学位。一些团队成员刚从学校毕业,但在更有经验的工程师的指导下工作。
随着新一代Alpha处理器的出现,设计风格不断演变;团队可能添加新的电路类型或列举新的设计规则。此外,随着特征尺寸从2µm缩小到小于0.18µm,二阶或三阶物理效应(如噪声和串扰)对芯片的性能甚至其功能正确性都变得非常重要。
为了应对这些影响和不断增加的设计复杂性,公司投入了大量精力开发新的计算机辅助设计工具。这些CAD工具包括电路生成和布局布线工具,用于为电路和布局布线作检查。定制高性能微处理器需要一套定制的设计工具,其中许多工具是CAD团队必须构建或修改的,尤其是针对当前的设计工作。
在项目期间,CAD团队根据设计师的建议、团队的研究、行业趋势和技术要求开发新工具。
通常,CAD团队成员拥有电子或计算机工程或计算机科学学位。
在制造处理器之前,团队必须确保芯片能够实际工作。很长一段时间以来,芯片设计团队在设计制造之前使用模拟(simulation)来测试设计。然而,现代微处理器太复杂,无法模拟每个晶体管或逻辑门。虽然团队对某些组件进行电路模拟,但团队最终会在更高的抽象级别上模拟整个芯片。
因此,大多数架构设计、验证工作都集中在芯片的高级描述上,该描述也作为芯片规范的一个组成部分。
高级描述采用寄存器传输级(RTL)模型的形式,该模型是用硬件描述语言(如Verilog)编写的程序。RTL描述处理器中的每一位状态以及在该状态下可能发生的所有操作。它描述了每个寄存器、RAM阵列、加法器和逻辑块。RTL模型由架构团队在电路设计团队的大力协助下编写,是团队在电路框图、可行性分析、产品需求和架构研究方面工作的高潮。
随着RTL模型开始成形,团队开始感觉各阶段的工作终于汇集到一起。每个工程师都知道第一次打开新设计的部件的感觉,许多架构师在RTL模型执行其第一个程序时都有这种感觉。但团队离真正实现芯片还有好几个月的时间。
作为描述Alpha处理器的程序,RTL模型可以执行Alpha程序。验证团队构建了一组工具和结构,用于创建测试程序,在RTL模型上运行程序,并将RTL模型的状态与Alpha处理器的参考模型进行比较。参考模型基于芯片规范和Alpha系统参考手册。许多参考模型是从以前的芯片工作中借鉴的,但是对于每个新芯片,参考模型必须包含指令集的附加内容,并正确模拟新芯片特有的特定行为。
两个模型的架构状态必须在每个时钟周期完全对应。这样,团队就可以确信RTL模型描述了一个能够正确执行Alpha指令的处理器。
架构师还使用许多类似的测试来保证电路设计与RTL模型彼此对应。他们在RTL模型和电路原理图的门级模拟上运行相同的程序。通过比较两者中的主要信号,他们证明电路示意图是RTL模型的忠实转换。
不幸的是,没有任何模拟工作可以彻底测试处理器设计。因此,验证团队非常重视开发测试程序,在第一个原型芯片出现之前,要尽可能多地对处理器进行测试。
功能验证的目标是确保RTL模型正确支持定义好的功能和行为。验证团队的规模与架构团队大致相同。它构建了用于创建测试、跟踪测试结果、报告错误和跟踪解决方案的基础设施。大多数团队成员都有计算机科学或计算机工程的背景。
RTL足够详细,可以向模拟引擎描述处理器,但过于抽象,无法用于生成芯片布局。在将设计移交给physical layout团队之前,需要将RTL模型转换成电路原理图。
为Alpha处理器绘制的原理图通常描述晶体管之间的连接以及布局团队使用的信号线的相对位置。这些按方位组织的原理图降低了后续因信号完整性问题而强制改变物理设计布局的可能。
电路设计团队将RTL模型转换为电路原理图。有时,原理图设计者将使用RTL模型作为指导。在其他时候,设计师会完全忽略模型,而设计出功能等效或更好的结构。在这些情况下,架构团队修改RTL模型以正确反映修改后的结构行为。
Alpha团队没有区分门级和晶体管级设计。电路设计者可以自由地使用最合适的抽象级别来描述逻辑功能。
经验丰富的电路设计师通常能够提出创造性和优雅的设计,这对于自动化系统来说是很难产生的。康柏的设计团队一直致力于在生产力优势和聪明设计师的创造力之间找到平衡。因此,Alpha团队自动综合了处理器的一些控制逻辑,但手动设计了大多数数据路径。高效、快速的数据路径逻辑源于对互连的仔细规划、组件尺寸的调整,以及考虑许多超出合成工具知识范围的三阶效应。数据路径设计与其说是科学,不如说是艺术,因此由设计师艺术家来完成比由机器来完成更好。
当电路设计者绘制原理图时,其他人会对其进行审查。该原理图还受到一套CAD程序的评判,这些程序用于识别原理图与公认设计的偏差。这些程序还可以识别易受现实世界影响的电路,影响包括串扰、时钟偏移和CMOS工艺变化等。
由于处理器越来越复杂,现在原理图需要绘制数百万个晶体管和数英里的布线,电路设计团队的规模是架构团队的两到三倍。从开始RTL建模到向制造厂交付掩模,原理图设计工作消耗了项目所花费时间的三分之一左右。大多数团队成员将此视为“巡游”阶段,在该阶段中,项目将以稳定的速度进行。
方案设计阶段通常会暴露出原始架构方案中的问题。这些问题通过架构和实现团队之间的协作来解决。在任何合作中,都需要付出、索取热情和幽默。
功能验证试图证明RTL模型是正确的,但是RTL模型后来(通常由人类)被翻译成更详细的描述。这个转换步骤很困难而且容易出错,因此证明RTL模型的正确性只是任务的一部分。
架构团队负责确保从RTL到示意图的可靠转换。他们为每个原理图构建门级逻辑模拟,并与同一电路的RTL模型并行运行。相同的刺激被施加给RTL模型和门级模型。两个模型的输出必须在每个周期以预期的方式匹配。团队通过修复示意图或调整RTL模型来解决差异。由于RTL只是电路设计者的指南,因此RTL模型经常更改以匹配原理图。
除了RTL和门级逻辑级别的模拟之外,公司最近还使用一些工具,对示意图与RTL进行分析比较。这种比较工具可以提供一个明确的、自动的证据,证明原理图是RTL模型的忠实转换。
虽然原理图是按方位绘制的,但仍不够详细,无法描述芯片的物理布局。
随着原理图的完成,一组布局设计师开始将其转换为实际芯片几何图形的描述。也就是说,对于表示源极、漏极和栅极端的晶体管,它们将每个原理图上的每个晶体管作为一组多边形数据输入到数据库中。每条导线也会输入数据库。
在这一过程中,他们将布局数据库的每一部分与它所表示的原理图进行比较。数据必须100%忠实。同样,康柏发现自动布局只对设计的某些部分有用。对于大多数设计,熟练的布局设计师会生成更快、更小的布局。
在版图设计工作的最后,对芯片进行了详细的描述。此时,可以将布局布线转换为用于生产的掩膜。但首先,该布局布线用于生成芯片上每条导线的电容和电阻估计值,这些值被用作时序分析和电路验证步骤的输入。
在高峰期,布局团队的规模与电路设计团队相似。任何团队的规模都会随着项目需求的变化而变化。布局团队成员接受高性能VLSI布局方面的专门培训。很少有人有电子工程背景,但是他们都擅长解决空间问题。布局设计师必须将原理图描述为多达十层的二维多边形的最佳压缩排列。复杂的规则集(在技术文件中描述)建立了多边形相对于同一层和其他层上其他多边形的放置约束。
原理图和RTL模型之间的逻辑对应并不意味着实际电路可以工作。逻辑验证假设所有晶体管都是开或关的,所有信号都是真或假,并以无限的速度传播。在现实生活中,晶体管会漏电、信号会被噪声影响,信号在从驱动器到接收器的传输过程中会发生延迟。
电路设计人员使用我们自己的CAD小组开发的专用CAD工具来验证信号在每个电路的正确时序行为。这些工具还有助于确保被串扰破坏的信号仍然可以识别为高电平或低电平,并且此类信号不会导致临时或永久性电路故障。这些CAD工具还确保芯片上的每根导线都能承载流过它的电流,时钟信号到达芯片上的每一点时都在时钟偏差的公差范围内,并且每个电路都符合公认的设计实践。
此时所做的大多数测试都需要对连接芯片晶体管的导线进行全面的表征。分析说明了每条导线对地和相邻导线的电阻和电容。同样,CAD套件用于从布局数据库中提取电容和电阻信息。此信息用于时序分析(用于关键路径和竞争分析)、串扰检查和电迁移检查。
设计任务的这一阶段将需要一年或更长时间。电路验证步骤与最终布局布线任务以及所有逻辑和功能验证并行进行。
在项目的最后几个月,进度变得疯狂。数十个领域的数十项任务汇聚在一起,团队成员在办公室、走廊和会议室来来往往。想象一下,在学期项目到期的前一天晚上,一个本科生计算机实验室的狂热,你可以由此感受到芯片发布制造前两到三个月的气氛。
只有在我们确信该设计将生产出能够执行Alpha程序的芯片后,处理器团队才会将该设计送到制造厂。这一最终版本的发布是整个团队的一个重要里程碑。从送往流片到首批测试芯片的到来,在这段等待期间,团队成员终于可以休息一下。
最后,制造厂产出晶圆,每个晶圆由几十个处理器芯片组成,晶圆进入晶圆测试站,测试人员在那里测试芯片。随着团队对设计的信心不断增强,选定的芯片将被打包并通过一组又一组测试,最终将在实际的计算机系统中进行测试。一旦进入一个系统,处理器将经历数千个测试程序,这些可能没有Alpha支持的操作系统(如Windows和Linux)那么复杂。
启动操作系统是另一个重要里程碑。每一代Alpha处理器都能够在第一批芯片就成功引导操作系统,这是Alpha团队非常自豪的成就。启动操作系统允许团队在操作系统的帮助下执行大部分调试工作,并使用真实的软件应用程序来测试设计。当工程师在设计中发现错误时,我们会修复这些错误,并重新制造芯片。修复工作需要重复设计、布局、验证、制造和调试步骤。
到这里为止,如果芯片通过了各种测试,我们就可以进一步把它送往封装厂,然后获得成熟、完备的产品级芯片,本次项目的火箭旅行也就就此着陆。
距戈登·摩尔提出摩尔定律已经过去五十余年,在这段漫长的时间里摩尔定律总是在发挥功效,与之对应的,设计大规模数字集成电路的团队也在不断、快速地适应新的工艺和更复杂的设计流程。
本文的设计流程来源于二十年前Alpha CPU的设计团队,这二十年里CPU的设计流程变得更复杂,业界也有了更多的设计理念,如IP重用、SoC、软硬件协同,但是很多工作也因为广泛的分工而变得更加简单,比如文中提到的EDA工具,现在设计公司不必面面俱到,而可以直接使用EDA公司(如Cadence)开发的相关工具。
虽然现在的设计流程更复杂,但是本文的内容仍然是关于芯片设计的一个极佳的介绍和示范,其中的所有步骤至今仍然是芯片设计过程中不可缺少的工作。