1. Arm Neoverse CMN S3(AE) 架构概览在现代多核处理器系统中一致性网格网络Coherent Mesh Network是实现高效数据共享与通信的核心基础设施。Arm Neoverse CMN S3(AE) 作为第三代一致性互连解决方案专为高性能计算场景设计支持多达128个计算节点的复杂拓扑结构。CMN S3(AE) 采用分布式缓存一致性协议DISTRIBUTED CACHE COHERENCE PROTOCOL通过优化的路由算法和低延迟通信机制实现了显著的性能提升。其关键特性包括支持CHICoherent Hub Interface协议的最新版本可扩展的网状拓扑结构硬件级缓存一致性管理多芯片系统支持高级服务质量QoS控制重要提示CMN S3(AE) 的设计特别注重能效比优化在相同性能水平下可比前代产品降低约15%的功耗这对数据中心和边缘计算应用尤为重要。2. 系统地址映射(SAM)机制详解2.1 SAM基础架构系统地址映射System Address MapSAM是CMN S3(AE)中负责地址解析和路由的核心组件。它由多个功能模块组成RN SAM请求节点地址映射HN SAM家庭节点地址映射LCN SAM本地一致性节点地址映射每个SAM模块都包含两种主要结构非哈希区域Non-Hashed Regions哈希目标组Hashed Target GroupsHTG2.2 LCN SAM配置实例LCN SAM在HN-S中实例化用于确定LBTLocal 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 3b000 lcn_hashed_tgt_grp_cfg1_region0.htg_region0_valid 1b1 // 区域结束地址配置 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 1b1 lcn_hashed_target_grp_hnf_cpa_en_reg0.htg_hnf_cpa_en[0-7] 8hFF // 远程NUMA lcn_hashed_target_grp_cpag_perhnf_reg0.htg_cpag_hnf[0-7] CPAG02.3 一致性域支持在一致性域配置中HTG包含Cache-id[9:0]编程以及地址范围。HTG匹配基于传入的探测地址匹配和传入的探测cache-id匹配。关键配置寄存器por_ccg_ra_hns_ldid_to_exp_raid_reg将一致性域的LDID映射到ExpandedRAIDpor_ccla_cfg_ctl.ccg_baseid配置BaseID字段sys_cache_grp_secondary_reg#.region#_cacheid编程Cache_id3. 超级家庭节点(HN-S)高级功能3.1 HN-S Completer Busy指示机制CMN S3(AE)新增了对LBT地址的CBusy支持。HN-S有多种不同模式来确定如何为LBT事务指定响应消息中的CBusy值cbusy_lbt_mode_cntCBusy值传递给RN0b00返回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的流量。节流模式配置静态节流模式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条目数动态节流模式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_allowed和lcc_cmax_allowed是cmn_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-HType 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_capabilitypor_ccla_cxl_hdm_decoder_global_controlpor_ccla_cxl_hdm_decoder_0-7_base_low/highpor_ccla_cxl_hdm_decoder_0-7_size_low/highpor_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处理CXL Viral持久内存的写入被丢弃易失性内存的写入被完成所有读取事务被完成在接收病毒通知前未完成的读写在CHI上完成CXL Poison传入CHI poison映射到CXL poison传入CXL poison映射到CHI poison用于写数据通过CCG错误报告机制检测和报告HDM解码错误写入丢弃写事务内部合成完成并在CXL上发送读取根据Poison_On_Decode_Err设置返回全1或无poison的全04.4 CXL 3.0动态容量设备CMN S3(AE)支持CXL设备用作动态容量设备DCD。配置步骤使用以下寄存器编程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}使用DCD_Region_LUT_Base_#{i}字段设置每个DCD区域的查找表条目基地址使用DCD_Region_LU_Start_bit_#{i}字段配置每个区域所需的DC块大小基于配置的DC区域大小和DC块大小使用DCD_Region_LU_Num_bits_#{i}字段配置用于查找的DPA位数使用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节点内具有额外的信号NIDENSPNIDENPMUSNAPSHOTREQPMUSNAPSHOTACK5.3 性能监控单元(PMU)CMN S3(AE)的PMU提供多种性能计数器事件监控能力低开销性能数据收集与调试跟踪系统集成关键特性支持同时监控多个性能指标可编程的事件过滤器中断生成能力低功耗设计对系统性能影响最小6. 实际应用中的配置建议6.1 多芯片系统配置在多芯片系统中建议采用以下配置原则为每个远程芯片分配唯一的LDID确保LCN SAM正确配置远程芯片地址范围合理设置NUM_REMOTE_RNF参数在CML配置中所有远程芯片的LDID必须在本地RN-F LDID分配后分配6.2 性能优化技巧CBusy阈值调优根据实际负载模式调整cbusy_threshold_cntr01/10/11监控cmn_hns_cbusy_ccg_threshold寄存器效果平衡节流强度与系统吞吐量缓存分区优化根据应用特点调整SLC和LCC容量比例监控slc_cmax_allowed和lcc_cmax_allowed的实际效果考虑MPAM分区与容量分区的交互影响DCD配置最佳实践确保DCD区域大小是256的倍数连续DCD区域间不留间隙按顺序启用区域从区域0开始合理设置HA_CXL_DCD_LUT_DEPTH参数6.3 错误处理策略实施全面的错误检测和报告机制为关键操作配置适当的超时和重试策略确保错误处理逻辑不会导致系统死锁实现分级的错误恢复策略监控关键错误计数器并设置适当的警报阈值