Resumo 1
I
Resumo 1
Alunos:
Giuliano Barbosa Prado
Marcello de Paula Ferreira Costa
Guilherme Nishina Fortes
7961109
7960690
7245552
Página 1 de 4
Resumo I
1-) Encontrar solução via software para conflito de dados e jumps.
A solução via software para o problema de hazard de dados e controle será responsabilidade do compilador. Este terá de reconhecer uma instrução jump para assim introduzir NO-OPS (Instruções que não alteram memória ou registradores), para assim não carregar na pipeline instruções que possivelmente não deverão ser executadas devido ao desvio do jump.
O mesmo procedimento é válido para resolver via software o problema do conflito de dados. Assim, acrescentando NO-OPS, é possível, via compilador, atrasar a instrução que depende do dado a ser processado, fazendo que não haja inconsistência de dado.
BI
Busca instrução
D BD E
S
Busca dados
Store
Decodifica
Executa
Figura 1 - Modelo utilizado no problema
Observando o simplificado caminho de dados da figura 1, pode-se avaliar o comportamento de ambos os casos e concluir a quantidade necessária de NO-OPS deverá ser inserida. No caso dos jumps, 3 NO-OPS são suficientes para resolver o problema, visto que no quarto ciclo o desvio já deverá ter sido avaliado e concretizado, podendo assim ser feita a leitura da próxima instrução.
No caso do conflito de dados, 1 ou 2 NO-OPS são suficientes para resolver o problema, visto que se a instrução seguinte necessita do dado na instrução imediatamente anterior, este deverá aguardar 2 ciclos para que o dado seja armazenado na memória (ou seja, deverá aguardar o tempo da instrução ser executada (etapa E) e armazenada (etapa S). Caso haja uma instrução não dependente desses dados entre as duas instruções dependentes, apenas 1 NO-OPS será suficiente, pois a instrução intermediária já será responsável por um ciclo de diferença.
Vale ressaltar também como opção para otimização inserir funções independentes (do jump ou das operações aritméticas) no lugar dos