Mill Computing, Inc. › Forums › Announcements › Events › Ivan Godard and Mill at the 2015 European LLVM Conference
- AuthorPosts
- #1726 |
Ivan Godard and Mill at the 2015 European LLVM Conference
- What: The 5th European LLVM Meeting
- Why: To network, learn how LLVM is used, and exchange ideas
- When: Monday 13th – Tuesday 14th April 2015
- Where: London, UK Goldsmiths College
Details and registration can be found at http://llvm.org/devmtg/2015-04/
Ivan Godard will be speaking on Tuesday, April 14th, from 9:00 AM to 10:00 AM London time.
LLVM meets the truly alien: the Mill CPU architecture in a multi-target tool chainThe Mill is a new commercial CPU family reflecting a ground-up rethink of single-thread architecture
- Mill has no general registers
- Mill is SSA – in hardware
- Mill code has two instruction streams and two program counters, one of which runs backwards
- Mill instructions look (kinda) like six VLIWs, side-by-side
- Mill operations are polymorphic, both for scalar width and vector length
- x = a < 0x12345678901234567 ? F(G(b+c), e-f) : g + h; is (less than) one instruction
- and much more
As a result, the Mill tool chain is – different. Except that it is LLVM. The retarget is not yet done, and has been – interesting. In the Chinese sense of interesting. The talk will explain how the Mill tool chain works, and why it is done that way, and where LLVM fits into it. Or doesn’t. Ranting and raving will ensue.
“a < 0x12345678901234567”, that’s a 68-bit literal. Is that supported?
Quad constants are supported on a quad member, but the example wasn’t intended to imply any particular length.
@david, re 68-bit literals,
Quite possibly. If you look at the flow-side decoding, outlined in:
http://millcomputing.com/wiki/Decode#Flow_Stream, you’ll see that it’s very different from the exu side encode/decode that Ivan described in the encoding talk.Flow-side has both Manifests (up to 32 bits) and extensions (up to 3x morsel width, member dependent, 5 bits on gold), which suggests that each const operation could drop a 32 bit (or on gold potentially 32 + 3*5 = 57 bit) constant. Mill members with enough flow-side slots can thus drop a whole lot of bits of constant per instruction.
What I’m less clear on — and hope to learn — is how the results of multiple const operations can be combined into a 64-bit (or evidently slightly longer) constant, not only in the same instruction, but in time to be used in opPhase, for the (ganged subtract/less-than) comparison in Ivan’s single-instruction example above. Ivan’s rather busy today, I’d imagine! 😉
But maybe one of the other Millcomputing gurus will answer in the near future.- This reply was modified 9 years, 8 months ago by LarryP.
32+(3*5) != 57 🙂
The con() op uses the same flow-side bit-bunching that is used by the polyadic ops like call() and conform(). The extra slots encode the flowArg() pseudo-op, so you can consider it a flow-side gang.
The bit-bunching happens for all the flow side ops, starting in D0; all the extension and manifest bits are moved to a long array with 47 (Gold) bits per slot. The move is controlled by two two-bit fields at fixed position in every op in the slot, so we can do the move without parsing the op or even knowing how many real ops there are. In D1 we know how many 47-bit elements are associated with each op, and for con we chop those out and ship them to the belt crossbar in time for the con to drop at the end of D2. The “<" is in X0 a.k.a D3, so it can use the literal. Ain't phasing lovely!
My misunderstanding. For some reason I confused the “always 64 bit” with the integer size, instead of just the addressing space. The test “x < [>64-bit constant]” would be constantly true if x was max 64 bits in length. But with 128-bit integers, my question is moot.
For some reason I had the impression that this talk was recorded. Was it?
It was recorded ny the LLVM folks, although I don’t know if they have made it available. It was not recorded by us.
Most talks there have links to slides. Could you post slides to the Mill talk?
Essentially all of the LLVM talk, except very explicit LLVM issues, will be covered in our upcoming June 10 talk (see the “Events” list, which will be videoed and posted here as usual. Please be patient 🙂
We have waited quite a while for a video of this talk by now…
It was given yesterday, and post-production usually is a couple of weeks.
Really excited to see this lecture or the SF C/C++ talk of the same as a video. I bet you guys are super busy, but please put some time into publishing this!
Create/link compiler talk to a forum topic?
Greetings all,
Would whoever can do so, please link the compiler talk to a (new, I presume) forum topic, so that we may comment on it and see other folks comments, all in the same place?
Thanks,
Larry
I’m not sure what you are asking here. If you go to The Compiler, which is where the top menu bar item ‘The Compiler’ under ‘docs/videos/slides’ gets you, there was a link at the top of that page to the forum topic since the video was posted.
- AuthorPosts
You must be logged in to reply to this topic.