news 2026/7/2 2:29:05

[AI][昇腾950]核间同步原理介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[AI][昇腾950]核间同步原理介绍

DaVinci 950 跨核同步性能提升深度分析

第1章: 硬件同步机制

1.1 FFTS (Fast Fine-Grained Task Scheduler) 架构

D950 引入了片内专用同步硬件 FFTS,实现零总线延迟的跨核同步:

┌─────────────────────────────────────────────────────────────────────┐ │ D950 SoC │ │ │ │ ┌─ Block 0 ──────┐ ┌─ Block 1 ──────┐ ┌─ Block M-1 ────┐ │ │ │ CubeCore │ │ CubeCore │ │ CubeCore │ │ │ │ VecCore (×2) │ │ VecCore (×2) │ │ VecCore (×2) │ │ │ └────┬────────────┘ └────┬────────────┘ └────┬───────────┘ │ │ │ │ │ │ │ │ SET_CROSS_CORE │ SET_CROSS_CORE │ │ │ └──────────────────────┼──────────────────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────────────┐ │ │ │ FFTS │ │ │ │ (片内专用同步硬件) │ │ │ │ │ │ │ │ flag_id 0: counter │ │ │ │ flag_id 1: counter │ │ │ │ ... │ │ │ │ flag_id 15: counter │ │ │ │ │ │ │ │ 每核每ID: │ │ │ │ 4-bit counter (0~15)│ │ │ │ 收集逻辑 (Mode 0~3) │ │ │ │ 自动唤醒机制 │ │ │ └──────────────────────┘ │ │ │ │ │ WAIT_FLAG_DEV │ WAIT_FLAG_DEV │ │ ┌──────────────────────┼──────────────────────┐ │ │ ▼ ▼ ▼ │ │ Core 0 唤醒 Core 1 唤醒 Core M-1 唤醒 │ └─────────────────────────────────────────────────────────────────────┘

1.2 SET_CROSS_CORE 指令

SET_CROSS_CORE.pipe Xt // Xt[11:8] = flag_id, Xt[5:4] = sync_mode
特征说明
延迟~1-2 cycle(写片内 FFTS 计数器)
阻塞非阻塞(发出即继续执行)
可用管线M, MTE1, MTE2, F (不可 S)
目标FFTS 硬件计数器 (不经过 GM/系统总线)

Xt 编码

Xt[63:0]: ┌──────────────────────┬───────┬───────┐ │ ... 忽略 ... │ flag │ mode │ │ │ ID │ │ │ │[11:8] │ [5:4] │ └──────────────────────┴───────┴───────┘ flag_id: 0~15 (4-bit, 最大计数 15, 不可溢出) sync_mode: 见下节

1.3 四种同步模式

Mode 0 (Inter-Block): 所有 M 个 Block 互相同步 ┌──── Block 0 ────┐ ┌──── Block 1 ────┐ │ Core A │ │ Core B │ │ SET ─────────→ │ │ SET ─────────→ │ │ FFTS ←─┼────┤──→ FFTS │ │ counter│ │ counter │ │ += 2 │ │ += 2 │ │ WAIT ←─────── │ │ WAIT ←─────── │ │ (到齐, 继续) │ │ (到齐, 继续) │ └─────────────────┘ └─────────────────┘ Mode 1 (Inter-SubBlock): 同组 N 个 SubBlock 间同步 ┌── Block X ──┐ │ SB0 ↘ │ │ SB1 FFTS │ │ ... ↙ │ │ SBN-1 │ └─────────────┘ Mode 2 (Intra-Block): 单 Block 内 Block↔SubBlock 同步 ┌── Block X ──┐ │ Block ↕ │ │ SB0..N │ └─────────────┘ Mode 3 (Unicast Block): SubBlock→Block 单播 (不等收集) SB ──→ FFTS ──→ Block (立即转发, 不等其他 SB)
ModeXt[5:4]名称粒度收集逻辑
02’b00Inter-Block跨 Block所有 Block SET 到齐后才递增
12’b01Inter-SubBlockBlock 组内同组 SubBlock 全部 SET
22’b10Intra-BlockBlock 内部Block↔SubBlock 双向
32’b11Unicast Block单播1 个 SET 即递增, 不等收集

1.4 WAIT_FLAG_DEV 指令

WAIT_FLAG_DEV.pipe Xt // 寄存器版本 WAIT_FLAG_DEVI.pipe #uimm8 // 立即数版本
特征说明
行为阻塞等待FFTS 对应 flag_id 的 counter > 0
唤醒硬件自动唤醒 (counter > 0 时)
计数器操作唤醒后 counter -= 1 (自动消耗)
可用管线S, M, MTE1, MTE2, F(全管线!)

1.5 D950 同步时序

D950 跨核 Barrier 时序 (4 核 Inter-Block, flag_id=5): T=0 Core A: SET_CROSS_CORE.M X10 // 1 cycle, 非阻塞! T=0 Core A: 继续做其他计算... // 不等! T=5 Core B: SET_CROSS_CORE.M X10 // 1 cycle T=5 Core B: 继续做其他计算... T=10 Core C: SET_CROSS_CORE.M X10 // 1 cycle T=15 Core D: SET_CROSS_CORE.M X10 // 1 cycle FFTS: counter[5] = 4 = M (到齐!) T=15 Core A: WAIT_FLAG_DEVI.M 0x50 // counter=4>0 → 立即返回! Core A: counter[5] -= 1 → 3 T=15 Core B: WAIT_FLAG_DEVI.M 0x50 // counter=3>0 → 立即返回! Core B: counter[5] -= 1 → 2 T=15 Core C: WAIT_FLAG_DEVI.M 0x50 // counter=2>0 → 立即返回! Core C: counter[5] -= 1 → 1 T=15 Core D: WAIT_FLAG_DEVI.M 0x50 // counter=1>0 → 立即返回! Core D: counter[5] -= 1 → 0 总同步延迟: ~1 cycle (WAIT 命中时)

第2章:SET_INTRA_BLOCK — Mix-Mode 核内同步

2.1 用途

Mix-Mode Block (1 CubeCore + 1~2 VecCore) 内 CubeCore↔VecCore 的轻量同步。

SET_INTRA_BLOCKI.pipe #ID // ID: 0~15 WAIT_INTRA_BLOCKI.pipe #ID

2.2 机制

CubeCore (Block X) VecCore (Block X) ┌───────────────────┐ ┌───────────────────┐ │ │ │ │ │ SET_INTRA_BLOCK │── ID 3 ─→│ counter[3] += 1 │ │ (CubeCore 的 │ │ (VecCore 的 ID 3 │ │ counter 由 │ │ counter 由 │ │ VecCore SET │ │ CubeCore SET │ │ 来递增) │ │ 来递增) │ │ │←─ ID 3 ──│ SET_INTRA_BLOCK │ │ counter[3] += 1 │ │ │ │ │ │ │ │ WAIT_INTRA_BLOCK │ │ WAIT_INTRA_BLOCK │ │ (counter>0 → -1) │ │ (counter>0 → -1) │ └───────────────────┘ └───────────────────┘ 延迟: ~1-2 cycle (片内互连, 不出 Block)

第3章:根因总结

3.1 D950 性能提升的 4 个硬件根因

┌────────────────────────────────────────────────────────────────────┐ │ D950 跨核同步性能提升的硬件根因 │ ├────────────────────────────────────────────────────────────────────┤ │ │ │ Root Cause 1: 专用硬件 vs 通用总线 │ │ ───────────────────────────────────── │ │ V220: ATOM/RED 走系统总线 → 延迟不可控 (50-200 cyc) │ │ D950: FFTS 片内计数器 → 固定 1-2 cycle │ │ 本质: 同步从"内存事务"变成"寄存器写" │ │ │ │ Root Cause 2: 事件驱动 vs 轮询驱动 │ │ ───────────────────────────────────── │ │ V220: LD + CMP + JUMP 循环轮询 → 延迟×次数, 空转Core │ │ D950: WAIT 硬件阻塞, counter>0 自动唤醒 → 零空转 │ │ 本质: 从"问有没有"变成"等通知" │ │ │ │ Root Cause 3: 全管线可用 vs 仅 S 管线 │ │ ───────────────────────────────────── │ │ V220: ATOM/CMP/JUMP 全在 S 管线 → 其他管线空闲 │ │ D950: SET/WAIT 可在 M/MTE1/MTE2/F/S 执行 → 与计算并行 │ │ 本质: 同步不阻塞计算管线 │ │ │ │ Root Cause 4: O(N) 可扩展性 │ │ ───────────────────────────────────── │ │ V220: N 核 = N×ATOM + O(N²) poll (总线竞争恶化) │ │ D950: N 核 = N×SET + N×WAIT = O(N), 硬件并行收集 │ │ 本质: FFTS 收集逻辑是硬件并行的, 不增加延迟 │ │ │ └────────────────────────────────────────────────────────────────────┘

3.2 硬件代价

D950 为此付出的硬件成本:

资源代价
FFTS 计数器每核 16 个 flag_id × 4-bit counter × 4 种 mode = 小面积
片内互连Core↔FFTS 专用路径, 不复用系统总线
SET/WAIT 指令ISA 编码空间 + 各管线解码逻辑
全管线支持M/MTE1/MTE2/F/S 都需 SET/WAIT 接口

这些代价相对于性能提升(100-200x 同步延迟降低)是极低成本的投入。

3.3 SPR 配置(内部实现)

FFTS_BASE_ADDR 必须在首次 SET_CROSS_CORE 前配置: CubeCore: SPR.FFTS_BASE_ADDR = 0x0002_1B00_0008 + ONLY_COREID × 0x20000 VecCore: SPR.FFTS_BASE_ADDR = 0x0002_1B01_0008 + ONLY_COREID × 0x20000 配置示例: MOV_SPR2X X0, ONLY_COREID MOVI X1, 0x0002 SHLI X2, X0, 17 OR X3, X1, X2 ADDI X3, X3, 0x1B000008 MOV_X2SPR X3, FFTS_BASE_ADDR

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 2:28:40

磁吸转轴支架扭力稳定性影响因素全解析:五维度拆解与优化路径

硬件结构工程师干货 | 含衰减权重分析与工程选型建议扭力稳定性是磁吸转轴支架的核心性能指标,直接决定任意角度悬停的可靠性、产品使用寿命与终端手感体验。行业内扭力衰减过快、批次波动大、环境适应性差是普遍存在的品质痛点,其成因并非单一材料问题&…

作者头像 李华
网站建设 2026/7/2 2:26:37

立方体右移重力问题(sort,二分)

一、题目与核心理解题目描述Yousef 有 n 列立方体并排摆放。第 i 列竖直堆叠着 a_i 个相同单位立方体。初始重力向下,第 i 列的立方体分别位于高度 1,2,…,a_i。突然重力转向右方。每个立方体保持自身高度不变,尽可能向右滑动;方块不能重叠、…

作者头像 李华
网站建设 2026/7/2 2:25:49

子任务想换个便宜模型跑?Sub-Agent 这样设计

「Regnexe 实战系列」第 3 篇(共 10 篇),对应仓库 ExampleReadme03SubAgentTest。上一篇:02. Skill:只能借工具不能占。 真实场景:主 Agent 用旗舰模型,子任务想省钱 很多团队做多 Agent 系统会…

作者头像 李华
网站建设 2026/7/2 2:25:43

多机位像素同源融合渲染,一套图形底座搭建无割裂全域数字世界

当前国内视频孪生与数字孪生建设普遍存在机位分散、数据异源、时空割裂、渲染体系碎片化等结构性问题。多路视频各自独立成像、坐标系互不统一、时序无法对齐,叠加第三方拼接工具与开源渲染框架的局限性,极易出现场景断层、边界错位、虚实脱节、区域割裂…

作者头像 李华
网站建设 2026/7/2 2:23:41

后端开发者转型AI大模型的必备技能与实战指南

1. 为什么后端开发转AI大模型正当时去年我在团队里做过一个有趣的统计:组里8个Java/Python后端开发,有5个在业余时间偷偷学Transformer模型。这背后反映的不仅是技术趋势,更是职业发展的现实选择。大模型应用开发与传统后端开发最大的区别在于…

作者头像 李华