back

by dochtman·12y ago·view on hn ↗
I wonder what the compilers would be like. If these guys contribute, say, an LLVM backend, that would make it so much easier to support.
1 comments
(Mill team)

We are in fact working on an LLVM backend right now.

This will generate Mill IR, which will be 'specialised' on-target so will run on all Mill family members.

Will you contribute it to upstream, or keep it closed source?
No good reason to make it closed source. Any users would need Mill hardware.
icc isn't open source, is it?
Intel are in a perpetual war with another vendor with the same instruction set for which some of their optimizations are generally applicable, to the point that ICC used to intentionally cripple AMD hardware: http://www.agner.org/optimize/blog/read.php?i=49#49

Thus there's a disincentive for Intel to release their optimizer's tricks: not only are at least some percentage of the optimizations applicable to their competitor's microarchitecture implementing the same ISA, but they probably reveal various Intel CPU internals that Intel consider trade secrets (similar to the argument against open-sourcing 3D drivers and shader compilers).

Mill is not going to be locked into a bitter head-to-head battle with someone else trying to implement the same ISA better (at least not for a long time), so there's no incentive for them to hide their CPU's internal optimizations and no competition for which compiler optimizations could be generally applicable.

I always assumed that the parts of icc that Intel want to keep secret aren't in the backend, they're in the optimisation phases, which could be ported to compilers for other architectures.
Contribute it.
Wait, does this mean your approach to static scheduling is in fact just-in-time compilation? Nifty, I can see how that would work. :)
How about a JVM?
Seems much more sensible as a quicker commercialization approach.

Java code does not depend on hardware memory models but a defined memory model. Much easier to validate your jvm is valid than all C programs that clients might want to run.

You could even have mills cpus on PCI cards in a standard X86 machine, where the java executable passes the program to the the mills on the PCI to run. A bit like how Azul and their vega machines worked (although those where network attached).

Yes please. Its a stack machine anyway, so it should map nicely to the hardware right?
The Mill is closer to a queue machine [1] than a stack machine.

[1] http://en.wikipedia.org/wiki/Queue_automaton

Can't wait for Mill on Rails as well.