cpsc 121 models of computation
play

CPSC 121: Models of Computation able to: Specify the overall - PowerPoint PPT Presentation

Learning Goals After completing Lab 9 and this unit, you should be CPSC 121: Models of Computation able to: Specify the overall architecture of a (Von Neumann) stored program computer - an architecture where both program and data are


  1. Learning Goals  After completing Lab 9 and this unit, you should be CPSC 121: Models of Computation able to:  Specify the overall architecture of a (Von Neumann) stored program computer - an architecture where both program and data are bits (i.e., state) loaded and stored in a common memory.  Trace execution of an instruction through a working computer in a logic simulator (currently logisim): the basic Unit 10: A Working Computer fetch-decode-execute instruction cycle and the data flow to/from the arithmetic logic unit (ALU), the main memory and the Program Counter (PC).  Feel confident that, given sufficient time, you could Based on slides by Patrice Belleville understand how the circuit executes machine-language instructions. Unit 10: A Working Computer 2 CPSC 121 Big Questions Outline  CPSC 121: the BIG questions:  A little bit of history  How can we build a computer that is able to execute a user-defined program?  Implementing a working computer in Logisim  We are finally able to answer this question.  Appendices  This unit summarizes the concepts related to hardware you've learned in the lectures and labs since the beginning of the term. Unit 10: A Working Computer Unit 10: A Working Computer 3 4 1

  2. Computer History Computer History (cont')  20th century  Early 19th century:  Konrad Zuse (1941) build the first electromechanical  Joseph Marie Charles dit Jacquard used punched paper computer (Z3). It had binary arithmetic (including floating cards to program looms. point) and was programmable.  Charles Babbage designed (1837) but could not build the  The ENIAC (1946) was the first programmable electronic first programmable (mechanical) computer, based on computer. Jacquard's idea. o It used decimal arithmetic. o Reprogramming it meant  Difference Engine 2 built rewiring it! in London in 2002 o 8000 parts o 11 feet long o 5 tons Unit 10: A Working Computer Unit 10: A Working Computer 5 6 Computer History (cont') Computer Architecture Related Courses Mid 20 th century:  A quick roadmap through our courses:  CPSC 121: learn about gates, and how we can use them to The first stored-program electronic computers were design a circuit that executes very simple instructions. developed from 1945 to 1950. Programs and data were stored on punched cards.  CPSC 213: learn how the constructs available in languages such as Racket, C, C++ or Java are implemented using simple machine instructions.  CPSC 313: learn how we can design computers that execute programs efficiently and meet the needs of modern operating systems. More on http://www.computerhistory.org Unit 10 Unit 10: A Working Computer 7 8 2

  3. Outline Modern Computer Architecture  First proposed by Von-Neumann in 1945.  A little bit of history  Implementing a working computer in Logisim Memory (contains both programs and data).  Appendices Arithmetic & Logic Input/Output Control Unit Unit CPU Unit 10: A Working Computer Unit 10: A Working Computer 9 10 Memory Memory (cont')  Contains both instructions and data.  Each memory location contains a fixed number of bits.  Divided into a number of memory locations  Most commonly this number is 8.  Think of positions in a list: (list-ref mylist pos)  Values that use more than 8 bits are stored in multiple  Or in an array: myarray[pos] or arrayList arrayl.get(pos). consecutive memory locations. o Characters use 8 bits (ASCII) or 16/32 (Unicode). o Integers use 32 or 64 bits. o Floating point numbers use 32, 64 or 80 bits. 01010111 ... 0 1 2 3 4 5 6 7 8 9 10 11 ... Unit 10: A Working Computer Unit 10: A Working Computer 11 12 3

  4. Central Processing Unit (CPU) Our Working Computer  Arithmetic and Logic Unit  Implements the design presented in the textbook by  Performs arithmetic and logical operations (+, -, *, /, and, or, Bryant and O'Hallaron (used for CPSC 213/313). etc).  A small subset of the IA32 (Intel 32-bit) architecture.  Control Unit  It has  Decides which instructions to execute. stores a single multi-bit value.  12 types of instructions.  Executes these instructions sequentially.  One program counter register (PC) o Not quite true, but this is how it appears to the user. o contains the address of the next instruction.  8 general-purpose 32-bits registers o each of them contains one 32 bit value. o used for values that we are currently working with. Unit 10: A Working Computer Unit 10: A Working Computer 13 14 Instruction Examples Instruction Examples (cont') instruction register instruction register memory location  Example instruction 1: subl %eax, %ebx  Example instruction 3: rmmovl %ecx, $8(%ebx)  The subl instruction subtracts its arguments.  The rmmovl instruction stores a value into memory (Register  The names %eax and %ebx refer to two registers. to Memory Move).  In this case it takes the value in register %ecx.  This instruction takes the value contained in %eax, subtracts  And stores it in the memory location whose address is: it from the value contained in %ebx, and stores the result back in %ebx. o The constant 8 instruction constant register o PLUS the current value of register %ebx.  Example instruction 2: irmovl $0x1A, %ecx  This instruction stores a constant in a register.  In this case, the value 1A (hexadecimal) is stored in %ecx. Unit 10: A Working Computer Unit 10: A Working Computer 15 16 4

  5. Instruction Examples (cont') Sample program: irmovl $3,%eax  Example instruction 4: jge $1000 irmovl $35, %ebx  This is a conditional jump instruction. irmovl $facade, %ecx  It checks to see if the result of the last arithmetic or logic operation was zero or positive (Greater than or Equal to 0). subl %eax, %ebx  If so, the next instruction is the instruction stored in memory rmmovl %ecx, $8(%ebx) address 1000 (hexadecimal).  If not, the next instruction is the instruction that follows the halt jge instruction. Unit 10: A Working Computer Unit 10 17 18 Instruction Format Instruction Examples  How does the computer know which instruction does  Example 1: subl %eax, %ebx what?  Represented by  Each instruction is a sequence of 16 to 48 bits † o 6103 (hexadecimal)  Some of the bits tell it what type of instruction it is. • %ebx  Other bits tell it which instruction is and what operands to • %eax use. • subtraction  These bits are used as control (select) inputs for • arithmetic or logic operation (note: the use of “6” to represent them instead of 0 or several multiplexers. F or any other value is completely arbitrary).. † Modified slightly from the Y86 presented in the textbook by Bryant and O'Hallaron Unit 10: A Working Computer Unit 10: A Working Computer 19 20 5

  6. Instruction Examples (cont') A Working Computer in Logisim  Example 2: rmmovl %ecx, $8(%ebx)  Example:  Represented by o 401300000008 (hexadecimal) • $8 • %ebx • %ecx • ignored • register to memory move Unit 10: A Working Computer Unit 10: A Working Computer 21 22 Instruction Execution Stages Instruction Execution Stages (cont') This CPU divides the instuction execution into 6 stages:  Decode : read values from registers  Fetch : read instruction and decide on new PC value  Execute : use the ALU to perform computations  Some of them are obvious from the instruction (e.g. subl)  Other instructions use the ALU as well (e.g. rmmovl)  Memory : read data from or write data to memory  Write-back : store result(s) into register(s).  PC update : store the new PC value.  Not all stages do something for every instruction. Unit 10: A Working Computer Unit 10: A Working Computer 23 24 6

  7. Sample Program Instruction Execution Examples  Example 1: subl %eax, %ebx 30f000000003 irmovl $3,%eax  Fetch : current instruction ← 6103  next PC value ← current PC value + 2 30f300000023 irmovl $35, %ebx  Decode : valA ← value of %eax  valB ← value of %ebx 30f100facade irmovl $facade, %ecx  Execute : valE ← valB - valA  Memory : nothing needs to be done. 6103 subl %eax, %ebx  Write-back : %ebx ← valE 411300000008 rmmovl %ecx, $8(%ebx)  PC update : PC ← next PC value 1000 halt Unit 10: A Working Computer Unit 10: A Working Computer 25 26 nstruction Execution Examples (cont') Outline  Example 2: rmmovl %ecx, $8(%ebx)  A little bit of history  Fetch : current instruction ← 401300000008  Implementing a working computer in Logisim  next PC value ← current PC value + 6  Decode : valA ← value of %ecx  Appendices  valB ← value of %ebx  Execute : valE ← valB + 00000008  Memory : M[valE] ← valA  Write-back : nothing needs to be done  PC update : PC ← next PC value Unit 10: A Working Computer Unit 10: A Working Computer 27 28 7

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend