Apr 22, 2005 - these simple cells may form a multicellular organism, complex in both its composition and behaviour. As such, either development alone, or.
Towards Development on a Silicon-based Cellular Computing Machine Gunnar Tufte and Pauline C. Haddow Complex Adaptive Organically-inspired Systems (CAOS) Group for Computer Architecture and Design Department of Computer and Information Science (IDI) Norwegian University of Science and Technology (NTNU) April 22, 2005 Abstract. Today’s reconfigurable technology provides vast parallelism that may be exploited in the design of a cellular computing machine. In this work a virtual Sblock FPGA is implemented on an existing FPGA, achieving not only an architecture in keeping with cellular computing principles but also suited to biologically inspired design methods. The design method proposed is a combination of evolution and development and results of running a developmental model on the cellular computing machine are presented. Keywords: Artificial Development, Cellular Computing, Evolutionary Design, Evolvable Hardware
1. Introduction Human beings have designed a variety of machines and tools to assist us in everyday life. Even though human made designs may be complex and advanced they are not at all as complex as the designs around us created by nature. Inspiration from nature can lead us towards new and unconventional methods or design ideas (Bentley, 1999). Nature has created creatures and even plants with sophisticated behaviour. Properties such as complexity, adaptivity to the environment, selfreproduction, self-repair and collective behaviour are obvious in nature but very hard to put into human made designs. Systems such as the neural (brain) system or immune system can dynamically receive and process large quantities of information from distributed sources in a very dynamic manner. These systems achieve real-time computation due to an effective architecture including relatively simple processing units and local communication, thus ensuring vast parallelism. Exploiting these biological features (Sipper, 1999), cellular computing has emerged as a newer computing paradigm requiring new programming and design techniques. Sipper divides programming techniques for cellular computation into two categories. The first category — direct approaches, specifies the functionality of each cell in detail. As such, the system is defined to solve c 2005 Kluwer Academic Publishers. Printed in the Netherlands.
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.1
2
Gunnar Tufte and Pauline C. Haddow
a given problem by the specification of local properties in the cell. The direct approach may be successful for problems that can directly exploit local properties in a cellular array e.g. low level image processing (Chua and Yang, 1988). The direct approach, however, becomes difficult for global problems i.e. problems requiring a solution involving a global behaviour from local cell interactions. The second category — adaptive methods, includes systems where the programmer (or designer) can not explicitly specify the complete system. Taking inspiration from nature and specifically Darwin’s theories of evolution, has led to the establishment of artificial evolution, an adaptive process which may be applied to the cellular computing paradigm. Other such adaptive processes, inspired by biology include self-organisation or learning but these processes will not be investigated further herein. An adaptive process e.g. evolution, is part of the system specification. The adaptive method is promising (Garzon et al., 2000; Sipper, 1997) as a programming or design technique for cellular computation. However, the use of evolution is limited due to the inherent scalability problems with respect to evolving large complex solutions on a cellular computing machine. Looking again at biology one can see that nature has found a solution for building highly complex organisms. Multicellular organisms consist of a large number of cells running their own cell cycle in parallel so as to keep the organism alive and functional. A single cell may be said to be the simple building block of living organisms. The arrangement of these simple cells may form a multicellular organism, complex in both its composition and behaviour. As such, either development alone, or in combination with evolution could be suitable design methods for a cellular computing machine. Although much of the results of this work are of a general nature with respect to achieving complex solutions by the application of development on a cellular computing machine, the focus herein is towards the design of digital circuits. In today’s rapidly improving Very Large Scale Integration (VLSI) technology, the design productivity gap is a well known fact. How can the design community utilise the design capacity that technology is offering and at the same time ensure its correctness (ITRS, 1997; ITRS, 2003)? Evolvable Hardware — the application of evolution to circuit design, (Higuchi et al., 1994) offers a design approach where the functional correctness of the circuit may be evaluated through the phases of its creation i.e. fitness evaluation is applied to all individuals. However, the application of evolution to circuit design has again confirmed the inherent challenge of scalability recognised in the field of evolutionary computation. Natures way of building complex multicellular organisms through development may help us to handle the
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.2
Building Cellular Computation Machines Inspired by Nature
3
difficulty of designing complex circuit solutions (Kumar and Bentley, 2003b). The principles of cellular computation are appealing from a hardware point of view. As the size and speed of silicon chips increases, the physical speed of signal propagation is a growing limiting factor of possible overall speed in designs (ITRS, 2003).Global communication has high energy and resource costs in both biological and silicon systems (Maher et al., 1989). As such, a reduction in global communication is required, in keeping with the cellular computing principles. Recent advances in FPGA technology would point to more complex processing units — CLBs (see section 2). However, these advances follow the trend in FPGA design where the vast inherent parallelism in FPGAs is not exploited. To exploit parallelism and maximise computation, simpler processing units combined with local communication is the answer sought in this work and, as such, a cellular computing architecture is proposed. It should be noted, however, that although a cellular computing architecture, on existing silicon technology provides a technology available today, future circuit design may be on other technologies. That is technologies designed for the cellular computing principles such as those based on molecular and biological materials. Approaches to cellular computing involving molecular and biological materials may be found in Amos (Amos, 2004) and future hardware technologies can be found in Bio-Molecular Computing (BMC) (Garzon et al., 2000). For such technologies the principles of traditional design process may not be suited to bring out the potential of these technologies (Miller and Downing, 2002) The work presented herein, presents the cellular computation machine i.e. a silicon based FPGA platform with a cellular computing architecture on top. The adaptive method applied is artificial development. Artificial development is a relatively young field. Although simple digital circuits have been developed i.e. (Miller and Thomson, 2003) and larger, non functional structures such as the French Flag (Miller, 2003) and (Roggen and Federici, 2004), the authors believe that it is very important for the expansion of this new field that a greater understanding of the development process itself is gained. In earlier work (Haddow et al., 2001), a combination of evolution and development was applied to the development of digital circuits. These results indicated that there were many issues within both evolution and development that needed to be addressed. Although some knowledge may be gained from evolving and developing solutions, the authors believe that it is hard to identify and solve problems within development without separating evolution from the equation. One approach to this is to apply theoretical analysis to development algorithms, such
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.3
4
Gunnar Tufte and Pauline C. Haddow
as in (Lehre and Haddow, 2003) or practical analysis such as in (van Remortel, 2004) and (Tufte and Haddow, 2003a). The developmental approach presented, herein, is of a practical nature. The article is laid out as follows: In section 2 an introduction to reconfigurable technology is given. Section 3 explains the basic mechanisms of biological development. In section 4, a description of how biologically inspired design techniques may be applied to digital design as well as some of the challenges using today’s reconfigurable technologies as the underlying technology platform are presented. Cellular architectures and how they may be implemented in reconfigurable technology are presented in section 5, including a description of the Virtual Sblock FPGA. In Section 6, the developmental model is introduced. Section 7 gives some experimental results showing how structural and behavioural properties emerge when cellular architectures are developed. Section 8 discusses hardware implementation of cellular arrays and development processes. Finally, section 9 concludes the work.
2. Reconfigurable Technology Contrary to an Application Specific Integrated Circuit (ASIC) the functionality of an electronic circuit, implemented in reconfigurable technology, may be altered or rather reconfigured both during design time and after production. The number of reconfigurations and how reconfiguration can be performed are determined by the chosen reconfigurable technology. Devices are available for both digital and analogue design. FPGAs are the most general purpose reconfigurable digital devices. In digital Evolvable Hardware (EHW), FPGAs may be seen to be the target technology, providing a reconfigurable platform and commercially available chips. Figure 1 shows the architecture of a modern FPGA, the given FPGA is a Xilinx Virtex-E (Xilinx, 2002). The architecture consists of arrays of Configurable Logic Blocks (CLBs); fast Block RAM (BRAM) placed in-between the CLB arrays; IOBs around the perimeter of the chip and dedicated clock resources – digital DelayLocked Loops (DLLs). The CLBs are, as shown surrounded by routing resources. The routing resources are hierarchical, built up of local routing between CLBs (shown in grey) and non-local lines of different lengths arranged in a horizontal and vertical routing network (indicated in black). It should be noted that the routing resources available are vast and, therefore, the routing lines indicated are a simplification of the quantity of lines actually available. The CLBs in the Virtex-E consists of two identical slices. The content of one CLB is as shown where a
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.4
5
Building Cellular Computation Machines Inspired by Nature
slice includes two LUTs as function generators or memory and two Flip-Flops as storage elements. In addition, control logic implements carry chains, set-ups the LUTs as boolean functions or memory, and the BRAM as memory or as shift registers. DLL
DLL
CLB
CLB
CLB
CLB
CLB
CLB
IOBs
CLB Array
BRAM
LUT
BRAM
CLB Array
BRAM
CLB Array
IOBs
BRAM
VersaRing I n p u t
CTRL FF
LUT
O u t p u t
CTRL FF
Slice 1 Slice 0 LUT
CLB
DLL
CLB
CLB
DLL
FPGA
CTRL
I n p u t
FF
LUT
CLBs and hierarchical routing resources
O u t p u t
CTRL FF
Logic resources in a CLB
Figure 1. Architecture of a modern FPGA, Xilinx Virtex-E series.
Configuration of a chip means programming a chip from a stream of data bits, where the configuration format is specific to the given chip type. Some devices offer the possibility to configure part of the chip i.e. partial configuration, enabling a portion of the chip to be reconfigured whilst the remaining parts of the chip retain their current configurations. FPGAs are both expanding in size i.e. increasing the number of combinational logic blocks per chip; increasing the complexity of these blocks and introducing vast and varied routing resources. The effect of these features on the configuration data (phenotype) is a large increase in configuration data i.e. a larger phenotype. A larger phenotype implies a larger genotype.
3. Biological Development In biological development, and initial unit — a cell, holds the complete building plan (DNA). It is important to note that this plan is generative — it describes how to build the system, not what the system will look like. Units have internal state, can communicate locally, can move, spawn other units or die. Groups of units may also exhibit group-wise behaviour i.e. a group state. The global developmental stages from the zygote (fertilised egg) to the multicellular organism, although interdependent and not strictly
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.5
6
Gunnar Tufte and Pauline C. Haddow
sequential, may be categorised as pattern formation; morphogenesis; cell differentiation and growth (Wolpert, 2002). During pattern formation cells are organised in different regions according to their cell types (set of cells with the same gene activity pattern) in order to become distinct parts (body segments) of the emerging organism. One could say that this is a group-wise change of state due to activation of certain codes after local communication or reaction to globally available signals. Some cells may change shape (expand/contract) exerting a force on other cells. This process is termed morphogenesis and is crucial in the formation of general shape in the organism. The differentiation process is where cells become structurally and functionally different from each other. This includes both intra-cellular factors (cell lineage) and inter-cellular interactions (cell induction). The final step is growth. This is the true enlarging of the almost completely formed organism. This is achieved by multiple cell divisions and expansions. During growth, programmed cell death or apoptosis can help generate special structures like fingers and toes from continuous sheets of tissue. It should be noted that development is a continuous process that does not stop once the organism is fully matured. Development continues during the lifetime of the organism enabling adaptation to changing environments and self-repair.
4. Biological Inspired Design Methods The POE-model (Sanchez et al., 1996) has been established as a taxonomy of biological inspired hardware. The POE-model classifies biological inspiration in the design of computing machines along three axes: phylogeny, ontogeny, and epigenesis. The phylogeny axis encompasses evolution. Ontogeny embraces systems taking advantage of inspiration from biological development. Systems capable of acquiring and exploiting information i.e. learning, are placed along the epigenesis axis. A common property for designs exploiting ontogeny and epigenesis, is the ability to shrink the level of information needed to form a large complex organism (Tyrell et al., 2003). There are different schools of evolutionary EAs including: genetic algorithms (Holland, 1975); genetic programming (Koza, 1990) and evolutionary strategies (Rechenberg, 1973). These are all inspired by the same principles: selection, mutation, recombination and fitness assignment. The problem in hand is represented (encoded) as a genotype and a fitness function is designed to represent qualities required in
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.6
Building Cellular Computation Machines Inspired by Nature
7
the sought after solution. A population of individuals (instances of the genotype) is created and through a process of selection, mutation and recombination new individuals are created. The fitness function is used to assess the quality of a newly created individual and this fitness value is used by the selection process. EAs are search engines, searching for the ultimate solution, expressed in the fitness function. They may be used to optimise existing (known) solutions or to explore for new solutions for unsolved problems. EAs typically use a one-to-one mapping from genotype to phenotype. That is, the solution generated by the EAs may be directly mapped to the medium that the solution was designed for i.e. configuration data for an FPGA. This means that all properties of the phenotype will need to be directly encoded in the genotype. A complex phenotype will, therefore, require a complex genotype. If one considers complex properties in nature, such as the ability to learn through interaction with the environment and the ability to adapt and protect oneself (immune system), one would expect these to be directly encoded in the genome. However, these properties are acquired and advanced as the organism develops. The compact genome, in nature, is achieved by a complex development process or mapping. EAs are resource-greedy and accompanied by direct mapping, suffer from a scaling problem (Droste et al., 2003). Scalability is the property of a method or solution to keep on performing acceptably when the problem size increases. Acceptable performance may be said to be a non-exponential resource increase and performance decrease. One solution to the resource greedy nature of evolution is to follow nature’s example and shrink the genotype in some way. This may be stated as the genotype challenge, finding new forms of representation for evolving complex circuits. Natures way of handling complexity clearly points in the direction of a non one-to-one mapping from genotype to phenotype. Shrinking the genotype effectively moves some of the complexity over to the genotype-phenotype mapping, thus increasing the complexity of the mapping. One, therefore, needs a development process that can handle such a complex mapping. However, one can expect that although the smaller genotype will aid evolution by requiring significantly less resources during evolution, the representation challenge remains. Exploiting properties of developmental mapping for evolutionary design mainly follows two different paths. The first is to achieve a realistic model of development so as to gain an understanding of the biological development phenomena itself (Kumar and Bentley, 2003a; Bentley, 2003). The second is inspired by biological development but without biological realism as a goal. In the latter, developmental map-
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.7
8
Gunnar Tufte and Pauline C. Haddow
pings are used to increase the power of evolutionary computation or EHW (Mange et al., 2000; Haddow et al., 2001; Gordon, 2003; Tyrell et al., 2003; Miller and Thomson, 2003; Tufte and Haddow, 2003b). Using FPGAs in biological inspired systems may be said to introduce a technology to a design methodology that it was not created for. FPGAs do provide a reconfigurable platform, essential for realistic evaluation of individuals and chips are commercially available. However, are today’s FPGAs ”evolution and development friendly”? Do they exhibit features which enable us to fully utilise our biologically inspired design methods? Today’s FPGAs offer more and more resources, requiring more and more configuration data, thus requiring a large genotype. In Figure 2, the actual resources used by a simple adder are shown on the left. On the right, the available resources on the same FPGA are shown. To illustrate the resource usage consider the available logical recourses in an FPGA — shown in Figure 1. If only logic resources are considered, the simple adder uses 24 out of 1536 LUTs and 8 out of 1536 flip flops. When it comes to routing resources, only a fraction of the available resources are used. To configure the adder, all resources must be given a valid configuration i.e. configuration data for all resources on the chip, must be downloaded to the chip whether they are used or not. Note that today’s large FPGAs have resources in the order of roughly 100 times the numbers in this example. Circuits composed of a large number of interconnected functional units — large circuits, require a large genome to express them. Complex circuits i.e. circuits with complex functionality, whether small or large, demand a good genome representation which handles the effects of epistasis (inter-gene interaction) during evolution. The goal of this work is to achieve large complex circuits and these two factors effect the efficiency of the evolution process. An added factor which slows down the evolution process is the slow configuration interface to todays FPGAs. Evaluation is, therefore, very slow and in fact evolution of large complex designs is unrealistic. Partial reconfiguration in the newer FPGAs simplifies, but does not remove, this problem. Introducing a simpler architecture, requiring a vastly reduced configuration data will reduce, but again not solve, the resource-greedy evolution process. As stated, the addition of an indirect mapping will drastically reduce the size of the genotype and combined with a simpler architecture that is more ”evolution and developmental friendly” than an FPGA, will reduce the complexity requirement of the development process. To achieve this goal, the ”development and evolution friendly” architecture will require features enabling typical development pro-
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.8
Building Cellular Computation Machines Inspired by Nature
FPGA resources used by design
9
Avilable FPGA resources
Figure 2. The FPGA resource usage of a simple design (left) compared to the FPGA resources available (right).
cesses to be easily represented. As stated, development consists of pattern formation, morphogenesis, cell differentiation and growth. The architecture needs be cell-based, enabling an organism to grow up to the size of the cell-grid. Each cell needs to be able to communicate locally with its neighbours. Each cell must be programmable so as to achieve differentiation both with respect to functionality and structure i.e. connectivity to the neighbours. A cell needs a type i.e. a way it reacts to input signals. To achieve morphogenesis a cell needs to either change shape — not possible directly in silicon technology, or it needs to give the illusion of change of shape by expanding over other cells. These features are all achievable in the platform used herein: the Virtual Sblock FPGA (Haddow et al., 2003).
5. Cellular Architecture Construction of cellular architectures involves an abstraction from the complex organisms in nature. Whether biological material is used to achieve computation or the ”architecture” of living organisms is used to inspire cellular computing architectures, one has to abstract from natures reality. BioSpice (Weiss et al., 2004) is an example of a simulation tool providing models of cells and cell communication at different levels of abstraction. The choice of abstraction level is a trade-of between more realistic biological information in the model i.e. a lower abstraction level, and the available computation power (De Jong et al., 2003). In in-vivo experiments, specific cell properties may be chosen to express computation i.e. Wakabayashi and Yamamuras exploring communication properties of bacteria as ”hardware” for logic gates (Wakabashi and Yamamura, 2004).
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.9
10
Gunnar Tufte and Pauline C. Haddow
The cellular architecture herein is an architecture taking inspiration from the properties of biological systems. The technology chosen is silicon with its application of digital electronic circuits.
5.1. Silicon Cellular Architectures Functionality of an organism is an interpretation of the organism’s topology. Traditionally, an electronic circuits topology may be viewed as an interconnection of components with defined inputs and outputs. The circuit’s functionality can be found by tracing the inputs to the outputs through the intermediate gates. Developmental model results that follow this interpretation may be found in (Miller and Thomson, 2003; Gordon and Bentley, 2002; Hemmi et al., 1996; Koza et al., 1997). In this work, a cellular automata (CA) (Burks, 1970) interpretation is chosen. A CA architecture for development is used in (Miller, 2003). In the work, herein, the CA is a true parallel interpretation for both development and behaviour. The CA i.e. the complete circuit, starts from some initial condition (interpreted as the input) and runs for a number of interactions to some final condition (interpreted as the output). This is the most common interpretation of CA computation (Mitchell et al., 1993) and is used in (van Remortel et al., 2002a) and (Tufte and Haddow, 2003b). The main reason for rejecting the more traditional digital design approaches with cells routed together is the high demand on structural detail. A traditional circuit has input and output ports (or at least one output port) and to be able to evaluate the functionality, test vectors must be applied to the input ports and the response on the output port monitored. This implies that the development process must create circuits with a structure that connects to the input and output terminals to be able to monitor the functionality. Such a structure is sensitive to small local changes i.e. if the output port is not connected to the developed organism, there is no response. This problem was identified in earlier development work (Haddow et al., 2001). A CA-like organism does not have the same sensitivity to such small local changes, the output of a CA is still observable since the monitoring of the output is based on the state pattern produced by all cells in the cellular array. Other elements that effect the abstraction level for the architecture of the silicon cellular computer are the needs of the target experiment or application. The definition of cellular architecture in such cases may be driven by the urge to find an architecture that exploits the target technology so as to optimise for certain properties i.e. as many cells as possible (Haddow and Tufte, 2001); evolution and development friendly
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.10
Building Cellular Computation Machines Inspired by Nature
11
architectures (Haddow et al., 2003) or architectures capable of general computation (Sipper, 1997). The use of a non-biological technology to realise cellular architectures provides an opportunity to include properties found in biological systems i.e. massive parallelism, large number of elements and local communication, in a non-biological setting. The technology chosen for realisation is FPGAs. As such, properties found in silicon technology, not present in biological systems, may also be exploited e.g. reliable components (cells); processing speed and precise computations (Mead, 1989). Contrary to biological systems with both continuous time and signal levels, digital circuits operate in discrete time intervals. The discrete operation of signal levels and signal updates assures precise computation. However, it also reduces the amount of information that can be transferred on a single line due to only two signal levels: logical 1 and 0, and that cellular updates are done at given time intervals. FPGAs offer one clear advantage over biological technologies — they are commercially available today. FPGAs provide an existing platform, although not designed with bio-inspired methods in mind, it may be tuned for this purpose, providing an available testing platform for investigating the cellular computing paradigm together with evolution and development. The vast resources of the FPGA enable a large parallel platform which development experiments can be tested out on. 5.2. The Sblock Architecture The Virtual Sblock FPGA (Haddow and Tufte, 2001) is a technology independent platform for evolvable hardware. The key feature is a more evolution and development friendly hardware platform for evolving digital circuits than that which is offered from commercial FPGAs. However, the platform may be mapped onto today’s FPGAs. The Virtual Sblock FPGA contains blocks — Sblocks (Haddow and Tufte, 2000) — laid out as a symmetric grid where neighbouring blocks are connected. Each Sblock neighbours onto Sblocks on its four sides (north N, east E, south S and west W). The output value of an Sblock is synchronously updated and sent to all its four neighbours — its von Neumann neighbourhood, and as a feedback to itself. Figure 3 illustrates the Virtual Sblock FPGA: the grid of Sblocks; local connections between neighbouring Sblocks and the internal logic of an Sblock. Note that the only non-local routing in the Virtual Sblock FPGA is that of the global clock lines. An Sblock may be configured as either a logic or memory element with direct connections to its four neighbours or it may be configured as
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.11
12
Gunnar Tufte and Pauline C. Haddow
Reconfigurable Set N E S W
N
D
LUT
SET
Q
f Out
CLK
W
f
E
CLR
Q
Clr
S Sblock array
Sblock connections
Sblock detailed view
Figure 3. A cellular array of Sblocks in a Virtual Sblock FPGA.
a routing element. Functionality of an Sblock is defined by the content of its look-up table (LUT), a function generator capable of generating all possible five-input boolean functions. The five inputs to the LUT consist of input from the 4 neighbours and its own output value. The Virtual Sblock FPGA may also be looked at as a two-dimensional cellular automata. The cellular automata may be uniform, if all Sblocks have the same LUT configuration or non-uniform if different Sblocks have different LUT configurations. As such, the Sblock architecture is a two-dimensional cellular array where cell type refers to the functionality i.e. the LUT configuration. Cells have not only a type but also a state i.e. the output value of an Sblock (logical ”0” or ”1”). A cell’s state is determined on synchronisation of the organism based on the states of its von Neumann neighbours.
6. Development of Cellular Architecture As stated in section 1, to be able to exploit the computational power of cellular computing, new programming and design techniques are required. The adaptive methods chosen utilise artificial evolution and development. However, the focus of the following sections will be on that of artificial development. Figure 4 shows the building block of the developmental system presented herein — the cell. It should be noted, however, that the implementation of the model, whilst retaining the cell model as shown, differs from this diagram — see section 8.2. The cell is divided into three parts : the genome (the building plan); the development process (mechanisms for cell growth and differentiation) and the functional
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.12
13
N
Out
N
Building Cellular Computation Machines Inspired by Nature
Cell type from E W neighboring cells
Genome
S
Development process
W Out
N E S W
Out LUT
D
SET
Q
Out
E
CLK CLR
Q
S
Out
Functional components
Figure 4. Components of the cellular development cell model.
component of the cell (an Sblock). The genome consists of rules of how to construct the multicellular organism i.e. the cellular Sblock array. The genome is based on two types of rules i.e. change and growth rules. Cell growth is a mechanism to expand the organism and differentiation changes a cell’s type i.e. functionality. These rules are restricted to expressions consisting of the type of the target cell and the types of the cells in its von Neumann neighbourhood. The rules consist of a result (LHS) and a condition (RHS). The result part of a change rule states the type of Sblock the target is going to be changed into. The conditional part describes the type of neighbourhood Sblocks to trigger the rule. A growth rule result gives the direction of growth; grow from north Gn, east Ge, south Gs or west Gw. The conditional part describes the type of neighbourhood Sblocks to trigger the rule. Rules have the following valid conditions: valid Sblock types, dont care (DC), or empty (Z). Change rules have one restriction: a target Sblock can not be changed from an empty to a valid non-empty Sblock type. The reason behind this restriction is that we want growth to handle the expansion of the organism. Growth rules have two restrictions. First, the target Sblock must be empty – this is to prevent growing over an existing cell and, therefore, specialising the cell with a new cell type. Secondly, the Sblock to be copied into the target can not be empty. Firing of a rule can cause the target cell to change type, die (implemented as a change of type) or cause another cell to grow into it. Figure 5 illustrates the process of applying change and growth rules. A change rule has targeted the Sblock in position C. This means that
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.13
14
Gunnar Tufte and Pauline C. Haddow :Empty Sblock
: North Router
:XOR
N
W
C
N
N
E
W
C
W
E
C
S
S
change
growth
S
E
Figure 5. Change and growth on an Sblock grid.
the condition of this change rule, including types of the 4 neighbours and the target itself, match. The result of the change rule firing is that the target Sblock C is changed from a north router Sblock to an XOR Sblock. A growth rule then targets Sblock W which is an empty Sblock neighbouring the developing organism. Again its condition matches the types of its neighbouring Sblocks where the Sblock to its east has been specified with type XOR. The growth rule is applied by copying the XOR in C Sblock into the empty target W Sblock. The current cell together with the neighbouring cells control whether a rule is to be fired or not. Figure 6 illustrates the process of evaluating a rule. For each cell condition, the cell type is compared and if the condition is true then that part of the rule is active. If all conditions are active then the result will become active and the rule will fire. Activation of the result gene is expressed in the emerging phenotype according to the action specified in the result.
Result
Condition
Action
Cond
Cond
Cond
Cond
Cond
Active?
Active?
Active?
Active?
Active?
Active?
N W
C
E
S
Figure 6. Genes regulation of activation of a result gene. The conditional part activates the result gene if all genes in the conditional parts match with the phenotype.
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.14
15
Building Cellular Computation Machines Inspired by Nature
In a development genome multiple rules are present. Multiple rules imply that more than one rule of a given cell may be activated at the same time if their conditions hold. Different rules may even be active at the same time due to the don’t care possibility in the rule conditions. Figure 7 shows a genome of three rules and how the prioritisation of the rules regulate activation of the individual result part of the rules. If the first rule is activated, the second and third rule can not be activated, activation of the second rule prevent activation of the third rule. Result
Condition
Result
Condition
Result
Condition
Action
Cond
Cond
Cond
Cond
Cond
Action
Cond
Cond
Cond
Cond
Cond
Action
Cond
Cond
Cond
Cond
Cond
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Active?
Figure 7. Multiple rules in a genome showing regulation of each result within rules in continuous lines and the regulation between rules in dashed lines.
As the genome for the development process is processed autonomously for every cell, the development process will continue to alter the phenotype as long as there exists conditions to trigger a rule in any cell. Applying development, 3 different end conditions may arise. Development may seem to stop since there are no further rules to apply and the phenotype may be said to be stable. The phenotype may go into a repeating loop or the loop may be so big that it may be considered as an infinite loop. As the phenotype herein is not infinitely large then the phenotype will either be stable or go into a finite sized loop. The developed phenotype may be said to be mature. However, as stated in section 3, development is a continuing process and whether the phenotype is stable or in a finite loop the development process is still active. If fault tolerance using development is to be investigated then disturbances to the phenotype may be introduced i.e. external influence. Disturbance can be introduced through random generated noise (van Remortel et al., 2002b) which in effect selects a new type or state for a cell, or by directly changing a cell’s type or state (Mange et al., 1998). In both cases non-determinism is introduced. This topic is not pursued further in this work as the topic herein is deterministic development. A cell’s (Sblock’s) function is determined by the content of the cell’s LUT. The current state of a cell is determined by the output state of the Sblock together with the state of its von Neumann neighbours. Functionality of the organism is an interpretation of the organism’s topology. As stated, in this work a cellular automata interpretation is chosen. The CA i.e. the complete circuit, starts from some initial con-
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.15
16
Gunnar Tufte and Pauline C. Haddow
dition (interpreted as the input) and runs for a number of interactions to some final condition (interpreted as the output). The behaviour or global state of the cellular architecture is, therefore, the states of all Sblocks in the cellular Sblock array. The function and state of a cell is under the control of the development process. Cells can change type and grow during the development process resulting in an emerging organism of changing cell types.
7. Development of Structure and Functionality As stated in section 1, the goal of this work is to investigate development on a cellular architecture. As such, our goal is not to develop a one-of solution but to investigate what development can achieve with respect to structure and functionality and to gain a deeper understanding of how development should be applied to given problems e.g. digital circuits. Since the issue is ”what can development do” then experiments have included complete searches of all possible rule sets to ensure that all rules, if any, which meet the experimental goal are found. The results presented are examples of the results achieved. Three main sub-questions have been raised. What structures can development achieve? In terms of function of a general nature the goal is not looking for a precise function but an indication as to whether certain types of function are possible. So can development create some form of periodic function? The final question raised was more of a practical nature. What is the effect of the number of development steps on the phenotype produced? That is how important is it to consider this point when setting up ones development process? The topology chosen herein is a non-uniform CA. A rule generator has been applied to generate genomes for the sought structural and behavioural properties in a cellular array. The rule generator can be said to do a complete search of all possible syntactically correct three rule genomes, extracting all valid genomes. Valid genomes not only have the correct syntax but each rule set must consist of at least one growth rule and the rules apply to the restrictions described in section 6 where a change rule cannot change the type of an empty cell and for a valid growth rule, the target Sblock must be empty and the Sblock to be copied into the target Sblock must not be empty. Each growth rule, in the genome, is rewritten into the format of 4 single-directional growth rules before the genome is developed. The reason for expanding to 4 growth rules is to ensure that growth is not restricted in any direction. The rules are prioritised, rule one has
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.16
Building Cellular Computation Machines Inspired by Nature
17
the highest priority and the last rule the lowest priority. It should be noted that although each growth rule in the genome is rewritten into four growth rules, the rule generator only searches a 3-rule genome search space. The four growth rules are just a representation of the original growth rule that is more efficient for implementation of the development process. Any grown cell will acquire the type given in the original growth rule. The number of Sblock types is restricted to three types: XOR — xor function of its four neighbours, East Router (ER) — a router function forwarding its east input signal to its output, and a threshold element (T ≥ 1) — giving out a ”1” if one or more of its neighbours outputs a ”1”. This restriction, of course, limits the number of rules generated by the rule generator and, therefore, ensures that a search of these rules can be conducted within a reasonable time frame. To further limit resource use, the maximum size of the grid was restricted to 4x4. Limiting the number of types in such a small grid is also desirable so that patterns will be easier to recognise. 7.1. Development of Structure In the search for structural properties, the number of development steps was not limited by a fixed amount of development steps. A detector that compared the current structure of the organism with previous structures of the emerging organism was implemented. After each development step, the structure achieved was compared with the structure of the previous step. If these matched then a stable structure had been found and development was stopped. On the other hand, if there was no match then the current structure was compared to all previous structures from the earlier development steps to identify a matching structure. If a match was found, then due to the deterministic development process, the structure of a further development step is obvious and therefore a repeating structural pattern is found and development is stopped. If there is no match, the process is repeated until either a match is found for a stable structure or a repeating pattern. This approach ensures that all genomes either develop to a stable structure or a periodic structure before development is terminated. This enables all structures that may arise to be identified. This process is, of course, resource greedy as it requires that the detector can retrace all previous structures looking for a match. However, limiting the numbers of cells in the grid made the experiments feasible. In Figure 8, development of an organism with structural properties is shown. The organism develops from a single cell (axiom), shown in the initial condition. After two development steps, the organism has
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.17
18
Gunnar Tufte and Pauline C. Haddow
RuleOne: RuleTwo: RuleThree: RuleFour: RuleFive RuleSix
Result C S E N W Gs Z XOR DC DC DC Ge Z DC XOR DC DC Z DC DC XOR DC Gw Z DC DC DC XOR Gn Z DC DC T>0 DC Z ER DC DC XOR DC DC
Z: Empty Sblock
XOR
East router
Initial condition
Developmental step 2
T 1
Developmental step 5
Figure 8. Example of development to a symmetric organism: rule set (genome) — left, emerging organism — right.
grown from the axiom to eleven Sblocks and differentiated to consist of all three Sblock types. At the fifth and final development step, the organism has developed into an organism with two symmetrical patterns. The experiments and results illustrate that rules may be found to create symmetrical patterns, a useful feature in digital circuit topology. Of course, the possible patterns achievable may depend on the size of the grid and of course the genotype itself. Further investigation is, therefore required to identify what patterns are possible. However, a complete search, like those conducted is not possible with a much larger grid. Other means of identifying possible patterns will need to be investigated. 7.2. Development of Functionality In these experiments the goal was to see what type of functionality could be achieved within the restrictions of the limited grid size and format of the genotype. In particular, some kind of indication as to whether sequential circuits could be developed was sought. Functionality of a developed system is of course of two types. Either the phenotype is in a stable state, where there is a fixed function or the phenotype is in a periodic state where the function is periodic. In Figure 8, the organism was developed in five development steps. As such, it is in a stable state. Introducing input information to the topology implies forcing the state of one or more of the cells to a given value. The new states will cause parallel interactions across the Virtual Sblock FPGA and a number of state steps until a stable function (output pattern) is found. That is, the functionality of the organism is expressed through the introduction of input and examination of the resulting output. In the functionality experiments, a complete search of all genomes was again conducted. The genome represented in Figure 8 is, of course, one of these genomes searched. Instead of looking for varying structures,
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.18
Building Cellular Computation Machines Inspired by Nature
19
this time the search was for varying functionality. In particularly, periodic functionality. In these cases, input (initial condition) was applied before development started, allowing the effects of the input to effect each development step of the development process. The initial condition is applied before development starts. This means that all Sblocks are set or reset depending on the given initial condition. To avoid empty Sblocks updating their output values from their von Neumann neighbourhood, all Sblocks of type Empty are set to update their outputs based on only their own output value at the previous clock pulse i.e. a resident state approach is used (Aase, 2003). As such, a given empty Sblock will retain its initial state until the emerging organism grows into it, replacing its empty type with the type of the cell that it has grown from. The output state of the Sblock is now decided by the functionality given by the cell type. Without this feature, the CA might not produce other patterns than all set to ”0” or generate an output pattern independent of the initial pattern i.e. function more like a signal generator. Two initial conditions were chosen for the experiments. The first pattern involves setting the output of one given Sblock and resetting all others. In the second, an alternating bit pattern is chosen i.e. alternative Sblocks have their outputs set or reset. Note that both of these initial states are easy to scale for different sizes of Virtual Sblock FPGAs. Similar to development of structure, a dynamic number of development steps was used. To ensure that all possible behaviours for every genome were examined, a periodic detector was used. As such, both the number of development steps and state steps were dynamic. The periodic detector detected if a structure with the specific state pattern had been seen before. As for development of structures in Section 7.1, the limited number of cells chosen enable a periodic detector to examine every state of every development step. Figure 9 illustrates the output pattern of one of the developing organism from a given rule set (genome). The counting behaviour was defined as the number of ”1”s in the Virtual Sblock FPGA, increasing by one for each state step. A single bit initial condition was introduced to the Virtual Sblock FPGA i.e. one Sblock was set and all other Sblocks were reset before development began. This is illustrated by a single Sblock set to ”1” in the shown structure of the first development step. The vertical axis represents the development steps (DS) and the horizontal axis represents the state steps (SS) i.e. the clock pulses. As stated, the number of development and state steps was not restricted and, therefore, the number of state steps vary for each development step. The diagram illustrates only the first 45 state steps for a given development step for ease of illustration. The height of a bar at each
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.19
20
Gunnar Tufte and Pauline C. Haddow
T1 XOR Z: Empty Sblock Onec
Development step (DS) 1 Number of ’1' in array = 1
1 11 1
1
Num ber of ’1' in array
1
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 SS
Development step (DS) 2 Number of ’1' in array = 5
7
8
9
10
11
12
13
14
15
State step number
Figure 9. Example of functionality in a developing organism using a fixed number of state steps. The developing structure for development step 1 and 2 are shown. The counting behaviour at development step 8 is shown on an enlarged scale.
step represents the number of Sblocks in state ”1” at the given state step. At DS1, the Sblock which was initialised with output value ”1” is the only Sblock in state ”1” in the organism. The number of ”1”s increase as the development process runs. At DS8, the behaviour of the organism is changed from giving out a fixed number of ”1”s to a counting behaviour — repeating a counting sequence of 12, 13, 14, 15. This behaviour stops at DS13 and a stable number of ”1”s is again observed across the state steps. It should be noted that the number of ones at each development step is effected by the state of the grid at the final state step of the previous development step i.e. not necessarily the 45th step. The counting behaviour illustrates a sequential behaviour and an indication that sequential circuits could be developed. As stated, the final state step effects the state of the first state of the next development step. The next set of experiments considered what effect the choice of the number of state steps would have on the developed phenotype. Here, instead of allowing the number of state steps to continue until no further state updates were required, the number of state steps was fixed. Figure 10, illustrates the effect of changing the number of state steps from 77 to 78 per development step. The organism develops to an organism with no observable counting behaviour when the number
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.20
Building Cellular Computation Machines Inspired by Nature
21
DS1 DS2 DS3 DS4 DS5 DS6 DS7 DS8 DS9 DS10 DS11 DS12 DS13 DS14 DS15 DS16 DS17 DS18 DS19 DS20 77 State steps
78 State steps
Figure 10. Example functionality in an organism developing using two different number of state steps on each development step.
of state steps was set to 77. However, as shown, counting behaviour emerges at development step 11 and disappears again at step 12, if the number of state steps is increased to 78. This result indicates that the number of state steps effects the resulting functionality and that a given function may appear and then disappear during development. It is worth noting that there are a variety of functions being represented at the different development steps. This would indicate that the same genome can generate different functions.
8. Cellular Machines Cellular architectures are an appealing architecture for hardware. With local communication one gets the advantages of low and equal signal propagation delay (Hammerstrom, 2000) and no global signals causing bottlenecks (Ho et al., 2001). Simple uniform elements combined with local communication ensures that all parts of the system are equally influenced by scaling (Sipper, 1999) and uniform elements also enable an increase in integration (Tzionas et al., 1994).
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.21
22
Gunnar Tufte and Pauline C. Haddow
Realising cellular architectures in artificial medias such as silicon technology is motivated by exploitable features of the hardware not available elsewhere e.g. massive parallelism, (Sipper et al., 1997; Tufte and Haddow, 2003a). However, physical resources in hardware are limited and, as such, these resources must be carefully utilised to exploit the hardware to the maximum advantage of the goal sought (Tufte and Haddow, 2004). In the work herein the goal is to explore behavioural properties of a cellular architecture using development. In a cellular array of cells where the genome, development process and functional units are included in each cell, a VLSI (Mange et al., 1998) or FPGA implementation (Mange et al., 2000) are possible approaches to development of cell based circuits. Another approach is to simplify each cell, in keeping with the properties of cellular architectures, by removing the genome and development process from the cell itself (Tufte and Haddow, 2004) thus increasing the parallelism available in the CA grid. The principle of a common genome is still retained as all the cells’ development actions are controlled by the same shared genome even if it is not stored in every cell. The genome and the development process may either be moved to software (Haddow et al., 2001) or to a central hardware unit (Tufte and Haddow, 2004). The latter approach is pursued herein. One disadvantage of this approach is with respect to fault tolerance as the centralised processes can not be reorganized to overcome faults. However, an advantage of this implementation is that scaling of the cellular array is not influenced by genome size and possible cell types. If one considers the addition of an extra rule costing resource X, then the cost of adding this new rule to a distributed implementation would cost XxN where N is the number of cells in the grid. Whilst fault tolerance is not a current goal, then a central implementation which frees resources for increased parallelism is the path chosen. 8.1. Cellular Machines in Reconfigurable Technology Reconfigurable technology offers a flexible and relatively cheap implementation medium compared to ASIC. In the Sblock cellular array it is easy to change the content of the LUTs of the Sblocks so as to change cell type. As such, an FPGA realisation can be changed from a uniform to a non-uniform CA by simply reconfiguring the LUTs. The underlying architecture of FPGAs i.e. the 2-d array of CLBs, may be considered as a cellular array itself but with complex cells. An Sblock fits into one CLB slice (Haddow and Tufte, 2001), enabling 2 Sblocks within a single CLB (based on Virtex FPGA architecture) and a maximum grid size two times the CLB grid in the FPGA i.e. for Virtex 1000E FPGA:
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.22
Building Cellular Computation Machines Inspired by Nature
23
12288 cells (Xilinx, 2002). However, as stated, FPGA implementations suffer from, not only slow reconfiguration, but also the lack of adaptive programming and design techniques. 8.2. Emerging Cellular Hardware The developmental process used herein is an on-chip process requiring no external reconfiguration during the development process. As such, the structure and functionality of the phenotype for a given genotype emerges on-chip. Sipper (Sipper, 1997) applied a similar strategy but using evolution rather than development to program the CA. In addition, the EA used was implemented in each cell, rather than the central development process implemented herein. Fixed partition
Reconfigurable partition
COM
CTRL
Sblock definition
CONFIG ReadBack
BRAM 0
BRAM 1
Rule Memory
Development Process
FPGA
Figure 11. Centralised genome and development process integrated on-chip together with Sblock reconfigurable cellular array.
Figure 11 illustrates the cellular array with a centralised genome and development process. It should be noted that for ease of reading the boxes in the fixed partition and the size of the fixed partition has been increased considerably compared to reality. The fixed partition, in the experiments herein, is about 15% of the resources of the Xilinx chip used. The cells share a common genome stored in the rule memory, using a symbolic representation for the Sblock types. All developmental actions of all cells are described in this centralised genome. The Sblock definition unit stores the allowed Sblock configurations i.e. the possible Sblock types. The two BRAM modules are temporary storage used to speed up the development process. In a cellular system the number of state steps is much larger than the number of development steps.
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.23
24
Gunnar Tufte and Pauline C. Haddow
Trading-off resource usage, it was chosen to prioritise the state update process as a massively parallel operation at the cost of a sequential development process. However, the development process is implemented as a development pipeline capable of reading the neighbourhood and running a development step on two Sblocks each clock cycle (Tufte and Haddow, 2004), due to its direct access to the LUTs in every Sblock. The development processor provides an instruction set tuned to processing development on an Sblock array and to run the state steps of the Sblock array. In addition, the processor can control readback of information from the Sblock array. Following the idea of using a building plan as a genome, the only configuration data needed are the instructions of how to build the phenotype i.e. the rules in the genome. The on-chip development processor then develops a phenotype in the on-chip Sblock cellular array. The use of a processor design as reconfiguration logic has several advantages. The two most important features are: the speed of reconfiguration due to the compact rule representation and the high speed configuration of Sblocks due to the design of the development processor’s development pipeline. Another flexibility is the possibility to write small programs. Such programs may be setting a number of development steps and/or clock cycles to run the Sblock array. Programs can also be used to monitor the Sblock array during the development process i.e. read out the state and cell type of all or specific Sblocks. The hardware used in this project is a cPCI host computer and a Nallatech BenERA (Nallatech, 2002) cPCI FPGA card featuring a Xilinx XCV1000E-6 (Xilinx, 2002).
9. Conclusion In this work, an adaptive method for designing a cellular computing machine (CCM) has been addressed, implementing the CCM on an existing silicon technology — FPGA. Both the computation philosophy of cellular computation and the method for designing such an architecture are biologically inspired. The design method involves artificial development. Future work will extend the design method to include evolution where development is used to exploit the power of evolution and, as such, reduce the scalability limits of evolutionary methods. Some of the challenges facing the silicon technology industry have been highlighted and cellular computing is suggested as a possible solution to some of these challenges. A cellular computing architecture has been implemented on an existing FPGA technology by introducing a virtual Sblock FPGA more suited to both cellular computing and bio-
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.24
Building Cellular Computation Machines Inspired by Nature
25
logically inspired design techniques. The virtual Sblock FPGA exploits the available parallelism on existing FPGAs and provides more parallelism, purely local communication (apart from global clock lines) and simple processing units, in keeping with cellular computing principles. The biologically inspired design methods: evolution and development, have been addressed as possible design methods for cellular computing machines. Particular emphasis has been given to development. Results of experiments run on the cellular computing machine indicate that the development model presented can achieve either a steady structure or a repeated pattern of structures in the developed organism. Further, results showed that the development model could achieve simple functions such as a counter. However, such functions can appear and disappear as development progresses. Further investigation looked at the effect of varying the number of state steps in a development step. Here it was found that the number of state steps effects the functionality that can be developed and that again the functionality may appear and disappear. Future technologies such as Bio-Molecular Computing provide strong contenders for future cellular computing machines. However, silicon technology is available today and may be exploited as a cellular computing machine, enabling bio-inspired techniques to be investigated on larger parallel platforms.
References Aase, S. A. (2003). Investigations into knowledge rich approach to rule based development on an sblock platform. Master’s thesis, The University of Science and technology, Norway. Amos, M. (2004). Cellular Computing. Oxford University Press. Bentley, P. J., editor (1999). Evolutionary Design by Computers. Morgan Kaufmann Publishers,Inc, San Francisco, USA. Bentley, P. J. (2003). Evolving fractal proteins. In 5th International Conference on Evolvable Systems (ICES03), Lecture Notes in Computer Science, pages 81–92. Springer. Burks, A. W. (1970). Essays On Cellular Automata. University of Illinois Press. Chua, L. and Yang, L. (1988). Cellular neural networks: applications. IEEE Transactions on Circuits and Systems, 35(10):1273–1290. De Jong, H., Geiselmann, J., and Thieffry, D. (2003). Qualitative modelling and simulation of developmental regulatory networks. In Kumar, S. and Bentley, P. J., editors, On Growth, Form and Computers, pages 109–134. Elsevier Limited Oxford UK. Droste, S., Jansen, T., Rudolph, G., Schwefel, H., Tinnefeld, K., and Wegner, I. (2003). Theory of evolutionary algorithems and genetic programming. In Schwefel, H. P., Wegener, I., and Weinert, K., editors, Advancec in Computational Intelligence Theory and Practice, pages 107–144. Springer.
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.25
26
Gunnar Tufte and Pauline C. Haddow
Garzon, M., Drumwright, E., Deaton, R. J., and Renault, D. (2000). Virtual test tubes: A new methodology for computing. In Seventh International Symposium on String Processing Information Retrieval (SPIRE’00), pages 272–281. IEEE. Gordon, T. G. W. (2003). Exploring models of development for evolutionary circuit design. In 2003 Congress on Evolutionary Computation (CEC 2003), pages 2050– 2057. IEEE. Gordon, T. G. W. and Bentley, P. J. (2002). Towards development in evolvable hardware. In the 2002 NASA/DOD Conference on Evolvable Hardware (EH02), pages 241 –250. Haddow, P. and Tufte, G. (2000). An evolvable hardware FPGA for adaptive hardware. In Congress on Evolutionary Computation(CEC00), pages 553–560. Haddow, P. C. and Tufte, G. (2001). Bridging the genotype-phenotype mapping for digital FPGAs. In the 3rd NASA/DoD Workshop on Evolvable Hardware, pages 109–115. Haddow, P. C., Tufte, G., and van Remortel, P. (2001). Shrinking the genotype: L-systems for ehw? In 4th International Conference on Evolvable Systems (ICES01), Lecture Notes in Computer Science, pages 128–139. Springer. Haddow, P. C., Tufte, G., and van Remortel, P. (2003). Evolvable hardware: pumping life into dead silicon. In Kumar, S. and Bentley, P. J., editors, On Growth, Form and Computers, pages 404–422. Elsevier Limited Oxford UK. Hammerstrom, D. (2000). Computational neurobiology meets semiconductor engineering. In 30th IEEE International Symposium on Multiple-Valued Logic, Lecture Notes in Artificial Intelligence, pages 3 – 12. IEEE. Hemmi, H., Mizoguch, J., and Shimohara, K. (1996). Development and evolution of hardware behaviours. In Sanchez, E. and Tomassini, M., editors, Towards Evolvable Hardware : the Evolutionary Engineering Approach, volume 1062 of Lecture Notes in Computer Science, pages 250–265. Springer. Higuchi, T., Iba, H., and Manderick, B. (1994). Massively Parallel Artificial Intelligence, chapter 12. Evolvable Hardware, pages 398–421. MIT Press. Ho, R., Mai, K. W., and Horowitz, M. A. (2001). The future of wires. Proceedings of the IEEE, 89(4):490–504. Holland, J. (1975). Adaption in Natural and Artificial Systems. The University of Michigan Press. ITRS (1997). The National Technology Roadmap for Semiconductors. Semiconductor Industry Association. ITRS (2003). The National Technology Roadmap for Semiconductors. Semiconductor Industry Association. Koza, J. (1990). Genetically breeding populations of computer programs to solve problems in artificial intelligence. In Proceedings of the Second Int. Conf.on Tools for AI, pages 819–827. IEEE Computer Society Press. Koza, J., Bennett, III, F. H., Andre, D., Keane, M. A., and Dunlap, F. (1997). Automated synthesis of analog electrical circuits by means of genetic programming. IEEE Transactions on Evolutionary Computation, 1(2):109–128. Kumar, S. and Bentley, P. J. (2003a). Biologically inspired evolutionary development. In 5th International Conference on Evolvable Systems (ICES03), Lecture Notes in Computer Science, pages 57–68. Springer. Kumar, S. and Bentley, P. J., editors (2003b). On Growth, Form and Computers. Elsevier Limited Oxford UK. Lehre, P. K. and Haddow, P. (2003). Developmental mappings and phenotypic complexity. In Congress on Evolutionary Computation(CEC2003), pages 62–68. IEEE.
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.26
Building Cellular Computation Machines Inspired by Nature
27
Maher, M. A., Deweerth, S. P., Mahowald, M. A., and Mead, C. A. (1989). Implementing neural architectures using analog vlsi circuits. IEEE Transactions on Circuits and Systems, 36(5):643–652. Mange, D., Moshe, S., Stauffer, A., and Tempesti, G. (2000). Towards robust integrated circuits: The embryonics approach. Proceedings of the IEEE, 88(4):516–543. Mange, D., Sanchez, E., Stauffer, A., Tempesti, G., Marchal, P., and Piruet, C. (1998). Embryonics: A new methodology for designing field-programmable gate array with self-repair and self-replicating properties. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 6(3):387–399. Mead, C. A. (1989). Analog VLSI and Neural Systems. Addison Wesley. Miller, J. and Downing, K. (2002). Evolution in materio: Looking beyond the silicon box. In 2002 NASA/DOD Conference on Evolvable Hardware, pages 167–176. IEEE Computer Society Press. Miller, J. F. (2003). ”evolving developmental programs for adaptation, morphogenesis, and self-repair. In Seventh European Conference on Artificial Life, Lecture Notes in Artificial Intelligence, pages 256–265. Springer. Miller, J. F. and Thomson, P. (2003). A developmental method for growing graphs and circuits. In 5th International Conference on Evolvable Systems (ICES03), Lecture Notes in Computer Science, pages 93–104. Springer. Mitchell, M., Hraber, P. T., and Crutchfield, J. P. (1993). revisiting the egde of chaos: Evolving cellular automata to perform computations. Complex Systems, 7:89–130. Santa Fe Institute Working Paper 93-03-014. Nallatech (2002). BenERA User Guide, nt107-0072 (issue 3) 09-04-2002 edition. Rechenberg, I. (1973). Evolutionsstrategie: Optimierung technischer Systeme nach Prinzipien der biologischen Evolution, chapter 8–20, pages 64–145. Friedrich Frommann Verlag, Stuttgart. German. Roggen, D. and Federici, D. (2004). Multi-cellular development: is there scalability and robustness to gain? In Yao, X., Burke, E., Lozano, J., and al., editors, proceedings of Parallel Problem Solving from Nature 8, PPSN 2004, pages 391– 400. Sanchez, E., Mange, D., Sipper, M., Tomassini, M., Prez-Uribe, A., and Stauffer, A. (1996). Phylogeny, ontogeny, and epigenesis: Three sources of biological inspiration for softening hardware. In Higuchi, T., Iwata, M., and Liu, W., editors, Evolvable Systems: from Biology to Hardware, ICES 96, volume 1259 of Lecture Notes in Computer Science, pages 35–54. Springer. Sipper, M. (1997). Evolution of Parallel Cellular Machines The Cellular Programming Approach. Springer-Verlag. Sipper, M. (1999). The emergence of cellular computing. Computer, (July 1999):18– 26. Sipper, M., Goeke, M., Mange, D., Stauffer, A., Sanchez, E., and Tomassini, M. (1997). The firefly machine: Online evolware. In Proc. of 1997 International Conference on Evolutionary Computation (CEC97), pages 181–186. IEEE. Tufte, G. and Haddow, P. (2003a). Identification of functionality during development on a virtual sblock fpga. In Congress on Evolutionary Computation(CEC2003), pages 731–738. IEEE. Tufte, G. and Haddow, P. (2004). Biologically-inspired: A rule-based selfreconfiguration of a virtex chip. In 4th International Conference on Computational Science 2004 (ICCS 2004), Lecture Notes in Computer Science, pages 1249–1256. Springer.
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.27
28
Gunnar Tufte and Pauline C. Haddow
Tufte, G. and Haddow, P. C. (2003b). Building knowledg into developmental rules for circuite design. In 5th International Conference on Evolvable Systems (ICES03), Lecture Notes in Computer Science, pages 69–80. Springer. Tyrell, A., Sanchez, E., Floreano, D., Tempestti, G., Mange, D., Moreno, J., Rosenberg, J., and Villa, A. E. P. (2003). Poetic tissue: An integrated archtecture for bio-inspired hardware. In 5th International Conference on Evolvable Systems (ICES03), Lecture Notes in Computer Science, pages 127–140. Springer. Tzionas, P. G., Tsalides, P. G., and Thanailakis, A. (1994). A new, cellular automaton-based, nearest neighbor pattern classifier and its vlsi implementation. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 6(3):343–353. van Remortel, P. (2004). Investigating the Use of Development Genomes for Artificial Evolution. PhD thesis, Vrije Universiteit Brussel. van Remortel, P., Lenaerts, T., and Manderick, B. (2002a). Lineage and induction in the Development of evolved genotypes for non-uniform 2d cas. In proceedings of the 15th Australian Joint Conference on Artificial Intelligence 2002, Lecture Notes in Artificial Intelligence, pages 321–332. Springer. van Remortel, P., Lenaerts, T., and Manderick, B. (2002b). Testing the overall functional robustness of 2d ca phenotypes for development. In In Proceedings of the Fourteenth Belgium-Netherlands Conference on Artificial Intelligence, pages 259–266. Wakabashi, K. and Yamamura, M. (2004). The enterococcus faecalis information gate. In Amos, M., editor, Cellular Computation, pages 109–119. Oxford University Press. Weiss, R., Knight Jr, T. F., and Sussman, G. (2004). Genetic process engineering. In Amos, M., editor, Cellular Computation, pages 43–73. Oxford University Press. Wolpert, L. (2002). Principles of Development, Second edition. Oxford University Press. Xilinx (2002). Xilinx Virtex-E 1.8 V Field Programmable Gate Arrays Production Product Specification, ds022-1 (v2.3) july 17, 2002 edition.
naturalcomp_camrdy_sent.tex; 23/04/2005; 13:31; p.28