## 4 Column Streaming-Based Mapping Algorithm
### Mapping Methods and Varieties for Flexibility
#### 4.3.1 Input Feature Mapping  
Providing different mapping _varieties_ (\(v\)) for particular-sized filters is the featured function of the proposed convolution engine. The mapping _varieties_ (\(v\)) of filter size (\(k\times k\)), \(\{3\leq k\leq 11,\text{ and }k\in\mathbb{N}_{0}\}\) can be found in (4). Each mapping variety is equivalent and can be regarded as each other's substitution when some PEs fail. The upper bound of \(k\) in a \(w\times h\) PE array is \(h\) (in this paper, \(w\) = 11, \(h\) = 11), but the array can be flexibly enlarged and customized. Table 2 lists all the possible mapping varieties and compares them to [7]. \[v\text{ for filter size }(k) \begin{cases}\geq 2,\text{ if }k\leq\left\lfloor\frac{w}{2} \right\rfloor\leq h\\ =1,\text{ if }\left\lfloor\frac{w}{2}\right\rfloor<k\leq h\end{cases}  \tag{4}\]  
According to the Bus2 location, we define two mapping methods, _method_ = 1 and 2. When _method_ = 1, Bus2 can locate at Coli (\(k\leq i\leq\left\lfloor\frac{w}{2}\right\rfloor\)), by default \(i=k\). Mapping _method_ = 1 can only be adopted when the filter \(k\leq\left\lfloor\frac{w}{2}\right\rfloor\). Different from the case, _method_ = 1, generally for \(k>\left\lfloor\frac{w}{2}\right\rfloor\), the case _method_ = 2 is also available for \(k\leq\left\lfloor\frac{w}{2}\right\rfloor\) when providing the PE array flexibility and reliability. Bus2 streams data to the rightest column, Col(\(w\) = 1), when in _method_ = 2. For example, Figure 7 shows a 4 \(\times\) 4-sized filter _method_ = 1, and \begin{table}
\begin{tabular}{l l l l l l} \hline \hline  & **Du et al. [7]** & **DycSe** & & & **Differential** \\ \hline
**Filter Size** & **Decomposition * & _method_ = 1 & _method_ = 2 & **Total** & **Mapping Method Counts** \\ \hline \(3\times 3\) & 1 & 3 & 1 & 4 & +3 \\ \hline \(4\times 4\) & 1 & 2 & 1 & 3 & +2 \\ \hline \(5\times 5\) & 1 & 1 & 1 & 2 & +1 \\ \hline \(6\times 6\) & 1 & 0 & 1 & 1 & +0 \\ \hline \(7\times 7\) & 1 & 0 & 1 & 1 & +0 \\ \hline \(8\times 8\) & 1 & 0 & 1 & 1 & +0 \\ \hline \(9\times 9\) & 1 & 0 & 1 & 1 & +0 \\ \hline \(10\times 10\) & 1 & 0 & 1 & 1 & +0 \\ \hline \(11\times 11\) & 1 & 0 & 1 & 1 & +0 \\ \hline \hline \end{tabular}  
* The mapping method name of Du et al. [7].  
\end{table} 
Table 2: Mapping varieties of different weight filters. Bus2 streams the data into Col4 (\(i=4\)). Bus2 can also pour data into Col5 (\(i=5\)) when a 4 \(\times\) 4-sized filter uses the other mapping variety with _method_ = 1. On the other hand, Figure 8 shows a 4 \(\times\) 4-sized filter _method_ = 2, and Bus2 streams data into Col10 (\(i=10\)). The data from Coli, \(i=10\), is streamed to Colj (\(0<j<10\)) cycle by cycle. Overall, there are three mapping varieties (two types when _method_ = 1 and 1 type when _method_ = 2) for a 4 \(\times\) 4-sized filter. In the \(k>\left\lfloor\frac{w}{2}\right\rfloor\) cases, the mapping method is limited to one variety, _method_ = 2, as shown in (4). Figures 9 and 10 show the case a 7 \(\times\) 7-sized filter case. Since the k in the case  
Figure 8: The data mapping in the convolution engine for a 6 \(\times\) 6-sized filter (_method_ = 2), data {0, 1, 2,..., 20} propagates 4 cycles. Figure 7: The data mapping in the convolution engine for a 4 \(\times\) 4-sized filter (_method_ = 1, Coli = Col4), data {0, 1, 2,..., 22} propagates 4 cycles. is 7 and is bigger than \(\left\lfloor\frac{w}{2}\right\rfloor\) so that _method_ = 2 is adopted. Table 2 concludes the mapping varieties for the filters 3 \(\times\) 3 to 11 \(\times\) 11, indicating that one-third of the filters contain at least two mapping methods to provide flexibility. For increasing the flexibility and providing more mapping methods for the filters \(k>\left\lfloor\frac{w}{2}\right\rfloor\), the array can be flexibly enlarged and customized to increase \(w\) and \(h\). Figure 10: The data mapping in the convolution engine for a 7 \(\times\) 7-sized filter (_method_ = 2), the 7 th cycle of the whole dataflow.