overview and aims
play

Overview and Aims LMC is a computer simulator understanding how a - PowerPoint PPT Presentation

T eaching L ondon C omputing CAS London CPD Day 2016 Little Man Computer William Marsh School of Electronic Engineering and Computer Science Queen Mary University of London Overview and Aims LMC is a computer simulator understanding


  1. T eaching L ondon C omputing CAS London CPD Day 2016 Little Man Computer William Marsh School of Electronic Engineering and Computer Science Queen Mary University of London

  2. Overview and Aims • LMC is a computer simulator • … understanding how a computer work • To program the LMC, must understand: • Memory addresses • Instructions • Fetch-execute cycle • Practical exercises • What we can learn from LMC

  3. What is in a Computer? • Memory • CPU • I/O

  4. Simple Computer • Processor Memory • CPU • Memory addresses data • Data CPU • Program instructions data • I/O • Keyboard Keyboard Disk Display • Display I/F I/F I/F • Disk

  5. Memory data • Each location • has an address • hold a value • Two interfaces • address – which location? address • data – what value?

  6. Quiz – What is the Memory?

  7. Registers (or Accumulators) • A storage area inside the CPU • VERY FAST • Used for arguments and results to one calculation step data Register – 1 memory location Read Write to Control register register lines

  8. Memory I/O CPU Write a program here I/O

  9. LMC CPU Structure • Visible registers shown in red ALU • Accumulators Accumulator • Data for calculation ALU • Data data • Word to/from MEM Data memory • PC Control Unit • Address of next instruction Program Instruction • Instruction m Counter e m • Address o r address • For memory y Mem access Control Address Unit

  10. Instructions The primitive language of a computer

  11. Instructions OpCode Address • Instruction • What to do: Opcode • The instructions are • Where: memory address very simple • Instructions for arithmetic • Each make of computer has • Add, Multiply, Subtract different instructions • Memory instructions • Programs in a high- • LOAD value from memory level language can • STORE value in memory work on all computers

  12. Instructions OpCode Address • Opcode: 1 Code Name Description decimal 000 HLT Halt digit 1xx ADD Add: acc + memory à acc Subtract: acc – memory à acc • Address: 2xx SUB two decimal 3xx STA Store: acc à memory digits – xx 5xx LDA Load: memory à acc 6xx BR Branch always • Binary 7xx BRZ Branch is acc zero versus 8xx BRP Branch if acc > 0 decimal 901 IN Input 902 OUT Output

  13. Add and Subtract Instruction ADD Address SUB Address • One address and accumulator (ACC) • Value at address combined with accumulator value • Accumulator changed • Add: ACC ß ACC + Memory[Address] • Subtract: ACC ß ACC – Memory[Address]

  14. Load and Store Instruction LDA Address STA Address • Move data between memory and accumulator (ACC) • Load: ACC ß Memory[Address] • Store: Memory[Address] ß ACC

  15. Input and Output INP 1 (Address) OUT 2 (Address) • Input : ACC ß input value • output : output area ß ACC • It is more usual for I/O to use special memory addresses

  16. Branch Instructions BR Address • Changes program counter • May depend on accumulator (ACC) value • BR: PC ß Address • BRZ: if ACC == 0 then PC ß Address • BRP: if ACC > 0 then PC ß Address

  17. Assembly Code Numbers • Instructions in text • Memory holds numbers • Instruction name: STA, • Opcode: 0 to 9 LDA • Address: 00 to 99 • Address: name using DAT Line Location 1 00 INP � ASSEMBLE 9 01 � 2 01 STA x � 3 05 � 3 02 INP � 9 01 � 4 03 STA y � 3 06 � 5 04 HLT � 0 00 � 6 05 (used for x) x DAT � 7 06 (used for y) y DAT �

  18. LMC Example

  19. Simple Program • x = y + z LDA y ADD z STA x HLT x y z

  20. Running the Simple Program LDA y PC ADD z IR LDA � STA x HLT ACC 17 x y 17 z 9

  21. Running the Simple Program LDA y PC ADD z IR ADD � STA x HLT ACC 17 26 x y 17 z 9

  22. Running the Simple Program LDA y PC ADD z IR STA � STA x HLT ACC 26 x 26 y 17 z 9

  23. Running the Simple Program LDA y PC ADD z IR HLT � STA x HLT ACC 26 x 26 y 17 z 9

  24. Practice Exercises • Try the first three exercises on the practical sheet

  25. Fetch-Execute Cycle How the Computer Processes Instructions

  26. Fetch-Execute • Each instruction cycle consists on two subcycles • Fetch cycle • Load the next instruction (Opcode + address) • Use Program Counter • Execute cycle • Control unit interprets the opcode • ... an operation to be executed on the data by the ALU Decode & Fetch next Start Halt execute instruction instruction

  27. Fetch Instruction 1. Program ALU Accumulators counter to address register ALU 2. Read memory at 3 data address Data 3. Memory data to ‘Data’ Control Unit 4 4. ‘Data’ to Program instruction Instruction m Counter e register m 1 o r 5. Advance address y Address program Control 2 Unit counter

  28. Execute Instruction 1. Decode instruction ALU 2. Address from Accumulators 6 5 instruction to ALU ‘address register’ 5 4 data 3. Access memory Data 4. Data from memory Control Unit to ‘data register’ 2 5. Add (e.g.) data and Program Instruction m accumulator value Counter e m 1 o 6. Update r address y Address accumulator Control 3 Unit

  29. What We Can Learn from LMC 1. How programming language work 2. What a compiler does 3. Why we need an OS

  30. Understanding Variables and Assignment • What is a variable? • What is on the left hand side of: x = x + 1 Variable is Value from an address in memory memory (at address x)

  31. Understanding Variables and Assignment • What is a variable? • What is on the left hand side of: A[x+1] = 42 Calculated Value from address in memory, used to memory calculate address

  32. Understanding If and Loops • Calculate the address of the next instruction Choose PC (L1 or L2) if x > 42: from comparison large = large + 1 Instructions at address L1 else: small = small + 1 Instructions at address L2

  33. Compiler • Compiler translates high level program to low level assembly code source code LDA y � 11010101 � ADD z � 10010111 � x = y + z � STA x � 01110100 � HLT � 10000000 � • Compiled languages object code • Statically typed • Close to machine • Examples: C, C++, (Java) • Compiler for each CPU

  34. Why We Need An OS LMC Real Computer • Only one program • Many programs at once • Program at fixed • Program goes place in memory anywhere in memory • No • Complex I/O • Disk • Screen • …

  35. Summary of CPU Architecture • Memory contains data and program • Program counter: address of next instruction • Instructions represented in binary • Each instruction has an ‘opcode’ • Instructions contain addresses • Addresses used to access data • Computer does ‘fetch-execute’ • ‘Execute’ depends on opcode • Computer can be built from < 10,000 electronic switches (transistors)

  36. Project: Writing an LMC Interpreter

  37. Write a Simple LMC Emulator State of the LMC: registers acc = 0 � and memory mdr = 0 � mar = 0 � def readMem(memory): � pc = 0 � global mdr � memory = [504,105,306, 0, � mdr = memory[mar] � 11, 17,...] � def execute(memory, opcode, arg): � def fetch(memory): � global acc, mar, mdr, pc � global pc, mar � if opcode == ADD: � mar = pc � mar = arg � pc = pc + 1 � readMem(memory) � readMem(memory) � acc = acc + mdr � elif opcode == SUB: � mar = arg � readMem(memory) � Update state acc = acc – mdr � following rules ... �

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