Como funcionam os subsistemas de memória

Discussão em 'Hardwares em Geral' iniciado por Panda, 30/07/2007.

  1. Panda

    Panda impeckable Administrador

    Registro:
    05/08/2005
    Mensagens:
    8,049
    Curtidas recebidas:
    27
    Pontos de Troféu:
    72
    Localização:
    SC
    Estou criando esse tópico com o intuito de informar sobre um pouco do funcionamento das memórias que existem em nossos computadores. Quais são os tipos utilizados, no que se diferenciam e quais são suas peculiaridades.

    Resolvi não ir muito para o lado técnico (apesar de que inúmeras vezes, isso foi inevitável) para que a maiorias das pessoas entendam de maneira simples e clara. Sei que o conteúdo acabou se tornando um pouco extenso. Porém fiz o possível e aceito sugestões.

    Espero que gostem. Caso alguém encontre algum erro, favor me avisar, pois eu (como todo mundo aqui) estou aprendendo também. :yes:

    Antes de mais nada, consideramos memória como qualquer dispositivo físico no qual seja possível armazenar qualquer tipo de informação para uso no computador. A partir daí temos:


    RAM (Random Access Memory), que significa memória de acesso aleatório, engloba a categoria de semicondutores, que dependem do fornecimento constante de energia para manter o armazenamento de dados. Todos os dados são gerenciados por um multiplexador, que seleciona a linha de bits desejada e encaminha-a para os pinos de saída do chip. É importante ressaltar que o tempo de acesso para qualquer uma dessas linhas é igual, independente da localização do endereço

    [​IMG]

    A velocidade de um chip é determinada por alguns fatores. Podemos citar o comprimento das linhas de bit e das linhas da palavra, além da maneira como as células de bits são construídas.

    Muitos chips de memória modernos são construídos com muitas matrizes de células de bit pequenas para manter as linhas de palavra e de bit curtas (assim o acionamento de um sinal sobre elas é menor).


    Hierarquia das memórias

    Esta parte é muito importante para o entendimento dos conteúdos que abordarei mais adiante.

    Os sistemas de memória de computadores modernos obedecem a hierarquias de memória. A principal é aquela composta por: registradores, cache, memória principal e memória virtual.

    Isso significa que, para que um dado localizado na memória virtual possa ser utilizado no processamento é preciso que passe por cada nível da hierarquia. Vale lembrar que o custo por bit de uma tecnologia de memória é, geralmente, proporcional à sua velocidade. Memórias rápidas, tais como SRAMs (falarei sobre elas mais adiante) tendem a ter alto custo por bit, tornando proibitivamente caro construir a memória de um computador totalmente com esses dispositivos. Na hierarquia, os níveis que ficam próximos ao processador são apresentados em pequena quantidade e velocidade extremamente alta para diminuir seu tempo de acesso. Quanto mais “descermos” na hierarquia, menor é a velocidade da memória, porém maior é sua capacidade de armazenamento.

    [​IMG]

    Ótimo. Todo esse papo e ainda não falei porque essa hierarquia existe. O principal motivo da existência dessa hierarquia é a necessidade de manter os dados mais utilizados por um programa nos níveis mais altos, pois desse modo a maioria das solicitações à memória podem ser tratados mais rapidamente, pois são tratados pelos níveis mais altos da hierarquia.


    A RAM Estática (SRAM)

    Essa memória às vezes é confundida com o termo SDR. Só esclarecendo que a SRAM não tem nada a ver com Single Data Rate. ;)

    O núcleo da célula de bit SRAM consiste em dois inversores conectados numa configuração “back-to-back”, ou seja, uma vez que um valor tenha sido colocado na célula de bit, a estrutura em anel dos dois inversores manterá o valor indefinidamente, pois cada entrada de um inversor é oposta do outro. Esta forma de armazenamento também é conhecida por “flip-flop”.

    Dentre outras características, este modelo de armazenamento consome bastante energia (introduzindo muito “ruído”, dificultando a integração com outras unidades do sisterma). Geralmente esse tipo de memória é utilizado nas memórias cache dos processadores.

    A RAM Dinâmica (DRAM)

    PS: Em nossos pentes de memória, é utilizada uma variante da DRAM, que é a SDRAM. O "S" vem de "Synchronous".
    Nesse tipo de memória, dentre algumas outras peculiaridades, a velocidade da mesma é sincronizada com o pulso de disparo do processador.
    Alguns tipos de SDRAM são: SDR SDRAM, DDR SDRAM, DDR2 SDRAM.

    Não irei falar sobre as SDRAM, pois além de serem uma variante das DRAM, possuem diversos tipos a serem abordados. Caso alguém tenha interesse:
    http://en.wikipedia.org/wiki/SDRAM

    Voltando a DRAM:
    Dessa vez ao invés de um par de inversores, é utilizado um capacitor para armazenar dados na célula de bit.

    Quando a linha da palavra é ativada, o capacitor é conectado à linha de bit, permitindo que o valor armazenado na célula seja lido ao se examinar a tensão do capacitor, ou escrever colocando uma nova tensão sobre o mesmo. Tal mecanismo requer a regeneração de bits ou refresh, que é o envio regular de energia para os bits que se deseja manter na memória. Uma das especificações de um chip DRAM é o seu refresh rate (tempo de “refrescamento”), que é a freqüência pela qual uma linha pode ficar sem ser envio de energia antes que ela esteja correndo o risco de perder o seu conteúdo.

    Comparando com a SRAM observamos que na DRAM:
    • As posições de memória são menores;
    • Acesso mais lento;
    • A mesma tecnologia que permite produzir chips SRAM de 1 MB pode permitir a produção de
    chips DRAM com 4 MB;
    • Menor consumo de energia (na taxa de 1 para 6).

    Neste momento, abordarei sobre o funcionamento das SDRAM, colocarei como spoiler, pois é uma parte bem chatinha para falar e compreender. Para quem se interessar, está aí ( os overclockers de plantão vão reconhecer alguns termos :p ):

    Devido às características de seu funcionamento interno, o endereço precisa ser fornecido em duas etapas.
    Por exemplo, para fornecer um endereço de 20 bits, primeiro são fornecidos os 10 bits mais significativos (o que chamamos de Row Address,ou endereço de linha), e depois os 10 bits menos significativos (o que chamamos de Column Address, ou endereço de coluna).
    Internamente, a DRAM é organizada em uma matriz de células, e para que seja
    selecionada, é inicialmente fornecido o número da linha (row) e depois o número da coluna (column). As DRAM possuem duas entradas de controle chamadas RAS (Row Address Strobe – validação de endereço de linha) e CAS (Column Address Strobe – validação de endereço de coluna). Servem para indicar o instante em que estão disponíveis os endereços da linha e coluna a ser acessada. Existe ainda, entre outros sinais, um chamado de DATA OUT. Este nada mais é que a saída de dados da memória. Os dados que saem através do Data Out, são encaminhados para serem lidos pelo microprocessador.
    O ciclo completo de leitura em uma memória DRAM obedece também a uma série de eventos:
    1) É fornecido o endereço da linha (Row);
    2) É ativado o sinal RAS;
    3) É fornecido o endereço da coluna (Column);
    4) É ativado o sinal CAS;
    5) O Data Out fornece o bit lido da memória;
    6) O microprocessador recebe o dado lido da DRAM;
    7) Os sinais RAS e CAS são desligados;
    8) O Data Out entra em Tri-State ( não permite nem a entrada e nem a saída de corrente,
    dizemos que a saída digital está desligada );
    9) O microprocessador faz uma pausa antes de dar início ao próximo ciclo.
    Todos os eventos acima requerem alguns nanossegundos (ns) para serem completados. Por
    exemplo, o evento 3 não pode ser realizado imediatamente após o evento 2. É preciso que o endereço da linha fique estável alguns nanossegundos após a ativação do RAS, antes que seja fornecido o endereço da coluna.
    Outra característica da DRAM, é que apesar de serem relativamente lentas para encontrar um dado, as DRAM são mais velozes que as SRAM quando se trata de encontrar os dados posteriores a outro que já foi acessado.

    No mercado existem dois tipos distintos de DRAM:
    • Com bit de paridade - Mais segura e também mais cara;
    • Sem bit de paridade - Mais acessível em questões de preço.

    A memória cache

    A cache localiza-se entre o processador e a memória principal (que a partir daqui tratarei como “MP”). Sua finalidade é desafogar a MP, evitando que ocorram acessos contínuos a mesma.

    Para poder fazer isso a memória cache mantém cópias de dados e instruções, que seguem conforme a hierarquia de memória. Ou seja, após seu processamento, os dados voltam para os níveis inferiores da hierarquia.

    [​IMG]

    Construídas com SRAM, as memórias cache são geralmente o nível mais alto na hierarquia de memória. Contêm uma matriz de etiquetas e uma matriz de dados. A matriz de etiquetas contém os endereços dos dados contidos na cache, enquanto a matriz de dados contém os próprios dados. A organização da cache geralmente é feita separando-se em cache de instruções e cache de dados. Dessa forma é possível que dados e instruções possam ser transferidos simultaneamente.

    Outra vantagem de separar as caches é que, em geral, os programas não modificam suas próprias instruções. Por outro lado, usar caches distintas torna mais difícil o ato de escrever programas que se auto-modifiquem.

    A associatividade de uma cache determina quantas posições dentro dela podem conter um dado endereço de memória. Cachês com alta associatividade permitem que cada endereço seja armazenado em muitas posições na cache, o que reduz as faltas de cache causadas por conflitos entre linhas que precisam ser armazenadas no mesmo conjunto de posições. Caches com baixa associatividade restringem o número de posições nos quais um endereço pode ser colocado, o que aumenta o número de faltas, mas simplifica o hardware da cache, reduzindo a quantidade de espaço ocupado por ela e, freqüentemente, reduzindo o tempo de acesso.

    [​IMG]

    E o que ocorre quando não há mais espaço para o armazenamento de dados na cache?
    Na prática, o que temos é a checagem do comportamento passado do programa. Examina-se quais linhas são menos acessadas pelo programa em execução para que seja removida em caso de não haver mais espaço para novos dados.


    Ficarei por aqui. Eu pensei ainda em falar sobre as memórias ROM, mas isso só iria aumentar a quantidade de conteúdo (que já não é pouco). Para quem chegou até aqui, aguardo sua opinião. Valeu!
     
  2. du__f

    du__f Active Member Registrado

    Registro:
    19/03/2007
    Mensagens:
    6,955
    Curtidas recebidas:
    0
    Pontos de Troféu:
    41
    Localização:
    Rio de janeiro - RJ
    Interessente,belo topico!


    [χђ†]
     
  3. undrtkr

    undrtkr sou do contra Registrado

    Registro:
    19/02/2006
    Mensagens:
    440
    Curtidas recebidas:
    0
    Pontos de Troféu:
    0
    Localização:
    Londrina - PR
    mto bom Panda!

    espero q todos leiam, não eh facil axar esse tipo de material porai assim
     
  4. Panda

    Panda impeckable Administrador

    Registro:
    05/08/2005
    Mensagens:
    8,049
    Curtidas recebidas:
    27
    Pontos de Troféu:
    72
    Localização:
    SC
    Valeu!
    Mas pelo visto a galera não se interessou... Acho que mesmo resumindo meu próprio resumo sobre o assunto, ainda deixou o conteúdo muito extenso.
     
  5. Maurivillas

    Maurivillas Super Moderador Super Moderador

    Registro:
    05/02/2005
    Mensagens:
    18,157
    Curtidas recebidas:
    28
    Pontos de Troféu:
    42
    Localização:
    São Bernardo do Campo
    Li tudo!!

    Parabéns, véio!!

    Tópico muito bem explicado e escrito.
     
  6. ByPeters

    ByPeters Like a Boss Registrado

    Registro:
    27/02/2006
    Mensagens:
    3,468
    Curtidas recebidas:
    0
    Pontos de Troféu:
    41
    Localização:
    Rio de Janeiro / Niterói
    Parabéns pelo tópico 5 estrelinhas.
     
  7. JacK ReapeR

    JacK ReapeR Crysiss Registrado

    Registro:
    15/05/2005
    Mensagens:
    214
    Curtidas recebidas:
    0
    Pontos de Troféu:
    0
    Localização:
    Dourados - MS
    Muito bom e muito extenso!! suadhahsduhaushdasd!!! :p
     
  8. Eraldo Freitas

    Eraldo Freitas Usuário com assinatura bloqueada

    Registro:
    10/10/2005
    Mensagens:
    15,839
    Curtidas recebidas:
    0
    Pontos de Troféu:
    0
    Localização:
    Las Vegas
    Parabens ! Ja sabia de tudo isso dae, mas vai ajudar muita gnt a entender melhor como trabalha as memorias.

    Show !

    [χђ†].
     
  9. Panda

    Panda impeckable Administrador

    Registro:
    05/08/2005
    Mensagens:
    8,049
    Curtidas recebidas:
    27
    Pontos de Troféu:
    72
    Localização:
    SC
    Mesmo que tenha dado um certo trabalho em "peneirar" somente o mais essencial (a quantidade de conteúdo que descartei não foi pouca) e escrever tudo de maneira mais simplificada vale a pena justamente por esse apoio que a galera dá. Valeu! :D

    Já tenho idéias para outros tópicos tipo este, mas como dá um bom trabalho e não tenho certeza se os assuntos são de interesse, bate aquela insegurança na hora de começar tudo. :eek:
     
  10. Willian

    Willian FinK Registrado

    Registro:
    04/01/2004
    Mensagens:
    3,016
    Curtidas recebidas:
    0
    Pontos de Troféu:
    0
    Localização:
    Tubarão - SC
    Muito bom, mas como mesmo você disse, é muito extenso, o que dificulta a leitura para muita gente.. pessoal é muito vadio.. sem ofensa.
     
  11. Picuinha

    Picuinha Otaco Registrado

    Registro:
    27/07/2007
    Mensagens:
    281
    Curtidas recebidas:
    0
    Pontos de Troféu:
    0
    Localização:
    Brasila DF
    muito bom !!!
     
  12. DrDreh

    DrDreh oh amygdala! oh amygdala! Registrado

    Registro:
    18/11/2004
    Mensagens:
    7,854
    Curtidas recebidas:
    8
    Pontos de Troféu:
    0
    Localização:
    ES
    Excelente!
    Complementa agora com DDR, DDR2, DDR3 e pina o tópico!
    =D
     
  13. Panda

    Panda impeckable Administrador

    Registro:
    05/08/2005
    Mensagens:
    8,049
    Curtidas recebidas:
    27
    Pontos de Troféu:
    72
    Localização:
    SC
    Na realidade, como falei lá em cima, as DDR, DDR2 e DDR3 são variações das SDRAM, então ninguém tá no escuro, hehehe! :D
    É claro que cada uma possui suas particularidades, mas posso pensar em adicionar tal conteúdo... Mesmo porque, só não falei sobre elas pra não deixar o tópico muito grande.
     
  14. Impagliazzo

    Impagliazzo A não-unidade na unidade Registrado

    Registro:
    11/06/2007
    Mensagens:
    1,134
    Curtidas recebidas:
    0
    Pontos de Troféu:
    0
    Localização:
    Rio de Janeiro, BR
    Merece uma pendurada...
     

Compartilhe esta Página