3、QoS基础概念:服务质量定义、延迟与带宽需求、QoS等级划分

好,我们进入第三章。这一章聊的是QoS的基础概念。

说实话,QoS这个词在芯片设计圈里被用得太泛了。很多人一开口就是“我们要做QoS”,但真要问起“你到底要保障什么?”,往往就说不清了。我个人习惯是,先把概念掰扯清楚,再谈实现。

3.1 服务质量到底在定义什么?

QoS,全称Quality of Service,服务质量。说白了,就是系统对某个请求或某个数据流提供的“待遇水平”。

你想想看,一个SoC里同时跑着CPU、GPU、NPU、Display、Camera……它们都在抢内存带宽。谁先拿到数据?谁可以等一等?这就是QoS要管的事。

我遇到过这样一个项目:一个AI加速器在跑推理任务,结果因为显示控制器抢走了太多带宽,导致推理延迟从5ms飙到了50ms。客户当场就炸了。后来我们加了QoS机制,把显示控制器的优先级降了一档,问题就解决了。

所以,QoS的核心定义可以归纳为三点:

  • 可预测性:请求的响应时间是可预期的,不是随机的。
  • 公平性:不同主设备之间,按照约定的规则分配资源。
  • 隔离性:一个主设备的异常行为,不应该拖垮其他设备。

核心观点:QoS不是“让所有设备都快”,而是“让关键设备在关键时刻不掉链子”。

3.2 延迟与带宽需求——两个不同的维度

很多工程师容易把延迟和带宽混为一谈。其实它们是两个完全不同的维度。

延迟(Latency):从发起请求到收到响应的时间。单位通常是ns或us。

带宽(Bandwidth):单位时间内能传输的数据量。单位是GB/s或Gbps。

我举个例子你就明白了:

  • CPU的Cache Miss请求:数据量很小(64字节),但要求极低的延迟(几十ns)。它受不了等。
  • GPU的帧缓冲写入:数据量很大(几MB),但可以容忍一定的延迟(几十us)。它要的是带宽。

我曾经在一个项目中,把CPU的延迟从100ns优化到了80ns,性能提升了15%。但同样的优化手段用在GPU上,几乎没效果。为什么?因为GPU的瓶颈在带宽,不在延迟。

所以,做QoS设计时,你得先搞清楚:你的主设备是延迟敏感型,还是带宽敏感型?

主设备类型 典型代表 核心需求 QoS策略倾向
延迟敏感型 CPU、实时控制器 低延迟、可预测 高优先级、抢占式
带宽敏感型 GPU、NPU、Display 高吞吐、持续流 带宽预留、Burst控制
混合型 Video Codec、DMA 两者兼顾 动态调节、自适应

我的经验:在CMN互联中,延迟敏感型设备通常走低延迟路径(如ACE或CHB),带宽敏感型设备走高吞吐路径(如AXI Streaming)。别把两种流量混在一起,否则谁也讨不了好。

3.3 QoS等级划分——从0到15的博弈

ARM的CMN架构里,QoS等级是用一个4位的值来表示的,范围从0到15。0是最低优先级,15是最高优先级。

但这里有个坑:不是所有设备都能用15

我记得有一次,一个团队把CPU的所有请求都标记为QoS 15。结果呢?GPU和Display完全拿不到带宽,画面直接卡死。这就是典型的“优先级滥用”。

合理的做法是:

  • QoS 0-3:后台任务、低优先级批量处理。比如数据搬运、日志写入。
  • QoS 4-7:普通应用。比如音频播放、普通DMA。
  • QoS 8-11:重要任务。比如显示刷新、视频解码。
  • QoS 12-15:关键任务。比如CPU实时中断、安全关键路径。

嗯,这里要注意:QoS等级不是越高越好。你给所有设备都设成高优先级,那高优先级就失去了意义。说白了,QoS的本质是“差异化服务”,不是“全员VIP”。

避坑指南:我曾经见过一个设计,把QoS 15用在了DMA上,结果CPU的Cache Miss请求被堵在队列里,延迟从50ns飙升到500ns。最后查出来,DMA的优先级设得太高了。记住:QoS 15是留给“系统不能等”的请求的,不是给“数据量大”的请求的。

3.4 知识体系结构图

下面这张图,是我自己总结的QoS基础概念框架。你可以把它当作本章的思维导图。

QoS基础概念 服务质量定义 可预测性:响应时间可预期 公平性:按规则分配资源 隔离性:异常不拖垮其他 延迟与带宽需求 延迟敏感型:CPU、实时控制器 带宽敏感型:GPU、NPU、Display 混合型:Video Codec、DMA QoS等级划分 QoS 0-3:后台任务 QoS 4-7:普通应用 QoS 8-11:重要任务 QoS 12-15:关键任务 核心原则:差异化服务,不是全员VIP 关键设备在关键时刻不掉链子

这张图把本章的三个核心知识点串起来了。你从“服务质量定义”出发,理解“延迟与带宽需求”的差异,最后落到“QoS等级划分”的具体实现上。这是一个从抽象到具体的过程。

3.5 小结

这一章我们聊了三个东西:

  • QoS的本质是“差异化服务”,不是让所有设备都快。
  • 延迟和带宽是两个不同的维度,设计策略完全不同。
  • QoS等级从0到15,但别滥用高优先级。

我个人觉得,理解QoS的关键不在于记住那些数字,而在于建立起“按需分配”的思维。你设计的每一个QoS策略,本质上都是在回答一个问题:当资源不够时,谁先得到服务?

下一章,我们会深入CMN的QoS机制,看看硬件层面是怎么实现这些策略的。


专注资料整理