Image Signal Processor, 即ISP, 是所有相机成像系统中必不可少的一环。其主要作用是将Image sensor捕获的raw data转化为可供人眼或是后继感知模块识别的图像。这就需要一系列功能相对固定,但实现和效果又大相径庭的ISP算法,其中包括了Black Level Correction, Lens Shading Correction, Debayering, HDR, Tone Mapping, Denoising, AEC(Auto Exposure Control), AWB(Auto White Balancing)等等。除去传感器本身的因素,ISP算法的质量直接决定了相机系统的质量。
既然有了相对固定了算法和流水线,那么如何把这些工作在独特的硬件处理单元中加速从而减小CPU的负载,就是硅工们需要考虑的了。通常分为两种技术路线。针对相对固定的业务场景,本身又包含强大的算法团队支撑,也就是说可以明确自己想要什么算法落在芯片上(又能保证在产品周期内算法的竞争力),通常采用ASIC的设计。这种设计的优势对芯片来说是显而易见的,即最优的PPA,缺点是算法不能改动。采用此类设计方案的厂商包括比如Nvidia, TI和海思等。另一种方案是采用软核的方案,即采用可编程的DSP加速ISP算法。优势就在于其可编程性增加了算法的灵活性,便于OEM提供差异化的算法针对不同业务场景,主要厂商包括高通和NXP等。下面我们就来剖析下S32V中的ISP实现方式
架构上来看这个ISP子系统包含了三个主要部分:
- 4M的高速缓存用于缓存行处理后的中间数据
- 12个各自独立的IPUS/IPUV引擎用于算法的处理任务
- 1个基于ARM M0的Sequencer用于系统间的任务调度