Considere o seguinte código:
b) Dê um exemplo de localidade temporal nesse código.
Passo 1
Vamos analisar a questão apresentada. Temos um trecho de código com dois laços
for
aninhados que acessam e modificam o array a
. O conteúdo da matéria está relacionado à localidade temporal, que refere-se à reutilização de dados ou instruções dentro de um curto intervalo de tempo durante a execução de um programa. Para resolver essa questão, precisamos identificar um exemplo de acesso repetido aos mesmos dados ou instruções dentro do código fornecido.Passo 2
Primeiro, vamos entender o que o código está fazendo. Temos dois laços
for
:- O primeiro laço controla a variável
i
que varia de0
a19
. - Dentro desse laço, há um segundo laço que controla a variável
j
de0
a9
. - Dentro do laço interno, executa-se a operação
a[i] = a[i] * j
.
Aqui, o array
a
está sendo acessado e modificado repetidamente com o mesmo índice i
enquanto j
varia.Passo 3
Agora, vamos focar na localidade temporal. Esse conceito diz respeito ao fato de que se uma determinada posição de memória (como
a[i]
) é acessada em um momento, provavelmente será acessada novamente em um futuro próximo. No nosso código, dentro do la��o interno, o elemento a[i]
é acessado e modificado em cada iteração de j
.Passo 4
Vamos identificar o exemplo de localidade temporal:
- Para cada valor de
i
, o elementoa[i]
é acessado e modificado 10 vezes (quandoj
varia de0
a9
). - Isso significa que
a[i]
está sendo reutilizado várias vezes em um curto período, caracterizando a localidade temporal.
Resposta
Um exemplo de localidade temporal nesse código é o acesso repetido ao elemento
a[i]
dentro do laço interno. Para cada valor de i
, o array a[i]
é acessado e modificado várias vezes conforme j
varia, demonstrando a reutilização de a[i]
em curtos intervalos de tempo.Exercícios relacionados
Dado um disco com rotação de 2.400 RPM, com 120 cilindros e seis trilhas por cilindro. Cada trilha possui 16 setores e cada setor tem 512 bytes. Considere que o tempo médio de seek é de 60 ms .
b) Quanto tempo será necessário para ler 10 setores em sequência?
b) Quanto tempo será necessário para ler 10 setores em sequência?
Considere um computador com as seguintes características: memória principal de 1MByte, tamanho de palavra de 1 byte, tamanho de bloco de 16 bytes e cache de 64 KBytes.
a) Para o endereço de memória , mostre quais são os valores dos campos tag, linha e palavra, considerando uma cache de mapeamento direto.
a) Para o endereço de memória
Considere uma máquina com uma memória principal endereçável por byte (ou seja, 1 célula
palavra=1 byte) com
bytes e um tamanho de bloco de 8 bytes. Suponha que essa máquina utilize uma cache de 32 linhas mapeadas diretamente. Responda as questões abaixo.
d) Por que a tag também é armazenada na cache?
d) Por que a tag também é armazenada na cache?
Considere um sistema de memória (memória principal + cache) com os seguintes parâmetros: tempo de acesso à cache de 10 ns e tempo de acesso à memória principal de 120 ns . Se
dos acessos são satisfeitos pela cache, qual é o tempo médio de acesso a uma palavra nesse sistema de memória?