From 0d3d9f66a14c479dd3e2477840912469959ca8fd Mon Sep 17 00:00:00 2001 From: lkcl Date: Fri, 19 May 2023 20:05:28 +0100 Subject: [PATCH] --- openpower/sv/remap.mdwn | 44 +++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/openpower/sv/remap.mdwn b/openpower/sv/remap.mdwn index 2f111b483..44ea780e0 100644 --- a/openpower/sv/remap.mdwn +++ b/openpower/sv/remap.mdwn @@ -96,27 +96,7 @@ Further details on the Deterministic Precise-Interruptible algorithms used in these Schedules is found in the [[sv/remap/appendix]]. -## 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. - -## Determining Register Hazards +## Determining Register Hazards (hphint) For high-performance (Multi-Issue, Out-of-Order) systems it is critical to be able to statically determine the extent of Vectors in order to @@ -154,6 +134,28 @@ the Write-Hazards for result registers the corresponding Write-Hazards for the corresponding associated co-result CR Field must not be forgotten, *including* when Predication is used. +**Horizontal-Parallelism Hint** + +To help further in reducing Hazards, +`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`, which greatly aids simplification of +Multi-Issue implementations. + +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 area of SVSTATE SPR The following bits of the SVSTATE SPR are used for REMAP: -- 2.30.2