Altifigence Academy

11 / 20 · 概念

扩展到 N×N 并统计完成时钟沿

分别参数化空间尺寸 N 和归约长度 K。

区分空间尺寸与归约长度

N×N 的 PE 网格产生一个 N×N 输出分块。K 是归约维度,不必等于 N。N=3、K=5 时,A 为 3×5,B 为 5×3,C 为 3×3。九个 PE 分别使用五项,总共执行四十五次 MAC。N 决定布线和输入错位;K 决定累加位宽、项计数和注入持续时间。

沿用既定约定:clear 在 E0 前完成,输入在 E_t 前稳定,MAC 和寄存器转发在该沿进行,并且没有额外的乘法器流水线。A(i,k) 在 k+i 注入,经过 j 跳。B(k,j) 在 k+j 注入,经过 i 跳。两者在 k+i+j 到达 PE(i,j)。

tlast(i,j)=K−1+i+jt_{last}(i,j)=K-1+i+j

最后一个 PE 在 E_(K+2N−3) 后完成。从 E0 开始包含两端计数,共需要 K+2N−2 个推进时钟沿。N=K=2 时,最后的沿编号为三,沿数为四。N=3、K=5 时,最后编号为八,沿数为九。

参数化连接与计数器

在列零,PE 的 A 输入来自边界;其他列来自左邻居已寄存的 A 输出。B 的规则类似,分别来自上边界或上方邻居。valid 和 job/k 标签使用相同连接,整个网格共享 clear 和 advance。

要求 N≥1、K≥1、AW≥2W。存储零到 K 的 count 需要 max(1,ceil(log2(K+1))) 位。存储零到 K−1 的 k 标签需要 max(1,ceil(log2 K)) 位。K 为二的幂时,两种位宽不同;K=1 时避免零位宽声明。

最后一次边界注入发生在 E_(K+N−2),之后还有 N−1 个排空时钟沿。计算沿数不包括初始化、存储器加载和输出传送。如果有 P 个暂停时钟沿,实际经过的沿数变为 K+2N−2+P。额外流水线级需要重新分析时序。

自己试试

N=4、K=3 时,求 PE(2,1) 的首个/最后一个 MAC 时钟沿、网格的最终时钟沿、计算沿数,以及暂停两次后的实际沿数。

阅读解释

PE(2,1) 在 E3 使用 k0,在 E5 使用 k2。网格在 E8 后完成,需要 E0..E8 共九个推进时钟沿。两次暂停后共有十一个实际时钟沿,不含初始化和输出传送。

你的选择适用于此浏览器,可随时在页脚更改。