SlideShare a Scribd company logo
1 of 128
Download to read offline
The BondMachine Toolkit
A novel moldable computer architecture
Mirko Mariotti Loriano Storchi Daniele Spiga
Department of Physics and Geology - University of Perugia
INFN Perugia
The International Conference on Parallel Computing
ParCo2019
Prague, Czech Republic, 10-13 September 2019
Introduction
The BondMachine Toolkit: A novel moldable computer
architecture
In this presentation i will talk about:
 Technological background of the project
 The BondMachine Project: the Architecture
 The BondMachine Project: the Tools
 Use cases
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 2/40
Technological Background
Current challenges in computing
 Von Neumann Bottleneck:
New computational problems show that current architectural
models has to be improved or changed to address future payloads.
 Energy Efficient computation:
Not wasting resources (silicon, time, energy, instructions).
Using the right resource for the specific case
 Edge/Fog/Cloud Computing:
Making the computation where it make sense
Avoiding the transfer of unnecessary data
Creating consistent interfaces for distributed systems
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 3/40
Technological Background
Current challenges in computing
 Von Neumann Bottleneck:
New computational problems show that current architectural
models has to be improved or changed to address future payloads.
 Energy Efficient computation:
Not wasting resources (silicon, time, energy, instructions).
Using the right resource for the specific case
 Edge/Fog/Cloud Computing:
Making the computation where it make sense
Avoiding the transfer of unnecessary data
Creating consistent interfaces for distributed systems
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 3/40
Technological Background
Current challenges in computing
 Von Neumann Bottleneck:
New computational problems show that current architectural
models has to be improved or changed to address future payloads.
 Energy Efficient computation:
Not wasting resources (silicon, time, energy, instructions).
Using the right resource for the specific case
 Edge/Fog/Cloud Computing:
Making the computation where it make sense
Avoiding the transfer of unnecessary data
Creating consistent interfaces for distributed systems
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 3/40
Technological Background Programmable Logic
FPGA
What is it ?
 A field-programmable gate array (FPGA) is an integrated circuit whose
logic is re-programmable. It’s used to build reconfigurable digital circuits.

FPGAs contain an array of programmable
logic blocks, and a hierarchy of reconfig-
urable interconnects that allow the blocks
to be wired together.

Logic blocks can be configured to perform
complex combinational functions.

The FPGA configuration is generally specified using a hardware
description language (HDL).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 4/40
Technological Background Programmable Logic
FPGA
What is it ?
 A field-programmable gate array (FPGA) is an integrated circuit whose
logic is re-programmable. It’s used to build reconfigurable digital circuits.

FPGAs contain an array of programmable
logic blocks, and a hierarchy of reconfig-
urable interconnects that allow the blocks
to be wired together.

Logic blocks can be configured to perform
complex combinational functions.

The FPGA configuration is generally specified using a hardware
description language (HDL).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 4/40
Technological Background Programmable Logic
FPGA
What is it ?
 A field-programmable gate array (FPGA) is an integrated circuit whose
logic is re-programmable. It’s used to build reconfigurable digital circuits.

FPGAs contain an array of programmable
logic blocks, and a hierarchy of reconfig-
urable interconnects that allow the blocks
to be wired together.

Logic blocks can be configured to perform
complex combinational functions.

The FPGA configuration is generally specified using a hardware
description language (HDL).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 4/40
Technological Background Programmable Logic
FPGA
What is it ?
 A field-programmable gate array (FPGA) is an integrated circuit whose
logic is re-programmable. It’s used to build reconfigurable digital circuits.

FPGAs contain an array of programmable
logic blocks, and a hierarchy of reconfig-
urable interconnects that allow the blocks
to be wired together.

Logic blocks can be configured to perform
complex combinational functions.

The FPGA configuration is generally specified using a hardware
description language (HDL).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 4/40
Technological Background Programmable Logic
FPGA
Use in computing
The use of FPGA in computing is growing due several reasons:
 can potentially deliver great performance via massive parallelism
 can address payloads which are not performing well on
uniprocessors (Neural Networks, Deep Learning)
 can handle efficiently non-standard data types
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 5/40
Technological Background Programmable Logic
FPGA
Use in computing
The use of FPGA in computing is growing due several reasons:
 can potentially deliver great performance via massive parallelism
 can address payloads which are not performing well on
uniprocessors (Neural Networks, Deep Learning)
 can handle efficiently non-standard data types
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 5/40
Technological Background Programmable Logic
FPGA
Use in computing
The use of FPGA in computing is growing due several reasons:
 can potentially deliver great performance via massive parallelism
 can address payloads which are not performing well on
uniprocessors (Neural Networks, Deep Learning)
 can handle efficiently non-standard data types
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 5/40
Technological Background Programmable Logic
FPGA
Challenges in computing
On the other hand the adoption on FPGA poses several challenges:
 Porting of legacy code is usually hard.
 Interoperability with standard applications is problematic.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 6/40
Technological Background Programmable Logic
FPGA
Challenges in computing
On the other hand the adoption on FPGA poses several challenges:
 Porting of legacy code is usually hard.
 Interoperability with standard applications is problematic.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 6/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background Computer Architectures
Computer Architectures
Multi-core and Heterogeneous
Today’s computer architecture are:
 Multi-core,Two or more independent actual processing units
execute multiple instructions at the same time.
 The power is given by the number of cores.
 Parallelism has to be addressed.
 Heterogeneous, different types of processing units.
 Cell, GPU, Parallela, TPU.
 The power is given by the specialization.
 The units data transfer has to be addressed.
 The payloads scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
Technological Background The first Idea
The BondMachine
The first idea
High level sources: Go, TensorFlow, NN, ...
Building a new kind of computer architecture (multi-core and
heterogeneous both in cores types and interconnections) which
dynamically adapt to the specific computational problem rather than
be static.
BM architecture Layer
FPGA
Concurrency
and Special-
ization
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
Technological Background The first Idea
The BondMachine
The first idea
High level sources: Go, TensorFlow, NN, ...
Building a new kind of computer architecture (multi-core and
heterogeneous both in cores types and interconnections) which
dynamically adapt to the specific computational problem rather than
be static.
BM architecture Layer
FPGA
Concurrency
and Special-
ization
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
Technological Background The first Idea
The BondMachine
The first idea
High level sources: Go, TensorFlow, NN, ...
Building a new kind of computer architecture (multi-core and
heterogeneous both in cores types and interconnections) which
dynamically adapt to the specific computational problem rather than
be static.
BM architecture Layer
FPGA
Concurrency
and Special-
ization
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
Technological Background The first Idea
The BondMachine
The first idea
High level sources: Go, TensorFlow, NN, ...
Building a new kind of computer architecture (multi-core and
heterogeneous both in cores types and interconnections) which
dynamically adapt to the specific computational problem rather than
be static.
BM architecture Layer
FPGA
Concurrency
and Special-
ization
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
Technological Background The first Idea
The BondMachine
The first idea
High level sources: Go, TensorFlow, NN, ...
Building a new kind of computer architecture (multi-core and
heterogeneous both in cores types and interconnections) which
dynamically adapt to the specific computational problem rather than
be static.
BM architecture Layer
FPGA
Concurrency
and Special-
ization
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
BondMachine
Introducing the BondMachine (BM)
The BondMachine is a software ecosystem for the dynamic generation
of computer architectures that:
 Are composed by many, possibly hundreds, computing cores.
 Have very small cores and not necessarily of the same type
(different ISA and ABI).
 Have a not fixed way of interconnecting cores.
 May have some elements shared among cores (for example channels
and shared memories).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
BondMachine
Introducing the BondMachine (BM)
The BondMachine is a software ecosystem for the dynamic generation
of computer architectures that:
 Are composed by many, possibly hundreds, computing cores.
 Have very small cores and not necessarily of the same type
(different ISA and ABI).
 Have a not fixed way of interconnecting cores.
 May have some elements shared among cores (for example channels
and shared memories).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
BondMachine
Introducing the BondMachine (BM)
The BondMachine is a software ecosystem for the dynamic generation
of computer architectures that:
 Are composed by many, possibly hundreds, computing cores.
 Have very small cores and not necessarily of the same type
(different ISA and ABI).
 Have a not fixed way of interconnecting cores.
 May have some elements shared among cores (for example channels
and shared memories).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
BondMachine
Introducing the BondMachine (BM)
The BondMachine is a software ecosystem for the dynamic generation
of computer architectures that:
 Are composed by many, possibly hundreds, computing cores.
 Have very small cores and not necessarily of the same type
(different ISA and ABI).
 Have a not fixed way of interconnecting cores.
 May have some elements shared among cores (for example channels
and shared memories).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
BondMachine
Introducing the BondMachine (BM)
The BondMachine is a software ecosystem for the dynamic generation
of computer architectures that:
 Are composed by many, possibly hundreds, computing cores.
 Have very small cores and not necessarily of the same type
(different ISA and ABI).
 Have a not fixed way of interconnecting cores.
 May have some elements shared among cores (for example channels
and shared memories).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
BondMachine
The BondMachine
An example
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 10/40
BondMachine Connecting Processors
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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
BondMachine Connecting Processors
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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
BondMachine Connecting Processors
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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
BondMachine Connecting Processors
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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
BondMachine Connecting Processors
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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
BondMachine Connecting Processors
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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
BondMachine Shared Objects
Shared Objects (SO)
The non-computational element of the BM
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.
Four kind of SO have been developed so far: the Channel, the
Shared Memory, the Barrier and a Pseudo Random Numbers Gen-
erator.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
BondMachine Shared Objects
Shared Objects (SO)
The non-computational element of the BM
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.
Four kind of SO have been developed so far: the Channel, the
Shared Memory, the Barrier and a Pseudo Random Numbers Gen-
erator.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
BondMachine Shared Objects
Shared Objects (SO)
The non-computational element of the BM
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.
Four kind of SO have been developed so far: the Channel, the
Shared Memory, the Barrier and a Pseudo Random Numbers Gen-
erator.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
BondMachine Shared Objects
Shared Objects (SO)
The non-computational element of the BM
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.
Four kind of SO have been developed so far: the Channel, the
Shared Memory, the Barrier and a Pseudo Random Numbers Gen-
erator.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
BondMachine Shared Objects
Shared Objects (SO)
The non-computational element of the BM
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.
Four kind of SO have been developed so far: the Channel, the
Shared Memory, the Barrier and a Pseudo Random Numbers Gen-
erator.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
BondMachine Shared Objects
Shared Objects (SO)
The non-computational element of the BM
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.
Four kind of SO have been developed so far: the Channel, the
Shared Memory, the Barrier and a Pseudo Random Numbers Gen-
erator.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
Architectures Handling
Handle BM computer architectures
The BM computer architecture is managed by a set of tools to:
 build a specify architecture
 modify a pre-existing architecture
 simulate or emulate the behavior
 Generate the Hardware Description Code (HDL)
Processor Builder
Selects the single pro-
cessor, assembles and
disassembles, saves on
disk as JSON, creates
the HDL code of a CP
BondMachine Builder
Connects CPs and SOs
together in custom
topologies, loads and
saves on disk as JSON,
create BM’s HDL code
Simulation Framework
Simulates the be-
haviour, emulates a
BM on a standard
Linux workstation
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 13/40
Architectures Handling
Handle BM computer architectures
The BM computer architecture is managed by a set of tools to:
 build a specify architecture
 modify a pre-existing architecture
 simulate or emulate the behavior
 Generate the Hardware Description Code (HDL)
Processor Builder
Selects the single pro-
cessor, assembles and
disassembles, saves on
disk as JSON, creates
the HDL code of a CP
BondMachine Builder
Connects CPs and SOs
together in custom
topologies, loads and
saves on disk as JSON,
create BM’s HDL code
Simulation Framework
Simulates the be-
haviour, emulates a
BM on a standard
Linux workstation
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 13/40
Architectures Handling
Handle BM computer architectures
The BM computer architecture is managed by a set of tools to:
 build a specify architecture
 modify a pre-existing architecture
 simulate or emulate the behavior
 Generate the Hardware Description Code (HDL)
Processor Builder
Selects the single pro-
cessor, assembles and
disassembles, saves on
disk as JSON, creates
the HDL code of a CP
BondMachine Builder
Connects CPs and SOs
together in custom
topologies, loads and
saves on disk as JSON,
create BM’s HDL code
Simulation Framework
Simulates the be-
haviour, emulates a
BM on a standard
Linux workstation
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 13/40
Architectures Handling
Handle BM computer architectures
The BM computer architecture is managed by a set of tools to:
 build a specify architecture
 modify a pre-existing architecture
 simulate or emulate the behavior
 Generate the Hardware Description Code (HDL)
Processor Builder
Selects the single pro-
cessor, assembles and
disassembles, saves on
disk as JSON, creates
the HDL code of a CP
BondMachine Builder
Connects CPs and SOs
together in custom
topologies, loads and
saves on disk as JSON,
create BM’s HDL code
Simulation Framework
Simulates the be-
haviour, emulates a
BM on a standard
Linux workstation
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 13/40
Architectures Molding API and Libraries
Use the BM computer architecture
Mapping specific computational problems to BMs
Symbond
Map symbolic
mathematical
expressions to BM
Boolbond
Map boolean systems
to BM
Matrixwork
Basic matrix
computation
Evolutive BM
Evolutionary
computing to BM
Bondgo
The architecture
compiler
ML tools
Map computational
graphs to BM
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
Architectures Molding API and Libraries
Use the BM computer architecture
Mapping specific computational problems to BMs
Symbond
Map symbolic
mathematical
expressions to BM
Boolbond
Map boolean systems
to BM
Matrixwork
Basic matrix
computation
Evolutive BM
Evolutionary
computing to BM
Bondgo
The architecture
compiler
ML tools
Map computational
graphs to BM
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
Architectures Molding API and Libraries
Use the BM computer architecture
Mapping specific computational problems to BMs
Symbond
Map symbolic
mathematical
expressions to BM
Boolbond
Map boolean systems
to BM
Matrixwork
Basic matrix
computation
Evolutive BM
Evolutionary
computing to BM
Bondgo
The architecture
compiler
ML tools
Map computational
graphs to BM
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
Architectures Molding API and Libraries
Use the BM computer architecture
Mapping specific computational problems to BMs
Symbond
Map symbolic
mathematical
expressions to BM
Boolbond
Map boolean systems
to BM
Matrixwork
Basic matrix
computation
Evolutive BM
Evolutionary
computing to BM
Bondgo
The architecture
compiler
ML tools
Map computational
graphs to BM
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
Architectures Molding API and Libraries
Use the BM computer architecture
Mapping specific computational problems to BMs
Symbond
Map symbolic
mathematical
expressions to BM
Boolbond
Map boolean systems
to BM
Matrixwork
Basic matrix
computation
Evolutive BM
Evolutionary
computing to BM
Bondgo
The architecture
compiler
ML tools
Map computational
graphs to BM
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
Architectures Molding API and Libraries
Use the BM computer architecture
Mapping specific computational problems to BMs
Symbond
Map symbolic
mathematical
expressions to BM
Boolbond
Map boolean systems
to BM
Matrixwork
Basic matrix
computation
Evolutive BM
Evolutionary
computing to BM
Bondgo
The architecture
compiler
ML tools
Map computational
graphs to BM
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
Architectures Molding API and Libraries
Use the BM computer architecture
Mapping specific computational problems to BMs
Symbond
Map symbolic
mathematical
expressions to BM
Boolbond
Map boolean systems
to BM
Matrixwork
Basic matrix
computation
Evolutive BM
Evolutionary
computing to BM
Bondgo
The architecture
compiler
ML tools
Map computational
graphs to BM
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
Architectures Molding Bondgo
Bondgo
The major innovation of the BondMachine Project is its compiler.
Bondgo is the name chosen for the compiler developed for the
BondMachine.
The compiler source language is Go as the name suggest.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 15/40
Architectures Molding Bondgo
Bondgo
This is the standard flow when building computer programs
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 16/40
Architectures Molding Bondgo
Bondgo
This is the standard flow when building computer programs
high level language source
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 16/40
Architectures Molding Bondgo
Bondgo
This is the standard flow when building computer programs
high level language source
assembly file
Compiling
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 16/40
Architectures Molding Bondgo
Bondgo
This is the standard flow when building computer programs
high level language source
assembly file
Compiling
machine code
Assembling
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 16/40
Architectures Molding Bondgo
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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 17/40
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
high level GO source
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
high level GO source
assembly file
Compiling
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
high level GO source
assembly file
Compiling
CP specs
Arch generating
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
high level GO source
assembly file
Compiling
CP specs
Arch generating
machine code
Assembling
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
high level GO source
assembly file
Compiling
CP specs
Arch generating
machine code
Assembling
Processor implementation
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
high level GO source
assembly file
Compiling
CP specs
Arch generating
machine code
Assembling
Processor implementation
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
A first example
counter go source
package main
import (
bondgo
)
func main () {
var outgoing bondgo.Output
var reg_int uint8
outgoing =
bondgo.Make(bondgo.Output , 3)
reg_int = 0
for {
bondgo.IOWrite(outgoing ,
reg_int)
reg_int ++
}
}
bondgo –input-file counter.go
-mpm
BM JSON rapresentation
counter asm
clr r0
rset r1 0
cpy r0 r1
cpy r1 r0
r2o r1 o0
inc r0
j 3
bondmachine tool
BM HDL code
FPGA
procbuilder tool
Binary
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
Architectures Molding Bondgo
Bondgo
... bondgo may not only create the binaries, but also the CP
architecture, and ...
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 20/40
Architectures Molding Bondgo
Bondgo
... it can do even much more interesting things when compiling
concurrent programs.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
Architectures Molding Bondgo
Bondgo
... it can do even much more interesting things when compiling
concurrent programs.
high level GO source
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
Architectures Molding Bondgo
Bondgo
... it can do even much more interesting things when compiling
concurrent programs.
high level GO source
assembly CP 1
assembly CP 2
assembly CP 3
assembly CP 4
assembly CP ...
assembly CP N
Compiling
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
Architectures Molding Bondgo
Bondgo
... it can do even much more interesting things when compiling
concurrent programs.
high level GO source
assembly CP 1
assembly CP 2
assembly CP 3
assembly CP 4
assembly CP ...
assembly CP N
Compiling
CP 1 specs
CP 2
CP 3
CP 4
CP ...
CP N
Archs generating
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
Architectures Molding Bondgo
Bondgo
... it can do even much more interesting things when compiling
concurrent programs.
high level GO source
assembly CP 1
assembly CP 2
assembly CP 3
assembly CP 4
assembly CP ...
assembly CP N
Compiling
CP 1 specs
CP 2
CP 3
CP 4
CP ...
CP N
Archs generating
Asm and Binaries
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
Architectures Molding Bondgo
Bondgo
... it can do even much more interesting things when compiling
concurrent programs.
high level GO source
assembly CP 1
assembly CP 2
assembly CP 3
assembly CP 4
assembly CP ...
assembly CP N
Compiling
CP 1 specs
CP 2
CP 3
CP 4
CP ...
CP N
Archs generating
Asm and Binaries
Interconnections
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
Architectures Molding Bondgo
Bondgo
... it can do even much more interesting things when compiling
concurrent programs.
high level GO source
assembly CP 1
assembly CP 2
assembly CP 3
assembly CP 4
assembly CP ...
assembly CP N
Compiling
CP 1 specs
CP 2
CP 3
CP 4
CP ...
CP N
Archs generating
Asm and Binaries
BondMachine
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
Architectures Molding Bondgo
Bondgo
A multi-core example
func multproc () {
var in0 bondgo.Input
var out0 bondgo.Output
var reg_d_in uint8
var reg_d_out uint8
in0 = bondgo.Make(bondgo.Input , 4)
out0 = bondgo.Make(bondgo.Output , 3)
for {
reg_d_in = bondgo.IORead(in0)
reg_d_out = reg_d_in * 8
bondgo.IOWrite(out0 , reg_d_out)
}
}
func main () {
var in0 bondgo.Input
var in1 bondgo.Input
var out0 bondgo.Output
var reg_d_in0 uint8
var reg_d_in1 uint8
var reg_d_out0 uint8
in0 = bondgo.Make(bondgo.Input , 1)
in1 = bondgo.Make(bondgo.Input , 2)
out0 = bondgo.Make(bondgo.Output , 4)
device_0:
go multproc ()
for {
reg_d_in0 = bondgo.IORead(in0)
reg_d_in1 = bondgo.IORead(in1)
reg_d_out0 = reg_d_in0 + reg_d_in1
bondgo.IOWrite(out0 , reg_d_out0)
}
}
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 22/40
Architectures Molding Bondgo
Compiling Architectures
One of the most important result
The architecture creation is a part of the compilation process.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 23/40
Architectures Molding Machine Learning with BondMachine section
Machine Learning with BondMachine
Architectures with multiple interconnected processors like the ones
produced by the BondMachine Toolkit are a perfect fit for Neural
Networks and Computational Graphs.
Several ways to map this structures to BondMachine has been
developed:
 A native Neural Network library
 A Tensorflow to BondMachine translator
 An NNEF based BondMachine composer
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 24/40
Architectures Molding Machine Learning with BondMachine section
Machine Learning with BondMachine
Architectures with multiple interconnected processors like the ones
produced by the BondMachine Toolkit are a perfect fit for Neural
Networks and Computational Graphs.
Several ways to map this structures to BondMachine has been
developed:
 A native Neural Network library
 A Tensorflow to BondMachine translator
 An NNEF based BondMachine composer
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 24/40
Clustering
BondMachine Clustering
So far we saw:
 An user friendly approach to create processors (single core).
 Optimizing a single device to support intricate computational
work-flows (multi-cores) over an heterogeneous layer.
Interconnected BondMachines
What if we could extend the this layer to multiple interconnected
devices ?
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 25/40
Clustering
BondMachine Clustering
So far we saw:
 An user friendly approach to create processors (single core).
 Optimizing a single device to support intricate computational
work-flows (multi-cores) over an heterogeneous layer.
Interconnected BondMachines
What if we could extend the this layer to multiple interconnected
devices ?
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 25/40
Clustering
BondMachine Clustering
So far we saw:
 An user friendly approach to create processors (single core).
 Optimizing a single device to support intricate computational
work-flows (multi-cores) over an heterogeneous layer.
Interconnected BondMachines
What if we could extend the this layer to multiple interconnected
devices ?
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 25/40
Clustering
BondMachine Clustering
So far we saw:
 An user friendly approach to create processors (single core).
 Optimizing a single device to support intricate computational
work-flows (multi-cores) over an heterogeneous layer.
Interconnected BondMachines
What if we could extend the this layer to multiple interconnected
devices ?
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 25/40
Clustering
BondMachine Clustering
The same logic existing among CP have been extended among different
BondMachines organized in clusters.
Protocols, one ethernet called etherbond and one using UDP called
udpbond have been created for the purpose.
FPGA based BondMachines, standard Linux Workstations, Emulated
BondMachines might join a cluster an contribute to a single distributed
computational problem.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 26/40
Clustering
BondMachine Clustering
The same logic existing among CP have been extended among different
BondMachines organized in clusters.
Protocols, one ethernet called etherbond and one using UDP called
udpbond have been created for the purpose.
FPGA based BondMachines, standard Linux Workstations, Emulated
BondMachines might join a cluster an contribute to a single distributed
computational problem.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 26/40
Clustering
BondMachine Clustering
The same logic existing among CP have been extended among different
BondMachines organized in clusters.
Protocols, one ethernet called etherbond and one using UDP called
udpbond have been created for the purpose.
FPGA based BondMachines, standard Linux Workstations, Emulated
BondMachines might join a cluster an contribute to a single distributed
computational problem.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 26/40
Clustering
BondMachine Clustering
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 27/40
Clustering
Bondgo
A cluster creation example
func multproc () {
var in0 bondgo.Input
var out0 bondgo.Output
var reg_d_in uint8
var reg_d_out uint8
in0 = bondgo.Make(bondgo.Input , 4)
out0 = bondgo.Make(bondgo.Output , 3)
for {
reg_d_in = bondgo.IORead(in0)
reg_d_out = reg_d_in * 8
bondgo.IOWrite(out0 , reg_d_out)
}
}
func main () {
var in0 bondgo.Input
var in1 bondgo.Input
var out0 bondgo.Output
var reg_d_in0 uint8
var reg_d_in1 uint8
var reg_d_out0 uint8
in0 = bondgo.Make(bondgo.Input , 1)
in1 = bondgo.Make(bondgo.Input , 2)
out0 = bondgo.Make(bondgo.Output , 4)
device_1:
go multproc ()
for {
reg_d_in0 = bondgo.IORead(in0)
reg_d_in1 = bondgo.IORead(in1)
reg_d_out0 = reg_d_in0 + reg_d_in1
bondgo.IOWrite(out0 , reg_d_out0)
}
}
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 28/40
Clustering Redeployer
BondMachine Clustering
A distributed example
The result is:
BondMachine Clustering Youtube video
A general result
Parts of the system can be redeployed among different devices without
changing the system behavior (only the performances).
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 29/40
Use cases
Use cases
Two use cases in Physics experiments are currently being developed:
 Real time pulse shape analysis in neutron detectors
 bringing the intelligence to the edge
 Test beam for space experiments (DAMPE, HERD)
 increasing testbed operations efficiency
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 30/40
Use cases Other uses
Possible other uses
The BondMachine could be used in several types of real world
applications, some of them being:
 IoT and CyberPhysical systems.
 Computer Science educational applications.
Computing Accelerator
Our effort is now in enabling the possibility of building computing
accelerators to be used from within standard (Linux) applications.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 31/40
Use cases Other uses
Possible other uses
The BondMachine could be used in several types of real world
applications, some of them being:
 IoT and CyberPhysical systems.
 Computer Science educational applications.
Computing Accelerator
Our effort is now in enabling the possibility of building computing
accelerators to be used from within standard (Linux) applications.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 31/40
Use cases Other uses
Possible other uses
The BondMachine could be used in several types of real world
applications, some of them being:
 IoT and CyberPhysical systems.
 Computer Science educational applications.
Computing Accelerator
Our effort is now in enabling the possibility of building computing
accelerators to be used from within standard (Linux) applications.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 31/40
Use cases Other uses
Possible other uses
The BondMachine could be used in several types of real world
applications, some of them being:
 IoT and CyberPhysical systems.
 Computer Science educational applications.
Computing Accelerator
Our effort is now in enabling the possibility of building computing
accelerators to be used from within standard (Linux) applications.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 31/40
Use cases Other uses
Accelerators
Hybrid chips
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 32/40
Use cases Other uses
Accelerators
Hybrid chips
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 32/40
Use cases Other uses
Accelerators
Hybrid chips
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 32/40
Use cases Other uses
Accelerators
Hybrid chips
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 32/40
Use cases Other uses
Accelerators
Example
#include  bondmachineip1 .h
#include bmapi.h
/* Define the base memaddr of the BM IP core */
#define BM_BASE XPAR_BONDMACHINEIP1_0_S00_AXI_BASEADDR
int main(void)
{
u32 input0 = 0, input1 = 0, output = 0;
int i = 0, retval , input0_id = 0, input1_id = 1,
output_id = 0;
/* Loop on input0 */
for (input0 = 0 ; input0  5 ; input0 = input0 + 1 )
{
/* Loop on input1 */
for (input1 = 0 ; input1  5 ; input1 = input1 + 1 )
{
/* Write value to the two accelerator inputs */
retval = BM_r2o (input0 , input0_id);
retval = BM_r2o (input1 , input1_id);
/* run a simple delay to allow changes on output */
for(i=0;iDELAY;i++);
/* Read the value produced by the accelerator */
retval = BM_i2r (output , output_id);
}
}
return 1;
}
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 33/40
Hardware
Hardware implementation
FPGA
The HDL 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.
 Terasic De10nano - Intel Cyclone V - Quartus
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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 34/40
Prototype
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 Youtube video
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 35/40
Project History
Project History
 May 2016 - First tests on the idea.
 October 2016 - Prototype at “Makerfaire 2016 Rome”
 Jul 2018 - InnovateFPGA EMEA Silver Award.
 Aug 2018 - Presented at Intel Campus, Santa Jose (CA) .
 Aug 2018 - InnovateFPGA Iron Award in the Grand Final.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 36/40
Conclusions
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.
The result of this process is the construction of a computer architecture that
is not anymore a static constraint where computing 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,
ranging from small interconnected IoT devices to Machine Learning
accelerators.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 37/40
Next few months goals
Next few months goals
 Improve the use of BondMachines as accelerators, integrating them
into the ecosystem
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
Next few months goals
Next few months goals
 Improve the use of BondMachines as accelerators, integrating them
into the ecosystem
 Start making benchmarks
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
Next few months goals
Next few months goals
 Improve the use of BondMachines as accelerators, integrating them
into the ecosystem
 Start making benchmarks
 Integrate low and trans-precision instructions
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
Next few months goals
Next few months goals
 Improve the use of BondMachines as accelerators, integrating them
into the ecosystem
 Start making benchmarks
 Integrate low and trans-precision instructions
 Find a way to sustain the project
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
Next few months goals
Next few months goals
 Improve the use of BondMachines as accelerators, integrating them
into the ecosystem
 Start making benchmarks
 Integrate low and trans-precision instructions
 Find a way to sustain the project
 Move the repositories to github and open the code to the
community
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
Future work
Future work
The project is at the stage of a working prototype, so work has to be
done in several areas:
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
Future work
Future work
The project is at the stage of a working prototype, so work has to be
done in several areas:
 Include new processor shared objects and currently unsupported
opcodes.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
Future work
Future work
The project is at the stage of a working prototype, so work has to be
done in several areas:
 Include new processor shared objects and currently unsupported
opcodes.
 Extend the compiler to include more data structures.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
Future work
Future work
The project is at the stage of a working prototype, so work has to be
done in several areas:
 Include new processor shared objects and currently unsupported
opcodes.
 Extend the compiler to include more data structures.
 Improve the networking including new interconnection firmwares.
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
Future work
Future work
The project is at the stage of a working prototype, so work has to be
done in several areas:
 Include new processor shared objects and currently unsupported
opcodes.
 Extend the compiler to include more data structures.
 Improve the networking including new interconnection firmwares.
What would an OS for BondMachines look like ?
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
Future work
If you have question/curiosity on the project:
Mirko Mariotti
mirko.mariotti@unipg.it
http://bondmachine.fisica.unipg.it
Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 40/40

More Related Content

What's hot

Microkernels in the Era of Data-Centric Computing
Microkernels in the Era of Data-Centric ComputingMicrokernels in the Era of Data-Centric Computing
Microkernels in the Era of Data-Centric ComputingMartin Děcký
 
Deep learning: Hardware Landscape
Deep learning: Hardware LandscapeDeep learning: Hardware Landscape
Deep learning: Hardware LandscapeGrigory Sapunov
 
Design and Implementation of Quintuple Processor Architecture Using FPGA
Design and Implementation of Quintuple Processor Architecture Using FPGADesign and Implementation of Quintuple Processor Architecture Using FPGA
Design and Implementation of Quintuple Processor Architecture Using FPGAIJERA Editor
 
Smalltalk-80 : hardware and software
Smalltalk-80 : hardware and softwareSmalltalk-80 : hardware and software
Smalltalk-80 : hardware and softwareESUG
 
FPGA Design Challenges
FPGA Design ChallengesFPGA Design Challenges
FPGA Design ChallengesKrishna Gaihre
 
FPGA Selection Methodology for Real time projects
FPGA Selection Methodology for Real time projectsFPGA Selection Methodology for Real time projects
FPGA Selection Methodology for Real time projectsKrishna Gaihre
 
MPEG-21 Digital Items in Research and Practice
MPEG-21 Digital Items in Research and PracticeMPEG-21 Digital Items in Research and Practice
MPEG-21 Digital Items in Research and PracticeAlpen-Adria-Universität
 

What's hot (10)

Microkernels in the Era of Data-Centric Computing
Microkernels in the Era of Data-Centric ComputingMicrokernels in the Era of Data-Centric Computing
Microkernels in the Era of Data-Centric Computing
 
J044084349
J044084349J044084349
J044084349
 
Deep learning: Hardware Landscape
Deep learning: Hardware LandscapeDeep learning: Hardware Landscape
Deep learning: Hardware Landscape
 
LPC4300_two_cores
LPC4300_two_coresLPC4300_two_cores
LPC4300_two_cores
 
Design and Implementation of Quintuple Processor Architecture Using FPGA
Design and Implementation of Quintuple Processor Architecture Using FPGADesign and Implementation of Quintuple Processor Architecture Using FPGA
Design and Implementation of Quintuple Processor Architecture Using FPGA
 
Smalltalk-80 : hardware and software
Smalltalk-80 : hardware and softwareSmalltalk-80 : hardware and software
Smalltalk-80 : hardware and software
 
FPGA Design Challenges
FPGA Design ChallengesFPGA Design Challenges
FPGA Design Challenges
 
FPGA Selection Methodology for Real time projects
FPGA Selection Methodology for Real time projectsFPGA Selection Methodology for Real time projects
FPGA Selection Methodology for Real time projects
 
MPEG-21 Digital Items in Research and Practice
MPEG-21 Digital Items in Research and PracticeMPEG-21 Digital Items in Research and Practice
MPEG-21 Digital Items in Research and Practice
 
2020-04-29 SIT Insights in Technology - Bertrand Meyer
2020-04-29 SIT Insights in Technology - Bertrand Meyer2020-04-29 SIT Insights in Technology - Bertrand Meyer
2020-04-29 SIT Insights in Technology - Bertrand Meyer
 

Similar to Talk at ParCo2019

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
 
INFN Advanced ML Hackaton 2022 Talk
INFN Advanced ML Hackaton 2022 TalkINFN Advanced ML Hackaton 2022 Talk
INFN Advanced ML Hackaton 2022 TalkMirko Mariotti
 
A Primer on FPGAs - Field Programmable Gate Arrays
A Primer on FPGAs - Field Programmable Gate ArraysA Primer on FPGAs - Field Programmable Gate Arrays
A Primer on FPGAs - Field Programmable Gate ArraysTaylor Riggan
 
INFN ML FPGA Course 2022
INFN ML FPGA Course 2022INFN ML FPGA Course 2022
INFN ML FPGA Course 2022Mirko Mariotti
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019Kentaro Ebisawa
 
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
 
FIDA: a framework to automatically integrate FPGA kernels within Data-Science...
FIDA: a framework to automatically integrate FPGA kernels within Data-Science...FIDA: a framework to automatically integrate FPGA kernels within Data-Science...
FIDA: a framework to automatically integrate FPGA kernels within Data-Science...NECST Lab @ Politecnico di Milano
 
Nt1310 Unit 5 Algorithm
Nt1310 Unit 5 AlgorithmNt1310 Unit 5 Algorithm
Nt1310 Unit 5 AlgorithmAngie Lee
 
TWISummit 2019 - Return of Reconfigurable Computing
TWISummit 2019 - Return of Reconfigurable ComputingTWISummit 2019 - Return of Reconfigurable Computing
TWISummit 2019 - Return of Reconfigurable ComputingThoughtworks
 
Final presentation [dissertation project], 20192 esv0002
Final presentation [dissertation project], 20192 esv0002Final presentation [dissertation project], 20192 esv0002
Final presentation [dissertation project], 20192 esv0002MOHAMMED FURQHAN
 
FPGA in outer space seminar report
FPGA in outer space seminar reportFPGA in outer space seminar report
FPGA in outer space seminar reportrahul kumar verma
 
International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER) International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER) ijceronline
 
OpenACC Monthly Highlights: August 2020
OpenACC Monthly Highlights: August 2020OpenACC Monthly Highlights: August 2020
OpenACC Monthly Highlights: August 2020OpenACC
 
electronics-11-03883.pdf
electronics-11-03883.pdfelectronics-11-03883.pdf
electronics-11-03883.pdfRioCarthiis
 
Short course on FPGA programming
Short course on FPGA programmingShort course on FPGA programming
Short course on FPGA programmingMirko Mariotti
 

Similar to Talk at ParCo2019 (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"
 
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
 
A Primer on FPGAs - Field Programmable Gate Arrays
A Primer on FPGAs - Field Programmable Gate ArraysA Primer on FPGAs - Field Programmable Gate Arrays
A Primer on FPGAs - Field Programmable Gate Arrays
 
INFN ML FPGA Course 2022
INFN ML FPGA Course 2022INFN ML FPGA Course 2022
INFN ML FPGA Course 2022
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019
 
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
 
FIDA: a framework to automatically integrate FPGA kernels within Data-Science...
FIDA: a framework to automatically integrate FPGA kernels within Data-Science...FIDA: a framework to automatically integrate FPGA kernels within Data-Science...
FIDA: a framework to automatically integrate FPGA kernels within Data-Science...
 
Nt1310 Unit 5 Algorithm
Nt1310 Unit 5 AlgorithmNt1310 Unit 5 Algorithm
Nt1310 Unit 5 Algorithm
 
FIELD PROGRAMMABLE GATE ARRAYS AND THEIR APPLICATIONS
FIELD PROGRAMMABLE GATE ARRAYS AND THEIR APPLICATIONSFIELD PROGRAMMABLE GATE ARRAYS AND THEIR APPLICATIONS
FIELD PROGRAMMABLE GATE ARRAYS AND THEIR APPLICATIONS
 
TWISummit 2019 - Return of Reconfigurable Computing
TWISummit 2019 - Return of Reconfigurable ComputingTWISummit 2019 - Return of Reconfigurable Computing
TWISummit 2019 - Return of Reconfigurable Computing
 
Final presentation [dissertation project], 20192 esv0002
Final presentation [dissertation project], 20192 esv0002Final presentation [dissertation project], 20192 esv0002
Final presentation [dissertation project], 20192 esv0002
 
Netsoft19 Keynote: Fluid Network Planes
Netsoft19 Keynote: Fluid Network PlanesNetsoft19 Keynote: Fluid Network Planes
Netsoft19 Keynote: Fluid Network Planes
 
FPGA in outer space seminar report
FPGA in outer space seminar reportFPGA in outer space seminar report
FPGA in outer space seminar report
 
International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER) International Journal of Computational Engineering Research(IJCER)
International Journal of Computational Engineering Research(IJCER)
 
OpenACC Monthly Highlights: August 2020
OpenACC Monthly Highlights: August 2020OpenACC Monthly Highlights: August 2020
OpenACC Monthly Highlights: August 2020
 
Subhadeep fpga-vs-mcu
Subhadeep fpga-vs-mcuSubhadeep fpga-vs-mcu
Subhadeep fpga-vs-mcu
 
electronics-11-03883.pdf
electronics-11-03883.pdfelectronics-11-03883.pdf
electronics-11-03883.pdf
 
Short course on FPGA programming
Short course on FPGA programmingShort course on FPGA programming
Short course on FPGA programming
 

Recently uploaded

Physiochemical properties of nanomaterials and its nanotoxicity.pptx
Physiochemical properties of nanomaterials and its nanotoxicity.pptxPhysiochemical properties of nanomaterials and its nanotoxicity.pptx
Physiochemical properties of nanomaterials and its nanotoxicity.pptxAArockiyaNisha
 
Scheme-of-Work-Science-Stage-4 cambridge science.docx
Scheme-of-Work-Science-Stage-4 cambridge science.docxScheme-of-Work-Science-Stage-4 cambridge science.docx
Scheme-of-Work-Science-Stage-4 cambridge science.docxyaramohamed343013
 
Traditional Agroforestry System in India- Shifting Cultivation, Taungya, Home...
Traditional Agroforestry System in India- Shifting Cultivation, Taungya, Home...Traditional Agroforestry System in India- Shifting Cultivation, Taungya, Home...
Traditional Agroforestry System in India- Shifting Cultivation, Taungya, Home...jana861314
 
PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...
PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...
PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...Sérgio Sacani
 
Recombination DNA Technology (Microinjection)
Recombination DNA Technology (Microinjection)Recombination DNA Technology (Microinjection)
Recombination DNA Technology (Microinjection)Jshifa
 
Lucknow 💋 Russian Call Girls Lucknow Finest Escorts Service 8923113531 Availa...
Lucknow 💋 Russian Call Girls Lucknow Finest Escorts Service 8923113531 Availa...Lucknow 💋 Russian Call Girls Lucknow Finest Escorts Service 8923113531 Availa...
Lucknow 💋 Russian Call Girls Lucknow Finest Escorts Service 8923113531 Availa...anilsa9823
 
Natural Polymer Based Nanomaterials
Natural Polymer Based NanomaterialsNatural Polymer Based Nanomaterials
Natural Polymer Based NanomaterialsAArockiyaNisha
 
Orientation, design and principles of polyhouse
Orientation, design and principles of polyhouseOrientation, design and principles of polyhouse
Orientation, design and principles of polyhousejana861314
 
Analytical Profile of Coleus Forskohlii | Forskolin .pptx
Analytical Profile of Coleus Forskohlii | Forskolin .pptxAnalytical Profile of Coleus Forskohlii | Forskolin .pptx
Analytical Profile of Coleus Forskohlii | Forskolin .pptxSwapnil Therkar
 
Behavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfBehavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfSELF-EXPLANATORY
 
Module 4: Mendelian Genetics and Punnett Square
Module 4:  Mendelian Genetics and Punnett SquareModule 4:  Mendelian Genetics and Punnett Square
Module 4: Mendelian Genetics and Punnett SquareIsiahStephanRadaza
 
The Black hole shadow in Modified Gravity
The Black hole shadow in Modified GravityThe Black hole shadow in Modified Gravity
The Black hole shadow in Modified GravitySubhadipsau21168
 
Ahmedabad Call Girls Service 9537192988 can satisfy every one of your dreams
Ahmedabad Call Girls Service 9537192988 can satisfy every one of your dreamsAhmedabad Call Girls Service 9537192988 can satisfy every one of your dreams
Ahmedabad Call Girls Service 9537192988 can satisfy every one of your dreamsoolala9823
 
Nanoparticles synthesis and characterization​ ​
Nanoparticles synthesis and characterization​  ​Nanoparticles synthesis and characterization​  ​
Nanoparticles synthesis and characterization​ ​kaibalyasahoo82800
 
Analytical Profile of Coleus Forskohlii | Forskolin .pdf
Analytical Profile of Coleus Forskohlii | Forskolin .pdfAnalytical Profile of Coleus Forskohlii | Forskolin .pdf
Analytical Profile of Coleus Forskohlii | Forskolin .pdfSwapnil Therkar
 
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.PraveenaKalaiselvan1
 
Boyles law module in the grade 10 science
Boyles law module in the grade 10 scienceBoyles law module in the grade 10 science
Boyles law module in the grade 10 sciencefloriejanemacaya1
 
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tantaDashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tantaPraksha3
 
Animal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptxAnimal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptxUmerFayaz5
 

Recently uploaded (20)

Physiochemical properties of nanomaterials and its nanotoxicity.pptx
Physiochemical properties of nanomaterials and its nanotoxicity.pptxPhysiochemical properties of nanomaterials and its nanotoxicity.pptx
Physiochemical properties of nanomaterials and its nanotoxicity.pptx
 
Scheme-of-Work-Science-Stage-4 cambridge science.docx
Scheme-of-Work-Science-Stage-4 cambridge science.docxScheme-of-Work-Science-Stage-4 cambridge science.docx
Scheme-of-Work-Science-Stage-4 cambridge science.docx
 
Traditional Agroforestry System in India- Shifting Cultivation, Taungya, Home...
Traditional Agroforestry System in India- Shifting Cultivation, Taungya, Home...Traditional Agroforestry System in India- Shifting Cultivation, Taungya, Home...
Traditional Agroforestry System in India- Shifting Cultivation, Taungya, Home...
 
PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...
PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...
PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...
 
Recombination DNA Technology (Microinjection)
Recombination DNA Technology (Microinjection)Recombination DNA Technology (Microinjection)
Recombination DNA Technology (Microinjection)
 
Lucknow 💋 Russian Call Girls Lucknow Finest Escorts Service 8923113531 Availa...
Lucknow 💋 Russian Call Girls Lucknow Finest Escorts Service 8923113531 Availa...Lucknow 💋 Russian Call Girls Lucknow Finest Escorts Service 8923113531 Availa...
Lucknow 💋 Russian Call Girls Lucknow Finest Escorts Service 8923113531 Availa...
 
Natural Polymer Based Nanomaterials
Natural Polymer Based NanomaterialsNatural Polymer Based Nanomaterials
Natural Polymer Based Nanomaterials
 
Orientation, design and principles of polyhouse
Orientation, design and principles of polyhouseOrientation, design and principles of polyhouse
Orientation, design and principles of polyhouse
 
Engler and Prantl system of classification in plant taxonomy
Engler and Prantl system of classification in plant taxonomyEngler and Prantl system of classification in plant taxonomy
Engler and Prantl system of classification in plant taxonomy
 
Analytical Profile of Coleus Forskohlii | Forskolin .pptx
Analytical Profile of Coleus Forskohlii | Forskolin .pptxAnalytical Profile of Coleus Forskohlii | Forskolin .pptx
Analytical Profile of Coleus Forskohlii | Forskolin .pptx
 
Behavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfBehavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdf
 
Module 4: Mendelian Genetics and Punnett Square
Module 4:  Mendelian Genetics and Punnett SquareModule 4:  Mendelian Genetics and Punnett Square
Module 4: Mendelian Genetics and Punnett Square
 
The Black hole shadow in Modified Gravity
The Black hole shadow in Modified GravityThe Black hole shadow in Modified Gravity
The Black hole shadow in Modified Gravity
 
Ahmedabad Call Girls Service 9537192988 can satisfy every one of your dreams
Ahmedabad Call Girls Service 9537192988 can satisfy every one of your dreamsAhmedabad Call Girls Service 9537192988 can satisfy every one of your dreams
Ahmedabad Call Girls Service 9537192988 can satisfy every one of your dreams
 
Nanoparticles synthesis and characterization​ ​
Nanoparticles synthesis and characterization​  ​Nanoparticles synthesis and characterization​  ​
Nanoparticles synthesis and characterization​ ​
 
Analytical Profile of Coleus Forskohlii | Forskolin .pdf
Analytical Profile of Coleus Forskohlii | Forskolin .pdfAnalytical Profile of Coleus Forskohlii | Forskolin .pdf
Analytical Profile of Coleus Forskohlii | Forskolin .pdf
 
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
 
Boyles law module in the grade 10 science
Boyles law module in the grade 10 scienceBoyles law module in the grade 10 science
Boyles law module in the grade 10 science
 
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tantaDashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
 
Animal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptxAnimal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptx
 

Talk at ParCo2019

  • 1. The BondMachine Toolkit A novel moldable computer architecture Mirko Mariotti Loriano Storchi Daniele Spiga Department of Physics and Geology - University of Perugia INFN Perugia The International Conference on Parallel Computing ParCo2019 Prague, Czech Republic, 10-13 September 2019
  • 2. Introduction The BondMachine Toolkit: A novel moldable computer architecture In this presentation i will talk about: Technological background of the project The BondMachine Project: the Architecture The BondMachine Project: the Tools Use cases Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 2/40
  • 3. Technological Background Current challenges in computing Von Neumann Bottleneck: New computational problems show that current architectural models has to be improved or changed to address future payloads. Energy Efficient computation: Not wasting resources (silicon, time, energy, instructions). Using the right resource for the specific case Edge/Fog/Cloud Computing: Making the computation where it make sense Avoiding the transfer of unnecessary data Creating consistent interfaces for distributed systems Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 3/40
  • 4. Technological Background Current challenges in computing Von Neumann Bottleneck: New computational problems show that current architectural models has to be improved or changed to address future payloads. Energy Efficient computation: Not wasting resources (silicon, time, energy, instructions). Using the right resource for the specific case Edge/Fog/Cloud Computing: Making the computation where it make sense Avoiding the transfer of unnecessary data Creating consistent interfaces for distributed systems Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 3/40
  • 5. Technological Background Current challenges in computing Von Neumann Bottleneck: New computational problems show that current architectural models has to be improved or changed to address future payloads. Energy Efficient computation: Not wasting resources (silicon, time, energy, instructions). Using the right resource for the specific case Edge/Fog/Cloud Computing: Making the computation where it make sense Avoiding the transfer of unnecessary data Creating consistent interfaces for distributed systems Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 3/40
  • 6. Technological Background Programmable Logic FPGA What is it ? A field-programmable gate array (FPGA) is an integrated circuit whose logic is re-programmable. It’s used to build reconfigurable digital circuits. FPGAs contain an array of programmable logic blocks, and a hierarchy of reconfig- urable interconnects that allow the blocks to be wired together. Logic blocks can be configured to perform complex combinational functions. The FPGA configuration is generally specified using a hardware description language (HDL). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 4/40
  • 7. Technological Background Programmable Logic FPGA What is it ? A field-programmable gate array (FPGA) is an integrated circuit whose logic is re-programmable. It’s used to build reconfigurable digital circuits. FPGAs contain an array of programmable logic blocks, and a hierarchy of reconfig- urable interconnects that allow the blocks to be wired together. Logic blocks can be configured to perform complex combinational functions. The FPGA configuration is generally specified using a hardware description language (HDL). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 4/40
  • 8. Technological Background Programmable Logic FPGA What is it ? A field-programmable gate array (FPGA) is an integrated circuit whose logic is re-programmable. It’s used to build reconfigurable digital circuits. FPGAs contain an array of programmable logic blocks, and a hierarchy of reconfig- urable interconnects that allow the blocks to be wired together. Logic blocks can be configured to perform complex combinational functions. The FPGA configuration is generally specified using a hardware description language (HDL). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 4/40
  • 9. Technological Background Programmable Logic FPGA What is it ? A field-programmable gate array (FPGA) is an integrated circuit whose logic is re-programmable. It’s used to build reconfigurable digital circuits. FPGAs contain an array of programmable logic blocks, and a hierarchy of reconfig- urable interconnects that allow the blocks to be wired together. Logic blocks can be configured to perform complex combinational functions. The FPGA configuration is generally specified using a hardware description language (HDL). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 4/40
  • 10. Technological Background Programmable Logic FPGA Use in computing The use of FPGA in computing is growing due several reasons: can potentially deliver great performance via massive parallelism can address payloads which are not performing well on uniprocessors (Neural Networks, Deep Learning) can handle efficiently non-standard data types Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 5/40
  • 11. Technological Background Programmable Logic FPGA Use in computing The use of FPGA in computing is growing due several reasons: can potentially deliver great performance via massive parallelism can address payloads which are not performing well on uniprocessors (Neural Networks, Deep Learning) can handle efficiently non-standard data types Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 5/40
  • 12. Technological Background Programmable Logic FPGA Use in computing The use of FPGA in computing is growing due several reasons: can potentially deliver great performance via massive parallelism can address payloads which are not performing well on uniprocessors (Neural Networks, Deep Learning) can handle efficiently non-standard data types Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 5/40
  • 13. Technological Background Programmable Logic FPGA Challenges in computing On the other hand the adoption on FPGA poses several challenges: Porting of legacy code is usually hard. Interoperability with standard applications is problematic. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 6/40
  • 14. Technological Background Programmable Logic FPGA Challenges in computing On the other hand the adoption on FPGA poses several challenges: Porting of legacy code is usually hard. Interoperability with standard applications is problematic. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 6/40
  • 15. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 16. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 17. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 18. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 19. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 20. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 21. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 22. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 23. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 24. Technological Background Computer Architectures Computer Architectures Multi-core and Heterogeneous Today’s computer architecture are: Multi-core,Two or more independent actual processing units execute multiple instructions at the same time. The power is given by the number of cores. Parallelism has to be addressed. Heterogeneous, different types of processing units. Cell, GPU, Parallela, TPU. The power is given by the specialization. The units data transfer has to be addressed. The payloads scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 7/40
  • 25. Technological Background The first Idea The BondMachine The first idea High level sources: Go, TensorFlow, NN, ... Building a new kind of computer architecture (multi-core and heterogeneous both in cores types and interconnections) which dynamically adapt to the specific computational problem rather than be static. BM architecture Layer FPGA Concurrency and Special- ization Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
  • 26. Technological Background The first Idea The BondMachine The first idea High level sources: Go, TensorFlow, NN, ... Building a new kind of computer architecture (multi-core and heterogeneous both in cores types and interconnections) which dynamically adapt to the specific computational problem rather than be static. BM architecture Layer FPGA Concurrency and Special- ization Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
  • 27. Technological Background The first Idea The BondMachine The first idea High level sources: Go, TensorFlow, NN, ... Building a new kind of computer architecture (multi-core and heterogeneous both in cores types and interconnections) which dynamically adapt to the specific computational problem rather than be static. BM architecture Layer FPGA Concurrency and Special- ization Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
  • 28. Technological Background The first Idea The BondMachine The first idea High level sources: Go, TensorFlow, NN, ... Building a new kind of computer architecture (multi-core and heterogeneous both in cores types and interconnections) which dynamically adapt to the specific computational problem rather than be static. BM architecture Layer FPGA Concurrency and Special- ization Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
  • 29. Technological Background The first Idea The BondMachine The first idea High level sources: Go, TensorFlow, NN, ... Building a new kind of computer architecture (multi-core and heterogeneous both in cores types and interconnections) which dynamically adapt to the specific computational problem rather than be static. BM architecture Layer FPGA Concurrency and Special- ization Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 8/40
  • 30. BondMachine Introducing the BondMachine (BM) The BondMachine is a software ecosystem for the dynamic generation of computer architectures that: Are composed by many, possibly hundreds, computing cores. Have very small cores and not necessarily of the same type (different ISA and ABI). Have a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
  • 31. BondMachine Introducing the BondMachine (BM) The BondMachine is a software ecosystem for the dynamic generation of computer architectures that: Are composed by many, possibly hundreds, computing cores. Have very small cores and not necessarily of the same type (different ISA and ABI). Have a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
  • 32. BondMachine Introducing the BondMachine (BM) The BondMachine is a software ecosystem for the dynamic generation of computer architectures that: Are composed by many, possibly hundreds, computing cores. Have very small cores and not necessarily of the same type (different ISA and ABI). Have a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
  • 33. BondMachine Introducing the BondMachine (BM) The BondMachine is a software ecosystem for the dynamic generation of computer architectures that: Are composed by many, possibly hundreds, computing cores. Have very small cores and not necessarily of the same type (different ISA and ABI). Have a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
  • 34. BondMachine Introducing the BondMachine (BM) The BondMachine is a software ecosystem for the dynamic generation of computer architectures that: Are composed by many, possibly hundreds, computing cores. Have very small cores and not necessarily of the same type (different ISA and ABI). Have a not fixed way of interconnecting cores. May have some elements shared among cores (for example channels and shared memories). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 9/40
  • 35. BondMachine The BondMachine An example Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 10/40
  • 36. BondMachine Connecting Processors 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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
  • 37. BondMachine Connecting Processors 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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
  • 38. BondMachine Connecting Processors 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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
  • 39. BondMachine Connecting Processors 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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
  • 40. BondMachine Connecting Processors 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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
  • 41. BondMachine Connecting Processors 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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 11/40
  • 42. BondMachine Shared Objects Shared Objects (SO) The non-computational element of the BM 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. Four kind of SO have been developed so far: the Channel, the Shared Memory, the Barrier and a Pseudo Random Numbers Gen- erator. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
  • 43. BondMachine Shared Objects Shared Objects (SO) The non-computational element of the BM 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. Four kind of SO have been developed so far: the Channel, the Shared Memory, the Barrier and a Pseudo Random Numbers Gen- erator. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
  • 44. BondMachine Shared Objects Shared Objects (SO) The non-computational element of the BM 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. Four kind of SO have been developed so far: the Channel, the Shared Memory, the Barrier and a Pseudo Random Numbers Gen- erator. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
  • 45. BondMachine Shared Objects Shared Objects (SO) The non-computational element of the BM 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. Four kind of SO have been developed so far: the Channel, the Shared Memory, the Barrier and a Pseudo Random Numbers Gen- erator. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
  • 46. BondMachine Shared Objects Shared Objects (SO) The non-computational element of the BM 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. Four kind of SO have been developed so far: the Channel, the Shared Memory, the Barrier and a Pseudo Random Numbers Gen- erator. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
  • 47. BondMachine Shared Objects Shared Objects (SO) The non-computational element of the BM 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. Four kind of SO have been developed so far: the Channel, the Shared Memory, the Barrier and a Pseudo Random Numbers Gen- erator. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 12/40
  • 48. Architectures Handling Handle BM computer architectures The BM computer architecture is managed by a set of tools to: build a specify architecture modify a pre-existing architecture simulate or emulate the behavior Generate the Hardware Description Code (HDL) Processor Builder Selects the single pro- cessor, assembles and disassembles, saves on disk as JSON, creates the HDL code of a CP BondMachine Builder Connects CPs and SOs together in custom topologies, loads and saves on disk as JSON, create BM’s HDL code Simulation Framework Simulates the be- haviour, emulates a BM on a standard Linux workstation Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 13/40
  • 49. Architectures Handling Handle BM computer architectures The BM computer architecture is managed by a set of tools to: build a specify architecture modify a pre-existing architecture simulate or emulate the behavior Generate the Hardware Description Code (HDL) Processor Builder Selects the single pro- cessor, assembles and disassembles, saves on disk as JSON, creates the HDL code of a CP BondMachine Builder Connects CPs and SOs together in custom topologies, loads and saves on disk as JSON, create BM’s HDL code Simulation Framework Simulates the be- haviour, emulates a BM on a standard Linux workstation Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 13/40
  • 50. Architectures Handling Handle BM computer architectures The BM computer architecture is managed by a set of tools to: build a specify architecture modify a pre-existing architecture simulate or emulate the behavior Generate the Hardware Description Code (HDL) Processor Builder Selects the single pro- cessor, assembles and disassembles, saves on disk as JSON, creates the HDL code of a CP BondMachine Builder Connects CPs and SOs together in custom topologies, loads and saves on disk as JSON, create BM’s HDL code Simulation Framework Simulates the be- haviour, emulates a BM on a standard Linux workstation Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 13/40
  • 51. Architectures Handling Handle BM computer architectures The BM computer architecture is managed by a set of tools to: build a specify architecture modify a pre-existing architecture simulate or emulate the behavior Generate the Hardware Description Code (HDL) Processor Builder Selects the single pro- cessor, assembles and disassembles, saves on disk as JSON, creates the HDL code of a CP BondMachine Builder Connects CPs and SOs together in custom topologies, loads and saves on disk as JSON, create BM’s HDL code Simulation Framework Simulates the be- haviour, emulates a BM on a standard Linux workstation Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 13/40
  • 52. Architectures Molding API and Libraries Use the BM computer architecture Mapping specific computational problems to BMs Symbond Map symbolic mathematical expressions to BM Boolbond Map boolean systems to BM Matrixwork Basic matrix computation Evolutive BM Evolutionary computing to BM Bondgo The architecture compiler ML tools Map computational graphs to BM Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
  • 53. Architectures Molding API and Libraries Use the BM computer architecture Mapping specific computational problems to BMs Symbond Map symbolic mathematical expressions to BM Boolbond Map boolean systems to BM Matrixwork Basic matrix computation Evolutive BM Evolutionary computing to BM Bondgo The architecture compiler ML tools Map computational graphs to BM Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
  • 54. Architectures Molding API and Libraries Use the BM computer architecture Mapping specific computational problems to BMs Symbond Map symbolic mathematical expressions to BM Boolbond Map boolean systems to BM Matrixwork Basic matrix computation Evolutive BM Evolutionary computing to BM Bondgo The architecture compiler ML tools Map computational graphs to BM Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
  • 55. Architectures Molding API and Libraries Use the BM computer architecture Mapping specific computational problems to BMs Symbond Map symbolic mathematical expressions to BM Boolbond Map boolean systems to BM Matrixwork Basic matrix computation Evolutive BM Evolutionary computing to BM Bondgo The architecture compiler ML tools Map computational graphs to BM Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
  • 56. Architectures Molding API and Libraries Use the BM computer architecture Mapping specific computational problems to BMs Symbond Map symbolic mathematical expressions to BM Boolbond Map boolean systems to BM Matrixwork Basic matrix computation Evolutive BM Evolutionary computing to BM Bondgo The architecture compiler ML tools Map computational graphs to BM Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
  • 57. Architectures Molding API and Libraries Use the BM computer architecture Mapping specific computational problems to BMs Symbond Map symbolic mathematical expressions to BM Boolbond Map boolean systems to BM Matrixwork Basic matrix computation Evolutive BM Evolutionary computing to BM Bondgo The architecture compiler ML tools Map computational graphs to BM Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
  • 58. Architectures Molding API and Libraries Use the BM computer architecture Mapping specific computational problems to BMs Symbond Map symbolic mathematical expressions to BM Boolbond Map boolean systems to BM Matrixwork Basic matrix computation Evolutive BM Evolutionary computing to BM Bondgo The architecture compiler ML tools Map computational graphs to BM Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 14/40
  • 59. Architectures Molding Bondgo Bondgo The major innovation of the BondMachine Project is its compiler. Bondgo is the name chosen for the compiler developed for the BondMachine. The compiler source language is Go as the name suggest. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 15/40
  • 60. Architectures Molding Bondgo Bondgo This is the standard flow when building computer programs Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 16/40
  • 61. Architectures Molding Bondgo Bondgo This is the standard flow when building computer programs high level language source Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 16/40
  • 62. Architectures Molding Bondgo Bondgo This is the standard flow when building computer programs high level language source assembly file Compiling Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 16/40
  • 63. Architectures Molding Bondgo Bondgo This is the standard flow when building computer programs high level language source assembly file Compiling machine code Assembling Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 16/40
  • 64. Architectures Molding Bondgo 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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 17/40
  • 65. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
  • 66. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... high level GO source Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
  • 67. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... high level GO source assembly file Compiling Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
  • 68. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... high level GO source assembly file Compiling CP specs Arch generating Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
  • 69. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... high level GO source assembly file Compiling CP specs Arch generating machine code Assembling Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
  • 70. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... high level GO source assembly file Compiling CP specs Arch generating machine code Assembling Processor implementation Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
  • 71. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... high level GO source assembly file Compiling CP specs Arch generating machine code Assembling Processor implementation Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 18/40
  • 72. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 73. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 74. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 75. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 76. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 77. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 78. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 79. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 80. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 81. Architectures Molding Bondgo Bondgo A first example counter go source package main import ( bondgo ) func main () { var outgoing bondgo.Output var reg_int uint8 outgoing = bondgo.Make(bondgo.Output , 3) reg_int = 0 for { bondgo.IOWrite(outgoing , reg_int) reg_int ++ } } bondgo –input-file counter.go -mpm BM JSON rapresentation counter asm clr r0 rset r1 0 cpy r0 r1 cpy r1 r0 r2o r1 o0 inc r0 j 3 bondmachine tool BM HDL code FPGA procbuilder tool Binary Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 19/40
  • 82. Architectures Molding Bondgo Bondgo ... bondgo may not only create the binaries, but also the CP architecture, and ... Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 20/40
  • 83. Architectures Molding Bondgo Bondgo ... it can do even much more interesting things when compiling concurrent programs. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
  • 84. Architectures Molding Bondgo Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level GO source Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
  • 85. Architectures Molding Bondgo Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level GO source assembly CP 1 assembly CP 2 assembly CP 3 assembly CP 4 assembly CP ... assembly CP N Compiling Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
  • 86. Architectures Molding Bondgo Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level GO source assembly CP 1 assembly CP 2 assembly CP 3 assembly CP 4 assembly CP ... assembly CP N Compiling CP 1 specs CP 2 CP 3 CP 4 CP ... CP N Archs generating Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
  • 87. Architectures Molding Bondgo Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level GO source assembly CP 1 assembly CP 2 assembly CP 3 assembly CP 4 assembly CP ... assembly CP N Compiling CP 1 specs CP 2 CP 3 CP 4 CP ... CP N Archs generating Asm and Binaries Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
  • 88. Architectures Molding Bondgo Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level GO source assembly CP 1 assembly CP 2 assembly CP 3 assembly CP 4 assembly CP ... assembly CP N Compiling CP 1 specs CP 2 CP 3 CP 4 CP ... CP N Archs generating Asm and Binaries Interconnections Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
  • 89. Architectures Molding Bondgo Bondgo ... it can do even much more interesting things when compiling concurrent programs. high level GO source assembly CP 1 assembly CP 2 assembly CP 3 assembly CP 4 assembly CP ... assembly CP N Compiling CP 1 specs CP 2 CP 3 CP 4 CP ... CP N Archs generating Asm and Binaries BondMachine Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 21/40
  • 90. Architectures Molding Bondgo Bondgo A multi-core example func multproc () { var in0 bondgo.Input var out0 bondgo.Output var reg_d_in uint8 var reg_d_out uint8 in0 = bondgo.Make(bondgo.Input , 4) out0 = bondgo.Make(bondgo.Output , 3) for { reg_d_in = bondgo.IORead(in0) reg_d_out = reg_d_in * 8 bondgo.IOWrite(out0 , reg_d_out) } } func main () { var in0 bondgo.Input var in1 bondgo.Input var out0 bondgo.Output var reg_d_in0 uint8 var reg_d_in1 uint8 var reg_d_out0 uint8 in0 = bondgo.Make(bondgo.Input , 1) in1 = bondgo.Make(bondgo.Input , 2) out0 = bondgo.Make(bondgo.Output , 4) device_0: go multproc () for { reg_d_in0 = bondgo.IORead(in0) reg_d_in1 = bondgo.IORead(in1) reg_d_out0 = reg_d_in0 + reg_d_in1 bondgo.IOWrite(out0 , reg_d_out0) } } Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 22/40
  • 91. Architectures Molding Bondgo Compiling Architectures One of the most important result The architecture creation is a part of the compilation process. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 23/40
  • 92. Architectures Molding Machine Learning with BondMachine section Machine Learning with BondMachine Architectures with multiple interconnected processors like the ones produced by the BondMachine Toolkit are a perfect fit for Neural Networks and Computational Graphs. Several ways to map this structures to BondMachine has been developed: A native Neural Network library A Tensorflow to BondMachine translator An NNEF based BondMachine composer Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 24/40
  • 93. Architectures Molding Machine Learning with BondMachine section Machine Learning with BondMachine Architectures with multiple interconnected processors like the ones produced by the BondMachine Toolkit are a perfect fit for Neural Networks and Computational Graphs. Several ways to map this structures to BondMachine has been developed: A native Neural Network library A Tensorflow to BondMachine translator An NNEF based BondMachine composer Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 24/40
  • 94. Clustering BondMachine Clustering So far we saw: An user friendly approach to create processors (single core). Optimizing a single device to support intricate computational work-flows (multi-cores) over an heterogeneous layer. Interconnected BondMachines What if we could extend the this layer to multiple interconnected devices ? Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 25/40
  • 95. Clustering BondMachine Clustering So far we saw: An user friendly approach to create processors (single core). Optimizing a single device to support intricate computational work-flows (multi-cores) over an heterogeneous layer. Interconnected BondMachines What if we could extend the this layer to multiple interconnected devices ? Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 25/40
  • 96. Clustering BondMachine Clustering So far we saw: An user friendly approach to create processors (single core). Optimizing a single device to support intricate computational work-flows (multi-cores) over an heterogeneous layer. Interconnected BondMachines What if we could extend the this layer to multiple interconnected devices ? Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 25/40
  • 97. Clustering BondMachine Clustering So far we saw: An user friendly approach to create processors (single core). Optimizing a single device to support intricate computational work-flows (multi-cores) over an heterogeneous layer. Interconnected BondMachines What if we could extend the this layer to multiple interconnected devices ? Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 25/40
  • 98. Clustering BondMachine Clustering The same logic existing among CP have been extended among different BondMachines organized in clusters. Protocols, one ethernet called etherbond and one using UDP called udpbond have been created for the purpose. FPGA based BondMachines, standard Linux Workstations, Emulated BondMachines might join a cluster an contribute to a single distributed computational problem. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 26/40
  • 99. Clustering BondMachine Clustering The same logic existing among CP have been extended among different BondMachines organized in clusters. Protocols, one ethernet called etherbond and one using UDP called udpbond have been created for the purpose. FPGA based BondMachines, standard Linux Workstations, Emulated BondMachines might join a cluster an contribute to a single distributed computational problem. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 26/40
  • 100. Clustering BondMachine Clustering The same logic existing among CP have been extended among different BondMachines organized in clusters. Protocols, one ethernet called etherbond and one using UDP called udpbond have been created for the purpose. FPGA based BondMachines, standard Linux Workstations, Emulated BondMachines might join a cluster an contribute to a single distributed computational problem. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 26/40
  • 101. Clustering BondMachine Clustering Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 27/40
  • 102. Clustering Bondgo A cluster creation example func multproc () { var in0 bondgo.Input var out0 bondgo.Output var reg_d_in uint8 var reg_d_out uint8 in0 = bondgo.Make(bondgo.Input , 4) out0 = bondgo.Make(bondgo.Output , 3) for { reg_d_in = bondgo.IORead(in0) reg_d_out = reg_d_in * 8 bondgo.IOWrite(out0 , reg_d_out) } } func main () { var in0 bondgo.Input var in1 bondgo.Input var out0 bondgo.Output var reg_d_in0 uint8 var reg_d_in1 uint8 var reg_d_out0 uint8 in0 = bondgo.Make(bondgo.Input , 1) in1 = bondgo.Make(bondgo.Input , 2) out0 = bondgo.Make(bondgo.Output , 4) device_1: go multproc () for { reg_d_in0 = bondgo.IORead(in0) reg_d_in1 = bondgo.IORead(in1) reg_d_out0 = reg_d_in0 + reg_d_in1 bondgo.IOWrite(out0 , reg_d_out0) } } Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 28/40
  • 103. Clustering Redeployer BondMachine Clustering A distributed example The result is: BondMachine Clustering Youtube video A general result Parts of the system can be redeployed among different devices without changing the system behavior (only the performances). Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 29/40
  • 104. Use cases Use cases Two use cases in Physics experiments are currently being developed: Real time pulse shape analysis in neutron detectors bringing the intelligence to the edge Test beam for space experiments (DAMPE, HERD) increasing testbed operations efficiency Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 30/40
  • 105. Use cases Other uses Possible other uses The BondMachine could be used in several types of real world applications, some of them being: IoT and CyberPhysical systems. Computer Science educational applications. Computing Accelerator Our effort is now in enabling the possibility of building computing accelerators to be used from within standard (Linux) applications. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 31/40
  • 106. Use cases Other uses Possible other uses The BondMachine could be used in several types of real world applications, some of them being: IoT and CyberPhysical systems. Computer Science educational applications. Computing Accelerator Our effort is now in enabling the possibility of building computing accelerators to be used from within standard (Linux) applications. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 31/40
  • 107. Use cases Other uses Possible other uses The BondMachine could be used in several types of real world applications, some of them being: IoT and CyberPhysical systems. Computer Science educational applications. Computing Accelerator Our effort is now in enabling the possibility of building computing accelerators to be used from within standard (Linux) applications. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 31/40
  • 108. Use cases Other uses Possible other uses The BondMachine could be used in several types of real world applications, some of them being: IoT and CyberPhysical systems. Computer Science educational applications. Computing Accelerator Our effort is now in enabling the possibility of building computing accelerators to be used from within standard (Linux) applications. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 31/40
  • 109. Use cases Other uses Accelerators Hybrid chips Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 32/40
  • 110. Use cases Other uses Accelerators Hybrid chips Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 32/40
  • 111. Use cases Other uses Accelerators Hybrid chips Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 32/40
  • 112. Use cases Other uses Accelerators Hybrid chips Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 32/40
  • 113. Use cases Other uses Accelerators Example #include bondmachineip1 .h #include bmapi.h /* Define the base memaddr of the BM IP core */ #define BM_BASE XPAR_BONDMACHINEIP1_0_S00_AXI_BASEADDR int main(void) { u32 input0 = 0, input1 = 0, output = 0; int i = 0, retval , input0_id = 0, input1_id = 1, output_id = 0; /* Loop on input0 */ for (input0 = 0 ; input0 5 ; input0 = input0 + 1 ) { /* Loop on input1 */ for (input1 = 0 ; input1 5 ; input1 = input1 + 1 ) { /* Write value to the two accelerator inputs */ retval = BM_r2o (input0 , input0_id); retval = BM_r2o (input1 , input1_id); /* run a simple delay to allow changes on output */ for(i=0;iDELAY;i++); /* Read the value produced by the accelerator */ retval = BM_i2r (output , output_id); } } return 1; } Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 33/40
  • 114. Hardware Hardware implementation FPGA The HDL 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. Terasic De10nano - Intel Cyclone V - Quartus 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 The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 34/40
  • 115. Prototype 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 Youtube video Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 35/40
  • 116. Project History Project History May 2016 - First tests on the idea. October 2016 - Prototype at “Makerfaire 2016 Rome” Jul 2018 - InnovateFPGA EMEA Silver Award. Aug 2018 - Presented at Intel Campus, Santa Jose (CA) . Aug 2018 - InnovateFPGA Iron Award in the Grand Final. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 36/40
  • 117. Conclusions 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. The result of this process is the construction of a computer architecture that is not anymore a static constraint where computing 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, ranging from small interconnected IoT devices to Machine Learning accelerators. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 37/40
  • 118. Next few months goals Next few months goals Improve the use of BondMachines as accelerators, integrating them into the ecosystem Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
  • 119. Next few months goals Next few months goals Improve the use of BondMachines as accelerators, integrating them into the ecosystem Start making benchmarks Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
  • 120. Next few months goals Next few months goals Improve the use of BondMachines as accelerators, integrating them into the ecosystem Start making benchmarks Integrate low and trans-precision instructions Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
  • 121. Next few months goals Next few months goals Improve the use of BondMachines as accelerators, integrating them into the ecosystem Start making benchmarks Integrate low and trans-precision instructions Find a way to sustain the project Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
  • 122. Next few months goals Next few months goals Improve the use of BondMachines as accelerators, integrating them into the ecosystem Start making benchmarks Integrate low and trans-precision instructions Find a way to sustain the project Move the repositories to github and open the code to the community Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 38/40
  • 123. Future work Future work The project is at the stage of a working prototype, so work has to be done in several areas: Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
  • 124. Future work Future work The project is at the stage of a working prototype, so work has to be done in several areas: Include new processor shared objects and currently unsupported opcodes. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
  • 125. Future work Future work The project is at the stage of a working prototype, so work has to be done in several areas: Include new processor shared objects and currently unsupported opcodes. Extend the compiler to include more data structures. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
  • 126. Future work Future work The project is at the stage of a working prototype, so work has to be done in several areas: Include new processor shared objects and currently unsupported opcodes. Extend the compiler to include more data structures. Improve the networking including new interconnection firmwares. Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
  • 127. Future work Future work The project is at the stage of a working prototype, so work has to be done in several areas: Include new processor shared objects and currently unsupported opcodes. Extend the compiler to include more data structures. Improve the networking including new interconnection firmwares. What would an OS for BondMachines look like ? Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 39/40
  • 128. Future work If you have question/curiosity on the project: Mirko Mariotti mirko.mariotti@unipg.it http://bondmachine.fisica.unipg.it Mirko Mariotti The BondMachine Toolkit ParCo2019 - Prague 10-13 Sept 40/40