news 2026/8/25 7:03:57

[AI][昇腾950]TP(Transport Layer,传输层)学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[AI][昇腾950]TP(Transport Layer,传输层)学习笔记

一、TP 在协议栈中的定位

UB 协议栈自顶向下四层:

Transaction(TA) → Transport(TP/CTP) → Network(NL) → DataLink+Physical(DL_PHY) ↓ H112 SerDes

TP 是第二层,向下对接 NL,向上承接 TA/IMP/LSA 构造的 TPWQE 任务。核心职责:

  • 维护通信节点间各类context(TPC/TPGC/TPMM/TPWQE/DAM/EUM 等)
  • 通过 mailbox 创建/修改/销毁 context
  • 建立 TP 连接,检测网络丢包,多种重传机制提供端到端可靠传输
  • 多种拥塞控制、流控算法
  • 检测异常并返回完成信息

学习要点:TA 把"事务"交给 TP,TP 负责"搬运+可靠"。TP 之下 NL 负责路由/查表,DL_PHY 负责链路。
TP 一侧还承接 IMP(mailbox 配置)和 LSA(LSAR,Slave 方向 Load/Store 通路,放在 TP 层实现)。


二、TP vs CTP(两种传输服务)

TP(可靠传输)CTP(简易传输)
端到端重传支持(仅 Link 层重传)
TP 连接
消息速率较低较高
时延较高较低
适用框间、需可靠框内直连、低延时
承载报文CFG3/4/7(IPv4/IPv6/CNA24)CFG7(CNA24)

学习要点:CTP 牺牲端到端可靠性换取"高包率+低延时",仅靠 Link 层重传兜底——适合框内直连小规模组网。URMA 两种都能跑,UNIC 基于 CTP 的 Unreliable Message 传输。


三、RC / RM 两种保序模式

模式全称协议 Model保序方式TAACK
RMReliable MessagingModel-1消息保序Write/Send需回 TAACK
RCReliable ConnectionModel-3连接保序无 TAACK 步骤

TAACK 构造时机(关键差异):

  • RC 模式:TP 收到 write 请求即可写 payload,无需 RC Credit 申请;TP 发出后直接构造 TAACK 给 TA
  • CTP 模式:由 TP 构造 TAACK
  • TP 模式:需等对端TPACK回来后才构造 TAACK

学习要点:RC 比 RM 快的关键——RC 不用等对端 TPACK,TP 发出即可通知 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.5:Server Memory Global Observed(业务直接感知)
  • No.10:Server 侧 Completion(异步 URMA 才有)
  • No.11:Client 侧 Completion(异步 URMA 才有)

5 种模式的 Ordering 矩阵速记(Yes=保证 Server 侧执行序;Fence/SO 是 2nd op 的标记):

模式线路序传递多路径典型特征
CTP Path-Order是(路径保序,非源保序)单 Jetty 单路径同一目的地多路径需用多 Jetty
CTP Source-Order否(只在 Client 源头用)单 Jetty 可多路径用户 SQE.Order 不上线路
TP RC GBN不支持 TPG;目的保序Go-Back-N 重传
TP RC OOROut-of-Order 接收接收侧乱序,由 TP 保序
TP RM否(源保序)消息保序,需 TAACK

通用规则(从矩阵归纳):

  • Write → Write:默认 No;2nd op 加 SO 才 Yes
  • Read/Atomic → Write:默认 No;2nd op 加 Fence 才 Yes
  • Write → Read/Atomic/Send:默认 Yes(write 后续读可见)
  • Read → Read:CTP Source-Order / TP RM 是 Yes;CTP Path-Order / TP RC 是 No
  • 若 2nd op 是 Read/Nop,加 Fence不生效(按不添加处理)
  • Nop 只在 Client 执行,Server 收不到,不参与 Server 侧 Ordering

4.3 Observation(可观测性)

A 向 B 写数据:

  1. 对 A Observed:A 拿到 Completion 后,再发起对 B 的读能读到 / 写能覆盖
  2. 对 B Observed:B 上请求源发起对 B 地址的读能读到 / 写能覆盖
  3. Global Observed(对 C):A 通告 C,C 发起对地址的读能读到 / 写能覆盖

学习要点:Ordering 矩阵是 TP 的核心难点。记忆口诀:

  • “Write 后读可见,Read 间默认乱序;想让后续等前面,Fence 或 SO 来加冕”
  • CTP Path-Order 走"路径保序"——同目的地多路径必须用多 Jetty;CTP Source-Order 走"源保序"——SQE.Order 不上线路。

五、CTP RC 多路径

  • URMA 在无可靠传输层时支持一种多路径传输方式:线路乱序传输,但不需要回 TAACK
  • 对应 TA Jetty 保序模式是RC,通过 Jetty Ctx 指示开启
  • 当前只支持上游下发write with atomicStore ADD(上游保证 wqe 不超 MTU,TA 不切片发 TP)
  • TA 和 TP 不具备多路径保序能力,需接收端定制逻辑实现(如 CCU 的 counter+flag 机制)

学习要点:利用 CTP 的高包率 + 多路径带宽,由 CCU 接收侧用 counter+flag 自己保序,绕开 TP 的保序瓶颈。


六、TP/TPG 负载均衡

6.1 TP/TPG 级负载均衡

  • TPWQE 进入 TP 携带vTP,根据 vTP 编号映射至不同的TPG/TP
  • 若映射至TPG,TPG 根据 group 内不同 TP 负载情况,选择负载较轻的 TP 发送
  • 不同优先级的 TPG 编号一定不同 → TA 层为不同优先级 JFS 分配不同 vTP,分别映射到不同 TPG

6.2 CTP 负载均衡

  • CTP 流量用DCNA查路由表,在多个可达端口间负载均衡发送

6.3 VL Group 级负载均衡(三层水线)

为解决 TX/RX 的 ETS / VL QoS 抢占问题,三层水线涉及模块:

  1. NL_OQ(维护对端 RX buffer 信用)
  2. U_DIE OSS(维护本端主机侧 QoS)
  3. N_DIE TP_TX(维护本端主机侧 QoS)

设计按4 个 VL group实现,对外承诺3 个;默认每 port 支持 4 个 VL group,实际能跑满 2 个。

VL Group默认覆盖
Group0同一 URMA 通道的 2 个 VL
Group1同一 URMA 通道的 2 个 VL
Group23 个 UBmem VL(N DIE)/ 2 个 VL(U DIE)
Others(share buffer)其余 VL

学习要点:负载均衡有三级——TP/TPG 级(vTP 映射)、CTP 端口级(DCNA 查表)、VL Group 级(三层水线)。VL Group 是为解决 ETS/VL QoS 抢占而设计的,“设计 4 承诺 3 跑满 2”。


七、拥塞控制 SCC

SCC= 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_ctrl):

  • 0:整报文长度(UN_LINK 至 ICRC),默认
  • 1:报文 pld +cng_cwnd_hdr_len
  • 2:tph + [ueid] + tah + [tah_ext] + payload + pad + ICRC +cng_cwnd_hdr_len(奇数向上 1B 取整)

动态超时dyn_at_en):

  • dyn_at_en=1:基于TPC.RTT / TPC.base_time计算超时
  • dyn_at_en=0:使用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/smac)
EUMEID UPI MemoryEID/UPI 映射(seid_idx访问获取 UPI/SEID)

TPC 关键字段速记

字段作用
tp_modeTP 保序模式(1’b0 = TP 保序)
tpg/tpg_vld所属 TP Group
portn/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/CNA)
vlan_enVLAN 使能(需与 dest_addr.vlan_en 一致)
oor_en乱序接收使能
jettyn/sjettySend 报文目的/源 Jetty 号
MTU00=1KB, 10=4KB(2KB 不支持)
tpack_doingTP 存在 TPACK 在排队
wait_cqe_timeout确保 TP 在 Timer 模块只占一个 ACK 超时结点

学习要点:TPC 是 TP 的"灵魂表"——保序、重传、拥塞、port 切换、路由全在这里配置。


九、重要约束(踩坑预警)

9.1 地址与配置约束

  • TP pf_reg 访问范围:仅允许指定访问范围,否则挂死
    • UDIE 支持 22 个 PF(pf0~pf21),每 PF 2K 地址,共 44K;总分配 48K
  • route_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.slwqe.tpid不能填错
  • CQE-INLINE 约束:URMA 的 CQE-INLINE 流量在 u-die 场景下不能派生出 ubmem 流量

9.3 功能使用约束

  • CTP write with immediate:消息长度最大仅支持1 MTU size(4KB)
  • RC 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_mode=1(减少 tph.a 数量)仅在cng_alg_sel=0时可为 1
  • CTP 拥塞控制只用 DCNA 低 16bit

学习要点:这些约束是踩坑高发区。最容易出问题的是:route_type/vlan_en 不一致挂死、pause 帧导致复位失败、TP/CTP Response 共用 VL 死锁。

学习要点:Read 的 TP 延时(~276ns)远高于 Write(~68ns),因为 Read 需要等对端响应;负载从静态升到 80% 时延时增加约 10%(Read 276→301,Write 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步骤)

学习自测问题

  1. TP vs CTP 在端到端重传、消息速率、时延、适用场景上的区别?
  2. RC 和 RM 模式的核心差异?为什么 RC 的 Write 包率是 RM 的 2 倍?
  3. TP 模式、CTP 模式、RC 模式下 TAACK 的构造时机分别是什么?
  4. CTP Path-Order 和 CTP Source-Order 的区别?SQE.Order 是否在线路传递?
  5. CTP RC 多路径(V160 新增)的保序由谁实现?为什么 TA/TP 自己做不了?
  6. vTP → TPG → TP 的负载均衡映射关系是什么?TA 层如何配合?
  7. VL Group 三层水线涉及哪三个模块?设计几个、承诺几个、能跑满几个?
  8. SCC 支持哪 5 种拥塞控制算法?对接双方需要保持什么一致?
  9. Port 主备切换的soft_port_sel/flghw_port_flg配合机制?
  10. V160 相对 V100 在 TP 上的 4 大升级是什么?Nimbus V7 独有哪两个特性?
  11. TPC、TPGC、TPMM、DAM、EUM 各自的作用?V160 U die 把 TPC cache 翻到多少?
  12. TPC.route_typedest_addr.route_type不一致会导致什么问题?
  13. TP 流量和 CTP Response 为什么不能共用 VL?
  14. RC Jetty + RC TP 时,"RC 资源 RNR 让 TA 重传"功能何时必须关闭?
  15. TA Jetty Error continue 模式只能用哪两种 TP 模式?
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 7:03:16

Loop Engineering:六大核心组件构建高效软件交付反馈循环

1. 这篇文章真正要解决的问题如果你是一名后端或平台工程师&#xff0c;最近可能频繁听到“Loop Engineering”这个词。它听起来像是一个新框架&#xff0c;或者某种神秘的开发方法论。但当你试图深入了解时&#xff0c;却发现资料零散&#xff0c;概念模糊&#xff0c;似乎每个…

作者头像 李华
网站建设 2026/8/25 7:01:58

滴滴春招算法题解析:航班取消影响评估与实现

1. 题目背景与需求分析2026年滴滴春招的第一道编程题"取消航班"看似简单&#xff0c;但蕴含着丰富的业务场景和算法考察点。这道题目模拟了滴滴出行平台在实际运营中可能遇到的航班调度问题&#xff0c;要求考生设计算法处理航班取消后的影响评估和资源重新分配。在实…

作者头像 李华
网站建设 2026/8/25 7:01:46

视光中心预算10万以内,角膜地形图仪怎么选?

系列一 价格革命视光中心预算10万以内&#xff0c;角膜地形图仪怎么选&#xff1f;连锁视光中心、民营眼科诊所&#xff0c;年度设备预算往往卡在10万元以内。角膜地形图仪是干眼门诊、OK镜筛查、圆锥角膜随访的基础设备&#xff0c;但10万能买什么&#xff1f;买 Placido 盘够…

作者头像 李华
网站建设 2026/8/25 6:57:08

AI应用开发中Prompt、Rule与Skill的核心区别与协同设计指南

1. 开篇明义&#xff1a;一场持续一年的概念“乱炖”如果你在过去一年里关注过AI应用开发、智能体构建或者提示词优化&#xff0c;那么“Prompt”、“Rule”和“Skill”这三个词你一定不陌生。它们频繁出现在技术文档、社区讨论和产品宣传中&#xff0c;但很多时候&#xff0c;…

作者头像 李华
网站建设 2026/8/25 6:57:03

文科生也能搞定:基于Workbuddy与Qwen-Coder的公众号自动化发布实战

1. 项目概述&#xff1a;一个文科生的自动化内容发布工作流作为一个非技术背景出身的博主&#xff0c;我长期被内容创作和发布的繁琐流程所困扰。每天要花大量时间在公众号后台手动排版、检查、发布&#xff0c;还要处理各种授权和素材管理&#xff0c;效率极低。直到我下定决心…

作者头像 李华