Você está na página 1de 36

Arquiteturas de Computadores

Implementação monociclo de MIPS

Fontes dos slides: Patterson &


Hennessy book website
(copyright Morgan Kaufmann)
e Dr. Sumanta Guha
Implementando MIPS
 Implementação do conjunto de instruções MIPS
 Simplificado para conter somente
 Instruções lógico-aritméticas: add, sub, and, or, slt
 Instruções de referência à memória: lw, sw
 Instruções de controle de fluxo: beq, j

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

op rs rt rd shamt funct R-Format


6 bits 5 bits 5 bits 16 bits

op rs rt offset I-Format
6 bits 26 bits

op address J-Format
Implementando MIPS: Ciclo
Busca/Execução
 Visão alto nível da implementação do ciclo de busca/execução de uma
instrução
 usa o registrador contador de instrução (PC) para fornecer o endereço da
instrução
 busca a instrução na memória e incrementa PC
 usa campos da instrução para selecionar os registradores a serem lidos
 executa a instrução
 repita …

Data

Register #
PC Address Instruction Registers ALU Address
Register #
Instruction
memory Data
Register # memory

Data
Estilos para implementação do
processador
 Monociclo
 Executa cada instrução em um ciclo de relógio

 O ciclo de relógio deve ser longo o suficiente para que a


instrução que demanda maior tempo seja executada
 desvantagem: tão rápido quanto a instrução mais lenta

 Multi-Ciclos
 Quebra o ciclo de busca/execução em vários passos

 executa 1 passo em cada ciclo de relógio

 vantagem: cada instrução usa somente o número de ciclos que


precisa
 Pipelined
 executa cada instrução em vários passos

 executa 1 passo / instrução em cada ciclo de relógio

 Processa múltiplas instruções em paralelo


Elementos funcionais

 Dois tipos de elementos funcionais no hardware:


 elementos que operam os dados (denominados elementos
combinacionais )
 elementos que contêm dados (denominados elementos de estado ou
sequenciais)
Elementos Combinacionais

 Trabalham com uma função input  output, e.g., ALU


 Lógica combinacional lê dados de entrada de um registrador e escreve
dados no mesmo registrador ou em um diferente
 Leitura/escrita acontecem em um único ciclo–elemento combinacional não
armazena dado de um ciclo para outro

Unidades de hardware com lógica


combinacional

State State State


Combinational logic
element Combinational logic element element
1 2

Clock cycle
Elementos de Estado

 Elementos de estado armazenam dados, e.g., registradores e


memória
 Todos os elementos de estado definem o estado da máquina
Elementos de estado no caminho de
dados: Registradores

Clock

Read register
5 bits number 1 Read
data 1 32 bits
5 bits Read register
number 2
Register file
5 bits Write
register
Read 32 bits
Write data 2
32 bits data Write

Sinal de controle

Registradores com duas portas para leitura


e uma porta para escrita
Elementos de estado no caminho de
dados: Registradores
 Implementação: Clock
Clock

Write

Read register C
number 1 0
Register 0
Register 0 1 D
Register 1 M n-to-1 C
Register number
u Read data 1 decoder Register 1
Register n – 1 x D
n– 1
Register n n
Read register
number 2
C
Register n – 1
M D
u Read data 2 C
x Register n
Register data D

Porta de saída é implementada com um decodificador


Portas de entrada são implementadas com
2 multiplexadores de 5 5-to-32 para 32 registradores. O relógio é relevante
para a escrita porque o estado do registrador só
bits para selecionar 32 registradores
pode ser trocado na transição do relógio
Implementação de MIPS monociclo

 A primeira implementação de MIPS irá usar um único ciclo


longo de relógio para cada instrução
 Cada instrução começa a ser executada em uma transição
para cima do relógio e termina na próxima transição para cima
 Esta abordagem não é prática porque é muito mais devagar
que uma implementação multiciclo onde cada instrução pode
necessitar de números de ciclos diferentes
 Em uma implementação monociclo, cada instrução deve utilizar o
mesmo tempo que a instrução mais lenta necessita
 Em uma implementação multiciclo, este problema é evitado
porque instruções mais rápidas necessitam um número menor de
ciclos
 Embora a abordagem monociclo não seja utilizada na prática,
ela é simples e fácil de entender
Caminho de dados: Instrução
Armazena/Busca & Incremento do PC

Instruction
address
Add
PC
Instruction Add Sum
4
Instruction
memory
Read
PC address
a. Instruction memory b. Program counter c. Adder
Instruction

Instruction
Três elementos usados para armazenar memory

e buscar instruções e
incrementar o PC
Caminho de dados
Caminho de dados: Instrução Armazena/Busca
& Incremento do PC

Instrução <- MEM[PC]


PC <- PC + 4

ADD

PC
ADDR
Memory
RD Instruction
Caminho de dados: Instrução do tipo R

ALU control ALU operation


5 Read 3 Read 3
register 1 register 1
Read Read
Register 5 data 1 data 1
Read Read
numbers register 2 Zero Zero
Registers Data ALU Instruction register 2
ALU Registers ALU ALU
5 Write result
register Write result
Read
register
Write data 2 Read
Data data data 2
Write
RegWrite
data

RegWrite
a. Registers b. ALU

Dois elementos usados para implementar Caminho de dados


instruções do tipo R
Caminho de dados: Instrução do tipo R

add rd, rs, rt


Instruction
op rs rt rd shamt funct R[rd] <- R[rs] + R[rt];

5 5 5 Operation
3
RN1 RN2 WN
RD1
Register File ALU Zero
WD

RD2
RegWrite
Caminho de dados: Instrução
Carrega/Armazena

3 ALU operation
Read
MemWrite register 1 MemWrite
Read
data 1
Read
Instruction register 2 Zero
Registers ALU ALU
Address Read Write Read
result Address
data 16 32 register data
Sign Read
Write data 2
extend Data
Write Data data
data memory memory
RegWrite Write
data
16 32
Sign MemRead
MemRead
extend

a. Data memory unit b. Sign-extension unit

Dois elementos adicionais usados para Caminho de dados


implementar instruções do tipo carrega/armazena
Caminho de dados: Instrução
Carrega/Armazena

op rs rt offset/immediate lw rt, offset(rs)


16
R[rt] <- MEM[R[rs] + s_extend(offset)];
5 5 5 Operation
3
RN1 RN2 WN
RD1
Zero
Register File ALU
WD
MemWrite
RD2 ADDR
RegWrite
Memory
E WD RD
16 X 32
T
N MemRead
D
Caminho de dados: Instrução
Carrega/Armazena
op rs rt offset/immediate sw rt, offset(rs)
16
MEM[R[rs] + sign_extend(offset)] <- R[rt]
5 5 5 Operation
3
RN1 RN2 WN
RD1
Zero
Register File ALU
WD
MemWrite
RD2 ADDR
RegWrite
Memory
E WD RD
16 X 32
T
N MemRead
D
Caminho de dados: Instrução de desvio

PC + 4 from instruction datapath

Add Sum Branch target

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

Caminho de dados
Caminho de dados: Instrução de desvio

PC +4 from
op rs rt offset/immediate instruction
16 datapath ADD
5 5 Operation
<<2
RN1 RN2 WN
RD1
Register File ALU Zero
WD

RD2
RegWrite

E beq rs, rt, offset


16 X 32
T
N if (R[rs] == R[rt]) then
D
PC <- PC+4 + s_extend(offset<<2)
Caminho de dados para MIPS I:Monociclo

Entrada deve ser conteúdo de registrador


(formato R) ou metade da instrução com extensão de sinal
(formato carrega/armazena)

Dados vêm da ALU


(tipo R) ou da memória (carrega)

Combinando o caminho de dados para instruções do tipo R


e carrega/armazena usando dois multiplexadores
Instruções do tipo R

Instruction add rd,rs,rt


32 16 5 5 5 Operation
3
RN1 RN2 WN
RD1
Register File ALU Zero
WD
M MemWrite
RD2 U ADDR MemtoReg
RegWrite X
Data
E Memory RD M
X U
16 32 ALUSrc X
T WD
N MemRead
D
Instrução do tipo carrega

Instruction lw rt,offset(rs)
32 16 5 5 5 Operation
3
RN1 RN2 WN
RD1
Register File ALU Zero
WD
M MemWrite
RD2 U ADDR MemtoReg
RegWrite X
Data
E Memory RD M
X U
16 32 ALUSrc X
T WD
N MemRead
D
Instrução do tipo armazena

Instruction sw rt,offset(rs)
32 16 5 5 5 Operation
3
RN1 RN2 WN
RD1
Register File ALU Zero
WD
M MemWrite
RD2 U ADDR MemtoReg
RegWrite X
Data
E Memory RD M
X U
16 32 ALUSrc X
T WD
N MemRead
D
Caminho de dados para MIP II: Monociclo

Somador separado da ALU porque as operações da ALU


e incremento do PC devem ocorrer no mesmo ciclo de relógio
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 memory
Write
RegWrite data
16 Sign 32 MemRead
extend
Memória de dados e instruções separadas
porque leitura de memória e instrução ocorrem no
mesmo ciclo de relógio
Busca da instrução add
Caminho de dados para MIP III: Monociclo
Novo
PCSrc multiplexador

M
Add u
x
4 Add ALU
result
Shift Precisa de um somador extra
left 2 porque os dois operam no
Registers mesmo ciclo
Read 3 ALU operation
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
Endereço da instrução é
PC+4 ou endereço do desvio

Incluindo a capacidade de desvio e outro multiplexador


Execução da instrução add

ADD
M
ADD
ADD U
4 X

PC <<2 PCSrc
Instruction
ADDR RD
32 16 5 5 5 Operation
Instruction 3
Memory RN1 RN2 WN
RD1
Register File ALU Zero
WD
M MemWrite
RD2 U ADDR MemtoReg
RegWrite X
Data
E Memory RD M
U
16 X 32 ALUSrc X
T WD
N MemRead
add rd, rs, rt D
Execução da instrução lw

ADD
M
ADD
ADD U
4 X

PC <<2 PCSrc
Instruction
ADDR RD
32 16 5 5 5 Operation
Instruction 3
Memory RN1 RN2 WN
RD1
Register File ALU Zero
WD
M MemWrite
RD2 U ADDR MemtoReg
RegWrite X
Data
E Memory RD M
U
16 X 32 ALUSrc X
T WD
N MemRead
lw rt,offset(rs) D
Execução da instrução sw

ADD
M
ADD
ADD U
4 X

PC <<2 PCSrc
Instruction
ADDR RD
32 16 5 5 5 Operation
Instruction 3
Memory RN1 RN2 WN
RD1
Register File ALU Zero
WD
M MemWrite
RD2 U ADDR MemtoReg
RegWrite X
Data
E Memory RD M
U
16 X 32 ALUSrc X
T WD
N MemRead
sw rt,offset(rs) D
Execução da instrução beq

ADD
M
ADD
ADD U
4 X

PC <<2 PCSrc
Instruction
ADDR RD
32 16 5 5 5 Operation
Instruction 3
Memory RN1 RN2 WN
RD1
Register File ALU Zero
WD
M MemWrite
RD2 U ADDR MemtoReg
RegWrite X
Data
E Memory RD M
U
16 X 32 ALUSrc X
T WD
N MemRead
beq r1,r2,offset D
Controle

 Os dados de entrada da unidade de controle são:


 Os bits do campo opcode da instrução

 A unidade de controle gera


 Sinais de controle para a ALU
 Sinais de escrita e leitura para os elementos de armazenamento
 Sinais de controle para cada multiplexador
Controle da ALU
 Como controlar a ALU: controle principal envia 2-bits ALUOp para o campo de
controle da ALU. Baseado em ALUOp e campo funct da instrução o controle da ALU
gera os 3 bits do campo de controle da ALU

Campo de controle Function 2


da ALU
3
ALUOp
000 and Main ALU To
001 or Control Control ALU ALU
010 add control
110 sub input
111 slt
6

Instruction
funct field
 ALU deve executar
 add para carregamentos/armazenamentos (ALUOp 00)
 sub para desvios (ALUOp 01)
 um entre and, or, add, sub, slt para instruções do tipo R, dependendo do campo da instrução
funct (ALUOp 10)
Gerenciando bits de controle da ALU

Tabela verdade para os bits de controle da ALU


Projetando o controle principal

R-type opcode rs rt rd shamt funct


31-26 25-21 20-16 15-11 10-6 5-0

Load/store opcode rs rt address


or branch
31-26 25-21 20-16 15-0

 Observações sobre o formato da instrução MIPS


 opcode está sempre nos bits 31-26
 Dois registradores que devem ser lidos são sempre rs (bits 25-21) e rt (bits 20-16)
 Registrador base para armazenamentos e carregamentos é sempre rs (bits 25-21)
 Deslocamento de 16-bits para desvios e armazenamentos e carregamentos é sempre
definido pelos bits 15-0
 Registrador destino para carregamentos é definido pelos bits 20-16 (rt) enquanto que para
instruções do tipo R é definido pelos bits 15-11 (rd) (necessita de multiplexador)
Caminho de dados com controle I

Adicionando controle ao caminho de dados III (e um novo multiplexador


para selecionar registrador destino):
Sinais de controle

Nome do sinal Efeito quando valor =0 Efeito quando valor =1

RegDst O identificador do registrador a ser escrito vem O identificador do registrador a ser escrito vem
dos bits 20-16 dos bits 15-11
RegWrite Nenhum O registrador identificado é escrito com os dados que
estão em Write data input
ALUSrc O segundo operando da ALU vem O segundo operando da ALU vem do valor com sinal estendido
do segundo registrador lido (Read data 2) dos 16 bits da instrução
PCSrc O conteúdo do PC é substituído pela saída do somador O conteúdo do PC é substituído pela saída do somador
que calcula o valor PC + 4 que calcula o endereço do desvio
MemRead Nenhum O conteúdo da memória que está no endereço
é colocado na saída Read data output
MemWrite Nenhum O conteúdo da memória endereçada é substituído
pelo conteúdo que está em Write data input
MemtoReg O valor de entrada de escrita do registrador O valor de entrada de escrita do registrador
Write data input vem da ALU Write data input vem da memória

Efeitos dos sete sinais de controle


Caminho de dados com controle II
0
M
u
x
ALU
Add result 1
Add Shift PCSrc
RegDst left 2
4 Branch
MemRead
Instruction [31 26] MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite

Instruction [25 21] Read


PC Read register 1
address Read
Instruction [20 16] data 1
Read
register 2 Zero
Instruction 0 Registers Read ALU ALU
[31– 0] 0 Read
M Write data 2 result Address 1
Instruction u register M data
u M
memory Instruction [15 11] x u
1 Write x Data
data x
1 memory 0
Write
data
16 32
Instruction [15 0] Sign
extend ALU
control

Instruction [5 0]

Unidade de controle: a entrada são os 6-bits do campo opcode da instrução,


a saída são 7 sinais de 1-bit e 2-bits de sinal ALUOp

Você também pode gostar