9 <§5.3> Suponha um processador com um CPI base de 1, com frequência de clock de 4 GHz . Considere um tempo de acesso à memória principal de 100 ns , incluindo todo o tratamento de falhas. Suponha que a taxa de misses por instrução na cache primária seja de 2 \%. O quão mais rápido será o processador se acrescentarmos uma cache secundária que tenha um tempo de acesso de 5 ns tanto para hit quanto para miss e que seja grande o suficiente de modo a reduzir a taxa de misses para a memória principal para 0,5 \% ?

Passo 1

O enunciado pede para determinar o quanto o processador ficará mais rápido ao acrescentar uma cache secundária. Informações dadas (vou listar todas elas exatamente como estão no enunciado):
\text{CPI}_{\text{base}} = 1
frequência de clock = 4\,\text{GHz}
tempo de acesso à memória principal = 100\,\text{ns} (inclui todo o tratamento de falhas)
taxa de misses por instrução na cache primária (antes de L2) = 2\% = 0,02
com a cache secundária: tempo de acesso da L2 = 5\,\text{ns} (tanto para hit quanto para miss)
com a cache secundária: taxa de misses que chegam à memória principal = 0,5\% = 0,005
Pergunta que preciso responder: o quão mais rápido (fator de speedup) o processador fica ao adicionar essa cache secundária?

Passo 2

Conceitos e fórmula que vamos usar (explicadinho, passo a passo):
  • A latência do clock (período) é o tempo de um ciclo e vale T_{\text{clk}} = \dfrac{1}{\text{frequência}}ê. Vou converter tempos absolutos (ns) em ciclos dividindo por T_{\text{clk}}.
  • A contribuição das faltas de cache para o CPI (os “stall cycles” por instrução) é dada por
\text{stalls por instrução} = \text{taxa de misses por instrução} \times \text{penalidade por miss (em ciclos)}.çãçã
Aqui “penalidade por miss” significa quantos ciclos a CPU espera a mais quando ocorre uma falta.
  • O CPI efetivo será
\text{CPI}_{\text{efetivo}} = \text{CPI}_{\text{base}} + \text{stalls por instrução}.çã
  • O speedup entre duas configurações com mesma frequência é dado por
\text{speedup} = \dfrac{\text{CPI}_{\text{antigo}}}{\text{CPI}_{\text{novo}}}.
Vou aplicar essas fórmulas primeiro ao caso sem L2 (baseline) e depois ao caso com L2.

Passo 3

Calcular o período do clock para converter ns em ciclos:
T_{\text{clk}} = \dfrac{1}{4\,\text{GHz}} = \dfrac{1}{4\times 10^{9}\,\text{s}^{-1}} = 0,25\,\text{ns}.
Portanto 1 ciclo = 0,25\,\text{ns}.

Passo 4

Caso baseline (sem L2): cada miss da L1 vai direto para a memória principal, cuja latência é 100\,\text{ns}. Convertendo em ciclos, a penalidade por miss é
\text{penalidade}_{\text{baseline}} = \dfrac{100\,\text{ns}}{0,25\,\text{ns/ciclo}} = 400\\ \text{ciclos}.
A taxa de misses por instrução é \,0,02. Então os stalls por instrução são
\text{stalls}_{\text{baseline}} = 0,02 \times 400 = 8\\ \text{ciclos por instrução}.çã
Assim o CPI efetivo no baseline é
\text{CPI}_{\text{baseline}} = \text{CPI}_{\text{base}} + \text{stalls}_{\text{baseline}} = 1 + 8 = 9.

Passo 5

Caso com L2: interpretar cuidadosamente os dados. A taxa de misses que chegam à memória principal depois de colocar a L2 é 0,005 por instrução. As requisições que chegam à L2 são exatamente as faltas da L1, ou seja 0,02 por instrução. Logo a fração das faltas da L1 que também faltam na L2 (ou seja a taxa local de miss da L2) é
\text{miss\_local\_L2} = \dfrac{0,005}{0,02} = 0,25.
Isto significa que 25\% das faltas de L1 também faltam na L2; 75\% das faltas de L1 são acertadas na L2.

Passo 6

Calcular a penalidade média por uma falta da L1 quando existe a L2. Para cada falta da L1: sempre há um acesso à L2 que custa 5\,\text{ns}. Se a L2 também faltar (probabilidade 0,25), então vamos ainda pagar o acesso à memória principal de 100\,\text{ns}. Então a penalidade média em tempo é
\text{penalidade\_por\_L1\_miss} = 5\,\text{ns} + 0,25\times 100\,\text{ns} = 5 + 25 = 30\,\text{ns}.
Converter para ciclos:
\text{penalidade\_por\_L1\_miss (cycles)} = \dfrac{30\,\text{ns}}{0,25\,\text{ns/ciclo}} = 120\\ \text{ciclos}.
Agora as stalls por instrução com L2 (lembre: ainda temos 0,02 faltas de L1 por instrução) são
\text{stalls}_{\text{com L2}} = 0,02 \times 120 = 2,4\\ \text{ciclos por instrução}.çã
Portanto o CPI efetivo com L2 é
\text{CPI}_{\text{com L2}} = 1 + 2,4 = 3,4.

Passo 7

Calcular o speedup (frequência igual nos dois casos):
\text{speedup} = \dfrac{\text{CPI}_{\text{baseline}}}{\text{CPI}_{\text{com L2}}} = \dfrac{9}{3,4} \approx 2,647\ldots
Arredondando razoavelmente, o processador fica cerca de 2,65 vezes mais rápido.

Resposta

O processador será aproximadamente 2,65\times mais rápido.

Exercícios relacionados