You are on page 1of 81

IA-32 Architecture

CS4063
Computer Organization and Assembly Language
Presentation Outline

 Basic Computer Organization


 Intel Microprocessors
 IA-32 Registers
 Instruction Execution Cycle
 IA-32 Memory Management

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 2
Basic Computer Organization
 Since the 1940's, computers have 3 classic components:
 Processor, called also the CPU (Central Processing Unit)
 Memory and Storage Devices
 I/O Devices
 Interconnected with one or more buses
 Bus consists of data bus

 Data Bus registers

 Address Bus Processor Memory


I/O I/O
Device Device
(CPU)
 Control Bus #1 #2

ALU CU clock

control bus

address bus

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 3
Processor
 Processor consists of
 Datapath
 ALU
 Registers
 Control unit
 ALU
 Performs arithmetic
and logic instructions
 Control unit (CU)
 Generates the control signals required to execute instructions
 Implementation varies from one processor to another

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 4
Clock
 Synchronizes Processor and Bus operations
 Clock cycle = Clock period = 1 / Clock rate

Cycle 1 Cycle 2 Cycle 3

 Clock rate = Clock frequency = Cycles per second


 1 Hz = 1 cycle/sec 1 KHz = 103 cycles/sec
 1 MHz = 106 cycles/sec 1 GHz = 109 cycles/sec
 2 GHz clock has a cycle time = 1/(2×109) = 0.5 nanosecond (ns)

 Clock cycles measure the execution of instructions

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 5
Memory
 Ordered sequence of bytes
 The sequence number is called the memory address

 Byte addressable memory


 Each byte has a unique address
 Supported by almost all processors

 Physical address space


 Determined by the address bus width
 Pentium has a 32-bit address bus
 Physical address space = 4GB = 232 bytes
 Itanium with a 64-bit address bus can support
 Up to 264 bytes of physical address space
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 6
Address Space

Address Space is
the set of memory
locations (bytes) that
can be addressed

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 7
Memory Unit
 Address Bus  Two Control Signals
 Address is placed on the address bus  Read
 Address of location to be read/written  Write

 Data Bus  Control whether


memory should be
 Data is placed on the data bus read or written

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 8
Memory Read and Write Cycles
 Read cycle
1. Processor places address on the address bus
2. Processor asserts the memory read control signal
3. Processor waits for memory to place the data on the data bus
4. Processor reads the data from the data bus
5. Processor drops the memory read signal
 Write cycle
1. Processor places address on the address bus
2. Processor asserts the memory write control signal
3. Processor places the data on the data bus
4. Wait for memory to store the data (wait states for slow memory)
5. Processor drops the memory write signal
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 9
Reading from Memory
 Multiple clock cycles are required
 Memory responds much more slowly than the CPU
 Address is placed on address bus
 Read Line (RD) goes low, indicating that processor wants to read
 CPU waits (one or more cycles) for memory to respond
 Read Line (RD) goes high, indicating that data is on the data bus
Cycle 1 Cycle 2 Cycle 3 Cycle 4

CLK

Address
ADDR

RD

Data
DATA

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 10
Memory Devices
 ROM = Read-Only Memory
 Stores information permanently (non-volatile)
 Used to store the information required to startup the computer
 Many types: ROM, EPROM, EEPROM, and FLASH
 FLASH memory can be erased electrically in blocks
 RAM = Random Access Memory
 Volatile memory: data is lost when device is powered off
 Dynamic RAM (DRAM)
 Inexpensive, used for main memory, must be refreshed constantly
 Static RAM (SRAM)
 Expensive, used for cache memory, faster access, no refresh
 Video RAM (VRAM)
 Dual ported: read port to refresh the display, write port for updates
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 11
Memory Hierarchy
 Registers
 Fastest storage elements, stores most frequently used data
 General-purpose registers: accessible to the programmer
 Special-purpose registers: used internally by the microprocessor
 Cache Memory
 Fast SRAM that stores recently used instructions and data
 Recent processors have 2 levels

e
siz
registers

low
 Main Memory (DRAM)

r
lle

er
ma
cache memory

co
 Disk Storage ,s

st
ed

p
main memory

er
pe

 Permanent magnetic

by
rs

storage for files

te
he

disk storage
hig

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 12
Magnetic Disk Storage
Disk Access Time =
Seek Time +
Rotation Latency +
Transfer Time
Read/write head
Sector

Actuator
Recording area

Track 2
Seek Time: head movement to the Track 1
Track 0

desired track (milliseconds)


Arm
Rotation Latency: disk rotation until
desired sector arrives under the head Direction of Platter
rotation
Transfer Time: to transfer one sector Spindle

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 13
Example on Disk Access Time
 Given a magnetic disk with the following properties
 Rotation speed = 7200 RPM (rotations per minute)
 Average seek = 8 ms, Sector = 512 bytes, Track = 200 sectors
 Calculate
 Time of one rotation (in milliseconds)
 Average time to access a block of 32 consecutive sectors
 Answer
 Rotations per second = 7200/60 = 120 RPS
 Rotation time in milliseconds = 1000/120 = 8.33 ms
 Average rotational latency = time of half rotation = 4.17 ms
 Time to transfer 32 sectors = (32/200) * 8.33 = 1.33
ms + 1.33 = 13.5 ms
 Average access time = 8 + 4.17
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 14
I/O Controllers
 I/O devices are interfaced via an I/O controller
 I/O controller uses the system bus to communicate with processor
 I/O controller takes care of low-level operation details

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 15
Next ...

 Basic Computer Organization


 Intel Microprocessors
 IA-32 Registers
 Instruction Execution Cycle
 IA-32 Memory Management

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 16
Intel Microprocessors
 Intel introduced the 8086 microprocessor in 1979
 8086, 8087, 8088, and 80186 processors
 16-bit processors with 16-bit registers
 16-bit data bus and 20-bit address bus
 Physical address space = 220 bytes = 1 MB

 8087 Floating-Point co-processor


 Uses segmentation and real-address mode to address memory
 Each segment can address 216 bytes = 64 KB
 8088 is a less expensive version of 8086
 Uses an 8-bit data bus

 80186 is a faster version of 8086


IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 17
Intel 80286 and 80386 Processors
 80286 was introduced in 1982
 24-bit address bus  224 bytes = 16 MB address space
 Introduced protected mode
 Segmentation in protected mode is different from the real mode

 80386 was introduced in 1985


 First 32-bit processor with 32-bit general-purpose registers
 First processor to define the IA-32 architecture
 32-bit data bus and 32-bit address bus
 232 bytes  4 GB address space
 Introduced paging, virtual memory, and the flat memory model
 Segmentation can be turned off
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 18
Intel 80486 and Pentium Processors
 80486 was introduced 1989
 Improved version of Intel 80386
 On-chip Floating-Point unit (DX versions)
 On-chip unified Instruction/Data Cache (8 KB)
 Uses Pipelining: can execute up to 1 instruction per clock cycle

 Pentium (80586) was introduced in 1993


 Wider 64-bit data bus, but address bus is still 32 bits
 Two execution pipelines: U-pipe and V-pipe
 Superscalar performance: can execute 2 instructions per clock cycle
 Separate 8 KB instruction and 8 KB data caches
 MMX instructions (later models) for multimedia applications
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 19
Intel P6 Processor Family
 P6 Processor Family: Pentium Pro, Pentium II and III
 Pentium Pro was introduced in 1995
 Three-way superscalar: can execute 3 instructions per clock cycle
 36-bit address bus  up to 64 GB of physical address space
 Introduced dynamic execution
 Out-of-order and speculative execution
 Integrates a 256 KB second level L2 cache on-chip
 Pentium II was introduced in 1997
 Added MMX instructions (already introduced on Pentium MMX)
 Pentium III was introduced in 1999
 Added SSE instructions and eight new 128-bit XMM registers
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 20
Pentium 4 and Xeon Family
 Pentium 4 is a seventh-generation x86 architecture
 Introduced in 2000
 New micro-architecture design called Intel Netburst
 Very deep instruction pipeline, scaling to very high frequencies
 Introduced the SSE2 instruction set (extension to SSE)
 Tuned for multimedia and operating on the 128-bit XMM registers

 In 2002, Intel introduced Hyper-Threading technology


 Allowed 2 programs to run simultaneously, sharing resources

 Xeon is Intel's name for its server-class microprocessors


 Xeon chips generally have more cache
 Support larger multiprocessor configurations
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 21
Pentium-M and EM64T
 Pentium M (Mobile) was introduced in 2003
 Designed for low-power laptop computers
 Modified version of Pentium III, optimized for power efficiency
 Large second-level cache (2 MB on later models)
 Runs at lower clock than Pentium 4, but with better performance
 Extended Memory 64-bit Technology (EM64T)
 Introduced in 2004
 64-bit superset of the IA-32 processor architecture
 64-bit general-purpose registers and integer support
 Number of general-purpose registers increased from 8 to 16
 64-bit pointers and flat virtual address space
 Large physical address space: up to 240 = 1 Terabytes
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 22
CISC and RISC

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 23
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 24
Next ...

 Basic Computer Organization


 Intel Microprocessors
 IA-32 Registers
 Instruction Execution Cycle
 IA-32 Memory Management

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 25
Basic Program Execution Registers
 Registers are high speed memory inside the CPU
 Eight 32-bit general-purpose registers
 Six 16-bit segment registers
 Processor Status Flags (EFLAGS) and Instruction Pointer (EIP)

32-bit General-Purpose Registers


EAX EBP
EBX ESP
ECX ESI
EDX EDI

16-bit Segment Registers


EFLAGS CS ES
SS FS
EIP
DS GS

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 26
General-Purpose Registers
 Used primarily for arithmetic and data movement
 mov eax, 10 move constant 10 into register eax
 Specialized uses of Registers
 EAX – Accumulator register
 Automatically used by multiplication and division instructions
 ECX – Counter register
 Automatically used by LOOP instructions
 ESP – Stack Pointer register
 Used by PUSH and POP instructions, points to top of stack
 ESI and EDI – Source Index and Destination Index register
 Used by string instructions
 EBP – Base Pointer register
 Used to reference parameters and local variables on the stack
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 27
Accessing Parts of Registers
 EAX, EBX, ECX, and EDX are 32-bit Extended registers
 Programmers can access their 16-bit and 8-bit parts
 Lower 16-bit of EAX is named AX
 AX is further divided into
 AL = lower 8 bits
 AH = upper 8 bits

 ESI, EDI, EBP, ESP have only


16-bit names for lower half

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 28
Registers Cont..

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 29
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 30
Special-Purpose & Segment Registers
 EIP = Extended Instruction Pointer
 Contains address of next instruction to be executed
 EFLAGS = Extended Flags Register
 Contains status and control flags
 Each flag is a single binary bit
 Six 16-bit Segment Registers
 Support segmented memory
 Six segments accessible at a time
 Segments contain distinct contents
 Code
 Data
 Stack
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 31
EFLAGS Register

 Status Flags
 Status of arithmetic and logical operations
 Control and System flags
 Control the CPU operation
 Programs can set and clear individual bits in the EFLAGS register
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 32
Status Flags
 Carry Flag
 Set when unsigned arithmetic result is out of range
 Overflow Flag
 Set when signed arithmetic result is out of range
 Sign Flag
 Copy of sign bit, set when result is negative
 Zero Flag
 Set when result is zero
 Auxiliary Carry Flag
 Set when there is a carry from bit 3 to bit 4
 Parity Flag
 Set when parity is even
 Least-significant byte in result contains even number of 1s
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 33
Floating-Point, MMX, XMM Registers
 Floating-point unit performs high speed FP operations
 Eight 80-bit floating-point data registers
 ST(0), ST(1), . . . , ST(7)
 Arranged as a stack
 Used for floating-point arithmetic

 Eight 64-bit MMX registers


 Used with MMX instructions

 Eight 128-bit XMM registers


 Used with SSE instructions

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 34
Next ...

 Basic Computer Organization


 Intel Microprocessors
 IA-32 Registers
 Instruction Execution Cycle
 IA-32 Memory Management

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 35
Instruction Execute Cycle

Instruction
Obtain instruction from program storage
Fetch

Instruction
Determine required actions and instruction size
Infinite Cycle

Decode

Operand
Locate and obtain operand data
Fetch

Execute Compute result value and status

Writeback
Deposit results in storage for later use
Result

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 36
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 37
Instruction Execution Cycle – cont'd
PC program
 Instruction Fetch I1 I2 I3 I4 ...
memory fetch
 Instruction Decode op1
read
op2
registers registers
 Operand Fetch instruction
I1 register
 Execute

decode
 Result Writeback

write

write
flags ALU

execute
(output)

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 38
Pseudocode

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 39
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 40
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 41
Pipelined Execution
 Instruction execution can be divided into stages
 Pipelining makes it possible to start an instruction before
completing the execution of previous one

Stages For k stages and n instructions, the


S1 S2 S3 S4 S5 S6 number of required cycles is: k + n – 1
1 I-1
2 I-1
3 No I-1
4 n- p I-1
Wa ipe
Cycles

5
ste line I-1
6 dc de I-1
7 I-2 loc xe
k c c ut
8 I-2
yc ion
9 I-2 les
10 I-2 Pipelined
11 I-2 Execution
12 I-2

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 42
Wasted Cycles (pipelined)
 When one of the stages requires two or more clock
cycles to complete, clock cycles are again wasted

 Assume that stage S4 is the Stages


execute stage exe
S1 S2 S3 S4 S5 S6
 Assume also that S4 requires 1 I-1
2 I-2 I-1
2 clock cycles to complete 3 I-3 I-2 I-1

Cycles
4 I-3 I-2 I-1
 As more instructions enter the
5 I-3 I-1
pipeline, wasted cycles occur 6 I-2 I-1
7 I-2 I-1
 For k stages, where one 8 I-3 I-2
stage requires 2 cycles, n 9 I-3 I-2
instructions require k + 2n – 1 10 I-3
11 I-3
cycles
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 43
Next ...

 Basic Computer Organization


 Intel Microprocessors
 IA-32 Registers
 Instruction Execution Cycle
 IA-32 Memory Management

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 44
Modes of Operation
 Real-Address mode (original mode provided by 8086)
 Only 1 MB of memory can be addressed, from 0 to FFFFF (hex)
 Programs can access any part of main memory
 MS-DOS runs in real-address mode
 Protected mode (introduced with the 80386 processor)
 Each program can address a maximum of 4 GB of memory
 The operating system assigns memory to each running program
 Programs are prevented from accessing each other’s memory
 Native mode used by Windows NT, 2000, XP, and Linux
 Virtual 8086 mode
 Processor runs in protected mode, and creates a virtual 8086
machine with 1 MB of address space for each running program
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 45
The Registers
 Pointer & Index Registers:
 The registers in this group are all 16-bits wide.
 They can not be accessed as a low or high byte.
 They are used as memory pointers.
 Register IP can not be accessed by the programmer and
has only one function that is to point to the next
instruction to be fetched by the CPU

Figure 2: Pointer and index registers.


IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 46
The 8086 Registers
 Example 1:
Referring to the next Fig 3, if SI=1000H, what is the
contents of register AH after executing the instruction
MOV AH, [SI]?

Figure 3: Memory map of Example 1

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 47
The 8086 Registers
 Example 1:
Referring to the next Fig 3, if SI=1000H, what is the
contents of register AH after executing the instruction
MOV AH, [SI]?

 AH = 26H

Figure 3: Memory map of Example 1

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 48
The 8086 Registers

 Status & Control Flags:


 It is a 16-bit register
 Six of the flags are status indicators reflecting the
properties of the result of the last arithmetic or logical
instruction.
 The 8086 has several instructions that can be used to
transfer program control based on the state of these flags,
e.g. JNZ (jump on not zero), JZ (jump on zero).
 Three of the flags can be set or reset directly by the
programmer: TF (trap flag), IF (interrupt flag), and DF
(direction flag).

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 49
Figure 4: Status and control flags.

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 50
The 8086 Registers

 Example 2:
If the register AL=7FH and the instruction ADD AL, 1 is
executed, what will be the content of the AL register?
What will be the values of the status flags?

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 51
The 8086 Registers

 Example 2:
If the register AL=7FH and the instruction ADD AL, 1 is
executed, what will be the content of the AL register?
What will be the values of the status flags?

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 52
The 8086 Registers

 Segment Registers:
 These registers are used by the CPU to determine the
memory segment addresses.
 The function of these registers will be explained when
discussing the memory addressing.

Figure 5: Segment registers.


IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 53
The 8086 Memory Addressing

 Memory Space:
 The 8086 processor has 20-bit
address bus.
 This allows the processor to
address 220 or 1,048,576 different
memory locations (1 MB).
 Memory Addressing:
 the memory space is divided into
segments and
 the CPU is limited to accessing
program instructions and data only
from these segments.
Figure 6: The 8086 memory space.
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 54
The 8086 Memory Addressing

 Memory Segments & Segment Registers:


 Within the 1MB memory space, the 8086 defines four
memory blocks each of size 64K
 Code Segment: holds the program instruction codes
 Data Segment: stores data for the program
 Extra Segment: holds extra data (e.g. shared data).
 Stack Segment: used to store interrupt and subroutine
return addresses.
 The four segment registers (CS, DS, ES, and SS) are
used to point to the beginning of each segment (i.e.,
location 0 or the base address) as shown in Fig 7.
 The four segments need not be defined separately (i.e.
they can overlap) as shown in Fig.8.
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 55
Figure 7: The 8086 memory segments.

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 56
The 8086 Memory Addressing

 Segments and Offsets :


 A combination of a segment address and an offset
address accesses a memory location.
 All memory addresses must consist of a segment
address plus an offset address.
 The segment address, located within one of the
segment registers, defines the beginning address
of any 64K-byte memory segment.
 The offset address selects any location within the
64K byte memory segment.
 All memory segments have a length of 64K bytes.

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 57
Figure 9: The 8086 memory-addressing, using a segment address plus an offset.
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 58
The 8086 Memory Addressing

 Segments and Offsets :


 Fig 9 shows how the segment plus offset addressing
scheme selects a memory location.
 This illustration shows a memory segment that begins
at location 10000H and ends at location 1FFFFH (64K
bytes in length).
 It also shows how an offset address, sometimes called
a displacement, of F000H selects location 1F000H in
the memory system.
 Note that the offset or displacement is the distance
above the start of the segment, as shown in Fig 9.
 The segment register contains 1000H, yet it addresses
a starting segment at location 10000H.
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 59
The 8086 Memory Addressing
 Segments and Offsets :
 Note that Each segment registers is only 16 bits wide.
 However, the CPU must generate a 20-bit memory address
to access a location within the first 1M of memory.
 It takes care of this by appending four 0’s (0H)to the low
order bits of the segment register (multiplies the segment
register contents by 16).
 This forms a 20-bit memory address, allowing it to access
the start of a segment.
 For example, when a segment register contains 1200H, it
addresses a 64K-byte memory segment beginning at
location 12000H.
 Likewise, if a segment register contains 1201H, it
addresses a memory segment beginning at location
12010H.
 Because of the internally appended 0H, memory segments
can begin only at a 16-byte boundary (called a paragraph)
in the memory system.
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 60
The 8086 Memory Addressing
 Segments and Offsets :
 Once the beginning address is known, the ending
address is found by adding FFFFH (64K).
 For example, if a segment register contains 3000H, the
first address of the segment is 30000H, and the last
address is or 3FFFFH.
 The following table shows several examples of
segment register contents and the starting and ending
addresses of the memory segments selected by each
segment address.

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 61
The 8086 Memory Addressing
 Segments and Offsets :
 The offset address, which is a part of the address,
is added to the start of the segment to address a
memory location within the memory segment.
 For example, if the segment address is 1000H and
the offset address is 2000H, the microprocessor
addresses memory location 12000H.
 The offset address is always added to the starting
address of the segment to locate the data.
 The segment and offset address is sometimes
written as 1000:2000 for a segment address of
1000H with an offset of 2000H.

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 62
The 8086 Memory Addressing
 Default Segment and Offset Registers:
 The 8086 has a set of rules that apply to segments
whenever memory is addressed.
 These rules, define the segment register and offset
register combination.
 For example, the code segment register (CS) is always
used with the instruction pointer (IP) to address the next
instruction in a program.
 The code segment register defines the start of the code
segment and the instruction pointer locates the next
instruction within the code segment.
 This combination (CS:IP) locates the next instruction
executed by the CPU.
 For example, if CS=1400H and IP=1200H , the
microprocessor fetches its next instruction from memory
location or 15200H.
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 63
The 8086 Memory Addressing
 Default Segment and Offset Registers:
 Another default combinations is the stack.
 Stack data are referenced through the stack segment
register (SS) at the memory location addressed by either
the stack pointer (SP) or the pointer (BP).
 These combinations are referred to as SS:SP or SS:BP.
 For example, SS=2000H and BP=3000H , the CPU
addresses memory location 23000H for the stack
segment memory location.
 Other defaults of segment and offset combinations are
shown in the following table.

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 64
The 8086 Memory Addressing
 Logical and Physical Addresses:
 Addresses within a segment can range from address 0 to
address FFFFH.
 This corresponds to the 64K length of the segment.
 An address within a segment is called an offset, or logical,
address.
 For example, logical address 0005H in a code segment
(CS= B3FFH) actually corresponds to the real address
B3FF0H + 5 = B3FF5H.
 This "real" address is called the physical address.
 The physical address is 20 bits long and corresponds to
the actual binary code output by the CPU on the address
bus lines
 The logical address is an offset from location 0 of a
given segment.
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 65
The 8086 Memory Addressing

 Example 3:
Calculate the beginning and ending addresses for the data
segment, assuming register DS=E000H.

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 66
The 8086 Memory Addressing

 Example 3:
Calculate the beginning and ending addresses for the data
segment, assuming register DS=E000H.

 Starting Address = E0000H


 Ending Address = E0000 + 0FFFF = EFFFFH

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 67
The 8086 Memory Addressing

 Example 4:
Calculate the physical address corresponding to logical
address D470H in the extra segment. Repeat for logical
address 2D90H in the stack segment. Assume the segment
Definitions ES= 52B9H and SS= 5D27H.

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 68
The 8086 Memory Addressing

 Example 4:
Calculate the physical address corresponding to logical
address D470H in the extra segment. Repeat for logical
address 2D90H in the stack segment. Assume the segment
Definitions ES= 52B9H and SS= 5D27H.

 Calculating the Physical Address of D470H


 Physical Address = 52B90 + 0D470 = 60000H
 Calculating the Physical Address of 2D90H
 Physical Address = 5D270 + 2D90 = 60000H

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 69
Real Address Mode
 A program can access up to six segments
at any time
 Code segment
 Stack segment
 Data segment
 Extra segments (up to 3)

 Each segment is 64 KB
 Logical address
 Segment = 16 bits
 Offset = 16 bits

 Linear (physical) address = 20 bits


IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 70
Logical to Linear Address Translation
Linear address = Segment × 10 (hex) + Offset
Example:
segment = A1F0 (hex)
offset = 04C0 (hex)
logical address = A1F0:04C0 (hex)
what is the linear address?

Solution:
A1F00 (add 0 to segment in hex)
+ 04C0 (offset in hex)
A23C0 (20-bit linear address in hex)
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 71
Your turn . . .
What linear address corresponds to logical address
028F:0030?

Solution: 028F0 + 0030 = 02920 (hex)

Always use hexadecimal notation for addresses

What logical address corresponds to the linear address


28F30h?

Many different segment:offset (logical) addresses can


produce the same linear address 28F30h. Examples:
28F3:0000, 28F2:0010, 28F0:0030, 28B0:0430, . . .
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 72
Flat Memory Model
 Modern operating systems turn segmentation off
 Each program uses one 32-bit linear address space
 Up to 232 = 4 GB of memory can be addressed
 Segment registers are defined by the operating system
 All segments are mapped to the same linear address space

 In assembly language, we use .MODEL flat directive


 To indicate the Flat memory model

 A linear address is also called a virtual address


 Operating system maps virtual address onto physical addresses
 Using a technique called paging

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 73
Programmer View of Flat Memory
 Same base address for all segments Linear address space of
 All segments are mapped to the same a program (up to 4 GB)
linear address space 32-bit address
ESI
 EIP Register EDI DATA
 Points at next instruction 32-bit address
EIP
CODE
 ESI and EDI Registers
32-bit address
 Contain data addresses EBP STACK
 Used also to index arrays ESP
CS
 ESP and EBP Registers DS Unused
 ESP points at top of stack SS
ES
 EBP is used to address parameters and base address = 0
variables on the stack for all segments

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 74
Protected Mode Architecture
 Logical address consists of
 16-bit segment selector (CS, SS, DS, ES, FS, GS)
 32-bit offset (EIP, ESP, EBP, ESI ,EDI, EAX, EBX, ECX, EDX)
 Segment unit translates logical address to linear address
 Using a segment descriptor table
 Linear address is 32 bits (called also a virtual address)
 Paging unit translates linear address to physical address
 Using a page directory and a page table

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 75
Logical to Linear Address Translation

Upper 13 bits of
segment selector GDTR, LDTR
are used to index
the descriptor table

TI = Table Indicator
Select the descriptor table
0 = Global Descriptor Table
1 = Local Descriptor Table

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 76
Segment Descriptor Tables
 Global descriptor table (GDT)
 Only one GDT table is provided by the operating system
 GDT table contains segment descriptors for all programs
 Also used by the operating system itself
 Table is initialized during boot up
 GDT table address is stored in the GDTR register
 Modern operating systems (Windows-XP) use one GDT table

 Local descriptor table (LDT)


 Another choice is to have a unique LDT table for each program
 LDT table contains segment descriptors for only one program
 LDT table address is stored in the LDTR register
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 77
Segment Descriptor Details
 Base Address
 32-bit number that defines the starting location of the segment
 32-bit Base Address + 32-bit Offset = 32-bit Linear Address
 Segment Limit
 20-bit number that specifies the size of the segment
 The size is specified either in bytes or multiple of 4 KB pages
 Using 4 KB pages, segment size can range from 4 KB to 4 GB
 Access Rights
 Whether the segment contains code or data
 Whether the data can be read-only or read & written
 Privilege level of the segment to protect its access

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 78
Segment Visible and Invisible Parts
 Visible part = 16-bit Segment Register
 CS, SS, DS, ES, FS, and GS are visible to the programmer
 Invisible Part = Segment Descriptor (64 bits)
 Automatically loaded from the descriptor table

IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 79
Paging
 Paging divides the linear address space into …
 Fixed-sized blocks called pages, Intel IA-32 uses 4 KB pages
 Operating system allocates main memory for pages
 Pages can be spread all over main memory
 Pages in main memory can belong to different programs
 If main memory is full then pages are stored on the hard disk
 OS has a Virtual Memory Manager (VMM)
 Uses page tables to map the pages of each running program
 Manages the loading and unloading of pages
 As a program is running, CPU does address translation
 Page fault: issued by CPU when page is not in memory
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 80
Paging – cont’d
Main Memory
The operating
system uses

linear virtual address

linear virtual address


Page m ... Page n

space of Program 1

space of Program 2
page tables to ... ...
map the pages
in the linear Page 2 Page 2
virtual address Page 1 Page 1
space onto Page 0 Page 0
main memory
Hard Disk
The operating
Each running Pages that cannot system swaps
program has fit in main memory pages between
its own page are stored on the memory and the
table hard disk hard disk

As a program is running, the processor translates the linear virtual addresses


onto real memory (called also physical) addresses
IA-32 Architecture COE 205 – Computer Organization and Assembly Language – KFUPM
© Muhamed Mudawar – slide 81

You might also like