Download Dr. Welch`s slides

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CSCE 121, Sec 200, 507, 508
Fall 2010
Prof. Jennifer L. Welch
Simplified Model of a Computer
•
•
•
•
•
How data is represented and stored
How data is operated on
How a program is stored
How the program is executed on the data
How programs are translated into machine
language
CSCE 121-200
2
How Data is Represented
• Fundamental unit of computer storage is a bit, data
entity that can take on two values, 0 and 1
• Given a sequence of bits (01010001), what does it
represent?
• Depends on the code
– Base 10 integer: 1,010,001
– Base 2 integer: 1*20 + 1*24 + 1*26 = 81 (in base 10)
– ASCII: The letter ‘Q’
• Must know the code to decode a sequence
• Other codes:
– Negative numbers (e.g., 2’s complement)
– Numbers with fractional parts (floating point)
CSCE 121-200
3
How Data is Stored
• Byte: a group of 8 bits; 28 = 256 possibilities
– 00000000, 00000001, …, 11111110, 11111111
• Memory: long sequence of locations, each big
enough to hold one byte, numbered 0, 1, 2, 3,…
• Address: the number of the location
• Contents of a location can change
• Use consecutive locations to store longer sequences
– e.g., 4 bytes = 1 word
1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 …..
byte 0
byte 1
CSCE 121-200
byte 2
4
Limitations of Finite Data Encodings
• Overflow: number is too large
– suppose 1 byte stores integers in base 2, from 0
(00000000) to 255 (11111111). If the byte holds
255, then adding 1 to it results in 0, not 256
• Roundoff error:
– insufficient precision (size of word): try to store
1/8, which is .001 in base 2, with only two bits
– nonterminating expansions in current base: try to
store 1/3 in base 10, which is .333…
– nonterminating expansions in every base:
irrational numbers such as π
CSCE 121-200
5
Kinds of Storage
The computer reads and writes the data stored
in it. From fastest to slowest:
• cache: super-fast
• main memory: random access (equally fast to
access any address
• disk: random access, but significantly slower
than main memory
• tape: sequential access, significantly slower
than disk
CSCE 121-200
6
How Data is Operated On
• Central processing unit (CPU) consists of:
• arithmetic/logic unit (ALU):
– performs operations on data (e.g., add, multiply)
• registers: special memory cells, hold data used
by ALU, even faster than cache
• control unit:
– figures out what the ALU should do next
– transfers data between main memory and
registers
CSCE 121-200
7
Machine Instructions
Goal: add the number stored in address 3 and the number stored in address
6; put the result in address 10.
Control unit does the following:
1. copies data from main memory address 3 into register 1:
LOAD 3,1
2. copies data in main memory address 6 into register 4:
LOAD 6,4
3. tells ALU to add the contents of registers 1 and 4, and put result in
register 3:
ADD 1,4,3
4. copies data in register 3 into main memory address 10:
STORE 3,10
LOAD, ADD and STORE are machine instructions.
How does the control unit know which instruction is next? The program!
CSCE 121-200
8
How a Program is Stored
• Program: list of machine instructions using
some agreed upon coding convention.
• Example:
ADD
1
4
0 0 1 0
0 0 0 1
opcode
1st operand
0 1 0 0
2nd operand
3
0 0 1 1
3rd operand
• Program is stored same way data is stored!
CSCE 121-200
9
How a Program is Executed
• The control unit has
– instruction register: holds current instruction to be executed
– program counter: holds address of next instruction in the
program to be fetched from memory
• Program counter tells where the computer is in the
program. Usually the next instruction to execute is the
next instruction in memory
• Sometimes we want to JUMP to another instruction
(e.g., if or while)
– unconditional JUMP: always jump to address given
– conditional JUMP: only jump if a certain condition is true
(e.g., some register contains 0)
CSCE 121-200
10
Machine Cycle
• fetch next instruction, as indicated by the
program counter (PC), and increment PC
• decode the bit pattern in the instruction
register – figure out which circuitry needs to
be activated to perform the specified
instruction
• execute the specified instruction by copying
data into registers and activating the ALU to
do the right thing
– a JUMP may cause the PC to be altered
CSCE 121-200
11
Diagram of Architecture
CPU:
PC:
R1:
IR:
R2:
R3:
control
unit
ALU
R4:
bus
0
main
memory:
1
2
3
4
5
data
…
first instr.
program
second instr.
…
third instr.
95
96
CSCE 121-200
97
98
99
100
…
12
Evolution of Programming Languages
• Machine languages: all in binary
– machine dependent
– painful for people
• Assembly languages: allow symbols for operators and
addresses
– still machine dependent
– slightly less painful
– assembler translates assembly language programs into machine
language
• High-level languages: such as Fortran, C, Java, C++
– machine independent
– easier for people
– compiler translates high-level language programs into machine
language
CSCE 121-200
13
Compilation
Challenges faced by a compiler:
• one high-level instruction can correspond to
several machine instructions
– Ex: x = (y+3)/z;
• fancier data structures, such as
– arrays: must calculate addresses for references to
array elements
– structs: similar to arrays, but less regular
• fancier control structures than JUMP
– while, repeat, if-then-else, case/switch
CSCE 121-200
14
Compilation
Challenges faced by a compiler:
• functions (a.k.a. procedures, subroutines,
methods): must generate machine language
code to:
– copy input parameter values
– save return address
– start executing at beginning of function code
– copy output parameter values at the end
– set PC to return address
CSCE 121-200
15
Compilation Process
• Lexical analysis: break up strings of characters into
logical components, called tokens, and discard
comments, spaces, etc.
– Ex: “total = sum + 55.32” contains 5 tokens
• Parsing: decide how the tokens are related
– Ex: “sum + 55.32” is an arithmetic expression, “total = sum
+ 55.32” is an assignment statement
• Code generation: generate machine instructions for
each high-level instruction.
• The resulting machine language program, called
object code, is written to disk
CSCE 121-200
16
Linking
• Linker: combines results of compiling different
pieces of the program separately. If pieces
refer to each other, these references cannot
be resolved during independent compilation.
• Combined code is written to disk.
main
…
declares x
…
invokes p
…
function p
…
refers to x
…
CSCE 121-200
17
Loading
• Loader: when it’s time to run the program, the
loader copies the object code from disk into
main memory
– location in main memory is determined by the
operating system, not the programmer
• Loader initializes PC to starting location of
program and adjusts JUMP addresses
• Result is an executable
CSCE 121-200
18