Você está na página 1de 92

Sistemas Processadores e Perifricos

Aula 5 - Reviso
Prof. Frank Sill Torres
DELT Escola de Engenharia
UFMG
Adaptado a partir dos Slides de Organizao de Computadores 2006/02 do professor Leandro Galvo
DCC/UFAM - galvao@dcc.ufam.edu.br e do Prof. Ricardo de Oliveira Duarte (DELT/UFMG)

1
1

Ponto fixo
:: Extenso de sinal :: Exemplo
-4dec (16 bits) para 32 bits:
1111 1111 1111 1100 bin
1111 1111 1111 1111

1111 1111 1111 1100 bin

Operaes com ponto fixo


:: Overflow
Soluo MIPS:
Causam excees no overflow:
Adio (add)
Adio imediata (addi)
Subtrao (sub)

No causam excees no overflow:


Adio sem sinal (addu)
Adio imediata sem sinal (addiu)
Subtrao sem sinal (subu)
3

Operaes com ponto fixo


:: Multiplicao
O multiplicador inicia na metade direita do produto

Multiplicando
32 bits

ALU 32 bits

Produto

Shift right
Escrever

Teste de
controle

64 bits

Operaes com ponto fixo


:: Multiplicao no MIPS
Produto (64 bits) colocado em um par de
registradores de 32 bits:
Hi armazena a parte mais significativa
Lo armazena a parte menos significativa

No gera exceo de overflow

Ponto flutuante (Padro IEEE 754)


Um nmero real pode ser representado no
seguinte formato:

(-1)s m Be

s
m
B
e

sinal
significando (mantissa)
base
expoente
6

Ponto flutuante Ponto fixo


Inteiros representados

-231

overflow
negativo

underflow
negativo

underflow
positivo

nmeros
representados

- (2 - 2-23) 2128

231 - 1

- 2-127

nmeros
representados

2-127

overflow
positivo

(2 - 2-23) 2128
7

Sistemas Processadores e Perifricos


Aula 6 - Via de Dados e Controle
(cap. 5)
Prof. Frank Sill Torres
DELT Escola de Engenharia
UFMG

Adaptado a partir dos Slides de Organizao de Computadores 2006/02 do professor


Leandro Galvo DCC/UFAM - galvao@dcc.ufam.edu.br
8

Cinco Componentes Clssicos

Processador
(ativo)
Controle

Via de
Dados
(Datapath)

Memria
(passiva)
Armazena
dados e
instrues de
programas
durante a
execuo

Dispositivos

Teclado,
Mouse

Entrada
Discos
Sada
Monitor,
Impressora

Cinco Componentes Clssicos


COMPUTADOR
S
REE TO
CEI R
TAS

RE
CE
IT
AS

16

32

20

36

24

40

12

28

44

48

64

80

5
2
5
6
60

68

84

72

88

76

92

CONTROLE
S
TEE TO
MPE R
RO
S

VIA DE DADOS
0
1
2
3
4

SE
TO
BO L
R
OS
96

PROCESSADOR

10
0
10
4
10
8

ENTRADA

SE
CARTO R
NES
11
2
11
6
12
0
12
4

12
8
13
2
13
6
14
0

MEMRIA

SADA

10

Cinco Componentes Clssicos

Modelo de Von Neumann (1945)


Conceito

de programa armazenado

Separao

da Unidade Aritmtica e de Controle

Utilizao

de barramentos e registradores

Hardware

de entrada e sada (I/O)

Processador

Barramento

Memria

11

Componentes do Processador

Via de Dados (datapath)


parte

do processador que contm o hardware


necessrio para execuo de todos as operaes
requeridas pelo computador

Controle
parte

do processador que comanda as aes da via de


dados

12

Implementao de Instrues no
Processador

Ciclo nico

Cada instruo executada em um 1 ciclo de clock

Ciclo de clock deve ser longo o suficiente para executar a


instruo mais longa

Desvantagem: velocidade global limitada velocidade da


instruo mais lenta

Tclock

Tadd

Tsrl

Tdiv

13

Implementao de Instrues no
Processador

Multi-ciclo

Quebra o ciclo de execuo em vrios passos

Executa cada passo em um ciclo de clock

Vantagem: cada instruo usa apenas o nmero de ciclos que ela


necessita

Tclock

Tadd

Tsrl

Tdiv

14

Implementao de Instrues no
Processador

Pipelined (linha de montagem)

Cada instruo executada em mltiplos ciclos

Executa uma etapa de cada instruo em cada ciclo

Processa mltiplas instrues em paralelo

Tclock

15

Ciclo nico

16

Construindo a via de dados

Para facilitar o entendimento da construo do


caminho de dados, vamos seguir a abordagem de
ciclo nico

Depois, mostraremos as modificaes


necessrias para tornar um projeto de ciclo nico
em um projeto multi-ciclo

17

Implementao de ciclo nico

Para executar qualquer instruo, precisamos


busc-la na memria

O registrador Program Counter (PC) utilizado


para ler a instruo da memria e armazen-la no
Registrador de Instruo (IR)

Um somador incrementa PC em 4 (uma word) e


coloca o resultado de volta em PC
18

Implementao de ciclo nico

Add
4

PC

Read
address
Instruction
Instruction
memory

IR

Implementao de ciclo nico


:: Tipo R

Instrues do tipo R:

Leem dois registradores (Rs, Rt)

Escrevem em um registrador (Rd)

Ponto de vista do Banco de Registradores:

Leitura:

Nmeros (endereos) dos registradores a serem lidos

Sada de dados para os contedos lidos

Escrita

Nmero (endereo) do registrador a ser escrito

Entrada de dados a serem escritos


20

Implementao de ciclo nico


:: Tipo R
leitura
5
Register
numbers

5
5

Data

Read
register 1
Read
register 2
Write
register
Write
data

escrita

Read
data 1

Banco de
Registradores

Read
data 2

RegWrite

Data

rt

rs

op

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

rd shamt funct

Implementao de ciclo nico


:: Tipo R

IR

Banco de
Registradores

Dados de
escrita
RegWrite

Dados de
leitura

Implementao de ciclo nico


:: Load / Store

Calculam um endereo de memria somando:


O

registrador base (Rs) de 32 bits

Campo

de offset de 16 bits

Precisamos de uma unidade para estender o


sinal do campo de offset para um valor de 32 bits

23

Implementao de ciclo nico


:: Load / Store

Manipulam memria de dados:

Instrues Store escrevem dados

Instrues Load leem dados

Precisamos de uma memria de dados com:

Sinal de controle para escrita

Sinal de controle para leitura

Entrada de endereo para leitura/escrita

Entrada de dados para escrita

Sada de dados de leitura


24

rt
rs
op

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

immediate

Implementao de ciclo nico


:: Load / Store

IR

Read
register 1
Read
register 2
Write
register

MemWrite

Read
data 1
Banco de
Registradores

Dados de
leitura

Read
data 2

Write
data

Address

Write
data

Read
data
Memria de
dados

RegWrite
16

Sign
extend

32

MemRead

Implementao de ciclo nico


:: Desvios (branch)

Possuem trs operandos:


Dois

registradores a serem comparados

Offset

de 16 bits para calcular o endereo de destino

Dois detalhes:
Offset

deve ser deslocado 2 bits para a esquerda, para


ser expresso em bytes

depender do resultado da comparao, o novo valor


de PC pode ser (PC + 4) ou (PC + (offset << 2))
26

Implementao de ciclo nico


:: Desvios (branch)

Como o deslocamento constante, no se utiliza


um circuito shifter, mas sim um deslocamento de
sinais que acrescenta 00 extremidade direita

A comparao implementada como uma


subtrao
Para

operandos iguais, a ALU sinaliza resultado ZERO

27

Implementao de ciclo nico


:: Desvios (branch)
PC + 4

offset

Add Sum

rt
rs

Read
register 2
Write
register

Banco de
Registradores

ALU Zero

Read
data 2

Write
data

16

OpALU

Read
data 1

RegWrite

IR

Destino do
desvio

Shift
left 2
Read
register 1

op

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Sign
extend

32

Lgica de
controle do
desvio

Implementao de ciclo nico


:: Saltos (jump)

Substitui os 28 bits menos significativos do PC


pelos 26 bits menos significativos do IR
deslocados 2 bits esquerda
28 bits
PC
IR

Target << 2

op

target
2 bits

Novo PC
29

Implementao de ciclo nico


:: Saltos (jump)
26

28

32

Left
shift 2

Add
PC+4[31:28]

Read
address
Instruction
Memria de
instrues

op

PC

target

30

IR

Combinando instrues
:: Tipo R + Load/Store

Para criar um caminho de dados com hardware


compartilhado, deve-se suportar 2 origens para:

Segunda entrada da ALU:

Tipo R: registrador

Load/Store: campo immediate

Dados escritos no banco de registradores:

Tipo R: sada da ALU

Load: memria de dados

Registrador a ser escrito no banco:

Tipo R: Rd

Load: Rt

Uso de multiplexadores
(MUX)
31

Combinando instrues
:: Tipo R + Load/Store
opALU
Rs
I
n
s
t
r
u

Rt

Rd

M
U
X

RegDst

MemWrite

Read
register 1
Read
register 2

Read
data 1

Write
register

Read
data 2

MemtoReg
OrigALU

Banco de
Write Registradores
data

Offset

ALU ALU
result

Address

Read
data

Memria de
dados

M
U
X

Write
data

RegWrite
16

M
U
X

Zero

Sign
extend

32

MemRead

32

Combinando instrues
:: Tipo R + Load/Store
add $t0, $s1, $s2
opALU
Rs
I
n
s
t
r
u

Rt

Rd

M
U
X

RegDst

MemWrite

Read
register 1
Read
register 2

Read
data 1

Write
register

Read
data 2

MemtoReg
OrigALU

Banco de
Write Registradores
data

Offset

ALU ALU
result

Address

Read
data

Memria de
dados

M
U
X

Write
data

RegWrite
16

M
U
X

Zero

Sign
extend

32

MemRead

33

Combinando instrues
:: Tipo R + Load/Store
sw $t0, 16($s2)
opALU
Rs
I
n
s
t
r
u

Rt

Rd

M
U
X

RegDst

MemWrite

Read
register 1
Read
register 2

Read
data 1

Write
register

Read
data 2

MemtoReg
OrigALU

Banco de
Write Registradores
data

ALU ALU
result

Address

Read
data

Memria de
dados

M
U
X

Write
data

RegWrite
16
Offset

M
U
X

Zero

Sign 32
extend

MemRead

34

Combinando instrues
:: Tipo R + Load/Store
lw $t0, 16($s2)
opALU
Rs
I
n
s
t
r
u

Rt

Rd

M
U
X

RegDst

MemWrite

Read
register 1
Read
register 2

Read
data 1

Write
register

Read
data 2

MemtoReg
OrigALU

Banco de
Write Registradores
data

Offset

ALU ALU
result

Address

Read
data

Memria de
dados

M
U
X

Write
data

RegWrite
16

M
U
X

Zero

Sign
extend

32

MemRead

35

Combinando instrues
:: Tipo R + Load/Store + Desvios

Um multiplexador adicional necessrio para


selecionar o valor a ser escrito em PC:
Endereo

de instruo seguinte (PC + 4), ou

Endereo

de destino do desvio (PC + (offset <<2))

36

Combinando instrues
:: Tipo R + Load/Store + Desvios
OrigPC
M
U
X

Add
Add ALU
result

4
Shift
left 2

Rs

PC

Read
address

Rt

Instruction
Rd
Memria de
instrues

Read
register 1
Read
Read
register 2 data 1
M
U
X

Write
register

Read
data 2

Banco de
Write
dataRegistradores

RegDst
RegWrite

16

$t0 = $t1
beq $t0,$t1,label

OrigALU 4

M
U
X

opALU

Zero
ALU ALU
result

MemWrite
MemtoReg

Address

Memria de
dados
Write

data
Sign
extend

Read
data

32

MemRead

M
U
X

Combinando instrues
:: Tipo R + Load/Store + Desvios
OrigPC
M
U
X

Add
Add ALU
result

4
Shift
left 2

Rs

PC

Read
address

Rt

Instruction
Rd
Memria de
instrues

Read
register 1
Read
Read
register 2 data 1
M
U
X

Write
register

Read
data 2

Banco de
Write
dataRegistradores

RegDst
RegWrite

16

$t0 $t1
beq $t0,$t1,label

OrigALU 4

M
U
X

opALU

Zero
ALU ALU
result

MemWrite
MemtoReg

Address

Memria de
dados
Write

data
Sign
extend

Read
data

32

MemRead

M
U
X

Implementando o Controle
:: Controle da ALU

Instrues do tipo R
ALU

realiza ao determinada pelo campo funct

Load / Store
ALU

soma contedo do registrador base com offset


para obter o endereo de memria

Desvios
ALU

realiza uma subtrao

39

Implementando o Controle
:: Controle da ALU

Zero
ALU ALU
result

ALU
control
opALU

Instruo
Load/Store
Desvio
Tipo R

Entrada de controle
opALU
na ALU
00
01
10

add
sub
funct

Implementando o Controle
:: Controle da ALU

O circuito lgico da unidade de controle da ALU


obtido a partir da tabela verdade construda para
as combinaes desejadas do campo funct com
os bits de opALU

A sada da tabela verdade (e do circuito lgico


sintetizado a partir dela) ser os bits de entrada
do controle da ALU, os quais determinaro que
operao ser realizada (soma, and, shift, etc.)
41

Implementando o Controle
:: Unidade de controle principal

Deve-se criar uma tabela verdade para as combinaes


desejadas do campo op da instruo gravada em IR, a
fim de produzir os correspondente sinais de controle em:

RegDst

RegWrite

OrigALU

OrigPC

MemRead

MemWrite

MemtoReg
42

Implementando o Controle
:: Unidade de controle principal
Sinal de
Controle

Efeito quando inativo (zero)

Efeito quando ativo (um)

RegDst

O registrador de destino indicado no


campo Rt (bits 20:16)

O registrador de destino indicado no


campo Rd (bits 15:11)

RegWrite

Nenhum

O registrador destino escrito com o


valor da entrada Write data

OrigALU

O 2 operando da ALU um registrador O 2 operando da ALU o campo imm


(Read data 2)
estendido para 32 bits

OrigPC

O PC substitudo pelo output do


somador que calcula PC+4

O PC substitudo pelo output do


somador que calcula o destino do salto

MemRead

Nenhum

O contedo da posio de memria


endereada colocado nas sadas

MemWrite

Nenhum

O contedo da posio de memria


endereada reescrito

MemtoReg

O valor a escrever no registrador o


resultado da ALU

O valor a escrever no registrador lido


da memria de dados

Implementando o Controle
:: Unidade de controle principal
Instruction [25 0]
26

Shift
left 2

Jump address [31 0]


28

M
u
x

M
u
x

ALU
Add result

Zero
ALU ALU
result

Address

PC+4 [31 28]

Add
4
Instruction [31 26]

Control

Instruction [25 21]


PC

Read
address

Instruction
memory

Read
register 1

Instruction [20 16]


Instruction
[31 0]
Instruction [15 11]

Shift
left 2

RegDst
Jump
Branch
MemRead
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite

0
M
u
x
1

Read
data 1

Read
register 2
Registers Read
Write
data 2
register

0
M
u
x
1

Write
data

Write
data
Instruction [15 0]

16

Instruction [5 0]

Sign
extend

32
ALU
control

Read
data
Data
memory

1
M
u
x
0

Implementando o Controle
:: Unidade de controle principal

Todos os elementos de estado (registradores,


memria) tm o clock como uma entrada implcita

Unidade de controle pode definir todos os sinais


de controle baseada no campo opcode da
instruo, exceto OrigPC, que depende da sada
zero da ALU no caso de instrues de desvio

45

Implementando o Controle
:: Unidade de controle principal
Entrada
opcode na
unidade de
controle

Sadas da
unidade de
controle

Opcode
Nome
Bit31
Bit30
Bit29
Bit28
Bit27
Bit26
RegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUop1
ALUop0

0h
R
0
0
0
0
0
0
0
1
0
1
0
0
0
1
0

23h
Lw
1
0
0
0
1
1
1
0
1
1
1
0
0
0
0

2Bh
Sw
1
0
1
0
1
1
X
0
X
0
0
1
0
0
0

4h
Beq
0
0
0
1
0
0
X
1
X
0
0
0
1
0
1

46

Inconvenientes do ciclo nico

Ciclo de clock tem mesma durao para todas


instrues: ciclos de clocks por instruo (CPI) = 1

Ciclo de clock longo suficiente para executar a


instruo mais demorada, que neste caso lw

Apesar do CPI ser 1, o perodo de clock (Tclock)


elevado o que prejudica o desempenho do CPU

Texec N instr CPI Tclock

47

Exemplo: Desempenho Ciclo nico

Considere uma mquina com uma unidade de ponto


flutuante adicional

Assuma que os atrasos sejam os seguintes:


Componente

Atraso (ns)

Memria

ALU

Unidade de PF (+ / -)

Unidade de PF ( / )

16

Acesso a registradores

MUX, controle, acesso ao PC, extenso de


sinal e ligaes

48

Exemplo: Desempenho Ciclo nico

Assuma o seguinte mix de instrues:


Instruo

Load

31

Store

21

Tipo R

25

Branch

Jump

Operaes PF (+ / -)

Operaes PF ( / )

49

Exemplo: Desempenho Ciclo nico

Compare o desempenho de
a) Uma implementao de ciclo nico usando clock de
perodo fixo
b) Uma implementao de clock com perodo varivel

Cada instruo executa em um ciclo de clock


O ciclo to longo quanto seja necessrio para a
executar a instruo
Na prtica, isto no plausvel!! Apenas como exerccio

50

Exemplo: Desempenho Ciclo nico


Tipo de
Instruo

Load word
Store word
R-format
Branch
Jump
FP mul/div
FP add/sub

Mem. Leitura oper.


Instr. Regist. ALU

2
2
2
2
2
2
2

1
1
1
1
1
1

2
2
2
2

Mem.
Dados

Escr .
Reg.

2
2

PF
add/
sub

PF
mul/
div

1
1

16
8

Tempo
Total
ns.

8
7
6
5
2
20
12

51

Exemplo: Desempenho Ciclo nico

Perodo de clock considerando perodo fixo =


tempo da instruo mais longa = 20 ns.

Tempo mdio de clock considerando perodo varivel =


8 31 % + 7 21 % + 6 27 % + 5 5 % +
2 2 % + 20 7 % + 12 7 % = 7.0 ns

Portanto:

Desempenhociclo nico
Desempenhociclo varivel

20

2,9
7

52

Multi-ciclo

53

Reviso do slide anterior

Multi-ciclo

Quebra o ciclo de execuo em vrios passos

Executa cada passo em um ciclo de clock

Vantagem: cada instruo usa apenas o nmero de ciclos que ela


necessita

Tclock

Tadd

Tsrl

Tdiv

54

Dividindo Instrues em Estgios

Possveis estgios:
Instruction

Fetch (IF) Carga de instruo e incremento


do registrador PC

Instruction

Decode (ID) Decodificao e carga de


registrador(es) do banco

Execuo

(EX) operao da ALU, cmputo de


endereo de memria ou finalizao de desvios

MEM

Acesso memria ou finalizao de instruo R

Write

Back (WB) Finalizao de leitura de memria


55

Dividindo Instrues em Estgios

Cada estgio toma um ciclo de clock

Nem todas as instrues usam todos os estgios

Em MIPS, as instrues tomam entre 3 5 ciclos


(estgios)

56

Dividindo Instrues em Estgios

Implementao multi-ciclo permite que uma


unidade funcional seja usada mais de uma vez
por instruo, desde que seja usada em
diferentes ciclos de clock

O compartilhamento de hardware e a reduo do


tempo de execuo constituem as principais
vantagens de um projeto multi-ciclo
57

Dividindo Instrues em Estgios

Registradores so adicionados aps cada


unidade funcional para conter a sada dessa
unidade at o valor ser utilizado em um ciclo de
clock subsequente

Esses registradores so invisveis ao


programador

Sua funo evitar perda de sincronizao nas


transies de clock
58

Dividindo Instrues em Estgios

IR (registrador de instruo) usado para guardar a


sada da memria para uma leitura de instruo

MDR (registrador de dados da memria) usado para


guardar a sada da memria para uma leitura de dados

A e B usados para conter os valores dos registradores


operandos lidos do banco de registradores

ALUOut contm a sada da ALU


59

Dividindo Instrues em Estgios

Ins truction
re gis te r
PC

Addre s s

Da ta
A
Re gis te r #

Ins truction
Me mory
or data

Da ta

ALU

Re gis te rs
Me mory
da ta
re gis te r

ALUOut

Re gis te r #
B
Re gis te r #

60

Dividindo Instrues em Estgios


:: Incluso de MUX

Como vrias unidades funcionais so compartilhadas


para diferentes finalidades, precisamos de:

Incluir multiplexadores

Expandir os multiplexadores existentes

Como MUX e registradores so muito pequenos se


comparados a uma unidade de memria ou ALU
Portanto, a economia na eliminao destes
compensa os custos de adio daqueles

61

Dividindo Instrues em Estgios


:: Incluso de MUX

Memria nica:

Requer um MUX para selecionar se o endereo de acesso


memria vem de PC (instruo) ou de SadaALU (dados)

ALU nica:

Um MUX adicional includo na primeira entrada para


escolher entre o registrador A ou o PC

O MUX da segunda entrada da ALU expandido para quatro


entradas, a fim de poder selecionar a constante 4 (incremento
do PC) e o campo offset estendido e deslocado (desvios)
62

Dividindo Instrues em Estgios


:: Incluso de MUX

Trs origens para o valor de PC:

Sada da ALU (PC + 4) (Entrada 1)

Registrador ALUOut, onde armazenado o endereo de


desvio, aps ele ser calculado (Entrada 2)

26 bits menos significativos do IR deslocados de 2 esquerda


e concatenados com os 4 bits mais significativos de PC + 4, no
caso de jumps (Entrada 0)

63

Dividindo Instrues em Estgios


:: Incluso de MUX
0

1u
2
PC

0
M
u
x
1

Addres s
Me mory
MemDa ta
Write
da ta

Ins truction
[25 21]

Rea d
re gis te r 1

Ins truction
[20 16]

Re ad
Rea d
re gis te r 2 da ta 1
Re gis te rs
Write
Re ad
re gis te r da ta 2

Ins truction
[15 0]
Ins truction
re gis te r
Ins truction
[15 0]

Me mory
da ta
re gis te r

0
M
Ins truction u
x
[15 11]
1

B
4

Write
da ta

0
M
u
x
1
16

Sign
e xtend

0
M
u
x
1

32

Zero
ALU ALU
res ult

ALUOut

0
1 M
u
2 x
3

S hift
le ft 2

64

Dividindo Instrues em Estgios


:: Linhas de controle

As unidades de estado visveis ao programador (PC,


memria, banco de registradores) e IR precisaro de
sinais de controle de escrita

Memria precisar de um sinal de leitura

65

Dividindo Instrues em Estgios


:: Linhas de controle
Sinal de
Controle

Efeito quando inativo (zero)

Efeito quando ativo (um)

RegDst

O registrador de destino indicado O registrador de destino indicado


no campo Rt (bits 20:16)
no campo Rd (bits 15:11)

RegWrite

Nenhum

O registrador destino escrito com


o valor da entrada Write data

Primeiro operando da ALU o PC

Primeiro operando da ALU vem do


registrador A

MemRead

Nenhum

O contedo da posio de
memria endereada colocado
nas sadas

MemWrite

Nenhum

O contedo da posio de
memria endereada reescrito

OrigAALU

66

Dividindo Instrues em Estgios


:: Linhas de controle
Sinal de
Controle

Efeito quando inativo (zero)

Efeito quando ativo (um)

MemtoReg

O valor a escrever no registrador


vem de ALUOut

O valor a escrever no registrador


lido da memria de dados

IouD

PC usado para fornecer o


endereo para a unidade de
memria

ALUOut usado para fornecer


endereo para unidade de
memria

IR Write

Nenhum

Sada da memria escrita no IR

Nenhum

PC escrito; a origem
controlada por OrigPC

WritePC

WritePCCond Nenhum

PC escrito se a sada Zero da


ALU tambm estiver ativa
67

Dividindo Instrues em Estgios


:: Linhas de controle
Sinal de
Controle

OpALU

OrigBALU

Valor
(binrio)

Efeito

00

ALU realiza adio

01

ALU realiza subtrao

10

Campo funct determina operao da ALU

00

Segunda entrada da ALU vem do registrador B

01

Segunda entrada da ALU a constante 4

10

Segunda entrada da ALU so os 16 bits menos


significativos de IR com sinal estendido

11

Segunda entrada da ALU so os 16 bits menos


significativos de IR com sinal estendido, deslocados de 2
bits para a esquerda

Dividindo Instrues em Estgios


:: Linhas de controle
Sinal de
Controle

Valor
(binrio)

Efeito

00

Sada da ALU (PC + 4) escrita em PC

01

ALUOut escrito em PC (desvios)

10

Endereo de destino do jump, deslocado de 2 bits


esquerda e concatenado com os 4 bits mais significativos
de de PC + 4 escrito em PC

OrigPC

69

Dividindo Instrues em Estgios


:: Linhas de controle
PCWriteCond

PCSource

PCWrite
ALUOp
Outputs
IorD
ALUSrcB
MemRead
ALUSrcA
Control
MemWrite
RegWrite
MemtoReg
Op
RegDst
IRWrite
[5 0]
0
M

26

Instruction [25 0]

PC

0
M
u
x
1

Shift
left 2

Instruction
[31-26]
Address
Memory
MemData
Write
data

Instruction
[25 21]

Read
register 1

Instruction
[20 16]

Read
Read
register 2 data 1
Registers
Write
Read
register data 2

Instruction
[15 0]
Instruction
register
Instruction
[15 0]
Memory
data
register

0
M
Instruction u
x
[15 11]
1

B
4

Write
data

0
M
u
x
1
16

Sign
extend

32

Instruction [5 0]

Shift
left 2

1 u

Jump
address [31-0]

x
2

PC [31-28]

0
M
u
x
1

28

Zero
ALU ALU
result

ALUOut

0
1 M
u
2 x
3

ALU
control

70

Estgio 1
Instruction Fetch (IF)

Usa o registrador Program Counter (PC) para ler


a instruo da memria e armazen-la no
Registrador de Instruo (IR)
Incrementa PC em 4 e coloca o resultado de volta
em PC
IR

= *PC;

// IR = valor que esta


// armazenado no endereo
// que o PC indica

PC

= PC + 4;
71

Estgio 1: IF
IR = *PC
PC = PC + 4

I
R
PC

MemWrite
ADDR

Memory
RD

PC + 4

WD
MemRead

M
D
R

Instruction I
5

RN1

RN2

WN

Registers

RD1

Operation
3

Zero

ALU

WD
RD2

ALU
OUT

RegWrite

Carga de Instruo

72

Estgio 2
Instruction Decode (ID)

L os campos correspondentes aos registradores rs e rt,


independentemente do tipo de instruo

Os valores lidos so colocados nos registradores


temporrios A e B

Computa o endereo de desvio, considerando que a


instruo possa ser um branch

A = Reg[IR[25-21]];

B = Reg[IR[20-16]];

ALUOut = PC + (sign-extend(IR[15-0]) << 2);

73

Estgio 2
Instruction Decode (ID)
A = Reg[IR[25-21]];
(A = Reg[rs])
B = Reg[IR[20-15]];
(B = Reg[rt])
ALUOut = (PC + sign-extend(IR[15-0]) << 2)

I
R
PC

MemWrite
ADDR

Memory
RD

PC + 4

WD
MemRead

M
D
R

Instruction I
5

RN1

RN2

WN

Registers

RD1

Reg[rs]

Operation
3

Zero

Branch
Target
Address

ALU

WD

ALU
OUT

RD2

RegWrite

Reg[rt]

74

Decodificao de Instruo e Carga de Registrador

Estgio 3
Execution (EX)

A ALU executar uma das quatro funes abaixo,


dependendo do tipo da instruo:
Referncia memria (para load/store):
ALUOut = A + sign-extend(IR[15-0]);
Tipo R
ALUOut = A op B;
Branch:
if (A==B) PC = ALUOut;
Jump:
PC = PC[31-28] concat (IR(25-0) << 2)

75

Estgio 3:EX
Instrues de acesso memria
ALUOut = A + sign-extend(IR[15-0]);

I
R

Instruction I
5

PC

RN1

MemWrite
ADDR

Memory
RD

PC + 4

WD
MemRead

M
D
R

RN2

Reg[rs]

RD1

Mem.
Address

WN

Registers

Operation

Zero

ALU

WD

ALU
OUT

RD2

RegWrite

Reg[rt]

76

Estgio 3: EX
Instruces tipo R
ALUOut = A op B

I
R
PC

MemWrite
ADDR

Memory
RD

PC + 4

WD
MemRead

M
D
R

Instruction I
5

RN1

RN2

WN

Registers

RD1

Reg[rs]

Operation
3

Zero

R-Type
Result

ALU

WD

ALU
OUT

RD2

RegWrite

Reg[rt]

77

Estgio 3: EX
Branch
if (A == B) PC = ALUOut;

I
R
PC

MemWrite
ADDR

Memory

Branch
Target
Address

RD
WD
MemRead

M
D
R

Instruction I
5

RN1

RN2

WN

Registers

RD1

Reg[rs]

Operation
3

Zero

Branch
Target
Address

ALU

WD

ALU
OUT

RD2

RegWrite

Reg[rt]

78

Estgio 3: EX
Jump
PC = PC[31-28] concat (IR[25-0] << 2)

I
R
PC

MemWrite
ADDR

Memory

Jump
Address

RD
WD
MemRead

M
D
R

Instruction I
5

RN1

RN2

WN

Registers

RD1

Reg[rs]

Operation
3

Zero

Branch
Target
Address

ALU

WD

ALU
OUT

RD2

RegWrite

Reg[rt]

79

Estgio 4
Acesso memria (MEM)

Instrues de acesso memria:

Load: Dados so lidos na memria e escritos no registrador de


dados da memria (MDR)
MDR = Memory[ALUOut];

Store: Dados so escritos na memria


Memory[ALUOut] = B;

Instrues do tipo R:

A sada da ALU escrita no registrador de destino


Reg[IR[15-11]] = ALUOut;
80

Estgio 4: MEM
Leitura de memria (lw)
MDR = Memory[ALUOut];

I
R

Instruction I
5

PC

RN1

MemWrite
ADDR

Memory
RD

PC + 4

WD

M
D
R

MemRead

RN2

Reg[rs]

WN

Registers

RD1

Mem.
Address

Operation

Zero

ALU

WD

ALU
OUT

RD2

RegWrite

Mem.
Data

Reg[rt]

81

Estgio 4: MEM
Escrita de memria (sw)
Memory[ALUOut] = B;

I
R
PC

MemWrite
ADDR

Memory
RD

PC + 4

WD
MemRead

M
D
R

Instruction I
5

RN1

RN2

WN

Registers

RD1

Reg[rs]

Operation
3

Zero

ALU

WD

ALU
OUT

RD2

RegWrite

Reg[rt]

82

Estgio 4: MEM
Instrues de Tipo R
Reg[IR[15:11]] = ALUOUT

I
R
PC

MemWrite
ADDR

Memory
RD

PC + 4

WD
MemRead

M
D
R

Instruction I
5

RN1

RN2

WN

Registers

RD1

Reg[rs]

Operation
3

Zero

R-Type
Result

ALU

WD

ALU
OUT

RD2

RegWrite

Reg[rt]

83

Estgio 5
Write Back (WB)

Depende do tipo de instruo


Load: Escrita no registrador:

Reg[IR[20-16]]= MDR;

Estgio final

84

Estgio 5: WB
Finalizao de leitura de memria (lw)
Reg[IR[20-16]] = MDR;

I
R
PC

MemWrite
ADDR

Memory
RD

PC + 4

WD

M
D
R

MemRead

Instruction I
5

RN1

RN2

WN

Registers

RD1

Reg[rs]

Operation
3

Zero

Mem.
Address

ALU

WD

ALU
OUT

RD2

RegWrite

Mem.
Data

Reg[rt]

85

Resumo Multi-ciclo
Tipo de instruo
Estgio
Carga de Instruo

Ao Tipo R

(IF)

Decodificao Instruo
Carga de Registrador

(ID)

Execuo (EX)
Computo de Endereo
Finalizao branch/jump
Acesso memria
Finalizao tipo R
(MEM)

Finalizao Leitura Mem.

ALUOut = A op B

Reg [IR[15-11]] =
ALUOut

Action Memria
Ao Branch
IR = Memory[PC]
PC = PC + 4
A = Reg [IR[25-21]]
B = Reg [IR[20-16]]
ALUOut = PC + (sign-extend (IR[15-0]) << 2)
ALUOut = A + sign-extend
if (A ==B) then
(IR[15-0])
PC = ALUOut

Ao Jump

PC = PC [31-28] II
(IR[25-0]<<2)

Load: MDR = Memory[ALUOut]


or
Store: Memory [ALUOut] = B
Load: Reg[IR[20-16]] = MDR

(WB)
86

Exemplo: CPI em uma CPU multi-ciclo

Assuma um mix de instrues com:


Instruo

No. de ciclos

Load

22

Store

11

Tipo R

49

Branch

16

Jump

Qual CPI (ciclos de clock por instruo), assumindo que


cada estgio toma um ciclo de clock?
87

Exemplo: CPI em uma CPU multi-ciclo

Soluo:
N

CPI total

instr , i

CPI i

i 1

N instr , total

N instr , i

N
i 1

CPI i

instr , total

0, 22 5 0,11 4 0, 49 4 0,16 3 0,02 3

4,04

Resumo Multi-ciclo

Instrues MIPS levam de 3 a 5 etapas de execuo

As duas primeiras etapas (IF e ID) so comuns a todas


instrues

As clulas vazias na tabela indicam que a classe de


instrues representada pela coluna leva menos ciclos

No hardware multi-ciclo, esses ciclos no ficam ociosos,


pois uma instruo executada logo aps a anterior
89

O que vocs aprenderam hoje?

Diferenas entre ciclo nico e multi-ciclo

Implementao de ciclo nico


De

instrues tipo R / Load e Store / desvios e jumps

Controle

ALU

Implementao de multi-ciclo
Incluso

de multiplexadores

Estgios

Clculo do CPI
90

Questo

Definatodosospassosnecessriosparaasinstruesseguintesquando
elesforemexecutadosemumaarquiteturaMIPSmulticiclo:
jlabel3 lw $s3,12($t0), beq $t2,$t4,$t1,sub$s1,$s2,$s3.

j label3

IF, ID, EX

lw $s3, 12($t0)

IF, ID, EX, MEM, WB

beq $t2, $t4, $t1

IF, ID, EX

sub $s1, $s2, $s3

IF, ID, EX, MEM

O que vocs aprenderam hoje?

Implementao de multi-ciclo
Incluso
Linhas

de multiplexadores

de controle

Estgios

Controle
Mquinas

de estados Finitos (FSM)

Implementao

Clculo do CPI