当前位置: 首页 > article >正文

AI系统-23AI芯片CPU子系统介绍

AI SoC中有很多异构核围绕着这些异构核产生了很多子系统之前也介绍过:AI系统-16AI SoC推理芯片架构介绍。这里面的老大哥毫无疑问就是CPU子系统尽管其他AI子系统特别是NPU是干活的主力但是头把交椅还得资格最老的CPU来坐进行全局指挥。当然还有一个太上皇参考之前的文章ARM SCP入门-简介和代码下载编译本文从比较成熟、使用最广的ARM A核为例来介绍下CPU子系统应该比较浅显具体细节会无比的复杂这里能入门可以。1. CPU子系统介绍参考https://developer.arm.com/Processors/CoreLink CMN-600AE上图是ARM针对高性能汽车系统而设计的CMN-600AE包括数字驾驶舱、高级驾驶辅助系统 (ADAS) 和自动驾驶系统。在设计CPU子系统的时候可以选用如上图Arm CoreLink CMN-600AE 相干网状网络的架构。CMN-600AE是 Arm Safety Ready 计划的一部分该计划是 Arm 产品组合中的一系列产品这些产品都经过了各种严格级别的功能安全系统流程和开发。在ARM架构的CPU子系统中组件设计旨在高效地整合了多种功能模块以支持处理器核心的运行、内存管理、中断处理、数据交换以及与外部设备的交互等。以下是ARM CPU子系统中的一些关键组件CPU Cores (处理器核心): 包括多个处理单元如高性能的Cortex-A系列核心或高效能效核心负责执行指令。GIC (Generic Interrupt Controller): 管理中断请求确保系统对事件做出快速响应支持多级中断处理和虚拟化。DSU (DynamIQ Shared Unit): 在具备DynamIQ技术的SoC中DSU管理共享资源如L3缓存优化多核通信和数据一致性。Cache System: 包括L1 Cache靠近核心的高速缓存分指令和数据缓存L2 Cache更大有时是多核共享。Memory Controller: 控制内存访问如DDR控制器管理与主存交互。AMBA总线: 如AMBA总线架构提供系统内部组件间的通信包括常见的AXIAdvanced eXtensible Interface协议。System Control Block: 负理系统复位、时钟、电源管理等初始化配置。Security Features: 如TrustZone、加密引擎确保系统安全。Debugging and Trace: CoreSight、JTAGC等方便调试和性能分析。Connectivity and Peripherals: 包括USB、Ethernet控制器、显示接口、I2C、SPI等以支持与外设别交互。这些组件共同构成了复杂且高度集成的CPU子系统支持现代计算平台的高效、低功耗、安全性以及可扩展性需求。ARM对于异构处理器架构**bit.LITTLE高性能小功耗**给出的一张经典图2. 关键组件2.1 CPU CoreARM在商用领域还是领先其有广泛的使用场景设计和成熟的稳定性生态发展很好。后来者RISC-V目前在一些低端产品中使用较多。ARM分为三个系列Cortex-ACortex-RCortex-M。其他的一些应用如下这里我们以针对汽车的A76AE为例进行说明A76AE 与 A76 类似但具有Split-Lock的额外优势使其适用于汽车、航空、机器人和其他自主应用。Cortex-A76 专为 AI/ML 打造可提高边缘响应能力。ARM 表示与 A75 相比这款处理器的整数浮点性能提高了 25%浮点性能提高了 35%。该核心每周期可获取 4 条指令同时在同一周期内重命名和调度 4 个 Mops 和 8 个 μop。与 A90 相比内存带宽也增加了 75%。该处理器支持DynamIQ与更节能的A55核心一起使用时可提供高性能计算。举例像 DSGW-380 RK3588工业机器学习边缘AI网关 得益于这种异构系统它们能够在处理复杂的边缘 AI 任务时提供高性能和能效的结合。该网关还在其 8 核 CPU 中内置了 NEON 协处理器在其 SoC 中内置了 6 TOPS NPU以增强其 AI 功能。对于前端架构总体来看Cortex-A76是这样一个结构超标量乱序结构拥有4个解码前端4发射8个执行端口总流水线级数13级执行延迟为11级。在前端ARM设计了一个新的预测/获取单元被称为“基于预测的获取”这意味着分支预测单元将介入指令获取单元的工作这和之前所有的ARM微架构都有所不同能够实现更高的性能和更低的功耗。对于后端架构的执行部分。Cortex-A76的整数核心包含了6个执行单元其中图中有4个单元分别是1个分支、2个ALU、1个ALU/MAC/DIV单元再加上一个加载/存储单元。其中的3个整数执行流水线中的2个ALU进行简单算术操作1个复杂流水线执行乘法触发和CRC操作。3个整数管道由一个深度为16的指令队列提供指令服务2个加载/存储单元则由深度为12的指令队列负责。浮点方面ARM设计了2个执行单元其中一个执行FMUL/FADD/FDIV/ALU/IMAC等功能较为强大另一个比较简单只执行FMUL/FADD/ALUASMID浮点核心由2个深度为16的队列提供指令服务。下面介绍A76AEArm Cortex-A76AE带来了最高水平的Split-Lock能力包括双核锁步DCLS的能力。Cortex-A76AE也提供了毫不妥协的性能和热效率。它是下一代高级驾驶辅助系统ADAS和自动驾驶系统的首选处理器。热效率更高效包含最新的最先进的微体系结构特性提供更大的单线程整数、浮动点、内存和ML性能。在有限的功率范围内执行具有持续性能的工作负载。使用Split-Lock的灵活性使用ASIL D硬件指标切换最高的分裂模式的多核性能或高级多核容错的锁定模式。为未来的混合临界性应用程序提供额外的灵活性。超尺度处理器核心超尺度处理器核心解码、问题和执行比上一代更多的指令。增强功能还包括完全无序处理、非阻塞的高吞吐量L1缓存以及高级指令和数据预取。当然这里只是举个例子实际应用中随着时间的推移新的处理器的出现。但是其基本原理是相似的。2.2 DSUARM的IP可以直接去ARM官网下载资料https://developer.arm.com/documentation/100453/latest/DSU的一些特点成簇绑定使用核心功能是控制CPU内核使其成簇Cluster使用簇内每一个核心可以单独开关、调整频率/电压能效表现更佳甚至制造商是可以将不同核心以不对等的数量放到一个簇内兼顾成本与性能。L3缓存的共****享DSU能够使用CCI、CCN或是CMN不同总线技术把CPU与SoC里其它单元GPU、Modem、内存高速连接起来假如它拥有4MB三级缓存能以动态方式分配缓存给每个核心比如说Cortex-A75×1 Cortex-A55×7下可以将3MB缓存分配给A75核心剩下7个A55核心共享1MB缓存甚至可将三级缓存交给GPU等单元使用灵活性非常高冗余设计设计DynamIQ之时ARM还考虑到冗余需求比如相比智能手机汽车对可靠性、冗余度要求高出不少DynamIQ允许多个簇通过CCIX连接在一起这样处理器就可以分布于汽车不同位置当发生交通意外一个簇受损时DynamIQ技术可以调用出备用处理器保证汽车正常运转。DynamIQ™共享单元DSU包括L3内存系统、控制逻辑和外部接口以支持DynamIQ™集群。DynamIQ™集群微体系结构整合了一个或多个核心与 DSU形成一个按指定配置实现的集群。在宏单元实施过程中可以选择和配置core。集群可以以以下三种配置之一实现一组具有相同微体系结构的核心。两组核心其中每组具有不同的微体系结构。这种配置可能在 DynamIQ™ big.LITTLE™集群中使用。三组核心其中每组具有不同的微体系结构。DynamIQ cluster顶层由DSU与DebugBlock组成。DSU包含L3、ctrl logic external interface。DebugBlock包含3组apb接口、rom、CTM、CTI PMU。一个DynamIQ™集群系统由两个顶级模块组成一个包含核心的模块和一个DynamIQ™共享单元DSU。DynamIQ™集群被称为该集群。将调试组件与集群分开可以在单独的电源域中实现调试组件从而允许在断电时进行调试。下图显示了DynamIQ™集群系统中的主要组件CN代表一组核其中CN的值为核总数-1。Arm架构允许内核是单个的或多线程的。**处理元素PE**执行一个执行线程。一个单线程核心有一个PE一个多线程核心有两个或更多个PE。在引用一个核心的地方这个核心可以是一个单一的或者多线程核心。与PEs相关联的信号名称使用缩写PE其中PE的值为PEs - 1的总数。DSU AE主要是添加了比较器再有就是亮色部分都复制一份包括执行逻辑、时钟、功率状态各个界面当然缓存不能复制那样成本太高也意义不大。|元件|描述|| — | — ||CPU桥接器|CPU 网桥控制内核和 DSU 之间的缓冲和异步处理。||时钟和电源管理|群集支持一组由外部电源控制器控制的省电模式。这些模式是通过 P 通道上的电源模式请求来选择的对于每个内核以及用于 DSU 的单独 PChannel。通过从外部时钟控制器向DSU发出的Q通道请求来支持时钟门控。Q 通道允许单独控制 SCLK、PCLK、ATCLK 和 GICCLK 时钟输入。||Snoop 控制单元|Snoop Control Unit (SCU)保持集群中所有数据缓存之间的一致性存在私有的缓冲区||L3 缓存|缓存大小实现为 256KB、512KB、1MB、1.5MB、2MB、3MB 或 4MB。所有缓存的行长均为 64 字节。可选择实现数据和标签RAM的ECC保护。||主存储器主控|主存储器接口最多支持两个ACE或CHI主接口。||加速器一致性端口|加速器一致性端口 ACP 是可选的从接口。ACP 提供对可缓存内存的直接内存访问。SCU 通过检查 ACP 访问在核心和 L3 缓存中的分配来保持缓存一致性。ACP 实现了ACELite 协议的子集。||外设端口|外设端口是可选的主接口提供对紧密耦合加速器的DEVICE访问。该端口实现 AXI 4 主接口协议。||DSU系统控制寄存器|DSU 实现一组系统控制寄存器这些寄存器对群集中的所有内核都是通用的。您可以从集群中的任何内核访问这些寄存器。这些寄存器提供1.控制群集的电源管理。2.L3缓存分区控制。3.CHI QoS总线控制和方案ID分配。4.有关 DSU硬件配置的信息。5.L3 缓存命中和未命中计数信息。||调试和跟踪组件|每个内核都包括一个嵌入式跟踪宏单元 ETM允许在调试时进行程序跟踪。来自内核的触发事件被合并并输出到调试 APB 主节点。在调试 APB 从机上接收到内核的触发事件和调试寄存器访问。||群集到 DebugBlock APB|当 APB 写入时来自内核的触发事件将传输到 DebugBlock||DebugBlock 群集 APB|触发事件在APB 写入 DSU 时传输到内核。来自系统调试APB 的寄存器访问被传输到 DSU||系统调试 APB|系统调试 APB 从属接口连接到外部 CoreSight 组件如调试访问端口DAP||CTI 和 CTM|DebugBlock 实现嵌入式交叉触发器 ECT。交叉触发接口 CTI 分配给集群中的每个 PE如果存在则为集群 ELA 分配额外的 CTI。CTI 通过交叉触发矩阵 CTM 相互连接。实现单个外部通道接口允许将交叉触发扩展到 SoC。||调试ROM|ROM 表包含系统中的组件列表。调试器可以使用 ROM 表来确定实现了哪些CoreSight 组件||电源管理和时钟门控|DebugBlock 实现了两个 Q 通道接口一个用于控制 PCLK 时钟的请求另一个用于控制调试电源域的请求。|DSU的流程其主要功能和特点包括L3缓存控制器DSU集成L3缓存控制器为整个CPU集群提供共享的、大容量的高速缓存以减少对更慢速主存的依赖提高数据交换效率。一致性管理在多核处理器系统中DSU负责维护缓存一致性确保所有核心看到的数据是一致的通过实施缓存一致性协议如MESI、MOESI来协调数据更新。数据共享与分配DSU优化多核间的数据分配和共享通过有效的缓存分配策略和传输机制减少数据复制提高数据访问效率。能效管理作为SoC的一部分DSU还可能集成能效管理机制支持动态调整频率和电源状态以平衡性能与能耗。系统互联DSU通过高带宽、低延迟的内部总线与CPU核心、外设别、内存控制器等SoC组件相连确保数据快速流动。简言之DynamIQ Shared Unit是DynamIQ架构中的一个核心组件它通过提供共享缓存、缓存一致性管理、数据高效共享和能效优化支持高性能、多核处理器系统中复杂数据处理和高效协作。2.3 缓存计算机系统中的层次化缓存层次结构通常由多个级别的缓存组成这些级别包括L1缓存、L2缓存和L3缓存。每个级别的缓存都有不同的特性例如容量、访问速度和成本。以下是一般的层次化缓存结构L1缓存第一级缓存位置通常与处理器核心紧密集成位于核心内部。容量相对较小以KB为单位。访问速度非常快与处理器核心的时钟速度相匹配。作用提供最快的数据访问用于存储频繁使用的指令和数据。L2缓存第二级缓存位置通常位于处理器核心和主内存之间。容量比L1缓存大以MB为单位。访问速度比主内存快但相对于L1缓存较慢。作用扩展了缓存层次结构提供更多的缓存空间用于存储更多的指令和数据。L3缓存第三级缓存位置通常位于多个处理器核心之间是共享的。容量更大以MB或更大的单位为准。访问速度相对于L2缓存和L1缓存较慢但仍然比主内存快。作用为多个处理器核心提供共享的缓存资源促进核心之间的数据共享和一致性。主内存RAM位置通常位于计算机系统的主板上。容量远大于L3缓存以GB为单位。访问速度相对较慢远低于缓存。作用存储操作系统、应用程序和数据是计算机系统中存储层次结构的最大容量部分。层次化缓存结构的设计旨在利用不同级别缓存的优势通过提供更小、更快的缓存来提高数据访问速度并通过较大、较慢的缓存提供更大的存储容量。这有助于平衡性能和成本。程序执行时会先将内存中的数据加载到共享的 L3 Cache 中再加载到每个核心独有的 L2 Cache最后进入到最快的 L1 Cache之后才会被 CPU 读取。2L3 CacheL3 Cache第三级缓存是计算机系统中的一个层次化缓存层次结构中的一部分。在这里L3 Cache是DSU的组成部分之一用于支持DynamIQ™集群中的多个处理核心。具体来说关于L3 Cache的说明包括以下几个关键点简化进程迁移L3 Cache的一个作用是简化处理core之间的进程迁移。当一些处理core被配置为没有独立的L2缓存时它们可以共享L3 Cache并将其视为自己的L2缓存。这有助于在处理器核心之间更灵活地进行任务切换和迁移。层次化缓存结构在计算机系统中层次化缓存结构是一种常见的设计其中L1、L2和L3缓存层次不同越高级别的缓存容量越大但访问速度相对较慢。L3 Cache通常是多个处理核心共享的以提供更大的缓存容量。一致性维护L3 Cache通过Snoop控制单元Snoop Control UnitSCU来维持处理核心和L3缓存之间的一致性。这确保了所有核心对共享数据的访问是同步和一致的防止数据不一致的问题。总体而言L3 Cache在多核系统中发挥着重要作用提供了更大的共享缓存促进了任务之间的灵活性和数据一致性。通常情况下每个处理器core都有自己的L1缓存和L2缓存。然而有时为了某些设计或性能的考虑可以选择将某些core配置为没有独立的L2缓存。没有L2的coreL3 cache可视为L2cache。在这种情况下这些core需要访问共享的L3缓存来获取缓存的好处以满足其对数据和指令的快速访问需求。这种配置的优点可能包括降低硅芯片的复杂性、减小硅芯片的面积、降低成本等。然而也需要确保在共享L3缓存的情况下这些核心仍然能够有效地协同工作并且对共享缓存的访问能够被管理和优化以确保整体性能的提升。2.4 SCUSnoop Control UnitSCU是多处理器系统中的一个关键组件特别是在包含缓存一致性设计中如对称多处理机群集SMP或片上系统SoC中。其主要作用是维护缓存一致性确保所有处理器核心对共享缓存的内容有统一的视图景从而保证数据的一致性和正确性。SCU的工作机制通常包括以下方面监听Snooping: SCU监听所有处理器核心对共享缓存的访问请求包括读取和写入操作。当一个核心试图修改缓存中的数据时SCU介入以确保其他核心对该数据的缓存副本不会变得陈旧。缓存更新: 如果一个核心请求的数据在另一个核心的缓存中是脏已修改但未回写回主存SCU会促使持有该脏数据的核心将其写回到共享缓存或主存然后更新请求核心的缓存保证数据最新。一致性协议: SCU遵循一定的缓存一致性协议如MESIModified, Exclusive, Shared, Invalid、MOESIModified, Owner, Exclusive, Shared, Invalid或其他协议来决定如何响应缓存访问并维护一致性。广播与仲裁: 在多核系统中SCU可能需要广播某些缓存操作比如写操作给所有核心或仲裁缓存访问冲突决定哪个核心优先级次序。目录管理: 在大型系统中SCU可能配合缓存目录使用目录存储哪个缓存行位于哪些地方其状态减少广播范围和提高效率。综上所述Snoop Control Unit是多处理器缓存一致性机制中的重要一环通过监听和协调处理器间的缓存操作确保数据的一致性从而支持高效、可靠并行计算。2.5 Coresight systemCoreSight架构是ARM公司为复杂系统级芯片SoC设计的调试和追踪解决方案它提供了一个高度集成且可扩展的框架用于系统级的调试、性能分析和优化。CoreSight架构旨在支持多核和多处理器环境尤其是在面对现代嵌入式系统和高性能计算领域其功能强大且灵活的特性能够显著提升开发效率和系统性能。以下是CoreSight架构的一些关键组成部分和功能调试和追踪IP模块•包括嵌入式追踪宏单元ETM, Embedded Trace Macrocell, ETM、系统追踪宏单元STM, System Trace Macrocell, STM、数据观看点单元Data Watchpoint Unit, DWT等这些模块负责捕获程序执行时的指令流、数据访问、系统事件、性能计数等信息。跨触发接口- CTICross Trigger Interface, CTI允许不同调试和追踪组件之间同步事件支持复杂的系统级调试和性能分析。调试访问点- DAPDebug Access Port, DAP和DPDebug Port提供调试接口允许调试器通过串行线调试协议如JTAG, SWD访问系统。电源管理支持系统级的动态电压和频率调整DVFS优化能效。CoreSight架构的组件可按需组合根据SoC的具体需求定制化集成以达到最佳的调试、性能监控和系统优化效果支持从简单的单核微控制器到复杂的多核服务器芯片的广泛应用。2.6 SMMUARM SMMU指的是ARM架构中的System Memory Management Unit它是一种系统级的内存管理单元主要负责地址转换和内存访问权限控制。在ARM架构中SMMU主要用于处理非CPU核心的内存管理尤其是外设别和硬件加速器的内存访问。与CPU核心中的**MMU管理虚拟地址到物理地址转换**类似SMMU提供了对系统其他组件的内存访问控制确保安全和高效的数据交互。特别地ARM SMMU在不同场景下的应用和功能包括外设别DMA访问隔离SMMU通过配置映射表管理外设别DMA请求确保其只能访问被授权的内存区域防止非法或越界访问增强了系统安全性。硬件加速器访问控制对于硬件加速器如GPU、网络加速器、加密加速器等SMMU确保它们仅访问指定的内存区域避免对系统关键数据的干扰同时优化访问效率。虚拟化支持在虚拟化环境中SMMU为每个虚拟机提供独立的地址空间映射表实现内存的隔离保障虚拟机间不能互相干扰提升了虚拟化平台的安全性和稳定性。中断处理SMMU在某些实现中如GICv3可能间接参与中断路由和管理特别是与中断的虚拟化处理确保中断能被正确、高效地路由至目标处理器。内存属性管理SMMU还可以控制内存访问属性如是否缓存、共享与否、访问权限等进一步细化内存管理提升系统整体性能和安全性。组件与实现•Stream Table根表基地址寄存于寄存器中是SMMU查找中断或DMA请求映射的起点。•Context Descriptor描述符定义了第一阶段映射表的基地址与第二阶段配置相关联。•Translation Tables用于实际的地址转换依据不同阶段的映射表结构完成从虚拟到物理地址的映射。综上ARM SMMU是系统中一个关键的组件它对内存访问的高效、安全控制和虚拟化支持至关重要特别是在高性能、多核和异构计算系统中。SMMUsystem mmu),是I/O device与总线之间的地址转换桥。它在系统的位置如下图它与mmu的功能类似可以实现地址转换内存属性转换权限检查等功能。为什么需要SMMU了解SMMU出现的背景需要知道系统中的两个概念DMA和虚拟化。DMA(Direct Memory Access直接内存存取, 是一种外部设备不通过CPU而直接与系统内存交换数据的接口技术 。外设可以通过DMA将数据批量传输到内存然后再发送一个中断通知CPU取其传输过程并不经过CPU 减轻了CPU的负担。但由于DMA不能像CPU一样通过MMU操作虚拟地址所以DMA需要连续的物理地址。虚拟化在虚拟化场景 所有的VM都运行在中间层hypervisor上每一个VM独立运行自己的OSguest OS,Hypervisor完成硬件资源的共享, 隔离和切换。但对于Hypervisor GuestOS的虚拟化系统来说, guest VM使用的物理地址是GPA, 看到的内存并非实际的物理地址(也就是HPA)因此Guest OS无法正常的将连续的物理地址分给硬件。因此为了支持I/O透传机制中的DMA设备传输而引入了IOMMU技术ARM称作SMMU。总而言之SMMU可以为ARM架构下实现虚拟化扩展提供支持。它可以和MMU一样提供stage1转换VA-PA, 或者stage2转换IPA-PA,或者stage1 stage2转换VA-IPA-PA的灵活配置。VA虚拟地址IPA: 中间物理地址PA物理地址SMMU的地址映射和隔离功能但是其实现比较复杂对软件的要求也比较高。如果不需要地址映射另外粉笔系统隔离也仅仅做一些简单的例如安全世界和非安全世界那或许不适合使用SMMU使用tzc的ip更适合。2.7 CMNARM发展了一种介于总线和NoC之间的连接系统称之为CMNCoherent Mesh Network主要用于连接CPU内核也可以CPU内核和加速器之间的连接。采用MESH网格结构但没有路由功能本质上还是总线但MESH网格支持的单元很多远比一般总线要多最高可支持512核支持512MB的L3缓存目标市场主要是HPC领域。以cmn600AE为例官方文档参考https://developer.arm.com/Processors/CoreLink CMN-600CoreLinkCMN600AE一种支持车规级安全功能的CoherentMeshNetwork强调其功能安全合规性、高性能、可靠性以及低功耗特性。对外支持AMBA CHI/ACE-LITE等接口内部改用路由结构转发数据并提供硬件一致性和系统缓存还支持多芯片互联。CMN600在T16FFC上可以做到2Ghz另外AE版本增加了车规芯片的安全功能总线内部采用EDC检查接口采用的奇校验。CMN-600AE应用于整个soc之间的cache一致性具有以下特点功能安全合规性该网络符合功能安全标准例如ISO 26262汽车电子领域的功能安全标准或IEC 61508工业自动化领域的功能安全标准等。高性能CMN-600AE采用了先进的连通性算法和协议以提供低延迟、高带宽和高吞吐量的数据传输。可靠性该网络具有内建的容错机制能够在节点故障时自动重新路由数据流确保系统的连通性和可靠性。低功耗CMN-600AE优化了功耗可以在满足高性能需求的同时降低能源消耗。例如上图为一个CMN 2X2的mesh结构。对DDR发起访问的master为CPU和GPUCPU内部有自己的L1/L2/L3cache当GPU发起DDR访问时会通过HN-F节点去管理整个系统的cache一致性。SoC中的设备比如Core、L3缓存、DDR控制器等先连接到Node上然后通过XPCrosspoint水平和垂直互联拓扑图如下CHI协议CHI 的全称是Coherent Hub Interface。CHI 协议是 AMBA的第五代协议可以说是 ACE 协议的进化版将所有的信息传输采用包packet的形式来完成。但是从接口的角度看CHI 和 ACEAXI 这些协议完全不一样了一个RN会产生 transactionreadwritemaintenance给 HNHN接收并对 RN发来的请求进行排序产生 transaction 给 SNSN接收这些请求返回数据或者响应。问题来了transaction 如何在系统中的节点间路由呢首先CHI 协议规定系统中的每个节点必须有一个节点号Node ID。系统中的每个 RN 和 HN 内部要有一个系统地址映射System Address Map以后简称 SAM负责把地址转换成目标节点的 ID。也就是说RN 的 SAM 负责把物理地址转换成 HN 的ID而 HN 的 SAM 需要把物理地址转换成 SN 的 ID。看下图的一个简单例子• RN0根据内部的SAM知道要把请求发给HN0TgtID是HN0SrcID是RN0•HN0在通过内部的SAM知道要继续发给SN0ReturnNID是RN0•SN0接收请求返回数据HomeNID是HN0TgtID从HN0的ReturnNID而来•RN0接收到SN0的数据响应返回CompAck给HN以结束此次transactionTgtID是HN0从HomeNID而来下图展示了一个3*4的互联Mesh用于具有多个RNF实例的大型系统配置包含的Node有HN-F、RN-D、SN-F和HN-D。每个互联的Mesh以左下角的XP为坐标原点建立二元坐标系XY每个XP有若干个Port用来连接具体的设备基于此设备可以通过一个4元组X Y Port DeviceID 唯一标示分别代表设备所在XP的坐标Port以及设备ID。在mesh的架构中CMN600网络提高性能的方法1、mesh的架构层通过多级的cache以及设计HNF node可以去snoop cluster中的cache提高性能2、协议层CHI协议中支持DMT、DCT、和prefetch功能提高性能3、soc层支持qos机制来提高性能qos的value一共有4bit值为0-15值越高优先级越高2.8 GICGIC 的全称为 General Interrupt Controller主要作用可以归结为接受硬件中断信号并进行简单处理通过一定的设置策略分给对应的CPU进行处理。这里以GIC600AE有功能安全功能为例ARM官网手册https://developer.arm.com/documentation/101206/latest/这里以gicv3为例gicv4跟gicv3相比功能差异不大只是提高了虚拟化的性能增加了直接注入虚拟中断的能力和LPI中断注入加速的能力。gic网上的资料比较多这里挑拣一些。一些基本术语如下ARM四种中断类型SGI: Software Generated Interrupt软件产生中断中断号是 0-15。通过向SGI寄存器写数触发可用于CPU间的通信比如时间同步全局进程调度信息等。每个 PE 都有这么多 SGI 号。The Redistributor provides the configuration settings for PPIs and SGIs.PPI: Private Peripheral Interrupt私有外设中断中断号是 16~31。这些中断一般是发送给特定的CPU的比如每个CPU有自己对应的 Generic Timer产生的中断信号就发送给这个特定的CPU进行处理。每个 PE 都有这么多 PPI号。The Redistributor provides the configuration settings for PPIs and SGIs.SPI: Shared Peripheral Interrupt共享外设中断中断号是 32~1019。比如按键触发一个中断手机触摸屏触发的中断共享的意思是说可以从多个 PE 中选择一个发送处理当然也可以指定发送给某个 PE。The Distributor provides the routing configuration for SPIs, and holds all the associated routing and priority information. 特殊中断号。1020-1023。这个在 GICv3 中用于指示特别的场景例如给 EL3 的软件使用。保留中断号1024-8191。LPI: Locality-specific Peripheral Interrupt局部外设中断中断号 8192。LPI 没有 active or active and pending state得到响应后由处理器自动转入 inactive 状态。LPIs are new in GICv3, and they are different to the other types of interruptin a number of ways . In particular, LPIs are always message-based interrupts,and their configuration is held in tables in memory rather than registers. NOTE: LPIs are only supported when GICD_CTLR.ARE_NS1.中断号也叫INTID如下图gicV3四大组件distributorSPI中断的管理将中断发送给redistributorredistributorPPISGILPI中断的管理将中断发送给cpu interfacecpu interface传输中断给coreITS用来解析LPI中断其中cpu interface是实现在core内部的distributorredistributorITS是实现在gic内部的。cpu interface和gic的redistributor通信通过AXI-Stream协议来实现通信。每个core连接一个cpu interface而cpu interface会连接gic中的一个redistributor。redistributor的标识和core的标识一样。中断分组gicv3将中断分成了2个大组group0和group1。group0提供给EL3使用group1又分为2组分别给安全中断和非安全中断使用 以下是IRQ,FIQ与组的对应关系。关于ARM EL的等级如下中断生命周期generate外设发起一个中断distributedistributor对收到的中断源进行仲裁然后发送给对应的cpu interfacedelive****rcpu interface将中断发送给coreactivatecore通过读取 GICC_IAR 寄存器来对中断进行认可priority drop: core通过写 GICC_EOIR 寄存器来实现优先级重置deactivationcore通过写 GICC_DIR 寄存器来无效该中断这个中断生命周期和gicv2的中断生命周期是一样的。中断流程下图是gic的中断流程中断分成2类一类是中断要通过distributor比如SPI中断一类是中断不通过distributor比如LPI中断中断要通过distributor的中断流程外设发起中断发送给distributordistributor将该中断分发给合适的re-distributorre-distributor将中断信息发送给cpu interface。cpu interface产生合适的中断异常给处理器处理器接收该异常并且软件处理该中断LPI中断流程Locality Specific InterruptsLPI这是一个与GICv3及之后版本相关的概念。LPI中断是GIC架构中用来优化中断管理的一部分特别是针对PCI Express (PCIe) 设备的中断处理它与传统的共享中断线方法不同提供了更高效的中断处理机制。以下是LPI的主要特点和工作原理基于消息的中断LPI中断不同于传统的硬件中断线机制它基于消息传递即中断信号通过写入内存中的特定地址中断向量寄存器来触发而非通过物理线路。中断优化LPI机制设计用于优化了中断处理减少中断延迟和提高吞吐量特别是在多核和虚拟化环境中。它避免了物理中断线的限制简化了系统设计和扩展性。中断状态表LPI中断的状态信息存储在内存中GIC通过配置的中断状态表Pending状态表来跟踪这些中断这允许快速查询和处理状态减少了硬件开销耗。GICv3及以后支持GICv3开始引入了对LPI中断的直接注入支持包括了中断状态表和中断配置寄存取址等而GICv4在此基础上进一步优化如支持虚拟中断直接注入到虚拟机。中断路由与优先级LPI中断也涉及到中断的路由和优先级管理GIC的Distributor组件会根据中断的属性和系统策略决定如何路由到适当的CPU核心以及处理的优先级。综上所述LPI在GIC框架下是针对高性能和高效中断处理的一个设计特别是在现代的多核处理器和虚拟化系统中它利用内存消息机制替代传统的硬件中断线优化中断管理提升了系统响应速度和效率。其在计算机体系结构中软硬件融合中属于硬件软化来提高性能和灵活度。再来看看中断控制器GIC600AE。以AE结尾的IP表示在原有的基础上做了功能安全设计可以支持到Asil-D。GIC600AE结构如下图和处理器一样GIC600AE的逻辑部分是靠锁步来支持Asil-B/D内存部分是ECC。不同的是不像处理器是一个单一硬核GIC600AE是一个分布式的结构布局布线可以分开只是在中心有个分配器Distributor。每个处理器附近的子分配器Redistributor和分配器之间就需要安全总线协议设计这就是新的AMBA点对点功能安全扩展可以看到的是各类AMBA的地址和数据线接口上均添加了奇偶校验这也是ISO26262所要求的传输线安全措施之一对于重置和时钟P/Q通道等信号大多采用复制的方式来保护而对于AXIS端口则采用负载加上CRC的方法免去添加管脚。由于中断控制器不像处理器可以有中断系统来处理各类错误和失效因此GIC600AE在分配器中添加了一个错误管理单元可以把我们所提及的各类错误做集中管理记录并上报。此外在分配器与子分配器之间GIC600AE还添加了看门狗防止超时未响应。2.9 外设常见的一些外设如下篇幅有限下一篇单独讲解这些高低速外设。其实这些外设很多是所有子系统共用的并不是CPU子系统独有只是也连接到CPU子系统里面其可以访问使用。crumailboxuartwdtpvtdmausbethUFSefuse3. 总结辅助驾驶的芯片框架图和中控不同辅助驾驶需要感知和决策是一个复杂的实时运算过程没有办法通过安全岛监测来达到高等级安全只能通过处理器本身来保证。所以这里的处理器全部换成了带冗余设计的A76AE和A65AE。虚拟化在这个系统里并不是必须MMU600AE仅仅是为了虚实地址转换。由于没有采用虚拟机各个处理单元之间的数据隔离可以靠CMN600AE的MPU来完成。没有经过CMN600AE的设备需要在和总线之间添加MPU来实行地址保护并且所有的MPU配置要保持一致。另一方面使用MPU也限制了分区不能太多否则就需要映射到内存。到底使用虚拟机还是MPU进行隔离需要看应用来决定。另外如果需要片间互联那所有主设备都应该通过NoC AE形成子网连到CMN600AE。这个框架的计算流是这样的C71Asil-B把数据从传感器收集做固定的图像信号处理把结果放到DDRA65AE读取数据进行车道检测等传统的矢量运算。相对于大核A65AE提供了高能效比的运算能力适合多路并行计算也可以把任务丢到图形处理器来运算延迟稍大能效比也很高。如果涉及神经网络运算那A76AE会把任务调度到AI****加速器上同时在算子不支持的情况下负责部分计算也可以把所有神经网络运算调度到图形处理器这样就不存在算子不支持的问题。当然对于神经网络计算图形处理器能效比还是赶不上专用加速器。A76AE作为大核具有很高的单线程性能可以用来做辅助驾驶的决策。CMN600AE作为桥梁连接了所有设备并提供高带宽硬件一致性以及系统缓存。由于总线支持单向硬件一致性图形处理器和AI加速器从处理器拿数据的时候处理器不用刷新缓存从而减少延迟。当然由于受布线和接口协议限制有些对延迟不敏感的主设备还是需要通过NoC连到CMN600AE。汽车芯片的关键是实时性功能安全电气虚拟化。功能安全最复杂需要IP级就开始支持。如果不符合那需要场景分析做分解用最少的代价实现安全。参考SoC芯片设计系列—ARM CPU子系统组件介绍-公众号SoC芯片向7nm时代的性能巅峰出击ARM Cortex-A76架构解析ARM DSU(DynamIQ™ Shared Unit概述ARM一致性总线CMN600AEARM GIC一 GIC V3架构基础学习笔记。ARM GIC四 gicv3架构基础ARM攒机指南之汽车篇后记其实题目CPU子系统非常的大展开来说软硬件非常的多这里从SoC设计角度挑了一些重点。如果在使用SoC的过程中那么几千页的编程手册一定要多看看。“啥都懂一点啥都不精通干啥都能干干啥啥不是专业入门劝退堪称程序员杂家”。欢迎各位有自己公众号的留言申请转载纯干货持续更新欢迎分享给朋友、点赞、收藏、在看、划线和评论交流公众号“那路谈OS与SoC嵌入式软件”欢迎关注个人文章汇总https://thatway1989.github.io

相关文章:

AI系统-23AI芯片CPU子系统介绍

AI SoC中有很多异构核,围绕着这些异构核产生了很多子系统之前也介绍过:AI系统-16AI SoC推理芯片架构介绍。 这里面的老大哥毫无疑问就是CPU子系统,尽管其他AI子系统特别是NPU,是干活的主力,但是头把交椅还得资格最老的CPU来坐&am…...

基于VibeVoice和卷积神经网络的语音风格迁移

基于VibeVoice和卷积神经网络的语音风格迁移 1. 引言 你有没有想过,让AI用你喜欢的名人声音来朗读一篇文章?或者用某个特定角色的声音来讲述你的故事?这就是语音风格迁移技术的魅力所在。 传统的语音合成技术虽然已经相当成熟,…...

别再折腾CUDA了!用Anaconda在Windows上一键搞定TensorFlow 2.5 GPU环境(附清华源配置)

告别CUDA版本地狱:Anaconda三分钟部署TensorFlow GPU全攻略 刚接触深度学习的开发者们,往往在第一步就被GPU环境配置劝退。CUDA与cuDNN的版本匹配问题像一道高墙,让无数Windows用户在TensorFlow门前徘徊。我曾见过同事花三天时间反复卸载重装…...

nlp_structbert_sentence-similarity_chinese-large赋能微信小程序:实现文本查重功能

nlp_structbert_sentence-similarity_chinese-large赋能微信小程序:实现文本查重功能 最近和一位做在线教育的朋友聊天,他提到一个挺头疼的问题:批改学生作文时,经常发现不同学生提交的作业内容高度相似,甚至有大段雷…...

ADC0808搭配51单片机测电压:从芯片手册解读到量程切换逻辑的代码实现

ADC0808与51单片机电压测量系统:从芯片手册到智能量程切换的工程实践 在嵌入式系统开发中,精确的电压测量是许多应用的基础功能。ADC0808作为经典的8位模数转换器,与51单片机的组合曾是工业控制和仪器仪表领域的黄金搭档。本文将带您深入探索…...

Scarab:基于Avalonia的跨平台空洞骑士模组管理器架构解析

Scarab:基于Avalonia的跨平台空洞骑士模组管理器架构解析 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab Scarab是一款专为《空洞骑士》游戏设计的跨平台模组管理器…...

4个步骤掌握ComfyUI-WanVideoWrapper:从环境搭建到视频生成全攻略

4个步骤掌握ComfyUI-WanVideoWrapper:从环境搭建到视频生成全攻略 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper ComfyUI-WanVideoWrapper是一款强大的AI视频生成插件,作…...

3个步骤掌握163MusicLyrics:多平台歌词提取与管理完全指南

3个步骤掌握163MusicLyrics:多平台歌词提取与管理完全指南 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否曾为找不到老歌的歌词而翻遍全网&#xff1f…...

SDXL 1.0绘图工坊环境部署:Ubuntu+conda+4090驱动适配完整流程

SDXL 1.0绘图工坊环境部署:Ubuntuconda4090驱动适配完整流程 1. 环境准备与系统要求 在开始部署SDXL 1.0绘图工坊之前,需要确保你的硬件和软件环境满足以下要求: 硬件要求: 显卡:NVIDIA RTX 4090(24GB显…...

基于yz-bijini-cosplay的.NET应用开发:AI功能集成实践

基于yz-bijini-cosplay的.NET应用开发:AI功能集成实践 1. 为什么要在.NET应用里集成cosplay风格生成能力 最近有好几位做数字内容平台的朋友问我:“我们给动漫爱好者提供社区服务,能不能在自己的App里直接生成角色同款泳装或Cosplay造型&am…...

lychee-rerank-mm与LangChain整合:构建智能文档检索系统

lychee-rerank-mm与LangChain整合:构建智能文档检索系统 1. 引言 想象一下这样的场景:你在一家律师事务所工作,每天需要从成千上万份法律文书中快速找到与当前案件相关的资料。传统的全文搜索只能帮你找到包含关键词的文档,但无…...

NBFC服务架构深度剖析:从硬件访问到用户界面的完整流程

NBFC服务架构深度剖析:从硬件访问到用户界面的完整流程 【免费下载链接】nbfc NoteBook FanControl 项目地址: https://gitcode.com/gh_mirrors/nb/nbfc NBFC(NoteBook FanControl)是一个跨平台的笔记本风扇控制服务,通过智…...

Docker容器命名冲突的终极解决方案:删除与重命名实战指南

1. 为什么Docker容器会命名冲突? 当你第一次看到"Docker You have to remove (or rename) that container to be able to reuse that name"这个错误提示时,可能会觉得一头雾水。其实这个问题的本质很简单:就像你电脑上不能有两个同…...

通达信顶底背离副图指标源码解析与实战应用

1. 通达信顶底背离副图指标入门指南 第一次接触顶底背离指标时,我也被那些复杂的线条和公式搞得一头雾水。后来才发现,这其实是技术分析中最实用的趋势反转信号工具之一。简单来说,顶底背离就是当价格创新高或新低时,指标却没有同…...

ChatGLM3-6B部署避坑指南:解决组件冲突,实现稳定运行

ChatGLM3-6B部署避坑指南:解决组件冲突,实现稳定运行 1. 项目概述与核心优势 ChatGLM3-6B-32k是智谱AI团队推出的新一代开源对话模型,基于本地化部署方案,特别针对组件冲突问题进行了深度优化。相比传统云端方案,本方…...

OpenClaw多模态扩展:结合百川2-13B-4bits与OCR的图像信息处理流程

OpenClaw多模态扩展:结合百川2-13B-4bits与OCR的图像信息处理流程 1. 为什么需要多模态能力扩展? 上周我需要整理一批技术文档的截图,包含代码片段、错误日志和流程图。手动转录不仅耗时,还容易出错。这让我开始思考&#xff1a…...

为什么SwinIR在图像修复中吊打CNN?深入解析Swin-Transformer的三大优势

SwinIR如何重新定义图像修复?Transformer架构的三大技术革命 当你在手机相册里翻出一张十年前的老照片,却发现它模糊得连人脸都难以辨认时,传统CNN模型或许能帮你恢复部分细节,但边缘依然会显得生硬失真。这正是SwinIR要解决的核心…...

Qwen1.5镜像部署推荐:一键启动WebUI,告别手动配置烦恼

Qwen1.5镜像部署推荐:一键启动WebUI,告别手动配置烦恼 还在为手动配置AI模型环境而头疼吗?今天介绍的Qwen1.5-0.5B-Chat镜像部署方案,让你真正实现一键启动,无需任何复杂操作就能拥有智能对话服务。 1. 项目概述&#…...

【Java 25向量API工业落地白皮书】:20年JVM专家亲授4大高并发场景实战代码(含SIMD加速性能实测数据)

第一章&#xff1a;Java 25向量API工业落地全景概览Java 25正式将Vector API&#xff08;JEP 478&#xff09;升级为标准特性&#xff0c;标志着JVM在高性能数值计算领域迈入新阶段。该API通过泛型向量类型&#xff08;如Vector<Double>&#xff09;、跨平台掩码操作与自…...

VisualVM JMX监控实战:MBean管理与应用指标收集

VisualVM JMX监控实战&#xff1a;MBean管理与应用指标收集 【免费下载链接】visualvm VisualVM is an All-in-One Java Troubleshooting Tool 项目地址: https://gitcode.com/gh_mirrors/vi/visualvm VisualVM是一款功能强大的Java故障排除工具&#xff0c;它集成了JMX…...

终极Neovim AI助手:Avante.nvim如何彻底改变你的编码体验 [特殊字符]

终极Neovim AI助手&#xff1a;Avante.nvim如何彻底改变你的编码体验 &#x1f680; 【免费下载链接】avante.nvim Use your Neovim like using Cursor AI IDE! 项目地址: https://gitcode.com/GitHub_Trending/ava/avante.nvim 在当今AI驱动的开发时代&#xff0c;Neov…...

Android开发工具链:Git、RxJava、Dagger2的实战应用

Android开发工具链&#xff1a;Git、RxJava、Dagger2的实战应用 【免费下载链接】android-interview-questions-cn 项目地址: https://gitcode.com/gh_mirrors/an/android-interview-questions-cn Android开发工具链是提升开发效率和代码质量的关键。本文将详细介绍Git…...

一键获取B站完整评论区数据:告别数据采集烦恼的终极方案

一键获取B站完整评论区数据&#xff1a;告别数据采集烦恼的终极方案 【免费下载链接】BilibiliCommentScraper 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper 还在为B站评论数据采集不完整而烦恼吗&#xff1f;想要批量获取视频评论区信息却无从…...

Drone流水线进阶玩法:用.drone.yml实现多阶段构建+钉钉通知(2023最新版)

Drone流水线进阶实战&#xff1a;多阶段构建与智能通知全链路设计 当你的团队从单体架构转向微服务时&#xff0c;CI/CD流水线会突然变得复杂起来。上周我接手的一个电商项目就遇到了典型问题&#xff1a;每次代码提交后需要同时处理Java后端的Maven构建、前端Node.js打包、Doc…...

微信聊天记录永久保存:WeChatExporter开源工具全流程指南

微信聊天记录永久保存&#xff1a;WeChatExporter开源工具全流程指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 问题&#xff1a;数据丢失的三重警示 2023年某科技…...

构建向量搜索医疗诊断系统:患者数据的相似性匹配终极指南

构建向量搜索医疗诊断系统&#xff1a;患者数据的相似性匹配终极指南 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & &#x1f51c; Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, a…...

终极zsh语法高亮插件版本兼容性测试:Zsh 5.0到5.9全面支持指南

终极zsh语法高亮插件版本兼容性测试&#xff1a;Zsh 5.0到5.9全面支持指南 【免费下载链接】zsh-syntax-highlighting Fish shell like syntax highlighting for Zsh. 项目地址: https://gitcode.com/gh_mirrors/zs/zsh-syntax-highlighting zsh-syntax-highlighting是Z…...

3月技术风暴:程序员的范式革命——2026年3月科技大事件记录

2025年3月&#xff1a;颠覆性技术狂潮与程序员认知升维全纪录 3月结束&#xff0c;你感受到“版本迭代”的压力了吗&#xff1f; 2025年的春天不是春暖花开&#xff0c;而是技术奇点的“温度骤升”。本文绝非一份普通事件清单&#xff0c;而是用程序员的第一性原理&#xff0c;…...

互联网舆情分析系统:基于Nanbeige 4.1-3B的情感与主题挖掘

互联网舆情分析系统&#xff1a;基于Nanbeige 4.1-3B的情感与主题挖掘 最近几年&#xff0c;大家有没有感觉网上的声音越来越复杂&#xff1f;一个热点出来&#xff0c;瞬间就是成千上万条评论&#xff0c;有支持的&#xff0c;有反对的&#xff0c;有理性分析的&#xff0c;也…...

别再只会复制代码了!用CubeMX配置STM32F407的PWM驱动TB6612,从原理到实战一次搞懂

从零构建PWM电机控制系统&#xff1a;STM32F407与TB6612的深度实践指南 引言&#xff1a;为什么你需要摆脱复制粘贴的陷阱 在实验室里&#xff0c;我见过太多学生面对电机控制项目时的第一反应——打开搜索引擎&#xff0c;寻找"STM32 PWM驱动电机代码"&#xff0c;然…...