segunda-feira, 6 de agosto de 2012

Athlon 64

04:20
Todos os processadores Intel e AMD, do 386 ao Athlon, são chamados genericamente de "processadores x86", deixando claro que apesar de todas as diferenças de arquitetura, eles são compatíveis com o mesmo conjunto básico de instruções. É graças a isso que temos um número tão grande de softwares, acumulados ao longo de mais de duas décadas, que continuam funcionando nos PCs atuais. Com exceção da questão dos drivers, você poderia perfeitamente rodar o DOS e o Windows 3.11 em um Pentium 4, por exemplo.
Duas grandes limitações da plataforma x86 são o pequeno número de registradores e o suporte nativo a apenas 4 GB de memória RAM, limitação compartilhada por todos os processadores de 32 bits.
Os registradores são pequenos espaços de memória utilizados pelo processador para armazenar informações que serão usadas para processar a instrução seguinte. Você pode pensar nos registradores como uma espécie de "cache L0". Eles estão muito próximos das unidades de execução do processador e por isso as informações podem ser acessadas imediatamente, mas em troca eles são incrivelmente limitados em tamanho. A arquitetura x86 prevê o uso de apenas 8 registradores, com 32 bits cada um. Ou seja, todos os registradores somados armazenam apenas 8 bytes de dados.
Não é possível adicionar mais registradores facilmente, pois softwares escritos para utilizarem os registradores adicionais não seriam mais compatíveis com os processadores antigos. A solução encontrada foi utilizar o recurso chamado "register renaming" onde o processador possui um número maior de registradores, mas apenas 8 são visíveis. Os demais são gerenciados de forma dinâmica pelo processador, que vai chaveando entre eles conforme novas informações são necessárias. Essa técnica ameniza os problemas de desempenho causados pelo pequeno número de registradores, mas não soluciona a questão completamente.
Com relação à memória, o limite de 4 GB se tornou uma limitação séria em algumas área a partir da época do Pentium 1. A solução veio na forma do PAE (Physical Address Extension), um hack (originalmente desenvolvido pela Intel) que está disponível na maior parte dos processadores a partir do Pentium Pro. O PAE consiste numa segunda tabela de endereços, com 4 bits adicionais, que permitem endereçar 16 páginas de memória, cada uma com 4 GB.
Com o PAE, passa a ser possível endereçar até 64 GB de memória. A desvantagem é que o processador continua sendo capaz de acessar apenas 4 GB por vez e o chaveamento entre diferentes páginas de memória toma um certo tempo, que acaba prejudicando bastante o desempenho. Ou seja, assim como no caso do register renaming, o PAE ameniza o problema, mas não o soluciona completamente.
A única forma de solucionar de vez as duas questões, assim como um conjunto de outros problemas comuns a todos os processadores de 32 bits, era desenvolver uma nova nova arquitetura, composta agora por processadores de 64 bits.
Em primeiro lugar, precisamos definir o que são processadores de 64 bits e quais são as vantagens sobre os de 32. Processadores de 64 bits não são duas vezes mais rápidos nem processam (necessariamente) o dobro de dados por ciclo de clock. A grande vantagem dos processadores de 64 bits é que eles são capazes de trabalhar com endereços de memória de 64 bits, o que permite endereçar muito mais do que 4 GB de memória RAM. Temos também um aumento no tamanho dos registradores, que passam a armazenar 64 bits de informações, em vez de 32, o que representa um pequeno ganho de desempenho.
Outro benefício (embora menos significativo) é que eles são capazes de processar número inteiros de até 64 bits, ao invés de 32. Isto oferece ganhos de desempenho em algumas áreas específicas (como, por exemplo, softwares de encriptação e alguns aplicativos científicos) mas não ajuda muito nos aplicativos do dia-a-dia. Processadores de 32 bits podem processar números inteiros de 64 bits, mas eles precisam ser divididos em duas instruções separadas, o que naturalmente toma mais tempo.
Com relação ao processamento de números de ponto flutuante, não existe ganho, pois os co-processadores aritméticos utilizados nos processadores atuais já são capazes de processar números de ponto flutuante de 64 bits e vetores de 128 bits. Nestas duas áreas não existe um ganho direto, já que a transição foi feita há muito tempo.
A primeira tentativa de criar um sucessor de 64 bits para a plataforma x86 veio da Intel, que em 2001 lançou o Itanium, um processador de 64 bits destinado a servidores.
O Itanium quebra a compatibilidade com a família x86, passando a utilizar o IA-64, um novo conjunto de instruções. O plano inicial era popularizar a arquitetura primeiro nos servidores, onde os benefícios de um processador de 64 bits são mais evidentes, e em seguida lançar também versões destinadas a desktops. O problema com o Itanium (além do processador ser muito caro) era que não existiam softwares capazes de se beneficiar da nova plataforma. Ele incluía um sistema de emulação, que permitia rodar softwares de 32 bits, mas neste caso o desempenho era muito ruim.
As duas versões iniciais do Itanium operavam a 733 e 800 MHz. Elas foram seguidas pelas diferentes versões do Itanium 2, vendidas em versões de 900 MHz a 1.67 GHz, incluindo versões dual-core. A Intel continua investindo no desenvolvimento do Itanium, lançando novas versões, mas o futuro da plataforma é incerto.
Além do x86-64, a arquitetura K8, compartilhada por todos os processadores de 64 bits da AMD, inclui um circuito de branch-prediction sensivelmente melhorado, com um global history counter 4 vezes maior que o do Athlon K7.
O global history counter é a área reservada a armazenar os resultados de operações resultadas anteriormente. Estas informações são utilizadas como base de consulta pelo circuito de branch prediction na hora de decidir qual caminho deve tomar dentro de uma operação de tomada de decisão.
Outro recurso, possivelmente o mais famoso, é o controlador de memória integrado, chamado de IMC (Integrated Memory Controller). Tradicionalmente, o controlador de memória faz parte do chipset e opera à mesma freqüência que ele. O processador se comunica com o chipset através do Front Side Bus (o barramento principal) e ele (o FSB) é utilizado para todo o tráfego, incluindo a leitura e gravação de dados na memória
Ao mover o controlador de memória para dentro do processador, a AMD foi capaz de reduzir sensivelmente o tempo de latência nos acessos à memória, aumentando assim o desempenho do processador em alguns pontos. Nos processadores baseados na arquitetura K8, o processador é ligado diretamente às trilhas da placa-mãe que levam aos pentes de memória, e a comunicação com o chipset é feita através de um barramento HyperTransport. No caso de sistemas com dois processadores em SMP (como no caso de servidores equipados com o Opteron), barramentos HyperTransport adicionais fazem a ligação entre os processadores.
Versões:
Tudo começou com o Opteron, o primeiro processador baseado na arquitetura Hammer, destinado a servidores. Ele utilizava um controlador de memória dual-channel e oferecia suporte apenas a memórias registered, módulos especiais que incluem um pequeno buffer que estabiliza o sinal, permitindo que sejam utilizados mais módulos. Os módulos registered são mais caros e mais lentos que os módulos DDR tradicionais que utilizamos em micros domésticos, mas eles são uma necessidade nos servidores, já que eles precisam utilizar um número muito maior de módulos de memória. Devido ao brutal número de contatos utilizados pelo controlador de memória, o soquete utilizado pelo Opteron tinha nada menos do que 940 pinos, o que na época era inédito.
A partir do momento que passou a ser capaz de produzir um volume maior de processadores, a AMD lançou os modelos destinados ao mercado doméstico, que incluem as versões iniciais do Athlon 64 e Athlon 64 FX.
A Athlon 64 FX era uma variação do Opteron, que vinha com 1 MB de cache L2 e mantinha o controlador de memória dual-channel. A grande mudança em relação ao Opteron é que ele passou a oferecer suporte a memórias DDR comuns, o que barateou muito o custo dos micros. Para diferenciar as placas para o Opteron e para o Athlon 64 FX, a AMD criou o soquete 939, que era virtualmente idêntico ao soquete 940 do Opteron. A posição de alguns dos pinos foi alterada apenas para indicar a mudança no tipo de memória suportado e impedir que o Opteron fosse usado nas placas para o Athlon 64 FX e vice-versa. Mais tarde, o soquete 939 foi usado também pelas versões iniciais do Athlon X2, mas acabou sendo rapidamente substituído pelo soquete AM2.
Em seguida temos as versões "domésticas" do Athlon 64, que vinham com apenas 512 KB de cache L2 e utilizavam um controlador de memória simplificado, sem suporte a dual-channel. Devido ao menor número de contatos utilizados pelo controlador de memória, eles passaram a utilizar o soquete 754.
Considerando dois processadores do mesmo clock, a diferença de desempenho entre um Athlon 64 "normal" e um Athlon 64 FX não é tão grande quanto se poderia imaginar. O controlador de memória dual-channel e o maior cache ajudam em alguns aplicativos, mas a diferença não era tão grande a ponto de justificar pagar US$ 1000 pelo processador, como chegaram a custar algumas versões do FX.
Se você se assustou com o preço, vale lembrar que as primeiras versões do Athlon 64 FX competiam com o Pentium 4 Extreme Edition; ambos eram processadores "de vitrine", destinados ao público entusiasta e vendidos a preços exorbitantes. Mais tarde, foram lançadas versões do Athlon 64 soquete 754 com 1 MB de cache L2, que praticamente anularam as vantagens do FX.
Todos os processadores Intel e AMD, do 386 ao Athlon, são chamados genericamente de "processadores x86", deixando claro que apesar de todas as diferenças de arquitetura, eles são compatíveis com o mesmo conjunto básico de instruções. É graças a isso que temos um número tão grande de softwares, acumulados ao longo de mais de duas décadas, que continuam funcionando nos PCs atuais. Com exceção da questão dos drivers, você poderia perfeitamente rodar o DOS e o Windows 3.11 em um Pentium 4, por exemplo.
Duas grandes limitações da plataforma x86 são o pequeno número de registradores e o suporte nativo a apenas 4 GB de memória RAM, limitação compartilhada por todos os processadores de 32 bits.
Os registradores são pequenos espaços de memória utilizados pelo processador para armazenar informações que serão usadas para processar a instrução seguinte. Você pode pensar nos registradores como uma espécie de "cache L0". Eles estão muito próximos das unidades de execução do processador e por isso as informações podem ser acessadas imediatamente, mas em troca eles são incrivelmente limitados em tamanho. A arquitetura x86 prevê o uso de apenas 8 registradores, com 32 bits cada um. Ou seja, todos os registradores somados armazenam apenas 8 bytes de dados.
Não é possível adicionar mais registradores facilmente, pois softwares escritos para utilizarem os registradores adicionais não seriam mais compatíveis com os processadores antigos. A solução encontrada foi utilizar o recurso chamado "register renaming" onde o processador possui um número maior de registradores, mas apenas 8 são visíveis. Os demais são gerenciados de forma dinâmica pelo processador, que vai chaveando entre eles conforme novas informações são necessárias. Essa técnica ameniza os problemas de desempenho causados pelo pequeno número de registradores, mas não soluciona a questão completamente.
Com relação à memória, o limite de 4 GB se tornou uma limitação séria em algumas área a partir da época do Pentium 1. A solução veio na forma do PAE (Physical Address Extension), um hack (originalmente desenvolvido pela Intel) que está disponível na maior parte dos processadores a partir do Pentium Pro. O PAE consiste numa segunda tabela de endereços, com 4 bits adicionais, que permitem endereçar 16 páginas de memória, cada uma com 4 GB.
Com o PAE, passa a ser possível endereçar até 64 GB de memória. A desvantagem é que o processador continua sendo capaz de acessar apenas 4 GB por vez e o chaveamento entre diferentes páginas de memória toma um certo tempo, que acaba prejudicando bastante o desempenho. Ou seja, assim como no caso do register renaming, o PAE ameniza o problema, mas não o soluciona completamente.
A única forma de solucionar de vez as duas questões, assim como um conjunto de outros problemas comuns a todos os processadores de 32 bits, era desenvolver uma nova nova arquitetura, composta agora por processadores de 64 bits.
Em primeiro lugar, precisamos definir o que são processadores de 64 bits e quais são as vantagens sobre os de 32. Processadores de 64 bits não são duas vezes mais rápidos nem processam (necessariamente) o dobro de dados por ciclo de clock. A grande vantagem dos processadores de 64 bits é que eles são capazes de trabalhar com endereços de memória de 64 bits, o que permite endereçar muito mais do que 4 GB de memória RAM. Temos também um aumento no tamanho dos registradores, que passam a armazenar 64 bits de informações, em vez de 32, o que representa um pequeno ganho de desempenho.
Outro benefício (embora menos significativo) é que eles são capazes de processar número inteiros de até 64 bits, ao invés de 32. Isto oferece ganhos de desempenho em algumas áreas específicas (como, por exemplo, softwares de encriptação e alguns aplicativos científicos) mas não ajuda muito nos aplicativos do dia-a-dia. Processadores de 32 bits podem processar números inteiros de 64 bits, mas eles precisam ser divididos em duas instruções separadas, o que naturalmente toma mais tempo.
Com relação ao processamento de números de ponto flutuante, não existe ganho, pois os co-processadores aritméticos utilizados nos processadores atuais já são capazes de processar números de ponto flutuante de 64 bits e vetores de 128 bits. Nestas duas áreas não existe um ganho direto, já que a transição foi feita há muito tempo.
A primeira tentativa de criar um sucessor de 64 bits para a plataforma x86 veio da Intel, que em 2001 lançou o Itanium, um processador de 64 bits destinado a servidores.
O Itanium quebra a compatibilidade com a família x86, passando a utilizar o IA-64, um novo conjunto de instruções. O plano inicial era popularizar a arquitetura primeiro nos servidores, onde os benefícios de um processador de 64 bits são mais evidentes, e em seguida lançar também versões destinadas a desktops. O problema com o Itanium (além do processador ser muito caro) era que não existiam softwares capazes de se beneficiar da nova plataforma. Ele incluía um sistema de emulação, que permitia rodar softwares de 32 bits, mas neste caso o desempenho era muito ruim.
As duas versões iniciais do Itanium operavam a 733 e 800 MHz. Elas foram seguidas pelas diferentes versões do Itanium 2, vendidas em versões de 900 MHz a 1.67 GHz, incluindo versões dual-core. A Intel continua investindo no desenvolvimento do Itanium, lançando novas versões, mas o futuro da plataforma é incerto.
Além do x86-64, a arquitetura K8, compartilhada por todos os processadores de 64 bits da AMD, inclui um circuito de branch-prediction sensivelmente melhorado, com um global history counter 4 vezes maior que o do Athlon K7.
O global history counter é a área reservada a armazenar os resultados de operações resultadas anteriormente. Estas informações são utilizadas como base de consulta pelo circuito de branch prediction na hora de decidir qual caminho deve tomar dentro de uma operação de tomada de decisão.
Outro recurso, possivelmente o mais famoso, é o controlador de memória integrado, chamado de IMC (Integrated Memory Controller). Tradicionalmente, o controlador de memória faz parte do chipset e opera à mesma freqüência que ele. O processador se comunica com o chipset através do Front Side Bus (o barramento principal) e ele (o FSB) é utilizado para todo o tráfego, incluindo a leitura e gravação de dados na memória
Ao mover o controlador de memória para dentro do processador, a AMD foi capaz de reduzir sensivelmente o tempo de latência nos acessos à memória, aumentando assim o desempenho do processador em alguns pontos. Nos processadores baseados na arquitetura K8, o processador é ligado diretamente às trilhas da placa-mãe que levam aos pentes de memória, e a comunicação com o chipset é feita através de um barramento HyperTransport. No caso de sistemas com dois processadores em SMP (como no caso de servidores equipados com o Opteron), barramentos HyperTransport adicionais fazem a ligação entre os processadores.
Versões:
Tudo começou com o Opteron, o primeiro processador baseado na arquitetura Hammer, destinado a servidores. Ele utilizava um controlador de memória dual-channel e oferecia suporte apenas a memórias registered, módulos especiais que incluem um pequeno buffer que estabiliza o sinal, permitindo que sejam utilizados mais módulos. Os módulos registered são mais caros e mais lentos que os módulos DDR tradicionais que utilizamos em micros domésticos, mas eles são uma necessidade nos servidores, já que eles precisam utilizar um número muito maior de módulos de memória. Devido ao brutal número de contatos utilizados pelo controlador de memória, o soquete utilizado pelo Opteron tinha nada menos do que 940 pinos, o que na época era inédito.
A partir do momento que passou a ser capaz de produzir um volume maior de processadores, a AMD lançou os modelos destinados ao mercado doméstico, que incluem as versões iniciais do Athlon 64 e Athlon 64 FX.
A Athlon 64 FX era uma variação do Opteron, que vinha com 1 MB de cache L2 e mantinha o controlador de memória dual-channel. A grande mudança em relação ao Opteron é que ele passou a oferecer suporte a memórias DDR comuns, o que barateou muito o custo dos micros. Para diferenciar as placas para o Opteron e para o Athlon 64 FX, a AMD criou o soquete 939, que era virtualmente idêntico ao soquete 940 do Opteron. A posição de alguns dos pinos foi alterada apenas para indicar a mudança no tipo de memória suportado e impedir que o Opteron fosse usado nas placas para o Athlon 64 FX e vice-versa. Mais tarde, o soquete 939 foi usado também pelas versões iniciais do Athlon X2, mas acabou sendo rapidamente substituído pelo soquete AM2.
Em seguida temos as versões "domésticas" do Athlon 64, que vinham com apenas 512 KB de cache L2 e utilizavam um controlador de memória simplificado, sem suporte a dual-channel. Devido ao menor número de contatos utilizados pelo controlador de memória, eles passaram a utilizar o soquete 754.
Considerando dois processadores do mesmo clock, a diferença de desempenho entre um Athlon 64 "normal" e um Athlon 64 FX não é tão grande quanto se poderia imaginar. O controlador de memória dual-channel e o maior cache ajudam em alguns aplicativos, mas a diferença não era tão grande a ponto de justificar pagar US$ 1000 pelo processador, como chegaram a custar algumas versões do FX.
Se você se assustou com o preço, vale lembrar que as primeiras versões do Athlon 64 FX competiam com o Pentium 4 Extreme Edition; ambos eram processadores "de vitrine", destinados ao público entusiasta e vendidos a preços exorbitantes. Mais tarde, foram lançadas versões do Athlon 64 soquete 754 com 1 MB de cache L2, que praticamente anularam as vantagens do FX.

0 comentários:

Postar um comentário

 
Abrir Rodape