Ontogenetic hardware
Ok, so the Tom Thumb algorithm can self-replicate an arbitrary structure within an FPGA
But what kind of structures is it interesting to self-replicate
Ontogenetic hardwareEmbryonics = embryonic electronics:Drawing inspiration from growth processes of living organisms to design complex computing systems
Phylogeny (P)[Evolvability]
Epigenesis (E)[Adaptability]
Ontogeny (O)[Scalability]
PO hw
POE hw
OE hw
PE hw
Bio-Inspired Approaches
Growth Self-organization Massive parallelism
(multicellular systems)
Issues that growth can potentially address: Complexity Scalability Fault tolerance
Caenorhabditis Elegans
11 December 1998
Caenorhabditis Elegans
From S.F. Gilbert, Developmental Biology, Sinauer, 1991
Multicellular Organization
959 somatic cells
Cellular Differentiation
Pharynx
Intestine
Embryonics: How?
Iterative electronic circuit based on 3 features:
• multicellular organization
• cellular division
• cellular differentiation
Embryonics LandscapePopulation level
(population = organisms)
Organismic level (organism = cells)
Cellular level (cell = molecules)
Molecular level (basic FPGA's element)
MUX
COMP
MUX
d
ORG ORG
ORG ORG
c
b
a d
e
f
A C E
B D FORG
CELL
MO
LECULE
StopWatch
MIN SECRESET
STARTSTOP
StopWatch
MIN SECMIN SEC
Multicellular Organization
O R G
CELLgene
A C E
B D F2
1
1 2 3
Y
X
StopWatch
StopWatch
ORG
CELLgene
1
1 2 3
Y
X
Countmod 6
Countmod10
Countmod 6
Countmod10
4
6 10 6 101 2 3 4
OG: operative genomegene
StopWatch
First step: design of a totipotent cell (stem cell)
(of course, in practice it can be optimized)
StopWatch
X = (WX+1) mod 4 case of X: X = 1: Countmod 6 (10 minutes) X = 2: Countmod 10 (minutes) X = 3: Countmod 6 (10 seconds) X = 4: Countmod 10 (seconds)
OG: operative genome
Cellular Differentiation
6 10 6 101 2 3 4
X = 1
6 10 6 101 2 3 4
6 10 6 101 2 3 4
6 10 6 101 2 3 4
2
10t1
3
6t2
10
4
t3
Cloning
1
Y
X
6 10 6 10 6 10 6 10 6 10 6 10 6 10 6 10
1
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
1
Y
X
6 10 6 10 6 10 6 10 6 10 6 10 6 10 6 10t1
1 2
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
t1
1
1
Y
X
6 10 6 10 6 10 6 10 6 10 6 10 6 10 6 10t1 t2
1 2 3
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10t2
t1
1
1
Y
X
6 10 6 10 6 10 6 10 6 10 6 10 6 10 6 10t1 t2 t3
MOTHER ORG
1 2 3 4
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10t2 t3
t1
1
Cloning
1
Y
X
t1 t2 t3
MOTHER ORG
t4
1 2 3 4 1
t2 t3 t4
t1DAUGHTER ORG # 1
1
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10 6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 101
Y
X
t1 t2 t3
MOTHER ORG
t5t4
1 2 3 4 1 2
t2 t3 t4 t5
t1DAUGHTER ORG # 1
1
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10 6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 101
Y
X
t1 t2 t3
MOTHER ORG
t5 t6t4
1 2 3 4 1 2 3
t2 t3 t4 t6t5
t1DAUGHTER ORG # 1
1
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10 6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 101
Y
X
t1 t2 t3
MOTHER ORG
t5 t6 t7t4
DAUGHTER ORG # 2
1 2 3 4 1 2 3 4
t2 t3 t4 t6 t7t5
t1DAUGHTER ORG # 1
1
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10 6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 101
Y
X
t1 t2 t3
MOTHER ORG
t5 t6 t7t4
DAUGHTER ORG # 2
1 2 3 4 1 2 3 4
t2 t3 t4 t6 t7 t8t5
t1DAUGHTER ORG # 1 DAUGHTER ORG # 3
1
Directions of self-replication
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10 6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
6 10 6 10 6 10 6 10 6 10 6 106 10 6 10
Self-Repair
1
Y
X
6 10 6 10 6 10 6 10 6 10 6 10 6 10 6 10
ORIGINAL ORG
6 10 6 10 6 10 6 10
1 2 3 4 1 2
SPARE CELLS
Direction of self-repair
1
Y
X
6 10 6 10 6 10 6 10 6 10 6 10 6 10 6 10
1 2 4 1 2
KILL=1
SCAR
106 10 6 101
Y
X
6 10 6 10 6 10 6 10 6 10 6 10 6 10 6 10
1 2 3
KILL=1
SCAR
106 10 6 101
Y
X
6 10 6 10 6 10 6 10 6 10 6 10 6 10 6 10
1 2 3 4
KILL=1
NEW ORG NEW ORGSCAR
106 10 6 101
Y
X
6 10 6 10 6 10 6 10 6 10 6 10 6 10 6 10
1 2 3 4 1
KILL=1
NEW ORG NEW ORGSCAR SPARE CELL
106 10 6 10
BioWatch The application can of course be anything…
But then, the size and structure of the cell will vary from application to application: we need programmable logic!
1
1 2 3
Y
X
mod3
mod10/4
mod6
mod10
4
mod6
mod10
5 6
Modulo-24 counter StopWatch
MUXTREE Molecule The “molecular” layer of Embryonics is an FPGA
0 10 1 2 3 4
0 10 1 2 3 4
1 0
NOUT
SIN
CK
EOBUS
EOUT
EIN
WIBUS
WIN
WOUT
L2:0 R2:0
1 0 R
SB
1 0EIBUS
B
WOBUS
NOBUS NIBUS
SOBUSSIBUS
5 56 7 6 7
INITP
DQ FF
MUXTREE
MUX
0 L2:0 0 R2:0 N1:0 S1:0 E1:0W1:0 0 P R Bswitch block (SB)connection block (CB)
memory and test
1 0456789101112141618 219
CREGMOLCODE = MC19:0
2 30 1
3 12 0
NOBUS
SOBUS
0
1
3
2
EOBUS1
3
2
0
WOBUSNOUT
NIBUS
NOUT
NOUT
NOUT
EIBUS
S1:0
WIBUS
N1:0E1:0
W1:0
SIBUS
SB
Cellular Self-Replication But if we use FPGAs, then we need to CREATE
the array of cells in the first place, before differentiation can take place (self-replication)
Cellular Self-Replication
PGX=1
But if we use FPGAs, then we need to CREATE the array of cells in the first place, before differentiation can take place (self-replication)
Cellular Self-Replication
PGPG2X=1 3 4 SPARE CELL
But if we use FPGAs, then we need to CREATE the array of cells in the first place, before differentiation can take place (self-replication)
Cellular Self-Replication
RG+OG
2 3 4X=1 SPARE CELL
Self-replication will allow the same FPGA partial configuration to be duplicated as many times as needed
Cellular Self-Repair
RG+OG
2 3 4X=1 SPARE CELL
faulty molecule
But self-replication, and custom FPGAs, can ALSO be used to improve the reliability of the system
Cellular Self-Repair
RG+OG
2 3 4X=1 SPARE CELL
3 4
KILL=1
But self-replication, and custom FPGAs, can ALSO be used to improve the reliability of the system … within limits
Operation of the Cell
Kill a Molecule
Recovered Molecule
Kill Again (Kill a Cell)
Recovered Cell
Implementation - The BioWall
Genotype Layer
Phenotype Layer
Example – Automatic Synthesis
Application-specific (parallel) functions
Developmental algorithm
Genetic code
Mapping Layer
Example – Automatic Synthesis
Phenotype Layer
Mapping Layer
Genotype Layer
Totipotent Cell
Example – Automatic SynthesisTotipotent CellProgrammable Logic
Example – Automatic SynthesisProgrammable Logic
Cellular Array
What kind of applications can take advantage of this kind of system?
Complex "real-world" streaming applications computation is carried out sequentially can be represented by a DAG of computation nodes each node processes data locally then forwards
them to the next node in the graph
Applications
×+ ÷≠ FFT +
×
DCTIN OUT
READ DCT QNTZ CMPR WRT
Example: JPEG
Specialized MOVE functional units can be designed for each of these steps
IN OUT
Programmable substrate
×+ ÷≠ FFT +
×
DCT
Context
IN OUT
Problem: task or resource allocation – i.e. how do we map the graph nodes to the array?
Specifically: dynamic allocation
Self-Scaling Stream Processing
Source
Funct A
Funct B
Funct C JoinFunct A
Funct A
Funct A
Funct C
Funct A
Funct A
Funct C
Funct A
Funct C
SSSP The MJPEG application consists of a four-stage
computation pipeline. The data to be compressed are composed of 192 bytes corresponding to an 8x8 array of pixels using 24-bit colour.
The maximum rate achievable (determined by the input rate) is of 700 packets per second - roughly 1 MBit/second. With a single pipeline, the performance tops at about 60 packets per second.
SSSP
When performance peaks, the average output rate is of 675 packets per second (out of a maximum of 700): this technique allows to multiply the throughput by a factor of 11 using 28 processors.