Mill Computing, Inc. › Forums › Announcements › Events › Ivan Godard and Mill at the 2015 European LLVM Conference
- Brian DelaneyKeymasterApril 9, 2015 at 1:18 pmPost count: 3#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 chain
The 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.
- DavidParticipantApril 10, 2015 at 5:21 pmPost count: 32
“a < 0x12345678901234567”, that’s a 68-bit literal. Is that supported?
- Ivan GodardKeymasterApril 17, 2015 at 10:48 pmPost count: 679
Quad constants are supported on a quad member, but the example wasn’t intended to imply any particular length.
- LarryPParticipantApril 14, 2015 at 6:20 amPost count: 78
@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 8 years, 1 month ago by LarryP.
- Ivan GodardKeymasterApril 17, 2015 at 11:01 pmPost count: 679
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!
- DavidParticipantApril 14, 2015 at 1:57 pmPost count: 32
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.
- mermericoModeratorMay 23, 2015 at 9:23 pmPost count: 10
For some reason I had the impression that this talk was recorded. Was it?
- Ivan GodardKeymasterMay 23, 2015 at 10:48 pmPost count: 679
It was recorded ny the LLVM folks, although I don’t know if they have made it available. It was not recorded by us.
- striepanParticipantMay 29, 2015 at 12:08 amPost count: 3
Most talks there have links to slides. Could you post slides to the Mill talk?
- Ivan GodardKeymasterMay 29, 2015 at 12:27 amPost count: 679
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 🙂
- FindecanorParticipantJune 11, 2015 at 3:21 pmPost count: 25
We have waited quite a while for a video of this talk by now…
- Ivan GodardKeymasterJune 11, 2015 at 4:38 pmPost count: 679
It was given yesterday, and post-production usually is a couple of weeks.
- emraineyParticipantJuly 8, 2015 at 10:00 amPost count: 3
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!
- Ivan GodardKeymasterJuly 9, 2015 at 3:18 amPost count: 679
Your wish is our command 🙂
It’s at http://millcomputing.com/docs/compiler/
- LarryPParticipantJuly 22, 2015 at 9:03 amPost count: 78
Create/link compiler talk to a forum topic?
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?
- staffKeymasterJuly 22, 2015 at 9:13 amPost count: 48
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.
You must be logged in to reply to this topic.