AMD 64 bits : Evolução ou Revolução?
Introdução > Porquê 64 bits? > Vantagens > Desvantagens > Conclusão > Bibliografia / Links

• Vantagens


Quais são as vantagens imediatas e a longo prazo do rumo seguido pela AMD para a computação de 64-bits?


__Em seguida estão sumarizadas algumas das diferenças do processador Opteron em relação ao Athlon que permitem a obtenção de prestações superiores (fonte: http://www.aceshardware.com) :

• Controlador de memória integrado, com suporte para o uso de memória DDR333 no Opteron;
• Ligações HyperTransport separadas, tanto para comunicação entre os vários CPU's, como para a comunicação com o túnel AGP e a SouthBridge;
• Cache L2 de 1Mbyte;
• Suporte para instruções SSE-2 com 16 registos no modo 64-bits (long mode);
• Pipeline de 12 etapas (no Athlon o pipeline tem 10 etapas), pipeline de Floating Point de 17 etapas (no Athlon é de 15) para uma margem de aumento de frequência ligeiramente superior;
• Uma etapa extra da pipeline analisa interdependências de instruções, após fazer a descodificação;
• Buffers para inteiros (integer buffers) ligeiramente mais profundos (3x8 ao invés de 3x6);
• TLB (Translation Look-aside Buffer) da cache L1 de instruções aumentado de 24 para 40 entradas;
• TLB da cache L2 com o dobro do tamanho (512 entradas em relação às anteriores 256);
• Filtro flush que permite que vários processos partilhem a TLB;
• Melhor predição de brach; predictor de branch com 16.000 entradas no contador histórico global, em relação às 4.000 do Athlon.

  Athlon XP 3000+ Opteron 244
     
GHz Rating 2.16 GHz 1.8 GHz
Process Technology .13 micron .13 micron SOI
# of Transistors 54.3 million 105.9 million
Die size 101 sq millimeter 193 sq millimeters
Thermal Design Power 74.3W 89W
Pipeline stages 10 int / 15 FPU 12 Int / 17 FPU
# of x86 instructions decoded per cycle Three Three
Max # of internal OPs issued Nine Nine
L1 Cache Sizes 64K dcache / 64K icache 64K dcache / 64K icache
L1 cache org 2-way 2-way
L1 Line size 64 bytes 64 bytes
L1 TLB 32 entry 32 entry
L2 cache size 512K unified 1MB
L2 cache org 16-way 16-way
L2 TLB 256 entry 512 entry
Branch Target Buffer 2048 entry 2048 entry
Return stack 12 entry 12 entry
SPECint_rate_base2000* n/a 24.5
SPECfp_rate_base2000* n/a 24.6
     
* Opteron 244 SPEC rate results provided by AMD and tested in a dual processor configuration
  

Em baixo podemos ver um diagrama que representa a arquitectura interna de execução do processador Opteron, e uma tabela com as fases do pipeline de inteiros.

Após a descodificação das instruções, estas são analisadas com base no seu tipo e dependências. Isto permite ao processador optimizar as instruções que devem ser enviadas em conjunto para os três pipelines, o que vai tornar o seu escalonamento muito mais eficiente.

Comparação dos pipelines de inteiros de processadores AMD
Ciclo de Relógio
Arquitectura K7
Arquitectura K8
1
Fetch
Fetch 1
2
Scan
Fetch 2
3
Align 1
Pick
4
Align 2
Decode 1
5
EDEC
Decode 2
6
IDEQ/Rename
Pack
7
Schedule
Pack/Decode
8
AGU/ALU
Dispatch
9
L1 Address Generation
Schedule
10
Data Cache
AGU/ALU
11
Data Cache 1
12
Data Cache 2

O Opteron possui mais duas fases na pipeline que o Athlon. O único propósito destas fases adicionais é permitir ao processador atingir velocidades de relógio superiores, já que quanto mais etapas na pipeline o processador possuir, menos trabalho é feito por ciclo de relógio, e logo maior a frequência a que se pode utilizar o processador. Este é um dos motivos pelos quais o Intel Xeon, que possui uma pipeline com 20 etapas, existe a velocidades de relógio de 3 GHz, em contraste com a frequência de 1.8 GHz do Opteron mais veloz até ao momento; a pipeline deste último, como já foi referido, consiste de 12 etapas.

Esta diferença na arquitectura da pipeline não permite que se faça uma comparação válida entre estes dois processadores com base na velocidade de relógio. A arquitectura do Xeon permite-lhe alcançar velocidades de relógio elevadas, o que implica a realização de menos trabalho por ciclo de relógio, pelo que a comparação destes processadores deve ser realizada com base no custo e no desempenho em aplicações reais.

 

O que faz do Opteron um processador de 8ª geração, e não apenas um simples Athlon com algumas optimizações, são o controlador de memória integrado, melhor predição de branches, uma execução Fora-de-Ordem (Out-Of-Order) mais eficiente e TLB's maiores, que são óptimas formas de aumentar o IPC (Instruções por Ciclo de Relógio - em inglês, Instructions Per Clockcycle), já que cerca de 50% das instruções x86 executadas em aplicações normais são loads e stores (o número de loads é aproximadamente o dobro do número de stores, o que não é surpreendente se tivermos em conta que a maioria das operações lógicas e aritméticas carrega duas variáveis de dados, executa uma operação como por exemplo adição, multiplicação, etc. sobre essas duas variáveis e escreve um resultado na memória), e uma percentagem significativa são branches, dos quais a quase totalidade é condicional. Assim, estas características do processador são mais eficientes em melhorar o desempenho em aplicações normais do que, por exemplo, uma arquitectura com seis pipelines.

Em cima podemos ver uma fotografia do die do processador Opteron, onde é interessante ver o posicionamento das unidades funcionais e memórias internas.

O benefício do controlador de memória integrado é claro: menor latência nos acessos à memória (cerca de 20%) que se traduz num desempenho global melhorado. Outra vantagem é o facto de cada processador num sistema múltiplo possuir a sua memória directamente ligada, e não depender de um sistema de memória partilhada. A desvantagem do controlador integrado é que para suportar novas tecnologias de memória, é necessário substituir o CPU, e não apenas a motherboard, apesar de a AMD ter incluido uma funcionalidade no processador para desactivar o controlador interno, permitindo que um chipset externo funcione como controlador; no entanto, esta situação vai basicamente transformar o processador num Athlon com uma pipeline maior.

É interessante o facto de que tanto a memória externa como as caches L1 (de dados) e L2 estão protegidas por ECC (Error Correction Code). A cache L1 de instruções está protegida apenas por paridade, não só por motivos de velocidade, mas também para aumentar a fiabilidade, já que a cache de instruções nunca é escrita por aplicações, drivers ou pelo sistema operativo.

Com a capacidade de correr código x86 actual bem como código de 64 bits futuro, o processador possui dois modos de operação: legacy (para compatibilidade) e long (para activar as extensões AMD64).

O modo de compatibilidade não oferece nenhuma das vantagens da arquitectura de 64 bits a nível das aplicações, já que foi desenhado para correr software de 32 bits num sistema operativo de 64 bits (daí o termo modo de compatibilidade). Os registos extra e extensões de 64 bits são ignorados neste modo. No entanto, este modo é importante, devido à limitação dos sistemas Windows de 2 GByte de tamanho de cada processo. Apesar de os Windows de 32 bits suportarem um máximo de 4 Gbytes de memória, cada processo pode utilizar apenas 2 GBytes de memória - os restantes 2 GBytes são reservados para o sistema operativo. Ao correr uma versão futura do Windows de 64 bits e aplicações de 32 bits, o modo de compatibilidade permitiráo que cada processo de 32 bits tenha até um máximo de 4 GBytes de memória, com o sistema a utilizar a restante memória acima desse valor.

Para utilizar as capacidades de 64 bits do Opteron (long mode), é necessário passar para um modo de execução especial, assemelhando-se esta situação à introdução do modo 32 bits no processador 80386. Para entrar neste modo, estabelece-se um bit para activar globalmente a execução 64 bits. A partir daí, são marcados segmentos de código individuais como 64 bits, utilizando um bit previamente não utilizado na tabela descritora local - LDT (local descriptor table). A partir daí, os branches para segmentos marcados são interpretados como código de 64 bits. Branches para código sem este bit activado são consideradas como código "normal" de 32 bits. A tabela de baixo ilustra os modos de funcionamento do processador, e quais os requisitos de cada um deles em termos de sistema operativo e de haver necessidade ou não de recompilação de código.

A AMD também inclui algumas instruções novas de 64 bits. Há um conjunto completamente novo de operações de vírgula flutuante que utilizam os 16 registos de de 128 bits. Isto deverá ser um melhoramento enorme em relação à desastrada arquitectura de pilha de registos do 8087 original e de todos FPU's x87 posteriores (as capacidades de vírgula flutuante dos processadores da Intel eram o ponto baixo de uma arquitectura já de si com problemas).

Este processador também permite a compatibilidade com código de tamanhos diferentes do mesmo modo que o 386, através de um byte para alterar o tamanho. Qualquer instrução pode ser antecedida da pseudo-instrução REX, de um byte. Este byte informa o descodificador de que os operandos dessa instrução devem ser interpretados enquanto quantidades de 64 bits. O 386 funcionava do mesmo modo, através da introdução do byte prefixo 0x66 , tornando operações de 16 bits em novas operações de 32 bits sem alterar o conjunto de instruções ou duplicar cada operação.


Tecnologia HyperTransport:

Uma importante aposta desta arquitectura assenta também numa tecnologia de interligação nova: HyperTransport. Esta tecnologia é definida por um consórcio da qual fazem parte, entre outras 50 empresas, a AMD, a Apple, a nVidia, a Cisco, a Sun, ou a Transmeta.

Em que consiste esta tecnologia?

Segundo a página do consórcio (www.hypertransport.org), esta é uma tecnologia universal de interligação entre circuitos que substitui e melhora os buses existentes em sistemas como computadores pessoais, servidores e sistemas embedded, mantendo a compatibilidade com as tecnologias de entrada/saída PCI. Isto permite uma largura de banda agregada máxima de 12,8 GB por segundo, utilizando ligações de baixa latência unidireccionais de ponto-a-ponto. Assenta num protocolo de transmissão de dados baseado em pacotes que contém tanto dados como informação de controlo e comandos, permitindo a eliminação de sinais de controlo em linhas adicionais.

Em baixo é possível ver a configuração de 8 processadores Hammer (nome de código dos processador Opteron e Athlon64) em conjunto com a ligação à memória. De realçar a utilização de uma crossbar para ligação entre processadores.

O Opteron inclui dois controladores DDR (Double Data Rate: taxa de dados dupla) que gerem directamente a memória SDRAM externa (Synchronous Dynamic Random Access Memory: memória de acesso aleatório síncrona dinâmica). O bus de memória pode ter uma largura tanto de 64 como de 128 bits. Esta situação é favorável em relação ao Intel Itanium, que possui um bus de sistema genérico e ncessita de um controlador separado da Intel para aceder à memória.

Outra situação interessante é que cada processador Opteron possui 3 ligações Hypertransport distintas e memória privada (graças ao controlador de memória integrado), o que se traduz numa vantagem clara para sistemas de multiprocessamento (o Athlon64, o produto futuro da AMD para o mercado doméstico, apenas terá 1 ligação HT); utilizando nada mais que os links integrados Hypertransport para comunicação entre processadores, é possível criar um sistema com até 8 processadores. Uma destas ligações pode ser utilizado enquanto ligação directa entre o processador e o túnel AGP, o que significa que as escritas rápidas (fast writes), que não passam pela memória, são enviadas directamente do CPU para a placa AGP. Isto é significativo para aplicações de estações de trabalho, nas quais quantidades enormes de transferências de geometria (em aplicações gráficas) são passadas por escritas rápidas.

Uma das possibilidades mais curiosas do processador Opteron, em conjunto com ligações HyperTransport, é a possibilidade de criar sistemas que funcionam com multiprocessamento assimétrico (AMP) , em contraste com os tradicionais sistemas de multiprocessamento simétrico (SMP). Isto significa que podemos ter um sistema com vários processadores, em que um ou mais são escravos (slaves) de um ou mais processadores mestre (master), permitindo em algumas situações menor consumo de energia, e principalmente, ter processadores com prestações diferentes: num exemplo meramente hipotético, é possível arquitecturar um servidor com 2 processadores Opteron 244 master, e 6 Opteron's 240 ou Athlon64 como slave, ligados através dos links HyperTransport, o que se traduz num custo inferior a uma solução de 8 vias comum, com prestações muito interessantes.

 

A AMD diferenciou claramente o seu design para multiprocessamento, poderoso e no entanto simples e elegante, do presente no Itanium. Enquanto o Opteron possui uma arquitectura interna mais conservadora, os interfaces de sistemas são mais ambiciosos. O Itanium é produto de um redesenhamento radical internamente, mas possui uma arquitectura de sistema algo retrógrada. No entanto, a iteração McKinley do Itanium deverá aumentar o desempenho do bus externo cerca de 3 vezes. O Opteron proporciona de facto a via mais simples para sistemas multiprocessador de 2, 4 ou até 8 vias.

 

Seguinte : Desvantagens >


© 2003 João Pedro Alves FerreiraLuis Filipe Barreto Ribeiro IntroduçãoPorquê 64 bits?VantagensDesvantagensConclusãoBibliografia