summaryrefslogtreecommitdiffstats
path: root/content/zettel/3c3h2.md
blob: e9605bce290bae191192b08fe358860b547bc981 (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
+++
title = "Implementing hyperblock scheduling in CompCert-KVX"
author = "Yann Herklotz"
tags = []
categories = []
backlinks = ["3c3h1"]
forwardlinks = ["3c3h3"]
zettelid = "3c3h2"
+++

One way to compare hyperblock scheduling to superblock scheduling would
be to implement it in CompCert-KVX, and therefore show the difference
between the two types of scheduling directly. However, the main issue
with this comparison is that this requires quite a lot of work to do,
but might also not provide any useful comparison.

Firstly, hyperblock scheduling is quite different to superblock
scheduling, and if the processor does not support predicated execution
natively, then it might be much more efficient to use superblock
scheduling to approximate a trace schedule. However, for high-level
synthesis, where we have full control over the hardware that is
generated, it might be better to use hyperblock scheduling because we
could have predicated expressions.

Secondly, to even use hyperblock scheduling in an environment that does
not have predicated execution would mean that one would have to
implement reverse if-conversion. Naïve if-conversion would be easy to
implement, however, to not lose any of the performance that was gained
by using the scheduling, one would have to implement reverse
if-conversion based on some heuristics. This means that one would be
comparing the implementation of reverse if-conversion as well as the
implementation of the scheduling against superblock scheduling.