CS/COE0447 Computer Organization & Assembly Language Pre-Chapter 2
Example: Chapter 1 example Question 1.48: If a computer issues 30 network requests per second and each request is on average 64 KB, will a 100 Mbit Ethernet link be sufficient? (printer, accessing files, …) KB = 10^3 bytes Byte = 8 bits Mbit = 10^6 A 100 Mbit Ethernet: 10^8 bit/s “bitrate” Answer: on board
“C Program” Down to “Numbers” void swap(int v[], int k) { int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } swap: muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 compiler 00000000101000010… 00000000000110000… 10001100011000100… 10001100111100100… 10101100111100100… 10101100011000100… 00000011111000000… assembler
“Numbers” in Memory 00000000101000010… 00000000000110000… 10001100011000100… 10001100111100100… 10101100111100100… 10101100011000100… 00000011111000000…
Stored Program Concept program fetch data load/store program A program A disk I/O program counter data A program C program B program B data B processor hard disk main memory
Stored Program Concept, Cont’d Programs (instructions) are stored in memory as a stream of bits (numbers) Indistinguishable from data More than one programs can reside in memory at the same time Programs can be modified by the processor or I/O just as data can be modified Instructions Language of the machine Describes primitive actions, supported directly by the machine Instructions are fetched by the processor, are decoded and they determine processor actions
Number Representation What is the natural “base” for numbers? 2? 10? 16? 27? Unary is inefficient in space All other bases are a compact way of re-presenting numbers… X X X X X (U N A R Y) = = X X X X X
Example: Base 10 (Decimal) Digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (10 of them) Example: 3217 = (3103) + (2102) + (1101) + (7100)
Numbers and Bases in General Number Base B B unique values per digit Base 10: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Base 2: {0, 1} Base 16: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} (Unsigned) number representation d31d30…d1d0 is a 32-digit non-negative number Value = d31B31 + d30B30 + … + d1B1 + d0B0 N-digit base B BN unique values
Example: Base 2 (Binary) Digits: 0, 1 (2 of them) “Binary digit” = “Bit” Example: 11010two = (124) + (123) + (022) + (121) + (020) = 16 + 8 + 0 + 2 + 0 = 26ten Choice for machine implementation! 1 = on, 0 = off
Base Conversion Let’s do decimal-to-binary conversion Aten = dn-1dn-2…d1d0two Given a base-10 number A, come up with n-digit binary number that has the same value! X = the number Let N be the largest power of 2 that fits into X Put a 1 in that position X = X – 2^N Repeat until you are done!
Base Conversion, cont’d From binary to decimal From decimal to binary From binary to hexadecimal From hexadecimal to binary From decimal to hexadecimal? (more complicated; later)
Base Conversion, cont’d 0000 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15
Base Conversion, cont’d Binary to hex (base 16), or hex to binary base conversion is rather straightforward Take 4 bits in binary and convert them into one hex digit and vice versa Since binary notation tends to be long, hex notation is frequently used in assembly language (and in C programs). More on binary number representation will be discussed when we study arithmetic
Program Performance Program performance is measured in terms of time! Program execution time has to do with Number of instructions executed to complete a job How many clock cycles are needed to execute a single instruction The length of the clock cycle (clock cycle time)
Clock, Clock Cycle Time Circuits in computers are “clocked” At each clock rising (or falling) edge, some specified actions are done, usually within the next rising (or falling) edge Function block (made of circuits) clock cycle time clock
Program Performance Time = (# of clock cycles) (clock cycle time) # of clock cycles = (# of instructions executed) (average cycles per instruction) Time = (# of instructions executed) (average clock cycles per instruction) (clock cycle time) More of “program performance” issues will be discussed in Chapter 4.
Example You have a machine with a CPU running at 1GHz. The same company releases its 2GHz CPU with 100% compatibility with the existing 1GHz CPU, and you are considering upgrading. What is the expected performance improvement from doing so? Assume that programs have 40% memory-access instructions, and each memory access takes 10ns on average. All other instructions take exactly one cycle for execution.