Buscar

3_Hierarquia de Memórias

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
Hierarquia de Memórias 
Prof. Prof. José Eduardo Baggio, UFSM
Fonte: Pag. 318 (Patterson)
Março/2010
*
Março/2010
*
Introdução
Necessidades dos computadores:
Memória ilimitada;
Acesso instantâneo.
Os tópicos analisados a seguir têm a finalidade de ajudar os programadores a atingir este objetivo. (ILUSÃO).
Março/2010
*
Março/2010
*
Introdução
Analogia – Memória / Biblioteca
Biblioteca;
Mesa de Trabalho; (acesso mais rápido)
Alguns livros abertos; (ainda mais rápido).
Princípio da localidade aplica-se ao modo de pensar sobre a biblioteca bem como ao uso dos recursos em uma memória.
Março/2010
*
Março/2010
*
Princípio da localidade
Os programas acessam uma parte relativamente pequena da memória em um instante qualquer.
Localidade temporal: se um item é referenciado, ele tende a ser referenciado novamente em um breve espaço de tempo;
Localidade espacial: se um ítem é referenciado, items próximos dele tendem a ser logo referenciados.
Março/2010
*
Março/2010
*
Localidade
Nos programas, a imensa maioria contém loops, de modo que dados e instruções tendem a ser acessados de maneira repetitiva (localidade temporal);
Considerando que as instruções são acessadas sequencialmente, os programas também possuem um alto grau de localidade espacial).
Março/2010
*
Março/2010
*
Hierarquia de memória
Para tirar proveito das localidades, as memórias de um prog. são implementadas como uma hierarquia de memórias.
Existem vários níveis de memória.
Cada nível, com tamanhos e velocidades diferentes.
As memórias mais rápidas são também as mais caras, ao passo que as mais lentas são mais baratas.
Março/2010
*
Março/2010
*
Hierarquia de memória
Existem 3 tecnologias utilizadas:
DRAM (Memória dinâmica de acesso randômico) é usada na memória principal;
SRAM (Memória estática de acesso randômico) é usada nas caches;
HD (Hard disk) – tem a maior capacidade e o custo mais baixo por bit armazenado. É usado como nível mais baixo.
Março/2010
*
Março/2010
*
Hierarquia de memória
Março/2010
*
Março/2010
*
Hierarquia de memória
Velocidade
Mais rápida
Mais lenta
Processador
Memória
Memória
Memória
Tamanho
Menor
Maior
Custo ($/bit)
Mais alto
Mais baixo
Março/2010
*
Março/2010
*
Hierarquia de memória
Os computadores modernos estão organizados como hierarquias:
O nível mais próximo do processador é um subconjunto de qualquer dos níveis mais afastados;
Todas as informações necessárias ao programa estão armazenadas no nível mais baixo, mais longe do processador.
(comparativo com a biblioteca).
Março/2010
*
Março/2010
*
Hierarquia de memória
Em uma hierarquia, podem haver diversos níveis;
Mas os dados sempre serão copiados entre dois níveis adjacentes cada vez.
A unidade mínima de informação que pode estar presente nesta hierarquia de 2 níveis é chamada bloco. (na nossa analogia, bloco=livro).
Março/2010
*
Março/2010
*
Hierarquia de memória
Se a informação solicitada pelo processador estiver presente no nível superior, ocorre um acerto.
Se a informação não for encontrada, é gerada uma falta, e o nível mais baixo da hierarquia é acessado para que se possa recuperar o bloco com a informação solicitada.
A taxa de acertos corresponde à fração dos acessos à memória encontrados no nível superior.
É usada como medida de performance.
Março/2010
*
Março/2010
*
Hierarquia de memória
Os sistemas de memórias são tão decisivos no que diz respeito á performance, que os projetistas de sistemas computacionais têm dedicado muita atenção às memórias. Os principais conceitos envolvidos nesta questão serão abordados adiante.
Existem atualmente uma infinidade de teses de doutorado sobre o assunto.
Março/2010
*
Março/2010
*
Responda com suas palavras
O que é o princípio da localidade.
O que é localidade espacial? Cite um exemplo de código que use localidade espacial e explique.
O que é localidade temporal? Cite um exemplo de código que use localidade temporal e explique.
*
*
Memória Cache
Pag. 321
Março/2010
*
Março/2010
*
Memória Cache
Cache: um lugar seguro para esconder ou guardar coisas.
Webster´s New World dictionary...
É o nome escolhido para definir a memória situada entre o processador e a memória principal. 
O nome CACHE também é usado para definir qualquer memória gerenciada de modo a tirar proveito da localidade de acesso.
Seu uso teve início na década de 60, e hoje TODAS as máquinas possuem memória cache.
Março/2010
*
Março/2010
*
Memória Cache
Começaremos por uma cache mais simples.
Considera-se que cada palavra só pode ser armazenado em um endereço da memória cache. A maneira mais simples de se implementar este sistema é atribuir o endereço da cache com base no endereço que a palavra ocupa na memória principal. Este endereço é chamado “cache mapeada diretamente”.
Março/2010
*
Março/2010
*
Cache mapeada diretamente
0 1 2 3 4 5 6 7
001
00001
01001
10001
11001
Memória cache
Memória principal
Março/2010
*
Março/2010
*
Cache mapeada diretamente
Para saber qual dos dados está armazenado na cache, utiliza-se um sistema de rótulos. No caso apresentado anteriormente, é necessário armazenar um rótulo com somente 2 bits, para indicar qual palavra está armazenada, uma vez que os outros 3 bits distinguem a posição na cache.
Resta ainda utilizar um sinal para indicar se o valor armazenado é válido ou não. Este bit de validade adicionado à cache é o método mais comum utilizado.
Março/2010
*
Março/2010
*
Cache mapeada diretamente
Quando o bit de validade é zero, não há necessidade de comparar o rótulo com os bits superiores do endereço, pois o dado não é válido.
Março/2010
*
Março/2010
*
Tratamento de faltas
A unidade de controle deve:
Detectar a falta;
Tratar a falta, buscando os dados na memória hierarquicamente abaixo.
Se a cache informar um acerto, a máquina continua seu processamento, como se a informação estivesse na memória principal.
Março/2010
*
Março/2010
*
Tratamento de faltas
Para os acertos não é necessário modificações.
Para as faltas, exige-se um trabalho extra.
Deve-se para o processador, congelando o conteúdo de todos os seus registradores.
As paradas são similares às paradas no pipeline discutidas anteriormente.
Um controlador separado deve tratar das faltas geradas no acesso à cache, buscando na memória a informação necessária.
Março/2010
*
Março/2010
*
Faltas de instruções
Ocorrem tanto nos caminhos multi-ciclos como nos caminhos pipeline.
Esquema similar pode ser adotado para tratar faltas na cache geradas pelo acesso a dados.
Março/2010
*
Março/2010
*
Faltas de instruções
Se deu falta, o registrador de instruções (RI) não é mais válido;
Deve-se proceder a uma leitura em um nível mais baixo de memória.
Qual endereço procurar??
O endereço do PC-4.
O PC é incrementado no início do ciclo, tanto no pipeline como no multiciclo.
Para o cálculo, utiliza-se a ULA.
Ordenar a memória para efetuar a leitura.
Março/2010
*
Março/2010
*
Passos a serem executados:
Enviar à memória o endereço original do PC.
Comandar a leitura e esperar o resultado.
Escrever o resultado na cache, escrevendo tb os bits de mais alta ordem (vindos da ULA) e ligar o bit de validade.
Março/2010
*
Março/2010
*
Passos a serem executados:
Reiniciar a execução da instrução a partir do passo #1, gerando uma nova busca da instrução, mas com a certeza de que será encontrada.
Março/2010
*
Março/2010
*
Exemplo: DECStation 3100
Esta estação de trabalho usava o MIPS R3200.
Usa Pipeline (tal qual foi apresentado)
À velocidade máxima, precisa de um dado e de uma instrução a cada clock;
Usa caches separadas de memória e dados: cada uma com 64KB ou 16Kwords.
Março/2010
*
Março/2010
*
Exemplo: DECStation 3100
Existem sinais de controle separados para ler e escrever em cada cache.
ESCREVER???
Lembre-se que é necessário escrever na cache quando ocorre uma falta na busca de instrução.
Março/2010
*
Março/2010
*
Leitura no DECStation 3100
Enviar o endereço para a cache apropriada. O endereço vem do PC para instr.) ou da ULA (dados).
Se uma das caches sinaliza acerto, a palavra requisitada estará disponível nas linhas de dados.
Se causar falta, o endereço é enviado à mem. Principal.
Quando a mem. retornar a inf. solicitada, esta deve ser escrita na cache.
Março/2010
*
Março/2010
*
Escrita no DECStation 3100
Para escrever na cache é mais simples. 
Um esquema básico consiste em atualizar somente a cache. 
A cache e a memória principal terão valores diferentes. (são inconsistentes).
Outro esquema simples é gravar o dado na cache E na memória principal (write-through).
Março/2010
*
Março/2010
*
Write-through
O problema com o write-through é que a escrita na memória principal demora muito tempo.
Retarda o processador.
Por exemplo um prog. onde 13% das instruções são de store.
O CPI médio sem faltas é de 1,2.
Cada store gasta 10 ciclos.
Novo CPI: 1,2 + 10 x 13% = 2,5
Março/2010
*
Março/2010
*
Buffer de escrita
Este buffer armazena o dado enquanto aguarda para ser escrito na memória.
Após escrever o dado na cache, o processado volta e continua a execução das instruções.
O Buffer é liberado após ter gravado o dado na memória principal.
Se o proc. tentar gravar um dado enquanto o buffer estiver cheio, ele deve esperar.
Março/2010
*
Março/2010
*
Problemas com o Buffer
Se a vel. à qual a mem. pode completar as escritas for menos do que a vel. que o processador está gerando as escritas, nenhum buffer poderá dar conta do serviço.
A taxa média de dados a serem escritos pode ser menor que a vel. que a mem. apresenta e mesmo assim pode dar problemas, se as escritas ocorrerem em rajadas.
Março/2010
*
Março/2010
*
Soluções para o Buffer
Para reduzir as paradas, pode-se aumentar a profundidade do buffer.
O DECStation possui buffer com 4 palavras.
Março/2010
*
Março/2010
*
Write-back
Quando ocorre uma escrita, ela só é efetuada na cache.
Tal bloco só será substituído na mem. principal quando ele precisar ser substituído na cache.
Este esquema pode melhorar a performance quando o processador puder gerar escritas tão rapidamente quanto estas puderem ser tratadas pela memória principal.
Este esquema é mais complexo.
Março/2010
*
Março/2010
*
Uso da localidade espacial
A execução de um programa utiliza localidade espacial.
Utiliza-se blocos que são maiores do que uma palavra.
Ao ocorrer uma falta, e ser buscado um bloco, deve-se procurar vários blocos adjacentes.
Esses blocos provavelmente serão logo utilizados.
Março/2010
*
Março/2010
*
Bloco com 4 palavras
Informação
128 bits
Multiplex
Informação
32
32
32
32
32
Rótulo
31...........16 15...........4 3 2 1 0
V
=
Acerto
índice
Rótulo
Março/2010
*
Março/2010
*
Flexibilidade nos blocos de memória
O método apresentado é conhecido como mapeamento direto.
Existem vários métodos.
O oposto ao mapeamento direto, é quando um bloco de memória pode ser colocado em qualquer posição da cache. Esse esquema é conhecido como totalmente associativo.
Março/2010
*
Março/2010
*
Características do esquema 
totalmente associativo
Um endereço ao ser pesquisado na cache deve procurar em todos os endereços da cache.
Para tornar prática esta pesquisa, ela é feita em paralelo, com um comparador em cada end. da cache.
Tais comparadores são caros.
Esta topologia só é viável em pequenas memórias.
Março/2010
*
Março/2010
*
Outro esquema: 
associativo por conjunto
Existe um número fixo de endereços em que cada bloco pode ser alocado (no mínimo 2).
Se um bloco pode ser alocado em n posições, esta cache é chamada de cache associativa de n posições.
Março/2010
*
Março/2010
*
Exemplo
Bloco 0 1 2 3 4 5 6 7
Mapeada Diretamente
Para mapear o endereço de memória 12:
Informação
1
2
Rótulo
Pesquisa
Março/2010
*
Março/2010
*
Exemplo
Bloco 0 1 2 3 4 5 6 7
Mapeada Totalmente associativa
Para mapear o endereço de memória 12:
Informação
1
2
Rótulo
Pesquisa
Março/2010
*
Março/2010
*
Exemplo
Bloco 0 1 2 3 
Associativa em conjunto
Para mapear o endereço de memória 12:
Informação
1
2
Rótulo
Pesquisa
Bloco a ser pesquisado:
12 módulo 4 = 0
Número de blocos
Março/2010
*
Março/2010
*
Vantagens de se aumentar o grau de associatividade
As taxas de faltas diminuem
Por outro lado, ocorre o aumento do tempo de tratamento da falta.
Março/2010
*
Março/2010
*
Exemplo (P336 Patterson)
Usando 3 pequenas caches, cada uma com 4 blocos de 1 palavra. Encontre o nº de faltas de cada uma delas, para a seguinte seq. de endereços: 0, 8, 0, 6, 8, considerando:
Cache mapeada diretamente;
Cache associativa por conj. de 2 posições.
Cache totalmente associativa.
Março/2010
*
Março/2010
*
Resolução do Exercício
Cache mapeada diretamente
Março/2010
*
Março/2010
*
Resolução do Exercício
Cache mapeada diretamente
Seq.: 0, 8, 0, 6, 8
Março/2010
*
Março/2010
*
Resolução do Exercício
Cache Associativa por conj.
Seq.: 0, 8, 0, 6, 8
0
1
Março/2010
*
Março/2010
*
Resolução do Exercício
Cache Totalmente Associativa
Seq.: 0, 8, 0, 6, 8
Março/2010
*
Março/2010
*
Exercícios:
A seguir é apresentada uma série de referencias à memória,a endereços de palavras: 1, 4, 8, 5, 20, 17, 19, 56, 9, 11, 4, 43, 5, 6, 9, 17. Considerando uma cache mapeada diretamente com 16 blocos de 1 palavra cada, que estava inicialmente vazia, identifique cada referência na lista como uma falta ou um acerto e mostre o conteúdo final da cache após o processamento de todas as referências.
Refaça o exercício, considerando uma cache mapeada diretamente, com blocos de 4 palavras, e o tamanho total de 16 posições.
Refaça o exercício, considerando o uso de uma cache totalmente associativa, com blocos de 1 palavra, e o tamanho total de 16 posições.
Refaça o exercício, considerando uma cache totalmente associativa, com blocos de 4 palavras, e o tamanho total de 16 posições.
Março/2010
*
Março/2010
*
Caches Multiníveis
A cache de nível 1 (L1) geralmente é implementada junto com o processador.
Para reduzir a diferença de tempo entre as velocidades das caches L1 e da memória RAM, são adicionados níveis intermediários de memória (L2). 
Se ao ser pesquisado um dado no nível L2 e o dado estiver presente, o tempo de falta será igual ao tempo do nível L2 que é menor que o tempo da RAM e é também mais barata que a cache L1.
Março/2010
*
Março/2010
*
Exemplo.
Suponha que você tenha à sua disposição um processador com uma CPI básica de 1.0, admitindo-se que todas as referências à cache primária tenham sucesso. O clock desse processador é de 500 MHz e está ligado a uma memória principal cujo tempo de acesso é de 200 ns, incluindo o tratamento das faltas. Admita uma taxa de faltas de 5% no acesso à cache primária. Calcule a melhora obtida na velocidade dessa máquina se adicionarmos a ela uma cache de segundo nível cujo tempo de acesso seja de 20 ns tanto para acertos quanto para faltas. e que seja grande o suficiente para reduzir a taxa de faltas para 2%.
Março/2010
*
Março/2010
*
Resolução.
f=500MHz → T = 1/f →T=2ns = (2x 10-9s)
tRAM = 200ns → Nº clocks = 200n/2n = 100 clocks.
tL2 = 20ns → Nº clocks = 20n/2n = 10 clocks.
CPI somente com L1= 1 + 5% x 100 = 6 clocks por instrução.
Se for adicionada uma cache L2, a cache L1 continuará apresentando uma taxa de falta de 5%, mas o tempo para acessar os dados no caso de falta será de 10 clocks (20n/2n). Em 2% dos casos, o dado não estará na L2 e então deverá ser procurado o dado na RAM, gastando 100 clocks. Desta forma, tem-se:
CPI com L1 e L2 = 1 + 5% x 10 + 2% x 100 = 3,5.
A melhora foi de: 6 / 3,5 = 1,7 ou 70%
Março/2010
*
Março/2010
*
Exercícios:	
Considerando uma CPU com clock de 3GHz, uma RAM com tempo de acesso de 50ns. A taxa de faltas somente com L1 é de 5%. 
Calcule a CPI, se for adicionada uma cache L2 com tempo de acesso de 2ns que reduza a taxa de faltas para 3%.
Calcule a CPI se for adicionada agora uma cache L3 com tempo de acesso de 5ns e que reduza a taxa de faltas para 1%.
Comente os resultados.
*
*
Memória Virtual
Março/2010
*
Março/2010
*
Definição de Mem. Virtual
É uma técnica de gerenciamento de memória que foi implementada pela primeira vez em 1959 no computador ATLAS, desenvolvido pela Manchester University.
Consiste em executar um processo sem que ele esteja completamente na memória principal.
Março/2010
*
Março/2010
*
Definição
O conceito de memória virtual esta baseado em desvincular o endereçamento feito pelo programa de endereços físicos da memória principal. Assim, os programas e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível. Esse conceito se aproxima muito das aplicações de um vetor, muito utilizado em linguagens de alto nível. Quando fazemos referência a um componente do vetor, não nos preocupamos em que posição da memória ele esta, pois o compilador se encarrega de gerar instruções que implementam esse mecanismo, tornando-o totalmente transparente para os usuários. 
Março/2010
*
Março/2010
*
Como funciona
A memória virtual utiliza uma abstração semelhante, só que em relação aos endereços dos programas e de seus dados. Um programa no ambiente de memória virtual não faz referência a endereços físicos de memória (endereços reais), mas apenas a endereços virtuais. No momento da execução de uma instrução, o endereço virtual é traduzido para um endereço físico, pois o processador acessa apenas posições da memória principal. O mecanismo de tradução do endereço virtual para endereço fisico é denominado mapeamento. 
Março/2010
*
Março/2010
*
Mapeamento
O mapeamento permite ao sistema operacional traduzir um endereço localizado no espaço virtual para o real. Como conseqüência do mapeamento, um programa não precisa estar necessariamente contíguo na memória real para ser executado. Cada processo tem o mesmo espaço de endereçamento virtual, como se possuísse sua própria memória virtual. O mecanismo de tradução se encarrega, então, de manter “tabelas de mapeamento” exclusivas para cada processo, relacionando os endereços virtuais do processo as suas posições na memória fisica. 
Março/2010
*
Março/2010
*
Mapeamento da Memória
Março/2010
*
Março/2010
*
Implementação
Março/2010
*
Março/2010
*
Paginação
Como a memória principal tem um tamanho muito grande para ser mapeado por blocos (como na cache), é introduzido um novo conceito chamado paginação, que consiste em dividir a memória em partes (páginas) que tem tamanho fixo (memória paginada) ou tamanho variável (memória segmentada).
Março/2010
*
Março/2010
*
Tamanho das Páginas
tamanhos de páginas variam muito, de 64 bytes a 4 Mbytes
página de pequeno tamanho
tempo curto para transferência de página entre disco e memória
muitas páginas de diferentes programas podem estar residentes em memória
exige page tables muito grandes, que ocupam espaço em memória
mais adequada para instruções
página de grande tamanho
page tables pequenas
tempo longo para transferência de página entre disco e memória
mais adequada para dados (gráficos exigem páginas muito grandes)
Março/2010
*
Março/2010
*
Implementação
Março/2010
*
Março/2010
*
Colocação e Localização de Página na Memória Principal
Março/2010
*
Março/2010
*
Falta de Página
  A falta de página será gerada quando o bit de residência de uma página virtual for acessada estiver desligada .
 O endereço virtual, não informa em que posição do disco, está a página que gerou a falta de página.
Sistema operacional:
 -Cria espaço em disco para todas as páginas virtuais de um processo.
 - Cria estrutura de dados para controlar onde cada página virtual esta guardada no disco.
 - Cria uma estrutura para controlar o uso do espaço físico pelos diversos processos do sistema.
Março/2010
*
Março/2010
*
1 - O número da página virtual é usado como índice da tabela de páginas.
2 - O Bit de residência, pode ser 0 ou 1 .
3 – Quando o bit de residência for 1 ele está ligado, assim a tabela de página fornece o número da página física correspondente à página física referenciada.
4 - Quando o bit de residência for 0 ele esta desligado, a página virtual referenciada reside unicamente no disco, no endereço especificado pela entrada da tabela de páginas. 
Março/2010
*
Março/2010
*
O sistema operacional pode usar o esquema de substituição LRU:
Exemplo:
 Supomos que as referências das páginas de um determinado sistema fosse 10,12,9,7,11,10.
- E que a memória principal está toda ocupada,assim havendo uma referência da página 8, que não está na memória principal, haverá necessidade de substituição de uma das páginas,assim a página a ser substituída será a página 12,e assim sucessivamente. 
- O sistema operacional procura pela página que não é referenciada há mais tempo,partindo de que uma página não referenciada há longo espaço de tempo tem pouca probabilidade de ser referenciada em um futuro próximo.
Março/2010
*
Março/2010
*
O que é TLB?
Otimização do endereçamento não contíguo que é o TLB (Translation Lookaside Buffer) é uma área de memória associativa usada como cache para as conversões mais efetuadas (basicamente é uma cache que guarda os últimos endereços das páginas acessadas).
Março/2010
*
Março/2010
*
Resolve que Problema?
A TLB é utilizada para resolver certos problemas, como tabelas de página e de segmento que acabam ficando tão grandes que precisam ser armazenadas na memória. 
Março/2010
*
Março/2010
*
O que ocorre no problema?
Dessa forma para cada acesso à memória se faz necessário no mínimo um outro acesso (no segmento paginada até dois acessos) para a obtenção das tabelas reduzindo consideravelmente a velocidade de acesso à memória.
Março/2010
*
Março/2010
*
Como se resolve o Problema?
Para acelerar a conversão é usada uma área de memória associativa adicional chamada TLB – Translation Lookaside Buffer.
A TLB funciona como cache guardando as conversões mais usadas, e como a memória é associativa, a procura é feito em paralelo em todas as suas posições.
Março/2010
*
Março/2010
*
Características
Tamanho de linha 4 – 8 Bytes (pode conter segmento, página e frame);
Número de linhas 24 – 1024
		Ex: TLB de um Pentium III possui 32 	linhas;
Março/2010
*
Março/2010
*
Características
Hit-time (tempo de acesso ao nível superior da hierarquia de memória, que inclui o tempo necessário para saber se no acesso ocorrerá um hit ou um miss) 1 ciclo, Miss-penalty (tempo para recolocar um bloco no nível superior e enviá-lo para o processador, quando ocorrer um miss) 10 – 30 ciclos;
Março/2010
*
Março/2010
*
Características
Hit-ratio (razão de acessos encontrados pelo número total de acessos ao nível superior) aproximadamente 99%;
PERGUNTA?
Como pode ser tão alto?
R: Devido a localidade de acessos.
 
“Pelo princípio da localidade, uma página acessada provavelmente será acessada novamente.”
Março/2010
*
Março/2010
*
Exemplo de Utilização
(Segmento de Paginação):
A TLB é consultada antes do acesso as tabelas e se ocorrer um hit retorna o frame desejado.
Ocorrendo um Miss a consulta as tabelas é feita normalmente e o frame obtido é colocado na TLB no lugar da conversão menos recentemente utilizada (LRU).
Segmentação: Blocos de tamanho DIFERENTES;
Paginação: Blocos de tamanho IGUAIS;
Março/2010
*
Março/2010
*
Segmentação por Paginação
Março/2010
*
Março/2010
*
Tabelas mapeiam Blocos de informações:
Blocos Menores :
tabelas maiores; 
mais chances
de usar o disco para armazenamento;
mais chances de ocorrer TLB miss;
proporciona um grau maior de multiprogramação;
Blocos Maiores:
tabelas menores; 
menos chances de usar o disco para armazenamento;
menos chances de ocorrer TLB miss;
proporciona um grau menor de multiprogramação;
Março/2010
*
Março/2010
*
Operação da Tabela de Página e TLB 
Março/2010
*
Março/2010
*
TLB
*
*
Casos Reais: A Hierarquia da Memória do Pentium Pro e do PowerPC 604
Março/2010
*
Março/2010
*
Die de um Chip Pentium Pro
Março/2010
*
Março/2010
*
Pentium Pro
150 a 250 MHz
Dell
DEC
Gateway
HP
Intergraph
Micron
PowerPC 604 100 a 250 MHz
Apple Macintosh
7600
8500
9500
IBM - RS/6000
Série 41
Série 42
Série 43P
http://powerpc.ce.ufsm.br
Março/2010
*
Março/2010
*
Pentium Pro e PowerPC 604
Suporte a caches de segundo nível, fora do chip do processador;
PowerPC 604 talvez seja a única máquina que use cache de segundo nível de 256 KB ou de 512 KB. 
Cache usa um Chip SEPARADO no MESMO ENCAPSULAMENTO
Tempo de acesso a cache reduzido
SRAMs encapsuladas separadamente
Março/2010
*
Março/2010
*
Otimizações adicionais para reduzir o custo da penalidade por falta.
Retorno da primeira palavra do bloco que ocasionou a falta no acesso à cache. (Localidade Espacial – Compartilhamento de Rótulos)
PowerPC 604: Permite que o processador continue a executar instruções durante as faltas no acesso à cache e retomar a execução tão logo a palavra crítica tenha sido liberada para a cache.
Pentium Pro e PowerPC 604
Março/2010
*
Março/2010
*
PowerPC 604 (indo além)
CACHE NÃO BLOQUEADA: Permite que o processador continue a executar instruções que acessem a cache durante o processamento de uma falta. Tenta esconder a latência introduzida pelas faltas no acesso a cache. Esquemas mais simples não permitem.
Março/2010
*
Março/2010
*
Pentium Pro
Acerto sob Falta: Permite acertos adicionais durante uma falta. Esconde um pouco a latência de uma falta fazendo algum outro trabalho durante seu processamento.
Falta sob Falta: Permite que várias faltas fiquem pendentes. Permite a sobreposição da latência de duas faltas diferentes.
Março/2010
*
Março/2010
*
Março/2010
*
Março/2010
*
Março/2010
*
Março/2010
*
Hierarquias de memória do Pentium Pro e PowerPC 
Esquema sofisticado para tentar reduzir a distância entre os ciclos da memória e do processador;
Desafios em relação ao uso de multiprocessamento em função dos avanços previstos no pipeline do processador.
Março/2010
*
Março/2010
*
Lendas e Falhas
Falha 1: Ao simular uma cache, não levar em conta o efeito do endereçamento a byte ou do tamanho da cache.
	
	300 = 9  256 = 8 32		 32
Março/2010
*
Março/2010
*
Lendas e Falhas
Falha 2: Utilizar a taxa de faltas como a única métrica para a avaliação da hierarquia de memória.
Tempo do Processador = (Tempo de execução no processador em ciclos de clock + Ciclos parados por operação da memória) X Tempo de ciclo do clock
Ciclos parados por operação da memória = (Instruções / Programa) X (Faltas / Instrução) X Penalidades por Faltas
Ciclos parados por operação da memória (M1) = I X (3% x 1,5) X [Penalidade por falta / Tempo do ciclo de clock]  I x 0,045 x [20 / 1,6] = 0,585 x I 
Ciclos parados por operação da memória (M2) = I X (2% x 1,5) X [Penalidade por falta / Tempo do ciclo de clock]  I x 0,030 x [20 / 1,6] = 0,585 x I
Tempo do Processador (M1) = ((C x I)+(0,585 x I)) x 1,6 ns = (1,6C + 0,936) x I
Tempo do Processador (M2) = ((C x I)+(0,30 x I)) x 2,0 ns = (2,0C + 0,6) x I
Portanto, a máquina com CACHE MAIOR é MAIS Rápida se (1,6C + 0,936) > (2,0C + 0,6), para (C < 0,84). Para máquinas com CPI maior que 0,84 a máquina com MENOR CACHE é MAIS RÁPIDA.
Março/2010
*
Março/2010
*
Lendas e Falhas
Falha 3 (lenda): Ignorar comportamento do sistema de memória ao escrever programas ou ao gerar código em um compilador.
for (i=0; i!=500; i=j+1)
	for (j=0; j!=500; j=j+1)
		for (k=0; k!=500; k=k+1)
			x[ i ] [ j ] = x[ i ] [ j ] + y[ i ] [ k ] + z [ k ] [ j ]
Com a inversão da ordem de execução deste algoritmo se obtém ganhos de até 60% no tempo de execução do mesmo para uma máquina Silicon Graphics L com processador MIPS R4000
Março/2010
*
Março/2010
*
Lendas e Falhas
Falha 4: Estender um espaço de endereçamento adicionando segmentos ao topo de um espaço não-segmentado.
	Anos 70 (16 bits)  Programas cresceram de tamanho obrigando a utilização de uma arquitetura de 32 bits.
	
	Adição de segmentos pode transformar cada endereço em duas palavras – uma para o número do segmento e outra para o deslocamento do segmento.
	Arquiteturas como a do MIPS R4000 a do DEC Alpha e do SPARC adotaram endereços de 64 bits flat. 
	Arquiteturas como HP PA-RISC  expandir endereços via segumentação como solução temporária.
	Arquiteturas como 80x86 deverão em breve estar sendo substituídas por novas arquiteturas de 64 bits.
Março/2010
*
Março/2010
*
Considerações Finais
Dificuldade de se construir sistemas de memória que acompanhem a velocidade crescente dos processadores é o principal fator limitante de exploração da total performance da máquina.
Densidade de integração das DRAMS cresce 4 vezes a cada 3 anos.
Tempo de acesso das DRAMs melhora a uma taxa de cerca de 9% ao ano.
Março/2010
*
Março/2010
*
Caches L1 (dentro do chip) têm ajudado a diminuir a distância entre o ciclo de clock do processador e o ciclo de clock da memória SRAM (fora do chip).
Caches L2 (dentro do chip) têm sido implementadas para diminuir a distância entre o processador e as DRAM. Atualmente todas as máquinas pessoais intermediárias possuem L2. Servidores usam L2 variando de 1 a 16 MB
Considerações Finais
Março/2010
*
Março/2010
*
Ajuda no SOFTWARE:
Reorganização do programa para melhorar suas localidades espacial e temporal. Reestruturação de loops que acessam arrays, como os programas para álgebra linear, MUDANÇA NA ESTRUTURA DOS LOOPs visto anteriormente nesta apresentação.
TÉCNICA DE PRÉ-BUSCA: Implementada pelo compilador. Na pré-busca, um bloco vem pra cache antes de ele ser referido. O compilador tenta identificar quais serão os blocos de dados que serão necessários em um futuro próximo, usando instruções especiais, informa a hierarquia de memória a necessidade de mover tais blocos para a cache.
Considerações Finais
Março/2010
*
Março/2010
*
Bibliografia:
D. A. Patterson & J. L. Hennessy. Organização e Projeto de Computadores: a interface hardware/software. Livros Técnicos e Científicos Editora, Inc. Rio de Janeiro, RJ. Tradução da Segunda Edição americana, 2000.
Site na internet:
http://velox.stanford.edu/group/images/up
http://powerpc.ce.ufsm.br
http://www6.tomshardware.com/cpu/20041221/cpu_charts-09.html
http://www.cpudb.com

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais