The model in a nut-shell
Loosley spoken the model consists of a sea of
micro-controllers which can interact with each other. Because former
research of BioMIP
and others have
shown how important spatial extension is this sea actually is a ring
of pots of micro-controllers.
Micro-controllers can interact with each other. Interaction is done
via a recognition procedure.
Each micro-controller can exhibit a recognition pattern, which
is currently the first occuring concatenated sequence of Site-
in the program. The
attachment procedure tries to find a micro-controller in the vicinity
with an appropriate recognition-site and puts that micro-controller's
address into the reading- or writing-slot,
depending on the instruction which initiated the attachment procedure.
The second recognition-based interaction is realized when transferring
program control from the active micro-controller towards another
(equivalent to a sub-routine call). The third recognition event
is a register access where the foreign micro-controller's accumulator
acts as a local register.
The micro-controller has input-ports, registers or a read-attached
program and output-ports, registers or the write-attached program of a
Each instruction is constituted of three parts: the cargo-,
conditional- and special-part.
The cargo-part serves as a parameter for the instruction in the
which is executed if the conditional-part, see
Several instructions are available, see
two variants in
which are described in table 2
A further bit is needed to allow for conditional execution. The
in row J1 of table 1
also executed if row J2 is specified and the ZF-flag (accumulator
value 0) becomes active or if row J3 is specified and PF1-flag is
Instruction set used. The possible flags are explained
in table 4.
The left instruction table concerns constant program lengths and the
right instruction table is used with variable length sequences. The
default instruction for (J0:S0, left) is Cycle. This
sets the instruction pointer to address zero. The instruction (J0:S0,
left) can be changed by toggling the _CYCLE_-flag with the SetFB
instruction. In some variants of the instruction set the instruction
SetFB has been replaced by a Goto-instruction.
Only a few instructions do have side-effects during execution, namely,
, see table 2
. With the instruction
the meaning of instruction End
can be changed from stopping
the program immediately to setting the instruction pointer to 0 (Cycle
Table 2: With a
special command (SP) width of two bits (and borrowing a case
from the conditional part) these special instructions can be encoded.
||The program stops until it is relaunched again.
Only available with
fixed length programs.
||The program jumps back to address zero and
continues executing. Only
available with fixed length programs.
||Load a value from a register into the
accumulator. The cargo specifies
the address of the register. Register 0 points to the micro-controller
attached at the reading slot. Register 1 points to the micro-controller
attached at the writing slot. With no micro-controller attached a
search is ignited. Prepending Site-instructions increase the
specificity of register-addressing. With no Site-instructions
before and accessing register 0 or 1 a random search is done. If no
suitable micro-controller is found this instruction is ignored.
||Store the accumulator in a register. The cargo
specifies the address
of the register. Register 1 points to the micro-controller attached
in the writing slot. Register 0 points to the micro-controller attached
at the reading slot. With no micro-controller attached a search is
ignited. Prepending Site-instructions increase the
of the register-addressing. With no Site-instructions before and
register 1 or 0 a random search is done. If no suitable
is found and address 1 is accessed the program is stopped to save
||Transfer execution to the micro-controller
specified in the cargo-part
of this instruction. Accumulator and attachment slots are transferred
to the new micro-controller. The current program is stopped after
Prepending Site-instructions increase the specificity of the
micro-controller addressing, these Site-instructions are
with the cargo-part of the Call-instruction to one big
recognition-site. If no appropriate micro-controller found the
||Preset the accumulator with the value provided
by the cargo-part.
||Define a recognition-site, either to be
recognized by others or to
actively attach to other micro-controllers. Used with instructions Call,
Load and Store.
||If a machine is attached at the reading-slot
(e.g. after accessing
register 0) then certain flags can be set in this machine, see
of table 4, left part.
||Set flags in the executing machine. See table 4,
right part, for a description of these flags.
||This command is only available when using
variable length program
See table 7 for a description of
||This instruction was superseeded by the SetFB
It set the instruction pointer counter (IPC) to the address given
in the cargo-part of the instruction.
Table 3: Conditional
part of an instruction. Instructions can be executed if
certain conditions are fulfilled, like a zero-value of the accumulator
(ZF-flag) or the flag PF1 set in the status-register of a
||Instructions are executed always
||Instructions are executed always and do have conditional
||Only executed if the ZF-flag (ACCU with value 0) is set
||Only executed if the PF1-flag (via other controllers or from
Table 4: All flags
available for a cargo-width of two are shown here. Of course,
with a cargo-width larger then two, further flags could be defined.
Flags A (left table) are always available at a foreign micro-controller
which is attached via the reading-slot and Flags B (right table) are
situated in the own micro-controller.
Setting flags A at a foreign micro-controller, using the special
command SetFA. If no micro-controller is attached the
||set if this micro-controller is invisible
These flags B can be set with the special command SetFB.
||End-instruction means jumping to
address 0, only valid with
fixed length programs
||reading and writing goes backwards
Table 5: Possible action-commands. Depending on the
number of bits in the cargo-part of the instruction the shown actions
can take place.
||If there are
two machines located, one in the reading and another
in the writing-slot, the program of the machine in the writing slot
is appended to the program in the reading-slot. The machine in the
writing slot is invalidated after that and will be replaced by a newly
created machine at the next simulation round.
||If there are t
wo machines located in the reading and writing-slot
the program of the machine in the writing slot is replaced by the
program right after the current remote instruction pointer (typically
after the recognition site). The program in the reading slot is
||Copy the ma
chine-mask from the
reading-slot-machine into the machine's machine-mask attached at the
||Copy the len
gth of the machine in the reading-slot into the machine
of the writing-slot, which resembles a truncation or an elongation.
|Release reading-slot (100)
||If a machine is attached at the reading-slot it
will be released via
|Release writing-slot (101)
||If a machine is attached at the writing-slot it
will be released via
It is now common sense that spatially resolved systems are
for evolution to escape parasitism, to maintain sensible information
and to increase diversity in the population, see e.g. [8
or experimental work [55
]. A question
remaining is the optimum spatial dimensionality of the system.
showed that the length of evolutionary avalanches and thus the
in the system is best in the one-dimensional case, [1
meaning space is spanned along a ring-topology, see Figure .
Currently two-, one- and half-dimensional spaces can be investigated.
We speak of half-dimension if the number of neighbors is one,
along the ring can only proceed in one direction.
In the simulations reported the number N of containers is between
16 and 4096 and the number m of processors per container between
8 and 32. Communication is restricted to neighboring containers. The
communication between containers is organized such that the
do have read- and write-access to the micro-controllers of the
containers as well as to the micro-controllers of the own container.
This, for example, gives with two neighboring containers and 16
per container 47 micro-controllers to exchange information with.
exchange means access to the others program-code, accumulator or status
A container is a well-stirred reaction vessel with no further spatial
organization. Each processor is able to issue arbitrary many
instructions, see Table 1
instructions are concatenated, if they are
direct sequence, to create a larger and thus more specific recognition
These extracted recognition sites are stored in a content-addressable
memory to allow for a rapid attachment procedure. Of course, several
other possibilities to distribute the recognition-sites do exist and
even a cyclic redundancy check fingerprint (CRC16) could be used to
identify the micro-controller programs.
In addition to direct communication, micro-controllers are picked
at random from time to time and are exchanged with micro-controllers
from neighboring containers. This resembles a diffusive process in
the system. In the experiments reported though no diffusive exchange
A minimum replicator program
Shown in Table 5
are two minimal replicator program sequences one for
the fixed-length sequences case and the other for variable-length
sequences. It is obvious that at least two of these programs have to be
in a neighborhood to allow both to replicate each other. Larger
networks are feasible as well but less probable. Only have two programs
which are able to replicate each other is an idealistic view.
Realistically several such programs must exist because the other
micro-controllers are active as well and easily can destroy these two
Table 5: A minimum replicator
program for fixed program lengths
The bits (xx) in the cargo-part of the Site-instruction are
arbitrary but need to be stabilized throughout evolution. The bits
of the cargo-part of the End-instruction (left part) are not
evaluated. The total number of bits needed to be at the correct
with the correct value during evolution is 22.
With variable length sequences and a machine-mask of 0x3, (right part),
12 bits and a
of three instructions have to be found and maintained by the dynamics.
Even if one omits the requirement of a univeral computability at
least 12 bits are required to be stabilized against
evolution and ten bits have to be found de novo
, actually these are twenty
because we do need two micro-controllers for a replication cycle.