Buscar

Prova 2013.2 - P1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

GABARITO 
P1 - Arquiteturas Avançadas de Computadores 
Professor: Leandro Marzulo 
2013-1 
 
Instruções: Esta prova é composta de três questões totalizando 12 (doze) pontos, sendo a nota máxima 10 (dez). Responda as questões de forma sucinta e clara. O uso de lápis 
é permitido, no entanto, pedidos de revisão serão considerados apenas para questões respondidas a caneta. BOA PROVA! 
 
1) (4,0) Considere um programa composto apenas por instruções de LW e ADD, com o total de 10
9
 instruções. Neste programa as instruções de LW e ADD ocorrem 
alternadamente, sendo a primeira instrução do programa um LW. Cada ADD usa o dado carregado pelo LW imediatamente anterior não há dependências entre instruções de 
ADD e as instruções de LW são totalmente independentes. Responda: 
 
a) (1,0) Quanto tempo será necessário para executar esse programa em um processador sem pipeline e monociclo, considerando que o tempo do ciclo é 13ns 
(1ns = 10
-9
s)? 
 
Resp.: Em um processador monociclo, cada instrução executa em 1 ciclo. Logo, na questão, cada instrução é executada em 13ns. Sendo assim, o tempo total é: 
 
13 * 10
-9
 * 10
9 
s = 13s 
 
b) (1,0) Quanto tempo será necessário para executar esse núcleo de programa em um processador MIPS com pipeline de 5 estágios (visto em sala de aula), COM 
detecção de hazard de dados e SEM forwarding, considerando que o tempo do ciclo é 3ns (1ns = 10
-9
s) e dado que o programa foi compilado sem reordenação de 
instruções? Qual é o ganho de desmpenho conseguido em comparação com o processador sem pipeline? 
 
Resp.: As dependência ocorrem apenas entre cada instrução de ADD e o LW imediatamente anterior. Vamos analisar apenas um trecho do programa: 
 
 
podemos dizer portanto, que, depois que o pipe encher, a cada 4 ciclos teremos 2 instruções finalizadas (ou 1 instrução a cada 2 ciclos - simplificando). Logo: 
 
Tempo de execução = Tempo para encher o pipe + (Tempo para completar uma instrução * número de instruções) 
 
Tempo para encher o pipe = 4 * 3 * 10
-9
s (desprezível, dado o grande número de instruções) 
 
Tempo de execução ≈ Tempo para completar uma instrução * número de instruções 
Tempo de execução ≈ 2 * 3 * 10-9 * 109 s 
Tempo de execução ≈ 6s 
 
13/6 ≈ 2,16 
 
A máquina é 2,16 vezes mais rápida que a versão monociclo. 
 
c) (1,0) Se o processador do item b não tivesse também a unidade de detecção de hazard de dados, para poder executar o programa em questão o que poderia ser feito 
pelo compilador? 
 
Resp.: O compilador pode inserir instruções de NOP (o que é equivalente ao processador gerar bolhas) ou pode reordenar o código para eliminar as bolhas ou reduzir 
a necessidade de NOPs. 
d) (1,0) Quanto tempo será necessário para executar esse núcleo de programa em um processador MIPS com pipeline de 5 estágios (visto em sala de aula), COM 
detecção de hazard de dados, COM forwarding, considerando que o tempo do ciclo é 3ns (1ns = 10
-9
s) e dado que o programa foi compilado sem reordenação de 
código? Qual é o ganho de desempenho conseguido em comparação com o processador sem pipeline? 
 
Resp.: Com forward passamos a ter apenas 1 bolha a cada par LW/ADD, como na figura: 
 
 
 
podemos dizer portanto, que, depois que o pipe encher, a cada 3 ciclos teremos 2 instruções finalizadas (ou 1 instrução a cada 1,5 ciclos - simplificando). Logo: 
 
Tempo de execução = Tempo para encher o pipe + (Tempo para completar uma instrução * número de instruções) 
 
Tempo para encher o pipe = 4 * 3 * 10
-9
s (desprezível, dado o grande número de instruções) 
 
Tempo de execução ≈ Tempo para completar uma instrução * número de instruções 
Tempo de execução ≈ 1,5 * 3 * 10-9 * 109 s 
Tempo de execução ≈ 4,5s 
 
13/4,5 ≈ 2,89 
 
A máquina é 2,89 vezes mais rápida que a versão monociclo. 
 
 
2) (2,0) Quais são a vantagens e desvantagens dos processadores com pipelines profundos (com muitos estágios)? 
 
Resp.: Pipelines profundos possibilitam maior paralelismo. No caso ideal (pipe balanceado, sem overheads no tempo do ciclo e sem hazards), a versão com pipeline é E vezes 
mais rápida que a versão monociclo (E = nº de estágios do pipe). As desvantagens são que pipes profundos, na vida real, causam + hazards e overheads. Quanto mais estágios, 
mais possibilidades de hazards devem ser tratadas. 
 
3) (6,0) Considere o trecho de código abaixo e responda: 
 
loop: lw $t0, 0($t1) 
 add $t2,$t0,$t0 
 sw $t0, 0($t2) 
 addi $t1, $t1, -4 
 bne $t1, $t3, loop 
 
a) (1,0) Quais são as dependências de dados existentes entre as instruções (marque as dependências no próprio código do enunciado, usando diferentes marcações para 
cada dependência)? 
 
Resp.: 
 
loop: lw $t0, 0($t1) 
 add $t2,$t0,$t0 
 sw $t0, 0($t2) 
 addi $t1, $t1, -4 
 bne $t1, $t3, loop 
 
Note que a instrução ADDI escreve em $t1 e na iteração seguinte esse valor será lido pelo LW e pelo próprio ADDI. 
 
b) (1,0) Considerando todas as possibilidades de forwarding, conforme a tarefa 2 e sabendo que a comparação na instrução bne é feita no estágio EX, mostre como será a 
execução das instruções de uma iteração do laço (sem reordenação) usando o diagrama de representação de pipelines visto em aula. Mostre todos os 
encaminhamentos feitos no diagrama. Quantos ciclos serão necessários para executar o trecho do programa? 
 
Resp.: Considerando apenas as dependências de 1 iteração, temos: 
 
 
 
Esse trecho de código executa 10 ciclos. 
 
c) (1,0) Reordene o código de forma a reduzir ao máximo o número de bolhas e mostre o novo diagrama com encaminhamentos. Quantos ciclos serão necessários para 
executar o trecho do programa? 
 
Resp.: Reordenando o código, podemos eliminar a bolha existente no item b. O código reordenado é o seguinte: 
 
loop: lw $t0, 0($t1) 
 addi $t1, $t1, -4 
 add $t2,$t0,$t0 
 sw $t0, 0($t2) 
 bne $t1, $t3, loop 
 
 
Considerando apenas as dependências de 1 iteração, temos: 
 
 
 
Esse trecho de código executa 9 ciclos. 
 
 
d) (1,0) Considerando que o corpo do laço é executado 10 vezes, liste as previsões e a exatidão das previsões para um esquema de previsão de desvios estático que prevê 
todos os desvios como não tomados. 
 
Resp.: Como o corpo do laço executa 10 vezes, os 9 primeiros desvios devem ser tomados e o último não tomado. Sendo assim, temos (T=tomado e N=não tomado): 
 
Real T T T T T T T T T N 
Previsão N N N N N N N N N N 
Status Errado Errado Errado Errado Errado Errado Errado Errado Errado Certo 
 
Percentual de Acerto = 1/10 = 10% 
 
e) (1,0) Considerando que o corpo do laço é executado 10 vezes, liste as previsões e a exatidão das previsões para um esquema de previsão de desvios dinâmico de 1 bit, 
inicializado para prever "não tomado". 
 
Resp.: Como o corpo do laço executa 10 vezes, os 9 primeiros desvios devem ser tomados e o último não tomado. Em um esquema de previsão dinâmico de 1 bit, o bit indica 
se o devio será previsto como tomado (1) ou não tomado (0). Caso a previsão esteja errada, o bit é invertido. Sendo assim, temos (T=tomado e N=não tomado): 
 
 
Real T T T T T T T T T N 
Bit 0 1 1 1 1 1 1 1 1 1 
Previsão N T T T T T T T T T 
Status Errado Certo Certo Certo Certo Certo Certo Certo Certo Errado 
 
Percentual de Acerto = 8/10 = 80% 
 
 
f) (1,0) Considerando que o corpo do laço é executado 10 vezes, liste as previsões e a exatidão das previsões para um esquema de previsão de desvios dinâmico de 2 
bits, inicializado para prever "tomado fortemente". 
 
Resp.: Como o corpo do laço executa 10 vezes, os 9 primeiros desvios devem ser tomados e o último não tomado. Um esquema de previsão dinâmico de 2 bit segue o 
esquema abaixo: 
 
 
 
Sendo assim, temos (T=tomado e N=não tomado): 
 
 
Real T T T T T T T T T N 
Bit 11 11 11 11 11 11 11 11 11 11 
Previsão T T T T T T T T T T 
Status Certo Certo Certo Certo Certo Certo Certo Certo Certo Errado 
 
Percentual de Acerto = 9/10 = 90%

Outros materiais