Baixe o app para aproveitar ainda mais
Prévia do material em texto
CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: TÓPICOS AVANÇADOS EM ARQUITETURA DE COMPUTADORES TEMA 3: Tópicos em Memória-Princípio da Localidade-Hierarquia TEXTO PARA APOIO AO ESTUDO (estudo antes da atividade em sala) Este tema e os próximos dois outros tratam de Tópicos sobre o sistema de armazenamento dos computadores ou mais genericamente, do sistema de Memórias. Uma das primeiras observações que se faz quando se estuda o armazenamento de dados nos computadores refere-se a quantidade e diversidade de caraterísticas e parâmetros das memórias em uma máquina, especialmente quando elas crescem em capacidade e velocidade. A pergunta é: por que tantas memórias e tão diversas. Até mesmo um dispositivo menor do tipo dos dispositivos móveis costuma possuir mais de um tipo de memória. Por que? A resposta dessa pergunta foi encontrada há décadas atras, quando os pesquisadores trabalharam intensamente para encontrar uma memória que atendesse ás expectativas do mercado de forma semelhante à “Memória Ideal”, mencionada por von Newmann para a definição de uma arquitetura de computador. O relatório von Newmann sugeria que, para trabalhar de forma eficaz com um processador, uma memória deveria atender 4 requisitos básicos: - velocidade – o seu tempo de acesso (latência) deveria ser baixo, compatível com os tempos do processador - capacidade – fosse grande suficiente para armazenar programas e dados cada vez maiores - Tivesse um custo baixo, para estar disponível aos clientes de toda classe - Elevada disponibilidade, isto é, ser permanente (não volátil). Figura 1 – Comparação de tempos processador/memória principal (MP) A figura 1 não permite se observar todos esses requisitos, mas apenas o de velocidade (comparando-se a rapidez de acesso interno do processador e a lentidão da memória . OBS: a figura mostra o nome MP para a memória comparada, embora, naquela época só existisse uma memória e, assim, o termo “principal” não era mencionado (só se diz principal, quando há outros itens secundários). Os pesquisadores sabiam que não bastava apenas desenvolver uma memória mais rápida que as da ocasião, pois no mesmo instante os pesquisadores de processadores estariam desenvolvendo dispositivos mais rápidos também e o “buraco ou gap” permaneceria grande (a figura mostra, a título de exemplo, uma relação de 50 entre os dois componentes (2 ns para 100 ns). A busca da solução para a diminuição do espaço de tempo entre processador e memória levou muitos pesquisadores a analisarem o comportamento dos programas quando em execução (o código armazenado na memória e o processador buscando instrução por instrução para ser executada. E descobriram uma particularidade interessante do uso da memória pelo processador e que é conhecida como PRINCÍPIO DA LOCALIDADE. A figura 2 mostra a organização de uma memória, armazenando um programa em execução pelo processador e constituído de diversos módulos: a parte principal (na área superior), cada linha horizontal representando uma linha de código de máquina (uma instrução); em certo ponto encontra-se uma chamada da rotina 1, que se encontra bem abaixo e assim por diante. O que se observou do rastreamento de execução de milhares de códigos pelos pesquisadores é que os programas são executados em grupos de instruções contíguas (sequencialmente uma a uma); que, de tempos em tempos, esta sequência se altera, por um desvio intencional da lógica do programa, tais como: chamada de uma rotina (o processador “salta” a sequência, executada passo a passo a rotina e “salta” novamente para a linha abaixo da chamada. Figura 2- Exemplo do uso do princípio da localidade (espacial) Desvia também a sequência, quando se depara com um IF-THEN-ELSE e assim por diante. Em outras palavras, ele executa sequencialmente uma grupo relativamente pequeno de instruções e, nesse caso, estas instruções devem ser buscadas de forma mais rápida possível para não atrasar muito o processador. Estas devem sim estar em uma memória muito rápida, mas não precisa que TODO o programa esteja na mesma memória muito rápida, porque o processador não precisa de todo o código no mesmo momento. Então, o fato do uso de uma bloco local de execução mostra isso. Chama-se a este fato de Princípio da Localidade. Desta forma, graças a este princípio, pode-se idealizar a inclusão de uma pequena memória entre o processador e memória, que se chamou de Memória Cache. É pequena comparada coma outra, agora chamada de Principal, já que há duas memórias; pequena para conter apenas alguns blocos do programa (e não ele todo). E sendo pequena pode ser muito rápida, pois no custo não será elevado (devido ao tamanho menor). Há vários exemplos em serviços e práticas cotidianas, seja em computação ou não, que seguem essa tendência de realizar uma pequena quantidade do total de tarefas (ou qualquer coisa semelhante) mais frequentemente e, por isso, essas tarefas ou ações são separadas para mais rápido acesso. Por exemplo, um supermercado costuma organizar produtos iguais ou semelhantes em uma mesma prateleira ou gondola. Assim, um cliente procurando arroz, por exemplo, tem na mesma prateleira todas as marcas de arroz sequencialmente contíguos, facilitando a procura e comparação de preços, etc; trata-se do mesmo princípio da execução de um “bloco” de instruções, descrito anteriormente; no caso do supermercado, o cliente “executou” o “bloco” de marcas de arroz. Em seguida, ele procura café e, então, “desvia” para o “bloco” de café (a prateleira onde estão todas as marcas de café ). E assim por diante. A figura 3 mostra, agora, o sistema estruturado com processador e duas memórias, a Cache (com tempo de acesso de 5 ns, sendo este apenas um valor para exemplo) e a Memória Principal (MP) com tempo de 100 ns. Figura 3- Sistema processador-cache-MP ANTES Processador gera endereço da MP para acesso a dado ou instrução desejada. O controle da MP decodifica endereço e realiza o acesso (lento). DEPOIS (com inclusão da cache) Processador gera endereço da MP para acesso a dado ou instrução desejada. O controle da Cache verifica endereço e identifica se o elemento desejado tem copia na Cache. Se tiver (HIT ou Acerto-A), a transferência é imediatamente realizada (muito rápido). Se não haver cópia na Cache (Miss ou Falta (F), então a tarefa passa para o controle da MP, que decodifica endereço, localiza o Bloco que contém o elemento desejado e transfere o Bloco inteiro para a Cache; esta transfere o dado/instrução para o processador (mais lento, pois tempo é soma dos dois tempos (MP-Cache + Cache-Processador). Nesta nova situação (com Cache), o ideal é que haja a maior quantidade possível de Acertos e a menor possível de Faltas. Quanto mais Acertos, menor será a média de tempo de transferência em um dado período. Processado r Cache 100 ns 5 ns Como o sistema passou a funcionar com a inclusão da nova memória? A Eficiência do sistema (E) é medida pela relação entre Acertos (A) e Total de Acessos (T). Um exemplo do funcionamento do acesso à memória pelo processador e os tempos envolvidos Tempos de Acesso : • Processador - Cache = 2 nseg • Cache - MP = 60 nseg Período de Acessos considerado no exemplo: 100 acessos Eficiência (E) do sistema: 95 % Qual deverá ser o tempo médio de acesso do sistema? IMPORTÂNCIA DAS MEMÓRIAS CACHE NO DESEMPENHO DOS SISTEMAS DE COMPUTAÇÃO Observe a evolução dos sistemas desde o início da computação (os tempos usados são apenas para comparação, mas próximos da realidade das épocas de uso); ANTES, havia apenas Processador e Memória Neste caso, em 100% dos acessos(ou seja, sempre), O tempo gasto para se trazer um dado ao processa- dor era de 100 ns. Agora, como consequência do Princípio da Localidade, inseriu-se uma pequena memória (mas bastante rápida, pois sendo pequena não teria custo alto-CACHE) entre Processador e Memória. Ela deve conter cópia dos dados sendo usados no momento. No exemplo a seguir, supõe-se que a Eficiência da Cache seja 70%, ou seja, em cada 100 acessos, 70 são acertos (5 ns) e 30 são faltas (105 ns, sendo 100 para trazer o bloco e 5 para levar o dado da cache ao processador). O tempo de acesso agora é uma média (TM) entre o tempo de transferência Cache-Pro- cessador (quando há ACERTO) e entre MP e Cache (quando há FALTA). Este tempo depende da relação entre Acertos e Faltas, ou seja, da EFICIÊNCIA do sistema. E = A / T Se E = 95 %, então, em 95 acessos há A-acertos (tempo de 2 ns) e em 5 acessos há F – faltas (60 + 2 = 62 ns) T. Médio = (95 * 2) + (5 * 62) / 100 = (190 + 310) / 100 = 500 / 100 = 5 ns Memória Processador 2 ns 100 ns Processador 2 ns Cache Memória 100 ns 5 ns TM = ((70 x 5) + (30 x 105)) / 100 = (350 + 3150) / 100 = 3500 / 100 = 35 ns TM – tempo médio de acessos 35 << 100 Observe a redução do tempo de acesso de 100 ns para um tempo médio de 35 ns, bem menor, mas que poderia diminuir ainda mais. Os pesquisadores testaram com sucesso a inclusão de uma 2ª Cache entre a primeira e a MP. Tendo agora DUAS caches, elas passaram a ser identificadas por níveis (Level em inglês). Assim, tem-se cache L1, cache L2. Considerando ainda o mesmo exemplo, agora com DUAS caches. A inclusão da 2ª cache, distribui os 30% de faltas que se tinha no exemplo anterior entre Cache L2 e MP. Por exemplo, seja 20 % para cache L2 e 10 % para MP. O tempo de acesso agora é uma média entre o tempo de transferência Cache L1-Processador (5 ns), Cache L2- Cache L1 = 15 ns e MP – Cache L2 = 100 ns O QUE SE PODE OBSERVAR: • Sem cache, com a penas processador e uma memória--------tempo de 100 ns para cada acesso • Com UMA Cache e 70 % de eficiência-----------------------------tempo de acesso de 35 ns (tempo médio) • Com DUAS Caches, L1 e L2 (e 70%-20%-10%)------------------tempo médio de 19,5% A sucessão de novas memórias incluidas no sistema, cada uma delas com capacidade, tempo e custo diferentes, mas interligadas, permitem que o sistema se comporte com uma única memória, com características médias próximas daquela memória ideal. A este conjunto de memórias chama-se: Memória Processador 100 ns 2 ns Cache L1 5 ns Cache L2 15 ns Agora, o TM será: TM = ((70 x 5) + (20 x 20) +(10 x 120))= (350 + 400 + 1200) / 100 = 1950 / 100 = 19,5 ns HIERARQUIA DE MEMÓRIAS Conforme já se observou diversas vezes em diferentes assuntos referentes à memória, sabe-se que o processador realiza sua atividade (executar um ciclo de tarefas para cada instrução) por meio de sucessivos acessos para busca de instruções e dados (ciclo de leitura e de escrita). Excluindo-se aqui os sinais de controle necessários para viabilizar as transferências, verifica-se que o acesso a um valor na MP se inicia pela colocação do endereço da posição de memória onde se localiza o valor desejado (dado ou instrução) no BE-Barramento de endereço; o controle da memória decodifica o endereço e localiza a posição para efetivar a transferência pelo BD-barramento de dados. Há dois métodos para se endereçar um valor em memórias de semicondutores, do tipo SRAM e DRAM: - Endereçamento Linear ou Direto – mais usado nas SRAM - Método de Matriz de Linha x Coluna – usado nas DRAM No endereçamento do tipo linear, todas as células de memória estão conectadas à saída do decodificador de endereços. Na entrada do decodificador chegam os fios do BE. Conforme se sabe de Circuitos Digitais-Portas Lógicas, um Decodificador é um dispositivo digital que possui X entradas e 2X saídas (supondo que é binário, como nos computadores, embora pudesse ser decimal e, nesse caso, teria X entradas e 10X saídas). No exemplo ao lado há 4 células (4 ende- reços) e, assim, há 2 bits por endereço, Já que 22 = 4 Este método é rápido, pois só gasta o tempo de decodificação e o acesso é direto a cada endereço; porém tem custo maior quando se tem muitas células (muitos fios de saída), acarretando maior dificuldade de colocação dos fios. MÉTODOS DE ENDEREÇAMENTO DE MEMÓRIAS RAM (SRAM e DRAM) OBS: Antes de iniciar a descrição do processo de endereçamento propriamente dito, deve-se considerar dois itens: 1. Desde o início da computação e até os dias atuais, os processadores são projetados para acessar sempre um valor na MP e por isso colocam o endereço da MP no BE, mesmo que haja Caches no sistema. 2. Nessa descrição vai-se desconsiderar a existência de Caches, o que não invalida as descrições usadas ENDEREÇAMENTO LINEAR ou DIRETO BE Decodificador de endereços MP 00 01 10 11 Utilizado principalmente onde as capacidades não são elevadas, como a memória cache (tipo SRAM), cartões de memória e dispositivos móveis. Outro exemplo com memória de 16 posições (16 células ou endereços). Haverá necessidade de endereços com 4 bits de largura, já que 24 = 16. Na figura se observa a memória com as 16 células e um acesso na célula de endereço 610 ou 01102. Quando o endereço é colocado no BE ele se transfere (um sinal de controle) para o decodificador. Este produzirá uma ÙNICA saída válida (pulso = 1) no fio 01102. Este pulso 1 habilitará a transferência de uma cópia do valor armazenado na célula para o buffer de saída e deste para o BD. Por outro lado, se a MP = 4M endereços, cada Endereço = 22 bits Seriam necessários 22 fios na entrada do decodificador e 4.194.304 fios na saída No endereçamento do tipo matriz linha/coluna (L/C), as células são logicamente organizadas em linhas e colunas (formato semelhante às células da planilha Excel). O acesso, neste caso, é realizado em duas etapas: uma para endereçar uma linha e outra para endereçar a coluna. O cruzamento de ambas é a célula desejada As 16 posições (células) se organizam em uma matriz com 4 linhas e 4 colunas ( 4 x 4 = 16). Cada 4 bits de endereço de célula é dividido em 2 bits para endereço de uma das 4 linhas e 2 para endereço de uma das 4 colunas.Neste exemplo cada endereço tem 4 bits, pois 24 = 16. Conforme observou-se anteriormente, se o endereçamento fosse linear, seria gasto apenas um tempo de decodificação e se consumiria 16 fios de saída do decodificador para a memória. Nesse tipo de endereçamento, pode-se observar na figura a seguir e na descrição acima que haverá um MPX (multiplexador) na saída do BE, que divide os 4 bits do endereço recebido do BE em 2 fios (2 bits) para o decodificador de linha (DL) e 2 fios (bits) para o decodificador de coluna (DC). Então, a saída do DL terá 4 fios (22) um para cada uma das 4 linhas e a saída do DC também terá 4 fios, uma para cada endereço de coluna. E deste modo, o total de fios usado será 8 e não 16 como no método linear, uma economia de 50% de fios. E quanto maior for o tamanho da memória maior será a economia de fios. ENDEREÇAMENTO por MATRIZ LINHA X COLUNA CONSIDERANDO O EXEMPLO COM MEMÓRIA DE 16 POSIÇÕES (CÉLULAS) DO ENDEREÇAMENTO LINEAR No entanto, o tempo de acesso irá aumentar, pois haverá necessidade de um tempo para decodificação -RAS e localização de uma fileira de colunas (DL) e, posteriormente, um tempo para decodificação e acesso de coluna-CAS. Ai sim, será detectada a célula desejada e transferido o valor para o buffer e BD. Observe os valores totais de fio de saída nos métodos Linear e de Matriz Linha x Coluna ➢ Método Linear ❖ Um tempo de acesso apenas ❖ Quantidade de Fios: Entrada do decodificador: 20 fios (BE) Saída do decodificador: 220 = 1.049.576 fios ➢ Método de Linha e Coluna ❖ Tempo de acesso: RAS e depois CAS ❖ Quantidade de fios: BE = 20; MPX: entrada = 20 fios e Saída: 10 para Linha e 10 para Coluna Saída de cada decodificador (linha e coluna): 210 = 1024 Total = 2048 fios Entre 2028 e 1.049.576 fios, verifica-se uma economia de mais de 99%, ou seja, 2048 é apenas 0, 19% do valor do método linear R E M Linha 00 Linha 01 Linha 10 Linha 11 M P X Coluna 00 Coluna 00 Coluna 00 Coluna 00 DL DC CAS RAS WE OE Sinais de controle COMPARAÇÃO DOS MÉTODOS DE ENDEREÇAMENTO AS INFORMAÇÕES CONTIDAS NESTE MATERIAL DE APOIO AO ESTUDO FORAM EXTRAÍDAS DAS SEGUINTES PUBLICAÇÕES: MONTEIRO, M. Introdução à organização de computadores. 5. ed. Rio de Janeiro: LTC, 2007. STALLINGS, W. Arquitetura e organização de computadores. 8. ed. São Paulo: Pearson Prentice Hall, 2010. TANENBAUM, A. S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: LTC, 2007. Null, Linda - Computer Organization and Architecture PATTERSON, D e Hennesy, J. Computer Organization and Design, The Hardware/Software Interface. Textos na Internet
Compartilhar