2. Introdução No que se refere ao hardware dos computadores, entendemos como memória os dispositivos que armazenam os dados com os quais o processador trabalha. Há, essencialmente, duas categorias de memórias: ROM (Read-Only Memory), que permite apenas a leitura dos dados e não perde informação na ausência de energia; e RAM (Random-Access Memory), que permite ao processador tanto a leitura quanto a gravação de dados e perde informação quando não há alimentação elétrica. Este trabalho apresenta os principais tipos de memórias ROM e RAM.
3. Memória principal: também chamadas de memória real, são memórias que o processador pode endereçar diretamente, sem as quais o computador não pode funcionar. Estas fornecem geralmente uma ponte para as secundárias, mas a sua função principal é a de conter a informação necessária para o processador num determinado momento; esta informação pode ser, por exemplo, os programas em execução. Nesta categoria insere-se a memória RAM (volátil), memória ROM (não volátil), registradores e memórias cache. Memória secundária: memórias que não podem ser endereçadas diretamente, a informação precisa ser carregada em memória principal antes de poder ser tratada pelo processador. Não são estritamente necessárias para a operação do computador. São geralmente não-voláteis, permitindo guardar os dados permanentemente. Incluem-se, nesta categoria, os discos rígidos, CDs, DVDs e disquetes. Às vezes faz-se uma diferença entre memória secundária e memória terciária. A memória secundária não necessita de operações de montagem (inserção de uma mídia ou média em um dispositivo de leitura/gravação) para acessar os dados, como discos rígidos; a memória terciária depende das operações de montagem, como discos ópticos e fitas magnéticas , entre outros.
4. Memória RAM As memórias RAM (Random-Access Memory) - Memória de Acesso Aleatório constituem uma das partes mais importantes dos computadores, pois são nelas que o processador armazena os dados com os quais está lidando. Esse tipo de memória tem um processo de gravação de dados extremamente rápido, se comparado aos vários tipos de memória ROM. No entanto, as informações gravadas se perdem quando não há mais energia elétrica, isto é, quando o computador é desligado, sendo, portanto, um tipo de memória volátil.
5. Há dois tipos de tecnologia de memória RAM que são muitos utilizados: estático e dinâmico, isto é, SRAM e DRAM, respectivamente. Há também um tipo mais recente chamado de MRAM. Eis uma breve explicação de cada tipo: - SRAM (Static Random-Access Memory - RAM Estática): esse tipo é muito mais rápido que as memórias DRAM, porém armazena menos dados e possui preço elevado se considerarmos o custo por megabyte. Memórias SRAM costumam ser utilizadas como cache.
6. - DRAM (Dynamic Random-Access Memory - RAM Dinâmica): memórias desse tipo possuem capacidade alta, isto é, podem comportar grandes quantidades de dados. No entanto, o acesso a essas informações costuma ser mais lento que o acesso às memórias estáticas. Esse tipo também costuma ter preço bem menor quando comparado ao tipo estático;
7. - MRAM (Magnetoresistive Random-Access Memory - RAM Magneto-resistiva): a memória MRAM vem sendo estudada há tempos, mas somente nos últimos anos é que as primeiras unidades surgiram. Trata-se de um tipo de memória até certo ponto semelhante à DRAM, mas que utiliza células magnéticas. Graças a isso, essas memórias consomem menor quantidade de energia, são mais rápidas e armazenam dados por um longo tempo, mesmo na ausência de energia elétrica. O problema das memórias MRAM é que elas armazenam pouca quantidade de dados e são muito caras, portanto, pouco provavelmente serão adotadas em larga escala.
8. Memória ROM As memórias ROM (Read-Only Memory) - Memória Somente de Leitura, recebem esse nome porque os dados são gravados nelas apenas uma vez. Depois disso, essas informações não podem ser apagadas ou alteradas, apenas lidas pelo computador, exceto por meio de procedimentos especiais. Outra característica das memórias ROM é que elas são do tipo não voláteis, isto é, os dados gravados não são perdidos na ausência de energia elétrica ao dispositivo. Eis os principais tipos de memória ROM:
9. PROM (Programmable Read-Only Memory): esse é um dos primeiros tipos de memória ROM. A gravação de dados neste tipo é realizada por meio de aparelhos que trabalham através de uma reação física com elementos elétricos. Uma vez que isso ocorre, os dados gravados na memória PROM não podem ser apagados ou alterados;
10. - EPROM (Erasable Programmable Read-Only Memory): as memórias EPROM têm como principal característica a capacidade de permitir que dados sejam regravados no dispositivo. Isso é feito com o auxílio de um componente que emite luz ultravioleta. Nesse processo, os dados gravados precisam ser apagados por completo. Somente depois disso é que uma nova gravação pode ser feita;
11. - EEPROM (Electrically-Erasable Programmable Read-Only Memory): este tipo de memória ROM também permite a regravação de dados, no entanto, ao contrário do que acontece com as memórias EPROM, os processos para apagar e gravar dados são feitos eletricamente, fazendo com que não seja necessário mover o dispositivo de seu lugar para um aparelho especial para que a regravação ocorra;
12. - EAROM (Electrically-Alterable Programmable Read-Only Memory): as memórias EAROM podem ser vistas como um tipo de EEPROM. Sua principal característica é o fato de que os dados gravados podem ser alterados aos poucos, razão pela qual esse tipo é geralmente utilizado em aplicações que exigem apenas reescrita parcial de informações;
13. - Flash : as memórias Flash também podem ser vistas como um tipo de EEPROM , no entanto, o processo de gravação (e regravação) é muito mais rápido. Além disso, memórias Flash são mais duráveis e podem guardar um volume elevado de dados.
14. - CD-ROM, DVD-ROM e afins : essa é uma categoria de discos ópticos onde os dados são gravados apenas uma vez, seja de fábrica, como os CDs de músicas, ou com dados próprios do usuário, quando o próprio efetua a gravação. Há também uma categoria que pode ser comparada ao tipo EEPROM , pois permite a regravação de dados: CD-RW e DVD-RW e afins.
16. Barramento frontal Um esquema north/southbridge típico.Em PCs, o barramento frontal (Front Side Bus ou FSB em inglês) é o barramento de transferência de dados que transporta informação entre a UCP e o northbridge da placa-mãe. Alguns computadores também possuem um barramento traseiro (ou backside bus) o qual conecta a UCP à memória cache interna. Este barramento e a memória cache associada à ela podem ser acessados muito mais rapidamente do que a RAM do sistema através do barramento frontal. A largura de banda ou throughput teórico máximo do barramento frontal é determinado pelo produto da largura da via de dados, frequência de clock (ciclos por segundo) e a quantidade de transferências de dados realizadas por ciclo do clock. Por exemplo, um FSB com largura de 32 bits (4 bytes) operando a uma frequência de 100 MHz e que realize 4 transferências por ciclo, possui uma largura de banda de 1600 megabytes por segundo ( MB/s).
17. RESUMINDO: Barramento frontal é um nome alternativo para os barramentos de dados e endereços de uma UCP, conforme definido nos datasheet dos fabricantes. O termo é associado com maior frequência aos vários barramentos de UCP usados nas placas-mãe de PCs (incluindo servidores etc), raramente com os barramentos de dados e endereços usados em sistemas embarcados e em pequenos computadores. O barramento frontal funciona como uma conexão entre a CPU e o restante do hardware através do chipset. Este chipset é geralmente dividido em northbridge e southbridge, e serve de ponto de conexão para todos os outros barramentos do sistema. Barramentos tais como o PCI, AGP e de memória conectam-se ao chipset para que os dados fluam entre os dispositivos conectados. Estes barramentos secundários geralmente operam em frequências derivadas do clock do barramento frontal, mas não são necessariamente sincronizados com ele.
18. Prós e contras Prós Embora o barramento frontal seja uma tecnologia envelhecida, possui a vantagem de grande flexibilidade e baixo custo. Não há limite teórico ao número de UCPs que podem ser colocadas num FSB, embora a performance certamente não vá aumentar linearmente devido a essas UCPs adicionais (devido ao gargalo da largura de banda da arquitetura empregada). Contras O barramento frontal, tal como o conhecemos hoje, pode estar com os dias contados. Originalmente, este barramento era um ponto de conexão central entre todos os dispositivos do sistema e UCP. Todavia, em anos recentes, isto tem sido derrubado pelo uso crescente de barramentos ponto-a-ponto individuais. O barramento frontal foi recentemente criticado pela AMD como sendo uma tecnologia antiga e lenta que criava um gargalo nos computadores da atualidade. Enquanto uma UCP rápida pode executar instruções individuais mais rapidamente, isto é desperdiçado se não puder buscar instruções e dados tão rapidamente quanto sua capacidade de processá-las; quando isto acontece, a UCP deve aguardar por um ou mais ciclos de clock até que a memória informe o valor. Ademais, uma UCP rápida pode ser atrasada quando tem de acessar outros dispositivos conectados ao FSB. Assim, um FSB lento pode tornar-se um gargalo que desacelera uma UCP rápida
20. Um coprocessador é uma UCP de computador usada para suplementar as funções do microprocessador principal. As operações realizadas pelo coprocessador podem ser de ponto flutuante aritmético, computação gráfica, processamento de sinais, processamento de cadeias de caracteres ou encriptação. Ao assumir tarefas que consomem tempo de processamento, os coprocessadores podem acelerar a performance geral de um sistema. Coprocessadores também permitem que uma linha de computadores seja customizada, de forma que consumidores que não precisem de recursos extras não tenham de pagar por isso. Os coprocessadores foram vistos inicialmente em mainframes, onde acrescentavam funcionalidades adicionais "opcionais" tais como suporte matemático de ponto flutuante. Um uso mais comum foi o de controlar canais de entrada/saída, embora neste papel eles fossem mais comumente referenciados como controladores de canais.
22. CISC (sigla para Complex Instruction Set Computer, ou, em uma tradução literal, "Computador com um Conjunto Complexo de Instruções"): é uma linha de arquitetura de processadores capaz de executar centenas de instruções complexas diferentes sendo, assim, extremamente versátil. Exemplos de processadores CISC são os 386 e os 486 da Intel. Reduced Instruction Set Computer ou Computador com um Conjunto Reduzido de Instruções (RISC), é uma linha de arquitetura de computadores que favorece um conjunto simples e pequeno de instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas. A maioria dos microprocessadores modernos são RISCs, por exemplo DEC Alpha, SPARC, MIPS, e PowerPC. O tipo de microprocessador mais largamente usado em desktops, o x86, é mais CISC do que RISC, embora chips mais novos traduzam instruções x86 baseadas em arquitetura CISC em formas baseadas em arquitetura RISC mais simples, utilizando prioridade de execução.
23. Prós e Contras Processadores CISC que possuem internamente núcleos RISC. Assim, a parte CISC do processador pode cuidar das instruções mais complexas, enquanto que o núcleo RISC pode cuidar das mais simples, nas quais é mais rápido. Parece que o futuro nos reserva uma fusão destas duas tecnologias. Um bom exemplo de processador híbrido é o Pentium Pro. Resume-se aqui, as principais diferenças entre as arquiteturas CISC e RISC, nas facilidades de acesso a operandos que se encontram em memória: CISC: grande riqueza na especificação de modos de endereçamento; exemplo do i86: modo absoluto; por registro indireto –(R), – (SP), (SP)+; por registro base – (Rb)+desloc8,16,32, (Rb)+(R), (Rb)+desloc8,16,32; com acessos indiretos à memória, isto é, com apontadores para as variáveis sem memória armazenados em células de memória. RISC: apenas em operações load/store e apenas 1 ou 2 modos; exemplo do MIPS: apenas (R)+desloc16.Operações lógicas e aritméticas em CISC e RISC: Duas grandes diferenças se fazem notar entre estes 2 modelos: na localização dos operandos neste tipo de operações, e o nº de operandos que é possível especificar em cada instrução. CISC: 1 ou mais operandos em memória (máx 1 no i86 e M68K); nem sempre se especificam 3 operandos (máx 2 no i86 eM68K). RISC: operandos sempre em registros; 3 operandos especificados (1 dest, 2 fontes).
24. Acesso a operandos em memória em CISC e RISC: Uma das consequências do fato das arquiteturas CISC disporem de um menor número de registros é a alocação das variáveis escalares, em regra, a posições de memória, enquanto que nas arquiteturas RISC, a regra era a alocação a registros. Atendendo ao modelo de programação estruturada tão em voga nos anos 70, ao fato da maioria das variáveis escalares serem locais a um dado procedimento, e à necessidade do modelo de programação ter de suportar o aninhamento e recursividade de procedimentos, as arquiteturas CISC necessitavam de um leque rico de modos de endereçamento à memória, para reduzir o gap semântico entre uma HLL e a linguagem máquina.