Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

*
Introdução à Ciência da Computação 2010/01
Mauren Louise Sguario Coelho de Andrade
maurensguario@utfpr.edu.br
*
A memória pode ser definida como um local para armazenamento de informações, onde as duas únicas ações possíveis são a leitura e a escrita.
As informações são representadas em conjuntos de bytes, cada um possuindo um único endereço numérico definido.
Em um sistema computacional, temos diferentes tipos de memórias, para diferentes finalidades, que se interligam de forma estruturada e que formam o subsistema de memória.
*
Os usuários querem memórias grandes e velozes, mas elas são caras.
Possível solução: 
Fazer com que a memória pareça ser grande e veloz a um custo razoável
Hierarquia de Memória
Inclusiva: cada nível é um sub-conjunto do nível inferior
O desempenho depende das taxas de acerto (hit rates)
*
*
Os dados contidos num nível mais próximo do processador são sempre um sub-conjunto dos dados contidos no nível anterior.
O nível mais baixo contém a totalidade dos dados.
*
DRAM (Dynamic Random Access Memory):
Valor é armazenado com uma carga em um capacitor que deve ser periodicamente atualizado. Por isso é chamada dinâmica.
Muito pequeno – 1 transistor por bit.
De 5 a 10 vezes mais lento que a SRAM 
Usada para memória principal
SRAM (Static Random Access Memory):
Valor é armazenado em um par de portas lógicas indefinidamente, enquanto houver energia. Por isso é chamada estática
Muito rápida, mas toma mais espaço que a DRAM – 4 a 6 transistores por bit
Usada para memória cache
*
Localidade: estatística de comportamento do acesso aos dados da memória.
Se um item é referenciado,
Ele tende a ser referenciado em breve novamente
Os itens na sua vizinhança também o serão
O princípio de localidade faz com que a hierarquia de memória funcione na prática.
*
Localidade temporal: 
Um item referenciado tende a ser referenciado novamente em um curto espaço de tempo
Ex: loops
Localidade espacial:
Os itens próximos na memória a um item referenciado tendem a ser também referenciados
Ex: matrizes e estruturas
*
Localidade temporal: mesmas instruções são executadas seguidamente M × N vezes.
Localidade espacial: Matrizes são arrumadas linha a linha. Aqui, percorre-se a matriz linha a linha. Assim, faz-se sempre acesso a posições de memória contíguas.
int soma_linhas(int a[M][N]) {
 int i, j, sum = 0;
 for (i = 0; i < M; i++)
 for (j = 0; j < N; j++)
 sum += a[i][j];
 return sum;
}
*
Localidade temporal: mesmas instruções são executadas seguidamente M × N vezes.
Localidade espacial: o percurso da matriz é feito coluna a coluna, portanto, dois acessos consecutivos não fazem acesso a posições de memória contíguas.
int soma_coluna(int a[M][N]) {
 int i, j, sum = 0;
 for (j = 0; j < N; j++)
 for (i = 0; i < M; i++)
 sum += a[i][j];
 return sum
}
*
Memória rápida e de pequena capacidade
Guarda somente os itens que serão referenciados com freqüência em determinado momento
Para tal, explora os conceitos de Localidade Temporal e de Localidade Espacial
Tais itens podem ser tanto dados, como instruções.
*
Cache
CPU
Memória
Principal
Transferência de words
Transferência de blocos
*
Sejam dois níveis adjacentes na hierarquia de memória:
Nível superior	 – próximo à CPU
Nível inferior 		 – longe da CPU
Bloco – menor unidade de dados transferidos de um nível inferior para a cache
Hit – ocorre quando o dado requisitado pelo processador se encontra na memória cache 
Miss – ocorre quando o dado requisitado pelo processador não se encontra na memória cache, sendo necessário lê-lo do nível inferior. 
*
Hit rate – porcentagem de hits ocorridos em relação ao total de acessos à memória.
Miss rate – porcentagem de misses ocorridos em relação ao total de acessos à memória. 
*
Mapeamento direto (directed-mapped)
Cada bloco pode ser colocado em uma única posição na cache
Totalmente associativa (fully associative)
Cada bloco pode ser colocado em qualquer posição na cache
Parcialmente associativa (n-way set-associative)
Cada bloco pode ser colocado em um conjunto restrito de posições na cache.
*
0000000
0000001
0000010
0000011
00000
Cada word é constituída de 4 bytes (= 2²).
O endereço da word é a parte invariante dos endereços dos bytes.
*
Cache
Memória Principal
000
001
010
011
100
101
110
111
00001
01001
10001
11001
00101
01101
10101
11101
*
Cada bloco da memória principal pode ser alocado em qualquer posição da cache.
A busca por um bloco é feita ao mesmo tempo em paralelo em todas as entradas da cache.
*
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
Cache
Memória Principal
*
00
01
10
11
Cache
Memória Principal
índice
*
Cache
CPU
Memória
Principal
Transferência de words
Transferência de blocos
*
*
Penalidade de falha para dois níveis de cache:
acesso
miss
miss
Penalidade 200 ns
Penalidade 20 ns
*
 Memória Principal é a parte do computador onde programas e dados são armazenados para processamento. 
A informação permanece na memória principal apenas enquanto for necessário para seu emprego pela UCP, sendo então a área de MP ocupada pela informação pode ser liberada para ser posteriormente sobregravada por outra informação. 
Quem controla a utilização da memória principal é o Sistema Operacional. 
 
*
A memória precisa ter uma organização que permita ao computador guardar e recuperar informações quando necessário. 
É preciso ter como encontrar essa informação mais tarde, quando ela for necessária.
*
Célula é a unidade de armazenamento do computador. A memória principal é organizada em células. Célula é a menor unidade da memória que pode ser endereçada (não é possível buscar uma "parte" da célula) e tem um tamanho fixo (para cada máquina). 
As memórias são compostas de um determinado número de células ou posições. Cada célula é composta de um determinado número de bits. Todas as células de um dado computador tem o mesmo tamanho, isto é, todas as células daquele computador terão o mesmo número de bits.
Cada célula é identificada por um endereço único, pela qual é referenciada pelo sistema e pelos programas. 
 
*
Número de bits para representar um endereço Expressão geral: MP com endereços de 0 a (N-1)  N = 2x logo:  x = log2 N sendo x = nº de bits para representar um endereço e N o número de endereços. 
*
A capacidade da MP em bits é igual ao produto do nº de células pelo total de bits por célula.  T = N x M T = capacidade da memória em bits N = nº de endereços ( como vimos anteriormente, N=2x sendo x = nº de bits do endereço) M = nº de bits de cada célula Para encontrar a capacidade em bytes, bastaria encontrar a capacidade em bits e depois multiplicar por 8 (cada byte contém 8 bits) ou então converter o tamanho da célula para bytes e depois multiplicar pelo número de células. O último endereço na memória é o endereço N-1 ( os endereços começam em zero e vão até N-1).
*
Numa MP com 1kbyte de capacidade, onde cada célula tem 8 bits: a) quantas células tem a MP? b) quantos bits são necessários para representar um endereço de memória?
Um computador endereça 1k células de 16 bits cada uma. Pede-se: a) sua capacidade de memória; b) o maior endereço que o computador pode endereçar;
A memória de um computador tem capacidade de armazenar 216 bits e possui um barramento de dados de 16 bits. Pede-se: a) o tamanho da célula de memória;
*
Calcular e completar os campos: