aula 4 - mem pcp - 26mar10 - ricardobarcelar.com.br · a. código de hamming (ou distância de...

12
ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br 1 - Aula 4 - MEMÓRIA PRINCIPAL 1. INTRODUÇÃO O papel do processador é pegar os dados, processá-los conforme uma pré-programação e devolvê-los, não importando de onde vêm ou para vão. Por não existir uma área interna de armazenamento muito grande, o processador busca programas de uma área, genericamente chamada memória. 2. MEMÓRIA PRINCIPAL A memória é a parte do computador onde os programas e os dados são armazenados. Sem uma memória na qual os processadores possam ler ou escrever informações, o conceito de computador digital com programa armazenado não pode ser implementado. É um tipo de memória razoavelmente barata. Seu tempo de acesso está na ordem dos nanosegundos, porém mais lenta que os registradores. Possui uma freqüência muito alta, é volátil e qualquer posição pode ser acessada com o mesmo tempo de acesso. 2.1. Bits A unidade básica de memória é o digito binário, conhecido como bit, que pode ter o valor 1 ou 0. Para que seja possível implementar um sistema de memória é necessário um mínimo de dois valores, para que se possam armazenar informações diferentes. Os computadores usam a aritmética binária por causa de sua eficiência; isso significa que um sistema de armazenamento de informação digital é baseado na distinção entre valores diferentes de alguma grandeza física, como corrente ou tensão. O método de codificação em binário é o mais confiável, pois há necessidade de identificar somente dois números. Porém, nem todos os computadores utilizam o sistema de codificação binário; alguns computadores, como os mainframes da IBM utilizam a aritmética decimal. Na verdade, as operações decimais são possíveis porque nessas máquinas os dígitos decimais são armazenados segundo um código de quatro bits chamado código BCD (Binary Coded Decimal 1 ) 1 Decimal Codificado em Binário 2 Palavras ou Words: Podem ser consideradas seqüências de células. Os registradores são do tamanho das

Upload: dinhkien

Post on 05-Jan-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 1  

 

- Aula 4 -

MEMÓRIA PRINCIPAL

1. INTRODUÇÃO

O papel do processador é pegar os dados, processá-los conforme uma pré-programação

e devolvê-los, não importando de onde vêm ou para vão. Por não existir uma área interna de

armazenamento muito grande, o processador busca programas de uma área, genericamente

chamada memória.

2. MEMÓRIA PRINCIPAL

A memória é a parte do computador onde os programas e os dados são armazenados.

Sem uma memória na qual os processadores possam ler ou escrever informações, o conceito de

computador digital com programa armazenado não pode ser implementado.

É um tipo de memória razoavelmente barata. Seu tempo de acesso está na ordem dos

nanosegundos, porém mais lenta que os registradores. Possui uma freqüência muito alta, é

volátil e qualquer posição pode ser acessada com o mesmo tempo de acesso.

2.1. Bits

A unidade básica de memória é o digito binário, conhecido como bit, que pode ter o

valor 1 ou 0. Para que seja possível implementar um sistema de memória é necessário um

mínimo de dois valores, para que se possam armazenar informações diferentes.

Os computadores usam a aritmética binária por causa de sua eficiência; isso significa

que um sistema de armazenamento de informação digital é baseado na distinção entre valores

diferentes de alguma grandeza física, como corrente ou tensão. O método de codificação em

binário é o mais confiável, pois há necessidade de identificar somente dois números.

Porém, nem todos os computadores utilizam o sistema de codificação binário; alguns

computadores, como os mainframes da IBM utilizam a aritmética decimal. Na verdade, as

operações decimais são possíveis porque nessas máquinas os dígitos decimais são armazenados

segundo um código de quatro bits chamado código BCD (Binary Coded Decimal1)

                                                                                                                         1  Decimal  Codificado  em  Binário  

2  Palavras  ou  Words:  Podem  ser  consideradas  seqüências  de  células.  Os  registradores  são  do  tamanho  das  

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 2  

 

2.2. Endereços de Memória

A memória é formada por um conjunto de células (ou posições), cada uma das quais

podendo guardar uma informação. Cada célula tem um número associado a ela, número esse

conhecido como endereço da célula. É por meio desse número que os programas podem

referenciar a célula. Todas as células de uma memória dispõem do mesmo número de bits.

A célula é a menor unidade endereçável em um computador. Atualmente, a

maioria dos fabricantes de computadores padronizou o tamanho da célula em 8 bits, chamando

essa célula de Byte. Os bytes são palavras2 e a maioria das instruções de uma máquina

opera sobre palavras. Um computador com uma palavra de 32 bits tem 4 bytes/palavra e

com palavra de 64 bits tem 8 bytes/palavra.

Uma instrução de soma muito provavelmente vai somar dois valores de 32 bits.

Portanto, uma máquina de 32 bits deverá ter registradores e instruções para tratar palavras de

32 bits. O mesmo ocorrerá caso a máquina seja de 64 bits.

 Figura  1  -­‐  Memória

Ø Elemento a ser manipulado: bit (armazena a informação na forma de bits)

Ø Unidade de informação a ser armazenada, recuperada ou transferida (célula) - Grupo de

n bits (n = 8) ⇒ 1 Byte

Ø ENDEREÇO: código de identificação da localização das células (informações).

                                                                                                                         2  Palavras  ou  Words:  Podem  ser  consideradas  seqüências  de  células.  Os  registradores  são  do  tamanho  das  palavras.  

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 3  

 

2.3. Ordenação dos Bytes

Na criação dos computadores surgiram duas arquiteturas diferentes para tratamento de

armazenamento de memória baseados na ordenação dos bytes. Os bytes de uma palavra

podem ser numerados da esquerda para a direita ou da direita para a esquerda. Quando a

numeração dos bytes começa da esquerda para a direita da palavra, a ordenação dos bytes é

dita Big Endian. Quando a numeração dos bytes começa da direita para a esquerda da

palavra, a ordenação dos bytes é dita Little Endian.

O Windows NT, por exemplo, foi criado em torno de arquitetura little endian e não foi

projetado para ser compatível com big endian , pois a maioria dos programas são escritos com

alguma dependência em little endian.

Os termos Big Endian (maior valor primeiro) e Little Endian (menor valor primeiro)

foram inseridos no jargão da computação por um artigo publicado em 1981, citando o problema

e relacionando-o a um episódio mencionado no livro As Viagens de Gulliver – povo que foi à

guerra para decidir qual a melhor maneira de quebrar ovos, se pelo maior (big) lado ou se pelo

menor (little) lado.

Na ordenação Big Endian os bytes são numerados da esquerda para a direita (0, 1,

2,..., n-1) e é usado por sistemas Unix (arquiteturas SPARC, IBM Mainframe).

Exemplo numérico com 2 bytes:

0305H = 00000011 00000101

Na ordenação Little Endian os bytes são numerados da direita para esquerda (n-1, ...,

2, 1, 0) e é usado por IBM PCs (arquiteturas INTEL).

Exemplo numérico com 2 bytes:

0305H = 00000101 00000011

Outro Exemplo:

Um Computador com:

- Memória com células de 1 byte;

- Palavra de 32 bits;

- Número 266: 00000000 00000000 00000001 00001010;

- Armazenado na memória a partir da célula de endereço 0 (ocupa células de endereço

0, 1, 2, e 3);

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 4  

 

 Figura  2  -­‐  Ordenação  dos  bytes

2.3.1. Problemas causados pela falta de padronização do armazenamento em

memória:

- Interpretação de instruções e dados em redes;

- Softwares que rodam em várias plataformas devem tratar essas diferenças;

- Uso de plataformas de palavras de diferentes tamanhos;

Importante:

A solução para o problema não é trivial, em geral se baseia em inversão dos bytes. Isto

funciona para valores numéricos, mas não para cadeias de caracteres.

2.4. Códigos de correção

Os dados armazenados na memória dos computadores podem ocasionalmente ser

alterados em razão de oscilações na tensão de alimentação ou de outras causas. Para se

prevenir contra esses tipos de erro, algumas memórias armazenam as informações usando um

código que permita a correção ou a detecção de erros. Quando esses códigos são usados, há

necessidade de se acrescentarem bits extras a cada palavra de memória, de modo a permitir a

verificação da exatidão da informação armazenada. Quando uma palavra é lida da memória, os

bits armazenados permitem verificar a ocorrência eventual de erros que tenham corrompido a

informação armazenada.

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 5  

 

 Figura  3  -­‐  Processo  Básico  de  Detecção/Correção  de  Erros

 

Dentre os diversos código ou algoritmos de correção de erros estão:

a. Código de Hamming (ou distância de Hamming): O número de bits correspondentes que

diferem em duas palavras de códigos quaisquer. As propriedades de detecção de erros e de

correção de erros dependem fundamentalmente da sua distância de Hamming.

Exemplo:

As palavras de código 10001001 e 10110001 distam 03 unidades de Hamming.

Assim, é necessário que ocorram 03 erros (inversões) nos bits em destaque da palavra 2

para que ela se transforme na palavra 1;

b. Bit de Paridade: Esse bit de paridade deve ser escolhido de modo a fazer com que a quantidade

de bits 1 na palavra de código seja sempre um número par (ou ímpar). Tal código tem distância

de Hamming igual a 2, portanto, a ocorrência de um único erro produz uma palavra de código

inválida. Neste caso o erro é somente detectado e não corrigido.

Como a probabilidade de erro nas memórias atuais é extremamente pequena (um em dez

anos), na prática, os fabricantes de computadores não fazem uso deste recurso.

3. MEMÓRIA CACHE

Ao longo do tempo, os processadores têm sido sempre mais rápidos que as memórias,

mesmo com o tempo de operação das memórias tendo melhorado bastante. À medida que se

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 6  

 

torna tecnicamente possível a colocação de mais e mais circuitos dentro de um chip, os

projetistas vêm usando essas novas facilidades para implementar o processamento pipeline, o

processamento superescalar e processamento em múltiplos núcleos tornando-os mais rápidos.

Enquanto isso os projetistas de memórias têm usado as novas tecnologias para aumentar a

capacidade de armazenamento e não sua velocidade de operação. Na prática, isso significa que

um processador deve esperar vários ciclos de clock até que a memória atenda uma requisição

para leitura e escrita.

Existem duas maneiras de tratar essa questão:

- Na mais simples, as operações de leitura da memória devem ser iniciadas sempre que

o processador encontrar uma instrução de READ. Mesmo com a operação de leitura iniciada, o

processador deve continuar seu processamento, só parando se uma instrução tentar usar a

palavra requisitada.

- Outra solução é fazer com que o compilador gere seu código, evitando que instruções

usem os valores requisitados à memória antes que estes valores estejam disponíveis,

impedindo assim a parada do processador. Na verdade, no momento da carga (LOAD) o que é

feito é a geração de uma instrução NOP (no operation), instruções que nada fazem senão

gastar o tempo do processador, substituindo a parada do hardware.

Acontece que para resolver esse problema, as memórias precisam ser implementadas

dentro do chip do processador. Assim sendo, para não aumentar o tamanho do chip do

processador com a colocação de muita memória, que acarretaria um custo muito alto e

mudança em toda a arquitetura, a escolha foi colocar uma pequena quantidade de memória

rápida dentro do chip. Algumas técnicas combinaram memórias pequenas e rápidas com

memórias grandes e lentas para que o computador opere com velocidade a um custo razoável.

A memória pequena e rápida ficou conhecida como memória cache.

Este nome veio do Francês Cacher que quer dizer escondido/esconder. Seu princípio

básico é otimizar o tempo de resposta da memória RAM. As palavras de memória mais usadas

pelo processador devem permanecer armazenadas na cache. Quando o processador precisar de

uma palavra, ele primeiro busca essa palavra na cache. Somente se ela não estiver armazenada

na cache é que se dará a busca na memória principal.

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 7  

 

 Figura  4  -­‐  Funcionamento  do  Cache

A memória cache pode operar em dois modos:

a) Modo Exclusivo:

- Conteúdo da L1 não está na L2 que não está na L3.

- Aumento da capacidade de armazenamento.

- Permite leitura e escrita.

b) Modo Inclusivo:

- L1 está na L2 que está na L3.

- O conteúdo das caches mais internas está sempre nas caches mais externas.

- Dados somente leitura.

O sucesso desse esquema depende da fração de acessos satisfeitos pela cache.

Normalmente as operações acessam palavras consecutivas ou executam vários loops. A

constatação de que as referências à memória são satisfeitas deu origem a um princípio

conhecido como princípio da localidade de referência, que dá base teórica à operação dos

sistemas de memória modernos, orientados para o uso intenso de cache. Dessa forma é

comum observarmos quando uma palavra é trazida para a memória cache vir junto dela as

palavras vizinhas que com certeza serão usadas em breve.

O princípio da localidade de referencia pode ser:

- Temporal: Grande chance da informação ser usada novamente a seguir. Os

endereços acessados recentemente tem grande chance de serem acessados em um futuro

próximo.

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 8  

 

- Espacial: Grande chance das informações próximas serem usadas. Endereços

próximos aos acessados recentemente tem grande probabilidade de serem acessados no futuro

próximo.

O projeto de memórias cache está se tornando um assunto de fundamental importância

para os processadores de alto desempenho. Uma das questões mais discutidas é o tamanho da

cache. Quanto maior ela for, melhor a sua performance e conseqüentemente mais alto seu

custo.

Outra questão a ser considerada no projeto de cache é se as instruções devem

permanecer em uma cache unificada. No entanto, a tendência atual é se utilizar cache

divididos, uma cache para instruções e outra para dados, conhecido com o arquitetura de

Harvard.

 Figura  5  -­‐  Arquitetura  de  Harvard

3.1. Níveis de cache

Foram desenvolvidos em resposta à uma das consequências ao problema do gargalo de

Von Newmann.

A divisão em níveis decorre da demanda à memória por velocidade, altíssimas taxas de

transferência e baixa latências. Dessa forma, é muito difícil e caro construir memórias cache

com estas características, então elas são construídas em níveis que diferem na relação tamanho

x desempenho.

- L1: A menor delas, mais rápida e mais cara. Alguns projetos a dividem em dados e

instruções (Arquitetura de Harvard).

- L2: Supre as deficiências de tamanho da L1 e acabou por tornar-se um trunfo nas

arquiteturas modernas por mais desempenho.

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 9  

 

- L3: Proposta pela AMD, apresenta mais um nível de maior tamanho e menor

desempenho.

Segundo Stallings, 3 Mb oferece 98% do aumento de desempenho.

3.2. Mapeamento

3.2.1. MAPEAMENTO DIRETO

Cada bloco da memória principal tem uma linha previamente definida onde será

armazenado.

3.2.2. MÉTODO ASSOCIATIVO TOTAL

Oposto do mapeamento direto, não existe posição fixa para cada bloco de memória em

cache. É um hardware mais complexo com aumento do custo e complexidade.

3.2.3. MÉTODO ASSOCIATIVO EM GRUPO

Tenta resolve o problema de conflito de blocos na mesma linha e o problema de custo

da comparação do campo tag. Esta é uma solução hibrida.

3.1. Organização Típica de uma Memória Cache

Como o número de linhas de memória é menor que o número de blocos da memória

principal, é necessário um algoritmo para mapear os blocos da memória principal, em linhas da

memória cache. A escolha da função que efetua esse mapeamento determina como a memória

cache é organizada. Existem diversas técnicas usadas para esse mapeamento, sempre

utilizando como base uma estrutura geral mostrada a seguir.

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 10  

 

 Figura  6  –  Estrutura  do  Cache

- A memória cache pode conter 64 Kbytes;

- Os dados são transferidos entre a memória principal e a memória cache em blocos de 4 bytes.

4. TIPOS DE MEMÓRIA

Até o início dos anos 1990, as memórias eram fabricadas em um único chip. A

densidade dos chips cresceu ao longo do tempo de 1 KBit para cerca de 1Mbit. Os primeiros

computadores tinham soquetes vazios onde o usuário podia plugar chips adicionais de

memória.

Atualmente, o sistema de memórias está organizado de maneira diferente. Um grupo de

chips é montado em uma placa de circuito impresso, e vendido como uma unidade de memória.

Essa unidade é chamada de SIMM (Single Inline Memory Module) ou de DIMM (Dual Inline

Memory Module), dependendo da existência de uma linha de conectores em um dos lados da

placa (SIMM) ou em ambos os lados da placa (DIMM).

Os notebooks usam uma DIMM fisicamente menor, chamada de SO-DIMM (Small Outline

DIMM). Tanto as memórias SIMM como as DIMM vêm com um bit de paridade ou com bits

para correção de erros. Porém, como as estatísticas mostram que a taxa de erro de um

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 11  

 

desses módulos é muito baixo (1 erro a cada 10 anos), a grande maioria dos computadores não

implementa nem detecção de erros e muito menos correção de erros.

 Figura  7  -­‐  Memória  SIMM

Além dessas, outros tipos de memórias devem ser consideradas:

- SIMM/72 – Possui 72 conectores. Utilizada em processadores 486, Pentium e

superiores é um módulo SIMM de 32 bits, encontradas, por exemplo, nas versões de 4 MB, 8

MB, 16 MB e 32 MB. No caso de uma máquina definida como de 64 bits*, como o Pentium,

essas placas são usadas aos pares, cada uma delas acessando metade dos bits necessários a

uma operação com a memória.

- DIMM/168 – Possui 84 conectores banhados a ouro de cada lado, perfazendo um

total de 168 conectores. É um módulo de 64 bits. A capacidade está acima de 64 MB. Os

primeiros eram alimentados com 5V e usavam memórias como FPM e EDO. Os mais modernos

são alimentados com 3,3V e usam memórias SDRAM.

- RIMM (Rambus In Line Memory Module) - Esses módulos são padronizados pela

Rambus para a utilização de memórias RDRAM.

 Figura  8  -­‐  Memória  RIMM

- DDR (Double Data Rating) - é a tecnologia que substituiu as tradicionais memórias

DIMM de 168 pinos. É um tipo de memória baseado na tecnologia SDRAM. Podem realizar o

dobro de operações por ciclo de clock.

ARQUITETURA DE HARDWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br  

 12  

 

Exemplo:

Uma memória DDR de 266 MHz trabalha, na verdade, com 133 MHz. Como realiza duas

operações por vez, é como se trabalhasse a 266 MHz (o dobro).

- Dual DDR - Baseia-se na idéia: em vez de utilizar uma única controladora para

acessar todos os slots de memória da placa-mãe, por que não usar duas controladoras ao

mesmo tempo? Essa é a principal diferença do esquema Dual DDR.

- DDR 2 - É o acrônimo de Double Data Rate 2 Syncronous Dynamic Random Acess

Memory. Dual In-line Memory Module significa que os módulos fazem contatos pelos seus dois

lados, em contraste aos antigos módulos SIMM (Single In-line Memory Module). Syncronous

Dynamic Random Acess Memory significa que a memória possui acesso aleatório síncrono e

dinâmico. O termo sincronia é utilizado para indicar que a memória e processador possuem

clocks coincidentes, o que faz aumentar o desempenho em comparação com a antiga

tecnologia EDO em 25%. O termo dinâmico é uma referência à estrutura dos chips, que são

formados por uma matriz de capacitores que precisam ser recarregados constantemente.

Double Data Rate significa que o tráfego é de dois dados por pulso de clock. O número 2

simboliza o conjunto de melhorias do novo padrão Não é compatível com placas-mãe que

trabalham com memória DDR.

- DDR 3 - é uma melhoria sobre a tecnologia precedente DDR2 SDRAM. O primeiro

benefício da DDR3 é a taxa de transferência duas vezes maior que a taxa da DDR2, de modo

que permite taxas de barramento maiores, como também picos de transferência mais altos do

que as memórias anteriores. A memória DDR3 consome cerca de 30% menos energia, se

comparado aos módulos DDR2. Trabalha com voltagem de 1.5 V, menor que a 1.8 V da DDR2

ou os 2.5 V da DDR. O uso de voltagem 1.5 V funciona bem com a tecnologia de chips de 90

nanômetros da DDR3. O principal benefício da DDR3 vem da alta taxa de transferência, possível

graças ao buffer de 8 bits; diferente dos 4 bits da DDR2 ou dos poucos 2 bits de buffer da DDR.

Os módulos da DDR3 podem ainda transferir dados numa taxa entre 800 e 1600 MHz, usando

ambos estados de um clock de 400/800 MHz.