在现代多核SoC设计中,服务质量(QoS)机制已成为确保系统性能的关键要素。作为Arm CoreLink系列的最新互连方案,CMN-600AE通过硬件级QoS支持实现了对异构计算场景的精细化流量控制。本文将结合AMBA 5 CHI协议规范,深入剖析其技术实现细节。
CMN-600AE将接入设备划分为四大类,每类对应不同的微架构处理策略:
| 设备类型 | 典型代表 | 核心需求 | 微架构特性 |
|---|---|---|---|
| 有界延迟设备 | 网络I/O、显示控制器 | 硬实时延迟保证 | 最高优先级通道,独占缓冲资源 |
| 延迟敏感设备 | CPU处理器集群 | 低尾延迟 | 动态优先级提升,防饿死机制 |
| 带宽敏感设备 | 视频编解码引擎 | 最小带宽保障 | 带宽预留,信用令牌控制 |
| 带宽饥渴设备 | 大数据加速器 | 最大吞吐量 | 尽力而为服务,后台流量调度 |
这种分类并非互斥——一个视频处理单元可能同时属于"有界延迟"和"带宽敏感"类别。CMN-600AE的QoS调节器支持多维策略叠加,通过下文将详述的QPV(QoS Priority Value)机制实现复合需求满足。
AMBA 5 CHI协议在消息层植入了4位QPV字段,构成端到端QoS传递的基石。其设计遵循三个核心原则:
在CHI-B及以上版本中,QPV字段被编码在REQFLIT的QOS域(位[55:52])。一个典型的读事务QPV传递路径如下:
code复制RN-F --(ReadNoSnp[QPV=12])--> HN-F --(SnpReq[QPV=12])--> RN-F
--(CompData[QPV=12])--> RN-F
对于非QoS感知的外设,CMN-600AE在XP端口集成硬件级QoS调节器,提供三种工作模式:
延迟调节算法(以目标延迟60ns为例):
c复制if (actual_latency > target_latency)
qpv += Ki * (actual - target);
else
qpv -= Ki * (target - actual);
其中Ki为比例系数,通过QoS_LATENCY_SCALE寄存器配置为2的幂次(0x0=2^-3, 0x7=2^-10)
周期调节算法(适用于带宽控制):
c复制if (inter_arrival > target_period)
qpv += Ki * (actual - target);
else
qpv -= Ki * (target - actual);
关键配置寄存器:
- QoS_CONTROL[lat_en]: 启用延迟调节
- QoS_CONTROL[reg_mode]: 选择延迟/周期模式
- QoS_LATENCY_TARGET: 目标延迟/周期(单位时钟)
- QoS_LATENCY_SCALE: Ki系数配置
Point-of-Coherency Queue(POCQ)是HN-F的核心调度资源,CMN-600AE采用分层分区策略:
code复制POCQ逻辑结构(32条目示例):
+------------+-----------------+
| Entry 0 | SF回写专用 |
|------------+-----------------|
| Entries 1-5| Low类共用池 |
|------------+-----------------|
| Entries 6-15| Med类共享池 |
|------------+-----------------|
| Entries 16-30| High类共享池 |
|------------+-----------------|
| Entry 31 | HighHigh专用池 |
+------------+-----------------+
资源分配遵循严格优先级策略:
这种设计通过HN_F_QOS_RESERVATION寄存器编程实现,必须满足:
highhigh_qos_max_cnt > high_qos_max_cnt > med_qos_max_cnt > low_qos_max_cnt ≥ 2
当POCQ资源紧张时,CMN-600AE启动信用制流控协议:
信用分配算法采用两级优先级仲裁:
python复制def grant_credit():
if high_qpc_credits > 0:
return rr_arbitrate(high_qpc_rns)
else:
return rr_arbitrate(low_qpc_rns)
假设系统包含以下组件:
对应的QoS配置策略:
QoS调节器参数:
markdown复制| 设备类型 | 调节模式 | 目标参数 | QPV范围 | Ki系数 |
|----------------|----------------|---------------|---------|--------|
| CPU集群 | 延迟调节 | 60ns最大延迟 | 11-13 | 8-9 |
| 实时网络接口 | 固定QPV | N/A | 15 | N/A |
| 加速器 | 固定QPV | N/A | 8 | N/A |
HN-F资源分配(32条目POCQ):
c复制highhigh_qos_max_cnt = 31; // 实时设备独占
high_qos_max_cnt = 30; // CPU优先
med_qos_max_cnt = 15; // 加速器受限
low_qos_max_cnt = 5; // 后台任务
延迟敏感型负载:
带宽密集型负载:
实时性保障:
CMN-600AE的CCIX网关(CXG)模块实现了跨协议的QoS映射:
请求路径:
code复制CHI.Excl → CCIX.USER[Ext] → 远程CHI.Excl
CHI.LPID → CCIX.USER[Ext] → 远程CHI.LPID
响应处理:
注意:CCIX远程事务受限于本地HN-F的POCQ配置,建议为跨芯片事务预留专用QPV区间(如14-12)
| 计数器名称 | 监控对象 | 优化指导 |
|---|---|---|
| POCQ_HH_OCCUPANCY | HighHigh类条目占用率 | 超过80%需扩容HH保留区 |
| LATENCY_REG_UP_ADJUST | QPV上调次数 | 频繁调整需提高Ki或基准QPV |
| RN_RETRY_RATIO | 事务重试率 | >5%表明POCQ配置不合理 |
| XP_ARB_STARVATION_CYCLES | 低优先级事务饿死周期 | 超过阈值触发优先级降级 |
问题1:实时设备偶尔突破延迟上限
问题2:CPU集群带宽波动大
问题3:CCIX远程事务性能下降
通过本文的深度技术解析,可以看出CMN-600AE的QoS架构实现了从协议层到微架构的垂直优化。在实际SoC设计中,建议通过性能建模工具(如Arm Cycle Models)提前验证QoS参数配置,特别是对于异构计算场景下的资源竞争情况需要重点仿真。