Skip to content
Mill CPU Toolchain

Details

Speaker: Ivan Godard

Abstract:

The Mill is a new general-purpose CPU architecture family that forms a uniquely challenging target for compilation – and also a uniquely easy target. This talk describes the Mill tool chain from language front end to binary executable.

While based on the LLVM toolset, the Mill tool chain is unusual in that it splits the usual compiler back-end off into a separate tool, the specializer, which generates executable binary (conAsm) for a particular family member from an abstract form (genAsm) that is Mill-specific but not family-member specific. The conAsm assembler is actually the C++ compiler, while genAsm is a dataflow language, essentially a programmable representation of a single-assignment compiler IR.

The Mill has no general registers. Instead, intermediate results are placed on the Belt, a fixed-length queue, and these operands are accessed by temporal addressing. A Mill operation in effect says “add the third most recent value to drop on the belt to the fifth most recent, and drop the result at the front of the belt, and then discard the oldest value from the other end of the belt”. It is also a (very) wide issue machine, and many of these actions are taking place concurrently each cycle. The tool chain, or rather the specializer component, must track the location of operands as they move along the belt, because their address changes as other operations are executed and drop results. In addition, the Mill is statically scheduled with an exposed pipeline, so an operation may produce its results several cycles after the operation was issued, possibly with intervening control flow.

This belt structure leads to unique needs for operation scheduling and operand spilling. These needs are the temporal equivalent of instruction selection, register coloring, and spill on a conventional machine. The talk concludes by explaining the algorithms used.

Ivan Godard has designed, implemented and led the teams for 11 compilers for a variety of languages and targets, an operating system, an object-oriented database, and four instruction set architectures. He participated in the revision of Algol68 and is mentioned in its Report, was on the Green team that won the Ada language competition, designed the Mary family of system implementation languages, and was founding editor of the Machine Oriented Languages Bulletin. He is a Member Emeritus of IFIPS Working Group 2.4 (Implementation languages) and was a member of the committee that produced the IEEE and ISO floating-point standard 754-2011. Ivan is currently CTO at Mill Computing. Mill Computing has developed the Mill, a clean-sheet rethink of general-purpose CPU architectures. The Mill is the subject of this talk.

Photo of Cpp Bay Area: C++ Programming In and Around Silicon Valley group
Cpp Bay Area: C++ Programming In and Around Silicon Valley
See more events