Computer Architecture CPSC 321 Andreas Klappenecker Course Contents Course Contents • • • • • • History Organization of a computer Assembly language Design of a computer Verilog Future architectures Syllabus • Two midterm exams 50% • Assignments and quizzes 20% • Projects 30% Early History One of the first calculation tools was the abacus, presumably invented sometime between 1000-500 B.C. Early History • around 1600, John Napier invents the Napier bones, a tool that helps in calculations (photo courtesy of IBM) • Napier also invents the logarithm • 1621, William Oughtred invents the slide rule that exploit Napier’s logarithms to assist in calculations Early History • 1625 Wilhelm Schickard invents a mechanical device to add, subtract, multiply and divide numbers • 1640 Blaise Pascal invents his Arithmetic Machine (which could only add) (photo courtesy of IBM) • 1671 Wilhelm von Leibniz invents the Step Reckoner, a device that allows to perform additions, subtractions, multiplications, divisions, and evaluation of square roots (by stepped additions) Early History • Charles Babbage proposes in 1822 a machine to calculate tables for logarithms and trigonometric functions, called the Difference Engine. • Before completing the machine, he invents in 1833 the more sophisticated Analytic Engine that uses Jacquard punch cards to control the arithmetic calculations • The machine is programmable, has storage capabilities, and control flow mechanisms – it is a general purpose computer. • The Analytic Engine was never completed. • Augusta Ada Lovelace writes the first program for the Analytical Engine (to calculate Bernoulli numbers). Some consider her as the first programmer. Computing Needs? The calculation devices weren’t a commercial success – pencil and paper was cheap and fast enough. The 1890 US census demanded larger data processing power, because more questions were asked. Hermann Hollerith provided the data processing equipment. Hollerith’s company later became a core part of IBM. (Photo courtesy of the IEEE Computer Society) Analogue Computing Rules! (Oops?) The digital computing methods of Babbage and Hollerith did not lead directly to the modern computer. In fact, analogue computing devices were much more common in 1900-1930, especially for scientific computations. In 1930, Vannevar Bush (MIT) constructed a large differential analyzer that was capable of integration and differentiation. The common conception was that analogue computing has many advantages over digital computation (and one finds constructions of analogue computers until the 1960’s). Konrad Zuse Konrad Zuse next to the replica of his Z1 computer (Technisches Museum, Munich). • In 1935, Konrad Zuse designs a special purpose electromechanical computer, the Z1. He constructs the computer in 1936-1938 in the living room of his parents in Berlin, Germany. Z1 The Z1 computer was clocked at 1 Hz. The memory consists of 64 words with 22 bits. Input and output is done by a punch tape reader and a punch tape writer. The computer has two registers with 22 bits and is able to perform additions and subtractions (it is not a general purpose computer). Z3 (Art and photo courtesy of Horst Zuse) Zuse constructed the Z3, a fully programmable general purpose computer, in 1939-1941. Remarkably, it contained a binary floating point arithmetic. It was clocked at 5.33 Hz, based on relays, and had 64 words of 22 bits. The small memory did not allow for storage of the program. World War II • Remarkably, Zuse did not profit from the war. In fact, his funding was pulled because it “seemed unlikely that his computer will be finished before the war ends”. • Computational methods were relevant to break ciphers • Bletchley Park (GB) developed and used devices to crack crypts of the German Enigma cipher • Calculating tables for projectile trajectories • Eckert and Mauchly (US) got funding to develop a computer to calculate tables Atanasoff John Vincent Atanasoff and his graduate student Clifford Berry developed in 1938-1942 a special purpose computer that was able to solve systems of linear equations. The machine was not programmable, but it performed all calculations with electronics and avoided electro-mechanical elements such as relays. (Photo and artwork courtesy of Iowa State University) It is not a general purpose computer, but Iowa State University tries to paint a different picture. Mark 1 Colossus (picture courtesy of Wikipedia encyclopedia) • 1943-44 Mark 1 Colossus • • • • memory based on vacuum tubes special purpose machine, not Turing complete but it had some flexibility used in Bletchley Park to break the fish cipher ENIAC • All-electronic general purpose computer based on vacuum tubes • Intended to calculate ballistic firing tables • Designed by Presper Eckert and John Mauchly • Designed and constructed during 1943-1946 • Programming by rewiring • 5000 additions per second, 357 multiplications per second, and 38 divisions per second • Decimal, not binary! (photo courtesy of the U.S. army) EDVAC • It was the first stored program computer ever designed • (but other stored program computers were completed earlier, namely an experimental machine at Manchester University, EDSAC at Cambridge University, an Australian machine ) • The stored program design is usually attributed to von Neumann, although Zuse formulate this concept already in 1936 in a patent applications (patent rejected). • Eckert and Mauchly were joined by von Neumann in the design of EDVAC. • First draft of EDVAC by von Neumann: • http://www.virtualtravelog.net/entries/2003-08-TheFirstDraft.pdf Where are we headed? • In general, a computer consists of the following components: Datapath Memory Control Input Output Further Reading • Scott McCartney: Eniac, Berkeley Books, New York, 1999 • von Neumann’s design of EDVAC • Patterson, Hennessy, 2nd edition, Chapter 1.