# A relay 1Early history. Vacuum tubes 2Early history.

## Presentation on theme: "A relay 1Early history. Vacuum tubes 2Early history."— Presentation transcript:

A relay 1Early history

Vacuum tubes 2Early history

ENIAC: 17, 468 vacuum tubes, 70,000 resistors, 10,000 capacitors, 1,500 relays, 6,000 manual switches, 5 million hand-soldered joints … Not a stored program computer. 1946. 3

EDSAC (Electronic Delay Storage Automatic Calculator): University of Cambridge Mathematical Laboratory, England, 1949. 1 K 18-bit words of memory, in mercury delay tubes. First practical stored-program computer. Subroutines were used! (The word compiler originated here.) 4

5 A magnetic drum at work Early history

6 A magnetic drum with opened cover

Core memory: 1 ferrite core = 1 bit 7Early history

8

9

10 An IBM 7090 computer Early history

The control panel of an IBM 360 computer 11Early history

Inside the CPU there are three registers: The instruction register: IR (20 bits, i.e., one word) The instruction counter: IC (16 bits, i.e., an address) The accumulator: A (20 bits, i.e., one word) A program is composed of one-word instructions. The instruction counter (IC) holds the address of the next instruction to be executed. The instruction register (IR) holds the instruction that is being executed. Here is the format of an instruction: opcode operand 4 bits 16 bits 12Early history

The CPU cycle: The processor performs a very simple sequence of actions, over and over again: 1.Load the word at address IC into IR: IR := m[ IC ]. 2.Increment IC: IC := IC + 1. 3.Perform the action prescribed by the instruction in IR. 4.Repeat from step 1 (unless it was a halt instruction) 13Early history

0HLTaHALT the machine, after loading MA with a. 1STOaSTORE the accumulator: m[ a ] := A. 2LOAaLOAD into the accumulator: A := m[ a ]. 3ANDaBitwise AND: A := A bit_and m[ a ]. 4OR aBitwise OR: A := A bit_or m[ a ]. 5XORaBitwise exclusive OR: A := A bit_xor m[ a ]. 6LSHaLogical SHift (right if a positive, left otherwise) 7ASHaArithmetic Shift (with sign-extension) 8ADDaADD:A := A + m[ A ] 9SUBaSUBTRACT: A := A – m[ A ] AJMPaJUMP:IC := a BJMZaJUMP on Zero: if A = 0 then IC := a fi CJMNaJUMP on Negative:if A < 0 then IC := a fi DCALasubroutine CALL: m[ a ] := IC; IC := a + 1 ERETasubroutine RETURN:IC := m[ a ] F DEViDEVICE operation 14Early history

0HLTa 1STOa 2LOAa 3ANDa 4OR a 5XORa 6LSHi 7ASHi 8ADDa 9SUBa AJMPa BJMZa CJMNa D E F 15 ;; Add a sequence of integers that ends with zero. ;; Leave the result in the accumulator. LOADATA; the next integer JMZDONE; if zero then end of data ADD SUM; add to the running sum … STOSUM; and save it … DONELOASUM; result to accumulator HLT0 ; SUMLIT0; the sum so far ; DATA… LIT0; end of data END Early history

0HLTa 1STOa 2LOAa 3ANDa 4OR a 5XORa 6LSHi 7ASHi 8ADDa 9SUBa AJMPa BJMZa CJMNa D E F 16 ;; Add a sequence of integers that ends with zero. ;; Leave the result in the accumulator. LOOPLOADATA; the next integer JMZDONE; if zero then end of data ADD SUM; add to the running sum … STOSUM; and save it JMPLOOP ; DONELOASUM; result to accumulator HLT0 ; SUMLIT0; the sum so far ; DATA… LIT0; end of data END It is now time to add the next integer. But just adding the green instruction will not do the trick. Why? Early history

0HLTa 1STOa 2LOAa 3ANDa 4OR a 5XORa 6LSHi 7ASHi 8ADDa 9SUBa AJMPa BJMZa CJMNa D E F 17 ;; Add a sequence of integers that ends with zero. ;; Leave the result in the accumulator. LOOPLOADATA; the next integer JMZDONE; if zero then end of data ADD SUM; add to the running sum … STOSUM; and save it LOALOOP; prepare for the next integer: ADD ONE; increment the operand STO LOOP; of the first LOA instruction JMP LOOP; iterate ; DONELOASUM; result to accumulator HLT0 ; SUMLIT0; the sum so far ONELIT1; the constant 1 ; DATA… LIT0; end of data END Early history

The ability to perform automodification was considered a great advantage of the von Neuman machine. That is, the stored program computer. Arthur W. (Arthur Walter) Burks, Herman Heine Goldstine, John Von Neumann; Preliminary Discussion of the Logical Design of an Electronic Computer Instrument; (Institute for Advanced Study, January 1, 1946) ASIN B0007HW8WE + earlier ideas of Alan Turing, Prosper Eckert, John Mauchly … 18Early history

The ability to perform automodification was considered a great advantage of the von Neuman machine. With experience, and as progress made more registers affordable, we came to a very different conclusion. There were even some machines that made it almost impossible to modify the code memory (e.g., PDP 11/70). What are the advantages of that? 19Early history

The ability to perform automodification was considered a great advantage of the von Neuman machine. With experience, and as progress made more registers affordable, we came to a very different conclusion. There were even some machines that made it almost impossible to modify the code memory (e.g., PDP 11/70). What are the advantages of that? Why almost ? 20Early history

While the idea of automodification of programs fell into disfavour relatively quickly, it took some time before there was any hardware support for a stack. The subroutine calling sequence of the A1 was typical. So recursion was quite expensive, and considered an exotic luxury. 21Early history

While the idea of automodification of programs fell into disfavour relatively quickly, it took some time before there was any hardware support for a stack. The subroutine calling sequence of the A1 was typical. So recursion was quite expensive, and considered an exotic luxury. This might seem strange to us now, but in those days machines were so incredibly expensive (and slow) that making efficient use of the computer was the highest priority. 22Early history

23 ;; GCD in A1: BSS2 ; arguments GCDBSS1; the entry point STOGCD – 1 ; store the first argument GCD_LOOPLOAGCD – 1; A SUBGCD – 2; B JMZGCD_EXIT; A = B ? JMNGCD_LT; A < B STOGCD – 1; A <- A – B JMPGCD_LOOP; iterate ; GCD_LTLOAGCD – 2; B SUBGCD – 1 ; B – A STO GCD – 2; B <- B – A JMPGCD_LOOP; iterate ; GCD_EXITLOAGCD – 1; result RETGCD; return Early history

24 CGCD IN FORTRAN II: 1IF ( A – B ) 5, 9, 2 2A = A – B GOTO 1 5 B = B – A GOTO 1 9GCD = A RETURN END A Hollerith card IBM 029 card punch 19 th century punch

Early history25 CGCD IN FORTRAN II 1IF ( A – B ) 5, 9, 2 2A = A – B GOTO 1 5 B = B – A GOTO 1 9GCD = A RETURN END CGCD IN FORTRAN IV 1 IF ( A.EQ. B ) GOTO 9 IF ( A.LT. B ) GOTO 2 A = A – B GO TO 1 2 B = B – A GOTO 1 9GCD = A RETURN END