Interrupts & Input/output

Download Report

Transcript Interrupts & Input/output

Basic Computer Organization
Chapter 2
S. Dandamudi
Outline
• Basic components
• The processor
 Execution cycle
 System clock
• Flow control
 Branching
 Procedure calls
• Memory
 Basic operations
 Types of memory
 Storing multibyte data
• Number of addresses





2005
3-address machines
2-address machines
1-address machines
0-address machines
Load/store architecture
• Input/Output
• Performance: Data
alignment
 S. Dandamudi
Chapter 2: Page 2
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Basic Components
• Basic components of a computer system




Processor
Memory
I/O
System bus
» Address bus
» Data bus
» Control bus
2005
 S. Dandamudi
Chapter 2: Page 3
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Basic Components (cont’d)
2005
 S. Dandamudi
Chapter 2: Page 4
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
The Processor
• Processor can be thought of executing
 Fetch-decode-execute cycle forever
» Fetch an instruction from the memory
» Decode the instruction
– Find out what the operation is
» Execute the instruction
– Perform the specified operation
2005
 S. Dandamudi
Chapter 2: Page 5
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
The Processor (cont’d)
• System clock
 Provides timing signal
 Clock period =
2005
1
Clock frequency
 S. Dandamudi
Chapter 2: Page 6
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses
• Four categories
 3-address machines
» 2 for the source operands and one for the result
 2-address machines
» One address doubles as source and result
 1-address machine
» Accumulator machines
» Accumulator is used for one source and result
 0-address machines
» Stack machines
» Operands are taken from the stack
» Result goes onto the stack
2005
 S. Dandamudi
Chapter 2: Page 7
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses (cont’d)
• Three-address machines
 Two for the source operands, one for the result
 RISC processors use three addresses
 Sample instructions
add
dest,src1,src2
; M(dest)=[src1]+[src2]
sub
dest,src1,src2
; M(dest)=[src1]-[src2]
mult
dest,src1,src2
; M(dest)=[src1]*[src2]
2005
 S. Dandamudi
Chapter 2: Page 8
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses (cont’d)
• Example
 C statement
A = B + C * D – E + F + A
 Equivalent code:
mult
add
sub
add
add
2005
T,C,D
T,T,B
T,T,E
T,T,F
A,T,A
;T
;T
;T
;T
;A
 S. Dandamudi
=
=
=
=
=
C*D
B+C*D
B+C*D-E
B+C*D-E+F
B+C*D-E+F+A
Chapter 2: Page 9
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses (cont’d)
• Two-address machines
 One address doubles (for source operand & result)
 Last example makes a case for it
» Address T is used twice
 Sample instructions
load
dest,src
add
dest,src
sub
dest,src
mult
dest,src
2005
;
;
;
;
M(dest)=[src]
M(dest)=[dest]+[src]
M(dest)=[dest]-[src]
M(dest)=[dest]*[src]
 S. Dandamudi
Chapter 2: Page 10
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses (cont’d)
• Example
 C statement
A = B + C * D – E + F + A
 Equivalent code:
load
mult
add
sub
add
add
2005
T,C
T,D
T,B
T,E
T,F
A,T
;T
;T
;T
;T
;T
;A
=
=
=
=
=
=
 S. Dandamudi
C
C*D
B+C*D
B+C*D-E
B+C*D-E+F
B+C*D-E+F+A
Chapter 2: Page 11
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses (cont’d)
• One-address machines
 Uses special set of registers called accumulators
» Specify one source operand & receive the result
 Called accumulator machines
 Sample instructions
load
addr ; accum =
store addr ; M[addr]
add
addr ; accum =
sub
addr ; accum =
mult
addr ; accum =
2005
 S. Dandamudi
[addr]
= accum
accum + [addr]
accum - [addr]
accum * [addr]
Chapter 2: Page 12
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses (cont’d)
• Example
 C statement
A = B + C * D – E + F + A
 Equivalent code:
load
mult
add
sub
add
add
store
2005
C
D
B
E
F
A
A
;load C into accum
;accum = C*D
;accum = C*D+B
;accum = B+C*D-E
;accum = B+C*D-E+F
;accum = B+C*D-E+F+A
;store accum contents in A
 S. Dandamudi
Chapter 2: Page 13
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses (cont’d)
• Zero-address machines
 Stack supplies operands and receives the result
» Special instructions to load and store use an address
 Called stack machines (Ex: HP3000, Burroughs B5500)
 Sample instructions
push
addr ; push([addr])
pop
addr ; pop([addr])
add
; push(pop + pop)
sub
; push(pop - pop)
mult
; push(pop * pop)
2005
 S. Dandamudi
Chapter 2: Page 14
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses (cont’d)
• Example
 C statement
A = B + C * D – E + F + A
 Equivalent code:
push
push
push
Mult
push
add
2005
E
C
D
sub
push
add
push
add
pop
B
 S. Dandamudi
F
A
A
Chapter 2: Page 15
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Load/Store Architecture
• Instructions expect operands in internal processor registers
 Special LOAD and STORE instructions move data between
registers and memory
 RISC and vector processors use this architecture
 Reduces instruction length
2005
 S. Dandamudi
Chapter 2: Page 16
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Load/Store Architecture (cont’d)
• Sample instructions
load
store
add
sub
mult
2005
Rd,addr
addr,Rs
Rd,Rs1,Rs2
Rd,Rs1,Rs2
Rd,Rs1,Rs2
;Rd = [addr]
;(addr) = Rs
;Rd = Rs1 + Rs2
;Rd = Rs1 - Rs2
;Rd = Rs1 * Rs2
 S. Dandamudi
Chapter 2: Page 17
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Number of Addresses (cont’d)
• Example
 C statement
A = B + C * D – E + F + A
 Equivalent code:
load
load
load
load
load
load
2005
R1,B
R2,C
R3,D
R4,E
R5,F
R6,A
mult
add
sub
add
add
store
 S. Dandamudi
R2,R2,R3
R2,R2,R1
R2,R2,R4
R2,R2,R5
R2,R2,R6
A,R2
Chapter 2: Page 18
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Flow of Control
• Default is sequential flow
• Several instructions alter this default execution
 Branches
» Unconditional
» Conditional
 Procedure calls
» Parameter passing
– Register-based
– Stack-based
2005
 S. Dandamudi
Chapter 2: Page 19
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Flow of Control (cont’d)
• Branches
 Unconditional
branch
target
» Absolute address
» PC-relative
– Target address is specified relative to PC contents
 Example: MIPS
» Absolute address
j
target
» PC-relative
b
2005
target
 S. Dandamudi
Chapter 2: Page 20
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Flow of Control (cont’d)
2005
 S. Dandamudi
Chapter 2: Page 21
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Flow of Control (cont’d)
• Branches
 Conditional
» Jump is taken only if the condition is met
 Two types
» Set-Then-Jump
– Condition testing is separated from branching
– Condition code registers are used to convey the condition
test result
» Example: Pentium code
cmp
je
2005
AX,BX
target
 S. Dandamudi
Chapter 2: Page 22
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Flow of Control (cont’d)
» Test-and-Jump
– Single instruction performs condition testing and
branching
» Example: MIPS instruction
beq
Rsrc1,Rsrc2,target
Jumps to target if Rsrc1 = Rsrc2
2005
 S. Dandamudi
Chapter 2: Page 23
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Flow of Control (cont’d)
• Procedure calls
 Requires two pieces of information to return
» End of procedure
– Pentium
uses ret instruction
– MIPS
uses jr instruction
» Return address
– In a (special) register
MIPS allows any general-purpose register
– On the stack
Pentium
2005
 S. Dandamudi
Chapter 2: Page 24
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Flow of Control (cont’d)
2005
 S. Dandamudi
Chapter 2: Page 25
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Flow of Control (cont’d)
• Parameter passing
 Register-based
» Internal registers are used
– Faster
– Limit the number of parameters
Due to limited number of available registers
 Stack-based
» Stack is used
– Slower
– Requires memory access
– General-purpose
Not limited by the number of registers
2005
 S. Dandamudi
Chapter 2: Page 26
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Memory
• Memory can be viewed as
an ordered sequence of
bytes
• Each byte of memory has
an address
 Memory address is
essentially the sequence
number of the byte
 Such memories are called
byte addressable
 Number of address lines
determine the memory
address space of a processor
2005
 S. Dandamudi
Chapter 2: Page 27
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Memory (cont’d)
• Two basic memory operations
 Read operation (read from memory)
 Write operation (write into memory)
• Access time
» Time needed to retrieve data at addressed location
• Cycle time
» Minimum time between successive operations
2005
 S. Dandamudi
Chapter 2: Page 28
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Memory (cont’d)
• Steps in a typical read cycle
» Place the address of the location to be read on the address bus
» Activate the memory read control signal on the control bus
» Wait for the memory to retrieve the data from the addressed
memory location
» Read the data from the data bus
» Drop the memory read control signal to terminate the read
cycle
 A simple Pentium memory read cycle takes 3 clocks
– Steps 1&2 and 4&5 are done in one clock cycle each
 For slower memories, wait cycles will have to be
inserted
2005
 S. Dandamudi
Chapter 2: Page 29
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Memory (cont’d)
• Steps in a typical write cycle
» Place the address of the location to be written on the address
bus
» Place the data to be written on the data bus
» Activate the memory write control signal on the control bus
» Wait for the memory to store the data at the addressed location
» Drop the memory write control signal to terminate the write
cycle
 A simple Pentium memory write cycle takes 3 clocks
– Steps 1&3 and 4&5 are done in one clock cycle each
 For slower memories, wait cycles will have to be
inserted
2005
 S. Dandamudi
Chapter 2: Page 30
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Memory (cont’d)
• Some properties of memory
 Random access
» Accessing any memory location takes the same amount of time
 Volatility
» Volatile memory
– Needs power to retain the contents
» Non-volatile memory
– Retains contents even in the absence of power
• Basic types of memory
 Read-only memory (ROM)
 Read/write memory (RAM)
2005
 S. Dandamudi
Chapter 2: Page 31
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Memory (cont’d)
• Read-only memory (ROM)
» Cannot be written into this type of memory
» Non-volatile memory
» Most are factory programmed (i.e., written)
 Programmable ROMs (PROMs)
» Can be written once by user
– A fuse is associated with each bit cell
– Special equipment is needed to write (to blow the fuse)
» PROMS are useful
– During prototype development
– If the required quantity is small
Does not justify the cost of factory programmed ROM
2005
 S. Dandamudi
Chapter 2: Page 32
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Memory (cont’d)
 Erasable PROMs (EPROMs)
» Can be written several times
» Offers further flexibility during system prototyping
» Can be erased by exposing to ultraviolet light
– Cannot erase contents of selected locations
All contents are lost
 Electrically erasable PROMs (EEPROMs)
» Contents are electrically erased
» No need to erase all contents
– Typically a subset of the locations are erased as a group
– Most EEPROMs do not provide the capability to
individually erase contents of a single location
2005
 S. Dandamudi
Chapter 2: Page 33
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Memory (cont’d)
• Read/write memory
» Commonly referred to as random access memory (RAM)
» Volatile memories
 Two basic types
» Static RAM (SRAM)
– Retains data with no further maintenance
– Typically used for CPU registers and cache memory
» Dynamic RAM (DRAM)
– A tiny capacitor is used to store a bit
– Due to leakage of charge, DRAMs must be refreshed to
retain contents
– Read operation is destructive in DRAMs
2005
 S. Dandamudi
Chapter 2: Page 34
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Memory (cont’d)
• DRAM types
 FPM DRAMs
» FPM = Fast Page Mode
 EDO DRAMs
» EDO = Extended Data Out
– Uses pipelining to speedup access
 SDRAMs
» Use an external clock to synchronize data output
» Also called SDR SDRAMs (Single Data Rate)
 DDR SDRAMs
» DDR = Double Data Rate
» Provides data on both falling and rising edges of the clock
 RDRAMs
» Rambus DRAM
2005
 S. Dandamudi
Chapter 2: Page 35
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Storing Multibyte Data
2005
 S. Dandamudi
Chapter 2: Page 36
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Storing Multibyte Data (cont’d)
• Little endian
» Used by Intel IA-32 processors
• Big endian
» Used most processors by default
• MIPS supports both byte orderings
» Big endian is the default
• Not a problem when working with same type of
machines
» Need to convert the format if working with a different machine
» Pentium provides two instructions for conversion
– xchg for 16-bit data
– bswap for 32-bit data
2005
 S. Dandamudi
Chapter 2: Page 37
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Input/Output
• I/O controller provides the necessary interface to
I/O devices
 Takes care of low-level, device-dependent details
 Provides necessary electrical signal interface
2005
 S. Dandamudi
Chapter 2: Page 38
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Input/Output (cont’d)
• Processor and I/O interface points for exchanging
data are called I/O ports
• Two ways of mapping I/O ports
 Memory-mapped I/O
» I/O ports are mapped to the memory address space
– Reading/writing I/O is similar to reading/writing memory
Can use memory read/write instructions
» Motorola 68000 uses memory-mapped I/O
 Isolated I/O
» Separate I/O address space
» Requires special I/O instructions (like in and out in Pentium)
» Intel 80x86 processors support isolated I/O
2005
 S. Dandamudi
Chapter 2: Page 39
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Input/Output (cont’d)
• Pentium I/O address space
 Provides 64 KB I/O address space
 Can be used for 8-, 16-, and 32-bit I/O ports
 Combination cannot exceed the total I/O address space
»
»
»
»
can have 64 K 8-bit ports
can have 32 K 16-bit ports
can have 16 K 32-bit ports
A combination of these for a total of 64 KB
 I/O instructions do not go through segmentation or
paging
» I/O address refers to the physical I/O address
2005
 S. Dandamudi
Chapter 2: Page 40
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Performance: Data Alignment
2005
 S. Dandamudi
Chapter 2: Page 41
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Performance: Data Alignment (cont’d)
Sort time (seconds)
3
2
Unaligned
1
Aligned
0
5000
10000
15000
20000
25000
Array size
2005
 S. Dandamudi
Chapter 2: Page 42
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Performance: Data Alignment (cont’d)
• Data alignment
 Soft alignment
» Data is not required to be aligned
– Data alignment is optional
Aligned data gives better performance
» Used in Intel IA-32 processors
 Hard alignment
» Data must be aligned
» Used in Motorola 680X0 and Intel i860 processors
2005
 S. Dandamudi
Chapter 2: Page 43
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.
Performance: Data Alignment (cont’d)
• Data alignment requirements for byte addressable
memories
 1-byte data
» Always aligned
 2-byte data
» Aligned if the data is stored at an even address (i.e., at an
address that is a multiple of 2)
 4-byte data
» Aligned if the data is stored at an address that is a multiple of 4
 8-byte data
» Aligned if the data is stored at an address that is a multiple of 8
Last slide
2005
 S. Dandamudi
Chapter 2: Page 44
To be used with S. Dandamudi, “Introduction to Assembly Language Programming,” Second Edition, Springer, 2005.