SlideShare a Scribd company logo
1 of 276
Download to read offline
The BondMachine Toolkit
A comprehensive approach to computing with FPGA
Mirko Mariotti
Department of Physics and Geology - University of Perugia
INFN Perugia
Advanced Workshop on Modern FPGA Based Technology for
Scientific Computing
ICTP - Trieste 13-24 May 2019
Introduction
The BondMachine: a comprehensive approach to computing with
FPGA.
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
FPGA workshop - ICTP - Trieste 13-24 May
2/116
Hands-on sessions
Some topic will have an hands-on session.
For the hands-on sessions, some minimal Linux shell is required:
 cd: to move among directories
 less: used to show text file content
 anything you want: to edit a text file
Set the environment up with the command:
 source bm.sh
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
3/116
Technological Background
Technological Background
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
4/116
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
FPGA workshop - ICTP - Trieste 13-24 May
5/116
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
FPGA workshop - ICTP - Trieste 13-24 May
5/116
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
FPGA workshop - ICTP - Trieste 13-24 May
5/116
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
FPGA workshop - ICTP - Trieste 13-24 May
5/116
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
FPGA workshop - ICTP - Trieste 13-24 May
6/116
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
FPGA workshop - ICTP - Trieste 13-24 May
6/116
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
FPGA workshop - ICTP - Trieste 13-24 May
6/116
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
FPGA workshop - ICTP - Trieste 13-24 May
7/116
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
FPGA workshop - ICTP - Trieste 13-24 May
7/116
Technological Background Computer Architectures
Computer Architectures
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
8/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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 scheduling has to be addressed.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
9/116
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
FPGA workshop - ICTP - Trieste 13-24 May
10/116
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
FPGA workshop - ICTP - Trieste 13-24 May
10/116
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
FPGA workshop - ICTP - Trieste 13-24 May
10/116
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
FPGA workshop - ICTP - Trieste 13-24 May
10/116
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
FPGA workshop - ICTP - Trieste 13-24 May
10/116
Technological Background Abstractions
Abstractions and Interfaces
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
11/116
Technological Background Abstractions
Layer, Abstractions and Interfaces
Introduction
A Computing system is a matter of abstraction and interfaces. A lower
layer exposes its functionalities (via interfaces) to the above layer
hiding (abstraction) its inner details.
The quality of a computing system is determined by how abstractions
are simple and how interfaces are clean.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
12/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
User mode
Kernel mode
Processor
Transistors
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
User mode
Kernel mode
Processor
Register Machine
Transistors
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
User mode
Kernel mode
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
User mode
Kernel mode
Kernel
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
User mode
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
User mode
Standard Library
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
User mode
Standard Library Stl calls
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
Compiler/Interpreter
User mode
Standard Library Stl calls
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
Compiler/Interpreter
Language
User mode
Standard Library Stl calls
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
Compiler/Interpreter
Language
User mode
Standard Library Stl calls
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Hardware
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
Compiler/Interpreter
Language
User mode
Standard Library Stl calls
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Hardware
Software
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
Compiler/Interpreter
Language
User mode
Standard Library Stl calls
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Hardware
Specialization
Software
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
Compiler/Interpreter
Language
User mode
Standard Library Stl calls
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Hardware
Specialization
Software
Generalization
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
Compiler/Interpreter
Language
User mode
Standard Library Stl calls
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Hardware
Specialization
Performance
Software
Generalization
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background Abstractions
Layers, Abstractions and Interfaces
An example
Programming language
Compiler/Interpreter
Language
User mode
Standard Library Stl calls
Kernel mode
Kernel
System calls
Processor
Register Machine
Opcodes
Transistors
Hardware
Specialization
Performance
Software
Generalization
User
friendly
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
13/116
Technological Background The second idea
Layers, Abstractions and Interfaces
The second idea
Build a computing system with a
decreased number of layers resulting in a
minor gap between HW and SW but
keeping an user friendly way of
programming it.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
14/116
BondMachine
BondMachine
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
15/116
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
FPGA workshop - ICTP - Trieste 13-24 May
16/116
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
FPGA workshop - ICTP - Trieste 13-24 May
16/116
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
FPGA workshop - ICTP - Trieste 13-24 May
16/116
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
FPGA workshop - ICTP - Trieste 13-24 May
16/116
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
FPGA workshop - ICTP - Trieste 13-24 May
16/116
BondMachine
The BondMachine
An example
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
17/116
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.
 Three possible operating modes.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
18/116
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.
 Three possible operating modes.
General purpose registers
2R registers: r0,r1,r2,r3 ... r2R
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
18/116
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.
 Three possible operating modes.
I/O specialized registers
N input registers: i0,i1 ... iN
M output registers: o0,o1 ... oM
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
18/116
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.
 Three possible operating modes.
Full set of possible opcodes
add,addf,addi,chc,chw,clr,cpy,dec,divf,dpc,hit,hlt,i2r,inc,j,
je,jz,m2r,mult,multf,nop,r2m,r2o,r2s,rset,sic,s2r,saj,sub,
wrd,wwr
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
18/116
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.
 Three possible operating modes.
RAM and ROM
 2L RAM memory cells.
 2O ROM memory cells.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
18/116
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.
 Three possible operating modes.
Operating modes
 Full Harvard mode.
 Full Von Neuman mode.
 Hybrid mode.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
18/116
BondMachine Connecting Processors
Connecting Processor (CP)
Full set of possible opcodes
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
19/116
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
FPGA workshop - ICTP - Trieste 13-24 May
20/116
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
FPGA workshop - ICTP - Trieste 13-24 May
20/116
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
FPGA workshop - ICTP - Trieste 13-24 May
20/116
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
FPGA workshop - ICTP - Trieste 13-24 May
20/116
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
FPGA workshop - ICTP - Trieste 13-24 May
20/116
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
FPGA workshop - ICTP - Trieste 13-24 May
20/116
BondMachine Shared Objects
Channel
The Channel SO is an hardware implementation of the CSP (communi-
cating sequential processes) channel.
It is a model for inter-core communication and synchronization via mes-
sage passing.
CPs use channels via 4 opcodes
 wrd: Want Read.
 wwr: Want Write.
 chc: Channel Check.
 chw: Channel Wait.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
21/116
BondMachine Shared Objects
Channel
The Channel SO is an hardware implementation of the CSP (communi-
cating sequential processes) channel.
It is a model for inter-core communication and synchronization via mes-
sage passing.
CPs use channels via 4 opcodes
 wrd: Want Read.
 wwr: Want Write.
 chc: Channel Check.
 chw: Channel Wait.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
21/116
BondMachine Shared Objects
Channel
The Channel SO is an hardware implementation of the CSP (communi-
cating sequential processes) channel.
It is a model for inter-core communication and synchronization via mes-
sage passing.
CPs use channels via 4 opcodes
 wrd: Want Read.
 wwr: Want Write.
 chc: Channel Check.
 chw: Channel Wait.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
21/116
BondMachine Shared Objects
Shared Memory
The Shared Memory SO is a RAM block accessible from more than one
CP.
Different Shared Memories can be used by different CP and not neces-
sarily by all of them.
CPs use shared memories via 2 opcodes
 s2r: Shared memory read.
 r2s: Shared memory write.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
22/116
BondMachine Shared Objects
Shared Memory
The Shared Memory SO is a RAM block accessible from more than one
CP.
Different Shared Memories can be used by different CP and not neces-
sarily by all of them.
CPs use shared memories via 2 opcodes
 s2r: Shared memory read.
 r2s: Shared memory write.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
22/116
BondMachine Shared Objects
Shared Memory
The Shared Memory SO is a RAM block accessible from more than one
CP.
Different Shared Memories can be used by different CP and not neces-
sarily by all of them.
CPs use shared memories via 2 opcodes
 s2r: Shared memory read.
 r2s: Shared memory write.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
22/116
BondMachine Shared Objects
Barrier
The Barrier SO is used to make CPs act synchronously.
When a CP hits a barrier, the execution stop until all the CPs that share
the same barrier hit it.
CPs use barriers via 1 opcode
 hit: Hit the barrier.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
23/116
BondMachine Shared Objects
Barrier
The Barrier SO is used to make CPs act synchronously.
When a CP hits a barrier, the execution stop until all the CPs that share
the same barrier hit it.
CPs use barriers via 1 opcode
 hit: Hit the barrier.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
23/116
BondMachine Shared Objects
Barrier
The Barrier SO is used to make CPs act synchronously.
When a CP hits a barrier, the execution stop until all the CPs that share
the same barrier hit it.
CPs use barriers via 1 opcode
 hit: Hit the barrier.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
23/116
BondMachine Shared Objects
Multicore and Heterogeneous
First idea on the BondMachine
The idea was:
Having a multi-core architecture completely heterogeneous both in cores types and interconnections.
The BondMachine may have many
cores, eventually all different, arbitrarily
interconnected and sharing non
computing elements.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
24/116
Architectures Handling
Architectures Handling
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
25/116
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 Register Tranfer Code (RTL)
Processor Builder
Selects the single pro-
cessor, assembles and
disassembles, saves on
disk as JSON, creates
the RTL code of a CP
BondMachine Builder
Connects CPs and SOs
together in custom
topologies, loads and
saves on disk as JSON,
create BM’s RTL code
Simulation Framework
Simulates the be-
haviour, emulates a
BM on a standard
Linux workstation
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
26/116
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 Register Tranfer Code (RTL)
Processor Builder
Selects the single pro-
cessor, assembles and
disassembles, saves on
disk as JSON, creates
the RTL code of a CP
BondMachine Builder
Connects CPs and SOs
together in custom
topologies, loads and
saves on disk as JSON,
create BM’s RTL code
Simulation Framework
Simulates the be-
haviour, emulates a
BM on a standard
Linux workstation
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
26/116
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 Register Tranfer Code (RTL)
Processor Builder
Selects the single pro-
cessor, assembles and
disassembles, saves on
disk as JSON, creates
the RTL code of a CP
BondMachine Builder
Connects CPs and SOs
together in custom
topologies, loads and
saves on disk as JSON,
create BM’s RTL code
Simulation Framework
Simulates the be-
haviour, emulates a
BM on a standard
Linux workstation
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
26/116
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 Register Tranfer Code (RTL)
Processor Builder
Selects the single pro-
cessor, assembles and
disassembles, saves on
disk as JSON, creates
the RTL code of a CP
BondMachine Builder
Connects CPs and SOs
together in custom
topologies, loads and
saves on disk as JSON,
create BM’s RTL code
Simulation Framework
Simulates the be-
haviour, emulates a
BM on a standard
Linux workstation
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
26/116
Architectures Handling
Processor Builder
Procbuilder is the CP manipulation tool.
CP Creation
CP Load/Save
CP Assembler/Disassembler
CP RTL
Examples
(32 bit registers counter machine)
procbuilder -register-size 32 -opcodes clr,cpy,dec,inc,je,jz
(Input and Output registers)
procbuilder -inputs 3 -outputs 2 ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
27/116
Architectures Handling
Processor Builder
Procbuilder is the CP manipulation tool.
CP Creation
CP Load/Save
CP Assembler/Disassembler
CP RTL
Examples
(Loading a CP)
procbuilder -load-machine conproc.json ...
(Saving a CP)
procbuilder -save-machine conproc.json ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
27/116
Architectures Handling
Processor Builder
Procbuilder is the CP manipulation tool.
CP Creation
CP Load/Save
CP Assembler/Disassembler
CP RTL
Examples
(Assembiling)
procbuilder -input-assembly program.asm ...
(Disassembling)
procbuilder -show-program-disassembled ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
27/116
Architectures Handling
Processor Builder
Procbuilder is the CP manipulation tool.
CP Creation
CP Load/Save
CP Assembler/Disassembler
CP RTL
Examples
(Create the CP RTL code in Verilog)
procbuilder -create-verilog ...
(Create testbench)
procbuilder -create-verilog-testbench test.v ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
27/116
Architectures Handling
Procbuilder hands-on
Hands-on N.1
Goals are:
 To create a simple processor
 To assemble and disassemble code for it
 To produce its RTL code
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
28/116
Architectures Handling
BondMachine Builder
Bondmachine is the tool that compose CP and SO to form
BondMachines.
BM CP insert and remove
BM SO insert and remove
BM Inputs and Outputs
BM Bonding Processors and/or IO
BM Visualizing or RTL
Examples
(Add a processor)
bondmachine -add-domains proc.json ... ; ... -add-processor 0
(Remove a processor)
bondmachine -bondmachine-file bmach.json -del-processor n
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
29/116
Architectures Handling
BondMachine Builder
Bondmachine is the tool that compose CP and SO to form
BondMachines.
BM CP insert and remove
BM SO insert and remove
BM Inputs and Outputs
BM Bonding Processors and/or IO
BM Visualizing or RTL
Examples
(Add a Shared Object)
bondmachine -add-shared-objects specs ...
(Connect an SO to a processor)
bondmachine -connect-processor-shared-object ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
29/116
Architectures Handling
BondMachine Builder
Bondmachine is the tool that compose CP and SO to form
BondMachines.
BM CP insert and remove
BM SO insert and remove
BM Inputs and Outputs
BM Bonding Processors and/or IO
BM Visualizing or RTL
Examples
(Adding inputs or outputs)
bondmachine -add-inputs ... ; bondmachine -add-outputs ...
(Removing inputs or outputs)
bondmachine -del-input ... ; bondmachine -del-output ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
29/116
Architectures Handling
BondMachine Builder
Bondmachine is the tool that compose CP and SO to form
BondMachines.
BM CP insert and remove
BM SO insert and remove
BM Inputs and Outputs
BM Bonding Processors and/or IO
BM Visualizing or RTL
Examples
(Bonding processor)
bondmachine -add-bond p0i2,p1o4 ...
(Bonding IO)
bondmachine -add-bond i2,p0i6 ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
29/116
Architectures Handling
BondMachine Builder
Bondmachine is the tool that compose CP and SO to form
BondMachines.
BM CP insert and remove
BM SO insert and remove
BM Inputs and Outputs
BM Bonding Processors and/or IO
BM Visualizing or RTL
Examples
(Visualizing)
bondmachine -emit-dot ...
(Create RTL code)
bondmachine -create-verilog ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
29/116
Architectures Handling
BondMachine hands-on
Hands-on N.2
Goals are:
 To create a single-core BondMachine
 To attach an external output
 To produce its RTL code
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
30/116
Architectures Handling Toolchains
Toolchains
A set of toolchains allow the build and the direct deploy to a target
device of BondMachines.
Bondgo Toolchain example
A file local.mk contains references to the source code as well all the
build necessities.
make bondmachine creates the JSON representation of the BM and
assemble its code.
make show displays a graphical representation of the BM.
make simulate start a simulation.
make videosim create a simulation video.
make flash the device into the destination target.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
31/116
Architectures Handling Toolchains
BondMachine hands-on
Hands-on N.3
Goals are:
 To explore the toolchain
 To flash the board with the code from the previous example
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
32/116
Architectures Handling Toolchains
BondMachine hands-on
Hands-on N.4
Goals are:
 To build a BondMachine with a processor and a shared object
 To flash the board
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
33/116
Architectures Handling Toolchains
BondMachine hands-on
Hands-on N.5
Goals are:
 To build a dual-core BondMachine
 To connect cores
 To flash the board
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
34/116
Architectures Handling Web frontend
BondMachine web front-end
Operations on BondMachines can also be performed via an under
development web framework
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
35/116
Architectures Handling Simulation
Simulation
An important feature of the tools is the possibility of simulating
BondMachine behavior.
An event input file describes how BondMachines elements has to change
during the simulation timespan and which one has to be be reported.
The simulator can produce results in the form of:
 Activity log of the BM internal.
 Graphical representation of the simulation.
 Report file with quantitative data. Useful to construct metrics
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
36/116
Architectures Handling Simulation
Simulation
An important feature of the tools is the possibility of simulating
BondMachine behavior.
An event input file describes how BondMachines elements has to change
during the simulation timespan and which one has to be be reported.
The simulator can produce results in the form of:
 Activity log of the BM internal.
 Graphical representation of the simulation.
 Report file with quantitative data. Useful to construct metrics
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
36/116
Architectures Handling Simulation
Simulation
An important feature of the tools is the possibility of simulating
BondMachine behavior.
An event input file describes how BondMachines elements has to change
during the simulation timespan and which one has to be be reported.
The simulator can produce results in the form of:
 Activity log of the BM internal.
 Graphical representation of the simulation.
 Report file with quantitative data. Useful to construct metrics
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
36/116
Architectures Handling Simulation
Simulation
examples
Activity log example:
A graphical example:
https://youtube.com/embed/Cc1Qzioh2Ng
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
37/116
Architectures Handling Simulation
Simulation hands-on
Hands-on N.6
Goals are:
 To show the simulation capabilities of the framework
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
38/116
Architectures Handling Simulation
Emulation
The same engine that simulate BondMachines can be used as emulator.
Through the emulator BondMachines can be used on Linux
workstations.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
39/116
Architectures Molding
Architectures Molding
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
40/116
Architectures Molding API and Libraries
Molding the BondMachine
As stated before BondMachines are not general purpose architectures,
and to be effective have to be shaped according the specific problem.
Several methods (apart from writing in assembly and building a Bond-
Machine from scratch) have been developed to do that:
 bondgo: A new type of compiler that create not only the CPs
assembly but also the architecture itself.
 A set of API to create BondMachine to fit a specific computational
problems.
 An Evolutionary Computation framework to “grow” BondMachines
according some fitness function via simulation.
 A set of tools to use BondMachine in Machine Learning.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
41/116
Architectures Molding API and Libraries
Molding the BondMachine
As stated before BondMachines are not general purpose architectures,
and to be effective have to be shaped according the specific problem.
Several methods (apart from writing in assembly and building a Bond-
Machine from scratch) have been developed to do that:
 bondgo: A new type of compiler that create not only the CPs
assembly but also the architecture itself.
 A set of API to create BondMachine to fit a specific computational
problems.
 An Evolutionary Computation framework to “grow” BondMachines
according some fitness function via simulation.
 A set of tools to use BondMachine in Machine Learning.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
41/116
Architectures Molding API and Libraries
Molding the BondMachine
As stated before BondMachines are not general purpose architectures,
and to be effective have to be shaped according the specific problem.
Several methods (apart from writing in assembly and building a Bond-
Machine from scratch) have been developed to do that:
 bondgo: A new type of compiler that create not only the CPs
assembly but also the architecture itself.
 A set of API to create BondMachine to fit a specific computational
problems.
 An Evolutionary Computation framework to “grow” BondMachines
according some fitness function via simulation.
 A set of tools to use BondMachine in Machine Learning.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
41/116
Architectures Molding API and Libraries
Molding the BondMachine
As stated before BondMachines are not general purpose architectures,
and to be effective have to be shaped according the specific problem.
Several methods (apart from writing in assembly and building a Bond-
Machine from scratch) have been developed to do that:
 bondgo: A new type of compiler that create not only the CPs
assembly but also the architecture itself.
 A set of API to create BondMachine to fit a specific computational
problems.
 An Evolutionary Computation framework to “grow” BondMachines
according some fitness function via simulation.
 A set of tools to use BondMachine in Machine Learning.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
41/116
Architectures Molding API and Libraries
Molding the BondMachine
As stated before BondMachines are not general purpose architectures,
and to be effective have to be shaped according the specific problem.
Several methods (apart from writing in assembly and building a Bond-
Machine from scratch) have been developed to do that:
 bondgo: A new type of compiler that create not only the CPs
assembly but also the architecture itself.
 A set of API to create BondMachine to fit a specific computational
problems.
 An Evolutionary Computation framework to “grow” BondMachines
according some fitness function via simulation.
 A set of tools to use BondMachine in Machine Learning.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
41/116
Architectures Molding API and Libraries
Molding the BondMachine
As stated before BondMachines are not general purpose architectures,
and to be effective have to be shaped according the specific problem.
Several methods (apart from writing in assembly and building a Bond-
Machine from scratch) have been developed to do that:
 bondgo: A new type of compiler that create not only the CPs
assembly but also the architecture itself.
 A set of API to create BondMachine to fit a specific computational
problems.
 An Evolutionary Computation framework to “grow” BondMachines
according some fitness function via simulation.
 A set of tools to use BondMachine in Machine Learning.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
41/116
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
FPGA workshop - ICTP - Trieste 13-24 May
42/116
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
FPGA workshop - ICTP - Trieste 13-24 May
42/116
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
FPGA workshop - ICTP - Trieste 13-24 May
42/116
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
FPGA workshop - ICTP - Trieste 13-24 May
42/116
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
FPGA workshop - ICTP - Trieste 13-24 May
42/116
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
FPGA workshop - ICTP - Trieste 13-24 May
42/116
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
FPGA workshop - ICTP - Trieste 13-24 May
42/116
Architectures Molding Bondgo
Bondgo
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
43/116
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
FPGA workshop - ICTP - Trieste 13-24 May
44/116
Architectures Molding Bondgo
Bondgo
This is the standard flow when building computer programs
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
45/116
Architectures Molding Bondgo
Bondgo
This is the standard flow when building computer programs
high level language source
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
45/116
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
FPGA workshop - ICTP - Trieste 13-24 May
45/116
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
FPGA workshop - ICTP - Trieste 13-24 May
45/116
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
FPGA workshop - ICTP - Trieste 13-24 May
46/116
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
47/116
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
high level GO source
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
47/116
Architectures Molding Bondgo
Bondgo
Bondgo does something different from standard compilers ...
high level GO source
assembly file
Compiling
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
47/116
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
FPGA workshop - ICTP - Trieste 13-24 May
47/116
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
FPGA workshop - ICTP - Trieste 13-24 May
47/116
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
FPGA workshop - ICTP - Trieste 13-24 May
47/116
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
FPGA workshop - ICTP - Trieste 13-24 May
47/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
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
FPGA workshop - ICTP - Trieste 13-24 May
48/116
Architectures Molding Bondgo
Bondgo hands-on
Hands-on N.7
Goals are:
 To create a BondMachine from a Go source file
 To build the architecture
 To build the program
 To create the firmware and flash it to the board
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
49/116
Architectures Molding Bondgo
Bondgo
... bondgo may not only create the binaries, but also the CP
architecture, and ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
50/116
Architectures Molding Bondgo
Bondgo
... it can do even much more interesting things when compiling
concurrent programs.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
51/116
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
FPGA workshop - ICTP - Trieste 13-24 May
51/116
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
FPGA workshop - ICTP - Trieste 13-24 May
51/116
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
FPGA workshop - ICTP - Trieste 13-24 May
51/116
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
FPGA workshop - ICTP - Trieste 13-24 May
51/116
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
FPGA workshop - ICTP - Trieste 13-24 May
51/116
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
FPGA workshop - ICTP - Trieste 13-24 May
51/116
Architectures Molding Bondgo
Bondgo
A multi-core example
multi-core counter
package main
import (
bondgo
)
func pong () {
var in0 bondgo.Input
var out0 bondgo.Output
in0 = bondgo.Make(bondgo.Input , 3)
out0 = bondgo.Make(bondgo.Output , 5)
for {
bondgo.IOWrite(out0 , bondgo.IORead(in0)+1)
}
}
func main () {
var in0 bondgo.Input
var out0 bondgo.Output
in0 = bondgo.Make(bondgo.Input , 5)
out0 = bondgo.Make(bondgo.Output , 3)
device_0:
go pong ()
for {
bondgo.IOWrite(out0 , bondgo.IORead(in0))
}
}
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
52/116
Architectures Molding Bondgo
Bondgo
A multi-core example
Compiling the code with the bondgo compiler:
bondgo -input-file ds.go -mpm
The toolchain perform the following steps:
 Map the two goroutines to two hardware cores.
 Creates two types of core, each one optimized to execute the
assigned goroutine.
 Creates the two binaries.
 Connected the two core as inferred from the source code, using
special IO registers.
The result is a multicore BondMachine:
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
53/116
Architectures Molding Bondgo
Bondgo
A multi-core example
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
54/116
Architectures Molding Bondgo
Simulation hands-on
Hands-on N.8
Goals are:
 To use bondgo to create a chain of interconnected processors
 To flash the firmware to the board
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
55/116
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
FPGA workshop - ICTP - Trieste 13-24 May
56/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Bondgo
Go in hardware
Bondgo implements a sort of “Go in hardware”.
High level Go source code is directly mapped to interconnected
processors without Operating Systems or runtimes.
Goroutines Cores
Channels Channel SOs
Variables (local) CP RAM segments
Variables (by val) CH messages or IO regs
Variables (by ref) Shared RAM segments
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
57/116
Architectures Molding Bondgo
Go in hardware
Second idea on the BondMachine
The idea was:
Build a computing system with a decreased number of layers resulting in a lower HW/SW gap.
This would raise the overall performances yet keeping an user friendly way of programming.
Between HW and SW there is only the
processor abstraction, no Operating
System nor runtimes. Despite that
programming is done at high level.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
58/116
Architectures Molding Bondgo
Layers, Abstractions and Interfaces
and BondMachines
Programming language
Compiler
Language
BondMachine
Register Machine
Opcodes
Transistors
Hardware
Specialization
Performance
Software
Generalization
User
friendly
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
59/116
Architectures Molding Bondgo
Bondgo
An example
bondgo stream processing example
package main
import (
bondgo
)
func streamprocessor (a *[] uint8 , b *[] uint8 ,
c *[] uint8 , gid uint8) {
(*c)[gid] = (*a)[gid] + (*b)[gid]
}
func main () {
a := make ([] uint8 , 256)
b := make ([] uint8 , 256)
c := make ([] uint8 , 256)
// ... some a and b values fill
for i := 0; i  256; i++ {
go streamprocessor (a, b, c, uint8(i))
}
}
The compilation of this example results in the creation of a 257 CPs where 256 are the stream
processors executing the code in the function called streamprocessor, and one is the coordinating
CP. Each stream processor is optimized and capable only to make additions since it is the only
operation requested by the source code. The three slices created on the main function are passed
by reference to the Goroutines then a shared RAM is created by the Bondgo compiler available
to the generated CPs.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
60/116
Architectures Molding Bondgo
Bondgo
Abstract Assembly
The Assembly language for the BM has been kept as independent as
possible from the particular CP.
Given a specific piece of assembly code Bondgo has the ability to
compute the “minimum CP” that can execute that code.
These are Building Blocks for complex BondMachines.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
61/116
Architectures Molding Builders API
Builders API
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
62/116
Architectures Molding Builders API
Builders API
With these Building Blocks
Several libraries have been developed to map specific problems on
BondMachines:
 Symbond, to handle mathematical expression.
 Boolbond, to map boolean expression.
 Matrixwork, to perform matrices operations.
 Neuralbond, to use neural networks.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
63/116
Architectures Molding Builders API
Builders API
With these Building Blocks
Several libraries have been developed to map specific problems on
BondMachines:
 Symbond, to handle mathematical expression.
 Boolbond, to map boolean expression.
 Matrixwork, to perform matrices operations.
 Neuralbond, to use neural networks.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
63/116
Architectures Molding Builders API
Builders API
With these Building Blocks
Several libraries have been developed to map specific problems on
BondMachines:
 Symbond, to handle mathematical expression.
 Boolbond, to map boolean expression.
 Matrixwork, to perform matrices operations.
 Neuralbond, to use neural networks.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
63/116
Architectures Molding Builders API
Builders API
With these Building Blocks
Several libraries have been developed to map specific problems on
BondMachines:
 Symbond, to handle mathematical expression.
 Boolbond, to map boolean expression.
 Matrixwork, to perform matrices operations.
 Neuralbond, to use neural networks.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
63/116
Architectures Molding Builders API
Builders API
With these Building Blocks
Several libraries have been developed to map specific problems on
BondMachines:
 Symbond, to handle mathematical expression.
 Boolbond, to map boolean expression.
 Matrixwork, to perform matrices operations.
 Neuralbond, to use neural networks.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
63/116
Architectures Molding Builders API
Builders API
Symbond
A mathematical expression, or a system can be converted to a
BondMachine:
sum(var(x),const(2))
Boolbond
symbond -expression sum(var(x),const(2)) -save-bondmachine
bondmachine.json
Resulting in:
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
64/116
Architectures Molding Builders API
Builders API
Symbond
A mathematical expression, or a system can be converted to a
BondMachine:
sum(var(x),const(2))
Boolbond
symbond -expression sum(var(x),const(2)) -save-bondmachine
bondmachine.json
Resulting in:
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
64/116
Architectures Molding Builders API
Builders API
Symbond
A mathematical expression, or a system can be converted to a
BondMachine:
sum(var(x),const(2))
Boolbond
symbond -expression sum(var(x),const(2)) -save-bondmachine
bondmachine.json
Resulting in:
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
64/116
Architectures Molding Builders API
Builders API
Symbond
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
65/116
Architectures Molding Builders API
Builders API
Boolbond
A system of boolean equations, input and output variables are
expressed as in the example file:
var(z)=or(var(x),not(var(y)))
var(t)=or(and(var(x),var(y)),var(z))
var(l)=and(xor(var(x),var(y)),var(t))
i:var(x)
i:var(y)
o:var(z)
o:var(t)
o:var(l)
Boolbond
boolbond -system-file expression.txt -save-bondmachine
bondmachine.json
Resulting in:
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
66/116
Architectures Molding Builders API
Builders API
Boolbond
A system of boolean equations, input and output variables are
expressed as in the example file:
var(z)=or(var(x),not(var(y)))
var(t)=or(and(var(x),var(y)),var(z))
var(l)=and(xor(var(x),var(y)),var(t))
i:var(x)
i:var(y)
o:var(z)
o:var(t)
o:var(l)
Boolbond
boolbond -system-file expression.txt -save-bondmachine
bondmachine.json
Resulting in:
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
66/116
Architectures Molding Builders API
Builders API
Boolbond
A system of boolean equations, input and output variables are
expressed as in the example file:
var(z)=or(var(x),not(var(y)))
var(t)=or(and(var(x),var(y)),var(z))
var(l)=and(xor(var(x),var(y)),var(t))
i:var(x)
i:var(y)
o:var(z)
o:var(t)
o:var(l)
Boolbond
boolbond -system-file expression.txt -save-bondmachine
bondmachine.json
Resulting in:
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
66/116
Architectures Molding Builders API
Builders API
Boolbond
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
67/116
Architectures Molding Builders API
Boolbond hands-on
Hands-on N.9
Goals are:
 To create complex multi-cores from boolean expressions
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
68/116
Architectures Molding Builders API
Builders API
Matrixwork
Matrix multiplication
if mymachine, ok := matrixwork.Build_M(n, t); ok == nil ...
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
69/116
Architectures Molding Evolutionary BondMachine
Evolutionary BondMachine
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
70/116
Architectures Molding Evolutionary BondMachine
Evolutionary BondMachine
Find an architecture that
solve a problem
Simulation
Framework
Metrics to check
how well a BM
solve a problem
Building Blocks
of the BM
Population of
BondMachines
Genetically Evolved
Architectures
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
71/116
Architectures Molding Evolutionary BondMachine
Evolutionary BondMachine
Find an architecture that
solve a problem
Simulation
Framework
Metrics to check
how well a BM
solve a problem
Building Blocks
of the BM
Population of
BondMachines
Genetically Evolved
Architectures
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
71/116
Architectures Molding Evolutionary BondMachine
Evolutionary BondMachine
Find an architecture that
solve a problem
Simulation
Framework
Metrics to check
how well a BM
solve a problem
Building Blocks
of the BM
Population of
BondMachines
Genetically Evolved
Architectures
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
71/116
Architectures Molding Evolutionary BondMachine
Evolutionary BondMachine
Find an architecture that
solve a problem
Simulation
Framework
Metrics to check
how well a BM
solve a problem
Building Blocks
of the BM
Population of
BondMachines
Genetically Evolved
Architectures
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
71/116
Architectures Molding Evolutionary BondMachine
Evolutionary BondMachine
Find an architecture that
solve a problem
Simulation
Framework
Metrics to check
how well a BM
solve a problem
Building Blocks
of the BM
Population of
BondMachines
Genetically Evolved
Architectures
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
71/116
Architectures Molding Evolutionary BondMachine
Evolutionary BondMachine
Find an architecture that
solve a problem
Simulation
Framework
Metrics to check
how well a BM
solve a problem
Building Blocks
of the BM
Population of
BondMachines
Genetically Evolved
Architectures
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
71/116
Architectures Molding Machine Learning with BondMachine section
Machine Learning
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
72/116
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
FPGA workshop - ICTP - Trieste 13-24 May
73/116
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
FPGA workshop - ICTP - Trieste 13-24 May
73/116
Architectures Molding Bondmachine native Neural Network library
Machine Learning with BondMachine
Native Neural Network library
The tool neuralbond allow the creation of BM-based neural chips from
an API go interface.
 Neurons are converted to BondMachine connecting processors.
 Tensors are mapped to CP connections.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
74/116
Architectures Molding TensorFlow to Bondmachine
TensorFlow™ to Bondmachine
tf2bm
TensorFlow™ is an open source software library for numerical
computation using data flow graphs.
Graphs can be converted to BondMachines with the tf2bm tool.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
75/116
Architectures Molding NNEF Composer
Machine Learning with BondMachine
NNEF Composer
Neural Network Exchange Format (NNEF) is a standard from Khronos
Group to enable the easy transfer of trained networks among
frameworks, inference engines and devices
The NNEF BM tool approach is to descent NNEF models and build
BondMachine multi-core accordingly
This approch has several advandages over the previous:
 It is not limited to a single framework
 NNEF is a textual file, so no complex operations are needed to
read models
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
76/116
Hardware
Hardware
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
77/116
Hardware
Hardware implementation
FPGA
The RTL code for the BondMachine is written in Verilog and System
Verilog, and has been tested on these devices/system:
 Digilent Basys3 - Xilinx Artix-7 - Vivado.
 Kintex7 Evaluation Board - Vivado.
 Digilent Zedboard - Xilinx Zynq 7020 - Vivado.
 Linux - Iverilog.
 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
FPGA workshop - ICTP - Trieste 13-24 May
78/116
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:
https://youtube.com/embed/hukTrGxTb7A
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
79/116
Clustering
Clustering
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
80/116
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
FPGA workshop - ICTP - Trieste 13-24 May
81/116
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
FPGA workshop - ICTP - Trieste 13-24 May
81/116
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
FPGA workshop - ICTP - Trieste 13-24 May
81/116
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
FPGA workshop - ICTP - Trieste 13-24 May
81/116
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
FPGA workshop - ICTP - Trieste 13-24 May
82/116
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
FPGA workshop - ICTP - Trieste 13-24 May
82/116
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
FPGA workshop - ICTP - Trieste 13-24 May
82/116
Clustering
BondMachine Clustering
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
83/116
Clustering Redeployer
BondMachine Clustering
A distributed example
distributed counter
package main
import (
bondgo
)
func pong () {
var in0 bondgo.Input
var out0 bondgo.Output
in0 = bondgo.Make(bondgo.Input , 3)
out0 = bondgo.Make(bondgo.Output , 5)
for {
bondgo.IOWrite(out0 , bondgo.IORead(in0)+1)
}
}
func main () {
var in0 bondgo.Input
var out0 bondgo.Output
in0 = bondgo.Make(bondgo.Input , 5)
out0 = bondgo.Make(bondgo.Output , 3)
device_1:
go pong ()
for {
bondgo.IOWrite(out0 , bondgo.IORead(in0))
}
}
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
84/116
Clustering Redeployer
BondMachine Clustering
A distributed example
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
85/116
Clustering Redeployer
BondMachine Clustering
A distributed example
The result is:
https://youtube.com/embed/g9xYHK0zca4
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
FPGA workshop - ICTP - Trieste 13-24 May
86/116
Clustering Redeployer
BondMachine Clustering
Results
Results
 User can deploy an entire HW/SW cluster starting from code
written in a high level description (Go, NNEF, etc)
 Workstation with emulated BondMachines, workstation with
etherbond drivers, standalone BondMachines (FPGA) may join
these clusters.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
87/116
Clustering Redeployer
BondMachine Clustering
Results
Results
 User can deploy an entire HW/SW cluster starting from code
written in a high level description (Go, NNEF, etc)
 Workstation with emulated BondMachines, workstation with
etherbond drivers, standalone BondMachines (FPGA) may join
these clusters.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
87/116
Use cases
Use cases
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
88/116
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
FPGA workshop - ICTP - Trieste 13-24 May
89/116
Use cases Physics
Real time pulse shape analysis in neutron detectors
The operation of the new generation of high-intensity neutron sources
like SNS, JSNS and European Spallation Source (ESS, Lund, Sweden),
now under construction, are introducing a new demand for neutron
detection capabilities.
These demands yield to the need for new data collection procedures
and new technology based on solid state Si devices.
We are trying to use BondMachines to make the real time shape
analysis in this kind of detecting devices.
Courtesy of Prof. F.Sacchetti
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
90/116
Use cases Physics
Test beam for space experiments (DAMPE, HERD)
Trigger logic for test beams
Courtesy of V.Vagelli and M.Duranti
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
91/116
Use cases Physics
Test beam for space experiments (DAMPE, HERD)
Trigger logic for test beams
Courtesy of V.Vagelli and M.Duranti
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
92/116
Use cases Physics
Test beam for space experiments (DAMPE, HERD)
Trigger logic for test beams
We are trying to explore the possibility of using BondMachine to
handle efficiently this kind of operations.
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
93/116
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
FPGA workshop - ICTP - Trieste 13-24 May
94/116
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
FPGA workshop - ICTP - Trieste 13-24 May
94/116
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
FPGA workshop - ICTP - Trieste 13-24 May
94/116
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
FPGA workshop - ICTP - Trieste 13-24 May
94/116
Use cases Accelerators
Accelerators
Mirko Mariotti The BondMachine Toolkit
FPGA workshop - ICTP - Trieste 13-24 May
95/116
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive
FPGA Toolkit BondMachine Comprehensive

More Related Content

Similar to FPGA Toolkit BondMachine Comprehensive

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
 
Short course on FPGA programming
Short course on FPGA programmingShort course on FPGA programming
Short course on FPGA programmingMirko 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
 
Nt1310 Unit 5 Algorithm
Nt1310 Unit 5 AlgorithmNt1310 Unit 5 Algorithm
Nt1310 Unit 5 AlgorithmAngie Lee
 
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
 
Automatic generation of platform architectures using open cl and fpga roadmap
Automatic generation of platform architectures using open cl and fpga roadmapAutomatic generation of platform architectures using open cl and fpga roadmap
Automatic generation of platform architectures using open cl and fpga roadmapManolis Vavalis
 
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
 
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
 
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
 
FPGA vs Microcontroller - Which one is Best for Embedded Application_.pdf
FPGA vs Microcontroller - Which one is Best for Embedded Application_.pdfFPGA vs Microcontroller - Which one is Best for Embedded Application_.pdf
FPGA vs Microcontroller - Which one is Best for Embedded Application_.pdfaud Scarlet
 
INFN ML FPGA Course 2022
INFN ML FPGA Course 2022INFN ML FPGA Course 2022
INFN ML FPGA Course 2022Mirko Mariotti
 
2.FPGA for dummies: modern FPGA architecture
2.FPGA for dummies: modern FPGA architecture2.FPGA for dummies: modern FPGA architecture
2.FPGA for dummies: modern FPGA architectureMaurizio Donna
 
FPGAs for Supercomputing: The Why and How
FPGAs for Supercomputing: The Why and HowFPGAs for Supercomputing: The Why and How
FPGAs for Supercomputing: The Why and HowDESMOND YUEN
 
Reconfigurable ICs
Reconfigurable ICsReconfigurable ICs
Reconfigurable ICsAnish Goel
 
Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...inside-BigData.com
 
Lecture Slide (1).pptx
Lecture Slide (1).pptxLecture Slide (1).pptx
Lecture Slide (1).pptxBilalMumtaz9
 

Similar to FPGA Toolkit BondMachine Comprehensive (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"
 
ICTP Workshop 2022
ICTP Workshop 2022ICTP Workshop 2022
ICTP Workshop 2022
 
Short course on FPGA programming
Short course on FPGA programmingShort course on FPGA programming
Short course on FPGA programming
 
INFN Advanced ML Hackaton 2022 Talk
INFN Advanced ML Hackaton 2022 TalkINFN Advanced ML Hackaton 2022 Talk
INFN Advanced ML Hackaton 2022 Talk
 
FPGA In a Nutshell
FPGA In a NutshellFPGA In a Nutshell
FPGA In a Nutshell
 
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
 
Nt1310 Unit 5 Algorithm
Nt1310 Unit 5 AlgorithmNt1310 Unit 5 Algorithm
Nt1310 Unit 5 Algorithm
 
INFN SOSC 2022 Talk
INFN SOSC 2022 TalkINFN SOSC 2022 Talk
INFN SOSC 2022 Talk
 
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...
 
Automatic generation of platform architectures using open cl and fpga roadmap
Automatic generation of platform architectures using open cl and fpga roadmapAutomatic generation of platform architectures using open cl and fpga roadmap
Automatic generation of platform architectures using open cl and fpga roadmap
 
FPGA in outer space seminar report
FPGA in outer space seminar reportFPGA in outer space seminar report
FPGA in outer space seminar report
 
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
 
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
 
FPGA vs Microcontroller - Which one is Best for Embedded Application_.pdf
FPGA vs Microcontroller - Which one is Best for Embedded Application_.pdfFPGA vs Microcontroller - Which one is Best for Embedded Application_.pdf
FPGA vs Microcontroller - Which one is Best for Embedded Application_.pdf
 
INFN ML FPGA Course 2022
INFN ML FPGA Course 2022INFN ML FPGA Course 2022
INFN ML FPGA Course 2022
 
2.FPGA for dummies: modern FPGA architecture
2.FPGA for dummies: modern FPGA architecture2.FPGA for dummies: modern FPGA architecture
2.FPGA for dummies: modern FPGA architecture
 
FPGAs for Supercomputing: The Why and How
FPGAs for Supercomputing: The Why and HowFPGAs for Supercomputing: The Why and How
FPGAs for Supercomputing: The Why and How
 
Reconfigurable ICs
Reconfigurable ICsReconfigurable ICs
Reconfigurable ICs
 
Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...Preparing to program Aurora at Exascale - Early experiences and future direct...
Preparing to program Aurora at Exascale - Early experiences and future direct...
 
Lecture Slide (1).pptx
Lecture Slide (1).pptxLecture Slide (1).pptx
Lecture Slide (1).pptx
 

Recently uploaded

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
 
Spermiogenesis or Spermateleosis or metamorphosis of spermatid
Spermiogenesis or Spermateleosis or metamorphosis of spermatidSpermiogenesis or Spermateleosis or metamorphosis of spermatid
Spermiogenesis or Spermateleosis or metamorphosis of spermatidSarthak Sekhar Mondal
 
Bentham & Hooker's Classification. along with the merits and demerits of the ...
Bentham & Hooker's Classification. along with the merits and demerits of the ...Bentham & Hooker's Classification. along with the merits and demerits of the ...
Bentham & Hooker's Classification. along with the merits and demerits of the ...Nistarini College, Purulia (W.B) India
 
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
 
zoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistanzoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistanzohaibmir069
 
Call Girls in Munirka Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
Call Girls in Munirka Delhi 💯Call Us 🔝9953322196🔝 💯Escort.Call Girls in Munirka Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
Call Girls in Munirka Delhi 💯Call Us 🔝9953322196🔝 💯Escort.aasikanpl
 
STERILITY TESTING OF PHARMACEUTICALS ppt by DR.C.P.PRINCE
STERILITY TESTING OF PHARMACEUTICALS ppt by DR.C.P.PRINCESTERILITY TESTING OF PHARMACEUTICALS ppt by DR.C.P.PRINCE
STERILITY TESTING OF PHARMACEUTICALS ppt by DR.C.P.PRINCEPRINCE C P
 
Isotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoIsotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoSérgio Sacani
 
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
 
Call Girls in Mayapuri Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
Call Girls in Mayapuri Delhi 💯Call Us 🔝9953322196🔝 💯Escort.Call Girls in Mayapuri Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
Call Girls in Mayapuri Delhi 💯Call Us 🔝9953322196🔝 💯Escort.aasikanpl
 
Recombinant DNA technology (Immunological screening)
Recombinant DNA technology (Immunological screening)Recombinant DNA technology (Immunological screening)
Recombinant DNA technology (Immunological screening)PraveenaKalaiselvan1
 
Luciferase in rDNA technology (biotechnology).pptx
Luciferase in rDNA technology (biotechnology).pptxLuciferase in rDNA technology (biotechnology).pptx
Luciferase in rDNA technology (biotechnology).pptxAleenaTreesaSaji
 
NAVSEA PEO USC - Unmanned & Small Combatants 26Oct23.pdf
NAVSEA PEO USC - Unmanned & Small Combatants 26Oct23.pdfNAVSEA PEO USC - Unmanned & Small Combatants 26Oct23.pdf
NAVSEA PEO USC - Unmanned & Small Combatants 26Oct23.pdfWadeK3
 
Biopesticide (2).pptx .This slides helps to know the different types of biop...
Biopesticide (2).pptx  .This slides helps to know the different types of biop...Biopesticide (2).pptx  .This slides helps to know the different types of biop...
Biopesticide (2).pptx .This slides helps to know the different types of biop...RohitNehra6
 
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
 
Cultivation of KODO MILLET . made by Ghanshyam pptx
Cultivation of KODO MILLET . made by Ghanshyam pptxCultivation of KODO MILLET . made by Ghanshyam pptx
Cultivation of KODO MILLET . made by Ghanshyam pptxpradhanghanshyam7136
 
VIRUSES structure and classification ppt by Dr.Prince C P
VIRUSES structure and classification ppt by Dr.Prince C PVIRUSES structure and classification ppt by Dr.Prince C P
VIRUSES structure and classification ppt by Dr.Prince C PPRINCE C P
 
Hubble Asteroid Hunter III. Physical properties of newly found asteroids
Hubble Asteroid Hunter III. Physical properties of newly found asteroidsHubble Asteroid Hunter III. Physical properties of newly found asteroids
Hubble Asteroid Hunter III. Physical properties of newly found asteroidsSérgio Sacani
 
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptxSOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptxkessiyaTpeter
 

Recently uploaded (20)

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...
 
Spermiogenesis or Spermateleosis or metamorphosis of spermatid
Spermiogenesis or Spermateleosis or metamorphosis of spermatidSpermiogenesis or Spermateleosis or metamorphosis of spermatid
Spermiogenesis or Spermateleosis or metamorphosis of spermatid
 
Bentham & Hooker's Classification. along with the merits and demerits of the ...
Bentham & Hooker's Classification. along with the merits and demerits of the ...Bentham & Hooker's Classification. along with the merits and demerits of the ...
Bentham & Hooker's Classification. along with the merits and demerits of the ...
 
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
 
zoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistanzoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistan
 
9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service
9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service
9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service
 
Call Girls in Munirka Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
Call Girls in Munirka Delhi 💯Call Us 🔝9953322196🔝 💯Escort.Call Girls in Munirka Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
Call Girls in Munirka Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
 
STERILITY TESTING OF PHARMACEUTICALS ppt by DR.C.P.PRINCE
STERILITY TESTING OF PHARMACEUTICALS ppt by DR.C.P.PRINCESTERILITY TESTING OF PHARMACEUTICALS ppt by DR.C.P.PRINCE
STERILITY TESTING OF PHARMACEUTICALS ppt by DR.C.P.PRINCE
 
Isotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoIsotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on Io
 
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
 
Call Girls in Mayapuri Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
Call Girls in Mayapuri Delhi 💯Call Us 🔝9953322196🔝 💯Escort.Call Girls in Mayapuri Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
Call Girls in Mayapuri Delhi 💯Call Us 🔝9953322196🔝 💯Escort.
 
Recombinant DNA technology (Immunological screening)
Recombinant DNA technology (Immunological screening)Recombinant DNA technology (Immunological screening)
Recombinant DNA technology (Immunological screening)
 
Luciferase in rDNA technology (biotechnology).pptx
Luciferase in rDNA technology (biotechnology).pptxLuciferase in rDNA technology (biotechnology).pptx
Luciferase in rDNA technology (biotechnology).pptx
 
NAVSEA PEO USC - Unmanned & Small Combatants 26Oct23.pdf
NAVSEA PEO USC - Unmanned & Small Combatants 26Oct23.pdfNAVSEA PEO USC - Unmanned & Small Combatants 26Oct23.pdf
NAVSEA PEO USC - Unmanned & Small Combatants 26Oct23.pdf
 
Biopesticide (2).pptx .This slides helps to know the different types of biop...
Biopesticide (2).pptx  .This slides helps to know the different types of biop...Biopesticide (2).pptx  .This slides helps to know the different types of biop...
Biopesticide (2).pptx .This slides helps to know the different types of biop...
 
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...
 
Cultivation of KODO MILLET . made by Ghanshyam pptx
Cultivation of KODO MILLET . made by Ghanshyam pptxCultivation of KODO MILLET . made by Ghanshyam pptx
Cultivation of KODO MILLET . made by Ghanshyam pptx
 
VIRUSES structure and classification ppt by Dr.Prince C P
VIRUSES structure and classification ppt by Dr.Prince C PVIRUSES structure and classification ppt by Dr.Prince C P
VIRUSES structure and classification ppt by Dr.Prince C P
 
Hubble Asteroid Hunter III. Physical properties of newly found asteroids
Hubble Asteroid Hunter III. Physical properties of newly found asteroidsHubble Asteroid Hunter III. Physical properties of newly found asteroids
Hubble Asteroid Hunter III. Physical properties of newly found asteroids
 
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptxSOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
 

FPGA Toolkit BondMachine Comprehensive

  • 1. The BondMachine Toolkit A comprehensive approach to computing with FPGA Mirko Mariotti Department of Physics and Geology - University of Perugia INFN Perugia Advanced Workshop on Modern FPGA Based Technology for Scientific Computing ICTP - Trieste 13-24 May 2019
  • 2. Introduction The BondMachine: a comprehensive approach to computing with FPGA. 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 FPGA workshop - ICTP - Trieste 13-24 May 2/116
  • 3. Hands-on sessions Some topic will have an hands-on session. For the hands-on sessions, some minimal Linux shell is required: cd: to move among directories less: used to show text file content anything you want: to edit a text file Set the environment up with the command: source bm.sh Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 3/116
  • 4. Technological Background Technological Background Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 4/116
  • 5. 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 FPGA workshop - ICTP - Trieste 13-24 May 5/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 5/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 5/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 5/116
  • 9. 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 FPGA workshop - ICTP - Trieste 13-24 May 6/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 6/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 6/116
  • 12. 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 FPGA workshop - ICTP - Trieste 13-24 May 7/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 7/116
  • 14. Technological Background Computer Architectures Computer Architectures Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 8/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 scheduling has to be addressed. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 9/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 10/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 10/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 10/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 10/116
  • 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 FPGA workshop - ICTP - Trieste 13-24 May 10/116
  • 30. Technological Background Abstractions Abstractions and Interfaces Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 11/116
  • 31. Technological Background Abstractions Layer, Abstractions and Interfaces Introduction A Computing system is a matter of abstraction and interfaces. A lower layer exposes its functionalities (via interfaces) to the above layer hiding (abstraction) its inner details. The quality of a computing system is determined by how abstractions are simple and how interfaces are clean. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 12/116
  • 32. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language User mode Kernel mode Processor Transistors Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 33. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language User mode Kernel mode Processor Register Machine Transistors Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 34. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language User mode Kernel mode Processor Register Machine Opcodes Transistors Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 35. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language User mode Kernel mode Kernel Processor Register Machine Opcodes Transistors Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 36. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language User mode Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 37. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language User mode Standard Library Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 38. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 39. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language Compiler/Interpreter User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 40. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 41. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 42. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Software Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 43. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Specialization Software Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 44. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Specialization Software Generalization Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 45. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Specialization Performance Software Generalization Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 46. Technological Background Abstractions Layers, Abstractions and Interfaces An example Programming language Compiler/Interpreter Language User mode Standard Library Stl calls Kernel mode Kernel System calls Processor Register Machine Opcodes Transistors Hardware Specialization Performance Software Generalization User friendly Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 13/116
  • 47. Technological Background The second idea Layers, Abstractions and Interfaces The second idea Build a computing system with a decreased number of layers resulting in a minor gap between HW and SW but keeping an user friendly way of programming it. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 14/116
  • 48. BondMachine BondMachine Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 15/116
  • 49. 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 FPGA workshop - ICTP - Trieste 13-24 May 16/116
  • 50. 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 FPGA workshop - ICTP - Trieste 13-24 May 16/116
  • 51. 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 FPGA workshop - ICTP - Trieste 13-24 May 16/116
  • 52. 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 FPGA workshop - ICTP - Trieste 13-24 May 16/116
  • 53. 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 FPGA workshop - ICTP - Trieste 13-24 May 16/116
  • 54. BondMachine The BondMachine An example Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 17/116
  • 55. 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. Three possible operating modes. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 18/116
  • 56. 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. Three possible operating modes. General purpose registers 2R registers: r0,r1,r2,r3 ... r2R Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 18/116
  • 57. 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. Three possible operating modes. I/O specialized registers N input registers: i0,i1 ... iN M output registers: o0,o1 ... oM Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 18/116
  • 58. 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. Three possible operating modes. Full set of possible opcodes add,addf,addi,chc,chw,clr,cpy,dec,divf,dpc,hit,hlt,i2r,inc,j, je,jz,m2r,mult,multf,nop,r2m,r2o,r2s,rset,sic,s2r,saj,sub, wrd,wwr Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 18/116
  • 59. 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. Three possible operating modes. RAM and ROM 2L RAM memory cells. 2O ROM memory cells. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 18/116
  • 60. 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. Three possible operating modes. Operating modes Full Harvard mode. Full Von Neuman mode. Hybrid mode. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 18/116
  • 61. BondMachine Connecting Processors Connecting Processor (CP) Full set of possible opcodes Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 19/116
  • 62. 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 FPGA workshop - ICTP - Trieste 13-24 May 20/116
  • 63. 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 FPGA workshop - ICTP - Trieste 13-24 May 20/116
  • 64. 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 FPGA workshop - ICTP - Trieste 13-24 May 20/116
  • 65. 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 FPGA workshop - ICTP - Trieste 13-24 May 20/116
  • 66. 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 FPGA workshop - ICTP - Trieste 13-24 May 20/116
  • 67. 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 FPGA workshop - ICTP - Trieste 13-24 May 20/116
  • 68. BondMachine Shared Objects Channel The Channel SO is an hardware implementation of the CSP (communi- cating sequential processes) channel. It is a model for inter-core communication and synchronization via mes- sage passing. CPs use channels via 4 opcodes wrd: Want Read. wwr: Want Write. chc: Channel Check. chw: Channel Wait. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 21/116
  • 69. BondMachine Shared Objects Channel The Channel SO is an hardware implementation of the CSP (communi- cating sequential processes) channel. It is a model for inter-core communication and synchronization via mes- sage passing. CPs use channels via 4 opcodes wrd: Want Read. wwr: Want Write. chc: Channel Check. chw: Channel Wait. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 21/116
  • 70. BondMachine Shared Objects Channel The Channel SO is an hardware implementation of the CSP (communi- cating sequential processes) channel. It is a model for inter-core communication and synchronization via mes- sage passing. CPs use channels via 4 opcodes wrd: Want Read. wwr: Want Write. chc: Channel Check. chw: Channel Wait. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 21/116
  • 71. BondMachine Shared Objects Shared Memory The Shared Memory SO is a RAM block accessible from more than one CP. Different Shared Memories can be used by different CP and not neces- sarily by all of them. CPs use shared memories via 2 opcodes s2r: Shared memory read. r2s: Shared memory write. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 22/116
  • 72. BondMachine Shared Objects Shared Memory The Shared Memory SO is a RAM block accessible from more than one CP. Different Shared Memories can be used by different CP and not neces- sarily by all of them. CPs use shared memories via 2 opcodes s2r: Shared memory read. r2s: Shared memory write. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 22/116
  • 73. BondMachine Shared Objects Shared Memory The Shared Memory SO is a RAM block accessible from more than one CP. Different Shared Memories can be used by different CP and not neces- sarily by all of them. CPs use shared memories via 2 opcodes s2r: Shared memory read. r2s: Shared memory write. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 22/116
  • 74. BondMachine Shared Objects Barrier The Barrier SO is used to make CPs act synchronously. When a CP hits a barrier, the execution stop until all the CPs that share the same barrier hit it. CPs use barriers via 1 opcode hit: Hit the barrier. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 23/116
  • 75. BondMachine Shared Objects Barrier The Barrier SO is used to make CPs act synchronously. When a CP hits a barrier, the execution stop until all the CPs that share the same barrier hit it. CPs use barriers via 1 opcode hit: Hit the barrier. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 23/116
  • 76. BondMachine Shared Objects Barrier The Barrier SO is used to make CPs act synchronously. When a CP hits a barrier, the execution stop until all the CPs that share the same barrier hit it. CPs use barriers via 1 opcode hit: Hit the barrier. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 23/116
  • 77. BondMachine Shared Objects Multicore and Heterogeneous First idea on the BondMachine The idea was: Having a multi-core architecture completely heterogeneous both in cores types and interconnections. The BondMachine may have many cores, eventually all different, arbitrarily interconnected and sharing non computing elements. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 24/116
  • 78. Architectures Handling Architectures Handling Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 25/116
  • 79. 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 Register Tranfer Code (RTL) Processor Builder Selects the single pro- cessor, assembles and disassembles, saves on disk as JSON, creates the RTL code of a CP BondMachine Builder Connects CPs and SOs together in custom topologies, loads and saves on disk as JSON, create BM’s RTL code Simulation Framework Simulates the be- haviour, emulates a BM on a standard Linux workstation Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 26/116
  • 80. 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 Register Tranfer Code (RTL) Processor Builder Selects the single pro- cessor, assembles and disassembles, saves on disk as JSON, creates the RTL code of a CP BondMachine Builder Connects CPs and SOs together in custom topologies, loads and saves on disk as JSON, create BM’s RTL code Simulation Framework Simulates the be- haviour, emulates a BM on a standard Linux workstation Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 26/116
  • 81. 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 Register Tranfer Code (RTL) Processor Builder Selects the single pro- cessor, assembles and disassembles, saves on disk as JSON, creates the RTL code of a CP BondMachine Builder Connects CPs and SOs together in custom topologies, loads and saves on disk as JSON, create BM’s RTL code Simulation Framework Simulates the be- haviour, emulates a BM on a standard Linux workstation Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 26/116
  • 82. 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 Register Tranfer Code (RTL) Processor Builder Selects the single pro- cessor, assembles and disassembles, saves on disk as JSON, creates the RTL code of a CP BondMachine Builder Connects CPs and SOs together in custom topologies, loads and saves on disk as JSON, create BM’s RTL code Simulation Framework Simulates the be- haviour, emulates a BM on a standard Linux workstation Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 26/116
  • 83. Architectures Handling Processor Builder Procbuilder is the CP manipulation tool. CP Creation CP Load/Save CP Assembler/Disassembler CP RTL Examples (32 bit registers counter machine) procbuilder -register-size 32 -opcodes clr,cpy,dec,inc,je,jz (Input and Output registers) procbuilder -inputs 3 -outputs 2 ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 27/116
  • 84. Architectures Handling Processor Builder Procbuilder is the CP manipulation tool. CP Creation CP Load/Save CP Assembler/Disassembler CP RTL Examples (Loading a CP) procbuilder -load-machine conproc.json ... (Saving a CP) procbuilder -save-machine conproc.json ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 27/116
  • 85. Architectures Handling Processor Builder Procbuilder is the CP manipulation tool. CP Creation CP Load/Save CP Assembler/Disassembler CP RTL Examples (Assembiling) procbuilder -input-assembly program.asm ... (Disassembling) procbuilder -show-program-disassembled ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 27/116
  • 86. Architectures Handling Processor Builder Procbuilder is the CP manipulation tool. CP Creation CP Load/Save CP Assembler/Disassembler CP RTL Examples (Create the CP RTL code in Verilog) procbuilder -create-verilog ... (Create testbench) procbuilder -create-verilog-testbench test.v ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 27/116
  • 87. Architectures Handling Procbuilder hands-on Hands-on N.1 Goals are: To create a simple processor To assemble and disassemble code for it To produce its RTL code Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 28/116
  • 88. Architectures Handling BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Add a processor) bondmachine -add-domains proc.json ... ; ... -add-processor 0 (Remove a processor) bondmachine -bondmachine-file bmach.json -del-processor n Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 29/116
  • 89. Architectures Handling BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Add a Shared Object) bondmachine -add-shared-objects specs ... (Connect an SO to a processor) bondmachine -connect-processor-shared-object ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 29/116
  • 90. Architectures Handling BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Adding inputs or outputs) bondmachine -add-inputs ... ; bondmachine -add-outputs ... (Removing inputs or outputs) bondmachine -del-input ... ; bondmachine -del-output ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 29/116
  • 91. Architectures Handling BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Bonding processor) bondmachine -add-bond p0i2,p1o4 ... (Bonding IO) bondmachine -add-bond i2,p0i6 ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 29/116
  • 92. Architectures Handling BondMachine Builder Bondmachine is the tool that compose CP and SO to form BondMachines. BM CP insert and remove BM SO insert and remove BM Inputs and Outputs BM Bonding Processors and/or IO BM Visualizing or RTL Examples (Visualizing) bondmachine -emit-dot ... (Create RTL code) bondmachine -create-verilog ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 29/116
  • 93. Architectures Handling BondMachine hands-on Hands-on N.2 Goals are: To create a single-core BondMachine To attach an external output To produce its RTL code Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 30/116
  • 94. Architectures Handling Toolchains Toolchains A set of toolchains allow the build and the direct deploy to a target device of BondMachines. Bondgo Toolchain example A file local.mk contains references to the source code as well all the build necessities. make bondmachine creates the JSON representation of the BM and assemble its code. make show displays a graphical representation of the BM. make simulate start a simulation. make videosim create a simulation video. make flash the device into the destination target. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 31/116
  • 95. Architectures Handling Toolchains BondMachine hands-on Hands-on N.3 Goals are: To explore the toolchain To flash the board with the code from the previous example Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 32/116
  • 96. Architectures Handling Toolchains BondMachine hands-on Hands-on N.4 Goals are: To build a BondMachine with a processor and a shared object To flash the board Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 33/116
  • 97. Architectures Handling Toolchains BondMachine hands-on Hands-on N.5 Goals are: To build a dual-core BondMachine To connect cores To flash the board Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 34/116
  • 98. Architectures Handling Web frontend BondMachine web front-end Operations on BondMachines can also be performed via an under development web framework Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 35/116
  • 99. Architectures Handling Simulation Simulation An important feature of the tools is the possibility of simulating BondMachine behavior. An event input file describes how BondMachines elements has to change during the simulation timespan and which one has to be be reported. The simulator can produce results in the form of: Activity log of the BM internal. Graphical representation of the simulation. Report file with quantitative data. Useful to construct metrics Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 36/116
  • 100. Architectures Handling Simulation Simulation An important feature of the tools is the possibility of simulating BondMachine behavior. An event input file describes how BondMachines elements has to change during the simulation timespan and which one has to be be reported. The simulator can produce results in the form of: Activity log of the BM internal. Graphical representation of the simulation. Report file with quantitative data. Useful to construct metrics Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 36/116
  • 101. Architectures Handling Simulation Simulation An important feature of the tools is the possibility of simulating BondMachine behavior. An event input file describes how BondMachines elements has to change during the simulation timespan and which one has to be be reported. The simulator can produce results in the form of: Activity log of the BM internal. Graphical representation of the simulation. Report file with quantitative data. Useful to construct metrics Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 36/116
  • 102. Architectures Handling Simulation Simulation examples Activity log example: A graphical example: https://youtube.com/embed/Cc1Qzioh2Ng Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 37/116
  • 103. Architectures Handling Simulation Simulation hands-on Hands-on N.6 Goals are: To show the simulation capabilities of the framework Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 38/116
  • 104. Architectures Handling Simulation Emulation The same engine that simulate BondMachines can be used as emulator. Through the emulator BondMachines can be used on Linux workstations. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 39/116
  • 105. Architectures Molding Architectures Molding Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 40/116
  • 106. Architectures Molding API and Libraries Molding the BondMachine As stated before BondMachines are not general purpose architectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a Bond- Machine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. A set of tools to use BondMachine in Machine Learning. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 41/116
  • 107. Architectures Molding API and Libraries Molding the BondMachine As stated before BondMachines are not general purpose architectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a Bond- Machine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. A set of tools to use BondMachine in Machine Learning. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 41/116
  • 108. Architectures Molding API and Libraries Molding the BondMachine As stated before BondMachines are not general purpose architectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a Bond- Machine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. A set of tools to use BondMachine in Machine Learning. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 41/116
  • 109. Architectures Molding API and Libraries Molding the BondMachine As stated before BondMachines are not general purpose architectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a Bond- Machine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. A set of tools to use BondMachine in Machine Learning. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 41/116
  • 110. Architectures Molding API and Libraries Molding the BondMachine As stated before BondMachines are not general purpose architectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a Bond- Machine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. A set of tools to use BondMachine in Machine Learning. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 41/116
  • 111. Architectures Molding API and Libraries Molding the BondMachine As stated before BondMachines are not general purpose architectures, and to be effective have to be shaped according the specific problem. Several methods (apart from writing in assembly and building a Bond- Machine from scratch) have been developed to do that: bondgo: A new type of compiler that create not only the CPs assembly but also the architecture itself. A set of API to create BondMachine to fit a specific computational problems. An Evolutionary Computation framework to “grow” BondMachines according some fitness function via simulation. A set of tools to use BondMachine in Machine Learning. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 41/116
  • 112. 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 FPGA workshop - ICTP - Trieste 13-24 May 42/116
  • 113. 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 FPGA workshop - ICTP - Trieste 13-24 May 42/116
  • 114. 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 FPGA workshop - ICTP - Trieste 13-24 May 42/116
  • 115. 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 FPGA workshop - ICTP - Trieste 13-24 May 42/116
  • 116. 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 FPGA workshop - ICTP - Trieste 13-24 May 42/116
  • 117. 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 FPGA workshop - ICTP - Trieste 13-24 May 42/116
  • 118. 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 FPGA workshop - ICTP - Trieste 13-24 May 42/116
  • 119. Architectures Molding Bondgo Bondgo Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 43/116
  • 120. 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 FPGA workshop - ICTP - Trieste 13-24 May 44/116
  • 121. Architectures Molding Bondgo Bondgo This is the standard flow when building computer programs Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 45/116
  • 122. Architectures Molding Bondgo Bondgo This is the standard flow when building computer programs high level language source Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 45/116
  • 123. 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 FPGA workshop - ICTP - Trieste 13-24 May 45/116
  • 124. 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 FPGA workshop - ICTP - Trieste 13-24 May 45/116
  • 125. 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 FPGA workshop - ICTP - Trieste 13-24 May 46/116
  • 126. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 47/116
  • 127. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... high level GO source Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 47/116
  • 128. Architectures Molding Bondgo Bondgo Bondgo does something different from standard compilers ... high level GO source assembly file Compiling Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 47/116
  • 129. 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 FPGA workshop - ICTP - Trieste 13-24 May 47/116
  • 130. 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 FPGA workshop - ICTP - Trieste 13-24 May 47/116
  • 131. 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 FPGA workshop - ICTP - Trieste 13-24 May 47/116
  • 132. 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 FPGA workshop - ICTP - Trieste 13-24 May 47/116
  • 133. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 134. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 135. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 136. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 137. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 138. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 139. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 140. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 141. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 142. 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 FPGA workshop - ICTP - Trieste 13-24 May 48/116
  • 143. Architectures Molding Bondgo Bondgo hands-on Hands-on N.7 Goals are: To create a BondMachine from a Go source file To build the architecture To build the program To create the firmware and flash it to the board Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 49/116
  • 144. Architectures Molding Bondgo Bondgo ... bondgo may not only create the binaries, but also the CP architecture, and ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 50/116
  • 145. Architectures Molding Bondgo Bondgo ... it can do even much more interesting things when compiling concurrent programs. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 51/116
  • 146. 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 FPGA workshop - ICTP - Trieste 13-24 May 51/116
  • 147. 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 FPGA workshop - ICTP - Trieste 13-24 May 51/116
  • 148. 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 FPGA workshop - ICTP - Trieste 13-24 May 51/116
  • 149. 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 FPGA workshop - ICTP - Trieste 13-24 May 51/116
  • 150. 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 FPGA workshop - ICTP - Trieste 13-24 May 51/116
  • 151. 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 FPGA workshop - ICTP - Trieste 13-24 May 51/116
  • 152. Architectures Molding Bondgo Bondgo A multi-core example multi-core counter package main import ( bondgo ) func pong () { var in0 bondgo.Input var out0 bondgo.Output in0 = bondgo.Make(bondgo.Input , 3) out0 = bondgo.Make(bondgo.Output , 5) for { bondgo.IOWrite(out0 , bondgo.IORead(in0)+1) } } func main () { var in0 bondgo.Input var out0 bondgo.Output in0 = bondgo.Make(bondgo.Input , 5) out0 = bondgo.Make(bondgo.Output , 3) device_0: go pong () for { bondgo.IOWrite(out0 , bondgo.IORead(in0)) } } Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 52/116
  • 153. Architectures Molding Bondgo Bondgo A multi-core example Compiling the code with the bondgo compiler: bondgo -input-file ds.go -mpm The toolchain perform the following steps: Map the two goroutines to two hardware cores. Creates two types of core, each one optimized to execute the assigned goroutine. Creates the two binaries. Connected the two core as inferred from the source code, using special IO registers. The result is a multicore BondMachine: Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 53/116
  • 154. Architectures Molding Bondgo Bondgo A multi-core example Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 54/116
  • 155. Architectures Molding Bondgo Simulation hands-on Hands-on N.8 Goals are: To use bondgo to create a chain of interconnected processors To flash the firmware to the board Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 55/116
  • 156. 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 FPGA workshop - ICTP - Trieste 13-24 May 56/116
  • 157. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 158. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 159. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 160. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 161. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 162. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 163. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 164. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 165. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 166. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 167. Architectures Molding Bondgo Bondgo Go in hardware Bondgo implements a sort of “Go in hardware”. High level Go source code is directly mapped to interconnected processors without Operating Systems or runtimes. Goroutines Cores Channels Channel SOs Variables (local) CP RAM segments Variables (by val) CH messages or IO regs Variables (by ref) Shared RAM segments Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 57/116
  • 168. Architectures Molding Bondgo Go in hardware Second idea on the BondMachine The idea was: Build a computing system with a decreased number of layers resulting in a lower HW/SW gap. This would raise the overall performances yet keeping an user friendly way of programming. Between HW and SW there is only the processor abstraction, no Operating System nor runtimes. Despite that programming is done at high level. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 58/116
  • 169. Architectures Molding Bondgo Layers, Abstractions and Interfaces and BondMachines Programming language Compiler Language BondMachine Register Machine Opcodes Transistors Hardware Specialization Performance Software Generalization User friendly Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 59/116
  • 170. Architectures Molding Bondgo Bondgo An example bondgo stream processing example package main import ( bondgo ) func streamprocessor (a *[] uint8 , b *[] uint8 , c *[] uint8 , gid uint8) { (*c)[gid] = (*a)[gid] + (*b)[gid] } func main () { a := make ([] uint8 , 256) b := make ([] uint8 , 256) c := make ([] uint8 , 256) // ... some a and b values fill for i := 0; i 256; i++ { go streamprocessor (a, b, c, uint8(i)) } } The compilation of this example results in the creation of a 257 CPs where 256 are the stream processors executing the code in the function called streamprocessor, and one is the coordinating CP. Each stream processor is optimized and capable only to make additions since it is the only operation requested by the source code. The three slices created on the main function are passed by reference to the Goroutines then a shared RAM is created by the Bondgo compiler available to the generated CPs. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 60/116
  • 171. Architectures Molding Bondgo Bondgo Abstract Assembly The Assembly language for the BM has been kept as independent as possible from the particular CP. Given a specific piece of assembly code Bondgo has the ability to compute the “minimum CP” that can execute that code. These are Building Blocks for complex BondMachines. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 61/116
  • 172. Architectures Molding Builders API Builders API Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 62/116
  • 173. Architectures Molding Builders API Builders API With these Building Blocks Several libraries have been developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 63/116
  • 174. Architectures Molding Builders API Builders API With these Building Blocks Several libraries have been developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 63/116
  • 175. Architectures Molding Builders API Builders API With these Building Blocks Several libraries have been developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 63/116
  • 176. Architectures Molding Builders API Builders API With these Building Blocks Several libraries have been developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 63/116
  • 177. Architectures Molding Builders API Builders API With these Building Blocks Several libraries have been developed to map specific problems on BondMachines: Symbond, to handle mathematical expression. Boolbond, to map boolean expression. Matrixwork, to perform matrices operations. Neuralbond, to use neural networks. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 63/116
  • 178. Architectures Molding Builders API Builders API Symbond A mathematical expression, or a system can be converted to a BondMachine: sum(var(x),const(2)) Boolbond symbond -expression sum(var(x),const(2)) -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 64/116
  • 179. Architectures Molding Builders API Builders API Symbond A mathematical expression, or a system can be converted to a BondMachine: sum(var(x),const(2)) Boolbond symbond -expression sum(var(x),const(2)) -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 64/116
  • 180. Architectures Molding Builders API Builders API Symbond A mathematical expression, or a system can be converted to a BondMachine: sum(var(x),const(2)) Boolbond symbond -expression sum(var(x),const(2)) -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 64/116
  • 181. Architectures Molding Builders API Builders API Symbond Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 65/116
  • 182. Architectures Molding Builders API Builders API Boolbond A system of boolean equations, input and output variables are expressed as in the example file: var(z)=or(var(x),not(var(y))) var(t)=or(and(var(x),var(y)),var(z)) var(l)=and(xor(var(x),var(y)),var(t)) i:var(x) i:var(y) o:var(z) o:var(t) o:var(l) Boolbond boolbond -system-file expression.txt -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 66/116
  • 183. Architectures Molding Builders API Builders API Boolbond A system of boolean equations, input and output variables are expressed as in the example file: var(z)=or(var(x),not(var(y))) var(t)=or(and(var(x),var(y)),var(z)) var(l)=and(xor(var(x),var(y)),var(t)) i:var(x) i:var(y) o:var(z) o:var(t) o:var(l) Boolbond boolbond -system-file expression.txt -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 66/116
  • 184. Architectures Molding Builders API Builders API Boolbond A system of boolean equations, input and output variables are expressed as in the example file: var(z)=or(var(x),not(var(y))) var(t)=or(and(var(x),var(y)),var(z)) var(l)=and(xor(var(x),var(y)),var(t)) i:var(x) i:var(y) o:var(z) o:var(t) o:var(l) Boolbond boolbond -system-file expression.txt -save-bondmachine bondmachine.json Resulting in: Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 66/116
  • 185. Architectures Molding Builders API Builders API Boolbond Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 67/116
  • 186. Architectures Molding Builders API Boolbond hands-on Hands-on N.9 Goals are: To create complex multi-cores from boolean expressions Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 68/116
  • 187. Architectures Molding Builders API Builders API Matrixwork Matrix multiplication if mymachine, ok := matrixwork.Build_M(n, t); ok == nil ... Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 69/116
  • 188. Architectures Molding Evolutionary BondMachine Evolutionary BondMachine Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 70/116
  • 189. Architectures Molding Evolutionary BondMachine Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 71/116
  • 190. Architectures Molding Evolutionary BondMachine Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 71/116
  • 191. Architectures Molding Evolutionary BondMachine Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 71/116
  • 192. Architectures Molding Evolutionary BondMachine Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 71/116
  • 193. Architectures Molding Evolutionary BondMachine Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 71/116
  • 194. Architectures Molding Evolutionary BondMachine Evolutionary BondMachine Find an architecture that solve a problem Simulation Framework Metrics to check how well a BM solve a problem Building Blocks of the BM Population of BondMachines Genetically Evolved Architectures Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 71/116
  • 195. Architectures Molding Machine Learning with BondMachine section Machine Learning Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 72/116
  • 196. 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 FPGA workshop - ICTP - Trieste 13-24 May 73/116
  • 197. 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 FPGA workshop - ICTP - Trieste 13-24 May 73/116
  • 198. Architectures Molding Bondmachine native Neural Network library Machine Learning with BondMachine Native Neural Network library The tool neuralbond allow the creation of BM-based neural chips from an API go interface. Neurons are converted to BondMachine connecting processors. Tensors are mapped to CP connections. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 74/116
  • 199. Architectures Molding TensorFlow to Bondmachine TensorFlow™ to Bondmachine tf2bm TensorFlow™ is an open source software library for numerical computation using data flow graphs. Graphs can be converted to BondMachines with the tf2bm tool. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 75/116
  • 200. Architectures Molding NNEF Composer Machine Learning with BondMachine NNEF Composer Neural Network Exchange Format (NNEF) is a standard from Khronos Group to enable the easy transfer of trained networks among frameworks, inference engines and devices The NNEF BM tool approach is to descent NNEF models and build BondMachine multi-core accordingly This approch has several advandages over the previous: It is not limited to a single framework NNEF is a textual file, so no complex operations are needed to read models Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 76/116
  • 201. Hardware Hardware Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 77/116
  • 202. Hardware Hardware implementation FPGA The RTL code for the BondMachine is written in Verilog and System Verilog, and has been tested on these devices/system: Digilent Basys3 - Xilinx Artix-7 - Vivado. Kintex7 Evaluation Board - Vivado. Digilent Zedboard - Xilinx Zynq 7020 - Vivado. Linux - Iverilog. 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 FPGA workshop - ICTP - Trieste 13-24 May 78/116
  • 203. 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: https://youtube.com/embed/hukTrGxTb7A Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 79/116
  • 204. Clustering Clustering Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 80/116
  • 205. 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 FPGA workshop - ICTP - Trieste 13-24 May 81/116
  • 206. 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 FPGA workshop - ICTP - Trieste 13-24 May 81/116
  • 207. 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 FPGA workshop - ICTP - Trieste 13-24 May 81/116
  • 208. 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 FPGA workshop - ICTP - Trieste 13-24 May 81/116
  • 209. 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 FPGA workshop - ICTP - Trieste 13-24 May 82/116
  • 210. 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 FPGA workshop - ICTP - Trieste 13-24 May 82/116
  • 211. 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 FPGA workshop - ICTP - Trieste 13-24 May 82/116
  • 212. Clustering BondMachine Clustering Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 83/116
  • 213. Clustering Redeployer BondMachine Clustering A distributed example distributed counter package main import ( bondgo ) func pong () { var in0 bondgo.Input var out0 bondgo.Output in0 = bondgo.Make(bondgo.Input , 3) out0 = bondgo.Make(bondgo.Output , 5) for { bondgo.IOWrite(out0 , bondgo.IORead(in0)+1) } } func main () { var in0 bondgo.Input var out0 bondgo.Output in0 = bondgo.Make(bondgo.Input , 5) out0 = bondgo.Make(bondgo.Output , 3) device_1: go pong () for { bondgo.IOWrite(out0 , bondgo.IORead(in0)) } } Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 84/116
  • 214. Clustering Redeployer BondMachine Clustering A distributed example Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 85/116
  • 215. Clustering Redeployer BondMachine Clustering A distributed example The result is: https://youtube.com/embed/g9xYHK0zca4 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 FPGA workshop - ICTP - Trieste 13-24 May 86/116
  • 216. Clustering Redeployer BondMachine Clustering Results Results User can deploy an entire HW/SW cluster starting from code written in a high level description (Go, NNEF, etc) Workstation with emulated BondMachines, workstation with etherbond drivers, standalone BondMachines (FPGA) may join these clusters. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 87/116
  • 217. Clustering Redeployer BondMachine Clustering Results Results User can deploy an entire HW/SW cluster starting from code written in a high level description (Go, NNEF, etc) Workstation with emulated BondMachines, workstation with etherbond drivers, standalone BondMachines (FPGA) may join these clusters. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 87/116
  • 218. Use cases Use cases Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 88/116
  • 219. 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 FPGA workshop - ICTP - Trieste 13-24 May 89/116
  • 220. Use cases Physics Real time pulse shape analysis in neutron detectors The operation of the new generation of high-intensity neutron sources like SNS, JSNS and European Spallation Source (ESS, Lund, Sweden), now under construction, are introducing a new demand for neutron detection capabilities. These demands yield to the need for new data collection procedures and new technology based on solid state Si devices. We are trying to use BondMachines to make the real time shape analysis in this kind of detecting devices. Courtesy of Prof. F.Sacchetti Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 90/116
  • 221. Use cases Physics Test beam for space experiments (DAMPE, HERD) Trigger logic for test beams Courtesy of V.Vagelli and M.Duranti Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 91/116
  • 222. Use cases Physics Test beam for space experiments (DAMPE, HERD) Trigger logic for test beams Courtesy of V.Vagelli and M.Duranti Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 92/116
  • 223. Use cases Physics Test beam for space experiments (DAMPE, HERD) Trigger logic for test beams We are trying to explore the possibility of using BondMachine to handle efficiently this kind of operations. Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 93/116
  • 224. 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 FPGA workshop - ICTP - Trieste 13-24 May 94/116
  • 225. 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 FPGA workshop - ICTP - Trieste 13-24 May 94/116
  • 226. 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 FPGA workshop - ICTP - Trieste 13-24 May 94/116
  • 227. 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 FPGA workshop - ICTP - Trieste 13-24 May 94/116
  • 228. Use cases Accelerators Accelerators Mirko Mariotti The BondMachine Toolkit FPGA workshop - ICTP - Trieste 13-24 May 95/116