教育培训 > 据说大型芯片有几十亿个晶体管,一个都容不得出错,但为何芯片可

据说大型芯片有几十亿个晶体管,一个都容不得出错,但为何芯片可

2020-09-13 16:06阅读(67)

据说大型芯片有几十亿个晶体管,一个都容不得出错,但为何芯片可靠性还这么高?:许多了解芯片结构的朋友可能都思考过这样一个问题,大型或者高精度芯片的内部有

1

  许多了解芯片结构的朋友可能都思考过这样一个问题,大型或者高精度芯片的内部有几十亿个晶体管,而且精度控制在几纳米的范围内,比如华为麒麟990 5G处理器,不到一个指甲盖大小的空间里封装了103亿个晶体管。那么 芯片是如何保证其持续且高效地运行的呢?

  其实题目中的疑问可以分成两个问题,一是芯片中的几十亿个晶体管是否一个都不能出错?二是芯片如何保持高的可靠性?

  芯片中的晶体管是否一个都不能出错?

  要想了解这个问题,首先我们要了解芯片的制作过程,芯片的制作过程主要分为三个过程:

1.首先是晶圆的制作,我们需要将石英砂制成高纯度的单晶硅圆柱体,之后将其切片打磨,制成我们需要的晶圆片;

2.接着是进行光刻,掩膜,机械,化学处理等过程,著名的荷兰阿斯麦(ASML)光刻机就是靠这个加工过程赚取丰厚利润的;

3.最后是焊接和管脚处理,塑装,切割,测试等,每一步都需要精细处理,才能制成合格的芯片。

  在简单了解了芯片的生产制作过程后,大家应该都了解芯片生产的困难了吧?考虑到芯片原材料的材质,环境状况,人为影响以及设备影响,芯片的制作过程总会出现纰漏,做不到完完全全和设计初衷一模一样。

  所以在首先在设计之初,芯片会设计一些多余的晶体管,也就是芯片会预留一些保留区域,假设在制作过程或使用过程中某个晶体管坏掉了,则系统会自动屏蔽掉这一组晶体管,从保留的多余晶体管开发出一组晶体管来取代它。

当然,保留区域的晶体管数目是有一定限度的,如果使用范围超过这个限度,那么这颗芯片就只能进行降级运行,如砍掉部分处理器件的功能。

  再者,芯片制造过程中,产商也会严格把控生产过程,毕竟废品率的居高不下也意味着成本的居高不下。

所以制造过程的高精密度,例如车间的超净和超静,材料的纯度,减少人工错误提高制造过程的自动化等等。最后在封装测试阶段,也会进行各种检测,确保送到用户手上的产品是能够正常运行的。

  芯片为何有如此高的可靠性?

  芯片之所以有如此高的可靠性,这还要得益于工业界所积累的一套完整的流程体系所确保的结果。

我们知道软件代码的开发速度很快,而且可以修修改改,但是硬件不行。产商当前发布的新产品,基本上都是该公司的研发人员两到三年前开始设计,历经2年测试,历经硬件架构师设计,测试工程师测试,找出bug并进行修改,最后由后端工程师将代码转化为实际的电路,进行布局和布线。

所以相比于软件,硬件不仅耗时长,而且投入大,同时还要保证不出纰漏,自然难度完全不一样。

  同时硬件本身就能够在某些错误造成时进行恢复,只要恢复时间够短,一般就不会察觉到系统曾经的失败和错误,也基本上不会影响它们的正常运用。

  总结

  中国每年都会进口大量高精度的芯片,其中主要原因是中国在高精度芯片的制作上受制于西方各国,从制作晶圆的原材料,到制作工艺过程中用到的高精度光刻机以及各种仪器,中国的技术储备都与西方国家有着较大差距。

虽然中国现在也在奋力发展芯片技术,上海微电子的国产光刻机技术也有了很大进步,但是离世界一流水准仍然有不小的距离。但是不管怎么说,我们只要了解差距,正视差距,加大科研普及和科研投入,我们就一定能早日制作出真正的从设计到供应链生产都是纯国产的芯片。

2

首先,我们需要提纯硅。硅片越纯,杂质的干扰就越小。

一般的半导体器件,比如你家老式收音机里用的三极管之类,就要求99.9999%以上的高纯硅(6个9);而大规模集成电路需要至少99.9999999%以上的高纯硅(9个9);如CPU这样的计算机芯片,则需要99.999999999%以上的高纯硅(11个9);人类目前能制造的最纯的硅材料,纯度可达12个9。

换句话说,硅片本身就有极高的纯度,以致于用于CPU生产的一千亿个硅原子中,只允许含有最多一个其它原子。

——千亿绿豆中只有一颗红豆太夸张?万一五颗红豆好死不死恰好一起出现在10厘米范围内呢?

仅仅纯度高还不够。用来做芯片的硅,它还必须“生长”为“单晶硅”——也就是说,硅原子的晶格排布必须整齐划一,像多晶硅那样杂乱无章是不行的。

如果你问“如此高纯度的硅是如何提纯的?”,那么我只能回答“这是生产厂家的技术秘密,全世界都没多少人知道”。

单晶硅里面,杂质分布并不均匀。杂质富集区很容易导致(意料之外的)漏电流增大、晶格缺陷等诸多问题(现代芯片制造甚至会借助各向异性刻蚀等手段,晶格缺陷必然导致刻蚀出的沟道畸形),这些都可能加大芯片的失败率、增加它的发热量、限制它的性能。

因此,普通的晶体管,6个9的硅便可满足需求;大规模集成电路就必须9个9;CPU这样的超大规模集成电路,11个9的高纯硅才可能把良品率提高到可行范围——芯片行业可不缺聪明人,10个9够用他们就绝不会像个冤大头一样,掏大价钱买11个9的昂贵材料。毕竟纯度加一个9可不是多敲一下键盘那么简单:你猜人类已经能造12个9的硅材料了为什么不大量应用呢?

有了最好的原料,才有可能做出最高品质的成品——让你在沾了油的宣纸上写字,这副作品是不是就很难完美了?一样的道理。

现在集成电路的线宽只有十几个纳米,主流高端的只有7纳米了(今年5纳米的芯片都要上市了)。

掺杂的目的,是在这几个纳米的范围内、该磷是磷该硼是硼、准确的把它注入纯净的硅晶格之间,从而在局部生成P型和N型半导体,使得它们恰好组成电气性能合格的场效应管(构成的门电路)。

说场效应管有点粗糙了。实质上,因为半导体原理以及电路原理,芯片上几个纳米宽度的P区和N区交错纵横,它们彼此之间还能形成许多寄生电路——而CMOS工艺甚至能利用这些寄生电路为我们服务。

把如此精确的、定点生成P/N型半导体的工艺叫“掺杂”,是因为半导体材料方面的研究以硅锗为主——或者说,半导体就是往硅/锗里掺入不同物质、然后研究它们的导电性的一门学科。

为了便于讨论,当我们谈起半导体时,如果总是说“往硅中掺入五价元素A”“掺入三价元素B”实在太麻烦了。尤其是不关心或者不知道究竟掺了什么时,这样就更啰嗦了。

半导体主要就是利用它的电气特性,因此绝大多数场合都不关心掺了什么只关心电气特性。

因此,在不需要讨论具体工艺参数时,业内就笼统的说“掺入杂质”或者“掺杂”。

习惯这么说之后,集成电路工艺里,准确的在硅片某个区域的晶格间注入某种五价元素/三价元素这一步,就也被简称为“掺杂”。

因此,再强调一遍:千万不要望文生义,以为纯净的硅不好用,做集成电路前还得添点杂质进去。

事实上,这一步工艺虽然叫“掺杂”,但实际上是在硅片上就地制作晶体管!
注意PN结两侧掺的东西可是不一样的,容不得半点混淆!每种元素的掺入位置也必须绝对精确,不然将来只有几十甚至十几个纳米的线路搭不上,这芯片可就做废了。

敢把这个真当成“随随便便撒点杂质”那种“掺杂”,那可丢人丢大发了。

和对硅片的苛刻要求一样,光刻机本身,从透镜的磨制精度到光刻胶到切割出的晶圆的平整度再到用到的一切一切,几十项工艺以及这些工艺需要用到的工具/材料,几乎全都有很高级别的苛刻要求(注意这几十项仅仅是工艺,真正要做的事项可不止这么一点点)。

任何方面微乎其微的、拿最好的光学显微镜都看不清的一丁点缺陷,都可能导致芯片良品率直线下降——甚至,哪怕一切到位,哪怕Intel这种业界顶尖公司,新工艺上马,良品率往往也相当的低。经常需要长时间的调试、磨合,才能保证良品率达到可用范围。

是什么问题导致 10 纳米制程芯片良品率过低?会对下游产品有何影响?

不仅光刻机本身。它所处的环境也都要求苛刻。

比如,它必须置于严格无尘的环境里。因为落到芯片上的一粒灰尘,就可能毁掉数百个门电路。

类似的,如果不采取严格避震措施,光刻机工作时,800米外一辆汽车开过,引起的颤动都可能导致大批芯片报废!

总之,通过数不清的方面无数科研人员、工程师以及技术工人的各种努力,弥补一切方面的一切短板,该妥协的地方酌情妥协,人类终于可以保证,CPU芯片上光刻出的门电路,出错概率可低于亿分之几。

对于普通级别的芯片,这个工艺水平已经可以保证“出错几乎是不可能的”——因此颇有一些人以为“做芯片什么都不用管坏了就扔就行”。但他们并不知道,别人为了把芯片产线质量稳定度提高到这个程度付出了多少辛劳。

但对CPU这样最为尖端的、同时挑战集成度和可靠性的芯片,这样往往也还不够。

因此,人类在设计CPU电路时,便将其模块化;然后故意制造出冗余的重复模块来;当CPU光刻完成后,通过测试,屏蔽掉不良模块(不良模块不仅仅是出错的模块,还包括热稳定性不佳等缺陷)。这样哪怕发生了少量错误,制作成功的几率也不会太低。

Intel i3 和 i7 的成本差是多少?如果成本相当,为什么不全生产 i7 呢?

更进一步的,如果不良模块实在太多、以至于整个核心都不能用了,还可以屏蔽掉整个核心——原始设计是8核,屏蔽4个就可以当4核卖了。六核双核等情况依此类推。

(当然,有时候运气好良品率特高,但舍不得掏钱的用户对低端CPU有需求,高端的生产太多又卖不掉,厂商也可能故意把高端CPU的核心屏蔽掉、频率限低,当低端CPU卖给用户——这和主题无关,就不讨论了)

但是,请注意,这个冗余设计既浪费芯片面积,又加大了研发投入、增加了诸多方面的复杂性只有类似CPU这样挑战人类极限的工程,迫不得已才会采用——所以才说,拿“坏了就屏蔽/坏了就扔”当真相的都欠缺常识。

打个比方的话,问“我要经常开车跑长途,这可能做到吗?”

正确回答是,先挑选质量足够高的车,汽车工业刚起步时几十公里就得修一次的烂车是没法用的(提高原料质量工艺可靠性);然后选用更容易排错维修的车型(设计时考虑可维修性);最后,真跑废了就扔掉再买一辆。

嗯,跑长途基本靠扔车?你觉得这回答过脑子了吗?真拿扔车不当回事的那叫F1,不是长途司机。

——那些张嘴就拿屏蔽说事的,多半是懒得动脑。他们就没想过,如果拿6个9的硅片造CPU,这密密麻麻的缺陷,靠屏蔽能屏蔽过来吗?更不用说随便抓把石英砂拿电炉土法上马搞的浑浊不堪的垃圾硅了。

必须先有一个极高稳定度的平台,才有耍屏蔽之类小聪明的余地

——换句话说,屏蔽是很有效,但它在这个问题里,是最不重要最没技术含量的因素。

PS:鉴于某些假装专家的外行捣乱,我在这里科普下所谓的“屏蔽”究竟是怎么一回事。

我们知道,内存有很多很多单元,但总线只有一条。那么,当CPU要访问64g内存中的其中一个单元时,它就要在地址线上输出一组电平,使得该内存单元被选中(实际相当于通过一组与门,切断了除被选择单元外其它任何内存单元的输出信号),然后就可以读到正确的值了。

实际上,计算机里的一切,上至寄存器下至键盘,都是以同样的逻辑控制输入输出的。只不过未必都在总线上(或者说没有统一编址)而已。

CPU内部也是如此。核心之间有通信线路,核心内部,从加法器到寄存器再到缓存,全都有类似总线的数据―地址线路相互连接。

因此,只需记录错误单元的地址,避免访问它甚至不给它供电,就可以达到屏蔽的目的了(反过来也行:比如记录寄存器EAX等和内部地址的对应表,不注册坏掉的寄存器或其它单元,也可达到屏蔽的目的)。

这种屏蔽甚至可以是自动的:通过检测,给坏掉的单元置位;然后在CPU自检流程排除它们即可。

总之,可行的做法很多很多,具体某个厂商用了哪种是不可预测的。我们只需知道“能做到”就对了。

假专家只知道硬连线、跳线,说明他还是有点电路基础的。但他显然不懂数字电路的地址机制,不知道就连寄存器都是有地址的(但注意和内存地址区分。它是CPU核心内部地址,这个地址甚至对同一颗CPU的另一个核心都可能是不可见的);有地址,只要不是短路型故障(短路故障还需要从供电上屏蔽),就可以用简单的“避免访问”达到“屏蔽”目的。换句话说就是:这人计算机原理学的一塌糊涂,数字电路基本还是没入门水平。大二相关科目也不知怎么混过去的。

当然,我拿寄存器举例是为了说明问题,证明哪怕寄存器这种粒度都有办法屏蔽,并不代表CPU就真的细致到了寄存器这个粒度。实际上,有工艺精度保证,粒度太小了反而增加成本,工程是需要根据实际情况取舍的。

——这段严格来说是废话,不用说大家都知道;但万一遇到手电筒专家一样只照别人不照自己的家伙……还是明确写出来省事。

对问题二,这个要通过软硬件配合来解决。

首先,成熟的硬件本身就非常非常的稳定,可以长时间运行不发生任何错误(但很多情况下,错误在所难免。比如电磁干扰、机械振动、宇宙射线等等)。

其次,计算机硬件本身也可以自带校验功能。比如服务器经常用带ECC校验的内存条。

当硬件出错时,它可以自动发现,然后通过中断通知软件处理(或自动尝试恢复)。

然后,程序员在写程序时,也会有很多错误检查;一旦校验出错,程序便立即退出。

为了保证7X24小时安全性,业界有许多成熟的经验甚至现成的框架。

比如,有一种硬件叫“看门狗(watchdog)”,它相当于一个自动递减的计数器;如果软件运行正常,那么它就应该不停复位这个计数器,避免它递减到零;如果计数器递减到零,就说明软件运行出错了;于是芯片立即重启、然后软件尝试恢复执行——单片机系统经常用到它。

当恢复时间足够短时,人就不会觉察到系统曾经失败过(但一般会记入日志,以便分析故障原因);对很多系统,包括汽车/飞机/卫星上的各种系统,只要恢复时间足够短(依设计允许的余量而定),也不会影响它们正常运行。

PC/服务器一般不用简陋的看门狗,它们有完善得多的错误发现/恢复机制。包括但不限于权限检查、错误中断以及编程语言提供的结构化异常等等机制。

出错了的程序会立即退出?你可能会说,不对啊,这样服务不就中断了吗?

没关系。我们可以准备一个监控程序,定时检查,发现服务程序失败就重新拉起它。

这个监控逻辑也可置于服务应用本身,然后同时运行两个同样的应用,让它们互为备份。这就是著名的“双进程相互监控、相互唤醒”——这个技术之所以如此著名,是因为有人拿它不办正事,而是拿来做流氓软件坑用户了。嗯,好的技术落到坏人手里就是这种下场。

对各种网站/搜索引擎之类庞然大物,依靠单台服务器的自我恢复能力已经不够。这时候还可以通过双机热备份/多机热备份(多台机器执行同样的程序,只是其它机器只运行但不输出结果;当其中一台出错时,另一台便可立即顶替它)、集群计算(如Google通过map-reduce灵活组合使用数万甚至更多台计算机,可自动分配任务、自动发现故障节点并屏蔽它)等等更为复杂、高级的架构,使得偶发故障不会影响它们的服务能力。

更进一步的,针对天灾、战争甚至核战争等等罕见事件,人们还开发了“异地容灾系统”,使得哪怕城市A的服务节点因重大事故无法服务,远隔千里的城市B的服务节点也可立即接替它,从而达到“不可摧毁”的目的。

化不可能为现实,这就是人类的智慧

3

7nM芯片何止万亿只晶体管?做芯片的的软件已经能把坏掉的单元排除,只在良品的单元上安排电路,所以不用担心芯片报废,真正的用户也很聪明把这些减量芯片称为单核,双核多核就行了。

4

现在芯片的晶体管数量是百亿以上,但是一个都不能出错的说法还是需要保留,芯片设计本身会考虑冗余问题,不是一个晶体管坏了或者不能正常工作了,就会导致芯片直接罢工,芯片自己会屏蔽掉损坏的核心来避免影响整个芯片的性能。

5

据我所知,是会有坏的,不过有容错机制。同样的晶圆,有的切出来是能做i7,有的只能是i5,就是因为有坏的。简单理解就是坏的少就是i7,坏的多就是i5。

这个问题应该有大牛能回答,期待更好更专业的答案。

6

谁说一个都不允许出错?芯片中,往往是一堆堆晶体管出现问题,检测后屏蔽有问题的部分,降低等级一样卖。i7,i5,i3就这么来的。