Digital organisms live in the memory space of computers, predominantly in the RAM memory, although they could also live on disks or any other storage device, or even within networks to the extent that the networks themselves can store information. In essence, digital organisms live in the space that has been referred to as ``cyber-space''. It is worthwhile reflecting on the topology of this space, as it is a radically different space from the one we live in.
A typical UNIX workstation, or MacIntosh computer includes a RAM memory that can contain some megabytes of data. This is ``flat'' memory, meaning that it is essentially unstructured. Any location in memory can be accessed through its numeric address. Thus adjacent locations in memory are accessed through successive integer values. This addressing convention causes us to think of the memory as a linear space, or a one-dimensional space.
However, this apparent one-dimensionality of the RAM memory is something of an illusion generated by the addressing scheme. A better way of understanding the topology of the memory comes from asking ``what is the distance between two locations in memory''. In fact the distance can not be measured in linear units. The most appropriate unit is the time that it takes to move information between the two points.
Information contained in the RAM memory can not move directly from point to point. Instead the information is transferred from the RAM to a register in the CPU, and then from the CPU back to the new location in RAM. Thus the distance between two locations in RAM is just the time that it takes to move from the RAM to the CPU plus the time that it takes to move from the CPU to the RAM. Because all points in the RAM are equidistant from the CPU, the distance between any pair of locations in the RAM is the same, regardless of how far apart they may appear based on their numeric addresses.
A space in which all pairs of points are equidistant is clearly not a Euclidean space. That said, we must recognize however, that there are a variety of ways in which memory is normally addressed, that gives it the appearance, at least locally, of being one dimensional. When code is executed by the CPU, the instruction pointer generally increments sequentially through memory, for short distances, before jumping to some other piece of code. For those sections of code where instructions are sequential, the memory is effectively one-dimensional. In addition, searches of memory are often sequentially organized (e.g., the search for complementary templates in Tierra). This again makes the memory effectively one-dimensional within the search radius. Yet even under these circumstances, the memory is not globally one-dimensional. Rather it consists of many small one dimensional pieces, each of which has no meaningful spatial relationship to the others.
Because we live in a three-dimensional Euclidean space, we tend to impose our familiar concepts of spatial topology onto the computer memory. This leads first to the erroneous perception that memory is a one-dimensional Euclidean space, and second, it often leads to the conclusion that the digital world could be enriched by increasing the dimensionality of the Euclidean memory space.
Many of the serious efforts to extend the Tierra model have included as a central feature, the creation of a two-dimensional space for the creatures to inhabit [3,15,16,53,81]. The logic behind the motivation derives from contemplation of the extent to which the dimensionality of the space we live in permits the richness of pattern and process that we observe in nature. Certainly if our universe were reduced from three to two dimensions, it would eliminate the possibility of most of the complexity that we observe. Imagine for example, the limitations that two-dimensionality would place on the design of neural networks (if ``wires'' could not cross). If we were to further reduce the dimensionality of our universe to just one dimension, it would probably completely preclude the possibility of the existence of life.
It follows from these thoughts, that restricting digital life to a presumably one-dimensional memory space places a tragic limitation on the richness that might evolve. Clearly it would be liberating to move digital organisms into a two or three-dimensional space. The flaw in all of this logic derives from the erroneous supposition that computer memory is a Euclidean space.
To think of memory as Euclidean is to fail to understand its natural topology, and is an example of one of the greatest pitfalls in the enterprise of synthetic biology: to transfer a concept from organic life to synthetic life in a way that is ``un-natural'' for the artificial medium. The fundamental principal of the approach I am advocating is to respect the nature of the medium into which life is being inoculated, and to find the natural form of life in that medium, without inappropriately trying to make it like organic life.
The desire to increase the richness of memory topology is commendable, however this can be achieved without forcing the memory into an un-natural Euclidean topology. Let us reflect a little more on the structure of cyberspace. Thus far we have only considered the topology of flat memory. Let us consider segmented memory such as is found with the notorious Intel 80X86 design. With this design, you may treat any arbitrarily chosen block of 64K bytes as flat, and all pairs of locations within that block are equidistant. However, once the block is chosen, all memory outside of that block is about twice as far away.
Cache memory is designed to be accessed more rapidly than RAM memory, thus pairs of points within cache memory are closer than pairs of points within RAM memory. The distance between a point in cache and a point in RAM would be an intermediate distance. The access time to memory on disks is much greater than for RAM memory, thus the distance between points on disk is very great, and the distance between RAM and disk is again intermediate (but still very great). CPU registers represent a small amount of memory locations, between which data can move very rapidly, thus these registers can be considered to be very close together.
For networked computer systems, information can move between the memories of the computers on the net, and the distances between these memories is again the transfer time. If the CPU, cache, RAM and disk memories of a network of computers are all considered together, they present a very complex memory topology. Similar considerations apply to massively parallel computers which have memories connected in a variety of topologies. Utilizing this complexity moves us in the direction of what has been intended by creating Euclidean memories for digital organisms, but does so while fully respecting the natural topology of computer memories.