## 4 Experimental Results and Analysis
### Partitioning on PPE  
In Section 3.2, we explained the different factors that must be considered in determining workload distribution for the PPE and the SPEs. We have examined three multiplication methods on the PPE  
Figure 12: Speed-up of decoding time compared with COMPUTE on 128 \(\times\) 128 coefficient matrix size; (**a**) PPE; (**b**) SPE.  
Figure 13: Inbound mailbox synchronization.  
and compared result of each method to the performance achieved with utilizing only the SPEs. The performance results are depicted in Figure 13. The amount of workload dedicated on PPE is as large as the amount assigned to one SPE. We employ parallelized multiplication using the SIMD instruction set on the SPEs, rather than table-based multiplication, which is better suited to processors that have a local cache. Even if we also use the PPE in decoding, Figure 14 shows that lower increases in speed occur than are witnessed when only using the SPEs (with the exception of _PPE_VECTOR_).  
In this section, we propose an approach to the factorization of workload between cores, and we evaluate the decoding time when varying distribution factor, which we refer to as _ppefactor_. Then, we use the configuration with equally divided workload distribution at each core as a performance baseline.  
Figure 15 presents average speed-ups observed when varying the _ppefactor_ for _PPE_COMPUTE_, _PPE_TL_, and _PPE_VECTOR_ algorithms. _PPE_VECTOR_ is a unified parallel algorithm that uses parallelized SIMD multiplication on either of the PPE and SPEs. In contrast, _PPE_COMPUTE_ and _PPE_TL_ are hybrid parallel algorithms. These employ computation-based and table-based multiplication on the PPE and they use only parallel SIMD multiplication on the SPEs.  
In order to parallelize the progressive decoding algorithm across multiple cores, it is necessary to have a synchronization barrier that blocks excessive progression by any one particular thread. Synchronization employing a barrier greatly decreases performance when load balancing results in uneven distribution between cores. Thus, we evaluate the sensitivity of the three algorithms with respect to _ppefactor_. We do this because it will be necessary to dynamically redistribute the workload to all threads in an efficient manner, from a performance perspective.  
Figure 16 depicts the measured average increase in speed that is observed when we decode data size from 16 KB to 1 MB, with a coefficient matrix varying in size from 64 to 512, with optimal values of _ppefactor_. For the small data size, since the portion that is assigned to PPE is smaller than the portion to SPE, its variation of the factor does not significantly affect the performance. However, if the data size is large enough to compare with coefficient matrix size then it shows high speed-up results.  
In Figure 15(a-c), we can identify the most relevant local maximum values represented in Table 3, associated with each method. In Table 3, we have realized performance increase 8% with _ppefactor_ of 2.38 even with _PPE_VECTOR_. It means that PPE is assigned a greater workload than the SPE. With  
Figure 14: Decoding time of three algorithms which using PPE compared with only using SPEs with coefficient matrix size of 512; (**a**) _PPE_COMPUTE_; (**b**) _PPE_TL_; (**c**) _PPE_VECTOR_.  
this fine tuning on workload distribution, parallelization using the SIMD instruction set results in high performance on the Cell BE.  
\begin{table}
\begin{tabular}{c c c c} \hline \hline  & **COMPUTE** & **TL** & **VECTOR** \\ \hline
**Optimal factor** & 0.32 & 0.88 & 2.38 \\
**Maximum speed-up** & 2.15 & 1.42 & 1.26 \\
**Average speed-up** & 1.59 & 1.03 & 1.08 \\ \hline \hline \end{tabular}
\end{table}
Table 3: Speed-up compared Equally Distributed Decoding.  
Figure 15: Speed-up with various ppefactor; (**a**) _PPE_COMPUTE_; (**b**) _PPE_TL_; and (**c**) _PPE_VECTOR_.