From: lkcl Date: Thu, 20 Apr 2023 15:09:26 +0000 (+0100) Subject: (no commit message) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=85b46a42736f37b8e27889022e1332573e46591c;p=libreriscv.git --- diff --git a/openpower/sv/remap.mdwn b/openpower/sv/remap.mdwn index 89fe28aa8..112e9474a 100644 --- a/openpower/sv/remap.mdwn +++ b/openpower/sv/remap.mdwn @@ -198,6 +198,26 @@ of the Micro-Architecture the Hardware Engineer should first consider how best to process the exact same equivalent loop-unrolled instruction stream.* +## Horizontal-Parallelism Hint + +`SVSTATE.hphint` is an indicator to hardware of how many elements are 100% +fully independent. Hardware is permitted to assume that groups of elements +up to `hphint` in size need not have Register (or Memory) Hazards created +between them (including when `hphint > VL`). + +If care is not taken in setting `hphint` correctly it may wreak havoc. +For example Matrix Outer Product relies on the innermost loop computations +being independent. If `hphint` is set to greater than the Outer Product +depth then data corruption is guaranteed to occur. + +Likewise on FFTs it is assumed that each layer of the RADIX2 triple-loop +is independent, but that there is strict *inter-layer* Register Hazards. +Therefore if `hphint` is set to greater than the RADIX2 width of the FFT, +data corruption is guaranteed. + +Thus the key message is that setting `hphint` requires in-depth knowledge +of the REMAP Algorithm Schedules, given in the Appendix. + ## REMAP types This section summarises the motivation for each REMAP Schedule