实现两个矩阵的乘法运算,两个矩阵的大小为 MK 和 KN,其中 M>1024,N,K 不超过 256。输入矩阵 A 和 B 的数据位宽都为 8b,输出矩阵 C 的数据位宽为 16b。由于完成乘加运算将超出 16b 的表示范围,因此需要对数据进行量化和更高效的表示。该乘加过程可以用 ALU、PE 阵列、存算电路等来实现。完成设计后需要对方案进行评估,评估指标为完成该任务所执行的周期数。
二、整体设计方案和原理论证(第一次、第二次报告内容)
考虑到时间有限,我打算通过改造 sodor 实现最简单的矩阵乘法功能。具体而言,我有如下四个目标:
① 添加对整数乘法的支持
Sodor 只支持 RV32I 基础指令集,而 RV32I 是无法直接进行乘法和除法运算的[1]。然而,根据论坛[2]中的讨论,我们可以往 RI32I 的设计中加入一些额外的硬件结构,使得原有 Sodor 能解码 RV32IM 中的指令,而无需重新编译 riscv-toolchain。由于 RV32 的 M 扩展中只包含了乘法、除法和求模等指令,而矩阵乘法并不会涉及到除法和求模,因此我们只需