summaryrefslogtreecommitdiffstats
path: root/content/zettel/3c1.md
blob: 6c9450a9a1a2ada4d4cd6d092482f148770d0eed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
+++
title = "Combining Loop Pipelining and Scheduling "
author = "Yann Herklotz"
tags = []
categories = []
backlinks = ["3c", "1c6"]
forwardlinks = ["1c6", "1c6a", "3c2"]
zettelid = "3c1"
+++

A [high-level synthesis] tool needs to perform various optimisations to.

The idea is to simulate full resource constrained scheduling with loop
pipelining ([\#1c6]) by splitting up the transformation into two steps.
One thing to consider is that this is software loop scheduling
([\#1c6a]).

1.  First, resource constrained iterative modulo scheduling \[1\] can be
    performed, which only affects loops and schedules each instruction
    into a clock cycle. This can move instructions over loop boundaries
    to create a more compact schedule and pipeline the instructions.
2.  Second, resource constrained scheduling can be performed on all the
    instructions in the program, by limiting each schedule to a basic
    block at a time. This will parallelise the epilogue that was
    generated in the iterative modulo scheduling step.

<div id="refs" class="references csl-bib-body" markdown="1">

<div id="ref-rau96_iterat_modul_sched" class="csl-entry" markdown="1">

<span class="csl-left-margin">\[1\]
</span><span class="csl-right-inline">B. R. Rau, “Iterative modulo
scheduling,” *International Journal of Parallel Programming*, vol. 24,
no. 1, pp. 364, Feb. 1996, Available:
<https://doi.org/10.1007/BF03356742></span>

</div>

</div>

  [high-level synthesis]: hls.org
  [\#1c6]: /zettel/1c6
  [\#1c6a]: /zettel/1c6a