The Cellular Automata of John von Neumann
  First topicPrevious topicNext topicLast topic

The reading/writing arm
 
Image Rw_arm.GIF
 
A reading/writing arm (RW-arm) is an extensible organ provided with a head, which retrieves information from a tape formed by a horizontal array of cell-states holding as binary digits (bits). The RW-arm reads one bit at time moving forwards or backwards step-by-step without altering the tape. Most commonly, it hosts 4 horizontal lines, the topmost of which is formed by ordinary transmission states (blue right-arrows) and is folded downwards by two down-arrows at its right-end. Just below this there is a line formed by special transmission states (red right-arrows). In the figure above, this line-doublet is indicated as the working arm. With this configuration, the two lines can work in such a way to mutually annihilate their respective terminal states, add to each other new terminal states or alter neighboring cell-states. These capabilities are necessary to implement the reading process. The working arm receives inputs (via lines A, B) from suitable coders (control organs, not shown in the figure above) formed by coders, decoders, switches, delay lines etc, which are arranged so as to generate activation trains that make the RW-arm retract, advance or retrieve information. Just below the working arm there is the tape formed by a binary sequence of blue downward arrows (bit 1) spaced by vacuum states (bit 0). Just below this, there is a line formed by blue left-arrows, indicated as the collecting line, which is used to convey back to the automaton the activation trains produced by the tape-reading process.
 
How the RW-arm works
At a certain stage of the tape-reading process, the blue line of the working arm conveys a spaced triplet of pulses arranged as 10101 (1 = excited state; 0 = quiescent state), which performs the bit-reading process. Since the line is folded downwards at its right-end, any possible blue down-arrow in the tape (bit 1) lets the triplet to pass unchanged to the collecting line. By contrast, a vacuum state in the tape (bit 0) goes to a bridging blue down-arrow (spurious state) by the first two pulses of the triplet living the third pulse to reach the collecting line. Thus, a bit 1 in the tape results to an outgoing spaced triplet, whereas a 0 results to a single outgoing pulse (singleton). At the end of the bit-reading process, these outgoing signals must be discriminated and addressed to different output lines by a suitable filtering organ. Note that reading a 1 or a 0 makes a difference. In the second case, indeed, the spurious state must be annihilated just after the bit-reading process in order for the original tape configuration to be restored. This is accomplished by the insertion of a pulse doublet (11) into the activation train sent to the red line of the working-arm during a certain stage of the process. Thus, since the RW-arm must behave differently according as the tape-bit is a 1 or 0, the one-step elongation or retraction must be performed only after the result of the bit-reading process is returned. This condition can be fulfilled in two ways: (1) First read then move. 2) First move then read. In the first case, the controls of the RW-arm must wait for the end of bit-reading process in order to be able to perform the right move. In the second case, the result of the bit-reading process must be used to prepare the RW-arm controls for the next move. The first way is conceptually simpler because the type of move depends directly on the type of returned signal. The second way is less time-expensive because there is no waiting time. The second way suits for self-reproducing automata, where at start the first bit of the tape must be positioned close (but not inside) the arm head. The automata described in the next paragraphs provide concrete examples of how the reading process works.
 
RW-arm for JVN automata
The files RW-ARM_ADV.JVN, RW-ARM_RET.JVN and RW-ARM_CONTROLS.JVN in folder JVN provide examples of RW-arms governed by the JVN transition rule, which read the tape respectively while advancing, retracting or moving either ways. The reading process is of the type first-read-then-move. The structures and the behaviors of these organs are described in detail in a topic of the JVN-automaton gallery. To access folder JVN, simply open the File open dialog (button Image Open.GIF) after making sure that the item JVN transition rules in menu Rules is checked. After loading a file, click button Image Walk.GIF (Walk) on the left-toolbar and watch in detail what happens (adjust the step-time in the Timer dialog, if necessary). RW-ARM_ADV.JVN and RW-ARM_RET.JVN show the RW-arm reading the tape while moving forwards and moving backwards, respectively. In RW-ARM_CONTROL.JVN, a combination of these two systems forms an RW-arm capable of reading the tape either forwards or backwards, according to the state of a changeover switch. The RW-arms are initialized for one bit-reading process by an activation pulse (cyan right-arrow) set at the beginning of the input line (indicated by IN in gray diamonds). Subsequent reading operations can be performed by re-inputting an activation pulse. To initialize the automaton for reading forwards (backwards), input a pulse to the line indicated by >> (<<) and run it, before initializing and starting up the bit-reading processes. These lines are the inputs of a switch that is stored apart as a fragment in the file LU_SWITCH.JFR (left-up-switch). The outputs of the reading process returned by the collecting line are suitably decoded and re-coded before reaching the output lines (OUT). In particular, the spaced triplet is re-encoded as a pulse doublet and the singleton as two pulses spaced by a quiescent cell.
 
RW-arm for EVN automata
The files RW-ARM_BASICS_OLD.EVN, RW-ARM_CONTROLS_OLD.EVN, RW-ARM_BASICS.EVN and RW-ARM_CONTROLS.EVN in folder EVN provide examples of RW-arms governed by the EVN transition rules. Both RW-ARM_BASICS_OLD.EVN and RW-ARM_BASICS.EVN contain a pair of RW-arms, one reading while advancing and the other reading while retracting. Both of them are activated for a bit-reading process. To focus only on one of them, deactivate the input line of the other. In RW-ARM_CONTROLS_OLD.EVN and RW-ARM_CONTROLS.EVN, combinations of these basic RW-arms form RW-arms that can be switched to either reading mode. The arms in the files signed as _OLD are build up with coders assembled as described in the von Neumann & Burks' book and are of the type first-read-then-move. A compact implementation of a RW-arm is found in RW-ARM_COMPACT.EVN. Those in the other files have coders that are more compact of the type first-move-then-read. A dedicated topic of the EVN automaton gallery describes in detail their structure and their behaviors. At variance with the JVN case, the use of confluent states with crossing functionality simplifies considerably the structure of these arms. In particular, the result of the reading process is returned as a singleton via separate output-lines.