## 4 Extraction of the Word-Based SISO Semisystolic Processor
### Word-Based SISO Projection Function  
By applying the nonlinear projection approach, discussed in [30], to the DG nodes shown in Figure 2, we can develop the following nonlinear projection function that maps any node \(\mathbf{p}(i,j)\) of Figure 2 to a processing element \(\mathbf{PE}(o,u)\) in the resulting systolic/semisystolic array space:  
\[\mathbf{PE}(o,u) = \mathbf{P}_{s}\ \mathbf{p}(i,j) \tag{15}\] \[o = i\bmod k\] (16) \[u = j\bmod k\] (17) \[\mathbf{P}_{s} = \left[\ \.\bmod k\ \.\bmod k\ \ \right] \tag{18}\]  
where \"dot\" is a place holder for the argument, as explained in [30]. The selected nonlinear projection function results in all the nodes of each green zone being mapped to a two-dimensional \(k\times k\) semisystolic array. The semisystolic array is composed of \(k\) rows and \(k\) columns, as shown in Figure 3. Furthermore, the selected nonlinear projection function will map all the nodes of the yellow zones (the postprocessing nodes) to a one-dimensional \(1\times k\) postprocessing array, shown in Figure 4.  
Figure 5 displays the block architecture of the word-based SISO semisystolic processor. It is composed of the semisystolic array block, the postprocessing array block, I/O registers, FIFO buffers, and two \(k\)-bit two-input MUXes, as well as \((k+2)\)-bit two-input MUX. The \(k\)-bit two-input MUXes select between the input words of \(G\) and \(G^{\prime}\) and their stored word values in FIFOs \(G\) and \(G^{\prime}\). On the other hand, the \((k+2)\)-bit two-input MUX selects between the input words of \(E\) and its updated intermediate partial words stored in FIFO-E. The FIFO buffers FIFO-X, FIFO-Y, FIFO-P, FIFO-S, FIFO-G, FIFO-G', and FIFO-E sequentially feedback the resulting output words \(X\), \(Y\), \(P\), \(S\), \(G\), \(G^{\prime}\), and \(E\) of the semisystolic array block to the corresponding input words of the same array block. FIFO-X, FIFO-Y, FIFO-P, FIFO-S, FIFO-G, and FIFO-G' have a width size of \(k\) bits and a depth size of \(W-1\), where \(W=\left\lceil\frac{n}{k}\right\rceil\). FIFO-E has a width size of \(k+2\) bits and the same depth size as the previous FIFOs. It is worth noticing that the upper registers of \(G\), \(G^{\prime}\), and \(E\) feed their word values to the corresponding inputs of the semisystolic array block starting from the most significant words. On the other hand, the registers of \(E_{2i-2}\) and \(E_{2i-1}\), \(F_{2i-2}\) and \(F_{2i-1}\) at the left of the semisystolic array block supply their word values starting from the least significant words. Figure 4: SISO postprocessing array for \(k=3\). Figure 3: SISO semisystolic array for \(k=3\). Perceiving the semisystolic array of Figure 3, we notice that it consists of two types of PEs: dark orange and light orange PEs. The logic details of the dark and light orange PEs are displayed in Figures 6 and 7, respectively. The two PEs almost have the same logic structure except that the dark orange PE has an extra tristate buffer that is enabled (\(u=0\)) to pass the updated words of \(E_{n-1}^{i-1}\) and \(E_{n-2}^{i-1}\) at the proper time instances of \(t=(i-1)\lceil\frac{n}{k}\rceil+1\), \(1\leq i<\lceil\frac{n}{k}\rceil\). Besides the input words \(E_{2i-2}\), \(E_{2i-1}\), \(F_{2i-2}\), and \(F_{2i-1}\), these words are horizontally transferred to the remaining PEs in the semisystolic array to update the intermediate partial words of \(X\), \(Y\), \(P\), \(S\), and \(E\). Similarly, observing the postprocessing array of Figure 4, we notice that it consists of two types of PEs: dark blue and light blue PEs. The logic details of the dark and light blue PEs are displayed in Figures 8 and 9. The two PEs almost have the same logic structure except that the dark blue PE has an extra tristate buffer that is enabled (\(u=0\)) to pass the updated signals \(s_{n-1}^{c}\) and \(y_{n-1}^{c}\) at the proper time of \(t=\left\lceil\frac{d}{k}\right\rceil\lceil\frac{n}{k}\rceil+1\) to the remaining light blue PEs of the postprocessor array.