Desempenho

Tempo de CPU, CPI, frequência, rapidez relativa e limites de Amdahl.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Um programa executa 600 milhões de instruções num CPU a 2 GHz, com média de 1,5 ciclos por instrução. Para decidir se outro compilador o acelera, precisamos do tempo da mesma tarefa, mantendo o resultado. A frequência, por si só, não inclui quantas instruções nem quantos ciclos são necessários.

A equação do processador

TCPU=N×CPI×Tc=N×CPIf.T_{\rm CPU}=N\times CPI\times T_c=\frac{N\times CPI}{f}.

NN conta instruções executadas, incluindo repetições; CPICPI conta ciclos por instrução; TcT_c é o período do relógio. Como f=1/Tcf=1/T_c, 2 GHz correspondem a 0,5 ns por ciclo. O tempo de CPU não inclui, por si só, esperas em que o processo não executa. O tempo decorrido também pode incluir espera por I/O ou por outro processo, por isso compara a mesma medida nos dois sistemas.

Se um programa executa 600 milhões de instruções, com CPI 1,5 a 2 GHz:

T=600×106×1,52×109=0,45 s.T=\frac{600\times10^6\times1{,}5}{2\times10^9}=0{,}45\ \mathrm{s}.

O novo compilador reduz NN em 20%, para 480 milhões, mas aumenta o CPI para 1,8. Mantendo os 2 GHz:

T′=480×106×1,82×109=0,432 s.T'=\frac{480\times10^6\times1{,}8}{2\times10^9}=0{,}432\ \mathrm{s}.

A razão de tempos é 0,432/0,45=0,960,432/0,45=0,96: a tarefa demora menos 4%. A rapidez relativa é a razão inversa, 0,45/0,432≈1,04170,45/0,432\approx1,0417, um aumento de 4,17%. As percentagens dos fatores não se somam.

Misturas de instruções

Mantém as 600 milhões de instruções do programa. Se 50% são operações ALU de 1 ciclo, 30% são acessos de 2 ciclos e 20% são saltos de 3 ciclos, podemos contar os ciclos por classe:

ClasseInstruçõesCiclos por instruçãoCiclos totais
ALU300 milhões1300 milhões
Acesso180 milhões2360 milhões
Salto120 milhões3360 milhões

São 1020 milhões de ciclos para 600 milhões de instruções, logo CPI=1,7CPI=1,7 e T=0,51T=0,51 s a 2 GHz. Os saltos são 20% das instruções, mas ocupam 360/1020=35,29%360/1020=35,29\% dos ciclos. A fração de instruções não é a fração de tempo.

Em geral, se pip_i é a fração das instruções da classe ii:

CPI=∑ipiCPIi,∑ipi=1.CPI=\sum_i p_iCPI_i,\qquad\sum_i p_i=1.

Uma taxa de faltas por instrução já permite calcular ciclos perdidos por instrução. Se a taxa é por acesso a dados, multiplica-a também pelo número médio de acessos a dados por instrução, como em Políticas de cache.

Latência, taxa e programas finitos

Latência é o tempo de uma operação, desde o início até à conclusão. Throughput é a taxa de operações concluídas. Uma pipeline sobrepõe operações: pode terminar mais por segundo mesmo que cada uma demore mais.

Um fragmento curto paga enchimento e conclusão. Em cinco fases, 12 instruções independentes levam 16 ciclos, dando CPI efetivo 16/12≈1,33316/12\approx1,333. O limite de uma instrução por ciclo só se aproxima em sequências longas. O cronograma da pipeline mostra como contar paragens e distinguir um traço finito do regime repetido.

A lei de Amdahl

Divide o tempo original numa fração acelerável pp e uma fração inalterada 1−p1-p. Se a parte acelerável melhora por fator ss:

S=TantesTdepois=1(1−p)+p/s.S=\frac{T_{\rm antes}}{T_{\rm depois}}=\frac{1}{(1-p)+p/s}.

Se 70% do tempo acelera 4 vezes, o novo tempo é 0,30+0,70/4=0,4750,30+0,70/4=0,475 do original. A rapidez relativa é 2,105. Mesmo eliminando toda a parte acelerável, o limite seria 1/0,30=3,3331/0,30=3,333.

O ganho de rapidez é S−1S-1; a redução do tempo é 1−1/S1-1/S. Com S=2S=2, a rapidez aumenta 100% e o tempo reduz 50%. São perguntas diferentes.

Para os mesmos 70% de tempo acelerável, acompanha o tempo que sobra:

Fator ss da parte acelerávelParte inalteradaParte aceleradaTempo total relativoRapidez relativa
10,300,7011
20,300,350,651,538
40,300,1750,4752,105
80,300,08750,38752,581
Sem tempo na parte acelerável0,3000,303,333

Duplicar ss de 4 para 8 só retira 0,0875 do tempo original. A parcela de 0,30 mantém-se em todas as linhas e determina o limite.

Para melhorias independentes de partes distintas, soma os seus tempos normalizados: T′/T=p1/s1+p2/s2+⋯T'/T=p_1/s_1+p_2/s_2+\cdots. Se duas melhorias atuam sobre a mesma parte, determina o seu efeito conjunto: contar essa fração duas vezes sobrestima o ganho.

Escolher a medida certa

MIPS mede instruções por segundo, não trabalho útil, por isso pode favorecer um programa que executa mais instruções para a mesma tarefa. A frequência também não considera CPI ou instruções executadas.

Para comparar várias tarefas, calcula a rapidez relativa de cada uma face à mesma referência. Uma média geométrica dessas razões resume o conjunto sem depender da unidade dos tempos. Não substitui a decisão sobre qual tarefa ou carga é relevante.

Exercícios

Comparar compiladores

Um programa tem 400 milhões de instruções, CPI 1,5, CPU 2 GHz. Um compilador reduz instruções 10% e aumenta CPI 20%. Qual é o novo tempo?

Pista
Aplica os fatores aos parâmetros originais.
Solução

T=360×10⁶×1,8/(2×10⁹)=0,324 s. O original era 0,300 s, por isso a mudança é mais lenta.

Erros frequentes

Somar −10% e+20% ou usar o tempo original como se a tarefa tivesse diminuído.

Voltar à explicação
Acelerar só uma parte

80% do tempo original melhora 4 vezes; o resto mantém-se. Calcula a rapidez relativa.

Pista
Normaliza o tempo original para 1.
Solução

Tempo relativo 0,4; rapidez 1/0,4=2,5. O limite com aceleração infinita seria 5.

Erros frequentes

Usar 80% de instruções como 80% do tempo sem essa condição.

Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.