A questão do acesso de dados
Antigamente (na época dos módulos SIMM de 30 vias usados nos micros 386 e 486), cada chip de memória oferecia a leitura de um bit de cada vez. Os módulos de 30 vias eram compostos por 8 chips de memória (com exceção dos módulos com paridade, que usavam 9 chips), o que resultava na leitura de 8 bits por ciclo. Apesar disso, o processador lia 32 bits de dados a cada ciclo, de forma que era necessário usar os módulos em quartetos.
Do ponto de vista do processador, não existia divisão, os chips eram acessados como se fossem um só. O processador não via 32 endereços separados, em 32 chips diferentes, mas sim um único endereço, contendo 32 bits.
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Módulos antigos de 30 vias (8 bits), 72 vias (32 bits) e 168 vias (64 bits)
Nos módulos DIMM atuais são geralmente usados 8 chips de 8 bits cada um, formando os 64 bits fornecidos ao processador. Existem ainda módulos com 16 chips de 4 bits cada, ou ainda, módulos com 4 chips de 16 bits (comuns em notebooks). Do ponto de vista do processador, não faz diferença, desde que somados, os chips totalizem 64 bits.
Imagine que o controlador de memória envia sequências com 4, 8 ou 16 pares de endereços RAS e CAS e recebe de volta o mesmo número de leituras de 64 bits. Mesmo em casos em que o processador precisa de apenas alguns poucos bytes, contendo uma instrução ou bloco de dados, ele precisa ler todo o bloco de 64 bits adjacente, mesmo que seja para descartar os demais.
No caso dos chipsets e processadores com controladores de memória dual-channel, continuamos tendo acessos de 64 bits, a única diferença é que agora o controlador de memória é capaz de acessar dois endereços diferentes (cada um em um módulo de memória) a cada ciclo de clock, ao invés de apenas um. Isso permite transferir o dobro de dados por ciclo, fazendo com que o processador precise esperar menos tempo ao transferir grandes quantidades de dados.
Na verdade, nos PCs contemporâneos, praticamente qualquer dispositivo pode acessar a memória diretamente através do barramento PCI Express, PCI (ou AGP no caso de micros mais antigos) e até mesmo a partir das portas SATA, IDE e USB. Naturalmente, todos os acessos são coordenados pelo processador, mas como a memória é uma só, temos situações onde o processador precisa esperar para acessar a memória, porque ela está sendo acessada por outro dispositivo.
Existem várias formas de melhorar o desempenho da memória RAM. A primeira é aumentar o número de bits lidos por ciclo, tornando o barramento mais largo, como o aumento de 32 para 64 bits introduzida pelo Pentium 1, que continua até os dias de hoje. O problema em usar um barramento mais largo é que o maior número de trilhas necessárias, tanto na placa-mãe quanto nos próprios módulos de memória, aumentam a complexidade e o custo de produção.
A segunda é acessar dois ou mais módulos de memória simultaneamente, como nas placas e processadores com controladores de memória dual-channel ou triple-channel. O problema é que nesse caso precisamos de dois módulos, além de circuitos e trilhas adicionais na placa-mãe e pinos adicionais no soquete do processador.
A terceira é criar módulos de memória mais rápidos, como no caso das memórias DDR2 e DDR3. Essa questão da velocidade pode ser dividida em dois quesitos complementares: o número de ciclos por segundo e a latência, que é o tempo que a primeira operação numa série de operações de leitura ou escrita demora para ser concluída. O tempo de latência poderia ser comparado ao tempo de acesso de um HD, enquanto o número de ciclos poderia ser comparado ao clock do processador.
É aqui que entram as diferentes tecnologias de memórias que foram introduzidas ao longo das últimas décadas, começando pelas memórias regulares, usadas nos XTs e 286, que evoluíram para as memórias FPM, usadas em PCs 386 e 486, em seguida para as memórias EDO, usadas nos últimos micros 486s e nos Pentium. Estas três primeiras tecnologias foram então substituídas pelas memórias SDR-SDRAM, seguidas pelas memórias DDR e pelas DDR2 e DDR3 usadas atualmente.
Tudo começou com as memórias regulares, que são o tipo mais primitivo de memória RAM. Nelas, o acesso é feito da forma tradicional, enviando o endereço RAS, depois o CAS e aguardando a leitura dos dados para cada ciclo de leitura.
Isso funcionava bem nos micros XT e 286, onde o clock do processador era muito baixo e a memória RAM podia funcionar de forma sincronizada com ele. Em um 286 de 8 MHz, eram usados chips com tempo de acesso de 125 ns (nanossegundos) e em um de 12 MHz eram usados chips de 83 ns.
O problema era que a partir daí as memórias da época atingiram seu limite e passou a ser necessário fazer com que a memória trabalhasse de forma assíncrona, onde o processador trabalha a uma frequência mais alta que a memória RAM.
A partir do 386, a diferença passou a ser muito grande, o que levou à introdução da memória cache e ao início da corrida em busca de módulos de memória mais rápidos.
Antigamente (na época dos módulos SIMM de 30 vias usados nos micros 386 e 486), cada chip de memória oferecia a leitura de um bit de cada vez. Os módulos de 30 vias eram compostos por 8 chips de memória (com exceção dos módulos com paridade, que usavam 9 chips), o que resultava na leitura de 8 bits por ciclo. Apesar disso, o processador lia 32 bits de dados a cada ciclo, de forma que era necessário usar os módulos em quartetos.
Do ponto de vista do processador, não existia divisão, os chips eram acessados como se fossem um só. O processador não via 32 endereços separados, em 32 chips diferentes, mas sim um único endereço, contendo 32 bits.
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Módulos antigos de 30 vias (8 bits), 72 vias (32 bits) e 168 vias (64 bits)
Nos módulos DIMM atuais são geralmente usados 8 chips de 8 bits cada um, formando os 64 bits fornecidos ao processador. Existem ainda módulos com 16 chips de 4 bits cada, ou ainda, módulos com 4 chips de 16 bits (comuns em notebooks). Do ponto de vista do processador, não faz diferença, desde que somados, os chips totalizem 64 bits.
Imagine que o controlador de memória envia sequências com 4, 8 ou 16 pares de endereços RAS e CAS e recebe de volta o mesmo número de leituras de 64 bits. Mesmo em casos em que o processador precisa de apenas alguns poucos bytes, contendo uma instrução ou bloco de dados, ele precisa ler todo o bloco de 64 bits adjacente, mesmo que seja para descartar os demais.
No caso dos chipsets e processadores com controladores de memória dual-channel, continuamos tendo acessos de 64 bits, a única diferença é que agora o controlador de memória é capaz de acessar dois endereços diferentes (cada um em um módulo de memória) a cada ciclo de clock, ao invés de apenas um. Isso permite transferir o dobro de dados por ciclo, fazendo com que o processador precise esperar menos tempo ao transferir grandes quantidades de dados.
Na verdade, nos PCs contemporâneos, praticamente qualquer dispositivo pode acessar a memória diretamente através do barramento PCI Express, PCI (ou AGP no caso de micros mais antigos) e até mesmo a partir das portas SATA, IDE e USB. Naturalmente, todos os acessos são coordenados pelo processador, mas como a memória é uma só, temos situações onde o processador precisa esperar para acessar a memória, porque ela está sendo acessada por outro dispositivo.
Existem várias formas de melhorar o desempenho da memória RAM. A primeira é aumentar o número de bits lidos por ciclo, tornando o barramento mais largo, como o aumento de 32 para 64 bits introduzida pelo Pentium 1, que continua até os dias de hoje. O problema em usar um barramento mais largo é que o maior número de trilhas necessárias, tanto na placa-mãe quanto nos próprios módulos de memória, aumentam a complexidade e o custo de produção.
A segunda é acessar dois ou mais módulos de memória simultaneamente, como nas placas e processadores com controladores de memória dual-channel ou triple-channel. O problema é que nesse caso precisamos de dois módulos, além de circuitos e trilhas adicionais na placa-mãe e pinos adicionais no soquete do processador.
A terceira é criar módulos de memória mais rápidos, como no caso das memórias DDR2 e DDR3. Essa questão da velocidade pode ser dividida em dois quesitos complementares: o número de ciclos por segundo e a latência, que é o tempo que a primeira operação numa série de operações de leitura ou escrita demora para ser concluída. O tempo de latência poderia ser comparado ao tempo de acesso de um HD, enquanto o número de ciclos poderia ser comparado ao clock do processador.
É aqui que entram as diferentes tecnologias de memórias que foram introduzidas ao longo das últimas décadas, começando pelas memórias regulares, usadas nos XTs e 286, que evoluíram para as memórias FPM, usadas em PCs 386 e 486, em seguida para as memórias EDO, usadas nos últimos micros 486s e nos Pentium. Estas três primeiras tecnologias foram então substituídas pelas memórias SDR-SDRAM, seguidas pelas memórias DDR e pelas DDR2 e DDR3 usadas atualmente.
Tudo começou com as memórias regulares, que são o tipo mais primitivo de memória RAM. Nelas, o acesso é feito da forma tradicional, enviando o endereço RAS, depois o CAS e aguardando a leitura dos dados para cada ciclo de leitura.
Isso funcionava bem nos micros XT e 286, onde o clock do processador era muito baixo e a memória RAM podia funcionar de forma sincronizada com ele. Em um 286 de 8 MHz, eram usados chips com tempo de acesso de 125 ns (nanossegundos) e em um de 12 MHz eram usados chips de 83 ns.
O problema era que a partir daí as memórias da época atingiram seu limite e passou a ser necessário fazer com que a memória trabalhasse de forma assíncrona, onde o processador trabalha a uma frequência mais alta que a memória RAM.
A partir do 386, a diferença passou a ser muito grande, o que levou à introdução da memória cache e ao início da corrida em busca de módulos de memória mais rápidos.