# High-Throughput Line Buffer Microarchitecture for Arbitrary Sized Streaming Image Processing
## 5 Evaluation
### Evaluation of Dynamic Programming in D-SWIM  
The dynamic programming described in Section 3.4 contributes to the ability of rapid context-switching for arbitrary sized images. We evaluated the D-SWIM system with the workload containing images in different sizes. Table 4 lists the period of computation and dynamic programming for one image. The independent variables are _image size_ and \(N_{blk}\) (input throughput), which affects the measured periods. The values were measured in clock cycles. However, for direct comparison, they were converted to the numbers in micro-seconds with an operating frequency of 350 MHz. The _proportion_ column gives the ratio of the programming period to the entire working period (programming period + computation period). The overhead of dynamic programming in D-SWIM is significantly less than 1% in most cases, and the context-switching can be regarded as seamless.  
In contrast, while employing the SWIM buffer for the same workload, a FPGA reconfiguration is required to switch the specific hardware corresponding to the size of the input image. The average period for reconfiguring the entire FPGA device (Xilinx-XC7 VX690) is 20 s. For a fair comparison, we listed the time period for the partial reconfiguration technique [14], which reduces the reconfiguration time to the order of milliseconds via programming only a portion of the FPGA. Similarly, we obtained the proportion of FPGA reconfiguration time based on the image-processing period. Assuming the SWIM hardware is reconfigured for each image, the results show that the FPGA performs reconfiguration in over 80% of the entire working period. This means that the FPGA spends the most time on reconfiguration rather than actual image processing, causing a huge reduction in processing throughput.  
\begin{table}
\begin{tabular}{c|c|c c|c c c c|c c} \hline \hline
**Image Size** & \(N_{blk}\) & \multicolumn{2}{c|}{**Computation Time**} & \multicolumn{2}{c|}{**D-SWIM Programming Time**} & \multicolumn{2}{c}{**SWIM Reconfiguration Time**} \\
**H\(\times\)W (pixel)** & **(pixel)** & **(cycle)** & **(us)** & **(cycle)** & **(us)** & **Proportion** & **(cycle)** & **(us)** & **Proportion** \\ \hline
431 \(\times\) 392 & 8 & 21,227 & 60.649 & 8 & 0.023 & 0.04\% & 465,500 & 1330 & 95.64\% \\
431 \(\times\) 392 & 16 & 10,614 & 30.326 & 16 & 0.046 & 0.15\% & 465,500 & 1330 & 97.77\% \\
431 \(\times\) 392 & 32 & 5307 & 15.163 & 32 & 0.091 & 0.60\% & 465,500 & 1330 & 98.87\% \\
1342 \(\times\) 638 & 8 & 107,360 & 306.743 & 4 & 0.011 & 0.00\% & 465,500 & 1330 & 81.26\% \\
1342 \(\times\) 638 & 16 & 53,680 & 153.371 & 8 & 0.023 & 0.01\% & 465,500 & 1330 & 89.66\% \\
1342 \(\times\) 638 & 32 & 26,840 & 76.686 & 16 & 0.046 & 0.06\% & 465,500 & 1330 & 94.55\% \\ \hline \hline \end{tabular}
\end{table}
Table 4: Time period of dynamic programming of D-SWIM and partial reconfiguration of SWIM.  
Figure 12: (**a**) shows the \(f_{max}\) of D-SWIM and SWIM designs with the configurations in Table 3. (**b**) shows the power consumption of D-SWIM and SWIM, with the breakdown of static and dynamic power.