设计一款CPU芯片到底有多难?

文章结构

  •     导读

  •     一颗芯片是怎么诞生的?

  •     一款CPU是如何设计出来的?

  •     设计一款CPU到底难在哪里?


导读


这几天,刷遍朋友圈的新闻就是:中兴被“一剑封喉”,被美国停止一切芯片进口和系统软件服务。这对于芯片依赖美国的中兴来说,基本上一下子就处于休克状态,上下游的生产线面临停产,8万员工前途未卜。中兴事件给IT/IC届带来的冲击,甚至给普通百姓带来的冲击相当大,以至于各个自媒体、公众号、新闻APP这几天的新闻全是跟芯片、半导体、集成电路相关的话题:芯片是啥?中美芯片差距到底有多大?各种段子也随之诞生:同样一堆沙子,有人拿它做出了芯片,有人拿它做成了砖,把房价炒上了天......,新闻多了,很多消息也越来越扯淡,很多看了实在无语,自卑和自大往往都来源于无知。今天就综合一下行业知识、参考网上的新闻,给大家扫盲一下集成电路相关的知识,对于嵌入式开发者来说,学习一下集成电路领域的知识,对自己的知识体系和对嵌入式行业的理解也有很大的帮助。


一颗芯片是怎么诞生的?


上面的段子说得没错,芯片的原材料就是沙子,今天就先跟大家科普一下:一堆沙子是怎么变成我们手机里的一颗芯片的。


芯片属于半导体,半导体是介于导体和绝缘体之间的一类物质。元素周期表中的硅、锗、硒的单质都属于半导体。除了这些单质,通过掺杂生成的一些化合物,也属于半导体的范畴。这些化合物在常温下可激发载流子的能力大大增强,同时弥补了单质的一些缺点,因此在半导体行业中也广泛应用,如砷化镓、磷化铟、碳化硅、氮化镓等。这几天集成电路概念股大涨,看到有人又炒作石墨烯,估计想趁机炒作一把。石墨烯其实不能算作半导体,虽然它可能通过掺杂实现半导体,但目前主要还是当导体使用,比如在充电电池中的应用。在这些半导体材料中,目前只有硅在集成电路中大规模应用,充当着集成电路的原材料。在自然界中,硅是第二大丰富的元素,比如沙子,就含有大量的二氧化硅。所以说制造芯片的原材料是极大丰富,取之不尽的。

如何从沙子中提取单质硅呢,这就牵涉到一系列化学反应,具体不表。提取的硅纯度越高,质量越高。提取出的单晶硅根据不同的需求和工艺,做成不同的尺寸,常见的如6寸、8寸、12寸等。


接下来,把这些硅棒像切黄瓜一样,切成一片一片的。每一片我们称为:晶圆(wafer)或者翻译为晶元。晶元是设计集成电路的载体,我们设计的电路,最后就要在晶元上实现。每一个晶元上,可以实现上百上千个芯片电路,如下图,每一个小格子都可以看作是一个芯片电路的实现。接下来还要将这些芯片电路切割、封装、引出管脚,才能焊接到我们的开发板上,做成整机产品。


那在晶元上是如何实现电路的呢?将晶元拿到显微镜下观察,你会发现,里面全是密密麻麻的3D电路,犹如一座巨大的迷宫:


要想弄明白在晶元上是如何实现我们设计的电路,就需要一点电子电路的基础知识了。电路都是由大量的三极管、二极管、CMOS管、电容等元器件组成的,我们搞懂了一个CMOS管是如何在硅片上实现的,也就搞懂了整个电路在晶元硅片上的实现原理。这些元器件的实现原理,其实就是PN结的实现原理。而PN节的工作原理也是半导体的基本工作原理。PN结是构成二极管、二极管等半导体器件的基础。想要了解PN节的导电原理,还需要稍微了解一下金属的导电原理。


我们知道,一个原子由质子、中子和核外电子组成:中子不带电,质子带正电,原子带负电,整个原子显中性。根据电子的能级分布,一个原子的最外层电子数为8时最稳定。对于钠原子,核外电子层分布为2-8-1,最外层1个电子,能量最大、受原子核的约束力小,所以最不稳定,受到激发容易发生跃迁,脱离钠原子,成为自由移动的电子。这些自由移动的电子在电场的作用下,就会发生自由移动,形成电流,这就是导体导电的原理。很多金属元素最外层的电子数小于4个,容易丢失电子,所以容易导电,是导体。而对于氯原子,最外层7个电子,倾向于捕获一个电子,形成最外层8个电子的稳定结构,氯原子不能产生自由移动的电子,所以不能导电,是绝缘体。


半导体元素,一般最外层4个电子,比较特殊:这些原子之间往往通过“共享电子”的模式存在,多个原子之间分别共享其最外层的电子,通过共价键形成稳定的结构。


但是稳定也不是绝对的,当这些电子收到能量激发时,也会发生跃迁,成为自由移动的电子,同时在共价键中留下相同数量的空穴。这些自由移动的电子非常少,在电场的作用下,也会发生移动,形成电流;同时,临近空穴的的电子也很容易跳过去填补这个空穴,造成空穴的移动,空穴带正电荷,空穴的移动也会形成电流。


因此,半导体导电有两种载流子:自由电子和空穴。但是因为硅元素的特性,只能生成极少数的自由电子和空穴,这就决定了半导体无法像金属那样导电,但也不像绝缘体那样一点也不导电。然而正是这种特性,才促成了半导体的飞速发展。


既然半导体内自由电子和空穴浓度很小,导电能力弱,那我们能不能想办法增加两种载流子的浓度呢?浓度上去了,导电能力不就增强了吗?办法是有的,那就是掺杂。我们可以在一块半导体两边掺入两种不同的元素:一边掺入三价元素,如硼、铝等。硼的电子分布为2-3,最外层3个电子,在和硅的最外层的4个电子生成共价键时,缺少一个电子,于是从临近的硅原子中夺取一个电子,因此产生一个空穴位。这种掺杂的半导体称为空穴型半导体,简称P型半导体。


我们在半导体的另一边掺杂一些五价元素,比如磷元素。磷原子最外层有5个电子,在和硅原子的最外层4个电子生成共价键时,多出来一个电子,成为自由移动的电子,这种半导体称为电子型半导体,简称N型半导体。


我们在一块导体的两边掺入不同的元素,使之成为不同的半导体,一边为P型,一边为N型。


在两者的交汇处,就会形成一个特殊的界面,称为PN结。理解了PN结,你也就理解了半导体的核心原理,接下来我们看看PN结里到底有什么名堂。


首先,由于一块半导体两边空穴和自由电子浓度不同,因此在边界处会发生相互扩散。分别越过边界,扩散到对方区域的空穴和自由电子在边界处互相中和掉,P区边界处的空穴被扩散过来的自由电子中和掉后,剩下的都是不能自由移动的负离子;同样,在N区边界处留下的都是正离子,这些正负离子由于不能移动,形成了空间电荷区和耗尽层。同时会在这个区域内形成一个内建电场。这个内建电场阻止P区的空穴继续向N区扩散,同时阻止N区的自由电子向P区扩散,多子的扩散和和少子的漂移从而达到一个平衡。这个区域就是我们所说的PN结。载流子的移动此时已达到平衡,因此流过PN结的电流也为0。


这个PN节看起来也没啥,但它有一个特性:单向导电性。正是这个特性,树立了它的牛X地位,也构成了整个半导体大厦的基础。我们先看看这个特性是怎么实现的:当我们在PN结两端加正电压时,P区接正极,这时候就会削弱PN结的内建电场,平衡破坏,空穴和自由电子向两边扩散,形成电流,呈导电特性。当我们加反向电压时,内建电场增强,阻止了载流子的扩散,不会形成电流,所以呈现高阻特性,不导电。


无论二极管、三极管还是MOSFET场效应管,其内部都是基于PN结原理实现的,我们搞懂了PN结的原理,接下来我们就看看如何在一个晶元上实现PN结:


这就涉及到集成电路工艺的方方面面了,包括光刻、刻蚀、离子注入、薄膜沉淀等步骤。为了简化流程,方便理解,我们就讲讲核心的两个步骤,光刻和离子注入。离子注入就是掺杂,根据前面的理解,就是在硅中掺入三价元素硼和五价元素磷,生成PN结构成的各种元器件和电路。光刻就是在晶元上给后续的离子注入操作开凿各种掺杂窗口。


原理很简单,但如果我们在一个硅衬底上,要实现千万门级的电路,上亿个晶体管,难度就比较大了。尤其是纳米级的电路,比如28nm、14nm,要将千万门级晶体管都刻在一个小小的晶元上,这就要求每个元器件尺寸要非常小,这时候光刻机登场了,光刻机主要用来将你设计的千万门级电路映射到晶元上。这对光刻机的要求非常高,要非常精密。因此光刻机非常贵,最牛逼的就是最近网上热炒的荷兰光刻巨头ASML,一台光刻机1亿欧元,很多代工巨头比如台积电、三星、Intel都是其客户。


光刻机的作用就是根据掩模,开凿各种掺杂窗口,然后通过离子注入,生成PN节,构建千千万万个元器件。电路中的元器件都是通过这种复杂的工艺、生成不计其数的PN结构成的。同时,离子注入也是一门大学问,网上PO一张关于离子注入的公式,感受一下它的魅力:


这些工艺完成后,在一个晶元上就会有成百上千个芯片的原型:芯片电路,用专业术语就叫Die。


然后还要经过切割、封装,引出管脚、测试,才会变成市面上我们看到的芯片的样子



一款CPU是如何设计出来的?


前面一段,我们了解了芯片的制造过程,也就是如何从沙子中提取硅、把硅切成片,在片上通过离子注入实现PN结、实现各种二极管、三极管、CMOS管、从而实现千万门级大规模集成电路的大致流程。接下来,我们继续了解一下,一款CPU是如何设计出来的。集成电路设计一般分为模拟IC设计、数字IC设计以及数模混合等。而数字IC设计,比如设计一款ARM Soc CPU芯片的基本流程如下:


1)设计芯片规格:根据需求,设计出基本的框架、功能、模块划分。有些复杂的芯片可能还需要建模、使用MATLAB等工具进行仿真。


2)HDL代码实现:使用VHDL或Verilog语言将要实现的硬件功能描述出来、通过EDA工具不断仿真、修改,验证直至逻辑功能完全正确。这种仿真我们一般称为前仿,只验证逻辑功能是否正确,不考虑延时。这个阶段也是最重要的阶段,一般会花费大量的时间、验证工程师不断验证芯片功能的正确性。有时候为提高效率,也会使用硬件仿真,通过FPGA平台进行验证。当然,这也是数字IC验证工程师干得活。


3)逻辑综合:仿真验证通过后,再使用专门的EDA工具将HDL代码转换成逻辑门电路。专业术语叫做将HDL代码翻译成门级网表(netlist)。在综合过程中,需要设定一些约束条件,让综合出来的电路在面积、时序等参数上满足要求。这个阶段的仿真一般称为后仿,要考虑延时等因素,跟实际芯片已经很接近了。


网表文件用来描述电路中元器件之间的连接关系。有数字电路基础的同学可能都会知道,任何一个逻辑关系或运算都可以转化为相应的门级电路来实现。而网表就是用来描述这些门级实现电路的连接信息。


还需要注意的一个地方是:门级电路是由不同的晶圆厂,也就是芯片代工厂以工艺库的形式提供的,比如中芯国际、台积电等。如果你设计的芯片要台积电代工制造,工艺要求是28nm,那么你在设计芯片时,台积电会提供给你28nm级的工艺库,你综合后生成的电路参数跟台积电生产芯片使用的工艺参数是一致的。


4)仿真验证:对生成的门级电路进行各种静态时序分析、验证。通过后,整个前端设计就结束了:从RTL代码到生成门级网表电路。


5)后端设计

通过前端设计,我们已经生成了门级网表电路,但这跟实际的芯片电路还有一段距离,我们还需要对其不断完善和优化,进一步设计成物理版图,也就是代工厂做掩膜需要的版图。后端设计包括很多步骤,一般包括:

DFT:designed for test,可测性设计。芯片内部往往会自带测试电路,在设计中插入扫描链。

布局规划:各个IP模块电路的摆放位置、时钟线综合、普通信号线的布线

版图物理验证:设计规则检查、连线宽度、间距是否符合工艺要求、电气规则简则等等。

物理版图验证ok后,会将这个物理版图以GDSII文件格式交给芯片代工厂(foundry),至此,整个芯片设计仿真验证流程结束,我们称为tap-out。


物理版图是由我们设计的电路转化而成的一系列几何图形,如上图,跟PCB版图类似,也分为好多层。物理版图包含集成电路尺寸大小、各层的拓扑关系等。代工厂会根据这些信息来制造掩模、然后使用光刻机,通过这些掩模在晶元的硅片衬底上开凿出掺杂窗口,接着就对硅片进行离子注入,掺杂不同的三价元素和五价元素,生成PN,进而构成各种元器件、电路。再通过刻蚀等工艺,可以在晶圆硅片上生成多层立体的3D电路结构。

好了,到了这里,我们已经把整个芯片设计、制造的大致流程给大家讲解完了,看起来很简单,其实集成电路设计制造的每个环节,都有极高的技术含量,集成电路行业是一个高度专业分工的行业,每个环节都有不同的行业巨头把守,从芯片设计、制造、各种EDA工具、IP核、光刻机、刻蚀机,每个环节都有非常专业的制造商、服务商、EDA工具商,精确严谨地配合,同时也分享着IC设计产业链上的超额利润。


设计一款CPU到底有多难?


网上很多媒体甚至用表格列举了中国芯片的依赖率及自给率,除了消费电子领域的应用处理器AP外,其它很多领域的自给率都是0%。这也从一个角度说明:我们集成电路发展的空间无比巨大、可以想象的空间很广阔。


差距比较大的地方,主要在模拟、射频、AD转换等领域,这些基本上被欧美一些巨头垄断,更悲催的是,很多核心领域现在已经禁止华人从事这方面的工作,可见美国政府对这些高精尖的领域技术保护非常重视。而在一些消费电子领域,由于ARM的IP授权模式,大大降低了SOC的设计门槛,再加上半导体产业成熟严格的分工体系:设计、代工、封装测试一条龙,所以中国最近几年在消费电子领域SOC设计方面发展迅速,涌现出了很多芯片和公司,比如海思、展讯、联芯、全志、瑞芯微等。从手机基带、RF到AP都慢慢缩小了与国际半导体巨头的差距。比如海思的麒麟系列,对标高通的骁龙系列,性能其实已经不相上下。


在ARM构建的生态和商业模式下,SOC芯片设计企业可以跟这些芯片巨头有同台竞争的机会,至少能参与进来:你牛X,可以拿到ARM的指令集授权,做自己的微架构,我没这个实力,搞个低端领域的,搭个积木还是绰绰有余的。嵌入式市场,不像PC X86一统天下,它是分散的、多需求的、难以垄断的。所以这也就给很多做ARM AP芯片的公司很多机会,你做手机、我做平板、智能电视、网络盒子、游戏机、挖矿机,只要找准一个方向,用低成本优势,就可以活下来,再图技术慢慢积累和发展。所以在ARM AP这一块,你会看到有很多公司,以后还会出现很多公司,这方面应该最快能满足芯片的自给,当然,这也给嵌入式开发者提供大量的工作岗位。


在PC和服务器领域,可能就没这么容易突破了。我们知道,在X86领域,是Intel和AMD的天下。设计一款X86架构的芯片,到底难不难呢?其实不算难,国内能找出不少公司可以设计出来。那难的是什么呢?是生态和专利授权。Intel在X86领域可以说是一家独大,在它的专利保护下,基本上就封死了你想自己设计X86架构CPU的道路,钱再多也不让你做,不给你专利授权。AMD公司还是美国为了防止垄断,才促使Intel跟其专利交叉授权,达到一个平衡,不过AMD现在貌似也过得不轻松,在CPU这块被Intel压得也是步履维艰。除此之外,还有一家公司,台湾的威盛电子:VIA,就是电脑一开机显示VIA标志的,VIA也有一些X86专利,也获得Intel专利授权,但是做CPU貌似也很艰难,在芯片方面的盈利还不如旗下的酒店业务赚得钱多。其实这也没办法,赢者通吃,后面的可能连汤都喝不到。看网上的新闻好像跟上海国资合股成立兆芯,研究X86 CPU和显卡,国家砸了不少钱,不知道能不能趟出一条路来。


跟兆芯对标的国内芯片公司,有一家比较有名:龙芯。龙芯走的是MIPS路线。MIPS跟ARM、X86一样,也是一种指令集,也是当前世界上还在存活状态的指令集,跟ARM、X86可以说是三足鼎力吧。据说,龙芯当年500万拿到MIPS指令集的永久授权,然后自己不断添加、完善指令集,形成了自己的指令集。龙芯的优势是MIPS有了一定的生态市场,可以不必从零开始搭建自己的生态,有利于自己CPU的推广。最新研发的微架构GS464E根据网上的相关资料,已经超越Intel的i3架构,跟i5稍有差距,但同时已经超越了同时期的Intel Atom、VIA Nano、ARM Cortex-A57等低功耗架构。


这里得给大家普及一下什么是指令集和微架构。指令集,大家学过汇编语言的可能都知道一些汇编指令,这些汇编指令其实就是指令集的助记符,我们设计一个CPU架构,肯定要设计一系列指令,这些指令集可以看做是一个标准,我们在设计CPU硬件电路时就是根据这些指令集,去设计一些指令译码、执行电路,执行我们的指令集。那这个根据指令集设计的CPU硬件电路就是微架构。不同的CPU架构,指令集是不一样的,这就导致了,不同的CPU架构,需要的编译环境、开发环境是不一样的。比如ARM架构,我们需要开发一个编译器,将我们的C语言程序翻译成ARM的指令集,然后才能在ARM架构的CPU上运行。而对于X86平台,我们需要开发另外一个编译器,将C语言程序翻译成X86指令,然后才能在X86平台上运行。为什么在X86平台上不能运行ARM指令呢?很简单,因为CPU硬件电路在设计时是根据X86指令集设计的,只支持X86指令的运行,不支持ARM指令,无法运行。


由此,我们可以看到,不同的指令集,不同的CPU架构,就需要不同的编译器和开发环境,由此也就形成了不同的软件生态。对于很多芯片设计者来说,开发一个指令集并不难,现在国外甚至已经有开源的了,大家到Linux内核源码的arch目录下面可以看看,有太多的架构了。根据这些指令集设计一个微架构,设计出一个CPU也不难。难的是什么呢?难的是你要构建出跟你的CPU配套的一系列生态,比如编译器,你要自己开发,大量的应用软件你也要自己开发,否则谁会用你的CPU呢?这天大的工作量根本不是一个公司或团队能完成的,需要一个产业链的完美配合。所以,我们可以看到,就算你研发出了自己的CPU,要想推广起来,构建自己的生态,非常困难。推广困难就难以盈利,难以盈利就很难继续迭代下一代的产品,由此形成负反馈,如果没有背后资金或者国家支持,真的很难坚持下去。比如以前在学校曾参与过一个项目:设计一款基于某种自主架构的SOC。那这个项目需要多少人配合呢?芯片设计这方面的人不说,光软件方面就需要不少:编译器工具需要自己开发,这个工作量就忒巨大,芯片流片成功后,Linux内核、android系统需要自己移植,各种库,比如C库也需要自己移植,包括上面的应该程序、Java虚拟机等等,工作量巨大。后期系统软件,从驱动层、中间层到应用层,还需要不断针对这种架构进行优化。就算优化完美,没有大问题,还要推广,如果没有很多日常的应用加持,构建生态也很难。赚不到钱,性价比不划算,别人跟着一起构建生态的欲望也就不大。


综上,我们可以看到,设计一个CPU,从技术上讲并不难。但从商业或者说生态上想成功就很难:别人已经构建好的生态红利,会通过专利壁垒不让你进;而你从零开始构建全新的生态,没有了这种先发优势,很难很难。折中之策就是你想办法兼容这个生态。比如android手机,现在绝大多数APP都是基于ARM平台,Intel想推广自己的atom平台,那就需要大量的APP可以运行到自己的atom平台上,这就需要它自己的X86平台去兼容这些app。包括前几年,Intel这么牛逼的行业巨头也肯放下高贵的身姿跟深圳的一些白牌、山寨厂商打成一片,主要原因就是,Intel对ARM构建的生态也是无从下手,深挖洞、广积粮、树技术壁垒、单打独干已不适应行业玩法,也想自己构建这个生态,市场效果如何,还有待时间检验。


设计一款CPU,除了后续推广、生态构建比较艰难外,在设计过程中,其实很多核心IP、技术模块、EDA开发环境也需要外援,比如设计一款手机芯片,CPU需要向ARM公司授权,各种控制器IP如果自己研发不了,也需要购买,这些研发IP的公司一般分布在北美、欧洲、以色列等国家,而中国、台湾和韩国的主要厂家主要基于ARM架构和各种IP搭建应用处理器SOC,所以搞嵌入式的往往会看到,很多处理器都是东亚国家、美国设计,但是其实那些背后卖IP的公司倒赚了不少,因为很多做SOC设计的购买IP授权其实要交很多钱,它们只是赚了一些“组装费”。这还不算,在设计CPU的过程中,各种仿真设计、包括前端、后端设计、前仿后仿、都需要EDA开发环境支持,都需要花钱购买,或者花钱买培训。以前工作过的一家公司,貌似什么后端设计还是后端仿真的一款EDA软件,使用的是欧洲一家公司开发的,光软件版权费不说,他们过来培训,一个小时就是3000欧元,吃饭时间也要算在内,就这么刁,没办法。就此一家,不买拉倒。由此可以看到,芯片行业我们现在还相当于富士康阶段,赚取一个“加工费”而已,后面的道路,再加上各大芯片巨头的技术壁垒和封锁,任重而道远。


与此同时,半导体行业也是一个忒烧钱的行业,不像搞互联网,一台电脑一根网线,就可以开干。芯片行业处处都需要钱、各种仪器、设备、EDA软件、流片、封装测试都需要大把的钱,而且流片风险很大,很多芯片前几次流片还不一定成功,需要不断修改bug,不断完善。而流一次片就需要几百万,所以对于很多小公司来说,如果没有足够的资金支持,前几次流片不成功的话,基本上就黄了。所以,这也是为什么除了国家大基金,很多民间资本不愿意进入的原因:投资周期长、风险大。不如投资互联网、金融P2P,共享单车,搞搞外卖:风险小、收益快、容易割韭菜、容易收割各种智商税。然而,对于一个国家来说,如果人人都想短平快,搞金融,玩庞氏资本游戏,不肯投入时间、精力和资本去从事基础领域的研究,那未来会有更多的地方被卡脖子,就像中兴一样,一剑封喉。

微信公众号(微博):宅学部落

嵌入式技术交流群:475504428


猜你喜欢

转载自blog.51cto.com/zhaixue/2108842