虽然Mobileye在L3/L4领域被英伟达和高通压制,但目前市场主流还是L2,L3/L4的出货量目前还很低,Mobileye在L2的市场占有率在75%以上。2021年出货量高达2810万片,绝对的霸主地位。
图片来源:互联网
L2+时代,被英特尔收购的Mobileye不再以芯片单打独斗,而是借助英特尔的强大实力,开拓更广的产品线来为客户提供全套解决方案。英特尔在光电子领域耕耘多年,光收发器技术全球领先,激光雷达本质上就是个光收发器。在射频领域,英特尔也有足够的技术积累,WiFi6和5G领域皆有相关产品,做毫米波雷达芯片更是得心应手。同时Mobileye也推出了EyeQ6系列芯片。
图片来源:互联网
EyeQ6H与Mobileye之前的芯片比最大不同是加入了两个GPU,一个是很小规模的ARM MALI GPU,算力仅为64GFLOPS,估计是双核的MALI G78AE,运行频率500-600MHz之间,预计用于ADAS的AR图像叠加输出。另一个GPU不明,可能是Imagination的BXS 1024 MC-2,算力1000GFLOPS,主要是应对OCL,应该是OpenCL,OpenCL是GPGPU的API,OpenCL类似于另外两个开放的工业标准OpenGL (跨平台图形API) 和OpenAL (跨平台音效API),这两个标准分别用于三维图形和计算机音频方面。OpenCL扩充了GPU图形生成之外的能力。OpenCL由非盈利性技术组织Khronos Group掌管。应该是做立体视觉中的计算量最大的立体匹配用的。顺便说一下,计算机视觉领域的关键库OpenCV是英特尔主导并开源的,英特尔无处不在,早在1999年,英特尔就开始做OpenCV的前期工作了。
CPU方面还是MIPS的架构,还是EyeQ5的I6500-F架构,特色是多线程,EyeQ6H是8核32线程。ARM架构除了极罕见的A65AE外,都是单线程架构。x86架构通常都是多一倍的线程,一般是4核8线程这样,只有MIPS,从2005年引入多线程以来,一直以此为卖点。
MIPS成立于1984年,是最早提供RISC CPU IP的公司,主打的实时应用,特别是互联网实时应用,网络打印机、路由器、网关领域是MIPS的核心领域,注重性能而对功耗不太在意。但这些领域缺乏增长,股东看不到增长就要出售公司。2018年MIPS经过两度转手,最终落到了AI初创企业Wave Computing手里。不过好景不长,在收购第二年,Wave Computing就申请破产重组,最终还是活过来了,2020年11月,Wave将RISC-V支持加入MIPS核心,此举并不意味着Wave全面倒向RISC-V,MIPS仍然有庞大的用户基础,维持稳定的现金流没有问题,在2019年采用MIPS架构的芯片就有10亿片出货。汽车领域客户不少,包括电装、NXP、奔驰投资的Valens、Microchip。
图片来源:互联网
简单说一下多线程,我们说的多线程一般是SMT,Simultaneous Multithreading,它还有一个名字超线程(Hyper-Threading),业内也叫线程级并行,线程级并行是一种显式并行,也就是程序员要写多线程程序。随着单核性能的不断提升,后端执行资源也越来越丰富,这种执行端口闲置的情况就会越来越明显,造成资源浪费。这时候,为了将这些资源物尽其用,同步多线程SMT就应运而生了。SMT的思路是这样的,既然一个任务填不满后端的资源,那么我们就找不止一个任务来填就好了,不同任务之间的相互依赖和冲突情况很低,放到一起来执行正合适去填满后端资源。
图片来源:互联网
即一个物理核心虚拟出多个逻辑核心,一般是一个物理核心虚拟出两个逻辑核心,即英特尔和AMD的SMT2。而MIPS是SMT4,在常规指令译码后多了4个线程级逻辑单元,实际物理上不存在,要靠软件来实现。上图是I6400的微架构图,I6500与之类似。
天下没有免费的午餐,SMT技术带来多线程性能提升的同时,势必也会有一些负面的影响。首先是上下文转换的开销,一个物理核心如果引入多个线程,那么是要协调、隔离多个线程的,任务的转换之间会产生额外的开销。所以最理想情况下,如果一个核心有两个线程,那么两个线程的总执行时间会更快,但细分到每一个线程的执行时间,会比分别执行来的慢一些。其次是资源冲突,最典型的冲突就是缓存的冲突,一个线程可以用100%的缓存,而超过一个线程使用同一个缓存,可用缓存就不是100%,会导致大量开销极大的缓存-内存换入换出。只要有一个线程是非常吃缓存的,那么加入SMT不但不会提升总的执行效率,反而会降低整体效率。SMT非常忌讳不同线程的资源冲突,一但冲突SMT就很容易引入反面效果。比如在很多云服务器、HPC服务器上,SMT通常是关闭的,就是因为资源冲突。再次是线程安全问题,两个线程在同一个核心内执行,是需要严格隔离它们的上下文的,线程A不能访问修改其他线程的资源。线程隔离是一个非常复杂和繁琐的过程,若隔离不彻底,会导致执行错误、以及隐私泄漏的问题。最后是功耗,加入SMT后单核的能耗比会有些许倒退。由于引入SMT会导致核心设计更加复杂,静态功耗、漏电会更难控制,这对于移动设备是致命的。这也是为什么SMT在PC和服务器上大行其道这么多年,手机上几乎看不到的原因。
图片来源:互联网
上图为I6500F的一致性管理,这是异构计算的先决条件,一致性特别是缓存一致性。
在一个多处理器系统中,缓存和内存池可能对同一份数据有多份副本,如何保证这些副本的一致性(Coherency)是个必须严肃对待的问题。可以纯软件来处理这个问题,利用Cache操作指令,但开销巨大十分复杂,而且操作系统的内存模型就需要全部改变,这对X86体系甚至绝大多数体系而言都是不能接受的。所以绝大多数计算机体系都是靠硬件来完成Cache Coherency的,硬件会自动保证各个副本的一致性,无需软件操心。常规的做法是加一个Snoop偷窥过滤器。在内存控制器端的CacheAgent(CA),在L3 Cache端,他们都在Ring bus上监听和发送snoop消息。这种模型叫做Bus snooping模型,与之相对的还有Directory模型。考虑到I6500是2016年的产品,可能还是Snoop偷窥过滤器。
图片来源:互联网
I6500的ACE 一致性编织比较适合异构计算,就是CPU、GPU和AI混合。
图片来源:互联网
图片来源:互联网
常见苹果、高通与ARM MALI GPU参数对比
资料来源:佐思汽研
ARM MALI G78AE GPU是ARM首款针对车载领域开发的GPU IP,目标是ASIL-D级标准。
图片来源:互联网
MALI G78AE框架图如上,主要是加入了灵活分区功能,能够提高效率与安全性。
ARM MALI G78AE简介
图片来源:互联网
更多佐思报告
符先生:15810027571(同微信)
赵先生:18702148304(同微信)
「佐思研究月报」
ADAS/智能汽车月报 | 汽车座舱电子月报 | 汽车视觉和汽车雷达月报 | 电池、电机、电控月报 | 车载信息系统月报 | 乘用车ACC数据月报 | 前视数据月报 | HUD月报 | AEB月报 | APA数据月报 | LKS数据月报 | 前雷达数据月报