1 / 57

Computer System

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. Binary.

Télécharger la présentation

Computer System

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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’ 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.

  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) = 210 bytes • Megabyte (MB) = 220 bytes • Gigabyte (GB) = 230 bytes • Terabyte (TB) = 240 bytes • 210 = 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 #

  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 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. Instruction format • How many bits do we need to specify: • One entire instruction? • Its operation, a register, or a memory address? • On real machines, 32 bits is a convenient size for: • Numbers (integer and real) • Memory address • Instruction • Therefore, size of each register is 32 bits • Research: 32 registers is enough for CPU • Example in handout refers to much smaller machine

  23. Comparison

  24. 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?

  25. 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.

  26. Bitwise • Operations that manipulate bits directly • Logical • Shift

  27. Logic operations • Work just like gates, but we do several bits in parallel. • Examples 10101110 01101011 AND 11110000 AND 00011111 • 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?

  28. 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.

  29. 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.

  30. 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.

  31. 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)

  32. 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

  33. Example • How would we calculate: 12 + 22 + 32 + … + 202 ? • 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 

  34. 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!

  35. 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

  36. HLL (Pascal) var sum : integer; count : integer; begin sum := 0; for count := 1 to 20 do sum := sum + count * count; writeln(sum); end.

  37. 3 ways to create code Write HLL code compiler Write assembly code assembler Write machine code Machine code Machine code

  38. 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.

  39. Thinking • How computers think • Concept of “state” • Turing machine model • Finite state machine model a.k.a. “Finite automaton”

  40. 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

  41. 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!

  42. 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

  43. Adder example S x y C z • 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.

  44. Finite Automatasingular: 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

  45. Example Vending machine for 25¢ item. 0 5 10 +5 +5 +10 +10 +5 +25 25 20 15 +5 +5

  46. Binary example We want a “word” starting with “101…” need 101 1 need 01 0 need 1 1  1 0 0 0,1 

  47. What does this FA do? 1 A B 0 1 0

  48. Example We want a word with at least two 0’s. 0 need two need one 0  0,1 1 1 • What if we wanted exactly two 0’s?

  49. 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

  50. 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

More Related