# An Uplink Channel Estimator Using a Dedicated Instruction Set for 5G Small Cells
## 4 Design and Acceleration of Instruction Set
### Instrumentation Set Design and Acceleration Opportunities
#### 4.3.2 Instruction Fusion Acceleration Opportunity  
The instruction fusion acceleration proposed in this paper refers to the packaging of micromanipulation sets that need to be accelerated without adding hardware. Accelerating a certain part of the channel estimation module means that the work that originally needs several instructions to be completed can be completed with only one instruction after acceleration. In this case, the overall hardware operation unit does not increase, but the number of times that data need to be read and written from the register file become less, which improves the operation speed of the module as a whole. For example, the 2\"R1\"R2 in Equations (8)-(11) can be made into an instruction to multiply and shift two complex numbers. In this way, compared with a two-complex multiplication and a shift instruction, the instruction efficiency and performance are improved, and the number of multipliers is not increased. This instruction can also be used in other programs. The complex division instruction of 1 complex number divided by 1 complex number is also an opportunity to accelerate instruction fusion. For the formula of complex division, see Equation (12). It can be seen that complex division is also composed of 2 complex vector multiplications and adding 2 complex vectors, 2 complex vector multiplications and subtracting 2 complex vectors and real number division. All these microoperations (instructions) can be merged into three instructions: the denominator is obtained from the plural table; the reciprocal of complex multiplication; the result of complex multiplication. The implementation of complex division before instruction fusion requires five instructions. \[\frac{a+bi}{c+di}=\frac{ac+bd}{c^{2}+d^{2}}+\frac{bc-ad}{c^{2}+d^{2}}\mathrm{i} \tag{12}\]  
In the interpolation module of calculating the tap, the H value of the subcarrier to be interpolated can be obtained by multiplying the H value of the tap and the pilot point by using the basic instruction of 2 MM1. However, for each interpolation, the first pilot subcarrier currently used in interpolation is the last pilot subcarrier used in the last interpolation, and the general vector instruction set does not support such a data arrangement. Therefore, this study designs an interpolation instruction to reduce the interpolation work that originally needs two instructions to one, that is, to complete the acceleration of the interpolation module. The instruction fusion acceleration instructions designed in this study are shown in Table 3. \begin{table}
\begin{tabular}{l l c} \hline \hline
1 & 2:2 CMASC2C & Double parallel instruction of 2 complex vectors multiplied and 2 complex vectors added, and 2 complex vectors multiplied and 2 complex vectors subtracted \\
2 & 8 CM1C & 8 complex vectors multiplied by 1 complex vector \\
3 & 8 CM1R & 8 complex vectors multiplied by 1 real scalar \\
4 & 8 CS8C & 8 complex vectors subtract 8 complex vectors \\
5 & 2:2 MM1 & Double parallel instruction of 2 \(\times\) 2 complex matrix multiplied by 2 complex vectors \\
6 & 4:2 CMSC2C & Four parallel instructions of 2 complex vectors multiplied and subtract 2 complex vectors \\
7 & 16 CP16C & 16 complex vectors add 16 complex vectors \\
8 & 2:4 CM1C & Double parallel instruction of 4 complex vectors multiplied by 1 complex vector \\
9 & 8 CM8C & 8 complex vectors multiplied by 8 complex vectors \\  & & and adding values on respective accumulators \\
10 & 1 RLUT1R & Using a look-up table to find the reciprocal of a real number \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Relatively general parallel instruction design for SIMD data. The LS estimation module can be completed by using instructions 1-2 and 13-14, and the Wiener filtering module in the time-frequency domain can be completed by using instructions 3-12. After calculating the corresponding coefficients in advance, instruction 8 CM1C and instruction 8 CM8C can be used for first-order and second-order interpolation in the time-frequency domain using accumulators.