diff options
Diffstat (limited to 'content/zettel/1c6b.md')
-rw-r--r-- | content/zettel/1c6b.md | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/content/zettel/1c6b.md b/content/zettel/1c6b.md new file mode 100644 index 0000000..a20fe01 --- /dev/null +++ b/content/zettel/1c6b.md @@ -0,0 +1,23 @@ ++++ +title = "Software pipelining needs MVE" +author = "Yann Herklotz" +tags = [] +categories = [] +backlinks = ["3c2", "1c6a"] +forwardlinks = ["2b2", "1c6c"] +zettelid = "1c6b" ++++ + +Modulo variable expansion (MVE) is needed because sometimes the +lifetimes of variables exceed the II, meaning they get overwritten after +II clock cycles even though they are needed afterwards. This is because +the next iteration of the loop is already executing and overwriting the +previous value of the register that was stored there. Hardware support +for rotating registers ([\#2b2]) could prevent this from happening, +otherwise, modulo variable expansion needs to be added to have the +correct lifetimes for each variable. For example, if the II is 3 and the +maximum lifetime of a variable is 12 cycles, then the loop needs to be +unrolled 4 times, as after 12 cycles the initial register can finally be +reused. Otherwise, a new register needs to be used for each value. + + [\#2b2]: /zettel/2b2 |