[AI][昇腾950]TP(Transport Layer,传输层)学习笔记 一、TP 在协议栈中的定位UB 协议栈自顶向下四层Transaction(TA) → Transport(TP/CTP) → Network(NL) → DataLinkPhysical(DL_PHY) ↓ H112 SerDesTP 是第二层向下对接 NL向上承接 TA/IMP/LSA 构造的 TPWQE 任务。核心职责维护通信节点间各类contextTPC/TPGC/TPMM/TPWQE/DAM/EUM 等通过 mailbox 创建/修改/销毁 context建立 TP 连接检测网络丢包多种重传机制提供端到端可靠传输多种拥塞控制、流控算法检测异常并返回完成信息学习要点TA 把事务交给 TPTP 负责搬运可靠。TP 之下 NL 负责路由/查表DL_PHY 负责链路。TP 一侧还承接 IMPmailbox 配置和 LSALSARSlave 方向 Load/Store 通路放在 TP 层实现。二、TP vs CTP两种传输服务项TP可靠传输CTP简易传输端到端重传支持无仅 Link 层重传TP 连接有无消息速率较低较高时延较高较低适用框间、需可靠框内直连、低延时承载报文CFG3/4/7IPv4/IPv6/CNA24CFG7CNA24学习要点CTP 牺牲端到端可靠性换取高包率低延时仅靠 Link 层重传兜底——适合框内直连小规模组网。URMA 两种都能跑UNIC 基于 CTP 的 Unreliable Message 传输。三、RC / RM 两种保序模式模式全称协议 Model保序方式TAACKRMReliable MessagingModel-1消息保序Write/Send需回 TAACKRCReliable ConnectionModel-3连接保序无 TAACK 步骤TAACK 构造时机关键差异RC 模式TP 收到 write 请求即可写 payload无需 RC Credit 申请TP 发出后直接构造 TAACK 给 TACTP 模式由 TP 构造 TAACKTP 模式需等对端TPACK回来后才构造 TAACK学习要点RC 比 RM 快的关键——RC 不用等对端 TPACKTP 发出即可通知 TA 完成。这也解释了性能笔记里 RC Write 单向 vs RM 的 2 倍差距。CTP RM 模式源端保序由 TA fence 完成不在 TP 层做。四、多路径与保序5 种 Ordering 模式4.1 源端保序 vs 目的端保序源端保序TP 和 CTP 都可通过多端口多路径传输目的端保序TP一个连接只通过一个端口发包可走多网络路径接收侧乱序接收由 TP 保序CTP一个 Jetty 可选是否走多路径单端口单路径 →通道保序多路径 → 只保证包内序不保证包间序4.2 5 种 Ordering 模式与 Operation 矩阵UB 系统中 Ordering 处理点有 11 个其中No.5 / No.10 / No.11直接呈现给业务软件No.5Server Memory Global Observed业务直接感知No.10Server 侧 Completion异步 URMA 才有No.11Client 侧 Completion异步 URMA 才有5 种模式的 Ordering 矩阵速记Yes保证 Server 侧执行序Fence/SO 是 2nd op 的标记模式线路序传递多路径典型特征CTP Path-Order是路径保序非源保序单 Jetty 单路径同一目的地多路径需用多 JettyCTP Source-Order否只在 Client 源头用单 Jetty 可多路径用户 SQE.Order 不上线路TP RC GBN—不支持 TPG目的保序Go-Back-N 重传TP RC OOR—Out-of-Order 接收接收侧乱序由 TP 保序TP RM否源保序—消息保序需 TAACK通用规则从矩阵归纳Write → Write默认 No2nd op 加 SO 才 YesRead/Atomic → Write默认 No2nd op 加 Fence 才 YesWrite → Read/Atomic/Send默认 Yeswrite 后续读可见Read → ReadCTP Source-Order / TP RM 是 YesCTP Path-Order / TP RC 是 No若 2nd op 是 Read/Nop加 Fence不生效按不添加处理Nop 只在 Client 执行Server 收不到不参与 Server 侧 Ordering4.3 Observation可观测性A 向 B 写数据对 A ObservedA 拿到 Completion 后再发起对 B 的读能读到 / 写能覆盖对 B ObservedB 上请求源发起对 B 地址的读能读到 / 写能覆盖Global Observed对 CA 通告 CC 发起对地址的读能读到 / 写能覆盖学习要点Ordering 矩阵是 TP 的核心难点。记忆口诀“Write 后读可见Read 间默认乱序想让后续等前面Fence 或 SO 来加冕”CTP Path-Order 走路径保序——同目的地多路径必须用多 JettyCTP Source-Order 走源保序——SQE.Order 不上线路。五、CTP RC 多路径URMA 在无可靠传输层时支持一种多路径传输方式线路乱序传输但不需要回 TAACK对应 TA Jetty 保序模式是RC通过 Jetty Ctx 指示开启当前只支持上游下发write with atomicStore ADD上游保证 wqe 不超 MTUTA 不切片发 TPTA 和 TP 不具备多路径保序能力需接收端定制逻辑实现如 CCU 的 counterflag 机制学习要点利用 CTP 的高包率 多路径带宽由 CCU 接收侧用 counterflag 自己保序绕开 TP 的保序瓶颈。六、TP/TPG 负载均衡6.1 TP/TPG 级负载均衡TPWQE 进入 TP 携带vTP根据 vTP 编号映射至不同的TPG/TP若映射至TPGTPG 根据 group 内不同 TP 负载情况选择负载较轻的 TP 发送不同优先级的 TPG 编号一定不同 → TA 层为不同优先级 JFS 分配不同 vTP分别映射到不同 TPG6.2 CTP 负载均衡CTP 流量用DCNA查路由表在多个可达端口间负载均衡发送6.3 VL Group 级负载均衡三层水线为解决 TX/RX 的 ETS / VL QoS 抢占问题三层水线涉及模块NL_OQ维护对端 RX buffer 信用U_DIE OSS维护本端主机侧 QoSN_DIE TP_TX维护本端主机侧 QoS设计按4 个 VL group实现对外承诺3 个默认每 port 支持 4 个 VL group实际能跑满 2 个。VL Group默认覆盖Group0同一 URMA 通道的 2 个 VLGroup1同一 URMA 通道的 2 个 VLGroup23 个 UBmem VLN DIE/ 2 个 VLU DIEOthersshare buffer其余 VL学习要点负载均衡有三级——TP/TPG 级vTP 映射、CTP 端口级DCNA 查表、VL Group 级三层水线。VL Group 是为解决 ETS/VL QoS 抢占而设计的“设计 4 承诺 3 跑满 2”。七、拥塞控制 SCCSCC Software Congestion Control。算法在 TPC 中通过cng_alg_sel字段选择cng_alg_sel算法说明3’b000不支持拥塞控制—3’b001DCQCN不支持拥塞程度—3’b010DCQCN支持拥塞程度—3’b011LDCP窗口拥塞控制3’b100CAQM窗口拥塞控制3’b101ACC1.1窗口拥塞控制关键约束对接双方 TP 初始化时cng_alg_sel必须保持一致CAQM 与 TPACK 多路径同时开启会导致 CAQM 不准用tpack_spray_en开关控制 TPACK 是否走多路径CTP 拥塞控制只使用DCNA 的低 16bit用{DCNA[15:0], VL}索引拥塞控制上下文窗口拥塞计算方式cng_cwnd_ctrl0整报文长度UN_LINK 至 ICRC默认1报文 pld cng_cwnd_hdr_len2tph [ueid] tah [tah_ext] payload pad ICRC cng_cwnd_hdr_len奇数向上 1B 取整动态超时dyn_at_endyn_at_en1基于TPC.RTT / TPC.base_time计算超时dyn_at_en0使用tpc.at作为超时时间公式Timeout Base_time * 2^(N * Times)N 为at_times建议最大重传次数时 Timeout 5s学习要点5 种拥塞算法分两类——DCQCN基于 ECN 反馈和窗口类LDCP/CAQM/ACC1.1。对接双方算法必须一致。CTP 拥塞控制索引只用 DCNA 低 16bit。八、关键数据结构TP 侧 context数据结构全称用途TPCTP ContextTP 连接上下文核心表含 PSN/MSN/重传/拥塞窗口/port 选择等TPGCTP Group ContextTP 组上下文vTP→TPG 映射组内 TP 负载均衡TPMMTP Memory ManagementTP 内存管理TPWQETP WQETP 任务缓存DAMDest Address Memory目的地址表dip/dmac/sip/smacEUMEID UPI MemoryEID/UPI 映射seid_idx访问获取 UPI/SEIDTPC 关键字段速记字段作用tp_modeTP 保序模式1’b0 TP 保序tpg/tpg_vld所属 TP Groupportn/bkup_portn主/备 port 全局编码soft_port_sel/flg/hw_port_flg主备 port 切换控制cng_alg_sel拥塞控制算法选择cng_cwnd_ctrl/cng_cwnd_hdr_len窗口拥塞计算方式spray_en/switch_mp_en端侧/交换机自主多路径使能tpack_spray_enTPACK 多路径开关避免 CAQM 不准retry_cnt/retry_cnt_ini/port_change_retry_cnt重传与 port 切换阈值dyn_at_en/at_times/base_time/RTT动态超时计算route_addr_idx/route_type访问 DAM 表项IPv4/IPv6/CNAvlan_enVLAN 使能需与 dest_addr.vlan_en 一致oor_en乱序接收使能jettyn/sjettySend 报文目的/源 Jetty 号MTU001KB, 104KB2KB 不支持tpack_doingTP 存在 TPACK 在排队wait_cqe_timeout确保 TP 在 Timer 模块只占一个 ACK 超时结点学习要点TPC 是 TP 的灵魂表——保序、重传、拥塞、port 切换、路由全在这里配置。九、重要约束踩坑预警9.1 地址与配置约束TP pf_reg 访问范围仅允许指定访问范围否则挂死UDIE 支持 22 个 PFpf0~pf21每 PF 2K 地址共 44K总分配 48Kroute_type 一致性RC/RM 时TPC.route_type必须与dest_addr.route_type一致否则硬件挂死vlan_en 一致性RC/RM 时TPC.vlan_en必须与dest_addr.vlan_en一致9.2 流量与复位约束pause 帧反压TP 注销/PF 复位/flush_cqe/FE 复位会对所有 VL 排流若某些 VL 被 pause 帧反压则无法排空导致复位失败 → 软件需开启风暴抑制功能TP 流量和 CTP Response 不能共用 VL否则死锁风险jetty ctx.sl和wqe.tpid不能填错CQE-INLINE 约束URMA 的 CQE-INLINE 流量在 u-die 场景下不能派生出 ubmem 流量9.3 功能使用约束CTP write with immediate消息长度最大仅支持1 MTU size4KBRC TP 发生 RC 资源 RNR 让 TA 重传RM Jetty RC TP可打开此功能RC Jetty RC TP若存在 read 不超越 atomic 的需求需关闭此功能TA Jetty Error continue 模式只能使用TPG 模式或 CTP 模式不能使用单 TP 模式TP 场景带宽达标请求及 TAACK 需保证独立 TP 传输否则请求与 TAACK 在相同 TP 队列 burst 排布导致局部时间集中反馈 TAACK带宽下降9.4 拥塞控制约束对接双方 TPcng_alg_sel必须一致ack_freq_mode1减少 tph.a 数量仅在cng_alg_sel0时可为 1CTP 拥塞控制只用 DCNA 低 16bit学习要点这些约束是踩坑高发区。最容易出问题的是route_type/vlan_en 不一致挂死、pause 帧导致复位失败、TP/CTP Response 共用 VL 死锁。学习要点Read 的 TP 延时~276ns远高于 Write~68ns因为 Read 需要等对端响应负载从静态升到 80% 时延时增加约 10%Read 276→301Write 68→102。十、一图速记软件(TA/IMP/LSA) ──TPWQE──▶ TP │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ context维护 拥塞控制 SCC 多路径/保序 ┌─TPC(核心) ┌─DCQCN ┌─源端保序(多端口) ├─TPG/TPGC ├─LDCP ├─目的保序(TP单端口) ├─TPMM ├─CAQM ├─CTP RC多路径(V160新增) ├─TPWQE └─ACC1.1 └─VL Group三层水线 ├─DAM └─EUM 故障切换 ├─多平面自动切换(V160新增) 可靠性 ├─主备port(soft/hw_port_flg) ├─重传(retry_cnt)└─Pagefault(仅Nimbus V7) ├─TAACK/TPACK └─动态超时(2^N倍) 两种服务: TP(可靠,端到端重传) vs CTP(简易,仅Link重传,高包率低延时) 两种保序模式: RM(Model-1,消息保序,需TAACK) vs RC(Model-3,连接保序,无TAACK步骤)学习自测问题TP vs CTP 在端到端重传、消息速率、时延、适用场景上的区别RC 和 RM 模式的核心差异为什么 RC 的 Write 包率是 RM 的 2 倍TP 模式、CTP 模式、RC 模式下 TAACK 的构造时机分别是什么CTP Path-Order 和 CTP Source-Order 的区别SQE.Order 是否在线路传递CTP RC 多路径V160 新增的保序由谁实现为什么 TA/TP 自己做不了vTP → TPG → TP 的负载均衡映射关系是什么TA 层如何配合VL Group 三层水线涉及哪三个模块设计几个、承诺几个、能跑满几个SCC 支持哪 5 种拥塞控制算法对接双方需要保持什么一致Port 主备切换的soft_port_sel/flg和hw_port_flg配合机制V160 相对 V100 在 TP 上的 4 大升级是什么Nimbus V7 独有哪两个特性TPC、TPGC、TPMM、DAM、EUM 各自的作用V160 U die 把 TPC cache 翻到多少TPC.route_type和dest_addr.route_type不一致会导致什么问题TP 流量和 CTP Response 为什么不能共用 VLRC Jetty RC TP 时RC 资源 RNR 让 TA 重传功能何时必须关闭TA Jetty Error continue 模式只能用哪两种 TP 模式

相关新闻

最新新闻

机械臂速成小指南(二):机械臂的应用

机械臂速成小指南(二):机械臂的应用

👨‍🏫🥰🥳需要机械臂相关资源的同学可以在评论区中留言哦🤖😽🦄 指南目录📖: 🎉🎉机械臂速成小指南(零点五)&#xff1a…

2026/8/25 7:49:18
机械臂速成小指南(三):机械臂的机械结构

机械臂速成小指南(三):机械臂的机械结构

👨‍🏫🥰🥳需要机械臂相关资源的同学可以在评论区中留言哦🤖😽🦄 指南目录📖: 🎉🎉机械臂速成小指南(零点五)&#xff1a…

2026/8/25 7:49:18
西门子Step7编程语言与程序结构实战指南:从入门到精通

西门子Step7编程语言与程序结构实战指南:从入门到精通

1. 从“黑盒子”到“白盒子”:为什么我们需要理解Step7的编程语言与结构?如果你刚接触西门子S7-300/400系列PLC,或者是从其他品牌的PLC(比如三菱、欧姆龙)转过来,面对Step7软件里那些“梯形图”、“语句表”…

2026/8/25 7:49:18
STM32串口通信环形缓冲区设计:解决数据丢失与覆盖难题

STM32串口通信环形缓冲区设计:解决数据丢失与覆盖难题

1. 项目缘起:为什么串口通信必须引入环形缓冲区?在嵌入式开发,尤其是基于STM32这类MCU的项目里,USART串口通信几乎是工程师的“必修课”。无论是打印调试信息、与上位机通信,还是连接GPS、蓝牙模块等外设,串…

2026/8/25 7:49:18
技术名词大小写规范全解析:从JSON到GitHub的正确写法

技术名词大小写规范全解析:从JSON到GitHub的正确写法

1. 项目概述:为什么技术名词大小写是个“大”问题?干了这么多年技术,从写代码、写文档到做分享、做评审,我踩过最隐蔽、最让人哭笑不得的坑,往往不是高深的算法bug,而是那些看起来“无伤大雅”的技术名词大…

2026/8/25 7:49:18
MATLAB数据拟合实战:从cftool交互到编程实现与光谱分析

MATLAB数据拟合实战:从cftool交互到编程实现与光谱分析

1. 从一次失败的预测说起:为什么我们需要数据拟合?几年前,我接手了一个电机温升预测的项目。当时手头有一堆在不同负载、不同环境温度下测得的电机外壳温度数据,散点图看起来乱糟糟的。我的第一反应是,找个看起来“顺眼…

2026/8/25 7:44:18