SoC入门-4自动驾驶AI SoC芯片趋势

文摘   2024-10-19 11:58   上海  

之前的文章SoC入门-3自动驾驶AI芯片框架属于纯技术干货分享,本篇跳出来技术,看看未来AI SoC芯片一些可能的趋势,或许可更好的把握技术学习和使用

1. SoC组成相关

MCU是SoC的不?

 

--是的。系统级芯片(SoC)是一个将计算处理器和其它电子系统集成到单一芯片的集成电路。尽管微控制器(MCU)通常只有不到100 kB的RAM,但是事实上它是一种简易、功能弱化的SoC。

不同的SoC类型有不同的应用场景,围绕微控制器(MCU)构建的系统级芯片一般用于计算性能要求不高的消费电子、家电和IoT产品。基于微处理器(MPU)的SoC在性能和功能方面相对较高,比如手机的应用处理器(AP)。还有一种可以编程的SoC(PSoC),其部分功能可以灵活编程,就像FPGA一样。当然,针对某些特定应用领域而定制开发的SoC可能更为复杂,比如集成ADC/DAC、显示驱动,以及无线射频等功能模块。

SoC的一般组成:

  • :至少一个微控制器(MCU)或微处理器(MPU)或数字信号处理器(DSP),但是也可以有多个处理器内核;
  • 存储器:RAM、ROM、EEPROM和闪存中的一种或多种;
  • 电源频率相关:电源和频率相关电路,以及计时器等
  • 接口:UART、SPI、USB、CAN、Eth等
  • 功能电路:例如数模转换,AI等
  • 总线:AXI、APB、NOC等

复杂的SoC还会在上面分类中附带很多小IP,例如存储相关的DMA,TZC,TCM等

自动驾驶芯片的特点:

 

娱乐系统芯片,其实和消费电子几乎一模一样,关注音频、视频、显示、图像等、Modem等。自动驾驶芯片,注重高性能计算,一般配备有强大的NPU、GPU、DSP等。

中央控制器作为自动驾驶核心部件,作为自动驾驶的“大脑”端,通常需要外接多个摄像头、毫米波雷达、激光雷达,以及IMU等设备,完成的功能包含图像识别、数据处理等。因此,其需要具备多传感器融合、定位、路径规划、决策控制、无线通讯、高速通讯的能力,因而从始至终牵动着整个处理及控制命脉。

由于自动驾驶传感器对于驾驶辅助系统的复杂度影响力(主要表现在计算能力、传输带宽、存储能力等)几乎是成倍的增加,特别是侧视摄像头的加入导致需要预处理的视频数据成倍的增加,同时,激光雷达的加入又不断地生成千万级的待处理点云信息,这就对其自动驾驶控制器计算性能及算法能力提出了比较大的需求,这也使得我们需要对自动驾驶控制器芯片选型单独提出的需求。

2. 芯片软硬件分工

参考之前芯片设计文章:芯片-设计流程入门

由于系统级芯片的集成度越来越高,设计工程师必须尽可能采取可复用的设计思路。

现今大部分SoC都使用预定义的IP核(包括软核、硬核和固核),以可复用设计的方式来完成快速设计。

软件开发方面,协议栈是一个重要的概念,它用来驱动USB等行业标准接口。在硬件设计方面,设计人员通常使用EDA工具将已经设计好(或者购买)的IP核连接在一起,在一个集成开发环境(IDE)下集成各种子功能模块。系统级芯片的设计流程示意图如下:

芯片设计在被送到晶圆厂进行流片生产之前,设计人员会采取不同方式对其逻辑功能进行验证

仿真与验证是SoC设计流程中最复杂、最耗时的环节,约占整个芯片开发周期的50%~80% ,采用先进的设计与仿真验证方法已成为SoC设计成功的关键。

在重点考虑面积、延迟、功耗的基础上,向成品率、可靠性、EMI 噪声、成本、易用性等方面转移,使系统级集成能力快速提升。

SoC芯片设计技术可以大幅度地提高系统可靠性,减少系统面积和功耗,降低系统成本。但随着人工智能以及5G的发展,传统的设计方法已经无法满足这些芯片的功能需求,将一颗SoC设计切割成不同的合适工艺节点小芯片(Chiplet),再用先进封装技术提供的高密度互联将多颗Chiplet包在同一个封装体内,将是未来的发展趋势。

Chiplet的优点:

  1. 可以不用那么先进的制造工艺,例如16nm以上,达到同样的效果。
  2. 复杂SoC中大量IP的验证变的容易

SoC的另一个巨大挑战:复杂系统对计算密度的不确定性,而这主要体现在AI计算方面。

自动驾驶软硬件涉及到的主要技术如下:

3. 新技术趋势

3.1 异构计算

计算子系统通常包含CPU、GPU、以及AI处理器等同构或异构的计算单元。

随着人工智能应用及技术的成熟,对于AI终端运行及计算的高效、可靠、稳定的需求与日俱增,不同的应用场景对于芯片PPA的需求存在差异,单个内核已经达不到AI应用场景所需的多通路多运算流并且兼顾功耗及运算资源的目的。所以异构多核计算技术成了应对这些应用最好的解决方案。

选择核的时候考虑的点:

  • 如果要运行Linux,考虑是否支持Linux
  • 是否需要浮点计算及双精度浮点计算等去选择对应的核
  • 结合应用场景和需求进行选择
  • 方便的开发环境和平台

硬件指标主要包括:

  • 在特定工艺下,频率、面积、功耗参数要求,以及典型CPU基准测试跑分(DMIPS,CoreMark等);
  • 不同的指令集组合,如RISC-V 32位或是RISC-V 64位指令集、DSP、单双精度FPU等;
  • 存储单元结构及大小;
  • 中断个数和优先级,响应速度等;
  • 支持的总线接口类型时钟频率比等。

软件指标主要包括:

  • 完善的软件开发环境和开发平台(IDE,SDK等);
  • 成熟稳定的工具链(编译器,仿真器,调试器等);
  • 标准的软件接口以及丰富的算法软件库等;
  • 友好的第三方软件支持((Segger、IAR、Lauterbach等);
  • 主流的操作系统支持(RTOS,Linux等)。

自动驾驶芯片对算力要求较高。特别是其中的AI部分,L2级别需要2个TOPS的算力,L3需要24个TOPS的算力,L4为320TOPS,L5为4000+TOPS。

  • 通常是GPU或TPU,承担大规模浮点数并行计算需求,主要用于环境感知和信息融合,包括摄像头、激光雷达等传感器信息的识别、融合、分类等,如Xavier的GPU单元、升腾310。
  • 通用核大多为ARM架构,类似于CPU,主要负责逻辑运算和决策控制,处理高精度浮点数串行计算

自动驾驶的实现,需要依赖环境感知传感器对道路环境的信息进行采集,将采集到的数据传送到汽车AI SoC进行处理,用来识别障碍物、可行道路等,依据识别结果,规划路径、制定车速,自动控制汽车行驶。整个过程需要在一瞬间完成,延时必须要控制在毫秒甚至微秒级别,才能保证自动驾驶的行驶安全。

3.2 存储单元

存储子系统通常会采用DDR/LPDDR/HBM/GDDR等标准的大容量外部动态随机存储器,以及基于SRAM的静态高速片上存储器。

在AI芯片里面,NPU的瓶颈一大部分就是存储速率跟不上,所以需要采用LPDDR5、SRAM等更高速的存储技术。另外存储容量也在增大,以空间换时间,把海量数据直接放入高速内存中,运算更快。

选择合适的存储器解决方案是满足目标系统对车载控制器芯片的功能和性能要求的关键,帮助设计人员解决其目标片上系统 (SoC) 的功耗、性能和面积要求。同时,附加存储控制主要可以扩充SOC芯片由于内部存储资源不充足所产生的存储数据溢出。通常附加存储可临时作为操作系统、数据驱动的资源池,大大降低了程序调用的难度,提升了运行效率。

3.3 丰富的外设

对于自动驾驶芯片来讲,足够多且有效的接口外设是必不可少的,因为对于下一代智能网联域控制器来说,其架构所带来的传感器数据量的变化是成指数级增加,因此,芯片内部预设足够的接口是非常必要的。基本上,我们需要SOC具备多路CANFD、PCIe、ethernet、GPIO、MIPI、UART、I2C、I2S等接口。具体情况需要根据架构来指定选用哪几路。

外部设备接口IP的种类更加丰富,我们生活中接触到的各类总线都有机会出现在系统芯片中。这其中负责承担高性能系统扩展功能的有PCI Express(CXL/CCIX)、HBI等接口标准,它们可以实现高速外设、Die-to-Die或多芯片互联的功能。目前PCI Express正在发展最新的6.0版本,而CXL已经演进到1.2版本。

另外,我们还会有一些面向特定应用需求的专门接口总线,这包括USB、SATA、MIPI、DisplayPort、HDMI、UFS和以太网等种类繁多的技术标准。这其中新一代USB4已经随着苹果采用自研M1芯片的MacBook走进了大众视野,提供最高40Gbps的传输速率。DisplayPort也在朝着2.0标准发展,并最终会以80Gbps的带宽支持多路超高清显示输出。MIPI总线也在响应移动通信、多媒体和车载应用所提出的更高要求,逐步走向多元化。

PCIE的应用:一般的应用场景中,集成一个主芯片就能够满足计算资源的需求,但是自动驾驶对算力有着更高的要求,有时候于安全的考虑,也需要同时集成多个主芯片,其结构一般如下图所示:

多个芯片在需要在PCIe Switch的连接下共同组成一个计算单元,如果以后发展成可动态拓展的形式(类似于刀片机),该结构依然适用,以下是采用两个Xavier芯片组成的一个高性能计算单元的示意图:

单个xavier的算力只有30TPOS,但是通过PCIE等连接方式,这样计算平台的算力明显提升,计算平台英伟达的DRIVE PX Pegasus的算力达到320TPOS,比特斯拉HW3.0的算力还大。

进一步还可以使用光纤速度更快。

3.4 NOC总线

人工智能、5G等新兴的应用场景,对芯片设计提出了更高的要求。SoC设计方法已经无法满足这些芯片的设计。随着集成电路的发展,片上网络(Network-on-Chip, NoC)作为一种全新的设计方法学很好地解决了SoC的单一总线的通信瓶颈问题。

IP复用比较好的时候,大家实现SoC的差异变小,主要就在于用了哪些IP以及如何链接这些IP,来满足系统的要求。这就要提到NoC设计构架的差异非常重要。

NoC的优缺点:

  1. 优点:减少布线和片上面积,减少功耗,支持QoS,保护数据,高带宽

  2. 缺点:内部互连异常复杂以及串扰现象明显

3.5 RISC-V

RISC-V拥有非常丰富的生态资源,而且其软核形态是依托FPGA的,使得FPGA立即能拥有这些丰富的生态资源。经过优化的RISC-V,不单降低了对FPGA的资源消耗,还通过外设的多样性,赋予FPGA在并行算法应用中对各功能模块更快捷的调度和配置能力。FPGA擅长高性能的并行应用,加入RISC-V就可以完成多映像加载、网络协议的缝合,甚至是多个独立RISC-V集成的应用。

当前的软核RISC-V,在平台的移植性方面也非常轻松。有很多嵌入式应用,例如基于ARM Cortex M4的应用,要集成在低成本的FPGA中还有一定难度。软核的RISC-V处理器(达到450Mhz)可以跟硬核的Cortex M4处理器分庭抗礼。在性能相当的情况下,RISC-V所有总线以AXI的形式内置于FPGA,可以带来高度灵活性、快速上市时间和极低的IP集成风险等额外的价值。

3.6 信息安全

信息安全监控。主要包含数字身份认证、看门狗程序、底层安全驱动、加密引擎等几个方面。其目的是在系统运行期间实现系统的安全、认证启动或主机监测

3.7 车规级功能安全AI芯片

人工智能时代车规级AI芯片成为皇冠上的明珠,竞争壁垒高。由于车规级标准极难认证,车规级人工智能芯片代表了芯片行业中的最高标准,与消费级和工业级芯片相比,车规级AI芯片在安全性、可靠性和稳定性上都有最高的要求。必须要达到,车载环境温度在-40℃到125℃区间,故障率为0。

由于车规级芯片开发周期长、设计难度大,属于长跑创新,一旦建立起领先优势,龙头厂商将具有较高的竞争壁垒,人工智能时代车规级AI芯片成为皇冠上的明珠,领先厂商竞争壁垒较高

功能安全在芯片上的设计原则是要尽可能多的找出芯片上的失效场景并纠正。失效又分为系统和随机两种,前者依靠设计时的流程规范来保证,后者依赖于芯片设计上采取的种种失效探测机制来保证。我们在这主要谈后者。简单来说,芯片的失效率,是基于单个晶体管在某个工艺节点的失效概率,推导出片上逻辑或者内存的失效概率。面积越大,晶体管越多,相应的失效率越大。

ISO26262把安全等级做了划分,常见的有ASIL-B和ASIL-D级。ASIL-B要求芯片能够覆盖90%的单点失效场景,而ASIL-D则是99%。这其实是个非常高的要求。一个晶体管的失效概率虽低,可是通常一个复杂芯片是上亿个晶体管组成的,如果不采取任何措施,那任何一点的错误都可能造成功能失效,失效率很高,这对于芯片设计来说需要增加非常多的冗余措施和开发成本,不是一蹴而就的,目前过了产品的芯片的ISO26262的功能认证的自动驾驶芯片不多,特斯拉就没有过,当然它是特独立的芯片厂家,但是我们在选择自动驾驶平台的时候需要考虑这个因素。

自动控制需要负责可靠性和车辆控制,也就是功能安全和冗余监控作用,不要求很高的算力,但是可靠性必须要有保障,ISO26262等级要求达到ASIL-D,目前用的较多的就是Infineon的TC297或者TC397,为了达到功能安全, 这部分控制的MCU可以给到符合ISO26262的英飞凌芯片做控制,自动驾驶芯片输出对应的图像或雷达处理信息,给到英飞凌的MCU去做最终的控制算法。


这一点做技术有时不能钻牛角尖了,非要搞一个多安全的芯片,要多站在系统的角度看,只要系统安全就可以了,没必要单独一个芯片有多安全。搞点冗余或者把核心部分外包给安全独立的芯片就可以,ASIL-D规则也是达到99%也不是100%,规则也没写死钻牛角尖


4. AI趋势

4.1 自动驾驶对DDR带宽要求

上图是目前比较主流的L3+自动驾驶的架构,从这里可以看到,摄像头那部分的处理需要的DDR的带宽是34GB/s,ASIC的DDR带宽为64bit,ADAS需要处理摄像头的raw dater,这样才是最原始的数据,不是压缩,也没有处理过的数据,这样ADAS处理起来才比较灵活,所以ADAS的带宽要求非常高

可以看到除了要处理高清摄像头的raw dater的数据,还需要处理超声波雷达和激光雷达的数据,这些传感器的作用是不同的,激光雷达主要用于3D建模、超声波雷达用于倒车、超车,摄像头主要用于部分ADAS功能,比如ACC自适应巡航、AEB紧急制动等等。

4.2 特斯拉NPU

特斯拉芯片的片上面积NPU为主,一些通用的处理任务不适合由神经网络处理器处理、而由CPU来完成的。特斯拉解释说,芯片中有12个ARM Cortex A72 64位CPU,运行速度为2.2 GHz。

NPU对带宽要求很高,使用了昂贵的SRAM。强大的SRAM容量是其相对于其他类型芯片的最大优势之一。

人工智能中最消耗运算量的地方是卷积,就是乘和累加运算Multiply Accumulate,MAC:

y = w[0]*x[0] + w[1]*x[1] + w[2]*x[2] + ... + w[n-1]*x[n-1]

w 和 x 都是向量y 是标量。上式是全连接层或卷积层的典型运算。

  • MACCs(乘-加操作(点积运算)):一次乘-加运算即一次乘法+一次加法运算,所以上式的 MACCs 是n。
  • FLOPS(每秒浮点运算次数),而换到 FLOPS 的情况,点积做了 2n-1 FLOPS,即 n-1 次加法和 n 次乘法。

可以看到,MACCs 大约是 FLOPS 的一半。实际就是MAC只需一个指令一个运算周期内就可完成乘和累加。卷积运算、点积运算、矩阵运算、数字滤波器运算、乃至多项式的求值运算都可以分解为数个 MAC 指令,人工智能运算也可以写成MAC运算。

AI芯片就是简单暴力地堆砌MAC单元

  1. 增加MAC数量,这是提升算力最有效的方法。而增加MAC数量意味着芯片裸晶面积即成本的大幅度增加,这也是为什么AI芯片要用到尽可能先进的半导体制造工艺。

  2. 除了增加数量,还有提高MAC运行频率,但是功耗也会上升。

  3. 提高MAC效率,不让MAC空闲空等。其中主要就是存储速度低引起。如果你的算法或者说CNN卷积需要的算力是1TOPS,而运算平台的算力是4TOPS,那么利用效率只有25%,运算单元大部分时候都在等待数据传送,特别是batch尺寸较小时候,这时候存储带宽不足会严重限制性能。但如果超出平台的运算能力,延迟会大幅度增加,存储瓶颈一样很要命。

决定算力真实值最主要因素是内存( SRAM和DRAM)带宽,还有实际运行频率( 即供电电压或温度),还有算法的batch尺寸。例如谷歌第一代TPU,理论值为90TOPS算力,最差真实值只有1/9,也就是10TOPS算力,因为第一代内存带宽仅34GB/s。而第二代TPU下血本使用了HBM内存,带宽提升到600GB/s(单一芯片,TPU V2板内存总带宽2400GB/s)。

提高系统存储效率最为有效的方法还是减小运算单元与存储器之间的物理距离。CPU与HBM2之间通过Micro-bump连接,线宽仅为55微米,比传统的板上内存或者说off-chip内存要减少20倍的距离。可以大大缓解内存瓶颈问题。

另外退而求其次的方法是优化指令集,尽量减少数据的访存,CNN算法会引入大量的访存行为,这个访存行为的频繁度会随着参考取样集合的增加而增加(原因很简单,缓存无法装下所有的参考取样,所以,即便这些参考取样会不断地被重复访问,也无法充分挖掘数据本地化所带来的cache收益)。针对这种应用类型,实际上存在成熟的优化范式——脉动阵列:让数据尽量在处理单元中多流动一会儿。

除了降低精度以外,还可以结合一些数据结构转换来减少运算量,比如通过快速傅里叶变换(FFT)变换来减少矩阵运算中的乘法;还可以通过查表的方法来简化 MAC 的实现等。

对于使用修正线性单元(ReLU)作为激活函数的神经网络,激活值为零的情况很多 ;而在对神经网络进行的剪枝操作后,权重值也会有很多为零。基于这样的稀疏性特征,一方面可以使用专门的硬件架构,比如 SCNN 加速器,提高 MAC 的使用效率,另一方面可以对权重和激活值数据进行压缩。

4.3 谷歌TPU

这是Google的TPU。从上边的芯片框图可以看到,有一个64K乘加MAC阵列对乘加运算进行加速。从论文中可以看到里面已经用到了脉动阵列的架构方法来对运算进行加速,另外也有我们前面提到的大量的片上Memory 这样的路径。上面蓝色框图中大家可以看到有一个24MiB的片上Memory,而且有两个高速DDR3接口能够与片外的DDR做交互。

上图展示的第二代TPU。从图中可以很直观的看到,它用到了我们前面所说到的HBM Memory。从其论文披露的信息也可以看到,二代TPU在第一代的基础上增加了我们前面说到的剪枝,权重压缩等方面做了很多尝试,也是一个非常经典的云端AI加速芯片的例子。

4.5 地平线BPU

地平线的BPU内承载了进行神经网络运算的积累加运算(英语:Multiply Accumulate, MAC)单元。通过应用MAC 指令,可以使的乘加运算用一个指令完成。而许多运算(例如卷积运算、点积运算、矩阵运算、数字滤波器运算、乃至多项式的求值运算)都可以分解为数个MAC 指令,因此可以提高上述运算的效率。

地平线的BPU采用双核的结构,同时在其控制单元里跑两套相同的程序,并对对方运算结果进行相互校验,由检查器模块对比两个BPU应用程序的执行输出,在输出结果一致的情况下,由检查器模块产生中断,将两个BPU当前状态以检查点文件的形式保存到存储器上,在输出结果不一致的情况下,由检查器模块产生中断,两个CPU处理器调取最近一次保存的检查点文件实施回卷以恢复系统进行重新计算。这一过程类似于实现了BPU内的锁步功能,这样可以很大程度上提升其运算结果的准确性,确保其SOC的功能安全性能。

功能安全岛性能自动驾驶芯片需要在多核架构上承载功能安全拆解的功能目标值,其中包括在软错误发生后,可以及时的进行错误纠正,将系统恢复到安全状态。这就要求在多核系统上实现一定的软硬件的功能安全设计目标。通常情况下,各个芯片厂家会倾向于纳入功能安全岛来作为实现芯片功能安全的机制。从原理上分析,功能安全岛可划分为硬件锁步,软件分区的方式来进行功能安全目标提升。

所谓硬件锁步,就是在芯片设计中同时搭载两套硬件内核,每个内核分别承载两套相同的软件模型,当输入源相同时,则实现了两个硬件内核的相同运算机制,同时该过程需要保持两个运算核的独立性,其运算的结果将会在每个周期都进行一次比较,当出现差异时,生成一个trap,该trap触发一个中断,将两个锁步核中运行状态以文件行驶保存在存储器上,并调用最近一次保存的文件回卷以恢复系统重新进行计算。整个过程相当于不断进行自检与互检的过程。

所谓软件分区,其目的是确保程序的并行运行和安全计算能力。其过程是根据软件的可并行性核相关安全架构,将上层软件模块分配给AUTOSAR中定义的操作系统应用程序执行相应的作业Task,且该过程需要确保ECU在运行时不会引起内部区域之间的相互干扰。片上网络由于SOC中的处理器采用了多MIPS 处理核心,每个核心拥有私有的指令缓存(I-Cache)和数据缓存(D-Cache)。片上网络,本质上是为了解决片上多核系统中不同的核心之间,核心与非核心(Un-Core)硬件单元之间数据传输问题的一种“片上通信”方案。

图像/视频处理单元SOC芯片上的图像处理单元主要包括几个部分功能:数字图像信号处理、图像分割(Pyramid)、图像拼接(Stitch)、图像渲染(GDC)以及视频编解码功能

ISP模块接收感光元件(Sensor)的原始信号数据,并处理图像传感器输出的图像信号,对图像质量起着非常重要的作用。ISP内部包含多个图像算法处理模块,其中主要包含如下几种:

  • 通过扣暗电流去掉底电流噪声

  • 通过线性化解决数据非线性问题;

  • 解决镜头带来的亮度衰减与颜色变化

  • 通过去坏点,剔除sensor中坏点数据);

  • 通过数字图像滤波进行图像去噪

  • 通过感光半导体处理将原始环境光源数据转为RGB数据

  • 自动白平衡,自动对焦,自动曝光

  •  亮度映射曲线,优化局部与整体对比度

此外,ISP的处理过程还包括如下几个部分:即旋转(角度变化),锐化(调整锐度),缩放(放大缩小),色彩空间转换(转换到不同色彩空间进处理),颜色增强(可选,调整颜色),肤色增强(可选,优化肤色表现)等。

图像分割实在神经网络处理逻辑之前进行简单的场景分割,将环境中明显可表达的语义进行分别输出。图像拼接是针对有一定overlap的图像进行全场景范围拼接,拼接的结果主要用于流媒体显示。

此外,图像处理单元一版还会额外搭载一些视频编解码核,一般可应用HEVC的方式进行编解码。更为强大的图像/视频处理单元会有能力进行3D图像渲染。这一部分可能会用到GPU的相关计算能力。这里需要说明一下的是,在我们设计域控制器的时候,很多情况下,我们选择的SOC芯片是不具备足够的3D渲染能力的,这时,从整个先进的显示方案需求出发,我们就需要采用额外的处理器进行渲染。这里有两种方案:其一,是采用驾驶域控制器的芯片扩充方案,即在自动驾驶域控制器AI芯片外围在增加相应的GPU芯片进行集成,两者可通过PCIe进行图像传输。其二,是采用座舱域控制器芯片扩充方案,即在智能座舱控制器芯片中集成GPU处理能力的芯片直接做渲染和显示。

4.6 AI视觉方案

特斯拉的自研模式很有价值,可以垂直整合做到更高效的利用软硬件资源来实现更先进的技术和性能,而且不受外部很多规范规则限制。

  1. 摄像头就传感器,收集视频画面
  2. 再进行后续图像分割、物体分类、目标跟踪、世界模型、多传感器融合、在线标定、视觉SLAM、ISP 等一系列步骤进行匹配与深度学习

图像接口和图像处理能力

a)图像接口CSI:

CSI作为前端-配置逻辑接口,可以支持大多数通用的可用的CMOS摄像头接口,支持方便YCC,YUV,Bayer或者是RGB的数据格式输入,完全可控的8-bit或16-bit数据到32-bit的FIFO进行打包,32*32大小的FIFO存储接受到的的图像像素数据,该FIFO可以通过可编程的IO或者是DMA进行读取。

后端-提供了直接到eMMA的预处理PrP块接口(PrP和PP组成了MX27图形加速器eM MA,PrP和PP能够用来给视频做预处理和后期处理,例如,放大,缩小,颜色转换)。提供sensor的可屏蔽中断源,该中断源也是中断可控的,提供给外部sensor用的,可配置的主时钟频率,由统计数据产生的自动曝光(AE)和自动白平衡(AWB)控制。

b)视觉处理芯片ISP

ISP作为视觉处理芯片核心,其主要功能包括AE(自动曝光)、AF(自动对焦)、AWB(自动白平衡)、去除图像噪声、LSC(Lens Shading Correction)、BPC(Bad PixelCorrection),最后把Raw Data 保存起来,传给videocodec 或CV 等。通过ISP 可以得到更好的图像效果,因此在自动驾驶汽车上对ISP的要求很高,比如开始集成双通道甚至三通道的ISP。

一般来说ISP 是集成在AP 里面(对很多AP 芯片厂商来说,这是差异化竞争的关键部分),但是随着需求的变化也出现了独立的ISP,主要原因是可以更灵活的配置,同时弥补及配合AP 芯片内ISP 功能的不足。

c)图像绘制芯片GPU:

GPU是基于大的吞吐量设计,用来处理大规模的并行计算。GPU的控制单元可以把多个的访问合并成少的访问。GPU将更多的晶体管用于执行单元,而非像CPU那样用作复杂的数据cache和指令控制。由于GPU具有超强的浮点计算能力,可用于在智能汽车前端的图像或视频处理领域的应用,也越来越多地应用在中央控制器高性能计算的主流设计中。

4.5 AD(自动驾驶控)的算力分配

自动驾驶控制器的整个ECU资源需要在其具体的算法控制中得到算力分配,其中关键的AD处理过程包括如下主要的几个部分。道路运动目标检测、道路结构检测(基于前视摄像头)、目标形态检测、预测分析、道路结构检测(基于侧视摄像头)、道路运动目标检测(基于侧视摄像头)。各部分参数主要包括了对CPU运行资源、算力、运行带宽、运行时间等,如下表表示了一种典型的各个算法对于算力运行占用的资源统计分析,其中两个不同的芯片分别暂用不同计算需求。

如上软件模块算法的算力效率牵涉到MAC计算效率问题。如果相应的自动驾驶模块算法或者说CNN卷积需要的算力是1TOPS,而运算平台的算力是4TOPS,那么利用效率只有25%运算单元大部分时候都在等待数据传送,特别是批量待处理的尺寸较小时候,存储带宽不足会严重限制性能。但如果超出平台的运算能力,延迟会大幅度增加,存储瓶颈一样很要命。效率在90-95%情况下,存储瓶颈影响最小,但这并不意味着不影响了,影响依然存在。然而平台不会只运算一种算法,运算利用效率很难稳定在90-95%。

后记:

本篇从自动驾驶芯片用到的一些技术和趋势出发,东拼西凑了一些内容,博主不是专业搞AI SoC的,但是也在从事这方面相关的工作,实际整个AI SoC可能是几百人的工作,但是从自己的理解去挑选一些可能很重要的技术,虽然都是文字也比较虚,没有很具体的技术讲解,但是可以为后续的干货技术讲解铺路。

参考:

  1. 系统级芯片(SoC)的复杂设计选择:内核、IP、EDA和NoC---易灵思
  2. 自动驾驶主流芯片及平台架构(二)特斯拉自动驾驶芯片平台介绍--阿宝说车
  3. 自动驾驶主流芯片及平台架构(二)
  4. 自动驾驶主流芯片及平台架构(一)--阿宝说车
  5. 自动驾驶域控芯片内部架构与性能影响

“啥都懂一点,啥都不精通,

干啥都能干,干啥啥不是,

专业入门劝退,堪称程序员杂家”。

欢迎各位有自己公众号的留言:申请转载

纯干货持续更新,欢迎分享给朋友点赞、收藏、在看、划线和评论交流

彩蛋:

  1. 本公众号提供微信技术交流群,一起探讨嵌入式软件技术(先加微信:thatway1989,备注感兴趣的技术方向)。

  2. 有需要投放广告、商业合作的也可以联系博主。

  3. 赞赏1元钱交个朋友

  4. 点击买点生活必需品,价格不贵

IC技术圈
致力于建立IC技术知识、IC技术圈内人的联系
 最新文章