QUIZ Pipelining A computer pipeline has 4 processors, as shown above. Each processor takes 15 ms to execute, and each instruction must go sequentially through all 4 processors. A program has 10 instructions. Calculate how long it takes to run it: • without pipelining • with pipelining 1 Extra-credit QUIZ 2 Low-level software Components Circuits Gates Transistors Abstractions and more abstractions … You are here 4 6.1 Computer Operations Computer = programmable electronic device that can store, retrieve, and process data Von Neumann architecture: • Data and instructions to manipulate the data are represented in the same way (binary) and are stored in the same place (memory) • For processing, both data and instructions have to be brought into the CPU (fetch-execute cycle) 5 6.2 Machine Language Machine language = The language made up of binary coded instructions built into the hardware of a particular computer and used directly by the computer Why would anyone use machine language? (Hint: they had no choice. Why?) Image source: http://www.alpcentauri.info/chapter_18.html 6 Remember: The Fetch-Execute Cycle According to the CPU’s machine language 7 Characteristics of machine language: – Every processor type has its own set of specific machine instructions – The relationship between the processor and the instructions it can carry out is completely integrated – Each machine-language instruction does only one very low-level task 8 Pep/8 Virtual Computer Virtual computer A hypothetical machine designed to contain the important features of a real machine Pep/8 A virtual computer designed by Stanley Warford that has 39 machine-language instructions (We’re going to cover only a few of them!) 9 Extra-credit 10 Pep/8 Registers – The program counter (PC) (contains the address of the next instruction to be executed) – The instruction register (IR) (contains a copy of the instruction being executed) – The accumulator (register A) The memory unit is made up of 65,636 Bytes of storage Can you figure out how long the Pep/8 address is? 11 QUIZ The previous version of Pep, Pep/7, could use only 12 bits for memory addresses. How many Bytes of memory could Pep/7 address? 12 24 bits 16 bits Explain the address format! 13 Can you show what instructions look like in memory? Explain the address format! 14 Instruction Format 15 Instruction Format Operation code, a.k.a. opcode Specifies which instruction is to be carried out Register specifier Specifies which register is to be used (only use A in this chapter) Addressing-mode specifier Says how to interpret the operand part of the instruction: • Direct Say that • Immediate again?!? 16 Instruction Format Addressing-mode specifier Says how to interpret the operand part of the instruction: • Direct • Immediate ?? 2+3 A+B Immediate Direct 17 Immediate and direct addressing modes 18 Immediate and direct addressing modes Example: ADD 42 to accumulator A What exactly am I to add? 19 Instruction Format Addressing modes: • immediate • direct Is there something we are not telling you about Pep’s addressing modes? 20 PEP/8 machine instructions 21 What does this instruction mean, what is its hex code, and what exactly does it do? 22 What does this instruction mean, what is its hex code, and what exactly does it do? 23 What do these instructions mean, what are their hex codes, and what exactly do they do? 24 Wait a second ... 25 Conclusions It is useless to write operands into IR. IR should be written only in the FETCH stage of the Fetch-Execute cycle, when the 3 bytes of the instruction are brought from memory. Operands can be written only to: • Accumulator • Memory Some instructions cannot have the immediate addressing mode EOL 1 26 QUIZ • Name all the 4 parts of the “fetch-execute” cycle. • What do IR, A, and PC stand for in the computer’s architecture? • Name and explain the 2 addressing modes we’ve covered. 27 QUIZ: Immediate and direct addressing modes SUB 30 from accumulator A What exactly am I to subtract? 28 What do these instructions mean, what are their hex codes, and what exactly do they do? 29 What does this instruction mean, what is its hex code, and what exactly does it do? Why is there only one on this page? What do these instructions mean, what are their hex codes, and what exactly do they do? 31 QUIZ • Name all the 4 parts of the “fetch-execute” cycle. • What do IR, A, and PC stand for in the computer’s architecture? • Name and explain the 2 addressing modes we’ve covered. 32 Immediate and direct addressing modes We have this Pep instruction: LOAD 20 (decimal) into accum. A What exactly am I to load? 33 Problem 16 / 189 The PEP/8 memory has the following contents: 0001 A2 0002 11 0003 00 0004 FF What are the contents of reg. A after this instruction is executed: C1 00 01 34 0001 0002 0003 0004 A2 11 00 FF Instruction executed: C1 00 01 35 Problem 17 / 190 The PEP/8 memory has the following contents: 0001 A2 0002 11 0003 00 0004 FF What are the contents of reg. A after this instruction is executed: C1 00 02 The first step is … 36 Problem 17 / 190 The PEP/8 memory has the following contents: 0001 A2 0002 11 0003 00 0004 FF What are the contents of reg. A after this instruction is executed: C1 00 02 1100 0001 0000 0000 0000 0010 37 6.3 Program to write "Hello" Every program ends with this! 38 Hand Simulation 0 0 0 0 What is the fetch/execute cycle? How much is the PC incremented? 0000 0001 0002 0003 What ASCII character is this? 50 00 48 50 39 Hand Simulation 0 0 0 0 What is the fetch/execute cycle here? What ASCII character is this? 40 Your turn! What does this program do? 1111 0000 1 0000 1111 Steps for executing a machine-language program Machine code program in a file on disk Loader Execute 42 Program in memory SKIP Pep/8 Simulator EOL 243 Problem 33 / 191 The PEP/8 memory has the following program in memory (in hex): 0001 0002 0003 0004 0005 0006 0007 49 00 08 51 00 08 00 Convert the program to binary and explain in your own words what it does. 44 Fact: Writing programs in machine language sucks! (i.e. it is time-consuming, boring, errorprone, unintuitive, etc.) 45 … that’s why they invented assembly language 46 6.4 Assembly Language Assembly language A language that uses mnemonic codes to represent machine-language instructions Assembler A program that reads each of the instructions in mnemonic form and translates it into the machine-language equivalent 47 Steps for executing an assembly-language program Loader Execute 48 Program in memory Pep/8 Assembly Language Opcode is 04 Opcode is 31 Opcode is 38 Opcode is 39 49 “Hello” program in assembly mnemonic CHARO CHARO CHARO CHARO CHARO STOP .END 50 operand 0x0048, 0x0065, 0x006C, 0x006C, 0x006F, addressing mode comments i ;Outputs character 'H' i i i i What in the world is this?! A New Program Problem: Read and sum three values and print the sum How would you do it by hand? 51 Declaring variables in assembly: We simply reserve space in memory for them! Labels – they are just placeholders for memory addresses 52 Assembler directives, a.k.a. pseudo-ops What is the difference between operations and pseudo operations? 53 Completed Program sum: num1: num2: num3: main: .WORD .BLOCK 2 .BLOCK 2 .BLOCK 2 LDA sum,d DECI ADDA DECI ADDA DECI ADDA STA DECO STOP .END 0x0000 num1,d num1,d num2,d num2,d num3,d num3,d sum,d sum,d 54 Completed Program Houston, we have a problem! How does the CPU know that the program starts here? sum: num1: num2: Num3: main: .WORD .BLOCK 2 .BLOCK 2 .BLOCK 2 LDA sum,d DECI ADDA DECI ADDA DECI ADDA STA DECO STOP .END 0x0000 num1,d num1,d num2,d num2,d num3,d num3,d sum,d sum,d 55 Solution: “Branch” instruction sum: num1: num2: num3: main: BR main .WORD .BLOCK 2 .BLOCK 2 .BLOCK 2 LDA sum,d DECI ADDA DECI ADDA DECI ADDA STA DECO STOP .END 0x0000 num1,d num1,d num2,d num2,d num3,d num3,d sum,d sum,d See comments on 56 next slide Unconditional branch! 57 Completed Program Your turn! Change the program so it adds only two numbers: always 7 + 42 58 We have covered sections 6.1, 6.2, 6.3, and part of 6.4. • Read the text carefully and make sure you can explain in your own words what each instruction accomplishes. Individual work (to do in notebook for next time): 16, 17, 19, 21-26 EoL4 59 QUIZ: Write an assembly program to subtract 2010 from 4210 and put the result in memory BR main Take inspiration from the program we studied last time: sum: num1: num2: num3: main: .WORD .BLOCK 2 .BLOCK 2 .BLOCK 2 LDA sum,d DECI ADDA DECI ADDA DECI ADDA STA DECO STOP .END 0x0000 num1,d num1,d num2,d num2,d num3,d num3,d sum,d sum,d EOL 60 Decision-making instructions BR Set PC to operand unconditionally BRLT i Set PC to operand if A < 0 BREQ i Set PC to operand if A = 0 61 Decision making problem: Same as previous “sum” program, but print the sum only if positive or zero; if negative, print an error message negMsg: CHARO BR main: LDA … BRLT STA DECO finish: STOP 0x0045,i finish sum,d What ASCII code is this? negMsg sum,d sum,d 62 Decision making problem: Same as before, but print the sum only if positive or zero; if negative, print the letter ‘E’ (Error) ASCII code for 'E' negMsg: CHARO BR main: LDA … BRLT STA DECO finish: STOP 0x0045,i finish sum,d negMsg sum,d sum,d How many ways are there to reach finish? QUIZ: What does this program do? BR main a: .BLOCK 2 main: DECI a, d LDA a, d SUBA 0x002A, i STA a, d DECO a, d STOP .END 64 QUIZ: What does this program do? BR main a: .BLOCK 2 main: DECI a, d LDA a, d SUBA 0x002A, i STA a, d BREQ yes DECO a, d ASCII code for 'F' fin: STOP yes: CHARO 0x0046, i BR fin .END 65 QUIZ: Would the decision program from the first example still work if the negMsg block were placed after the main program instead of before? main: finish: negMsg: LDA … BRLT STA DECO STOP sum,d CHARO BR 0x0045,i finish negMsg sum,d sum,d 66 What does this program do? (p.173) CPA must always be followed by a conditional branch! 67 QUIZ: PEP Assembly Write a program that adds the number 3 to a number entered by the user, and prints the result if equal to zero, otherwise it prints nothing. 68 QUIZ: PEP Assembly Write a program that adds the number 3 to a number entered by the user, and prints the result if less than zero, otherwise it prints nothing. 69 QUIZ: PEP Assembly Write a program that adds the number 3 to a number entered by the user, and prints the result if greater than zero, otherwise it prints nothing. 70 High-level software (Ch.9) Algorithms (and data structures) Low-level software Components Circuits Gates Transistors 6.5 Algorithms and Pseudocode Algorithm = A sequence of steps for solving a problem Muḥammad ibn Mūsā al-Khwārizmī (780-850A.D.) 72 Remember: Decision-making instructions BR Set PC to operand unconditionally BRLT i Set PC to operand if A < 0 BREQ i Set PC to operand if A = 0 73 Not in text How to describe an algorithm in an intuitive way? Flowcharts! We use decision-making instructions to build: • branches • loops 74 Problems with flowcharts: Not in text • They’re hard to follow when they get complex 75 Problems with flowcharts: Not in text • They’re hard to follow when they get complex • They’re hard to draw in electronic documents 76 Problems with flowcharts: Not in text • They’re hard to follow when they get complex • They’re hard to draw in electronic documents Our text uses only pseudocode 77 6.5 Algorithms and Pseudocode Pseudocode = A mixture of English and formatting to make the steps in an algorithm explicit There are no syntax rules in pseudocode! Pseudocode is not case sensitive! Example: Repeated-division algorithm (convert base-10 number to other bases): While ( the quotient is not zero ) Divide the decimal number by the new base Make the remainder the next digit to the left in the answer Replace the original decimal number with the quotient 78 Algorithms can also be described in natural language! 79 … but pseudocode is more precise IF concerned about cholesterol Put butter substitute in a pot ELSE Put butter in a pot Turn on burner Put pot on the burner WHILE (NOT bubbling) Leave pot on the burner Put other ingredients in the blender Turn on blender WHILE (more in pot) Pour contents into lender in slow steam Turn off blender 80 Draw the flowchart for this pseudocode IF concerned about cholesterol Put butter substitute in a pot ELSE Put butter in a pot Turn on burner Put pot on the burner WHILE (NOT bubbling) Leave pot on the burner Put other ingredients in the blender Turn on blender WHILE (more in pot) Pour contents into lender in slow steam Turn off blender 81 Pseudocode functionality Pseudocode has all of the concepts encountered in any high-level programming language, only the syntax is informal: – Variables – Assignment – I/O – Selection / decision – Repetition / loop – Boolean expressions 82 To do for next time Read pp.175-179 of the text, referring to your Python experience 83 We can test a pseudocode algorithm w/pencil & paper, a.k.a. “desk checking” While ( the quotient is not zero ) Divide the decimal number by the new base Make the remainder the next digit to the left in the answer Replace the original decimal number with What is 93 in base 8? 93/8 gives 11 remainder 5 11/8 gives 1 remainder 3 1/ 8 gives 0 remainder 1 answer 135 84 Organizing the solution in a computer-like way gives us better idea of what is required for the computer to execute it, e.g. two numbers need to be entered, etc. 85 QUIZ: Desk-check the repeated division algorithm with decimalNumber = 242, and newBase = 8 86 Answer: 362 87 Translating a pseudocode algorithm How we translate depends on the language into which we are translating! The text example (pp.184-5) is with translation into PEP assembly, but in class we’re translating the repeated division alg. into Python! 88 Develop this code step-by-step! 89 SKIP 6.6 Testing 90 Read and take notes in notebook: Software Piracy and Copyrighting Have you every "borrowed" software from a friend? Have you ever "lent" software to a friend? Did you know that about 100,000 jobs are lost in the US every year due to such "borrowing" and "lending?" 91 Chapter Review Questions • List the operations that a computer can perform • Describe the important features of the Pep/8 virtual machine • Distinguish between immediate addressing mode and direct addressing mode • Write a simple machine-language program • Distinguish between machine language and assembly language 92 Chapter Review Questions • Describe the steps in creating and running an assembly-language program • Write a simple program in assembly program • Distinguish between instructions to the assembler (a.k.a. directives) and instructions to be translated into machine code (a.k.a. executable instructions) • Distinguish between following an algorithm and developing one 93 Chapter Review Questions • Describe the pseudocode constructs used in expressing an algorithm • Use pseudocode to express and algorithm • Distinguish between black-box and clear-box testing 94 Homework Due Friday, Apr. 8 End of chapter exercises 10, 11, 12, 13, 14, 15 18, 20, 27, 34, 36, 41 Correction in 20: use E1 instead of E0 Hint for 34: machine code 31 means decimal input Hint for 41: How are integers represented in Pep/8? 44, 45 All PEP instructions, with machine codes 00 04 08 0A 31 38 39 49 50 51 70 71 80 81 C0 C1 E1 Stop Branch unconditional Branch if Less Than Branch if equal Decimal Input Direct Decimal Output Immediate Decimal Output Direct Char. Input Direct Char. Output Immediate Char. Output Direct Add to A Immediate Add to A Direct Subtract from A Immediate Subtract from A Direct Load into A Immediate Load into A Direct Store A Direct STOP BR BRLT BREQ DECI DECO DECO CHARI CHARO CHARO ADDA ADDA SUBA SUBA LDA LDA STA 96