Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouNatália Vicente Alterado mais de 11 anos atrás
1
João Cláudio Otero jcotero@inf.ufrgs.br
MIPS Multiciclo João Cláudio Otero
2
Considerações Motivação: continuação de trabalho do Lisboa, dada afinidade com arquitetura do MIPS trabalho realizado com ferramenta Quartus
3
Início da Modelagem… Primeira abordagem: modelagem estrutural
Criação de componentes, máquina de controle e geração de sinais de controle Demorada Teste difícil Segunda abordagem: modelagem funcional Grande máquina de estados Operações diretamente nos sinais
4
(sigext(ir[15..0]) << 2)
a = reg(ir[25..21]) aluout = pc + (sigext(ir[15..0]) << 2) b = reg(ir[20..16]) ir = mem(pc) pc = pc + 4 R-TYPE JMP MEM BRN aluout = a + sigext(ir[15..0]) aluout = a op b if (a == b) pc = aluout pc = pc[31..28] || (ir[25..0]<<2) SW LW reg(ir[15..11]) = aluout mdr = mem(aluout) mem(aluout) = b reg(ir[20..16]) = mdr
5
Modelagem funcional
6
Primeira versão Máquina de Estados com 2 processos Primeiro teste:
Problemas na compilação Alteração para Máquina com 1 processo Primeiro teste: Estado por estado Problemas no acesso à memória Processo para preparação da memória
7
Preparação da Memória OBS: assíncrona, palavras 32 bits, endereço de 8 bits. O problema: when fetch => mem_address <= pc; mem_write <= 0; ir <= mem_contents …
8
Preparação da Memória A solução: mem_proc: PROCESS (state) BEGIN
if state = fetch then mem_write <= '0'; mem_address <= pc; elsif state = mem_lw then mem_address <= aluout; elsif state = mem_sw then mem_write <= '1'; -- '1'; end if; END PROCESS mem_proc;
9
Segunda versão Acesso à memória funcionou, mas houve outros problemas de compilação… Ciclos de inicialização Eliminou-se processo de preparação à memória e acrescentou-se mais estados Alteração da memória para “síncrona”
10
Segunda versão
11
Correções na segunda versão
Nos testes, nada funcionou… Estados de espera para leitura e escrita na memória
12
Correções na segunda versão
13
O programa de teste lw $1, 0 ($zero) lw $2, 2 ($zero) lw $3, 4 ($zero)
add $5, $1, $ R5 := 1 + 2 nop sub $6, $4, $ R6 := 4 - 3 add $7, $5, $ R7 := R5 + R6 sw $7, 8 ($zero) mem(8) := R7 = 4 A ram deve ser preenchida com: 0: 1 / 2: 2 / 4: 3 / 6: 4 / 8: reservado para o resultado.
14
Resultados do teste
15
Resultados Conjunto de instruções suportado pelo MIPS da seção 5.4 “Computer Architecture: A Quantitative Approach”, de Patterson & Hennessey
Apresentações semelhantes
© 2025 SlidePlayer.com.br Inc.
All rights reserved.