10 - Processor Structure and Function
10 - Processor Structure and Function
Computer Organization
and Architecture
8th Edition
Chapter 09
Processor Structure and
Function
CPU Structure
• CPU must:
—Fetch instructions
—Interpret instructions
—Fetch data
—Process data
—Write data
CPU With Systems Bus
CPU Internal Structure
Registers
• CPU must have some working space
(temporary storage)
• Called registers
• Number and function vary between
processor designs
• One of the major design decisions
• Top level of memory hierarchy
Processor Registers
• There are ten 32-bit and six 16-bit
processor registers.
The registers are grouped into three
categories:
1.General registers
2.Control registers.
3. Segment registers.
The general registers are further divided
into the following groups:
1.Data registers
2.Pointer registers
3.Index registers.
Data Registers
Data Registers Four 32-bit data registers are used
for arithmetic, logical, and other operations. These
32-bit registers can be used in three ways:
1.As complete 32-bit data registers: EAX, EBX,
ECX, EDX.
2.Lower halves of the 32-bit registers can be used
as four 16-bit data registers: AX, BX, CX and DX.
3. Lower and higher halves of the above-mentioned
four 16-bit registers can be used as eight 8-bit data
registers: AH, AL, BH, BL, CH, CL, DH, and DL.
Some of these data registers have specific use in
arithmetical operations. AX is the primary
accumulator; it is used in input/output and most
arithmetic instructions. For example, in
multiplication operation, one operand is stored in
EAX or AX or AL register according to the size of
the operand. BX is known as the base register, as it
could be used in indexed addressing. CX is known
as the count register, as the ECX, CX registers
store the loop count in iterative operations. DX is
known as the data register. It is also used in
input/output operations. It is also used with AX
register along with DX for multiply and divide
operations involving large values.
Pointer Registers
The pointer registers are 32-bit EIP, ESP, and EBP registers
and corresponding 16-bit right portions IP, SP, and BP. There
are three categories of pointer registers:
1.Instruction Pointer (IP) - The 16-bit IP register stores
the offset address of the next instruction to be executed. IP in
association with the CS register (as CS:IP) gives the complete
address of the current instruction in the code segment.
2. Stack Pointer (SP) - The 16-bit SP register provides the
offset value within the program stack. SP in association with
the SS register (SS:SP) refers to be current position of data
or address within the program stack.
3.Base Pointer (BP) - The 16-bit BP register mainly helps in
referencing the parameter variables passed to a subroutine.
The address in SS register is combined with the offset in BP
to get the location of the parameter. BP can also be combined
with DI and SI as base register for special addressing.
Index Registers
Index Registers The 32-bit index registers,
ESI and EDI, and their 16-bit rightmost
portions, SI and DI, are used for indexed
addressing and sometimes used in addition
and subtraction. There are two sets of index
pointers:
1.Source Index (SI) - It is used as source
index for string operations.
2. Destination Index (DI) - It is used as
destination index for string operations.
Control Registers
Control Registers The 32-bit instruction
pointer register and the 32-bit flags register
combined are considered as the control
registers. Many instructions involve
comparisons and mathematical calculations
and change the status of the flags and some
other conditional instructions test the value
of these status flags to take the control flow
to other location.
The common flag bits are:
1.Overflow Flag (OF): It indicates the
overflow of a high-order bit (leftmost bit) of
data after a signed arithmetic operation.
2. Direction Flag (DF): It determines left
or right direction for moving or comparing
string data. When the DF value is 0, the
string operation takes left-to-right direction
and when the value is set to 1, the string
operation takes right-to-left direction.
3. Interrupt Flag (IF): It determines
whether the external interrupts like
keyboard entry, etc., are to be ignored or
processed. It disables the external interrupt
when the value is 0 and enables interrupts
when set to 1.
4. Trap Flag (TF): It allows setting the
operation of the processor in single-step
mode. The DEBUG program we used sets
the trap flag, so we could step through the
execution one instruction at a time.
5. Sign Flag (SF): It shows the sign of the
result of an arithmetic operation. This flag is
set according to the sign of a data item
following the arithmetic operation. The sign
is indicated by the high-order of leftmost
bit. A positive result clears the value of SF
to 0 and negative result sets it to 1.
6. Zero Flag (ZF): It indicates the result
of an arithmetic or comparison operation. A
nonzero result clears the zero flag to 0, and
a zero result sets it to 1.
7. Auxiliary Carry Flag (AF): It contains
the carry from bit 3 to bit 4 following an
arithmetic operation; used for specialized
arithmetic. The AF is set when a 1-byte
arithmetic operation causes a carry from bit
3 into bit 4.
8. Parity Flag (PF): It indicates the total
number of 1-bits in the result obtained from
an arithmetic operation. An even number of
1-bits clears the parity flag to 0 and an odd
number of 1-bits sets the parity flag to 1.
9. Carry Flag (CF): It contains the carry of
0 or 1 from a high-order bit (leftmost) after
an arithmetic operation. It also stores the
contents of last bit of a shift or rotate
operation.
Segment Registers
Segment Registers Segments are specific areas
defined in a program for containing data, code and
stack. There are three main segments:
1. Code Segment: It contains all the instructions
to be executed.
2.Data Segment: It contains data, constants and
work areas. A 16-bit Data Segment register or DS
register stores the starting address of the data
segment.
3.Stack Segment: It contains data and return
addresses of procedures or subroutines. It is
implemented as a 'stack' data structure.
Pipelining
Set of data processing elements connected in
series.
• Fetch
—PC contains address of next instruction
—Address moved to MAR
—Address placed on address bus
—Control unit requests memory read
—Result placed on data bus, copied to MBR,
then to IR
—Meanwhile PC incremented by 1
Data Flow (Data Fetch)
• IR is examined
• If indirect addressing, indirect cycle is
performed
—Right most N bits of MBR transferred to MAR
—Control unit requests memory read
—Result (address of operand) moved to MBR
Data Flow (Fetch Diagram)
Data Flow (Indirect Diagram)
Data Flow (Execute)
• May take many forms
• Depends on instruction being executed
• May include
—Memory read/write
—Input/Output
—Register transfers
—ALU operations
Data Flow (Interrupt Diagram)
Prefetch
• Fetch accessing main memory
• Execution usually does not access main
memory
• Can fetch next instruction during
execution of current instruction
• Called instruction prefetch
Pipelining
• Fetch instruction
• Decode instruction
• Calculate operands
• Fetch operands
• Execute instructions
• Write result