Como usar

Escolha um exemplo ou escreva um trecho de assembly MIPS e clique em Simular. O diagrama mostra em que estágio cada instrução está a cada ciclo de relógio. Avance ciclo a ciclo e acompanhe, no desenho do caminho de dados, qual instrução ocupa cada estágio.

Ligue e desligue o adiantamento (forwarding) e mude o estágio em que o desvio é decidido para comparar a quantidade de ciclos. Células listradas são paradas (bolhas); instruções riscadas foram buscadas pelo caminho errado e descartadas.

Modelo do livro de Patterson e Hennessy: cinco estágios, banco de registradores escrito na primeira metade do ciclo e lido na segunda, previsão de desvio "não tomado" e sem slot de atraso. Os registradores começam em zero e a memória começa com os valores 5, 8, 2, 7, 4, 9, 1 e 6 nos endereços 0, 4, 8, ... 28.

Código assembly

Configuração do pipeline

Ciclo 1

    Registradores ao fim do ciclo

    Diagrama do pipeline

    Clique no número de um ciclo para ver o que acontece nele.

    IF buscaID decodificaçãoEX execuçãoMEM memóriaWB escrita parada (bolha) instrução descartada

    Desempenho

    Instruções suportadas

    add sub and or xor nor slt sll srl addi andi ori slti lw sw beq bne j nop e as pseudoinstruções li e move. Rótulos terminam com dois-pontos e comentários começam com #. Registradores pelo nome ($t0) ou pelo número ($8). Para executar o programa completo, com syscall e memória de dados, use o Mini-MIPS.

    Para o professor
    1. Sem dependências: com cinco instruções independentes, o pipeline termina em 9 ciclos em vez de 25. Depois que enche, conclui uma instrução por ciclo (CPI perto de 1).
    2. Dependência de dados: desligue o adiantamento e conte as bolhas. Ligue de novo e veja as setas vermelhas: o resultado sai do registrador EX/MEM ou MEM/WB direto para a ULA.
    3. Load-use: mesmo com adiantamento, uma instrução que usa o valor de um lw logo em seguida para um ciclo, porque o dado só existe no fim do estágio MEM. Compare com o exemplo reordenado: a mesma conta, sem bolhas.
    4. Desvios: no laço, mude o estágio de decisão do desvio de MEM para ID e compare os ciclos. Discuta previsão de desvio e por que processadores reais preveem em vez de esperar.

    Referência: Patterson e Hennessy, Organização e Projeto de Computadores, capítulo 4.