The von Neumann Architecture of Computer Systems
paper by H. Norton Riley
David Morgan
von Neumann archtecture Starting point
computer must store – data – instructions for manipulating it – the results (themselves data) dichotomy/polarity data instructions
“To von Neumann, the key to building a general purpose device was in its ability to store not only its data and the intermediate results of computation, but also to store the instructions, or orders, that brought about the computation.” – Riley paper
Form of instructions?
the wiring special purpose machines – a toaster heats the element red-hot “heat the element red-hot” is the only instruction fixed in the wiring – a (hypothetical) special-purpose computer adds two numbers “add the numbers” is the only instruction fixed in the wiring A special -purpose computer the purpose is adding
3 + 7 = 10
Special -purpose vs general -purpose
dedicated vs versatile fixed vs malleable a (hypothetical) general-purpose computer – adds or subtracts or multiplies or divides – “add” “subtract” “multiply” “divide” are the 4 instructions – in the wiring, but the wiring is variable
“In a special purpose machine the computational procedure could be part of the hardware. In a general purpose one the instructions must be as changeable as the numbers they acted upon. Therefore, why not encode the instructions into numeric form and store instructions and data in the same memory?” – Riley paper An instruction encoded into numeric form for a general -purpose computer
numeric form distinguishing
What is the number? Where is the wiring? What is the wiring?
Numeric instruction instructs
what is the number? – the number is 45 where is the wiring? – the wiring is in the instruction register what is the wiring? – the wiring is the presence of 45 in the register – because the “bits” are electric switches (not red pennies) – because the “numbers” are electron flow configurations (rewirings) – interpret “instructions” as switch configs or as numbers (your choice, according as you’re a hardware engineer or programmer) Hypothetical instruction set
defined:
00000001, in the IR add 00000010, in the IR subtract 00000011, in the IR multiply 00000100, in the IR divide
00000101, in the IR what happens?
Critiques of von Neumann
instructions and data distinguished only implicitly through usage there is a single 1-dimensional memory meaning of data not stored with it instruction and data fetches bottleneck on the bus Instructions/data distinguished implicitly
any trouble if instructions get used as if data? any trouble if data get used as if instructions? cf. tagged architecture
A single 1-dimensional memory
in disaccord with programming languages programs have a data space, code space, stack space mapping separate spaces into a unitary one (addressing) becomes an unavoidable task Meaning/type of data not stored with it
data’s type? (integer, floating point, string?) implicit high level languages – 33 is an integer, not floating point not string – 3.14 is floating point, not integer not string – hello is string, not integer not floating point one operation at high level handles all (at low level it is not one operation) – 33+44 – 3.14+2.72 – hello+ there
von Neumann bottleneck
instructions (opcodes) and data (operands) must shuttle memory cpu and back they have only 1 bus to get there and must share fetching each precludes the other at any moment