Prévia do material em texto
Instituto Federal de Brasília - Campus Taguatinga Superior em Computação Lista 4 Pipelining Arquitetura de Computadores II - 1/2020 1) Um certo processador utilizava a implementação de ciclo único, onde qualquer instrução operava em 10 ns. Foi dada a ideia de atualizar este processador para uma implementação em pipeline. Para isso, o ciclo único de clock foi dividido em 5 estágios: IF (2 ns), ID (1,5 ns), EX (3,5 ns), MEM (2 ns) e WB (1 ns). Devido à implementação em pipeline é gerado um atraso do registrador de pipeline de 0,2 ns. a. Qual é o tempo de ciclo de clock do processador atualizado com o pipeline em 5 estágios? Respostas: Tempo do estágio de maior duração + atraso do registrador de pipeline = 3,5 + 0,2 = 3,7ns b. Se houver 2 atrasos a cada 8 instruções, qual será o CPI da nova implementação? Respostas: c. Qual o ganho de velocidade da implementação de pipeline em relação à implementação de ciclo único? Dica: Leve em consideração os resultados obtidos anteriormente. Respostas: Tempo de execução: IC × CPI × ciclo de clock d. Se o estágio EX deste pipeline fosse dividido em infinitas etapas, qual seria o ganho de velocidade em relação à implementação de ciclo único? Respostas: Ganho sem considerar stalls Ganho considerando os stalls da 4.2 Então como o estágio Ex foi dividida em infinitas etapas, não determina mais o tempo de ciclo de clock e sim a etapa de IF. 2) Uma implementação reduzida de hardware do clássico pipeline de cinco estágios pode usar o hardware do estágio EX para realizar uma comparação de instrução de desvio e não entregar realmente o PC-alvo do desvio para o estágio IF até o ciclo de clock no qual a instrução de desvio atinge o estágio MEM. Stalls de hazard de controle podem ser reduzidos resolvendo as instruções de desvio no ID, mas melhorar o desempenho em um aspecto pode reduzir o desempenho em outras circunstâncias. Escreva um pequeno trecho de código no qual calcular o desvio no estágio ID causa um hazard de dados, mesmo com o avanço de dados. Repostas: Levando em considerando a instrução fornecida para gravar o snippet de código para a ramificação no estágio de ID. E se a ramificação estiver recebendo dados anteriores, não ajuda a calcular a ramificação no estágio de ID. O loop ira depender de um valor de memória existente, quando a memória está sendo acessada usando uma lista vinculada em vez da matriz. O código do snippet é: LOOP: LW R4, 4 (R5) LW R5, 0 (R2) BNE R5, R0, LOOP 3) De acordo com o fragmento de código e o esquema de processador pipeline multiciclo abaixo, responda as questões a seguir: S.D F1, 0(R2) ADD.D F1,F1,F2 MUL.D F2,F3,F4 L.D F2,0 (R2) S.D F2,0(R2) a. Analisando o código acima, quais tipos de hazards de dados podem acontecer? indique quais instruções e quais registradores poderão causar o hazard caso não exista nenhum hardware de adiantamento ou bypassing. b. Mostre a temporização dessa sequência de instruções sem nenhum hardware de adiantamento ou bypassing, mas supondo que uma leitura e uma escrita de registrador no mesmo ciclo de clock “adiantam” através do banco de registradores. Além disso, só é possível realizar uma única escrita no banco de registradores por vez e apenas um acesso à memória de dados ou de instruções ao mesmo tempo. c. Mostre a temporização dessa sequência de instruções com hardware completo de adiantamento ou bypassing. Indique em sua resposta quais foram os adiantamentos ou bypassing realizados. Além disso, só é possível realizar uma única escrita no banco de registradores por vez e apenas um acesso à memória de dados ou de instruções ao mesmo tempo.