A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

João Cláudio Otero jcotero@inf.ufrgs.br MIPS Multiciclo João Cláudio Otero jcotero@inf.ufrgs.br.

Apresentações semelhantes


Apresentação em tema: "João Cláudio Otero jcotero@inf.ufrgs.br MIPS Multiciclo João Cláudio Otero jcotero@inf.ufrgs.br."— Transcrição da apresentação:

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


Carregar ppt "João Cláudio Otero jcotero@inf.ufrgs.br MIPS Multiciclo João Cláudio Otero jcotero@inf.ufrgs.br."

Apresentações semelhantes


Anúncios Google