Baixe o app para aproveitar ainda mais
Leia os materiais offline, sem usar a internet. Além de vários outros recursos!
Prévia do material em texto
CAPÍTULO Eu NTERNO M EMORY 5,1 Semiconductor Main Memory Organização DRAM e SRAM Tipos de ROM Chip Logic Embalagem de Chip Organização do Módulo Memória intercalada Correção de erros Organização DRAM avançada DRAM síncrona Rambus DRAM DDR SDRAM Cache DRAM Leitura recomendada Termos-chave, perguntas de revisão e problemas 5,2 5,3 5,4 5,5 159 160 CAPÍTULO 5 / MEMÓRIA INTERNA eu GANHO O BJETIVOS Depois de estudar este capítulo, você será capaz de: Apresentar uma visão geral dos principais tipos de memória principal de semicondutor. Compreenda a operação de um código básico que pode detectar e corrigir erros de bit único em palavras de 8 bits. Resuma as propriedades das organizações de DRAM avançadas contemporâneas. Começamos este capítulo com uma pesquisa dos principais subsistemas de memória de semicondutores, incluindo memórias ROM, DRAM e SRAM. Em seguida, examinamos as técnicas de controle de erros usadas para aumentar a confiabilidade da memória. Em seguida, veremos arquiteturas DRAM mais avançadas. 5.1 MEMÓRIA PRINCIPAL DO SEMICONDUTOR Em computadores anteriores, a forma mais comum de armazenamento de acesso aleatório para a memória principal do computador empregava uma série de loops ferromagnéticos em forma de donut denominados núcleos. Portanto, a memória principal era muitas vezes referida como testemunho, um termo que persiste até hoje. O advento e as vantagens da microeletrônica há muito eliminaram a memória do núcleo magnético. Hoje, o uso de chips semicondutores para a memória principal é quase universal. Os principais aspectos dessa tecnologia são explorados nesta seção. Organização O elemento básico de um memória semicondutora é a célula de memória. Embora uma variedade de tecnologias eletrônicas sejam usadas, todas as células de memória semicondutoras compartilham certas propriedades: • Eles exibem dois estados estáveis (ou semestáveis), que podem ser usados para representar 1 e 0 binários. • Eles podem ser gravados (pelo menos uma vez), para definir o estado. • Eles são capazes de ser lidos para sentir o estado. A Figura 5.1 mostra o funcionamento de uma célula de memória. Mais comumente, a célula tem três terminais funcionais capazes de transportar um sinal elétrico. O terminal de seleção, como o nome sugere, seleciona uma célula de memória para uma operação de leitura ou gravação. O terminal de controle indica leitura ou gravação. Para escrever, o outro terminal fornece um sinal elétrico que define o estado da célula para 1 ou 0. Para leitura, esse terminal é usado para a saída do estado da célula. Os detalhes da organização interna, funcionamento e tempo da célula de memória dependem da tecnologia de circuito integrado usada e estão além do escopo deste livro, exceto por um breve resumo. Para nossos propósitos, consideraremos que células individuais podem ser selecionadas para operações de leitura e escrita. 5.1 / MEMÓRIA PRINCIPAL DO SEMICONDUTOR 161 Ao controle Ao controle Selecione Dados em Selecione Sentido Célula Célula (a) Escreva (b) Leia Figura 5.1 Operação de célula de memória DRAM e SRAM Todos os tipos de memória que exploraremos neste capítulo são acesso aleatório. Ou seja, palavras individuais da memória são acessadas diretamente por meio da lógica de endereçamento com fio. A Tabela 5.1 lista os principais tipos de memória de semicondutor. O mais comum é conhecido como memória de acesso aleatório ( RAM). Isso é, na verdade, um uso indevido do termo, porque todos os tipos listados na tabela são de acesso aleatório. Uma característica distintiva da memória designada como RAM é que é possível tanto ler dados da memória quanto gravar novos dados na memória de maneira fácil e rápida. Tanto a leitura quanto a escrita são realizadas por meio de sinais elétricos. A outra característica distintiva da RAM é que ela é volátil. A RAM deve ser fornecida com uma fonte de alimentação constante. Se a energia for interrompida, os dados serão perdidos. Portanto, a RAM pode ser usada apenas como armazenamento temporário. As duas formas tradicionais de RAM usadas em computadores são DRAM e SRAM. DINÂMICO RAM A tecnologia RAM é dividida em duas tecnologias: dinâmica e estática. UMA RAM dinâmica (DRAM) é feito com células que armazenam dados como carga em capacitores. A presença ou ausência de carga em um capacitor é interpretada como um binário 1 ou 0. Como os capacitores têm uma tendência natural para descarregar, dinâmica Tabela 5.1 Tipos de memória de semicondutor Escreva MecanismoTipo de Memória Memória de acesso aleatório (RAM) Memória somente leitura (ROM) ROM programável (PROM) Categoria Ler escrever memória Somente leitura memória Borracha Eletricamente, nível de byte Volatilidade Eletricamente Volátil Máscaras Não é possivel Luz UV, nível de chip Eletricamente, nível de byte Eletricamente, nível de bloco PROM apagável (EPROM) PROM apagável eletricamente (EEPROM) Leitura principalmente memória Não volátil Eletricamente Memória flash 162 CAPÍTULO 5 / MEMÓRIA INTERNA RAMs requerem atualização de carga periódica para manter o armazenamento de dados. O termo dinâmico refere-se a esta tendência da carga armazenada vazar, mesmo com energia continuamente aplicada. A Figura 5.2a é uma estrutura DRAM típica para uma célula individual que armazena 1 bit. A linha de endereço é ativada quando o valor do bit desta célula deve ser lido ou escrito. O transistor atua como uma chave que está fechada (permitindo que a corrente flua) se uma tensão for aplicada à linha de endereço e aberta (nenhuma corrente flui) se nenhuma tensão estiver presente na linha de endereço. Para a operação de gravação, um sinal de tensão é aplicado à linha de bits; uma alta tensão representa 1 e uma baixa tensão representa 0. Um sinal é então aplicado à linha de endereço, permitindo que uma carga seja transferida para o capacitor. Para a operação de leitura, quando a linha de endereço é selecionada, o transistor liga e a carga armazenada no capacitor é enviada para uma linha de bits e para um amplificador de detecção. O amplificador de detecção compara a tensão do capacitor com um valor de referência e determina se a célula contém uma lógica 1 ou uma lógica 0. A leitura da célula descarrega o capacitor, que deve ser restaurado para completar a operação. Embora a célula DRAM seja usada para armazenar um único bit (0 ou 1), é essencialmente um dispositivo analógico. O capacitor pode armazenar qualquer valor de carga dentro de uma faixa; um valor limite determina se a cobrança é interpretada como 1 ou 0. ESTÁTICO RAM Em contraste, um RAM estática (SRAM) é um dispositivo digital que usa os mesmos elementos lógicos usados no processador. Em uma SRAM, os valores binários são armazenados usando as configurações tradicionais de porta lógica flip-flop (consulte o Capítulo 11 para uma descrição dos flip-flops). Uma RAM estática manterá seus dados enquanto a energia for fornecida a ela. Voltagem de corrente contínua Linha de endereço T 3 T 4 C 1 T 5 C 2 T 6 Transistor Armazenamento capacitor T 1 T 2 Linha de bits B Terra Terra Linha de bits B Linha de bits B Endereço linha (b) Célula de RAM estática (SRAM)(a) Célula de RAM dinâmica (DRAM) Figura 5.2 Estruturas de células de memória típicas 5.1 / MEMÓRIA PRINCIPAL DO SEMICONDUTOR 163 A Figura 5.2b é uma estrutura SRAM típica para uma célula individual. Quatro transistores (T 1, T 2, T 3, T 4) são interconectados em um arranjo que produz um estado lógico estável. No estado lógico 1, ponto C 1 é alto e ponto C 2 é baixo; neste estado, T 1 e T 4 estão desligados e T 2 e T 3 estão no. 1 No estado lógico 0, ponto C 1 é baixo e ponto C 2 é alto; neste estado, T 1 e T 4 estão ligados e T 2 e T 3 estão desligados. Ambos os estados são estáveis enquanto a tensão de corrente contínua (CC) for aplicada. Ao contrário da DRAM, nenhuma atualização é necessária para reter os dados. Comona DRAM, a linha de endereço SRAM é usada para abrir ou fechar um switch. A linha de endereço controla dois transistores (T 5 e T 6). Quando um sinal é aplicado a esta linha, os dois transistores são ligados, permitindo uma operação de leitura ou escrita. Para uma operação de gravação, o valor do bit desejado é aplicado à linha B, enquanto seu complemento é aplicado à linha B. Isso força os quatro transistores (T 1, T 2, T 3, T 4) no estado adequado. Para uma operação de leitura, o valor do bit é lido da linha B. SRAM VERSUS DRAM Ambos os RAMs estáticos e dinâmicos são voláteis; ou seja, a alimentação deve ser continuamente fornecida à memória para preservar os valores dos bits. Uma célula de memória dinâmica é mais simples e menor do que uma célula de memória estática. Assim, uma DRAM é mais densa (células menores = mais células por unidade de área) e menos cara do que uma SRAM correspondente. Por outro lado, uma DRAM requer o circuito de atualização de suporte. Para memórias maiores, o custo fixo do circuito de atualização é mais do que compensado pelo menor custo variável das células DRAM. Assim, as DRAMs tendem a ser favorecidas para grandes requisitos de memória. Um último ponto é que as SRAMs são um pouco mais rápidas do que as DRAMs. Devido a essas características relativas, SRAM é usado para memória cache (dentro e fora do chip), e DRAM é usado para memória principal. Tipos de ROM Como o nome sugere, um memória somente leitura ( ROM) contém um padrão permanente de dados que não pode ser alterado. Uma ROM não é volátil; ou seja, nenhuma fonte de alimentação é necessária para manter os valores dos bits na memória. Embora seja possível ler uma ROM, não é possível gravar novos dados nela. Uma aplicação importante dos ROMs é a microprogramação, discutida na Parte Quatro. Outras aplicações potenciais incluem • Sub-rotinas de biblioteca para funções frequentemente desejadas • Programas de sistema • Tabelas de funções Para um requisito de tamanho modesto, a vantagem da ROM é que os dados ou programa estão permanentemente na memória principal e nunca precisam ser carregados de um dispositivo de armazenamento secundário. O AROM é criado como qualquer outro chip de circuito integrado, com os dados realmente conectados ao chip como parte do processo de fabricação. Isso apresenta dois problemas: • A etapa de inserção de dados inclui um custo fixo relativamente grande, sejam fabricadas uma ou milhares de cópias de uma ROM específica. • Não há espaço para erros. Se um bit estiver errado, todo o lote de ROMs deve ser descartado. 1 Os círculos associados a T 3 e T 4 na Figura 5.2b indicam negação de sinal. 164 CAPÍTULO 5 / MEMÓRIA INTERNA Quando apenas um pequeno número de ROMs com um determinado conteúdo de memória é necessário, uma alternativa menos cara é o ROM programável (PROM). Como a ROM, a PROM é não volátil e pode ser escrito apenas uma vez. Para o PROM, o processo de escrita é realizado eletricamente e pode ser realizado por um fornecedor ou cliente em um momento posterior à fabricação do chip original. Equipamento especial é necessário para o processo de escrita ou “programação”. PROMs fornecem flexibilidade e conveniência. O ROM permanece atraente para execuções de produção de alto volume. Outra variação da memória somente leitura é o memória principalmente de leitura, que é útil para aplicativos em que as operações de leitura são muito mais frequentes do que as operações de gravação, mas para as quais o armazenamento não volátil é necessário. Existem três formas comuns de memória principalmente para leitura: EPROM, EEPROM e memória flash. O opticamente memória somente leitura programável apagável (EPROM) é lido e escrito eletricamente, como no PROM. No entanto, antes de uma operação de gravação, todas as células de armazenamento devem ser apagadas para o mesmo estado inicial pela exposição do chip embalado à radiação ultravioleta. O apagamento é realizado lançando uma luz ultravioleta intensa através de uma janela projetada no chip de memória. Este processo de apagamento pode ser executado repetidamente; cada apagamento pode levar até 20 minutos para ser executado. Assim, a EPROM pode ser alterada várias vezes e, como a ROM e a PROM, mantém seus dados virtualmente indefinidamente. Para quantidades comparáveis de armazenamento, a EPROM é mais cara que a PROM, mas tem a vantagem da capacidade de atualização múltipla. Uma forma mais atraente de memória principalmente para leitura é memória somente leitura programável apagável eletricamente (EEPROM). Esta é uma memória principalmente para leitura que pode ser gravada a qualquer momento sem apagar o conteúdo anterior; apenas o byte ou bytes endereçados são atualizados. A operação de gravação leva muito mais tempo do que a operação de leitura, na ordem de várias centenas de microssegundos por byte. A EEPROM combina a vantagem da não-volatilidade com a flexibilidade de ser atualizável no local, usando controle de barramento comum, endereço e linhas de dados. A EEPROM é mais cara que a EPROM e também é menos densa, suportando menos bits por chip. Outra forma de memória semicondutora é memória flash ( assim denominado devido à velocidade com que pode ser reprogramado). Introduzida pela primeira vez em meados da década de 1980, a memória flash é intermediária entre a EPROM e a EEPROM, tanto em custo quanto em funcionalidade. Como a EEPROM, a memória flash usa uma tecnologia de apagamento elétrico. Uma memória flash inteira pode ser apagada em um ou alguns segundos, o que é muito mais rápido do que a EPROM. Além disso, é possível apagar apenas blocos de memória em vez de um chip inteiro. A memória flash tem esse nome porque o microchip é organizado de forma que uma seção das células da memória seja apagada em uma única ação ou “flash”. No entanto, a memória flash não permite o apagamento em nível de byte. Como a EPROM, a memória flash usa apenas um transistor por bit e, portanto, atinge a alta densidade (em comparação com a EEPROM) da EPROM. Chip Logic Como ocorre com outros produtos de circuito integrado, a memória semicondutora vem em chips embalados (Figura 2.7). Cada chip contém uma série de células de memória. Na hierarquia da memória como um todo, vimos que existem compensações entre velocidade, capacidade e custo. Esses trade-offs também existem quando consideramos a organização 5.1 / MEMÓRIA PRINCIPAL DO SEMICONDUTOR 165 de células de memória e lógica funcional em um chip. Para memórias semicondutoras, um dos principais problemas de design é o número de bits de dados que podem ser lidos / gravados por vez. Em um extremo, está uma organização na qual o arranjo físico das células na matriz é o mesmo que o arranjo lógico (conforme percebido pelo processador) das palavras na memória. A matriz é organizada em W palavras de B bits cada. Por exemplo, um chip de 16 Mbit pode ser organizado como palavras de 16 bits de 1 M. No outro extremo está a chamada organização de 1 bit por chip, na qual os dados são lidos / gravados 1 bit de cada vez. Ilustraremos a organização do chip de memória com uma DRAM; A organização ROM é semelhante, embora mais simples. A Figura 5.3 mostra uma organização típica de uma DRAM de 16 Mbits. Nesse caso, 4 bits são lidos ou gravados por vez. Logicamente, a matriz de memória é organizada como quatro matrizes quadradas de 2.048 por 2.048 elementos. Vários arranjos físicos são possíveis. Em qualquer caso, os elementos da matriz são conectados por linhas horizontais (linha) e verticais (coluna). Cada linha horizontal se conecta ao terminal Select de cada célula em sua linha; cada linha vertical se conecta ao terminal Data-In / Sense de cada célula em sua coluna. As linhas de endereço fornecem o endereço da palavra a ser selecionada. Um total de log 2 W linhas são necessárias. Em nosso exemplo, 11 linhas de endereço são necessárias para selecionar uma das 2048 filas. Essas 11 linhassão alimentadas em um decodificador de linha, que tem 11 linhas de entrada e 2048 linhas de saída. A lógica do decodificador ativa uma única das 2048 saídas dependendo do padrão de bits nas 11 linhas de entrada (2 11 = 2048). Outras 11 linhas de endereço selecionam uma das 2.048 colunas de 4 bits por coluna. Quatro linhas de dados são usadas para a entrada e saída de 4 bits de e para um buffer de dados. Na entrada (escrita), o driver de bit de cada linha de bit é ativado em 1 ou 0 de acordo com o valor da linha de dados correspondente. Na saída (leitura), o valor de cada linha de bits é passado por um amplificador de detecção e apresentado às linhas de dados. A linha da linha seleciona qual linha de células é usada para leitura ou escrita. Como apenas 4 bits são lidos / gravados nesta DRAM, deve haver várias DRAMs conectadas ao controlador de memória para ler / gravar uma palavra de dados no barramento. Observe que há apenas 11 linhas de endereço (A0-A10), metade do número que você esperaria para uma matriz 2048 * 2048. Isso é feito para economizar no número de pinos. As 22 linhas de endereço necessárias são passadas pela lógica de seleção externa ao chip e multiplexadas nas 11 linhas de endereço. Primeiro, 11 sinais de endereço são passados para o chip para definir o endereço de linha da matriz e, em seguida, os outros 11 sinais de endereço são apresentados para o endereço da coluna. Esses sinais são acompanhados por sinais de seleção de endereço de linha (RAS) e seleção de endereço de coluna (CAS) para fornecer temporização ao chip. Os pinos de habilitação de gravação (WE) e habilitação de saída (OE) determinam se uma operação de gravação ou leitura é executada. Dois outros pinos, não mostrados na Figura 5.3, são aterrados (Vss) e uma fonte de tensão (Vcc). Como um aparte, o endereçamento multiplexado mais o uso de matrizes quadradas resultam em uma quadruplicação do tamanho da memória a cada nova geração de chips de memória. Mais um pino dedicado ao endereçamento dobra o número de linhas e colunas e, portanto, o tamanho da memória do chip aumenta 4 vezes. A Figura 5.3 também indica a inclusão de circuitos de atualização. Todos os DRAMs requerem uma operação de atualização. Uma técnica simples de atualização é, com efeito, desativar o chip DRAM enquanto todas as células de dados são atualizadas. O contador de atualização percorre todos os valores de linha. Para cada linha, as linhas de saída do contador de atualização são fornecidas ao decodificador de linha e a linha RAS é ativada. Os dados são lidos e gravados de volta no mesmo local. Isso faz com que cada célula da linha seja atualizada. 166 • • • F ig você ré 5 . 3 UMA 1 0 AA 1 0 • • • T y p ica eu 1 6 M e g uma b isto D R UMA M (4 M b você ffer de Anúncios d ressente C o Lu m n BA ud fd R para novo r ss co você n ter R efresh M você X * 4 ) R UMA S C UMA S W E co d R deo ai credo r T Eu estou dentro g a d co n tro eu • • • (2 0 4 8 2 0 4 8 4 ) M em o ry matriz C o Lu m n d eco d er R O E efresh circu eu tento D b em ua ff o eu r tp você t D b ta você fa fe em rp você t DDDD 4 3 2 1 5.1 / MEMÓRIA PRINCIPAL DO SEMICONDUTOR 167 Embalagem de Chip Como foi mencionado no Capítulo 2, um circuito integrado é montado em um pacote que contém pinos para conexão com o mundo externo. A Figura 5.4a mostra um exemplo de pacote EPROM, que é um chip de 8 Mbit organizado como 1M * 8. Nesse caso, a organização é tratada como um pacote de uma palavra por chip. O pacote inclui 32 pinos, que é um dos tamanhos de pacote de chip padrão. Os pinos suportam as seguintes linhas de sinal: • O endereço da palavra que está sendo acessada. Para 1Mwords, um total de 20 (2 20 pinos são necessários (A0 – A19). • Os dados a serem lidos consistem em 8 linhas (D0 – D7). • A fonte de alimentação para o chip (V cc). • Um pino de aterramento (V ss). • Um pino de habilitação de chip (CE). Como pode haver mais de um chip de memória, cada um deles conectado ao mesmo barramento de endereço, o pino CE é usado para indicar se o endereço é válido ou não para este chip. O pino CE é ativado pela lógica conectada aos bits de ordem superior do barramento de endereço (ou seja, bits de endereço acima de A19). O uso deste sinal é ilustrado atualmente. • Tensão do programa (V pp) que é fornecido durante a programação (operações de gravação). Uma configuração típica de pinos DRAM é mostrada na Figura 5.4b, para um chip de 16 Mbit organizado como 4M * 4. Existem várias diferenças em um chip ROM. Como a RAM pode ser atualizada, os pinos de dados são de entrada / saída. Os pinos de ativação de gravação (WE) e de ativação de saída (OE) indicam se esta é uma operação de gravação ou leitura. = 1M) A19 A16 A15 A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 Vss 1 2 3 4 5 6 7 8 9 Mergulho de 32 pinos 24 10 23 11 22 12 21 13 20 14 19 15 18 32 31 30 29 28 27 26 25 Vcc A18 A17 A14 A13 A8 A9 A11 Vpp A10 CE D7 D6 D5 D4 D3 Vcc D0 D1 NÓS RAS NC A10 A0 A1 A2 A3 Vcc 1 2 3 4 5 6 Imersão de 24 pinos 19 7 0,6 " 18 8 17 9 16 10 15 11 14 24 23 22 21 20 Vss D3 D2 CAS OE A9 A8 A7 A6 A5 A4 Vss 0,6 " 12 Vista do topo 13 16 Vista do topo 17 (a) EPROM de 8 Mbit (b) DRAM de 16 Mbits Figura 5.4 Pinos e sinais típicos do pacote de memória 168 CAPÍTULO 5 / MEMÓRIA INTERNA Como a DRAM é acessada por linha e coluna, e o endereço é multiplexado, apenas 11 pinos de endereço são necessários para especificar as combinações de linha / coluna de 4 milhões (2 11 = 4M). As funções de seleção de endereço de linha (RAS) e coluna pinos de seleção de endereço (CAS) foram discutidos anteriormente. Finalmente, o pino sem conexão (NC) é fornecido para que haja um número par de pinos. * 2 11 = 2 22 Organização do Módulo Se um chip de RAM contém apenas 1 bit por palavra, é claro que precisaremos de pelo menos um número de chips igual ao número de bits por palavra. Como exemplo, a Figura 5.5 mostra como um módulo de memória consistindo de 256K palavras de 8 bits pode ser organizado. Para palavras de 256K, um endereço de 18 bits é necessário e fornecido ao módulo de alguma fonte externa (por exemplo, as linhas de endereço de um barramento ao qual o módulo está conectado). O endereço é apresentado a 8256K * chips de 1 bit, cada um dos quais fornece a entrada / saída de 1 bit. 512 palavras por 512 bits Chip # 1 Endereço de memória registrar (MBR) • • • 9 Decodificar 1 de 512 bit-sense • • • Buffer de memória registrar (MBR) 1 2 3 4 5 6 7 8 9 • • • 512 palavras por 512 bits Chip # 8 Decodificar 1 de 512 bit-sense Figura 5.5 Organização de memória de 256 KByte D e c o d if ic a r 1 d e 5 1 2 D e c o d if ic a r 1 d e 5 1 2 5.1 / MEMÓRIA PRINCIPAL DO SEMICONDUTOR 169 Memória endereço registro (MAR) A1 B1 C1 D1 Memória amortecedor registro (MBR) 1 2 9 1/512 1/512 E E E E Bit 1 9 A2 B2 Todos os chips 512 palavras por 512 bits. Células 2 terminais 2 A7 1/512 7 8 B7 C7 D7 Grupo UMA B C D E Lasca grupo habilitar Selecione 1 de 4 grupos A8 B8 C8 D8 1/512 1/512 E E E E Bit 8 Figura 5.6 Organização de Memória de 1 Mbyte Essa organização funciona desde que o tamanho da memória seja igual ao número de bits por chip. No caso em que uma memória maior é necessária, uma série de chips é necessária. A Figura 5.6 mostra a possível organização de uma memória consistindo de 1M word por 8 bits por word. Nesse caso, temos quatro colunas de chips, cada coluna contendo 256K palavras organizadas como na Figura 5.5. Para palavras de 1 milhão, são necessárias 20 linhas de endereço. Os 18 bits menos significativos são roteados para todos os 32 módulos. Os 2 bits de alta ordem são inseridos em um módulo de lógica de seleção de grupo que envia um sinal de habilitaçãode chip para uma das quatro colunas de módulos. Simulador de memória intercalada Memória intercalada A memória principal é composta por uma coleção de chips de memória DRAM. Vários chips podem ser agrupados para formar um banco de memória. É possível organizar os bancos de memória de uma forma conhecida como memória intercalada. Cada banco é capaz de atender independentemente uma solicitação de leitura ou gravação de memória, de modo que um sistema com K bancos podem atender K solicitações simultaneamente, aumentando as taxas de leitura ou gravação de memória por um fator de K. Se palavras consecutivas de memória forem armazenadas em bancos diferentes, a transferência de um bloco de memória será acelerada. O Apêndice E explora o tópico da memória intercalada. 1 / 5 1 2 1 / 5 1 2 1 / 5 1 2 170 CAPÍTULO 5 / MEMÓRIA INTERNA 5.2 CORREÇÃO DE ERRO Um sistema de memória semicondutor está sujeito a erros. Eles podem ser categorizados como falhas graves e erros leves. UMA falha difícil é um defeito físico permanente, de modo que a célula ou células de memória afetadas não podem armazenar dados de forma confiável, mas ficam presas em 0 ou 1 ou alternam erraticamente entre 0 e 1. Erros graves podem ser causados por agressões ambientais, defeitos de fabricação e desgaste. UMA erro suave é um evento aleatório e não destrutivo que altera o conteúdo de uma ou mais células de memória sem danificar a memória. Erros de software podem ser causados por problemas de alimentação ou partículas alfa. Essas partículas resultam do decaimento radioativo e são terrivelmente comuns porque os núcleos radioativos são encontrados em pequenas quantidades em quase todos os materiais. Ambos os erros de hardware e software são claramente indesejáveis e a maioria dos sistemas de memória principal modernos incluem lógica para detectar e corrigir erros. A Figura 5.7 ilustra em termos gerais como o processo é realizado. Quando os dados devem ser gravados na memória, um cálculo, descrito como uma função f, é executado nos dados para produzir um código. Tanto o código quanto os dados são armazenados. Assim, se um M- palavra de bits de dados deve ser armazenada e o código tem comprimento K bits, então o tamanho real da palavra armazenada é M + K bits. Quando a palavra armazenada anteriormente é lida, o código é usado para detectar e possivelmente corrigir erros. Um novo conjunto de K bits de código são gerados a partir do M bits de dados e comparados com os bits de código buscados. A comparação produz um de três resultados: • Nenhum erro é detectado. Os bits de dados buscados são enviados. • Um erro é detectado e é possível corrigir o erro. Os bits de dados mais correção de erros bits são alimentados em um corretor, que produz um conjunto corrigido de M bits a serem enviados. • Foi detectado um erro, mas não é possível corrigi-lo. Esta condição é relatada. Os códigos que operam desta forma são referidos como códigos de correção de erros. Um código é caracterizado pelo número de erros de bits em uma palavra que ele pode corrigir e detectar. Sinal de erro Dados para fora M Corretor Dados em M M K f K Memória K Comparar f Figura 5.7 Função de código de correção de erros 5.2 / CORREÇÃO DE ERRO 171 (uma) UMA B (b) 1 1 1 0 1 1 1 0 1 0 0 C (c) (d) 1 1 0 1 1 0 1 1 0 0 0 0 0 0 Figura 5.8 Código de correção de erros de Hamming O mais simples dos códigos de correção de erros é o Código de Hamming desenvolvido por Richard Hamming no Bell Laboratories. A Figura 5.8 usa diagramas de Venn para ilustrar o uso deste código em palavras de 4 bits ( M = 4). Com três círculos que se cruzam, existem sete compartimentos. Atribuímos os 4 bits de dados aos compartimentos internos (Figura 5.8a). Os compartimentos restantes são preenchidos com os chamados bits de paridade. Cada bit de paridade é escolhido de forma que o número total de 1s em seu círculo seja par (Figura 5.8b). Assim, como o círculo A inclui três dados 1s, o bit de paridade nesse círculo é definido como 1. Agora, se um erro alterar um dos bits de dados (Figura 5.8c), ele será facilmente encontrado. Ao verificar os bits de paridade, as discrepâncias são encontradas no círculo A e no círculo C, mas não no círculo B. Apenas um dos sete compartimentos está em A e C, mas não em B. O erro pode, portanto, ser corrigido mudando esse bit. Para esclarecer os conceitos envolvidos, desenvolveremos um código que pode detectar e corrigir erros de bit único em palavras de 8 bits. Para começar, vamos determinar quanto tempo o código deve ter. Referindo-se à Figura 5.7, a lógica de comparação recebe como entrada dois K- valores de bits. Uma comparação bit a bit é feita tomando o OR exclusivo das duas entradas. O resultado é chamado de palavra síndrome. Assim, cada bit do síndrome é 0 ou 1 de acordo com se há ou não correspondência nessa posição de bit para as duas entradas. A palavra síndrome é, portanto, K bits de largura e tem um intervalo entre 0 e - 1. O valor 0 indica que nenhum erro foi detectado, restando 2 K - 1 valor para2 K indique, se houver um erro, qual bit estava com erro. Agora, porque um erro pode ocorrer em qualquer um dos M bits de dados ou K verifique os bits, devemos ter 2 K - 1 VOCÊ M + K 172 CAPÍTULO 5 / MEMÓRIA INTERNA Tabela 5.2 Aumento no comprimento da palavra com correção de erro Correção de erro único / Detecção de duplo erroCorreção de Erro Único Bits de dados 8 16 32 64 128 256 Verificar bits 4 5 6 7 8 9 % Aumentar 50 31,25 18,75 10,94 6,25 3,52 Verificar bits 5 6 7 8 9 10 % Aumentar 62,5 37,5 21.875 12,5 7,03 3,91 Esta desigualdade dá o número de bits necessários para corrigir um único erro de bit em uma palavra contendo M bits de dados. Por exemplo, para uma palavra de 8 bits de dados ( M = 8), nós temos • K = 3: 2 3 • K = 4: 2 4 Assim, oito bits de dados requerem quatro bits de verificação. As primeiras três colunas da Tabela 5.2 relacionam o número de bits de verificação necessários para vários comprimentos de palavra de dados. Por conveniência, gostaríamos de gerar uma síndrome de 4 bits para uma palavra de dados de 8 bits com as seguintes características: • Se a síndrome contém todos os 0s, nenhum erro foi detectado. • Se a síndrome contém um e apenas um bit definido como 1, então ocorreu um erro em um dos 4 bits de verificação. Nenhuma correção é necessária. • Se a síndrome contiver mais de um bit definido como 1, o valor numérico da síndrome indica a posição do bit de dados com erro. Este bit de dados é invertido para correção. Para atingir essas características, os dados e bits de verificação são organizados em uma palavra de 12 bits, conforme ilustrado na Figura 5.9. As posições de bit são numeradas de 1 a 12. As posições de bit cujos números de posição são potências de 2 são designadas como bits de verificação. Os bits de verificação são calculados da seguinte forma, onde o símbolo {designa a operação OU exclusiva: C1 = D1 {D2 { C2 = D1 { C4 = C8 = - 1 6 8 + 3 - 1 7 8 + 4 D4 {D5 { D3 {D4 { D2 {D3 {D4 { D7 D6 {D7 D8 D5 {D6 {D7 {D8 Mordeu posição Posição número Bit de dados Verificar bit 12 11 10 9 8 7 6 5 4 3 2 1 1100 D8 1011 D7 1010 D6 1001 D5 1000 0111 D4 0110 D3 0101 D2 0100 0011 D1 0010 0001 C8 C4 C2 C1 Figura 5.9 Layout de bits de dados e bits de verificação 5.2 / CORREÇÃO DE ERRO 173 Cada bit de verificação opera em cada bit de dados cujo número de posição contém 1 na mesma posição do bit que o número de posição desse bit de verificação. Assim, as posições de bit de dados 3, 5, 7, 9 e 11 (D1, D2, D4, D5, D7) contêm um 1 no bit menos significativo de seu número de posição, assim como C1; as posições de bit 3, 6, 7, 10 e 11 contêm um 1 na segunda posição de bit, assim como C2; e assim por diante. Visto de outra forma, posição da broca n é verificado por aqueles bits C Eu de tal modo que g i = n. Por exemplo, a posição 7 é verificadapor bits nas posições 4, 2 e 1; e 7 = 4 + 2 + 1. Vamos verificar se esse esquema funciona com um exemplo. Suponha que a palavra de entrada de 8 bits seja 00111001, com o bit de dados D1 na posição mais à direita. Os cálculos são os seguintes: C1 = 1 {0 {1 {1 {0 = 1 C2 = 1 {0 {1 {1 {0 = 1 C4 = 0 {0 {1 {0 = 1 C8 = 1 {1 {0 {0 = 0 Suponha agora que o bit de dados 3 sustenta um erro e é alterado de 0 para 1. Quando os bits de verificação são recalculados, temos C1 = 1 {0 {1 {1 {0 = 1 C2 = 1 {1 {1 {1 {0 = 0 C4 = 0 {1 {1 {0 = 0 C8 = 1 {1 {0 {0 = 0 Quando os novos bits de verificação são comparados com os bits de verificação antigos, a palavra da síndrome é formada: C8 C4 C2 C1 0 1 1 1 0 0 1 1 1 0 { 0 0 O resultado é 0110, indicando que a posição do bit 6, que contém o bit de dados 3, está com erro. A Figura 5.10 ilustra o cálculo anterior. Os bits de dados e verificação são posicionados corretamente na palavra de 12 bits. Quatro dos bits de dados têm um valor 1 (sombreado na tabela), e seus valores de posição de bit são XORed para produzir o código de Hamming 0111, que forma os quatro dígitos de verificação. Todo o bloco armazenado é Mordeu posição Posição número Bit de dados Verificar bit Palavra armazenado como Palavra buscado como Posição número Verificar bit 12 11 10 9 8 7 6 5 4 3 2 1 1100 D8 1011 D7 1010 D6 1001 D5 1000 0111 D4 0110 D3 0101 D2 0100 0011 D1 0010 0001 C8 0 C4 1 C2 1 C1 10 0 1 1 1 0 0 1 0 1100 0 1011 1 1010 1 1001 0 1000 0 1 0111 1 0110 0 0101 1 0100 0 1 0011 1 0010 0 1 0001 1 Figura 5.10 Verificar cálculo de bits 174 CAPÍTULO 5 / MEMÓRIA INTERNA (uma) (b) (c) 0 1 0 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 1 (d) (e) (f) 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 Figura 5.11 Código de Hamming SEC-DEC 001101001111. Suponha agora que o bit de dados 3, na posição de bit 6, sustenta um erro e é alterado de 0 para 1. O bloco resultante é 001101101111, com um código de Hamming de 0111. Um XOR do código de Hamming e todos os valores de posição de bit para bits de dados diferentes de zero resulta em 0110. O resultado diferente de zero detecta um erro e indica que o erro está na posição de bit 6. O código que acabamos de descrever é conhecido como um código de correção de erro único (SEC). Mais comumente, a memória semicondutora é equipada com um código de correção de erro único e detecção de erro duplo (SEC-DED). Como mostra a Tabela 5.2, esses códigos requerem um bit adicional em comparação com os códigos SEC. A Figura 5.11 ilustra como esse código funciona, novamente com uma palavra de dados de 4 bits. A sequência mostra que, se dois erros ocorrerem (Figura 5.11c), o procedimento de verificação se extraviará (d) e piorará o problema, criando um terceiro erro (e). Para superar o problema, um oitavo bit é adicionado, definido de forma que o número total de 1s no diagrama seja par. O bit de paridade extra captura o erro (f). Um código de correção de erros aumenta a confiabilidade da memória ao custo de complexidade adicional. Com uma organização de 1 bit por chip, um código SEC-DED é geralmente considerado adequado. Por exemplo, as implementações IBM 30xx usaram um código SECDED de 8 bits para cada 64 bits de dados na memória principal. Assim, o tamanho da memória principal é na verdade cerca de 12% maior do que o aparente para o usuário. Os computadores VAX usaram um SEC-DED de 7 bits para cada 32 bits de memória, para um overhead de 22%. Uma série de DRAMs contemporâneos usam 9 bits de verificação para cada 128 bits de dados, para uma sobrecarga de 7% [SHAR97]. 5.3 ORGANIZAÇÃO DE DRAM AVANÇADA Conforme discutido no Capítulo 2, um dos gargalos mais críticos do sistema ao usar processadores de alto desempenho é a interface para a memória interna principal. Essa interface é o caminho mais importante em todo o sistema de computador. O bloco de construção básico da memória principal continua sendo o chip DRAM, como tem feito há décadas; até 5.3 / ORGANIZAÇÃO DE DRAM AVANÇADA 175 Tabela 5.3 Comparação de desempenho de algumas alternativas DRAMA Freqüência do Relógio (MHz) 166 200 600 Taxa de transferência (GB / s) 1,3 3,2 4,8 Tempo de acesso (ns) 18 12,5 12 Contagem de alfinetes 168 184 162 SDRAM DDR RDRAM recentemente, não houve mudanças significativas na arquitetura DRAM desde o início dos anos 1970. O chip DRAM tradicional é limitado tanto por sua arquitetura interna quanto por sua interface com o barramento de memória do processador. Vimos que um ataque ao problema de desempenho da memória principal DRAM foi inserir um ou mais níveis de cache SRAM de alta velocidade entre a memória principal DRAM e o processador. Mas SRAM é muito mais caro do que DRAM, e expandir o tamanho do cache além de um certo ponto produz retornos decrescentes. Nos últimos anos, várias melhorias na arquitetura DRAM básica foram exploradas e algumas delas já estão no mercado. Os esquemas que atualmente dominam o mercado são SDRAM, DDR-DRAM e RDRAM. A Tabela 5.3 fornece uma comparação de desempenho. CDRAM também recebeu atenção considerável. Examinamos cada uma dessas abordagens nesta seção. DRAM síncrona Uma das formas mais utilizadas de DRAM é a DRAM síncrona (SDRAM) [ VOGL94]. Ao contrário da DRAM tradicional, que é assíncrona, a SDRAM troca dados com o processador sincronizado com um sinal de relógio externo e funcionando na velocidade total do barramento processador / memória sem impor estados de espera. Em uma DRAM típica, o processador apresenta endereços e níveis de controle para a memória, indicando que um conjunto de dados em um local específico na memória deve ser lido ou gravado na DRAM. Após um atraso, o tempo de acesso, a DRAM grava ou lê os dados. Durante o atraso de tempo de acesso, a DRAM executa várias funções internas, como ativar a alta capacitância das linhas de linha e coluna, detectar os dados e encaminhar os dados para fora dos buffers de saída. O processador deve simplesmente aguardar esse atraso, reduzindo o desempenho do sistema. Com o acesso síncrono, o DRAM move os dados para dentro e para fora sob o controle do relógio do sistema. O processador ou outro mestre emite a instrução e as informações de endereço, que são travadas pela DRAM. A DRAM então responde após um determinado número de ciclos de clock. Enquanto isso, o mestre pode realizar outras tarefas com segurança enquanto a SDRAM está processando a solicitação. A Figura 5.12 mostra a lógica interna do SDRAM de 64 Mb da IBM [IBM01], que é típico da organização SDRAM, e a Tabela 5.4 define as várias atribuições de pinos. O SDRAM emprega um modo burst para eliminar o tempo de configuração de endereço e o tempo de pré-carga de linha e coluna após o primeiro acesso. No modo burst, uma série de 176 F ig você ré 5 . 1 2 C eu K C K E AAAA 1 1 1 1 AAAAAAAAAA 0 3 2 1 9 8 7 6 5 4 3 2 1 0 C eu K b você ffer C K E b você ffer S y n CH ro n o você s D y n uma m ic R UMA M (S D R UMA M ) WCRAAC ESSS S en se uma m p S en se uma m p C o Lu m n d eco d er m (e2 m C DM R oe rlbylUMA uma M brar 8 na ) ky 2 C o Lu m n d eco d er m (e2 m C D Mo e R A b yr ll uma M brar 8 na ) ky 0 lifiers lifiers S en se uma m p C o Lu m n d eco d er S en se uma m p m (e2 m C DM R oe rlbylUMA uma M brar 8 na ) ky 3 m (e2 m C D Mo e R A b yr ll uma M brar 8 na ) ky 1 C o Lu m n d eco d er lifiers lifiers D Q M RM CR C UMA C R M c oo du en t ré er g ister C o Lu m n de Anúncios d ressente efresh co você n ter DDDDDDDD QQQQQQQQ 7 6 5 4 3 2 1 0 R o W d ec o d er R o W d ec o d er C e o c m e a rnd o d m d C UM A C R C M R D um a ta I / O b vo c ê D um a ta c o n tro eu c ir c u e u t e n to g en s e io rg n fo rm ig a a lc a tr ã o o lo r e uC ff e rs U M A d d re s s e n te b vo c ê ff e rs(1 4 ) R o W d ec o d er R o W d ec o d er 5.3 / ORGANIZAÇÃO DE DRAM AVANÇADA 177 Tabela 5.4 Atribuições de PIN SDRAM A0 a A13 CLK CKE CS RAS CAS NÓS DQ0 a DQ7 DQM Entradas de endereço Entrada de relógio Habilitar relógio Chip select Estroboscópio de endereço de linha Strobe de endereço de coluna Habilitar gravação Entrada / saída de dados Máscara de dados bits de dados podem ser sincronizados rapidamente após o primeiro bit ter sido acessado. Este modo é útil quando todos os bits a serem acessados estão em sequência e na mesma linha do array que o acesso inicial. Além disso, a SDRAM tem uma arquitetura interna de vários bancos que melhora as oportunidades de paralelismo no chip. O registro de modo e a lógica de controle associada é outro recurso importante que diferencia SDRAMs de DRAMs convencionais. Ele fornece um mecanismo para personalizar o SDRAM para atender às necessidades específicas do sistema. O registrador de modo especifica o comprimento do burst, que é o número de unidades separadas de dados alimentados de forma síncrona no barramento. O registro também permite que o programador ajuste a latência entre o recebimento de uma solicitação de leitura e o início da transferência de dados. O SDRAM tem melhor desempenho quando está transferindo grandes blocos de dados em série, como para aplicativos como processamento de texto, planilhas e multimídia. A Figura 5.13 mostra um exemplo de operação SDRAM. Nesse caso, o comprimento da rajada é 4 e a latência é 2. O comando de leitura da rajada é iniciado tendo CS e CAS baixo enquanto mantém RAS e WE alto na borda ascendente do clock. As entradas de endereço determinam o endereço da coluna inicial para o burst, e o registrador de modo define o tipo de burst (sequencial ou intercalado) e o comprimento do burst (1, 2, 4, 8, página inteira). O atraso do início do comando até o momento em que os dados da primeira célula aparecem nas saídas é igual ao valor da latência CAS que é configurada no registrador de modo. T0 T1 T2 T3 T4 T5 T6 T7 T8 CLK COMMAND READA NOP NOP NOP NOP NOP NOP NOP NOP DQs DOUTA 0 DOUTA 1 DOUTA 2 DOUTA 3 Figura 5.13 SDRAMRead Timing (comprimento de burst = 4, latência CAS = 2) 178 CAPÍTULO 5 / MEMÓRIA INTERNA Agora existe uma versão aprimorada de SDRAM, conhecida como SDRAM de taxa de dados dupla (DDR-SDRAM), que supera a limitação de uma vez por ciclo. DDRSDRAM pode enviar dados ao processador duas vezes por ciclo de clock. Rambus DRAM O RDRAM, desenvolvido pela Rambus [FARM92, CRIS97], foi adotado pela Intel para seus processadores Pentium e Itanium. Tornou-se o principal concorrente da SDRAM. Os chips RDRAM são pacotes verticais, com todos os pinos de um lado. O chip troca dados com o processador em 28 fios com não mais de 12 centímetros de comprimento. O barramento pode endereçar até 320 chips RDRAM e é avaliado em 1,6 GBps. O barramento RDRAM especial fornece informações de endereço e controle usando um protocolo orientado a bloco assíncrono. Após um tempo de acesso inicial de 480 ns, isso produz a taxa de dados de 1,6 GBps. O que torna essa velocidade possível é o próprio barramento, que define impedâncias, temporização e sinais com muita precisão. Em vez de ser controlado pelos sinais explícitos RAS, CAS, R / W e CE usados em DRAMs convencionais, um RDRAM obtém uma solicitação de memória pelo barramento de alta velocidade. Essa solicitação contém o endereço desejado, o tipo de operação e o número de bytes na operação. A Figura 5.14 ilustra o layout RDRAM. A configuração consiste em um controlador e vários módulos RDRAM conectados por meio de um barramento comum. O controlador está em uma extremidade da configuração e a extremidade oposta do barramento é uma terminação paralela das linhas de barramento. O barramento inclui 18 linhas de dados (16 dados reais, duas paridades) girando em duas vezes a taxa de clock; ou seja, 1 bit é enviado na borda anterior e posterior de cada sinal de clock. Isso resulta em uma taxa de sinal em cada linha de dados de 800 Mbps. Há um conjunto separado de 8 linhas (RC) usado para sinais de endereço e controle. Há também um sinal de clock que começa na extremidade do controlador, se propaga para a extremidade do controlador e, em seguida, retorna ao loop. Um módulo RDRAM envia dados para o controlador de forma síncrona com o relógio para o mestre, e o controlador envia dados para um RDRAM em sincronia com o sinal do relógio na direção oposta. As linhas de barramento restantes incluem uma tensão de referência, aterramento e fonte de alimentação. Controlador RDRAM 1 RDRAM 2 • • • RDRAM n Vterm INITo • • • INICIAR Dados de ônibus [18: 0] RC [7: 0] RClk [2] TClk [2] Vref Gnd (32/18) Vd (4) Figura 5.14 Estrutura RDRAM 5.3 / ORGANIZAÇÃO DE DRAM AVANÇADA 179 DDR SDRAM A SDRAM é limitada pelo fato de que só pode enviar dados ao processador uma vez por ciclo de clock do barramento. Uma nova versão de SDRAM, conhecida como SDRAM de taxa de dados dupla, pode enviar dados duas vezes por ciclo de clock, uma na borda ascendente do pulso de clock e outra na borda descendente. O DDR DRAM foi desenvolvido pela JEDEC Solid State Technology Association, o órgão de padronização de engenharia de semicondutores da Electronic Industries Alliance. Inúmeras empresas fabricam chips DDR, amplamente usados em computadores desktop e servidores. A Figura 5.15 mostra o tempo básico para uma leitura DDR. A transferência de dados é sincronizada com a borda ascendente e descendente do relógio. Ele também é sincronizado com um sinal de strobe bidirecional de dados (DQS) que é fornecido pelo controlador de memória durante uma leitura e pela DRAM durante uma gravação. Em implementações típicas, o Relógio RAS CAS Linha endereço Coluna endereço Endereço DQ Valid Valid Valid Valid data data data data DQS RAS = Seleção de endereço de linha CAS = Seleção de endereço de coluna DQ = Dados (entrada ou saída) DQS = DQ select Figura 5.15 DDR SDRAMRoad Timing 180 CAPÍTULO 5 / MEMÓRIA INTERNA DQS é ignorado durante a leitura. Uma explicação do uso de DQS em gravações está além do nosso escopo; veja [JACO08] para detalhes. Houve duas gerações de melhorias na tecnologia DDR. O DDR2 aumenta a taxa de transferência de dados aumentando a frequência operacional do chip RAM e aumentando o buffer de pré-busca de 2 bits para 4 bits por chip. O buffer de pré-busca é um cache de memória localizado no chip de RAM. O buffer permite que o chip RAM preposicione bits a serem colocados no barramento de dados o mais rápido possível. O DDR3, lançado em 2007, aumenta o tamanho do buffer de pré-busca para 8 bits. Teoricamente, um módulo DDR pode transferir dados a uma taxa de clock na faixa de 200 a 600 MHz; um módulo DDR2 é transferido a uma taxa de clock de 400 a 1066 MHz; e um módulo DDR3 transfere a uma taxa de clock de 800 a 1600 MHz. Na prática, taxas um pouco menores são alcançadas. O Apêndice K fornece mais detalhes sobre a tecnologia DDR. Cache DRAM Cache DRAM (CDRAM), desenvolvido pela Mitsubishi [HIDA90, ZHAN01], integra um pequeno cache SRAM (16 Kb) em um chip DRAM genérico. A SRAM no CDRAM pode ser usada de duas maneiras. Primeiro, ele pode ser usado como um cache verdadeiro, consistindo em várias linhas de 64 bits. O modo cache do CDRAM é eficaz para acesso aleatório comum à memória. A SRAM no CDRAM também pode ser usada como um buffer para suportar o acesso serial de um bloco de dados. Por exemplo, para atualizar uma tela de bitmap, o CDRAM pode pré-buscar os dados da DRAM no buffer SRAM. Os acessos subsequentes ao chip resultam em acessos apenas à SRAM. 5.4 LEITURA RECOMENDADA [PRIN97] fornece um tratamento abrangente de tecnologias de memória de semicondutor, incluindo SRAM, DRAM e memórias flash. [SHAR97] cobre o mesmo material, com mais ênfase em questões de teste e confiabilidade. [SHAR03] e [PRIN02] se concentram em arquiteturas DRAM e SRAMavançadas. Para uma análise aprofundada da DRAM, consulte [JACO08] e [KEET01]. [CUPP01] fornece uma comparação de desempenho interessante de vários esquemas de DRAM. [BEZ03] é uma introdução abrangente à tecnologia de memória flash. Uma boa explicação dos códigos de correção de erros está contida em [MCEL85]. Para um estudo mais aprofundado, tratamentos de duração de livro que valem a pena são [ADAM91] e [BLAH83]. Um tratamento teórico e matemático legível de códigos de correção de erros é [ASH90]. [SHAR97] contém um bom levantamento dos códigos usados nas principais memórias contemporâneas. ADAM91 Adamek, J. Fundamentos da codificação. Nova York: Wiley, 1991. ASH90 Ash, R. Teoria da Informação. Nova York: Dover, 1990. BEZ03 Bez, R .; et al. Introdução à memória Flash. Processos do IEEE, Abril de 2003. BLAH83 Blahut, R. Teoria e prática dos códigos de controle de erros. Lendo, MA: Addison-Wesley, 1983.
Compartilhar