任务调度—ADS芯片的中场大师

汽车ECU开发 2022-09-02 08:47

作者 | Finch L、复睿微SOC架构专家


01.

异构ADS芯片的背景

ADS因其减少交通事故和无人驾驶的能力而备受关注。传统的ADAS功能在当今市场上已经被广泛应用,例如自动紧急刹车和车道保持,是当检测到危险时,通过对制动、加速以及转向的简单控制来实现的。而对于最新的ADAS功能,例如自适应巡航和智能泊车,则需要对车辆的转向以及速度进行更加精确的控制。但是,这些高级的功能只能在限定的场景或者区域运行。在不久的将来,更高级的 ADS系统有望在更广泛的区域(如拥挤的城市街道、路况复杂的乡村街道)支持更智能的控制,如自动紧急转向和自动代客泊车[1]。

ADS可以控制车辆的移动,它们可以从多个传感器(例如摄像头、Radar、Lidar)的输入中识别物体,并根据识别的结果做出车辆控制的决策。Figure 1是ADS应用的示例[2]。

Figure 1. ADS应用的示例

该示例包含四个流程:

a.在Sensing过程中, ADS系统接收来自多个传感器的信息;
b.在Perception过程中,ADS系统对行人、车辆、路面、红绿灯、交通标志等物体进行检测和分类,识别其位置,预测周围物体的行为;
c.在Planning过程中,ADS系统利用Perception过程的结果规划出车俩的路径;
d.在Control过程中,ADS系统通过控制转向、加速和制动来控制车俩的运动

为了实现目标检测和运动轨迹预测,图像识别和机器学习是ADS系统的必备技术。深度学习的引入,可以实现更高的检测精度和跟踪更多的目标[3]-[7]。但是,这也使得ADS系统变得更加复杂。此外,预计未来的ADS系统可以更进一步的控制车辆,使得全自动驾驶成为可能。因此,ADS的应用程序需要大算力、高性能和低功耗的SoC芯片。

为了同时兼顾高性能和低功耗,ADAS/ADS的芯片通常会采用异构的SoC架构。Figure 2是NVIDIA的Orin系列芯片的架构图[8]。该SoC内部有Arm Cortex-A78AE CPU,NVIDIA Ampere GPU,NVDLA,vision accelerator等多种加速器。

Figure 2. Jetson AGX Orin Series Functional Block Diagram


02.

任务调度的模型与实现

构建一个拥有大量异构加速器的软硬件系统并非易事。Figure 3是一个异构SoC系统示例,其中包含使用shared memory的CPU和多种加速器[9]。由于加速器可能需要使用CPU生产的数据,因此内存的coherence和consistence的设计十分具有挑战。并且操作系统的堆栈、编译器以及调度器都需要重新设计,加速器的粒度也需要仔细定义。因此,编程模型的选择、调度器的设计是ADS系统的重要问题,好编程模型和调度器可以极大的提高算法在ADS芯片中的运算效率。

Figure 3. 异构SoC系统示例

学界和工业界一直在寻找不同级别的并行编程模型来提高计算性能,通常的并行编程模型有ILP (Instruction Level Parallelism)、TLP (Thread Level Parallelism)和DLP (Data Level Parallelism),如Figure 4。这三种并行模型均与计算机体系结构的发展相吻合。处理器中的指令乱序调度使得ILP的能力大幅增长;多核的设计使得TLP变尤为重要;vector计算单元的增加,例如GPGPU,使得DLP得到有效利用。

Figure 4. ILP、TLP和DLP示意图

异构ADS芯片拥有大量的专用异构加速器。ILP、TLP和DLP并不能充分发挥异构加速器的计算潜能,因此选择一种新的编程模型作为ADS算法和芯片的接口迫在眉睫。异构加速器的使用天然为task作为计算单元铺平了道路,TLP (Task Level Parallelism)也顺理成章的被引入进来。其中,task是将一组指令定义成原语的抽象层级,该原语可以在程序中重复使用。用户的线程可以由多个task组成,通常一个task是由芯片中一种加速器执行的。如Figure 5所示,多个task可以根据不同的算法和应用场景构成DAG实现细粒度并行,task之间的边表示依赖关系。

Figure 5. 由多个task构成的DAG

通常,基于task的并行计算环境由两个组件组成:

(1)任务并行API和
(2)任务runtime系统[10]。

前者定义了开发人员描述并行性、依赖性、数据分发等的方式,而后者定义了环境的效率和能力。runtime确定了支持的体系结构、调度的目标、调度策略和异常处理等。但是,这种基于软件的调度器具有固有的缺点:

a.在CPU上运行调度程序实例是一种开销,当任务粒度较小、加速器数量很多时,软件调度会占用大量的CPU资源,并且使得端到端的计算效率发生显著下降;
b.任务在加速器上执行结束,必须通过具有长延迟的中断来通知CPU,进一步导致调度的latency变大;
c.调度的软件开销、延迟开销导致无法编译出细粒度的任务,导致无法利用细粒度的并行性;

Figure 6是不同的任务粒度对OmpSs软件调度器加速效果的影响[11]。在前半段,当任务粒度变小时,Speedup是逐渐上升的;当任务粒度逐渐降低到某个点时,调度开销已经无法被计算掩盖,Speedup开始下降。

Figure 6. OmpSs在不同任务粒度下的加速器效果

如果ADS系统中包含一个SoC级别的硬件任务调度器,则可以大大减轻上述缺点,编译器可以编译出细粒度的任务来充分利用细粒度的并行。Figure 7是在Figure 3的基础上,将HTS (Hardware Task Scheduler)加入到包含CPU和各种加速器的系统中[9]。

Figure 7 包含HTS的异构SoC系统

CPU可以将任务和任务间的依赖关系都推送到HTS,CPU只需要轮询任务完成队列、处理异常等。HTS会维护若干个任务队列,类似与OoO CPU中执行的指令。HTS会维护整个系统中每个加速器的忙闲状态,并将任务发送给空闲的加速器上。

当任务执行结束时,加速器写任务完成描述符来通知HTS,这比中断处理快几个数量级。HTS可以处理任务间的依赖关系,当某个任务依赖解除时,HTS会以无序的方式调度该任务,这可以在异构ADS系统中带来巨大的速度提升。如Figure 8所示,HTS的调度相比于runtime带来显著性能提升[9]。

Figure 8. HTS相比于runtime带来的性能提升

因此,任务调度可以显著提升ADS芯片的计算效率。

03.

任务调度洞察

业内已经有一些将任务调度应用到ADS的示例了。

Apollo Cyber RT是一个专为自动驾驶设计的开源runtime框架。它是基于中心化的计算模型,针对自动驾驶场景的延迟低、并发高和吞吐高进行了专门优化。Cyber RT在Apollo中主要的作用是一个消息中间件,作为RTOS和自动驾驶各个模块的中间通信接口。Cyber RT在Apollo架构中如Figure 9所示。

Figure 9. Apollo架构

Cyber RT的运行流程如Figure 10所示。编译器会将算法编译成DAG,每个算法都可以进行优先级、运行时间及使用资源等方面的配置;Cyber RT可以结合DAG创建任务,并为每个任务分配一个coroutine;调度器根据调度任务类型以及调度策略等将任务放入对于Processor的队列中进行运算。

Figure 10. Cyber RT运行流程

Cyber RT的调度逻辑如Figure 11所示。每个Processor均有一个任务队列,由Scheduler将队列中的任务编排好;任务在哪个Processor上运行,哪些任务先运行,哪些后运行,均由调度器统一调度;任务执行发生阻塞时,支持context switch;支持Thread级的高低优先级抢占。

Figure 11. 调度策略

相比于Apollo纯软件调度,Ascend提供了软硬件结合的调度方案。Ascend开发软件栈支持原生的可微分编程范式和原生的执行模式,在开发效率和计算效率之间进行了折中。一方面,开发者可以轻易的将DNN模型部署到各种Ascend设备上,这些设备也可以配备不同的Ascend core上。开发者可以使用high-level的编程模型实现一次性的开发和按需部署。另一方面,拥有更多架构知识的专家可以利用low-level的编程模型和库进一步提高计算效率。Ascend的开发软件栈如Figure 12所示[12]。

Figure 12. Ascend开发软件栈

Pytorch、Tensorflow和MindSpore等DNN开发框架处于整个开发软件栈的顶端。MindSpore是Ascend core的专用框架。它可以充分的利用Ascend的计算资源,实现很高的计算效率。这些DNN开发框架的输出被称为“Graph”,它表示算法中粗粒度的依赖关系。然后,如Figure 13所示,Graph Engine会对“Graph”进行切分,将适合CPU逻辑处理的算子切分到CPU子图,将计算密集型算子切分到专用加速器子图[13],即被转换成Stream。其中,Stream是由若干个有序的Task组成[12]。

Figure 13. Graph切分示例

TBE (Tensor Boost Engine) DSL (Domain Specific Language)是用Level-3编程模型开发的,可以让没有硬件知识的用户也可以在这个级别编写代码,也称为数学编程级别。在编译器的帮助下,可以从TBE DSL描述中自动生成实例Tasks[12]。

程序员还可以在parallel/kernel level (Level-2)编程模型中开发实例task。此级别类似于GPU 的 CUDA 或 OpenCL。它引入了所谓的TIK (Tensor Iterator Kernel)接口,用于使用 Python 进行并行编程。专用的编译器技术,称为Auto Tiling,用于将大的task转换为小的task,以适应 Ascend 架构。在强化学习算法的帮助下,该技术通过智能搜索合法映射空间,为任何程序提供最佳的映射和调度[12]。

如Figure 12所示,编程模型的Level-1是C编程接口,也称为CCE-C (Cube-based Compute Engine)。在这个Level,架构的所有设计细节都是向开发者公开的。开发者可以在C代码中嵌入汇编,从而充分的利用硬件加速能力[12]。

如上文所述,APP在不同Level的编程模型会被转换为不同的表达形式,即Stream、Task和Block,如Figure 14所示[12]。所有的这些表达在不同级别的调度器中并行执行,详细介绍如下:

  • 应用层:多个应用可以在同一个Ascend SoC上并行执行。
  • Stream/Task层:图编译器会将每个应用编译成多个Stream,每个Stream中有多个Task。多个Stream的Task可以在TS (Task Scheduler)的调度下并行执行,同一个Stream的Task串行执行。TS在Ascend SoC如Figure 15所示[14]。
  • Block层:每个Task可以被分成若干个Block(需要由开发者或编译器显式描述),不同的Block可以被分发到不同的Core上执行。

Figure 14. Ascend调度层级

Figure 15. Ascend 310 SoC架构图




关于复睿微电子



复睿微电子:复睿微电子是世界500强企业复星集团出资设立的先进技术型企业。复睿微电子根植于创新驱动的文化,通过技术创新改变人们的生活、工作、学习和娱乐方式。公司目标成为世界领先的智能出行时代的大算力方案提供商,致力于为汽车电子、人工智能、通用计算等领域提供以高性能芯片为基础的解决方案。

目前主要从事汽车智能座舱、ADS/ADAS芯片研发,以领先的芯片设计能力和人工智能算法,通过底层技术赋能,推动汽车产业的创新发展,提升人们的出行体验。在智能出行的时代,芯片是汽车的大脑。复星智能出行集团已经构建了完善的智能出行生态,复睿微是整个生态的通用大算力和人工智能大算力的基础平台。复睿微以提升客户体验为使命,在后摩尔定律时代持续通过先进封装、先进制程和解决方案提升算力,与合作伙伴共同面对汽车智能化的新时代。

参考文献

1.ZERO, IN PURSUIT OF VISION. "Euro NCAP 2025 Roadmap." (2017).

2.Yamada, Yutaka, et al. "A 20.5 tops multicore soc with dnn accelerator and image signal processor for automotive applications." IEEE Journal of Solid-State Circuits55.1 (2019): 120-132.

3.Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "Imagenet classification with deep convolutional neural networks." Advances in neural information processing systems 25 (2012).

4.Simonyan, Karen, and Andrew Zisserman. "Very deep convolutional networks for large-scale image recognition." arXiv preprint arXiv:1409.1556 (2014).

5.Girshick, Ross, et al. "Rich feature hierarchies for accurate object detection and semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.

6.Long, Jonathan, Evan Shelhamer, and Trevor Darrell. "Fully convolutional networks for semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.

7.He, Kaiming, et al. "Deep residual learning for image recognition."Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

8.NVIDIA Jetson AGX Orin Series Technical Brief, 2022.

9.Hegde, Kartik, Abhishek Srivastava, and Rohit Agrawal. "HTS: A hardware task scheduler for heterogeneous systems." arXiv preprint arXiv:1907.00271 (2019).

10.Thoman, Peter, et al. "A taxonomy of task-based parallel programming technologies for high-performance computing." The Journal of Supercomputing 74.4 (2018): 1422-1434.

11.Tan, Xubin, et al. "Performance analysis of a hardware accelerator of dependence management for task-based dataflow programming models." 2016 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS). IEEE, 2016.

12.Liao, Heng, et al. "Ascend: a scalable and unified architecture for ubiquitous deep neural network computing: Industry track paper." 2021 IEEE International Symposium on High-Performance Computer Architecture (HPCA). IEEE, 2021.

13.https://www.mindspore.cn/docs/zh-CN/r1.8/design/heterogeneous_training.html

14.Liao, Heng, et al. "DaVinci: A Scalable Architecture for Neural Network Computing." Hot Chips Symposium. 2019.

上下滑动,可阅读更多

推荐阅读
丰田自动驾驶系统TAD的技术细节
谈谈整车OTA系统的理解
五千字说清汽车基础软件及国产现状
带不带功能安全(IS26262)的区别,功能安全要做啥?
谈谈simulink自动代码生成
浅谈电机控制器及其功能
谈谈Bootloader自更新
电子电气架构设计需要考虑哪些方面?
汽车E/E架构的网络安全分析
深度解读汽车域控制器
自动驾驶域控制器信息梳理

深度分析整车控制域现状与发展

分享不易,恳请点个【👍】和【在看】

汽车ECU开发 专注于汽车电子ECU软件开发,技术分享。
评论
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 210浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 158浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 134浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 122浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 592浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 320浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 203浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 658浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 145浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 175浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 194浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 74浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦