summaryrefslogtreecommitdiffstats
path: root/content/zettel/3c3e.md
blob: ecea682ec34b0ed7c4480d3c3e4769dcf47b9de3 (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
+++
title = "Benefits of explicit basic blocks for scheduling"
author = "Yann Herklotz"
tags = []
categories = []
backlinks = ["3c3d"]
forwardlinks = ["3c3f", "3c3e1"]
zettelid = "3c3e"
+++

Explicit basic blocks for scheduling means that there is a much more
structured approach to the scheduling algorithm. But it also means that
the intermediate languages cannot be directly translated to RTL again,
as that language is unaware of basic blocks.

The benefit of having support of parallel execution in the target
language is that the scheduling can be much more powerful as well, as it
can express the parallel execution of instructions directly. This means
that any back end that can take advantage of these parallel instructions
can directly use their parallel nature, without having to do that in a
post-scheduling step.

In the worst case, this can then be translated back into a sequential
language anyways, if the goal was just to schedule instructions for a
sequential processor, which would have gotten rid of any inefficiencies
due to a back end specific scheduling algorithm. This would mean that
the back end can be taken advantage of for all the following back ends
that compcert has.