官方淘宝店 易迪拓培训 旧站入口
首页 > 仿真设计 > 射频仿真设计学习 > 资深工程师眼里的芯片设计

资深工程师眼里的芯片设计

05-08

曾经遇到一个问题,两个芯片,同样的Cortex-A53,同样的总线,同样的频率,同样的缓存和内存大小,跑同样的内存测试,性能差了40%。而经过优化之后,反超了20%。想搞清楚为什么,就需要知道,访存路径上有哪些影响因素?系统瓶颈可能有哪些地方?性能优化可以怎么做?等等。最近,这些问题终于有了答案,我把它们写下来,给我自己一个总结,也给有同样困惑的人一个解释。文章会很长,我想从CPU怎样访问内存这样一个既简单也复杂的问题入手,自问自答,并逐步引入更多的疑问和答案,最终把访存通路上每一个环节的硬件结构,特征,性能分析以及未来的发展趋势都加进去。很多概念,像缓存,同步,一致性,壁垒,锁等,并不复杂,可是他们是怎么在ARM SoC中实现的,效率又如何,我觉得还是有必要搞清楚。最后,我会重新分析文章开头的问题。这些知识并不是在重复一个处理器或者SoC的结构,而是分析硬件会怎样影响软件,软件如何利用硬件。并且,我是程序员,从来没有做过芯片设计,所有的知识都是从程序员的角度出发的,所以软件狗们应该能看懂。在开始之前,先说些轻松的话题。芯片厂商向客户介绍产品,从硬件角度说的最多的就是功能,性能,功耗和价格。功能这个主要就是看芯片提供了什么接口,比如闪存,内存,PCIe,USB,SATA,以太网等,还看内部有什么运算模块,比如浮点器件,解码器,加解密,图形加速器,网络加速器等等。性能,对CPU来说就是的测试程序能跑多少分,比如Dhrystone,Coremark,SPEC2000/2006等等。针对不同的应用,比如手机,还会看图形处理器的跑分;又比如网络,还会看包转发率。当然,客户还会跑自己的一些典型应用程序,来得到更准确的性能评估。功耗就是在跑某个程序的时候,整个芯片的功率是多少瓦。通常,这时候处理器会跑在最高频率,但这并不意味着所有的晶体管都在工作,由于power gating和clock gating的存在,那些没有被用到的逻辑和片上内存块并没在完全耗电。我看到的芯片公司给出的处理器最大功耗,通常都是在跑Dhrystone。这个程序有个特点,它只在一级缓存之上运行,不会访问二级缓存,不会访问内存。这样得出的其实并不是真正的最大功耗。但是从实际经验看,没有应用程序能让CPU消耗更高的能量,所以这么测量最大功耗也没什么错。当然,作为整体的芯片功耗,还得包括各种加速器和接口,尤其是会被用到的模块。芯片公司宣传产品的时候,会有各种各样的玄机在里面,任何一家都会把好看的数据放上来。这些数据大都是真实的,可是怎么摆这些数据是一门技术活,摆的好能误导不少观众,而x86,ARM,MIPS,PowerPC, ARC阵营的各家产品经理和市场人员都是这方面的好手。我会在深入介绍之后专门列一章说这些窍门。在设计SoC的时候,性能,功耗和价格就转换成了PPA。啥是PPA?其实就是性能,功耗和面积。其中,性能有两层含义。在前端设计上,它指的是每赫兹能够跑多少标准测试程序分。设计处理器的时候,会有个多少级流水线的说法。通常来说,流水线级数越多,芯片能跑到的最高频率越高,这个大家应该都知道。可是并不是频率越高,性能就越高。这和处理器构架有很大关系。典型的反例就是Intel的奔腾4,30多级流水,最高频率高达3G赫兹,可是由于流水线太长,一旦指令预测错误,重新抓取的指令要重走这几十级流水线,代价是很大的。而它的指令预测又极大依赖于编译器来优化,结果当时编译器又没跟上,导致它总体性能低下。你看MIPS或者PowerPC的处理器频率都不高,但是每赫兹性能相对来说还不错,总体性能就会提高一些。所以看性能要看总体跑分,而不是每赫兹跑分。前一段时间龙芯在宣传的时候就钻了这个空子,号称每赫兹都赶上至强了,但是也就能跑个1Ghz多,而16核至强可以到将近3Ghz。性能的另外一个含义就是指频率,这是从后端设计角度来说的。通常后端的人并不关心每赫兹能达到多少跑分,他们只看芯片能跑到多少频率。频率越高,在每赫兹跑分一定的情况下,总体性能就越高。请注意对于那些跑在一级缓存的程序,处理器每赫兹跑分不会随着频率的变化而变化。当然如果考虑到多级缓存,总线和外围接口,那肯定就不是随频率线性增加了。系统级的性能问题,我会在以后慢慢展开。那哪些因素会影响频率?就算只从后端角度考虑,答案也很多。我并不是做后端和制程的,只能把道听途说的写下来,仅供参考。首先,受工艺的影响。现在先进的半导体工厂就那么几家,Intel,台积电,三星,联电,格罗方德。拿台积电来说,它目前提供16纳米的工艺,其中还分了很多小结点,比如FFLL++和FFC。每个小节点各有特点,有些能跑到更高频率,有些功耗低,有些成本低。在不同的工艺上,芯片能跑的最高频率不同,功耗和面积也不同。其次,受后端库的影响。台积电会把工艺中晶体管的参数抽象出来,做成一个物理层开发包PDK,提供给eda工具厂商,IP厂商和芯片厂商。而这些厂商的后端工程师,就会拿着这个物理层开发包,做自己的物理库。物理库一般包含逻辑和memory两大块。根据晶体管的channel length,会有不同特性,适合于不同的用途的单元cell。而怎么把这些不同特性的库里的cell,合理的用到不同的前端设计模块,就是一门大学问。一般来说,channel length越短,电子漂移距离越短,能跑的频率就越高。可是,频率越高,功耗就越大,并且是指数上升。除了cell之外,还会有9T/12T这种说法,这里的T是Track,就是cell的高度。T越大,电流越大,越容易做到高频,相应的面积也越大。接下来,受布局和布线的影响。芯片里面和主板一样,也是需要布线的。每一层都有个利用率的说法,总体面积越小,利用率越高,可是布线就越困难。在给出一些初始和限制条件后,EDA软件会自己去不停的计算,最后给出一个可行的频率和面积。再次,受前后端协同设计的影响。比如,某个访问memory的操作,如果知道处理器会花多少时间,用哪些资源,就可以让memory的空闲块关闭,从而达到省电的目的。这种技巧可能有上千处,不自己设计处理器是没法知道的,哪怕你有RTL代码。再往上,就是动态电压频率缩放DVFS。这里需要引入功耗的组成概念。芯片功耗分成动态和静态两部分,静态就是晶体管漏电造成的,大小和芯片工艺,晶体管数,电压相关,而动态是开关切换造成的,所以和晶体管数,频率,电压相关。具体公式我就不列出了,网上有。控制动态功耗的方法是clock gating,频率变小,自然动态功耗就小。 控制静态功耗的方法是power gating,关掉电源,那么静态和动态功耗都没了。还可以降低电压,那么动态功耗和静态功耗自然都小。可是电压不能无限降低,否则电子没法漂移,晶体管就不工作了。并且,晶体管跑在不同的频率,所需要的电压是不一样的,拿16nm来说,往下可以从0.9V变成0.72V,往上可以变成1V或者更高。别小看了这一点点的电压变化,要知道,动态功耗的变化,是和电压成三次方关系的。1V和0.7V,电压差了50%,动态功耗可以差3.4倍。我看到过的数据,在500Mhz以下,处理器的动态功耗是小于静态功耗的,变成3GHz的时候,远高于静态功耗。再往上,就是软件电源管理,控制功耗了。芯片设计者把每个大模块的clock gating和power gating进行组合,形成不同的休眠状态,软件可以根据温度和运行的任务,动态的告诉处理器每个模块进入不同的休眠状态,从而在任务不忙的时候降低功耗。这又是一个很大的话题,以后再展开。从上面我们可以看到,功耗和性能其实是和在一起的。而芯片设计者可以用不同的工艺和物理库,设计出最高可运行频率,然后软件控制芯片动态运行频率和功耗。那面积呢?其实也是相辅相成的。由于针对不同的逻辑,memory和布线,选用了不同的物理库cell,不同的track,形成的芯片面积也会不一样。通常来说,越是需要跑高频的芯片,所需的面积越大。频率差一倍,面积可能有百分之几十的差别。可别小看这百分之几十,对晶体管来说,面积就是成本,晶圆的总面积一定,价钱一定,那单颗芯片的面积越小,成本越低,并且此时良率也越高。芯片成本除了制造费,还来自于授权费,工具费,流片费,运营开销等,通常手机处理器这样复杂的芯片,没有上千万美元是不可能做出来的。就算做出来,没有卖掉几百万片,那是肯定亏的。最后还想提下ARM的大小核设计。其最初的目的是想设计两组核,小核每赫兹性能低,面积小,跑在低频;大核每赫兹性能高,面积大,跑在高频。运行简单任务,大核关闭,小核在低频,动态功耗低,静态功耗占上风,并且由于面积小,总体功耗更低。而大核用高频运行复杂任务。和x86的单纯调节电压频率比,增加了一点低频小核面积,和整个芯片的面积比,其实没多多少。那为什么不让小核跑在高频运行复杂任务呢?理论上,由于每赫兹性能低,对于相同的任务,小核必须跑在比大核更高的频率才能完成,这就意味着更高的电压。此时,动态功耗占上风,并且和电压成三次方关系。最终的功耗会高出大核不少。此外,我们前面已经解释过,小核要跑在高频,面积会增大不少,可能比大核还要大。我们从里面可以看到存在一个平衡点。这个平衡点并不好找。拿A53/A57在28nm上举例,当它们跑在1.2Ghz的时候,功耗可能差两倍,性能却只差50%。而平衡点可能要达到2.5Ghz。事实上,很多手机芯片的大小核都是使用同样的处理器,跑在不同高低频率。所以,设计芯片很大程度上就是在平衡。影响因素,或者说坑,来自于方方面面,IP提供商,工厂,市场定义,工程团队。水很深,坑很大,没有完美的芯片,只有完美的平衡。高端人脉微信群经过一段时间的发展,目前已经聚集180多位行业高端管理人员。其成员主要来自如下公司: 华虹宏力、无锡海力士(高管) 、中芯国际、华力微电子(高管)、台积电(高管)、武汉新芯、新加坡UMC、Intel大连、应用材料(高管)、苏州和舰(高管)、无锡华晶、西安三星 ··· 加群链接: 半导体顶级人脉圈 行业高端微信群中国半导体论坛微信群1.职业微信群主要职业交流,求职/招聘。目前群里的HR有 台积电HR、西安三星HR、中芯国际HR、武汉新芯HR、意法半导体HR、华虹宏力HR,大连Intel HR.等20多家企业HR。与HR面对面,最及时了解职位需求(已有万人在群)。半导体职业群1/2/3/4/5/6/7. (职业群禁止广告)加群方法:第一步:长按扫描下方二维码,支付群管理10元加群费。

第二步:长按扫描下方二维码,添加群管专员(微信号:CT211ic),专员将会拉你入群。请一定说明要加哪个群。

2.区域微信群 区域群规则:1.所有区域群都可以发广告(只限本行业广告),但发广告前必须发10元以上红包。 2.防止机器人加入,进群后请主动打招呼。 3.申请时请说明所在公司及行业,比如:中芯国际 IC制造。 4.一定要说明加哪个区域的微信群,不然群管理忙不来。1.江浙沪半导体群2.北京半导体群3.深圳半导体群4.西安半导体群5.武汉半导体群6.大连半导体群7.成都重庆半导体群8.合肥半导体群9.厦门半导体群10.台湾半导体群11.新加坡半导体群3.产业微信群1.半导体设计群2.半导体制造群3.半导体封测群4.半导体设备EE群5.台积电南京12寸厂微信群6.半导体EHS群7.半导体厂务群8.半导体光刻(Photo)群9.半导体LED群10.半导体蚀刻(Etch)群11.半导体投资群广告推广,联系微信:ad211ic 1.供应/回收 供应4-12寸晶圆dummy testing,挡控片产品片,磨刀试刀线路片光刻片,硅片参数可根据客户要求定制;回收led芯片,镀金硅片IC,各类含金银废料,另提供代加工提炼服务,可以工厂现场提炼,有处理的厂家及中介可以联系,中介重酬。13616002227陈经理优质公众号推荐 芯论:半导体行业实时评论

半导体头条:最及时的行业头条

文章推荐、商务合作:微信号 iccountry

Top