Qwen2.5 学习 Wiki
NOTES

M1i W8A8 系统架构唯一框架

> 阅读导图:本文讲的是 `SmolLM2-135M-Instruct Q25RT W8A8` 在 ZCU106 上的系统架构,不是本 Wiki 中 `Qwen2.5-0.5B-Instruct` 的实现报告。两者可以共用“Transformer、量化、ARM/FPGA 协同”等基础概念,但模型、权重、运行时和验收结论必须分别理解。

Qwen2.5/09_M1I_W8A8_System_Architecture_Canonical_20260713_CN.md 2026-07-13 约 37 分钟阅读

阅读导图:本文讲的是 SmolLM2-135M-Instruct Q25RT W8A8 在 ZCU106 上的系统架构,不是本 Wiki 中 Qwen2.5-0.5B-Instruct 的实现报告。两者可以共用“Transformer、量化、ARM/FPGA 协同”等基础概念,但模型、权重、运行时和验收结论必须分别理解。

flowchart TD
  A[阅读本文时先区分三条路线] --> B[当前主线<br/>ARM A53 production runtime]
  A --> C[冻结路径<br/>FPGA 功能回归]
  A --> D[历史研究<br/>mixed-GGUF 多模块 HLS]
  B --> B1[13 个系统模块均在 ARM A53]
  C --> C1[仅 SM-05 的 int8 点积进入 FPGA]
  D --> D1[只作历史实验依据<br/>不能计入当前完成度]
流程或关系图。

上图不是新增的实现设计,而是帮助本科生建立“不要混着数完成度”的阅读框架:主线回答产品运行时是否完成;冻结路径回答一个 FPGA 计算 IP 的功能是否通过;历史研究只说明过去做过哪些局部实验。

1. 文档范围

本文件是 SmolLM2-135M-Instruct Q25RT W8A8 在 ZCU106 上的唯一系统模块框架。

本文件不描述 Qwen2.5-0.5B-Instruct M3 实现。Qwen2.5 M3 尚未进入当前 ARM A53 加 FPGA 可编程逻辑运行时。

后续状态说明只使用本文件定义的 13 个固定系统模块名称。HLS 工程目录、HLS 配置参数和历史任务编号不是系统模块名称。

2. 三条不能混合统计的执行与研究路线

2.1 当前主线:ARM A53 处理系统 production runtime

当前主线由 ARM A53 处理系统执行全部 13 个固定系统模块。SM-05 W8A8 线性投影模块在当前主线中也由 ARM A53 处理系统执行,不调用 FPGA 可编程逻辑。

当前主线的正式范围固定为 64 个词元、单请求、每个请求前后重置、F32 Key/Value cache 和贪心生成。当前主线先完成真实 ARM A53 处理系统合同和被选定 exact artifact 的物理 SD 冷启动。

2.2 冻结的 FPGA 功能回归路径

冻结的 FPGA 功能回归路径使用:

该路径已经完成功能回归,但真实端到端时间慢于当前主线。因此该路径不再扩展 FPGA 覆盖,不作为 production runtime 主线,只保留 rows256 和 rows1536 两套可回归产物以及待完成的 rows1536 物理 SD 冷启动证据。

2.3 历史 mixed-GGUF 多模块 HLS 研究架构

历史 mixed-GGUF 多模块 HLS 研究架构直接处理 Q5_0、Q5_K、Q8_0、浮点注意力等原始 GGUF 语义。

历史 mixed-GGUF 多模块 HLS 研究架构中的注意力、完整 MLP、词表输出等工程是替代实现实验。历史 mixed-GGUF 多模块 HLS 研究架构不是当前主线或冻结的 FPGA 功能回归路径的后续串联模块,也不能与这两个执行路径计算统一完成率。

3. 固定系统模块

编号固定系统模块名称输入和输出当前执行位置
SM-01运行时资产加载与校验模块从 SD/FatFs 读取模型和 tokenizer,校验大小与 SHA256ARM A53 处理系统
SM-02文本编码与解码模块UTF-8 文本与词元编号互相转换ARM A53 处理系统
SM-03词元嵌入模块词元编号转换为 576 维浮点隐藏向量ARM A53 处理系统
SM-04均方根归一化模块浮点隐藏向量执行 RMSNormARM A53 处理系统
SM-05W8A8 线性投影模块浮点输入和 W8A8 权重转换为浮点投影输出当前主线由 ARM A53 处理系统执行;冻结的 FPGA 功能回归路径由 ARM A53 处理系统与 FPGA 可编程逻辑共同执行
SM-06旋转位置编码模块Query 和 Key 向量执行 RoPEARM A53 处理系统
SM-07键值缓存模块保存和读取各层 Key、Value 浮点缓存ARM A53 处理系统
SM-08注意力概率模块Query-Key 点积、缩放、因果掩码、softmaxARM A53 处理系统
SM-09注意力值聚合模块注意力概率乘 Value,生成 attention contextARM A53 处理系统
SM-10残差加法模块投影输出与原隐藏向量相加ARM A53 处理系统
SM-11SiLU 门控激活模块SiLU(gate) * upARM A53 处理系统
SM-12词元排序与贪心选择模块线性投影结果缩放、top-k、选择最大词元ARM A53 处理系统
SM-13运行时控制与串口协议模块调度 30 层、prefill/decode、命令和 UART 输出ARM A53 处理系统

下面这张模块框图把 13 个编号模块压缩成四个容易记忆的阶段。它不替代上面的正式表格;正式表格给出模块名、接口和执行位置,图只帮助你看清数据怎样从一句文本走到下一个词元。

flowchart LR
  U[用户文本] --> M2[SM-02<br/>编码]
  M2 --> M3[SM-03<br/>词元嵌入]
  M3 --> Layer[30 层 Transformer]
  Layer --> N[SM-04<br/>最终 RMSNorm]
  N --> H[SM-05<br/>lm_head 投影]
  H --> K[SM-12<br/>top-k / 贪心选择]
  K --> M2D[SM-02<br/>解码为文本]
  C[SM-13<br/>运行时调度、UART、prefill/decode] -. 调度整个过程 .-> M2
  subgraph LayerDetail[每一层的固定组合]
    R1[SM-04 RMSNorm] --> P1[SM-05 Q/K/V 投影]
    P1 --> RP[SM-06 RoPE]
    RP --> KV[SM-07 KV cache]
    KV --> A1[SM-08 注意力概率]
    A1 --> A2[SM-09 Value 聚合]
    A2 --> P2[SM-05 输出投影]
    P2 --> RES1[SM-10 残差]
    RES1 --> R2[SM-04 RMSNorm]
    R2 --> P3[SM-05 Gate / Up]
    P3 --> ACT[SM-11 SiLU 门控]
    ACT --> P4[SM-05 Down]
    P4 --> RES2[SM-10 残差]
  end
流程或关系图。

4. 一次完整推理的固定执行顺序

SM-13 运行时控制与串口协议模块
  -> SM-01 运行时资产加载与校验模块
  -> SM-02 文本编码与解码模块
  -> SM-03 词元嵌入模块
  -> 重复 30 个 transformer 层:
       SM-04 均方根归一化模块
       SM-05 W8A8 线性投影模块:Query、Key、Value 三次调用
       SM-06 旋转位置编码模块
       SM-07 键值缓存模块
       SM-08 注意力概率模块
       SM-09 注意力值聚合模块
       SM-05 W8A8 线性投影模块:Attention Output 一次调用
       SM-10 残差加法模块
       SM-04 均方根归一化模块
       SM-05 W8A8 线性投影模块:MLP Gate、MLP Up 两次调用
       SM-11 SiLU 门控激活模块
       SM-05 W8A8 线性投影模块:MLP Down 一次调用
       SM-10 残差加法模块
  -> SM-04 均方根归一化模块:最终隐藏向量
  -> SM-05 W8A8 线性投影模块:词表输出一次调用
  -> SM-12 词元排序与贪心选择模块
  -> SM-02 文本编码与解码模块

5. 冻结的 FPGA 功能回归路径中 SM-05 W8A8 线性投影模块的 ARM/FPGA 边界

SM-05 W8A8 线性投影模块不是纯 FPGA 模块。SM-05 W8A8 线性投影模块分为三个步骤:

1

ARM A53 处理系统把浮点激活量化为 int8,并得到激活 scale。

2

FPGA 可编程逻辑计算 int8 weight x int8 activation 的 int32 点积。

3

ARM A53 处理系统计算 float_output = int32_dot activation_scale weight_scale[row]

FPGA 可编程逻辑中的代码实体名称是 q25rt_i8_matvec_tileq25rt_i8_matvec_tile 只是 SM-05 W8A8 线性投影模块第 2 步的代码实体,不是另一个系统模块。

为了把“FPGA 做了什么”说得准确,可以把一次 SM-05 调用看成下面三段流水线。只有中间的整数点积是冻结 FPGA 回归路径中的可编程逻辑工作;量化、反量化、尺度处理和所有其他系统模块仍由 ARM A53 完成。

sequenceDiagram
  participant A as ARM A53
  participant P as FPGA: q25rt_i8_matvec_tile
  participant D as DDR 权重与激活
  A->>D: 读取浮点激活、W8A8 权重和 scale
  A->>A: 激活量化为 int8
  A->>P: AXI 发送 int8 activation 与权重块
  P->>P: int8 × int8 累加为 int32 dot
  P-->>A: 返回 int32 dot
  A->>A: int32 dot × activation_scale × weight_scale[row]
  A-->>A: 得到 float_output,继续后续模块
流程或关系图。

6. 211 个 tensor index 的固定映射

211 个 tensor index 表示 211 组不同权重,不表示 211 个硬件模块。

tensor indexSM-05 W8A8 线性投影模块的调用角色
0词表输出投影;权重与词元嵌入权重共享,形状为 49152 x 576
1 + 7 * layer + 0layer 层 Query 投影
1 + 7 * layer + 1layer 层 Key 投影
1 + 7 * layer + 2layer 层 Value 投影
1 + 7 * layer + 3layer 层 Attention Output 投影
1 + 7 * layer + 4layer 层 MLP Gate 投影
1 + 7 * layer + 5layer 层 MLP Up 投影
1 + 7 * layer + 6layer 层 MLP Down 投影

layer 的取值为 0..29。因此 30 层乘以每层 7 组权重,再加 1 组词表输出权重,总数为 30 * 7 + 1 = 211

7. LANES16 rows1536 的固定含义

LANES16 rows1536 不是系统模块名称。LANES16 rows1536 是 SM-05 W8A8 线性投影模块中 FPGA 点积代码实体的编译配置:

rows256 LANES8rows1536 LANES8rows1536 LANES16 都是 SM-05 W8A8 线性投影模块的不同硬件配置,不是三个系统模块。

8. 用户关心的历史名称如何映射到固定系统模块

8.1 Attention score/softmax/value-mix

8.2 Attention output projection/residual

Attention Output 投影加 residual 不是独立系统模块。Attention Output 投影加 residual 是以下两个固定系统模块的组合:

1

SM-05 W8A8 线性投影模块执行 Attention Output 投影。

2

SM-10 残差加法模块执行加法。

当前主线在 ARM A53 处理系统执行 SM-05 W8A8 线性投影模块和 SM-10 残差加法模块。冻结的 FPGA 功能回归路径已经通过 SM-05 W8A8 线性投影模块的 FPGA 点积执行 Attention Output 投影,并在 ARM A53 处理系统执行 SM-10 残差加法模块。

历史 m1i_attention_output_projection_residual HLS 工程使用 mixed-GGUF Q5_0 权重。历史 HLS 工程的 576 行 CSim、csynth、C/RTL cosim 已通过,但历史 HLS 工程没有进入当前 W8A8 Vivado 工程,也没有板级运行。历史 HLS 工程是 SM-05 W8A8 线性投影模块和 SM-10 残差加法模块的替代组合实验,不是当前可部署硬件设计。

8.3 完整 MLP

完整 MLP 不是独立系统模块。完整 MLP 是以下固定系统模块的组合:

1

SM-04 均方根归一化模块。

2

SM-05 W8A8 线性投影模块执行 MLP Gate 投影。

3

SM-05 W8A8 线性投影模块执行 MLP Up 投影。

4

SM-11 SiLU 门控激活模块。

5

SM-05 W8A8 线性投影模块执行 MLP Down 投影。

6

SM-10 残差加法模块。

当前主线在 ARM A53 处理系统执行完整 MLP 的全部固定系统模块。冻结的 FPGA 功能回归路径在 FPGA 可编程逻辑执行三次 SM-05 W8A8 线性投影模块的 int8 点积步骤,在 ARM A53 处理系统执行 SM-04 均方根归一化模块、SM-11 SiLU 门控激活模块和 SM-10 残差加法模块。

历史 smollm2_mlp_full_layer HLS 工程使用 Q5_0 Gate/Up 权重和 Q5_K Down 权重。历史 HLS 工程的 CSim、csynth 通过,正式 m_axi C/RTL cosim 没有通过。历史 HLS 工程不是当前 W8A8 硬件设计。

8.4 Final norm/lmhead/top-k

Final norm、lm_head 和 top-k 不是独立系统模块。最终阶段是以下固定系统模块的组合:

1

SM-04 均方根归一化模块执行最终 RMSNorm。

2

SM-05 W8A8 线性投影模块使用 tensor index 0 执行 49152 x 576 词表输出投影。

3

SM-12 词元排序与贪心选择模块执行缩放、top-k 和最大词元选择。

当前主线在 ARM A53 处理系统执行最终阶段的全部固定系统模块。冻结的 FPGA 功能回归路径在 FPGA 可编程逻辑执行词表输出投影的 int8 点积步骤,在 ARM A53 处理系统执行最终 RMSNorm、浮点缩放和 top-k。

历史 smollm2_lm_head_streaming_topk HLS 工程直接处理原始 GGUF Q8_0 权重。历史 HLS 工程不是当前 W8A8 词表输出实现。历史 HLS 工程具有全 49152 行 HLS CSim 和 csynth 证据,但原始时序估算为 25.733 ns,目标为 5 ns,C/RTL cosim、Vivado 和板级运行没有闭环。

9. HLS 与 RTL 的固定术语

HLS 表示 High-Level Synthesis,高层次综合。

本项目用 C/C++ 编写 HLS 源码。Vitis HLS 把 C/C++ HLS 源码生成 RTL。项目报告中的“C/RTL cosim 通过”表示 HLS 生成的 RTL 与 C/C++ 参考模型共同仿真通过,不表示项目手工编写了 Verilog RTL。

HLS 与 RTL 不是最终产物层面的二选一:HLS 的输出也是 RTL。

HLS 的主要优点是开发速度、接口复用和数值参考模型一致性。手工 RTL 的主要优点是能更精细地控制 streaming、片上缓存、定点近似和周期级调度。HLS 不会自动产生更高性能的硬件;性能取决于内存访问、数据复用、流水间隔、并行度和数值格式。

对于 SM-08 注意力概率模块和 SM-09 注意力值聚合模块,优先使用 HLS 固定数值语义和接口。只有在完整 HLS IP、Vivado 实现和板级 profile 证明具体瓶颈后,才考虑把稳定的热点改为手工 RTL。

10. 当前完成状态

10.1 三种完成度必须使用不同分母

不能用一个“已完成模块数”同时回答系统功能、FPGA 设计和正式验收,因为三者的设计范围不同。

统计问题正确分母当前分子准确结论
完整推理需要多少个固定系统模块1313 个已有首通功能实现13 个固定系统模块已经共同完成真实模型的固定四词元首通;这不等于 production runtime 正式验收完成
当前主线计划部署多少种 FPGA 计算 IP00当前主线由 ARM A53 处理系统执行全部 13 个固定系统模块
冻结的 FPGA 功能回归路径计划部署多少种 FPGA 计算 IP11 个已完成功能部署FPGA 范围只有 SM-05 W8A8 线性投影模块的整数点积步骤;一个可复用计算 IP 按顺序处理 211 组权重
冻结的 FPGA 计算 IP 有多少完成功能门禁11SM-05 W8A8 线性投影模块已通过 HLS CSim、HLS csynth、HLS C/RTL cosim、Vivado 实现和真实 ZCU106 JTAG 功能运行
冻结的 FPGA 计算 IP 有多少完成 rows1536 物理 SD 冷启动门禁10LANES16 rows1536 的物理断电、上电、无 JTAG 下载冷启动仍待执行
冻结的 FPGA 计算 IP 有多少完成端到端加速目标10SM-05 W8A8 线性投影模块的 FPGA 路径慢于纯 ARM A53 处理系统,不能声明加速

SM-01 运行时资产加载与校验模块、SM-02 文本编码与解码模块、SM-03 词元嵌入模块、SM-04 均方根归一化模块、SM-06 旋转位置编码模块、SM-07 键值缓存模块、SM-08 注意力概率模块、SM-09 注意力值聚合模块、SM-10 残差加法模块、SM-11 SiLU 门控激活模块、SM-12 词元排序与贪心选择模块和 SM-13 运行时控制与串口协议模块的设计位置就是 ARM A53 处理系统。它们没有 FPGA IP 不是“漏做了 12 个硬件模块”,而是冻结的 FPGA 功能回归路径的明确软硬件分工。

如果以后决定把其中某个固定系统模块移入 FPGA 可编程逻辑,必须为该模块单独建立 HLS CSim、HLS csynth、HLS C/RTL cosim、Vivado 实现、真实板级运行和性能目标六层证据。在作出该决定前,不能把历史 HLS 实验计入冻结的 FPGA 功能回归路径设计分母。

固定系统模块当前功能状态FPGA 硬件状态
SM-01 运行时资产加载与校验模块模型和 tokenizer 的 FatFs 加载、大小和 SHA256 校验已运行ARM A53 处理系统实现
SM-02 文本编码与解码模块固定验收文本的编码、解码和 stream 输出已运行ARM A53 处理系统实现
SM-03 词元嵌入模块真实模型词元嵌入已运行ARM A53 处理系统实现;历史 HLS 子门禁不是当前实现
SM-04 均方根归一化模块30 层和最终归一化已运行ARM A53 处理系统实现;历史 HLS 子门禁不是当前实现
SM-05 W8A8 线性投影模块tensor index 0..210 全部执行,结果与 ARM 参考一致当前唯一完成 Vivado 和真实板级功能验证的 FPGA 计算模块;加速结论失败
SM-06 旋转位置编码模块30 层 Query/Key 已运行ARM A53 处理系统实现
SM-07 键值缓存模块64-token、单请求、F32 Key/Value cache 已运行ARM A53 处理系统实现
SM-08 注意力概率模块30 层 causal attention 已运行ARM A53 处理系统实现;历史 HLS 只有子门禁
SM-09 注意力值聚合模块30 层 context 已运行ARM A53 处理系统实现;历史 HLS 只有子门禁
SM-10 残差加法模块Attention 和 MLP 残差已运行ARM A53 处理系统实现;历史 Q5_0 HLS 组合实验未部署
SM-11 SiLU 门控激活模块30 层 MLP 激活已运行ARM A53 处理系统实现;历史 mixed-GGUF MLP HLS 未闭环
SM-12 词元排序与贪心选择模块top-k 和四词元贪心生成已运行ARM A53 处理系统实现;历史 Q8_0 HLS 实验未闭环
SM-13 运行时控制与串口协议模块30 层、prefill、decode、cached/stream 命令已运行ARM A53 处理系统实现;production runtime 尚未完成

下面的证据阶梯解释“功能完成”和“加速完成”为什么是两回事。前五级一起证明硬件 IP 可以被综合、实现并在真实板卡上正确协同运行;第六级才比较端到端时间,决定能不能说它真的加速了系统。

flowchart TD
  E1[1. HLS CSim<br/>C/C++ 数值模型通过] --> E2[2. HLS csynth<br/>可综合并有资源/时序估计]
  E2 --> E3[3. C/RTL cosim<br/>生成 RTL 与参考模型一致]
  E3 --> E4[4. Vivado 实现<br/>布局布线和时序通过]
  E4 --> E5[5. ZCU106 板级运行<br/>ARM、DDR、AXI、FPGA 协同]
  E5 --> E6[6. 端到端性能目标<br/>必须快于对照实现]
  E5 --> OK[SM-05:功能硬件证据完成]
  E6 --> FAST[才允许声明 FPGA 加速]
  E6 -. 当前未通过:慢于纯 ARM A53 .-> NO[不声明加速]
流程或关系图。

11. SM-05 W8A8 线性投影模块的硬件证据

rows1536 LANES16 配置的 HLS、Vivado 和 JTAG 功能证据已经完成:

因此 SM-05 W8A8 线性投影模块的 FPGA 功能完成,但 FPGA 加速目标失败。rows1536 物理 SD 冷启动仍待板卡恢复后验收。

12. 数值和模型精度边界

12.1 FPGA 点积正确性

SM-05 W8A8 线性投影模块的 HLS CSim 和 C/RTL cosim 对 int8 点积报告 mismatch 0。真实板级运行的 hls_status=0,固定输入的四个输出词元与纯 ARM A53 运行一致。

12.2 ARM A53 与 host 实现一致性

固定 34-token prompt 下,ARM A53 与 portable host C 的 30 个 layer-last 向量、最终归一化向量和 ordered top-k 字节一致,L2 为 0.0

12.3 模型质量评估

当前证据只证明固定 prompt 的 M1i W8A8 top1 和四词元生成。当前证据没有覆盖 perplexity、通用数据集、多 prompt 统计或原 mixed-GGUF 全 logits 接受门禁。

因此可以声明实现一致性,不能声明 W8A8 模型质量已经完成全面评估。

13. 当前正式状态

m1i_w8a8_first_pass_complete=true
production_ps_host_contract_passed=true
a53_production_runtime_contract_passed=false
m1_complete=false
accepted_token_step_golden_complete=false
q25_m1_003_satisfied=false
runtime_completed=false
board_pass_claim_allowed=false
performance_acceleration_claimed=false
physical_sd_cold_boot_rows1536_complete=false

14. 关系问题直接回答

14.1 为什么项目报告会出现 RTL

项目没有为 SM-08 注意力概率模块或 SM-09 注意力值聚合模块手写 Verilog RTL。项目使用 C/C++ 编写 HLS 源码,Vitis HLS 将 HLS 源码生成 RTL,C/RTL cosim 再比较 HLS C 模型与 HLS 生成的 RTL。

因此“代表性 RTL 通过”的完整含义是“代表性输入在 HLS 生成 RTL 的 C/RTL cosim 中通过”,不是“已经完成手写 RTL”,也不是“已经形成可部署 FPGA IP”。

HLS 能减少开发和验证工作,但 HLS 不保证比手写 RTL 更快。SM-08 注意力概率模块和 SM-09 注意力值聚合模块是否高效,主要取决于 DDR 访问、片上 Key/Value 复用、softmax 数值格式、流水间隔和并行度。只有完整 HLS IP 完成 Vivado 实现并得到真实板级 profile 后,才能判断是否需要把具体热点改为手写 RTL。

14.2 如何判断一个 FPGA 硬件模块已经完成

本项目把以下证据层次分开:

1

HLS CSim 通过:只证明 HLS C/C++ 数值模型通过。

2

HLS csynth 通过:只证明 HLS C/C++ 可以综合,并得到估算时序和资源。

3

HLS C/RTL cosim 通过:只证明 HLS 生成 RTL 与 HLS C/C++ 参考模型在测试范围内一致。

4

Vivado 实现通过:证明 IP 能放入目标器件并完成布局布线和实现时序。

5

真实板级运行通过:证明 ARM A53 处理系统、DDR、AXI、FPGA 可编程逻辑和软件协议共同工作。

6

性能目标通过:证明真实端到端运行优于对照实现。

只有 SM-05 W8A8 线性投影模块完成了第 1 至第 5 层证据。SM-05 W8A8 线性投影模块没有完成第 6 层证据,因为真实端到端时间慢于纯 ARM A53 处理系统。

14.3 SM-08 注意力概率模块和 SM-09 注意力值聚合模块是否完成 FPGA 设计

SM-08 注意力概率模块和 SM-09 注意力值聚合模块在当前主线和冻结的 FPGA 功能回归路径中都由 ARM A53 处理系统完整执行。

历史 mixed-GGUF HLS 工程具有局部 HLS CSim、csynth、代表性 C/RTL cosim和 host 全 tile 调度证据,但历史 mixed-GGUF HLS 工程没有形成统一、全头、全 tile、完成 Vivado 实现和板级运行的 FPGA IP。

因此 SM-08 注意力概率模块和 SM-09 注意力值聚合模块的系统功能已完成,FPGA 实现未完成。

14.4 SM-05 W8A8 线性投影模块与 Attention Output 投影加残差的关系

当前主线和冻结的 FPGA 功能回归路径都使用 SM-05 W8A8 线性投影模块执行 Attention Output 投影,随后使用 SM-10 残差加法模块执行残差加法。

两个执行路径都已经真实运行该组合。当前主线的 SM-05 W8A8 线性投影模块和 SM-10 残差加法模块都在 ARM A53 处理系统执行;冻结的 FPGA 功能回归路径把 SM-05 W8A8 线性投影模块的 int8 点积步骤放在 FPGA 可编程逻辑执行,SM-10 残差加法模块仍在 ARM A53 处理系统执行。

历史 Q5_0 Attention Output 投影加残差 HLS 工程完成了 576 行 HLS CSim、csynth 和 C/RTL cosim,但历史 Q5_0 HLS 工程没有进入冻结的 FPGA 功能回归路径的 Vivado 工程和真实板级运行。历史 Q5_0 HLS 工程不是当前主线或冻结的 FPGA 功能回归路径的额外必需模块。

14.5 SM-05 W8A8 线性投影模块与完整 MLP 的关系

当前主线和冻结的 FPGA 功能回归路径都按以下顺序执行完整 MLP:

1

SM-04 均方根归一化模块。

2

SM-05 W8A8 线性投影模块执行 MLP Gate 投影。

3

SM-05 W8A8 线性投影模块执行 MLP Up 投影。

4

SM-11 SiLU 门控激活模块。

5

SM-05 W8A8 线性投影模块执行 MLP Down 投影。

6

SM-10 残差加法模块。

两个执行路径的完整 MLP 都已经真实运行。只有冻结的 FPGA 功能回归路径把三次 SM-05 W8A8 线性投影模块的 int8 点积步骤放在 FPGA 可编程逻辑。

历史 mixed-GGUF 完整 MLP HLS 工程使用 Q5_0 和 Q5_K 权重。历史 mixed-GGUF 完整 MLP HLS 工程的 HLS CSim 和 csynth 通过,正式 m_axi C/RTL cosim 未通过,因此历史 mixed-GGUF 完整 MLP HLS 工程不是已完成可部署硬件。

14.6 tensor index 0..210 是否已经完成

SM-05 W8A8 线性投影模块按顺序处理 tensor index 0..210 的真实板级功能已经完成。

tensor index 0..210 表示 211 组权重。tensor index 0..210 不表示 211 个 FPGA IP。FPGA 可编程逻辑只有一个 SM-05 W8A8 线性投影模块代码实体,SM-13 运行时控制与串口协议模块按照模型执行顺序重复调用 SM-05 W8A8 线性投影模块。

完成 tensor index 0..210 只证明全部线性投影的整数点积进入 FPGA 可编程逻辑。完成 tensor index 0..210 不表示 SM-04 均方根归一化模块、SM-06 旋转位置编码模块、SM-07 键值缓存模块、SM-08 注意力概率模块、SM-09 注意力值聚合模块、SM-10 残差加法模块、SM-11 SiLU 门控激活模块或 SM-12 词元排序与贪心选择模块进入 FPGA 可编程逻辑。

14.7 最终归一化、49152 行词表输出和 top-k 的关系

最终推理阶段按以下顺序执行:

1

SM-04 均方根归一化模块执行最终归一化。

2

SM-05 W8A8 线性投影模块使用 tensor index 0 计算 49152 行词表输出。

3

SM-12 词元排序与贪心选择模块执行逐行浮点缩放、top-k 和最大词元选择。

当前主线和冻结的 FPGA 功能回归路径都已经执行完整最终推理阶段。只有冻结的 FPGA 功能回归路径把 SM-05 W8A8 线性投影模块的 int8 点积步骤放在 FPGA 可编程逻辑。

历史 Q8_0 全词表 HLS 工程是 SM-05 W8A8 线性投影模块和 SM-12 词元排序与贪心选择模块的替代组合实验。历史 Q8_0 全词表 HLS 工程不是当前主线或冻结的 FPGA 功能回归路径还需要串接的系统模块。

14.8 rows1536 LANES16 与 13 个固定系统模块的关系

rows1536 LANES16 只配置 SM-05 W8A8 线性投影模块内部的 FPGA 点积代码实体。

rows1536 LANES16 不改变 13 个固定系统模块的数量,不改变 30 层模型结构,也不把其他固定系统模块移动到 FPGA 可编程逻辑。

rows1536 LANES16 的功能、HLS、Vivado 和 JTAG 诊断运行证据已经通过,但 rows1536 LANES16 的端到端性能慢于纯 ARM A53 处理系统,因此 performance_acceleration_claimed=false

15. 13 个固定系统模块的性能测量与当前 ARM A53 优化

15.1 测量边界

主机测量程序使用真实模型、真实 tokenizer、34 个输入词元和四个输出词元,分别记录预填充与三次逐词元解码。测量结果仍要求精确输出词元 6403,1980,253,655 和文本 Once upon a time

该测量是 WSL/x86 主机热点定位,不能直接替代 ARM A53 时间,也不能形成 FPGA 加速声明。

15.2 当前热点结论

修改前的三次主机样本显示,SM-05 W8A8 线性投影模块的 30 层投影预填充中位数为 403.327790 ms,三次逐词元解码合计中位数为 39.942947 ms。SM-05 W8A8 线性投影模块是可独立测量部分中最大的热点。

最终词表阶段中,SM-05 W8A8 线性投影模块与 SM-12 词元排序与贪心选择模块的联合区间预填充中位数为 3.206646 ms,三次逐词元解码合计中位数为 9.837263 ms。该联合区间不改变 SM-05 W8A8 线性投影模块是首个 ARM A53 优化目标的结论。

15.3 首个 ARM A53 优化候选

SM-05 W8A8 线性投影模块的预填充路径现在先量化全部输入词元,再按权重行优先、输入词元次序执行点积,使同一权重行能够被多个输入词元复用。每个 int8 点积内部的列累加顺序没有改变;逐词元解码路径和其他固定系统模块没有改变。

绑定修改前报告的五次候选样本显示:

因此当前状态是“主机功能和热点改善候选通过、ARM A53 构建通过、真实 ARM A53 性能待验收”。runtime_completed=falseboard_pass_claim_allowed=falseperformance_acceleration_claimed=false 保持不变。

15.4 ARM A53 处理系统 production runtime 的 host 生命周期门禁

production runtime 验收合同仍只使用本文件的固定系统模块:

真实 host C runtime 已完成三类 prompt 的五条路径:完整重算、缓存生成、完整重算 stream、缓存生成 stream 和第二次缓存生成。总计 15 条真实生成路径全部一致;另有 6 类错误命令和 5 类资产失败按合同拒绝。63-token 输入只生成一个词元并以 64-token 上限停止。

因此 production_ps_host_contract_passed=true。该标志只表示 host 层门禁通过;真实 ARM A53 处理系统尚未执行同一完整合同,物理 SD 冷启动也尚未使用最终 promotion artifact 完成,所以 a53_production_runtime_contract_passed=falseruntime_completed=falseboard_pass_claim_allowed=false

15.5 SM-05 W8A8 线性投影模块的四词元候选

SM-05 W8A8 线性投影模块新增了一个默认关闭的四词元寄存器分块候选。该候选只改变多词元预填充的 ARM A53 处理系统点积循环:同一权重向量同时更新四个独立 int32 累加器;每个累加器仍严格按列 0..N-1 累加。单词元 decode、SM-07 键值缓存模块、SM-08 注意力概率模块、SM-09 注意力值聚合模块和 FPGA backend 均未改变。

板卡无关证据为:

因此四词元实现保持 host_candidate_pass_a53_timing_pending,编译开关默认关闭,promote_candidate=false。只有真实 ARM A53 两次缓存生成中位数相对默认 production artifact 提升至少 1.05x 后,才允许重新生成 promotion payload。