A unique processor architecture meeting LLVM IR and the IoT
Dávid Juhász david.juhasz@imsystech.com
4/2/2018 FOSDEM 2018 LLVM devroom 1
LLVM IR and the IoT Dvid Juhsz david.juhasz@imsystech.com 4/2/2018 - - PowerPoint PPT Presentation
A unique processor architecture meeting LLVM IR and the IoT Dvid Juhsz david.juhasz@imsystech.com 4/2/2018 1 FOSDEM 2018 LLVM devroom Compiling with LLVM High-Level Programming Language LLVM LLVM Front-end LLVM Assembly / IR LLVM
Dávid Juhász david.juhasz@imsystech.com
4/2/2018 FOSDEM 2018 LLVM devroom 1
4/2/2018 FOSDEM 2018 LLVM devroom 2
High-Level Programming Language LLVM Assembly / IR Your Typical Target ISA LLVM Front-end LLVM Back-end LLVM Middle-end
4/2/2018 FOSDEM 2018 LLVM devroom 3
High-Level Programming Language LLVM Assembly / IR Your Typical Target ISA LLVM Front-end LLVM Back-end LLVM Middle-end Imsys ISA for LLVM
4/2/2018 FOSDEM 2018 LLVM devroom 4
4/2/2018 FOSDEM 2018 LLVM devroom 5
Device Module IC IP
4/2/2018 FOSDEM 2018 LLVM devroom 6
4/2/2018 FOSDEM 2018 LLVM devroom 7
4/2/2018 FOSDEM 2018 LLVM devroom 8
Application Code C/C++ Java Executable Binary LLVM Integrated Development Environment
4/2/2018 FOSDEM 2018 LLVM devroom 9
High-Level Programming Language LLVM Assembly / IR Your Typical Target ISA LLVM Front-end LLVM Back-end LLVM Middle-end Imsys ISA for LLVM
4/2/2018 FOSDEM 2018 LLVM devroom 10
4/2/2018 FOSDEM 2018 LLVM devroom 11
4/2/2018 FOSDEM 2018 LLVM devroom 12
IO Microprogram Mult. ALU MEM Ctrl. Addr.
4/2/2018 FOSDEM 2018 LLVM devroom 13
Complete Deterministic Control Flexibility Soft- Reconfigurability Minimal Hardware Maximum Efficiency
4/2/2018 FOSDEM 2018 LLVM devroom 14
4/2/2018 FOSDEM 2018 LLVM devroom 15
Balanced Rich ISA Domain- specific Operations
4/2/2018 FOSDEM 2018 LLVM devroom 16
High-Level Programming Language LLVM Assembly / IR Your Typical Target ISA LLVM Front-end LLVM Back-end LLVM Middle-end Imsys ISA for LLVM
4/2/2018 FOSDEM 2018 LLVM devroom 17
Semantically matching instructions
LLVM back-end for ISAL
Simple, efficient, general LLVM
LLVM middle-end
Direct use of
4/2/2018 FOSDEM 2018 LLVM devroom 19
LLVM Assembly ISAL Operations Instructions & intrinsic functions Single Value Types Virtually unlimited Set of integer, floating point, pointer, and vector types Registers Unlimited Register windows Arguments Source and destination registers Registers with support of accumulating in source registers, immediate values Binary Representation Bitcode Custom dense binary coding Additional system operations
4/2/2018 FOSDEM 2018 LLVM devroom 20
dst src1 src2
Accumulating in source register
src1 src2
Immediate values
4/2/2018 FOSDEM 2018 LLVM devroom 21 50 100 150 200 250 300 350 400 450 500
Intstruction Lengths (Bytes)
7 198 465 258 161 11 1 4
Number of Instructions
1 2 3 4 5 6 7 8 9 10
Maximize Code Density Optimize Microcode Size Minimize Execution Time
0,5 1 1,5 2 2,5 Imsys Cortex-M0+ Cortex-M4 x86 x64 4/2/2018 FOSDEM 2018 LLVM devroom 22
ARM Cortex requires 35%+ more, Intel 80%+ more program memory.
4/2/2018 FOSDEM 2018 LLVM devroom 23
Dávid Juhász david.juhasz@imsystech.com
LLVM back-end for ISAL
Leaner is Meaner