Memória do computador - Computer memory

Módulo DDR4 SDRAM moderno , normalmente encontrado em computadores desktop.

Na computação , a memória é um dispositivo ou sistema usado para armazenar informações para uso imediato em um computador ou hardware de computador relacionado e dispositivos eletrônicos digitais . O termo memória é freqüentemente sinônimo do termo armazenamento primário ou memória principal . Um sinônimo arcaico para memória é armazenamento .

A memória do computador opera em alta velocidade em comparação com o armazenamento que é mais lento, mas oferece capacidades mais altas. Se necessário, o conteúdo da memória do computador pode ser transferido para armazenamento; uma maneira comum de fazer isso é por meio de uma técnica de gerenciamento de memória chamada memória virtual .

A memória moderna é implementada como memória semicondutora , onde os dados são armazenados em células de memória construídas a partir de transistores MOS e outros componentes em um circuito integrado . Existem dois tipos principais de memória de semicondutor, volátil e não volátil . Exemplos de memória não volátil são memória flash e memória ROM , PROM , EPROM e EEPROM . Exemplos de memória volátil são memória de acesso aleatório dinâmica (DRAM) usada para armazenamento primário e memória de acesso aleatório estática (SRAM) usada para cache de CPU .

A maior parte da memória de semicondutores é organizada em células de memória, cada uma armazenando um bit (0 ou 1). A organização da memória Flash inclui um bit por célula de memória e célula multinível, capaz de armazenar vários bits por célula. As células de memória são agrupadas em palavras de comprimento de palavra fixo , por exemplo, 1, 2, 4, 8, 16, 32, 64 ou 128 bits. Cada palavra pode ser acessada por um endereço binário de N bits, possibilitando o armazenamento de 2 N palavras na memória.

História

Detalhe da parte de trás de uma seção do ENIAC , mostrando tubos de vácuo .
Cartão microSDHC de 8 GB além de 8 bytes de memória de núcleo magnético (1 núcleo equivale a 1 bit ).     

No início dos anos 1940, a tecnologia de memória frequentemente permitia uma capacidade de alguns bytes. O primeiro computador digital programável eletrônico , o ENIAC , usando milhares de tubos de vácuo , podia realizar cálculos simples envolvendo 20 números de dez dígitos decimais armazenados nos tubos de vácuo.

O próximo avanço significativo na memória do computador veio com a memória de linha de atraso acústico , desenvolvida por J. Presper Eckert no início dos anos 1940. Através da construção de um tubo de vidro cheio de mercúrio e conectado em cada extremidade com um cristal de quartzo, as linhas de atraso poderiam armazenar bits de informação na forma de ondas sonoras propagando-se através do mercúrio, com os cristais de quartzo atuando como transdutores para ler e escrever bits . A memória de linha de atraso foi limitada a uma capacidade de até alguns milhares de bits.

Duas alternativas à linha de retardo, o tubo de Williams e o tubo de Selectron , surgiram em 1946, ambos utilizando feixes de elétrons em tubos de vidro como meio de armazenamento. Usando tubos de raios catódicos , Fred Williams inventou o tubo de Williams, que foi a primeira memória de computador com acesso aleatório . O tubo Williams era capaz de armazenar mais informações do que o tubo Selectron (o Selectron era limitado a 256 bits, enquanto o tubo Williams podia armazenar milhares) e menos caro. Mesmo assim, o tubo de Williams era frustrantemente sensível a distúrbios ambientais.

Os esforços começaram no final dos anos 1940 para encontrar a memória não volátil . A memória de núcleo magnético permite a recuperação da memória após a perda de energia. Foi desenvolvido por Frederick W. Viehe e An Wang no final dos anos 1940 e aprimorado por Jay Forrester e Jan A. Rajchman no início dos anos 1950, antes de ser comercializado com o computador Whirlwind em 1953. A memória de núcleo magnético era a forma dominante de memória até o desenvolvimento da memória semicondutora MOS na década de 1960.

A primeira memória semicondutora foi implementada como um circuito flip-flop no início dos anos 1960 usando transistores bipolares . A memória semicondutora feita de dispositivos discretos foi enviada pela primeira vez pela Texas Instruments para a Força Aérea dos Estados Unidos em 1961. No mesmo ano, o conceito de memória de estado sólido em um chip de circuito integrado (IC) foi proposto pelo engenheiro de aplicações Bob Norman da Fairchild Semiconductor . O primeiro chip IC de memória semicondutor bipolar foi o SP95 introduzido pela IBM em 1965. Embora a memória semicondutora oferecesse desempenho aprimorado em relação à memória de núcleo magnético, ela permaneceu maior e mais cara e não substituiu a memória de núcleo magnético até o final dos anos 1960.

Memória MOS

A invenção do MOSFET (transistor de efeito de campo de óxido de metal-semicondutor, ou transistor MOS), por Mohamed M. Atalla e Dawon Kahng no Bell Labs em 1959, possibilitou o uso prático de transistores de semicondutor de óxido de metal (MOS) como elementos de armazenamento de células de memória. A memória MOS foi desenvolvida por John Schmidt na Fairchild Semiconductor em 1964. Além de maior desempenho, a memória semicondutora MOS era mais barata e consumia menos energia do que a memória de núcleo magnético. Em 1965, J. Wood e R. Ball do Royal Radar Establishment propuseram sistemas de armazenamento digital que usam células de memória CMOS (MOS complementares), além de dispositivos de energia MOSFET para a fonte de alimentação , acoplamento cruzado comutado , interruptores e armazenamento de linha de atraso . O desenvolvimento da tecnologia de circuito integrado MOS de porta de silício (MOS IC) por Federico Faggin na Fairchild em 1968 permitiu a produção de chips de memória MOS . A memória NMOS foi comercializada pela IBM no início dos anos 1970. A memória MOS ultrapassou a memória de núcleo magnético como a tecnologia de memória dominante no início dos anos 1970.

Os dois tipos principais de memória de acesso aleatório volátil (RAM) são a memória de acesso aleatório estática (SRAM) e a memória de acesso aleatório dinâmica (DRAM). A SRAM bipolar foi inventada por Robert Norman na Fairchild Semiconductor em 1963, seguida pelo desenvolvimento da SRAM MOS por John Schmidt na Fairchild em 1964. A SRAM tornou-se uma alternativa à memória de núcleo magnético, mas exigia seis transistores MOS para cada bit de dados. O uso comercial de SRAM começou em 1965, quando a IBM lançou seu chip SP95 SRAM para o System / 360 Model 95 .

A Toshiba introduziu células de memória DRAM bipolar para sua calculadora eletrônica Toscal BC-1411 em 1965. Embora oferecesse desempenho aprimorado em relação à memória de núcleo magnético, a DRAM bipolar não podia competir com o preço mais baixo da memória de núcleo magnético dominante. A tecnologia MOS é a base da DRAM moderna. Em 1966, o Dr. Robert H. Dennard no IBM Thomas J. Watson Research Center estava trabalhando na memória MOS. Ao examinar as características da tecnologia MOS, ele descobriu que ela era capaz de construir capacitores , e que armazenar uma carga ou nenhuma carga no capacitor MOS poderia representar o 1 e 0 de um bit, enquanto o transistor MOS poderia controlar a gravação da carga no capacitor. Isso o levou ao desenvolvimento de uma célula de memória DRAM de transistor único. Em 1967, Dennard registrou uma patente sob a IBM para uma célula de memória DRAM de transistor único, baseada na tecnologia MOS. Isso levou ao primeiro chip comercial DRAM IC, o Intel 1103 , em outubro de 1970. Memória de acesso aleatório dinâmica síncrona (SDRAM) mais tarde estreou com o chip Samsung KM48SL2000 em 1992.

O termo memória também é freqüentemente usado para se referir à memória não volátil , especificamente memória flash . Ele tem origem na memória somente leitura (ROM). A memória somente leitura programável (PROM) foi inventada por Wen Tsing Chow em 1956, enquanto trabalhava para a Divisão Arma da americana Bosch Arma Corporation. Em 1967, Dawon Kahng e Simon Sze, da Bell Labs, propuseram que a porta flutuante de um dispositivo semicondutor MOS pudesse ser usada para a célula de uma memória somente leitura reprogramável (ROM), o que levou Dov Frohman da Intel a inventar o EPROM (PROM apagável ) em 1971. EEPROM (PROM apagável eletricamente) foi desenvolvido por Yasuo Tarui, Yutaka Hayashi e Kiyoko Naga no Laboratório Eletrotécnico em 1972. A memória flash foi inventada por Fujio Masuoka na Toshiba no início dos anos 1980. Masuoka e seus colegas apresentaram a invenção do flash NOR em 1984 e do flash NAND em 1987. A Toshiba comercializou a memória flash NAND em 1987.

Os desenvolvimentos na tecnologia e as economias de escala tornaram possíveis os chamados computadores de memória muito grande (VLM).

Memória volátil

Vários módulos de memória contendo diferentes tipos de DRAM (de cima para baixo): DDR SDRAM, SDRAM, EDO DRAM e FPM DRAM

A memória volátil é a memória do computador que requer energia para manter as informações armazenadas. A maioria das memórias voláteis de semicondutores modernas é RAM estática ( SRAM ) ou RAM dinâmica ( DRAM ). SRAM retém seu conteúdo enquanto a energia estiver conectada e é mais simples para interface, mas usa seis transistores por bit. A RAM dinâmica é mais complicada para interface e controle, necessitando de ciclos regulares de atualização para evitar a perda de seu conteúdo, mas usa apenas um transistor e um capacitor por bit, permitindo atingir densidades muito mais altas e custos por bit muito mais baratos.

SRAM não vale a pena para a memória do sistema desktop, onde a DRAM domina, mas é usada para suas memórias cache. SRAM é comum em pequenos sistemas embarcados, que podem precisar de apenas dezenas de kilobytes ou menos. As tecnologias de memória volátil que tentaram competir ou substituir SRAM e DRAM incluem Z-RAM e A-RAM .

Memória não volátil

A memória não volátil é a memória do computador que pode reter as informações armazenadas mesmo quando não está ligada. Exemplos de memória não volátil incluem memória somente leitura (consulte ROM ), memória flash , a maioria dos tipos de dispositivos de armazenamento magnético de computador (por exemplo , unidades de disco rígido , disquetes e fita magnética ), discos ópticos e métodos de armazenamento de computador antigos, como papel fita adesiva e cartões perfurados .

As próximas tecnologias de memória não volátil incluem FERAM, CBRAM , PRAM , STT-RAM , SONOS , RRAM , memória racetrack , NRAM , 3D XPoint e memória milípede .

Memória semi-volátil

Uma terceira categoria de memória é "semivolátil". O termo é usado para descrever uma memória que tem alguma duração não volátil limitada depois que a energia é removida, mas, em seguida, os dados são perdidos. Um objetivo típico ao usar uma memória semivolátil é fornecer alto desempenho / durabilidade / etc. associado a memórias voláteis, enquanto fornece alguns benefícios de uma verdadeira memória não volátil.

Por exemplo, alguns tipos de memória não volátil podem se desgastar, onde uma célula "gasta" aumentou a volatilidade, mas continua a funcionar. Localizações de dados que são gravadas com freqüência podem, portanto, ser direcionadas para o uso de circuitos desgastados. Contanto que o local seja atualizado dentro de algum tempo de retenção conhecido, os dados permanecem válidos. Se o tempo de retenção "expirar" sem uma atualização, o valor será copiado para um circuito menos desgastado com retenção mais longa. Escrever primeiro na área desgastada permite uma alta taxa de gravação, evitando o desgaste dos circuitos não desgastados.

Como um segundo exemplo, um STT-RAM pode se tornar não volátil com a construção de células grandes, mas o custo por bit e o poder de gravação aumentam, enquanto a velocidade de gravação diminui. O uso de células pequenas melhora o custo, a potência e a velocidade, mas leva a um comportamento semivolátil. Em algumas aplicações, o aumento da volatilidade pode ser gerenciado para fornecer muitos benefícios de uma memória não volátil, por exemplo, removendo a energia, mas forçando um despertar antes que os dados sejam perdidos; ou armazenando em cache dados somente leitura e descartando os dados em cache se o tempo de desligamento exceder o limite não volátil.

O termo semivolátil também é usado para descrever o comportamento semivolátil construído a partir de outros tipos de memória. Por exemplo, uma memória volátil e uma não volátil podem ser combinadas, onde um sinal externo copia dados da memória volátil para a memória não volátil, mas se a energia for removida sem copiar, os dados são perdidos. Ou uma memória volátil com bateria, e se a energia externa for perdida, há algum período conhecido em que a bateria pode continuar a alimentar a memória volátil, mas se a energia ficar desligada por um período prolongado, a bateria se esgota e os dados são perdidos.

Gestão

O gerenciamento adequado da memória é vital para o funcionamento adequado de um sistema de computador. Os sistemas operacionais modernos possuem sistemas complexos para gerenciar adequadamente a memória. Não fazer isso pode levar a bugs, desempenho lento e, na pior das hipóteses, controle por vírus e software malicioso .

Insetos

O gerenciamento impróprio de memória é uma causa comum de bugs, incluindo os seguintes tipos:

  • Em um estouro aritmético , um cálculo resulta em um número maior do que o permitido pela memória alocada. Por exemplo, um inteiro de 8 bits com sinal permite os números de −128 a +127. Se seu valor for 127 e ele for instruído a adicionar um, o computador não poderá armazenar o número 128 nesse espaço. Tal caso resultará em operação indesejada, como alterar o valor do número para −128 em vez de +128.
  • Um vazamento de memória ocorre quando um programa solicita memória do sistema operacional e nunca retorna a memória quando termina de usá-la. Um programa com esse bug exigirá gradualmente mais e mais memória até que o programa falhe ao se esgotar.
  • Uma falha de segmentação ocorre quando um programa tenta acessar a memória para a qual não tem permissão de acesso. Geralmente, um programa que faz isso será encerrado pelo sistema operacional.
  • Um estouro de buffer significa que um programa grava dados no final de seu espaço alocado e, em seguida, continua a gravar dados na memória que foi alocada para outros fins. Isso pode resultar em comportamento errático do programa, incluindo erros de acesso à memória, resultados incorretos, travamento ou violação da segurança do sistema. Eles são, portanto, a base de muitas vulnerabilidades de software e podem ser explorados de forma mal-intencionada.

Primeiros sistemas de computador

Nos primeiros sistemas de computador, os programas normalmente especificavam o local para gravar a memória e quais dados colocar lá. Este local era um local físico no hardware de memória real. O processamento lento de tais computadores não permitia os complexos sistemas de gerenciamento de memória usados ​​hoje. Além disso, como a maioria desses sistemas era de tarefa única, os sistemas sofisticados não eram tão necessários.

Essa abordagem tem suas armadilhas. Se o local especificado estiver incorreto, isso fará com que o computador grave os dados em alguma outra parte do programa. Os resultados de um erro como esse são imprevisíveis. Em alguns casos, os dados incorretos podem substituir a memória usada pelo sistema operacional. Os crackers de computador podem tirar vantagem disso para criar vírus e malware .

Memória virtual

A memória virtual é um sistema em que toda a memória física é controlada pelo sistema operacional. Quando um programa precisa de memória, ele a solicita ao sistema operacional. O sistema operacional então decide em qual local físico colocar o código e os dados do programa.

Isso oferece várias vantagens. Os programadores de computador não precisam mais se preocupar com onde seus dados estão fisicamente armazenados ou se o computador do usuário terá memória suficiente. Também permite que vários tipos de memória sejam usados. Por exemplo, alguns dados podem ser armazenados em chips físicos de RAM, enquanto outros dados são armazenados em um disco rígido (por exemplo, em um arquivo de troca ), funcionando como uma extensão da hierarquia do cache . Isso aumenta drasticamente a quantidade de memória disponível para programas. O sistema operacional colocará os dados usados ​​ativamente na RAM física, que é muito mais rápida do que os discos rígidos. Quando a quantidade de RAM não é suficiente para executar todos os programas atuais, isso pode resultar em uma situação em que o computador gasta mais tempo movendo dados da RAM para o disco e vice-versa do que realizando tarefas; isso é conhecido como thrashing .

Memória protegida

Memória protegida é um sistema em que cada programa recebe uma área de memória para uso e não tem permissão para sair desse intervalo. O uso de memória protegida aumenta muito a confiabilidade e a segurança de um sistema de computador.

Sem memória protegida, é possível que um bug em um programa altere a memória usada por outro programa. Isso fará com que esse outro programa seja executado fora da memória corrompida com resultados imprevisíveis. Se a memória do sistema operacional estiver corrompida, todo o sistema do computador pode travar e precisar ser reiniciado . Às vezes, os programas alteram intencionalmente a memória usada por outros programas. Isso é feito por vírus e malware para assumir o controle dos computadores. Ele também pode ser usado benignamente por programas desejáveis ​​que se destinam a modificar outros programas; na era moderna, isso geralmente é considerado uma prática de programação ruim para programas de aplicativos, mas pode ser usado por ferramentas de desenvolvimento de sistema, como depuradores, por exemplo, para inserir pontos de interrupção ou ganchos.

A memória protegida atribui aos programas suas próprias áreas de memória. Se o sistema operacional detectar que um programa tentou alterar a memória que não pertence a ele, o programa é encerrado (ou restrito ou redirecionado). Dessa forma, apenas o programa ofensivo trava e outros programas não são afetados pelo mau comportamento (seja acidental ou intencional).

Os sistemas de memória protegidos quase sempre incluem memória virtual também.

Veja também

Notas

Referências

Leitura adicional

  • Miller, Stephen W. (1977), Memory and Storage Technology , Montvale .: AFIPS Press
  • Memory and Storage Technology , Alexandria, Virginia .: Time Life Books, 1988