update reports

This commit is contained in:
2026-07-15 18:22:17 +08:00
parent 62a4e07037
commit d6873b5aed
16 changed files with 1407 additions and 45 deletions

View File

@@ -20,6 +20,7 @@
\usepackage{multirow}
\usepackage{array}
\usepackage{xcolor}
\usepackage[normalem]{ulem}
% ---- Page style ----
\setlength{\headheight}{14pt}
@@ -63,31 +64,32 @@
\begin{titlepage}
\thispagestyle{empty}
\begin{center}
\vspace*{2cm}
\includegraphics[width=0.45\textwidth]{logo_cicc.png}
\vspace*{30pt}
\vspace{1.5cm}
\includegraphics[width=0.45\textwidth]{logo_cicc.png}
{\LARGE\heiti 系统设计报告}
\vspace{36pt}
\vspace{0.8cm}
{\fontsize{22pt}{28pt}\selectfont\bfseries 第十届}
{\Large\heiti 基于龙芯SoC的后量子密码与矩阵运算加速系统}
\vspace{4pt}
\vspace{2.0cm}
{\fontsize{22pt}{28pt}\selectfont\bfseries 全国大学生集成电路创新创业大赛}
\begin{tabular}{rl}
\textbf{参赛队伍:} & \underline{\hspace{5cm}} \\
\textbf{赛\quad{}题:} & \underline{龙芯中科杯} \\
\textbf{竞赛名称:} & \underline{CICIEC 2026 第十届全国大学生集成电路创新创业大赛} \\
\textbf{所属赛区:} & \underline{\hspace{5cm}} \\
\textbf{提交日期:} & \underline{2026年7月} \\
\textbf{文档版本:} & \underline{\EvidenceRevision{} — \EvidenceDate{}} \\
\end{tabular}
\vfill
\end{center}
\vspace{80pt}
\begin{flushleft}
\fontsize{14pt}{22pt}\selectfont
报告类型:\uline{\hfill 系统设计报告\hfill} \\[18pt]
参赛杯赛:\uline{\hfill 龙芯中科杯\hfill} \\[18pt]
作品名称:\uline{\hfill 基于LoongArch SoC 的后量子密码与矩阵运算加速系统\hfill} \\[18pt]
队伍编号:\uline{\hfill CICC1008439\hfill} \\[18pt]
团队名称:\uline{\hfill 碳基生物\hfill}
\end{flushleft}
\end{titlepage}
% ===========================================================================
@@ -96,6 +98,136 @@
\tableofcontents
\newpage
% ===========================================================================
% CORE HIGHLIGHTS PREVIEW
% ===========================================================================
\section*{作品核心亮点预览}
\addcontentsline{toc}{section}{作品核心亮点预览}
\begin{center}
{\large\heiti 基于OpenLA500的多加速器异构SoC与全参数ML-KEM硬件实现}
\end{center}
\noindent
\colorbox{blue!7}{%
\parbox{\dimexpr\textwidth-2\fboxsep\relax}{%
本作品面向龙芯中科杯矩阵运算与后量子密码任务,在赛事基础SoC之上完成DMA、矩阵乘法、FFT、ML-KEM、跨时钟域互连和批量调度等硬件扩展,并对外部SRAM控制器进行连续突发优化。系统以CPU负责配置与验证、硬件负责搬运与计算为基本分工,实现从算法IP到板级应用的完整数据通路。
}%
}
\begin{center}
\includegraphics[width=0.70\textwidth]{system_arch.png}
{\small 系统总体架构:CPU控制面、DMA数据面与三个计算加速器通过AXI互连协同工作}
\end{center}
\noindent
\begin{minipage}[t]{0.48\textwidth}
{\color{blue!70!black}\heiti 硬件自主的数据搬运与调度}
\small 四通道DMA支持内存到内存、内存到端点和端点到内存传输。矩阵批量序列器将CPU的一次启动扩展为5000组任务的硬件自主执行,双Bank机制重叠ExtRAM加载与乘加计算。
\end{minipage}
\hfill
\begin{minipage}[t]{0.48\textwidth}
{\color{blue!70!black}\heiti Matmul批量流水与在线校验}
\small 4个无符号乘法器配合两级加法树产生66位结果,稳态每周期发射一个矩阵元素。CRC结果FIFO解耦乘加与递归CRC32,快速通道跳过结果写回并在CRC完全排空后置位完成标志。
\end{minipage}
\vspace{0.6em}
\noindent
\begin{minipage}[t]{0.48\textwidth}
{\color{blue!70!black}\heiti 单比特流全参数ML-KEM}
\small 单一硬件实例运行时支持ML-KEM-512、768和1024,以及KeyGen、Encaps和Decaps三种操作。Keccak核跨哈希与采样阶段复用,Decaps重加密复用Encaps数据通路,并实现常量时间隐式拒绝。
\end{minipage}
\hfill
\begin{minipage}[t]{0.48\textwidth}
{\color{blue!70!black}\heiti 存储与多时钟域协同优化}
\small SRAM控制器通过读地址预驱动、读数据寄存和连续写握手,将突发内部吞吐提高至每周期一个32位数据拍。CPU、系统与ML-KEM三个异步时钟域通过全五通道AXI双时钟FIFO安全连接。
\end{minipage}
\vfill
\noindent
\colorbox{gray!12}{%
\parbox{\dimexpr\textwidth-2\fboxsep\relax}{%
\small\textbf{自主设计边界:}OpenLA500处理器、板级SRAM器件及基础外设来自赛事平台;DMA扩展、矩阵乘法与批量序列器、FFT、ML-KEM、跨时钟域桥接以及SRAM控制器的突发流水化改造由本项目完成。
}%
}
\newpage
\section*{关键指标与验证结论}
\begin{center}
\setlength{\tabcolsep}{4pt}
\renewcommand{\arraystretch}{1.25}
\begin{tabular}{>{\centering\arraybackslash}p{0.23\textwidth}>{\centering\arraybackslash}p{0.23\textwidth}>{\centering\arraybackslash}p{0.23\textwidth}>{\centering\arraybackslash}p{0.23\textwidth}}
{\Large\heiti \MatmulFinalMs{} ms} &
{\Large\heiti \FftDmaSpeedup{}$\times$} &
{\Large\heiti 48.95--53.33$\times$} &
{\Large\heiti 0 DSP} \\
Matmul 5000组最终时间 &
FFT DMA相对软件加速 &
ML-KEM DMA相对软件加速 &
全系统DSP使用量 \\
\end{tabular}
\end{center}
\vspace{0.5em}
\noindent{\large\heiti 核心性能结果}
\begin{center}
\small
\setlength{\tabcolsep}{5pt}
\renewcommand{\arraystretch}{1.28}
\begin{tabular}{p{2.4cm}p{7.0cm}p{4.7cm}}
\toprule
项目 & 实测结果 & 结论 \\
\midrule
矩阵乘法 & 最终评测完成5000组计算;运行时间\MatmulFinalMs{} ms & CRC32匹配,得分\MatmulFinalScore{} \\
FFT & DMA模式延迟\FftDmaNs{} ns;实部/虚部最大误差为1/2 & 相对软件加速\FftDmaSpeedup{}$\times$ \\
ML-KEM & 三等级完整往返为52,995/80,643/113,261个CPU周期 & DMA相对软件加速48.95--53.33$\times$ \\
SRAM接口 & 50 MHz、32位,连续突发每周期一个数据拍 & 理论单向带宽200 MB/s \\
\bottomrule
\end{tabular}
\end{center}
\noindent{\large\heiti FPGA实现质量}
\begin{center}
\small
\setlength{\tabcolsep}{5pt}
\renewcommand{\arraystretch}{1.25}
\begin{tabular}{p{3.0cm}p{5.3cm}p{5.8cm}}
\toprule
维度 & 结果 & 工程含义 \\
\midrule
资源 & 55,066 LUT,31,000 FF,29.5 BRAM Tile,0 DSP & LUT 41.16\%,BRAM 8.08\%,保留进一步扩展空间 \\
时钟与时序 & 33.333/50.000/76.923 MHz;88,843个端点零违例 & CPU、系统总线和ML-KEM算法域独立收敛 \\
标准验证 & 9000个主路径KAT与300个隐式拒绝向量通过 & 覆盖三等级、三操作及Decaps拒绝路径 \\
板级验证 & ML-KEM 900次运行零失败;FFT 6次通过;Matmul最终评测满分 & 验证CPU、DMA、CDC、SRAM和加速器端到端协同 \\
\bottomrule
\end{tabular}
\end{center}
\vfill
\noindent
\colorbox{green!8}{%
\parbox{\dimexpr\textwidth-2\fboxsep\relax}{%
\textbf{总体结论:}系统在xc7a200tfbg676-1 FPGA上完成布局布线,以零DSP实现矩阵运算、FFT和全参数ML-KEM硬件加速;功能正确性、跨时钟域可靠性和板级端到端性能均得到验证。
}%
}
\vspace{0.6em}
\begin{flushright}
\small 数据基线:\EvidenceRevision{},\EvidenceDate{}
\end{flushright}
\newpage
% ===========================================================================
% 1. INTRODUCTION
% ===========================================================================
@@ -105,19 +237,19 @@
随着量子计算技术的快速发展,传统公钥密码体系面临严峻挑战。美国国家标准与技术研究院于2024年正式发布的FIPS 203标准确立了ML-KEM作为后量子密钥封装机制的地位,标志着后量子密码从学术研究向工业应用的转折点。与此同时,矩阵乘法作为科学计算、信号处理与机器学习的基础运算,其硬件加速在嵌入式计算场景中具有广泛需求。本届集成电路创新创业大赛龙芯中科杯赛题要求参赛者在OpenLA500处理器平台上,设计并实现包含矩阵乘法加速器与ML-KEM密码IP的完整SoC系统,在资源受限的FPGA器件上同时满足功能正确性与性能要求。
本设计的核心目标是在Xilinx Artix-7 xc7a200tfbg676-1 FPGA器件上构建一个功能完整的异构计算SoC系统,具体包括三项设计内容。第一,设计一个支持4x4无符号矩阵乘法的硬件加速器,不使用DSP资源,完成5000组矩阵计算的批量处理任务,并通过CRC32校验结果正确性。第二,根据FIPS 203标准实现全参数可配置的ML-KEM硬件IP,覆盖ML-KEM-512、ML-KEM-768与ML-KEM-1024三个安全等级,支持密钥生成、封装与解封装全部三种操作。第三,设计通用DMA子系统与批量任务调度器,将多个计算加速器有机集成到统一的AXI总线架构中,实现CPU控制、DMA搬运与加速器计算的流水化协同。
本设计的核心目标是在Xilinx Artix-7 xc7a200tfbg676-1 FPGA器件上构建一个功能完整的异构计算SoC系统,具体包括四项设计内容。第一,设计一个支持4x4无符号矩阵乘法的硬件加速器,不使用DSP资源,完成5000组矩阵计算的批量处理任务,并通过CRC32校验结果正确性。第二,根据FIPS 203标准实现全参数可配置的ML-KEM硬件IP,覆盖ML-KEM-512、ML-KEM-768与ML-KEM-1024三个安全等级,支持密钥生成、封装与解封装全部三种操作。第三,设计通用DMA子系统与批量任务调度器,将多个计算加速器有机集成到统一的AXI总线架构中,实现CPU控制、DMA搬运与加速器计算的流水化协同。第四,在赛事基础SoC提供的外部SRAM控制器上优化AXI突发读写时序,使BaseRAM和ExtRAM能够在连续传输期间以每个系统时钟周期一个32位数据拍的速率工作,降低程序取指与加速器批量搬运共享存储器时的接口开销。
\subsection{设计原则与创新点}
系统设计遵循四条基本原则。第一条原则是模块化分离原则。将矩阵乘法、FFT和ML-KEM三个计算加速器设计为相互独立的AXI外设,各自拥有独立的地址空间、控制寄存器和中断通道,使得每个加速器可单独验证、单独优化,系统集成时仅通过跨时钟域隔离与地址解码完成互连。第二条原则是资源复用原则。ML-KEM内部算法涉及Keccak-f[1600]置换、SHA3/SHAKE哈希族、NTT数论变换、Barrett模乘、CBD中心二项分布采样以及压缩解压缩等多种运算算子。设计中采用单个Keccak核在顶层有限状态机的时间分片调度下被SHA3/SHAKE、SampleNTT和CBD三个消费者分时复用,NTT正变换与逆变换共享同一组蝶形单元流水线,解封装流程中的重加密阶段直接复用封装状态序列。第三条原则是数据搬运与计算解耦原则。通用DMA子系统独立于计算加速器,通过内存到设备、设备到内存以及设备本地端点三种传输模式,将数据搬运从CPU寄存器逐字读写中解放出来,使计算流水线的瓶颈从总线事务转移到算术吞吐率。第四条原则是批量调度与双缓冲原则。矩阵乘法批量序列器通过双Bank乒乓机制,将批量任务调度、数据加载、计算启动与结果写回四个阶段完全流水化,一个Bank执行计算时另一个Bank进行数据加载或结果写回,从而隐藏ExtRAM访问延迟。
系统设计遵循五条基本原则。第一条原则是模块化分离原则。将矩阵乘法、FFT和ML-KEM三个计算加速器设计为相互独立的AXI外设,各自拥有独立的地址空间、控制寄存器和中断通道,使得每个加速器可单独验证、单独优化,系统集成时仅通过跨时钟域隔离与地址解码完成互连。第二条原则是资源复用原则。ML-KEM内部算法涉及Keccak-f[1600]置换、SHA3/SHAKE哈希族、NTT数论变换、Barrett模乘、CBD中心二项分布采样以及压缩解压缩等多种运算算子。设计中采用单个Keccak核在顶层有限状态机的时间分片调度下被SHA3/SHAKE、SampleNTT和CBD三个消费者分时复用,NTT正变换与逆变换共享同一组蝶形单元流水线,解封装流程中的重加密阶段直接复用封装状态序列。第三条原则是数据搬运与计算解耦原则。通用DMA子系统独立于计算加速器,通过内存到设备、设备到内存以及设备本地端点三种传输模式,将数据搬运从CPU寄存器逐字读写中解放出来,使计算流水线的瓶颈从总线事务转移到算术吞吐率。第四条原则是批量调度与双缓冲原则。矩阵乘法批量序列器通过双Bank乒乓机制,将批量任务调度、数据加载、计算启动与结果写回四个阶段完全流水化,一个Bank执行计算时另一个Bank进行数据加载或结果写回,从而隐藏ExtRAM访问延迟。第五条原则是存储接口节拍匹配原则。外部异步SRAM控制器在满足地址建立与数据保持时间的前提下,将AXI地址、SRAM访问和AXI响应组织为连续流水,使32位AXI数据拍与50 MHz系统时钟逐拍对应,避免控制状态机在突发数据拍之间引入结构性空闲周期。
本设计的主要创新点体现在三个方面。首先,提出了一套高效的跨时钟域互连方案,在CPU时钟域、系统总线时钟域和ML-KEM算法时钟域之间采用全五通道AXI双时钟FIFO进行时钟域隔离,同时配合严格的异步复位释放链和中断同步器,在保持各时钟域独立约束的前提下保证了数据与控制信号的可靠传递。其次,针对竞争评分机制对批量处理延迟的极致要求,设计了快速通道模式,在保证CRC32增量计算正确性的前提下跳过每组结果的逐字写回,将批量矩阵乘法的端到端延迟推进到毫秒量级。最后,ML-KEM解封装中的隐式拒绝路径采用了常量时间比较策略,整个重加密密文与输入密文的逐字节比对不进行提前退出,从根本上杜绝了时序侧信道信息泄露,这是后量子密码实现中至关重要的安全设计考量。
本设计的主要创新点体现在四个方面。首先,提出了一套高效的跨时钟域互连方案,在CPU时钟域、系统总线时钟域和ML-KEM算法时钟域之间采用全五通道AXI双时钟FIFO进行时钟域隔离,同时配合严格的异步复位释放链和中断同步器,在保持各时钟域独立约束的前提下保证了数据与控制信号的可靠传递。其次,对赛事基础平台的外部SRAM控制器进行突发访问流水化改造,通过读地址预驱动、读数据寄存、连续写握手和跨突发无空闲衔接,提高了CPU与DMA共享存储器的有效带宽。再次,针对竞争评分机制对批量处理延迟的极致要求,设计了快速通道模式,在保证CRC32增量计算正确性的前提下跳过每组结果的逐字写回,将批量矩阵乘法的端到端延迟推进到毫秒量级。最后,ML-KEM解封装中的隐式拒绝路径采用了常量时间比较策略,整个重加密密文与输入密文的逐字节比对不进行提前退出,从根本上杜绝了时序侧信道信息泄露,这是后量子密码实现中至关重要的安全设计考量。
\subsection{代码规模与开发环境}
本设计的基础SoC平台来自龙芯中科提供的竞赛发布包,其核心处理器为OpenLA500。OpenLA500是一款实现了龙芯架构32位精简版指令集(LoongArch32R)的处理器核,采用单发射五级流水线架构,分为取指、译码、执行、访存和写回五个流水级。处理器核内置两路组相联的指令和数据Cache、32项TLB以及简易分支预测器,对外通过标准AXI接口与系统总线互连。该处理器已在0.13微米工艺下完成流片验证,实测频率100 MHz时的Dhrystone分数为0.78 DMIPS/MHz,CoreMark分数为2.75 CoreMark/MHz。在软件生态方面,U-Boot、Linux 5.14、UCore和RT-Thread等常用系统软件已完成对该处理器的适配。
本设计的基础SoC平台来自龙芯中科提供的竞赛发布包,其核心处理器为OpenLA500。OpenLA500是一款实现了龙芯架构32位精简版指令集(LoongArch32R)的处理器核,采用单发射五级流水线架构,分为取指、译码、执行、访存和写回五个流水级。处理器核内置两路组相联的指令和数据Cache、32项TLB以及简易分支预测器,对外通过标准AXI接口与系统总线互连。
系统RTL代码采用SystemVerilog编写,覆盖SoC顶层集成、三个计算加速器及其子模块、DMA子系统、跨时钟域桥接模块以及相关的仿真测试平台。软件部分包括运行于OpenLA500 CPU上的C语言驱动程序和测试程序,涵盖矩阵乘法评测、FFT功能验证以及ML-KEM全参数系统级诊断测试。FPGA综合与布局布线使用Xilinx Vivado 2019.2工具链完成,目标器件为xc7a200tfbg676-1。RTL仿真采用Xilinx XSIM进行波形验证与定时仿真,软件交叉编译使用龙芯GCC工具链(loongarch32r-linux-gnusf-gcc 8.3)生成MIPS32可执行文件。RTL静态检查通过开源lint工具完成。
系统RTL代码采用Verilog与SystemVerilog编写,覆盖SoC顶层集成、三个计算加速器及其子模块、DMA子系统、跨时钟域桥接模块、外部SRAM控制器优化以及相关的仿真测试平台。软件部分包括运行于OpenLA500 CPU上的C语言驱动程序和测试程序,涵盖矩阵乘法评测、FFT功能验证以及ML-KEM全参数系统级诊断测试。FPGA综合与布局布线使用Xilinx Vivado 2019.2工具链完成,目标器件为xc7a200tfbg676-1。RTL功能仿真采用Xilinx XSIM进行结果比对与波形验证,软件交叉编译使用龙芯GCC工具链(loongarch32r-linux-gnusf-gcc 8.3)生成LoongArch32R裸机可执行文件。
% ===========================================================================
@@ -205,7 +337,7 @@ ML-KEM到CPU的中断信号属于单比特状态信号,从ML-KEM算法时钟
这种分层功能划分使系统行为在验证时具有良好的可观测性与可调试性。任何一个加速器的功能正确性可以通过软件层切换至寄存器逐字读写模式进行独立步进验证,然后再通过DMA批量模式验证完整流水线的高性能运行。ML-KEM的功能验证在三种数据传输路径下分别进行了测试:纯软件参考模型路径用于确认算法逻辑正确性,CPU寄存器逐字节加载路径用于验证AXI从设备接口与跨时钟域的数据通路完整性,DMA批量窗口路径用于验证端到端系统级数据流与性能。
矩阵乘法评测程序在功能上进一步体现了软硬件协作的设计思想。CPU负责配置序列器的源基地址、目标基地址、任务组数以及跨步参数,然后启动序列器。序列器作为纯硬件模块接管后续的全部5000组数据处理:逐一申请DMA通道完成源矩阵从ExtRAM到加速器Bank缓冲区的加载,触发计算,等待完成脉冲,申请DMA通道完成结果矩阵从加速器Bank缓冲区到ExtRAM的写回,并以增量方式实时更新CRC32校验值。CPU在所有组任务完成信号触发后,仅需从加速器的CRC32寄存器读取最终校验值并通过串口输出,数据的完整搬运与计算路径完全由硬件流水线独立执行。这种软件配置加硬件执行的划分模式最大化地降低了对CPU吞吐能力的依赖,使性能瓶颈从CPU的寄存器访问延迟转移到硬件加速器与DMA之间的数据搬运吞吐率。
矩阵乘法评测程序在功能上进一步体现了软硬件协作的设计思想。CPU负责配置序列器的源基地址、目标基地址、任务组数以及跨步参数,然后启动序列器。序列器作为纯硬件模块接管后续的全部5000组数据处理:逐一申请DMA通道完成源矩阵从ExtRAM到加速器Bank缓冲区的加载,触发计算并等待完成脉冲。标准写回模式随后申请DMA通道,将结果矩阵从加速器Bank缓冲区写回ExtRAM;官方评测采用的快速通道模式跳过该写回阶段,但矩阵核心仍按照每个66位结果元素的标准字节序增量更新CRC32。CPU在全部任务完成后读取CRC32寄存器并通过串口输出。因而,当前评测路径由源数据搬运、硬件计算和片上CRC32累加组成,ExtRAM结果区在快速通道模式下不会被更新。这种软件配置加硬件执行的划分模式最大化地降低了对CPU吞吐能力的依赖,使性能瓶颈从CPU的寄存器访问延迟转移到硬件加速器与DMA之间的数据搬运吞吐率。
% ===========================================================================
@@ -228,6 +360,17 @@ DMA还提供外部请求接口,用于矩阵批量序列器直接提交DMA传
\label{fig:dma_subsystem}
\end{figure}
\subsection{外部SRAM控制器优化}
\label{sec:sram_controller}
系统沿用赛事基础SoC提供的AXI到异步SRAM适配器,并针对连续突发访问重新设计其关键状态转换与数据保持路径。优化对象不是SRAM器件本身,而是AXI读写通道与BaseRAM、ExtRAM物理接口之间的控制逻辑。控制器仍保持32位数据宽度并支持FIXED、INCR和WRAP三类AXI突发,所有访问均在50 MHz系统时钟域内完成。
原始读通道在相邻数据拍之间交替进入数据响应状态和地址准备状态,即使AXI主设备始终保持\texttt{RREADY},每个数据拍后仍会产生一个固定空闲周期。优化后的快速读模式在返回当前\texttt{R}通道数据时预先驱动下一拍SRAM地址,并在当前数据完成握手的时钟沿将下一拍数据锁存到读数据寄存器。该寄存器将异步SRAM数据总线与AXI\texttt{RVALID/RREADY}握手解耦:当主设备施加反压时,\texttt{RDATA}和\texttt{RVALID}保持稳定;当主设备连续接收时,突发内部可实现每周期返回一个32位数据拍。最后一个\texttt{R}数据拍完成时,控制器还能够直接接受下一条\texttt{AR}请求并启动其地址阶段,消除了相邻读突发之间必须返回空闲状态的间隔。
写通道的优化移除了连续写数据拍之间的\texttt{WRITE\_NOP}状态。当\texttt{WVALID}连续有效时,控制器保持\texttt{WREADY}并在每个系统时钟周期更新地址、字节使能与写数据,从而由隔拍写入改为逐拍写入。地址生成逻辑使用当前地址、固定字长增量和突发边界掩码统一处理三类突发;计数器扩展为9位,以正确表达AXI4最长256拍突发的完成条件。
BaseRAM与ExtRAM的选择位由地址位22决定。优化后该选择不再直接依赖组合地址输出,而是在接收\texttt{AR}或\texttt{AW}时锁存为独立的Bank状态,并随整个事务保持不变,避免流水地址切换期间片选和读数据多路选择发生瞬态变化。在无AXI反压的理想条件下,连续读写的接口峰值带宽由原先约每两周期一个32位数据拍提高至每周期一个数据拍;在50 MHz系统时钟下,对应的理论单向带宽为200 MB/s。该数值是接口节拍上限,实际端到端性能仍受到总线仲裁、突发启动、DMA调度和计算模块反压的共同影响。
\subsection{矩阵乘法加速器设计}
矩阵乘法加速器是本系统中逻辑结构最为紧凑的计算模块。其核心功能是计算两个4x4无符号32位整数矩阵的乘积,每个输出元素为四个32位乘积累加结果,总宽度66位。加速器内部采用双Bank结构,Bank 0和Bank 1各包含一套完整的16元素A矩阵、16元素B矩阵以及48字(16元素乘以3字每元素)C结果矩阵的存储空间。双Bank设计使得批量序列器可以实现在一个Bank执行矩阵乘法计算的同时,另一个Bank通过端点接口接收下一组矩阵数据或写出上一组计算结果,从而实现计算与数据搬运的时间重叠。
@@ -253,7 +396,18 @@ DMA还提供外部请求接口,用于矩阵批量序列器直接提交DMA传
两个Bank的流水可以在时间上重叠:当Bank 0执行计算时,DMA可以同时为Bank 1执行加载或存储操作。这种重叠利用了矩阵乘法加速器的双Bank独立性与DMA引擎的独立工作能力,使得外部存储器的访问延迟被计算时间覆盖。序列器使用一个深度为二的完成队列跟踪Bank计算完成的先后顺序,确保存储操作在正确的Bank上执行。
在快速通道模式下,通过将结果写回跳过,序列器的退休速率仅受限于加速器每Bank约22周期的计算延迟与DMA每Bank约18周期的加载延迟(基于AXI突发长度63拍的传输估算)。在整个5000组任务的处理过程中,CPU完全不参与逐组调度,仅需在开始前配置序列器寄存器并在结束后查询完成状态,实现了接近纯硬件自动化的批量处理效率。
图\ref{fig:matmul_gantt}以快速通道的前四组任务和末尾收尾阶段为例,给出了当前实现的数据流甘特图。图中阶段宽度用于表达先后依赖和流水重叠关系,不代表严格的周期比例。CDMA读侧仍使用单一AXI读数据通道,硬件能够保留一个活动突发和一个预取请求,以减少相邻突发之间的地址握手空隙,但两组读数据仍按请求顺序返回。双Bank的作用是在共享读通道装载下一组A/B矩阵时,让单一乘加流水线处理已经就绪的另一Bank,而不是复制两套DMA或乘加数据通路。
每个66位C元素在写入对应Bank结果缓冲区的同时进入CRC结果FIFO。递归CRC32数据通路将一个元素表示成两个6字节更新步骤,因此消费速率低于乘加流水线的峰值发射速率;FIFO吸收短期速率差,在占用量接近阈值时对新结果发射施加反压。快速通道在矩阵计算完成时退休该组任务,不发起192字节结果写回,但批量序列器只有在最后一组退休且CRC FIFO与递归更新状态均为空闲后才置位最终完成标志。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.98\textwidth]{matmul_dataflow_gantt.png}
\caption{Matmul快速通道数据流甘特图}
\label{fig:matmul_gantt}
\end{figure}
在快速通道模式下,结果写回不再占用数据通路。稳态吞吐率由128字节源数据读取、单一乘加流水线以及递归CRC32消费速率共同决定:源数据读取包含32个32位数据拍,乘加流水线在无反压时可连续发射16个结果元素,而CRC32以每个元素两个更新周期的速率消费FIFO数据。当CRC积压达到阈值时,CRC结果FIFO会暂停新的乘加发射,因此不能将批量吞吐率简单等同于单个Bank的计算延迟。在整个5000组任务的处理过程中,CPU不参与逐组调度,仅需在开始前配置序列器寄存器并在结束后查询完成状态,实现了硬件自主的批量处理流程。
\subsection{FFT加速器设计}
@@ -293,40 +447,57 @@ ML-KEM与FFT共享同一从端口的设计节省了总线互连矩阵的端口
\subsection{分层验证策略}
系统的验证工作采用分层递进策略,将验证对象从底层叶模块到顶层系统划分为四个层级,每一层级解决不同粒度的功能正确性问题。第一层级为叶模块级验证。针对每个独立的运算算子,使用定向测试与边界条件覆盖相结合的测试平台,在独立环境下验证其算术正确性与接口协议合规性。Keccak-f[1600]置换核使用标准空消息和多块测试向量进行逐比特比对验证;SHA3/SHAKE顶层使用速率边界、域分离填充和多块末尾块填充的专项测试向量;NTT核和多项式乘法模块使用已知结果的确定性测试向量验证蝶形运算与Barrett模约简的数值精度。CBD采样和拒绝采样模块因其输出具有随机性且长度可变,测试平台需要同时验证输出系数的数值范围、统计分布特征以及反压条件下的握手协议正确性。
系统的验证工作采用分层递进策略,将验证对象从底层叶模块到顶层系统划分为四个层级,每一层级解决不同粒度的功能正确性问题。
第二层级为IP集成级验证。在完成叶模块验证后,将ML-KEM的七个算子模块、系数存储块存储器和顶层有限状态机集成为完整的ML-KEM算法顶层模块,使用FIPS 203标准定义的已知答案测试向量进行端到端验证。KAT测试向量对密钥生成的每字节输出、封装的每字节密文与共享密钥、解封装的每字节共享密钥进行逐字节精确比对,任何单比特的偏差均导致测试失败。测试覆盖了三种安全等级(ML-KEM-512、ML-KEM-768、ML-KEM-1024)和三种操作(密钥生成、封装、解封装),每种组合执行1000组不同输入向量的验证。
第一层级为叶模块级验证,覆盖全部自研硬件模块中的独立运算单元和控制单元。对于ML-KEM算法子系统,Keccak-f[1600]置换核使用标准空消息和多块测试向量进行逐比特比对验证;SHA3/SHAKE顶层使用速率边界、域分离填充和多块末尾块填充的专项测试向量;NTT核和多项式乘法模块使用已知结果的确定性测试向量,验证蝶形运算与Barrett模约简的数值精度;CBD采样和拒绝采样模块因其输出具有随机性且长度可变,测试平台同时验证输出系数的数值范围、统计分布特征以及反压条件下的握手协议正确性。对于FFT加速器,叶模块级验证覆盖了蝶形运算单元、复数乘法器、延迟缓冲区和旋转因子只读存储器,重点验证蝶形运算中的算术右移舍入策略在各级联条件下的累积误差是否处于可控范围内,以及复数乘法器在四种乘积组合下的符号正确性。对于矩阵乘法加速器,叶模块级验证覆盖了流水化乘法器的三级流水寄存器行为、乘积结果的64位宽度正确性以及加法树归约路径的进位链完整性;CRC32计算单元使用标准IEEE 802.3已知答案测试向量独立验证其增量更新逻辑。对于DMA子系统,叶模块级验证覆盖了同步先进先出缓冲队列在满空边界条件下的读写行为、轮转仲裁器在多通道并发请求时的公平性以及AXI突发传输引擎在不同传输长度和地址对齐条件下的时序正确性。
第三层级为SoC集成级验证。将矩阵乘法加速器、FFT加速器、ML-KEM加速器和DMA子系统全部集成到系统顶层模块中,重点验证总线互连矩阵的地址解码正确性、多主设备并发访问的仲裁公平性、跨时钟域数据通路的传输可靠性、复位释放前后各AXI通道的事务清空情况以及中断聚合与响应的时序正确性。该层级通过短时长的XSIM系统级仿真完成,利用波形窗口观察关键时序节点,确认复位释放后CPU第一条取指事务的正常发起以及各加速器AXI接口的初始状态为空闲。
第二层级为IP集成级验证。ML-KEM方面,将七个算子模块、系数存储块存储器和顶层有限状态机集成为完整的算法顶层模块,使用FIPS 203标准定义的已知答案测试向量进行端到端验证,对密钥生成、封装和解封装的每字节输出进行逐字节精确比对,任何单比特的偏差均导致测试失败,测试覆盖了三种安全等级和三种操作的各1000组不同输入向量。FFT方面,将SDF流水线五级单元与控制状态机集成为完整的1024点FFT加速器,使用多组已知频率成分的合成信号作为输入,验证输出频谱的幅度正确性和位逆序到自然顺序的地址转换正确性,并以双精度浮点软件参考模型为基准,在1024个频点上逐一比较实数部和虚数部的误差。矩阵乘法方面,将双Bank数据缓冲区、四乘法器计算核心、CRC32增量更新逻辑和AXI从设备接口集成为完整的矩阵乘法加速器,使用多组已知乘积的确定性矩阵作为输入,覆盖全零边界用例、单位矩阵、满秩随机矩阵和不同矩阵维度组合,验证输出元素的66位结果与各维度的按字拆分格式的正确性。DMA方面,将四通道寄存器组、轮转仲裁器、内存到内存传输引擎和端点状态机集成为完整的DMA子系统,分别验证三种传输模式在随机地址与随机长度下的数据搬运完整性,以及端点模式中Bank编号与字偏移的地址计算正确性。
第四层级为板级系统验证。将经过综合、布局布线生成的比特流下载到FPGA开发板,运行CPU上的测试程序,在真实的硬件环境中验证完整的软硬件协同工作流程。板级验证覆盖了矩阵乘法评测、FFT功能正确性与性能对比、ML-KEM全参数全操作的三路径系统诊断测试,所有测试通过开发板串口输出结构化的测试结果日志。
第三层级为SoC集成级验证。将矩阵乘法加速器、FFT加速器、ML-KEM加速器和DMA子系统全部集成到系统顶层模块中,重点验证总线互连矩阵的地址解码正确性、多主设备并发访问的仲裁公平性、跨时钟域数据通路的传输可靠性、复位释放前后各AXI通道的事务清空情况以及中断聚合与响应的时序正确性。该层级通过短时长的XSIM系统级仿真完成,利用波形窗口观察关键时序节点,确认复位释放后CPU第一条取指事务的正常发起以及各加速器AXI接口的初始状态为空闲。该过程同时检查了CPU经SRAM控制器访问BaseRAM的取指通路。
第四层级为板级系统验证。将经过综合、布局布线生成的比特流下载到FPGA开发板,运行CPU上的测试程序,在真实的硬件环境中验证完整的软硬件协同工作流程。板级验证覆盖了矩阵乘法评测、FFT功能正确性与性能对比、ML-KEM全参数全操作的三路径系统诊断测试,所有测试通过开发板串口输出结构化的测试结果日志。这些测试均依赖BaseRAM执行程序并通过ExtRAM或加速器窗口搬运批量数据,因而也对优化后SRAM控制器的连续读写、Bank选择和长时间运行稳定性形成了端到端覆盖。
\subsection{验证工具链与环境}
RTL仿真使用Xilinx XSIM作为仿真引擎,通过Tcl脚本管理仿真流程。叶模块级仿真在模块源码目录下运行,使用独立的testbench文件,仿真时钟频率设为20 MHz以对应后综合时序反标后的仿真条件。SoC集成级仿真在系统顶层目录下运行,仿真时钟直接使用PLL产生的三个时钟域频率。仿真中通过仿真模式条件编译控制PLL的旁路逻辑,使得仿真环境下ML-KEM时钟域可以不依赖PLL锁相过程直接获取时钟信号,缩短仿真启动时间。仿真复位窗口的波形数据通过VCD格式导出,用于精确观测复位释放时序和验证复位释放前AXI通道上不存在未完成事务。
RTL仿真使用Xilinx XSIM作为仿真引擎,通过Tcl脚本管理仿真流程。叶模块级仿真在模块源码目录下运行,使用独立的testbench文件;ML-KEM顶层KAT仿真的测试时钟为20 MHz,周期统计据此换算为仿真时间。SoC集成级仿真在系统顶层目录下运行,使用仿真时钟模型产生各时钟域信号。仿真中通过条件编译旁路真实PLL锁相过程,以缩短仿真启动时间。复位窗口的波形数据通过VCD格式导出,用于观测复位释放时序和验证复位释放前AXI通道上不存在未完成事务。上述测试属于RTL功能仿真,不包含门级延迟或SDF反标。
FPGA综合与实现使用Vivado 2019.2完整流程。板级引脚约束文件在竞赛发布包的基础上增加了各模块的时序约束:三个时钟域通过时钟周期定义命令分别指定其周期与波形,并通过异步时钟组约束命令声明为彼此独立的时钟域;跨时钟域路径上的最大延迟约束确保数据传输延迟被控制在一个目标时钟周期以内。输入输出延迟约束覆盖了QSPI Flash、UART和DVI接口。Vivado工具产生的综合后网表被用于运行后综合时序仿真,以验证在接近实际硬件延迟条件下的功能正确性。
FPGA综合与实现使用Vivado 2019.2完整流程。时序约束为CPU、系统总线和ML-KEM三个生成时钟分别定义周期与波形,并将三者声明为异步时钟组;跨域功能正确性由AXI双时钟FIFO、单比特同步器和复位同步器的结构保证,而不是由跨域最大延迟约束保证。当前输入输出延迟约束覆盖BaseRAM和ExtRAM的数据、地址与控制信号,尚未对QSPI Flash、UART、DVI等全部板级接口建立完整的外部时序模型,因此Vivado方法学报告仍包含缺失输入输出延迟的警告。本文的静态时序结论仅适用于已约束的内部同步路径与SRAM接口,不将未完整约束的外部接口计入时序收敛结论。
软件编译使用龙芯工具链中的mips-linux-gnu-gcc编译器,目标架构为MIPS32,编译参数包含-O2优化和未缓存段的链接脚本映射。测试程序通过将目标可执行文件转换为二进制格式后写入BaseRAM仿真模型或FPGA板上的BaseRAM存储器。板级调试过程中利用串口输出作为主要的信息反馈通道,所有测试程序的判定结果、性能指标和错误计数均通过115200波特率的串口输出,并由上位机脚本进行解析和记录。
软件编译使用龙芯LoongArch32R交叉工具链中的loongarch32r-linux-gnusf-gcc 8.3编译器,目标指令集为LoongArch32R。各测试程序由其Makefile分别选择-O2或-O3优化,并采用静态裸机链接、无标准启动文件和未缓存地址映射。生成的二进制文件写入BaseRAM仿真模型或开发板BaseRAM。板级调试过程中利用串口输出作为主要的信息反馈通道,所有测试程序的判定结果、性能指标和错误计数均通过115200波特率的串口输出,并由上位机脚本进行解析和记录。
\subsection{验证覆盖范围}
本项目验证覆盖范围的完整程度由表\ref{tab:verification}总结。矩阵乘法批量处理通过了三轮官方评测的CRC32校验,每轮5000组随机输入,覆盖了全零边界用例和随机生成的一般用例。ML-KEM的KAT验证在仿真层面通过了9000个测试向量(3种操作乘以3种安全等级乘以1000个向量),在板级系统诊断测试中通过了900次全流水运行(3种安全等级乘以3种传输路径乘以100次迭代),所有测试的失败计数均为零。
本项目验证覆盖范围的完整程度由表\ref{tab:verification}总结。矩阵乘法批量处理通过了三轮官方板级评测的CRC32校验,每轮使用独立随机种子生成5000组输入。ML-KEM算法子系统的已知答案测试在仿真层面通过了9000个主路径测试向量(三种操作乘以三种安全等级乘以1000个向量),并通过了300个Decaps隐式拒绝路径向量(三种安全等级各100个向量);在板级系统诊断测试中通过了900次全流水运行(三种安全等级乘以三种传输路径乘以100次迭代),所有测试的失败计数均为零。FFT加速器在板级上通过了两类数据传输模式(CPU逐字读写和DMA批量传输)各三次重复运行的功能正确性和数值精度验证,1024个频点的实数部与虚数部最大误差均低于预定阈值。DMA子系统在板级系统诊断测试中作为ML-KEM和FFT的数据搬运通路被间接验证了三种传输模式的完整性,同时其四通道轮转调度和端点传输的正确性通过矩阵批量序列器的5000组流水任务得到了充分覆盖。上述板级负载均运行在优化后的SRAM控制器之上,覆盖CPU从BaseRAM持续取指以及DMA从ExtRAM执行长突发读取的实际使用场景。
\begin{table}[H]
\centering
\setlength{\tabcolsep}{5pt}
\caption{功能验证覆盖摘要}
\label{tab:verification}
\begin{tabular}{p{3.8cm}ccc}
\begin{tabular}{p{4.5cm}ccc}
\toprule
验证项 & 测试规模 & 通过/总计 & 结果 \\
\midrule
矩阵乘法CRC32(仿真) & 3轮 × 5000组 & 3 / 3 & 通过 \\
矩阵乘法叶模块(乘法器、CRC32) & 确定性向量 & — & 通过 \\
FFT叶模块(蝶形单元、复数乘法器) & 定向测试 & — & 通过 \\
DMA叶模块(FIFO、仲裁器、引擎) & 定向测试 & — & 通过 \\
ML-KEM叶模块(Keccak、NTT、采样等) & 标准测试向量 & — & 通过 \\
\midrule
矩阵乘法IP集成(仿真) & 多组确定矩阵 & — & 通过 \\
FFT IP集成(仿真) & 合成测试信号 & — & 通过 \\
DMA IP集成(仿真) & 随机地址/长度 & — & 通过 \\
ML-KEM KAT(仿真) & 9组 × 1000向量 & 9 / 9 & 通过 \\
ML-KEM 系统诊断(板级) & 9组 × 100次迭代 & 9 / 9 & 通过 \\
ML-KEM隐式拒绝(仿真) & 3组 × 100向量 & 3 / 3 & 通过 \\
\midrule
矩阵乘法CRC32(官方板级评测) & 3轮 × 5000组 & 3 / 3 & 通过 \\
FFT功能验证(板级) & 3次 × 2模式 & 6 / 6 & 通过 \\
ML-KEM 系统诊断(板级) & 9组 × 100次迭代 & 9 / 9 & 通过 \\
DMA搬运完整性(板级,间接覆盖) & 5000组流水任务 & — & 通过 \\
SRAM连续突发读写(板级,间接覆盖) & Matmul、FFT、ML-KEM负载 & — & 通过 \\
\midrule
复位释放前事务检查(仿真) & — & — & 无违规 \\
DSP资源检查(综合) & — & 0个 / 期望0个 & 通过 \\
DSP资源检查(综合后) & — & 0个 / 期望0个 & 通过 \\
时序收敛(布局布线后) & 88,843个端点 & — & 零违例 \\
\bottomrule
\end{tabular}
\end{table}
@@ -388,9 +559,11 @@ Vivado静态时序分析报告的完整路径覆盖了88,843个时序端点,
\subsection{存储子系统}
系统的外部存储子系统由两块板载SRAM芯片构成,每块容量为4 MB,通过统一的SRAM控制器进行访问。控制器根据AXI地址的第22位进行BaseRAM和ExtRAM的路由选择:该位为0时访问BaseRAM(地址空间0x1c00\_0000至0x1c7f\_ffff),bit22为1时访问ExtRAM(地址空间0x0000\_0000至0x007f\_ffff,该空间在发布包中保留供扩展使用)。外部SRAM芯片的最小读写周期为10 ns,因此控制器时钟频率被限制在50 MHz以内,与系统时钟域的50 MHz频率天然匹配。
系统的外部存储子系统由两块板载SRAM芯片构成,每块容量为4 MB,通过统一的SRAM控制器进行访问。AXI总线为两块存储器分配连续的8 MB物理窗口,控制器根据AXI地址的第22位进行BaseRAM和ExtRAM的路由选择:bit22为0时访问BaseRAM,对应0x1c00\_0000至0x1c3f\_ffff;bit22为1时访问ExtRAM,对应0x1c40\_0000至0x1c7f\_ffff。两块SRAM内部均使用地址位[21:2]形成20位字地址。外部SRAM芯片的最小读写周期为10 ns,因此控制器时钟频率被限制在50 MHz以内,与系统时钟域的50 MHz频率天然匹配。
在竞赛评测场景中,BaseRAM用于存放用户程序的指令和数据,ExtRAM用于存放源矩阵数据和结果矩阵数据。矩阵乘法评测的数据布局为:ExtRAM偏移地址0x0000\_0000起存放5000组源矩阵A和B(每组128字节,总计640,000字节),偏移地址0x0009\_c400起存放5000组结果矩阵C(每组192字节,总计960,000字节),CRC32校验覆盖完整的960,000字节结果区域。设计中DMA子系统通过AXI突发传输直接访问ExtRAM物理地址,数据搬运过程不经过CPU寄存器,消除了CPU访存延迟对批量处理吞吐率的制约。
控制器采用第\ref{sec:sram_controller}节所述的连续突发优化。读方向通过地址阶段与数据响应阶段重叠,在当前数据拍被AXI主设备接收的同时准备下一拍SRAM数据;写方向则在\texttt{WVALID/WREADY}持续握手时逐周期推进写地址。由于系统时钟周期为20 ns,每一拍仍为异步SRAM保留了一个完整时钟周期的地址建立和数据稳定窗口。读数据寄存器负责在AXI反压期间保持响应不变,事务级Bank寄存器负责保证BaseRAM与ExtRAM片选在整个突发期间稳定。该实现兼顾了外部器件时序要求和AXI连续传输吞吐率。
在竞赛评测场景中,BaseRAM用于存放用户程序的指令和数据,ExtRAM用于存放源矩阵数据。标准数据布局在ExtRAM偏移0x0000\_0000处存放5000组源矩阵A和B(每组128字节,总计640,000字节),并为偏移0x0009\_c400处的5000组结果矩阵C保留960,000字节空间。标准写回模式会填充该结果区;当前官方评测使用快速通道模式,跳过结果写回,矩阵核心直接按照与该960,000字节结果序列相同的字节顺序累计CRC32。因此评测校验覆盖的是全部计算结果的逻辑字节序列,而不是快速模式下ExtRAM结果区的实际内容。DMA读取ExtRAM源数据的过程不经过CPU寄存器,消除了CPU访存延迟对批量处理吞吐率的制约。
时序收敛的关键设计因素包括三个方面。第一,ML-KEM算法核心中使用了大量的流水线寄存器来切割长组合路径。Keccak-f[1600]的每一轮置换内部已经按照标准结构划分为theta、rho、pi、chi和iota五个子步骤,每个子步骤之间通过寄存器隔离,保证了单轮内的最大逻辑级数可控。Barrett模乘器内部在乘法、常量乘法、比较和减法每一个阶段之间都插入了流水线寄存器。NTT蝶形单元同样在输入读取、蝶形运算和写回控制之间加入了多级流水。第二,跨时钟域路径被声明为异步时钟组,不进行同步时序检查,转而通过双时钟FIFO的结构保证数据可靠传输,避免了对跨域路径进行困难的高频时序约束。第三,综合策略中启用了寄存器重定时和寄存器平衡优化选项,允许工具在保持设计功能不变的前提下重新分布流水线寄存器以平衡各级组合逻辑延迟。
@@ -417,9 +590,9 @@ Vivado功耗分析报告给出的总片上功耗为\TotalPower{} W,其中动
\subsection{矩阵乘法性能分析}
矩阵乘法批量评测是本系统竞赛评分的核心项目。系统在三轮官方评测中均通过了CRC32校验,CRC32值完全匹配期望值,结果判定为通过。三轮测试的运行时间分别为6.936 ms、6.944 ms和6.950 ms,中位值为\MatmulBoardMs{} ms,得分为\MatmulScore{}\%。测试覆盖了5000组4x4无符号矩阵乘法,每组包含全零边界用例和随机生成的一般用例。
矩阵乘法批量评测是本系统竞赛评分的核心项目。在阶段验证中,系统以三个独立随机种子完成三轮官方评测,运行时间分别为6.936 ms、6.944 ms和6.950 ms,CRC32均完全匹配。随后通过减少软件启动开销、优化批量调度以及进一步压缩SRAM突发数据通路的空闲周期,最终评测在随机种子\MatmulFinalSeed{}下完成5000组4x4无符号矩阵乘法,期望值与上报值均为CRC32 \MatmulFinalCRC{},运行时间为\MatmulFinalMs{} ms,得分为\MatmulFinalScore{}。
以中位运行时间\MatmulBoardMs{} ms为准,系统在5000组任务中的平均每组处理延迟约为1.389 us。在系统时钟50 MHz的条件下,每组矩阵乘法平均消耗约69.4个时钟周期。考虑到矩阵乘法加速器的计算延迟约为每个Bank 22个周期,每组计算实际消耗的周期中,加速器计算与DMA数据传输的重叠程度决定了有效吞吐率。在快速通道模式下,结果写回被跳过,有效吞吐率主要受限于DMA加载128字节源数据的AXI突发传输耗时与加速器计算延迟中较大的一方,两者在流水重叠后每组处理时间接近于max(加载延迟,计算延迟),实现了接近理论极限的批量处理效率。
以最终运行时间\MatmulFinalMs{} ms为准,系统在5000组任务中的平均每组处理延迟约为0.982353 us。在系统时钟50 MHz的条件下,每组矩阵乘法平均消耗约49.12个时钟周期。每组源数据由一次32拍、32位AXI读突发从ExtRAM装载;SRAM控制器的连续读优化消除了突发内部原有的逐拍空闲周期,并允许相邻读突发在条件满足时直接衔接,从而降低了批量任务中占主导地位的源数据搬运开销。在快速通道模式下,结果写回被跳过,但稳态吞吐率仍由SRAM与CDMA读通道、约22周期的乘加计算以及递归CRC32消费速率共同决定。双Bank流水负责重叠源数据装载与计算,CRC结果FIFO吸收乘加输出和CRC消费之间的短期速率差,因此实测49.12周期每组是完整数据通路协同后的结果,不能仅由单个计算核的22周期延迟推导。相较阶段验证的中位值,最终时间降低约29.27\%,表明本项目的性能收益主要来自启动、搬运、调度、计算和校验全链路的协同优化,而非单独缩短乘加核心延迟。
\subsection{FFT性能分析}
@@ -446,7 +619,7 @@ FFT计算结果的数值精度通过比较硬件输出与双精度浮点Radix-2
\subsection{ML-KEM性能分析}
ML-KEM加速器的板级系统诊断测试结果汇总于表\ref{tab:mlkem}。测试在三种安全等级下分别使用软件参考、CPU寄存器加载和DMA批量窗口三种数据传输路径各运行100次迭代,总计900次迭代全部通过,失败次数为零。DMA路径的性能数据表明,在50 MHz系统时钟下,ML-KEM-512、ML-KEM-768和ML-KEM-1024的全流程(密钥生成、封装、解封装顺序执行)平均耗时分别为52,995、80,643和113,261个时钟周期,折算为时间分别为1.605 ms、2.443 ms和3.432 ms。
ML-KEM加速器的板级系统诊断测试结果汇总于表\ref{tab:mlkem}。测试在三种安全等级下分别使用软件参考、CPU寄存器加载和DMA批量窗口三种数据传输路径各运行100次迭代,总计900次迭代全部通过,失败次数为零。表中的周期数由OpenLA500的CPU周期计数器采集,计数频率为33 MHz;它们不是50 MHz系统总线周期,也不是76.923 MHz的ML-KEM算法周期。DMA路径中,ML-KEM-512、ML-KEM-768和ML-KEM-1024的全流程(密钥生成、封装、解封装顺序执行)平均耗时分别为52,995、80,643和113,261个CPU周期,按测试程序使用的33 MHz换算后分别为1.605 ms、2.443 ms和3.432 ms。
\begin{table}[H]
\centering
@@ -465,7 +638,7 @@ ML-KEM加速器的板级系统诊断测试结果汇总于表\ref{tab:mlkem}。
ML-KEM-1024相对于ML-KEM-512的全流程延迟比值约为2.14倍,这主要源于多项式矩阵维度从2增大至4导致的二次增长效应。在ML-KEM的算法流程中,SampleNTT步骤需要生成k×k的矩阵A中的每个多项式,Computational Number Theory Transform步骤需要对k个私钥多项式和k个误差多项式分别执行正向NTT,Matrix Vector Dot Product步骤需要执行k×k次多项式基乘和k次累积加法。随着k从2增至4,矩阵A的生成量从4个多项式增至16个多项式,NTT执行次数从4次增至8次,基乘次数从4次增至16次,各步骤的工作量增长均呈k²或k的比例关系,这是DMA路径延迟从52,995周期增至113,261周期的根源。
后综合时序仿真提供了各操作的逐状态周期分解,可以更精细地分析各算法步骤对总延迟的贡献。以ML-KEM-512为例,密钥生成操作中G哈希采样的平均耗时仅27.0个周期,A矩阵SampleNTT的平均耗时为3,212.7个周期(占总延迟的23.3\%),CBD采样的平均耗时为1,229.0个周期,NTT变换的平均耗时为4,172.0个周期(占总延迟的30.2\%),多项式基乘的平均耗时为2,096.0个周期,密钥编码的平均耗时为2,081.0个周期。从这些数据可以看出,NTT变换和矩阵采样是密钥生成延迟的主要贡献者,合计占总延迟的53.5\%。封装操作中NTT变换的相关步骤(对y和误差向量执行NTT,以及多项式U和V的基乘步骤)合计占总延迟的39.0\%,压缩步骤合计占8.7\%。解封装操作中,压缩参数解码占25.5\%,重加密流水线(复用封装状态序列)占23.9\%,常量时间密文比较占4.6\%。
ML-KEM顶层RTL功能仿真提供了各操作的逐状态周期分解,可以更精细地分析各算法步骤对总延迟的贡献。以ML-KEM-512为例,密钥生成操作中G哈希采样的平均耗时仅27.0个周期,A矩阵SampleNTT的平均耗时为3,212.7个周期(占总延迟的23.3\%),CBD采样的平均耗时为1,229.0个周期,NTT变换的平均耗时为4,172.0个周期(占总延迟的30.2\%),多项式基乘的平均耗时为2,096.0个周期,密钥编码的平均耗时为2,081.0个周期。从这些数据可以看出,NTT变换和矩阵采样是密钥生成延迟的主要贡献者,合计占总延迟的53.5\%。封装操作中NTT变换的相关步骤(对y和误差向量执行NTT,以及多项式U和V的基乘步骤)合计占总延迟的39.0\%,压缩步骤合计占8.7\%。解封装操作中,压缩参数解码占25.5\%,重加密流水线(复用封装状态序列)占23.9\%,常量时间密文比较占4.6\%。
\subsection{跨时钟域与系统集成验证}
@@ -509,7 +682,7 @@ ML-KEM的三级安全参数通过相同的硬件数据通路支持,面积开
% ===========================================================================
\section{结论}
本文详细阐述了一个基于OpenLA500处理器和Xilinx Artix-7 FPGA平台的异构计算SoC系统的设计、实现与验证全过程。系统成功集成了矩阵乘法加速器、FFT加速器和全参数可配置的ML-KEM后量子密码IP,通过通用DMA子系统和矩阵批量序列器实现了计算加速器的高效协同。系统的功能正确性在四个验证层级上均得到了充分确认:矩阵乘法批量处理以\MatmulBoardMs{} ms的中位运行时间通过了官方评测的CRC32校验,得分为\MatmulScore{}\%;ML-KEM加速器在三种安全等级、三种操作和三种数据传输路径上均以100\%通过率完成了总计900次的系统级诊断测试;FFT加速器在DMA批量模式下实现了827.80倍的软件加速比,计算精度满足预定误差要求。
本文详细阐述了一个基于OpenLA500处理器和Xilinx Artix-7 FPGA平台的异构计算SoC系统的设计、实现与验证全过程。系统成功集成了矩阵乘法加速器、FFT加速器和全参数可配置的ML-KEM后量子密码IP,通过通用DMA子系统和矩阵批量序列器实现了计算加速器的高效协同,并通过外部SRAM控制器的连续突发流水化提高了共享存储器的数据供给能力。系统的功能正确性在四个验证层级上均得到了充分确认:矩阵乘法批量处理以\MatmulFinalMs{} ms完成5000组官方评测,CRC32与期望值一致并获得\MatmulFinalScore{};ML-KEM加速器在三种安全等级、三种操作和三种数据传输路径上均以100\%通过率完成了总计900次的系统级诊断测试;FFT加速器在DMA批量模式下实现了827.80倍的软件加速比,计算精度满足预定误差要求。上述板级测试同时对优化后SRAM控制器的BaseRAM取指、ExtRAM长突发访问和Bank选择形成了系统级覆盖。
系统的FPGA物理实现在xc7a200tfbg676-1器件上完整通过布局布线,资源利用率为LUT 41.16\%、寄存器11.58\%、块存储器8.08\%、DSP 0\%。三个异步时钟域在76.923 MHz、50 MHz和33.333 MHz的目标频率下均建立保持时间收敛,最差负裕量为0.070 ns,零时序违例。总片上功耗为0.779 W,其中ML-KEM加速器为主要动态功耗来源。系统代码通过了HDL静态检查,综合后DSP资源为零的约束得到满足,跨时钟域报告中的警告项经过分析后确认不构成功能风险。