一、文章介绍
1. 背景
在现代的实时异构系统(SoCs)中,互连的可预测性变得越来越重要。异构系统的复杂性不断增加,主要是由于嵌入式计算的多样化需求(例如自动驾驶中的图像识别)以及半导体制造工艺的快速演进(例如5nm工艺的引入)。虽然不同厂商的SoC架构可能有所不同,但异构性是其功能提升的关键,这意味着这些SoC同时集成了多种架构的处理单元(如CPU、GPU、神经处理单元等)在一块芯片上。互连(Interconnects) 作为系统元件之间的“桥梁”,成为决定异构SoCs实时性能的关键因素。
互连的挑战在于:
- 系统中的主处理单元(Primaries,例如CPU)通常有不同的指令集架构(ISAs),这使得通过软件层面来管理互连的通信开销非常高,并且非常不可靠。
- 因此,要保证互连的可预测性和吞吐量,需要从硬件层面进行设计。
其中,AMBA AXI(Advanced eXtensible Interface) 是当前使用最广泛的互连接口标准,每年有数十亿SoC使用这个协议。然而,大多数工业级的AXI互连设计(如Xilinx的AXI-InterConnect和AXI-SmartConnect)并不适用于实时应用场景。即便有一些实时系统原型互连(如Restuccia等人和Pagani等人的研究),它们仍然基于FIFO队列设计,这会导致在实际使用中难以进行事务的优先级管理。
在图1中,展示了一个异构片上系统(SoC)的硬件架构,具体包括多个子系统和它们之间的互联方式。
1. Core Subsystem (核心子系统)
这个子系统负责执行通用的软件应用和操作系统(OS)。它包含多个可配置的处理器内核,每个处理器内核都配备了指令缓存(ICache)和数据缓存(DCache)。
这些处理器之间通过一个内部的AXI互连(Inter-Processor AXI Interconnect)进行通信,负责处理数据传输和任务调度。
2. Memory Subsystem (存储子系统)
存储子系统管理系统中不同元素共享的内存资源。它包含了片上静态RAM(SRAM)和片外动态RAM(DRAM)。
图中,SRAM有1MB的容量,由SRAM控制器进行管理,DRAM则有4GB,由DRAM控制器管理。
AXI互连(AXI Interconnect)将这些内存资源连接到系统的其他部分。
3. BlueShell DNN Hardware Accelerator (深度神经网络硬件加速器)
这是一个神经网络加速器模块,使用9个乘法累加处理单元(Processing Elements, PEs),以3x3的阵列方式排列来加速DNN推理计算。
它通过直接内存访问(Direct Memory Access, DMA)和SRAM控制器与存储子系统相连,可以高效地从内存中获取数据并加速处理。
4. I/O Subsystem (输入/输出子系统)
低速I/O子系统:使用APB互连(APB Interconnect)连接多个低速外设,如CAN总线、LIN总线、SPI接口和I²C接口。
高速I/O子系统:高速I/O子系统连接了多个高性能的外设,如以太网控制器(ETH)、FlexRay控制器以及DMA控制器,负责高速数据传输。
5. AXI Interconnect (AXI互连)
AXI互连是整个系统的核心通信通道。它连接了核心子系统、存储子系统、DNN加速器以及I/O子系统,确保不同子系统之间能够高效进行数据传输。
由于每个子系统的工作特性不同,AXI互连必须能够处理多种类型的数据流,并根据不同的优先级进行调度。
2. 现有问题
FIFO(先进先出)队列设计的一个主要问题是:
- FIFO按照任务的到达顺序处理事务,这意味着无法根据任务的重要性进行优先级排序。
- 这种设计会引发“物理优先级倒置”(priority inversion),即低优先级的事务可能阻塞高优先级的事务。特别是当系统中有大量的硬件元素时,这种问题会变得更加严重,导致资源竞争和阻塞的频率增加。
这就导致了在异构SoCs中,传统FIFO设计难以确保事务的可预测性。
3. 文章贡献及创新点
为了应对上述挑战,本文提出了一种名为AXI-InterconnectRT(AXI-ICRT) 的新型实时AXI互连,具有以下几个创新点:
- 新型微架构:允许对缓冲的事务进行随机访问,并根据重要性优先处理事务。
- 可扩展的两层调度机制:在系统内通过分层的方式进行调度,确保从主处理单元到从属单元的访问时间,并提供实时性能保障。
- 有限抢占的任务模型:用于描述在这种新架构下实时任务的执行行为。
- 伪多项式时间算法:解决了在分层调度下为异步任务系统选择最佳周期和预算的问题,特别是在应对有限抢占调度所带来的利用率损失方面,文章还提供了一个关键的观察结果来量化这一损失。
- 实验验证:通过真实的使用场景,实验评估了AXI-ICRT的开销、可预测性和性能,并与现有的互连架构进行了对比。
二、前置基础
1. 现代异构SoC的架构
- 异构SoC 中包含多种不同架构的硬件单元,这些硬件单元通常包括通用处理器(CPU)、专用硬件加速器(如DNN加速器)和不同的I/O子系统。不同的应用需求导致硬件架构的多样性,尤其是在一些安全关键系统(如自动驾驶)中需要满足实时性、稳定性和高性能的需求。
- 这些SoC系统架构中的每个硬件元素通过AXI互连进行连接,确保不同的硬件模块能够高效通信。
图1描述了一个异构SoC架构的顶层概览,特别指出了包括核心子系统、内存子系统、深度神经网络硬件加速器(DNN HA)和I/O子系统等主要部分。各子系统之间通过AXI互连进行通信。
2. ARM AMBA AXI协议介绍
- AMBA AXI协议 是当今工业界和学术界广泛使用的片上总线标准,支持多主设备和多从设备的并行双向通信。该协议包含五个独立的通信通道:
- 地址读(AR)通道
- 地址写(AW)通道
- 读数据(R)通道
- 写数据(W)通道
- 写响应(B)通道
传统AXI互连的微架构,其中FIFO队列用于管理不同端口的事务。这种设计虽然简化了硬件实现,但存在“优先级倒置”的问题,即低优先级事务可能阻塞高优先级事务。
这些通道通过标准化信号进行通信,保证了主设备和从设备之间的数据交换。
3. AXI事务
- 在AXI协议中,事务总是由主设备(例如处理器)初始化的。主设备通过发送包含事务信息(如目标从设备地址)的头包来发起读/写事务。读操作通过读数据通道将响应数据传回主设备,写操作则通过写数据通道将数据传递给从设备,从设备通过写响应通道确认传输已完成。
图3展示了一个写事务的硬件层面流程,分为主设备到从设备的请求路径(AW、W通道)和从设备到主设备的响应路径(B通道)。图中展示了一个由3个数据块组成的写突发事务,其中包括事务头和3个数据块(Beats)。
4. AXI互连的基本职责
- 接收与路由请求/响应:AXI互连的第一个职责是接收从主设备/从设备发送的请求和响应,并将它们路由到相应的目标设备。
- 组织事务顺序:AXI互连的第二个职责是决定当从设备/主设备接收到多个请求/响应时,如何组织这些事务的顺序。
为了实现这些功能,AXI互连为每个从设备端口的请求路径引入了一组FIFO队列和多路复用器。在运行时,FIFO队列分别缓存AR、AW和W通道的请求,多路复用器则负责选择这些请求的目的地。同时,每个主设备端口连接了一组独立的仲裁器,这些仲裁器决定向连接的从设备发送请求的访问顺序。
在响应路径中,R通道和B通道采用了对称结构,以保证请求和响应能够正确传输。
看了一半感觉这篇文章和本人研究方向关系没那么大,有空回来更新