如上图,卷积核为3x3,步长为1x1,PE单元为2x2,因此它能同时计算4个输出,蓝框对应PE0,0,红框对应PE1,0,紫框对应PE0,1,绿框对应PE1,1,Cycle图第一行就是第一个待卷积窗口9个值按行展开的结果。
第0个周期,PE0,0输入x0,0,PE1,0输入x0,1,…,即都输入待卷积窗口的第一个数据,因此第0个周期需要读入卷积核的第一个数据w0,0,如此下去,每K*K个周期便能获得2x2=4个输出像素。
ShiDian的卷积实现和shift_ram的实现有很大不同。
具体实现上,为了实现数据的重用,第0个周期读入四个窗口的第一个数据到各自的PE单元后,需要在PE间水平移动K-1次数据,然后接着垂直移动1次,再接着水平移动K-1次数据,垂直移动1次,这样一共重复K-1轮,即可完成每个PE单元对卷积窗口KxK个数据的访问。
相关文章: