A família AMD Bulldozer 15h é uma microarquitetura de microprocessadores para as linhas de processadores FX e Opteron, desenvolvida pela AMD para os mercados de desktops e servidores. Bulldozer é o codinome desta família de microarquiteturas. Foi lançado em 12 de outubro de 2011, como sucessor da microarquitetura K10.

O Bulldozer foi projetado do zero, não um desenvolvimento de processadores anteriores. O núcleo é voltado especificamente para produtos de computação com TDPs de 10 a 125 watts. A AMD afirma melhorias dramáticas na eficiência de desempenho por watt em aplicativos de computação de alto desempenho (HPC) com núcleos Bulldozer.

Os núcleos Bulldozer suportam a maioria dos conjuntos de instruções implementados pelos processadores Intel (Sandy Bridge) disponíveis em sua introdução (incluindo SSE4.1, SSE4.2, AES, CLMUL, e AVX) bem como novos conjuntos de instruções propostos pela AMD; ABM, XOP, FMA4 e F16C. Somente Bulldozer GEN4 (Excavator) suporta conjuntos de instruções AVX2.

Visão geral De acordo com a AMD, as CPUs baseadas em Bulldozer são baseadas na tecnologia de processo de silício em isolador (SOI) de 32 nm da GlobalFoundries e reutilizam a abordagem do DEC para desempenho de computador multitarefa com os argumentos de que, de acordo com notas de imprensa, "equilibra computadores dedicados e compartilhados recursos para fornecer um design altamente compacto e com alta contagem de unidades que é facilmente replicado em um chip para dimensionamento de desempenho." Em outras palavras, ao eliminar alguns dos elementos "redundantes" que naturalmente aparecem em designs multicore, a AMD espera tirar melhor proveito de suas capacidades de hardware, usando menos energia.

Implementações baseadas em Bulldozer construídas em SOI de 32 nm com HKMG chegaram em outubro de 2011 para servidores e desktops. O segmento de servidores incluía o processador Opteron de chip duplo (16 núcleos) de codinome Interlagos (para Socket G34) e chip único (4, 6 ou 8 núcleos) Valencia (para Socket C32), enquanto o Zambezi (4, 6 e 8 núcleos) desktops direcionados no AM3+.

Bulldozer é a primeira grande reformulação da arquitetura de processador da AMD desde 2003, quando a empresa lançou seus processadores K8, e também apresenta duas FPUs compatíveis com FMA de 128 bits que podem ser combinadas em uma FPU de 256 bits. Este design é acompanhado por dois clusters inteiros, cada um com 4 pipelines (o estágio de busca/decodificação é compartilhado). Bulldozer também introduziu cache L2 compartilhado na nova arquitetura. A AMD chama esse design de “Módulo”. Um projeto de processador de 16 núcleos apresentaria oito desses “módulos”, mas o sistema operacional reconhecerá cada “módulo” como dois núcleos lógicos.

A arquitetura modular consiste em cache L2 compartilhado multithread e FlexFPU, que utiliza multithreading simultâneo. Cada núcleo inteiro físico, dois por módulo, é de thread único, em contraste com o Hyperthreading da Intel, onde dois threads virtuais simultâneos compartilham os recursos de um único núcleo físico.

Em uma revisão retrospectiva, Jeremy Laird da revista APC comentou sobre os problemas do Bulldozer, observou que ele era mais lento do que o design anterior do Phenom II K10 e que o ecossistema de software para PC ainda não havia "adotado" o modelo multithread. Pela sua observação, os problemas causaram uma grande perda para a AMD, que a empresa perdeu mais de 1 bilhão de dólares em 2012, e que alguns observadores da indústria previam a falência em meados de 2015. Mais tarde, a empresa conseguiu voltar ao lucro. As razões mencionadas para recuperar a lucratividade foram o desinvestimento anterior da fabricação interna na GlobalFoundries e, em seguida, a terceirização da fabricação para a TSMC e a criação de um novo design de CPU Ryzen.

Arquitetura

Bulldozer core

Bulldozer fez uso de "Clustered Multithreading" (CMT), uma técnica onde algumas partes do processador são compartilhadas entre dois threads e algumas partes são exclusivas para cada thread. Exemplos anteriores de tal abordagem para multithreading não convencional podem ser rastreados até a CPU UltraSPARC T1 da Sun Microsystems de 2005. Em termos de complexidade e funcionalidade de hardware, um módulo Bulldozer CMT é igual a um processador dual-core em suas capacidades de cálculo inteiro, e a um processador single-core ou a um dual-core deficiente em termos de poder computacional de ponto flutuante, dependendo sobre se o código está saturado em instruções de ponto flutuante em ambos os threads em execução no mesmo módulo CMT e se a FPU está executando operações de ponto flutuante de 128 ou 256 bits. A razão para isso é que para cada dois núcleos inteiros, ou seja, dentro do mesmo módulo, existe uma única unidade de ponto flutuante composta por um par de unidades de execução FMAC de 128 bits.

CMT é, de certa forma, uma filosofia de design mais simples, mas semelhante ao SMT; ambos os projetos tentam utilizar unidades de execução de forma eficiente; em qualquer método, quando dois threads competem por alguns pipelines de execução, há uma perda de desempenho em um ou mais threads. Devido aos núcleos inteiros dedicados, os módulos da família Bulldozer funcionaram aproximadamente como um processador dual-core e dual-threaded durante seções de código que eram totalmente inteiras ou uma mistura de cálculos inteiros e de ponto flutuante; ainda assim, devido ao uso SMT de pipelines de ponto flutuante compartilhados, o módulo teria desempenho semelhante a um processador SMT de núcleo único e thread duplo (SMT2) para um par de threads saturados com instruções de ponto flutuante. (Ambas as duas últimas comparações pressupõem que o processador possui um núcleo de execução igualmente amplo e capaz, em termos de número inteiro e de ponto flutuante, respectivamente.)

Tanto o CMT quanto o SMT atingem eficácia máxima ao executar código inteiro e de ponto flutuante em um par de threads. O CMT permanece com eficácia máxima enquanto trabalha em um par de threads que consistem em código inteiro, enquanto no SMT, um ou ambos os threads terão desempenho inferior devido à competição por unidades de execução inteiras. A desvantagem do CMT é um número maior de unidades de execução inteiras ociosas em um único caso de thread. No caso de thread único, o CMT está limitado a usar no máximo metade das unidades de execução inteiras em seu módulo, enquanto o SMT não impõe tal limite. Um grande núcleo SMT com circuitos inteiros tão amplos e rápidos quanto dois núcleos CMT poderia, em teoria, ter momentaneamente até o dobro do desempenho de números inteiros em um único caso de thread. (Mais realisticamente para o código geral como um todo, a Regra de Pollack estima um fator de aceleração de , ou aumento de aproximadamente 40% no desempenho.)

Os processadores CMT e um processador SMT típico são semelhantes no uso compartilhado eficiente do cache L2 entre um par de threads.

Um módulo consiste em um acoplamento de dois núcleos de processamento x86 "convencionais" fora de ordem. O núcleo de processamento compartilha os estágios iniciais do pipeline (por exemplo, L1i, busca, decodificação), as FPUs e o cache L2 com o restante do módulo.

Cada módulo possui os seguintes recursos de hardware independentes: 16 KB 4 vias de L1d (via prevista) por núcleo e 2 vias 64 KB de L1i por módulo, uma via para cada um dos dois núcleos 2 MB de cache L2 por módulo (compartilhado entre os dois núcleos inteiros) Write Coalescing Cache é um cache especial que faz parte do cache L2 na microarquitetura Bulldozer. Os armazenamentos de ambos os caches L1D no módulo passam pelo WCC, onde são armazenados em buffer e agrupados. A tarefa do WCC é reduzir o número de gravações no cache L2. Dois núcleos inteiros dedicados – cada um inclui duas ALU e duas AGU que são capazes de um total de quatro operações aritméticas e de memória independentes por clock e por núcleo – a duplicação de agendadores inteiros e pipelines de execução oferece hardware dedicado para cada um dos dois threads, o que duplica o desempenho para cargas inteiras multithread. – o segundo núcleo inteiro no módulo aumenta a matriz do módulo Bulldozer em cerca de 12%, o que no nível do chip adiciona cerca de 5% do espaço total da matriz Dois pipelines de ponto flutuante FMAC (capacidade de adição e multiplicação fundida) simétricos de 128 bits por módulo que podem ser unificados em uma unidade grande de 256 bits se um dos núcleos inteiros despachar instruções AVX e dois x87/MMX/SSE simétricos capazes FPPs para compatibilidade retroativa com software SSE2 não otimizado. Cada unidade FMAC também é capaz de operações de divisão e raiz quadrada com latência variável. Todos os módulos presentes compartilham o cache L3, bem como um subsistema avançado de memória de canal duplo (IMC – Integrated Memory Controller). Um módulo possui 213 milhões de transistores em uma área de 30,9 mm² (incluindo o cache L2 compartilhado de 2 MB) em um dado Orochi. A profundidade do pipeline do Bulldozer (assim como do Piledriver e Steamroller) é de 20 ciclos, em comparação com 12 ciclos do antecessor principal K10.

O pipeline mais longo permitiu que a família de processadores Bulldozer atingisse uma frequência de clock muito mais alta em comparação com seus antecessores K10. Embora isso tenha aumentado as frequências e a taxa de transferência, o pipeline mais longo também aumentou as latências e aumentou as penalidades por erros de previsão nos ramais.

A largura do núcleo inteiro Bulldozer, quatro (2 ALU, 2 AGU), é um pouco menor que a largura do núcleo K10, seis (3 ALU, 3 AGU). Bobcat e Jaguar também usaram quatro núcleos inteiros largos, mas com unidades de execução mais leves: 1 ALU, 1 ALU simples, 1 AGU de carga, 1 AGU de armazenamento.

As larguras de emissão (e pico de execução de instruções por ciclo) de um núcleo Jaguar, K10 e Bulldozer são 2, 3 e 4, respectivamente. Isso fez do Bulldozer um design mais superescalar em comparação com o Jaguar/Bobcat. No entanto, devido ao núcleo um pouco mais amplo do K10 (além da falta de refinamentos e otimizações em um design de primeira geração), a arquitetura Bulldozer normalmente funcionava com IPC um pouco mais baixo em comparação com seus antecessores K10. Foi somente com os refinamentos feitos no Piledriver e no Steamroller que o IPC da família Bulldozer começou a exceder claramente o dos processadores K10, como o Phenom II.

Branch predictor Buffer alvo de filial de dois níveis (BTB)https://www.olcf.ornl.gov/wp-content/uploads/2012/01/TitanWorkshop2012_Day1_AMD.pdf Preditor híbrido para condicionais Preditor indireto

Extensões do conjunto de instruções Suporte para o conjunto de instruções Advanced Vector Extensions (AVX) da Intel, que suporta operações de ponto flutuante de 256 bits, e SSE4.1, SSE4.2, AES, CLMUL, bem como futuros conjuntos de instruções de 128 bits propostos pela AMD (XOP, FMA4, e F16C), que possuem a mesma funcionalidade do conjunto de instruções SSE5 anteriormente proposto pela AMD, mas com compatibilidade com o esquema de codificação AVX. Bulldozer GEN4 (Excavator) suporta conjuntos de instruções AVX2.

Tecnologia de processo e frequência de clock Processo SOI de 32 nm de 11 camadas de metal com High-K Metal Gate (HKMG) de primeira geração da GlobalFoundries implementado Boost do desempenho do Turbo Core 2 para aumentar a frequência de clock em até 500 MHz com todos os threads ativos (para a maioria das cargas de trabalho) e até 1 GHz com metade do thread ativo, dentro do limite de TDP. O chip opera de 0,775 a 1,425 V, atingindo frequências de clock de 3,6 GHz ou mais TDP mínimo-máximo: 25 – 140 watts

Interface de cache e memória Até 8 MB de L3 compartilhados entre todos os núcleos no mesmo chip de silício (8 MB para 4 núcleos no segmento Desktop e 16 MB para 8 núcleos no segmento Servidor), divididos em quatro subcaches de 2 MB cada, capazes de operar a 2,2 GHz a 1,1125 V Suporte de memória DDR3 nativa até DDR3-1866