summaryrefslogtreecommitdiffstats
path: root/content/zettel/3c3h2.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/zettel/3c3h2.md')
-rw-r--r--content/zettel/3c3h2.md32
1 files changed, 32 insertions, 0 deletions
diff --git a/content/zettel/3c3h2.md b/content/zettel/3c3h2.md
new file mode 100644
index 0000000..e9605bc
--- /dev/null
+++ b/content/zettel/3c3h2.md
@@ -0,0 +1,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.