About von Neumann and other designs applied to Stored Program Computers
Nearly all present day digital computers have a so-called architecture, a design, named after Margittai Neumann Janos or John von Neumann, the famous Hungarian mathematician and computer philosopher. Let us have a quick look at some of the principal features of such a von Neumann machine.Hardware A von-Neumann machine consists of the following features:
paper tape reader
paper tape punch
card reader
card punch
lamps
switches
keyboard
monitor
printer
plotter
magnetic tape drive
flopy disk drive
hard disk drive
cd-rom drive
modem
image scanner
camera and adapter
mouse
joy-stick
touch screen
a-d & d-a converters and data acquisition equipment
a-d & d-a converters and sound adapter
These IO components are, of course, indispensible if we are to have
any kind of machine that can communicate with the outside world in some
way. Machines which cannot do this may be very fast or clever, but they
are usually not be very useful. Nevertheless i propose to concentrate on
the remaining two items of hardware and a further two of software in the
light of the present discussion.
00630 49 74 20 73 68 6F 75 6C It shoul
00638 64 20 62 65 20 70 6F 69 d be poi
00640 6E 74 65 64 20 6F 75 74 nted out
00648 20 68 65 72 65 20 74 68 here th
00650 61 74 20 74 68 65 20 69 at the i
00658 6D 61 67 65 20 69 6E 0D mage in
00660 0A 6D 65 6D 6F 72 79 20 memory
The numbers at the far left are the addresses of the first byte in a
sequence of eight. The pairs of characters in the body of the table represent
the data in each of those eight bytes. At the far right you will see the
actual text, written by a person, which has resulted in this memory image.
It would be cumbersome to write "0000 0000 0110 0011 0000 01001001 01110100
00100000 It " instead of "00630 49 74 20 73 68 6F 75 6C It shoul" and so
we write " 0 0 6 3 0 49 74 20 It" I t space gathering together groups of
eight bits at a time. It is of course possible to represent any kind of
information. There are several systems for representing text characters
in binary. Let us quickly look at a common version of the American Standard
Code for Information Interchange (ASCII): Since the byte provides space
for eight bits or two Hex digits (of four bits each) [Extended] ASCII is
a table of 256 charcters of which the first 32 <00H-1FH> are special
communication control characters, the next thirty two punctuation marks
and numeric digits, the next sixty four upper and lower case letters according
to the alphabet and the final hundred and twenty eight contain international,
accented, box drawing and other special marks and characters. Capital U
for example would be written in memory as 0101 0101 or 55H. Memory has
been the subject of a very large world wide commercial game. Even though
IBM decreed and defined in 1983/84 that 640 Kbytes was more than anyone
could ever possibly want to use, it was soon not enough and this definition
of infinity is these days a severely hindering limit. We now see programs
of tens of millions of bits and even larger multiples of that when considering
the associated help files, bugreports and internet conferences. Strange
is that well being and functioning of these software conglomorations can
depend on the well being of individual bits. The reliability of modern
software suites rests on the myth that it is possible to have an infinite
signal to noise ratio. All this be it as it may, memory is free. The price
has fallen to around one millionth of a modest meal per bit.
This 'program' is the fourth of set of paradoxes or rather stories by Zeno the Greek philosopher. The point of it is that there is initially no 'heap' of salt on the table. After a few grains have been dropped there are some isolated scattered grains lying here and there. Everybody knows that there will be a heap after, say, a thousand have been dropped. The interesting question is: what is the exact boundary between scattered grains (no heap) and heap. This 'program' is not really suitable for computers, as it is rather difficult to get a computer / robot to decide whether there is a 'heap' or not. A human being is however quite capable of following these instructions and i have included this example because i always felt that the way in which Mr. Zeno's presented his instructions was very much like our present day concept of a computer program. The (example) (pseudo) program above was represented in TEXT and is therefore also a specialised form of DATA. In the von Neumann scheme, the class Program is Data which can be executed (possibly after successful completion of some compilation process). The classes of Data and Program together form the software for the von Neumann machine: a STORED PROGRAM COMPUTER where the program (the structured list of instructions telling the machine what to do next) can be on a disk, in memory, fixed with bits of wire and plugs, or inscribed in a chip.
Aside: Once, in a bistro in Amsterdam in 1989, someone asked in the light of a discussion about RISC what would be the minimum number of instructions for a computer. Somebody answered that it could well be two. As one thing leads to another, these two instructions were soon named: Please_Wait with the associated microcode of 0 and Please_Edit with a microcode of 1. If we image a machine with cells or domains of memory we can assign some meaning to these proto-instructions. A zero in the software field of such a cell would mean Please_Wait, that is, any information in the cell remains unchanged throughout the coming machine cycle. Please_Edit would mean that the information in the cell is processed in some way, perhaps moved or shifted to and from some other cell or parts of cells. A third instruction Please_Yourself was added to make the machine's software slightly noisy. In other words, Please_Yourself is slightly unpredictable. This opens the possibility that software could evolve on the machine (provided that a suitable modulated feedback channel is available). Synchronous or not? Let us look at the ASS computer in the way we did with the classic von Neumann scheme: The proposed ASS machine consists of the following:
Neighbourlyness
ASS Computer cells are gregarious entities. They like to cuddle up together:
in this scheme, the cells have a neighbourlyness of 3.
Each cell encompasses enough bits of memory to be home to a decent sized
information nugget.
Assuming that 1Kbyte is a fair bet, the ASS machine sketched above
comprises 45 such cells or 45K with 18 IO ports and (allowing for the repair
of two links) 53 internal connections. Of course it is also conceivable
that the thing folds in on itself and that the IO is attached like the
capiliaries around the alvaeola.
On top of this there are Control, Status, History, Expected, Input
and Output fields.
Data is moved according to the principle that travelling is quickest
when you have the shortest way to go, so it is moved from neighbour to
neighbour (*).
Specialised Peripheral Cells who may be at a physical edge of the memory
cell array, or who can define a virtual boundary or interface to the machine
can be connected to IO.
Memory and processor are one
and the same on the ASS machine.