Exercícios MT2

Limpar todos os resolvidos?

Desempenho

Alteração que produz o melhor desempenhoEscolha múltipla

Teste 2, 2017/18

O tempo de execução de um programa está repartido entre a execução de instruções da classe A (60% do tempo) e da classe B (40% do tempo). Qual das seguintes alterações leva ao melhor desempenho?

  • A. Diminuir para metade o tempo das instruções de classe A.
  • B. Diminuir o tempo das instruções de classe B para um quarto do original.
  • C. Reduzir o tempo de A para um terço e aumentar o de B para o dobro.
  • D. Reduzir 1,5 vezes o tempo de A e reduzir o de B para metade.
A tua resposta

Solução

A melhor alternativa é a D, com tempo proporcional 0,6 do original.

Comparando os tempos proporcionais: A dá 0,7, B dá 0,7, C dá 1,0 e D dá 0,6. Quanto menor o tempo, melhor o desempenho, logo a alternativa D é a correta.

  • A. Novo tempo proporcional: 0,6/2 + 0,4 = 0,7.
  • B. Novo tempo proporcional: 0,6 + 0,4/4 = 0,7.
  • C. Novo tempo proporcional: 0,6/3 + 0,4*2 = 1,0, pior que o original.
  • D. Novo tempo proporcional: 0,6/1,5 + 0,4/2 = 0,4 + 0,2 = 0,6, o menor de todos.
Speedup de Amdahl numa transferência de dadosEscolha múltipla

Teste 2, 2017/18

Um programa gasta 75% do tempo em transferências de dados para outro computador via rede sem fios. Quantas vezes é preciso aumentar a velocidade de transferência para obter um speedup de duas vezes no tempo de execução total?

A tua resposta

Solução

É preciso aumentar 3 vezes a velocidade de transferência.

Pela lei de Amdahl, com fração melhorada f=0,75f = 0{,}75 e fator de melhoria kk: speedup=1(1−f)+f/k=2\text{speedup} = \frac{1}{(1-f) + f/k} = 2. Resolvendo, 0,25+0,75/k=0,50{,}25 + 0{,}75/k = 0{,}5, logo k=3k = 3.

  • 4. Daria speedup 1/(0,25 + 0,75/4) = 16/7, inferior a 2.
  • 1,5. Speedup insuficiente.
  • 3. Pela lei de Amdahl: 1/(0,25 + 0,75/3) = 1/0,5 = 2.
  • 2. Daria speedup 1/(0,25 + 0,75/2) = 8/5 = 1,6.
Speedup global ao acelerar funções trigonométricasEscolha múltipla

Teste 2, 2018/19

Um programa de cálculo científico gasta 80% do tempo em operações numéricas, repartidas entre operações aritméticas (40% desse tempo) e operações trigonométricas (60% desse tempo). Um novo método reduz 4 vezes o tempo das funções trigonométricas. Qual é o speedup global aproximado?

A tua resposta

Solução

O speedup global é aproximadamente 1,56.

A fração não melhorada é 20%. Dos 80% numéricos, as trigonométricas (60% de 80% = 48% do total) ficam 4 vezes mais rápidas, sobrando 0,8*(0,4 + 0,6/4) = 0,44. Pela lei de Amdahl, speedup = 1/(0,2 + 0,44) = 1/0,64 = 1,5625.

  • 1,82. Corresponderia a uma melhoria maior do que 4 vezes.
  • 2,40. Corresponderia a uma fração melhorada superior a 80%.
  • 2,62. Excede o limite teórico 1/0,2 = 5, mas não é o valor correto.
  • 1,56. Speedup = 1/(0,2 + 0,8*(0,4 + 0,6/4)) = 1/0,64 = 1,5625.
Speedup ao acelerar a unidade de vírgula flutuanteEscolha múltipla

Teste 2, 2016/17

Um programa gasta 50% do tempo a executar cálculos de vírgula flutuante. Qual é o speedup que se obteria se a unidade de vírgula flutuante fosse 5 vezes mais rápida?

A tua resposta

Solução

O speedup é 5/3≈1,675/3 \approx 1{,}67.

Com f=0,5f = 0{,}5 e k=5k = 5, a lei de Amdahl dá speedup=10,5+0,5/5=10,6=53\text{speedup} = \frac{1}{0{,}5 + 0{,}5/5} = \frac{1}{0{,}6} = \frac{5}{3}.

  • 5/3. Pela lei de Amdahl: 1/(0,5 + 0,5/5) = 1/0,6 = 5/3.
  • 2,5. Ignoraria a parte não melhorada do programa.
  • 10/3. Corresponderia a uma fração melhorada de 70%.
  • 2. Corresponderia a k = 4 com f = 50%.

Memória cache

Decomposição de endereço e leitura numa cache write-backAutoavaliação

Teste 2, 2017/18

Considere uma memória cache do tipo write-back com 8 blocos de 8 bytes, usada como D-cache num CPU com endereços de 16 bits. O conteúdo da cache é:

blococonteúdo (bytes 7 a 0)etiquetavd
0aa cc de hf 34 33 11 0123510
1bb ad 45 4f af de 21 9939111
2cc 34 ab 1f 56 cd ff ff02311
3dd 67 22 2b 32 56 32 2119801
4ee 32 11 9f aa ba ab bb31110
5ff 10 00 04 01 02 03 0427800
611 03 41 32 cc dd ee ff21211
722 01 65 01 05 06 07 0838701

(a) Como se decompõe o endereço de 16 bits para aceder a esta cache? (b) Indique o valor do byte em memória principal no endereço 0xc467.

Solução

(a) Etiqueta: 10 bits; índice: 3 bits; offset: 3 bits. (b) 0xC467 = 1100 0100 0110 0111, logo etiqueta 1100010001 (0x311), índice 100 (4) e offset 111 (7). A etiqueta e o bit v=1 do bloco 4 coincidem, pelo que há acerto e o byte lido é o byte 7 do bloco 4: 0xEE.

Cada bloco tem 8 bytes, logo são precisos 3 bits de offset. A cache tem 8 blocos, logo 3 bits de índice. Dos 16 bits do endereço sobram 10 para a etiqueta. Como o bloco 4 está válido e a etiqueta coincide, trata-se de um read hit; como d=0, o conteúdo da cache está atualizado e corresponde ao da memória principal.

Confere a tua resposta:

  • A decomposição usa 10 bits de etiqueta, 3 bits de índice e 3 bits de offset.
  • O endereço 0xc467 tem etiqueta 0x311, índice 4 e offset 7, com acerto (hit).
  • O valor lido é 0xEE.
Write-back durante uma falta de leituraAutoavaliação

Teste 2, 2017/18

Na cache da questão anterior, explique quais as alterações que ocorrem na cache e na memória principal durante a leitura do byte residente no endereço 0xe48d.

Solução

0xE48D = 1110 0100 1000 1101, logo etiqueta 1110010010 (0x392), índice 001 (1) e offset 101 (5). A etiqueta residente no bloco 1 é 0x391, diferente, pelo que há falta de leitura (read miss). Como o bloco 1 tem v=1 e d=1, o seu conteúdo é primeiro escrito na memória principal (write-back, no endereço com etiqueta 0x391, ou seja, na zona 0xE440-0xE447). Depois, o bloco que contém 0xE48D é lido da memória principal para a posição 1 da cache, atualizando a etiqueta para 0x392 e pondo v=1 e d=0.

Numa cache write-back, um bloco sujo (d=1) só é escrito na memória principal quando é substituído. Como a etiqueta não coincide, o bloco 1 tem de ser guardado antes de ser overwritten, e o novo bloco entra limpo (d=0).

Confere a tua resposta:

  • O endereço 0xe48d decompõe-se em etiqueta 0x392, índice 1 e offset 5.
  • O bloco 1 está válido e sujo (d=1), pelo que ocorre write-back para a memória principal antes de carregar o novo bloco.
  • O novo bloco é carregado na posição 1 com etiqueta 0x392 e flags v=1 e d=0.
Número de blocos de uma memória cacheValor

Teste 2, 2018/19

Uma memória cache contém 32 KiB de dados e cada bloco tem 64 bytes. Quantos blocos tem esta memória?

Solução

32 KiB=3276832\,\text{KiB} = 32768 bytes; 32768/64=51232768 / 64 = 512 blocos.

O número de blocos é o tamanho total da cache a dividir pelo tamanho de cada bloco: 215/26=29=5122^{15} / 2^{6} = 2^{9} = 512.

Blocos e bytes por bloco a partir de etiqueta e índiceAutoavaliação

Teste 2, 2018/19

Um CPU com endereços de 24 bits está equipado com uma memória cache de dados do tipo write-through em que a etiqueta tem 14 bits e o índice 6 bits. Determine o número de blocos e o número de bytes por bloco desta cache.

Solução

Número de blocos: 26=642^6 = 64. Bytes por bloco: 224−14−6=24=162^{24-14-6} = 2^4 = 16.

O índice com 6 bits endereça 26=642^6 = 64 blocos. Os restantes 24−14−6=424 - 14 - 6 = 4 bits são o offset, pelo que cada bloco tem 24=162^4 = 16 bytes.

Confere a tua resposta:

  • A cache tem 64 blocos.
  • Cada bloco tem 16 bytes.
Taxa de faltas para um tempo médio de acessoEscolha múltipla

Teste 2, 2016/17

A memória principal usada com um CPU de 2 GHz tem um tempo de acesso de 60 ns. O acesso à memória cache demora 0,5 ns. Qual deve ser o valor máximo da taxa de faltas da cache para que o tempo médio de acesso à memória seja 10 ciclos de relógio?

A tua resposta

Solução

A taxa de faltas máxima é 7,5%.

O período de relógio é 0,5 ns, logo 10 ciclos correspondem a 5 ns. O tempo médio é tc+tf⋅tm=0,5+tf⋅60t_c + t_f \cdot t_m = 0{,}5 + t_f \cdot 60. Igualando a 5 ns: tf=4,5/60=0,075=7,5%t_f = 4{,}5/60 = 0{,}075 = 7{,}5\%.

  • 5%. Daria tempo médio inferior a 10 ciclos.
  • 10%. Daria 0,5 + 0,10*60 = 6,5 ns, mais de 10 ciclos.
  • 2,5%. Daria tempo médio inferior a 10 ciclos.
  • 7,5%. 0,5 + 0,075*60 = 5 ns = 10 ciclos a 2 GHz.

À 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.