Lista de Exercícios Princípios e Exemplos de Conjuntos de Instruções
Por: Igor Marcelo S. • 6/1/2021 • Trabalho acadêmico • 1.314 Palavras (6 Páginas) • 640 Visualizações
[pic 1]
- Qual é o impacto de duas organizações de caches diferentes sobre o desempenho de um processador?
- Considere que o CPI com uma cache perfeita é de 1,6, o tempo de ciclo de clock é de 0,35ns, existe 1,4 referência de memória por instrução, o tamanho das duas caches é de 128 KB e ambos possuem tamanho de bloco de 64 bytes.
- Uma cache é mapeada diretamente e a outra é associativa por conjunto com duas vias. Para caches associativas por conjunto, temos que acrescentar um multiplexador para selecionar entre os blocos no conjunto, dependendo do resultado da comparação das tags. Como a velocidade do processador pode estar ligada diretamente à velocidade de um acerto na cache, considere que o tempo de ciclo de clock do processador deva ser esticado 1,35 vez para acomodar o multiplexador de seleção da cache associativa por conjunto.
- Para a primeira aproximação a penalidade por falta na cache é de 65ns para qualquer organização de cache.
- Primeiro, calcule o tempo médio de acesso à memória e depois o desempenho do processador. Considere que o tempo de acerto seja de um ciclo de clock, a taxa de falta de uma cache de 128KB mapeado diretamente seja de 2,1% e a taxa de falta para uma cache associativa por conjunto com duas vias do mesmo tamanho seja de 1,9%.
Resposta:
O tempo médio de acesso à memória é
Tempo médio de acesso à memória = + Tempo de acerto Taxa de falta P× enalidade de falta
Assim, o tempo para cada organização é
Tempo médio de acesso à memória1via = + 0,35 (0,021 65) × = 1,72 ns
Tempo médio de acesso à memória2 vias = × 0,35 1,35+ × (0,019 65) = 1,71 ns
O tempo médio de acesso à memória é melhor para a cache associativa por conjunto com duas vias. O desempenho do processador é
[pic 2]
[pic 3]
[pic 4]
Substituindo (Penalidade por falta × Tempo de ciclo de clock) por 65 ns, o desempenho de cada organização de cache é
[pic 5]
[pic 6]
e o desempenho relativo é
[pic 7]
- Qual tem a menor taxa de falta: uma cache de instruções de 32 KB com uma cache de dados de 32KB ou uma cache unificada de 64KB? A taxa de faltas para uma cache de instrução de 32 KB é de 1,36 faltas por 1.000 instruções. Para uma cache de dados de 32 KB a taxa de faltas será de 38,4 faltas por 1000 instruções. Já para uma cache unificada de 64 KB a taxa de faltas será de 39,4 faltas por 1.000 instruções. Considere que 40% das instruções são instruções de transferências de dados. Considere que um acerto utiliza um ciclo de clock e a penalidade por falta é de 200 ciclos de clock. Um acerto no carregamento ou armazenamento utiliza um ciclo de clock extra em uma cache unificada. Qual o tempo médio de acesso a memória em cada caso? Considere caches write-through com um buffer de escrita e ignore os stalls devidos ao buffer de escrita.
Resposta:
[pic 8]
[pic 9]
[pic 10]
[pic 11]
[pic 12]
[pic 13]
[pic 14]
[pic 15]
- Considere uma cache write-back totalmente associativa com muitas entradas de cache que começam vazias. A seguir apresentamos uma sequência de sete operações de memória (o endereço está em colchetes):
Write Mem[200]; Write Mem [100]; Write Mem[100]; Read Mem[200]; Read Mem [100]; Write Mem[200]; Write Mem[100]; Write Mem[300]
Quais são os números de acertos e falhas quando se usam no-write allocate e write allocate?
Resposta:
Para a no-write allocate, o endereço 100 não está na cache e não existe write allocate, de modo que as duas primeiras escritas resultarão em faltas. O endereço 200 também não está na cache, de modo que a leitura também é uma falta. A escrita subsequente no endereço 200 é um acerto. A última escrita em 100 ainda é uma falta. O resultado para a alocação sem escrita são quatro faltas e um acerto. Para a alocação de escrita, os primeiros acessos a 100 e 200 são faltas, e o restante são acertos, pois 100 e 200 são encontrados na cache. Assim, o resultado para a alocação de escrita são duas faltas e três acertos.
- A transposição de uma matriz troca suas linhas e colunas e é ilustrada a seguir:[pic 16]
Aqui está um código simples em C para mostrar a transposição
[pic 17]
Considere que as matrizes de entrada e saída sejam armazenadas na ordem principal de linha. Suponha que você esteja executando uma transposição de uma matriz 256 x 256 de elementos de precisão simples (32 bits) em um processador com cache de dados de 16 KB totalmente associativa nível 1 por substituição LRU, com blocos de 64 bytes. Suponha que a cache tenha a política de escrever-alocar-buscar na escrita para faltas de escrita. Suponha, de modo não realista que a volta dos blocos modificados exija 0 ciclo.
...