堆栈式传感器全解析
《你们对力量一无所知——堆栈式传感器全解析》
大护法的老读者都知道,如今相机的CMOS已经从拼画质时代进入了拼速度时代。这其间经历了背照式和堆栈式两波结构升级,前者赋予了更广阔的布线空间,后者赋予了低制程感光层+高制程数字电路混合封装的能力。但堆栈式的优势绝不仅仅是混合制程,到RX100IV这一代又出现了新的变化,就是加入了片上缓存。
这个片上缓存到底有多带劲呢?经测试索尼A9完成一次全帧采样的时间已经确认为1/150~1/160秒,采样速度高达24MP*150FPS=3600MPPS(百万像素/每秒)。在A9出现之前,全幅传感器里速度最快的是A7RII/A99II里那块IMX251(12bit下504MPPS),其次是佳能1DXII(12bit下480MPPS),A9大可说一句在座的各位都是辣鸡。除此以外,A9的电子快门在单张模式下依然可以实现14bit的采样精度,而过往的索尼CMOS只能做到12bit。从14bit降到12bit一般能额外获得20~50%的提升,换言之理想状态下A9的速度足以达到A7RII的十倍!
这种亩产万斤式的大发展当然不仅仅是靠刷制程刷出来的。从某种意义上来说,A9其实是伪·高速传感器,因为这个3600MPPS仅仅是ADC将模拟信号转变为数字信号并写入片上缓存的速度,而信号输出CMOS的速度(或者说IO带宽)则远远达不到这个水平。从A9在20FPS连拍下只能输出12bit RAW、6K超采只能维持24P(30P下就有裁切)等特性不难判断,其IO带宽恐怕也就500MPPS左右,和A7RII是一个水平线上的。所以说,哪怕后端处理器的性能无限提升,这块CMOS也不可能实现150FPS的连拍或者400+FPS的4K视频。当然,3600MPPS也不是随便刷着当装饰品的,伪·高速传感器至少在两点上达到了和真·高速传感器一样的效果,那就是对焦/取景性能和果冻效应。
当然有聪明的读者可能要问了:既然连3600MPPS的ADC都能做得出来,那为啥不把读取速度也飙到3600MPPS,直接变身真·高速传感器算了?难不成做个高速数据接口能比做ADC还困难?
嘿呀,你别说,还真就很难。
在中学物理课本里,导线总是被当成一个电阻为零的理想导体,信号从A点到B点嗖的一下就过去了。然而在现实世界里并不是这么一回事,传输线本身的电阻和分布电容使得其就像是低通滤波器一样,信号的频率越高、传播的距离越长,衰减也就越严重,而且还受到更多的电磁干扰。那怎么办?当然是提高信号的强度,换言之——提升功耗。
而相比芯片内部的传输,把信号输送到片外的开销更是高出成百上千倍。第一传播的距离更长;第二芯片的PIN脚本身就是一种宝贵资源,索尼的相机CMOS普遍采用8通道传输,高贵一点的12通道,16通道基本上就是给牛逼摄像机用的了,相反片内随便做个几千位宽的传输线根本不在话下。信道数量受限的情况下,只能靠拉升传输频率来维持带宽,能耗比大大降低;第三片外的电磁干扰更加多姿多彩,以至于高速芯片的输出在接收端根本辨识不出1和0,不得不采用差分信道传输和直流平衡编码等技术来维持信号的稳定性。佳能过去的片外ADC式CMOS之所以在功耗和噪声上被索尼吊打,其实也是同样的道理。
一提起集成电路的功耗,很多人的第一反应就是:我们来刷制程。可惜,提升制程主要是降低晶体管的开关功耗,对传输功耗而言效用有限,毕竟晶体管是尺寸越小越牛逼,而导线恰恰相反,尺寸缩小之后电阻反而还他娘的更高了。所以随着半导体工艺的不断发展,很多CMOS图像传感器里信号的输入输出功耗已经占到了整体功耗的60%以上,使得IO带宽变成了现代相机CMOS上一个重要的性能瓶颈。
在这个大前提下,缓存的必要性就体现出来了——可以让ADC在高于IO的速度下工作。至于提升ADC的速度那简直比呼吸还要简单,因为片上ADC的一大优势就在于可以实现超大规模的并发处理,你完全不需要提高单个ADC的性能,只要粗暴的增加数量就行了。早前索尼在接受Imaging Resource采访时就表示,RX100系列本来每列只有两个ADC(上下各一个),到四代换成堆栈CMOS之后增加到了八个,速度蹭的一下就上去了。至于A9的测试则显示出从上到下扫描的过程中一次能读取12个像素,基本上可以推测其ADC数量也从每列两个增加到了十二个。
而且请注意:增加ADC的数量并不会增加功耗。为啥?因为IO带宽跟不上吗。一旦片上缓存写满,ADC就不能工作了,所以A9的ADC差不多属于一天打渔五天晒网,平均工作速度还是被IO限制在了500MPPS上,跟A7RII并没有区别(从这里也可以看出,IO带宽对于系统整体功耗是牵一发而动全身的,相当于一个总限制器)。其唯一的额外开销就是缓存的存取功耗,然而堆栈式CMOS可以使用高制程工艺的特性同样也能降低ADC本身的功耗。
这种突击式采样的好处之前也说了:第一是控制了电子快门的果冻;第二是对焦性能暴增。比如说A6300的传感器为24MP*20FPS,每完成一次全帧采样需要50毫秒,这50毫秒之内传感器就是专心致志的成像,完全不能对焦(也不能像单反一样放下反光板切换到独立对焦模块)。而A9的成像只要6毫秒就搞定了,尽管其采集的数据暂时无法输出传感器,但依然可以利用剩下的时间搞搞副业,轻松实现60FPS的对焦/取景/测光。实际上高速ADC+缓存的组合在功能上和反光板是高度相似的——只不过在速度和功能(静音+无黑视)上达到了反光板根本无法企及的境界。
可以说CMOS内部集成了缓存之后,ADC速度几乎变成了一个索尼可以任意堆砌的数字,这里面唯一的问题就是更多的ADC=更大的面积=更高的成本。但成本这个问题我们姑且留到后面再说,先回到缓存这个话题上。
功能
对于A9而言,缓存的主要目的就是让ADC突破IO限制,但实际上这玩意还有很多妙用,最好的例子就是新一代Xperia手机上搭载的三层堆栈传感器IMX400。鉴于手机本身的处理器无法实时处理960FPS的视频,利用缓存来提供缓冲时间就非常必要了,而且其容量直接决定了慢动作视频的时间和画质——IMX400一共有1Gb的缓存空间,在960FPS视频模式下可以工作0.2秒,总共采样180帧。这1Gb分配到180帧上,平均每帧的数据量仅为5Mb出头,哪怕每个像素只有8bit精度,采样点也不过是可怜的60万像素而已。至于黑卡4/5在1000FPS的时间优先模式下更是只有21.6万个采样点,非常凄凉,足见缓存对慢动作视频的重要性。
除此以外,IMX400的视频电子防抖也比传统的CMOS更省电。对于传统CMOS而言,实现720P的画质可能需要CMOS先输出1080P的数据,再从中选择到底保留哪一部分的画面。所以传统CMOS的工作方式是:采样1080P,输出1080P,保留720P
而IMX400则是:采样1080P,保留720P,输出720P
直接降低了CMOS的数据输出量。反过来说,假如一块传统CMOS本来只有1080P的输出带宽,那么它只有在不开防抖的情况下才能输出1080P,开了防抖就只有720P;而堆栈底则是完全无所谓的,在采样速度足够且CMOS有冗余像素的前提下,防抖状态下照样能输出1080P。
另外一个很可能和堆栈有关、但没有得到官方证实的应用就是新一代Xperia的预先抓拍功能。这个功能会在你按下快门之前就预先拍摄三张照片,以便获取最精彩的瞬间。显然,手机是无法预判出用户什么时候要按快门的,所以IMX400只能一直保持在瞎JB拍的状态上。当然瞎JB拍也没啥技术含量,传统CMOS也能做到这一点。区别在于,传统CMOS是:瞎拍N张,输出N张,用户按快门后保留最后三张。
IMX400则是:瞎拍N张,拒绝输出,用户按快门后输出最后三张。
同样是通过降低数据输出量实现了低功耗瞎拍。而具体能保存几张照片当然也是缓存容量决定的。
这个功能其实非常类似于EM1II上的Pro Capture(半按快门状态下一直连拍但不保存照片,直到按下快门之后才保存之前的最多18张照片)。实际上EM1II上的IMX270有很高的可能性也是类似A9的内置缓存堆栈传感器(当然奥巴并不乐意宣传外来的CMOS),EM1II的参数表里有个非常有意思的地方:
10FPS下的缓存容量:RAW 148张,JPG 无限
15FPS下的缓存容量:RAW 84张,JPG 117张
18FPS下的缓存容量:RAW 77张,JPG 105张
60FPS下的缓存容量:RAW 48张,JPG 48张
只有60FPS模式下无论拍RAW还是JPG还是RAW+JPG的缓存张数都是一样的,为什么会这样?如果这是类似A9的传感器的话就很好理解了:虽然ADC非常快,但IO带宽无法满足60FPS的输出能力,所以在该模式下必须动用片上缓存来保存数据。而CMOS本身并没有把RAW转换成JPG的处理能力,所以无论你选择什么格式,缓存里保存的其实都是RAW文件,只有输出CMOS后才能转换成JPG。从这个48张12bit全帧的缓存量来看,其容量差不多在11.5Gb左右,接近IMX400的十二倍。
当然以上仅仅是猜测。但从这里也不难看出,虽然我们之前说过伪·高速传感器并没有办法达到真高速的连拍能力,但假如你真在CMOS上集成一个超大缓存的话,让连拍速度在短时间内冲到ADC的极限事实上是完全可行的!这个行为相当于把原本的独立缓存完全集成到了CMOS里,使得缓存本身的传输功耗大幅降低,对于提升整机续航当然也是有好处的。
佳能在去年的ISSCC上也公开了一款集成缓存的CMOS,在使用方式上和索尼又有所不同。这块CMOS本身是全局快门,用不着利用缓存来降低果冻效应。但是全局快门传感器的像素里塞了一大堆乱七八糟的东西,阱容(动态范围)直接仆街,那咋办?佳能的解决方案是:利用缓存来实现片内堆栈(这里的堆栈,指的是两张照片合二为一),变相把原生ISO100的传感器变成了ISO50。虽然传统传感器也可以堆栈,但还是那个老套路:
采样N张,输出N张,最后合成一张
带缓存的CMOS:
采样N张,片内合成,最后只输出一张
随着堆栈张数的提升,两者之间的功耗差距会越来越大。
堆栈这玩意本身就有很多玩法(索尼的平滑反射+多帧降噪,奥巴的Live Composite),不难看出集成式缓存这玩意在未来是大有可为的。而且除了慢动作和极限连拍以外,以上列举的所有功能里缓存扮演的角色其实都差不多:通过降低CMOS输出的数据量来实现更低的功耗。所以说这玩意既能提速又能省电,浑身是宝。但好东西往往不是免费的,下面我们来谈谈最伤感情的问题:钱。
成本
最近键盘界流传着一种说法叫:A9的CMOS上面是864平方毫米的巨型感光层,下面是864平方毫米的巨型台积电16mm数字层,成本直接上天,买CMOS白送机身,亏本大甩卖,下放到A7III更是想都不用想。
可惜这些说法里恐怕只有一个是正确的,那就是……感光层的面积。
作为外人我当然也不知道索尼堆栈传感器的成本到底是多少。它有可能很贵,也有可能很便宜,但有一点是确定的:堆栈即使很贵,和芯片的面积也没什么关系。面积控制反倒是堆栈式最大的优点。
首先,如果你认为数字层的面积一定要和感光层一样大,那你也是大大的低估了索尼的实力。比如说索尼去年发布的一块堆栈底就是在感光层上额外堆了两个小面积的ADC,被索尼称为“2-on-1”传感器:
其实在更早的RX100IV上,索尼就已经展示了出了可以在感光层上堆叠任意大小、任意数量、任意制程芯片的能力。RX100IV传感器的背面贴了两块独立封装的芯片,一块是DRAM,一块是处理器:
其次A9的性能也犯不着使用864平方毫米那么大的面积。先说这个缓存,鉴于A9没有任何和大容量缓存有关的花哨功能,索尼只要确保其容量能存储一个全帧就够了,也就是24MP*14bit=336Mb。做出这么大一个存储器大概要多少面积呢?我们来看看IMX400:
中间这一层就是DRAM层,可以看出其1Gb缓存的实际占用面积大概也就是1/2.3英寸传感器的一半出头,即15平方毫米左右,连带控制器一起也就20多平方毫米。那么A9如果使用同样工艺(30纳米)的话,不到10平方毫米的面积便绰绰有余,基本可以忽略。
再说A9的暴力ADC。我们回头看看去年的这块2-on-1:
这是一块S35的摄像机CMOS,而且是货真价实的全局快门+真·高速传感器,IO可以持续输出480FPS+14bit精度的4K视频(3840MPPS),一直拍到你硬盘爆炸为止。熟悉索尼广播级产品的人可能会意识到,这块CMOS的各项参数(面积,像素,速度,全局快门)和索尼去年发布的价格破百万的体育摄像机HDC4800是一模一样的,A9和这玩意比可以说只是个玩具。当然光论ADC性能的话,这块CMOS和A9是相当接近的。从其芯片图也不难看出,ADC的总面积也就和感光层差不多(364平方毫米),而且其工艺构成为一半90纳米+一半65纳米,也没什么特别牛的地方。
当然有人可能要说了,364平方毫米也很大啊?这都和截幅差不多了!诚然,364确实不是个小数,但是请注意:裸片的成本并不取决于所有芯片的面积之和,而是每块芯片自身的面积单独决定了其良品率。在大护法近十年前的课件上有一条经验公式,叫“果片成本和面积的四次方成正比”,即一块2平方毫米大的芯片成本是1平方毫米芯片的16倍。如果你能把这2平方毫米切割成两块1平方毫米的话,那么在总面积不变的情况下你的果片成本已经节约了87.5%。
所以你看着364平方毫米好像很大,但实际情况却是:传统的全幅传感器是本身的864平方毫米加上低速ADC的部分(我们就假设是60平方毫米好了)合并在一起,再加上一大堆控制电路,搞个1000平方毫米的芯片出来完全是小意思。而堆栈式虽然总面积更大,但864和剩余部分的良品率却是分开计算的,这事实上已经给其果片成本带来了巨大的优势。
而且请注意,索尼拥有在一块感光层上堆叠任意数量芯片的能力,也就是说如果索尼真觉得数字层的面积太过棘手的话,它还可以把数字层给切开来,就像那块S35 2-on-1传感器一样。这种自由分割-重组芯片的灵活性,有点类似于你打俄罗斯方块时天上永远只掉一个格子的小砖头,这太简单了,根本没意思。
当然芯片的边际成本不光是果片,还有封装和测试两大部分。堆栈式如果成本很高的话,除了研发+设备这类固定投资以外,主要的问题也只能是出在混合封装上,切割数字层也可能导致封装成本的提高。但至少在果片成本上,堆栈式是只占便宜不吃亏的。尤其是A9这种总面积较高的高性能传感器,不用堆栈可以说几乎就没法做。前照式CMOS其实也可以内建缓存和大量ADC,我们刚才介绍过的牙膏厂传感器就是前照。而在这块CMOS上,传统工艺的局限性已经暴露无遗:
鉴于传统结构的所有电路模块必须使用相同的制程,工艺最落后的感光层决定了牙膏厂的CMOS里无论ADC还是缓存都得采用130纳米制程,而索尼的IMX400则是感光层90纳米(领先佳能一代),ADC+控制电路40纳米(领先佳能三代),存储层是30纳米(领先佳能四代)。四代制程差造成的直接后果,就是佳能用16平方毫米的面积只做出来70Mb的缓存容量,而索尼用相近的面积却做出了1Gb容量。由于缓存的容量至少也要能容纳一帧画面才有意义,如果5D4也想内置缓存的话,那在130纳米制程下就需要30MP*14bit=420Mb的空间,也就是100平方毫米左右的面积。
至于高速ADC这个问题,鉴于A9同级别的ADC在一半65纳米+一半90纳米的情况下都要消耗364平方毫米,130纳米实现相同性能的话算个400平已经是非常非常优惠,优惠到根本不讲道理。那么传统130纳米做一个A9式的传感器,单芯片面积至少也是864+100+400=1364平方毫米起步,这都快赶上中画幅了,你这个人生非常艰难啊!
说这么多其实就一个意思:不要过分高估堆栈式的成本。索尼卖A9不仅不是做慈善,甚至有可能已经数钱数到手抽筋;未来的A7III不用堆栈不奇怪,但用了堆栈同样也不会让人惊讶。另外我毫不怀疑的一点是:等混合封装的成本降低之后(甚至可能已经很低了),不仅高性能全幅要用堆栈来造,低性能全幅它也要用堆栈来造,再过几年不是堆栈你都不好意思出门。按照我们的四次方经验公式,一块1000平方毫米的全幅拆分成864+136两部分的话裸片成本已经下降了40%以上,而全幅传感器的成本其实主要就是裸片成本决定的。
未来
大护法去年5月写下的唯CMOS主义重要理论文献《索兰经》里给各位读者画了个大饼,叫“最多五六年内就会出现足以淘汰机械快门的高速全幅传感器”。没想到这个保质期不够长,还不到一年索尼就把A9端出来了。没办法,我只好再给你们吹一个新的。
其实CMOS速度达到A9这个水平之后,进一步刷速度也没什么意思了。1/150s的同步速度已经完全够用,连拍飙到20FPS以上似乎也无法刺激用户的欲望。至于视频嘛虽然是个速度无底洞,但对业余用户来说100Mbps的4K在存储和处理上已经有不小的压力,一个小时的内容就要烧掉40GB以上的存储空间,出门SD卡都不够用的。简而言之,这就像5DS兄弟悲惨的销售状况一样,任何性能指标在堆到一定程度之后便丧失了意义,索尼只要进一步把像素从24MP提升到40~50MP左右,起码对普通用户而言这场速度大战基本上就算是走到头了。
那么,下一代相机CMOS又该如何发展呢?
除了曲面传感器这类剑走偏锋之外,最常规的做法是把图像处理器也给集成到CMOS里。这么做有多少好处呢,我随便列几条:
1:片上集成的大量低频处理单元能效比本来就比少量高频单元要高
2:节约了CMOS和CPU之间的通信功耗
3:对于拍照而言,14bit线性量化的信息本来就是冗余的,完全可以压缩成11bit的非线性量化,且画质完全无损。如果在CMOS内就完成RAW的压缩的话,相当于本来很难提升的IO带宽变相增加了27%;如果使用索尼每像素8bit的有损压缩的话则相当于提升75%;如果直接输出JPG的话……我也懒得算了
4:视频更是要压缩压缩再压缩,6K超采+24P+4K视频状态下CMOS采样/输出的数据量接近6Gbps,压缩到100Mbps之后……反过来讲,如果CMOS输出的已经是压缩过的6Gbps,配合堆栈式本来就疯狂的采样能力,你可以想象一下视频的画质/帧率到底可以有多夸张。之前说过,片上大容量缓存可以解决伪·高速传感器的极限连拍问题,而片上处理器则可以解决伪·高速传感器的视频画质问题。除非你一定要拍RAW视频,否则到最后伪高速和真高速基本上就是一回事。
5:减少PCB上的芯片数量,减小相机的体积和重量
6:在堆栈工艺的成本降低之后,高集成度的系统在价格上也会更有优势
个中优点可谓一言难尽。当然肯定有人要操心了,处理器集成到CMOS里,虽然系统总功耗肯定是降低的,但CMOS本身的发热量会不会爆啊?其实十几年前也有人问过类似的问题:把ADC集成到CMOS里,发热量会不会爆啊?如今不是片上ADC你都不好意思跟人打招呼。而且这个饭是一口一口吃的,处理器本身的功能可以分批集成到CMOS里,比如视频压缩这种困难户可以过几年再考虑,而RAW的线性-非线性压缩则是非常简单的任务。事实上现在的CMOS里本来也集成了黑位补偿、线性补偿等简单的功能。
无论是相机CMOS也好,其它集成电路也好,大趋势都是不断提高系统的集成度。所谓拼画质时代其实就是集成ADC,如今的拼速度时代则是集成缓存,最终的目标是一块CMOS+若干按钮/波轮+SD卡+电池就是一台相机,也就是所谓的Camera-on-a-chip,届时相机部门和半导体部门其实就是一家。而很多品牌的粉丝可能会悲恸的发现:就连相机的直出色彩,居然都是万恶的索尼控制的。