<div dir="ltr"><div>links:<br></div><div><a href="https://bugs.libre-soc.org/show_bug.cgi?id=230#c71">https://bugs.libre-soc.org/show_bug.cgi?id=230#c71</a></div><div><a href="https://libre-soc.org/openpower/sv/int_fp_mv/">https://libre-soc.org/openpower/sv/int_fp_mv/</a></div><div><br></div><div>Lauri is kindly investigating MP3 in SVP64 assembler and it&#39;s turning out to</div><div>be a good test of what opcodes are needed.  in the bi-weekly meeting last</div><div>week, Paul, we mentioned briefly the need for GPR-to-FPR and FPR-to-GPR</div><div>mv operations (straight bit-wise) given that VSX/SIMD will not be added to</div><div>Libre-SOC as a GPU / VPU.</div><div><br></div><div>Jeff Bush&#39;s Nyuzi paper makes it clear that the cost of transferring GPU-style</div><div>workloads through L1/L2 cache is hugely expensive, and describes the efforts</div><div>he went to to reduce power consumption</div><div><a href="https://www.researchgate.net/publication/282269512_Nyami_A_synthesizable_GPU_architectural_model_for_general-purpose_and_graphics-specific_workloads">https://www.researchgate.net/publication/282269512_Nyami_A_synthesizable_GPU_architectural_model_for_general-purpose_and_graphics-specific_workloads</a></div><div><br></div><div>additionally, Lauri points out that just to get zero into an FPR is also</div><div>costly: it requires a LD operation which takes up data segment space</div><div>and unnecessarily activates both memory as well as L2 and L1 data</div><div>cache paths when compared to a MV-from-GPR operation.</div><div><br></div><div>in addition to that, in an Out-of-Order system the cycle latency of the</div><div>path through L1 cache will be much higher than a straight MV operation</div><div>(which in some micro-architectures may be a macro-op-fused operation).</div><div><br></div><div>* this in turn requires a larger number of &quot;in-flight&quot; operations</div><div>* this in turn increases the number of Reservation Stations</div><div>* this in turn increases O(N^2) the size of Dependency Matrices</div><div><br></div><div>the impact therefore of using the LD-ST path is extremely costly: all</div><div>of which points to a straight bit-copy between GPR and FPR being</div><div>necessary.</div><div><br></div><div>in some micro-architectures the MV may end up being a macro-op</div><div>fused operation: it may end up actually being removed entirely from</div><div>the pipelines, instead being used to mark the source or destination</div><div>of INT or FP operations as targetting the *other* regfile:</div><div><br></div><div>     fmv2int  fp5, r3</div><div>     addi r3, 0x5<br></div><div><br></div><div>becomes (macro-fused):</div><div><br></div><div>     addi fp5, 0x5</div><div><br></div><div>it should be clear that when adding bitmanip operations as well, the</div><div>possibilities expand to be able to perform bitmanipulation on FPRs.</div><div><br></div><div>l.<br></div></div>