doc: update ML-KEM IP report (NTT architecture, clock, compares) and system design report
This commit is contained in:
@@ -105,9 +105,8 @@
|
||||
\textbf{功能} & \textbf{硬件实现(本设计贡献)} & \textbf{软件管理} \\
|
||||
\midrule
|
||||
ML-KEM密钥生成/封装/解封装 & \texttt{mlkem\_top}全硬件加速 & 参数配置、种子装载、结果回读 \\
|
||||
FFT 1024点变换 & \texttt{FFT1024\_32B} SDF流水线 & 数据写入、模式配置、启动触发 \\
|
||||
FFT 1024点变换 & FFT SDF流水线 & 数据写入、模式配置、启动触发 \\
|
||||
矩阵乘法 C=A×B & \texttt{matmul\_axi\_slave} 双Bank加速器 & 矩阵数据搬运、计算调度、CRC校验 \\
|
||||
SRAM控制器优化 & 读写通道流水线化、消除NOP等待 & — \\
|
||||
数据搬运 & 4通道DMA控制器 & 传输描述符配置、完成轮询 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
@@ -185,7 +184,7 @@ intrpt[3] & mlkem\_intr & ML-KEM操作完成 \\
|
||||
|
||||
\subsection{时钟与复位架构}
|
||||
|
||||
系统采用单一外部晶振(50 MHz)经PLL生成三个时钟域:\texttt{cpu\_clk}(约33 MHz)驱动CPU核心,\texttt{sys\_clk}(50 MHz)驱动AXI总线和全部外设/加速器,\texttt{mlkem\_clk}(25 MHz)曾用于ML-KEM独立时钟域,当前设计中ML-KEM已合并至\texttt{sys\_clk}直接运行。各时钟域通过\texttt{rst\_sync}模块生成同步释放的复位信号,PLL锁定信号(\texttt{pll\_locked})作为复位释放的使能条件。
|
||||
系统采用单一外部晶振(50 MHz)经PLL生成两个时钟域:\texttt{cpu\_clk}(约33 MHz)驱动CPU核心,\texttt{sys\_clk}(50 MHz)驱动AXI总线、全部外设和加速器。ML-KEM、矩阵乘法器、FFT和DMA控制器均在\texttt{sys\_clk}域内运行,无需跨时钟域同步。各时钟域通过\texttt{rst\_sync}模块生成同步释放的复位信号,PLL锁定信号(\texttt{pll\_locked})作为复位释放的使能条件。
|
||||
|
||||
% ================================================================
|
||||
\section{核心子系统设计}
|
||||
@@ -315,7 +314,7 @@ CRC32校验值\texttt{51b7f2d2}与参考模型完全一致,验证了硬件乘
|
||||
|
||||
\subsection{ML-KEM系统级测试结果}
|
||||
|
||||
ML-KEM加速器在SoC集成环境中完成了三路径(SW/CPU/DMA)各100次迭代的系统级诊断测试,详细结果已在前述IP设计报告中给出。此处汇总关键性能指标:在50 MHz ML-KEM时钟下,KeyGen操作延迟为11,140周期(K=2)至32,524周期(K=4),Encaps为26,368至56,524周期,Decaps为41,444至80,756周期。DMA路径相对于CPU寄存器路径的额外加速比为1.85--1.90×,验证了批量数据传输对于减少AXI总线协议开销的实际效果。
|
||||
ML-KEM加速器在SoC集成环境中完成了三路径(SW/CPU/DMA)各100次迭代的系统级诊断测试,详细结果已在前述IP设计报告中给出。此处汇总关键性能指标:KeyGen操作延迟为13,835周期(K=2)至37,923周期(K=4),Encaps为17,995至43,961周期,Decaps为33,237至70,447周期。DMA路径相对于CPU寄存器路径的额外加速比为3.6--3.8×,验证了批量数据传输相对于逐字节AXI寄存器的显著效率优势。
|
||||
|
||||
全部KAT测试用例(360个,覆盖三种操作×三种等级)逐字节比对NIST标准答案通过,Decaps隐式拒绝路径同样验证正确。
|
||||
|
||||
@@ -372,7 +371,7 @@ BUFG & 4 & 32 & 12.5\% \\
|
||||
\toprule
|
||||
\textbf{模块} & \textbf{LUT} & \textbf{FF} & \textbf{BRAM} & \textbf{占比} \\
|
||||
\midrule
|
||||
ML-KEM & 39,029 & 25,868 & 2$\times$36 + 6$\times$18 & 54.8\% \\
|
||||
ML-KEM & 21,697 & 15,826 & 2$\times$36 + 14$\times$18 & 30.5\% \\
|
||||
~~FFT & 6,949 & 1,083 & 8$\times$36 + 4$\times$18 & 9.8\% \\
|
||||
矩阵乘法 & 10,204 & 3,239 & — & 14.3\% \\
|
||||
CPU (core\_top) & 8,553 & 5,591 & 20$\times$18 & 12.0\% \\
|
||||
@@ -389,7 +388,7 @@ UART + confreg + DVI + SRAM & 1,711 & 1,222 & — & 2.4\% \\
|
||||
|
||||
注:Vivado层次化报告中各子模块合计可能略小于顶层总数,原因在于跨层次LUT合并(cross-hierarchy LUT combining)机制。表中顶层总计为71,196 LUT。
|
||||
|
||||
从模块资源分布可以得出以下观察。ML-KEM加速器是整个SoC中面积最大的单一组件,消耗54.8\%的LUT和65.2\%的FF,主要归因于\texttt{ntt\_core}的256系数寄存器阵列和\texttt{keccak\_core}的1600-bit宽数据通路。矩阵乘法加速器以14.3\%的LUT占比位居第二,其4个并行32×32-bit流水线乘法器(每实例约1,000 LUT)是面积的主要贡献者。CPU核心消耗12.0\%的LUT,其中BTB(分支目标缓冲器)和TLB(地址转换旁路缓冲器)合占约3,000 LUT。FFT加速器虽仅占9.8\%的LUT,但消耗了最多的BRAM资源——8个RAMB36E1用于5级SDF架构中的延迟缓冲和旋转因子ROM存储。
|
||||
从模块资源分布可以得出以下观察。ML-KEM加速器消耗30.5\%的LUT,其ntt\_core采用双蝶形加4路Banked BRAM架构,poly\_mul\_sync的系数和中间数据缓冲亦通过BRAM实现,有效控制了LUT开销。矩阵乘法加速器以14.3\%的LUT占比位居第二,其4个并行32×32-bit流水线乘法器(每实例约1,000 LUT)是面积的主要贡献者。CPU核心消耗12.0\%的LUT,其中BTB(分支目标缓冲器)和TLB(地址转换旁路缓冲器)合占约3,000 LUT。FFT加速器虽仅占9.8\%的LUT,但消耗了最多的BRAM资源——8个RAMB36E1用于5级SDF架构中的延迟缓冲和旋转因子ROM存储。
|
||||
|
||||
DSP使用量为零体现了竞赛规则约束和设计策略的一致性——ML-KEM不使用DSP、矩阵乘法受竞赛条款限制、FFT采用16-bit窄数据宽度,三者共同导致了全LUT乘法映射的设计决策。
|
||||
|
||||
@@ -472,10 +471,6 @@ matmul FSM独热状态 & 2,151 & FDRE \\
|
||||
|
||||
\texttt{sys\_clk}的BUFG网络以35,652个负载的扇出位居首位,这在50 MHz设计中不会构成时序问题。值得注意的是ML-KEM内部有两个高扇出网络进入前5名——\texttt{ek\_bram}的延迟寄存器链(24,670扇出)和\texttt{poly\_mul}的加载计数器(3,758扇出),前者源于字节编码器中一个组合使能信号被复制到大量并行路径,后者是多路复用地址总线的经典高扇出场景。这些高扇出网络在50 MHz下均未产生时序违例,但若频率进一步提升,可能需要插入复制寄存器或使用BUFG驱动的全局使能策略进行优化。
|
||||
|
||||
\subsection{系统功耗估计}
|
||||
|
||||
布局布线后系统功耗估计约为0.549 W(总片上功耗),其中动态功耗0.409 W,静态功耗0.141 W。PLL模块是单一功耗最高的组件(0.132 W),其次为信号翻转功耗(0.115 W)和Slice Logic功耗(0.069 W)。
|
||||
|
||||
% ================================================================
|
||||
\section{结论}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user