Lista 4 Hyago Procopio Brito 1) Analisando por tempo de execução, ciclos de clock, temos: LW(4): 20 ciclos; BNE(1): 4 ciclos; SUB(1): 4 ciclos; ADD(3): 12 ciclos; ADDi(2): 8 ciclos; SW(3): 12 ciclos; Total: 60 ciclos. CPI Nº de instruções: 4(lw) + 1(bne) + 1(sub) + 3(add) + 2(addi) + 3(sw) = 14. CPI = (5x4/14 + 4x3/14 + 4x6/14 + 4x1/14) = 1/14(20 + 12 + 24 + 4) = 4.28 = 5 ciclos.
2) a) Montando a tabela, incluindo o NOP como saída, teremos 28 ciclos: CPI = (5x4 + 5x3 + 5x6 + 5x1) x 1/14 = 5 Ciclos. Assim, temos: 5/5 x 60/28 = 2,14.
3) Para solução em software, temos: Reorganização de código, trocando a ordem das instruções, podemos evitar o conflito de dados não comprometendo o desempenho, porém dificultando a implementação no compilador mais complexa. Para solução em hardware, temos: Inserção de retardos (stalls), atrasando a execução da instrução, evitamos o conflito de dados, porém degrada o sistema.
5) Dependência de dados: Quando a instrução precisa de algum dado que ainda está sendo calculado. Dependência de controle: Quando a instrução precisa do dado da instrução anterior.
Dependência estrutural: Quando a instrução necessita de um componente de hardware e o mesmo não está disponível.
7) Na previsão dinâmica, se mede o comportamento dos desvios, analisando os anteriores e assumindo que o mesmo vai permanecer, caso erre, anula-se as instruções executadas e corrige a execução. A vantagem é que caso não erre, teremos ganho significativo, e a desvantagem, é que caso erre, teremos um gasto excessivo.
8) O algoritmo de Tomasulo permite a execução de instruções em paralelo. Os conflitos RAW são evitados com atraso de execução. E com a combinação de: renomeação de registradores e “bufferização” dos operandos de origem com estações de reserva, evitamos conflito WAW e WAR.
9) O escalonamento dinâmico permite que a CPU execute instruções fora de ordem, e o buffer reorder ajuda na escrita nos registradores na ordem correta, completando a instrução.