Escolar Documentos
Profissional Documentos
Cultura Documentos
• Datapath
• Unidade de Controle
Data
Register#
PC Address Instruction Registers ALU Address
Instruction Register#
memory Data
Register# memory
Data
• Revisão/Convenções adotadas
State State
element Combinational logic element
1 2
Clock cycle
State
Combinational logic
element
• Recursos em um Datapath:
– Um lugar para armazenar as instruções do programa
(Memória de instruções)
– Um lugar para armazenar o endereço da instrução a ser
lida na memória (Program Counter - PC)
– Somador para incrementar o PC para que ele aponte para
a próxima instrução
Instruction
address
PC
Instruction Add Sum
Instruction
memory
Add
Read
PC address
Instruction
Instruction
memory
Instruções R-type
ALU control
5 Read 3
register 1
Read
Register 5 data 1
Read
numbers register 2 Zero
Registers Data ALU ALU
5 Write result
register
Read
Write data 2
Data data
RegWrite
a. Registers b. ALU
ALU operatio n
Read 3
register 1 Read
Read data 1
register 2 Zero
Instruction
Registers ALU ALU
Write result
register
Read
Write data 2
data
RegWrite
• lw $t1,offset_value($t2) e sw $t1,offset_value,($t2)
M e m W rit e
A d dre s s Read
d ata 16 32
S ig n
e x te n d
W ri t e D a ta
d ata m e m ory
Me m Read
a . D a ta m e m o r y u n it b . S i g n - e x t e n s i o n u n it
3 ALU operation
Read
register 1 Read MemWrite
data 1
Read
Instruction register 2 Zero
Registers ALU ALU
Write Read
result Address
register data
Read
Write data 2
Data
data
memory
RegWrite Write
data
16 32
Sign MemRead
extend
Shift
left 2
ALU operation
Read 3
Instruction register 1
Read
data 1
Read
register 2 To branch
Registers ALU Zero
Write control logic
register
Read
data 2
Write
data
RegWrite
16 32
Sign
extend
3 ALUoperation
Read
register1 Read MemWrite
Read data1 MemtoReg
Instruction register2 ALUSrc Zero
Registers Read ALU ALU
Write data2 result Address Read
register M data
u M
Write x u
Data x
data
memory
Write
RegWrite data
16 32
Sign
extend MemRead
Add
Read Registers
ALU operation
register 1 3 MemWrite
PC Read
Read Read MemtoReg
address
register 2 data 1 ALUSrc Zero
Instruction ALU ALU
Write Read Address Read
register data 2 M result data
u M
Instruction Write x u
memory Data x
data
Write memory
RegWrite data
16 Sign 32 MemRead
extend
Controle da ALU
PCSrc
M
Add u
x
4 Add ALU
result
Shift
left 2
Registers
3 ALU operation
Read MemWrite
Read register 1 ALUSrc
PC Read
address Read data 1 MemtoReg
register 2 Zero
Instruction ALU ALU
Write Read Address Read
register M result data
data 2 u M
Instruction u
memory Write x Data x
data memory
Write
RegWrite data
16 32
Sign
extend MemRead
PCSrc
1
Add M
u
x
4 ALU 0
Add
result
Reg Write Shift
left 2
Instruction [5– 0]
ALUOp
Sinais de controle
Instruction [5 0]
Sinais de controle
– fetch da instrução
0
M
u
x
Add ALU 1
result
Add Shift
RegDst left 2
4 Branch
MemRead
Instruction [31– 26] MemtoReg
Control ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [5– 0]
0
M
u
x
ALU
Add result 1
Add Shift
RegDst left 2
4 Branch
MemRead
Instruction [31– 26] MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [5– 0]
0
M
u
x
ALU
Add 1
result
Add
Shift
RegDst left 2
4 Branch
MemRead
Instruction [31 26] MemtoReg
Control ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [5 0]
0
M
u
x
ALU
Add result 1
Add
Shift
RegDst left 2
4 Branch
MemRead
Instruction [31 26] MemtoReg
Control ALUOp
MemWrite
ALUSrc
Reg Write
Instruction [5 0]
• lw $t1, offset($t2)
– Instruction Fetch
– $t2 é lido
0
M
u
x
ALU
Add result 1
Add Shift
RegDst left 2
4 Branch
MemRead
Instruction [31– 26] MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [15– 0] 16 32
Sign
extend ALU
control
Instruction [5– 0]
Instrução branch
• beq $t1,$t2,offset
– Fetch da instrução
0
M
u
x
ALU
Add 1
result
Add
Shift
RegDst left 2
4 Branch
MemRead
Instruction [31– 26] MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [5– 0]
• J L1
– Fetch da instrução
Instruction [5– 0]
Exemplo 1:
– unidade de memória : 2 ns
Exemplo 1:
• Solução:
– CPI = 1
= 8 / 6.3 = 1.27
• todos os loads tem o mesmo tempo e são 33% das instruções (8 ns)
• todos os stores tem mesmo tempo e são 21% das instruções (7 ns)
• FP mul e div tem o mesmo tempo e são 5% das instruções (20 ns)
Exemplo 2:
Solução
• implementação multiciclos
Datapath multiciclos
Instruction
register
Data
PC Address
A
Register #
Instruction
Memory or data Registers ALU ALUout
Memory Register #
data B
Data register Register #
• Inclusão de multiplexadores
PC 0 0
M Instruction Read
Address [25– 21] register 1 M
u u
x Read x
Instruction Read A Zero
1 Memory [20– 16] register 2 data 1 1
MemData 0 ALU ALU ALUOut
Registers
Instruction M Write Read result
[15– 0] Instruction u register data 2 B 0
Write Instruction [15– 11] x 4 1 M
data 1 Write u
register data 2 x
Instruction 0 3
[15– 0] M
u
x
Memory 1
data 16 32
Sign Shift
register
extend left 2
PC 0 0
M Instruction Read
[25– 21] register 1 M
u Address u
x Read x
Instruction Read data 1 A Zero
1 Memory [20– 16] register 2 1
MemData 0 ALU ALU ALUOut
Registers
Instruction M Write Read result
[15– 0] register data 2 B 0
Instruction u
Write Instruction [15– 11] x 4 1 M
data 1 Write u
register data 2 x
Instruction 0 3
[15– 0] M
u
x
Memory 1
data 16 32 ALU
Sign Shift
register control
extend left 2
Instruction [5– 0]
PCWriteCond PCSource
PCWrite ALUOp
IorD Outputs
ALUSrcB
MemRead
Control ALUSrcA
MemWrite
RegWrite
MemtoReg
Op RegDst
IRWrite [5– 0]
0
M
Jump 1 u
Instruction [25– 0] 26 28 address [31-0] x
Shift
left 2 2
Instruction
[31-26] PC [31-28]
PC 0 0
M Instruction Read
[25– 21] register 1 M
u Address u
x Read x
Instruction Read A Zero
1 Memory
[20– 16] register 2 data 1 1
MemData 0 ALU ALU ALUOut
Registers
Instruction M Write Read result
[15– 0] register data 2 B
Instruction u 0
Write Instruction [15– 11] x 4 1 M
data Write
register 1 data u
2 x
Instruction 0 3
[15– 0] M
u
x
Memory 1
data 16 32 ALU
Sign Shift
register control
extend left 2
Instruction [5– 0]
• 1 - Instruction fetch
• IR = Memory[PC]
• PC = PC + 4
– Sinais ativados
• A = Reg[IR[25-21]];
• B = Reg[IR[20-16]];
• ALUOut = PC + (sign-extend (IR[15-0] << 2)
– ALUOut = A op B;
• Branch
– if ( A == B ) PC = ALUOut;
• Jump
– PC = PC[31-28] || (IR[25-0]<<2)
• Referência à memória
• instruções R-type
– Reg[IR[15-11]] = ALUOut;
• Load
– Reg[IR[20-16]] = MDR;
Start
Memory access
R-type instructions Branch instruction Jump instruction
instructions
(Figure 5.39) (Figure 5.40) (Figure 5.41)
(Figure 5.38)
Instruction decode/
Instruction fetch Register fetch
0
MemRead 1
ALUSrcA = 0
IorD = 0
IRWrite ALUSrcA = 0
Start ALUSrcB = 01 ALUSrcB = 11
ALUOp = 00 ALUOp = 00
PCWrite
PCSource = 00
e)
(Op = 'JMP')
yp
')
R -t
EQ
=
'B
( Op
W')
=
= 'S
p
(O
Op
or (
W')
= 'L
( Op
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
(Op = 'LW')
(O
p
=
'S
W
')
Memory Memory
access access
3 5
MemRead
MemWrite
IorD = 1
IorD = 1
Write-back step
4
RegWrite To state 0
MemtoReg = 1 (Figure 5.37)
RegDst = 0
Execution
6
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
R-type completion
7
RegDst = 1
RegWrite
MemtoReg = 0
To state 0
(Figure 5.37)
Paulo C. Centoducatte 1998 Morgan Kaufmann Publishers
Ch5-72
Diagrama de estados - Branch instructions
From state 1
(Op = 'BEQ')
Branch completion
8
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCWriteCond
PCSource = 01
To state 0
(Figure 5.37)
From state 1
(Op = 'J')
Jump completion
9
PCWrite
PCSource = 10
To state 0
(Figure 5.37)
')
- ty p
EQ
(Op = 'J')
R
p=
'B
=
') (O
Memo ry address 'S W
p
(O
p= Branch Jump
computation r (O
W ') o Exe cution completion co mpletion
= 'L
2 (Op 6 8 9
ALUSrcA = 1
ALUSrcA = 1 AL USrcA = 1 ALUSrcB = 00
ALUSrcB = 10 PCWrite
ALUSrcB = 00 AL UOp = 01
ALUOp = 00 PCSou rce = 10
ALUOp = 10 PC WriteCond
PCSource = 01
(O
(Op = 'LW')
p
=
'S
W
')
Memory Memo ry
acce ss access R-type completion
3 5 7
RegDst = 1
Me mRead Me m Write Reg Write
IorD = 1 IorD = 1 MemtoReg = 0
Write-ba ck step
4
RegDst = 0
Reg Write
MemtoReg = 1
• Exemplo:
• Solução:
– O número de ciclos de clocks para cada classe é:
• loads: 5
• stores: 4
• R-type : 4
• branches : 3
• jumps: 3
• Solução:
CPI = 4.04
Inputs
Next state
Inputs from instruction State register
register opcode field
Mem1
LW2
SW2
Rformat1
BEQ1
JUMP1
Microcode
storage
Datapath
Outputs control
outputs
Input
1
Sequencing
Microprogram counter
control
Adder
Exceções e interrupções
Detecção de exceção
• Dois tipos de exceção serão tratados: execução de uma
instrução não definida e overflow aritmético.
Jump 1M
Instruction [25– 0] 26 28 u
Shift address [31-0] x
left 2 2
Instruction CO 00 00 00 3
[31-26]
PC 0 PC [31-28]
0
M Instruction Read
[25– 21] register 1 M
u Address u
x Read x
Memory Instruction Read A Zero
1
[20– 16] register 2 data 1 1
MemData 0 ALU ALU ALUOut EPC
Registers
Instruction M Write Read result
[15– 0] register data 2 B
Instruction u 0
Write [15– 11] x
data
Instruction Write 4 1M
register 1 data u
2 x
Instruction 0 3 0 0
[15– 0] M M
u u Cause
x x
Memory 1 1 1
data 16 32 ALU
Sign Shift
register control
extend left 2
Instruction [5– 0]
Instruction decode/
Instruction fetch Register fetch
0
MemRead 1
ALUSrcA = 0
IorD = 0 ALUSrcA = 0
IRWrite ALUSrcB = 11
Start ALUSrcB = 01
ALUOp = 00 ALUOp = 00
PC Write
PCSource = 00
(O
)
')
ype
EQ
R-t
(Op = 'J')
=o
'B
p=
(O
=
the
W')
= 'S
p
r)
O p Ju mp
computation or ( Execution completion
W') co mpletion
= 'L
2 (Op 6 8 9
ALUSrcA = 1
ALUSrcA = 1 ALUSrcA = 1 ALUSrcB = 00
ALUSrcB = 00 PCWrite
ALUSrcB = 00 ALUOp = 01
ALUOp = 00 ALUOp = 10 PCSource = 10
PCWriteCond
PCSource = 01
(O
(Op = 'LW')
p
=
'S
W
')
Me mory Memory
access access R-type co mpletion IntCause = 0
IntCause = 1
3 5 7 11 10 CauseWrite
Cause Write
RegDst = 1 ALUSrcA = 0 ALUSrcA = 0
MemRead MemWrite RegWrite Overflow ALUSrcB = 01 ALUSrcB = 01
IorD = 1 IorD = 1 MemtoReg = 0 ALUOp = 01 ALUOp = 01
EPCWrite EPCWrite
PCWrite PCWrite
PCSource = 11 PCSource = 11
Write-back step
4 Overflow
RegWrite
MemtoReg = 1
RegDst = 0