SlideShare una empresa de Scribd logo
1 de 119
Descargar para leer sin conexión
BondMachine
A Mouldable Computer Architecture
Mirko Mariotti
Department of Physics and Geology - University of Perugia
and INFN Perugia
Workshop INFN CCR 2017
Laboratori Nazionali del Gran Sasso, 22-26 Maggio 2017
May 23, 2017
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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.
Uses.
Mirko Mariotti BondMachine May 23, 2017 2/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 3/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Computer Architectures
First idea
Having a multi-core architecture
completely heterogeneous both in
cores types and interconnections.
Mirko Mariotti BondMachine May 23, 2017 4/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
base for the second idea
Programming language
User mode
Kernel mode
Processor
Transistors
Mirko Mariotti BondMachine May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
base for the second idea
Programming language
User mode
Kernel mode
Processor
Register Machine
Transistors
Mirko Mariotti BondMachine May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
base for the second idea
Programming language
User mode
Kernel mode
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti BondMachine May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
base for the second idea
Programming language
User mode
Kernel mode
Kernel
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti BondMachine May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
base for the second idea
Programming language
User mode
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti BondMachine May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
base for the second idea
Programming language
User mode
Standard Library
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti BondMachine May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
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 May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
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 May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
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 May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
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 May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
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 May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
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 May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
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 May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
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 May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Layers, Abstractions and Interfaces
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 May 23, 2017 5/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 6/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 7/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 7/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 7/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 7/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 7/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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.
There possible operating modes.
Mirko Mariotti BondMachine May 23, 2017 8/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 9/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 9/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 9/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 9/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 9/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 9/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
The BondMachine
Mirko Mariotti BondMachine May 23, 2017 10/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 one another, arbitrarily
interconnected and sharing non
computing elements.
Mirko Mariotti BondMachine May 23, 2017 11/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 12/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 12/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 12/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
BondMachine web front-end
Operations on BondMachines can also be performed via a
developed web framework
Mirko Mariotti BondMachine May 23, 2017 13/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 are
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 May 23, 2017 14/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 are
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 May 23, 2017 14/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 are
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 May 23, 2017 14/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Simulation
examples
Activity log example:
A graphical example:
https://youtube.com/embed/Cc1Qzioh2Ng
Mirko Mariotti BondMachine May 23, 2017 15/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Moulding the BondMachine
As said BondMachines are not general purpose architectures,
and to be useful 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 suit 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 May 23, 2017 16/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Moulding the BondMachine
As said BondMachines are not general purpose architectures,
and to be useful 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 suit 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 May 23, 2017 16/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Moulding the BondMachine
As said BondMachines are not general purpose architectures,
and to be useful 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 suit 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 May 23, 2017 16/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Moulding the BondMachine
As said BondMachines are not general purpose architectures,
and to be useful 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 suit 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 May 23, 2017 16/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Moulding the BondMachine
As said BondMachines are not general purpose architectures,
and to be useful 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 suit 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 May 23, 2017 16/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Moulding the BondMachine
As said BondMachines are not general purpose architectures,
and to be useful 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 suit 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 May 23, 2017 16/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 17/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Bondgo
This is the standard flow when building computer programs
Mirko Mariotti BondMachine May 23, 2017 18/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Bondgo
This is the standard flow when building computer programs
high level language source
Mirko Mariotti BondMachine May 23, 2017 18/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Bondgo
This is the standard flow when building computer programs
high level language source
assembly file
Compiling
Mirko Mariotti BondMachine May 23, 2017 18/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 18/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 19/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Bondgo
bondgo may also do something different when compiling a
single threaded program ...
Mirko Mariotti BondMachine May 23, 2017 20/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Bondgo
bondgo may also do something different when compiling a
single threaded program ...
high level language source
Mirko Mariotti BondMachine May 23, 2017 20/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 20/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 20/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 20/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 20/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 20/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Bondgo
... bondgo may not only create the binaries, but also the CP
architecture, and ...
Mirko Mariotti BondMachine May 23, 2017 21/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Bondgo
... it can do even much more interesting things when
compiling concurrent programs.
Mirko Mariotti BondMachine May 23, 2017 22/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Bondgo
... it can do even much more interesting things when
compiling concurrent programs.
high level language source
Mirko Mariotti BondMachine May 23, 2017 22/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 22/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 22/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 22/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 22/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 22/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 23/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Compiling Architectures
One of the most important result
The architecture creation is a part of the compilation
process.
Mirko Mariotti BondMachine May 23, 2017 24/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 25/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 26/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 27/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 make matrices calculation.
Neuralbond, to use neural networks.
Mirko Mariotti BondMachine May 23, 2017 28/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 make matrices calculation.
Neuralbond, to use neural networks.
Mirko Mariotti BondMachine May 23, 2017 28/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 make matrices calculation.
Neuralbond, to use neural networks.
Mirko Mariotti BondMachine May 23, 2017 28/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 make matrices calculation.
Neuralbond, to use neural networks.
Mirko Mariotti BondMachine May 23, 2017 28/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 make matrices calculation.
Neuralbond, to use neural networks.
Mirko Mariotti BondMachine May 23, 2017 28/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 29/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 29/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 29/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 29/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 29/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 29/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 30/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
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 May 23, 2017 31/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Toolchains
A set of toolchains allow the build and the direct deploy to a
target device of BondMachines.
Bondgo Toolchain example
A file local.mk contains references to the source code as well
all the build necessities.
make bondmachine creates the JSON representation of the
BM and assemble its code.
make show displays a graphical representation of the BM.
make simulate start a simulation.
make videosim create a simulation video.
make flash the device into the destination target.
Mirko Mariotti BondMachine May 23, 2017 32/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
The Prototype
The project has been selected for the participation at
MakerFaire 2016 Rome (The Europen Edition) and a
prototype has been assembled and presented.
First run:
https://youtube.com/embed/hukTrGxTb7A
Mirko Mariotti BondMachine May 23, 2017 33/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
The BondMachine computational Ecosystem
The same logic existing among CP have been extended
among different BondMachines organized in clusters.
A protocol over ethernet called etherbond have been created
for the purpose.
FPGA based BondMachines, standard Linux Workstations,
Emulated BondMachines may join an etherbond cluster an
contribute to a single distributed computational problem.
Parts of the system can be redeployed without changing the
problem behavior (only the performances).
Mirko Mariotti BondMachine May 23, 2017 34/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
The BondMachine computational Ecosystem
The same logic existing among CP have been extended
among different BondMachines organized in clusters.
A protocol over ethernet called etherbond have been created
for the purpose.
FPGA based BondMachines, standard Linux Workstations,
Emulated BondMachines may join an etherbond cluster an
contribute to a single distributed computational problem.
Parts of the system can be redeployed without changing the
problem behavior (only the performances).
Mirko Mariotti BondMachine May 23, 2017 34/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
The BondMachine computational Ecosystem
The same logic existing among CP have been extended
among different BondMachines organized in clusters.
A protocol over ethernet called etherbond have been created
for the purpose.
FPGA based BondMachines, standard Linux Workstations,
Emulated BondMachines may join an etherbond cluster an
contribute to a single distributed computational problem.
Parts of the system can be redeployed without changing the
problem behavior (only the performances).
Mirko Mariotti BondMachine May 23, 2017 34/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
The BondMachine computational Ecosystem
The same logic existing among CP have been extended
among different BondMachines organized in clusters.
A protocol over ethernet called etherbond have been created
for the purpose.
FPGA based BondMachines, standard Linux Workstations,
Emulated BondMachines may join an etherbond cluster an
contribute to a single distributed computational problem.
Parts of the system can be redeployed without changing the
problem behavior (only the performances).
Mirko Mariotti BondMachine May 23, 2017 34/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Uses in Physics
Two possible uses in Physics experiments are currently being
explored:
Real time pulse shape analysis in neutron detectors.
Test beam for space experiments (DAMPE, HERD)
Mirko Mariotti BondMachine May 23, 2017 35/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Real time pulse shape analysis in neutron
detectors
The operation of the new generation of high-intensity
neutron sources like SNS, JSNS and European Spallation
Source (ESS, Lund, Sweden), now under construction, are
introducing a new demand for neutron detection capabilities.
These demands yield to the need for new data collection
procedures and new technology based on solid state Si
devices.
We are trying to use BondMachines to make the real time
shape analysis in this kind of detecting devices.
Courtesy of Prof. F.Sacchetti
Mirko Mariotti BondMachine May 23, 2017 36/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Test beam for space experiments (DAMPE,
HERD)
Trigger logic for test beams
Courtesy of V.Vagelli and M.Duranti
Mirko Mariotti BondMachine May 23, 2017 37/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Test beam for space experiments (DAMPE,
HERD)
Trigger logic for test beams
Courtesy of V.Vagelli and M.Duranti
Mirko Mariotti BondMachine May 23, 2017 38/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Test beam for space experiments (DAMPE,
HERD)
Trigger logic for test beams
We are trying to explore the possibility of using
BondMachine to handle efficiently this kind of operations.
Mirko Mariotti BondMachine May 23, 2017 39/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Possible other uses
The BondMachine could be used in several types of real
world applications, some of them being:
Workstation FPGA accelerators for any kind of intensive
computation.
IoT and CyberPhysical systems.
Computer Science educational applications.
Mirko Mariotti BondMachine May 23, 2017 40/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Possible other uses
The BondMachine could be used in several types of real
world applications, some of them being:
Workstation FPGA accelerators for any kind of intensive
computation.
IoT and CyberPhysical systems.
Computer Science educational applications.
Mirko Mariotti BondMachine May 23, 2017 40/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Possible other uses
The BondMachine could be used in several types of real
world applications, some of them being:
Workstation FPGA accelerators for any kind of intensive
computation.
IoT and CyberPhysical systems.
Computer Science educational applications.
Mirko Mariotti BondMachine May 23, 2017 40/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Possible other uses
The BondMachine could be used in several types of real
world applications, some of them being:
Workstation FPGA accelerators for any kind of intensive
computation.
IoT and CyberPhysical systems.
Computer Science educational applications.
Mirko Mariotti BondMachine May 23, 2017 40/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Conclusions
The BondMachine is a new kind of computing device made
possible in practice only by the emerging of new re-programmable
hardware technologies such as FPGA.
Keeping the register machine abstraction it is possible to bor-
row well known languages and techniques in programming
these devices removing the need of having a general purpose
architecture.
The result of this process is the construction of a computer ar-
chitecture that is not anymore a static constraint where com-
puting occurs but its creation becomes a part of the computing
process, gaining computing power and flexibility.
Over this abstraction is it possible to create a full computing
Ecosystem.
Mirko Mariotti BondMachine May 23, 2017 41/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Future work
The project is a prototype.
Include new processor shared objects and currently
unsupported opcodes.
Extend the compiler to include more data structures.
Improve the networking with the support for wifi.
Work on BondMachine as accelerators.
What would an OS for BondMachines look like ?
Mirko Mariotti BondMachine May 23, 2017 42/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Future work
The project is a prototype.
Include new processor shared objects and currently
unsupported opcodes.
Extend the compiler to include more data structures.
Improve the networking with the support for wifi.
Work on BondMachine as accelerators.
What would an OS for BondMachines look like ?
Mirko Mariotti BondMachine May 23, 2017 42/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Future work
The project is a prototype.
Include new processor shared objects and currently
unsupported opcodes.
Extend the compiler to include more data structures.
Improve the networking with the support for wifi.
Work on BondMachine as accelerators.
What would an OS for BondMachines look like ?
Mirko Mariotti BondMachine May 23, 2017 42/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Future work
The project is a prototype.
Include new processor shared objects and currently
unsupported opcodes.
Extend the compiler to include more data structures.
Improve the networking with the support for wifi.
Work on BondMachine as accelerators.
What would an OS for BondMachines look like ?
Mirko Mariotti BondMachine May 23, 2017 42/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Future work
The project is a prototype.
Include new processor shared objects and currently
unsupported opcodes.
Extend the compiler to include more data structures.
Improve the networking with the support for wifi.
Work on BondMachine as accelerators.
What would an OS for BondMachines look like ?
Mirko Mariotti BondMachine May 23, 2017 42/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Future work
The project is a prototype.
Include new processor shared objects and currently
unsupported opcodes.
Extend the compiler to include more data structures.
Improve the networking with the support for wifi.
Work on BondMachine as accelerators.
What would an OS for BondMachines look like ?
Mirko Mariotti BondMachine May 23, 2017 42/43
May 23, 2017
Mirko Mariotti
Introduction
Architectures
Abstractions
BondMachine
Connecting Processors
Shared Modules
Tools
Simulation
Moulding
Bondgo
Builders API
Evolutionary
BondMachine
TensorFlow to
Bondmachine
Hardware
Prototype
Ecosystem
Uses in Physics
Other uses
Conclusions
Future work
Mirko Mariotti
Department of Physics and Geology, University of Perugia and INFN PG
mirko.mariotti@unipg.it
http://bondmachine.fisica.unipg.it
Mirko Mariotti BondMachine May 23, 2017 43/43

Más contenido relacionado

Similar a Bondmachine, a mouldable Computer Architecture

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
 
Cluster Setup Manual Using Ubuntu and MPICH
Cluster Setup Manual Using Ubuntu and MPICHCluster Setup Manual Using Ubuntu and MPICH
Cluster Setup Manual Using Ubuntu and MPICHMisu Md Rakib Hossain
 
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
 
International journal of engineering issues vol 2015 - no 2 - paper4
International journal of engineering issues   vol 2015 - no 2 - paper4International journal of engineering issues   vol 2015 - no 2 - paper4
International journal of engineering issues vol 2015 - no 2 - paper4sophiabelthome
 
Large scale gpu cluster for ai
Large scale gpu cluster for aiLarge scale gpu cluster for ai
Large scale gpu cluster for aiKyunam Cho
 
Cyber Physical Systems – Collaborating Systems of Systems
Cyber Physical Systems – Collaborating Systems of SystemsCyber Physical Systems – Collaborating Systems of Systems
Cyber Physical Systems – Collaborating Systems of SystemsJoachim Schlosser
 
A Parallel Computing-a Paradigm to achieve High Performance
A Parallel Computing-a Paradigm to achieve High PerformanceA Parallel Computing-a Paradigm to achieve High Performance
A Parallel Computing-a Paradigm to achieve High PerformanceAM Publications
 
parallel computing.ppt
parallel computing.pptparallel computing.ppt
parallel computing.pptssuser413a98
 
TOGETHER: TOpology GEneration THrough HEuRistics
TOGETHER: TOpology GEneration THrough HEuRisticsTOGETHER: TOpology GEneration THrough HEuRistics
TOGETHER: TOpology GEneration THrough HEuRisticsSubin Mathew
 
The Concurrency Challenge : Notes
The Concurrency Challenge : NotesThe Concurrency Challenge : Notes
The Concurrency Challenge : NotesSubhajit Sahu
 
Deepcoder to Self-Code with Machine Learning
Deepcoder to Self-Code with Machine LearningDeepcoder to Self-Code with Machine Learning
Deepcoder to Self-Code with Machine LearningIRJET Journal
 
The influence of data size on a high-performance computing memetic algorithm ...
The influence of data size on a high-performance computing memetic algorithm ...The influence of data size on a high-performance computing memetic algorithm ...
The influence of data size on a high-performance computing memetic algorithm ...journalBEEI
 
Performance evaluation of larger matrices over cluster of four nodes using mpi
Performance evaluation of larger matrices over cluster of four nodes using mpiPerformance evaluation of larger matrices over cluster of four nodes using mpi
Performance evaluation of larger matrices over cluster of four nodes using mpieSAT Journals
 
HARDWARE DESIGN FOR MACHINE LEARNING
HARDWARE DESIGN FOR MACHINE LEARNINGHARDWARE DESIGN FOR MACHINE LEARNING
HARDWARE DESIGN FOR MACHINE LEARNINGijaia
 
Hardware design for_machine_learning
Hardware design for_machine_learningHardware design for_machine_learning
Hardware design for_machine_learninggerogepatton
 
Architecting Solutions for the Manycore Future
Architecting Solutions for the Manycore FutureArchitecting Solutions for the Manycore Future
Architecting Solutions for the Manycore FutureTalbott Crowell
 
Building A Linux Cluster Using Raspberry PI #1!
Building A Linux Cluster Using Raspberry PI #1!Building A Linux Cluster Using Raspberry PI #1!
Building A Linux Cluster Using Raspberry PI #1!A Jorge Garcia
 

Similar a Bondmachine, a mouldable Computer Architecture (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"
 
Cluster Setup Manual Using Ubuntu and MPICH
Cluster Setup Manual Using Ubuntu and MPICHCluster Setup Manual Using Ubuntu and MPICH
Cluster Setup Manual Using Ubuntu and MPICH
 
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
 
Isometric Making Essay
Isometric Making EssayIsometric Making Essay
Isometric Making Essay
 
International journal of engineering issues vol 2015 - no 2 - paper4
International journal of engineering issues   vol 2015 - no 2 - paper4International journal of engineering issues   vol 2015 - no 2 - paper4
International journal of engineering issues vol 2015 - no 2 - paper4
 
Large scale gpu cluster for ai
Large scale gpu cluster for aiLarge scale gpu cluster for ai
Large scale gpu cluster for ai
 
Cyber Physical Systems – Collaborating Systems of Systems
Cyber Physical Systems – Collaborating Systems of SystemsCyber Physical Systems – Collaborating Systems of Systems
Cyber Physical Systems – Collaborating Systems of Systems
 
Rev1 HPPS Projects 2007
Rev1 HPPS Projects 2007Rev1 HPPS Projects 2007
Rev1 HPPS Projects 2007
 
A Parallel Computing-a Paradigm to achieve High Performance
A Parallel Computing-a Paradigm to achieve High PerformanceA Parallel Computing-a Paradigm to achieve High Performance
A Parallel Computing-a Paradigm to achieve High Performance
 
parallel computing.ppt
parallel computing.pptparallel computing.ppt
parallel computing.ppt
 
what is core-i
what is core-i what is core-i
what is core-i
 
TOGETHER: TOpology GEneration THrough HEuRistics
TOGETHER: TOpology GEneration THrough HEuRisticsTOGETHER: TOpology GEneration THrough HEuRistics
TOGETHER: TOpology GEneration THrough HEuRistics
 
The Concurrency Challenge : Notes
The Concurrency Challenge : NotesThe Concurrency Challenge : Notes
The Concurrency Challenge : Notes
 
Deepcoder to Self-Code with Machine Learning
Deepcoder to Self-Code with Machine LearningDeepcoder to Self-Code with Machine Learning
Deepcoder to Self-Code with Machine Learning
 
The influence of data size on a high-performance computing memetic algorithm ...
The influence of data size on a high-performance computing memetic algorithm ...The influence of data size on a high-performance computing memetic algorithm ...
The influence of data size on a high-performance computing memetic algorithm ...
 
Performance evaluation of larger matrices over cluster of four nodes using mpi
Performance evaluation of larger matrices over cluster of four nodes using mpiPerformance evaluation of larger matrices over cluster of four nodes using mpi
Performance evaluation of larger matrices over cluster of four nodes using mpi
 
HARDWARE DESIGN FOR MACHINE LEARNING
HARDWARE DESIGN FOR MACHINE LEARNINGHARDWARE DESIGN FOR MACHINE LEARNING
HARDWARE DESIGN FOR MACHINE LEARNING
 
Hardware design for_machine_learning
Hardware design for_machine_learningHardware design for_machine_learning
Hardware design for_machine_learning
 
Architecting Solutions for the Manycore Future
Architecting Solutions for the Manycore FutureArchitecting Solutions for the Manycore Future
Architecting Solutions for the Manycore Future
 
Building A Linux Cluster Using Raspberry PI #1!
Building A Linux Cluster Using Raspberry PI #1!Building A Linux Cluster Using Raspberry PI #1!
Building A Linux Cluster Using Raspberry PI #1!
 

Más 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
 

Más 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
 

Bondmachine, a mouldable Computer Architecture

  • 1. BondMachine A Mouldable Computer Architecture Mirko Mariotti Department of Physics and Geology - University of Perugia and INFN Perugia Workshop INFN CCR 2017 Laboratori Nazionali del Gran Sasso, 22-26 Maggio 2017 May 23, 2017
  • 2. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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. Uses. Mirko Mariotti BondMachine May 23, 2017 2/43
  • 3. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 4. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 5. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 6. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 7. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 8. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 9. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 10. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 11. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 12. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 3/43
  • 13. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Computer Architectures First idea Having a multi-core architecture completely heterogeneous both in cores types and interconnections. Mirko Mariotti BondMachine May 23, 2017 4/43
  • 14. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces base for the second idea Programming language User mode Kernel mode Processor Transistors Mirko Mariotti BondMachine May 23, 2017 5/43
  • 15. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces base for the second idea Programming language User mode Kernel mode Processor Register Machine Transistors Mirko Mariotti BondMachine May 23, 2017 5/43
  • 16. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces base for the second idea Programming language User mode Kernel mode Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine May 23, 2017 5/43
  • 17. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces base for the second idea Programming language User mode Kernel mode Kernel Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine May 23, 2017 5/43
  • 18. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces base for the second idea Programming language User mode Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine May 23, 2017 5/43
  • 19. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces base for the second idea Programming language User mode Standard Library Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti BondMachine May 23, 2017 5/43
  • 20. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces 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 May 23, 2017 5/43
  • 21. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces 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 May 23, 2017 5/43
  • 22. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces 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 May 23, 2017 5/43
  • 23. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces 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 May 23, 2017 5/43
  • 24. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces 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 May 23, 2017 5/43
  • 25. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces 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 May 23, 2017 5/43
  • 26. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces 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 May 23, 2017 5/43
  • 27. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces 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 May 23, 2017 5/43
  • 28. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Layers, Abstractions and Interfaces 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 May 23, 2017 5/43
  • 29. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 6/43
  • 30. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 7/43
  • 31. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 7/43
  • 32. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 7/43
  • 33. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 7/43
  • 34. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 7/43
  • 35. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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. There possible operating modes. Mirko Mariotti BondMachine May 23, 2017 8/43
  • 36. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 9/43
  • 37. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 9/43
  • 38. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 9/43
  • 39. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 9/43
  • 40. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 9/43
  • 41. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 9/43
  • 42. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work The BondMachine Mirko Mariotti BondMachine May 23, 2017 10/43
  • 43. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 one another, arbitrarily interconnected and sharing non computing elements. Mirko Mariotti BondMachine May 23, 2017 11/43
  • 44. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 12/43
  • 45. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 12/43
  • 46. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 12/43
  • 47. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work BondMachine web front-end Operations on BondMachines can also be performed via a developed web framework Mirko Mariotti BondMachine May 23, 2017 13/43
  • 48. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 are 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 May 23, 2017 14/43
  • 49. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 are 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 May 23, 2017 14/43
  • 50. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 are 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 May 23, 2017 14/43
  • 51. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Simulation examples Activity log example: A graphical example: https://youtube.com/embed/Cc1Qzioh2Ng Mirko Mariotti BondMachine May 23, 2017 15/43
  • 52. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Moulding the BondMachine As said BondMachines are not general purpose architectures, and to be useful 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 suit 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 May 23, 2017 16/43
  • 53. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Moulding the BondMachine As said BondMachines are not general purpose architectures, and to be useful 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 suit 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 May 23, 2017 16/43
  • 54. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Moulding the BondMachine As said BondMachines are not general purpose architectures, and to be useful 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 suit 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 May 23, 2017 16/43
  • 55. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Moulding the BondMachine As said BondMachines are not general purpose architectures, and to be useful 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 suit 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 May 23, 2017 16/43
  • 56. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Moulding the BondMachine As said BondMachines are not general purpose architectures, and to be useful 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 suit 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 May 23, 2017 16/43
  • 57. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Moulding the BondMachine As said BondMachines are not general purpose architectures, and to be useful 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 suit 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 May 23, 2017 16/43
  • 58. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 17/43
  • 59. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Bondgo This is the standard flow when building computer programs Mirko Mariotti BondMachine May 23, 2017 18/43
  • 60. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Bondgo This is the standard flow when building computer programs high level language source Mirko Mariotti BondMachine May 23, 2017 18/43
  • 61. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Bondgo This is the standard flow when building computer programs high level language source assembly file Compiling Mirko Mariotti BondMachine May 23, 2017 18/43
  • 62. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 18/43
  • 63. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 19/43
  • 64. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Bondgo bondgo may also do something different when compiling a single threaded program ... Mirko Mariotti BondMachine May 23, 2017 20/43
  • 65. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Bondgo bondgo may also do something different when compiling a single threaded program ... high level language source Mirko Mariotti BondMachine May 23, 2017 20/43
  • 66. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 20/43
  • 67. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 20/43
  • 68. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 20/43
  • 69. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 20/43
  • 70. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 20/43
  • 71. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Bondgo ... bondgo may not only create the binaries, but also the CP architecture, and ... Mirko Mariotti BondMachine May 23, 2017 21/43
  • 72. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Bondgo ... it can do even much more interesting things when compiling concurrent programs. Mirko Mariotti BondMachine May 23, 2017 22/43
  • 73. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level language source Mirko Mariotti BondMachine May 23, 2017 22/43
  • 74. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 22/43
  • 75. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 22/43
  • 76. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 22/43
  • 77. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 22/43
  • 78. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 22/43
  • 79. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 23/43
  • 80. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Compiling Architectures One of the most important result The architecture creation is a part of the compilation process. Mirko Mariotti BondMachine May 23, 2017 24/43
  • 81. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 25/43
  • 82. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 26/43
  • 83. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 27/43
  • 84. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 make matrices calculation. Neuralbond, to use neural networks. Mirko Mariotti BondMachine May 23, 2017 28/43
  • 85. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 make matrices calculation. Neuralbond, to use neural networks. Mirko Mariotti BondMachine May 23, 2017 28/43
  • 86. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 make matrices calculation. Neuralbond, to use neural networks. Mirko Mariotti BondMachine May 23, 2017 28/43
  • 87. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 make matrices calculation. Neuralbond, to use neural networks. Mirko Mariotti BondMachine May 23, 2017 28/43
  • 88. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 make matrices calculation. Neuralbond, to use neural networks. Mirko Mariotti BondMachine May 23, 2017 28/43
  • 89. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 29/43
  • 90. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 29/43
  • 91. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 29/43
  • 92. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 29/43
  • 93. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 29/43
  • 94. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 29/43
  • 95. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 30/43
  • 96. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses 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 May 23, 2017 31/43
  • 97. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Toolchains A set of toolchains allow the build and the direct deploy to a target device of BondMachines. Bondgo Toolchain example A file local.mk contains references to the source code as well all the build necessities. make bondmachine creates the JSON representation of the BM and assemble its code. make show displays a graphical representation of the BM. make simulate start a simulation. make videosim create a simulation video. make flash the device into the destination target. Mirko Mariotti BondMachine May 23, 2017 32/43
  • 98. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work The Prototype The project has been selected for the participation at MakerFaire 2016 Rome (The Europen Edition) and a prototype has been assembled and presented. First run: https://youtube.com/embed/hukTrGxTb7A Mirko Mariotti BondMachine May 23, 2017 33/43
  • 99. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work The BondMachine computational Ecosystem The same logic existing among CP have been extended among different BondMachines organized in clusters. A protocol over ethernet called etherbond have been created for the purpose. FPGA based BondMachines, standard Linux Workstations, Emulated BondMachines may join an etherbond cluster an contribute to a single distributed computational problem. Parts of the system can be redeployed without changing the problem behavior (only the performances). Mirko Mariotti BondMachine May 23, 2017 34/43
  • 100. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work The BondMachine computational Ecosystem The same logic existing among CP have been extended among different BondMachines organized in clusters. A protocol over ethernet called etherbond have been created for the purpose. FPGA based BondMachines, standard Linux Workstations, Emulated BondMachines may join an etherbond cluster an contribute to a single distributed computational problem. Parts of the system can be redeployed without changing the problem behavior (only the performances). Mirko Mariotti BondMachine May 23, 2017 34/43
  • 101. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work The BondMachine computational Ecosystem The same logic existing among CP have been extended among different BondMachines organized in clusters. A protocol over ethernet called etherbond have been created for the purpose. FPGA based BondMachines, standard Linux Workstations, Emulated BondMachines may join an etherbond cluster an contribute to a single distributed computational problem. Parts of the system can be redeployed without changing the problem behavior (only the performances). Mirko Mariotti BondMachine May 23, 2017 34/43
  • 102. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work The BondMachine computational Ecosystem The same logic existing among CP have been extended among different BondMachines organized in clusters. A protocol over ethernet called etherbond have been created for the purpose. FPGA based BondMachines, standard Linux Workstations, Emulated BondMachines may join an etherbond cluster an contribute to a single distributed computational problem. Parts of the system can be redeployed without changing the problem behavior (only the performances). Mirko Mariotti BondMachine May 23, 2017 34/43
  • 103. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Uses in Physics Two possible uses in Physics experiments are currently being explored: Real time pulse shape analysis in neutron detectors. Test beam for space experiments (DAMPE, HERD) Mirko Mariotti BondMachine May 23, 2017 35/43
  • 104. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Real time pulse shape analysis in neutron detectors The operation of the new generation of high-intensity neutron sources like SNS, JSNS and European Spallation Source (ESS, Lund, Sweden), now under construction, are introducing a new demand for neutron detection capabilities. These demands yield to the need for new data collection procedures and new technology based on solid state Si devices. We are trying to use BondMachines to make the real time shape analysis in this kind of detecting devices. Courtesy of Prof. F.Sacchetti Mirko Mariotti BondMachine May 23, 2017 36/43
  • 105. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Test beam for space experiments (DAMPE, HERD) Trigger logic for test beams Courtesy of V.Vagelli and M.Duranti Mirko Mariotti BondMachine May 23, 2017 37/43
  • 106. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Test beam for space experiments (DAMPE, HERD) Trigger logic for test beams Courtesy of V.Vagelli and M.Duranti Mirko Mariotti BondMachine May 23, 2017 38/43
  • 107. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Test beam for space experiments (DAMPE, HERD) Trigger logic for test beams We are trying to explore the possibility of using BondMachine to handle efficiently this kind of operations. Mirko Mariotti BondMachine May 23, 2017 39/43
  • 108. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Possible other uses The BondMachine could be used in several types of real world applications, some of them being: Workstation FPGA accelerators for any kind of intensive computation. IoT and CyberPhysical systems. Computer Science educational applications. Mirko Mariotti BondMachine May 23, 2017 40/43
  • 109. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Possible other uses The BondMachine could be used in several types of real world applications, some of them being: Workstation FPGA accelerators for any kind of intensive computation. IoT and CyberPhysical systems. Computer Science educational applications. Mirko Mariotti BondMachine May 23, 2017 40/43
  • 110. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Possible other uses The BondMachine could be used in several types of real world applications, some of them being: Workstation FPGA accelerators for any kind of intensive computation. IoT and CyberPhysical systems. Computer Science educational applications. Mirko Mariotti BondMachine May 23, 2017 40/43
  • 111. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Possible other uses The BondMachine could be used in several types of real world applications, some of them being: Workstation FPGA accelerators for any kind of intensive computation. IoT and CyberPhysical systems. Computer Science educational applications. Mirko Mariotti BondMachine May 23, 2017 40/43
  • 112. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Conclusions The BondMachine is a new kind of computing device made possible in practice only by the emerging of new re-programmable hardware technologies such as FPGA. Keeping the register machine abstraction it is possible to bor- row well known languages and techniques in programming these devices removing the need of having a general purpose architecture. The result of this process is the construction of a computer ar- chitecture that is not anymore a static constraint where com- puting occurs but its creation becomes a part of the computing process, gaining computing power and flexibility. Over this abstraction is it possible to create a full computing Ecosystem. Mirko Mariotti BondMachine May 23, 2017 41/43
  • 113. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Future work The project is a prototype. Include new processor shared objects and currently unsupported opcodes. Extend the compiler to include more data structures. Improve the networking with the support for wifi. Work on BondMachine as accelerators. What would an OS for BondMachines look like ? Mirko Mariotti BondMachine May 23, 2017 42/43
  • 114. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Future work The project is a prototype. Include new processor shared objects and currently unsupported opcodes. Extend the compiler to include more data structures. Improve the networking with the support for wifi. Work on BondMachine as accelerators. What would an OS for BondMachines look like ? Mirko Mariotti BondMachine May 23, 2017 42/43
  • 115. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Future work The project is a prototype. Include new processor shared objects and currently unsupported opcodes. Extend the compiler to include more data structures. Improve the networking with the support for wifi. Work on BondMachine as accelerators. What would an OS for BondMachines look like ? Mirko Mariotti BondMachine May 23, 2017 42/43
  • 116. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Future work The project is a prototype. Include new processor shared objects and currently unsupported opcodes. Extend the compiler to include more data structures. Improve the networking with the support for wifi. Work on BondMachine as accelerators. What would an OS for BondMachines look like ? Mirko Mariotti BondMachine May 23, 2017 42/43
  • 117. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Future work The project is a prototype. Include new processor shared objects and currently unsupported opcodes. Extend the compiler to include more data structures. Improve the networking with the support for wifi. Work on BondMachine as accelerators. What would an OS for BondMachines look like ? Mirko Mariotti BondMachine May 23, 2017 42/43
  • 118. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Future work The project is a prototype. Include new processor shared objects and currently unsupported opcodes. Extend the compiler to include more data structures. Improve the networking with the support for wifi. Work on BondMachine as accelerators. What would an OS for BondMachines look like ? Mirko Mariotti BondMachine May 23, 2017 42/43
  • 119. May 23, 2017 Mirko Mariotti Introduction Architectures Abstractions BondMachine Connecting Processors Shared Modules Tools Simulation Moulding Bondgo Builders API Evolutionary BondMachine TensorFlow to Bondmachine Hardware Prototype Ecosystem Uses in Physics Other uses Conclusions Future work Mirko Mariotti Department of Physics and Geology, University of Perugia and INFN PG mirko.mariotti@unipg.it http://bondmachine.fisica.unipg.it Mirko Mariotti BondMachine May 23, 2017 43/43