做过SoC的同学们基本都会接触到一个词,tradeoff。什么是tradeoff呢?为什么要tradeoff?
在讨论这个问题前先看另外一个概念,PPA,也就是性能(performance),功耗(power)和面积(area)的简称。只要是做SoC设计就离不开这三个概念。首先,性能不用讲大家都明白。我们经常会看到关于性能的宣传,比如某新发布的手机跑分多少多少,比如某款CPU芯片的最高主频等等。其次,芯片功耗这个问题大家在生活中也会遇到,例如某款手机在打游戏时会过热。最后,芯片面积这方面一般在生活中不会直接接触到,但也会影响我们的生活。拿买房子作类比,同一个地段(在芯片制造领域就是相同工艺)肯定是面积越大越贵。另外由于芯片生产工艺的限制,芯片的设计面积越大,最后的良品率越差。也就是说芯片生产制造完,能用的比例越小。间接后果就是可用的芯片产品卖的更贵,毕竟羊毛出在羊身上嘛.
那么我们能不能设计出性能出众,耗电很小,面积几乎为零的芯片呢?很不幸的是,在目前的硅工艺上,这三者不能同时满足。
既然三个指标不可能做到同时优秀,那至少要选一样或者两样吧。这就是一开始提到的tradeoff,牺牲一两项指标以追求其它指标优秀。比如说我们设计一款性能空前绝后的CPU,代价是功耗巨大(功耗大的危害以后再讲,并不仅仅是费电),最后的设备要配水冷;面积巨大,最终芯片价格很高。
从芯片设计流程上看,设计工作可以分为逻辑设计和物理实现。一般逻辑设计工程师最看重的是性能,其次是功耗,往往会忽略面积;而物理实现工程师更加看重面积和功耗。对于大规模的SoC,这时候就需要架构工程师统筹考虑三个指标,在PPA三项指标间做出权衡。是用功耗换性能,还是用面积换性能,抑或是在满足基本性能的前提下大力优化功耗或者面积。
举几个简单的例子帮大家理解这些问题。现在的芯片生产厂(foundry)在同一个工艺制成下还提供好几种小工艺节点供选择。每个小节点各有特点,有些能跑到更高频率,有些功耗低,有些成本低,可以根据项目实际情况选择。另外在同一个小节点中还会提供不同阈值的标准单元。拿功耗换取性能来说,为了让芯片跑在更高的频率下,在单位时间内完成更多的工作,我们可以选取一些阈值电压低(low Vt)的物理器件。这些器件会比实现同样功能但是阈值电压高的器件翻转快,缺点是其静态功耗比正常Vt的标准单元大很多。所以一般会在关键路径酌情考虑使用,不建议大规模使用。
再说面积换取性能,在同样的工作频率下可以做多路并发来提高芯片的数据处理能力,同时也牺牲了面积和功耗。再举个例子,可以把cache容量做大以提升cache hit。虽然我们都知道cache hit的曲线图,在cache达到一定容量时继续增大对提高命中率的提升越来越不显著。但是有时候恰恰就是这一点点的提升,可能会带来不一样的用户体验。就像某水果公司的SoC,有钱任性,其L3 cache做的不小,哈哈。
再比如面积换功耗,不影响性能的前提下可以设计中使用clock gating和power gating等技术降低功耗,或者划分不同的电压域,代价是芯片的面积会大一点,毕竟加入了新的物理器件(CG cell,PG cell,levelshifter,retention cell等等)。还有一种技术DVFS,动态调节电源电压和时钟频率。
总之呢,tradeoff的策略要结合芯片实际应用情况来考虑,具体的实现方法多种多样,以后有时间慢慢跟大家探讨,一起学习。
最后总结一下,芯片设计中PPA既是对立的,又是统一的,其矛盾贯穿SoC设计始终。没有完美的芯片,只有完美的tradeoff。
原文链接:老秦谈芯
作者:老秦谈芯
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏。