CSR配置字典之NPUPort类
更新时间: 2025/07/22
在Gitcode上查看源码

📋 文档信息

项目内容
文档标题NPUPort类配置字典
版本v1.0
创建日期2026-06-22
最后更新2026-06-22
维护状态✅ 活跃维护

📋 变更历史记录

文档变更记录

版本发布日期变更类型变更内容影响范围维护人员
v1.02026-06-22初始版本创建NPUPort类配置字典全新文档系统管理员

🎯 类概览

NPUPort 类

属性
类名称NPUPort
功能描述NPU端口配置和状态管理
所属SIG组system
所属组件处理器端口管理
责任人系统架构组
最后更新2026-06-22
状态🟢 正常运行

📊 属性定义详表

必选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
IdU82550~255-处理器端口逻辑ID
从0开始
指定NPU端口的逻辑编码0CSR配置软件
PortIdString--端口硬件定义标识符标识NPU端口硬件定义"Port0"CSR配置软件
IODieIdU82550~255-此端口归属的IO Die ID标识端口所属的IO Die0CSR配置软件
PfIdU82550~255-PF ID
只读属性
标识NPU端口的PF编号0CSR配置软件
NPUIdU82550~255-NPU ID
只读属性
标识端口所属的NPU编号0CSR配置软件
UBPortIdU3200~4294967295-UB端口ID
默认值0,为Id的别名
标识UB总线端口编号0CSR配置软件

可选属性

NPUPort类的所有CSR属性均为端口配置必选属性,无额外可选属性。端口的路径和父对象关系由系统自动管理。


🔗 动态关联机制

语法规范

使用 #/xxx<=/xxx 格式实现属性间的动态关联:

yaml
# 语法格式
属性名: "#/目标类.属性名"     # 直接关联
属性名: "<=/目标类.属性名"    # 条件关联

# NPUPort关联示例(当前无动态关联属性)
# NPUPort的CSR属性均为静态配置值
# 父对象关联通过path模板 ":parent/Ports/:ID" 实现

关联说明

  • 父对象关联: NPUPort通过path模板 :parent/Ports/:ID 与父对象NPU建立层级关系
  • Id别名关联: UBPortIdId 属性在bmc.kepler.UnifiedBus.Port接口中的别名,两者共享同一逻辑标识
  • 静态配置: NPUPort当前所有CSR属性均为静态配置值,无需动态关联Scanner或Accessor

📂 分类标准

硬件属性

  • 定义:直接从硬件获取或控制硬件的参数
  • 特点:实时反映硬件状态,支持硬件控制操作
  • 示例:当前NPUPort类无纯硬件关联属性

软件属性

  • 定义:用于软件层面的NPU端口管理和配置
  • 特点:包含标识、配置、归属管理等功能
  • 示例Id, PortId, IODieId, PfId, NPUId, UBPortId

📝 配置示例

标准单端口配置

json
{
  "NPUPort": {
    "Id": 0,
    "PortId": "Port0",
    "IODieId": 0,
    "PfId": 0,
    "NPUId": 0,
    "UBPortId": 0
  }
}

NPU下多端口配置(端口0)

json
{
  "NPUPort0": {
    "Id": 0,
    "PortId": "Port0",
    "IODieId": 0,
    "PfId": 0,
    "NPUId": 0,
    "UBPortId": 0
  }
}

NPU下多端口配置(端口1)

json
{
  "NPUPort1": {
    "Id": 1,
    "PortId": "Port1",
    "IODieId": 1,
    "PfId": 1,
    "NPUId": 0,
    "UBPortId": 1
  }
}

多NPU场景配置

json
{
  "NPUPort_NPU2": {
    "Id": 0,
    "PortId": "Port0",
    "IODieId": 0,
    "PfId": 0,
    "NPUId": 1,
    "UBPortId": 0
  }
}

🔧 使用指南

配置步骤

  1. 设置基本标识:配置Id、PortId,建立端口逻辑和硬件标识
  2. 配置归属信息:设置IODieId标识端口所属IO Die,设置NPUId标识端口所属NPU
  3. 设置PF标识:配置PfId标识端口的PF编号(只读属性,由系统自动维护)
  4. 配置UB端口:设置UBPortId,关联UnifiedBus端口标识

注意事项

  • 父对象依赖:NPUPort必须挂载在NPU父对象下,路径模板为 :parent/Ports/:ID
  • ID唯一性:Id在同一NPU下的各端口间必须唯一,从0开始编号
  • 只读属性:PfId和NPUId为只读属性,不应在CSR配置中手动修改
  • 别名关系:UBPortId是Id在UnifiedBus.Port接口中的别名,配置时注意接口对应关系
  • 默认值注意:Id、IODieId、PfId、NPUId默认值为255,需在配置中明确指定有效值

性能建议

  • 端口标识:合理规划Id编号,确保同一NPU下端口编号连续且唯一
  • IO Die归属:准确配置IODieId,确保端口与IO Die的归属关系正确
  • UB映射:确保UBPortId与Id的映射关系正确,避免UB总线端口冲突

ID体系说明

  • Id (U8): 端口逻辑ID,同一NPU内从0开始唯一编号
  • PortId (String): 端口硬件定义标识符,用于硬件层面标识端口
  • IODieId (U8): 端口归属的IO Die ID,标识端口所属IO Die
  • PfId (U8): PF ID,只读属性,标识端口的PF编号
  • NPUId (U8): NPU ID,只读属性,标识端口所属的NPU编号
  • UBPortId (U32): UB端口ID,为Id的别名,标识UnifiedBus端口编号

父对象关系说明

  • 路径模板: :parent/Ports/:ID — NPUPort实例自动挂载在父对象NPU的Ports子路径下
  • 父对象: NPU — NPUPort必须关联一个NPU父对象
  • 权限要求: ConfigureSelf — NPUPort配置需要ConfigureSelf权限

常见问题

  • Q: NPUPort和CPU的Port有什么区别?
    • A: NPUPort专门用于NPU(神经网络处理器)端口管理,路径挂载在NPU父对象下;CPU端口使用不同的类定义
  • Q: UBPortId为什么是U32而Id是U8?
    • A: UBPortId属于UnifiedBus.Port接口,使用U32类型以支持更大的端口编号范围;两者逻辑上为同一标识的别名
  • Q: PfId和NPUId为什么是只读属性?
    • A: PF ID和NPU ID由系统根据硬件拓扑自动分配,不应通过CSR配置手动修改
  • Q: 多NPU场景下端口如何配置?
    • A: 通过NPUId区分不同NPU下的端口,Id在各NPU内独立编号,UBPortId需全局唯一