Arquitetura de Computadores MIPS – Caminho de dados Ivan Saraiva Silva
MIPS monociclo • Caminho de dados monociclo
– Todas as instruções são realizadas em um único ciclo
• Vamos analisar um caminho de dados simplificado, contendo apenas – Acesso a memória: lw e sw – Aritméticas e lógicas : add, sub, and, or e slt – Controle de fluxo: beq e j
MIPS monociclo • Implementação genérica:
– Usa o registrador (PC) para endereçar instruções – Busca instruções na memória – Lê registradores (Tipo R) – Decodifica para saber que operação realizar – Realiza a opreração
Visão geral abstrata • Um bloco combinacional • Três blocos seqüenciais (memória e – Por que duas memórias? Data
PC
AddressI nstruction Instruction memory
Register # Registers
ALU
Address
Register # Data memory
Register # Data
Nossa implementação • Regime de temporização (Relógio)
– Cada registrador possui um sinal de carga articular ue é ativado com ló ica direta – Os registradores são “disparados” pela borda ascendente do relógio – No desenho ao lado, quando CK= ↑, se cargaR1=1, então R1←entradas
Nossa implementação • Regime de temporização (Relógio)
– Condição para o funcionamento do bloco combinacional
Nossa implementação
MIPS monociclo • Busca da Instrução - elementos necessários: – a memória onde estão armazenadas as instru ões
– o contador de programa (PC) para armazenar o endereço da instrução – um somador para calcular o endereço da próxima instrução
Busca de Instruções
Um bloco de busca, ainda simplificado
MIPS monociclo • Banco de Registradores - elementos necessários: – Um con unto de 32 re istradores onde odem ser armazenados operandos
MIPS monociclo • Banco de registradores – Usam flip-flops tipo D
Read register number 1 Register 0 Register 1 Register n – 1
M u x
Read register number 1
Read data 1
Register n
Read data 1
Read register number 2
Register file
Write register
Read register number 2 M u x
Read data 2
Read data 2 Write data Write
Banco de registradores • Um implementação, simples, mas antiga Write 0
Register number
C
1
D
n-to-1 decoder
C
n– 1
Register 1 D
n
C Register n – 1 D C Register n Register data
D
MIPS monociclo • Memória de dados - elementos necessários – Uma memória onde são armazenados dados – esta memória
MIPS monociclo • Agrupando elementos
– Caso das instruções: add, sub, and, or e slt – • add $t1, $t2, $t3
– O conteúdo de dois registradores são usados na operação (realizada na ula MIPS – já vista) – O resultado da operação é armazenado em um terceiro registrador
ULA MIPS
Slice ULA MIPS ULA MIPS n Bits
MIPS monociclo
MIPS monociclo • Agrupando elementos necessários
– Caso de uma escrita na memória: sw • sw $so, 5($s1)
– O endereço de escrita é obtido pela soma de um registrador de base com um deslocamento de 16 bits estendido para 32 bits – O conteúdo de um segundo registrador é escrito na memória
MIPS monociclo
MIPS monociclo • Agrupando elementos necessários
– Caso de uma leitura da memória: lw • lw $so, 5($s1)
– O endereço de escrita é obtido pela soma de um registrador de base com um deslocamento de 16 bits estendido para 32 bits – O dado vindo da memória e escrito em um segundo registrador
MIPS monociclo
MIPS monociclo • Agrupando elementos necessários – Caso da instrução: beq • be $so, $s1, 5
– Comparar dois registradores usando a ULA para fazer uma subtração – Se ocorrer desvio, o endereço de desvio é PC+4+deslocamento – O deslocamento deve ser estendido para 32 bits (pois está em 16 bits)
MIPS monociclo
MIPS monociclo Lembrar
...
MIPS monociclo • Na versão monociclo qualquer instrução executa em um ciclo de relógio • O período do relógio deve ser longo o suficiente para acomodar a instrução mais demorada • Cada unidade funcional só pode ser usada uma única vez durante a execução de uma instrução qualquer, – Por isso necessitamos de uma memória de instruções e outra de dados
MIPS monociclo
MIPS monociclo PCSrc
Add 4
Add Re Write Instruction[25–21]
PC
Read address Instruction [31–0] Instruction memory
Instruction[20–16] 1 M u Instruction[15–11] x 0 RegDst Instruction [15–0]
Read register 1 Read data 1 Read register 2 Read Write data 2 register Write data Registers
Shift left 2
MemWrite ALUSrc 1 M u x 0
16
Sign 32 extend
ALU result
1 M u x 0
ALU control
Instruction [5–0] ALUOp
Zero ALU ALU result
MemtoReg Address Read data Write Data data memory MemRead
1 M u x 0
MIPS monociclo add $s2, $s3, $s4; Instruções tipo R, mas não JR/JALR
MIPS monociclo lw $s4, 1000($s5)
MIPS monociclo beq $s4, $s5, LABEL
MIPS Monociclo : Controle • A ULA tem 3 entradas de controle (8 combinações possíveis) – Somente 5 combinações são usadas
• Classes de instruções que usam a ULA – lw/sw: adição (para calcular o endereço de acesso à memória) – beq: subtração (para testar se os registradores Rs e Rt são iguais) – Instruções tipo R: depende do campo “funct”, podendo ser (add, sub, and, or e slt)
MIPS Monociclo : Controle
MIPS Monociclo : Controle • A ULA pode ter controle próprio, separado do bloco de controle principal (e portanto, menos com lexo e mais rá ido • Este controle tem como entradas: – Os 6 bits do campo “funct” – 2 bits vindos do bloco de controle global (“ULAOp”), que serve para identificar a qual classe a instrução a ser executada pertence
MIPS Monociclo : Controle
MIPS Monociclo : Controle • Correspondência entre “funct” & “ULAOp” com “controle da ULA” – Apenas algumas das 64 combinações possíveis a partir os ts o campo unct s o e nteresse
MIPS Monociclo : Controle • Tabela Verdade para geração do controle da ULA
MIPS Monociclo : Controle • Circuito de Controle da ULA
MIPS Monociclo : Controle
MIPS Monociclo : Controle 0 M u x
Add
PC
Read address
Instruction[31–26]
MemtoReg Control ALUOp MemWrite ALUSrc RegWrite
Instruction[25–21]
Read register 1
Instruction[20–16] Instruction [31–0]
Instruction memory
Instruction[15–11]
0 M u x 1
1
Zero ALU ALU result
Address
Shift left 2
RegDst Branch
4
ALU Add result
Read data 1 Read register 2 Registers Read Write data 2 register Write data
0 M u x 1
Write data Instruction[15–0]
Use rt not rd
16
Instruction[5–0]
32 Sign extend
ALU control
Read data Data memory
1 M u x 0
MIPS Monociclo : Controle Instruction R-format
RegDst 1
ALUSrc 0
Memto-
Reg
Mem
Mem
Reg
Write
Read
Write
0
1
0
0
0
1
lw
0
1
1
1
1
0
0
0
0
sw
X
1
X
0
0
1
0
0
0
beq
X
0
X
0
0
0
1
0
1
Branch 0
ALUOp1
ALUp0
MIPS Monociclo : Controle • Instrução tipo R
• Instrução sw
• Instrução lw
MIPS Monociclo : Controle • Instrução beq
MIPS Monociclo : Controle • Subconjunto de opcods para as instruções implementadas
MIPS Monociclo : Controle • Tabela verdade para o controle principal
MIPS monociclo • Inclusão da Instrução Jump ( j)
– A instrução jump altera o valor de PC para: • Deslocamento imediato codificado na instru ão deslocado de dois bits a esquerda (deslocamento em palavras) • Concatenado com os 4 bits de mais significativos de PC+4
• O caminho de dados atualizado muda para:
MIPS monociclo