This lecture explains the Mill CPU's compiler toolchain, focusing on VLIW scheduling, latency passes, and targeting family members.
Please share via this link: MillComputing.com/docs/compiler
00 intro
04 Mill family
06 Late binding to family member
06 The Specializer
07 Specializer inputs – family member specification
08 Specializer inputs – code
09 Substitution pass
10 Wide issue
11 Exposed pipeline
12 Producers near consumers
14 Latency pass
15 Dependency count pass
16 Schedule pass
22 Placement pass
28 Symex pass (preview)
29 The Belt (review of earlier talk)
35 Symex pass, 1
43 Us it or lose it
44 The scratchpad
45 Symex pass, 2
47 The load problem
48 Every CPU’s goal – hide memory latency
49 Mill “deferred loads”
58 Questions
How is the belt implemented in hardware?
How does family member belt size affect performance?
How does the scheduling compare to optimal?
How does the delay argument to load work?
How does the scheduling compare to optimal?
What happens when overwriting an output register?
What happens on the belt for a function call?
How does the Mill do stackless Python or coroutines?
How does the belt not run out of frame numbers?
What happens on the belt for a function call?
Number of gates comparable to a DSP
Any plans for an FPGA?
The investor mailing list
We are a sweat-equity operation.
Why it's here
1 person recommends this
What people say. Recommended for its fascinating insights into VLIW compiler design and hardware-software co-design.
a
anotherhueon Hacker News • Recommends
On “Ask HN: Why did stack-based CPUs lose out?”
The (disconcertingly silent) Mill CPU company have a design talk that covers these concepts wonderfully in the general form, while explaining their various innovations. e.g. this video describes how their VLIW compiler does partial compilation/'specialisation' to allow the same input to be consumed on machines with different variations of hardware features. link to this video
…tion could have an add and a multiply, where the result of the add is used as input for the multiplication. So while the operations are grouped in a single instruction, they're not executed strictly in parallel. There's a lot of other aspects too, that's just the one I remember. But yeah, really curious to know how that pudding will turn out. 1: link to this video…