ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Arm Neoverse CMN S3(AE)架构与CXL 3.0技术解析

Arm Neoverse CMN S3(AE)架构与CXL 3.0技术解析

1. Arm Neoverse CMN S3(AE) 架构概览

在现代多核处理器系统中,一致性网格网络(Coherent Mesh Network)是实现高效数据共享与通信的核心基础设施。Arm Neoverse CMN S3(AE) 作为第三代一致性互连解决方案,专为高性能计算场景设计,支持多达128个计算节点的复杂拓扑结构。

CMN S3(AE) 采用分布式缓存一致性协议(DISTRIBUTED CACHE COHERENCE PROTOCOL),通过优化的路由算法和低延迟通信机制,实现了显著的性能提升。其关键特性包括:

  • 支持CHI(Coherent Hub Interface)协议的最新版本
  • 可扩展的网状拓扑结构
  • 硬件级缓存一致性管理
  • 多芯片系统支持
  • 高级服务质量(QoS)控制

重要提示:CMN S3(AE) 的设计特别注重能效比优化,在相同性能水平下可比前代产品降低约15%的功耗,这对数据中心和边缘计算应用尤为重要。

2. 系统地址映射(SAM)机制详解

2.1 SAM基础架构

系统地址映射(System Address Map,SAM)是CMN S3(AE)中负责地址解析和路由的核心组件。它由多个功能模块组成:

  1. RN SAM:请求节点地址映射
  2. HN SAM:家庭节点地址映射
  3. LCN SAM:本地一致性节点地址映射

每个SAM模块都包含两种主要结构:

  • 非哈希区域(Non-Hashed Regions)
  • 哈希目标组(Hashed Target Groups,HTG)

2.2 LCN SAM配置实例

LCN SAM在HN-S中实例化,用于确定LBT(Local Bound Transaction)绑定事务的CCG节点ID。以下是典型的配置示例:

// LCN SAM区域0配置 lcn_hashed_tgt_grp_cfg1_region0.htg_region0_base_addr = <CHIP-1基地址> lcn_hashed_tgt_grp_cfg1_region0.htg_region0_target_type = 3'b000 lcn_hashed_tgt_grp_cfg1_region0.htg_region0_valid = 1'b1 // 区域结束地址配置 lcn_hashed_tgt_grp_cfg2_region0.region0_end_addr = <CHIP-1结束地址> // HN数量配置 lcn_hashed_target_group_hn_count_reg0.htg0_num_hn = 8 // 8x2(CAL2)=16 lcn_hashed_target_grp_cal_mode_reg0.htg0_hn_cal_mode_en = 1'b1 lcn_hashed_target_grp_hnf_cpa_en_reg0.htg_hnf_cpa_en[0-7] = 8'hFF // 远程NUMA lcn_hashed_target_grp_cpag_perhnf_reg0.htg_cpag_hnf[0-7] = <CPAG0>

2.3 一致性域支持

在一致性域配置中,HTG包含Cache-id[9:0]编程以及地址范围。HTG匹配基于传入的探测地址匹配和传入的探测cache-id匹配。

关键配置寄存器:

  • por_ccg_ra_hns_ldid_to_exp_raid_reg:将一致性域的LDID映射到ExpandedRAID
  • por_ccla_cfg_ctl.ccg_baseid:配置BaseID字段
  • sys_cache_grp_secondary_reg#.region#_cacheid:编程Cache_id

3. 超级家庭节点(HN-S)高级功能

3.1 HN-S Completer Busy指示机制

CMN S3(AE)新增了对LBT地址的CBusy支持。HN-S有多种不同模式来确定如何为LBT事务指定响应消息中的CBusy值:

cbusy_lbt_mode_cntCBusy值传递给RN
0b00返回POCQ CBusy值
0b01返回CCG CBusy值(读或写)
0b10返回POCQ CBusy或CCG CBusy值中的较高者

HN-S使用cmn_hns_cbusy_limit_ctl寄存器指定POCQ有效阈值,但不区分读写类型。

3.2 HN-S到CCG的基于CBusy的节流

HN-S可以跟踪来自所有CCG的可配置事务窗口内的读写繁忙程度。它可以被编程为跟踪最后128或256个事务。当HN-S从CCG接收到尽可能多的响应时,它会测量每组CCG和请求类型(读和写)的当前繁忙程度,然后使用测量的繁忙程度适当地节流到CCG的流量。

节流模式配置:

  1. 静态节流模式

    • CBusy = 11(非常忙):HN-S将未完成事务节流到cbusy_ccg_static_ot_count_cbusy11字段中编程的值
    • CBusy = 10(中等忙):节流到cbusy_ccg_static_ot_count_cbusy10字段的值
    • CBusy = 01(低忙):节流到cbusy_ccg_static_ot_count_cbusy01字段的值
    • CBusy = 00(不忙):可以发出尽可能多的请求,达到POCQ条目数
  2. 动态节流模式

    • CBusy = 11:减少OT计数
    • CBusy = 10:不改变当前OT计数
    • CBusy = 01:增加OT计数
    • CBusy = 00:增加OT计数

关键注意:cbusy_ccg_static_ot_count_cbusyXX字段绝不能编程为0,否则可能导致进度停滞。

3.3 HN-S SLC和LCC容量分区

HN-S支持基于容量的SLC和LCC分区,定义LBT和HBT请求可以使用的缓存百分比:

  • slc_cmax_allowedlcc_cmax_allowedcmn_hns_lbt_cfg_ctl中的7位字段,为SLC和LCC分区提供0.78%(1/128)的粒度
  • 在HAM模式下,缓存容量调整为缓存的一半
  • CMN S3(AE)支持地址锁定(包括OCM)与SLC和LCC容量分区
  • 容量分区计数器在退出保持状态时不准确,可能导致下溢条件

4. CXL 3.0 HDM-H Type 3设备支持

4.1 基础配置

CMN S3(AE)支持CXL HDM-H(Type 3)设备功能,可通过以下寄存器配置启用:

por_ccla_cfg_ctl.la_cxl_mode_en = 1 por_ccla_cfg_ctl.la_device_mode_en = 1 por_ccla_cfg_ctl.ha_cxl_type = 0b11 // 设置为Type 3 (HDM-H)

CMN S3(AE)不支持多逻辑设备(MLD),但支持256B flit格式(标准和LOpt)。

4.2 HDM解码器配置

每个CCG都添加了CXL定义的HDM解码器结构,将主机物理地址(HPA)转换为设备物理地址(DPA)。关键寄存器包括:

  • por_ccla_cxl_hdm_decoder_capability
  • por_ccla_cxl_hdm_decoder_global_control
  • por_ccla_cxl_hdm_decoder_0-7_base_low/high
  • por_ccla_cxl_hdm_decoder_0-7_size_low/high
  • por_ccla_cxl_hdm_decoder_0-7_control

解码器数量基于HA_NUM_HDM_DECODERS参数配置,可设置为0、1、2、4、6或8(默认为8)。

4.3 CXL设备错误处理

CMN S3(AE)支持以下CXL设备RAS处理:

  1. CXL Viral

    • 持久内存的写入被丢弃
    • 易失性内存的写入被完成
    • 所有读取事务被完成
    • 在接收病毒通知前未完成的读写在CHI上完成
  2. CXL Poison

    • 传入CHI poison映射到CXL poison
    • 传入CXL poison映射到CHI poison用于写数据
    • 通过CCG错误报告机制检测和报告
  3. HDM解码错误

    • 写入:丢弃写事务,内部合成完成并在CXL上发送
    • 读取:根据Poison_On_Decode_Err设置返回全1或无poison的全0

4.4 CXL 3.0动态容量设备

CMN S3(AE)支持CXL设备用作动态容量设备(DCD)。配置步骤:

  1. 使用以下寄存器编程DCD区域以处理非重叠DPA地址范围:

    • por_ccla_cxl_dcd_region_base_address_low#{i}
    • por_ccla_cxl_dcd_region_base_address_high#{i}
    • por_ccla_cxl_dcd_region_max_address_low#{i}
    • por_ccla_cxl_dcd_region_max_address_high#{i}
  2. 使用DCD_Region_LUT_Base_#{i}字段设置每个DCD区域的查找表条目基地址

  3. 使用DCD_Region_LU_Start_bit_#{i}字段配置每个区域所需的DC块大小

  4. 基于配置的DC区域大小和DC块大小,使用DCD_Region_LU_Num_bits_#{i}字段配置用于查找的DPA位数

  5. 使用DCD_Region_Enable_#{i}字段启用DCD区域

5. 调试跟踪和性能监控

5.1 调试跟踪系统概述

CMN S3(AE)提供自托管的调试跟踪(DT)功能,包括:

  • 观察点启动和跟踪标签启动的事务跟踪
  • 全局同步周期计数器
  • CHI跟踪标签生成
  • CoreSight ATB跟踪流
  • 通过配置寄存器访问跟踪数据
  • 交叉触发支持
  • 安全调试支持
  • 基于事件的中断

5.2 DT系统架构

DT系统由分布在互连中的一组调试跟踪控制器(DTC)和调试跟踪监视器(DTM)组成:

  • DTC位于HN-D和HN-T节点内
  • DTM位于XP节点内
  • 建议每16个XP使用1个DTC域
  • 单个DTC域最多允许63个XP

主DTC(位于HN-D节点内)具有额外的信号:

  • NIDEN
  • SPNIDEN
  • PMUSNAPSHOTREQ
  • PMUSNAPSHOTACK

5.3 性能监控单元(PMU)

CMN S3(AE)的PMU提供:

  • 多种性能计数器
  • 事件监控能力
  • 低开销性能数据收集
  • 与调试跟踪系统集成

关键特性:

  • 支持同时监控多个性能指标
  • 可编程的事件过滤器
  • 中断生成能力
  • 低功耗设计,对系统性能影响最小

6. 实际应用中的配置建议

6.1 多芯片系统配置

在多芯片系统中,建议采用以下配置原则:

  1. 为每个远程芯片分配唯一的LDID
  2. 确保LCN SAM正确配置远程芯片地址范围
  3. 合理设置NUM_REMOTE_RNF参数
  4. 在CML配置中,所有远程芯片的LDID必须在本地RN-F LDID分配后分配

6.2 性能优化技巧

  1. CBusy阈值调优

    • 根据实际负载模式调整cbusy_threshold_cntr01/10/11
    • 监控cmn_hns_cbusy_ccg_threshold寄存器效果
    • 平衡节流强度与系统吞吐量
  2. 缓存分区优化

    • 根据应用特点调整SLC和LCC容量比例
    • 监控slc_cmax_allowedlcc_cmax_allowed的实际效果
    • 考虑MPAM分区与容量分区的交互影响
  3. DCD配置最佳实践

    • 确保DCD区域大小是256的倍数
    • 连续DCD区域间不留间隙
    • 按顺序启用区域(从区域0开始)
    • 合理设置HA_CXL_DCD_LUT_DEPTH参数

6.3 错误处理策略

  1. 实施全面的错误检测和报告机制
  2. 为关键操作配置适当的超时和重试策略
  3. 确保错误处理逻辑不会导致系统死锁
  4. 实现分级的错误恢复策略
  5. 监控关键错误计数器并设置适当的警报阈值
返回列表