XiAlgo · Tech Architecture
XiAlgo 技术架构设计 v1.0
五层架构 · 六套件 · 运行时 · 调度 · 签名
让每一段声音都有算法可循 · 让每一份 MIPS 都有归处
5
架构分层
6
算法套件
ABI v1.0
二进制接口
XiAlgo 技术架构设计 v1.0
摘要
本文档是 XiAlgo 算法库的技术架构详设,与 spec.md 互补:spec 定义 "做什么"(ABI / API / 参数 / 指标契约),本文回答 "怎么做"(分层 / 套件拆解 / 运行时 / 内存模型 / 调度 / 签名)。
目标读者:算法工程师、XiStudio 后端工程师、Tier1 集成工程师、IDM 客户 DSP 移植团队。
算法架构红线
- 所有算法块必须实现 XiAlgoBlock ABI v1.0 四个生命周期函数(init/process/update_param/destroy)
process()函数必须在单帧 Budget(典型 1 ms @ 48 kHz)内完成,否则触发 WDT- 算法绝不能动态 malloc/free:只能用 XiCore 预分配的内存池
- 所有
.xipkg必须 RSA-2048 签名,未签名包 XiStudio / XiDSP 运行时均拒绝加载
1. 架构原则
XiAlgo 架构五条原则
- ABI 稳定:v1.x 所有算法包保证二进制向后兼容,客户项目不被升级打断
- 块可组合:最小可复用单元是"算法块"(Block),用户用 XiStudio 图形化组合
- 硬实时:每个
process()必须在 Budget 内结束,超时即 Bypass 而非整链崩溃 - 内存静态化:禁止运行时动态 malloc,所有内存在 init 时一次性申请
- 分级授权:Free / Pro / Pro+ / Custom 四级,按套件 × 签名 × Royalty 三维度管控
2. 总体分层
2.1 五层架构
graph TB
L5[L5 · 应用层<br/>XiStudio 图形化 · 客户工程]
L4[L4 · 套件层<br/>FX / NR / AI / KTV / Zone / 3D]
L3[L3 · 算法块层<br/>PEQ · DRC · NLMS · AEC · DNN 等]
L2[L2 · 运行时层<br/>XiCore Scheduler · Memory Pool · IPC]
L1[L1 · 硬件抽象层<br/>XiDSP HAL · MAC / ASRC / DMA]
L5 --> L4
L4 --> L3
L3 --> L2
L2 --> L1
class L5 xyL5
class L4 xyL4
class L3 xyL3
class L2 xyL2
class L1 xyL1
2.2 各层职责
| 层 | 职责 | 交付形态 | 主要技术 |
|---|---|---|---|
| L5 应用层 | 客户工程 / 图形流图 | .xiproj |
XiStudio 可视化 |
| L4 套件层 | 功能套件捆绑(FX / NR / ...) | .xipkg |
算法块清单 + 默认参数 + UI |
| L3 算法块层 | 单个 DSP 算法实现 | .xo 二进制 |
C + 汇编(DSP 流水线优化) |
| L2 运行时层 | 调度 / 内存 / IPC | 固化于固件 | XiCore(自研 RTOS) |
| L1 HAL 层 | 寄存器 / DMA / MAC | 固化于固件 | XiDSP SDK |
3. 套件拆解
3.1 六套件总览
graph TB
XiAlgo[XiAlgo 算法库<br/>L3]
XiAlgo --> FX[XiAlgo-FX<br/>基础特效]
XiAlgo --> NR[XiAlgo-NR<br/>噪声控制]
XiAlgo --> AI[XiAlgo-AI<br/>AI 增强 D2+]
XiAlgo --> KTV[XiAlgo-KTV<br/>卡拉OK]
XiAlgo --> Zone[XiAlgo-Zone<br/>多音区]
XiAlgo --> ThreeD[XiAlgo-3D<br/>空间音频 D3+]
class XiAlgo xyL4
class FX,NR,AI xyL3
class KTV,Zone,ThreeD xyL2
3.2 各套件特性
| 套件 | Tier | 目标芯片 | 核心算法块 | 典型 MIPS(D1) |
|---|---|---|---|---|
| FX | Free / Pro | D1+ | PEQ / GEQ / DRC / Limiter / Delay / Reverb / Crossover | 30-100 |
| NR | Pro | D1+ | WindNoise / RoadNoise / AEC / CallNR(ANC 需硬件配合) | 50-120 |
| AI | Pro+ | D2+(需 AI 协处理器) | AI_Enhance / SceneDetect / AI_NR / SourceSep | 150-800(D2) |
| KTV | Pro | D1+ | KeyShift / Harmony / EchoCancel / Chorus | 40-80 |
| Zone | Pro | D1+ | ZoneSplit_2/4 / Crosstalk / PerZoneEQ | 40-80 |
| 3D | Pro+ | D3+ | HRTF / AmbisonicsDecode / Virtualizer | 200-500(D3) |
3.3 套件 × 芯片 × Tier 交叉矩阵
| 套件 | D1 Free | D1 Pro | D2 Free | D2 Pro+ | D3 Pro+ | A1 车规 |
|---|---|---|---|---|---|---|
| FX | ✅(基础) | ✅ | ✅ | ✅ | ✅ | ✅ |
| NR | ❌ | ✅ | ❌ | ✅ | ✅ | ✅(含 ASIL-B 增强) |
| AI | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
| KTV | ❌ | ✅ | ❌ | ✅ | ✅ | — |
| Zone | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
| 3D | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
4. 算法块详设
4.1 Block 生命周期
graph LR
U[未加载] --> L[已加载<br/>.xo 解析]
L --> I[已初始化<br/>init 成功]
I --> R[运行中<br/>process 循环]
R --> R
R --> P[参数更新<br/>update_param]
P --> R
R --> D[已销毁<br/>destroy + 内存归还]
class U xyL0
class L,I xyL2
class R xyL3
class P xyWarn
class D xyL5
4.2 Process 函数的硬实时契约
- 输入:
const float** in(每通道一个指针) - 输出:
float** out - 帧长:典型 48 samples @ 48 kHz = 1 ms Budget
- 禁用:malloc / free / printf / 阻塞 IO
- 允许:算数运算 / 预分配池的读写 / XiCore 提供的原子操作
4.3 算法块内部结构示例(PEQ_5band)
graph LR
In[float* in] --> B1[Biquad 1]
B1 --> B2[Biquad 2]
B2 --> B3[Biquad 3]
B3 --> B4[Biquad 4]
B4 --> B5[Biquad 5]
B5 --> Out[float* out]
Params[XiParam × 5 bands<br/>freq/gain/Q] -.update.-> B1
Params -.update.-> B2
Params -.update.-> B3
Params -.update.-> B4
Params -.update.-> B5
class In,Out xyL0
class B1,B2,B3,B4,B5 xyL3
class Params xyWarn
4.4 定点与浮点策略
| 算法 | D1 策略 | D2+ 策略 | 理由 |
|---|---|---|---|
| PEQ / GEQ | Q1.23 定点 | FP32 可选 | 定点够用,精度 -105 dB THD+N |
| DRC / Limiter | Q1.23 定点 | FP32 可选 | 动态范围需低失真,定点饱和保护 |
| NR / AEC | Q1.23 定点 | FP32 | 收敛性需更高精度(D2+ 升 FP32) |
| AI | — | FP32 / INT8 量化 | DNN 推理 |
| 3D | — | FP32 | HRTF 卷积精度要求高 |
5. 运行时层(XiCore)
5.1 运行时总览
graph TB
App[客户工程 · 算法图]
App --> Loader[算法加载器<br/>解析 .xipkg]
Loader --> Verifier[签名校验<br/>RSA-2048]
Verifier --> Linker[符号链接<br/>Block Vtable]
Linker --> Scheduler[实时调度器]
Scheduler --> MemPool[内存池<br/>16/64/256/1024 B]
Scheduler --> Graph[算法图执行]
Graph --> WDT[帧 WDT<br/>超时保护]
Graph --> Telemetry[遥测<br/>MIPS/MEM/Latency]
class App xyL5
class Loader,Verifier xyWarn
class Linker xyL4
class Scheduler xyL3
class MemPool,Graph xyL2
class WDT xyError
class Telemetry xyL1
5.2 调度器
- 帧驱动:由 Audio DMA 完成中断唤醒
- 拓扑排序:按算法图依赖先后执行
- MIPS 预算核查:每帧累计 MIPS,超限则降级到 Bypass
- 优先级:车规功能(Fault-tolerance / NR)> 用户特效
5.3 内存池
XiCore Memory Pool(典型 D1)
┌────────────────────┬──────────┐
│ Pool-16B × 128 │ 2 KB │ 小对象(参数快照)
├────────────────────┼──────────┤
│ Pool-64B × 64 │ 4 KB │ 中对象(Biquad state)
├────────────────────┼──────────┤
│ Pool-256B × 32 │ 8 KB │ 大对象(NLMS 滤波器)
├────────────────────┼──────────┤
│ Pool-1024B × 16 │ 16 KB │ 大对象(FFT 工作区)
├────────────────────┼──────────┤
│ 预留客户扩展 │ 64+ KB │
└────────────────────┴──────────┘
- Init 阶段:一次性分配,失败即启动失败
- Runtime 阶段:只读取,不动态分配
- ECC 保护:D1+ SRAM ECC 单位错自动纠正
5.4 实时监测
- 每帧:记录当前 process 耗时 / MIPS 利用率
- 每 100 ms:回报 XiStudio Scope 显示
- 每 1 s:回写到 XiMind 云端(客户同意时)
6. 算法包(.xipkg)架构
6.1 包加载流程
graph LR
A[.xipkg 文件] --> B[ZIP 解压]
B --> C[读 manifest.json]
C --> D[校验 signature.bin<br/>RSA-2048 SHA-256]
D -- OK --> E[解析 blocks/*.xo]
D -- Fail --> Reject[拒绝 · 报错]
E --> F[Target DSP 匹配检查]
F -- OK --> G[挂载到算法块库]
F -- Fail --> Reject
G --> Ready[可用于 XiStudio 拖拽]
class A xyL0
class B,C,E xyL2
class D,F xyWarn
class G xyL3
class Ready xySuccess
class Reject xyError
6.2 .xo 二进制格式
.xo Block File(类 ELF)
┌────────────────────────┐ 0x0000
│ Magic "XIBL" │ 4 bytes
├────────────────────────┤
│ ABI Version │ 4 bytes
├────────────────────────┤
│ Block Name (64 char) │ 64 bytes
├────────────────────────┤
│ Symbol Table Offset │ 4 bytes
├────────────────────────┤
│ Code Section Offset │ 4 bytes
├────────────────────────┤
│ RO Data Section Offset │ 4 bytes
├────────────────────────┤
│ Signature │ 256 bytes (RSA-2048)
├────────────────────────┤
│ Code Section │ variable
├────────────────────────┤
│ RO Data Section │ variable
└────────────────────────┘
6.3 多目标芯片支持
一个 .xipkg 可含同一算法的多个 Target 的 .xo:
blocks/
├── peq_block_d1.xo (XiDSP-D1 ISA)
├── peq_block_d2.xo (XiDSP-D2 ISA)
└── peq_block_a1.xo (XiDSP-A1 ISA + ASIL-B hooks)
加载时由 Loader 根据 target_dsp 字段自动选最匹配的一份。
7. 参数系统
7.1 XiParam v1.0 数据模型
XiParam {
string param_id // "peq.band1.freq"
enum type // float / int / enum / bool / string
union value
tuple range // [min, max]
string unit // "Hz"
float default_value
string display_name // "1 段频率"
float ramp_ms // 参数渐变时间 (防爆音)
}
7.2 参数更新路径
graph LR
UI[XiStudio UI<br/>旋钮拖动] --> BUS[Param Bus]
BUS --> Stg[Staging 缓冲]
Stg -- 帧同步 --> Apply[update_param 调用]
Apply --> Ramp[Ramp 插值<br/>10-50 ms]
Ramp --> Active[当前帧生效]
class UI xyL5
class BUS xyL2
class Stg xyL1
class Apply,Ramp xyL3
class Active xySuccess
7.3 防爆音机制
- 参数变化不立即生效,而是进入 Staging
- 每帧起始时拷贝 Staging → Active
- 对 Gain / Freq 等连续量做 Ramp 插值(默认 20 ms)
- 对 On/Off 等离散量做 Fade-in/out 淡入淡出
8. 签名与授权
8.1 签名链
graph TB
Root[Xisound Root CA<br/>离线冷存储]
Root --> Algo[算法签发密钥<br/>HSM 保存]
Algo --> Pkg1[.xipkg 1 签名]
Algo --> Pkg2[.xipkg 2 签名]
Cust[客户签发密钥<br/>IDM 客户独占] --> PkgC[客户定制 .xipkg]
class Root xyError
class Algo,Cust xyWarn
class Pkg1,Pkg2,PkgC xySuccess
8.2 Tier 校验逻辑
| Tier | 签名要求 | 运行环境要求 |
|---|---|---|
| Free | Xisound 官方签名 | 任意 XiDSP |
| Pro | Xisound 官方签名 | XiDSP OTP 带 Pro 激活 Bit |
| Pro+ | Xisound 官方签名 + 客户白名单 | OTP 带 Pro+ Bit + Device UUID 匹配 |
| Custom | 客户私钥签名 + Xisound 背书 | 客户专属芯片 Die Lot |
8.3 Royalty 计数
- XiDSP OTP 存 Device UUID(48-bit 唯一)
- XiCore 统计每个算法块激活次数
- 设备重启不清零(存 OTP)
- 上行通道:FOTA 携带 + XiMind 云端对账
9. 部署拓扑
9.1 开发阶段
9.2 量产阶段
9.3 IDM 阶段
10. 演进路线
10.1 未来 3 年技术演进
| 时间 | 演进项 | 影响层 |
|---|---|---|
| 2026 Q4 | XiAlgo v1.0 · 配套 XiDSP-D1 A0 Bring-up | L2-L4 |
| 2027 Q3 | XiAlgo v1.1 · 新增 AI_NR / SceneDetect(D2 预研) | L3 |
| 2028 Q2 | XiAlgo v2.0 · ABI v2.0(破坏性)+ FP32 全面启用 | L2-L4 |
| 2028 Q4 | XiAlgo-3D 首发(D3+) | L3-L4 |
| 2029 | XiAlgo-A1 车规增强包(ASIL-B / Health Monitor) | L3-L5 |
| 2030+ | 运行时热插拔(无需重启切换算法) | L2 |
10.2 技术债提示
已识别的技术债(v1.0 阶段接受)
- 不支持运行时热插拔 — v1.5 规划
- 参数系统无事务性 — 多参数原子更新可能跨帧,v2.0 加事务 ID
- 内存池固定大小 — 不足时加载失败,v2.0 支持动态重分布
- 无算法级 ASAN — 仅依赖 XiCore WDT,v2.0 引入地址消毒
11. 附录
11.1 与其他文档的引用关系
| 关联文档 | 引用点 |
|---|---|
| XiAlgo 产品概述 | 套件定位 / 客户画像 |
| XiAlgo PRD | 功能需求 / 验收标准 |
| XiAlgo 产品规格书 | ABI / API / MIPS / 基准(本文数字源) |
| XiAlgo API 文档 | C API / Python SDK 详细 |
| XiDSP 技术架构 | 下游硬件 MAC / ASRC / DMA |
| XiStudio 技术架构 | 上游 IDE 算法图编辑 |
| 算法开发规范 | 算法块编码规范 |
11.2 外部标准参考
- IEEE 1180(数字音频精度标准)
- MUSHRA ITU-R BS.1534(主观评测标准)
- ISO 26262:2018(功能安全 · ASIL-B 参考)
- NIST FIPS 186-4(RSA 签名)
11.3 版本历史
| 版本 | 日期 | 要点 |
|---|---|---|
| v1.0 | 2026-05-05 | 首版 · 五层架构 + 六套件拆解 + XiCore 运行时 + 签名链 |
tech-arch.md · D2-P5-TECH-001 · v1.0 · 2026-05-05 · Xisound 研发中心 · 算法团队