跳转至
XiAlgo · Tech Architecture

XiAlgo 技术架构设计 v1.0

五层架构 · 六套件 · 运行时 · 调度 · 签名
文档编号:D2-P5-TECH-001 · 版本:v1.0 · 发布:2026-05-05
让每一段声音都有算法可循 · 让每一份 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 架构五条原则

  1. ABI 稳定:v1.x 所有算法包保证二进制向后兼容,客户项目不被升级打断
  2. 块可组合:最小可复用单元是"算法块"(Block),用户用 XiStudio 图形化组合
  3. 硬实时:每个 process() 必须在 Budget 内结束,超时即 Bypass 而非整链崩溃
  4. 内存静态化:禁止运行时动态 malloc,所有内存在 init 时一次性申请
  5. 分级授权: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 开发阶段

工程师 PC
├── XiStudio(加载 .xipkg · 拖拽建图)
├── EVK-D1(插 USB)
└── .xipkg 文件(来自 Xisound 交付)

9.2 量产阶段

产线
├── 烧录工位(XiFlash · 固件含 XiAlgo 已打包)
├── XiTest 测试工位(算法功能验收)
└── FOTA 服务器(后续 .xipkg 升级用)

9.3 IDM 阶段

IDM 客户自建
├── RTL 源码(XiDSP)
├── 算法源码(XiAlgo Custom Tier · 部分开放)
├── 自家 Foundry
└── 自家烧录 / FOTA

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 阶段接受)

  1. 不支持运行时热插拔 — v1.5 规划
  2. 参数系统无事务性 — 多参数原子更新可能跨帧,v2.0 加事务 ID
  3. 内存池固定大小 — 不足时加载失败,v2.0 支持动态重分布
  4. 无算法级 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 研发中心 · 算法团队