[AI][昇腾950]TA 学习
2026/8/24 1:35:21 网站建设 项目流程

TA(Transaction Layer,事务层)学习笔记

一、TA 在协议栈中的定位

UB 协议栈自顶向下四层:

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

TA 是最上层,面向软件,负责:

  • JFS 队列调度、上下文维护
  • WQE 拆解发送、RCE 回复 Rd Response / TAACK
  • CQE / EQE 上报
  • 超时检测、RNR 重传、Jetty 注销、Function 级复位

学习要点:TA 之下还有 TP(可靠传输)/ CTP(简易传输,无端到端重传)。TA 不直接碰链路,它把软件下发的"事务"交给 TP 去搬运。


二、三种编程接口

TA 为软件提供三种编程入口:

接口用途说明
Mailbox控制面表项创建/修改/读取/注销
Doorbell通知硬件执行任务、更新指针、使能事件硬 DB(写地址空间 → TP LSAR → TA)与软 DB(record,软件写内存硬件读)
DirectWQE低延时直接下发 WQE64B 或 128B,不经 cache 访存

Doorbell 方向速记(软更 PI/CI 指软件维护的指针):

队列软件维护硬件维护
JFSPICI
JFCCIPI
JFRPICI
EQCIPI

记忆:JFS/JFR 软件生产(PI),JFC/EQ 软件消费(CI)。
各队列对 DB 的支持:JFS 仅硬 DB;JFC 硬+软;JFR 仅软 DB;EQ 仅硬 DB。


三、Jetty / JFS / JFR / JFC 队列模型

3.1 核心概念

  • Jetty:URMA 编程接口对象,绑定一对发送/接收队列
  • JFS(Jetty For Send):发送队列
  • JFR(Jetty For Receive):接收队列
  • JFC(Jetty For Completion):完成队列,上报 CQE

3.2 关键规格

规格
每 Entity JFS/Jetty 数最大65536(64K)
JFS/Jetty 队列深度1~32768(32K),2 的幂次方;深度 1/2/4 仅 Normal SQE
每 Entity JFR 数最大 65536
JFR 队列深度64~32768
JFR RQE 大小最大 4(单位 16B)
JFR RQE Buffer Size2KB/4KB,1 报文最多 4 RQE
Jetty Group 数每 Entity 最大 65536
Jetty Group 内最大 Jetty 数32
Jetty Group Hash按包头 Hint 选 JFR
JFC 队列数最大 65536;1 JFC 绑多 JFS/JFR,1 JFS/JFR 属 1 JFC
JFC CQE 深度64~1048576(1M)
JFC CQE 大小Normal 64B;Raw 固定 64B
JFC inline 模式Send/SendImm/SendInv 时 Payload 写入 CQE,最大 20B(带立即数减 8B)
JFC PA 地址可 Bypass UMMU 降低 CQE 时延

学习要点:

  • 1 JFC 绑多 JFS/JFR,但 1 JFS/JFR 只属 1 JFC(多对一关系)。
  • JFC 可 Bypass UMMU 直接用 PA 地址,用于降低 CQE 时延。

四、URMA 操作语义

4.1 支持的操作

Send、Send with invalidate(仅软件方案)、Send with immediate data(CTP 最大 1 MTU)、Send with inline data(最大 208B)、Write、Write with immediate、Write with Notify、Write with Reduce(≤MTU)、Write with inline(最大 208B)、Read、Read with Reduce(≤MTU)、Compare&Swap Atomic(4/8/16B)、Fetch&Add Atomic(4/8B)、User Data 上报 CQE、NOP。

4.2 操作规格(Normal SQE)

操作最小最大
Send0B(SGE_Num=0)可靠 TP 64KB;CTP 1 MTU
Write0B256MB(0x40000 KB)
Read0B256MB
Atomic CAS4B16B(操作数×2)
Atomic FetchAdd4B8B
Raw SQE Payload0B4KB
Write/Send inline208B

4.3 WQE 切片规则

  • Write/Read可切片给 Transport,切片大小 = Payload size(不含包头)
  • 可靠 TP 最大 65536(64KB),最小 1KB,2 的幂次方
  • Send / Read Response / Raw / Atomic不切片
  • 无 TP 时按 MTU 拆

4.4 序模型

模型说明
No Order无序
Strong Order强序
Fence栅栏
Relax Order宽松序

均在 WQE 中配置。


五、SQE 规格

  • SQEBB(SQE Base Block)=64B,是计量单位
  • Raw SQE:最大 5 SQEBB;最大 18 SGE(每 SGE 16B);用于传统 NIC
  • Normal SQE:最大 4 SQEBB;Write/Send 最大 13 SGE;Read 最大 6 SGE;Atomic 1 SGE
  • JFS Context User Data:最大 8B 填入 CQE

记忆:64B 是基本块。Raw 给传统 NIC 用(5 BB / 18 SGE),Normal 是 URMA 主力(4 BB)。

SGE 是 Scatter/Gather Element(散集元素) 的缩写。它是一种用于描述非连续或离散内存数据段(Buffer)的结构单元,主要在传输请求WQE中指定数据的内存地址、长度和访问权限,从而支持高效的向量化 I/O 与零拷贝数据搬移。
SGE 的核心作用描述内存段:每个SGE 包含一段物理或虚拟内存的起始地址(Buffer Address)以及数据长度(Length)。
SGL:多个 SGE 可以组合成一个散集列表(Scatter/Gather List, SGL),用来一次性处理分布在内存中不同位置的多个数据块。

  • SGE 的核心字段(硬件数据结构)在硬件底层,一个 SGE 通常占用 16 字节(Bytes) 或 32 字节 的固定内存空间,主要由以下三个核心核心字段组成:

    • Addr (64-bit 地址):指向本段内存缓冲区的起始虚拟地址(VA)或物理地址。
    • Length (32-bit 长度):指定该内存段的大小(以字节为单位),定义了硬件可以读取或写入的边界。
    • Lkey (32-bit 局部密钥):这是硬件进行内存保护的核心机制。它是该内存区域在注册(Memory Region, MR)时生成的令牌。硬件通过检查 Lkey 来验证当前进程是否有权限读写该段内存,防止非法内存越界。
  • SGE 的组织与执行形式:WQE ↔ SGL ↔ SGESGE
    它是通过工作队列(Work Queue)和散集列表(SGL)来协同工作的:软件提交(Gather / 发送端):软件(如应用层或网络协议栈)要发送 3 块不连续的数据。软件构建一个 WQE(工作队列元素),并在 WQE 内部包含一个由 3 个 SGE 组成的 SGL(Scatter/Gather List)。


六、RC 表(Remote Command 表)

存收到的远端Read / Atomic请求;RM 模式需回 TAACK 的 Write/Send 也用。

规格
每 Entity RC 表数最大 65536,可配置(每 VL 2 的幂次方深度)
RC 表大小Ring Buffer,RCE BB 固定 64B;单命令占 1+ RCE BB;最小 64B,最大 128B(2 RCE)
RC 表深度64 ~ 32768 RCEBB
拥塞反馈RC 表达水线返回拥塞指示,源端降速(解除活锁,非协议拥塞控制)

学习要点:RC 表是"接收侧"用来暂存远端发来的 Read/Atomic 请求的环形缓冲。达水线会反压源端降速——注意这是解除活锁,不是协议级拥塞控制。


七、Direct WQE / WQE Lock Buffer / Stars Lock Buffer

7.1 DirectWQE 机制

硬件收到 DirectWQE 后,按 Jetty 范围判断存入:

  • Stars Lock Buffer
  • WQE Lock Buffer
  • WQE cache

Lock Buffer 模式下 SQE 只存片上,无访存,DSQE 源保证不溢出(低延时场景)。

7.2 WQE Lock Buffer

  • XPU(CPU/CCU/AIV/AICPU)下发的 DirectWQE 存入
  • 使用此 Buffer 的 Jetty仅支持 DirectWQE,不支持 doorbell
  • FE 内连续 Jetty 范围,静态配置(start_jetty_id / end_jetty_id),所有 FE 范围相同
  • 每 FE 配 1bit 使能 + fe_start_buf_idx;FE 内 jetty 深度相同(2^bb_shift,最大 2^12)
  • 片上容量4K×64B
  • JFS context 中wqe_lock_buffer_en=1时 sqe_base_addr 为此 Jetty 在 Buffer 起始地址

地址计算

addr = fe_start_buf_idx + (jetty_id - start_jetty_id)*(2^bb_shift) + sqebb_idx%(2^bb_shift)
  • 64B DWQE:sqebb_idx = DWQE.sqe_bb_idx - 1
  • 128B DWQE:第 1 个 sqebb_idx = sqe_bb_idx-2,第 2 个 = sqe_bb_idx-1

7.3 Stars Lock Buffer

  • 深度128×64B
  • 与 WQE Lock Buffer 的 Jetty 范围不交叠

学习要点:DirectWQE 是低延时关键路径。Lock Buffer 把 SQE 留在片上免访存,但要付出"Jetty 范围受限、不支持 doorbell"的代价。


八、Write with AtomicStoreAdd

模式opcode结构说明
单 WQEBB0x19仅 1 SGE,1 WQEBB;EID 32bit,TokenValue 24bit;不支持 UDFPayload 最大 64KB(TP)/ 4KB(CTP,≤MTU);inline 最多 8B;TA 不切片发 TP;sge_num=0 表 payload=0
两 WQEBB0x1A数据结构同 write with notify;1 SGE(sge_num=0/1)inline 最多 16B;TP 0~64KB / CTP 0~4KB;TA 固定不切片,超切片大小不发送上报 AE

九、流量管理 TM 4 层调度

层级节点典型数量调度Shaper
L5Queue (Q)128
L4Queue Set128固定一一映射 L5单桶 1Mbps~200Gbps,精度 1%
L3Function (VF/PF) Entity64最多 16 L4 → 1 L3,SP+DWRR双桶 CIR/PIR
L2Function Group16最多 8 L3 → 1 L2,SP+DWRR双桶
L1Network Port132 FG → 1,SP+DWRR单桶
  • Jetty 流量控制最低1Mbps
  • SL→VL 映射表,同 FE 同 VL SQ 映射到同 FE+VL Queue

学习要点:自底向上 L1(端口)→ L2(FG)→ L3(FE)→ L4(QS)→ L5(Q)。调度算法 SP(严格优先级)+ DWRR(加权轮询)组合。L3/L2 用双桶(CIR/PIR),L1/L4 用单桶。


十、性能指标

10.1 昇腾场景

操作RC 单向RC 双向RM 单向RM 双向
Send/Rcv最快
  • CTP 模式 4KB 打满
  • 带宽场景:10 Jetty 对 10 Port,4KB 打满
  • context cache miss 时双向包率之和 80Mmps
  • 达成条件:JFS 32~384,RC 32~64,单 Jetty WQE≥4,CQE 非 inline,4KB 打满带宽,≤1KB 打满包率

学习要点:RC 比 RM 快约 2 倍。Cache hit/miss 对带宽影响巨大。


十一、图速记

软件 ──Mailbox──▶ [表项配置] ──IMP──▶ TA ──Doorbell──▶ [PI/CI更新] ──TP LSAR──▶ TA ──DirectWQE─▶ [低延时] ──┬─ Stars Lock Buffer (128×64B) ├─ WQE Lock Buffer (4K×64B, 昇腾) └─ WQE cache TA 内部: JFS(发送) ──SQE──▶ [拆解/切片] ──▶ TP ──▶ NL ──▶ DL_PHY JFR(接收) ◀──RQE── [收报文] ◀── TP RC表(远端命令暂存) ──RdResp/TAACK──▶ JFC(完成) ──CQE──▶ 软件 EQ(事件) ──EQE──▶ 软件

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询