AI SoC入门-5NoC总线

原创 thatway1989 那路谈OS与SoC嵌入式软件 2024-10-15 06:31

在大型SoC芯片,特别是AI SoC中,存在多个异构核和子系统,非常的大和复杂。对应芯片设计中,一个重要的技术就是NoC,要想富先修路,NoC就是通信的路。而且SoC把很多硬件模块集成到一个芯片上就是为了让路好走,高效的连接非常重要,路会四通八达,又短又好

为什么NoC比较重要?
众多的SoC设计团队从Arm、Synopsys和Cadence等公司获得IP模块的授权许可,SoC设计趋向于同质化。实现SoC差异化设计的关键在于架构师如何选择和连接这些IP模块以满足他们的系统级要求。
随着SoC中IP数目的增加,异构核大SoC的出现,IP间高带宽,低功耗,可扩展通信的需求。传统的总线方式已经无法满足。NoC(Network on chip)借鉴了分布式计算机通信方式,利用路由和分组交换技术来代替传统总线,来提供更加灵活的IP间通信方式。

此系列文章标题从SoC入门变成了AI SoC入门,因为这里介绍的技术直接针对的自动驾驶AI芯片,并且目前比较火的机器人AI芯片应该比汽车更加的复杂。随着技术的进步应用的领域也在变更,但是AI是个主旋律,在SoC集成AI功能的过程中,原有的框架需要大变,一切都是以AI为基础重新设计。例如本文的NoC总线,以及后续一系列其他其他子系统的文章。

1. NoC介绍

1.1 NoC的诞生

上图是芯片内部的互联技术演进

共享总线**:** 共享总线(如ARM的AMBA总线和IBM的CoreConnect总线)是SoC中常用的通信机制。它们支持使用标准接口并允许 IP 重用的模块化设计方法,但随着系统带宽需求的扩大和资源的争夺,共享总线结构成为性能瓶颈。

分层总线**:** 分层总线涉及使用多个总线或总线段来减轻主总线上的负载。这种层次结构允许同一总线段上的模块之间进行本地通信,而不会导致总线其余部分拥塞。这种方法的缺点是降低了灵活性和可扩展性,并且设计过程很复杂。连接到总线上的内核越多,实现时间收敛和服务质量的难度就越大。

总线矩阵**:** full crossbar系统是片上总线通信的替代方案。不过,随着参与系统数量的增加,线路的复杂性可能会超过逻辑部分。当进行系统升级时,接口设计会受到影响,所有连接模块都会受到影响。尽管受益于亚微米技术,计算和存储使用更小的逻辑单元和内存,但通信的能量并没有按比例减少。相反,串扰效应、电迁移和互连延迟对时序收敛会产生负面影响。

上面这些技术存在的一些问题:

  • 可扩展性差:SoC中各物理模块在芯片上的位置是相对固定的。一旦在物理设计完毕后,要进行修改,实际上就有可能是一次重新设计的过程。另外由于总线架构固有的仲裁通信机制,即同一时刻只能有一对处理器核心进行通信,限制了可以在其上扩展的处理器核心的数量。

  • 平均通信效率低:从整体来看,一个模块取得总线仲裁权进行通信时,系统中的其他模块必须等待,直到总线空闲。

    • 单一时钟同步问题:单一时钟频率较高,造成功耗增大。

面对这些问题,一个简单的思路:单独设立一个部门来攻关
既然各个IP直接通信怎么连接都会杂乱无章,那就加一个IP(路由器类似功能),这个IP专门负责通信资源的分配和保障。由于其是独立的IP还可以动态的进行配置,解决所有问题。
大力出奇迹,哪里薄弱就加结构给资源,有时就是这么简单粗暴的解决问题。尽管复杂度上升了,但是高科技哪有不复杂的,一个飞机,一个光刻机都需要多少个零件。一个SoC也是有无数的IP,但是技术就是牛。

1.2 NoC的定义

NoC总线,全称为Network on Chip(片上网络)总线,是一种为片上系统(SoC)提供高效通信方式的片上通信架构。它采用类似计算机网络的设计思想,将片上系统内部的各个处理器、存储器、I/O等单元连接起来,形成一个可重构的、高效的、灵活的通信网络。

NoC总线作为一种先进的片上通信架构,为SoC系统提供了高效、可扩展、低功耗和低延迟的通信解决方案。随着半导体工艺技术的进步和芯片集成度的提高,NoC总线将在未来的人工智能、物联网、自动驾驶、数据中心等新兴领域发挥更加重要的作用。

NoC总线的主要特点和优势:

  1. 高效通信

  2. NoC采用数据路由和分组交换技术,通过片上路由器将各个处理单元(如处理器核心、内存、外设等)连接起来,形成一个基于网络的通信子系统。

  3. 支持多个通信流在链路上进行多路复用,提高了数据传输效率和通信带宽。

  4. 可扩展性:

  5. NoC的设计具有良好的可扩展性,当系统需要升级或扩展新功能时,只需将新增的处理器核通过网络接口接入到网络中的路由节点即可,无需重新设计整个网络。

  6. 低功耗:

  7. 在NoC中,信息交互消耗的功耗与进行通信的路由节点之间的距离密切相关。相较于总线结构,NoC可以减少裸片面积,使用更少的布线,在短距离通信时能够显著降低功耗。特别是目前大量IP进入大型SoC,布线会非常的多。当通路不需要大带宽时可以进入节能模式。

  8. 低延迟:

  9. NoC通过优化路由算法和流控机制,减少了数据传输的延迟,提高了系统的实时性。

  10. 信号完整性和可靠性:

  11. NoC采用分布式计算系统的通讯方式,避免了长距离全局并行总线引起的串扰噪声和信号延迟问题,提高了信号的完整性和传输的正确性。

  12. 计算和通信分离:

  13. 传统总线中,IP承担计算和通信的双重任务。NoC把通信任务交给了路由器,IP只需要提供数据放入buffer就可以了。

1.3 NoC总线的组成

借鉴计算机网络,NoC总线主要由三部分:网络适配器、网络链路、路由器构成,其与IP核链接,给IP核提供通信服务。

  • IP核:是SoC中的基本处理单元,负责执行特定的计算或控制任务。

  • 路由器:实现通信协议,负责数据包的路由和转发。路由器的作用是负责接收来自不同节点的数据,然后根据预先定义的路由算法,将数据转发到目标节点。路由器还包含一个逻辑块,实现流控制策略(路由、仲裁器等),并定义通过NoC移动数据的总体策略。

  • 网络适配器:在网络接口(NI)和IP核之间建立逻辑连接,实现数据包的封装和解析。IP的接口多样,这里进行数据统一。

  • 网络链路:连接各个路由器和IP核的物理通道,负责数据的实际传输。链路是路由器之间传输数据的物理通道,可以是电气信号线、光纤、无线信号等。链路的带宽和延迟是影响NoC性能的重要因素,因此链路的设计需要充分考虑数据传输的速度和可靠性。

NoC其实有软件硬化的一个思路
操作系统中的路由器、防火墙软件可以实现互联网上数据的传输,积累了丰富的通信经验。芯片中,IP的模块化,IP间的通信要求的速度更加的快速,但是功能要求越来越复杂,就需要像软件一样灵活的通信方法,这样路由器的软件思路就变成了硬件实现,所以就是片上网络的名字由来。

在设计NoC的时候,根据不同IP的需求进行不同的资源分配,例如buffer大小、Channel的多少、网络适配器的类型等。

1.3 NoC拓扑结构

NoC的拓扑结构是指路由器之间的连接方式,常见的拓扑结构包括环形,星形,Mesh,树形,胖树形,蝴蝶形和环面等。规则拓扑(如2D Mesh、3D Mesh等)和不规则拓扑(如专用网络、分层网络等)。不同的拓扑结构对网络的性能、功耗和可扩展性等方面有不同的影响。

Mesh拓扑是一种基于网格形式的拓扑结构,其中每个节点都与周围的节点相连。在Mesh结构中,每个节点只需要了解相邻节点的地址,因此它的路由算法比较简单。Mesh结构的优点是可以快速地进行点到点通信,但是它的链路数目较多,容易出现拥塞。

2D Mesh:

3D Mesh:

不同的拓扑结构具有不同的优缺点,具体应用时需要根据系统的需求来选择适合的拓扑。例如,在需要高带宽和低延迟的场景中,可以选择环面结构;在需要高可扩展性和高带宽的场景中,可以选择胖树结构。同时,NoC的拓扑结构可以根据系统需求进行优化,还可以进行混合结构的设计,充分利用不同拓扑结构的优点。

各种结构比较:

1.4. NoC的挑战

链接的选择:

  1. 串行链接:面积小,降低噪声和干扰。但是需要串行器和解串行器电路,功耗高

  2. 并行链接:功耗小,但是由于其基于缓冲区的架构,面积大

路由器协议的选择:

  1. 复杂路由协议:面积大,功耗多,支持大流量

  2. 简单路由协议:面积小,功耗低,但是不支持大流量

NoC结构为了实现扩展性,也需要负担router/switcher逻辑之类的额外开销,而一旦片上互连模块数量增加时(如大于30个模块),NoC的优势就会体现,此时路由器逻辑和网络协议的开销就可以忽略不计,因此在互联模块数量较多时NoC可以实现更高的性能,同时面积却更小;在互连模块的数量较少时(低于20个),那么片上总线和Crossbar因为设计简单会更加适合。

5G、AI和自动驾驶等新兴应用对SoC设计提出了什么特别要求?

所有这些新兴应用都在创新的独特架构中使用人工智能/机器学习硬件加速器IP。SoC架构师面临的首要挑战是如何为这些加速器提供高带宽数据流,这就要求优化NoC以提供所需的带宽而又不能阻塞整个系统其余部分的通信。

其实最具技术挑战性的AI / ML实施是在汽车和机器人领域,这些应用会使用神经网络边缘推理。但有一个问题,架构师必须同时满足实时要求(比如在击中目标对象之前对其进行检测和分类)和功能安全性(空气中一点辐射变化可不能导致机器人发疯或汽车碰撞)。NoC技术提供了基础技术,可确保整个SoC的通信延迟、带宽和仲裁优先级,同时还通过ECC、硬件复制和检查等技术手段来保护数据及避免信令硬件故障

对于功能安全可以跨芯片使用NoC,使用芯粒(chiplet)来扩展SoC。

1.5 Arteris NoC介绍

Arteris NoC是普及度较高的商用IP之一,被高通在2013年收购后独立上市;包括华为、QCom、INTC/Mobieye、Samsung以及众多Startups都有采用,半数收入都来自中国市场;优点是有很高的模块集成度、扩展功能、开发工具和库以及物美价廉。

NoC创业公司的出路
NoC是一个IP,客户就是做芯片的,而且是大SoC芯片,市场上的客户很少,并且客户很有钱,有自研的能力。所以一个好的出路就是把公司卖给大公司。然后大公司如果卖这个技术给小公司,那就搞界面化傻瓜化配置那一套,只可以用,不能随意改,也不知道为什么。
Arteris NoC是被高通收购后独立上市,其他的同类产品公司都是被大公司收购了。使用者需要直接从QCom/Intel/Facebook/Broadcom/Marvell等上游的生态,或是直接采用套件,或者基于工具库再作修改,包括华为在内。所以,这个NoC IP比较受制于人,并不够足够的灵活来满足开发的需求,对SoC的优化不太理想,自研也是一个趋势。

Arteris产品线可分为Ncore和FlexNoC两类:

  1. Ncore是缓存一致性互连IP,连接CPUs、加速器和内存子系统,是在2016年推出的针对异构计算芯片的IP;

  2. FlexNoC则用于连接外围模块,包括D2D或C2C的并行接口以及一些扩展功能(如针对车规的安全扩展)

对于FlexNoC:

  • FlexNoC 5:Arteris的NoC技术以FlexNoC 5为代表,是一种不可或缺的IP生成器,用于高效、高性能的NoC设计。

  • 物理感知:FlexNoC 5具有先进的物理感知能力,可以在设计周期早期提供直观的设计反馈,加速时序收敛,减少面积,并为物理布局团队提供良好的起点。

  • 支持多种协议:Arteris的NoC支持多种协议,包括AMBA 5 ACE-Lite、AHB、AXI等,使得IP块之间的互操作性更加灵活。

  • 功能安全:FlexNoC 5提供了FuSa选项,支持高达ASIL D级别的功能安全,适用于需要高安全性的汽车和工业应用。

FlexNoC 5是Arteris最新的片上网络(NoC)互连IP,旨在通过其先进的物理感知功能彻底改变片上系统(SoC)设计。它通过优化互连、缩短开发时间、提高性能、降低功耗和最小化芯片尺寸,显著提高了SoC布局质量和生产率。FlexNoC 5支持多种拓扑结构,并因其在移动、汽车、消费者和企业应用程序中的性能和弹性而受到行业领导者的信任。IP支持基本的工业标准协议,并具有内置的物理感知功能,促进高效的路由和定时关闭。此外,其功能安全(FuSa)选项满足ASIL D要求,使其适合安全关键应用。

2. 硬件相关

一般SoC都有一个NoC通信的图,上图只是一个举例,实际在AI SoC中会更加的复杂,

  • 对于一个IP往往是通过APB或其他总线连入NoC

  • 连接入NoC的线路分类为:数据传输功能、配置、故障以及debug等,这些在对外提供的寄存器里面都可以看到。不同的IP接入NoC时可以根据需求选择需要的功能接入。

一般独立连入NoC的子系统如下:

  1. CPU子系统:里面有很多core,通过cmn连接到NoC;其他gic、dma、etr、rom、pvt、mailbox等通过

  2. DDR子系统:内部会通过硬件IP区分安全区域和非安全区域的访问,例如使用tzc的IP,一般通过APB接入NoC。

  3. SRAM:一般通过AXI总线接入NoC

  4. CRU:控制SoC的clock和reset功能,一般是整个SoC控制的CRU在安全世界权限。子系统内部也有CRU,不是直接接入NoC。

  5. DTM:追踪调试器

  6. CM:加解密引擎

  7. UFS:与传统的eMMC存储相比,UFS在性能上有显著的提升。UFS具有串行接口、全双工通信和分层架构的优势,可以提供更高的数据传输速度、更低的功耗和更大的存储容量。

  8. LSSY:低速外设子系统,包括gpio、spi、i2c、qspi、uart等

  9. HSSY:高速外设子系统,包括eth、usb、SD、DMA

  10. MIPI:负责相机信息的传输,通过CSI接入NoC

  11. ISP:对MIPI过来的信息进行处理,例如白平衡、降噪等,之后给NPU进行AI处理。里面会嵌入一些流媒体信息处理的NoC来接入外面总的NoC总线。

  12. NPU:一般AI使用了大量数据,NoC会有独立的资源分配,例如DDR中会有独立的NPU NoC通路连接,不用跟其他的子系统争夺资源。

  13. VPU:视频编解码处理单元。在NPU处理完视频图片对识别的物体进行标示后,一般需要显示在座舱里面的屏幕上,这时候的数据传输压力比较大,就需要用上VPU进行编解码后显示,或者编码后的摄像头数据直接上传到云端。

  14. FSI:功能安全岛,监控整个系统的状态,对错误进行处理。

  15. FCCUMUX:故障上报配置相关,用于实现功能安全

  16. PMU:电源管理单元,一般高级的SoC,PMU有自己独立的核和固件,独立接入NoC

3. 软件相关

软件相关的就是可配置的寄存器,然后做出对应的驱动程序供整个软件使用,一般一个驱动程序提供下面的功能:

  1. 初始化硬件配置,让硬件work

  2. 注册中断,来消息或者出错的时候进行上报

  3. 提供文件节点,供app使用

NoC驱动实现的功能如上图,主要包括QoS、传输超时、故障、共用配置等。

关于noc的linux源码可以参考:

  1. https://lore.kernel.org/all/20211129154337.14398-1-pandith.n@intel.com/

  2. https://lkml.indiana.edu/hypermail/linux/kernel/2107.1/06779.html

3.1 NoC数据包统计追踪

在NoC上传输的数据报文是统一的,像计算机网络里面的OSI七层协议。

上图显示了由4字节有效负载宽度和1周期报头惩罚定义的简单格式。

彩色字段可以是可选的,宽度也可以是可变的。

分组传输从上到下,从左到右开始。

FlexNoC技术支持两种数据包格式:

  • 具有有效负载的数据包,如写请求、读取响应和一些前导请求。

  • 没有有效负载的数据包,即所有其他类型。

无论请求或响应状态如何,数据包报头都具有相同的格式。例如,读响应、写响应和读请求标头具有相同的格式。事务请求数据包头及其关联的响应头中的大多数字段都具有相同的格式。

对于NoC数据包探测,主要包括如下功能:

  • 支持任何传输数据包格式和序列化。

  • 跟踪模式与可编程的数据包过滤器。

  • 可选的数据包有效负载跟踪。

  • 可编程流量控制模式:溢出管理和侵入性

  • 统计数据可以定期或在手动触发后收集并发送给观察者。跟踪过滤器和统计数据计数器上的

  • 警报。

  • 被探测事件的可选时间戳

驱动软件中对packet进行追踪也需要进行寄存器配置,下面是相关的一些寄存器:

3.2 故障探测

包头存储在探测中,如果包头错误,或者数据有效载荷的后续错误状态表明延迟目标错误,则将其发送到探测输出。

探测链路未注入流量控制;对数据路径没有定时影响。如果在探测中还有一个未处理的错误包时检测到另一个错误,则第二个错误将被忽略。

每当在FlexNoC FlexArtist软件中启用跟踪和统计收集特性时,就会实现FlexNoC数据包探测单元。该单元可以与FlexNoC事务分析器单元一起使用,以创建事务探测。

在系统初始化的时候,驱动软件需要配置error probe使能寄存器,使能后如果发生error就会有中断上报。

3.3 传输分析过滤

FlexNoC事务过滤器单元使用可编程的标准来选择请求和响应事件。该单元集成到新单元,并连接到新单元通用运输单元。可以将多个事务过滤器连接到一个FlexNoC事务分析器单元。

FlexNoC事务分析器单元从一个或多个事务过滤器接收事件,并将它们组织成直方图箱,由可编程阈值定义。该单元通过单元外部事件输入端口连接到标准数据包探测器。

对传输延迟或者错误的报文进行统计,并提供过滤功能。

在图中:

  • 请求端口为红色,并连接到数据包探测ONU,用红色表示。数据包探测子单元的输出连接到观察器。标准数据包探测特性过滤、跟踪和统计收集可用,但不支持有效负载跟踪。

  • 事务处理功能用棕色表示。在每个事务端口上实例化事务过滤器。过滤后的输出连接到事务分析器单元,其输出连接到数据包探测子单元的外部输入端口。因此,与使用NoC内部探测事务时相同的特性:事务过滤和分析以及统计收集。

在给定的通用探针中实例化的探针端口和子单元的实际类型取决于探针的配置方式。例如,如果没有指定事务端口,则不存在图中以棕色表示的元素。如果不需要收集统计信息,则将实例化数据包探测子单元的仅跟踪版本。如果需要这两个功能,并且端口所需要的所有信号都可用,则同一接口可以连接到仅请求端口和事务端口。但是,如果事务端口和仅请求端口所共有的信号的宽度不同,则应该将它们填充到探测之外的更宽的集合中。

软件配置相关寄存器:

3.4 QoS配置

QoS就是Quality of Service,服务质量。通过调整优先级来提供更好的服务质量。例如VIP、超级VIP、白金卡,铂金卡等。服务质量好,吞吐量高,延迟就小,这里跟计算机网络里面的概念是一样的。

应该支持的一些功能:

  1. 可以固定配置,也可以运行时可配置QoS优先级

  2. 感知搞优先级数据包的下游,清理道路

  3. 设置阈值限制

  4. 调节器动态调整长期占用且大流量的IP优先级

软件需要为每个IP进行模式的配置,例如是限制带宽,还是使用调节器,以及固定优先级等。

参考:

  1. 从SoC到NoC:芯片架构的演进与变革:https://www.elecfans.com/d/2078685.html

  2. 系统级芯片(SoC)的复杂设计选择:片上网络(NoC):https://www.eet-china.com/news/202012211123.html

  3. 谈谈NoC Interconnect在复杂SoC设计中的应用 - 多核/异构系统的最佳互连方法:https://zhuanlan.zhihu.com/p/524040847

  4. https://blog.csdn.net/ygyglg/article/details/137525338

后记:
关于NoC的支持更多还是需要靠外国的供应商,对于软件会配置寄存器就可以了。芯片里面的知识是很多,后续继续拓展分析。

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

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

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

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

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

彩蛋:

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

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

  3. 赞赏1元钱交个朋友

《ARM三期课程》福利:

深入探索就必须要学习ARM芯片的基础知识,如果付费就能得到更好的视频讲解和全面专家级的服务,找了一门
周贺贺老师的课,《ARM三期课程》推荐给大家(联系博主,使用博主二维码购买有打折优惠):

详情也可以咨询博主V: thatway1989,不是付费群体的也可以看看上面的目录,看看那些自己的知识体系比较缺失
自己去补也可以。但是着急找工作,做毕设,做概念扫盲或者大佬开拓新领域知识,直达
百万年薪,需要的扫码
报名链接:

results matching ""

    No results matching ""