Aula MIPS Monociclo
-
Upload
danilo-pinto -
Category
Documents
-
view
209 -
download
7
Transcript of Aula MIPS Monociclo
MIPS monociclo
• Caminho de dados monociclo
– Todas as instruções são realizadas em um único
ciclociclo
• 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
registradores)registradores)
– Por que duas memórias?
Registers
Register #
Data
Register #
Data�memory
Address
Data
Register #
PC Instruction ALU
Instruction�memory
Address
Nossa implementação
• Regime de temporização (Relógio)
– Cada registrador possui um sinal de carga
particular que é ativado com lógica diretaparticular que é ativado com lógica 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
combinacionalcombinacional
MIPS monociclo
• Busca da Instrução - elementos necessários:
– a memória onde estão armazenadas as
instruçõesinstruçõ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
MIPS monociclo
• Banco de Registradores - elementos
necessários:
– Um conjunto de 32 registradores onde podem – Um conjunto de 32 registradores onde podem
ser armazenados operandos
MIPS monociclo
• Banco de registradores
– Usam flip-flops tipo D
Read register�
M�u�
x
Register 0
Register 1
Register n – 1
Register n
M�
u�x
Read data 1
Read data 2
number 1
Read register�
number 2
Read register�number 1 Read�
data 1
Read�data 2
Read register�number 2
Register fileWrite�register
Write�data Write
Banco de registradores
• Um implementação, simples, mas antiga
Register 0
C
Write
0
n-to-1�decoder
Register 0
Register 1
Register n – 1
C
C
D
D
Register n
C
D
D
Register number
Register data
1
n – 1
n
MIPS monociclo
• Memória de dados - elementos necessários
– Uma memória onde são armazenados dados
– Tipicamente instruções lw e sw se referem a – Tipicamente instruções lw e sw se referem a
esta memória
MIPS monociclo
• Agrupando elementos
– Caso das instruções: add, sub, and, or e slt
– Instruções tipo R:– Instruções tipo R:
• 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
MIPS monociclo
• Agrupando elementos necessários
– Caso de uma escrita na memória: sw
• sw $so, 5($s1)• 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
• Agrupando elementos necessários
– Caso de uma leitura da memória: lw
• lw $so, 5($s1)• 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
• Agrupando elementos necessários
– Caso da instrução: beq
• beq $so, $s1, 5• beq $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
• 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 demoradapara 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
Add
RegWrite
4 0
M�u�x
1
Shift�
left 2
PCSrc
AddALU�
result
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruction�memory
Read�address
Instruction�[31–0]
Instruction [20–16]
Instruction [25–21]
Instruction [5–0]
RegWrite
16 32Instruction [15–0]
0
Registers
Write�register
Write�data
Write�data
Read�data 1
Read�data 2
Read�register 1
Read�register 2
Sign�extend
ALU�result
Zero
Data�memory
Address Read�data
M�u�x
1
0
M�u�x
1
0
M�u�x
1
Instruction [15–11]
ALU�control
left 2
ALU
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
• A ULA pode ter controle próprio, separado
do bloco de controle principal (e portanto,
menos complexo e mais rápido)menos complexo e mais rápido)
• 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
• Correspondência entre “funct” & “ULAOp” com
“controle da ULA”
– Apenas algumas das 64 combinações possíveis a partir
dos 6 bits do campo “funct” são de interessedos 6 bits do campo “funct” são de interesse
MIPS Monociclo : Controle
Add
MemRead
BranchRegDst
4
Add ALUresult
Mux
0
1
Shiftleft 2
PC
Instructionmemory
Readaddress
Instruction[31–0]
Instruction [20–16]
Instruction [25–21]
Instruction [5–0]
MemtoReg
ALUOp
MemWrite
RegWrite
MemRead
ALUSrc
Instruction [31–26]
16 32Instruction [15–0]
0
0Mux
0
1
Control
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux
1
ALUresult
Zero
Datamemory
Writedata
Readdata
Mux
1
Instruction [15–11]
ALUcontrol
ALUAddress
Use rt not rd
MIPS Monociclo : Controle
Instruction RegDst ALUSrc
Memto-
Reg
Reg
Write
Mem
Read
Mem
Write Branch ALUOp1 ALUp0
R-format 1 0 0 1 0 0 0 1 0
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 1beq X 0 X 0 0 0 1 0 1
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 • 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: