Desempenho e lei de Amdahl
Tempo de CPU, CPI ponderado, speedup e limites de otimizações parciais.
Um computador pode executar mais instruções por segundo e ainda demorar mais a resolver um problema, pois o tempo depende de quantas instruções o programa executa, do custo médio de cada uma e do período do relógio.
O que estamos a medir
Latência é o tempo para concluir uma tarefa, enquanto throughput é o número de tarefas concluídas por unidade de tempo. Sobrepor tarefas pode aumentar throughput sem reduzir a latência de uma tarefa individual.
Tempo decorrido inclui espera por entrada/saída e outras pausas, enquanto tempo de CPU mede o tempo em que o CPU trabalha para o processo, incluindo a componente de utilizador e a de sistema. Compara a mesma medida, o mesmo trabalho e a mesma entrada.
O desempenho para uma tarefa é proporcional a . O speedup de uma mudança é . Se uma tarefa passa de 10 s para 8 s, o speedup é 1,25 e o tempo diminuiu 20%. Não são duas maneiras equivalentes de dizer uma diminuição de 25%.
Equação de execução
Se N é o número de instruções máquina executadas, CPI o número médio de ciclos por instrução e f a frequência, com
Com , CPI=1,5 e f=2 GHz, o tempo é s. GHz é ciclos/s; não insiras 2 na fórmula mantendo N sem conversão de unidades.
Um compilador pode reduzir N e aumentar CPI. Se N passa a 80% e CPI a 115%, com a mesma frequência, o tempo passa a : redução de 8%, speedup .
CPI ponderado
Com classes de instruções, o CPI médio pesa cada classe pela fração do número de instruções nela: . As frações somam 1.
Um programa com 50% R, 30% lw, 10% sw e 10% beq, no CPU multiciclo, tem, com
Se forem 1000 instruções, são 4200 ciclos. A 500 MHz, demora . Um uniciclo a 100 MHz, com CPI=1 e o mesmo N, demora : o multiciclo é vezes mais rápido neste caso.
Não uses a fração de tempo de uma classe como se fosse a fração de instruções. No exemplo, os loads são 30% das instruções, mas ocupam dos ciclos.
IPC, instruções por ciclo, é para os mesmos totais. MIPS é . Uma taxa MIPS maior não prova menor tempo se os programas ou ISAs exigirem N diferente.
Comparar cargas de trabalho
Em benchmarks, explicita os pesos: a soma dos tempos de tarefas representa uma carga de trabalho; a média geométrica de razões é outra forma de agregação, não o tempo total dessa carga.
Lei de Amdahl
Se uma parte ocupa fração do tempo original, com , e fica vezes mais rápida, só essa parte muda. Normalizando o tempo original para 1, o resto conserva e a parte melhorada passa a :
Considera uma tarefa que demora 10 s: 4 s ficam inalterados e 6 s pertencem à parte melhorada. Se essa parte ficar três vezes mais rápida, passa de 6 s para 2 s. O total passa para 6 s e o speedup é .
As barras usam a mesma escala. Só o segmento de 6 s encolhe; os 4 s restantes continuam a impor um limite. Mesmo eliminar todo o tempo da parte melhorada deixa 4 s, por isso o speedup não ultrapassa .
Para obter speedup 2 com p=0,8, o tempo novo tem de ser metade do original. Isola o tempo da parte melhorada:
O limite , para , só é atingido quando a parte melhorada demora zero. Se p=0, a alteração não afeta o tempo total e S=1. Se p=1, toda a tarefa é melhorada e o speedup é s.
Depois da melhoria, a parte otimizada já não ocupa p do tempo. Ocupa . No primeiro exemplo, é .
Percentagens aninhadas e mudanças múltiplas
Se 80% do tempo é cálculo numérico e metade desse cálculo é trigonometria, a trigonometria ocupa do total. Acelerar só essa parte quatro vezes dá , com speedup .
Para partes disjuntas, com frações originais e melhorias , usa . Não somes duas vezes o tempo de partes sobrepostas. Se aplicares melhorias sucessivas usando percentagens da execução intermédia, recalcula os pesos antes da segunda conta.
Uma frequência maior pode exigir CPI maior ou fazer esperar mais ciclos por memória. Substitui os valores finais na equação de execução. A diferença que interessa ao utilizador é o tempo para o trabalho definido.
Exercícios
Média por instruções
Um programa tem 40% instruções de CPI=1, 40% de CPI=2 e 20% de CPI=5. São 50 milhões de instruções a 1 GHz. Qual é o tempo de CPU em segundos?
Pista
Calcula CPI médio antes do tempo.
Mais uma pista
CPI=0,4+0,8+1=2,2.
Solução
CPI=2,2 e ciclos=. Tempo= s. Os 20% de CPI=5 ocupam 1/2,2 do tempo, aproximadamente 45,45%, não 20%.
Erros frequentes
As percentagens dadas são de instruções, não de tempo, por isso o CPI médio pesa cada classe pela sua fração.
Percentagem dentro de outra
60% do tempo original é processamento de imagens; metade dessa parte é filtragem. A filtragem fica 5 vezes mais rápida. Qual é o speedup global?
Pista
Converte primeiro a percentagem aninhada para fração do total.
Mais uma pista
A parte melhorada ocupa 0,6×0,5=0,3.
Solução
p=0,3, tempo novo normalizado=0,7+0,3/5=0,76. Speedup=1/0,76=25/19≈1,315789. A redução de tempo é 24%. Não acelerámos todo o processamento de imagens.
Erros frequentes
Usar p=0,5 ou p=0,6 não corresponde à parte descrita.
Um objetivo impossível
Uma parte de 25% do tempo pode ser melhorada sem limite. É possível atingir speedup 2 só com essa alteração?
Pista
O restante 75% nunca fica mais rápido.
Solução
O limite é , menor que 2. Mesmo eliminar completamente a parte melhorada deixa 75% do tempo original. Não existe fator s finito ou infinito que dê speedup 2 apenas com essa mudança.
Confere a tua resposta:
- Limite 4/3, abaixo de 2.
- Os 75% restantes impedem o objetivo.
Erros frequentes
Não interpretes melhoria infinita de uma parte como tempo total zero, porque os restantes 75% nunca desaparecem.
Menos instruções, mais ciclos
Um compilador reduz N em 30%, aumenta CPI em 20% e não altera f. Calcula a razão entre tempo novo e antigo e o speedup.
Pista
Os fatores de N e CPI multiplicam-se.
Solução
A razão de tempos é 0,7×1,2=0,84. O tempo diminui 16%; speedup=1/0,84=25/21≈1,190476. Menos instruções ajudou, mas parte desse ganho foi absorvida pelo aumento de CPI.
Confere a tua resposta:
- Tempo novo 0,84 do antigo; speedup 25/21.
- Distingue redução de tempo 16% de speedup.
Erros frequentes
Não subtraias diretamente 30% e 20%; as mudanças multiplicam fatores.
Duas melhorias disjuntas
Uma execução gasta 20% do tempo em A e 30% em B, sem sobreposição. A fica 2 vezes mais rápida e B 3 vezes. Calcula o tempo novo normalizado e a fração nova de tempo em B.
Pista
As partes não melhoradas ocupam 50%.
Mais uma pista
B passa a custar 0,3/3=0,1 do tempo antigo.
Solução
O tempo novo é 0,5+0,2/2+0,3/3=0,7. Speedup=10/7. A fração nova em B é 0,1/0,7=1/7≈14,2857%. A fração 30% era relativa ao total antigo, não ao novo.
Confere a tua resposta:
- Tempo normalizado 0,7 e speedup 10/7.
- Fração nova de B é 1/7.
Erros frequentes
Não mantenhas a percentagem de B inalterada depois de acelerar essa parte.
Amdahl com p=0
Calcula com e explica o limite .
Pista
Substitui na fórmula com finito e .
Mais uma pista
para qualquer ; o limite vale para .
Solução
Com , . Para , dá para qualquer : a melhoria não toca o tempo total. Para , quando , logo . Para , , que diverge com .
Confere a tua resposta:
- Substituíste p=0 na fórmula com s>0
- Distinguiste p=0, 0<p<1 e p=1 no limite
Erros frequentes
Não apliques o limite a sem tratar à parte: aí .