Buscar

Aula2

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Aula 2: Revisão – MIPS Monociclo
Professor: Leandro Marzulo
Arquiteturas Avançadas de Computadores
Conjunto de Instruções
RISC – Reduced Instruction Set Computer
Poucas instruções
Acesso a memória somente via load/store
Formato regular
Controle mais simples
Tamanho de código maior (tanto em bytes quanto em quantidade de instruções)
Mais cargas de instrução e mais decodificações (mais instruções)
2
Conjunto de Instruções
CISC – Complex Instruction Set Computer
Muitas instruções (específicas)
Instruções que acessam dados diretamente na memória (não somente via registradores)
Formato irregular
Controle mais complexo
Tamanho de código menor (tanto em bytes quanto em quantidade de instruções)
Menos cargas de instrução e menos decodificações (menos instruções)
3
Conjunto de Instruções do MIPS
RISC
Lógica e aritmética: add, addi, sub, subi, and, or, slt
Memória: lw, sw 
Fluxo de controle: beq, j
op
rs
rt
offset
6 bits
5 bits
5 bits
16 bits
op
rs
rt
rd
funct
shamt
6 bits
5 bits
5 bits
5 bits
5 bits
6 bits
R-Format
I-Format
op
address
6 bits
26 bits
J-Format
0
6 5
11 10
16 15
21 20
26 25
31
4
Implementações
Monociclo
1 instrução por ciclo de clock
Ciclo deve ser longo o suficiente para acomodar a instrução mais lenta – Gargalo!
 Multiciclo
Cada instrução é executada em múltiplas etapas (ex: busca, decodificação, execução, acesso a memória e escrita de resultado)
Cada etapa leva 1 ciclo
O tempo do ciclo deve acomodar a etapa mais longa
Uma instrução pode levar menos ciclos que outras (usar apenas as etapas necessárias)
Pipelined
Executa cada instrução em múltiplas etapas (como no multiciclo)
Cada etapa executa uma instrução diferente – etapas em paralelo – como em uma linha de montagem
5
ALUOp
ALUSrc
MemReg
Implementação Monociclo
 Add
Zero
 
Result
.
Read address
Instruction
[31 – 0]
Instruction Memory
Address
Read Data
Data Memory
Write Data
Read Register 1
Read Data 1
Read Register 2
Read Data 2
Write Register
Register File
Write Data
PC
4
0
1
Control
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
0
1
Sign
Extend
Instruction [15-0]
Instruction [25-21]
16
0
1
32
ALU
Ctl
1
0
Shift
Left 2
 Add
Instruction [5-0]
Shift
Left 2
Instruction [25-0]
26
1
0
28
PC+4 [31-28]
32
Jump Address [31-0]
RegDest
Jump
Branch
MemRead
MemWrite
2
RegWrite
6
ALUOp
ALUSrc
MemReg
Implementação Monociclo
 Add
Zero
 
Result
.
Read address
Instruction
[31 – 0]
Instruction Memory
Address
Read Data
Data Memory
Write Data
Read Register 1
Read Data 1
Read Register 2
Read Data 2
Write Register
Register File
Write Data
PC
4
0
1
Control
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
0
1
Sign
Extend
Instruction [15-0]
Instruction [25-21]
16
0
1
32
ALU
Ctl
1
0
Shift
Left 2
 Add
Instruction [5-0]
Shift
Left 2
Instruction [25-0]
26
1
0
28
PC+4 [31-28]
32
Jump Address [31-0]
RegDest
Jump
Branch
MemRead
MemWrite
2
RegWrite
7
1
0
10
0
0
0
0
0
1
ALUOp
ALUSrc
MemReg
Instruções do tipo R
 Add
Zero
 
Result
.
Read address
Instruction
[31 – 0]
Instruction Memory
Address
Read Data
Data Memory
Write Data
Read Register 1
Read Data 1
Read Register 2
Read Data 2
Write Register
Register File
Write Data
PC
4
0
1
Control
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
0
1
Sign
Extend
Instruction [15-0]
Instruction [25-21]
16
0
1
32
ALU
Ctl
1
0
Shift
Left 2
 Add
Instruction [5-0]
Shift
Left 2
Instruction [25-0]
26
1
0
28
PC+4 [31-28]
32
Jump Address [31-0]
RegDest
Jump
Branch
MemRead
MemWrite
2
RegWrite
Instrução é carregada, usando o PC...
O opcode é passado para a unidade de controle e os números dos registradores de leitura para o banco de registradores.
É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=0)
A operação é executada na ALU de acordo com o campo funct (ALUOP=10)
O resultado é encaminhado ao Banco de Registradores e gravado no registrador indicado pelo campo RD (MemReg=0, RegWrite=1 e Regdest=1)
MemRead=0 e MemWrite=0 pois não fazemos uso da memória.
PC+4 é gravado em PC (Jump=0 e Branch=0)
1
1
00
0
0
0
0
0
0
ALUOp
ALUSrc
MemReg
Subi, Addi – Tipo I
 Add
Zero
 
Result
.
Read address
Instruction
[31 – 0]
Instruction Memory
Address
Read Data
Data Memory
Write Data
Read Register 1
Read Data 1
Read Register 2
Read Data 2
Write Register
Register File
Write Data
PC
4
0
1
Control
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
0
1
Sign
Extend
Instruction [15-0]
Instruction [25-21]
16
0
1
32
ALU
Ctl
1
0
Shift
Left 2
 Add
Instruction [5-0]
Shift
Left 2
Instruction [25-0]
26
1
0
28
PC+4 [31-28]
32
Jump Address [31-0]
RegDest
Jump
Branch
MemRead
MemWrite
2
RegWrite
Instrução é carregada, usando o PC...
O opcode é passado para a unidade de controle, o número do registrador de leitura (RS) para o banco de registradores e o imediato para ALU (com extensão de sinal)
É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=1)
A operação é executada na ALU de acordo com o opcode(ALUOP=00 para soma ou 01 para subtração)
O resultado é encaminhado ao Banco de Registradores e gravado no registrador indicado pelo campo RT (MemReg=0, RegWrite=1 e Regdest=0)
MemRead=0 e MemWrite=0 pois não fazemos uso da memória.
PC+4 é gravado em PC (Jump=0 e Branch=0)
1
1
00
1
0
1
0
0
0
ALUOp
ALUSrc
MemReg
LW– Tipo I
 Add
Zero
 
Result
.
Read address
Instruction
[31 – 0]
Instruction Memory
Address
Read Data
Data Memory
Write Data
Read Register 1
Read Data 1
Read Register 2
Read Data 2
Write Register
Register File
Write Data
PC
4
0
1
Control
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
0
1
Sign
Extend
Instruction [15-0]
Instruction [25-21]
16
0
1
32
ALU
Ctl
1
0
Shift
Left 2
 Add
Instruction [5-0]
Shift
Left 2
Instruction [25-0]
26
1
0
28
PC+4 [31-28]
32
Jump Address [31-0]
RegDest
Jump
Branch
MemRead
MemWrite
2
RegWrite
Instrução é carregada, usando o PC...
O opcode é passado para a unidade de controle, o número do registrador de leitura (RS – end base) para o BR e o deslocamento para ALU (com extensão de sinal)
É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=1)
O endereço base e o deslocamento são somados na ALU (ALUOP=00)
É feita a leitura na memória, usando o endereço calculado (MemRead=1 e MemWrite=0).
O resultado da leitura é encaminhado ao Banco de Registradores e gravado no registrador indicado pelo campo RT (MemReg=1, RegWrite=1 e Regdest=0)
PC+4 é gravado em PC (Jump=0 e Branch=0)
0
1
00
X
1
0
0
0
X
ALUOp
ALUSrc
MemReg
SW– Tipo I
 Add
Zero
 
Result
.
Read address
Instruction
[31 – 0]
Instruction Memory
Address
Read Data
Data Memory
Write Data
Read Register 1
Read Data 1
Read Register 2
Read Data 2
Write Register
Register File
Write Data
PC
4
0
1
Control
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
0
1
Sign
Extend
Instruction [15-0]
Instruction [25-21]
16
0
1
32
ALU
Ctl
1
0
Shift
Left 2
 Add
Instruction [5-0]
Shift
Left 2
Instruction [25-0]
26
1
0
28
PC+4 [31-28]
32
Jump Address [31-0]
RegDest
Jump
Branch
MemRead
MemWrite
2
RegWrite
Instrução é carregada, usando o PC...
O opcode é passado para a unidade de controle, o número do regs de leitura (RS – end base e RT – dado de escrita) para o BR e o deslocamento para ALU (com ext de sinal)
É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=1)
O endereço base e o deslocamento são somados na ALU (ALUOP=00)
É feita a escrita na memória, usando o endereço calculado e o Dado lido de RT (MemRead=0 e MemWrite=1).
Não é feita escrita no Banco de Registradores (MemReg=X, RegWrite=0 e Regdest=X)
PC+4 é gravado em PC (Jump=0 e Branch=0)
0
0
01
X
0
0
1
0
X
ALUOp
ALUSrc
MemReg
BEQ – Tipo I
 Add
Zero
 
Result
.
Read address
Instruction
[31 – 0]
Instruction Memory
Address
Read Data
Data Memory
Write Data
Read Register 1
Read Data 1
Read Register
2
Read Data 2
Write Register
Register File
Write Data
PC
4
0
1
Control
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
0
1
Sign
Extend
Instruction [15-0]
Instruction [25-21]
16
0
1
32
ALU
Ctl
1
0
Shift
Left 2
 Add
Instruction [5-0]
Shift
Left 2
Instruction [25-0]
26
1
0
28
PC+4 [31-28]
32
Jump Address [31-0]
RegDest
Jump
Branch
MemRead
MemWrite
2
RegWrite
Instrução é carregada, usando o PC...
O opcode é passado para a unidade de controle e os número dos registradores de leitura (RS e RT) para o banco de registradores
É feita a leitura no banco de registradores e os valores são enviados para as entradas da ALU (ALUSrc=0)
A ALU subtrai os valores para saber se são iguais, se isso ocorrer, o resultado será zero (ALUOP=01)
MemRead=0 e MemWrite=0 pois não fazemos uso da memória.
RegWrite=0 pois não escrevemos em registradores (logo, RegDest=X e MemReg=X)
PC+4 ou Delocamento*4 + PC+4 é gravado em PC, dependendo da saída Zero da ALU (Jump=0 e Branch=1)
0
X
XX
X
0
0
0
1
X
ALUOp
ALUSrc
MemReg
J – Tipo J
 Add
Zero
 
Result
.
Read address
Instruction
[31 – 0]
Instruction Memory
Address
Read Data
Data Memory
Write Data
Read Register 1
Read Data 1
Read Register 2
Read Data 2
Write Register
Register File
Write Data
PC
4
0
1
Control
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
0
1
Sign
Extend
Instruction [15-0]
Instruction [25-21]
16
0
1
32
ALU
Ctl
1
0
Shift
Left 2
 Add
Instruction [5-0]
Shift
Left 2
Instruction [25-0]
26
1
0
28
PC+4 [31-28]
32
Jump Address [31-0]
RegDest
Jump
Branch
MemRead
MemWrite
2
RegWrite
Instrução é carregada, usando o PC...
O opcode é passado para a unidade de controle e o endereço do desvio é passado para o shifter
Os 4 bits mais significativos de PC+4 são concatenados com o endereço do desvio e armazenados em PC (Jump=1 e Branch=0)
Não é necessário ler/escrever no BR, usar a ALU ou ler/escrever na memória (RegWrite=0, MemRead=0, MemWrite=0, RegDest=X, MemReg=X, ALUSrc=X, ALUOP=XX)
13
Contatos
14
leandro@ime.uerj.br
lmarzulo@cos.ufrj.br
leandro.marzulo@gmail.com

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais