VocExile Main Menu /Programming Topics /Cellular Computer
By Ed Perley
Computer scientists are beginning to look more closely at a radically different computer architecture commonly known as the cellular computer. In traditional computer design, all progrm instructions are queued through a single processor. A single electronic circuit, in effect, controls everything that the computer does: input/output, program executiion and internal maintenance.
A new concept, called distributed computing, allows a program to divide a task among multiple processors. A hundred PC computers linked together in this way can approach the speed of a Cray super computer. The main limitation for this system is the need to have a compiler that is smart enough to divide the work between the hundred different microprocessors for maximum efficiency.
Cellular computers carry the concept of distributed computing to the extreme. A cellular computer has hundreds or thousands of independently operating microprocessors. Each microprocessor has a very specialized function, hence a very simple instruction set. The microprocessors work simultaneously, affected only by other microprocessors that are immediately connected to them. There is no prewritten program as in distributed computers to coordinate the actions of the individual microprocessors. The result is extremely high speed and efficiency. The human brain is believed to have an architecture something like this.
Cellular computer architectures date back to the fifties. They were first used for generating high quality pseudo random numbers for statistical analysis. A possible future use is in image enhancement, in which the color of an individual pixel is dependent only on the pixels immediately adjacent to it. Another possibility is in the area of "fuzzy logic" and artifical intelligence. Database and web search engines could possibly utilize this technology.
Since I do not have the electronic expertise, money or time to build cellular computers, my goal is to write a program for my PC that will simulate the behaviour of such a device. I will use a a 32 Meg PC with a 266Mhz Processor. The JAVA programming language seems to be a good choice because of it's simplicity and it's object oriented design. The system will be quite simple, consisting of an array of cells. Each one will be capable of receiving information from eight adjacent cells. Instruction sets attached to each cell, will perform actions, according to the numerical values the cell holds. Each cell will have two instruction sets, one to respond to numerical input, and one to respond to the cell contents. There will be a central processor module that will display the status of the program, and set or modify the values held by the cells. The different components of each cell are described below.
The state registers, numbered 0 to 3 are the "heart' of the cell. The values stored here will determine what the cell will do, depending on it's internal instruction set.
The input registers, numbered 0 to 7, allow the cell to communicate with other cells. These link each cell to the eight cells adjacent to it.
The master I/O register can be used to transfer information to and from the the control module.
The Internal instruction set determines how the state register contents will change according to the registers' current contents. It also will determine what information, if, any, the cell will transmit to adjacent cells.
The input instruction set determines how input from adjacent cells will affect the contents of the state registers.
A PC computer can not duplicate a computer architecture in which hundreds of cells are processing and transferring information simultaneously. The process can be simulated by defining three operating modes that the computer will rapidly cycle through.
A cell will perform certain actions, dependent on the contents of it's state registers. A decision instruction set will determine what action will be taken. Values in one or more states registers can be changed and/or numbers can be placed into input registers, ready to be used by adjacent cells.
In this mode, a cell reads it's input registers and changes the contents of it's state registers in accordance with it's data input instruction set. It can also be used to transfer numerical data. After all inputs have been accomplished the input registers are zeroed out.
The program will need some way to generate output. Some kind of a screen display will show the program's status. In some applications, this could be is the only mode that is able to accept input from the user.
After the cell configuration is defined and tested, it will be used to power a classic computer program called Life. For those too young to remember, the game simulates the growth of bacteria in a medium. The surroundings and health of each microbe determines whether ot not it produces more microbes in the areas surrounding it. A near infinite range of patterns can result, depending on initial placement of microbes, and how the microbe is programmed to bahave.
One possibility for this program is to define two different kinds of microbes with different growth and survival characteristics, and pit them against each other to see which of the two will prevail.
More will be added to this page as the project develops.
REF: "The Emergence of Cellular Computing"
Moshe Sipper, Swill Federal Institute of Technology, Lausanne
Magazine: COMPUTER, IEEE Computer Society, July 1999, page 18.
To Main Menu
Programming Topics Menu