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.
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
- 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).
- 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.
- Load-use: mesmo com adiantamento, uma instrução que usa o valor de um
lwlogo 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. - 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.