Download presentation
Presentation is loading. Please wait.
Published byAugustus Dean Modified over 8 years ago
1
Computer System Building blocks of a computer system: Using bits –Binary data and operations –Logic gates Units of measuring amount of data CPU vs. memory (Operating System) Programming languages Models of computation, e.g. Turing Machine
2
Binary All information inside computer is in binary Smallest unit of data is the bit Only the values 0 and 1 are used 0 means “false” or “off” or the number 0 1 means “true” or “on” or the number 1 Individual bit values can be manipulated with Boolean operations: “and”, “or”, “not”, etc. –In hardware, we implement these operations with logic gates.
3
Boolean examples AND –To graduate, you must have 128 credits and 2.0 GPA. OR –Classics scholarship requires 3 years of Latin or 3 years of Greek. XOR (“exclusive” or) –To go to Cincinnati, you can fly or drive. In other words, it doesn’t make sense to do both. –Do you want a 2-door or a 4-door car? NOT –If a statement is true, its negation is false, and vice versa.
4
Gates Basic building blocks of CPU’s circuitry. Usually 2 inputs. X and Y could be 0 or 1. Combining gates into a circuit: –The output of one gate becomes input to another. –This is how more useful operations are performed.
5
‘AND’ and ‘OR’ AND XYans 111 100 010 000 OR XYans 111 101 011 000 Note: 0 AND (anything) = 0 1 OR (anything) = 1
6
XOR XOR basically says, “either but not both” The output is 1 if both inputs are different. XOR XYAns 110 101 011 000
7
NOR, NAND NOR gate –Negation of the OR –Same as feeding output of OR into a NOT gate. –Symbol for NOR gate is same as OR but with a loop on the end. NAND gate –Negation of the AND…. analogous to NOR. Interesting property: –NOR and NAND are universal gates. Any other boolean operation can be implemented by using several NAND’s or several NOR’s.
8
Units of data size Bit = a single 0 or 1 value Nibble = 4 bits = 1 hexadecimal digit Byte = 8 bits Kilobyte (KB) = 2 10 bytes Megabyte (MB) = 2 20 bytes Gigabyte (GB) = 2 30 bytes Terabyte (TB) = 2 40 bytes 2 10 = 1024, though 1000 is a close approx.
9
CPU and memory CPU’s job is to obey instructions and do calculations Memory system stores information for current and future use –CPU has tiny number of “registers” for calculations –main memory (RAM) stores all files currently open –Secondary memory (e.g. hard drive) is for long-term storage of files –Backup system: tape, external hard drive Other types of memory: –Cache, between CPU and RAM –Removable drive, e.g. USB or DVD
10
RAM Runs on electricity: volatile but fast Each byte is numbered and addressable –Capable of holding a single character or small # AddressContents 0“c” 1“a” 2“t” 39 425 5100 ……
11
CPU, memory Contrast between levels of memory –Tradeoff between cost / size / speed Manipulating data by performing instructions “What is going on in the CPU?” Handout –A simple machine language
12
Memory comparison TypeSizeAccess timeCost per MB CPU registers256 bytes1 nsN/A Cache64 KB2 ns$ 20 RAM512 MB50 ns$ 0.20 Disk200 GB100,000 ns$ 0.0002 Numbers are approximate. “ns” means nanosecond = 1 billionth of a second
13
Basic computer anatomy Inside a computer are 2 parts –CPU –Memory –These are connected by a data bus: an “HOV lane” where traffic can go either way. CPU contains: –ALU: arithmetic and logic unit –Control unit: figures out what to do next –Registers to hold values needed for calculation Memory (RAM) contains: –Software: list of instructions the CPU needs to perform –Data: Input and output values need to be stored while program runs
14
Stored program idea Program = software = list of instructions for CPU to do Programs reside in memory CPU will do 1 instruction at a time For each instruction, we do the following: –Fetch it from memory –Decode – figure out what it means –Execute – do it –And then we continue with the next instruction… until the program is finished.
15
Simple example A program to add two numbers. This program may reside at bytes 100-116 in RAM. The two numbers we wish to add are located at bytes 200 and 204 in RAM. We want the result to go into memory at byte 208. Program may go something like this: –Load the value at Memory[200] into register 1. –Load the value at Memory[204] into register 2. –Add registers 1 and 2, and put result in register 3. –Store the value from register 3 into Memory[208]. Note that the bus is communicating instructions (RAM to CPU) as well as data (both ways).
16
Machine language Unfortunately, instructions for CPU can’t be in English, French, etc. Machine language = binary (or hex) representation of our instructions. –Each type of computer has its own machine language. This is the original form of “computer programming”. Verbs: Instruction set. e.g. Add, subtract, load, store… Nouns: Operands such as: registers, memory locations, constants, other instructions
17
Verbs 3 kinds of instructions (instruction set) Data transfer, using the bus –Load a value from memory into a CPU register Very similar to fetching an instruction! –Store a value from a CPU register into memory ALU –Bit manipulation: AND, OR, XOR, NOT, shift left, shift right, … –Arithmetic: add, sub, mul, div, remainder, =,, , , ≠, … Control –“Go to” another instruction in program. In other words, interrupt normal sequence of instructions. –Can be conditional or unconditional
18
Example language Let’s consider very simple HW. 256 bytes of RAM: addressable by 8 bits CPU contains –Instruction register (to store contents of instruction) –Program counter (to indicate instruction’s address) –16 general purpose registers: addressable by 4 bits Each register is 1 byte Each instruction is 2 bytes = 16 bits = 4 hex digits long Instruction format: –First 4 bits are the opcode = specify which instruction type –Other 12 bits are operand(s) What do instructions mean?
19
Machine language Machine language examples –Don’t memorize… Instruction execution Operations in instruction set –Performing arithmetic sometimes requires load / store instructions in addition to the arithmetic instruction –Instructions to manipulate bits directly
20
Example instructions Note: 16 possible opcodes: 4 bit opcode Note: 16 possible registers: register number also 4 bits Opcode 5 is used for adding –Expects 3 register operands –5RST means R = S + T, where R, S and T are register numbers –Ex. 5123 means Add registers 2 and 3 and put result in register 1. Opcode 2 is for putting a constant in a register –Expects a register operand, and an 8-bit constant operand –2RXX means R = XX, where XX is some 8-bit pattern –Ex. 27c9 means Put the hexidecimal “c9” into register 7. Try an example using both types of instructions.
21
More instructions Opcode 1 is for loading a memory value into a register –Expects a register operand (4 bits), and a memory address from which to load (8 bits). –Ex. 1820 means to go out to memory at address [20], grab the contents and load it into register 8. (It does not mean put the number 20 in register 8.) Opcode 3 is a store = opposite of load –Ex. 3921 means to take the value in register 9, and put it into memory at location [21]. (It does not mean put the number 9 into memory location 21.) Opcode C (hex code for 12) is for telling CPU it’s done. –Expects operand to be 12 zero-bits.
22
Some practice Refer to handout… How would we put the number 64 into memory at address 12? How would we add the numbers 6 and 8 and put the result in register 1? How would we add register 7 to register 5 and put the answer in memory at address 32?
23
Execution In our example, each instruction is 2 bytes long. Program counter (PC) begins at address of first instruction. For each instruction: –Fetch (and increment PC by 2) –Decode –Execute Note that RAM contains both instructions and data, separated from each other. For example, addresses 0- 99 could be reserved for code.
24
Bitwise Operations that manipulate bits directly –Logical –Shift
25
Logic operations Work just like gates, but we do several bits in parallel. Examples 1010111001101011 AND 11110000AND00011111 Try the same examples with “OR” and “XOR” Observations: –What happens when you AND with a 1? With a 0? –What about OR’ing with a 1 versus a 0? –What about XOR? ASCII code: how do you capitalize a letter?
26
Shift operations Given a bit pattern like 00011100, we can shift the bits left to obtain: 00111000. If we shift to the right instead, 00011100 becomes this: 00001110. We can even shift by more than one position. –Shifting 01010000 by 3 bits right 00001010. Sometimes when we shift, 1’s fall off the edge. –Shifting 01010000 by 2 bits left 01000000. When we shift, the “vacated” bits are usually 0.
27
Why shift? One application of a shift operation is to: –Multiply by 2: left shift –Divide by 2: right shift –Try some examples – should look familiar with our earlier work on binary numbers. One funny exception: dividing a (signed) negative number by 2. We need a different operation: arithmetic right shift. –In this case, we want the vacated bit to be 1 –Example: –12 in signed is 11110100. If we shift right by 1, we get 01111010, but it should be this: 11111010.
28
Rotate Rotate operations work the same as shift… except that the vacated bits come from the other end of the number. So, instead of 1’s falling off the edge, they rotate. For example, 01010000 rotated left by 2 becomes 01000001. Also: 00001111 rotated right by 3 becomes: 11100001.
29
Summary Here is a list of bitwise operators: Logical –and, or, xor, not Shift –sll (Shift left logical) –srl (Shift right logical) –sra (Shift right arithmetic) –rol (Rotate left) –ror (Rotate right)
30
Language evolution Machine language Assembly language –Like machine language, also unique to each manufacturer High-level language –FORTRAN, COBOL –Pascal, Algol, Ada –C, C++, C# –Java, Javascript, Python –many more
31
Example How would we calculate: 1 2 + 2 2 + 3 2 + … + 20 2 ? Let’s create our own solution, and see what the “code” looks like in different types of languages: –Machine language –Assembly language –High-level language
32
Machine language 00003000:00000014 00004000:200c0001 00004004:20080000 00004008:3c0a0000 0000400c:354a3000 00004010:8d4a0000 00004014:018a4822 00004018:1d200005 0000401c:018c0018 00004020:00005812 00004024:010b4020 00004028:218c0001 0000402c:08001005 00004030:2008000a 00004034:0000000c help me!
33
Assembly language numValue:.word 20 __start: addi $12, $0, 1 addi $8, $0, 0 lui $10, 0 ori $10, $10, 0x3000 lw $10, 0($10) while: sub $9, $12, $10 bgtz $3, end mult $12, $12 mflo $11 add $8, $8, $11 addi $12, $12, 1 j while end: addi $8, $0, 10 syscall
34
HLL (Pascal) var sum : integer; count : integer; begin sum := 0; for count := 1 to 20 do sum := sum + count * count; writeln(sum); end.
35
3 ways to create code Write machine code Machine code Write HLL code Write assembly code assembler compiler
36
What does a compiler do? Scan –Break up program into tokens –Remove comments Check syntax –Understand the structure of the program –Do all statements obey rules of language? Generate code –Create appropriate machine/assembly instructions –Optimize operations to save time We need a compiler for each language and architecture.
37
Thinking How computers think –Concept of “state” –Turing machine model –Finite state machine model a.k.a. “Finite automaton”
38
State Fundamental concept for any computation –Machine keeps track of where it is, what it needs –a.k.a. Status, mode –state may be stored in some memory cell Many examples –Logging in –Using a dialog box, or other user-interface –Fax machine, photocopier, telephone –Car transmission
39
Examples In a Tic-Tac-Toe game, the “state” of the game would include: –Whose turn it is –Is the game over? Who won, or was it a tie? State is determined by looking at the board. Backgammon (roll dice, move pieces…) –Depending on your situation in the game, some moves are illegal. Another way to think about states is to consider all possible board configurations!
40
Turing machine Alan Turing, 1936 Any general purpose machine must: –Work automatically –Be aware of what state it’s in –Have sufficient memory –Be able to do I/O, and be able to read the input many times if necessary Powerful model, but tedious to work with
41
Adder example 4 possible final states, depending on the inputs –For example, (S = 0 and C = 0) would be one outcome. Programming the details make working with real TMs a headache. x y z S C
42
Finite Automata singular: finite automaton Simple model for machine behavior. Purpose is to accept or reject some input –Examples: logging in, using a wizard, game At any given time, machine is in some “state” –Start state –Final (or accept, “happy”) states –Dead states Transitions between states
43
Example Vending machine for 25¢ item. 0510 1520 25 +5 +10 +25
44
Binary example We want a “word” starting with “101…” need 101 need 01 need 1 101 0 1 0 0,1
45
What does this FA do? A B 1 1 0 0
46
Example We want a word with at least two 0’s. need two need one 0 0 11 0,1 What if we wanted exactly two 0’s?
47
Regular language Set of input strings that can be “accepted” or recognized by a FA. –Credit card numbers –Social security numbers –Phone numbers –Date / Time (e.g. to enter into reservation system) Some FAs are too big to draw, so instead we describe with regular expression. –Shows general format of the input
48
Regular expression Use “wild cards” to make a general expression. ? = can replace any single character * = can replace any number of characters [ ] = can hold a range of possible valid characters Examples 105* = anything starting with 105 feb??.ppt = file names like feb25.ppt or feb04.ppt furman*.xlsx = any spreadsheet about Furman Version[123].txt = version1.txt, version2.txt, version3.txt
49
Dijkstra’s algorithm How do you find the shortest path in a network? General case solved by Edsger Dijkstra, 1959 47 3 68 3 16 9 2 74
50
Let’s say we want to go from “A” to “Z”. The idea is to label each vertex with a number – its best known distance from A. As we work, we may find a cheaper distance, until we “mark” or finalize the vertex. 1.Label A with 0, and mark A. 2.Label A’s neighbors with their distances from A. 3.Find the lowest unmarked vertex and mark it. Let’s call this vertex “B”. 4.Recalculate distances for B’s neighbors via B. Some of these neighbors may now have a shorter known distance. 5.Repeat steps 3 and 4 until you mark Z. 47 34 2 A BC Z
51
First, we label A with 0. Mark A as final. The neighbors of A are B and C. Label B = 4 and C = 7. Now, the unmarked vertices are B=4 and C=7. The lowest of these is B. Mark B, and recalculate B’s neighbors via B. The neighbors of B are C and Z. –If we go to C via B, the total distance is 4+2 = 6. This is better than the old distance of 7. So re- label C = 6. –If we go to Z via B, the total distance is 4 + 3 = 7. 47 34 2 A BC Z
52
Now, the unmarked vertices are C=6 and Z=7. The lowest of these is C. Mark C, and recalculate C’s neighbors via B. The only unmarked neighbor of C is Z. –If we go to Z via C, the total distance is 6+4 = 10. This is worse than the current distance to Z, so Z’s label is unchanged. The only unmarked vertex now is Z, so we mark it and we are done. Its label is the shortest distance from A. 47 34 2 A BC Z
53
Postscript. I want to clarify something… The idea is to label each vertex with a number – its best known distance from A. As we work, we may find a cheaper distance, until we “mark” or finalize the vertex. When you mark a vertex and look to recalculate distances to its neighbors: –We don’t need to recalculate distance for a vertex if marked. So, only consider unmarked neighbors. –We only update a vertex’s distance if it is an improvement: if it’s shorter than what we previously had. 47 34 2 A BC Z
54
Shortest Paths Dijkstra’s algorithm: What is the shortest distance between 2 points in a network/graph ? A related problem: What is the shortest distance for me to visit all the points in the graph and return home? This is called the traveling salesman problem. Nobody knows how to solve this problem without doing an exhaustive search! Open question in CS: why is this problem so hard?
55
B A C DE 8 6 6 4 3 2 4 9 5 12
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.