Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The BondMachine: a fully reconfigurable computing ecosystem

162 views

Published on

The aim of the BondMachine (BM) project is to implement a computing system to enable a real and full exploitation of the underlying hardware. This is a key to the success in the era of hybrid computing. In order to achieve this objective the BM has been designed to create a heterogeneous and flexible architecture on top of FPGAs. Moreover the overall vision is based on a reduction of the number of hardware/software layers which by product guarantees a simpler software development. As such, the BM project has been thought as a complete reconfigurable computing ecosystem that, starting from a high-level description, creates both the hardware and the software that runs on it.

The two architectural pillars are computing elements (processors) and non-computing elements (for example memories, channels, barriers). The latter are meant to be shared among processors. Finally, thanks to a custom network protocol, many BondMachines can be interconnected together, therefore building heterogeneous multi-core systems or even clusters of multi-cores.

The flexibility of the BM makes possible the implementation of any computing system ranging from networks of small agents, like IoT (Internet of Things), to high-performance devices for ML (Machine Learning) or real time data analysis, and even systems that mix all this different characteristics together. The BM can interact with standard Linux workstations both as a special purpose hardware accelerator or as part of a computer/BM hybrid clusters.

Published in: Devices & Hardware
  • Be the first to comment

  • Be the first to like this

The BondMachine: a fully reconfigurable computing ecosystem

  1. 1. BondMachine A Moldable Computer Architecture Mirko Mariotti Department of Physics and Geology - University of Perugia February 23, 2018
  2. 2. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Contents Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Mirko Mariotti BondMachine February 23, 2018 2/75
  3. 3. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Introduction The BondMachine: a comprehensive approach to computing. In this presentation i will talk about: Ideas that bring to the BondMachine. What is it. Developed software tools. Hardware implementation. Use cases. Mirko Mariotti BondMachine February 23, 2018 3/75
  4. 4. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Quick facts about the project Started in May 2015 as a Verilog ”garage” experiment, with the idea of creating a processor on an FPGA, so completely bottom-up. A prototype in every aspects. Mirko Mariotti BondMachine February 23, 2018 4/75
  5. 5. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Mirko Mariotti BondMachine February 23, 2018 5/75
  6. 6. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  7. 7. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  8. 8. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  9. 9. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  10. 10. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  11. 11. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  12. 12. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  13. 13. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  14. 14. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  15. 15. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures Base for the first idea Today’s computer architecture are: Multicore,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number. Parallel algorithms. Heterogeneous, processing units of different type. Cell, GPU, Parallela, TPU. The power is given by the specialization. Hard to make units communicate. Hard to program. Hard to schedule. Mirko Mariotti BondMachine February 23, 2018 6/75
  16. 16. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Computer Architectures First idea Having a multi-core architecture completely heterogeneous both in cores types and interconnections. Mirko Mariotti BondMachine February 23, 2018 7/75
  17. 17. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layer, Abstractions and Interfaces Mirko Mariotti BondMachine February 23, 2018 8/75
  18. 18. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layer, Abstractions and Interfaces Introduction A Computing system is a matter of abstraction and interfaces. A lower layer exposes its functionalities (via interfaces) to the above layer hiding (abstraction) its inner details. The quality of a computing system is determined by how abstractions are simple and how interfaces are clean. Mirko Mariotti BondMachine February 23, 2018 9/75
  19. 19. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language User mode Kernel mode Processor Transistors Mirko Mariotti BondMachine February 23, 2018 10/75
  20. 20. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language User mode Kernel mode Processor Register Machine Transistors Mirko Mariotti BondMachine February 23, 2018 10/75
  21. 21. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language User mode Kernel mode Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine February 23, 2018 10/75
  22. 22. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language User mode Kernel mode Kernel Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine February 23, 2018 10/75
  23. 23. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language User mode Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine February 23, 2018 10/75
  24. 24. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language User mode Standard Library Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine February 23, 2018 10/75
  25. 25. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine February 23, 2018 10/75
  26. 26. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language Compiler/Interpreter User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine February 23, 2018 10/75
  27. 27. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine February 23, 2018 10/75
  28. 28. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Mirko Mariotti BondMachine February 23, 2018 10/75
  29. 29. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Software Mirko Mariotti BondMachine February 23, 2018 10/75
  30. 30. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Specialization Software Mirko Mariotti BondMachine February 23, 2018 10/75
  31. 31. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Specialization Software Generalization Mirko Mariotti BondMachine February 23, 2018 10/75
  32. 32. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Specialization Performance Software Generalization Mirko Mariotti BondMachine February 23, 2018 10/75
  33. 33. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces The base for the second idea Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Specialization Performance Software Generalization Userfriendly Mirko Mariotti BondMachine February 23, 2018 10/75
  34. 34. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces Second idea Build a computing system with a decreased number of layers resulting in a minor gap between HW and SW but keeping an user friendly way of programming it. Mirko Mariotti BondMachine February 23, 2018 11/75
  35. 35. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Introducing the BondMachine (BM) Inspired from both the ideas we create a new computer architecture that: Is composed by many, possibly hundreds, computing cores. Has very small cores and not necessarily of the same type (different ISA and ABI). Has a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti BondMachine February 23, 2018 12/75
  36. 36. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Introducing the BondMachine (BM) Inspired from both the ideas we create a new computer architecture that: Is composed by many, possibly hundreds, computing cores. Has very small cores and not necessarily of the same type (different ISA and ABI). Has a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti BondMachine February 23, 2018 12/75
  37. 37. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Introducing the BondMachine (BM) Inspired from both the ideas we create a new computer architecture that: Is composed by many, possibly hundreds, computing cores. Has very small cores and not necessarily of the same type (different ISA and ABI). Has a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti BondMachine February 23, 2018 12/75
  38. 38. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Introducing the BondMachine (BM) Inspired from both the ideas we create a new computer architecture that: Is composed by many, possibly hundreds, computing cores. Has very small cores and not necessarily of the same type (different ISA and ABI). Has a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti BondMachine February 23, 2018 12/75
  39. 39. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Introducing the BondMachine (BM) Inspired from both the ideas we create a new computer architecture that: Is composed by many, possibly hundreds, computing cores. Has very small cores and not necessarily of the same type (different ISA and ABI). Has a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti BondMachine February 23, 2018 12/75
  40. 40. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Connecting Processor (CP) The computational unit of the BM The atomic computational unit of a BM is the “connecting processor” (CP) and has: Some general purpose registers of size Rsize. Some I/O dedicated registers of size Rsize. A set of implemented opcodes chosen among many available. Dedicated ROM and RAM. Three possible operating modes. Mirko Mariotti BondMachine February 23, 2018 13/75
  41. 41. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Connecting Processor (CP) The computational unit of the BM The atomic computational unit of a BM is the “connecting processor” (CP) and has: Some general purpose registers of size Rsize. Some I/O dedicated registers of size Rsize. A set of implemented opcodes chosen among many available. Dedicated ROM and RAM. Three possible operating modes. General purpose registers 2R registers: r0,r1,r2,r3 ... r2R Mirko Mariotti BondMachine February 23, 2018 13/75
  42. 42. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Connecting Processor (CP) The computational unit of the BM The atomic computational unit of a BM is the “connecting processor” (CP) and has: Some general purpose registers of size Rsize. Some I/O dedicated registers of size Rsize. A set of implemented opcodes chosen among many available. Dedicated ROM and RAM. Three possible operating modes. I/O specialized registers N input registers: i0,i1 ... iN M output registers: o0,o1 ... oM Mirko Mariotti BondMachine February 23, 2018 13/75
  43. 43. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Connecting Processor (CP) The computational unit of the BM The atomic computational unit of a BM is the “connecting processor” (CP) and has: Some general purpose registers of size Rsize. Some I/O dedicated registers of size Rsize. A set of implemented opcodes chosen among many available. Dedicated ROM and RAM. Three possible operating modes. Full set of possible opcodes add,addf,addi,chc,chw,clr,cpy,dec,divf,dpc,hit,hlt,i2r,inc,j, je,jz,m2r,mult,multf,nop,r2m,r2o,r2s,rset,sic,s2r,saj,sub, wrd,wwr Mirko Mariotti BondMachine February 23, 2018 13/75
  44. 44. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Connecting Processor (CP) The computational unit of the BM The atomic computational unit of a BM is the “connecting processor” (CP) and has: Some general purpose registers of size Rsize. Some I/O dedicated registers of size Rsize. A set of implemented opcodes chosen among many available. Dedicated ROM and RAM. Three possible operating modes. RAM and ROM 2L RAM memory cells. 2O ROM memory cells. Mirko Mariotti BondMachine February 23, 2018 13/75
  45. 45. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Connecting Processor (CP) The computational unit of the BM The atomic computational unit of a BM is the “connecting processor” (CP) and has: Some general purpose registers of size Rsize. Some I/O dedicated registers of size Rsize. A set of implemented opcodes chosen among many available. Dedicated ROM and RAM. Three possible operating modes. Operating modes Full Harvard mode. Full Von Neuman mode. Hybrid mode. Mirko Mariotti BondMachine February 23, 2018 13/75
  46. 46. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Connecting Processor (CP) Full set of possible opcodes Mirko Mariotti BondMachine February 23, 2018 14/75
  47. 47. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Shared Objects (SO) Alongside CPs, BondMachines include non-computing units called “Shared Objects” (SO). Examples of their purposes are: Data storage (Memories). Message passing. CP synchronization. A single SO can be shared among different CPs. To use it CPs have special instructions (opcodes) oriented to the specific SO. Three kind of SO have been developed so far: the Channel, the Shared Memory and the Barrier. Mirko Mariotti BondMachine February 23, 2018 15/75
  48. 48. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Shared Objects (SO) Alongside CPs, BondMachines include non-computing units called “Shared Objects” (SO). Examples of their purposes are: Data storage (Memories). Message passing. CP synchronization. A single SO can be shared among different CPs. To use it CPs have special instructions (opcodes) oriented to the specific SO. Three kind of SO have been developed so far: the Channel, the Shared Memory and the Barrier. Mirko Mariotti BondMachine February 23, 2018 15/75
  49. 49. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Shared Objects (SO) Alongside CPs, BondMachines include non-computing units called “Shared Objects” (SO). Examples of their purposes are: Data storage (Memories). Message passing. CP synchronization. A single SO can be shared among different CPs. To use it CPs have special instructions (opcodes) oriented to the specific SO. Three kind of SO have been developed so far: the Channel, the Shared Memory and the Barrier. Mirko Mariotti BondMachine February 23, 2018 15/75
  50. 50. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Shared Objects (SO) Alongside CPs, BondMachines include non-computing units called “Shared Objects” (SO). Examples of their purposes are: Data storage (Memories). Message passing. CP synchronization. A single SO can be shared among different CPs. To use it CPs have special instructions (opcodes) oriented to the specific SO. Three kind of SO have been developed so far: the Channel, the Shared Memory and the Barrier. Mirko Mariotti BondMachine February 23, 2018 15/75
  51. 51. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Shared Objects (SO) Alongside CPs, BondMachines include non-computing units called “Shared Objects” (SO). Examples of their purposes are: Data storage (Memories). Message passing. CP synchronization. A single SO can be shared among different CPs. To use it CPs have special instructions (opcodes) oriented to the specific SO. Three kind of SO have been developed so far: the Channel, the Shared Memory and the Barrier. Mirko Mariotti BondMachine February 23, 2018 15/75
  52. 52. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Shared Objects (SO) Alongside CPs, BondMachines include non-computing units called “Shared Objects” (SO). Examples of their purposes are: Data storage (Memories). Message passing. CP synchronization. A single SO can be shared among different CPs. To use it CPs have special instructions (opcodes) oriented to the specific SO. Three kind of SO have been developed so far: the Channel, the Shared Memory and the Barrier. Mirko Mariotti BondMachine February 23, 2018 15/75
  53. 53. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Channel The Channel SO is an hardware implementation of the CSP (communicating sequential processes) channel. It is a model for inter-core communication and synchronization via message passing. CPs use channels via 4 opcodes wrd: Want Read. wwr: Want Write. chc: Channel Check. chw: Channel Wait. Mirko Mariotti BondMachine February 23, 2018 16/75
  54. 54. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Channel The Channel SO is an hardware implementation of the CSP (communicating sequential processes) channel. It is a model for inter-core communication and synchronization via message passing. CPs use channels via 4 opcodes wrd: Want Read. wwr: Want Write. chc: Channel Check. chw: Channel Wait. Mirko Mariotti BondMachine February 23, 2018 16/75
  55. 55. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Channel The Channel SO is an hardware implementation of the CSP (communicating sequential processes) channel. It is a model for inter-core communication and synchronization via message passing. CPs use channels via 4 opcodes wrd: Want Read. wwr: Want Write. chc: Channel Check. chw: Channel Wait. Mirko Mariotti BondMachine February 23, 2018 16/75
  56. 56. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Shared Memory The Shared Memory SO is a RAM block accessible from more than one CP. Different Shared Memories can be used by different CP and not necessarily by all of them. CPs use shared memories via 2 opcodes s2r: Shared memory read. r2s: Shared memory write. Mirko Mariotti BondMachine February 23, 2018 17/75
  57. 57. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Shared Memory The Shared Memory SO is a RAM block accessible from more than one CP. Different Shared Memories can be used by different CP and not necessarily by all of them. CPs use shared memories via 2 opcodes s2r: Shared memory read. r2s: Shared memory write. Mirko Mariotti BondMachine February 23, 2018 17/75
  58. 58. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Shared Memory The Shared Memory SO is a RAM block accessible from more than one CP. Different Shared Memories can be used by different CP and not necessarily by all of them. CPs use shared memories via 2 opcodes s2r: Shared memory read. r2s: Shared memory write. Mirko Mariotti BondMachine February 23, 2018 17/75
  59. 59. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Barrier The Barrier SO is used to make CPs act synchronously. When a CP hits a barrier, the execution stop until all the CPs that share the same barrier hit it. CPs use barriers via 1 opcode hit: Hit the barrier. Mirko Mariotti BondMachine February 23, 2018 18/75
  60. 60. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Barrier The Barrier SO is used to make CPs act synchronously. When a CP hits a barrier, the execution stop until all the CPs that share the same barrier hit it. CPs use barriers via 1 opcode hit: Hit the barrier. Mirko Mariotti BondMachine February 23, 2018 18/75
  61. 61. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Barrier The Barrier SO is used to make CPs act synchronously. When a CP hits a barrier, the execution stop until all the CPs that share the same barrier hit it. CPs use barriers via 1 opcode hit: Hit the barrier. Mirko Mariotti BondMachine February 23, 2018 18/75
  62. 62. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work The BondMachine Mirko Mariotti BondMachine February 23, 2018 19/75
  63. 63. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Multicore and Heterogeneous First idea on the BondMachine The idea was: Having a multi-core architecture completely heterogeneous both in cores types and interconnections. The BondMachine may have many cores, eventually all different, arbitrarily interconnected and sharing non computing elements. Mirko Mariotti BondMachine February 23, 2018 20/75
  64. 64. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Tools The complexity of programming the BondMachine architec- ture is managed by using a set of software tools to: build a specify architecture as function of the task, modify the created architecture, simulate the behavior and to check the functionality with the aim to generate the Register Transfer Level (RTL) code. Processor Builder selects the CP specifics, assembles and dis- assembles, saves on disk as JSON, emulates and creates the RTL code. BondMachine Builder connects CPs and SOs together in cus- tom topologies, loads and saves on disk as JSON, emulates and creates the RTL code. Mirko Mariotti BondMachine February 23, 2018 21/75
  65. 65. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Tools The complexity of programming the BondMachine architec- ture is managed by using a set of software tools to: build a specify architecture as function of the task, modify the created architecture, simulate the behavior and to check the functionality with the aim to generate the Register Transfer Level (RTL) code. Processor Builder selects the CP specifics, assembles and dis- assembles, saves on disk as JSON, emulates and creates the RTL code. BondMachine Builder connects CPs and SOs together in cus- tom topologies, loads and saves on disk as JSON, emulates and creates the RTL code. Mirko Mariotti BondMachine February 23, 2018 21/75
  66. 66. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Tools The complexity of programming the BondMachine architec- ture is managed by using a set of software tools to: build a specify architecture as function of the task, modify the created architecture, simulate the behavior and to check the functionality with the aim to generate the Register Transfer Level (RTL) code. Processor Builder selects the CP specifics, assembles and dis- assembles, saves on disk as JSON, emulates and creates the RTL code. BondMachine Builder connects CPs and SOs together in cus- tom topologies, loads and saves on disk as JSON, emulates and creates the RTL code. Mirko Mariotti BondMachine February 23, 2018 21/75
  67. 67. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Processor Builder Procbuilder is the CP manipulation tool. CP Creation CP Load/Save CP Assembler/Disassembler CP RTL Examples (32 bit registers counter machine) procbuilder -register-size 32 -opcodes clr,cpy,dec,inc,je,jz (CP dedicated RAM and ROM) procbuilder -ram 256 ... ; procbuilder -rom 16 ... (Input and Output registers) procbuilder -inputs 3 -outputs 2 ... Mirko Mariotti BondMachine February 23, 2018 22/75
  68. 68. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Processor Builder Procbuilder is the CP manipulation tool. CP Creation CP Load/Save CP Assembler/Disassembler CP RTL Examples (Loading a CP) procbuilder -load-machine conproc.json ... (Saving a CP) procbuilder -save-machine conproc.json ... Mirko Mariotti BondMachine February 23, 2018 22/75
  69. 69. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Processor Builder Procbuilder is the CP manipulation tool. CP Creation CP Load/Save CP Assembler/Disassembler CP RTL Examples (Assembiling) procbuilder -input-assembly program.asm ... (Disassembling) procbuilder -show-program-disassembled ... Mirko Mariotti BondMachine February 23, 2018 22/75
  70. 70. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Processor Builder Procbuilder is the CP manipulation tool. CP Creation CP Load/Save CP Assembler/Disassembler CP RTL Examples (Create the CP RTL code in Verilog) procbuilder -create-verilog ... (Create testbench) procbuilder -create-verilog-testbench test.v ... Mirko Mariotti BondMachine February 23, 2018 22/75
  71. 71. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Add a processor) bondmachine -add-domains processor.json ... bondmachine -add-processor 0 ... (Remove a processor) bondmachine -bondmachine-file bmach.json -del-processor n Mirko Mariotti BondMachine February 23, 2018 23/75
  72. 72. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Add a Shared Object) bondmachine -add-shared-objects specs ... (Connect an SO to a processor) bondmachine -connect-processor-shared-object ... Mirko Mariotti BondMachine February 23, 2018 23/75
  73. 73. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Adding inputs or outputs) bondmachine -add-inputs ... ; bondmachine -add-outputs ... (Removing inputs or outputs) bondmachine -del-input ... ; bondmachine -del-output ... Mirko Mariotti BondMachine February 23, 2018 23/75
  74. 74. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Bonding processor) bondmachine -add-bond p0i2,p1o4 ... (Bonding IO) bondmachine -add-bond i2,p0i6 ... Mirko Mariotti BondMachine February 23, 2018 23/75
  75. 75. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Visualizing) bondmachine -emit-dot ... (Create RTL code) bondmachine -create-verilog ... Mirko Mariotti BondMachine February 23, 2018 23/75
  76. 76. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work BondMachine web front-end Operations on BondMachines can also be performed via a developed web framework Mirko Mariotti BondMachine February 23, 2018 24/75
  77. 77. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Simulation An important feature of the tools is the possibility of simulating BondMachine behavior. An event input file describes how BondMachines elements has to change during the simulation timespan and which one has to be be reported. The simulator can produce results in the form of: Activity log of the BM internal. Graphical representation of the simulation. Report file with quantitative data. Useful to construct metrics Mirko Mariotti BondMachine February 23, 2018 25/75
  78. 78. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Simulation An important feature of the tools is the possibility of simulating BondMachine behavior. An event input file describes how BondMachines elements has to change during the simulation timespan and which one has to be be reported. The simulator can produce results in the form of: Activity log of the BM internal. Graphical representation of the simulation. Report file with quantitative data. Useful to construct metrics Mirko Mariotti BondMachine February 23, 2018 25/75
  79. 79. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Simulation An important feature of the tools is the possibility of simulating BondMachine behavior. An event input file describes how BondMachines elements has to change during the simulation timespan and which one has to be be reported. The simulator can produce results in the form of: Activity log of the BM internal. Graphical representation of the simulation. Report file with quantitative data. Useful to construct metrics Mirko Mariotti BondMachine February 23, 2018 25/75
  80. 80. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Simulation examples Activity log example: A graphical example: https://youtube.com/embed/Cc1Qzioh2Ng Mirko Mariotti BondMachine February 23, 2018 26/75
  81. 81. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Emulation The same engine that simulate BondMachines can be used as emulator. Through the emulator BondMachines can be used on Linux workstations. Mirko Mariotti BondMachine February 23, 2018 27/75
  82. 82. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Moulding the BondMachine As stated before BondMachines are not general purpose ar- chitectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a BondMachine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. tf2bm: A TensorFlow to BondMachine translator. Mirko Mariotti BondMachine February 23, 2018 28/75
  83. 83. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Moulding the BondMachine As stated before BondMachines are not general purpose ar- chitectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a BondMachine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. tf2bm: A TensorFlow to BondMachine translator. Mirko Mariotti BondMachine February 23, 2018 28/75
  84. 84. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Moulding the BondMachine As stated before BondMachines are not general purpose ar- chitectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a BondMachine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. tf2bm: A TensorFlow to BondMachine translator. Mirko Mariotti BondMachine February 23, 2018 28/75
  85. 85. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Moulding the BondMachine As stated before BondMachines are not general purpose ar- chitectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a BondMachine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. tf2bm: A TensorFlow to BondMachine translator. Mirko Mariotti BondMachine February 23, 2018 28/75
  86. 86. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Moulding the BondMachine As stated before BondMachines are not general purpose ar- chitectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a BondMachine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. tf2bm: A TensorFlow to BondMachine translator. Mirko Mariotti BondMachine February 23, 2018 28/75
  87. 87. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Moulding the BondMachine As stated before BondMachines are not general purpose ar- chitectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a BondMachine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. tf2bm: A TensorFlow to BondMachine translator. Mirko Mariotti BondMachine February 23, 2018 28/75
  88. 88. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo bondgo is the name chosen for the compiler developed for the BondMachine. The compiler source language is Go as the name suggest. Mirko Mariotti BondMachine February 23, 2018 29/75
  89. 89. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo This is the standard flow when building computer programs Mirko Mariotti BondMachine February 23, 2018 30/75
  90. 90. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo This is the standard flow when building computer programs high level language source Mirko Mariotti BondMachine February 23, 2018 30/75
  91. 91. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo This is the standard flow when building computer programs high level language source assembly file Compiling Mirko Mariotti BondMachine February 23, 2018 30/75
  92. 92. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo This is the standard flow when building computer programs high level language source assembly file Compiling machine code Assembling Mirko Mariotti BondMachine February 23, 2018 30/75
  93. 93. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo The standard flow in bondgo bondgo loop example package main import () func main () { var reg_aa uint8 var reg_ab uint8 for reg_aa = 10; reg_aa > 0; reg_aa -- { reg_ab = reg_aa break } } bondgo loop example in asm clr aa clr ab rset ac 10 cpy aa ac cpy ac aa jz ac 11 cpy ac aa cpy ab ac j 11 dec aa j 4 Mirko Mariotti BondMachine February 23, 2018 31/75
  94. 94. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo bondgo may also do something different when compiling a single threaded program ... Mirko Mariotti BondMachine February 23, 2018 32/75
  95. 95. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo bondgo may also do something different when compiling a single threaded program ... high level language source Mirko Mariotti BondMachine February 23, 2018 32/75
  96. 96. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo bondgo may also do something different when compiling a single threaded program ... high level language source assembly file Compiling Mirko Mariotti BondMachine February 23, 2018 32/75
  97. 97. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo bondgo may also do something different when compiling a single threaded program ... high level language source assembly file Compiling CP specs Arch generating Mirko Mariotti BondMachine February 23, 2018 32/75
  98. 98. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo bondgo may also do something different when compiling a single threaded program ... high level language source assembly file Compiling CP specs Arch generating machine code Assembling Mirko Mariotti BondMachine February 23, 2018 32/75
  99. 99. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo bondgo may also do something different when compiling a single threaded program ... high level language source assembly file Compiling CP specs Arch generating machine code Assembling Processor implementation Mirko Mariotti BondMachine February 23, 2018 32/75
  100. 100. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo bondgo may also do something different when compiling a single threaded program ... high level language source assembly file Compiling CP specs Arch generating machine code Assembling Processor implementation Mirko Mariotti BondMachine February 23, 2018 32/75
  101. 101. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo ... bondgo may not only create the binaries, but also the CP architecture, and ... Mirko Mariotti BondMachine February 23, 2018 33/75
  102. 102. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo ... it can do even much more interesting things when compiling concurrent programs. Mirko Mariotti BondMachine February 23, 2018 34/75
  103. 103. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level language source Mirko Mariotti BondMachine February 23, 2018 34/75
  104. 104. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level language source assembly CP 1 assembly CP 2assembly CP 3assembly CP 4assembly CP ... assembly CP N Compiling Mirko Mariotti BondMachine February 23, 2018 34/75
  105. 105. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level language source assembly CP 1 assembly CP 2assembly CP 3assembly CP 4assembly CP ... assembly CP N Compiling CP 1 specs CP 2 CP 3 CP 4 CP ... CP N Archs generating Mirko Mariotti BondMachine February 23, 2018 34/75
  106. 106. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level language source assembly CP 1 assembly CP 2assembly CP 3assembly CP 4assembly CP ... assembly CP N Compiling CP 1 specs CP 2 CP 3 CP 4 CP ... CP N Archs generating Assembl. and binaries Mirko Mariotti BondMachine February 23, 2018 34/75
  107. 107. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level language source assembly CP 1 assembly CP 2assembly CP 3assembly CP 4assembly CP ... assembly CP N Compiling CP 1 specs CP 2 CP 3 CP 4 CP ... CP N Archs generating Assembl. and binaries Interconnections Mirko Mariotti BondMachine February 23, 2018 34/75
  108. 108. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level language source assembly CP 1 assembly CP 2assembly CP 3assembly CP 4assembly CP ... assembly CP N Compiling CP 1 specs CP 2 CP 3 CP 4 CP ... CP N Archs generating Assembl. and binaries BondMachine Mirko Mariotti BondMachine February 23, 2018 34/75
  109. 109. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo An example bondgo stream processing example package main import ( "bondgo" ) func streamprocessor (a *[] uint8 , b *[] uint8 , c *[] uint8 , gid uint8) { (*c)[gid] = (*a)[gid] + (*b)[gid] } func main () { a := make ([] uint8 , 256) b := make ([] uint8 , 256) c := make ([] uint8 , 256) // ... some a and b values fill for i := 0; i < 256; i++ { go streamprocessor (&a, &b, &c, uint8(i)) } } The compilation of this example results in the creation of a 257 CPs where 256 are the stream processors executing the code in the function called streamprocessor, and one is the coordinating CP. Each stream processor is optimized and capable only to make additions since it is the only operation requested by the source code. The three slices created on the main function are passed by reference to the Goroutines then a shared RAM is created by the Bondgo compiler available to the generated CPs. Mirko Mariotti BondMachine February 23, 2018 35/75
  110. 110. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Compiling Architectures One of the most important result The architecture creation is a part of the compilation process. Mirko Mariotti BondMachine February 23, 2018 36/75
  111. 111. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  112. 112. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  113. 113. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  114. 114. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  115. 115. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  116. 116. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  117. 117. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  118. 118. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  119. 119. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  120. 120. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  121. 121. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti BondMachine February 23, 2018 37/75
  122. 122. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Go in hardware Second idea on the BondMachine The idea was: Build a computing system with a decreased number of layers resulting in a lower HW/SW gap. This would raise the overall performances yet keeping an user friendly way of programming. Between HW and SW there is only the processor abstraction, no Operating System nor runtimes. Despite that programming is done at high level. Mirko Mariotti BondMachine February 23, 2018 38/75
  123. 123. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Layers, Abstractions and Interfaces and BondMachines Programming language Compiler Language BondMachine Register Machine Opcodes Transistors Hardware Specialization Performance Software Generalization Userfriendly Mirko Mariotti BondMachine February 23, 2018 39/75
  124. 124. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Bondgo Abstract Assembly The Assembly language for the BM has been kept as independent as possible from the particular CP. Given a specific piece of assembly code Bondgo has the ability to compute the “minimum CP” that can execute that code. These are Building Blocks for complex BondMachines. Mirko Mariotti BondMachine February 23, 2018 40/75
  125. 125. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API With these Building Blocks Several libraries have to developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti BondMachine February 23, 2018 41/75
  126. 126. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API With these Building Blocks Several libraries have to developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti BondMachine February 23, 2018 41/75
  127. 127. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API With these Building Blocks Several libraries have to developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti BondMachine February 23, 2018 41/75
  128. 128. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API With these Building Blocks Several libraries have to developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti BondMachine February 23, 2018 41/75
  129. 129. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API With these Building Blocks Several libraries have to developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti BondMachine February 23, 2018 41/75
  130. 130. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Symbond A mathematical expression, or a system can be converted to a BondMachine: sum(var(x),const(2)) Boolbond symbond -expression ”sum(var(x),const(2))” -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti BondMachine February 23, 2018 42/75
  131. 131. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Symbond A mathematical expression, or a system can be converted to a BondMachine: sum(var(x),const(2)) Boolbond symbond -expression ”sum(var(x),const(2))” -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti BondMachine February 23, 2018 42/75
  132. 132. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Symbond A mathematical expression, or a system can be converted to a BondMachine: sum(var(x),const(2)) Boolbond symbond -expression ”sum(var(x),const(2))” -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti BondMachine February 23, 2018 42/75
  133. 133. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Symbond Mirko Mariotti BondMachine February 23, 2018 43/75
  134. 134. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Boolbond A system of boolean equations, input and output variables are expressed as in the example file: var(z)=or(var(x),not(var(y))) var(t)=or(and(var(x),var(y)),var(z)) var(l)=and(xor(var(x),var(y)),var(t)) i:var(x) i:var(y) o:var(z) o:var(t) o:var(l) Boolbond boolbond -system-file expression.txt -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti BondMachine February 23, 2018 44/75
  135. 135. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Boolbond A system of boolean equations, input and output variables are expressed as in the example file: var(z)=or(var(x),not(var(y))) var(t)=or(and(var(x),var(y)),var(z)) var(l)=and(xor(var(x),var(y)),var(t)) i:var(x) i:var(y) o:var(z) o:var(t) o:var(l) Boolbond boolbond -system-file expression.txt -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti BondMachine February 23, 2018 44/75
  136. 136. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Boolbond A system of boolean equations, input and output variables are expressed as in the example file: var(z)=or(var(x),not(var(y))) var(t)=or(and(var(x),var(y)),var(z)) var(l)=and(xor(var(x),var(y)),var(t)) i:var(x) i:var(y) o:var(z) o:var(t) o:var(l) Boolbond boolbond -system-file expression.txt -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti BondMachine February 23, 2018 44/75
  137. 137. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Boolbond Mirko Mariotti BondMachine February 23, 2018 45/75
  138. 138. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Matrixwork Matrix multiplication if mymachine, ok := matrixwork.Build M(n, t); ok == nil ... Mirko Mariotti BondMachine February 23, 2018 46/75
  139. 139. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Builders API Neuralbond 3 Layer neural network Mirko Mariotti BondMachine February 23, 2018 47/75
  140. 140. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti BondMachine February 23, 2018 48/75
  141. 141. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti BondMachine February 23, 2018 48/75
  142. 142. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti BondMachine February 23, 2018 48/75
  143. 143. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti BondMachine February 23, 2018 48/75
  144. 144. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti BondMachine February 23, 2018 48/75
  145. 145. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti BondMachine February 23, 2018 48/75
  146. 146. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work TensorFlowTM to Bondmachine tf2bm TensorFlowTM is an open source software library for numerical computation using data flow graphs. Graphs can be converted to BondMachines with the tf2bm tool. Mirko Mariotti BondMachine February 23, 2018 49/75
  147. 147. February 23, 2018 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses Physics Other uses Project History Conclusions Future work Hardware implementation FPGA The RTL code for the BondMachine is written in Verilog and System Verilog, and has been tested on these devices/system: Digilent Basys3 - Xilinx Artix-7 - Vivado. Kintex7 Evaluation Board - Vivado. Digilent Zedboard - Xilinx Zynq 7020 - Vivado. Linux - Iverilog. Within the project other firmwares have been written or tested: Microchip ENC28J60 Ethernet interface controller. Microchip ENC424J600 10/100 Base-T Ethernet interface controller. ESP8266 Wi-Fi chip. Mirko Mariotti BondMachine February 23, 2018 50/75

×