Escolar Documentos
Profissional Documentos
Cultura Documentos
Grupo nº 16
Integrantes do Grupo:
____________________________
Docente
Índice
Enunciado.........................................................................................................................................1
Primeira pergunta.............................................................................................................................2
Segunda pergunta.............................................................................................................................3
Enunciado
Considere um processador MIPS com pipeline de cinco estágios e tempo de ciclo de 10ns asuma
que você está executando um programa, com uma fracção f, onde todas intruções imediatamente
após um load, dependem do resultado a instruções load.
1
Primeira pergunta
1). Com o fowarding habilitado, qual o tempo total de execução de N instruções, em termos de f?
Para calcular o tempo total de execução de N instruções com uma fração f, podemos usar a
seguinte fórmula:
N * (5 - f) representa o número de ciclos de clock necessários para executar instruções que não
dependem do resultado de um load e N - 1 representa o número de ciclos de clock necessários
para executar instruções que dependem do resultado de um load.
O tempo total de execução, portanto, é a soma dos ciclos de clock necessários para executar todas
as instruções, multiplicados pelo tempo de ciclo de clock.
Lembre-se de que essa fórmula assume que não há estouros de pipeline e que todas as instruções
podem ser executadas em um único ciclo de clock. Em outras palavras, estamos assumindo que
todas as instruções são do tipo mais rápido e não exigem mais de um ciclo de clock para serem
concluídas.
2
Segunda pergunta
2). Considere agora um cenário onde o estágio MEM e os registradores do pipeline do estágio
precisam de 12ns. Há duas possibilidades: dividir o estágio em dois (MEM1 e MEM2) ou
aumentar o tempo de ciclo para 12ns. Definindo um novo tempo de ciclo mas mantendo a mesma
quantidade de estágios. Para um programa que possuí as características do enunciado acima,
quando a primeira opção é melhor que a segunda? Sua resposta deve ser baseada no valor de f.
Se f for pequeno, a primeira opção (dividir o estágio MEM em dois) pode ser melhor. Isso ocorre
porque, quando f é pequeno, muitas instruções não dependem do resultado de um load e,
portanto, podem ser executadas mais rapidamente. Com a primeira opção, instruções que não
dependem do resultado de um load podem ser executadas mais rapidamente, reduzindo o número
total de ciclos de clock necessários para executar o programa.
Por outro lado, se f for grande, a segunda opção (aumentar o tempo de ciclo para 12ns) pode ser
melhor. Isso ocorre porque, quando f é grande, muitas instruções dependem do resultado de um
load e, portanto, levam mais tempo para serem executadas. Com a segunda opção, todos os
estágios de pipeline têm a mesma duração e, portanto, as instruções que dependem do resultado
de um load podem ser executadas mais rapidamente, reduzindo o número total de ciclos de clock
necessários para executar o programa.
Em resumo, a primeira opção (dividir o estágio MEM em dois) é melhor quando f é pequeno, e a
segunda opção (aumentar o tempo de ciclo para 12ns) é melhor quando f é grande. O valor exato
de f que define o limite entre as duas opções dependerá do projeto específico do pipeline e do
conjunto de instruções do programa.
3