SlideShare une entreprise Scribd logo
1  sur  188
Télécharger pour lire hors ligne
BondMachine
A Moldable Computer Architecture
Mirko Mariotti
Department of Physics and Geology - University of Perugia
February 23, 2018
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem
The BondMachine: a fully reconfigurable computing ecosystem

Contenu connexe

Similaire à The BondMachine: a fully reconfigurable computing ecosystem

Course: "Introductory course to HLS FPGA programming"
Course: "Introductory course to HLS FPGA programming"Course: "Introductory course to HLS FPGA programming"
Course: "Introductory course to HLS FPGA programming"Mirko Mariotti
 
Lec 01(introduction) Mechatronic systems
Lec 01(introduction) Mechatronic systems Lec 01(introduction) Mechatronic systems
Lec 01(introduction) Mechatronic systems Mohamed Atef
 
Engaging Tech Students Past Traditional Hands On
Engaging Tech Students Past Traditional Hands OnEngaging Tech Students Past Traditional Hands On
Engaging Tech Students Past Traditional Hands OnFiras Obeid
 
PERICLES Building Digital Ecosystem Models - ‘Eye of the Storm: Preserving Di...
PERICLES Building Digital Ecosystem Models - ‘Eye of the Storm: Preserving Di...PERICLES Building Digital Ecosystem Models - ‘Eye of the Storm: Preserving Di...
PERICLES Building Digital Ecosystem Models - ‘Eye of the Storm: Preserving Di...PERICLES_FP7
 
Towards Energy and Carbon Footprint and Testing for AI-driven IoT Services
Towards Energy and Carbon Footprint and Testing for AI-driven IoT ServicesTowards Energy and Carbon Footprint and Testing for AI-driven IoT Services
Towards Energy and Carbon Footprint and Testing for AI-driven IoT ServicesDemetris Trihinas
 
Resume-Rohit_Vijay_Bapat_December_2016
Resume-Rohit_Vijay_Bapat_December_2016Resume-Rohit_Vijay_Bapat_December_2016
Resume-Rohit_Vijay_Bapat_December_2016Rohit Bapat
 
Design and implementation of a Virtual Reality application for Computational ...
Design and implementation of a Virtual Reality application for Computational ...Design and implementation of a Virtual Reality application for Computational ...
Design and implementation of a Virtual Reality application for Computational ...Lorenzo D'Eri
 
Digital Fabrication Studio v.0.2: Digital Fabrication and FabLab ecosystem
Digital Fabrication Studio v.0.2: Digital Fabrication and FabLab ecosystemDigital Fabrication Studio v.0.2: Digital Fabrication and FabLab ecosystem
Digital Fabrication Studio v.0.2: Digital Fabrication and FabLab ecosystemMassimo Menichinelli
 
Sparse Communication for Federated Learning
Sparse Communication for Federated LearningSparse Communication for Federated Learning
Sparse Communication for Federated LearningKundjanasith Thonglek
 
Call for Paper - 3rdInternational ConferenceonMachineLearningandSoftComputing...
Call for Paper - 3rdInternational ConferenceonMachineLearningandSoftComputing...Call for Paper - 3rdInternational ConferenceonMachineLearningandSoftComputing...
Call for Paper - 3rdInternational ConferenceonMachineLearningandSoftComputing...mlaij
 
A Machine Learning-Driven proactive Decision making approach for adaptive Arc...
A Machine Learning-Driven proactive Decision making approach for adaptive Arc...A Machine Learning-Driven proactive Decision making approach for adaptive Arc...
A Machine Learning-Driven proactive Decision making approach for adaptive Arc...Karthik Vaidyanathan
 
In pursuit of architectural agility: experimenting with microservices
In pursuit of architectural agility: experimenting with microservicesIn pursuit of architectural agility: experimenting with microservices
In pursuit of architectural agility: experimenting with microservicesAlberto Simioni
 
Metta Innovations - Introdução ao Deep Learning aplicado a vídeo analytics
Metta Innovations - Introdução ao Deep Learning aplicado a vídeo analyticsMetta Innovations - Introdução ao Deep Learning aplicado a vídeo analytics
Metta Innovations - Introdução ao Deep Learning aplicado a vídeo analyticsEduardo Gaspar
 
Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)Fwdays
 
Prototyping of the Virtual Type
Prototyping of the Virtual TypePrototyping of the Virtual Type
Prototyping of the Virtual TypeDon Talend
 
Flexible and Scalable Modelling in the MONDO Project: 3 Industrial Case Studi...
Flexible and Scalable Modelling in the MONDO Project: 3 Industrial Case Studi...Flexible and Scalable Modelling in the MONDO Project: 3 Industrial Case Studi...
Flexible and Scalable Modelling in the MONDO Project: 3 Industrial Case Studi...Alessandra Bagnato
 
Smart Hydroponic Plant Growing System using IoT
Smart Hydroponic Plant Growing System using IoTSmart Hydroponic Plant Growing System using IoT
Smart Hydroponic Plant Growing System using IoTGustavo Sanchez Collado
 
Digital Fabrication Studio.01 _Fabbing @ Aalto Media Factory
Digital Fabrication Studio.01 _Fabbing @ Aalto Media FactoryDigital Fabrication Studio.01 _Fabbing @ Aalto Media Factory
Digital Fabrication Studio.01 _Fabbing @ Aalto Media FactoryMassimo Menichinelli
 

Similaire à The BondMachine: a fully reconfigurable computing ecosystem (20)

Course: "Introductory course to HLS FPGA programming"
Course: "Introductory course to HLS FPGA programming"Course: "Introductory course to HLS FPGA programming"
Course: "Introductory course to HLS FPGA programming"
 
Lec 01(introduction) Mechatronic systems
Lec 01(introduction) Mechatronic systems Lec 01(introduction) Mechatronic systems
Lec 01(introduction) Mechatronic systems
 
Engaging Tech Students Past Traditional Hands On
Engaging Tech Students Past Traditional Hands OnEngaging Tech Students Past Traditional Hands On
Engaging Tech Students Past Traditional Hands On
 
PERICLES Building Digital Ecosystem Models - ‘Eye of the Storm: Preserving Di...
PERICLES Building Digital Ecosystem Models - ‘Eye of the Storm: Preserving Di...PERICLES Building Digital Ecosystem Models - ‘Eye of the Storm: Preserving Di...
PERICLES Building Digital Ecosystem Models - ‘Eye of the Storm: Preserving Di...
 
Towards Energy and Carbon Footprint and Testing for AI-driven IoT Services
Towards Energy and Carbon Footprint and Testing for AI-driven IoT ServicesTowards Energy and Carbon Footprint and Testing for AI-driven IoT Services
Towards Energy and Carbon Footprint and Testing for AI-driven IoT Services
 
Resume-Rohit_Vijay_Bapat_December_2016
Resume-Rohit_Vijay_Bapat_December_2016Resume-Rohit_Vijay_Bapat_December_2016
Resume-Rohit_Vijay_Bapat_December_2016
 
Design and implementation of a Virtual Reality application for Computational ...
Design and implementation of a Virtual Reality application for Computational ...Design and implementation of a Virtual Reality application for Computational ...
Design and implementation of a Virtual Reality application for Computational ...
 
Digital Fabrication Studio v.0.2: Digital Fabrication and FabLab ecosystem
Digital Fabrication Studio v.0.2: Digital Fabrication and FabLab ecosystemDigital Fabrication Studio v.0.2: Digital Fabrication and FabLab ecosystem
Digital Fabrication Studio v.0.2: Digital Fabrication and FabLab ecosystem
 
Micro Frontends
Micro FrontendsMicro Frontends
Micro Frontends
 
Sparse Communication for Federated Learning
Sparse Communication for Federated LearningSparse Communication for Federated Learning
Sparse Communication for Federated Learning
 
Call for Paper - 3rdInternational ConferenceonMachineLearningandSoftComputing...
Call for Paper - 3rdInternational ConferenceonMachineLearningandSoftComputing...Call for Paper - 3rdInternational ConferenceonMachineLearningandSoftComputing...
Call for Paper - 3rdInternational ConferenceonMachineLearningandSoftComputing...
 
A Machine Learning-Driven proactive Decision making approach for adaptive Arc...
A Machine Learning-Driven proactive Decision making approach for adaptive Arc...A Machine Learning-Driven proactive Decision making approach for adaptive Arc...
A Machine Learning-Driven proactive Decision making approach for adaptive Arc...
 
In pursuit of architectural agility: experimenting with microservices
In pursuit of architectural agility: experimenting with microservicesIn pursuit of architectural agility: experimenting with microservices
In pursuit of architectural agility: experimenting with microservices
 
Metta Innovations - Introdução ao Deep Learning aplicado a vídeo analytics
Metta Innovations - Introdução ao Deep Learning aplicado a vídeo analyticsMetta Innovations - Introdução ao Deep Learning aplicado a vídeo analytics
Metta Innovations - Introdução ao Deep Learning aplicado a vídeo analytics
 
Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)
 
Prototyping of the Virtual Type
Prototyping of the Virtual TypePrototyping of the Virtual Type
Prototyping of the Virtual Type
 
202212APSEC.pptx.pdf
202212APSEC.pptx.pdf202212APSEC.pptx.pdf
202212APSEC.pptx.pdf
 
Flexible and Scalable Modelling in the MONDO Project: 3 Industrial Case Studi...
Flexible and Scalable Modelling in the MONDO Project: 3 Industrial Case Studi...Flexible and Scalable Modelling in the MONDO Project: 3 Industrial Case Studi...
Flexible and Scalable Modelling in the MONDO Project: 3 Industrial Case Studi...
 
Smart Hydroponic Plant Growing System using IoT
Smart Hydroponic Plant Growing System using IoTSmart Hydroponic Plant Growing System using IoT
Smart Hydroponic Plant Growing System using IoT
 
Digital Fabrication Studio.01 _Fabbing @ Aalto Media Factory
Digital Fabrication Studio.01 _Fabbing @ Aalto Media FactoryDigital Fabrication Studio.01 _Fabbing @ Aalto Media Factory
Digital Fabrication Studio.01 _Fabbing @ Aalto Media Factory
 

Plus de Mirko Mariotti

INFN Advanced ML Hackaton 2022 Talk
INFN Advanced ML Hackaton 2022 TalkINFN Advanced ML Hackaton 2022 Talk
INFN Advanced ML Hackaton 2022 TalkMirko Mariotti
 
INFN ML FPGA Course 2022
INFN ML FPGA Course 2022INFN ML FPGA Course 2022
INFN ML FPGA Course 2022Mirko Mariotti
 
Firmware Develpment for hybrid (ARM and FPGA) processors
Firmware Develpment for hybrid (ARM and FPGA) processorsFirmware Develpment for hybrid (ARM and FPGA) processors
Firmware Develpment for hybrid (ARM and FPGA) processorsMirko Mariotti
 
Short course on FPGA programming
Short course on FPGA programmingShort course on FPGA programming
Short course on FPGA programmingMirko Mariotti
 
Harvesting dispersed computational resources with Openstack
Harvesting dispersed computational resources with OpenstackHarvesting dispersed computational resources with Openstack
Harvesting dispersed computational resources with OpenstackMirko Mariotti
 
Pim - Un Esempio di integrazione AA dei servizi INFN/Universita'
Pim - Un Esempio di integrazione AA dei servizi INFN/Universita'Pim - Un Esempio di integrazione AA dei servizi INFN/Universita'
Pim - Un Esempio di integrazione AA dei servizi INFN/Universita'Mirko Mariotti
 
Xen - Esperienze a Perugia
Xen - Esperienze a PerugiaXen - Esperienze a Perugia
Xen - Esperienze a PerugiaMirko Mariotti
 

Plus de Mirko Mariotti (9)

INFN SOSC 2022 Talk
INFN SOSC 2022 TalkINFN SOSC 2022 Talk
INFN SOSC 2022 Talk
 
INFN Advanced ML Hackaton 2022 Talk
INFN Advanced ML Hackaton 2022 TalkINFN Advanced ML Hackaton 2022 Talk
INFN Advanced ML Hackaton 2022 Talk
 
ICTP Workshop 2022
ICTP Workshop 2022ICTP Workshop 2022
ICTP Workshop 2022
 
INFN ML FPGA Course 2022
INFN ML FPGA Course 2022INFN ML FPGA Course 2022
INFN ML FPGA Course 2022
 
Firmware Develpment for hybrid (ARM and FPGA) processors
Firmware Develpment for hybrid (ARM and FPGA) processorsFirmware Develpment for hybrid (ARM and FPGA) processors
Firmware Develpment for hybrid (ARM and FPGA) processors
 
Short course on FPGA programming
Short course on FPGA programmingShort course on FPGA programming
Short course on FPGA programming
 
Harvesting dispersed computational resources with Openstack
Harvesting dispersed computational resources with OpenstackHarvesting dispersed computational resources with Openstack
Harvesting dispersed computational resources with Openstack
 
Pim - Un Esempio di integrazione AA dei servizi INFN/Universita'
Pim - Un Esempio di integrazione AA dei servizi INFN/Universita'Pim - Un Esempio di integrazione AA dei servizi INFN/Universita'
Pim - Un Esempio di integrazione AA dei servizi INFN/Universita'
 
Xen - Esperienze a Perugia
Xen - Esperienze a PerugiaXen - Esperienze a Perugia
Xen - Esperienze a Perugia
 

Dernier

Abort pregnancy in research centre+966_505195917 abortion pills in Kuwait cyt...
Abort pregnancy in research centre+966_505195917 abortion pills in Kuwait cyt...Abort pregnancy in research centre+966_505195917 abortion pills in Kuwait cyt...
Abort pregnancy in research centre+966_505195917 abortion pills in Kuwait cyt...drmarathore
 
(👉Ridhima)👉VIP Model Call Girls Mulund ( Mumbai) Call ON 9967824496 Starting ...
(👉Ridhima)👉VIP Model Call Girls Mulund ( Mumbai) Call ON 9967824496 Starting ...(👉Ridhima)👉VIP Model Call Girls Mulund ( Mumbai) Call ON 9967824496 Starting ...
(👉Ridhima)👉VIP Model Call Girls Mulund ( Mumbai) Call ON 9967824496 Starting ...motiram463
 
Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...
Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...
Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...MOHANI PANDEY
 
Call Girls Pimple Saudagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Pimple Saudagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Pimple Saudagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Pimple Saudagar Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
➥🔝 7737669865 🔝▻ Vijayawada Call-girls in Women Seeking Men 🔝Vijayawada🔝 E...
➥🔝 7737669865 🔝▻ Vijayawada Call-girls in Women Seeking Men  🔝Vijayawada🔝   E...➥🔝 7737669865 🔝▻ Vijayawada Call-girls in Women Seeking Men  🔝Vijayawada🔝   E...
➥🔝 7737669865 🔝▻ Vijayawada Call-girls in Women Seeking Men 🔝Vijayawada🔝 E...amitlee9823
 
Just Call Vip call girls Shillong Escorts ☎️9352988975 Two shot with one girl...
Just Call Vip call girls Shillong Escorts ☎️9352988975 Two shot with one girl...Just Call Vip call girls Shillong Escorts ☎️9352988975 Two shot with one girl...
Just Call Vip call girls Shillong Escorts ☎️9352988975 Two shot with one girl...gajnagarg
 
Escorts Service Daryaganj - 9899900591 College Girls & Models 24/7
Escorts Service Daryaganj - 9899900591 College Girls & Models 24/7Escorts Service Daryaganj - 9899900591 College Girls & Models 24/7
Escorts Service Daryaganj - 9899900591 College Girls & Models 24/7shivanni mehta
 
Just Call Vip call girls Begusarai Escorts ☎️9352988975 Two shot with one gir...
Just Call Vip call girls Begusarai Escorts ☎️9352988975 Two shot with one gir...Just Call Vip call girls Begusarai Escorts ☎️9352988975 Two shot with one gir...
Just Call Vip call girls Begusarai Escorts ☎️9352988975 Two shot with one gir...gajnagarg
 
VVIP Pune Call Girls Gahunje WhatSapp Number 8005736733 With Elite Staff And ...
VVIP Pune Call Girls Gahunje WhatSapp Number 8005736733 With Elite Staff And ...VVIP Pune Call Girls Gahunje WhatSapp Number 8005736733 With Elite Staff And ...
VVIP Pune Call Girls Gahunje WhatSapp Number 8005736733 With Elite Staff And ...SUHANI PANDEY
 
Vip Mumbai Call Girls Andheri East Call On 9920725232 With Body to body massa...
Vip Mumbai Call Girls Andheri East Call On 9920725232 With Body to body massa...Vip Mumbai Call Girls Andheri East Call On 9920725232 With Body to body massa...
Vip Mumbai Call Girls Andheri East Call On 9920725232 With Body to body massa...amitlee9823
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Just Call Vip call girls chhindwara Escorts ☎️9352988975 Two shot with one gi...
Just Call Vip call girls chhindwara Escorts ☎️9352988975 Two shot with one gi...Just Call Vip call girls chhindwara Escorts ☎️9352988975 Two shot with one gi...
Just Call Vip call girls chhindwara Escorts ☎️9352988975 Two shot with one gi...gajnagarg
 
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in DammamAbortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammamahmedjiabur940
 
Escorts Service Arekere ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Arekere ☎ 7737669865☎ Book Your One night Stand (Bangalore)Escorts Service Arekere ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Arekere ☎ 7737669865☎ Book Your One night Stand (Bangalore)amitlee9823
 
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...amitlee9823
 

Dernier (20)

Abort pregnancy in research centre+966_505195917 abortion pills in Kuwait cyt...
Abort pregnancy in research centre+966_505195917 abortion pills in Kuwait cyt...Abort pregnancy in research centre+966_505195917 abortion pills in Kuwait cyt...
Abort pregnancy in research centre+966_505195917 abortion pills in Kuwait cyt...
 
(👉Ridhima)👉VIP Model Call Girls Mulund ( Mumbai) Call ON 9967824496 Starting ...
(👉Ridhima)👉VIP Model Call Girls Mulund ( Mumbai) Call ON 9967824496 Starting ...(👉Ridhima)👉VIP Model Call Girls Mulund ( Mumbai) Call ON 9967824496 Starting ...
(👉Ridhima)👉VIP Model Call Girls Mulund ( Mumbai) Call ON 9967824496 Starting ...
 
Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...
Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...
Get Premium Pimple Saudagar Call Girls (8005736733) 24x7 Rate 15999 with A/c ...
 
Call Girls Pimple Saudagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Pimple Saudagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Pimple Saudagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Pimple Saudagar Call Me 7737669865 Budget Friendly No Advance Booking
 
➥🔝 7737669865 🔝▻ Vijayawada Call-girls in Women Seeking Men 🔝Vijayawada🔝 E...
➥🔝 7737669865 🔝▻ Vijayawada Call-girls in Women Seeking Men  🔝Vijayawada🔝   E...➥🔝 7737669865 🔝▻ Vijayawada Call-girls in Women Seeking Men  🔝Vijayawada🔝   E...
➥🔝 7737669865 🔝▻ Vijayawada Call-girls in Women Seeking Men 🔝Vijayawada🔝 E...
 
Just Call Vip call girls Shillong Escorts ☎️9352988975 Two shot with one girl...
Just Call Vip call girls Shillong Escorts ☎️9352988975 Two shot with one girl...Just Call Vip call girls Shillong Escorts ☎️9352988975 Two shot with one girl...
Just Call Vip call girls Shillong Escorts ☎️9352988975 Two shot with one girl...
 
CHEAP Call Girls in Ashok Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Ashok Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Ashok Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Ashok Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Escorts Service Daryaganj - 9899900591 College Girls & Models 24/7
Escorts Service Daryaganj - 9899900591 College Girls & Models 24/7Escorts Service Daryaganj - 9899900591 College Girls & Models 24/7
Escorts Service Daryaganj - 9899900591 College Girls & Models 24/7
 
Just Call Vip call girls Begusarai Escorts ☎️9352988975 Two shot with one gir...
Just Call Vip call girls Begusarai Escorts ☎️9352988975 Two shot with one gir...Just Call Vip call girls Begusarai Escorts ☎️9352988975 Two shot with one gir...
Just Call Vip call girls Begusarai Escorts ☎️9352988975 Two shot with one gir...
 
(INDIRA) Call Girl Napur Call Now 8617697112 Napur Escorts 24x7
(INDIRA) Call Girl Napur Call Now 8617697112 Napur Escorts 24x7(INDIRA) Call Girl Napur Call Now 8617697112 Napur Escorts 24x7
(INDIRA) Call Girl Napur Call Now 8617697112 Napur Escorts 24x7
 
CHEAP Call Girls in Hauz Quazi (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Hauz Quazi  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Hauz Quazi  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Hauz Quazi (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
VVIP Pune Call Girls Gahunje WhatSapp Number 8005736733 With Elite Staff And ...
VVIP Pune Call Girls Gahunje WhatSapp Number 8005736733 With Elite Staff And ...VVIP Pune Call Girls Gahunje WhatSapp Number 8005736733 With Elite Staff And ...
VVIP Pune Call Girls Gahunje WhatSapp Number 8005736733 With Elite Staff And ...
 
Vip Mumbai Call Girls Andheri East Call On 9920725232 With Body to body massa...
Vip Mumbai Call Girls Andheri East Call On 9920725232 With Body to body massa...Vip Mumbai Call Girls Andheri East Call On 9920725232 With Body to body massa...
Vip Mumbai Call Girls Andheri East Call On 9920725232 With Body to body massa...
 
Abortion pills in Jeddah |+966572737505 | Get Cytotec
Abortion pills in Jeddah |+966572737505 | Get CytotecAbortion pills in Jeddah |+966572737505 | Get Cytotec
Abortion pills in Jeddah |+966572737505 | Get Cytotec
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
Call Now ≽ 9953056974 ≼🔝 Call Girls In Yusuf Sarai ≼🔝 Delhi door step delevry≼🔝
 
Critical Commentary Social Work Ethics.pptx
Critical Commentary Social Work Ethics.pptxCritical Commentary Social Work Ethics.pptx
Critical Commentary Social Work Ethics.pptx
 
Just Call Vip call girls chhindwara Escorts ☎️9352988975 Two shot with one gi...
Just Call Vip call girls chhindwara Escorts ☎️9352988975 Two shot with one gi...Just Call Vip call girls chhindwara Escorts ☎️9352988975 Two shot with one gi...
Just Call Vip call girls chhindwara Escorts ☎️9352988975 Two shot with one gi...
 
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in DammamAbortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
Abortion Pill for sale in Riyadh ((+918761049707) Get Cytotec in Dammam
 
Escorts Service Arekere ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Arekere ☎ 7737669865☎ Book Your One night Stand (Bangalore)Escorts Service Arekere ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Arekere ☎ 7737669865☎ Book Your One night Stand (Bangalore)
 
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Banashankari Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
 

The BondMachine: a fully reconfigurable computing ecosystem

  • 1. BondMachine A Moldable Computer Architecture Mirko Mariotti Department of Physics and Geology - University of Perugia February 23, 2018
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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