Por Dentro da Arquitetura AMD Bulldozer
Por Gabriel Torres em 25 de agosto de 2010
Introdução
A AMD anunciou ontem detalhes da nova arquitetura que será usada em seus processadores a partir de 2011. Chamada Bulldozer, esta arquitetura é completamente diferente da atual arquitetura AMD64 que a AMD vem usado desde o lançamento do primeiro processador Athlon 64 em 2003. Neste tutorial nós explicaremos em detalhes como esta nova arquitetura funciona.
Para uma melhor comparação entre a arquitetura Bulldozer e a arquitetura AMD64, nós sugerimos que você leia antes o nosso tutorial Por Dentro da Arquitetura AMD64.
A arquitetura Bulldozer herdará alguns recursos introduzidos com a arquitetura AMD64, tais como controlador de memória integrado e o uso do barramento HyperTransport para comunicação entre o processador e o chipset.
Bulldozer é o codinome da arquitetura, não de um processador específico. Como é de praxe, a AMD primeiro lançará os processadores voltados para o mercado de servidores baseados nesta nova arquitetura e em seguida lançará os modelos para o mercado de micros de mesa topo de linha, para o segmento de micro de mesa intermediário e, finalmente, para o mercado de entrada.
Embora a AMD não tenha divulgado informações específicas de quais processadores serão lançados, eles mencionaram que os primeiros processadores para micros de mesa baseados na arquitetura Bulldozer terão um novo padrão de pinagem, chamado AM3+, que também será compatível com os atuais processadores soquete AM3. Os processadores soquete AM3+, no entanto, não serão compatíveis com placas-mãe soquete AM3.
A arquitetura Bulldozer terá um equivalente da tecnologia Intel Turbo Boost, que permitirá ao processador fazer overclock automático caso você esteja rodando programas pesados e se a dissipação térmica ainda estiver dentro da especificação.
Antes de falarmos sobre os detalhes internos da arquitetura Bulldozer, vamos primeiro falar dos conjuntos de instruções suportados por esta nova arquitetura.
Conjuntos de Instruções
A arquitetura Bulldozer, além de ser compatível com as instruções x86, suportará os seguintes conjuntos de instruções adicionais:
- SSE4.1 e SSE4.2
- AVX (Advanced Vector Extensions ou Extensões de Vetor Avançadas) com dois subconjuntos adicionais, chamados XOP e FMA4
- AES (Advanced Encryption Standard ou Padrão de Criptografia Avançada)
- LWP (Light Weight Profiling ou Perfil “Peso Leve”)
Mas o que isso significa afinal? Vejamos.
SSE4.1 e SSE4.2
Finalmente os processadores da AMD terão suporte às instruções SSE4. Atualmente os processadores da AMD não suportam esses conjuntos de instruções, que aumentam o desempenho de aplicações multimídia (imagem e processamento de vídeo) que fazem uso dessas instruções. Os atuais processadores da AMD suportam um conjunto de instruções proprietário chamado SSE4a, que não é a mesma coisa de SSE4.
AVX (Advanced Vector Extensions ou Extensões de Vetor Avançadas)
Há algum tempo, a AMD propôs o conjunto de instruções SSE5. Como a Intel decidiu criar sua própria implementação do que seriam as instruções SSE5, chamada AVX (Advanced Vector Extensions ou Extensões de Vetor Avançadas), a AMD incluiu este conjunto de instruções na arquitetura Bulldozer.
As instruções AVX também serão suportadas pelos novos processadores da Intel baseados em sua arquitetura Sandy Bridge, e utilizarão o mesmo conceito SIMD (Single Instruction, Multiple Data ou Instrução Simples, Múltiplos Dados) introduzido com as instruções MMX e usado pelas instruções SSE (Streaming SIMD Extensions ou Extensões de Fluxo SIMD). Este conceito consiste em usar um único registrador grande para armazenar vários dados menores e então processá-los de uma só vez, aumentado o desempenho.
O conjunto de instruções AVX traz 12 novas instruções e aumenta o tamanho dos registradores XMM de 128 bits para 256 bits.
Na arquitetura Bulldozer, a AMD decidiu incluir algumas das instruções originalmente propostas para o conjunto de instruções SSE5. Portanto, a implementação AVX da arquitetura Bulldozer é mais completa do que a da Intel. Essas instruções adicionais são chamadas XOP e FMA4, e uma descrição detalhada sobre elas pode ser encontrada aqui. Nas apresentações do Bulldozer a AMD anuncia o conjunto de instruções AVX como “também” tendo o subconjunto FMAC (Fused Multiply-Accumulate, Multiplicação-Acumulação Fundido), mas este subconjunto de instruções é na verdade parte das instruções XOP. O “AMD 4-operand form” (“formato de quatro operandos da AMD”) anunciado nas apresentações da AMD é simplesmente o novo formado usado pelas instruções XOP e sua menção também é completamente redundante.
AES (Advanced Encryption Standard ou Padrão de Criptografia Avançada)
Este conjunto de instruções já está sendo usado nos novos processadores Intel baseados na arquitetura “Westmere” e modelos futuros (exceto Core i3), e consiste de seis novas instruções para tratar especificamente com criptografia. A Intel chama este conjunto de instruções de AES-NI. Uma descrição detalhada dessas instruções pode ser encontrada aqui.
LWP (Light Weight Profiling ou Perfil Peso Leve)
As instruções LWP permitem monitorar o desempenho de programas, e pode ser usado por desenvolvedores para ajustarem seus programas a obterem o maior desempenho possível, por exemplo. Este conjunto de instruções adicional tem seis novas instruções e uma descrição detalhada sobre ele pode ser encontrada aqui.O Diagrama em Blocos do Processador
A AMD decidiu utilizar uma abordagem completamente diferente na nova arquitetura Bulldozer. Eles decidiram criar um módulo de “dois núcleos” que compartilha alguns recursos (a unidade de entrada, a unidade de ponto flutuante e o cache de memória L2, veja na Figura 1) e, portanto, eles não são completamente independentes.
clique para ampliar
Figura 1: Diagrama em blocos da arquitetura BulldozerDe acordo com a AMD, isto foi feito para otimizar o processador e, ao mesmo tempo, reduzir custos. A otimização é proveniente do fato de que em um processador de vários núcleos, algumas unidades dentro dos núcleos permanecem ociosas na maior parte do tempo, e na arquitetura Bulldozer essas unidades puderam ser combinadas. Como o processador terá menos unidades, ele poderá ser menor, o que reduzirá a quantidade de material necessário para sua fabricação, reduzindo custos. Com menos unidades também é possível economizar energia e reduzir a quantidade de calor gerado.
Embora a AMD vá chamar um processador que tenha um desses módulos de “dois núcleos”, na verdade ele não será um produto verdadeiramente de dois núcleos, já que não existem dois processadores completos dentro dele. O nome “dois núcleos” neste caso será usado com o propósito de marketing para assegurar que os clientes entendam que embora este processador baseado na arquitetura Bulldozer não seja um modelo verdadeiramente de “dois núcleos”, ele trabalha como se fosse um.
Indo além, para fazer um processador de “quatro núcleos”, a AMD juntará dois desses blocos e, embora fisicamente falando o processador tenha na verdade “dois núcleos” internamente (dois dos diagramas em blocos mostrado na Figura 1), e não quatro, a AMD continuará chamando-o de um produto de “quatro núcleos”. Na Figura 2 você pode ver como um processador de “oito núcleos” baseado na arquitetura Bulldozer se parecerá.
Vamos agora dar uma olhada nas unidades de Busca e Decodificação usadas na arquitetura Bulldozer.
clique para ampliar
Figura 2: Processador de oito núcleos baseado na arquitetura BulldozerAs Unidades de Busca e Decodificação
A unidade de busca é responsável por pegar a próxima instrução a ser decodificada da memória RAM ou cache. Para mais informações nós sugerimos a leitura dos tutoriais Como os Processadores Funcionam e Como o Cache de Memória Funciona.
clique para ampliar
Figura 3: As unidades de busca e decodificaçãoComo mostrado na página anterior, a unidade de busca é compartilhada pelos dois “núcleos” disponíveis em cada módulo Bulldozer. O cache de instruções L1 de instruções também é compartilhado pelos dois “núcleos”, por ser um componente essencial da unidade de busca, mas cada “núcleo” do processador tem seu próprio cache L1 de dados. O interessante é que a AMD já anunciou que o cache L1 de instruções usado na arquitetura Bulldozer é de 64 KB usando arquitetura associativa de duas vias, a mesma configuração usada pelos processadores baseados na arquitetura AMD64, com a diferença óbvia de que enquanto os processadores AMD64 têm um cache L1 de memória por núcleo, os processadores baseados na arquitetura Bulldozer terão um cache de memória L1 por cada par de núcleos. No entanto, o cache de dados usado por cada “núcleo” será de apenas 16 KB, que é consideravelmente menor do que os 64 KB por núcleo atualmente usados pelos processadores baseados na arquitetura AMD64.
Até o momento a AMD não divulgou o tamanho do BTB (Branch Target Buffers ou Buffer de Desvios), que é uma pequena memória que lista todos os desvios identificados no programa, usado pelo mecanismo de previsão de desvios do processador.
O tamanho da TLB (Translation Look-aside Buffers ou Buffer de Tradução de Endereços), por outro lado, foi divulgado, como você pode ver na Figura 3. Esse buffer é uma pequena memória para ajudar na conversão entre os endereços virtuais e os endereços físicos, usados principalmente pelo circuito de memória virtual (memória virtual, também conhecida como arquivo de troca, é uma técnica onde o processador simula mais memória RAM do que a quantidade realmente instalada no micro usando um arquivo no disco rígido).
Os programas para PCs são escritos usando instruções x86, mas atualmente a unidade de execução do processador só entende instruções proprietárias RISC. Portanto a unidade de decodificação é responsável por converter instruções x86 do programa em microinstruções RISC, que são o tipo de instruções entendidas pela unidade de execução do processador. A arquitetura Bulldozer tem quatro decodificadores, mas até agora a AMD não deu muitas informações sobre o tipo de instruções que cada decodificador pode processar. Normalmente pelo menos um desses decodificadores processa exclusivamente instruções complexas, usando o microcódigo armazenado em uma memória ROM (no slide “Ucode” deveria ser lido como “µcode” ou “microcode”). A decodificação de instruções complexas leva vários pulsos de clock para ser completada, pois elas são convertidas em várias microinstruções. Instruções simples, no entanto, são normalmente convertidas em apenas um pulso de clock porque elas são traduzidas em uma única microinstrução. Normalmente os fabricantes de processadores otimizam seus produtos para decodificarem as instruções mais comuns o mais rápido possível em apenas um pulso de clock.As Unidades de Execução
Após as instruções terem sido decodificadas, elas são enviadas para a unidade de agendamento apropriada, inteiro ou ponto flutuante. A arquitetura Bulldozer tem apenas uma unidade de ponto flutuante, que é compartilhada entre os dois “núcleos” disponíveis. Por outro lado, ela tem unidades de números inteiros completamente independentes, os chamados “núcleos”.
clique para ampliar
Figura 4: As unidades de execuçãoCada motor de números inteiros tem quatro unidades de execução, chamadas:
- EX, MUL: Pode executar qualquer tipo de instrução inteira, incluindo multiplicação, mas não divisão
- EX, DIV: Pode executar qualquer tipo de instrução inteira, incluindo divisão, mas não multiplicação
- AGen: Geração de endereços, também chamada Unidade de Geração de Endereços ou AGU, usada para gerar os endereços que o processador buscará ou armazenará um dado
Existe uma unidade de Carga/Armazenamento (Load/Store ou “Ld/ST”), responsável por buscar ou armazenar um dado requisitado por uma instrução. Normalmente esta unidade é desenhada ao lado das unidades listadas acima, mas nesta apresentação a AMD decidiu desenhá-la separadamente.
A arquitetura Bulldozer usa um motor de execução fora de ordem, assim como os processadores AMD64 e Intel desde o Pentium Pro (arquitetura P6). Como nem todos os motores de execução podem processar todo tipo de instruções, se não houvesse uma unidade de execução fora de ordem unidades do processador poderiam ficariam ociosas. Digamos que a próxima instrução a ser executada envolve a divisão de um número inteiro, mas a unidade capaz de processar este tipo de instrução está ocupada com outra instrução. Em vez de aguardar até que esta unidade desocupe, a unidade de agendamento irá procurar uma instrução que possa ser executar imediatamente em uma das outras unidades, caso elas estejam disponíveis, é claro. Portanto o papel da unidade de agendamento é manter todas as unidades de execução do processador ocupadas a maior parte do tempo.
Após a execução de instruções de números inteiros, elas serão enviadas para a unidade de retirada, onde o processador irá colocá-las na ordem correta.
A unidade de ponto flutuante também tem quatro unidades de execução, chamadas:
- MMX: Pode executar instruções básicas de ponto flutuante (instruções x87), incluindo instruções MMX
- 128-bit FMAC: Pode executar todas as instruções de ponto flutuante
clique para ampliar
Figura 5: A unidade de ponto flutuanteO Cache de Memória L2
A arquitetura Bulldozer terá um cache de memória L2 compartilhado por cada dois “núcleos”. Um cache de memória L3 estará disponível, compartilhado entre todos os “núcleos”. O cache de memória L2 utilizará uma arquitetura associativa de 16 vias, com um buffer de traduções de endereços (TLB) de 1.024 entradas.
clique para ampliar
Figura 6: O cache de memória L2Gerenciamento de Energia
A AMD incluiu alguns recursos interessantes para o gerenciamento de energia na arquitetura Bulldozer, a mais importante sendo o chaveamento de circuitos (“power gating”), que permite ao processador simplesmente cortar alimentação de unidades que não estão sendo usadas para economizar energia. Este recurso também pode desligar completamente qualquer “núcleo” do processador que não esteja sendo usado. A AMD também incluiu um recurso para medir a atividade do processador para estimar a energia que esta sendo dissipada. A frase “Hardware uses higher frequency when power limit allows” ou “o processador usa uma frequência maior quando o limite de energia permitir” é uma indicação do uso de uma tecnologia similar à Intel Turbo Boost, que automaticamente aumenta o clock do processador se a dissipação térmica ainda estiver dentro da especificação.
Originalmente em http://www.clubedohardware.com.br/artigos/Por-Dentro-da-Arquitetura-AMD-Bulldozer/2063
© 1996-2012, Clube do Hardware. Todos os direitos reservados.
É expressamente proibida a reprodução total ou parcial do conteúdo deste site e dos textos disponíveis, seja através de mídia eletrônica, impressa, ou qualquer outra forma de distribuição. Os infratores serão indiciados e punidos com base na lei nº 9.610 de 19/02/1998.
Não nos responsabilizamos por danos materiais e/ou morais de qualquer espécie promovidos pelo uso das informações contidas no Clube do Hardware.