083、ISP 内部流水线调度:Frame-level vs Line-level 处理的延迟与带宽差异
083、ISP 内部流水线调度:Frame-level vs Line-level 处理的延迟与带宽差异
从一次“花屏”调试说起
去年做某款旗舰机的前摄调试,遇到一个诡异现象:暗光下预览画面每隔几帧会出现一条横向的“撕裂带”,位置不固定,有时在画面顶部,有时在中间。用示波器抓MIPI CSI时钟,发现DMA传输偶尔会“断流”——ISP的写带宽被某个模块抢走了,导致Frame Buffer写入不完整。
查到最后,问题出在AWB统计模块的Line-level处理上。它每来一行数据就触发一次DMA请求,和主路径的Bayer处理抢带宽。而Frame-level的3A统计模块(比如AE)只在帧边界触发一次,带宽占用平滑得多。这个案例让我意识到:ISP内部的调度粒度,直接决定了系统能否在“延迟”和“带宽”之间找到平衡。
Frame-level:大块头有大智慧
Frame-level处理,顾名思义,以整帧图像为最小调度单元。典型场景:3A统计(AE/AWB/AF)、HDR合成、多帧降噪的帧对齐。
延迟特征:从Sensor输出第一行像素到Frame-level模块开始工作,需要等待整帧传输完成。假设4K@60fps,一帧约16.7ms,那么AWB统计的输入延迟就是16.7ms。这在拍照场景下可以接受——用户按快门到出片,几百毫秒都等了。但预览场景下,如果Face Detection也做成Frame-level,人脸框的更新
